diff --git a/index.html b/index.html new file mode 100644 index 0000000..87f1bf8 --- /dev/null +++ b/index.html @@ -0,0 +1,34 @@ + + + +Login Page + + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/BackgroundIframe.js b/js/dojo-release-1.7.2-src/dijit/BackgroundIframe.js new file mode 100644 index 0000000..6d37e8d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/BackgroundIframe.js @@ -0,0 +1,113 @@ +define([ + "require", // require.toUrl + ".", // to export dijit.BackgroundIframe + "dojo/_base/config", + "dojo/dom-construct", // domConstruct.create + "dojo/dom-style", // domStyle.set + "dojo/_base/lang", // lang.extend lang.hitch + "dojo/on", + "dojo/_base/sniff", // has("ie"), has("mozilla"), has("quirks") + "dojo/_base/window" // win.doc.createElement +], function(require, dijit, config, domConstruct, domStyle, lang, on, has, win){ + + // module: + // dijit/BackgroundIFrame + // summary: + // new dijit.BackgroundIframe(node) + // Makes a background iframe as a child of node, that fills + // area (and position) of node + + // TODO: remove _frames, it isn't being used much, since popups never release their + // iframes (see [22236]) + var _frames = new function(){ + // summary: + // cache of iframes + + var queue = []; + + this.pop = function(){ + var iframe; + if(queue.length){ + iframe = queue.pop(); + iframe.style.display=""; + }else{ + if(has("ie") < 9){ + var burl = config["dojoBlankHtmlUrl"] || require.toUrl("dojo/resources/blank.html") || "javascript:\"\""; + var html=" + + run popup test + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_base/test_FocusManager.html b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_FocusManager.html new file mode 100644 index 0000000..5fdf59f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_FocusManager.html @@ -0,0 +1,61 @@ + + + + dijit.focus Test + + + + + + + +

Focus/Selection Save/Restore Test

+

This is for testing whether focus and selection can be saved and restored by the focus manager.

+

+ If you press the "Save focus" button, it should save the focus, but not the selection. + This is because merely pressing that button makes the focused textarea/input lose focus, + which also loses the selection. (We fudge things by saving the previously focused element rather + than the currently focused one.) +

+

+ If you press the "Save focus/selection state after 3 seconds" button, and then focus an input/textarea + and select some text, it should (after three seconds) save both the focused element and the selection. +

+

This paragraph contains text to select for testing purposes.

+
+
+
+
+ +
+ + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_base/test_focusWidget.html b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_focusWidget.html new file mode 100644 index 0000000..300204b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_focusWidget.html @@ -0,0 +1,156 @@ + + + + + dijit.focus Test + + + + + + + + +

Widget Focus Test

+

+ This is for testing code to detect onBlur and onFocus on a widget level.
+ Focused widgets' borders will turn red.
+ Also, check the console log for focus and blur events on widgets. +

+ +
+
+
+ +
+
+ + + + +
+
+ Hello world, this is an editor +
+
+
+
+ +
+ +
+
+ + +
+ + +
+ push me + +
+
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_base/test_popup.html b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_popup.html new file mode 100644 index 0000000..b366135 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_popup.html @@ -0,0 +1,283 @@ + + + + Dijit.popup and BackgroundIFrame unit test + + + + + + + +

dijit.popup and BackgroundIFrame Unit Test

+ + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_base/test_typematic.html b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_typematic.html new file mode 100644 index 0000000..bbbc477 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_base/test_typematic.html @@ -0,0 +1,65 @@ + + + + Typematic Test + + + + + + + +

Dijit typematic tests

+ Press and hold the ctrl+F11 keys (ALT optional, but not Shift or Meta) to see a's typed (constant rate) in the input field,
+ or left-mouse click the button and hold down to see b's typed (increasing rate) in the input field.
+ + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_base/wai.html b/js/dojo-release-1.7.2-src/dijit/tests/_base/wai.html new file mode 100644 index 0000000..83a1720 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_base/wai.html @@ -0,0 +1,113 @@ + + + Dijit wai unit test + + + + +
+
+
+ + + +
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_data/SlowStore.js b/js/dojo-release-1.7.2-src/dijit/tests/_data/SlowStore.js new file mode 100644 index 0000000..c304d9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_data/SlowStore.js @@ -0,0 +1,90 @@ +dojo.provide("dijit.tests._data.SlowStore"); + +dojo.require("dojo.data.ItemFileReadStore"); + +dojo.declare("dijit.tests._data.SlowStore", dojo.data.ItemFileReadStore, { + // summary: + // This wrapper decorates an ItemFileReadStorere by delaying queries issued according to the + // length of the query: + // + // empty query: 2000ms, + // 1 or 2 characters: 1000ms, + // 3 characters: 500ms, + // 4 or more characters: 100ms. + // + + constructor: function(){ + this.log = []; + }, + + fetch: function(/* Object */ keywordArgs){ + // Get the query phrase (store into first), and the # of chars it has + var count = 0; + var first; + if("query" in keywordArgs){ + var query = keywordArgs.query; + for(var attr in query){ + first = query[attr]; + break; + } + count = first.toString().length; + } + + var delay = 100; + switch(count || 0){ + case 0: + delay = 2000; + break; + case 1: + case 2: + delay = 1000; + break; + case 3: + delay = 500; + break; + case 4: + delay = 100; + break; + } + + this.log.push({ + type: "start", + date: new Date(), + query: query, + count: count, + delay: delay + }); + console.log("START query on " + (first || "{}") + " (" + count + " chars), delay = " + delay); + + var that = this, + thatArgs = arguments; + var handle = setTimeout(function(){ + that.log.push({ + type: "end", + date: new Date(), + query: query, + count: count, + delay: delay + }); + console.log("END query on " + (first || "{}") + " (" + count + " chars), delay = " + delay); + dojo.data.ItemFileReadStore.prototype.fetch.apply(that, thatArgs); + }, delay); + + // This abort() method cancels a request before it has even been sent to ItemFileReadStore. + // (Since ItemFileReadStore has already loaded the data (as per code in the test file), + // it operates synchronously; there is never a case to send the cancel request to that object) + keywordArgs.abort = function(){ + clearTimeout(handle); + that.log.push({ + type: "cancel", + date: new Date(), + query: query, + count: count, + delay: delay + }); + console.log("CANCEL query on " + (first || "{}") + " (" + count + " chars), delay = " + delay); + }; + + return keywordArgs; + } +}); diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_data/categories.json b/js/dojo-release-1.7.2-src/dijit/tests/_data/categories.json new file mode 100644 index 0000000..ff5ffe1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_data/categories.json @@ -0,0 +1,12 @@ +{ + identifier: 'id', + label: 'name', + items: [ + { id: '0', name:'Foods', numberOfItems:1, children:[ {_reference: '1'}, {_reference: '2'}, {_reference: '3'} ] }, + { id: '1', name:'Fruits', numberOfItems:1, children:[ {_reference: '4'} ] }, + { id: '4',name:'Citrus', numberOfItems:1, items:[ {_reference: '5'} ] }, + { id: '5', name:'Orange'}, + { id: '2', name:'Vegetables', numberOfItems:0}, + { id: '3', name:'Cereals', numberOfItems:0} + ] +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_data/categoriesNested.json b/js/dojo-release-1.7.2-src/dijit/tests/_data/categoriesNested.json new file mode 100644 index 0000000..f130ae5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_data/categoriesNested.json @@ -0,0 +1,13 @@ +{ + identifier: 'id', + label: 'name', + items: [ + { id: '0', name:'Fruits', numberOfItems:1, children:[ + { id: '1',name:'Citrus', numberOfItems:1, items:[ + { id: '4', name:'Orange'} + ]} + ]}, + { id: '2', name:'Vegetables', numberOfItems:0}, + { id: '3', name:'Cereals', numberOfItems:0} + ] +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_data/countries.json b/js/dojo-release-1.7.2-src/dijit/tests/_data/countries.json new file mode 100644 index 0000000..155b93c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_data/countries.json @@ -0,0 +1,46 @@ +{ + identifier: 'id', + label: 'name', + items: [ + { id: 'AF', name:'Africa', type:'continent', population:'900 million', area: '30,221,532 sq km', + timezone: '-1 UTC to +4 UTC', + children:[{_reference:'EG'}, {_reference:'KE'}, {_reference:'SD'}] }, + { id: 'EG', name:'Egypt', type:'country' }, + { id: 'KE', name:'Kenya', type:'country', + children:[{_reference:'Nairobi'}, {_reference:'Mombasa'}] }, + { id: 'Nairobi', name:'Nairobi', type:'city' }, + { id: 'Mombasa', name:'Mombasa', type:'city' }, + { id: 'SD', name:'Sudan', type:'country', + children:{_reference:'Khartoum'} }, + { id: 'Khartoum', name:'Khartoum', type:'city' }, + { id: 'AS', name:'Asia', type:'continent', + children:[{_reference:'CN'}, {_reference:'IN'}, {_reference:'RU'}, {_reference:'MN'}] }, + { id: 'CN', name:'China', type:'country' }, + { id: 'IN', name:'India', type:'country' }, + { id: 'RU', name:'Russia', type:'country' }, + { id: 'MN', name:'Mongolia', type:'country' }, + { id: 'OC', name:'Oceania', type:'continent', population:'21 million', + children:{_reference:'AU'}}, + { id: 'AU', name:'Australia', type:'country', population:'21 million'}, + { id: 'EU', name:'Europe', type:'continent', + children:[{_reference:'DE'}, {_reference:'FR'}, {_reference:'ES'}, {_reference:'IT'}] }, + { id: 'DE', name:'Germany', type:'country' }, + { id: 'FR', name:'France', type:'country' }, + { id: 'ES', name:'Spain', type:'country' }, + { id: 'IT', name:'Italy', type:'country' }, + { id: 'NA', name:'North America', type:'continent', + children:[{_reference:'MX'}, {_reference:'CA'}, {_reference:'US'}] }, + { id: 'MX', name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', + children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] }, + { id: 'Mexico City', name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, + { id: 'Guadalajara', name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' }, + { id: 'CA', name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', + children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] }, + { id: 'Ottawa', name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, + { id: 'Toronto', name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }, + { id: 'US', name:'United States of America', type:'country' }, + { id: 'SA', name:'South America', type:'continent', + children:[{_reference:'BR'}, {_reference:'AR'}] }, + { id: 'BR', name:'Brazil', type:'country', population:'186 million' }, + { id: 'AR', name:'Argentina', type:'country', population:'40 million' } +]} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/_data/dijits.json b/js/dojo-release-1.7.2-src/dijit/tests/_data/dijits.json new file mode 100644 index 0000000..160581b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/_data/dijits.json @@ -0,0 +1 @@ +{"timestamp":1193692111,"items":[{"namespace":"dijit","className":"dijit.ColorPalette","summary":"Grid showing various colors, so the user can pick a certain color","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Declaration","summary":"The Declaration widget allows a user to declare new widget\nclasses directly from a snippet of markup.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.DialogUnderlay","summary":"the thing that grays out the screen behind the dialog\n\nTemplate has two divs; outer div is used for fade-in\/fade-out, and also to hold background iframe.\nInner div has opacity specified in CSS file.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Dialog","summary":"Pops up a modal dialog window, blocking access to the screen\nand also graying out the screen Dialog is extended from\nContentPane so it supports all the same parameters (href, etc.)","description":null,"examples":null},{"namespace":"dijit","className":"dijit.TooltipDialog","summary":"Pops up a dialog that appears like a Tooltip","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Editor","summary":"A rich-text Editing widget","description":null,"examples":null},{"namespace":"dijit","className":"dijit.InlineEditBox","summary":"Behavior for an existing node (

,

, , etc.) so that\nwhen you click it, an editor shows up in place of the original\ntext. Optionally, Save and Cancel button are displayed below the edit widget.\nWhen Save is clicked, the text is pulled from the edit\nwidget and redisplayed and the edit widget is again hidden.\nBy default a plain Textarea widget is used as the editor (or for\ninline values a TextBox), but you can specify an editor such as\ndijit.Editor (for editing HTML) or a Slider (for adjusting a number).\nAn edit widget must support the following API to be used:\nString getDisplayedValue() OR String getValue()\nvoid setDisplayedValue(String) OR void setValue(String)\nvoid focus()","description":null,"examples":null},{"namespace":"dijit","className":"dijit._InlineEditor","summary":"internal widget used by InlineEditBox, displayed when in editing mode\nto display the editor and maybe save\/cancel buttons. Calling code should\nconnect to save\/cancel methods to detect when editing is finished\n\nHas mainly the same parameters as InlineEditBox, plus these values:\n\nstyle: Object\nSet of CSS attributes of display node, to replicate in editor\n\nvalue: String\nValue as an HTML string or plain text string, depending on renderAsHTML flag","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Menu","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.MenuItem","summary":"A line item in a Menu2\n\nMake 3 columns\nicon, label, and expand arrow (BiDi-dependent) indicating sub-menu","description":null,"examples":null},{"namespace":"dijit","className":"dijit.PopupMenuItem","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.MenuSeparator","summary":"A line between two menu items","description":null,"examples":null},{"namespace":"dijit","className":"dijit.ProgressBar","summary":"a progress widget\n\nusage:\n
","examples":null},{"namespace":"dijit","className":"dijit.form.RadioButton","summary":"Same as an HTML radio, but with fancy styling.","description":"This shared object keeps track of all widgets, grouped by name","examples":null},{"namespace":"dijit","className":"dijit.form.ComboBoxMixin","summary":"Auto-completing text box, and base class for FilteringSelect widget.\n\nThe drop down box's values are populated from an class called\na data provider, which returns a list of values based on the characters\nthat the user has typed into the input box.\n\nSome of the options to the ComboBox are actually arguments to the data\nprovider.\n\nYou can assume that all the form widgets (and thus anything that mixes\nin ComboBoxMixin) will inherit from _FormWidget and thus the \"this\"\nreference will also \"be a\" _FormWidget.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._ComboBoxMenu","summary":"these functions are called in showResultList","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.ComboBox","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.CurrencyTextBox","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.DateTextBox","summary":"A validating, serializable, range-bound date text box.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.FilteringSelect","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._FormMixin","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.Form","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.InlineEditBox","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.NumberSpinner","summary":"Number Spinner","description":"This widget is the same as NumberTextBox but with up\/down arrows added","examples":null},{"namespace":"dijit","className":"dijit.form.NumberTextBoxMixin","summary":"A mixin for all number textboxes","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.NumberTextBox","summary":"A validating, serializable, range-bound text box.\nconstraints object: min, max, places","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.HorizontalSlider","summary":"A form widget that allows one to select a value with a horizontally draggable image","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.VerticalSlider","summary":"A form widget that allows one to select a value with a vertically draggable image","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._SliderMover","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.HorizontalRule","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.VerticalRule","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.HorizontalRuleLabels","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.VerticalRuleLabels","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.TextBox","summary":"A generic textbox field.\nServes as a base class to derive more specialized functionality in subclasses.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.Textarea","summary":"event handlers, you can over-ride these in your own subclasses","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.TimeTextBox","summary":"NaN\nNaN","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.ValidationTextBox","summary":"default values for new subclass properties","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.MappedTextBox","summary":"A subclass of ValidationTextBox.\nProvides a hidden input field and a serialize method to override","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.RangeBoundTextBox","summary":"A subclass of MappedTextBox.\nTests for a value out-of-range","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._FormWidget","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._Spinner","summary":"Mixin for validation widgets with a spinner","description":"This class basically (conceptually) extends dijit.form.ValidationTextBox.\nIt modifies the template to have up\/down arrows, and provides related handling code.","examples":null},{"namespace":"dijit","className":"dijit.layout.AccordionContainer","summary":"Holds a set of panes where every pane's title is visible, but only one pane's content is visible at a time,\nand switching between panes is visualized by sliding the other panes up\/down.\nusage:\n
\n
\n
...<\/div>\n<\/div>\n
\n

This is some text<\/p>\n...\n<\/div>","description":null,"examples":null},{"namespace":"dijit","className":"dijit.layout.AccordionPane","summary":"AccordionPane is a ContentPane with a title that may contain another widget.\nNested layout widgets, such as SplitContainer, are not supported at this time.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.layout.ContentPane","summary":"A widget that acts as a Container for other widgets, and includes a ajax interface","description":"A widget that can be used as a standalone widget\nor as a baseclass for other widgets\nHandles replacement of document fragment using either external uri or javascript\ngenerated markup or DOM content, instantiating widgets within that content.\nDon't confuse it with an iframe, it only needs\/wants document fragments.\nIt's useful as a child of LayoutContainer, SplitContainer, or TabContainer.\nBut note that those classes can contain any widget as a child.\nexample:\nSome quick samples:\nTo change the innerHTML use .setContent('new content<\/b>')\n\nOr you can send it a NodeList, .setContent(dojo.query('div [class=selected]', userSelection))\nplease note that the nodes in NodeList will copied, not moved\n\nTo do a ajax update use .setHref('url')","examples":null},{"namespace":"dijit","className":"dijit.layout.LayoutContainer","summary":"Provides Delphi-style panel layout semantics.\n\ndetails\nA LayoutContainer is a box with a specified size (like style=\"width: 500px; height: 500px;\"),\nthat contains children widgets marked with \"layoutAlign\" of \"left\", \"right\", \"bottom\", \"top\", and \"client\".\nIt takes it's children marked as left\/top\/bottom\/right, and lays them out along the edges of the box,\nand then it takes the child marked \"client\" and puts it into the remaining space in the middle.\n\nLeft\/right positioning is similar to CSS's \"float: left\" and \"float: right\",\nand top\/bottom positioning would be similar to \"float: top\" and \"float: bottom\", if there were such\nCSS.\n\nNote that there can only be one client element, but there can be multiple left, right, top,\nor bottom elements.\n\nusage\n + + + + +

Dijit Test Matrix Table

+ + + + + + + + +
TestTundraNihiloSoria
Normala11yrtla11y + rtlNormala11yrtla11y + rtlNormala11yrtla11y + rtl
+ + + +".$group.""; + while(false !== ($file = readdir($handle))){ + if(preg_match("/(test_|demo_)(.*)\.html/", $file, $matches)){ + $base = $matches[0]; + $link = $path."/".$matches[0]; + print + "" . + + "" . $base . "" . + + // standard / tundra: + "run" . + "run" . + "run" . + "run" . + + // nihilo + "run" . + "run" . + "run" . + "run" . + + // soria + "run" . + "run" . + "run" . + "run" . + + ""; + } + } +} + + +?> diff --git a/js/dojo-release-1.7.2-src/dijit/tests/css/dijitTests.css b/js/dojo-release-1.7.2-src/dijit/tests/css/dijitTests.css new file mode 100644 index 0000000..33efb89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/css/dijitTests.css @@ -0,0 +1,116 @@ +/* Test file styles for Dijit widgets */ + +body { + background:#fff url("../images/testsBodyBg.gif") repeat-x top left; + padding:2em 2em 2em 2em; +} + +h1.testTitle { + font-size:2em; + margin:0 0 1em 0; +} + +/* Icons used in the tests */ + +.plusIcon, .plusBlockIcon { + background-image: url(../images/plus.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} +.plusBlockIcon { + display: block !important; +} +.noteIcon { + background-image: url(../images/note.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} +.flatScreenIcon { + background-image: url(../images/flatScreen.gif); + background-repeat: no-repeat; + width: 32px; + height: 32px; +} +.dijitTestNodeDialog { + position:absolute; + top:5px; + right:5px; + display:block; + width:200px; + visibility:hidden; + background-color:#fff !important; + color:#000 !important; + border:1px solid #000; + padding:5px; +} +.dijitTestNodeDialog table { + background-color:#fff !important; +} +.dijitTestNodeDialog td { + padding:3px; +} +.dijitTestNodeShowing { + visibility:visible; +} + +body .customFolderOpenedIcon, body .customFolderClosedIcon { + background-image: url('../images/folderIcons.png'); /* mail icons sprite image */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + background-position: -44px; +} + +.dj_ie6 .customFolderOpenedIcon, .dj_ie6 .customFolderClosedIcon { + background-image: url('../images/folderIcons.gif'); +} + +.customFolderClosedIcon { + background-position: -154px; +} + +#testMatrix { + width:100%; + text-align:center; +} +#testMatrix tr > td { + text-align:left; +} +#testMatrix tr.top { + background:blue; + color:#fff; +} +#testMatrix tr.top th { + padding:6px; +} +#testMatrix tr.tests { + background:#666; + padding:3px; + padding-left:6px; + padding-right:6px; + color:#fff; +} +#testMatrix tr.tests th { + text-align:center; +} +#testMatrix tr.spacer { + background:#dedede; + color:#666; +} +#testMatrix tr.spacer td { + padding:6px; +} +#testMatrix tr.testRow td { + text-align:center; +} +#testMatrix tr.testRow td.label { + text-align:left; + padding-left:15px; +} +#testMatrix tr.alt { + background:#ededed; +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/delay.js b/js/dojo-release-1.7.2-src/dijit/tests/delay.js new file mode 100644 index 0000000..39090e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/delay.js @@ -0,0 +1,19 @@ +// module: +// dijit/tests/delay.js +// summary: +// AMD plugin that waits a specified number of ms before "loading". +// Used to delay execution of callbacks registered by dojo.ready(). +// (Used by _testCommon.html) +// +// Usage: ready(1, function(){ require(["dijit/tests/delay!300"]); }); +define({ + load: function(delay, req, loaded){ + setTimeout(function(){ + loaded(1); + }, delay); + }, + dynamic: 1, + normalize: function(id){ + return id; + } +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/BackForwardState.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/BackForwardState.html new file mode 100644 index 0000000..4ea1d6e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/BackForwardState.html @@ -0,0 +1,47 @@ + + + + + Editor Back/Forward Button Test + + + + + + + + + + + + + + + + +

Editor back/forward button value restore tests

+

+ Try typing something into the editors below, and then click the page refrsh link or the back then forward buttons. + The editor should not lose the value. +

+

Notes:

+
    +
  1. Editor must have a "name" attribute for this to work (not sure why) +
  2. If in XD mode must set dojo.config.allowXdRichTextSave or manually create the hidden + <textarea> node used to preserve the data. +
+

Navigate to another page

+ +
editor0 original contents
+
editor1 original contents
+ + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/BackForwardStateHelper.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/BackForwardStateHelper.html new file mode 100644 index 0000000..dcd034a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/BackForwardStateHelper.html @@ -0,0 +1,11 @@ +

Back/forward test helper page

+

+ You've navigated to this page from backForward.html. + Press the "Go back" link below to return, or your browser's back button, + and check that the editors' values were restored to the test data you entered. +

+

+ Note that pressing the link above will not work, since the browser doesn't consider it + as "returning" to the previous page. +

+Go Back \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/EnterKeyHandling.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/EnterKeyHandling.html new file mode 100644 index 0000000..8167821 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/EnterKeyHandling.html @@ -0,0 +1,86 @@ + + + + + Editor Test + + + + + + + + + + + + + + + + + +

Test file for Editor EnterKeyHandling plugin

+ +

blockNodeforEnter='BR'

+

para 1
line 2

+

para 2
line 2

+
+ +

blockNodeforEnter='DIV'

+

para 1
line 2

+

para 2
line 2

+
+ +

blockNodeforEnter='DIV' split test

+
+
 
+
this is a line of text. It is intended to be split up by pressing enter.
+
 
+
+ +

blockNodeforEnter='DIV' split test style clone

+
+
 
+
this is a line of text. It is intended to be split up by pressing enter.
+
 
+
+ +

blockNodeforEnter='DIV' split test font clone

+
+
 
+
this is a line of text. It is intended to be split up by pressing enter.
+
 
+
+ +

blockNodeforEnter='P'

+

para 1
line 2

+

para 2
line 2

+
+ +

blockNodeforEnter='P' split test

+
+

 

+

this is a line of text. It is intended to be split up by pressing enter.

+

 

+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/customIcon.gif b/js/dojo-release-1.7.2-src/dijit/tests/editor/customIcon.gif new file mode 100755 index 0000000..5fd50d2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/editor/customIcon.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/module.js b/js/dojo-release-1.7.2-src/dijit/tests/editor/module.js new file mode 100755 index 0000000..89e8728 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/module.js @@ -0,0 +1,39 @@ +dojo.provide("dijit.tests.editor.module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + + //inline doh tests + doh.registerUrl("dijit.tests.editor.nls_8859-2", dojo.moduleUrl("dijit","tests/editor/nls_8859-2.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.nls_sjis", dojo.moduleUrl("dijit","tests/editor/nls_sjis.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.nls_utf8", dojo.moduleUrl("dijit","tests/editor/nls_utf8.html"+userArgs), 999999); + + // Base editor functionality + doh.registerUrl("dijit.tests.editor.robot.Editor_mouse", dojo.moduleUrl("dijit","tests/editor/robot/Editor_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.Editor_a11y", dojo.moduleUrl("dijit","tests/editor/robot/Editor_a11y.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.Misc", dojo.moduleUrl("dijit","tests/editor/robot/Editor_misc.html"+userArgs), 999999); + + // Plugins + doh.registerUrl("dijit.tests.editor.robot.CustomPlugin", dojo.moduleUrl("dijit","tests/editor/robot/CustomPlugin.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.EnterKeyHandling", dojo.moduleUrl("dijit","tests/editor/robot/EnterKeyHandling.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.FullScreen", dojo.moduleUrl("dijit","tests/editor/robot/Editor_FullScreen.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.ViewSource", dojo.moduleUrl("dijit","tests/editor/robot/Editor_ViewSource.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.NewPage", dojo.moduleUrl("dijit","tests/editor/robot/Editor_NewPage.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.LinkDialog", dojo.moduleUrl("dijit","tests/editor/robot/Editor_LinkDialog.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.FontChoice", dojo.moduleUrl("dijit","tests/editor/robot/Editor_FontChoice.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.ToggleDir", dojo.moduleUrl("dijit","tests/editor/robot/ToggleDir.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.ToggleDir_rtl", dojo.moduleUrl("dijit","tests/editor/robot/ToggleDir_rtl.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.editor.robot.TabIndent", dojo.moduleUrl("dijit","tests/editor/robot/TabIndent.html"+userArgs), 999999); + + if(!dojo.isWebKit){ + // The back button on webkit is URL for the browser itself, restarting the entire test suite, + // rather than just for the iframe holding the test file (BackForwardState.html and BackForwardStateHelper.html) + doh.registerUrl("dijit.tests.editor.robot.BackForwardState", dojo.moduleUrl("dijit","tests/editor/robot/BackForwardState.html"+userArgs), 999999); + } + +}catch(e){ + doh.debug(e); +} + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_8859-2.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_8859-2.html new file mode 100644 index 0000000..8b22892 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_8859-2.html @@ -0,0 +1,77 @@ + + + + Editor Test + + + + + + + + + + + + + + + +
+

+Plain text: 󱶳ӣ +

+ +

+Same text should show up in the Editor: +

+
󱶳ӣ
+ + + + +
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_sjis.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_sjis.html new file mode 100644 index 0000000..c998f1e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_sjis.html @@ -0,0 +1,77 @@ + + + + Editor Test + + + + + + + + + + + + + + + +
+

+Plain text: { +

+ +

+Same text should show up in the Editor: +

+
{
+ + + + +
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_utf8.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_utf8.html new file mode 100644 index 0000000..ab60e86 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/nls_utf8.html @@ -0,0 +1,76 @@ + + + + Editor Test + + + + + + + + + + + + + + + +
+

+Plain text: 日本語 +

+ +

+Same text should show up in the Editor: +

+
日本語
+ + + + +
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/BackForwardState.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/BackForwardState.html new file mode 100644 index 0000000..bf47ebb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/BackForwardState.html @@ -0,0 +1,130 @@ + + + + doh.robot Editor/Back Button Restore Test + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/CustomPlugin.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/CustomPlugin.html new file mode 100644 index 0000000..ce0519b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/CustomPlugin.html @@ -0,0 +1,98 @@ + + + + doh.robot CustomPlugin Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_FontChoice.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_FontChoice.html new file mode 100755 index 0000000..e9cc32a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_FontChoice.html @@ -0,0 +1,554 @@ + + + + doh.robot Editor FontChoice Plugin Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_FullScreen.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_FullScreen.html new file mode 100644 index 0000000..5edd206 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_FullScreen.html @@ -0,0 +1,645 @@ + + + + doh.robot Editor FullScreen Plugin Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_LinkDialog.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_LinkDialog.html new file mode 100644 index 0000000..136d023 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_LinkDialog.html @@ -0,0 +1,877 @@ + + + + doh.robot Editor LinkDialog Plugin Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_NewPage.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_NewPage.html new file mode 100755 index 0000000..d919695 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_NewPage.html @@ -0,0 +1,123 @@ + + + + doh.robot Editor NewPage Plugin Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_ViewSource.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_ViewSource.html new file mode 100755 index 0000000..94ab03f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_ViewSource.html @@ -0,0 +1,792 @@ + + + + doh.robot Editor View Source Plugin Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_a11y.html new file mode 100644 index 0000000..14c529a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_a11y.html @@ -0,0 +1,383 @@ + + + + doh.robot Editor A11Y Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_misc.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_misc.html new file mode 100755 index 0000000..53282b5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_misc.html @@ -0,0 +1,306 @@ + + + + doh.robot Editor Miscellaneous Tests + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_mouse.html new file mode 100644 index 0000000..1130ad7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/Editor_mouse.html @@ -0,0 +1,178 @@ + + + + doh.robot Editor Mouse Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/EnterKeyHandling.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/EnterKeyHandling.html new file mode 100644 index 0000000..5a30fcc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/EnterKeyHandling.html @@ -0,0 +1,509 @@ + + + + doh.robot Editor/EnterKeyHandling Plugin Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/TabIndent.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/TabIndent.html new file mode 100644 index 0000000..7d57f38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/TabIndent.html @@ -0,0 +1,150 @@ + + + + doh.robot TabIndent Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/ToggleDir.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/ToggleDir.html new file mode 100644 index 0000000..3084060 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/ToggleDir.html @@ -0,0 +1,116 @@ + + + + doh.robot ToggleDir Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/ToggleDir_rtl.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/ToggleDir_rtl.html new file mode 100644 index 0000000..d010596 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/robot/ToggleDir_rtl.html @@ -0,0 +1,116 @@ + + + + doh.robot ToggleDir_rtl Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/runTests.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/runTests.html new file mode 100755 index 0000000..932a6e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/sample.jpg b/js/dojo-release-1.7.2-src/dijit/tests/editor/sample.jpg new file mode 100755 index 0000000..53422b3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/editor/sample.jpg differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/sample2.jpg b/js/dojo-release-1.7.2-src/dijit/tests/editor/sample2.jpg new file mode 100755 index 0000000..2767c0a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/editor/sample2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_CustomPlugin.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_CustomPlugin.html new file mode 100644 index 0000000..c093120 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_CustomPlugin.html @@ -0,0 +1,106 @@ + + + + + Editor Custom Plugin Test/Tutorial + + + + + + + + + + + + + + + + + +

+ This editor should have my custom plugin +

+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_Editor.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_Editor.html new file mode 100644 index 0000000..d421a89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_Editor.html @@ -0,0 +1,216 @@ + + + + + Editor Test + + + + + + + + + + + + + + + + + +
Automated Test - all check boxes should be checked
+ Focus: + Value: + + Change: + Blur: + Disabled: +
+
+ +

Editor + Plugins Test

+ +

No plugins, initially empty

+
+ +

Created from div

+ +

This instance is created from a div directly with default toolbar and plugins

+ The following HTML should appear as source: <INPUT TYPE="IMAGE" SRC="javascript:alert('no scripting attacks')"> +
+ + + + + + +
+ +

Created from div, auto-expanding

+

+
+ Extra text +

+ This editor is created from a div with AlwaysShowToolbar plugin (do not forget to set height=""). +

+

+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

+ The following HTML should appear as source: <INPUT TYPE="IMAGE" SRC="javascript:alert('no scripting attacks')"> +
+

..after

+
+ +

Optional toolbar buttons

+

+
+ This instance includes optional toolbar buttons which pull in additional ui (dijit) code. + Note the dojo.require() statements required to pull in the associated editor plugins to make + this work. +
+ This is serif. +
+ This is sans-serif. +
+ This is monospace. +
+ This is cursive. +
+ This is fantasy. +
+
+

..after

+ +
+ +

Plugins specified

+

+
+ This instance demos how to: +
    +
  1. specify which plugins to load (see the plugins property): this instance loads FontChoice plugin, among others;
  2. +
  3. specify options for a plugin (see the last item in the plugins array)
  4. +
+
+

..after

+
+ +

Font sizing via style

+
+ Hello World! +
+ +

Checking pre-filter application

+
+ notdojo +
+ +

Checking editor starting with br

+
+
+ some stuff +
+ some other stuff. +
+ +

Programmatic creation

+
This div will become an editor.
+ +
This div will become an auto-expanding editor.
+ + +

+
This div will become a programmatic editor in addOnLoad with creation-defined default content.
+

+
This div will become a programmatic editor in addOnLoad with creation-defined and custom filters.
+ + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_FontChoice.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_FontChoice.html new file mode 100755 index 0000000..82c41e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_FontChoice.html @@ -0,0 +1,144 @@ + + + + + Editor Test: FontChoice Plugin + + + + + + + + + + + +
+
+
Content before the editor.
+
+
+

Editor with default drop down lists:

+
+

Font Choice Plugin details

+
    +
  1. The Fontchoice plugin provides three dropdown menus for manipulating font information, such as + font name, font size, and the format of the block containing the text (such as P, PRE, H1, and so on)
  2. +
  3. It auto-updates itself based on the caret and selection position in the document.
  4. +
+ +

Things to test:

+
    +
  1. Verify clicking in a P tag shows Paragraph in the dropdown.
  2. +
  3. Verify clicking in a a font-sized tag that the size dropdown indicates the current size (via a name).
  4. +
  5. Verify clicking in a a font-nameed tag that the name dropdown indicates the current font name.
  6. +
  7. Verify that you can set/manipulate all the above via the menu.
  8. +
+
+

+ This is a pararaph. +

+
+
+			This is preformatted text.
+		
+
+

+ This is a heading. +

+

+ This is a sub-heading. +

+

+ This is a sub-sub-heading. +

+
+

This is some text in a 'p' for styling.

+

This is some more text in a 'p' for styling.

+
+ This is some small text. +
+ This is some mediumish text. +
+ This is some xx-large text. +
+ This is some text in 'Comic Sans MS'. +
+
+
+

Selection format removal test

+
+

+ Some H3 formatted content. +

+
+				Some PRE formatted content.
+			
+

+ Some P formatted content. +

+
+ +
+
+
+
Content after the editor.
+
+
+
Content before the editor.
+
+
+

Editor w/ plain text dropdown values:

+
+

Font Choice Plugin details

+
    +
  1. This instance of the FontChoice plugin just turns off formatted content in the dropdowns. Everything should be the same font and size.
  2. +
+ +

Things to test:

+
    +
  1. Verify that each of the dropdowns have values that are all the same size and font.
  2. +
+
+
+
+
Content after the editor.
+
+
+

Editor w/ generic (web font names) font selector, traditional font name selector, font size selector, and format block selector:

+
hello world
+
+
+
Content after the editor.
+
+
+
Content before the editor.
+
+
+

Editor w/ custom font drop down list:

+
+ This editor should let you set the fonts to + Verdana, Myriad, and Garamond. +
+
+
+
Content after the editor.
+
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_FullScreen.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_FullScreen.html new file mode 100755 index 0000000..2e852f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_FullScreen.html @@ -0,0 +1,208 @@ + + + + + Editor Test: FullScreen Plugin + + + + + + + + + + + +
+
+
Content before the editor.
+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
Content after the editor.
+
+

BorderContainer with center region containing editor.

+
+
left
+
top
+
right
+
bottom
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+

TabContainer with tab containing editor.

+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+
+
+
+
+
+
+

AccordionContainer with pane containing editor.

+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+
+
+
+
+
+
+

StackContainer with pane containing editor.

+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+
+
+
+
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_LinkDialog.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_LinkDialog.html new file mode 100755 index 0000000..0024fb0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_LinkDialog.html @@ -0,0 +1,44 @@ + + + + + Editor Test: LinkDialog Plugin + + + + + + + + + + + +
+
+
    +
  1. The LinkDialog plugin is an 'example' style plugin that shows how to insert basic web links as well as + image tags. This plugin is intended to guide users in writing their own, more complex, link and image handlers + while still providing useful function.
  2. +
+
+ +
+
+
Sample Image
+
+
+
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_NewPage.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_NewPage.html new file mode 100755 index 0000000..371bc9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_NewPage.html @@ -0,0 +1,63 @@ + + + + + Editor Test: New Page Plugin + + + + + + + + + + + +
+
+
Content before the editor.
+
+
+
+

New Page Plugin details

+
    +
  1. The new page plugin is a small plugin that adds the capability of making a 'new page'. In other words + replacing all the content of the editor with some default text. This also usually kills any undo that had been saved.
  2. +
+ +

Things to test:

+
    +
  1. Verify that clicking the new page button clears the editor contents.
  2. +
+
+
+
+
+

New Page Plugin details

+
    +
  1. The new page plugin is a small plugin that adds the capability of making a 'new page'. In other words + replacing all the content of the editor with some default text. This also usually kills any undo that had been saved.
  2. +
+ +

Things to test:

+
    +
  1. Verify that clicking the new page button sets the content to: <p>This page intentionally left blank</p>
  2. +
+
+
+
+
Content after the editor.
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_Print.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_Print.html new file mode 100755 index 0000000..f5ff6df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_Print.html @@ -0,0 +1,49 @@ + + + + + Editor Test: Print Plugin + + + + + + + + + + + +
+
+
Content before the editor.
+
+
+
+

Print Plugin details

+
    +
  1. The print plugin is a small plugin that adds the capability of printing the document in the editor
  2. +
  3. If the underlying browser doesn't support print, then the button will be disabled by default
  4. +
+ +

Things to test (manually, because of the print dialog, the function test cannot be automated):

+
    +
  1. Verify that clicking the print button opns the browser print dialog and the document will print.
  2. +
  3. Verify that the printed document is only the document in the editor, not the whole page.
  4. +
+
+
+
+
Content after the editor.
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_TabIndent.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_TabIndent.html new file mode 100644 index 0000000..ad32fb7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_TabIndent.html @@ -0,0 +1,49 @@ + + + + + Editor TabIndent Plugin Test + + + + + + + + + + +

Paragraph with focusable item before editor.

+ +
+ +
+
+
    +
  1. the tabIndent plugin allows the use of the tab and shift-tab keys to +indent list items.
  2. +
  3. another list element
  4. +
  5. and another
  6. +
  7. still one more
  8. +
+
+

+ Ctrl-M also turns tab indent on/off. + (The buttons should change checked status when the user types + Ctrl-M, to indicate whether tab and shift-tab is enabled.) +

+
+
+

Paragraph with focusable item after editor.

+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ToggleDir.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ToggleDir.html new file mode 100644 index 0000000..b9004d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ToggleDir.html @@ -0,0 +1,34 @@ + + + + + Editor Test: ToggleDir Plugin + + + + + + + + + + + +
+
+
  1. the toggleDir plugin provides an extra button to switch text direction (BiDi). Useful when right-to-left + languages are used with left-to-right languages.
+
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ToggleDir_rtl.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ToggleDir_rtl.html new file mode 100755 index 0000000..a5a17be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ToggleDir_rtl.html @@ -0,0 +1,35 @@ + + + + + Editor Test: ToggleDir Plugin (page in RTL) + + + + + + + + + + + +
Text
+
+
+
  1. the toggleDir plugin provides an extra button to switch text direction (BiDi). Useful when right-to-left + languages are used with left-to-right languages.
+
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ViewSource.html b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ViewSource.html new file mode 100755 index 0000000..3bbc6ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_ViewSource.html @@ -0,0 +1,114 @@ + + + + + Editor Test: ViewSource Plugin + + + + + + + + + + + +
+
+
Content before the editors.
+
+
+
+
+

ViewSource Plugin details

+
    +
  1. The ViewSource plugin provides an extra button on the toolbar to allow switching the + editor from WSYIWYG editing to into HTML source mode editing in the browser. + This plugin is particularly useful when needing to tweak generated HTML source.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F12 + in the editor pane.
  4. +
  5. When it toggled it makes the edit area either a textarea if editing is enabled, or a readonly TEXTAREA node + if it is not editable.
  6. +
  7. The plugin is aware of the FullScreen plugin, and when present will make sure that FullScreen knows which + node to make 'full'.
  8. +
  9. The View Source adds in basic comment and script tag stripping by default (to help avoid XSS) attacks in code. + These can be disabled, but it is not recommended.
  10. +
  11. While in view source mode, all other menu bar plugins are disabled.
  12. +
+ +

Things to test:

+
    +
  1. Verify that clicking the View Source icon highlights the button appropriately and toggles the view source mode on.
  2. +
  3. Verify that clicking the View Source icon again dehighlites the button and toggles the view source mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F12 toggles the view source mode on and off.
  6. +
  7. Verify that when in View Source mode and comment and script tag stripping is enabled, that both inputs are removed when + toggled off.
  8. +
+
+
+
+
+
+
+

ViewSource Plugin with FullScreen Plugin details

+
    +
  1. The ViewSource plugin is FullScreen aware. It will should work appropriately when in full screen mode.
  2. +
+ +

Things to test:

+
    +
  1. Verify that while in Full Screen mode clicking the View Source icon highlights the button appropriately and toggles the + view source mode on and scales appropriately.
  2. +
+
+
+
+
+
+
+

ViewSource Plugin with readOnly enabled details

+
    +
  1. The ViewSource plugin supports a readonly mode. This should display the content but not allow any edits..
  2. +
+ +

Things to test:

+
    +
  1. Verify that while in View Source mode, the source cannot be edited.
  2. +
+
+
+
+
+
+
+

ViewSource Plugin with script* disabled

+
    +
  1. The ViewSource plugin supports disabling the script stripping, comment stripping, etc. This can be dangerous, but sometimes it is desirable.
  2. +
+ +

Things to test:

+
    +
  1. Verify that typed in script tags, comments, and iframes are left in the content when view switched.
  2. +
+
+
+
+
+
Content after the editors.
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/editor/test_editor.css b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_editor.css new file mode 100644 index 0000000..6b4d4ec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/editor/test_editor.css @@ -0,0 +1,4 @@ +h1 { + border: 1px solid black; + background-color:red; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/focus-framedojo-child.html b/js/dojo-release-1.7.2-src/dijit/tests/focus-framedojo-child.html new file mode 100644 index 0000000..11081fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/focus-framedojo-child.html @@ -0,0 +1,51 @@ + + + + + Focus Issue Child + + + + + + this frame is for loading script only + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/focus-framedojo.html b/js/dojo-release-1.7.2-src/dijit/tests/focus-framedojo.html new file mode 100644 index 0000000..6e46cb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/focus-framedojo.html @@ -0,0 +1,22 @@ + + + + + Focus Issue + + + +

+ Test case for focus code when dojo is loaded into an iframe. + Not supported officially but checking in test case anyway. +

+ +

Automated test will focus this input, causing a console message:

+ + +

Dojo is loaded into this iframe:

+ + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/AutoCompleterMixin.html b/js/dojo-release-1.7.2-src/dijit/tests/form/AutoCompleterMixin.html new file mode 100644 index 0000000..5958b79 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/AutoCompleterMixin.html @@ -0,0 +1,286 @@ + + + + + + _AutoCompleterMixin tests + + + + + + + + +

_AutoCompleterMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/ButtonMixin.html b/js/dojo-release-1.7.2-src/dijit/tests/form/ButtonMixin.html new file mode 100644 index 0000000..d9eaa2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/ButtonMixin.html @@ -0,0 +1,168 @@ + + + + + + _ButtonMixin tests + + + + + + + + + +

_ButtonMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/CheckBoxMixin.html b/js/dojo-release-1.7.2-src/dijit/tests/form/CheckBoxMixin.html new file mode 100644 index 0000000..d1fa521 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/CheckBoxMixin.html @@ -0,0 +1,295 @@ + + + + + + _CheckBoxMixin tests + + + + + + + + + +

_CheckBoxMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
+
+ before click: checked=true,  onclick handler: return false, after click: + +
+ before click: checked=true,  onclick handler: return true,  after click: + +
+ before click: checked=true,  onclick handler: return false, after click: + +
+ before click: checked=true,  onclick handler: return true,  after click: + +
+ before click: checked=false, onclick handler: return false, after click: + +
+ before click: checked=false, onclick handler: return true,  after click: + +
+ before click: checked=false, onclick handler: return false, after click: + +
+ before click: checked=false, onclick handler: return true,  after click: + +
+ before click: checked=true,  onclick handler: no return, after click: + +
+ before click: checked=false, onclick handler: no return, after click: + +
+ before click: checked=true,  onclick handler: checked=false and return false, after click: + +
+ before click: checked=true,  onclick handler: checked=false and return true,  after click: + +
+ before click: checked=true,  onclick handler: checked=true  and return false, after click: + +
+ before click: checked=true,  onclick handler: checked=true  and return true,  after click: + +
+ before click: checked=false, onclick handler: checked=false and return false, after click: + +
+ before click: checked=false, onclick handler: checked=false and return true,  after click: + +
+ before click: checked=false, onclick handler: checked=true  and return false, after click: + +
+ before click: checked=false, onclick handler: checked=true  and return true,  after click: + +
+ before click: checked=true,  onclick handler: checked=false and no return, after click: + +
+ before click: checked=true,  onclick handler: checked=true  and no return, after click: + +
+ before click: checked=false, onclick handler: checked=false and no return, after click: + +
+ before click: checked=false, onclick handler: checked=true  and no return, after click: + +
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/DateTextBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/DateTextBox.html new file mode 100644 index 0000000..ce4868b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/DateTextBox.html @@ -0,0 +1,69 @@ + + + + + DateTextBox DOH Test + + + + + + + + + + + + + + + + + + +

dijit.form.DateTextBox automated tests (non-robot)

+ + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/ExpandingTextAreaMixin.html b/js/dojo-release-1.7.2-src/dijit/tests/form/ExpandingTextAreaMixin.html new file mode 100644 index 0000000..b99a669 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/ExpandingTextAreaMixin.html @@ -0,0 +1,286 @@ + + + + + + _ExpandingTextAreaMixin tests + + + + + + + + + +

_ExpandingTextAreaMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
Size
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/Form.html b/js/dojo-release-1.7.2-src/dijit/tests/form/Form.html new file mode 100644 index 0000000..6d21b10 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/Form.html @@ -0,0 +1,895 @@ + + + + + + + Form unit test + + + + + + + + + + + + + + +

Form Widget Unit Test

+

+ The form widget takes data in a form and serializes/deserializes it, so + it can be submitted as a JSON string of nested objects. +

+
Currently only widgets are supported, not raw elements.
+ +
+ + +

Just HTML text

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionNameForm node/widget
DateTextBox inside contentpanefoo.bar.baz.quux +
+ +
+
DateTextBox 2available.from + +
DateTextBox 3available.to + +
ComboBoxplop.combo + +
CheckBox widgetcb + 1 + 2 + 3 + 4 +
Radio widgetr + 1 + 2 + 3 + 4 + +
Multi-selectms1 + +
Hidden inputh1 + +
Auto-sizing textareat1 + +
Fixed size textareast1 + +
Editor widgetrichtext + +
File uploadfilename + +
Required WidgetrequiredWidget + +
Disabled WidgetdisabledWidget + +
Disabled Required WidgetdisabledRequiredWidget + +
Read-only WidgetreadOnlyWidget + +
Duplicate named TextBox 1duplicate + +
Duplicate named TextBox 2duplicate + +
Duplicate named TextBox 3duplicate + +
+ + + + + + + +
+ + + + +
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/RadioButtonMixin.html b/js/dojo-release-1.7.2-src/dijit/tests/form/RadioButtonMixin.html new file mode 100644 index 0000000..9689cd7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/RadioButtonMixin.html @@ -0,0 +1,187 @@ + + + + + + _RadioButtonMixin tests + + + + + + + + + +

_RadioButtonMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes + +
Events + +
Programmatic + +
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/TextBoxMixin.html b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBoxMixin.html new file mode 100644 index 0000000..cdf1bbf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBoxMixin.html @@ -0,0 +1,264 @@ + + + + + + _TextBoxMixin tests + + + + + + + + + +

_TextBoxMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
DOM attr
Widget attr
Events
Programmatic
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_sizes.html b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_sizes.html new file mode 100644 index 0000000..329c545 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_sizes.html @@ -0,0 +1,525 @@ + + + + + dijit.form.TextBox size tests + + + + + + + + + +

dijit.form.TextBox size tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
   
TextBox 
NumberTextBox 
FilteringSelect 
NumberSpinner
 
INPUT type=file 
   

+ + + + + + + +
Font family: +
Font size: +
Padding: +
Direction: +
Theme: +
+ + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_sizes.js b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_sizes.js new file mode 100644 index 0000000..35541ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_sizes.js @@ -0,0 +1,454 @@ +dojo.provide("dijit.tests.form.TextBox_sizes"); + +var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + + +try{ + +doh.registerUrl('t.monospace.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.system.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +}catch(e){ + doh.debug(e); +} + +try{ + +doh.registerUrl('t.monospace.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.system.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +}catch(e){ + doh.debug(e); +} + +try{ + +doh.registerUrl('t.monospace.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.Courier.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Courier'), 999999); +doh.registerUrl('t.system.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +doh.registerUrl('t.system.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=system'), 999999); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_types.html b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_types.html new file mode 100644 index 0000000..6d4a484 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/TextBox_types.html @@ -0,0 +1,87 @@ + + + + + + + TextBox type Tests + + + + + + + + + + + + + + +

TextBox type Tests

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/ToggleButtonMixin.html b/js/dojo-release-1.7.2-src/dijit/tests/form/ToggleButtonMixin.html new file mode 100644 index 0000000..95f39c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/ToggleButtonMixin.html @@ -0,0 +1,169 @@ + + + + + + _ToggleButtonMixin tests + + + + + + + + + +

_ToggleButtonMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/_autoComplete.html b/js/dojo-release-1.7.2-src/dijit/tests/form/_autoComplete.html new file mode 100644 index 0000000..79c152f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/_autoComplete.html @@ -0,0 +1,601 @@ + + + + + dijit.form.ComboBox Unit Test + + + + + + + + + + + + + + + + + +

+ +
+ + + +
+
+ +

Option tags, autoComplete=false, selectOnClick=true, default value of California, pageSize=30, custom labelFunc method

+ + + +
onChange: +
value: +
blur: +
this.item: + + + + + +
+ +
+
+ +
+ +

Data store, autoComplete=true:

+ + +
onChange: +
+

Artificially slowed-down data store, autoComplete=true:

+ + +
onChange: + +
+ + + + Hey look, this one is kind of useful. +
+ +

Initially disabled, url, autoComplete=false:

+ + +
onChange: +
+ +
+
+

Data store, autoComplete=false required=true and highlightMatch="none"

+ + +
onChange: +
+

test that title used as label is preserved on input

+ +
+

No arrow, data store which searches and highlights matches anywhere in the string

+ +
+

Created programmatically

+ +
+

Created programmatically with an initial query. (Limits list to items with type = country.)

+ +
+

Created programmatically with an ItemFileReadStore and a descending sort. (Limits list to items with type = country.)

+ +
+

With option tags, autoComplete=true, pageSize=30, and a descending sort.

+ +
+

Special characters

+

The drop down list should be:

+
    +
  • sticks & stones
  • +
  • rags --> riches
  • +
  • more\less
  • +
  • 3 * 5
  • +
+ + +
+

Japanese

+

Try typing 東区 (East), 西区 (West), 北区 (North), 南区 (South) and a few choices will pop up.

+ + +
+

Custom labelFunc (labels in lowercase), autoComplete=true, prompt message when field is blank:

+ + + + + + +
+ +

Rich text label

+ + +
+ + + +
+ +
+

test placeholder

+ +

+ This is some text below the boxes. It shouldn't get pushed out of the way when search results get returned. + A native select tag to test IE bleed through problem: +

+ + + + Destroy test:
+ +
+
+ Highlight test +
+ + ignoreCase: + highlightMatch: + queryExpr: + +
+ + Highlight test: + +
+
+ +
+ + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/images/Alabama.jpg b/js/dojo-release-1.7.2-src/dijit/tests/form/images/Alabama.jpg new file mode 100644 index 0000000..f2018e6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/form/images/Alabama.jpg differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/mobile.html b/js/dojo-release-1.7.2-src/dijit/tests/form/mobile.html new file mode 100644 index 0000000..55092d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/mobile.html @@ -0,0 +1,201 @@ + + + + + + Form widgets mobile test page + + + + + + + + +

Buttons

+ + + + + +

CheckBox, RadioButton

+
+ check boxes + + + + +
+
+ radio buttons + + + + +
+ +

TextBoxes

+ + + + + + + +

Selects

+ + + +

HorizontalSlider

+
+
    +
    +
    +
      +
    1. lowest
    2. +
    3. normal
    4. +
    5. highest
    6. +
    +
    + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/module.js b/js/dojo-release-1.7.2-src/dijit/tests/form/module.js new file mode 100644 index 0000000..ecdd953 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/module.js @@ -0,0 +1,73 @@ +dojo.provide("dijit.tests.form.module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + + doh.registerUrl("dijit.tests.form.ButtonMixin", dojo.moduleUrl("dijit","tests/form/AutoCompleterMixin.html"+userArgs)); + doh.registerUrl("dijit.tests.form.ToggleButtonMixin", dojo.moduleUrl("dijit","tests/form/ToggleButtonMixin.html"+userArgs)); + doh.registerUrl("dijit.tests.form.robot.Button_mouse", dojo.moduleUrl("dijit","tests/form/robot/Button_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.Button_a11y", dojo.moduleUrl("dijit","tests/form/robot/Button_a11y.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.CheckBoxMixin", dojo.moduleUrl("dijit","tests/form/CheckBoxMixin.html"+userArgs)); + doh.registerUrl("dijit.tests.form.RadioButtonMixin", dojo.moduleUrl("dijit","tests/form/RadioButtonMixin.html"+userArgs)); + doh.registerUrl("dijit.tests.form.robot.CheckBox_mouse", dojo.moduleUrl("dijit","tests/form/robot/CheckBox_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.CheckBox_a11y", dojo.moduleUrl("dijit","tests/form/robot/CheckBox_a11y.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.ButtonMixin", dojo.moduleUrl("dijit","tests/form/ButtonMixin.html"+userArgs)); + doh.registerUrl("dijit.tests.form.test_validate", dojo.moduleUrl("dijit","tests/form/test_validate.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.ValidationTextBox", dojo.moduleUrl("dijit","tests/form/robot/ValidationTextBox.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.DateTextBox", dojo.moduleUrl("dijit","tests/form/DateTextBox.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.DateTextBox", dojo.moduleUrl("dijit","tests/form/robot/DateTextBox.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.TimeTextBox", dojo.moduleUrl("dijit","tests/form/robot/TimeTextBox.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.Form", dojo.moduleUrl("dijit", "tests/form/Form.html"), 999999); + doh.registerUrl("dijit.tests.form.robot.FormState", dojo.moduleUrl("dijit","tests/form/robot/Form_state.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.Form_onsubmit", dojo.moduleUrl("dijit","tests/form/robot/Form_onsubmit.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.Select", dojo.moduleUrl("dijit", "tests/form/test_Select.html?mode=test"), 999999); + doh.registerUrl("dijit.tests.form.robot.Select", dojo.moduleUrl("dijit", "tests/form/robot/Select.html"), 999999); + + doh.registerUrl("dijit.tests.form.AutoCompleterMixin", dojo.moduleUrl("dijit","tests/form/AutoCompleterMixin.html"+userArgs)); + doh.registerUrl("dijit.tests.form.robot.ComboBox_mouse", dojo.moduleUrl("dijit","tests/form/robot/_autoComplete_mouse.html"+(userArgs+"&testWidget=dijit.form.ComboBox").replace(/^&/,"?")), 999999); + doh.registerUrl("dijit.tests.form.robot.ComboBox_a11y", dojo.moduleUrl("dijit","tests/form/robot/_autoComplete_a11y.html"+(userArgs+"&testWidget=dijit.form.ComboBox").replace(/^&/,"?")), 999999); + doh.registerUrl("dijit.tests.form.robot.FilteringSelect_mouse", dojo.moduleUrl("dijit","tests/form/robot/_autoComplete_mouse.html"+(userArgs+"&testWidget=dijit.form.FilteringSelect").replace(/^&/,"?")), 999999); + doh.registerUrl("dijit.tests.form.robot.FilteringSelect_a11y", dojo.moduleUrl("dijit","tests/form/robot/_autoComplete_a11y.html"+(userArgs+"&testWidget=dijit.form.FilteringSelect").replace(/^&/,"?")), 999999); + + doh.registerUrl("dijit.tests.form.robot.MultiSelect", dojo.moduleUrl("dijit","tests/form/robot/MultiSelect.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.robot.SimpleTextarea", dojo.moduleUrl("dijit","tests/form/robot/SimpleTextarea.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.robot.Slider_mouse", dojo.moduleUrl("dijit","tests/form/robot/Slider_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.Slider_a11y", dojo.moduleUrl("dijit","tests/form/robot/Slider_a11y.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.robot.Spinner_mouse", dojo.moduleUrl("dijit","tests/form/robot/Spinner_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.form.robot.Spinner_a11y", dojo.moduleUrl("dijit","tests/form/robot/Spinner_a11y.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.ExpandingTextAreaMixin", dojo.moduleUrl("dijit","tests/form/ExpandingTextAreaMixin.html"+userArgs)); + doh.registerUrl("dijit.tests.form.robot.Textarea", dojo.moduleUrl("dijit","tests/form/robot/Textarea.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.robot.validationMessages", dojo.moduleUrl("dijit","tests/form/robot/validationMessages.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.verticalAlign", dojo.moduleUrl("dijit","tests/form/test_verticalAlign.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.TextBox_types", dojo.moduleUrl("dijit","tests/form/TextBox_types.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.form.TextBox_sizes.tundra.ltr", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=tundra&dir=ltr"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.tundra.rtl", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=tundra&dir=rtl"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.tundra.quirks", dojo.moduleUrl("dijit", "tests/quirks.html?file=form/TextBox_sizes.html&theme=tundra&dir=ltr"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.claro.ltr", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=claro&dir=ltr"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.claro.rtl", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=claro&dir=rtl"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.claro.quirks", dojo.moduleUrl("dijit", "tests/quirks.html?file=form/TextBox_sizes.html&theme=claro&dir=ltr"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.soria.ltr", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=soria&dir=ltr"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.soria.rtl", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=soria&dir=rtl"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.soria.quirks", dojo.moduleUrl("dijit", "tests/quirks.html?file=form/TextBox_sizes.html&theme=soria&dir=rtl"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.nihilo.ltr", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=nihilo&dir=ltr"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.nihilo.rtl", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?theme=nihilo&dir=rtl"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.nihilo.quirks", dojo.moduleUrl("dijit", "tests/quirks.html?file=form/TextBox_sizes.html&theme=nihilo&dir=rtl"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.a11y.ltr", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?a11y=1&dir=ltr"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.a11y.rtl", dojo.moduleUrl("dijit", "tests/form/TextBox_sizes.html?a11y=1&dir=rtl"), 999999); + doh.registerUrl("dijit.tests.form.TextBox_sizes.a11y.quirks", dojo.moduleUrl("dijit", "tests/quirks.html?file=form/TextBox_sizes.html&a11y=1&dir=ltr"), 999999); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Button_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Button_a11y.html new file mode 100644 index 0000000..1c56b73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Button_a11y.html @@ -0,0 +1,503 @@ + + + + doh.robot Button Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Button_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Button_mouse.html new file mode 100644 index 0000000..a94526a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Button_mouse.html @@ -0,0 +1,706 @@ + + + + doh.robot Button Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/CheckBox_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/CheckBox_a11y.html new file mode 100644 index 0000000..af203a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/CheckBox_a11y.html @@ -0,0 +1,372 @@ + + + + doh.robot Checkbox a11y Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/CheckBox_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/CheckBox_mouse.html new file mode 100644 index 0000000..144a791 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/CheckBox_mouse.html @@ -0,0 +1,506 @@ + + + + doh.robot Checkbox mouse Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ComboBox_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ComboBox_a11y.html new file mode 100644 index 0000000..8c04f69 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ComboBox_a11y.html @@ -0,0 +1,12 @@ + + + + ComboBox General/Keyboard Robot Test + + + Loading ComboBox a11y robot test. + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ComboBox_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ComboBox_mouse.html new file mode 100644 index 0000000..7bb349c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ComboBox_mouse.html @@ -0,0 +1,12 @@ + + + + ComboBox Mouse Robot Test + + + Loading ComboBox mouse robot test. + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/DateTextBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/DateTextBox.html new file mode 100644 index 0000000..f6dcd26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/DateTextBox.html @@ -0,0 +1,1206 @@ + + + + + doh.robot DateTextBox Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/FilteringSelect_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/FilteringSelect_a11y.html new file mode 100644 index 0000000..0c135ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/FilteringSelect_a11y.html @@ -0,0 +1,12 @@ + + + + FilteringSelect General/Keyboard Robot Test + + + Loading FilteringSelect a11y robot test. + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/FilteringSelect_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/FilteringSelect_mouse.html new file mode 100644 index 0000000..725b817 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/FilteringSelect_mouse.html @@ -0,0 +1,12 @@ + + + + FilteringSelect Mouse Robot Test + + + Loading FilteringSelect mouse robot test. + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Form_onsubmit.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Form_onsubmit.html new file mode 100644 index 0000000..2ce2878 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Form_onsubmit.html @@ -0,0 +1,215 @@ + + + + doh.robot Form_onsubmit Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Form_state.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Form_state.html new file mode 100644 index 0000000..5ae48db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Form_state.html @@ -0,0 +1,185 @@ + + + + doh.robot Form Valid/Invalid State Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/MultiSelect.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/MultiSelect.html new file mode 100644 index 0000000..16c4f86 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/MultiSelect.html @@ -0,0 +1,266 @@ + + + + doh.robot MultiSelect Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Select.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Select.html new file mode 100644 index 0000000..05ee051 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Select.html @@ -0,0 +1,592 @@ + + + + + doh.robot Select Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/SimpleTextarea.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/SimpleTextarea.html new file mode 100644 index 0000000..157f2d6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/SimpleTextarea.html @@ -0,0 +1,136 @@ + + + + doh.robot SimpleTextArea Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Slider_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Slider_a11y.html new file mode 100644 index 0000000..49a4de3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Slider_a11y.html @@ -0,0 +1,341 @@ + + + + doh.robot Slider Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Slider_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Slider_mouse.html new file mode 100644 index 0000000..09764f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Slider_mouse.html @@ -0,0 +1,342 @@ + + + + doh.robot Slider Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Spinner_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Spinner_a11y.html new file mode 100644 index 0000000..8957268 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Spinner_a11y.html @@ -0,0 +1,713 @@ + + + + doh.robot Spinner Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Spinner_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Spinner_mouse.html new file mode 100644 index 0000000..efbee57 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Spinner_mouse.html @@ -0,0 +1,387 @@ + + + + doh.robot Spinner Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Textarea.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Textarea.html new file mode 100644 index 0000000..cb22dda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/Textarea.html @@ -0,0 +1,241 @@ + + + + + doh.robot Textarea Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/TimeTextBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/TimeTextBox.html new file mode 100644 index 0000000..7454c19 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/TimeTextBox.html @@ -0,0 +1,329 @@ + + + + + doh.robot TimeTextBox Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ValidationTextBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ValidationTextBox.html new file mode 100644 index 0000000..c0cd782 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/ValidationTextBox.html @@ -0,0 +1,1363 @@ + + + + + doh.robot Validation Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/_autoComplete_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/_autoComplete_a11y.html new file mode 100644 index 0000000..5ae5f58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/_autoComplete_a11y.html @@ -0,0 +1,1471 @@ + + + + doh.robot ComboBox/FilteringSelect General and A11Y Tests + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/_autoComplete_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/_autoComplete_mouse.html new file mode 100644 index 0000000..f766c48 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/_autoComplete_mouse.html @@ -0,0 +1,541 @@ + + + + doh.robot ComboBox/FilteringSelect Mouse Tests + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/robot/validationMessages.html b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/validationMessages.html new file mode 100644 index 0000000..89e3bb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/robot/validationMessages.html @@ -0,0 +1,486 @@ + + + + + Validation Message Test + + + + + + + + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/runTests.html b/js/dojo-release-1.7.2-src/dijit/tests/form/runTests.html new file mode 100644 index 0000000..71677dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_Button.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Button.html new file mode 100644 index 0000000..7c8e221 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Button.html @@ -0,0 +1,471 @@ + + + + + Dojo Button Widget Test + + + + + + + + + + + + + + + +

    Dijit Button Test

    +

    Simple, drop down & combo buttons

    +

    + Buttons can do an action, display a menu, or both: +

    +

    + + + + tooltip on button + + + + + + +

    +
    +

    DropDownButtons with different drop down positions

    + + + + +

    ComboButtons with different drop down positions

    + + + + +

    Buttons with no text label

    +

    Buttons have showLabel=false so text is not displayed. If no title attribute supplied, Should have label as title attribute displayed on mouse over

    +
    + + +
    + Save +
    +
    Save
    +
    Save As
    +
    +
    +
    +
    +

    Toggle buttons

    +

    The button CSS as well as the icon CSS can change on toggle

    +
    + + +
    +
    +

    Sizing

    +

    Short button, tall buttons, big buttons, small buttons... + These buttons size to their content (just like <button>).

    +
    + + + + +
    +
    +
    +

    Customized buttons

    +

    Dojo users can customize styles. Here's an example:

    +
    + + + +
    +
    +

    Toggling the display test

    +

    + (Ticket #403) +

    +
    + +
    + +
    +

    Programatically changing buttons

    +

    clicking the buttons below will change the buttons above

    + +
    + + + + +
    +

    Button instantiated via javacript:

    + + +

    DropDownButton instantiated via javacript:

    + + + + + +

    Submit and Reset Buttons

    +
    Testing that submit and reset buttons work properly. OnSubmit and OnReset handlers + for the form just output to the console. +
    +
    + + +
    +    + +
    + +

    onClick Tests

    +
    Testing that onClick works properly +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +

    Submit/value test

    + +
    + + + + +
    +
    +
    + +
    + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_CheckBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_CheckBox.html new file mode 100644 index 0000000..feb2f09 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_CheckBox.html @@ -0,0 +1,170 @@ + + + + + CheckBox Widget Demo + + + + + + + + + + + + + + + + + +

    Dijit CheckBox Test

    +

    + Here are some checkboxes. Try clicking, and hovering, tabbing, and using the space bar to select: +

    + +
    + + +
    + + + +
    + + + "onChange" handler updates: [] + +
    + + +
    + + +
    + + + +
    + + +
    + + + + + + + "onChange" handler updates: [] +
    +

    + Here are some radio buttons. Try clicking, and hovering, tabbing, and arrowing +

    +

    + Radio group #1: + + + + + + + + +

    +

    + Radio group #2: (no default value, and has breaks)
    + +
    + +
    + +
    + (Note if using keyboard: tab to navigate, and use arrow or space to select) +

    + + +
    + +

    + Radio group #3 (native radio buttons): + + + + + + +

    + +
    + These 6 radio buttons have the same name but are in separate forms so they can be selected independently. +
    + 1: + + +
    +
    + 2: + + +
    +
    + 3: + + +
    +
    + +
    + Programmatic radio buttons: +
    +
    +
    +
    +
    + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_ComboBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_ComboBox.html new file mode 100644 index 0000000..a0635ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_ComboBox.html @@ -0,0 +1,12 @@ + + + + ComboBox Unit Test + + + Loading ComboBox unit test. + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_DateTextBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_DateTextBox.html new file mode 100644 index 0000000..16b95a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_DateTextBox.html @@ -0,0 +1,216 @@ + + + + + Test DateTextBox Widget + + + + + + + + + + + + + + + + + +

    Test DateTextBox Widget

    + +
    +
    + + DateTextBox class, no attributes +
    +
    + + onChange: + + + + + + +
    +
    + + DateTextBox class, + Attributes: required="true", trim="true", openOnClick=false, constraints={min:'2004-01-01',max:'2006-12-31',formatLength:'long'}. Works for leap years +
    +
    + + onChange: + + +
    +
    + + DateTextBox class, + Attributes: lang="en-us", required="true", constraints={min:'2004-01-01',max:'2006-12-31'}. Works for leap years. + Prompt message whenever field is blank. + +
    +
    + +
    +
    + + DateTextBox class, + Attributes: lang="de-de", hasDownArrow=false, constraints={min:2004-01-01, max:2006-12-31}. Works for leap years. + Prompt message whenever field is blank. + +
    +
    + +
    + +
    + + Date, overriding pattern with dd-MM-yyyy +
    +
    + +
    +
    + Using title attrib for label + DateTextBox class, + Attributes: lang="en-us", required="true", prompt meessage, invalid message + Prompt message whenever field is blank. + +
    +
    +
    +
    +
    + + + + + +
    + Date pairs, from/to (won't submit unless from/to fields filled in correctly): +
    +
    + + + + + + +
    +
    + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_DateTextBox_iframe.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_DateTextBox_iframe.html new file mode 100644 index 0000000..a09fbcf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_DateTextBox_iframe.html @@ -0,0 +1,5 @@ + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_Form_state.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Form_state.html new file mode 100644 index 0000000..8c3e4f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Form_state.html @@ -0,0 +1,114 @@ + + + + + dijit.form.Form Valid/Invalid State Test + + + + + + + + + + + + + + + + +

    dijit.form.Form Valid/Invalid State Test

    +

    + Tests that dijit.form.Form correctly changes state from valid to invalid (as indicated by disabled/enabled submit button) + according to child widget state. +

    +
    + + + + + + + + + + + + + + + + + + + + + + +





    + + +

    +
    + + + +
    + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_MultiSelect.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_MultiSelect.html new file mode 100644 index 0000000..cd9d70b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_MultiSelect.html @@ -0,0 +1,156 @@ + + + + + Testing MultiSelect form widget | The Dojo Toolkit + + + + + + + + + + + + + + + + + +

    dijit.form.MultiSelect:

    +

    Select one or more items in First or Second list and move them between lists using the buttons provided.

    +
    + +
    + + + +
    + +

    + + + + + + + + +

    + + +
    +

    + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_Select.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Select.html new file mode 100644 index 0000000..447a19c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Select.html @@ -0,0 +1,737 @@ + + + + + dijit.form.Select test + + + + + + + + + + + + + + + + + +

    Test: dijit.form.Select

    + +

    + Note: load test_Select.html?mode=test to run unit tests, or + test_Select.html?mode=benchmark to run performance tests. +

    + +
    +

    HTML select for comparison

    + + + + +
    +
    +

    dijit.form.Select form

    +

    Setting Defaults

    + + + + + + + +
    +

    Rich Text (Need to use divs and spans - since browsers hack selects to pieces)

    + + + +
    +

    + + + + +
    +

    + +
    +

    Long lists

    + + + + +
    +

    Store-based

    + + + + + + + + +
    +

    Inlined with text (all IE modes except for IE8 Standards)

    + + + +
    +

    More required but blank selects

    + + + + + +
    + + +
    + +

    Disabled

    + + +
    +

    Programmatic and other tests

    +
    + + +
    +
    +
    + + validate and close +
    +
    + + +
    +
    +
    +
    + + validate and close +
    +
    + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_SimpleTextarea.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_SimpleTextarea.html new file mode 100644 index 0000000..834c9f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_SimpleTextarea.html @@ -0,0 +1,92 @@ + + + + + Testing SimpleTextArea | The Dojo Toolkit + + + + + + + + + + + + + + + + + +

    SimpleTextarea

    + +

    + This is a simple text area that doesn't automatically size itself according to it's content. + It can be used inside layout containers. +

    + +

    Plain textarea (rows=5, cols=50), selectOnClick=true

    + + onChange: + + + + + + + + +

    Plain textarea with style="height: 300px; width: 300px" rows="" cols=""

    + + +

    In a BorderContainer

    + +
    + + + + + +
    + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_Slider.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Slider.html new file mode 100644 index 0000000..d63e578 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Slider.html @@ -0,0 +1,220 @@ + + + + + Dojo Slider Widget Demo + + + + + + + + + + + + + + + + +

    Slider

    + Also try using the arrow keys, buttons, or clicking on the progress bar to move the slider. +
    + +
    +
    initial value=10, min=0, max=100, pageIncrement=100, onChange event triggers input box value change immediately
    + Horizontal Slider Example +
    +
      +
      +
      +
        +
      1. lowest
      2. +
      3. normal
      4. +
      5. highest
      6. +
      +
      + + Slider1 Value: +
      + + +
      +
      initial value=10, min=0, max=100, onChange event triggers input box value change when you mouse up or tab away
      + Vertical Slider Example +
      +
        +
      1. 0
      2. +
      3. 100
      4. +
      +
      +
      +
        +
        + Slider2 Value: +

        Fancy HTML labels (no slide animation):

        +
        +
        +
          +

        1. small
        2. +

        3. medium
        4. +

        5. large
        6. +
        +
        + +

        Standalone ruler example:

        + +
        +
        +
        +
        +
        +
          +
        1. +
        2. 1
        3. +
        4. 2
        5. +
        +
        + +

        horizontal, with buttons, disabled (to show styling):

        + +
        +
          +
          +
          +
            +
          1. lowest
          2. +
          3. normal
          4. +
          5. highest
          6. +
          +
          + + +

          Completely Programatic VerticalSlider and VerticalRule

          +

          min:1000, max:3000, 11 discrete values, no animation

          + +
          + Programmatic Value: + + + +
          + + +
          + +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_Spinner.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Spinner.html new file mode 100644 index 0000000..915955e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Spinner.html @@ -0,0 +1,128 @@ + + + + + Dojo Spinner Widget Test + + + + + + + + + + + + + + + + + +

          Dijit Spinner Test

          + Try typing values, and use the up/down arrow keys and/or the arrow push + buttons to spin +
          +
          +

          number spinner

          +
          + initial value=900, no delta specified, no min specified, max=1550, onChange captured, big font
          +
          + + onChange: + + + + +
          +
          + initial value=1000, delta=10, min=9 max=1550
          + + +
          +
          + initial value not specified, delta not specified, min not specified, max not specified, signed not specified, separator not specified
          + [verify no line break just after this text] + + [verify no line break just before this text] +
          +
          + Move the cursor left and right within the input field to see the effect on the spinner. +
          + initial value=+1.0, smalldelta=0.1, largedelta=1.0, min=-10.9, max=155, places=1, maxLength=20, exponent=false
          +
          + +
          + +

          +
          + + + + + +

          +

          + + +

          + + +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_Textarea.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Textarea.html new file mode 100644 index 0000000..5036980 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_Textarea.html @@ -0,0 +1,143 @@ + + + + + + Dojo dijit.form.Textarea Widget Test + + + + + + + + + + + + + + + + + +

          Auto-sizing Textarea Widget Test

          + + +
          + +

          Various dijit.form.Textarea widgets

          + + +
          + + + + onChange: +
          + + +
          + +
          +
          +
          + +
          +
          + +
          +
          + +
          + + + + + + +

          Set properties for every dijit.form.Textarea

          + + + + + + +

          Submit page as form

          +
          + + +
          + + +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_TimeTextBox.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_TimeTextBox.html new file mode 100644 index 0000000..817e455 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_TimeTextBox.html @@ -0,0 +1,181 @@ + + + + + Test TimeTextBox Widget + + + + + + + + + + + + + + + + +

          Test TimeTextBox Widget

          + +
          + +
          + +
          +
          + +
          + + TimeTextBox class, + Attributes: {formatLength:'medium'} +
          +
          + + onChange: +
          + +
          + + TimeTextBox class, + Attributes: {formatLength:'short'} +
          +
          + +
          + +
          + + TimeTextBox class, + Attributes: {timePattern:'h:mm:ss a'} +
          +
          + +
          + +
          + + TimeTextBox class, + Attributes: {timePattern:'HH:mm:ss'} +
          +
          + +
          + +
          + + TimeTextBox class, + Attributes: {timePattern:'HH:mm:ss', clickableIncrement:'T00:15:00', visibleIncrement:'T00:15:00', visibleRange:'T01:00:00'} +
          +
          + +
          + +
          + + TimeTextBox class, + Attributes: {formatLength:'medium',min:'T00:00:00',max:'T12:00:00'} +
          +
          + + onChange: +
          +
          + Using title attribute for label. + TimeTextBox class, + Attributes: {formatLength:'short'} Time using local conventions without seconds, required, no invalid message tooltip +
          +
          + +
          +
          + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_validStatePerformance.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_validStatePerformance.html new file mode 100644 index 0000000..2438d18 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_validStatePerformance.html @@ -0,0 +1,117 @@ + + + + + Performance Test of NumberTextBox + + + + + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + + + + + + + + +
          +
          +
          + + + + + + + + + + + + + + + + + + + + +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_validate.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_validate.html new file mode 100644 index 0000000..7c39dc9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_validate.html @@ -0,0 +1,563 @@ + + + + + Test TextBox Validation Widgets + + + + + + + + + + + + + + + + +

          Dijit Validation Widgets

          + +
          + +
          + + TextBox class, tabIndex=2, Attributes: {trim: true, propercase: true, intermediateChanges: true, style: 'width:700px', selectOnClick: true}, First letter of each word is upper case. +
          +
          + +
          onChange: + + +
          + +
          + + TextBox class, Attributes: {trim: true, uppercase: true, "class": 'verylong'}, all letters converted to upper case. +
          +
          + +
          + +
          + + NumberTextBox class, tabIndex=1, Attributes: {trim: true}, no initial value specified, tooltipPosition=[above, below]. Displays a prompt message if field is blank. +
          +
          + + onChange: + + + + + + + + +
          + +
          + + NumberTextBox class, Attributes: required=true, must be integer, no messages provided, no initial value specified, maxlength=3 +
          +
          + + + +
          + +
          + + ValidationTextBox class, + Attributes: {lowercase: true, required: true, "class": verylong, style: font-size: 15pt;}. Displays a prompt message if field is blank. +
          +
          + +
          + +
          + + IntegerTextBox class, + Attributes: {required: true, min:-20000, max:+20000 }, displays a prompt message if field is blank, thousands separator remains during editing. + Enter feet above sea level with a sign. +
          +
          + + onChange: +
          + + + +
          + + CurrencyTextBox class, + Attributes: {fractional: true}. Enter whole and cents. Currency symbol is optional. Cents are MANDATORY. +
          + +
          + USD +  onChange: +
          + +
          + euro currency (local format) fractional part is optional: + EUR + + + +
          + + +
          + euro currency (fixed lang: de-de) programmatically created, fractional part is optional: EUR +
          + + + + +
          + + RegexpTextBox class, + Attributes: {required: true} +
          +
          + +
          + +
          + + (just a test that type attribute is obeyed) +
          +
          + +
          + +
          + + value: null should show up as empty +
          +
          + +
          + + + +
          + + a test that readOnly and disabled are understood for TextBox +
          +
          + + + + + +
          +
          + + a test that disabled is understood for ValidationTextBox +
          +
          + + + + + +
          + + + +
          + + +
          + +
          +
          + + a test that placeholder works for TextBox. 10px padding added for testing. +
          +
          + +
          +

          Tooltip positioning

          +

          + These buttons switch the positions searched to try to place the validation error tooltips. + Note that setting tooltip positioning to "above" or "below" is dangerous if + you have a node with a dropdown, but the drop down might overlap the tooltip. +

          + + + +
          + +
          +
          + +
          + +

          Validation tooltips inside of dialogs:

          +
          + +
          +
          + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/form/test_verticalAlign.html b/js/dojo-release-1.7.2-src/dijit/tests/form/test_verticalAlign.html new file mode 100644 index 0000000..8d7e2a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/form/test_verticalAlign.html @@ -0,0 +1,207 @@ + + + + + Dojo Form Widget Vertical Alignment Test + + + + + + + + + + + + + + + +

          Dojo Form Widget Vertical Alignment Test

          + +

          In a P

          +

          + + + + + + + + + + + + +

          + +

          In a DIV

          +
          + + + + + + + + + + + + +
          + +

          font-size 200%

          +
          + + + + + + + + + + + + +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/formAction.html b/js/dojo-release-1.7.2-src/dijit/tests/formAction.html new file mode 100644 index 0000000..319893d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/formAction.html @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/general-module.js b/js/dojo-release-1.7.2-src/dijit/tests/general-module.js new file mode 100644 index 0000000..ffd42bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/general-module.js @@ -0,0 +1,42 @@ +dojo.provide("dijit.tests.general-module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + + // top level widget tests + doh.registerUrl("dijit.tests.Bidi", dojo.moduleUrl("dijit","tests/Bidi.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.Menu_mouse", dojo.moduleUrl("dijit","tests/robot/Menu_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.Menu_a11y", dojo.moduleUrl("dijit","tests/robot/Menu_a11y.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.Menu_iframe", dojo.moduleUrl("dijit","tests/robot/Menu_iframe.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.Dialog", dojo.moduleUrl("dijit","tests/Dialog.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.Dialog_mouse", dojo.moduleUrl("dijit","tests/robot/Dialog_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.Dialog_a11y", dojo.moduleUrl("dijit","tests/robot/Dialog_a11y.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.Dialog_focusDestroy", dojo.moduleUrl("dijit","tests/robot/Dialog_focusDestroy.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.ProgressBar", dojo.moduleUrl("dijit","tests/ProgressBar.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.Tooltip_a11y", dojo.moduleUrl("dijit","tests/robot/Tooltip_a11y.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.Tooltip_mouse", dojo.moduleUrl("dijit","tests/robot/Tooltip_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.Tooltip_mouse_quirks", dojo.moduleUrl("dijit","tests/robot/Tooltip_mouse_quirks.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.Tooltip-placement", dojo.moduleUrl("dijit","tests/Tooltip-placement.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.TooltipDialog_mouse", dojo.moduleUrl("dijit","tests/robot/TooltipDialog_mouse.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.robot.TooltipDialog_a11y", dojo.moduleUrl("dijit","tests/robot/TooltipDialog_a11y.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.InlineEditBox", dojo.moduleUrl("dijit","tests/robot/InlineEditBox.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.ColorPalette", dojo.moduleUrl("dijit","tests/robot/ColorPalette.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.Calendar_a11y", dojo.moduleUrl("dijit","tests/robot/Calendar_a11y.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.TitlePane", dojo.moduleUrl("dijit","tests/robot/TitlePane.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.Toolbar", dojo.moduleUrl("dijit","tests/robot/Toolbar.html"+userArgs), 999999); + + doh.registerUrl("dijit.tests.robot.BgIframe", dojo.moduleUrl("dijit","tests/robot/BgIframe.html"+userArgs), 999999); + +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/helpers.js b/js/dojo-release-1.7.2-src/dijit/tests/helpers.js new file mode 100644 index 0000000..b624deb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/helpers.js @@ -0,0 +1,74 @@ +// Helper methods for automated testing + +function isVisible(/*dijit._Widget || DomNode*/ node){ + // summary: + // Return true if node/widget is visible + var p; + if(node.domNode){ node = node.domNode; } + return (dojo.style(node, "display") != "none") && + (dojo.style(node, "visibility") != "hidden") && + (p = dojo.position(node, true), p.y + p.h >= 0 && p.x + p.w >= 0 && p.h && p.w); +} + +function isHidden(/*dijit._Widget || DomNode*/ node){ + // summary: + // Return true if node/widget is hidden + var p; + if(node.domNode){ node = node.domNode; } + return (dojo.style(node, "display") == "none") || + (dojo.style(node, "visibility") == "hidden") || + (p = dojo.position(node, true), p.y + p.h < 0 || p.x + p.w < 0 || p.h <= 0 || p.w <= 0); +} + +function innerText(/*DomNode*/ node){ + // summary: + // Browser portable function to get the innerText of specified DOMNode + return node.textContent || node.innerText || ""; +} + +function tabOrder(/*DomNode?*/ root){ + // summary: + // Return all tab-navigable elements under specified node in the order that + // they will be visited (by repeated presses of the tab key) + + var elems = []; + + function walkTree(/*DOMNode*/parent){ + dojo.query("> *", parent).forEach(function(child){ + // Skip hidden elements, and also non-HTML elements (those in custom namespaces) in IE, + // since show() invokes getAttribute("type"), which crash on VML nodes in IE. + if((dojo.isIE && child.scopeName!=="HTML") || !dijit._isElementShown(child)){ + return; + } + + if(dijit.isTabNavigable(child)){ + elems.push({ + elem: child, + tabIndex: dojo.hasAttr(child, "tabIndex") ? dojo.attr(child, "tabIndex") : 0, + pos: elems.length + }); + } + if(child.nodeName.toUpperCase() != 'SELECT'){ + walkTree(child); + } + }); + } + + walkTree(root || dojo.body()); + + elems.sort(function(a, b){ + return a.tabIndex != b.tabIndex ? a.tabIndex - b.tabIndex : a.pos - b.pos; + }); + return dojo.map(elems, function(elem){ return elem.elem; }); +} + + +function onFocus(func){ + // summary: + // On the next change of focus, and after widget has had time to react to focus event, + // call func(node) with the newly focused node + var handle = dojo.subscribe("focusNode", function(node){ + dojo.unsubscribe(handle); + setTimeout(function(){ func(node); }, 0); + }); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/README b/js/dojo-release-1.7.2-src/dijit/tests/i18n/README new file mode 100644 index 0000000..a6516b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/README @@ -0,0 +1,4 @@ +Global Verification Tests (GVT) + +In order to run these tests, you will need full locale support in Dojo. Dojo only ships with a small subset by default. +See util/buildscripts/cldr for an ant-based build script. diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/calendar.html b/js/dojo-release-1.7.2-src/dijit/tests/i18n/calendar.html new file mode 100644 index 0000000..a23f9d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/calendar.html @@ -0,0 +1,44 @@ + + + + + Calendar I18N Test + + + + + + + + + + + + + + +

          Dijit Calendar I18N Test

          + + before + + + + + + + after + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/currency.html b/js/dojo-release-1.7.2-src/dijit/tests/i18n/currency.html new file mode 100644 index 0000000..4da4ca2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/currency.html @@ -0,0 +1,211 @@ + + + + + Test CurrencyTextBox + + + + + + + + + + + + +

          Dijit TextBox Globalization Test for Currency

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr", and "ja-jp" + and currencies CNY, EGP, EUR, JPY. If not, convert these CLDR data and put them there. +

          + + + +

          Issues & Comments

          +

          Issue #1Fixed

          +

          + Some browsers like FireFox have a bug on the non-breaking space character (U+00A0, &nbsp; or &#160; or + &#xA0; in HTML). + They always convert the NBSP character to a normal space (U+0020, &#x20; in HTML) automatically in the following circumstances: +

          +
            +
          • Copy text from the page
          • +
          • Use innerHTML to get the content of a certain element
          • +
          • Use value to get an INPUT element's value
          • +
          + +

          + You cannot read a real NBSP character from an INPUT element on these browsers. It causes issues when some formatting data in CLDR + contains an NBSP character. For example, +

          +
            +
          • Many locales like French use an NBSP character as a group separator in numbers
          • +
          • French and Finnish use NBSP characters in their percentage and currency format patterns respectively
          • +
          + +

          + So Dojo may generate formatted data with NBSP characters in it but cannot read NBSP charaters from user's input in some browser. +

          + +

          Issue #2Fixed: the CLDR data generator should be fixed by adding code to convert U+200F to "\u200F" in nls JS files.

          +

          + Most Bidi currency symbols contain an LTR-MARK (U+200F) character at the very beginning. + But Firefox ignores it when it is not in any escaping form. This should be a bug of Firefox. + For example, click alert('‏'.indexOf('\u+200F')) (there is a U+200F in the empty-looking string): +

          +
            +
          • In Firefox, shows "-1" -- no U+200F found
          • +
          • In IE & Opera, shows "0" -- the U+200F is found
          • +
          +

          + But if the U+200F is in some escaping form, Firefox will work as well as other browsers. + Click alert('\u200F'.indexOf('\u+200F')) to see the same result both in Firefox and IE: +

          + + +

          Issue #3Fixed: added a "localeDigit" to the options

          +

          + Strictly speaking, the data conversion must support non-European number characters in some locales like Arabic and Hindi. + For example, ICU formats a number data into Indic number characters by default in the Arabic locale. + However, currently Dojo does not support this feature (Dojo uses the default number conversion of the browser). +

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/date.html b/js/dojo-release-1.7.2-src/dijit/tests/i18n/date.html new file mode 100644 index 0000000..46960f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/date.html @@ -0,0 +1,156 @@ + + + + + Test DateTextBox + + + + + + + + + + + + + +

          Dijit TextBox Globalization Test for Date

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr", "ja-jp", "ru-ru", "hi-in", "en-us" and "ar-eg". If not, convert these CLDR data and put them there. +

          + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/digit.html b/js/dojo-release-1.7.2-src/dijit/tests/i18n/digit.html new file mode 100644 index 0000000..6527d9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/digit.html @@ -0,0 +1,295 @@ + + + + + Test Hindi/Arabic numerals + + + + + + + + + + + + + +

          Dijit TextBox Globalization Test for Number

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "ar-eg" and "hi-in". If not, convert these CLDR data and put them there. +

          + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/module.js b/js/dojo-release-1.7.2-src/dijit/tests/i18n/module.js new file mode 100644 index 0000000..40cc667 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/module.js @@ -0,0 +1,14 @@ +dojo.provide("dijit.tests.i18n.module"); + +try{ + if(dojo.isBrowser){ + doh.registerUrl("dijit.tests.i18n.currency", dojo.moduleUrl("dijit", "tests/i18n/currency.html"), 999999); + doh.registerUrl("dijit.tests.i18n.date", dojo.moduleUrl("dijit", "tests/i18n/date.html"), 999999); + doh.registerUrl("dijit.tests.i18n.number", dojo.moduleUrl("dijit", "tests/i18n/number.html"), 999999); + doh.registerUrl("dijit.tests.i18n.textbox", dojo.moduleUrl("dijit", "tests/i18n/textbox.html"), 999999); + doh.registerUrl("dijit.tests.i18n.time", dojo.moduleUrl("dijit", "tests/i18n/time.html"), 999999); + doh.registerUrl("dijit.tests.i18n.digit", dojo.moduleUrl("dijit", "tests/i18n/digit.html"), 999999); + } +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/number.html b/js/dojo-release-1.7.2-src/dijit/tests/i18n/number.html new file mode 100644 index 0000000..e05c297 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/number.html @@ -0,0 +1,137 @@ + + + + + Test NumberTextBox + + + + + + + + + + + + +

          Dijit TextBox Globalization Test for Number

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr". If not, convert these CLDR data and put them there. +

          + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/test_i18n.js b/js/dojo-release-1.7.2-src/dijit/tests/i18n/test_i18n.js new file mode 100644 index 0000000..2e0d6fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/test_i18n.js @@ -0,0 +1,217 @@ +var validateValues = []; +var formatWidgetCount = 0; +var validateWidgetCount = 0; + +function getElementsById(id){ + var result = []; + + if(!id || typeof(id) != "string"){ + return result; + } + + var ae = document.getElementsByTagName(dojo.byId(id).tagName); + for(var i = 0; i < ae.length; i++){ + if(ae[i].id == id){ + result.push(ae[i]); + } + } + return result; +} + +function getString(n){ + return n && n.toString(); +} + +function startTest(t){ + startTestFormat(t); + startTestValidate(t); +} + +function escapeEx(s){ + var result = ""; + for(var i = 0; i < s.length; i++){ + var c = s.charAt(i); + switch (c){ + case '"': + result += '\\"'; + break; + case "'": + result += "\\'"; + break; + default: + result += escape(c); + break; + } + } + return result; +} + +function getAllTestCases(){ + var allTestCases = []; + for(var i = 0; i < formatWidgetCount; i++){ + allTestCases.push({ + name: "format-" + i, + runTest: new Function("t", "startTestFormat(" + i + ", t)") + }); + } + for(i = 0; i < validateWidgetCount; i++){ + allTestCases.push({ + name: "validate-" + i, + runTest: new Function("t", "startTestValidate(" + i + ", t)") + }); + } + return allTestCases; +} + +function startTestFormat(i, t){ + var test_node = dojo.doc.getElementById("test_display_" + i); + var exp = dojo.doc.getElementById("test_display_expected_" + i).value; + var res_node = dojo.doc.getElementById("test_display_result_" + i); + res_node.innerHTML = test_node.value; + res_node.style.backgroundColor = (test_node.value == exp) ? "#AFA" : "#FAA"; + res_node.innerHTML += " Compare (Escaped)"; + t.is(exp, test_node.value); +} + +function startTestValidate(i, t){ + /* + * The dijit.byNode has an issue: cannot handle same id. + */ + var test_node = dojo.doc.getElementById("test_validate_" + i); + var inp_node = dojo.doc.getElementById("test_validate_input_" + i); + var exp = dojo.doc.getElementById("test_validate_expected_" + i).innerHTML; + var res_node = dojo.doc.getElementById("test_validate_result_" + i); + var val_node = dojo.doc.getElementById("test_display_value_" + i); + + test_node.value = inp_node.value; + /* + * The dijit.byNode has an issue. + */ + var widget = null; + var node = test_node; + while ((widget = dijit.byNode(node)) == null){ + node = node.parentNode; + if(!node){ + break; + } + } + + if(widget){ + widget.focus(); + + var expected = validateValues[i]; + var result = widget.getValue(); + if(validateValues[i].processValue){ + expected = validateValues[i].processValue(expected); + result = validateValues[i].processValue(result); + } + var parseCorrect = getString(expected) == getString(result); + val_node.style.backgroundColor = parseCorrect ? "#AFA" : "#FAA"; + val_node.innerHTML = getString(result) + (parseCorrect ? "" : "
          Expected: " + getString(expected)); + + res_node.innerHTML = widget.isValid && !widget.isValid() ? "Wrong" : "Correct"; + res_node.style.backgroundColor = res_node.innerHTML == exp ? "#AFA" : "#FAA"; + + t.is(getString(expected), getString(result)); + } +} + +function genFormatTestCase(desc, dojoType, dojoAttrs, value, expValue, comment){ + var res = ""; + res += ""; + res += "" + desc + ""; + res += ""; + res += ""; + res += ""; + res += "" + comment + ""; + res += ""; + formatWidgetCount++; + + return res; +} +/* +[ + {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:"-123456789.46", expValue: "", comment: ""}, + ... +] +*/ +function genFormatTestCases(title, dojoType, testCases){ + var res = ""; + res += "

          " + title + "

          "; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + + for(var i = 0; i < testCases.length; i++){ + var testCase = testCases[i]; + res += genFormatTestCase(testCase.desc, dojoType, testCase.attrs, testCase.value, testCase.expValue, testCase.comment); + } + + res += "
          Test DescriptionTestExpectedResultComment
          "; + + dojo.place(res, dojo.body()); +} + +function genValidateTestCase(desc, dojoType, dojoAttrs, input, value, comment, isWrong){ + var res = ""; + res += ""; + res += "" + desc + ""; + res += ""; + res += ""; + res += ""; + res += "" + (isWrong ? "Wrong" : "Correct") + ""; + res += ""; + res += "" + comment + ""; + res += ""; + validateValues.push(value); + validateWidgetCount++; + + return res; +} +/* +[ + {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:false, expValue: "-123456789.46", comment: ""}, + ... +] +*/ +function genValidateTestCases(title, dojoType, testCases){ + var res = ""; + res += "

          " + title + "

          "; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + + for(var i = 0; i < testCases.length; i++){ + var testCase = testCases[i]; + res += genValidateTestCase(testCase.desc, dojoType, testCase.attrs, testCase.expValue, testCase.value, testCase.comment, testCase.isWrong); + } + + res += "
          Test DescriptionTestInputParsed ValueExpectedResultComment
          "; + dojo.place(res, dojo.body()); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/textbox.html b/js/dojo-release-1.7.2-src/dijit/tests/i18n/textbox.html new file mode 100644 index 0000000..97ebe2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/textbox.html @@ -0,0 +1,174 @@ + + + + + Test TextBox + + + + + + + + + + + + +

          Dijit TextBox Globalization Test

          + + + + + +

          Issues & Comments

          +

          Issue #1 Not fixed. Avoid using this function of TextBox.

          +

          + Strictly speaking, all casing manipulation must use ICU case mapping rules (routine). However, the default JavaScript routines used by Dojo + do not support ICU case mapping rules in all browsers. +

          + +

          Issue #2 Not fixed. Avoid using this function of TextBox.

          +

          + Trimming must get rid of all Unicode characters with the white space property. However, the default JavaScript routines used by Dojo + do not support get character properties in some browsers like IE. Other browsers like Firefox might support trimming more white space + characters. +

          + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/i18n/time.html b/js/dojo-release-1.7.2-src/dijit/tests/i18n/time.html new file mode 100644 index 0000000..207fe88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/i18n/time.html @@ -0,0 +1,178 @@ + + + + + Test TextBox for Time + + + + + + + + + + + +

          Dijit TextBox Globalization Test for Time

          + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr", "ja-jp", "ru-ru", "hi-in", "en-us" and "ar-eg". If not, convert these CLDR data and put them there. +

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/arrowSmall.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/arrowSmall.gif new file mode 100644 index 0000000..8459ffa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/arrowSmall.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/copy.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/copy.gif new file mode 100644 index 0000000..3fa0366 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/copy.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/cut.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/cut.gif new file mode 100644 index 0000000..27d2dd6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/cut.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/flatScreen.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/flatScreen.gif new file mode 100644 index 0000000..05edd72 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/flatScreen.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/folderIcons.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/folderIcons.gif new file mode 100644 index 0000000..d0b1760 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/folderIcons.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/folderIcons.png b/js/dojo-release-1.7.2-src/dijit/tests/images/folderIcons.png new file mode 100755 index 0000000..f333fbe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/folderIcons.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/note.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/note.gif new file mode 100644 index 0000000..ae5c621 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/note.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/paste.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/paste.gif new file mode 100644 index 0000000..4862a28 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/paste.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/plus.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/plus.gif new file mode 100644 index 0000000..0e92383 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/plus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/testsBodyBg.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/testsBodyBg.gif new file mode 100644 index 0000000..4e0b4a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/testsBodyBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/tube.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/tube.gif new file mode 100644 index 0000000..b506513 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/tube.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/images/tubeTall.gif b/js/dojo-release-1.7.2-src/dijit/tests/images/tubeTall.gif new file mode 100644 index 0000000..e4fdb8b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/tests/images/tubeTall.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/tests/infrastructure-module.js b/js/dojo-release-1.7.2-src/dijit/tests/infrastructure-module.js new file mode 100644 index 0000000..276a4bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/infrastructure-module.js @@ -0,0 +1,27 @@ +dojo.provide("dijit.tests.infrastructure-module"); + +try{ + // _Widget + doh.registerUrl("dijit.tests._Widget-lifecycle", dojo.moduleUrl("dijit", "tests/_Widget-lifecycle.html"), 999999); + doh.registerUrl("dijit.tests._Widget-attr", dojo.moduleUrl("dijit", "tests/_Widget-attr.html"), 999999); + doh.registerUrl("dijit.tests._Widget-subscribe", dojo.moduleUrl("dijit", "tests/_Widget-subscribe.html"), 999999); + doh.registerUrl("dijit.tests._Widget-placeAt", dojo.moduleUrl("dijit", "tests/_Widget-placeAt.html"), 999999); + doh.registerUrl("dijit.tests.robot._Widget-on", dojo.moduleUrl("dijit","tests/_Widget-on.html"), 999999); + doh.registerUrl("dijit.tests.robot._Widget-deferredConnect", dojo.moduleUrl("dijit","tests/robot/_Widget-deferredConnect.html"), 999999); + doh.registerUrl("dijit.tests.robot._Widget-ondijitclick_mouse", dojo.moduleUrl("dijit","tests/robot/_Widget-ondijitclick_mouse.html"), 999999); + doh.registerUrl("dijit.tests.robot._Widget-ondijitclick_a11y", dojo.moduleUrl("dijit","tests/robot/_Widget-ondijitclick_a11y.html"), 999999); + + // _Templated and other mixins + doh.registerUrl("dijit.tests._TemplatedMixin", dojo.moduleUrl("dijit", "tests/_TemplatedMixin.html"), 999999); + doh.registerUrl("dijit.tests._WidgetsInTemplateMixin", dojo.moduleUrl("dijit", "tests/_WidgetsInTemplateMixin.html"), 999999); + doh.registerUrl("dijit.tests._Templated-widgetsInTemplate1.x", dojo.moduleUrl("dijit", "tests/_Templated-widgetsInTemplate1.x.html"), 999999); + doh.registerUrl("dijit.tests._Container", dojo.moduleUrl("dijit", "tests/_Container.html"), 999999); + + doh.registerUrl("dijit.tests.Declaration", dojo.moduleUrl("dijit","tests/test_Declaration.html"), 999999); + doh.registerUrl("dijit.tests.Declaration_1.x", dojo.moduleUrl("dijit","tests/test_Declaration_1.x.html"), 999999); + + // Miscellaneous + doh.registerUrl("dijit.tests.NodeList-instantiate", dojo.moduleUrl("dijit","tests/NodeList-instantiate.html"), 999999); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/AccordionContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/AccordionContainer.html new file mode 100644 index 0000000..4324766 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/AccordionContainer.html @@ -0,0 +1,510 @@ + + + + + Accordion Widget Automated Test + + + + + + + + + + + + + + + + + + + + +

          AccordionContainer Automated Tests

          + +

          Markup Accordion

          +
          +
          + +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          + + +
          + + +
          + +
          + +

          Programmatic Accordions

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/BorderContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/BorderContainer.html new file mode 100644 index 0000000..e49658b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/BorderContainer.html @@ -0,0 +1,324 @@ + + + + + dijit.layout.BorderContainer DOH Test + + + + + + + + + + + + + + + + + + + +

          Headline layout (default), left is constrained - min:150, max:250

          +
          +
          + top bar (resizable) +
          +
          + left (resizable b/w 150 → 250) +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + right (fixed size) +
          +
          + bottom bar (resizable) +
          +
          + +

          Sidebar layout, BiDi sensitive, liveSplitters: false

          +
          +
          + leading (fixed size) +
          +
          + top bar (fixed size) +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar (resizable) +
          +
          + trailing (resizable) +
          +
          + +

          Programatically created, then destroyed

          +
          + +

          BorderContainer with MenuBar

          + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPane-remote.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPane-remote.html new file mode 100644 index 0000000..4bcbca9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPane-remote.html @@ -0,0 +1,669 @@ + + + + + ContentPane Remote Loading Test + + + + + + + + + + + + + + + + + + + +

          Dijit layout.ContentPane (delayed) remote tests

          + +

          Plain ContentPane

          +
          + +

          StackContainer

          +
          + +

          TabContainer

          +

          These tabs are made up of external content. Loading is delayed to make it easier to see if refreshOnShow and preload = 'false' is working.
          + The tabs also tests to insert html in the Tab title +

          + +
          Create a Tab
          + + +

          AccordionContainer

          +
          +
          +
          +
          +
          + +

          TooltipDialog

          +
          +
          + Show Preload TooltipDialog +
          +
          +
          +
          + +
          + Show No-Preload TooltipDialog +
          +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPane.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPane.html new file mode 100644 index 0000000..8446de4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPane.html @@ -0,0 +1,544 @@ + + + + + ContentPane DOH test + + + + + + +

          dijit.layout.ContentPane DOH test

          +

          Test designed to run on localhost (minimize impact from network latency)

          + +

          This should NOT be parsed automatically

          +
          +
          If this has a different background and a red border, the page parsed when it shouldn't
          +
          +

          Testing ContentPane

          +
          + Even though the entire page isn't scanned for widgets, + any sub widgets of a ContentPane will be created when a ContentPane is created
          + This should have a backgroundcolor and a border +
          +
          +
          +
          +

          +
          + + +
          +
          +
          +
          +
          +
          +
          +
          + + +
          + +
          + + +
          +
          +
          +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPaneLayout.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPaneLayout.html new file mode 100644 index 0000000..bd5c205 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/ContentPaneLayout.html @@ -0,0 +1,803 @@ + + + + + ContentPane layout-related DOH test + + + + + + + +

          dijit.layout.ContentPane layout related DOH test

          + +

          + Tests ContentPane in it's role as a layout widget, including as child of another layout widgets (especially TabContainer). +

          + +

          Tests that href gets loaded when ContentPane is first made visible

          +
          +
          + initially selected pane +
          +
          + unselected pane +
          +
          +
          + initially selected inner pane +
          +
          + unselected pane +
          +
          +
          +
          + left pane +
          +
          + center pane + + +
          +
          +
          +
          +
          + +

          Tests for resizing in a layout container hierarchy

          +
          +
          + initially selected pane +
          +
          +
          +
          +
          +
          +
          + hide the second widget to see if ContentPane can still find it +
          + ending text +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + +

          Size on Form, single nested layout widgets

          +
          +
          +
          +
          + +

          Size on Form, multiple nested layout widget

          +
          +
          + child #1 (100x100) +
          +
          + child #2 (100x100) +
          +
          + +

          No size on Form, single nested layout widgets

          +
          +
          +
          +
          + +

          No size on Form, multiple nested layout widget

          +
          +
          + child #1 (100x100) +
          +
          + child #2 (100x100) +
          +
          + +

          Tests that ContentPane resize doesn't trigger reload

          +
          +
          + initially selected pane +
          +
          + unselected pane +
          +
          + +

          Test the ContentPane loads href and resizes children (as per it's contract a layout widget) + when it's not a child of a layout container itself

          +
          +

          + +
          +

          + +
          +

          + +
          +

          + +
          + +
          +
          +
          +

          + +
          + +
          +
          +
          +

          + +
          + +
          + +
          +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/LayoutContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/LayoutContainer.html new file mode 100644 index 0000000..05493a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/LayoutContainer.html @@ -0,0 +1,294 @@ + + + + dijit.layout.LayoutContainer Test + + + + + + + + + + + + + + + + + + +

          Dijit layout.LayoutContainer tests

          + +

          Basic layout. Tabindex="0" added to each pane to test for tab order matching source code order. Tab order + should be: left, right, top, middle/main, bottom

          + +
          +
          + left +
          +
          + right +
          +
          + top bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          + +
          + bottom bar +
          + +
          + +

          Advanced layout. Tabindex="0" added to each pane to test for tab order matching source code order. Tab order + should be: left, top, bottom, inner left, inner middle, inner right. This is not an ideal tab order. See below to use nested + layout containers to achieve a tab order which matches presentation and source code order.

          +
          +
          + left +
          +
          + top bar +
          +
          + + bottom bar +
          +
          + inner left +
          + +
          + main panel with a link.
          + + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + inner right +
          +
          + +

          Advanced layout with nested containers. Tabindex="0" added to content panes to show tab order. Order should be: + left, top, inner left, inner middle, inner right, bottom. This is the preferred tab order for this type of layout.

          +
          +
          + left +
          +
          +
          + +
          + top bar +
          +
          +
          +
          + inner left +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + inner right +
          +
          +
          +
          + bottom bar +
          +
          +
          +
          + +

          Goofy spiral layout. Match of source code order to tab order can not be achieved with this type of layout.

          +
          +
          + outer left +
          +
          + outer top +
          +
          + outer right +
          +
          + outer bottom +
          +
          + inner left +
          +
          + inner top +
          +
          + inner right +
          +
          + inner bottom +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/StackContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/StackContainer.html new file mode 100644 index 0000000..71e4c69 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/StackContainer.html @@ -0,0 +1,373 @@ + + + + + StackContainer Demo + + + + + + + + + + + + + + + + + +

          A Tale Of Two Cities

          + + + + + +
          +

          IT WAS the best of times, it of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way -- in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only

          +

          There were a king with a large jaw and a queen with a plain face, on the throne of England; there were a king with a large jaw and a queen with a fair face, on the throne of France. In both countries it was clearer than crystal to the lords of the State preserves of loaves and fishes, that things in general were settled for ever.

          +

          It was the year of Our Lord one thousand seven hundred and seventy- five. Spiritual revelations were conceded to England at that favoured period, as at this. Mrs. Southcott had recently attained her five-and- twentieth blessed birthday, of whom a prophetic private in the Life Guards had heralded the sublime appearance by announcing that arrangements were made for the swallowing up of London and Westminster. Even the Cock-lane ghost had been laid only a round dozen of years, after rapping out its messages, as the spirits of this very year last past (supernaturally deficient in originality) rapped out theirs. Mere messages in the earthly order of events had lately come to the English Crown and People, from a congress of British subjects in America:

          +
          + + + + + + +

          Embedded layout widgets

          +

          This tests having layout widgets embedded in the StackContainer, making sure they render on the hidden pane.

          + + + + + +
          +
          +

          + The next pane should have some text, plus two embedded layout widgets, which should + appear correctly even though the pane is initially hidden +

          +
          +
          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + That's it! +

          +
          +
          + + + + +

          Nested StackContainers w/doLayout=false

          +

          "hello world" inner text should be visible

          +
          +
          +
          +
          + hello world +
          +
          +
          +
          + + +

          Programmatic test

          + + Links: + +
          +
          + +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/TabContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/TabContainer.html new file mode 100644 index 0000000..9dfee31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/TabContainer.html @@ -0,0 +1,705 @@ + + + + + TabContainer DOH Test + + + + + + + + + + + + + + + + + + + +

          Dijit layout.TabContainer DOH tests

          + +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - third... +
          +
          + Lorem ipsum and all around - last... +
          +
          + +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + Hmmm even more expanding tabs...... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + +
          +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - second... +
          + Hmmm expanding tabs...... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + Hmmm even more expanding tabs...... +
          +
          +
          + +
          +
          + Left tabs +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + +
          +
          + Right tabs +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + +
          +
          + Bottom tabs +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          + +
          +
          One
          +
          Two
          +
          Three
          +
          Four
          +
          Five
          +
          Six
          +
          Seven
          +
          Eight
          +
          Nine
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/TabContainerTitlePane.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/TabContainerTitlePane.html new file mode 100644 index 0000000..2cc6766 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/TabContainerTitlePane.html @@ -0,0 +1,130 @@ + + + + + TabContainer Nested TitlePane Test + + + + + + + + + + + + + + + + + +

          Dijit layout.TabContainer nested TitlePane tests

          + +
          + +
          +

          I am tab 1

          +
          +

          This is a title pane, containing another tab container ...

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... +

          +
          +
          +
          +
          +
          +
          + +
          +

          I am tab 2

          +
          +

          This is a title pane, containing another tab container ...

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... +

          +
          +
          +
          +
          +
          +
          + +
          +

          I am tab 3

          +
          +

          This is a title pane, containing another tab container ...

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... +

          +
          +
          +
          +
          +
          +
          + +
          +
          + +

          Rendering time

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/_lorem.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/_lorem.html new file mode 100644 index 0000000..9b9d4c0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/_lorem.html @@ -0,0 +1,3 @@ +

          + lorem ipsum dolor. Check net tab for a new XHR. +

          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/borderContainer.php b/js/dojo-release-1.7.2-src/dijit/tests/layout/borderContainer.php new file mode 100644 index 0000000..661af12 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/borderContainer.php @@ -0,0 +1,34 @@ + +
          +> +
          + This file contains a single top-level BorderContainer layout widget. +
          +
          + But it also has some nested layout widgets, and when this file is loaded the TabContainer and + BorderContainer below should get resize() called on them +
          +
          tab1
          +
          tab2
          +
          +
          +
          inner border container
          +
          +
          +
          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/combotab.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/combotab.html new file mode 100644 index 0000000..47fa563 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/combotab.html @@ -0,0 +1,9 @@ +
          +State: + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/doc0.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/doc0.html new file mode 100644 index 0000000..6317194 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/doc0.html @@ -0,0 +1,14 @@ +

          Document 0

          +This document has a link.
          +(to check we're copying children around properly).
          +Plus some widgets and native fields:
          + + + +
          + +Here's some text that comes AFTER the button. diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/doc1.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/doc1.html new file mode 100644 index 0000000..2bff8c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/doc1.html @@ -0,0 +1,13 @@ + + +

          Document 1

          + +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus risus. Praesent eu lacus et enim laoreet sollicitudin. Quisque mollis mi a lectus. Cras ante. Aliquam tempus justo laoreet justo. Vestibulum egestas feugiat nisi. Nulla ultrices consequat felis. Curabitur dignissim augue vel enim. Fusce tempus tempor mauris. Praesent suscipit pede in nunc. Duis mi neque, malesuada non, volutpat et, nonummy et, ante. Aliquam neque. Nulla rhoncus, turpis eget mattis molestie, magna nulla dictum ligula, quis tempor odio justo vel pede. Donec sit amet tellus. Phasellus sapien. Nulla id massa at nunc condimentum fringilla. Fusce suscipit ipsum et lorem consequat pulvinar. Quisque lacinia sollicitudin tellus.

          + +

          Nulla massa lectus, porttitor vitae, dignissim vel, iaculis eget, mi. Vestibulum sed lorem. Nullam convallis elit id leo. Aliquam est purus, rutrum at, sodales non, nonummy a, justo. Proin at diam vel nibh dictum rhoncus. Duis nisl. Etiam orci. Integer hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In ac erat. Sed velit orci, sodales quis, commodo ut, elementum sed, nibh. Cras mattis vulputate nisl. Mauris eu nulla sed orci dignissim laoreet. Morbi commodo, est vitae pharetra ullamcorper, ante nisl ultrices velit, sit amet vulputate turpis elit id lacus. Vestibulum diam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

          + +

          Praesent rutrum nunc quis felis. Morbi tempor. Quisque porta magna imperdiet magna. Ut gravida, ipsum eu euismod consectetuer, nisl lectus posuere diam, vel dignissim elit nisi sit amet lorem. Curabitur non nunc. Morbi metus. Nulla facilisi. Sed et ante. Etiam ac lectus. Duis tristique molestie sem. Pellentesque nec quam. Nullam pellentesque ullamcorper sem.

          + +

          Duis ut massa eget arcu porttitor pharetra. Curabitur malesuada nisi id eros. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus massa. Donec quis justo ut tortor faucibus suscipit. Vivamus commodo neque eget nulla. Donec imperdiet lacus condimentum justo. In sollicitudin magna vitae libero. Curabitur scelerisque libero et eros imperdiet cursus. Maecenas adipiscing. Integer imperdiet, neque ut fringilla semper, leo nisi tincidunt enim, id accumsan leo nisi a libero. Morbi rutrum hendrerit eros. Vestibulum eget augue vel urna congue faucibus.

          + +

          Morbi ante sapien, consequat non, consectetuer vitae, pharetra non, dui. Cras tempus posuere quam. Vestibulum quis neque. Duis lobortis urna in elit. Aliquam non tellus. Etiam nisi eros, posuere vel, congue id, fringilla in, risus. Duis semper rutrum risus. Nullam felis massa, lobortis sit amet, posuere tempor, mattis id, tellus. Nulla id arcu interdum risus commodo tincidunt. Vivamus pretium pulvinar pede. Vivamus eget erat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam bibendum, enim eu venenatis tempor, nunc elit convallis tortor, sit amet vulputate turpis arcu eu pede. Praesent molestie, lacus sed vehicula convallis, enim pede fringilla nunc, at porttitor justo ante a diam. Nunc magna eros, interdum vel, varius eget, volutpat eu, orci. Nunc nec mauris. Nulla facilisi. Vivamus dictum elementum risus. Nam placerat arcu.

          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/doc2.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/doc2.html new file mode 100644 index 0000000..1173b29 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/doc2.html @@ -0,0 +1,13 @@ + + +

          Document 2

          + +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus risus. Praesent eu lacus et enim laoreet sollicitudin. Quisque mollis mi a lectus. Cras ante. Aliquam tempus justo laoreet justo. Vestibulum egestas feugiat nisi. Nulla ultrices consequat felis. Curabitur dignissim augue vel enim. Fusce tempus tempor mauris. Praesent suscipit pede in nunc. Duis mi neque, malesuada non, volutpat et, nonummy et, ante. Aliquam neque. Nulla rhoncus, turpis eget mattis molestie, magna nulla dictum ligula, quis tempor odio justo vel pede. Donec sit amet tellus. Phasellus sapien. Nulla id massa at nunc condimentum fringilla. Fusce suscipit ipsum et lorem consequat pulvinar. Quisque lacinia sollicitudin tellus.

          + +

          Nulla massa lectus, porttitor vitae, dignissim vel, iaculis eget, mi. Vestibulum sed lorem. Nullam convallis elit id leo. Aliquam est purus, rutrum at, sodales non, nonummy a, justo. Proin at diam vel nibh dictum rhoncus. Duis nisl. Etiam orci. Integer hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In ac erat. Sed velit orci, sodales quis, commodo ut, elementum sed, nibh. Cras mattis vulputate nisl. Mauris eu nulla sed orci dignissim laoreet. Morbi commodo, est vitae pharetra ullamcorper, ante nisl ultrices velit, sit amet vulputate turpis elit id lacus. Vestibulum diam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

          + +

          Praesent rutrum nunc quis felis. Morbi tempor. Quisque porta magna imperdiet magna. Ut gravida, ipsum eu euismod consectetuer, nisl lectus posuere diam, vel dignissim elit nisi sit amet lorem. Curabitur non nunc. Morbi metus. Nulla facilisi. Sed et ante. Etiam ac lectus. Duis tristique molestie sem. Pellentesque nec quam. Nullam pellentesque ullamcorper sem.

          + +

          Duis ut massa eget arcu porttitor pharetra. Curabitur malesuada nisi id eros. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus massa. Donec quis justo ut tortor faucibus suscipit. Vivamus commodo neque eget nulla. Donec imperdiet lacus condimentum justo. In sollicitudin magna vitae libero. Curabitur scelerisque libero et eros imperdiet cursus. Maecenas adipiscing. Integer imperdiet, neque ut fringilla semper, leo nisi tincidunt enim, id accumsan leo nisi a libero. Morbi rutrum hendrerit eros. Vestibulum eget augue vel urna congue faucibus.

          + +

          Morbi ante sapien, consequat non, consectetuer vitae, pharetra non, dui. Cras tempus posuere quam. Vestibulum quis neque. Duis lobortis urna in elit. Aliquam non tellus. Etiam nisi eros, posuere vel, congue id, fringilla in, risus. Duis semper rutrum risus. Nullam felis massa, lobortis sit amet, posuere tempor, mattis id, tellus. Nulla id arcu interdum risus commodo tincidunt. Vivamus pretium pulvinar pede. Vivamus eget erat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam bibendum, enim eu venenatis tempor, nunc elit convallis tortor, sit amet vulputate turpis arcu eu pede. Praesent molestie, lacus sed vehicula convallis, enim pede fringilla nunc, at porttitor justo ante a diam. Nunc magna eros, interdum vel, varius eget, volutpat eu, orci. Nunc nec mauris. Nulla facilisi. Vivamus dictum elementum risus. Nam placerat arcu.

          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/getResponse.php b/js/dojo-release-1.7.2-src/dijit/tests/layout/getResponse.php new file mode 100644 index 0000000..2d3e0ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/getResponse.php @@ -0,0 +1,57 @@ +WARNING This should NEVER be seen, delayed by 2 sec!"; + $delay = 2; + break; + case 1: + echo "
          Testing attr('href', ...)
          "; + break; + case 2: + echo "
          Delayed attr('href', ...) test
          +
          Delayed by " . ($delay/1000000) . " sec.
          "; + break; + case 3: + echo "IT WAS the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way -- in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only"; + break; + case 4: + echo "There were a king with a large jaw and a queen with a plain face, on the throne of England; there were a king with a large jaw and a queen with a fair face, on the throne of France. In both countries it was clearer than crystal to the lords of the State preserves of loaves and fishes, that things in general were settled for ever."; + break; + case 5: + echo "It was the year of Our Lord one thousand seven hundred and seventy- five. Spiritual revelations were conceded to England at that favoured period, as at this. Mrs. Southcott had recently attained her five-and- twentieth blessed birthday, of whom a prophetic private in the Life Guards had heralded the sublime appearance by announcing that arrangements were made for the swallowing up of London and Westminster. Even the Cock-lane ghost had been laid only a round dozen of years, after rapping out its messages, as the spirits of this very year last past (supernaturally deficient in originality) rapped out theirs. Mere messages in the earthly order of events had lately come to the English Crown and People, from a congress of British subjects in America:"; + break; + default: + echo "unknown messId:". htmlentities($_GET['messId']); + } + } + + if(isset($_GET['bounceGetStr']) && $_GET['bounceGetStr']){ + echo "
          ".htmlentities($_SERVER["QUERY_STRING"])."
          "; + } + + if(isset($_GET['message']) && $_GET['message']){ + echo htmlentities($_GET['message']); + } + + usleep($delay); + +?> diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/mobile.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/mobile.html new file mode 100644 index 0000000..de48775 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/mobile.html @@ -0,0 +1,142 @@ + + + + + + Layout widgets mobile test page + + + + + + + + +

          Accordion

          +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +
          +
          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          + + +

          BorderContainer

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + +

          TabContainer

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + Tab 3 contents +
          +
          + Tab 4 contents +
          +
          + Tab 5 contents +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/module.js b/js/dojo-release-1.7.2-src/dijit/tests/layout/module.js new file mode 100644 index 0000000..2fc2acc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/module.js @@ -0,0 +1,34 @@ +dojo.provide("dijit.tests.layout.module"); + +try{ + doh.registerUrl("dijit.tests.layout.ContentPane", dojo.moduleUrl("dijit", "tests/layout/ContentPane.html"), 999999); + doh.registerUrl("dijit.tests.layout.test_ContentPane", dojo.moduleUrl("dijit", "tests/layout/test_ContentPane.html"), 999999); + doh.registerUrl("dijit.tests.layout.ContentPaneLayout", dojo.moduleUrl("dijit", "tests/layout/ContentPaneLayout.html"), 999999); + doh.registerUrl("dijit.tests.layout.ContentPane-remote", dojo.moduleUrl("dijit","tests/layout/ContentPane-remote.html"), 999999); + + doh.registerUrl("dijit.tests.layout.robot.GUI", dojo.moduleUrl("dijit","tests/layout/robot/GUI.html"), 999999); + + doh.registerUrl("dijit.tests.layout.LayoutContainer", dojo.moduleUrl("dijit", "tests/layout/LayoutContainer.html"), 999999); + + doh.registerUrl("dijit.tests.layout.StackContainer", dojo.moduleUrl("dijit", "tests/layout/StackContainer.html"), 999999); + doh.registerUrl("dijit.tests.layout.NestedStackContainer", dojo.moduleUrl("dijit", "tests/layout/nestedStack.html"), 999999); + + doh.registerUrl("dijit.tests.layout.TabContainer", dojo.moduleUrl("dijit", "tests/layout/TabContainer.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.TabContainer_a11y", dojo.moduleUrl("dijit","tests/layout/robot/TabContainer_a11y.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.TabContainer_mouse", dojo.moduleUrl("dijit","tests/layout/robot/TabContainer_mouse.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.TabContainer_noLayout", dojo.moduleUrl("dijit","tests/layout/robot/TabContainer_noLayout.html"), 999999); + doh.registerUrl("dijit.tests.layout.TabContainerTitlePane", dojo.moduleUrl("dijit","tests/layout/TabContainerTitlePane.html"), 999999); + + doh.registerUrl("dijit.tests.layout.AccordionContainer", dojo.moduleUrl("dijit", "tests/layout/AccordionContainer.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.AccordionContainer_a11y", dojo.moduleUrl("dijit","tests/layout/robot/AccordionContainer_a11y.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.AccordionContainer_mouse", dojo.moduleUrl("dijit","tests/layout/robot/AccordionContainer_mouse.html"), 999999); + + doh.registerUrl("dijit.tests.layout.BorderContainer", dojo.moduleUrl("dijit", "tests/layout/BorderContainer.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.BorderContainer", dojo.moduleUrl("dijit", "tests/layout/robot/BorderContainer.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.BorderContainer_full", dojo.moduleUrl("dijit", "tests/layout/robot/BorderContainer_full.html"), 999999); + doh.registerUrl("dijit.tests.layout.robot.BorderContainer_complex", dojo.moduleUrl("dijit", "tests/layout/robot/BorderContainer_complex.html"), 999999); + + doh.registerUrl("dijit.tests.layout.robot.BorderContainer_nested", dojo.moduleUrl("dijit", "tests/layout/robot/BorderContainer_nested.html"), 999999); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/multipleLayoutWidgets.php b/js/dojo-release-1.7.2-src/dijit/tests/layout/multipleLayoutWidgets.php new file mode 100644 index 0000000..c899dd0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/multipleLayoutWidgets.php @@ -0,0 +1,14 @@ + +This file has some nested layout widgets, and when this file is loaded the TabContainer and +BorderContainer below should get resize() called on them +
          +
          doc4 tab1
          +
          doc4 tab2
          +
          +
          +
          inner border container
          +
          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/nestedStack.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/nestedStack.html new file mode 100644 index 0000000..0f9f248 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/nestedStack.html @@ -0,0 +1,197 @@ + + + + + + TabContainerLite in StackContainer + + + + + + +

          Integration: TabContainer in StackContainer

          +
          + + + +
          +
          + +
          + +
          +
          + +
          +
          +
          + +
          + +
          +
          + +
          +
          test nested layout widget
          +
          another test nested layout widget
          +
          +
          +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/AccordionContainer_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/AccordionContainer_a11y.html new file mode 100644 index 0000000..4e626b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/AccordionContainer_a11y.html @@ -0,0 +1,75 @@ + + + + doh.robot AccordionContainer A11Y Test + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/AccordionContainer_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/AccordionContainer_mouse.html new file mode 100644 index 0000000..9a93c73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/AccordionContainer_mouse.html @@ -0,0 +1,53 @@ + + + + doh.robot AccordionContainer Mouse Test + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer.html new file mode 100644 index 0000000..1860e7a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer.html @@ -0,0 +1,178 @@ + + + + doh.robot BorderContainer Test + + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_complex.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_complex.html new file mode 100644 index 0000000..2132579 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_complex.html @@ -0,0 +1,313 @@ + + + + doh.robot BorderContainer complex Test + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_full.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_full.html new file mode 100644 index 0000000..770851c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_full.html @@ -0,0 +1,110 @@ + + + + doh.robot BorderContainer full Test + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_nested.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_nested.html new file mode 100644 index 0000000..a2779b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/BorderContainer_nested.html @@ -0,0 +1,148 @@ + + + + doh.robot BorderContainer nested Test + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/GUI.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/GUI.html new file mode 100644 index 0000000..5b5efc8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/GUI.html @@ -0,0 +1,303 @@ + + + + doh.robot GUI Test + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_a11y.html new file mode 100644 index 0000000..f5ce433 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_a11y.html @@ -0,0 +1,402 @@ + + + + doh.robot TabContainer A11Y Test + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_mouse.html new file mode 100644 index 0000000..d65a113 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_mouse.html @@ -0,0 +1,187 @@ + + + + doh.robot TabContainer Mouse Test + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_noLayout.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_noLayout.html new file mode 100644 index 0000000..83dfaf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/TabContainer_noLayout.html @@ -0,0 +1,537 @@ + + + + doh.robot TabContainer No Layout Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/borderContainerTestFunctions.js b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/borderContainerTestFunctions.js new file mode 100644 index 0000000..3e4a6d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/robot/borderContainerTestFunctions.js @@ -0,0 +1,99 @@ + function checkInside(/*Widget*/ child, /*Widget*/ parent, /*String?*/ comment){ + // summary: + // Test that child is fully inside of parent + + child = dijit.byId(child); + parent = dijit.byId(parent); + + var cp = dojo.position(child.domNode, true), + pp = dojo.position(parent.domNode, true); + + doh.t( + cp.y >= pp.y && cp.y+cp.h <= pp.y+pp.h && + cp.x >= pp.x && cp.x+cp.w <= pp.x+pp.w, + (comment ? comment + ": " : "") + child.region + " inside " + parent.id + dojo.toJson(cp) + dojo.toJson(pp) + ); + } + function checkAbove(/*String*/ comment, /*Widget*/ above, /*Widget*/ below){ + // summary: + // Test that child is fully above parent + + above = dijit.byId(above); + below = dijit.byId(below); + + var ap = dojo.position(above.domNode, true), + bp = dojo.position(below.domNode, true); + + doh.t(ap.y+ap.h < bp.y, + comment + " " + above.region + " above " + below.region + dojo.toJson(ap) + dojo.toJson(bp) + ); + } + function checkLeft(/*String*/ comment, /*Widget*/ left, /*Widget*/ right){ + // summary: + // Test that child is fully left of parent + + left = dijit.byId(left); + right = dijit.byId(right); + + var lp = dojo.position(left.domNode, true), + rp = dojo.position(right.domNode, true); + + doh.t(lp.x+lp.w < rp.x, + comment + " " + left.region + " to left of " + right.region + dojo.toJson(lp) + dojo.toJson(rp) + ); + } + + function checkBCpanes(/*BorderContainer*/ bc){ + // summary: + // Check that all the panes in this BorderContainer are in sane + // positions relative to each other. Assumes at most one pane + // in each region. + var children = bc.getChildren(), + regions = {}; + + // Check all panes inside BorderContainer + dojo.forEach(children, function(child){ + checkInside(child, bc); + regions[child.region] = child; + }); + + // Check pane positions relative to each other + dojo.forEach(children, function(child){ + switch(child.region){ + case "top": + dojo.forEach(bc.design == "sidebar" ? ["center", "bottom"] : ["left", "center", "right", "bottom"], function(region){ + if(regions[region]){ + checkAbove(bc.id, child, regions[region]); + } + }); + break; + case "bottom": + dojo.forEach(bc.design == "sidebar" ? ["center", "top"] : ["left", "center", "right", "top"], function(region){ + if(regions[region]){ + checkAbove(bc.id, regions[region], child); + } + }); + break; + case "left": + dojo.forEach(bc.design == "sidebar" ? ["top", "center", "bottom", "right"] : ["right"], function(region){ + if(regions[region]){ + checkLeft(bc.id, child, regions[region]); + } + }); + break; + case "right": + dojo.forEach(bc.design == "sidebar" ? ["top", "center", "bottom", "left"] : ["left"], function(region){ + if(regions[region]){ + checkLeft(bc.id, regions[region], child); + } + }); + break; + } + }); + } + + function within(/*Number*/ a, /*Number*/ b, /*Number*/ range){ + // summary: + // Returns true if a and b are within range + return Math.abs(a-b) <= range; + } diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/runTests.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/runTests.html new file mode 100644 index 0000000..4f9559b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/tab1.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab1.html new file mode 100644 index 0000000..a37b927 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab1.html @@ -0,0 +1,6 @@ + +

          Tab 1

          + +

          I am tab 1. I was loaded externally. WebA11y(something to get focus)

          + +
          blah
          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/tab2.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab2.html new file mode 100644 index 0000000..ed1ad76 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab2.html @@ -0,0 +1,3 @@ +

          Tab 2

          + +

          I am tab 2. I was loaded externally as well.

          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/tab3.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab3.html new file mode 100644 index 0000000..6340f5e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab3.html @@ -0,0 +1,39 @@ +
          +
          +

          This is a nested tab container BUT loaded via an href.

          +
          +
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/tab3_noLayout.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab3_noLayout.html new file mode 100644 index 0000000..421867b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab3_noLayout.html @@ -0,0 +1,39 @@ +
          +
          +

          This is a nested tab container BUT loaded via an href.

          +
          +
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/tab4.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab4.html new file mode 100644 index 0000000..ea422b0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/tab4.html @@ -0,0 +1,40 @@ +
          +
          +

          Top of split container loaded via an href.

          +
          +
          +

          Bottom of split container loaded via an href.

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_AccordionContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_AccordionContainer.html new file mode 100644 index 0000000..f2fbb42 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_AccordionContainer.html @@ -0,0 +1,322 @@ + + + + + Accordion Widget Demo + + + + + + + + + + + + + + + + + + + + + +

          AccordionContainer Tests

          + +

          Accordion from markup:

          + + +
          +
          + +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          + + +
          + +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + +
          +

          + The pane has some text, plus two embedded layout widgets, which should + appear correctly even though the pane is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + + + + + +

          +

          Accordion with padding

          +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          (Leaving one AccordionPane to test deprecation)

          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          + +

          +

          Accordion container destroy

          +
          +
          + Click the button twice - it will work correctly unless there was a problem destroying the accordion, in which case the second time + the Accordion will not be created and you will see an error like Tried to register widget with id==first_button but that id is already registered
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer.html new file mode 100644 index 0000000..45a7678 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer.html @@ -0,0 +1,268 @@ + + + + + dijit.layout.BorderContainer Test + + + + + + + + + + + + + + + + + +

          dijit.layout.BorderContainer tests

          +

          Headline layout (default), left is constrained - min:150, max:250

          +
          +
          + top bar (resizable) +
          +
          + left (resizable b/w 150 → 250) +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + right (fixed size) +
          +
          + bottom bar (resizable) +
          +
          + + +
          + +

          Sidebar layout, BiDi sensitive, liveSplitters: false

          +
          +
          + leading (fixed size) +
          +
          + top bar (fixed size) +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar (resizable) +
          +
          + trailing (resizable) +
          +
          + +

          gutters=false layout

          + +
          +
          + leading +
          +
          + top bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar +
          +
          + trailing +
          +
          + +

          Vertical panels only with splitters

          + +
          +
          + top bar +
          + +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar +
          +
          + +
          +

          More fun with layouts

          + +
          +
          +
          +
          top a
          +
          top b
          +
          +
          +
          +
          +
          bottom c
          +
          bottom d
          +
          +
          +
          +
          +
          leading e
          +
          leading f
          +
          +
          +
          trailing g
          +
          + +
          +

          Watching the splitter events

          +
          +
          Top:
          +
          Bottom
          +
          Center
          +
          + +

          Splitter coords output:

          +
          nothing moving
          + + +

          dijit.layout.BorderContainer programmatic test

          +
          + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_complex.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_complex.html new file mode 100644 index 0000000..e1b7469 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_complex.html @@ -0,0 +1,183 @@ + + + + + dijit.layout.BorderContainer Test - complex layout + + + + + + + + + + + + + + + + + +

          dijit.layout.BorderContainer complex layout test

          + +
          +
          +
          + left bar +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

          +
          +
          + +
          +
          + right bar +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

          +
          +
          +
          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + + + + Sub TabContainer from href + + SplitContainer from href + +
          +
          +
          +
          +

          bottom bar (edit me)

          +
          +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_experimental.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_experimental.html new file mode 100644 index 0000000..1422707 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_experimental.html @@ -0,0 +1,262 @@ + + + + + BorderContainer Experiments | The Dojo Toolkit + + + + + + + + + + + + + + + + + + +

          This is a test

          +

          This is only a test. An experiment in dynamically altering a BorderContainer's layout + (a seemingly unsupported feature just yet). It Demonstrates how to programatically alter/animate + the size of non-center regions though, and several simple layout configurations +

          + +
          +

          Layouts:

          +
          +
          + +
          +
          + pane0 +
          +
          + +
          +
          + Sinlge pane - l1 +
          +
          + +
          +

          two panes, vertical split:

          + + +
          +
          + Sinlge pane - left +
          +
          + Sinlge pane - center + +
          +
          + +
          +
          + Single pane - center (splitter) (this is unsupported, and does not work) +
          +
          + Single pane - right (no splitter) +
          +
          + +
          +
          + Single pane - center (no splitter) +
          +
          + Single pane - right (splitter) +
          +
          +
          + +
          +
          + Single pane - top (splitter) + +
          +
          + Single pane - center +
          +
          + +
          +
          + Single pane - center +
          +
          + Single Pane Bottom (splitter) +
          +
          + Single Pane Top (splitter) +
          +
          + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_full.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_full.html new file mode 100644 index 0000000..fa27fbd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_full.html @@ -0,0 +1,65 @@ + + + + + dijit.layout.BorderContainer Test - Full Screen + + + + + + + + + + + + + + + + +
          +
          + leading +
          +
          + top bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar +
          +
          + trailing +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_nested.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_nested.html new file mode 100644 index 0000000..e7a3d29 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_BorderContainer_nested.html @@ -0,0 +1,131 @@ + + + + + dijit.layout.BorderContainer Test + + + + + + + + + + + + + + + + +

          dijit.layout.BorderContainer tests

          + +

          + The second tab holds a single BorderContainer but specifying layoutPriority on it's children to have multiple children + for each region. +

          +

          + The first tab holds a BorderContainer which nests another BorderContainer, simulating multiple children in a single region. +

          + +
          +
          +
          + left +
          +
          + right +
          +
          + top bar +
          +
          + bottom bar +
          + +
          +
          + left inner +
          +
          + right inner +
          +
          + inner top bar +
          +
          + inner bottom bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          +
          + +
          +
          + top bar (layoutPriority == 1) + +
          +
          + second top bar (layoutPriority == 2) + +
          +
          + left (layoutPriority == 3) + +
          +
          + inner left (layoutPriority == 4) + +
          +
          + inner top bar (layoutPriority == 5) + +
          +
          + center + +
          +
          + inner bottom bar (layoutPriority == 5) + +
          +
          + inner right (layoutPriority == 4) + +
          +
          + right (layoutPriority == 3) + +
          +
          + second bottom bar (layoutPriority == 2) + +
          +
          + bottom bar (layoutPriority == 1) + +
          +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_ContentPane.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_ContentPane.html new file mode 100644 index 0000000..76298e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_ContentPane.html @@ -0,0 +1,215 @@ + + + + + ContentPane Test + + + + + + + + + + + + + + + + + + +

          Dijit layout.ContentPane tests

          +

          pre-container paragraph

          + +
          + some text (top-level container) + +
          + + text in the inner container (1) + +
          + hi +
          + + text in the inner container (2) + +
          + inner-inner 2 +
          + + text in the inner container (3) + +
          + inner-inner 3 +
          + + text in the inner container (4) + +
          + + some more text (top-level container) +
          + +

          mid-container paragraph

          + +
          + 2nd top-level container +
          + +

          post-container paragraph

          + +
          +

          This text should automatically be replaced by downloaded content from combotab.html

          +
          + +
          +

          ContentPanes used by the unit tests to verify functionality +

          + Some Content Here +
          +
          +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_Gui.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_Gui.html new file mode 100644 index 0000000..0014ba4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_Gui.html @@ -0,0 +1,264 @@ + + + + + Dijit UI Tester + + + + + + + + + + + + + + + + +
          +
          This test is to make sure nested layout elements work fine in regards to double borders etc. You need a screen with a very high resolution to not get cramped tabs and other weird visual effects
          + + +
          + +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          + +
          + +
          + +
          + Hi friends of dijit +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          + + +
          +
          + +
          +
          + +
          +
          + +
          +
          +
          + +
          +
          + +
          +
          + +
          + +
          + + +
          + + Here's some text, then a TitlePane: +
          + Hi friends of dijit +
          + ... and some more text. +
          + +
          +
          + Hi friends of dijit +
          +
          + Tab 2 content +
          +
          + +
          + +
          + +
          + Hi friends of dijit +
          +
          + Hi friends of dijit +
          +
          +
          +
          +
          +
          + + +
          + +
          + +
          + +
          + +
          + +
          + +
          +
          + + +
          + +
          + +
          + +
          + +
          + +
          + +
          +
          + +
          + + +
          +
          This test is to make sure nested layout elements work fine in regards to double borders etc. You need a screen with a very high resolution to not get cramped tabs and other weird visual effects
          +
          + + +
          Hi
          +
          + +
          This test is to make sure nested layout elements work fine in regards to double borders etc. You need a screen with a very high resolution to not get cramped tabs and other weird visual effects
          + +
          + +
          + +
          + +
          + +
          + +
          +
          +
          +
          Hi
          + +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_SplitContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_SplitContainer.html new file mode 100644 index 0000000..5ac84a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_SplitContainer.html @@ -0,0 +1,125 @@ + + + + SplitContainer Widget Demo + + + + + + + + + + + + + + + +

          Dijit Split Container Test - DEPRECATED!

          +

          dijit.layout.SplitContainer is deprecated use + BorderContainer with splitter instead -- will be removed in version: 2

          +

          HTML before

          + +
          +
          + this box has three split panes +
          +
          + in vertical mode +
          +
          + without active resizing +
          +
          + +
          +
          + this box has two horizontal panes +
          +
          + with active resizing, a smaller sizer, different starting sizes and minimum sizes +
          +
          + +

          HTML after

          + +the following splitter contains two iframes, see whether the resizer works ok in this situation +
          +
          + +
          +
          + +
          +
          + +

          Programatic Example:

          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_TabContainer.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_TabContainer.html new file mode 100644 index 0000000..e6c771e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_TabContainer.html @@ -0,0 +1,1059 @@ + + + + + TabContainer Demo + + + + + + + + + + + + + + + + +

          Dijit layout.TabContainer tests

          + +

          These tabs are made up of local and external content. Tab 1 and Tab 2 are loading + files tab1.html and tab2.html. Tab 3 and Another Tab are using content that is already + part of this page. Tab2 is initially selected. Attribute tabStrip is set to true +

          + +

          + More tabs can be displayed in the first two TabContainers by clicking the + drop down control to the right of the widget. If the tabs are not wider than + the widget, the scrolling controls should disappear - this can be tested by closing the + closable tabs. +

          + + + +

          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          + SubTab 1 + SubTab 2 +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + + Sub TabContainer from href + SplitContainer from href +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + + + + +
          +

          + This tab container has the Menu function for selecting tabs disabled, using useMenu="false" +

          + +
          +
          + + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          + SubTab 1 + SubTab 2 +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + + Sub TabContainer from href + + SplitContainer from href + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + + +
          + +

          Tabs w/only icons (except in high-contrast mode where labels display):

          +
          +
          Cut icon tab
          +
          Copy icon tab
          +
          Paste icon tab
          +
          + + +

          + This tab container has the Slider function for selecting tabs disabled, using useSlider="false" +

          +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          + SubTab 1 + SubTab 2 +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + + Sub TabContainer from href + + SplitContainer from href + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          +
          +

          + This tab container has the tab strip disabled, using tabStrip="false" +

          +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          + SubTab 1 + SubTab 2 +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + + Sub TabContainer from href + + SplitContainer from href + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + +

          These tabs are made up of local and external content. Tab 1 and Tab 2 are loading + files tab1.html and tab2.html. Tab 3 and Another Tab are using content that is already + part of this page. Tab2 is initially selected. Attribute tabStrip is set to true, + and the tabPosition is "bottom" +

          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          + SubTab 1 + SubTab 2 +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + + Sub TabContainer from href + + SplitContainer from href + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          +
          +

          + This tab container has its tabs at the bottom, and the tab strip disabled +

          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          + SubTab 1 + SubTab 2 +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + + Sub TabContainer from href + + SplitContainer from href + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + +

          + The next example is with closable tabs. + Tab 1 and Tab 3 can be closed; Tab 3 has a confirm box. +

          + +
          +
          +
          +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          If you try to close me there should be a confirm dialog.

          +
          +
          + +

          Tabs with titles on the bottom:

          + +
          +
          +
          +
          + +

          Tabs with titles on the left and tabStrip="false":

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Tabs with titles on the left and tabStrip=true:

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Tabs with titles on the right and tabStrip=true:

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Tabs with titles on the right and tabStrip=false:

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Typical rendering time

          + + + +
          IEFirefox (mac)
          1719922
          +

          Rendering time

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/layout/test_TabContainer_noLayout.html b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_TabContainer_noLayout.html new file mode 100644 index 0000000..51635c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/layout/test_TabContainer_noLayout.html @@ -0,0 +1,178 @@ + + + + + TabContainer doLayout=false Demo + + + + + + + + + + + + + + + + +

          Dijit layout.TabContainer doLayout=false tests

          + +

          + This tests tabs in doLayout=false mode, in which case the tab container's height == + the height of the currently selected tab. +

          +

          + With doLayout=false mode tabs only (the default) tabPosition=top is supported. +

          + + + + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          + tooltip on this span +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + + + + Tab 5 +
          + +

          + Some text here. This should appear directly below the TabContainer, + and the position will change based on the current height of the TabContainer. +

          + +

          No width specified but inside a table w/width=400px:

          + + + + +
          +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          + tooltip on this span +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + + + + Tab 5 +
          +
          + +

          + Some text here. This should appear directly below the TabContainer, + and the position will change based on the current height of the TabContainer. +

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/loose.html b/js/dojo-release-1.7.2-src/dijit/tests/loose.html new file mode 100644 index 0000000..5bf5923 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/loose.html @@ -0,0 +1,7 @@ + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/mobile.html b/js/dojo-release-1.7.2-src/dijit/tests/mobile.html new file mode 100644 index 0000000..5d1cc47 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/mobile.html @@ -0,0 +1,183 @@ + + + + + + General widgets mobile test page + + + + + + + + + +
          +
          Cut
          +
          Bold2
          + +
          + TD +
          + + + + + + + + + + + + +
          +
          +
          +
          + CP +
          +
          + Menu +
          +
          Save
          +
          Save As
          +
          +
          +
          Dialog
          +
          + +
          +
          + + + + + + + + + +
          +
          +
          + + +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          + +
          +
          +
          + +
          +
          + +
          + InlineEditBox: + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/module.js b/js/dojo-release-1.7.2-src/dijit/tests/module.js new file mode 100644 index 0000000..0a99dc2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/module.js @@ -0,0 +1,18 @@ +dojo.provide("dijit.tests.module"); + +try{ + dojo.require("dijit.tests._base.module"); + dojo.require("dijit.tests.infrastructure-module"); + + dojo.require("dijit.tests.general-module"); + dojo.require("dijit.tests.tree.module"); + dojo.require("dijit.tests.editor.module"); + dojo.require("dijit.tests.form.module"); + dojo.require("dijit.tests.layout.module"); + + dojo.require("dijit.tests._BidiSupport.module"); +}catch(e){ + doh.debug(e); +} + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/quirks.html b/js/dojo-release-1.7.2-src/dijit/tests/quirks.html new file mode 100644 index 0000000..21ecd83 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/quirks.html @@ -0,0 +1,5 @@ + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/BgIframe.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/BgIframe.html new file mode 100644 index 0000000..105d1d6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/BgIframe.html @@ -0,0 +1,141 @@ + + + + doh.robot bgIframe Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Calendar_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Calendar_a11y.html new file mode 100644 index 0000000..15e9a61 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Calendar_a11y.html @@ -0,0 +1,382 @@ + + + + doh.robot Calendar A11Y Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/ColorPalette.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/ColorPalette.html new file mode 100644 index 0000000..465892e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/ColorPalette.html @@ -0,0 +1,249 @@ + + + + doh.robot ColorPalette Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_a11y.html new file mode 100644 index 0000000..3774837 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_a11y.html @@ -0,0 +1,460 @@ + + + + doh.robot Dialog A11Y Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_focusDestroy.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_focusDestroy.html new file mode 100644 index 0000000..cbd1f8c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_focusDestroy.html @@ -0,0 +1,57 @@ + + + + doh.robot dialog focus destroy Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_mouse.html new file mode 100644 index 0000000..93e8d0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Dialog_mouse.html @@ -0,0 +1,255 @@ + + + + doh.robot Dialog Mouse Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/InlineEditBox.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/InlineEditBox.html new file mode 100644 index 0000000..b1766fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/InlineEditBox.html @@ -0,0 +1,378 @@ + + + + doh.robot InlineEditBox Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_a11y.html new file mode 100644 index 0000000..832922e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_a11y.html @@ -0,0 +1,557 @@ + + + + doh.robot Menu Keyboard Tests + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_iframe.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_iframe.html new file mode 100644 index 0000000..f3a8b5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_iframe.html @@ -0,0 +1,224 @@ + + + + doh.robot Menu iframe Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_mouse.html new file mode 100644 index 0000000..d989af6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Menu_mouse.html @@ -0,0 +1,557 @@ + + + + doh.robot Menu Mouse Tests + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/TitlePane.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/TitlePane.html new file mode 100644 index 0000000..b0bc360 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/TitlePane.html @@ -0,0 +1,302 @@ + + + + doh.robot TitlePane Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Toolbar.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Toolbar.html new file mode 100644 index 0000000..8a1dd8b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Toolbar.html @@ -0,0 +1,281 @@ + + + + doh.robot Toolbar Test + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/TooltipDialog_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/TooltipDialog_a11y.html new file mode 100644 index 0000000..d44a3d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/TooltipDialog_a11y.html @@ -0,0 +1,396 @@ + + + + doh.robot TooltipDialog A11y Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/TooltipDialog_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/TooltipDialog_mouse.html new file mode 100644 index 0000000..c2592ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/TooltipDialog_mouse.html @@ -0,0 +1,388 @@ + + + + doh.robot TooltipDialog Mouse Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_a11y.html new file mode 100644 index 0000000..a68d4f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_a11y.html @@ -0,0 +1,361 @@ + + + + doh.robot Tooltip A11Y Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_mouse.html new file mode 100644 index 0000000..d71fd69 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_mouse.html @@ -0,0 +1,157 @@ + + + + doh.robot Tooltip Mouse Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_mouse_quirks.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_mouse_quirks.html new file mode 100644 index 0000000..c205b0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/Tooltip_mouse_quirks.html @@ -0,0 +1,55 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-deferredConnect.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-deferredConnect.html new file mode 100644 index 0000000..36c8342 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-deferredConnect.html @@ -0,0 +1,74 @@ + + + + doh.robot deferred connect tests + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-ondijitclick_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-ondijitclick_a11y.html new file mode 100644 index 0000000..9ab7420 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-ondijitclick_a11y.html @@ -0,0 +1,193 @@ + + + + + Test Dijit Internal Event: "ondijitclick" + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-ondijitclick_mouse.html b/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-ondijitclick_mouse.html new file mode 100644 index 0000000..9ddaebe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/robot/_Widget-ondijitclick_mouse.html @@ -0,0 +1,77 @@ + + + + + Test Dijit Internal Event: "ondijitclick" + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/runTests.html b/js/dojo-release-1.7.2-src/dijit/tests/runTests.html new file mode 100644 index 0000000..163bde1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/strict.html b/js/dojo-release-1.7.2-src/dijit/tests/strict.html new file mode 100644 index 0000000..37f8d75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/strict.html @@ -0,0 +1,7 @@ + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Calendar.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Calendar.html new file mode 100644 index 0000000..2e4deb6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Calendar.html @@ -0,0 +1,86 @@ + + + + + Calendar Widget Test + + + + + + + + + + + + + + + + + + + +

          Dijit Calendar Test

          + + + + +

          + disable weekends +

          + +

          Customized template with "today" button

          +
          + + + +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_CalendarLite.html b/js/dojo-release-1.7.2-src/dijit/tests/test_CalendarLite.html new file mode 100644 index 0000000..ab5eb65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_CalendarLite.html @@ -0,0 +1,43 @@ + + + + + CalendarLite Widget Test + + + + + + + + + + + + + + + + + +

          Dijit CalendarLite Test

          + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_ColorPalette.html b/js/dojo-release-1.7.2-src/dijit/tests/test_ColorPalette.html new file mode 100644 index 0000000..e836756 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_ColorPalette.html @@ -0,0 +1,72 @@ + + + + + ColorPalette Test + + + + + + + + + + + + + + + + + +

          dijit.ColorPalette test:

          + +

          Large color palette (7x10), English tooltips:

          + +
          + Test color is: . + + +

          Small color palette (3x4), Spanish tooltips:

          + +
          + + +

          Default color palette (7x10) created programatically:

          +
          + +

          ColorPalette with value pre-selected, using old style parser parameters:

          + +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_ColorPalette_quirks.html b/js/dojo-release-1.7.2-src/dijit/tests/test_ColorPalette_quirks.html new file mode 100644 index 0000000..fc06de9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_ColorPalette_quirks.html @@ -0,0 +1,5 @@ + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Declaration.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Declaration.html new file mode 100644 index 0000000..2a39802 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Declaration.html @@ -0,0 +1,156 @@ + + + + + + + Dojo Toolkit - Declaration test + + + + + + + + + + + + + + + +

          Simple macro:

          +

          (Check to make sure that links contain employee number) +

          + ${name} + update + delete +
          +
          +
          +
          + +

          Using data-dojo-attach-event, data-dojo-attach-point

          +
          + XXXXXX + +
          + + + +

          Extending another widget

          +

          HideButton2 extends HideButton (above) and changes the template (but keeps the onclick handler).

          + + YYYYYY + + + + +

          Using dojo/method:

          +
          + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + +

          Using dojo/connect:

          +
          + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + +

          data-dojo-attach-event on root node

          +
          + + click me +
          + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Declaration_1.x.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Declaration_1.x.html new file mode 100644 index 0000000..464f9da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Declaration_1.x.html @@ -0,0 +1,131 @@ + + + + + Dojo Toolkit - Declaration test + + + + + + + + + + + + + + + +

          Simple macro:

          +

          (Check to make sure that links contain employee number) +

          + ${name} + update + delete +
          +
          +
          +
          + +

          Using dojoAttachEvent, dojoAttachPoint

          +
          + XXXXXX + +
          + + + +

          Extending another widget

          +

          HideButton2 extends HideButton (above) and changes the template (but keeps the onclick handler).

          + + YYYYYY + + + + +

          Using dojo/method:

          +
          + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + +

          Using dojo/connect:

          +
          + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Dialog.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Dialog.html new file mode 100644 index 0000000..133dfe7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Dialog.html @@ -0,0 +1,621 @@ + + + + + Dialog Widget Dojo Tests + + + + + + + + + + + + + + + + + +

          Dijit layout.Dialog tests

          + | + +
          +
          Introductory information spoken by screen reader if aria-describedby is + added to the declaration of dialog above with value equal to the id of the container element for this text. This technique + will work in Dojo 1.4.
          + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          + + + | + + + + + | + +
          +
          +
          +

          + This is the first tab. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +

          + This is the second tab. +

          +

          + Make it overflow. ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +
          + + | + +
          + + + +
          + + + +
          + + + +
          +

          You should not be able to
          drag this dialog

          +
          + + + +
          + I am done entering data: + +
          + + | + +
          +

          + The pane has some text, plus two embedded layout widgets, which should + appear correctly even though the pane is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          + + + + +
          +
          +
          Introductory information spoken by screen reader if aria-describedby is + added to the declaration of dialog above with value equal to the id of the container element for this text. This technique + will work in Dojo 1.4.
          +
          + + +
          + + +
          +
          + + +
          + +
          +
          Introductory information spoken by screen reader if aria-describedby is + added to the declaration of dialog above with value equal to the id of the container element for this text. This technique + will work in Dojo 1.4.
          + + + + + + + + + + + + + + + + + +
          +
          +
          + + + + + +
          + + +
          + + +
          +
          + +
          + Best Pet + + - + + +
          +
          +
          + + +
          Show Self-Destruct Dialog (unfocusable div)
          + + | + +

          (scroll down to see more links to click, for testing positioning / scroll handling)

          + +

          + Here's a form. Try clicking the programatic dialog link, then focusing on the form. + After the dialog closes focus should be returned to the form +

          + +
          + +
          + +
          + +
          + + +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          +
          [spacer]
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + +

          + | + + Show Dialog +

          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Dialog_focusDestroy.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Dialog_focusDestroy.html new file mode 100644 index 0000000..955023b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Dialog_focusDestroy.html @@ -0,0 +1,73 @@ + + + + + Dialog Widget Dojo Tests + + + + + + + + + + + + + + + + +

          Dijit layout.Dialog tests

          + +

          If you input this box, you can type. You should be able to type and use backspace/etc + when you destroy the visible dialog. refs #5351 +

          + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_InlineEditBox.html b/js/dojo-release-1.7.2-src/dijit/tests/test_InlineEditBox.html new file mode 100644 index 0000000..f7ae1e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_InlineEditBox.html @@ -0,0 +1,250 @@ + + + + + Inline Edit Box Test + + + + + + + + + + + + + + + + +

          Dijit InlineEditBox Test

          + + + + + + +

          Form Letter with blanks

          +
          +

          +

          + Dear , +

          +

          + Thank you for your recent order. + Please remit +  for + your purchase of +  deluxe +  on +  in + . +

          +

          +

          + Sincerely, +

          + +
          +
          + +

          Form Letter with predefined values, and no auto-save

          +
          +

          + Bob Vance Refrigeration +

          +

          + Dear John, +

          +

          + Thank you for your recent order. + Please remit + $2,000 + for your purchase of + 3 + deluxe + refrigerators + on + + 01/05/2007 + in + + Pennsylvania + . +

          +

          + We sincerely appreciate your business and hope we can do business again. +

          +

          + Sincerely, +

          + Bob Vance +
          +
          + + +

          Inline-block Text (of 400px width)

          +
          + The following section uses inline block text of 400px. + When clicking the editable text it should bring up an editor which is also 400px wide. +
          + (before plain inline)
          hello world
          (after plain inline) +
          + (before editable inline) +
          + hello world +
          + (after editable inline) +
          + +

          Pararagraph

          + (before plain paragraph) +

          + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis +imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem +nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in +massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In +pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra +quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, +felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut +quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla +rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut +semper velit ante id metus. Praesent massa dolor, porttitor sed, +pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit +tortor pharetra congue. Suspendisse pulvinar. +

          + (before editable paragraph. the editable paragraph has Save/Cancel buttons when open.) +

          + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis +imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem +nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in +massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In +pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra +quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, +felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut +quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla +rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut +semper velit ante id metus. Praesent massa dolor, porttitor sed, +pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit +tortor pharetra congue. Suspendisse pulvinar. +

          + These buttons will + / + + the InlineEditBox above. +
          + +

          Editor

          +
          + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis +imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem +nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in +massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In +pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra +quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, +felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut +quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla +rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut +semper velit ante id metus. Praesent massa dolor, porttitor sed, +pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit +tortor pharetra congue. Suspendisse pulvinar. +
          +

          + Note: since the Editor may return a result containing one or more <p> nodes, + don't make the InlineEditBox itself a <p> because that would cause nested + <p>s, which is illegal, and messes up IE +

          + +

          FilteringSelect (no down arrow, and save/cancel buttons):

          + before + + Indiana + + + after +
          + +

          Programmatically created:

          + before block
          Click here to edit a block programmatically created inline edit region
          after + +
          +

          Complex renderAsHtml="false"

          +
          + <B>not bold</B>&lt;input&gt; +
          +
          +

          Complex renderAsHtml="true"

          +
          + <B>not bold</B>bold&lt;input&gt; +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Menu.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Menu.html new file mode 100644 index 0000000..d74d7fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Menu.html @@ -0,0 +1,475 @@ + + + + + + + Menu System Test + + + + + + + + + + + + + + + + + + +
          +
          Context Menu
          +
          +
          Disabled Item
          +
          Cut
          +
          Copy
          +
          Paste
          +
          +
          + Enabled Submenu + +
          +
          + Disabled Submenu + +
          +
          + Different popup +
          +
          +
          +
          Checked
          +
          Not Checked
          +
          Checked Disabled
          +
          +
          + Bigger Submenu +
          +
          Item One
          +
          Item Two
          +
          Item Three
          +
          Item Four
          +
          Item Five
          +
          Item Six
          +
          Item Seven
          +
          Item Eight
          +
          Item Nine
          +
          Item Ten
          +
          +
          +
          + +
          +
          Left Click Menu
          +
          Enabled Item
          +
          Disabled Item
          +
          +
          Cut
          +
          Copy
          +
          Paste
          +
          +
          + Enabled Submenu +
          +
          Submenu Item One
          +
          Submenu Item Two
          +
          + Deeper Submenu +
          +
          Sub-sub-menu Item One
          +
          Sub-sub-menu Item Two
          +
          +
          +
          +
          +
          + Disabled Submenu +
          +
          Submenu Item One
          +
          Submenu Item Two
          +
          +
          +
          + Different popup +
          +
          +
          + + + + + + + + + + + +
          + + +
          + +

          Dijit Menu System Test

          + +

          This page contains:

          +
            +
          • "Navigation bar" Menu widget on left, a.k.a vertical MenuBar +
          • MenuBar on top +
          • page level context menu (right-click anywhere on page) +
          • form widget context menu (right-click on textbox widget)
          • +
          • left click context menu (left click on input on far right) +
          • Example of programatically created menu +
          • Note: while some accelerator (shortcut) keys are displayed in the context menu, they are not actually hooked up to the corresponding actions (if any), they need to be setup explicitly by the user +
          + +

          Form

          + +
          +

          + left click to open the menu for this input:
          + Note: because of the window contextMenu, make sure you get
          + the right menu by verifying the left
          + click one starts with "Left Click Menu"
          + at the very top. + +

          + +
          + +
          + +
          + +
          + Click button below to create special menu on this div. +
          + + + +
          +

          (this space intentionally left blank to aid testing with controls + at the bottom of the browser window)

          +
          + +

          + +

          See also: form/test_Button + (PopupMenu is used with DropDownButton and ComboButton)

          + +

          Mouse opening tests

          + +
            +
          • Right click on the client area of the page (ctrl-click for Macintosh). Menu should open.
          • +
          • Right click on each of the form controls above. Menu should open.
          • +
          • Right click near the righthand window border. Menu should open to the left of the pointer.
          • +
          • Right click near the bottom window border. Menu should open above the pointer.
          • +
          + + +

          Mouse hover tests

          + +
            +
          • Hover over the first item with the pointer. Item should highlight and get focus.
          • +
          • Hover over the second (disabled) item. Item should highlight and get focus.
          • +
          • Seperator items should not highlight on hover - no items should highlight in this case.
          • +
          + + +

          Mouse click tests

          + +
            +
          • Click on the first menu item. console.log should log the message "Hello world". The menu should dissapear.
          • +
          • Click on the second menu item (disabled). Should not do anything - focus should remain on the disabled item.
          • +
          • Click anywhere outside the menu. Menu should close. Focus will be set by the browser based on where the user clicks.
          • +
          + + +

          Mouse submenu tests

          + +
            +
          • Hover over the "Enabled Submenu" item. Item should highlight and then pop open a submenu after a short (500ms) delay.
          • +
          • Hover over any of the other menu items. Submenu should close immediately and deselect the submenu parent item. The newly hovered item should become selected.
          • +
          • Hover over the "Disabled Submenu" item. Item should highlight, but no submenu should appear.
          • +
          • Clicking on the "Enabled Submenu" item before the submenu has opened (you'll have to be quick!) should immediatley open the submenu.
          • +
          • Clicking on the "Enabled Submenu" item after the submenu has opened should have no effect - the item is still selected and the submenu still open.
          • +
          • Hover over submenu item 1. Should select it - the parent menu item should stay selected also.
          • +
          • Hover over submenu item 2. Should select it - the parent menu item should stay selected also.
          • +
          + + +

          Keyboard opening tests

          + +
            +
          • On Windows: press shift-f10 with focus on any of the form controls. Should open the menu.
          • +
          • On Windows: press the context menu key (located on the right of the space bar on North American keyboards) with focus on any of the form controls. Should open the menu.
          • +
          • On Firefox on the Mac: press ctrl-space with focus on any of the form controls. Should open the menu.
          • +
          + + +

          Keyboard closing tests

          + +
            +
          • Open the menu.
          • +
          • Press tab. Should close the menu and return focus to where it was before the menu was opened.
          • +
          • Open the menu.
          • +
          • Press escape. Should close the menu and return focus to where it was before the menu was opened.
          • +
          + + +

          Keyboard navigation tests

          + +
            +
          • Open the menu.
          • +
          • Pressing up or down arrow should cycle focus through the items in that menu.
          • +
          • Pressing enter or space should invoke the menu item.
          • +
          • Disabled items receive focus but no action is taken upon pressing enter or space.
          • +
          + + +

          Keyboard submenu tests

          + +
            +
          • Open the menu.
          • +
          • The first item should become selected.
          • +
          • Press the right arrow key. Nothing should happen.
          • +
          • Press the left arrow key. Nothing should happen.
          • +
          • Press the down arrow until "Enabled Submenu" is selected. The submenu should not appear.
          • +
          • Press enter. The submenu should appear with the first item selected.
          • +
          • Press escape. The submenu should vanish - "Enabled Submenu" should remain selected.
          • +
          • Press the right arrow key. The submenu should appear with the first item selected.
          • +
          • Press the right arrow key. Nothing should happen.
          • +
          • Press the left arrow key. The submenu should close - "Enabled Submenu" should remain selected.
          • +
          • Press the left arrow key. The menu should not close and "Enabled Submenu" should remain selected.
          • +
          • Press escape. The menu should close and focus should be returned to where it was before the menu was opened.
          • +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Menu_iframe.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Menu_iframe.html new file mode 100644 index 0000000..0e840cf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Menu_iframe.html @@ -0,0 +1,44 @@ + + + + + Menu iframe test + + + + + + +
          filler div to offset iframe position (for testing)
          +
          + This is a position:relative div containing an iframe. + + End of div. +
          +
          + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_TitlePane.html b/js/dojo-release-1.7.2-src/dijit/tests/test_TitlePane.html new file mode 100644 index 0000000..2383a11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_TitlePane.html @@ -0,0 +1,193 @@ + + + + + TitlePane Test + + + + + + + + + + + + + + + +

          Dijit TitlePane Test

          + + + +

          Test #1: plain title pane, width=300px

          +
          + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. +
          + + +

          Test #2: title pane with form, width=300px

          + +
          +
          +
          +
          +
          +
          +
          +
          + +

          Test #3: initially closed pane

          +
          +
          +
          +
          +
          +
          + +

          And a TabContainer, to make sure it lays out correctly:

          + +
          + + +

          Test #4: title pane with href (initially closed)

          +

          The pane should open to "Loading..." message and then 3 seconds later it should slide open more to show loaded data.

          +
          + Loading... +
          + +

          Test #5: title pane with href (initially closed)

          +

          The pane should start to open to "Loading..." but halfway through href data will be loaded, and it should expand correctly.

          +
          + Loading... +
          + +

          Test #6: nested title pane

          +
          +

          This is a title pane, containing another title pane ... +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. +More Ipsum... + +

          +

          And this is the inner title pane... +

          Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +

          + +

          And this is the closing line for the outer title pane. +

          + +

          Test #7: subclassed title pane (only arrow is selectable and focusable)

          +
          + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. +
          + + + + + +
          + Here's some text below the title panes (to make sure that closing a title pane releases the space that the content was taking up) +
          +

          Test #8: locked open title pane

          +
          + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. +
          + +

          Test #9: TitlePane in AccordionContainer

          +
          +
          + Here's a closed title pane: +
          +
          + and an open one: +
          +
          +
          +
          + Here's a closed title pane: +
          +
          + and an open one: +
          +
          +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Toolbar.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Toolbar.html new file mode 100644 index 0000000..3d780d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Toolbar.html @@ -0,0 +1,161 @@ + + + + + Dojo Toolbar Widget Test + + + + + + + + + + + + + + + +

          Toolbar test

          + + + ${label}: + + +

          Toolbar from markup

          + + +
          Cut
          Copy
          Bold
          Italic
          + +
          + TooltipDialog +
          + + + + + + + + + + + + +
          +
          +
          + ColorPalette +
          +
          + Foreground +
          +
          + Menu +
          +
          Save
          +
          Save As
          +
          +
          + Menu2 +
          +
          Save
          +
          Save As
          +
          +
          Ordered list
          + + +

          Toolbar from script with icons only

          +
          + +

          Toolbar from script with text and icons

          +
          + +

          Toolbar from script with text only

          +
          + + +

          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_Tooltip.html b/js/dojo-release-1.7.2-src/dijit/tests/test_Tooltip.html new file mode 100644 index 0000000..88c84f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_Tooltip.html @@ -0,0 +1,233 @@ + + + + + Dojo Tooltip Widget Test + + + + + + + + + + + + + + + + +

          Tooltip test

          + +

          Mouse-over or focus the items below to test tooltips.

          + + + + + + + + + + + +
          + Change tooltip positioning search list: + + Set background color: + + Prompt message test (for quirks mode): +
          + + +
          + Current: default (unchanged) +
          +
          +
          +
          + +
          + + + + tooltip for cut + tooltip for copy + tooltip for paste + +
          + hover me for tooltip + tooltip on TitlePane span +
          + + +
          + focusable text + + + rich formatting + ! + + +
          + plain text (not focusable) + + keyboard users can not access this tooltip + + anchor + tooltip on a link +

          + + this text has a programmatically created tooltip +
          + + + tooltip on a button + tooltip from "button w/tooltip". + + + Test tooltip on right aligned element. Tooltip should flow to the left --> + + + + tooltip on a select
          + two line tooltip. +
          +
          + +

          + +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + s1 text


          + s2 text


          + s3 text


          + s4 text


          + s5 text


          +
          + + + + tooltip for #1
          + long long long long long long long long long long long text
          + make sure that this works properly with a really narrow window +
          + + tooltip for #2 + tooltip for #3 + tooltip for #4 + tooltip for #5 + tooltip for #6 + + s1 tooltip + s2 tooltip + s3 tooltip + s4 tooltip + s5 tooltip + +

          One Tooltip for multiple connect nodes

          + multi tooltip + multi1
          multi2 + +

          One Tooltip for multiple connect nodes w/ dojoType

          + + multi1
          multi2 + + +

          Dynamic target tooltip

          +
          + + + t1 text
          + + + t2 text
          + + + t3 text
          + + + t4 text
          + + + t5 text
          +
          +
          + Tooltip hidden (initial) + + Dynamic target tooltip + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_TooltipDialog.html b/js/dojo-release-1.7.2-src/dijit/tests/test_TooltipDialog.html new file mode 100644 index 0000000..af1f9c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_TooltipDialog.html @@ -0,0 +1,459 @@ + + + + + TooltipDialog Widget Tests + + + + + + + + + + + + + + + + +

          dijit.TooltipDialog tests

          + +
          + Show Tooltip Dialog +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          inline
          + +
          + +
          + +
          +
          Note: This tooltip dialog has a bunch of nested drop downs for testing keyboard and click handling
          +
          +
          | + +
          + Show Tooltip Dialog with TabContainer +
          +
          +
          +

          + This is the first tab. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +

          + This is the second tab. +

          +

          + ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +
          +
          | + +
          + Test slowloading HREF Tooltip Dialog +
          +
          | + +
          + What is this? +
          +
          [close] + +
          +
          + Important! This is a tooltip dialog with just text! It could be used + to provide help. It will stay open until the user explicitly closes it via pressing escape, clicking [close] or by + clicking somewhere else on the page. To make certain a screen reader will speak this text (at least in Firefox 3), + the div containing the text was given an + ARIA role of alert. In the future the tooltip + dialog may be given a role of alertdialog. +
          + +
          +
          + + + + + +

          (scroll down to see more links to click, for testing positioning / scroll handling)

          + +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          +
          + dropdown at right +
          +
          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis
          +
          +
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          + +
          + Show Tooltip Dialog pointing upwards, with links +
          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + (will go up if there isn't enough space on the bottom of the screen) + +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_UIWindowIssue_child.html b/js/dojo-release-1.7.2-src/dijit/tests/test_UIWindowIssue_child.html new file mode 100644 index 0000000..a4b5dd9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_UIWindowIssue_child.html @@ -0,0 +1,47 @@ + + + + + Focus Issue Child + + + + + + this frame is for loading script only + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_UIWindowIssue_main.html b/js/dojo-release-1.7.2-src/dijit/tests/test_UIWindowIssue_main.html new file mode 100644 index 0000000..e34f053 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_UIWindowIssue_main.html @@ -0,0 +1,75 @@ + + + + + Focus Issue + + + + + + + +

          To test: +

            +
          • Right mouse click anywhere on the page to see the context menu
          • +
          • Mouse-over "Enabled Submenu"
          • +
          • Make sure the submenu is positioned properly
          • +
          +

          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/test_bgIframe.html b/js/dojo-release-1.7.2-src/dijit/tests/test_bgIframe.html new file mode 100644 index 0000000..c88754f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/test_bgIframe.html @@ -0,0 +1,121 @@ + + + + + + + Dojo Toolkit - Background Iframe test + + + + + + + + + + + + + + + + + This is one tooltip. + + + This is another tooltip. A little longer... + + + This is one tooltip. + + + This is another tooltip. A little longer... + + + + + + + + + + + +
          + +
          +
          + This <select> will disappear on IE6 + when the dialog is displayed. + But the dialog's iframe shouldn't make it disappear because they shouldn't overlap. +
          + +

          + +
          Mouse over this to see the tooltip
          +
          +
          Mouse over this to see a different tooltip
          +
          + + + + + + +
          + + + + + + + + + +
          + +
          +
          + This select will disappear on IE6 + when the dialog is displayed. + But the dialog's iframe shouldn't make it disappear because they shouldn't overlap. +
          + +

          + +
          Mouse over this to see the tooltip
          +
          +
          Mouse over this to see a different tooltip
          +
          + +
          +
          + Hello! +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/CustomLabel.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/CustomLabel.html new file mode 100644 index 0000000..c669260 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/CustomLabel.html @@ -0,0 +1,92 @@ + + + + + Dijit Tree Custom Label Test + + + + + + + + + + + + + + + + +

          Dijit Tree Custom Label Test

          + +
          + +

          Standard label (state names)

          +
          +
          + +

          LabelAttr (state abbreviation)

          +
          +
          + +

          Custom label via callback

          +
          + +
          +
          + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/Tree.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/Tree.html new file mode 100644 index 0000000..410f282 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/Tree.html @@ -0,0 +1,396 @@ + + + + dijit.Tree Automatic Tests + + + + + + + + + + + + + + + + + + + +

          Dijit.Tree automated tests

          +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/Tree_with_JRS.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/Tree_with_JRS.html new file mode 100644 index 0000000..39d7655 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/Tree_with_JRS.html @@ -0,0 +1,132 @@ + + + + dijit.Tree Automatic Tests + + + + + + + + + + + + + + + + + + + +

          Dijit.Tree automated tests

          +
          +
          + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/module.js b/js/dojo-release-1.7.2-src/dijit/tests/tree/module.js new file mode 100644 index 0000000..44f1d38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/module.js @@ -0,0 +1,22 @@ +dojo.provide("dijit.tests.tree.module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"), + test_robot = true; + + doh.registerUrl("dijit.tests.tree.CustomLabel", dojo.moduleUrl("dijit", "tests/tree/CustomLabel.html"), 999999); + doh.registerUrl("dijit.tests.tree.Tree", dojo.moduleUrl("dijit", "tests/tree/Tree.html"), 999999); + doh.registerUrl("dijit.tests.tree.Tree_with_JRS", dojo.moduleUrl("dijit", "tests/tree/Tree_with_JRS.html"), 999999); + + if(test_robot){ + doh.registerUrl("dijit.tests.tree.robot.Tree_a11y", dojo.moduleUrl("dijit","tests/tree/robot/Tree_a11y.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.tree.robot.Tree_DnD", dojo.moduleUrl("dijit","tests/tree/robot/Tree_dnd.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.tree.robot.Tree_selector", dojo.moduleUrl("dijit","tests/tree/robot/Tree_selector.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.tree.robot.Tree_selector_only", + dojo.moduleUrl("dijit","tests/tree/robot/Tree_selector.html?controller=selector&"+userArgs.substr(1)), 999999); + doh.registerUrl("dijit.tests.tree/robot.Tree_DnD_multiParent", dojo.moduleUrl("dijit","tests/tree/robot/Tree_dnd_multiParent.html"+userArgs), 999999); + doh.registerUrl("dijit.tests.tree.robot.Tree_v1", dojo.moduleUrl("dijit","tests/tree/robot/Tree_v1.html"+userArgs), 999999); + } +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/node1.1 b/js/dojo-release-1.7.2-src/dijit/tests/tree/node1.1 new file mode 100644 index 0000000..21d1923 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/node1.1 @@ -0,0 +1,4 @@ +{ id: 'node1.1',name:'node1.1', someProperty:'somePropertyA1', children: [ + { $ref: 'node1.1.1', name: 'node1.1.1'}, + { $ref: 'node1.1.2', name: 'node1.1.2'} +]} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/node1.2 b/js/dojo-release-1.7.2-src/dijit/tests/tree/node1.2 new file mode 100644 index 0000000..b221fab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/node1.2 @@ -0,0 +1 @@ +{ id: 'node1.2',name:'node1.2', someProperty:'somePropertyA2'} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/places.json b/js/dojo-release-1.7.2-src/dijit/tests/tree/places.json new file mode 100644 index 0000000..0ea6e7a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/places.json @@ -0,0 +1,29 @@ +{ + identifier: 'id', + label: 'name', + items: [ + { id: 'root', children: [ + {_reference: 'h0'}, + {_reference: 'h1'}, + {_reference: 'h2'}, + {_reference: 'h3'}, + {_reference: 'h4'} ]}, + { id: 'h0', name:'South Africa', type: 'header', children:[ {_reference: 'p0'}] }, + { id: 'h1', name:'Ireland', type: 'header', children:[ {_reference: 'p1'}, {_reference: 'p2'}] }, + { id: 'h2', name:'France', type: 'header', children:[ {_reference: 'p3'}, {_reference: 'p4'}] }, + { id: 'h3', name:'Canada', type: 'header', + children:[ {_reference: 'p5'}, {_reference: 'p6'}, {_reference: 'p7'}, {_reference: 'p8'} ] }, + { id: 'h4', name:'Korea', type: 'header', children:[ {_reference: 'p9'}] }, + + { id: 'p0', name:'Joburg', type: 'place'}, + { id: 'p1', name:'Knocknahilan', type: 'place' }, + { id: 'p2', name:'Kinsale', type: 'place' }, + { id: 'p3', name:'Lyon', type: 'place' }, + { id: 'p4', name:'Nice', type: 'place' }, + { id: 'p5', name:'Toronto', type: 'place'}, + { id: 'p6', name:'Hudson Bay', type: 'place'}, + { id: 'p7', name:'Quebec', type: 'place' }, + { id: 'p8', name:'Polar Bear County', type: 'place' }, + { id: 'p9', name:'Jeonju', type: 'place' } + ] +} diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_a11y.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_a11y.html new file mode 100644 index 0000000..824bf21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_a11y.html @@ -0,0 +1,784 @@ + + + + doh.robot Tree Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_dnd.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_dnd.html new file mode 100644 index 0000000..ee6517b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_dnd.html @@ -0,0 +1,702 @@ + + + + doh.robot Tree DnD Test + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_dnd.js b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_dnd.js new file mode 100644 index 0000000..c4c1675 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_dnd.js @@ -0,0 +1,131 @@ +/* + * Helper functions for Tree_dnd.html and Tree_dnd_multiParent.html tests + */ + +function setup(){ + doh.register("setup screen", function(){ + // Hide boilerplate text so it's easier to drag on small screen + dojo.query("h1,h2,p").style("display", "none"); + + // Disable auto-scrolling because otherwise the viewport scrolls as doh.robot.mouseMoveAt() + // moves the mouse, literally making the the drop target a moving target + // (and mouseMoveAt() doesn't take this possibility into account). + dojo.global.dojo.dnd.autoScrollNodes = function(){}; + + // Scroll viewport to (try to) make sure that both tree and drag-source + // are simultaneously in view. + var scroll = dojo.position("1001").y; + dojo.body().parentNode.scrollTop = scroll; // works on FF + dojo.body().scrollTop = scroll; // works on safari + }); + + // Wait for trees to load + doh.register("wait for load", dojo.map(["collectionsTree", "itemTree"], function(id){ + return { + name: id, + timeout: 10000, + runTest: function(){ + var + tree = dijit.byId(id), + d, handler; + if(!tree.rootNode){ + d = new doh.Deferred(); + handler = tree.connect(tree, "onLoad", + function(){ + tree.disconnect(handler); + d.callback(true); + } + ); + return d; + } + } + }; + })); +} + +function findTreeNode(/*String*/ treeId, /*String*/ label){ + // summary: + // Find the TreeNode with the specified label in the given tree. + // Assumes that there's only one TreeNode w/that label (i.e. it + // breaks if certain items have multiple parents and appear in the + // tree multiple times) + var nodes = dojo.query(".dijitTreeLabel", treeId); + for(var i=0; i + + + doh.robot Tree DnD Multi-parent Test + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_selector.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_selector.html new file mode 100644 index 0000000..b44b4a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_selector.html @@ -0,0 +1,241 @@ + + + + doh.robot Tree selector Test + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_v1.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_v1.html new file mode 100644 index 0000000..1512512 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/robot/Tree_v1.html @@ -0,0 +1,269 @@ + + + + doh.robot Tree_v1 Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/runTests.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/runTests.html new file mode 100644 index 0000000..5ecdbb1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree.html new file mode 100644 index 0000000..3ecaeac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree.html @@ -0,0 +1,176 @@ + + + + + Dijit Tree Test + + + + + + + + + + + + + + + + + +

          Dijit Tree Test

          + +
          +
          + +

          Tree with hardcoded root node (not corresponding to any item in the store)

          +

          + Clicking a folder node will open/close it (openOnclick==true), + and clicking a leaf node will log a message to the console. +

          +
          + + + +
          + + + +

          A rootless tree (no "continents" node) with context menus, and custom icons

          + +
            +
          • Enabled Item
          • +
          • Disabled Item
          • +
          • Cut
          • +
          • Copy
          • +
          • Paste
          • +
          • + Enabled Submenu + +
          • +
          • + Disabled Submenu + +
          • +
          + +
          + + + + +
          + +

          Double click, expand on load, direct style setting, tooltip test

          +

          + Double-Clicking a folder node will open/close it (openOnDblClick==true), + and clicking or Double Clicking a leaf node will log a message to the console. +

          +
          + + + + + +
          + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree_DnD.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree_DnD.html new file mode 100644 index 0000000..b924716 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree_DnD.html @@ -0,0 +1,214 @@ + + + + + Dijit Tree Test + + + + + + + + + + + + + + + + + + +

          Dijit Tree Test - Drag And Drop Support

          + +
          + + + + + + + + + + + +
          +

          Custom

          +

          Should add this category to the store. The second parameter is the value for numberOfItems.

          +
          +
          Add Category
          +
          +
          +

          Items:

          +

          List of Items to be categorized

          +

          +
          Apple
          +
          Orange
          +
          Banana
          +
          Tomato
          +
          Pepper
          +
          Wheat
          +
          Corn
          +
          Spinach
          +
          Cucumber
          +
          Carrot
          +
          Potato
          +
          Grape
          +
          Lemon
          +
          Lettuce
          +
          Peanut
          +
          +
          +

          Collection Count Summary

          +

          + You can't drop items onto this tree, but you can reorder categories. The between threshold + is set to 5, so if you are near the top or bottom of a node the drop will be above or below it. +

          +
          +
          +
          +

          Collection

          +

          + Drop items from above list onto this tree, only on to categories or between other items; should fail to let you drop on other items. + Can also move items within this tree. The drag threshold is set to 8, between threshold is set to 5, so you have a few pixels + of buffer before drag operations start. +

          +
          +
          +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree_v1.html b/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree_v1.html new file mode 100644 index 0000000..78a6fc7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/test_Tree_v1.html @@ -0,0 +1,123 @@ + + + + + Dijit Tree V1 API Test + + + + + + + + + + + + + + + + +

          Dijit Tree V1 API Test

          +

          + This file is for testing the old Tree API's, where the store is specified directly + rather than specifying a model which connects to a store. +

          +
          + +

          Tree with hardcoded root node (not corresponding to any item in the store)

          +

          Clicking a folder node will open/close it (openOnclick==true), and clicking a leaf node will change the display name of the leaf node.

          +
          + +
          + + + +

          A rootless tree (no "continents" node) with context menus, and custom icons

          + + + +
          + + + +
          + + + diff --git a/js/dojo-release-1.7.2-src/dijit/tests/tree/treeTestRoot b/js/dojo-release-1.7.2-src/dijit/tests/tree/treeTestRoot new file mode 100644 index 0000000..4a9adf1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tests/tree/treeTestRoot @@ -0,0 +1,10 @@ +[ + { id: 'node1', name:'node1', someProperty:'somePropertyA', children:[ + { $ref: 'node1.1', name: 'node1.1', children: true}, + { $ref: 'node1.2', name: 'node1.2'} + ]}, + { id: 'node2', name:'node2', someProperty:'somePropertyB'}, + { id: 'node3', name:'node3', someProperty:'somePropertyC'}, + { id: 'node4', name:'node4', someProperty:'somePropertyA'}, + { id: 'node5', name:'node5', someProperty:'somePropertyB'} +] diff --git a/js/dojo-release-1.7.2-src/dijit/themes/a11y/README.txt b/js/dojo-release-1.7.2-src/dijit/themes/a11y/README.txt new file mode 100644 index 0000000..a809354 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/a11y/README.txt @@ -0,0 +1,3 @@ +This folder contains images used by all themes when in "high-contrast" mode. + +If you think you need to put something here, please talk to Becky or Bill first. \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/a11y/colors3x4.png b/js/dojo-release-1.7.2-src/dijit/themes/a11y/colors3x4.png new file mode 100644 index 0000000..5125cb6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/a11y/colors3x4.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/a11y/colors7x10.png b/js/dojo-release-1.7.2-src/dijit/themes/a11y/colors7x10.png new file mode 100644 index 0000000..d1354af Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/a11y/colors7x10.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/a11y/indeterminate_progress.gif b/js/dojo-release-1.7.2-src/dijit/themes/a11y/indeterminate_progress.gif new file mode 100644 index 0000000..66f535c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/a11y/indeterminate_progress.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar.css new file mode 100644 index 0000000..a0f9597 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar.css @@ -0,0 +1,284 @@ +/* Calendar + * + * Styling Calendar mainly includes: + * + * 1. Calendar container + * .dijitCalendar - main container + * .dijitCalendarHover / .dijitCalendarActive - states e.g. hover,active + * + * 2. Month + * .dijitCalendarMonthContainer + * .dijitCalendarMonthLabel + * .dijitCalendarDecrease / .dijitCalendarDecrease - icons for switching to previous/next month + * .dijitCalendarArrowActive .dijitCalendarDecrease - states e.g. hover,active + * + * 3. Date + * .dijitCalendarDayLabelTemplate - week day column header e.g. S M T W T F S + * .dijitCalendarDateTemplate - date label wrapper + * .dijitCalendarPreviousMonth .dijitCalendarDateLabel - special labels for previous or next month + * .dijitCalendarSelectedDate .dijitCalendarDateLabel - styles for selected date + * .dijitCalendarDisabledDate .dijitCalendarDateLabel - styles for disabled date + * .dijitCalendarActiveDate .dijitCalendarDateLabel - states e.g. hover,active + * + * 4. Year + * .dijitCalendarYearContainer + * .dijitCalendarYearLabel + * .dijitCalendarPreviousYear /.dijitCalendarNextYear + * .dijitCalendarNextYearHover / .dijitCalendarPreviousYearHover - states e.g. hover,active + * + * 5. Dropdown Month Menu + * .dijitCalendarMonthMenu - menu container + * .dijitCalendarMonthMenu .dijitCalendarMonthLabel - month label in menu item + * .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover - menu item hover state + */ +.claro .dijitCalendar { + border: solid 1px #b5bcc7; + background-color: #cfe5fa; + background-image: url("images/calendarContainerImages.png"); + background-position: 0 -448px; + background-repeat: repeat-x; + text-align: center; + padding: 6px 5px 3px 5px; + -moz-border-radius: 4px; + border-radius: 4px; + border-collapse: separate; +} +.dj_ie6 .claro .dijitCalendar { + background-image: none; +} +.claro .dijitCalendar img { + border: none; +} +.claro .dijitCalendarHover, .claro .dijitCalendar:hover, .claro .dijitCalendarActive { + /* treat dijitCalenderActive like hover since there's + * no concept of clicking a Calendar as a whole (although you can click things inside the calendar) + */ + + background-color: #abd6ff; + border: solid 1px #759dc0; +} +.claro .dijitCalendarMonthContainer th { + text-align: center; + padding-bottom: 4px; + vertical-align: middle; +} +.claro .dijitCalendarMonthLabel { + color: #000000; + font-size: 1.091em; + padding: 0 4px; +} +/* next/previous month arrows */ +.claro .dijitCalendarIncrementControl { + width: 18px; + height: 16px; + background-image: url("images/calendarArrows.png"); + background-repeat: no-repeat; +} +.dj_ie6 .claro .dijitCalendarIncrementControl { + background-image: url("images/calendarArrows8bit.png"); +} +.claro .dijitCalendarIncrease { + background-position: -18px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarDecrease, .claro .dijitCalendarArrow:hover .dijitCalendarDecrease { + background-position: -36px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarIncrease, .claro .dijitCalendarArrow:hover .dijitCalendarIncrease { + background-position: -55px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarDecrease, .claro .dijitCalendarArrow:active .dijitCalendarDecrease { + background-position: -72px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarIncrease, .claro .dijitCalendarArrow:active .dijitCalendarIncrease { + background-position: -91px 0; +} +.claro .dijitA11ySideArrow { + /* text +/- labels instead of arrow icons, for high contrast mode */ + + display: none; +} +.claro .dijitCalendarDayLabelTemplate { + padding-bottom: 0; + text-align: center; + border-bottom: 1px solid #b5bcc7; + padding: 0 3px 2px; +} +.claro .dijitCalendarDayLabel { + padding: 0 4px 0 4px; + font-weight: bold; + font-size: 0.909em; + text-align: center; + color: #000000; +} +.claro .dijitCalendarDateTemplate { + text-align: center; + background-color: #ffffff; + background-image: url("images/calendarContainerImages.png"); + background-position: 0 0; + background-repeat: repeat-x; + border-bottom: 1px solid #d3d3d3; + padding-top: 0; + font-size: 0.909em; + font-family: Arial; + font-weight: bold; + letter-spacing: .05em; + text-align: center; + color: #000000; +} +.dj_ie6 .claro .dijitCalendarDateTemplate { + background-image: none; +} +.claro .dijitCalendarPreviousMonth, .claro .dijitCalendarNextMonth { + background-color: #e5f2fe; + background-image: none; + border-bottom: solid 1px #d3d3d3; + /* todo: redundant with above .dijitCalendarDateTemplate rule */ +} +.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel { + text-decoration: none; + display: block; + padding: 3px 5px 3px 4px; + border: solid 1px #ffffff; + /* intentionally matches background-color, no visible border until hover/selection */ + + background-color: rgba(171, 212, 251, 0); + /* transparent causes black-flash animation problem on webkit */ + + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; +} +.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel, .claro .dijitCalendarNextMonth .dijitCalendarDateLabel { + color: #759dc0; + border-color: #e5f2fe; + /* intentionally matches background-color, no visible border until hover/selection */ + +} +.claro .dijitCalendarYearContainer { + vertical-align: middle; +} +.claro .dijitCalendarYearControl { + padding: 1px 2px 2px 2px; +} +.claro .dijitCalendarYearLabel { + padding: 2px 0 0 0; + margin: 0; + font-size: 1.17em; +} +.claro .dijitCalendarYearLabel span { + /* trying to center next/current/previous year vertically, doesn't work on IE6/7 though */ + + vertical-align: middle; +} +.claro .dijitCalendarSelectedYear { + padding: 0 3px; +} +.claro .dijitCalendarNextYear, .claro .dijitCalendarPreviousYear { + padding: 1px 6px 1px 6px; + font-size: 0.909em; +} +.claro .dijitCalendarSelectedYear { + font-size: 1.091em; + color: #000000; +} +/* End Normal Calendar Style */ +/* Hovered Calendar Style */ +.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel, .claro .dijitCalendarEnabledDate:hover .dijitCalendarDateLabel { + background-color: #abd6ff; + border: solid 1px #759dc0; + color: #000000; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.claro .dijitCalendarNextYearHover, +.claro .dijitCalendarNextYear:hover, +.claro .dijitCalendarPreviousYearHover, +.claro .dijitCalendarPreviousYear:hover { + color: #000000; + border: solid 1px #ffffff; + padding: 0 5px 0 5px; + /* reduced by 1 to make room for border */ + + background-color: #e5f2fe; +} +/* End Hovered Calendar Style */ +/* Active Calendar Style */ +.claro .dijitCalendarNextYearActive, .claro .dijitCalendarNextYear:active.claro .dijitCalendarPreviousYearActive, .claro .dijitCalendarPreviousYear:active { + border: solid 1px #759dc0; + padding: 0 5px 0 5px; + /* reduced by 1 to make room for border */ + + background-color: #7dbdfa; +} +.claro .dijitCalendarActiveDate .dijitCalendarDateLabel, .claro .dijitCalendarEnabledDate:active .dijitCalendarDateLabel { + background-image: url("images/calendarContainerImages.png"); + background-position: 0 -300px; + background-color: #7dbdfa; + border: solid 1px #ffffff; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image: none; +} +/* End Active Calendar Style */ +/* Selected Calendar Style */ +.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel { + color: #000000; + background-color: #abd6ff; + border-color: #759dc0; +} +/* End Selected Calendar Style */ +/* Disabled Calendar Style*/ +.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel { + color: #818181; + text-decoration: line-through; +} +/* End Disabled Calendar Style */ +/* Styling for month DropDownButton */ +.claro .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.claro .dijitCalendar .dijitButtonText { + padding: 1px 0 3px; + margin-right: -4px; +} +.claro .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0 3px 0 2px; + border: solid 1px #b5bcc7; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); +} +.claro .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode, .claro .dijitCalendar .dijitDropDownButton:hover .dijitButtonNode { + background-color: #e5f2fe; + border: solid 1px #ffffff; +} +/* Styling for month drop down list */ +.claro .dijitCalendarMonthMenu { + border-color: #759dc0; + background-color: #ffffff; + text-align: center; + background-image: none; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel { + border-top: solid 1px #ffffff; + /* intentionally invisible until hover */ + + border-bottom: solid 1px #ffffff; + padding: 2px 0; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover, .claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel:hover { + background-color: #abd6ff; + border-color: #759dc0; + border-width: 1px 0; + background-image: url("images/commonHighlight.png"); + background-repeat: repeat-x; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar.less new file mode 100644 index 0000000..55decd3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar.less @@ -0,0 +1,279 @@ +/* Calendar + * + * Styling Calendar mainly includes: + * + * 1. Calendar container + * .dijitCalendar - main container + * .dijitCalendarHover / .dijitCalendarActive - states e.g. hover,active + * + * 2. Month + * .dijitCalendarMonthContainer + * .dijitCalendarMonthLabel + * .dijitCalendarDecrease / .dijitCalendarDecrease - icons for switching to previous/next month + * .dijitCalendarArrowActive .dijitCalendarDecrease - states e.g. hover,active + * + * 3. Date + * .dijitCalendarDayLabelTemplate - week day column header e.g. S M T W T F S + * .dijitCalendarDateTemplate - date label wrapper + * .dijitCalendarPreviousMonth .dijitCalendarDateLabel - special labels for previous or next month + * .dijitCalendarSelectedDate .dijitCalendarDateLabel - styles for selected date + * .dijitCalendarDisabledDate .dijitCalendarDateLabel - styles for disabled date + * .dijitCalendarActiveDate .dijitCalendarDateLabel - states e.g. hover,active + * + * 4. Year + * .dijitCalendarYearContainer + * .dijitCalendarYearLabel + * .dijitCalendarPreviousYear /.dijitCalendarNextYear + * .dijitCalendarNextYearHover / .dijitCalendarPreviousYearHover - states e.g. hover,active + * + * 5. Dropdown Month Menu + * .dijitCalendarMonthMenu - menu container + * .dijitCalendarMonthMenu .dijitCalendarMonthLabel - month label in menu item + * .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover - menu item hover state + */ + +@import "variables"; + +.claro .dijitCalendar { + border:solid 1px @border-color; + background-color: @calendar-background-color; + background-image:url(@image-calendar-container); + background-position:0 -448px; + background-repeat:repeat-x; + text-align:center; + padding:6px 5px 3px 5px; + .border-radius(4px); + border-collapse: separate; // in case user CSS has set border-collapse: collapse for tables +} +.dj_ie6 .claro .dijitCalendar { + background-image:none; +} +.claro .dijitCalendar img { + border:none; +} +.claro .dijitCalendarHover, .claro .dijitCalendar:hover, +.claro .dijitCalendarActive { + /* treat dijitCalenderActive like hover since there's + * no concept of clicking a Calendar as a whole (although you can click things inside the calendar) + */ + background-color: @hovered-background-color; + border:solid 1px @hovered-border-color; +} +.claro .dijitCalendarMonthContainer th { + text-align:center; + padding-bottom:4px; + vertical-align:middle; +} +.claro .dijitCalendarMonthLabel { + color: @text-color; + font-size: 1.091em; + padding: 0 4px; +} + +/* next/previous month arrows */ +.claro .dijitCalendarIncrementControl { + width:18px; + height:16px; + background-image: url(@image-calendar-arrows); + background-repeat: no-repeat; +} +.dj_ie6 .claro .dijitCalendarIncrementControl { + background-image: url(@image-calendar-arrows-ie6); +} +.claro .dijitCalendarIncrease { + background-position:-18px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarDecrease, +.claro .dijitCalendarArrow:hover .dijitCalendarDecrease { + background-position:-36px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarIncrease, +.claro .dijitCalendarArrow:hover .dijitCalendarIncrease { + background-position:-55px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarDecrease, +.claro .dijitCalendarArrow:active .dijitCalendarDecrease { + background-position:-72px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarIncrease, +.claro .dijitCalendarArrow:active .dijitCalendarIncrease { + background-position:-91px 0; +} +.claro .dijitA11ySideArrow { + /* text +/- labels instead of arrow icons, for high contrast mode */ + display: none; +} + +.claro .dijitCalendarDayLabelTemplate { + padding-bottom:0; + text-align:center; + border-bottom:1px solid @border-color; + padding:0 3px 2px; +} +.claro .dijitCalendarDayLabel { + padding:0 4px 0 4px; + font-weight:bold; + font-size:0.909em; + text-align:center; + color: @text-color; +} +.claro .dijitCalendarDateTemplate { + text-align:center; + background-color:@calendar-currentmonth-background-color; + background-image:url(@image-calendar-container); + background-position:0 0; + background-repeat:repeat-x; + border-bottom: 1px solid @minor-border-color; + padding-top:0; + font-size:0.909em; + font-family: Arial; + font-weight:bold; + letter-spacing:.05em; + text-align:center; + color: @text-color; +} +.dj_ie6 .claro .dijitCalendarDateTemplate { + background-image: none; +} +.claro .dijitCalendarPreviousMonth, +.claro .dijitCalendarNextMonth { + background-color: @calendar-adjacentmonth-background-color; + background-image:none; + border-bottom:solid 1px @minor-border-color; /* todo: redundant with above .dijitCalendarDateTemplate rule */ +} +.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel { + text-decoration:none; + display:block; + padding:3px 5px 3px 4px; + border:solid 1px @calendar-currentmonth-background-color; /* intentionally matches background-color, no visible border until hover/selection */ + background-color:rgba(171,212,251,0); /* transparent causes black-flash animation problem on webkit */ + .transition-property(background-color, border); + .transition-duration(.35s); +} +.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel, +.claro .dijitCalendarNextMonth .dijitCalendarDateLabel{ + color: @calendar-adjacentmonth-text-color; + border-color: @calendar-adjacentmonth-background-color; /* intentionally matches background-color, no visible border until hover/selection */ +} + +.claro .dijitCalendarYearContainer { + vertical-align:middle; +} +.claro .dijitCalendarYearControl { + padding: 1px 2px 2px 2px; +} +.claro .dijitCalendarYearLabel { + padding: 2px 0 0 0; + margin: 0; + font-size: 1.17em; +} +.claro .dijitCalendarYearLabel span { + /* trying to center next/current/previous year vertically, doesn't work on IE6/7 though */ + vertical-align:middle; +} +.claro .dijitCalendarSelectedYear { + padding:0 3px; +} +.claro .dijitCalendarNextYear, +.claro .dijitCalendarPreviousYear { + padding: 1px 6px 1px 6px; + font-size:0.909em; +} +.claro .dijitCalendarSelectedYear { + font-size:1.091em; + color:@selected-text-color; +} +/* End Normal Calendar Style */ +/* Hovered Calendar Style */ +.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel, +.claro .dijitCalendarEnabledDate:hover .dijitCalendarDateLabel { + background-color:@hovered-background-color; + border:solid 1px @hovered-border-color; + color:@hovered-text-color; + .transition-duration(.2s); +} +.claro .dijitCalendarNextYearHover, .claro .dijitCalendarNextYear:hover, +.claro .dijitCalendarPreviousYearHover, .claro .dijitCalendarPreviousYear:hover { + color:@hovered-text-color; + border:solid 1px @calendar-button-hovered-border-color; + padding: 0 5px 0 5px; /* reduced by 1 to make room for border */ + background-color: @calendar-button-hovered-background-color; +} +/* End Hovered Calendar Style */ +/* Active Calendar Style */ +.claro .dijitCalendarNextYearActive, .claro .dijitCalendarNextYear:active +.claro .dijitCalendarPreviousYearActive, .claro .dijitCalendarPreviousYear:active { + border: solid 1px @calendar-button-pressed-border-color; + padding: 0 5px 0 5px; /* reduced by 1 to make room for border */ + background-color:@calendar-button-pressed-background-color; +} +.claro .dijitCalendarActiveDate .dijitCalendarDateLabel, +.claro .dijitCalendarEnabledDate:active .dijitCalendarDateLabel { + background-image:url(@image-calendar-container); + background-position:0 -300px; + background-color: @calendar-date-pressed-background-color; + border:solid 1px @calendar-date-pressed-border-color; + .transition-duration(.1s); +} +.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image:none; +} +/* End Active Calendar Style */ +/* Selected Calendar Style */ +.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel { + color:@selected-text-color; + background-color: @calendar-date-selected-background-color; + border-color: @calendar-date-selected-border-color; +} +/* End Selected Calendar Style */ +/* Disabled Calendar Style*/ +.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel { + color: @disabled-text-color; + text-decoration:line-through; +} + +/* End Disabled Calendar Style */ + +/* Styling for month DropDownButton */ + +.claro .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.claro .dijitCalendar .dijitButtonText { + padding: 1px 0 3px; + margin-right:-4px; +} +.claro .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0 3px 0 2px; + border:solid 1px @border-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); +} +.claro .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitCalendar .dijitDropDownButton:hover .dijitButtonNode { + background-color: @calendar-button-hovered-background-color; + border:solid 1px @calendar-button-hovered-border-color; +} + +/* Styling for month drop down list */ + +.claro .dijitCalendarMonthMenu { + border-color: @popup-border-color; + background-color: @menu-background-color; + text-align:center; + background-image: none; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel { + border-top: solid 1px @menu-background-color; /* intentionally invisible until hover */ + border-bottom: solid 1px @menu-background-color; + padding: 2px 0; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover, +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel:hover { + background-color: @hovered-background-color; + border-color: @hovered-border-color; + border-width:1px 0; + background-image: url(@image-common-highlight); + background-repeat:repeat-x; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar_rtl.css new file mode 100644 index 0000000..5892a64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar_rtl.css @@ -0,0 +1,18 @@ +.claro .dijitCalendarRtl .dijitCalendarIncrease { + background-position: 0 0; +} +.claro .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -18px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position: -36px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position: -55px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position: -72px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position: -91px 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar_rtl.less new file mode 100644 index 0000000..713717b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Calendar_rtl.less @@ -0,0 +1,19 @@ +.claro .dijitCalendarRtl .dijitCalendarIncrease{ + background-position: 0 0; +} +.claro .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -18px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position: -36px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position: -55px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position: -72px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position: -91px 0; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/ColorPalette.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/ColorPalette.css new file mode 100644 index 0000000..a23b2df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/ColorPalette.css @@ -0,0 +1,41 @@ +/* ColorPalette + * + * Styling of the ColorPalette consists of the following: + * + * 1. the whole color palette + * .dijitColorPalette - for outline, border, and background color of the whole color palette + * Note: outline does not work for IE + * + * 2. the color swatch + * .dijitColorPalette .dijitPaletteImg + * transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * + * 3. hovered swatch + * .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg + * the hovered state of the color swatch - adds border + * + * 4. active and selected swatch + * .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg + * .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg + * adds border for active or selected state + */ +.claro .dijitColorPalette { + border: 1px solid #b5bcc7; + background: #ffffff; + -moz-border-radius: 0; + border-radius: 0; +} +.claro .dijitColorPalette .dijitPaletteImg { + /* transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * overrides border color in dijit.css */ + + border: 1px solid #d3d3d3; +} +.claro .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { + border: 1px solid #000000; +} +.claro .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, .claro .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid #000000; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/ColorPalette.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/ColorPalette.less new file mode 100644 index 0000000..ffa3ac0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/ColorPalette.less @@ -0,0 +1,44 @@ +/* ColorPalette + * + * Styling of the ColorPalette consists of the following: + * + * 1. the whole color palette + * .dijitColorPalette - for outline, border, and background color of the whole color palette + * Note: outline does not work for IE + * + * 2. the color swatch + * .dijitColorPalette .dijitPaletteImg + * transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * + * 3. hovered swatch + * .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg + * the hovered state of the color swatch - adds border + * + * 4. active and selected swatch + * .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg + * .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg + * adds border for active or selected state + */ + +@import "variables"; + +.claro .dijitColorPalette { + border: 1px solid @border-color; + background: @colorpalette-background-color; + .border-radius(0); +} + +.claro .dijitColorPalette .dijitPaletteImg { + /* transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * overrides border color in dijit.css */ + border: 1px solid @minor-border-color; +} +.claro .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { + border: 1px solid @swatch-hovered-border-color; +} +.claro .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, +.claro .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid @swatch-selected-border-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Common.css new file mode 100644 index 0000000..83f6128 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Common.css @@ -0,0 +1,65 @@ +/* ========= Styling rules to affect widgets ========= */ +.claro .dijitPopup { + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); +} +.claro .dijitTooltipDialogPopup { + /* exception popups: do not use a shadow on these because they aren't rectangular */ + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +/* The highlight is shown in the ComboBox menu. TODO: move to form/Common.less */ +.claro .dijitComboBoxHighlightMatch { + background-color: #abd6ff; +} +.claro .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + + outline: 1px dotted #494949; +} +/* Drag and Drop */ +.claro .dojoDndItemBefore, .claro .dojoDndItemAfter { + border-top: 1px solid #759dc0; +} +.claro .dojoDndItemOver { + cursor: pointer; +} +.claro table.dojoDndAvatar { + border: 1px solid #b5bcc7; + border-collapse: collapse; + background-color: #ffffff; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); +} +.claro .dojoDndAvatarHeader td { + height: 20px; + padding-left: 21px; +} +.claro.dojoDndMove .dojoDndAvatarHeader, .claro.dojoDndCopy .dojoDndAvatarHeader { + background-image: url("images/dnd.png"); + background-repeat: no-repeat; + background-position: 2px -122px; +} +.claro .dojoDndAvatarItem td { + padding: 5px; +} +.claro.dojoDndMove .dojoDndAvatarHeader { + background-color: #f58383; + background-position: 2px -103px; +} +.claro.dojoDndCopy .dojoDndAvatarHeader { + background-color: #f58383; + background-position: 2px -68px; +} +.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: #97e68d; + background-position: 2px -33px; +} +.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: #97e68d; + background-position: 2px 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Common.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Common.less new file mode 100644 index 0000000..248fc1a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Common.less @@ -0,0 +1,64 @@ +/* ========= Styling rules to affect widgets ========= */ + +@import "variables"; + +.claro .dijitPopup { + .box-shadow(0 1px 5px rgba(0,0,0,0.25)); +} +.claro .dijitTooltipDialogPopup { + /* exception popups: do not use a shadow on these because they aren't rectangular */ + .box-shadow(none); +} + +/* The highlight is shown in the ComboBox menu. TODO: move to form/Common.less */ +.claro .dijitComboBoxHighlightMatch { + background-color: @select-matchedtext-background-color; +} + +.claro .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + outline: 1px dotted @focus-outline-color; +} + +/* Drag and Drop */ +.claro .dojoDndItemBefore, +.claro .dojoDndItemAfter{ + border-top: 1px solid @dnd-dropseparator-color; +} +.claro .dojoDndItemOver { + cursor:pointer; + } +.claro table.dojoDndAvatar { + border: 1px solid @border-color; + border-collapse: collapse; + background-color: @dnd-avatar-background-color; + .box-shadow(0 1px 3px rgba(0, 0, 0, .25)); +} +.claro .dojoDndAvatarHeader td { + height: 20px; + padding-left:21px; +} +.claro.dojoDndMove .dojoDndAvatarHeader, .claro.dojoDndCopy .dojoDndAvatarHeader { + background-image: url(@image-dnd); + background-repeat: no-repeat; + background-position:2px -122px; +} +.claro .dojoDndAvatarItem td { + padding: 5px; +} +.claro.dojoDndMove .dojoDndAvatarHeader { + background-color: @dnd-avatar-header-background-color; + background-position:2px -103px; +} +.claro.dojoDndCopy .dojoDndAvatarHeader { + background-color: @dnd-avatar-header-background-color; + background-position:2px -68px; +} +.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: @dnd-avatar-candrop-header-background-color; + background-position:2px -33px; +} +.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: @dnd-avatar-candrop-header-background-color; + background-position:2px 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog.css new file mode 100644 index 0000000..ae0b18d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog.css @@ -0,0 +1,205 @@ +/* Dialog + * + * Styling Dialog includes two sections: Dialog and Tooltip & TooltipDialog + * + * Dialog: + * 1. Dialog (default styling): + * .dijitDialog - styles for dialog's bounding box + * + * 2. Dialog title + * .dijitDialogTitleBar - styles for the title container at the top of dialog + * .dijitDialogTitle - the text container in dialog title + * + * 3. Dialog content + * .dijitDialogPaneContent - main container for content area and action bar + * .dijitDialogPaneContentArea - styles for content container + * + * 4. Dialog action bar + * .dijitDialogPaneActionBar - styles for action buttons lie at the bottom of dialog pane content + * + * 5. Dialog underlay + * .dijitDialogUnderlay - div under the dialog which used for separate dialog and page content + * + * + * Tooltip & TooltipDialog: + * 1. tooltip content container: + * .dijitTooltipContainer - tooltip content container + * + * 2. tooltip connector: + * .dijitTooltipConnector - tooltip anchor includes 4 direction(up, down, left, right) + */ +.claro .dijitDialog { + border: 1px solid #759dc0; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); +} +.claro .dijitDialogPaneContent { + background: #ffffff repeat-x top left; + border-top: 1px solid #759dc0; + padding: 10px 8px; + position: relative; +} +.claro .dijitDialogPaneContentArea { + /* trick to get action bar (gray bar at bottom with OK/cancel buttons) to span from + * left to right but still indent dialog content + */ + margin: -10px -8px; + padding: 10px 8px; +} +.claro .dijitDialogPaneActionBar { + /* gray bar at bottom of dialog with OK/Cancel buttons */ + + background-color: #efefef; + padding: 3px 5px 2px 7px; + text-align: right; + border-top: 1px solid #d3d3d3; + margin: 10px -8px -10px; +} +.claro .dijitDialogPaneActionBar .dijitButton { + float: none; +} +.claro .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + + border: 1px solid #ffffff; + border-top: none; + background-color: #abd6ff; + background-image: url("images/titlebar.png"); + background-repeat: repeat-x; + padding: 5px 7px 4px 7px; +} +.claro .dijitDialogTitle { + /* typography and styling of the dialog title */ + + padding: 0 1px; + font-size: 1.091em; + color: #000000; +} +.claro .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + + background: url("images/dialogCloseIcon.png"); + background-repeat: no-repeat; + position: absolute; + right: 5px; + height: 15px; + width: 21px; +} +.dj_ie6 .claro .dijitDialogCloseIcon { + background-image: url("images/dialogCloseIcon8bit.png"); +} +.claro .dijitDialogCloseIconHover { + background-position: -21px; +} +.claro .dijitDialogCloseIconActive { + background-position: -42px; +} +/* Tooltip and TooltipDialog */ +.claro .dijitTooltip, .claro .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + + background: transparent; + /* make the area on the sides of the arrow transparent */ + +} +.dijitTooltipBelow { + /* leave room for arrow above content */ + + padding-top: 13px; + padding-left: 3px; + padding-right: 3px; +} +.dijitTooltipAbove { + /* leave room for arrow below content */ + + padding-bottom: 13px; + padding-left: 3px; + padding-right: 3px; +} +.claro .dijitTooltipContainer { + /* the part with the text */ + + background-color: #ffffff; + background-image: url("images/tooltipGradient.png"); + background-repeat: repeat-x; + background-position: bottom; + border: 1px solid #759dc0; + padding: 6px 8px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + font-size: 1em; + color: #000000; +} +.dj_ie6 .claro .dijitTooltipContainer { + background-image: none; +} +.claro .dijitTooltipConnector { + /* the arrow piece */ + + border: 0; + z-index: 2; + background-image: url("images/tooltip.png"); + background-repeat: no-repeat; + width: 16px; + height: 14px; +} +.dj_ie6 .claro .dijitTooltipConnector { + background-image: url("images/tooltip8bit.png"); +} +.claro .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + + left: auto !important; + right: 3px; +} +.claro .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + + top: 0; + left: 3px; + background-position: -31px 0; + width: 16px; + height: 14px; +} +.claro .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + + bottom: 0; + left: 3px; + background-position: -15px 0; + width: 16px; + height: 14px; +} +.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector, .dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector { + bottom: -1px; +} +.claro .dijitTooltipLeft { + padding-right: 14px; +} +.claro .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + + right: 0; + background-position: 0 0; + width: 16px; + height: 14px; +} +.claro .dijitTooltipRight { + padding-left: 14px; +} +.claro .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + + left: 0; + background-position: -48px 0; + width: 16px; + height: 14px; +} +.claro .dijitDialogUnderlay { + background: #ffffff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog.less new file mode 100644 index 0000000..5e74be7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog.less @@ -0,0 +1,205 @@ +/* Dialog + * + * Styling Dialog includes two sections: Dialog and Tooltip & TooltipDialog + * + * Dialog: + * 1. Dialog (default styling): + * .dijitDialog - styles for dialog's bounding box + * + * 2. Dialog title + * .dijitDialogTitleBar - styles for the title container at the top of dialog + * .dijitDialogTitle - the text container in dialog title + * + * 3. Dialog content + * .dijitDialogPaneContent - main container for content area and action bar + * .dijitDialogPaneContentArea - styles for content container + * + * 4. Dialog action bar + * .dijitDialogPaneActionBar - styles for action buttons lie at the bottom of dialog pane content + * + * 5. Dialog underlay + * .dijitDialogUnderlay - div under the dialog which used for separate dialog and page content + * + * + * Tooltip & TooltipDialog: + * 1. tooltip content container: + * .dijitTooltipContainer - tooltip content container + * + * 2. tooltip connector: + * .dijitTooltipConnector - tooltip anchor includes 4 direction(up, down, left, right) + */ + +@import "variables"; + +.claro .dijitDialog { + border: 1px solid @popup-border-color; + .box-shadow(0 1px 5px rgba(0,0,0,0.25)); +} + +.claro .dijitDialogPaneContent { + background: @pane-background-color repeat-x top left; + border-top: 1px solid @popup-border-color; + padding:10px 8px; + position: relative; +} + +.claro .dijitDialogPaneContentArea { + /* trick to get action bar (gray bar at bottom with OK/cancel buttons) to span from + * left to right but still indent dialog content + */ + margin: -10px -8px; + padding: 10px 8px; +} + +.claro .dijitDialogPaneActionBar { + /* gray bar at bottom of dialog with OK/Cancel buttons */ + background-color: @bar-background-color; + padding: 3px 5px 2px 7px; + text-align: right; + border-top: 1px solid @minor-border-color; + margin: 10px -8px -10px; +} +.claro .dijitDialogPaneActionBar .dijitButton { + float: none; +} + +.claro .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + border: 1px solid @dialog-titlebar-border-color; + border-top:none; + background-color: @dialog-titlebar-background-color; + background-image: url(@image-titlebar); + background-repeat:repeat-x; + padding: 5px 7px 4px 7px; +} + +.claro .dijitDialogTitle { + /* typography and styling of the dialog title */ + padding: 0 1px; + font-size:1.091em; + color: @text-color; +} + +.claro .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + background: url(@image-dialog-close); + background-repeat:no-repeat; + position: absolute; + right: 5px; + height: 15px; + width: 21px; +} +.dj_ie6 .claro .dijitDialogCloseIcon { + background-image: url(@image-dialog-close-ie6); +} +.claro .dijitDialogCloseIconHover { + background-position:-21px; +} +.claro .dijitDialogCloseIconActive { + background-position:-42px; +} + +/* Tooltip and TooltipDialog */ + +.claro .dijitTooltip, +.claro .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 13px; + padding-left:3px; + padding-right:3px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 13px; + padding-left:3px; + padding-right:3px; +} + +.claro .dijitTooltipContainer { + /* the part with the text */ + background-color:@popup-background-color; + background-image:url(@image-tooltip-gradient); + background-repeat:repeat-x; + background-position:bottom; + border:1px solid @popup-border-color; + padding:6px 8px; + .border-radius(4px); + .box-shadow(0 1px 3px rgba(0,0,0,0.25)); + font-size: 1em; + color: @text-color; +} + +.dj_ie6 .claro .dijitTooltipContainer { + background-image: none; +} +.claro .dijitTooltipConnector { + /* the arrow piece */ + border: 0; + z-index: 2; + background-image:url(@image-tooltip); + background-repeat:no-repeat; + width:16px; + height:14px; +} +.dj_ie6 .claro .dijitTooltipConnector { + background-image:url(@image-tooltip-ie6); +} +.claro .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + left: auto !important; + right: 3px; +} + +.claro .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + top: 0; + left: 3px; + background-position:-31px 0; + width:16px; + height:14px; +} + +.claro .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + bottom: 0; + left: 3px; + background-position:-15px 0; + width:16px; + height:14px; +} +.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector, +.dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector { + bottom: -1px; +} + +.claro .dijitTooltipLeft { + padding-right: 14px; +} +.claro .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + right: 0; + background-position:0 0; + width:16px; + height:14px; +} + +.claro .dijitTooltipRight { + padding-left: 14px; +} +.claro .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + left: 0; + background-position:-48px 0; + width:16px; + height:14px; +} + +.claro .dijitDialogUnderlay { + background: @dialog-underlay-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog_rtl.css new file mode 100644 index 0000000..34930eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog_rtl.css @@ -0,0 +1,9 @@ +/* Dialog */ +.claro .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} +.claro .dijitDialogRtl .dijitDialogPaneActionBar { + text-align: left; + padding: 3px 7px 2px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog_rtl.less new file mode 100644 index 0000000..452fe93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Dialog_rtl.less @@ -0,0 +1,13 @@ +/* Dialog */ + +@import "variables"; + +.claro .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} + +.claro .dijitDialogRtl .dijitDialogPaneActionBar { + text-align: left; + padding: 3px 7px 2px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor.css new file mode 100644 index 0000000..9f167f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor.css @@ -0,0 +1,50 @@ +/* Editor + * + * Styling Editor means styling the Editor inside iframe container (dijitEditorIFrameContainer) + * + * 1. Editor iframe container (default styling): + * .dijitEditorIFrameContainer - normal state styles: background-color, border, padding + * + * 2. hovered Editor iframe container (ie, mouse hover on editor) + * .dijitEditorHover .dijitEditorIFrameContainer/dijitEditorIFrame - styles when mouse hover on the container + * + * 3. focused Editor iframe container (ie, mouse focus on the editor pane) + * .dijitEditorFocused .dijitEditorIFrameContainer/dijitEditorIFrame - styles when container focused + * + * 3. disabled Editor iframe container + * .dijitEditorDisabled - editor's inner iframe container disable status styles: background, border + */ +.claro .dijitEditorIFrameContainer { + padding: 3px 3px 1px 10px; +} +.claro .dijitEditorIFrame { + background-color: #ffffff; +} +.claro .dijitEditor { + border: 1px solid #b5bcc7; +} +.claro .dijitEditor .dijitEditorIFrameContainer { + background-color: #ffffff; + background-image: url("form/images/textBox_back.png"); + background-repeat: repeat-x; +} +.dj_ie6 .claro .dijitEditor .dijitEditorIFrameContainer { + background-image: none; +} +.claro .dijitEditorHover .dijitEditorIFrameContainer, .claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: #e5f2fe; +} +.claro .dijitEditorFocused .dijitEditorIFrameContainer, .claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame { + /* TODO: contradicts rule above, which background-color do you want? */ + + background-color: #ffffff; +} +/* Disabled */ +.claro .dijitEditorDisabled { + border: 1px solid #d3d3d3; + color: #818181; +} +.claro .dijitDisabled .dijitEditorIFrame, .claro .dijitDisabled .dijitEditorIFrameContainer, .claro .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: #efefef; + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor.less new file mode 100644 index 0000000..f74a5d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor.less @@ -0,0 +1,59 @@ +/* Editor + * + * Styling Editor means styling the Editor inside iframe container (dijitEditorIFrameContainer) + * + * 1. Editor iframe container (default styling): + * .dijitEditorIFrameContainer - normal state styles: background-color, border, padding + * + * 2. hovered Editor iframe container (ie, mouse hover on editor) + * .dijitEditorHover .dijitEditorIFrameContainer/dijitEditorIFrame - styles when mouse hover on the container + * + * 3. focused Editor iframe container (ie, mouse focus on the editor pane) + * .dijitEditorFocused .dijitEditorIFrameContainer/dijitEditorIFrame - styles when container focused + * + * 3. disabled Editor iframe container + * .dijitEditorDisabled - editor's inner iframe container disable status styles: background, border + */ + +@import "variables"; + +.claro .dijitEditorIFrameContainer{ + padding:3px 3px 1px 10px; +} +.claro .dijitEditorIFrame { + background-color: @textbox-background-color; +} +.claro .dijitEditor { + border: 1px solid @border-color; +} +.claro .dijitEditor .dijitEditorIFrameContainer{ + background-color: @textbox-background-color; + background-image: url(@image-form-textbox-background); + background-repeat:repeat-x; +} +.dj_ie6 .claro .dijitEditor .dijitEditorIFrameContainer{ + background-image: none; +} +.claro .dijitEditorHover .dijitEditorIFrameContainer, +.claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame{ + background-color: @textbox-hovered-background-color; +} +.claro .dijitEditorFocused .dijitEditorIFrameContainer, +.claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame{ + /* TODO: contradicts rule above, which background-color do you want? */ + background-color: @textbox-focused-background-color; +} + + +/* Disabled */ +.claro .dijitEditorDisabled { + border: 1px solid @disabled-border-color; + color: @disabled-text-color; +} + +.claro .dijitDisabled .dijitEditorIFrame, +.claro .dijitDisabled .dijitEditorIFrameContainer, +.claro .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: @textbox-disabled-background-color; + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor_rtl.css new file mode 100644 index 0000000..f633558 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor_rtl.css @@ -0,0 +1,4 @@ +/* Editor */ +.claro .dijitEditorRtl .dijitEditorIFrameContainer { + padding: 3px 10px 1px 3px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor_rtl.less new file mode 100644 index 0000000..8ebc013 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Editor_rtl.less @@ -0,0 +1,9 @@ +/* Editor */ + +@import "variables"; + +.claro .dijitEditorRtl .dijitEditorIFrameContainer{ + padding:3px 10px 1px 3px; +} + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/InlineEditBox.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/InlineEditBox.css new file mode 100644 index 0000000..0cd1457 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/InlineEditBox.css @@ -0,0 +1,20 @@ +/* InlineEditBox + * + * Styling InlineEditBox mainly includes: + * + * 1. Normal state + * .dijitInlineEditBoxDisplayMode - for border + * + * 2. Hover state + * .dijitInlineEditBoxDisplayModeHover - for border and background color + */ +.claro .dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; +} +.claro .dijitInlineEditBoxDisplayModeHover { + background-color: #e5f2fe; + border: solid 1px #759dc0; +} +.dj_ie6 .claro .dijitInlineEditBoxDisplayMode { + border: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/InlineEditBox.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/InlineEditBox.less new file mode 100644 index 0000000..a7162be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/InlineEditBox.less @@ -0,0 +1,25 @@ +/* InlineEditBox + * + * Styling InlineEditBox mainly includes: + * + * 1. Normal state + * .dijitInlineEditBoxDisplayMode - for border + * + * 2. Hover state + * .dijitInlineEditBoxDisplayModeHover - for border and background color + */ + +@import "variables"; + +.claro .dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; +} + +.claro .dijitInlineEditBoxDisplayModeHover { + background-color: @textbox-hovered-background-color; + border: solid 1px @hovered-border-color; +} + +.dj_ie6 .claro .dijitInlineEditBoxDisplayMode { + border: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu.css new file mode 100644 index 0000000..e1c1562 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu.css @@ -0,0 +1,190 @@ +/* Menu + +There are three areas of styling for the Menu: + + 1. The menu + There are three types of menus: + i)Context Menu + ii)Drop down Menu + iii) Navigation Menu + All three types of menus are affected by the .dijitMenu class in which you can set the background-color, padding and border + .dijitMenu affects the drop down menu in TimeTextBox, Calendar, ComboBox and FilteringSelect + .dijitMenuTable - for padding - also affects Select widget + + 2. The menu bar + .dijitMenuBar - for border, margins, padding, background-color of the menu bar + .dijitMenuBar .dijitMenuItem - for padding, text color of menu items in the menu bar (overrides .dijitMenuItem) + + 3. Menu items - items in the menu. + .dijitMenuItem - for color + .dijitMenuItemHover, .dijitMenuItemSelected - for background-color, border, text color, padding of a menu item or menubar item that has been hovered over or selected + .dijitMenuItemActive - for bacgkround-color of an active (mousedown) menu item + td.dijitMenuItemIconCell - for padding around a menu item's icon + td.dijitMenuItemLabel - for padding around a menu item's label + .dijitMenuSeparatorTop - for border, top border, of the separator + .dijitMenuSeparatorBottom - for bottom margin of the separator + + Styles specific to ComboBox and FilteringSelect widgets: + .dijitComboBoxMenu .dijitMenuItem - for padding and border of a menu item in a ComboBox or FilteringSelect widget's menu + .dijitComboBoxMenu .dijitMenuItemSelected- for text color, background-color and border of a menu item in a ComboBox or FilteringSelect widget's menu + +*/ +.claro .dijitMenuBar { + border: 1px solid #b5bcc7; + margin: 0; + padding: 0; + background-color: #efefef; + background-image: url("images/commonHighlight.png"); + background-position: 0 0; + background-repeat: repeat-x; +} +.dj_ie6 .claro .dijitMenuBar { + background-image: none; +} +.claro .dijitMenu { + background-repeat: repeat-y; + background-color: #ffffff; + border: 1px solid #759dc0; + /* so adjoining borders of MenuBar/ComboBox and Menu overlap, avoiding double border */ + + margin: -1px 0; +} +.dj_ie6 .claro .dijitMenu { + margin: 0; + /* above -1px makes top/bottom borders disappear on IE6 */ + +} +.claro .dijitMenuBar .dijitMenuItem { + padding: 6px 10px 7px; + background-position: 0 100px; + margin: -1px; +} +.claro .dijitMenuItem { + background-image: url("images/menuHighlight.png"); + background-position: 0 -40px; + background-repeat: repeat-x; + color: #000000; +} +/* this prevents jiggling upon hover of a menu item */ +.claro .dijitMenuTable { + border-collapse: separate; + border-spacing: 0 0; + padding: 0; +} +.claro .dijitMenuItem td { + padding: 1px; +} +/* hover over a MenuBarItem */ +.claro .dijitMenuPassive .dijitMenuItemHover, .claro .dijitMenuPassive .dijitMenuItemSelected { + background-color: #abd6ff; + border: solid 1px #759dc0; + background-position: 0 0; + color: #000000; + padding: 5px 9px 6px; +} +.claro .dijitMenuPassive .dijitMenuItemActive { + background-position: 0 -177px; +} +.dj_ie6 .claro .dijitMenuItem, .dj_ie6 .claro .dijitMenuPassive .dijitMenuItem { + background-image: none; +} +/* MenuBarItem that has been selected and menu drops down from it */ +.claro .dijitMenuActive .dijitMenuItemHover, .claro .dijitMenuActive .dijitMenuItemSelected { + border: solid 1px #759dc0; + padding: 5px 9px 6px; + background-color: #abd6ff; + background-position: 0 0; + color: #000000; +} +.dj_ie .claro .dijitMenuActive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected { + padding-top: 6px; + padding-bottom: 5px; + margin-top: -3px; +} +.claro .dijitMenuActive .dijitMenuItemActive { + background-color: #7dbdfa; + background-position: 0 -177px; +} +.claro .dijitMenuItemActive { + background-position: 0 -177px; +} +.claro td.dijitMenuItemIconCell { + padding: 2px; + margin: 0 0 0 4px; +} +.claro td.dijitMenuItemLabel { + padding-top: 5px; + padding-bottom: 5px; +} +.claro .dijitMenuExpand { + width: 7px; + height: 7px; + background-image: url("images/spriteArrows.png"); + background-position: -14px 0; + margin-right: 3px; +} +.claro .dijitMenuItemDisabled .dijitMenuItemIconCell { + opacity: 1; +} +.claro .dijitMenuSeparatorTop { + height: auto; + margin-top: 1px; + /* prevents spacing above/below separator */ + + border-bottom: 1px solid #b5bcc7; +} +.claro .dijitMenuSeparatorBottom { + height: auto; + margin-bottom: 1px; +} +/* the checked menu item */ +.claro .dijitCheckedMenuItemIconChar { + display: none; +} +.claro .dijitCheckedMenuItemIcon { + background-image: url("form/images/checkboxRadioButtonStates.png"); + background-repeat: no-repeat; + background-position: -15px 50%; + width: 15px; + height: 16px; +} +.dj_ie6 .claro .dijitCheckedMenuItemIcon { + background-image: url("form/images/checkboxAndRadioButtons_IE6.png"); +} +.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon { + background-position: 0 50%; +} +/*ComboBox Menu*/ +.claro .dijitComboBoxMenu { + margin-left: 0; + background-image: none; +} +.claro .dijitComboBoxMenu .dijitMenuItem { + padding: 2px; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #ffffff; +} +.claro .dijitComboBoxMenu .dijitMenuItemSelected { + color: #000000; + border-color: #759dc0; + background-color: #abd6ff; +} +.claro .dijitComboBoxMenu .dijitMenuItemHover { + color: #000000; + border-color: #769dc0; + background-color: #abd6ff; + background-position: 0 0; +} +.claro .dijitComboBoxMenuActive .dijitMenuItemSelected { + background-position: 0 -177px; + background-color: #7dbdfa; + /* TODO: why is this a different color than normal .dijitMenuItemSelected? */ + +} +.claro .dijitMenuPreviousButton, .claro .dijitMenuNextButton { + font-style: italic; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu.less new file mode 100644 index 0000000..80467a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu.less @@ -0,0 +1,194 @@ +/* Menu + +There are three areas of styling for the Menu: + + 1. The menu + There are three types of menus: + i)Context Menu + ii)Drop down Menu + iii) Navigation Menu + All three types of menus are affected by the .dijitMenu class in which you can set the background-color, padding and border + .dijitMenu affects the drop down menu in TimeTextBox, Calendar, ComboBox and FilteringSelect + .dijitMenuTable - for padding - also affects Select widget + + 2. The menu bar + .dijitMenuBar - for border, margins, padding, background-color of the menu bar + .dijitMenuBar .dijitMenuItem - for padding, text color of menu items in the menu bar (overrides .dijitMenuItem) + + 3. Menu items - items in the menu. + .dijitMenuItem - for color + .dijitMenuItemHover, .dijitMenuItemSelected - for background-color, border, text color, padding of a menu item or menubar item that has been hovered over or selected + .dijitMenuItemActive - for bacgkround-color of an active (mousedown) menu item + td.dijitMenuItemIconCell - for padding around a menu item's icon + td.dijitMenuItemLabel - for padding around a menu item's label + .dijitMenuSeparatorTop - for border, top border, of the separator + .dijitMenuSeparatorBottom - for bottom margin of the separator + + Styles specific to ComboBox and FilteringSelect widgets: + .dijitComboBoxMenu .dijitMenuItem - for padding and border of a menu item in a ComboBox or FilteringSelect widget's menu + .dijitComboBoxMenu .dijitMenuItemSelected- for text color, background-color and border of a menu item in a ComboBox or FilteringSelect widget's menu + +*/ + +@import "variables"; + +.claro .dijitMenuBar { + border: 1px solid @border-color; + margin: 0; + padding: 0; + background-color: @bar-background-color; + background-image: url(@image-common-highlight); + background-position:0 0; + background-repeat:repeat-x; +} +.dj_ie6 .claro .dijitMenuBar { + background-image:none; +} +.claro .dijitMenu { + background-repeat:repeat-y; + background-color:@menu-background-color; + border: 1px solid @popup-border-color; + + /* so adjoining borders of MenuBar/ComboBox and Menu overlap, avoiding double border */ + margin: -1px 0; +} +.dj_ie6 .claro .dijitMenu { + margin: 0; /* above -1px makes top/bottom borders disappear on IE6 */ +} +.claro .dijitMenuBar .dijitMenuItem { + padding: 6px 10px 7px; + background-position:0 100px; + margin:-1px; +} +.claro .dijitMenuItem { + background-image: url(@image-menu-highlight); + background-position:0 -40px; + background-repeat:repeat-x; + color: @text-color; +} + +/* this prevents jiggling upon hover of a menu item */ +.claro .dijitMenuTable { + border-collapse:separate; + border-spacing:0 0; + padding:0; +} +.claro .dijitMenuItem td{ + padding:1px; +} +/* hover over a MenuBarItem */ +.claro .dijitMenuPassive .dijitMenuItemHover, +.claro .dijitMenuPassive .dijitMenuItemSelected { + background-color: @hovered-background-color; + border:solid 1px @hovered-border-color; + background-position:0 0; + color:@text-color; + padding: 5px 9px 6px; +} +.claro .dijitMenuPassive .dijitMenuItemActive{ + background-position:0 -177px; +} +.dj_ie6 .claro .dijitMenuItem, +.dj_ie6 .claro .dijitMenuPassive .dijitMenuItem { + background-image: none; +} + +/* MenuBarItem that has been selected and menu drops down from it */ +.claro .dijitMenuActive .dijitMenuItemHover, +.claro .dijitMenuActive .dijitMenuItemSelected { + border:solid 1px @hovered-border-color; + padding: 5px 9px 6px; + background-color: @hovered-background-color; + background-position:0 0; + color:@hovered-text-color; +} +.dj_ie .claro .dijitMenuActive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected { + padding-top: 6px; + padding-bottom: 5px; + margin-top: -3px; +} +.claro .dijitMenuActive .dijitMenuItemActive{ + background-color: @pressed-background-color; + background-position:0 -177px; +} +.claro .dijitMenuItemActive { + background-position:0 -177px; +} +.claro td.dijitMenuItemIconCell { + padding: 2px; + margin: 0 0 0 4px; +} +.claro td.dijitMenuItemLabel { + padding-top: 5px; + padding-bottom: 5px; +} +.claro .dijitMenuExpand { + width: 7px; + height: 7px; + background-image: url(@image-arrow-sprite); + background-position: -14px 0; + margin-right:3px; +} +.claro .dijitMenuItemDisabled .dijitMenuItemIconCell { + opacity:1; +} +.claro .dijitMenuSeparatorTop { + height: auto; + margin-top:1px; /* prevents spacing above/below separator */ + border-bottom: 1px solid @border-color +} +.claro .dijitMenuSeparatorBottom{ + height: auto; + margin-bottom:1px; +} +/* the checked menu item */ +.claro .dijitCheckedMenuItemIconChar { + display: none; +} +.claro .dijitCheckedMenuItemIcon { + background-image: url(@image-form-checkbox-and-radios); + background-repeat:no-repeat; + background-position: -15px 50%; + width:15px; + height:16px; +} +.dj_ie6 .claro .dijitCheckedMenuItemIcon { + background-image: url(@image-form-checkbox-and-radios-ie6); +} +.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon { + background-position: 0 50%; +} + +/*ComboBox Menu*/ +.claro .dijitComboBoxMenu { + margin-left:0; + background-image: none; +} + +.claro .dijitComboBoxMenu .dijitMenuItem { + padding: @textbox-padding; // Make drop down menu text line up with text in . + border-width:1px 0 1px 0; + border-style:solid; + border-color: @select-dropdownitem-background-color; +} +.claro .dijitComboBoxMenu .dijitMenuItemSelected { + color:@selected-text-color; + border-color:@hovered-border-color; + background-color:@hovered-background-color; +} +.claro .dijitComboBoxMenu .dijitMenuItemHover { + color: #000000; + border-color: #769dc0; + background-color: #abd6ff; + background-position: 0 0; +} +.claro .dijitComboBoxMenuActive .dijitMenuItemSelected { + background-position:0 -177px; + background-color: @select-dropdownitem-hovered-background-color; /* TODO: why is this a different color than normal .dijitMenuItemSelected? */ +} +.claro .dijitMenuPreviousButton, .claro .dijitMenuNextButton { + font-style: italic; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu_rtl.css new file mode 100644 index 0000000..2b96cba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu_rtl.css @@ -0,0 +1,8 @@ +.claro .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; + margin-right: 0; + margin-left: 3px; +} +.claro .dijitMenuItemRtl .dijitMenuItemIcon { + margin: 0 4px 0 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu_rtl.less new file mode 100644 index 0000000..6f669f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Menu_rtl.less @@ -0,0 +1,11 @@ +@import "variables"; + +.claro .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; + margin-right: 0; + margin-left: 3px; +} + +.claro .dijitMenuItemRtl .dijitMenuItemIcon { + margin:0 4px 0 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/ProgressBar.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/ProgressBar.css new file mode 100644 index 0000000..925021f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/ProgressBar.css @@ -0,0 +1,63 @@ +/* ProgressBar + * + * Styling of the ProgressBar consists of the following: + * + * 1. the base progress bar + * .dijitProgressBar - sets margins for the progress bar + * + * 2. the empty bar + * .dijitProgressBarEmpty - sets background img and color for bar or parts of bar that are not finished yet + * Also sets border color for whole bar + * + * 3. tile mode + * .dijitProgressBarTile + * inner container for finished portion when in 'tile' (image) mode + * + * 4. full bar mode + * .dijitProgressBarFull + * adds border to right side of the filled portion of bar + * + * 5. text for label of bar + * .dijitProgressBarLabel - sets text color, which must contrast with both the "Empty" and "Full" parts. + * + * 6. indeterminate mode + * .dijitProgressBarIndeterminate .dijitProgressBarTile + * sets animated gif for the progress bar in 'indeterminate' mode + */ +.claro .dijitProgressBar { + margin: 2px 0 2px 0; +} +.claro .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + + background: #ffffff url("images/progressBarEmpty.png") no-repeat left; + border-color: #759dc0; +} +.claro .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + + background: #abd6ff url("images/progressBarFull.png") repeat-x top; +} +.dj_ie6 .claro .dijitProgressBarTile { + background-image: none; +} +.claro .dijitProgressBarFull { + border-right: 1px solid #759dc0; + -webkit-transition-property: width; + -moz-transition-property: width; + transition-property: width; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.claro .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + + color: #000000; +} +.claro .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode; + background-color won't appear unless user has turned off background images */ + + background: #efefef url("images/progressBarAnim.gif") repeat-x top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/ProgressBar.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/ProgressBar.less new file mode 100644 index 0000000..8edf426 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/ProgressBar.less @@ -0,0 +1,58 @@ +/* ProgressBar + * + * Styling of the ProgressBar consists of the following: + * + * 1. the base progress bar + * .dijitProgressBar - sets margins for the progress bar + * + * 2. the empty bar + * .dijitProgressBarEmpty - sets background img and color for bar or parts of bar that are not finished yet + * Also sets border color for whole bar + * + * 3. tile mode + * .dijitProgressBarTile + * inner container for finished portion when in 'tile' (image) mode + * + * 4. full bar mode + * .dijitProgressBarFull + * adds border to right side of the filled portion of bar + * + * 5. text for label of bar + * .dijitProgressBarLabel - sets text color, which must contrast with both the "Empty" and "Full" parts. + * + * 6. indeterminate mode + * .dijitProgressBarIndeterminate .dijitProgressBarTile + * sets animated gif for the progress bar in 'indeterminate' mode + */ + + @import "variables"; + +.claro .dijitProgressBar { + margin:2px 0 2px 0; +} +.claro .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + background: @progressbar-empty-background-color url(@image-progressbar-empty) no-repeat left; + border-color: @progressbar-border-color; +} +.claro .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + background: @progressbar-full-background-color url(@image-progressbar-full) repeat-x top; +} +.dj_ie6 .claro .dijitProgressBarTile { + background-image: none; +} +.claro .dijitProgressBarFull { + border-right:1px solid @progressbar-border-color; + .transition-property(width); + .transition-duration(.25s); +} +.claro .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color: @progressbar-text-color; +} +.claro .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode; + background-color won't appear unless user has turned off background images */ + background: @bar-background-color url(@image-progressbar-anim) repeat-x top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/README b/js/dojo-release-1.7.2-src/dijit/themes/claro/README new file mode 100644 index 0000000..3b4b4aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/README @@ -0,0 +1,41 @@ +These are "less" files that compile into the CSS of claro. + +--------- +Installing and running on Windows: + +1. Install node: + a) Go to https://github.com/ajaxorg/node-builds, press download button, and select "download zip" + b) unzip the file into C:\ + +2. Add node environment variables: + + a) open Control Panel --> click System icon --> select Advanced tab --> click Environment variables button + b) press "edit" on path + c) depending on what directory you unzipped to and the exact filenames, you will add something like + + ;C:\ajaxorg-node-builds-0fcee7d\win32 + +4. To compile all the files: + + C:\> cd C:\myworkspace\dijit\themes\claro + C:\> node compile.js + +-------- +To install/run less version 2 on mac: + +1. Install Node.js + Download a built copy from https://github.com/ajaxorg/node-builds. + Alternately, go to http://nodejs.org/#download (./configure, make, make install). + +2. Edit .bash_profile etc. to add node to your path + + export PATH=$PATH:/opt/less/bin + +To compile all the files: + + $ cd dijit/themes/claro + $ node compile.js + +----- + +See http://lesscss.org/ and https://github.com/cloudhead/less.js/ for more information. diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker.css new file mode 100644 index 0000000..c8d6bb2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker.css @@ -0,0 +1,130 @@ +/* Time Picker + * + * Styling the Time Picker consists of the following: + * + * 1. minor time values + * .dijitTimePickerTick - set text color, size, background color of minor values + * .dijitTimePickerTickHover - set hover style of minor time values + * dijitTimePickerTickSelected - set selected style of minor time values + * + * 2. major time values - 1:00, 2:00, times on the hour + * set text color, size, background color, left/right margins for "zoom" affect + * .dijitTimePickerMarkerHover - to set hover style of major time values + * .dijitTimePickerMarkerSelected - set selected style of major time values + * + * 3. up and down arrow buttons + * .dijitTimePicker .dijitButtonNode - background-color, border + * .dijitTimePicker .dijitUpArrowHover, .dijitTimePicker .dijitDownArrowHover - set background-color for hover state + * + * Other classes provide the fundamental structure of the TimePicker and should not be modified. + */ +/* override Button.css */ +.claro .dijitTimePicker .dijitButtonNode { + padding: 0 0; + -moz-border-radius: 0; + border-radius: 0; +} +.claro .dijitTimePicker { + border: 1px #b5bcc7 solid; + border-top: none; + border-bottom: none; + background-color: #fff; + /* TODO: useless? Appears to be overridden by settings on individual elements */ + +} +.claro .dijitTimePickerItem { + /* dijitTimePickerItem refers to both Tick's (minor values like 2:15, 2:30, 2:45) and Marker's (major values like 2PM, 3PM) */ + + background-image: url("images/commonHighlight.png"); + background-position: 0 -1px; + background-repeat: repeat-x; + border-top: solid 1px #b5bcc7; + border-bottom: solid 1px #b5bcc7; + margin-right: -1px; + margin-left: -1px; + margin-top: -1px; +} +/* to make up for lack of alpha transparency in IE6 */ +.dj_ie6 .claro .dijitTimePickerItem { + background-image: none; +} +.claro .dijitTimePickerTick { + /* minor value */ + + color: #818181; + background-color: #efefef; + font-size: 0.818em; +} +.claro .dijitTimePickerMarker { + /* major value - 1:00, 2:00, times on the hour */ + + background-color: #e5f2fe; + font-size: 1em; + white-space: nowrap; +} +.claro .dijitTimePickerTickHover, +.claro .dijitTimePickerMarkerHover, +.claro .dijitTimePickerMarkerSelected, +.claro .dijitTimePickerTickSelected { + background-color: #7dbdfa; + border: solid 1px #b5bcc7; + margin-left: -7px; + margin-right: -7px; + color: #000000; +} +.claro .dijitTimePickerMarkerSelected, .claro .dijitTimePickerTickSelected { + font-size: 1em; +} +.dj_ie .claro .dijitTimePickerTickHover, +.dj_ie .claro .dijitTimePickerMarkerHover, +.dj_ie .claro .dijitTimePickerMarkerSelected, +.dj_ie .claro .dijitTimePickerTickSelected { + width: 114%; +} +.dj_ie6 .claro .dijitTimePickerTickHover, +.dj_ie6 .claro .dijitTimePickerMarkerHover, +.dj_ie6 .claro .dijitTimePickerMarkerSelected, +.dj_ie6 .claro .dijitTimePickerTickSelected { + position: relative; + /* creates widening of element */ + zoom: 1; + /* creates widening of element */ + +} +.claro .dijitTimePickerTick .dijitTimePickerItemInner { + padding: 1px; + margin: 0; +} +.claro .dijitTimePicker .dijitButtonNode { + border-left: none; + border-right: none; + border-color: #b5bcc7; + background-color: #efefef; + background-image: url("images/commonHighlight.png"); + background-position: 0 -1px; + background-repeat: repeat-x; +} +.dj_ie6 .claro .dijitTimePicker .dijitButtonNode { + background-image: none; +} +.claro .dijitTimePicker .dijitArrowButtonInner { + height: 100%; + /* hack claro.button.css */ + + background-image: url("form/images/commonFormArrows.png"); + background-repeat: no-repeat; + background-position: -140px 45%; +} +.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner { + background-position: -35px 45%; +} +/* hover */ +.claro .dijitTimePicker .dijitUpArrowHover, .claro .dijitTimePicker .dijitDownArrowHover { + background-color: #abd6ff; +} +.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner { + background-position: -175px 45%; +} +.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner { + background-position: -70px 45%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker.less new file mode 100644 index 0000000..a6253f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker.less @@ -0,0 +1,124 @@ +/* Time Picker + * + * Styling the Time Picker consists of the following: + * + * 1. minor time values + * .dijitTimePickerTick - set text color, size, background color of minor values + * .dijitTimePickerTickHover - set hover style of minor time values + * dijitTimePickerTickSelected - set selected style of minor time values + * + * 2. major time values - 1:00, 2:00, times on the hour + * set text color, size, background color, left/right margins for "zoom" affect + * .dijitTimePickerMarkerHover - to set hover style of major time values + * .dijitTimePickerMarkerSelected - set selected style of major time values + * + * 3. up and down arrow buttons + * .dijitTimePicker .dijitButtonNode - background-color, border + * .dijitTimePicker .dijitUpArrowHover, .dijitTimePicker .dijitDownArrowHover - set background-color for hover state + * + * Other classes provide the fundamental structure of the TimePicker and should not be modified. + */ + +@import "variables"; + +/* override Button.css */ +.claro .dijitTimePicker .dijitButtonNode { + padding: 0 0; + .border-radius(0); +} +.claro .dijitTimePicker{ + border:1px @border-color solid; + border-top:none; + border-bottom:none; + background-color:#fff; /* TODO: useless? Appears to be overridden by settings on individual elements */ +} +.claro .dijitTimePickerItem{ + /* dijitTimePickerItem refers to both Tick's (minor values like 2:15, 2:30, 2:45) and Marker's (major values like 2PM, 3PM) */ + background-image: url(@image-common-highlight); + background-position:0 -1px; + background-repeat:repeat-x; + border-top:solid 1px @border-color; + border-bottom:solid 1px @border-color; + margin-right:-1px; + margin-left:-1px; + margin-top:-1px; +} +/* to make up for lack of alpha transparency in IE6 */ +.dj_ie6 .claro .dijitTimePickerItem { + background-image: none; +} +.claro .dijitTimePickerTick { + /* minor value */ + color:@timepicker-minorvalue-text-color; + background-color:@timepicker-minorvalue-background-color; + font-size:0.818em; +} +.claro .dijitTimePickerMarker { + /* major value - 1:00, 2:00, times on the hour */ + background-color: @timepicker-majorvalue-background-color; + font-size: 1em; + white-space: nowrap; +} +.claro .dijitTimePickerTickHover, +.claro .dijitTimePickerMarkerHover, +.claro .dijitTimePickerMarkerSelected, +.claro .dijitTimePickerTickSelected { + background-color: @timepicker-value-hovered-background-color; + border:solid 1px @border-color; + margin-left:-7px; + margin-right:-7px; + color:@timepicker-value-hovered-text-color; +} +.claro .dijitTimePickerMarkerSelected, +.claro .dijitTimePickerTickSelected { + font-size: 1em; +} +.dj_ie .claro .dijitTimePickerTickHover, +.dj_ie .claro .dijitTimePickerMarkerHover, +.dj_ie .claro .dijitTimePickerMarkerSelected, +.dj_ie .claro .dijitTimePickerTickSelected { + width: 114%; +} +.dj_ie6 .claro .dijitTimePickerTickHover, +.dj_ie6 .claro .dijitTimePickerMarkerHover, +.dj_ie6 .claro .dijitTimePickerMarkerSelected, +.dj_ie6 .claro .dijitTimePickerTickSelected { + position: relative; /* creates widening of element */ + zoom: 1; /* creates widening of element */ +} +.claro .dijitTimePickerTick .dijitTimePickerItemInner { + padding:1px; + margin:0; +} +.claro .dijitTimePicker .dijitButtonNode { + border-left:none; + border-right:none; + border-color:@border-color; + background-color: @unselected-background-color; + background-image: url(@image-common-highlight); + background-position:0 -1px; + background-repeat:repeat-x; +} +.dj_ie6 .claro .dijitTimePicker .dijitButtonNode { + background-image: none; +} +.claro .dijitTimePicker .dijitArrowButtonInner{ + height: 100%; /* hack claro.button.css */ + background-image: url(@image-form-common-arrows); + background-repeat: no-repeat; + background-position:-140px 45%; +} +.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner{ + background-position:-35px 45%; +} +/* hover */ +.claro .dijitTimePicker .dijitUpArrowHover, +.claro .dijitTimePicker .dijitDownArrowHover { + background-color: @timepicker-arrow-hovered-background-color; +} +.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner { + background-position:-175px 45%; +} +.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner { + background-position:-70px 45%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker_rtl.css new file mode 100644 index 0000000..6dfcf83 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker_rtl.css @@ -0,0 +1,9 @@ +/* TimePicker */ +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickHover, +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerHover, +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerSelected, +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickSelected { + margin-left: -6px; + margin-right: -8px; + width: 114%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker_rtl.less new file mode 100644 index 0000000..44f5da5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TimePicker_rtl.less @@ -0,0 +1,12 @@ +/* TimePicker */ + +@import "variables"; + +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickHover, +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerHover, +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerSelected, +.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickSelected { + margin-left:-6px; + margin-right:-8px; + width: 114%; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane.css new file mode 100644 index 0000000..1415615 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane.css @@ -0,0 +1,71 @@ +/* TitlePane + * + * Styling TitlePane means styling the TitlePane title and its content container (dijitTitlePane) + * + * TitlePane title: + * 1. TitlePane title (default styling): + * .dijitTitlePaneTitle - TitlePane's title div style: background-color, border + * + * 2. hovered TitlePane title (ie, mouse hover on a title bar) + * .dijitTitlePaneTitleHover - styles when mouse hover on the title div + * + * 3. active TitlePane title (ie, mouse down on a title bar) + * .dijitTitlePaneTitleActive - styles when mouse down on the title div + * + * + * TitlePane Content Container: + * 1. outer/inner container: + * .dijitTitlePaneContentOuter / dijitTitlePaneContentInner - styles for the content outer div + */ +.claro .dijitTitlePaneTitle { + background-color: #efefef; + background-image: url("images/titlebar.png"); + background-repeat: repeat-x; + border: 1px solid #b5bcc7; + padding: 0 7px 3px 7px; + min-height: 17px; +} +.dj_ie6 .claro .dijitTitlePaneTitle { + background-image: none; +} +.claro .dijitTitlePaneTitleHover { + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitTitlePaneTitleActive { + background-color: #7dbdfa; + border-color: #759dc0; + background-position: 0 -136px; +} +.claro .dijitTitlePaneTitleFocus { + margin-top: 3px; + padding-bottom: 2px; +} +.claro .dijitTitlePane .dijitArrowNode { + background-image: url("images/spriteArrows.png"); + background-repeat: no-repeat; + height: 8px; + width: 7px; +} +.claro .dijitTitlePane .dijitOpen .dijitArrowNode { + background-position: 0 0; +} +.claro .dijitTitlePane .dijitClosed .dijitArrowNode { + background-position: -14px 0; +} +.claro .dijitTitlePane .dijitTitlePaneTextNode { + color: #000000; +} +.claro .dijitTitlePaneContentOuter { + background: #ffffff; + border: 1px solid #b5bcc7; + border-top: none; +} +.claro .dijitTitlePaneContentInner { + padding: 10px; +} +.claro .dijitTitlePaneTextNode { + margin-left: 4px; + margin-right: 4px; + vertical-align: text-top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane.less new file mode 100644 index 0000000..89da9f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane.less @@ -0,0 +1,74 @@ +/* TitlePane + * + * Styling TitlePane means styling the TitlePane title and its content container (dijitTitlePane) + * + * TitlePane title: + * 1. TitlePane title (default styling): + * .dijitTitlePaneTitle - TitlePane's title div style: background-color, border + * + * 2. hovered TitlePane title (ie, mouse hover on a title bar) + * .dijitTitlePaneTitleHover - styles when mouse hover on the title div + * + * 3. active TitlePane title (ie, mouse down on a title bar) + * .dijitTitlePaneTitleActive - styles when mouse down on the title div + * + * + * TitlePane Content Container: + * 1. outer/inner container: + * .dijitTitlePaneContentOuter / dijitTitlePaneContentInner - styles for the content outer div + */ + +@import "variables"; + +.claro .dijitTitlePaneTitle { + background-color: @unselected-background-color; // TODO: Mailed Jason, shouldn't this toggle to @selected-background-color when pane opened? + background-image: url(@image-titlebar); + background-repeat:repeat-x; + border:1px solid @border-color; + padding: 0 7px 3px 7px; + min-height:17px; +} +.dj_ie6 .claro .dijitTitlePaneTitle { + background-image: none; +} +.claro .dijitTitlePaneTitleHover { + background-color: @hovered-background-color; + border-color: @hovered-border-color; +} +.claro .dijitTitlePaneTitleActive { + background-color: @pressed-background-color; + border-color: @pressed-border-color; + background-position:0 -136px; +} +.claro .dijitTitlePaneTitleFocus { + margin-top:3px; + padding-bottom:2px; +} +.claro .dijitTitlePane .dijitArrowNode { + background-image: url(@image-arrow-sprite); + background-repeat: no-repeat; + height: 8px; + width: 7px; +} +.claro .dijitTitlePane .dijitOpen .dijitArrowNode { + background-position: 0 0; +} +.claro .dijitTitlePane .dijitClosed .dijitArrowNode { + background-position: -14px 0; +} +.claro .dijitTitlePane .dijitTitlePaneTextNode { + color:@text-color; +} +.claro .dijitTitlePaneContentOuter { + background: @pane-background-color; + border:1px solid @border-color; + border-top:none; +} +.claro .dijitTitlePaneContentInner { + padding:10px; +} +.claro .dijitTitlePaneTextNode { + margin-left: 4px; + margin-right: 4px; + vertical-align:text-top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane_rtl.css new file mode 100644 index 0000000..3f68ab3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane_rtl.css @@ -0,0 +1,4 @@ +/* TitlePane */ +.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode { + background-position: -7px 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane_rtl.less new file mode 100644 index 0000000..693584f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/TitlePane_rtl.less @@ -0,0 +1,7 @@ +/* TitlePane */ + +@import "variables"; + +.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode { + background-position: -7px 0; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar.css new file mode 100644 index 0000000..18c605c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar.css @@ -0,0 +1,189 @@ +/* Toolbar + * + * Styling Toolbar means styling the toolbar container and the widget inside toolbar (dijitToolbar) + * + * 1. toolbar (default styling): + * .dijitToolbar - styles for outer container + * + * 2. widget inside toolbar + * .dijitToolbar .dijitButtonNode - Button widget + * .dijitComboButton - ComboButton widget + * .dijitDropDownButton - DropDownButton widget + * .dijitToggleButton - ToggleButton widget + * + * 3. hovered widget inside toolbar (ie, mouse hover on the widget inside) + * .dijitToolbar .dijitButtonNodeHover - styles for hovered Button widget + * + * 4. actived widget inside toolbar (ie, mouse down on the widget inside) + * .dijitToolbar .dijitButtonNodeActive - mouse down on Button widget + */ +.claro .dijitToolbar { + border-bottom: 1px solid #b5bcc7; + background-color: #efefef; + background-image: url("images/commonHighlight.png"); + background-position: 0 0; + background-repeat: repeat-x; + padding: 2px 0 2px 4px; + zoom: 1; +} +.claro .dijitToolbar label { + padding: 0 3px 0 6px; +} +/** override claro/form/Button.css, and also ComboBox down arrow **/ +.claro .dijitToolbar .dijitButton .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + border-width: 0; + /* on hover/active, border-->1px, padding-->1px */ + + padding: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-transition-property: background-color; + -moz-transition-property: background-color; + transition-property: background-color; + -webkit-transition-duration: 0.3s, 0.35s; + -moz-transition-duration: 0.3s, 0.35s; + transition-duration: 0.3s, 0.35s; + background-image: url("images/commonHighlight.png"); + background-position: 0 -30px; + background-repeat: repeat-x; + background-color: rgba(171, 214, 255, 0); +} +.dj_ie .claro .dijitToolbar .dijitButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboBox .dijitButtonNode { + background-color: transparent; + /* for IE, which doesn't understand rgba(...) */ + +} +.dj_ie6 .claro .dijitToolbar .dijitButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitComboBox .dijitButtonNode { + background: none; + /* because background-color: transparent above doesn't work on IE*/ + +} +/* hover status */ +.dj_ie .claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover, +.dj_ie .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode { + /* button should still turn blue on hover, so need to override .dj_ie rules above */ + + background-color: #abd6ff; +} +/* active status */ +.dj_ie .claro .dijitToolbar .dijitButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + /* button should still turn blue on press, so need to override .dj_ie rules above */ + + background-color: #abd6ff; +} +.claro .dijitToolbar .dijitComboButton .dijitStretch { + /* no rounded border on side adjacent to arrow */ + + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.claro .dijitToolbar .dijitComboButton .dijitArrowButton { + /* no rounded border on side adjacent to button */ + + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + padding: 0; +} +/* hover status */ +.claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode { + background-position: 0 0; + border-width: 1px; + background-color: #abd6ff; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode, .claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + background-position: 0 0; + background-color: #f3ffff; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover, .claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover { + background-color: #abd6ff; +} +/* active status */ +.claro .dijitToolbar .dijitButtonActive .dijitButtonNode, .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + border-width: 1px; + background-color: #7dbdfa; + background-position: 0 -177px; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonActive { + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; + border-width: 1px; + padding: 0; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, .claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + background-color: #f3ffff; + background-position: 0 -177px; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive { + background-color: #7dbdfa; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive { + background-color: #7dbdfa; +} +/* Avoid double border between button and arrow */ +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton, .claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + border-left-width: 0; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + padding-left: 2px; + /* since there's no left border, don't reduce from 2px --> 1px */ + +} +/* toggle button checked status */ +.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode { + margin: 0; + /* remove margin and add a border */ + + border-width: 1px; + border-style: solid; + background-image: none; + border-color: #759dc0; + background-color: #ffffff; + padding: 1px; +} +.dj_ie6 .claro .dijitToolbar { + background-image: none; +} +.claro .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + + background: url("../../icons/images/editorIconsEnabled.png"); +} +/* Toolbar inside of disabled Editor */ +.claro .dijitDisabled .dijitToolbar { + background: none; + background-color: #efefef; + border-bottom: 1px solid #d3d3d3; +} +.claro .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner { + background-position: 0 50%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar.less new file mode 100644 index 0000000..b61e819 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar.less @@ -0,0 +1,187 @@ +/* Toolbar + * + * Styling Toolbar means styling the toolbar container and the widget inside toolbar (dijitToolbar) + * + * 1. toolbar (default styling): + * .dijitToolbar - styles for outer container + * + * 2. widget inside toolbar + * .dijitToolbar .dijitButtonNode - Button widget + * .dijitComboButton - ComboButton widget + * .dijitDropDownButton - DropDownButton widget + * .dijitToggleButton - ToggleButton widget + * + * 3. hovered widget inside toolbar (ie, mouse hover on the widget inside) + * .dijitToolbar .dijitButtonNodeHover - styles for hovered Button widget + * + * 4. actived widget inside toolbar (ie, mouse down on the widget inside) + * .dijitToolbar .dijitButtonNodeActive - mouse down on Button widget + */ + +@import "variables"; + +.claro .dijitToolbar { + border-bottom: 1px solid @border-color; + background-color: @bar-background-color; + background-image: url(@image-common-highlight); + background-position:0 0; + background-repeat:repeat-x; + padding: 2px 0 2px 4px; + zoom: 1; +} + +.claro .dijitToolbar label { + padding: 0 3px 0 6px; +} + +/** override claro/form/Button.css, and also ComboBox down arrow **/ +.claro .dijitToolbar .dijitButton .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + border-width: 0; /* on hover/active, border-->1px, padding-->1px */ + padding: 2px; + .border-radius(@toolbar-button-border-radius); + .box-shadow(none); + .transition-property(background-color); + .transition-duration(.3s, .35s); + + background-image: url(@image-common-highlight); + background-position:0 -30px; + background-repeat:repeat-x; + background-color:rgba(171,214,255,0); +} +.dj_ie .claro .dijitToolbar .dijitButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboBox .dijitButtonNode { + background-color: transparent; /* for IE, which doesn't understand rgba(...) */ +} +.dj_ie6 .claro .dijitToolbar .dijitButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.dj_ie6 .claro .dijitToolbar .dijitComboBox .dijitButtonNode { + background: none; /* because background-color: transparent above doesn't work on IE*/ +} +/* hover status */ +.dj_ie .claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover, +.dj_ie .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode { + /* button should still turn blue on hover, so need to override .dj_ie rules above */ + background-color: @button-hovered-background-color; +} + +/* active status */ +.dj_ie .claro .dijitToolbar .dijitButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + /* button should still turn blue on press, so need to override .dj_ie rules above */ + background-color: @button-pressed-background-color; +} + +.claro .dijitToolbar .dijitComboButton .dijitStretch { + /* no rounded border on side adjacent to arrow */ + .border-radius(@toolbar-button-border-radius 0 0 @toolbar-button-border-radius); +} +.claro .dijitToolbar .dijitComboButton .dijitArrowButton { + /* no rounded border on side adjacent to button */ + .border-radius(0 @toolbar-button-border-radius @toolbar-button-border-radius 0); +} + +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + padding: 0; +} + +/* hover status */ +.claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode { + background-position:0 0; + border-width:1px; + background-color: @hovered-background-color; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + background-position:0 0; + background-color: @toolbar-combobutton-hovered-unhoveredsection-background-color; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover, +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover { + background-color: @hovered-background-color; +} + +/* active status */ +.claro .dijitToolbar .dijitButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + border-width: 1px; + background-color:@pressed-background-color; + background-position:0 -177px; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonActive { + .transition-duration(.2s); + border-width: 1px; + padding: 0; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + background-color: @toolbar-combobutton-hovered-unhoveredsection-background-color; + background-position:0 -177px; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive { + background-color: @pressed-background-color; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive { + background-color: @pressed-background-color; +} + +/* Avoid double border between button and arrow */ +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton, +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + border-left-width: 0; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + padding-left: 2px; /* since there's no left border, don't reduce from 2px --> 1px */ +} + +/* toggle button checked status */ +.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode { + margin: 0; /* remove margin and add a border */ + border-width: 1px; + border-style: solid; + background-image: none; + border-color: @selected-border-color; + background-color: @toolbar-button-checked-background-color; + padding: 1px; +} + +.dj_ie6 .claro .dijitToolbar { + background-image: none; +} + +.claro .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + background: url(@image-editor-icons-enabled); +} + +/* Toolbar inside of disabled Editor */ +.claro .dijitDisabled .dijitToolbar { + background:none; + background-color:@disabled-background-color; + border-bottom: 1px solid @disabled-border-color; +} + +.claro .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner { + background-position:0 50%; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar_rtl.css new file mode 100644 index 0000000..2fab1de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar_rtl.css @@ -0,0 +1,30 @@ +/* Toolbar RTL */ +/* Repeated rules from Toolbar.css to override rule from Button_rtl.css, which is loaded after Toolbar.css */ +.claro .dijitToolbar .dijitComboButtonRtl .dijitButtonNode { + border-width: 0; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode, .claro .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode { + border-width: 1px; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonRtl .dijitStretch { + /* no rounded border on side adjacent to arrow */ + + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.claro .dijitToolbar .dijitComboButtonRtl .dijitArrowButton { + /* no rounded border on side adjacent to button */ + + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton, .claro .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton { + /* border between button and arrow */ + + border-left-width: 1px; + border-right-width: 0; + padding-left: 1px; + padding-right: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar_rtl.less new file mode 100644 index 0000000..8d31c88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Toolbar_rtl.less @@ -0,0 +1,32 @@ +/* Toolbar RTL */ + +@import "variables"; + +/* Repeated rules from Toolbar.css to override rule from Button_rtl.css, which is loaded after Toolbar.css */ +.claro .dijitToolbar .dijitComboButtonRtl .dijitButtonNode { + border-width: 0; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode { + border-width: 1px; + padding: 1px; +} + +.claro .dijitToolbar .dijitComboButtonRtl .dijitStretch { + /* no rounded border on side adjacent to arrow */ + .border-radius(0 2px 2px 0); +} +.claro .dijitToolbar .dijitComboButtonRtl .dijitArrowButton { + /* no rounded border on side adjacent to button */ + .border-radius(2px 0 0 2px); +} + +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton, +.claro .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton { + /* border between button and arrow */ + border-left-width: 1px; + border-right-width: 0; + padding-left: 1px; + padding-right: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Tree.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/Tree.css new file mode 100644 index 0000000..738bb33 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Tree.css @@ -0,0 +1,134 @@ +/* Tree + * + * Styling Tree mostly means styling the TreeRow (dijitTreeRow) + * There are 4 basic states to style: + * + * Tree Row: + * 1. tree row (default styling): + * .dijitTreeRow - styles for each row of the tree + * + * 2. hovered tree row (mouse hover on a tree row) + * .dijitTreeRowHover - styles when mouse over on one row + * + * 3. active tree row (mouse down on a tree row) + * .dijitTreeRowActive - styles when mouse down on one row + * + * 4. selected tree row + * dijitTreeRowSelected - style when the row has been selected + * + * Tree Expando: + * dijitTreeExpando - the expando at the left of the text of each tree row + * + * Drag and Drop on TreeNodes: (insert line on dijitTreeContent node so it'll aligned w/ target element) + * .dijitTreeNode .dojoDndItemBefore/.dojoDndItemAfter - use border style simulate a separate line + */ +.claro .dijitTreeNode { + zoom: 1; + /* force layout on IE (TODO: may not be needed anymore) */ + +} +.claro .dijitTreeIsRoot { + background-image: none; +} +/* Styling for basic tree node (unhovered, unselected) + * Also use this styling when dropping between items on the tree (in other words, don't + * use hover effect) + */ +.claro .dijitTreeRow, .claro .dijitTreeNode .dojoDndItemBefore, .claro .dijitTreeNode .dojoDndItemAfter { + /* so insert line shows up on IE when dropping after a target element */ + + padding: 4px 1px 2px 0; + margin: 0 1px; + /* replaced by border for selected/hovered row */ + + background-color: none; + background-color: transparent; + background-color: rgba(171, 214, 255, 0); + background-position: 0 0; + background-repeat: repeat-x; + border-color: rgba(118, 157, 192, 0); + border-width: 0; + color: #000000; + -webkit-transition-property: background-color, border-color; + -moz-transition-property: background-color, border-color; + transition-property: background-color, border-color; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + transition-timing-function: ease-out; +} +.claro .dijitTreeRowSelected { + background-repeat: repeat-x; + background-color: #cfe5fa; + background-image: url("images/commonHighlight.png"); + padding: 3px 0 1px; + margin: 0; + border: solid 1px #759dc0; + color: #000000; +} +.claro .dijitTreeRowHover { + background-color: #abd6ff; + background-image: url("images/commonHighlight.png"); + padding: 3px 0 1px; + margin: 0; + border: solid 1px #759dc0; + color: #000000; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.claro .dijitTreeRowActive { + background-color: #7dbdfa; + background-image: url("images/commonHighlight.png"); + background-position: 0 -177px; + padding: 3px 0 1px; + margin-left: 0; + border: solid 1px #759dc0; + color: #000000; +} +.dj_ie6 .claro .dijitTreeRow { + background-image: none; +} +.claro .dijitTreeRowFocused { + background-repeat: repeat; +} +/* expando (open/closed) icon */ +.claro .dijitTreeExpando { + background-image: url("images/treeExpandImages.png"); + width: 16px; + height: 16px; + background-position: -35px 0; + /* for dijitTreeExpandoOpened */ + +} +.dj_ie6 .claro .dijitTreeExpando { + background-image: url("images/treeExpandImages8bit.png"); +} +.claro .dijitTreeRowHover .dijitTreeExpandoOpened { + background-position: -53px 0; +} +.claro .dijitTreeExpandoClosed { + background-position: 1px 0; +} +.claro .dijitTreeRowHover .dijitTreeExpandoClosed { + background-position: -17px 0; +} +.claro .dijitTreeExpandoLeaf, .dj_ie6 .claro .dijitTreeExpandoLeaf { + background-image: none; +} +.claro .dijitTreeExpandoLoading { + background-image: url("images/loadingAnimation.gif"); +} +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + border-top: 2px solid #759dc0; +} +.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + border-bottom: 2px solid #759dc0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/Tree.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/Tree.less new file mode 100644 index 0000000..ff6cd5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/Tree.less @@ -0,0 +1,134 @@ +/* Tree + * + * Styling Tree mostly means styling the TreeRow (dijitTreeRow) + * There are 4 basic states to style: + * + * Tree Row: + * 1. tree row (default styling): + * .dijitTreeRow - styles for each row of the tree + * + * 2. hovered tree row (mouse hover on a tree row) + * .dijitTreeRowHover - styles when mouse over on one row + * + * 3. active tree row (mouse down on a tree row) + * .dijitTreeRowActive - styles when mouse down on one row + * + * 4. selected tree row + * dijitTreeRowSelected - style when the row has been selected + * + * Tree Expando: + * dijitTreeExpando - the expando at the left of the text of each tree row + * + * Drag and Drop on TreeNodes: (insert line on dijitTreeContent node so it'll aligned w/ target element) + * .dijitTreeNode .dojoDndItemBefore/.dojoDndItemAfter - use border style simulate a separate line + */ + +@import "variables"; + +.claro .dijitTreeNode { + zoom: 1; /* force layout on IE (TODO: may not be needed anymore) */ +} +.claro .dijitTreeIsRoot { + background-image: none; +} + +/* Styling for basic tree node (unhovered, unselected) + * Also use this styling when dropping between items on the tree (in other words, don't + * use hover effect) + */ +.claro .dijitTreeRow, +.claro .dijitTreeNode .dojoDndItemBefore, +.claro .dijitTreeNode .dojoDndItemAfter { + /* so insert line shows up on IE when dropping after a target element */ + padding: 4px 1px 2px 0; + margin: 0 1px; /* replaced by border for selected/hovered row */ + + background-color: none; // IE6 doesn't understand rgba() or transparent below + background-color: transparent; // IE8 doesn't understand rgba() below + background-color: rgba(171,214,255,0); // rgba() instead of transparent to prevent flash on hover fade-in + background-position:0 0; + background-repeat:repeat-x; + + border-color: rgba(118,157,192,0); // rgba() instead of none to prevent flash on hover fade-in + border-width: 0; + + color: @text-color; + + .transition-property(background-color, border-color); + .transition-duration(.25s); + .transition-timing-function(ease-out); +} + +.claro .dijitTreeRowSelected { + background-repeat:repeat-x; + background-color:@selected-background-color; + background-image: url(@image-common-highlight); + padding: 3px 0 1px; + margin: 0; + border:solid 1px @selected-border-color; + color:@selected-text-color; +} +.claro .dijitTreeRowHover { + background-color:@hovered-background-color; + background-image: url(@image-common-highlight); + padding: 3px 0 1px; + margin: 0; + border:solid 1px @hovered-border-color; + color:@hovered-text-color; + .transition-duration(.25s); +} +.claro .dijitTreeRowActive { + background-color:@pressed-background-color; + background-image: url(@image-common-highlight); + background-position:0 -177px; + padding: 3px 0 1px; + margin-left: 0; + border:solid 1px @pressed-border-color; + color:@selected-text-color; +} +.dj_ie6 .claro .dijitTreeRow { + background-image: none; +} +.claro .dijitTreeRowFocused { + background-repeat: repeat; +} + +/* expando (open/closed) icon */ + +.claro .dijitTreeExpando { + background-image: url(@image-tree-expand); + width: 16px; + height: 16px; + background-position: -35px 0; /* for dijitTreeExpandoOpened */ +} +.dj_ie6 .claro .dijitTreeExpando { + background-image: url(@image-tree-expand-ie6); +} +.claro .dijitTreeRowHover .dijitTreeExpandoOpened { + background-position: -53px 0; +} +.claro .dijitTreeExpandoClosed { + background-position: 1px 0; +} +.claro .dijitTreeRowHover .dijitTreeExpandoClosed { + background-position: -17px 0; +} +.claro .dijitTreeExpandoLeaf, +.dj_ie6 .claro .dijitTreeExpandoLeaf { + background-image:none; +} +.claro .dijitTreeExpandoLoading { + background-image: url(@image-loading-animation); +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + border-top: 2px solid @dnd-dropseparator-color; // TODO: normal separator is just 1px, why is this 2px? +} +.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + border-bottom: 2px solid @dnd-dropseparator-color; // TODO: normal separator is just 1px, why is this 2px? +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/claro.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/claro.css new file mode 100644 index 0000000..d3cb268 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/claro.css @@ -0,0 +1,28 @@ +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Select.css"); +@import url("layout/TabContainer.css"); +@import url("Dialog.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/ContentPane.css"); +@import url("Calendar.css"); +@import url("Menu.css"); +@import url("form/Slider.css"); +@import url("ColorPalette.css"); +@import url("InlineEditBox.css"); +@import url("ProgressBar.css"); +@import url("TimePicker.css"); +@import url("layout/BorderContainer.css"); +@import url("Tree.css"); +@import url("Toolbar.css"); +@import url("Editor.css");/*in order to test button or menu item with icon */ +@import url("../../icons/editorIcons.css"); /*sprite for editor icons to be used by all themes*/ +@import url("TitlePane.css"); +@import url("form/NumberSpinner.css"); + +@import url("claro_rtl.css"); diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/claro_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/claro_rtl.css new file mode 100644 index 0000000..6f85707 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/claro_rtl.css @@ -0,0 +1,16 @@ +/* RTL files */ +@import url("../dijit_rtl.css"); +@import url("form/Common_rtl.css"); +@import url("form/Button_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("form/Slider_rtl.css"); +@import url("form/Select_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css");/* RTL sprite for editor icons to be used by all themes*/ +@import url("../../icons/commonIcons_rtl.css");/* RTL sprite for common icons to be used by all themes*/ +@import url("TitlePane_rtl.css"); +@import url("Menu_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Toolbar_rtl.css"); diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/compile.js b/js/dojo-release-1.7.2-src/dijit/themes/claro/compile.js new file mode 100644 index 0000000..08e6375 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/compile.js @@ -0,0 +1,52 @@ +// Script to process all the less files and convert them to CSS files +// Run from themes/dijit/claro like: +// +// $ node compile.js + +var fs = require('fs'), // file system access + path = require('path'), // get directory from file name + less = require('../../../util/less'); // less processor + +var options = { + compress: false, + optimization: 1, + silent: false +}; + +var allFiles = [].concat( + fs.readdirSync("."), + fs.readdirSync("form").map(function(fname){ return "form/"+fname; }), + fs.readdirSync("layout").map(function(fname){ return "layout/"+fname; }) + ), + lessFiles = allFiles.filter(function(name){ return name && name != "variables.less" && /\.less$/.test(name); }); + +lessFiles.forEach(function(fname){ + console.log("=== " + fname); + fs.readFile(fname, 'utf-8', function(e, data){ + if(e){ + console.error("lessc: " + e.message); + process.exit(1); + } + + new(less.Parser)({ + paths: [path.dirname(fname)], + optimization: options.optimization, + filename: fname + }).parse(data, function(err, tree){ + if(err){ + less.writeError(err, options); + process.exit(1); + }else{ + try{ + var css = tree.toCSS({ compress: options.compress }), + outputFname = fname.replace('.less', '.css'); + var fd = fs.openSync(outputFname, "w"); + fs.writeSync(fd, css, 0, "utf8"); + }catch(e){ + less.writeError(e, options); + process.exit(2); + } + } + }); + }); +}); diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/document.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/document.css new file mode 100644 index 0000000..64e470c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/document.css @@ -0,0 +1,41 @@ +@import url("../../../dojo/resources/dojo.css"); +/* ======= Styling for the document itself (overriding dojo.css) ======== */ +.claro { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: .688em; + color: #131313; +} +/* Headings */ +.claro h1 { + font-size: 1.545em; + margin-bottom: 0.727em; +} +.claro h2 { + font-size: 1.364em; + line-height: 1.455em; + margin-top: 1em; + margin-bottom: 0.60em; + font-weight: normal; +} +.claro h3, +.claro h4, +.claro h5, +.claro h6 { + font-size: 1.091em; + font-weight: normal; +} +/* paragraphs, quotes and lists */ +.claro p { + line-height: 1.3em; +} +/* pre and code */ +.claro pre, .claro code { + font-family: inherit; + background-color: #efefef; + border: 1px solid #d3d3d3; +} +/* tables */ +.claro table.dojoTabular thead, .claro table.dojoTabular tfoot { + background-color: #efefef; + border: 1px solid #d3d3d3; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/document.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/document.less new file mode 100644 index 0000000..7f86356 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/document.less @@ -0,0 +1,45 @@ +/* ======= Styling for the document itself (overriding dojo.css) ======== */ + +@import "variables"; +@import url("../../../dojo/resources/dojo.css"); + +.claro { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: .688em; + color: @document-text-color; +} + +/* Headings */ +.claro h1 { + font-size: 1.545em; + margin-bottom:0.727em; +} +.claro h2 { + font-size: 1.364em; + line-height: 1.455em; + margin-top:1em; + margin-bottom:0.60em; + font-weight: normal; +} +.claro h3, .claro h4, .claro h5, .claro h6 { + font-size:1.091em; + font-weight: normal; +} + +/* paragraphs, quotes and lists */ +.claro p { + line-height: 1.3em; +} + +/* pre and code */ +.claro pre, .claro code { + font-family:inherit; + background-color: @document-shadedsection-background-color; + border: 1px solid @document-border-color; +} + +/* tables */ +.claro table.dojoTabular thead, .claro table.dojoTabular tfoot { + background-color: @document-shadedsection-background-color; + border: 1px solid @document-border-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button.css new file mode 100644 index 0000000..bc7c3dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button.css @@ -0,0 +1,162 @@ +/* Button | DropDownButton | ComboButton | ToggleButton + * + * Styling Buttons mainly includes: + * + * 1. Containers + * .dijitButton + * .dijitDropDownButton + * .dijitComboButton + * .dijitButtonNode - common button/arrow wrapper shared across all three button types + * + * 2. Button text + * .dijitButtonText + * + * 3. Arrows - only for DropDownButton and ComboButton + * There are total four directions arrows - down, left, right, up: + * .dijitArrowButtonInner - down arrow by default + * .dijitLeftArrowButton .dijitArrowButtonInner - left arrow + * .dijitRightArrowButton .dijitArrowButtonInner - right arrow + * .dijitUpArrowButton .dijitArrowButtonInner - up arrow + * + * 4. States - Hover, Active, Disabled, e.g. + * .dijitButtonHover .dijitButtonNode + * .dijitButtonActive .dijitButtonNode + * .dijitButtonDisabled .dijitButtonNode + * + * .dijitDisabled .dijitArrowButtonInner - disabled arrow states + */ +.claro .dijitButtonNode { + /* rules for dijit.form.*Button widgets and arrow nodes on ComboBox, Spinner etc. */ + + -webkit-transition-property: background-color; + -moz-transition-property: background-color; + transition-property: background-color; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; +} +.claro .dijitButton .dijitButtonNode, +.claro .dijitDropDownButton .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNode, +.claro .dijitToggleButton .dijitButtonNode { + /* rules for the dijit.form.*Button widgets (see also ComboButton section below) */ + + border: 1px solid #759dc0; + padding: 2px 4px 4px 4px; + background-image: url("../form/images/button.png"); + background-position: center top; + background-repeat: repeat-x; + background-color: #e5f2fe; + color: #000000; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); +} +.claro .dijitComboButton .dijitArrowButton { + border-left-width: 0; + padding: 4px 2px 4px 2px; + /* TODO: still needed? */ + +} +/*arrow styles for down/up/left/right directions*/ +.claro .dijitArrowButtonInner { + width: 15px; + height: 15px; + margin: 0 auto; + background-image: url("../form/images/buttonArrows.png"); + background-repeat: no-repeat; + background-position: -51px 53%; +} +.claro .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -77px 53%; +} +.claro .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -26px 53%; +} +.claro .dijitUpArrowButton .dijitArrowButtonInner { + background-position: 0 53%; +} +.claro .dijitDisabled .dijitArrowButtonInner { + background-position: -151px 53%; +} +.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -177px 53%; +} +.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -126px 53%; +} +.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -100px 53%; +} +.claro .dijitButtonText { + padding: 0 0.3em; + text-align: center; +} +/* hover status */ +.claro .dijitButtonHover .dijitButtonNode, +.claro .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNodeHover, +.claro .dijitComboButton .dijitDownArrowButtonHover, +.claro .dijitToggleButtonHover .dijitButtonNode { + background-color: #abd6ff; + color: #000000; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +/* active, checked status */ +.claro .dijitButtonActive .dijitButtonNode, +.claro .dijitDropDownButtonActive .dijitButtonNode, +.claro .dijitComboButtonActive .dijitButtonNode, +.claro .dijitToggleButtonActive .dijitButtonNode, +.claro .dijitStackController .dijitToggleButtonChecked .dijitButtonNode { + background-color: #abd6ff; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +/* disabled status */ +.claro .dijitButtonDisabled, +.claro .dijitDropDownButtonDisabled, +.claro .dijitComboButtonDisabled, +.claro .dijitToggleButtonDisabled { + background-image: none; + outline: none; +} +.claro .dijitButtonDisabled .dijitButtonNode, +.claro .dijitDropDownButtonDisabled .dijitButtonNode, +.claro .dijitComboButtonDisabled .dijitButtonNode, +.claro .dijitToggleButtonDisabled .dijitButtonNode { + background-position: 0 -149px; + background-color: #efefef; + border: solid 1px #d3d3d3; + color: #818181; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); +} +.claro .dijitComboButtonDisabled .dijitArrowButton { + border-left-width: 0; +} +/* for ComboButton */ +.claro table.dijitComboButton { + border-collapse: separate; + /* override dijit.css so that ComboBox rounded corners work */ + +} +.dj_ie6 .claro .dijitButtonNode { + background-image: none; +} +.claro .dijitComboButton .dijitStretch { + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.claro .dijitComboButton .dijitArrowButton { + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button.less new file mode 100644 index 0000000..208e4de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button.less @@ -0,0 +1,156 @@ +/* Button | DropDownButton | ComboButton | ToggleButton + * + * Styling Buttons mainly includes: + * + * 1. Containers + * .dijitButton + * .dijitDropDownButton + * .dijitComboButton + * .dijitButtonNode - common button/arrow wrapper shared across all three button types + * + * 2. Button text + * .dijitButtonText + * + * 3. Arrows - only for DropDownButton and ComboButton + * There are total four directions arrows - down, left, right, up: + * .dijitArrowButtonInner - down arrow by default + * .dijitLeftArrowButton .dijitArrowButtonInner - left arrow + * .dijitRightArrowButton .dijitArrowButtonInner - right arrow + * .dijitUpArrowButton .dijitArrowButtonInner - up arrow + * + * 4. States - Hover, Active, Disabled, e.g. + * .dijitButtonHover .dijitButtonNode + * .dijitButtonActive .dijitButtonNode + * .dijitButtonDisabled .dijitButtonNode + * + * .dijitDisabled .dijitArrowButtonInner - disabled arrow states + */ + +@import "../variables"; + +.claro .dijitButtonNode { + /* rules for dijit.form.*Button widgets and arrow nodes on ComboBox, Spinner etc. */ + .transition-property(background-color); + .transition-duration(.3s); +} + +.claro .dijitButton .dijitButtonNode, +.claro .dijitDropDownButton .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNode, +.claro .dijitToggleButton .dijitButtonNode { + /* rules for the dijit.form.*Button widgets (see also ComboButton section below) */ + border: 1px solid @button-border-color; + padding:2px 4px 4px 4px; + background-image: url("../@{image-form-button}"); + background-position: center top; + background-repeat: repeat-x; + background-color: @button-background-color; + color: @text-color; + .border-radius(@button-border-radius); + .box-shadow(0 1px 1px rgba(0,0,0,0.15)); +} + +.claro .dijitComboButton .dijitArrowButton { + border-left-width: 0; + padding: 4px 2px 4px 2px; /* TODO: still needed? */ +} + +/*arrow styles for down/up/left/right directions*/ +.claro .dijitArrowButtonInner { + width: 15px; + height: 15px; + margin: 0 auto; + background-image:url("../@{image-form-button-arrows}"); + background-repeat:no-repeat; + background-position:-51px 53%; +} +.claro .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -77px 53%; +} +.claro .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -26px 53%; +} +.claro .dijitUpArrowButton .dijitArrowButtonInner { + background-position: 0 53%; +} +.claro .dijitDisabled .dijitArrowButtonInner { + background-position: -151px 53%; +} +.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -177px 53%; +} +.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -126px 53%; +} +.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -100px 53%; +} + +.claro .dijitButtonText { + padding: 0 0.3em; + text-align: center; +} + + + + + +/* hover status */ +.claro .dijitButtonHover .dijitButtonNode, +.claro .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNodeHover, +.claro .dijitComboButton .dijitDownArrowButtonHover, +.claro .dijitToggleButtonHover .dijitButtonNode { + background-color: @button-hovered-background-color; + color:@text-color; + .transition-duration(.2s); +} + +/* active, checked status */ +.claro .dijitButtonActive .dijitButtonNode, +.claro .dijitDropDownButtonActive .dijitButtonNode, +.claro .dijitComboButtonActive .dijitButtonNode, +.claro .dijitToggleButtonActive .dijitButtonNode, +.claro .dijitStackController .dijitToggleButtonChecked .dijitButtonNode { + background-color: @button-pressed-background-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); + .transition-duration(.1s); +} + +/* disabled status */ +.claro .dijitButtonDisabled, +.claro .dijitDropDownButtonDisabled, +.claro .dijitComboButtonDisabled, +.claro .dijitToggleButtonDisabled { + background-image: none; + outline: none; +} + +.claro .dijitButtonDisabled .dijitButtonNode, +.claro .dijitDropDownButtonDisabled .dijitButtonNode, +.claro .dijitComboButtonDisabled .dijitButtonNode, +.claro .dijitToggleButtonDisabled .dijitButtonNode { + background-position:0 -149px; + background-color: @disabled-background-color; + border: solid 1px @disabled-border-color; + color: @disabled-text-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); +} +.claro .dijitComboButtonDisabled .dijitArrowButton{ + border-left-width: 0; +} +/* for ComboButton */ +.claro table.dijitComboButton { + border-collapse: separate; /* override dijit.css so that ComboBox rounded corners work */ +} + +.dj_ie6 .claro .dijitButtonNode { + background-image: none; +} + +.claro .dijitComboButton .dijitStretch { + .border-radius(@button-border-radius 0 0 @button-border-radius); +} +.claro .dijitComboButton .dijitArrowButton { + .border-radius(0 @button-border-radius @button-border-radius 0); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button_rtl.css new file mode 100644 index 0000000..2d5b08b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button_rtl.css @@ -0,0 +1,13 @@ +/* Combo Button */ +.claro .dijitComboButtonRtl .dijitStretch { + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.claro .dijitComboButtonRtl .dijitArrowButton { + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; + padding: 3px 0 4px; + border-left-width: 1px; + border-right-width: 0; +} +/* End Combo Button */ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button_rtl.less new file mode 100644 index 0000000..6225d68 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Button_rtl.less @@ -0,0 +1,16 @@ +@import "../variables"; + +/* Combo Button */ + +.claro .dijitComboButtonRtl .dijitStretch { + .border-radius(0 @button-border-radius @button-border-radius 0); +} + +.claro .dijitComboButtonRtl .dijitArrowButton { + .border-radius(@button-border-radius 0 0 @button-border-radius); + padding:3px 0 4px; + border-left-width: 1px; + border-right-width: 0; +} + +/* End Combo Button */ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Checkbox.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Checkbox.css new file mode 100644 index 0000000..1c1a3c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Checkbox.css @@ -0,0 +1,71 @@ +/* CheckBox + * + * Styling CheckBox mainly includes: + * + * 1. Containers + * .dijitCheckBox|.dijitCheckBoxIcon - for border, padding, width|height and background image + * + * 2. CheckBox within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitCheckBoxChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitCheckBoxHover|.dijitCheckBoxCheckedHover - for background image + * + * 5. Disabled state + * .dijitCheckBoxDisabled|.dijitCheckBoxCheckedDisabled - for background image + */ +.claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../images/checkmarkNoBorder.png"); +} +.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../images/checkmarkNoBorder.gif"); +} +.claro .dijitCheckBox, .claro .dijitCheckBoxIcon { + background-image: url("../form/images/checkboxRadioButtonStates.png"); + /* checkbox sprite image */ + + background-repeat: no-repeat; + width: 15px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} +.dj_ie6 .claro .dijitCheckBox, .dj_ie6 .claro .dijitCheckBoxIcon { + background-image: url("../form/images/checkboxAndRadioButtons_IE6.png"); + /* checkbox sprite image */ + +} +.claro .dijitCheckBox, .claro .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + + background-position: -15px; +} +.claro .dijitCheckBoxChecked, .claro .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + + background-position: 0; +} +.claro .dijitCheckBoxDisabled { + /* disabled */ + + background-position: -75px; +} +.claro .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + + background-position: -60px; +} +.claro .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + + background-position: -45px; +} +.claro .dijitCheckBoxCheckedHover { + /* hovering over an checked enabled checkbox */ + + background-position: -30px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Checkbox.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Checkbox.less new file mode 100644 index 0000000..6ce4448 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Checkbox.less @@ -0,0 +1,79 @@ +/* CheckBox + * + * Styling CheckBox mainly includes: + * + * 1. Containers + * .dijitCheckBox|.dijitCheckBoxIcon - for border, padding, width|height and background image + * + * 2. CheckBox within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitCheckBoxChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitCheckBoxHover|.dijitCheckBoxCheckedHover - for background image + * + * 5. Disabled state + * .dijitCheckBoxDisabled|.dijitCheckBoxCheckedDisabled - for background image + */ + +@import "../variables"; + +.claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../@{image-checkmark}"); +} + +.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../@{image-checkmark-ie6}"); +} + +.claro .dijitCheckBox, +.claro .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url("../@{image-form-checkbox-and-radios}"); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 15px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .claro .dijitCheckBox, +.dj_ie6 .claro .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url("../@{image-form-checkbox-and-radios-ie6}"); /* checkbox sprite image */ +} + +.claro .dijitCheckBox, +.claro .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -15px; +} + +.claro .dijitCheckBoxChecked, +.claro .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: -0; +} + +.claro .dijitCheckBoxDisabled { + /* disabled */ + background-position: -75px; +} + +.claro .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -60px; +} + +.claro .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -45px; +} + +.claro .dijitCheckBoxCheckedHover { + /* hovering over an checked enabled checkbox */ + background-position: -30px; +} + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common.css new file mode 100644 index 0000000..ce108c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common.css @@ -0,0 +1,178 @@ +/* claro/form/Common.css */ +/*========================= common css =========================*/ +/* 'dijitTextBox' refers to 'dijit(TextBox|DateTextBox|CurrencyTextBox|...)' */ +.claro .dijitTextBox, .claro .dijitInputInner { + color: #000000; +} +.claro .dijitTextBoxError .dijitValidationContainer { + background-color: #d46464; + background-image: url("../form/images/error.png"); + background-position: top center; + border: solid #d46464 0; + border-left-width: 1px; + width: 9px; +} +.claro .dijitTextBoxError .dijitValidationIcon { + width: 0; + background-color: transparent !important; + /* so the INPUT doesn't obscure the border in rtl+a11y */ + +} +/* Padding for the input area of TextBox based widgets, and corresponding padding for the + * down arrow button and the placeholder. placeholder is explicitly listed because + * dijitPlaceHolder is absolutely positioned, so padding set on dijitInputField + * won't affect it + */ +.claro .dijitTextArea, .claro .dijitInputField .dijitPlaceHolder { + padding: 2px; +} +.claro .dijitTextBox .dijitInputField { + padding: 1px 2px; +} +.dj_gecko .claro .dijitTextBox .dijitInputInner, .dj_webkit .claro .dijitTextBox .dijitInputInner { + padding: 1px; +} +.claro .dijitTextBox, .claro .dijitTextBox .dijitButtonNode { + /* color for (outer) border on *TextBox widgets, and border between input and buttons on ComboBox and Spinner */ + + border-color: #b5bcc7; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; +} +.claro .dijitTextBox { + background-color: #ffffff; +} +/* hover */ +.claro .dijitTextBoxHover, .claro .dijitTextBoxHover .dijitButtonNode { + border-color: #759dc0; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.claro .dijitTextBoxHover { + background-color: #e5f2fe; + background-image: url("../form/images/textBox_back.png"); + background-repeat: repeat-x; +} +/* error state */ +.claro .dijitTextBoxError, .claro .dijitTextBoxError .dijitButtonNode { + border-color: #d46464; +} +.claro .dijitTextBoxError, .claro .dijitTextBoxError .dijitInputContainer { + background-color: #ffffff; +} +/* focused state */ +.claro .dijitTextBoxFocused, .claro .dijitTextBoxFocused .dijitButtonNode { + border-color: #759dc0; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitTextBoxFocused { + background-color: #ffffff; + background-image: url("../form/images/textBox_back.png"); + background-repeat: repeat-x; +} +.claro .dijitTextBoxFocused .dijitInputContainer { + background: #ffffff; +} +.claro .dijitTextBoxErrorFocused, .claro .dijitTextBoxErrorFocused .dijitButtonNode { + border-color: #ce5050; +} +/* disabled state */ +.claro .dijitTextBoxDisabled, .claro .dijitTextBoxDisabled .dijitButtonNode { + border-color: #d3d3d3; +} +.claro .dijitTextBoxDisabled, .claro .dijitTextBoxDisabled .dijitInputContainer { + background-color: #efefef; + background-image: none; +} +.claro .dijitTextBoxDisabled, .claro .dijitTextBoxDisabled .dijitInputInner { + color: #818181; +} +.dj_webkit .claro .dijitTextBoxDisabled input { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + + color: #757575; +} +.dj_webkit .claro textarea.dijitTextAreaDisabled { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + + color: #1b1b1b; +} +/*========================= for special widgets =========================*/ +/* Input boxes with an arrow (for a drop down) */ +.claro .dijitComboBox .dijitArrowButtonInner { + background-image: url("../form/images/commonFormArrows.png"); + background-position: -35px 53%; + background-repeat: no-repeat; + margin: 0; + width: 16px; + border: 1px solid #ffffff; +} +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} +/* Add 1px vertical padding to the where user types and the validation icon, + to match the 1px border on arrow button */ +.claro .dijitTextBox .dijitInputInner, .claro .dijitTextBox .dijitValidationContainer { + padding: 1px 0; +} +.claro .dijitComboBox .dijitButtonNode { + background-color: #efefef; + background-image: url("../form/images/formHighlight.png"); + background-repeat: repeat-x; +} +/* Arrow "hover" effect: + * The arrow button should change color whenever the mouse is in a position such that clicking it + * will toggle the drop down. That's either (1) anywhere over the ComboBox or (2) over the arrow + * button, depending on the openOnClick setting for the widget. + */ +.claro .dijitComboBoxOpenOnClickHover .dijitButtonNode, .claro .dijitComboBox .dijitDownArrowButtonHover { + background-color: #abd6ff; +} +.claro .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner, .claro .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position: -70px 53%; +} +/* Arrow Button change when drop down is open */ +.claro .dijitComboBox .dijitHasDropDownOpen { + background-color: #7dbdfa; + background-position: 0 -177px; + padding: 1px; +} +.claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + background-position: -70px 53%; + border: 0 none; +} +/* disabled state */ +.claro div.dijitComboBoxDisabled .dijitArrowButtonInner { + /* specific selector set to override background-position setting from Button.js + * (.claro .dijitComboBoxDisabled .dijitArrowButtonInner) */ + + background-position: 0 50%; + background-color: #efefef; +} +/*========================= hacks for browsers =========================*/ +/* it seems the input[type="hidden"] has a height (16px) too... this may cause the widget's height calculate error */ +.dj_ff3 .claro .dijitInputField input[type="hidden"] { + display: none; + height: 0; + width: 0; +} +/* ie6 doesn't support transparent background img */ +.dj_ie6 .claro .dijitTextBox, .dj_ie6 .claro .dijitComboBox .dijitButtonNode { + background-image: none; +} +.dj_borderbox .claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + width: 18px; +} +.dj_borderbox .claro .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner { + width: 16px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common.less new file mode 100644 index 0000000..742a43f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common.less @@ -0,0 +1,212 @@ +/* claro/form/Common.css */ + +/*========================= common css =========================*/ + +@import "../variables"; + +/* 'dijitTextBox' refers to 'dijit(TextBox|DateTextBox|CurrencyTextBox|...)' */ + +.claro .dijitTextBox, +.claro .dijitInputInner { + // .dijitInputInner selector needed for ValidationTextBox on IE6 because doesn't inherit + // the color setting from the ancestor div.dijitTextBox + color: @text-color; +} + +.claro .dijitTextBoxError .dijitValidationContainer { + background-color: @erroricon-background-color; + background-image: url("../@{image-form-error}"); + background-position: top center; + border: solid @erroricon-background-color 0; + border-left-width: 1px; + width: 9px; +} +.claro .dijitTextBoxError .dijitValidationIcon { + width: 0; + background-color: transparent !important; /* so the INPUT doesn't obscure the border in rtl+a11y */ +} + +/* Padding for the input area of TextBox based widgets, and corresponding padding for the + * down arrow button and the placeholder. placeholder is explicitly listed because + * dijitPlaceHolder is absolutely positioned, so padding set on dijitInputField + * won't affect it + */ +.claro .dijitTextArea, +.claro .dijitInputField .dijitPlaceHolder { + padding: @textbox-padding; +} +.claro .dijitTextBox .dijitInputField { + // Subtract 1px from top/bottom because we add 1px to other nodes, see rules below. + // Although we are theoretically only adding 1px to top/bottom browsers seem to pad inputs by 1px on left/right, + // although that varies by so compensate for that too. + padding: @textbox-padding - 1px @textbox-padding; +} +.dj_gecko .claro .dijitTextBox .dijitInputInner, +.dj_webkit .claro .dijitTextBox .dijitInputInner { + // Although we are theoretically only adding 1px to top/bottom, some browsers seem to pad inputs by 1px on left/right, + // so compensate for that too. + padding: @textbox-padding - 1px; +} + +.claro .dijitTextBox, +.claro .dijitTextBox .dijitButtonNode { + /* color for (outer) border on *TextBox widgets, and border between input and buttons on ComboBox and Spinner */ + border-color: @border-color; + .transition-property(background-color, border); + .transition-duration(.35s); +} +.claro .dijitTextBox { + background-color: @textbox-background-color; +} + +/* hover */ +.claro .dijitTextBoxHover, +.claro .dijitTextBoxHover .dijitButtonNode { + border-color: @hovered-border-color; + .transition-duration(.25s); +} +.claro .dijitTextBoxHover { + background-color: @textbox-hovered-background-color; + background-image: url("../@{image-form-textbox-background}"); + background-repeat: repeat-x; +} + +/* error state */ +.claro .dijitTextBoxError, +.claro .dijitTextBoxError .dijitButtonNode { + border-color: @error-border-color; +} +.claro .dijitTextBoxError, +.claro .dijitTextBoxError .dijitInputContainer { + background-color: @textbox-error-background-color; +} + +/* focused state */ +.claro .dijitTextBoxFocused, +.claro .dijitTextBoxFocused .dijitButtonNode { + border-color:@focused-border-color; + .transition-duration(.1s); +} +.claro .dijitTextBoxFocused { + background-color: @textbox-focused-background-color; + background-image: url("../@{image-form-textbox-background}"); + background-repeat: repeat-x; +} +.claro .dijitTextBoxFocused .dijitInputContainer { + background: @textbox-focused-background-color; +} + +.claro .dijitTextBoxErrorFocused, +.claro .dijitTextBoxErrorFocused .dijitButtonNode { + border-color: @error-focused-border-color; +} + +/* disabled state */ +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitButtonNode { + border-color: @disabled-border-color; +} +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitInputContainer { + background-color: @textbox-disabled-background-color; + background-image: none; +} +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitInputInner { + color: @disabled-text-color; +} +.dj_webkit .claro .dijitTextBoxDisabled input { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + color: darken(@disabled-text-color, 5%) +} +.dj_webkit .claro textarea.dijitTextAreaDisabled { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + color: darken(@disabled-text-color, 40%) +} + +/*========================= for special widgets =========================*/ + +/* Input boxes with an arrow (for a drop down) */ + +.claro .dijitComboBox .dijitArrowButtonInner { + background-image: url("../@{image-form-common-arrows}"); + background-position:-35px 53%; + background-repeat: no-repeat; + margin: 0; + width:16px; + border: 1px solid @arrowbutton-inner-border-color; // white gutter around the arrow button +} + +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} + +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} + +/* Add 1px vertical padding to the where user types and the validation icon, + to match the 1px border on arrow button */ +.claro .dijitTextBox .dijitInputInner, +.claro .dijitTextBox .dijitValidationContainer { + padding: 1px 0; +} + +.claro .dijitComboBox .dijitButtonNode { + background-color: @arrowbutton-background-color; + background-image: url("../@{image-form-highlight}"); + background-repeat:repeat-x; +} + +/* Arrow "hover" effect: + * The arrow button should change color whenever the mouse is in a position such that clicking it + * will toggle the drop down. That's either (1) anywhere over the ComboBox or (2) over the arrow + * button, depending on the openOnClick setting for the widget. + */ +.claro .dijitComboBoxOpenOnClickHover .dijitButtonNode, +.claro .dijitComboBox .dijitDownArrowButtonHover { + background-color:@arrowbutton-hovered-background-color; +} +.claro .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner, +.claro .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position:-70px 53%; +} + +/* Arrow Button change when drop down is open */ +.claro .dijitComboBox .dijitHasDropDownOpen { // .dijitHasDropDown is on dijitArrowButton node + background-color: @pressed-background-color; + background-position:0 -177px; + padding: 1px; // Since no border on arrow button (see rule below) +} +.claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + background-position:-70px 53%; + border: 0 none; +} + +/* disabled state */ +.claro div.dijitComboBoxDisabled .dijitArrowButtonInner { + /* specific selector set to override background-position setting from Button.js + * (.claro .dijitComboBoxDisabled .dijitArrowButtonInner) */ + background-position:0 50%; + background-color:@disabled-background-color; +} + +/*========================= hacks for browsers =========================*/ +/* it seems the input[type="hidden"] has a height (16px) too... this may cause the widget's height calculate error */ +.dj_ff3 .claro .dijitInputField input[type="hidden"] { + display: none; + height: 0; + width: 0; +} + +/* ie6 doesn't support transparent background img */ +.dj_ie6 .claro .dijitTextBox, +.dj_ie6 .claro .dijitComboBox .dijitButtonNode { + background-image: none; +} +.dj_borderbox .claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + width:18px; // quirks mode means border-box sizing, so 18px with the border (same as 16px without border) +} +.dj_borderbox .claro .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner { + width:16px; // when no border, then back to 16px just like content-box sizing +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common_rtl.css new file mode 100644 index 0000000..74827c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common_rtl.css @@ -0,0 +1,10 @@ +/* claro/form/Common_rtl.css */ +/*claro should not have the icon on the container +.claro .dijitTextBoxRtlError .dijitValidationIcon { + border-left-width: 0; + border-right-width: 1px; +}*/ +.claro .dijitTextBoxRtlError .dijitValidationContainer { + border-left-width: 0; + border-right-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common_rtl.less new file mode 100644 index 0000000..fd4975a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Common_rtl.less @@ -0,0 +1,13 @@ +/* claro/form/Common_rtl.css */ + +@import "../variables"; + +/*claro should not have the icon on the container +.claro .dijitTextBoxRtlError .dijitValidationIcon { + border-left-width: 0; + border-right-width: 1px; +}*/ +.claro .dijitTextBoxRtlError .dijitValidationContainer { + border-left-width: 0; + border-right-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/NumberSpinner.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/NumberSpinner.css new file mode 100644 index 0000000..fcc8049 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/NumberSpinner.css @@ -0,0 +1,138 @@ +/* NumberSpinner - namespace "dijitSpinner" + * + * Styling NumberSpinner mainly includes: + * + * 1. Arrows + * Outer containers: .dijitSpinnerButtonContainer|.dijitSpinnerButtonInner - for border, padding and position + * Arrows: .dijitArrowButton|.dijitUpArrowButton.|dijitDownArrowButton + * Inner container: .dijitArrowButtonInner - for border, padding, width|height and background image + * + * 2. Hover state + * .dijitUpArrowButtonHover|.dijitDownArrowButtonHover .* - for background color|image + * + * 3. Active state + * .dijitUpArrowButtonActive|.dijitDownArrowButtonActive .* - for border, padding, margin and background color|image + * + * 4. Focused state + * .dijitSpinnerFocused .* - for background color|image + * + * 5. Disabled state + * .dijitSpinnerDisabled .* - for background color|image + */ +.claro .dijitSpinnerButtonContainer { + overflow: hidden; + position: relative; + width: auto; + padding: 0 2px; +} +.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner { + border-width: 1px 0; + /* reserve space to match the claro combobox button border with border and not padding to make IE happier */ + + border-style: solid none; +} +/* button */ +.claro .dijitSpinner .dijitArrowButton { + width: auto; + background-color: #efefef; + background-image: url("../form/images/formHighlight.png"); + background-position: 0 0; + background-repeat: repeat-x; + overflow: hidden; +} +.dj_iequirks .claro .dijitSpinner .dijitArrowButton { + overflow: visible; + /* 0 height w/o this */ + +} +.claro .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +/* up & down button icons */ +.claro .dijitSpinner .dijitArrowButtonInner { + border: solid 1px #ffffff; + border-bottom-width: 0; + /* 2 top borders = 1 top+bottom border in ComboBox */ + + background-image: url("../form/images/commonFormArrows.png"); + background-repeat: no-repeat; + height: 100%; + width: 15px; + padding-left: 1px; + padding-right: 1px; + /* for up arrow */ + + background-position: -139px center; + /* override button.css (TODO: move to Common.css since ComboBox needs this too) */ + + display: block; + margin: -1px 0 -1px 0; + /* compensate for inner border */ + +} +.dj_ie6 .claro .dijitSpinner .dijitArrowButtonInner, .dj_ie7 .claro .dijitSpinner .dijitArrowButtonInner { + margin-top: 0; + /* since its bottom aligned */ + +} +.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner { + width: 19px; +} +.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + background-position: -34px; +} +.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} +/** hover & focused status **/ +.claro .dijitUpArrowButtonActive, .claro .dijitDownArrowButtonActive { + background-color: #abd6ff; +} +.claro .dijitSpinner .dijitUpArrowButtonHover, .claro .dijitSpinner .dijitDownArrowButtonHover, .claro .dijitSpinnerFocused .dijitArrowButton { + background-color: #abd6ff; +} +.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner { + background-position: -174px; +} +.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position: -69px; +} +.claro .dijitSpinnerFocused { + background-color: #ffffff; + background-image: none; +} +/* mouse down status */ +.claro .dijitSpinner .dijitDownArrowButtonActive, .claro .dijitSpinner .dijitUpArrowButtonActive { + background-color: #7dbefa; + background-position: 0 -177px; +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner, .claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + /* hide inner border while button is depressed */ + + border: 0; + padding: 1px; + margin-right: 2px; + margin-bottom: 1px; +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner { + background-position: -173px; +} +.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + background-position: -68px; +} +/* disabled */ +.claro .dijitSpinnerDisabled .dijitArrowButtonInner { + background-color: #efefef; +} +.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -104px; +} +.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner { + background-position: 1px; +} +/** hacks for browsers **/ +/* for IE 7, when div is enlarged, + * should be no empty space between dijitInputLayoutContainer and dijitSpinner*/ +.dj_ie7 .claro .dijitSpinner { + overflow: visible; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/NumberSpinner.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/NumberSpinner.less new file mode 100644 index 0000000..1c79d3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/NumberSpinner.less @@ -0,0 +1,150 @@ +/* NumberSpinner - namespace "dijitSpinner" + * + * Styling NumberSpinner mainly includes: + * + * 1. Arrows + * Outer containers: .dijitSpinnerButtonContainer|.dijitSpinnerButtonInner - for border, padding and position + * Arrows: .dijitArrowButton|.dijitUpArrowButton.|dijitDownArrowButton + * Inner container: .dijitArrowButtonInner - for border, padding, width|height and background image + * + * 2. Hover state + * .dijitUpArrowButtonHover|.dijitDownArrowButtonHover .* - for background color|image + * + * 3. Active state + * .dijitUpArrowButtonActive|.dijitDownArrowButtonActive .* - for border, padding, margin and background color|image + * + * 4. Focused state + * .dijitSpinnerFocused .* - for background color|image + * + * 5. Disabled state + * .dijitSpinnerDisabled .* - for background color|image + */ + +@import "../variables"; + +.claro .dijitSpinnerButtonContainer { + overflow: hidden; + position: relative; + width: auto; + padding: 0 2px; +} +.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner { + border-width: 1px 0; /* reserve space to match the claro combobox button border with border and not padding to make IE happier */ + border-style: solid none; +} + +/* button */ +.claro .dijitSpinner .dijitArrowButton { + width:auto; + background-color: @arrowbutton-background-color; + background-image: url("../@{image-form-highlight}"); + background-position:0 0; + background-repeat:repeat-x; + overflow: hidden; +} +.dj_iequirks .claro .dijitSpinner .dijitArrowButton { + overflow: visible; /* 0 height w/o this */ +} + +.claro .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +/* up & down button icons */ +.claro .dijitSpinner .dijitArrowButtonInner { + border:solid 1px @arrowbutton-inner-border-color; + border-bottom-width: 0; /* 2 top borders = 1 top+bottom border in ComboBox */ + background-image: url("../@{image-form-common-arrows}"); + background-repeat: no-repeat; + height: 100%; + width:15px; + padding-left: 1px; + padding-right: 1px; + + /* for up arrow */ + background-position:-139px center; + + /* override button.css (TODO: move to Common.css since ComboBox needs this too) */ + display: block; + margin: -1px 0 -1px 0; /* compensate for inner border */ +} + +.dj_ie6 .claro .dijitSpinner .dijitArrowButtonInner, +.dj_ie7 .claro .dijitSpinner .dijitArrowButtonInner { + margin-top: 0; /* since its bottom aligned */ +} + +.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner { + width: 19px; +} +.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + background-position:-34px; +} +.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} + +/** hover & focused status **/ + +.claro .dijitUpArrowButtonActive, +.claro .dijitDownArrowButtonActive { + background-color:@arrowbutton-pressed-background-color; +} + +.claro .dijitSpinner .dijitUpArrowButtonHover, +.claro .dijitSpinner .dijitDownArrowButtonHover, +.claro .dijitSpinnerFocused .dijitArrowButton { + background-color: @arrowbutton-hovered-background-color; +} + +.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner { + background-position:-174px; +} +.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position:-69px; +} + +.claro .dijitSpinnerFocused { + background-color: @textbox-focused-background-color; + background-image: none; +} + +/* mouse down status */ +.claro .dijitSpinner .dijitDownArrowButtonActive, +.claro .dijitSpinner .dijitUpArrowButtonActive { + background-color: #7dbefa; // TODO. Mailed Jason about inconsistent ComboBox/Spinner behavior. + background-position:0 -177px; +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner, +.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + /* hide inner border while button is depressed */ + border: 0; + padding: 1px; + margin-right:2px; + margin-bottom:1px; +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner { + background-position:-173px; +} +.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + background-position:-68px; +} + +/* disabled */ + +.claro .dijitSpinnerDisabled .dijitArrowButtonInner { + background-color: @disabled-background-color; +} +.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position:-104px; +} +.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner { + background-position:1px; +} + +/** hacks for browsers **/ + +/* for IE 7, when div is enlarged, + * should be no empty space between dijitInputLayoutContainer and dijitSpinner*/ +.dj_ie7 .claro .dijitSpinner { + overflow:visible; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/RadioButton.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/RadioButton.css new file mode 100644 index 0000000..bad1854 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/RadioButton.css @@ -0,0 +1,79 @@ +/* RadioButton + * + * Styling RadioButton mainly includes: + * + * 1. Containers + * .dijitRadio|.dijitRadioIcon - for border, padding, width|height and background image + * + * 2. RadioButton within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitRadioChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitRadioHover|.dijitRadioCheckedHover - for background image + * + * 5. Disabled state + * .dijitRadioDisabled|.dijitRadioCheckedDisabled - for background image + */ +.claro .dijitToggleButton .dijitRadio, .claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../form/images/checkboxRadioButtonStates.png"); +} +.dj_ie6 .claro .dijitToggleButton .dijitRadio, .dj_ie6 .claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../form/images/checkboxAndRadioButtons_IE6.png"); +} +.claro .dijitRadio, .claro .dijitRadioIcon { + /* inside a toggle button */ + + background-image: url("../form/images/checkboxRadioButtonStates.png"); + /* checkbox sprite image */ + + background-repeat: no-repeat; + width: 15px; + height: 15px; + margin: 0 2px 0 0; + padding: 0; +} +.dj_ie6 .claro .dijitRadio, .dj_ie6 .claro .dijitRadioIcon { + /* inside a toggle button */ + + background-image: url("../form/images/checkboxAndRadioButtons_IE6.png"); + /* checkbox sprite image */ + +} +.claro .dijitRadio { + /* unselected */ + + background-position: -105px; +} +.claro .dijitToggleButton .dijitRadioIcon { + /* unselected */ + + background-position: -107px; +} +.claro .dijitRadioDisabled { + /* unselected and disabled */ + + background-position: -165px; +} +.claro .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + + background-position: -135px; +} +.claro .dijitRadioChecked { + background-position: -90px; +} +.claro .dijitToggleButtonChecked .dijitRadioIcon { + background-position: -92px; +} +.claro .dijitRadioCheckedHover { + background-position: -120px; +} +.claro .dijitRadioCheckedDisabled { + /* selected but disabled */ + + background-position: -150px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/RadioButton.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/RadioButton.less new file mode 100644 index 0000000..f48cb67 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/RadioButton.less @@ -0,0 +1,84 @@ +/* RadioButton + * + * Styling RadioButton mainly includes: + * + * 1. Containers + * .dijitRadio|.dijitRadioIcon - for border, padding, width|height and background image + * + * 2. RadioButton within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitRadioChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitRadioHover|.dijitRadioCheckedHover - for background image + * + * 5. Disabled state + * .dijitRadioDisabled|.dijitRadioCheckedDisabled - for background image + */ + +@import "../variables"; + +.claro .dijitToggleButton .dijitRadio, +.claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../@{image-form-checkbox-and-radios}"); +} + +.dj_ie6 .claro .dijitToggleButton .dijitRadio, +.dj_ie6 .claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../@{image-form-checkbox-and-radios-ie6}"); +} + +.claro .dijitRadio, +.claro .dijitRadioIcon { /* inside a toggle button */ + background-image: url("../@{image-form-checkbox-and-radios}"); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 15px; + height: 15px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .claro .dijitRadio, +.dj_ie6 .claro .dijitRadioIcon { /* inside a toggle button */ + background-image: url("../@{image-form-checkbox-and-radios-ie6}"); /* checkbox sprite image */ +} + +.claro .dijitRadio{ + /* unselected */ + background-position: -105px; +} + +.claro .dijitToggleButton .dijitRadioIcon { + /* unselected */ + background-position: -107px; +} + +.claro .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -165px; +} + +.claro .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -135px; +} + +.claro .dijitRadioChecked{ + background-position: -90px; +} + +.claro .dijitToggleButtonChecked .dijitRadioIcon { + background-position: -92px; +} + +.claro .dijitRadioCheckedHover{ + background-position: -120px; +} + +.claro .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -150px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select.css new file mode 100644 index 0000000..bfbca4e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select.css @@ -0,0 +1,109 @@ +/* Select + * + * Styling Select mainly includes: + * + * 1. Containers + * .dijitSelect - for border, background-color + * .dijitButtonContents - for border + * + * 2. Arrow + * .dijitArrowButton - for border, padding and background-color|image + * .dijitArrowButtonInner - for border, background-color|image, display and width|height + * + * 3. Menu + * .dijitSelectMenu .* - for border, padding + * + * 4. Various states + * .dijitSelectHover|.dijitSelectFocused|.dijitSelectDisabled .* - for border, padding and background-color|image + */ +.claro .dijitSelect .dijitButtonText { + padding: 2px; +} +/* normal status */ +.claro .dijitSelect { + border: 1px solid #b5bcc7; + background-color: #ffffff; + border-collapse: separate; +} +.dj_ie6 .claro .dijitSelect, .dj_ie6 .claro .dijitSelect .dijitButtonNode { + background-image: none; +} +.claro .dijitSelect .dijitButtonContents { + border: 0 solid #b5bcc7; + border-right-width: 1px; +} +.claro .dijitSelect .dijitArrowButton { + padding: 0; + border: 1px solid #ffffff; + border-top: none; + background-color: #efefef; + background-image: url("../form/images/formHighlight.png"); + background-repeat: repeat-x; +} +.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner { + background-image: url("../form/images/commonFormArrows.png"); + background-position: -35px 70%; + background-repeat: no-repeat; + width: 16px; + height: 16px; +} +/* hover status */ +.claro .dijitSelectHover { + border: 1px solid #759dc0; + background-color: #e5f2fe; + background-image: url("../form/images/textBox_back.png"); + background-repeat: repeat-x; +} +.claro .dijitSelectHover .dijitButtonContents { + border-color: #759dc0; +} +.claro .dijitSelectHover .dijitArrowButton { + background-color: #abd6ff; +} +.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px 70%; +} +/* focused status */ +.claro .dijitSelectFocused { + border: 1px solid #759dc0; +} +.claro .dijitSelectFocused .dijitButtonContents { + border-color: #759dc0; +} +.claro .dijitSelectFocused .dijitArrowButton { + background-color: #7dbefa; + background-position: 0 -177px; + border: none; + padding: 0 1px; +} +.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px 70%; + margin-bottom: 1px; +} +/* disable status */ +.claro .dijitSelectDisabled { + border: 1px solid #d3d3d3; + background-color: #efefef; + background-image: none; + color: #818181; +} +.claro .dijitSelectDisabled .dijitArrowButton { + background-color: #efefef; +} +.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner { + background-position: 0 70%; +} +/* Dropdown menu style for select */ +.claro .dijitSelectMenu td.dijitMenuItemIconCell, .claro .dijitSelectMenu td.dijitMenuArrowCell { + /* so that arrow and icon cells from MenuItem are not displayed */ + + display: none; +} +.claro .dijitSelectMenu td.dijitMenuItemLabel { + /* line up menu text with text in select box (in LTR and RTL modes) */ + + padding: 2px; +} +.claro .dijitSelectMenu .dijitMenuSeparatorTop { + border-bottom: 1px solid #759dc0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select.less new file mode 100644 index 0000000..0e74261 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select.less @@ -0,0 +1,124 @@ +/* Select + * + * Styling Select mainly includes: + * + * 1. Containers + * .dijitSelect - for border, background-color + * .dijitButtonContents - for border + * + * 2. Arrow + * .dijitArrowButton - for border, padding and background-color|image + * .dijitArrowButtonInner - for border, background-color|image, display and width|height + * + * 3. Menu + * .dijitSelectMenu .* - for border, padding + * + * 4. Various states + * .dijitSelectHover|.dijitSelectFocused|.dijitSelectDisabled .* - for border, padding and background-color|image + */ + +@import "../variables"; + +.claro .dijitSelect .dijitButtonText { + padding: @textbox-padding; +} + +/* normal status */ +.claro .dijitSelect { + border: 1px solid @border-color; + background-color: @textbox-background-color; + border-collapse: separate; +} +.dj_ie6 .claro .dijitSelect, +.dj_ie6 .claro .dijitSelect .dijitButtonNode { + background-image:none; +} + +.claro .dijitSelect .dijitButtonContents { + border: 0 solid @border-color; + border-right-width: 1px; +} + +.claro .dijitSelect .dijitArrowButton { + padding: 0; + border: 1px solid @arrowbutton-inner-border-color; + border-top:none; + background-color: @arrowbutton-background-color; + background-image: url("../@{image-form-highlight}"); + background-repeat:repeat-x; +} + +.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner { + background-image: url("../@{image-form-common-arrows}"); + background-position:-35px 70%; + background-repeat: no-repeat; + width:16px; + height:16px; +} + +/* hover status */ +.claro .dijitSelectHover { + border: 1px solid @hovered-border-color; + background-color: @textbox-hovered-background-color; + background-image: url("../@{image-form-textbox-background}"); + background-repeat: repeat-x; +} + +.claro .dijitSelectHover .dijitButtonContents { + border-color:@hovered-border-color; +} + +.claro .dijitSelectHover .dijitArrowButton { + background-color:@arrowbutton-hovered-background-color; +} +.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner { + background-position:-70px 70%; +} + +/* focused status */ +.claro .dijitSelectFocused { + border: 1px solid @focused-border-color; +} +.claro .dijitSelectFocused .dijitButtonContents { + border-color:@focused-border-color; +} +.claro .dijitSelectFocused .dijitArrowButton { + background-color:#7dbefa; // TODO. Mailed Jason about inconsistent ComboBox/Spinner behavior. + background-position:0 -177px; + border: none; + padding: 0 1px; +} +.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner { + background-position:-70px 70%; + margin-bottom: 1px; +} + +/* disable status */ +.claro .dijitSelectDisabled { + border: 1px solid @disabled-border-color; + background-color: @disabled-background-color; + background-image: none; + color: @disabled-text-color; +} +.claro .dijitSelectDisabled .dijitArrowButton { + background-color: @disabled-background-color; +} +.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner { + background-position:0 70% +} + +/* Dropdown menu style for select */ + +.claro .dijitSelectMenu td.dijitMenuItemIconCell, +.claro .dijitSelectMenu td.dijitMenuArrowCell { + /* so that arrow and icon cells from MenuItem are not displayed */ + display: none; +} +.claro .dijitSelectMenu td.dijitMenuItemLabel { + /* line up menu text with text in select box (in LTR and RTL modes) */ + padding: @textbox-padding; +} + +.claro .dijitSelectMenu .dijitMenuSeparatorTop { + border-bottom:1px solid @focused-border-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select_rtl.css new file mode 100644 index 0000000..a14d4ec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select_rtl.css @@ -0,0 +1,4 @@ +.claro .dijitSelectRtl .dijitButtonContents { + border-right-width: 0; + border-left-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select_rtl.less new file mode 100644 index 0000000..ffa40dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Select_rtl.less @@ -0,0 +1,6 @@ +@import "../variables"; + +.claro .dijitSelectRtl .dijitButtonContents { + border-right-width: 0; + border-left-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider.css new file mode 100644 index 0000000..eb82e17 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider.css @@ -0,0 +1,329 @@ +/* Slider + * + * Styling Slider mainly includes styling the Slider progress bar (dijitSliderProgressBar) + * + * Slider progress bar: + * 1. Slider progress bar (default styling): + * .dijitSliderProgressBarH - progress bar at the middle of horizontal slider + * .dijitSliderLeftBumper - bar at the left of horizontal slider + * .dijitSliderRightBumper - bar at the right of horizontal slider + * .dijitSliderProgressBarV - progress bar at the middle of vertical slider + * .dijitSliderTopBumper - bar at the top of vertical slider + * .dijitSliderBottomtBumper - bar at the bottom of vertical slider + * + * 2. hovered Slider progress bar (ie, mouse hover on progress bar) + * .dijitSliderHover .dijitSliderProgressBarH(horizontal) - hovered bar style: background, border + * + * 3. focused Slider progress bar (ie, mouse focused on progress bar) + * .dijitSliderFocused .dijitSliderProgressBarH(horizontal) - focus bar style: background, border + * + * 4. disabled/read-only Slider progress bar + * .dijitSliderDisabled .dijitSliderProgressBarH(horizontal) - bar styles when slider is disabled + * + * + * Slider Thumbs: + * 1. Slider Thumbs (default styling): + * .dijitSliderImageHandleH / .dijitSliderImageHandleV - styles for the controller on the progress bar + * + * 2. hovered Slider Thumbs (ie, mouse hover on slider thumbs) + * .dijitSliderHover .dijitSliderImageHandleH - hovered controller style + * + * 3. focused Slider progress bar (ie, mouse focused on slider thumbs) + * .dijitSliderFocused .dijitSliderImageHandleV - focused controller style + * + * + * Slider Increment/Decrement Buttons: + * 1. Slider Increment/Decrement Buttons (default styling): + * .dijitSliderDecrementIconH - decrement icon which lies at the left of horizontal slider + * .dijitSliderIncrementIconH - increment icon which lies at the right of horizontal slider + * .dijitSliderDecrementIconV - decrement icon which lies at the bottom of vertical slider + * .dijitSliderIncrementIconV - increment icon which lies at the top of vertical slider + * + * 2. hovered Slider Increment/Decrement Buttons (mouse hover on the icons) + * .dijitSliderHover .dijitSliderDecrementIconH - for background, border + * + * 3. active Slider Increment/Decrement Buttons (mouse down on the icons) + * .dijitSliderActive .dijitSliderIncrementIconV - for background, border + * + * 4. disabled/read-only Slider Increment/Decrement Buttons + * .dijitSliderDisabled .dijitSliderDecrementIconH - styles for the icons in disabled slider + * .dijitSliderReadOnly .dijitSliderIncrementIconV - styles for the icons in read-only slider + */ +.claro .dijitSliderBar { + border-style: solid; + outline: 1px; +} +.claro .dijitSliderFocused .dijitSliderBar { + border-color: #759dc0; +} +.claro .dijitSliderHover .dijitSliderBar { + border-color: #759dc0; +} +.claro .dijitSliderDisabled .dijitSliderBar { + background-image: none; + border-color: #d3d3d3; +} +.claro .dijitRuleLabel { + color: #000000; +} +/* Horizontal Slider */ +.claro .dijitRuleLabelsContainerH { + padding: 2px 0; +} +.claro .dijitSlider .dijitSliderProgressBarH, .claro .dijitSlider .dijitSliderLeftBumper { + background-image: url("../form/images/sliderHorizontal.png"); + background-repeat: repeat-x; + background-position: 0 -20px; + border-color: #b5bcc7; + background-color: #cfe5fa; +} +.claro .dijitSlider .dijitSliderRemainingBarH, .claro .dijitSlider .dijitSliderRightBumper { + background-image: url("../form/images/sliderHorizontal.png"); + background-repeat: repeat-x; + background-position: 0 -11px; + border-color: #b5bcc7; + background-color: #ffffff; +} +.claro .dijitSliderRightBumper { + border-right: solid 1px #b5bcc7; +} +.claro .dijitSliderLeftBumper { + border-left: solid 1px #b5bcc7; +} +.claro .dijitSliderHover .dijitSliderProgressBarH, .claro .dijitSliderHover .dijitSliderLeftBumper { + background-position: 0 -20px; + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitSliderHover .dijitSliderRemainingBarH, .claro .dijitSliderHover .dijitSliderRightBumper { + background-position: 0 0; + background-color: #ffffff; + border-color: #759dc0; +} +.claro .dijitSliderFocused .dijitSliderProgressBarH, .claro .dijitSliderFocused .dijitSliderLeftBumper { + background-position: 0 -30px; + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitSliderFocused .dijitSliderRemainingBarH, .claro .dijitSliderFocused .dijitSliderRightBumper { + background-position: 0 -9px; + background-color: #ffffff; + border-color: #759dc0; +} +.claro .dijitSliderDisabled .dijitSliderProgressBarH, .claro .dijitSliderDisabled .dijitSliderLeftBumper { + background-color: #d3d3d3; + /* left side of slider, fill matches border */ + + background-image: none; +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarH, .claro .dijitSliderDisabled .dijitSliderRightBumper { + background-color: #efefef; +} +/* Vertical Slider */ +.claro .dijitRuleLabelsContainerV { + padding: 0 2px; +} +.claro .dijitSlider .dijitSliderProgressBarV, .claro .dijitSlider .dijitSliderBottomBumper { + background-image: url("../form/images/sliderVertical.png"); + background-repeat: repeat-y; + background-position: -36px 0; + border-color: #b5bcc7; + background-color: #cfe5fa; +} +.claro .dijitSlider .dijitSliderRemainingBarV, .claro .dijitSlider .dijitSliderTopBumper { + background-image: url("../form/images/sliderVertical.png"); + background-repeat: repeat-y; + background-position: -3px 0; + border-color: #b5bcc7; + background-color: #ffffff; +} +.claro .dijitSliderBottomBumper { + border-bottom: solid 1px #b5bcc7; +} +.claro .dijitSliderTopBumper { + border-top: solid 1px #b5bcc7; +} +.claro .dijitSliderHover .dijitSliderProgressBarV, .claro .dijitSliderHover .dijitSliderBottomBumper { + background-position: -36px 0; + background-color: #abd6ff; +} +.claro .dijitSliderHover .dijitSliderRemainingBarV, .claro .dijitSliderHover .dijitSliderTopBumper { + background-position: 0 0; + background-color: #ffffff; +} +.claro .dijitSliderFocused .dijitSliderProgressBarV, .claro .dijitSliderFocused .dijitSliderBottomBumper { + background-position: -56px 0; + background-color: #abd6ff; +} +.claro .dijitSliderFocused .dijitSliderRemainingBarV, .claro .dijitSliderFocused .dijitSliderTopBumper { + background-position: -18px 0; + background-color: #ffffff; +} +.claro .dijitSliderDisabled .dijitSliderProgressBarV, .claro .dijitSliderDisabled .dijitSliderBottomBumper { + background-color: #d3d3d3; + /* bottom side of slider, fill matches border */ + +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarV, .claro .dijitSliderDisabled .dijitSliderTopBumper { + background-color: #efefef; +} +/* ------- Thumbs ------- */ +.claro .dijitSliderImageHandleH { + border: 0; + width: 18px; + height: 16px; + background-image: url("../form/images/sliderThumbs.png"); + background-repeat: no-repeat; + background-position: 0 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleH { + background-position: -18px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleH { + background-position: -36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbHover { + background-position: -36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbActive { + background-position: -36px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleH, .claro .dijitSliderDisabled .dijitSliderImageHandleH { + background-position: -54px 0; +} +.claro .dijitSliderImageHandleV { + border: 0; + width: 18px; + height: 16px; + background-image: url("../form/images/sliderThumbs.png"); + background-repeat: no-repeat; + background-position: -289px 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleV { + background-position: -307px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleV { + background-position: -325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbHover { + background-position: -325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbActive { + background-position: -325px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleV, .claro .dijitSliderDisabled .dijitSliderImageHandleV { + background-position: -343px 0; +} +/* ---- Increment/Decrement Buttons ---- */ +.claro .dijitSliderButtonContainerH { + padding: 1px 3px 1px 2px; +} +.claro .dijitSliderButtonContainerV { + padding: 3px 1px 2px 1px; +} +.claro .dijitSliderDecrementIconH, +.claro .dijitSliderIncrementIconH, +.claro .dijitSliderDecrementIconV, +.claro .dijitSliderIncrementIconV { + background-image: url("../form/images/commonFormArrows.png"); + background-repeat: no-repeat; + background-color: #efefef; + -moz-border-radius: 2px; + border-radius: 2px; + border: solid 1px #b5bcc7; + font-size: 1px; +} +.claro .dijitSliderDecrementIconH, .claro .dijitSliderIncrementIconH { + height: 12px; + width: 9px; +} +.claro .dijitSliderDecrementIconV, .claro .dijitSliderIncrementIconV { + height: 9px; + width: 12px; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH, +.claro .dijitSliderActive .dijitSliderIncrementIconH, +.claro .dijitSliderActive .dijitSliderDecrementIconV, +.claro .dijitSliderActive .dijitSliderIncrementIconV, +.claro .dijitSliderHover .dijitSliderDecrementIconH, +.claro .dijitSliderHover .dijitSliderIncrementIconH, +.claro .dijitSliderHover .dijitSliderDecrementIconV, +.claro .dijitSliderHover .dijitSliderIncrementIconV { + /* dijitSliderActive should be treated as dijitSliderHover since "clicking the slider" has no meaning */ + + border: solid 1px #759dc0; + background-color: #ffffff; +} +.claro .dijitSliderDecrementIconH { + background-position: -357px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH.claro .dijitSliderHover .dijitSliderDecrementIconH { + background-position: -393px 50%; +} +.claro .dijitSliderIncrementIconH { + background-position: -251px 50%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconH.claro .dijitSliderHover .dijitSliderIncrementIconH { + background-position: -283px 50%; +} +.claro .dijitSliderDecrementIconV { + background-position: -38px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconV.claro .dijitSliderHover .dijitSliderDecrementIconV { + background-position: -73px 50%; +} +.claro .dijitSliderIncrementIconV { + background-position: -143px 49%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconV.claro .dijitSliderHover .dijitSliderIncrementIconV { + background-position: -178px 49%; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover { + background-color: #cfe5fa; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive { + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitSliderButtonInner { + visibility: hidden; +} +.claro .dijitSliderDisabled .dijitSliderBar { + border-color: #d3d3d3; +} +.claro .dijitSliderReadOnly *, .claro .dijitSliderDisabled * { + border-color: #d3d3d3; + color: #818181; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconH, .claro .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position: -321px 50%; + background-color: #efefef; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconH, .claro .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position: -215px 50%; + background-color: #efefef; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconV, .claro .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position: -3px 49%; + background-color: #efefef; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconV, .claro .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position: -107px 49%; + background-color: #efefef; +} +.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarH, +.dj_ie6 .claro .dijitSlider .dijitSliderLeftBumper, +.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarH, +.dj_ie6 .claro .dijitSlider .dijitSliderRightBumper, +.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarV, +.dj_ie6 .claro .dijitSlider .dijitSliderTopBumper, +.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarV, +.dj_ie6 .claro .dijitSlider .dijitSliderBottomBumper { + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider.less new file mode 100644 index 0000000..db0f8cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider.less @@ -0,0 +1,365 @@ +/* Slider + * + * Styling Slider mainly includes styling the Slider progress bar (dijitSliderProgressBar) + * + * Slider progress bar: + * 1. Slider progress bar (default styling): + * .dijitSliderProgressBarH - progress bar at the middle of horizontal slider + * .dijitSliderLeftBumper - bar at the left of horizontal slider + * .dijitSliderRightBumper - bar at the right of horizontal slider + * .dijitSliderProgressBarV - progress bar at the middle of vertical slider + * .dijitSliderTopBumper - bar at the top of vertical slider + * .dijitSliderBottomtBumper - bar at the bottom of vertical slider + * + * 2. hovered Slider progress bar (ie, mouse hover on progress bar) + * .dijitSliderHover .dijitSliderProgressBarH(horizontal) - hovered bar style: background, border + * + * 3. focused Slider progress bar (ie, mouse focused on progress bar) + * .dijitSliderFocused .dijitSliderProgressBarH(horizontal) - focus bar style: background, border + * + * 4. disabled/read-only Slider progress bar + * .dijitSliderDisabled .dijitSliderProgressBarH(horizontal) - bar styles when slider is disabled + * + * + * Slider Thumbs: + * 1. Slider Thumbs (default styling): + * .dijitSliderImageHandleH / .dijitSliderImageHandleV - styles for the controller on the progress bar + * + * 2. hovered Slider Thumbs (ie, mouse hover on slider thumbs) + * .dijitSliderHover .dijitSliderImageHandleH - hovered controller style + * + * 3. focused Slider progress bar (ie, mouse focused on slider thumbs) + * .dijitSliderFocused .dijitSliderImageHandleV - focused controller style + * + * + * Slider Increment/Decrement Buttons: + * 1. Slider Increment/Decrement Buttons (default styling): + * .dijitSliderDecrementIconH - decrement icon which lies at the left of horizontal slider + * .dijitSliderIncrementIconH - increment icon which lies at the right of horizontal slider + * .dijitSliderDecrementIconV - decrement icon which lies at the bottom of vertical slider + * .dijitSliderIncrementIconV - increment icon which lies at the top of vertical slider + * + * 2. hovered Slider Increment/Decrement Buttons (mouse hover on the icons) + * .dijitSliderHover .dijitSliderDecrementIconH - for background, border + * + * 3. active Slider Increment/Decrement Buttons (mouse down on the icons) + * .dijitSliderActive .dijitSliderIncrementIconV - for background, border + * + * 4. disabled/read-only Slider Increment/Decrement Buttons + * .dijitSliderDisabled .dijitSliderDecrementIconH - styles for the icons in disabled slider + * .dijitSliderReadOnly .dijitSliderIncrementIconV - styles for the icons in read-only slider + */ + +@import "../variables"; + +.claro .dijitSliderBar { + border-style: solid; + outline: 1px; +} +.claro .dijitSliderFocused .dijitSliderBar { + border-color: @focused-border-color; +} +.claro .dijitSliderHover .dijitSliderBar { + border-color: @hovered-border-color; +} +.claro .dijitSliderDisabled .dijitSliderBar { + background-image: none; + border-color: @disabled-border-color; +} +.claro .dijitRuleLabel { + color: @text-color; +} + +/* Horizontal Slider */ + +.claro .dijitRuleLabelsContainerH { + padding: 2px 0; +} +.claro .dijitSlider .dijitSliderProgressBarH, +.claro .dijitSlider .dijitSliderLeftBumper{ + background-image: url("../@{image-form-slider-horizontal}"); + background-repeat:repeat-x; + background-position:0 -20px; + border-color: @border-color; + background-color: @slider-fullbar-background-color; +} +.claro .dijitSlider .dijitSliderRemainingBarH, +.claro .dijitSlider .dijitSliderRightBumper{ + background-image: url("../@{image-form-slider-horizontal}"); + background-repeat:repeat-x; + background-position:0 -11px; + border-color: @border-color; + background-color: @slider-remainingbar-background-color; +} +.claro .dijitSliderRightBumper { + border-right: solid 1px @border-color; +} +.claro .dijitSliderLeftBumper { + border-left: solid 1px @border-color; +} +.claro .dijitSliderHover .dijitSliderProgressBarH, +.claro .dijitSliderHover .dijitSliderLeftBumper{ + background-position:0 -20px; + background-color: @slider-hovered-fullbar-background-color; + border-color: @hovered-border-color; +} +.claro .dijitSliderHover .dijitSliderRemainingBarH, +.claro .dijitSliderHover .dijitSliderRightBumper{ + background-position:0 0; + background-color: @slider-hovered-remainingbar-background-color; + border-color: @hovered-border-color; +} +.claro .dijitSliderFocused .dijitSliderProgressBarH, +.claro .dijitSliderFocused .dijitSliderLeftBumper{ + background-position:0 -30px; + background-color: @slider-focused-fullbar-background-color; + border-color: @focused-border-color; +} +.claro .dijitSliderFocused .dijitSliderRemainingBarH, +.claro .dijitSliderFocused .dijitSliderRightBumper{ + background-position:0 -9px; + background-color: @slider-focused-remainingbar-background-color; + border-color: @focused-border-color; +} +.claro .dijitSliderDisabled .dijitSliderProgressBarH, +.claro .dijitSliderDisabled .dijitSliderLeftBumper{ + background-color: @disabled-border-color; /* left side of slider, fill matches border */ + background-image:none; +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarH, +.claro .dijitSliderDisabled .dijitSliderRightBumper{ + background-color: @disabled-background-color; +} + +/* Vertical Slider */ + +.claro .dijitRuleLabelsContainerV { + padding: 0 2px; +} +.claro .dijitSlider .dijitSliderProgressBarV, +.claro .dijitSlider .dijitSliderBottomBumper{ + background-image: url("../@{image-form-slider-vertical}"); + background-repeat:repeat-y; + background-position:-36px 0; + border-color: @border-color; + background-color: @slider-fullbar-background-color; +} +.claro .dijitSlider .dijitSliderRemainingBarV, +.claro .dijitSlider .dijitSliderTopBumper{ + background-image: url("../@{image-form-slider-vertical}"); + background-repeat:repeat-y; + background-position:-3px 0; + border-color: @border-color; + background-color: @slider-remainingbar-background-color; +} +.claro .dijitSliderBottomBumper { + border-bottom: solid 1px @border-color; +} +.claro .dijitSliderTopBumper { + border-top: solid 1px @border-color; +} +.claro .dijitSliderHover .dijitSliderProgressBarV, +.claro .dijitSliderHover .dijitSliderBottomBumper{ + background-position:-36px 0; + background-color: @slider-hovered-fullbar-background-color; +} +.claro .dijitSliderHover .dijitSliderRemainingBarV, +.claro .dijitSliderHover .dijitSliderTopBumper{ + background-position:0 0; + background-color: @slider-hovered-remainingbar-background-color; +} +.claro .dijitSliderFocused .dijitSliderProgressBarV, +.claro .dijitSliderFocused .dijitSliderBottomBumper{ + background-position:-56px 0; + background-color: @slider-focused-fullbar-background-color; +} +.claro .dijitSliderFocused .dijitSliderRemainingBarV, +.claro .dijitSliderFocused .dijitSliderTopBumper{ + background-position:-18px 0; + background-color: @slider-focused-remainingbar-background-color; +} +.claro .dijitSliderDisabled .dijitSliderProgressBarV, +.claro .dijitSliderDisabled .dijitSliderBottomBumper{ + background-color: @disabled-border-color; /* bottom side of slider, fill matches border */ +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarV, +.claro .dijitSliderDisabled .dijitSliderTopBumper{ + background-color: @disabled-background-color; +} + + +/* ------- Thumbs ------- */ + +.claro .dijitSliderImageHandleH { + border: 0; + width: 18px; + height: 16px; + background-image: url("../@{image-form-slider-thumbs}"); + background-repeat:no-repeat; + background-position:0 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleH { + background-position:-18px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleH { + background-position:-36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbHover{ + background-position:-36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbActive{ + background-position:-36px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleH, +.claro .dijitSliderDisabled .dijitSliderImageHandleH { + background-position:-54px 0; +} +.claro .dijitSliderImageHandleV { + border: 0; + width: 18px; + height: 16px; + background-image: url("../@{image-form-slider-thumbs}"); + background-repeat:no-repeat; + background-position:-289px 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleV { + background-position:-307px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleV { + background-position:-325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbHover{ + background-position:-325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbActive{ + background-position:-325px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleV, +.claro .dijitSliderDisabled .dijitSliderImageHandleV { + background-position:-343px 0; +} + +/* ---- Increment/Decrement Buttons ---- */ + +.claro .dijitSliderButtonContainerH{ + padding: 1px 3px 1px 2px; +} +.claro .dijitSliderButtonContainerV{ + padding: 3px 1px 2px 1px; +} +.claro .dijitSliderDecrementIconH, +.claro .dijitSliderIncrementIconH, +.claro .dijitSliderDecrementIconV, +.claro .dijitSliderIncrementIconV { + background-image: url("../@{image-form-common-arrows}"); + background-repeat:no-repeat; + background-color: @arrowbutton-background-color; + .border-radius(2px); + border: solid 1px @border-color; + font-size: 1px; +} +.claro .dijitSliderDecrementIconH, +.claro .dijitSliderIncrementIconH { + height: 12px; + width: 9px; +} +.claro .dijitSliderDecrementIconV, +.claro .dijitSliderIncrementIconV { + height: 9px; + width: 12px; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH, +.claro .dijitSliderActive .dijitSliderIncrementIconH, +.claro .dijitSliderActive .dijitSliderDecrementIconV, +.claro .dijitSliderActive .dijitSliderIncrementIconV, +.claro .dijitSliderHover .dijitSliderDecrementIconH, +.claro .dijitSliderHover .dijitSliderIncrementIconH, +.claro .dijitSliderHover .dijitSliderDecrementIconV, +.claro .dijitSliderHover .dijitSliderIncrementIconV { + /* dijitSliderActive should be treated as dijitSliderHover since "clicking the slider" has no meaning */ + border: solid 1px @hovered-border-color; + background-color: @slider-hoveredButton-background-color; +} + +.claro .dijitSliderDecrementIconH { + background-position:-357px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH +.claro .dijitSliderHover .dijitSliderDecrementIconH { + background-position:-393px 50%; +} +.claro .dijitSliderIncrementIconH { + background-position:-251px 50%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconH +.claro .dijitSliderHover .dijitSliderIncrementIconH { + background-position:-283px 50%; +} +.claro .dijitSliderDecrementIconV { + background-position:-38px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconV +.claro .dijitSliderHover .dijitSliderDecrementIconV { + background-position:-73px 50%; +} +.claro .dijitSliderIncrementIconV { + background-position:-143px 49%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconV +.claro .dijitSliderHover .dijitSliderIncrementIconV { + background-position:-178px 49%; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover { + background-color: @slider-button-hovered-background-color; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive { + background-color: @slider-button-pressed-background-color; + border-color:@pressed-border-color; +} +.claro .dijitSliderButtonInner { + visibility: hidden; +} +.claro .dijitSliderDisabled .dijitSliderBar{ + border-color: @disabled-border-color; +} +.claro .dijitSliderReadOnly *,.claro .dijitSliderDisabled * { + border-color: @disabled-border-color; + color: @disabled-text-color; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconH, +.claro .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position:-321px 50%; + background-color:@disabled-background-color; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconH, +.claro .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position:-215px 50%; + background-color:@disabled-background-color; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconV, +.claro .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position:-3px 49%; + background-color:@disabled-background-color; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconV, +.claro .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position:-107px 49%; + background-color:@disabled-background-color; +} + +.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarH, +.dj_ie6 .claro .dijitSlider .dijitSliderLeftBumper, +.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarH, +.dj_ie6 .claro .dijitSlider .dijitSliderRightBumper, +.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarV, +.dj_ie6 .claro .dijitSlider .dijitSliderTopBumper, +.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarV, +.dj_ie6 .claro .dijitSlider .dijitSliderBottomBumper { + background-image:none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider_rtl.css new file mode 100644 index 0000000..97e078b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider_rtl.css @@ -0,0 +1,24 @@ +.claro .dijitSliderRtl .dijitSliderProgressBarH, +.claro .dijitSliderRtl .dijitSliderRemainingBarH, +.claro .dijitSliderRtl .dijitSliderLeftBumper, +.claro .dijitSliderRtl .dijitSliderRightBumper, +.claro .dijitSliderRtl .dijitSliderTopBumper { + background-position: top right; +} +.claro .dijitSliderRtl .dijitSliderProgressBarV, .claro .dijitSliderRtl .dijitSliderRemainingBarV, .claro .dijitSliderRtl .dijitSliderBottomBumper { + background-position: bottom right; +} +.claro .dijitSliderRtl .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} +.claro .dijitSliderRtl .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} +.claro .dijitSliderRtl .dijitSliderIncrementIconH { + background-position: -357px 50%; +} +.claro .dijitSliderRtl .dijitSliderDecrementIconH { + background-position: -251px 50%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider_rtl.less new file mode 100644 index 0000000..66a7116 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/Slider_rtl.less @@ -0,0 +1,33 @@ +@import "../variables"; + +.claro .dijitSliderRtl .dijitSliderProgressBarH, +.claro .dijitSliderRtl .dijitSliderRemainingBarH, +.claro .dijitSliderRtl .dijitSliderLeftBumper, +.claro .dijitSliderRtl .dijitSliderRightBumper, +.claro .dijitSliderRtl .dijitSliderTopBumper { + background-position: top right; +} + +.claro .dijitSliderRtl .dijitSliderProgressBarV, +.claro .dijitSliderRtl .dijitSliderRemainingBarV, +.claro .dijitSliderRtl .dijitSliderBottomBumper { + background-position: bottom right; +} + +.claro .dijitSliderRtl .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} + +.claro .dijitSliderRtl .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} + +.claro .dijitSliderRtl .dijitSliderIncrementIconH { + background-position:-357px 50%; +} + +.claro .dijitSliderRtl .dijitSliderDecrementIconH { + background-position:-251px 50%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/button.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/button.png new file mode 100644 index 0000000..cb787cb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/button.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/buttonArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/buttonArrows.png new file mode 100644 index 0000000..642eff3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/buttonArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/button_grad_d.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/button_grad_d.png new file mode 100644 index 0000000..3a71a46 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/button_grad_d.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png new file mode 100644 index 0000000..92d2221 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/checkboxRadioButtonStates.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/checkboxRadioButtonStates.png new file mode 100644 index 0000000..2d06a82 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/checkboxRadioButtonStates.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/commonFormArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/commonFormArrows.png new file mode 100644 index 0000000..6d04742 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/commonFormArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/error.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/error.png new file mode 100644 index 0000000..46de1cd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/error.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/formHighlight.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/formHighlight.png new file mode 100644 index 0000000..f90eb25 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/formHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/shadow.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/shadow.png new file mode 100644 index 0000000..72d60e6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/shadow.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderHorizontal.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderHorizontal.png new file mode 100644 index 0000000..d769a64 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderHorizontal.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderThumbs.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderThumbs.png new file mode 100644 index 0000000..70ab2fe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderThumbs.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderVertical.png new file mode 100644 index 0000000..9d69d04 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/sliderVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/textBox_back.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/textBox_back.png new file mode 100644 index 0000000..dfc752a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/form/images/textBox_back.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarArrows.png new file mode 100644 index 0000000..3f6faa5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarArrows8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarArrows8bit.png new file mode 100644 index 0000000..ab9d66c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarArrows8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarContainerImages.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarContainerImages.png new file mode 100644 index 0000000..44fa088 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/calendarContainerImages.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/checkmarkNoBorder.gif b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/checkmarkNoBorder.gif new file mode 100644 index 0000000..324bfb3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/checkmarkNoBorder.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/checkmarkNoBorder.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/checkmarkNoBorder.png new file mode 100644 index 0000000..9cec0c0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/checkmarkNoBorder.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/commonHighlight.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/commonHighlight.png new file mode 100644 index 0000000..f90eb25 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/commonHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dialogCloseIcon.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dialogCloseIcon.png new file mode 100644 index 0000000..a605c71 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dialogCloseIcon.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dialogCloseIcon8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dialogCloseIcon8bit.png new file mode 100644 index 0000000..d2b063b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dialogCloseIcon8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dnd.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dnd.png new file mode 100644 index 0000000..8cb04aa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/dnd.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/loadingAnimation.gif b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/loadingAnimation.gif new file mode 100644 index 0000000..d76e4cd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/loadingAnimation.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/menuHighlight.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/menuHighlight.png new file mode 100644 index 0000000..22328a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/menuHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarAnim.gif b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarAnim.gif new file mode 100644 index 0000000..30c0d9d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarAnim.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarEmpty.png new file mode 100644 index 0000000..e0a6856 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarFull.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarFull.png new file mode 100644 index 0000000..280f51d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/progressBarFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/spriteArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/spriteArrows.png new file mode 100644 index 0000000..608f4c7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/spriteArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/titlebar.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/titlebar.png new file mode 100644 index 0000000..4818103 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/titlebar.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltip.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltip.png new file mode 100644 index 0000000..2b22273 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltip.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltip8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltip8bit.png new file mode 100644 index 0000000..51f65f1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltip8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltipGradient.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltipGradient.png new file mode 100644 index 0000000..ce4860e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/tooltipGradient.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpandImages.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpandImages.png new file mode 100644 index 0000000..75cf385 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpandImages.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpandImages8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpandImages8bit.png new file mode 100644 index 0000000..290b2e1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpandImages8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpand_loading.gif b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpand_loading.gif new file mode 100644 index 0000000..424d376 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/images/treeExpand_loading.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/AccordionContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/AccordionContainer.css new file mode 100644 index 0000000..3483176 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/AccordionContainer.css @@ -0,0 +1,121 @@ +/* Accordion + * + * Styling AccordionContainer basically means styling the accordion pane (dijitAccordionInnerContainer) + * and the title inside of it (dijitAccordionTitle). There are 4 basic states to style: + * + * 1. closed pane (and default styling): + * .dijitAccordionInnerContainer - container for each accordion child + * .dijitAccordionTitle - title for each accordion child + * + * 2. active closed pane (ie, mouse down on a title bar) + * .dijitAccordionInnerContainerActive - for background-color, border + * .dijitAccordionInnerContainerActive dijitAccordionTitle - for text color + * + * 3. open pane (expanded child) + * .dijitAccordionChildWrapper - wraps around the child widget (typically ContentPane) + * setting a margin so that there's blue trim all the way around the child + * + * These rules need to override the closed pane active: + * + * .dijitAccordionInnerContainerSelected - for background-color, border + * .dijitAccordionInnerContainerSelected .dijitAccordionTitle - for text color + * + * 4. hovered pane, open or closed + * The selectors below affect hovering over both a closed pane (ie, hovering a title bar), + * and hovering over an open pane. Also, treat mouse down on an open pane as a hover: + * + * .dijitAccordionInnerContainerHover, .dijitAccordionInnerContainerSelectedActive - for background-color, border + * .dijitAccordionInnerContainerHover .dijitAccordionTitle - for text color + */ +.claro .dijitAccordionContainer { + border: none; +} +.claro .dijitAccordionInnerContainer { + background-color: #efefef; + /* gray, for closed pane */ + + border: solid 1px #b5bcc7; + margin-bottom: 1px; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-timing-function: linear; + -moz-transition-timing-function: linear; + transition-timing-function: linear; +} +.claro .dijitAccordionTitle { + background-color: transparent; + /* pick up color from dijitAccordionInnerContainer */ + + background-image: url("../layout/images/accordion.png"); + background-position: 0 0; + background-repeat: repeat-x; + padding: 5px 7px 2px 7px; + min-height: 17px; + color: #494949; +} +.dj_ie6 .claro .dijitAccordionTitle { + background-image: none; +} +.claro .dijitAccordionContainer .dijitAccordionChildWrapper { + /* this extends the blue trim styling of the title bar to wrapping around the node. + * done by setting margin + */ + + background-color: #ffffff; + border: 1px solid #759dc0; + margin: 0 2px 2px; +} +.claro .dijitAccordionContainer .dijitAccordionContainer-child { + /* this is affecting the child widget itself */ + + padding: 9px; +} +/* Active state for closed pane */ +.claro .dijitAccordionInnerContainerActive { + border: 1px solid #759dc0; + background-color: #7dbdfa; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle { + background-position: 0 -136px; + color: #000000; +} +/* Open (a.k.a. selected) pane */ +.claro .dijitAccordionInnerContainerSelected { + border-color: #759dc0; + background-color: #cfe5fa; +} +.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle { + color: #000000; + background-position: 0 0; + /* avoid effect when clicking the title of the open pane */ + +} +/* Hovering open or closed pane */ +.claro .dijitAccordionInnerContainerHover .dijitAccordionTitle { + /* both open and closed */ + + color: #000000; +} +.claro .dijitAccordionInnerContainerHover, .claro .dijitAccordionInnerContainerSelectedActive { + /* note: clicking the currently selected Accordion pane should have no effect, so treating same as hover. */ + + border: 1px solid #759dc0; + background-color: #abd6ff; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.claro .dijitAccordionInnerContainerSelectedHover .dijitAccordionChildWrapper, .claro .dijitAccordionInnerContainerSelectedActive .dijitAccordionChildWrapper { + background-color: #ffffff; + border: 1px solid #759dc0 !important; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.25); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.25); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/AccordionContainer.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/AccordionContainer.less new file mode 100644 index 0000000..b3aa622 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/AccordionContainer.less @@ -0,0 +1,113 @@ +/* Accordion + * + * Styling AccordionContainer basically means styling the accordion pane (dijitAccordionInnerContainer) + * and the title inside of it (dijitAccordionTitle). There are 4 basic states to style: + * + * 1. closed pane (and default styling): + * .dijitAccordionInnerContainer - container for each accordion child + * .dijitAccordionTitle - title for each accordion child + * + * 2. active closed pane (ie, mouse down on a title bar) + * .dijitAccordionInnerContainerActive - for background-color, border + * .dijitAccordionInnerContainerActive dijitAccordionTitle - for text color + * + * 3. open pane (expanded child) + * .dijitAccordionChildWrapper - wraps around the child widget (typically ContentPane) + * setting a margin so that there's blue trim all the way around the child + * + * These rules need to override the closed pane active: + * + * .dijitAccordionInnerContainerSelected - for background-color, border + * .dijitAccordionInnerContainerSelected .dijitAccordionTitle - for text color + * + * 4. hovered pane, open or closed + * The selectors below affect hovering over both a closed pane (ie, hovering a title bar), + * and hovering over an open pane. Also, treat mouse down on an open pane as a hover: + * + * .dijitAccordionInnerContainerHover, .dijitAccordionInnerContainerSelectedActive - for background-color, border + * .dijitAccordionInnerContainerHover .dijitAccordionTitle - for text color + */ + +@import "../variables"; + +.claro .dijitAccordionContainer { + border:none; +} +.claro .dijitAccordionInnerContainer { + background-color: @unselected-background-color; /* gray, for closed pane */ + border:solid 1px @border-color; + margin-bottom:1px; + .transition-property(background-color,border); + .transition-duration(.3s); + .transition-timing-function(linear); +} +.claro .dijitAccordionTitle { + background-color: transparent; /* pick up color from dijitAccordionInnerContainer */ + background-image: url("../@{image-layout-accordion}"); + background-position:0 0; + background-repeat:repeat-x; + padding: 5px 7px 2px 7px; + min-height:17px; + color:@unselected-text-color; +} +.dj_ie6 .claro .dijitAccordionTitle { + background-image: none; +} +.claro .dijitAccordionContainer .dijitAccordionChildWrapper { + /* this extends the blue trim styling of the title bar to wrapping around the node. + * done by setting margin + */ + background-color:@pane-background-color; + border:1px solid @selected-border-color; + margin: 0 2px 2px; +} + +.claro .dijitAccordionContainer .dijitAccordionContainer-child { + /* this is affecting the child widget itself */ + padding: 9px; +} + +/* Active state for closed pane */ + +.claro .dijitAccordionInnerContainerActive { + border:1px solid @selected-border-color; + background-color:@pressed-background-color; + .transition-duration(.1s); +} +.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle { + background-position:0 -136px; + color:@selected-text-color; +} + +/* Open (a.k.a. selected) pane */ + +.claro .dijitAccordionInnerContainerSelected { + border-color:@selected-border-color; + background-color: @selected-background-color; +} +.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle { + color:@selected-text-color; + background-position: 0 0; /* avoid effect when clicking the title of the open pane */ +} + +/* Hovering open or closed pane */ + +.claro .dijitAccordionInnerContainerHover .dijitAccordionTitle { + /* both open and closed */ + color:@hovered-text-color; +} + +.claro .dijitAccordionInnerContainerHover, +.claro .dijitAccordionInnerContainerSelectedActive { + /* note: clicking the currently selected Accordion pane should have no effect, so treating same as hover. */ + border:1px solid @hovered-border-color; + background-color:@hovered-background-color; + .transition-duration(.2s); +} + +.claro .dijitAccordionInnerContainerSelectedHover .dijitAccordionChildWrapper, +.claro .dijitAccordionInnerContainerSelectedActive .dijitAccordionChildWrapper { + background-color:@pane-background-color; + border:1px solid @hovered-border-color !important; + .box-shadow(inset 0 0 3px rgba(0, 0, 0, .25)); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/BorderContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/BorderContainer.css new file mode 100644 index 0000000..8c0a5fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/BorderContainer.css @@ -0,0 +1,109 @@ +/* BorderContainer + +Splitters and gutters separate panes within a BorderContainer. Splitters can be moved up and down (horizonal splitters) or left and right (vertical splitters), while Gutters are static. A "thumb" is the slit on a Splitter that indicates it is movable. + +Styling the BorderContainer widget consists of the following: + +.dijitBorderContainer - for border and padding of the entire border container + +.dijitSplitContainer-child, .dijitBorderContainer-child - for border or child panes of the border container. By default borders are put on all children of BorderContainer. + +.dijitBorderContainer-dijitTabContainerTop, +.dijitBorderContainer-dijitTabContainerBottom, +.dijitBorderContainer-dijitTabContainerLeft, +.dijitBorderContainer-dijitTabContainerRight, +.dijitBorderContainer-dijitAccordionContainer -for border of the border containers within TabContainer or AccordionContainer widget + +.dijitBorderContainer-dijitBorderContainer - for border and padding of nested BorderContainers + +Splitters and gutters: + +.dijitSplitterH, .dijitGutterH - for height, background, and border of a horizontal splitter and gutter +.dijitSplitterH .dijitSplitterThumb - for color, height/width of the thumb on a horizontal splitter +.dijitSplitterV, .dijitGutterV - - for height, background, and border of a vertical splitter and gutter +.dijitSplitterV .dijitSplitterThumb - for color, height/width of the thumb on a vertical splitter +.dijitSplitterHHover - for background-color of a hovered horizontal splitter +.dijitSplitterHHover .dijitSplitterThumb - for background-color of a hovered thumb on a horizontal splitter +.dijitSplitterVHover - for background-color of a hovered vertical splitter +.dijitSplitterVHover .dijitSplitterThumb - for background-color of a hovered thumb on a vertical splitter +.dijitSplitterHActive - for background-color of an active horizontal splitter +.dijitSplitterVActive - for background-color of an active horizontal splitter +*/ +.claro .dijitBorderContainer { + /* matches the width of the splitters between panes */ + + padding: 5px; +} +.claro .dijitSplitContainer-child, .claro .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + + border: 1px #b5bcc7 solid; +} +.claro .dijitBorderContainer-dijitTabContainerTop, +.claro .dijitBorderContainer-dijitTabContainerBottom, +.claro .dijitBorderContainer-dijitTabContainerLeft, +.claro .dijitBorderContainer-dijitTabContainerRight, +.claro .dijitBorderContainer-dijitAccordionContainer { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + + border: none; +} +.claro .dijitBorderContainer-dijitBorderContainer { + /* make nested BorderContainers look like a single big widget with lots of splitters */ + + border: 0; + padding: 0; +} +/* Splitters and gutters */ +.claro .dijitSplitterH, .claro .dijitGutterH { + background: none; + border: 0; + height: 5px; +} +.claro .dijitSplitterH .dijitSplitterThumb { + background: #b5bcc7 none; + height: 1px; + top: 2px; + width: 19px; +} +.claro .dijitSplitterV, .claro .dijitGutterV { + background: none; + border: 0; + width: 5px; + margin: 0; +} +.claro .dijitSplitterV .dijitSplitterThumb { + background: #b5bcc7 none; + height: 19px; + left: 2px; + width: 1px; + margin: 0; +} +/* hovered splitter */ +.claro .dijitSplitterHHover { + font-size: 1px; + background: url("../layout/images/splitterHorizontalHover.png") no-repeat center top; +} +.claro .dijitSplitterHHover .dijitSplitterThumb { + background: #759dc0 none; +} +.claro .dijitSplitterVHover { + font-size: 1px; + background: url("../layout/images/splitterVerticalHover.png") no-repeat center left; +} +.claro .dijitSplitterVHover .dijitSplitterThumb { + background: #759dc0 none; +} +.dj_ie6 .dijitSplitterHHover, .dj_ie6 .claro .dijitSplitterVHover { + background-color: #cfe5fa; + background-image: none; +} +/* active splitter */ +.claro .dijitSplitterHActive, .claro .dijitSplitterVActive { + font-size: 1px; + background-color: #abd6ff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/BorderContainer.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/BorderContainer.less new file mode 100644 index 0000000..b7c672e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/BorderContainer.less @@ -0,0 +1,128 @@ +/* BorderContainer + +Splitters and gutters separate panes within a BorderContainer. Splitters can be moved up and down (horizonal splitters) or left and right (vertical splitters), while Gutters are static. A "thumb" is the slit on a Splitter that indicates it is movable. + +Styling the BorderContainer widget consists of the following: + +.dijitBorderContainer - for border and padding of the entire border container + +.dijitSplitContainer-child, .dijitBorderContainer-child - for border or child panes of the border container. By default borders are put on all children of BorderContainer. + +.dijitBorderContainer-dijitTabContainerTop, +.dijitBorderContainer-dijitTabContainerBottom, +.dijitBorderContainer-dijitTabContainerLeft, +.dijitBorderContainer-dijitTabContainerRight, +.dijitBorderContainer-dijitAccordionContainer -for border of the border containers within TabContainer or AccordionContainer widget + +.dijitBorderContainer-dijitBorderContainer - for border and padding of nested BorderContainers + +Splitters and gutters: + +.dijitSplitterH, .dijitGutterH - for height, background, and border of a horizontal splitter and gutter +.dijitSplitterH .dijitSplitterThumb - for color, height/width of the thumb on a horizontal splitter +.dijitSplitterV, .dijitGutterV - - for height, background, and border of a vertical splitter and gutter +.dijitSplitterV .dijitSplitterThumb - for color, height/width of the thumb on a vertical splitter +.dijitSplitterHHover - for background-color of a hovered horizontal splitter +.dijitSplitterHHover .dijitSplitterThumb - for background-color of a hovered thumb on a horizontal splitter +.dijitSplitterVHover - for background-color of a hovered vertical splitter +.dijitSplitterVHover .dijitSplitterThumb - for background-color of a hovered thumb on a vertical splitter +.dijitSplitterHActive - for background-color of an active horizontal splitter +.dijitSplitterVActive - for background-color of an active horizontal splitter +*/ + +@import "../variables"; + +.claro .dijitBorderContainer { + /* matches the width of the splitters between panes */ + padding: 5px; +} + +.claro .dijitSplitContainer-child, +.claro .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px @border-color solid; +} + +.claro .dijitBorderContainer-dijitTabContainerTop, +.claro .dijitBorderContainer-dijitTabContainerBottom, +.claro .dijitBorderContainer-dijitTabContainerLeft, +.claro .dijitBorderContainer-dijitTabContainerRight, +.claro .dijitBorderContainer-dijitAccordionContainer { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + border: none; + +} +.claro .dijitBorderContainer-dijitBorderContainer { + /* make nested BorderContainers look like a single big widget with lots of splitters */ + border: 0; + padding: 0; +} + +/* Splitters and gutters */ + +.claro .dijitSplitterH, +.claro .dijitGutterH { + background:none; + border:0; + height:5px; +} + +.claro .dijitSplitterH .dijitSplitterThumb { + background:@border-color none; + height:1px; + top:2px; + width:19px; +} + +.claro .dijitSplitterV, +.claro .dijitGutterV { + background:none; + border:0; + width:5px; + margin: 0; +} + +.claro .dijitSplitterV .dijitSplitterThumb { + background:@border-color none; + height:19px; + left:2px; + width:1px; + margin: 0; +} + +/* hovered splitter */ +.claro .dijitSplitterHHover { + font-size: 1px; + background: url("../@{image-layout-splitter-horizontal-hover}") no-repeat center top; +} + + +.claro .dijitSplitterHHover .dijitSplitterThumb { + background:@hovered-border-color none; +} + +.claro .dijitSplitterVHover { + font-size: 1px; + background: url("../@{image-layout-splitter-vertical-hover}") no-repeat center left; +} + +.claro .dijitSplitterVHover .dijitSplitterThumb { + background:@hovered-border-color none; +} + +.dj_ie6 .dijitSplitterHHover, +.dj_ie6 .claro .dijitSplitterVHover { + background-color: @splitter-hovered-background-color; + background-image:none; +} + +/* active splitter */ +.claro .dijitSplitterHActive, +.claro .dijitSplitterVActive { + font-size: 1px; + background-color:@splitter-dragged-background-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/ContentPane.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/ContentPane.css new file mode 100644 index 0000000..a7753de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/ContentPane.css @@ -0,0 +1,38 @@ +/* ContentPane + * + * .dijitContentPane + * set padding for basic content pane + * + * Nested layouts: + * + * .dijitTabContainerTop-dijitContentPane, + * .dijitTabContainerLeft-dijitContentPane, + * .dijitTabContainerBottom-dijitContentPane, + * .dijitTabContainerRight-dijitContentPane + * set background-color and padding of ContentPanes nested within TabContainer (can do top, left, bottom, or right) or Accordion Container + * + * .dijitAccordionContainer-dijitContentPane + * set background-color and padding of ContentPane nested within Accordion + * + * .dijitSplitContainer-dijitContentPane, + * set background-color and padding of ContentPane nested within a SplitContainer + * + * .dijitBorderContainer-dijitContentPane + * set background-color and padding of ContentPane nested within a BorderContainer + */ +.claro .dijitContentPane { + padding: 8px; +} +/* nested layouts */ +.claro .dijitTabContainerTop-dijitContentPane, +.claro .dijitTabContainerLeft-dijitContentPane, +.claro .dijitTabContainerBottom-dijitContentPane, +.claro .dijitTabContainerRight-dijitContentPane, +.claro .dijitAccordionContainer-dijitContentPane { + background-color: #ffffff; + padding: 8px; +} +.claro .dijitSplitContainer-dijitContentPane, .claro .dijitBorderContainer-dijitContentPane { + background-color: #ffffff; + padding: 8px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/ContentPane.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/ContentPane.less new file mode 100644 index 0000000..83329bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/ContentPane.less @@ -0,0 +1,43 @@ +/* ContentPane + * + * .dijitContentPane + * set padding for basic content pane + * + * Nested layouts: + * + * .dijitTabContainerTop-dijitContentPane, + * .dijitTabContainerLeft-dijitContentPane, + * .dijitTabContainerBottom-dijitContentPane, + * .dijitTabContainerRight-dijitContentPane + * set background-color and padding of ContentPanes nested within TabContainer (can do top, left, bottom, or right) or Accordion Container + * + * .dijitAccordionContainer-dijitContentPane + * set background-color and padding of ContentPane nested within Accordion + * + * .dijitSplitContainer-dijitContentPane, + * set background-color and padding of ContentPane nested within a SplitContainer + * + * .dijitBorderContainer-dijitContentPane + * set background-color and padding of ContentPane nested within a BorderContainer + */ + +@import "../variables"; + +.claro .dijitContentPane { + padding: 8px; +} + +/* nested layouts */ +.claro .dijitTabContainerTop-dijitContentPane, +.claro .dijitTabContainerLeft-dijitContentPane, +.claro .dijitTabContainerBottom-dijitContentPane, +.claro .dijitTabContainerRight-dijitContentPane, +.claro .dijitAccordionContainer-dijitContentPane { + background-color: @pane-background-color; + padding: 8px; +} +.claro .dijitSplitContainer-dijitContentPane, +.claro .dijitBorderContainer-dijitContentPane { + background-color: @pane-background-color; + padding: 8px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer.css new file mode 100644 index 0000000..641b921 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer.css @@ -0,0 +1,434 @@ +/* TabContainer + * + * Styling TabContainer means styling the TabList and Its content container (dijitTitlePane) + * + * Tab List: (including 4 kinds of tab location) + * .dijitTabContainerTop-tabs - tablist container at top + * .dijitTabContainerBottom-tabs - tablist container at bottom + * .dijitTabContainerLeft-tabs - tablist container at left + * .dijitTabContainerRight-tabs - tablist container at right + * + * Tab Strip Button: + * .dijitTabStripIcon - tab strip button icon + * .dijitTabStripMenuIcon - down arrow icon position + * .dijitTabStripSlideLeftIcon - left arrow icon position + * .dijitTabStripSlideRightIcon - right arrow icon position + * + * .tabStripButtonDisabled - styles for disabled tab strip buttons + * + * Tab Button: + * .dijitTabContainerTop-tabs .dijitTabInnerDiv/.dijitTabContent - styles for top tab button container + * .dijitTabContainerBottom-tabs .dijitTabInnerDiv/.dijitTabContent - styles for bottom tab button container + * .dijitTabContainerLeft-tabs .dijitTabInnerDiv/.dijitTabContent - styles for left tab button container + * .dijitTabContainerRight-tabs .dijitTabInnerDiv/.dijitTabContent - styles for right tab button container + * + * .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv/.dijitTabContent + * - styles for selected status of top tab button + * same to Bottom, Left, Right Tabs + * + * .dijitTabHover .dijitTabInnerDiv - styles when mouse hover on tab buttons + * .dijitTabActive .dijitTabInnerDiv - styles when mouse down on tab buttons + * .dijitTabChecked .dijitTabInnerDiv - styles when on buttons of selected tab + * + * .dijitTabCloseButton - the close action buttons lie at the right top of each tab button on closable tabs + * .dijitTabCloseButtonHover - styles when mouse hover on close action button + * .dijitTabCloseButtonActive - styles when mouse down on close action button + * + * Tab Button: (checked status) + * + * Tab Content Container: + * .dijitTabContainerTop-dijitContentPane + * .dijitTabContainerBottom-dijitContentPane + * .dijitTabContainerLeft-dijitContentPane + * .dijitTabContainerRight-dijitContentPane - for background and padding + * + * Nested Tabs: + * .dijitTabContainerNested - Container for nested tabs + * .dijitTabContainerTabListNested - tab list container for nested tabs + */ +/*** some common features ***/ +.claro .dijitTabPaneWrapper { + background: #ffffff; +} +.claro .dijitTabPaneWrapper, +.claro .dijitTabContainerTop-tabs, +.claro .dijitTabContainerBottom-tabs, +.claro .dijitTabContainerLeft-tabs, +.claro .dijitTabContainerRight-tabs { + /* todo: add common class name for this div */ + + border-color: #b5bcc7; +} +.claro .dijitTabCloseButton { + background: url("../layout/images/tabClose.png") no-repeat; + width: 14px; + height: 14px; + margin-left: 5px; + margin-right: -5px; +} +.claro .dijitTabCloseButtonHover { + background-position: -14px; +} +.claro .dijitTabCloseButtonActive { + background-position: -28px; +} +.claro .dijitTabSpacer { + /* set the spacer invisible. note that height:0 doesn't work on IE/quirks, it's still 10px. */ + + display: none; +} +.claro .dijitTabInnerDiv { + background-color: #efefef; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; + color: #494949; +} +.claro .dijitTabHover .dijitTabInnerDiv { + background-color: #abd6ff; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; + color: #000000; +} +.claro .dijitTabActive .dijitTabInnerDiv { + background-color: #7dbdfa; + color: #000000; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitTabChecked .dijitTabInnerDiv { + background-color: #cfe5fa; + color: #000000; +} +.claro .dijitTabContent { + border: 1px solid #b5bcc7; +} +.claro .dijitTabHover .dijitTabContent { + border-color: #759dc0; +} +.claro .dijitTabActive .dijitTabContent { + border-color: #759dc0; +} +.claro .dijitTabChecked .dijitTabContent { + color: #000000; + border-color: #b5bcc7; +} +.claro .tabStripButton .dijitTabInnerDiv { + background-color: transparent; +} +.claro .tabStripButton .dijitTabContent { + border: none; +} +/*** end common ***/ +/*************** top tab ***************/ +.claro .dijitTabContainerTop-tabs .dijitTab { + top: 1px; + /* used for overlap */ + + margin-right: 1px; + padding-top: 3px; +} +.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTab { + top: 3px; +} +/* for top tab padding. change height when status changes */ +.claro .dijitTabContainerTop-tabs .dijitTabContent { + padding: 3px 6px; + border-bottom-width: 0; + background-image: url("../layout/images/tabTop.png"); + background-position: 0 0; + background-repeat: repeat-x; + min-width: 60px; + text-align: center; +} +.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 4px; + padding-top: 6px; +} +/* normal status */ +.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv { + background-image: url("../layout/images/tabTop.png"); + background-position: 0 -248px; + background-position: bottom; + background-repeat: repeat-x; + -webkit-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); + -moz-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); +} +/* checked status */ +.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image: none; + -webkit-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); +} +.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + background-position: 0 -102px; + background-repeat: repeat-x; +} +/** end top tab **/ +/*************** bottom tab ***************/ +.claro .dijitTabContainerBottom-tabs .dijitTab { + top: -1px; + /* used for overlap */ + + margin-right: 1px; +} +/* calculate the position and size */ +.claro .dijitTabContainerBottom-tabs .dijitTabContent { + padding: 3px 6px; + border-top-width: 0; + background-image: url("../layout/images/tabBottom.png"); + background-position: 0 -249px; + background-repeat: repeat-x; + background-position: bottom; + min-width: 60px; + text-align: center; +} +.claro .dijitTabContainerBottom-tabs .dijitTab { + padding-bottom: 3px; +} +/* normal status */ +.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv { + background-image: url("../layout/images/tabBottom.png"); + background-position: top; + background-repeat: repeat-x; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} +/* checked status */ +.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 7px; + padding-top: 4px; + background-position: 0 -119px; +} +.claro .dijitTabContainerBottom-tabs .dijitTabChecked { + padding-bottom: 0; +} +.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image: none; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +/** end bottom tab **/ +/*************** left tab ***************/ +.claro .dijitTabContainerLeft-tabs .dijitTab { + border-right-width: 0; + left: 1px; + /* used for overlap */ + + margin-bottom: 1px; +} +/* normal status */ +.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + background-image: url("../layout/images/tabLeft.png"); + background-position: -347px -340px; + background-repeat: repeat-y; +} +.claro .dijitTabContainerLeft-tabs .dijitTabContent { + padding: 3px 8px 4px 4px; + background-image: url("../layout/images/tabLeft.png"); + background-repeat: repeat-y; + background-position: 0 0; +} +/* checked status */ +.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabContent { + padding-right: 9px; + border-right: none; + background-image: none; +} +.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position: 0 -179px; + background-repeat: repeat-y; + -webkit-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); + box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); +} +/** end left tab **/ +/*************** right tab ***************/ +.claro .dijitTabContainerRight-tabs .dijitTab { + border-left-width: 0; + left: -1px; + /* used for overlap */ + + margin-bottom: 1px; +} +/* normal status */ +.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv { + background-image: url("../layout/images/tabRight.png"); + background-repeat: repeat-y; + background-position: -1px -347px; +} +.claro .dijitTabContainerRight-tabs .dijitTabContent { + padding: 3px 8px 4px 4px; + background-image: url("../layout/images/tabRight.png"); + background-position: right top; + background-repeat: repeat-y; +} +/* checked status */ +.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabContent { + padding-left: 5px; + border-left: none; + background-image: none; +} +.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position: -348px -179px; + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); + -moz-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); +} +/** end right tab **/ +/** round corner **/ +.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv, .claro .dijitTabContainerTop-tabs .dijitTabContent { + -moz-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; +} +.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv, .claro .dijitTabContainerBottom-tabs .dijitTabContent { + -moz-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv, .claro .dijitTabContainerLeft-tabs .dijitTabContent { + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv, .claro .dijitTabContainerRight-tabs .dijitTabContent { + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +/************ left/right scroll buttons + menu button ************/ +.claro .tabStripButton { + background-color: #e5f2fe; + border: 1px solid #b5bcc7; +} +.claro .dijitTabListContainer-top .tabStripButton { + padding: 4px 3px; + margin-top: 7px; + background-image: url("../layout/images/tabTop.png"); + background-position: 0 0; +} +.claro .dijitTabListContainer-bottom .tabStripButton { + padding: 5px 3px; + margin-bottom: 4px; + background-image: url("../layout/images/tabTop.png"); + background-position: 0 -248px; + background-position: bottom; +} +.claro .tabStripButtonHover { + background-color: #abd6ff; +} +.claro .tabStripButtonActive { + background-color: #7dbdfa; +} +.claro .dijitTabStripIcon { + height: 15px; + width: 15px; + margin: 0 auto; + background: url("../form/images/buttonArrows.png") no-repeat -75px 50%; + background-color: transparent; +} +.claro .dijitTabStripSlideRightIcon { + background-position: -24px 50%; +} +.claro .dijitTabStripMenuIcon { + background-position: -51px 50%; +} +/*disabled styles for tab strip buttons*/ +.claro .dijitTabListContainer-top .tabStripButtonDisabled, .claro .dijitTabListContainer-bottom .tabStripButtonDisabled { + background-color: #d3d3d3; + border: 1px solid #b5bcc7; + /* to match border of TabContainer itself */ + +} +.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon { + background-position: -175px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon { + background-position: -124px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripMenuIcon { + background-position: -151px 50%; +} +/* Nested Tabs */ +.claro .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} +.claro .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom: solid 1px #b5bcc7; + padding: 1px 2px 4px; + margin-top: -2px; +} +.claro .dijitTabContainerTabListNested .dijitTabContent { + background: rgba(255, 255, 255, 0) none repeat scroll 0 0; + border: none; + padding: 4px; + border-color: rgba(118, 157, 192, 0); + -webkit-transition-property: background-color, border-color; + -moz-transition-property: background-color, border-color; + transition-property: background-color, border-color; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; + -moz-border-radius: 2px; + border-radius: 2px; +} +.claro .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv { + /* 4 element selector to override box-shadow setting from above rule: + * .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { ... } + */ + + background: none; + border: none; + top: 0; + /* to override top: 1px/-1px for normal tabs */ + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.claro .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent { + background-color: #e5f2fe; + border: solid 1px #cfe5fa; + padding: 3px; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: none; +} +.claro .dijitTabContainerTabListNested .dijitTabActive .dijitTabContent { + border: solid 1px #759dc0; + padding: 3px; + background: #abd6ff url("../layout/images/tabNested.png") repeat-x; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent { + padding: 3px; + border: solid 1px #759dc0; + background-position: 0 105px; + background-color: #cfe5fa; +} +.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: none; + background-image: none; +} +.claro .dijitTabPaneWrapperNested { + border: none; + /* prevent double border */ + +} +.dj_ie6 .claro .dijitTabContent, +.dj_ie6 .claro .dijitTabInnerDiv, +.dj_ie6 .dijitTabListContainer-top .tabStripButton, +.dj_ie6 .dijitTabListContainer-bottom .tabStripButton { + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer.less new file mode 100644 index 0000000..16947ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer.less @@ -0,0 +1,408 @@ +/* TabContainer + * + * Styling TabContainer means styling the TabList and Its content container (dijitTitlePane) + * + * Tab List: (including 4 kinds of tab location) + * .dijitTabContainerTop-tabs - tablist container at top + * .dijitTabContainerBottom-tabs - tablist container at bottom + * .dijitTabContainerLeft-tabs - tablist container at left + * .dijitTabContainerRight-tabs - tablist container at right + * + * Tab Strip Button: + * .dijitTabStripIcon - tab strip button icon + * .dijitTabStripMenuIcon - down arrow icon position + * .dijitTabStripSlideLeftIcon - left arrow icon position + * .dijitTabStripSlideRightIcon - right arrow icon position + * + * .tabStripButtonDisabled - styles for disabled tab strip buttons + * + * Tab Button: + * .dijitTabContainerTop-tabs .dijitTabInnerDiv/.dijitTabContent - styles for top tab button container + * .dijitTabContainerBottom-tabs .dijitTabInnerDiv/.dijitTabContent - styles for bottom tab button container + * .dijitTabContainerLeft-tabs .dijitTabInnerDiv/.dijitTabContent - styles for left tab button container + * .dijitTabContainerRight-tabs .dijitTabInnerDiv/.dijitTabContent - styles for right tab button container + * + * .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv/.dijitTabContent + * - styles for selected status of top tab button + * same to Bottom, Left, Right Tabs + * + * .dijitTabHover .dijitTabInnerDiv - styles when mouse hover on tab buttons + * .dijitTabActive .dijitTabInnerDiv - styles when mouse down on tab buttons + * .dijitTabChecked .dijitTabInnerDiv - styles when on buttons of selected tab + * + * .dijitTabCloseButton - the close action buttons lie at the right top of each tab button on closable tabs + * .dijitTabCloseButtonHover - styles when mouse hover on close action button + * .dijitTabCloseButtonActive - styles when mouse down on close action button + * + * Tab Button: (checked status) + * + * Tab Content Container: + * .dijitTabContainerTop-dijitContentPane + * .dijitTabContainerBottom-dijitContentPane + * .dijitTabContainerLeft-dijitContentPane + * .dijitTabContainerRight-dijitContentPane - for background and padding + * + * Nested Tabs: + * .dijitTabContainerNested - Container for nested tabs + * .dijitTabContainerTabListNested - tab list container for nested tabs + */ + +@import "../variables"; + +/*** some common features ***/ +.claro .dijitTabPaneWrapper { + background:@pane-background-color; +} +.claro .dijitTabPaneWrapper, +.claro .dijitTabContainerTop-tabs, +.claro .dijitTabContainerBottom-tabs, +.claro .dijitTabContainerLeft-tabs, +.claro .dijitTabContainerRight-tabs { + /* todo: add common class name for this div */ + border-color: @border-color; +} +.claro .dijitTabCloseButton { + background: url("../@{image-layout-tab-close}") no-repeat; + width: 14px; + height: 14px; + margin-left: 5px; + margin-right:-5px; +} +.claro .dijitTabCloseButtonHover { + background-position:-14px; +} +.claro .dijitTabCloseButtonActive { + background-position:-28px; +} +.claro .dijitTabSpacer { + /* set the spacer invisible. note that height:0 doesn't work on IE/quirks, it's still 10px. */ + display: none; +} +.claro .dijitTabInnerDiv { + background-color:@unselected-background-color; + .transition-property(background-color, border); + .transition-duration(.35s); + color:@unselected-text-color; +} +.claro .dijitTabHover .dijitTabInnerDiv { + background-color:@hovered-background-color; + .transition-duration(.25s); + color:@hovered-text-color; +} +.claro .dijitTabActive .dijitTabInnerDiv { + background-color:@pressed-background-color; + color:@selected-text-color; + .transition-duration(.1s); +} +.claro .dijitTabChecked .dijitTabInnerDiv { + background-color:@selected-background-color; + color:@selected-text-color; +} + +.claro .dijitTabContent { + border: 1px solid @border-color; +} +.claro .dijitTabHover .dijitTabContent { + border-color: @hovered-border-color; +} +.claro .dijitTabActive .dijitTabContent { + border-color: @pressed-border-color; +} +.claro .dijitTabChecked .dijitTabContent { + color:@selected-text-color; // todo: redundant with .claro .dijitTabChecked .dijitTabInnerDiv above? + border-color: @border-color; // don't use @selected-border-color because need to match border of TabContainer +} + +.claro .tabStripButton .dijitTabInnerDiv { + background-color: transparent; +} +.claro .tabStripButton .dijitTabContent { + border: none; +} +/*** end common ***/ + + +/*************** top tab ***************/ +.claro .dijitTabContainerTop-tabs .dijitTab { + top: 1px; /* used for overlap */ + margin-right: 1px; + padding-top: 3px; +} +.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTab { + top: 3px; +} +/* for top tab padding. change height when status changes */ +.claro .dijitTabContainerTop-tabs .dijitTabContent { + padding:3px 6px; + border-bottom-width: 0; + background-image:url("../@{image-layout-tab-top}"); + background-position:0 0; + background-repeat:repeat-x; + min-width: 60px; + text-align: center; +} +.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 4px; + padding-top: 6px; +} + +/* normal status */ +.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv { + background-image:url("../@{image-layout-tab-top}"); + background-position:0 -248px; + background-position:bottom; + background-repeat:repeat-x; + .box-shadow(0 -1px 1px rgba(0, 0, 0, 0.04)); +} + +/* checked status */ +.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image:none; + .box-shadow(0 -1px 2px rgba(0, 0, 0, 0.05)); +} +.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + background-position:0 -102px; + background-repeat:repeat-x; +} +/** end top tab **/ + + +/*************** bottom tab ***************/ +.claro .dijitTabContainerBottom-tabs .dijitTab { + top: -1px; /* used for overlap */ + margin-right: 1px; +} +/* calculate the position and size */ +.claro .dijitTabContainerBottom-tabs .dijitTabContent { + padding:3px 6px; + border-top-width: 0; + background-image: url("../@{image-layout-tab-bottom}"); + background-position:0 -249px; + background-repeat: repeat-x; + background-position:bottom; + min-width: 60px; + text-align: center; +} +.claro .dijitTabContainerBottom-tabs .dijitTab { + padding-bottom: 3px; +} +/* normal status */ +.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv { + background-image: url("../@{image-layout-tab-bottom}"); + background-position: top; + background-repeat: repeat-x; + .box-shadow(0 1px 1px rgba(0, 0, 0, 0.04)); + +} + +/* checked status */ +.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 7px; + padding-top: 4px; + background-position:0 -119px; +} +.claro .dijitTabContainerBottom-tabs .dijitTabChecked { + padding-bottom: 0; +} +.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image:none; + .box-shadow(0 1px 2px rgba(0, 0, 0, 0.05)); +} +/** end bottom tab **/ + +/*************** left tab ***************/ +.claro .dijitTabContainerLeft-tabs .dijitTab { + border-right-width: 0; + left: 1px; /* used for overlap */ + margin-bottom: 1px; +} +/* normal status */ +.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + background-image: url("../@{image-layout-tab-left}"); + background-position: -347px -340px; + background-repeat: repeat-y; +} +.claro .dijitTabContainerLeft-tabs .dijitTabContent { + padding:3px 8px 4px 4px; + background-image: url("../@{image-layout-tab-left}"); + background-repeat: repeat-y; + background-position:0 0; +} +/* checked status */ +.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabContent { + padding-right: 9px; + border-right: none; + background-image: none; +} +.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position:0 -179px; + background-repeat:repeat-y; + .box-shadow(-1px 0 2px rgba(0, 0, 0, .05)); +} +/** end left tab **/ + +/*************** right tab ***************/ +.claro .dijitTabContainerRight-tabs .dijitTab { + border-left-width: 0; + left: -1px; /* used for overlap */ + margin-bottom: 1px; +} +/* normal status */ +.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv { + background-image: url("../@{image-layout-tab-right}"); + background-repeat: repeat-y; + background-position: -1px -347px; +} +.claro .dijitTabContainerRight-tabs .dijitTabContent { + padding:3px 8px 4px 4px; + background-image: url("../@{image-layout-tab-right}"); + background-position:right top; + background-repeat: repeat-y; +} +/* checked status */ +.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabContent { + padding-left: 5px; + border-left: none; + background-image: none; +} +.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position:-348px -179px; + .box-shadow(1px 0 2px rgba(0, 0, 0, 0.07)); +} +/** end right tab **/ + +/** round corner **/ +.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv, +.claro .dijitTabContainerTop-tabs .dijitTabContent { + .border-radius(2px 2px 0 0); +} +.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv, +.claro .dijitTabContainerBottom-tabs .dijitTabContent{ + .border-radius(0 0 2px 2px); +} +.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv, +.claro .dijitTabContainerLeft-tabs .dijitTabContent{ + .border-radius(2px 0 0 2px); +} + +.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv, +.claro .dijitTabContainerRight-tabs .dijitTabContent{ + .border-radius(0 2px 2px 0); +} + +/************ left/right scroll buttons + menu button ************/ +.claro .tabStripButton { + background-color:@button-background-color; + border: 1px solid @border-color; +} +.claro .dijitTabListContainer-top .tabStripButton { + padding: 4px 3px; + margin-top:7px; + background-image: url("../@{image-layout-tab-top}"); + background-position:0 0; +} +.claro .dijitTabListContainer-bottom .tabStripButton { + padding:5px 3px; + margin-bottom:4px; + background-image: url("../@{image-layout-tab-top}"); + background-position:0 -248px; + background-position:bottom; +} +.claro .tabStripButtonHover { + background-color:@hovered-background-color; +} +.claro .tabStripButtonActive { + background-color:@pressed-background-color; +} +.claro .dijitTabStripIcon { + height:15px; + width:15px; + margin: 0 auto; + background:url("../@{image-form-button-arrows}") no-repeat -75px 50%; + background-color: transparent; +} +.claro .dijitTabStripSlideRightIcon{ + background-position: -24px 50%; +} +.claro .dijitTabStripMenuIcon { + background-position: -51px 50%; +} + +/*disabled styles for tab strip buttons*/ +.claro .dijitTabListContainer-top .tabStripButtonDisabled, +.claro .dijitTabListContainer-bottom .tabStripButtonDisabled { + background-color:@tab-disabled-background-color; + border:1px solid @border-color; /* to match border of TabContainer itself */ +} +.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon { + background-position:-175px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon { + background-position: -124px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripMenuIcon { + background-position: -151px 50%; +} +/* Nested Tabs */ +.claro .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} +.claro .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom:solid 1px @border-color; + padding:1px 2px 4px; + margin-top:-2px; +} +.claro .dijitTabContainerTabListNested .dijitTabContent { + background:rgba(255, 255, 255, 0) none repeat scroll 0 0; + border: none; + padding: 4px; + border-color: rgba(118,157,192,0); + .transition-property(background-color, border-color); + .transition-duration(.3s); + .border-radius(2px); +} +.claro .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv { + /* 4 element selector to override box-shadow setting from above rule: + * .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { ... } + */ + background: none; + border: none; + top: 0;/* to override top: 1px/-1px for normal tabs */ + .box-shadow(none); +} +.claro .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent { + background-color: @nestedtab-hovered-background-color; + border:solid 1px @nestedtab-hovered-border-color; + padding: 3px; + .transition-duration(.2s); +} +.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: none; +} +.claro .dijitTabContainerTabListNested .dijitTabActive .dijitTabContent { + border:solid 1px @nestedtab-selected-border-color; + padding: 3px; + background: @nestedtab-selected-background-color url("../@{image-layout-tab-nested}") repeat-x; + .transition-duration(.1s); +} +.claro .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent { + padding: 3px; + border:solid 1px @selected-border-color; + background-position: 0 105px; + background-color:@selected-background-color; +} +.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: none; + background-image:none; +} +.claro .dijitTabPaneWrapperNested { + border: none;/* prevent double border */ +} + + +.dj_ie6 .claro .dijitTabContent, +.dj_ie6 .claro .dijitTabInnerDiv, +.dj_ie6 .dijitTabListContainer-top .tabStripButton, +.dj_ie6 .dijitTabListContainer-bottom .tabStripButton{ + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer_rtl.css new file mode 100644 index 0000000..89fdff0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer_rtl.css @@ -0,0 +1,67 @@ +.claro .dijitTabContainerTop-tabs .dijitTabRtl, .claro .dijitTabContainerBottom-tabs .dijitTabRtl { + margin-right: 0; + margin-left: 1px; +} +.claro .dijitTabRtl { + -moz-box-orient: horizontal; + text-align: right; +} +.dj_ie7 .claro .dijitTabRtl .dijitTabContent { + display: block; + left: 0; +} +.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl, .dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabCheckedRtl { + top: 1px; +} +.dj_ie7 .claro .tabStripButtonRtl .dijitButtonContents, +.dj_ie8 .claro .tabStripButtonRtl .dijitButtonContents, +.dj_ie6 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie6 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv { + float: left; +} +.dj_ie6 .claro .dijitTabRtl .tabLabel, +.dj_ie6 .claro .dijitTabContainerRight-tabs .dijitTabRtl, +.dj_ie6 .claro .dijitTabContainerLeft-tabs .dijitTabRtl, +.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .claro .dijitTabContainerLeft-tabs .dijitTabRtl .dijitTabInnerDiv { + /*Make the .tablabel have width in ie6 with haslayout property, fix Close icon position bug*/ + + zoom: 1; +} +.dj_ie6 .claro .dijitTabRtl .dijitTabCloseButton, .dj_ie7 .claro .dijitTabRtl .dijitTabCloseButton, .dj_iequirks .claro .dijitTabRtl .dijitTabCloseButton { + margin-right: 5px; +} +.dj_ie6 .claro .dijitTabContainerRightRtl .dijitTabContainerRight-tabs, .dj_ie6 .claro .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs { + width: 1%; +} +.dj_ie6 .dijitTabContainerTopStrip, .dj_ie6 .dijitTabContainerBottomStrip { + position: absolute; +} +.dj_iequirks .claro .dijitTabContainerTopRtl .dijitTabContainerTopStrip { + padding-top: 10px; +} +.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtlChecked .dijitTabInnerDiv { + background-position: -341px -179px; +} +.dj_ie6 .dijitTabContainerTopRtl .dijitTabStripIcon, .dj_ie6 .dijitTabContainerBottomRtl .dijitTabStripIcon { + position: relative; +} +.dj_ie6-rtl .claro .dijitTabContainerTop-tabs { + /* this strange rule prevents IE6 bug in themeTester.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + + padding-left: 3px; +} +.dj_iequirks-rtl .claro .dijitTabListWrapper { + /* this strange rule prevents IE6 bug in themeTesterQuirk.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + + border-left: 1px solid #ffffff; + border-right: 1px solid #ffffff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer_rtl.less new file mode 100644 index 0000000..eaada0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/TabContainer_rtl.less @@ -0,0 +1,81 @@ +@import "../variables"; + +.claro .dijitTabContainerTop-tabs .dijitTabRtl, +.claro .dijitTabContainerBottom-tabs .dijitTabRtl { + margin-right: 0; + margin-left: 1px; +} +.claro .dijitTabRtl { + -moz-box-orient:horizontal; + text-align: right; +} +.dj_ie7 .claro .dijitTabRtl .dijitTabContent { + display: block; + left: 0; +} +.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl, +.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabCheckedRtl { + top: 1px; +} + +// Note that .tabStripButtonRtl .dijitButtonContents needed for IE8 quirks but breaks IE6 quirks +.dj_ie7 .claro .tabStripButtonRtl .dijitButtonContents, +.dj_ie8 .claro .tabStripButtonRtl .dijitButtonContents, +.dj_ie6 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie6 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv { + float:left; +} +.dj_ie6 .claro .dijitTabRtl .tabLabel, +.dj_ie6 .claro .dijitTabContainerRight-tabs .dijitTabRtl, +.dj_ie6 .claro .dijitTabContainerLeft-tabs .dijitTabRtl, +.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .claro .dijitTabContainerLeft-tabs .dijitTabRtl .dijitTabInnerDiv { + /*Make the .tablabel have width in ie6 with haslayout property, fix Close icon position bug*/ + zoom:1; +} +.dj_ie6 .claro .dijitTabRtl .dijitTabCloseButton, +.dj_ie7 .claro .dijitTabRtl .dijitTabCloseButton, +.dj_iequirks .claro .dijitTabRtl .dijitTabCloseButton { + margin-right:5px; +} + +.dj_ie6 .claro .dijitTabContainerRightRtl .dijitTabContainerRight-tabs, +.dj_ie6 .claro .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs { + width:1%; +} + +.dj_ie6 .dijitTabContainerTopStrip, +.dj_ie6 .dijitTabContainerBottomStrip { + position:absolute; +} +.dj_iequirks .claro .dijitTabContainerTopRtl .dijitTabContainerTopStrip { + padding-top: 10px; +} +.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtlChecked .dijitTabInnerDiv { + background-position:-341px -179px; +} + +.dj_ie6 .dijitTabContainerTopRtl .dijitTabStripIcon, +.dj_ie6 .dijitTabContainerBottomRtl .dijitTabStripIcon { + position: relative; +} + + +.dj_ie6-rtl .claro .dijitTabContainerTop-tabs { + /* this strange rule prevents IE6 bug in themeTester.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + padding-left: 3px; +} + +.dj_iequirks-rtl .claro .dijitTabListWrapper { + /* this strange rule prevents IE6 bug in themeTesterQuirk.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + border-left: 1px solid @pane-background-color; + border-right: 1px solid @pane-background-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/accordion.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/accordion.png new file mode 100644 index 0000000..4818103 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/accordion.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/splitterHorizontalHover.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/splitterHorizontalHover.png new file mode 100644 index 0000000..0f5b691 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/splitterHorizontalHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/splitterVerticalHover.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/splitterVerticalHover.png new file mode 100644 index 0000000..2c3c696 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/splitterVerticalHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabBottom.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabBottom.png new file mode 100644 index 0000000..dbcfc85 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabBottom.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabClose.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabClose.png new file mode 100644 index 0000000..f3b2363 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabClose.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabLeft.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabLeft.png new file mode 100644 index 0000000..8e9fcba Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabLeft.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabNested.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabNested.png new file mode 100644 index 0000000..0140cf4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabNested.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabRight.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabRight.png new file mode 100644 index 0000000..0aaae53 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabRight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabTop.png b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabTop.png new file mode 100644 index 0000000..2822487 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/claro/layout/images/tabTop.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/claro/variables.less b/js/dojo-release-1.7.2-src/dijit/themes/claro/variables.less new file mode 100644 index 0000000..ca7d677 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/claro/variables.less @@ -0,0 +1,244 @@ +// General + +@primary-color: #cfe5fa; // Base color for entire theme +@secondary-color: #efefef; // Base color for bar-backgrounds +@text-color: #000; // Text color for enabled widgets +@disabled-color: #d3d3d3; // Base for disabled backgrounds and borders +@error-color: #d46464; + +@container-background-color:#fff; // Backgrounds for various content areas such as TitlePane, ContentPane and Inputs + +@minor-selected-color: spin(saturate(darken(@primary-color, 6), 19), 0); // Color for various arrows and buttons +@base-border-color: spin(desaturate(darken(@primary-color, 29), 44), -1); // Augmented and used directly by variables to create border colors for various widgets +@unfocused-clickable-color: spin(saturate(lighten(@primary-color, 5), 10), 0); // Background color for enabled buttons, text inputs +@border-color: spin(desaturate(darken(@primary-color, 15), 67), 8); // Border color for (enabled, unhovered) TextBox, Slider, Accordion, BorderContainer, TabContainer +@minor-border-color: @disabled-color; // Color of borders inside widgets: horizontal line in Calendar between weeks, around color swatches in ColorPalette, above Dialog action bar +@popup-border-color: @base-border-color; // Border for Dialog, Menu, Tooltip. Must also update tooltip.png (the arrow image file) to match + + +@disabled-border-color: @disabled-color; // Border color for disabled/readonly Button, TextBox etc. widgets +@disabled-background-color: @secondary-color; // Disabled button, textbox, etc. +@disabled-text-color: darken(@secondary-color, 43); // Text color for disabled/readonly widgets + +@unselected-background-color: @secondary-color; // Background color for unselected/unopened tab button, accordion pane, TitlePane, Menu items +@unselected-text-color: darken(@secondary-color, 65); // Text color for unselected/unopened tab button, accordion pane, TitlePane, Menu items + +@hovered-border-color: @base-border-color; // Hover of textbox, tab label, BorderContainer splitter, Calendar, etc. +@hovered-background-color: @minor-selected-color; // Background color for hover of Button, MenuBar, Accordion pane, Calendar... anything that has a (non-white) color to start with and gets darker on hover +@hovered-text-color: @text-color; // Used for title of select Accordion pane, label of select tab, hovered Menu item, etc. + +@pressed-border-color: @base-border-color; // During click on Calendar day, Slider up/down buttons, tab button, etc. +@pressed-background-color: spin(saturate(darken(@primary-color, 16), 12), 0); // Background color while clicking on Accordion/TitlePane title bar, tab button, Calendar day, Toolbar button, Tree row. + +@selected-border-color: @base-border-color; // Selected AccordionPane, tab of nested TabContainer (but plain TabContainer is special) +@selected-background-color: @primary-color; // Selected Accordion pane, nested tab label, Tree row +@selected-text-color: @text-color; // title of selected Accordion pane, label of selected tab, hovered Menu item, etc. + +@bar-background-color: @secondary-color; // MenuBar, Toolbar, action bar at bottom of dialog +@pane-background-color: @container-background-color; // Background color of Accordion panes, Dialogs, etc. +@popup-background-color: @container-background-color; // Background for Dialog. TODO: currently use for ColorPalette, maybe should change. + + + +// Buttons +@button-border-color: @base-border-color; // Border for (stand-alone) buttons in normal, hovered, or active state +@button-background-color: @unfocused-clickable-color; // Background color for (unhovered) buttons +@button-hovered-background-color: @minor-selected-color; // Background color for hovered buttons +@button-pressed-background-color: @minor-selected-color; // Background color for active buttons +@button-border-radius: 4px; // Rounded corner radius for buttons (except in toolbar) + +// Input widgets +@focused-border-color: @base-border-color; // Focused textbox, editor, select, etc. +@error-border-color: @error-color; // Border for textbox in error state +@error-focused-border-color: darken(@error-color, 5); // Border of textbox in error state, and focused +@erroricon-background-color: @error-color; // Background color for exclamation point validation icon (for TextBox in error state) +@textbox-background-color: @container-background-color; // Default background color of TextBox based widgets +@textbox-hovered-background-color: @unfocused-clickable-color; // Background color when hovering a unfocused TextBox, Select, Editor, or other input widget +@textbox-focused-background-color: @textbox-background-color; +@textbox-error-background-color: @textbox-background-color; +@textbox-disabled-background-color: @disabled-background-color; + +@textbox-padding: 2px; // Padding for Textbox, Textarea, etc. + +// CheckBox, RadioButton +@focus-outline-color: darken(@secondary-color, 65); // Color for artificial focus outline around labels of checkboxes + +// TabContainer +@nestedtab-hovered-background-color: @unfocused-clickable-color; +@nestedtab-hovered-border-color: @primary-color; +@nestedtab-selected-border-color: @selected-border-color; +@nestedtab-selected-background-color: @minor-selected-color; +@tab-disabled-background-color: @disabled-color; // For disabled tabs of a TabContainer (not officially supported) + +// Arrow buttons (stand alone, or inside ComboBox / ComboButton / Spinner / etc. +@arrowbutton-background-color: @secondary-color; +@arrowbutton-hovered-background-color: @minor-selected-color; // Color of arrow when hovering ComboBox. But hovering Spinner doesn't change arrow color (TODO) +@arrowbutton-pressed-background-color: @minor-selected-color; +@arrowbutton-inner-border-color: @container-background-color; // Typically the arrows have an inner white border (a.k.a. padding) and then an outer black-ish border + +// Slider +// Note: any changes here require corresponding changes in form/images/sliderThumbs.png +@slider-fullbar-background-color: @primary-color; // Background color for part of slider bar before (to the left or below) the handle +@slider-remainingbar-background-color: @container-background-color; // Background color for part of slider bar after (to the right or above) the handle +@slider-hovered-fullbar-background-color: @minor-selected-color; // Background color for part of bar of hovered slider before (to the left or below) the handle +@slider-hovered-remainingbar-background-color: @container-background-color; // Background color for part of bar of hovered slider after (to the right or above) the handle +@slider-hoveredButton-background-color: @container-background-color; // Background color of slider increment/decrement buttons when mouse is over slider but not over the buttons +@slider-focused-fullbar-background-color: @minor-selected-color; // Background color for part of bar of focused slider before (to the left or below) the handle +@slider-focused-remainingbar-background-color: @container-background-color; // Background color for part of bar of focused slider after (to the right or above) the handle +@slider-button-hovered-background-color: @primary-color; // Background color of slider increment/decrement buttons when mouse is over the buttons +@slider-button-pressed-background-color: @minor-selected-color; // Background color of slider increment/decrement buttons while button is depressed + +// Select, ComboBox +@select-dropdownitem-background-color: @container-background-color; // Background color for items in the drop down list of a ComboBox/Select +@select-dropdownitem-hovered-background-color: @pressed-background-color; // Background color for the hovered item in the drop down list of a ComboBox/Select +@select-matchedtext-background-color: @minor-selected-color; // Background color of text in ComboBox drop down that matches typed in phrase + +// Menus +@menu-background-color: @popup-background-color; + +// Calendar +@calendar-background-color: @primary-color; +@calendar-currentmonth-background-color: @container-background-color; // Background color for days of the current month +@calendar-adjacentmonth-background-color: @unfocused-clickable-color; // Background color used for days from previous or next month +@calendar-adjacentmonth-text-color: @base-border-color; // Text color used for days from previous or next month +@calendar-date-pressed-border-color: @container-background-color; // For some reason pressing a day of the month (as opposed to hovering it) makes the border go away, is this intentional? +@calendar-date-pressed-background-color: @pressed-background-color; +@calendar-date-selected-border-color: @selected-border-color; +@calendar-date-selected-background-color: @minor-selected-color; +@calendar-button-hovered-background-color: @unfocused-clickable-color; // for hover or next/previous year, and month drop down (TODO: border and background are built in to calendarArrows.png, can't control from here) +@calendar-button-hovered-border-color: @container-background-color; // for hover or next/previous year, and month drop down +@calendar-button-pressed-background-color: @pressed-background-color; +@calendar-button-pressed-border-color: @pressed-border-color; + + +// ProgressBar +@progressbar-border-color: @popup-border-color; // Border color of progress bar +@progressbar-full-background-color:@minor-selected-color; // Background color for part of progress bar indicating amount completed +@progressbar-empty-background-color: @container-background-color; // Background color for part of progress bar indicating amount remaining +@progressbar-text-color: @text-color; // Color of progress bar text (ex: "35%"). Must contrast with both empty and full background colors. + +// TimePicker +@timepicker-minorvalue-background-color: @secondary-color; // For 3:15, 3:30, 3:45 but not 3:00 or 4:00 +@timepicker-minorvalue-text-color: darken(@secondary-color, 43); +@timepicker-majorvalue-background-color: @unfocused-clickable-color; // For 3:00, 4:00, 5:00, etc. +@timepicker-value-hovered-background-color: @pressed-background-color; +@timepicker-value-hovered-text-color: @hovered-text-color; +@timepicker-arrow-hovered-background-color: @minor-selected-color; + +// ColorPalette +@colorpalette-background-color: @container-background-color; +@swatch-border-color: @minor-border-color; +@swatch-hovered-border-color: #000; +@swatch-selected-border-color: #000; + +// Dialog +@dialog-underlay-color: @container-background-color; // the thing that grays out the screen when a dialog is shown +@dialog-titlebar-border-color: @container-background-color; // Inner border around the title sectionof a Dialog, inside the main border of the Dialog and the border between title and content +@dialog-titlebar-background-color: @minor-selected-color; + +// BorderContainer +@splitter-hovered-background-color: @primary-color; // Color of splitter when user hovers it, before mouse down +@splitter-dragged-background-color: @minor-selected-color; // Color of splitter while it's being dragged + +// Toolbar +@toolbar-button-checked-background-color: @container-background-color; // a toggled-on button in the toolbar +@toolbar-combobutton-hovered-unhoveredsection-background-color: spin(saturate(lighten(@primary-color, 8), 19), -29); // when user hovers a ComboButton in a Toolbar, the other half of the button turns this color +@toolbar-button-border-radius: 2px; // Rounded corner radius for buttons for buttons in toolbar + +// DnD +@dnd-avatar-background-color: @container-background-color; // Background color of little Dialog-type box indicating dragged items +@dnd-avatar-header-background-color: #f58383; // Title bar for dragged items +@dnd-avatar-candrop-header-background-color: #97e68d;// Title bar for dragged items when they can be dropped +@dnd-dropseparator-color: @base-border-color; // Color of line indicating that user is about to drop between items A & B + +// Document level +@document-text-color: #131313; // Text color for document itself (text outside of widgets) +@document-shadedsection-background-color: @bar-background-color;// background color used for
          , , and table header rows
          +@document-border-color: @disabled-color;								// Border for 
          , , tables, etc.
          +
          +// Images
          +@image-arrow-sprite: "images/spriteArrows.png";
          +@image-calendar-container: "images/calendarContainerImages.png";
          +@image-calendar-arrows: "images/calendarArrows.png";
          +@image-calendar-arrows-ie6: "images/calendarArrows8bit.png";
          +@image-checkmark: "images/checkmarkNoBorder.png";
          +@image-checkmark-ie6: "images/checkmarkNoBorder.gif";
          +@image-common-highlight: "images/commonHighlight.png";
          +@image-dialog-close: "images/dialogCloseIcon.png";
          +@image-dialog-close-ie6: "images/dialogCloseIcon8bit.png";
          +@image-dnd: "images/dnd.png";
          +@image-editor-icons-enabled: "../../icons/images/editorIconsEnabled.png";
          +@image-form-button: "form/images/button.png";
          +@image-form-button-arrows: "form/images/buttonArrows.png";
          +@image-form-checkbox-and-radios: "form/images/checkboxRadioButtonStates.png";
          +@image-form-checkbox-and-radios-ie6: "form/images/checkboxAndRadioButtons_IE6.png";
          +@image-form-common-arrows: "form/images/commonFormArrows.png";
          +@image-form-error: "form/images/error.png";
          +@image-form-highlight: "form/images/formHighlight.png";
          +@image-form-slider-horizontal: "form/images/sliderHorizontal.png";
          +@image-form-slider-thumbs: "form/images/sliderThumbs.png";
          +@image-form-slider-vertical: "form/images/sliderVertical.png";
          +@image-form-textbox-background: "form/images/textBox_back.png";
          +@image-layout-accordion: "layout/images/accordion.png";
          +@image-layout-splitter-horizontal-hover: "layout/images/splitterHorizontalHover.png";
          +@image-layout-splitter-vertical-hover: "layout/images/splitterVerticalHover.png";
          +@image-layout-tab-bottom: "layout/images/tabBottom.png";
          +@image-layout-tab-close: "layout/images/tabClose.png";
          +@image-layout-tab-left: "layout/images/tabLeft.png";
          +@image-layout-tab-nested: "layout/images/tabNested.png";
          +@image-layout-tab-right: "layout/images/tabRight.png";
          +@image-layout-tab-top: "layout/images/tabTop.png";
          +@image-loading-animation: "images/loadingAnimation.gif";
          +@image-menu-highlight: "images/menuHighlight.png";
          +@image-progressbar-empty: "images/progressBarEmpty.png";
          +@image-progressbar-full: "images/progressBarFull.png";
          +@image-progressbar-anim: "images/progressBarAnim.gif";
          +@image-titlebar: "images/titlebar.png";
          +@image-tooltip: "images/tooltip.png";
          +@image-tooltip-ie6: "images/tooltip8bit.png";
          +@image-tooltip-gradient: "images/tooltipGradient.png";
          +@image-tree-expand: "images/treeExpandImages.png";
          +@image-tree-expand-ie6: "images/treeExpandImages8bit.png";
          +
          +// Mixins
          +
          +.border-radius (@radius) {
          +	-moz-border-radius: @radius;
          +	border-radius: @radius;
          +}
          +
          +.box-shadow (@value) {
          +	-webkit-box-shadow: @value;
          +	-moz-box-shadow: @value;
          +	box-shadow: @value;
          +}
          +
          +.transition-property (@value) {
          +	-webkit-transition-property: @value;
          +	-moz-transition-property: @value;
          +	transition-property: @value;
          +}
          +
          +.transition-property (@value1, @value2) {
          +	-webkit-transition-property: @value1, @value2;
          +	-moz-transition-property: @value1, @value2;
          +	transition-property: @value1, @value2;
          +}
          +
          +.transition-duration (@value) {
          +	-webkit-transition-duration: @value;
          +	-moz-transition-duration: @value;
          +	transition-duration: @value;
          +}
          +
          +.transition-duration (@value1, @value2) {
          +	-webkit-transition-duration: @value1, @value2;
          +	-moz-transition-duration: @value1, @value2;
          +	transition-duration: @value1, @value2;
          +}
          +
          +.transition-timing-function (@value) {
          +	-webkit-transition-timing-function: @value;
          +	-moz-transition-timing-function: @value;
          +	transition-timing-function: @value;
          +}
          diff --git a/js/dojo-release-1.7.2-src/dijit/themes/dijit.css b/js/dojo-release-1.7.2-src/dijit/themes/dijit.css
          new file mode 100644
          index 0000000..4c60bf3
          --- /dev/null
          +++ b/js/dojo-release-1.7.2-src/dijit/themes/dijit.css
          @@ -0,0 +1,2051 @@
          +/*
          +	Essential styles that themes can inherit.
          +	In other words, works but doesn't look great.
          +*/
          +
          +
          +
          +/****
          +		GENERIC PIECES
          + ****/
          +
          +.dijitReset {
          +	/* Use this style to null out padding, margin, border in your template elements
          +		so that page specific styles don't break them.
          +		- Use in all TABLE, TR and TD tags.
          +	*/
          +	margin:0;
          +	border:0;
          +	padding:0;
          +	line-height:normal;
          +	font: inherit;
          +	color: inherit;
          +}
          +.dijit_a11y .dijitReset {
          +	-moz-appearance: none; /* remove predefined high-contrast styling in Firefox */
          +}
          +
          +.dijitInline {
          +	/*  To inline block elements.
          +		Similar to InlineBox below, but this has fewer side-effects in Moz.
          +		Also, apparently works on a DIV as well as a FIELDSET.
          +	*/
          +	display:inline-block;			/* webkit and FF3 */
          +	#zoom: 1; /* set hasLayout:true to mimic inline-block */
          +	#display:inline; /* don't use .dj_ie since that increases the priority */
          +	border:0;
          +	padding:0;
          +	vertical-align:middle;
          +	#vertical-align: auto;	/* makes TextBox,Button line up w/native counterparts on IE6 */
          +}
          +
          +table.dijitInline {
          +	/* To inline tables with a given width set */
          +	display:inline-table;
          +	box-sizing: content-box; -moz-box-sizing: content-box;
          +}
          +
          +.dijitHidden {
          +	/* To hide unselected panes in StackContainer etc. */
          +	display: none !important;
          +}
          +
          +.dijitVisible {
          +	/* To show selected pane in StackContainer etc. */
          +	display: block !important;	/* override user's display:none setting via style setting or indirectly via class */
          +	position: relative;			/* to support setting width/height, see #2033 */
          +}
          +
          +.dijitInputContainer {
          +	/* for positioning of placeHolder */
          +	#zoom: 1;
          +	overflow: hidden;
          +	float: none !important; /* needed by FF to squeeze the INPUT in */
          +	position: relative;
          +	vertical-align: middle;
          +	#display: inline;
          +}
          +
          +.dj_ie input.dijitTextBox,
          +.dj_ie .dijitTextBox input {
          +	font-size: 100%;
          +}
          +.dijitTextBox .dijitSpinnerButtonContainer,
          +.dijitTextBox .dijitArrowButtonContainer,
          +.dijitTextBox .dijitValidationContainer {
          +	float: right;
          +	text-align: center;
          +}
          +.dijitTextBox input.dijitInputField {
          +	/* override unreasonable user styling of buttons and icons */
          +	padding-left: 0 !important;
          +	padding-right: 0 !important;
          +}
          +.dijitTextBox .dijitValidationContainer {
          +	display: none;
          +}
          +
          +.dijitTeeny {
          +	font-size:1px;
          +	line-height:1px;
          +}
          +
          +.dijitOffScreen {
          +	position: absolute;
          +	left: 50%;
          +	top: -10000px;
          +}
          +
          +/*
          + * Popup items have a wrapper div (dijitPopup)
          + * with the real popup inside, and maybe an iframe too
          + */
          +.dijitPopup {
          +	position: absolute;
          +	background-color: transparent;
          +	margin: 0;
          +	border: 0;
          +	padding: 0;
          +}
          +
          +.dijitPositionOnly {
          +	/* Null out all position-related properties */
          +	padding: 0 !important;
          +	border: 0 !important;
          +	background-color: transparent !important;
          +	background-image: none !important;
          +	height: auto !important;
          +	width: auto !important;
          +}
          +
          +.dijitNonPositionOnly {
          +	/* Null position-related properties */
          +	float: none !important;
          +	position: static !important;
          +	margin: 0 0 0 0 !important;
          +	vertical-align: middle !important;
          +}
          +
          +.dijitBackgroundIframe {
          +	/* iframe used to prevent problems with PDF or other applets overlaying menus etc */
          +	position: absolute;
          +	left: 0;
          +	top: 0;
          +	width: 100%;
          +	height: 100%;
          +	z-index: -1;
          +	border: 0;
          +	padding: 0;
          +	margin: 0;
          +}
          +
          +.dijitDisplayNone {
          +	/* hide something.  Use this as a class rather than element.style so another class can override */
          +	display:none !important;
          +}
          +
          +.dijitContainer {
          +	/* for all layout containers */
          +	overflow: hidden;	/* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */
          +}
          +
          +/****
          +		A11Y
          + ****/
          +.dijit_a11y .dijitIcon,
          +.dijit_a11y div.dijitArrowButtonInner, /* is this only for Spinner?  if so, it should be deleted */
          +.dijit_a11y span.dijitArrowButtonInner,
          +.dijit_a11y img.dijitArrowButtonInner,
          +.dijit_a11y .dijitCalendarIncrementControl,
          +.dijit_a11y .dijitTreeExpando {
          +	/* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents
          +	 * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */
          +	display: none;
          +}
          +.dijitSpinner div.dijitArrowButtonInner {
          +	display: block; /* override previous rule */
          +}
          +
          +.dijit_a11y .dijitA11ySideArrow {
          +	display: inline !important; /* display text instead */
          +	cursor: pointer;
          +}
          +
          +/*
          + * Since we can't use shading in a11y mode, and since the underline indicates today's date,
          + * use a border to show the selected date.
          + * Avoid screen jitter when switching selected date by compensating for the selected node's
          + * border w/padding on other nodes.
          + */
          +.dijit_a11y .dijitCalendarDateLabel {
          +	padding: 1px;
          +	border: 0px !important;
          +}
          +.dijit_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
          +	border-style: solid !important;
          +	border-width: 1px !important;
          +	padding: 0;
          +}
          +.dijit_a11y .dijitCalendarDateTemplate {
          +	padding-bottom: 0.1em !important;	/* otherwise bottom border doesn't appear on IE */
          +	border: 0px !important;
          +}
          +.dijit_a11y .dijitButtonNode {
          +	border: black outset medium !important;
          +
          +	/* In claro, hovering a toolbar button reduces padding and adds a border.
          +	 * Not needed in a11y mode since Toolbar buttons always have a border.
          +	 */
          +	padding: 0 !important;
          +}
          +
          +.dijit_a11y .dijitButtonContents{
          +	margin: 0.15em; /* Margin needed to make focus outline visible */
          +}
          +
          +.dijit_a11y .dijitTextBoxReadOnly .dijitInputField,
          +.dijit_a11y .dijitTextBoxReadOnly .dijitButtonNode {
          +	border-style: outset!important;
          +	border-width: medium!important;
          +	border-color: #999 !important;
          +	color:#999 !important;
          +}
          +
          +/* button inner contents - labels, icons etc. */
          +.dijitButtonNode * {
          +	vertical-align: middle;
          +}
          +.dijitButtonNode .dijitArrowButtonInner {
          +	/* the arrow icon node */
          +	background: no-repeat center;
          +	width: 12px;
          +	height: 12px;
          +	direction: ltr; /* needed by IE/RTL */
          +}
          +
          +/****
          +	3-element borders:  ( dijitLeft + dijitStretch + dijitRight )
          +	These were added for rounded corners on dijit.form.*Button but never actually used.
          + ****/
          +
          +.dijitLeft {
          +	/* Left part of a 3-element border */
          +	background-position:left top;
          +	background-repeat:no-repeat;
          +}
          +
          +.dijitStretch {
          +	/* Middle (stretchy) part of a 3-element border */
          +	white-space:nowrap;			/* MOW: move somewhere else */
          +	background-repeat:repeat-x;
          +}
          +
          +.dijitRight {
          +	/* Right part of a 3-element border */
          +	#display:inline;				/* IE7 sizes to outer size w/o this */
          +	background-position:right top;
          +	background-repeat:no-repeat;
          +}
          +
          +/* Buttons */
          +.dj_gecko .dijit_a11y .dijitButtonDisabled .dijitButtonNode {
          +	opacity: 0.5;
          +}
          +
          +.dijitToggleButton,
          +.dijitButton,
          +.dijitDropDownButton,
          +.dijitComboButton {
          +	/* outside of button */
          +	margin: 0.2em;
          +	vertical-align: middle;
          +}
          +
          +.dijitButtonContents {
          +	display: block;		/* to make focus border rectangular */
          +}
          +td.dijitButtonContents {
          +	display: table-cell;	/* but don't affect Select, ComboButton */
          +}
          +
          +.dijitButtonNode img {
          +	/* make text and images line up cleanly */
          +	vertical-align:middle;
          +	/*margin-bottom:.2em;*/
          +}
          +
          +.dijitToolbar .dijitComboButton {
          +	/* because Toolbar only draws a border around the hovered thing */
          +	border-collapse: separate;
          +}
          +
          +.dijitToolbar .dijitToggleButton,
          +.dijitToolbar .dijitButton,
          +.dijitToolbar .dijitDropDownButton,
          +.dijitToolbar .dijitComboButton {
          +	margin: 0;
          +}
          +
          +.dijitToolbar .dijitButtonContents {
          +	/* just because it used to be this way */
          +	padding: 1px 2px;
          +}
          +
          +
          +.dj_webkit .dijitToolbar .dijitDropDownButton {
          +	padding-left: 0.3em;
          +}
          +.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
          +	padding:0;
          +}
          +
          +.dijitButtonNode {
          +	/* Node that is acting as a button -- may or may not be a BUTTON element */
          +	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 {
          +	/* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode)
          +	can be different than just a single line-height:normal, visible in InlineEditBox/Spinner */
          +	line-height:inherit;
          +}
          +.dijitTextBox .dijitButtonNode {
          +	border-width: 0;
          +}
          +
          +.dijitButtonNode,
          +.dijitButtonNode * {
          +	cursor: pointer;
          +}
          +
          +.dj_ie .dijitButtonNode {
          +	/* ensure hasLayout */
          +	zoom: 1;
          +}
          +
          +.dj_ie .dijitButtonNode button {
          +	/*
          +		disgusting hack to get rid of spurious padding around button elements
          +		on IE. MSIE is truly the web's boat anchor.
          +	*/
          +	overflow: visible;
          +}
          +
          +div.dijitArrowButton {
          +	float: right;
          +}
          +
          +/******
          +	TextBox related.
          +	Everything that has an 
          +*******/
          +
          +.dijitTextBox {
          +	border: solid black 1px;
          +	#overflow: hidden; /* #6027, #6067 */
          +	width: 15em;	/* need to set default size on outer node since inner nodes say  and .  user can override */
          +	vertical-align: middle;
          +}
          +
          +.dijitTextBoxReadOnly,
          +.dijitTextBoxDisabled {
          +	color: gray;
          +}
          +.dj_webkit .dijitTextBoxDisabled input {
          +	color: #eee; /* because WebKit lightens disabled input/textarea no matter what color you specify */
          +}
          +.dj_webkit textarea.dijitTextAreaDisabled {
          +	color: #333; /* because WebKit lightens disabled input/textarea no matter what color you specify */
          +}
          +.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */
          +.dj_gecko .dijitTextBoxDisabled input {
          +	-moz-user-input: none; /* prevent focus of disabled textbox buttons */
          +}
          +
          +.dijitPlaceHolder {
          +	/* hint text that appears in a textbox until user starts typing */
          +	color: #AAAAAA;
          +	font-style: italic;
          +	position: absolute;
          +	top: 0;
          +	left: 0;
          +	#filter: ""; /* make this showup in IE6 after the rendering of the widget */
          +}
          +
          +.dijitTimeTextBox {
          +	width: 8em;
          +}
          +
          +/* rules for webkit to deal with fuzzy blue focus border */
          +.dijitTextBox input:focus {
          +	outline: none;	/* blue fuzzy line looks wrong on combobox or something w/validation icon showing */
          +}
          +.dijitTextBoxFocused {
          +	outline: 5px -webkit-focus-ring-color;
          +}
          +
          +.dijitTextBox input {
          +	float: left; /* needed by IE to remove secret margin */
          +}
          +.dijitInputInner {
          +	/* for when an  is embedded inside an inline-block 
          with a size and border */ + border:0 !important; + vertical-align:middle !important; + background-color:transparent !important; + width:100% !important; + /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */ + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; +} +.dijit_a11y .dijitTextBox input { + margin: 0 !important; +} +.dijitTextBoxError input.dijitValidationInner, +.dijitTextBox input.dijitArrowButtonInner { + /* used to display arrow icon/validation icon, or in arrow character in high contrast mode. + * The css below is a trick to hide the character in non-high-contrast mode + */ + text-indent: -1em !important; + direction: ltr !important; + text-align: left !important; + height: auto !important; + #text-indent: 0 !important; + #letter-spacing: -5em !important; + #text-align: right !important; +} +.dj_ie .dijitTextBox input, +.dj_ie input.dijitTextBox { + overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */ + line-height: normal; /* strict mode */ +} +.dj_ie7 .dijitTextBox input.dijitValidationInner, +.dj_ie7 .dijitTextBox input.dijitArrowButtonInner { + line-height: 86%; /* IE7 problem where the icon is vertically too low w/o this - real input stays at normal */ +} +.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%; /* IE7 problem where the icon is vertically way too low w/o this */ +} +.dijit_a11y input.dijitValidationInner, +.dijit_a11y input.dijitArrowButtonInner { + /* (in high contrast mode) revert rules from above so character displays */ + text-indent: 0 !important; + width: 1em !important; + #text-align: left !important; +} +.dijitTextBoxError .dijitValidationContainer { + display: inline; + cursor: default; +} + +/* ComboBox & Spinner */ + +.dijitSpinner .dijitSpinnerButtonContainer, +.dijitComboBox .dijitArrowButtonContainer { + /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ + border-width: 0 0 0 1px !important; /* !important needed due to wayward ".theme .dijitButtonNode" rules */ +} +.dijitToolbar .dijitComboBox .dijitArrowButtonContainer { + /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */ + border-width: 0 !important; +} + +.dijitComboBoxMenu { + /* Drop down menu is implemented as
          • ... but we don't want circles before each item */ + list-style-type: none; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { + /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ + border-width: 0; +} +.dj_ie .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { + clear: both; /* IE workaround */ +} + +.dj_ie .dijitToolbar .dijitComboBox { + /* make combobox buttons align properly with other buttons in a toolbar */ + vertical-align: middle; +} + +/* Spinner */ + +.dijitTextBox .dijitSpinnerButtonContainer { + width: 1em; + position: relative !important; + overflow: hidden; +} +.dijitSpinner .dijitSpinnerButtonInner { + width:1em; + visibility:hidden !important; /* just a sizing element */ + overflow-x:hidden; +} +.dijitComboBox .dijitButtonNode, +.dijitSpinnerButtonContainer .dijitButtonNode { + border-width: 0; +} +.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode { + border: 0 none !important; +} +.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer, +.dijit_a11y .dijitSpinner .dijitArrowButtonInner, +.dijit_a11y .dijitSpinnerButtonContainer input { + width: 1em !important; +} +.dijit_a11y .dijitSpinner .dijitArrowButtonInner { + margin: 0 auto !important; /* should auto-center */ +} +.dj_ie .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding-left: 0.3em !important; + padding-right: 0.3em !important; + margin-left: 0.3em !important; + margin-right: 0.3em !important; + width: 1.4em !important; +} +.dj_ie7 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */ + padding-right: 0 !important; + width: 1em !important; +} +.dj_ie6 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + margin-left: 0.1em !important; + margin-right: 0.1em !important; + width: 1em !important; +} +.dj_iequirks .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + margin-left: 0 !important; + margin-right: 0 !important; + width: 2em !important; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings + * for dijit.form.Button + */ + padding: 0; + position: absolute !important; + right: 0; + float: none; + height: 50%; + width: 100%; + bottom: auto; + left: 0; + right: auto; +} +.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: auto; +} +.dijit_a11y .dijitSpinnerButtonContainer .dijitArrowButton { + overflow: visible !important; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton { + top: 50%; + border-top-width: 1px !important; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { + #bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */ + top: 0; +} +.dijitSpinner .dijitArrowButtonInner { + margin: auto; + overflow-x: hidden; + height: 100% !important; +} +.dj_iequirks .dijitSpinner .dijitArrowButtonInner { + height: auto !important; +} +.dijitSpinner .dijitArrowButtonInner .dijitInputField { + -moz-transform: scale(0.5); + -moz-transform-origin: center top; + -webkit-transform: scale(0.5); + -webkit-transform-origin: center top; + -o-transform: scale(0.5); + -o-transform-origin: center top; + transform: scale(0.5); + transform-origin: left top; + padding-top: 0; + padding-bottom: 0; + padding-left: 0 !important; + padding-right: 0 !important; + width: 100%; +} +.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField { + zoom: 50%; /* emulate transform: scale(0.5) */ +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner { + overflow: hidden; +} + +.dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: 100%; +} +.dj_iequirks .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: 1em; /* matches .dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */ +} +.dijitSpinner .dijitArrowButtonInner .dijitInputField { + visibility: hidden; +} +.dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + vertical-align:top; + visibility: visible; +} +.dijit_a11y .dijitSpinnerButtonContainer { + width: 1em; +} +.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode { + border-width: 1px 0 0 0; + border-style: solid !important; +} + +/**** + dijit.form.CheckBox + & + dijit.form.RadioButton + ****/ + +.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 { + /* place the actual input on top, but all-but-invisible */ + opacity: 0.01; +} + +.dj_ie .dijitCheckBoxInput { + filter: alpha(opacity=0); +} + +.dijit_a11y .dijitCheckBox, +.dijit_a11y .dijitRadio { + /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */ + width: auto !important; + height: auto !important; +} +.dijit_a11y .dijitCheckBoxInput { + opacity: 1; + filter: none; + width: auto; + height: auto; +} + +.dijit_a11y .dijitFocusedLabel { + /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/ + border: 1px dotted; + outline: 0px !important; +} + +/**** + dijit.ProgressBar + ****/ + +.dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + position:relative;overflow:hidden; + border:1px solid black; /* a11y: border necessary for high-contrast mode */ + z-index:0; /* establish a stacking context for this progress bar */ +} + +.dijitProgressBarFull { + /* outer container for background of bar that is finished */ + position:absolute; + overflow:hidden; + z-index:-1; + top:0; + width:100%; +} +.dj_ie6 .dijitProgressBarFull { + height:1.6em; +} + +.dijitProgressBarTile { + /* inner container for finished portion */ + position:absolute; + overflow:hidden; + top:0; + left:0; + bottom:0; + right:0; + margin:0; + padding:0; + width: 100%; /* needed for IE/quirks */ + height:auto; + background-color:#aaa; + background-attachment: fixed; +} + +.dijit_a11y .dijitProgressBarTile { + /* a11y: The border provides visibility in high-contrast mode */ + border-width:2px; + border-style:solid; + background-color:transparent !important; +} + +.dj_ie6 .dijitProgressBarTile { + /* width:auto works in IE6 with position:static but not position:absolute */ + position:static; + /* height:auto or 100% does not work in IE6 */ + height:1.6em; +} + +.dijitProgressBarIndeterminate .dijitProgressBarTile { + /* animated gif for 'indeterminate' mode */ +} + +.dijitProgressBarIndeterminateHighContrastImage { + display:none; +} + +.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage { + display:block; + position:absolute; + top:0; + bottom:0; + margin:0; + padding:0; + width:100%; + height:auto; +} + +.dijitProgressBarLabel { + display:block; + position:static; + width:100%; + text-align:center; + background-color:transparent !important; +} + +/**** + dijit.Tooltip + ****/ + +.dijitTooltip { + position: absolute; + z-index: 2000; + display: block; + /* make visible but off screen */ + 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; +} +.dijit_a11y .dijitTooltipConnector { + display: none; /* won't show b/c it's background-image; hide to avoid border gap */ +} + +.dijitTooltipData { + display:none; +} + +/* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS) + make sure that the position:absolute in dijitAlign* overrides other classes */ + +.dijitLayoutContainer { + position: relative; + display: block; + overflow: hidden; +} + +.dijitAlignTop, +.dijitAlignBottom, +.dijitAlignLeft, +.dijitAlignRight { + position: absolute; + overflow: hidden; +} + +body .dijitAlignClient { position: absolute; } + +/* + * BorderContainer + * + * .dijitBorderContainer is a stylized layout where panes have border and margin. + * .dijitBorderContainerNoGutter is a raw layout. + */ +.dijitBorderContainer, .dijitBorderContainerNoGutter { + position:relative; + overflow: hidden; +} + +.dijitBorderContainerPane, +.dijitBorderContainerNoGutterPane { + position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */ + z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */ +} + +.dijitBorderContainer > .dijitTextArea { + /* On Safari, for SimpleTextArea inside a BorderContainer, + don't want to display the grip to resize */ + resize: none; +} + +.dijitGutter { + /* gutter is just a place holder for empty space between panes in BorderContainer */ + position: absolute; + font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */ +} + +/* SplitContainer + + 'V' == container that splits vertically (up/down) + 'H' = horizontal (left/right) +*/ + +.dijitSplitter { + position: absolute; + overflow: hidden; + z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/ + background-color: #fff; + border-color: gray; + border-style: solid; + border-width: 0; +} +.dj_ie .dijitSplitter { + z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */ +} + +.dijitSplitterActive { + z-index: 11 !important; +} + +.dijitSplitterCover { + position:absolute; + z-index:-1; + top:0; + left:0; + width:100%; + height:100%; +} + +.dijitSplitterCoverActive { + z-index:3 !important; +} + +/* #6945: stop mouse events */ +.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 .dijit_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; +} + +.dijit_a11y .dijitSplitterH { + border-top:1px solid #d3d3d3 !important; + border-bottom:1px solid #d3d3d3 !important; +} +.dijit_a11y .dijitSplitterV { + border-left:1px solid #d3d3d3 !important; + border-right:1px solid #d3d3d3 !important; +} + +/* ContentPane */ + +.dijitContentPane { + display: block; + overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */ +} + +.dijitContentPaneSingleChild { + /* + * if the ContentPane holds a single layout widget child which is being sized to match the content pane, + * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449 + */ + overflow: hidden; +} + +.dijitContentPaneLoading .dijitIconLoading, +.dijitContentPaneError .dijitIconError { + margin-right: 9px; +} + +/* TitlePane */ + +.dijitTitlePane { + display: block; + overflow: hidden; +} +.dijitTitlePaneTitle { + cursor: pointer; +} +.dijitFixedOpen, .dijitFixedClosed { + /* TitlePane that cannot be toggled */ + cursor: default; +} +.dijitTitlePaneTitle * { + vertical-align: middle; +} +.dijitTitlePane .dijitArrowNodeInner { + /* normally, hide arrow text in favor of icon */ + display: none; +} +.dijit_a11y .dijitTitlePane .dijitArrowNodeInner { + /* ... except in a11y mode, then show text arrow */ + display:inline !important; + font-family: monospace; /* because - and + are different widths */ +} +.dijit_a11y .dijitTitlePane .dijitArrowNode { + /* ... and hide icon */ + display:none; +} + +.dj_ie6 .dijitTitlePaneContentOuter, +.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle { + /* force hasLayout to ensure borders etc, show up */ + zoom: 1; +} + +/* Color Palette + * Sizes designed so that table cell positions match icons in underlying image, + * which appear at 20x20 intervals. + */ + +.dijitColorPalette { + border: 1px solid #999; + background: #fff; + position: relative; +} + +.dijitColorPalette .dijitPaletteTable { + /* Table that holds the palette cells, and overlays image file with color swatches. + * padding/margin to align table with image. + */ + 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 { + /* using padding above so that focus border isn't cutoff on moz/webkit, + * but using margin on IE because padding doesn't seem to work + */ + padding: 0; + margin: 2px 3px 3px 3px; +} + +.dijitColorPalette .dijitPaletteCell { + /* in the */ + font-size: 1px; + vertical-align: middle; + text-align: center; + background: none; +} +.dijitColorPalette .dijitPaletteImg { + /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */ + padding: 1px; /* white area between gray border and color swatch */ + border: 1px solid #999; + margin: 2px 1px; + cursor: default; + font-size: 1px; /* prevent from getting bigger just to hold a character */ +} +.dj_gecko .dijitColorPalette .dijitPaletteImg { + padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */ +} +.dijitColorPalette .dijitColorPaletteSwatch { + /* the actual part where the color is */ + width: 14px; + height: 12px; +} +.dijitPaletteTable td { + padding: 0; +} +.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { + /* hovered color swatch */ + border: 1px solid #000; +} + +.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, +.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid #000; + margin: 1px 0; /* reduce margin to compensate for increased border */ +} + + +.dijit_a11y .dijitColorPalette .dijitPaletteTable, +.dijit_a11y .dijitColorPalette .dijitPaletteTable * { + /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */ + background-color: transparent !important; +} + +/* AccordionContainer */ + +.dijitAccordionContainer { + border:1px solid #b7b7b7; + border-top:0 !important; +} +.dijitAccordionTitle { + cursor: pointer; +} +.dijitAccordionTitleSelected { + cursor: default; +} + +/* images off, high-contrast mode styles */ +.dijitAccordionTitle .arrowTextUp, +.dijitAccordionTitle .arrowTextDown { + display: none; + font-size: 0.65em; + font-weight: normal !important; +} + +.dijit_a11y .dijitAccordionTitle .arrowTextUp, +.dijit_a11y .dijitAccordionTitleSelected .arrowTextDown { + display: inline; +} + +.dijit_a11y .dijitAccordionTitleSelected .arrowTextUp { + display: none; +} + +.dijitAccordionChildWrapper { + /* this is the node whose height is adjusted */ + overflow: hidden; +} + +/* Calendar */ + +.dijitCalendarContainer { + width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */ +} +.dijitCalendarContainer th, .dijitCalendarContainer td { + padding: 0; + vertical-align: middle; +} + +.dijitCalendarYearLabel { + white-space: nowrap; /* make sure previous, current, and next year appear on same row */ +} + +.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 { + /* don't display it, but make it affect the width */ + position: relative; + height: 1px; + overflow: hidden; + visibility: hidden; +} + +/* Styling for month drop down list */ + +.dijitCalendarMonthMenu .dijitCalendarMonthLabel { + text-align:center; +} + +/* Menu */ + +.dijitMenu { + border:1px solid black; + background-color:white; +} +.dijitMenuTable { + border-collapse:collapse; + border-width:0; + background-color:white; +} + +/* workaround for webkit bug #8427, remove this when it is fixed upstream */ +.dj_webkit .dijitMenuTable td[colspan="2"]{ + border-right:hidden; +} + +.dijitMenuItem { + text-align: left; + white-space: nowrap; + padding:.1em .2em; + cursor:pointer; +} + +.dijitMenuPassive .dijitMenuItemHover, +.dijitMenuItemSelected { + /* + * dijitMenuItemHover refers to actual mouse over + * dijitMenuItemSelected is used after a menu has been "activated" by + * clicking it, tabbing into it, or being opened from a parent menu, + * and denotes that the menu item has focus or that focus is on a child + * menu + */ + background-color:black; + color:white; +} + +.dijitMenuItemIcon, .dijitMenuExpand { + background-repeat: no-repeat; +} + +.dijitMenuItemDisabled * { + /* for a disabled menu item, just set it to mostly transparent */ + opacity:0.5; + cursor:default; +} +.dj_ie .dijit_a11y .dijitMenuItemDisabled, +.dj_ie .dijit_a11y .dijitMenuItemDisabled td, +.dj_ie .dijitMenuItemDisabled *, +.dj_ie .dijitMenuItemDisabled td { + color:gray !important; + filter: alpha(opacity=35); +} + +.dijitMenuItemLabel { + position: relative; + vertical-align: middle; +} + +.dijit_a11y .dijitMenuItemSelected { + border: 1px dotted black !important; +} +.dj_ff3 .dijit_a11y .dijitMenuItem td { + padding: 0 !important; + background:none !important; +} +.dijit_a11y .dijitMenuItemSelected .dijitMenuItemLabel { + border-width: 1px; + border-style: solid; +} +.dj_ie8 .dijit_a11y .dijitMenuItemLabel { + position:static; +} + +.dijitMenuExpandA11y { + display: none; +} +.dijit_a11y .dijitMenuExpandA11y { + display: inline; +} + +.dijitMenuSeparator td { + border: 0; + padding: 0; +} + +/* separator can be two pixels -- set border of either one to 0 to have only one */ +.dijitMenuSeparatorTop { + height: 50%; + margin: 0; + margin-top:3px; + font-size: 1px; +} + +.dijitMenuSeparatorBottom { + height: 50%; + margin: 0; + margin-bottom:3px; + font-size: 1px; +} + +/* the checked menu item */ +.dijitCheckedMenuItemIconChar { + vertical-align: middle; + visibility:hidden; +} +.dijitCheckedMenuItemChecked .dijitCheckedMenuItemIconChar { + visibility: visible; +} +.dijit_a11y .dijitCheckedMenuItemIconChar { + display:inline !important; +} +.dijit_a11y .dijitCheckedMenuItemIcon { + display: none; +} +.dj_ie .dijit_a11y .dijitMenuBar .dijitMenuItem { + /* so bottom border of MenuBar appears on IE7 in high-contrast mode */ + margin: 0; +} + +/* StackContainer */ + +.dijitStackController .dijitToggleButtonChecked * { + cursor: default; /* because pressing it has no effect */ +} + +/* TabContainer */ + +.dijitTabContainerNoLayout { + width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */ +} + +.dijitTabContainerBottom-tabs, +.dijitTabContainerTop-tabs, +.dijitTabContainerLeft-tabs, +.dijitTabContainerRight-tabs { + overflow: visible !important; /* so tabs can cover up border adjacent to container */ +} + +.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; /* just in case ancestor has non-standard setting */ +} +.dijitTabListWrapper { + overflow: hidden; +} + +.dijit_a11y .tabStripButton img { + /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */ + 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 * { + /* make tab icons and close icon line up w/text */ + vertical-align: middle; +} +.dijitTabChecked { + cursor: default; /* because clicking will have no effect */ +} + +.dijitTabContainerTop-tabs .dijitTab { + top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */ +} +.dijitTabContainerBottom-tabs .dijitTab { + top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */ +} +.dijitTabContainerLeft-tabs .dijitTab { + left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */ +} +.dijitTabContainerRight-tabs .dijitTab { + left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */ +} + + +.dijitTabContainerTop-tabs .dijitTab, +.dijitTabContainerBottom-tabs .dijitTab { + /* Inline-block */ + display:inline-block; /* webkit and FF3 */ + #zoom: 1; /* set hasLayout:true to mimic inline-block */ + #display:inline; /* don't use .dj_ie since that increases the priority */ +} + +.dijitTabInnerDiv { + position:relative; +} + + +.tabStripButton { + z-index: 12; +} + +.dijitTabButtonDisabled .tabStripButton { + display: none; +} + + +.dijitTabCloseButton { + margin-left: 1em; +} + +.dijitTabCloseText { + display:none; +} + +.dijitTab .tabLabel { + /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font. + * assumes <=15px height for close button icon. + */ + min-height: 15px; + display: inline-block; +} +.dijitNoIcon { + /* applied to / node when there is no icon specified */ + display: none; +} +.dj_ie6 .dijitTab .dijitNoIcon { + /* because min-height (on .tabLabel, above) doesn't work on IE6 */ + display: inline; + height: 15px; + width: 1px; +} + +/* images off, high-contrast mode styles */ + +.dijit_a11y .dijitTabCloseButton { + background-image: none !important; + width: auto !important; + height: auto !important; +} + +.dijit_a11y .dijitTabCloseText { + display: inline; +} + +.dijitTabPane, +.dijitStackContainer-child, +.dijitAccordionContainer-child { + /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders + * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself. + */ + border: none !important; +} + +/* InlineEditBox */ +.dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */ + cursor: text; +} + +.dijit_a11y .dijitInlineEditBoxDisplayMode, +.dj_ie6 .dijitInlineEditBoxDisplayMode { + /* except that IE6 doesn't support transparent borders, nor does high contrast mode */ + border: none; +} + +.dijitInlineEditBoxDisplayModeHover, +.dijit_a11y .dijitInlineEditBoxDisplayModeHover, +.dj_ie6 .dijitInlineEditBoxDisplayModeHover { + /* An InlineEditBox in view mode (click this to edit the text) */ + background-color: #e2ebf2; + border: solid 1px black; +} + +.dijitInlineEditBoxDisplayModeDisabled { + cursor: default; +} + +/* Tree */ +.dijitTree { + overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */ +} + +.dijitTreeIndent { + /* amount to indent each tree node (relative to parent node) */ + width: 19px; +} + +.dijitTreeRow, .dijitTreeContent { + white-space: nowrap; +} + +.dijitTreeRow img { + /* make the expando and folder icons line up with the label */ + vertical-align: middle; +} + +.dijitTreeContent { + cursor: default; +} + +.dijitExpandoText { + display: none; +} + +.dijit_a11y .dijitExpandoText { + display: inline; + padding-left: 10px; + padding-right: 10px; + font-family: monospace; + border-style: solid; + border-width: thin; + cursor: pointer; +} + +.dijitTreeLabel { + margin: 0 4px; +} + +/* Dialog */ + +.dijitDialog { + position: absolute; + z-index: 999; + overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */ +} + +.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); +} + +/* images off, high-contrast mode styles */ +.dijit_a11y .dijitSpinnerButtonContainer, +.dijit_a11y .dijitDialog { + opacity: 1 !important; + background-color: white !important; +} + +.dijitDialog .closeText { + display:none; + /* for the onhover border in high contrast on IE: */ + position:absolute; +} + +.dijit_a11y .dijitDialog .closeText { + display:inline; +} + +/* Slider */ + +.dijitSliderMoveable { + z-index:99; + position:absolute !important; + display:block; + vertical-align:middle; +} + +.dijitSliderMoveableH { + right:0; +} +.dijitSliderMoveableV { + right:50%; +} + +.dijit_a11y div.dijitSliderImageHandle, +.dijitSliderImageHandle { + margin:0; + padding:0; + position:relative !important; + border:8px solid gray; + width:0; + height:0; + cursor: pointer; +} +.dj_iequirks .dijit_a11y .dijitSliderImageHandle { + font-size: 0; +} +.dj_ie7 .dijitSliderImageHandle { + overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */ +} +.dj_ie7 .dijit_a11y .dijitSliderImageHandle { + overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */ +} +.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle { + border:4px solid #000; + height:8px; + width:8px; +} + +.dijitSliderImageHandleV { + top:-8px; + right: -50%; +} + +.dijitSliderImageHandleH { + left:50%; + top:-5px; + vertical-align:top; +} + +.dijitSliderBar { + border-style:solid; + border-color:black; + cursor: pointer; +} + +.dijitSliderBarContainerV { + position:relative; + height:100%; + z-index:1; +} + +.dijitSliderBarContainerH { + position:relative; + z-index:1; +} + +.dijitSliderBarH { + height:4px; + border-width:1px 0; +} + +.dijitSliderBarV { + width:4px; + border-width:0 1px; +} + +.dijitSliderProgressBar { + background-color:red; + z-index:1; +} + +.dijitSliderProgressBarV { + position:static !important; + height:0; + vertical-align:top; + text-align:left; +} + +.dijitSliderProgressBarH { + position:absolute !important; + width:0; + vertical-align:middle; + overflow:visible; +} + +.dijitSliderRemainingBar { + overflow:hidden; + background-color:transparent; + z-index:1; +} + +.dijitSliderRemainingBarV { + height:100%; + text-align:left; +} + +.dijitSliderRemainingBarH { + width:100% !important; +} + +/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */ +.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; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */ +} + +.dijitSliderDecorationH { + width: 100%; +} + +.dijitSliderDecorationV { + height: 100%; +} + +.dijitSliderButton { + font-family:monospace; + margin:0; + padding:0; + display:block; +} + +.dijit_a11y .dijitSliderButtonInner { + visibility:visible !important; +} + +.dijitSliderButtonContainer { + text-align:center; + height:0; /* ??? */ +} +.dijitSliderButtonContainer * { + cursor: pointer; +} + +.dijitSlider .dijitButtonNode { + padding:0; + display:block; +} + +.dijitRuleContainer { + position:relative; + overflow:visible; +} + +.dijitRuleContainerV { + height:100%; + line-height:0; + float:left; + text-align:left; +} + +.dj_opera .dijitRuleContainerV { + line-height:2%; +} + +.dj_ie .dijitRuleContainerV { + line-height:normal; +} + +.dj_gecko .dijitRuleContainerV { + margin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */ +} + +.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 { + /* so that long labels don't overflow to multiple rows, or overwrite slider itself */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.dijitRuleMarkV { + height:0; + border-right-width:0 !important; + border-bottom-width:0 !important; + border-left-width:0 !important; + width:100%; + left:0; +} + +.dj_ie .dijitRuleLabelContainerV { + margin-top:-.55em; +} + +.dijit_a11y .dijitSliderReadOnly, +.dijit_a11y .dijitSliderDisabled { + opacity:0.6; +} +.dj_ie .dijit_a11y .dijitSliderReadOnly .dijitSliderBar, +.dj_ie .dijit_a11y .dijitSliderDisabled .dijitSliderBar { + filter: alpha(opacity=40); +} + +/* + and - Slider buttons: override theme settings to display icons */ +.dijit_a11y .dijitSlider .dijitSliderButtonContainer div { + font-family: monospace; /* otherwise hyphen is larger and more vertically centered */ + font-size: 1em; + line-height: 1em; + height: auto; + width: auto; + margin: 0 4px; +} + +/* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */ +.dijit_a11y .dijitButtonContents .dijitButtonText, +.dijit_a11y .dijitTab .tabLabel { + display: inline !important; +} + +/* TextArea, SimpleTextArea */ +.dijitTextArea { + width:100%; + overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */ +} +.dijitTextArea[cols] { + width:auto; /* SimpleTextArea cols */ +} +.dj_ie .dijitTextAreaCols { + width:auto; +} + +.dijitExpandingTextArea { + /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */ + resize: none; +} + + +/* Toolbar + * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file. + */ + +.dijitToolbarSeparator { + height: 18px; + width: 5px; + padding: 0 1px; + margin: 0; +} + +/* Editor */ +.dijitIEFixedToolbar { + position:absolute; + /* top:0; */ + top: expression(eval((document.documentElement||document.body).scrollTop)); +} + +.dijitEditor { + display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */ +} + +.dijitEditorDisabled, +.dijitEditorReadOnly { + color: gray; +} + +/* TimePicker */ + +.dijitTimePickerItemInner { + text-align:center; + border:0; + padding:2px 8px 2px 8px; +} + +.dijitTimePickerTick, +.dijitTimePickerMarker { + border-bottom:1px solid gray; +} + +.dijitTimePicker .dijitDownArrowButton { + border-top: none !important; +} + +.dijitTimePickerTick { + color:#CCC; +} + +.dijitTimePickerMarker { + color:black; + background-color:#CCC; +} + +.dijitTimePickerItemSelected { + font-weight:bold; + color:#333; + background-color:#b7cdee; +} + +.dijitTimePickerItemHover { + background-color:gray; + color:white; + cursor:pointer; +} +.dijit_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner { + border: solid 4px black; +} +.dijit_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner { + border: dashed 4px black; +} + + +.dijitToggleButtonIconChar { + /* character (instead of icon) to show that ToggleButton is checked */ + display:none !important; +} +.dijit_a11y .dijitToggleButton .dijitToggleButtonIconChar { + display:inline !important; + visibility:hidden; +} +.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText { + font-family: "Arial Unicode MS"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */ +} +.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar { + display: inline !important; /* In high contrast mode, display the check symbol */ + visibility:visible !important; +} + +.dijitArrowButtonChar { + display:none !important; +} +.dijit_a11y .dijitArrowButtonChar { + display:inline !important; +} + +.dijit_a11y .dijitDropDownButton .dijitArrowButtonInner, +.dijit_a11y .dijitComboButton .dijitArrowButtonInner { + display:none !important; +} + +/* Select */ +.dijitSelect { + margin: 0.2em; + border-collapse: collapse; +} +.dj_ie .dijitSelect, +.dj_ie7 .dijitSelect, +.dj_iequirks .dijitSelect { + vertical-align: middle; /* Set this back for what we hack in dijit inline */ +} +.dj_ie8 .dijitSelect .dijitButtonText { + vertical-align: top; +} +.dijitToolbar .dijitSelect { + margin: 0; +} +.dj_webkit .dijitToolbar .dijitSelect { + padding-left: 0.3em; +} +.dijit_a11y .dijitSelectDisabled .dijitButtonNode { + border-style: outset!important; + border-width: medium!important; + border-color: #999 !important; + color:#999 !important; +} +.dijitSelect .dijitButtonContents { + padding: 0; + background: transparent none; + white-space: nowrap; + text-align: left; +} +.dijitSelectFixedWidth .dijitButtonContents { + width: 100%; +} + +.dijitSelectMenu .dijitMenuItemIcon { + /* avoid blank area in left side of menu (since we have no icons) */ + display:none; +} +.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel, +.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel { + /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */ + position: static; +} + +/* Fix the baseline of our label (for multi-size font elements) */ +.dijitSelectLabel * +{ + vertical-align: baseline; +} + +/* Styling for the currently-selected option (rich text can mess this up) */ +.dijitSelectSelectedOption * { + font-weight: bold; +} + +/* Fix the styling of the dropdown menu to be more combobox-like */ +.dijitSelectMenu { + border-width: 1px; +} + +/* Style the different areas of the button to look like a "real" dropdown */ +/* Remove margins on the sub-table */ +.dijitSelectMenu .dijitMenuTable { + margin: 0; + background-color: transparent; +} + +/* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */ +.dijitForceStatic { + position: static !important; +} + +/**** Disabled cursor *****/ +.dijitReadOnly *, +.dijitDisabled *, +.dijitReadOnly, +.dijitDisabled { + /* a region the user would be able to click on, but it's disabled */ + cursor: default; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/dijit_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/dijit_rtl.css new file mode 100644 index 0000000..9c1b69c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/dijit_rtl.css @@ -0,0 +1,128 @@ +.dijitRtl .dijitPlaceHolder { + left: auto; + right: 0; +} + +/* Menu */ + +.dijitMenuItemRtl { + text-align: right; +} + +/* Button */ + +.dj_iequirks .dijitComboButtonRtl button { + /* workaround bug where label invisible (themeTesterQuirk.html?dir=rtl) */ + float:left; +} + +/* TextBox, ComboBox, Spinner */ + +.dijitTextBoxRtl .dijitValidationContainer, +.dijitTextBoxRtl .dijitSpinnerButtonContainer, +.dijitComboBoxRtl .dijitArrowButtonContainer { + /* combobox and spinner: line between the input area and the drop down button */ + border-right-width: 1px !important; + border-left-width: 0 !important; +} + +.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton { + right: 0; + left: auto; +} + +.dj_ie7 .dijitInputContainer { + /* to fix wrong text alignment in rtl text box in IE */ + display: inline-block; +} + +.dijitTextBoxRtl .dijitSpinnerButtonContainer, +.dijitTextBoxRtl .dijitValidationContainer, +.dijitTextBoxRtl .dijitArrowButtonContainer { + float: left; +} + +/* Calendar */ + +.dijitCalendarRtl .dijitCalendarNextYear { + margin:0 0.55em 0 0; +} + +.dijitCalendarRtl .dijitCalendarPreviousYear { + margin:0 0 0 0.55em; +} + + +/* Slider */ + +.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 { + /* workarounds for IE and FF */ + float:right; + right:0; + left:auto; +} + +/* ContentPane*/ + +.dijitRtl .dijitContentPaneLoading .dijitIconLoading, +.dijitRtl .dijitContentPaneError .dijitIconError { + margin-right: 0; + margin-left: 9px; +} + +/* TabContainer */ + +.dijitTabControllerRtl .nowrapTabStrip { + text-align: right; /* just in case ancestor has non-standard setting */ +} +.dijitTabRtl .dijitTabCloseButton { + margin-left: 0; + margin-right: 1em; +} + +/* TimePicker */ +.dj_ie .dijitTimePickerRtl .dijitTimePickerItem { + width:100%; +} + + +/* ColorPalette */ +.dijitColorPaletteRtl .dijitColorPaletteUnder { + /* needed in RTL mode when DropDownButton expands the ColorPalette beyond it's natural width */ + left: auto; + right: 0; +} + +/* Select */ +.dijitSelectRtl .dijitButtonContents { + text-align: right; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar.css new file mode 100755 index 0000000..dcd108b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar.css @@ -0,0 +1,282 @@ +/* Calendar + * + * Styling Calendar mainly includes: + * + * 1. Calendar container + * .dijitCalendar - main container + * .dijitCalendarHover / .dijitCalendarActive - states e.g. hover,active + * + * 2. Month + * .dijitCalendarMonthContainer + * .dijitCalendarMonthLabel + * .dijitCalendarDecrease / .dijitCalendarDecrease - icons for switching to previous/next month + * .dijitCalendarArrowActive .dijitCalendarDecrease - states e.g. hover,active + * + * 3. Date + * .dijitCalendarDayLabelTemplate - week day column header e.g. S M T W T F S + * .dijitCalendarDateTemplate - date label wrapper + * .dijitCalendarPreviousMonth .dijitCalendarDateLabel - special labels for previous or next month + * .dijitCalendarSelectedDate .dijitCalendarDateLabel - styles for selected date + * .dijitCalendarDisabledDate .dijitCalendarDateLabel - styles for disabled date + * .dijitCalendarActiveDate .dijitCalendarDateLabel - states e.g. hover,active + * + * 4. Year + * .dijitCalendarYearContainer + * .dijitCalendarYearLabel + * .dijitCalendarPreviousYear /.dijitCalendarNextYear + * .dijitCalendarNextYearHover / .dijitCalendarPreviousYearHover - states e.g. hover,active + * + * 5. Dropdown Month Menu + * .dijitCalendarMonthMenu - menu container + * .dijitCalendarMonthMenu .dijitCalendarMonthLabel - month label in menu item + * .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover - menu item hover state + */ +.larson .dijitCalendar { + border: solid 1px #cccccc; + background-color: #cfe5fa; + background-image: url("images/calendarContainerImages.png"); + background-position: 0 -448px; + background-repeat: repeat-x; + text-align: center; + padding: 6px 5px 3px 5px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.dj_ie6 .larson .dijitCalendar { + background-image: none; +} +.larson .dijitCalendar img { + border: none; +} +.larson .dijitCalendarHover, .larson .dijitCalendarActive { + /* treat dijitCalenderActive like hover since there's + * no concept of clicking a Calendar as a whole (although you can click things inside the calendar) + */ + + background-color: #e3e3e3; + border: solid 1px #999999; +} +.larson .dijitCalendarMonthContainer th { + text-align: center; + padding-bottom: 4px; + vertical-align: middle; +} +.larson .dijitCalendarMonthLabel { + color: #000000; + font-size: 1.091em; + padding: 0 4px; +} +/* next/previous month arrows */ +.larson .dijitCalendarIncrementControl { + width: 18px; + height: 16px; + background-image: url("images/calendarArrows.png"); + background-repeat: no-repeat; +} +.dj_ie6 .larson .dijitCalendarIncrementControl { + background-image: url("images/calendarArrows8bit.png"); +} +.larson .dijitCalendarIncrease { + background-position: -18px 0; +} +.larson .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position: -36px 0; +} +.larson .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position: -55px 0; +} +.larson .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position: -72px 0; +} +.larson .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position: -91px 0; +} +.larson .dijitA11ySideArrow { + /* text +/- labels instead of arrow icons, for high contrast mode */ + + display: none; +} +.larson .dijitDayLabels th { + padding: 0 4px 0 4px; + font-weight: bold; + text-align: center; +} +.larson .dijitCalendarDayLabelTemplate { + padding-bottom: 0; + text-align: center; + border-bottom: 1px solid #cccccc; + font-size: 0.909em; + padding: 0 3px 2px; +} +.larson .dijitCalendarDateTemplate { + text-align: center; + background-color: #ffffff; + background-image: url("images/calendarContainerImages.png"); + background-position: 0 0; + background-repeat: repeat-x; + border-bottom: 1px solid #d3d3d3; + padding-top: 0; + font-size: 0.909em; + font-family: Arial; + font-weight: bold; + letter-spacing: .05em; + text-align: center; +} +.dj_ie6 .larson .dijitCalendarDateTemplate { + background-image: none; +} +.larson .dijitCalendarPreviousMonth, .larson .dijitCalendarNextMonth { + background-color: #e9f4fe; + background-image: none; + border-bottom: solid 1px #d3d3d3; + /* todo: redundant with above .dijitCalendarDateTemplate rule */ +} +.larson .dijitCalendarDateTemplate .dijitCalendarDateLabel { + text-decoration: none; + display: block; + padding: 3px 5px 3px 4px; + border: solid 1px #ffffff; + /* intentionally matches background-color, no visible border until hover/selection */ + + background-color: rgba(171, 212, 251, 0); + /* transparent causes black-flash animation problem on webkit */ + + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; +} +.larson .dijitCalendarPreviousMonth .dijitCalendarDateLabel, .larson .dijitCalendarNextMonth .dijitCalendarDateLabel { + color: #769dc0; + border-color: #e9f4fe; + /* intentionally matches background-color, no visible border until hover/selection */ + +} +.larson .dijitCalendarYearContainer { + vertical-align: middle; +} +.larson .dijitCalendarYearControl { + padding: 1px 2px 2px 2px; +} +.larson .dijitCalendarYearLabel { + padding: 2px 0 0 0; + margin: 0; +} +.larson .dijitCalendarYearLabel span { + /* trying to center next/current/previous year vertically, doesn't work on IE6/7 though */ + + vertical-align: middle; +} +.larson .dijitCalendarSelectedYear { + padding: 0 3px; +} +.larson .dijitCalendarNextYear, .larson .dijitCalendarPreviousYear { + padding: 1px 6px 1px 6px; + font-size: 0.909em; +} +.larson .dijitCalendarSelectedYear { + font-size: 1.091em; + color: #000000; +} +/* End Normal Calendar Style */ +/* Hovered Calendar Style */ +.larson .dijitCalendarHoveredDate .dijitCalendarDateLabel { + background-color: #e3e3e3; + border: solid 1px #999999; + color: #000000; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.larson .dijitCalendarNextYearHover, .larson .dijitCalendarPreviousYearHover { + color: #000000; + border: solid 1px #ffffff; + padding: 0 5px 0 5px; + /* reduced by 1 to make room for border */ + + background-color: #e9f4fe; +} +/* End Hovered Calendar Style */ +/* Active Calendar Style */ +.larson .dijitCalendarNextYearActive, .larson .dijitCalendarPreviousYearActive { + border: solid 1px #999999; + padding: 0 5px 0 5px; + /* reduced by 1 to make room for border */ + + background-color: #cfe5fa; +} +.larson .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image: url("images/calendarContainerImages.png"); + background-position: 0 -300px; + background-color: #dcdcdc; + border: solid 1px #ffffff; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.dj_ie6 .larson .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image: none; +} +/* End Active Calendar Style */ +/* Selected Calendar Style */ +.larson .dijitCalendarSelectedDate .dijitCalendarDateLabel { + color: #000000; + background-color: #abd6ff; + border-color: #999999; +} +/* End Selected Calendar Style */ +/* Disabled Calendar Style*/ +.larson .dijitCalendarDisabledDate .dijitCalendarDateLabel { + text-decoration: line-through; + /* override hover effects above, hover and click on disabled date should have no effect */ + + background-color: transparent; + border-width: 0; + padding: 4px 6px 4px 5px; + color: #818181; +} +/* End Disabled Calendar Style */ +/* Styling for month DropDownButton */ +.larson .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.larson .dijitCalendar .dijitButtonText { + padding: 1px 0 3px; + margin-right: -4px; +} +.larson .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0 3px 0 2px; + border: solid 1px #cccccc; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); +} +.larson .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode { + background-color: #e9f4fe; + border: solid 1px #ffffff; +} +/* Styling for month drop down list */ +.larson .dijitCalendarMonthMenu { + border-color: #769dc0; + background-color: #ffffff; + text-align: center; + background-image: none; +} +.larson .dijitCalendarMonthMenu .dijitCalendarMonthLabel { + border-top: solid 1px #ffffff; + /* intentionally invisible until hover */ + + border-bottom: solid 1px #ffffff; + padding: 2px 0; +} +.larson .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover { + background-color: #e3e3e3; + border-color: #999999; + border-width: 1px 0; + background-image: url("images/commonHighlight.png"); + background-repeat: repeat-x; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar.less new file mode 100755 index 0000000..242a10c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar.less @@ -0,0 +1,273 @@ +/* Calendar + * + * Styling Calendar mainly includes: + * + * 1. Calendar container + * .dijitCalendar - main container + * .dijitCalendarHover / .dijitCalendarActive - states e.g. hover,active + * + * 2. Month + * .dijitCalendarMonthContainer + * .dijitCalendarMonthLabel + * .dijitCalendarDecrease / .dijitCalendarDecrease - icons for switching to previous/next month + * .dijitCalendarArrowActive .dijitCalendarDecrease - states e.g. hover,active + * + * 3. Date + * .dijitCalendarDayLabelTemplate - week day column header e.g. S M T W T F S + * .dijitCalendarDateTemplate - date label wrapper + * .dijitCalendarPreviousMonth .dijitCalendarDateLabel - special labels for previous or next month + * .dijitCalendarSelectedDate .dijitCalendarDateLabel - styles for selected date + * .dijitCalendarDisabledDate .dijitCalendarDateLabel - styles for disabled date + * .dijitCalendarActiveDate .dijitCalendarDateLabel - states e.g. hover,active + * + * 4. Year + * .dijitCalendarYearContainer + * .dijitCalendarYearLabel + * .dijitCalendarPreviousYear /.dijitCalendarNextYear + * .dijitCalendarNextYearHover / .dijitCalendarPreviousYearHover - states e.g. hover,active + * + * 5. Dropdown Month Menu + * .dijitCalendarMonthMenu - menu container + * .dijitCalendarMonthMenu .dijitCalendarMonthLabel - month label in menu item + * .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover - menu item hover state + */ + +@import "variables"; + +.larson .dijitCalendar { + border:solid 1px @border-color; + background-color: @calendar-background-color; + background-image:url("images/calendarContainerImages.png"); + background-position:0 -448px; + background-repeat:repeat-x; + text-align:center; + padding:6px 5px 3px 5px; + .border-radius(4px); +} +.dj_ie6 .larson .dijitCalendar { + background-image:none; +} +.larson .dijitCalendar img { + border:none; +} +.larson .dijitCalendarHover, +.larson .dijitCalendarActive { + /* treat dijitCalenderActive like hover since there's + * no concept of clicking a Calendar as a whole (although you can click things inside the calendar) + */ + background-color: @hovered-background-color; + border:solid 1px @hovered-border-color; +} +.larson .dijitCalendarMonthContainer th { + text-align:center; + padding-bottom:4px; + vertical-align:middle; +} +.larson .dijitCalendarMonthLabel { + color: @text-color; + font-size: 1.091em; + padding: 0 4px; +} + +/* next/previous month arrows */ +.larson .dijitCalendarIncrementControl { + width:18px; + height:16px; + background-image: url("images/calendarArrows.png"); + background-repeat: no-repeat; +} +.dj_ie6 .larson .dijitCalendarIncrementControl { + background-image: url("images/calendarArrows8bit.png"); +} +.larson .dijitCalendarIncrease { + background-position:-18px 0; +} +.larson .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position:-36px 0; +} +.larson .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position:-55px 0; +} +.larson .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position:-72px 0; +} +.larson .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position:-91px 0; +} +.larson .dijitA11ySideArrow { + /* text +/- labels instead of arrow icons, for high contrast mode */ + display: none; +} + + +.larson .dijitDayLabels th { + padding:0 4px 0 4px; + font-weight:bold; + text-align:center; +} +.larson .dijitCalendarDayLabelTemplate { + padding-bottom:0; + text-align:center; + border-bottom:1px solid @border-color; + font-size:0.909em; + padding:0 3px 2px; +} +.larson .dijitCalendarDateTemplate { + text-align:center; + background-color:@calendar-currentmonth-background-color; + background-image:url("images/calendarContainerImages.png"); + background-position:0 0; + background-repeat:repeat-x; + border-bottom: 1px solid @minor-border-color; + padding-top:0; + font-size:0.909em; + font-family: Arial; + font-weight:bold; + letter-spacing:.05em; + text-align:center; +} +.dj_ie6 .larson .dijitCalendarDateTemplate { + background-image: none; +} +.larson .dijitCalendarPreviousMonth, +.larson .dijitCalendarNextMonth { + background-color: @calendar-adjacentmonth-background-color; + background-image:none; + border-bottom:solid 1px @minor-border-color; /* todo: redundant with above .dijitCalendarDateTemplate rule */ +} +.larson .dijitCalendarDateTemplate .dijitCalendarDateLabel { + text-decoration:none; + display:block; + padding:3px 5px 3px 4px; + border:solid 1px @calendar-currentmonth-background-color; /* intentionally matches background-color, no visible border until hover/selection */ + background-color:rgba(171,212,251,0); /* transparent causes black-flash animation problem on webkit */ + .transition-property(background-color, border); + .transition-duration(.35s); +} +.larson .dijitCalendarPreviousMonth .dijitCalendarDateLabel, +.larson .dijitCalendarNextMonth .dijitCalendarDateLabel{ + color: @calendar-adjacentmonth-text-color; + border-color: @calendar-adjacentmonth-background-color; /* intentionally matches background-color, no visible border until hover/selection */ +} + +.larson .dijitCalendarYearContainer { + vertical-align:middle; +} +.larson .dijitCalendarYearControl { + padding: 1px 2px 2px 2px; +} +.larson .dijitCalendarYearLabel { + padding:2px 0 0 0; + margin:0; +} +.larson .dijitCalendarYearLabel span { + /* trying to center next/current/previous year vertically, doesn't work on IE6/7 though */ + vertical-align:middle; +} +.larson .dijitCalendarSelectedYear { + padding:0 3px; +} +.larson .dijitCalendarNextYear, +.larson .dijitCalendarPreviousYear { + padding: 1px 6px 1px 6px; + font-size:0.909em; +} +.larson .dijitCalendarSelectedYear { + font-size:1.091em; + color:@selected-text-color; +} +/* End Normal Calendar Style */ +/* Hovered Calendar Style */ +.larson .dijitCalendarHoveredDate .dijitCalendarDateLabel{ + background-color:@hovered-background-color; + border:solid 1px @hovered-border-color; + color:@hovered-text-color; + .transition-duration(.2s); +} +.larson .dijitCalendarNextYearHover, +.larson .dijitCalendarPreviousYearHover { + color:@hovered-text-color; + border:solid 1px @calendar-button-hovered-border-color; + padding: 0 5px 0 5px; /* reduced by 1 to make room for border */ + background-color: @calendar-button-hovered-background-color; +} +/* End Hovered Calendar Style */ +/* Active Calendar Style */ +.larson .dijitCalendarNextYearActive, +.larson .dijitCalendarPreviousYearActive { + border: solid 1px @calendar-button-pressed-border-color; + padding: 0 5px 0 5px; /* reduced by 1 to make room for border */ + background-color:@calendar-button-pressed-background-color; +} +.larson .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image:url("images/calendarContainerImages.png"); + background-position:0 -300px; + background-color: @calendar-date-pressed-background-color; + border:solid 1px @calendar-date-pressed-border-color; + .transition-duration(.1s); +} +.dj_ie6 .larson .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image:none; +} +/* End Active Calendar Style */ +/* Selected Calendar Style */ +.larson .dijitCalendarSelectedDate .dijitCalendarDateLabel { + color:@selected-text-color; + background-color: @calendar-date-selected-background-color; + border-color: @calendar-date-selected-border-color; +} +/* End Selected Calendar Style */ +/* Disabled Calendar Style*/ +.larson .dijitCalendarDisabledDate .dijitCalendarDateLabel { + text-decoration:line-through; + + /* override hover effects above, hover and click on disabled date should have no effect */ + background-color: transparent; + border-width: 0; + padding: 4px 6px 4px 5px; + color: @disabled-text-color; +} + +/* End Disabled Calendar Style */ + +/* Styling for month DropDownButton */ + +.larson .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.larson .dijitCalendar .dijitButtonText { + padding: 1px 0 3px; + margin-right:-4px; +} +.larson .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0 3px 0 2px; + border:solid 1px @border-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); +} +.larson .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode { + background-color: @calendar-button-hovered-background-color; + border:solid 1px @calendar-button-hovered-border-color; +} + +/* Styling for month drop down list */ + +.larson .dijitCalendarMonthMenu { + border-color: @popup-border-color; + background-color: @menu-background-color; + text-align:center; + background-image: none; +} +.larson .dijitCalendarMonthMenu .dijitCalendarMonthLabel { + border-top: solid 1px @menu-background-color; /* intentionally invisible until hover */ + border-bottom: solid 1px @menu-background-color; + padding: 2px 0; +} +.larson .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover { + background-color: @hovered-background-color; + border-color: @hovered-border-color; + border-width:1px 0; + background-image: url("images/commonHighlight.png"); + background-repeat:repeat-x; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar_rtl.css new file mode 100755 index 0000000..9c7bb99 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar_rtl.css @@ -0,0 +1,18 @@ +.larson .dijitCalendarRtl .dijitCalendarIncrease { + background-position: 0 0; +} +.larson .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -18px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position: -36px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position: -55px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position: -72px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position: -91px 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar_rtl.less new file mode 100755 index 0000000..4837ebd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Calendar_rtl.less @@ -0,0 +1,19 @@ +.larson .dijitCalendarRtl .dijitCalendarIncrease{ + background-position: 0 0; +} +.larson .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -18px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position: -36px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position: -55px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position: -72px 0; +} +.larson .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position: -91px 0; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/ColorPalette.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/ColorPalette.css new file mode 100755 index 0000000..4d29ed6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/ColorPalette.css @@ -0,0 +1,41 @@ +/* ColorPalette + * + * Styling of the ColorPalette consists of the following: + * + * 1. the whole color palette + * .dijitColorPalette - for outline, border, and background color of the whole color palette + * Note: outline does not work for IE + * + * 2. the color swatch + * .dijitColorPalette .dijitPaletteImg + * transparent (but clickable) node inside of each + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewerGrouping.html b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewerGrouping.html new file mode 100644 index 0000000..467e428 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewerGrouping.html @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/PeopleEditor.html b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/PeopleEditor.html new file mode 100644 index 0000000..a034c76 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/PeopleEditor.html @@ -0,0 +1,6 @@ +
            +
            , overlaying the color swatch. + * displays border around a color swatch + * + * 3. hovered swatch + * .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg + * the hovered state of the color swatch - adds border + * + * 4. active and selected swatch + * .dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg + * .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg + * adds border for active or selected state + */ +.larson .dijitColorPalette { + border: 1px solid #cccccc; + background: #ffffff; + -moz-border-radius: 0; + border-radius: 0; +} +.larson .dijitColorPalette .dijitPaletteImg { + /* transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * overrides border color in dijit.css */ + + border: 1px solid #d3d3d3; +} +.larson .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg { + border: 1px solid #000000; +} +.larson .dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg, .larson .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid #000000; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/ColorPalette.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/ColorPalette.less new file mode 100755 index 0000000..95bf5e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/ColorPalette.less @@ -0,0 +1,44 @@ +/* ColorPalette + * + * Styling of the ColorPalette consists of the following: + * + * 1. the whole color palette + * .dijitColorPalette - for outline, border, and background color of the whole color palette + * Note: outline does not work for IE + * + * 2. the color swatch + * .dijitColorPalette .dijitPaletteImg + * transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * + * 3. hovered swatch + * .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg + * the hovered state of the color swatch - adds border + * + * 4. active and selected swatch + * .dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg + * .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg + * adds border for active or selected state + */ + +@import "variables"; + +.larson .dijitColorPalette { + border: 1px solid @border-color; + background: @colorpalette-background-color; + .border-radius(0); +} + +.larson .dijitColorPalette .dijitPaletteImg { + /* transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * overrides border color in dijit.css */ + border: 1px solid @minor-border-color; +} +.larson .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg { + border: 1px solid @swatch-hovered-border-color; +} +.larson .dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg, +.larson .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid @swatch-selected-border-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Common.css new file mode 100755 index 0000000..1dd67ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Common.css @@ -0,0 +1,75 @@ +/* ========= Styling rules to affect widgets ========= */ +.larson .dijitPopup { + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); +} +.larson .dijitTooltipDialogPopup { + /* exception popups: do not use a shadow on these because they aren't rectangular */ + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +/* The highlight is shown in the ComboBox menu. TODO: move to form/Common.less */ +.larson .dijitComboBoxHighlightMatch { + background-color: #abd6ff; +} +.larson .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + + outline: 1px dotted #999999; +} +.larson .dijitContentPaneLoading { + background: url('images/loadingAnimation.gif') no-repeat left center; + padding-left: 25px; +} +/* .dijitContentPaneError icon renders in a dialog box with the error messsage when there is an error in a HREF url */ +.larson .dijitContentPaneError { + background: url('../../icons/images/commonIconsObjActEnabled.png') no-repeat left center; + background-position: -496px; + padding-left: 25px; +} +/* Drag and Drop */ +.larson .dojoDndItemBefore, .larson .dojoDndItemAfter { + border-top: 1px solid #769dc0; +} +.larson .dojoDndItemOver { + cursor: pointer; +} +.larson table.dojoDndAvatar { + border: 1px solid #cccccc; + border-collapse: collapse; + background-color: #ffffff; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); +} +.larson .dojoDndAvatarHeader td { + height: 20px; + padding-left: 21px; +} +.larson.dojoDndMove .dojoDndAvatarHeader, .larson.dojoDndCopy .dojoDndAvatarHeader { + background-image: url(images/dnd.png); + background-repeat: no-repeat; + background-position: 2px -122px; +} +.larson .dojoDndAvatarItem td { + padding: 5px; +} +.larson.dojoDndMove .dojoDndAvatarHeader { + background-color: #f58383; + background-position: 2px -103px; +} +.larson.dojoDndCopy .dojoDndAvatarHeader { + background-color: #f58383; + background-position: 2px -68px; +} +.larson.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: #97e68d; + background-position: 2px -33px; +} +.larson.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: #97e68d; + background-position: 2px 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Common.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Common.less new file mode 100755 index 0000000..0c88903 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Common.less @@ -0,0 +1,76 @@ +/* ========= Styling rules to affect widgets ========= */ + +@import "variables"; + +.larson .dijitPopup { + .box-shadow(0 1px 5px rgba(0,0,0,0.25)); +} +.larson .dijitTooltipDialogPopup { + /* exception popups: do not use a shadow on these because they aren't rectangular */ + .box-shadow(none); +} + +/* The highlight is shown in the ComboBox menu. TODO: move to form/Common.less */ +.larson .dijitComboBoxHighlightMatch { + background-color: @select-matchedtext-background-color; +} + +.larson .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + outline: 1px dotted @focus-outline-color; +} + +.larson .dijitContentPaneLoading { + background:url('images/loadingAnimation.gif') no-repeat left center; + padding-left:25px; +} + +/* .dijitContentPaneError icon renders in a dialog box with the error messsage when there is an error in a HREF url */ +.larson .dijitContentPaneError { + background:url('../../icons/images/commonIconsObjActEnabled.png') no-repeat left center; + background-position: -496px; + padding-left:25px; +} + +/* Drag and Drop */ +.larson .dojoDndItemBefore, +.larson .dojoDndItemAfter{ + border-top: 1px solid @dnd-dropseparator-color; +} +.larson .dojoDndItemOver { + cursor:pointer; + } +.larson table.dojoDndAvatar { + border: 1px solid @border-color; + border-collapse: collapse; + background-color: @dnd-avatar-background-color; + .box-shadow(0 1px 3px rgba(0, 0, 0, .25)); +} +.larson .dojoDndAvatarHeader td { + height: 20px; + padding-left:21px; +} +.larson.dojoDndMove .dojoDndAvatarHeader, .larson.dojoDndCopy .dojoDndAvatarHeader { + background-image: url(images/dnd.png); + background-repeat: no-repeat; + background-position:2px -122px; +} +.larson .dojoDndAvatarItem td { + padding: 5px; +} +.larson.dojoDndMove .dojoDndAvatarHeader { + background-color: @dnd-avatar-header-background-color; + background-position:2px -103px; +} +.larson.dojoDndCopy .dojoDndAvatarHeader { + background-color: @dnd-avatar-header-background-color; + background-position:2px -68px; +} +.larson.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: @dnd-avatar-candrop-header-background-color; + background-position:2px -33px; +} +.larson.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: @dnd-avatar-candrop-header-background-color; + background-position:2px 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog.css new file mode 100755 index 0000000..93d070f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog.css @@ -0,0 +1,203 @@ +/* Dialog + * + * Styling Dialog includes two sections: Dialog and Tooltip & TooltipDialog + * + * Dialog: + * 1. Dialog (default styling): + * .dijitDialog - styles for dialog's bounding box + * + * 2. Dialog title + * .dijitDialogTitleBar - styles for the title container at the top of dialog + * .dijitDialogTitle - the text container in dialog title + * + * 3. Dialog content + * .dijitDialogPaneContent - main container for content area and action bar + * .dijitDialogPaneContentArea - styles for content container + * + * 4. Dialog action bar + * .dijitDialogPaneActionBar - styles for action buttons lie at the bottom of dialog pane content + * + * 5. Dialog underlay + * .dijitDialogUnderlay - div under the dialog which used for separate dialog and page content + * + * + * Tooltip & TooltipDialog: + * 1. tooltip content container: + * .dijitTooltipContainer - tooltip content container + * + * 2. tooltip connector: + * .dijitTooltipConnector - tooltip anchor includes 4 direction(up, down, left, right) + */ +.larson .dijitDialog { + border: 1px solid #769dc0; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); +} +.larson .dijitDialogPaneContent { + background: #ffffff repeat-x top left; + border-top: 1px solid #769dc0; + padding: 10px 8px; + position: relative; +} +.larson .dijitDialogPaneContentArea { + /* trick to get action bar (gray bar at bottom with OK/cancel buttons) to span from + * left to right but still indent dialog content + */ + margin: -10px -8px; + padding: 10px 8px; +} +.larson .dijitDialogPaneActionBar { + /* gray bar at bottom of dialog with OK/Cancel buttons */ + + background-color: #efefef; + padding: 3px 5px 2px 7px; + text-align: right; + border-top: 1px solid #d3d3d3; + margin: 10px -8px -10px; +} +.larson .dijitDialogPaneActionBar .dijitButton { + float: none; +} +.larson .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + + border: 1px solid #ffffff; + border-top: none; + background-color: #abd6ff; + background-image: url("images/titlebar.png"); + background-repeat: repeat-x; + padding: 5px 7px 4px 7px; +} +.larson .dijitDialogTitle { + /* typography and styling of the dialog title */ + + padding: 0 1px; + font-size: 1.091em; +} +.larson .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + + background: url("images/dialogCloseIcon.png"); + background-repeat: no-repeat; + position: absolute; + right: 5px; + height: 15px; + width: 21px; +} +.dj_ie6 .larson .dijitDialogCloseIcon { + background-image: url("images/dialogCloseIcon8bit.png"); +} +.larson .dijitDialogCloseIconHover { + background-position: -21px; +} +.larson .dijitDialogCloseIconActive { + background-position: -42px; +} +/* Tooltip and TooltipDialog */ +.larson .dijitTooltip, .larson .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + + background: transparent; + /* make the area on the sides of the arrow transparent */ + +} +.dijitTooltipBelow { + /* leave room for arrow above content */ + + padding-top: 13px; + padding-left: 3px; + padding-right: 3px; +} +.dijitTooltipAbove { + /* leave room for arrow below content */ + + padding-bottom: 13px; + padding-left: 3px; + padding-right: 3px; +} +.larson .dijitTooltipContainer { + /* the part with the text */ + + background-color: #ffffff; + background-image: url("images/tooltipGradient.png"); + background-repeat: repeat-x; + background-position: bottom; + border: 1px solid #769dc0; + padding: 6px 8px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + font-size: 1em; +} +.dj_ie6 .larson .dijitTooltipContainer { + background-image: none; +} +.larson .dijitTooltipConnector { + /* the arrow piece */ + + border: 0; + z-index: 2; + background-image: url("images/tooltip.png"); + background-repeat: no-repeat; + width: 16px; + height: 14px; +} +.dj_ie6 .larson .dijitTooltipConnector { + background-image: url("images/tooltip8bit.png"); +} +.larson .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + + left: auto !important; + right: 3px; +} +.larson .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + + top: 0; + left: 3px; + background-position: -31px 0; + width: 16px; + height: 14px; +} +.larson .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + + bottom: 0; + left: 3px; + background-position: -15px 0; + width: 16px; + height: 14px; +} +.dj_ie7 .larson .dijitTooltipAbove .dijitTooltipConnector, .dj_ie6 .larson .dijitTooltipAbove .dijitTooltipConnector { + bottom: -1px; +} +.larson .dijitTooltipLeft { + padding-right: 14px; +} +.larson .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + + right: 0; + background-position: 0 0; + width: 16px; + height: 14px; +} +.larson .dijitTooltipRight { + padding-left: 14px; +} +.larson .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + + left: 0; + background-position: -48px 0; + width: 16px; + height: 14px; +} +.larson .dijitDialogUnderlay { + background: #ffffff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog.less new file mode 100755 index 0000000..096e556 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog.less @@ -0,0 +1,203 @@ +/* Dialog + * + * Styling Dialog includes two sections: Dialog and Tooltip & TooltipDialog + * + * Dialog: + * 1. Dialog (default styling): + * .dijitDialog - styles for dialog's bounding box + * + * 2. Dialog title + * .dijitDialogTitleBar - styles for the title container at the top of dialog + * .dijitDialogTitle - the text container in dialog title + * + * 3. Dialog content + * .dijitDialogPaneContent - main container for content area and action bar + * .dijitDialogPaneContentArea - styles for content container + * + * 4. Dialog action bar + * .dijitDialogPaneActionBar - styles for action buttons lie at the bottom of dialog pane content + * + * 5. Dialog underlay + * .dijitDialogUnderlay - div under the dialog which used for separate dialog and page content + * + * + * Tooltip & TooltipDialog: + * 1. tooltip content container: + * .dijitTooltipContainer - tooltip content container + * + * 2. tooltip connector: + * .dijitTooltipConnector - tooltip anchor includes 4 direction(up, down, left, right) + */ + +@import "variables"; + +.larson .dijitDialog { + border: 1px solid @popup-border-color; + .box-shadow(0 1px 5px rgba(0,0,0,0.25)); +} + +.larson .dijitDialogPaneContent { + background: @pane-background-color repeat-x top left; + border-top: 1px solid @popup-border-color; + padding:10px 8px; + position: relative; +} + +.larson .dijitDialogPaneContentArea { + /* trick to get action bar (gray bar at bottom with OK/cancel buttons) to span from + * left to right but still indent dialog content + */ + margin: -10px -8px; + padding: 10px 8px; +} + +.larson .dijitDialogPaneActionBar { + /* gray bar at bottom of dialog with OK/Cancel buttons */ + background-color: @bar-background-color; + padding: 3px 5px 2px 7px; + text-align: right; + border-top: 1px solid @minor-border-color; + margin: 10px -8px -10px; +} +.larson .dijitDialogPaneActionBar .dijitButton { + float: none; +} + +.larson .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + border: 1px solid @dialog-titlebar-border-color; + border-top:none; + background-color: @dialog-titlebar-background-color; + background-image: url("images/titlebar.png"); + background-repeat:repeat-x; + padding: 5px 7px 4px 7px; +} + +.larson .dijitDialogTitle { + /* typography and styling of the dialog title */ + padding: 0 1px; + font-size:1.091em; +} + +.larson .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + background: url("images/dialogCloseIcon.png"); + background-repeat:no-repeat; + position: absolute; + right: 5px; + height: 15px; + width: 21px; +} +.dj_ie6 .larson .dijitDialogCloseIcon { + background-image: url("images/dialogCloseIcon8bit.png"); +} +.larson .dijitDialogCloseIconHover { + background-position:-21px; +} +.larson .dijitDialogCloseIconActive { + background-position:-42px; +} + +/* Tooltip and TooltipDialog */ + +.larson .dijitTooltip, +.larson .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 13px; + padding-left:3px; + padding-right:3px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 13px; + padding-left:3px; + padding-right:3px; +} + +.larson .dijitTooltipContainer { + /* the part with the text */ + background-color:@popup-background-color; + background-image:url("images/tooltipGradient.png"); + background-repeat:repeat-x; + background-position:bottom; + border:1px solid @popup-border-color; + padding:6px 8px; + .border-radius(4px); + .box-shadow(0 1px 3px rgba(0,0,0,0.25)); + font-size: 1em; +} + +.dj_ie6 .larson .dijitTooltipContainer { + background-image: none; +} +.larson .dijitTooltipConnector { + /* the arrow piece */ + border: 0; + z-index: 2; + background-image:url("images/tooltip.png"); + background-repeat:no-repeat; + width:16px; + height:14px; +} +.dj_ie6 .larson .dijitTooltipConnector { + background-image:url("images/tooltip8bit.png"); +} +.larson .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + left: auto !important; + right: 3px; +} + +.larson .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + top: 0; + left: 3px; + background-position:-31px 0; + width:16px; + height:14px; +} + +.larson .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + bottom: 0; + left: 3px; + background-position:-15px 0; + width:16px; + height:14px; +} +.dj_ie7 .larson .dijitTooltipAbove .dijitTooltipConnector, +.dj_ie6 .larson .dijitTooltipAbove .dijitTooltipConnector { + bottom: -1px; +} + +.larson .dijitTooltipLeft { + padding-right: 14px; +} +.larson .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + right: 0; + background-position:0 0; + width:16px; + height:14px; +} + +.larson .dijitTooltipRight { + padding-left: 14px; +} +.larson .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + left: 0; + background-position:-48px 0; + width:16px; + height:14px; +} + +.larson .dijitDialogUnderlay { + background: @dialog-underlay-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog_rtl.css new file mode 100755 index 0000000..9c8c1f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog_rtl.css @@ -0,0 +1,9 @@ +/* Dialog */ +.larson .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} +.larson .dijitDialogRtl .dijitDialogPaneActionBar { + text-align: left; + padding: 3px 7px 2px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog_rtl.less new file mode 100755 index 0000000..c3e9ecf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Dialog_rtl.less @@ -0,0 +1,13 @@ +/* Dialog */ + +@import "variables"; + +.larson .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} + +.larson .dijitDialogRtl .dijitDialogPaneActionBar { + text-align: left; + padding: 3px 7px 2px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor.css new file mode 100755 index 0000000..6bdb853 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor.css @@ -0,0 +1,50 @@ +/* Editor + * + * Styling Editor means styling the Editor inside iframe container (dijitEditorIFrameContainer) + * + * 1. Editor iframe container (default styling): + * .dijitEditorIFrameContainer - normal state styles: background-color, border, padding + * + * 2. hovered Editor iframe container (ie, mouse hover on editor) + * .dijitEditorHover .dijitEditorIFrameContainer/dijitEditorIFrame - styles when mouse hover on the container + * + * 3. focused Editor iframe container (ie, mouse focus on the editor pane) + * .dijitEditorFocused .dijitEditorIFrameContainer/dijitEditorIFrame - styles when container focused + * + * 3. disabled Editor iframe container + * .dijitEditorDisabled - editor's inner iframe container disable status styles: background, border + */ +.larson .dijitEditorIFrameContainer { + padding: 3px 3px 1px 10px; +} +.larson .dijitEditorIFrame { + background-color: #ffffff; +} +.larson .dijitEditor { + border: 1px solid #cccccc; +} +.larson .dijitEditor .dijitEditorIFrameContainer { + background-color: #ffffff; + background-image: url('form/images/textBox_back.png'); + background-repeat: repeat-x; +} +.dj_ie6 .larson .dijitEditor .dijitEditorIFrameContainer { + background-image: none; +} +.larson .dijitEditorHover .dijitEditorIFrameContainer, .larson .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: #efefef; +} +.larson .dijitEditorFocused .dijitEditorIFrameContainer, .larson .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame { + /* TODO: contradicts rule above, which background-color do you want? */ + + background-color: #ffffff; +} +/* Disabled */ +.larson .dijitEditorDisabled { + border: 1px solid #d3d3d3; + color: #818181; +} +.larson .dijitDisabled .dijitEditorIFrame, .larson .dijitDisabled .dijitEditorIFrameContainer, .larson .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: #efefef; + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor.less new file mode 100755 index 0000000..fd95080 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor.less @@ -0,0 +1,59 @@ +/* Editor + * + * Styling Editor means styling the Editor inside iframe container (dijitEditorIFrameContainer) + * + * 1. Editor iframe container (default styling): + * .dijitEditorIFrameContainer - normal state styles: background-color, border, padding + * + * 2. hovered Editor iframe container (ie, mouse hover on editor) + * .dijitEditorHover .dijitEditorIFrameContainer/dijitEditorIFrame - styles when mouse hover on the container + * + * 3. focused Editor iframe container (ie, mouse focus on the editor pane) + * .dijitEditorFocused .dijitEditorIFrameContainer/dijitEditorIFrame - styles when container focused + * + * 3. disabled Editor iframe container + * .dijitEditorDisabled - editor's inner iframe container disable status styles: background, border + */ + +@import "variables"; + +.larson .dijitEditorIFrameContainer{ + padding:3px 3px 1px 10px; +} +.larson .dijitEditorIFrame { + background-color: @textbox-background-color; +} +.larson .dijitEditor { + border: 1px solid @border-color; +} +.larson .dijitEditor .dijitEditorIFrameContainer{ + background-color: @textbox-background-color; + background-image: url('form/images/textBox_back.png'); + background-repeat:repeat-x; +} +.dj_ie6 .larson .dijitEditor .dijitEditorIFrameContainer{ + background-image: none; +} +.larson .dijitEditorHover .dijitEditorIFrameContainer, +.larson .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame{ + background-color: @textbox-hovered-background-color; +} +.larson .dijitEditorFocused .dijitEditorIFrameContainer, +.larson .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame{ + /* TODO: contradicts rule above, which background-color do you want? */ + background-color: @textbox-focused-background-color; +} + + +/* Disabled */ +.larson .dijitEditorDisabled { + border: 1px solid @disabled-border-color; + color: @disabled-text-color; +} + +.larson .dijitDisabled .dijitEditorIFrame, +.larson .dijitDisabled .dijitEditorIFrameContainer, +.larson .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: @textbox-disabled-background-color; + background-image: none; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor_rtl.css new file mode 100755 index 0000000..7822102 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor_rtl.css @@ -0,0 +1,4 @@ +/* Editor */ +.larson .dijitEditorRtl .dijitEditorIFrameContainer { + padding: 3px 10px 1px 3px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor_rtl.less new file mode 100755 index 0000000..5b80e7c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Editor_rtl.less @@ -0,0 +1,9 @@ +/* Editor */ + +@import "variables"; + +.larson .dijitEditorRtl .dijitEditorIFrameContainer{ + padding:3px 10px 1px 3px; +} + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/InlineEditBox.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/InlineEditBox.css new file mode 100755 index 0000000..b90517e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/InlineEditBox.css @@ -0,0 +1,20 @@ +/* InlineEditBox + * + * Styling InlineEditBox mainly includes: + * + * 1. Normal state + * .dijitInlineEditBoxDisplayMode - for border + * + * 2. Hover state + * .dijitInlineEditBoxDisplayModeHover - for border and background color + */ +.larson .dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; +} +.larson .dijitInlineEditBoxDisplayModeHover { + background-color: #efefef; + border: solid 1px #999999; +} +.dj_ie6 .larson .dijitInlineEditBoxDisplayMode { + border: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/InlineEditBox.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/InlineEditBox.less new file mode 100755 index 0000000..6ce7fe3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/InlineEditBox.less @@ -0,0 +1,25 @@ +/* InlineEditBox + * + * Styling InlineEditBox mainly includes: + * + * 1. Normal state + * .dijitInlineEditBoxDisplayMode - for border + * + * 2. Hover state + * .dijitInlineEditBoxDisplayModeHover - for border and background color + */ + +@import "variables"; + +.larson .dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; +} + +.larson .dijitInlineEditBoxDisplayModeHover { + background-color: @textbox-hovered-background-color; + border: solid 1px @hovered-border-color; +} + +.dj_ie6 .larson .dijitInlineEditBoxDisplayMode { + border: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu.css new file mode 100755 index 0000000..3e4c467 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu.css @@ -0,0 +1,184 @@ +/* Menu + +There are three areas of styling for the Menu: + + 1. The menu + There are three types of menus: + i)Context Menu + ii)Drop down Menu + iii) Navigation Menu + All three types of menus are affected by the .dijitMenu class in which you can set the background-color, padding and border + .dijitMenu affects the drop down menu in TimeTextBox, Calendar, ComboBox and FilteringSelect + .dijitMenuTable - for padding - also affects Select widget + + 2. The menu bar + .dijitMenuBar - for border, margins, padding, background-color of the menu bar + .dijitMenuBar .dijitMenuItem - for padding, text color of menu items in the menu bar (overrides .dijitMenuItem) + + 3. Menu items - items in the menu. + .dijitMenuItem - for color + .dijitMenuItemHover, .dijitMenuItemSelected - for background-color, border, text color, padding of a menu item or menubar item that has been hovered over or selected + .dijitMenuItemActive - for bacgkround-color of an active (mousedown) menu item + td.dijitMenuItemIconCell - for padding around a menu item's icon + td.dijitMenuItemLabel - for padding around a menu item's label + .dijitMenuSeparatorTop - for border, top border, of the separator + .dijitMenuSeparatorBottom - for bottom margin of the separator + + Styles specific to ComboBox and FilteringSelect widgets: + .dijitComboBoxMenu .dijitMenuItem - for padding and border of a menu item in a ComboBox or FilteringSelect widget's menu + .dijitComboBoxMenu .dijitMenuItemSelected- for text color, background-color and border of a menu item in a ComboBox or FilteringSelect widget's menu + +*/ +.larson .dijitMenuBar { + border: 1px solid #cccccc; + margin: 0; + padding: 0; + background-color: #efefef; + background-image: url("images/commonHighlight.png"); + background-position: 0 0; + background-repeat: repeat-x; +} +.dj_ie6 .larson .dijitMenuBar { + background-image: none; +} +.larson .dijitMenu { + background-repeat: repeat-y; + background-color: #ffffff; + border: 1px solid #769dc0; + /* so adjoining borders of MenuBar/ComboBox and Menu overlap, avoiding double border */ + + margin: -1px 0; +} +.dj_ie6 .larson .dijitMenu { + margin: 0; + /* above -1px makes top/bottom borders disappear on IE6 */ + +} +.larson .dijitMenuBar .dijitMenuItem { + padding: 6px 10px 7px; + background-position: 0 100px; + color: #4a4a4a; + margin: -1px; +} +.larson .dijitMenuItem { + background-image: url("images/menuHighlight.png"); + background-position: 0 -40px; + background-repeat: repeat-x; +} +/* this prevents jiggling upon hover of a menu item */ +.larson .dijitMenuTable { + border-collapse: separate; + border-spacing: 0 0; + padding: 0; +} +.larson .dijitMenuItem td { + padding: 1px; +} +/* hover over a MenuBarItem */ +.larson .dijitMenuPassive .dijitMenuItemHover, .larson .dijitMenuPassive .dijitMenuItemSelected { + background-color: #e3e3e3; + border: solid 1px #999999; + background-position: 0 0; + color: #000000; + padding: 5px 9px 6px; +} +.larson .dijitMenuPassive .dijitMenuItemActive { + background-position: 0 -177px; +} +.dj_ie6 .larson .dijitMenuItem, .dj_ie6 .larson .dijitMenuPassive .dijitMenuItem { + background-image: none; +} +/* MenuBarItem that has been selected and menu drops down from it */ +.larson .dijitMenuActive .dijitMenuItemHover, .larson .dijitMenuActive .dijitMenuItemSelected { + border: solid 1px #999999; + padding: 5px 9px 6px; + background-color: #e3e3e3; + background-position: 0 0; + color: #000000; +} +.dj_ie .larson .dijitMenuActive .dijitMenuItemHover, +.dj_ie .larson .dijitMenuActive .dijitMenuItemSelected, +.dj_ie .larson .dijitMenuPassive .dijitMenuItemHover, +.dj_ie .larson .dijitMenuPassive .dijitMenuItemSelected { + padding-top: 6px; + padding-bottom: 5px; + margin-top: -3px; +} +.larson .dijitMenuActive .dijitMenuItemActive { + background-color: #dcdcdc; + background-position: 0 -177px; +} +.larson .dijitMenuItemActive { + background-position: 0 -177px; +} +.larson td.dijitMenuItemIconCell { + padding: 2px; + margin: 0 0 0 4px; +} +.larson td.dijitMenuItemLabel { + padding-top: 5px; + padding-bottom: 5px; +} +.larson .dijitMenuExpand { + width: 7px; + height: 7px; + background-image: url('images/spriteArrows.png'); + background-position: -14px 0; + margin-right: 3px; +} +.larson .dijitMenuItemDisabled .dijitMenuItemIconCell { + opacity: 1; +} +.larson .dijitMenuSeparatorTop { + height: auto; + margin-top: 1px; + /* prevents spacing above/below separator */ + + border-bottom: 1px solid #cccccc; +} +.larson .dijitMenuSeparatorBottom { + height: auto; + margin-bottom: 1px; +} +/* the checked menu item */ +.larson .dijitCheckedMenuItemIconChar { + display: none; +} +.larson .dijitCheckedMenuItemIcon { + background-image: url('form/images/checkboxRadioButtonStates.png'); + background-repeat: no-repeat; + background-position: -15px 50%; + width: 15px; + height: 16px; +} +.dj_ie6 .larson .dijitCheckedMenuItemIcon { + background-image: url('form/images/checkboxAndRadioButtons_IE6.png'); +} +.larson .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon { + background-position: 0 50%; +} +/*ComboBox Menu*/ +.larson .dijitComboBoxMenu { + margin-left: 0; + background-image: none; +} +.larson .dijitComboBoxMenu .dijitMenuItem { + padding: 2px; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #ffffff; +} +.larson .dijitComboBoxMenu .dijitMenuItemSelected { + color: #000000; + border-color: #999999; + background-color: #e3e3e3; +} +.larson .dijitComboBoxMenuActive .dijitMenuItemSelected { + background-position: 0 -177px; + background-color: #7dbefa; + /* TODO: why is this a different color than normal .dijitMenuItemSelected? */ + +} +.larson .dijitMenuPreviousButton, .larson .dijitMenuNextButton { + font-style: italic; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu.less new file mode 100755 index 0000000..c0cd869 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu.less @@ -0,0 +1,188 @@ +/* Menu + +There are three areas of styling for the Menu: + + 1. The menu + There are three types of menus: + i)Context Menu + ii)Drop down Menu + iii) Navigation Menu + All three types of menus are affected by the .dijitMenu class in which you can set the background-color, padding and border + .dijitMenu affects the drop down menu in TimeTextBox, Calendar, ComboBox and FilteringSelect + .dijitMenuTable - for padding - also affects Select widget + + 2. The menu bar + .dijitMenuBar - for border, margins, padding, background-color of the menu bar + .dijitMenuBar .dijitMenuItem - for padding, text color of menu items in the menu bar (overrides .dijitMenuItem) + + 3. Menu items - items in the menu. + .dijitMenuItem - for color + .dijitMenuItemHover, .dijitMenuItemSelected - for background-color, border, text color, padding of a menu item or menubar item that has been hovered over or selected + .dijitMenuItemActive - for bacgkround-color of an active (mousedown) menu item + td.dijitMenuItemIconCell - for padding around a menu item's icon + td.dijitMenuItemLabel - for padding around a menu item's label + .dijitMenuSeparatorTop - for border, top border, of the separator + .dijitMenuSeparatorBottom - for bottom margin of the separator + + Styles specific to ComboBox and FilteringSelect widgets: + .dijitComboBoxMenu .dijitMenuItem - for padding and border of a menu item in a ComboBox or FilteringSelect widget's menu + .dijitComboBoxMenu .dijitMenuItemSelected- for text color, background-color and border of a menu item in a ComboBox or FilteringSelect widget's menu + +*/ + +@import "variables"; + +.larson .dijitMenuBar { + border: 1px solid @border-color; + margin: 0; + padding: 0; + background-color: @bar-background-color; + background-image: url("images/commonHighlight.png"); + background-position:0 0; + background-repeat:repeat-x; +} +.dj_ie6 .larson .dijitMenuBar { + background-image:none; +} +.larson .dijitMenu { + background-repeat:repeat-y; + background-color:@menu-background-color; + border: 1px solid @popup-border-color; + + /* so adjoining borders of MenuBar/ComboBox and Menu overlap, avoiding double border */ + margin: -1px 0; +} +.dj_ie6 .larson .dijitMenu { + margin: 0; /* above -1px makes top/bottom borders disappear on IE6 */ +} +.larson .dijitMenuBar .dijitMenuItem { + padding: 6px 10px 7px; + background-position:0 100px; + color:@unselected-text-color; + margin:-1px; +} +.larson .dijitMenuItem { + background-image: url("images/menuHighlight.png"); + background-position:0 -40px; + background-repeat:repeat-x; +} + +/* this prevents jiggling upon hover of a menu item */ +.larson .dijitMenuTable { + border-collapse:separate; + border-spacing:0 0; + padding:0; +} +.larson .dijitMenuItem td{ + padding:1px; +} +/* hover over a MenuBarItem */ +.larson .dijitMenuPassive .dijitMenuItemHover, +.larson .dijitMenuPassive .dijitMenuItemSelected { + background-color: @hovered-background-color; + border:solid 1px @hovered-border-color; + background-position:0 0; + color:@text-color; + padding: 5px 9px 6px; +} +.larson .dijitMenuPassive .dijitMenuItemActive{ + background-position:0 -177px; +} +.dj_ie6 .larson .dijitMenuItem, +.dj_ie6 .larson .dijitMenuPassive .dijitMenuItem { + background-image: none; +} + +/* MenuBarItem that has been selected and menu drops down from it */ +.larson .dijitMenuActive .dijitMenuItemHover, +.larson .dijitMenuActive .dijitMenuItemSelected { + border:solid 1px @hovered-border-color; + padding: 5px 9px 6px; + background-color: @hovered-background-color; + background-position:0 0; + color:@hovered-text-color; +} +.dj_ie .larson .dijitMenuActive .dijitMenuItemHover, +.dj_ie .larson .dijitMenuActive .dijitMenuItemSelected, +.dj_ie .larson .dijitMenuPassive .dijitMenuItemHover, +.dj_ie .larson .dijitMenuPassive .dijitMenuItemSelected { + padding-top: 6px; + padding-bottom: 5px; + margin-top: -3px; +} +.larson .dijitMenuActive .dijitMenuItemActive{ + background-color: @pressed-background-color; + background-position:0 -177px; +} +.larson .dijitMenuItemActive { + background-position:0 -177px; +} +.larson td.dijitMenuItemIconCell { + padding: 2px; + margin: 0 0 0 4px; +} +.larson td.dijitMenuItemLabel { + padding-top: 5px; + padding-bottom: 5px; +} +.larson .dijitMenuExpand { + width: 7px; + height: 7px; + background-image: url('images/spriteArrows.png'); + background-position: -14px 0; + margin-right:3px; +} +.larson .dijitMenuItemDisabled .dijitMenuItemIconCell { + opacity:1; +} +.larson .dijitMenuSeparatorTop { + height: auto; + margin-top:1px; /* prevents spacing above/below separator */ + border-bottom: 1px solid @border-color +} +.larson .dijitMenuSeparatorBottom{ + height: auto; + margin-bottom:1px; +} +/* the checked menu item */ +.larson .dijitCheckedMenuItemIconChar { + display: none; +} +.larson .dijitCheckedMenuItemIcon { + background-image: url('form/images/checkboxRadioButtonStates.png'); + background-repeat:no-repeat; + background-position: -15px 50%; + width:15px; + height:16px; +} +.dj_ie6 .larson .dijitCheckedMenuItemIcon { + background-image: url('form/images/checkboxAndRadioButtons_IE6.png'); +} +.larson .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon { + background-position: 0 50%; +} + +/*ComboBox Menu*/ +.larson .dijitComboBoxMenu { + margin-left:0; + background-image: none; +} + +.larson .dijitComboBoxMenu .dijitMenuItem { + padding: @textbox-padding; // Make drop down menu text line up with text in . + border-width:1px 0 1px 0; + border-style:solid; + border-color: @select-dropdownitem-background-color; +} +.larson .dijitComboBoxMenu .dijitMenuItemSelected { + color:@selected-text-color; + border-color:@hovered-border-color; + background-color:@hovered-background-color; +} +.larson .dijitComboBoxMenuActive .dijitMenuItemSelected { + background-position:0 -177px; + background-color: @select-dropdownitem-hovered-background-color; /* TODO: why is this a different color than normal .dijitMenuItemSelected? */ +} +.larson .dijitMenuPreviousButton, .larson .dijitMenuNextButton { + font-style: italic; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu_rtl.css new file mode 100755 index 0000000..2f2b435 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu_rtl.css @@ -0,0 +1,8 @@ +.larson .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; + margin-right: 0; + margin-left: 3px; +} +.larson .dijitMenuItemRtl .dijitMenuItemIcon { + margin: 0 4px 0 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu_rtl.less new file mode 100755 index 0000000..92d6586 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Menu_rtl.less @@ -0,0 +1,11 @@ +@import "variables"; + +.larson .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; + margin-right: 0; + margin-left: 3px; +} + +.larson .dijitMenuItemRtl .dijitMenuItemIcon { + margin:0 4px 0 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/ProgressBar.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/ProgressBar.css new file mode 100755 index 0000000..3bf569f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/ProgressBar.css @@ -0,0 +1,57 @@ +/* ProgressBar + * + * Styling of the ProgressBar consists of the following: + * + * 1. the base progress bar + * .dijitProgressBar - sets margins for the progress bar + * + * 2. the empty bar + * .dijitProgressBarEmpty - sets background img and color for bar or parts of bar that are not finished yet + * Also sets border color for whole bar + * + * 3. tile mode + * .dijitProgressBarTile + * inner container for finished portion when in 'tile' (image) mode + * + * 4. full bar mode + * .dijitProgressBarFull + * adds border to right side of the filled portion of bar + * + * 5. text for label of bar + * .dijitProgressBarLabel - sets text color, which must contrast with both the "Empty" and "Full" parts. + * + * 6. indeterminate mode + * .dijitProgressBarIndeterminate .dijitProgressBarTile + * sets animated gif for the progress bar in 'indeterminate' mode + */ +.larson .dijitProgressBar { + margin: 2px 0 2px 0; +} +.larson .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + + background: #ffffff url("images/progressBarEmpty.png") repeat-none left; + border-color: #769dc0; +} +.larson .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + + background: #abd6ff url("images/progressBarFull.png") repeat-x top; +} +.dj_ie6 .larson .dijitProgressBarTile { + background-image: none; +} +.larson .dijitProgressBarFull { + border-right: 1px solid #769dc0; +} +.larson .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + + color: #000000; +} +.larson .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode; + background-color won't appear unless user has turned off background images */ + + background: #efefef url("images/progressBarAnim.gif") repeat-x top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/ProgressBar.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/ProgressBar.less new file mode 100755 index 0000000..eb07f5b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/ProgressBar.less @@ -0,0 +1,56 @@ +/* ProgressBar + * + * Styling of the ProgressBar consists of the following: + * + * 1. the base progress bar + * .dijitProgressBar - sets margins for the progress bar + * + * 2. the empty bar + * .dijitProgressBarEmpty - sets background img and color for bar or parts of bar that are not finished yet + * Also sets border color for whole bar + * + * 3. tile mode + * .dijitProgressBarTile + * inner container for finished portion when in 'tile' (image) mode + * + * 4. full bar mode + * .dijitProgressBarFull + * adds border to right side of the filled portion of bar + * + * 5. text for label of bar + * .dijitProgressBarLabel - sets text color, which must contrast with both the "Empty" and "Full" parts. + * + * 6. indeterminate mode + * .dijitProgressBarIndeterminate .dijitProgressBarTile + * sets animated gif for the progress bar in 'indeterminate' mode + */ + + @import "variables"; + +.larson .dijitProgressBar { + margin:2px 0 2px 0; +} +.larson .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + background: @progressbar-empty-background-color url("images/progressBarEmpty.png") repeat-none left; + border-color: @progressbar-border-color; +} +.larson .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + background: @progressbar-full-background-color url("images/progressBarFull.png") repeat-x top; +} +.dj_ie6 .larson .dijitProgressBarTile { + background-image: none; +} +.larson .dijitProgressBarFull { + border-right:1px solid @progressbar-border-color; +} +.larson .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color: @progressbar-text-color; +} +.larson .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode; + background-color won't appear unless user has turned off background images */ + background: @bar-background-color url("images/progressBarAnim.gif") repeat-x top; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/README b/js/dojo-release-1.7.2-src/dijit/themes/larson/README new file mode 100755 index 0000000..2c35c1f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/README @@ -0,0 +1,64 @@ +These are "less" files that compile into the CSS of larson. + +--------- +Installing and running on Windows: + +1. Install node: + a) Go to https://github.com/ajaxorg/node-builds, press download button, and select "download zip" + b) unzip the file into C:\ + +2. Install less: + + a) Go to https://github.com/cloudhead/less.js/archives/master, press download button, and select "download zip" + b) unzip the file into C:\ + +2. Add node and lessc environment variables: + + a) open Control Panel --> click System icon --> select Advanced tab --> click Environment variables button + b) press "edit" on path + c) depending on what directory you unzipped to and the exact filenames, you will add something like + + ;C:\ajaxorg-node-builds-0fcee7d\win32;C:\cloudhead-less.js-7fb09f\bin + + d) add new environment variable NODE_PATH with value like this (depending on exact download name): + + C:\cloudhead-less.js-7fb09f\lib + +4. To compile all the files: + + C:\> cd C:\myworkspace\dijit\themes\larson + C:\> node compile.js + +-------- +To install/run less version 2 on mac: + +1. Install Node.js + Download a built copy from https://github.com/ajaxorg/node-builds. + Alternately, o to http://nodejs.org/#download (./configure, make, make install). + +2. Download less from https://github.com/cloudhead/less.js/archives/master + +3. Edit .bash_profile etc. to add node to your path, and lessc to NODE_PATH: + + export PATH=$PATH:/opt/less/bin + export NODE_PATH=$NODE_PATH:/opt/less/lib + +To compile all the files: + + $ cd dijit/themes/larson + $ node compile.js + + +------- +Alternately, you can install less version 1, but I'd rather not use it for checked in files +since it breaks a part a lot of rules into multiple rules, causing spurious diffs. + +To install on a mac: + $ sudo gem install less + +On Windows or Linux, make sure you have ruby and ruby-gems installed first. +If you need help installing ruby please check out ruby-lang.org for more details. + +----- + +See http://lesscss.org/ and https://github.com/cloudhead/less.js/ for more information. diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker.css new file mode 100755 index 0000000..2d50bb0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker.css @@ -0,0 +1,130 @@ +/* Time Picker + * + * Styling the Time Picker consists of the following: + * + * 1. minor time values + * .dijitTimePickerTick - set text color, size, background color of minor values + * .dijitTimePickerTickHover - set hover style of minor time values + * dijitTimePickerTickSelected - set selected style of minor time values + * + * 2. major time values - 1:00, 2:00, times on the hour + * set text color, size, background color, left/right margins for "zoom" affect + * .dijitTimePickerMarkerHover - to set hover style of major time values + * .dijitTimePickerMarkerSelected - set selected style of major time values + * + * 3. up and down arrow buttons + * .dijitTimePicker .dijitButtonNode - background-color, border + * .dijitTimePicker .dijitUpArrowHover, .dijitTimePicker .dijitDownArrowHover - set background-color for hover state + * + * Other classes provide the fundamental structure of the TimePicker and should not be modified. + */ +/* override Button.css */ +.larson .dijitTimePicker .dijitButtonNode { + padding: 0 0; + -moz-border-radius: 0; + border-radius: 0; +} +.larson .dijitTimePicker { + border: 1px #cccccc solid; + border-top: none; + border-bottom: none; + background-color: #fff; + /* TODO: useless? Appears to be overridden by settings on individual elements */ + +} +.larson .dijitTimePickerItem { + /* dijitTimePickerItem refers to both Tick's (minor values like 2:15, 2:30, 2:45) and Marker's (major values like 2PM, 3PM) */ + + background-image: url("images/commonHighlight.png"); + background-position: 0 -1px; + background-repeat: repeat-x; + border-top: solid 1px #cccccc; + border-bottom: solid 1px #cccccc; + margin-right: -1px; + margin-left: -1px; + margin-top: -1px; +} +/* to make up for lack of alpha transparency in IE6 */ +.dj_ie6 .larson .dijitTimePickerItem { + background-image: none; +} +.larson .dijitTimePickerTick { + /* minor value */ + + color: #818181; + background-color: #efefef; + font-size: 0.818em; +} +.larson .dijitTimePickerMarker { + /* major value - 1:00, 2:00, times on the hour */ + + background-color: #e9f4fe; + font-size: 1em; + white-space: nowrap; +} +.larson .dijitTimePickerTickHover, +.larson .dijitTimePickerMarkerHover, +.larson .dijitTimePickerMarkerSelected, +.larson .dijitTimePickerTickSelected { + background-color: #7dbefa; + border: solid 1px #cccccc; + margin-left: -7px; + margin-right: -7px; + color: #000000; +} +.larson .dijitTimePickerMarkerSelected, .larson .dijitTimePickerTickSelected { + font-size: 1em; +} +.dj_ie .larson .dijitTimePickerTickHover, +.dj_ie .larson .dijitTimePickerMarkerHover, +.dj_ie .larson .dijitTimePickerMarkerSelected, +.dj_ie .larson .dijitTimePickerTickSelected { + width: 114%; +} +.dj_ie6 .larson .dijitTimePickerTickHover, +.dj_ie6 .larson .dijitTimePickerMarkerHover, +.dj_ie6 .larson .dijitTimePickerMarkerSelected, +.dj_ie6 .larson .dijitTimePickerTickSelected { + position: relative; + /* creates widening of element */ + zoom: 1; + /* creates widening of element */ + +} +.larson .dijitTimePickerTick .dijitTimePickerItemInner { + padding: 1px; + margin: 0; +} +.larson .dijitTimePicker .dijitButtonNode { + border-left: none; + border-right: none; + border-color: #cccccc; + background-color: #efefef; + background-image: url("images/commonHighlight.png"); + background-position: 0 -1px; + background-repeat: repeat-x; +} +.dj_ie6 .larson .dijitTimePicker .dijitButtonNode { + background-image: none; +} +.larson .dijitTimePicker .dijitArrowButtonInner { + height: 100%; + /* hack claro.button.css */ + + background-image: url("form/images/commonFormArrows.png"); + background-repeat: no-repeat; + background-position: -140px 45%; +} +.larson .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner { + background-position: -35px 45%; +} +/* hover */ +.larson .dijitTimePicker .dijitUpArrowHover, .larson .dijitTimePicker .dijitDownArrowHover { + background-color: #abd6ff; +} +.larson .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner { + background-position: -175px 45%; +} +.larson .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner { + background-position: -70px 45%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker.less new file mode 100755 index 0000000..a260226 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker.less @@ -0,0 +1,124 @@ +/* Time Picker + * + * Styling the Time Picker consists of the following: + * + * 1. minor time values + * .dijitTimePickerTick - set text color, size, background color of minor values + * .dijitTimePickerTickHover - set hover style of minor time values + * dijitTimePickerTickSelected - set selected style of minor time values + * + * 2. major time values - 1:00, 2:00, times on the hour + * set text color, size, background color, left/right margins for "zoom" affect + * .dijitTimePickerMarkerHover - to set hover style of major time values + * .dijitTimePickerMarkerSelected - set selected style of major time values + * + * 3. up and down arrow buttons + * .dijitTimePicker .dijitButtonNode - background-color, border + * .dijitTimePicker .dijitUpArrowHover, .dijitTimePicker .dijitDownArrowHover - set background-color for hover state + * + * Other classes provide the fundamental structure of the TimePicker and should not be modified. + */ + +@import "variables"; + +/* override Button.css */ +.larson .dijitTimePicker .dijitButtonNode { + padding: 0 0; + .border-radius(0); +} +.larson .dijitTimePicker{ + border:1px @border-color solid; + border-top:none; + border-bottom:none; + background-color:#fff; /* TODO: useless? Appears to be overridden by settings on individual elements */ +} +.larson .dijitTimePickerItem{ + /* dijitTimePickerItem refers to both Tick's (minor values like 2:15, 2:30, 2:45) and Marker's (major values like 2PM, 3PM) */ + background-image: url("images/commonHighlight.png"); + background-position:0 -1px; + background-repeat:repeat-x; + border-top:solid 1px @border-color; + border-bottom:solid 1px @border-color; + margin-right:-1px; + margin-left:-1px; + margin-top:-1px; +} +/* to make up for lack of alpha transparency in IE6 */ +.dj_ie6 .larson .dijitTimePickerItem { + background-image: none; +} +.larson .dijitTimePickerTick { + /* minor value */ + color:@timepicker-minorvalue-text-color; + background-color:@timepicker-minorvalue-background-color; + font-size:0.818em; +} +.larson .dijitTimePickerMarker { + /* major value - 1:00, 2:00, times on the hour */ + background-color: @timepicker-majorvalue-background-color; + font-size: 1em; + white-space: nowrap; +} +.larson .dijitTimePickerTickHover, +.larson .dijitTimePickerMarkerHover, +.larson .dijitTimePickerMarkerSelected, +.larson .dijitTimePickerTickSelected { + background-color: @timepicker-value-hovered-background-color; + border:solid 1px @border-color; + margin-left:-7px; + margin-right:-7px; + color:@timepicker-value-hovered-text-color; +} +.larson .dijitTimePickerMarkerSelected, +.larson .dijitTimePickerTickSelected { + font-size: 1em; +} +.dj_ie .larson .dijitTimePickerTickHover, +.dj_ie .larson .dijitTimePickerMarkerHover, +.dj_ie .larson .dijitTimePickerMarkerSelected, +.dj_ie .larson .dijitTimePickerTickSelected { + width: 114%; +} +.dj_ie6 .larson .dijitTimePickerTickHover, +.dj_ie6 .larson .dijitTimePickerMarkerHover, +.dj_ie6 .larson .dijitTimePickerMarkerSelected, +.dj_ie6 .larson .dijitTimePickerTickSelected { + position: relative; /* creates widening of element */ + zoom: 1; /* creates widening of element */ +} +.larson .dijitTimePickerTick .dijitTimePickerItemInner { + padding:1px; + margin:0; +} +.larson .dijitTimePicker .dijitButtonNode { + border-left:none; + border-right:none; + border-color:@border-color; + background-color: @unselected-background-color; + background-image: url("images/commonHighlight.png"); + background-position:0 -1px; + background-repeat:repeat-x; +} +.dj_ie6 .larson .dijitTimePicker .dijitButtonNode { + background-image: none; +} +.larson .dijitTimePicker .dijitArrowButtonInner{ + height: 100%; /* hack claro.button.css */ + background-image: url("form/images/commonFormArrows.png"); + background-repeat: no-repeat; + background-position:-140px 45%; +} +.larson .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner{ + background-position:-35px 45%; +} +/* hover */ +.larson .dijitTimePicker .dijitUpArrowHover, +.larson .dijitTimePicker .dijitDownArrowHover { + background-color: @timepicker-arrow-hovered-background-color; +} +.larson .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner { + background-position:-175px 45%; +} +.larson .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner { + background-position:-70px 45%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker_rtl.css new file mode 100755 index 0000000..f4783ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker_rtl.css @@ -0,0 +1,9 @@ +/* TimePicker */ +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerTickHover, +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerMarkerHover, +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerMarkerSelected, +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerTickSelected { + margin-left: -6px; + margin-right: -8px; + width: 114%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker_rtl.less new file mode 100755 index 0000000..d215855 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TimePicker_rtl.less @@ -0,0 +1,12 @@ +/* TimePicker */ + +@import "variables"; + +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerTickHover, +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerMarkerHover, +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerMarkerSelected, +.dj_ie .larson .dijitTimePickerRtl .dijitTimePickerTickSelected { + margin-left:-6px; + margin-right:-8px; + width: 114%; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane.css new file mode 100755 index 0000000..2282ddb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane.css @@ -0,0 +1,73 @@ +/* TitlePane + * + * Styling TitlePane means styling the TitlePane title and its content container (dijitTitlePane) + * + * TitlePane title: + * 1. TitlePane title (default styling): + * .dijitTitlePaneTitle - TitlePane's title div style: background-color, border + * + * 2. hovered TitlePane title (ie, mouse hover on a title bar) + * .dijitTitlePaneTitleHover - styles when mouse hover on the title div + * + * 3. active TitlePane title (ie, mouse down on a title bar) + * .dijitTitlePaneTitleActive - styles when mouse down on the title div + * + * + * TitlePane Content Container: + * 1. outer/inner container: + * .dijitTitlePaneContentOuter / dijitTitlePaneContentInner - styles for the content outer div + */ +.larson .dijitTitlePaneTitle { + background-color: #efefef; + background-image: url("images/titlebar.png"); + background-repeat: repeat-x; + border: 1px solid #cccccc; + padding: 0 7px 3px 7px; + min-height: 17px; +} +.dj_ie6 .larson .dijitTitlePaneTitle { + background-image: none; +} +.larson .dijitTitlePaneTitleHover { + background-color: #e3e3e3; + border-color: #999999; +} +.larson .dijitTitlePaneTitleActive { + background-color: #dcdcdc; + border-color: #999999; + background-position: 0 -136px; +} +.larson .dijitTitlePaneTitleFocus { + margin-top: 3px; + padding-bottom: 2px; +} +.larson .dijitTitlePane .dijitArrowNode { + background-image: url('images/spriteArrows.png'); + background-repeat: no-repeat; + height: 8px; + width: 7px; +} +.larson .dijitTitlePane .dijitOpen .dijitArrowNode { + background-position: 0 0; +} +.larson .dijitTitlePane .dijitClosed .dijitArrowNode { + background-position: -14px 0; +} +.larson .dijitTitlePaneFocused .dijitTitlePaneTextNode { + color: #000000; + /* TODO: do we need this? we usually don't change text color on focus */ + +} +.larson .dijitTitlePaneContentOuter { + background: #ffffff; + border: 1px solid #cccccc; + border-top: none; +} +.larson .dijitTitlePaneContentInner { + padding: 10px; +} +.larson .dijitTitlePaneTextNode { + margin-left: 4px; + margin-right: 4px; + vertical-align: text-top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane.less new file mode 100755 index 0000000..42ce51b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane.less @@ -0,0 +1,74 @@ +/* TitlePane + * + * Styling TitlePane means styling the TitlePane title and its content container (dijitTitlePane) + * + * TitlePane title: + * 1. TitlePane title (default styling): + * .dijitTitlePaneTitle - TitlePane's title div style: background-color, border + * + * 2. hovered TitlePane title (ie, mouse hover on a title bar) + * .dijitTitlePaneTitleHover - styles when mouse hover on the title div + * + * 3. active TitlePane title (ie, mouse down on a title bar) + * .dijitTitlePaneTitleActive - styles when mouse down on the title div + * + * + * TitlePane Content Container: + * 1. outer/inner container: + * .dijitTitlePaneContentOuter / dijitTitlePaneContentInner - styles for the content outer div + */ + +@import "variables"; + +.larson .dijitTitlePaneTitle { + background-color: @unselected-background-color; // TODO: Mailed Jason, shouldn't this toggle to @selected-background-color when pane opened? + background-image: url("images/titlebar.png"); + background-repeat:repeat-x; + border:1px solid @border-color; + padding: 0 7px 3px 7px; + min-height:17px; +} +.dj_ie6 .larson .dijitTitlePaneTitle { + background-image: none; +} +.larson .dijitTitlePaneTitleHover { + background-color: @hovered-background-color; + border-color: @hovered-border-color; +} +.larson .dijitTitlePaneTitleActive { + background-color: @pressed-background-color; + border-color: @pressed-border-color; + background-position:0 -136px; +} +.larson .dijitTitlePaneTitleFocus { + margin-top:3px; + padding-bottom:2px; +} +.larson .dijitTitlePane .dijitArrowNode { + background-image: url('images/spriteArrows.png'); + background-repeat: no-repeat; + height: 8px; + width: 7px; +} +.larson .dijitTitlePane .dijitOpen .dijitArrowNode { + background-position: 0 0; +} +.larson .dijitTitlePane .dijitClosed .dijitArrowNode { + background-position: -14px 0; +} +.larson .dijitTitlePaneFocused .dijitTitlePaneTextNode { + color:@text-color; /* TODO: do we need this? we usually don't change text color on focus */ +} +.larson .dijitTitlePaneContentOuter { + background: @pane-background-color; + border:1px solid @border-color; + border-top:none; +} +.larson .dijitTitlePaneContentInner { + padding:10px; +} +.larson .dijitTitlePaneTextNode { + margin-left: 4px; + margin-right: 4px; + vertical-align:text-top; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane_rtl.css new file mode 100755 index 0000000..a077336 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane_rtl.css @@ -0,0 +1,4 @@ +/* TitlePane */ +.larson .dijitTitlePaneRtl .dijitClosed .dijitArrowNode { + background-position: -7px 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane_rtl.less new file mode 100755 index 0000000..210b2a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/TitlePane_rtl.less @@ -0,0 +1,7 @@ +/* TitlePane */ + +@import "variables"; + +.larson .dijitTitlePaneRtl .dijitClosed .dijitArrowNode { + background-position: -7px 0; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar.css new file mode 100755 index 0000000..4866e88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar.css @@ -0,0 +1,158 @@ +/* Toolbar + * + * Styling Toolbar means styling the toolbar container and the widget inside toolbar (dijitToolbar) + * + * 1. toolbar (default styling): + * .dijitToolbar - styles for outer container + * + * 2. widget inside toolbar + * .dijitToolbar .dijitButtonNode - Button widget + * .dijitComboButton - ComboButton widget + * .dijitDropDownButton - DropDownButton widget + * .dijitToggleButton - ToggleButton widget + * + * 3. hovered widget inside toolbar (ie, mouse hover on the widget inside) + * .dijitToolbar .dijitButtonNodeHover - styles for hovered Button widget + * + * 4. actived widget inside toolbar (ie, mouse down on the widget inside) + * .dijitToolbar .dijitButtonNodeActive - mouse down on Button widget + */ +.larson .dijitToolbar { + border-bottom: 1px solid #cccccc; + background-color: #efefef; + background-image: url("images/commonHighlight.png"); + background-position: 0 0; + background-repeat: repeat-x; + padding: 2px 0 2px 4px; + zoom: 1; +} +.larson .dijitToolbar label { + padding: 0 3px 0 6px; +} +/** override claro/form/Button.css **/ +.larson .dijitToolbar .dijitButtonNode { + border-width: 0; + /* on hover/active, border-->1px, padding-->1px */ + + padding: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-transition-property: background-color; + -moz-transition-property: background-color; + transition-property: background-color; + -webkit-transition-duration: 0.3s, 0.35s; + -moz-transition-duration: 0.3s, 0.35s; + transition-duration: 0.3s, 0.35s; + background-image: url("images/commonHighlight.png"); + background-position: 0 -30px; + background-repeat: repeat-x; + background-color: rgba(171, 214, 255, 0); +} +.dj_ie .larson .dijitToolbar .dijitButtonNode { + background-color: transparent; + /* for IE, which doesn't understand rgba(...) */ + +} +.dj_ie6 .larson .dijitToolbar .dijitButtonNode { + background: none; + /* because background-color: transparent above doesn't work */ + +} +.larson .dijitToolbar .dijitComboButton .dijitStretch { + /* no rounded border on side adjacent to arrow */ + + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.larson .dijitToolbar .dijitComboButton .dijitArrowButton { + /* no rounded border on side adjacent to button */ + + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.larson .dijitToolbar .dijitComboBox .dijitButtonNode { + padding: 0; +} +/* hover status */ +.larson .dijitToolbar .dijitButtonHover .dijitButtonNode, +.larson .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.larson .dijitToolbar .dijitToggleButtonHover .dijitButtonNode, +.larson .dijitToolbar .dijitComboButtonHover .dijitButtonNode { + background-position: 0 0; + border-width: 1px; + background-color: #e3e3e3; + padding: 1px; +} +.larson .dijitToolbar .dijitComboButtonHover .dijitButtonNode, .larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + background-position: 0 0; + background-color: #f4ffff; +} +.larson .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover, .larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover { + background-color: #e3e3e3; +} +/* active status */ +.larson .dijitToolbar .dijitButtonActive .dijitButtonNode, .larson .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, .larson .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + border-width: 1px; + background-color: #dcdcdc; + background-position: 0 -177px; + padding: 1px; +} +.larson .dijitToolbar .dijitComboButtonActive { + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; + border-width: 1px; + padding: 0; +} +.larson .dijitToolbar .dijitComboButtonActive .dijitButtonNode, .larson .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + background-color: #f4ffff; + background-position: 0 -177px; + padding: 2px; +} +.larson .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive { + background-color: #dcdcdc; +} +.larson .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive { + background-color: #dcdcdc; +} +/* Avoid double border between button and arrow */ +.larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton, .larson .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + border-left-width: 0; +} +.larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + padding-left: 2px; + /* since there's no left border, don't reduce from 2px --> 1px */ + +} +/* toggle button checked status */ +.larson .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode { + margin: 0; + /* remove margin and add a border */ + + border-width: 1px; + border-style: solid; + background-image: none; + border-color: #999999; + background-color: #ffffff; + padding: 1px; +} +.dj_ie6 .larson .dijitToolbar { + background-image: none; +} +.larson .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + + background: url('../../icons/images/editorIconsEnabled.png'); +} +/* Toolbar inside of disabled Editor */ +.larson .dijitDisabled .dijitToolbar { + background: none; + background-color: #efefef; + border-bottom: 1px solid #d3d3d3; +} +.larson .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner { + background-position: 0 50%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar.less new file mode 100755 index 0000000..5b92e01 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar.less @@ -0,0 +1,157 @@ +/* Toolbar + * + * Styling Toolbar means styling the toolbar container and the widget inside toolbar (dijitToolbar) + * + * 1. toolbar (default styling): + * .dijitToolbar - styles for outer container + * + * 2. widget inside toolbar + * .dijitToolbar .dijitButtonNode - Button widget + * .dijitComboButton - ComboButton widget + * .dijitDropDownButton - DropDownButton widget + * .dijitToggleButton - ToggleButton widget + * + * 3. hovered widget inside toolbar (ie, mouse hover on the widget inside) + * .dijitToolbar .dijitButtonNodeHover - styles for hovered Button widget + * + * 4. actived widget inside toolbar (ie, mouse down on the widget inside) + * .dijitToolbar .dijitButtonNodeActive - mouse down on Button widget + */ + +@import "variables"; + +.larson .dijitToolbar { + border-bottom: 1px solid @border-color; + background-color: @bar-background-color; + background-image: url("images/commonHighlight.png"); + background-position:0 0; + background-repeat:repeat-x; + padding: 2px 0 2px 4px; + zoom: 1; +} + +.larson .dijitToolbar label { + padding: 0 3px 0 6px; +} + +/** override claro/form/Button.css **/ +.larson .dijitToolbar .dijitButtonNode { + border-width: 0; /* on hover/active, border-->1px, padding-->1px */ + padding: 2px; + .border-radius(@toolbar-button-border-radius); + .box-shadow(none); + .transition-property(background-color); + .transition-duration(.3s, .35s); + + background-image: url("images/commonHighlight.png"); + background-position:0 -30px; + background-repeat:repeat-x; + background-color:rgba(171,214,255,0); +} +.dj_ie .larson .dijitToolbar .dijitButtonNode { + background-color: transparent; /* for IE, which doesn't understand rgba(...) */ +} +.dj_ie6 .larson .dijitToolbar .dijitButtonNode { + background: none; /* because background-color: transparent above doesn't work */ +} + +.larson .dijitToolbar .dijitComboButton .dijitStretch { + /* no rounded border on side adjacent to arrow */ + .border-radius(@toolbar-button-border-radius 0 0 @toolbar-button-border-radius); +} +.larson .dijitToolbar .dijitComboButton .dijitArrowButton { + /* no rounded border on side adjacent to button */ + .border-radius(0 @toolbar-button-border-radius @toolbar-button-border-radius 0); +} + +.larson .dijitToolbar .dijitComboBox .dijitButtonNode { + padding: 0; +} + +/* hover status */ +.larson .dijitToolbar .dijitButtonHover .dijitButtonNode, +.larson .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.larson .dijitToolbar .dijitToggleButtonHover .dijitButtonNode, +.larson .dijitToolbar .dijitComboButtonHover .dijitButtonNode { + background-position:0 0; + border-width:1px; + background-color: @hovered-background-color; + padding: 1px; +} +.larson .dijitToolbar .dijitComboButtonHover .dijitButtonNode, +.larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + background-position:0 0; + background-color: @toolbar-combobutton-hovered-unhoveredsection-background-color; +} +.larson .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover, +.larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover { + background-color: @hovered-background-color; +} + +/* active status */ +.larson .dijitToolbar .dijitButtonActive .dijitButtonNode, +.larson .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.larson .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + border-width: 1px; + background-color:@pressed-background-color; + background-position:0 -177px; + padding: 1px; +} +.larson .dijitToolbar .dijitComboButtonActive { + .transition-duration(.2s); + border-width: 1px; + padding: 0; +} +.larson .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.larson .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + background-color: @toolbar-combobutton-hovered-unhoveredsection-background-color; + background-position:0 -177px; + padding: 2px; +} +.larson .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive { + background-color: @pressed-background-color; +} +.larson .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive { + background-color: @pressed-background-color; +} + +/* Avoid double border between button and arrow */ +.larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton, +.larson .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + border-left-width: 0; +} +.larson .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + padding-left: 2px; /* since there's no left border, don't reduce from 2px --> 1px */ +} + +/* toggle button checked status */ +.larson .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode { + margin: 0; /* remove margin and add a border */ + border-width: 1px; + border-style: solid; + background-image: none; + border-color: @selected-border-color; + background-color: @toolbar-button-checked-background-color; + padding: 1px; +} + +.dj_ie6 .larson .dijitToolbar { + background-image: none; +} + +.larson .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + background: url('../../icons/images/editorIconsEnabled.png'); +} + +/* Toolbar inside of disabled Editor */ +.larson .dijitDisabled .dijitToolbar { + background:none; + background-color:@disabled-background-color; + border-bottom: 1px solid @disabled-border-color; +} + +.larson .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner { + background-position:0 50%; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar_rtl.css new file mode 100755 index 0000000..a6e163d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar_rtl.css @@ -0,0 +1,30 @@ +/* Toolbar RTL */ +/* Repeated rules from Toolbar.css to override rule from Button_rtl.css, which is loaded after Toolbar.css */ +.larson .dijitToolbar .dijitComboButtonRtl .dijitButtonNode { + border-width: 0; + padding: 2px; +} +.larson .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode, .larson .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode { + border-width: 1px; + padding: 1px; +} +.larson .dijitToolbar .dijitComboButtonRtl .dijitStretch { + /* no rounded border on side adjacent to arrow */ + + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.larson .dijitToolbar .dijitComboButtonRtl .dijitArrowButton { + /* no rounded border on side adjacent to button */ + + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.larson .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton, .larson .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton { + /* border between button and arrow */ + + border-left-width: 1px; + border-right-width: 0; + padding-left: 1px; + padding-right: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar_rtl.less new file mode 100755 index 0000000..32ebc26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Toolbar_rtl.less @@ -0,0 +1,32 @@ +/* Toolbar RTL */ + +@import "variables"; + +/* Repeated rules from Toolbar.css to override rule from Button_rtl.css, which is loaded after Toolbar.css */ +.larson .dijitToolbar .dijitComboButtonRtl .dijitButtonNode { + border-width: 0; + padding: 2px; +} +.larson .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode, +.larson .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode { + border-width: 1px; + padding: 1px; +} + +.larson .dijitToolbar .dijitComboButtonRtl .dijitStretch { + /* no rounded border on side adjacent to arrow */ + .border-radius(0 2px 2px 0); +} +.larson .dijitToolbar .dijitComboButtonRtl .dijitArrowButton { + /* no rounded border on side adjacent to button */ + .border-radius(2px 0 0 2px); +} + +.larson .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton, +.larson .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton { + /* border between button and arrow */ + border-left-width: 1px; + border-right-width: 0; + padding-left: 1px; + padding-right: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Tree.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/Tree.css new file mode 100755 index 0000000..16574d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Tree.css @@ -0,0 +1,134 @@ +/* Tree + * + * Styling Tree mostly means styling the TreeRow (dijitTreeRow) + * There are 4 basic states to style: + * + * Tree Row: + * 1. tree row (default styling): + * .dijitTreeRow - styles for each row of the tree + * + * 2. hovered tree row (mouse hover on a tree row) + * .dijitTreeRowHover - styles when mouse over on one row + * + * 3. active tree row (mouse down on a tree row) + * .dijitTreeRowActive - styles when mouse down on one row + * + * 4. selected tree row + * dijitTreeRowSelected - style when the row has been selected + * + * Tree Expando: + * dijitTreeExpando - the expando at the left of the text of each tree row + * + * Drag and Drop on TreeNodes: (insert line on dijitTreeContent node so it'll aligned w/ target element) + * .dijitTreeNode .dojoDndItemBefore/.dojoDndItemAfter - use border style simulate a separate line + */ +.larson .dijitTreeNode { + zoom: 1; + /* force layout on IE (TODO: may not be needed anymore) */ + +} +.larson .dijitTreeIsRoot { + background-image: none; +} +/* Styling for basic tree node (unhovered, unselected) + * Also use this styling when dropping between items on the tree (in other words, don't + * use hover effect) + */ +.larson .dijitTreeRow, .larson .dijitTreeNode .dojoDndItemBefore, .larson .dijitTreeNode .dojoDndItemAfter { + /* so insert line shows up on IE when dropping after a target element */ + + padding: 4px 1px 2px 0; + margin: 0 1px; + /* replaced by border for selected/hovered row */ + + background-color: none; + background-color: transparent; + background-color: rgba(171, 214, 255, 0); + background-image: url("images/commonHighlight.png"); + background-position: 0 0; + background-repeat: repeat-x; + border-color: rgba(118, 157, 192, 0); + border-width: 0; + -webkit-transition-property: background-color, border-color; + -moz-transition-property: background-color, border-color; + transition-property: background-color, border-color; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + transition-timing-function: ease-out; +} +.dj_ie6 .larson .dijitTreeRow { + background-image: none; +} +.larson .dijitTreeRowSelected { + background-repeat: repeat-x; + background-color: #dfdfdf; + padding: 3px 0 1px; + margin: 0; + border: solid 1px #999999; + color: #000000; +} +.larson .dijitTreeRowHover { + background-color: #e3e3e3; + padding: 3px 0 1px; + margin: 0; + border: solid 1px #999999; + color: #000000; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.larson .dijitTreeRowActive { + background-color: #dcdcdc; + background-position: 0 -177px; + padding: 3px 0 1px; + margin-left: 0; + border: solid 1px #999999; + color: #000000; +} +.dj_ie6 .larson .dijitTreeRowActive { + background-image: none; +} +.larson .dijitTreeRowFocused { + background-repeat: repeat; +} +/* expando (open/closed) icon */ +.larson .dijitTreeExpando { + background-image: url('images/treeExpandImages.png'); + width: 16px; + height: 16px; + background-position: -35px 0; + /* for dijitTreeExpandoOpened */ + +} +.dj_ie6 .larson .dijitTreeExpando { + background-image: url('images/treeExpandImages8bit.png'); +} +.larson .dijitTreeRowHover .dijitTreeExpandoOpened { + background-position: -53px 0; +} +.larson .dijitTreeExpandoClosed { + background-position: 1px 0; +} +.larson .dijitTreeRowHover .dijitTreeExpandoClosed { + background-position: -17px 0; +} +.larson .dijitTreeExpandoLeaf, .dj_ie6 .larson .dijitTreeExpandoLeaf { + background-image: none; +} +.larson .dijitTreeExpandoLoading { + background-image: url('images/loadingAnimation.gif'); +} +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.larson .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + border-top: 2px solid #769dc0; +} +.larson .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + border-bottom: 2px solid #769dc0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/Tree.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/Tree.less new file mode 100755 index 0000000..cdaae1d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/Tree.less @@ -0,0 +1,133 @@ +/* Tree + * + * Styling Tree mostly means styling the TreeRow (dijitTreeRow) + * There are 4 basic states to style: + * + * Tree Row: + * 1. tree row (default styling): + * .dijitTreeRow - styles for each row of the tree + * + * 2. hovered tree row (mouse hover on a tree row) + * .dijitTreeRowHover - styles when mouse over on one row + * + * 3. active tree row (mouse down on a tree row) + * .dijitTreeRowActive - styles when mouse down on one row + * + * 4. selected tree row + * dijitTreeRowSelected - style when the row has been selected + * + * Tree Expando: + * dijitTreeExpando - the expando at the left of the text of each tree row + * + * Drag and Drop on TreeNodes: (insert line on dijitTreeContent node so it'll aligned w/ target element) + * .dijitTreeNode .dojoDndItemBefore/.dojoDndItemAfter - use border style simulate a separate line + */ + +@import "variables"; + +.larson .dijitTreeNode { + zoom: 1; /* force layout on IE (TODO: may not be needed anymore) */ +} +.larson .dijitTreeIsRoot { + background-image: none; +} + +/* Styling for basic tree node (unhovered, unselected) + * Also use this styling when dropping between items on the tree (in other words, don't + * use hover effect) + */ +.larson .dijitTreeRow, +.larson .dijitTreeNode .dojoDndItemBefore, +.larson .dijitTreeNode .dojoDndItemAfter { + /* so insert line shows up on IE when dropping after a target element */ + padding: 4px 1px 2px 0; + margin: 0 1px; /* replaced by border for selected/hovered row */ + + background-color: none; // IE6 doesn't understand rgba() or transparent below + background-color: transparent; // IE8 doesn't understand rgba() below + background-color: rgba(171,214,255,0); // rgba() instead of transparent to prevent flash on hover fade-in + background-image: url("images/commonHighlight.png"); + background-position:0 0; + background-repeat:repeat-x; + + border-color: rgba(118,157,192,0); // rgba() instead of none to prevent flash on hover fade-in + border-width: 0; + + .transition-property(background-color, border-color); + .transition-duration(.25s); + .transition-timing-function(ease-out); +} +.dj_ie6 .larson .dijitTreeRow { + background-image: none; +} + +.larson .dijitTreeRowSelected { + background-repeat:repeat-x; + background-color:@selected-background-color; + padding: 3px 0 1px; + margin: 0; + border:solid 1px @selected-border-color; + color:@selected-text-color; +} +.larson .dijitTreeRowHover { + background-color:@hovered-background-color; + padding: 3px 0 1px; + margin: 0; + border:solid 1px @hovered-border-color; + color:@hovered-text-color; + .transition-duration(.25s); +} +.larson .dijitTreeRowActive { + background-color:@pressed-background-color; + background-position:0 -177px; + padding: 3px 0 1px; + margin-left: 0; + border:solid 1px @pressed-border-color; + color:@selected-text-color; +} +.dj_ie6 .larson .dijitTreeRowActive { + background-image: none; +} +.larson .dijitTreeRowFocused { + background-repeat: repeat; +} + +/* expando (open/closed) icon */ + +.larson .dijitTreeExpando { + background-image: url('images/treeExpandImages.png'); + width: 16px; + height: 16px; + background-position: -35px 0; /* for dijitTreeExpandoOpened */ +} +.dj_ie6 .larson .dijitTreeExpando { + background-image: url('images/treeExpandImages8bit.png'); +} +.larson .dijitTreeRowHover .dijitTreeExpandoOpened { + background-position: -53px 0; +} +.larson .dijitTreeExpandoClosed { + background-position: 1px 0; +} +.larson .dijitTreeRowHover .dijitTreeExpandoClosed { + background-position: -17px 0; +} +.larson .dijitTreeExpandoLeaf, +.dj_ie6 .larson .dijitTreeExpandoLeaf { + background-image:none; +} +.larson .dijitTreeExpandoLoading { + background-image: url('images/loadingAnimation.gif'); +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.larson .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + border-top: 2px solid @dnd-dropseparator-color; // TODO: normal separator is just 1px, why is this 2px? +} +.larson .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + border-bottom: 2px solid @dnd-dropseparator-color; // TODO: normal separator is just 1px, why is this 2px? +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/compile.js b/js/dojo-release-1.7.2-src/dijit/themes/larson/compile.js new file mode 100755 index 0000000..9edbe7e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/compile.js @@ -0,0 +1,55 @@ +// Script to process all the less files and convert them to CSS files +// Run from themes/dijit/claro like: +// +// $ node compile.js + +// Some guesses for where to find less +require.paths.unshift('/opt/less/lib', 'C:/less/lib'); + +var fs = require('fs'), // file system access + path = require('path'), // get directory from file name + less = require('less'); // less processor + +var options = { + compress: false, + optimization: 1, + silent: false +}; + +var allFiles = [].concat( + fs.readdirSync("."), + fs.readdirSync("form").map(function(fname){ return "form/"+fname; }), + fs.readdirSync("layout").map(function(fname){ return "layout/"+fname; }) + ), + lessFiles = allFiles.filter(function(name){ return name && name != "variables.less" && /\.less$/.test(name); }); + +lessFiles.forEach(function(fname){ + console.log("=== " + fname); + fs.readFile(fname, 'utf-8', function (e, data){ + if(e){ + console.error("lessc: " + e.message); + process.exit(1); + } + + new(less.Parser)({ + paths: [path.dirname(fname)], + optimization: options.optimization, + filename: fname + }).parse(data, function(err, tree){ + if(err){ + less.writeError(err, options); + process.exit(1); + }else{ + try{ + var css = tree.toCSS({ compress: options.compress }), + outputFname = fname.replace('.less', '.css'); + fd = fs.openSync(outputFname, "w"); + fs.writeSync(fd, css, 0, "utf8"); + }catch(e){ + less.writeError(e, options); + process.exit(2); + } + } + }); + }); +}); diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/document.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/document.css new file mode 100755 index 0000000..887a191 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/document.css @@ -0,0 +1,41 @@ +@import url("../../../dojo/resources/dojo.css"); +/* ======= Styling for the document itself (overriding dojo.css) ======== */ +.larson { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: .688em; + color: #131313; +} +/* Headings */ +.larson h1 { + font-size: 1.545em; + margin-bottom: 0.727em; +} +.larson h2 { + font-size: 1.364em; + line-height: 1.455em; + margin-top: 1em; + margin-bottom: 0.60em; + font-weight: normal; +} +.larson h3, +.larson h4, +.larson h5, +.larson h6 { + font-size: 1.091em; + font-weight: normal; +} +/* paragraphs, quotes and lists */ +.larson p { + line-height: 1.3em; +} +/* pre and code */ +.larson pre, .larson code { + font-family: inherit; + background-color: #efefef; + border: 1px solid #d3d3d3; +} +/* tables */ +.larson table.dojoTabular thead, .larson table.dojoTabular tfoot { + background-color: #efefef; + border: 1px solid #d3d3d3; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/document.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/document.less new file mode 100755 index 0000000..81fa9d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/document.less @@ -0,0 +1,45 @@ +/* ======= Styling for the document itself (overriding dojo.css) ======== */ + +@import "variables"; +@import url("../../../dojo/resources/dojo.css"); + +.larson { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: .688em; + color: @document-text-color; +} + +/* Headings */ +.larson h1 { + font-size: 1.545em; + margin-bottom:0.727em; +} +.larson h2 { + font-size: 1.364em; + line-height: 1.455em; + margin-top:1em; + margin-bottom:0.60em; + font-weight: normal; +} +.larson h3, .larson h4, .larson h5, .larson h6 { + font-size:1.091em; + font-weight: normal; +} + +/* paragraphs, quotes and lists */ +.larson p { + line-height: 1.3em; +} + +/* pre and code */ +.larson pre, .larson code { + font-family:inherit; + background-color: @document-shadedsection-background-color; + border: 1px solid @document-border-color; +} + +/* tables */ +.larson table.dojoTabular thead, .larson table.dojoTabular tfoot { + background-color: @document-shadedsection-background-color; + border: 1px solid @document-border-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button.css new file mode 100755 index 0000000..d0a9a67 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button.css @@ -0,0 +1,165 @@ +/* Button | DropDownButton | ComboButton | ToggleButton + * + * Styling Buttons mainly includes: + * + * 1. Containers + * .dijitButton + * .dijitDropDownButton + * .dijitComboButton + * .dijitButtonNode - common button/arrow wrapper shared across all three button types + * + * 2. Button text + * .dijitButtonText + * + * 3. Arrows - only for DropDownButton and ComboButton + * There are total four directions arrows - down, left, right, up: + * .dijitArrowButtonInner - down arrow by default + * .dijitLeftArrowButton .dijitArrowButtonInner - left arrow + * .dijitRightArrowButton .dijitArrowButtonInner - right arrow + * .dijitUpArrowButton .dijitArrowButtonInner - up arrow + * + * 4. States - Hover, Active, Disabled, e.g. + * .dijitButtonHover .dijitButtonNode + * .dijitButtonActive .dijitButtonNode + * .dijitButtonDisabled .dijitButtonNode + * + * .dijitDisabled .dijitArrowButtonInner - disabled arrow states + */ +.larson .dijitButtonNode { + /* rules for dijit.form.*Button widgets and arrow nodes on ComboBox, Spinner etc. */ + + -webkit-transition-property: background-color; + -moz-transition-property: background-color; + transition-property: background-color; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; +} +.larson .dijitButton .dijitButtonNode, +.larson .dijitDropDownButton .dijitButtonNode, +.larson .dijitComboButton .dijitButtonNode, +.larson .dijitToggleButton .dijitButtonNode { + /* rules for the dijit.form.*Button widgets (see also ComboButton section below) */ + + border: 1px solid #999999; + padding: 7px; + background-color: #dfdfdf; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); +} +.larson .dijitComboButton .dijitArrowButton { + border-left-width: 0; + padding: 4px 2px 4px 2px; + /* TODO: still needed? */ + +} +/*arrow styles for down/up/left/right directions*/ +.larson .dijitArrowButtonInner { + width: 15px; + height: 15px; + margin: 0 auto; + background-image: url("images/buttonArrows.png"); + background-repeat: no-repeat; + background-position: -51px 53%; +} +.larson .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -77px 53%; +} +.larson .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -26px 53%; +} +.larson .dijitUpArrowButton .dijitArrowButtonInner { + background-position: 0 53%; +} +.larson .dijitDisabled .dijitArrowButtonInner { + background-position: -151px 53%; +} +.larson .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -177px 53%; +} +.larson .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -126px 53%; +} +.larson .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -100px 53%; +} +.larson .dijitButtonText { + padding: 0 0.3em; + text-align: center; + color: #000000; +} +/* hover status */ +.larson .dijitButtonHover .dijitButtonNode, +.larson .dijitDropDownButtonHover .dijitButtonNode, +.larson .dijitComboButton .dijitButtonNodeHover, +.larson .dijitComboButton .dijitDownArrowButtonHover, +.larson .dijitToggleButtonHover .dijitButtonNode { + border-color: #999999; + background-color: #cdcdcd; + color: #fff; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +/* checked status */ +.larson .dijitButtonActive .dijitButtonNode, +.larson .dijitDropDownButtonActive .dijitButtonNode, +.larson .dijitComboButtonActive .dijitButtonNode, +.larson .dijitToggleButtonActive .dijitButtonNode { + background-color: #cdcdcd; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +/* disabled status */ +.larson .dijitButtonDisabled, +.larson .dijitDropDownButtonDisabled, +.larson .dijitComboButtonDisabled, +.larson .dijitToggleButtonDisabled { + background-image: none; + outline: none; +} +.larson .dijitButtonDisabled .dijitButtonNode, +.larson .dijitDropDownButtonDisabled .dijitButtonNode, +.larson .dijitComboButtonDisabled .dijitButtonNode, +.larson .dijitToggleButtonDisabled .dijitButtonNode { + background-position: 0 -149px; + background-color: #efefef; + border: solid 1px #efefef; + color: #818181; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); +} +.larson .dijitComboButtonDisabled .dijitArrowButton { + border-left-width: 0; +} +.larson .dijitButtonDisabled .dijitButtonText, +.larson .dijitDropDownButtonDisabled .dijitButtonText, +.larson .dijitComboButtonDisabled .dijitButtonText, +.larson .dijitToggleButtonDisabled .dijitButtonText { + color: #999; +} +/* for ComboButton */ +.larson table.dijitComboButton { + border-collapse: separate; + /* override dijit.css so that ComboBox rounded corners work */ + +} +.dj_ie6 .larson .dijitButtonNode { + background-image: none; +} +.larson .dijitComboButton .dijitStretch { + -moz-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.larson .dijitComboButton .dijitArrowButton { + -moz-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button.less new file mode 100755 index 0000000..614b962 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button.less @@ -0,0 +1,160 @@ +/* Button | DropDownButton | ComboButton | ToggleButton + * + * Styling Buttons mainly includes: + * + * 1. Containers + * .dijitButton + * .dijitDropDownButton + * .dijitComboButton + * .dijitButtonNode - common button/arrow wrapper shared across all three button types + * + * 2. Button text + * .dijitButtonText + * + * 3. Arrows - only for DropDownButton and ComboButton + * There are total four directions arrows - down, left, right, up: + * .dijitArrowButtonInner - down arrow by default + * .dijitLeftArrowButton .dijitArrowButtonInner - left arrow + * .dijitRightArrowButton .dijitArrowButtonInner - right arrow + * .dijitUpArrowButton .dijitArrowButtonInner - up arrow + * + * 4. States - Hover, Active, Disabled, e.g. + * .dijitButtonHover .dijitButtonNode + * .dijitButtonActive .dijitButtonNode + * .dijitButtonDisabled .dijitButtonNode + * + * .dijitDisabled .dijitArrowButtonInner - disabled arrow states + */ + +@import "../variables"; + +.larson .dijitButtonNode { + /* rules for dijit.form.*Button widgets and arrow nodes on ComboBox, Spinner etc. */ + .transition-property(background-color); + .transition-duration(.3s); +} + +.larson .dijitButton .dijitButtonNode, +.larson .dijitDropDownButton .dijitButtonNode, +.larson .dijitComboButton .dijitButtonNode, +.larson .dijitToggleButton .dijitButtonNode { + /* rules for the dijit.form.*Button widgets (see also ComboButton section below) */ + border: 1px solid @button-border-color; + padding: 7px; + background-color: @button-background-color; + .border-radius(@button-border-radius); + .box-shadow(0 1px 1px rgba(0,0,0,0.15)); +} + +.larson .dijitComboButton .dijitArrowButton { + border-left-width: 0; + padding: 4px 2px 4px 2px; /* TODO: still needed? */ +} + +/*arrow styles for down/up/left/right directions*/ +.larson .dijitArrowButtonInner { + width: 15px; + height: 15px; + margin: 0 auto; + background-image:url("images/buttonArrows.png"); + background-repeat:no-repeat; + background-position:-51px 53%; +} +.larson .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -77px 53%; +} +.larson .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -26px 53%; +} +.larson .dijitUpArrowButton .dijitArrowButtonInner { + background-position: 0 53%; +} +.larson .dijitDisabled .dijitArrowButtonInner { + background-position: -151px 53%; +} +.larson .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -177px 53%; +} +.larson .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -126px 53%; +} +.larson .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -100px 53%; +} + +.larson .dijitButtonText { + padding: 0 0.3em; + text-align: center; + color: #000000; +} + + + + + +/* hover status */ +.larson .dijitButtonHover .dijitButtonNode, +.larson .dijitDropDownButtonHover .dijitButtonNode, +.larson .dijitComboButton .dijitButtonNodeHover, +.larson .dijitComboButton .dijitDownArrowButtonHover, +.larson .dijitToggleButtonHover .dijitButtonNode { + border-color: @button-border-color; + background-color: @button-hovered-background-color; + color:#fff; + .transition-duration(.2s); +} + +/* checked status */ +.larson .dijitButtonActive .dijitButtonNode, +.larson .dijitDropDownButtonActive .dijitButtonNode, +.larson .dijitComboButtonActive .dijitButtonNode, +.larson .dijitToggleButtonActive .dijitButtonNode { + background-color: @button-pressed-background-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); + .transition-duration(.1s); +} + +/* disabled status */ +.larson .dijitButtonDisabled, +.larson .dijitDropDownButtonDisabled, +.larson .dijitComboButtonDisabled, +.larson .dijitToggleButtonDisabled { + background-image: none; + outline: none; +} + +.larson .dijitButtonDisabled .dijitButtonNode, +.larson .dijitDropDownButtonDisabled .dijitButtonNode, +.larson .dijitComboButtonDisabled .dijitButtonNode, +.larson .dijitToggleButtonDisabled .dijitButtonNode { + background-position:0 -149px; + background-color: @disabled-background-color; + border: solid 1px @disabled-background-color; + color: @disabled-text-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); +} +.larson .dijitComboButtonDisabled .dijitArrowButton{ + border-left-width: 0; +} +.larson .dijitButtonDisabled .dijitButtonText, +.larson .dijitDropDownButtonDisabled .dijitButtonText, +.larson .dijitComboButtonDisabled .dijitButtonText, +.larson .dijitToggleButtonDisabled .dijitButtonText{ + color: #999; +} + +/* for ComboButton */ +.larson table.dijitComboButton { + border-collapse: separate; /* override dijit.css so that ComboBox rounded corners work */ +} + +.dj_ie6 .larson .dijitButtonNode { + background-image: none; +} + +.larson .dijitComboButton .dijitStretch { + .border-radius(@button-border-radius 0 0 @button-border-radius); +} +.larson .dijitComboButton .dijitArrowButton { + .border-radius(0 @button-border-radius @button-border-radius 0); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button_rtl.css new file mode 100755 index 0000000..79dcf0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button_rtl.css @@ -0,0 +1,13 @@ +/* Combo Button */ +.larson .dijitComboButtonRtl .dijitStretch { + -moz-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.larson .dijitComboButtonRtl .dijitArrowButton { + -moz-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; + padding: 3px 0 4px; + border-left-width: 1px; + border-right-width: 0; +} +/* End Combo Button */ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button_rtl.less new file mode 100755 index 0000000..cd4fa3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Button_rtl.less @@ -0,0 +1,16 @@ +@import "../variables"; + +/* Combo Button */ + +.larson .dijitComboButtonRtl .dijitStretch { + .border-radius(0 @button-border-radius @button-border-radius 0); +} + +.larson .dijitComboButtonRtl .dijitArrowButton { + .border-radius(@button-border-radius 0 0 @button-border-radius); + padding:3px 0 4px; + border-left-width: 1px; + border-right-width: 0; +} + +/* End Combo Button */ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Checkbox.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Checkbox.css new file mode 100755 index 0000000..486dc74 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Checkbox.css @@ -0,0 +1,71 @@ +/* CheckBox + * + * Styling CheckBox mainly includes: + * + * 1. Containers + * .dijitCheckBox|.dijitCheckBoxIcon - for border, padding, width|height and background image + * + * 2. CheckBox within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitCheckBoxChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitCheckBoxHover|.dijitCheckBoxCheckedHover - for background image + * + * 5. Disabled state + * .dijitCheckBoxDisabled|.dijitCheckBoxCheckedDisabled - for background image + */ +.larson .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.png'); +} +.dj_ie6 .larson .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.gif'); +} +.larson .dijitCheckBox, .larson .dijitCheckBoxIcon { + background-image: url('images/checkboxRadioButtonStates.png'); + /* checkbox sprite image */ + + background-repeat: no-repeat; + width: 15px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} +.dj_ie6 .larson .dijitCheckBox, .dj_ie6 .larson .dijitCheckBoxIcon { + background-image: url('images/checkboxAndRadioButtons_IE6.png'); + /* checkbox sprite image */ + +} +.larson .dijitCheckBox, .larson .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + + background-position: -15px; +} +.larson .dijitCheckBoxChecked, .larson .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + + background-position: 0; +} +.larson .dijitCheckBoxDisabled { + /* disabled */ + + background-position: -75px; +} +.larson .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + + background-position: -60px; +} +.larson .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + + background-position: -45px; +} +.larson .dijitCheckBoxCheckedHover { + /* hovering over an checked enabled checkbox */ + + background-position: -30px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Checkbox.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Checkbox.less new file mode 100755 index 0000000..8d3ea38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Checkbox.less @@ -0,0 +1,79 @@ +/* CheckBox + * + * Styling CheckBox mainly includes: + * + * 1. Containers + * .dijitCheckBox|.dijitCheckBoxIcon - for border, padding, width|height and background image + * + * 2. CheckBox within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitCheckBoxChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitCheckBoxHover|.dijitCheckBoxCheckedHover - for background image + * + * 5. Disabled state + * .dijitCheckBoxDisabled|.dijitCheckBoxCheckedDisabled - for background image + */ + +@import "../variables"; + +.larson .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.png'); +} + +.dj_ie6 .larson .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.gif'); +} + +.larson .dijitCheckBox, +.larson .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url('images/checkboxRadioButtonStates.png'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 15px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .larson .dijitCheckBox, +.dj_ie6 .larson .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url('images/checkboxAndRadioButtons_IE6.png'); /* checkbox sprite image */ +} + +.larson .dijitCheckBox, +.larson .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -15px; +} + +.larson .dijitCheckBoxChecked, +.larson .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: -0; +} + +.larson .dijitCheckBoxDisabled { + /* disabled */ + background-position: -75px; +} + +.larson .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -60px; +} + +.larson .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -45px; +} + +.larson .dijitCheckBoxCheckedHover { + /* hovering over an checked enabled checkbox */ + background-position: -30px; +} + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common.css new file mode 100755 index 0000000..aaa1b43 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common.css @@ -0,0 +1,161 @@ +/* claro/form/Common.css */ +/*========================= common css =========================*/ +/* 'dijitTextBox' refers to 'dijit(TextBox|DateTextBox|CurrencyTextBox|...)' */ +.larson .dijitTextBoxError .dijitValidationContainer { + background-color: #d46464; + background-image: url('images/error.png'); + background-position: top center; + border: solid #d46464 0; + border-left-width: 1px; + width: 9px; +} +.larson .dijitTextBoxError .dijitValidationIcon { + width: 0; + background-color: transparent !important; + /* so the INPUT doesn't obscure the border in rtl+a11y */ + +} +/* Padding for the input area of TextBox based widgets, and corresponding padding for the + * down arrow button and the placeholder. placeholder is explicitly listed because + * dijitPlaceHolder is absolutely positioned, so padding set on dijitInputField + * won't affect it + */ +.larson .dijitTextArea, .larson .dijitInputField .dijitPlaceHolder { + padding: 2px; +} +.larson .dijitTextBox .dijitInputField { + padding: 1px 2px; +} +.dj_gecko .larson .dijitTextBox .dijitInputInner, .dj_webkit .larson .dijitTextBox .dijitInputInner { + padding: 1px; +} +.larson .dijitTextBox, .larson .dijitTextBox .dijitButtonNode { + /* color for (outer) border on *TextBox widgets, and border between input and buttons on ComboBox and Spinner */ + + border-color: #999999; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; +} +.larson .dijitTextBox { + background-color: #ffffff; +} +/* hover */ +.larson .dijitTextBoxHover, .larson .dijitTextBoxHover .dijitButtonNode { + border-color: #999999; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.larson .dijitTextBoxHover { + background-color: #efefef; + background-repeat: repeat-x; +} +/* error state */ +.larson .dijitTextBoxError, .larson .dijitTextBoxError .dijitButtonNode { + border-color: #d46464; +} +.larson .dijitTextBoxError, .larson .dijitTextBoxError .dijitInputContainer { + background-color: #ffffff; +} +/* focused state */ +.larson .dijitTextBoxFocused, .larson .dijitTextBoxFocused .dijitButtonNode { + border-color: #999999; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.larson .dijitTextBoxFocused { + background-color: #ffffff; + background-image: url('images/textBox_back.png'); + background-repeat: repeat-x; +} +.larson .dijitTextBoxFocused .dijitInputContainer { + background: #ffffff; +} +.larson .dijitTextBoxErrorFocused, .larson .dijitTextBoxErrorFocused .dijitButtonNode { + border-color: #ce4f4f; +} +/* disabled state */ +.larson .dijitTextBoxDisabled, .larson .dijitTextBoxDisabled .dijitButtonNode { + border-color: #d3d3d3; +} +.larson .dijitTextBoxDisabled, .larson .dijitTextBoxDisabled .dijitInputContainer { + background-color: #efefef; + background-image: none; + color: #818181; +} +/*========================= for special widgets =========================*/ +/* Input boxes with an arrow (for a drop down) */ +.larson .dijitComboBox .dijitArrowButtonInner { + background-image: url("images/commonFormArrows.png"); + background-position: -35px 53%; + background-repeat: no-repeat; + margin: 0; + width: 16px; + border: 1px solid rgba(255, 255, 255, 0); +} +.larson .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} +.larson .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} +/* Add 1px vertical padding to the where user types and the validation icon, + to match the 1px border on arrow button */ +.larson .dijitTextBox .dijitInputInner, .larson .dijitTextBox .dijitValidationContainer { + padding: 1px 0; +} +.larson .dijitComboBox .dijitButtonNode { + background-color: #efefef; + background-repeat: repeat-x; +} +/* Arrow "hover" effect: + * The arrow button should change color whenever the mouse is in a position such that clicking it + * will toggle the drop down. That's either (1) anywhere over the ComboBox or (2) over the arrow + * button, depending on the openOnClick setting for the widget. + */ +.larson .dijitComboBoxOpenOnClickHover .dijitButtonNode, .larson .dijitComboBox .dijitDownArrowButtonHover { + background-color: #d4d4d4; +} +.larson .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner, .larson .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position: -70px 53%; +} +/* Arrow Button change when drop down is open */ +.larson .dijitComboBox .dijitHasDropDownOpen { + background-color: #dcdcdc; + background-position: 0 -177px; + padding: 1px; +} +.larson .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + background-position: -70px 53%; + border: 0 none; +} +/* disabled state */ +.larson div.dijitComboBoxDisabled .dijitArrowButtonInner { + /* specific selector set to override background-position setting from Button.js + * (.larson .dijitComboBoxDisabled .dijitArrowButtonInner) */ + + background-position: 0 50%; + background-color: #efefef; +} +/*========================= hacks for browsers =========================*/ +/* it seems the input[type="hidden"] has a height (16px) too... this may cause the widget's height calculate error */ +.dj_ff3 .larson .dijitInputField input[type="hidden"] { + display: none; + height: 0; + width: 0; +} +/* ie6 doesn't support transparent background img */ +.dj_ie6 .larson .dijitTextBox, .dj_ie6 .larson .dijitComboBox .dijitButtonNode { + background-image: none; +} +.dj_borderbox .larson .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + width: 18px; +} +.dj_borderbox .larson .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner { + width: 16px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common.less new file mode 100755 index 0000000..c4438b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common.less @@ -0,0 +1,192 @@ +/* claro/form/Common.css */ + +/*========================= common css =========================*/ + +@import "../variables"; + +/* 'dijitTextBox' refers to 'dijit(TextBox|DateTextBox|CurrencyTextBox|...)' */ + +.larson .dijitTextBoxError .dijitValidationContainer { + background-color: @erroricon-background-color; + background-image: url('images/error.png'); + background-position: top center; + border: solid @erroricon-background-color 0; + border-left-width: 1px; + width: 9px; +} +.larson .dijitTextBoxError .dijitValidationIcon { + width: 0; + background-color: transparent !important; /* so the INPUT doesn't obscure the border in rtl+a11y */ +} + +/* Padding for the input area of TextBox based widgets, and corresponding padding for the + * down arrow button and the placeholder. placeholder is explicitly listed because + * dijitPlaceHolder is absolutely positioned, so padding set on dijitInputField + * won't affect it + */ +.larson .dijitTextArea, +.larson .dijitInputField .dijitPlaceHolder { + padding: @textbox-padding; +} +.larson .dijitTextBox .dijitInputField { + // Subtract 1px from top/bottom because we add 1px to other nodes, see rules below. + // Although we are theoretically only adding 1px to top/bottom browsers seem to pad inputs by 1px on left/right, + // although that varies by so compensate for that too. + padding: @textbox-padding - 1px @textbox-padding; +} +.dj_gecko .larson .dijitTextBox .dijitInputInner, +.dj_webkit .larson .dijitTextBox .dijitInputInner { + // Although we are theoretically only adding 1px to top/bottom, some browsers seem to pad inputs by 1px on left/right, + // so compensate for that too. + padding: @textbox-padding - 1px; +} + +.larson .dijitTextBox, +.larson .dijitTextBox .dijitButtonNode { + /* color for (outer) border on *TextBox widgets, and border between input and buttons on ComboBox and Spinner */ + border-color: @button-border-color; + .transition-property(background-color, border); + .transition-duration(.35s); +} +.larson .dijitTextBox { + background-color: @textbox-background-color; +} + +/* hover */ +.larson .dijitTextBoxHover, +.larson .dijitTextBoxHover .dijitButtonNode { + border-color: @hovered-border-color; + .transition-duration(.25s); +} +.larson .dijitTextBoxHover { + background-color: @textbox-hovered-background-color; + background-repeat: repeat-x; +} + +/* error state */ +.larson .dijitTextBoxError, +.larson .dijitTextBoxError .dijitButtonNode { + border-color: @error-border-color; +} +.larson .dijitTextBoxError, +.larson .dijitTextBoxError .dijitInputContainer { + background-color: @textbox-error-background-color; +} + +/* focused state */ +.larson .dijitTextBoxFocused, +.larson .dijitTextBoxFocused .dijitButtonNode { + border-color:@focused-border-color; + .transition-duration(.1s); +} +.larson .dijitTextBoxFocused { + background-color: @textbox-focused-background-color; + background-image: url('images/textBox_back.png'); + background-repeat: repeat-x; +} +.larson .dijitTextBoxFocused .dijitInputContainer { + background: @textbox-focused-background-color; +} + +.larson .dijitTextBoxErrorFocused, +.larson .dijitTextBoxErrorFocused .dijitButtonNode { + border-color: @error-focused-border-color; +} + +/* disabled state */ +.larson .dijitTextBoxDisabled, +.larson .dijitTextBoxDisabled .dijitButtonNode { + border-color: @disabled-border-color; +} +.larson .dijitTextBoxDisabled, +.larson .dijitTextBoxDisabled .dijitInputContainer { + background-color: @textbox-disabled-background-color; + background-image: none; + color: @disabled-text-color; +} + +/*========================= for special widgets =========================*/ + +/* Input boxes with an arrow (for a drop down) */ + +.larson .dijitComboBox .dijitArrowButtonInner { + background-image: url("images/commonFormArrows.png"); + background-position:-35px 53%; + background-repeat: no-repeat; + margin: 0; + width:16px; + border: 1px solid rgba(255, 255, 255, 0); // white gutter around the arrow button +} + +.larson .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} + +.larson .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} + +/* Add 1px vertical padding to the where user types and the validation icon, + to match the 1px border on arrow button */ +.larson .dijitTextBox .dijitInputInner, +.larson .dijitTextBox .dijitValidationContainer { + padding: 1px 0; +} + +.larson .dijitComboBox .dijitButtonNode { + background-color: @arrowbutton-background-color; + background-repeat:repeat-x; +} + +/* Arrow "hover" effect: + * The arrow button should change color whenever the mouse is in a position such that clicking it + * will toggle the drop down. That's either (1) anywhere over the ComboBox or (2) over the arrow + * button, depending on the openOnClick setting for the widget. + */ +.larson .dijitComboBoxOpenOnClickHover .dijitButtonNode, +.larson .dijitComboBox .dijitDownArrowButtonHover { + background-color:@arrowbutton-hovered-background-color; +} +.larson .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner, +.larson .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position:-70px 53%; +} + +/* Arrow Button change when drop down is open */ +.larson .dijitComboBox .dijitHasDropDownOpen { // .dijitHasDropDown is on dijitArrowButton node + background-color: @pressed-background-color; + background-position:0 -177px; + padding: 1px; // Since no border on arrow button (see rule below) +} +.larson .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + background-position:-70px 53%; + border: 0 none; +} + +/* disabled state */ +.larson div.dijitComboBoxDisabled .dijitArrowButtonInner { + /* specific selector set to override background-position setting from Button.js + * (.larson .dijitComboBoxDisabled .dijitArrowButtonInner) */ + background-position:0 50%; + background-color:@disabled-background-color; +} + +/*========================= hacks for browsers =========================*/ +/* it seems the input[type="hidden"] has a height (16px) too... this may cause the widget's height calculate error */ +.dj_ff3 .larson .dijitInputField input[type="hidden"] { + display: none; + height: 0; + width: 0; +} + +/* ie6 doesn't support transparent background img */ +.dj_ie6 .larson .dijitTextBox, +.dj_ie6 .larson .dijitComboBox .dijitButtonNode { + background-image: none; +} +.dj_borderbox .larson .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + width:18px; // quirks mode means border-box sizing, so 18px with the border (same as 16px without border) +} +.dj_borderbox .larson .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner { + width:16px; // when no border, then back to 16px just like content-box sizing +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common_rtl.css new file mode 100755 index 0000000..ccd2620 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common_rtl.css @@ -0,0 +1,10 @@ +/* claro/form/Common_rtl.css */ +/*claro should not have the icon on the container +.larson .dijitTextBoxRtlError .dijitValidationIcon { + border-left-width: 0; + border-right-width: 1px; +}*/ +.larson .dijitTextBoxRtlError .dijitValidationContainer { + border-left-width: 0; + border-right-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common_rtl.less new file mode 100755 index 0000000..c17933f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Common_rtl.less @@ -0,0 +1,13 @@ +/* claro/form/Common_rtl.css */ + +@import "../variables"; + +/*claro should not have the icon on the container +.larson .dijitTextBoxRtlError .dijitValidationIcon { + border-left-width: 0; + border-right-width: 1px; +}*/ +.larson .dijitTextBoxRtlError .dijitValidationContainer { + border-left-width: 0; + border-right-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/NumberSpinner.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/NumberSpinner.css new file mode 100755 index 0000000..f4f984b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/NumberSpinner.css @@ -0,0 +1,138 @@ +/* NumberSpinner - namespace "dijitSpinner" + * + * Styling NumberSpinner mainly includes: + * + * 1. Arrows + * Outer containers: .dijitSpinnerButtonContainer|.dijitSpinnerButtonInner - for border, padding and position + * Arrows: .dijitArrowButton|.dijitUpArrowButton.|dijitDownArrowButton + * Inner container: .dijitArrowButtonInner - for border, padding, width|height and background image + * + * 2. Hover state + * .dijitUpArrowButtonHover|.dijitDownArrowButtonHover .* - for background color|image + * + * 3. Active state + * .dijitUpArrowButtonActive|.dijitDownArrowButtonActive .* - for border, padding, margin and background color|image + * + * 4. Focused state + * .dijitSpinnerFocused .* - for background color|image + * + * 5. Disabled state + * .dijitSpinnerDisabled .* - for background color|image + */ +.larson .dijitSpinnerButtonContainer { + overflow: hidden; + position: relative; + width: auto; + padding: 0 2px; +} +.larson .dijitSpinnerButtonContainer .dijitSpinnerButtonInner { + border-width: 1px 0; + /* reserve space to match the claro combobox button border with border and not padding to make IE happier */ + + border-style: solid none; +} +/* button */ +.larson .dijitSpinner .dijitArrowButton { + width: auto; + background-color: #efefef; + background-image: url("images/formHighlight.png"); + background-position: 0 0; + background-repeat: repeat-x; + overflow: hidden; +} +.dj_iequirks .larson .dijitSpinner .dijitArrowButton { + overflow: visible; + /* 0 height w/o this */ + +} +.larson .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +/* up & down button icons */ +.larson .dijitSpinner .dijitArrowButtonInner { + border: solid 1px #ffffff; + border-bottom-width: 0; + /* 2 top borders = 1 top+bottom border in ComboBox */ + + background-image: url("images/commonFormArrows.png"); + background-repeat: no-repeat; + height: 100%; + width: 15px; + padding-left: 1px; + padding-right: 1px; + /* for up arrow */ + + background-position: -139px center; + /* override button.css (TODO: move to Common.css since ComboBox needs this too) */ + + display: block; + margin: -1px 0 -1px 0; + /* compensate for inner border */ + +} +.dj_ie6 .larson .dijitSpinner .dijitArrowButtonInner, .dj_ie7 .larson .dijitSpinner .dijitArrowButtonInner { + margin-top: 0; + /* since its bottom aligned */ + +} +.dj_iequirks .larson .dijitSpinner .dijitArrowButtonInner { + width: 19px; +} +.larson .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + background-position: -34px; +} +.larson .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} +/** hover & focused status **/ +.larson .dijitUpArrowButtonActive, .larson .dijitDownArrowButtonActive { + background-color: #d4d4d4; +} +.larson .dijitSpinner .dijitUpArrowButtonHover, .larson .dijitSpinner .dijitDownArrowButtonHover, .larson .dijitSpinnerFocused .dijitArrowButton { + background-color: #d4d4d4; +} +.larson .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner { + background-position: -174px; +} +.larson .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position: -69px; +} +.larson .dijitSpinnerFocused { + background-color: #ffffff; + background-image: none; +} +/* mouse down status */ +.larson .dijitSpinner .dijitDownArrowButtonActive, .larson .dijitSpinner .dijitUpArrowButtonActive { + background-color: #7dbefa; + background-position: 0 -177px; +} +.larson .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner, .larson .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + /* hide inner border while button is depressed */ + + border: 0; + padding: 1px; + margin-right: 2px; + margin-bottom: 1px; +} +.larson .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner { + background-position: -173px; +} +.larson .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + background-position: -68px; +} +/* disabled */ +.larson .dijitSpinnerDisabled .dijitArrowButtonInner { + background-color: #efefef; +} +.larson .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -104px; +} +.larson .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner { + background-position: 1px; +} +/** hacks for browsers **/ +/* for IE 7, when div is enlarged, + * should be no empty space between dijitInputLayoutContainer and dijitSpinner*/ +.dj_ie7 .larson .dijitSpinner { + overflow: visible; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/NumberSpinner.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/NumberSpinner.less new file mode 100755 index 0000000..f594ca2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/NumberSpinner.less @@ -0,0 +1,150 @@ +/* NumberSpinner - namespace "dijitSpinner" + * + * Styling NumberSpinner mainly includes: + * + * 1. Arrows + * Outer containers: .dijitSpinnerButtonContainer|.dijitSpinnerButtonInner - for border, padding and position + * Arrows: .dijitArrowButton|.dijitUpArrowButton.|dijitDownArrowButton + * Inner container: .dijitArrowButtonInner - for border, padding, width|height and background image + * + * 2. Hover state + * .dijitUpArrowButtonHover|.dijitDownArrowButtonHover .* - for background color|image + * + * 3. Active state + * .dijitUpArrowButtonActive|.dijitDownArrowButtonActive .* - for border, padding, margin and background color|image + * + * 4. Focused state + * .dijitSpinnerFocused .* - for background color|image + * + * 5. Disabled state + * .dijitSpinnerDisabled .* - for background color|image + */ + +@import "../variables"; + +.larson .dijitSpinnerButtonContainer { + overflow: hidden; + position: relative; + width: auto; + padding: 0 2px; +} +.larson .dijitSpinnerButtonContainer .dijitSpinnerButtonInner { + border-width: 1px 0; /* reserve space to match the claro combobox button border with border and not padding to make IE happier */ + border-style: solid none; +} + +/* button */ +.larson .dijitSpinner .dijitArrowButton { + width:auto; + background-color: @arrowbutton-background-color; + background-image: url("images/formHighlight.png"); + background-position:0 0; + background-repeat:repeat-x; + overflow: hidden; +} +.dj_iequirks .larson .dijitSpinner .dijitArrowButton { + overflow: visible; /* 0 height w/o this */ +} + +.larson .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +/* up & down button icons */ +.larson .dijitSpinner .dijitArrowButtonInner { + border:solid 1px @arrowbutton-inner-border-color; + border-bottom-width: 0; /* 2 top borders = 1 top+bottom border in ComboBox */ + background-image: url("images/commonFormArrows.png"); + background-repeat: no-repeat; + height: 100%; + width:15px; + padding-left: 1px; + padding-right: 1px; + + /* for up arrow */ + background-position:-139px center; + + /* override button.css (TODO: move to Common.css since ComboBox needs this too) */ + display: block; + margin: -1px 0 -1px 0; /* compensate for inner border */ +} + +.dj_ie6 .larson .dijitSpinner .dijitArrowButtonInner, +.dj_ie7 .larson .dijitSpinner .dijitArrowButtonInner { + margin-top: 0; /* since its bottom aligned */ +} + +.dj_iequirks .larson .dijitSpinner .dijitArrowButtonInner { + width: 19px; +} +.larson .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + background-position:-34px; +} +.larson .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} + +/** hover & focused status **/ + +.larson .dijitUpArrowButtonActive, +.larson .dijitDownArrowButtonActive { + background-color:@arrowbutton-pressed-background-color; +} + +.larson .dijitSpinner .dijitUpArrowButtonHover, +.larson .dijitSpinner .dijitDownArrowButtonHover, +.larson .dijitSpinnerFocused .dijitArrowButton { + background-color: @arrowbutton-hovered-background-color; +} + +.larson .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner { + background-position:-174px; +} +.larson .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position:-69px; +} + +.larson .dijitSpinnerFocused { + background-color: @textbox-focused-background-color; + background-image: none; +} + +/* mouse down status */ +.larson .dijitSpinner .dijitDownArrowButtonActive, +.larson .dijitSpinner .dijitUpArrowButtonActive { + background-color: #7dbefa; // TODO. Mailed Jason about inconsistent ComboBox/Spinner behavior. + background-position:0 -177px; +} +.larson .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner, +.larson .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + /* hide inner border while button is depressed */ + border: 0; + padding: 1px; + margin-right:2px; + margin-bottom:1px; +} +.larson .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner { + background-position:-173px; +} +.larson .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + background-position:-68px; +} + +/* disabled */ + +.larson .dijitSpinnerDisabled .dijitArrowButtonInner { + background-color: @disabled-background-color; +} +.larson .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position:-104px; +} +.larson .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner { + background-position:1px; +} + +/** hacks for browsers **/ + +/* for IE 7, when div is enlarged, + * should be no empty space between dijitInputLayoutContainer and dijitSpinner*/ +.dj_ie7 .larson .dijitSpinner { + overflow:visible; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/RadioButton.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/RadioButton.css new file mode 100755 index 0000000..3210b7e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/RadioButton.css @@ -0,0 +1,79 @@ +/* RadioButton + * + * Styling RadioButton mainly includes: + * + * 1. Containers + * .dijitRadio|.dijitRadioIcon - for border, padding, width|height and background image + * + * 2. RadioButton within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitRadioChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitRadioHover|.dijitRadioCheckedHover - for background image + * + * 5. Disabled state + * .dijitRadioDisabled|.dijitRadioCheckedDisabled - for background image + */ +.larson .dijitToggleButton .dijitRadio, .larson .dijitToggleButton .dijitRadioIcon { + background-image: url('images/checkboxRadioButtonStates.png'); +} +.dj_ie6 .larson .dijitToggleButton .dijitRadio, .dj_ie6 .larson .dijitToggleButton .dijitRadioIcon { + background-image: url('images/checkboxAndRadioButtons_IE6.png'); +} +.larson .dijitRadio, .larson .dijitRadioIcon { + /* inside a toggle button */ + + background-image: url('images/checkboxRadioButtonStates.png'); + /* checkbox sprite image */ + + background-repeat: no-repeat; + width: 15px; + height: 15px; + margin: 0 2px 0 0; + padding: 0; +} +.dj_ie6 .larson .dijitRadio, .dj_ie6 .larson .dijitRadioIcon { + /* inside a toggle button */ + + background-image: url('images/checkboxAndRadioButtons_IE6.png'); + /* checkbox sprite image */ + +} +.larson .dijitRadio { + /* unselected */ + + background-position: -105px; +} +.larson .dijitToggleButton .dijitRadioIcon { + /* unselected */ + + background-position: -107px; +} +.larson .dijitRadioDisabled { + /* unselected and disabled */ + + background-position: -165px; +} +.larson .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + + background-position: -135px; +} +.larson .dijitRadioChecked { + background-position: -90px; +} +.larson .dijitToggleButtonChecked .dijitRadioIcon { + background-position: -92px; +} +.larson .dijitRadioCheckedHover { + background-position: -120px; +} +.larson .dijitRadioCheckedDisabled { + /* selected but disabled */ + + background-position: -150px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/RadioButton.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/RadioButton.less new file mode 100755 index 0000000..934e0d6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/RadioButton.less @@ -0,0 +1,84 @@ +/* RadioButton + * + * Styling RadioButton mainly includes: + * + * 1. Containers + * .dijitRadio|.dijitRadioIcon - for border, padding, width|height and background image + * + * 2. RadioButton within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitRadioChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitRadioHover|.dijitRadioCheckedHover - for background image + * + * 5. Disabled state + * .dijitRadioDisabled|.dijitRadioCheckedDisabled - for background image + */ + +@import "../variables"; + +.larson .dijitToggleButton .dijitRadio, +.larson .dijitToggleButton .dijitRadioIcon { + background-image: url('images/checkboxRadioButtonStates.png'); +} + +.dj_ie6 .larson .dijitToggleButton .dijitRadio, +.dj_ie6 .larson .dijitToggleButton .dijitRadioIcon { + background-image: url('images/checkboxAndRadioButtons_IE6.png'); +} + +.larson .dijitRadio, +.larson .dijitRadioIcon { /* inside a toggle button */ + background-image: url('images/checkboxRadioButtonStates.png'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 15px; + height: 15px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .larson .dijitRadio, +.dj_ie6 .larson .dijitRadioIcon { /* inside a toggle button */ + background-image: url('images/checkboxAndRadioButtons_IE6.png'); /* checkbox sprite image */ +} + +.larson .dijitRadio{ + /* unselected */ + background-position: -105px; +} + +.larson .dijitToggleButton .dijitRadioIcon { + /* unselected */ + background-position: -107px; +} + +.larson .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -165px; +} + +.larson .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -135px; +} + +.larson .dijitRadioChecked{ + background-position: -90px; +} + +.larson .dijitToggleButtonChecked .dijitRadioIcon { + background-position: -92px; +} + +.larson .dijitRadioCheckedHover{ + background-position: -120px; +} + +.larson .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -150px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select.css new file mode 100755 index 0000000..b794ff5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select.css @@ -0,0 +1,109 @@ +/* Select + * + * Styling Select mainly includes: + * + * 1. Containers + * .dijitSelect - for border, background-color + * .dijitButtonContents - for border + * + * 2. Arrow + * .dijitArrowButton - for border, padding and background-color|image + * .dijitArrowButtonInner - for border, background-color|image, display and width|height + * + * 3. Menu + * .dijitSelectMenu .* - for border, padding + * + * 4. Various states + * .dijitSelectHover|.dijitSelectFocused|.dijitSelectDisabled .* - for border, padding and background-color|image + */ +.larson .dijitSelect .dijitButtonText { + padding: 2px; +} +/* normal status */ +.larson .dijitSelect { + border: 1px solid #cccccc; + background-color: #ffffff; + border-collapse: separate; +} +.dj_ie6 .larson .dijitSelect, .dj_ie6 .larson .dijitSelect .dijitButtonNode { + background-image: none; +} +.larson .dijitSelect .dijitButtonContents { + border: 0 solid #cccccc; + border-right-width: 1px; +} +.larson .dijitSelect .dijitArrowButton { + padding: 0; + border: 1px solid #ffffff; + border-top: none; + background-color: #efefef; + background-image: url("images/formHighlight.png"); + background-repeat: repeat-x; +} +.larson .dijitSelect .dijitArrowButton .dijitArrowButtonInner { + background-image: url("images/commonFormArrows.png"); + background-position: -35px 70%; + background-repeat: no-repeat; + width: 16px; + height: 16px; +} +/* hover status */ +.larson .dijitSelectHover { + border: 1px solid #999999; + background-color: #efefef; + background-image: url('images/textBox_back.png'); + background-repeat: repeat-x; +} +.larson .dijitSelectHover .dijitButtonContents { + border-color: #999999; +} +.larson .dijitSelectHover .dijitArrowButton { + background-color: #d4d4d4; +} +.larson .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px 70%; +} +/* focused status */ +.larson .dijitSelectFocused { + border: 1px solid #999999; +} +.larson .dijitSelectFocused .dijitButtonContents { + border-color: #999999; +} +.larson .dijitSelectFocused .dijitArrowButton { + background-color: #7dbefa; + background-position: 0 -177px; + border: none; + padding: 0 1px; +} +.larson .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px 70%; + margin-bottom: 1px; +} +/* disable status */ +.larson .dijitSelectDisabled { + border: 1px solid #d3d3d3; + background-color: #efefef; + background-image: none; + color: #818181; +} +.larson .dijitSelectDisabled .dijitArrowButton { + background-color: #efefef; +} +.larson .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner { + background-position: 0 70%; +} +/* Dropdown menu style for select */ +.larson .dijitSelectMenu td.dijitMenuItemIconCell, .larson .dijitSelectMenu td.dijitMenuArrowCell { + /* so that arrow and icon cells from MenuItem are not displayed */ + + display: none; +} +.larson .dijitSelectMenu td.dijitMenuItemLabel { + /* line up menu text with text in select box (in LTR and RTL modes) */ + + padding: 2px; +} +.larson .dijitSelectMenu .dijitMenuSeparatorTop { + border-bottom: 1px solid #999999; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select.less new file mode 100755 index 0000000..60259fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select.less @@ -0,0 +1,124 @@ +/* Select + * + * Styling Select mainly includes: + * + * 1. Containers + * .dijitSelect - for border, background-color + * .dijitButtonContents - for border + * + * 2. Arrow + * .dijitArrowButton - for border, padding and background-color|image + * .dijitArrowButtonInner - for border, background-color|image, display and width|height + * + * 3. Menu + * .dijitSelectMenu .* - for border, padding + * + * 4. Various states + * .dijitSelectHover|.dijitSelectFocused|.dijitSelectDisabled .* - for border, padding and background-color|image + */ + +@import "../variables"; + +.larson .dijitSelect .dijitButtonText { + padding: @textbox-padding; +} + +/* normal status */ +.larson .dijitSelect { + border: 1px solid @border-color; + background-color: @textbox-background-color; + border-collapse: separate; +} +.dj_ie6 .larson .dijitSelect, +.dj_ie6 .larson .dijitSelect .dijitButtonNode { + background-image:none; +} + +.larson .dijitSelect .dijitButtonContents { + border: 0 solid @border-color; + border-right-width: 1px; +} + +.larson .dijitSelect .dijitArrowButton { + padding: 0; + border: 1px solid @arrowbutton-inner-border-color; + border-top:none; + background-color: @arrowbutton-background-color; + background-image: url("images/formHighlight.png"); + background-repeat:repeat-x; +} + +.larson .dijitSelect .dijitArrowButton .dijitArrowButtonInner { + background-image: url("images/commonFormArrows.png"); + background-position:-35px 70%; + background-repeat: no-repeat; + width:16px; + height:16px; +} + +/* hover status */ +.larson .dijitSelectHover { + border: 1px solid @hovered-border-color; + background-color: @textbox-hovered-background-color; + background-image: url('images/textBox_back.png'); + background-repeat: repeat-x; +} + +.larson .dijitSelectHover .dijitButtonContents { + border-color:@hovered-border-color; +} + +.larson .dijitSelectHover .dijitArrowButton { + background-color:@arrowbutton-hovered-background-color; +} +.larson .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner { + background-position:-70px 70%; +} + +/* focused status */ +.larson .dijitSelectFocused { + border: 1px solid @focused-border-color; +} +.larson .dijitSelectFocused .dijitButtonContents { + border-color:@focused-border-color; +} +.larson .dijitSelectFocused .dijitArrowButton { + background-color:#7dbefa; // TODO. Mailed Jason about inconsistent ComboBox/Spinner behavior. + background-position:0 -177px; + border: none; + padding: 0 1px; +} +.larson .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner { + background-position:-70px 70%; + margin-bottom: 1px; +} + +/* disable status */ +.larson .dijitSelectDisabled { + border: 1px solid @disabled-border-color; + background-color: @disabled-background-color; + background-image: none; + color: @disabled-text-color; +} +.larson .dijitSelectDisabled .dijitArrowButton { + background-color: @disabled-background-color; +} +.larson .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner { + background-position:0 70% +} + +/* Dropdown menu style for select */ + +.larson .dijitSelectMenu td.dijitMenuItemIconCell, +.larson .dijitSelectMenu td.dijitMenuArrowCell { + /* so that arrow and icon cells from MenuItem are not displayed */ + display: none; +} +.larson .dijitSelectMenu td.dijitMenuItemLabel { + /* line up menu text with text in select box (in LTR and RTL modes) */ + padding: @textbox-padding; +} + +.larson .dijitSelectMenu .dijitMenuSeparatorTop { + border-bottom:1px solid @focused-border-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select_rtl.css new file mode 100755 index 0000000..40098df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select_rtl.css @@ -0,0 +1,4 @@ +.larson .dijitSelectRtl .dijitButtonContents { + border-right-width: 0; + border-left-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select_rtl.less new file mode 100755 index 0000000..638b85a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Select_rtl.less @@ -0,0 +1,6 @@ +@import "../variables"; + +.larson .dijitSelectRtl .dijitButtonContents { + border-right-width: 0; + border-left-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider.css new file mode 100755 index 0000000..178ff9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider.css @@ -0,0 +1,326 @@ +/* Slider + * + * Styling Slider mainly includes styling the Slider progress bar (dijitSliderProgressBar) + * + * Slider progress bar: + * 1. Slider progress bar (default styling): + * .dijitSliderProgressBarH - progress bar at the middle of horizontal slider + * .dijitSliderLeftBumper - bar at the left of horizontal slider + * .dijitSliderRightBumper - bar at the right of horizontal slider + * .dijitSliderProgressBarV - progress bar at the middle of vertical slider + * .dijitSliderTopBumper - bar at the top of vertical slider + * .dijitSliderBottomtBumper - bar at the bottom of vertical slider + * + * 2. hovered Slider progress bar (ie, mouse hover on progress bar) + * .dijitSliderHover .dijitSliderProgressBarH(horizontal) - hovered bar style: background, border + * + * 3. focused Slider progress bar (ie, mouse focused on progress bar) + * .dijitSliderFocused .dijitSliderProgressBarH(horizontal) - focus bar style: background, border + * + * 4. disabled/read-only Slider progress bar + * .dijitSliderDisabled .dijitSliderProgressBarH(horizontal) - bar styles when slider is disabled + * + * + * Slider Thumbs: + * 1. Slider Thumbs (default styling): + * .dijitSliderImageHandleH / .dijitSliderImageHandleV - styles for the controller on the progress bar + * + * 2. hovered Slider Thumbs (ie, mouse hover on slider thumbs) + * .dijitSliderHover .dijitSliderImageHandleH - hovered controller style + * + * 3. focused Slider progress bar (ie, mouse focused on slider thumbs) + * .dijitSliderFocused .dijitSliderImageHandleV - focused controller style + * + * + * Slider Increment/Decrement Buttons: + * 1. Slider Increment/Decrement Buttons (default styling): + * .dijitSliderDecrementIconH - decrement icon which lies at the left of horizontal slider + * .dijitSliderIncrementIconH - increment icon which lies at the right of horizontal slider + * .dijitSliderDecrementIconV - decrement icon which lies at the bottom of vertical slider + * .dijitSliderIncrementIconV - increment icon which lies at the top of vertical slider + * + * 2. hovered Slider Increment/Decrement Buttons (mouse hover on the icons) + * .dijitSliderHover .dijitSliderDecrementIconH - for background, border + * + * 3. active Slider Increment/Decrement Buttons (mouse down on the icons) + * .dijitSliderActive .dijitSliderIncrementIconV - for background, border + * + * 4. disabled/read-only Slider Increment/Decrement Buttons + * .dijitSliderDisabled .dijitSliderDecrementIconH - styles for the icons in disabled slider + * .dijitSliderReadOnly .dijitSliderIncrementIconV - styles for the icons in read-only slider + */ +.larson .dijitSliderBar { + border-style: solid; + outline: 1px; +} +.larson .dijitSliderFocused .dijitSliderBar { + border-color: #999999; +} +.larson .dijitSliderHover .dijitSliderBar { + border-color: #999999; +} +.larson .dijitSliderDisabled .dijitSliderBar { + background-image: none; + border-color: #d3d3d3; +} +/* Horizontal Slider */ +.larson .dijitRuleLabelsContainerH { + padding: 2px 0; +} +.larson .dijitSlider .dijitSliderProgressBarH, .larson .dijitSlider .dijitSliderLeftBumper { + background-image: url("images/sliderHorizontal.png"); + background-repeat: repeat-x; + background-position: 0 -20px; + border-color: #cccccc; + background-color: #cfe5fa; +} +.larson .dijitSlider .dijitSliderRemainingBarH, .larson .dijitSlider .dijitSliderRightBumper { + background-image: url("images/sliderHorizontal.png"); + background-repeat: repeat-x; + background-position: 0 -11px; + border-color: #cccccc; + background-color: #ffffff; +} +.larson .dijitSliderRightBumper { + border-right: solid 1px #cccccc; +} +.larson .dijitSliderLeftBumper { + border-left: solid 1px #cccccc; +} +.larson .dijitSliderHover .dijitSliderProgressBarH, .larson .dijitSliderHover .dijitSliderLeftBumper { + background-position: 0 -20px; + background-color: #abd6ff; + border-color: #999999; +} +.larson .dijitSliderHover .dijitSliderRemainingBarH, .larson .dijitSliderHover .dijitSliderRightBumper { + background-position: 0 0; + background-color: #ffffff; + border-color: #999999; +} +.larson .dijitSliderFocused .dijitSliderProgressBarH, .larson .dijitSliderFocused .dijitSliderLeftBumper { + background-position: 0 -30px; + background-color: #abd6ff; + border-color: #999999; +} +.larson .dijitSliderFocused .dijitSliderRemainingBarH, .larson .dijitSliderFocused .dijitSliderRightBumper { + background-position: 0 -9px; + background-color: #ffffff; + border-color: #999999; +} +.larson .dijitSliderDisabled .dijitSliderProgressBarH, .larson .dijitSliderDisabled .dijitSliderLeftBumper { + background-color: #d3d3d3; + /* left side of slider, fill matches border */ + + background-image: none; +} +.larson .dijitSliderDisabled .dijitSliderRemainingBarH, .larson .dijitSliderDisabled .dijitSliderRightBumper { + background-color: #efefef; +} +/* Vertical Slider */ +.larson .dijitRuleLabelsContainerV { + padding: 0 2px; +} +.larson .dijitSlider .dijitSliderProgressBarV, .larson .dijitSlider .dijitSliderBottomBumper { + background-image: url("images/sliderVertical.png"); + background-repeat: repeat-y; + background-position: -36px 0; + border-color: #cccccc; + background-color: #cfe5fa; +} +.larson .dijitSlider .dijitSliderRemainingBarV, .larson .dijitSlider .dijitSliderTopBumper { + background-image: url("images/sliderVertical.png"); + background-repeat: repeat-y; + background-position: -3px 0; + border-color: #cccccc; + background-color: #ffffff; +} +.larson .dijitSliderBottomBumper { + border-bottom: solid 1px #cccccc; +} +.larson .dijitSliderTopBumper { + border-top: solid 1px #cccccc; +} +.larson .dijitSliderHover .dijitSliderProgressBarV, .larson .dijitSliderHover .dijitSliderBottomBumper { + background-position: -36px 0; + background-color: #abd6ff; +} +.larson .dijitSliderHover .dijitSliderRemainingBarV, .larson .dijitSliderHover .dijitSliderTopBumper { + background-position: 0 0; + background-color: #ffffff; +} +.larson .dijitSliderFocused .dijitSliderProgressBarV, .larson .dijitSliderFocused .dijitSliderBottomBumper { + background-position: -56px 0; + background-color: #abd6ff; +} +.larson .dijitSliderFocused .dijitSliderRemainingBarV, .larson .dijitSliderFocused .dijitSliderTopBumper { + background-position: -18px 0; + background-color: #ffffff; +} +.larson .dijitSliderDisabled .dijitSliderProgressBarV, .larson .dijitSliderDisabled .dijitSliderBottomBumper { + background-color: #d3d3d3; + /* bottom side of slider, fill matches border */ + +} +.larson .dijitSliderDisabled .dijitSliderRemainingBarV, .larson .dijitSliderDisabled .dijitSliderTopBumper { + background-color: #efefef; +} +/* ------- Thumbs ------- */ +.larson .dijitSliderImageHandleH { + border: 0; + width: 18px; + height: 16px; + background-image: url("images/sliderThumbs.png"); + background-repeat: no-repeat; + background-position: 0 0; +} +.larson .dijitSliderHover .dijitSliderImageHandleH { + background-position: -18px 0; +} +.larson .dijitSliderFocused .dijitSliderImageHandleH { + background-position: -36px 0; +} +.larson .dijitSliderProgressBarH .dijitSliderThumbHover { + background-position: -36px 0; +} +.larson .dijitSliderProgressBarH .dijitSliderThumbActive { + background-position: -36px 0; +} +.larson .dijitSliderReadOnly .dijitSliderImageHandleH, .larson .dijitSliderDisabled .dijitSliderImageHandleH { + background-position: -54px 0; +} +.larson .dijitSliderImageHandleV { + border: 0; + width: 18px; + height: 16px; + background-image: url("images/sliderThumbs.png"); + background-repeat: no-repeat; + background-position: -289px 0; +} +.larson .dijitSliderHover .dijitSliderImageHandleV { + background-position: -307px 0; +} +.larson .dijitSliderFocused .dijitSliderImageHandleV { + background-position: -325px 0; +} +.larson .dijitSliderProgressBarV .dijitSliderThumbHover { + background-position: -325px 0; +} +.larson .dijitSliderProgressBarV .dijitSliderThumbActive { + background-position: -325px 0; +} +.larson .dijitSliderReadOnly .dijitSliderImageHandleV, .larson .dijitSliderDisabled .dijitSliderImageHandleV { + background-position: -343px 0; +} +/* ---- Increment/Decrement Buttons ---- */ +.larson .dijitSliderButtonContainerH { + padding: 1px 3px 1px 2px; +} +.larson .dijitSliderButtonContainerV { + padding: 3px 1px 2px 1px; +} +.larson .dijitSliderDecrementIconH, +.larson .dijitSliderIncrementIconH, +.larson .dijitSliderDecrementIconV, +.larson .dijitSliderIncrementIconV { + background-image: url('images/commonFormArrows.png'); + background-repeat: no-repeat; + background-color: #efefef; + -moz-border-radius: 2px; + border-radius: 2px; + border: solid 1px #cccccc; + font-size: 1px; +} +.larson .dijitSliderDecrementIconH, .larson .dijitSliderIncrementIconH { + height: 12px; + width: 9px; +} +.larson .dijitSliderDecrementIconV, .larson .dijitSliderIncrementIconV { + height: 9px; + width: 12px; +} +.larson .dijitSliderActive .dijitSliderDecrementIconH, +.larson .dijitSliderActive .dijitSliderIncrementIconH, +.larson .dijitSliderActive .dijitSliderDecrementIconV, +.larson .dijitSliderActive .dijitSliderIncrementIconV, +.larson .dijitSliderHover .dijitSliderDecrementIconH, +.larson .dijitSliderHover .dijitSliderIncrementIconH, +.larson .dijitSliderHover .dijitSliderDecrementIconV, +.larson .dijitSliderHover .dijitSliderIncrementIconV { + /* dijitSliderActive should be treated as dijitSliderHover since "clicking the slider" has no meaning */ + + border: solid 1px #999999; + background-color: #ffffff; +} +.larson .dijitSliderDecrementIconH { + background-position: -357px 50%; +} +.larson .dijitSliderActive .dijitSliderDecrementIconH.larson .dijitSliderHover .dijitSliderDecrementIconH { + background-position: -393px 50%; +} +.larson .dijitSliderIncrementIconH { + background-position: -251px 50%; +} +.larson .dijitSliderActive .dijitSliderIncrementIconH.larson .dijitSliderHover .dijitSliderIncrementIconH { + background-position: -283px 50%; +} +.larson .dijitSliderDecrementIconV { + background-position: -38px 50%; +} +.larson .dijitSliderActive .dijitSliderDecrementIconV.larson .dijitSliderHover .dijitSliderDecrementIconV { + background-position: -73px 50%; +} +.larson .dijitSliderIncrementIconV { + background-position: -143px 49%; +} +.larson .dijitSliderActive .dijitSliderIncrementIconV.larson .dijitSliderHover .dijitSliderIncrementIconV { + background-position: -178px 49%; +} +.larson .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover, +.larson .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover, +.larson .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover, +.larson .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover { + background-color: #cfe5fa; +} +.larson .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive, +.larson .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive, +.larson .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive, +.larson .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive { + background-color: #abd6ff; + border-color: #999999; +} +.larson .dijitSliderButtonInner { + visibility: hidden; +} +.larson .dijitSliderDisabled .dijitSliderBar { + border-color: #d3d3d3; +} +.larson .dijitSliderReadOnly *, .larson .dijitSliderDisabled * { + border-color: #d3d3d3; + color: #818181; +} +.larson .dijitSliderReadOnly .dijitSliderDecrementIconH, .larson .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position: -321px 50%; + background-color: #efefef; +} +.larson .dijitSliderReadOnly .dijitSliderIncrementIconH, .larson .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position: -215px 50%; + background-color: #efefef; +} +.larson .dijitSliderReadOnly .dijitSliderDecrementIconV, .larson .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position: -3px 49%; + background-color: #efefef; +} +.larson .dijitSliderReadOnly .dijitSliderIncrementIconV, .larson .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position: -107px 49%; + background-color: #efefef; +} +.dj_ie6 .larson .dijitSlider .dijitSliderProgressBarH, +.dj_ie6 .larson .dijitSlider .dijitSliderLeftBumper, +.dj_ie6 .larson .dijitSlider .dijitSliderRemainingBarH, +.dj_ie6 .larson .dijitSlider .dijitSliderRightBumper, +.dj_ie6 .larson .dijitSlider .dijitSliderProgressBarV, +.dj_ie6 .larson .dijitSlider .dijitSliderTopBumper, +.dj_ie6 .larson .dijitSlider .dijitSliderRemainingBarV, +.dj_ie6 .larson .dijitSlider .dijitSliderBottomBumper { + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider.less new file mode 100755 index 0000000..8945266 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider.less @@ -0,0 +1,362 @@ +/* Slider + * + * Styling Slider mainly includes styling the Slider progress bar (dijitSliderProgressBar) + * + * Slider progress bar: + * 1. Slider progress bar (default styling): + * .dijitSliderProgressBarH - progress bar at the middle of horizontal slider + * .dijitSliderLeftBumper - bar at the left of horizontal slider + * .dijitSliderRightBumper - bar at the right of horizontal slider + * .dijitSliderProgressBarV - progress bar at the middle of vertical slider + * .dijitSliderTopBumper - bar at the top of vertical slider + * .dijitSliderBottomtBumper - bar at the bottom of vertical slider + * + * 2. hovered Slider progress bar (ie, mouse hover on progress bar) + * .dijitSliderHover .dijitSliderProgressBarH(horizontal) - hovered bar style: background, border + * + * 3. focused Slider progress bar (ie, mouse focused on progress bar) + * .dijitSliderFocused .dijitSliderProgressBarH(horizontal) - focus bar style: background, border + * + * 4. disabled/read-only Slider progress bar + * .dijitSliderDisabled .dijitSliderProgressBarH(horizontal) - bar styles when slider is disabled + * + * + * Slider Thumbs: + * 1. Slider Thumbs (default styling): + * .dijitSliderImageHandleH / .dijitSliderImageHandleV - styles for the controller on the progress bar + * + * 2. hovered Slider Thumbs (ie, mouse hover on slider thumbs) + * .dijitSliderHover .dijitSliderImageHandleH - hovered controller style + * + * 3. focused Slider progress bar (ie, mouse focused on slider thumbs) + * .dijitSliderFocused .dijitSliderImageHandleV - focused controller style + * + * + * Slider Increment/Decrement Buttons: + * 1. Slider Increment/Decrement Buttons (default styling): + * .dijitSliderDecrementIconH - decrement icon which lies at the left of horizontal slider + * .dijitSliderIncrementIconH - increment icon which lies at the right of horizontal slider + * .dijitSliderDecrementIconV - decrement icon which lies at the bottom of vertical slider + * .dijitSliderIncrementIconV - increment icon which lies at the top of vertical slider + * + * 2. hovered Slider Increment/Decrement Buttons (mouse hover on the icons) + * .dijitSliderHover .dijitSliderDecrementIconH - for background, border + * + * 3. active Slider Increment/Decrement Buttons (mouse down on the icons) + * .dijitSliderActive .dijitSliderIncrementIconV - for background, border + * + * 4. disabled/read-only Slider Increment/Decrement Buttons + * .dijitSliderDisabled .dijitSliderDecrementIconH - styles for the icons in disabled slider + * .dijitSliderReadOnly .dijitSliderIncrementIconV - styles for the icons in read-only slider + */ + +@import "../variables"; + +.larson .dijitSliderBar { + border-style: solid; + outline: 1px; +} +.larson .dijitSliderFocused .dijitSliderBar { + border-color: @focused-border-color; +} +.larson .dijitSliderHover .dijitSliderBar { + border-color: @hovered-border-color; +} +.larson .dijitSliderDisabled .dijitSliderBar { + background-image: none; + border-color: @disabled-border-color; +} + +/* Horizontal Slider */ + +.larson .dijitRuleLabelsContainerH { + padding: 2px 0; +} +.larson .dijitSlider .dijitSliderProgressBarH, +.larson .dijitSlider .dijitSliderLeftBumper{ + background-image: url("images/sliderHorizontal.png"); + background-repeat:repeat-x; + background-position:0 -20px; + border-color: @border-color; + background-color: @slider-fullbar-background-color; +} +.larson .dijitSlider .dijitSliderRemainingBarH, +.larson .dijitSlider .dijitSliderRightBumper{ + background-image: url("images/sliderHorizontal.png"); + background-repeat:repeat-x; + background-position:0 -11px; + border-color: @border-color; + background-color: @slider-remainingbar-background-color; +} +.larson .dijitSliderRightBumper { + border-right: solid 1px @border-color; +} +.larson .dijitSliderLeftBumper { + border-left: solid 1px @border-color; +} +.larson .dijitSliderHover .dijitSliderProgressBarH, +.larson .dijitSliderHover .dijitSliderLeftBumper{ + background-position:0 -20px; + background-color: @slider-hovered-fullbar-background-color; + border-color: @hovered-border-color; +} +.larson .dijitSliderHover .dijitSliderRemainingBarH, +.larson .dijitSliderHover .dijitSliderRightBumper{ + background-position:0 0; + background-color: @slider-hovered-remainingbar-background-color; + border-color: @hovered-border-color; +} +.larson .dijitSliderFocused .dijitSliderProgressBarH, +.larson .dijitSliderFocused .dijitSliderLeftBumper{ + background-position:0 -30px; + background-color: @slider-focused-fullbar-background-color; + border-color: @focused-border-color; +} +.larson .dijitSliderFocused .dijitSliderRemainingBarH, +.larson .dijitSliderFocused .dijitSliderRightBumper{ + background-position:0 -9px; + background-color: @slider-focused-remainingbar-background-color; + border-color: @focused-border-color; +} +.larson .dijitSliderDisabled .dijitSliderProgressBarH, +.larson .dijitSliderDisabled .dijitSliderLeftBumper{ + background-color: @disabled-border-color; /* left side of slider, fill matches border */ + background-image:none; +} +.larson .dijitSliderDisabled .dijitSliderRemainingBarH, +.larson .dijitSliderDisabled .dijitSliderRightBumper{ + background-color: @disabled-background-color; +} + +/* Vertical Slider */ + +.larson .dijitRuleLabelsContainerV { + padding: 0 2px; +} +.larson .dijitSlider .dijitSliderProgressBarV, +.larson .dijitSlider .dijitSliderBottomBumper{ + background-image: url("images/sliderVertical.png"); + background-repeat:repeat-y; + background-position:-36px 0; + border-color: @border-color; + background-color: @slider-fullbar-background-color; +} +.larson .dijitSlider .dijitSliderRemainingBarV, +.larson .dijitSlider .dijitSliderTopBumper{ + background-image: url("images/sliderVertical.png"); + background-repeat:repeat-y; + background-position:-3px 0; + border-color: @border-color; + background-color: @slider-remainingbar-background-color; +} +.larson .dijitSliderBottomBumper { + border-bottom: solid 1px @border-color; +} +.larson .dijitSliderTopBumper { + border-top: solid 1px @border-color; +} +.larson .dijitSliderHover .dijitSliderProgressBarV, +.larson .dijitSliderHover .dijitSliderBottomBumper{ + background-position:-36px 0; + background-color: @slider-hovered-fullbar-background-color; +} +.larson .dijitSliderHover .dijitSliderRemainingBarV, +.larson .dijitSliderHover .dijitSliderTopBumper{ + background-position:0 0; + background-color: @slider-hovered-remainingbar-background-color; +} +.larson .dijitSliderFocused .dijitSliderProgressBarV, +.larson .dijitSliderFocused .dijitSliderBottomBumper{ + background-position:-56px 0; + background-color: @slider-focused-fullbar-background-color; +} +.larson .dijitSliderFocused .dijitSliderRemainingBarV, +.larson .dijitSliderFocused .dijitSliderTopBumper{ + background-position:-18px 0; + background-color: @slider-focused-remainingbar-background-color; +} +.larson .dijitSliderDisabled .dijitSliderProgressBarV, +.larson .dijitSliderDisabled .dijitSliderBottomBumper{ + background-color: @disabled-border-color; /* bottom side of slider, fill matches border */ +} +.larson .dijitSliderDisabled .dijitSliderRemainingBarV, +.larson .dijitSliderDisabled .dijitSliderTopBumper{ + background-color: @disabled-background-color; +} + + +/* ------- Thumbs ------- */ + +.larson .dijitSliderImageHandleH { + border: 0; + width: 18px; + height: 16px; + background-image: url("images/sliderThumbs.png"); + background-repeat:no-repeat; + background-position:0 0; +} +.larson .dijitSliderHover .dijitSliderImageHandleH { + background-position:-18px 0; +} +.larson .dijitSliderFocused .dijitSliderImageHandleH { + background-position:-36px 0; +} +.larson .dijitSliderProgressBarH .dijitSliderThumbHover{ + background-position:-36px 0; +} +.larson .dijitSliderProgressBarH .dijitSliderThumbActive{ + background-position:-36px 0; +} +.larson .dijitSliderReadOnly .dijitSliderImageHandleH, +.larson .dijitSliderDisabled .dijitSliderImageHandleH { + background-position:-54px 0; +} +.larson .dijitSliderImageHandleV { + border: 0; + width: 18px; + height: 16px; + background-image: url("images/sliderThumbs.png"); + background-repeat:no-repeat; + background-position:-289px 0; +} +.larson .dijitSliderHover .dijitSliderImageHandleV { + background-position:-307px 0; +} +.larson .dijitSliderFocused .dijitSliderImageHandleV { + background-position:-325px 0; +} +.larson .dijitSliderProgressBarV .dijitSliderThumbHover{ + background-position:-325px 0; +} +.larson .dijitSliderProgressBarV .dijitSliderThumbActive{ + background-position:-325px 0; +} +.larson .dijitSliderReadOnly .dijitSliderImageHandleV, +.larson .dijitSliderDisabled .dijitSliderImageHandleV { + background-position:-343px 0; +} + +/* ---- Increment/Decrement Buttons ---- */ + +.larson .dijitSliderButtonContainerH{ + padding: 1px 3px 1px 2px; +} +.larson .dijitSliderButtonContainerV{ + padding: 3px 1px 2px 1px; +} +.larson .dijitSliderDecrementIconH, +.larson .dijitSliderIncrementIconH, +.larson .dijitSliderDecrementIconV, +.larson .dijitSliderIncrementIconV { + background-image: url('images/commonFormArrows.png'); + background-repeat:no-repeat; + background-color: @arrowbutton-background-color; + .border-radius(2px); + border: solid 1px @border-color; + font-size: 1px; +} +.larson .dijitSliderDecrementIconH, +.larson .dijitSliderIncrementIconH { + height: 12px; + width: 9px; +} +.larson .dijitSliderDecrementIconV, +.larson .dijitSliderIncrementIconV { + height: 9px; + width: 12px; +} +.larson .dijitSliderActive .dijitSliderDecrementIconH, +.larson .dijitSliderActive .dijitSliderIncrementIconH, +.larson .dijitSliderActive .dijitSliderDecrementIconV, +.larson .dijitSliderActive .dijitSliderIncrementIconV, +.larson .dijitSliderHover .dijitSliderDecrementIconH, +.larson .dijitSliderHover .dijitSliderIncrementIconH, +.larson .dijitSliderHover .dijitSliderDecrementIconV, +.larson .dijitSliderHover .dijitSliderIncrementIconV { + /* dijitSliderActive should be treated as dijitSliderHover since "clicking the slider" has no meaning */ + border: solid 1px @hovered-border-color; + background-color: @slider-hoveredButton-background-color; +} + +.larson .dijitSliderDecrementIconH { + background-position:-357px 50%; +} +.larson .dijitSliderActive .dijitSliderDecrementIconH +.larson .dijitSliderHover .dijitSliderDecrementIconH { + background-position:-393px 50%; +} +.larson .dijitSliderIncrementIconH { + background-position:-251px 50%; +} +.larson .dijitSliderActive .dijitSliderIncrementIconH +.larson .dijitSliderHover .dijitSliderIncrementIconH { + background-position:-283px 50%; +} +.larson .dijitSliderDecrementIconV { + background-position:-38px 50%; +} +.larson .dijitSliderActive .dijitSliderDecrementIconV +.larson .dijitSliderHover .dijitSliderDecrementIconV { + background-position:-73px 50%; +} +.larson .dijitSliderIncrementIconV { + background-position:-143px 49%; +} +.larson .dijitSliderActive .dijitSliderIncrementIconV +.larson .dijitSliderHover .dijitSliderIncrementIconV { + background-position:-178px 49%; +} +.larson .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover, +.larson .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover, +.larson .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover, +.larson .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover { + background-color: @slider-button-hovered-background-color; +} +.larson .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive, +.larson .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive, +.larson .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive, +.larson .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive { + background-color: @slider-button-pressed-background-color; + border-color:@pressed-border-color; +} +.larson .dijitSliderButtonInner { + visibility: hidden; +} +.larson .dijitSliderDisabled .dijitSliderBar{ + border-color: @disabled-border-color; +} +.larson .dijitSliderReadOnly *,.larson .dijitSliderDisabled * { + border-color: @disabled-border-color; + color: @disabled-text-color; +} +.larson .dijitSliderReadOnly .dijitSliderDecrementIconH, +.larson .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position:-321px 50%; + background-color:@disabled-background-color; +} +.larson .dijitSliderReadOnly .dijitSliderIncrementIconH, +.larson .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position:-215px 50%; + background-color:@disabled-background-color; +} +.larson .dijitSliderReadOnly .dijitSliderDecrementIconV, +.larson .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position:-3px 49%; + background-color:@disabled-background-color; +} +.larson .dijitSliderReadOnly .dijitSliderIncrementIconV, +.larson .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position:-107px 49%; + background-color:@disabled-background-color; +} + +.dj_ie6 .larson .dijitSlider .dijitSliderProgressBarH, +.dj_ie6 .larson .dijitSlider .dijitSliderLeftBumper, +.dj_ie6 .larson .dijitSlider .dijitSliderRemainingBarH, +.dj_ie6 .larson .dijitSlider .dijitSliderRightBumper, +.dj_ie6 .larson .dijitSlider .dijitSliderProgressBarV, +.dj_ie6 .larson .dijitSlider .dijitSliderTopBumper, +.dj_ie6 .larson .dijitSlider .dijitSliderRemainingBarV, +.dj_ie6 .larson .dijitSlider .dijitSliderBottomBumper { + background-image:none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider_rtl.css new file mode 100755 index 0000000..0750e51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider_rtl.css @@ -0,0 +1,24 @@ +.larson .dijitSliderRtl .dijitSliderProgressBarH, +.larson .dijitSliderRtl .dijitSliderRemainingBarH, +.larson .dijitSliderRtl .dijitSliderLeftBumper, +.larson .dijitSliderRtl .dijitSliderRightBumper, +.larson .dijitSliderRtl .dijitSliderTopBumper { + background-position: top right; +} +.larson .dijitSliderRtl .dijitSliderProgressBarV, .larson .dijitSliderRtl .dijitSliderRemainingBarV, .larson .dijitSliderRtl .dijitSliderBottomBumper { + background-position: bottom right; +} +.larson .dijitSliderRtl .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} +.larson .dijitSliderRtl .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} +.larson .dijitSliderRtl .dijitSliderIncrementIconH { + background-position: -357px 50%; +} +.larson .dijitSliderRtl .dijitSliderDecrementIconH { + background-position: -251px 50%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider_rtl.less new file mode 100755 index 0000000..1df5b60 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/Slider_rtl.less @@ -0,0 +1,33 @@ +@import "../variables"; + +.larson .dijitSliderRtl .dijitSliderProgressBarH, +.larson .dijitSliderRtl .dijitSliderRemainingBarH, +.larson .dijitSliderRtl .dijitSliderLeftBumper, +.larson .dijitSliderRtl .dijitSliderRightBumper, +.larson .dijitSliderRtl .dijitSliderTopBumper { + background-position: top right; +} + +.larson .dijitSliderRtl .dijitSliderProgressBarV, +.larson .dijitSliderRtl .dijitSliderRemainingBarV, +.larson .dijitSliderRtl .dijitSliderBottomBumper { + background-position: bottom right; +} + +.larson .dijitSliderRtl .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} + +.larson .dijitSliderRtl .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} + +.larson .dijitSliderRtl .dijitSliderIncrementIconH { + background-position:-357px 50%; +} + +.larson .dijitSliderRtl .dijitSliderDecrementIconH { + background-position:-251px 50%; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/button.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/button.png new file mode 100755 index 0000000..cb787cb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/button.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/buttonArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/buttonArrows.png new file mode 100755 index 0000000..b12c0ce Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/buttonArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/button_grad_d.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/button_grad_d.png new file mode 100755 index 0000000..3a71a46 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/button_grad_d.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/checkboxAndRadioButtons_IE6.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/checkboxAndRadioButtons_IE6.png new file mode 100755 index 0000000..92d2221 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/checkboxAndRadioButtons_IE6.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/checkboxRadioButtonStates.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/checkboxRadioButtonStates.png new file mode 100755 index 0000000..cfc7150 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/checkboxRadioButtonStates.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/commonFormArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/commonFormArrows.png new file mode 100755 index 0000000..6d04742 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/commonFormArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/error.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/error.png new file mode 100755 index 0000000..46de1cd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/error.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/formHighlight.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/formHighlight.png new file mode 100755 index 0000000..f90eb25 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/formHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/shadow.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/shadow.png new file mode 100755 index 0000000..72d60e6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/shadow.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderHorizontal.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderHorizontal.png new file mode 100755 index 0000000..d769a64 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderHorizontal.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderThumbs.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderThumbs.png new file mode 100755 index 0000000..70ab2fe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderThumbs.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderVertical.png new file mode 100755 index 0000000..9d69d04 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/sliderVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/textBox_back.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/textBox_back.png new file mode 100755 index 0000000..dfc752a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/form/images/textBox_back.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarArrows.png new file mode 100755 index 0000000..3f6faa5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarArrows8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarArrows8bit.png new file mode 100755 index 0000000..ab9d66c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarArrows8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarContainerImages.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarContainerImages.png new file mode 100755 index 0000000..44fa088 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/calendarContainerImages.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/checkmarkNoBorder.gif b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/checkmarkNoBorder.gif new file mode 100755 index 0000000..324bfb3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/checkmarkNoBorder.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/checkmarkNoBorder.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/checkmarkNoBorder.png new file mode 100755 index 0000000..9cec0c0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/checkmarkNoBorder.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/commonHighlight.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/commonHighlight.png new file mode 100755 index 0000000..f90eb25 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/commonHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dialogCloseIcon.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dialogCloseIcon.png new file mode 100755 index 0000000..a605c71 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dialogCloseIcon.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dialogCloseIcon8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dialogCloseIcon8bit.png new file mode 100755 index 0000000..d2b063b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dialogCloseIcon8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dnd.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dnd.png new file mode 100755 index 0000000..8cb04aa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/dnd.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/loadingAnimation.gif b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/loadingAnimation.gif new file mode 100755 index 0000000..d76e4cd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/loadingAnimation.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/menuHighlight.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/menuHighlight.png new file mode 100755 index 0000000..22328a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/menuHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarAnim.gif b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarAnim.gif new file mode 100755 index 0000000..30c0d9d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarAnim.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarEmpty.png new file mode 100755 index 0000000..e0a6856 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarFull.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarFull.png new file mode 100755 index 0000000..280f51d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/progressBarFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/spriteArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/spriteArrows.png new file mode 100755 index 0000000..608f4c7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/spriteArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/titlebar.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/titlebar.png new file mode 100755 index 0000000..4818103 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/titlebar.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltip.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltip.png new file mode 100755 index 0000000..2b22273 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltip.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltip8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltip8bit.png new file mode 100755 index 0000000..51f65f1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltip8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltipGradient.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltipGradient.png new file mode 100755 index 0000000..ce4860e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/tooltipGradient.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpandImages.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpandImages.png new file mode 100755 index 0000000..75cf385 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpandImages.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpandImages8bit.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpandImages8bit.png new file mode 100755 index 0000000..290b2e1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpandImages8bit.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpand_loading.gif b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpand_loading.gif new file mode 100755 index 0000000..424d376 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/images/treeExpand_loading.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/larson.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/larson.css new file mode 100755 index 0000000..22a5791 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/larson.css @@ -0,0 +1,28 @@ +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Select.css"); +@import url("layout/TabContainer.css"); +@import url("Dialog.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/ContentPane.css"); +@import url("Calendar.css"); +@import url("Menu.css"); +@import url("form/Slider.css"); +@import url("ColorPalette.css"); +@import url("InlineEditBox.css"); +@import url("ProgressBar.css"); +@import url("TimePicker.css"); +@import url("layout/BorderContainer.css"); +@import url("Tree.css"); +@import url("Toolbar.css"); +@import url("Editor.css");/*in order to test button or menu item with icon */ +@import url("../../icons/editorIcons.css"); /*sprite for editor icons to be used by all themes*/ +@import url("TitlePane.css"); +@import url("form/NumberSpinner.css"); + +@import url("larson_rtl.css"); diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/larson_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/larson_rtl.css new file mode 100755 index 0000000..6f85707 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/larson_rtl.css @@ -0,0 +1,16 @@ +/* RTL files */ +@import url("../dijit_rtl.css"); +@import url("form/Common_rtl.css"); +@import url("form/Button_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("form/Slider_rtl.css"); +@import url("form/Select_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css");/* RTL sprite for editor icons to be used by all themes*/ +@import url("../../icons/commonIcons_rtl.css");/* RTL sprite for common icons to be used by all themes*/ +@import url("TitlePane_rtl.css"); +@import url("Menu_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Toolbar_rtl.css"); diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/AccordionContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/AccordionContainer.css new file mode 100755 index 0000000..a5a02be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/AccordionContainer.css @@ -0,0 +1,124 @@ +/* Accordion + * + * Styling AccordionContainer basically means styling the accordion pane (dijitAccordionInnerContainer) + * and the title inside of it (dijitAccordionTitle). There are 4 basic states to style: + * + * 1. closed pane (and default styling): + * .dijitAccordionInnerContainer - container for each accordion child + * .dijitAccordionTitle - title for each accordion child + * + * 2. active closed pane (ie, mouse down on a title bar) + * .dijitAccordionInnerContainerActive - for background-color, border + * .dijitAccordionInnerContainerActive dijitAccordionTitle - for text color + * + * 3. open pane (expanded child) + * .dijitAccordionChildWrapper - wraps around the child widget (typically ContentPane) + * setting a margin so that there's blue trim all the way around the child + * + * These rules need to override the closed pane active: + * + * .dijitAccordionInnerContainerSelected - for background-color, border + * .dijitAccordionInnerContainerSelected .dijitAccordionTitle - for text color + * + * 4. hovered pane, open or closed + * The selectors below affect hovering over both a closed pane (ie, hovering a title bar), + * and hovering over an open pane. Also, treat mouse down on an open pane as a hover: + * + * .dijitAccordionInnerContainerHover, .dijitAccordionInnerContainerSelectedActive - for background-color, border + * .dijitAccordionInnerContainerHover .dijitAccordionTitle - for text color + */ +.larson .dijitAccordionContainer { + border: none; +} +.larson .dijitAccordionInnerContainer { + background-color: #efefef; + /* gray, for closed pane */ + + border: solid 1px #cccccc; + margin-bottom: 1px; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-timing-function: linear; + -moz-transition-timing-function: linear; + transition-timing-function: linear; +} +.larson .dijitAccordionTitle { + background-color: transparent; + /* pick up color from dijitAccordionInnerContainer */ + + background-image: url("images/accordion.png"); + background-position: 0 0; + background-repeat: repeat-x; + padding: 5px 7px 2px 7px; + min-height: 17px; + color: #4a4a4a; +} +.larson .dijitAccordionTitleHover { + color: #000000; +} +.dj_ie6 .larson .dijitAccordionTitle { + background-image: none; +} +.larson .dijitAccordionContainer .dijitAccordionChildWrapper { + /* this extends the blue trim styling of the title bar to wrapping around the node. + * done by setting margin + */ + + background-color: #ffffff; + border: 1px solid #999999; + margin: 0 2px 2px; +} +.larson .dijitAccordionContainer .dijitAccordionContainer-child { + /* this is affecting the child widget itself */ + + padding: 9px; +} +/* Active state for closed pane */ +.larson .dijitAccordionInnerContainerActive { + border: 1px solid #999999; + background-color: #dcdcdc; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.larson .dijitAccordionInnerContainerActive .dijitAccordionTitle { + background-position: 0 -136px; + color: #000000; +} +/* Open (a.k.a. selected) pane */ +.larson .dijitAccordionInnerContainerSelected { + border-color: #999999; + background-color: #dfdfdf; +} +.larson .dijitAccordionInnerContainerSelected .dijitAccordionTitle { + color: #000000; + background-position: 0 0; + /* avoid effect when clicking the title of the open pane */ + +} +/* Hovering open or closed pane */ +.larson .dijitAccordionInnerContainerHover dijitAccordionTitle { + /* both open and closed */ + + color: #000000; +} +.larson .dijitAccordionInnerContainerHover, .larson .dijitAccordionInnerContainerSelectedActive { + /* note: clicking the currently selected Accordion pane should have no effect, so treating same as hover. */ + + border: 1px solid #999999; + background-color: #e3e3e3; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.larson .dijitAccordionInnerContainerSelectedHover .dijitAccordionChildWrapper, .larson .dijitAccordionInnerContainerSelectedActive .dijitAccordionChildWrapper { + background-color: #ffffff; + border: 1px solid #999999 !important; + -webkit-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.25); + box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.25); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/AccordionContainer.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/AccordionContainer.less new file mode 100755 index 0000000..c70cb80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/AccordionContainer.less @@ -0,0 +1,116 @@ +/* Accordion + * + * Styling AccordionContainer basically means styling the accordion pane (dijitAccordionInnerContainer) + * and the title inside of it (dijitAccordionTitle). There are 4 basic states to style: + * + * 1. closed pane (and default styling): + * .dijitAccordionInnerContainer - container for each accordion child + * .dijitAccordionTitle - title for each accordion child + * + * 2. active closed pane (ie, mouse down on a title bar) + * .dijitAccordionInnerContainerActive - for background-color, border + * .dijitAccordionInnerContainerActive dijitAccordionTitle - for text color + * + * 3. open pane (expanded child) + * .dijitAccordionChildWrapper - wraps around the child widget (typically ContentPane) + * setting a margin so that there's blue trim all the way around the child + * + * These rules need to override the closed pane active: + * + * .dijitAccordionInnerContainerSelected - for background-color, border + * .dijitAccordionInnerContainerSelected .dijitAccordionTitle - for text color + * + * 4. hovered pane, open or closed + * The selectors below affect hovering over both a closed pane (ie, hovering a title bar), + * and hovering over an open pane. Also, treat mouse down on an open pane as a hover: + * + * .dijitAccordionInnerContainerHover, .dijitAccordionInnerContainerSelectedActive - for background-color, border + * .dijitAccordionInnerContainerHover .dijitAccordionTitle - for text color + */ + +@import "../variables"; + +.larson .dijitAccordionContainer { + border:none; +} +.larson .dijitAccordionInnerContainer { + background-color: @unselected-background-color; /* gray, for closed pane */ + border:solid 1px @border-color; + margin-bottom:1px; + .transition-property(background-color,border); + .transition-duration(.3s); + .transition-timing-function(linear); +} +.larson .dijitAccordionTitle { + background-color: transparent; /* pick up color from dijitAccordionInnerContainer */ + background-image: url("images/accordion.png"); + background-position:0 0; + background-repeat:repeat-x; + padding: 5px 7px 2px 7px; + min-height:17px; + color:@unselected-text-color; +} +.larson .dijitAccordionTitleHover { + color:@hovered-text-color; +} +.dj_ie6 .larson .dijitAccordionTitle { + background-image: none; +} +.larson .dijitAccordionContainer .dijitAccordionChildWrapper { + /* this extends the blue trim styling of the title bar to wrapping around the node. + * done by setting margin + */ + background-color:@pane-background-color; + border:1px solid @selected-border-color; + margin: 0 2px 2px; +} + +.larson .dijitAccordionContainer .dijitAccordionContainer-child { + /* this is affecting the child widget itself */ + padding: 9px; +} + +/* Active state for closed pane */ + +.larson .dijitAccordionInnerContainerActive { + border:1px solid @selected-border-color; + background-color:@pressed-background-color; + .transition-duration(.1s); +} +.larson .dijitAccordionInnerContainerActive .dijitAccordionTitle { + background-position:0 -136px; + color:@selected-text-color; +} + +/* Open (a.k.a. selected) pane */ + +.larson .dijitAccordionInnerContainerSelected { + border-color:@selected-border-color; + background-color: @selected-background-color; +} +.larson .dijitAccordionInnerContainerSelected .dijitAccordionTitle { + color:@selected-text-color; + background-position: 0 0; /* avoid effect when clicking the title of the open pane */ +} + +/* Hovering open or closed pane */ + +.larson .dijitAccordionInnerContainerHover dijitAccordionTitle { + /* both open and closed */ + color:@hovered-text-color; +} + +.larson .dijitAccordionInnerContainerHover, +.larson .dijitAccordionInnerContainerSelectedActive { + /* note: clicking the currently selected Accordion pane should have no effect, so treating same as hover. */ + border:1px solid @hovered-border-color; + background-color:@hovered-background-color; + .transition-duration(.2s); +} + +.larson .dijitAccordionInnerContainerSelectedHover .dijitAccordionChildWrapper, +.larson .dijitAccordionInnerContainerSelectedActive .dijitAccordionChildWrapper { + background-color:@pane-background-color; + border:1px solid @hovered-border-color !important; + .box-shadow(inset 0 0 3px rgba(0, 0, 0, .25)); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/BorderContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/BorderContainer.css new file mode 100755 index 0000000..f55bcd9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/BorderContainer.css @@ -0,0 +1,109 @@ +/* BorderContainer + +Splitters and gutters separate panes within a BorderContainer. Splitters can be moved up and down (horizonal splitters) or left and right (vertical splitters), while Gutters are static. A "thumb" is the slit on a Splitter that indicates it is movable. + +Styling the BorderContainer widget consists of the following: + +.dijitBorderContainer - for border and padding of the entire border container + +.dijitSplitContainer-child, .dijitBorderContainer-child - for border or child panes of the border container. By default borders are put on all children of BorderContainer. + +.dijitBorderContainer-dijitTabContainerTop, +.dijitBorderContainer-dijitTabContainerBottom, +.dijitBorderContainer-dijitTabContainerLeft, +.dijitBorderContainer-dijitTabContainerRight, +.dijitBorderContainer-dijitAccordionContainer -for border of the border containers within TabContainer or AccordionContainer widget + +.dijitBorderContainer-dijitBorderContainer - for border and padding of nested BorderContainers + +Splitters and gutters: + +.dijitSplitterH, .dijitGutterH - for height, background, and border of a horizontal splitter and gutter +.dijitSplitterH .dijitSplitterThumb - for color, height/width of the thumb on a horizontal splitter +.dijitSplitterV, .dijitGutterV - - for height, background, and border of a vertical splitter and gutter +.dijitSplitterV .dijitSplitterThumb - for color, height/width of the thumb on a vertical splitter +.dijitSplitterHHover - for background-color of a hovered horizontal splitter +.dijitSplitterHHover .dijitSplitterThumb - for background-color of a hovered thumb on a horizontal splitter +.dijitSplitterVHover - for background-color of a hovered vertical splitter +.dijitSplitterVHover .dijitSplitterThumb - for background-color of a hovered thumb on a vertical splitter +.dijitSplitterHActive - for background-color of an active horizontal splitter +.dijitSplitterVActive - for background-color of an active horizontal splitter +*/ +.larson .dijitBorderContainer { + /* matches the width of the splitters between panes */ + + padding: 5px; +} +.larson .dijitSplitContainer-child, .larson .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + + border: 1px #cccccc solid; +} +.larson .dijitBorderContainer-dijitTabContainerTop, +.larson .dijitBorderContainer-dijitTabContainerBottom, +.larson .dijitBorderContainer-dijitTabContainerLeft, +.larson .dijitBorderContainer-dijitTabContainerRight, +.larson .dijitBorderContainer-dijitAccordionContainer { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + + border: none; +} +.larson .dijitBorderContainer-dijitBorderContainer { + /* make nested BorderContainers look like a single big widget with lots of splitters */ + + border: 0; + padding: 0; +} +/* Splitters and gutters */ +.larson .dijitSplitterH, .larson .dijitGutterH { + background: none; + border: 0; + height: 5px; +} +.larson .dijitSplitterH .dijitSplitterThumb { + background: #cccccc none; + height: 1px; + top: 2px; + width: 19px; +} +.larson .dijitSplitterV, .larson .dijitGutterV { + background: none; + border: 0; + width: 5px; + margin: 0; +} +.larson .dijitSplitterV .dijitSplitterThumb { + background: #cccccc none; + height: 19px; + left: 2px; + width: 1px; + margin: 0; +} +/* hovered splitter */ +.larson .dijitSplitterHHover { + font-size: 1px; + background: url("images/splitterHorizontalHover.png") no-repeat center top; +} +.larson .dijitSplitterHHover .dijitSplitterThumb { + background: #999999 none; +} +.larson .dijitSplitterVHover { + font-size: 1px; + background: url("images/splitterVerticalHover.png") no-repeat center left; +} +.larson .dijitSplitterVHover .dijitSplitterThumb { + background: #999999 none; +} +.dj_ie6 .dijitSplitterHHover, .dj_ie6 .larson .dijitSplitterVHover { + background-color: #cfe5fa; + background-image: none; +} +/* active splitter */ +.larson .dijitSplitterHActive, .larson .dijitSplitterVActive { + font-size: 1px; + background-color: #abd6ff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/BorderContainer.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/BorderContainer.less new file mode 100755 index 0000000..0d88d30 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/BorderContainer.less @@ -0,0 +1,128 @@ +/* BorderContainer + +Splitters and gutters separate panes within a BorderContainer. Splitters can be moved up and down (horizonal splitters) or left and right (vertical splitters), while Gutters are static. A "thumb" is the slit on a Splitter that indicates it is movable. + +Styling the BorderContainer widget consists of the following: + +.dijitBorderContainer - for border and padding of the entire border container + +.dijitSplitContainer-child, .dijitBorderContainer-child - for border or child panes of the border container. By default borders are put on all children of BorderContainer. + +.dijitBorderContainer-dijitTabContainerTop, +.dijitBorderContainer-dijitTabContainerBottom, +.dijitBorderContainer-dijitTabContainerLeft, +.dijitBorderContainer-dijitTabContainerRight, +.dijitBorderContainer-dijitAccordionContainer -for border of the border containers within TabContainer or AccordionContainer widget + +.dijitBorderContainer-dijitBorderContainer - for border and padding of nested BorderContainers + +Splitters and gutters: + +.dijitSplitterH, .dijitGutterH - for height, background, and border of a horizontal splitter and gutter +.dijitSplitterH .dijitSplitterThumb - for color, height/width of the thumb on a horizontal splitter +.dijitSplitterV, .dijitGutterV - - for height, background, and border of a vertical splitter and gutter +.dijitSplitterV .dijitSplitterThumb - for color, height/width of the thumb on a vertical splitter +.dijitSplitterHHover - for background-color of a hovered horizontal splitter +.dijitSplitterHHover .dijitSplitterThumb - for background-color of a hovered thumb on a horizontal splitter +.dijitSplitterVHover - for background-color of a hovered vertical splitter +.dijitSplitterVHover .dijitSplitterThumb - for background-color of a hovered thumb on a vertical splitter +.dijitSplitterHActive - for background-color of an active horizontal splitter +.dijitSplitterVActive - for background-color of an active horizontal splitter +*/ + +@import "../variables"; + +.larson .dijitBorderContainer { + /* matches the width of the splitters between panes */ + padding: 5px; +} + +.larson .dijitSplitContainer-child, +.larson .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px @border-color solid; +} + +.larson .dijitBorderContainer-dijitTabContainerTop, +.larson .dijitBorderContainer-dijitTabContainerBottom, +.larson .dijitBorderContainer-dijitTabContainerLeft, +.larson .dijitBorderContainer-dijitTabContainerRight, +.larson .dijitBorderContainer-dijitAccordionContainer { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + border: none; + +} +.larson .dijitBorderContainer-dijitBorderContainer { + /* make nested BorderContainers look like a single big widget with lots of splitters */ + border: 0; + padding: 0; +} + +/* Splitters and gutters */ + +.larson .dijitSplitterH, +.larson .dijitGutterH { + background:none; + border:0; + height:5px; +} + +.larson .dijitSplitterH .dijitSplitterThumb { + background:@border-color none; + height:1px; + top:2px; + width:19px; +} + +.larson .dijitSplitterV, +.larson .dijitGutterV { + background:none; + border:0; + width:5px; + margin: 0; +} + +.larson .dijitSplitterV .dijitSplitterThumb { + background:@border-color none; + height:19px; + left:2px; + width:1px; + margin: 0; +} + +/* hovered splitter */ +.larson .dijitSplitterHHover { + font-size: 1px; + background: url("images/splitterHorizontalHover.png") no-repeat center top; +} + + +.larson .dijitSplitterHHover .dijitSplitterThumb { + background:@hovered-border-color none; +} + +.larson .dijitSplitterVHover { + font-size: 1px; + background: url("images/splitterVerticalHover.png") no-repeat center left; +} + +.larson .dijitSplitterVHover .dijitSplitterThumb { + background:@hovered-border-color none; +} + +.dj_ie6 .dijitSplitterHHover, +.dj_ie6 .larson .dijitSplitterVHover { + background-color: @splitter-hovered-background-color; + background-image:none; +} + +/* active splitter */ +.larson .dijitSplitterHActive, +.larson .dijitSplitterVActive { + font-size: 1px; + background-color:@splitter-dragged-background-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/ContentPane.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/ContentPane.css new file mode 100755 index 0000000..130b04e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/ContentPane.css @@ -0,0 +1,38 @@ +/* ContentPane + * + * .dijitContentPane + * set padding for basic content pane + * + * Nested layouts: + * + * .dijitTabContainerTop-dijitContentPane, + * .dijitTabContainerLeft-dijitContentPane, + * .dijitTabContainerBottom-dijitContentPane, + * .dijitTabContainerRight-dijitContentPane + * set background-color and padding of ContentPanes nested within TabContainer (can do top, left, bottom, or right) or Accordion Container + * + * .dijitAccordionContainer-dijitContentPane + * set background-color and padding of ContentPane nested within Accordion + * + * .dijitSplitContainer-dijitContentPane, + * set background-color and padding of ContentPane nested within a SplitContainer + * + * .dijitBorderContainer-dijitContentPane + * set background-color and padding of ContentPane nested within a BorderContainer + */ +.larson .dijitContentPane { + padding: 8px; +} +/* nested layouts */ +.larson .dijitTabContainerTop-dijitContentPane, +.larson .dijitTabContainerLeft-dijitContentPane, +.larson .dijitTabContainerBottom-dijitContentPane, +.larson .dijitTabContainerRight-dijitContentPane, +.larson .dijitAccordionContainer-dijitContentPane { + background-color: #ffffff; + padding: 8px; +} +.larson .dijitSplitContainer-dijitContentPane, .larson .dijitBorderContainer-dijitContentPane { + background-color: #ffffff; + padding: 8px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/ContentPane.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/ContentPane.less new file mode 100755 index 0000000..bc112e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/ContentPane.less @@ -0,0 +1,43 @@ +/* ContentPane + * + * .dijitContentPane + * set padding for basic content pane + * + * Nested layouts: + * + * .dijitTabContainerTop-dijitContentPane, + * .dijitTabContainerLeft-dijitContentPane, + * .dijitTabContainerBottom-dijitContentPane, + * .dijitTabContainerRight-dijitContentPane + * set background-color and padding of ContentPanes nested within TabContainer (can do top, left, bottom, or right) or Accordion Container + * + * .dijitAccordionContainer-dijitContentPane + * set background-color and padding of ContentPane nested within Accordion + * + * .dijitSplitContainer-dijitContentPane, + * set background-color and padding of ContentPane nested within a SplitContainer + * + * .dijitBorderContainer-dijitContentPane + * set background-color and padding of ContentPane nested within a BorderContainer + */ + +@import "../variables"; + +.larson .dijitContentPane { + padding: 8px; +} + +/* nested layouts */ +.larson .dijitTabContainerTop-dijitContentPane, +.larson .dijitTabContainerLeft-dijitContentPane, +.larson .dijitTabContainerBottom-dijitContentPane, +.larson .dijitTabContainerRight-dijitContentPane, +.larson .dijitAccordionContainer-dijitContentPane { + background-color: @pane-background-color; + padding: 8px; +} +.larson .dijitSplitContainer-dijitContentPane, +.larson .dijitBorderContainer-dijitContentPane { + background-color: @pane-background-color; + padding: 8px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer.css new file mode 100755 index 0000000..f1dc34f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer.css @@ -0,0 +1,411 @@ +/* TabContainer + * + * Styling TabContainer means styling the TabList and Its content container (dijitTitlePane) + * + * Tab List: (including 4 kinds of tab location) + * .dijitTabContainerTop-tabs - tablist container at top + * .dijitTabContainerBottom-tabs - tablist container at bottom + * .dijitTabContainerLeft-tabs - tablist container at left + * .dijitTabContainerRight-tabs - tablist container at right + * + * Tab Strip Button: + * .dijitTabStripIcon - tab strip button icon + * .dijitTabStripMenuIcon - down arrow icon position + * .dijitTabStripSlideLeftIcon - left arrow icon position + * .dijitTabStripSlideRightIcon - right arrow icon position + * + * .tabStripButtonDisabled - styles for disabled tab strip buttons + * + * Tab Button: + * .dijitTabContainerTop-tabs .dijitTabInnerDiv/.dijitTabContent - styles for top tab button container + * .dijitTabContainerBottom-tabs .dijitTabInnerDiv/.dijitTabContent - styles for bottom tab button container + * .dijitTabContainerLeft-tabs .dijitTabInnerDiv/.dijitTabContent - styles for left tab button container + * .dijitTabContainerRight-tabs .dijitTabInnerDiv/.dijitTabContent - styles for right tab button container + * + * .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv/.dijitTabContent + * - styles for selected status of top tab button + * same to Bottom, Left, Right Tabs + * + * .dijitTabHover .dijitTabInnerDiv - styles when mouse hover on tab buttons + * .dijitTabActive .dijitTabInnerDiv - styles when mouse down on tab buttons + * .dijitTabChecked .dijitTabInnerDiv - styles when on buttons of selected tab + * + * .dijitTabCloseButton - the close action buttons lie at the right top of each tab button on closable tabs + * .dijitTabCloseButtonHover - styles when mouse hover on close action button + * .dijitTabCloseButtonActive - styles when mouse down on close action button + * + * Tab Button: (checked status) + * + * Tab Content Container: + * .dijitTabContainerTop-dijitContentPane + * .dijitTabContainerBottom-dijitContentPane + * .dijitTabContainerLeft-dijitContentPane + * .dijitTabContainerRight-dijitContentPane - for background and padding + * + * Nested Tabs: + * .dijitTabContainerNested - Container for nested tabs + * .dijitTabContainerTabListNested - tab list container for nested tabs + */ +/*** some common features ***/ +.larson .dijitTabPaneWrapper { + background: #ffffff; +} +.larson .dijitTabPaneWrapper, +.larson .dijitTabContainerTop-tabs, +.larson .dijitTabContainerBottom-tabs, +.larson .dijitTabContainerLeft-tabs, +.larson .dijitTabContainerRight-tabs { + /* todo: add common class name for this div */ + + border-color: #cccccc; +} +.larson .dijitTabCloseButton { + background: url("images/tabClose.png") no-repeat; + width: 14px; + height: 14px; + margin-left: 5px; + margin-right: -5px; +} +.larson .dijitTabCloseButtonHover { + background-position: -14px; +} +.larson .dijitTabCloseButtonActive { + background-position: -28px; +} +.larson .dijitTabSpacer { + /* set the spacer invisible. note that height:0 doesn't work on IE/quirks, it's still 10px. */ + + display: none; +} +.larson .dijitTabInnerDiv { + background-color: #efefef; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; + color: #4a4a4a; +} +.larson .dijitTabHover .dijitTabInnerDiv { + background-color: #e3e3e3; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; + color: #000000; +} +.larson .dijitTabActive .dijitTabInnerDiv { + background-color: #dcdcdc; + color: #000000; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.larson .dijitTabChecked .dijitTabInnerDiv { + background-color: #ffffff; + color: #000000; +} +.larson .dijitTabContent { + border: 1px solid #cccccc; +} +.larson .dijitTabHover .dijitTabContent { + border-color: #999999; +} +.larson .dijitTabActive .dijitTabContent { + border-color: #999999; +} +.larson .dijitTabChecked .dijitTabContent { + color: #000000; + border-color: #cccccc; +} +.larson .tabStripButton .dijitTabInnerDiv { + background-color: transparent; +} +.larson .tabStripButton .dijitTabContent { + border: none; +} +/*** end common ***/ +/*************** top tab ***************/ +.larson .dijitTabContainerTop-tabs .dijitTab { + top: 1px; + /* used for overlap */ + + margin-right: 1px; + /*padding-top: 10px;*/ + +} +.dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTab { + top: 10px; +} +/* for top tab padding. change height when status changes */ +.larson .dijitTabContainerTop-tabs .dijitTabContent { + padding: 7px 15px; + border-bottom-width: 0; + background-position: 0 0; + background-repeat: repeat-x; + min-width: 60px; + text-align: center; +} +.larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 8px; + padding-top: 8px; +} +/* normal status */ +.larson .dijitTabContainerTop-tabs .dijitTabInnerDiv { + background-position: 0 -248px; + background-position: bottom; + background-repeat: repeat-x; + -webkit-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); + -moz-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); +} +/* checked status */ +.larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image: none; + -webkit-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); +} +.larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + background-position: 0 -102px; + background-repeat: repeat-x; +} +/** end top tab **/ +/*************** bottom tab ***************/ +.larson .dijitTabContainerBottom-tabs .dijitTab { + top: -1px; + /* used for overlap */ + + margin-right: 1px; +} +/* calculate the position and size */ +.larson .dijitTabContainerBottom-tabs .dijitTabContent { + padding: 7px 15px; + border-top-width: 0; + background-position: 0 -249px; + background-repeat: repeat-x; + background-position: bottom; + min-width: 60px; + text-align: center; +} +.larson .dijitTabContainerBottom-tabs .dijitTab { + padding-bottom: 8px; +} +/* normal status */ +.larson .dijitTabContainerBottom-tabs .dijitTabInnerDiv { + background-position: top; + background-repeat: repeat-x; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} +/* checked status */ +.larson .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 8px; + padding-top: 8px; + background-position: 0 -119px; +} +.larson .dijitTabContainerBottom-tabs .dijitTabChecked { + padding-bottom: 0; +} +.larson .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image: none; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +/** end bottom tab **/ +/*************** left tab ***************/ +.larson .dijitTabContainerLeft-tabs .dijitTab { + border-right-width: 0; + left: 1px; + /* used for overlap */ + + margin-bottom: 1px; +} +/* normal status */ +.larson .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + background-image: url("images/tabLeft.png"); + background-position: -347px -340px; + background-repeat: repeat-y; +} +.larson .dijitTabContainerLeft-tabs .dijitTabContent { + padding: 3px 8px 4px 4px; + background-image: url("images/tabLeft.png"); + background-repeat: repeat-y; + background-position: 0 0; +} +/* checked status */ +.larson .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabContent { + padding-right: 9px; + border-right: none; + background-image: none; +} +.larson .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position: 0 -179px; + background-repeat: repeat-y; + -webkit-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); + box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); +} +/** end left tab **/ +/*************** right tab ***************/ +.larson .dijitTabContainerRight-tabs .dijitTab { + border-left-width: 0; + left: -1px; + /* used for overlap */ + + margin-bottom: 1px; +} +/* normal status */ +.larson .dijitTabContainerRight-tabs .dijitTabInnerDiv { + background-image: url("images/tabRight.png"); + background-repeat: repeat-y; + background-position: -1px -347px; +} +.larson .dijitTabContainerRight-tabs .dijitTabContent { + padding: 3px 8px 4px 4px; + background-image: url("images/tabRight.png"); + background-position: right top; + background-repeat: repeat-y; +} +/* checked status */ +.larson .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabContent { + padding-left: 5px; + border-left: none; + background-image: none; +} +.larson .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position: -348px -179px; + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); + -moz-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); +} +/** end right tab **/ +/************ left/right scroll buttons + menu button ************/ +.larson .tabStripButton { + background-color: #dfdfdf; + border: 1px solid #cccccc; +} +.larson .dijitTabListContainer-top .tabStripButton { + padding: 7px 3px; + margin-top: 1px; + background-position: 0 0; +} +.larson .dijitTabListContainer-bottom .tabStripButton { + padding: 5px 3px; + margin-bottom: 4px; + background-position: 0 -248px; + background-position: bottom; +} +.larson .tabStripButtonHover { + background-color: #e3e3e3; +} +.larson .tabStripButtonActive { + background-color: #dcdcdc; +} +.larson .dijitTabStripIcon { + height: 15px; + width: 15px; + margin: 0 auto; + background: url("../form/images/buttonArrows.png") no-repeat -75px 50%; + background-color: transparent; +} +.larson .dijitTabStripSlideRightIcon { + background-position: -24px 50%; +} +.larson .dijitTabStripMenuIcon { + background-position: -51px 50%; +} +/*disabled styles for tab strip buttons*/ +.larson .dijitTabListContainer-top .tabStripButtonDisabled, .larson .dijitTabListContainer-bottom .tabStripButtonDisabled { + background-color: #d3d3d3; + border: 1px solid #cccccc; + /* to match border of TabContainer itself */ + +} +.larson .tabStripButtonDisabled .dijitTabStripSlideLeftIcon { + background-position: -175px 50%; +} +.larson .tabStripButtonDisabled .dijitTabStripSlideRightIcon { + background-position: -124px 50%; +} +.larson .tabStripButtonDisabled .dijitTabStripMenuIcon { + background-position: -151px 50%; +} +/* Nested Tabs */ +.larson .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} +.larson .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom: solid 1px #cccccc; + padding: 0; + padding-left: 5px; + margin-top: -2px; +} +.larson .dijitTabContainerTabListNested .dijitTabContent { + background: none; + border: none; + padding: 4px; + margin-right: 5px; + border-color: #cccccc; + -webkit-transition-property: background-color, border-color; + -moz-transition-property: background-color, border-color; + transition-property: background-color, border-color; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; +} +.larson .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv { + /* 4 element selector to override box-shadow setting from above rule: + * .larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { ... } + */ + + background: none; + border: none; + top: 0; + /* to override top: 1px/-1px for normal tabs */ + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.larson .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent { + background-color: #dfdfdf; + border: solid 1px #999999; + padding: 3px; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.larson .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: none; +} +.larson .dijitTabContainerTabListNested .dijitTabActive .dijitTabContent { + border: solid 1px #cccccc; + padding: 3px; + background: #eaeaea; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.larson .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent { + padding: 3px; + border: solid 1px #cccccc; + background-color: #eaeaea; +} +.larson .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: none; + background-image: none; +} +.larson .dijitTabPaneWrapperNested { + border: none; + /* prevent double border */ + +} +.dj_ie6 .larson .dijitTabContent, +.dj_ie6 .larson .dijitTabInnerDiv, +.dj_ie6 .dijitTabListContainer-top .tabStripButton, +.dj_ie6 .dijitTabListContainer-bottom .tabStripButton { + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer.less new file mode 100755 index 0000000..a8331ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer.less @@ -0,0 +1,384 @@ +/* TabContainer + * + * Styling TabContainer means styling the TabList and Its content container (dijitTitlePane) + * + * Tab List: (including 4 kinds of tab location) + * .dijitTabContainerTop-tabs - tablist container at top + * .dijitTabContainerBottom-tabs - tablist container at bottom + * .dijitTabContainerLeft-tabs - tablist container at left + * .dijitTabContainerRight-tabs - tablist container at right + * + * Tab Strip Button: + * .dijitTabStripIcon - tab strip button icon + * .dijitTabStripMenuIcon - down arrow icon position + * .dijitTabStripSlideLeftIcon - left arrow icon position + * .dijitTabStripSlideRightIcon - right arrow icon position + * + * .tabStripButtonDisabled - styles for disabled tab strip buttons + * + * Tab Button: + * .dijitTabContainerTop-tabs .dijitTabInnerDiv/.dijitTabContent - styles for top tab button container + * .dijitTabContainerBottom-tabs .dijitTabInnerDiv/.dijitTabContent - styles for bottom tab button container + * .dijitTabContainerLeft-tabs .dijitTabInnerDiv/.dijitTabContent - styles for left tab button container + * .dijitTabContainerRight-tabs .dijitTabInnerDiv/.dijitTabContent - styles for right tab button container + * + * .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv/.dijitTabContent + * - styles for selected status of top tab button + * same to Bottom, Left, Right Tabs + * + * .dijitTabHover .dijitTabInnerDiv - styles when mouse hover on tab buttons + * .dijitTabActive .dijitTabInnerDiv - styles when mouse down on tab buttons + * .dijitTabChecked .dijitTabInnerDiv - styles when on buttons of selected tab + * + * .dijitTabCloseButton - the close action buttons lie at the right top of each tab button on closable tabs + * .dijitTabCloseButtonHover - styles when mouse hover on close action button + * .dijitTabCloseButtonActive - styles when mouse down on close action button + * + * Tab Button: (checked status) + * + * Tab Content Container: + * .dijitTabContainerTop-dijitContentPane + * .dijitTabContainerBottom-dijitContentPane + * .dijitTabContainerLeft-dijitContentPane + * .dijitTabContainerRight-dijitContentPane - for background and padding + * + * Nested Tabs: + * .dijitTabContainerNested - Container for nested tabs + * .dijitTabContainerTabListNested - tab list container for nested tabs + */ + +@import "../variables"; + +/*** some common features ***/ +.larson .dijitTabPaneWrapper { + background:@pane-background-color; +} +.larson .dijitTabPaneWrapper, +.larson .dijitTabContainerTop-tabs, +.larson .dijitTabContainerBottom-tabs, +.larson .dijitTabContainerLeft-tabs, +.larson .dijitTabContainerRight-tabs { + /* todo: add common class name for this div */ + border-color: @border-color; +} +.larson .dijitTabCloseButton { + background: url("images/tabClose.png") no-repeat; + width: 14px; + height: 14px; + margin-left: 5px; + margin-right:-5px; +} +.larson .dijitTabCloseButtonHover { + background-position:-14px; +} +.larson .dijitTabCloseButtonActive { + background-position:-28px; +} +.larson .dijitTabSpacer { + /* set the spacer invisible. note that height:0 doesn't work on IE/quirks, it's still 10px. */ + display: none; +} +.larson .dijitTabInnerDiv { + background-color:@unselected-background-color; + .transition-property(background-color, border); + .transition-duration(.35s); + color:@unselected-text-color; +} +.larson .dijitTabHover .dijitTabInnerDiv { + background-color:@hovered-background-color; + .transition-duration(.25s); + color:@hovered-text-color; +} +.larson .dijitTabActive .dijitTabInnerDiv { + background-color:@pressed-background-color; + color:@selected-text-color; + .transition-duration(.1s); +} +.larson .dijitTabChecked .dijitTabInnerDiv { + background-color:#ffffff; + color:@selected-text-color; +} + +.larson .dijitTabContent { + border: 1px solid @border-color; +} +.larson .dijitTabHover .dijitTabContent { + border-color: @hovered-border-color; +} +.larson .dijitTabActive .dijitTabContent { + border-color: @pressed-border-color; +} +.larson .dijitTabChecked .dijitTabContent { + color:@selected-text-color; // todo: redundant with .larson .dijitTabChecked .dijitTabInnerDiv above? + border-color: @border-color; // don't use @selected-border-color because need to match border of TabContainer +} + +.larson .tabStripButton .dijitTabInnerDiv { + background-color: transparent; +} +.larson .tabStripButton .dijitTabContent { + border: none; +} +/*** end common ***/ + + +/*************** top tab ***************/ +.larson .dijitTabContainerTop-tabs .dijitTab { + top: 1px; /* used for overlap */ + margin-right: 1px; + /*padding-top: 10px;*/ +} +.dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTab { + top: 10px; +} +/* for top tab padding. change height when status changes */ +.larson .dijitTabContainerTop-tabs .dijitTabContent { + padding:7px 15px; + border-bottom-width: 0; + background-position:0 0; + background-repeat:repeat-x; + min-width: 60px; + text-align: center; +} +.larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 8px; + padding-top: 8px; +} + +/* normal status */ +.larson .dijitTabContainerTop-tabs .dijitTabInnerDiv { + background-position:0 -248px; + background-position:bottom; + background-repeat:repeat-x; + .box-shadow(0 -1px 1px rgba(0, 0, 0, 0.04)); +} + +/* checked status */ +.larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image:none; + .box-shadow(0 -1px 2px rgba(0, 0, 0, 0.05)); +} +.larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent { + background-position:0 -102px; + background-repeat:repeat-x; +} +/** end top tab **/ + + +/*************** bottom tab ***************/ +.larson .dijitTabContainerBottom-tabs .dijitTab { + top: -1px; /* used for overlap */ + margin-right: 1px; +} +/* calculate the position and size */ +.larson .dijitTabContainerBottom-tabs .dijitTabContent { + padding:7px 15px; + border-top-width: 0; + background-position:0 -249px; + background-repeat: repeat-x; + background-position:bottom; + min-width: 60px; + text-align: center; +} +.larson .dijitTabContainerBottom-tabs .dijitTab { + padding-bottom: 8px; +} +/* normal status */ +.larson .dijitTabContainerBottom-tabs .dijitTabInnerDiv { + background-position: top; + background-repeat: repeat-x; + .box-shadow(0 1px 1px rgba(0, 0, 0, 0.04)); + +} + +/* checked status */ +.larson .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabContent { + padding-bottom: 8px; + padding-top: 8px; + background-position:0 -119px; +} +.larson .dijitTabContainerBottom-tabs .dijitTabChecked { + padding-bottom: 0; +} +.larson .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { + background-image:none; + .box-shadow(0 1px 2px rgba(0, 0, 0, 0.05)); +} +/** end bottom tab **/ + +/*************** left tab ***************/ +.larson .dijitTabContainerLeft-tabs .dijitTab { + border-right-width: 0; + left: 1px; /* used for overlap */ + margin-bottom: 1px; +} +/* normal status */ +.larson .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + background-image: url("images/tabLeft.png"); + background-position: -347px -340px; + background-repeat: repeat-y; +} +.larson .dijitTabContainerLeft-tabs .dijitTabContent { + padding:3px 8px 4px 4px; + background-image: url("images/tabLeft.png"); + background-repeat: repeat-y; + background-position:0 0; +} +/* checked status */ +.larson .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabContent { + padding-right: 9px; + border-right: none; + background-image: none; +} +.larson .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position:0 -179px; + background-repeat:repeat-y; + .box-shadow(-1px 0 2px rgba(0, 0, 0, .05)); +} +/** end left tab **/ + +/*************** right tab ***************/ +.larson .dijitTabContainerRight-tabs .dijitTab { + border-left-width: 0; + left: -1px; /* used for overlap */ + margin-bottom: 1px; +} +/* normal status */ +.larson .dijitTabContainerRight-tabs .dijitTabInnerDiv { + background-image: url("images/tabRight.png"); + background-repeat: repeat-y; + background-position: -1px -347px; +} +.larson .dijitTabContainerRight-tabs .dijitTabContent { + padding:3px 8px 4px 4px; + background-image: url("images/tabRight.png"); + background-position:right top; + background-repeat: repeat-y; +} +/* checked status */ +.larson .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabContent { + padding-left: 5px; + border-left: none; + background-image: none; +} +.larson .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv { + background-position:-348px -179px; + .box-shadow(1px 0 2px rgba(0, 0, 0, 0.07)); +} +/** end right tab **/ + + +/************ left/right scroll buttons + menu button ************/ +.larson .tabStripButton { + background-color:@button-background-color; + border: 1px solid @border-color; +} +.larson .dijitTabListContainer-top .tabStripButton { + padding: 7px 3px; + margin-top:1px; + background-position:0 0; +} +.larson .dijitTabListContainer-bottom .tabStripButton { + padding:5px 3px; + margin-bottom:4px; + background-position:0 -248px; + background-position:bottom; +} +.larson .tabStripButtonHover { + background-color:@hovered-background-color; +} +.larson .tabStripButtonActive { + background-color:@pressed-background-color; +} +.larson .dijitTabStripIcon { + height:15px; + width:15px; + margin: 0 auto; + background:url("../form/images/buttonArrows.png") no-repeat -75px 50%; + background-color: transparent; +} +.larson .dijitTabStripSlideRightIcon{ + background-position: -24px 50%; +} +.larson .dijitTabStripMenuIcon { + background-position: -51px 50%; +} + +/*disabled styles for tab strip buttons*/ +.larson .dijitTabListContainer-top .tabStripButtonDisabled, +.larson .dijitTabListContainer-bottom .tabStripButtonDisabled { + background-color:@tab-disabled-background-color; + border:1px solid @border-color; /* to match border of TabContainer itself */ +} +.larson .tabStripButtonDisabled .dijitTabStripSlideLeftIcon { + background-position:-175px 50%; +} +.larson .tabStripButtonDisabled .dijitTabStripSlideRightIcon { + background-position: -124px 50%; +} +.larson .tabStripButtonDisabled .dijitTabStripMenuIcon { + background-position: -151px 50%; +} +/* Nested Tabs */ +.larson .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} +.larson .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom:solid 1px @border-color; + padding:0; + padding-left: 5px; + margin-top: -2px; +} +.larson .dijitTabContainerTabListNested .dijitTabContent { + background:none; + border: none; + padding: 4px; + margin-right: 5px; + border-color: @border-color; + .transition-property(background-color, border-color); + .transition-duration(.3s); +} +.larson .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv { + /* 4 element selector to override box-shadow setting from above rule: + * .larson .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv { ... } + */ + background: none; + border: none; + top: 0;/* to override top: 1px/-1px for normal tabs */ + .box-shadow(none); +} +.larson .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent { + background-color: @nestedtab-hovered-background-color; + border:solid 1px @nestedtab-hovered-border-color; + padding: 3px; + .transition-duration(.2s); +} +.larson .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: none; +} +.larson .dijitTabContainerTabListNested .dijitTabActive .dijitTabContent { + border:solid 1px @nestedtab-selected-border-color; + padding: 3px; + background: @nestedtab-selected-background-color; + .transition-duration(.1s); +} +.larson .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent { + padding: 3px; + border:solid 1px @nestedtab-selected-border-color; + background-color: @nestedtab-selected-background-color; +} +.larson .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: none; + background-image:none; +} +.larson .dijitTabPaneWrapperNested { + border: none;/* prevent double border */ +} + + +.dj_ie6 .larson .dijitTabContent, +.dj_ie6 .larson .dijitTabInnerDiv, +.dj_ie6 .dijitTabListContainer-top .tabStripButton, +.dj_ie6 .dijitTabListContainer-bottom .tabStripButton{ + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer_rtl.css new file mode 100755 index 0000000..30c7a88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer_rtl.css @@ -0,0 +1,67 @@ +.larson .dijitTabContainerTop-tabs .dijitTabRtl, .larson .dijitTabContainerBottom-tabs .dijitTabRtl { + margin-right: 0; + margin-left: 1px; +} +.larson .dijitTabRtl { + -moz-box-orient: horizontal; + text-align: right; +} +.dj_ie7 .larson .dijitTabRtl .dijitTabContent { + display: block; + left: 0; +} +.dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTabRtl, .dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTabCheckedRtl { + top: 1px; +} +.dj_ie7 .larson .tabStripButtonRtl .dijitButtonContents, +.dj_ie8 .larson .tabStripButtonRtl .dijitButtonContents, +.dj_ie6 .larson .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie6 .larson .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .larson .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .larson .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .larson .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv { + float: left; +} +.dj_ie6 .larson .dijitTabRtl .tabLabel, +.dj_ie6 .larson .dijitTabContainerRight-tabs .dijitTabRtl, +.dj_ie6 .larson .dijitTabContainerLeft-tabs .dijitTabRtl, +.dj_ie7 .larson .dijitTabContainerRight-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .larson .dijitTabContainerLeft-tabs .dijitTabRtl .dijitTabInnerDiv { + /*Make the .tablabel have width in ie6 with haslayout property, fix Close icon position bug*/ + + zoom: 1; +} +.dj_ie6 .larson .dijitTabRtl .dijitTabCloseButton, .dj_ie7 .larson .dijitTabRtl .dijitTabCloseButton, .dj_iequirks .larson .dijitTabRtl .dijitTabCloseButton { + margin-right: 5px; +} +.dj_ie6 .larson .dijitTabContainerRightRtl .dijitTabContainerRight-tabs, .dj_ie6 .larson .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs { + width: 1%; +} +.dj_ie6 .dijitTabContainerTopStrip, .dj_ie6 .dijitTabContainerBottomStrip { + position: absolute; +} +.dj_iequirks .larson .dijitTabContainerTopRtl .dijitTabContainerTopStrip { + padding-top: 10px; +} +.dj_ie7 .larson .dijitTabContainerRight-tabs .dijitTabRtlChecked .dijitTabInnerDiv { + background-position: -341px -179px; +} +.dj_ie6 .dijitTabContainerTopRtl .dijitTabStripIcon, .dj_ie6 .dijitTabContainerBottomRtl .dijitTabStripIcon { + position: relative; +} +.dj_ie6-rtl .larson .dijitTabContainerTop-tabs { + /* this strange rule prevents IE6 bug in themeTester.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + + padding-left: 3px; +} +.dj_iequirks-rtl .larson .dijitTabListWrapper { + /* this strange rule prevents IE6 bug in themeTesterQuirk.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + + border-left: 1px solid #ffffff; + border-right: 1px solid #ffffff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer_rtl.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer_rtl.less new file mode 100755 index 0000000..ca3837d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/TabContainer_rtl.less @@ -0,0 +1,81 @@ +@import "../variables"; + +.larson .dijitTabContainerTop-tabs .dijitTabRtl, +.larson .dijitTabContainerBottom-tabs .dijitTabRtl { + margin-right: 0; + margin-left: 1px; +} +.larson .dijitTabRtl { + -moz-box-orient:horizontal; + text-align: right; +} +.dj_ie7 .larson .dijitTabRtl .dijitTabContent { + display: block; + left: 0; +} +.dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTabRtl, +.dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTabCheckedRtl { + top: 1px; +} + +// Note that .tabStripButtonRtl .dijitButtonContents needed for IE8 quirks but breaks IE6 quirks +.dj_ie7 .larson .tabStripButtonRtl .dijitButtonContents, +.dj_ie8 .larson .tabStripButtonRtl .dijitButtonContents, +.dj_ie6 .larson .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie6 .larson .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .larson .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .larson .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .larson .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_iequirks .larson .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv { + float:left; +} +.dj_ie6 .larson .dijitTabRtl .tabLabel, +.dj_ie6 .larson .dijitTabContainerRight-tabs .dijitTabRtl, +.dj_ie6 .larson .dijitTabContainerLeft-tabs .dijitTabRtl, +.dj_ie7 .larson .dijitTabContainerRight-tabs .dijitTabRtl .dijitTabInnerDiv, +.dj_ie7 .larson .dijitTabContainerLeft-tabs .dijitTabRtl .dijitTabInnerDiv { + /*Make the .tablabel have width in ie6 with haslayout property, fix Close icon position bug*/ + zoom:1; +} +.dj_ie6 .larson .dijitTabRtl .dijitTabCloseButton, +.dj_ie7 .larson .dijitTabRtl .dijitTabCloseButton, +.dj_iequirks .larson .dijitTabRtl .dijitTabCloseButton { + margin-right:5px; +} + +.dj_ie6 .larson .dijitTabContainerRightRtl .dijitTabContainerRight-tabs, +.dj_ie6 .larson .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs { + width:1%; +} + +.dj_ie6 .dijitTabContainerTopStrip, +.dj_ie6 .dijitTabContainerBottomStrip { + position:absolute; +} +.dj_iequirks .larson .dijitTabContainerTopRtl .dijitTabContainerTopStrip { + padding-top: 10px; +} +.dj_ie7 .larson .dijitTabContainerRight-tabs .dijitTabRtlChecked .dijitTabInnerDiv { + background-position:-341px -179px; +} + +.dj_ie6 .dijitTabContainerTopRtl .dijitTabStripIcon, +.dj_ie6 .dijitTabContainerBottomRtl .dijitTabStripIcon { + position: relative; +} + + +.dj_ie6-rtl .larson .dijitTabContainerTop-tabs { + /* this strange rule prevents IE6 bug in themeTester.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + padding-left: 3px; +} + +.dj_iequirks-rtl .larson .dijitTabListWrapper { + /* this strange rule prevents IE6 bug in themeTesterQuirk.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + border-left: 1px solid @pane-background-color; + border-right: 1px solid @pane-background-color; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/accordion.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/accordion.png new file mode 100755 index 0000000..4818103 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/accordion.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/splitterHorizontalHover.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/splitterHorizontalHover.png new file mode 100755 index 0000000..0f5b691 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/splitterHorizontalHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/splitterVerticalHover.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/splitterVerticalHover.png new file mode 100755 index 0000000..2c3c696 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/splitterVerticalHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabBottom.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabBottom.png new file mode 100755 index 0000000..dbcfc85 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabBottom.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabClose.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabClose.png new file mode 100755 index 0000000..f3b2363 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabClose.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabLeft.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabLeft.png new file mode 100755 index 0000000..8e9fcba Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabLeft.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabNested.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabNested.png new file mode 100755 index 0000000..0140cf4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabNested.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabRight.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabRight.png new file mode 100755 index 0000000..0aaae53 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabRight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabTop.png b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabTop.png new file mode 100755 index 0000000..2822487 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/larson/layout/images/tabTop.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/larson/variables.less b/js/dojo-release-1.7.2-src/dijit/themes/larson/variables.less new file mode 100755 index 0000000..6706a28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/larson/variables.less @@ -0,0 +1,189 @@ +// General +@text-color: #000000; // Text color for enabled widgets + +@border-color: #cccccc; // Border color for (enabled, unhovered) TextBox, Slider, Accordion, BorderContainer, TabContainer +@popup-border-color: #769dc0; // Border for Dialog, Menu, Tooltip. Must also update tooltip.png (the arrow image file) to match +@minor-border-color: #d3d3d3; // Color of borders inside widgets: horizontal line in Calendar between weeks, around color swatches in ColorPalette, above Dialog action bar + +@disabled-border-color: #d3d3d3; // Border color for disabled/readonly Button, TextBox etc. widgets +@disabled-background-color: #efefef;// Disabled button, textbox, etc. +@disabled-text-color: #818181; // Text color for disabled/readonly widgets + +@unselected-background-color: #efefef;// Background color for unselected/unopened tab button, accordion pane, TitlePane, Menu items +@unselected-text-color: #4a4a4a; // Text color for unselected/unopened tab button, accordion pane, TitlePane, Menu items + +@hovered-border-color: #999999; // Hover of textbox, tab label, BorderContainer splitter, Calendar, etc. +@hovered-background-color: #e3e3e3; // Background color for hover of Button, MenuBar, Accordion pane, Calendar... anything that has a (non-white) color to start with and gets darker on hover +@hovered-text-color: @text-color; // Used for title of select Accordion pane, label of select tab, hovered Menu item, etc. + +@pressed-border-color: #999999; // During click on Calendar day, Slider up/down buttons, tab button, etc. +@pressed-background-color: #dcdcdc; // Background color while clicking on Accordion/TitlePane title bar, tab button, Calendar day, Toolbar button, Tree row. + +@selected-border-color: #999999; // Selected AccordionPane, tab of nested TabContainer (but plain TabContainer is special) +@selected-background-color: #dfdfdf;// Selected Accordion pane, nested tab label, Tree row +@selected-text-color: @text-color; // title of selected Accordion pane, label of selected tab, hovered Menu item, etc. + +@bar-background-color: #efefef; // MenuBar, Toolbar, action bar at bottom of dialog +@pane-background-color: #fff; // Background color of Accordion panes, Dialogs, etc. +@popup-background-color: #fff; // Background for Dialog. TODO: currently use for ColorPalette, maybe should change. + + + +// Buttons +@button-border-color: #999999; // Border for (stand-alone) buttons in normal, hovered, or active state +@button-background-color: #dfdfdf; // Background color for (unhovered) buttons +@button-hovered-background-color: #cdcdcd; // Background color for hovered buttons +@button-pressed-background-color: #cdcdcd; // Background color for active buttons +@button-border-radius: 5px; // Rounded corner radius for buttons (except in toolbar) + +// Input widgets +@focused-border-color: #999999; // Focused textbox, editor, select, etc. +@error-border-color: #d46464; // Border for textbox in error state +@error-focused-border-color: #ce4f4f; // Border of textbox in error state, and focused +@erroricon-background-color: #d46464; // Background color for exclamation point validation icon (for TextBox in error state) +@textbox-background-color: #fff; // Default background color of TextBox based widgets +@textbox-hovered-background-color: #efefef; // Background color when hovering a unfocused TextBox, Select, Editor, or other input widget +@textbox-focused-background-color: @textbox-background-color; +@textbox-error-background-color: @textbox-background-color; +@textbox-disabled-background-color: @disabled-background-color; + +@textbox-padding: 2px; // Padding for Textbox, Textarea, etc. + +// CheckBox, RadioButton +@focus-outline-color: #999999; // Color for artificial focus outline around labels of checkboxes + +// TabContainer +@nestedtab-hovered-background-color: @selected-background-color; +@nestedtab-hovered-border-color: @selected-border-color; +@nestedtab-selected-border-color: @border-color; +@nestedtab-selected-background-color: #eaeaea; +@tab-disabled-background-color: #d3d3d3; // For disabled tabs of a TabContainer (not officially supported) + +// Arrow buttons (stand alone, or inside ComboBox / ComboButton / Spinner / etc. +@arrowbutton-background-color: #efefef; +@arrowbutton-hovered-background-color: #d4d4d4; // Color of arrow when hovering ComboBox. But hovering Spinner doesn't change arrow color (TODO) +@arrowbutton-pressed-background-color: #d4d4d4; +@arrowbutton-inner-border-color: #fff; // Typically the arrows have an inner white border (a.k.a. padding) and then an outer black-ish border + +// Slider +// Note: any changes here require corresponding changes in form/images/sliderThumbs.png +@slider-fullbar-background-color: #cfe5fa; // Background color for part of slider bar before (to the left or below) the handle +@slider-remainingbar-background-color: #fff; // Background color for part of slider bar after (to the right or above) the handle +@slider-hovered-fullbar-background-color: #abd6ff; // Background color for part of bar of hovered slider before (to the left or below) the handle +@slider-hovered-remainingbar-background-color: #fff;// Background color for part of bar of hovered slider after (to the right or above) the handle +@slider-hoveredButton-background-color: #fff; // Background color of slider increment/decrement buttons when mouse is over slider but not over the buttons +@slider-focused-fullbar-background-color: #abd6ff; // Background color for part of bar of focused slider before (to the left or below) the handle +@slider-focused-remainingbar-background-color: #fff;// Background color for part of bar of focused slider after (to the right or above) the handle +@slider-button-hovered-background-color: #cfe5fa; // Background color of slider increment/decrement buttons when mouse is over the buttons +@slider-button-pressed-background-color: #abd6ff; // Background color of slider increment/decrement buttons while button is depressed + +// Select, ComboBox +@select-dropdownitem-background-color: #fff; // Background color for items in the drop down list of a ComboBox/Select +@select-dropdownitem-hovered-background-color: #7dbefa; // Background color for the hovered item in the drop down list of a ComboBox/Select +@select-matchedtext-background-color: #abd6ff; // Background color of text in ComboBox drop down that matches typed in phrase + +// Menus +@menu-background-color: @popup-background-color; + +// Calendar +@calendar-background-color: #cfe5fa; +@calendar-currentmonth-background-color: #fff; // Background color for days of the current month +@calendar-adjacentmonth-background-color: #e9f4fe; // Background color used for days from previous or next month +@calendar-adjacentmonth-text-color: #769dc0; // Text color used for days from previous or next month +@calendar-date-pressed-border-color: #fff; // For some reason pressing a day of the month (as opposed to hovering it) makes the border go away, is this intentional? +@calendar-date-pressed-background-color: @pressed-background-color; +@calendar-date-selected-border-color: @selected-border-color; +@calendar-date-selected-background-color: #abd6ff; +@calendar-button-hovered-background-color: #e9f4fe; // for hover or next/previous year, and month drop down (TODO: border and background are built in to calendarArrows.png, can't control from here) +@calendar-button-hovered-border-color: #fff; // for hover or next/previous year, and month drop down +@calendar-button-pressed-background-color: #cfe5fa; +@calendar-button-pressed-border-color: @pressed-border-color; + + +// ProgressBar +@progressbar-border-color: @popup-border-color; // Border color of progress bar +@progressbar-full-background-color:#abd6ff; // Background color for part of progress bar indicating amount completed +@progressbar-empty-background-color: #fff; // Background color for part of progress bar indicating amount remaining +@progressbar-text-color: @text-color; // Color of progress bar text (ex: "35%"). Must contrast with both empty and full background colors. + +// TimePicker +@timepicker-minorvalue-background-color: #efefef; // For 3:15, 3:30, 3:45 but not 3:00 or 4:00 +@timepicker-minorvalue-text-color: #818181; +@timepicker-majorvalue-background-color: #e9f4fe; // For 3:00, 4:00, 5:00, etc. +@timepicker-value-hovered-background-color: #7dbefa; +@timepicker-value-hovered-text-color: @hovered-text-color; +@timepicker-arrow-hovered-background-color: #abd6ff; + +// ColorPalette +@colorpalette-background-color: #fff; +@swatch-border-color: @minor-border-color; +@swatch-hovered-border-color: #000; +@swatch-selected-border-color: #000; + +// Dialog +@dialog-underlay-color: #fff; // the thing that grays out the screen when a dialog is shown +@dialog-titlebar-border-color: #fff; // Inner border around the title sectionof a Dialog, inside the main border of the Dialog and the border between title and content +@dialog-titlebar-background-color: #abd6ff; + +// BorderContainer +@splitter-hovered-background-color: #cfe5fa; // Color of splitter when user hovers it, before mouse down +@splitter-dragged-background-color: #abd6ff; // Color of splitter while it's being dragged + +// Toolbar +@toolbar-button-checked-background-color: #fff; // a toggled-on button in the toolbar +@toolbar-combobutton-hovered-unhoveredsection-background-color: #f4ffff; // when user hovers a ComboButton in a Toolbar, the other half of the button turns this color +@toolbar-button-border-radius: 2px; // Rounded corner radius for buttons for buttons in toolbar + +// DnD +@dnd-avatar-background-color: #fff; // Background color of little Dialog-type box indicating dragged items +@dnd-avatar-header-background-color: #f58383; // Title bar for dragged items +@dnd-avatar-candrop-header-background-color: #97e68d;// Title bar for dragged items when they can be dropped +@dnd-dropseparator-color: #769dc0; // Color of line indicating that user is about to drop between items A & B + +// Document level +@document-text-color: #131313; // Text color for document itself (text outside of widgets) +@document-shadedsection-background-color: @bar-background-color;// background color used for
            , , and table header rows
            +@document-border-color: #d3d3d3;								// Border for 
            , , tables, etc.
            +
            +// Mixins
            +
            +.border-radius (@radius) {
            +	-moz-border-radius: @radius;
            +	border-radius: @radius;
            +}
            +
            +.box-shadow (@value) {
            +	-webkit-box-shadow: @value;
            +	-moz-box-shadow: @value;
            +	box-shadow: @value;
            +}
            +
            +.transition-property (@value) {
            +	-webkit-transition-property: @value;
            +	-moz-transition-property: @value;
            +	transition-property: @value;
            +}
            +
            +.transition-property (@value1, @value2) {
            +	-webkit-transition-property: @value1, @value2;
            +	-moz-transition-property: @value1, @value2;
            +	transition-property: @value1, @value2;
            +}
            +
            +.transition-duration (@value) {
            +	-webkit-transition-duration: @value;
            +	-moz-transition-duration: @value;
            +	transition-duration: @value;
            +}
            +
            +.transition-duration (@value1, @value2) {
            +	-webkit-transition-duration: @value1, @value2;
            +	-moz-transition-duration: @value1, @value2;
            +	transition-duration: @value1, @value2;
            +}
            +
            +.transition-timing-function (@value) {
            +	-webkit-transition-timing-function: @value;
            +	-moz-transition-timing-function: @value;
            +	transition-timing-function: @value;
            +}
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Calendar.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Calendar.css
            new file mode 100644
            index 0000000..55bb2cc
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Calendar.css
            @@ -0,0 +1,161 @@
            +/* Calendar*/
            +
            +.nihilo .dijitCalendarIncrementControl {
            +	/* next/prev month buttons */
            +	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 {
            +	/* month header cell */
            +	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 {
            +	/* day of week labels */
            +	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 {
            +	/* style for each day cell */
            +	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 		{
            +	/* days that are part of the previous or next month */
            +	color:#999999;
            +	background-color:#f5f5f5 !important;
            +	border:#f5f5f5 solid 1px !important;
            +}
            +
            +.nihilo .dijitCalendarCurrentMonth {
            +	/* days that are part of this month */
            +}
            +
            +.nihilo .dijitCalendarDisabledDate {
            +	text-decoration:line-through !important;
            +}
            +
            +.nihilo .dijitCalendarCurrentDate {
            +	/* cell for today's date */
            +	text-decoration:underline;
            +	font-weight:bold;
            +}
            +
            +.nihilo .dijitCalendarSelectedDate {
            +	/* cell for the selected date */
            +	background-color:#ffe284 !important;
            +	color:black !important;
            +	border:#f7c95c solid 1px !important;
            +}
            +
            +
            +.nihilo .dijitCalendarYearContainer {
            +	/* footer of the table that contains the year display/selector */
            +	background:white url("images/titleBar.png") repeat-x top;
            +}
            +
            +.nihilo .dijitCalendarYearLabel {
            +	/* container for all of 3 year labels */
            +	margin:0;
            +	padding:0.4em 0 0.25em 0;
            +	text-align:center;
            +	font-size: 1.17em;
            +}
            +
            +.nihilo .dijitCalendarSelectedYear {
            +	/* label for selected year */
            +	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 {
            +	/* label for next/prev years */
            +	color:black !important;
            +	font-weight:normal;
            +}
            +
            +/* Styling for month DropDownButton */
            +
            +.nihilo .dijitCalendar .dijitDropDownButton {
            +	margin: 0;
            +}
            +.nihilo .dijitCalendar .dijitButtonText {
            +	padding: 0;
            +}
            +.nihilo .dijitCalendar .dijitDropDownButton .dijitButtonNode {
            +	background-color: transparent;
            +	background-image: none;
            +	padding: 0;
            +}
            +
            +/* Styling for month drop down list */
            +
            +.nihilo .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {
            +	background-color: #ffe284;
            +	color: #243C5F;
            +}
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Calendar_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Calendar_rtl.css
            new file mode 100644
            index 0000000..6fc06f4
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Calendar_rtl.css
            @@ -0,0 +1,9 @@
            +/* Calendar */
            +
            +.dijitRtl .nihilo .dijitCalendarDecrease {
            +	background-position: -30px top;
            +}
            +
            +.dijitRtl .nihilo .dijitCalendarIncrease {
            +	background-position: 0 top;
            +}
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/ColorPalette.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/ColorPalette.css
            new file mode 100644
            index 0000000..8fbe9d7
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/ColorPalette.css
            @@ -0,0 +1,5 @@
            +.dijitColorPalette {
            +	border:1px solid #d3d3d3;
            +	background:#fff;
            +	-moz-border-radius: 0 !important;
            +}
            \ No newline at end of file
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Common.css
            new file mode 100644
            index 0000000..4986990
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Common.css
            @@ -0,0 +1,23 @@
            +/* DnD avatar-specific settings */
            +/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */
            +.nihilo .dojoDndItemBefore {
            +	border-top: 2px solid #369;
            +}
            +
            +.nihilo .dojoDndItemAfter {
            +	border-bottom: 2px solid #369;
            +}
            +
            +.nihilo .dojoDndItemOver {
            +	cursor:pointer;
            +}
            +
            +.nihilo table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
            +.nihilo .dojoDndAvatar td	{ border: none; }
            +.nihilo .dojoDndAvatar tr	{ border: none; }
            +.nihilo .dojoDndAvatarHeader td	{ height: 20px; padding: 0 0 0 21px; }
            +.nihilo .dojoDndAvatarItem td { padding: 2px;}
            +.nihilo.dojoDndMove .dojoDndAvatarHeader	{background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
            +.nihilo.dojoDndCopy .dojoDndAvatarHeader	{background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
            +.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader	{background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
            +.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader	{background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Dialog.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Dialog.css
            new file mode 100644
            index 0000000..4affeb8
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Dialog.css
            @@ -0,0 +1,152 @@
            +/* Dialog */
            +
            +.nihilo .dijitDialog {
            +	background: #eee;
            +	border: 1px solid #d3d3d3;
            +	-webkit-box-shadow: 0 5px 10px #adadad;
            +	padding: 0;
            +}
            +
            +.nihilo .dijitDialog .dijitDialogTitle {
            +	/* typography and styling of the dialog title */
            +	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 {
            +	/* outer container for the titlebar of the dialog */
            +	background: #fafafa url("images/titleBar.png") repeat-x top left;
            +	padding: 5px 6px 3px 6px;
            +	outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */
            +}
            +
            +.nihilo .dijitDialogCloseIcon {
            +	/* the default close icon for the dialog */
            +	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;
            +}
            +
            +/* Tooltip and TooltipDialog */
            +
            +.nihilo .dijitTooltip,
            +.nihilo .dijitTooltipDialog {
            +	/* the outermost dom node, holding the connector and container */
            +	background: transparent;	/* make the area on the sides of the arrow transparent */
            +}
            +
            +.dijitTooltipBelow {
            +	/* leave room for arrow above content */
            +	padding-top: 10px;
            +}
            +
            +.dijitTooltipAbove {
            +	/* leave room for arrow below content */
            +	padding-bottom: 10px;
            +}
            +
            +.nihilo .dijitTooltipContainer {
            +	/*
            +		The part with the text.
            +
            +		NOTE:
            +			FF doesn't clip images used as CSS bgs if you specify a border
            +			radius. If you use a solid color, it does. Webkit gets it right.
            +			Sigh.
            +		background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
            +	*/
            +	background-color: #fff;
            +	border:1px solid #d3d3d3;
            +	padding:0.45em;
            +}
            +
            +.nihilo .dijitTooltipConnector {
            +	/* the arrow piece */
            +	border:0;
            +	z-index: 2;
            +}
            +
            +.nihilo .dijitTooltipABRight .dijitTooltipConnector {
            +	/* above or below tooltip, but the arrow appears on the right,
            +		and the right edges of target and tooltip are aligned rather than the left */
            +	left: auto !important;
            +	right: 6px;
            +}
            +
            +.nihilo .dijitTooltipBelow .dijitTooltipConnector {
            +	/* the arrow piece for tooltips below an element */
            +	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 {
            +	/* the arrow piece for tooltips above an element */
            +	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 {
            +	/* the arrow piece for tooltips to the left of an element, bottom borders aligned */
            +	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 {
            +	/* the arrow piece for tooltips to the right of an element, bottom borders aligned */
            +	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");
            +}
            +
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Dialog_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Dialog_rtl.css
            new file mode 100644
            index 0000000..5e0cffc
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Dialog_rtl.css
            @@ -0,0 +1,6 @@
            +/* Dialog */
            +
            +.dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon {
            +	right: auto;
            +	left: 5px;
            +}
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Editor.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Editor.css
            new file mode 100644
            index 0000000..108aae7
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Editor.css
            @@ -0,0 +1,16 @@
            +.nihilo .dijitToolbar .dijitToolbarSeparator {
            +	background: url('../../icons/images/editorIconsEnabled.png'); /* separator in editor icons sprite image - enabled state */
            +}
            +
            +/**** ICONS *****/
            +
            +.nihilo .dijitEditorIcon {
            +	background-image: url('../../icons/images/editorIconsEnabled.png'); /* editor icons sprite image - enabled state */
            +	background-repeat: no-repeat;
            +	width: 18px;
            +	height: 18px;
            +	text-align: center;
            +}
            +.nihilo .dijitDisabled .dijitEditorIcon {
            +	background-image: url('../../icons/images/editorIconsDisabled.png'); /* editor icons sprite image - disabled state */
            +}
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Editor_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Editor_rtl.css
            new file mode 100644
            index 0000000..ca1cc0c
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Editor_rtl.css
            @@ -0,0 +1,9 @@
            +/* Editor */
            +.dijitRtl .nihilo .dijitEditorIcon {
            +	background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); /* editor icons sprite image - enabled state */
            +}
            +.dijitRtl .nihilo .dijitDisabled .dijitEditorIcon {
            +	background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); /* editor icons sprite image - disabled state */
            +}
            +
            +
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Menu.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Menu.css
            new file mode 100644
            index 0000000..cad4698
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Menu.css
            @@ -0,0 +1,77 @@
            +
            +/* Menu */
            +.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 .dijitMenuItemSelected {
            +	background-color: #ffe284; /* #95a0b0; #555555; #aaaaaa; #646464;  #60a1ea; #848484; */
            +	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;
            +}
            +
            +/* separator can be two pixels -- set border of either one to 0 to have only one */
            +.nihilo .dijitMenuSeparatorTop {
            +	border-bottom: 1px solid #fff; /*97adcb; */
            +}
            +
            +.nihilo .dijitMenuSeparatorBottom {
            +	border-top: 1px solid #d3d3d3;
            +}
            +
            +/* the checked menu item */
            +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/Menu_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Menu_rtl.css
            new file mode 100644
            index 0000000..40b3b41
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Menu_rtl.css
            @@ -0,0 +1,10 @@
            +/* Menu */
            +
            +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/ProgressBar.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/ProgressBar.css
            new file mode 100644
            index 0000000..6c50a7e
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/ProgressBar.css
            @@ -0,0 +1,33 @@
            +
            +/****
            +		dijit.ProgressBar
            + ****/
            +
            +.nihilo .dijitProgressBar {
            +	margin:2px 0 2px 0;
            +}
            +
            +.nihilo .dijitProgressBarEmpty{
            +	/* outer container and background of the bar that's not finished yet*/
            +	background:#fff url("images/progressBarEmpty.png") repeat-x center center;
            +	border-color: #f8d582 #f8d582 #f8d582 #f8d582;
            +}
            +
            +.nihilo .dijitProgressBarTile{
            +	/* inner container for finished portion when in 'tile' (image) mode */
            +	background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
            +}
            +
            +.nihilo .dijitProgressBarFull {
            +	border-right:1px solid #f8d582;
            +}
            +
            +.nihilo .dijitProgressBarLabel {
            +	/* Set to a color that contrasts with both the "Empty" and "Full" parts. */
            +	color:#293a4b;
            +}
            +
            +.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile {
            +	/* use an animated gif for the progress bar in 'indeterminate' mode */
            +	background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
            +}
            \ No newline at end of file
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TimePicker.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TimePicker.css
            new file mode 100644
            index 0000000..cffdbf5
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TimePicker.css
            @@ -0,0 +1,51 @@
            +/* Time Picker */
            +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/TimePicker_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TimePicker_rtl.css
            new file mode 100644
            index 0000000..50848c3
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TimePicker_rtl.css
            @@ -0,0 +1,4 @@
            +.dj_ie6-rtl .nihilo .dijitTimePickerMarkerHover,
            +.dj_ie7-rtl .nihilo .dijitTimePickerMarkerHover {
            +        border-top: 0; /* IE6/7 bug causes mouseover/out event storm */
            +}
            diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TitlePane.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TitlePane.css
            new file mode 100644
            index 0000000..6d16ff9
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TitlePane.css
            @@ -0,0 +1,54 @@
            +/**
            + * dijit.TitlePane
            + *
            + */
            +
            +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/TitlePane_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TitlePane_rtl.css
            new file mode 100644
            index 0000000..7b3ba21
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/TitlePane_rtl.css
            @@ -0,0 +1,6 @@
            +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/Toolbar.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Toolbar.css
            new file mode 100644
            index 0000000..1c3e327
            --- /dev/null
            +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Toolbar.css
            @@ -0,0 +1,65 @@
            +.nihilo .dijitToolbar {
            +	border-bottom: 1px solid #ccc;
            +	background:#eaeaea url("images/titleBar.png") repeat-x top left;
            +}
            +
            +/* setting a min-height on ditor toolbar */
            +.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;	/* on hover etc., margin replaced w/border */
            +}
            +
            +.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 {
            +	/* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */
            +	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 {
            +	/* focus border doesn't appear on 
            for IE, so need to add it manually */ + border: 1px #555 dotted !important; + padding: 0; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Tree.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Tree.css new file mode 100644 index 0000000..a33b969 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Tree.css @@ -0,0 +1,100 @@ +/* Tree */ + +.nihilo .dijitTreeNode { + background : url('images/treeI.gif') no-repeat; + background-position : top left; + background-repeat : repeat-y; + zoom: 1; +} + +/* left vertical line (grid) for all nodes */ +.nihilo .dijitTreeIsLast { + background: url('images/treeI_half.gif') no-repeat; +} + +.nihilo .dijitTreeRowHover { + /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */ + 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 { + /* so insert line shows up on IE when dropping after a target element */ + 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; +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.nihilo .dijitTreeNode .dojoDndItemBefore, +.nihilo .dijitTreeNode .dojoDndItemAfter { + border-bottom: none; + border-top: none; +} + +.nihilo .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + /* copied from Common.css */ + border-top: 2px solid #369; +} + +.nihilo .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + /* copied from Common.css */ + border-bottom: 2px solid #369; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Tree_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Tree_rtl.css new file mode 100644 index 0000000..4462ed1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/Tree_rtl.css @@ -0,0 +1,22 @@ +/* Tree */ + +.dijitRtl .nihilo .dijitTreeNode, +.dijitRtl .nihilo .dijitTreeExpandoLeaf { + /* disable grid lines for Tree in RTL mode, too hard to support */ + background-image: none; +} + +.dijitRtl .nihilo .dijitTreeContent { + padding-left: 0; + padding-right: 1px; +} + +.dijitRtl .nihilo .dijitTreeExpandoOpened { + /* todo: icon contains grid line but grid lines disabled above */ + background: url('images/spriteTree_rtl.gif') no-repeat -18px top; +} + +.dijitRtl .nihilo .dijitTreeExpandoClosed { + /* todo: icon contains grid line but grid lines disabled above */ + background-image: url('images/spriteTree_rtl.gif'); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Button.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Button.css new file mode 100644 index 0000000..90e1ee2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Button.css @@ -0,0 +1,129 @@ + +/***** + dijit.form.Button + dijit.form.DropDownButton + dijit.form.ComboButton + dijit.form.ComboBox (partial) + dijit.form.Spinner (partial) (TODO: create NumberSpinner.css file like claro has) + *****/ + +.nihilo .dijitButtonNode { + /* enabled state - inner */ + /* border:1px outset #a0a0a0; */ + border:1px solid #dedede; + border-bottom:1px solid #dedede; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #fff url("../images/buttonEnabled.png") repeat-x top left; +} + +.nihilo .dijitSelect .dijitButtonContents { + border-right: none; +} + +.nihilo .dijitButtonText { + text-align: center; + padding: 0 0.3em; +} + +.nihilo .dijitComboBox .dijitButtonNode { + border-width: 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 { + /* disabled state - inner */ + 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 { + /* opacity doesn't work on table node in IE, work around here */ + color: #aaa; +} + + +.nihilo .dijitButtonHover .dijitButtonNode, +.nihilo .dijitButtonNodeHover, +.nihilo .dijitToggleButtonHover .dijitButtonNode, +.nihilo .dijitDropDownButtonHover .dijitButtonNode, +.nihilo .dijitButtonContentsHover, +.nihilo .dijitDownArrowButtonHover, +.nihilo .dijitUpArrowButtonHover { + /* hover state - inner */ + /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ + 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 { + /* active state - inner (for when you are pressing a normal button, or + * when a radio-type button is in a depressed state + */ + 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; /* image has too many blank pixels on top */ +} +.dj_ie .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner { + margin-top: 1px; /* image has too many blank pixels on top */ +} +.nihilo .dijitSpinnerButtonContainer { + width: auto; + padding: 0; +} +.nihilo .dijitSpinner .dijitArrowButton { + width: 15px; +} +.nihilo .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +.nihilo .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Button_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Button_rtl.css new file mode 100644 index 0000000..60d4c4d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Button_rtl.css @@ -0,0 +1,8 @@ +.dijitRtl .nihilo .dijitComboBox .dijitButtonNode { + border-width: 0 0 0 1px; +} +.dijitRtl .nihilo .dijitSelect .dijitButtonContents { + border-left: none; + border-right-width: 1px; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Checkbox.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Checkbox.css new file mode 100644 index 0000000..260666f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Checkbox.css @@ -0,0 +1,67 @@ + +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.nihilo .dijitToggleButton .dijitCheckBox, +.nihilo .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/spriteCheckbox.gif'); +} + +.nihilo .dijitCheckBox, +.nihilo .dijitCheckBoxIcon { /* inside a toggle button */ + background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.nihilo .dijitCheckBox, +.nihilo .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -16px; +} + +.nihilo .dijitCheckBoxChecked, +.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: 0; +} + +.nihilo .dijitCheckBoxDisabled { + /* disabled */ + background-position: -48px; +} + +.nihilo .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -32px; +} + +.nihilo .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -80px; +} + +.nihilo .dijitCheckBoxCheckedHover { + /* hovering over a checked enabled checkbox */ + background-position: -64px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Common.css new file mode 100644 index 0000000..b67195f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Common.css @@ -0,0 +1,74 @@ + +/**** + dijit.form.TextBox + dijit.form.ValidationTextBox + dijit.form.SerializableTextBox + dijit.form.RangeBoundTextBox + dijit.form.NumberTextBox + dijit.form.CurrencyTextBox + dijit.form.NumberSpinner + dijit.form.ComboBox (partial) + ****/ + +.nihilo .dijitInputContainer input, +.nihilo .dijitTextBox { + margin: 0 0.1em; +} + +.nihilo .dijitTextBox, +.nihilo .dijitTextArea { + /* For all except dijit.form.NumberSpinner: the actual input element. + For TextBox, ComboBox, Spinner: the table that contains the input. + Otherwise the actual input element. + */ + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; + border:1px solid #d3d3d3; +} + +.nihilo .dijitComboBox .dijitButtonNode { + padding: 0 0.2em !important; +} +.nihilo .dijitTextBox .dijitButtonNode { + /* line between the input area and the drop down button */ + border-color: #d3d3d3; +} + +.nihilo .dijitTextBoxFocused, +.nihilo .dijitTextAreaFocused { + /* input field when focused (ie: typing affects it) */ + border-color:#b3b3b3; +} +.nihilo .dijitTextBoxFocused .dijitButtonNode, +.nihilo .dijitSpinner .dijitUpArrowButtonActive, +.nihilo .dijitSpinner .dijitDownArrowButtonActive { + border-left-color:#d3d3d3; +} +.nihilo .dijitSpinnerFocused .dijitDownArrowButton, +.nihilo .dijitSpinner .dijitUpArrowButtonActive, +.nihilo .dijitSpinner .dijitDownArrowButtonActive { + border-top-color:#d3d3d3; +} + +.nihilo .dijitError { + border-color:#b3b3b3; + background-color:#f9f7ba; + background-image:none; +} + +.nihilo .dijitErrorFocused { + background-color:#ff6; + background-image:none; +} + +/* Validation errors */ +.nihilo .dijitValidationIcon { + /* prevent height change when widget goes from valid to invalid state */ + width: 16px; + background: transparent url('../images/warning.png') no-repeat center center; +} + +/* The highlight is shown in the ComboBox menu. */ +.nihilo .dijitComboBoxHighlightMatch { + background-color:#d3d3d3; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/RadioButton.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/RadioButton.css new file mode 100644 index 0000000..d0dba30 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/RadioButton.css @@ -0,0 +1,66 @@ +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.nihilo .dijitToggleButton .dijitRadio, +.nihilo .dijitToggleButton .dijitRadioIcon { + background-image: url('../images/spriteRadio.gif'); +} + +.nihilo .dijitRadio, +.nihilo .dijitRadioIcon { /* inside a toggle button */ + background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.nihilo .dijitRadio, +.nihilo .dijitToggleButton .dijitRadioIcon { + /* unselected */ + background-position: -16px; +} + +.nihilo .dijitRadioChecked, +.nihilo .dijitToggleButtonChecked .dijitRadioIcon { + /* selected */ + background-position: 0; +} + +.nihilo .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -48px; +} + +.nihilo .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -32px; +} + +.nihilo .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -80px; +} + +.nihilo .dijitRadioCheckedHover { + /* hovering over a selected enabled radio button */ + background-position: -64px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Select.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Select.css new file mode 100644 index 0000000..61967e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Select.css @@ -0,0 +1,54 @@ +.nihilo .dijitSelect .dijitButtonNode { + padding: 0; +} + +/* Make unselected "look" more like a text box and less like a button */ +.nihilo .dijitSelect .dijitButtonContents { + padding-top: 1px; + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; +} +.nihilo .dijitSelectHover .dijitButtonContents, +.nihilo .dijitSelectActive .dijitButtonContents, +.nihilo .dijitSelectOpened .dijitButtonContents, +.nihilo .dijitSelectDisabled .dijitButtonContents, +.nihilo .dijitSelectReadOnly .dijitButtonContents{ + background: transparent none; +} +.dj_ie .nihilo .dijitSelect .dijitButtonContents { + padding-top: 0; +} + +.nihilo .dijitSelect .dijitArrowButton { + padding: 0 2px; +} + +/* Mirror DropDownButton */ +.nihilo .dijitSelectDisabled .dijitButtonNode { + border-color: #dedede; + background:#fafafa url("../images/buttonDisabled.png") top repeat-x; +} +.dj_ie .nihilo .dijitSelectDisabled .dijitButtonNode * { + filter: gray() alpha(opacity=50); +} + +.nihilo .dijitSelectHover .dijitButtonNode { + color:#000; + background:#fcfcfc url("../images/buttonHover.png") repeat-x top left; +} + +.nihilo .dijitSelectActive .dijitButtonNode, +.nihilo .dijitSelectOpened .dijitButtonNode { + border-color:#dedede; + background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x; +} + +/* Make the menu look more combobox-like */ +.nihilo .dijitSelectMenu td { + padding: 0; +} +.nihilo .dijitSelectMenu .dijitMenuItemLabel, +.nihilo .dijitSelectMenu .dijitMenuArrowCell { + padding: 0.1em 0.2em; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Slider.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Slider.css new file mode 100644 index 0000000..16bcd09 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Slider.css @@ -0,0 +1,141 @@ + +/**** + SLIDER +****/ + +.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; + /* border-color: #b4b4b4; */ +} +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Slider_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Slider_rtl.css new file mode 100644 index 0000000..1523d4a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/Slider_rtl.css @@ -0,0 +1,36 @@ + +/* Slider */ + +.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; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/TimeTextBox.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/TimeTextBox.css new file mode 100644 index 0000000..bf67b66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/form/TimeTextBox.css @@ -0,0 +1 @@ +@CHARSET "UTF-8"; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/accordionItemActive.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/accordionItemActive.png new file mode 100644 index 0000000..58f3cf9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/accordionItemActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonActive.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonActive.png new file mode 100644 index 0000000..e2f2fda Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonDisabled.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonDisabled.png new file mode 100644 index 0000000..b76af42 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonDisabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonEnabled.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonEnabled.png new file mode 100644 index 0000000..d4fd306 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonEnabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonHover.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonHover.png new file mode 100644 index 0000000..1af7e83 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/buttonHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndCopy.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndCopy.png new file mode 100644 index 0000000..baecd7c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndMove.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndMove.png new file mode 100644 index 0000000..07f878c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndMove.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndNoCopy.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndNoCopy.png new file mode 100644 index 0000000..9bf9c33 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndNoCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndNoMove.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndNoMove.png new file mode 100644 index 0000000..cb8bd8b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/dndNoMove.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/no.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/no.gif new file mode 100644 index 0000000..9021a14 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/no.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumb.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumb.gif new file mode 100644 index 0000000..53b33e5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumb.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumb.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumb.png new file mode 100644 index 0000000..045bf35 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif new file mode 100644 index 0000000..8c6f92e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumbFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumbFocus.png new file mode 100644 index 0000000..c235849 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/preciseSliderThumbFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarAnim.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarAnim.gif new file mode 100644 index 0000000..543d048 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarAnim.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarEmpty.png new file mode 100644 index 0000000..c2d3695 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarFull.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarFull.png new file mode 100644 index 0000000..a8f3865 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/progressBarFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderEmpty.png new file mode 100644 index 0000000..99fbd72 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderEmptyVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderEmptyVertical.png new file mode 100644 index 0000000..2d497e3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderEmptyVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFull.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFull.png new file mode 100644 index 0000000..9adb254 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullFocus.png new file mode 100644 index 0000000..3d75cae Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullVertical.png new file mode 100644 index 0000000..27e9752 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullVerticalFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullVerticalFocus.png new file mode 100644 index 0000000..cca6184 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderFullVerticalFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumb.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumb.gif new file mode 100644 index 0000000..29899a4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumb.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumb.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumb.png new file mode 100644 index 0000000..b6abbd2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumbFocus.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumbFocus.gif new file mode 100644 index 0000000..f8d306f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumbFocus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumbFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumbFocus.png new file mode 100644 index 0000000..73ee705 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/sliderThumbFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png new file mode 100644 index 0000000..e7bc204 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerH.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerH.png new file mode 100644 index 0000000..5f5b0e9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerH.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png new file mode 100644 index 0000000..410a0a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerV.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerV.png new file mode 100644 index 0000000..064bc18 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/splitContainerSizerV.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteArrows.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteArrows.gif new file mode 100644 index 0000000..fc81207 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteArrows.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteArrows.png new file mode 100644 index 0000000..73aa700 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteCheckbox.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteCheckbox.gif new file mode 100644 index 0000000..d2c4ebf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteCheckbox.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteCheckbox.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteCheckbox.png new file mode 100644 index 0000000..e992330 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteCheckbox.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteDivIcons.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteDivIcons.gif new file mode 100644 index 0000000..00ad23a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteDivIcons.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteDivIcons.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteDivIcons.png new file mode 100644 index 0000000..413098a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteDivIcons.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRadio.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRadio.gif new file mode 100644 index 0000000..8dd6e57 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRadio.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRadio.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRadio.png new file mode 100644 index 0000000..14c1080 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRadio.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif new file mode 100644 index 0000000..251389a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png new file mode 100644 index 0000000..e81ba07 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree.gif new file mode 100644 index 0000000..e546e28 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree.png new file mode 100644 index 0000000..33ae07b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree_rtl.gif new file mode 100644 index 0000000..bbcc64b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree_rtl.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree_rtl.png new file mode 100644 index 0000000..b06afdb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/spriteTree_rtl.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomActiveC.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomActiveC.gif new file mode 100644 index 0000000..84bffde Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomActiveC.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif new file mode 100644 index 0000000..6803db4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomEnabledC.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomEnabledC.gif new file mode 100644 index 0000000..9ef9ab0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomEnabledC.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif new file mode 100644 index 0000000..b6b08ce Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomHoverC.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomHoverC.gif new file mode 100644 index 0000000..0f533b5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomHoverC.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif new file mode 100644 index 0000000..010b08a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabContainerSprite.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabContainerSprite.gif new file mode 100644 index 0000000..92044a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabContainerSprite.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabLeftChecked.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabLeftChecked.gif new file mode 100644 index 0000000..d59fd4a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabLeftChecked.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabRightChecked.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabRightChecked.gif new file mode 100644 index 0000000..d32f44e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabRightChecked.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripe.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripe.gif new file mode 100644 index 0000000..a934675 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripe.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeBottom.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeBottom.gif new file mode 100644 index 0000000..64c3376 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeBottom.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeLeft.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeLeft.gif new file mode 100644 index 0000000..d607a45 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeLeft.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeRight.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeRight.gif new file mode 100644 index 0000000..9778ced Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tabStripeRight.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/titleBar.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/titleBar.png new file mode 100644 index 0000000..06ea21c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/titleBar.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/titleBarActive.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/titleBarActive.png new file mode 100644 index 0000000..fe6c7a4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/titleBarActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorDown.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorDown.gif new file mode 100644 index 0000000..9c38495 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorDown.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorDown.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorDown.png new file mode 100644 index 0000000..d75af71 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorDown.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorLeft.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorLeft.gif new file mode 100644 index 0000000..fc947e0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorLeft.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorLeft.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorLeft.png new file mode 100644 index 0000000..f3de66a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorLeft.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorRight.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorRight.gif new file mode 100644 index 0000000..b0e8097 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorRight.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorRight.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorRight.png new file mode 100644 index 0000000..3d62dcd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorRight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorUp.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorUp.gif new file mode 100644 index 0000000..54bcf65 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorUp.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorUp.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorUp.png new file mode 100644 index 0000000..7f7a5d8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/tooltipConnectorUp.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeExpand_loading.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeExpand_loading.gif new file mode 100644 index 0000000..db9ddd0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeExpand_loading.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeHover.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeHover.png new file mode 100644 index 0000000..ca80cd2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI.gif new file mode 100644 index 0000000..6f669e2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_half.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_half.gif new file mode 100644 index 0000000..e5fd015 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_half.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_half_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_half_rtl.gif new file mode 100644 index 0000000..44ad021 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_half_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_rtl.gif new file mode 100644 index 0000000..0d32a2f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/treeI_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/validationInputBg.gif b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/validationInputBg.gif new file mode 100644 index 0000000..c28475c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/validationInputBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/validationInputBg.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/validationInputBg.png new file mode 100644 index 0000000..f3039f9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/validationInputBg.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/warning.png b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/warning.png new file mode 100644 index 0000000..c52f83d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/images/warning.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/AccordionContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/AccordionContainer.css new file mode 100644 index 0000000..f42db80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/AccordionContainer.css @@ -0,0 +1,46 @@ +/** + * dijit.layout.Accordioncontainer + * + */ + +.nihilo .dijitAccordionContainer { + border-color: #ccc; + background-color: #fff; +} + +/* common */ + +.nihilo .dijitAccordionTitle { + background:#fafafa url("../images/titleBar.png") repeat-x top left; + border-top: 1px solid #dedede; + padding: 5px 4px 6px 8px; + font-size: 0.9em; + font-weight: bold; + color: #6d6d6d; +} + +.nihilo .dijitAccordionTitleSelected { + background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x; + font-weight: bold; + border-top: 1px solid #dedede; + border-bottom: 1px solid #dedede; + padding: 5px 4px 5px 8px; + color: #243C5F; +} + +.nihilo .dijitAccordionArrow { + background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -30px top; + width:15px; + height:15px; + margin-top:-1px; +} + +.nihilo .dijitAccordionTitleSelected .dijitAccordionArrow { + background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -15px top; + margin-top:-1px; +} + +.nihilo .dijitAccordionText { + margin-left: 4px; + margin-right: 4px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/AccordionContainer_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/AccordionContainer_rtl.css new file mode 100644 index 0000000..f669a47 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/AccordionContainer_rtl.css @@ -0,0 +1,8 @@ +.dijitRtl .nihilo .dijitAccordionArrow { + background-position: 0 top; +} + +.dijitRtl .nihilo .dijitAccordionTitleSelected .dijitAccordionArrow { + /* same rule as LTR mode, just listed to override previous rule in this file */ + background-position: -15px top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/BorderContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/BorderContainer.css new file mode 100644 index 0000000..493da54 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/BorderContainer.css @@ -0,0 +1,76 @@ +/** + * dijit.layout.BorderContainer + * + */ + +.nihilo .dijitBorderContainer { + background-color: #fcfcfc; + padding: 5px; +} + +.nihilo .dijitSplitContainer-child, +.nihilo .dijitBorderContainer-child { + /* By default, put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px #ccc solid; +} + +.nihilo .dijitBorderContainer-dijitTabContainerTop, +.nihilo .dijitBorderContainer-dijitTabContainerBottom, +.nihilo .dijitBorderContainer-dijitTabContainerLeft, +.nihilo .dijitBorderContainer-dijitTabContainerRight { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + border: none; +} + +.nihilo .dijitBorderContainer-dijitBorderContainer { + /* also, make nested BorderContainers look like a single big widget with lots of splitters */ + 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; +} + +/* active splitter */ +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/ContentPane.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/ContentPane.css new file mode 100644 index 0000000..75272db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/ContentPane.css @@ -0,0 +1,21 @@ +/* ContentPane */ + +.nihilo .dijitContentPane { + padding: 0; +} + +/* nested layouts */ +.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; /* override background-color setting on parent .dijitBorderContainer */ + padding: 5px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/SplitContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/SplitContainer.css new file mode 100644 index 0000000..9f4defa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/SplitContainer.css @@ -0,0 +1,34 @@ +/** + * dijit.layout.SplitContainer + * + */ + +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/TabContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/TabContainer.css new file mode 100644 index 0000000..2126657 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/TabContainer.css @@ -0,0 +1,496 @@ +/** + * dijit.layout.TabContainer + * + * To style TabContainer with rounded corners + * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right) + * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe + */ +@import url("../Menu.css"); + +/* Classes for all types of tabs (top/bottom/left/right) */ + +.nihilo .dijitTabContainer .tabStripRBtn { + margin-right: 21px; +} +.nihilo .dijitTabContainer .tabStripLBtn { + margin-left: 21px; +} + +.nihilo .dijitTabContainerBottom .nowrapTabStrip .dijitTab { + top: 0; +} + +/* Tabs, shared classes */ +.nihilo .dijitTabPaneWrapper { + background:#fff; + border:1px solid #ccc; + margin: 0; + padding: 0; +} + +.nihilo .dijitTabInnerDiv { + padding:0 3px 0 0; + margin: 0 0 0 4px; + background: url("../images/tabContainerSprite.gif") no-repeat; + background-position: right -400px; +} + +.nihilo .dijitTab { + line-height:normal; + margin:0 2px 0 0; /* space between one tab and the next in top/bottom mode */ + padding:0; + background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px; + color: #6d6d6d; + border-bottom: 1px #ccc solid; +} + +.nihilo .dijitTabInnerDiv .dijitTabContent { + padding:3px 3px 3px 4px; + background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px; + position: relative; +} + +/* hovered tab */ +.nihilo .dijitTabHover { + color: #243C5F; + background: url("../images/tabContainerSprite.gif") no-repeat 0 -150px; +} + +.nihilo .dijitTabHover .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -250px; +} + +.nihilo .dijitTabHover .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px; +} + +/* checked tab*/ +.nihilo .dijitTabChecked +{ + /* the selected tab (with or without hover) */ + background: url("../images/tabContainerSprite.gif") no-repeat 0 -0; +} + +.nihilo .dijitTabChecked .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -100px; +} + +.nihilo .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px; + color: #243C5F !important; +} + +/* Nested Tabs */ +.nihilo .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} + +.nihilo .dijitTabContainerTabListNested { + background: #FDFDFD; + border: none; + margin-bottom: 0; /* override margin: -1px; */ +} +.nihilo .dijitTabContainerTabListNested .dijitTab { + background: none; + border: none; + top: 0; /* override top:1px setting of top-level tabs */ +} +.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv, +.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabContent { + background: none; +} +.nihilo .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel { + text-decoration: underline; +} +.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: underline; + font-weight: bold; +} +.nihilo .dijitTabContainerSpacerNested { + /* thinner line between tab (labels) and content */ + height: 0; + border-bottom: 0; +} +.nihilo .dijitTabPaneWrapperNested { + border: none; /* prevent double border */ +} + + +/* Close button */ +.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; +} + +/* ================================ */ +/* top tabs */ +.nihilo .dijitTabContainerTop-tabs { + border-bottom: none; + padding-bottom: 1px; + background-position: bottom; + padding-left: 3px; +} + +.dj_ie6 .nihilo .dijitTabListContainer-top, +.dj_ie7 .nihilo .dijitTabListContainer-top { + z-index: 3; +} + +.dj_ie6 .nihilo .dijitTabContainerTop-tabs, +.dj_ie7 .nihilo .dijitTabContainerTop-tabs { + border-bottom: 1px solid #ccc; + padding-bottom: 0; +} + +.nihilo .dijitTabContainerTopNoStrip { + padding-top: 3px; +} + +/* top container */ +.nihilo .dijitTabContainerTop-container { + border-top: none; +} + +/* checked tabs */ +.nihilo .dijitTabContainerTop-tabs .dijitTabChecked { + border-bottom-color: #f8f8f8; +} + +/* strip */ +.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; +} + + +/* ================================ */ +/* bottom tabs */ +.nihilo .dijitTabContainerBottom-tabs { + border-top: none; + background-position: top; + padding-left: 3px; +} + +.dj_ie6 .nihilo .dijitTabListContainer-bottom, +.dj_ie7 .nihilo .dijitTabListContainer-bottom { + z-index: 3; +} + +.dj_ie6 .nihilo .dijitTabContainerBottom-tabs, +.dj_ie7 .nihilo .dijitTabContainerBottom-tabs { + border-top: 1px solid #ccc; + margin-top: -1px; +} + +/* bottom container */ +.nihilo .dijitTabContainerBottom-container { + border-bottom: none; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTab { + border-bottom: none; + border-top: 1px solid #ccc; + background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left; +} + +/* checked tabs */ +.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked { + border-top-color: #f8f8f8; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent { + padding-top: 3px; + padding-bottom: 3px; + background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv { + background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabHover { + color: #243C5F; + background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv { + background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabBottomHoverC.gif") repeat-x bottom left; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked { + /* the selected tab (with or without hover) */ + background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { + background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabBottomActiveC.gif") repeat-x bottom left; +} + +/* strip */ +.nihilo .dijitTabContainer .dijitTabContainerBottomStrip { + border: 1px solid #ccc; + background: #f2f2f2; + border-top: none; + padding-bottom: 2px; +} + +/* top/bottom strip */ +.nihilo .dijitTabContainerBottom-spacer, +.nihilo .dijitTabContainerTop-spacer { + height: 2px; + border: 1px solid #ccc; + background: #f8f8f8; +} + +.nihilo .dijitTabContainerTop-spacer { + margin-top: -1px; +} +.nihilo .dijitTabContainerBottom-spacer { + margin-bottom: -1px; +} + + +/* ================================ */ +/* right tabs */ +.nihilo .dijitTabContainerRight-tabs { + border-color: #ccc; + padding-top: 3px; +} +.nihilo .dijitTabContainerRight .dijitTabListWrapper { + padding-right: 3px; +} + +/* right container */ +.nihilo .dijitTabContainerRight-container { + border-right: none; +} + +.nihilo .dijitTabContainerRight-tabs .dijitTab { + border-bottom: none; + border-left: 1px solid #ccc; + border-bottom: 1px solid #dedede !important; +} + + +/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ +.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabInnerDiv { + border-bottom: solid #fff 1px; +} + +/* checked tabs */ +.nihilo .dijitTabContainerRight-tabs .dijitTabChecked { + border-left-color: #f8f8f8; +} + +.nihilo .dijitTabContainerRight-tabs .dijitTabChecked { + background: url("../images/tabRightChecked.gif") no-repeat left top !important; +} + +/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ +.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv, +.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv { + border-bottom: solid #efefef 1px; +} + +.nihilo .dijitTabContainerRight-tabs .dijitTab { + background: url("../images/tabContainerSprite.gif") no-repeat left -350px; +} +.nihilo .dijitTabContainerRight-tabs .dijitTabHover .dijitTab { + background: url("../images/tabContainerSprite.gif") no-repeat left -200px; +} + +/* strip */ +.nihilo .dijitTabContainerRightStrip { + padding-right: 2px; + border: 1px solid #ccc; + border-left: none; + background: #f2f2f2; +} + +/* ================================ */ +/* left tabs */ +.nihilo .dijitTabContainerLeft-tabs { + border-color: #ccc; + padding-top: 3px; +} + +/* left conatiner */ +.nihilo .dijitTabContainerLeft-container { + border-left: none; +} + +.nihilo .dijitTabContainerLeft-tabs .dijitTab { + border-right: 1px solid #ccc; + border-bottom: 1px solid #dedede; +} + +/* checked tabs */ +.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right: 1px solid #f8f8f8; +} + +.nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -350px; +} +.nihilo .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -200px; +} +.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, +.nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { + background: url("../images/tabLeftChecked.gif") no-repeat right top; +} + +.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, +.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { + border-bottom: solid #efefef 1px; +} + +.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + border-bottom: solid #fff 1px; +} + +/* strip */ +.nihilo .dijitTabContainerLeftStrip { + padding-left: 2px; + border: 1px solid #ccc; + border-right: none; +} + +.nihilo .dijitTabContainerLeftStrip { + background: #f2f2f2; +} + +/* ================================ */ +/* left/right tabs */ +.nihilo .dijitTabContainerLeft-tabs .dijitTab, +.nihilo .dijitTabContainerRight-tabs .dijitTab { + margin-right:auto; + margin-bottom:2px; /* space between one tab and the next in left/right mode */ +} + +/* left/right tabstrip */ +.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; +} + +/* ================================ */ + +/* this resets the tabcontainer stripe when within a contentpane */ +.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; +} + +/* ================================ */ + +/* Menu and slider control styles */ +.nihilo .dijitTabContainer .tabStripButton { + margin-right: 0; +} + +.nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent { + padding: 5px 0 6px; +} + +.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent { + padding-bottom: 7px; +} + +.nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent { + padding: 3px 0 5px; +} + +.dj_ie6 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_ie7 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_opera .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent { + padding-top: 4px; +} + +.nihilo .dijitTabStripIcon { + height: 14px; + width: 14px; + background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top; +} + +.dj_ie6 .nihilo .dijitTabStripIcon { + background-image: url(../images/spriteRoundedIconsSmall.gif); +} + +.nihilo .dijitTabStripSlideRightIcon { + background-position: -30px top; +} + +.nihilo .dijitTabStripMenuIcon { + background-position: -15px top; +} + +.nihilo .dijitTabContainerTopNone { + padding-top: 0; +} + +.nihilo .dijitTabContainer .tabStripButton-top { + margin-top: 1px; +} + +.nihilo .dijitTabContainer .tabStripButton-bottom { + background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom; + border-bottom: medium none; + border-top: 1px solid #CCCCCC; +} + +.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv { + background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom; +} + +.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabContent { + background: transparent; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/TabContainer_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/TabContainer_rtl.css new file mode 100644 index 0000000..225fc3e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/layout/TabContainer_rtl.css @@ -0,0 +1,43 @@ +.dijitRtl .nihilo .dijitTab { + margin-right:0; + margin-left:2px; /* space between one tab and the next in top/bottom mode */ +} + +/* tab strips */ +.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/dojo-release-1.7.2-src/dijit/themes/nihilo/nihilo.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/nihilo.css new file mode 100644 index 0000000..97ba8f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/nihilo.css @@ -0,0 +1,42 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); + +@import url("layout/ContentPane.css"); +@import url("layout/TabContainer.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/SplitContainer.css"); +@import url("layout/BorderContainer.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Slider.css"); +@import url("form/Select.css"); +@import url("Tree.css"); +@import url("ProgressBar.css"); +@import url("TitlePane.css"); +@import url("Calendar.css"); +@import url("TimePicker.css"); +@import url("Toolbar.css"); +@import url("Dialog.css"); +@import url("Menu.css"); +@import url("Editor.css"); +@import url("../../icons/editorIcons.css"); /* sprite for editor icons to be used by all themes */ +@import url("ColorPalette.css"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/nihilo/nihilo_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/nihilo_rtl.css new file mode 100644 index 0000000..1e9a6af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/nihilo/nihilo_rtl.css @@ -0,0 +1,29 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("layout/AccordionContainer_rtl.css"); +@import url("form/Slider_rtl.css"); +@import url("form/Button_rtl.css"); +@import url("Tree_rtl.css"); +@import url("TitlePane_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("Menu_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css");/* RTL sprite for editor icons to be used by all themes*/ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Calendar.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Calendar.css new file mode 100644 index 0000000..f77acd2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Calendar.css @@ -0,0 +1,161 @@ +/* Calendar*/ + +.soria .dijitCalendarIncrementControl { + /* next/prev month buttons */ + 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 { + /* month header cell */ + 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 { + /* day of week labels */ + 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 { + /* style for each day cell */ + 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 { + /* days that are part of the previous or next month */ + color:#999999; + background-color:#fdfdfd !important; + border:#fdfdfd solid 1px !important; +} + +.soria .dijitCalendarCurrentMonth { + /* days that are part of this month */ +} + +.soria .dijitCalendarDisabledDate { + text-decoration:line-through !important; +} + +.soria .dijitCalendarCurrentDate { + /* cell for today's date */ + text-decoration:underline; + font-weight:bold; +} + +.soria .dijitCalendarSelectedDate { + /* cell for the selected date */ + background-color:#b9cbf1 !important; + color:black !important; + border:#4b5aaa solid 1px !important; +} + + +.soria .dijitCalendarYearContainer { + /* footer of the table that contains the year display/selector */ + background:white url("images/titleBar.png") repeat-x top; +} + +.soria .dijitCalendarYearLabel { + /* container for all of 3 year labels */ + margin:0; + padding:0.4em 0 0.25em 0; + text-align:center; + font-size: 1.17em; +} + +.soria .dijitCalendarSelectedYear { + /* label for selected year */ + 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 { + /* label for next/prev years */ + color:black !important; + font-weight:normal; +} + +/* Styling for month DropDownButton */ + +.soria .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.soria .dijitCalendar .dijitButtonText { + padding: 0; +} +.soria .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0; +} + +/* Styling for month drop down list */ + +.soria .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover { + background-color: #d9e6f9; + color: #243C5F; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Calendar_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Calendar_rtl.css new file mode 100644 index 0000000..c2350b4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Calendar_rtl.css @@ -0,0 +1,9 @@ +/* Calendar */ + +.dijitRtl .soria .dijitCalendarDecrease { + background-position: -30px top; +} + +.dijitRtl .soria .dijitCalendarIncrease { + background-position: 0 top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/ColorPalette.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/ColorPalette.css new file mode 100644 index 0000000..85d6dd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/ColorPalette.css @@ -0,0 +1,5 @@ +.dijitColorPalette { + border:1px solid #cbcbcb; + background:#fff; + -moz-border-radius: 0 !important; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Common.css new file mode 100644 index 0000000..d5a7c9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Common.css @@ -0,0 +1,23 @@ +/* DnD avatar-specific settings */ +/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ +.soria .dojoDndItemBefore { + border-top: 2px solid #369; +} + +.soria .dojoDndItemAfter { + border-bottom: 2px solid #369; +} + +.soria .dojoDndItemOver { + cursor:pointer; +} + +.soria table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} +.soria .dojoDndAvatar td { border: none; } +.soria .dojoDndAvatar tr { border: none; } +.soria .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } +.soria .dojoDndAvatarItem td { padding: 2px;} +.soria.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} +.soria.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} +.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} +.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Dialog.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Dialog.css new file mode 100644 index 0000000..1e0503a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Dialog.css @@ -0,0 +1,155 @@ +/* Dialog */ + +.soria .dijitDialog { + background: #eee; + border: 1px solid #cbcbcb; + -webkit-box-shadow: 0 5px 10px #adadad; + padding: 0; +} + +.soria .dijitDialog .dijitDialogTitle { + /* typography and styling of the dialog title */ + 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 { + /* outer container for the titlebar of the dialog */ + background: #fafafa url("images/titleBar.png") repeat-x top left; + padding: 5px 6px 3px 6px; + outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ +} + +.soria .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + 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; +} + +/* Tooltip and TooltipDialog */ + +.soria .dijitTooltip, +.soria .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} + +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 10px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 10px; +} + +.soria .dijitTooltipContainer { + /* + The part with the text. + + NOTE: + FF doesn't clip images used as CSS bgs if you specify a border + radius. If you use a solid color, it does. Webkit gets it right. + Sigh. + background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left; + */ + background-color: #fff; + border:1px solid #cbcbcb; + padding:0.45em; +} + +.soria .dijitTooltipConnector { + /* the arrow piece */ + border:0; + z-index: 2; +} + +.soria .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + left: auto !important; + right: 6px; +} + +.soria .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + 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 { + /* the arrow piece for tooltips above an element */ + 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 { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + 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 { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + 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"); +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Dialog_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Dialog_rtl.css new file mode 100644 index 0000000..838700a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Dialog_rtl.css @@ -0,0 +1,5 @@ +/* Dialog */ +.dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon { + right: auto; + left: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Editor.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Editor.css new file mode 100644 index 0000000..d2dd293 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Editor.css @@ -0,0 +1,17 @@ +.soria .dijitToolbar .dijitToolbarSeparator { + background: url('../../icons/images/editorIconsEnabled.png'); /* separator in editor icons sprite image - enabled state */ +} + +/**** ICONS *****/ + +.soria .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled.png'); /* editor icons sprite image - enabled state */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} +.soria .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled.png'); /* editor icons sprite image - disabled state */ +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Editor_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Editor_rtl.css new file mode 100644 index 0000000..a1f76e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Editor_rtl.css @@ -0,0 +1,7 @@ +/* Editor */ +.dijitRtl .soria .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); /* editor icons sprite image - enabled state */ +} +.dijitRtl .soria .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); /* editor icons sprite image - disabled state */ +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Menu.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Menu.css new file mode 100644 index 0000000..4d9d068 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Menu.css @@ -0,0 +1,77 @@ + +/* Menu */ +.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 .dijitMenuItemSelected { + background-color: #d9e6f9; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */ + 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; +} + +/* separator can be two pixels -- set border of either one to 0 to have only one */ +.soria .dijitMenuSeparatorTop { + border-bottom: 1px solid #fff; /*97adcb; */ +} + +.soria .dijitMenuSeparatorBottom { + border-top: 1px solid #8ba0bd; +} + +/* the checked menu item */ +.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/dojo-release-1.7.2-src/dijit/themes/soria/Menu_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Menu_rtl.css new file mode 100644 index 0000000..0e01483 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Menu_rtl.css @@ -0,0 +1,10 @@ +/* Menu */ + +.dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon { + padding-left: 3px; + padding-right: 0; +} + +.dijitRtl .soria .dijitMenuItem .dijitMenuExpand { + background-position: left top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/ProgressBar.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/ProgressBar.css new file mode 100644 index 0000000..b2f6d1f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/ProgressBar.css @@ -0,0 +1,33 @@ + +/**** + dijit.ProgressBar + ****/ + +.soria .dijitProgressBar { + margin:2px 0 2px 0; +} + +.soria .dijitProgressBarEmpty{ + /* outer container and background of the bar that's not finished yet*/ + background:#fff url("images/progressBarEmpty.png") repeat-x center center; + border-color: #8ba0bd; +} + +.soria .dijitProgressBarTile{ + /* inner container for finished portion when in 'tile' (image) mode */ + background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; +} + +.soria .dijitProgressBarFull { + border-right:1px solid #8ba0bd; +} + +.soria .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color:#293a4b; +} + +.soria .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode */ + background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/TimePicker.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/TimePicker.css new file mode 100644 index 0000000..757d746 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/TimePicker.css @@ -0,0 +1,51 @@ +/* Time Picker */ +.soria .dijitTimePickerTick, +.soria .dijitTimePickerMarker { + border-color: #b1badf; +} + +.soria .dijitTimePickerTick { + color:white; +} + +.soria .dijitTimePickerMarker { + background:#bed7f0 url("images/titleBar.png") repeat-x top; + color:#293a4b; + font-weight: bold; +} + +.soria .dijitTimePickerItemSelected { + color: black; + background: #b9cbf1 none; +} + +.soria .dijitTimePickerItemHover { + background: #60a1ea none; + color:white; +} + +.soria .dijitTimePickerItemHover, +.soria .dijitTimePickerItemSelected { + position: relative; + z-index: 10; +} + +.soria .dijitTimePickerTick .dijitTimePickerItemInner { + font-size:0.4em; +} + +.soria .dijitTimePickerItemHover .dijitTimePickerItemInner, +.soria .dijitTimePickerItemSelected .dijitTimePickerItemInner { + font-size:1em; +} + +.soria .dijitTimePickerMarkerHover { + border-top: 1px solid #94b9ef; +} + +.soria .dijitTimePickerTickHover, +.soria .dijitTimePickerTickSelected { + margin-top:-0.3em; + margin-bottom:-0.3em; + border-bottom: none; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/TimePicker_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/TimePicker_rtl.css new file mode 100644 index 0000000..a802ba6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/TimePicker_rtl.css @@ -0,0 +1,4 @@ +.dj_ie6-rtl .soria .dijitTimePickerMarkerHover, +.dj_ie7-rtl .soria .dijitTimePickerMarkerHover { + border-top: 0; /* IE6/7 bug causes mouseover/out event storm */ +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/TitlePane.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/TitlePane.css new file mode 100644 index 0000000..7e1042e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/TitlePane.css @@ -0,0 +1,58 @@ +/** + * dijit.TitlePane + * + */ + +.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/dojo-release-1.7.2-src/dijit/themes/soria/TitlePane_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/TitlePane_rtl.css new file mode 100644 index 0000000..8a1b73d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/TitlePane_rtl.css @@ -0,0 +1,6 @@ +.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/dojo-release-1.7.2-src/dijit/themes/soria/Toolbar.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Toolbar.css new file mode 100644 index 0000000..8af426a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Toolbar.css @@ -0,0 +1,65 @@ +.soria .dijitToolbar { + border-bottom: 1px solid #ccc; + background:#eaeaea url("images/titleBar.png") repeat-x top left; +} + +/* setting a min-height on ditor toolbar */ +.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; /* on hover etc., margin replaced w/border */ +} + +.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 { + /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ + 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 { + /* focus border doesn't appear on for IE, so need to add it manually */ + border: 1px #777 dotted !important; + padding: 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Tree.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Tree.css new file mode 100644 index 0000000..d8edb67 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Tree.css @@ -0,0 +1,105 @@ +/* Tree */ + +.soria .dijitTreeNode { + background : url('images/treeI.gif') no-repeat; + background-position : top left; + background-repeat : repeat-y; + zoom: 1; +} + +.soria .dijitTreeRowHover { + /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */ + background-image: url(images/treeHover.png); + background-repeat: repeat; + background-color: transparent !important; +} + + +/* left vertical line (grid) for all nodes */ +.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 { + /* so insert line shows up on IE when dropping after a target element */ + 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; +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.soria .dijitTreeNode .dojoDndItemBefore, +.soria .dijitTreeNode .dojoDndItemAfter { + border-bottom: none; + border-top: none; +} + +.soria .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + /* copied from Common.css */ + border-top: 2px solid #369; +} + +.soria .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + /* copied from Common.css */ + border-bottom: 2px solid #369; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/Tree_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/Tree_rtl.css new file mode 100644 index 0000000..44daf3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/Tree_rtl.css @@ -0,0 +1,22 @@ +/* Tree */ + +.dijitRtl .soria .dijitTreeNode, +.dijitRtl .soria .dijitTreeExpandoLeaf { + /* disable grid lines for Tree in RTL mode, too hard to support */ + background-image: none; +} + +.dijitRtl .soria .dijitTreeContent { + padding-left: 0; + padding-right: 1px; +} + +.dijitRtl .soria .dijitTreeExpandoOpened { + /* todo: icon contains grid line but grid lines disabled above */ + background: url('images/spriteTree_rtl.gif') no-repeat -18px top; +} + +.dijitRtl .soria .dijitTreeExpandoClosed { + /* todo: icon contains grid line but grid lines disabled above */ + background-image: url('images/spriteTree_rtl.gif'); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Button.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Button.css new file mode 100644 index 0000000..9efe7ea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Button.css @@ -0,0 +1,122 @@ + +/***** + dijit.form.Button + dijit.form.DropDownButton + dijit.form.ComboButton + dijit.form.ComboBox (partial) + dijit.form.Spinner (partial) (TODO: create NumberSpinner.css file like claro has) + *****/ + +.soria .dijitButtonNode { + /* enabled state - inner */ + border: 1px solid #8ba0bd; + border-bottom:1px solid #657c9c; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left; +} +.soria .dijitSelect .dijitButtonContents { + border-right: none; +} + +.soria .dijitButtonText { + text-align: center; + padding: 0 0.3em; +} + +.soria .dijitArrowButton { + color: #111; +} + +.soria .dijitComboButton .dijitDownArrowButton { + padding-right:4px; +} + +.soria .dijitTextBoxReadOnly, +.soria .dijitTextBoxReadOnly .dijitButtonNode, +.soria .dijitButtonDisabled .dijitButtonNode, +.soria .dijitToggleButtonDisabled .dijitButtonNode, +.soria .dijitDropDownButtonDisabled .dijitButtonNode, +.soria .dijitComboButtonDisabled .dijitButtonNode, +.soria .dijitTextBoxDisabled, +.soria .dijitTextBoxDisabled .dijitButtonNode { + /* disabled state - inner */ + 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 { + /* opacity doesn't work on table node in IE, work around here */ + color: #aaa; +} +.soria .dijitButtonHover .dijitButtonNode, +.soria .dijitButtonNodeHover, +.soria .dijitToggleButtonHover .dijitButtonNode, +.soria .dijitDropDownButtonHover .dijitButtonNode, +.soria .dijitButtonContentsHover, +.soria .dijitUpArrowButtonHover, +.soria .dijitDownArrowButtonHover { + /* hover state - inner */ + /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ + 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 { + /* active state - inner (for when you are pressing a normal button, or + * when a radio-type button is in a depressed state + */ + border-color:#657c9c; + background: #91b4e5 url("../images/buttonActive.png") top left repeat-x; +} +.soria .dijitUpArrowButtonActive, +.soria .dijitDownArrowButtonActive { + /* same as above except don't adjust border color (it's controlled by the containing Spinner/ComboBox) */ + 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; /* image has too many blank pixels on top */ +} +.soria .dijitSpinnerButtonContainer { + width: auto; + padding: 0; +} +.soria .dijitSpinner .dijitArrowButton { + width: 15px; +} +.soria .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +.soria .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Button_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Button_rtl.css new file mode 100644 index 0000000..e2f3728 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Button_rtl.css @@ -0,0 +1,7 @@ +.dijitRtl .soria .dijitComboBox .dijitButtonNode { + border-width: 0 0 0 1px; +} +.dijitRtl .soria .dijitSelect .dijitButtonContents { + border-left: none; + border-right-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Checkbox.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Checkbox.css new file mode 100644 index 0000000..5a72bfc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Checkbox.css @@ -0,0 +1,67 @@ + +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.soria .dijitToggleButton .dijitCheckBox, +.soria .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/spriteCheckbox.gif'); +} + +.soria .dijitCheckBox, +.soria .dijitCheckBoxIcon { /* inside a toggle button */ + background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.soria .dijitCheckBox, +.soria .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -16px; +} + +.soria .dijitCheckBoxChecked, +.soria .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: 0; +} + +.soria .dijitCheckBoxDisabled { + /* disabled */ + background-position: -48px; +} + +.soria .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -32px; +} + +.soria .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -80px; +} + +.soria .dijitCheckBoxCheckedHover { + /* hovering over a checked enabled checkbox */ + background-position: -64px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Common.css new file mode 100644 index 0000000..42dfefa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Common.css @@ -0,0 +1,74 @@ + +/**** + dijit.form.TextBox + dijit.form.ValidationTextBox + dijit.form.SerializableTextBox + dijit.form.RangeBoundTextBox + dijit.form.NumberTextBox + dijit.form.CurrencyTextBox + dijit.form.NumberSpinner + dijit.form.ComboBox (partial) + ****/ + +.soria .dijitInputContainer input, +.soria .dijitTextBox { + margin: 0 0.1em; +} + +.soria .dijitTextBox, +.soria .dijitTextArea { + /* For all except dijit.form.NumberSpinner: the actual input element. + For TextBox, ComboBox, Spinner: the table that contains the input. + Otherwise the actual input element. + */ + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; + border:1px solid #8ba0bd; +} + +.soria .dijitComboBox .dijitButtonNode { + padding: 0 0.2em; +} +.soria .dijitTextBox .dijitButtonNode { + /* line between the input area and the drop down button */ + border-color: #8ba0bd; +} + +.soria .dijitTextBoxFocused, +.soria .dijitTextAreaFocused { + /* input field when focused (ie: typing affects it) */ + border-color:#406b9b; +} +.soria .dijitTextBoxFocused .dijitButtonNode, +.soria .dijitSpinner .dijitUpArrowButtonActive, +.soria .dijitSpinner .dijitDownArrowButtonActive { + border-left-color:#8ba0bd; +} +.soria .dijitSpinnerFocused .dijitDownArrowButton, +.soria .dijitSpinner .dijitUpArrowButtonActive, +.soria .dijitSpinner .dijitDownArrowButtonActive { + border-top-color:#8ba0bd; +} + +.soria .dijitError { + border-color:#f3d118; + background-color:#f9f7ba; + background-image:none; +} + +.soria .dijitErrorFocused { + background-color:#ff6; + background-image:none; +} + +/* Validation errors */ +.soria .dijitValidationIcon { + /* prevent height change when widget goes from valid to invalid state */ + width: 16px; + background: transparent url('../images/warning.png') no-repeat center center; +} + +/* The highlight is shown in the ComboBox menu. */ +.soria .dijitComboBoxHighlightMatch { + background-color:#f9f7ba; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/RadioButton.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/RadioButton.css new file mode 100644 index 0000000..1ea27bf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/RadioButton.css @@ -0,0 +1,66 @@ +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.soria .dijitToggleButton .dijitRadio, +.soria .dijitToggleButton .dijitRadioIcon { + background-image: url('../images/spriteRadio.gif'); +} + +.soria .dijitRadio, +.soria .dijitRadioIcon { /* inside a toggle button */ + background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.soria .dijitRadio, +.soria .dijitToggleButton .dijitRadioIcon { + /* unselected */ + background-position: -16px; +} + +.soria .dijitRadioChecked, +.soria .dijitToggleButtonChecked .dijitRadioIcon { + /* selected */ + background-position: 0; +} + +.soria .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -48px; +} + +.soria .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -32px; +} + +.soria .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -80px; +} + +.soria .dijitRadioCheckedHover { + /* hovering over a selected enabled radio button */ + background-position: -64px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Select.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Select.css new file mode 100644 index 0000000..1856772 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Select.css @@ -0,0 +1,54 @@ +.soria .dijitSelect .dijitButtonNode { + padding: 0; +} + +/* Make unselected "look" more like a text box and less like a button */ +.soria .dijitSelect .dijitButtonContents { + padding-top: 1px; + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; +} +.soria .dijitSelectHover .dijitButtonContents, +.soria .dijitSelectActive .dijitButtonContents, +.soria .dijitSelectOpened .dijitButtonContents, +.soria .dijitSelectDisabled .dijitButtonContents, +.soria .dijitSelectReadOnly .dijitButtonContents{ + background: transparent none; +} +.dj_ie .soria .dijitSelect .dijitButtonContents { + padding-top: 0; +} + +.soria .dijitSelect .dijitArrowButton { + padding: 0 2px; +} + +/* Mirror DropDownButton */ +.soria .dijitSelectDisabled .dijitButtonNode { + border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd; + background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x; +} +.dj_ie .soria .dijitSelectDisabled .dijitButtonNode * { + filter: gray() alpha(opacity=50); +} + +.soria .dijitSelectHover .dijitButtonNode { + color:#000; + background:#acc5e2 url("../images/buttonHover.png") repeat-x top left; +} + +.soria .dijitSelectActive .dijitButtonNode, +.soria .dijitSelectOpened .dijitButtonNode { + border-color:#657c9c; + background: #91b4e5 url("../images/buttonActive.png") top left repeat-x; +} + +/* Make the menu look more combobox-like */ +.soria .dijitSelectMenu td { + padding: 0; +} +.soria .dijitSelectMenu .dijitMenuItemLabel, +.soria .dijitSelectMenu .dijitMenuArrowCell { + padding: 0.1em 0.2em; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Slider.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Slider.css new file mode 100644 index 0000000..3a68f46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Slider.css @@ -0,0 +1,144 @@ + +/**** + SLIDER +****/ + +.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; + /* border-color: #b4b4b4; */ +} +.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/dojo-release-1.7.2-src/dijit/themes/soria/form/Slider_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Slider_rtl.css new file mode 100644 index 0000000..d9b67c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/Slider_rtl.css @@ -0,0 +1,36 @@ + +/* Slider */ + +.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; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/form/TimeTextBox.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/TimeTextBox.css new file mode 100644 index 0000000..bf67b66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/form/TimeTextBox.css @@ -0,0 +1 @@ +@CHARSET "UTF-8"; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/accordionItemActive.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/accordionItemActive.gif new file mode 100644 index 0000000..249a153 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/accordionItemActive.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/accordionItemActive.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/accordionItemActive.png new file mode 100644 index 0000000..92c7431 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/accordionItemActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonActive.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonActive.png new file mode 100644 index 0000000..f815983 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonDisabled.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonDisabled.png new file mode 100644 index 0000000..f76e4ab Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonDisabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonEnabled.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonEnabled.png new file mode 100644 index 0000000..3c55c83 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonEnabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonHover.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonHover.png new file mode 100644 index 0000000..a22ebda Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/buttonHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndCopy.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndCopy.png new file mode 100644 index 0000000..baecd7c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndMove.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndMove.png new file mode 100644 index 0000000..07f878c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndMove.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndNoCopy.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndNoCopy.png new file mode 100644 index 0000000..9bf9c33 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndNoCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndNoMove.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndNoMove.png new file mode 100644 index 0000000..cb8bd8b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/dndNoMove.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumb.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumb.gif new file mode 100644 index 0000000..53b33e5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumb.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumb.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumb.png new file mode 100644 index 0000000..045bf35 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumbFocus.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumbFocus.gif new file mode 100644 index 0000000..8c6f92e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumbFocus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumbFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumbFocus.png new file mode 100644 index 0000000..c235849 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/preciseSliderThumbFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarAnim.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarAnim.gif new file mode 100644 index 0000000..73e25e1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarAnim.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarEmpty.png new file mode 100644 index 0000000..04d81df Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarFull.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarFull.png new file mode 100644 index 0000000..bed17b3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/progressBarFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderEmpty.png new file mode 100644 index 0000000..99fbd72 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderEmptyVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderEmptyVertical.png new file mode 100644 index 0000000..2d497e3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderEmptyVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFull.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFull.png new file mode 100644 index 0000000..171eb54 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullFocus.png new file mode 100644 index 0000000..0956a72 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullVertical.png new file mode 100644 index 0000000..35845da Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullVerticalFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullVerticalFocus.png new file mode 100644 index 0000000..9b158bb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderFullVerticalFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumb.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumb.gif new file mode 100644 index 0000000..29899a4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumb.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumb.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumb.png new file mode 100644 index 0000000..b6abbd2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumbFocus.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumbFocus.gif new file mode 100644 index 0000000..f8d306f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumbFocus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumbFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumbFocus.png new file mode 100644 index 0000000..73ee705 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/sliderThumbFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerH-thumb.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerH-thumb.png new file mode 100644 index 0000000..0e8f397 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerH-thumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerH.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerH.png new file mode 100644 index 0000000..7cdf79a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerH.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerV-thumb.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerV-thumb.png new file mode 100644 index 0000000..7f12fed Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerV-thumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerV.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerV.png new file mode 100644 index 0000000..9ff14d6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/splitContainerSizerV.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteArrows.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteArrows.gif new file mode 100644 index 0000000..fc81207 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteArrows.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteArrows.png new file mode 100644 index 0000000..73aa700 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteCheckbox.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteCheckbox.gif new file mode 100644 index 0000000..d2c4ebf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteCheckbox.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteCheckbox.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteCheckbox.png new file mode 100644 index 0000000..e992330 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteCheckbox.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteDivIcons.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteDivIcons.gif new file mode 100644 index 0000000..f5c58e4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteDivIcons.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteDivIcons.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteDivIcons.png new file mode 100644 index 0000000..d76325f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteDivIcons.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRadio.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRadio.gif new file mode 100644 index 0000000..8dd6e57 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRadio.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRadio.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRadio.png new file mode 100644 index 0000000..14c1080 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRadio.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmall.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmall.gif new file mode 100644 index 0000000..795ea84 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmall.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmall.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmall.png new file mode 100644 index 0000000..10c0d13 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmall.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif new file mode 100644 index 0000000..6758181 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png new file mode 100644 index 0000000..2c9f51a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree.gif new file mode 100644 index 0000000..e546e28 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree.png new file mode 100644 index 0000000..33ae07b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree_rtl.gif new file mode 100644 index 0000000..bbcc64b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree_rtl.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree_rtl.png new file mode 100644 index 0000000..b06afdb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/spriteTree_rtl.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomActiveC.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomActiveC.gif new file mode 100644 index 0000000..fb61df9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomActiveC.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif new file mode 100644 index 0000000..7c2ed86 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomEnabledC.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomEnabledC.gif new file mode 100644 index 0000000..0a5f0f8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomEnabledC.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif new file mode 100644 index 0000000..a77da39 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomHoverC.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomHoverC.gif new file mode 100644 index 0000000..47b9da2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomHoverC.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif new file mode 100644 index 0000000..59f3edd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabContainerSprite.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabContainerSprite.gif new file mode 100644 index 0000000..f0b3842 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabContainerSprite.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabLeftChecked.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabLeftChecked.gif new file mode 100644 index 0000000..3e7475a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabLeftChecked.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabRightChecked.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabRightChecked.gif new file mode 100644 index 0000000..ec4b659 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabRightChecked.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripe.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripe.gif new file mode 100644 index 0000000..51a2d40 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripe.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeBottom.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeBottom.gif new file mode 100644 index 0000000..41b1ac0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeBottom.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeLeft.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeLeft.gif new file mode 100644 index 0000000..b2214fa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeLeft.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeRight.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeRight.gif new file mode 100644 index 0000000..bff3115 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tabStripeRight.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/titleBar.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/titleBar.png new file mode 100644 index 0000000..93c4146 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/titleBar.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/titleBarActive.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/titleBarActive.png new file mode 100644 index 0000000..fb8a2e6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/titleBarActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorDown.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorDown.gif new file mode 100644 index 0000000..9c38495 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorDown.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorDown.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorDown.png new file mode 100644 index 0000000..d75af71 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorDown.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorLeft.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorLeft.gif new file mode 100644 index 0000000..fc947e0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorLeft.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorLeft.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorLeft.png new file mode 100644 index 0000000..f3de66a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorLeft.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorRight.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorRight.gif new file mode 100644 index 0000000..b0e8097 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorRight.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorRight.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorRight.png new file mode 100644 index 0000000..3d62dcd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorRight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorUp.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorUp.gif new file mode 100644 index 0000000..54bcf65 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorUp.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorUp.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorUp.png new file mode 100644 index 0000000..7f7a5d8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/tooltipConnectorUp.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeExpand_loading.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeExpand_loading.gif new file mode 100644 index 0000000..db9ddd0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeExpand_loading.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeHover.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeHover.png new file mode 100644 index 0000000..cd6d28b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI.gif new file mode 100644 index 0000000..6f669e2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_half.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_half.gif new file mode 100644 index 0000000..e5fd015 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_half.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_half_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_half_rtl.gif new file mode 100644 index 0000000..44ad021 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_half_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_rtl.gif new file mode 100644 index 0000000..0d32a2f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/treeI_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/validationInputBg.gif b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/validationInputBg.gif new file mode 100644 index 0000000..c28475c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/validationInputBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/validationInputBg.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/validationInputBg.png new file mode 100644 index 0000000..f3039f9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/validationInputBg.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/images/warning.png b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/warning.png new file mode 100644 index 0000000..c52f83d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/soria/images/warning.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/AccordionContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/AccordionContainer.css new file mode 100644 index 0000000..3e2d22d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/AccordionContainer.css @@ -0,0 +1,46 @@ +/** + * dijit.layout.Accordioncontainer + * + */ + +.soria .dijitAccordionContainer { + border-color: #b1badf; + background-color: #fff; +} + +/* common */ + +.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/dojo-release-1.7.2-src/dijit/themes/soria/layout/AccordionContainer_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/AccordionContainer_rtl.css new file mode 100644 index 0000000..c6bb820 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/AccordionContainer_rtl.css @@ -0,0 +1,8 @@ +.dijitRtl .soria .dijitAccordionArrow { + background-position: 0 top; +} + +.dijitRtl .soria .dijitAccordionTitleSelected .dijitAccordionArrow { + /* same rule as LTR mode, just listed to override previous rule in this file */ + background-position: -15px top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/BorderContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/BorderContainer.css new file mode 100644 index 0000000..63f2bf3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/BorderContainer.css @@ -0,0 +1,77 @@ +/** + * dijit.layout.BorderContainer + * + */ + +.soria .dijitBorderContainer { + background-color: #e1ebfb; + padding: 5px; +} + +.soria .dijitSplitContainer-child, +.soria .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px #b1badf solid; +} + +.soria .dijitBorderContainer-dijitTabContainerTop, +.soria .dijitBorderContainer-dijitTabContainerBottom, +.soria .dijitBorderContainer-dijitTabContainerLeft, +.soria .dijitBorderContainer-dijitTabContainerRight { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so no border on domNode + */ + border: none; +} + +.soria .dijitBorderContainer-dijitBorderContainer { + /* also, make nested BorderContainers look like a single big widget with lots of splitters */ + 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; +} + +/* active splitter */ +.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/dojo-release-1.7.2-src/dijit/themes/soria/layout/ContentPane.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/ContentPane.css new file mode 100644 index 0000000..32398dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/ContentPane.css @@ -0,0 +1,21 @@ +/* ContentPane */ + +.soria .dijitContentPane { + padding: 0; +} + +/* nested layouts */ +.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; /* override background-color setting on parent .dijitBorderContainer */ + padding: 5px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/SplitContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/SplitContainer.css new file mode 100644 index 0000000..bf7ca16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/SplitContainer.css @@ -0,0 +1,34 @@ +/** + * dijit.layout.SplitContainer + * + */ + +.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/dojo-release-1.7.2-src/dijit/themes/soria/layout/TabContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/TabContainer.css new file mode 100644 index 0000000..b96d169 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/TabContainer.css @@ -0,0 +1,492 @@ +/** + * dijit.layout.TabContainer + * + * To style TabContainer with rounded corners + * you can use these classes: .dijitTab (left), .dijitTabContent (center), dijitTabInnerDiv (right) + * For tabs aligned to top you can style a stripe div right underneath the tabs using .dijitTabStripe + */ + +/* Classes for all types of tabs (top/bottom/left/right) */ + + .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; +} + +/* Tabs, shared classes */ +.soria .dijitTabPaneWrapper { + background:#fff; + border:1px solid #B1BADF; + margin: 0; + padding-left: 0; +} + +.soria .dijitTabInnerDiv { + padding:0 3px 0 0; + margin: 0 0 0 4px; + background: url("../images/tabContainerSprite.gif") no-repeat; + background-position: right -400px; +} + +.soria .dijitTab { + line-height:normal; + margin:0 2px 0 0; /* space between one tab and the next in top/bottom mode */ + padding:0; + background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px; + color: #243C5F; + border-bottom: 1px #B1BADF solid; +} + +.soria .dijitTabInnerDiv .dijitTabContent { + padding:4px 3px 2px 4px; + background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px; + position: relative; +} + + + +.soria .dijitTabListWrapper { + z-index: 10; +} + +/* hovered tab */ +.soria .dijitTabHover { + color: #243C5F; + background: url("../images/tabContainerSprite.gif") no-repeat 0 -150px; +} + +.soria .dijitTabHover .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -250px; +} + +.soria .dijitTabHover .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px; +} + +/* checked tab*/ +.soria .dijitTabChecked +{ + /* the selected tab (with or without hover) */ + background: url("../images/tabContainerSprite.gif") no-repeat 0 -0; +} + +.soria .dijitTabChecked .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -100px; +} + +.soria .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px; + color: #243C5F !important; +} + +/* Nested Tabs */ + +.soria .dijitTabContainerTabListNested { + background: #F0F4FC; + background: #D9E9F9; + border: none; +} +.soria .dijitTabContainerTabListNested .dijitTab { + background: none; + border: none; + top: 0; /* override top:1px setting of top-level tabs */ +} +.soria .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv, +.soria .dijitTabContainerTabListNested .dijitTab .dijitTabContent { + background: none; +} +.soria .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel { + text-decoration: underline; +} +.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: underline; + font-weight: bold; +} +.soria .dijitTabContainerSpacerNested .dijitTabSpacer { + /* thinner line between tab (labels) and content */ + height: 0; +} +.soria .dijitTabPaneWrapperNested { + border: none; /* prevent double border */ +} + + +/* Close Button */ +.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; +} + +/* ================================ */ +/* top tabs */ +.soria .dijitTabContainerTop-tabs { + border-color: #B1BADF; + padding-left: 3px; +} + +.soria .dijitTabContainerTopNoStrip { + padding-top: 3px; +} + +/* top container */ +.soria .dijitTabContainerTop-container { + border-top: none; +} + +.soria .dijitTabContainerTop .dijitTabListWrapper { + border-bottom: none; +} + +/*non-checked tabs */ +.soria .dijitTabContainerTop-tabs .dijitTab { + top: 1px; +} + +/* checked tabs */ +.soria .dijitTabContainerTop-tabs .dijitTabChecked { + border-bottom-color: #94b4e6; +} + +/* strip */ +.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; +} + +/* ================================ */ +/* bottom tabs */ +.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; +} + +/* bottom container */ +.soria .dijitTabContainerBottom-container { + border-bottom: none; +} + +.soria .dijitTabContainerBottom-tabs .dijitTab { + border-bottom: none; + border-top: 1px solid #B1BADF; + background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left; +} + +/* checked tabs */ +.soria .dijitTabContainerBottom-tabs .dijitTabChecked { + border-top-color:#94b4e6; +} + + +.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent { + padding-top: 3px; + padding-bottom: 3px; + background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv { + background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabHover { + color: #243C5F; + background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv { + background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabBottomHoverC.gif") repeat-x bottom left; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabChecked { + /* the selected tab (with or without hover) */ + background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv { + background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent { + background: url("../images/tabBottomActiveC.gif") repeat-x bottom left; +} + +/* strip */ +.soria .dijitTabContainerBottomStrip { + padding-bottom: 2px; + border: 1px solid #B1BADF; +} + +.soria .dijitTabContainerBottomStrip { + background: #F0F4FC; +} + +/* top/bottom strip */ +.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; +} + +/* ================================ */ +/* right tabs */ +.soria .dijitTabContainerRight-tabs { + height: 100%; + border-color: #ccc; + padding-top: 3px; +} + +/* right container */ +.soria .dijitTabContainerRight-container { + border-right: none; +} + +.soria .dijitTabContainerRight-tabs .dijitTab { + border-bottom: none; + border-left: 1px solid #B1BADF; + border-bottom: 1px solid #B1BADF !important; +} + + +/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ +.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv, +.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv { + border-bottom: solid #B1BADF 1px; + margin-bottom: -1px; +} + +/* checked tabs */ +.soria .dijitTabContainerRight-tabs .dijitTabChecked { + border-left-color: #94b4e6; +} + +.soria .dijitTabContainerRight-tabs .dijitTabChecked { + background: url("../images/tabRightChecked.gif") no-repeat left top !important; +} + +/* some odd ie bug when borders dissapear when setting a bottom margin, this sortof helps */ +.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv, +.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv, +.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv, +.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv { + border-bottom: solid #94b4e6 1px; + margin-bottom: -1px; +} + +.soria .dijitTabContainerRight-tabs .dijitTab { + background: url("../images/tabContainerSprite.gif") no-repeat left -350px; +} +.soria .dijitTabContainerRight-tabs .dijitTabHover .dijitTab { + background: url("../images/tabContainerSprite.gif") no-repeat left -200px; +} + +/* strip */ +.soria .dijitTabContainerRightStrip { + padding-right: 2px; + border: 1px solid #B1BADF; + background: #F0F4FC; + border-left: none; +} + +/* ================================ */ +/* left tabs */ +.soria .dijitTabContainerLeft-tabs { + border-color: #ccc; + padding-top: 3px; + height: 100%; +} + +/* left conatiner */ +.soria .dijitTabContainerLeft-container { + border-left: none; +} + +.soria .dijitTabContainerLeft-tabs .dijitTab { + border-right: 1px solid #B1BADF; + border-bottom: 1px solid #B1BADF; +} + +/* checked tabs */ +.soria .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right: 1px solid #94b4e6; +} + +.soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -350px; +} +.soria .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv { + background: url("../images/tabContainerSprite.gif") no-repeat right -200px; +} +.soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, +.soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { + background: url("../images/tabLeftChecked.gif") no-repeat right top; +} + +.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv, +.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + border-bottom: solid #B1BADF 1px; + margin-bottom: -1px; +} + +.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, +.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv, +.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv, +.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv { + border-bottom: solid #94b4e6 1px; + margin-bottom: -1px; +} + +/* strip */ +.soria .dijitTabContainerLeftStrip { + padding-left: 2px; + border: 1px solid #B1BADF; + background: #F0F4FC; + border-right: none; +} + +/* ================================ */ +/* left/right tabs */ +.soria .dijitTabContainerLeft-tabs .dijitTab, +.soria .dijitTabContainerRight-tabs .dijitTab { + margin-right:auto; + margin-bottom:2px; /* space between one tab and the next in left/right mode */ +} + +/* left/right tabstrip */ +.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; +} +/* ================================ */ + +/* this resets the tabcontainer stripe when within a contentpane */ +.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; +} + + +/* ================================ */ + +/* Menu and slider control styles */ +.soria .dijitTabContainer .tabStripButton { + margin-right: 0; +} +.soria .dijitTabContainer .tabStripButton-top { + margin-top: 1px; +} + +.soria .tabStripButton .dijitTabContent{ + padding: 6px 0 5px 0; +} + +.dj_ie6 .soria .tabStripButton .dijitTabContent, +.dj_ie7 .soria .tabStripButton .dijitTabContent { + padding-top: 7px; +} + +.soria .tabStrip-disabled .tabStripButton .dijitTabContent { + padding: 5px 0 3px 0; +} + +.dj_ie6 .soria .tabStrip-disabled .tabStripButton .dijitTabContent, +.dj_ie7 .soria .tabStrip-disabled .tabStripButton .dijitTabContent { + padding-top: 6px; +} + +.soria .dijitTabContainer .tabStripButton-bottom { + background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom; + border-bottom: medium none; + border-top: 1px solid #B1BADF; +} + +.soria .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv { + background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom; +} + +.soria .dijitTabContainer .tabStripButton-bottom .dijitTabContent { + background: transparent; +} + +.soria .dijitTabStripIcon { + height: 14px; + width: 14px; + background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top ; +} + +.dj_ie6 .soria .dijitTabStripIcon { + background-image: url(../images/spriteRoundedIconsSmall.gif); +} + +.soria .dijitTabStripSlideRightIcon { + background-position: -30px top; +} + +.soria .dijitTabStripMenuIcon { + background-position: -15px top; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/TabContainer_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/TabContainer_rtl.css new file mode 100644 index 0000000..eba3963 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/layout/TabContainer_rtl.css @@ -0,0 +1,43 @@ +.dijitRtl .soria .dijitTab { + margin-right:0; + margin-left:2px; /* space between one tab and the next in top/bottom mode */ +} + +/* tab strips */ +.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/dojo-release-1.7.2-src/dijit/themes/soria/soria.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/soria.css new file mode 100644 index 0000000..36471d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/soria.css @@ -0,0 +1,41 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); +@import url("layout/ContentPane.css"); +@import url("layout/TabContainer.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/SplitContainer.css"); +@import url("layout/BorderContainer.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Slider.css"); +@import url("form/Select.css"); +@import url("Tree.css"); +@import url("ProgressBar.css"); +@import url("TitlePane.css"); +@import url("Calendar.css"); +@import url("TimePicker.css"); +@import url("Toolbar.css"); +@import url("Dialog.css"); +@import url("Menu.css"); +@import url("Editor.css"); +@import url("../../icons/editorIcons.css"); /* sprite for editor icons to be used by all themes */ +@import url("ColorPalette.css"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/soria/soria_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/soria/soria_rtl.css new file mode 100644 index 0000000..b804011 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/soria/soria_rtl.css @@ -0,0 +1,29 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("layout/AccordionContainer_rtl.css"); +@import url("form/Slider_rtl.css"); +@import url("form/Button_rtl.css"); +@import url("Tree_rtl.css"); +@import url("TitlePane_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("Menu_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css"); /*sprite for editor icons to be used by all themes*/ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/themeTester-orig.html b/js/dojo-release-1.7.2-src/dijit/themes/themeTester-orig.html new file mode 100644 index 0000000..ece749f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/themeTester-orig.html @@ -0,0 +1,1241 @@ + + + + Dijit Theme Tester + + + + + + + + + + + + + + + + + + + + +
            Loading themeTester ...
            + + +
            +
            + + + + +
            + + + +
            + +
            +

            Tooltips

            +
              +
            • + rich text tooltip + + Embedded bold RICH text weirdness! + +
            • + +
            • anchor tooltip + tooltip on anchor +
            • +
            + + + + + + + + + + + + + + + + + +
            +
            tooltip below
            +
            I'm below!
            +
            +
            tooltip after
            +
            I'm on the right!
            (or left on RTL systems)
            +
            +
            tooltip before
            +
            I'm on the left!
            (or right on RTL systems)
            +
            +
            tooltip above
            +
            I'm above!
            +
            + +
            + +

            Dialogs

            + + +
            + Show Tooltip Dialog +
            + + + + + + + + + + + +
            + +
            +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + + +
            + +
            +

            + Selecting a color will change the background color of the page. + Use this to test how tooltips and drop downs appear with different backgrounds. +

            +

            3x4

            + +
            +

            7x10

            +
            +
            +
            +
            + This tab container uses slide controls when the tabs are too wide to fit beside each other. + If you make the left column narrow enough, the slide controls should appear. +
            +
            +
            +
            + +
            +
            + SubTab 1 + SubTab 2 +
            +

            I am tab 3, inlined.

            +
            +
            +

            I am tab 4, inlined.

            +
            +
            +
            + +
            +
            + + +
            + + +
            + + + + + + + +
            + + +

            dijit.form.Textarea

            +

            Enabled:

            + + +
            +

            Disabled:

            + + + +

            dijit.form.SimpleTextarea

            +

            +

            Enabled:

            + + +

            Disabled:

            + +
            + +
            +

            Enabled:

            + +
            +
              +
            • Lorem and a link, what do you think?
            • +
            • This is the Editor with a Toolbar attached.
            • +
            +
            +

            Disabled:

            +
            +
              +
            • Lorem and a link, what do you think?
            • +
            • This is the Editor with a Toolbar attached.
            • +
            +
            +
            + + +
            + + + + +

            Enabled

            +
            +
            +
              +
            1. 0 +
            2. 100 +
            + +
            +
            +
              +
              +
              Slider2 Value: +
              + +
              +
                +
                +
                +
                  +
                1. lowest +
                2. normal +
                3. highest +
                + +
                +
                Value: + +
                +
                +
                  +

                1. small +

                2. medium + +

                3. large +
                +
                + +

                Disabled

                +
                +
                +
                  +
                1. 0 +
                2. 100 +
                + +
                +
                +
                  +
                  +
                  +
                  +
                    +
                    +
                    +
                      +
                    1. lowest +
                    2. normal +
                    3. highest +
                    + +
                    + +
                    +
                    +
                      +

                    1. small +

                    2. medium +

                    3. large +
                    +
                    +
                    + + + + + + + + +
                    + + +
                    + + +
                    +

                    You can explore this single page after applying a Theme + for use in creation of your own theme.

                    + +

                    I am whole slew of Widgets on a page. Jump to dijit tests to + test individual components.

                    + +

                    There is a right-click [context] pop-up menu here, as well.

                    +
                    + +
                    + +
                    + +
                    +

                    I am the last Tab

                    + +
                    + +
                    + +
                    + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/themeTester.html b/js/dojo-release-1.7.2-src/dijit/themes/themeTester.html new file mode 100644 index 0000000..7bfa6bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/themeTester.html @@ -0,0 +1,1064 @@ + + + + + + + Dijit Theme Tester + + + + + + + + + + + + + + + + + + + + + + + +
                    Loading themeTester ...
                    + + +
                    +
                    +
                    + + + + +
                    + + + +
                    + +
                    +

                    Tooltips

                    +
                      +
                    • + rich text tooltip + + Embedded bold RICH text weirdness! + +
                    • + +
                    • anchor tooltip + tooltip on anchor +
                    • +
                    + + + + + + + + + + + + + + + + + +
                    +
                    tooltip below
                    +
                    I'm below!
                    +
                    +
                    tooltip after
                    +
                    I'm on the right!
                    (or left on RTL systems)
                    +
                    +
                    tooltip before
                    +
                    I'm on the left!
                    (or right on RTL systems)
                    +
                    +
                    tooltip above
                    +
                    I'm above!
                    +
                    + +
                    + +

                    Dialogs

                    + + +
                    + Show Tooltip Dialog +
                    + + + + + + + + + + + +
                    + +
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    +
                    +
                    + +
                    + + +
                    + +
                    +

                    + Selecting a color will change the background color of the page. + Use this to test how tooltips and drop downs appear with different backgrounds. +

                    +

                    3x4

                    + +
                    +

                    7x10

                    +
                    +
                    +
                    + + +
                    + +
                    + +

                    Buttons

                    +

                    Buttons can do an action, display a menu, or both:

                    + + Enabled: + + + +
                    + Drop Down + +
                    + +
                    + Combo + +
                    + +
                    Toggle
                    + +
                    + + Disabled: + + + +
                    + Drop Down + +
                    + +
                    + Combo + +
                    + + + +
                    + +

                    CheckBox

                    +
                    + + + + + + + + + + + +
                    + +

                    Radio Buttons

                    +
                    + + + + + + +
                    +
                    + +
                    + +

                    dijit.form.DateTextBox

                    + + + + + + + +

                    dijit.form.TimeTextBox

                    + + + + + +

                    dijit.form.CurrencyTextBox

                    + + + + + +
                    + +

                    dijit.form.NumberSpinner max=100

                    + + + + + +
                    + +
                    + +

                    dijit.form.Select

                    + + +
                    + Alabama + Alaska + Arizona + Arkansas + California + New
                      Mexico
                    +
                    + + +
                    + Alabama + Alaska + Arizona + Arkansas + California + New
                      Mexico
                    +
                    + +
                    + +

                    dijit.form.FilteringSelect

                    + + + + + + + + + +
                    + +
                    + + +

                    dijit.form.Textarea

                    +

                    Enabled:

                    + + +
                    +

                    Disabled:

                    + + + +

                    dijit.form.SimpleTextarea

                    +

                    +

                    Enabled:

                    + + +

                    Disabled:

                    + +
                    + +
                    +

                    Enabled:

                    + +
                    +
                      +
                    • Lorem and a link, what do you think?
                    • +
                    • This is the Editor with a Toolbar attached.
                    • +
                    +
                    +

                    Disabled:

                    +
                    +
                      +
                    • Lorem and a link, what do you think?
                    • +
                    • This is the Editor with a Toolbar attached.
                    • +
                    +
                    +
                    + + +
                    + + + +

                    Enabled

                    +
                    +
                    +
                      +
                    1. 0 +
                    2. 100 +
                    + +
                    +
                    +
                      +
                      +
                      Slider2 Value: +
                      + +
                      +
                        +
                        +
                        +
                          +
                        1. lowest +
                        2. normal +
                        3. highest +
                        +
                        +
                        Value: + +
                        +
                        +
                          +

                        1. small +

                        2. medium +

                        3. large +
                        +
                        + +

                        Disabled

                        +
                        +
                        +
                          +
                        1. 0 +
                        2. 100 +
                        + +
                        +
                        +
                          +
                          +
                          + +
                          +
                            +
                            +
                            +
                              +
                            1. lowest +
                            2. normal +
                            3. highest +
                            +
                            + +
                            +
                            +
                              +

                            1. small +

                            2. medium +

                            3. large +
                            +
                            +
                            + +
                            + +

                            TitlePane

                            +
                            +

                            This is a title pane. It can be expanded and collapsed.

                            + +

                            Sed sollicitudin suscipit risus. Nam + ullamcorper. Sed nisl lectus, pellentesque nec, + malesuada eget, ornare a, libero. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit.

                            + +
                            + +
                            + +

                            ProgressBar

                            +
                            + + Indeterminate: +
                            + +
                            + +
                            + +

                            dijit.InlineEditBox + dijit.form.TextBox on <h3>

                            + + (HTML before) +

                            + Edit me - I trigger the onChange callback +

                            + (HTML after) + +
                            + +

                            dijit.InlineEditBox + dijit.form.Textarea

                            + + (HTML before) +

                            + I'm one big ‪paragraph.‬ Go ahead and edit ‪me.‬ I dare ‪you.‬ + The quick brown fox jumped over the lazy ‪dog.‬ Blah blah blah blah blah blah ‪blah ...‬ +

                            + (HTML after) + +

                            + These links will + disable / + enable + the text area above. +

                            + +
                            + +

                            dijit.form.DateTextBox

                            + + (HTML inline before) + + + (HTML after) +
                            + +

                            dijit.form.TimeTextBox

                            + + (HTML inline before) + + + (HTML after) + +
                            + + +

                            dijit.form.FilteringSelect + Inline + remote data store

                            + (HTML inline before) + Indiana + (HTML after) + +
                            + +
                            +
                            +

                            Source 1

                            +
                            +
                            Item X
                            +
                            Item Y
                            +
                            Item Z
                            +
                            +
                            +
                            +

                            Source 2

                            +
                            +
                            Item 1
                            +
                            Item 2
                            +
                            Item 3
                            +
                            +
                            +
                            + +
                            + SubTab 1 + SubTab 2 +
                            +

                            I am tab 3, inlined.

                            +
                            +
                            +

                            I am tab 4, inlined.

                            +
                            +
                            + +
                            + This pane is closable, just for the icon ... +
                            +
                            + + +
                            + +
                            +

                            You can explore this single page after applying a Theme + for use in creation of your own theme.

                            + +

                            I am whole slew of Widgets on a page. Jump to dijit tests to + test individual components.

                            + +

                            There is a right-click [context] pop-up menu here, as well.

                            +
                            + +
                            + +
                            + +
                            +

                            I am the last Tab

                            +
                            + I am the second dialog. I am + parented by the Low Tab Pane #3 +
                            +
                            + +
                            + +
                            + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/themeTesterImages/blackButtonEnabled.gif b/js/dojo-release-1.7.2-src/dijit/themes/themeTesterImages/blackButtonEnabled.gif new file mode 100644 index 0000000..9174efd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/themeTesterImages/blackButtonEnabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/themeTesterImages/blackButtonHover.gif b/js/dojo-release-1.7.2-src/dijit/themes/themeTesterImages/blackButtonHover.gif new file mode 100644 index 0000000..16f087c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/themeTesterImages/blackButtonHover.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/themeTesterQuirk.html b/js/dojo-release-1.7.2-src/dijit/themes/themeTesterQuirk.html new file mode 100644 index 0000000..8414143 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/themeTesterQuirk.html @@ -0,0 +1,5 @@ + + + + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Calendar.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Calendar.css new file mode 100644 index 0000000..d650d4f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Calendar.css @@ -0,0 +1,161 @@ +/* Calendar*/ + +.tundra .dijitCalendarIncrementControl { + /* next/prev month buttons */ + 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 { + /* month header cell */ + 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 { + /* day of week labels */ + 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 { + /* style for each day cell */ + 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 { + /* days that are part of the previous or next month */ + color:#999999; + background-color:#f8f8f8; +} + +.tundra .dijitCalendarCurrentMonth { + /* days that are part of this month */ + background-color: white; +} + +.tundra .dijitCalendarCurrentDate { + /* cell for today's date */ + text-decoration:underline; + font-weight:bold; +} + +.tundra .dijitCalendarHoveredDate { + background-color: #e2ebf2; +} + +.tundra .dijitCalendarDisabledDate { + text-decoration: line-through; + background-color: white; /* override hover effects above, hover and click on disabled date should have no effect */ +} + +.tundra .dijitCalendarSelectedDate { + /* cell for the selected date */ + background-color:#bbc4d0 !important; + color:black !important; +} +.tundra .dijitCalendarYearContainer { + /* footer of the table that contains the year display/selector */ + background:white url("images/calendarYearLabel.png") repeat-x bottom; + border-top:1px solid #ccc; +} + +.tundra .dijitCalendarYearLabel { + /* container for all of 3 year labels */ + margin:0; + padding:0.4em 0 0.25em 0; + text-align:center; + font-size: 1.17em; +} + +.tundra .dijitCalendarSelectedYear { + /* label for selected year */ + font-weight:bolder; + color:black; + padding:0.2em; + padding-bottom:0.1em; + background-color:#bbc4d0 !important; +} + +.tundra .dijitCalendarNextYear, +.tundra .dijitCalendarPreviousYear { + /* label for next/prev years */ + color:black !important; + font-weight:normal; +} + +/* Styling for month DropDownButton */ + +.tundra .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.tundra .dijitCalendar .dijitButtonText { + padding: 0; +} +.tundra .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0; +} + +/* Styling for month drop down list */ + +.tundra .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover { + background-color: #3559ac; + color:#fff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Calendar_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Calendar_rtl.css new file mode 100644 index 0000000..fbfe27b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Calendar_rtl.css @@ -0,0 +1,9 @@ +/* Calendar */ + +.tundra .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -30px top; +} + +.tundra .dijitCalendarRtl .dijitCalendarIncrease { + background-position: 0 top; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/ColorPalette.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/ColorPalette.css new file mode 100644 index 0000000..38088b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/ColorPalette.css @@ -0,0 +1,5 @@ +.dijitColorPalette { + border:1px solid #7eabcd; + background:#fff; + -moz-border-radius: 0 !important; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Common.css new file mode 100644 index 0000000..eb3e341 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Common.css @@ -0,0 +1,34 @@ +/* DnD avatar-specific settings */ +/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ +.tundra .dojoDndItemBefore { + border-top: 2px solid #369; +} + +.tundra .dojoDndItemAfter { + border-bottom: 2px solid #369; +} + +.tundra .dojoDndItemOver { + cursor:pointer; +} + +.tundra table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} +.tundra .dojoDndAvatar td { border: none; } +.tundra .dojoDndAvatar tr { border: none; } +.tundra .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } +.tundra .dojoDndAvatarItem td { padding: 2px;} +.tundra.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} +.tundra.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} +.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} +.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} + +.tundra .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; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Dialog.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Dialog.css new file mode 100644 index 0000000..b346f62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Dialog.css @@ -0,0 +1,152 @@ +/* Dialog and Tooltip/TooltipDialog */ + +.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 { + /* outer container for the titlebar of the dialog */ + background: #fafafa url("images/titleBar.png") repeat-x top left; + padding: 5px 6px 3px 6px; + outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ +} + +.tundra .dijitDialogTitle { + /* typography and styling of the dialog title */ + font-weight: bold; + padding: 0 4px; +} + +.tundra .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + /* background : url("images/spriteRoundedIconsSmall.png") no-repeat right top; */ + 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; +} + +/* Tooltip and TooltipDialog */ + +.tundra .dijitTooltip, +.tundra .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} + +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 13px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 13px; +} + +.tundra .dijitTooltipContainer { + /* + The part with the text. + */ + 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 { + /* the arrow piece */ + border:0; + z-index: 2; +} +.tundra .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + left: auto !important; + right: 3px; +} + +.tundra .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + top: 0; + left: 3px; + background:url("images/tooltipConnectorUp.png") no-repeat top left; + width:16px; + height:14px; +} + +.dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector { + /* use gif for IE7 too, due to png rendering problems on fade-in (see http://trac.dojotoolkit.org/ticket/6555) */ + background-image: url("images/tooltipConnectorUp.gif"); +} + +.tundra .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + 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 { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + 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 { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + 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; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Dialog_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Dialog_rtl.css new file mode 100644 index 0000000..9337680 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Dialog_rtl.css @@ -0,0 +1,5 @@ +/* Dialog */ +.tundra .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Editor.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Editor.css new file mode 100644 index 0000000..b6f07a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Editor.css @@ -0,0 +1,16 @@ +.dijitEditor { + border:1px solid #bfbfbf; + border-top:0; +} + +.tundra .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled.png'); /* editor icons sprite image - enabled state */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} +.tundra .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled.png'); /* editor icons sprite image - disabled state */ +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Editor_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Editor_rtl.css new file mode 100644 index 0000000..cd4849e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Editor_rtl.css @@ -0,0 +1,7 @@ +/* Editor */ +.tundra .dijitEditorRtl .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); /* editor icons sprite image - enabled state */ +} +.tundra .dijitEditorRtlDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); /* editor icons sprite image - disabled state */ +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Menu.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Menu.css new file mode 100644 index 0000000..6229b17 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Menu.css @@ -0,0 +1,76 @@ +.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 .dijitMenuItemSelected { + background-color: #3559ac; + color:#fff; +} + +.tundra .dijitMenuItemIcon { + width: 16px; + height: 16px; +} + +.tundra .dijitMenuExpand { + /* arrow to indicate this MenuItem opens a sub-menu */ + width: 7px; + height: 7px; + background-image: url('images/spriteArrows.png'); + background-position: -14px 0; +} +.dj_ie6 .tundra .dijitMenuExpand { + background-image: url('images/spriteArrows.gif'); +} + +/* separator can be two pixels -- set border of either one to 0 to have only one */ +.tundra .dijitMenuSeparatorTop { + border-bottom: 1px solid #9b9b9b; +} + +.tundra .dijitMenuSeparatorBottom { + border-top: 1px solid #e8e8e8; +} + +/* the checked menu item */ +.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/dojo-release-1.7.2-src/dijit/themes/tundra/Menu_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Menu_rtl.css new file mode 100644 index 0000000..f148592 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Menu_rtl.css @@ -0,0 +1,3 @@ +.tundra .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/ProgressBar.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/ProgressBar.css new file mode 100644 index 0000000..2d70e28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/ProgressBar.css @@ -0,0 +1,28 @@ +.tundra .dijitProgressBar { + margin:2px 0 2px 0; +} + +.tundra .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + background:#fff url("images/progressBarEmpty.png") repeat-x center center; + border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2; +} + +.tundra .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; +} + +.tundra .dijitProgressBarFull { + border-right:1px solid #b8b8b8; +} + +.tundra .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color:#293a4b; +} + +.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode */ + background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/TimePicker.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TimePicker.css new file mode 100644 index 0000000..13dc7f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TimePicker.css @@ -0,0 +1,52 @@ +/* Time Picker */ +.tundra .dijitTimePickerTick, +.tundra .dijitTimePickerMarker { + border-color: #ccc; +} + +.tundra .dijitTimePickerTick { + color:white; +} + +.tundra .dijitTimePickerMarker { + background:#d3d3d3 url("images/titleBar.png") repeat-x top; + color:#293a4b; + font-weight: bold; +} + +.tundra .dijitTimePickerItemSelected { + color: black; + background: #bbc4d0 none; +} + +.tundra .dijitTimePickerItemHover { + background: #60a1ea none; + color:white; +} + +.tundra .dijitTimePickerItemHover, +.tundra .dijitTimePickerItemSelected { + position: relative; + z-index: 10; +} + +.tundra .dijitTimePickerTick .dijitTimePickerItemInner { + font-size:0.4em; +} + +.tundra .dijitTimePickerItemHover .dijitTimePickerItemInner, +.tundra .dijitTimePickerItemSelected .dijitTimePickerItemInner { + font-size:1em; +} + +.tundra .dijitTimePickerMarkerHover { + border-top: 1px solid #ccc; +} + +.tundra .dijitTimePickerTickHover, +.tundra .dijitTimePickerTickSelected { + margin-top:-0.3em; + margin-bottom:-0.3em; + border-bottom: none; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/TimePicker_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TimePicker_rtl.css new file mode 100644 index 0000000..7a4d5e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TimePicker_rtl.css @@ -0,0 +1,4 @@ + .dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover, +.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover { + border-top: 0; /* IE6/7 bug causes mouseover/out event storm */ +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/TitlePane.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TitlePane.css new file mode 100644 index 0000000..e964bf8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TitlePane.css @@ -0,0 +1,38 @@ +.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/dojo-release-1.7.2-src/dijit/themes/tundra/TitlePane_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TitlePane_rtl.css new file mode 100644 index 0000000..5f63a03 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/TitlePane_rtl.css @@ -0,0 +1,3 @@ +.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode { + background-position: -7px 0; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Toolbar.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Toolbar.css new file mode 100644 index 0000000..ebe9cda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Toolbar.css @@ -0,0 +1,75 @@ +.tundra .dijitToolbar { + border-bottom: 1px solid #ccc; + background:#eaeaea url("images/titleBar.png") repeat-x top left; +} + +/* setting a min-height on ditor toolbar */ +.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; /* reduce padding to compensate for space taken by border */ +} + +.tundra .dijitToolbar .dijitButtonCheckedHover, +.tundra .dijitToolbar .dijitToggleButtonCheckedHover + { + background-color:#abc1e5; + border:1px solid #316ac5; + padding: 0; /* reduce padding to compensate for space taken by border */ +} + +.tundra .dijitToolbar .dijitButtonHover, +.tundra .dijitToolbar .dijitToggleButtonHover, +.tundra .dijitToolbar .dijitDropDownButtonHover, +.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover, +.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover { + /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ + border: 1px solid #869cbf; + padding: 0; /* reduce padding to compensate for space taken by border */ + background-color:#e1e5f0; +} + +.tundra .dijitToolbar label { + padding: 3px 3px 0 6px; +} + +.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, +.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused { + /* focus border doesn't appear on
                            for IE, so need to add it manually */ + border: 1px #555 dotted !important; + padding: 0; +} + +.tundra .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + background: url('../../icons/images/editorIconsEnabled.png'); +} + +.tundra .dijitToolbarRtl .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + background-image: url('../../icons/images/editorIconsDisabled.png'); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Tree.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Tree.css new file mode 100644 index 0000000..76c81e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Tree.css @@ -0,0 +1,96 @@ +/* Tree */ + +.tundra .dijitTreeNode { + background-image : url('images/i.gif'); + background-repeat : repeat-y; + zoom: 1; /* force layout on IE (TODO: may not be needed anymore) */ +} + +/* left vertical line (grid) for all nodes */ +.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 { + /* so insert line shows up on IE when dropping after a target element */ + padding-bottom: 2px; +} + +.tundra .dijitTreeContent { + min-height: 18px; + min-width: 18px; +} + +.tundra .dijitTreeRowSelected .dijitTreeLabel { + background:#e2ebfe; +} +.tundra .dijitTreeRowHover { + /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */ + 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; +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.tundra .dijitTreeNode .dojoDndItemBefore, +.tundra .dijitTreeNode .dojoDndItemAfter { + border-bottom: none; + border-top: none; +} + +.tundra .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + /* copied from Common.css */ + border-top: 2px solid #369; +} + +.tundra .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + /* copied from Common.css */ + border-bottom: 2px solid #369; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/Tree_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Tree_rtl.css new file mode 100644 index 0000000..607b71c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/Tree_rtl.css @@ -0,0 +1,17 @@ +/* Tree */ + +.tundra .dijitTreeNodeRtl, +.tundra .dijitTreeNodeRtl .dijitTreeExpandoLeaf { + /* disable grid lines in RTL mode; too hard to support */ + background-image: none; +} + +.tundra .dijitTreeNodeRtl .dijitTreeExpandoOpened { + /* todo: get rid of transparent space in icon files, + and just use background-placement (or margin maybe) to get desired alignment */ + background-image: url('images/treeExpand_minus_rtl.gif'); +} + +.tundra .dijitTreeNodeRtl .dijitTreeExpandoClosed { + background-image: url('images/treeExpand_plus_rtl.gif'); +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Button.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Button.css new file mode 100644 index 0000000..2c68aef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Button.css @@ -0,0 +1,136 @@ + +/***** + dijit.form.Button + dijit.form.DropDownButton + dijit.form.ComboButton + dijit.form.ComboBox (partial) + dijit.form.Spinner (partial) (TODO: create NumberSpinner.css file like claro has) + *****/ + +.tundra .dijitButtonNode { + /* enabled state - inner */ + border: 1px solid #c0c0c0; + border-bottom: 1px solid #9b9b9b; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #fff url("../images/buttonEnabled.png") repeat-x bottom left; +} +.tundra .dijitButtonText { + text-align: center; + padding: 0 0.3em; +} + +.tundra .dijitDisabled .dijitButtonText { + color: #7F7F7F; +} + +.tundra .dijitArrowButton { + color: #111; +} + +.tundra .dijitComboButton .dijitDownArrowButton { + padding-right:4px; +} + +.tundra .dijitTextBoxReadOnly, +.tundra .dijitTextBoxReadOnly .dijitButtonNode, +.tundra .dijitButtonDisabled .dijitButtonNode, +.tundra .dijitToggleButtonDisabled .dijitButtonNode, +.tundra .dijitDropDownButtonDisabled .dijitButtonNode, +.tundra .dijitComboButtonDisabled .dijitButtonNode, +.tundra .dijitTextBoxDisabled, +.tundra .dijitTextBoxDisabled .dijitButtonNode { + /* disabled state - inner */ + 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 { + /* hover state - inner */ + /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ + border-color: #a5beda; + border-bottom-color:#5c7590; + color:#243C5F; + background:#fcfdff url("../images/buttonHover.png") repeat-x bottom; +} +.tundra .dijitDownArrowButtonHover, +.tundra .dijitUpArrowButtonHover { + /* same as above except don't adjust border color (it's controlled by the containing Spinner/ComboBox) */ + 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 { + /* active state - inner (for when you are pressing a normal button, or + * when a radio-type button is in a depressed state + */ + 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_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner { + margin-top: -1px; /* image has too many blank pixels on top */ +} +.dj_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + margin-top: -2px; /* image has too many blank pixels on top */ +} +.dj_ie8 .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + margin-top: -1px; /* image has too many blank pixels on top */ +} +.tundra .dijitSpinnerButtonContainer { + width: auto; + padding: 0; +} +.tundra .dijitSpinner .dijitArrowButton { + width: 15px; +} +.tundra .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +.tundra .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Checkbox.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Checkbox.css new file mode 100644 index 0000000..28a7d79 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Checkbox.css @@ -0,0 +1,54 @@ +.tundra .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.png'); +} + +.dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.gif'); +} + +.tundra .dijitCheckBox, +.tundra .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url('../images/checkmark.png'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .tundra .dijitCheckBox, +.dj_ie6 .tundra .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url('../images/checkmark.gif'); /* checkbox sprite image */ +} + +.tundra .dijitCheckBox, +.tundra .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -16px; +} + +.tundra .dijitCheckBoxChecked, +.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: 0; +} + +.tundra .dijitCheckBoxDisabled { + /* disabled */ + background-position: -48px; +} + +.tundra .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -32px; +} + +.tundra .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -80px; +} + +.tundra .dijitCheckBoxCheckedHover { + /* hovering over a checked enabled checkbox */ + background-position: -64px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Common.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Common.css new file mode 100644 index 0000000..96899e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Common.css @@ -0,0 +1,76 @@ + +/**** + dijit.form.TextBox + dijit.form.ValidationTextBox + dijit.form.SerializableTextBox + dijit.form.RangeBoundTextBox + dijit.form.NumberTextBox + dijit.form.CurrencyTextBox + dijit.form.NumberSpinner + dijit.form.ComboBox (partial) + ****/ + +.tundra .dijitInputContainer input, +.tundra .dijitTextBox { + margin: 0 0.1em; +} + +.tundra .dijitTextArea { + padding: 3px; +} + +.tundra .dijitTextBox { + /* For all except dijit.form.NumberSpinner: the actual input element. + For TextBox, ComboBox, Spinner: the div that contains the input. + Otherwise the actual input element. + */ + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; + border:1px solid #b3b3b3; +} + +/* ComboBox specific rules*/ +.tundra .dijitComboBox .dijitButtonNode { + padding: 0 0.2em; +} +.tundra .dijitTextBox .dijitButtonNode { + /* line between the input area and the drop down button, and also between + * the up and down buttons of a spinner + */ + border-color: #9b9b9b; +} + +.tundra .dijitTextBoxFocused { + /* input field when focused (ie: typing affects it) */ + border-color:#406b9b; +} +.tundra .dijitTextBoxFocused .dijitButtonNode { + border-color:#366dba; +} + +.tundra .dijitError { + background-color:#f9f7ba; + background-image:none; +} + +.tundra .dijitErrorFocused { + background-color:#f9f999; + background-image:none; +} + +/* Validation errors */ +.tundra .dijitValidationIcon { + /* prevent height change when widget goes from valid to invalid state */ + width: 16px; + background: transparent url('../images/warning.png') no-repeat center center; +} + +/* The highlight is shown in the ComboBox menu. */ +.tundra .dijitComboBoxHighlightMatch { + background-color:#a5beda; +} + +.tundra .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + outline: 1px dotted #666666; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/RadioButton.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/RadioButton.css new file mode 100644 index 0000000..4dfc0fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/RadioButton.css @@ -0,0 +1,52 @@ + +.tundra .dijitRadio, /* stand alone */ +.tundra .dijitRadioIcon { /* inside a toggle button */ + background-image: url('../images/checkmark.png'); /* checkbox sprite image */ + 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'); /* checkbox sprite image */ +} + +.tundra .dijitToggleButton .dijitRadioIcon { + /* for checkbox in a toggle button, override above setting to have no border */ + background-image: url('../images/checkmarkNoBorder.png'); +} +.dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon { + background-image: url('../images/checkmarkNoBorder.gif'); +} + +.tundra .dijitRadio, +.tundra .dijitRadioIcon { + /* unselected */ + background-position: -112px; +} + +.tundra .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -144px; +} + +.tundra .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -176px; +} + +.tundra .dijitRadioChecked, +.tundra .dijitRadioCheckedHover, +.tundra .dijitToggleButtonChecked .dijitRadioIcon { + /* selected. Since clicking a selected radio button doesn't change anything, there's + * no hover effect on selected radio buttons. + */ + background-position: -96px; +} + +.tundra .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -128px; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Select.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Select.css new file mode 100644 index 0000000..b029016 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Select.css @@ -0,0 +1,57 @@ +.tundra .dijitSelect .dijitButtonNode { + padding: 0; +} +.tundra .dijitSelect .dijitButtonNode .dijitArrowButtonInner { + margin: 0 4px 0 5px; +} + +/* Make unselected content portion "look" more like a text box and less like a button */ +.tundra .dijitSelect .dijitButtonContents { + padding-top: 1px; + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; +} +.tundra .dijitSelectHover .dijitButtonContents, +.tundra .dijitSelectActive .dijitButtonContents, +.tundra .dijitSelectOpened .dijitButtonContents, +.tundra .dijitSelectDisabled .dijitButtonContents, +.tundra .dijitSelectReadOnly .dijitButtonContents{ + background: transparent none; +} +.dj_ie .tundra .dijitSelect .dijitButtonContents { + padding-top: 0; +} + +/* Mirror DropDownButton */ +.tundra .dijitSelectDisabled .dijitButtonNode { + border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; + background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x; +} +.dj_ie .tundra .dijitSelectDisabled .dijitButtonNode * { + filter: gray() alpha(opacity=50); +} + +.tundra .dijitSelectHover .dijitButtonNode { + border-color:#a5beda; + border-bottom-color:#5c7590; + border-right-color:#5c7590; + color:#243C5F; + background:#fcfdff url("../images/buttonHover.png") repeat-x bottom; +} + +.tundra .dijitSelectActive .dijitButtonNode, +.tundra .dijitSelectOpened .dijitButtonNode { + border-color:#366dba; + background: #ededed url("../images/buttonActive.png") bottom repeat-x; +} + +/* Make the menu look more combobox-like */ +.tundra .dijitSelectMenu td { + padding: 0; +} +.tundra .dijitSelectMenu .dijitMenuItemLabel, +.tundra .dijitSelectMenu .dijitMenuArrowCell { + padding: 0.1em 0.2em; +} + + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Slider.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Slider.css new file mode 100644 index 0000000..7465e83 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Slider.css @@ -0,0 +1,147 @@ +.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/dojo-release-1.7.2-src/dijit/themes/tundra/form/Slider_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Slider_rtl.css new file mode 100644 index 0000000..9375c4e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/form/Slider_rtl.css @@ -0,0 +1,31 @@ +.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; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/accordionItemActive.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/accordionItemActive.gif new file mode 100644 index 0000000..ccff383 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/accordionItemActive.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/accordionItemHover.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/accordionItemHover.gif new file mode 100644 index 0000000..96bd3a4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/accordionItemHover.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonActive.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonActive.png new file mode 100644 index 0000000..09417b1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonDisabled.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonDisabled.png new file mode 100644 index 0000000..70766f4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonDisabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonEnabled.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonEnabled.png new file mode 100644 index 0000000..cf0eb20 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonEnabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonHover.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonHover.png new file mode 100644 index 0000000..b074e4e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/buttonHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarDayLabel.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarDayLabel.png new file mode 100644 index 0000000..c1a1553 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarDayLabel.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarMonthLabel.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarMonthLabel.png new file mode 100644 index 0000000..fd2cf0a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarMonthLabel.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarYearLabel.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarYearLabel.png new file mode 100644 index 0000000..dd344f5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/calendarYearLabel.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmark.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmark.gif new file mode 100755 index 0000000..ae6faa9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmark.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmark.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmark.png new file mode 100644 index 0000000..0307109 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmark.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmarkNoBorder.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmarkNoBorder.gif new file mode 100755 index 0000000..324bfb3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmarkNoBorder.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmarkNoBorder.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmarkNoBorder.png new file mode 100755 index 0000000..9cec0c0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/checkmarkNoBorder.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/circleIcon.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/circleIcon.gif new file mode 100755 index 0000000..d582290 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/circleIcon.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/circleIcon.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/circleIcon.png new file mode 100755 index 0000000..6f059e6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/circleIcon.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/comboArrowDown.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/comboArrowDown.gif new file mode 100644 index 0000000..e00a87b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/comboArrowDown.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dijitProgressBarAnim.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dijitProgressBarAnim.gif new file mode 100644 index 0000000..167a3e0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dijitProgressBarAnim.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dijitProgressBarAnim.psd b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dijitProgressBarAnim.psd new file mode 100644 index 0000000..0a7bf23 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dijitProgressBarAnim.psd differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndCopy.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndCopy.png new file mode 100644 index 0000000..baecd7c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndMove.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndMove.png new file mode 100644 index 0000000..07f878c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndMove.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndNoCopy.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndNoCopy.png new file mode 100644 index 0000000..9bf9c33 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndNoCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndNoMove.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndNoMove.png new file mode 100644 index 0000000..cb8bd8b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dndNoMove.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dojoTundraGradientBg.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dojoTundraGradientBg.gif new file mode 100755 index 0000000..0da1239 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dojoTundraGradientBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dojoTundraGradientBg.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dojoTundraGradientBg.png new file mode 100644 index 0000000..ac118dd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/dojoTundraGradientBg.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/doubleArrowDown.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/doubleArrowDown.png new file mode 100644 index 0000000..92678d2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/doubleArrowDown.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/doubleArrowUp.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/doubleArrowUp.png new file mode 100644 index 0000000..bba30fe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/doubleArrowUp.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/folderClosed.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/folderClosed.gif new file mode 100644 index 0000000..9d5fcbc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/folderClosed.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/folderOpened.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/folderOpened.gif new file mode 100644 index 0000000..a514c7b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/folderOpened.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i.gif new file mode 100755 index 0000000..ebd95a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_half.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_half.gif new file mode 100755 index 0000000..2947c4f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_half.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_half_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_half_rtl.gif new file mode 100644 index 0000000..4f60ec4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_half_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_rtl.gif new file mode 100644 index 0000000..7dafaad Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/i_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/leaf.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/leaf.gif new file mode 100644 index 0000000..85b0178 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/leaf.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/loading.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/loading.gif new file mode 100755 index 0000000..6e7c8e5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/loading.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/menu.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/menu.png new file mode 100644 index 0000000..f5b93d1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/menu.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/minusButton.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/minusButton.gif new file mode 100644 index 0000000..48d5172 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/minusButton.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/no.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/no.gif new file mode 100644 index 0000000..9021a14 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/no.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/noX.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/noX.gif new file mode 100755 index 0000000..4a16dc7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/noX.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/plusButton.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/plusButton.gif new file mode 100644 index 0000000..103c021 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/plusButton.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/popupMenuBg.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/popupMenuBg.gif new file mode 100644 index 0000000..15f4f1b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/popupMenuBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumb.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumb.gif new file mode 100755 index 0000000..15d4879 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumb.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumb.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumb.png new file mode 100644 index 0000000..f2fc338 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumbFocus.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumbFocus.gif new file mode 100644 index 0000000..b44611c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumbFocus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumbFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumbFocus.png new file mode 100644 index 0000000..fb06323 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/preciseSliderThumbFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-1.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-1.png new file mode 100644 index 0000000..cfc3fd2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-1.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-2.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-2.png new file mode 100644 index 0000000..d27981d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-2.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-3.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-3.png new file mode 100644 index 0000000..3b92a7d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-3.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-4.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-4.png new file mode 100644 index 0000000..61e4276 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-4.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-5.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-5.png new file mode 100644 index 0000000..48b189a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-5.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-6.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-6.png new file mode 100644 index 0000000..af50c4d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-6.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-7.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-7.png new file mode 100644 index 0000000..a4fffa3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-7.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-8.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-8.png new file mode 100644 index 0000000..b4c92f3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-8.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-9.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-9.png new file mode 100644 index 0000000..d8bff13 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim-9.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim.gif new file mode 100644 index 0000000..d3df139 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim.psd b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim.psd new file mode 100644 index 0000000..0a7bf23 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarAnim.psd differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarEmpty.png new file mode 100644 index 0000000..07f4c91 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarFull.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarFull.png new file mode 100644 index 0000000..0ce60f5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/progressBarFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActive.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActive.png new file mode 100644 index 0000000..60840c7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActiveDisabled.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActiveDisabled.png new file mode 100644 index 0000000..b49724e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActiveDisabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActiveHover.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActiveHover.png new file mode 100644 index 0000000..f21d4e5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonActiveHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonDisabled.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonDisabled.png new file mode 100644 index 0000000..8da7e78 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonDisabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonEnabled.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonEnabled.png new file mode 100644 index 0000000..4342fea Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonEnabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonHover.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonHover.png new file mode 100644 index 0000000..fcb697f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/radioButtonHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderEmpty.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderEmpty.png new file mode 100644 index 0000000..070c12f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderEmpty.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderEmptyVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderEmptyVertical.png new file mode 100644 index 0000000..45aceb7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderEmptyVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFull.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFull.png new file mode 100644 index 0000000..4b3fcbb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFull.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullFocus.png new file mode 100755 index 0000000..ee19356 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullVertical.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullVertical.png new file mode 100644 index 0000000..e7618e8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullVertical.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullVerticalFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullVerticalFocus.png new file mode 100755 index 0000000..3ab37e6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderFullVerticalFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumb.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumb.png new file mode 100644 index 0000000..fe33583 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumbFocus.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumbFocus.gif new file mode 100644 index 0000000..15dd3d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumbFocus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumbFocus.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumbFocus.png new file mode 100644 index 0000000..fe9763a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/sliderThumbFocus.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/smallArrowDown.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/smallArrowDown.png new file mode 100644 index 0000000..cabd01c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/smallArrowDown.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/smallArrowUp.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/smallArrowUp.png new file mode 100644 index 0000000..a4dd670 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/smallArrowUp.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerH-thumb.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerH-thumb.png new file mode 100644 index 0000000..e7bc204 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerH-thumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerH.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerH.png new file mode 100644 index 0000000..0e5e471 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerH.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerV-thumb.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerV-thumb.png new file mode 100644 index 0000000..410a0a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerV-thumb.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerV.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerV.png new file mode 100644 index 0000000..6781f0e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/splitContainerSizerV.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteArrows.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteArrows.gif new file mode 100644 index 0000000..56a37f4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteArrows.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteArrows.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteArrows.png new file mode 100644 index 0000000..e0229c9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteArrows.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif new file mode 100644 index 0000000..251389a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteRoundedIconsSmall.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteRoundedIconsSmall.png new file mode 100644 index 0000000..e81ba07 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/spriteRoundedIconsSmall.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabActive.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabActive.png new file mode 100644 index 0000000..eaf1ed4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabActive.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabClose.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabClose.gif new file mode 100755 index 0000000..2cb0ee1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabClose.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabClose.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabClose.png new file mode 100644 index 0000000..136cd22 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabClose.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabCloseHover.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabCloseHover.gif new file mode 100755 index 0000000..f59471e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabCloseHover.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabCloseHover.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabCloseHover.png new file mode 100644 index 0000000..290e77f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabCloseHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabDisabled.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabDisabled.png new file mode 100644 index 0000000..ea0f617 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabDisabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabEnabled.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabEnabled.png new file mode 100644 index 0000000..d40cf45 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabEnabled.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabHover.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabHover.gif new file mode 100755 index 0000000..471e0ee Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabHover.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabHover.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabHover.png new file mode 100644 index 0000000..16487f1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tabHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/titleBar.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/titleBar.png new file mode 100644 index 0000000..b2609f3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/titleBar.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/titleBarBg.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/titleBarBg.gif new file mode 100644 index 0000000..1cd57cf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/titleBarBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorDown.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorDown.gif new file mode 100644 index 0000000..18b2795 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorDown.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorDown.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorDown.png new file mode 100644 index 0000000..1aff5a3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorDown.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorLeft.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorLeft.gif new file mode 100644 index 0000000..3d9cbc5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorLeft.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorLeft.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorLeft.png new file mode 100644 index 0000000..e68fec3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorLeft.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorRight.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorRight.gif new file mode 100644 index 0000000..2b887f7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorRight.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorRight.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorRight.png new file mode 100644 index 0000000..dc2434a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorRight.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorUp.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorUp.gif new file mode 100644 index 0000000..d0cad8a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorUp.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorUp.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorUp.png new file mode 100644 index 0000000..55a378b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/tooltipConnectorUp.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_leaf.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_leaf.gif new file mode 100644 index 0000000..4b1c6c1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_leaf.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif new file mode 100644 index 0000000..b563d7c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_loading.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_loading.gif new file mode 100644 index 0000000..424d376 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_loading.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_minus.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_minus.gif new file mode 100755 index 0000000..5977782 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_minus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_minus_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_minus_rtl.gif new file mode 100644 index 0000000..cf50054 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_minus_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_mius.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_mius.gif new file mode 100644 index 0000000..5977782 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_mius.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_plus.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_plus.gif new file mode 100755 index 0000000..2b96a55 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_plus.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_plus_rtl.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_plus_rtl.gif new file mode 100644 index 0000000..11f9916 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeExpand_plus_rtl.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeHover.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeHover.png new file mode 100644 index 0000000..cd6d28b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/treeHover.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/validationInputBg.gif b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/validationInputBg.gif new file mode 100755 index 0000000..5a9916a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/validationInputBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/validationInputBg.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/validationInputBg.png new file mode 100644 index 0000000..d222fb4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/validationInputBg.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/warning.png b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/warning.png new file mode 100644 index 0000000..c52f83d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dijit/themes/tundra/images/warning.png differ diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/AccordionContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/AccordionContainer.css new file mode 100644 index 0000000..c5621ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/AccordionContainer.css @@ -0,0 +1,26 @@ +/* Accordion */ + +.tundra .dijitAccordionContainer { + border-color: #ccc; + background-color: #fff; +} + +/* common */ + +.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/dojo-release-1.7.2-src/dijit/themes/tundra/layout/BorderContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/BorderContainer.css new file mode 100644 index 0000000..0dd1b1b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/BorderContainer.css @@ -0,0 +1,69 @@ +/* BorderContainer */ + +.tundra .dijitBorderContainer { + background-color: #fcfcfc; + padding: 5px; +} + +.tundra .dijitSplitContainer-child, +.tundra .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px #ccc solid; +} + +.tundra .dijitBorderContainer-dijitTabContainerTop, +.tundra .dijitBorderContainer-dijitTabContainerBottom, +.tundra .dijitBorderContainer-dijitTabContainerLeft, +.tundra .dijitBorderContainer-dijitTabContainerRight { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + border: none; +} + +.tundra .dijitBorderContainer-dijitBorderContainer { + /* also, make nested BorderContainers look like a single big widget with lots of splitters */ + 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; +} + +/* active splitter */ +.tundra .dijitSplitterActive { + font-size: 1px; + background-image: none; + background-color: #aaa; + -moz-opacity: 0.6; + opacity: 0.6; + filter: Alpha(Opacity=60); + margin: 0; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/ContentPane.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/ContentPane.css new file mode 100644 index 0000000..21d25d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/ContentPane.css @@ -0,0 +1,21 @@ +/* ContentPane */ + +.tundra .dijitContentPane { + padding: 0; +} + +/* nested layouts */ +.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; /* override background-color setting on parent .dijitBorderContainer */ + padding: 5px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/SplitContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/SplitContainer.css new file mode 100644 index 0000000..5a3eed6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/SplitContainer.css @@ -0,0 +1,31 @@ +.tundra .dijitSplitContainerSizerH { + background:url("../images/splitContainerSizerV.png") repeat-y #fff; + border:0; + border-left:1px solid #bfbfbf; + border-right:1px solid #bfbfbf; + width:7px; +} + +.tundra .dijitSplitContainerSizerH .thumb { + background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc; + left:1px; + width:3px; + height:19px; + overflow: hidden; +} + +.tundra .dijitSplitContainerSizerV { + background:url("../images/splitContainerSizerH.png") repeat-x #fff; + border:0; + border-top:1px solid #bfbfbf; + border-bottom:1px solid #bfbfbf; + height:7px; +} + +.tundra .dijitSplitContainerSizerV .thumb { + background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc; + top:1px; + width:19px; + height:3px; + overflow: hidden; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/TabContainer.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/TabContainer.css new file mode 100644 index 0000000..667da4a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/TabContainer.css @@ -0,0 +1,335 @@ +/* Tabs, shared classes */ +.tundra .dijitTabPaneWrapper { + background:#fff; + border:1px solid #ccc; + margin: 0; + padding: 0; +} + +.tundra .dijitTab { + line-height:normal; + margin-right:4px; /* space between one tab and the next in top/bottom mode */ + padding:0; + border:1px solid #ccc; + background:#e2e2e2 url("../images/tabEnabled.png") repeat-x; +} + +.tundra .dijitTabInnerDiv { + padding:2px 8px 2px 9px; +} + +.tundra .dijitTabSpacer { + display: none; +} + +.tundra .dijitTabContainer .tabStripRBtn { + margin-right: 20px; +} +.tundra .dijitTabContainer .tabStripLBtn { + margin-left: 20px; +} + +.tundra .nowrapTabStrip .dijitTab { + top: 2px; +} +.tundra .dijitTabContainerBottom .nowrapTabStrip .dijitTab { + top: 0; + bottom: 2px; +} + +/* checked tab*/ +.tundra .dijitTabChecked { + /* the selected tab (with or without hover) */ + background-color:#fff; + border-color: #ccc; + background-image:none; +} + +/* hovered tab */ +.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 { + /* make sure tabs w/close button and w/out close button are same height, even w/small (<12px) font */ + min-height: 12px; + display: inline-block; +} + +/* Nested Tabs */ + +.tundra .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} + +.tundra .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom: 1px solid #CCC; +} + +.tundra .dijitTabContainerTabListNested .dijitTab { + background: none; + border: none; + top: 0; /* to override top: 1px/-1px for normal tabs */ +} +.tundra .dijitTabContainerTabListNested .dijitTab .dijitTabContent { +} +.tundra .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel { + text-decoration: underline; +} +.tundra .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent .tabLabel { + text-decoration: underline; + font-weight: bold; + /*background:#f3f3f3;*/ +} +.tundra .dijitTabContainer .dijitTabPaneWrapperNested { + border: none; /* prevent double border */ +} + +/* Close button */ + +.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"); +} + +/* ================================ */ +/* top tabs */ + +.tundra .dijitTabContainerTop-tabs { + margin-bottom: 0; + border-color: #cccccc; + padding-left: 3px; + background-position: bottom; +} +.tundra .dijitTabContainerTop-tabs .dijitTab { + top: 0; + margin-bottom: -1px; +} + +/* top container */ +.tundra .dijitTabContainerTop-container { + border-top: none; +} + +/* checked tabs */ +.tundra .dijitTabContainerTop-tabs .dijitTabChecked { + border-bottom-color:white; +} + +.tundra .dijitTabContainerTop-tabs, +.tundra .dijitTabContainerBottom-tabs { + padding-left: 3px; + padding-right: 3px; +} + +/* strip */ +.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; +} + + +/* ================================ */ +/* bottom tabs */ +.tundra .dijitTabContainerBottom-tabs { + margin-top: 0; + border-color: #cccccc; + background-position: top; + padding-left: 3px; +} +.tundra .dijitTabContainerBottom-tabs .dijitTab { + bottom: 0; + margin-top: -1px; +} + +/* bottom container */ +.tundra .dijitTabContainerBottom-container { + border-bottom: none; +} + +/* checked tabs */ +.tundra .dijitTabContainerBottom-tabs .dijitTabChecked { + border-top-color:white; +} + +/* strip */ +.tundra .dijitTabContainerBottomStrip { + padding-bottom: 2px; + border: 1px solid #ccc; + background: #f2f2f2; + border-top: none; +} + +/* ================================ */ +/* right tabs */ +.tundra .dijitTabContainerRight-tabs { + border-color: #ccc; + height: 100%; + padding-top: 3px; +} + +.tundra .dijitTabContainerRightStrip { + margin-left: -1px; +} + +/* right container */ +.tundra .dijitTabContainerRight-container { + border-right: none; +} + +/* checked tabs */ +.tundra .dijitTabContainerRight-tabs .dijitTabChecked { + border-left-color:white; +} + +/* strip */ +.tundra .dijitTabContainerRightStrip { + padding-right: 2px; + border: 1px solid #ccc; +} + +.tundra .dijitTabContainerRightStrip { + background: #f2f2f2; +} + +/* ================================ */ +/* left tabs */ +.tundra .dijitTabContainerLeft-tabs { + border-color: #ccc; + padding-top: 3px; + height: 100%; +} + +/* left conatiner */ +.tundra .dijitTabContainerLeft-container { + border-left: none; +} + +/* checked tabs */ +.tundra .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right-color:white; +} + +/* strip */ +.tundra .dijitTabContainerLeftStrip { + padding-left: 2px; + border: 1px solid #ccc; + background: #f2f2f2; + border-right: none; +} + +/* ================================ */ +/* left/right tabs */ +.tundra .dijitTabContainerLeft-tabs .dijitTab, +.tundra .dijitTabContainerRight-tabs .dijitTab { + margin-right:0; + margin-bottom:4px; /* space between one tab and the next in left/right mode */ +} + +/* ================================ */ + +/* this resets the tabcontainer stripe when within a contentpane */ +.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; +} + +/* ================================ */ + +/* Menu and slider control styles */ +.tundra .dijitTabContainer .tabStripButton { + margin-right: 0; + padding-top: 2px; + z-index: 12; +} + +.tundra .dijitTabContainerBottom .tabStripButton { + padding-top: 2px; +} + +.tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv { + padding-bottom: 3px; + padding-top: 1px; +} + +.tundra .tabStripButton .dijitTabInnerDiv { + padding: 3px 2px 4px 2px; +} + +.dj_ie6 .tundra .tabStripButton .dijitTabInnerDiv, +.dj_ie7 .tundra .tabStripButton .dijitTabInnerDiv, +.dj_opera .tundra .tabStripButton .dijitTabInnerDiv { + padding-bottom: 5px; +} +.dj_ie6 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv, +.dj_ie7 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv, +.dj_opera .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv { + padding-bottom: 4px; +} + +.tundra .dijitTabStripIcon { + height: 14px; + width: 14px; + background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top ; +} + +.dj_ie6 .tundra .dijitTabStripIcon { + background-image: url(../images/spriteRoundedIconsSmall.gif); +} + +.tundra .dijitTabStripSlideRightIcon { + background-position: -30px top; +} + +.tundra .dijitTabStripMenuIcon { + background-position: -15px top; +} + diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/TabContainer_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/TabContainer_rtl.css new file mode 100644 index 0000000..fb8e28e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/layout/TabContainer_rtl.css @@ -0,0 +1,51 @@ +.tundra .dijitTabRtl { + -moz-box-orient:horizontal; + text-align: right; +} + +.tundra .dijitTabRtl .dijitTabInnerDiv { + padding:2px 9px 2px 8px; +} + +.tundra .tabStrip-disabled .tabStripButtonRtl .dijitTabInnerDiv { + /* this is not special for RTL mode, but just here to override rule above (for enabled tabstrip) */ + padding-bottom: 3px; + padding-top: 1px; +} + +.tundra .tabStripButtonRtl .dijitTabInnerDiv { + padding: 3px 2px 4px 2px; +} + +.tundra .dijitTabPaneWrapper { + #zoom: 1; +} + +.dj_ie-rtl .tundra .dijitTabContainerLeft-tabs { + margin-left: 1px !important; +} + +.dj_ie-rtl .tundra .dijitTabContainerRight-tabs { + margin-right: 1px !important; +} + +.tundra .dijitTabContainerLeft-tabs .dijitTabRtl, +.tundra .dijitTabContainerRight-tabs .dijitTabRtl { + margin-left:0; +} + +.dj_ie .tundra .dijitTabRtl .dijitTabInnerDiv { + /* without this the tab label and icon become invisible, as though they were set to visibility:hidden */ + width : 0.1% !important; +} + + + +.dj_iequirks-rtl .tundra .dijitTabContainerTopNone, +.dj_iequirks-rtl .tundra .dijitTabContainerBottomNone { + /* this strange rule prevents IE6 bug in themeTesterQuirk.html?dir=rtl upon closing + * "Closable" tab, where the other tabs disappear + */ + border-left: 1px solid #fff; + border-right: 1px solid #fff; +} diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/tundra.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/tundra.css new file mode 100644 index 0000000..f1d239c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/tundra.css @@ -0,0 +1,41 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); +@import url("layout/ContentPane.css"); +@import url("layout/TabContainer.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/SplitContainer.css"); +@import url("layout/BorderContainer.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Slider.css"); +@import url("form/Select.css"); +@import url("Tree.css"); +@import url("ProgressBar.css"); +@import url("TitlePane.css"); +@import url("Calendar.css"); +@import url("TimePicker.css"); +@import url("Toolbar.css"); +@import url("Dialog.css"); +@import url("Menu.css"); +@import url("Editor.css"); +@import url("../../icons/editorIcons.css"); /* sprite for editor icons to be used by all themes */ +@import url("ColorPalette.css"); +@import url("tundra_rtl.css"); diff --git a/js/dojo-release-1.7.2-src/dijit/themes/tundra/tundra_rtl.css b/js/dojo-release-1.7.2-src/dijit/themes/tundra/tundra_rtl.css new file mode 100644 index 0000000..58b7541 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/themes/tundra/tundra_rtl.css @@ -0,0 +1,27 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ +/* RTL files */ +@import url("../dijit_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css");/* RTL sprite for editor icons to be used by all themes*/ +@import url("Menu_rtl.css"); +@import url("Tree_rtl.css"); +@import url("TitlePane_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("form/Slider_rtl.css"); diff --git a/js/dojo-release-1.7.2-src/dijit/tree/ForestStoreModel.js b/js/dojo-release-1.7.2-src/dijit/tree/ForestStoreModel.js new file mode 100644 index 0000000..ca96361 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tree/ForestStoreModel.js @@ -0,0 +1,285 @@ +define([ + "dojo/_base/array", // array.indexOf array.some + "dojo/_base/declare", // declare + "dojo/_base/lang", // lang.hitch + "dojo/_base/window", // win.global + "./TreeStoreModel" +], function(array, declare, lang, win, TreeStoreModel){ + +/*===== +var TreeStoreModel = dijit.tree.TreeStoreModel; +=====*/ + +// module: +// dijit/tree/ForestStoreModel +// summary: +// Interface between a dijit.Tree and a dojo.data store that doesn't have a root item, +// a.k.a. a store that has multiple "top level" items. + +return declare("dijit.tree.ForestStoreModel", TreeStoreModel, { + // summary: + // Interface between a dijit.Tree and a dojo.data store that doesn't have a root item, + // a.k.a. a store that has multiple "top level" items. + // + // description + // Use this class to wrap a dojo.data store, making all the items matching the specified query + // appear as children of a fabricated "root item". If no query is specified then all the + // items returned by fetch() on the underlying store become children of the root item. + // This class allows dijit.Tree to assume a single root item, even if the store doesn't have one. + // + // When using this class the developer must override a number of methods according to their app and + // data, including: + // - onNewRootItem + // - onAddToRoot + // - onLeaveRoot + // - onNewItem + // - onSetItem + + // Parameters to constructor + + // rootId: String + // ID of fabricated root item + rootId: "$root$", + + // rootLabel: String + // Label of fabricated root item + rootLabel: "ROOT", + + // query: String + // Specifies the set of children of the root item. + // example: + // | {type:'continent'} + query: null, + + // End of parameters to constructor + + constructor: function(params){ + // summary: + // Sets up variables, etc. + // tags: + // private + + // Make dummy root item + this.root = { + store: this, + root: true, + id: params.rootId, + label: params.rootLabel, + children: params.rootChildren // optional param + }; + }, + + // ======================================================================= + // Methods for traversing hierarchy + + mayHaveChildren: function(/*dojo.data.Item*/ item){ + // summary: + // Tells if an item has or may have children. Implementing logic here + // avoids showing +/- expando icon for nodes that we know don't have children. + // (For efficiency reasons we may not want to check if an element actually + // has children until user clicks the expando node) + // tags: + // extension + return item === this.root || this.inherited(arguments); + }, + + getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ callback, /*function*/ onError){ + // summary: + // Calls onComplete() with array of child items of given parent item, all loaded. + if(parentItem === this.root){ + if(this.root.children){ + // already loaded, just return + callback(this.root.children); + }else{ + this.store.fetch({ + query: this.query, + onComplete: lang.hitch(this, function(items){ + this.root.children = items; + callback(items); + }), + onError: onError + }); + } + }else{ + this.inherited(arguments); + } + }, + + // ======================================================================= + // Inspecting items + + isItem: function(/* anything */ something){ + return (something === this.root) ? true : this.inherited(arguments); + }, + + fetchItemByIdentity: function(/* object */ keywordArgs){ + if(keywordArgs.identity == this.root.id){ + var scope = keywordArgs.scope?keywordArgs.scope:win.global; + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, this.root); + } + }else{ + this.inherited(arguments); + } + }, + + getIdentity: function(/* item */ item){ + return (item === this.root) ? this.root.id : this.inherited(arguments); + }, + + getLabel: function(/* item */ item){ + return (item === this.root) ? this.root.label : this.inherited(arguments); + }, + + // ======================================================================= + // Write interface + + newItem: function(/* dojo.dnd.Item */ args, /*Item*/ parent, /*int?*/ insertIndex){ + // summary: + // Creates a new item. See dojo.data.api.Write for details on args. + // Used in drag & drop when item from external source dropped onto tree. + if(parent === this.root){ + this.onNewRootItem(args); + return this.store.newItem(args); + }else{ + return this.inherited(arguments); + } + }, + + onNewRootItem: function(/* dojo.dnd.Item */ /*===== args =====*/){ + // summary: + // User can override this method to modify a new element that's being + // added to the root of the tree, for example to add a flag like root=true + }, + + pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){ + // summary: + // Move or copy an item from one parent item to another. + // Used in drag & drop + if(oldParentItem === this.root){ + if(!bCopy){ + // It's onLeaveRoot()'s responsibility to modify the item so it no longer matches + // this.query... thus triggering an onChildrenChange() event to notify the Tree + // that this element is no longer a child of the root node + this.onLeaveRoot(childItem); + } + } + this.inherited(arguments, [childItem, + oldParentItem === this.root ? null : oldParentItem, + newParentItem === this.root ? null : newParentItem, + bCopy, + insertIndex + ]); + if(newParentItem === this.root){ + // It's onAddToRoot()'s responsibility to modify the item so it matches + // this.query... thus triggering an onChildrenChange() event to notify the Tree + // that this element is now a child of the root node + this.onAddToRoot(childItem); + } + }, + + // ======================================================================= + // Handling for top level children + + onAddToRoot: function(/* item */ item){ + // summary: + // Called when item added to root of tree; user must override this method + // to modify the item so that it matches the query for top level items + // example: + // | store.setValue(item, "root", true); + // tags: + // extension + console.log(this, ": item ", item, " added to root"); + }, + + onLeaveRoot: function(/* item */ item){ + // summary: + // Called when item removed from root of tree; user must override this method + // to modify the item so it doesn't match the query for top level items + // example: + // | store.unsetAttribute(item, "root"); + // tags: + // extension + console.log(this, ": item ", item, " removed from root"); + }, + + // ======================================================================= + // Events from data store + + _requeryTop: function(){ + // reruns the query for the children of the root node, + // sending out an onSet notification if those children have changed + var oldChildren = this.root.children || []; + this.store.fetch({ + query: this.query, + onComplete: lang.hitch(this, function(newChildren){ + this.root.children = newChildren; + + // If the list of children or the order of children has changed... + if(oldChildren.length != newChildren.length || + array.some(oldChildren, function(item, idx){ return newChildren[idx] != item;})){ + this.onChildrenChange(this.root, newChildren); + } + }) + }); + }, + + onNewItem: function(/* dojo.data.Item */ item, /* Object */ parentInfo){ + // summary: + // Handler for when new items appear in the store. Developers should override this + // method to be more efficient based on their app/data. + // description: + // Note that the default implementation requeries the top level items every time + // a new item is created, since any new item could be a top level item (even in + // addition to being a child of another item, since items can have multiple parents). + // + // If developers can detect which items are possible top level items (based on the item and the + // parentInfo parameters), they should override this method to only call _requeryTop() for top + // level items. Often all top level items have parentInfo==null, but + // that will depend on which store you use and what your data is like. + // tags: + // extension + this._requeryTop(); + + this.inherited(arguments); + }, + + onDeleteItem: function(/*Object*/ item){ + // summary: + // Handler for delete notifications from underlying store + + // check if this was a child of root, and if so send notification that root's children + // have changed + if(array.indexOf(this.root.children, item) != -1){ + this._requeryTop(); + } + + this.inherited(arguments); + }, + + onSetItem: function(/* item */ item, + /* attribute-name-string */ attribute, + /* object | array */ oldValue, + /* object | array */ newValue){ + // summary: + // Updates the tree view according to changes to an item in the data store. + // Developers should override this method to be more efficient based on their app/data. + // description: + // Handles updates to an item's children by calling onChildrenChange(), and + // other updates to an item by calling onChange(). + // + // Also, any change to any item re-executes the query for the tree's top-level items, + // since this modified item may have started/stopped matching the query for top level items. + // + // If possible, developers should override this function to only call _requeryTop() when + // the change to the item has caused it to stop/start being a top level item in the tree. + // tags: + // extension + + this._requeryTop(); + this.inherited(arguments); + } + +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dijit/tree/TreeStoreModel.js b/js/dojo-release-1.7.2-src/dijit/tree/TreeStoreModel.js new file mode 100644 index 0000000..ca08cf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tree/TreeStoreModel.js @@ -0,0 +1,383 @@ +define([ + "dojo/_base/array", // array.filter array.forEach array.indexOf array.some + "dojo/aspect", // aspect.after + "dojo/_base/declare", // declare + "dojo/_base/json", // json.stringify + "dojo/_base/lang" // lang.hitch +], function(array, aspect, declare, json, lang){ + + // module: + // dijit/tree/TreeStoreModel + // summary: + // Implements dijit.Tree.model connecting to a dojo.data store with a single + // root item. + + return declare("dijit.tree.TreeStoreModel", null, { + // summary: + // Implements dijit.Tree.model connecting to a dojo.data store with a single + // root item. Any methods passed into the constructor will override + // the ones defined here. + + // store: dojo.data.Store + // Underlying store + store: null, + + // childrenAttrs: String[] + // One or more attribute names (attributes in the dojo.data item) that specify that item's children + childrenAttrs: ["children"], + + // newItemIdAttr: String + // Name of attribute in the Object passed to newItem() that specifies the id. + // + // If newItemIdAttr is set then it's used when newItem() is called to see if an + // item with the same id already exists, and if so just links to the old item + // (so that the old item ends up with two parents). + // + // Setting this to null or "" will make every drop create a new item. + newItemIdAttr: "id", + + // labelAttr: String + // If specified, get label for tree node from this attribute, rather + // than by calling store.getLabel() + labelAttr: "", + + // root: [readonly] dojo.data.Item + // Pointer to the root item (read only, not a parameter) + root: null, + + // query: anything + // Specifies datastore query to return the root item for the tree. + // Must only return a single item. Alternately can just pass in pointer + // to root item. + // example: + // | {id:'ROOT'} + query: null, + + // deferItemLoadingUntilExpand: Boolean + // Setting this to true will cause the TreeStoreModel to defer calling loadItem on nodes + // until they are expanded. This allows for lazying loading where only one + // loadItem (and generally one network call, consequently) per expansion + // (rather than one for each child). + // This relies on partial loading of the children items; each children item of a + // fully loaded item should contain the label and info about having children. + deferItemLoadingUntilExpand: false, + + constructor: function(/* Object */ args){ + // summary: + // Passed the arguments listed above (store, etc) + // tags: + // private + + lang.mixin(this, args); + + this.connects = []; + + var store = this.store; + if(!store.getFeatures()['dojo.data.api.Identity']){ + throw new Error("dijit.Tree: store must support dojo.data.Identity"); + } + + // if the store supports Notification, subscribe to the notification events + if(store.getFeatures()['dojo.data.api.Notification']){ + this.connects = this.connects.concat([ + aspect.after(store, "onNew", lang.hitch(this, "onNewItem"), true), + aspect.after(store, "onDelete", lang.hitch(this, "onDeleteItem"), true), + aspect.after(store, "onSet", lang.hitch(this, "onSetItem"), true) + ]); + } + }, + + destroy: function(){ + var h; + while(h = this.connects.pop()){ h.remove(); } + // TODO: should cancel any in-progress processing of getRoot(), getChildren() + }, + + // ======================================================================= + // Methods for traversing hierarchy + + getRoot: function(onItem, onError){ + // summary: + // Calls onItem with the root item for the tree, possibly a fabricated item. + // Calls onError on error. + if(this.root){ + onItem(this.root); + }else{ + this.store.fetch({ + query: this.query, + onComplete: lang.hitch(this, function(items){ + if(items.length != 1){ + throw new Error(this.declaredClass + ": query " + json.stringify(this.query) + " returned " + items.length + + " items, but must return exactly one item"); + } + this.root = items[0]; + onItem(this.root); + }), + onError: onError + }); + } + }, + + mayHaveChildren: function(/*dojo.data.Item*/ item){ + // summary: + // Tells if an item has or may have children. Implementing logic here + // avoids showing +/- expando icon for nodes that we know don't have children. + // (For efficiency reasons we may not want to check if an element actually + // has children until user clicks the expando node) + return array.some(this.childrenAttrs, function(attr){ + return this.store.hasAttribute(item, attr); + }, this); + }, + + getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ onComplete, /*function*/ onError){ + // summary: + // Calls onComplete() with array of child items of given parent item, all loaded. + + var store = this.store; + if(!store.isItemLoaded(parentItem)){ + // The parent is not loaded yet, we must be in deferItemLoadingUntilExpand + // mode, so we will load it and just return the children (without loading each + // child item) + var getChildren = lang.hitch(this, arguments.callee); + store.loadItem({ + item: parentItem, + onItem: function(parentItem){ + getChildren(parentItem, onComplete, onError); + }, + onError: onError + }); + return; + } + // get children of specified item + var childItems = []; + for(var i=0; i + // (id, DomNode) map for every TreeNode that's currently selected. + // The DOMNode is the TreeNode.rowNode. + selection: {}, + =====*/ + + constructor: function(){ + // summary: + // Initialization + // tags: + // private + + this.selection={}; + this.anchor = null; + + this.tree.domNode.setAttribute("aria-multiselect", !this.singular); + + this.events.push( + on(this.tree.domNode, touch.press, lang.hitch(this,"onMouseDown")), + on(this.tree.domNode, touch.release, lang.hitch(this,"onMouseUp")), + on(this.tree.domNode, touch.move, lang.hitch(this,"onMouseMove")) + ); + }, + + // singular: Boolean + // Allows selection of only one element, if true. + // Tree hasn't been tested in singular=true mode, unclear if it works. + singular: false, + + // methods + getSelectedTreeNodes: function(){ + // summary: + // Returns a list of selected node(s). + // Used by dndSource on the start of a drag. + // tags: + // protected + var nodes=[], sel = this.selection; + for(var i in sel){ + nodes.push(sel[i]); + } + return nodes; + }, + + selectNone: function(){ + // summary: + // Unselects all items + // tags: + // private + + this.setSelection([]); + return this; // self + }, + + destroy: function(){ + // summary: + // Prepares the object to be garbage-collected + this.inherited(arguments); + this.selection = this.anchor = null; + }, + addTreeNode: function(/*dijit._TreeNode*/node, /*Boolean?*/isAnchor){ + // summary: + // add node to current selection + // node: Node + // node to add + // isAnchor: Boolean + // Whether the node should become anchor. + + this.setSelection(this.getSelectedTreeNodes().concat( [node] )); + if(isAnchor){ this.anchor = node; } + return node; + }, + removeTreeNode: function(/*dijit._TreeNode*/node){ + // summary: + // remove node from current selection + // node: Node + // node to remove + this.setSelection(this._setDifference(this.getSelectedTreeNodes(), [node])); + return node; + }, + isTreeNodeSelected: function(/*dijit._TreeNode*/node){ + // summary: + // return true if node is currently selected + // node: Node + // the node to check whether it's in the current selection + + return node.id && !!this.selection[node.id]; + }, + setSelection: function(/*dijit._treeNode[]*/ newSelection){ + // summary: + // set the list of selected nodes to be exactly newSelection. All changes to the + // selection should be passed through this function, which ensures that derived + // attributes are kept up to date. Anchor will be deleted if it has been removed + // from the selection, but no new anchor will be added by this function. + // newSelection: Node[] + // list of tree nodes to make selected + var oldSelection = this.getSelectedTreeNodes(); + array.forEach(this._setDifference(oldSelection, newSelection), lang.hitch(this, function(node){ + node.setSelected(false); + if(this.anchor == node){ + delete this.anchor; + } + delete this.selection[node.id]; + })); + array.forEach(this._setDifference(newSelection, oldSelection), lang.hitch(this, function(node){ + node.setSelected(true); + this.selection[node.id] = node; + })); + this._updateSelectionProperties(); + }, + _setDifference: function(xs,ys){ + // summary: + // Returns a copy of xs which lacks any objects + // occurring in ys. Checks for membership by + // modifying and then reading the object, so it will + // not properly handle sets of numbers or strings. + + array.forEach(ys, function(y){ y.__exclude__ = true; }); + var ret = array.filter(xs, function(x){ return !x.__exclude__; }); + + // clean up after ourselves. + array.forEach(ys, function(y){ delete y['__exclude__'] }); + return ret; + }, + _updateSelectionProperties: function(){ + // summary: + // Update the following tree properties from the current selection: + // path[s], selectedItem[s], selectedNode[s] + + var selected = this.getSelectedTreeNodes(); + var paths = [], nodes = []; + array.forEach(selected, function(node){ + nodes.push(node); + paths.push(node.getTreePath()); + }); + var items = array.map(nodes,function(node){ return node.item; }); + this.tree._set("paths", paths); + this.tree._set("path", paths[0] || []); + this.tree._set("selectedNodes", nodes); + this.tree._set("selectedNode", nodes[0] || null); + this.tree._set("selectedItems", items); + this.tree._set("selectedItem", items[0] || null); + }, + // mouse events + onMouseDown: function(e){ + // summary: + // Event processor for onmousedown/ontouchstart + // e: Event + // onmousedown/ontouchstart event + // tags: + // protected + + // ignore click on expando node + if(!this.current || this.tree.isExpandoNode(e.target, this.current)){ return; } + + if(!mouse.isLeft(e)){ return; } // ignore right-click + + e.preventDefault(); + + var treeNode = this.current, + copy = connect.isCopyKey(e), id = treeNode.id; + + // if shift key is not pressed, and the node is already in the selection, + // delay deselection until onmouseup so in the case of DND, deselection + // will be canceled by onmousemove. + if(!this.singular && !e.shiftKey && this.selection[id]){ + this._doDeselect = true; + return; + }else{ + this._doDeselect = false; + } + this.userSelect(treeNode, copy, e.shiftKey); + }, + + onMouseUp: function(e){ + // summary: + // Event processor for onmouseup/ontouchend + // e: Event + // onmouseup/ontouchend event + // tags: + // protected + + // _doDeselect is the flag to indicate that the user wants to either ctrl+click on + // a already selected item (to deselect the item), or click on a not-yet selected item + // (which should remove all current selection, and add the clicked item). This can not + // be done in onMouseDown, because the user may start a drag after mousedown. By moving + // the deselection logic here, the user can drags an already selected item. + if(!this._doDeselect){ return; } + this._doDeselect = false; + this.userSelect(this.current, connect.isCopyKey(e), e.shiftKey); + }, + onMouseMove: function(/*===== e =====*/){ + // summary: + // event processor for onmousemove/ontouchmove + // e: Event + // onmousemove/ontouchmove event + this._doDeselect = false; + }, + + _compareNodes: function(n1, n2){ + if(n1 === n2){ + return 0; + } + + if('sourceIndex' in document.documentElement){ //IE + //TODO: does not yet work if n1 and/or n2 is a text node + return n1.sourceIndex - n2.sourceIndex; + }else if('compareDocumentPosition' in document.documentElement){ //FF, Opera + return n1.compareDocumentPosition(n2) & 2 ? 1: -1; + }else if(document.createRange){ //Webkit + var r1 = doc.createRange(); + r1.setStartBefore(n1); + + var r2 = doc.createRange(); + r2.setStartBefore(n2); + + return r1.compareBoundaryPoints(r1.END_TO_END, r2); + }else{ + throw Error("dijit.tree._compareNodes don't know how to compare two different nodes in this browser"); + } + }, + + userSelect: function(node, multi, range){ + // summary: + // Add or remove the given node from selection, responding + // to a user action such as a click or keypress. + // multi: Boolean + // Indicates whether this is meant to be a multi-select action (e.g. ctrl-click) + // range: Boolean + // Indicates whether this is meant to be a ranged action (e.g. shift-click) + // tags: + // protected + + if(this.singular){ + if(this.anchor == node && multi){ + this.selectNone(); + }else{ + this.setSelection([node]); + this.anchor = node; + } + }else{ + if(range && this.anchor){ + var cr = this._compareNodes(this.anchor.rowNode, node.rowNode), + begin, end, anchor = this.anchor; + + if(cr < 0){ //current is after anchor + begin = anchor; + end = node; + }else{ //current is before anchor + begin = node; + end = anchor; + } + var nodes = []; + //add everything betweeen begin and end inclusively + while(begin != end){ + nodes.push(begin); + begin = this.tree._getNextNode(begin); + } + nodes.push(end); + + this.setSelection(nodes); + }else{ + if( this.selection[ node.id ] && multi ){ + this.removeTreeNode( node ); + }else if(multi){ + this.addTreeNode(node, true); + }else{ + this.setSelection([node]); + this.anchor = node; + } + } + } + }, + + getItem: function(/*String*/ key){ + // summary: + // Returns the dojo.dnd.Item (representing a dragged node) by it's key (id). + // Called by dojo.dnd.Source.checkAcceptance(). + // tags: + // protected + + var widget = this.selection[key]; + return { + data: widget, + type: ["treeNode"] + }; // dojo.dnd.Item + }, + + forInSelectedItems: function(/*Function*/ f, /*Object?*/ o){ + // summary: + // Iterates over selected items; + // see `dojo.dnd.Container.forInItems()` for details + o = o || win.global; + for(var id in this.selection){ + // console.log("selected item id: " + id); + f.call(o, this.getItem(id), id, this); + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dijit/tree/dndSource.js b/js/dojo-release-1.7.2-src/dijit/tree/dndSource.js new file mode 100644 index 0000000..2e10e2e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tree/dndSource.js @@ -0,0 +1,564 @@ +define([ + "dojo/_base/array", // array.forEach array.indexOf array.map + "dojo/_base/connect", // isCopyKey + "dojo/_base/declare", // declare + "dojo/dom-class", // domClass.add + "dojo/dom-geometry", // domGeometry.position + "dojo/_base/lang", // lang.mixin lang.hitch + "dojo/on", // subscribe + "dojo/touch", + "dojo/topic", + "dojo/dnd/Manager", // DNDManager.manager + "./_dndSelector" +], function(array, connect, declare, domClass, domGeometry, lang, on, touch, topic, DNDManager, _dndSelector){ + +// module: +// dijit/tree/dndSource +// summary: +// Handles drag and drop operations (as a source or a target) for `dijit.Tree` + +/*===== +dijit.tree.__SourceArgs = function(){ + // summary: + // A dict of parameters for Tree source configuration. + // isSource: Boolean? + // Can be used as a DnD source. Defaults to true. + // accept: String[] + // List of accepted types (text strings) for a target; defaults to + // ["text", "treeNode"] + // copyOnly: Boolean? + // Copy items, if true, use a state of Ctrl key otherwise, + // dragThreshold: Number + // The move delay in pixels before detecting a drag; 0 by default + // betweenThreshold: Integer + // Distance from upper/lower edge of node to allow drop to reorder nodes + this.isSource = isSource; + this.accept = accept; + this.autoSync = autoSync; + this.copyOnly = copyOnly; + this.dragThreshold = dragThreshold; + this.betweenThreshold = betweenThreshold; +} +=====*/ + +return declare("dijit.tree.dndSource", _dndSelector, { + // summary: + // Handles drag and drop operations (as a source or a target) for `dijit.Tree` + + // isSource: [private] Boolean + // Can be used as a DnD source. + isSource: true, + + // accept: String[] + // List of accepted types (text strings) for the Tree; defaults to + // ["text"] + accept: ["text", "treeNode"], + + // copyOnly: [private] Boolean + // Copy items, if true, use a state of Ctrl key otherwise + copyOnly: false, + + // dragThreshold: Number + // The move delay in pixels before detecting a drag; 5 by default + dragThreshold: 5, + + // betweenThreshold: Integer + // Distance from upper/lower edge of node to allow drop to reorder nodes + betweenThreshold: 0, + + constructor: function(/*dijit.Tree*/ tree, /*dijit.tree.__SourceArgs*/ params){ + // summary: + // a constructor of the Tree DnD Source + // tags: + // private + if(!params){ params = {}; } + lang.mixin(this, params); + this.isSource = typeof params.isSource == "undefined" ? true : params.isSource; + var type = params.accept instanceof Array ? params.accept : ["text", "treeNode"]; + this.accept = null; + if(type.length){ + this.accept = {}; + for(var i = 0; i < type.length; ++i){ + this.accept[type[i]] = 1; + } + } + + // class-specific variables + this.isDragging = false; + this.mouseDown = false; + this.targetAnchor = null; // DOMNode corresponding to the currently moused over TreeNode + this.targetBox = null; // coordinates of this.targetAnchor + this.dropPosition = ""; // whether mouse is over/after/before this.targetAnchor + this._lastX = 0; + this._lastY = 0; + + // states + this.sourceState = ""; + if(this.isSource){ + domClass.add(this.node, "dojoDndSource"); + } + this.targetState = ""; + if(this.accept){ + domClass.add(this.node, "dojoDndTarget"); + } + + // set up events + this.topics = [ + topic.subscribe("/dnd/source/over", lang.hitch(this, "onDndSourceOver")), + topic.subscribe("/dnd/start", lang.hitch(this, "onDndStart")), + topic.subscribe("/dnd/drop", lang.hitch(this, "onDndDrop")), + topic.subscribe("/dnd/cancel", lang.hitch(this, "onDndCancel")) + ]; + }, + + // methods + checkAcceptance: function(/*===== source, nodes =====*/){ + // summary: + // Checks if the target can accept nodes from this source + // source: dijit.tree.dndSource + // The source which provides items + // nodes: DOMNode[] + // Array of DOM nodes corresponding to nodes being dropped, dijitTreeRow nodes if + // source is a dijit.Tree. + // tags: + // extension + return true; // Boolean + }, + + copyState: function(keyPressed){ + // summary: + // Returns true, if we need to copy items, false to move. + // It is separated to be overwritten dynamically, if needed. + // keyPressed: Boolean + // The "copy" control key was pressed + // tags: + // protected + return this.copyOnly || keyPressed; // Boolean + }, + destroy: function(){ + // summary: + // Prepares the object to be garbage-collected. + this.inherited(arguments); + var h; + while(h = this.topics.pop()){ h.remove(); } + this.targetAnchor = null; + }, + + _onDragMouse: function(e){ + // summary: + // Helper method for processing onmousemove/onmouseover events while drag is in progress. + // Keeps track of current drop target. + + var m = DNDManager.manager(), + oldTarget = this.targetAnchor, // the TreeNode corresponding to TreeNode mouse was previously over + newTarget = this.current, // TreeNode corresponding to TreeNode mouse is currently over + oldDropPosition = this.dropPosition; // the previous drop position (over/before/after) + + // calculate if user is indicating to drop the dragged node before, after, or over + // (i.e., to become a child of) the target node + var newDropPosition = "Over"; + if(newTarget && this.betweenThreshold > 0){ + // If mouse is over a new TreeNode, then get new TreeNode's position and size + if(!this.targetBox || oldTarget != newTarget){ + this.targetBox = domGeometry.position(newTarget.rowNode, true); + } + if((e.pageY - this.targetBox.y) <= this.betweenThreshold){ + newDropPosition = "Before"; + }else if((e.pageY - this.targetBox.y) >= (this.targetBox.h - this.betweenThreshold)){ + newDropPosition = "After"; + } + } + + if(newTarget != oldTarget || newDropPosition != oldDropPosition){ + if(oldTarget){ + this._removeItemClass(oldTarget.rowNode, oldDropPosition); + } + if(newTarget){ + this._addItemClass(newTarget.rowNode, newDropPosition); + } + + // Check if it's ok to drop the dragged node on/before/after the target node. + if(!newTarget){ + m.canDrop(false); + }else if(newTarget == this.tree.rootNode && newDropPosition != "Over"){ + // Can't drop before or after tree's root node; the dropped node would just disappear (at least visually) + m.canDrop(false); + }else{ + // Guard against dropping onto yourself (TODO: guard against dropping onto your descendant, #7140) + var model = this.tree.model, + sameId = false; + if(m.source == this){ + for(var dragId in this.selection){ + var dragNode = this.selection[dragId]; + if(dragNode.item === newTarget.item){ + sameId = true; + break; + } + } + } + if(sameId){ + m.canDrop(false); + }else if(this.checkItemAcceptance(newTarget.rowNode, m.source, newDropPosition.toLowerCase()) + && !this._isParentChildDrop(m.source, newTarget.rowNode)){ + m.canDrop(true); + }else{ + m.canDrop(false); + } + } + + this.targetAnchor = newTarget; + this.dropPosition = newDropPosition; + } + }, + + onMouseMove: function(e){ + // summary: + // Called for any onmousemove/ontouchmove events over the Tree + // e: Event + // onmousemouse/ontouchmove event + // tags: + // private + if(this.isDragging && this.targetState == "Disabled"){ return; } + this.inherited(arguments); + var m = DNDManager.manager(); + if(this.isDragging){ + this._onDragMouse(e); + }else{ + if(this.mouseDown && this.isSource && + (Math.abs(e.pageX-this._lastX)>=this.dragThreshold || Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){ + var nodes = this.getSelectedTreeNodes(); + if(nodes.length){ + if(nodes.length > 1){ + //filter out all selected items which has one of their ancestor selected as well + var seen = this.selection, i = 0, r = [], n, p; + nextitem: while((n = nodes[i++])){ + for(p = n.getParent(); p && p !== this.tree; p = p.getParent()){ + if(seen[p.id]){ //parent is already selected, skip this node + continue nextitem; + } + } + //this node does not have any ancestors selected, add it + r.push(n); + } + nodes = r; + } + nodes = array.map(nodes, function(n){return n.domNode}); + m.startDrag(this, nodes, this.copyState(connect.isCopyKey(e))); + } + } + } + }, + + onMouseDown: function(e){ + // summary: + // Event processor for onmousedown/ontouchstart + // e: Event + // onmousedown/ontouchend event + // tags: + // private + this.mouseDown = true; + this.mouseButton = e.button; + this._lastX = e.pageX; + this._lastY = e.pageY; + this.inherited(arguments); + }, + + onMouseUp: function(e){ + // summary: + // Event processor for onmouseup/ontouchend + // e: Event + // onmouseup/ontouchend event + // tags: + // private + if(this.mouseDown){ + this.mouseDown = false; + this.inherited(arguments); + } + }, + + onMouseOut: function(){ + // summary: + // Event processor for when mouse is moved away from a TreeNode + // tags: + // private + this.inherited(arguments); + this._unmarkTargetAnchor(); + }, + + checkItemAcceptance: function(/*===== target, source, position =====*/){ + // summary: + // Stub function to be overridden if one wants to check for the ability to drop at the node/item level + // description: + // In the base case, this is called to check if target can become a child of source. + // When betweenThreshold is set, position="before" or "after" means that we + // are asking if the source node can be dropped before/after the target node. + // target: DOMNode + // The dijitTreeRoot DOM node inside of the TreeNode that we are dropping on to + // Use dijit.getEnclosingWidget(target) to get the TreeNode. + // source: dijit.tree.dndSource + // The (set of) nodes we are dropping + // position: String + // "over", "before", or "after" + // tags: + // extension + return true; + }, + + // topic event processors + onDndSourceOver: function(source){ + // summary: + // Topic event processor for /dnd/source/over, called when detected a current source. + // source: Object + // The dijit.tree.dndSource / dojo.dnd.Source which has the mouse over it + // tags: + // private + if(this != source){ + this.mouseDown = false; + this._unmarkTargetAnchor(); + }else if(this.isDragging){ + var m = DNDManager.manager(); + m.canDrop(false); + } + }, + onDndStart: function(source, nodes, copy){ + // summary: + // Topic event processor for /dnd/start, called to initiate the DnD operation + // source: Object + // The dijit.tree.dndSource / dojo.dnd.Source which is providing the items + // nodes: DomNode[] + // The list of transferred items, dndTreeNode nodes if dragging from a Tree + // copy: Boolean + // Copy items, if true, move items otherwise + // tags: + // private + + if(this.isSource){ + this._changeState("Source", this == source ? (copy ? "Copied" : "Moved") : ""); + } + var accepted = this.checkAcceptance(source, nodes); + + this._changeState("Target", accepted ? "" : "Disabled"); + + if(this == source){ + DNDManager.manager().overSource(this); + } + + this.isDragging = true; + }, + + itemCreator: function(nodes /*===== , target, source =====*/){ + // summary: + // Returns objects passed to `Tree.model.newItem()` based on DnD nodes + // dropped onto the tree. Developer must override this method to enable + // dropping from external sources onto this Tree, unless the Tree.model's items + // happen to look like {id: 123, name: "Apple" } with no other attributes. + // description: + // For each node in nodes[], which came from source, create a hash of name/value + // pairs to be passed to Tree.model.newItem(). Returns array of those hashes. + // nodes: DomNode[] + // target: DomNode + // source: dojo.dnd.Source + // returns: Object[] + // Array of name/value hashes for each new item to be added to the Tree, like: + // | [ + // | { id: 123, label: "apple", foo: "bar" }, + // | { id: 456, label: "pear", zaz: "bam" } + // | ] + // tags: + // extension + + // TODO: for 2.0 refactor so itemCreator() is called once per drag node, and + // make signature itemCreator(sourceItem, node, target) (or similar). + + return array.map(nodes, function(node){ + return { + "id": node.id, + "name": node.textContent || node.innerText || "" + }; + }); // Object[] + }, + + onDndDrop: function(source, nodes, copy){ + // summary: + // Topic event processor for /dnd/drop, called to finish the DnD operation. + // description: + // Updates data store items according to where node was dragged from and dropped + // to. The tree will then respond to those data store updates and redraw itself. + // source: Object + // The dijit.tree.dndSource / dojo.dnd.Source which is providing the items + // nodes: DomNode[] + // The list of transferred items, dndTreeNode nodes if dragging from a Tree + // copy: Boolean + // Copy items, if true, move items otherwise + // tags: + // protected + if(this.containerState == "Over"){ + var tree = this.tree, + model = tree.model, + target = this.targetAnchor; + + this.isDragging = false; + + // Compute the new parent item + var newParentItem; + var insertIndex; + newParentItem = (target && target.item) || tree.item; + if(this.dropPosition == "Before" || this.dropPosition == "After"){ + // TODO: if there is no parent item then disallow the drop. + // Actually this should be checked during onMouseMove too, to make the drag icon red. + newParentItem = (target.getParent() && target.getParent().item) || tree.item; + // Compute the insert index for reordering + insertIndex = target.getIndexInParent(); + if(this.dropPosition == "After"){ + insertIndex = target.getIndexInParent() + 1; + } + }else{ + newParentItem = (target && target.item) || tree.item; + } + + // If necessary, use this variable to hold array of hashes to pass to model.newItem() + // (one entry in the array for each dragged node). + var newItemsParams; + + array.forEach(nodes, function(node, idx){ + // dojo.dnd.Item representing the thing being dropped. + // Don't confuse the use of item here (meaning a DnD item) with the + // uses below where item means dojo.data item. + var sourceItem = source.getItem(node.id); + + // Information that's available if the source is another Tree + // (possibly but not necessarily this tree, possibly but not + // necessarily the same model as this Tree) + if(array.indexOf(sourceItem.type, "treeNode") != -1){ + var childTreeNode = sourceItem.data, + childItem = childTreeNode.item, + oldParentItem = childTreeNode.getParent().item; + } + + if(source == this){ + // This is a node from my own tree, and we are moving it, not copying. + // Remove item from old parent's children attribute. + // TODO: dijit.tree.dndSelector should implement deleteSelectedNodes() + // and this code should go there. + + if(typeof insertIndex == "number"){ + if(newParentItem == oldParentItem && childTreeNode.getIndexInParent() < insertIndex){ + insertIndex -= 1; + } + } + model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex); + }else if(model.isItem(childItem)){ + // Item from same model + // (maybe we should only do this branch if the source is a tree?) + model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex); + }else{ + // Get the hash to pass to model.newItem(). A single call to + // itemCreator() returns an array of hashes, one for each drag source node. + if(!newItemsParams){ + newItemsParams = this.itemCreator(nodes, target.rowNode, source); + } + + // Create new item in the tree, based on the drag source. + model.newItem(newItemsParams[idx], newParentItem, insertIndex); + } + }, this); + + // Expand the target node (if it's currently collapsed) so the user can see + // where their node was dropped. In particular since that node is still selected. + this.tree._expandNode(target); + } + this.onDndCancel(); + }, + + onDndCancel: function(){ + // summary: + // Topic event processor for /dnd/cancel, called to cancel the DnD operation + // tags: + // private + this._unmarkTargetAnchor(); + this.isDragging = false; + this.mouseDown = false; + delete this.mouseButton; + this._changeState("Source", ""); + this._changeState("Target", ""); + }, + + // When focus moves in/out of the entire Tree + onOverEvent: function(){ + // summary: + // This method is called when mouse is moved over our container (like onmouseenter) + // tags: + // private + this.inherited(arguments); + DNDManager.manager().overSource(this); + }, + onOutEvent: function(){ + // summary: + // This method is called when mouse is moved out of our container (like onmouseleave) + // tags: + // private + this._unmarkTargetAnchor(); + var m = DNDManager.manager(); + if(this.isDragging){ + m.canDrop(false); + } + m.outSource(this); + + this.inherited(arguments); + }, + + _isParentChildDrop: function(source, targetRow){ + // summary: + // Checks whether the dragged items are parent rows in the tree which are being + // dragged into their own children. + // + // source: + // The DragSource object. + // + // targetRow: + // The tree row onto which the dragged nodes are being dropped. + // + // tags: + // private + + // If the dragged object is not coming from the tree this widget belongs to, + // it cannot be invalid. + if(!source.tree || source.tree != this.tree){ + return false; + } + + + var root = source.tree.domNode; + var ids = source.selection; + + var node = targetRow.parentNode; + + // Iterate up the DOM hierarchy from the target drop row, + // checking of any of the dragged nodes have the same ID. + while(node != root && !ids[node.id]){ + node = node.parentNode; + } + + return node.id && ids[node.id]; + }, + + _unmarkTargetAnchor: function(){ + // summary: + // Removes hover class of the current target anchor + // tags: + // private + if(!this.targetAnchor){ return; } + this._removeItemClass(this.targetAnchor.rowNode, this.dropPosition); + this.targetAnchor = null; + this.targetBox = null; + this.dropPosition = null; + }, + + _markDndStatus: function(copy){ + // summary: + // Changes source's state based on "copy" status + this._changeState("Source", copy ? "Copied" : "Moved"); + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dijit/tree/model.js b/js/dojo-release-1.7.2-src/dijit/tree/model.js new file mode 100644 index 0000000..9345825 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/tree/model.js @@ -0,0 +1,142 @@ + +/*===== +declare( + "dijit.tree.model", + null, +{ + // summary: + // Contract for any data provider object for the tree. + // description: + // Tree passes in values to the constructor to specify the callbacks. + // "item" is typically a dojo.data.Item but it's just a black box so + // it could be anything. + // + // This (like `dojo.data.api.Read`) is just documentation, and not meant to be used. + + destroy: function(){ + // summary: + // Destroys this object, releasing connections to the store + // tags: + // extension + }, + + // ======================================================================= + // Methods for traversing hierarchy + + getRoot: function(onItem){ + // summary: + // Calls onItem with the root item for the tree, possibly a fabricated item. + // Throws exception on error. + // tags: + // extension + }, + + mayHaveChildren: function(item){ + // summary: + // Tells if an item has or may have children. Implementing logic here + // avoids showing +/- expando icon for nodes that we know don't have children. + // (For efficiency reasons we may not want to check if an element actually + // has children until user clicks the expando node) + // item: dojo.data.Item + // tags: + // extension + }, + + getChildren: function(parentItem, onComplete){ + // summary: + // Calls onComplete() with array of child items of given parent item, all loaded. + // Throws exception on error. + // parentItem: dojo.data.Item + // onComplete: function(items) + // tags: + // extension + }, + + // ======================================================================= + // Inspecting items + + isItem: function(something){ + // summary: + // Returns true if *something* is an item and came from this model instance. + // Returns false if *something* is a literal, an item from another model instance, + // or is any object other than an item. + // tags: + // extension + }, + + fetchItemByIdentity: function(keywordArgs){ + // summary: + // Given the identity of an item, this method returns the item that has + // that identity through the onItem callback. Conforming implementations + // should return null if there is no item with the given identity. + // Implementations of fetchItemByIdentity() may sometimes return an item + // from a local cache and may sometimes fetch an item from a remote server. + // tags: + // extension + }, + + getIdentity: function(item){ + // summary: + // Returns identity for an item + // tags: + // extension + }, + + getLabel: function(item){ + // summary: + // Get the label for an item + // tags: + // extension + }, + + // ======================================================================= + // Write interface + + newItem: function(args, parent, insertIndex){ + // summary: + // Creates a new item. See `dojo.data.api.Write` for details on args. + // args: dojo.dnd.Item + // parent: Item + // insertIndex: int? + // tags: + // extension + }, + + pasteItem: function(childItem, oldParentItem, newParentItem, bCopy){ + // summary: + // Move or copy an item from one parent item to another. + // Used in drag & drop. + // If oldParentItem is specified and bCopy is false, childItem is removed from oldParentItem. + // If newParentItem is specified, childItem is attached to newParentItem. + // childItem: Item + // oldParentItem: Item + // newParentItem: Item + // bCopy: Boolean + // tags: + // extension + }, + + // ======================================================================= + // Callbacks + + onChange: function(item){ + // summary: + // Callback whenever an item has changed, so that Tree + // can update the label, icon, etc. Note that changes + // to an item's children or parent(s) will trigger an + // onChildrenChange() so you can ignore those changes here. + // item: dojo.data.Item + // tags: + // callback + }, + + onChildrenChange: function(parent, newChildrenList){ + // summary: + // Callback to do notifications about new, updated, or deleted items. + // parent: dojo.data.Item + // newChildrenList: dojo.data.Item[] + // tags: + // callback + } +}); +=====*/ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dijit/typematic.js b/js/dojo-release-1.7.2-src/dijit/typematic.js new file mode 100644 index 0000000..504ba26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dijit/typematic.js @@ -0,0 +1,206 @@ +define([ + "dojo/_base/array", // array.forEach + "dojo/_base/connect", // connect.connect + "dojo/_base/event", // event.stop + "dojo/_base/kernel", // kernel.deprecated + "dojo/_base/lang", // lang.mixin, lang.hitch + "dojo/on", + "dojo/_base/sniff", // has("ie") + "." // setting dijit.typematic global +], function(array, connect, event, kernel, lang, on, has, dijit){ + +// module: +// dijit/typematic +// summary: +// These functions are used to repetitively call a user specified callback +// method when a specific key or mouse click over a specific DOM node is +// held down for a specific amount of time. +// Only 1 such event is allowed to occur on the browser page at 1 time. + +var typematic = (dijit.typematic = { + // summary: + // These functions are used to repetitively call a user specified callback + // method when a specific key or mouse click over a specific DOM node is + // held down for a specific amount of time. + // Only 1 such event is allowed to occur on the browser page at 1 time. + + _fireEventAndReload: function(){ + this._timer = null; + this._callback(++this._count, this._node, this._evt); + + // Schedule next event, timer is at most minDelay (default 10ms) to avoid + // browser overload (particularly avoiding starving DOH robot so it never gets to send a mouseup) + this._currentTimeout = Math.max( + this._currentTimeout < 0 ? this._initialDelay : + (this._subsequentDelay > 1 ? this._subsequentDelay : Math.round(this._currentTimeout * this._subsequentDelay)), + this._minDelay); + this._timer = setTimeout(lang.hitch(this, "_fireEventAndReload"), this._currentTimeout); + }, + + trigger: function(/*Event*/ evt, /*Object*/ _this, /*DOMNode*/ node, /*Function*/ callback, /*Object*/ obj, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start a timed, repeating callback sequence. + // If already started, the function call is ignored. + // This method is not normally called by the user but can be + // when the normal listener code is insufficient. + // evt: + // key or mouse event object to pass to the user callback + // _this: + // pointer to the user's widget space. + // node: + // the DOM node object to pass the the callback function + // callback: + // function to call until the sequence is stopped called with 3 parameters: + // count: + // integer representing number of repeated calls (0..n) with -1 indicating the iteration has stopped + // node: + // the DOM node object passed in + // evt: + // key or mouse event object + // obj: + // user space object used to uniquely identify each typematic sequence + // subsequentDelay (optional): + // if > 1, the number of milliseconds until the 3->n events occur + // or else the fractional time multiplier for the next event's delay, default=0.9 + // initialDelay (optional): + // the number of milliseconds until the 2nd event occurs, default=500ms + // minDelay (optional): + // the maximum delay in milliseconds for event to fire, default=10ms + if(obj != this._obj){ + this.stop(); + this._initialDelay = initialDelay || 500; + this._subsequentDelay = subsequentDelay || 0.90; + this._minDelay = minDelay || 10; + this._obj = obj; + this._evt = evt; + this._node = node; + this._currentTimeout = -1; + this._count = -1; + this._callback = lang.hitch(_this, callback); + this._fireEventAndReload(); + this._evt = lang.mixin({faux: true}, evt); + } + }, + + stop: function(){ + // summary: + // Stop an ongoing timed, repeating callback sequence. + if(this._timer){ + clearTimeout(this._timer); + this._timer = null; + } + if(this._obj){ + this._callback(-1, this._node, this._evt); + this._obj = null; + } + }, + + addKeyListener: function(/*DOMNode*/ node, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start listening for a specific typematic key. + // See also the trigger method for other parameters. + // keyObject: + // an object defining the key to listen for: + // charOrCode: + // the printable character (string) or keyCode (number) to listen for. + // keyCode: + // (deprecated - use charOrCode) the keyCode (number) to listen for (implies charCode = 0). + // charCode: + // (deprecated - use charOrCode) the charCode (number) to listen for. + // ctrlKey: + // desired ctrl key state to initiate the callback sequence: + // - pressed (true) + // - released (false) + // - either (unspecified) + // altKey: + // same as ctrlKey but for the alt key + // shiftKey: + // same as ctrlKey but for the shift key + // returns: + // a connection handle + if(keyObject.keyCode){ + keyObject.charOrCode = keyObject.keyCode; + kernel.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0"); + }else if(keyObject.charCode){ + keyObject.charOrCode = String.fromCharCode(keyObject.charCode); + kernel.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.", "", "2.0"); + } + var handles = [ + on(node, connect._keypress, lang.hitch(this, function(evt){ + if(evt.charOrCode == keyObject.charOrCode && + (keyObject.ctrlKey === undefined || keyObject.ctrlKey == evt.ctrlKey) && + (keyObject.altKey === undefined || keyObject.altKey == evt.altKey) && + (keyObject.metaKey === undefined || keyObject.metaKey == (evt.metaKey || false)) && // IE doesn't even set metaKey + (keyObject.shiftKey === undefined || keyObject.shiftKey == evt.shiftKey)){ + event.stop(evt); + typematic.trigger(evt, _this, node, callback, keyObject, subsequentDelay, initialDelay, minDelay); + }else if(typematic._obj == keyObject){ + typematic.stop(); + } + })), + on(node, "keyup", lang.hitch(this, function(){ + if(typematic._obj == keyObject){ + typematic.stop(); + } + })) + ]; + return { remove: function(){ array.forEach(handles, function(h){ h.remove(); }); } }; + }, + + addMouseListener: function(/*DOMNode*/ node, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start listening for a typematic mouse click. + // See the trigger method for other parameters. + // returns: + // a connection handle + var handles = [ + on(node, "mousedown", lang.hitch(this, function(evt){ + event.stop(evt); + typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay); + })), + on(node, "mouseup", lang.hitch(this, function(evt){ + if(this._obj){ + event.stop(evt); + } + typematic.stop(); + })), + on(node, "mouseout", lang.hitch(this, function(evt){ + event.stop(evt); + typematic.stop(); + })), + on(node, "mousemove", lang.hitch(this, function(evt){ + evt.preventDefault(); + })), + on(node, "dblclick", lang.hitch(this, function(evt){ + event.stop(evt); + if(has("ie")){ + typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay); + setTimeout(lang.hitch(this, typematic.stop), 50); + } + })) + ]; + return { remove: function(){ array.forEach(handles, function(h){ h.remove(); }); } }; + }, + + addListener: function(/*Node*/ mouseNode, /*Node*/ keyNode, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start listening for a specific typematic key and mouseclick. + // This is a thin wrapper to addKeyListener and addMouseListener. + // See the addMouseListener and addKeyListener methods for other parameters. + // mouseNode: + // the DOM node object to listen on for mouse events. + // keyNode: + // the DOM node object to listen on for key events. + // returns: + // a connection handle + var handles = [ + this.addKeyListener(keyNode, keyObject, _this, callback, subsequentDelay, initialDelay, minDelay), + this.addMouseListener(mouseNode, _this, callback, subsequentDelay, initialDelay, minDelay) + ]; + return { remove: function(){ array.forEach(handles, function(h){ h.remove(); }); } }; + } +}); + +return typematic; + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/AdapterRegistry.js b/js/dojo-release-1.7.2-src/dojo/AdapterRegistry.js new file mode 100644 index 0000000..b82adee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/AdapterRegistry.js @@ -0,0 +1,113 @@ +define(["./_base/kernel", "./_base/lang"], function(dojo, lang) { + // module: + // dojo/AdapterRegistry + // summary: + // TODOC + +var AdapterRegistry = dojo.AdapterRegistry = function(/*Boolean?*/ returnWrappers){ + // summary: + // A registry to make contextual calling/searching easier. + // description: + // Objects of this class keep list of arrays in the form [name, check, + // wrap, directReturn] that are used to determine what the contextual + // result of a set of checked arguments is. All check/wrap functions + // in this registry should be of the same arity. + // example: + // | // create a new registry + // | var reg = new dojo.AdapterRegistry(); + // | reg.register("handleString", + // | dojo.isString, + // | function(str){ + // | // do something with the string here + // | } + // | ); + // | reg.register("handleArr", + // | dojo.isArray, + // | function(arr){ + // | // do something with the array here + // | } + // | ); + // | + // | // now we can pass reg.match() *either* an array or a string and + // | // the value we pass will get handled by the right function + // | reg.match("someValue"); // will call the first function + // | reg.match(["someValue"]); // will call the second + + this.pairs = []; + this.returnWrappers = returnWrappers || false; // Boolean +}; + +/*===== +// doc alias helpers: +AdapterRegistry = dojo.AdapterRegistry; +=====*/ + +lang.extend(AdapterRegistry, { + register: function(/*String*/ name, /*Function*/ check, /*Function*/ wrap, /*Boolean?*/ directReturn, /*Boolean?*/ override){ + // summary: + // register a check function to determine if the wrap function or + // object gets selected + // name: + // a way to identify this matcher. + // check: + // a function that arguments are passed to from the adapter's + // match() function. The check function should return true if the + // given arguments are appropriate for the wrap function. + // directReturn: + // If directReturn is true, the value passed in for wrap will be + // returned instead of being called. Alternately, the + // AdapterRegistry can be set globally to "return not call" using + // the returnWrappers property. Either way, this behavior allows + // the registry to act as a "search" function instead of a + // function interception library. + // override: + // If override is given and true, the check function will be given + // highest priority. Otherwise, it will be the lowest priority + // adapter. + this.pairs[((override) ? "unshift" : "push")]([name, check, wrap, directReturn]); + }, + + match: function(/* ... */){ + // summary: + // Find an adapter for the given arguments. If no suitable adapter + // is found, throws an exception. match() accepts any number of + // arguments, all of which are passed to all matching functions + // from the registered pairs. + for(var i = 0; i < this.pairs.length; i++){ + var pair = this.pairs[i]; + if(pair[1].apply(this, arguments)){ + if((pair[3])||(this.returnWrappers)){ + return pair[2]; + }else{ + return pair[2].apply(this, arguments); + } + } + } + throw new Error("No match found"); + }, + + unregister: function(name){ + // summary: + // Remove a named adapter from the registry + // name: String + // The name of the adapter. + // returns: Boolean + // Returns true if operation is successful. + // Returns false if operation fails. + + // FIXME: this is kind of a dumb way to handle this. On a large + // registry this will be slow-ish and we can use the name as a lookup + // should we choose to trade memory for speed. + for(var i = 0; i < this.pairs.length; i++){ + var pair = this.pairs[i]; + if(pair[0] == name){ + this.pairs.splice(i, 1); + return true; + } + } + return false; + } +}); + +return AdapterRegistry; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/DeferredList.js b/js/dojo-release-1.7.2-src/dojo/DeferredList.js new file mode 100644 index 0000000..5071dfc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/DeferredList.js @@ -0,0 +1,86 @@ +define(["./_base/kernel", "./_base/Deferred", "./_base/array"], function(dojo, Deferred, darray) { + // module: + // dojo/DeferredList + // summary: + // TODOC + + +dojo.DeferredList = function(/*Array*/ list, /*Boolean?*/ fireOnOneCallback, /*Boolean?*/ fireOnOneErrback, /*Boolean?*/ consumeErrors, /*Function?*/ canceller){ + // summary: + // Provides event handling for a group of Deferred objects. + // description: + // DeferredList takes an array of existing deferreds and returns a new deferred of its own + // this new deferred will typically have its callback fired when all of the deferreds in + // the given list have fired their own deferreds. The parameters `fireOnOneCallback` and + // fireOnOneErrback, will fire before all the deferreds as appropriate + // + // list: + // The list of deferreds to be synchronizied with this DeferredList + // fireOnOneCallback: + // Will cause the DeferredLists callback to be fired as soon as any + // of the deferreds in its list have been fired instead of waiting until + // the entire list has finished + // fireonOneErrback: + // Will cause the errback to fire upon any of the deferreds errback + // canceller: + // A deferred canceller function, see dojo.Deferred + var resultList = []; + Deferred.call(this); + var self = this; + if(list.length === 0 && !fireOnOneCallback){ + this.resolve([0, []]); + } + var finished = 0; + darray.forEach(list, function(item, i){ + item.then(function(result){ + if(fireOnOneCallback){ + self.resolve([i, result]); + }else{ + addResult(true, result); + } + },function(error){ + if(fireOnOneErrback){ + self.reject(error); + }else{ + addResult(false, error); + } + if(consumeErrors){ + return null; + } + throw error; + }); + function addResult(succeeded, result){ + resultList[i] = [succeeded, result]; + finished++; + if(finished === list.length){ + self.resolve(resultList); + } + + } + }); +}; +dojo.DeferredList.prototype = new Deferred(); + +dojo.DeferredList.prototype.gatherResults = function(deferredList){ + // summary: + // Gathers the results of the deferreds for packaging + // as the parameters to the Deferred Lists' callback + // deferredList: dojo.DeferredList + // The deferred list from which this function gathers results. + // returns: dojo.DeferredList + // The newly created deferred list which packs results as + // parameters to its callback. + + var d = new dojo.DeferredList(deferredList, false, true, false); + d.addCallback(function(results){ + var ret = []; + darray.forEach(results, function(result){ + ret.push(result[1]); + }); + return ret; + }); + return d; +}; + +return dojo.DeferredList; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/Evented.js b/js/dojo-release-1.7.2-src/dojo/Evented.js new file mode 100644 index 0000000..420dfca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/Evented.js @@ -0,0 +1,32 @@ +define(["./aspect", "./on"], function(aspect, on){ + // summary: + // The export of this module is a class that can be used as a mixin or base class, + // to add on() and emit() methods to a class + // for listening for events and emiting events: + // |define(["dojo/Evented"], function(Evented){ + // | var EventedWidget = dojo.declare([Evented, dijit._Widget], {...}); + // | widget = new EventedWidget(); + // | widget.on("open", function(event){ + // | ... do something with event + // | }); + // | + // | widget.emit("open", {name:"some event", ...}); + + "use strict"; + var after = aspect.after; + function Evented(){ + } + Evented.prototype = { + on: function(type, listener){ + return on.parse(this, type, listener, function(target, type){ + return after(target, 'on' + type, listener, true); + }); + }, + emit: function(type, event){ + var args = [this]; + args.push.apply(args, arguments); + return on.emit.apply(on, args); + } + }; + return Evented; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/LICENSE b/js/dojo-release-1.7.2-src/dojo/LICENSE new file mode 100644 index 0000000..aa6b39f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/LICENSE @@ -0,0 +1,195 @@ +Dojo is available under *either* the terms of the modified BSD license *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL or BSD licenses that Dojo is distributed under. + +The text of the AFL and BSD licenses is reproduced below. + +------------------------------------------------------------------------------- +The "New" BSD License: +********************** + +Copyright (c) 2005-2011, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. diff --git a/js/dojo-release-1.7.2-src/dojo/NodeList-data.js b/js/dojo-release-1.7.2-src/dojo/NodeList-data.js new file mode 100644 index 0000000..2df736d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/NodeList-data.js @@ -0,0 +1,187 @@ +define([ + "./_base/kernel", "./query", "./_base/lang", "./_base/array", "./dom-attr" +], function(dojo, query, lang, array, attr) { + // module: + // dojo/NodeList-data + // summary: + // TODOC + +var NodeList = query.NodeList; +/*===== +// doc alias helpers: +var NodeList = dojo.NodeList; + + dojo.NodeList.prototype.data = function(key, value){ + // summary: stash or get some arbitrary data on/from these nodes. + // + // description: + // Stash or get some arbirtrary data on/from these nodes. This private _data function is + // exposed publicly on `dojo.NodeList`, eg: as the result of a `dojo.query` call. + // DIFFERS from jQuery.data in that when used as a getter, the entire list is ALWAYS + // returned. EVEN WHEN THE LIST IS length == 1. + // + // A single-node version of this function is provided as `dojo._nodeData`, which follows + // the same signature, though expects a String ID or DomNode reference in the first + // position, before key/value arguments. + // + // node: String|DomNode + // The node to associate data with + // + // key: Object?|String? + // If an object, act as a setter and iterate over said object setting data items as defined. + // If a string, and `value` present, set the data for defined `key` to `value` + // If a string, and `value` absent, act as a getter, returning the data associated with said `key` + // + // value: Anything? + // The value to set for said `key`, provided `key` is a string (and not an object) + // + // example: + // Set a key `bar` to some data, then retrieve it. + // | dojo.query(".foo").data("bar", "touched"); + // | var touched = dojo.query(".foo").data("bar"); + // | if(touched[0] == "touched"){ alert('win'); } + // + // example: + // Get all the data items for a given node. + // | var list = dojo.query(".foo").data(); + // | var first = list[0]; + // + // example: + // Set the data to a complex hash. Overwrites existing keys with new value + // | dojo.query(".foo").data({ bar:"baz", foo:"bar" }); + // Then get some random key: + // | dojo.query(".foo").data("foo"); // returns [`bar`] + // + // returns: Object|Anything|Nothing + // When used as a setter via `dojo.NodeList`, a NodeList instance is returned + // for further chaning. When used as a getter via `dojo.NodeList` an ARRAY + // of items is returned. The items in the array correspond to the elements + // in the original list. This is true even when the list length is 1, eg: + // when looking up a node by ID (#foo) + }; + + dojo.NodeList.prototype.removeData = function(key){ + // summary: Remove the data associated with these nodes. + // key: String? + // If ommitted, clean all data for this node. + // If passed, remove the data item found at `key` + }; + +=====*/ + + var dataCache = {}, x = 0, dataattr = "data-dojo-dataid", + dopid = function(node){ + // summary: Return a uniqueish ID for the passed node reference + var pid = attr.get(node, dataattr); + if(!pid){ + pid = "pid" + (x++); + attr.set(node, dataattr, pid); + } + return pid; + } + ; + + //>>excludeStart("debugging", true); + // An alias to the private dataCache for NodeList-data. NEVER USE THIS! + // This private is only exposed for the benefit of unit testing, and is + // removed during the build process. + dojo._nodeDataCache = dataCache; + //>>excludeEnd("debugging"); + + var dodata = dojo._nodeData = function(node, key, value){ + // summary: Private helper for dojo.NodeList.data for single node data access. Refer to NodeList.data + // documentation for more information. + // + // node: String|DomNode + // The node to associate data with + // + // key: Object?|String? + // If an object, act as a setter and iterate over said object setting data items as defined. + // If a string, and `value` present, set the data for defined `key` to `value` + // If a string, and `value` absent, act as a getter, returning the data associated with said `key` + // + // value: Anything? + // The value to set for said `key`, provided `key` is a string (and not an object) + // + var pid = dopid(node), r; + if(!dataCache[pid]){ dataCache[pid] = {}; } + + // API discrepency: calling with only a node returns the whole object. $.data throws + if(arguments.length == 1){ r = dataCache[pid]; } + if(typeof key == "string"){ + // either getter or setter, based on `value` presence + if(arguments.length > 2){ + dataCache[pid][key] = value; + }else{ + r = dataCache[pid][key]; + } + }else{ + // must be a setter, mix `value` into data hash + // API discrepency: using object as setter works here + r = lang.mixin(dataCache[pid], key); + } + + return r; // Object|Anything|Nothing + }; + + var removeData = dojo._removeNodeData = function(node, key){ + // summary: Remove some data from this node + // node: String|DomNode + // The node reference to remove data from + // key: String? + // If omitted, remove all data in this dataset. + // If passed, remove only the passed `key` in the associated dataset + var pid = dopid(node); + if(dataCache[pid]){ + if(key){ + delete dataCache[pid][key]; + }else{ + delete dataCache[pid]; + } + } + }; + + dojo._gcNodeData = function(){ + // summary: super expensive: GC all data in the data for nodes that no longer exist in the dom. + // description: + // super expensive: GC all data in the data for nodes that no longer exist in the dom. + // MUCH safer to do this yourself, manually, on a per-node basis (via `NodeList.removeData()`) + // provided as a stop-gap for exceptionally large/complex applications with constantly changing + // content regions (eg: a dijit.layout.ContentPane with replacing data) + // There is NO automatic GC going on. If you dojo.destroy() a node, you should _removeNodeData + // prior to destruction. + var livePids = query("[" + dataattr + "]").map(dopid); + for(var i in dataCache){ + if(array.indexOf(livePids, i) < 0){ delete dataCache[i]; } + } + }; + + // make nodeData and removeNodeData public on dojo.NodeList: + lang.extend(NodeList, { + data: NodeList._adaptWithCondition(dodata, function(a){ + return a.length === 0 || a.length == 1 && (typeof a[0] == "string"); + }), + removeData: NodeList._adaptAsForEach(removeData) + }); + +// TODO: this is the basic implemetation of adaptWithCondtionAndWhenMappedConsiderLength, for lack of a better API name +// it conflicts with the the `dojo.NodeList` way: always always return an arrayLike thinger. Consider for 2.0: +// +// NodeList.prototype.data = function(key, value){ +// var a = arguments, r; +// if(a.length === 0 || a.length == 1 && (typeof a[0] == "string")){ +// r = this.map(function(node){ +// return d._data(node, key); +// }); +// if(r.length == 1){ r = r[0]; } // the offending line, and the diff on adaptWithCondition +// }else{ +// r = this.forEach(function(node){ +// d._data(node, key, value); +// }); +// } +// return r; // dojo.NodeList|Array|SingleItem +// }; + + return NodeList; + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/NodeList-dom.js b/js/dojo-release-1.7.2-src/dojo/NodeList-dom.js new file mode 100644 index 0000000..fdf11c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/NodeList-dom.js @@ -0,0 +1,454 @@ +define(["./_base/kernel", "./query", "./_base/array", "./_base/lang", "./dom-class", "./dom-construct", "./dom-geometry", "./dom-attr", "./dom-style"], function(dojo, query, array, lang, domCls, domCtr, domGeom, domAttr, domStyle){ + /*===== var NodeList = dojo.NodeList; =====*/ + var magicGuard = function(a){ + // summary: + // the guard function for dojo.attr() and dojo.style() + return a.length == 1 && (typeof a[0] == "string"); // inline'd type check + }; + + var orphan = function(node){ + // summary: + // function to orphan nodes + var p = node.parentNode; + if(p){ + p.removeChild(node); + } + }; + // FIXME: should we move orphan() to dojo.html? + + var NodeList = query.NodeList, + awc = NodeList._adaptWithCondition, + aafe = NodeList._adaptAsForEach, + aam = NodeList._adaptAsMap; + + function getSet(module){ + return function(node, name, value){ + if(arguments.length == 2){ + return module[typeof name == "string" ? "get" : "set"](node, name); + } + // setter + return module.set(node, name, value); + }; + } + + lang.extend(NodeList, { + _normalize: function(/*String||Element||Object||NodeList*/content, /*DOMNode?*/refNode){ + // summary: + // normalizes data to an array of items to insert. + // description: + // If content is an object, it can have special properties "template" and + // "parse". If "template" is defined, then the template value is run through + // dojo.string.substitute (if dojo.string.substitute has been dojo.required elsewhere), + // or if templateFunc is a function on the content, that function will be used to + // transform the template into a final string to be used for for passing to dojo._toDom. + // If content.parse is true, then it is remembered for later, for when the content + // nodes are inserted into the DOM. At that point, the nodes will be parsed for widgets + // (if dojo.parser has been dojo.required elsewhere). + + //Wanted to just use a DocumentFragment, but for the array/NodeList + //case that meant using cloneNode, but we may not want that. + //Cloning should only happen if the node operations span + //multiple refNodes. Also, need a real array, not a NodeList from the + //DOM since the node movements could change those NodeLists. + + var parse = content.parse === true; + + //Do we have an object that needs to be run through a template? + if(typeof content.template == "string"){ + var templateFunc = content.templateFunc || (dojo.string && dojo.string.substitute); + content = templateFunc ? templateFunc(content.template, content) : content; + } + + var type = (typeof content); + if(type == "string" || type == "number"){ + content = domCtr.toDom(content, (refNode && refNode.ownerDocument)); + if(content.nodeType == 11){ + //DocumentFragment. It cannot handle cloneNode calls, so pull out the children. + content = lang._toArray(content.childNodes); + }else{ + content = [content]; + } + }else if(!lang.isArrayLike(content)){ + content = [content]; + }else if(!lang.isArray(content)){ + //To get to this point, content is array-like, but + //not an array, which likely means a DOM NodeList. Convert it now. + content = lang._toArray(content); + } + + //Pass around the parse info + if(parse){ + content._runParse = true; + } + return content; //Array + }, + + _cloneNode: function(/*DOMNode*/ node){ + // summary: + // private utility to clone a node. Not very interesting in the vanilla + // dojo.NodeList case, but delegates could do interesting things like + // clone event handlers if that is derivable from the node. + return node.cloneNode(true); + }, + + _place: function(/*Array*/ary, /*DOMNode*/refNode, /*String*/position, /*Boolean*/useClone){ + // summary: + // private utility to handle placing an array of nodes relative to another node. + // description: + // Allows for cloning the nodes in the array, and for + // optionally parsing widgets, if ary._runParse is true. + + //Avoid a disallowed operation if trying to do an innerHTML on a non-element node. + if(refNode.nodeType != 1 && position == "only"){ + return; + } + var rNode = refNode, tempNode; + + //Always cycle backwards in case the array is really a + //DOM NodeList and the DOM operations take it out of the live collection. + var length = ary.length; + for(var i = length - 1; i >= 0; i--){ + var node = (useClone ? this._cloneNode(ary[i]) : ary[i]); + + //If need widget parsing, use a temp node, instead of waiting after inserting into + //real DOM because we need to start widget parsing at one node up from current node, + //which could cause some already parsed widgets to be parsed again. + if(ary._runParse && dojo.parser && dojo.parser.parse){ + if(!tempNode){ + tempNode = rNode.ownerDocument.createElement("div"); + } + tempNode.appendChild(node); + dojo.parser.parse(tempNode); + node = tempNode.firstChild; + while(tempNode.firstChild){ + tempNode.removeChild(tempNode.firstChild); + } + } + + if(i == length - 1){ + domCtr.place(node, rNode, position); + }else{ + rNode.parentNode.insertBefore(node, rNode); + } + rNode = node; + } + }, + + /*===== + position: function(){ + // summary: + // Returns border-box objects (x/y/w/h) of all elements in a node list + // as an Array (*not* a NodeList). Acts like `dojo.position`, though + // assumes the node passed is each node in this list. + + return dojo.map(this, dojo.position); // Array + }, + + attr: function(property, value){ + // summary: + // gets or sets the DOM attribute for every element in the + // NodeList. See also `dojo.attr` + // property: String + // the attribute to get/set + // value: String? + // optional. The value to set the property to + // returns: + // if no value is passed, the result is an array of attribute values + // If a value is passed, the return is this NodeList + // example: + // Make all nodes with a particular class focusable: + // | dojo.query(".focusable").attr("tabIndex", -1); + // example: + // Disable a group of buttons: + // | dojo.query("button.group").attr("disabled", true); + // example: + // innerHTML can be assigned or retrieved as well: + // | // get the innerHTML (as an array) for each list item + // | var ih = dojo.query("li.replaceable").attr("innerHTML"); + return; // dojo.NodeList + return; // Array + }, + + style: function(property, value){ + // summary: + // gets or sets the CSS property for every element in the NodeList + // property: String + // the CSS property to get/set, in JavaScript notation + // ("lineHieght" instead of "line-height") + // value: String? + // optional. The value to set the property to + // returns: + // if no value is passed, the result is an array of strings. + // If a value is passed, the return is this NodeList + return; // dojo.NodeList + return; // Array + }, + + addClass: function(className){ + // summary: + // adds the specified class to every node in the list + // className: String|Array + // A String class name to add, or several space-separated class names, + // or an array of class names. + return; // dojo.NodeList + }, + + removeClass: function(className){ + // summary: + // removes the specified class from every node in the list + // className: String|Array? + // An optional String class name to remove, or several space-separated + // class names, or an array of class names. If omitted, all class names + // will be deleted. + // returns: + // dojo.NodeList, this list + return; // dojo.NodeList + }, + + toggleClass: function(className, condition){ + // summary: + // Adds a class to node if not present, or removes if present. + // Pass a boolean condition if you want to explicitly add or remove. + // condition: Boolean? + // If passed, true means to add the class, false means to remove. + // className: String + // the CSS class to add + return; // dojo.NodeList + }, + + empty: function(){ + // summary: + // clears all content from each node in the list. Effectively + // equivalent to removing all child nodes from every item in + // the list. + return this.forEach("item.innerHTML='';"); // dojo.NodeList + // FIXME: should we be checking for and/or disposing of widgets below these nodes? + }, + =====*/ + + // useful html methods + attr: awc(getSet(domAttr), magicGuard), + style: awc(getSet(domStyle), magicGuard), + + addClass: aafe(domCls.add), + removeClass: aafe(domCls.remove), + replaceClass: aafe(domCls.replace), + toggleClass: aafe(domCls.toggle), + + empty: aafe(domCtr.empty), + removeAttr: aafe(domAttr.remove), + + position: aam(domGeom.position), + marginBox: aam(domGeom.getMarginBox), + + // FIXME: connectPublisher()? connectRunOnce()? + + /* + destroy: function(){ + // summary: + // destroys every item in the list. + this.forEach(d.destroy); + // FIXME: should we be checking for and/or disposing of widgets below these nodes? + }, + */ + + place: function(/*String||Node*/ queryOrNode, /*String*/ position){ + // summary: + // places elements of this node list relative to the first element matched + // by queryOrNode. Returns the original NodeList. See: `dojo.place` + // queryOrNode: + // may be a string representing any valid CSS3 selector or a DOM node. + // In the selector case, only the first matching element will be used + // for relative positioning. + // position: + // can be one of: + // | "last" (default) + // | "first" + // | "before" + // | "after" + // | "only" + // | "replace" + // or an offset in the childNodes property + var item = query(queryOrNode)[0]; + return this.forEach(function(node){ domCtr.place(node, item, position); }); // dojo.NodeList + }, + + orphan: function(/*String?*/ filter){ + // summary: + // removes elements in this list that match the filter + // from their parents and returns them as a new NodeList. + // filter: + // CSS selector like ".foo" or "div > span" + // returns: + // `dojo.NodeList` containing the orphaned elements + return (filter ? query._filterResult(this, filter) : this).forEach(orphan); // dojo.NodeList + }, + + adopt: function(/*String||Array||DomNode*/ queryOrListOrNode, /*String?*/ position){ + // summary: + // places any/all elements in queryOrListOrNode at a + // position relative to the first element in this list. + // Returns a dojo.NodeList of the adopted elements. + // queryOrListOrNode: + // a DOM node or a query string or a query result. + // Represents the nodes to be adopted relative to the + // first element of this NodeList. + // position: + // can be one of: + // | "last" (default) + // | "first" + // | "before" + // | "after" + // | "only" + // | "replace" + // or an offset in the childNodes property + return query(queryOrListOrNode).place(this[0], position)._stash(this); // dojo.NodeList + }, + + // FIXME: do we need this? + query: function(/*String*/ queryStr){ + // summary: + // Returns a new list whose members match the passed query, + // assuming elements of the current NodeList as the root for + // each search. + // example: + // assume a DOM created by this markup: + // |
                            + // |

                            + // | bacon is tasty, dontcha think? + // |

                            + // |
                            + // |
                            + // |

                            great comedians may not be funny in person

                            + // |
                            + // If we are presented with the following definition for a NodeList: + // | var l = new dojo.NodeList(dojo.byId("foo"), dojo.byId("bar")); + // it's possible to find all span elements under paragraphs + // contained by these elements with this sub-query: + // | var spans = l.query("p span"); + + // FIXME: probably slow + if(!queryStr){ return this; } + var ret = new NodeList; + this.map(function(node){ + // FIXME: why would we ever get undefined here? + query(queryStr, node).forEach(function(subNode){ + if(subNode !== undefined){ + ret.push(subNode); + } + }); + }); + return ret._stash(this); // dojo.NodeList + }, + + filter: function(/*String|Function*/ filter){ + // summary: + // "masks" the built-in javascript filter() method (supported + // in Dojo via `dojo.filter`) to support passing a simple + // string filter in addition to supporting filtering function + // objects. + // filter: + // If a string, a CSS rule like ".thinger" or "div > span". + // example: + // "regular" JS filter syntax as exposed in dojo.filter: + // | dojo.query("*").filter(function(item){ + // | // highlight every paragraph + // | return (item.nodeName == "p"); + // | }).style("backgroundColor", "yellow"); + // example: + // the same filtering using a CSS selector + // | dojo.query("*").filter("p").styles("backgroundColor", "yellow"); + + var a = arguments, items = this, start = 0; + if(typeof filter == "string"){ // inline'd type check + items = query._filterResult(this, a[0]); + if(a.length == 1){ + // if we only got a string query, pass back the filtered results + return items._stash(this); // dojo.NodeList + } + // if we got a callback, run it over the filtered items + start = 1; + } + return this._wrap(array.filter(items, a[start], a[start + 1]), this); // dojo.NodeList + }, + + /* + // FIXME: should this be "copyTo" and include parenting info? + clone: function(){ + // summary: + // creates node clones of each element of this list + // and returns a new list containing the clones + }, + */ + + addContent: function(/*String||DomNode||Object||dojo.NodeList*/ content, /*String||Integer?*/ position){ + // summary: + // add a node, NodeList or some HTML as a string to every item in the + // list. Returns the original list. + // description: + // a copy of the HTML content is added to each item in the + // list, with an optional position argument. If no position + // argument is provided, the content is appended to the end of + // each item. + // content: + // DOM node, HTML in string format, a NodeList or an Object. If a DOM node or + // NodeList, the content will be cloned if the current NodeList has more than one + // element. Only the DOM nodes are cloned, no event handlers. If it is an Object, + // it should be an object with at "template" String property that has the HTML string + // to insert. If dojo.string has already been dojo.required, then dojo.string.substitute + // will be used on the "template" to generate the final HTML string. Other allowed + // properties on the object are: "parse" if the HTML + // string should be parsed for widgets (dojo.require("dojo.parser") to get that + // option to work), and "templateFunc" if a template function besides dojo.string.substitute + // should be used to transform the "template". + // position: + // can be one of: + // | "last"||"end" (default) + // | "first||"start" + // | "before" + // | "after" + // | "replace" (replaces nodes in this NodeList with new content) + // | "only" (removes other children of the nodes so new content is the only child) + // or an offset in the childNodes property + // example: + // appends content to the end if the position is omitted + // | dojo.query("h3 > p").addContent("hey there!"); + // example: + // add something to the front of each element that has a + // "thinger" property: + // | dojo.query("[thinger]").addContent("...", "first"); + // example: + // adds a header before each element of the list + // | dojo.query(".note").addContent("

                            NOTE:

                            ", "before"); + // example: + // add a clone of a DOM node to the end of every element in + // the list, removing it from its existing parent. + // | dojo.query(".note").addContent(dojo.byId("foo")); + // example: + // Append nodes from a templatized string. + // dojo.require("dojo.string"); + // dojo.query(".note").addContent({ + // template: '${id}: ${name}', + // id: "user332", + // name: "Mr. Anderson" + // }); + // example: + // Append nodes from a templatized string that also has widgets parsed. + // dojo.require("dojo.string"); + // dojo.require("dojo.parser"); + // var notes = dojo.query(".note").addContent({ + // template: '', + // parse: true, + // text: "Send" + // }); + content = this._normalize(content, this[0]); + for(var i = 0, node; (node = this[i]); i++){ + this._place(content, node, position, i > 0); + } + return this; //dojo.NodeList + } + }); + + /*===== return dojo.NodeList; =====*/ + return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/NodeList-fx.js b/js/dojo-release-1.7.2-src/dojo/NodeList-fx.js new file mode 100644 index 0000000..2a50df3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/NodeList-fx.js @@ -0,0 +1,222 @@ +define(["dojo/_base/NodeList", "./_base/lang", "./_base/connect", "./_base/fx", "./fx"], + function(NodeList, lang, connectLib, baseFx, coreFx) { + // module: + // dojo/NodeList-fx + // summary: + // TODOC + +/*===== +dojo["NodeList-fx"] = { + // summary: Adds dojo.fx animation support to dojo.query() by extending the NodeList class + // with additional FX functions. NodeList is the array-like object used to hold query results. +}; + +// doc alias helpers: +NodeList = dojo.NodeList; +=====*/ + +lang.extend(NodeList, { + _anim: function(obj, method, args){ + args = args||{}; + var a = coreFx.combine( + this.map(function(item){ + var tmpArgs = { node: item }; + lang.mixin(tmpArgs, args); + return obj[method](tmpArgs); + }) + ); + return args.auto ? a.play() && this : a; // dojo.Animation|dojo.NodeList + }, + + wipeIn: function(args){ + // summary: + // wipe in all elements of this NodeList via `dojo.fx.wipeIn` + // + // args: Object? + // Additional dojo.Animation arguments to mix into this set with the addition of + // an `auto` parameter. + // + // returns: dojo.Animation|dojo.NodeList + // A special args member `auto` can be passed to automatically play the animation. + // If args.auto is present, the original dojo.NodeList will be returned for further + // chaining. Otherwise the dojo.Animation instance is returned and must be .play()'ed + // + // example: + // Fade in all tables with class "blah": + // | dojo.query("table.blah").wipeIn().play(); + // + // example: + // Utilizing `auto` to get the NodeList back: + // | dojo.query(".titles").wipeIn({ auto:true }).onclick(someFunction); + // + return this._anim(coreFx, "wipeIn", args); // dojo.Animation|dojo.NodeList + }, + + wipeOut: function(args){ + // summary: + // wipe out all elements of this NodeList via `dojo.fx.wipeOut` + // + // args: Object? + // Additional dojo.Animation arguments to mix into this set with the addition of + // an `auto` parameter. + // + // returns: dojo.Animation|dojo.NodeList + // A special args member `auto` can be passed to automatically play the animation. + // If args.auto is present, the original dojo.NodeList will be returned for further + // chaining. Otherwise the dojo.Animation instance is returned and must be .play()'ed + // + // example: + // Wipe out all tables with class "blah": + // | dojo.query("table.blah").wipeOut().play(); + return this._anim(coreFx, "wipeOut", args); // dojo.Animation|dojo.NodeList + }, + + slideTo: function(args){ + // summary: + // slide all elements of the node list to the specified place via `dojo.fx.slideTo` + // + // args: Object? + // Additional dojo.Animation arguments to mix into this set with the addition of + // an `auto` parameter. + // + // returns: dojo.Animation|dojo.NodeList + // A special args member `auto` can be passed to automatically play the animation. + // If args.auto is present, the original dojo.NodeList will be returned for further + // chaining. Otherwise the dojo.Animation instance is returned and must be .play()'ed + // + // example: + // | Move all tables with class "blah" to 300/300: + // | dojo.query("table.blah").slideTo({ + // | left: 40, + // | top: 50 + // | }).play(); + return this._anim(coreFx, "slideTo", args); // dojo.Animation|dojo.NodeList + }, + + + fadeIn: function(args){ + // summary: + // fade in all elements of this NodeList via `dojo.fadeIn` + // + // args: Object? + // Additional dojo.Animation arguments to mix into this set with the addition of + // an `auto` parameter. + // + // returns: dojo.Animation|dojo.NodeList + // A special args member `auto` can be passed to automatically play the animation. + // If args.auto is present, the original dojo.NodeList will be returned for further + // chaining. Otherwise the dojo.Animation instance is returned and must be .play()'ed + // + // example: + // Fade in all tables with class "blah": + // | dojo.query("table.blah").fadeIn().play(); + return this._anim(baseFx, "fadeIn", args); // dojo.Animation|dojo.NodeList + }, + + fadeOut: function(args){ + // summary: + // fade out all elements of this NodeList via `dojo.fadeOut` + // + // args: Object? + // Additional dojo.Animation arguments to mix into this set with the addition of + // an `auto` parameter. + // + // returns: dojo.Animation|dojo.NodeList + // A special args member `auto` can be passed to automatically play the animation. + // If args.auto is present, the original dojo.NodeList will be returned for further + // chaining. Otherwise the dojo.Animation instance is returned and must be .play()'ed + // + // example: + // Fade out all elements with class "zork": + // | dojo.query(".zork").fadeOut().play(); + // example: + // Fade them on a delay and do something at the end: + // | var fo = dojo.query(".zork").fadeOut(); + // | dojo.connect(fo, "onEnd", function(){ /*...*/ }); + // | fo.play(); + // example: + // Using `auto`: + // | dojo.query("li").fadeOut({ auto:true }).filter(filterFn).forEach(doit); + // + return this._anim(baseFx, "fadeOut", args); // dojo.Animation|dojo.NodeList + }, + + animateProperty: function(args){ + // summary: + // Animate all elements of this NodeList across the properties specified. + // syntax identical to `dojo.animateProperty` + // + // args: Object? + // Additional dojo.Animation arguments to mix into this set with the addition of + // an `auto` parameter. + // + // returns: dojo.Animation|dojo.NodeList + // A special args member `auto` can be passed to automatically play the animation. + // If args.auto is present, the original dojo.NodeList will be returned for further + // chaining. Otherwise the dojo.Animation instance is returned and must be .play()'ed + // + // example: + // | dojo.query(".zork").animateProperty({ + // | duration: 500, + // | properties: { + // | color: { start: "black", end: "white" }, + // | left: { end: 300 } + // | } + // | }).play(); + // + // example: + // | dojo.query(".grue").animateProperty({ + // | auto:true, + // | properties: { + // | height:240 + // | } + // | }).onclick(handler); + return this._anim(baseFx, "animateProperty", args); // dojo.Animation|dojo.NodeList + }, + + anim: function( /*Object*/ properties, + /*Integer?*/ duration, + /*Function?*/ easing, + /*Function?*/ onEnd, + /*Integer?*/ delay){ + // summary: + // Animate one or more CSS properties for all nodes in this list. + // The returned animation object will already be playing when it + // is returned. See the docs for `dojo.anim` for full details. + // properties: Object + // the properties to animate. does NOT support the `auto` parameter like other + // NodeList-fx methods. + // duration: Integer? + // Optional. The time to run the animations for + // easing: Function? + // Optional. The easing function to use. + // onEnd: Function? + // A function to be called when the animation ends + // delay: + // how long to delay playing the returned animation + // example: + // Another way to fade out: + // | dojo.query(".thinger").anim({ opacity: 0 }); + // example: + // animate all elements with the "thigner" class to a width of 500 + // pixels over half a second + // | dojo.query(".thinger").anim({ width: 500 }, 700); + var canim = coreFx.combine( + this.map(function(item){ + return baseFx.animateProperty({ + node: item, + properties: properties, + duration: duration||350, + easing: easing + }); + }) + ); + if(onEnd){ + connectLib.connect(canim, "onEnd", onEnd); + } + return canim.play(delay||0); // dojo.Animation + } +}); + +return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/NodeList-html.js b/js/dojo-release-1.7.2-src/dojo/NodeList-html.js new file mode 100644 index 0000000..3c841da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/NodeList-html.js @@ -0,0 +1,55 @@ +define(["./query", "./_base/lang", "./html"], function(query, lang, html) { + // module: + // dojo/NodeList-html + // summary: + // TODOC + +var NodeList = query.NodeList; + +/*===== +dojo["NodeList-html"] = { + // summary: Adds a chainable html method to dojo.query() / Nodelist instances for setting/replacing node content +}; + +// doc helper aliases: +NodeList = dojo.NodeList; +=====*/ + +lang.extend(NodeList, { + html: function(/* String|DomNode|NodeList? */ content, /* Object? */params){ + // summary: + // see `dojo.html.set()`. Set the content of all elements of this NodeList + // + // content: + // An html string, node or enumerable list of nodes for insertion into the dom + // + // params: + // Optional flags/properties to configure the content-setting. See dojo.html._ContentSetter + // + // description: + // Based around `dojo.html.set()`, set the content of the Elements in a + // NodeList to the given content (string/node/nodelist), with optional arguments + // to further tune the set content behavior. + // + // example: + // | dojo.query(".thingList").html("
                          1. 1
                          2. 2
                          3. 3
                          4. ", + // | { + // | parseContent: true, + // | onBegin: function(){ + // | this.content = this.content.replace(/([0-9])/g, this.id + ": $1"); + // | this.inherited("onBegin", arguments); + // | } + // | }).removeClass("notdone").addClass("done"); + + var dhs = new html._ContentSetter(params || {}); + this.forEach(function(elm){ + dhs.node = elm; + dhs.set(content); + dhs.tearDown(); + }); + return this; // dojo.NodeList + } +}); + +return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/NodeList-manipulate.js b/js/dojo-release-1.7.2-src/dojo/NodeList-manipulate.js new file mode 100644 index 0000000..42f6dc7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/NodeList-manipulate.js @@ -0,0 +1,730 @@ +define(["./query", "./_base/lang", "./_base/array", "./dom-construct", "./NodeList-dom"], function(dquery, lang, array, construct) { + // module: + // dojo/NodeList-manipulate + // summary: + // TODOC + +var NodeList = dquery.NodeList; + +/*===== +dojo["NodeList-manipulate"] = { + // summary: Adds a chainable methods to dojo.query() / Nodelist instances for manipulating HTML + // and DOM nodes and their properties. +}; + +// doc alias helpers: +NodeList = dojo.NodeList; +=====*/ + +//TODO: add a way to parse for widgets in the injected markup? + + function getText(/*DOMNode*/node){ + // summary: + // recursion method for text() to use. Gets text value for a node. + // description: + // Juse uses nodedValue so things like
                            tags do not end up in + // the text as any sort of line return. + var text = "", ch = node.childNodes; + for(var i = 0, n; n = ch[i]; i++){ + //Skip comments. + if(n.nodeType != 8){ + if(n.nodeType == 1){ + text += getText(n); + }else{ + text += n.nodeValue; + } + } + } + return text; + } + + function getWrapInsertion(/*DOMNode*/node){ + // summary: + // finds the innermost element to use for wrap insertion. + + //Make it easy, assume single nesting, no siblings. + while(node.childNodes[0] && node.childNodes[0].nodeType == 1){ + node = node.childNodes[0]; + } + return node; //DOMNode + } + + function makeWrapNode(/*DOMNode||String*/html, /*DOMNode*/refNode){ + // summary: + // convert HTML into nodes if it is not already a node. + if(typeof html == "string"){ + html = construct.toDom(html, (refNode && refNode.ownerDocument)); + if(html.nodeType == 11){ + //DocumentFragment cannot handle cloneNode, so choose first child. + html = html.childNodes[0]; + } + }else if(html.nodeType == 1 && html.parentNode){ + //This element is already in the DOM clone it, but not its children. + html = html.cloneNode(false); + } + return html; /*DOMNode*/ + } + + lang.extend(NodeList, { + _placeMultiple: function(/*String||Node||NodeList*/query, /*String*/position){ + // summary: + // private method for inserting queried nodes into all nodes in this NodeList + // at different positions. Differs from NodeList.place because it will clone + // the nodes in this NodeList if the query matches more than one element. + var nl2 = typeof query == "string" || query.nodeType ? dquery(query) : query; + var toAdd = []; + for(var i = 0; i < nl2.length; i++){ + //Go backwards in DOM to make dom insertions easier via insertBefore + var refNode = nl2[i]; + var length = this.length; + for(var j = length - 1, item; item = this[j]; j--){ + if(i > 0){ + //Need to clone the item. This also means + //it needs to be added to the current NodeList + //so it can also be the target of other chaining operations. + item = this._cloneNode(item); + toAdd.unshift(item); + } + if(j == length - 1){ + construct.place(item, refNode, position); + }else{ + refNode.parentNode.insertBefore(item, refNode); + } + refNode = item; + } + } + + if(toAdd.length){ + //Add the toAdd items to the current NodeList. Build up list of args + //to pass to splice. + toAdd.unshift(0); + toAdd.unshift(this.length - 1); + Array.prototype.splice.apply(this, toAdd); + } + + return this; //dojo.NodeList + }, + + innerHTML: function(/*String?||DOMNode?|NodeList?*/value){ + // summary: + // allows setting the innerHTML of each node in the NodeList, + // if there is a value passed in, otherwise, reads the innerHTML value of the first node. + // description: + // This method is simpler than the dojo.NodeList.html() method provided by + // `dojo.NodeList-html`. This method just does proper innerHTML insertion of HTML fragments, + // and it allows for the innerHTML to be read for the first node in the node list. + // Since dojo.NodeList-html already took the "html" name, this method is called + // "innerHTML". However, if dojo.NodeList-html has not been loaded yet, this + // module will define an "html" method that can be used instead. Be careful if you + // are working in an environment where it is possible that dojo.NodeList-html could + // have been loaded, since its definition of "html" will take precedence. + // The nodes represented by the value argument will be cloned if more than one + // node is in this NodeList. The nodes in this NodeList are returned in the "set" + // usage of this method, not the HTML that was inserted. + // returns: + // if no value is passed, the result is String, the innerHTML of the first node. + // If a value is passed, the return is this dojo.NodeList + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            + // This code inserts

                            Hello World

                            into both divs: + // | dojo.query("div").innerHTML("

                            Hello World

                            "); + // example: + // assume a DOM created by this markup: + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // This code returns "

                            Hello Mars

                            ": + // | var message = dojo.query("div").innerHTML(); + if(arguments.length){ + return this.addContent(value, "only"); //dojo.NodeList + }else{ + return this[0].innerHTML; //String + } + }, + + /*===== + html: function(value){ + // summary: + // see the information for "innerHTML". "html" is an alias for "innerHTML", but is + // only defined if dojo.NodeList-html has not been loaded. + // description: + // An alias for the "innerHTML" method, but only defined if there is not an existing + // "html" method on dojo.NodeList. Be careful if you are working in an environment + // where it is possible that dojo.NodeList-html could have been loaded, since its + // definition of "html" will take precedence. If you are not sure if dojo.NodeList-html + // could be loaded, use the "innerHTML" method. + // value: String?||DOMNode?||NodeList? + // optional. The HTML fragment to use as innerHTML. If value is not passed, then the innerHTML + // of the first element in this NodeList is returned. + // returns: + // if no value is passed, the result is String, the innerHTML of the first node. + // If a value is passed, the return is this dojo.NodeList + return; // dojo.NodeList + return; // String + }, + =====*/ + + text: function(/*String*/value){ + // summary: + // allows setting the text value of each node in the NodeList, + // if there is a value passed in, otherwise, returns the text value for all the + // nodes in the NodeList in one string. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            + // This code inserts "Hello World" into both divs: + // | dojo.query("div").text("Hello World"); + // example: + // assume a DOM created by this markup: + // |

                            Hello Mars today

                            + // |

                            Hello World

                            + // This code returns "Hello Mars today": + // | var message = dojo.query("div").text(); + // returns: + // if no value is passed, the result is String, the text value of the first node. + // If a value is passed, the return is this dojo.NodeList + if(arguments.length){ + for(var i = 0, node; node = this[i]; i++){ + if(node.nodeType == 1){ + construct.empty(node); + node.appendChild(node.ownerDocument.createTextNode(value)); + } + } + return this; //dojo.NodeList + }else{ + var result = ""; + for(i = 0; node = this[i]; i++){ + result += getText(node); + } + return result; //String + } + }, + + val: function(/*String||Array*/value){ + // summary: + // If a value is passed, allows seting the value property of form elements in this + // NodeList, or properly selecting/checking the right value for radio/checkbox/select + // elements. If no value is passed, the value of the first node in this NodeList + // is returned. + // returns: + // if no value is passed, the result is String or an Array, for the value of the + // first node. + // If a value is passed, the return is this dojo.NodeList + // example: + // assume a DOM created by this markup: + // | + // | + // This code gets and sets the values for the form fields above: + // | dojo.query('[type="text"]').val(); //gets value foo + // | dojo.query('[type="text"]').val("bar"); //sets the input's value to "bar" + // | dojo.query("select").val() //gets array value ["red", "yellow"] + // | dojo.query("select").val(["blue", "yellow"]) //Sets the blue and yellow options to selected. + + //Special work for input elements. + if(arguments.length){ + var isArray = lang.isArray(value); + for(var index = 0, node; node = this[index]; index++){ + var name = node.nodeName.toUpperCase(); + var type = node.type; + var newValue = isArray ? value[index] : value; + + if(name == "SELECT"){ + var opts = node.options; + for(var i = 0; i < opts.length; i++){ + var opt = opts[i]; + if(node.multiple){ + opt.selected = (array.indexOf(value, opt.value) != -1); + }else{ + opt.selected = (opt.value == newValue); + } + } + }else if(type == "checkbox" || type == "radio"){ + node.checked = (node.value == newValue); + }else{ + node.value = newValue; + } + } + return this; //dojo.NodeList + }else{ + //node already declared above. + node = this[0]; + if(!node || node.nodeType != 1){ + return undefined; + } + value = node.value || ""; + if(node.nodeName.toUpperCase() == "SELECT" && node.multiple){ + //A multivalued selectbox. Do the pain. + value = []; + //opts declared above in if block. + opts = node.options; + //i declared above in if block; + for(i = 0; i < opts.length; i++){ + //opt declared above in if block + opt = opts[i]; + if(opt.selected){ + value.push(opt.value); + } + } + if(!value.length){ + value = null; + } + } + return value; //String||Array + } + }, + + append: function(/*String||DOMNode||NodeList*/content){ + // summary: + // appends the content to every node in the NodeList. + // description: + // The content will be cloned if the length of NodeList + // is greater than 1. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the appended content. + // example: + // assume a DOM created by this markup: + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("div").append("append"); + // Results in this DOM structure: + // |

                            Hello Mars

                            append
                            + // |

                            Hello World

                            append
                            + return this.addContent(content, "last"); //dojo.NodeList + }, + + appendTo: function(/*String*/query){ + // summary: + // appends nodes in this NodeList to the nodes matched by + // the query passed to appendTo. + // description: + // The nodes in this NodeList will be cloned if the query + // matches more than one element. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the matched nodes from the query. + // example: + // assume a DOM created by this markup: + // | append + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("span").appendTo("p"); + // Results in this DOM structure: + // |

                            Hello Marsappend

                            + // |

                            Hello Worldappend

                            + return this._placeMultiple(query, "last"); //dojo.NodeList + }, + + prepend: function(/*String||DOMNode||NodeList*/content){ + // summary: + // prepends the content to every node in the NodeList. + // description: + // The content will be cloned if the length of NodeList + // is greater than 1. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the appended content. + // assume a DOM created by this markup: + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("div").prepend("prepend"); + // Results in this DOM structure: + // |
                            prepend

                            Hello Mars

                            + // |
                            prepend

                            Hello World

                            + return this.addContent(content, "first"); //dojo.NodeList + }, + + prependTo: function(/*String*/query){ + // summary: + // prepends nodes in this NodeList to the nodes matched by + // the query passed to prependTo. + // description: + // The nodes in this NodeList will be cloned if the query + // matches more than one element. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the matched nodes from the query. + // example: + // assume a DOM created by this markup: + // | prepend + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("span").prependTo("p"); + // Results in this DOM structure: + // |

                            prependHello Mars

                            + // |

                            prependHello World

                            + return this._placeMultiple(query, "first"); //dojo.NodeList + }, + + after: function(/*String||Element||NodeList*/content){ + // summary: + // Places the content after every node in the NodeList. + // description: + // The content will be cloned if the length of NodeList + // is greater than 1. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the appended content. + // example: + // assume a DOM created by this markup: + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("div").after("after"); + // Results in this DOM structure: + // |

                            Hello Mars

                            after + // |

                            Hello World

                            after + return this.addContent(content, "after"); //dojo.NodeList + }, + + insertAfter: function(/*String*/query){ + // summary: + // The nodes in this NodeList will be placed after the nodes + // matched by the query passed to insertAfter. + // description: + // The nodes in this NodeList will be cloned if the query + // matches more than one element. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the matched nodes from the query. + // example: + // assume a DOM created by this markup: + // | after + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("span").insertAfter("p"); + // Results in this DOM structure: + // |

                            Hello Mars

                            after + // |

                            Hello World

                            after + return this._placeMultiple(query, "after"); //dojo.NodeList + }, + + before: function(/*String||DOMNode||NodeList*/content){ + // summary: + // Places the content before every node in the NodeList. + // description: + // The content will be cloned if the length of NodeList + // is greater than 1. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the appended content. + // example: + // assume a DOM created by this markup: + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("div").before("before"); + // Results in this DOM structure: + // | before

                            Hello Mars

                            + // | before

                            Hello World

                            + return this.addContent(content, "before"); //dojo.NodeList + }, + + insertBefore: function(/*String*/query){ + // summary: + // The nodes in this NodeList will be placed after the nodes + // matched by the query passed to insertAfter. + // description: + // The nodes in this NodeList will be cloned if the query + // matches more than one element. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // dojo.NodeList, the nodes currently in this NodeList will be returned, + // not the matched nodes from the query. + // example: + // assume a DOM created by this markup: + // | before + // |

                            Hello Mars

                            + // |

                            Hello World

                            + // Running this code: + // | dojo.query("span").insertBefore("p"); + // Results in this DOM structure: + // | before

                            Hello Mars

                            + // | before

                            Hello World

                            + return this._placeMultiple(query, "before"); //dojo.NodeList + }, + + /*===== + remove: function(simpleFilter){ + // summary: + // alias for dojo.NodeList's orphan method. Removes elements + // in this list that match the simple filter from their parents + // and returns them as a new NodeList. + // simpleFilter: String + // single-expression CSS rule. For example, ".thinger" or + // "#someId[attrName='value']" but not "div > span". In short, + // anything which does not invoke a descent to evaluate but + // can instead be used to test a single node is acceptable. + // returns: + // dojo.NodeList + return; // dojo.NodeList + }, + =====*/ + remove: NodeList.prototype.orphan, + + wrap: function(/*String||DOMNode*/html){ + // summary: + // Wrap each node in the NodeList with html passed to wrap. + // description: + // html will be cloned if the NodeList has more than one + // element. Only DOM nodes are cloned, not any attached + // event handlers. + // returns: + // dojo.NodeList, the nodes in the current NodeList will be returned, + // not the nodes from html argument. + // example: + // assume a DOM created by this markup: + // | one + // | two + // Running this code: + // | dojo.query("b").wrap("
                            "); + // Results in this DOM structure: + // |
                            one
                            + // |
                            two
                            + if(this[0]){ + html = makeWrapNode(html, this[0]); + + //Now cycle through the elements and do the insertion. + for(var i = 0, node; node = this[i]; i++){ + //Always clone because if html is used to hold one of + //the "this" nodes, then on the clone of html it will contain + //that "this" node, and that would be bad. + var clone = this._cloneNode(html); + if(node.parentNode){ + node.parentNode.replaceChild(clone, node); + } + //Find deepest element and insert old node in it. + var insertion = getWrapInsertion(clone); + insertion.appendChild(node); + } + } + return this; //dojo.NodeList + }, + + wrapAll: function(/*String||DOMNode*/html){ + // summary: + // Insert html where the first node in this NodeList lives, then place all + // nodes in this NodeList as the child of the html. + // returns: + // dojo.NodeList, the nodes in the current NodeList will be returned, + // not the nodes from html argument. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".red").wrapAll('
                            '); + // Results in this DOM structure: + // |
                            + // |
                            + // |
                            Red One
                            + // |
                            Red Two
                            + // |
                            + // |
                            Blue One
                            + // |
                            Blue Two
                            + // |
                            + if(this[0]){ + html = makeWrapNode(html, this[0]); + + //Place the wrap HTML in place of the first node. + this[0].parentNode.replaceChild(html, this[0]); + + //Now cycle through the elements and move them inside + //the wrap. + var insertion = getWrapInsertion(html); + for(var i = 0, node; node = this[i]; i++){ + insertion.appendChild(node); + } + } + return this; //dojo.NodeList + }, + + wrapInner: function(/*String||DOMNode*/html){ + // summary: + // For each node in the NodeList, wrap all its children with the passed in html. + // description: + // html will be cloned if the NodeList has more than one + // element. Only DOM nodes are cloned, not any attached + // event handlers. + // returns: + // dojo.NodeList, the nodes in the current NodeList will be returned, + // not the nodes from html argument. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".red").wrapInner(''); + // Results in this DOM structure: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + if(this[0]){ + html = makeWrapNode(html, this[0]); + for(var i = 0; i < this.length; i++){ + //Always clone because if html is used to hold one of + //the "this" nodes, then on the clone of html it will contain + //that "this" node, and that would be bad. + var clone = this._cloneNode(html); + + //Need to convert the childNodes to an array since wrapAll modifies the + //DOM and can change the live childNodes NodeList. + this._wrap(lang._toArray(this[i].childNodes), null, this._NodeListCtor).wrapAll(clone); + } + } + return this; //dojo.NodeList + }, + + replaceWith: function(/*String||DOMNode||NodeList*/content){ + // summary: + // Replaces each node in ths NodeList with the content passed to replaceWith. + // description: + // The content will be cloned if the length of NodeList + // is greater than 1. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // The nodes currently in this NodeList will be returned, not the replacing content. + // Note that the returned nodes have been removed from the DOM. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".red").replaceWith('
                            Green
                            '); + // Results in this DOM structure: + // |
                            + // |
                            Green
                            + // |
                            Blue One
                            + // |
                            Green
                            + // |
                            Blue Two
                            + // |
                            + content = this._normalize(content, this[0]); + for(var i = 0, node; node = this[i]; i++){ + this._place(content, node, "before", i > 0); + node.parentNode.removeChild(node); + } + return this; //dojo.NodeList + }, + + replaceAll: function(/*String*/query){ + // summary: + // replaces nodes matched by the query passed to replaceAll with the nodes + // in this NodeList. + // description: + // The nodes in this NodeList will be cloned if the query + // matches more than one element. Only the DOM nodes are cloned, not + // any attached event handlers. + // returns: + // The nodes currently in this NodeList will be returned, not the matched nodes + // from the query. The nodes currently in this NodeLIst could have + // been cloned, so the returned NodeList will include the cloned nodes. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            ___
                            + // |
                            Red One
                            + // |
                            ___
                            + // |
                            Blue One
                            + // |
                            ___
                            + // |
                            Red Two
                            + // |
                            ___
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".red").replaceAll(".blue"); + // Results in this DOM structure: + // |
                            + // |
                            ___
                            + // |
                            ___
                            + // |
                            Red One
                            + // |
                            Red Two
                            + // |
                            ___
                            + // |
                            ___
                            + // |
                            Red One
                            + // |
                            Red Two
                            + // |
                            + var nl = dquery(query); + var content = this._normalize(this, this[0]); + for(var i = 0, node; node = nl[i]; i++){ + this._place(content, node, "before", i > 0); + node.parentNode.removeChild(node); + } + return this; //dojo.NodeList + }, + + clone: function(){ + // summary: + // Clones all the nodes in this NodeList and returns them as a new NodeList. + // description: + // Only the DOM nodes are cloned, not any attached event handlers. + // returns: + // dojo.NodeList, a cloned set of the original nodes. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".red").clone().appendTo(".container"); + // Results in this DOM structure: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            Red One
                            + // |
                            Red Two
                            + // |
                            + + //TODO: need option to clone events? + var ary = []; + for(var i = 0; i < this.length; i++){ + ary.push(this._cloneNode(this[i])); + } + return this._wrap(ary, this, this._NodeListCtor); //dojo.NodeList + } + }); + + //set up html method if one does not exist + if(!NodeList.prototype.html){ + NodeList.prototype.html = NodeList.prototype.innerHTML; + } + +return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/NodeList-traverse.js b/js/dojo-release-1.7.2-src/dojo/NodeList-traverse.js new file mode 100644 index 0000000..c609849 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/NodeList-traverse.js @@ -0,0 +1,508 @@ +define(["./query", "./_base/lang", "./_base/array"], function(dquery, lang, array) { + // module: + // dojo/NodeList-traverse + // summary: + // TODOC + +var NodeList = dquery.NodeList; + +/*===== +dojo["NodeList-traverse"] = { + // summary: Adds a chainable methods to dojo.query() / Nodelist instances for traversing the DOM +}; + +// doc alias helpers: +NodeList = dojo.NodeList; +=====*/ + +lang.extend(NodeList, { + _buildArrayFromCallback: function(/*Function*/callback){ + // summary: + // builds a new array of possibly differing size based on the input list. + // Since the returned array is likely of different size than the input array, + // the array's map function cannot be used. + var ary = []; + for(var i = 0; i < this.length; i++){ + var items = callback.call(this[i], this[i], ary); + if(items){ + ary = ary.concat(items); + } + } + return ary; //Array + }, + + _getUniqueAsNodeList: function(/*Array*/ nodes){ + // summary: + // given a list of nodes, make sure only unique + // elements are returned as our NodeList object. + // Does not call _stash(). + var ary = []; + //Using for loop for better speed. + for(var i = 0, node; node = nodes[i]; i++){ + //Should be a faster way to do this. dojo.query has a private + //_zip function that may be inspirational, but there are pathways + //in query that force nozip? + if(node.nodeType == 1 && array.indexOf(ary, node) == -1){ + ary.push(node); + } + } + return this._wrap(ary, null, this._NodeListCtor); //dojo.NodeList + }, + + _getUniqueNodeListWithParent: function(/*Array*/ nodes, /*String*/ query){ + // summary: + // gets unique element nodes, filters them further + // with an optional query and then calls _stash to track parent NodeList. + var ary = this._getUniqueAsNodeList(nodes); + ary = (query ? dquery._filterResult(ary, query) : ary); + return ary._stash(this); //dojo.NodeList + }, + + _getRelatedUniqueNodes: function(/*String?*/ query, /*Function*/ callback){ + // summary: + // cycles over all the nodes and calls a callback + // to collect nodes for a possible inclusion in a result. + // The callback will get two args: callback(node, ary), + // where ary is the array being used to collect the nodes. + return this._getUniqueNodeListWithParent(this._buildArrayFromCallback(callback), query); //dojo.NodeList + }, + + children: function(/*String?*/ query){ + // summary: + // Returns all immediate child elements for nodes in this dojo.NodeList. + // Optionally takes a query to filter the child elements. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, all immediate child elements for the nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // | Some Text + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".container").children(); + // returns the four divs that are children of the container div. + // Running this code: + // | dojo.query(".container").children(".red"); + // returns the two divs that have the class "red". + return this._getRelatedUniqueNodes(query, function(node, ary){ + return lang._toArray(node.childNodes); + }); //dojo.NodeList + }, + + closest: function(/*String*/ query, /*String|DOMNode?*/ root){ + // summary: + // Returns closest parent that matches query, including current node in this + // dojo.NodeList if it matches the query. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // root: + // If specified, query is relative to "root" rather than document body. + // returns: + // dojo.NodeList, the closest parent that matches the query, including the current + // node in this dojo.NodeList if it matches the query. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // | Some Text + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".red").closest(".container"); + // returns the div with class "container". + return this._getRelatedUniqueNodes(null, function(node, ary){ + do{ + if(dquery._filterResult([node], query, root).length){ + return node; + } + }while(node != root && (node = node.parentNode) && node.nodeType == 1); + return null; //To make rhino strict checking happy. + }); //dojo.NodeList + }, + + parent: function(/*String?*/ query){ + // summary: + // Returns immediate parent elements for nodes in this dojo.NodeList. + // Optionally takes a query to filter the parent elements. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, immediate parent elements for nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".text").parent(); + // returns the two divs with class "blue". + // Running this code: + // | dojo.query(".text").parent(".first"); + // returns the one div with class "blue" and "first". + return this._getRelatedUniqueNodes(query, function(node, ary){ + return node.parentNode; + }); //dojo.NodeList + }, + + parents: function(/*String?*/ query){ + // summary: + // Returns all parent elements for nodes in this dojo.NodeList. + // Optionally takes a query to filter the child elements. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, all parent elements for nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".text").parents(); + // returns the two divs with class "blue", the div with class "container", + // | the body element and the html element. + // Running this code: + // | dojo.query(".text").parents(".container"); + // returns the one div with class "container". + return this._getRelatedUniqueNodes(query, function(node, ary){ + var pary = []; + while(node.parentNode){ + node = node.parentNode; + pary.push(node); + } + return pary; + }); //dojo.NodeList + }, + + siblings: function(/*String?*/ query){ + // summary: + // Returns all sibling elements for nodes in this dojo.NodeList. + // Optionally takes a query to filter the sibling elements. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, all sibling elements for nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // | Some Text + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".first").siblings(); + // returns the two divs with class "red" and the other div + // | with class "blue" that does not have "first". + // Running this code: + // | dojo.query(".first").siblings(".red"); + // returns the two div with class "red". + return this._getRelatedUniqueNodes(query, function(node, ary){ + var pary = []; + var nodes = (node.parentNode && node.parentNode.childNodes); + for(var i = 0; i < nodes.length; i++){ + if(nodes[i] != node){ + pary.push(nodes[i]); + } + } + return pary; + }); //dojo.NodeList + }, + + next: function(/*String?*/ query){ + // summary: + // Returns the next element for nodes in this dojo.NodeList. + // Optionally takes a query to filter the next elements. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, the next element for nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // | Some Text + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".first").next(); + // returns the div with class "red" and has innerHTML of "Red Two". + // Running this code: + // | dojo.query(".last").next(".red"); + // does not return any elements. + return this._getRelatedUniqueNodes(query, function(node, ary){ + var next = node.nextSibling; + while(next && next.nodeType != 1){ + next = next.nextSibling; + } + return next; + }); //dojo.NodeList + }, + + nextAll: function(/*String?*/ query){ + // summary: + // Returns all sibling elements that come after the nodes in this dojo.NodeList. + // Optionally takes a query to filter the sibling elements. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, all sibling elements that come after the nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // | Some Text + // |
                            Blue One
                            + // | + // | + // |
                            + // Running this code: + // | dojo.query(".first").nextAll(); + // returns the two divs with class of "next". + // Running this code: + // | dojo.query(".first").nextAll(".red"); + // returns the one div with class "red" and innerHTML "Red Two". + return this._getRelatedUniqueNodes(query, function(node, ary){ + var pary = []; + var next = node; + while((next = next.nextSibling)){ + if(next.nodeType == 1){ + pary.push(next); + } + } + return pary; + }); //dojo.NodeList + }, + + prev: function(/*String?*/ query){ + // summary: + // Returns the previous element for nodes in this dojo.NodeList. + // Optionally takes a query to filter the previous elements. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, the previous element for nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // | Some Text + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".first").prev(); + // returns the div with class "red" and has innerHTML of "Red One". + // Running this code: + // | dojo.query(".first").prev(".blue"); + // does not return any elements. + return this._getRelatedUniqueNodes(query, function(node, ary){ + var prev = node.previousSibling; + while(prev && prev.nodeType != 1){ + prev = prev.previousSibling; + } + return prev; + }); //dojo.NodeList + }, + + prevAll: function(/*String?*/ query){ + // summary: + // Returns all sibling elements that come before the nodes in this dojo.NodeList. + // Optionally takes a query to filter the sibling elements. + // description: + // The returned nodes will be in reverse DOM order -- the first node in the list will + // be the node closest to the original node/NodeList. + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // query: + // a CSS selector. + // returns: + // dojo.NodeList, all sibling elements that come before the nodes in this dojo.NodeList. + // example: + // assume a DOM created by this markup: + // |
                            + // | + // | Some Text + // | + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".second").prevAll(); + // returns the two divs with class of "prev". + // Running this code: + // | dojo.query(".first").prevAll(".red"); + // returns the one div with class "red prev" and innerHTML "Red One". + return this._getRelatedUniqueNodes(query, function(node, ary){ + var pary = []; + var prev = node; + while((prev = prev.previousSibling)){ + if(prev.nodeType == 1){ + pary.push(prev); + } + } + return pary; + }); //dojo.NodeList + }, + + andSelf: function(){ + // summary: + // Adds the nodes from the previous dojo.NodeList to the current dojo.NodeList. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // returns: + // dojo.NodeList + // example: + // assume a DOM created by this markup: + // |
                            + // | + // | Some Text + // | + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".second").prevAll().andSelf(); + // returns the two divs with class of "prev", as well as the div with class "second". + return this.concat(this._parent); //dojo.NodeList + }, + + //Alternate methods for the :first/:last/:even/:odd pseudos. + first: function(){ + // summary: + // Returns the first node in this dojo.NodeList as a dojo.NodeList. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // returns: + // dojo.NodeList, with the first node in this dojo.NodeList + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".blue").first(); + // returns the div with class "blue" and "first". + return this._wrap(((this[0] && [this[0]]) || []), this); //dojo.NodeList + }, + + last: function(){ + // summary: + // Returns the last node in this dojo.NodeList as a dojo.NodeList. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // returns: + // dojo.NodeList, with the last node in this dojo.NodeList + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".blue").last(); + // returns the last div with class "blue", + return this._wrap((this.length ? [this[this.length - 1]] : []), this); //dojo.NodeList + }, + + even: function(){ + // summary: + // Returns the even nodes in this dojo.NodeList as a dojo.NodeList. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // returns: + // dojo.NodeList, with the even nodes in this dojo.NodeList + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".interior").even(); + // returns the two divs with class "blue" + return this.filter(function(item, i){ + return i % 2 != 0; + }); //dojo.NodeList + }, + + odd: function(){ + // summary: + // Returns the odd nodes in this dojo.NodeList as a dojo.NodeList. + // description: + // .end() can be used on the returned dojo.NodeList to get back to the + // original dojo.NodeList. + // returns: + // dojo.NodeList, with the odd nodes in this dojo.NodeList + // example: + // assume a DOM created by this markup: + // |
                            + // |
                            Red One
                            + // |
                            Blue One
                            + // |
                            Red Two
                            + // |
                            Blue Two
                            + // |
                            + // Running this code: + // | dojo.query(".interior").odd(); + // returns the two divs with class "red" + return this.filter(function(item, i){ + return i % 2 == 0; + }); //dojo.NodeList + } +}); + +return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/OpenAjax.js b/js/dojo-release-1.7.2-src/dojo/OpenAjax.js new file mode 100644 index 0000000..0733641 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/OpenAjax.js @@ -0,0 +1,194 @@ +/******************************************************************************* + * OpenAjax.js + * + * Reference implementation of the OpenAjax Hub, as specified by OpenAjax Alliance. + * Specification is under development at: + * + * http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification + * + * Copyright 2006-2007 OpenAjax Alliance + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 . Unless + * required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + ******************************************************************************/ + +// prevent re-definition of the OpenAjax object +if(!window["OpenAjax"]){ + OpenAjax = new function(){ + // summary: the OpenAjax hub + // description: see http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification + + var t = true; + var f = false; + var g = window; + var libs; + var ooh = "org.openajax.hub."; + + var h = {}; + this.hub = h; + h.implementer = "http://openajax.org"; + h.implVersion = "0.6"; + h.specVersion = "0.6"; + h.implExtraData = {}; + var libs = {}; + h.libraries = libs; + + h.registerLibrary = function(prefix, nsURL, version, extra){ + libs[prefix] = { + prefix: prefix, + namespaceURI: nsURL, + version: version, + extraData: extra + }; + this.publish(ooh+"registerLibrary", libs[prefix]); + }; + h.unregisterLibrary = function(prefix){ + this.publish(ooh+"unregisterLibrary", libs[prefix]); + delete libs[prefix]; + }; + + h._subscriptions = { c:{}, s:[] }; + h._cleanup = []; + h._subIndex = 0; + h._pubDepth = 0; + + h.subscribe = function(name, callback, scope, subscriberData, filter){ + if(!scope){ + scope = window; + } + var handle = name + "." + this._subIndex; + var sub = { scope: scope, cb: callback, fcb: filter, data: subscriberData, sid: this._subIndex++, hdl: handle }; + var path = name.split("."); + this._subscribe(this._subscriptions, path, 0, sub); + return handle; + }; + + h.publish = function(name, message){ + var path = name.split("."); + this._pubDepth++; + this._publish(this._subscriptions, path, 0, name, message); + this._pubDepth--; + if((this._cleanup.length > 0) && (this._pubDepth == 0)){ + for(var i = 0; i < this._cleanup.length; i++){ + this.unsubscribe(this._cleanup[i].hdl); + } + delete(this._cleanup); + this._cleanup = []; + } + }; + + h.unsubscribe = function(sub){ + var path = sub.split("."); + var sid = path.pop(); + this._unsubscribe(this._subscriptions, path, 0, sid); + }; + + h._subscribe = function(tree, path, index, sub){ + var token = path[index]; + if(index == path.length){ + tree.s.push(sub); + }else{ + if(typeof tree.c == "undefined"){ + tree.c = {}; + } + if(typeof tree.c[token] == "undefined"){ + tree.c[token] = { c: {}, s: [] }; + this._subscribe(tree.c[token], path, index + 1, sub); + }else{ + this._subscribe(tree.c[token], path, index + 1, sub); + } + } + }; + + h._publish = function(tree, path, index, name, msg){ + if(typeof tree != "undefined"){ + var node; + if(index == path.length){ + node = tree; + }else{ + this._publish(tree.c[path[index]], path, index + 1, name, msg); + this._publish(tree.c["*"], path, index + 1, name, msg); + node = tree.c["**"]; + } + if(typeof node != "undefined"){ + var callbacks = node.s; + var max = callbacks.length; + for(var i = 0; i < max; i++){ + if(callbacks[i].cb){ + var sc = callbacks[i].scope; + var cb = callbacks[i].cb; + var fcb = callbacks[i].fcb; + var d = callbacks[i].data; + if(typeof cb == "string"){ + // get a function object + cb = sc[cb]; + } + if(typeof fcb == "string"){ + // get a function object + fcb = sc[fcb]; + } + if((!fcb) || + (fcb.call(sc, name, msg, d))){ + cb.call(sc, name, msg, d); + } + } + } + } + } + }; + + h._unsubscribe = function(tree, path, index, sid){ + if(typeof tree != "undefined"){ + if(index < path.length){ + var childNode = tree.c[path[index]]; + this._unsubscribe(childNode, path, index + 1, sid); + if(childNode.s.length == 0){ + for(var x in childNode.c) + return; + delete tree.c[path[index]]; + } + return; + } + else{ + var callbacks = tree.s; + var max = callbacks.length; + for(var i = 0; i < max; i++) + if(sid == callbacks[i].sid){ + if(this._pubDepth > 0){ + callbacks[i].cb = null; + this._cleanup.push(callbacks[i]); + } + else + callbacks.splice(i, 1); + return; + } + } + } + }; + // The following function is provided for automatic testing purposes. + // It is not expected to be deployed in run-time OpenAjax Hub implementations. + h.reinit = function() + { + for (var lib in OpenAjax.hub.libraries) { + delete OpenAjax.hub.libraries[lib]; + } + OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "0.6", {}); + + delete OpenAjax._subscriptions; + OpenAjax._subscriptions = {c:{},s:[]}; + delete OpenAjax._cleanup; + OpenAjax._cleanup = []; + OpenAjax._subIndex = 0; + OpenAjax._pubDepth = 0; + } + }; + // Register the OpenAjax Hub itself as a library. + OpenAjax.hub.registerLibrary("OpenAjax", "http://openajax.org/hub", "0.6", {}); + +} diff --git a/js/dojo-release-1.7.2-src/dojo/Stateful.js b/js/dojo-release-1.7.2-src/dojo/Stateful.js new file mode 100644 index 0000000..eb5afa9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/Stateful.js @@ -0,0 +1,139 @@ +define(["./_base/kernel", "./_base/declare", "./_base/lang", "./_base/array"], function(dojo, declare, lang, array) { + // module: + // dojo/Stateful + // summary: + // TODOC + +return dojo.declare("dojo.Stateful", null, { + // summary: + // Base class for objects that provide named properties with optional getter/setter + // control and the ability to watch for property changes + // example: + // | var obj = new dojo.Stateful(); + // | obj.watch("foo", function(){ + // | console.log("foo changed to " + this.get("foo")); + // | }); + // | obj.set("foo","bar"); + postscript: function(mixin){ + if(mixin){ + lang.mixin(this, mixin); + } + }, + + get: function(/*String*/name){ + // summary: + // Get a property on a Stateful instance. + // name: + // The property to get. + // returns: + // The property value on this Stateful instance. + // description: + // Get a named property on a Stateful object. The property may + // potentially be retrieved via a getter method in subclasses. In the base class + // this just retrieves the object's property. + // For example: + // | stateful = new dojo.Stateful({foo: 3}); + // | stateful.get("foo") // returns 3 + // | stateful.foo // returns 3 + + return this[name]; //Any + }, + set: function(/*String*/name, /*Object*/value){ + // summary: + // Set a property on a Stateful instance + // name: + // The property to set. + // value: + // The value to set in the property. + // returns: + // The function returns this dojo.Stateful instance. + // description: + // Sets named properties on a stateful object and notifies any watchers of + // the property. A programmatic setter may be defined in subclasses. + // For example: + // | stateful = new dojo.Stateful(); + // | stateful.watch(function(name, oldValue, value){ + // | // this will be called on the set below + // | } + // | stateful.set(foo, 5); + // + // set() may also be called with a hash of name/value pairs, ex: + // | myObj.set({ + // | foo: "Howdy", + // | bar: 3 + // | }) + // This is equivalent to calling set(foo, "Howdy") and set(bar, 3) + if(typeof name === "object"){ + for(var x in name){ + this.set(x, name[x]); + } + return this; + } + var oldValue = this[name]; + this[name] = value; + if(this._watchCallbacks){ + this._watchCallbacks(name, oldValue, value); + } + return this; //dojo.Stateful + }, + watch: function(/*String?*/name, /*Function*/callback){ + // summary: + // Watches a property for changes + // name: + // Indicates the property to watch. This is optional (the callback may be the + // only parameter), and if omitted, all the properties will be watched + // returns: + // An object handle for the watch. The unwatch method of this object + // can be used to discontinue watching this property: + // | var watchHandle = obj.watch("foo", callback); + // | watchHandle.unwatch(); // callback won't be called now + // callback: + // The function to execute when the property changes. This will be called after + // the property has been changed. The callback will be called with the |this| + // set to the instance, the first argument as the name of the property, the + // second argument as the old value and the third argument as the new value. + + var callbacks = this._watchCallbacks; + if(!callbacks){ + var self = this; + callbacks = this._watchCallbacks = function(name, oldValue, value, ignoreCatchall){ + var notify = function(propertyCallbacks){ + if(propertyCallbacks){ + propertyCallbacks = propertyCallbacks.slice(); + for(var i = 0, l = propertyCallbacks.length; i < l; i++){ + try{ + propertyCallbacks[i].call(self, name, oldValue, value); + }catch(e){ + console.error(e); + } + } + } + }; + notify(callbacks['_' + name]); + if(!ignoreCatchall){ + notify(callbacks["*"]); // the catch-all + } + }; // we use a function instead of an object so it will be ignored by JSON conversion + } + if(!callback && typeof name === "function"){ + callback = name; + name = "*"; + }else{ + // prepend with dash to prevent name conflicts with function (like "name" property) + name = '_' + name; + } + var propertyCallbacks = callbacks[name]; + if(typeof propertyCallbacks !== "object"){ + propertyCallbacks = callbacks[name] = []; + } + propertyCallbacks.push(callback); + return { + unwatch: function(){ + propertyCallbacks.splice(array.indexOf(propertyCallbacks, callback), 1); + } + }; //Object + } + +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/Color.js b/js/dojo-release-1.7.2-src/dojo/_base/Color.js new file mode 100644 index 0000000..d20db59 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/Color.js @@ -0,0 +1,220 @@ +define(["./kernel", "./lang", "./array", "./config"], function(dojo, lang, ArrayUtil, config){ + + var Color = dojo.Color = function(/*Array|String|Object*/ color){ + // summary: + // Takes a named string, hex string, array of rgb or rgba values, + // an object with r, g, b, and a properties, or another `dojo.Color` object + // and creates a new Color instance to work from. + // + // example: + // Work with a Color instance: + // | var c = new dojo.Color(); + // | c.setColor([0,0,0]); // black + // | var hex = c.toHex(); // #000000 + // + // example: + // Work with a node's color: + // | var color = dojo.style("someNode", "backgroundColor"); + // | var n = new dojo.Color(color); + // | // adjust the color some + // | n.r *= .5; + // | console.log(n.toString()); // rgb(128, 255, 255); + if(color){ this.setColor(color); } + }; + + /*===== + lang.mixin(dojo.Color,{ + named:{ + // summary: Dictionary list of all CSS named colors, by name. Values are 3-item arrays with corresponding RG and B values. + } + }); + =====*/ + + // FIXME: + // there's got to be a more space-efficient way to encode or discover + // these!! Use hex? + Color.named = { + "black": [0,0,0], + "silver": [192,192,192], + "gray": [128,128,128], + "white": [255,255,255], + "maroon": [128,0,0], + "red": [255,0,0], + "purple": [128,0,128], + "fuchsia":[255,0,255], + "green": [0,128,0], + "lime": [0,255,0], + "olive": [128,128,0], + "yellow": [255,255,0], + "navy": [0,0,128], + "blue": [0,0,255], + "teal": [0,128,128], + "aqua": [0,255,255], + "transparent": config.transparentColor || [0,0,0,0] + }; + + lang.extend(Color, { + r: 255, g: 255, b: 255, a: 1, + _set: function(r, g, b, a){ + var t = this; t.r = r; t.g = g; t.b = b; t.a = a; + }, + setColor: function(/*Array|String|Object*/ color){ + // summary: + // Takes a named string, hex string, array of rgb or rgba values, + // an object with r, g, b, and a properties, or another `dojo.Color` object + // and sets this color instance to that value. + // + // example: + // | var c = new dojo.Color(); // no color + // | c.setColor("#ededed"); // greyish + if(lang.isString(color)){ + Color.fromString(color, this); + }else if(lang.isArray(color)){ + Color.fromArray(color, this); + }else{ + this._set(color.r, color.g, color.b, color.a); + if(!(color instanceof Color)){ this.sanitize(); } + } + return this; // dojo.Color + }, + sanitize: function(){ + // summary: + // Ensures the object has correct attributes + // description: + // the default implementation does nothing, include dojo.colors to + // augment it with real checks + return this; // dojo.Color + }, + toRgb: function(){ + // summary: + // Returns 3 component array of rgb values + // example: + // | var c = new dojo.Color("#000000"); + // | console.log(c.toRgb()); // [0,0,0] + var t = this; + return [t.r, t.g, t.b]; // Array + }, + toRgba: function(){ + // summary: + // Returns a 4 component array of rgba values from the color + // represented by this object. + var t = this; + return [t.r, t.g, t.b, t.a]; // Array + }, + toHex: function(){ + // summary: + // Returns a CSS color string in hexadecimal representation + // example: + // | console.log(new dojo.Color([0,0,0]).toHex()); // #000000 + var arr = ArrayUtil.map(["r", "g", "b"], function(x){ + var s = this[x].toString(16); + return s.length < 2 ? "0" + s : s; + }, this); + return "#" + arr.join(""); // String + }, + toCss: function(/*Boolean?*/ includeAlpha){ + // summary: + // Returns a css color string in rgb(a) representation + // example: + // | var c = new dojo.Color("#FFF").toCss(); + // | console.log(c); // rgb('255','255','255') + var t = this, rgb = t.r + ", " + t.g + ", " + t.b; + return (includeAlpha ? "rgba(" + rgb + ", " + t.a : "rgb(" + rgb) + ")"; // String + }, + toString: function(){ + // summary: + // Returns a visual representation of the color + return this.toCss(true); // String + } + }); + + Color.blendColors = dojo.blendColors = function( + /*dojo.Color*/ start, + /*dojo.Color*/ end, + /*Number*/ weight, + /*dojo.Color?*/ obj + ){ + // summary: + // Blend colors end and start with weight from 0 to 1, 0.5 being a 50/50 blend, + // can reuse a previously allocated dojo.Color object for the result + var t = obj || new Color(); + ArrayUtil.forEach(["r", "g", "b", "a"], function(x){ + t[x] = start[x] + (end[x] - start[x]) * weight; + if(x != "a"){ t[x] = Math.round(t[x]); } + }); + return t.sanitize(); // dojo.Color + }; + + Color.fromRgb = dojo.colorFromRgb = function(/*String*/ color, /*dojo.Color?*/ obj){ + // summary: + // Returns a `dojo.Color` instance from a string of the form + // "rgb(...)" or "rgba(...)". Optionally accepts a `dojo.Color` + // object to update with the parsed value and return instead of + // creating a new object. + // returns: + // A dojo.Color object. If obj is passed, it will be the return value. + var m = color.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/); + return m && Color.fromArray(m[1].split(/\s*,\s*/), obj); // dojo.Color + }; + + Color.fromHex = dojo.colorFromHex = function(/*String*/ color, /*dojo.Color?*/ obj){ + // summary: + // Converts a hex string with a '#' prefix to a color object. + // Supports 12-bit #rgb shorthand. Optionally accepts a + // `dojo.Color` object to update with the parsed value. + // + // returns: + // A dojo.Color object. If obj is passed, it will be the return value. + // + // example: + // | var thing = dojo.colorFromHex("#ededed"); // grey, longhand + // + // example: + // | var thing = dojo.colorFromHex("#000"); // black, shorthand + var t = obj || new Color(), + bits = (color.length == 4) ? 4 : 8, + mask = (1 << bits) - 1; + color = Number("0x" + color.substr(1)); + if(isNaN(color)){ + return null; // dojo.Color + } + ArrayUtil.forEach(["b", "g", "r"], function(x){ + var c = color & mask; + color >>= bits; + t[x] = bits == 4 ? 17 * c : c; + }); + t.a = 1; + return t; // dojo.Color + }; + + Color.fromArray = dojo.colorFromArray = function(/*Array*/ a, /*dojo.Color?*/ obj){ + // summary: + // Builds a `dojo.Color` from a 3 or 4 element array, mapping each + // element in sequence to the rgb(a) values of the color. + // example: + // | var myColor = dojo.colorFromArray([237,237,237,0.5]); // grey, 50% alpha + // returns: + // A dojo.Color object. If obj is passed, it will be the return value. + var t = obj || new Color(); + t._set(Number(a[0]), Number(a[1]), Number(a[2]), Number(a[3])); + if(isNaN(t.a)){ t.a = 1; } + return t.sanitize(); // dojo.Color + }; + + Color.fromString = dojo.colorFromString = function(/*String*/ str, /*dojo.Color?*/ obj){ + // summary: + // Parses `str` for a color value. Accepts hex, rgb, and rgba + // style color values. + // description: + // Acceptable input values for str may include arrays of any form + // accepted by dojo.colorFromArray, hex strings such as "#aaaaaa", or + // rgb or rgba strings such as "rgb(133, 200, 16)" or "rgba(10, 10, + // 10, 50)" + // returns: + // A dojo.Color object. If obj is passed, it will be the return value. + var a = Color.named[str]; + return a && Color.fromArray(a, obj) || Color.fromRgb(str, obj) || Color.fromHex(str, obj); // dojo.Color + }; + + return Color; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/Deferred.js b/js/dojo-release-1.7.2-src/dojo/_base/Deferred.js new file mode 100644 index 0000000..81a074e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/Deferred.js @@ -0,0 +1,366 @@ +define(["./kernel", "./lang"], function(dojo, lang){ + // module: + // dojo/_base/Deferred + // summary: + // This module defines dojo.Deferred. + + var mutator = function(){}; + var freeze = Object.freeze || function(){}; + // A deferred provides an API for creating and resolving a promise. + dojo.Deferred = function(/*Function?*/ canceller){ + // summary: + // Deferreds provide a generic means for encapsulating an asynchronous + // operation and notifying users of the completion and result of the operation. + // description: + // The dojo.Deferred API is based on the concept of promises that provide a + // generic interface into the eventual completion of an asynchronous action. + // The motivation for promises fundamentally is about creating a + // separation of concerns that allows one to achieve the same type of + // call patterns and logical data flow in asynchronous code as can be + // achieved in synchronous code. Promises allows one + // to be able to call a function purely with arguments needed for + // execution, without conflating the call with concerns of whether it is + // sync or async. One shouldn't need to alter a call's arguments if the + // implementation switches from sync to async (or vice versa). By having + // async functions return promises, the concerns of making the call are + // separated from the concerns of asynchronous interaction (which are + // handled by the promise). + // + // The dojo.Deferred is a type of promise that provides methods for fulfilling the + // promise with a successful result or an error. The most important method for + // working with Dojo's promises is the then() method, which follows the + // CommonJS proposed promise API. An example of using a Dojo promise: + // + // | var resultingPromise = someAsyncOperation.then(function(result){ + // | ... handle result ... + // | }, + // | function(error){ + // | ... handle error ... + // | }); + // + // The .then() call returns a new promise that represents the result of the + // execution of the callback. The callbacks will never affect the original promises value. + // + // The dojo.Deferred instances also provide the following functions for backwards compatibility: + // + // * addCallback(handler) + // * addErrback(handler) + // * callback(result) + // * errback(result) + // + // Callbacks are allowed to return promises themselves, so + // you can build complicated sequences of events with ease. + // + // The creator of the Deferred may specify a canceller. The canceller + // is a function that will be called if Deferred.cancel is called + // before the Deferred fires. You can use this to implement clean + // aborting of an XMLHttpRequest, etc. Note that cancel will fire the + // deferred with a CancelledError (unless your canceller returns + // another kind of error), so the errbacks should be prepared to + // handle that error for cancellable Deferreds. + // example: + // | var deferred = new dojo.Deferred(); + // | setTimeout(function(){ deferred.callback({success: true}); }, 1000); + // | return deferred; + // example: + // Deferred objects are often used when making code asynchronous. It + // may be easiest to write functions in a synchronous manner and then + // split code using a deferred to trigger a response to a long-lived + // operation. For example, instead of register a callback function to + // denote when a rendering operation completes, the function can + // simply return a deferred: + // + // | // callback style: + // | function renderLotsOfData(data, callback){ + // | var success = false + // | try{ + // | for(var x in data){ + // | renderDataitem(data[x]); + // | } + // | success = true; + // | }catch(e){ } + // | if(callback){ + // | callback(success); + // | } + // | } + // + // | // using callback style + // | renderLotsOfData(someDataObj, function(success){ + // | // handles success or failure + // | if(!success){ + // | promptUserToRecover(); + // | } + // | }); + // | // NOTE: no way to add another callback here!! + // example: + // Using a Deferred doesn't simplify the sending code any, but it + // provides a standard interface for callers and senders alike, + // providing both with a simple way to service multiple callbacks for + // an operation and freeing both sides from worrying about details + // such as "did this get called already?". With Deferreds, new + // callbacks can be added at any time. + // + // | // Deferred style: + // | function renderLotsOfData(data){ + // | var d = new dojo.Deferred(); + // | try{ + // | for(var x in data){ + // | renderDataitem(data[x]); + // | } + // | d.callback(true); + // | }catch(e){ + // | d.errback(new Error("rendering failed")); + // | } + // | return d; + // | } + // + // | // using Deferred style + // | renderLotsOfData(someDataObj).then(null, function(){ + // | promptUserToRecover(); + // | }); + // | // NOTE: addErrback and addCallback both return the Deferred + // | // again, so we could chain adding callbacks or save the + // | // deferred for later should we need to be notified again. + // example: + // In this example, renderLotsOfData is synchronous and so both + // versions are pretty artificial. Putting the data display on a + // timeout helps show why Deferreds rock: + // + // | // Deferred style and async func + // | function renderLotsOfData(data){ + // | var d = new dojo.Deferred(); + // | setTimeout(function(){ + // | try{ + // | for(var x in data){ + // | renderDataitem(data[x]); + // | } + // | d.callback(true); + // | }catch(e){ + // | d.errback(new Error("rendering failed")); + // | } + // | }, 100); + // | return d; + // | } + // + // | // using Deferred style + // | renderLotsOfData(someDataObj).then(null, function(){ + // | promptUserToRecover(); + // | }); + // + // Note that the caller doesn't have to change his code at all to + // handle the asynchronous case. + + var result, finished, isError, head, nextListener; + var promise = (this.promise = {}); + + function complete(value){ + if(finished){ + throw new Error("This deferred has already been resolved"); + } + result = value; + finished = true; + notify(); + } + function notify(){ + var mutated; + while(!mutated && nextListener){ + var listener = nextListener; + nextListener = nextListener.next; + if((mutated = (listener.progress == mutator))){ // assignment and check + finished = false; + } + var func = (isError ? listener.error : listener.resolved); + if(func){ + try{ + var newResult = func(result); + if (newResult && typeof newResult.then === "function"){ + newResult.then(lang.hitch(listener.deferred, "resolve"), lang.hitch(listener.deferred, "reject"), lang.hitch(listener.deferred, "progress")); + continue; + } + var unchanged = mutated && newResult === undefined; + if(mutated && !unchanged){ + isError = newResult instanceof Error; + } + listener.deferred[unchanged && isError ? "reject" : "resolve"](unchanged ? result : newResult); + }catch(e){ + listener.deferred.reject(e); + } + }else{ + if(isError){ + listener.deferred.reject(result); + }else{ + listener.deferred.resolve(result); + } + } + } + } + // calling resolve will resolve the promise + this.resolve = this.callback = function(value){ + // summary: + // Fulfills the Deferred instance successfully with the provide value + this.fired = 0; + this.results = [value, null]; + complete(value); + }; + + + // calling error will indicate that the promise failed + this.reject = this.errback = function(error){ + // summary: + // Fulfills the Deferred instance as an error with the provided error + isError = true; + this.fired = 1; + complete(error); + this.results = [null, error]; + if(!error || error.log !== false){ + (dojo.config.deferredOnError || function(x){ console.error(x); })(error); + } + }; + // call progress to provide updates on the progress on the completion of the promise + this.progress = function(update){ + // summary: + // Send progress events to all listeners + var listener = nextListener; + while(listener){ + var progress = listener.progress; + progress && progress(update); + listener = listener.next; + } + }; + this.addCallbacks = function(callback, errback){ + // summary: + // Adds callback and error callback for this deferred instance. + // callback: Function? + // The callback attached to this deferred object. + // errback: Function? + // The error callback attached to this deferred object. + // returns: + // Returns this deferred object. + this.then(callback, errback, mutator); + return this; // dojo.Deferred + }; + // provide the implementation of the promise + promise.then = this.then = function(/*Function?*/resolvedCallback, /*Function?*/errorCallback, /*Function?*/progressCallback){ + // summary: + // Adds a fulfilledHandler, errorHandler, and progressHandler to be called for + // completion of a promise. The fulfilledHandler is called when the promise + // is fulfilled. The errorHandler is called when a promise fails. The + // progressHandler is called for progress events. All arguments are optional + // and non-function values are ignored. The progressHandler is not only an + // optional argument, but progress events are purely optional. Promise + // providers are not required to ever create progress events. + // + // This function will return a new promise that is fulfilled when the given + // fulfilledHandler or errorHandler callback is finished. This allows promise + // operations to be chained together. The value returned from the callback + // handler is the fulfillment value for the returned promise. If the callback + // throws an error, the returned promise will be moved to failed state. + // + // returns: + // Returns a new promise that represents the result of the + // execution of the callback. The callbacks will never affect the original promises value. + // example: + // An example of using a CommonJS compliant promise: + // | asyncComputeTheAnswerToEverything(). + // | then(addTwo). + // | then(printResult, onError); + // | >44 + // + var returnDeferred = progressCallback == mutator ? this : new dojo.Deferred(promise.cancel); + var listener = { + resolved: resolvedCallback, + error: errorCallback, + progress: progressCallback, + deferred: returnDeferred + }; + if(nextListener){ + head = head.next = listener; + } + else{ + nextListener = head = listener; + } + if(finished){ + notify(); + } + return returnDeferred.promise; // Promise + }; + var deferred = this; + promise.cancel = this.cancel = function (){ + // summary: + // Cancels the asynchronous operation + if(!finished){ + var error = canceller && canceller(deferred); + if(!finished){ + if (!(error instanceof Error)){ + error = new Error(error); + } + error.log = false; + deferred.reject(error); + } + } + }; + freeze(promise); + }; + lang.extend(dojo.Deferred, { + addCallback: function (/*Function*/ callback){ + // summary: + // Adds successful callback for this deferred instance. + // returns: + // Returns this deferred object. + return this.addCallbacks(lang.hitch.apply(dojo, arguments)); // dojo.Deferred + }, + + addErrback: function (/*Function*/ errback){ + // summary: + // Adds error callback for this deferred instance. + // returns: + // Returns this deferred object. + return this.addCallbacks(null, lang.hitch.apply(dojo, arguments)); // dojo.Deferred + }, + + addBoth: function (/*Function*/ callback){ + // summary: + // Add handler as both successful callback and error callback for this deferred instance. + // returns: + // Returns this deferred object. + var enclosed = lang.hitch.apply(dojo, arguments); + return this.addCallbacks(enclosed, enclosed); // dojo.Deferred + }, + fired: -1 + }); + + dojo.Deferred.when = dojo.when = function(promiseOrValue, /*Function?*/ callback, /*Function?*/ errback, /*Function?*/ progressHandler){ + // summary: + // This provides normalization between normal synchronous values and + // asynchronous promises, so you can interact with them in a common way + // returns: + // Returns a new promise that represents the result of the execution of callback + // when parameter "promiseOrValue" is promise. + // Returns the execution result of callback when parameter "promiseOrValue" is value. + // example: + // | function printFirstAndLast(items){ + // | dojo.when(findFirst(items), console.log); + // | dojo.when(findLast(items), console.log); + // | } + // | function findFirst(items){ + // | return dojo.when(items, function(items){ + // | return items[0]; + // | }); + // | } + // | function findLast(items){ + // | return dojo.when(items, function(items){ + // | return items[items.length - 1]; + // | }); + // | } + // And now all three of his functions can be used sync or async. + // | printFirstAndLast([1,2,3,4]) will work just as well as + // | printFirstAndLast(dojo.xhrGet(...)); + + if(promiseOrValue && typeof promiseOrValue.then === "function"){ + return promiseOrValue.then(callback, errback, progressHandler); + } + return callback ? callback(promiseOrValue) : promiseOrValue; // Promise + }; + + return dojo.Deferred; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/NodeList.js b/js/dojo-release-1.7.2-src/dojo/_base/NodeList.js new file mode 100644 index 0000000..abf8219 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/NodeList.js @@ -0,0 +1,100 @@ +define(["./kernel", "../query", "./array", "./html", "../NodeList-dom"], function(dojo, query, array){ + // module: + // dojo/_base/NodeList + // summary: + // This module defines dojo.NodeList. + +var NodeList = query.NodeList; + + /*===== + dojo.extend(dojo.NodeList, { + connect: function(methodName, objOrFunc, funcName){ + // summary: + // attach event handlers to every item of the NodeList. Uses dojo.connect() + // so event properties are normalized + // methodName: String + // the name of the method to attach to. For DOM events, this should be + // the lower-case name of the event + // objOrFunc: Object|Function|String + // if 2 arguments are passed (methodName, objOrFunc), objOrFunc should + // reference a function or be the name of the function in the global + // namespace to attach. If 3 arguments are provided + // (methodName, objOrFunc, funcName), objOrFunc must be the scope to + // locate the bound function in + // funcName: String? + // optional. A string naming the function in objOrFunc to bind to the + // event. May also be a function reference. + // example: + // add an onclick handler to every button on the page + // | dojo.query("div:nth-child(odd)").connect("onclick", function(e){ + // | console.log("clicked!"); + // | }); + // example: + // attach foo.bar() to every odd div's onmouseover + // | dojo.query("div:nth-child(odd)").connect("onmouseover", foo, "bar"); + }, + coords: function(){ + // summary: + // Deprecated: Use position() for border-box x/y/w/h + // or marginBox() for margin-box w/h/l/t. + // Returns the box objects of all elements in a node list as + // an Array (*not* a NodeList). Acts like `dojo.coords`, though assumes + // the node passed is each node in this list. + + return dojo.map(this, dojo.coords); // Array + } + }); + + var NodeList = dojo.NodeList; + =====*/ + var nlp = NodeList.prototype; + + // don't bind early to dojo.connect since we no longer explicitly depend on it + nlp.connect = NodeList._adaptAsForEach(function(){ + return dojo.connect.apply(this, arguments); + }); + nlp.coords = NodeList._adaptAsMap(dojo.coords); + + NodeList.events = [ + // summary: + // list of all DOM events used in NodeList + "blur", "focus", "change", "click", "error", "keydown", "keypress", + "keyup", "load", "mousedown", "mouseenter", "mouseleave", "mousemove", + "mouseout", "mouseover", "mouseup", "submit" + ]; + + // FIXME: pseudo-doc the above automatically generated on-event functions + + // syntactic sugar for DOM events + array.forEach(NodeList.events, function(evt){ + var _oe = "on" + evt; + nlp[_oe] = function(a, b){ + return this.connect(_oe, a, b); + }; + // FIXME: should these events trigger publishes? + /* + return (a ? this.connect(_oe, a, b) : + this.forEach(function(n){ + // FIXME: + // listeners get buried by + // addEventListener and can't be dug back + // out to be triggered externally. + // see: + // http://developer.mozilla.org/en/docs/DOM:element + + console.log(n, evt, _oe); + + // FIXME: need synthetic event support! + var _e = { target: n, faux: true, type: evt }; + // dojo._event_listener._synthesizeEvent({}, { target: n, faux: true, type: evt }); + try{ n[evt](_e); }catch(e){ console.log(e); } + try{ n[_oe](_e); }catch(e){ console.log(e); } + }) + ); + */ + } + ); + + dojo.NodeList = NodeList; + return dojo.NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/array.js b/js/dojo-release-1.7.2-src/dojo/_base/array.js new file mode 100644 index 0000000..dc27094 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/array.js @@ -0,0 +1,343 @@ +define(["./kernel", "../has", "./lang"], function(dojo, has, lang){ + // module: + // dojo/_base/array + // summary: + // This module defines the Javascript v1.6 array extensions. + + /*===== + dojo.indexOf = function(arr, value, fromIndex, findLast){ + // summary: + // locates the first index of the provided value in the + // passed array. If the value is not found, -1 is returned. + // description: + // This method corresponds to the JavaScript 1.6 Array.indexOf method, with one difference: when + // run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript + // 1.6's indexOf skips the holes in the sparse array. + // For details on this method, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/indexOf + // arr: Array + // value: Object + // fromIndex: Integer? + // findLast: Boolean? + // returns: Number + }; + dojo.lastIndexOf = function(arr, value, fromIndex){ + // summary: + // locates the last index of the provided value in the passed + // array. If the value is not found, -1 is returned. + // description: + // This method corresponds to the JavaScript 1.6 Array.lastIndexOf method, with one difference: when + // run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript + // 1.6's lastIndexOf skips the holes in the sparse array. + // For details on this method, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/lastIndexOf + // arr: Array, + // value: Object, + // fromIndex: Integer? + // returns: Number + }; + dojo.forEach = function(arr, callback, thisObject){ + // summary: + // for every item in arr, callback is invoked. Return values are ignored. + // If you want to break out of the loop, consider using dojo.every() or dojo.some(). + // forEach does not allow breaking out of the loop over the items in arr. + // arr: + // the array to iterate over. If a string, operates on individual characters. + // callback: + // a function is invoked with three arguments: item, index, and array + // thisObject: + // may be used to scope the call to callback + // description: + // This function corresponds to the JavaScript 1.6 Array.forEach() method, with one difference: when + // run over sparse arrays, this implementation passes the "holes" in the sparse array to + // the callback function with a value of undefined. JavaScript 1.6's forEach skips the holes in the sparse array. + // For more details, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/forEach + // example: + // | // log out all members of the array: + // | dojo.forEach( + // | [ "thinger", "blah", "howdy", 10 ], + // | function(item){ + // | console.log(item); + // | } + // | ); + // example: + // | // log out the members and their indexes + // | dojo.forEach( + // | [ "thinger", "blah", "howdy", 10 ], + // | function(item, idx, arr){ + // | console.log(item, "at index:", idx); + // | } + // | ); + // example: + // | // use a scoped object member as the callback + // | + // | var obj = { + // | prefix: "logged via obj.callback:", + // | callback: function(item){ + // | console.log(this.prefix, item); + // | } + // | }; + // | + // | // specifying the scope function executes the callback in that scope + // | dojo.forEach( + // | [ "thinger", "blah", "howdy", 10 ], + // | obj.callback, + // | obj + // | ); + // | + // | // alternately, we can accomplish the same thing with dojo.hitch() + // | dojo.forEach( + // | [ "thinger", "blah", "howdy", 10 ], + // | dojo.hitch(obj, "callback") + // | ); + // arr: Array|String + // callback: Function|String + // thisObject: Object? + }; + dojo.every = function(arr, callback, thisObject){ + // summary: + // Determines whether or not every item in arr satisfies the + // condition implemented by callback. + // arr: Array|String + // the array to iterate on. If a string, operates on individual characters. + // callback: Function|String + // a function is invoked with three arguments: item, index, + // and array and returns true if the condition is met. + // thisObject: Object? + // may be used to scope the call to callback + // returns: Boolean + // description: + // This function corresponds to the JavaScript 1.6 Array.every() method, with one difference: when + // run over sparse arrays, this implementation passes the "holes" in the sparse array to + // the callback function with a value of undefined. JavaScript 1.6's every skips the holes in the sparse array. + // For more details, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/every + // example: + // | // returns false + // | dojo.every([1, 2, 3, 4], function(item){ return item>1; }); + // example: + // | // returns true + // | dojo.every([1, 2, 3, 4], function(item){ return item>0; }); + }; + dojo.some = function(arr, callback, thisObject){ + // summary: + // Determines whether or not any item in arr satisfies the + // condition implemented by callback. + // arr: Array|String + // the array to iterate over. If a string, operates on individual characters. + // callback: Function|String + // a function is invoked with three arguments: item, index, + // and array and returns true if the condition is met. + // thisObject: Object? + // may be used to scope the call to callback + // returns: Boolean + // description: + // This function corresponds to the JavaScript 1.6 Array.some() method, with one difference: when + // run over sparse arrays, this implementation passes the "holes" in the sparse array to + // the callback function with a value of undefined. JavaScript 1.6's some skips the holes in the sparse array. + // For more details, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/some + // example: + // | // is true + // | dojo.some([1, 2, 3, 4], function(item){ return item>1; }); + // example: + // | // is false + // | dojo.some([1, 2, 3, 4], function(item){ return item<1; }); + }; + dojo.map = function(arr, callback, thisObject){ + // summary: + // applies callback to each element of arr and returns + // an Array with the results + // arr: Array|String + // the array to iterate on. If a string, operates on + // individual characters. + // callback: Function|String + // a function is invoked with three arguments, (item, index, + // array), and returns a value + // thisObject: Object? + // may be used to scope the call to callback + // returns: Array + // description: + // This function corresponds to the JavaScript 1.6 Array.map() method, with one difference: when + // run over sparse arrays, this implementation passes the "holes" in the sparse array to + // the callback function with a value of undefined. JavaScript 1.6's map skips the holes in the sparse array. + // For more details, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map + // example: + // | // returns [2, 3, 4, 5] + // | dojo.map([1, 2, 3, 4], function(item){ return item+1 }); + }; + dojo.filter = function(arr, callback, thisObject){ + // summary: + // Returns a new Array with those items from arr that match the + // condition implemented by callback. + // arr: Array + // the array to iterate over. + // callback: Function|String + // a function that is invoked with three arguments (item, + // index, array). The return of this function is expected to + // be a boolean which determines whether the passed-in item + // will be included in the returned array. + // thisObject: Object? + // may be used to scope the call to callback + // returns: Array + // description: + // This function corresponds to the JavaScript 1.6 Array.filter() method, with one difference: when + // run over sparse arrays, this implementation passes the "holes" in the sparse array to + // the callback function with a value of undefined. JavaScript 1.6's filter skips the holes in the sparse array. + // For more details, see: + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter + // example: + // | // returns [2, 3, 4] + // | dojo.filter([1, 2, 3, 4], function(item){ return item>1; }); + }; + =====*/ + + // our old simple function builder stuff + var cache = {}, u, array; // the export object + + function clearCache(){ + cache = {}; + } + + function buildFn(fn){ + return cache[fn] = new Function("item", "index", "array", fn); // Function + } + // magic snippet: if(typeof fn == "string") fn = cache[fn] || buildFn(fn); + + // every & some + + function everyOrSome(some){ + var every = !some; + return function(a, fn, o){ + var i = 0, l = a && a.length || 0, result; + if(l && typeof a == "string") a = a.split(""); + if(typeof fn == "string") fn = cache[fn] || buildFn(fn); + if(o){ + for(; i < l; ++i){ + result = !fn.call(o, a[i], i, a); + if(some ^ result){ + return !result; + } + } + }else{ + for(; i < l; ++i){ + result = !fn(a[i], i, a); + if(some ^ result){ + return !result; + } + } + } + return every; // Boolean + } + } + // var every = everyOrSome(false), some = everyOrSome(true); + + // indexOf, lastIndexOf + + function index(up){ + var delta = 1, lOver = 0, uOver = 0; + if(!up){ + delta = lOver = uOver = -1; + } + return function(a, x, from, last){ + if(last && delta > 0){ + // TODO: why do we use a non-standard signature? why do we need "last"? + return array.lastIndexOf(a, x, from); + } + var l = a && a.length || 0, end = up ? l + uOver : lOver, i; + if(from === u){ + i = up ? lOver : l + uOver; + }else{ + if(from < 0){ + i = l + from; + if(i < 0){ + i = lOver; + } + }else{ + i = from >= l ? l + uOver : from; + } + } + if(l && typeof a == "string") a = a.split(""); + for(; i != end; i += delta){ + if(a[i] == x){ + return i; // Number + } + } + return -1; // Number + } + } + // var indexOf = index(true), lastIndexOf = index(false); + + function forEach(a, fn, o){ + var i = 0, l = a && a.length || 0; + if(l && typeof a == "string") a = a.split(""); + if(typeof fn == "string") fn = cache[fn] || buildFn(fn); + if(o){ + for(; i < l; ++i){ + fn.call(o, a[i], i, a); + } + }else{ + for(; i < l; ++i){ + fn(a[i], i, a); + } + } + } + + function map(a, fn, o, Ctr){ + // TODO: why do we have a non-standard signature here? do we need "Ctr"? + var i = 0, l = a && a.length || 0, out = new (Ctr || Array)(l); + if(l && typeof a == "string") a = a.split(""); + if(typeof fn == "string") fn = cache[fn] || buildFn(fn); + if(o){ + for(; i < l; ++i){ + out[i] = fn.call(o, a[i], i, a); + } + }else{ + for(; i < l; ++i){ + out[i] = fn(a[i], i, a); + } + } + return out; // Array + } + + function filter(a, fn, o){ + // TODO: do we need "Ctr" here like in map()? + var i = 0, l = a && a.length || 0, out = [], value; + if(l && typeof a == "string") a = a.split(""); + if(typeof fn == "string") fn = cache[fn] || buildFn(fn); + if(o){ + for(; i < l; ++i){ + value = a[i]; + if(fn.call(o, value, i, a)){ + out.push(value); + } + } + }else{ + for(; i < l; ++i){ + value = a[i]; + if(fn(value, i, a)){ + out.push(value); + } + } + } + return out; // Array + } + + array = { + every: everyOrSome(false), + some: everyOrSome(true), + indexOf: index(true), + lastIndexOf: index(false), + forEach: forEach, + map: map, + filter: filter, + clearCache: clearCache + }; + + has("extend-dojo") && lang.mixin(dojo, array); + + /*===== return dojo.array; =====*/ + return array; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/browser.js b/js/dojo-release-1.7.2-src/dojo/_base/browser.js new file mode 100644 index 0000000..c367db7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/browser.js @@ -0,0 +1,21 @@ +if(require.has){ + require.has.add("config-selectorEngine", "acme"); +} +define([ + "../ready", + "./kernel", + "./connect", // until we decide if connect is going back into non-browser environments + "./unload", + "./window", + "./event", + "./html", + "./NodeList", + "../query", + "./xhr", + "./fx"], function(dojo) { + // module: + // dojo/_base/browser + // summary: + // This module causes the browser-only base modules to be loaded. + return dojo; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/config.js b/js/dojo-release-1.7.2-src/dojo/_base/config.js new file mode 100644 index 0000000..aa0cb9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/config.js @@ -0,0 +1,174 @@ +define(["../has", "require"], function(has, require){ + // module: + // dojo/_base/config + // summary: + // This module defines the user configuration during bootstrap. + // description: + // By defining user configuration as a module value, an entire configuration can be specified in a build, + // thereby eliminating the need for sniffing and or explicitly setting in the global variable dojoConfig. + // Also, when multiple instances of dojo exist in a single application, each will necessarily be located + // at an unique absolute module identifier as given by the package configuration. Implementing configuration + // as a module allows for specifying unique, per-instance configurations. + // example: + // Create a second instance of dojo with a different, instance-uniqe configuration (assume the loader and + // dojo.js are already loaded). + // | // specify a configuration that creates a new instance of dojo at the absolute module identifier "myDojo" + // | require({ + // | packages:[{ + // | name:"myDojo", + // | location:".", //assume baseUrl points to dojo.js + // | }] + // | }); + // | + // | // specify a configuration for the myDojo instance + // | define("myDojo/config", { + // | // normal configuration variables go here, e.g., + // | locale:"fr-ca" + // | }); + // | + // | // load and use the new instance of dojo + // | require(["myDojo"], function(dojo) { + // | // dojo is the new instance of dojo + // | // use as required + // | }); + + var result = {}; + if(has("dojo-config-api")){ + // must be the dojo loader; take a shallow copy of require.rawConfig + var src = require.rawConfig, p; + for(p in src){ + result[p] = src[p]; + } + }else{ + var adviseHas = function(featureSet, prefix, booting){ + for(p in featureSet){ + p!="has" && has.add(prefix + p, featureSet[p], 0, booting); + } + }; + result = has("dojo-loader") ? + // must be a built version of the dojo loader; all config stuffed in require.rawConfig + require.rawConfig : + // a foreign loader + this.dojoConfig || this.djConfig || {}; + adviseHas(result, "config", 1); + adviseHas(result.has, "", 1); + } + return result; + +/*===== +// note: +// 'dojoConfig' does not exist under 'dojo.*' so that it can be set before the +// 'dojo' variable exists. +// note: +// Setting any of these variables *after* the library has loaded does +// nothing at all. + +// FIXME: can we document these on dojo.config object and explain they must be set via djConfig/dojoConfig global prior to loading dojo.js + +dojoConfig = { + // summary: + // Application code can set the global 'dojoConfig' prior to loading + // the library to control certain global settings for how dojo works. + // + // isDebug: Boolean + // Defaults to `false`. If set to `true`, ensures that Dojo provides + // extended debugging feedback via Firebug. If Firebug is not available + // on your platform, setting `isDebug` to `true` will force Dojo to + // pull in (and display) the version of Firebug Lite which is + // integrated into the Dojo distribution, thereby always providing a + // debugging/logging console when `isDebug` is enabled. Note that + // Firebug's `console.*` methods are ALWAYS defined by Dojo. If + // `isDebug` is false and you are on a platform without Firebug, these + // methods will be defined as no-ops. + isDebug: false, + // locale: String + // The locale to assume for loading localized resources in this page, + // specified according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt). + // Must be specified entirely in lowercase, e.g. `en-us` and `zh-cn`. + // See the documentation for `dojo.i18n` and `dojo.requireLocalization` + // for details on loading localized resources. If no locale is specified, + // Dojo assumes the locale of the user agent, according to `navigator.userLanguage` + // or `navigator.language` properties. + locale: undefined, + // extraLocale: Array + // No default value. Specifies additional locales whose + // resources should also be loaded alongside the default locale when + // calls to `dojo.requireLocalization()` are processed. + extraLocale: undefined, + // baseUrl: String + // The directory in which `dojo.js` is located. Under normal + // conditions, Dojo auto-detects the correct location from which it + // was loaded. You may need to manually configure `baseUrl` in cases + // where you have renamed `dojo.js` or in which `` tags confuse + // some browsers (e.g. IE 6). The variable `dojo.baseUrl` is assigned + // either the value of `djConfig.baseUrl` if one is provided or the + // auto-detected root if not. Other modules are located relative to + // this path. The path should end in a slash. + baseUrl: undefined, + // modulePaths: Object + // A map of module names to paths relative to `dojo.baseUrl`. The + // key/value pairs correspond directly to the arguments which + // `dojo.registerModulePath` accepts. Specifiying + // `djConfig.modulePaths = { "foo": "../../bar" }` is the equivalent + // of calling `dojo.registerModulePath("foo", "../../bar");`. Multiple + // modules may be configured via `djConfig.modulePaths`. + modulePaths: {}, + // afterOnLoad: Boolean + // Indicates Dojo was added to the page after the page load. In this case + // Dojo will not wait for the page DOMContentLoad/load events and fire + // its dojo.addOnLoad callbacks after making sure all outstanding + // dojo.required modules have loaded. Only works with a built dojo.js, + // it does not work the dojo.js directly from source control. + afterOnLoad: false, + // addOnLoad: Function or Array + // Adds a callback via dojo.addOnLoad. Useful when Dojo is added after + // the page loads and djConfig.afterOnLoad is true. Supports the same + // arguments as dojo.addOnLoad. When using a function reference, use + // `djConfig.addOnLoad = function(){};`. For object with function name use + // `djConfig.addOnLoad = [myObject, "functionName"];` and for object with + // function reference use + // `djConfig.addOnLoad = [myObject, function(){}];` + addOnLoad: null, + // require: Array + // An array of module names to be loaded immediately after dojo.js has been included + // in a page. + require: [], + // defaultDuration: Array + // Default duration, in milliseconds, for wipe and fade animations within dijits. + // Assigned to dijit.defaultDuration. + defaultDuration: 200, + // dojoBlankHtmlUrl: String + // Used by some modules to configure an empty iframe. Used by dojo.io.iframe and + // dojo.back, and dijit popup support in IE where an iframe is needed to make sure native + // controls do not bleed through the popups. Normally this configuration variable + // does not need to be set, except when using cross-domain/CDN Dojo builds. + // Save dojo/resources/blank.html to your domain and set `djConfig.dojoBlankHtmlUrl` + // to the path on your domain your copy of blank.html. + dojoBlankHtmlUrl: undefined, + // ioPublish: Boolean? + // Set this to true to enable publishing of topics for the different phases of + // IO operations. Publishing is done via dojo.publish. See dojo.__IoPublish for a list + // of topics that are published. + ioPublish: false, + // useCustomLogger: Anything? + // If set to a value that evaluates to true such as a string or array and + // isDebug is true and Firebug is not available or running, then it bypasses + // the creation of Firebug Lite allowing you to define your own console object. + useCustomLogger: undefined, + // transparentColor: Array + // Array containing the r, g, b components used as transparent color in dojo.Color; + // if undefined, [255,255,255] (white) will be used. + transparentColor: undefined, + // skipIeDomLoaded: Boolean + // For IE only, skip the DOMContentLoaded hack used. Sometimes it can cause an Operation + // Aborted error if the rest of the page triggers script defers before the DOM is ready. + // If this is config value is set to true, then dojo.addOnLoad callbacks will not be + // triggered until the page load event, which is after images and iframes load. If you + // want to trigger the callbacks sooner, you can put a script block in the bottom of + // your HTML that calls dojo._loadInit();. If you are using multiversion support, change + // "dojo." to the appropriate scope name for dojo. + skipIeDomLoaded: false +} +=====*/ +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/_base/configFirefoxExtension.js b/js/dojo-release-1.7.2-src/dojo/_base/configFirefoxExtension.js new file mode 100644 index 0000000..ce30c91 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/configFirefoxExtension.js @@ -0,0 +1,334 @@ +// TODO: this file needs to be converted to the v1.7 loader + +// a host environment specifically built for Mozilla extensions, but derived +// from the browser host environment +if(typeof window != 'undefined'){ + dojo.isBrowser = true; + dojo._name = "browser"; + + + // FIXME: PORTME + // http://developer.mozilla.org/en/mozIJSSubScriptLoader + + + // attempt to figure out the path to dojo if it isn't set in the config + (function(){ + // this is a scope protection closure. We set browser versions and grab + // the URL we were loaded from here. + + // FIXME: need to probably use a different reference to "document" to get the hosting XUL environment + + dojo.baseUrl = dojo.config.baseUrl; + + // fill in the rendering support information in dojo.render.* + var n = navigator; + var dua = n.userAgent; + var dav = n.appVersion; + var tv = parseFloat(dav); + + dojo.isMozilla = dojo.isMoz = tv; + if(dojo.isMoz){ + dojo.isFF = parseFloat(dua.split("Firefox/")[1]) || undefined; + } + + // FIXME + dojo.isQuirks = document.compatMode == "BackCompat"; + + // FIXME + // TODO: is the HTML LANG attribute relevant? + dojo.locale = dojo.config.locale || n.language.toLowerCase(); + + dojo._xhrObj = function(){ + return new XMLHttpRequest(); + }; + + // monkey-patch _loadUri to handle file://, chrome://, and resource:// url's + var oldLoadUri = dojo._loadUri; + dojo._loadUri = function(uri, cb){ + var handleLocal = ["file:", "chrome:", "resource:"].some(function(prefix){ + return String(uri).indexOf(prefix) == 0; + }); + if(handleLocal){ + // see: + // http://developer.mozilla.org/en/mozIJSSubScriptLoader + var l = Components.classes["@mozilla.org/moz/jssubscript-loader;1"] + .getService(Components.interfaces.mozIJSSubScriptLoader); + var value = l.loadSubScript(uri, dojo.global); + if(cb){ cb(value); } + return true; + }else{ + // otherwise, call the pre-existing version + return oldLoadUri.apply(dojo, arguments); + } + }; + + // FIXME: PORTME + dojo._isDocumentOk = function(http){ + var stat = http.status || 0; + return (stat >= 200 && stat < 300) || // Boolean + stat == 304 || // allow any 2XX response code + stat == 1223 || // get it out of the cache + (!stat && (location.protocol == "file:" || location.protocol == "chrome:") ); + }; + + // FIXME: PORTME + // var owloc = window.location+""; + // var base = document.getElementsByTagName("base"); + // var hasBase = (base && base.length > 0); + var hasBase = false; + + dojo._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){ + // summary: Read the contents of the specified uri and return those contents. + // uri: + // A relative or absolute uri. If absolute, it still must be in + // the same "domain" as we are. + // fail_ok: + // Default false. If fail_ok and loading fails, return null + // instead of throwing. + // returns: The response text. null is returned when there is a + // failure and failure is okay (an exception otherwise) + + // alert("_getText: " + uri); + + // NOTE: must be declared before scope switches ie. this._xhrObj() + var http = dojo._xhrObj(); + + if(!hasBase && dojo._Url){ + uri = (new dojo._Url(uri)).toString(); + } + if(dojo.config.cacheBust){ + //Make sure we have a string before string methods are used on uri + uri += ""; + uri += (uri.indexOf("?") == -1 ? "?" : "&") + String(dojo.config.cacheBust).replace(/\W+/g, ""); + } + var handleLocal = ["file:", "chrome:", "resource:"].some(function(prefix){ + return String(uri).indexOf(prefix) == 0; + }); + if(handleLocal){ + // see: + // http://forums.mozillazine.org/viewtopic.php?p=921150#921150 + var ioService = Components.classes["@mozilla.org/network/io-service;1"] + .getService(Components.interfaces.nsIIOService); + var scriptableStream = Components + .classes["@mozilla.org/scriptableinputstream;1"] + .getService(Components.interfaces.nsIScriptableInputStream); + + var channel = ioService.newChannel(uri, null, null); + var input = channel.open(); + scriptableStream.init(input); + var str = scriptableStream.read(input.available()); + scriptableStream.close(); + input.close(); + return str; + }else{ + http.open('GET', uri, false); + try{ + http.send(null); + // alert(http); + if(!dojo._isDocumentOk(http)){ + var err = Error("Unable to load " + uri + " status:" + http.status); + err.status = http.status; + err.responseText = http.responseText; + throw err; + } + }catch(e){ + if(fail_ok){ + return null; + } // null + // rethrow the exception + throw e; + } + return http.responseText; // String + } + }; + + dojo._windowUnloaders = []; + + // FIXME: PORTME + dojo.windowUnloaded = function(){ + // summary: + // signal fired by impending window destruction. You may use + // dojo.addOnWIndowUnload() or dojo.connect() to this method to perform + // page/application cleanup methods. See dojo.addOnWindowUnload for more info. + var mll = dojo._windowUnloaders; + while(mll.length){ + (mll.pop())(); + } + }; + + // FIXME: PORTME + dojo.addOnWindowUnload = function(/*Object?*/obj, /*String|Function?*/functionName){ + // summary: + // registers a function to be triggered when window.onunload fires. + // Be careful trying to modify the DOM or access JavaScript properties + // during this phase of page unloading: they may not always be available. + // Consider dojo.addOnUnload() if you need to modify the DOM or do heavy + // JavaScript work. + // example: + // | dojo.addOnWindowUnload(functionPointer) + // | dojo.addOnWindowUnload(object, "functionName") + // | dojo.addOnWindowUnload(object, function(){ /* ... */}); + + dojo._onto(dojo._windowUnloaders, obj, functionName); + }; + + // XUL specific APIs + var contexts = []; + var current = null; + dojo._defaultContext = [ window, document ]; + + dojo.pushContext = function(/*Object|String?*/g, /*MDocumentElement?*/d){ + // summary: + // causes subsequent calls to Dojo methods to assume the + // passed object and, optionally, document as the default + // scopes to use. A 2-element array of the previous global and + // document are returned. + // description: + // dojo.pushContext treats contexts as a stack. The + // auto-detected contexts which are initially provided using + // dojo.setContext() require authors to keep state in order to + // "return" to a previous context, whereas the + // dojo.pushContext and dojo.popContext methods provide a more + // natural way to augment blocks of code to ensure that they + // execute in a different window or frame without issue. If + // called without any arguments, the default context (the + // context when Dojo is first loaded) is instead pushed into + // the stack. If only a single string is passed, a node in the + // intitial context's document is looked up and its + // contextWindow and contextDocument properties are used as + // the context to push. This means that iframes can be given + // an ID and code can be executed in the scope of the iframe's + // document in subsequent calls easily. + // g: + // The global context. If a string, the id of the frame to + // search for a context and document. + // d: + // The document element to execute subsequent code with. + var old = [dojo.global, dojo.doc]; + contexts.push(old); + var n; + if(!g && !d){ + n = dojo._defaultContext; + }else{ + n = [ g, d ]; + if(!d && dojo.isString(g)){ + var t = document.getElementById(g); + if(t.contentDocument){ + n = [t.contentWindow, t.contentDocument]; + } + } + } + current = n; + dojo.setContext.apply(dojo, n); + return old; // Array + }; + + dojo.popContext = function(){ + // summary: + // If the context stack contains elements, ensure that + // subsequent code executes in the *previous* context to the + // current context. The current context set ([global, + // document]) is returned. + var oc = current; + if(!contexts.length){ + return oc; + } + dojo.setContext.apply(dojo, contexts.pop()); + return oc; + }; + + // FIXME: + // don't really like the current arguments and order to + // _inContext, so don't make it public until it's right! + dojo._inContext = function(g, d, f){ + var a = dojo._toArray(arguments); + f = a.pop(); + if(a.length == 1){ + d = null; + } + dojo.pushContext(g, d); + var r = f(); + dojo.popContext(); + return r; + }; + + })(); + + dojo._initFired = false; + // BEGIN DOMContentLoaded, from Dean Edwards (http://dean.edwards.name/weblog/2006/06/again/) + dojo._loadInit = function(e){ + dojo._initFired = true; + // allow multiple calls, only first one will take effect + // A bug in khtml calls events callbacks for document for event which isnt supported + // for example a created contextmenu event calls DOMContentLoaded, workaround + var type = (e && e.type) ? e.type.toLowerCase() : "load"; + if(arguments.callee.initialized || (type != "domcontentloaded" && type != "load")){ return; } + arguments.callee.initialized = true; + if(dojo._inFlightCount == 0){ + dojo._modulesLoaded(); + } + }; + + /* + (function(){ + var _w = window; + var _handleNodeEvent = function(evtName, fp){ + // summary: + // non-destructively adds the specified function to the node's + // evtName handler. + // evtName: should be in the form "onclick" for "onclick" handlers. + // Make sure you pass in the "on" part. + var oldHandler = _w[evtName] || function(){}; + _w[evtName] = function(){ + fp.apply(_w, arguments); + oldHandler.apply(_w, arguments); + }; + }; + // FIXME: PORT + // FIXME: dojo.unloaded requires dojo scope, so using anon function wrapper. + _handleNodeEvent("onbeforeunload", function() { dojo.unloaded(); }); + _handleNodeEvent("onunload", function() { dojo.windowUnloaded(); }); + })(); + */ + + + // FIXME: PORTME + // this event fires a lot, namely for all plugin XUL overlays and for + // all iframes (in addition to window navigations). We only want + // Dojo's to fire once..but we might care if pages navigate. We'll + // probably need an extension-specific API + if(!dojo.config.afterOnLoad){ + window.addEventListener("DOMContentLoaded", function(e){ + dojo._loadInit(e); + // console.log("DOM content loaded", e); + }, false); + } + +} //if (typeof window != 'undefined') + +//Register any module paths set up in djConfig. Need to do this +//in the hostenvs since hostenv_browser can read djConfig from a +//script tag's attribute. +(function(){ + var mp = dojo.config["modulePaths"]; + if(mp){ + for(var param in mp){ + dojo.registerModulePath(param, mp[param]); + } + } +})(); + +//Load debug code if necessary. +if(dojo.config.isDebug){ + // logging stub for extension logging + console.log = function(m){ + var s = Components.classes["@mozilla.org/consoleservice;1"].getService( + Components.interfaces.nsIConsoleService + ); + s.logStringMessage(m); + }; + console.debug = function(){ + console.log(dojo._toArray(arguments).join(" ")); + }; + // FIXME: what about the rest of the console.* methods? And is there any way to reach into firebug and log into it directly? +} diff --git a/js/dojo-release-1.7.2-src/dojo/_base/configNode.js b/js/dojo-release-1.7.2-src/dojo/_base/configNode.js new file mode 100644 index 0000000..7cd6f14 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/configNode.js @@ -0,0 +1,87 @@ +exports.config = function(config){ + // summary: + // This module provides bootstrap configuration for running dojo in node.js + + // any command line arguments with the load flag are pushed into deps + for(var deps = [], args = [], i = 0; i < process.argv.length; i++){ + var arg = (process.argv[i] + "").split("="); + if(arg[0] == "load"){ + deps.push(arg[1]); + }else{ + args.push(arg); + } + } + + var fs = require("fs"); + + // make sure global require exists + //if (typeof global.require=="undefined") { + // global.require= {}; + //} + + // reset the has cache with node-appropriate values; + var hasCache = { + "host-node":1, + "host-browser":0, + "dom":0, + "dojo-has-api":1, + "dojo-xhr-factory":0, + "dojo-inject-api":1, + "dojo-timeout-api":0, + "dojo-trace-api":1, + "dojo-dom-ready-api":0, + "dojo-publish-privates":1, + "dojo-sniff":0, + "dojo-loader":1, + "dojo-test-xd":0, + "dojo-test-sniff":0 + }; + for(var p in hasCache){ + config.hasCache[p] = hasCache[p]; + } + + var vm = require('vm'); + + + // reset some configuration switches with node-appropriate values + var nodeConfig = { + baseUrl: __dirname.match(/(.+)[\/\\]_base$/)[1], + commandLineArgs:args, + deps:deps, + timeout:0, + + // TODO: really get the locale + locale:"en-us", + + loaderPatch: { + log:function(item){ + // define debug for console messages during dev instead of console.log + // (node's heavy async makes console.log confusing sometimes) + var util = require("util"); + util.debug(util.inspect(item)); + }, + + eval: function(__text, __urlHint){ + return vm.runInThisContext(__text, __urlHint); + }, + + injectUrl: function(url, callback){ + try{ + vm.runInThisContext(fs.readFileSync(url, "utf8"), url); + callback(); + }catch(e){ + this.log("failed to load resource (" + url + ")"); + this.log(e); + } + }, + + getText: function(url, sync, onLoad){ + // TODO: implement async and http/https handling + onLoad(fs.readFileSync(url, "utf8")); + } + } + }; + for(p in nodeConfig){ + config[p] = nodeConfig[p]; + } +}; diff --git a/js/dojo-release-1.7.2-src/dojo/_base/configRhino.js b/js/dojo-release-1.7.2-src/dojo/_base/configRhino.js new file mode 100644 index 0000000..ec64759 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/configRhino.js @@ -0,0 +1,121 @@ +function rhinoDojoConfig(config, baseUrl, rhinoArgs){ + // summary: + // This module provides bootstrap configuration for running dojo in rhino. + + // TODO: v1.6 tries to set dojo.doc and dojo.body in rhino; why? + + // get a minimal console up + var log = function(hint, args){ + print((hint ? hint + ":" : "") + args[0]); + for(var i = 1; i < args.length; i++){ + print(", " + args[i]); + } + }; + // intentionally define console in the global namespace + console= { + log: function(){ log(0, arguments); }, + error: function(){ log("ERROR", arguments); }, + warn: function(){ log("WARN", arguments); } + }; + + // any command line arguments with the load flag are pushed into deps + for(var deps = [], i = 0; i < rhinoArgs.length; i++){ + var arg = (rhinoArgs[i] + "").split("="); + if(arg[0] == "load"){ + deps.push(arg[1]); + } + } + + // provides timed callbacks using Java threads + if(typeof setTimeout == "undefined" || typeof clearTimeout == "undefined"){ + var timeouts = []; + clearTimeout = function(idx){ + if(!timeouts[idx]){ return; } + timeouts[idx].stop(); + }; + + setTimeout = function(func, delay){ + var def = { + sleepTime:delay, + hasSlept:false, + + run:function(){ + if(!this.hasSlept){ + this.hasSlept = true; + java.lang.Thread.currentThread().sleep(this.sleepTime); + } + try{ + func(); + }catch(e){ + console.debug("Error running setTimeout thread:" + e); + } + } + }; + + var runnable = new java.lang.Runnable(def); + var thread = new java.lang.Thread(runnable); + thread.start(); + return timeouts.push(thread) - 1; + }; + } + + var isLocal = function(url){ + return (new java.io.File(url)).exists(); + }; + + // reset the has cache with node-appropriate values; + var hasCache = { + "host-rhino":1, + "host-browser":0, + "dom":0, + "dojo-has-api":1, + "dojo-xhr-factory":0, + "dojo-inject-api":1, + "dojo-timeout-api":0, + "dojo-trace-api":1, + "dojo-loader-catches":1, + "dojo-dom-ready-api":0, + "dojo-publish-privates":1, + "dojo-sniff":0, + "dojo-loader":1, + "dojo-test-xd":0, + "dojo-test-sniff":0 + }; + for(var p in hasCache){ + config.hasCache[p] = hasCache[p]; + } + + // reset some configuration switches with rhino-appropriate values + var rhinoConfig = { + baseUrl:baseUrl, + commandLineArgs:rhinoArgs, + deps:deps, + timeout:0, + locale:String(java.util.Locale.getDefault().toString().replace('_', '-').toLowerCase()), + + loaderPatch:{ + injectUrl: function(url, callback){ + try{ + if(isLocal(url)){ + load(url); + }else{ + require.eval(readUrl(url, "UTF-8")); + } + callback(); + }catch(e){ + console.log("failed to load resource (" + url + ")"); + console.log(e); + } + }, + + getText: function(url, sync, onLoad){ + // TODO: test https://bugzilla.mozilla.org/show_bug.cgi?id=471005; see v1.6 hostenv_rhino + // note: async mode not supported in rhino + onLoad(isLocal(url) ? readFile(url, "UTF-8") : readUrl(url, "UTF-8")); + } + } + }; + for(p in rhinoConfig){ + config[p] = rhinoConfig[p]; + } +} diff --git a/js/dojo-release-1.7.2-src/dojo/_base/configSpidermonkey.js b/js/dojo-release-1.7.2-src/dojo/_base/configSpidermonkey.js new file mode 100644 index 0000000..0da0d71 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/configSpidermonkey.js @@ -0,0 +1,84 @@ +// TODO: this file needs to be converted to the v1.7 loader + + +/* + * SpiderMonkey host environment + */ + +if(dojo.config["baseUrl"]){ + dojo.baseUrl = dojo.config["baseUrl"]; +}else{ + dojo.baseUrl = "./"; +} + +dojo._name = 'spidermonkey'; + +/*===== +dojo.isSpidermonkey = { + // summary: Detect spidermonkey +}; +=====*/ + +dojo.isSpidermonkey = true; +dojo.exit = function(exitcode){ + quit(exitcode); +}; + +if(typeof print == "function"){ + console.debug = print; +} + +if(typeof line2pc == 'undefined'){ + throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global"); +} + +dojo._spidermonkeyCurrentFile = function(depth){ + // + // This is a hack that determines the current script file by parsing a + // generated stack trace (relying on the non-standard "stack" member variable + // of the SpiderMonkey Error object). + // + // If param depth is passed in, it'll return the script file which is that far down + // the stack, but that does require that you know how deep your stack is when you are + // calling. + // + var s = ''; + try{ + throw Error("whatever"); + }catch(e){ + s = e.stack; + } + // lines are like: bu_getCurrentScriptURI_spidermonkey("ScriptLoader.js")@burst/Runtime.js:101 + var matches = s.match(/[^@]*\.js/gi); + if(!matches){ + throw Error("could not parse stack string: '" + s + "'"); + } + var fname = (typeof depth != 'undefined' && depth) ? matches[depth + 1] : matches[matches.length - 1]; + if(!fname){ + throw Error("could not find file name in stack string '" + s + "'"); + } + //print("SpiderMonkeyRuntime got fname '" + fname + "' from stack string '" + s + "'"); + return fname; +}; + +// print(dojo._spidermonkeyCurrentFile(0)); + +dojo._loadUri = function(uri){ + // spidermonkey load() evaluates the contents into the global scope (which + // is what we want). + // TODO: sigh, load() does not return a useful value. + // Perhaps it is returning the value of the last thing evaluated? + // var ok = + load(uri); + // console.log("spidermonkey load(", uri, ") returned ", ok); + return 1; +}; + +//Register any module paths set up in djConfig. Need to do this +//in the hostenvs since hostenv_browser can read djConfig from a +//script tag's attribute. +if(dojo.config["modulePaths"]){ + for(var param in dojo.config["modulePaths"]){ + dojo.registerModulePath(param, dojo.config["modulePaths"][param]); + } +} diff --git a/js/dojo-release-1.7.2-src/dojo/_base/connect.js b/js/dojo-release-1.7.2-src/dojo/_base/connect.js new file mode 100644 index 0000000..fba6770 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/connect.js @@ -0,0 +1,400 @@ +define(["./kernel", "../on", "../topic", "../aspect", "./event", "../mouse", "./sniff", "./lang", "../keys"], function(kernel, on, hub, aspect, eventModule, mouse, has, lang){ +// module: +// dojo/_base/connect +// summary: +// This module defines the dojo.connect API. +// This modules also provides keyboard event handling helpers. +// This module exports an extension event for emulating Firefox's keypress handling. +// However, this extension event exists primarily for backwards compatibility and +// is not recommended. WebKit and IE uses an alternate keypress handling (only +// firing for printable characters, to distinguish from keydown events), and most +// consider the WebKit/IE behavior more desirable. +has.add("events-keypress-typed", function(){ // keypresses should only occur a printable character is hit + var testKeyEvent = {charCode: 0}; + try{ + testKeyEvent = document.createEvent("KeyboardEvent"); + (testKeyEvent.initKeyboardEvent || testKeyEvent.initKeyEvent).call(testKeyEvent, "keypress", true, true, null, false, false, false, false, 9, 3); + }catch(e){} + return testKeyEvent.charCode == 0 && !has("opera"); +}); + +function connect_(obj, event, context, method, dontFix){ + method = lang.hitch(context, method); + if(!obj || !(obj.addEventListener || obj.attachEvent)){ + // it is a not a DOM node and we are using the dojo.connect style of treating a + // method like an event, must go right to aspect + return aspect.after(obj || kernel.global, event, method, true); + } + if(typeof event == "string" && event.substring(0, 2) == "on"){ + event = event.substring(2); + } + if(!obj){ + obj = kernel.global; + } + if(!dontFix){ + switch(event){ + // dojo.connect has special handling for these event types + case "keypress": + event = keypress; + break; + case "mouseenter": + event = mouse.enter; + break; + case "mouseleave": + event = mouse.leave; + break; + } + } + return on(obj, event, method, dontFix); +} + +var _punctMap = { + 106:42, + 111:47, + 186:59, + 187:43, + 188:44, + 189:45, + 190:46, + 191:47, + 192:96, + 219:91, + 220:92, + 221:93, + 222:39, + 229:113 +}; +var evtCopyKey = has("mac") ? "metaKey" : "ctrlKey"; + + +var _synthesizeEvent = function(evt, props){ + var faux = lang.mixin({}, evt, props); + setKeyChar(faux); + // FIXME: would prefer to use lang.hitch: lang.hitch(evt, evt.preventDefault); + // but it throws an error when preventDefault is invoked on Safari + // does Event.preventDefault not support "apply" on Safari? + faux.preventDefault = function(){ evt.preventDefault(); }; + faux.stopPropagation = function(){ evt.stopPropagation(); }; + return faux; +}; +function setKeyChar(evt){ + evt.keyChar = evt.charCode ? String.fromCharCode(evt.charCode) : ''; + evt.charOrCode = evt.keyChar || evt.keyCode; +} +var keypress; +if(has("events-keypress-typed")){ + // this emulates Firefox's keypress behavior where every keydown can correspond to a keypress + var _trySetKeyCode = function(e, code){ + try{ + // squelch errors when keyCode is read-only + // (e.g. if keyCode is ctrl or shift) + return (e.keyCode = code); + }catch(e){ + return 0; + } + }; + keypress = function(object, listener){ + var keydownSignal = on(object, "keydown", function(evt){ + // munge key/charCode + var k=evt.keyCode; + // These are Windows Virtual Key Codes + // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp + var unprintable = (k!=13 || (has("ie") >= 9 && !has("quirks"))) && k!=32 && (k!=27||!has("ie")) && (k<48||k>90) && (k<96||k>111) && (k<186||k>192) && (k<219||k>222) && k!=229; + // synthesize keypress for most unprintables and CTRL-keys + if(unprintable||evt.ctrlKey){ + var c = unprintable ? 0 : k; + if(evt.ctrlKey){ + if(k==3 || k==13){ + return listener.call(evt.currentTarget, evt); // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively + }else if(c>95 && c<106){ + c -= 48; // map CTRL-[numpad 0-9] to ASCII + }else if((!evt.shiftKey)&&(c>=65&&c<=90)){ + c += 32; // map CTRL-[A-Z] to lowercase + }else{ + c = _punctMap[c] || c; // map other problematic CTRL combinations to ASCII + } + } + // simulate a keypress event + var faux = _synthesizeEvent(evt, {type: 'keypress', faux: true, charCode: c}); + listener.call(evt.currentTarget, faux); + if(has("ie")){ + _trySetKeyCode(evt, faux.keyCode); + } + } + }); + var keypressSignal = on(object, "keypress", function(evt){ + var c = evt.charCode; + c = c>=32 ? c : 0; + evt = _synthesizeEvent(evt, {charCode: c, faux: true}); + return listener.call(this, evt); + }); + return { + remove: function(){ + keydownSignal.remove(); + keypressSignal.remove(); + } + }; + }; +}else{ + if(has("opera")){ + keypress = function(object, listener){ + return on(object, "keypress", function(evt){ + var c = evt.which; + if(c==3){ + c=99; // Mozilla maps CTRL-BREAK to CTRL-c + } + // can't trap some keys at all, like INSERT and DELETE + // there is no differentiating info between DELETE and ".", or INSERT and "-" + c = c<32 && !evt.shiftKey ? 0 : c; + if(evt.ctrlKey && !evt.shiftKey && c>=65 && c<=90){ + // lowercase CTRL-[A-Z] keys + c += 32; + } + return listener.call(this, _synthesizeEvent(evt, { charCode: c })); + }); + }; + }else{ + keypress = function(object, listener){ + return on(object, "keypress", function(evt){ + setKeyChar(evt); + return listener.call(this, evt); + }); + }; + } +} + +var connect = { + _keypress:keypress, + + connect:function(obj, event, context, method, dontFix){ + // normalize arguments + var a=arguments, args=[], i=0; + // if a[0] is a String, obj was omitted + args.push(typeof a[0] == "string" ? null : a[i++], a[i++]); + // if the arg-after-next is a String or Function, context was NOT omitted + var a1 = a[i+1]; + args.push(typeof a1 == "string" || typeof a1 == "function" ? a[i++] : null, a[i++]); + // absorb any additional arguments + for(var l=a.length; i= 0; --j){ + proto = lin[j].prototype; + if(!proto.hasOwnProperty("declaredClass")){ + proto.declaredClass = "uniqName_" + (counter++); + } + name = proto.declaredClass; + if(!nameMap.hasOwnProperty(name)){ + nameMap[name] = {count: 0, refs: [], cls: lin[j]}; + ++clsCount; + } + rec = nameMap[name]; + if(top && top !== rec){ + rec.refs.push(top); + ++top.count; + } + top = rec; + } + ++top.count; + roots[0].refs.push(top); + } + + // remove classes without external references recursively + while(roots.length){ + top = roots.pop(); + result.push(top.cls); + --clsCount; + // optimization: follow a single-linked chain + while(refs = top.refs, refs.length == 1){ + top = refs[0]; + if(!top || --top.count){ + // branch or end of chain => do not end to roots + top = 0; + break; + } + result.push(top.cls); + --clsCount; + } + if(top){ + // branch + for(i = 0, l = refs.length; i < l; ++i){ + top = refs[i]; + if(!--top.count){ + roots.push(top); + } + } + } + } + if(clsCount){ + err("can't build consistent linearization", className); + } + + // calculate the superclass offset + base = bases[0]; + result[0] = base ? + base._meta && base === result[result.length - base._meta.bases.length] ? + base._meta.bases.length : 1 : 0; + + return result; + } + + function inherited(args, a, f){ + var name, chains, bases, caller, meta, base, proto, opf, pos, + cache = this._inherited = this._inherited || {}; + + // crack arguments + if(typeof args == "string"){ + name = args; + args = a; + a = f; + } + f = 0; + + caller = args.callee; + name = name || caller.nom; + if(!name){ + err("can't deduce a name to call inherited()", this.declaredClass); + } + + meta = this.constructor._meta; + bases = meta.bases; + + pos = cache.p; + if(name != cname){ + // method + if(cache.c !== caller){ + // cache bust + pos = 0; + base = bases[0]; + meta = base._meta; + if(meta.hidden[name] !== caller){ + // error detection + chains = meta.chains; + if(chains && typeof chains[name] == "string"){ + err("calling chained method with inherited: " + name, this.declaredClass); + } + // find caller + do{ + meta = base._meta; + proto = base.prototype; + if(meta && (proto[name] === caller && proto.hasOwnProperty(name) || meta.hidden[name] === caller)){ + break; + } + }while(base = bases[++pos]); // intentional assignment + pos = base ? pos : -1; + } + } + // find next + base = bases[++pos]; + if(base){ + proto = base.prototype; + if(base._meta && proto.hasOwnProperty(name)){ + f = proto[name]; + }else{ + opf = op[name]; + do{ + proto = base.prototype; + f = proto[name]; + if(f && (base._meta ? proto.hasOwnProperty(name) : f !== opf)){ + break; + } + }while(base = bases[++pos]); // intentional assignment + } + } + f = base && f || op[name]; + }else{ + // constructor + if(cache.c !== caller){ + // cache bust + pos = 0; + meta = bases[0]._meta; + if(meta && meta.ctor !== caller){ + // error detection + chains = meta.chains; + if(!chains || chains.constructor !== "manual"){ + err("calling chained constructor with inherited", this.declaredClass); + } + // find caller + while(base = bases[++pos]){ // intentional assignment + meta = base._meta; + if(meta && meta.ctor === caller){ + break; + } + } + pos = base ? pos : -1; + } + } + // find next + while(base = bases[++pos]){ // intentional assignment + meta = base._meta; + f = meta ? meta.ctor : base; + if(f){ + break; + } + } + f = base && f; + } + + // cache the found super method + cache.c = f; + cache.p = pos; + + // now we have the result + if(f){ + return a === true ? f : f.apply(this, a || args); + } + // intentionally no return if a super method was not found + } + + function getInherited(name, args){ + if(typeof name == "string"){ + return this.__inherited(name, args, true); + } + return this.__inherited(name, true); + } + + function inherited__debug(args, a1, a2){ + var f = this.getInherited(args, a1); + if(f){ return f.apply(this, a2 || a1 || args); } + // intentionally no return if a super method was not found + } + + var inheritedImpl = dojo.config.isDebug ? inherited__debug : inherited; + + // emulation of "instanceof" + function isInstanceOf(cls){ + var bases = this.constructor._meta.bases; + for(var i = 0, l = bases.length; i < l; ++i){ + if(bases[i] === cls){ + return true; + } + } + return this instanceof cls; + } + + function mixOwn(target, source){ + // add props adding metadata for incoming functions skipping a constructor + for(var name in source){ + if(name != cname && source.hasOwnProperty(name)){ + target[name] = source[name]; + } + } + if(has("bug-for-in-skips-shadowed")){ + for(var extraNames= lang._extraNames, i= extraNames.length; i;){ + name = extraNames[--i]; + if(name != cname && source.hasOwnProperty(name)){ + target[name] = source[name]; + } + } + } + } + + // implementation of safe mixin function + function safeMixin(target, source){ + var name, t; + // add props adding metadata for incoming functions skipping a constructor + for(name in source){ + t = source[name]; + if((t !== op[name] || !(name in op)) && name != cname){ + if(opts.call(t) == "[object Function]"){ + // non-trivial function method => attach its name + t.nom = name; + } + target[name] = t; + } + } + if(has("bug-for-in-skips-shadowed")){ + for(var extraNames= lang._extraNames, i= extraNames.length; i;){ + name = extraNames[--i]; + t = source[name]; + if((t !== op[name] || !(name in op)) && name != cname){ + if(opts.call(t) == "[object Function]"){ + // non-trivial function method => attach its name + t.nom = name; + } + target[name] = t; + } + } + } + return target; + } + + function extend(source){ + declare.safeMixin(this.prototype, source); + return this; + } + + // chained constructor compatible with the legacy dojo.declare() + function chainedConstructor(bases, ctorSpecial){ + return function(){ + var a = arguments, args = a, a0 = a[0], f, i, m, + l = bases.length, preArgs; + + if(!(this instanceof a.callee)){ + // not called via new, so force it + return applyNew(a); + } + + //this._inherited = {}; + // perform the shaman's rituals of the original dojo.declare() + // 1) call two types of the preamble + if(ctorSpecial && (a0 && a0.preamble || this.preamble)){ + // full blown ritual + preArgs = new Array(bases.length); + // prepare parameters + preArgs[0] = a; + for(i = 0;;){ + // process the preamble of the 1st argument + a0 = a[0]; + if(a0){ + f = a0.preamble; + if(f){ + a = f.apply(this, a) || a; + } + } + // process the preamble of this class + f = bases[i].prototype; + f = f.hasOwnProperty("preamble") && f.preamble; + if(f){ + a = f.apply(this, a) || a; + } + // one peculiarity of the preamble: + // it is called if it is not needed, + // e.g., there is no constructor to call + // let's watch for the last constructor + // (see ticket #9795) + if(++i == l){ + break; + } + preArgs[i] = a; + } + } + // 2) call all non-trivial constructors using prepared arguments + for(i = l - 1; i >= 0; --i){ + f = bases[i]; + m = f._meta; + f = m ? m.ctor : f; + if(f){ + f.apply(this, preArgs ? preArgs[i] : a); + } + } + // 3) continue the original ritual: call the postscript + f = this.postscript; + if(f){ + f.apply(this, args); + } + }; + } + + + // chained constructor compatible with the legacy dojo.declare() + function singleConstructor(ctor, ctorSpecial){ + return function(){ + var a = arguments, t = a, a0 = a[0], f; + + if(!(this instanceof a.callee)){ + // not called via new, so force it + return applyNew(a); + } + + //this._inherited = {}; + // perform the shaman's rituals of the original dojo.declare() + // 1) call two types of the preamble + if(ctorSpecial){ + // full blown ritual + if(a0){ + // process the preamble of the 1st argument + f = a0.preamble; + if(f){ + t = f.apply(this, t) || t; + } + } + f = this.preamble; + if(f){ + // process the preamble of this class + f.apply(this, t); + // one peculiarity of the preamble: + // it is called even if it is not needed, + // e.g., there is no constructor to call + // let's watch for the last constructor + // (see ticket #9795) + } + } + // 2) call a constructor + if(ctor){ + ctor.apply(this, a); + } + // 3) continue the original ritual: call the postscript + f = this.postscript; + if(f){ + f.apply(this, a); + } + }; + } + + // plain vanilla constructor (can use inherited() to call its base constructor) + function simpleConstructor(bases){ + return function(){ + var a = arguments, i = 0, f, m; + + if(!(this instanceof a.callee)){ + // not called via new, so force it + return applyNew(a); + } + + //this._inherited = {}; + // perform the shaman's rituals of the original dojo.declare() + // 1) do not call the preamble + // 2) call the top constructor (it can use this.inherited()) + for(; f = bases[i]; ++i){ // intentional assignment + m = f._meta; + f = m ? m.ctor : f; + if(f){ + f.apply(this, a); + break; + } + } + // 3) call the postscript + f = this.postscript; + if(f){ + f.apply(this, a); + } + }; + } + + function chain(name, bases, reversed){ + return function(){ + var b, m, f, i = 0, step = 1; + if(reversed){ + i = bases.length - 1; + step = -1; + } + for(; b = bases[i]; i += step){ // intentional assignment + m = b._meta; + f = (m ? m.hidden : b.prototype)[name]; + if(f){ + f.apply(this, arguments); + } + } + }; + } + + // forceNew(ctor) + // return a new object that inherits from ctor.prototype but + // without actually running ctor on the object. + function forceNew(ctor){ + // create object with correct prototype using a do-nothing + // constructor + xtor.prototype = ctor.prototype; + var t = new xtor; + xtor.prototype = null; // clean up + return t; + } + + // applyNew(args) + // just like 'new ctor()' except that the constructor and its arguments come + // from args, which must be an array or an arguments object + function applyNew(args){ + // create an object with ctor's prototype but without + // calling ctor on it. + var ctor = args.callee, t = forceNew(ctor); + // execute the real constructor on the new object + ctor.apply(t, args); + return t; + } + + function declare(className, superclass, props){ + // crack parameters + if(typeof className != "string"){ + props = superclass; + superclass = className; + className = ""; + } + props = props || {}; + + var proto, i, t, ctor, name, bases, chains, mixins = 1, parents = superclass; + + // build a prototype + if(opts.call(superclass) == "[object Array]"){ + // C3 MRO + bases = c3mro(superclass, className); + t = bases[0]; + mixins = bases.length - t; + superclass = bases[mixins]; + }else{ + bases = [0]; + if(superclass){ + if(opts.call(superclass) == "[object Function]"){ + t = superclass._meta; + bases = bases.concat(t ? t.bases : superclass); + }else{ + err("base class is not a callable constructor.", className); + } + }else if(superclass !== null){ + err("unknown base class. Did you use dojo.require to pull it in?", className); + } + } + if(superclass){ + for(i = mixins - 1;; --i){ + proto = forceNew(superclass); + if(!i){ + // stop if nothing to add (the last base) + break; + } + // mix in properties + t = bases[i]; + (t._meta ? mixOwn : mix)(proto, t.prototype); + // chain in new constructor + ctor = new Function; + ctor.superclass = superclass; + ctor.prototype = proto; + superclass = proto.constructor = ctor; + } + }else{ + proto = {}; + } + // add all properties + declare.safeMixin(proto, props); + // add constructor + t = props.constructor; + if(t !== op.constructor){ + t.nom = cname; + proto.constructor = t; + } + + // collect chains and flags + for(i = mixins - 1; i; --i){ // intentional assignment + t = bases[i]._meta; + if(t && t.chains){ + chains = mix(chains || {}, t.chains); + } + } + if(proto["-chains-"]){ + chains = mix(chains || {}, proto["-chains-"]); + } + + // build ctor + t = !chains || !chains.hasOwnProperty(cname); + bases[0] = ctor = (chains && chains.constructor === "manual") ? simpleConstructor(bases) : + (bases.length == 1 ? singleConstructor(props.constructor, t) : chainedConstructor(bases, t)); + + // add meta information to the constructor + ctor._meta = {bases: bases, hidden: props, chains: chains, + parents: parents, ctor: props.constructor}; + ctor.superclass = superclass && superclass.prototype; + ctor.extend = extend; + ctor.prototype = proto; + proto.constructor = ctor; + + // add "standard" methods to the prototype + proto.getInherited = getInherited; + proto.isInstanceOf = isInstanceOf; + proto.inherited = inheritedImpl; + proto.__inherited = inherited; + + // add name if specified + if(className){ + proto.declaredClass = className; + lang.setObject(className, ctor); + } + + // build chains and add them to the prototype + if(chains){ + for(name in chains){ + if(proto[name] && typeof chains[name] == "string" && name != cname){ + t = proto[name] = chain(name, bases, chains[name] === "after"); + t.nom = name; + } + } + } + // chained methods do not return values + // no need to chain "invisible" functions + + return ctor; // Function + } + + /*===== + dojo.declare = function(className, superclass, props){ + // summary: + // Create a feature-rich constructor from compact notation. + // className: String?: + // The optional name of the constructor (loosely, a "class") + // stored in the "declaredClass" property in the created prototype. + // It will be used as a global name for a created constructor. + // superclass: Function|Function[]: + // May be null, a Function, or an Array of Functions. This argument + // specifies a list of bases (the left-most one is the most deepest + // base). + // props: Object: + // An object whose properties are copied to the created prototype. + // Add an instance-initialization function by making it a property + // named "constructor". + // returns: + // New constructor function. + // description: + // Create a constructor using a compact notation for inheritance and + // prototype extension. + // + // Mixin ancestors provide a type of multiple inheritance. + // Prototypes of mixin ancestors are copied to the new class: + // changes to mixin prototypes will not affect classes to which + // they have been mixed in. + // + // Ancestors can be compound classes created by this version of + // dojo.declare. In complex cases all base classes are going to be + // linearized according to C3 MRO algorithm + // (see http://www.python.org/download/releases/2.3/mro/ for more + // details). + // + // "className" is cached in "declaredClass" property of the new class, + // if it was supplied. The immediate super class will be cached in + // "superclass" property of the new class. + // + // Methods in "props" will be copied and modified: "nom" property + // (the declared name of the method) will be added to all copied + // functions to help identify them for the internal machinery. Be + // very careful, while reusing methods: if you use the same + // function under different names, it can produce errors in some + // cases. + // + // It is possible to use constructors created "manually" (without + // dojo.declare) as bases. They will be called as usual during the + // creation of an instance, their methods will be chained, and even + // called by "this.inherited()". + // + // Special property "-chains-" governs how to chain methods. It is + // a dictionary, which uses method names as keys, and hint strings + // as values. If a hint string is "after", this method will be + // called after methods of its base classes. If a hint string is + // "before", this method will be called before methods of its base + // classes. + // + // If "constructor" is not mentioned in "-chains-" property, it will + // be chained using the legacy mode: using "after" chaining, + // calling preamble() method before each constructor, if available, + // and calling postscript() after all constructors were executed. + // If the hint is "after", it is chained as a regular method, but + // postscript() will be called after the chain of constructors. + // "constructor" cannot be chained "before", but it allows + // a special hint string: "manual", which means that constructors + // are not going to be chained in any way, and programmer will call + // them manually using this.inherited(). In the latter case + // postscript() will be called after the construction. + // + // All chaining hints are "inherited" from base classes and + // potentially can be overridden. Be very careful when overriding + // hints! Make sure that all chained methods can work in a proposed + // manner of chaining. + // + // Once a method was chained, it is impossible to unchain it. The + // only exception is "constructor". You don't need to define a + // method in order to supply a chaining hint. + // + // If a method is chained, it cannot use this.inherited() because + // all other methods in the hierarchy will be called automatically. + // + // Usually constructors and initializers of any kind are chained + // using "after" and destructors of any kind are chained as + // "before". Note that chaining assumes that chained methods do not + // return any value: any returned value will be discarded. + // + // example: + // | dojo.declare("my.classes.bar", my.classes.foo, { + // | // properties to be added to the class prototype + // | someValue: 2, + // | // initialization function + // | constructor: function(){ + // | this.myComplicatedObject = new ReallyComplicatedObject(); + // | }, + // | // other functions + // | someMethod: function(){ + // | doStuff(); + // | } + // | }); + // + // example: + // | var MyBase = dojo.declare(null, { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // | var MyClass1 = dojo.declare(MyBase, { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // | var MyClass2 = dojo.declare(MyBase, { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // | var MyDiamond = dojo.declare([MyClass1, MyClass2], { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // + // example: + // | var F = function(){ console.log("raw constructor"); }; + // | F.prototype.method = function(){ + // | console.log("raw method"); + // | }; + // | var A = dojo.declare(F, { + // | constructor: function(){ + // | console.log("A.constructor"); + // | }, + // | method: function(){ + // | console.log("before calling F.method..."); + // | this.inherited(arguments); + // | console.log("...back in A"); + // | } + // | }); + // | new A().method(); + // | // will print: + // | // raw constructor + // | // A.constructor + // | // before calling F.method... + // | // raw method + // | // ...back in A + // + // example: + // | var A = dojo.declare(null, { + // | "-chains-": { + // | destroy: "before" + // | } + // | }); + // | var B = dojo.declare(A, { + // | constructor: function(){ + // | console.log("B.constructor"); + // | }, + // | destroy: function(){ + // | console.log("B.destroy"); + // | } + // | }); + // | var C = dojo.declare(B, { + // | constructor: function(){ + // | console.log("C.constructor"); + // | }, + // | destroy: function(){ + // | console.log("C.destroy"); + // | } + // | }); + // | new C().destroy(); + // | // prints: + // | // B.constructor + // | // C.constructor + // | // C.destroy + // | // B.destroy + // + // example: + // | var A = dojo.declare(null, { + // | "-chains-": { + // | constructor: "manual" + // | } + // | }); + // | var B = dojo.declare(A, { + // | constructor: function(){ + // | // ... + // | // call the base constructor with new parameters + // | this.inherited(arguments, [1, 2, 3]); + // | // ... + // | } + // | }); + // + // example: + // | var A = dojo.declare(null, { + // | "-chains-": { + // | m1: "before" + // | }, + // | m1: function(){ + // | console.log("A.m1"); + // | }, + // | m2: function(){ + // | console.log("A.m2"); + // | } + // | }); + // | var B = dojo.declare(A, { + // | "-chains-": { + // | m2: "after" + // | }, + // | m1: function(){ + // | console.log("B.m1"); + // | }, + // | m2: function(){ + // | console.log("B.m2"); + // | } + // | }); + // | var x = new B(); + // | x.m1(); + // | // prints: + // | // B.m1 + // | // A.m1 + // | x.m2(); + // | // prints: + // | // A.m2 + // | // B.m2 + return new Function(); // Function + }; + =====*/ + + /*===== + dojo.safeMixin = function(target, source){ + // summary: + // Mix in properties skipping a constructor and decorating functions + // like it is done by dojo.declare. + // target: Object + // Target object to accept new properties. + // source: Object + // Source object for new properties. + // description: + // This function is used to mix in properties like lang.mixin does, + // but it skips a constructor property and decorates functions like + // dojo.declare does. + // + // It is meant to be used with classes and objects produced with + // dojo.declare. Functions mixed in with dojo.safeMixin can use + // this.inherited() like normal methods. + // + // This function is used to implement extend() method of a constructor + // produced with dojo.declare(). + // + // example: + // | var A = dojo.declare(null, { + // | m1: function(){ + // | console.log("A.m1"); + // | }, + // | m2: function(){ + // | console.log("A.m2"); + // | } + // | }); + // | var B = dojo.declare(A, { + // | m1: function(){ + // | this.inherited(arguments); + // | console.log("B.m1"); + // | } + // | }); + // | B.extend({ + // | m2: function(){ + // | this.inherited(arguments); + // | console.log("B.m2"); + // | } + // | }); + // | var x = new B(); + // | dojo.safeMixin(x, { + // | m1: function(){ + // | this.inherited(arguments); + // | console.log("X.m1"); + // | }, + // | m2: function(){ + // | this.inherited(arguments); + // | console.log("X.m2"); + // | } + // | }); + // | x.m2(); + // | // prints: + // | // A.m1 + // | // B.m1 + // | // X.m1 + }; + =====*/ + + /*===== + Object.inherited = function(name, args, newArgs){ + // summary: + // Calls a super method. + // name: String? + // The optional method name. Should be the same as the caller's + // name. Usually "name" is specified in complex dynamic cases, when + // the calling method was dynamically added, undecorated by + // dojo.declare, and it cannot be determined. + // args: Arguments + // The caller supply this argument, which should be the original + // "arguments". + // newArgs: Object? + // If "true", the found function will be returned without + // executing it. + // If Array, it will be used to call a super method. Otherwise + // "args" will be used. + // returns: + // Whatever is returned by a super method, or a super method itself, + // if "true" was specified as newArgs. + // description: + // This method is used inside method of classes produced with + // dojo.declare to call a super method (next in the chain). It is + // used for manually controlled chaining. Consider using the regular + // chaining, because it is faster. Use "this.inherited()" only in + // complex cases. + // + // This method cannot me called from automatically chained + // constructors including the case of a special (legacy) + // constructor chaining. It cannot be called from chained methods. + // + // If "this.inherited()" cannot find the next-in-chain method, it + // does nothing and returns "undefined". The last method in chain + // can be a default method implemented in Object, which will be + // called last. + // + // If "name" is specified, it is assumed that the method that + // received "args" is the parent method for this call. It is looked + // up in the chain list and if it is found the next-in-chain method + // is called. If it is not found, the first-in-chain method is + // called. + // + // If "name" is not specified, it will be derived from the calling + // method (using a methoid property "nom"). + // + // example: + // | var B = dojo.declare(A, { + // | method1: function(a, b, c){ + // | this.inherited(arguments); + // | }, + // | method2: function(a, b){ + // | return this.inherited(arguments, [a + b]); + // | } + // | }); + // | // next method is not in the chain list because it is added + // | // manually after the class was created. + // | B.prototype.method3 = function(){ + // | console.log("This is a dynamically-added method."); + // | this.inherited("method3", arguments); + // | }; + // example: + // | var B = dojo.declare(A, { + // | method: function(a, b){ + // | var super = this.inherited(arguments, true); + // | // ... + // | if(!super){ + // | console.log("there is no super method"); + // | return 0; + // | } + // | return super.apply(this, arguments); + // | } + // | }); + return {}; // Object + } + =====*/ + + /*===== + Object.getInherited = function(name, args){ + // summary: + // Returns a super method. + // name: String? + // The optional method name. Should be the same as the caller's + // name. Usually "name" is specified in complex dynamic cases, when + // the calling method was dynamically added, undecorated by + // dojo.declare, and it cannot be determined. + // args: Arguments + // The caller supply this argument, which should be the original + // "arguments". + // returns: + // Returns a super method (Function) or "undefined". + // description: + // This method is a convenience method for "this.inherited()". + // It uses the same algorithm but instead of executing a super + // method, it returns it, or "undefined" if not found. + // + // example: + // | var B = dojo.declare(A, { + // | method: function(a, b){ + // | var super = this.getInherited(arguments); + // | // ... + // | if(!super){ + // | console.log("there is no super method"); + // | return 0; + // | } + // | return super.apply(this, arguments); + // | } + // | }); + return {}; // Object + } + =====*/ + + /*===== + Object.isInstanceOf = function(cls){ + // summary: + // Checks the inheritance chain to see if it is inherited from this + // class. + // cls: Function + // Class constructor. + // returns: + // "true", if this object is inherited from this class, "false" + // otherwise. + // description: + // This method is used with instances of classes produced with + // dojo.declare to determine of they support a certain interface or + // not. It models "instanceof" operator. + // + // example: + // | var A = dojo.declare(null, { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // | var B = dojo.declare(null, { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // | var C = dojo.declare([A, B], { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // | var D = dojo.declare(A, { + // | // constructor, properties, and methods go here + // | // ... + // | }); + // | + // | var a = new A(), b = new B(), c = new C(), d = new D(); + // | + // | console.log(a.isInstanceOf(A)); // true + // | console.log(b.isInstanceOf(A)); // false + // | console.log(c.isInstanceOf(A)); // true + // | console.log(d.isInstanceOf(A)); // true + // | + // | console.log(a.isInstanceOf(B)); // false + // | console.log(b.isInstanceOf(B)); // true + // | console.log(c.isInstanceOf(B)); // true + // | console.log(d.isInstanceOf(B)); // false + // | + // | console.log(a.isInstanceOf(C)); // false + // | console.log(b.isInstanceOf(C)); // false + // | console.log(c.isInstanceOf(C)); // true + // | console.log(d.isInstanceOf(C)); // false + // | + // | console.log(a.isInstanceOf(D)); // false + // | console.log(b.isInstanceOf(D)); // false + // | console.log(c.isInstanceOf(D)); // false + // | console.log(d.isInstanceOf(D)); // true + return {}; // Object + } + =====*/ + + /*===== + Object.extend = function(source){ + // summary: + // Adds all properties and methods of source to constructor's + // prototype, making them available to all instances created with + // constructor. This method is specific to constructors created with + // dojo.declare. + // source: Object + // Source object which properties are going to be copied to the + // constructor's prototype. + // description: + // Adds source properties to the constructor's prototype. It can + // override existing properties. + // + // This method is similar to dojo.extend function, but it is specific + // to constructors produced by dojo.declare. It is implemented + // using dojo.safeMixin, and it skips a constructor property, + // and properly decorates copied functions. + // + // example: + // | var A = dojo.declare(null, { + // | m1: function(){}, + // | s1: "Popokatepetl" + // | }); + // | A.extend({ + // | m1: function(){}, + // | m2: function(){}, + // | f1: true, + // | d1: 42 + // | }); + }; + =====*/ + + dojo.safeMixin = declare.safeMixin = safeMixin; + dojo.declare = declare; + + return declare; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/event.js b/js/dojo-release-1.7.2-src/dojo/_base/event.js new file mode 100644 index 0000000..1447679 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/event.js @@ -0,0 +1,51 @@ +define(["./kernel", "../on", "../has", "../dom-geometry"], function(dojo, on, has, dom){ + // module: + // dojo/_base/event + // summary: + // This module defines dojo DOM event API. + if(on._fixEvent){ + var fixEvent = on._fixEvent; + on._fixEvent = function(evt, se){ + // add some additional normalization for back-compat, this isn't in on.js because it is somewhat more expensive + evt = fixEvent(evt, se); + if(evt){ + dom.normalizeEvent(evt); + } + return evt; + }; + } + dojo.fixEvent = function(/*Event*/ evt, /*DOMNode*/ sender){ + // summary: + // normalizes properties on the event object including event + // bubbling methods, keystroke normalization, and x/y positions + // evt: Event + // native event object + // sender: DOMNode + // node to treat as "currentTarget" + if(on._fixEvent){ + return on._fixEvent(evt, sender); + } + return evt; // Event + }; + + dojo.stopEvent = function(/*Event*/ evt){ + // summary: + // prevents propagation and clobbers the default action of the + // passed event + // evt: Event + // The event object. If omitted, window.event is used on IE. + if(has("dom-addeventlistener") || (evt && evt.preventDefault)){ + evt.preventDefault(); + evt.stopPropagation(); + }else{ + evt = evt || window.event; + evt.cancelBubble = true; + on._preventDefault.call(evt); + } + }; + + return { + fix: dojo.fixEvent, + stop: dojo.stopEvent + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/fx.js b/js/dojo-release-1.7.2-src/dojo/_base/fx.js new file mode 100644 index 0000000..b8a25d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/fx.js @@ -0,0 +1,668 @@ +define(["./kernel", "./lang", "../Evented", "./Color", "./connect", "./sniff", "../dom", "../dom-style"], function(dojo, lang, Evented, Color, connect, has, dom, style){ + // module: + // dojo/_base/fx + // summary: + // This module defines the base dojo.fx implementation. + // notes: + // Animation loosely package based on Dan Pupius' work, contributed under CLA; see + // http://pupius.co.uk/js/Toolkit.Drawing.js + + var _mixin = lang.mixin; + + dojo._Line = function(/*int*/ start, /*int*/ end){ + // summary: + // dojo._Line is the object used to generate values from a start value + // to an end value + // start: int + // Beginning value for range + // end: int + // Ending value for range + this.start = start; + this.end = end; + }; + + dojo._Line.prototype.getValue = function(/*float*/ n){ + // summary: Returns the point on the line + // n: a floating point number greater than 0 and less than 1 + return ((this.end - this.start) * n) + this.start; // Decimal + }; + + dojo.Animation = function(args){ + // summary: + // A generic animation class that fires callbacks into its handlers + // object at various states. + // description: + // A generic animation class that fires callbacks into its handlers + // object at various states. Nearly all dojo animation functions + // return an instance of this method, usually without calling the + // .play() method beforehand. Therefore, you will likely need to + // call .play() on instances of `dojo.Animation` when one is + // returned. + // args: Object + // The 'magic argument', mixing all the properties into this + // animation instance. + + _mixin(this, args); + if(lang.isArray(this.curve)){ + this.curve = new dojo._Line(this.curve[0], this.curve[1]); + } + + }; + dojo.Animation.prototype = new Evented(); + // Alias to drop come 2.0: + dojo._Animation = dojo.Animation; + + lang.extend(dojo.Animation, { + // duration: Integer + // The time in milliseonds the animation will take to run + duration: 350, + + /*===== + // curve: dojo._Line|Array + // A two element array of start and end values, or a `dojo._Line` instance to be + // used in the Animation. + curve: null, + + // easing: Function? + // A Function to adjust the acceleration (or deceleration) of the progress + // across a dojo._Line + easing: null, + =====*/ + + // repeat: Integer? + // The number of times to loop the animation + repeat: 0, + + // rate: Integer? + // the time in milliseconds to wait before advancing to next frame + // (used as a fps timer: 1000/rate = fps) + rate: 20 /* 50 fps */, + + /*===== + // delay: Integer? + // The time in milliseconds to wait before starting animation after it + // has been .play()'ed + delay: null, + + // beforeBegin: Event? + // Synthetic event fired before a dojo.Animation begins playing (synchronous) + beforeBegin: null, + + // onBegin: Event? + // Synthetic event fired as a dojo.Animation begins playing (useful?) + onBegin: null, + + // onAnimate: Event? + // Synthetic event fired at each interval of a `dojo.Animation` + onAnimate: null, + + // onEnd: Event? + // Synthetic event fired after the final frame of a `dojo.Animation` + onEnd: null, + + // onPlay: Event? + // Synthetic event fired any time a `dojo.Animation` is play()'ed + onPlay: null, + + // onPause: Event? + // Synthetic event fired when a `dojo.Animation` is paused + onPause: null, + + // onStop: Event + // Synthetic event fires when a `dojo.Animation` is stopped + onStop: null, + + =====*/ + + _percent: 0, + _startRepeatCount: 0, + + _getStep: function(){ + var _p = this._percent, + _e = this.easing + ; + return _e ? _e(_p) : _p; + }, + _fire: function(/*Event*/ evt, /*Array?*/ args){ + // summary: + // Convenience function. Fire event "evt" and pass it the + // arguments specified in "args". + // description: + // Convenience function. Fire event "evt" and pass it the + // arguments specified in "args". + // Fires the callback in the scope of the `dojo.Animation` + // instance. + // evt: + // The event to fire. + // args: + // The arguments to pass to the event. + var a = args||[]; + if(this[evt]){ + if(dojo.config.debugAtAllCosts){ + this[evt].apply(this, a); + }else{ + try{ + this[evt].apply(this, a); + }catch(e){ + // squelch and log because we shouldn't allow exceptions in + // synthetic event handlers to cause the internal timer to run + // amuck, potentially pegging the CPU. I'm not a fan of this + // squelch, but hopefully logging will make it clear what's + // going on + console.error("exception in animation handler for:", evt); + console.error(e); + } + } + } + return this; // dojo.Animation + }, + + play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){ + // summary: + // Start the animation. + // delay: + // How many milliseconds to delay before starting. + // gotoStart: + // If true, starts the animation from the beginning; otherwise, + // starts it from its current position. + // returns: dojo.Animation + // The instance to allow chaining. + + var _t = this; + if(_t._delayTimer){ _t._clearTimer(); } + if(gotoStart){ + _t._stopTimer(); + _t._active = _t._paused = false; + _t._percent = 0; + }else if(_t._active && !_t._paused){ + return _t; + } + + _t._fire("beforeBegin", [_t.node]); + + var de = delay || _t.delay, + _p = lang.hitch(_t, "_play", gotoStart); + + if(de > 0){ + _t._delayTimer = setTimeout(_p, de); + return _t; + } + _p(); + return _t; // dojo.Animation + }, + + _play: function(gotoStart){ + var _t = this; + if(_t._delayTimer){ _t._clearTimer(); } + _t._startTime = new Date().valueOf(); + if(_t._paused){ + _t._startTime -= _t.duration * _t._percent; + } + + _t._active = true; + _t._paused = false; + var value = _t.curve.getValue(_t._getStep()); + if(!_t._percent){ + if(!_t._startRepeatCount){ + _t._startRepeatCount = _t.repeat; + } + _t._fire("onBegin", [value]); + } + + _t._fire("onPlay", [value]); + + _t._cycle(); + return _t; // dojo.Animation + }, + + pause: function(){ + // summary: Pauses a running animation. + var _t = this; + if(_t._delayTimer){ _t._clearTimer(); } + _t._stopTimer(); + if(!_t._active){ return _t; /*dojo.Animation*/ } + _t._paused = true; + _t._fire("onPause", [_t.curve.getValue(_t._getStep())]); + return _t; // dojo.Animation + }, + + gotoPercent: function(/*Decimal*/ percent, /*Boolean?*/ andPlay){ + // summary: + // Sets the progress of the animation. + // percent: + // A percentage in decimal notation (between and including 0.0 and 1.0). + // andPlay: + // If true, play the animation after setting the progress. + var _t = this; + _t._stopTimer(); + _t._active = _t._paused = true; + _t._percent = percent; + if(andPlay){ _t.play(); } + return _t; // dojo.Animation + }, + + stop: function(/*boolean?*/ gotoEnd){ + // summary: Stops a running animation. + // gotoEnd: If true, the animation will end. + var _t = this; + if(_t._delayTimer){ _t._clearTimer(); } + if(!_t._timer){ return _t; /* dojo.Animation */ } + _t._stopTimer(); + if(gotoEnd){ + _t._percent = 1; + } + _t._fire("onStop", [_t.curve.getValue(_t._getStep())]); + _t._active = _t._paused = false; + return _t; // dojo.Animation + }, + + status: function(){ + // summary: + // Returns a string token representation of the status of + // the animation, one of: "paused", "playing", "stopped" + if(this._active){ + return this._paused ? "paused" : "playing"; // String + } + return "stopped"; // String + }, + + _cycle: function(){ + var _t = this; + if(_t._active){ + var curr = new Date().valueOf(); + var step = (curr - _t._startTime) / (_t.duration); + + if(step >= 1){ + step = 1; + } + _t._percent = step; + + // Perform easing + if(_t.easing){ + step = _t.easing(step); + } + + _t._fire("onAnimate", [_t.curve.getValue(step)]); + + if(_t._percent < 1){ + _t._startTimer(); + }else{ + _t._active = false; + + if(_t.repeat > 0){ + _t.repeat--; + _t.play(null, true); + }else if(_t.repeat == -1){ + _t.play(null, true); + }else{ + if(_t._startRepeatCount){ + _t.repeat = _t._startRepeatCount; + _t._startRepeatCount = 0; + } + } + _t._percent = 0; + _t._fire("onEnd", [_t.node]); + !_t.repeat && _t._stopTimer(); + } + } + return _t; // dojo.Animation + }, + + _clearTimer: function(){ + // summary: Clear the play delay timer + clearTimeout(this._delayTimer); + delete this._delayTimer; + } + + }); + + // the local timer, stubbed into all Animation instances + var ctr = 0, + timer = null, + runner = { + run: function(){} + }; + + lang.extend(dojo.Animation, { + + _startTimer: function(){ + if(!this._timer){ + this._timer = connect.connect(runner, "run", this, "_cycle"); + ctr++; + } + if(!timer){ + timer = setInterval(lang.hitch(runner, "run"), this.rate); + } + }, + + _stopTimer: function(){ + if(this._timer){ + connect.disconnect(this._timer); + this._timer = null; + ctr--; + } + if(ctr <= 0){ + clearInterval(timer); + timer = null; + ctr = 0; + } + } + + }); + + var _makeFadeable = + //>>excludeStart("webkitMobile", kwArgs.webkitMobile); + has("ie") ? function(node){ + // only set the zoom if the "tickle" value would be the same as the + // default + var ns = node.style; + // don't set the width to auto if it didn't already cascade that way. + // We don't want to f anyones designs + if(!ns.width.length && style.get(node, "width") == "auto"){ + ns.width = "auto"; + } + } : + //>>excludeEnd("webkitMobile"); + function(){}; + + dojo._fade = function(/*Object*/ args){ + // summary: + // Returns an animation that will fade the node defined by + // args.node from the start to end values passed (args.start + // args.end) (end is mandatory, start is optional) + + args.node = dom.byId(args.node); + var fArgs = _mixin({ properties: {} }, args), + props = (fArgs.properties.opacity = {}); + + props.start = !("start" in fArgs) ? + function(){ + return +style.get(fArgs.node, "opacity")||0; + } : fArgs.start; + props.end = fArgs.end; + + var anim = dojo.animateProperty(fArgs); + connect.connect(anim, "beforeBegin", lang.partial(_makeFadeable, fArgs.node)); + + return anim; // dojo.Animation + }; + + /*===== + dojo.__FadeArgs = function(node, duration, easing){ + // node: DOMNode|String + // The node referenced in the animation + // duration: Integer? + // Duration of the animation in milliseconds. + // easing: Function? + // An easing function. + this.node = node; + this.duration = duration; + this.easing = easing; + } + =====*/ + + dojo.fadeIn = function(/*dojo.__FadeArgs*/ args){ + // summary: + // Returns an animation that will fade node defined in 'args' from + // its current opacity to fully opaque. + return dojo._fade(_mixin({ end: 1 }, args)); // dojo.Animation + }; + + dojo.fadeOut = function(/*dojo.__FadeArgs*/ args){ + // summary: + // Returns an animation that will fade node defined in 'args' + // from its current opacity to fully transparent. + return dojo._fade(_mixin({ end: 0 }, args)); // dojo.Animation + }; + + dojo._defaultEasing = function(/*Decimal?*/ n){ + // summary: The default easing function for dojo.Animation(s) + return 0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2); // Decimal + }; + + var PropLine = function(properties){ + // PropLine is an internal class which is used to model the values of + // an a group of CSS properties across an animation lifecycle. In + // particular, the "getValue" function handles getting interpolated + // values between start and end for a particular CSS value. + this._properties = properties; + for(var p in properties){ + var prop = properties[p]; + if(prop.start instanceof Color){ + // create a reusable temp color object to keep intermediate results + prop.tempColor = new Color(); + } + } + }; + + PropLine.prototype.getValue = function(r){ + var ret = {}; + for(var p in this._properties){ + var prop = this._properties[p], + start = prop.start; + if(start instanceof Color){ + ret[p] = Color.blendColors(start, prop.end, r, prop.tempColor).toCss(); + }else if(!lang.isArray(start)){ + ret[p] = ((prop.end - start) * r) + start + (p != "opacity" ? prop.units || "px" : 0); + } + } + return ret; + }; + + /*===== + dojo.declare("dojo.__AnimArgs", [dojo.__FadeArgs], { + // Properties: Object? + // A hash map of style properties to Objects describing the transition, + // such as the properties of dojo._Line with an additional 'units' property + properties: {} + + //TODOC: add event callbacks + }); + =====*/ + + dojo.animateProperty = function(/*dojo.__AnimArgs*/ args){ + // summary: + // Returns an animation that will transition the properties of + // node defined in `args` depending how they are defined in + // `args.properties` + // + // description: + // `dojo.animateProperty` is the foundation of most `dojo.fx` + // animations. It takes an object of "properties" corresponding to + // style properties, and animates them in parallel over a set + // duration. + // + // example: + // A simple animation that changes the width of the specified node. + // | dojo.animateProperty({ + // | node: "nodeId", + // | properties: { width: 400 }, + // | }).play(); + // Dojo figures out the start value for the width and converts the + // integer specified for the width to the more expressive but + // verbose form `{ width: { end: '400', units: 'px' } }` which you + // can also specify directly. Defaults to 'px' if ommitted. + // + // example: + // Animate width, height, and padding over 2 seconds... the + // pedantic way: + // | dojo.animateProperty({ node: node, duration:2000, + // | properties: { + // | width: { start: '200', end: '400', units:"px" }, + // | height: { start:'200', end: '400', units:"px" }, + // | paddingTop: { start:'5', end:'50', units:"px" } + // | } + // | }).play(); + // Note 'paddingTop' is used over 'padding-top'. Multi-name CSS properties + // are written using "mixed case", as the hyphen is illegal as an object key. + // + // example: + // Plug in a different easing function and register a callback for + // when the animation ends. Easing functions accept values between + // zero and one and return a value on that basis. In this case, an + // exponential-in curve. + // | dojo.animateProperty({ + // | node: "nodeId", + // | // dojo figures out the start value + // | properties: { width: { end: 400 } }, + // | easing: function(n){ + // | return (n==0) ? 0 : Math.pow(2, 10 * (n - 1)); + // | }, + // | onEnd: function(node){ + // | // called when the animation finishes. The animation + // | // target is passed to this function + // | } + // | }).play(500); // delay playing half a second + // + // example: + // Like all `dojo.Animation`s, animateProperty returns a handle to the + // Animation instance, which fires the events common to Dojo FX. Use `dojo.connect` + // to access these events outside of the Animation definiton: + // | var anim = dojo.animateProperty({ + // | node:"someId", + // | properties:{ + // | width:400, height:500 + // | } + // | }); + // | dojo.connect(anim,"onEnd", function(){ + // | console.log("animation ended"); + // | }); + // | // play the animation now: + // | anim.play(); + // + // example: + // Each property can be a function whose return value is substituted along. + // Additionally, each measurement (eg: start, end) can be a function. The node + // reference is passed direcly to callbacks. + // | dojo.animateProperty({ + // | node:"mine", + // | properties:{ + // | height:function(node){ + // | // shrink this node by 50% + // | return dojo.position(node).h / 2 + // | }, + // | width:{ + // | start:function(node){ return 100; }, + // | end:function(node){ return 200; } + // | } + // | } + // | }).play(); + // + + var n = args.node = dom.byId(args.node); + if(!args.easing){ args.easing = dojo._defaultEasing; } + + var anim = new dojo.Animation(args); + connect.connect(anim, "beforeBegin", anim, function(){ + var pm = {}; + for(var p in this.properties){ + // Make shallow copy of properties into pm because we overwrite + // some values below. In particular if start/end are functions + // we don't want to overwrite them or the functions won't be + // called if the animation is reused. + if(p == "width" || p == "height"){ + this.node.display = "block"; + } + var prop = this.properties[p]; + if(lang.isFunction(prop)){ + prop = prop(n); + } + prop = pm[p] = _mixin({}, (lang.isObject(prop) ? prop: { end: prop })); + + if(lang.isFunction(prop.start)){ + prop.start = prop.start(n); + } + if(lang.isFunction(prop.end)){ + prop.end = prop.end(n); + } + var isColor = (p.toLowerCase().indexOf("color") >= 0); + function getStyle(node, p){ + // dojo.style(node, "height") can return "auto" or "" on IE; this is more reliable: + var v = { height: node.offsetHeight, width: node.offsetWidth }[p]; + if(v !== undefined){ return v; } + v = style.get(node, p); + return (p == "opacity") ? +v : (isColor ? v : parseFloat(v)); + } + if(!("end" in prop)){ + prop.end = getStyle(n, p); + }else if(!("start" in prop)){ + prop.start = getStyle(n, p); + } + + if(isColor){ + prop.start = new Color(prop.start); + prop.end = new Color(prop.end); + }else{ + prop.start = (p == "opacity") ? +prop.start : parseFloat(prop.start); + } + } + this.curve = new PropLine(pm); + }); + connect.connect(anim, "onAnimate", lang.hitch(style, "set", anim.node)); + return anim; // dojo.Animation + }; + + dojo.anim = function( /*DOMNode|String*/ node, + /*Object*/ properties, + /*Integer?*/ duration, + /*Function?*/ easing, + /*Function?*/ onEnd, + /*Integer?*/ delay){ + // summary: + // A simpler interface to `dojo.animateProperty()`, also returns + // an instance of `dojo.Animation` but begins the animation + // immediately, unlike nearly every other Dojo animation API. + // description: + // `dojo.anim` is a simpler (but somewhat less powerful) version + // of `dojo.animateProperty`. It uses defaults for many basic properties + // and allows for positional parameters to be used in place of the + // packed "property bag" which is used for other Dojo animation + // methods. + // + // The `dojo.Animation` object returned from `dojo.anim` will be + // already playing when it is returned from this function, so + // calling play() on it again is (usually) a no-op. + // node: + // a DOM node or the id of a node to animate CSS properties on + // duration: + // The number of milliseconds over which the animation + // should run. Defaults to the global animation default duration + // (350ms). + // easing: + // An easing function over which to calculate acceleration + // and deceleration of the animation through its duration. + // A default easing algorithm is provided, but you may + // plug in any you wish. A large selection of easing algorithms + // are available in `dojo.fx.easing`. + // onEnd: + // A function to be called when the animation finishes + // running. + // delay: + // The number of milliseconds to delay beginning the + // animation by. The default is 0. + // example: + // Fade out a node + // | dojo.anim("id", { opacity: 0 }); + // example: + // Fade out a node over a full second + // | dojo.anim("id", { opacity: 0 }, 1000); + return dojo.animateProperty({ // dojo.Animation + node: node, + duration: duration || dojo.Animation.prototype.duration, + properties: properties, + easing: easing, + onEnd: onEnd + }).play(delay || 0); + }; + + return { + _Line: dojo._Line, + Animation: dojo.Animation, + _fade: dojo._fade, + fadeIn: dojo.fadeIn, + fadeOut: dojo.fadeOut, + _defaultEasing: dojo._defaultEasing, + animateProperty: dojo.animateProperty, + anim: dojo.anim + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/html.js b/js/dojo-release-1.7.2-src/dojo/_base/html.js new file mode 100644 index 0000000..3fe6adc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/html.js @@ -0,0 +1,389 @@ +define(["./kernel", "../dom", "../dom-style", "../dom-attr", "../dom-prop", "../dom-class", "../dom-construct", "../dom-geometry"], function(dojo, dom, style, attr, prop, cls, ctr, geom){ + // module: + // dojo/dom + // summary: + // This module is a stub for the core dojo DOM API. + + // mix-in dom + dojo.byId = dom.byId; + dojo.isDescendant = dom.isDescendant; + dojo.setSelectable = dom.setSelectable; + + // mix-in dom-attr + dojo.getAttr = attr.get; + dojo.setAttr = attr.set; + dojo.hasAttr = attr.has; + dojo.removeAttr = attr.remove; + dojo.getNodeProp = attr.getNodeProp; + + dojo.attr = function(node, name, value){ + // summary: + // Gets or sets an attribute on an HTML element. + // description: + // Handles normalized getting and setting of attributes on DOM + // Nodes. If 2 arguments are passed, and a the second argument is a + // string, acts as a getter. + // + // If a third argument is passed, or if the second argument is a + // map of attributes, acts as a setter. + // + // When passing functions as values, note that they will not be + // directly assigned to slots on the node, but rather the default + // behavior will be removed and the new behavior will be added + // using `dojo.connect()`, meaning that event handler properties + // will be normalized and that some caveats with regards to + // non-standard behaviors for onsubmit apply. Namely that you + // should cancel form submission using `dojo.stopEvent()` on the + // passed event object instead of returning a boolean value from + // the handler itself. + // node: DOMNode|String + // id or reference to the element to get or set the attribute on + // name: String|Object + // the name of the attribute to get or set. + // value: String? + // The value to set for the attribute + // returns: + // when used as a getter, the value of the requested attribute + // or null if that attribute does not have a specified or + // default value; + // + // when used as a setter, the DOM node + // + // example: + // | // get the current value of the "foo" attribute on a node + // | dojo.attr(dojo.byId("nodeId"), "foo"); + // | // or we can just pass the id: + // | dojo.attr("nodeId", "foo"); + // + // example: + // | // use attr() to set the tab index + // | dojo.attr("nodeId", "tabIndex", 3); + // | + // + // example: + // Set multiple values at once, including event handlers: + // | dojo.attr("formId", { + // | "foo": "bar", + // | "tabIndex": -1, + // | "method": "POST", + // | "onsubmit": function(e){ + // | // stop submitting the form. Note that the IE behavior + // | // of returning true or false will have no effect here + // | // since our handler is connect()ed to the built-in + // | // onsubmit behavior and so we need to use + // | // dojo.stopEvent() to ensure that the submission + // | // doesn't proceed. + // | dojo.stopEvent(e); + // | + // | // submit the form with Ajax + // | dojo.xhrPost({ form: "formId" }); + // | } + // | }); + // + // example: + // Style is s special case: Only set with an object hash of styles + // | dojo.attr("someNode",{ + // | id:"bar", + // | style:{ + // | width:"200px", height:"100px", color:"#000" + // | } + // | }); + // + // example: + // Again, only set style as an object hash of styles: + // | var obj = { color:"#fff", backgroundColor:"#000" }; + // | dojo.attr("someNode", "style", obj); + // | + // | // though shorter to use `dojo.style()` in this case: + // | dojo.style("someNode", obj); + + if(arguments.length == 2){ + return attr[typeof name == "string" ? "get" : "set"](node, name); + } + return attr.set(node, name, value); + }; + + // mix-in dom-class + dojo.hasClass = cls.contains; + dojo.addClass = cls.add; + dojo.removeClass = cls.remove; + dojo.toggleClass = cls.toggle; + dojo.replaceClass = cls.replace; + + // mix-in dom-construct + dojo._toDom = dojo.toDom = ctr.toDom; + dojo.place = ctr.place; + dojo.create = ctr.create; + dojo.empty = function(node){ ctr.empty(node); }; + dojo._destroyElement = dojo.destroy = function(node){ ctr.destroy(node); }; + + // mix-in dom-geometry + dojo._getPadExtents = dojo.getPadExtents = geom.getPadExtents; + dojo._getBorderExtents = dojo.getBorderExtents = geom.getBorderExtents; + dojo._getPadBorderExtents = dojo.getPadBorderExtents = geom.getPadBorderExtents; + dojo._getMarginExtents = dojo.getMarginExtents = geom.getMarginExtents; + dojo._getMarginSize = dojo.getMarginSize = geom.getMarginSize; + dojo._getMarginBox = dojo.getMarginBox = geom.getMarginBox; + dojo.setMarginBox = geom.setMarginBox; + dojo._getContentBox = dojo.getContentBox = geom.getContentBox; + dojo.setContentSize = geom.setContentSize; + dojo._isBodyLtr = dojo.isBodyLtr = geom.isBodyLtr; + dojo._docScroll = dojo.docScroll = geom.docScroll; + dojo._getIeDocumentElementOffset = dojo.getIeDocumentElementOffset = geom.getIeDocumentElementOffset; + dojo._fixIeBiDiScrollLeft = dojo.fixIeBiDiScrollLeft = geom.fixIeBiDiScrollLeft; + dojo.position = geom.position; + + dojo.marginBox = function marginBox(/*DomNode|String*/node, /*Object?*/box){ + // summary: + // Getter/setter for the margin-box of node. + // description: + // Getter/setter for the margin-box of node. + // Returns an object in the expected format of box (regardless + // if box is passed). The object might look like: + // `{ l: 50, t: 200, w: 300: h: 150 }` + // for a node offset from its parent 50px to the left, 200px from + // the top with a margin width of 300px and a margin-height of + // 150px. + // node: + // id or reference to DOM Node to get/set box for + // box: + // If passed, denotes that dojo.marginBox() should + // update/set the margin box for node. Box is an object in the + // above format. All properties are optional if passed. + // example: + // Retrieve the margin box of a passed node + // | var box = dojo.marginBox("someNodeId"); + // | console.dir(box); + // + // example: + // Set a node's margin box to the size of another node + // | var box = dojo.marginBox("someNodeId"); + // | dojo.marginBox("someOtherNode", box); + return box ? geom.setMarginBox(node, box) : geom.getMarginBox(node); // Object + }; + + dojo.contentBox = function contentBox(/*DomNode|String*/node, /*Object?*/box){ + // summary: + // Getter/setter for the content-box of node. + // description: + // Returns an object in the expected format of box (regardless if box is passed). + // The object might look like: + // `{ l: 50, t: 200, w: 300: h: 150 }` + // for a node offset from its parent 50px to the left, 200px from + // the top with a content width of 300px and a content-height of + // 150px. Note that the content box may have a much larger border + // or margin box, depending on the box model currently in use and + // CSS values set/inherited for node. + // While the getter will return top and left values, the + // setter only accepts setting the width and height. + // node: + // id or reference to DOM Node to get/set box for + // box: + // If passed, denotes that dojo.contentBox() should + // update/set the content box for node. Box is an object in the + // above format, but only w (width) and h (height) are supported. + // All properties are optional if passed. + return box ? geom.setContentSize(node, box) : geom.getContentBox(node); // Object + }; + + dojo.coords = function(/*DomNode|String*/node, /*Boolean?*/includeScroll){ + // summary: + // Deprecated: Use position() for border-box x/y/w/h + // or marginBox() for margin-box w/h/l/t. + // Returns an object representing a node's size and position. + // + // description: + // Returns an object that measures margin-box (w)idth/(h)eight + // and absolute position x/y of the border-box. Also returned + // is computed (l)eft and (t)op values in pixels from the + // node's offsetParent as returned from marginBox(). + // Return value will be in the form: + //| { l: 50, t: 200, w: 300: h: 150, x: 100, y: 300 } + // Does not act as a setter. If includeScroll is passed, the x and + // y params are affected as one would expect in dojo.position(). + dojo.deprecated("dojo.coords()", "Use dojo.position() or dojo.marginBox()."); + node = dom.byId(node); + var s = style.getComputedStyle(node), mb = geom.getMarginBox(node, s); + var abs = geom.position(node, includeScroll); + mb.x = abs.x; + mb.y = abs.y; + return mb; // Object + }; + + // mix-in dom-prop + dojo.getProp = prop.get; + dojo.setProp = prop.set; + + dojo.prop = function(/*DomNode|String*/node, /*String|Object*/name, /*String?*/value){ + // summary: + // Gets or sets a property on an HTML element. + // description: + // Handles normalized getting and setting of properties on DOM + // Nodes. If 2 arguments are passed, and a the second argument is a + // string, acts as a getter. + // + // If a third argument is passed, or if the second argument is a + // map of attributes, acts as a setter. + // + // When passing functions as values, note that they will not be + // directly assigned to slots on the node, but rather the default + // behavior will be removed and the new behavior will be added + // using `dojo.connect()`, meaning that event handler properties + // will be normalized and that some caveats with regards to + // non-standard behaviors for onsubmit apply. Namely that you + // should cancel form submission using `dojo.stopEvent()` on the + // passed event object instead of returning a boolean value from + // the handler itself. + // node: + // id or reference to the element to get or set the property on + // name: + // the name of the property to get or set. + // value: + // The value to set for the property + // returns: + // when used as a getter, the value of the requested property + // or null if that attribute does not have a specified or + // default value; + // + // when used as a setter, the DOM node + // + // example: + // | // get the current value of the "foo" property on a node + // | dojo.prop(dojo.byId("nodeId"), "foo"); + // | // or we can just pass the id: + // | dojo.prop("nodeId", "foo"); + // + // example: + // | // use prop() to set the tab index + // | dojo.prop("nodeId", "tabIndex", 3); + // | + // + // example: + // Set multiple values at once, including event handlers: + // | dojo.prop("formId", { + // | "foo": "bar", + // | "tabIndex": -1, + // | "method": "POST", + // | "onsubmit": function(e){ + // | // stop submitting the form. Note that the IE behavior + // | // of returning true or false will have no effect here + // | // since our handler is connect()ed to the built-in + // | // onsubmit behavior and so we need to use + // | // dojo.stopEvent() to ensure that the submission + // | // doesn't proceed. + // | dojo.stopEvent(e); + // | + // | // submit the form with Ajax + // | dojo.xhrPost({ form: "formId" }); + // | } + // | }); + // + // example: + // Style is s special case: Only set with an object hash of styles + // | dojo.prop("someNode",{ + // | id:"bar", + // | style:{ + // | width:"200px", height:"100px", color:"#000" + // | } + // | }); + // + // example: + // Again, only set style as an object hash of styles: + // | var obj = { color:"#fff", backgroundColor:"#000" }; + // | dojo.prop("someNode", "style", obj); + // | + // | // though shorter to use `dojo.style()` in this case: + // | dojo.style("someNode", obj); + + if(arguments.length == 2){ + return prop[typeof name == "string" ? "get" : "set"](node, name); + } + // setter + return prop.set(node, name, value); + }; + + // mix-in dom-style + dojo.getStyle = style.get; + dojo.setStyle = style.set; + dojo.getComputedStyle = style.getComputedStyle; + dojo.__toPixelValue = dojo.toPixelValue = style.toPixelValue; + + dojo.style = function(node, name, value){ + // summary: + // Accesses styles on a node. If 2 arguments are + // passed, acts as a getter. If 3 arguments are passed, acts + // as a setter. + // description: + // Getting the style value uses the computed style for the node, so the value + // will be a calculated value, not just the immediate node.style value. + // Also when getting values, use specific style names, + // like "borderBottomWidth" instead of "border" since compound values like + // "border" are not necessarily reflected as expected. + // If you want to get node dimensions, use `dojo.marginBox()`, + // `dojo.contentBox()` or `dojo.position()`. + // node: DOMNode|String + // id or reference to node to get/set style for + // name: String?|Object? + // the style property to set in DOM-accessor format + // ("borderWidth", not "border-width") or an object with key/value + // pairs suitable for setting each property. + // value: String? + // If passed, sets value on the node for style, handling + // cross-browser concerns. When setting a pixel value, + // be sure to include "px" in the value. For instance, top: "200px". + // Otherwise, in some cases, some browsers will not apply the style. + // returns: + // when used as a getter, return the computed style of the node if passing in an ID or node, + // or return the normalized, computed value for the property when passing in a node and a style property + // example: + // Passing only an ID or node returns the computed style object of + // the node: + // | dojo.style("thinger"); + // example: + // Passing a node and a style property returns the current + // normalized, computed value for that property: + // | dojo.style("thinger", "opacity"); // 1 by default + // + // example: + // Passing a node, a style property, and a value changes the + // current display of the node and returns the new computed value + // | dojo.style("thinger", "opacity", 0.5); // == 0.5 + // + // example: + // Passing a node, an object-style style property sets each of the values in turn and returns the computed style object of the node: + // | dojo.style("thinger", { + // | "opacity": 0.5, + // | "border": "3px solid black", + // | "height": "300px" + // | }); + // + // example: + // When the CSS style property is hyphenated, the JavaScript property is camelCased. + // font-size becomes fontSize, and so on. + // | dojo.style("thinger",{ + // | fontSize:"14pt", + // | letterSpacing:"1.2em" + // | }); + // + // example: + // dojo.NodeList implements .style() using the same syntax, omitting the "node" parameter, calling + // dojo.style() on every element of the list. See: `dojo.query()` and `dojo.NodeList()` + // | dojo.query(".someClassName").style("visibility","hidden"); + // | // or + // | dojo.query("#baz > div").style({ + // | opacity:0.75, + // | fontSize:"13pt" + // | }); + + switch(arguments.length){ + case 1: + return style.get(node); + case 2: + return style[typeof name == "string" ? "get" : "set"](node, name); + } + // setter + return style.set(node, name, value); + }; + + return dojo; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/json.js b/js/dojo-release-1.7.2-src/dojo/_base/json.js new file mode 100644 index 0000000..4a35bb8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/json.js @@ -0,0 +1,85 @@ +define(["./kernel", "../json"], function(dojo, json){ + // module: + // dojo/_base/json + // summary: + // This module defines the dojo JSON API. + +dojo.fromJson = function(/*String*/ js){ + // summary: + // Parses a JavaScript expression and returns a JavaScript value. + // description: + // Throws for invalid JavaScript expressions. It does not use a strict JSON parser. It + // always delegates to eval(). The content passed to this method must therefore come + // from a trusted source. + // It is recommend that you use dojo/json's parse function for an + // implementation uses the (faster) native JSON parse when available. + // js: + // a string literal of a JavaScript expression, for instance: + // `'{ "foo": [ "bar", 1, { "baz": "thud" } ] }'` + + return eval("(" + js + ")"); // Object +}; + +/*===== +dojo._escapeString = function(){ + // summary: + // Adds escape sequences for non-visual characters, double quote and + // backslash and surrounds with double quotes to form a valid string + // literal. +}; +=====*/ +dojo._escapeString = json.stringify; // just delegate to json.stringify + +dojo.toJsonIndentStr = "\t"; +dojo.toJson = function(/*Object*/ it, /*Boolean?*/ prettyPrint){ + // summary: + // Returns a [JSON](http://json.org) serialization of an object. + // description: + // Returns a [JSON](http://json.org) serialization of an object. + // Note that this doesn't check for infinite recursion, so don't do that! + // It is recommend that you use dojo/json's stringify function for an lighter + // and faster implementation that matches the native JSON API and uses the + // native JSON serializer when available. + // it: + // an object to be serialized. Objects may define their own + // serialization via a special "__json__" or "json" function + // property. If a specialized serializer has been defined, it will + // be used as a fallback. + // Note that in 1.6, toJson would serialize undefined, but this no longer supported + // since it is not supported by native JSON serializer. + // prettyPrint: + // if true, we indent objects and arrays to make the output prettier. + // The variable `dojo.toJsonIndentStr` is used as the indent string -- + // to use something other than the default (tab), change that variable + // before calling dojo.toJson(). + // Note that if native JSON support is available, it will be used for serialization, + // and native implementations vary on the exact spacing used in pretty printing. + // returns: + // A JSON string serialization of the passed-in object. + // example: + // simple serialization of a trivial object + // | var jsonStr = dojo.toJson({ howdy: "stranger!", isStrange: true }); + // | doh.is('{"howdy":"stranger!","isStrange":true}', jsonStr); + // example: + // a custom serializer for an objects of a particular class: + // | dojo.declare("Furby", null, { + // | furbies: "are strange", + // | furbyCount: 10, + // | __json__: function(){ + // | }, + // | }); + + // use dojo/json + return json.stringify(it, function(key, value){ + if(value){ + var tf = value.__json__||value.json; + if(typeof tf == "function"){ + return tf.call(value); + } + } + return value; + }, prettyPrint && dojo.toJsonIndentStr); // String +}; + +return dojo; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/kernel.js b/js/dojo-release-1.7.2-src/dojo/_base/kernel.js new file mode 100644 index 0000000..277675c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/kernel.js @@ -0,0 +1,302 @@ +define(["../has", "./config", "require", "module"], function(has, config, require, module){ + // module: + // dojo/_base/kernel + // summary: + // This module is the foundational module of the dojo boot sequence; it defines the dojo object. + var + // loop variables for this module + i, p, + + // create dojo, dijit, and dojox + // FIXME: in 2.0 remove dijit, dojox being created by dojo + dijit = {}, + dojox = {}, + dojo = { + // notice dojo takes ownership of the value of the config module + config:config, + global:this, + dijit:dijit, + dojox:dojox + }; + + + // Configure the scope map. For a 100% AMD application, the scope map is not needed other than to provide + // a _scopeName property for the dojo, dijit, and dojox root object so those packages can create + // unique names in the global space. + // + // Built, legacy modules use the scope map to allow those modules to be expressed as if dojo, dijit, and dojox, + // where global when in fact they are either global under different names or not global at all. In v1.6-, the + // config variable "scopeMap" was used to map names as used within a module to global names. This has been + // subsumed by the dojo packageMap configuration variable which relocates packages to different names. See + // http://livedocs.dojotoolkit.org/developer/design/loader#legacy-cross-domain-mode for details. + // + // The following computations contort the packageMap for this dojo instance into a scopeMap. + var scopeMap = + // a map from a name used in a legacy module to the (global variable name, object addressed by that name) + // always map dojo, dijit, and dojox + { + dojo:["dojo", dojo], + dijit:["dijit", dijit], + dojox:["dojox", dojox] + }, + + packageMap = + // the package map for this dojo instance; note, a foreign loader or no pacakgeMap results in the above default config + (require.packs && require.packs[module.id.match(/[^\/]+/)[0]].packageMap) || {}, + + item; + + // process all mapped top-level names for this instance of dojo + for(p in packageMap){ + if(scopeMap[p]){ + // mapped dojo, dijit, or dojox + scopeMap[p][0] = packageMap[p]; + }else{ + // some other top-level name + scopeMap[p] = [packageMap[p], {}]; + } + } + + // publish those names to _scopeName and, optionally, the global namespace + for(p in scopeMap){ + item = scopeMap[p]; + item[1]._scopeName = item[0]; + if(!config.noGlobals){ + this[item[0]] = item[1]; + } + } + dojo.scopeMap = scopeMap; + + // FIXME: dojo.baseUrl and dojo.config.baseUrl should be deprecated + dojo.baseUrl = dojo.config.baseUrl = require.baseUrl; + dojo.isAsync = !has("dojo-loader") || require.async; + dojo.locale = config.locale; + + /*===== + dojo.version = function(){ + // summary: + // Version number of the Dojo Toolkit + // major: Integer + // Major version. If total version is "1.2.0beta1", will be 1 + // minor: Integer + // Minor version. If total version is "1.2.0beta1", will be 2 + // patch: Integer + // Patch version. If total version is "1.2.0beta1", will be 0 + // flag: String + // Descriptor flag. If total version is "1.2.0beta1", will be "beta1" + // revision: Number + // The SVN rev from which dojo was pulled + this.major = 0; + this.minor = 0; + this.patch = 0; + this.flag = ""; + this.revision = 0; + } + =====*/ + var rev = "$Rev: 27913 $".match(/\d+/); + dojo.version = { + major: 1, minor: 7, patch: 2, flag: "", + revision: rev ? +rev[0] : NaN, + toString: function(){ + var v = dojo.version; + return v.major + "." + v.minor + "." + v.patch + v.flag + " (" + v.revision + ")"; // String + } + }; + + + // If has("extend-dojo") is truthy, then as a dojo module is defined it should push it's definitions + // into the dojo object, and conversely. In 2.0, it will likely be unusual to augment another object + // as a result of defining a module. This has feature gives a way to force 2.0 behavior as the code + // is migrated. Absent specific advice otherwise, set extend-dojo to truthy. + has.add("extend-dojo", 1); + + + dojo.eval = function(scriptText){ + // summary: + // A legacy method created for use exclusively by internal Dojo methods. Do not use this method + // directly unless you understand its possibly-different implications on the platforms your are targeting. + // description: + // Makes an attempt to evaluate scriptText in the global scope. The function works correctly for browsers + // that support indirect eval. + // + // As usual, IE does not. On IE, the only way to implement global eval is to + // use execScript. Unfortunately, execScript does not return a value and breaks some current usages of dojo.eval. + // This implementation uses the technique of executing eval in the scope of a function that is a single scope + // frame below the global scope; thereby coming close to the global scope. Note carefully that + // + // dojo.eval("var pi = 3.14;"); + // + // will define global pi in non-IE environments, but define pi only in a temporary local scope for IE. If you want + // to define a global variable using dojo.eval, write something like + // + // dojo.eval("window.pi = 3.14;") + // scriptText: + // The text to evaluation. + // returns: + // The result of the evaluation. Often `undefined` + }; + + (Function("d", "d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(dojo); + + + if(has("host-rhino")){ + dojo.exit = function(exitcode){ + quit(exitcode); + }; + } else{ + dojo.exit = function(){ + }; + } + + has.add("dojo-guarantee-console", + // ensure that console.log, console.warn, etc. are defined + 1 + ); + if(has("dojo-guarantee-console")){ + typeof console != "undefined" || (console = {}); + // Be careful to leave 'log' always at the end + var cn = [ + "assert", "count", "debug", "dir", "dirxml", "error", "group", + "groupEnd", "info", "profile", "profileEnd", "time", "timeEnd", + "trace", "warn", "log" + ]; + var tn; + i = 0; + while((tn = cn[i++])){ + if(!console[tn]){ + (function(){ + var tcn = tn + ""; + console[tcn] = ('log' in console) ? function(){ + var a = Array.apply({}, arguments); + a.unshift(tcn + ":"); + console["log"](a.join(" ")); + } : function(){}; + console[tcn]._fake = true; + })(); + } + } + } + + has.add("dojo-debug-messages", + // include dojo.deprecated/dojo.experimental implementations + !!config.isDebug + ); + if(has("dojo-debug-messages")){ + dojo.deprecated = function(/*String*/ behaviour, /*String?*/ extra, /*String?*/ removal){ + // summary: + // Log a debug message to indicate that a behavior has been + // deprecated. + // behaviour: String + // The API or behavior being deprecated. Usually in the form + // of "myApp.someFunction()". + // extra: String? + // Text to append to the message. Often provides advice on a + // new function or facility to achieve the same goal during + // the deprecation period. + // removal: String? + // Text to indicate when in the future the behavior will be + // removed. Usually a version number. + // example: + // | dojo.deprecated("myApp.getTemp()", "use myApp.getLocaleTemp() instead", "1.0"); + + var message = "DEPRECATED: " + behaviour; + if(extra){ message += " " + extra; } + if(removal){ message += " -- will be removed in version: " + removal; } + console.warn(message); + }; + + dojo.experimental = function(/* String */ moduleName, /* String? */ extra){ + // summary: Marks code as experimental. + // description: + // This can be used to mark a function, file, or module as + // experimental. Experimental code is not ready to be used, and the + // APIs are subject to change without notice. Experimental code may be + // completed deleted without going through the normal deprecation + // process. + // moduleName: String + // The name of a module, or the name of a module file or a specific + // function + // extra: String? + // some additional message for the user + // example: + // | dojo.experimental("dojo.data.Result"); + // example: + // | dojo.experimental("dojo.weather.toKelvin()", "PENDING approval from NOAA"); + + var message = "EXPERIMENTAL: " + moduleName + " -- APIs subject to change without notice."; + if(extra){ message += " " + extra; } + console.warn(message); + }; + }else{ + dojo.deprecated = dojo.experimental = function(){}; + } + + has.add("dojo-modulePaths", + // consume dojo.modulePaths processing + 1 + ); + if(has("dojo-modulePaths")){ + // notice that modulePaths won't be applied to any require's before the dojo/_base/kernel factory is run; + // this is the v1.6- behavior. + if(config.modulePaths){ + dojo.deprecated("dojo.modulePaths", "use paths configuration"); + var paths = {}; + for(p in config.modulePaths){ + paths[p.replace(/\./g, "/")] = config.modulePaths[p]; + } + require({paths:paths}); + } + } + + has.add("dojo-moduleUrl", + // include dojo.moduleUrl + 1 + ); + if(has("dojo-moduleUrl")){ + dojo.moduleUrl = function(/*String*/module, /*String?*/url){ + // summary: + // Returns a URL relative to a module. + // example: + // | var pngPath = dojo.moduleUrl("acme","images/small.png"); + // | console.dir(pngPath); // list the object properties + // | // create an image and set it's source to pngPath's value: + // | var img = document.createElement("img"); + // | img.src = pngPath; + // | // add our image to the document + // | dojo.body().appendChild(img); + // example: + // you may de-reference as far as you like down the package + // hierarchy. This is sometimes handy to avoid lenghty relative + // urls or for building portable sub-packages. In this example, + // the `acme.widget` and `acme.util` directories may be located + // under different roots (see `dojo.registerModulePath`) but the + // the modules which reference them can be unaware of their + // relative locations on the filesystem: + // | // somewhere in a configuration block + // | dojo.registerModulePath("acme.widget", "../../acme/widget"); + // | dojo.registerModulePath("acme.util", "../../util"); + // | + // | // ... + // | + // | // code in a module using acme resources + // | var tmpltPath = dojo.moduleUrl("acme.widget","templates/template.html"); + // | var dataPath = dojo.moduleUrl("acme.util","resources/data.json"); + + dojo.deprecated("dojo.moduleUrl()", "use require.toUrl", "2.0"); + + // require.toUrl requires a filetype; therefore, just append the suffix "/*.*" to guarantee a filetype, then + // remove the suffix from the result. This way clients can request a url w/out a filetype. This should be + // rare, but it maintains backcompat for the v1.x line (note: dojo.moduleUrl will be removed in v2.0). + // Notice * is an illegal filename so it won't conflict with any real path map that may exist the paths config. + var result = null; + if(module){ + result = require.toUrl(module.replace(/\./g, "/") + (url ? ("/" + url) : "") + "/*.*").replace(/\/\*\.\*/, "") + (url ? "" : "/"); + } + return result; + }; + } + + dojo._hasResource = {}; // for backward compatibility with layers built with 1.6 tooling + + return dojo; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/lang.js b/js/dojo-release-1.7.2-src/dojo/_base/lang.js new file mode 100644 index 0000000..a71c556 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/lang.js @@ -0,0 +1,707 @@ +define(["./kernel", "../has", "./sniff"], function(dojo, has){ + // module: + // dojo/_base/lang + // summary: + // This module defines Javascript language extensions. + + has.add("bug-for-in-skips-shadowed", function(){ + // if true, the for-in interator skips object properties that exist in Object's prototype (IE 6 - ?) + for(var i in {toString: 1}){ + return 0; + } + return 1; + }); + + var _extraNames = + has("bug-for-in-skips-shadowed") ? + "hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split(".") : [], + + _extraLen = _extraNames.length, + + _mixin = function(dest, source, copyFunc){ + var name, s, i, empty = {}; + for(name in source){ + // the (!(name in empty) || empty[name] !== s) condition avoids copying properties in "source" + // inherited from Object.prototype. For example, if dest has a custom toString() method, + // don't overwrite it with the toString() method that source inherited from Object.prototype + s = source[name]; + if(!(name in dest) || (dest[name] !== s && (!(name in empty) || empty[name] !== s))){ + dest[name] = copyFunc ? copyFunc(s) : s; + } + } + + if(has("bug-for-in-skips-shadowed")){ + if(source){ + for(i = 0; i < _extraLen; ++i){ + name = _extraNames[i]; + s = source[name]; + if(!(name in dest) || (dest[name] !== s && (!(name in empty) || empty[name] !== s))){ + dest[name] = copyFunc ? copyFunc(s) : s; + } + } + } + } + + return dest; // Object + }, + + mixin = function(dest, sources){ + if(!dest){ dest = {}; } + for(var i = 1, l = arguments.length; i < l; i++){ + lang._mixin(dest, arguments[i]); + } + return dest; // Object + }, + + getProp = function(/*Array*/parts, /*Boolean*/create, /*Object*/context){ + var p, i = 0, dojoGlobal = dojo.global; + if(!context){ + if(!parts.length){ + return dojoGlobal; + }else{ + p = parts[i++]; + try{ + context = dojo.scopeMap[p] && dojo.scopeMap[p][1]; + }catch(e){} + context = context || (p in dojoGlobal ? dojoGlobal[p] : (create ? dojoGlobal[p] = {} : undefined)); + } + } + while(context && (p = parts[i++])){ + context = (p in context ? context[p] : (create ? context[p] = {} : undefined)); + } + return context; // mixed + }, + + setObject = function(name, value, context){ + var parts = name.split("."), p = parts.pop(), obj = getProp(parts, true, context); + return obj && p ? (obj[p] = value) : undefined; // Object + }, + + getObject = function(name, create, context){ + return getProp(name.split("."), create, context); // Object + }, + + exists = function(name, obj){ + return lang.getObject(name, false, obj) !== undefined; // Boolean + }, + + opts = Object.prototype.toString, + + // Crockford (ish) functions + + isString = function(it){ + return (typeof it == "string" || it instanceof String); // Boolean + }, + + isArray = function(it){ + return it && (it instanceof Array || typeof it == "array"); // Boolean + }, + + isFunction = function(it){ + return opts.call(it) === "[object Function]"; + }, + + isObject = function(it){ + return it !== undefined && + (it === null || typeof it == "object" || lang.isArray(it) || lang.isFunction(it)); // Boolean + }, + + isArrayLike = function(it){ + return it && it !== undefined && // Boolean + // keep out built-in constructors (Number, String, ...) which have length + // properties + !lang.isString(it) && !lang.isFunction(it) && + !(it.tagName && it.tagName.toLowerCase() == 'form') && + (lang.isArray(it) || isFinite(it.length)); + }, + + isAlien = function(it){ + return it && !lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); // Boolean + }, + + extend = function(constructor, props){ + for(var i=1, l=arguments.length; i 2){ + return lang._hitchArgs.apply(dojo, arguments); // Function + } + if(!method){ + method = scope; + scope = null; + } + if(lang.isString(method)){ + scope = scope || dojo.global; + if(!scope[method]){ throw(['dojo.hitch: scope["', method, '"] is null (scope="', scope, '")'].join('')); } + return function(){ return scope[method].apply(scope, arguments || []); }; // Function + } + return !scope ? method : function(){ return method.apply(scope, arguments || []); }; // Function + }, + + delegate = (function(){ + // boodman/crockford delegation w/ cornford optimization + function TMP(){} + return function(obj, props){ + TMP.prototype = obj; + var tmp = new TMP(); + TMP.prototype = null; + if(props){ + lang._mixin(tmp, props); + } + return tmp; // Object + }; + })(), + + efficient = function(obj, offset, startWith){ + return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0)); + }, + + _toArray = + has("ie") ? + (function(){ + function slow(obj, offset, startWith){ + var arr = startWith||[]; + for(var x = offset || 0; x < obj.length; x++){ + arr.push(obj[x]); + } + return arr; + } + return function(obj){ + return ((obj.item) ? slow : efficient).apply(this, arguments); + }; + })() : efficient, + + partial = function(/*Function|String*/method /*, ...*/){ + var arr = [ null ]; + return lang.hitch.apply(dojo, arr.concat(lang._toArray(arguments))); // Function + }, + + clone = function(/*anything*/ src){ + if(!src || typeof src != "object" || lang.isFunction(src)){ + // null, undefined, any non-object, or function + return src; // anything + } + if(src.nodeType && "cloneNode" in src){ + // DOM Node + return src.cloneNode(true); // Node + } + if(src instanceof Date){ + // Date + return new Date(src.getTime()); // Date + } + if(src instanceof RegExp){ + // RegExp + return new RegExp(src); // RegExp + } + var r, i, l; + if(lang.isArray(src)){ + // array + r = []; + for(i = 0, l = src.length; i < l; ++i){ + if(i in src){ + r.push(clone(src[i])); + } + } + // we don't clone functions for performance reasons + // }else if(d.isFunction(src)){ + // // function + // r = function(){ return src.apply(this, arguments); }; + }else{ + // generic objects + r = src.constructor ? new src.constructor() : {}; + } + return lang._mixin(r, src, clone); + }, + + + trim = String.prototype.trim ? + function(str){ return str.trim(); } : + function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }, + + + _pattern = /\{([^\}]+)\}/g, + + replace = function(tmpl, map, pattern){ + return tmpl.replace(pattern || _pattern, lang.isFunction(map) ? + map : function(_, k){ return getObject(k, false, map); }); + }, + + lang = { + _extraNames:_extraNames, + _mixin:_mixin, + mixin:mixin, + setObject:setObject, + getObject:getObject, + exists:exists, + isString:isString, + isArray:isArray, + isFunction:isFunction, + isObject:isObject, + isArrayLike:isArrayLike, + isAlien:isAlien, + extend:extend, + _hitchArgs:_hitchArgs, + hitch:hitch, + delegate:delegate, + _toArray:_toArray, + partial:partial, + clone:clone, + trim:trim, + replace:replace + }; + + has("extend-dojo") && mixin(dojo, lang); + return lang; + + /*===== + dojo._extraNames + // summary: + // Array of strings. Lists property names that must be explicitly processed during for-in interation + // in environments that have has("bug-for-in-skips-shadowed") true. + =====*/ + + /*===== + dojo._mixin = function(dest, source, copyFunc){ + // summary: + // Copies/adds all properties of source to dest; returns dest. + // dest: Object: + // The object to which to copy/add all properties contained in source. + // source: Object: + // The object from which to draw all properties to copy into dest. + // copyFunc: Function?: + // The process used to copy/add a property in source; defaults to the Javascript assignment operator. + // returns: + // dest, as modified + // description: + // All properties, including functions (sometimes termed "methods"), excluding any non-standard extensions + // found in Object.prototype, are copied/added to dest. Copying/adding each particular property is + // delegated to copyFunc (if any); copyFunc defaults to the Javascript assignment operator if not provided. + // Notice that by default, _mixin executes a so-called "shallow copy" and aggregate types are copied/added by reference. + } + =====*/ + + /*===== + dojo.mixin = function(dest, sources){ + // summary: + // Copies/adds all properties of one or more sources to dest; returns dest. + // dest: Object + // The object to which to copy/add all properties contained in source. If dest is falsy, then + // a new object is manufactured before copying/adding properties begins. + // sources: Object... + // One of more objects from which to draw all properties to copy into dest. sources are processed + // left-to-right and if more than one of these objects contain the same property name, the right-most + // value "wins". + // returns: Object + // dest, as modified + // description: + // All properties, including functions (sometimes termed "methods"), excluding any non-standard extensions + // found in Object.prototype, are copied/added from sources to dest. sources are processed left to right. + // The Javascript assignment operator is used to copy/add each property; therefore, by default, mixin + // executes a so-called "shallow copy" and aggregate types are copied/added by reference. + // example: + // make a shallow copy of an object + // | var copy = lang.mixin({}, source); + // example: + // many class constructors often take an object which specifies + // values to be configured on the object. In this case, it is + // often simplest to call `lang.mixin` on the `this` object: + // | dojo.declare("acme.Base", null, { + // | constructor: function(properties){ + // | // property configuration: + // | lang.mixin(this, properties); + // | + // | console.log(this.quip); + // | // ... + // | }, + // | quip: "I wasn't born yesterday, you know - I've seen movies.", + // | // ... + // | }); + // | + // | // create an instance of the class and configure it + // | var b = new acme.Base({quip: "That's what it does!" }); + // example: + // copy in properties from multiple objects + // | var flattened = lang.mixin( + // | { + // | name: "Frylock", + // | braces: true + // | }, + // | { + // | name: "Carl Brutanananadilewski" + // | } + // | ); + // | + // | // will print "Carl Brutanananadilewski" + // | console.log(flattened.name); + // | // will print "true" + // | console.log(flattened.braces); + } + =====*/ + + /*===== + dojo.setObject = function(name, value, context){ + // summary: + // Set a property from a dot-separated string, such as "A.B.C" + // description: + // Useful for longer api chains where you have to test each object in + // the chain, or when you have an object reference in string format. + // Objects are created as needed along `path`. Returns the passed + // value if setting is successful or `undefined` if not. + // name: String + // Path to a property, in the form "A.B.C". + // value: anything + // value or object to place at location given by name + // context: Object? + // Optional. Object to use as root of path. Defaults to + // `dojo.global`. + // example: + // set the value of `foo.bar.baz`, regardless of whether + // intermediate objects already exist: + // | lang.setObject("foo.bar.baz", value); + // example: + // without `lang.setObject`, we often see code like this: + // | // ensure that intermediate objects are available + // | if(!obj["parent"]){ obj.parent = {}; } + // | if(!obj.parent["child"]){ obj.parent.child = {}; } + // | // now we can safely set the property + // | obj.parent.child.prop = "some value"; + // whereas with `lang.setObject`, we can shorten that to: + // | lang.setObject("parent.child.prop", "some value", obj); + } + =====*/ + + /*===== + dojo.getObject = function(name, create, context){ + // summary: + // Get a property from a dot-separated string, such as "A.B.C" + // description: + // Useful for longer api chains where you have to test each object in + // the chain, or when you have an object reference in string format. + // name: String + // Path to an property, in the form "A.B.C". + // create: Boolean? + // Optional. Defaults to `false`. If `true`, Objects will be + // created at any point along the 'path' that is undefined. + // context: Object? + // Optional. Object to use as root of path. Defaults to + // 'dojo.global'. Null may be passed. + } + =====*/ + + /*===== + dojo.exists = function(name, obj){ + // summary: + // determine if an object supports a given method + // description: + // useful for longer api chains where you have to test each object in + // the chain. Useful for object and method detection. + // name: String + // Path to an object, in the form "A.B.C". + // obj: Object? + // Object to use as root of path. Defaults to + // 'dojo.global'. Null may be passed. + // example: + // | // define an object + // | var foo = { + // | bar: { } + // | }; + // | + // | // search the global scope + // | lang.exists("foo.bar"); // true + // | lang.exists("foo.bar.baz"); // false + // | + // | // search from a particular scope + // | lang.exists("bar", foo); // true + // | lang.exists("bar.baz", foo); // false + } + =====*/ + + /*===== + dojo.isString = function(it){ + // summary: + // Return true if it is a String + // it: anything + // Item to test. + } + =====*/ + + /*===== + dojo.isArray = function(it){ + // summary: + // Return true if it is an Array. + // Does not work on Arrays created in other windows. + // it: anything + // Item to test. + } + =====*/ + + /*===== + dojo.isFunction = function(it){ + // summary: + // Return true if it is a Function + // it: anything + // Item to test. + } + =====*/ + + /*===== + dojo.isObject = function(it){ + // summary: + // Returns true if it is a JavaScript object (or an Array, a Function + // or null) + // it: anything + // Item to test. + } + =====*/ + + /*===== + dojo.isArrayLike = function(it){ + // summary: + // similar to dojo.isArray() but more permissive + // it: anything + // Item to test. + // returns: + // If it walks like a duck and quacks like a duck, return `true` + // description: + // Doesn't strongly test for "arrayness". Instead, settles for "isn't + // a string or number and has a length property". Arguments objects + // and DOM collections will return true when passed to + // dojo.isArrayLike(), but will return false when passed to + // dojo.isArray(). + } + =====*/ + + /*===== + dojo.isAlien = function(it){ + // summary: + // Returns true if it is a built-in function or some other kind of + // oddball that *should* report as a function but doesn't + } + =====*/ + + /*===== + dojo.extend = function(constructor, props){ + // summary: + // Adds all properties and methods of props to constructor's + // prototype, making them available to all instances created with + // constructor. + // constructor: Object + // Target constructor to extend. + // props: Object... + // One or more objects to mix into constructor.prototype + } + =====*/ + + /*===== + dojo.hitch = function(scope, method){ + // summary: + // Returns a function that will only ever execute in the a given scope. + // This allows for easy use of object member functions + // in callbacks and other places in which the "this" keyword may + // otherwise not reference the expected scope. + // Any number of default positional arguments may be passed as parameters + // beyond "method". + // Each of these values will be used to "placehold" (similar to curry) + // for the hitched function. + // scope: Object + // The scope to use when method executes. If method is a string, + // scope is also the object containing method. + // method: Function|String... + // A function to be hitched to scope, or the name of the method in + // scope to be hitched. + // example: + // | dojo.hitch(foo, "bar")(); + // runs foo.bar() in the scope of foo + // example: + // | dojo.hitch(foo, myFunction); + // returns a function that runs myFunction in the scope of foo + // example: + // Expansion on the default positional arguments passed along from + // hitch. Passed args are mixed first, additional args after. + // | var foo = { bar: function(a, b, c){ console.log(a, b, c); } }; + // | var fn = dojo.hitch(foo, "bar", 1, 2); + // | fn(3); // logs "1, 2, 3" + // example: + // | var foo = { bar: 2 }; + // | dojo.hitch(foo, function(){ this.bar = 10; })(); + // execute an anonymous function in scope of foo + } + =====*/ + + /*===== + dojo.delegate = function(obj, props){ + // summary: + // Returns a new object which "looks" to obj for properties which it + // does not have a value for. Optionally takes a bag of properties to + // seed the returned object with initially. + // description: + // This is a small implementaton of the Boodman/Crockford delegation + // pattern in JavaScript. An intermediate object constructor mediates + // the prototype chain for the returned object, using it to delegate + // down to obj for property lookup when object-local lookup fails. + // This can be thought of similarly to ES4's "wrap", save that it does + // not act on types but rather on pure objects. + // obj: Object + // The object to delegate to for properties not found directly on the + // return object or in props. + // props: Object... + // an object containing properties to assign to the returned object + // returns: + // an Object of anonymous type + // example: + // | var foo = { bar: "baz" }; + // | var thinger = dojo.delegate(foo, { thud: "xyzzy"}); + // | thinger.bar == "baz"; // delegated to foo + // | foo.thud == undefined; // by definition + // | thinger.thud == "xyzzy"; // mixed in from props + // | foo.bar = "thonk"; + // | thinger.bar == "thonk"; // still delegated to foo's bar + } + =====*/ + + /*===== + dojo.partial = function(method){ + // summary: + // similar to hitch() except that the scope object is left to be + // whatever the execution context eventually becomes. + // method: Function|String + // description: + // Calling dojo.partial is the functional equivalent of calling: + // | dojo.hitch(null, funcName, ...); + } + =====*/ + + /*===== + dojo.trim = function(str){ + // summary: + // Trims whitespace from both sides of the string + // str: String + // String to be trimmed + // returns: String + // Returns the trimmed string + // description: + // This version of trim() was selected for inclusion into the base due + // to its compact size and relatively good performance + // (see [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript) + // Uses String.prototype.trim instead, if available. + // The fastest but longest version of this function is located at + // dojo.string.trim() + } + =====*/ + + /*===== + dojo.clone = function(src){ + // summary: + // Clones objects (including DOM nodes) and all children. + // Warning: do not clone cyclic structures. + // src: + // The object to clone + } + =====*/ + + /*===== + dojo._toArray = function(obj, offset, startWith){ + // summary: + // Converts an array-like object (i.e. arguments, DOMCollection) to an + // array. Returns a new Array with the elements of obj. + // obj: Object + // the object to "arrayify". We expect the object to have, at a + // minimum, a length property which corresponds to integer-indexed + // properties. + // offset: Number? + // the location in obj to start iterating from. Defaults to 0. + // Optional. + // startWith: Array? + // An array to pack with the properties of obj. If provided, + // properties in obj are appended at the end of startWith and + // startWith is the returned array. + } + =====*/ + + /*===== + dojo.replace = function(tmpl, map, pattern){ + // summary: + // Performs parameterized substitutions on a string. Throws an + // exception if any parameter is unmatched. + // tmpl: String + // String to be used as a template. + // map: Object|Function + // If an object, it is used as a dictionary to look up substitutions. + // If a function, it is called for every substitution with following + // parameters: a whole match, a name, an offset, and the whole template + // string (see https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/replace + // for more details). + // pattern: RegEx? + // Optional regular expression objects that overrides the default pattern. + // Must be global and match one item. The default is: /\{([^\}]+)\}/g, + // which matches patterns like that: "{xxx}", where "xxx" is any sequence + // of characters, which doesn't include "}". + // returns: String + // Returns the substituted string. + // example: + // | // uses a dictionary for substitutions: + // | dojo.replace("Hello, {name.first} {name.last} AKA {nick}!", + // | { + // | nick: "Bob", + // | name: { + // | first: "Robert", + // | middle: "X", + // | last: "Cringely" + // | } + // | }); + // | // returns: Hello, Robert Cringely AKA Bob! + // example: + // | // uses an array for substitutions: + // | dojo.replace("Hello, {0} {2}!", + // | ["Robert", "X", "Cringely"]); + // | // returns: Hello, Robert Cringely! + // example: + // | // uses a function for substitutions: + // | function sum(a){ + // | var t = 0; + // | dojo.forEach(a, function(x){ t += x; }); + // | return t; + // | } + // | dojo.replace( + // | "{count} payments averaging {avg} USD per payment.", + // | dojo.hitch( + // | { payments: [11, 16, 12] }, + // | function(_, key){ + // | switch(key){ + // | case "count": return this.payments.length; + // | case "min": return Math.min.apply(Math, this.payments); + // | case "max": return Math.max.apply(Math, this.payments); + // | case "sum": return sum(this.payments); + // | case "avg": return sum(this.payments) / this.payments.length; + // | } + // | } + // | ) + // | ); + // | // prints: 3 payments averaging 13 USD per payment. + // example: + // | // uses an alternative PHP-like pattern for substitutions: + // | dojo.replace("Hello, ${0} ${2}!", + // | ["Robert", "X", "Cringely"], /\$\{([^\}]+)\}/g); + // | // returns: Hello, Robert Cringely! + return ""; // String + } + =====*/ +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/_base/loader.js b/js/dojo-release-1.7.2-src/dojo/_base/loader.js new file mode 100644 index 0000000..be64ab1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/loader.js @@ -0,0 +1,671 @@ +define(["./kernel", "../has", "require", "module", "./json", "./lang", "./array"], function(dojo, has, require, thisModule, json, lang, array) { + // module: + // dojo/_base/lader + // summary: + // This module defines the v1.x synchronous loader API. + + // signal the loader in sync mode... + //>>pure-amd + + if (!has("dojo-loader")){ + console.error("cannot load the Dojo v1.x loader with a foreign loader"); + return 0; + } + + var makeErrorToken = function(id){ + return {src:thisModule.id, id:id}; + }, + + slashName = function(name){ + return name.replace(/\./g, "/"); + }, + + buildDetectRe = /\/\/>>built/, + + dojoRequireCallbacks = [], + dojoRequireModuleStack = [], + + dojoRequirePlugin = function(mid, require, loaded){ + dojoRequireCallbacks.push(loaded); + array.forEach(mid.split(","), function(mid){ + var module = getModule(mid, require.module); + dojoRequireModuleStack.push(module); + injectModule(module); + }); + checkDojoRequirePlugin(); + }, + + touched, + + traverse = function(m){ + if(touched[m.mid] || /loadInit\!/.test(m.mid)){ + // loadInit plugin modules are dependencies of modules in dojoRequireModuleStack... + // which would cause a circular dependency chain that would never be resolved if checked here + // notice all dependencies of any particular loadInit plugin module will already + // be checked since those are pushed into dojoRequireModuleStack explicitly by the + // plugin...so if a particular loadInitPlugin module's dependencies are not really + // on board, that *will* be detected elsewhere in the traversal. + return true; + } + touched[m.mid] = 1; + if(m.injected!==arrived && !m.executed){ + return false; + } + for(var deps = m.deps || [], i= 0; i a built module, always AMD + // extractResult==0 => no sync API + return 0; + } + + // manufacture a synthetic module id that can never be a real mdule id (just like require does) + id = module.mid + "-*loadInit"; + + // construct the dojo/loadInit names vector which causes any relocated names to be defined as lexical variables under their not-relocated name + // the dojo/loadInit plugin assumes the first name in names is "dojo" + + for(var p in getModule("dojo", module).result.scopeMap){ + names.push(p); + namesAsStrings.push('"' + p + '"'); + } + + // rewrite the module as a synthetic dojo/loadInit plugin resource + the module expressed as an AMD module that depends on this synthetic resource + return "// xdomain rewrite of " + module.path + "\n" + + "define('" + id + "',{\n" + + "\tnames:" + dojo.toJson(names) + ",\n" + + "\tdef:function(" + names.join(",") + "){" + extractResult[1] + "}" + + "});\n\n" + + "define(" + dojo.toJson(names.concat(["dojo/loadInit!"+id])) + ", function(" + names.join(",") + "){\n" + extractResult[0] + "});"; + }, + + loaderVars = require.initSyncLoader(dojoRequirePlugin, checkDojoRequirePlugin, transformToAmd), + + sync = + loaderVars.sync, + + xd = + loaderVars.xd, + + arrived = + loaderVars.arrived, + + nonmodule = + loaderVars.nonmodule, + + executing = + loaderVars.executing, + + executed = + loaderVars.executed, + + syncExecStack = + loaderVars.syncExecStack, + + modules = + loaderVars.modules, + + execQ = + loaderVars.execQ, + + getModule = + loaderVars.getModule, + + injectModule = + loaderVars.injectModule, + + setArrived = + loaderVars.setArrived, + + signal = + loaderVars.signal, + + finishExec = + loaderVars.finishExec, + + execModule = + loaderVars.execModule, + + getLegacyMode = + loaderVars.getLegacyMode; + + dojo.provide = function(mid){ + var executingModule = syncExecStack[0], + module = lang.mixin(getModule(slashName(mid), require.module), { + executed:executing, + result:lang.getObject(mid, true) + }); + setArrived(module); + if(executingModule){ + (executingModule.provides || (executingModule.provides = [])).push(function(){ + module.result = lang.getObject(mid); + delete module.provides; + module.executed!==executed && finishExec(module); + }); + }// else dojo.provide called not consequent to loading; therefore, give up trying to publish module value to loader namespace + return module.result; + }; + + has.add("config-publishRequireResult", 1, 0, 0); + + dojo.require = function(moduleName, omitModuleCheck) { + // summary: + // loads a Javascript module from the appropriate URI + // + // moduleName: String + // module name to load, using periods for separators, + // e.g. "dojo.date.locale". Module paths are de-referenced by dojo's + // internal mapping of locations to names and are disambiguated by + // longest prefix. See `dojo.registerModulePath()` for details on + // registering new modules. + // + // omitModuleCheck: Boolean? + // if `true`, omitModuleCheck skips the step of ensuring that the + // loaded file actually defines the symbol it is referenced by. + // For example if it called as `dojo.require("a.b.c")` and the + // file located at `a/b/c.js` does not define an object `a.b.c`, + // and exception will be throws whereas no exception is raised + // when called as `dojo.require("a.b.c", true)` + // + // description: + // Modules are loaded via dojo.require by using one of two loaders: the normal loader + // and the xdomain loader. The xdomain loader is used when dojo was built with a + // custom build that specified loader=xdomain and the module lives on a modulePath + // that is a whole URL, with protocol and a domain. The versions of Dojo that are on + // the Google and AOL CDNs use the xdomain loader. + // + // If the module is loaded via the xdomain loader, it is an asynchronous load, since + // the module is added via a dynamically created script tag. This + // means that dojo.require() can return before the module has loaded. However, this + // should only happen in the case where you do dojo.require calls in the top-level + // HTML page, or if you purposely avoid the loader checking for dojo.require + // dependencies in your module by using a syntax like dojo["require"] to load the module. + // + // Sometimes it is useful to not have the loader detect the dojo.require calls in the + // module so that you can dynamically load the modules as a result of an action on the + // page, instead of right at module load time. + // + // Also, for script blocks in an HTML page, the loader does not pre-process them, so + // it does not know to download the modules before the dojo.require calls occur. + // + // So, in those two cases, when you want on-the-fly module loading or for script blocks + // in the HTML page, special care must be taken if the dojo.required code is loaded + // asynchronously. To make sure you can execute code that depends on the dojo.required + // modules, be sure to add the code that depends on the modules in a dojo.addOnLoad() + // callback. dojo.addOnLoad waits for all outstanding modules to finish loading before + // executing. + // + // This type of syntax works with both xdomain and normal loaders, so it is good + // practice to always use this idiom for on-the-fly code loading and in HTML script + // blocks. If at some point you change loaders and where the code is loaded from, + // it will all still work. + // + // More on how dojo.require + // `dojo.require("A.B")` first checks to see if symbol A.B is + // defined. If it is, it is simply returned (nothing to do). + // + // If it is not defined, it will look for `A/B.js` in the script root + // directory. + // + // `dojo.require` throws an exception if it cannot find a file + // to load, or if the symbol `A.B` is not defined after loading. + // + // It returns the object `A.B`, but note the caveats above about on-the-fly loading and + // HTML script blocks when the xdomain loader is loading a module. + // + // `dojo.require()` does nothing about importing symbols into + // the current namespace. It is presumed that the caller will + // take care of that. + // + // example: + // To use dojo.require in conjunction with dojo.ready: + // + // | dojo.require("foo"); + // | dojo.require("bar"); + // | dojo.addOnLoad(function(){ + // | //you can now safely do something with foo and bar + // | }); + // + // example: + // For example, to import all symbols into a local block, you might write: + // + // | with (dojo.require("A.B")) { + // | ... + // | } + // + // And to import just the leaf symbol to a local variable: + // + // | var B = dojo.require("A.B"); + // | ... + // + // returns: + // the required namespace object + function doRequire(mid, omitModuleCheck){ + var module = getModule(slashName(mid), require.module); + if(syncExecStack.length && syncExecStack[0].finish){ + // switched to async loading in the middle of evaluating a legacy module; stop + // applying dojo.require so the remaining dojo.requires are applied in order + syncExecStack[0].finish.push(mid); + return undefined; + } + + // recall module.executed has values {0, executing, executed}; therefore, truthy indicates executing or executed + if(module.executed){ + return module.result; + } + omitModuleCheck && (module.result = nonmodule); + + var currentMode = getLegacyMode(); + + // recall, in sync mode to inject is to *eval* the module text + // if the module is a legacy module, this is the same as executing + // but if the module is an AMD module, this means defining, not executing + injectModule(module); + // the inject may have changed the mode + currentMode = getLegacyMode(); + + // in sync mode to dojo.require is to execute + if(module.executed!==executed && module.injected===arrived){ + // the module was already here before injectModule was called probably finishing up a xdomain + // load, but maybe a module given to the loader directly rather than having the loader retrieve it + loaderVars.holdIdle(); + execModule(module); + loaderVars.releaseIdle(); + } + if(module.executed){ + return module.result; + } + + if(currentMode==sync){ + // the only way to get here is in sync mode and dojo.required a module that + // * was loaded async in the injectModule application a few lines up + // * was an AMD module that had deps that are being loaded async and therefore couldn't execute + if(module.cjs){ + // the module was an AMD module; unshift, not push, which causes the current traversal to be reattempted from the top + execQ.unshift(module); + }else{ + // the module was a legacy module + syncExecStack.length && (syncExecStack[0].finish= [mid]); + } + }else{ + // the loader wasn't in sync mode on entry; probably async mode; therefore, no expectation of getting + // the module value synchronously; make sure it gets executed though + execQ.push(module); + } + return undefined; + } + + var result = doRequire(moduleName, omitModuleCheck); + if(has("config-publishRequireResult") && !lang.exists(moduleName) && result!==undefined){ + lang.setObject(moduleName, result); + } + return result; + }; + + dojo.loadInit = function(f) { + f(); + }; + + dojo.registerModulePath = function(/*String*/moduleName, /*String*/prefix){ + // summary: + // Maps a module name to a path + // description: + // An unregistered module is given the default path of ../[module], + // relative to Dojo root. For example, module acme is mapped to + // ../acme. If you want to use a different module name, use + // dojo.registerModulePath. + // example: + // If your dojo.js is located at this location in the web root: + // | /myapp/js/dojo/dojo/dojo.js + // and your modules are located at: + // | /myapp/js/foo/bar.js + // | /myapp/js/foo/baz.js + // | /myapp/js/foo/thud/xyzzy.js + // Your application can tell Dojo to locate the "foo" namespace by calling: + // | dojo.registerModulePath("foo", "../../foo"); + // At which point you can then use dojo.require() to load the + // modules (assuming they provide() the same things which are + // required). The full code might be: + // | + // | + + var paths = {}; + paths[moduleName.replace(/\./g, "/")] = prefix; + require({paths:paths}); + }; + + dojo.platformRequire = function(/*Object*/modMap){ + // summary: + // require one or more modules based on which host environment + // Dojo is currently operating in + // description: + // This method takes a "map" of arrays which one can use to + // optionally load dojo modules. The map is indexed by the + // possible dojo.name_ values, with two additional values: + // "default" and "common". The items in the "default" array will + // be loaded if none of the other items have been choosen based on + // dojo.name_, set by your host environment. The items in the + // "common" array will *always* be loaded, regardless of which + // list is chosen. + // example: + // | dojo.platformRequire({ + // | browser: [ + // | "foo.sample", // simple module + // | "foo.test", + // | ["foo.bar.baz", true] // skip object check in _loadModule (dojo.require) + // | ], + // | default: [ "foo.sample._base" ], + // | common: [ "important.module.common" ] + // | }); + + var result = (modMap.common || []).concat(modMap[dojo._name] || modMap["default"] || []), + temp; + while(result.length){ + if(lang.isArray(temp = result.shift())){ + dojo.require.apply(dojo, temp); + }else{ + dojo.require(temp); + } + } + }; + + dojo.requireIf = dojo.requireAfterIf = function(/*Boolean*/ condition, /*String*/ moduleName, /*Boolean?*/omitModuleCheck){ + // summary: + // If the condition is true then call `dojo.require()` for the specified + // resource + // + // example: + // | dojo.requireIf(dojo.isBrowser, "my.special.Module"); + + if(condition){ + dojo.require(moduleName, omitModuleCheck); + } + }; + + dojo.requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale){ + require(["../i18n"], function(i18n){ + i18n.getLocalization(moduleName, bundleName, locale); + }); + }; + + return { + extractLegacyApiApplications:extractLegacyApiApplications, + require:loaderVars.dojoRequirePlugin, + loadInit:dojoLoadInitPlugin + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/query.js b/js/dojo-release-1.7.2-src/dojo/_base/query.js new file mode 100644 index 0000000..0520710 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/query.js @@ -0,0 +1,3 @@ +define(["./kernel", "../query", "./NodeList"], function(dojo){ + return dojo.query; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/sniff.js b/js/dojo-release-1.7.2-src/dojo/_base/sniff.js new file mode 100644 index 0000000..948efbf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/sniff.js @@ -0,0 +1,187 @@ +define(["./kernel", "../has"], function(dojo, has){ + // module: + // dojo/sniff + // summary: + // This module populates the dojo browser version sniffing properties. + + if(!has("host-browser")){ + return has; + } + + dojo.isBrowser = true, + dojo._name = "browser"; + + var hasAdd = has.add, + n = navigator, + dua = n.userAgent, + dav = n.appVersion, + tv = parseFloat(dav), + isOpera, + isAIR, + isKhtml, + isWebKit, + isChrome, + isMac, + isSafari, + isMozilla , + isMoz, + isIE, + isFF, + isQuirks, + isIos, + isAndroid, + isWii; + + /*===== + dojo.isBrowser = { + // example: + // | if(dojo.isBrowser){ ... } + }; + + dojo.isFF = { + // example: + // | if(dojo.isFF > 1){ ... } + }; + + dojo.isIE = { + // example: + // | if(dojo.isIE > 6){ + // | // we are IE7 + // | } + }; + + dojo.isSafari = { + // example: + // | if(dojo.isSafari){ ... } + // example: + // Detect iPhone: + // | if(dojo.isSafari && navigator.userAgent.indexOf("iPhone") != -1){ + // | // we are iPhone. Note, iPod touch reports "iPod" above and fails this test. + // | } + }; + + dojo.mixin(dojo, { + // isBrowser: Boolean + // True if the client is a web-browser + isBrowser: true, + // isFF: Number | undefined + // Version as a Number if client is FireFox. undefined otherwise. Corresponds to + // major detected FireFox version (1.5, 2, 3, etc.) + isFF: 2, + // isIE: Number | undefined + // Version as a Number if client is MSIE(PC). undefined otherwise. Corresponds to + // major detected IE version (6, 7, 8, etc.) + isIE: 6, + // isKhtml: Number | undefined + // Version as a Number if client is a KHTML browser. undefined otherwise. Corresponds to major + // detected version. + isKhtml: 0, + // isWebKit: Number | undefined + // Version as a Number if client is a WebKit-derived browser (Konqueror, + // Safari, Chrome, etc.). undefined otherwise. + isWebKit: 0, + // isMozilla: Number | undefined + // Version as a Number if client is a Mozilla-based browser (Firefox, + // SeaMonkey). undefined otherwise. Corresponds to major detected version. + isMozilla: 0, + // isOpera: Number | undefined + // Version as a Number if client is Opera. undefined otherwise. Corresponds to + // major detected version. + isOpera: 0, + // isSafari: Number | undefined + // Version as a Number if client is Safari or iPhone. undefined otherwise. + isSafari: 0, + // isChrome: Number | undefined + // Version as a Number if client is Chrome browser. undefined otherwise. + isChrome: 0, + // isMac: Boolean + // True if the client runs on Mac + isMac: 0, + // isIos: Boolean + // True if client is iPhone, iPod, or iPad + isIos: 0, + // isAndroid: Number | undefined + // Version as a Number if client is android browser. undefined otherwise. + isAndroid: 0, + // isWii: Boolean + // True if client is Wii + isWii: 0 + }); + =====*/ + + // fill in the rendering support information in dojo.render.* + if(dua.indexOf("AdobeAIR") >= 0){ isAIR = 1; } + isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : 0; + isWebKit = parseFloat(dua.split("WebKit/")[1]) || undefined; + isChrome = parseFloat(dua.split("Chrome/")[1]) || undefined; + isMac = dav.indexOf("Macintosh") >= 0; + isIos = /iPhone|iPod|iPad/.test(dua); + isAndroid = parseFloat(dua.split("Android ")[1]) || undefined; + isWii = typeof opera != "undefined" && opera.wiiremote; + + // safari detection derived from: + // http://developer.apple.com/internet/safari/faq.html#anchor2 + // http://developer.apple.com/internet/safari/uamatrix.html + var index = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0); + if(index && !isChrome){ + // try to grab the explicit Safari version first. If we don't get + // one, look for less than 419.3 as the indication that we're on something + // "Safari 2-ish". + isSafari = parseFloat(dav.split("Version/")[1]); + if(!isSafari || parseFloat(dav.substr(index + 7)) <= 419.3){ + isSafari = 2; + } + } + + if (!has("dojo-webkit")) { + if(dua.indexOf("Opera") >= 0){ + isOpera = tv; + // see http://dev.opera.com/articles/view/opera-ua-string-changes and http://www.useragentstring.com/pages/Opera/ + // 9.8 has both styles; <9.8, 9.9 only old style + if(isOpera >= 9.8){ + isOpera = parseFloat(dua.split("Version/")[1]) || tv; + } + } + + if(dua.indexOf("Gecko") >= 0 && !isKhtml && !isWebKit){ + isMozilla = isMoz = tv; + } + if(isMoz){ + //We really need to get away from this. Consider a sane isGecko approach for the future. + isFF = parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined; + } + if(document.all && !isOpera){ + isIE = parseFloat(dav.split("MSIE ")[1]) || undefined; + //In cases where the page has an HTTP header or META tag with + //X-UA-Compatible, then it is in emulation mode. + //Make sure isIE reflects the desired version. + //document.documentMode of 5 means quirks mode. + //Only switch the value if documentMode's major version + //is different from isIE's major version. + var mode = document.documentMode; + if(mode && mode != 5 && Math.floor(isIE) != mode){ + isIE = mode; + } + } + } + + isQuirks = document.compatMode == "BackCompat"; + + hasAdd("opera", dojo.isOpera = isOpera); + hasAdd("air", dojo.isAIR = isAIR); + hasAdd("khtml", dojo.isKhtml = isKhtml); + hasAdd("webkit", dojo.isWebKit = isWebKit); + hasAdd("chrome", dojo.isChrome = isChrome); + hasAdd("mac", dojo.isMac = isMac ); + hasAdd("safari", dojo.isSafari = isSafari); + hasAdd("mozilla", dojo.isMozilla = dojo.isMoz = isMozilla ); + hasAdd("ie", dojo.isIE = isIE ); + hasAdd("ff", dojo.isFF = isFF); + hasAdd("quirks", dojo.isQuirks = isQuirks); + hasAdd("ios", dojo.isIos = isIos); + hasAdd("android", dojo.isAndroid = isAndroid); + + dojo.locale = dojo.locale || (isIE ? n.userLanguage : n.language).toLowerCase(); + + return has; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/unload.js b/js/dojo-release-1.7.2-src/dojo/_base/unload.js new file mode 100644 index 0000000..26f00df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/unload.js @@ -0,0 +1,81 @@ +define(["./kernel", "./connect"], function(dojo, connect) { + // module: + // dojo/unload + // summary: + // This module contains the document and window unload detection API. + + var win = window; + + /*===== + dojo.windowUnloaded = function(){ + // summary: + // signal fired by impending window destruction. You may use + // dojo.addOnWindowUnload() to register a listener for this + // event. NOTE: if you wish to dojo.connect() to this method + // to perform page/application cleanup, be aware that this + // event WILL NOT fire if no handler has been registered with + // dojo.addOnWindowUnload. This behavior started in Dojo 1.3. + // Previous versions always triggered dojo.windowUnloaded. See + // dojo.addOnWindowUnload for more info. + }; + =====*/ + + dojo.addOnWindowUnload = function(/*Object?|Function?*/obj, /*String|Function?*/functionName){ + // summary: + // registers a function to be triggered when window.onunload + // fires. + // description: + // The first time that addOnWindowUnload is called Dojo + // will register a page listener to trigger your unload + // handler with. Note that registering these handlers may + // destory "fastback" page caching in browsers that support + // it. Be careful trying to modify the DOM or access + // JavaScript properties during this phase of page unloading: + // they may not always be available. Consider + // dojo.addOnUnload() if you need to modify the DOM or do + // heavy JavaScript work since it fires at the eqivalent of + // the page's "onbeforeunload" event. + // example: + // | dojo.addOnWindowUnload(functionPointer) + // | dojo.addOnWindowUnload(object, "functionName"); + // | dojo.addOnWindowUnload(object, function(){ /* ... */}); + + if (!dojo.windowUnloaded) { + connect.connect(win, "unload", (dojo.windowUnloaded= function(){})); + } + connect.connect(win, "unload", obj, functionName); + }; + + dojo.addOnUnload = function(/*Object?|Function?*/obj, /*String|Function?*/functionName){ + // summary: + // registers a function to be triggered when the page unloads. + // description: + // The first time that addOnUnload is called Dojo will + // register a page listener to trigger your unload handler + // with. + // + // In a browser enviroment, the functions will be triggered + // during the window.onbeforeunload event. Be careful of doing + // too much work in an unload handler. onbeforeunload can be + // triggered if a link to download a file is clicked, or if + // the link is a javascript: link. In these cases, the + // onbeforeunload event fires, but the document is not + // actually destroyed. So be careful about doing destructive + // operations in a dojo.addOnUnload callback. + // + // Further note that calling dojo.addOnUnload will prevent + // browsers from using a "fast back" cache to make page + // loading via back button instantaneous. + // example: + // | dojo.addOnUnload(functionPointer) + // | dojo.addOnUnload(object, "functionName") + // | dojo.addOnUnload(object, function(){ /* ... */}); + + connect.connect(win, "beforeunload", obj, functionName); + }; + + return { + addOnWindowUnload: dojo.addOnWindowUnload, + addOnUnload: dojo.addOnUnload + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/url.js b/js/dojo-release-1.7.2-src/dojo/_base/url.js new file mode 100644 index 0000000..74ada72 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/url.js @@ -0,0 +1,111 @@ +define(["./kernel"], function(dojo) { + // module: + // dojo/url + // summary: + // This module contains dojo._Url + + var + ore = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"), + ire = new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"), + _Url = function(){ + var n = null, + _a = arguments, + uri = [_a[0]]; + // resolve uri components relative to each other + for(var i = 1; i<_a.length; i++){ + if(!_a[i]){ continue; } + + // Safari doesn't support this.constructor so we have to be explicit + // FIXME: Tracked (and fixed) in Webkit bug 3537. + // http://bugs.webkit.org/show_bug.cgi?id=3537 + var relobj = new _Url(_a[i]+""), + uriobj = new _Url(uri[0]+""); + + if( + relobj.path == "" && + !relobj.scheme && + !relobj.authority && + !relobj.query + ){ + if(relobj.fragment != n){ + uriobj.fragment = relobj.fragment; + } + relobj = uriobj; + }else if(!relobj.scheme){ + relobj.scheme = uriobj.scheme; + + if(!relobj.authority){ + relobj.authority = uriobj.authority; + + if(relobj.path.charAt(0) != "/"){ + var path = uriobj.path.substring(0, + uriobj.path.lastIndexOf("/") + 1) + relobj.path; + + var segs = path.split("/"); + for(var j = 0; j < segs.length; j++){ + if(segs[j] == "."){ + // flatten "./" references + if(j == segs.length - 1){ + segs[j] = ""; + }else{ + segs.splice(j, 1); + j--; + } + }else if(j > 0 && !(j == 1 && segs[0] == "") && + segs[j] == ".." && segs[j-1] != ".."){ + // flatten "../" references + if(j == (segs.length - 1)){ + segs.splice(j, 1); + segs[j - 1] = ""; + }else{ + segs.splice(j - 1, 2); + j -= 2; + } + } + } + relobj.path = segs.join("/"); + } + } + } + + uri = []; + if(relobj.scheme){ + uri.push(relobj.scheme, ":"); + } + if(relobj.authority){ + uri.push("//", relobj.authority); + } + uri.push(relobj.path); + if(relobj.query){ + uri.push("?", relobj.query); + } + if(relobj.fragment){ + uri.push("#", relobj.fragment); + } + } + + this.uri = uri.join(""); + + // break the uri into its main components + var r = this.uri.match(ore); + + this.scheme = r[2] || (r[1] ? "" : n); + this.authority = r[4] || (r[3] ? "" : n); + this.path = r[5]; // can never be undefined + this.query = r[7] || (r[6] ? "" : n); + this.fragment = r[9] || (r[8] ? "" : n); + + if(this.authority != n){ + // server based naming authority + r = this.authority.match(ire); + + this.user = r[3] || n; + this.password = r[4] || n; + this.host = r[6] || r[7]; // ipv6 || ipv4 + this.port = r[9] || n; + } + }; + _Url.prototype.toString = function(){ return this.uri; }; + + return dojo._Url = _Url; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/window.js b/js/dojo-release-1.7.2-src/dojo/_base/window.js new file mode 100644 index 0000000..06092e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/window.js @@ -0,0 +1,126 @@ +define(["./kernel", "../has", "./sniff"], function(dojo, has){ + // module: + // dojo/window + // summary: + // This module provides an API to save/set/restore the global/document scope. + +/*===== +dojo.doc = { + // summary: + // Alias for the current document. 'dojo.doc' can be modified + // for temporary context shifting. Also see dojo.withDoc(). + // description: + // Refer to dojo.doc rather + // than referring to 'window.document' to ensure your code runs + // correctly in managed contexts. + // example: + // | n.appendChild(dojo.doc.createElement('div')); +} +=====*/ +dojo.doc = this["document"] || null; + +dojo.body = function(){ + // summary: + // Return the body element of the document + // return the body object associated with dojo.doc + // example: + // | dojo.body().appendChild(dojo.doc.createElement('div')); + + // Note: document.body is not defined for a strict xhtml document + // Would like to memoize this, but dojo.doc can change vi dojo.withDoc(). + return dojo.doc.body || dojo.doc.getElementsByTagName("body")[0]; // Node +}; + +dojo.setContext = function(/*Object*/globalObject, /*DocumentElement*/globalDocument){ + // summary: + // changes the behavior of many core Dojo functions that deal with + // namespace and DOM lookup, changing them to work in a new global + // context (e.g., an iframe). The varibles dojo.global and dojo.doc + // are modified as a result of calling this function and the result of + // `dojo.body()` likewise differs. + dojo.global = ret.global = globalObject; + dojo.doc = ret.doc = globalDocument; +}; + +dojo.withGlobal = function( /*Object*/globalObject, + /*Function*/callback, + /*Object?*/thisObject, + /*Array?*/cbArguments){ + // summary: + // Invoke callback with globalObject as dojo.global and + // globalObject.document as dojo.doc. + // description: + // Invoke callback with globalObject as dojo.global and + // globalObject.document as dojo.doc. If provided, globalObject + // will be executed in the context of object thisObject + // When callback() returns or throws an error, the dojo.global + // and dojo.doc will be restored to its previous state. + + var oldGlob = dojo.global; + try{ + dojo.global = ret.global = globalObject; + return dojo.withDoc.call(null, globalObject.document, callback, thisObject, cbArguments); + }finally{ + dojo.global = ret.global = oldGlob; + } +}; + +dojo.withDoc = function( /*DocumentElement*/documentObject, + /*Function*/callback, + /*Object?*/thisObject, + /*Array?*/cbArguments){ + // summary: + // Invoke callback with documentObject as dojo.doc. + // description: + // Invoke callback with documentObject as dojo.doc. If provided, + // callback will be executed in the context of object thisObject + // When callback() returns or throws an error, the dojo.doc will + // be restored to its previous state. + + var oldDoc = dojo.doc, + oldQ = dojo.isQuirks, + oldIE = dojo.isIE, isIE, mode, pwin; + + try{ + dojo.doc = ret.doc = documentObject; + // update dojo.isQuirks and the value of the has feature "quirks" + dojo.isQuirks = has.add("quirks", dojo.doc.compatMode == "BackCompat", true, true); // no need to check for QuirksMode which was Opera 7 only + + if(has("ie")){ + if((pwin = documentObject.parentWindow) && pwin.navigator){ + // re-run IE detection logic and update dojo.isIE / has("ie") + // (the only time parentWindow/navigator wouldn't exist is if we were not + // passed an actual legitimate document object) + isIE = parseFloat(pwin.navigator.appVersion.split("MSIE ")[1]) || undefined; + mode = documentObject.documentMode; + if(mode && mode != 5 && Math.floor(isIE) != mode){ + isIE = mode; + } + dojo.isIE = has.add("ie", isIE, true, true); + } + } + + if(thisObject && typeof callback == "string"){ + callback = thisObject[callback]; + } + + return callback.apply(thisObject, cbArguments || []); + }finally{ + dojo.doc = ret.doc = oldDoc; + dojo.isQuirks = has.add("quirks", oldQ, true, true); + dojo.isIE = has.add("ie", oldIE, true, true); + } +}; + +var ret = { + global: dojo.global, + doc: dojo.doc, + body: dojo.body, + setContext: dojo.setContext, + withGlobal: dojo.withGlobal, + withDoc: dojo.withDoc +}; + +return ret; + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_base/xhr.js b/js/dojo-release-1.7.2-src/dojo/_base/xhr.js new file mode 100644 index 0000000..8a8a8ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_base/xhr.js @@ -0,0 +1,830 @@ +define([ + "./kernel", "./sniff", "require", "../io-query", "../dom", "../dom-form", "./Deferred", "./json", "./lang", "./array", "../on" +], function(dojo, has, require, ioq, dom, domForm, deferred, json, lang, array, on){ + // module: + // dojo/_base.xhr + // summary: + // This modules defines the dojo.xhr* API. + + has.add("native-xhr", function() { + // if true, the environment has a native XHR implementation + return typeof XMLHttpRequest !== 'undefined'; + }); + + if(has("dojo-xhr-factory")){ + dojo._xhrObj = require.getXhr; + }else if (has("native-xhr")){ + dojo._xhrObj = function(){ + // summary: + // does the work of portably generating a new XMLHTTPRequest object. + try{ + return new XMLHttpRequest(); + }catch(e){ + throw new Error("XMLHTTP not available: "+e); + } + }; + }else{ + // PROGIDs are in order of decreasing likelihood; this will change in time. + for(var XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'], progid, i = 0; i < 3;){ + try{ + progid = XMLHTTP_PROGIDS[i++]; + if (new ActiveXObject(progid)) { + // this progid works; therefore, use it from now on + break; + } + }catch(e){ + // squelch; we're just trying to find a good ActiveX PROGID + // if they all fail, then progid ends up as the last attempt and that will signal the error + // the first time the client actually tries to exec an xhr + } + } + dojo._xhrObj= function() { + return new ActiveXObject(progid); + }; + } + + var cfg = dojo.config; + + // mix in io-query and dom-form + dojo.objectToQuery = ioq.objectToQuery; + dojo.queryToObject = ioq.queryToObject; + dojo.fieldToObject = domForm.fieldToObject; + dojo.formToObject = domForm.toObject; + dojo.formToQuery = domForm.toQuery; + dojo.formToJson = domForm.toJson; + + // need to block async callbacks from snatching this thread as the result + // of an async callback might call another sync XHR, this hangs khtml forever + // must checked by watchInFlight() + + dojo._blockAsync = false; + + // MOW: remove dojo._contentHandlers alias in 2.0 + var handlers = dojo._contentHandlers = dojo.contentHandlers = { + // summary: + // A map of availble XHR transport handle types. Name matches the + // `handleAs` attribute passed to XHR calls. + // + // description: + // A map of availble XHR transport handle types. Name matches the + // `handleAs` attribute passed to XHR calls. Each contentHandler is + // called, passing the xhr object for manipulation. The return value + // from the contentHandler will be passed to the `load` or `handle` + // functions defined in the original xhr call. + // + // example: + // Creating a custom content-handler: + // | dojo.contentHandlers.makeCaps = function(xhr){ + // | return xhr.responseText.toUpperCase(); + // | } + // | // and later: + // | dojo.xhrGet({ + // | url:"foo.txt", + // | handleAs:"makeCaps", + // | load: function(data){ /* data is a toUpper version of foo.txt */ } + // | }); + + "text": function(xhr){ + // summary: A contentHandler which simply returns the plaintext response data + return xhr.responseText; + }, + "json": function(xhr){ + // summary: A contentHandler which returns a JavaScript object created from the response data + return json.fromJson(xhr.responseText || null); + }, + "json-comment-filtered": function(xhr){ + // summary: A contentHandler which expects comment-filtered JSON. + // description: + // A contentHandler which expects comment-filtered JSON. + // the json-comment-filtered option was implemented to prevent + // "JavaScript Hijacking", but it is less secure than standard JSON. Use + // standard JSON instead. JSON prefixing can be used to subvert hijacking. + // + // Will throw a notice suggesting to use application/json mimetype, as + // json-commenting can introduce security issues. To decrease the chances of hijacking, + // use the standard `json` contentHandler, and prefix your "JSON" with: {}&& + // + // use djConfig.useCommentedJson = true to turn off the notice + if(!dojo.config.useCommentedJson){ + console.warn("Consider using the standard mimetype:application/json." + + " json-commenting can introduce security issues. To" + + " decrease the chances of hijacking, use the standard the 'json' handler and" + + " prefix your json with: {}&&\n" + + "Use djConfig.useCommentedJson=true to turn off this message."); + } + + var value = xhr.responseText; + var cStartIdx = value.indexOf("\/*"); + var cEndIdx = value.lastIndexOf("*\/"); + if(cStartIdx == -1 || cEndIdx == -1){ + throw new Error("JSON was not comment filtered"); + } + return json.fromJson(value.substring(cStartIdx+2, cEndIdx)); + }, + "javascript": function(xhr){ + // summary: A contentHandler which evaluates the response data, expecting it to be valid JavaScript + + // FIXME: try Moz and IE specific eval variants? + return dojo.eval(xhr.responseText); + }, + "xml": function(xhr){ + // summary: A contentHandler returning an XML Document parsed from the response data + var result = xhr.responseXML; + + if(has("ie")){ + if((!result || !result.documentElement)){ + //WARNING: this branch used by the xml handling in dojo.io.iframe, + //so be sure to test dojo.io.iframe if making changes below. + var ms = function(n){ return "MSXML" + n + ".DOMDocument"; }; + var dp = ["Microsoft.XMLDOM", ms(6), ms(4), ms(3), ms(2)]; + array.some(dp, function(p){ + try{ + var dom = new ActiveXObject(p); + dom.async = false; + dom.loadXML(xhr.responseText); + result = dom; + }catch(e){ return false; } + return true; + }); + } + } + return result; // DOMDocument + }, + "json-comment-optional": function(xhr){ + // summary: A contentHandler which checks the presence of comment-filtered JSON and + // alternates between the `json` and `json-comment-filtered` contentHandlers. + if(xhr.responseText && /^[^{\[]*\/\*/.test(xhr.responseText)){ + return handlers["json-comment-filtered"](xhr); + }else{ + return handlers["json"](xhr); + } + } + }; + + /*===== + dojo.__IoArgs = function(){ + // url: String + // URL to server endpoint. + // content: Object? + // Contains properties with string values. These + // properties will be serialized as name1=value2 and + // passed in the request. + // timeout: Integer? + // Milliseconds to wait for the response. If this time + // passes, the then error callbacks are called. + // form: DOMNode? + // DOM node for a form. Used to extract the form values + // and send to the server. + // preventCache: Boolean? + // Default is false. If true, then a + // "dojo.preventCache" parameter is sent in the request + // with a value that changes with each request + // (timestamp). Useful only with GET-type requests. + // handleAs: String? + // Acceptable values depend on the type of IO + // transport (see specific IO calls for more information). + // rawBody: String? + // Sets the raw body for an HTTP request. If this is used, then the content + // property is ignored. This is mostly useful for HTTP methods that have + // a body to their requests, like PUT or POST. This property can be used instead + // of postData and putData for dojo.rawXhrPost and dojo.rawXhrPut respectively. + // ioPublish: Boolean? + // Set this explicitly to false to prevent publishing of topics related to + // IO operations. Otherwise, if djConfig.ioPublish is set to true, topics + // will be published via dojo.publish for different phases of an IO operation. + // See dojo.__IoPublish for a list of topics that are published. + // load: Function? + // This function will be + // called on a successful HTTP response code. + // error: Function? + // This function will + // be called when the request fails due to a network or server error, the url + // is invalid, etc. It will also be called if the load or handle callback throws an + // exception, unless djConfig.debugAtAllCosts is true. This allows deployed applications + // to continue to run even when a logic error happens in the callback, while making + // it easier to troubleshoot while in debug mode. + // handle: Function? + // This function will + // be called at the end of every request, whether or not an error occurs. + this.url = url; + this.content = content; + this.timeout = timeout; + this.form = form; + this.preventCache = preventCache; + this.handleAs = handleAs; + this.ioPublish = ioPublish; + this.load = function(response, ioArgs){ + // ioArgs: dojo.__IoCallbackArgs + // Provides additional information about the request. + // response: Object + // The response in the format as defined with handleAs. + } + this.error = function(response, ioArgs){ + // ioArgs: dojo.__IoCallbackArgs + // Provides additional information about the request. + // response: Object + // The response in the format as defined with handleAs. + } + this.handle = function(loadOrError, response, ioArgs){ + // loadOrError: String + // Provides a string that tells you whether this function + // was called because of success (load) or failure (error). + // response: Object + // The response in the format as defined with handleAs. + // ioArgs: dojo.__IoCallbackArgs + // Provides additional information about the request. + } + } + =====*/ + + /*===== + dojo.__IoCallbackArgs = function(args, xhr, url, query, handleAs, id, canDelete, json){ + // args: Object + // the original object argument to the IO call. + // xhr: XMLHttpRequest + // For XMLHttpRequest calls only, the + // XMLHttpRequest object that was used for the + // request. + // url: String + // The final URL used for the call. Many times it + // will be different than the original args.url + // value. + // query: String + // For non-GET requests, the + // name1=value1&name2=value2 parameters sent up in + // the request. + // handleAs: String + // The final indicator on how the response will be + // handled. + // id: String + // For dojo.io.script calls only, the internal + // script ID used for the request. + // canDelete: Boolean + // For dojo.io.script calls only, indicates + // whether the script tag that represents the + // request can be deleted after callbacks have + // been called. Used internally to know when + // cleanup can happen on JSONP-type requests. + // json: Object + // For dojo.io.script calls only: holds the JSON + // response for JSONP-type requests. Used + // internally to hold on to the JSON responses. + // You should not need to access it directly -- + // the same object should be passed to the success + // callbacks directly. + this.args = args; + this.xhr = xhr; + this.url = url; + this.query = query; + this.handleAs = handleAs; + this.id = id; + this.canDelete = canDelete; + this.json = json; + } + =====*/ + + + /*===== + dojo.__IoPublish = function(){ + // summary: + // This is a list of IO topics that can be published + // if djConfig.ioPublish is set to true. IO topics can be + // published for any Input/Output, network operation. So, + // dojo.xhr, dojo.io.script and dojo.io.iframe can all + // trigger these topics to be published. + // start: String + // "/dojo/io/start" is sent when there are no outstanding IO + // requests, and a new IO request is started. No arguments + // are passed with this topic. + // send: String + // "/dojo/io/send" is sent whenever a new IO request is started. + // It passes the dojo.Deferred for the request with the topic. + // load: String + // "/dojo/io/load" is sent whenever an IO request has loaded + // successfully. It passes the response and the dojo.Deferred + // for the request with the topic. + // error: String + // "/dojo/io/error" is sent whenever an IO request has errored. + // It passes the error and the dojo.Deferred + // for the request with the topic. + // done: String + // "/dojo/io/done" is sent whenever an IO request has completed, + // either by loading or by erroring. It passes the error and + // the dojo.Deferred for the request with the topic. + // stop: String + // "/dojo/io/stop" is sent when all outstanding IO requests have + // finished. No arguments are passed with this topic. + this.start = "/dojo/io/start"; + this.send = "/dojo/io/send"; + this.load = "/dojo/io/load"; + this.error = "/dojo/io/error"; + this.done = "/dojo/io/done"; + this.stop = "/dojo/io/stop"; + } + =====*/ + + + dojo._ioSetArgs = function(/*dojo.__IoArgs*/args, + /*Function*/canceller, + /*Function*/okHandler, + /*Function*/errHandler){ + // summary: + // sets up the Deferred and ioArgs property on the Deferred so it + // can be used in an io call. + // args: + // The args object passed into the public io call. Recognized properties on + // the args object are: + // canceller: + // The canceller function used for the Deferred object. The function + // will receive one argument, the Deferred object that is related to the + // canceller. + // okHandler: + // The first OK callback to be registered with Deferred. It has the opportunity + // to transform the OK response. It will receive one argument -- the Deferred + // object returned from this function. + // errHandler: + // The first error callback to be registered with Deferred. It has the opportunity + // to do cleanup on an error. It will receive two arguments: error (the + // Error object) and dfd, the Deferred object returned from this function. + + var ioArgs = {args: args, url: args.url}; + + //Get values from form if requestd. + var formObject = null; + if(args.form){ + var form = dom.byId(args.form); + //IE requires going through getAttributeNode instead of just getAttribute in some form cases, + //so use it for all. See #2844 + var actnNode = form.getAttributeNode("action"); + ioArgs.url = ioArgs.url || (actnNode ? actnNode.value : null); + formObject = domForm.toObject(form); + } + + // set up the query params + var miArgs = [{}]; + + if(formObject){ + // potentially over-ride url-provided params w/ form values + miArgs.push(formObject); + } + if(args.content){ + // stuff in content over-rides what's set by form + miArgs.push(args.content); + } + if(args.preventCache){ + miArgs.push({"dojo.preventCache": new Date().valueOf()}); + } + ioArgs.query = ioq.objectToQuery(lang.mixin.apply(null, miArgs)); + + // .. and the real work of getting the deferred in order, etc. + ioArgs.handleAs = args.handleAs || "text"; + var d = new deferred(canceller); + d.addCallbacks(okHandler, function(error){ + return errHandler(error, d); + }); + + //Support specifying load, error and handle callback functions from the args. + //For those callbacks, the "this" object will be the args object. + //The callbacks will get the deferred result value as the + //first argument and the ioArgs object as the second argument. + var ld = args.load; + if(ld && lang.isFunction(ld)){ + d.addCallback(function(value){ + return ld.call(args, value, ioArgs); + }); + } + var err = args.error; + if(err && lang.isFunction(err)){ + d.addErrback(function(value){ + return err.call(args, value, ioArgs); + }); + } + var handle = args.handle; + if(handle && lang.isFunction(handle)){ + d.addBoth(function(value){ + return handle.call(args, value, ioArgs); + }); + } + + //Plug in topic publishing, if dojo.publish is loaded. + if(cfg.ioPublish && dojo.publish && ioArgs.args.ioPublish !== false){ + d.addCallbacks( + function(res){ + dojo.publish("/dojo/io/load", [d, res]); + return res; + }, + function(res){ + dojo.publish("/dojo/io/error", [d, res]); + return res; + } + ); + d.addBoth(function(res){ + dojo.publish("/dojo/io/done", [d, res]); + return res; + }); + } + + d.ioArgs = ioArgs; + + // FIXME: need to wire up the xhr object's abort method to something + // analagous in the Deferred + return d; + }; + + var _deferredCancel = function(/*Deferred*/dfd){ + // summary: canceller function for dojo._ioSetArgs call. + + dfd.canceled = true; + var xhr = dfd.ioArgs.xhr; + var _at = typeof xhr.abort; + if(_at == "function" || _at == "object" || _at == "unknown"){ + xhr.abort(); + } + var err = dfd.ioArgs.error; + if(!err){ + err = new Error("xhr cancelled"); + err.dojoType="cancel"; + } + return err; + }; + var _deferredOk = function(/*Deferred*/dfd){ + // summary: okHandler function for dojo._ioSetArgs call. + + var ret = handlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr); + return ret === undefined ? null : ret; + }; + var _deferError = function(/*Error*/error, /*Deferred*/dfd){ + // summary: errHandler function for dojo._ioSetArgs call. + + if(!dfd.ioArgs.args.failOk){ + console.error(error); + } + return error; + }; + + // avoid setting a timer per request. It degrades performance on IE + // something fierece if we don't use unified loops. + var _inFlightIntvl = null; + var _inFlight = []; + + + //Use a separate count for knowing if we are starting/stopping io calls. + //Cannot use _inFlight.length since it can change at a different time than + //when we want to do this kind of test. We only want to decrement the count + //after a callback/errback has finished, since the callback/errback should be + //considered as part of finishing a request. + var _pubCount = 0; + var _checkPubCount = function(dfd){ + if(_pubCount <= 0){ + _pubCount = 0; + if(cfg.ioPublish && dojo.publish && (!dfd || dfd && dfd.ioArgs.args.ioPublish !== false)){ + dojo.publish("/dojo/io/stop"); + } + } + }; + + var _watchInFlight = function(){ + //summary: + // internal method that checks each inflight XMLHttpRequest to see + // if it has completed or if the timeout situation applies. + + var now = (new Date()).getTime(); + // make sure sync calls stay thread safe, if this callback is called + // during a sync call and this results in another sync call before the + // first sync call ends the browser hangs + if(!dojo._blockAsync){ + // we need manual loop because we often modify _inFlight (and therefore 'i') while iterating + // note: the second clause is an assigment on purpose, lint may complain + for(var i = 0, tif; i < _inFlight.length && (tif = _inFlight[i]); i++){ + var dfd = tif.dfd; + var func = function(){ + if(!dfd || dfd.canceled || !tif.validCheck(dfd)){ + _inFlight.splice(i--, 1); + _pubCount -= 1; + }else if(tif.ioCheck(dfd)){ + _inFlight.splice(i--, 1); + tif.resHandle(dfd); + _pubCount -= 1; + }else if(dfd.startTime){ + //did we timeout? + if(dfd.startTime + (dfd.ioArgs.args.timeout || 0) < now){ + _inFlight.splice(i--, 1); + var err = new Error("timeout exceeded"); + err.dojoType = "timeout"; + dfd.errback(err); + //Cancel the request so the io module can do appropriate cleanup. + dfd.cancel(); + _pubCount -= 1; + } + } + }; + if(dojo.config.debugAtAllCosts){ + func.call(this); + }else{ +// try{ + func.call(this); + /* }catch(e){ + dfd.errback(e); + }*/ + } + } + } + + _checkPubCount(dfd); + + if(!_inFlight.length){ + clearInterval(_inFlightIntvl); + _inFlightIntvl = null; + } + }; + + dojo._ioCancelAll = function(){ + //summary: Cancels all pending IO requests, regardless of IO type + //(xhr, script, iframe). + try{ + array.forEach(_inFlight, function(i){ + try{ + i.dfd.cancel(); + }catch(e){/*squelch*/} + }); + }catch(e){/*squelch*/} + }; + + //Automatically call cancel all io calls on unload + //in IE for trac issue #2357. + if(has("ie")){ + on(window, "unload", dojo._ioCancelAll); + } + + dojo._ioNotifyStart = function(/*Deferred*/dfd){ + // summary: + // If dojo.publish is available, publish topics + // about the start of a request queue and/or the + // the beginning of request. + // description: + // Used by IO transports. An IO transport should + // call this method before making the network connection. + if(cfg.ioPublish && dojo.publish && dfd.ioArgs.args.ioPublish !== false){ + if(!_pubCount){ + dojo.publish("/dojo/io/start"); + } + _pubCount += 1; + dojo.publish("/dojo/io/send", [dfd]); + } + }; + + dojo._ioWatch = function(dfd, validCheck, ioCheck, resHandle){ + // summary: + // Watches the io request represented by dfd to see if it completes. + // dfd: Deferred + // The Deferred object to watch. + // validCheck: Function + // Function used to check if the IO request is still valid. Gets the dfd + // object as its only argument. + // ioCheck: Function + // Function used to check if basic IO call worked. Gets the dfd + // object as its only argument. + // resHandle: Function + // Function used to process response. Gets the dfd + // object as its only argument. + var args = dfd.ioArgs.args; + if(args.timeout){ + dfd.startTime = (new Date()).getTime(); + } + + _inFlight.push({dfd: dfd, validCheck: validCheck, ioCheck: ioCheck, resHandle: resHandle}); + if(!_inFlightIntvl){ + _inFlightIntvl = setInterval(_watchInFlight, 50); + } + // handle sync requests + //A weakness: async calls in flight + //could have their handlers called as part of the + //_watchInFlight call, before the sync's callbacks + // are called. + if(args.sync){ + _watchInFlight(); + } + }; + + var _defaultContentType = "application/x-www-form-urlencoded"; + + var _validCheck = function(/*Deferred*/dfd){ + return dfd.ioArgs.xhr.readyState; //boolean + }; + var _ioCheck = function(/*Deferred*/dfd){ + return 4 == dfd.ioArgs.xhr.readyState; //boolean + }; + var _resHandle = function(/*Deferred*/dfd){ + var xhr = dfd.ioArgs.xhr; + if(dojo._isDocumentOk(xhr)){ + dfd.callback(dfd); + }else{ + var err = new Error("Unable to load " + dfd.ioArgs.url + " status:" + xhr.status); + err.status = xhr.status; + err.responseText = xhr.responseText; + err.xhr = xhr; + dfd.errback(err); + } + }; + + dojo._ioAddQueryToUrl = function(/*dojo.__IoCallbackArgs*/ioArgs){ + //summary: Adds query params discovered by the io deferred construction to the URL. + //Only use this for operations which are fundamentally GET-type operations. + if(ioArgs.query.length){ + ioArgs.url += (ioArgs.url.indexOf("?") == -1 ? "?" : "&") + ioArgs.query; + ioArgs.query = null; + } + }; + + /*===== + dojo.declare("dojo.__XhrArgs", dojo.__IoArgs, { + constructor: function(){ + // summary: + // In addition to the properties listed for the dojo._IoArgs type, + // the following properties are allowed for dojo.xhr* methods. + // handleAs: String? + // Acceptable values are: text (default), json, json-comment-optional, + // json-comment-filtered, javascript, xml. See `dojo.contentHandlers` + // sync: Boolean? + // false is default. Indicates whether the request should + // be a synchronous (blocking) request. + // headers: Object? + // Additional HTTP headers to send in the request. + // failOk: Boolean? + // false is default. Indicates whether a request should be + // allowed to fail (and therefore no console error message in + // the event of a failure) + // contentType: String|Boolean + // "application/x-www-form-urlencoded" is default. Set to false to + // prevent a Content-Type header from being sent, or to a string + // to send a different Content-Type. + this.handleAs = handleAs; + this.sync = sync; + this.headers = headers; + this.failOk = failOk; + } + }); + =====*/ + + dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args, /*Boolean?*/ hasBody){ + // summary: + // Sends an HTTP request with the given method. + // description: + // Sends an HTTP request with the given method. + // See also dojo.xhrGet(), xhrPost(), xhrPut() and dojo.xhrDelete() for shortcuts + // for those HTTP methods. There are also methods for "raw" PUT and POST methods + // via dojo.rawXhrPut() and dojo.rawXhrPost() respectively. + // method: + // HTTP method to be used, such as GET, POST, PUT, DELETE. Should be uppercase. + // hasBody: + // If the request has an HTTP body, then pass true for hasBody. + + //Make the Deferred object for this xhr request. + var dfd = dojo._ioSetArgs(args, _deferredCancel, _deferredOk, _deferError); + var ioArgs = dfd.ioArgs; + + //Pass the args to _xhrObj, to allow alternate XHR calls based specific calls, like + //the one used for iframe proxies. + var xhr = ioArgs.xhr = dojo._xhrObj(ioArgs.args); + //If XHR factory fails, cancel the deferred. + if(!xhr){ + dfd.cancel(); + return dfd; + } + + //Allow for specifying the HTTP body completely. + if("postData" in args){ + ioArgs.query = args.postData; + }else if("putData" in args){ + ioArgs.query = args.putData; + }else if("rawBody" in args){ + ioArgs.query = args.rawBody; + }else if((arguments.length > 2 && !hasBody) || "POST|PUT".indexOf(method.toUpperCase()) == -1){ + //Check for hasBody being passed. If no hasBody, + //then only append query string if not a POST or PUT request. + dojo._ioAddQueryToUrl(ioArgs); + } + + // IE 6 is a steaming pile. It won't let you call apply() on the native function (xhr.open). + // workaround for IE6's apply() "issues" + xhr.open(method, ioArgs.url, args.sync !== true, args.user || undefined, args.password || undefined); + if(args.headers){ + for(var hdr in args.headers){ + if(hdr.toLowerCase() === "content-type" && !args.contentType){ + args.contentType = args.headers[hdr]; + }else if(args.headers[hdr]){ + //Only add header if it has a value. This allows for instnace, skipping + //insertion of X-Requested-With by specifying empty value. + xhr.setRequestHeader(hdr, args.headers[hdr]); + } + } + } + // FIXME: is this appropriate for all content types? + if(args.contentType !== false){ + xhr.setRequestHeader("Content-Type", args.contentType || _defaultContentType); + } + if(!args.headers || !("X-Requested-With" in args.headers)){ + xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); + } + // FIXME: set other headers here! + dojo._ioNotifyStart(dfd); + if(dojo.config.debugAtAllCosts){ + xhr.send(ioArgs.query); + }else{ + try{ + xhr.send(ioArgs.query); + }catch(e){ + ioArgs.error = e; + dfd.cancel(); + } + } + dojo._ioWatch(dfd, _validCheck, _ioCheck, _resHandle); + xhr = null; + return dfd; // dojo.Deferred + }; + + dojo.xhrGet = function(/*dojo.__XhrArgs*/ args){ + // summary: + // Sends an HTTP GET request to the server. + return dojo.xhr("GET", args); // dojo.Deferred + }; + + dojo.rawXhrPost = dojo.xhrPost = function(/*dojo.__XhrArgs*/ args){ + // summary: + // Sends an HTTP POST request to the server. In addtion to the properties + // listed for the dojo.__XhrArgs type, the following property is allowed: + // postData: + // String. Send raw data in the body of the POST request. + return dojo.xhr("POST", args, true); // dojo.Deferred + }; + + dojo.rawXhrPut = dojo.xhrPut = function(/*dojo.__XhrArgs*/ args){ + // summary: + // Sends an HTTP PUT request to the server. In addtion to the properties + // listed for the dojo.__XhrArgs type, the following property is allowed: + // putData: + // String. Send raw data in the body of the PUT request. + return dojo.xhr("PUT", args, true); // dojo.Deferred + }; + + dojo.xhrDelete = function(/*dojo.__XhrArgs*/ args){ + // summary: + // Sends an HTTP DELETE request to the server. + return dojo.xhr("DELETE", args); //dojo.Deferred + }; + + /* + dojo.wrapForm = function(formNode){ + //summary: + // A replacement for FormBind, but not implemented yet. + + // FIXME: need to think harder about what extensions to this we might + // want. What should we allow folks to do w/ this? What events to + // set/send? + throw new Error("dojo.wrapForm not yet implemented"); + } + */ + + dojo._isDocumentOk = function(http){ + var stat = http.status || 0; + stat = + (stat >= 200 && stat < 300) || // allow any 2XX response code + stat == 304 || // or, get it out of the cache + stat == 1223 || // or, Internet Explorer mangled the status code + !stat; // or, we're Titanium/browser chrome/chrome extension requesting a local file + return stat; // Boolean + }; + + dojo._getText = function(url){ + var result; + dojo.xhrGet({url:url, sync:true, load:function(text){ + result = text; + }}); + return result; + }; + + // Add aliases for static functions to dojo.xhr since dojo.xhr is what's returned from this module + lang.mixin(dojo.xhr, { + _xhrObj: dojo._xhrObj, + fieldToObject: domForm.fieldToObject, + formToObject: domForm.toObject, + objectToQuery: ioq.objectToQuery, + formToQuery: domForm.toQuery, + formToJson: domForm.toJson, + queryToObject: ioq.queryToObject, + contentHandlers: handlers, + _ioSetArgs: dojo._ioSetArgs, + _ioCancelAll: dojo._ioCancelAll, + _ioNotifyStart: dojo._ioNotifyStart, + _ioWatch: dojo._ioWatch, + _ioAddQueryToUrl: dojo._ioAddQueryToUrl, + _isDocumentOk: dojo._isDocumentOk, + _getText: dojo._getText, + get: dojo.xhrGet, + post: dojo.xhrPost, + put: dojo.xhrPut, + del: dojo.xhrDelete // because "delete" is a reserved word + }); + + return dojo.xhr; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/LICENSE b/js/dojo-release-1.7.2-src/dojo/_firebug/LICENSE new file mode 100644 index 0000000..8c777a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_firebug/LICENSE @@ -0,0 +1,37 @@ +License Disclaimer: + +All contents of this directory are Copyright (c) the Dojo Foundation, with the +following exceptions: +------------------------------------------------------------------------------- + +firebug.html, firebug.js, errIcon.png, infoIcon.png, warningIcon.png: + * Copyright (c) 2006-2007, Joe Hewitt, All rights reserved. + Distributed under the terms of the BSD License (see below) + +------------------------------------------------------------------------------- + +Copyright (c) 2006-2007, Joe Hewitt +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/errorIcon.png b/js/dojo-release-1.7.2-src/dojo/_firebug/errorIcon.png new file mode 100644 index 0000000..2d75261 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/_firebug/errorIcon.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/firebug.css b/js/dojo-release-1.7.2-src/dojo/_firebug/firebug.css new file mode 100644 index 0000000..2012e06 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_firebug/firebug.css @@ -0,0 +1,211 @@ +.firebug { + margin: 0; + background:#fff; + font-family: Lucida Grande, Tahoma, sans-serif; + font-size: 11px; + overflow: hidden; + border: 1px solid black; + position: relative; +} +.firebug a { + text-decoration: none; +} +.firebug a:hover { + text-decoration: underline; +} +.firebug a:visited{ + color:#0000FF; +} +.firebug #firebugToolbar { + height: 18px; + line-height:18px; + border-top: 1px solid ThreeDHighlight; + border-bottom: 1px solid ThreeDShadow; + padding: 2px 6px; + + background:#f0f0f0; +} + +.firebug #firebugLog, .firebug #objectLog { + overflow: auto; + position: absolute; + left: 0; + width: 100%; +} +#objectLog{ + overflow:scroll; + height:258px; +} +.firebug #firebugCommandLine { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 18px; + border: none; + border-top: 1px solid ThreeDShadow; +} +.firebug .logRow { + position: relative; + border-bottom: 1px solid #D7D7D7; + padding: 2px 4px 1px 6px; + background-color: #FFFFFF; +} +.firebug .logRow-command { + font-family: Monaco, monospace; + color: blue; +} +.firebug .objectBox-null { + padding: 0 2px; + border: 1px solid #666666; + background-color: #888888; + color: #FFFFFF; +} +.firebug .objectBox-string { + font-family: Monaco, monospace; + color: red; + white-space: pre; +} +.firebug .objectBox-number { + color: #000088; +} +.firebug .objectBox-function { + font-family: Monaco, monospace; + color: DarkGreen; +} +.firebug .objectBox-object { + color: DarkGreen; + font-weight: bold; +} +.firebug .logRow-info, +.firebug .logRow-error, +.firebug .logRow-warning + { + background: #00FFFF no-repeat 2px 2px; + padding-left: 20px; + padding-bottom: 3px; +} +.firebug .logRow-info { + background: #FFF url(infoIcon.png) no-repeat 2px 2px; + padding-left: 20px; + padding-bottom: 3px; +} +.firebug .logRow-warning { + + background: #00FFFF url(warningIcon.png) no-repeat 2px 2px; + padding-left: 20px; + padding-bottom: 3px; +} +.firebug .logRow-error { + background: LightYellow url(errorIcon.png) no-repeat 2px 2px; + padding-left: 20px; + padding-bottom: 3px; +} +.firebug .errorMessage { + vertical-align: top; + color: #FF0000; +} +.firebug .objectBox-sourceLink { + position: absolute; + right: 4px; + top: 2px; + padding-left: 8px; + font-family: Lucida Grande, sans-serif; + font-weight: bold; + color: #0000FF; +} +.firebug .logRow-group { + background: #EEEEEE; + border-bottom: none; +} +.firebug .logGroup { + background: #EEEEEE; +} +.firebug .logGroupBox { + margin-left: 24px; + border-top: 1px solid #D7D7D7; + border-left: 1px solid #D7D7D7; +} +.firebug .selectorTag, +.firebug .selectorId, +.firebug .selectorClass { + font-family: Monaco, monospace; + font-weight: normal; +} +.firebug .selectorTag { + color: #0000FF; +} +.firebug .selectorId { + color: DarkBlue; +} +.firebug .selectorClass { + color: red; +} +.firebug .objectBox-element { + font-family: Monaco, monospace; + color: #000088; +} +.firebug .nodeChildren { + margin-left: 16px; +} +.firebug .nodeTag { + color: blue; +} +.firebug .nodeValue { + color: #FF0000; + font-weight: normal; +} +.firebug .nodeText, +.firebug .nodeComment { + margin: 0 2px; + vertical-align: top; +} +.firebug .nodeText { + color: #333333; +} +.firebug .nodeComment { + color: DarkGreen; +} +.firebug .propertyNameCell { + vertical-align: top; +} +.firebug .propertyName { + font-weight: bold; +} + +/* tabs */ +#firebugToolbar ul.tabs{ + margin:0 !important; + padding:0; +} +#firebugToolbar ul.tabs li{ + list-style:none; + background:transparent url(tab_lft_norm.png) no-repeat left; + line-height:18px; + float:left; + margin-left:5px; +} +#firebugToolbar ul.tabs li.right{ + float:right; + margin-right:5px; + margin-left:0; +} +#firebugToolbar ul.tabs li.gap{ + margin-left:20px; +} +#firebugToolbar .tabs a{ + text-decoration:none; + background:transparent url(tab_rgt_norm.png) no-repeat right; + line-height:18px; + padding:3px 9px 4px 0px; + margin-left:9px; + color:#333333; +} +#firebugToolbar .tabs li:hover{ + background:transparent url(tab_lft_over.png) no-repeat left; +} +#firebugToolbar .tabs a:hover{ + text-decoration:none; + background:transparent url(tab_rgt_over.png) no-repeat right; + color:#FFFFFF; +} diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/firebug.js b/js/dojo-release-1.7.2-src/dojo/_firebug/firebug.js new file mode 100644 index 0000000..0934498 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/_firebug/firebug.js @@ -0,0 +1,1183 @@ +define(["../_base/kernel", "require", "../_base/html", "../_base/sniff", "../_base/array", "../_base/lang", "../_base/event", "../_base/unload"], function(dojo, require) { + // module: + // dojo/_firebug/firebug + // summary: + +// FIREBUG LITE + // summary: Firebug Lite, the baby brother to Joe Hewitt's Firebug for Mozilla Firefox + // description: + // Opens a console for logging, debugging, and error messages. + // Contains partial functionality to Firebug. See function list below. + // NOTE: + // Firebug is a Firefox extension created by Joe Hewitt (see license). You do not need Dojo to run Firebug. + // Firebug Lite is included in Dojo by permission from Joe Hewitt + // If you are new to Firebug, or used to the Dojo 0.4 dojo.debug, you can learn Firebug + // functionality by reading the function comments below or visiting http://www.getfirebug.com/docs.html + // NOTE: + // To test Firebug Lite in Firefox: + // FF2: set "console = null" before loading dojo and set djConfig.isDebug=true + // FF3: disable Firebug and set djConfig.isDebug=true + // + // example: + // Supports inline objects in object inspector window (only simple trace of dom nodes, however) + // | console.log("my object", {foo:"bar"}) + // example: + // Option for console to open in popup window + // | var djConfig = {isDebug: true, popup:true }; + // example: + // Option for console height (ignored for popup) + // | var djConfig = {isDebug: true, debugHeight:100 } + + + var isNewIE = (/Trident/.test(window.navigator.userAgent)); + if(isNewIE){ + // Fixing IE's console + // IE doesn't insert space between arguments. How annoying. + var calls = ["log", "info", "debug", "warn", "error"]; + for(var i=0;i"); + str = str.replace(/\t/g, "    "); + logRow([str], "dir"); + }, + + dirxml: function(node){ + // summary: + // + var html = []; + appendNode(node, html); + logRow(html, "dirxml"); + }, + + group: function(){ + // summary: + // collects log messages into a group, starting with this call and ending with + // groupEnd(). Missing collapse functionality + logRow(arguments, "group", pushGroup); + }, + + groupEnd: function(){ + // summary: + // Closes group. See above + logRow(arguments, "", popGroup); + }, + + time: function(name){ + // summary: + // Starts timers assigned to name given in argument. Timer stops and displays on timeEnd(title); + // example: + // | console.time("load"); + // | console.time("myFunction"); + // | console.timeEnd("load"); + // | console.timeEnd("myFunction"); + timeMap[name] = new Date().getTime(); + }, + + timeEnd: function(name){ + // summary: + // See above. + if(name in timeMap){ + var delta = (new Date()).getTime() - timeMap[name]; + logFormatted([name+ ":", delta+"ms"]); + delete timeMap[name]; + } + }, + + count: function(name){ + // summary: + // Not supported + if(!countMap[name]) countMap[name] = 0; + countMap[name]++; + logFormatted([name+": "+countMap[name]]); + }, + + trace: function(_value){ + var stackAmt = _value || 3; + var f = console.trace.caller; //function that called trace + console.log(">>> console.trace(stack)"); + for(var i=0;i=0&&s.href) { + var h=s.href.replace(/(&|%5C?)forceReload=\d+/,''); + s.href=h+(h.indexOf('?')>=0?'&':'?')+'forceReload='+new Date().valueOf(); + } + } + } + }; + + // *************************************************************************** + + function toggleConsole(forceOpen){ + frameVisible = forceOpen || !frameVisible; + if(consoleFrame){ + consoleFrame.style.display = frameVisible ? "block" : "none"; + } + } + + function focusCommandLine(){ + toggleConsole(true); + if(commandLine){ + commandLine.focus(); + } + } + + function openWin(x,y,w,h){ + var win = window.open("","_firebug","status=0,menubar=0,resizable=1,top="+y+",left="+x+",width="+w+",height="+h+",scrollbars=1,addressbar=0"); + if(!win){ + var msg = "Firebug Lite could not open a pop-up window, most likely because of a blocker.\n" + + "Either enable pop-ups for this domain, or change the djConfig to popup=false."; + alert(msg); + } + createResizeHandler(win); + var newDoc=win.document; + //Safari needs an HTML height + var HTMLstring= 'Firebug Lite\n' + + '\n' + + '
                            ' + + ''; + + newDoc.write(HTMLstring); + newDoc.close(); + return win; + } + + function createResizeHandler(wn){ + // summary: + // Creates handle for onresize window. Called from script in popup's body tag (so that it will work with IE). + // + + var d = new Date(); + d.setTime(d.getTime()+(60*24*60*60*1000)); // 60 days + d = d.toUTCString(); + + var dc = wn.document, + getViewport; + + if (wn.innerWidth){ + getViewport = function(){ + return{w:wn.innerWidth, h:wn.innerHeight}; + }; + }else if (dc.documentElement && dc.documentElement.clientWidth){ + getViewport = function(){ + return{w:dc.documentElement.clientWidth, h:dc.documentElement.clientHeight}; + }; + }else if (dc.body){ + getViewport = function(){ + return{w:dc.body.clientWidth, h:dc.body.clientHeight}; + }; + } + + + window.onFirebugResize = function(){ + + //resize the height of the console log body + layout(getViewport().h); + + clearInterval(wn._firebugWin_resize); + wn._firebugWin_resize = setTimeout(function(){ + var x = wn.screenLeft, + y = wn.screenTop, + w = wn.outerWidth || wn.document.body.offsetWidth, + h = wn.outerHeight || wn.document.body.offsetHeight; + + document.cookie = "_firebugPosition=" + [x,y,w,h].join(",") + "; expires="+d+"; path=/"; + + }, 5000); //can't capture window.onMove - long timeout gives better chance of capturing a resize, then the move + + }; + } + + + /*****************************************************************************/ + + + function createFrame(){ + if(consoleFrame){ + return; + } + toggleConsole(true); + if(dojo.config.popup){ + var containerHeight = "100%"; + var cookieMatch = document.cookie.match(/(?:^|; )_firebugPosition=([^;]*)/); + var p = cookieMatch ? cookieMatch[1].split(",") : [2,2,320,480]; + + _firebugWin = openWin(p[0],p[1],p[2],p[3]); // global + _firebugDoc = _firebugWin.document; // global + + dojo.config.debugContainerId = 'fb'; + + // connecting popup + _firebugWin.console = window.console; + _firebugWin.dojo = window.dojo; + }else{ + _firebugDoc = document; + containerHeight = (dojo.config.debugHeight || 300) + "px"; + } + + var styleElement = _firebugDoc.createElement("link"); + styleElement.href = require.toUrl("./firebug.css"); + styleElement.rel = "stylesheet"; + styleElement.type = "text/css"; + var styleParent = _firebugDoc.getElementsByTagName("head"); + if(styleParent){ + styleParent = styleParent[0]; + } + if(!styleParent){ + styleParent = _firebugDoc.getElementsByTagName("html")[0]; + } + if(dojo.isIE){ + window.setTimeout(function(){ styleParent.appendChild(styleElement); }, 0); + }else{ + styleParent.appendChild(styleElement); + } + + if(dojo.config.debugContainerId){ + consoleFrame = _firebugDoc.getElementById(dojo.config.debugContainerId); + } + if(!consoleFrame){ + consoleFrame = _firebugDoc.createElement("div"); + _firebugDoc.body.appendChild(consoleFrame); + } + consoleFrame.className += " firebug"; + consoleFrame.style.height = containerHeight; + consoleFrame.style.display = (frameVisible ? "block" : "none"); + + var buildLink = function(label, title, method, _class){ + return '
                          5. '+label+'
                          6. '; + }; + consoleFrame.innerHTML = + '
                            ' + + '
                              ' + + + buildLink("Clear", "Remove All Console Logs", "clear", "") + + buildLink("ReCSS", "Refresh CSS without reloading page", "recss", "") + + + buildLink("Console", "Show Console Logs", "openConsole", "gap") + + buildLink("DOM", "Show DOM Inspector", "openDomInspector", "") + + buildLink("Object", "Show Object Inspector", "openObjectInspector", "") + + ((dojo.config.popup) ? "" : buildLink("Close", "Close the console", "close", "gap")) + + + '
                            ' + + '
                            ' + + '' + + '
                            ' + + '' + + ''; + + + consoleToolbar = _firebugDoc.getElementById("firebugToolbar"); + + commandLine = _firebugDoc.getElementById("firebugCommandLine"); + addEvent(commandLine, "keydown", onCommandLineKeyDown); + + addEvent(_firebugDoc, dojo.isIE || dojo.isSafari ? "keydown" : "keypress", onKeyDown); + + consoleBody = _firebugDoc.getElementById("firebugLog"); + consoleObjectInspector = _firebugDoc.getElementById("objectLog"); + consoleDomInspector = _firebugDoc.getElementById("domInspect"); + fireBugTabs = _firebugDoc.getElementById("fireBugTabs"); + layout(); + flush(); + } + + dojo.addOnLoad(createFrame); + + function clearFrame(){ + _firebugDoc = null; + + if(_firebugWin.console){ + _firebugWin.console.clear(); + } + _firebugWin = null; + consoleFrame = null; + consoleBody = null; + consoleObjectInspector = null; + consoleDomInspector = null; + commandLine = null; + messageQueue = []; + groupStack = []; + timeMap = {}; + } + + + function evalCommandLine(){ + var text = commandLine.value; + commandLine.value = ""; + + logRow(["> ", text], "command"); + + var value; + try{ + value = eval(text); + }catch(e){ + console.debug(e); // put exception on the console + } + + console.log(value); + } + + function layout(h){ + var tHeight = 25; //consoleToolbar.offsetHeight; // tab style not ready on load - throws off layout + var height = h ? + h - (tHeight + commandLine.offsetHeight +25 + (h*.01)) + "px" : + (consoleFrame.offsetHeight - tHeight - commandLine.offsetHeight) + "px"; + + consoleBody.style.top = tHeight + "px"; + consoleBody.style.height = height; + consoleObjectInspector.style.height = height; + consoleObjectInspector.style.top = tHeight + "px"; + consoleDomInspector.style.height = height; + consoleDomInspector.style.top = tHeight + "px"; + commandLine.style.bottom = 0; + + dojo.addOnWindowUnload(clearFrame); + } + + function logRow(message, className, handler){ + if(consoleBody){ + writeMessage(message, className, handler); + }else{ + messageQueue.push([message, className, handler]); + } + } + + function flush(){ + var queue = messageQueue; + messageQueue = []; + + for(var i = 0; i < queue.length; ++i){ + writeMessage(queue[i][0], queue[i][1], queue[i][2]); + } + } + + function writeMessage(message, className, handler){ + var isScrolledToBottom = + consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight; + + handler = handler||writeRow; + + handler(message, className); + + if(isScrolledToBottom){ + consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight; + } + } + + function appendRow(row){ + var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody; + container.appendChild(row); + } + + function writeRow(message, className){ + var row = consoleBody.ownerDocument.createElement("div"); + row.className = "logRow" + (className ? " logRow-"+className : ""); + row.innerHTML = message.join(""); + appendRow(row); + } + + function pushGroup(message, className){ + logFormatted(message, className); + + //var groupRow = consoleBody.ownerDocument.createElement("div"); + //groupRow.className = "logGroup"; + var groupRowBox = consoleBody.ownerDocument.createElement("div"); + groupRowBox.className = "logGroupBox"; + //groupRow.appendChild(groupRowBox); + appendRow(groupRowBox); + groupStack.push(groupRowBox); + } + + function popGroup(){ + groupStack.pop(); + } + + // *************************************************************************** + + function logFormatted(objects, className){ + var html = []; + + var format = objects[0]; + var objIndex = 0; + + if(typeof(format) != "string"){ + format = ""; + objIndex = -1; + } + + var parts = parseFormat(format); + + for(var i = 0; i < parts.length; ++i){ + var part = parts[i]; + if(part && typeof part == "object"){ + part.appender(objects[++objIndex], html); + }else{ + appendText(part, html); + } + } + + + var ids = []; + var obs = []; + for(i = objIndex+1; i < objects.length; ++i){ + appendText(" ", html); + + var object = objects[i]; + if(object === undefined || object === null ){ + appendNull(object, html); + + }else if(typeof(object) == "string"){ + appendText(object, html); + + }else if(object instanceof Date){ + appendText(object.toString(), html); + + }else if(object.nodeType == 9){ + appendText("[ XmlDoc ]", html); + + }else{ + // Create link for object inspector + // need to create an ID for this link, since it is currently text + var id = "_a" + __consoleAnchorId__++; + ids.push(id); + // need to save the object, so the arrays line up + obs.push(object); + var str = ''+getObjectAbbr(object)+''; + + appendLink( str , html); + } + } + + logRow(html, className); + + // Now that the row is inserted in the DOM, loop through all of the links that were just created + for(i=0; i"; + })); + } + } + + function parseFormat(format){ + var parts = []; + + var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/; + var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat}; + + for(var m = reg.exec(format); m; m = reg.exec(format)){ + var type = m[8] ? m[8] : m[5]; + var appender = type in appenderMap ? appenderMap[type] : appendObject; + var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); + + parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); + parts.push({appender: appender, precision: precision}); + + format = format.substr(m.index+m[0].length); + } + + parts.push(format); + + return parts; + } + + function escapeHTML(value){ + function replaceChars(ch){ + switch(ch){ + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + case "'": + return "'"; + case '"': + return """; + } + return "?"; + } + return String(value).replace(/[<>&"']/g, replaceChars); + } + + function objectToString(object){ + try{ + return object+""; + }catch(e){ + return null; + } + } + + // *************************************************************************** + function appendLink(object, html){ + // needed for object links - no HTML escaping + html.push( objectToString(object) ); + } + + function appendText(object, html){ + html.push(escapeHTML(objectToString(object))); + } + + function appendNull(object, html){ + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendString(object, html){ + html.push('"', escapeHTML(objectToString(object)), + '"'); + } + + function appendInteger(object, html){ + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendFloat(object, html){ + html.push('', escapeHTML(objectToString(object)), ''); + } + + function appendFunction(object, html){ + html.push('', getObjectAbbr(object), ''); + } + + function appendObject(object, html){ + try{ + if(object === undefined){ + appendNull("undefined", html); + }else if(object === null){ + appendNull("null", html); + }else if(typeof object == "string"){ + appendString(object, html); + }else if(typeof object == "number"){ + appendInteger(object, html); + }else if(typeof object == "function"){ + appendFunction(object, html); + }else if(object.nodeType == 1){ + appendSelector(object, html); + }else if(typeof object == "object"){ + appendObjectFormatted(object, html); + }else{ + appendText(object, html); + } + }catch(e){ + /* squelch */ + } + } + + function appendObjectFormatted(object, html){ + var text = objectToString(object); + var reObject = /\[object (.*?)\]/; + + var m = reObject.exec(text); + html.push('', m ? m[1] : text, ''); + } + + function appendSelector(object, html){ + html.push(''); + + html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); + if(object.id){ + html.push('#', escapeHTML(object.id), ''); + } + if(object.className){ + html.push('.', escapeHTML(object.className), ''); + } + + html.push(''); + } + + function appendNode(node, html){ + if(node.nodeType == 1){ + html.push( + '
                            ', + '<', node.nodeName.toLowerCase(), ''); + + for(var i = 0; i < node.attributes.length; ++i){ + var attr = node.attributes[i]; + if(!attr.specified){ continue; } + + html.push(' ', attr.nodeName.toLowerCase(), + '="', escapeHTML(attr.nodeValue), + '"'); + } + + if(node.firstChild){ + html.push('>
                            '); + + for(var child = node.firstChild; child; child = child.nextSibling){ + appendNode(child, html); + } + + html.push('
                            </', + node.nodeName.toLowerCase(), '>
                            '); + }else{ + html.push('/>'); + } + }else if (node.nodeType == 3){ + html.push('
                            ', escapeHTML(node.nodeValue), + '
                            '); + } + } + + // *************************************************************************** + + function addEvent(object, name, handler){ + if(document.all){ + object.attachEvent("on"+name, handler); + }else{ + object.addEventListener(name, handler, false); + } + } + + function removeEvent(object, name, handler){ + if(document.all){ + object.detachEvent("on"+name, handler); + }else{ + object.removeEventListener(name, handler, false); + } + } + + function cancelEvent(event){ + if(document.all){ + event.cancelBubble = true; + }else{ + event.stopPropagation(); + } + } + + function onError(msg, href, lineNo){ + var lastSlash = href.lastIndexOf("/"); + var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1); + + var html = [ + '', msg, '', + '' + ]; + + logRow(html, "error"); + } + + + //After converting to div instead of iframe, now getting two keydowns right away in IE 6. + //Make sure there is a little bit of delay. + var onKeyDownTime = new Date().getTime(); + + function onKeyDown(event){ + var timestamp = (new Date()).getTime(); + if(timestamp > onKeyDownTime + 200){ + event = dojo.fixEvent(event); + var keys = dojo.keys; + var ekc = event.keyCode; + onKeyDownTime = timestamp; + if(ekc == keys.F12){ + toggleConsole(); + }else if( + (ekc == keys.NUMPAD_ENTER || ekc == 76) && + event.shiftKey && + (event.metaKey || event.ctrlKey) + ){ + focusCommandLine(); + }else{ + return; + } + cancelEvent(event); + } + } + + function onCommandLineKeyDown(e){ + var dk = dojo.keys; + if(e.keyCode == 13 && commandLine.value){ + addToHistory(commandLine.value); + evalCommandLine(); + }else if(e.keyCode == 27){ + commandLine.value = ""; + }else if(e.keyCode == dk.UP_ARROW || e.charCode == dk.UP_ARROW){ + navigateHistory("older"); + }else if(e.keyCode == dk.DOWN_ARROW || e.charCode == dk.DOWN_ARROW){ + navigateHistory("newer"); + }else if(e.keyCode == dk.HOME || e.charCode == dk.HOME){ + historyPosition = 1; + navigateHistory("older"); + }else if(e.keyCode == dk.END || e.charCode == dk.END){ + historyPosition = 999999; + navigateHistory("newer"); + } + } + + var historyPosition = -1; + var historyCommandLine = null; + + function addToHistory(value){ + var history = cookie("firebug_history"); + history = (history) ? dojo.fromJson(history) : []; + var pos = dojo.indexOf(history, value); + if (pos != -1){ + history.splice(pos, 1); + } + history.push(value); + cookie("firebug_history", dojo.toJson(history), 30); + while(history.length && !cookie("firebug_history")){ + history.shift(); + cookie("firebug_history", dojo.toJson(history), 30); + } + historyCommandLine = null; + historyPosition = -1; + } + + function navigateHistory(direction){ + var history = cookie("firebug_history"); + history = (history) ? dojo.fromJson(history) : []; + if(!history.length){ + return; + } + + if(historyCommandLine === null){ + historyCommandLine = commandLine.value; + } + + if(historyPosition == -1){ + historyPosition = history.length; + } + + if(direction == "older"){ + --historyPosition; + if(historyPosition < 0){ + historyPosition = 0; + } + }else if(direction == "newer"){ + ++historyPosition; + if(historyPosition > history.length){ + historyPosition = history.length; + } + } + + if(historyPosition == history.length){ + commandLine.value = historyCommandLine; + historyCommandLine = null; + }else{ + commandLine.value = history[historyPosition]; + } + } + + function cookie(name, value){ + var c = document.cookie; + if(arguments.length == 1){ + var matches = c.match(new RegExp("(?:^|; )" + name + "=([^;]*)")); + return matches ? decodeURIComponent(matches[1]) : undefined; // String or undefined + }else{ + var d = new Date(); + d.setMonth(d.getMonth()+1); + document.cookie = name + "=" + encodeURIComponent(value) + ((d.toUtcString) ? "; expires=" + d.toUTCString() : ""); + } + } + + function isArray(it){ + return it && it instanceof Array || typeof it == "array"; + } + + //*************************************************************************************************** + // Print Object Helpers + function objectLength(o){ + var cnt = 0; + for(var nm in o){ + cnt++; + } + return cnt; + } + + function printObject(o, i, txt, used){ + // Recursively trace object, indenting to represent depth for display in object inspector + var ind = " \t"; + txt = txt || ""; + i = i || ind; + used = used || []; + var opnCls; + + if(o && o.nodeType == 1){ + var html = []; + appendNode(o, html); + return html.join(""); + } + + var br=",\n", cnt = 0, length = objectLength(o); + + if(o instanceof Date){ + return i + o.toString() + br; + } + looking: + for(var nm in o){ + cnt++; + if(cnt==length){br = "\n";} + if(o[nm] === window || o[nm] === document){ + // do nothing + }else if(o[nm] === null){ + txt += i+nm + " : NULL" + br; + }else if(o[nm] && o[nm].nodeType){ + if(o[nm].nodeType == 1){ + //txt += i+nm + " : < "+o[nm].tagName+" id=\""+ o[nm].id+"\" />" + br; + }else if(o[nm].nodeType == 3){ + txt += i+nm + " : [ TextNode "+o[nm].data + " ]" + br; + } + + }else if(typeof o[nm] == "object" && (o[nm] instanceof String || o[nm] instanceof Number || o[nm] instanceof Boolean)){ + txt += i+nm + " : " + o[nm] + "," + br; + + }else if(o[nm] instanceof Date){ + txt += i+nm + " : " + o[nm].toString() + br; + + }else if(typeof(o[nm]) == "object" && o[nm]){ + for(var j = 0, seen; seen = used[j]; j++){ + if(o[nm] === seen){ + txt += i+nm + " : RECURSION" + br; + continue looking; + } + } + used.push(o[nm]); + + opnCls = (isArray(o[nm]))?["[","]"]:["{","}"]; + txt += i+nm +" : " + opnCls[0] + "\n";//non-standard break, (no comma) + txt += printObject(o[nm], i+ind, "", used); + txt += i + opnCls[1] + br; + + }else if(typeof o[nm] == "undefined"){ + txt += i+nm + " : undefined" + br; + }else if(nm == "toString" && typeof o[nm] == "function"){ + var toString = o[nm](); + if(typeof toString == "string" && toString.match(/function ?(.*?)\(/)){ + toString = escapeHTML(getObjectAbbr(o[nm])); + } + txt += i+nm +" : " + toString + br; + }else{ + txt += i+nm +" : "+ escapeHTML(getObjectAbbr(o[nm])) + br; + } + } + return txt; + } + + function getObjectAbbr(obj){ + // Gets an abbreviation of an object for display in log + // X items in object, including id + // X items in an array + // TODO: Firebug Sr. actually goes by char count + var isError = (obj instanceof Error); + if(obj.nodeType == 1){ + return escapeHTML('< '+obj.tagName.toLowerCase()+' id=\"'+ obj.id+ '\" />'); + } + if(obj.nodeType == 3){ + return escapeHTML('[TextNode: "'+obj.nodeValue+'"]'); + } + var nm = (obj && (obj.id || obj.name || obj.ObjectID || obj.widgetId)); + if(!isError && nm){ return "{"+nm+"}"; } + + var obCnt = 2; + var arCnt = 4; + var cnt = 0; + + if(isError){ + nm = "[ Error: "+(obj.message || obj.description || obj)+" ]"; + }else if(isArray(obj)){ + nm = "[" + obj.slice(0,arCnt).join(","); + if(obj.length > arCnt){ + nm += " ... ("+obj.length+" items)"; + } + nm += "]"; + }else if(typeof obj == "function"){ + nm = obj + ""; + var reg = /function\s*([^\(]*)(\([^\)]*\))[^\{]*\{/; + var m = reg.exec(nm); + if(m){ + if(!m[1]){ + m[1] = "function"; + } + nm = m[1] + m[2]; + }else{ + nm = "function()"; + } + }else if(typeof obj != "object" || typeof obj == "string"){ + nm = obj + ""; + }else{ + nm = "{"; + for(var i in obj){ + cnt++; + if(cnt > obCnt){ break; } + nm += i+":"+escapeHTML(obj[i])+" "; + } + nm+="}"; + } + + return nm; + } + + //************************************************************************************* + + //window.onerror = onError; + + addEvent(document, dojo.isIE || dojo.isSafari ? "keydown" : "keypress", onKeyDown); + + if( (document.documentElement.getAttribute("debug") == "true")|| + (dojo.config.isDebug) + ){ + toggleConsole(true); + } + + dojo.addOnWindowUnload(function(){ + // Erase the globals and event handlers I created, to prevent spurious leak warnings + removeEvent(document, dojo.isIE || dojo.isSafari ? "keydown" : "keypress", onKeyDown); + window.onFirebugResize = null; + window.console = null; + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/infoIcon.png b/js/dojo-release-1.7.2-src/dojo/_firebug/infoIcon.png new file mode 100644 index 0000000..da1e533 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/_firebug/infoIcon.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/tab_lft_norm.png b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_lft_norm.png new file mode 100644 index 0000000..f0479a2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_lft_norm.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/tab_lft_over.png b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_lft_over.png new file mode 100644 index 0000000..2f36cca Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_lft_over.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/tab_rgt_norm.png b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_rgt_norm.png new file mode 100644 index 0000000..464af3e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_rgt_norm.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/tab_rgt_over.png b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_rgt_over.png new file mode 100644 index 0000000..2bc2cd0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/_firebug/tab_rgt_over.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/_firebug/warningIcon.png b/js/dojo-release-1.7.2-src/dojo/_firebug/warningIcon.png new file mode 100644 index 0000000..de51084 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/_firebug/warningIcon.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/aspect.js b/js/dojo-release-1.7.2-src/dojo/aspect.js new file mode 100644 index 0000000..38be8bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/aspect.js @@ -0,0 +1,207 @@ +define([], function(){ + +// TODOC: after/before/around return object +// TODOC: after/before/around param types. + +/*===== + dojo.aspect = { + // summary: provides aspect oriented programming functionality, allowing for + // one to add before, around, or after advice on existing methods. + // + // example: + // | define(["dojo/aspect"], function(aspect){ + // | var signal = aspect.after(targetObject, "methodName", function(someArgument){ + // | this will be called when targetObject.methodName() is called, after the original function is called + // | }); + // + // example: + // The returned signal object can be used to cancel the advice. + // | signal.remove(); // this will stop the advice from being executed anymore + // | aspect.before(targetObject, "methodName", function(someArgument){ + // | // this will be called when targetObject.methodName() is called, before the original function is called + // | }); + + after: function(target, methodName, advice, receiveArguments){ + // summary: The "after" export of the aspect module is a function that can be used to attach + // "after" advice to a method. This function will be executed after the original method + // is executed. By default the function will be called with a single argument, the return + // value of the original method, or the the return value of the last executed advice (if a previous one exists). + // The fourth (optional) argument can be set to true to so the function receives the original + // arguments (from when the original method was called) rather than the return value. + // If there are multiple "after" advisors, they are executed in the order they were registered. + // target: Object + // This is the target object + // methodName: String + // This is the name of the method to attach to. + // advice: Function + // This is function to be called after the original method + // receiveArguments: Boolean? + // If this is set to true, the advice function receives the original arguments (from when the original mehtod + // was called) rather than the return value of the original/previous method. + // returns: + // A signal object that can be used to cancel the advice. If remove() is called on this signal object, it will + // stop the advice function from being executed. + }, + + before: function(target, methodName, advice){ + // summary: The "before" export of the aspect module is a function that can be used to attach + // "before" advice to a method. This function will be executed before the original method + // is executed. This function will be called with the arguments used to call the method. + // This function may optionally return an array as the new arguments to use to call + // the original method (or the previous, next-to-execute before advice, if one exists). + // If the before method doesn't return anything (returns undefined) the original arguments + // will be preserved. + // If there are multiple "before" advisors, they are executed in the reverse order they were registered. + // + // target: Object + // This is the target object + // methodName: String + // This is the name of the method to attach to. + // advice: Function + // This is function to be called before the original method + }, + + around: function(target, methodName, advice){ + // summary: The "around" export of the aspect module is a function that can be used to attach + // "around" advice to a method. The advisor function is immediately executed when + // the around() is called, is passed a single argument that is a function that can be + // called to continue execution of the original method (or the next around advisor). + // The advisor function should return a function, and this function will be called whenever + // the method is called. It will be called with the arguments used to call the method. + // Whatever this function returns will be returned as the result of the method call (unless after advise changes it). + // + // example: + // If there are multiple "around" advisors, the most recent one is executed first, + // which can then delegate to the next one and so on. For example: + // | around(obj, "foo", function(originalFoo){ + // | return function(){ + // | var start = new Date().getTime(); + // | var results = originalFoo.apply(this, arguments); // call the original + // | var end = new Date().getTime(); + // | console.log("foo execution took " + (end - start) + " ms"); + // | return results; + // | }; + // | }); + // + // target: Object + // This is the target object + // methodName: String + // This is the name of the method to attach to. + // advice: Function + // This is function to be called around the original method + } + + }; +=====*/ + + "use strict"; + var nextId = 0; + function advise(dispatcher, type, advice, receiveArguments){ + var previous = dispatcher[type]; + var around = type == "around"; + var signal; + if(around){ + var advised = advice(function(){ + return previous.advice(this, arguments); + }); + signal = { + remove: function(){ + signal.cancelled = true; + }, + advice: function(target, args){ + return signal.cancelled ? + previous.advice(target, args) : // cancelled, skip to next one + advised.apply(target, args); // called the advised function + } + }; + }else{ + // create the remove handler + signal = { + remove: function(){ + var previous = signal.previous; + var next = signal.next; + if(!next && !previous){ + delete dispatcher[type]; + }else{ + if(previous){ + previous.next = next; + }else{ + dispatcher[type] = next; + } + if(next){ + next.previous = previous; + } + } + }, + id: nextId++, + advice: advice, + receiveArguments: receiveArguments + }; + } + if(previous && !around){ + if(type == "after"){ + // add the listener to the end of the list + var next = previous; + while(next){ + previous = next; + next = next.next; + } + previous.next = signal; + signal.previous = previous; + }else if(type == "before"){ + // add to beginning + dispatcher[type] = signal; + signal.next = previous; + previous.previous = signal; + } + }else{ + // around or first one just replaces + dispatcher[type] = signal; + } + return signal; + } + function aspect(type){ + return function(target, methodName, advice, receiveArguments){ + var existing = target[methodName], dispatcher; + if(!existing || existing.target != target){ + // no dispatcher in place + target[methodName] = dispatcher = function(){ + var executionId = nextId; + // before advice + var args = arguments; + var before = dispatcher.before; + while(before){ + args = before.advice.apply(this, args) || args; + before = before.next; + } + // around advice + if(dispatcher.around){ + var results = dispatcher.around.advice(this, args); + } + // after advice + var after = dispatcher.after; + while(after && after.id < executionId){ + results = after.receiveArguments ? after.advice.apply(this, args) || results : + after.advice.call(this, results); + after = after.next; + } + return results; + }; + if(existing){ + dispatcher.around = {advice: function(target, args){ + return existing.apply(target, args); + }}; + } + dispatcher.target = target; + } + var results = advise((dispatcher || existing), type, advice, receiveArguments); + advice = null; + return results; + }; + } + return { + before: aspect("before"), + around: aspect("around"), + after: aspect("after") + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/back.js b/js/dojo-release-1.7.2-src/dojo/back.js new file mode 100644 index 0000000..f4ca4f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/back.js @@ -0,0 +1,397 @@ +define(["./_base/kernel", "./_base/lang", "./_base/sniff", "./dom", "./dom-construct", "./_base/window", "require"], function(dojo, lang, sniff, dom, domConstruct, baseWindow, require) { + // module: + // dojo/back + // summary: + // TODOC + + lang.getObject("back", true, dojo); + +/*===== +dojo.back = { + // summary: Browser history management resources +}; +=====*/ + + var back = dojo.back, + + // everyone deals with encoding the hash slightly differently + + getHash = back.getHash = function(){ + var h = window.location.hash; + if(h.charAt(0) == "#"){ h = h.substring(1); } + return sniff("mozilla") ? h : decodeURIComponent(h); + }, + + setHash = back.setHash = function(h){ + if(!h){ h = ""; } + window.location.hash = encodeURIComponent(h); + historyCounter = history.length; + }; + + var initialHref = (typeof(window) !== "undefined") ? window.location.href : ""; + var initialHash = (typeof(window) !== "undefined") ? getHash() : ""; + var initialState = null; + + var locationTimer = null; + var bookmarkAnchor = null; + var historyIframe = null; + var forwardStack = []; + var historyStack = []; + var moveForward = false; + var changingUrl = false; + var historyCounter; + + function handleBackButton(){ + //summary: private method. Do not call this directly. + + //The "current" page is always at the top of the history stack. + var current = historyStack.pop(); + if(!current){ return; } + var last = historyStack[historyStack.length-1]; + if(!last && historyStack.length == 0){ + last = initialState; + } + if(last){ + if(last.kwArgs["back"]){ + last.kwArgs["back"](); + }else if(last.kwArgs["backButton"]){ + last.kwArgs["backButton"](); + }else if(last.kwArgs["handle"]){ + last.kwArgs.handle("back"); + } + } + forwardStack.push(current); + } + + back.goBack = handleBackButton; + + function handleForwardButton(){ + //summary: private method. Do not call this directly. + var last = forwardStack.pop(); + if(!last){ return; } + if(last.kwArgs["forward"]){ + last.kwArgs.forward(); + }else if(last.kwArgs["forwardButton"]){ + last.kwArgs.forwardButton(); + }else if(last.kwArgs["handle"]){ + last.kwArgs.handle("forward"); + } + historyStack.push(last); + } + + back.goForward = handleForwardButton; + + function createState(url, args, hash){ + //summary: private method. Do not call this directly. + return {"url": url, "kwArgs": args, "urlHash": hash}; //Object + } + + function getUrlQuery(url){ + //summary: private method. Do not call this directly. + var segments = url.split("?"); + if(segments.length < 2){ + return null; //null + } + else{ + return segments[1]; //String + } + } + + function loadIframeHistory(){ + //summary: private method. Do not call this directly. + var url = (dojo.config["dojoIframeHistoryUrl"] || require.toUrl("./resources/iframe_history.html")) + "?" + (new Date()).getTime(); + moveForward = true; + if(historyIframe){ + sniff("webkit") ? historyIframe.location = url : window.frames[historyIframe.name].location = url; + }else{ + //console.warn("dojo.back: Not initialised. You need to call dojo.back.init() from a + // into a function + // script: DOMNode + // The + // + return new dojo.NodeList(); // dojo.NodeList +}; +=====*/ + +function queryForEngine(engine, NodeList){ + var query = function(/*String*/ query, /*String|DOMNode?*/ root){ + // summary: + // Returns nodes which match the given CSS selector, searching the + // entire document by default but optionally taking a node to scope + // the search by. Returns an instance of dojo.NodeList. + if(typeof root == "string"){ + root = dom.byId(root); + if(!root){ + return new NodeList([]); + } + } + var results = typeof query == "string" ? engine(query, root) : query.orphan ? query : [query]; + if(results.orphan){ + // already wrapped + return results; + } + return new NodeList(results); + }; + query.matches = engine.match || function(node, selector, root){ + // summary: + // Test to see if a node matches a selector + return query.filter([node], selector, root).length > 0; + }; + // the engine provides a filtering function, use it to for matching + query.filter = engine.filter || function(nodes, selector, root){ + // summary: + // Filters an array of nodes. Note that this does not guarantee to return a dojo.NodeList, just an array. + return query(selector, root).filter(function(node){ + return array.indexOf(nodes, node) > -1; + }); + }; + if(typeof engine != "function"){ + var search = engine.search; + engine = function(selector, root){ + // Slick does it backwards (or everyone else does it backwards, probably the latter) + return search(root || document, selector); + }; + } + return query; +} +var query = queryForEngine(defaultEngine, NodeList); +// the query that is returned from this module is slightly different than dojo.query, +// because dojo.query has to maintain backwards compatibility with returning a +// true array which has performance problems. The query returned from the module +// does not use true arrays, but rather inherits from Array, making it much faster to +// instantiate. +dojo.query = queryForEngine(defaultEngine, function(array){ + // call it without the new operator to invoke the back-compat behavior that returns a true array + return NodeList(array); +}); + +query.load = /*===== dojo.query.load= ======*/ function(id, parentRequire, loaded, config){ + // summary: can be used as AMD plugin to conditionally load new query engine + // example: + // | define(["dojo/query!custom"], function(qsa){ + // | // loaded selector/custom.js as engine + // | qsa("#foobar").forEach(...); + // | }); + loader.load(id, parentRequire, function(engine){ + loaded(queryForEngine(engine, NodeList)); + }); +}; + +dojo._filterQueryResult = query._filterResult = function(nodes, selector, root){ + return new NodeList(query.filter(nodes, selector, root)); +}; +dojo.NodeList = query.NodeList = NodeList; +return query; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/ready.js b/js/dojo-release-1.7.2-src/dojo/ready.js new file mode 100644 index 0000000..3e1bd38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/ready.js @@ -0,0 +1,138 @@ +define(["./_base/kernel", "./has", "require", "./has!host-browser?./domReady", "./_base/lang"], function(dojo, has, require, domReady, lang) { + // module: + // dojo/ready + // summary: + // This module defines the dojo.ready API. + // + // note: + // This module should be unnecessary in dojo 2.0 + var + // truthy if DOMContentLoaded or better (e.g., window.onload fired) has been achieved + isDomReady = 0, + + // a function to call to cause onLoad to be called when all requested modules have been loaded + requestCompleteSignal, + + // The queue of functions waiting to execute as soon as dojo.ready conditions satisfied + loadQ = [], + + // prevent recursion in onLoad + onLoadRecursiveGuard = 0, + + handleDomReady = function(){ + isDomReady = 1; + dojo._postLoad = dojo.config.afterOnLoad = true; + if(loadQ.length){ + requestCompleteSignal(onLoad); + } + }, + + // run the next function queued with dojo.ready + onLoad = function(){ + if(isDomReady && !onLoadRecursiveGuard && loadQ.length){ + //guard against recursions into this function + onLoadRecursiveGuard = 1; + var f = loadQ.shift(); + try{ + f(); + } + // FIXME: signal the error via require.on + finally{ + onLoadRecursiveGuard = 0; + } + onLoadRecursiveGuard = 0; + if(loadQ.length){ + requestCompleteSignal(onLoad); + } + } + }; + + // define requireCompleteSignal; impl depends on loader + if(has("dojo-loader")){ + require.on("idle", onLoad); + requestCompleteSignal = function(){ + if(require.idle()){ + onLoad(); + } // else do nothing, onLoad will be called with the next idle signal + }; + }else{ + // RequireJS or similar + requestCompleteSignal = function(){ + // the next function call will fail if you don't have a loader with require.ready + // in that case, either fix your loader, use dojo's loader, or don't call dojo.ready; + require.ready(onLoad); + }; + } + + var ready = dojo.ready = dojo.addOnLoad = function(priority, context, callback){ + // summary: Add a function to execute on DOM content loaded and all requested modules have arrived and been evaluated. + // priority: Integer? + // The order in which to exec this callback relative to other callbacks, defaults to 1000 + // context: Object?|Function + // The context in which to run execute callback, or a callback if not using context + // callback: Function? + // The function to execute. + // + // example: + // Simple DOM and Modules ready syntax + // | dojo.ready(function(){ alert("Dom ready!"); }); + // + // example: + // Using a priority + // | dojo.ready(2, function(){ alert("low priority ready!"); }) + // + // example: + // Using context + // | dojo.ready(foo, function(){ + // | // in here, this == foo + // | }) + // + // example: + // Using dojo.hitch style args: + // | var foo = { dojoReady: function(){ console.warn(this, "dojo dom and modules ready."); } }; + // | dojo.ready(foo, "dojoReady"); + + var hitchArgs = lang._toArray(arguments); + if(typeof priority != "number"){ + callback = context; + context = priority; + priority = 1000; + }else{ + hitchArgs.shift(); + } + callback = callback ? + lang.hitch.apply(dojo, hitchArgs) : + function(){ + context(); + }; + callback.priority = priority; + for(var i = 0; i < loadQ.length && priority >= loadQ[i].priority; i++){} + loadQ.splice(i, 0, callback); + requestCompleteSignal(); + }; + + has.add("dojo-config-addOnLoad", 1); + if(has("dojo-config-addOnLoad")){ + var dca = dojo.config.addOnLoad; + if(dca){ + ready[(lang.isArray(dca) ? "apply" : "call")](dojo, dca); + } + } + + if(has("dojo-sync-loader") && dojo.config.parseOnLoad && !dojo.isAsync){ + ready(99, function(){ + if(!dojo.parser){ + dojo.deprecated("Add explicit require(['dojo/parser']);", "", "2.0"); + require(["dojo/parser"]); + } + }); + } + + if(has("host-browser")){ + domReady(handleDomReady); + }else{ + handleDomReady(); + } + + return ready; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/regexp.js b/js/dojo-release-1.7.2-src/dojo/regexp.js new file mode 100644 index 0000000..ba5b7b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/regexp.js @@ -0,0 +1,73 @@ +define(["./_base/kernel", "./_base/lang"], function(dojo, lang) { + // module: + // dojo/regexp + // summary: + // TODOC + +lang.getObject("regexp", true, dojo); + +/*===== +dojo.regexp = { + // summary: Regular expressions and Builder resources +}; +=====*/ + +dojo.regexp.escapeString = function(/*String*/str, /*String?*/except){ + // summary: + // Adds escape sequences for special characters in regular expressions + // except: + // a String with special characters to be left unescaped + + return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function(ch){ + if(except && except.indexOf(ch) != -1){ + return ch; + } + return "\\" + ch; + }); // String +}; + +dojo.regexp.buildGroupRE = function(/*Object|Array*/arr, /*Function*/re, /*Boolean?*/nonCapture){ + // summary: + // Builds a regular expression that groups subexpressions + // description: + // A utility function used by some of the RE generators. The + // subexpressions are constructed by the function, re, in the second + // parameter. re builds one subexpression for each elem in the array + // a, in the first parameter. Returns a string for a regular + // expression that groups all the subexpressions. + // arr: + // A single value or an array of values. + // re: + // A function. Takes one parameter and converts it to a regular + // expression. + // nonCapture: + // If true, uses non-capturing match, otherwise matches are retained + // by regular expression. Defaults to false + + // case 1: a is a single value. + if(!(arr instanceof Array)){ + return re(arr); // String + } + + // case 2: a is an array + var b = []; + for(var i = 0; i < arr.length; i++){ + // convert each elem to a RE + b.push(re(arr[i])); + } + + // join the REs as alternatives in a RE group. + return dojo.regexp.group(b.join("|"), nonCapture); // String +}; + +dojo.regexp.group = function(/*String*/expression, /*Boolean?*/nonCapture){ + // summary: + // adds group match to expression + // nonCapture: + // If true, uses non-capturing match, otherwise matches are retained + // by regular expression. + return "(" + (nonCapture ? "?:":"") + expression + ")"; // String +}; + +return dojo.regexp; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/require.js b/js/dojo-release-1.7.2-src/dojo/require.js new file mode 100644 index 0000000..3f02bca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/require.js @@ -0,0 +1,7 @@ +define(["./_base/loader"], function(loader){ + return { + dynamic:0, + normalize:function(id){return id;}, + load:loader.require + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/resources/LICENSE b/js/dojo-release-1.7.2-src/dojo/resources/LICENSE new file mode 100644 index 0000000..eb28b7e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/resources/LICENSE @@ -0,0 +1,30 @@ +License Disclaimer: + +All contents of this directory are Copyright (c) the Dojo Foundation, with the +following exceptions: +------------------------------------------------------------------------------- + +dojo.css: + * parts Copyright (c) 2007, Yahoo! Inc. All rights reserved. + Distributed under the terms of the BSD License + +The Program includes all or portions of the following software which was obtained under the terms and conditions of the BSD License. + +http://developer.yahoo.com/yui/license.html + +Copyright (c) 2007, Yahoo! Inc. + All rights reserved. + Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + * Neither the name of Yahoo! Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without +specific prior written permission of Yahoo! Inc. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/js/dojo-release-1.7.2-src/dojo/resources/_modules.js b/js/dojo-release-1.7.2-src/dojo/resources/_modules.js new file mode 100644 index 0000000..e093a58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/resources/_modules.js @@ -0,0 +1,36 @@ +/*===== +// Supplemental summaries for those hard-to-doc places your conventional doc parser can't reach. +// Where possible, these summaries should appear inline in the code. +// +// this is "package level documentation" + +dojo.cldr = { + // summary: transformation of relevant pieces of the Unicode.org Common Locale Data Repository + // (see http://unicode.org/cldr) to JSON from the original XML with associated utility classes +}; + +dojo.data = { + // summary: A uniform data access layer +}; + +dojo.dnd = { + // summary: Drag and Drop resources +}; + +dojo.io = { + // summary: Additional I/O transports (Ajax) +}; + +dojo.rpc = { + // summary: Dojo remote-procedure-call resources +}; + +// "variables" + +dojo.baseUrl = { + // summary: The root relative path to dojo.js (as a string) + // example: + // if(typeof dojo != "undefined"){ console.log(dojo.baseUrl); } +}; + +=====*/ diff --git a/js/dojo-release-1.7.2-src/dojo/resources/blank.gif b/js/dojo-release-1.7.2-src/dojo/resources/blank.gif new file mode 100644 index 0000000..e565824 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/resources/blank.gif differ diff --git a/js/dojo-release-1.7.2-src/dojo/resources/blank.html b/js/dojo-release-1.7.2-src/dojo/resources/blank.html new file mode 100644 index 0000000..40fe770 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/resources/blank.html @@ -0,0 +1 @@ + diff --git a/js/dojo-release-1.7.2-src/dojo/resources/dnd.css b/js/dojo-release-1.7.2-src/dojo/resources/dnd.css new file mode 100644 index 0000000..fb06118 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/resources/dnd.css @@ -0,0 +1,16 @@ +/* DnD avatar-specific settings */ +.dojoDndAvatar {font-size: 75%; color: black;} +.dojoDndAvatarHeader td {padding-left: 20px; padding-right: 4px; height: 16px;} +.dojoDndAvatarHeader {background: #ccc;} +.dojoDndAvatarItem {background: #eee;} +.dojoDndMove .dojoDndAvatarHeader {background-image: url(images/dndNoMove.png); background-repeat: no-repeat;} +.dojoDndCopy .dojoDndAvatarHeader {background-image: url(images/dndNoCopy.png); background-repeat: no-repeat;} +.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-image: url(images/dndMove.png); background-repeat: no-repeat;} +.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-image: url(images/dndCopy.png); background-repeat: no-repeat;} + +.dojoDndHandle {cursor: move;} +.dojoDndIgnore {cursor: default;} + +.dijit_a11y .dojoDndAvatar { font-size: 1em; font-weight:bold;} +.dijit_a11y .dojoDndAvatarHeader td {padding-left:2px !important;} +.dijit_a11y .dojoDndAvatarHeader td span {padding-right: 5px;} diff --git a/js/dojo-release-1.7.2-src/dojo/resources/dojo.css b/js/dojo-release-1.7.2-src/dojo/resources/dojo.css new file mode 100644 index 0000000..fdaa842 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/resources/dojo.css @@ -0,0 +1,196 @@ +/* + dojo.css + Baseline CSS file for general usage. + + This file is intended to be a "quick and dirty" stylesheet you can use to give + a straight-up web page some basic styling without having to do the dirty work + yourself. It includes a modified version of YUI's reset.css (we pulled some + of the list reset definitions, among other things), and then provides some very + basic style rules to be applied to general HTML elements. + + This stylesheet is NOT intended to serve as the foundation for more complex things-- + including the use of a TABLE for layout purposes. The table definitions in this + file make the assumption that you will be using tables for thier declared purpose: + displaying tabular data. + + If you are looking for a baseline stylesheet using tables for grid layout, you will + need to supply your own layout rules to override the ones in this stylesheet. + + Applications using Dojo will function correctly without including this + file, but it should provide sane defaults for many common things that page + authors often need to set up manually. + + The Dojo Core uses this stylesheet to quickly style HTML-based tests and demos. Feel + free to use it as you will. +*/ + +/*****************************************************************************************/ + +/* + The below are borrowed from YUI's reset style sheets for pages and fonts. + We've verified w/ the YUI development team that these are entirely + copyright Yahoo, written entirely by Nate Koechley and Matt Sweeney without + external contributions. + + Copyright (c) 2007, Yahoo! Inc. All rights reserved. + Code licensed under the BSD License: + http://developer.yahoo.net/yui/license.txt + version: 2.2.1 +*/ + +body, div, dl, dt, dd, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td { + margin: 0; + padding: 0; +} + +fieldset, img { + border: 0 none; +} + +address, caption, cite, code, dfn, th, var { + font-style: normal; + font-weight: normal; +} + +caption, th { + text-align: left; +} + +q:before, q:after { + content:""; +} + +abbr, acronym { + border:0; +} +/* End YUI imported code. */ + +/*****************************************************************************************/ + +/* + Begin Dojo additions. + + Style definitions, based loosely on the Dijit Tundra theme. + Relative unit calculations based on "Compose to a Vertical Rhythm", + by Richard Rutter (http://24ways.org/2006/compose-to-a-vertical-rhythm) + + If changing the font size, make sure you do it in both + percent and px (% for IE, px for everything else). + % value based on default size of 16px (in most browsers). + So if you want the default size to be 14px, set the + % to 87% (14 / 16 = 0.875). + + Typical values: + 10px: 62.5% + 11px: 69% (68.75) + 12px: 75% + 13px: 81.25% + 14px: 87.5% + 16px: 100% + + Default: 12px +*/ +body { + font: 12px Myriad,Helvetica,Tahoma,Arial,clean,sans-serif; + *font-size: 75%; +} + +/* Headings */ +h1 { + font-size: 1.5em; + font-weight: normal; + line-height: 1em; + margin-top: 1em; + margin-bottom:0; +} + +h2 { + font-size: 1.1667em; + font-weight: bold; + line-height: 1.286em; + margin-top: 1.929em; + margin-bottom:0.643em; +} + +h3, h4, h5, h6 { + font-size: 1em; + font-weight: bold; + line-height: 1.5em; + margin-top: 1.5em; + margin-bottom: 0; +} + +/* paragraphs, quotes and lists */ +p { + font-size: 1em; + margin-top: 1.5em; + margin-bottom: 1.5em; + line-height: 1.5em; +} + +blockquote { + font-size: 0.916em; + margin-top: 3.272em; + margin-bottom: 3.272em; + line-height: 1.636em; + padding: 1.636em; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} + +ol li, ul li { + font-size: 1em; + line-height: 1.5em; + margin: 0; +} + +/* pre and code */ +pre, code { + font-size:115%; + *font-size:100%; + font-family: Courier, "Courier New"; + background-color: #efefef; + border: 1px solid #ccc; +} + +pre { + border-width: 1px 0; + padding: 1.5em; +} + +/* + Tables + + Note that these table definitions make the assumption that you are using tables + to display tabular data, and NOT using tables as layout mechanisms. If you are + using tables for layout, you will probably want to override these rules with + more specific ones. + + These definitions make tabular data look presentable, particularly when presented + inline with paragraphs. +*/ +table { font-size:100%; } + +.dojoTabular { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #ccc; + margin: 0 1.5em; +} + +.dojoTabular th { + text-align: center; + font-weight: bold; +} + +.dojoTabular thead, +.dojoTabular tfoot { + background-color: #efefef; + border: 1px solid #ccc; + border-width: 1px 0; +} + +.dojoTabular th, +.dojoTabular td { + padding: 0.25em 0.5em; +} diff --git a/js/dojo-release-1.7.2-src/dojo/resources/iframe_history.html b/js/dojo-release-1.7.2-src/dojo/resources/iframe_history.html new file mode 100644 index 0000000..2c5acce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/resources/iframe_history.html @@ -0,0 +1,44 @@ + + + + + + + + + +

                            The Dojo Toolkit -- iframe_history.html

                            + +

                            This file is used in Dojo's back/fwd button management.

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/resources/images/dndCopy.png b/js/dojo-release-1.7.2-src/dojo/resources/images/dndCopy.png new file mode 100644 index 0000000..660ca4f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/resources/images/dndCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/resources/images/dndMove.png b/js/dojo-release-1.7.2-src/dojo/resources/images/dndMove.png new file mode 100644 index 0000000..74af29c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/resources/images/dndMove.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/resources/images/dndNoCopy.png b/js/dojo-release-1.7.2-src/dojo/resources/images/dndNoCopy.png new file mode 100644 index 0000000..998c2f2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/resources/images/dndNoCopy.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/resources/images/dndNoMove.png b/js/dojo-release-1.7.2-src/dojo/resources/images/dndNoMove.png new file mode 100644 index 0000000..e909173 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojo/resources/images/dndNoMove.png differ diff --git a/js/dojo-release-1.7.2-src/dojo/robot.js b/js/dojo-release-1.7.2-src/dojo/robot.js new file mode 100644 index 0000000..3fb9ea0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/robot.js @@ -0,0 +1,172 @@ +define(["dojo", "doh/_browserRunner", "doh/robot", "dojo/window"], function(dojo, doh) { + +dojo.experimental("dojo.robot"); + +// users who use doh+dojo get the added convenience of dojo.mouseMoveAt, +// instead of computing the absolute coordinates of their elements themselves +dojo.mixin(doh.robot,{ + + _resolveNode: function(/*String||DOMNode||Function*/ n){ + if(typeof n == "function"){ + // if the user passed a function returning a node, evaluate it + n = n(); + } + return n? dojo.byId(n) : null; + }, + + _scrollIntoView: function(/*Node*/ n){ + // scrolls the passed node into view, scrolling all ancester frames/windows as well. + // Assumes parent iframes can be made fully visible given the current browser window size + var dr = doh.robot, + p = null; + dojo.forEach(dr._getWindowChain(n), function(w){ + dojo.withGlobal(w, function(){ + // get the position of the node wrt its parent window + // if it is a parent frame, its padding and border extents will get added in + var p2 = dojo.position(n, false), + b = dojo._getPadBorderExtents(n), + oldp = null; + // if p2 is the position of the original passed node, store the position away as p + // otherwise, node is actually an iframe. in this case, add the iframe's position wrt its parent window and also the iframe's padding and border extents + if(!p){ + p = p2; + }else{ + oldp = p; + p = {x: p.x+p2.x+b.l, + y: p.y+p2.y+b.t, + w: p.w, + h: p.h}; + + } + // scroll the parent window so that the node translated into the parent window's coordinate space is in view + dojo.window.scrollIntoView(n,p); + // adjust position for the new scroll offsets + p2 = dojo.position(n, false); + if(!oldp){ + p = p2; + }else{ + p = {x: oldp.x+p2.x+b.l, + y: oldp.y+p2.y+b.t, + w: p.w, + h: p.h}; + } + // get the parent iframe so it can be scrolled too + n = w.frameElement; + }); + }); + }, + + _position: function(/*Node*/ n){ + // Returns the dojo.position of the passed node wrt the passed window's viewport, + // following any parent iframes containing the node and clipping the node to each iframe. + // precondition: _scrollIntoView already called + var p = null, M = Math.max, m = Math.min; + // p: the returned position of the node + dojo.forEach(doh.robot._getWindowChain(n), function(w){ + dojo.withGlobal(w, function(){ + // get the position of the node wrt its parent window + // if it is a parent frame, its padding and border extents will get added in + var p2 = dojo.position(n, false), b = dojo._getPadBorderExtents(n); + // if p2 is the position of the original passed node, store the position away as p + // otherwise, node is actually an iframe. in this case, add the iframe's position wrt its parent window and also the iframe's padding and border extents + if(!p){ + p = p2; + }else{ + var view; + dojo.withGlobal(n.contentWindow,function(){ + view=dojo.window.getBox(); + }); + p2.r = p2.x+view.w; + p2.b = p2.y+view.h; + p = {x: M(p.x+p2.x,p2.x)+b.l, // clip left edge of node wrt the iframe + y: M(p.y+p2.y,p2.y)+b.t, // top edge + r: m(p.x+p2.x+p.w,p2.r)+b.l, // right edge (to compute width) + b: m(p.y+p2.y+p.h,p2.b)+b.t}; // bottom edge (to compute height) + // save a few bytes by computing width and height from r and b + p.w = p.r-p.x; + p.h = p.b-p.y; + } + // the new node is now the old node's parent iframe + n=w.frameElement; + }); + }); + return p; + }, + + _getWindowChain : function(/*Node*/ n){ + // Returns an array of windows starting from the passed node's parent window and ending at dojo's window + var cW = dojo.window.get(n.ownerDocument); + var arr=[cW]; + var f = cW.frameElement; + return (cW == dojo.global || f == null)? arr : arr.concat(doh.robot._getWindowChain(f)); + }, + + scrollIntoView : function(/*String||DOMNode||Function*/ node, /*Number, optional*/ delay){ + // summary: + // Scroll the passed node into view, if it is not. + // + // node: + // The id of the node, or the node itself, to move the mouse to. + // If you pass an id or a function that returns a node, the node will not be evaluated until the movement executes. + // This is useful if you need to move the mouse to an node that is not yet present. + // + // delay: + // Delay, in milliseconds, to wait before firing. + // The delay is a delta with respect to the previous automation call. + // + doh.robot.sequence(function(){ + doh.robot._scrollIntoView(doh.robot._resolveNode(node)); + }, delay); + }, + + mouseMoveAt : function(/*String||DOMNode||Function*/ node, /*Integer, optional*/ delay, /*Integer, optional*/ duration, /*Number, optional*/ offsetX, /*Number, optional*/ offsetY){ + // summary: + // Moves the mouse over the specified node at the specified relative x,y offset. + // + // description: + // Moves the mouse over the specified node at the specified relative x,y offset. + // If you do not specify an offset, mouseMove will default to move to the middle of the node. + // Example: to move the mouse over a ComboBox's down arrow node, call doh.mouseMoveAt(dijit.byId('setvaluetest').downArrowNode); + // + // node: + // The id of the node, or the node itself, to move the mouse to. + // If you pass an id or a function that returns a node, the node will not be evaluated until the movement executes. + // This is useful if you need to move the mouse to an node that is not yet present. + // + // delay: + // Delay, in milliseconds, to wait before firing. + // The delay is a delta with respect to the previous automation call. + // For example, the following code ends after 600ms: + // doh.robot.mouseClick({left:true}, 100) // first call; wait 100ms + // doh.robot.typeKeys("dij", 500) // 500ms AFTER previous call; 600ms in all + // + // duration: + // Approximate time Robot will spend moving the mouse + // The default is 100ms. + // + // offsetX: + // x offset relative to the node, in pixels, to move the mouse. The default is half the node's width. + // + // offsetY: + // y offset relative to the node, in pixels, to move the mouse. The default is half the node's height. + // + + doh.robot._assertRobot(); + duration = duration||100; + this.sequence(function(){ + node=doh.robot._resolveNode(node); + doh.robot._scrollIntoView(node); + var pos = doh.robot._position(node); + if(offsetY === undefined){ + offsetX=pos.w/2; + offsetY=pos.h/2; + } + var x = pos.x+offsetX; + var y = pos.y+offsetY; + doh.robot._mouseMove(x, y, false, duration); + }, delay, duration); + } +}); + +return doh.robot; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/robotx.js b/js/dojo-release-1.7.2-src/dojo/robotx.js new file mode 100644 index 0000000..9f519c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/robotx.js @@ -0,0 +1,161 @@ +define(["dojo", "dojo/robot"], function(dojo) { + +dojo.experimental("dojo.robotx"); + +// loads an external app into an iframe and points dojo.doc to the iframe document, allowing the robot to control it +// to use: set robotURL in djConfig to the URL you want to load +// dojo.require this file + +var iframe = null; + +var groupStarted=dojo.connect(doh, '_groupStarted', function(){ + dojo.disconnect(groupStarted); + iframe.style.visibility="visible"; +}); + +var attachIframe = function(){ + dojo.addOnLoad(function(){ + var emptyStyle = { + overflow: dojo.isWebKit? 'hidden' : 'visible', + margin: '0px', + borderWidth: '0px', + height: '100%', + width: '100%' + }; + dojo.style(document.documentElement, emptyStyle); + dojo.style(document.body, emptyStyle); + document.body.appendChild(iframe); + var base=document.createElement('base'); + base.href=iframe.src; + document.getElementsByTagName("head")[0].appendChild(base); + }); +}; + +// Prevent race conditions between iframe loading and robot init. +// If iframe is allowed to load while the robot is typing, sync XHRs can prevent the robot from completing its initialization. +var robotReady=false; +var robotFrame=null; +var _run=doh.robot._run; +doh.robot._run = function(frame){ + // Called from robot when the robot completed its initialization. + robotReady = true; + robotFrame = frame; + doh.robot._run = _run; + // If initRobot was already called, then attach the iframe. + if(iframe.src){ + attachIframe(); + } +}; + +var onIframeLoad=function(){ + // initial load handler: update the document and start the tests + doh.robot._updateDocument(); + onIframeLoad = null; + var scrollRoot = (document.compatMode == 'BackCompat')? document.body : document.documentElement; + var consoleHeight = document.getElementById('robotconsole').offsetHeight; + if(consoleHeight){ + iframe.style.height = (scrollRoot.clientHeight - consoleHeight)+"px"; + } + // If dojo is present in the test case, then at least make a best effort to wait for it to load. + // The test must handle other race conditions like initial data queries by itself. + if(iframe.contentWindow.dojo){ + iframe.contentWindow.dojo.addOnLoad(function(){ + doh.robot._run(robotFrame); + }); + }else{ + doh.robot._run(robotFrame); + } +}; + +var iframeLoad=function(){ + if(onIframeLoad){ + onIframeLoad(); + } + var unloadConnect = dojo.connect(dojo.body(), 'onunload', function(){ + dojo.global = window; + dojo.doc = document; + dojo.disconnect(unloadConnect); + }); +}; + +// write the firebug console to a place it will fit +dojo.config.debugContainerId = "robotconsole"; +dojo.config.debugHeight = dojo.config.debugHeight || 200; +document.write('
                            '); + +// write the iframe +//document.writeln(''); +iframe = document.createElement('iframe'); +iframe.setAttribute("ALLOWTRANSPARENCY","true"); +iframe.scrolling = dojo.isIE? "yes" : "auto"; +dojo.style(iframe,{visibility:'hidden', border:'0px none', padding:'0px', margin:'0px', position:'absolute', left:'0px', top:'0px', width:'100%', height:'100%'}); +if(iframe['attachEvent'] !== undefined){ + iframe.attachEvent('onload', iframeLoad); +}else{ + dojo.connect(iframe, 'onload', iframeLoad); +} + +dojo.mixin(doh.robot,{ + _updateDocument: function(){ + dojo.setContext(iframe.contentWindow, iframe.contentWindow.document); + var win = dojo.global; + if(win.dojo){ + // allow the tests to subscribe to topics published by the iframe + dojo.publish = win.dojo.publish; + dojo.subscribe = win.dojo.subscribe; + dojo.connectPublisher = win.dojo.connectPublisher; + } + + }, + + initRobot: function(/*String*/ url){ + // summary: + // Opens the application at the specified URL for testing, redirecting dojo to point to the application environment instead of the test environment. + // + // url: + // URL to open. Any of the test's dojo.doc calls (e.g. dojo.byId()), and any dijit.registry calls (e.g. dijit.byId()) will point to elements and widgets inside this application. + // + + iframe.src=url; + // see above note about race conditions + if(robotReady){ + attachIframe(); + + } + }, + + waitForPageToLoad: function(/*Function*/ submitActions){ + // summary: + // Notifies DOH that the doh.robot is about to make a page change in the application it is driving, + // returning a doh.Deferred object the user should return in their runTest function as part of a DOH test. + // + // description: + // Notifies DOH that the doh.robot is about to make a page change in the application it is driving, + // returning a doh.Deferred object the user should return in their runTest function as part of a DOH test. + // Example: + // runTest:function(){ + // return waitForPageLoad(function(){ doh.robot.keyPress(dojo.keys.ENTER, 500); }); + // } + // + // submitActions: + // The doh.robot will execute the actions the test passes into the submitActions argument (like clicking the submit button), + // expecting these actions to create a page change (like a form submit). + // After these actions execute and the resulting page loads, the next test will start. + // + + var d = new doh.Deferred(); + // create iframe event handler to track submit progress + onIframeLoad = function(){ + onIframeLoad = null; + // set dojo.doc on every page change to point to the iframe doc so the robot works + doh.robot._updateDocument(); + d.callback(true); + }; + submitActions(); + return d; + } + +}); + +return doh.robot; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/rpc/JsonService.js b/js/dojo-release-1.7.2-src/dojo/rpc/JsonService.js new file mode 100644 index 0000000..c37adf8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/rpc/JsonService.js @@ -0,0 +1,85 @@ +define(["../main", "./RpcService"], function(dojo) { + // module: + // dojo/rpc/JsonService + // summary: + // TODOC + + +dojo.declare("dojo.rpc.JsonService", dojo.rpc.RpcService, { + bustCache: false, + contentType: "application/json-rpc", + lastSubmissionId: 0, + + callRemote: function(method, params){ + // summary: + // call an arbitrary remote method without requiring it to be + // predefined with SMD + // method: string + // the name of the remote method you want to call. + // params: array + // array of parameters to pass to method + + var deferred = new dojo.Deferred(); + this.bind(method, params, deferred); + return deferred; + }, + + bind: function(method, parameters, deferredRequestHandler, url){ + //summary: + // JSON-RPC bind method. Takes remote method, parameters, + // deferred, and a url, calls createRequest to make a JSON-RPC + // envelope and passes that off with bind. + // method: string + // The name of the method we are calling + // parameters: array + // The parameters we are passing off to the method + // deferredRequestHandler: deferred + // The Deferred object for this particular request + + var def = dojo.rawXhrPost({ + url: url||this.serviceUrl, + postData: this.createRequest(method, parameters), + contentType: this.contentType, + timeout: this.timeout, + handleAs: "json-comment-optional" + }); + def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler)); + }, + + createRequest: function(method, params){ + // summary: + // create a JSON-RPC envelope for the request + // method: string + // The name of the method we are creating the requst for + // params: array + // The array of parameters for this request; + + var req = { "params": params, "method": method, "id": ++this.lastSubmissionId }; + return dojo.toJson(req); + }, + + parseResults: function(/*anything*/obj){ + //summary: + // parse the result envelope and pass the results back to + // the callback function + // obj: Object + // Object containing envelope of data we recieve from the server + + if(dojo.isObject(obj)){ + if("result" in obj){ + return obj.result; + } + if("Result" in obj){ + return obj.Result; + } + if("ResultSet" in obj){ + return obj.ResultSet; + } + } + return obj; + } + } +); + +return dojo.rpc.JsonService; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/rpc/JsonpService.js b/js/dojo-release-1.7.2-src/dojo/rpc/JsonpService.js new file mode 100644 index 0000000..eb2ff63 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/rpc/JsonpService.js @@ -0,0 +1,67 @@ +define(["../main", "./RpcService", "../io/script"], function(dojo) { + // module: + // dojo/rpc/JsonpService + // summary: + // TODOC + + +dojo.declare("dojo.rpc.JsonpService", dojo.rpc.RpcService, { + // summary: + // Generic JSONP service. Minimally extends RpcService to allow + // easy definition of nearly any JSONP style service. Example + // SMD files exist in dojox.data + + constructor: function(args, requiredArgs){ + if(this.required) { + if(requiredArgs){ + dojo.mixin(this.required, requiredArgs); + } + + dojo.forEach(this.required, function(req){ + if(req=="" || req==undefined){ + throw new Error("Required Service Argument not found: "+req); + } + }); + } + }, + + strictArgChecks: false, + + bind: function(method, parameters, deferredRequestHandler, url){ + //summary: + // JSONP bind method. Takes remote method, parameters, + // deferred, and a url, calls createRequest to make a JSON-RPC + // envelope and passes that off with bind. + // method: string + // The name of the method we are calling + // parameters: array + // The parameters we are passing off to the method + // deferredRequestHandler: deferred + // The Deferred object for this particular request + + var def = dojo.io.script.get({ + url: url||this.serviceUrl, + callbackParamName: this.callbackParamName||"callback", + content: this.createRequest(parameters), + timeout: this.timeout, + handleAs: "json", + preventCache: true + }); + def.addCallbacks(this.resultCallback(deferredRequestHandler), this.errorCallback(deferredRequestHandler)); + }, + + createRequest: function(parameters){ + // summary: + // create a JSONP req + // params: array + // The array of parameters for this request; + + var params = (dojo.isArrayLike(parameters) && parameters.length==1) ? + parameters[0] : {}; + dojo.mixin(params,this.required); + return params; + } +}); + +return dojo.rpc.JsonpService; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/rpc/RpcService.js b/js/dojo-release-1.7.2-src/dojo/rpc/RpcService.js new file mode 100644 index 0000000..26cb1ee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/rpc/RpcService.js @@ -0,0 +1,175 @@ +define(["../main", "../_base/url"], function(dojo) { + // module: + // dojo/rpc/RpcService + // summary: + // TODOC + + +dojo.declare("dojo.rpc.RpcService", null, { + constructor: function(args){ + //summary: + //Take a string as a url to retrieve an smd or an object that is an smd or partial smd to use + //as a definition for the service + // + // args: object + // Takes a number of properties as kwArgs for defining the service. It also + // accepts a string. When passed a string, it is treated as a url from + // which it should synchronously retrieve an smd file. Otherwise it is a kwArgs + // object. It accepts serviceUrl, to manually define a url for the rpc service + // allowing the rpc system to be used without an smd definition. strictArgChecks + // forces the system to verify that the # of arguments provided in a call + // matches those defined in the smd. smdString allows a developer to pass + // a jsonString directly, which will be converted into an object or alternatively + // smdObject is accepts an smdObject directly. + // + if(args){ + //if the arg is a string, we assume it is a url to retrieve an smd definition from + if( (dojo.isString(args)) || (args instanceof dojo._Url)){ + if (args instanceof dojo._Url){ + var url = args + ""; + }else{ + url = args; + } + var def = dojo.xhrGet({ + url: url, + handleAs: "json-comment-optional", + sync: true + }); + + def.addCallback(this, "processSmd"); + def.addErrback(function() { + throw new Error("Unable to load SMD from " + args); + }); + + }else if(args.smdStr){ + this.processSmd(dojo.eval("("+args.smdStr+")")); + }else{ + // otherwise we assume it's an arguments object with the following + // (optional) properties: + // - serviceUrl + // - strictArgChecks + // - smdStr + // - smdObj + + if(args.serviceUrl){ + this.serviceUrl = args.serviceUrl; + } + + this.timeout = args.timeout || 3000; + + if("strictArgChecks" in args){ + this.strictArgChecks = args.strictArgChecks; + } + + this.processSmd(args); + } + } + }, + + strictArgChecks: true, + serviceUrl: "", + + parseResults: function(obj){ + // summary: + // parse the results coming back from an rpc request. this + // base implementation, just returns the full object + // subclasses should parse and only return the actual results + // obj: Object + // Object that is the return results from an rpc request + return obj; + }, + + errorCallback: function(/* dojo.Deferred */ deferredRequestHandler){ + // summary: + // create callback that calls the Deferres errback method + // deferredRequestHandler: Deferred + // The deferred object handling a request. + return function(data){ + deferredRequestHandler.errback(data.message); + }; + }, + + resultCallback: function(/* dojo.Deferred */ deferredRequestHandler){ + // summary: + // create callback that calls the Deferred's callback method + // deferredRequestHandler: Deferred + // The deferred object handling a request. + + return dojo.hitch(this, + function(obj){ + if(obj.error!=null){ + var err; + if(typeof obj.error == 'object'){ + err = new Error(obj.error.message); + err.code = obj.error.code; + err.error = obj.error.error; + }else{ + err = new Error(obj.error); + } + err.id = obj.id; + err.errorObject = obj; + deferredRequestHandler.errback(err); + }else{ + deferredRequestHandler.callback(this.parseResults(obj)); + } + } + ); + }, + + generateMethod: function(/*string*/ method, /*array*/ parameters, /*string*/ url){ + // summary: + // generate the local bind methods for the remote object + // method: string + // The name of the method we are generating + // parameters: array + // the array of parameters for this call. + // url: string + // the service url for this call + + return dojo.hitch(this, function(){ + var deferredRequestHandler = new dojo.Deferred(); + + // if params weren't specified, then we can assume it's varargs + if( (this.strictArgChecks) && + (parameters != null) && + (arguments.length != parameters.length) + ){ + // put error stuff here, no enough params + throw new Error("Invalid number of parameters for remote method."); + }else{ + this.bind(method, dojo._toArray(arguments), deferredRequestHandler, url); + } + + return deferredRequestHandler; + }); + }, + + processSmd: function(object){ + // summary: + // callback method for reciept of a smd object. Parse the smd + // and generate functions based on the description + // object: + // smd object defining this service. + + if(object.methods){ + dojo.forEach(object.methods, function(m){ + if(m && m.name){ + this[m.name] = this.generateMethod( m.name, + m.parameters, + m.url||m.serviceUrl||m.serviceURL); + if(!dojo.isFunction(this[m.name])){ + throw new Error("RpcService: Failed to create" + m.name + "()"); + /*console.log("RpcService: Failed to create", m.name, "()");*/ + } + } + }, this); + } + + this.serviceUrl = object.serviceUrl||object.serviceURL; + this.required = object.required; + this.smd = object; + } +}); + +return dojo.rpc.RpcService; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/selector/_loader.js b/js/dojo-release-1.7.2-src/dojo/selector/_loader.js new file mode 100644 index 0000000..e5c9094 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/selector/_loader.js @@ -0,0 +1,45 @@ +define(["../has", "require"], + function(has, require){ +// summary: +// This module handles loading the appropriate selector engine for the given browser +"use strict"; +var testDiv = document.createElement("div"); +has.add("dom-qsa2.1", !!testDiv.querySelectorAll); +has.add("dom-qsa3", function(){ + // test to see if we have a reasonable native selector engine available + try{ + testDiv.innerHTML = "

                            "; // test kind of from sizzle + // Safari can't handle uppercase or unicode characters when + // in quirks mode, IE8 can't handle pseudos like :empty + return testDiv.querySelectorAll(".TEST:empty").length == 1; + }catch(e){} + }); +var fullEngine; +var acme = "./acme", lite = "./lite"; +return { + load: function(id, parentRequire, loaded, config){ + var req = require; + // here we implement the default logic for choosing a selector engine + id = id == "default" ? has("config-selectorEngine") || "css3" : id; + id = id == "css2" || id == "lite" ? lite : + id == "css2.1" ? has("dom-qsa2.1") ? lite : acme : + id == "css3" ? has("dom-qsa3") ? lite : acme : + id == "acme" ? acme : (req = parentRequire) && id; + if(id.charAt(id.length-1) == '?'){ + id = id.substring(0,id.length - 1); + var optionalLoad = true; + } + // the query engine is optional, only load it if a native one is not available or existing one has not been loaded + if(optionalLoad && (has("dom-compliant-qsa") || fullEngine)){ + return loaded(fullEngine); + } + // load the referenced selector engine + req([id], function(engine){ + if(id != "./lite"){ + fullEngine = engine; + } + loaded(engine); + }); + } +}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/selector/acme.js b/js/dojo-release-1.7.2-src/dojo/selector/acme.js new file mode 100644 index 0000000..d90dc72 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/selector/acme.js @@ -0,0 +1,1480 @@ +define(["../_base/kernel", "../has", "../dom", "../_base/sniff", "../_base/array", "../_base/lang", "../_base/window"], function(dojo, has, dom){ + // module: + // dojo/selector/acme + // summary: + // This module defines the Acme selector engine + +/* + acme architectural overview: + + acme is a relatively full-featured CSS3 query library. It is + designed to take any valid CSS3 selector and return the nodes matching + the selector. To do this quickly, it processes queries in several + steps, applying caching where profitable. + + The steps (roughly in reverse order of the way they appear in the code): + 1.) check to see if we already have a "query dispatcher" + - if so, use that with the given parameterization. Skip to step 4. + 2.) attempt to determine which branch to dispatch the query to: + - JS (optimized DOM iteration) + - native (FF3.1+, Safari 3.1+, IE 8+) + 3.) tokenize and convert to executable "query dispatcher" + - this is where the lion's share of the complexity in the + system lies. In the DOM version, the query dispatcher is + assembled as a chain of "yes/no" test functions pertaining to + a section of a simple query statement (".blah:nth-child(odd)" + but not "div div", which is 2 simple statements). Individual + statement dispatchers are cached (to prevent re-definition) + as are entire dispatch chains (to make re-execution of the + same query fast) + 4.) the resulting query dispatcher is called in the passed scope + (by default the top-level document) + - for DOM queries, this results in a recursive, top-down + evaluation of nodes based on each simple query section + - for native implementations, this may mean working around spec + bugs. So be it. + 5.) matched nodes are pruned to ensure they are unique (if necessary) +*/ + + + //////////////////////////////////////////////////////////////////////// + // Toolkit aliases + //////////////////////////////////////////////////////////////////////// + + // if you are extracting acme for use in your own system, you will + // need to provide these methods and properties. No other porting should be + // necessary, save for configuring the system to use a class other than + // dojo.NodeList as the return instance instantiator + var trim = dojo.trim; + var each = dojo.forEach; + // d.isIE; // float + // d.isSafari; // float + // d.isOpera; // float + // d.isWebKit; // float + // d.doc ; // document element + + var getDoc = function(){ return dojo.doc; }; + // NOTE(alex): the spec is idiotic. CSS queries should ALWAYS be case-sensitive, but nooooooo + var cssCaseBug = ((dojo.isWebKit||dojo.isMozilla) && ((getDoc().compatMode) == "BackCompat")); + + //////////////////////////////////////////////////////////////////////// + // Global utilities + //////////////////////////////////////////////////////////////////////// + + + var specials = ">~+"; + + // global thunk to determine whether we should treat the current query as + // case sensitive or not. This switch is flipped by the query evaluator + // based on the document passed as the context to search. + var caseSensitive = false; + + // how high? + var yesman = function(){ return true; }; + + //////////////////////////////////////////////////////////////////////// + // Tokenizer + //////////////////////////////////////////////////////////////////////// + + var getQueryParts = function(query){ + // summary: + // state machine for query tokenization + // description: + // instead of using a brittle and slow regex-based CSS parser, + // acme implements an AST-style query representation. This + // representation is only generated once per query. For example, + // the same query run multiple times or under different root nodes + // does not re-parse the selector expression but instead uses the + // cached data structure. The state machine implemented here + // terminates on the last " " (space) character and returns an + // ordered array of query component structures (or "parts"). Each + // part represents an operator or a simple CSS filtering + // expression. The structure for parts is documented in the code + // below. + + + // NOTE: + // this code is designed to run fast and compress well. Sacrifices + // to readability and maintainability have been made. Your best + // bet when hacking the tokenizer is to put The Donnas on *really* + // loud (may we recommend their "Spend The Night" release?) and + // just assume you're gonna make mistakes. Keep the unit tests + // open and run them frequently. Knowing is half the battle ;-) + if(specials.indexOf(query.slice(-1)) >= 0){ + // if we end with a ">", "+", or "~", that means we're implicitly + // searching all children, so make it explicit + query += " * " + }else{ + // if you have not provided a terminator, one will be provided for + // you... + query += " "; + } + + var ts = function(/*Integer*/ s, /*Integer*/ e){ + // trim and slice. + + // take an index to start a string slice from and an end position + // and return a trimmed copy of that sub-string + return trim(query.slice(s, e)); + }; + + // the overall data graph of the full query, as represented by queryPart objects + var queryParts = []; + + + // state keeping vars + var inBrackets = -1, inParens = -1, inMatchFor = -1, + inPseudo = -1, inClass = -1, inId = -1, inTag = -1, + lc = "", cc = "", pStart; + + // iteration vars + var x = 0, // index in the query + ql = query.length, + currentPart = null, // data structure representing the entire clause + _cp = null; // the current pseudo or attr matcher + + // several temporary variables are assigned to this structure during a + // potential sub-expression match: + // attr: + // a string representing the current full attribute match in a + // bracket expression + // type: + // if there's an operator in a bracket expression, this is + // used to keep track of it + // value: + // the internals of parenthetical expression for a pseudo. for + // :nth-child(2n+1), value might be "2n+1" + + var endTag = function(){ + // called when the tokenizer hits the end of a particular tag name. + // Re-sets state variables for tag matching and sets up the matcher + // to handle the next type of token (tag or operator). + if(inTag >= 0){ + var tv = (inTag == x) ? null : ts(inTag, x); // .toLowerCase(); + currentPart[ (specials.indexOf(tv) < 0) ? "tag" : "oper" ] = tv; + inTag = -1; + } + }; + + var endId = function(){ + // called when the tokenizer might be at the end of an ID portion of a match + if(inId >= 0){ + currentPart.id = ts(inId, x).replace(/\\/g, ""); + inId = -1; + } + }; + + var endClass = function(){ + // called when the tokenizer might be at the end of a class name + // match. CSS allows for multiple classes, so we augment the + // current item with another class in its list + if(inClass >= 0){ + currentPart.classes.push(ts(inClass + 1, x).replace(/\\/g, "")); + inClass = -1; + } + }; + + var endAll = function(){ + // at the end of a simple fragment, so wall off the matches + endId(); + endTag(); + endClass(); + }; + + var endPart = function(){ + endAll(); + if(inPseudo >= 0){ + currentPart.pseudos.push({ name: ts(inPseudo + 1, x) }); + } + // hint to the selector engine to tell it whether or not it + // needs to do any iteration. Many simple selectors don't, and + // we can avoid significant construction-time work by advising + // the system to skip them + currentPart.loops = ( + currentPart.pseudos.length || + currentPart.attrs.length || + currentPart.classes.length ); + + currentPart.oquery = currentPart.query = ts(pStart, x); // save the full expression as a string + + + // otag/tag are hints to suggest to the system whether or not + // it's an operator or a tag. We save a copy of otag since the + // tag name is cast to upper-case in regular HTML matches. The + // system has a global switch to figure out if the current + // expression needs to be case sensitive or not and it will use + // otag or tag accordingly + currentPart.otag = currentPart.tag = (currentPart["oper"]) ? null : (currentPart.tag || "*"); + + if(currentPart.tag){ + // if we're in a case-insensitive HTML doc, we likely want + // the toUpperCase when matching on element.tagName. If we + // do it here, we can skip the string op per node + // comparison + currentPart.tag = currentPart.tag.toUpperCase(); + } + + // add the part to the list + if(queryParts.length && (queryParts[queryParts.length-1].oper)){ + // operators are always infix, so we remove them from the + // list and attach them to the next match. The evaluator is + // responsible for sorting out how to handle them. + currentPart.infixOper = queryParts.pop(); + currentPart.query = currentPart.infixOper.query + " " + currentPart.query; + /* + console.debug( "swapping out the infix", + currentPart.infixOper, + "and attaching it to", + currentPart); + */ + } + queryParts.push(currentPart); + + currentPart = null; + }; + + // iterate over the query, character by character, building up a + // list of query part objects + for(; lc=cc, cc=query.charAt(x), x < ql; x++){ + // cc: the current character in the match + // lc: the last character (if any) + + // someone is trying to escape something, so don't try to match any + // fragments. We assume we're inside a literal. + if(lc == "\\"){ continue; } + if(!currentPart){ // a part was just ended or none has yet been created + // NOTE: I hate all this alloc, but it's shorter than writing tons of if's + pStart = x; + // rules describe full CSS sub-expressions, like: + // #someId + // .className:first-child + // but not: + // thinger > div.howdy[type=thinger] + // the indidual components of the previous query would be + // split into 3 parts that would be represented a structure + // like: + // [ + // { + // query: "thinger", + // tag: "thinger", + // }, + // { + // query: "div.howdy[type=thinger]", + // classes: ["howdy"], + // infixOper: { + // query: ">", + // oper: ">", + // } + // }, + // ] + currentPart = { + query: null, // the full text of the part's rule + pseudos: [], // CSS supports multiple pseud-class matches in a single rule + attrs: [], // CSS supports multi-attribute match, so we need an array + classes: [], // class matches may be additive, e.g.: .thinger.blah.howdy + tag: null, // only one tag... + oper: null, // ...or operator per component. Note that these wind up being exclusive. + id: null, // the id component of a rule + getTag: function(){ + return (caseSensitive) ? this.otag : this.tag; + } + }; + + // if we don't have a part, we assume we're going to start at + // the beginning of a match, which should be a tag name. This + // might fault a little later on, but we detect that and this + // iteration will still be fine. + inTag = x; + } + + if(inBrackets >= 0){ + // look for a the close first + if(cc == "]"){ // if we're in a [...] clause and we end, do assignment + if(!_cp.attr){ + // no attribute match was previously begun, so we + // assume this is an attribute existence match in the + // form of [someAttributeName] + _cp.attr = ts(inBrackets+1, x); + }else{ + // we had an attribute already, so we know that we're + // matching some sort of value, as in [attrName=howdy] + _cp.matchFor = ts((inMatchFor||inBrackets+1), x); + } + var cmf = _cp.matchFor; + if(cmf){ + // try to strip quotes from the matchFor value. We want + // [attrName=howdy] to match the same + // as [attrName = 'howdy' ] + if( (cmf.charAt(0) == '"') || (cmf.charAt(0) == "'") ){ + _cp.matchFor = cmf.slice(1, -1); + } + } + // end the attribute by adding it to the list of attributes. + currentPart.attrs.push(_cp); + _cp = null; // necessary? + inBrackets = inMatchFor = -1; + }else if(cc == "="){ + // if the last char was an operator prefix, make sure we + // record it along with the "=" operator. + var addToCc = ("|~^$*".indexOf(lc) >=0 ) ? lc : ""; + _cp.type = addToCc+cc; + _cp.attr = ts(inBrackets+1, x-addToCc.length); + inMatchFor = x+1; + } + // now look for other clause parts + }else if(inParens >= 0){ + // if we're in a parenthetical expression, we need to figure + // out if it's attached to a pseudo-selector rule like + // :nth-child(1) + if(cc == ")"){ + if(inPseudo >= 0){ + _cp.value = ts(inParens+1, x); + } + inPseudo = inParens = -1; + } + }else if(cc == "#"){ + // start of an ID match + endAll(); + inId = x+1; + }else if(cc == "."){ + // start of a class match + endAll(); + inClass = x; + }else if(cc == ":"){ + // start of a pseudo-selector match + endAll(); + inPseudo = x; + }else if(cc == "["){ + // start of an attribute match. + endAll(); + inBrackets = x; + // provide a new structure for the attribute match to fill-in + _cp = { + /*===== + attr: null, type: null, matchFor: null + =====*/ + }; + }else if(cc == "("){ + // we really only care if we've entered a parenthetical + // expression if we're already inside a pseudo-selector match + if(inPseudo >= 0){ + // provide a new structure for the pseudo match to fill-in + _cp = { + name: ts(inPseudo+1, x), + value: null + }; + currentPart.pseudos.push(_cp); + } + inParens = x; + }else if( + (cc == " ") && + // if it's a space char and the last char is too, consume the + // current one without doing more work + (lc != cc) + ){ + endPart(); + } + } + return queryParts; + }; + + + //////////////////////////////////////////////////////////////////////// + // DOM query infrastructure + //////////////////////////////////////////////////////////////////////// + + var agree = function(first, second){ + // the basic building block of the yes/no chaining system. agree(f1, + // f2) generates a new function which returns the boolean results of + // both of the passed functions to a single logical-anded result. If + // either are not passed, the other is used exclusively. + if(!first){ return second; } + if(!second){ return first; } + + return function(){ + return first.apply(window, arguments) && second.apply(window, arguments); + } + }; + + var getArr = function(i, arr){ + // helps us avoid array alloc when we don't need it + var r = arr||[]; // FIXME: should this be 'new d._NodeListCtor()' ? + if(i){ r.push(i); } + return r; + }; + + var _isElement = function(n){ return (1 == n.nodeType); }; + + // FIXME: need to coalesce _getAttr with defaultGetter + var blank = ""; + var _getAttr = function(elem, attr){ + if(!elem){ return blank; } + if(attr == "class"){ + return elem.className || blank; + } + if(attr == "for"){ + return elem.htmlFor || blank; + } + if(attr == "style"){ + return elem.style.cssText || blank; + } + return (caseSensitive ? elem.getAttribute(attr) : elem.getAttribute(attr, 2)) || blank; + }; + + var attrs = { + "*=": function(attr, value){ + return function(elem){ + // E[foo*="bar"] + // an E element whose "foo" attribute value contains + // the substring "bar" + return (_getAttr(elem, attr).indexOf(value)>=0); + } + }, + "^=": function(attr, value){ + // E[foo^="bar"] + // an E element whose "foo" attribute value begins exactly + // with the string "bar" + return function(elem){ + return (_getAttr(elem, attr).indexOf(value)==0); + } + }, + "$=": function(attr, value){ + // E[foo$="bar"] + // an E element whose "foo" attribute value ends exactly + // with the string "bar" + return function(elem){ + var ea = " "+_getAttr(elem, attr); + return (ea.lastIndexOf(value)==(ea.length-value.length)); + } + }, + "~=": function(attr, value){ + // E[foo~="bar"] + // an E element whose "foo" attribute value is a list of + // space-separated values, one of which is exactly equal + // to "bar" + + // return "[contains(concat(' ',@"+attr+",' '), ' "+ value +" ')]"; + var tval = " "+value+" "; + return function(elem){ + var ea = " "+_getAttr(elem, attr)+" "; + return (ea.indexOf(tval)>=0); + } + }, + "|=": function(attr, value){ + // E[hreflang|="en"] + // an E element whose "hreflang" attribute has a + // hyphen-separated list of values beginning (from the + // left) with "en" + var valueDash = value+"-"; + return function(elem){ + var ea = _getAttr(elem, attr); + return ( + (ea == value) || + (ea.indexOf(valueDash)==0) + ); + } + }, + "=": function(attr, value){ + return function(elem){ + return (_getAttr(elem, attr) == value); + } + } + }; + + // avoid testing for node type if we can. Defining this in the negative + // here to avoid negation in the fast path. + var _noNES = (typeof getDoc().firstChild.nextElementSibling == "undefined"); + var _ns = !_noNES ? "nextElementSibling" : "nextSibling"; + var _ps = !_noNES ? "previousElementSibling" : "previousSibling"; + var _simpleNodeTest = (_noNES ? _isElement : yesman); + + var _lookLeft = function(node){ + // look left + while(node = node[_ps]){ + if(_simpleNodeTest(node)){ return false; } + } + return true; + }; + + var _lookRight = function(node){ + // look right + while(node = node[_ns]){ + if(_simpleNodeTest(node)){ return false; } + } + return true; + }; + + var getNodeIndex = function(node){ + var root = node.parentNode; + var i = 0, + tret = root.children || root.childNodes, + ci = (node["_i"]||-1), + cl = (root["_l"]||-1); + + if(!tret){ return -1; } + var l = tret.length; + + // we calculate the parent length as a cheap way to invalidate the + // cache. It's not 100% accurate, but it's much more honest than what + // other libraries do + if( cl == l && ci >= 0 && cl >= 0 ){ + // if it's legit, tag and release + return ci; + } + + // else re-key things + root["_l"] = l; + ci = -1; + for(var te = root["firstElementChild"]||root["firstChild"]; te; te = te[_ns]){ + if(_simpleNodeTest(te)){ + te["_i"] = ++i; + if(node === te){ + // NOTE: + // shortcutting the return at this step in indexing works + // very well for benchmarking but we avoid it here since + // it leads to potential O(n^2) behavior in sequential + // getNodexIndex operations on a previously un-indexed + // parent. We may revisit this at a later time, but for + // now we just want to get the right answer more often + // than not. + ci = i; + } + } + } + return ci; + }; + + var isEven = function(elem){ + return !((getNodeIndex(elem)) % 2); + }; + + var isOdd = function(elem){ + return ((getNodeIndex(elem)) % 2); + }; + + var pseudos = { + "checked": function(name, condition){ + return function(elem){ + return !!("checked" in elem ? elem.checked : elem.selected); + } + }, + "first-child": function(){ return _lookLeft; }, + "last-child": function(){ return _lookRight; }, + "only-child": function(name, condition){ + return function(node){ + return _lookLeft(node) && _lookRight(node); + }; + }, + "empty": function(name, condition){ + return function(elem){ + // DomQuery and jQuery get this wrong, oddly enough. + // The CSS 3 selectors spec is pretty explicit about it, too. + var cn = elem.childNodes; + var cnl = elem.childNodes.length; + // if(!cnl){ return true; } + for(var x=cnl-1; x >= 0; x--){ + var nt = cn[x].nodeType; + if((nt === 1)||(nt == 3)){ return false; } + } + return true; + } + }, + "contains": function(name, condition){ + var cz = condition.charAt(0); + if( cz == '"' || cz == "'" ){ //remove quote + condition = condition.slice(1, -1); + } + return function(elem){ + return (elem.innerHTML.indexOf(condition) >= 0); + } + }, + "not": function(name, condition){ + var p = getQueryParts(condition)[0]; + var ignores = { el: 1 }; + if(p.tag != "*"){ + ignores.tag = 1; + } + if(!p.classes.length){ + ignores.classes = 1; + } + var ntf = getSimpleFilterFunc(p, ignores); + return function(elem){ + return (!ntf(elem)); + } + }, + "nth-child": function(name, condition){ + var pi = parseInt; + // avoid re-defining function objects if we can + if(condition == "odd"){ + return isOdd; + }else if(condition == "even"){ + return isEven; + } + // FIXME: can we shorten this? + if(condition.indexOf("n") != -1){ + var tparts = condition.split("n", 2); + var pred = tparts[0] ? ((tparts[0] == '-') ? -1 : pi(tparts[0])) : 1; + var idx = tparts[1] ? pi(tparts[1]) : 0; + var lb = 0, ub = -1; + if(pred > 0){ + if(idx < 0){ + idx = (idx % pred) && (pred + (idx % pred)); + }else if(idx>0){ + if(idx >= pred){ + lb = idx - idx % pred; + } + idx = idx % pred; + } + }else if(pred<0){ + pred *= -1; + // idx has to be greater than 0 when pred is negative; + // shall we throw an error here? + if(idx > 0){ + ub = idx; + idx = idx % pred; + } + } + if(pred > 0){ + return function(elem){ + var i = getNodeIndex(elem); + return (i>=lb) && (ub<0 || i<=ub) && ((i % pred) == idx); + } + }else{ + condition = idx; + } + } + var ncount = pi(condition); + return function(elem){ + return (getNodeIndex(elem) == ncount); + } + } + }; + + var defaultGetter = (dojo.isIE && (dojo.isIE < 9 || dojo.isQuirks)) ? function(cond){ + var clc = cond.toLowerCase(); + if(clc == "class"){ cond = "className"; } + return function(elem){ + return (caseSensitive ? elem.getAttribute(cond) : elem[cond]||elem[clc]); + } + } : function(cond){ + return function(elem){ + return (elem && elem.getAttribute && elem.hasAttribute(cond)); + } + }; + + var getSimpleFilterFunc = function(query, ignores){ + // generates a node tester function based on the passed query part. The + // query part is one of the structures generated by the query parser + // when it creates the query AST. The "ignores" object specifies which + // (if any) tests to skip, allowing the system to avoid duplicating + // work where it may have already been taken into account by other + // factors such as how the nodes to test were fetched in the first + // place + if(!query){ return yesman; } + ignores = ignores||{}; + + var ff = null; + + if(!("el" in ignores)){ + ff = agree(ff, _isElement); + } + + if(!("tag" in ignores)){ + if(query.tag != "*"){ + ff = agree(ff, function(elem){ + return (elem && (elem.tagName == query.getTag())); + }); + } + } + + if(!("classes" in ignores)){ + each(query.classes, function(cname, idx, arr){ + // get the class name + /* + var isWildcard = cname.charAt(cname.length-1) == "*"; + if(isWildcard){ + cname = cname.substr(0, cname.length-1); + } + // I dislike the regex thing, even if memoized in a cache, but it's VERY short + var re = new RegExp("(?:^|\\s)" + cname + (isWildcard ? ".*" : "") + "(?:\\s|$)"); + */ + var re = new RegExp("(?:^|\\s)" + cname + "(?:\\s|$)"); + ff = agree(ff, function(elem){ + return re.test(elem.className); + }); + ff.count = idx; + }); + } + + if(!("pseudos" in ignores)){ + each(query.pseudos, function(pseudo){ + var pn = pseudo.name; + if(pseudos[pn]){ + ff = agree(ff, pseudos[pn](pn, pseudo.value)); + } + }); + } + + if(!("attrs" in ignores)){ + each(query.attrs, function(attr){ + var matcher; + var a = attr.attr; + // type, attr, matchFor + if(attr.type && attrs[attr.type]){ + matcher = attrs[attr.type](a, attr.matchFor); + }else if(a.length){ + matcher = defaultGetter(a); + } + if(matcher){ + ff = agree(ff, matcher); + } + }); + } + + if(!("id" in ignores)){ + if(query.id){ + ff = agree(ff, function(elem){ + return (!!elem && (elem.id == query.id)); + }); + } + } + + if(!ff){ + if(!("default" in ignores)){ + ff = yesman; + } + } + return ff; + }; + + var _nextSibling = function(filterFunc){ + return function(node, ret, bag){ + while(node = node[_ns]){ + if(_noNES && (!_isElement(node))){ continue; } + if( + (!bag || _isUnique(node, bag)) && + filterFunc(node) + ){ + ret.push(node); + } + break; + } + return ret; + } + }; + + var _nextSiblings = function(filterFunc){ + return function(root, ret, bag){ + var te = root[_ns]; + while(te){ + if(_simpleNodeTest(te)){ + if(bag && !_isUnique(te, bag)){ + break; + } + if(filterFunc(te)){ + ret.push(te); + } + } + te = te[_ns]; + } + return ret; + } + }; + + // get an array of child *elements*, skipping text and comment nodes + var _childElements = function(filterFunc){ + filterFunc = filterFunc||yesman; + return function(root, ret, bag){ + // get an array of child elements, skipping text and comment nodes + var te, x = 0, tret = root.children || root.childNodes; + while(te = tret[x++]){ + if( + _simpleNodeTest(te) && + (!bag || _isUnique(te, bag)) && + (filterFunc(te, x)) + ){ + ret.push(te); + } + } + return ret; + }; + }; + + /* + // thanks, Dean! + var itemIsAfterRoot = d.isIE ? function(item, root){ + return (item.sourceIndex > root.sourceIndex); + } : function(item, root){ + return (item.compareDocumentPosition(root) == 2); + }; + */ + + // test to see if node is below root + var _isDescendant = function(node, root){ + var pn = node.parentNode; + while(pn){ + if(pn == root){ + break; + } + pn = pn.parentNode; + } + return !!pn; + }; + + var _getElementsFuncCache = {}; + + var getElementsFunc = function(query){ + var retFunc = _getElementsFuncCache[query.query]; + // if we've got a cached dispatcher, just use that + if(retFunc){ return retFunc; } + // else, generate a new on + + // NOTE: + // this function returns a function that searches for nodes and + // filters them. The search may be specialized by infix operators + // (">", "~", or "+") else it will default to searching all + // descendants (the " " selector). Once a group of children is + // found, a test function is applied to weed out the ones we + // don't want. Many common cases can be fast-pathed. We spend a + // lot of cycles to create a dispatcher that doesn't do more work + // than necessary at any point since, unlike this function, the + // dispatchers will be called every time. The logic of generating + // efficient dispatchers looks like this in pseudo code: + // + // # if it's a purely descendant query (no ">", "+", or "~" modifiers) + // if infixOperator == " ": + // if only(id): + // return def(root): + // return d.byId(id, root); + // + // elif id: + // return def(root): + // return filter(d.byId(id, root)); + // + // elif cssClass && getElementsByClassName: + // return def(root): + // return filter(root.getElementsByClassName(cssClass)); + // + // elif only(tag): + // return def(root): + // return root.getElementsByTagName(tagName); + // + // else: + // # search by tag name, then filter + // return def(root): + // return filter(root.getElementsByTagName(tagName||"*")); + // + // elif infixOperator == ">": + // # search direct children + // return def(root): + // return filter(root.children); + // + // elif infixOperator == "+": + // # search next sibling + // return def(root): + // return filter(root.nextElementSibling); + // + // elif infixOperator == "~": + // # search rightward siblings + // return def(root): + // return filter(nextSiblings(root)); + + var io = query.infixOper; + var oper = (io ? io.oper : ""); + // the default filter func which tests for all conditions in the query + // part. This is potentially inefficient, so some optimized paths may + // re-define it to test fewer things. + var filterFunc = getSimpleFilterFunc(query, { el: 1 }); + var qt = query.tag; + var wildcardTag = ("*" == qt); + var ecs = getDoc()["getElementsByClassName"]; + + if(!oper){ + // if there's no infix operator, then it's a descendant query. ID + // and "elements by class name" variants can be accelerated so we + // call them out explicitly: + if(query.id){ + // testing shows that the overhead of yesman() is acceptable + // and can save us some bytes vs. re-defining the function + // everywhere. + filterFunc = (!query.loops && wildcardTag) ? + yesman : + getSimpleFilterFunc(query, { el: 1, id: 1 }); + + retFunc = function(root, arr){ + var te = dom.byId(query.id, (root.ownerDocument||root)); + if(!te || !filterFunc(te)){ return; } + if(9 == root.nodeType){ // if root's a doc, we just return directly + return getArr(te, arr); + }else{ // otherwise check ancestry + if(_isDescendant(te, root)){ + return getArr(te, arr); + } + } + } + }else if( + ecs && + // isAlien check. Workaround for Prototype.js being totally evil/dumb. + /\{\s*\[native code\]\s*\}/.test(String(ecs)) && + query.classes.length && + !cssCaseBug + ){ + // it's a class-based query and we've got a fast way to run it. + + // ignore class and ID filters since we will have handled both + filterFunc = getSimpleFilterFunc(query, { el: 1, classes: 1, id: 1 }); + var classesString = query.classes.join(" "); + retFunc = function(root, arr, bag){ + var ret = getArr(0, arr), te, x=0; + var tret = root.getElementsByClassName(classesString); + while((te = tret[x++])){ + if(filterFunc(te, root) && _isUnique(te, bag)){ + ret.push(te); + } + } + return ret; + }; + + }else if(!wildcardTag && !query.loops){ + // it's tag only. Fast-path it. + retFunc = function(root, arr, bag){ + var ret = getArr(0, arr), te, x=0; + var tret = root.getElementsByTagName(query.getTag()); + while((te = tret[x++])){ + if(_isUnique(te, bag)){ + ret.push(te); + } + } + return ret; + }; + }else{ + // the common case: + // a descendant selector without a fast path. By now it's got + // to have a tag selector, even if it's just "*" so we query + // by that and filter + filterFunc = getSimpleFilterFunc(query, { el: 1, tag: 1, id: 1 }); + retFunc = function(root, arr, bag){ + var ret = getArr(0, arr), te, x=0; + // we use getTag() to avoid case sensitivity issues + var tret = root.getElementsByTagName(query.getTag()); + while((te = tret[x++])){ + if(filterFunc(te, root) && _isUnique(te, bag)){ + ret.push(te); + } + } + return ret; + }; + } + }else{ + // the query is scoped in some way. Instead of querying by tag we + // use some other collection to find candidate nodes + var skipFilters = { el: 1 }; + if(wildcardTag){ + skipFilters.tag = 1; + } + filterFunc = getSimpleFilterFunc(query, skipFilters); + if("+" == oper){ + retFunc = _nextSibling(filterFunc); + }else if("~" == oper){ + retFunc = _nextSiblings(filterFunc); + }else if(">" == oper){ + retFunc = _childElements(filterFunc); + } + } + // cache it and return + return _getElementsFuncCache[query.query] = retFunc; + }; + + var filterDown = function(root, queryParts){ + // NOTE: + // this is the guts of the DOM query system. It takes a list of + // parsed query parts and a root and finds children which match + // the selector represented by the parts + var candidates = getArr(root), qp, x, te, qpl = queryParts.length, bag, ret; + + for(var i = 0; i < qpl; i++){ + ret = []; + qp = queryParts[i]; + x = candidates.length - 1; + if(x > 0){ + // if we have more than one root at this level, provide a new + // hash to use for checking group membership but tell the + // system not to post-filter us since we will already have been + // gauranteed to be unique + bag = {}; + ret.nozip = true; + } + var gef = getElementsFunc(qp); + for(var j = 0; (te = candidates[j]); j++){ + // for every root, get the elements that match the descendant + // selector, adding them to the "ret" array and filtering them + // via membership in this level's bag. If there are more query + // parts, then this level's return will be used as the next + // level's candidates + gef(te, ret, bag); + } + if(!ret.length){ break; } + candidates = ret; + } + return ret; + }; + + //////////////////////////////////////////////////////////////////////// + // the query runner + //////////////////////////////////////////////////////////////////////// + + // these are the primary caches for full-query results. The query + // dispatcher functions are generated then stored here for hash lookup in + // the future + var _queryFuncCacheDOM = {}, + _queryFuncCacheQSA = {}; + + // this is the second level of spliting, from full-length queries (e.g., + // "div.foo .bar") into simple query expressions (e.g., ["div.foo", + // ".bar"]) + var getStepQueryFunc = function(query){ + var qparts = getQueryParts(trim(query)); + + // if it's trivial, avoid iteration and zipping costs + if(qparts.length == 1){ + // we optimize this case here to prevent dispatch further down the + // chain, potentially slowing things down. We could more elegantly + // handle this in filterDown(), but it's slower for simple things + // that need to be fast (e.g., "#someId"). + var tef = getElementsFunc(qparts[0]); + return function(root){ + var r = tef(root, []); + if(r){ r.nozip = true; } + return r; + } + } + + // otherwise, break it up and return a runner that iterates over the parts recursively + return function(root){ + return filterDown(root, qparts); + } + }; + + // NOTES: + // * we can't trust QSA for anything but document-rooted queries, so + // caching is split into DOM query evaluators and QSA query evaluators + // * caching query results is dirty and leak-prone (or, at a minimum, + // prone to unbounded growth). Other toolkits may go this route, but + // they totally destroy their own ability to manage their memory + // footprint. If we implement it, it should only ever be with a fixed + // total element reference # limit and an LRU-style algorithm since JS + // has no weakref support. Caching compiled query evaluators is also + // potentially problematic, but even on large documents the size of the + // query evaluators is often < 100 function objects per evaluator (and + // LRU can be applied if it's ever shown to be an issue). + // * since IE's QSA support is currently only for HTML documents and even + // then only in IE 8's "standards mode", we have to detect our dispatch + // route at query time and keep 2 separate caches. Ugg. + + // we need to determine if we think we can run a given query via + // querySelectorAll or if we'll need to fall back on DOM queries to get + // there. We need a lot of information about the environment and the query + // to make the determiniation (e.g. does it support QSA, does the query in + // question work in the native QSA impl, etc.). + var nua = navigator.userAgent; + // some versions of Safari provided QSA, but it was buggy and crash-prone. + // We need te detect the right "internal" webkit version to make this work. + var wk = "WebKit/"; + var is525 = ( + dojo.isWebKit && + (nua.indexOf(wk) > 0) && + (parseFloat(nua.split(wk)[1]) > 528) + ); + + // IE QSA queries may incorrectly include comment nodes, so we throw the + // zipping function into "remove" comments mode instead of the normal "skip + // it" which every other QSA-clued browser enjoys + var noZip = dojo.isIE ? "commentStrip" : "nozip"; + + var qsa = "querySelectorAll"; + var qsaAvail = ( + !!getDoc()[qsa] && + // see #5832 + (!dojo.isSafari || (dojo.isSafari > 3.1) || is525 ) + ); + + //Don't bother with n+3 type of matches, IE complains if we modify those. + var infixSpaceRe = /n\+\d|([^ ])?([>~+])([^ =])?/g; + var infixSpaceFunc = function(match, pre, ch, post){ + return ch ? (pre ? pre + " " : "") + ch + (post ? " " + post : "") : /*n+3*/ match; + }; + + var getQueryFunc = function(query, forceDOM){ + //Normalize query. The CSS3 selectors spec allows for omitting spaces around + //infix operators, >, ~ and + + //Do the work here since detection for spaces is used as a simple "not use QSA" + //test below. + query = query.replace(infixSpaceRe, infixSpaceFunc); + + if(qsaAvail){ + // if we've got a cached variant and we think we can do it, run it! + var qsaCached = _queryFuncCacheQSA[query]; + if(qsaCached && !forceDOM){ return qsaCached; } + } + + // else if we've got a DOM cached variant, assume that we already know + // all we need to and use it + var domCached = _queryFuncCacheDOM[query]; + if(domCached){ return domCached; } + + // TODO: + // today we're caching DOM and QSA branches separately so we + // recalc useQSA every time. If we had a way to tag root+query + // efficiently, we'd be in good shape to do a global cache. + + var qcz = query.charAt(0); + var nospace = (-1 == query.indexOf(" ")); + + // byId searches are wicked fast compared to QSA, even when filtering + // is required + if( (query.indexOf("#") >= 0) && (nospace) ){ + forceDOM = true; + } + + var useQSA = ( + qsaAvail && (!forceDOM) && + // as per CSS 3, we can't currently start w/ combinator: + // http://www.w3.org/TR/css3-selectors/#w3cselgrammar + (specials.indexOf(qcz) == -1) && + // IE's QSA impl sucks on pseudos + (!dojo.isIE || (query.indexOf(":") == -1)) && + + (!(cssCaseBug && (query.indexOf(".") >= 0))) && + + // FIXME: + // need to tighten up browser rules on ":contains" and "|=" to + // figure out which aren't good + // Latest webkit (around 531.21.8) does not seem to do well with :checked on option + // elements, even though according to spec, selected options should + // match :checked. So go nonQSA for it: + // http://bugs.dojotoolkit.org/ticket/5179 + (query.indexOf(":contains") == -1) && (query.indexOf(":checked") == -1) && + (query.indexOf("|=") == -1) // some browsers don't grok it + ); + + // TODO: + // if we've got a descendant query (e.g., "> .thinger" instead of + // just ".thinger") in a QSA-able doc, but are passed a child as a + // root, it should be possible to give the item a synthetic ID and + // trivially rewrite the query to the form "#synid > .thinger" to + // use the QSA branch + + + if(useQSA){ + var tq = (specials.indexOf(query.charAt(query.length-1)) >= 0) ? + (query + " *") : query; + return _queryFuncCacheQSA[query] = function(root){ + try{ + // the QSA system contains an egregious spec bug which + // limits us, effectively, to only running QSA queries over + // entire documents. See: + // http://ejohn.org/blog/thoughts-on-queryselectorall/ + // despite this, we can also handle QSA runs on simple + // selectors, but we don't want detection to be expensive + // so we're just checking for the presence of a space char + // right now. Not elegant, but it's cheaper than running + // the query parser when we might not need to + if(!((9 == root.nodeType) || nospace)){ throw ""; } + var r = root[qsa](tq); + // skip expensive duplication checks and just wrap in a NodeList + r[noZip] = true; + return r; + }catch(e){ + // else run the DOM branch on this query, ensuring that we + // default that way in the future + return getQueryFunc(query, true)(root); + } + } + }else{ + // DOM branch + var parts = query.split(/\s*,\s*/); + return _queryFuncCacheDOM[query] = ((parts.length < 2) ? + // if not a compound query (e.g., ".foo, .bar"), cache and return a dispatcher + getStepQueryFunc(query) : + // if it *is* a complex query, break it up into its + // constituent parts and return a dispatcher that will + // merge the parts when run + function(root){ + var pindex = 0, // avoid array alloc for every invocation + ret = [], + tp; + while((tp = parts[pindex++])){ + ret = ret.concat(getStepQueryFunc(tp)(root)); + } + return ret; + } + ); + } + }; + + var _zipIdx = 0; + + // NOTE: + // this function is Moo inspired, but our own impl to deal correctly + // with XML in IE + var _nodeUID = dojo.isIE ? function(node){ + if(caseSensitive){ + // XML docs don't have uniqueID on their nodes + return (node.getAttribute("_uid") || node.setAttribute("_uid", ++_zipIdx) || _zipIdx); + + }else{ + return node.uniqueID; + } + } : + function(node){ + return (node._uid || (node._uid = ++_zipIdx)); + }; + + // determine if a node in is unique in a "bag". In this case we don't want + // to flatten a list of unique items, but rather just tell if the item in + // question is already in the bag. Normally we'd just use hash lookup to do + // this for us but IE's DOM is busted so we can't really count on that. On + // the upside, it gives us a built in unique ID function. + var _isUnique = function(node, bag){ + if(!bag){ return 1; } + var id = _nodeUID(node); + if(!bag[id]){ return bag[id] = 1; } + return 0; + }; + + // attempt to efficiently determine if an item in a list is a dupe, + // returning a list of "uniques", hopefully in doucment order + var _zipIdxName = "_zipIdx"; + var _zip = function(arr){ + if(arr && arr.nozip){ + return arr; + } + var ret = []; + if(!arr || !arr.length){ return ret; } + if(arr[0]){ + ret.push(arr[0]); + } + if(arr.length < 2){ return ret; } + + _zipIdx++; + + // we have to fork here for IE and XML docs because we can't set + // expandos on their nodes (apparently). *sigh* + if(dojo.isIE && caseSensitive){ + var szidx = _zipIdx+""; + arr[0].setAttribute(_zipIdxName, szidx); + for(var x = 1, te; te = arr[x]; x++){ + if(arr[x].getAttribute(_zipIdxName) != szidx){ + ret.push(te); + } + te.setAttribute(_zipIdxName, szidx); + } + }else if(dojo.isIE && arr.commentStrip){ + try{ + for(var x = 1, te; te = arr[x]; x++){ + if(_isElement(te)){ + ret.push(te); + } + } + }catch(e){ /* squelch */ } + }else{ + if(arr[0]){ arr[0][_zipIdxName] = _zipIdx; } + for(var x = 1, te; te = arr[x]; x++){ + if(arr[x][_zipIdxName] != _zipIdx){ + ret.push(te); + } + te[_zipIdxName] = _zipIdx; + } + } + return ret; + }; + + // the main executor + var query = function(/*String*/ query, /*String|DOMNode?*/ root){ + // summary: + // Returns nodes which match the given CSS3 selector, searching the + // entire document by default but optionally taking a node to scope + // the search by. Returns an array. + // description: + // dojo.query() is the swiss army knife of DOM node manipulation in + // Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's + // "$" function, dojo.query provides robust, high-performance + // CSS-based node selector support with the option of scoping searches + // to a particular sub-tree of a document. + // + // Supported Selectors: + // -------------------- + // + // acme supports a rich set of CSS3 selectors, including: + // + // * class selectors (e.g., `.foo`) + // * node type selectors like `span` + // * ` ` descendant selectors + // * `>` child element selectors + // * `#foo` style ID selectors + // * `*` universal selector + // * `~`, the preceded-by sibling selector + // * `+`, the immediately preceded-by sibling selector + // * attribute queries: + // | * `[foo]` attribute presence selector + // | * `[foo='bar']` attribute value exact match + // | * `[foo~='bar']` attribute value list item match + // | * `[foo^='bar']` attribute start match + // | * `[foo$='bar']` attribute end match + // | * `[foo*='bar']` attribute substring match + // * `:first-child`, `:last-child`, and `:only-child` positional selectors + // * `:empty` content emtpy selector + // * `:checked` pseudo selector + // * `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations + // * `:nth-child(even)`, `:nth-child(odd)` positional selectors + // * `:not(...)` negation pseudo selectors + // + // Any legal combination of these selectors will work with + // `dojo.query()`, including compound selectors ("," delimited). + // Very complex and useful searches can be constructed with this + // palette of selectors and when combined with functions for + // manipulation presented by dojo.NodeList, many types of DOM + // manipulation operations become very straightforward. + // + // Unsupported Selectors: + // ---------------------- + // + // While dojo.query handles many CSS3 selectors, some fall outside of + // what's reasonable for a programmatic node querying engine to + // handle. Currently unsupported selectors include: + // + // * namespace-differentiated selectors of any form + // * all `::` pseduo-element selectors + // * certain pseduo-selectors which don't get a lot of day-to-day use: + // | * `:root`, `:lang()`, `:target`, `:focus` + // * all visual and state selectors: + // | * `:root`, `:active`, `:hover`, `:visisted`, `:link`, + // `:enabled`, `:disabled` + // * `:*-of-type` pseudo selectors + // + // dojo.query and XML Documents: + // ----------------------------- + // + // `dojo.query` (as of dojo 1.2) supports searching XML documents + // in a case-sensitive manner. If an HTML document is served with + // a doctype that forces case-sensitivity (e.g., XHTML 1.1 + // Strict), dojo.query() will detect this and "do the right + // thing". Case sensitivity is dependent upon the document being + // searched and not the query used. It is therefore possible to + // use case-sensitive queries on strict sub-documents (iframes, + // etc.) or XML documents while still assuming case-insensitivity + // for a host/root document. + // + // Non-selector Queries: + // --------------------- + // + // If something other than a String is passed for the query, + // `dojo.query` will return a new `dojo.NodeList` instance + // constructed from that parameter alone and all further + // processing will stop. This means that if you have a reference + // to a node or NodeList, you can quickly construct a new NodeList + // from the original by calling `dojo.query(node)` or + // `dojo.query(list)`. + // + // query: + // The CSS3 expression to match against. For details on the syntax of + // CSS3 selectors, see + // root: + // A DOMNode (or node id) to scope the search from. Optional. + // returns: Array + // example: + // search the entire document for elements with the class "foo": + // | dojo.query(".foo"); + // these elements will match: + // | + // | + // |

                            + // example: + // search the entire document for elements with the classes "foo" *and* "bar": + // | dojo.query(".foo.bar"); + // these elements will match: + // | + // while these will not: + // | + // |

                            + // example: + // find `` elements which are descendants of paragraphs and + // which have a "highlighted" class: + // | dojo.query("p span.highlighted"); + // the innermost span in this fragment matches: + // |

                            + // | ... + // | ... + // | + // |

                            + // example: + // set an "odd" class on all odd table rows inside of the table + // `#tabular_data`, using the `>` (direct child) selector to avoid + // affecting any nested tables: + // | dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd"); + // example: + // remove all elements with the class "error" from the document + // and store them in a list: + // | var errors = dojo.query(".error").orphan(); + // example: + // add an onclick handler to every submit button in the document + // which causes the form to be sent via Ajax instead: + // | dojo.query("input[type='submit']").onclick(function(e){ + // | dojo.stopEvent(e); // prevent sending the form + // | var btn = e.target; + // | dojo.xhrPost({ + // | form: btn.form, + // | load: function(data){ + // | // replace the form with the response + // | var div = dojo.doc.createElement("div"); + // | dojo.place(div, btn.form, "after"); + // | div.innerHTML = data; + // | dojo.style(btn.form, "display", "none"); + // | } + // | }); + // | }); + + root = root||getDoc(); + var od = root.ownerDocument||root.documentElement; + + // throw the big case sensitivity switch + + // NOTE: + // Opera in XHTML mode doesn't detect case-sensitivity correctly + // and it's not clear that there's any way to test for it + caseSensitive = (root.contentType && root.contentType=="application/xml") || + (dojo.isOpera && (root.doctype || od.toString() == "[object XMLDocument]")) || + (!!od) && + (dojo.isIE ? od.xml : (root.xmlVersion || od.xmlVersion)); + + // NOTE: + // adding "true" as the 2nd argument to getQueryFunc is useful for + // testing the DOM branch without worrying about the + // behavior/performance of the QSA branch. + var r = getQueryFunc(query)(root); + + // FIXME: + // need to investigate this branch WRT #8074 and #8075 + if(r && r.nozip){ + return r; + } + return _zip(r); // dojo.NodeList + }; + query.filter = function(/*Node[]*/ nodeList, /*String*/ filter, /*String|DOMNode?*/ root){ + // summary: + // function for filtering a NodeList based on a selector, optimized for simple selectors + var tmpNodeList = [], + parts = getQueryParts(filter), + filterFunc = + (parts.length == 1 && !/[^\w#\.]/.test(filter)) ? + getSimpleFilterFunc(parts[0]) : + function(node){ + return dojo.query(filter, root).indexOf(node) != -1; + }; + for(var x = 0, te; te = nodeList[x]; x++){ + if(filterFunc(te)){ tmpNodeList.push(te); } + } + return tmpNodeList; + }; + return query; +});//end defineQuery diff --git a/js/dojo-release-1.7.2-src/dojo/selector/lite.js b/js/dojo-release-1.7.2-src/dojo/selector/lite.js new file mode 100644 index 0000000..8228828 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/selector/lite.js @@ -0,0 +1,264 @@ +define(["../has", "../_base/kernel"], function(has, dojo){ +"use strict"; +// summary: +// A small lightweight query selector engine that implements CSS2.1 selectors +// minus pseudo-classes and the sibling combinator, plus CSS3 attribute selectors +var testDiv = document.createElement("div"); +var matchesSelector = testDiv.matchesSelector || testDiv.webkitMatchesSelector || testDiv.mozMatchesSelector || testDiv.msMatchesSelector || testDiv.oMatchesSelector; // IE9, WebKit, Firefox have this, but not Opera yet +var querySelectorAll = testDiv.querySelectorAll; +has.add("dom-matches-selector", !!matchesSelector); +has.add("dom-qsa", !!querySelectorAll); + +// this is a simple query engine. It has handles basic selectors, and for simple +// common selectors is extremely fast +var liteEngine = function(selector, root){ + if(combine && selector.indexOf(',') > -1){ + return combine(selector, root); + } + var match = (querySelectorAll ? + /^([\w]*)#([\w\-]+$)|^(\.)([\w\-\*]+$)|^(\w+$)/ : // this one only matches on simple queries where we can beat qSA with specific methods + /^([\w]*)#([\w\-]+)(?:\s+(.*))?$|(?:^|(>|.+\s+))([\w\-\*]+)(\S*$)/) // this one matches parts of the query that we can use to speed up manual filtering + .exec(selector); + root = root || document; + if(match){ + // fast path regardless of whether or not querySelectorAll exists + if(match[2]){ + // an #id + // use dojo.byId if available as it fixes the id retrieval in IE + var found = dojo.byId ? dojo.byId(match[2]) : document.getElementById(match[2]); + if(!found || (match[1] && match[1] != found.tagName.toLowerCase())){ + // if there is a tag qualifer and it doesn't match, no matches + return []; + } + if(root != document){ + // there is a root element, make sure we are a child of it + var parent = found; + while(parent != root){ + parent = parent.parentNode; + if(!parent){ + return []; + } + } + } + return match[3] ? + liteEngine(match[3], found) + : [found]; + } + if(match[3] && root.getElementsByClassName){ + // a .class + return root.getElementsByClassName(match[4]); + } + var found; + if(match[5]){ + // a tag + found = root.getElementsByTagName(match[5]); + if(match[4] || match[6]){ + selector = (match[4] || "") + match[6]; + }else{ + // that was the entirety of the query, return results + return found; + } + } + } + if(querySelectorAll){ + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if (root.nodeType === 1 && root.nodeName.toLowerCase() !== "object"){ + return useRoot(root, selector, root.querySelectorAll); + }else{ + // we can use the native qSA + return root.querySelectorAll(selector); + } + }else if(!found){ + // search all children and then filter + found = root.getElementsByTagName("*"); + } + // now we filter the nodes that were found using the matchesSelector + var results = []; + for(var i = 0, l = found.length; i < l; i++){ + var node = found[i]; + if(node.nodeType == 1 && jsMatchesSelector(node, selector, root)){ + // keep the nodes that match the selector + results.push(node); + } + } + return results; +}; +var useRoot = function(context, query, method){ + // this function creates a temporary id so we can do rooted qSA queries, this is taken from sizzle + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || "__dojo__", + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if(relativeHierarchySelector && !hasParent){ + return []; + } + if(!old){ + context.setAttribute("id", nid); + }else{ + nid = nid.replace(/'/g, "\\$&"); + } + if(relativeHierarchySelector && hasParent){ + context = context.parentNode; + } + + try { + return method.call(context, "[id='" + nid + "'] " + query ); + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } +}; + +if(!has("dom-matches-selector")){ + var jsMatchesSelector = (function(){ + // a JS implementation of CSS selector matching, first we start with the various handlers + var caseFix = testDiv.tagName == "div" ? "toLowerCase" : "toUpperCase"; + function tag(tagName){ + tagName = tagName[caseFix](); + return function(node){ + return node.tagName == tagName; + } + } + function className(className){ + var classNameSpaced = ' ' + className + ' '; + return function(node){ + return node.className.indexOf(className) > -1 && (' ' + node.className + ' ').indexOf(classNameSpaced) > -1; + } + } + var attrComparators = { + "^=": function(attrValue, value){ + return attrValue.indexOf(value) == 0; + }, + "*=": function(attrValue, value){ + return attrValue.indexOf(value) > -1; + }, + "$=": function(attrValue, value){ + return attrValue.substring(attrValue.length - value.length, attrValue.length) == value; + }, + "~=": function(attrValue, value){ + return (' ' + attrValue + ' ').indexOf(' ' + value + ' ') > -1; + }, + "|=": function(attrValue, value){ + return (attrValue + '-').indexOf(value + '-') == 0; + }, + "=": function(attrValue, value){ + return attrValue == value; + }, + "": function(attrValue, value){ + return true; + } + }; + function attr(name, value, type){ + if(value.match(/['"]/)){ + // it is quoted, do an eval to parse the string (CSS and JS parsing are close enough) + value = eval(value); + } + var comparator = attrComparators[type || ""]; + return function(node){ + var attrValue = node.getAttribute(name); + return attrValue && comparator(attrValue, value); + } + } + function ancestor(matcher){ + return function(node, root){ + while((node = node.parentNode) != root){ + if(matcher(node, root)){ + return true; + } + } + }; + } + function parent(matcher){ + return function(node, root){ + node = node.parentNode; + return matcher ? + node != root && matcher(node, root) + : node == root; + }; + } + var cache = {}; + function and(matcher, next){ + return matcher ? + function(node, root){ + return next(node) && matcher(node, root); + } + : next; + } + return function(node, selector, root){ + // this returns true or false based on if the node matches the selector (optionally within the given root) + var matcher = cache[selector]; // check to see if we have created a matcher function for the given selector + if(!matcher){ + // create a matcher function for the given selector + // parse the selectors + if(selector.replace(/(?:\s*([> ])\s*)|(\.)?([\w-]+)|\[([\w-]+)\s*(.?=)?\s*([^\]]*)\]/g, function(t, combinator, type, value, attrName, attrType, attrValue){ + if(value){ + if(type == "."){ + matcher = and(matcher, className(value)); + } + else{ + matcher = and(matcher, tag(value)); + } + } + else if(combinator){ + matcher = (combinator == " " ? ancestor : parent)(matcher); + } + else if(attrName){ + matcher = and(matcher, attr(attrName, attrValue, attrType)); + } + return ""; + })){ + throw new Error("Syntax error in query"); + } + if(!matcher){ + return true; + } + cache[selector] = matcher; + } + // now run the matcher function on the node + return matcher(node, root); + }; + })(); +} +if(!has("dom-qsa")){ + var combine = function(selector, root){ + // combined queries + selector = selector.split(/\s*,\s*/); + var indexed = []; + // add all results and keep unique ones, this only runs in IE, so we take advantage + // of known IE features, particularly sourceIndex which is unique and allows us to + // order the results + for(var i = 0; i < selector.length; i++){ + var results = liteEngine(selector[i], root); + for(var j = 0, l = results.length; j < l; j++){ + var node = results[j]; + indexed[node.sourceIndex] = node; + } + } + // now convert from a sparse array to a dense array + var totalResults = []; + for(i in indexed){ + totalResults.push(indexed[i]); + } + return totalResults; + }; +} + +liteEngine.match = matchesSelector ? function(node, selector, root){ + if(root){ + // doesn't support three args, use rooted id trick + return useRoot(root, selector, function(query){ + return matchesSelector.call(node, query); + }); + } + // we have a native matchesSelector, use that + return matchesSelector.call(node, selector); +} : jsMatchesSelector; // otherwise use the JS matches impl + +return liteEngine; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/store/Cache.js b/js/dojo-release-1.7.2-src/dojo/store/Cache.js new file mode 100644 index 0000000..bc3cf4f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/Cache.js @@ -0,0 +1,148 @@ +define(["../_base/lang","../_base/Deferred" +],function(lang, Deferred) { + // module: + // dojo/store/Cache + // summary: + // TODOC + +var store = lang.getObject("dojo.store", true); + +/*===== +dojo.declare("dojo.store.__CacheArgs", null, { + constructor: function(){ + // summary: + // These are additional options for how caching is handled. + // isLoaded: Function? + // This is a function that will be called for each item in a query response to determine + // if it is cacheable. If isLoaded returns true, the item will be cached, otherwise it + // will not be cached. If isLoaded is not provided, all items will be cached. + this.isLoaded = isLoaded; + } +}); +=====*/ +store.Cache = function(masterStore, cachingStore, /*dojo.store.__CacheArgs*/ options){ + // summary: + // The Cache store wrapper takes a master store and a caching store, + // caches data from the master into the caching store for faster + // lookup. Normally one would use a memory store for the caching + // store and a server store like JsonRest for the master store. + // masterStore: + // This is the authoritative store, all uncached requests or non-safe requests will + // be made against this store. + // cachingStore: + // This is the caching store that will be used to store responses for quick access. + // Typically this should be a local store. + // options: + // These are additional options for how caching is handled. + options = options || {}; + return lang.delegate(masterStore, { + query: function(query, directives){ + var results = masterStore.query(query, directives); + results.forEach(function(object){ + if(!options.isLoaded || options.isLoaded(object)){ + cachingStore.put(object); + } + }); + return results; + }, + // look for a queryEngine in either store + queryEngine: masterStore.queryEngine || cachingStore.queryEngine, + get: function(id, directives){ + return Deferred.when(cachingStore.get(id), function(result){ + return result || Deferred.when(masterStore.get(id, directives), function(result){ + if(result){ + cachingStore.put(result, {id: id}); + } + return result; + }); + }); + }, + add: function(object, directives){ + return Deferred.when(masterStore.add(object, directives), function(result){ + // now put result in cache + return cachingStore.add(typeof result == "object" ? result : object, directives); + }); + }, + put: function(object, directives){ + // first remove from the cache, so it is empty until we get a response from the master store + cachingStore.remove((directives && directives.id) || this.getIdentity(object)); + return Deferred.when(masterStore.put(object, directives), function(result){ + // now put result in cache + return cachingStore.put(typeof result == "object" ? result : object, directives); + }); + }, + remove: function(id, directives){ + return Deferred.when(masterStore.remove(id, directives), function(result){ + return cachingStore.remove(id, directives); + }); + }, + evict: function(id){ + return cachingStore.remove(id); + } + }); +}; +/*===== +dojo.declare("dojo.store.Cache", null, { + // example: + // | var master = new dojo.store.Memory(data); + // | var cacher = new dojo.store.Memory(); + // | var store = new dojo.store.Cache(master, cacher); + // + query: function(query, directives){ + // summary: + // Query the underlying master store and cache any results. + // query: Object|String + // The object or string containing query information. Dependent on the query engine used. + // directives: dojo.store.util.SimpleQueryEngine.__queryOptions? + // An optional keyword arguments object with additional parameters describing the query. + // returns: dojo.store.util.QueryResults + // A QueryResults object that can be used to iterate over. + }, + get: function(id, directives){ + // summary: + // Get the object with the specific id. + // id: Number + // The identifier for the object in question. + // directives: dojo.store.__GetOptions? + // Any additional parameters needed to describe how the get should be performed. + // returns: dojo.store.util.QueryResults + // A QueryResults object. + }, + add: function(object, directives){ + // summary: + // Add the given object to the store. + // object: Object + // The object to add to the store. + // directives: dojo.store.__AddOptions? + // Any additional parameters needed to describe how the add should be performed. + // returns: Number + // The new id for the object. + }, + put: function(object, directives){ + // summary: + // Put the object into the store (similar to an HTTP PUT). + // object: Object + // The object to put to the store. + // directives: dojo.store.__PutOptions? + // Any additional parameters needed to describe how the put should be performed. + // returns: Number + // The new id for the object. + }, + remove: function(id, directives){ + // summary: + // Remove the object with the specific id. + // id: Number + // The identifier for the object in question. + // directives: dojo.store.__RemoveOptions? + // Any additional parameters needed to describe how the remove should be performed. + }, + evict: function(id){ + // summary: + // Remove the object with the given id from the underlying caching store. + // id: Number + // The identifier for the object in question. + } +}); +=====*/ +return store.Cache; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/store/DataStore.js b/js/dojo-release-1.7.2-src/dojo/store/DataStore.js new file mode 100644 index 0000000..fac842f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/DataStore.js @@ -0,0 +1,170 @@ +define(["../_base/lang", "../_base/declare", "../_base/Deferred", "../_base/array", "./util/QueryResults" +], function(lang,declare,Deferred,array,QueryResults) { + // module: + // dojo/store/DataStore + // summary: + // TODOC + + +return declare("dojo.store.DataStore", null, { + target: "", + constructor: function(options){ + // summary: + // This is an adapter for using Dojo Data stores with an object store consumer. + // You can provide a Dojo data store and use this adapter to interact with it through + // the Dojo object store API + // options: Object? + // This provides any configuration information that will be mixed into the store, + // including a reference to the Dojo data store under the property "store". + lang.mixin(this, options); + if(!"idProperty" in options){ + var idAttribute; + try{ + idAttribute = this.store.getIdentityAttributes(); + }catch(e){ + // some store are not requiring an item instance to give us the ID attributes + // but some other do and throw errors in that case. + } + // if no idAttribute we have implicit id + this.idProperty = (!idAttribute || !idAttributes[0]) || this.idProperty; + } + var features = this.store.getFeatures(); + // check the feature set and null out any methods that shouldn't be available + if(!features["dojo.data.api.Read"]){ + this.get = null; + } + if(!features["dojo.data.api.Identity"]){ + this.getIdentity = null; + } + if(!features["dojo.data.api.Write"]){ + this.put = this.add = null; + } + }, + // idProperty: String + // The object property to use to store the identity of the store items. + idProperty: "id", + // store: + // The object store to convert to a data store + store: null, + _objectConverter: function(callback){ + var store = this.store; + var idProperty = this.idProperty; + return function(item){ + var object = {}; + var attributes = store.getAttributes(item); + for(var i = 0; i < attributes.length; i++){ + object[attributes[i]] = store.getValue(item, attributes[i]); + } + if(!(idProperty in object)){ + object[idProperty] = store.getIdentity(item); + } + return callback(object); + }; + }, + get: function(id, options){ + // summary: + // Retrieves an object by it's identity. This will trigger a fetchItemByIdentity + // id: Object? + // The identity to use to lookup the object + var returnedObject, returnedError; + var deferred = new Deferred(); + this.store.fetchItemByIdentity({ + identity: id, + onItem: this._objectConverter(function(object){ + deferred.resolve(returnedObject = object); + }), + onError: function(error){ + deferred.reject(returnedError = error); + } + }); + if(returnedObject){ + // if it was returned synchronously + return returnedObject; + } + if(returnedError){ + throw returnedError; + } + return deferred.promise; + }, + put: function(object, options){ + // summary: + // Stores an object by its identity. + // object: Object + // The object to store. + // options: Object? + // Additional metadata for storing the data. Includes a reference to an id + // that the object may be stored with (i.e. { id: "foo" }). + var id = options && typeof options.id != "undefined" || this.getIdentity(object); + var store = this.store; + var idProperty = this.idProperty; + if(typeof id == "undefined"){ + store.newItem(object); + }else{ + store.fetchItemByIdentity({ + identity: id, + onItem: function(item){ + if(item){ + for(var i in object){ + if(i != idProperty && // don't copy id properties since they are immutable and should be omitted for implicit ids + store.getValue(item, i) != object[i]){ + store.setValue(item, i, object[i]); + } + } + }else{ + store.newItem(object); + } + } + }); + } + }, + remove: function(id){ + // summary: + // Deletes an object by its identity. + // id: Object + // The identity to use to delete the object + var store = this.store; + this.store.fetchItemByIdentity({ + identity: id, + onItem: function(item){ + store.deleteItem(item); + } + }); + }, + query: function(query, options){ + // summary: + // Queries the store for objects. + // query: Object + // The query to use for retrieving objects from the store + // options: Object? + // Optional options object as used by the underlying dojo.data Store. + // returns: dojo.store.util.QueryResults + // A query results object that can be used to iterate over results. + var fetchHandle; + var deferred = new Deferred(function(){ fetchHandle.abort && fetchHandle.abort(); }); + deferred.total = new Deferred(); + var converter = this._objectConverter(function(object){return object;}); + fetchHandle = this.store.fetch(lang.mixin({ + query: query, + onBegin: function(count){ + deferred.total.resolve(count); + }, + onComplete: function(results){ + deferred.resolve(array.map(results, converter)); + }, + onError: function(error){ + deferred.reject(error); + } + }, options)); + return QueryResults(deferred); + }, + getIdentity: function(object){ + // summary: + // Fetch the identity for the given object. + // object: Object + // The data object to get the identity from. + // returns: Number + // The id of the given object. + return object[this.idProperty]; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/store/JsonRest.js b/js/dojo-release-1.7.2-src/dojo/store/JsonRest.js new file mode 100644 index 0000000..e2082f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/JsonRest.js @@ -0,0 +1,155 @@ +define(["../_base/xhr", "../json", "../_base/declare", "./util/QueryResults" +], function(xhr, JSON, declare, QueryResults) { + // module: + // dojo/store/JsonRest + // summary: + // The module defines a JSON/REST based object store + +return declare("dojo.store.JsonRest", null, { + // summary: + // This is a basic store for RESTful communicating with a server through JSON + // formatted data. It implements dojo.store.api.Store. + + constructor: function(/*dojo.store.JsonRest*/ options){ + // summary: + // This is a basic store for RESTful communicating with a server through JSON + // formatted data. + // options: + // This provides any configuration information that will be mixed into the store + declare.safeMixin(this, options); + }, + // target: String + // The target base URL to use for all requests to the server. This string will be + // prepended to the id to generate the URL (relative or absolute) for requests + // sent to the server + target: "", + // idProperty: String + // Indicates the property to use as the identity property. The values of this + // property should be unique. + idProperty: "id", + // sortParam: String + // The query parameter to used for holding sort information. If this is omitted, than + // the sort information is included in a functional query token to avoid colliding + // with the set of name/value pairs. + + get: function(id, options){ + // summary: + // Retrieves an object by its identity. This will trigger a GET request to the server using + // the url `this.target + id`. + // id: Number + // The identity to use to lookup the object + // returns: Object + // The object in the store that matches the given id. + var headers = options || {}; + headers.Accept = this.accepts; + return xhr("GET", { + url:this.target + id, + handleAs: "json", + headers: headers + }); + }, + // accepts: String + // Defines the Accept header to use on HTTP requests + accepts: "application/javascript, application/json", + getIdentity: function(object){ + // summary: + // Returns an object's identity + // object: Object + // The object to get the identity from + // returns: Number + return object[this.idProperty]; + }, + put: function(object, options){ + // summary: + // Stores an object. This will trigger a PUT request to the server + // if the object has an id, otherwise it will trigger a POST request. + // object: Object + // The object to store. + // options: dojo.store.api.Store.PutDirectives? + // Additional metadata for storing the data. Includes an "id" + // property if a specific id is to be used. + // returns: Number + options = options || {}; + var id = ("id" in options) ? options.id : this.getIdentity(object); + var hasId = typeof id != "undefined"; + return xhr(hasId && !options.incremental ? "PUT" : "POST", { + url: hasId ? this.target + id : this.target, + postData: JSON.stringify(object), + handleAs: "json", + headers:{ + "Content-Type": "application/json", + Accept: this.accepts, + "If-Match": options.overwrite === true ? "*" : null, + "If-None-Match": options.overwrite === false ? "*" : null + } + }); + }, + add: function(object, options){ + // summary: + // Adds an object. This will trigger a PUT request to the server + // if the object has an id, otherwise it will trigger a POST request. + // object: Object + // The object to store. + // options: dojo.store.api.Store.PutDirectives? + // Additional metadata for storing the data. Includes an "id" + // property if a specific id is to be used. + options = options || {}; + options.overwrite = false; + return this.put(object, options); + }, + remove: function(id){ + // summary: + // Deletes an object by its identity. This will trigger a DELETE request to the server. + // id: Number + // The identity to use to delete the object + return xhr("DELETE",{ + url:this.target + id + }); + }, + query: function(query, options){ + // summary: + // Queries the store for objects. This will trigger a GET request to the server, with the + // query added as a query string. + // query: Object + // The query to use for retrieving objects from the store. + // options: dojo.store.api.Store.QueryOptions? + // The optional arguments to apply to the resultset. + // returns: dojo.store.api.Store.QueryResults + // The results of the query, extended with iterative methods. + var headers = {Accept: this.accepts}; + options = options || {}; + + if(options.start >= 0 || options.count >= 0){ + headers.Range = "items=" + (options.start || '0') + '-' + + (("count" in options && options.count != Infinity) ? + (options.count + (options.start || 0) - 1) : ''); + } + if(query && typeof query == "object"){ + query = xhr.objectToQuery(query); + query = query ? "?" + query: ""; + } + if(options && options.sort){ + var sortParam = this.sortParam; + query += (query ? "&" : "?") + (sortParam ? sortParam + '=' : "sort("); + for(var i = 0; i 0 ? "," : "") + (sort.descending ? '-' : '+') + encodeURIComponent(sort.attribute); + } + if(!sortParam){ + query += ")"; + } + } + var results = xhr("GET", { + url: this.target + (query || ""), + handleAs: "json", + headers: headers + }); + results.total = results.then(function(){ + var range = results.ioArgs.xhr.getResponseHeader("Content-Range"); + return range && (range=range.match(/\/(.*)/)) && +range[1]; + }); + return QueryResults(results); + } +}); + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/store/Memory.js b/js/dojo-release-1.7.2-src/dojo/store/Memory.js new file mode 100644 index 0000000..6824d5f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/Memory.js @@ -0,0 +1,161 @@ +define(["../_base/declare", "./util/QueryResults", "./util/SimpleQueryEngine"], function(declare, QueryResults, SimpleQueryEngine) { + // module: + // dojo/store/Memory + // summary: + // The module defines an in-memory object store. + + +return declare("dojo.store.Memory", null, { + // summary: + // This is a basic in-memory object store. It implements dojo.store.api.Store. + constructor: function(/*dojo.store.Memory*/ options){ + // summary: + // Creates a memory object store. + // options: + // This provides any configuration information that will be mixed into the store. + // This should generally include the data property to provide the starting set of data. + for(var i in options){ + this[i] = options[i]; + } + this.setData(this.data || []); + }, + // data: Array + // The array of all the objects in the memory store + data:null, + + // idProperty: String + // Indicates the property to use as the identity property. The values of this + // property should be unique. + idProperty: "id", + + // index: Object + // An index of data indices into the data array by id + index:null, + + // queryEngine: Function + // Defines the query engine to use for querying the data store + queryEngine: SimpleQueryEngine, + get: function(id){ + // summary: + // Retrieves an object by its identity + // id: Number + // The identity to use to lookup the object + // returns: Object + // The object in the store that matches the given id. + return this.data[this.index[id]]; + }, + getIdentity: function(object){ + // summary: + // Returns an object's identity + // object: Object + // The object to get the identity from + // returns: Number + return object[this.idProperty]; + }, + put: function(object, options){ + // summary: + // Stores an object + // object: Object + // The object to store. + // options: dojo.store.api.Store.PutDirectives?? + // Additional metadata for storing the data. Includes an "id" + // property if a specific id is to be used. + // returns: Number + var data = this.data, + index = this.index, + idProperty = this.idProperty; + var id = (options && "id" in options) ? options.id : idProperty in object ? object[idProperty] : Math.random(); + if(id in index){ + // object exists + if(options && options.overwrite === false){ + throw new Error("Object already exists"); + } + // replace the entry in data + data[index[id]] = object; + }else{ + // add the new object + index[id] = data.push(object) - 1; + } + return id; + }, + add: function(object, options){ + // summary: + // Creates an object, throws an error if the object already exists + // object: Object + // The object to store. + // options: dojo.store.api.Store.PutDirectives?? + // Additional metadata for storing the data. Includes an "id" + // property if a specific id is to be used. + // returns: Number + (options = options || {}).overwrite = false; + // call put with overwrite being false + return this.put(object, options); + }, + remove: function(id){ + // summary: + // Deletes an object by its identity + // id: Number + // The identity to use to delete the object + // returns: Boolean + // Returns true if an object was removed, falsy (undefined) if no object matched the id + var index = this.index; + var data = this.data; + if(id in index){ + data.splice(index[id], 1); + // now we have to reindex + this.setData(data); + return true; + } + }, + query: function(query, options){ + // summary: + // Queries the store for objects. + // query: Object + // The query to use for retrieving objects from the store. + // options: dojo.store.api.Store.QueryOptions? + // The optional arguments to apply to the resultset. + // returns: dojo.store.api.Store.QueryResults + // The results of the query, extended with iterative methods. + // + // example: + // Given the following store: + // + // | var store = new dojo.store.Memory({ + // | data: [ + // | {id: 1, name: "one", prime: false }, + // | {id: 2, name: "two", even: true, prime: true}, + // | {id: 3, name: "three", prime: true}, + // | {id: 4, name: "four", even: true, prime: false}, + // | {id: 5, name: "five", prime: true} + // | ] + // | }); + // + // ...find all items where "prime" is true: + // + // | var results = store.query({ prime: true }); + // + // ...or find all items where "even" is true: + // + // | var results = store.query({ even: true }); + return QueryResults(this.queryEngine(query, options)(this.data)); + }, + setData: function(data){ + // summary: + // Sets the given data as the source for this store, and indexes it + // data: Object[] + // An array of objects to use as the source of data. + if(data.items){ + // just for convenience with the data format IFRS expects + this.idProperty = data.identifier; + data = this.data = data.items; + }else{ + this.data = data; + } + this.index = {}; + for(var i = 0, l = data.length; i < l; i++){ + this.index[data[i][this.idProperty]] = i; + } + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/store/Observable.js b/js/dojo-release-1.7.2-src/dojo/store/Observable.js new file mode 100644 index 0000000..4517353 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/Observable.js @@ -0,0 +1,175 @@ +define(["../_base/kernel", "../_base/lang", "../_base/Deferred", "../_base/array" +], function(kernel, lang, Deferred, array) { + // module: + // dojo/store/Observable + // summary: + // TODOC + +var ds = lang.getObject("dojo.store", true); + +return ds.Observable = function(store){ + // summary: + // The Observable store wrapper takes a store and sets an observe method on query() + // results that can be used to monitor results for changes. + // + // description: + // Observable wraps an existing store so that notifications can be made when a query + // is performed. + // + // example: + // Create a Memory store that returns an observable query, and then log some + // information about that query. + // + // | var store = dojo.store.Observable(new dojo.store.Memory({ + // | data: [ + // | {id: 1, name: "one", prime: false}, + // | {id: 2, name: "two", even: true, prime: true}, + // | {id: 3, name: "three", prime: true}, + // | {id: 4, name: "four", even: true, prime: false}, + // | {id: 5, name: "five", prime: true} + // | ] + // | })); + // | var changes = [], results = store.query({ prime: true }); + // | var observer = results.observe(function(object, previousIndex, newIndex){ + // | changes.push({previousIndex:previousIndex, newIndex:newIndex, object:object}); + // | }); + // + // See the Observable tests for more information. + + var undef, queryUpdaters = [], revision = 0; + // a Comet driven store could directly call notify to notify observers when data has + // changed on the backend + store.notify = function(object, existingId){ + revision++; + var updaters = queryUpdaters.slice(); + for(var i = 0, l = updaters.length; i < l; i++){ + updaters[i](object, existingId); + } + }; + var originalQuery = store.query; + store.query = function(query, options){ + options = options || {}; + var results = originalQuery.apply(this, arguments); + if(results && results.forEach){ + var nonPagedOptions = lang.mixin({}, options); + delete nonPagedOptions.start; + delete nonPagedOptions.count; + + var queryExecutor = store.queryEngine && store.queryEngine(query, nonPagedOptions); + var queryRevision = revision; + var listeners = [], queryUpdater; + results.observe = function(listener, includeObjectUpdates){ + if(listeners.push(listener) == 1){ + // first listener was added, create the query checker and updater + queryUpdaters.push(queryUpdater = function(changed, existingId){ + Deferred.when(results, function(resultsArray){ + var atEnd = resultsArray.length != options.count; + var i, l, listener; + if(++queryRevision != revision){ + throw new Error("Query is out of date, you must observe() the query prior to any data modifications"); + } + var removedObject, removedFrom = -1, insertedInto = -1; + if(existingId !== undef){ + // remove the old one + for(i = 0, l = resultsArray.length; i < l; i++){ + var object = resultsArray[i]; + if(store.getIdentity(object) == existingId){ + removedObject = object; + removedFrom = i; + if(queryExecutor || !changed){// if it was changed and we don't have a queryExecutor, we shouldn't remove it because updated objects would be eliminated + resultsArray.splice(i, 1); + } + break; + } + } + } + if(queryExecutor){ + // add the new one + if(changed && + // if a matches function exists, use that (probably more efficient) + (queryExecutor.matches ? queryExecutor.matches(changed) : queryExecutor([changed]).length)){ + + var firstInsertedInto = removedFrom > -1 ? + removedFrom : // put back in the original slot so it doesn't move unless it needs to (relying on a stable sort below) + resultsArray.length; + resultsArray.splice(firstInsertedInto, 0, changed); // add the new item + insertedInto = array.indexOf(queryExecutor(resultsArray), changed); // sort it + // we now need to push the chagne back into the original results array + resultsArray.splice(firstInsertedInto, 1); // remove the inserted item from the previous index + + if((options.start && insertedInto == 0) || + (!atEnd && insertedInto == resultsArray.length)){ + // if it is at the end of the page, assume it goes into the prev or next page + insertedInto = -1; + }else{ + resultsArray.splice(insertedInto, 0, changed); // and insert into the results array with the correct index + } + } + }else if(changed && !options.start){ + // we don't have a queryEngine, so we can't provide any information + // about where it was inserted, but we can at least indicate a new object + insertedInto = removedFrom >= 0 ? removedFrom : (store.defaultIndex || 0); + } + if((removedFrom > -1 || insertedInto > -1) && + (includeObjectUpdates || !queryExecutor || (removedFrom != insertedInto))){ + var copyListeners = listeners.slice(); + for(i = 0;listener = copyListeners[i]; i++){ + listener(changed || removedObject, removedFrom, insertedInto); + } + } + }); + }); + } + return { + cancel: function(){ + // remove this listener + var index = array.indexOf(listeners, listener); + if(index > -1){ // check to make sure we haven't already called cancel + listeners.splice(index, 1); + if(!listeners.length){ + // no more listeners, remove the query updater too + queryUpdaters.splice(array.indexOf(queryUpdaters, queryUpdater), 1); + } + } + } + }; + }; + } + return results; + }; + var inMethod; + function whenFinished(method, action){ + var original = store[method]; + if(original){ + store[method] = function(value){ + if(inMethod){ + // if one method calls another (like add() calling put()) we don't want two events + return original.apply(this, arguments); + } + inMethod = true; + try{ + var results = original.apply(this, arguments); + Deferred.when(results, function(results){ + action((typeof results == "object" && results) || value); + }); + return results; + }finally{ + inMethod = false; + } + }; + } + } + // monitor for updates by listening to these methods + whenFinished("put", function(object){ + store.notify(object, store.getIdentity(object)); + }); + whenFinished("add", function(object){ + store.notify(object); + }); + whenFinished("remove", function(id){ + store.notify(undefined, id); + }); + + return store; +}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/store/README b/js/dojo-release-1.7.2-src/dojo/store/README new file mode 100644 index 0000000..cb33da0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/README @@ -0,0 +1,10 @@ +This folder contains the stores and utilities implementing the proposed new Dojo Object Store API, +a successor and unifier to Dojo Data, Dojo Storage, and potentially Dojo Model. These +stores are brand new, and designed to provide simple lightweight implementations +providing core functionality for typical applications. These modules are under active +development, and exist here at this time to provide maximum visibility to the +efforts to design and develop this new API and set of base stores. The goal is +to have these stores ready for Dojo 1.6. In the meantime, these stores are likely to +have API changes, may be missing some functionality, tests, and/or documentation. +If these modules are not deemed suitably stable by the 1.6 release, this directory (or +individual modules) will be removed and be given a later release target. \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/store/api/Store.js b/js/dojo-release-1.7.2-src/dojo/store/api/Store.js new file mode 100644 index 0000000..f16a836 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/api/Store.js @@ -0,0 +1,297 @@ +define(["dojo/_base/declare"], function(declare) { + // module: + // dojo/store/api/Store + // summary: + // The module defines the Dojo object store interface. + +var Store = declare("dojo.store.api.Store", null, { + // summary: + // This is an abstract API that data provider implementations conform to. + // This file defines methods signatures and intentionally leaves all the + // methods unimplemented. For more information on the dojo.store APIs, + // please visit: http://dojotoolkit.org/reference-guide/dojo/store.html + // Every method and property is optional, and is only needed if the functionality + // it provides is required. + // Every method may return a promise for the specified return value if the + // execution of the operation is asynchronous (except + // for query() which already defines an async return value). + + // idProperty: String + // If the store has a single primary key, this tndicates the property to use as the + // identity property. The values of this property should be unique. + idProperty: "id", + + // queryEngine: Function + // If the store can be queried locally (on the client side in JS), this defines + // the query engine to use for querying the data store. + // This takes a query and query options and returns a function that can execute + // the provided query on a JavaScript array. The queryEngine may be replace to + // provide more sophisticated querying capabilities. For example: + // | var query = store.queryEngine({foo:"bar"}, {count:10}); + // | query(someArray) -> filtered array + // The returned query function may have a "matches" property that can be + // used to determine if an object matches the query. For example: + // | query.matches({id:"some-object", foo:"bar"}) -> true + // | query.matches({id:"some-object", foo:"something else"}) -> false + queryEngine: null, + + get: function(id){ + // summary: + // Retrieves an object by its identity + // id: Number + // The identity to use to lookup the object + // returns: Object + // The object in the store that matches the given id. + }, + getIdentity: function(object){ + // summary: + // Returns an object's identity + // object: Object + // The object to get the identity from + // returns: String|Number + }, + put: function(object, directives){ + // summary: + // Stores an object + // object: Object + // The object to store. + // directives: dojo.store.api.Store.PutDirectives? + // Additional directives for storing objects. + // returns: Number|String + }, + add: function(object, directives){ + // summary: + // Creates an object, throws an error if the object already exists + // object: Object + // The object to store. + // directives: dojo.store.api.Store.PutDirectives? + // Additional directives for creating objects. + // returns: Number|String + }, + remove: function(id){ + // summary: + // Deletes an object by its identity + // id: Number + // The identity to use to delete the object + delete this.index[id]; + var data = this.data, + idProperty = this.idProperty; + for(var i = 0, l = data.length; i < l; i++){ + if(data[i][idProperty] == id){ + data.splice(i, 1); + return; + } + } + }, + query: function(query, options){ + // summary: + // Queries the store for objects. This does not alter the store, but returns a + // set of data from the store. + // query: String|Object|Function + // The query to use for retrieving objects from the store. + // options: dojo.store.api.Store.QueryOptions + // The optional arguments to apply to the resultset. + // returns: dojo.store.api.Store.QueryResults + // The results of the query, extended with iterative methods. + // + // example: + // Given the following store: + // + // ...find all items where "prime" is true: + // + // | store.query({ prime: true }).forEach(function(object){ + // | // handle each object + // | }); + }, + transaction: function(){ + // summary: + // Starts a new transaction. + // Note that a store user might not call transaction() prior to using put, + // delete, etc. in which case these operations effectively could be thought of + // as "auto-commit" style actions. + // returns: dojo.store.api.Store.Transaction + // This represents the new current transaction. + }, + getChildren: function(parent, options){ + // summary: + // Retrieves the children of an object. + // parent: Object + // The object to find the children of. + // options: dojo.store.api.Store.QueryOptions? + // Additional options to apply to the retrieval of the children. + // returns: dojo.store.api.Store.QueryResults + // A result set of the children of the parent object. + }, + getMetadata: function(object){ + // summary: + // Returns any metadata about the object. This may include attribution, + // cache directives, history, or version information. + // object: Object + // The object to return metadata for. + // returns: Object + // An object containing metadata. + } +}); + +Store.PutDirectives = function(id, before, parent, overwrite){ + // summary: + // Directives passed to put() and add() handlers for guiding the update and + // creation of stored objects. + // id: String|Number? + // Indicates the identity of the object if a new object is created + // before: Object? + // If the collection of objects in the store has a natural ordering, + // this indicates that the created or updated object should be placed before the + // object specified by the value of this property. A value of null indicates that the + // object should be last. + // parent: Object?, + // If the store is hierarchical (with single parenting) this property indicates the + // new parent of the created or updated object. + // overwrite: Boolean? + // If this is provided as a boolean it indicates that the object should or should not + // overwrite an existing object. A value of true indicates that a new object + // should not be created, the operation should update an existing object. A + // value of false indicates that an existing object should not be updated, a new + // object should be created (which is the same as an add() operation). When + // this property is not provided, either an update or creation is acceptable. + this.id = id; + this.before = before; + this.parent = parent; + this.overwrite = overwrite; +}; + +Store.SortInformation = function(attribute, descending){ + // summary: + // An object describing what attribute to sort on, and the direction of the sort. + // attribute: String + // The name of the attribute to sort on. + // descending: Boolean + // The direction of the sort. Default is false. + this.attribute = attribute; + this.descending = descending; +}; + +Store.QueryOptions = function(sort, start, count){ + // summary: + // Optional object with additional parameters for query results. + // sort: dojo.store.api.Store.SortInformation[]? + // A list of attributes to sort on, as well as direction + // For example: + // | [{attribute:"price, descending: true}]. + // If the sort parameter is omitted, then the natural order of the store may be + // applied if there is a natural order. + // start: Number? + // The first result to begin iteration on + // count: Number? + // The number of how many results should be returned. + this.sort = sort; + this.start = start; + this.count = count; +}; + +declare("dojo.store.api.Store.QueryResults", null, { + // summary: + // This is an object returned from query() calls that provides access to the results + // of a query. Queries may be executed asynchronously. + + forEach: function(callback, thisObject){ + // summary: + // Iterates over the query results, based on + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/forEach. + // Note that this may executed asynchronously. The callback may be called + // after this function returns. + // callback: + // Function that is called for each object in the query results + // thisObject: + // The object to use as |this| in the callback. + + }, + filter: function(callback, thisObject){ + // summary: + // Filters the query results, based on + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter. + // Note that this may executed asynchronously. The callback may be called + // after this function returns. + // callback: + // Function that is called for each object in the query results + // thisObject: + // The object to use as |this| in the callback. + // returns: dojo.store.api.Store.QueryResults + }, + map: function(callback, thisObject){ + // summary: + // Maps the query results, based on + // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map. + // Note that this may executed asynchronously. The callback may be called + // after this function returns. + // callback: + // Function that is called for each object in the query results + // thisObject: + // The object to use as |this| in the callback. + // returns: dojo.store.api.Store.QueryResults + }, + then: function(callback, errorHandler){ + // summary: + // This registers a callback for when the query is complete, if the query is asynchronous. + // This is an optional method, and may not be present for synchronous queries. + // callback: + // This is called when the query is completed successfully, and is passed a single argument + // that is an array representing the query results. + // errorHandler: + // This is called if the query failed, and is passed a single argument that is the error + // for the failure. + }, + observe: function(listener, includeAllUpdates){ + // summary: + // This registers a callback for notification of when data is modified in the query results. + // This is an optional method, and is usually provided by dojo.store.Observable. + // listener: Function + // The listener function is called when objects in the query results are modified + // to affect the query result. The listener function is called with the following + // arguments: + // | listener(object, removedFrom, insertedInto); + // * The object parameter indicates the object that was create, modified, or deleted. + // * The removedFrom parameter indicates the index in the result array where + // the object used to be. If the value is -1, then the object is an addition to + // this result set (due to a new object being created, or changed such that it + // is a part of the result set). + // * The insertedInto parameter indicates the index in the result array where + // the object should be now. If the value is -1, then the object is a removal + // from this result set (due to an object being deleted, or changed such that it + // is not a part of the result set). + // includeAllUpdates: + // This indicates whether or not to include object updates that do not affect + // the inclusion or order of the object in the query results. By default this is false, + // which means that if any object is updated in such a way that it remains + // in the result set and it's position in result sets is not affected, then the listener + // will not be fired. + + }, + // total: Number|Promise? + // This property should be included in if the query options included the "count" + // property limiting the result set. This property indicates the total number of objects + // matching the query (as if "start" and "count" weren't present). This may be + // a promise if the query is asynchronous. + total: 0 +}); + +declare("dojo.store.api.Store.Transaction", null, { + // summary: + // This is an object returned from transaction() calls that represents the current + // transaction. + + commit: function(){ + // summary: + // Commits the transaction. This may throw an error if it fails. Of if the operation + // is asynchronous, it may return a promise that represents the eventual success + // or failure of the commit. + }, + abort: function(callback, thisObject){ + // summary: + // Aborts the transaction. This may throw an error if it fails. Of if the operation + // is asynchronous, it may return a promise that represents the eventual success + // or failure of the abort. + } +}); +return Store; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/store/util/QueryResults.js b/js/dojo-release-1.7.2-src/dojo/store/util/QueryResults.js new file mode 100644 index 0000000..f1ee949 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/util/QueryResults.js @@ -0,0 +1,64 @@ +define(["../../_base/array", "../../_base/lang", "../../_base/Deferred" +], function(array, lang, Deferred) { + // module: + // dojo/store/util/QueryResults + // summary: + // The module defines a query results wrapper + +var util = lang.getObject("dojo.store.util", true); + +util.QueryResults = function(results){ + // summary: + // A function that wraps the results of a store query with additional + // methods. + // + // description: + // QueryResults is a basic wrapper that allows for array-like iteration + // over any kind of returned data from a query. While the simplest store + // will return a plain array of data, other stores may return deferreds or + // promises; this wrapper makes sure that *all* results can be treated + // the same. + // + // Additional methods include `forEach`, `filter` and `map`. + // + // returns: Object + // An array-like object that can be used for iterating over. + // + // example: + // Query a store and iterate over the results. + // + // | store.query({ prime: true }).forEach(function(item){ + // | // do something + // | }); + + if(!results){ + return results; + } + // if it is a promise it may be frozen + if(results.then){ + results = lang.delegate(results); + } + function addIterativeMethod(method){ + if(!results[method]){ + results[method] = function(){ + var args = arguments; + return Deferred.when(results, function(results){ + Array.prototype.unshift.call(args, results); + return util.QueryResults(array[method].apply(array, args)); + }); + }; + } + } + addIterativeMethod("forEach"); + addIterativeMethod("filter"); + addIterativeMethod("map"); + if(!results.total){ + results.total = Deferred.when(results, function(results){ + return results.length; + }); + } + return results; +}; + +return util.QueryResults; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/store/util/SimpleQueryEngine.js b/js/dojo-release-1.7.2-src/dojo/store/util/SimpleQueryEngine.js new file mode 100644 index 0000000..2b1c262 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/store/util/SimpleQueryEngine.js @@ -0,0 +1,108 @@ +define(["../../_base/array"], function(arrayUtil) { + // module: + // dojo/store/util/SimpleQueryEngine + // summary: + // The module defines a simple filtering query engine for object stores. + +return function(query, options){ + // summary: + // Simple query engine that matches using filter functions, named filter + // functions or objects by name-value on a query object hash + // + // description: + // The SimpleQueryEngine provides a way of getting a QueryResults through + // the use of a simple object hash as a filter. The hash will be used to + // match properties on data objects with the corresponding value given. In + // other words, only exact matches will be returned. + // + // This function can be used as a template for more complex query engines; + // for example, an engine can be created that accepts an object hash that + // contains filtering functions, or a string that gets evaluated, etc. + // + // When creating a new dojo.store, simply set the store's queryEngine + // field as a reference to this function. + // + // query: Object + // An object hash with fields that may match fields of items in the store. + // Values in the hash will be compared by normal == operator, but regular expressions + // or any object that provides a test() method are also supported and can be + // used to match strings by more complex expressions + // (and then the regex's or object's test() method will be used to match values). + // + // options: dojo.store.util.SimpleQueryEngine.__queryOptions? + // An object that contains optional information such as sort, start, and count. + // + // returns: Function + // A function that caches the passed query under the field "matches". See any + // of the "query" methods on dojo.stores. + // + // example: + // Define a store with a reference to this engine, and set up a query method. + // + // | var myStore = function(options){ + // | // ...more properties here + // | this.queryEngine = dojo.store.util.SimpleQueryEngine; + // | // define our query method + // | this.query = function(query, options){ + // | return dojo.store.util.QueryResults(this.queryEngine(query, options)(this.data)); + // | }; + // | }; + + // create our matching query function + switch(typeof query){ + default: + throw new Error("Can not query with a " + typeof query); + case "object": case "undefined": + var queryObject = query; + query = function(object){ + for(var key in queryObject){ + var required = queryObject[key]; + if(required && required.test){ + if(!required.test(object[key])){ + return false; + } + }else if(required != object[key]){ + return false; + } + } + return true; + }; + break; + case "string": + // named query + if(!this[query]){ + throw new Error("No filter function " + query + " was found in store"); + } + query = this[query]; + // fall through + case "function": + // fall through + } + function execute(array){ + // execute the whole query, first we filter + var results = arrayUtil.filter(array, query); + // next we sort + if(options && options.sort){ + results.sort(function(a, b){ + for(var sort, i=0; sort = options.sort[i]; i++){ + var aValue = a[sort.attribute]; + var bValue = b[sort.attribute]; + if (aValue != bValue) { + return !!sort.descending == aValue > bValue ? -1 : 1; + } + } + return 0; + }); + } + // now we paginate + if(options && (options.start || options.count)){ + var total = results.length; + results = results.slice(options.start || 0, (options.start || 0) + (options.count || Infinity)); + results.total = total; + } + return results; + } + execute.matches = query; + return execute; +}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/string.js b/js/dojo-release-1.7.2-src/dojo/string.js new file mode 100644 index 0000000..767c122 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/string.js @@ -0,0 +1,162 @@ +define(["./_base/kernel", "./_base/lang"], function(dojo, lang) { + // module: + // dojo/string + // summary: + // TODOC + +lang.getObject("string", true, dojo); + +/*===== +dojo.string = { + // summary: String utilities for Dojo +}; +=====*/ + +dojo.string.rep = function(/*String*/str, /*Integer*/num){ + // summary: + // Efficiently replicate a string `n` times. + // str: + // the string to replicate + // num: + // number of times to replicate the string + + if(num <= 0 || !str){ return ""; } + + var buf = []; + for(;;){ + if(num & 1){ + buf.push(str); + } + if(!(num >>= 1)){ break; } + str += str; + } + return buf.join(""); // String +}; + +dojo.string.pad = function(/*String*/text, /*Integer*/size, /*String?*/ch, /*Boolean?*/end){ + // summary: + // Pad a string to guarantee that it is at least `size` length by + // filling with the character `ch` at either the start or end of the + // string. Pads at the start, by default. + // text: + // the string to pad + // size: + // length to provide padding + // ch: + // character to pad, defaults to '0' + // end: + // adds padding at the end if true, otherwise pads at start + // example: + // | // Fill the string to length 10 with "+" characters on the right. Yields "Dojo++++++". + // | dojo.string.pad("Dojo", 10, "+", true); + + if(!ch){ + ch = '0'; + } + var out = String(text), + pad = dojo.string.rep(ch, Math.ceil((size - out.length) / ch.length)); + return end ? out + pad : pad + out; // String +}; + +dojo.string.substitute = function( /*String*/ template, + /*Object|Array*/map, + /*Function?*/ transform, + /*Object?*/ thisObject){ + // summary: + // Performs parameterized substitutions on a string. Throws an + // exception if any parameter is unmatched. + // template: + // a string with expressions in the form `${key}` to be replaced or + // `${key:format}` which specifies a format function. keys are case-sensitive. + // map: + // hash to search for substitutions + // transform: + // a function to process all parameters before substitution takes + // place, e.g. mylib.encodeXML + // thisObject: + // where to look for optional format function; default to the global + // namespace + // example: + // Substitutes two expressions in a string from an Array or Object + // | // returns "File 'foo.html' is not found in directory '/temp'." + // | // by providing substitution data in an Array + // | dojo.string.substitute( + // | "File '${0}' is not found in directory '${1}'.", + // | ["foo.html","/temp"] + // | ); + // | + // | // also returns "File 'foo.html' is not found in directory '/temp'." + // | // but provides substitution data in an Object structure. Dotted + // | // notation may be used to traverse the structure. + // | dojo.string.substitute( + // | "File '${name}' is not found in directory '${info.dir}'.", + // | { name: "foo.html", info: { dir: "/temp" } } + // | ); + // example: + // Use a transform function to modify the values: + // | // returns "file 'foo.html' is not found in directory '/temp'." + // | dojo.string.substitute( + // | "${0} is not found in ${1}.", + // | ["foo.html","/temp"], + // | function(str){ + // | // try to figure out the type + // | var prefix = (str.charAt(0) == "/") ? "directory": "file"; + // | return prefix + " '" + str + "'"; + // | } + // | ); + // example: + // Use a formatter + // | // returns "thinger -- howdy" + // | dojo.string.substitute( + // | "${0:postfix}", ["thinger"], null, { + // | postfix: function(value, key){ + // | return value + " -- howdy"; + // | } + // | } + // | ); + + thisObject = thisObject || dojo.global; + transform = transform ? + lang.hitch(thisObject, transform) : function(v){ return v; }; + + return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, + function(match, key, format){ + var value = lang.getObject(key, false, map); + if(format){ + value = lang.getObject(format, false, thisObject).call(thisObject, value, key); + } + return transform(value, key).toString(); + }); // String +}; + +/*===== +dojo.string.trim = function(str){ + // summary: + // Trims whitespace from both sides of the string + // str: String + // String to be trimmed + // returns: String + // Returns the trimmed string + // description: + // This version of trim() was taken from [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript). + // The short yet performant version of this function is dojo.trim(), + // which is part of Dojo base. Uses String.prototype.trim instead, if available. + return ""; // String +} +=====*/ + +dojo.string.trim = String.prototype.trim ? + lang.trim : // aliasing to the native function + function(str){ + str = str.replace(/^\s+/, ''); + for(var i = str.length - 1; i >= 0; i--){ + if(/\S/.test(str.charAt(i))){ + str = str.substring(0, i + 1); + break; + } + } + return str; + }; + +return dojo.string; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests.js b/js/dojo-release-1.7.2-src/dojo/tests.js new file mode 100644 index 0000000..04d192a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests.js @@ -0,0 +1,12 @@ +//This file is the command-line entry point for running the tests in +//Rhino and Spidermonkey. + +/*===== +dojo.tests = { + // summary: D.O.H. Test files for Dojo unit testing. +}; +=====*/ + +load("dojo.js"); +load("tests/runner.js"); +tests.run(); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/AdapterRegistry.js b/js/dojo-release-1.7.2-src/dojo/tests/AdapterRegistry.js new file mode 100644 index 0000000..e8c3c28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/AdapterRegistry.js @@ -0,0 +1,72 @@ +define(["../main", "doh", "../AdapterRegistry"], function(dojo, doh){ + +doh.register("tests.AdapterRegistry", + [ + function ctor(t){ + var taa = new dojo.AdapterRegistry(); + t.is(0, taa.pairs.length); + t.f(taa.returnWrappers); + + var taa = new dojo.AdapterRegistry(true); + t.t(taa.returnWrappers); + }, + + function register(t){ + var taa = new dojo.AdapterRegistry(); + taa.register("blah", + function(str){ return str == "blah"; }, + function(){ return "blah"; } + ); + t.is(1, taa.pairs.length); + t.is("blah", taa.pairs[0][0]); + + taa.register("thinger"); + taa.register("prepend", null, null, true, true); + t.is("prepend", taa.pairs[0][0]); + t.t(taa.pairs[0][3]); + }, + + /* + function match(t){ + }, + */ + + function noMatch(t){ + var taa = new dojo.AdapterRegistry(); + var threw = false; + try{ + taa.match("blah"); + }catch(e){ + threw = true; + } + t.t(threw); + }, + + function returnWrappers(t){ + var taa = new dojo.AdapterRegistry(); + taa.register("blah", + function(str){ return str == "blah"; }, + function(){ return "blah"; } + ); + t.is("blah", taa.match("blah")); + + taa.returnWrappers = true; + t.is("blah", taa.match("blah")()); + }, + + function unregister(t){ + var taa = new dojo.AdapterRegistry(); + taa.register("blah", + function(str){ return str == "blah"; }, + function(){ return "blah"; } + ); + taa.register("thinger"); + taa.register("prepend", null, null, true, true); + taa.unregister("prepend"); + t.is(2, taa.pairs.length); + t.is("blah", taa.pairs[0][0]); + } + ] +); + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/DeferredList.js b/js/dojo-release-1.7.2-src/dojo/tests/DeferredList.js new file mode 100644 index 0000000..f14d0f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/DeferredList.js @@ -0,0 +1,193 @@ +define(["../main", "doh", "../DeferredList"], function(dojo, doh){ + doh.register("tests.DeferredList", [ + function callback(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = new dojo.DeferredList([d1, d2]); + var fired = false; + + dl.addCallback(function(res){ + doh.debug("debug from dojo.DeferredList callback"); + return res; + }); + dl.addCallback(function(res){ + console.log("res: ", res, res.length); + t.assertTrue(res.length == 2); + t.assertTrue(res[0][0]); + t.assertEqual(res[0][1], "foo"); + t.assertTrue(res[1][0]); + t.assertEqual(res[1][1], "bar"); + fired = true; + return res; + }); + d1.callback("foo"); + d2.callback("bar"); + t.assertTrue(fired); + }, + + function errback(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = new dojo.DeferredList([d1, d2]); + var fired = false; + var e1 = new Error("foo"); + var e2 = new Error("bar"); + + dl.addCallback(function(res){ + doh.debug("debug from dojo.DeferredList callback"); + return res; + }); + dl.addCallback(function(res){ + t.assertTrue(res.length == 2); + t.assertTrue(!res[0][0]); + + t.assertEqual(res[0][1], e1); + t.assertTrue(!res[1][0]); + t.assertEqual(res[1][1], e2); + fired = true; + return res; + }); + d1.errback(e1); + d2.errback(e2); + t.assertTrue(fired); + }, + + + function mixed(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = new dojo.DeferredList([d1, d2]); + var fired = false; + var e = new Error("foo"); + + dl.addCallback(function(res){ + doh.debug("debug from dojo.DeferredList callback"); + return res; + }); + dl.addCallback(function(res){ + t.assertTrue(res.length == 2); + t.assertTrue(!res[0][0]); + + t.assertEqual(res[0][1], e); + t.assertTrue(res[1][0]); + t.assertEqual(res[1][1], "bar"); + fired = true; + return res; + }); + d1.errback(e); + d2.callback("bar"); + t.assertTrue(fired); + }, + + function gather(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = dojo.DeferredList.prototype.gatherResults([d1, d2]); + var fired = false; + dl.addCallback(function(res){ + t.assertEqual(res[0], "foo"); + t.assertEqual(res[1], "bar"); + fired = true; + return res; + }); + d1.callback("foo"); + d2.callback("bar"); + t.assertTrue(fired); + } + ]); + + doh.register("tests.DeferredList", [ + function callback(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = new dojo.DeferredList([d1, d2]); + var fired = false; + dl.addCallback(function(res){ + doh.debug("debug from dojo.DeferredList callback"); + return res; + }); + dl.addCallback(function(res){ + t.assertTrue(res.length == 2); + t.assertTrue(res[0][0]); + t.assertEqual(res[0][1], "foo"); + t.assertTrue(res[1][0]); + t.assertEqual(res[1][1], "bar"); + fired = true; + return res; + }); + d1.callback("foo"); + d2.callback("bar"); + t.assertTrue(fired); + }, + + function errback(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = new dojo.DeferredList([d1, d2]); + var fired = false; + var e1 = new Error("foo"); + var e2 = new Error("bar"); + + dl.addCallback(function(res){ + doh.debug("debug from dojo.DeferredList callback"); + return res; + }); + dl.addCallback(function(res){ + t.assertTrue(res.length == 2); + t.assertTrue(!res[0][0]); + + t.assertEqual(res[0][1], e1); + t.assertTrue(!res[1][0]); + t.assertEqual(res[1][1], e2); + fired = true; + return res; + }); + d1.errback(e1); + d2.errback(e2); + t.assertTrue(fired); + }, + + + function mixed(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = new dojo.DeferredList([d1, d2]); + var fired = false; + var e = new Error("foo"); + + dl.addCallback(function(res){ + doh.debug("debug from dojo.DeferredList callback"); + return res; + }); + dl.addCallback(function(res){ + t.assertTrue(res.length == 2); + t.assertTrue(!res[0][0]); + + t.assertEqual(res[0][1], e); + t.assertTrue(res[1][0]); + t.assertEqual(res[1][1], "bar"); + fired = true; + return res; + }); + d1.errback(e); + d2.callback("bar"); + t.assertTrue(fired); + }, + + function gather(t){ + var d1 = new dojo.Deferred(); + var d2 = new dojo.Deferred(); + var dl = dojo.DeferredList.prototype.gatherResults([d1, d2]); + var fired = false; + dl.addCallback(function(res){ + t.assertEqual(res[0], "foo"); + t.assertEqual(res[1], "bar"); + fired = true; + return res; + }); + d1.callback("foo"); + d2.callback("bar"); + t.assertTrue(fired); + } + ]); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/NodeList-data.html b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-data.html new file mode 100644 index 0000000..ea652f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-data.html @@ -0,0 +1,202 @@ + + + + Testing dojo._data / NodeList.data + + + + +
                            +
                            woot.
                            +
                              +
                            • baz
                            • +
                            • bam
                            • +
                            +

                            hithere

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/NodeList-data.js b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-data.js new file mode 100644 index 0000000..85061af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-data.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.NodeList-data", require.toUrl("./NodeList-data.html"), 30000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/NodeList-fx.html b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-fx.html new file mode 100644 index 0000000..c8dc888 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-fx.html @@ -0,0 +1,166 @@ + + + + Testing dojo.fx extensions to dojo.NodeList + + + + + +

                            + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper + sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta + rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

                            +

                            + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

                            +

                            + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/NodeList-manipulate.html b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-manipulate.html new file mode 100644 index 0000000..b749c92 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-manipulate.html @@ -0,0 +1,369 @@ + + + + Testing dojo.NodeList-manipulate extensions to dojo.NodeList + + + + + +

                            testing dojo.NodeList-manipulate

                            +
                            + 100px square, abs +
                            +
                            + c1 +
                            +
                            + + Crass, baby + The third div + Classy, baby + The third div, again + + Yeah, baby +
                            +
                            + + + + + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/NodeList-manipulate.js b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-manipulate.js new file mode 100644 index 0000000..044ce4a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-manipulate.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.NodeList-manipulate", require.toUrl("./NodeList-manipulate.html"), 30000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/NodeList-traverse.html b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-traverse.html new file mode 100644 index 0000000..c12907b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-traverse.html @@ -0,0 +1,160 @@ + + + + Testing dojo.NodeList-traverse extensions to dojo.NodeList + + + + + +

                            testing dojo.NodeList-traverse

                            +
                            + 100px square, abs +
                            +
                            + c1 +
                            +
                            + + Crass, baby + The third div + Classy, baby + The third div, again + + Yeah, baby +
                            +
                            +
                            +
                            +
                            +
                            +
                            foo bar bar bang
                            +
                            +
                            +
                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/NodeList-traverse.js b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-traverse.js new file mode 100644 index 0000000..77c6ac3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/NodeList-traverse.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.NodeList-traverse", require.toUrl("./NodeList-traverse.html"), 30000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/Stateful.js b/js/dojo-release-1.7.2-src/dojo/tests/Stateful.js new file mode 100644 index 0000000..f4b41a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/Stateful.js @@ -0,0 +1,51 @@ +define(["../main", "doh", "../Stateful"], function(dojo, doh){ + +doh.register("tests.Stateful", [ + function getSetWatch(t){ + var s = new dojo.Stateful({ + foo: 3 + }); + doh.is(s.get("foo"), 3); + var watching = s.watch("foo", function(name, oldValue, value){ + doh.is("foo", name); + doh.is(3, oldValue); + doh.is(4, value); + doh.is(4, s.get("foo")); + }); + s.set("foo", 4); + doh.is(4, s.get("foo")); + watching.unwatch(); + s.set("foo", 5); + doh.is(5, s.get("foo")); + }, + function setHash(t){ + var s = new dojo.Stateful(); + s.set({ + foo:3, + bar: 5 + }); + doh.is(3, s.get("foo")); + doh.is(5, s.get("bar")); + }, + function wildcard(t){ + var s = new dojo.Stateful(); + s.set({ + foo:3, + bar: 5 + }); + var wildcard = 0; + var foo = 0; + s.watch(function(){ + wildcard++; + }); + s.watch("foo", function(){ + foo++; + }); + s.set("foo", 4); + s.set("bar", 6); + doh.is(2, wildcard); + doh.is(1, foo); + } +]); + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/TODO b/js/dojo-release-1.7.2-src/dojo/tests/TODO new file mode 100644 index 0000000..4f66fa8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/TODO @@ -0,0 +1,10 @@ +This file lists tests that need to be implemented or expanded. See ticket #3121 +for changes related to things listed here. + +Tests to add: +------------- + * add tests for dojo.place() + +Tests to improve: +----------------- + * NodeList isn't testing several of its public methods (place, orphan, adopt, etc.) diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base.js b/js/dojo-release-1.7.2-src/dojo/tests/_base.js new file mode 100644 index 0000000..9f6d702 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base.js @@ -0,0 +1,22 @@ +define([ + "dojo/tests/_base/loader", + "dojo/tests/_base/array", + "dojo/tests/_base/Color", + "dojo/tests/_base/lang", + "dojo/tests/_base/declare", + "dojo/tests/_base/connect", + "dojo/tests/_base/Deferred", + "dojo/tests/_base/json", + "dojo/tests/_base/object", + "dojo/has!host-browser?dojo/tests/_base/html", + "dojo/has!host-browser?dojo/tests/_base/fx", + "dojo/has!host-browser?dojo/tests/_base/query", + "dojo/has!host-browser?dojo/tests/_base/xhr", + "dojo/has!host-browser?dojo/tests/_base/window"], 1); + + // TODO: platform boot tests + //dojo.platformRequire({ + // browser: ["tests._base._loader.hostenv_browser"], + // rhino: ["tests._base._loader.hostenv_rhino"], + // spidermonkey: ["tests._base._loader.hostenv_spidermonkey"] + //}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/Color.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/Color.js new file mode 100644 index 0000000..95b67f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/Color.js @@ -0,0 +1,30 @@ +dojo.provide("dojo.tests._base.Color"); + +(function(){ + var white = dojo.colorFromString("white").toRgba(); + var maroon = dojo.colorFromString("maroon").toRgba(); + var verifyColor = function(t, source, expected){ + var color = new dojo.Color(source); + t.is(expected, color.toRgba()); + dojo.forEach(color.toRgba(), function(n){ + t.is("number", typeof(n)); + }); + }; + + doh.register("tests._base.Color", + [ + function testColor1(t){ verifyColor(t, "maroon", maroon); }, + function testColor2(t){ verifyColor(t, "white", white); }, + function testColor3(t){ verifyColor(t, "#fff", white); }, + function testColor4(t){ verifyColor(t, "#ffffff", white); }, + function testColor5(t){ verifyColor(t, "rgb(255,255,255)", white); }, + function testColor6(t){ verifyColor(t, "#800000", maroon); }, + function testColor7(t){ verifyColor(t, "rgb(128, 0, 0)", maroon); }, + function testColor8(t){ verifyColor(t, "rgba(128, 0, 0, 0.5)", [128, 0, 0, 0.5]); }, + function testColor9(t){ verifyColor(t, maroon, maroon); }, + function testColor10(t){ verifyColor(t, [1, 2, 3], [1, 2, 3, 1]); }, + function testColor11(t){ verifyColor(t, [1, 2, 3, 0.5], [1, 2, 3, 0.5]); }, + function testColor12(t){ verifyColor(t, dojo.blendColors(new dojo.Color("black"), new dojo.Color("white"), 0.5), [128, 128, 128, 1]); } + ] + ); +})(); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/Deferred.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/Deferred.js new file mode 100644 index 0000000..e0e690b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/Deferred.js @@ -0,0 +1,317 @@ +dojo.provide("dojo.tests._base.Deferred"); + +var delay = function(ms){ + var d = new dojo.Deferred(); + ms = ms || 20; + if(this.setTimeout){ + setTimeout(function(){ + d.progress(0.5); + },ms/2); + setTimeout(function(){ + d.resolve(); + },ms); + }else{ + d.progress(0.5); + d.resolve(); + } + return d.promise; +}; +doh.register("tests._base.Deferred", + [ + + function callback(t){ + var nd = new dojo.Deferred(); + var cnt = 0; + nd.addCallback(function(res){ + doh.debug("debug from dojo.Deferred callback"); + return res; + }); + nd.addCallback(function(res){ + // t.debug("val:", res); + cnt+=res; + return cnt; + }); + nd.callback(5); + // t.debug("cnt:", cnt); + t.assertEqual(cnt, 5); + }, + + function callback_extra_args(t){ + var nd = new dojo.Deferred(); + var cnt = 0; + nd.addCallback(dojo.global, function(base, res){ cnt+=base; cnt+=res; return cnt; }, 30); + nd.callback(5); + t.assertEqual(cnt, 35); + }, + + function errback(t){ + var nd = new dojo.Deferred(); + var cnt = 0; + nd.addErrback(function(val){ + return ++cnt; + }); + nd.errback(); + t.assertEqual(cnt, 1); + }, + + function callbackTwice(t){ + var nd = new dojo.Deferred(); + var cnt = 0; + nd.addCallback(function(res){ + return ++cnt; + }); + nd.callback(); + t.assertEqual(cnt, 1); + var thrown = false; + try{ + nd.callback(); + }catch(e){ + thrown = true; + } + t.assertTrue(thrown); + }, + + function addBoth(t){ + var nd = new dojo.Deferred(); + var cnt = 0; + nd.addBoth(function(res){ + return ++cnt; + }); + nd.callback(); + t.assertEqual(cnt, 1); + + // nd.callback(); + // t.debug(cnt); + // t.assertEqual(cnt, 1); + }, + + function callbackNested(t){ + var nd = new dojo.Deferred(); + var nestedReturn = "yellow"; + nd.addCallback(function(res){ + nd.addCallback(function(res2){ + nestedReturn = res2; + }); + return "blue"; + }); + nd.callback("red"); + t.assertEqual("blue", nestedReturn); + }, + function simpleThen(t){ + var td = new doh.Deferred(); + delay().then(function(){ + td.callback(true); + }); + return td; + }, + function thenChaining(t){ + var td = new doh.Deferred(); + var p = delay(); + var p2 = p.then(function(){ + return 1; + }); + p3 = p2.then(function(){ + return 2; + }); + p3.then(function(){ + p2.then(function(v){ + t.assertEqual(v, 1); + p3.then(function(v){ + t.assertEqual(v, 2); + td.callback(true); + }); + }); + }); + return td; + }, + function simpleWhen(t){ + var td = new doh.Deferred(); + dojo.when(delay(), function(){ + td.callback(true); + }); + return td; + }, + function syncWhenWithNoCallback(t){ + t.is(dojo.when(3), 3); + }, + function progress(t){ + if(dojo.isBrowser){ + var td = new doh.Deferred(); + var percentDone; + dojo.when(delay(), function(){ + t.is(percentDone, 0.5); + td.callback(true); + },function(){}, + function(completed){ + percentDone = completed; + }); + return td; + } + return null; + }, + function errorHandler(t){ + var def = new dojo.Deferred(); + var handledError; + dojo.config.deferredOnError = function(e){ + handledError = e; + }; + def.reject(new Error("test")); + t.t(handledError instanceof Error); + }, + function cancelThenDerivative(t){ + var def = new dojo.Deferred(); + var def2 = def.then(); + try{ + def2.cancel(); + t.t(true); // Didn't throw an error + }catch(e){ + t.t(false); + } + }, + function cancelPromiseValue(t){ + var cancelledDef; + var def = new dojo.Deferred(function(_def){ cancelledDef = _def; }); + def.promise.cancel(); + t.is(def, cancelledDef); + }, + function errorResult(t){ + var def = new dojo.Deferred(); + var result = new Error("rejected"); + def.reject(result); + t.is(def.fired, 1); + t.is(def.results[1], result); + }, + function globalLeak(t){ + var def = new dojo.Deferred(); + def.then(function(){ return def; }); + def.resolve(true); + t.is(dojo.global.results, undefined, "results is leaking into global"); + t.is(dojo.global.fired, undefined, "fired is leaking into global"); + }, + function backAndForthProcess(t){ + var def = new dojo.Deferred(); + var retval = "fail"; + + def.addErrback(function(){ + return "ignore error and throw this good string"; + }).addCallback(function(){ + throw new Error("error1"); + }).addErrback(function(){ + return "ignore second error and make it good again"; + }).addCallback(function(){ + retval = "succeed"; + }); + + def.errback(""); + + t.assertEqual("succeed", retval); + }, + function backAndForthProcessThen(t){ + var def = new dojo.Deferred; + var retval = "fail"; + + def.then(null, function(){ + return "ignore error and throw this good string"; + }).then(function(){ + throw "error1"; + }).then(null, function(){ + return "ignore second error and make it good again"; + }).then(function(){ + retval = "succeed"; + }); + + def.reject(""); + + t.assertEqual("succeed", retval); + }, + function returnErrorObject(t){ + var def = new dojo.Deferred(); + var retval = "fail"; + + def.addCallback(function(){ + return new Error("returning an error should work same as throwing"); + }).addErrback(function(){ + retval = "succeed"; + }); + + def.callback(); + + t.assertEqual("succeed", retval); + }, + function returnErrorObjectThen(t){ + var def = new dojo.Deferred(); + var retval = "fail"; + + def.then(function(){ + return new Error("returning an error should NOT work same as throwing"); + }).then(function(){ + retval = "succeed"; + }); + + def.resolve(); + + t.assertEqual("succeed", retval); + }, + function errbackWithPromise(t){ + var def = new dojo.Deferred(); + var retval; + + def.addCallbacks(function(){}, function(err){ + return err; + }); + def.promise.then( + function(){ retval = "fail"; }, + function(){ retval = "succeed"; }); + def.errback(new Error); + + t.assertEqual("succeed", retval); + }, + function testDojoPromiseProgressBasic(t) { + var a = new dojo.Deferred(); + var b = new dojo.Deferred(); + var called = false; + + a.then(function() { + b.then(function(){ + if (!called) { + console.log("Boo. ProgressBasic not called"); + } + }, function(){ + console.log("Unexpected"); + }, function(){ + called = true; + console.log("Yay. ProgressBasic called"); + }); + }); + + a.resolve(); + b.progress(); + b.resolve(); + t.t(called); + }, + + function testDojoPromiseProgressChain(t) { + var a = new dojo.Deferred(); + var b = new dojo.Deferred(); + var called = false; + + a.then(function() { + return b; + }).then(function(){ + if (!called) { + console.log("Boo. ProgressChain not called"); + } + }, function(){ + console.log("Unexpected"); + }, function(){ + called = true; + console.log("Yay. ProgressChain called"); + }); + + a.resolve(); + b.progress(); + b.resolve(); + t.t(called); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/NodeList.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/NodeList.html new file mode 100644 index 0000000..0b90cd2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/NodeList.html @@ -0,0 +1,712 @@ + + + + + + testing dojo.NodeList + + + + +

                            testing dojo.NodeList

                            +
                            + 100px square, abs +
                            +
                            + c1 +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/abs.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/abs.html new file mode 100644 index 0000000..906f602 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/abs.html @@ -0,0 +1,102 @@ + + + + supplementary dojo.position() tests + + + + + + +

                            supplementary dojo.position() tests

                            + + +
                            + +
                            +
                            + +




                            + +
                            +
                            + + +
                            + + + +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/absQuirk.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/absQuirk.html new file mode 100644 index 0000000..fa525ec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/absQuirk.html @@ -0,0 +1,101 @@ + + + supplementary dojo.position() tests + + + + + + +

                            supplementary dojo.position() tests

                            + + +
                            + +
                            +
                            + +




                            + +
                            +
                            + + +
                            + + + +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/absQuirksIframe.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/absQuirksIframe.html new file mode 100644 index 0000000..9313aa4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/absQuirksIframe.html @@ -0,0 +1,10 @@ + + + + + quirks iframe 0,0 + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/absStrictIframe.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/absStrictIframe.html new file mode 100644 index 0000000..37f4cf2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/absStrictIframe.html @@ -0,0 +1,10 @@ + + + + + strict iframe 0,0 + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/array.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/array.js new file mode 100644 index 0000000..ea1cdda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/array.js @@ -0,0 +1,303 @@ +dojo.provide("dojo.tests._base.array"); + +tests.register("tests._base.array", + [ + function testIndexOf(t){ + var foo = [128, 256, 512]; + var bar = ["aaa", "bbb", "ccc"]; + + t.assertEqual(1, dojo.indexOf([45, 56, 85], 56)); + t.assertEqual(1, dojo.indexOf([Number, String, Date], String)); + t.assertEqual(1, dojo.indexOf(foo, foo[1])); + t.assertEqual(2, dojo.indexOf(foo, foo[2])); + t.assertEqual(1, dojo.indexOf(bar, bar[1])); + t.assertEqual(2, dojo.indexOf(bar, bar[2])); + t.assertEqual(-1, dojo.indexOf({a:1}, "a")); + + foo.push(bar); + t.assertEqual(3, dojo.indexOf(foo, bar)); + }, + + function testIndexOfFromIndex(t){ + var foo = [128, 256, 512]; + var bar = ["aaa", "bbb", "ccc"]; + + t.assertEqual(-1, dojo.indexOf([45, 56, 85], 56, 2)); + t.assertEqual(1, dojo.indexOf([45, 56, 85], 56, 1)); + t.assertEqual(1, dojo.indexOf([45, 56, 85], 56, -3)); + // Make sure going out of bounds doesn't throw us in an infinite loop + t.assertEqual(-1, dojo.indexOf([45, 56, 85], 56, 3)); + }, + + function testLastIndexOf(t){ + var foo = [128, 256, 512]; + var bar = ["aaa", "bbb", "aaa", "ccc"]; + + t.assertEqual(1, dojo.indexOf([45, 56, 85], 56)); + t.assertEqual(1, dojo.indexOf([Number, String, Date], String)); + t.assertEqual(1, dojo.lastIndexOf(foo, foo[1])); + t.assertEqual(2, dojo.lastIndexOf(foo, foo[2])); + t.assertEqual(1, dojo.lastIndexOf(bar, bar[1])); + t.assertEqual(2, dojo.lastIndexOf(bar, bar[2])); + t.assertEqual(2, dojo.lastIndexOf(bar, bar[0])); + }, + + function testLastIndexOfFromIndex(t){ + t.assertEqual(1, dojo.lastIndexOf([45, 56, 85], 56, 1)); + t.assertEqual(-1, dojo.lastIndexOf([45, 56, 85], 85, 1)); + t.assertEqual(-1, dojo.lastIndexOf([45, 56, 85], 85, -2)); + t.assertEqual(0, dojo.lastIndexOf([45, 56, 45], 45, 0)); + }, + + function testForEach(t){ + var foo = [128, "bbb", 512]; + dojo.forEach(foo, function(elt, idx, array){ + switch(idx){ + case 0: t.assertEqual(128, elt); break; + case 1: t.assertEqual("bbb", elt); break; + case 2: t.assertEqual(512, elt); break; + default: t.assertTrue(false); + } + }); + + var noException = true; + try{ + dojo.forEach(undefined, function(){}); + }catch(e){ + noException = false; + } + t.assertTrue(noException); + }, + + function testForEach_str(t){ + var bar = 'abc'; + dojo.forEach(bar, function(elt, idx, array){ + switch(idx){ + case 0: t.assertEqual("a", elt); break; + case 1: t.assertEqual("b", elt); break; + case 2: t.assertEqual("c", elt); break; + default: t.assertTrue(false); + } + }); + }, + // FIXME: test forEach w/ a NodeList()? + + function testForEach_string_callback(t){ + // Test using strings as callback", which accept the parameters with + // the names "item", "index" and "array"! + var foo = [128, "bbb", 512]; + // Test that the variable "item" contains the value of each item. + var obj = { + _res: "" + }; + dojo.forEach(foo, "this._res += item", obj); + t.assertEqual(obj._res, "128bbb512"); + // Test that the variable "index" contains each index. + obj._res = []; + dojo.forEach(foo, "this._res.push(index)", obj); + t.assertEqual(obj._res, [0,1,2]); + // Test that the variable "array" always contains the entire array. + obj._res = []; + dojo.forEach(foo, "this._res.push(array)", obj); + t.assertEqual(obj._res, [ + [128, "bbb", 512], + [128, "bbb", 512], + [128, "bbb", 512] + ]); + // Catch undefined variable usage (I used to use "i" :-)). + var caughtException = false; + try{ + dojo.forEach(foo, "this._res += arr[i];", obj); + }catch(e){ + caughtException = true; + } + t.assertTrue(caughtException); + }, + + // FIXME: test forEach w/ a NodeList()? + function testEvery(t){ + var foo = [128, "bbb", 512]; + + t.assertTrue( + dojo.every(foo, function(elt, idx, array){ + t.assertEqual(Array, array.constructor); + t.assertTrue(dojo.isArray(array)); + t.assertTrue(typeof idx == "number"); + if(idx == 1){ t.assertEqual("bbb" , elt); } + return true; + }) + ); + + t.assertTrue( + dojo.every(foo, function(elt, idx, array){ + switch(idx){ + case 0: t.assertEqual(128, elt); return true; + case 1: t.assertEqual("bbb", elt); return true; + case 2: t.assertEqual(512, elt); return true; + default: return false; + } + }) + ); + + t.assertFalse( + dojo.every(foo, function(elt, idx, array){ + switch(idx){ + case 0: t.assertEqual(128, elt); return true; + case 1: t.assertEqual("bbb", elt); return true; + case 2: t.assertEqual(512, elt); return false; + default: return true; + } + }) + ); + + }, + + function testEvery_str(t){ + var bar = 'abc'; + t.assertTrue( + dojo.every(bar, function(elt, idx, array){ + switch(idx){ + case 0: t.assertEqual("a", elt); return true; + case 1: t.assertEqual("b", elt); return true; + case 2: t.assertEqual("c", elt); return true; + default: return false; + } + }) + ); + + t.assertFalse( + dojo.every(bar, function(elt, idx, array){ + switch(idx){ + case 0: t.assertEqual("a", elt); return true; + case 1: t.assertEqual("b", elt); return true; + case 2: t.assertEqual("c", elt); return false; + default: return true; + } + }) + ); + }, + // FIXME: test NodeList for every()? + + function testSome(t){ + var foo = [128, "bbb", 512]; + t.assertTrue( + dojo.some(foo, function(elt, idx, array){ + t.assertEqual(3, array.length); + return true; + }) + ); + + t.assertTrue( + dojo.some(foo, function(elt, idx, array){ + return idx < 1; + + }) + ); + + t.assertFalse( + dojo.some(foo, function(elt, idx, array){ + return false; + }) + ); + + t.assertTrue( + dojo.some(foo, function(elt, idx, array){ + t.assertEqual(Array, array.constructor); + t.assertTrue(dojo.isArray(array)); + t.assertTrue(typeof idx == "number"); + if(idx == 1){ t.assertEqual("bbb" , elt); } + return true; + }) + ); + }, + + function testSome_str(t){ + var bar = 'abc'; + t.assertTrue( + dojo.some(bar, function(elt, idx, array){ + t.assertEqual(3, array.length); + switch(idx){ + case 0: t.assertEqual("a", elt); return true; + case 1: t.assertEqual("b", elt); return true; + case 2: t.assertEqual("c", elt); return true; + default: return false; + } + }) + ); + + t.assertTrue( + dojo.some(bar, function(elt, idx, array){ + switch(idx){ + case 0: t.assertEqual("a", elt); return true; + case 1: t.assertEqual("b", elt); return true; + case 2: t.assertEqual("c", elt); return false; + default: return true; + } + }) + ); + + t.assertFalse( + dojo.some(bar, function(elt, idx, array){ + return false; + }) + ); + }, + // FIXME: need to add scoping tests for all of these!!! + + function testFilter(t){ + var foo = ["foo", "bar", 10]; + + t.assertEqual(["foo"], + dojo.filter(foo, function(elt, idx, array){ + return idx < 1; + }) + ); + + t.assertEqual(["foo"], + dojo.filter(foo, function(elt, idx, array){ + return elt == "foo"; + }) + ); + + t.assertEqual([], + dojo.filter(foo, function(elt, idx, array){ + return false; + }) + ); + + t.assertEqual([10], + dojo.filter(foo, function(elt, idx, array){ + return typeof elt == "number"; + }) + ); + }, + + function testFilter_str(t){ + var foo = "thinger blah blah blah"; + t.assertEqual(["t", "h", "i"], + dojo.filter(foo, function(elt, idx, array){ + return idx < 3; + }) + ); + + t.assertEqual([], + dojo.filter(foo, function(elt, idx, array){ + return false; + }) + ); + }, + + function testMap(t){ + t.assertEqual([], + dojo.map([], function(){ return true; }) + ); + + t.assertEqual([1, 2, 3], + dojo.map(["cat", "dog", "mouse"], function(elt, idx, array){ + return idx+1; + }) + ); + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/connect.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/connect.js new file mode 100644 index 0000000..af5c392 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/connect.js @@ -0,0 +1,246 @@ +dojo.provide("dojo.tests._base.connect"); + +hub = function(){ +}; + +failures = 0; +bad = function(){ + failures++; +}; + +good = function(){ +}; + +// make 'iterations' connections to hub +// roughly half of which will be to 'good' and +// half to 'bad' +// all connections to 'bad' are disconnected +// test can then be performed on the values +// 'failures' and 'successes' +markAndSweepTest = function(iterations){ + var marked = []; + // connections + for(var i=0; i + + + + + + + + +

                            Memory leak tests

                            +

                            Monitor memory usage in IE6/7 (or any browser) before/after pressing buttons below

                            + + + + + +
                            + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/declare.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/declare.js new file mode 100644 index 0000000..ce2fd0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/declare.js @@ -0,0 +1,471 @@ +// FIXME: this test assumes the existence of the global object "tests" +tests= typeof tests=="undefined" ? {} : tests; + +define(["../..", "doh"], function(dojo, doh){ + doh.register("tests._base.declare", [ + function smokeTest(t){ + dojo.declare("tests._base.declare.tmp", null); + var tmp = new tests._base.declare.tmp(); + dojo.declare("testsFoo", null); + tmp = new testsFoo(); + }, + function smokeTest2(t){ + dojo.declare("tests._base.declare.foo", null, { + foo: "thonk" + }); + var tmp = new tests._base.declare.foo(); + t.is("thonk", tmp.foo); + + dojo.declare("testsFoo2", null, { + foo: "thonk" + }); + var tmp2 = new testsFoo2(); + t.is("thonk", tmp2.foo); + }, + function smokeTestWithCtor(t){ + dojo.declare("tests._base.declare.fooBar", null, { + constructor: function(){ + this.foo = "blah"; + }, + foo: "thonk" + }); + var tmp = new tests._base.declare.fooBar(); + t.is("blah", tmp.foo); + }, + function smokeTestCompactArgs(t){ + dojo.declare("tests._base.declare.fooBar2", null, { + foo: "thonk" + }); + var tmp = new tests._base.declare.fooBar2(); + t.is("thonk", tmp.foo); + }, + function subclass(t){ + dojo.declare("tests._base.declare.tmp3", null, { + foo: "thonk" + }); + dojo.declare("tests._base.declare.tmp4", tests._base.declare.tmp3); + var tmp = new tests._base.declare.tmp4(); + t.is("thonk", tmp.foo); + }, + function subclassWithCtor(t){ + dojo.declare("tests._base.declare.tmp5", null, { + constructor: function(){ + this.foo = "blah"; + }, + foo: "thonk" + }); + dojo.declare("tests._base.declare.tmp6", tests._base.declare.tmp5); + var tmp = new tests._base.declare.tmp6(); + t.is("blah", tmp.foo); + }, + function mixinSubclass(t){ + dojo.declare("tests._base.declare.tmp7", null, { + foo: "thonk" + }); + dojo.declare("tests._base.declare.tmp8", null, { + constructor: function(){ + this.foo = "blah"; + } + }); + var tmp = new tests._base.declare.tmp8(); + t.is("blah", tmp.foo); + dojo.declare("tests._base.declare.tmp9", + [ + tests._base.declare.tmp7, // prototypal + tests._base.declare.tmp8 // mixin + ]); + var tmp2 = new tests._base.declare.tmp9(); + t.is("blah", tmp2.foo); + }, + function superclassRef(t){ + dojo.declare("tests._base.declare.tmp10", null, { + foo: "thonk" + }); + dojo.declare("tests._base.declare.tmp11", tests._base.declare.tmp10, { + constructor: function(){ + this.foo = "blah"; + } + }); + var tmp = new tests._base.declare.tmp11(); + t.is("blah", tmp.foo); + t.is("thonk", tests._base.declare.tmp11.superclass.foo); + }, + function inheritedCall(t){ + var foo = "xyzzy"; + dojo.declare("tests._base.declare.tmp12", null, { + foo: "thonk", + bar: function(arg1, arg2){ + if(arg1){ + this.foo = arg1; + } + if(arg2){ + foo = arg2; + } + } + }); + dojo.declare("tests._base.declare.tmp13", tests._base.declare.tmp12, { + constructor: function(){ + this.foo = "blah"; + } + }); + var tmp = new tests._base.declare.tmp13(); + t.is("blah", tmp.foo); + t.is("xyzzy", foo); + tmp.bar("zot"); + t.is("zot", tmp.foo); + t.is("xyzzy", foo); + tmp.bar("trousers", "squiggle"); + t.is("trousers", tmp.foo); + t.is("squiggle", foo); + }, + function inheritedExplicitCall(t){ + var foo = "xyzzy"; + dojo.declare("tests._base.declare.tmp14", null, { + foo: "thonk", + bar: function(arg1, arg2){ + if(arg1){ + this.foo = arg1; + } + if(arg2){ + foo = arg2; + } + } + }); + dojo.declare("tests._base.declare.tmp15", tests._base.declare.tmp14, { + constructor: function(){ + this.foo = "blah"; + }, + bar: function(arg1, arg2){ + this.inherited("bar", arguments, [arg2, arg1]); + }, + baz: function(arg1, arg2){ + tests._base.declare.tmp15.superclass.bar.apply(this, arguments); + } + }); + var tmp = new tests._base.declare.tmp15(); + t.is("blah", tmp.foo); + t.is("xyzzy", foo); + tmp.baz("zot"); + t.is("zot", tmp.foo); + t.is("xyzzy", foo); + tmp.bar("trousers", "squiggle"); + t.is("squiggle", tmp.foo); + t.is("trousers", foo); + }, + function inheritedMixinCalls(t){ + dojo.declare("tests._base.declare.tmp16", null, { + foo: "", + bar: function(){ + this.foo += "tmp16"; + } + }); + dojo.declare("tests._base.declare.mixin16", null, { + bar: function(){ + this.inherited(arguments); + this.foo += ".mixin16"; + } + }); + dojo.declare("tests._base.declare.mixin17", tests._base.declare.mixin16, { + bar: function(){ + this.inherited(arguments); + this.foo += ".mixin17"; + } + }); + dojo.declare("tests._base.declare.tmp17", [tests._base.declare.tmp16, tests._base.declare.mixin17], { + bar: function(){ + this.inherited(arguments); + this.foo += ".tmp17"; + } + }); + var tmp = new tests._base.declare.tmp17(); + tmp.bar(); + t.is("tmp16.mixin16.mixin17.tmp17", tmp.foo); + }, + function mixinPreamble(t){ + var passed = false; + dojo.declare("tests._base.declare.tmp16", null); + new tests._base.declare.tmp16({ preamble: function(){ passed = true; } }); + t.t(passed); + }, + + function basicMixin(t){ + // testing if a plain Class-like object can be inherited + // by dojo.declare + var d = new doh.Deferred; + + var Thing = function(args){ + dojo.mixin(this, args); + }; + Thing.prototype.method = function(){ + t.t(true); + d.callback(true); + }; + + dojo.declare("Thinger", Thing, { + method: function(){ + this.inherited(arguments); + } + }); + + var it = new Thinger(); + it.method(); + + return d; + }, + + function mutatedMethods(t){ + // testing if methods can be mutated (within a reason) + dojo.declare("tests._base.declare.tmp18", null, { + constructor: function(){ this.clear(); }, + clear: function(){ this.flag = 0; }, + foo: function(){ ++this.flag; }, + bar: function(){ ++this.flag; }, + baz: function(){ ++this.flag; } + }); + dojo.declare("tests._base.declare.tmp19", tests._base.declare.tmp18, { + foo: function(){ ++this.flag; this.inherited(arguments); }, + bar: function(){ ++this.flag; this.inherited(arguments); }, + baz: function(){ ++this.flag; this.inherited(arguments); } + }); + var x = new tests._base.declare.tmp19(); + // smoke tests + t.is(0, x.flag); + x.foo(); + t.is(2, x.flag); + x.clear(); + t.is(0, x.flag); + var a = 0; + // dojo.connect() on a prototype method + dojo.connect(tests._base.declare.tmp19.prototype, "foo", function(){ a = 1; }); + x.foo(); + t.is(2, x.flag); + t.is(1, a); + x.clear(); + a = 0; + // extra chaining + var old = tests._base.declare.tmp19.prototype.bar; + tests._base.declare.tmp19.prototype.bar = function(){ + a = 1; + ++this.flag; + old.call(this); + }; + x.bar(); + t.is(3, x.flag); + t.is(1, a); + x.clear(); + a = 0; + // replacement + tests._base.declare.tmp19.prototype.baz = function(){ + a = 1; + ++this.flag; + this.inherited("baz", arguments); + }; + x.baz(); + t.is(2, x.flag); + t.is(1, a); + }, + + function modifiedInstance(t){ + var stack; + dojo.declare("tests._base.declare.tmp20", null, { + foo: function(){ stack.push(20); } + }); + dojo.declare("tests._base.declare.tmp21", null, { + foo: function(){ + this.inherited(arguments); + stack.push(21); + } + }); + dojo.declare("tests._base.declare.tmp22", tests._base.declare.tmp20, { + foo: function(){ + this.inherited(arguments); + stack.push(22); + } + }); + dojo.declare("tests._base.declare.tmp23", + [tests._base.declare.tmp20, tests._base.declare.tmp21], { + foo: function(){ + this.inherited(arguments); + stack.push(22); + } + }); + var a = new tests._base.declare.tmp22(); + var b = new tests._base.declare.tmp23(); + var c = { + foo: function(){ + this.inherited("foo", arguments); + stack.push("INSIDE C"); + } + }; + stack = []; + a.foo(); + t.is([20, 22], stack); + + stack = []; + b.foo(); + t.is([20, 21, 22], stack); + + dojo.mixin(a, c); + dojo.mixin(b, c); + + stack = []; + a.foo(); + t.is([20, 22, "INSIDE C"], stack); + + stack = []; + b.foo(); + t.is([20, 21, 22, "INSIDE C"], stack); + }, + + function duplicatedBase(t){ + var stack; + var A = dojo.declare(null, { + constructor: function(){ + stack.push(1); + } + }); + var B = dojo.declare([A, A, A], { + constructor: function(){ + stack.push(2); + } + }); + stack = []; + new A; + t.is([1], stack); + stack = []; + new B; + t.is([1, 2], stack); + }, + + function indirectlyDuplicatedBase(t){ + var stack; + var A = dojo.declare(null, { + constructor: function(){ + stack.push(1); + } + }); + var B = dojo.declare(A, { + constructor: function(){ + stack.push(2); + } + }); + var C = dojo.declare([A, B], { + constructor: function(){ + stack.push(3); + } + }); + var D = dojo.declare([B, A], { + constructor: function(){ + stack.push(4); + } + }); + stack = []; + new C; + t.is([1, 2, 3], stack); + stack = []; + new D; + t.is([1, 2, 4], stack); + }, + + function wrongMultipleInheritance(t){ + var stack; + var A = dojo.declare([], { + constructor: function(){ + stack.push(1); + } + }); + var B = dojo.declare([A], { + constructor: function(){ + stack.push(2); + } + }); + stack = []; + new A; + t.is([1], stack); + stack = []; + new B; + t.is([1, 2], stack); + }, + + function impossibleBases(t){ + var A = dojo.declare(null); + var B = dojo.declare(null); + var C = dojo.declare([A, B]); + var D = dojo.declare([B, A]); + + var flag = false; + try{ + var E = dojo.declare([C, D]); + }catch(e){ + flag = true; + } + t.t(flag); + }, + + function noNew(t){ + // all of the classes I create will use this as their + // pseudo-constructor function + function noNewConstructor(){ + this.noNew_Value = 'instance value'; + } + + var g = dojo.global; + // this value will remain unchanged if the code for + // calling a constructor without 'new' works correctly. + g.noNew_Value = 'global value'; + + // perform the actual test + function noNewTest(cls){ + // call class function without new + var obj = cls('instance value'); + t.is(obj.noNew_Value, 'instance value'); + t.is(g.noNew_Value, 'global value'); + } + + // There are three different functions that might be + // created by dojo.declare(), so I need to test all + // three. + + // 1. Class with manual-chained constructor + noNewTest( + dojo.declare(null, { + constructor: noNewConstructor, + '-chains-': {constructor: 'manual'} + }) + ); + + // 2. Class with no superclasses + var A = dojo.declare(null, { + constructor: noNewConstructor + }); + noNewTest(A); + + // 3. Class with at least one superclass + noNewTest(dojo.declare(A)); + + // Make sure multiple inheritance call works + var B = dojo.declare(A); + var C = dojo.declare(null, { ctest: function(){return true;} }); + var D = dojo.declare([A, B, C], { dtest: function(){return true;} }); + noNewTest(D); + // make sure I get the test functions from + // all superclasses + var d = D(); + t.t(d.ctest()); + t.t(d.dtest()); + + // Make sure call through an object works + var noNewClasses = { + D: D, + noNew_Value: 'unchanged' + }; + var obj = noNewClasses.D(); + t.is(obj.noNew_Value, 'instance value'); + t.is(noNewClasses.noNew_Value, 'unchanged'); + } + + // FIXME: there are still some permutations to test like: + // - ctor arguments + // - multi-level inheritance + L/R conflict checks + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/eventKeyPress.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventKeyPress.html new file mode 100644 index 0000000..18939f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventKeyPress.html @@ -0,0 +1,84 @@ + + + + + + + + + + + +

                            onkeypress and disconnect test

                            + +

                            This page tests the operation of keypress in a text input. Safari 3.1 changed its key model. +Look in the console for log message about getting keypress events.

                            + +

                            This page also tests that we can dojo.disconnect correctly. Clicking on the Disconnect buttons +should turn off the console logs associated with the matching connect calls.

                            + +

                            The input

                            + +

                            +

                            + +

                            +

                            + + +

                            +

                            + +

                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/eventKeyPressRobot.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventKeyPressRobot.html new file mode 100644 index 0000000..48e74a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventKeyPressRobot.html @@ -0,0 +1,167 @@ + + + + doh.robot keypress event tests + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/eventMouse.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventMouse.html new file mode 100644 index 0000000..91c448e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventMouse.html @@ -0,0 +1,114 @@ + + + + + mouse events test + + + + + + + +

                            mouse events test

                            + +
                            + outer +
                            + middle +
                            inner 1
                            +
                            between inner 1 and inner 2
                            +
                            inner 2
                            +
                            +
                            + +
                            after outer
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/eventMouseRobot.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventMouseRobot.html new file mode 100644 index 0000000..342694d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/eventMouseRobot.html @@ -0,0 +1,160 @@ + + + + doh.robot mouse events tests + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/fx.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/fx.html new file mode 100644 index 0000000..7361855 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/fx.html @@ -0,0 +1,559 @@ + + + testing Core FX + + + + + + +

                            testing Core FX

                            +
                            + + +
                            +
                            +

                            + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. + Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla + facilisi. Maecenas luctus venenatis nulla. In sit amet dui non mi + semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum + magna. Sed vitae risus. +

                            +

                            + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer + lorem nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean + id mi in massa bibendum suscipit. Integer eros. Nullam suscipit + mauris. In pellentesque. Mauris ipsum est, pharetra semper, + pharetra in, viverra quis, tellus. Etiam purus. Quisque egestas, + tortor ac cursus lacinia, felis leo adipiscing nisi, et rhoncus + elit dolor eget eros. Fusce ut quam. Suspendisse eleifend leo vitae + ligula. Nulla facilisi. Nulla rutrum, erat vitae lacinia dictum, + pede purus imperdiet lacus, ut semper velit ante id metus. Praesent + massa dolor, porttitor sed, pulvinar in, consequat ut, leo. Nullam + nec est. Aenean id risus blandit tortor pharetra congue. + Suspendisse pulvinar. +

                            +
                            + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/fx.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/fx.js new file mode 100644 index 0000000..6fd377c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/fx.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests._base.fx", require.toUrl("./fx.html"), 15000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/fx_delay.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/fx_delay.html new file mode 100644 index 0000000..c2a1cd9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/fx_delay.html @@ -0,0 +1,22 @@ + + + + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html.html new file mode 100644 index 0000000..b26906b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html.html @@ -0,0 +1,862 @@ + + + + + testing Core HTML/DOM/CSS/Style utils + + + + + + +

                            testing Core HTML/DOM/CSS/Style utils

                            +
                            + 100px square, abs +
                            +
                            + 100px square, abs, 10px margin +
                            +
                            + 100px square, abs, 10px margin, 10px padding +
                            +
                            + 100px square, abs, 10px padding +
                            +
                            + 100px square, abs, 10px left and top padding +
                            +
                            + 100px square, abs, 10px left and top padding, 10px bottom and right margin +
                            +
                            + 100px square, abs, 10px yellow border +
                            +
                            + 100px square, abs, 10px yellow border, 10px margin +
                            +
                            + 100px square, abs, 10px yellow border, 10px margin, 10px padding +
                            +
                            + 100px square, no positioning +
                            + + + + + + +
                            + +
                            +
                            +
                            +
                            + +
                            + + + + + + + + + + +
                            +
                            + + +
                            + +
                            + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/html.js new file mode 100644 index 0000000..bc95808 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html.js @@ -0,0 +1,13 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests._base.html", require.toUrl("./html.html"), 15000); + doh.register("tests._base.html_id", require.toUrl("./html_id.html"), 15000); + doh.register("tests._base.html_element", require.toUrl("./html_element.html"), 15000); + doh.register("tests._base.html_rtl", require.toUrl("./html_rtl.html"), 15000); + doh.register("tests._base.html_quirks", require.toUrl("./html_quirks.html"), 15000); + doh.register("tests._base.html_box", require.toUrl("./html_box.html"), 35000); + doh.register("tests._base.html_box_quirks", require.toUrl("./html_box_quirks.html"), 35000); + doh.register("tests._base.html_isBodyLtr", require.toUrl("./html_isBodyLtr.html"), 35000); + doh.register("tests._base.html_docScroll", require.toUrl("./html_docScroll.html"), 35000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_box.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_box.html new file mode 100644 index 0000000..6048e2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_box.html @@ -0,0 +1,204 @@ + + + + + test html.js Box utils + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_box_quirks.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_box_quirks.html new file mode 100644 index 0000000..656d3b5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_box_quirks.html @@ -0,0 +1,202 @@ + + + + test html.js Box utils + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_docScroll.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_docScroll.html new file mode 100644 index 0000000..effc2fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_docScroll.html @@ -0,0 +1,101 @@ + + + + testing Core _docScroll function + + + + +

                            testing Core _docScroll function

                            +
                            + +
                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_element.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_element.html new file mode 100644 index 0000000..0282d8a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_element.html @@ -0,0 +1,305 @@ + + + + + testing Core HTML/DOM/CSS/Style utils + + + + + +

                            testing Core DOM utils

                            + +
                            +
                              +
                            • first
                            • +
                            • last
                            • +
                            + +
                            + +

                            + +
                            +
                            + link +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_id.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_id.html new file mode 100644 index 0000000..474c2c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_id.html @@ -0,0 +1,92 @@ + + + + + testing Core HTML/DOM/CSS/Style utils: dojo.byId + + + + + +

                            testing Core DOM utils: dojo.byId

                            + +
                            + + +
                            + +
                            + +
                            + +
                            + +
                            + +
                            + +
                            + + +
                            + +
                            + + +
                            + Fish span + +
                            + +
                            + +
                            + +
                            + +
                            a start node
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_isBodyLtr.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_isBodyLtr.html new file mode 100644 index 0000000..79d8310 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_isBodyLtr.html @@ -0,0 +1,50 @@ + + + + testing Core _isBodyLtr function + + + + +

                            testing Core _isBodyLtr function

                            +
                            + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_quirks.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_quirks.html new file mode 100644 index 0000000..097cf98 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_quirks.html @@ -0,0 +1,328 @@ + + + + testing Core HTML/DOM/CSS/Style utils in quirks mode + + + + + + +

                            testing Core HTML/DOM/CSS/Style utils

                            +
                            + 100px square, abs +
                            +
                            + 100px square, abs, 10px margin +
                            +
                            + 100px square, abs, 10px margin, 10px padding +
                            +
                            + 100px square, abs, 10px padding +
                            +
                            + 100px square, abs, 10px left and top padding +
                            +
                            + 100px square, abs, 10px left and top padding, 10px bottom and right margin +
                            +
                            + 100px square, abs, 10px yellow border +
                            +
                            + 100px square, abs, 10px yellow border, 10px margin +
                            +
                            + 100px square, abs, 10px yellow border, 10px margin, 10px padding +
                            +
                            + 100px square, no positioning +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/html_rtl.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_rtl.html new file mode 100644 index 0000000..a33e8b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/html_rtl.html @@ -0,0 +1,158 @@ + + + + testing Core HTML/DOM/CSS/Style utils + + + + + + +

                            testing Core HTML/DOM/CSS/Style utils

                            +
                            + 100px rect, abs, + mouse point is at top-left after the test "eventClientXY" +
                            +
                            show vertical scrollbar
                            +
                            show horizonal scrollbar
                            +
                            + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/json.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/json.js new file mode 100644 index 0000000..eff0365 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/json.js @@ -0,0 +1,60 @@ +dojo.provide("dojo.tests._base.json"); + +tests.register("tests._base.json", + [ + //Not testing dojo.toJson() on its own since Rhino will output the object properties in a different order. + //Still valid json, but just in a different order than the source string. + + // take a json-compatible object, convert it to a json string, then put it back into json. + function toAndFromJson(t){ + var testObj = {a:"a", b:1, c:"c", d:"d", e:{e1:"e1", e2:2}, f:[1,2,3], g:"g",h:{h1:{h2:{h3:"h3"}}},i:[[0,1,2],[3],[4]]}; + + var mirrorObj = dojo.fromJson(dojo.toJson(testObj)); + t.assertEqual("a", mirrorObj.a); + t.assertEqual(1, mirrorObj.b); + t.assertEqual("c", mirrorObj.c); + t.assertEqual("d", mirrorObj.d); + t.assertEqual("e1", mirrorObj.e.e1); + t.assertEqual(2, mirrorObj.e.e2); + t.assertEqual(1, mirrorObj.f[0]); + t.assertEqual(2, mirrorObj.f[1]); + t.assertEqual(3, mirrorObj.f[2]); + t.assertEqual("g", mirrorObj.g); + t.assertEqual("h3", mirrorObj.h.h1.h2.h3); + var badJson; + try{ + badJson = dojo.fromJson("bad json"); // this should throw an exception, and not set badJson + }catch(e){ + } + t.assertEqual(undefined,badJson); + t.assertEqual(3, mirrorObj.i[0].length); + t.assertEqual(1, mirrorObj.i[1].length); + t.assertEqual(1, mirrorObj.i[2].length); + }, + // tricky json, using our JSON extensions + function dojoExtendedJson(t){ + var testObj = {ex1:{b:3, json:function(){return "json" + this.b}}, ex2: {b:4, __json__:function(){return "__json__" + this.b}}}; + var testStr = dojo.toJson(testObj); + t.assertEqual('{"ex1":"json3","ex2":"__json__4"}', testStr); + }, + // pretty print + function prettyPrintJson(t){ + if(typeof JSON == "undefined"){ // only test our JSON stringifier + var testObj = {array:[1,2,{a:4,b:4}]}; + var testStr = dojo.toJson(testObj, true); + t.assertEqual('{\n\t\"array\": [\n\t\t1,\n\t\t2,\n\t\t{\n\t\t\t\"a\": 4,\n\t\t\t\"b\": 4\n\t\t}\n\t]\n}', testStr); + } + }, + // have to verify that we still support any JS expression + function evalJson(t){ + var testStr = '{func: function(){}, number: Infinity}'; + var testObj = dojo.fromJson(testStr); + t.is("function", typeof testObj.func); + t.is("number", typeof testObj.number); + }, + function toJsonStringObject(t){ + t.is('"hello"', dojo.toJson(new String("hello"))); + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/lang.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/lang.js new file mode 100644 index 0000000..1d6288b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/lang.js @@ -0,0 +1,279 @@ +define(["dojo", "doh"], function(dojo, doh){ + + doh.register("tests._base.lang", [ + function mixin(t){ + t.assertEqual("object", typeof dojo.mixin()); + t.assertEqual("object", typeof dojo.mixin(undefined)); + t.assertEqual("object", typeof dojo.mixin(null)); + var src = { + foo: function(){ + t.debug("foo"); + }, + bar: "bar" + }; + var dest = {}; + dojo.mixin(dest, src); + t.assertEqual("function", typeof dest["foo"]); + t.assertEqual("string", typeof dest["bar"]); + }, + + function extend(t){ + var src = { + foo: function(){ + t.debug("foo"); + }, + bar: "bar" + }; + function dest(){} + dojo.extend(dest, src); + var test = new dest(); + t.assertEqual("function", typeof test["foo"]); + t.assertEqual("string", typeof test["bar"]); + }, + + function isFunction(t){ + t.assertTrue(dojo.isFunction(new Function())); + t.assertTrue(dojo.isFunction(isFunction)); + if(dojo.isBrowser){ // test the Safari workaround for NodeList + t.assertFalse(dojo.isFunction(dojo.doc.getElementsByName("html"))); + t.assertFalse(dojo.isFunction(dojo.doc.createElement("object"))); + } + }, + + function isObject(t){ + t.assertFalse(dojo.isObject(true)); + t.assertFalse(dojo.isObject(false)); + t.assertFalse(dojo.isObject("foo")); + t.assertTrue(dojo.isObject(new String("foo"))); + t.assertTrue(dojo.isObject(null)); + t.assertTrue(dojo.isObject({})); + t.assertTrue(dojo.isObject([])); + t.assertTrue(dojo.isObject(new Array())); + }, + + function isArray(t){ + t.assertTrue(dojo.isArray([])); + t.assertTrue(dojo.isArray(new Array())); + t.assertFalse(dojo.isArray({})); + }, + + function isArrayLike(t){ + t.assertFalse(dojo.isArrayLike("thinger")); + t.assertTrue(dojo.isArrayLike(new Array())); + t.assertFalse(dojo.isArrayLike({})); + t.assertTrue(dojo.isArrayLike(arguments)); + }, + + function isString(t){ + t.assertFalse(dojo.isString(true)); + t.assertFalse(dojo.isString(false)); + t.assertTrue(dojo.isString("foo")); + t.assertTrue(dojo.isString(new String("foo"))); + t.assertFalse(dojo.isString(null)); + t.assertFalse(dojo.isString({})); + t.assertFalse(dojo.isString([])); + }, + + function partial(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(arg1, arg2){ + return [this.foo, arg1, arg2]; + } + + var st1 = dojo.partial(thinger); + t.assertEqual("bar", st1.call(scope)[0]); + t.assertEqual(undefined, st1()[0]); + var st2 = dojo.partial(thinger, "foo", "bar"); + t.assertEqual("bar", st2()[2]); + var st3 = dojo.partial(thinger, "foo", "bar"); + }, + + function nestedPartial(t){ + function thinger(arg1, arg2){ + return [arg1, arg2]; + } + + var st1 = dojo.partial(thinger, "foo"); + t.assertEqual(undefined, st1()[1]); + t.assertEqual("bar", st1("bar")[1]); + + // partials can accumulate + var st2 = dojo.partial(st1, "thud"); + t.assertEqual("foo", st2()[0]); + t.assertEqual("thud", st2()[1]); + }, + + function hitch(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(){ + return [this.foo, arguments.length]; + } + + var st1 = dojo.hitch(scope, thinger); + t.assertEqual("bar", st1()[0]); + t.assertEqual(0, st1()[1]); + + var st2 = dojo.hitch(scope2, thinger); + t.assertEqual("baz", st2()[0]); + t.assertEqual(0, st1()[1]); + t.assertEqual(1, st1("blah")[1]); + + // st2 should be "scope proof" + t.assertEqual("baz", st2.call(scope)[0]); + }, + + function hitchWithArgs(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(){ + return [this.foo, arguments.length]; + } + + var st1 = dojo.hitch(scope, thinger, "foo", "bar"); + t.assertEqual("bar", st1()[0]); + t.assertEqual(2, st1()[1]); + var st2 = dojo.hitch(scope2, thinger, "foo", "bar"); + t.assertEqual("baz", st2()[0]); + t.assertEqual(2, st2()[1]); + }, + + function hitchAsPartial(t){ + var scope = { foo: "bar" }; + var scope2 = { foo: "baz" }; + function thinger(arg1, arg2){ + return [this.foo, arg1, arg2]; + } + + var st1 = dojo.hitch(null, thinger); + t.assertEqual("bar", st1.call(scope)[0]); + t.assertEqual(undefined, st1()[0]); + var st2 = dojo.hitch(null, thinger, "foo", "bar"); + t.assertEqual("bar", st2()[2]); + var st3 = dojo.hitch(null, thinger, "foo", "bar"); + }, + + function _toArray(t){ + var obj1 = [ 'foo', 'bar', 'spam', 'ham' ]; + + function thinger(){ + return dojo._toArray(arguments); + } + var obj2 = thinger.apply(this, obj1); + t.assertEqual(obj1[0], obj2[0]); + + if(dojo.isBrowser){ + //test DomCollection + var div = document.createElement('div'); + div.innerHTML="linktext"; + var r=dojo._toArray(div.childNodes); + t.is(2,r.length); + } + }, + + function clone(t) { + var obj1 = { + foo: 'bar', + answer: 42, + jan102007: new Date(2007, 0, 10), + baz: { + a: null, + b: [1, "b", 2.3, true, false], + c: { + d: undefined, + e: 99, + f: function(){ console.log(42); return 42; }, + g: /\d+/gm + } + }, + toString: function(){ return "meow"; } + }; + var obj2 = dojo.clone(obj1); + t.assertEqual(obj1.foo, obj2.foo); + t.assertEqual(obj1.answer, obj2.answer); + t.assertEqual(obj1.jan102007, obj2.jan102007); + t.assertEqual(obj1.baz.a, obj2.baz.a); + for(var i = 0; i < obj1.baz.b.length; ++i){ + t.assertEqual(obj1.baz.b[i], obj2.baz.b[i]); + } + t.assertEqual(obj1.baz.c.d, obj2.baz.c.d); + t.assertEqual(obj1.baz.c.e, obj2.baz.c.e); + t.assertEqual(obj1.baz.c.f, obj2.baz.c.f); + t.assertEqual(obj1.baz.c.f(), obj2.baz.c.f()); + t.assertEqual(obj1.baz.c.g, obj2.baz.c.g); + t.assertEqual(obj1.toString, obj2.toString); + t.assertEqual(obj1.toString(), obj2.toString()); + }, + + function delegate(t){ + var a = { + x: 1, + y: function(){ return 2; }, + z1: 99 + }; + var b = { + x: 11, + y: function(){ return 12; }, + z2: 33, + toString: function(){ return "bark!"; }, + toLocaleString: function(){ return "le bark-s!"; } + }; + t.is(1, a.x); + t.is(2, a.y()); + t.is(99, a.z1); + var c = dojo.delegate(a, b); + t.is(1, a.x); + t.is(2, a.y()); + t.is(99, a.z1); + t.is(11, c.x); + t.is(12, c.y()); + t.is("bark!", c.toString()); + t.is("le bark-s!", c.toLocaleString()); + t.is(99, c.z1); + t.is(33, c.z2); + }, + + function replace(t){ + var s1 = dojo.replace("Hello, {name.first} {name.last} AKA {nick}!", + { + nick: "Bob", + name: { + first: "Robert", + middle: "X", + last: "Cringely" + } + }); + t.is("Hello, Robert Cringely AKA Bob!", s1); + + var s2 = dojo.replace("Hello, {0} {2}!", ["Robert", "X", "Cringely"]); + t.is("Hello, Robert Cringely!", s2); + + function sum(a){ + var t = 0; + dojo.forEach(a, function(x){ t += x; }); + return t; + } + var s3 = dojo.replace( + "{count} payments averaging {avg} USD per payment.", + dojo.hitch( + { payments: [11, 16, 12] }, + function(_, key){ + switch(key){ + case "count": return this.payments.length; + case "min": return Math.min.apply(Math, this.payments); + case "max": return Math.max.apply(Math, this.payments); + case "sum": return sum(this.payments); + case "avg": return sum(this.payments) / this.payments.length; + } + return ""; + } + )); + t.is("3 payments averaging 13 USD per payment.", s3); + + var s4 = dojo.replace("Hello, ${0} ${2}!", ["Robert", "X", "Cringely"], /\$\{([^\}]+)\}/g); + t.is("Hello, Robert Cringely!", s4); + } + ] + ); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader.js new file mode 100644 index 0000000..3a148cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader.js @@ -0,0 +1,135 @@ +define([ + "dojo", + "doh", + "require", + "./loader/core", + "dojo/has!dojo-amd-factory-scan?./loader/modules", + "./loader/moduleIds", + "./loader/bootstrap"], function(dojo, doh, require){ + if(doh.isBrowser){ + doh.register("tests._base.loader.asyncWithDojoRequire", require.toUrl("./loader/asyncWithDojoRequire.html")); + + doh.register("tests._base.loader.config?dojoConfig-djConfig-require", require.toUrl("./loader/config.html")+"?dojoConfig-djConfig-require"); + doh.register("tests._base.loader.config?dojoConfig-require", require.toUrl("./loader/config.html")+"?dojoConfig-require"); + doh.register("tests._base.loader.config?dojoConfig-djConfig", require.toUrl("./loader/config.html")+"?dojoConfig-djConfig"); + doh.register("tests._base.loader.config?dojoConfig", require.toUrl("./loader/config.html")+"?dojoConfig"); + doh.register("tests._base.loader.config?djConfig-require", require.toUrl("./loader/config.html")+"?djConfig-require"); + doh.register("tests._base.loader.config?djConfig", require.toUrl("./loader/config.html")+"?djConfig"); + doh.register("tests._base.loader.config?require", require.toUrl("./loader/config.html")+"?require"); + doh.register("tests._base.loader.config?configApi.html", require.toUrl("./loader/configApi.html")); + doh.register("tests._base.loader.config?config-sniff.html", require.toUrl("./loader/config-sniff.html")); + doh.register("tests._base.loader.config?config-sniff-djConfig.html", require.toUrl("./loader/config-sniff-djConfig.html")); + doh.register("tests._base.loader.config?config-has.html", require.toUrl("./loader/config-has.html")); + //TODO: doh.register("tests._base.loader.cdn-load", require.toUrl("./loader/cdnTest.html")); + doh.register("tests._base.loader.loader-declareStepsOnProvide", require.toUrl("./loader/declareStepsOnProvide.html")); + + doh.register("tests._base.loader.publish-require-result", require.toUrl("./loader/publishRequireResult.html")); + doh.register("tests._base.loader.no-publish-require-result", require.toUrl("./loader/publishRequireResult.html")+"?do-not-publish"); + + doh.register("tests._base.loader.top-level-module-by-paths", require.toUrl("./loader/paths.html")); + doh.register("tests._base.loader.xdomin-sync-1", require.toUrl("./loader/xdomain/xdomain.html"), {async:0, variation:1}); + doh.register("tests._base.loader.xdomin-sync-2", require.toUrl("./loader/xdomain/xdomain.html"), {async:0, variation:2}); + doh.register("tests._base.loader.xdomin-async-1", require.toUrl("./loader/xdomain/xdomain.html"), {async:"legacyAsync", variation:1}); + doh.register("tests._base.loader.xdomin-async-2", require.toUrl("./loader/xdomain/xdomain.html"), {async:"legacyAsync", variation:2}); + // the requirejs test suite. The following tests are not used: + // + // * baseUrl: dojo's baseUrl is different--it defaults to the dojo tree. See TODO + // * layers: dojo's build system does things differently + // * afterload: is not constructed in a way that works with doh + // * plugin/sync: this test seems like it will always fail in async mode; TODO check with James + // + doh.register("tests._base.loader.requirejs-simple-sync", require.toUrl("./loader/requirejs/simple.html"), {async:0}); + doh.register("tests._base.loader.requirejs-simple-async", require.toUrl("./loader/requirejs/simple.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-config-sync", require.toUrl("./loader/requirejs/config.html"), {async:0}); + doh.register("tests._base.loader.requirejs-config-async", require.toUrl("./loader/requirejs/config.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-dataMain-sync", require.toUrl("./loader/requirejs/dataMain.html"), {async:0}); + doh.register("tests._base.loader.requirejs-dataMain-async", require.toUrl("./loader/requirejs/dataMain.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-simple-nohead-sync", require.toUrl("./loader/requirejs/simple-nohead.html"), {async:0}); + doh.register("tests._base.loader.requirejs-simple-nohead-async", require.toUrl("./loader/requirejs/simple-nohead.html"), {async:1}); + + function compactPath(path){ + var + result= [], + segment, lastSegment; + path= path.split("/"); + while(path.length){ + segment= path.shift(); + if(segment==".." && result.length && lastSegment!=".."){ + result.pop(); + }else if(segment!="."){ + result.push(lastSegment= segment); + } // else ignore "." + } + return result.join("/"); + } + var + qstart= location.href.indexOf(location.search), + root= qstart!=-1 ? location.href.substring(0, qstart) : location.href, + setup= compactPath(root + "/../" + require.toUrl("./loader/requirejs/requirejs-setup.js")), + baseUrl= setup.substring(0, setup.length - "/requirejs-setup.js".length); + if(dojo.isIE>6){ + doh.register("tests._base.loader.requirejs-simple-badbase-sync", require.toUrl("./loader/requirejs/simple-badbase.html"), { + async:0, + baseUrl:baseUrl, + setup:setup, + dojo:compactPath(root + "/../" + require.toUrl("../../dojo.js")) + }); + } + doh.register("tests._base.loader.requirejs-simple-badbase-async", require.toUrl("./loader/requirejs/simple-badbase.html"), { + async:1, + baseUrl:baseUrl, + setup:setup, + dojo:compactPath(root + "/../" + require.toUrl("../../dojo.js")) + }); + + //doh.register("tests._base.loader.requirejs-circular-sync", require.toUrl("./loader/requirejs/circular.html"), {async:0}); + doh.register("tests._base.loader.requirejs-circular-async", require.toUrl("./loader/requirejs/circular.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-depoverlap-sync", require.toUrl("./loader/requirejs/depoverlap.html"), {async:0}); + doh.register("tests._base.loader.requirejs-depoverlap-async", require.toUrl("./loader/requirejs/depoverlap.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-urlfetch-sync", require.toUrl("./loader/requirejs/urlfetch/urlfetch.html"), {async:0}); + doh.register("tests._base.loader.requirejs-urlfetch-async", require.toUrl("./loader/requirejs/urlfetch/urlfetch.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-uniques-sync", require.toUrl("./loader/requirejs/uniques/uniques.html"), {async:0}); + doh.register("tests._base.loader.requirejs-uniques-async", require.toUrl("./loader/requirejs/uniques/uniques.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-i18nlocaleunknown-sync", require.toUrl("./loader/requirejs/i18n/i18n.html")+"?bundle=i18n!nls/fr-fr/colors", {async:0}); + doh.register("tests._base.loader.requirejs-i18nlocaleunknown-async", require.toUrl("./loader/requirejs/i18n/i18n.html")+"?bundle=i18n!nls/fr-fr/colors", {async:1}); + + doh.register("tests._base.loader.requirejs-i18n-sync", require.toUrl("./loader/requirejs/i18n/i18n.html"), {async:0}); + doh.register("tests._base.loader.requirejs-i18n-async", require.toUrl("./loader/requirejs/i18n/i18n.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-i18nlocale-sync", require.toUrl("./loader/requirejs/i18n/i18n.html")+"?locale=en-us-surfer", {async:0}); + doh.register("tests._base.loader.requirejs-i18nlocale-async", require.toUrl("./loader/requirejs/i18n/i18n.html")+"?locale=en-us-surfer", {async:1}); + + doh.register("tests._base.loader.requirejs-i18nbundle-sync", require.toUrl("./loader/requirejs/i18n/i18n.html")+"?bundle=i18n!nls/en-us-surfer/colors", {async:0}); + doh.register("tests._base.loader.requirejs-i18nbundle-async", require.toUrl("./loader/requirejs/i18n/i18n.html")+"?bundle=i18n!nls/en-us-surfer/colors", {async:1}); + + doh.register("tests._base.loader.requirejs-i18ncommon-sync", require.toUrl("./loader/requirejs/i18n/common.html"), {async:0}); + doh.register("tests._base.loader.requirejs-i18ncommon-async", require.toUrl("./loader/requirejs/i18n/common.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-i18ncommonlocale-sync", require.toUrl("./loader/requirejs/i18n/common.html")+"?locale=en-us-surfer", {async:0}); + doh.register("tests._base.loader.requirejs-i18ncommonlocale-async", require.toUrl("./loader/requirejs/i18n/common.html")+"?locale=en-us-surfer", {async:1}); + + doh.register("tests._base.loader.requirejs-paths-sync", require.toUrl("./loader/requirejs/paths/paths.html"), {async:0}); + doh.register("tests._base.loader.requirejs-paths-async", require.toUrl("./loader/requirejs/paths/paths.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-relative-sync", require.toUrl("./loader/requirejs/relative/relative.html"), {async:0}); + doh.register("tests._base.loader.requirejs-relative-async", require.toUrl("./loader/requirejs/relative/relative.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-text-sync", require.toUrl("./loader/requirejs/text/text.html"), {async:0}); + doh.register("tests._base.loader.requirejs-text-async", require.toUrl("./loader/requirejs/text/text.html"), {async:1}); + doh.register("tests._base.loader.requirejs-text-sync", require.toUrl("./loader/requirejs/text/text.html"), {async:0, aliasTest:1}); + doh.register("tests._base.loader.requirejs-text-async", require.toUrl("./loader/requirejs/text/text.html"), {async:1, aliasTest:1}); + + doh.register("tests._base.loader.requirejs-textOnly-sync", require.toUrl("./loader/requirejs/text/textOnly.html"), {async:0}); + doh.register("tests._base.loader.requirejs-textOnly-async", require.toUrl("./loader/requirejs/text/textOnly.html"), {async:1}); + + doh.register("tests._base.loader.requirejs-exports-sync", require.toUrl("./loader/requirejs/exports/exports.html"), {async:0}); + doh.register("tests._base.loader.requirejs-exports-async", require.toUrl("./loader/requirejs/exports/exports.html"), {async:1}); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/8976.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/8976.html new file mode 100644 index 0000000..0706ebf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/8976.html @@ -0,0 +1,35 @@ + + + + + +

                            Testcase for #8976

                            +

                            Test case for #8976, an async load issue with Firefox even + though the loading should be synchronous. Click the button then check console log for output of test. If "count = 1, worked" + shows up instead of an error, then the test is successful. +

                            + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/a.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/a.js new file mode 100644 index 0000000..0ee2372 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/a.js @@ -0,0 +1,3 @@ +define({ + number: 42 +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/addLoadEvents.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/addLoadEvents.html new file mode 100644 index 0000000..f9d4d23 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/addLoadEvents.html @@ -0,0 +1,45 @@ + + + + Testing dojo.addOnLoad(), dojo.addOnUnload() and dojo.addOnWindowUnload() + + + + +

                            Testing dojo.addOnLoad(), dojo.addOnUnload() and dojo.addOnWindowUnload()

                            + +

                            This page has registers a function with dojo.addOnLoad(), dojo.addOnUnload() and dojo.addOnWindowUnload.

                            + +

                            dojo.addOnLoad(): You should see 3 console messages about addOnLoad working.

                            + +

                            dojo.addOnUnload(): You should see an alert if the page is reloaded, or if you navigate to a + different web page ("addOnUnload works").

                            + +

                            dojo.addOnWindowUnload(): You should see an alert if the page is reloaded, or if you navigate to a + different web page ("addOnWindowUnload works").

                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/afterOnLoad.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/afterOnLoad.html new file mode 100644 index 0000000..4a83c33 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/afterOnLoad.html @@ -0,0 +1,79 @@ + + + + Testing afterOnLoad + + + + + + + + +

                            Testing afterOnLoad

                            + +

                            This page tests loading dojo after the page is loaded.

                            + +

                            Add the query string "?async" to the URL to test asynchronous operation; an empty query string results in + synchronous loading.

                            + +

                            When the window.onload fires, the dojo script tag will be added to the DOM + and configured to fire the onload callbacks. If everything works, you should + see a Calendar below.

                            + +

                            + +

                            + +

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule.js new file mode 100644 index 0000000..93ae6eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("defining-dojo.tests._base.loader.amdModule"); +define(["./amdModuleDep"], function(){ + dojoCdnTestLog.push("factory-dojo.tests._base.loader.amdModule"); + return {status:"OK"}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule1.js new file mode 100644 index 0000000..80fe367 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule1.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("defining-dojo.tests._base.loader.amdModule1"); +define(["./amdModuleDep1"], function(){ + dojoCdnTestLog.push("factory-dojo.tests._base.loader.amdModule1"); + return {status:"OK"}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule2.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule2.js new file mode 100644 index 0000000..696e246 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModule2.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("defining-dojo.tests._base.loader.amdModule2"); +define(["./amdModuleDep"], function(){ + dojoCdnTestLog.push("factory-dojo.tests._base.loader.amdModule2"); + return {status:"OK"}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep.js new file mode 100644 index 0000000..ed1b33c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("defining-dojo.tests._base.loader.amdModuleDep"); +define([], function(){ + dojoCdnTestLog.push("factory-dojo.tests._base.loader.amdModuleDep"); + return {status:"OK"}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep1.js new file mode 100644 index 0000000..14ec771 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep1.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("defining-dojo.tests._base.loader.amdModuleDep1"); +define([], function(){ + dojoCdnTestLog.push("factory-dojo.tests._base.loader.amdModuleDep1"); + return {status:"OK"}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep2.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep2.js new file mode 100644 index 0000000..b19c279 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/amdModuleDep2.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("defining-dojo.tests._base.loader.amdModuleDep2"); +define([], function(){ + dojoCdnTestLog.push("factory-dojo.tests._base.loader.amdModuleDep2"); + return {status:"OK"}; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/asyncWithDojoRequire.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/asyncWithDojoRequire.html new file mode 100644 index 0000000..1a36904 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/asyncWithDojoRequire.html @@ -0,0 +1,103 @@ + + + + loader-only + + + + + +

                            Description: Async Dojo loading 1.6 module

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/bootstrap.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/bootstrap.js new file mode 100644 index 0000000..616554c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/bootstrap.js @@ -0,0 +1,157 @@ +define(["dojo", "doh", "../../../_base/sniff", "require"], function(dojo, doh, has, require){ + doh.register("tests._base._loader.bootstrap", [ + function hasConsole(t){ + t.assertTrue("console" in dojo.global); + t.assertTrue("assert" in console); + t.assertEqual("function", typeof console.assert); + }, + + function getText(t){ + if(require.getText){ + var text = require.getText(require.toUrl("dojo/tests/_base/loader/getText.txt")).replace(/\n/g, ""); + t.assertEqual("dojo._getText() test data", text); + if(dojo._getText){ + text = dojo._getText(require.toUrl("dojo/tests/_base/loader/getText.txt")).replace(/\n/g, ""); + t.assertEqual("dojo._getText() test data", text); + } + } + }, + + { + name: "getObject", + setUp: function(){ + //Set an object in global scope. + dojo.global.globalValue = { + color: "blue", + size: 20 + }; + + //Set up an object in a specific scope. + this.foo = { + bar: { + color: "red", + size: 100 + } + }; + }, + runTest: function(t){ + //Test for existing object using global as root path. + var globalVar = dojo.getObject("globalValue"); + t.is("object", (typeof globalVar)); + t.assertEqual("blue", globalVar.color); + t.assertEqual(20, globalVar.size); + t.assertEqual("blue", dojo.getObject("globalValue.color")); + + //Test for non-existent object using global as root path. + //Then create it. + t.assertFalse(dojo.getObject("something.thatisNew")); + t.assertTrue(typeof(dojo.getObject("something.thatisNew", true)) == "object"); + + //Test for existing object using another object as root path. + var scopedVar = dojo.getObject("foo.bar", false, this); + t.assertTrue(typeof(scopedVar) == "object"); + t.assertEqual("red", scopedVar.color); + t.assertEqual(100, scopedVar.size); + t.assertEqual("red", dojo.getObject("foo.bar.color", true, this)); + + //Test for existing object using another object as root path. + //Then create it. + t.assertFalse(dojo.getObject("something.thatisNew", false, this)); + t.assertTrue(typeof(dojo.getObject("something.thatisNew", true, this)) == "object"); + }, + tearDown: function(){ + //Clean up global object that should not exist if + //the test is re-run. + try{ + delete dojo.global.something; + delete this.something; + }catch(e){} + } + }, + + { + name: "exists", + setUp: function(){ + this.foo = { + bar: {}, + baz: 0, + bam: false, + bal: "", + ban: null + }; + }, + runTest: function(t){ + t.assertTrue(dojo.exists("foo.bar", this)); + t.assertFalse(dojo.exists("foo.bar")); + t.assertTrue(dojo.exists("foo.baz", this)); + t.assertTrue(dojo.exists("foo.bal", this)); + t.assertTrue(dojo.exists("foo.ban", this)); + t.assertTrue(dojo.exists("foo.bam", this)); + t.assertFalse(dojo.exists("foo.bat", this)); + t.assertTrue(dojo.exists("a.b", { a:{ b:0 }})); + t.assertFalse(dojo.exists("foo.bar.baz.bam.bap", this)); + } + }, + + function evalWorks(t){ + t.assertTrue(dojo.eval("(true)")); + t.assertFalse(dojo.eval("(false)")); + if(!has("ie")){ + // eval truly executes in global scope for non IE + t.is(window.rawld, undefined); + dojo.eval("var rawld = 3.14;"); + t.assertEqual(rawld, 3.14); + t.assertEqual(window.rawld, 3.14); + window.rawld = undefined; + }else{ + // example of how to compensate for IE + t.is(window.rawld, undefined); + dojo.eval("window.rawld = 3.14;"); + t.assertEqual(rawld, 3.14); + t.assertEqual(window.rawld, 3.14); + window.rawld = undefined; + } + }, + + function _mixin(t){ + var a = { + x: 1, + y: function(){ return 2; }, + z1: 99, + w: 2, + v: undefined + }; + var b = { + x: 11, + y: function(){ return 12; }, + z2: 33, + toString: function(){ return "bark!"; }, + toLocaleString: function(){ return "le bark-s!"; }, + w: undefined, + v: undefined, + u: undefined + }; + t.is(1, a.x); + t.is(2, a.y()); + t.is(99, a.z1); + t.t("w" in a); + t.is(2, a.w); + t.t("v" in a); + t.is(undefined, a.v); + t.f("u" in a); + dojo._mixin(a, b); + t.is(11, a.x); + t.is(12, a.y()); + t.is("bark!", a.toString()); + t.is("le bark-s!", a.toLocaleString()); + t.is(99, a.z1); + t.is(33, a.z2); + t.t("w" in a); + t.is(undefined, a.w); + t.t("v" in a); + t.is(undefined, a.v); + t.t("u" in a); + t.is(undefined, a.u); + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/cdnTest.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/cdnTest.html new file mode 100644 index 0000000..5a5abe8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/cdnTest.html @@ -0,0 +1,74 @@ + + + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/cdnTest.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/cdnTest.js new file mode 100644 index 0000000..706cdfe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/cdnTest.js @@ -0,0 +1,39 @@ +dojo.loadInit(function(){ + // this function is evaluated first and only once + dojoCdnTestLog.push("loadInit in cdnTest"); + // define a global variable + dojoCdnTest= 1; +}); + +dojoCdnTestLog.push("in-dojo.tests._base.loader.cdnTest"); +dojo.provide("dojo.tests._base.loader.cdnTest"); +dojo.provide("dojo.tests._base.loader.cdnTest2"); +dojo.tests._base.loader.cdnTest.status= "OK"; +dojo.tests._base.loader.cdnTest2.status= "OK"; +dojo.require("dojo.tests._base.loader.syncModule"); +dojo.require("dojo.tests._base.loader.amdModule"); +dojo.requireLocalization("dojo.tests._base.loader", "syncBundle", "ab-cd-ef"); +dojo.requireLocalization("dojo.tests._base.loader", "amdBundle", "ab-cd-ef"); + +(function(){ +var t1= dojo.i18n.getLocalization("dojo.tests._base.loader", "syncBundle"); +var t2= dojo.i18n.getLocalization("dojo.tests._base.loader", "syncBundle", "ab-cd-ef"); +var t3= dojo.i18n.getLocalization("dojo.tests._base.loader", "amdBundle"); +var t4= dojo.i18n.getLocalization("dojo.tests._base.loader", "amdBundle", "ab-cd-ef"); + +require(["doh"], function(doh){ + doh.register("test-i18n-inline", function(t){ + t.is(t1.syncBundle, "syncBundle"); + t.is(t2.syncBundle, "syncBundle-ab-cd-ef"); + t.is(t3.amdBundle, "amdBundle"); + t.is(t4.amdBundle, "amdBundle-ab-cd-ef"); + }); +}); +})(); + + +dojo.requireIf(dojoCdnTest==1, "dojo.tests._base.loader.syncModule1"); +dojo.requireAfterIf(dojoCdnTest==1, "dojo.tests._base.loader.amdModule1"); +dojo.requireIf(dojoCdnTest==2, "dojo.tests._base.loader.syncModule2"); +dojo.requireAfterIf(dojoCdnTest==2, "dojo.tests._base.loader.amdModule2"); +dojoCdnTestLog.push("out-dojo.tests._base.loader.cdnTest"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-has.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-has.html new file mode 100644 index 0000000..179eada --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-has.html @@ -0,0 +1,59 @@ + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-sniff-djConfig.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-sniff-djConfig.html new file mode 100644 index 0000000..b99a745 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-sniff-djConfig.html @@ -0,0 +1,50 @@ + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-sniff.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-sniff.html new file mode 100644 index 0000000..06b1244 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config-sniff.html @@ -0,0 +1,48 @@ + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config.html new file mode 100644 index 0000000..d4fae3b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/config.html @@ -0,0 +1,156 @@ + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/configApi.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/configApi.html new file mode 100644 index 0000000..7fa3063 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/configApi.html @@ -0,0 +1,94 @@ + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar-amd.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar-amd.js new file mode 100644 index 0000000..47b6a07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar-amd.js @@ -0,0 +1,7 @@ +define(["dojo", "dijit/Calendar"], function(dojo, calendar){ + // a coolio/calendarAsync-created calendar will be created in the cdojo and cdijit instances + // but, during dev, this is a detail we can ignore...the config makes in just work + return function(id){ + return new calendar({}, dojo.byId(id)); + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar.js new file mode 100644 index 0000000..9645f46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar.js @@ -0,0 +1,6 @@ +dojo.provide("coolio.calendar"); +dojo.require("dijit.Calendar"); + +coolio.calendar= function(id){ + return new dijit.Calendar({}, dojo.byId(id)); +}; diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar1.js new file mode 100644 index 0000000..74fed9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/calendar1.js @@ -0,0 +1,6 @@ +dojo.provide("coolio.calendar1"); +dojo.require("dijit.Calendar"); + +coolio.calendar1= function(id){ + return new dijit.Calendar({}, dojo.byId(id)); +}; diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-built.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-built.html new file mode 100644 index 0000000..d977f9a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-built.html @@ -0,0 +1,60 @@ + + + + + + + + + +

                            A Coolio Calendar

                            +
                            +

                            A Dijit Calendar

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-async.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-async.html new file mode 100644 index 0000000..463bed5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-async.html @@ -0,0 +1,70 @@ + + + + + + + + + + + + +

                            A Coolio Calendar

                            +
                            +

                            A Dijit Calendar

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-legacy-async.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-legacy-async.html new file mode 100644 index 0000000..13c004f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-legacy-async.html @@ -0,0 +1,83 @@ + + + + + + + + + + + + +

                            A Coolio Calendar

                            +
                            +

                            A Dijit Calendar

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-legacy.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-legacy.html new file mode 100644 index 0000000..77862fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio-dev-legacy.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + +

                            A Coolio Calendar

                            +
                            +

                            A Dijit Calendar

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio.js new file mode 100644 index 0000000..d7de313 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio.js @@ -0,0 +1,17 @@ +require({ + packages:[{ + name:"cdojo", + location:(dojoConfig.coolioDojoRoot || dojoConfig.coolioRoot) + "/dojo", + packageMap:{dojo:"cdojo"} + },{ + name:"cdijit", + location:(dojoConfig.coolioDojoRoot || dojoConfig.coolioRoot) + "/dijit", + packageMap:{dojo:"cdojo", dijit:"cdijit"} + },{ + name:"coolio", + location:dojoConfig.coolioRoot + "/coolio", + packageMap:{dojo:"cdojo", dijit:"cdijit"} + }], + cdojoScope:[["dojo", "cdojo"], ["dijit", "cdijit"]] +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio.profile.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio.profile.js new file mode 100644 index 0000000..f57e005 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/coolio.profile.js @@ -0,0 +1,34 @@ +dependencies = { + quiet:1, + action:"release", + optimize:0, + layerOptimize:0, + insertAbsMids:0, + copyTests:"build", + mini:0, + releaseDir:"../../dojo/tests/_base/loader", + releaseName:"coolioBuilt", + scopeMap:[["dojo", "cdojo"], ["dijit", "cdijit"], , ["dojox", "dojox"]], + layers: [ + { + name: "dojo.js", + dependencies: [ + "dojo.main", + "dojo.parser" + ] + },{ + customBase:1, + name: "main.js" + },{ + name: "../dijit/Calendar.js", + dependencies: [ + "dijit.Calendar" + ] + } + ], + prefixes: [ + ["dijit", "../dijit"], + ["dojox", "../dojox"], + ["coolio", "./tests/_base/loader/coolio"] + ] +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/test.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/test.html new file mode 100644 index 0000000..14b1880 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/coolio/test.html @@ -0,0 +1,45 @@ + + + + +

                            Relocating Demonstrations

                            +

                            (AKA multi-version support or rescoping)

                            + +

                            Developing a component with the legacy API

                            +

                            Just develop as if you have full control and ownership over the dojo and dijit on the + page. Later, the component can be built into a distributable package that includes its own, private instance of dojo + and dijit (see below).

                            + +

                            Developing a component with the AMD API

                            +

                            Again, just develop as if you have full control and ownership over the dojo and dijit on the + page. But with the AMD API you can set up your dev environment so that you actually have multiple instances of + dojo and dijit (or any other module trees) on the page while developing--no build required. Notice the console + when you load this example: multiple instances...also the load time is much faster!

                            + +

                            Developing a component with the legacy API, loaded asynchronously

                            +

                            The idea is to force the loader into cross-domain mode so that even local, unbuilt resources will be + transformed to built, AMD modules on-the-fly. With these transformations, we can have multiple instances of dojo + and dijit (or any other module trees) on the page while developing--no build require. Notice the console + when you load this example: multiple instance, but it's the slowest of the bunch.

                            +

                            Generally, this mode is not useful under normal circumstances. However, it is a good test of the cross-domain + loader in the presense of relocated module trees.

                            + +

                            Build Time

                            +

                            The v1.7 builder converts all legacy modules to AMD modules. This allows any legacy tree to be relocated just as if + it was an AMD tree all along. The profile coolio-legacy.profile.js is included to build the coolio project. It + anticipates relocating dojo and dijit (the builder needs to know which modules may be relocated when it converts + legacy modules to AMD modules; it does not need to know the actual relocated names). You can build the coolio + demostration by executing the following command from the util/buildscripts directory

                            +
                            +./build.sh profile=../../dojo/tests/_base/loader/coolio/coolio.profile.js
                            +		
                            +

                            There are four demonstrations of the built code

                            +

                            Remember to do a build before you try these!

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/core.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/core.js new file mode 100644 index 0000000..cea3b8b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/core.js @@ -0,0 +1,18 @@ +define(["doh"], function(doh){ + doh.register("dojo.tests._base._loader.internals", [ + function compactPath(t){ + var compactPath = require.compactPath; + t.is(compactPath("../../dojo/../../mytests"), "../../../mytests"); + t.is(compactPath("module"), "module"); + t.is(compactPath("a/./b"), "a/b"); + t.is(compactPath("a/../b"), "b"); + t.is(compactPath("a/./b/./c/./d"), "a/b/c/d"); + t.is(compactPath("a/../b/../c/../d"), "d"); + t.is(compactPath("a/b/c/../../d"), "a/d"); + t.is(compactPath("a/b/c/././d"), "a/b/c/d"); + t.is(compactPath("./a/b"), "a/b"); + t.is(compactPath("../a/b"), "../a/b"); + t.is(compactPath(""), ""); + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/debugConsole.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/debugConsole.html new file mode 100644 index 0000000..7b7995c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/debugConsole.html @@ -0,0 +1,47 @@ + + + + testing debugging and logging functions + + + + + +

                            + Testing console.* methods with djConfig.isDebug turned +

                            +

                            + Append '?ON' to URL to try with djConfig.isDebug turned ON. Remove it to test djConfig.isDebug turned OFF +

                            +

                            + If isDebug is off (false), then make sure console functions go to a simple empty function. You may see + errors in the console, since console.error is being tested as part of this test. +

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvide.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvide.html new file mode 100644 index 0000000..1d43c5d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvide.html @@ -0,0 +1,24 @@ + + + + + + +

                            check console

                            +

                            This tests a legacy module that has two dojo.provides and both are stepped on by dojo.declare.

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvide.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvide.js new file mode 100644 index 0000000..fbbd885 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvide.js @@ -0,0 +1,14 @@ +dojo.provide("dojo.tests._base.loader.declareStepsOnProvide"); +dojo.provide("dojo.tests._base.loader.declareStepsOnProvide1"); + +dojo.declare("dojo.tests._base.loader.declareStepsOnProvide", [], { + status:function(){ + return "OK"; + } +}); + +dojo.declare("dojo.tests._base.loader.declareStepsOnProvide1", [], { + status:function(){ + return "OK-1"; + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvideAmd.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvideAmd.js new file mode 100644 index 0000000..ecce602 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/declareStepsOnProvideAmd.js @@ -0,0 +1,3 @@ +define(["./declareStepsOnProvide"], function(result){ + return result; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/fastbackTest.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/fastbackTest.html new file mode 100644 index 0000000..9bd8d34 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/fastbackTest.html @@ -0,0 +1,34 @@ + + + + Testing dojo.addOnLoad() + + + + +

                            Testing dojo.addOnLoad() to determine if fastback is working

                            +

                            + click one of the links below to try it out and then hit your back + button. Watch your server logs to see what's going on and view + source to understand the test. +

                            + The Dojo Toolkit
                            + Dojo Campus
                            + Google
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/getText.txt b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/getText.txt new file mode 100644 index 0000000..054e8e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/getText.txt @@ -0,0 +1 @@ +dojo._getText() test data \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/hostenv_rhino.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/hostenv_rhino.js new file mode 100644 index 0000000..37377c6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/hostenv_rhino.js @@ -0,0 +1,13 @@ +dojo.provide("dojo.tests._base._loader.hostenv_rhino"); + +tests.register("tests._base._loader.hostenv_rhino", + [ + function getText(t){ + var filePath = dojo.moduleUrl("tests._base._loader", "getText.txt"); + var text = (new String(readText(filePath))); + //The Java file read seems to add a line return. + text = text.replace(/[\r\n]+$/, ""); + t.assertEqual("dojo._getText() test data", text); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/hostenv_spidermonkey.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/hostenv_spidermonkey.js new file mode 100644 index 0000000..8ff7670 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/hostenv_spidermonkey.js @@ -0,0 +1,11 @@ +dojo.provide("dojo.tests._base._loader.hostenv_spidermonkey"); + +tests.register("tests._base._loader.hostenv_spidermonkey", + [ + function getText(t){ + var filePath = dojo.moduleUrl("tests._base._loader", "getText.txt"); + var text = readText(filePath); + t.assertEqual("dojo._getText() test data", text); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/moduleIds.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/moduleIds.js new file mode 100644 index 0000000..52cd2a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/moduleIds.js @@ -0,0 +1,210 @@ +define(["doh", "dojo", "dojo/_base/url"], function(doh, dojo){ + + var compactPath = function(path){ + var + result= [], + segment, lastSegment; + path= path.split("/"); + while(path.length){ + segment= path.shift(); + if(segment==".." && result.length && lastSegment!=".."){ + result.pop(); + }else if(segment!="."){ + result.push(lastSegment= segment); + } // else ignore "." + } + return result.join("/"); + }; + + doh.register("dojo.tests._base._loader.modulesIds", [ + function compactPath(t){ + var compactPath = require.compactPath; + t.is(compactPath("../../dojo/../../mytests"), "../../../mytests"); + t.is(compactPath("module"), "module"); + t.is(compactPath("a/./b"), "a/b"); + t.is(compactPath("a/../b"), "b"); + t.is(compactPath("a/./b/./c/./d"), "a/b/c/d"); + t.is(compactPath("a/../b/../c/../d"), "d"); + t.is(compactPath("a/b/c/../../d"), "a/d"); + t.is(compactPath("a/b/c/././d"), "a/b/c/d"); + t.is(compactPath("./a/b"), "a/b"); + t.is(compactPath("../a/b"), "../a/b"); + t.is(compactPath(""), ""); + }, + + function testModuleIds(t){ + require({ + packages:[{ + // canonical... + name:"pack1", + location:"../packages/pack1Root" + }, { + // nonstandard main + name:"pack2", + main:"pack2Main", + location:"/pack2Root" + }, { + // nonstandard main + name:"pack3", + main:"public/main", + location:"/pack3Root" + }] + }); + + function get(mid, refmod){ + return require.getModuleInfo(mid, refmod, require.packs, require.modules, "../../dojo/", require.packageMapProg, require.pathsMapProg, 1); + } + + function check(result, expectedPid, expectedMidSansPid, expectedUrl){ + t.is(result.pid, expectedPid); + t.is(result.mid, expectedPid + "/" + expectedMidSansPid); + t.is(result.url, expectedUrl + ".js"); + } + + // non-relative module id resolution... + + var pack1Root= "../../packages/pack1Root/"; + + // the various mains... + check(get("pack1"), "pack1", "main", pack1Root + "main"); + check(get("pack2"), "pack2", "pack2Main", "/pack2Root/pack2Main"); + check(get("pack3"), "pack3", "public/main", "/pack3Root/public/main"); + + // modules... + check(get("pack1/myModule"), "pack1", "myModule", pack1Root + "myModule"); + check(get("pack2/myModule"), "pack2", "myModule", "/pack2Root/myModule"); + check(get("pack3/myModule"), "pack3", "myModule", "/pack3Root/myModule"); + + // relative module id resolution; relative to module in top-level + var refmod= {mid:"pack1/main", pack:require.packageMap.pack1}; + check(get(".", refmod), "pack1", "main", pack1Root + "main"); + check(get("./myModule", refmod), "pack1", "myModule", pack1Root + "myModule"); + check(get("./myModule/mySubmodule", refmod), "pack1", "myModule/mySubmodule", pack1Root + "myModule/mySubmodule"); + + // relative module id resolution; relative to module + refmod= {mid:"pack1/sub/publicModule", pack:require.packageMap.pack1}; + check(get(".", refmod), "pack1", "sub", pack1Root + "sub"); + check(get("./myModule", refmod), "pack1", "sub/myModule", pack1Root + "sub/myModule"); + check(get("..", refmod), "pack1", "main", pack1Root + "main"); + check(get("../myModule", refmod), "pack1", "myModule", pack1Root + "myModule"); + check(get("../util/myModule", refmod), "pack1", "util/myModule", pack1Root + "util/myModule"); + }, + + function baseUrl(t){ + var originalBaseUrl = dojo.config["baseUrl"] || "./"; + + t.assertEqual(originalBaseUrl, dojo.baseUrl); + }, + + function moduleUrl(t){ + var expected = require.toUrl("dojo/tests/myTest.html"); + t.is(null, dojo.moduleUrl()); + t.is(null, dojo.moduleUrl(null)); + t.is(null, dojo.moduleUrl(null, "myTest.html")); + // note we expect a trailing slash + t.is(expected.substring(0, expected.length - 11), dojo.moduleUrl("dojo.tests")); + t.is(expected, dojo.moduleUrl("dojo.tests", "myTest.html")); + }, + + function modulePaths(t){ + dojo.registerModulePath("mycoolmod", "../some/path/mycoolpath"); + dojo.registerModulePath("mycoolmod.widget", "http://some.domain.com/another/path/mycoolpath/widget"); + + t.assertEqual(compactPath(require.baseUrl + "../some/path/mycoolpath/util/"), dojo.moduleUrl("mycoolmod.util")); + t.assertEqual("http://some.domain.com/another/path/mycoolpath/widget/", dojo.moduleUrl("mycoolmod.widget")); + t.assertEqual("http://some.domain.com/another/path/mycoolpath/widget/thingy/", dojo.moduleUrl("mycoolmod.widget.thingy")); + }, + + function moduleUrls(t){ + dojo.registerModulePath("mycoolmod", "some/path/mycoolpath"); + dojo.registerModulePath("mycoolmod2", "/some/path/mycoolpath2"); + dojo.registerModulePath("mycoolmod.widget", "http://some.domain.com/another/path/mycoolpath/widget"); + dojo.registerModulePath("ipv4.widget", "http://ipv4user:ipv4passwd@some.domain.com:2357/another/path/ipv4/widget"); + dojo.registerModulePath("ipv6.widget", "ftp://ipv6user:ipv6passwd@[::2001:0db8:3c4d:0015:0:0:abcd:ef12]:1113/another/path/ipv6/widget"); + dojo.registerModulePath("ipv6.widget2", "https://[0:0:0:0:0:1]/another/path/ipv6/widget2"); + + + var basePrefix = require.baseUrl; + + t.assertEqual(compactPath(basePrefix + "some/path/mycoolpath/my/favorite.html"), + dojo.moduleUrl("mycoolmod", "my/favorite.html")); + t.assertEqual(compactPath(basePrefix + "some/path/mycoolpath/my/favorite.html"), + dojo.moduleUrl("mycoolmod.my", "favorite.html")); + + t.assertEqual("/some/path/mycoolpath2/my/favorite.html", + dojo.moduleUrl("mycoolmod2", "my/favorite.html")); + t.assertEqual("/some/path/mycoolpath2/my/favorite.html", + dojo.moduleUrl("mycoolmod2.my", "favorite.html")); + + t.assertEqual("http://some.domain.com/another/path/mycoolpath/widget/my/favorite.html", + dojo.moduleUrl("mycoolmod.widget", "my/favorite.html")); + t.assertEqual("http://some.domain.com/another/path/mycoolpath/widget/my/favorite.html", + dojo.moduleUrl("mycoolmod.widget.my", "favorite.html")); + + // individual component testing + t.assertEqual("http://ipv4user:ipv4passwd@some.domain.com:2357/another/path/ipv4/widget/components.html", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html"))).uri); + t.assertEqual("http", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html"))).scheme); + t.assertEqual("ipv4user:ipv4passwd@some.domain.com:2357", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html"))).authority); + t.assertEqual("ipv4user", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html"))).user); + t.assertEqual("ipv4passwd", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html"))).password); + t.assertEqual("some.domain.com", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html"))).host); + t.assertEqual("2357", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html"))).port); + t.assertEqual("/another/path/ipv4/widget/components.html", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html?query"))).path); + t.assertEqual("q=somequery", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html?q=somequery"))).query); + t.assertEqual("fragment", + (new dojo._Url(dojo.moduleUrl("ipv4.widget", "components.html#fragment"))).fragment); + + t.assertEqual("ftp://ipv6user:ipv6passwd@[::2001:0db8:3c4d:0015:0:0:abcd:ef12]:1113/another/path/ipv6/widget/components.html", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html"))).uri); + t.assertEqual("ftp", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html"))).scheme); + t.assertEqual("ipv6user:ipv6passwd@[::2001:0db8:3c4d:0015:0:0:abcd:ef12]:1113", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html"))).authority); + t.assertEqual("ipv6user", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html"))).user); + t.assertEqual("ipv6passwd", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html"))).password); + t.assertEqual("::2001:0db8:3c4d:0015:0:0:abcd:ef12", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html"))).host); + t.assertEqual("1113", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html"))).port); + t.assertEqual("/another/path/ipv6/widget/components.html", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html?query"))).path); + t.assertEqual("somequery", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html?somequery"))).query); + t.assertEqual("somefragment", + (new dojo._Url(dojo.moduleUrl("ipv6.widget", "components.html?somequery#somefragment"))).fragment); + + t.assertEqual("https://[0:0:0:0:0:1]/another/path/ipv6/widget2/components.html", + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).uri); + t.assertEqual("https", + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).scheme); + t.assertEqual("[0:0:0:0:0:1]", + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).authority); + t.assertEqual(null, + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).user); + t.assertEqual(null, + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).password); + t.assertEqual("0:0:0:0:0:1", + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).host); + t.assertEqual(null, + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).port); + t.assertEqual("/another/path/ipv6/widget2/components.html", + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).path); + t.assertEqual(null, + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).query); + t.assertEqual(null, + (new dojo._Url(dojo.moduleUrl("ipv6.widget2", "components.html"))).fragment); + } + ]); +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modulePaths.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modulePaths.html new file mode 100644 index 0000000..26f8c9f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modulePaths.html @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules.js new file mode 100644 index 0000000..108ffa3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules.js @@ -0,0 +1,24 @@ +define([ + "doh", + "dojo", + "require", + "./modules/anon", + "./modules/wrapped", + "dojo/tests/_base/loader/modules/full", + "./modules/data", + "./modules/factoryArity"], function(doh, dojo, require, anon, wrapped){ + + doh.register("dojo.tests._base._loader.modules", [ + function testAMD(t){ + // test AMD module API + t.is(anon.theAnswer, 42); + t.is(require('./modules/anon').five, 5); + t.is(wrapped.five, 5); + t.is(dojo.require('dojo.tests._base.loader.modules.wrapped'), require('./modules/wrapped')); + t.is(require('./modules/full').twiceTheAnswer, 84); + t.is(require('./modules/data').five, 5); + t.is(require('./modules/factoryArity').i, 5); + } + ]); +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/anon.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/anon.js new file mode 100644 index 0000000..1bfeb82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/anon.js @@ -0,0 +1,6 @@ +define(["../a", "./wrapped"], function (a, wrapped) { + return { + theAnswer: a.number, + five: wrapped.five + }; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/data.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/data.js new file mode 100644 index 0000000..9874c89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/data.js @@ -0,0 +1,4 @@ +define({ + greeting: "Hello", + five: 5 +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/factoryArity.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/factoryArity.js new file mode 100644 index 0000000..75f0839 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/factoryArity.js @@ -0,0 +1,2 @@ +// make sure that module.exports doesn't kill factory result since factory has arity<3 +define(function() { return {i : 5} ; }); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/full.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/full.js new file mode 100644 index 0000000..1263724 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/full.js @@ -0,0 +1,5 @@ +define("dojo/tests/_base/loader/modules/full", ["./anon", "../a", "./wrapped", "require"], function (anon, a, wrapped, require) { + return { + twiceTheAnswer: a.number + require("../a").number + }; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/wrapped.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/wrapped.js new file mode 100644 index 0000000..a98c602 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/modules/wrapped.js @@ -0,0 +1,15 @@ +if(require.has("dojo-amd-factory-scan")){ + +define(function (require, exports, module) { + exports.five = require("./data").five; + exports.exports = module.exports; +}); + +}else{ + +define(["require", "exports", "module"], function (require, exports, module) { + exports.five = require("./data").five; + exports.exports = module.exports; +}); + +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/myTopLevelModule.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/myTopLevelModule.js new file mode 100644 index 0000000..46c1bcb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/myTopLevelModule.js @@ -0,0 +1,3 @@ +dojo.provide("myTopLevelModule"); +dojo.require("myTopLevelModule.myModule"); +myTopLevelModule.name= "myTopLevelModule"; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/myTopLevelModule/myModule.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/myTopLevelModule/myModule.js new file mode 100644 index 0000000..66d69e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/myTopLevelModule/myModule.js @@ -0,0 +1,2 @@ +dojo.provide("myTopLevelModule.myModule"); +myTopLevelModule.myModule.name= "myTopLevelModule.myModule"; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab-cd-ef/amdBundle.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab-cd-ef/amdBundle.js new file mode 100644 index 0000000..3b24dfe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab-cd-ef/amdBundle.js @@ -0,0 +1,3 @@ +define({ + amdBundle:"amdBundle-ab-cd-ef" +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab-cd-ef/syncBundle.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab-cd-ef/syncBundle.js new file mode 100644 index 0000000..90efbe3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab-cd-ef/syncBundle.js @@ -0,0 +1,3 @@ +({ + syncBundle:"syncBundle-ab-cd-ef" +}) diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab/amdBundle.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab/amdBundle.js new file mode 100644 index 0000000..2d7b704 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab/amdBundle.js @@ -0,0 +1,3 @@ +define({ + amdBundle:"amdBundle-ab" +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab/syncBundle.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab/syncBundle.js new file mode 100644 index 0000000..94f4dd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/ab/syncBundle.js @@ -0,0 +1,3 @@ +({ + syncBundle:"syncBundle-ab" +}) \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/amdBundle.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/amdBundle.js new file mode 100644 index 0000000..c1a15e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/amdBundle.js @@ -0,0 +1,7 @@ +define({ + root:{ + amdBundle:"amdBundle" + }, + ab:1, + "ab-cd-ef":1 +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/syncBundle.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/syncBundle.js new file mode 100644 index 0000000..6d13173 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/nls/syncBundle.js @@ -0,0 +1,3 @@ +({ + syncBundle:"syncBundle" +}) \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/package.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/package.html new file mode 100644 index 0000000..8b53637 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/package.html @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/paths.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/paths.html new file mode 100644 index 0000000..c71ae92 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/paths.html @@ -0,0 +1,52 @@ + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/pub1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/pub1.js new file mode 100644 index 0000000..3ed06ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/pub1.js @@ -0,0 +1,3 @@ +define([], function(){ + return {status:"ok"}; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/pub2.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/pub2.js new file mode 100644 index 0000000..3ed06ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/pub2.js @@ -0,0 +1,3 @@ +define([], function(){ + return {status:"ok"}; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/publishRequireResult.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/publishRequireResult.html new file mode 100644 index 0000000..ac3601e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/publishRequireResult.html @@ -0,0 +1,34 @@ + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/ready.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/ready.html new file mode 100644 index 0000000..82f428f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/ready.html @@ -0,0 +1,32 @@ + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/bar b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/bar new file mode 100644 index 0000000..6f020ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/bar @@ -0,0 +1,5 @@ +//A test for loading a file with a protocol-less URL via require() + +bar = { + name: "bar" +}; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/circular-tests.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/circular-tests.js new file mode 100644 index 0000000..625c4af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/circular-tests.js @@ -0,0 +1,29 @@ +require( + ["require", "two", "funcTwo", "funcThree", "doh"], + function(require, two, funcTwo, funcThree, doh) { + var args = two.doSomething(); + var twoInst = new funcTwo("TWO"); + doh.register( + "circular", + [ + function circular(t) { + t.is("small", args.size); + t.is("redtwo", args.color); + } + ] + ); + doh.run(); + + doh.register( + "circularFunc", + [ + function circularFunc(t) { + t.is("TWO", twoInst.name); + t.is("ONE-NESTED", twoInst.oneName()); + t.is("THREE-THREE_SUFFIX", funcThree("THREE")); + } + ] + ); + doh.run(); + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/circular.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/circular.html new file mode 100644 index 0000000..da171f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/circular.html @@ -0,0 +1,13 @@ + + + + require.js: Circular Test + + + + + +

                            require.js: Circular Test

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/config.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/config.html new file mode 100644 index 0000000..dcca116 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/config.html @@ -0,0 +1,41 @@ + + + + require.js: Config Test + + + + + +

                            require.js: Config Test

                            +

                            Tests require being defined as an object with init and ready configuration.

                            +

                            Check console for messages.

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dataMain.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dataMain.html new file mode 100644 index 0000000..6f29258 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dataMain.html @@ -0,0 +1,12 @@ + + + + require.js: data-main Test + + + + +

                            require.js: data-main Test

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dataMain.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dataMain.js new file mode 100644 index 0000000..c2f6ed2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dataMain.js @@ -0,0 +1,16 @@ +require({ + baseUrl: "./" + }, + ["require", "simple", "doh"], + function(require, simple, doh) { + doh.register( + "dataMain", + [ + function dataMain(t){ + t.is("blue", simple.color); + } + ] + ); + doh.run(); + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/depoverlap.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/depoverlap.html new file mode 100644 index 0000000..3214cda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/depoverlap.html @@ -0,0 +1,14 @@ + + + + require.js: Dependency Overlap Test + + + + +

                            require.js: Dependency Overlap Test

                            +

                            uno requires dos and tres, but tres also requires dos. Make sure + dos is only added once, and that all are defined correctly.

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/depoverlap.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/depoverlap.js new file mode 100644 index 0000000..6af8756 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/depoverlap.js @@ -0,0 +1,35 @@ +require(["require", "uno", "doh"], +function (require, uno, doh) { + doh.register( + "depoverlap", + [ + function depoverlap(t){ + //First confirm there is only one script tag for each + //module: + var scripts = document.getElementsByTagName("script"), + i, counts = {}, modName, props, something; + for (var i = scripts.length - 1; i > -1; i--) { + modName = scripts[i].getAttribute("data-requiremodule"); + if (modName) { + if (!(modName in counts)) { + counts[modName] = 0; + } + counts[modName] += 1; + } + } + + //Now that we counted all the modules make sure count + //is always one. + for (prop in counts) { + t.is(1, counts[prop]); + } + + t.is("uno", uno.name); + something = uno.doSomething(); + t.is("dos", something.dosName); + t.is("tres", something.tresName); + } + ] + ); + doh.run(); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dimple.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dimple.js new file mode 100644 index 0000000..9ab8f2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dimple.js @@ -0,0 +1,5 @@ +define("dimple", + { + color: "dimple-blue" + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dos.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dos.js new file mode 100644 index 0000000..1a28c65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/dos.js @@ -0,0 +1,13 @@ +define("dos", + ["tres"], + function(tres) { + return { + name: "dos", + doSomething: function() { + return { + tresName: tres.name + }; + } + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/assign.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/assign.js new file mode 100644 index 0000000..d260a90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/assign.js @@ -0,0 +1,5 @@ +define("assign", + ["require", "exports", "module"], + function (require, exports, module) { + module.exports = "assign"; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/assign2.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/assign2.js new file mode 100644 index 0000000..c6cd0c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/assign2.js @@ -0,0 +1,4 @@ +define(["module", "exports", "require"], + function (module, exports, require) { + module.exports = "assign2"; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/exports-tests.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/exports-tests.js new file mode 100644 index 0000000..b31acf5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/exports-tests.js @@ -0,0 +1,24 @@ +require({ + baseUrl: require.has("host-browser") ? "./" : "./exports/" + }, + ["require", "vanilla", "funcSet", "assign", "assign2", "usethis", + "implicitModule", "simpleReturn", "doh"], + function(require, vanilla, funcSet, assign, assign2, usethis, + implicitModule, simpleReturn, doh) { + doh.register( + "exports", + [ + function exports(t){ + t.is("vanilla", vanilla.name); + t.is("funcSet", funcSet); + t.is("assign", assign); + t.is("assign2", assign2); + //TODO: not implemented in dojo t.is("usethis", usethis.name); + t.is("implicitModule", implicitModule()); + t.is("simpleReturn", simpleReturn()); + } + ] + ); + doh.run(); + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/exports.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/exports.html new file mode 100644 index 0000000..8b935a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/exports.html @@ -0,0 +1,18 @@ + + + + require.js: Exports Test + + + + + + +

                            require.js: Exports Test

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/funcSet.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/funcSet.js new file mode 100644 index 0000000..5f10a31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/funcSet.js @@ -0,0 +1,5 @@ +define("funcSet", + ["require", "exports", "module"], + function (require, exports, module) { + module.setExports("funcSet"); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/implicitModule.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/implicitModule.js new file mode 100644 index 0000000..4c021d3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/implicitModule.js @@ -0,0 +1,7 @@ +define(function (require, exports, module) { + if (module.exports) { + module.exports = function () { + return 'implicitModule'; + }; + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/simpleReturn.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/simpleReturn.js new file mode 100644 index 0000000..7b5e7f0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/simpleReturn.js @@ -0,0 +1,10 @@ +//This file does not use exports, just +//return, but need to test that it does not +//automatically get an exports object assigned +define( + function () { + return function () { + return 'simpleReturn'; + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/usethis.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/usethis.js new file mode 100644 index 0000000..1c19f05 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/usethis.js @@ -0,0 +1,3 @@ +define(function (require, exports) { + this.name = 'usethis'; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/vanilla.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/vanilla.js new file mode 100644 index 0000000..2168e47 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/exports/vanilla.js @@ -0,0 +1,5 @@ +define("vanilla", + ["require", "exports", "module"], + function (require, exports, module) { + exports.name = "vanilla"; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/foo b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/foo new file mode 100644 index 0000000..d6a4cde --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/foo @@ -0,0 +1,5 @@ +//A test for loading a file with a protocol URL via require() + +foo = { + name: "foo" +}; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/func.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/func.js new file mode 100644 index 0000000..6e4775f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/func.js @@ -0,0 +1,7 @@ +define("func", + function () { + return function () { + return "You called a function"; + } + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcFour.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcFour.js new file mode 100644 index 0000000..12db975 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcFour.js @@ -0,0 +1,14 @@ +define("funcFour", + ["require", "funcThree"], + function (require) { + var four = function (arg) { + return "FOUR called with " + arg; + }; + + four.suffix = function () { + return require("funcThree").suffix(); + }; + + return four; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcOne.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcOne.js new file mode 100644 index 0000000..4620592 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcOne.js @@ -0,0 +1,15 @@ +define("funcOne", + ["require", "funcTwo"], + function (require) { + var one = function (name) { + this.name = name; + }; + + one.prototype.getName = function () { + var inst = new (require("funcTwo"))("-NESTED"); + return this.name + inst.name; + }; + + return one; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcThree.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcThree.js new file mode 100644 index 0000000..b02bf89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcThree.js @@ -0,0 +1,14 @@ +define("funcThree", + ["funcFour"], + function (four) { + var three = function (arg) { + return arg + "-" + require("funcFour").suffix(); + }; + + three.suffix = function () { + return "THREE_SUFFIX"; + }; + + return three; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcTwo.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcTwo.js new file mode 100644 index 0000000..38afc0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/funcTwo.js @@ -0,0 +1,15 @@ +define("funcTwo", + ["require", "funcOne"], + function (require) { + var two = function (name) { + this.name = name; + this.one = new (require("funcOne"))("ONE"); + }; + + two.prototype.oneName = function () { + return this.one.getName(); + }; + + return two; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/common.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/common.html new file mode 100644 index 0000000..b394c6d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/common.html @@ -0,0 +1,53 @@ + + + + require.js: Common I18N Test + + + + + + +

                            Common i18n bundle test

                            +

                            This page tests for an i18n plugin resource that is specified by two different modules.

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/commonA.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/commonA.js new file mode 100644 index 0000000..fcdf974 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/commonA.js @@ -0,0 +1,3 @@ +define(['i18n!nls/colors'], function (colors) { + return colors.red; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/commonB.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/commonB.js new file mode 100644 index 0000000..3e7c43e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/commonB.js @@ -0,0 +1,3 @@ +define(['i18n!nls/colors'], function (colors) { + return colors.blue; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/i18n.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/i18n.html new file mode 100644 index 0000000..128b90d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/i18n.html @@ -0,0 +1,62 @@ + + + + require.js: I18N Test + + + + + + +

                            i18n bundle test

                            +

                            This page tests the i18n bundling in require.js. You can change the locale to use by passing locale= or bundle=

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/i18n.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/i18n.js new file mode 100644 index 0000000..637089c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/i18n.js @@ -0,0 +1,4 @@ +// alias i18n to dojo/i18n +define(["dojo/i18n"], function(i18n){ + return i18n; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/colors.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/colors.js new file mode 100644 index 0000000..8021cd5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/colors.js @@ -0,0 +1,9 @@ +define({ + "root": { + red: "red", + blue: "blue", + green: "green" + }, + "en-us-surfer": true, + "fr": true +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/en-us-surfer/colors.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/en-us-surfer/colors.js new file mode 100644 index 0000000..e122d28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/en-us-surfer/colors.js @@ -0,0 +1,3 @@ +define({ + red: "red, dude" +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/fr/colors.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/fr/colors.js new file mode 100644 index 0000000..c5392fc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/nls/fr/colors.js @@ -0,0 +1,4 @@ +define({ + red: "rouge", + blue: "bleu" +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/testModule.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/testModule.js new file mode 100644 index 0000000..7bafb5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/i18n/testModule.js @@ -0,0 +1,4 @@ +//A sample module to use in the i18n build test. +define(["i18n!nls/colors"], function (colors) { + var red = colors.red; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/allplugins-text.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/allplugins-text.html new file mode 100644 index 0000000..2379a7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/allplugins-text.html @@ -0,0 +1,33 @@ + + + + require.js: allplugins-text Test + + + + + + +

                            require.js: allplugins-text Test

                            +

                            REQUIRES a built allplugins-require.js file built from build.sh in this directory

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/build.sh b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/build.sh new file mode 100755 index 0000000..f5d556e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/build.sh @@ -0,0 +1 @@ +../../build/build.sh baseUrl=../.. name=require include=i18n,text,order, out=allplugins-require.js optimize=none diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/epsilon.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/epsilon.js new file mode 100644 index 0000000..7a66e57 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/epsilon.js @@ -0,0 +1,5 @@ +define("epsilon", + { + name: "epsilon" + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/helloWorld.txt b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/helloWorld.txt new file mode 100644 index 0000000..95d09f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/helloWorld.txt @@ -0,0 +1 @@ +hello world \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/layer1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/layer1.js new file mode 100644 index 0000000..963ab00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/layer1.js @@ -0,0 +1,31 @@ +//Example layer file. + +define("alpha", + ["beta", "gamma"], + function (beta, gamma) { + return { + name: "alpha", + betaName: beta.name + }; + } +); + +define("beta", + ["gamma"], + function (gamma) { + return { + name: "beta", + gammaName: gamma.name + }; + } +); + +define("gamma", + ["epsilon"], + function (epsilon) { + return { + name: "gamma", + epsilonName: epsilon.name + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/layers.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/layers.html new file mode 100644 index 0000000..a621a7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/layers/layers.html @@ -0,0 +1,67 @@ + + + + require.js: Layers Test + + + + + + +

                            require.js: Layers Test

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/map.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/map.js new file mode 100644 index 0000000..3e07574 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/map.js @@ -0,0 +1,7 @@ +define("map", + function() { + return { + name: "map" + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/one.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/one.js new file mode 100644 index 0000000..469a75f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/one.js @@ -0,0 +1,13 @@ +define("one", + ["require", "two"], + function(require) { + var one = { + size: "large", + doSomething: function() { + return require("two"); + } + }; + + return one; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/first.js/first.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/first.js/first.js new file mode 100644 index 0000000..72b6a94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/first.js/first.js @@ -0,0 +1,8 @@ +globalCounter += 1; + +define(['./second'], function (second) { + globalCounter += 1; + return { + load: second + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/first.js/second.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/first.js/second.js new file mode 100644 index 0000000..9ebcda1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/first.js/second.js @@ -0,0 +1,8 @@ +define(['./first'], function () { + return function (id, parentRequire, loaded) { + loaded({ + name: 'first', + secondName: 'second' + }); + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/paths.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/paths.html new file mode 100644 index 0000000..03cd742 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/paths/paths.html @@ -0,0 +1,59 @@ + + + + require.js: paths Test + + + + + + +

                            require.js: paths Test

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/message.txt b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/message.txt new file mode 100644 index 0000000..95d09f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/message.txt @@ -0,0 +1 @@ +hello world \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/one.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/one.js new file mode 100644 index 0000000..e62290a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/one.js @@ -0,0 +1,10 @@ +define("foo/bar/one", + ["require", "./two", "../three", "text!./message.txt"], + function (require, two, three, message) { + return { + name: "one", + twoName: two.name, + threeName: three.name, + message: message + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/two.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/two.js new file mode 100644 index 0000000..521822a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/bar/two.js @@ -0,0 +1,3 @@ +define("foo/bar/two", { + name: "two" +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/three.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/three.js new file mode 100644 index 0000000..36aa2fc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/foo/three.js @@ -0,0 +1,3 @@ +define("foo/three", { + name: "three" +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/relative-tests.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/relative-tests.js new file mode 100644 index 0000000..21684e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/relative-tests.js @@ -0,0 +1,23 @@ +require({ + baseUrl: require.has("host-browser") ? "./" : "./relative/", + paths: { + text: "../../text" + } + }, + ["require", "foo/bar/one", "doh"], + function(require, one, doh) { + doh.register( + "relative", + [ + function relative(t){ + t.is("one", one.name); + t.is("two", one.twoName); + t.is("three", one.threeName); + t.is("hello world", one.message.replace(/\n/g, "")); + } + ] + ); + + doh.run(); + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/relative.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/relative.html new file mode 100644 index 0000000..e232440 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/relative/relative.html @@ -0,0 +1,22 @@ + + + + require.js: Relative Module Names Test + + + + + + + +

                            require.js: Relative Module Names Test

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/requirejs-setup.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/requirejs-setup.js new file mode 100644 index 0000000..d4fb1ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/requirejs-setup.js @@ -0,0 +1,32 @@ +var dohArgs= (window.parent.doh && window.parent.doh.dohArgs) || dohArgs || { + async:1, + baseUrl:"." +}; +var requirejsArgs= requirejsArgs || { + dojoLocation:"../../../.." +}; +var dojoConfig= { + async:dohArgs.async, + baseUrl:dohArgs.baseUrl || ".", + packages:[{ + name:'dojo', + location:requirejsArgs.dojoLocation + },{ + name:'doh', + location:requirejsArgs.dojoLocation + '/../util/doh' + },{ + name:'dojox', + location:requirejsArgs.dojoLocation + '/../dojox' + }], + has:{ + "dojo-requirejs-api":1, + "config-tlmSiblingOfDojo":0 + } +}; +if(typeof require!="undefined"){ + (function(){ + for(var p in require){ + dojoConfig[p]= require[p]; + } + })(); +} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-badbase.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-badbase.html new file mode 100644 index 0000000..8cf08e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-badbase.html @@ -0,0 +1,55 @@ + + + require.js: Simple Bad Base Test + + + + + + +

                            require.js: Simple Test

                            +

                            You may need to change the IP address used for this test for it to work correctly.

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-nohead.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-nohead.html new file mode 100644 index 0000000..1772e78 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-nohead.html @@ -0,0 +1,24 @@ + + +

                            require.js: Simple Test, no head tag

                            +

                            Check console for messages

                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-tests.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-tests.js new file mode 100644 index 0000000..7cfc856 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple-tests.js @@ -0,0 +1,23 @@ +require({ + baseUrl: "./" + }, + ["require", "map", "simple", "dimple", "func", "doh"], + function(require, map, simple, dimple, func, doh) { + doh.register( + "simple", + [ + function colors(t){ + t.is("map", map.name); + t.is("blue", simple.color); + t.is("dimple-blue", dimple.color); + t.is("You called a function", func()); + } + ] + ); + + //In rhino there is no more simple tests, but in web browser there is. + if (typeof moreSimpleTests === 'undefined') { + doh.run(); + } + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple.html new file mode 100644 index 0000000..07e1b50 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple.html @@ -0,0 +1,35 @@ + + + + require.js: Simple Test + + + + + + + +

                            require.js: Simple Test

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple.js new file mode 100644 index 0000000..79552cf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/simple.js @@ -0,0 +1,7 @@ +define("simple", + function() { + return { + color: "blue" + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/local.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/local.js new file mode 100644 index 0000000..d25af0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/local.js @@ -0,0 +1,5 @@ +define(['text!./resources/local.html'], function (localHtml) { + return { + localHtml: localHtml + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/resources/local.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/resources/local.html new file mode 100644 index 0000000..f62ec62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/resources/local.html @@ -0,0 +1 @@ +

                            Local

                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/resources/sample.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/resources/sample.html new file mode 100644 index 0000000..0583261 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/resources/sample.html @@ -0,0 +1,8 @@ + + + + sample.html + + +Hello World! + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget.html new file mode 100644 index 0000000..3fd9b9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget.html @@ -0,0 +1,8 @@ + + + + sample.html + + +

                            This is a subwidget

                            + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget.js new file mode 100644 index 0000000..9fd0822 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget.js @@ -0,0 +1,10 @@ +define("subwidget", + ["text!subwidget.html!strip", "text!subwidget2.html"], + function(template, template2) { + return { + name: "subwidget", + template: template, + template2: template2 + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget2.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget2.html new file mode 100644 index 0000000..13a0a03 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/subwidget2.html @@ -0,0 +1 @@ +This! is template2 \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/text.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/text.html new file mode 100644 index 0000000..e396f3e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/text.html @@ -0,0 +1,58 @@ + + + + require.js: Text Test + + + + + + +

                            require.js: Text Test

                            +

                            Test for usage of text! require plugin. +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/textOnly.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/textOnly.html new file mode 100644 index 0000000..6ab65d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/textOnly.html @@ -0,0 +1,42 @@ + + + + require.js: Text Test + + + + + + +

                            require.js: Text Test

                            +

                            Test for usage of text! require plugin. +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/widget.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/widget.html new file mode 100644 index 0000000..c11c453 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/widget.html @@ -0,0 +1 @@ +

                            This is a widget!

                            I am in a widget

                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/widget.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/widget.js new file mode 100644 index 0000000..4075369 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/text/widget.js @@ -0,0 +1,11 @@ +define("widget", + ["subwidget", "text!widget.html"], + function(subwidget, template) { + return { + subWidgetName: subwidget.name, + subWidgetTemplate: subwidget.template, + subWidgetTemplate2: subwidget.template2, + template: template + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/tres.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/tres.js new file mode 100644 index 0000000..e3eba93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/tres.js @@ -0,0 +1,7 @@ +define("tres", + function() { + return { + name: "tres" + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/two.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/two.js new file mode 100644 index 0000000..8c4c055 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/two.js @@ -0,0 +1,12 @@ +define("two", + ["require", "one"], + function(require, one) { + return { + size: "small", + color: "redtwo", + doSomething: function() { + return require("one").doSomething(); + } + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/one.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/one.js new file mode 100644 index 0000000..ccaa684 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/one.js @@ -0,0 +1,8 @@ +define(function (require) { + return { + name: "one", + threeName: require("three").name, + threeName2: require("three").name + }; +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/three.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/three.js new file mode 100644 index 0000000..3d52f9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/three.js @@ -0,0 +1,3 @@ +define("three", { + name: "three" +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/two.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/two.js new file mode 100644 index 0000000..f272edb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/two.js @@ -0,0 +1,8 @@ +define("two", ["one", "three", "one"], function (one, three, one2) { + return { + name: "two", + oneName: one.name, + oneName2: one2.name, + threeName: three.name + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/uniques.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/uniques.html new file mode 100644 index 0000000..7099900 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uniques/uniques.html @@ -0,0 +1,43 @@ + + + + require.js: Unique Dependency Test + + + + + + +

                            require.js: Unique Dependency Test

                            +

                            Make sure if a dependency is listed more than once code still operates correctly.

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uno.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uno.js new file mode 100644 index 0000000..dcc57dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/uno.js @@ -0,0 +1,14 @@ +define("uno", + ["dos", "tres"], + function(dos, tres) { + return { + name: "uno", + doSomething: function() { + return { + dosName: dos.name, + tresName: tres.name + }; + } + }; + } +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/one.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/one.js new file mode 100644 index 0000000..92184ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/one.js @@ -0,0 +1,3 @@ +var one = { + name: "one" +}; diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/three.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/three.js new file mode 100644 index 0000000..d78a542 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/three.js @@ -0,0 +1,10 @@ +define("three", { + name: "three" +}); + +define("four", ["three"], function (three) { + return { + name: "four", + threeName: "three" + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/two.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/two.js new file mode 100644 index 0000000..8617a31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/two.js @@ -0,0 +1,10 @@ +define("one", { + name: "one" +}); + +define("two", ["one"], function (one) { + return { + name: "two", + oneName: "one" + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/urlfetch.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/urlfetch.html new file mode 100644 index 0000000..328c843 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/requirejs/urlfetch/urlfetch.html @@ -0,0 +1,69 @@ + + + + require.js: urlFetch Mapping Test + + + + + + +

                            require.js: urlFetch Mapping Test

                            +

                            Make sure that multiple modules mapped to the same URL only get + the URL fetched once.

                            +

                            Check console for messages

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/scope04.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/scope04.html new file mode 100644 index 0000000..f6d2571 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/scope04.html @@ -0,0 +1,80 @@ + + + + Multiversion Dojo: 0.4.3 and 1.0 + + + + + + + + + + + + + +

                            Multiversion Dojo: 0.4.3 and 1.0

                            + +

                            NOTE: This test only works with a built version of Dojo

                            + +

                            This page loads Dojo 0.4.3 and Dojo 1.0.

                            + +

                            Dojo 0.4.3 version:

                            + +

                            Dojo 1.0 version:

                            + +

                            dojo.addClass should be undefined:

                            + +

                            + +

                            + +

                            + +

                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncFromAsyncModule.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncFromAsyncModule.js new file mode 100644 index 0000000..dfa725e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncFromAsyncModule.js @@ -0,0 +1,4 @@ +dojo.provide("dojo.tests._base.loader.syncFromAsyncModule"); +dojo.declare("dojo.tests._base.loader.syncFromAsyncModule", null, {}); +dojo.tests._base.loader.syncFromAsyncModule.status= "OK"; +dojo.require("dojo.tests._base.loader.syncFromAsyncModuleDep"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncFromAsyncModuleDep.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncFromAsyncModuleDep.js new file mode 100644 index 0000000..e61fbba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncFromAsyncModuleDep.js @@ -0,0 +1,2 @@ +dojo.provide("dojo.tests._base.loader.syncFromAsyncModuleDep"); +dojo.tests._base.loader.syncFromAsyncModuleDep.status= "OK"; diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule.js new file mode 100644 index 0000000..bf3212d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule.js @@ -0,0 +1,9 @@ +if (typeof dojoCdnTestLog=="undefined"){ + dojoCdnTestLog= []; +} +dojoCdnTestLog.push("in-dojo.tests._base.loader.syncModule"); +dojo.provide("dojo.tests._base.loader.syncModule"); +dojo.declare("dojo.tests._base.loader.syncModule", null, {}); +dojo.tests._base.loader.syncModule.status= "OK"; +dojo.require("dojo.tests._base.loader.syncModuleDep"); +dojoCdnTestLog.push("out-dojo.tests._base.loader.syncModule"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule1.js new file mode 100644 index 0000000..39e8ce7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule1.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("in-dojo.tests._base.loader.syncModule1"); +dojo.provide("dojo.tests._base.loader.syncModule1"); +dojo.tests._base.loader.syncModule1.status= "OK"; +dojo.require("dojo.tests._base.loader.syncModuleDep1"); +dojoCdnTestLog.push("out-dojo.tests._base.loader.syncModule1"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule2.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule2.js new file mode 100644 index 0000000..b2e1430 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModule2.js @@ -0,0 +1,5 @@ +dojoCdnTestLog.push("in-dojo.tests._base.loader.syncModule2"); +dojo.provide("dojo.tests._base.loader.syncModule"); +dojo.tests._base.loader.syncModule.status= "OK"; +dojo.require("dojo.tests._base.loader.syncModuleDep"); +dojoCdnTestLog.push("out-dojo.tests._base.loader.syncModule2"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep.js new file mode 100644 index 0000000..496041a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep.js @@ -0,0 +1,4 @@ +dojoCdnTestLog.push("in-dojo.tests._base.loader.syncModuleDep"); +dojo.provide("dojo.tests._base.loader.syncModuleDep"); +dojo.tests._base.loader.syncModuleDep.status= "OK"; +dojoCdnTestLog.push("out-dojo.tests._base.loader.syncModuleDep"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep1.js new file mode 100644 index 0000000..82d11e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep1.js @@ -0,0 +1,4 @@ +dojoCdnTestLog.push("in-dojo.tests._base.loader.syncModuleDep1"); +dojo.provide("dojo.tests._base.loader.syncModuleDep1"); +dojo.tests._base.loader.syncModuleDep1.status= "OK"; +dojoCdnTestLog.push("out-dojo.tests._base.loader.syncModuleDep1"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep2.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep2.js new file mode 100644 index 0000000..0d7f6b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/syncModuleDep2.js @@ -0,0 +1,4 @@ +dojoCdnTestLog.push("in-dojo.tests._base.loader.syncModuleDep2"); +dojo.provide("dojo.tests._base.loader.syncModuleDep"); +dojo.tests._base.loader.syncModuleDep.status= "OK"; +dojoCdnTestLog.push("out-dojo.tests._base.loader.syncModuleDep2"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/traceApi.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/traceApi.html new file mode 100644 index 0000000..9f82823 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/traceApi.html @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-browser-skip.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-browser-skip.js new file mode 100644 index 0000000..32cb335 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-browser-skip.js @@ -0,0 +1 @@ +xdomainExecSequence.push("dojo.tests._base.loader.xdomain.local1-browser-skip-1"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-browser.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-browser.js new file mode 100644 index 0000000..bb1fd4b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-browser.js @@ -0,0 +1,4 @@ +xdomainExecSequence.push("dojo.tests._base.loader.xdomain.local1-browser-1"); +var x1= dojo.provide("dojo.tests._base.loader.xdomain.local1-browser"); +dojo.getObject("dojo.tests._base.loader.xdomain.local1-browser").status= "dojo.tests._base.loader.xdomain.local1-browser-ok"; +xdomainExecSequence.push("dojo.tests._base.loader.xdomain.local1-browser-2"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-dep.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-dep.js new file mode 100644 index 0000000..08a2b03 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-dep.js @@ -0,0 +1,4 @@ +xdomainExecSequence.push("local1-dep-1"); +var x1= dojo.provide("dojo.tests._base.loader.xdomain.local1-dep"); +dojo.getObject("dojo.tests._base.loader.xdomain.local1-dep").status= "dojo.tests._base.loader.xdomain.local1-dep-ok"; +xdomainExecSequence.push("local1-dep-2"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-runtimeDependent1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-runtimeDependent1.js new file mode 100644 index 0000000..d52720d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1-runtimeDependent1.js @@ -0,0 +1,4 @@ +xdomainExecSequence.push("dojo.tests._base.loader.xdomain.local1-runtimeDependent1-1"); +var x1= dojo.provide("dojo.tests._base.loader.xdomain.local1-runtimeDependent1"); +dojo.getObject("dojo.tests._base.loader.xdomain.local1-runtimeDependent1").status= "dojo.tests._base.loader.xdomain.local1-runtimeDependent1-ok"; +xdomainExecSequence.push("dojo.tests._base.loader.xdomain.local1-runtimeDependent1-2"); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1.js new file mode 100644 index 0000000..a0a3168 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local1.js @@ -0,0 +1,82 @@ +xdomainExecSequence.push("local1-1"); + +// multiple dojo.provides should define multiple modules +var x1= dojo.provide("dojo.tests._base.loader.xdomain.local1"); +var x2= dojo.provide("dojo.tests._base.loader.xdomain.local1SteppedOn"); +var x3= dojo.provide("dojo.tests._base.loader.xdomain.local1NotSteppedOn"); +xdomainExecSequence.push("local1-2"); + +// this puts the loader in xd loading mode +dojo.require("dojo.cookie"); +xdomainExecSequence.push("local1-3"); + +// load a not xd module while in xd loading mode +dojo.require("dojo.tests._base.loader.xdomain.local1-dep"); +xdomainExecSequence.push("local1-4"); + +// a loadInit that makes a calculation a later requireIf depends upon +dojo.loadInit(function(){ + xdomainExecSequence.push("local1-5"); + var dependentModule= dojo.getObject("dojo.tests._base.loader.xdomain.local1-runtimeDependent", true); + dependentModule.choice = 1; +}); +xdomainExecSequence.push("local1-6"); + +// a couple of requireIf's, only one of which should result in a module being loaded +dojo.requireIf(dojo.getObject("dojo.tests._base.loader.xdomain.local1-runtimeDependent").choice==1, "dojo.tests._base.loader.xdomain.local1-runtimeDependent1"); +xdomainExecSequence.push("local1-7"); +dojo.requireIf(dojo.getObject("dojo.tests._base.loader.xdomain.local1-runtimeDependent").choice==2, "dojo.tests._base.loader.xdomain.local1-runtimeDependent2"); +xdomainExecSequence.push("local1-8"); + +// platformRequire test +dojo.platformRequire({ + browser:[ + "dojo.tests._base.loader.xdomain.local1-browser", + ["dojo.tests._base.loader.xdomain.local1-browser-skip", true] + ] +}); + +// these are xd bundles which should be loaded async +xdomainExecSequence.push("local1-9"); +dojo.requireLocalization("dojo", "colors"); +xdomainExecSequence.push("local1-10"); +dojo.requireLocalization("dojo", "colors", "fr"); +xdomainExecSequence.push("local1-11"); +dojo.requireLocalization("dojo", "colors"); +xdomainExecSequence.push("local1-12"); + +// these are not xd bundles which should be loaded sync +dojo.requireLocalization("dojo.tests._base.loader", "amdBundle"); +xdomainExecSequence.push("local1-13"); +dojo.requireLocalization("dojo.tests._base.loader", "amdBundle", "ab"); +xdomainExecSequence.push("local1-14"); +dojo.requireLocalization("dojo.tests._base.loader", "syncBundle"); +xdomainExecSequence.push("local1-15"); +dojo.requireLocalization("dojo.tests._base.loader", "syncBundle", "ab"); +xdomainExecSequence.push("local1-16"); + +// another loadInit; it should be executed immediately after the first load init +dojo.loadInit(function(){ + xdomainExecSequence.push("local1-17"); + var dependentModule= dojo.getObject("dojo.tests._base.loader.xdomain.local1-runtimeDependent"); + dependentModule.status = "ok"; +}); +xdomainExecSequence.push("local1-18"); + +xdomainLog.push( +1, (x1===dojo.tests._base.loader.xdomain.local1), +2, (x1===dojo.getObject("dojo.tests._base.loader.xdomain.local1")), +3, (x2===dojo.tests._base.loader.xdomain.local1SteppedOn), +4, (x2===dojo.getObject("dojo.tests._base.loader.xdomain.local1SteppedOn")), +5, (x3===dojo.tests._base.loader.xdomain.local1NotSteppedOn), +6, (x3===dojo.getObject("dojo.tests._base.loader.xdomain.local1NotSteppedOn"))); + +x3.status = "local1NotSteppedOn"; +dojo.tests._base.loader.xdomain.local1= "stepOnLocal1"; +dojo.tests._base.loader.xdomain.local1SteppedOn= "stepOn1SteppedOn"; + +xdomainLog.push( +7, ("stepOnLocal1"===dojo.tests._base.loader.xdomain.local1), +8, ("stepOnLocal1"===dojo.getObject("dojo.tests._base.loader.xdomain.local1")), +9, ("stepOn1SteppedOn"===dojo.tests._base.loader.xdomain.local1SteppedOn), +10, ("stepOn1SteppedOn"===dojo.getObject("dojo.tests._base.loader.xdomain.local1SteppedOn"))); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local2.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local2.js new file mode 100644 index 0000000..7b8770c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local2.js @@ -0,0 +1,13 @@ +xdomainExecSequence.push("local2-1"); +dojo.provide("dojo.tests._base.loader.xdomain.local2"); +xdomainExecSequence.push("local2-2"); + +// put the loader in xdomain loading mode +dojo.require("dojo.hash"); +xdomainExecSequence.push("local2-3"); + +// load a local module that will have to be transformed +dojo.require("dojo.tests._base.loader.xdomain.local3"); +xdomainExecSequence.push("local2-4"); + +dojo.tests._base.loader.xdomain.local2.status = "local2-loaded"; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local3.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local3.js new file mode 100644 index 0000000..940aaf5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/local3.js @@ -0,0 +1,10 @@ +xdomainExecSequence.push("local3-1"); +dojo.provide("dojo.tests._base.loader.xdomain.local3"); +xdomainExecSequence.push("local3-2"); + +// load a local module that will have to be transformed +//debugger; +dojo.require("dojo.tests._base.loader.xdomain.local1"); +xdomainExecSequence.push("local3-3"); + +dojo.tests._base.loader.xdomain.local3.status = "local3-loaded"; diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/xdomain.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/xdomain.html new file mode 100644 index 0000000..cf19527 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/loader/xdomain/xdomain.html @@ -0,0 +1,290 @@ + + + + + + + +

                            check console

                            +

                            This test loads a not-xdomain module that contains a xdomain and a not-xdomain module

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/object.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/object.js new file mode 100644 index 0000000..16cb38c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/object.js @@ -0,0 +1,42 @@ +dojo.provide("dojo.tests._base.object"); + +// setup the test object +dojo.zoo = { a:1, c: { d:1 } }; + +tests.register("tests._base.object", + [ + + function getBasic(t){ + var x = dojo.getObject('dojo.zoo.a'); + t.is(1, x); + }, + + function setObject2(t){ + dojo.setObject("dojo.zoo.foo.bar", 42); + t.is(42, dojo.zoo.foo.bar); + }, + + function setWithContext(t){ + // c is already {} + dojo.setObject("zoo.c.x", "foo!", dojo); + t.is("foo!", dojo.zoo.c.x); + }, + + function getUndefined(t){ + var x = dojo.getObject('dojo.zoo.b'); + t.is(undefined, x); + }, + + function setDeep(t){ + dojo.setObject("dojo.zoo.c.e.f.g.h.i", 42); + t.is(42, dojo.zoo.c.e.f.g.h.i); + }, + + function getDeep(t){ + dojo.getObject("dojo.zoo.bar.baz.bam", true); + dojo.zoo.bar.baz.bam.x = 10; + t.is(10, dojo.zoo.bar.baz.bam.x); + } + + ] +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/query.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/query.html new file mode 100644 index 0000000..ce4f208 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/query.html @@ -0,0 +1,401 @@ + + + testing dojo.query() + + + + + +

                            testing dojo.query()

                            +
                            +

                            h3 span endh3

                            + +
                            +

                            h3

                            + + +
                            +

                            h3

                            +

                            h3

                            + + + + + +
                            +
                            +
                            +
                            +
                            +
                            + + +
                            +
                            + + + + + + +
                            + + + +
                            +
                            +

                            one

                            +
                            +

                            two

                            +
                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/query.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/query.js new file mode 100644 index 0000000..5a4b135 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/query.js @@ -0,0 +1,6 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests._base.query", require.toUrl("./query.html"), 60000); + doh.register("tests._base.NodeList", require.toUrl("./NodeList.html"), 60000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/queryPortability.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/queryPortability.html new file mode 100644 index 0000000..56a47c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/queryPortability.html @@ -0,0 +1,24 @@ + + + look ma! query, but no Dojo! + + + + + + + + +

                            howdy!

                            +

                            howdy!

                            +

                            howdy

                            +

                            howdy!

                            +
                            thinger
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/runTests.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/runTests.html new file mode 100644 index 0000000..9a77dff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/runTests.html @@ -0,0 +1,9 @@ + + + + Dojo CORE and BASE D.O.H. Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingIframe.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingIframe.js new file mode 100644 index 0000000..7882e28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingIframe.js @@ -0,0 +1,103 @@ +var isQuirks = document.compatMode == "BackCompat"; + +function runScrollingTest(resultNode){ + // reposition the absolute-positioned tag to the top/left of the static control + // element and check to make sure each has the same offsetLeft/Top + if(!("dojo" in window)){ + var doc = frameElement.ownerDocument; + var win = doc.parentWindow || doc.defaultView; + dojo = win.dojo; + } + var isLtr = dojo.hitch(dojo, "withGlobal")(window, "_isBodyLtr", dojo, []); + var root = isQuirks? document.body : document.documentElement; + var control = document.getElementById("control"); + var clientWidth = document.getElementById("clientWidth"); + var abs1 = document.getElementById("abs1"); + window.scrollTo(0, 0); // start with standarized placement + setTimeout(function(){ + var cw = dojo.hitch(dojo, "withGlobal")(window, "position", dojo, [clientWidth, false]); + if(cw.x != 0){ + scrollBy(cw.x, 0); // scroll width:100% control element fully into view + } + var p = dojo.hitch(dojo, "withGlobal")(window, "position", dojo, [control, true]); + abs1.style.left = p.x + "px"; + abs1.style.top = p.y + "px"; + setTimeout(function(){ + cw = dojo.hitch(dojo, "withGlobal")(window, "position", dojo, [clientWidth, false]); + if(cw.x >= 0 || (cw.x < 0 && root.clientWidth - cw.w == cw.x)){ + if(abs1.offsetLeft == control.offsetLeft){ + if(abs1.offsetTop == control.offsetTop){ + resultNode.testResult = "EQUAL"; + }else{ + resultNode.testResult = "abs1.offsetTop="+abs1.offsetTop + " control.offsetTop="+control.offsetTop; + } + }else{ + resultNode.testResult = "abs1.offsetLeft="+abs1.offsetLeft + " control.offsetLeft="+control.offsetLeft; + } + }else{ + resultNode.testResult = "100% width element start/size=" + cw.x+'/'+cw.w + " frame client left/width="+root.clientLeft+'/'+root.clientWidth; + } + if(resultNode.resultReady){ resultNode.resultReady(); } + }, 100); + }, 100); +} + +function genScrollingTestNodes(hScroll, vScroll, large){ + document.write( + '
                             
                            ' + + '
                              
                            ' + + ( large + ? ( + (hScroll ? '
                             
                            ' : '') + + (hScroll ? '
                             
                            ' : '') + + (vScroll ? '
                             
                            ' : '') + ) + : '' + ) + + ''); +} + +function genScrollingTestBody(){ + var options = window.location.search.substr(1).toLowerCase().split(/&/); + options.dir = "ltr"; + for(var i=0; i < options.length; i++){ + var option = options[i]; + switch(option){ + case "ltr": + case "rtl": + options.dir = option; + break; + case"both": + options.horz = 1; + options.vert = 1; + break; + default: options[option] = 1; + } + } + var html = document.getElementsByTagName("HTML")[0]; + html.dir = options.dir; + // the setTimeout in the onload allows the browser time to scroll the iframe to the previous position + var scroll = options.large ? '' : 'scroll'; + if(!options.horz){ + html.style.overflowX = "hidden"; + }else if(!isQuirks && !options.large){ + html.style.overflowX = scroll; + } + if(!options.vert){ + html.style.overflowY = "hidden"; + }else if(!isQuirks && !options.large){ + html.style.overflowY = scroll; + } + document.write(''); + document.write('
                            '+(isQuirks?'quirks ':'strict ')+(options.horz?'horiz ':'')+(options.vert?'vert ':'')+(options.large?'scrolling ':'')+options.dir+'
                            '); + genScrollingTestNodes(options.horz, options.vert, options.large); + document.write(''); +} + +if(!document.body){ + frameElement.runScrollingTest = runScrollingTest; + genScrollingTestBody(); +}else{ + document.write('
                             
                            '); + genScrollingTestNodes(); +} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingQuirksIframe.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingQuirksIframe.html new file mode 100644 index 0000000..9a3b453 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingQuirksIframe.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingStrictIframe.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingStrictIframe.html new file mode 100644 index 0000000..945a2a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/scrollingStrictIframe.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/timeout.php b/js/dojo-release-1.7.2-src/dojo/tests/_base/timeout.php new file mode 100644 index 0000000..4eeb35c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/timeout.php @@ -0,0 +1,7 @@ + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/window.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/window.html new file mode 100644 index 0000000..ce6ee80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/window.html @@ -0,0 +1,104 @@ + + + withDoc test + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/window.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/window.js new file mode 100644 index 0000000..cd4ea2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/window.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests._base.window", require.toUrl("./window.html"), 15000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/window_iframe_quirks.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/window_iframe_quirks.html new file mode 100644 index 0000000..3d5ea5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/window_iframe_quirks.html @@ -0,0 +1,11 @@ + + + Quirks mode frame + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/window_iframe_standards.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/window_iframe_standards.html new file mode 100644 index 0000000..88abebc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/window_iframe_standards.html @@ -0,0 +1,15 @@ + + + + Standards mode frame + + + + Standards mode frame + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.html b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.html new file mode 100644 index 0000000..027ed56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.html @@ -0,0 +1,520 @@ + + + + testing form and xhr utils + + + + + + +
                            + + + +
                            +
                            + + + + + + + File input should not show up in formToObject. +
                            +
                            + +
                            +
                            + +
                            +
                            + + + +
                            +
                            + + + + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.js b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.js new file mode 100644 index 0000000..c64a634 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests._base.xhr", require.toUrl("./xhr.html"), 60000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.xml b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.xml new file mode 100644 index 0000000..9f86784 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhr.xml @@ -0,0 +1,2 @@ + +blarg diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/xhrDummyMethod.php b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhrDummyMethod.php new file mode 100644 index 0000000..c9206fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhrDummyMethod.php @@ -0,0 +1,7 @@ + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/_base/xhtml.php b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhtml.php new file mode 100644 index 0000000..7134185 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/_base/xhtml.php @@ -0,0 +1,29 @@ + + + + + + + + + + +

                            hey there!

                            +

                            ...

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/aspect.js b/js/dojo-release-1.7.2-src/dojo/tests/aspect.js new file mode 100644 index 0000000..be1bd6e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/aspect.js @@ -0,0 +1,119 @@ +dojo.provide("dojo.tests.aspect"); + +var aspect = dojo.require("dojo.aspect"); + +doh.register("tests.aspect", + [ + function before(t){ + var order = []; + var obj = { + method: function(a){ + order.push(a); + } + }; + var signal = aspect.before(obj, "method", function(a){ + order.push(a); + return [a+1]; + }); + obj.method(0); + obj.method(2); + var signal2 = aspect.before(obj, "method", function(a){ + order.push(a); + return [a+1]; + }); + obj.method(4); + signal.remove(); + obj.method(7); + signal2.remove(); + obj.method(9); + t.is(order, [0,1,2,3,4,5,6,7,8,9]); + }, + + function after(t){ + var order = []; + var obj = { + method: function(a){ + order.push(a); + return a+1; + } + }; + var signal = aspect.after(obj, "method", function(a){ + order.push(0); + return a+1; + }); + obj.method(0); + var signal2 = aspect.after(obj, "method", function(a){ + order.push(a); + }); + obj.method(3); + var signal3 = aspect.after(obj, "method", function(a){ + order.push(3); + }, true); + obj.method(3); + signal2.remove(); + obj.method(6); + signal3.remove(); + var signal4 = aspect.after(obj, "method", function(a){ + order.push(4); + }, true); + signal.remove(); + obj.method(7); + t.is(order, [0, 0, 3, 0, 5, 3, 0, 5, 3, 6, 0, 3, 7, 4]); + }, + function around(t){ + var order = []; + var obj = { + method: function(a){ + order.push(a); + return a+1; + } + }; + var beforeSignal = aspect.before(obj, "method", function(a){ + order.push(a); + }); + var signal = aspect.around(obj, "method", function(original){ + return function(a){ + a= a + 1; + a = original(a); + order.push(a); + return a+1; + } + }); + order.push(obj.method(0)); + obj.method(4); + t.is(order, [0,1,2,3,4,5,6]); + }, + function delegation(t){ + var order = []; + var proto = { + foo: function(x){ + order.push(x); + return x; + }, + bar: function(){ + } + }; + aspect.after(proto, "foo", function(x){ + order.push(x + 1); + return x; + }); + aspect.after(proto, "bar", function(x){ + t.t(this.isInstance); + }); + proto.foo(0); + function Class(){ + } + Class.prototype = proto; + var instance = new Class(); + instance.isInstance = true; + aspect.after(instance, "foo", function(x){ + order.push(x + 2); + return x; + }); + instance.bar(); + instance.foo(2); + proto.foo(5); + t.is(order, [0,1,2,3,4,5,6]); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/back-hash.js b/js/dojo-release-1.7.2-src/dojo/tests/back-hash.js new file mode 100644 index 0000000..d6cb79b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/back-hash.js @@ -0,0 +1,25 @@ +define(["../main", "doh", "../back"], function(dojo, doh){ + doh.register("tests.back.hash", [ + function getAndSet(t) { + var cases = [ + "test", + "test with spaces", + "test%20with%20encoded", + "test+with+pluses", + " leading", + "trailing ", + "under_score", + "extra#mark", + "extra?instring", + "extra&instring", + "#leadinghash" + ]; + var b = dojo.back; + function verify(s){ + dojo.back.setHash(s); + t.is(s, dojo.back.getHash(s)); + } + dojo.forEach(cases, verify); + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/back.html b/js/dojo-release-1.7.2-src/dojo/tests/back.html new file mode 100644 index 0000000..1f86150 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/back.html @@ -0,0 +1,110 @@ + + + + + + + + + +
                            +

                            dojo.back test

                            + + +

                            This page tests the dojo.back back/forward code.

                            + +

                            The buttons that start with "Link" on them don't use any dojo.xhr* calls, + just JS data already in the page.

                            + +
                              +
                            • Don't test this page using local disk for MSIE. MSIE will not + create a history list for iframe_history.html if served from a file: + URL. Serve the test pages from a web server to test in that browser.
                            • +
                            • Safari 2.0.3+ (and probably 1.3.2+): Only the back button works OK + (not the forward button).
                            • +
                            • Opera 8.5.3: Does not work.
                            • +
                            • Konqueror: Unknown. The latest may have Safari's behavior.
                            • +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            + Data Output:
                            +
                            +
                            + Back/Forward Info:
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/back.js b/js/dojo-release-1.7.2-src/dojo/tests/back.js new file mode 100644 index 0000000..cd061a9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/back.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.back", require.toUrl("./back.html"), 30000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/baseonly.js b/js/dojo-release-1.7.2-src/dojo/tests/baseonly.js new file mode 100644 index 0000000..42b9b9a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/baseonly.js @@ -0,0 +1 @@ +define(["./_base"], 1); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/behavior.html b/js/dojo-release-1.7.2-src/dojo/tests/behavior.html new file mode 100644 index 0000000..1f4eb6d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/behavior.html @@ -0,0 +1,117 @@ + + + + Testing dojo.behavior + + + + + +
                            + .foo > span +
                            + .foo > .bar > span +
                            +
                            + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/behavior.js b/js/dojo-release-1.7.2-src/dojo/tests/behavior.js new file mode 100644 index 0000000..3d41006 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/behavior.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.behavior", require.toUrl("./behavior.html")); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/cache.js b/js/dojo-release-1.7.2-src/dojo/tests/cache.js new file mode 100644 index 0000000..95b8445 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/cache.js @@ -0,0 +1,29 @@ +define(["../main", "doh", "require", "../cache", "../_base/url"], function(dojo, doh, require) { + doh.register("tests.cache", [{ + name: "dojo.cache", + runTest: function(t){ + var expected = "

                            Hello World

                            "; + + t.is(expected, dojo.trim(dojo.cache("dojo.tests.cache", "regular.html"))); + t.is(expected, dojo.trim(dojo.cache("dojo.tests.cache", "sanitized.html", {sanitize: true}))); + + //Test object variant for module. + var objPath = require.toUrl("dojo/tests/cache/object.html"); + t.is(expected, dojo.trim(dojo.cache(new dojo._Url(objPath), {sanitize: true}))); + + //Just a couple of other passes just to make sure on manual inspection that the + //files are loaded over the network only once. + t.is(expected, dojo.trim(dojo.cache("dojo.tests.cache", "regular.html"))); + t.is(expected, dojo.trim(dojo.cache("dojo.tests.cache", "sanitized.html", {sanitize: true}))); + t.is(expected, dojo.trim(dojo.cache(new dojo._Url(objPath), {sanitize: true}))); + + //Make sure unset cache does not throw errors + t.is(null, dojo.cache("dojo.tests.cache", "regular.html", null)); + + //Set empty string as value + t.is("", dojo.cache("dojo.tests.cache", "regular.html", "")); + t.is("", dojo.cache("dojo.tests.cache", "regular.html")); + } + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/cache/object.html b/js/dojo-release-1.7.2-src/dojo/tests/cache/object.html new file mode 100644 index 0000000..41762e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/cache/object.html @@ -0,0 +1,11 @@ + + + + + + + +

                            Hello World

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/cache/regular.html b/js/dojo-release-1.7.2-src/dojo/tests/cache/regular.html new file mode 100644 index 0000000..f3e333e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/cache/regular.html @@ -0,0 +1 @@ +

                            Hello World

                            diff --git a/js/dojo-release-1.7.2-src/dojo/tests/cache/sanitized.html b/js/dojo-release-1.7.2-src/dojo/tests/cache/sanitized.html new file mode 100644 index 0000000..41762e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/cache/sanitized.html @@ -0,0 +1,11 @@ + + + + + + + +

                            Hello World

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/cldr.js b/js/dojo-release-1.7.2-src/dojo/tests/cldr.js new file mode 100644 index 0000000..62295a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/cldr.js @@ -0,0 +1,11 @@ +define(["..", "doh", "../cldr/supplemental", "../cldr/monetary"], function(dojo, doh){ + doh.register("tests.cldr", [ + function test_date_getWeekend(t){ + t.is(6, dojo.cldr.supplemental.getWeekend('en-us').start); + t.is(0, dojo.cldr.supplemental.getWeekend('en-us').end); + t.is(5, dojo.cldr.supplemental.getWeekend('he-il').start); + t.is(6, dojo.cldr.supplemental.getWeekend('he-il').end); + } + ]); +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/colors.js b/js/dojo-release-1.7.2-src/dojo/tests/colors.js new file mode 100644 index 0000000..514b1c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/colors.js @@ -0,0 +1,42 @@ +define(["../main", "doh", "../colors"], function(dojo, doh){ + + var verifyColor = function(t, source, expected){ + source = new dojo.Color(source); + expected = new dojo.Color(expected); + t.is(expected.toRgba(), source.toRgba()); + dojo.forEach(source.toRgba(), function(n){ t.is("number", typeof(n)); }); + }; + + doh.register("tests.colors", [ + // all tests below are taken from #4.2 of the CSS3 Color Module + function testColorEx01(t){ verifyColor(t, "black", [0, 0, 0]); }, + function testColorEx02(t){ verifyColor(t, "white", [255, 255, 255]); }, + function testColorEx03(t){ verifyColor(t, "maroon", [128, 0, 0]); }, + function testColorEx04(t){ verifyColor(t, "olive", [128, 128, 0]); }, + function testColorEx05(t){ verifyColor(t, "#f00", "red"); }, + function testColorEx06(t){ verifyColor(t, "#ff0000", "red"); }, + function testColorEx07(t){ verifyColor(t, "rgb(255, 0, 0)", "red"); }, + function testColorEx08(t){ verifyColor(t, "rgb(100%, 0%, 0%)", "red"); }, + function testColorEx09(t){ verifyColor(t, "rgb(300, 0, 0)", "red"); }, + function testColorEx10(t){ verifyColor(t, "rgb(255, -10, 0)", "red"); }, + function testColorEx11(t){ verifyColor(t, "rgb(110%, 0%, 0%)", "red"); }, + function testColorEx12(t){ verifyColor(t, "rgba(255, 0, 0, 1)", "red"); }, + function testColorEx13(t){ verifyColor(t, "rgba(100%, 0%, 0%, 1)", "red"); }, + function testColorEx14(t){ verifyColor(t, "rgba(0, 0, 255, 0.5)", [0, 0, 255, 0.5]); }, + function testColorEx15(t){ verifyColor(t, "rgba(100%, 50%, 0%, 0.1)", [255, 128, 0, 0.1]); }, + function testColorEx16(t){ verifyColor(t, "hsl(0, 100%, 50%)", "red"); }, + function testColorEx17(t){ verifyColor(t, "hsl(120, 100%, 50%)", "lime"); }, + function testColorEx18(t){ verifyColor(t, "hsl(120, 100%, 25%)", "green"); }, + function testColorEx19(t){ verifyColor(t, "hsl(120, 100%, 75%)", "#80ff80"); }, + function testColorEx20(t){ verifyColor(t, "hsl(120, 50%, 50%)", "#40c040"); }, + function testColorEx21(t){ verifyColor(t, "hsla(120, 100%, 50%, 1)", "lime"); }, + function testColorEx22(t){ verifyColor(t, "hsla(240, 100%, 50%, 0.5)", [0, 0, 255, 0.5]); }, + function testColorEx23(t){ verifyColor(t, "hsla(30, 100%, 50%, 0.1)", [255, 128, 0, 0.1]); }, + function testColorEx24(t){ verifyColor(t, "transparent", [0, 0, 0, 0]); }, + // all tests below test greyscale colors + function testColorEx25(t){ verifyColor(t, dojo.colors.makeGrey(5), [5, 5, 5, 1]); }, + function testColorEx26(t){ verifyColor(t, dojo.colors.makeGrey(2, 0.3), [2, 2, 2, 0.3]); } + ]); + +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/cookie.html b/js/dojo-release-1.7.2-src/dojo/tests/cookie.html new file mode 100644 index 0000000..7c4b10c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/cookie.html @@ -0,0 +1,78 @@ + + + testing Cookies + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/cookie.js b/js/dojo-release-1.7.2-src/dojo/tests/cookie.js new file mode 100644 index 0000000..46df058 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/cookie.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.cookie", require.toUrl("./cookie.html"), 30000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/currency.js b/js/dojo-release-1.7.2-src/dojo/tests/currency.js new file mode 100644 index 0000000..efcbe6b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/currency.js @@ -0,0 +1,67 @@ +define(["../main", "doh", "require", "../currency"], function(dojo, doh, require){ + + var runTest= function(dojo, t) { + t.is("\u20ac123.45", dojo.currency.format(123.45, {currency: "EUR", locale: "en-us"})); + t.is("$123.45", dojo.currency.format(123.45, {currency: "USD", locale: "en-us"})); + t.is("$1,234.56", dojo.currency.format(1234.56, {currency: "USD", locale: "en-us"})); + t.is("US$123.45", dojo.currency.format(123.45, {currency: "USD", locale: "en-ca"})); + t.is("$123.45", dojo.currency.format(123.45, {currency: "CAD", locale: "en-ca"})); + t.is("CA$123.45", dojo.currency.format(123.45, {currency: "CAD", locale: "en-us"})); + t.is("123,45\xa0\u20ac", dojo.currency.format(123.45, {currency: "EUR", locale: "de-de"})); + t.is("1.234,56\xa0\u20ac", dojo.currency.format(1234.56, {currency: "EUR", locale: "de-de"})); + // There is no special currency symbol for ADP, so expect the ISO code instead + t.is("ADP123", dojo.currency.format(123, {currency: "ADP", locale: "en-us"})); + t.is("$1,234", dojo.currency.format(1234, {currency: "USD", fractional: false, locale: "en-us"})); + + t.is(123.45, dojo.currency.parse("$123.45", {currency: "USD", locale: "en-us"})); + t.is(1234.56, dojo.currency.parse("$1,234.56", {currency: "USD", locale: "en-us"})); + t.is(123.45, dojo.currency.parse("123,45 \u20ac", {currency: "EUR", locale: "de-de"})); + t.is(123.45, dojo.currency.parse("123,45\xa0\u20ac", {currency: "EUR", locale: "de-de"})); + t.is(1234.56, dojo.currency.parse("1.234,56 \u20ac", {currency: "EUR", locale: "de-de"})); + t.is(1234.56, dojo.currency.parse("1.234,56\u20ac", {currency: "EUR", locale: "de-de"})); + + t.is(1234, dojo.currency.parse("$1,234", {currency: "USD", locale: "en-us"})); + t.is(1234, dojo.currency.parse("$1,234", {currency: "USD", fractional: false, locale: "en-us"})); + t.t(isNaN(dojo.currency.parse("$1,234", {currency: "USD", fractional: true, locale: "en-us"}))); + }; + + if(require.async){ + require(["../main", "../currency", "../i18n"], function(dojo){ + doh.register("tests.currency", { + name: "currency", + timeout: 2000, + runTest: function(t){ + var + def = new doh.Deferred(), + deps= ["dojo"]; + dojo.forEach(["en-us", "en-ca", "de-de"], function(locale){ + deps.push(dojo.getL10nName("dojo/cldr", "currency", locale)); + deps.push(dojo.getL10nName("dojo/cldr", "number", locale)); + }); + require(deps, function(dojo){ + runTest(dojo, t); + def.callback(true); + }); + return def; + } + }); + }); + }else{ // tests for the v1.x loader/i18n machinery + tests.register("tests.currency",{ + // Test formatting and parsing of currencies in various locales pre-built in dojo.cldr + // NOTE: we can't set djConfig.extraLocale before bootstrapping unit tests, so directly + // load resources here for specific locales: + name: "currency", + setUp: function(){ + var partLocaleList = ["en-us", "en-ca", "de-de"]; + for(var i = 0 ; i < partLocaleList.length; i ++){ + dojo.requireLocalization("dojo.cldr","currency",partLocaleList[i]); + dojo.requireLocalization("dojo.cldr","number",partLocaleList[i]); + } + }, + runTest: function(t){ + runTest(dojo, t); + } + }); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data.js b/js/dojo-release-1.7.2-src/dojo/tests/data.js new file mode 100644 index 0000000..13ae1cf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data.js @@ -0,0 +1,10 @@ +define([ + "dojo", + "./data/utils", + "./data/ItemFileReadStore", + "./data/ItemFileWriteStore", + "./data/ObjectStore"], function(dojo) { + dojo.config.usePlainJson = true; +}); + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/ItemFileReadStore.js b/js/dojo-release-1.7.2-src/dojo/tests/data/ItemFileReadStore.js new file mode 100644 index 0000000..ef10ba4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/ItemFileReadStore.js @@ -0,0 +1,7 @@ +// FIXME: this test assumes the existence of the global object "tests" +tests= typeof tests=="undefined" ? {} : tests; + +define(["./readOnlyItemFileTestTemplates", "dojo/data/ItemFileReadStore"], function() { + tests.data.readOnlyItemFileTestTemplates.registerTestsForDatastore("dojo.data.ItemFileReadStore"); +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/ItemFileWriteStore.js b/js/dojo-release-1.7.2-src/dojo/tests/data/ItemFileWriteStore.js new file mode 100644 index 0000000..e0c9947 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/ItemFileWriteStore.js @@ -0,0 +1,1591 @@ +// FIXME: this test assumes the existence of the global object "tests" +define([ + "dojo", + "doh", + "require", + "./readOnlyItemFileTestTemplates", + "dojo/data/ItemFileWriteStore", + "dojo/data/api/Read", + "dojo/data/api/Identity", + "dojo/data/api/Write", + "dojo/data/api/Notification"], function(dojo, doh, require) { + +dojo.getObject("data.ItemFileWriteStore", true, tests); + +// First, make sure ItemFileWriteStore can still pass all the same unit tests +// that we use for its superclass, ItemFileReadStore: +tests.data.readOnlyItemFileTestTemplates.registerTestsForDatastore("dojo.data.ItemFileWriteStore"); + +tests.data.ItemFileWriteStore.getTestData = function(name){ + var data = {}; + if(name === "reference_integrity"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/reference_integrity.json")}; + }else{ + data = + { data: { + "identifier": "id", + "label": "name", + "items": [ + {"id": 1, "name": "Item 1"}, + {"id": 2, "name": "Item 2"}, + {"id": 3, "name": "Item 3"}, + {"id": 4, "name": "Item 4"}, + {"id": 5, "name": "Item 5"}, + {"id": 6, "name": "Item 6"}, + {"id": 7, "name": "Item 7"}, + {"id": 8, "name": "Item 8"}, + {"id": 9, "name": "Item 9"}, + {"id": 10, "name": "Item 10", "friends": [{"_reference": 1},{"_reference": 3},{"_reference": 5}]}, + {"id": 11, "name": "Item 11", "friends": [{"_reference": 10}], "siblings": [{"_reference": 10}]}, + {"id": 12, "name": "Item 12", "friends": [{"_reference": 3},{"_reference": 7}], "enemies": [{"_reference": 10}]}, + {"id": 13, "name": "Item 13", "friends": [{"_reference": 10}]}, + {"id": 14, "name": "Item 14", "friends": [{"_reference": 11}]}, + {"id": 15, "name": "item 15", "friends": [{"id": 16, "name": "Item 16"}]} + ] + } + }; + } + } + return data; +}; + + +// Now run some tests that are specific to the write-access features: +doh.register("tests.data.ItemFileWriteStore", + [ + function test_getFeatures(){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var features = store.getFeatures(); + + // make sure we have the expected features: + doh.assertTrue(features["dojo.data.api.Read"] !== null); + doh.assertTrue(features["dojo.data.api.Identity"] !== null); + doh.assertTrue(features["dojo.data.api.Write"] !== null); + doh.assertTrue(features["dojo.data.api.Notification"] !== null); + doh.assertFalse(features["iggy"]); + + // and only the expected features: + var count = 0; + for(var i in features){ + doh.assertTrue((i === "dojo.data.api.Read" || + i === "dojo.data.api.Identity" || + i === "dojo.data.api.Write" || + i === "dojo.data.api.Notification")); + count++; + } + doh.assertEqual(count, 4); + }, + function testWriteAPI_setValue(){ + // summary: + // Simple test of the setValue API + // description: + // Simple test of the setValue API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + var onComplete = function(items, request){ + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "capital", "Cairo")); + + // FIXME: + // Okay, so this seems very odd. Maybe I'm just being dense. + // These tests works: + doh.assertEqual(store.isDirty(item), false); + doh.assertTrue(store.isDirty(item) === false); + // But these seemingly equivalent tests will not work: + // doh.assertFalse(store.isDirty(item)); + // doh.assertTrue(!(store.isDirty(item))); + // + // All of which seems especially weird, given that this *does* work: + doh.assertFalse(store.isDirty()); + + doh.assertTrue(store.isDirty(item) === false); + doh.assertTrue(!store.isDirty()); + store.setValue(item, "capital", "New Cairo"); + doh.assertTrue(store.isDirty(item)); + doh.assertTrue(store.isDirty()); + doh.assertEqual(store.getValue(item, "capital").toString(), "New Cairo"); + deferred.callback(true); + }; + var onError = function(error, request){ + deferred.errback(error); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_setValues(){ + // summary: + // Simple test of the setValues API + // description: + // Simple test of the setValues API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + function onComplete(items, request){ + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Egypt")); + doh.assertTrue(store.isDirty(item) === false); + doh.assertTrue(!store.isDirty()); + store.setValues(item, "name", ["Egypt 1", "Egypt 2"]); + doh.assertTrue(store.isDirty(item)); + doh.assertTrue(store.isDirty()); + var values = store.getValues(item, "name"); + doh.assertTrue(values[0] == "Egypt 1"); + doh.assertTrue(values[1] == "Egypt 2"); + deferred.callback(true); + } + function onError(error, request){ + deferred.errback(error); + } + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_unsetAttribute(){ + // summary: + // Simple test of the unsetAttribute API + // description: + // Simple test of the unsetAttribute API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + function onComplete(items, request) { + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Egypt")); + doh.assertTrue(store.isDirty(item) === false); + doh.assertTrue(!store.isDirty()); + store.unsetAttribute(item, "name"); + doh.assertTrue(store.isDirty(item)); + doh.assertTrue(store.isDirty()); + doh.assertTrue(!store.hasAttribute(item, "name")); + deferred.callback(true); + } + function onError(error, request) { + deferred.errback(error); + } + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_newItem(){ + // summary: + // Simple test of the newItem API + // description: + // Simple test of the newItem API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + doh.assertTrue(!store.isDirty()); + + var onNewInvoked = false; + store.onNew = function(newItem, parentInfo){ + + doh.assertTrue(newItem !== null); + doh.assertTrue(parentInfo === null); + doh.assertTrue(store.isItem(newItem)); + onNewInvoked = true; + }; + var canada = store.newItem({name: "Canada", abbr:"ca", capital:"Ottawa"}); + doh.assertTrue(onNewInvoked); + + doh.assertTrue(store.isDirty(canada)); + doh.assertTrue(store.isDirty()); + doh.assertTrue(store.getValues(canada, "name") == "Canada"); + function onComplete(items, request){ + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Canada")); + deferred.callback(true); + } + function onError(error, request){ + deferred.errback(error); + } + store.fetch({query:{name:"Canada"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_newItem_withParent(){ + // summary: + // Simple test of the newItem API with a parent assignment + // description: + // Simple test of the newItem API with a parent assignment + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + doh.assertTrue(!store.isDirty()); + + var onError = function(error, request){ + deferred.errback(error); + }; + + var onComplete = function(items, request){ + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Egypt")); + + //Attach an onNew to validate we get expected values. + var onNewInvoked = false; + store.onNew = function(newItem, parentInfo){ + doh.assertEqual(item, parentInfo.item); + doh.assertEqual("cities", parentInfo.attribute); + doh.assertTrue(parentInfo.oldValue === undefined); + doh.assertTrue(parentInfo.newValue === newItem); + onNewInvoked = true; + }; + + //Attach an onSet and verify onSet is NOT called in this case. + store.onSet = function(item, attribute, oldValue, newValue){ + doh.assertTrue(false); + }; + + + + //See if we can add in a new item representing the city of Cairo. + //This should also call the onNew set above.... + var newItem = store.newItem({name: "Cairo", abbr: "Cairo"}, {parent: item, attribute: "cities"}); + doh.assertTrue(onNewInvoked); + + function onCompleteNewItemShallow(items, request){ + doh.assertEqual(0, items.length); + function onCompleteNewItemDeep(items, request){ + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertEqual("Cairo", store.getValue(item, "name")); + deferred.callback(true); + } + //Do a deep search now, should find the new item of the city with name attribute Cairo. + store.fetch({query:{name:"Cairo"}, onComplete: onCompleteNewItemDeep, onError: onError, queryOptions: {deep:true}}); + } + //Do a shallow search first, should find nothing. + store.fetch({query:{name:"Cairo"}, onComplete: onCompleteNewItemShallow, onError: onError}); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + + function testWriteAPI_newItem_multiple_withParent(){ + // summary: + // Simple test of the newItem API with a parent assignment multiple times. + // description: + // Simple test of the newItem API with a parent assignment multiple times. + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + + doh.assertTrue(!store.isDirty()); + + function onComplete(items, request){ + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Egypt")); + + //Attach an onNew to validate we get expected values. + store.onNew = function(newItem, parentInfo){ + doh.assertEqual(item, parentInfo.item); + doh.assertEqual("cities", parentInfo.attribute); + + doh.assertTrue(parentInfo.oldValue === undefined); + + doh.assertTrue(parentInfo.newValue === newItem); + }; + + //See if we can add in a new item representing the city of Cairo. + //This should also call the onNew set above.... + var newItem1 = store.newItem({name: "Cairo", abbr: "Cairo"}, {parent: item, attribute: "cities"}); + + //Attach a new onNew to validate we get expected values. + store.onNew = function(newItem, parentInfo){ + doh.assertEqual(item, parentInfo.item); + doh.assertEqual("cities", parentInfo.attribute); + + console.log(parentInfo.oldValue); + doh.assertTrue(parentInfo.oldValue == newItem1); + + doh.assertTrue(parentInfo.newValue[0] == newItem1); + doh.assertTrue(parentInfo.newValue[1] == newItem); + }; + var newItem2 = store.newItem({name: "Banha", abbr: "Banha"}, {parent: item, attribute: "cities"}); + + //Attach a new onNew to validate we get expected values. + store.onNew = function(newItem, parentInfo){ + doh.assertEqual(item, parentInfo.item); + doh.assertEqual("cities", parentInfo.attribute); + + doh.assertTrue(parentInfo.oldValue[0] == newItem1); + doh.assertTrue(parentInfo.oldValue[1] == newItem2); + + doh.assertTrue(parentInfo.newValue[0] == newItem1); + doh.assertTrue(parentInfo.newValue[1] == newItem2); + doh.assertTrue(parentInfo.newValue[2] == newItem); + }; + var newItem3 = store.newItem({name: "Damanhur", abbr: "Damanhur"}, {parent: item, attribute: "cities"}); + deferred.callback(true); + } + function onError(error, request){ + deferred.errback(error); + } + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + + function testWriteAPI_deleteItem(){ + // summary: + // Simple test of the deleteItem API + // description: + // Simple test of the deleteItem API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + + var onError = function(error, request){ + deferred.errback(error); + }; + + var onComplete = function(items, request){ + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Egypt")); + doh.assertTrue(store.isDirty(item) === false); + doh.assertTrue(!store.isDirty()); + store.deleteItem(item); + doh.assertTrue(store.isDirty(item)); + doh.assertTrue(store.isDirty()); + var onCompleteToo = function(itemsToo, requestToo) { + doh.assertEqual(0, itemsToo.length); + deferred.callback(true); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_isDirty(){ + // summary: + // Simple test of the isDirty API + // description: + // Simple test of the isDirty API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + function onComplete(items, request) { + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Egypt")); + store.setValue(item, "name", "Egypt 2"); + doh.assertTrue(store.getValue(item, "name") == "Egypt 2"); + doh.assertTrue(store.isDirty(item)); + deferred.callback(true); + } + function onError(error, request) { + deferred.errback(error); + } + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_revert(){ + // summary: + // Simple test of the revert API + // description: + // Simple test of the revert API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + + var onError = function(error, request){ + deferred.errback(error); + }; + + var onComplete = function(items, request) { + doh.assertEqual(1, items.length); + var item = items[0]; + doh.assertTrue(store.containsValue(item, "name", "Egypt")); + doh.assertTrue(store.isDirty(item) === false); + doh.assertTrue(!store.isDirty()); + store.setValue(item, "name", "Egypt 2"); + doh.assertTrue(store.getValue(item, "name") == "Egypt 2"); + doh.assertTrue(store.isDirty(item)); + doh.assertTrue(store.isDirty()); + store.revert(); + + //Fetch again to see if it reset the state. + var onCompleteToo = function(itemsToo, requestToo){ + doh.assertEqual(1, itemsToo.length); + var itemToo = itemsToo[0]; + doh.assertTrue(store.containsValue(itemToo, "name", "Egypt")); + deferred.callback(true); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_save(){ + // summary: + // Simple test of the save API + // description: + // Simple test of the save API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + function onError(error){ + deferred.errback(error); + } + function onItem(item){ + store.setValue(item, "capital", "New Cairo"); + function onComplete() { + deferred.callback(true); + } + store.save({onComplete:onComplete, onError:onError}); + } + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return deferred; //Object + }, + function testWriteAPI_saveVerifyState(){ + // summary: + // Simple test of the save API + // description: + // Simple test of the save API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + function onError(error){ + deferred.errback(error); + } + function onItem(item){ + store.setValue(item, "capital", "New Cairo"); + function onComplete() { + //Check internal state. Note: Users should NOT do this, this is a UT verification + //of internals in this case. Ref tracker: #4394 + doh.assertTrue(!store._saveInProgress); + deferred.callback(true); + } + store.save({onComplete:onComplete, onError:onError}); + } + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return deferred; //Object + }, + function testWriteAPI_saveEverything(){ + // summary: + // Simple test of the save API + // description: + // Simple test of the save API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + var egypt; + + var deferred = new doh.Deferred(); + var onError = function(error){ + deferred.errback(error); + }; + + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + var struct = dojo.fromJson(newFileContentString); + doh.assertEqual(struct.identifier, store.getIdentityAttributes(egypt)[0]); + doh.assertEqual(struct.label, store.getLabelAttributes(egypt)[0]); + doh.assertEqual(struct.items.length, 7); + + var cloneStore = new dojo.data.ItemFileWriteStore({data:struct}); + var onItemClone = function(itemClone){ + var egyptClone = itemClone; + doh.assertEqual(store.getIdentityAttributes(egypt)[0], cloneStore.getIdentityAttributes(egyptClone)[0]); + doh.assertEqual(store.getLabelAttributes(egypt)[0], cloneStore.getLabelAttributes(egyptClone)[0]); + doh.assertEqual(store.getValue(egypt, "name"), cloneStore.getValue(egyptClone, "name")); + }; + cloneStore.fetchItemByIdentity({identity:"eg", onItem:onItemClone, onError:onError}); + saveCompleteCallback(); + }; + var onItem = function(item){ + egypt = item; + var onComplete = function() { + deferred.callback(true); + }; + store.setValue(egypt, "capital", "New Cairo"); + store.save({onComplete:onComplete, onError:onError}); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return deferred; //Object + }, + function testWriteAPI_saveEverything_HierarchyOff(){ + // summary: + // Simple test of the save API + // description: + // Simple test of the save API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); + store.hierarchical = false; + var africa; + + var deferred = new doh.Deferred(); + var onError = function(error){ + deferred.errback(error); + }; + + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + var struct = dojo.fromJson(newFileContentString); + doh.assertEqual(struct.items.length, 3); + var cloneStore = new dojo.data.ItemFileWriteStore({data:struct, hierarchical: false}); + var onItemClone = function(items, request){ + var africaClone = items[0]; + doh.assertEqual(store.getValue(africa, "name"), cloneStore.getValue(africaClone, "name")); + }; + cloneStore.fetch({query: {name:"Africa"}, onComplete:onItemClone, onError:onError, queryOptions: {deep: true}}); + saveCompleteCallback(); + }; + var onComplete = function(items, request){ + africa = items[0]; + var onComplete = function() { + deferred.callback(true); + }; + store.setValue(africa, "size", "HUGE!"); + store.save({onComplete:onComplete, onError:onError}); + }; + store.fetch({query: {name:"Africa"}, onComplete:onComplete, onError:onError, queryOptions: {deep: true}}); + return deferred; //Object + }, + function testWriteAPI_saveEverything_withDateType(){ + // summary: + // Simple test of the save API with a non-atomic type (Date) that has a type mapping. + // description: + // Simple test of the save API with a non-atomic type (Date) that has a type mapping. + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + + //Now load the new data into a datastore and validate that it stored the date right. + var dataset = dojo.fromJson(newFileContentString); + var newStore = new dojo.data.ItemFileWriteStore({data: dataset}); + + function gotItem(item){ + var independenceDate = newStore.getValue(item,"independence"); + doh.assertTrue(independenceDate instanceof Date); + doh.assertTrue(dojo.date.compare(new Date(1993,4,24), independenceDate, "date") === 0); + saveCompleteCallback(); + } + function failed(error, request){ + deferred.errback(error); + saveFailedCallback(); + } + newStore.fetchItemByIdentity({identity:"eg", onItem:gotItem, onError:failed}); + }; + + var onError = function(error){ + deferred.errback(error); + }; + var onItem = function(item){ + var onComplete = function() { + deferred.callback(true); + }; + store.setValue(item, "independence", new Date(1993,4,24)); + store.save({onComplete:onComplete, onError:onError}); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return deferred; //Object + }, + function testWriteAPI_saveEverything_withCustomColorTypeSimple(){ + // summary: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + // description: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + + //Set up the store basics: What data it has, and what to do when save is called for saveEverything + //And how to map the 'Color' type in and out of the format. + //(Test of saving all to a some location...) + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + + var customTypeMap = {'Color': dojo.Color }; + + var store = new dojo.data.ItemFileWriteStore({ + data:dataset, + typeMap: customTypeMap + }); + + var deferred = new doh.Deferred(); + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + //Now load the new data into a datastore and validate that it stored the Color right. + var dataset = dojo.fromJson(newFileContentString); + var newStore = new dojo.data.ItemFileWriteStore({data: dataset, typeMap: customTypeMap}); + + var deferred = new doh.Deferred(); + function gotItem(item){ + var hairColor = newStore.getValue(item,"hairColor"); + doh.assertTrue(hairColor instanceof dojo.Color); + doh.assertEqual("rgba(255, 255, 0, 1)", hairColor.toString()); + saveCompleteCallback(); + } + function failed(error, request){ + deferred.errback(error); + saveFailedCallback(); + } + newStore.fetchItemByIdentity({identity:"Animal", onItem:gotItem, onError:failed}); + }; + + //Add a new item with a color type, then save it. + var onError = function(error){ + deferred.errback(error); + }; + var onComplete = function() { + deferred.callback(true); + }; + + var animal = store.newItem({name: "Animal", hairColor: new dojo.Color("yellow")}); + store.save({onComplete:onComplete, onError:onError}); + return deferred; //Object + }, + function testWriteAPI_saveEverything_withCustomColorTypeGeneral(){ + // summary: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + // description: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + + //Set up the store basics: What data it has, and what to do when save is called for saveEverything + //And how to map the 'Color' type in and out of the format. + //(Test of saving all to a some location...) + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + + var customTypeMap = {'Color': { + type: dojo.Color, + deserialize: function(value){ + return new dojo.Color(value); + }, + serialize: function(obj){ + return obj.toString(); + } + } + }; + var store = new dojo.data.ItemFileWriteStore({ + data:dataset, + typeMap: customTypeMap + }); + + var deferred = new doh.Deferred(); + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + //Now load the new data into a datastore and validate that it stored the Color right. + var dataset = dojo.fromJson(newFileContentString); + var newStore = new dojo.data.ItemFileWriteStore({data: dataset, typeMap: customTypeMap}); + + var gotItem = function(item){ + var hairColor = newStore.getValue(item,"hairColor"); + doh.assertTrue(hairColor instanceof dojo.Color); + doh.assertEqual("rgba(255, 255, 0, 1)", hairColor.toString()); + saveCompleteCallback(); + }; + var failed = function(error, request){ + deferred.errback(error); + saveFailedCallback(); + }; + newStore.fetchItemByIdentity({identity:"Animal", onItem:gotItem, onError:failed}); + }; + + //Add a new item with a color type, then save it. + var onError = function(error){ + deferred.errback(error); + }; + var onComplete = function() { + deferred.callback(true); + }; + + var animal = store.newItem({name: "Animal", hairColor: new dojo.Color("yellow")}); + store.save({onComplete:onComplete, onError:onError}); + return deferred; //Object + }, + function testWriteAPI_newItem_revert(){ + // summary: + // Test for bug #5357. Ensure that the revert properly nulls the identity position + // for a new item after revert. + var args = {data: { + label:"name", + items:[ + {name:'Ecuador', capital:'Quito'}, + {name:'Egypt', capital:'Cairo'}, + {name:'El Salvador', capital:'San Salvador'}, + {name:'Equatorial Guinea', capital:'Malabo'}, + {name:'Eritrea', capital:'Asmara'}, + {name:'Estonia', capital:'Tallinn'}, + {name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + var store = new dojo.data.ItemFileWriteStore(args); + + var newCountry = store.newItem({name: "Utopia", capitol: "Perfect"}); + + //DO NOT ACCESS THIS WAY. THESE ARE INTERNAL VARIABLES. DOING THIS FOR TEST PURPOSES. + var itemEntryNum = newCountry[store._itemNumPropName]; + doh.assertTrue(store._arrayOfAllItems[itemEntryNum] === newCountry); + store.revert(); + doh.assertTrue(store._arrayOfAllItems[itemEntryNum] === null); + }, + function testWriteAPI_new_modify_revert(){ + // summary: + // Test of a new item, modify it, then revert, to ensure the state remains consistent. Added due to #9022. + // description: + // Test of a new item, modify it, then revert, to ensure the state remains consistent. Added due to #9022. + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + doh.assertTrue(!store.isDirty()); + + var onError = function(error, request){ + deferred.errback(error); + }; + + var intialFetch = function(items, request){ + var initialCount = items.length; + var canada = store.newItem({name: "Canada", abbr:"ca", capital:"Ottawa"}); + store.setValue(canada, "someattribute", "modified a new item!"); + var afterNewFetch = function(items, request){ + var afterNewCount = items.length; + doh.assertEqual(afterNewCount, (initialCount + 1)); + store.revert(); + var afterRevertFetch = function(items, request){ + var afterRevertCount = items.length; + doh.assertEqual(afterRevertCount, initialCount); + deferred.callback(true); + }; + store.fetch({onComplete: afterRevertFetch, onError: onError}); + }; + store.fetch({onComplete: afterNewFetch, onError: onError}); + }; + store.fetch({onComplete: intialFetch, onError: onError}); + return deferred; //Object + }, + function testWriteAPI_new_modify_delete_revert(){ + // summary: + // Test of a new item, modify it, delete it, then revert, to ensure the state remains consistent. Added due to #9022. + // description: + // Test of a new item, modify it, delete it, then revert, to ensure the state remains consistent. Added due to #9022. + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + var i; + var found = false; + + var deferred = new doh.Deferred(); + doh.assertTrue(!store.isDirty()); + + var onError = function(error, request){ + deferred.errback(error); + }; + + var intialFetch = function(items, request){ + var initialCount = items.length; + var canada = store.newItem({name: "Canada", abbr:"ca", capital:"Ottawa"}); + store.setValue(canada, "someattribute", "modified a new item!"); + + // check that after new and modify, the total items count goes up by one. + var afterNewFetch = function(items, request){ + var afterNewCount = items.length; + doh.assertEqual(afterNewCount, (initialCount + 1)); + store.deleteItem(canada); + + //Check that after delete, the total items count goes back to initial count. + //Also verify the item with abbr of ca is gone. + var afterDeleteFetch = function(items, request){ + var afterDeleteCount = items.length; + doh.assertEqual(initialCount, afterDeleteCount); + + for(i=0; i < items.length; i++){ + found = (store.getIdentity(items[i]) === "ca"); + if(found){ + break; + } + } + if(found){ + deferred.errback(new Error("Error: Found the supposedly deleted item!")); + }else{ + store.revert(); + //Check that after revert, we still have the same item count as the + //original fetch. Also verify the item with abbr of ca is gone. + var afterRevertFetch = function(items, request){ + var afterRevertCount = items.length; + doh.assertEqual(afterRevertCount, initialCount); + for(i=0; i < items.length; i++){ + found = (store.getIdentity(items[i]) === "ca"); + if(found){ + break; + } + } + if(found){ + deferred.errback(new Error("Error: Found the 'new' item after revert!")); + }else{ + deferred.callback(true); + } + }; + store.fetch({onComplete: afterRevertFetch, onError: onError}); + } + }; + store.fetch({onComplete: afterDeleteFetch, onError: onError}); + }; + store.fetch({onComplete: afterNewFetch, onError: onError}); + }; + store.fetch({onComplete: intialFetch, onError: onError}); + return deferred; //Object + }, + function testNotificationAPI_onSet(){ + // summary: + // Simple test of the onSet API + // description: + // Simple test of the onSet API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + function onError(error){ + deferred.errback(error); + } + function onItem(fetchedItem){ + var egypt = fetchedItem; + var connectHandle = null; + function setValueHandler(item, attribute, oldValue, newValue){ + doh.assertTrue(store.isItem(item)); + doh.assertTrue(item == egypt); + doh.assertTrue(attribute == "capital"); + doh.assertTrue(oldValue == "Cairo"); + doh.assertTrue(newValue == "New Cairo"); + deferred.callback(true); + dojo.disconnect(connectHandle); + } + connectHandle = dojo.connect(store, "onSet", setValueHandler); + store.setValue(egypt, "capital", "New Cairo"); + } + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + }, + function testNotificationAPI_onNew(){ + // summary: + // Simple test of the onNew API + // description: + // Simple test of the onNew API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + var connectHandle = null; + function newItemHandler(item){ + doh.assertTrue(store.isItem(item)); + doh.assertTrue(store.getValue(item, "name") == "Canada"); + deferred.callback(true); + dojo.disconnect(connectHandle); + } + connectHandle = dojo.connect(store, "onNew", newItemHandler); + var canada = store.newItem({name:"Canada", abbr:"ca", capital:"Ottawa"}); + }, + function testNotificationAPI_onDelete(){ + // summary: + // Simple test of the onDelete API + // description: + // Simple test of the onDelete API + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var deferred = new doh.Deferred(); + function onError(error){ + deferred.errback(error); + } + function onItem(fetchedItem){ + var egypt = fetchedItem; + var connectHandle = null; + function deleteItemHandler(item){ + doh.assertTrue(store.isItem(item) === false); + doh.assertTrue(item == egypt); + deferred.callback(true); + dojo.disconnect(connectHandle); + } + connectHandle = dojo.connect(store, "onDelete", deleteItemHandler); + store.deleteItem(egypt); + } + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + }, + function testReadAPI_functionConformanceToo(){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var functionName in readApi){ + var member = readApi[functionName]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[functionName]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + doh.assertTrue(passed); + }, + function testWriteAPI_functionConformance(){ + // summary: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + var writeApi = new dojo.data.api.Write(); + var passed = true; + + for(var functionName in writeApi){ + var member = writeApi[functionName]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[functionName]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + doh.assertTrue(passed); + }, + function testNotificationAPI_functionConformance(){ + // summary: + // Simple test Notification API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test Notification API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + var api = new dojo.data.api.Notification(); + var passed = true; + + for(var functionName in api){ + var member = api[functionName]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[functionName]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + doh.assertTrue(passed); + }, + function testIdentityAPI_noIdentifierSpecified(){ + // summary: + // Test for bug #3873. Given a datafile that does not specify an + // identifier, make sure ItemFileWriteStore auto-creates identities + // that are unique even after calls to deleteItem() and newItem() + var args = {data: { + label:"name", + items:[ + {name:'Ecuador', capital:'Quito'}, + {name:'Egypt', capital:'Cairo'}, + {name:'El Salvador', capital:'San Salvador'}, + {name:'Equatorial Guinea', capital:'Malabo'}, + {name:'Eritrea', capital:'Asmara'}, + {name:'Estonia', capital:'Tallinn'}, + {name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + var store = new dojo.data.ItemFileWriteStore(args); + var deferred = new doh.Deferred(); + + var onError = function(error, request){ + deferred.errback(error); + }; + var onComplete = function(items, request){ + doh.assertEqual(7, items.length); + + var lastItem = items[(items.length - 1)]; + var idOfLastItem = store.getIdentity(lastItem); + store.deleteItem(lastItem); + store.newItem({name:'Canada', capital:'Ottawa'}); + + var onCompleteAgain = function(itemsAgain, requestAgain){ + doh.assertEqual(7, itemsAgain.length); + var identitiesInUse = {}; + for(var i = 0; i < itemsAgain.length; ++i){ + var item = itemsAgain[i]; + var id = store.getIdentity(item); + if(identitiesInUse.hasOwnProperty(id)){ + // there should not already be an entry for this id + doh.assertTrue(false); + }else{ + // we want to add the entry now + identitiesInUse[id] = item; + } + } + deferred.callback(true); + }; + store.fetch({onComplete:onCompleteAgain, onError:onError}); + }; + + store.fetch({onComplete:onComplete, onError:onError}); + return deferred; + }, + function testIdentityAPI_noIdentifierSpecified_revert(){ + // summary: + // Test for bug #4691 Given a datafile that does not specify an + // identifier, make sure ItemFileWriteStore auto-creates identities + // that are unique even after calls to deleteItem() and newItem() + var args = {data: { + label:"name", + items:[ + {name:'Ecuador', capital:'Quito'}, + {name:'Egypt', capital:'Cairo'}, + {name:'El Salvador', capital:'San Salvador'}, + {name:'Equatorial Guinea', capital:'Malabo'}, + {name:'Eritrea', capital:'Asmara'}, + {name:'Estonia', capital:'Tallinn'}, + {name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + var store = new dojo.data.ItemFileWriteStore(args); + var deferred = new doh.Deferred(); + + var onError = function(error, request){ + deferred.errback(error); + }; + var onComplete = function(items, request){ + doh.assertEqual(7, items.length); + + var lastItem = items[(items.length - 1)]; + var idOfLastItem = store.getIdentity(lastItem); + store.deleteItem(lastItem); + store.newItem({name:'Canada', capital:'Ottawa'}); + + var onCompleteAgain = function(itemsAgain, requestAgain){ + doh.assertEqual(7, itemsAgain.length); + var identitiesInUse = {}; + for(var i = 0; i < itemsAgain.length; ++i){ + var item = itemsAgain[i]; + var id = store.getIdentity(item); + if(identitiesInUse.hasOwnProperty(id)){ + // there should not already be an entry for this id + doh.assertTrue(false); + }else{ + // we want to add the entry now + identitiesInUse[id] = item; + } + } + //Last test, revert everything and check item sizes. + store.revert(); + + //Now call fetch again and verify store state. + var revertComplete = function(itemsReverted, request){ + doh.assertEqual(7, itemsReverted.length); + deferred.callback(true); + }; + store.fetch({onComplete:revertComplete, onError:onError}); + }; + store.fetch({onComplete:onCompleteAgain, onError:onError}); + }; + store.fetch({onComplete:onComplete, onError:onError}); + return deferred; + }, + function testReferenceIntegrity_checkReferences(){ + // summary: + // Simple test to verify the references were properly resolved. + // description: + // Simple test to verify the references were properly resolved. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var onError = function(error, request){ + deferred.errback(error); + }; + var onComplete = function(items, request){ + + var item10 = null; + var item1 = null; + var item3 = null; + var item5 = null; + + var i; + for (i = 0; i < items.length; i++) { + var ident = store.getIdentity(items[i]); + if (ident === 10) { + item10 = items[i]; + }else if (ident === 1) { + item1 = items[i]; + }else if (ident === 3) { + item3 = items[i]; + }else if (ident === 5) { + item5 = items[i]; + } + } + var friends = store.getValues(item10, "friends"); + doh.assertTrue(friends !== null); + doh.assertTrue(friends !== undefined); + + doh.assertTrue(store.isItem(item10)); + doh.assertTrue(store.isItem(item1)); + doh.assertTrue(store.isItem(item3)); + doh.assertTrue(store.isItem(item5)); + var found = 0; + try{ + for (i = 0; i < friends.length; i++) { + if (i === 0) { + doh.assertTrue(store.isItem(friends[i])); + doh.assertEqual(friends[i], item1); + doh.assertEqual(store.getIdentity(friends[i]), 1); + found++; + }else if (i === 1) { + doh.assertTrue(store.isItem(friends[i])); + doh.assertEqual(friends[i], item3); + doh.assertEqual(store.getIdentity(friends[i]), 3); + found++; + }else if (i === 2) { + doh.assertTrue(store.isItem(friends[i])); + doh.assertEqual(friends[i], item5); + doh.assertEqual(store.getIdentity(friends[i]), 5); + found++; + } + } + }catch(e){ + doh.errback(e); + } + doh.assertEqual(3, found); + deferred.callback(true); + }; + store.fetch({onError: onError, onComplete: onComplete}); + return deferred; + }, + function testReferenceIntegrity_deleteReferencedItem(){ + // summary: + // Simple test to verify the references were properly deleted. + // description: + // Simple test to verify the references were properly deleted. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + } + function onItem(item, request){ + try{ + console.log("Before delete map state is: " + dojo.toJson(item[store._reverseRefMap])); + store.deleteItem(item); + console.log("After delete map state is: " + dojo.toJson(item[store._reverseRefMap])); + function verifyRefDelete(items, request){ + var passed = true; + for(var i = 0; i < items.length; i++){ + var curItem = items[i]; + var attributes = store.getAttributes(curItem); + for(var j = 0; j < attributes.length; j++){ + var values = store.getValues(curItem, attributes[j]); + var badRef = false; + for(var k = 0; k < values.length; k++){ + var value = values[k]; + try{ + var id = store.getIdentity(value); + if(id == 10){ + badRef = true; + break; + } + }catch(e){/*Not an item, even a dead one, just eat it.*/} + } + if(badRef){ + deferred.errback(new Error("Found a reference remaining to a deleted item. Failure.")); + passed = false; + break; + } + } + } + if(passed){ + deferred.callback(true); + } + } + store.fetch({onComplete: verifyRefDelete, onError: onError}); + }catch(error){ + deferred.errback(error); + } + } + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return deferred; + }, + function testReferenceIntegrity_deleteReferencedItemThenRevert(){ + // summary: + // Simple test to verify the references were properly deleted. + // description: + // Simple test to verify the references were properly deleted. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + } + function onItem(item, request){ + try{ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + console.log("Map before delete:"); + store._dumpReferenceMap(); + var beforeDelete = dojo.toJson(item[store._reverseRefMap]); + store.deleteItem(item); + console.log("Map after delete:"); + store._dumpReferenceMap(); + var afterDelete = dojo.toJson(item[store._reverseRefMap]); + store.revert(); + console.log("Map after revert:"); + store._dumpReferenceMap(); + var afterRevert = dojo.toJson(item[store._reverseRefMap]); + doh.assertTrue(afterRevert === beforeDelete); + }catch(e){ + deferred.errback(e); + passed = false; + } + if(passed){ + deferred.callback(true); + } + } + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return deferred; + }, + function testReferenceIntegrity_deleteMultipleItemsWithReferencesAndRevert(){ + // summary: + // Simple test to verify that a flow of deleting items with references and reverting does not damage the internal structure. + // Created for tracker bug: #5743 + // description: + // Simple test to verify that a flow of deleting items with references and reverting does not damage the internal structure. + // Created for tracker bug: #5743 + + var store = new dojo.data.ItemFileWriteStore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_references")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + doh.assertTrue(false); + } + function onItem(item, request){ + //Save off the located item, then locate another one (peer to Egypt) + doh.assertTrue(store.isItem(item)); + var egypt = item; + + function onItem2(item, request){ + doh.assertTrue(store.isItem(item)); + var nairobi = item; + + //Delete them + store.deleteItem(egypt); + store.deleteItem(nairobi); + try{ + //Revert, then do a fetch. If the internals have been damaged, this will generally + //cause onError to fire instead of onComplete. + store.revert(); + function onComplete(items, request){ + deferred.callback(true); + } + store.fetch({query: {name: "*"}, start: 0, count: 20, onComplete: onComplete, onError: onError}); + }catch(e){ + deferred.errback(e); + } + } + store.fetchItemByIdentity({identity: "Nairobi", onError: onError, onItem: onItem2}); + } + store.fetchItemByIdentity({identity: "Egypt", onError: onError, onItem: onItem}); + return deferred; + }, + function testReferenceIntegrity_removeReferenceFromAttribute(){ + // summary: + // Simple test to verify the reference removal updates the internal map. + // description: + // Simple test to verify the reference removal updates the internal map. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + doh.assertTrue(false); + } + function onItem(item, request){ + try{ + store.setValues(item, "friends", [null]); + + function onItem2(item10, request){ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + var refMap = item10[store._reverseRefMap]; + store._dumpReferenceMap(); + + console.log("MAP for Item 10 is: " + dojo.toJson(refMap)); + + //Assert there is no reference to item 10 in item 11's attribute 'friends'. + doh.assertTrue(!refMap["11"]["friends"]); + store.setValues(item, "siblings", [0, 1, 2]); + //Assert there are no more references to 10 in 11. Ergo, "11" should be a 'undefined' attribute for the map of items referencing '10'.. + doh.assertTrue(!refMap["11"]); + deferred.callback(true); + } + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem2}); + + }catch(e){ + console.debug(e); + deferred.errback(e); + doh.assertTrue(false); + } + } + store.fetchItemByIdentity({identity: 11, onError: onError, onItem: onItem}); + return deferred; + }, + function testReferenceIntegrity_deleteReferencedItemNonParent(){ + // summary: + // Simple test to verify the references to a non-parent item was properly deleted. + // description: + // Simple test to verify the references to a non-parent item was properly deleted. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + } + function onItem(item, request){ + try{ + console.log("Reference state for item 16 is: " + dojo.toJson(item[store._reverseRefMap])); + store.deleteItem(item); + function verifyRefDelete(items, request){ + var passed = true; + for(var i = 0; i < items.length; i++){ + var curItem = items[i]; + var attributes = store.getAttributes(curItem); + for(var j = 0; j < attributes.length; j++){ + var values = store.getValues(curItem, attributes[j]); + var badRef = false; + for(var k = 0; k < values.length; k++){ + var value = values[k]; + try{ + var id = store.getIdentity(value); + if(id == 16){ + badRef = true; + break; + } + }catch(e){/*Not an item, even a dead one, just eat it.*/} + } + if(badRef){ + deferred.errback(new Error("Found a reference remaining to a deleted item. Failure.")); + passed = false; + break; + } + } + } + if(passed){ + deferred.callback(true); + } + } + store.fetch({onComplete: verifyRefDelete, onError: onError}); + }catch(error){ + deferred.errback(error); + } + } + store.fetchItemByIdentity({identity: 16, onError: onError, onItem: onItem}); + return deferred; + }, + function testReferenceIntegrity_addReferenceToAttribute(){ + // summary: + // Simple test to verify the reference additions can happen. + // description: + // Simple test to verify the reference additions can happen. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + doh.assertTrue(false); + } + function onComplete(items, request){ + + doh.assertTrue(items.length > 2); + + var item1 = items[0]; + var item2 = items[1]; + + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + console.log("Map state for Item 1 is: " + dojo.toJson(item1[store._reverseRefMap])); + console.log("Map state for Item 2 is: " + dojo.toJson(item2[store._reverseRefMap])); + + store.setValue(item1, "siblings", item2); + + //Emit the current map state for inspection. + console.log("Map state for Item 1 is: " + dojo.toJson(item1[store._reverseRefMap])); + console.log("Map state for Item 2 is: " + dojo.toJson(item2[store._reverseRefMap])); + + doh.assertTrue(item2[store._reverseRefMap] !== null); + + //Assert there is a recorded reference to item 2 in item 1's attribute 'sibling'. + doh.assertTrue(item2[store._reverseRefMap][store.getIdentity(item1)]["siblings"]); + + deferred.callback(true); + } + store.fetch({onError: onError, onComplete: onComplete}); + return deferred; + }, + function testReferenceIntegrity_newItemWithParentReference(){ + // summary: + // Simple test to verify that newItems with a parent properly record the parent's reference in the map. + // description: + // Simple test to verify that newItems with a parent properly record the parent's reference in the map. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + doh.assertTrue(false); + } + function onItem(item, request){ + try{ + //Create a new item and set its parent to item 10's uncle attribute. + var newItem = store.newItem({id: 17, name: "Item 17"}, {parent: item, attribute: "uncles"}); + + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + //Look up the references to 17, as item 10 has one now on attribute 'uncles' + var refs = newItem[store._reverseRefMap]; + + //Assert there is a reference from 10 to item 17, on attribute uncle + doh.assertTrue(refs["10"]["uncles"]); + + console.log("State of map of item 17 after newItem: " + dojo.toJson(refs)); + }catch(e){ + console.debug(e); + deferred.errback(e); + doh.assertTrue(false); + passed = false; + } + if(passed){ + deferred.callback(true); + } + } + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return deferred; + }, + function testReferenceIntegrity_newItemWithReferenceToExistingItem(){ + // summary: + // Simple test to verify that a new item with references to existing items properly record the references in the map. + // description: + // Simple test to verify that a new item with references to existing items properly record the references in the map. + + var store = new dojo.data.ItemFileWriteStore(tests.data.ItemFileWriteStore.getTestData("reference_integrity")); + + var deferred = new doh.Deferred(); + var passed = true; + function onError(error, request){ + deferred.errback(error); + doh.assertTrue(false); + } + function onItem(item, request){ + try{ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + console.log("State of reference map to item 10 before newItem: " + dojo.toJson(item[store._reverseRefMap])); + + //Create a new item and set its parent to item 10's uncle attribute. + var newItem = store.newItem({id: 17, name: "Item 17", friends: [item]}); + + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + //Look up the references to 10, as item 17 has one on friends now. + var refs = item[store._reverseRefMap]; + + //Assert there is a reference from 15 to item 10, on attribute friends + doh.assertTrue(refs["17"]["friends"]); + + console.log("State of reference map to item 10 after newItem: " + dojo.toJson(refs)); + }catch(e){ + console.debug(e); + deferred.errback(e); + doh.assertTrue(false); + passed = false; + } + if(passed){ + deferred.callback(true); + } + } + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return deferred; + }, + function testReferenceIntegrity_disableReferenceIntegrity(){ + // summary: + // Simple test to verify reference integrity can be disabled. + // description: + // Simple test to verify reference integrity can be disabled. + + var params = tests.data.ItemFileWriteStore.getTestData("reference_integrity"); + params.referenceIntegrity = false; + var store = new dojo.data.ItemFileWriteStore(params); + + var deferred = new doh.Deferred(); + function onError(error, request){ + deferred.errback(error); + doh.assertTrue(false); + } + function onItem(item, request){ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + if(item[store._reverseRefMap] === undefined){ + deferred.callback(true); + }else{ + deferred.errback(new Error("Disabling of reference integrity failed.")); + } + } + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return deferred; + }, + function testReadAPI_close_dirty_failure(){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + params.clearOnClose = true; + params.urlPreventCache = true; + var store = new dojo.data.ItemFileWriteStore(params); + + var d = new doh.Deferred(); + var onItem = function(item){ + var error = null; + try { + doh.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + doh.assertEqual("Ecuador", val); + var newItem = store.newItem({abbr: "foo", name: "bar"}); + + //Should throw an error... + store.close(); + }catch (e){ + error = e; + } + if (error === null) { + d.errback(new Error("Store was dirty, should have thrown an error on close!")); + }else{ + d.callback(true); + } + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + ] +); + + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/ObjectStore.js b/js/dojo-release-1.7.2-src/dojo/tests/data/ObjectStore.js new file mode 100644 index 0000000..9b89c8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/ObjectStore.js @@ -0,0 +1,113 @@ +dojo.provide("dojo.tests.data.ObjectStore"); +dojo.require("dojo.data.ObjectStore"); +dojo.require("dojo.store.JsonRest"); +dojo.require("dojo.store.Memory"); + +(function(){ +var restStore = new dojo.store.JsonRest({target: dojo.moduleUrl("dojo.tests.store", "/")}); +var memoryStore = new dojo.store.Memory({ + data: [ + {id: 1, name: "one", prime: false}, + {id: 2, name: "two", even: true, prime: true}, + {id: 3, name: "three", prime: true}, + {id: 4, name: "four", even: true, prime: false}, + {id: 5, name: "five", prime: true} + ] +}); + +var dataStore = new dojo.data.ObjectStore({objectStore: restStore}); +var memoryDataStore = new dojo.data.ObjectStore({objectStore: memoryStore}); +tests.register("tests.data.ObjectStore", + [ + function testFetchByIdentity(t){ + var d = new doh.Deferred(); + dataStore.fetchItemByIdentity({identity: "node1.1", onItem: function(object){ + t.is(object.name, "node1.1"); + t.is(object.someProperty, "somePropertyA1"); + d.callback(true); + }}); + return d; + }, + function testQuery(t){ + var d = new doh.Deferred(); + dataStore.fetch({query:"treeTestRoot", onComplete: function(results){ + var object = results[0]; + t.is(object.name, "node1"); + t.is(object.someProperty, "somePropertyA"); + d.callback(true); + }}); + return d; + }, + function testNewItem(t){ + var newItem = memoryDataStore.newItem({ + foo: "bar", + id: Math.random() + }); + memoryDataStore.setValue(newItem, "prop1", 1); + memoryDataStore.save(); + memoryDataStore.setValue(newItem, "prop1", 10); + memoryDataStore.revert(); + t.is(memoryDataStore.getValue(newItem, "prop1"), 1); + memoryDataStore.fetchItemByIdentity({ + identity: memoryDataStore.getIdentity(newItem), + onItem: function(item){ + t.is(memoryDataStore.getValue(item, "foo"), "bar"); + memoryDataStore.setValue(newItem, "prop2", 2); + t.is(memoryDataStore.getValue(item, "prop1"), 1); + t.is(memoryDataStore.getValue(item, "prop2"), 2); + }}); + var newItem = memoryDataStore.newItem({ + foo: "bar", + id: Math.random() + }); + memoryDataStore.deleteItem(newItem); + memoryDataStore.save(); + memoryDataStore.fetchItemByIdentity({ + identity: memoryDataStore.getIdentity(newItem), + onItem: function(item){ + t.is(item, null); + } + }); + }, + function testMemoryQuery(t){ + var d = new doh.Deferred(); + memoryDataStore.fetch({query:{name:"one"}, onComplete: function(results){ + var object = results[0]; + t.is(results.length, 1); + t.is(object.name, "one"); + d.callback(true); + }}); + return d; + }, + function testMemoryQueryEmpty(t){ + var d = new doh.Deferred(); + memoryDataStore.fetch({query:{name:"o"}, onComplete: function(results){ + t.is(results.length, 0); + d.callback(true); + }}); + return d; + }, + function testMemoryQueryWithWildcard(t){ + var d = new doh.Deferred(); + memoryDataStore.fetch({query:{name:"f*"}, onComplete: function(results){ + var object = results[0]; + t.is(results.length, 2); + t.is(object.name, "four"); + d.callback(true); + }}); + return d; + }, + function testMemoryQueryWithWildcardCaseInsensitive(t){ + var d = new doh.Deferred(); + memoryDataStore.fetch({query:{name:"F*"}, queryOptions: {ignoreCase: true}, onComplete: function(results){ + var object = results[0]; + t.is(results.length, 2); + t.is(object.name, "four"); + d.callback(true); + }}); + return d; + } + ] +); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries.json new file mode 100644 index 0000000..71631da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries.json @@ -0,0 +1,11 @@ +{ identifier: 'abbr', + label: 'name', + items: [ + { abbr:'ec', name:'Ecuador', capital:'Quito' }, + { abbr:'eg', name:'Egypt', capital:'Cairo' }, + { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, + { abbr:'er', name:'Eritrea', capital:'Asmara' }, + { abbr:'ee', name:'Estonia', capital:'Tallinn' }, + { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries_commentFiltered.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_commentFiltered.json new file mode 100644 index 0000000..319e429 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_commentFiltered.json @@ -0,0 +1,12 @@ +/* +{ identifier: 'abbr', + items: [ + { abbr:'ec', name:'Ecuador', capital:'Quito' }, + { abbr:'eg', name:'Egypt', capital:'Cairo' }, + { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, + { abbr:'er', name:'Eritrea', capital:'Asmara' }, + { abbr:'ee', name:'Estonia', capital:'Tallinn' }, + { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } +]} +*/ diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries_idcollision.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_idcollision.json new file mode 100644 index 0000000..a0c4a7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_idcollision.json @@ -0,0 +1,10 @@ +{ identifier: 'abbr', + items: [ + { abbr:'ec', name:'Ecuador', capital:'Quito' }, + { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, + { abbr:'er', name:'Eritrea', capital:'Asmara' }, + { abbr:'ec', name:'Egypt', capital:'Cairo' }, + { abbr:'ee', name:'Estonia', capital:'Tallinn' }, + { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries_references.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_references.json new file mode 100644 index 0000000..136f3c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_references.json @@ -0,0 +1,44 @@ +{ 'identifier': 'name', + 'label': 'name', + 'items': [ + { 'name':'Africa', 'type':'continent', + 'children':[{'_reference':'Egypt'}, {'_reference':'Kenya'}, {'_reference':'Sudan'}] }, + { 'name':'Egypt', 'type':'country' }, + { 'name':'Kenya', 'type':'country', + 'children':[{'_reference':'Nairobi'}, {'_reference':'Mombasa'}] }, + { 'name':'Nairobi', 'type':'city' }, + { 'name':'Mombasa', 'type':'city' }, + { 'name':'Sudan', 'type':'country', + 'children':{'_reference':'Khartoum'} }, + { 'name':'Khartoum', 'type':'city' }, + { 'name':'Asia', 'type':'continent', + 'children':[{'_reference':'China'}, {'_reference':'India'}, {'_reference':'Russia'}, {'_reference':'Mongolia'}] }, + { 'name':'China', 'type':'country' }, + { 'name':'India', 'type':'country' }, + { 'name':'Russia', 'type':'country' }, + { 'name':'Mongolia', 'type':'country' }, + { 'name':'Australia', 'type':'continent', 'population':'21 million', + 'children':{'_reference':'Commonwealth of Australia'}}, + { 'name':'Commonwealth of Australia', 'type':'country', 'population':'21 million'}, + { 'name':'Europe', 'type':'continent', + 'children':[{'_reference':'Germany'}, {'_reference':'France'}, {'_reference':'Spain'}, {'_reference':'Italy'}] }, + { 'name':'Germany', 'type':'country' }, + { 'name':'France', 'type':'country' }, + { 'name':'Spain', 'type':'country' }, + { 'name':'Italy', 'type':'country' }, + { 'name':'North America', 'type':'continent', + 'children':[{'_reference':'Mexico'}, {'_reference':'Canada'}, {'_reference':'United States of America'}] }, + { 'name':'Mexico', 'type':'country', 'population':'108 million', area:'1,972,550 sq km', + 'children':[{'_reference':'Mexico City'}, {'_reference':'Guadalajara'}] }, + { 'name':'Mexico City', 'type':'city', 'population':'19 million', 'timezone':'-6 UTC'}, + { 'name':'Guadalajara', 'type':'city', 'population':'4 million', 'timezone':'-6 UTC' }, + { 'name':'Canada', 'type':'country', 'population':'33 million', area:'9,984,670 sq km', + 'children':[{'_reference':'Ottawa'}, {'_reference':'Toronto'}] }, + { 'name':'Ottawa', 'type':'city', 'population':'0.9 million', 'timezone':'-5 UTC'}, + { 'name':'Toronto', 'type':'city', 'population':'2.5 million', 'timezone':'-5 UTC' }, + { 'name':'United States of America', 'type':'country' }, + { 'name':'South America', 'type':'continent', + 'children':[{'_reference':'Brazil'}, {'_reference':'Argentina'}] }, + { 'name':'Brazil', 'type':'country', 'population':'186 million' }, + { 'name':'Argentina', 'type':'country', 'population':'40 million' } +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withBoolean.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withBoolean.json new file mode 100644 index 0000000..783d8a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withBoolean.json @@ -0,0 +1,11 @@ +{ identifier: 'abbr', + items: [ + { abbr:'ec', name:'Ecuador', capital:'Quito', real:true}, + { abbr:'eg', name:'Egypt', capital:'Cairo', real:true}, + { abbr:'sv', name:'El Salvador', capital:'San Salvador', real:true}, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo', real:true}, + { abbr:'er', name:'Eritrea', capital:'Asmara', real:true}, + { abbr:'ee', name:'Estonia', capital:'Tallinn', real:true}, + { abbr:'et', name:'Ethiopia', capital:'Addis Ababa', real:true}, + { abbr:'ut', name:'Utopia', capital:'Paradise', real:false} +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withDates.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withDates.json new file mode 100644 index 0000000..fdd2153 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withDates.json @@ -0,0 +1,21 @@ +{ identifier: 'abbr', + label: 'name', + items: [ + { abbr:'ec', name:'Ecuador', capital:'Quito' }, + { abbr:'eg', name:'Egypt', capital:'Cairo' }, + { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, + { abbr:'er', + name:'Eritrea', + capital:'Asmara', + independence:{_type:'Date', _value:"1993-05-24T00:00:00Z"} // May 24, 1993 in ISO-8601 standard + }, + { abbr:'ee', + name:'Estonia', + capital:'Tallinn', + independence:{_type:'Date', _value:"1991-08-20T00:00:00Z"} // August 20, 1991 in ISO-8601 standard + }, + { abbr:'et', + name:'Ethiopia', + capital:'Addis Ababa' } +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withNull.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withNull.json new file mode 100644 index 0000000..a0a7a3f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withNull.json @@ -0,0 +1,10 @@ +{ identifier: 'abbr', + items: [ + { abbr:'ec', name:null, capital:'Quito' }, + { abbr:'eg', name:null, capital:'Cairo' }, + { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, + { abbr:'er', name:'Eritrea', capital:'Asmara' }, + { abbr:'ee', name:null, capital:'Tallinn' }, + { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withoutid.json b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withoutid.json new file mode 100644 index 0000000..8db3046 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/countries_withoutid.json @@ -0,0 +1,10 @@ +{ label: 'name', + items: [ + { abbr:'ec', name:'Ecuador', capital:'Quito' }, + { abbr:'eg', name:'Egypt', capital:'Cairo' }, + { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, + { abbr:'er', name:'Eritrea', capital:'Asmara' }, + { abbr:'ee', name:'Estonia', capital:'Tallinn' }, + { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/data_multitype.json b/js/dojo-release-1.7.2-src/dojo/tests/data/data_multitype.json new file mode 100644 index 0000000..449995a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/data_multitype.json @@ -0,0 +1,18 @@ +{ + "identifier": "count", + "label": "count", + "items": [ + { "count": 1, "value": "true" }, + { "count": 2, "value": true }, + { "count": 3, "value": "false"}, + { "count": 4, "value": false }, + { "count": 5, "value": true }, + { "count": 6, "value": true }, + { "count": 7, "value": "true" }, + { "count": 8, "value": "true" }, + { "count": 9, "value": "false"}, + { "count": 10, "value": false }, + { "count": 11, "value": [false, false]}, + { "count": "12", "value": [false, "true"]} + ] +} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/geography_hierarchy_large.json b/js/dojo-release-1.7.2-src/dojo/tests/data/geography_hierarchy_large.json new file mode 100644 index 0000000..847c47b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/geography_hierarchy_large.json @@ -0,0 +1,44 @@ +{ identifier: 'name', + items: [ + { name:'Africa', type:'continent', children:[ + { name:'Egypt', type:'country' }, + { name:'Kenya', type:'country', children:[ + { name:'Nairobi', type:'city' }, + { name:'Mombasa', type:'city' } ] + }, + { name:'Sudan', type:'country', children: + { name:'Khartoum', type:'city' } + } ] + }, + { name:'Asia', type:'continent', children:[ + { name:'China', type:'country' }, + { name:'India', type:'country' }, + { name:'Russia', type:'country' }, + { name:'Mongolia', type:'country' } ] + }, + { name:'Australia', type:'continent', population:'21 million', children: + { name:'Commonwealth of Australia', type:'country', population:'21 million'} + }, + { name:'Europe', type:'continent', children:[ + { name:'Germany', type:'country' }, + { name:'France', type:'country' }, + { name:'Spain', type:'country' }, + { name:'Italy', type:'country' } ] + }, + { name:'North America', type:'continent', children:[ + { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', children:[ + { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, + { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' } ] + }, + { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', children:[ + { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, + { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }] + }, + { name:'United States of America', type:'country' } ] + }, + { name:'South America', type:'continent', children:[ + { name:'Brazil', type:'country', population:'186 million' }, + { name:'Argentina', type:'country', population:'40 million' } ] + } ] +} + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/geography_hierarchy_small.json b/js/dojo-release-1.7.2-src/dojo/tests/data/geography_hierarchy_small.json new file mode 100644 index 0000000..989e5f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/geography_hierarchy_small.json @@ -0,0 +1,19 @@ +{ items:[ + { name:'Africa', countries:[ + { name:'Egypt', capital:'Cairo' }, + { name:'Kenya', capital:'Nairobi' }, + { name:'Sudan', capital:'Khartoum' }]}, + { name:'Australia', capital:'Canberra' }, + { name:'North America', countries:[ + { name:'Canada', population:'33 million', cities:[ + { name:'Toronto', population:'2.5 million' }, + { name:'Alberta', population:'1 million' } + ]}, + { name: 'United States of America', capital: 'Washington DC', states:[ + { name: 'Missouri'}, + { name: 'Arkansas'} + ]} + ]} + ] +} + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/readOnlyItemFileTestTemplates.js b/js/dojo-release-1.7.2-src/dojo/tests/data/readOnlyItemFileTestTemplates.js new file mode 100644 index 0000000..dac49e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/readOnlyItemFileTestTemplates.js @@ -0,0 +1,3188 @@ +// FIXME: this test assumes the existence of the global object "tests" +define(["dojo", "doh", "require", "dojo/data/api/Read", "dojo/data/api/Identity", "dojo/date", "dojo/date/stamp"], function(dojo, doh, require) { + +dojo.getObject("data.readOnlyItemFileTestTemplates", true, tests); + +dojo.declare("tests.data.Wrapper", null, { + // summary: + // Simple class to use for typeMap in order to test out + // 'falsy' values for _value. + _wrapped: null, + + constructor: function(obj){ + this._wrapped = obj; + }, + + getValue: function() { + return this._wrapped; + }, + + setValue: function(obj) { + this._wrapped = obj; + }, + + toString: function(){ + return "WRAPPER: [" + this._wrapped + "]"; + } +}); + + +tests.data.readOnlyItemFileTestTemplates.registerTestsForDatastore = function(/* String */ datastoreClassName){ + // summary: + // Given the name of a datastore class to use, this function creates + // a set of unit tests for that datastore, and registers the new test + // group with the doh test framework. The new unit tests are based + // on a set of "template" unit tests. + var datastoreClass = dojo.getObject(datastoreClassName); + var testTemplates = tests.data.readOnlyItemFileTestTemplates.testTemplates; + var testsForDatastore = []; + var makeNewTestFunction = function(template){ + return function(t){return template.runTest(datastoreClass, t);}; + }; + for(var i = 0; i < testTemplates.length; ++i) { + var testTemplate = testTemplates[i]; + var test = {}; + test.name = testTemplate.name; + test.runTest = makeNewTestFunction(testTemplate); + testsForDatastore.push(test); + } + var testGroupName = "IFSCommonTests: " + datastoreClassName; + doh.register(testGroupName, testsForDatastore); +}; + + +//----------------------------------------------------- +// testFile data-sets +tests.data.readOnlyItemFileTestTemplates.getTestData = function(name){ + var data = null; + if(name === "countries"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/countries.json")}; + }else{ + data = {data: { + identifier:"abbr", + label:"name", + items:[ + {abbr:"ec", name:"Ecuador", capital:"Quito"}, + {abbr:'eg', name:'Egypt', capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:'Estonia', capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + } + }else if(name === "countries_withNull"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/countries_withNull.json")}; + }else{ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:null, capital:"Quito"}, + {abbr:'eg', name:null, capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:null, capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + } + }else if(name === "countries_withoutid"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/countries_withoutid.json")}; + }else{ + data = {data: { + label: "name", + items:[ + {abbr:"ec", name:null, capital:"Quito"}, + {abbr:'eg', name:null, capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:null, capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + } + }else if (name === "countries_withBoolean"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/countries_withBoolean.json")}; + }else{ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:"Ecuador", capital:"Quito", real:true}, + {abbr:'eg', name:'Egypt', capital:'Cairo', real:true}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador', real:true}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo', real:true}, + {abbr:'er', name:'Eritrea', capital:'Asmara', real:true}, + {abbr:'ee', name:'Estonia', capital:'Tallinn', real:true}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa', real:true}, + {abbr:'ut', name:'Utopia', capital:'Paradise', real:false} + ] + } }; + } + }else if (name === "countries_withDates"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/countries_withDates.json")}; + }else{ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:"Ecuador", capital:"Quito"}, + {abbr:'eg', name:'Egypt', capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara', independence:{_type:'Date', _value:"1993-05-24T00:00:00Z"}}, // May 24, 1993, + {abbr:'ee', name:'Estonia', capital:'Tallinn', independence:{_type:'Date', _value:"1991-08-20T00:00:00Z"}}, // August 20, 1991 + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + } + }else if (name === "geography_hierarchy_small"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/geography_hierarchy_small.json")}; + }else{ + data = {data: { + items:[ + { name:'Africa', countries:[ + { name:'Egypt', capital:'Cairo' }, + { name:'Kenya', capital:'Nairobi' }, + { name:'Sudan', capital:'Khartoum' }]}, + { name:'Australia', capital:'Canberra' }, + { name:'North America', countries:[ + { name:'Canada', population:'33 million', cities:[ + { name:'Toronto', population:'2.5 million' }, + { name:'Alberta', population:'1 million' } + ]}, + { name: 'United States of America', capital: 'Washington DC', states:[ + { name: 'Missouri'}, + { name: 'Arkansas'} + ]} + ]} + ] + }}; + } + }else if (name === "data_multitype"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/data_multitype.json")}; + }else{ + data = {data: { + "identifier": "count", + "label": "count", + items: [ + { count: 1, value: "true" }, + { count: 2, value: true }, + { count: 3, value: "false"}, + { count: 4, value: false }, + { count: 5, value: true }, + { count: 6, value: true }, + { count: 7, value: "true" }, + { count: 8, value: "true" }, + { count: 9, value: "false"}, + { count: 10, value: false }, + { count: 11, value: [false, false]}, + { count: "12", value: [false, "true"]} + ] + } + }; + } + }else if (name === "countries_references"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("tests/data/countries_references.json")}; + }else{ + data = {data: { identifier: 'name', + label: 'name', + items: [ + { name:'Africa', type:'continent', + children:[{_reference:'Egypt'}, {_reference:'Kenya'}, {_reference:'Sudan'}] }, + { name:'Egypt', type:'country' }, + { name:'Kenya', type:'country', + children:[{_reference:'Nairobi'}, {_reference:'Mombasa'}] }, + { name:'Nairobi', type:'city' }, + { name:'Mombasa', type:'city' }, + { name:'Sudan', type:'country', + children:{_reference:'Khartoum'} }, + { name:'Khartoum', type:'city' }, + { name:'Asia', type:'continent', + children:[{_reference:'China'}, {_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] }, + { name:'China', type:'country' }, + { name:'India', type:'country' }, + { name:'Russia', type:'country' }, + { name:'Mongolia', type:'country' }, + { name:'Australia', type:'continent', population:'21 million', + children:{_reference:'Commonwealth of Australia'}}, + { name:'Commonwealth of Australia', type:'country', population:'21 million'}, + { name:'Europe', type:'continent', + children:[{_reference:'Germany'}, {_reference:'France'}, {_reference:'Spain'}, {_reference:'Italy'}] }, + { name:'Germany', type:'country' }, + { name:'France', type:'country' }, + { name:'Spain', type:'country' }, + { name:'Italy', type:'country' }, + { name:'North America', type:'continent', + children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] }, + { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', + children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] }, + { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, + { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' }, + { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', + children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] }, + { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, + { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }, + { name:'United States of America', type:'country' }, + { name:'South America', type:'continent', + children:[{_reference:'Brazil'}, {_reference:'Argentina'}] }, + { name:'Brazil', type:'country', population:'186 million' }, + { name:'Argentina', type:'country', population:'40 million' } + ] + } + }; + } + } + return data; +}; + +//----------------------------------------------------- +// testTemplates +tests.data.readOnlyItemFileTestTemplates.testTemplates = [ + { + name: "Identity API: fetchItemByIdentity()", + runTest: function(datastore, t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + if(item !== null){ + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + } + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() preventCache", + runTest: function(datastore, t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + var args = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + args.urlPreventCache = true; + var store = new datastore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + if(item !== null){ + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + } + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() notFound", + runTest: function(datastore, t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "sv_not", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentityAttributes()", + runTest: function(datastore, t){ + // summary: + // Simple test of the getIdentityAttributes function. + // description: + // Simple test of the getIdentityAttributes function. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var identifiers = store.getIdentityAttributes(item); + t.assertTrue(dojo.isArray(identifiers)); + t.assertEqual(1, identifiers.length); + t.assertEqual("abbr", identifiers[0]); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() commentFilteredJson", + runTest: function(datastore, t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + // This tests loading a comment-filtered json file so that people using secure + // data with this store can bypass the JavaSceipt hijack noted in Fortify's + // paper. + + if(dojo.isBrowser){ + var store = new datastore({url: require.toUrl("tests/data/countries_commentFiltered.json")}); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + } + }, + { + name: "Identity API: fetchItemByIdentity() nullValue", + runTest: function(datastore, t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store, checling a null value. + // description: + // Simple test of the fetchItemByIdentity function of the store, checking a null value. + // This tests handling attributes in json that were defined as null properly. + // Introduced because of tracker: #3153 + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withNull")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, null); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "ec", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() booleanValue", + runTest: function(datastore, t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. + // description: + // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withBoolean")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "Utopia"); + var real = store.getValue(item,"real"); + t.assertEqual(real, false); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "ut", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() withoutSpecifiedIdInData", + runTest: function(datastore, t){ + // summary: + // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. + // description: + // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "2", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() Object.prototype item identifier", + runTest: function(datastore, t){ + // summary: + // Simple test of bug where store would raise an error + // if the item identifier was the same as an Object property name. + var data = {identifier: 'id', items: [{id: 'toString', value: 'aha'}]}; + var store = new datastore({data: data}); + var d = new doh.Deferred(); + function onitem(item) { + t.assertTrue(item.value == 'aha'); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: 'toString', onItem: onitem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() Object.prototype item identifier 2", + runTest: function(datastore, t){ + // summary: + // Simple test of bug where store would raise an error + // if the item identifier was the same as an Object property name. + var data = {identifier: 'id', items: [{id: 'hasOwnProperty', value: 'yep'}]}; + var store = new datastore({data: data}); + var d = new doh.Deferred(); + function onitem(item) { + t.assertTrue(item.value == 'yep'); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: 'hasOwnProperty', onItem: onitem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() Object.prototype identity", + runTest: function(datastore, t){ + // summary: + // Simple test of bug where fetchItemByIdentity would return + // an object property. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withoutid")); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: 'toString', onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() Object.prototype identity 2", + runTest: function(datastore, t){ + // summary: + // Simple test of bug where fetchItemByIdentity would return + // an object property. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withoutid")); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: 'hasOwnProperty', onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity()", + runTest: function(datastore, t){ + // summary: + // Simple test of the getIdentity function of the store. + // description: + // Simple test of the getIdentity function of the store. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === "sv"); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity() withoutSpecifiedId", + runTest: function(datastore, t){ + // summary: + // Simple test of the #4691 bug + // description: + // Simple test of the #4691 bug + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + function onItem(item, request){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === 2); + d.callback(true); + } + function onError(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + store.fetch({ query:{abbr: "sv"}, onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Read API: fetch() all", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore. + // description: + // Simple test of a basic fetch on ItemFileReadStore. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + function completedAll(items, request){ + t.is(7, items.length); + d.callback(true); + } + function error(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + + //Get everything... + store.fetch({ onComplete: completedAll, onError: error}); + return d; + } + }, + { + name: "Read API: fetch() all failOk", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore that fails quietly. + // description: + // Simple test of a basic fetch on ItemFileReadStore that fails quietly. + if(dojo.isBrowser){ + var storeParams = { + url: "noSuchUrl", + failOk: true + }; + var store = new datastore(storeParams); + console.log(store); + + var d = new doh.Deferred(); + var completedAll = function(items, request){ + d.errback(new Error("Should not be here, should have failed load.")); + }; + var error = function(errData, request){ + d.callback(true); + }; + + //Get everything... + store.fetch({ onComplete: completedAll, onError: error}); + return d; + } + } + }, + { + name: "Read API: fetch() abort", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch abort on ItemFileReadStore. + // description: + // Simple test of a basic fetch abort on ItemFileReadStore. + //Can only async abort in a browser, so disable this test from rhino + if(dojo.isBrowser){ + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + var abortCalled = false; + function completedAll(items, request){ + t.is(7, items.length); + if(abortCalled){ + console.log("Made it to complete callback and abort was called. Problem."); + d.errback(new Error("Should not be here.")); + }else{ + //We beat out calling abort, so this is okay. Timing. + console.log("in onComplete and abort has not been called. Timing. This is okay."); + d.callback(true); + } + } + function error(errData, request){ + //An abort should throw a cancel error, so we should + //reach this. + t.assertTrue(true); + d.callback(true); + } + + //Get everything... + var req = store.fetch({ onComplete: completedAll, onError: error}); + abortCalled=true; + console.log("Calling abort."); + req.abort(); + return d; + } + } + }, + { + name: "Read API: fetch() all (count === Infinity)", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore and with a count of Infinity. + // description: + // Simple test of a basic fetch on ItemFileReadStore and with a count of Infinity. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + function completedAll(items, request){ + t.is(7, items.length); + d.callback(true); + } + function error(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + + //Get everything... + store.fetch({ onComplete: completedAll, onError: error, start: 0, count: Infinity}); + return d; + } + }, + { + name: "Read API: fetch() all PreventCache", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore. + // description: + // Simple test of a basic fetch on ItemFileReadStore. + var args = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + args.urlPreventCache = true; + var store = new datastore(args); + + var d = new doh.Deferred(); + function completedAll(items, request){ + t.is(7, items.length); + d.callback(true); + } + function error(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + + //Get everything... + store.fetch({ onComplete: completedAll, onError: error}); + return d; + } + }, + { + name: "Read API: fetch() one", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore of a single item. + // description: + // Simple test of a basic fetch on ItemFileReadStore of a single item. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + d.callback(true); + } + function onError(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + store.fetch({ query: {abbr: "ec"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() shallow", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore of only toplevel items + // description: + // Simple test of a basic fetch on ItemFileReadStore of only toplevel items. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 2); + d.callback(true); + } + function onError(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "A*"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() Multiple", + runTest: function(datastore, t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var done = [false, false]; + + function onCompleteOne(items, request){ + done[0] = true; + t.assertEqual(items.length, 2); + if(done[0] && done[1]){ + d.callback(true); + } + } + function onCompleteTwo(items, request){ + done[1] = true; + if(done[0] && done[1]){ + d.callback(true); + } + } + function onError(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "A*"}, + onComplete: onCompleteOne, + onError: onError + }); + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "N*"}, + onComplete: onCompleteTwo, + onError: onError + }); + + return d; + } + }, + { + name: "Read API: fetch() MultipleMixedFetch", + runTest: function(datastore, t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // Tests an item fetch and an identity fetch. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + + var d = new doh.Deferred(); + var done = [false, false]; + + function onComplete(items, request){ + done[0] = true; + t.assertEqual(items.length, 1); + if(done[0] && done[1]){ + d.callback(true); + } + } + function onItem(item){ + done[1] = true; + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + + if(done[0] && done[1]){ + d.callback(true); + } + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "El*"}, + onComplete: onComplete, + onError: onError + }); + + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; + } + }, + { + name: "Read API: fetch() deep", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore of all items (including children (nested)) + // description: + // Simple test of a basic fetch on ItemFileReadStore of all items (including children (nested)) + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 4); + d.callback(true); + } + function onError(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + //Find all items starting with A, including child (nested) items. + store.fetch({ query: {name: "A*"}, + onComplete: onComplete, + onError: onError, + queryOptions: {deep:true} + }); + return d; + } + }, + { + name: "Read API: fetch() hierarchy off", + runTest: function(datastore, t){ + // summary: + // Simple test of a basic fetch on ItemFileReadStore of all items with hierarchy disabled + // This should turn off processing child objects as data store items. It will still process + // references and type maps. + // description: + // Simple test of a basic fetch on ItemFileReadStore of all items with hierarchy disabled + // This should turn off processing child objects as data store items. It will still process + // references and type maps. + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); + + //Set this as hierarchy off before fetch to make sure it traps and configs right. + store.hierarchical = false; + + var d = new doh.Deferred(); + function onComplete(items, request){ + //With hierarchy off, this should only match 2, as only two data store items + //will be quertied + t.assertEqual(items.length, 2); + var i; + var passed = true; + for(i = 0; i < items.length; i++){ + var countries = store.getValues(items[i], "countries"); + if(countries){ + var j; + //Make sure none of the child objects were processed into items. + for(j = 0; j enumMap[b]) { + ret = 1; + } + if (enumMap[a] < enumMap[b]) { + ret = -1; + } + return ret; + }; + + var sortAttributes = [{attribute: "status", descending: true}, { attribute: "uniqueId", descending: true}]; + + var d = new doh.Deferred(); + function completed(items, findResult){ + var orderedArray = [11,6,2,12,10,4,8,7,3,9,5,1]; + var passed = true; + for(var i = 0; i < items.length; i++){ + var value = store.getValue(items[i], "value"); + if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + if (passed){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected sorting order found, sort failure.")); + } + } + + function error(errData, request){ + t.assertTrue(false); + d.errback(errData); + } + store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); + return d; + } + }, + { + name: "Read API: fetch() sortAlphabeticWithUndefined", + runTest: function(datastore, t){ + // summary: + // Function to test sorting alphabetic ordering. + // description: + // Function to test sorting alphabetic ordering. + + var store = new datastore({data: { identifier: "uniqueId", + items: [ {uniqueId: 0, value:"abc"}, + {uniqueId: 1, value:"bca"}, + {uniqueId: 2, value:"abcd"}, + {uniqueId: 3, value:"abcdefg"}, + {uniqueId: 4, value:"lmnop"}, + {uniqueId: 5, value:"foghorn"}, + {uniqueId: 6, value:"qberty"}, + {uniqueId: 7, value:"qwerty"}, + {uniqueId: 8 }, //Deliberate undefined value + {uniqueId: 9, value:"seaweed"}, + {uniqueId: 10, value:"123abc"} + + ] + } + }); + + var d = new doh.Deferred(); + function completed(items, request){ + //Output should be in this order... + var orderedArray = [10,0,2,3,1,5,4,6,7,9,8]; + t.assertEqual(items.length, 11); + var passed = true; + for(var i = 0; i < items.length; i++){ + if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + if (passed){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected sorting order found, sort failure.")); + } + } + + function error(error, request) { + t.assertTrue(false); + d.errback(error); + } + + var sortAttributes = [{attribute: "value"}]; + store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); + return d; + } + }, + { + name: "Read API: errorCondition_idCollision_inMemory", + runTest: function(datastore, t){ + // summary: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + // description: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + + var store = new datastore({ data: { identifier: "uniqueId", + items: [{uniqueId: 12345, value:"foo"}, + {uniqueId: 123456, value:"bar"}, + {uniqueId: 12345, value:"boom"}, + {uniqueId: 123457, value:"bit"} + ] + } + }); + var d = new doh.Deferred(); + function onComplete(items, request){ + //This is bad if this fires, this case should fail and not call onComplete. + t.assertTrue(false); + d.callback(false); + } + + function reportError(errData, request){ + //This is good if this fires, it is expected. + t.assertTrue(true); + d.callback(true); + } + store.fetch({onComplete: onComplete, onError: reportError}); + return d; + } + }, + { + name: "Read API: errorCondition_idCollision_xhr", + runTest: function(datastore, t){ + // summary: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + // description: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + + if(dojo.isBrowser){ + var store = new datastore({url: require.toUrl("tests/data/countries_idcollision.json")}); + var d = new doh.Deferred(); + function onComplete(items, request){ + //This is bad if this fires, this case should fail and not call onComplete. + t.assertTrue(false); + d.callback(false); + } + + function reportError(errData, request){ + //This is good if this fires, it is expected. + t.assertTrue(true); + d.callback(true); + } + store.fetch({onComplete: onComplete, onError: reportError}); + return d; + } + } + }, + { + name: "Read API: Date_datatype", + runTest: function(datastore, t){ + //var store = new datastore(tests.data.readOnlyItemFileTestTemplates.testFile["countries_withDates"]); + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries_withDates")); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var independenceDate = store.getValue(item, "independence"); + t.assertTrue(independenceDate instanceof Date); + //Check to see if the value was deserialized properly. Since the store stores in UTC/GMT, it + //should also be compared in the UTC/GMT mode + t.assertTrue(dojo.date.stamp.toISOString(independenceDate, {zulu:true}) === "1993-05-24T00:00:00Z"); + d.callback(true); + } + function onError(errData){ + t.assertTrue(false); + d.errback(errData); + } + store.fetchItemByIdentity({identity:"er", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_Color_SimpleMapping", + runTest: function(datastore, t){ + // summary: + // Function to test using literal values with custom datatypes + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + var store = new datastore({ + data:dataset, + typeMap:{'Color': dojo.Color} + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var beaker = item; + var hairColor = store.getValue(beaker, "hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertTrue(hairColor.toHex() == "#ff0000"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_Color_GeneralMapping", + runTest: function(datastore, t){ + // summary: + // Function to test using literal values with custom datatypes + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + var store = new datastore({ + data:dataset, + typeMap:{'Color': { + type: dojo.Color, + deserialize: function(value){ + return new dojo.Color(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var beaker = item; + var hairColor = store.getValue(beaker, "hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertTrue(hairColor.toHex() == "#ff0000"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject 0 (False) value", + runTest: function(datastore, t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', species:'human', age: {_type:'tests.data.Wrapper', _value:0} }, + { name:'Nancy', species:'human', age: {_type:'tests.data.Wrapper', _value:32} } + ] + }; + var store = new datastore({ + data:dataset, + typeMap:{'tests.data.Wrapper': { + type: tests.data.Wrapper, + deserialize: function(value){ + return new tests.data.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var age = store.getValue(item, "age"); + t.assertTrue(age instanceof tests.data.Wrapper); + t.assertTrue(age.toString() == "WRAPPER: [0]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject Boolean False values", + runTest: function(datastore, t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', isHuman: {_type:'tests.data.Wrapper', _value:false} }, + { name:'Nancy', isHuman: {_type:'tests.data.Wrapper', _value: true} } + ] + }; + var store = new datastore({ + data:dataset, + typeMap:{'tests.data.Wrapper': { + type: tests.data.Wrapper, + deserialize: function(value){ + return new tests.data.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var isHuman = store.getValue(item, "isHuman"); + t.assertTrue(isHuman instanceof tests.data.Wrapper); + t.assertTrue(isHuman.toString() == "WRAPPER: [false]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject Empty String values", + runTest: function(datastore, t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', lastName: {_type:'tests.data.Wrapper', _value:""} }, + { name:'Nancy', lastName: {_type:'tests.data.Wrapper', _value: "Doe"} } + ] + }; + var store = new datastore({ + data:dataset, + typeMap:{'tests.data.Wrapper': { + type: tests.data.Wrapper, + deserialize: function(value){ + return new tests.data.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var lastName = store.getValue(item, "lastName"); + t.assertTrue(lastName instanceof tests.data.Wrapper); + t.assertTrue(lastName.toString() == "WRAPPER: []"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject explicit null values", + runTest: function(datastore, t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', lastName: {_type:'tests.data.Wrapper', _value:null} }, + { name:'Nancy', lastName: {_type:'tests.data.Wrapper', _value: "Doe"} } + ] + }; + var store = new datastore({ + data:dataset, + typeMap:{'tests.data.Wrapper': { + type: tests.data.Wrapper, + deserialize: function(value){ + return new tests.data.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var lastName = store.getValue(item, "lastName"); + t.assertTrue(lastName instanceof tests.data.Wrapper); + t.assertTrue(lastName.toString() == "WRAPPER: [null]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject explicit undefined value", + runTest: function(datastore, t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', lastName: {_type:'tests.data.Wrapper', _value: undefined} }, + { name:'Nancy', lastName: {_type:'tests.data.Wrapper', _value: "Doe"} } + ] + }; + var store = new datastore({ + data:dataset, + typeMap:{'tests.data.Wrapper': { + type: tests.data.Wrapper, + deserialize: function(value){ + return new tests.data.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var lastName = store.getValue(item, "lastName"); + t.assertTrue(lastName instanceof tests.data.Wrapper); + t.assertTrue(lastName.toString() == "WRAPPER: [undefined]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: hierarchical_data", + runTest: function(datastore, t){ + //var store = new datastore(tests.data.readOnlyItemFileTestTemplates.testFile["geography_hierarchy_small"]); + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var northAmerica = items[0]; + var canada = store.getValue(northAmerica, "countries"); + var toronto = store.getValue(canada, "cities"); + t.assertEqual(store.getValue(canada, "name"), "Canada"); + t.assertEqual(store.getValue(toronto, "name"), "Toronto"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetch({ + query: {name: "North America"}, + onComplete: onComplete, + onError: onError + }); + + return d; // Deferred + } + }, + { + name: "Read API: close (clearOnClose: true)", + runTest: function(datastore, t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + params.clearOnClose = true; + params.urlPreventCache = true; + var store = new datastore(params); + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + }else{ + d.callback(true); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: true, reset url.)", + runTest: function(datastore, t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + params.clearOnClose = true; + params.urlPreventCache = true; + var store = new datastore(params); + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store.url = require.toUrl("tests/data/countries_withNull.json"); + function onItem2 (item){ + var err; + try{ + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem2, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: fetch, close (clearOnClose: true, reset url.)", + runTest: function(datastore, t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + params.clearOnClose = true; + params.urlPreventCache = true; + var store = new datastore(params); + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store.url = require.toUrl("tests/data/countries_withNull.json"); + function onComplete (items){ + var err; + try{ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetch({query: {abbr:"ec"}, onComplete:onComplete, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: true, reset _jsonFileUrl.)", + runTest: function(datastore, t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + params.clearOnClose = true; + params.urlPreventCache = true; + var store = new datastore(params); + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store._jsonFileUrl = require.toUrl("tests/data/countries_withNull.json"); + function onItem2 (item){ + var err; + try{ + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem2, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: false)", + runTest: function(datastore, t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var params = tests.data.readOnlyItemFileTestTemplates.getTestData("countries"); + params.urlPreventCache = true; + var store = new datastore(params); + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length !== 0); + t.assertTrue(store._loadFinished === true); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + }else{ + d.callback(true); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: true, reset data.)", + runTest: function(datastore, t){ + // summary: + // Function to test that clear on close and reset of data works. + // description: + // Function to test that clear on close and reset of data works. + var store = new datastore({data: { identifier: "uniqueId", + items: [ {uniqueId: 1, value:"foo*bar"}, + {uniqueId: 2, value:"bar*foo"}, + {uniqueId: 3, value:"boomBam"}, + {uniqueId: 4, value:"bit$Bite"}, + {uniqueId: 5, value:"ouagadogou"}, + {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, + {uniqueId: 7, value:"squawl"}, + {uniqueId: 8, value:"seaweed"}, + {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} + ] + } + }); + + var d = new doh.Deferred(); + var firstComplete = function(items, request){ + t.assertEqual(items.length, 1); + var firstItem = items[0]; + + //Set the store clearing options and the new data + store.clearOnClose = true; + store.data = { identifier: "uniqueId", + items: [ + {uniqueId: 1, value:"foo*bar"}, + {uniqueId: 2, value:"bar*foo"}, + {uniqueId: 3, value:"boomBam"}, + {uniqueId: 4, value:"bit$Bite"}, + {uniqueId: 5, value:"ouagadogou"}, + {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, + {uniqueId: 7, value:"squawl"}, + {uniqueId: 8, value:"seaweed"}, + {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} + ] + }; + store.close(); + + //Do the next fetch and verify that the next item you get is not + //a reference to the same item (data cleared and reloaded. + var secondComplete = function(items, request){ + try{ + t.assertEqual(items.length, 1); + var secondItem = items[0]; + t.assertTrue(firstItem != null); + t.assertTrue(secondItem != null); + t.assertTrue(firstItem != secondItem); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + store.fetch({query: {value: "bar\*foo"}, onComplete: secondComplete, onError: error}); + }; + function error(error, request){ + t.assertTrue(false); + d.errback(error); + } + store.fetch({query: {value: "bar\*foo"}, onComplete: firstComplete, onError: error}); + return d; + } + }, + { + name: "Identity API: no_identifier_specified", + runTest: function(datastore, t){ + var arrayOfItems = [ + {name:"Kermit", color:"green"}, + {name:"Miss Piggy", likes:"Kermit"}, + {name:"Beaker", hairColor:"red"} + ]; + var store = new datastore({data:{items:arrayOfItems}}); + var d = new doh.Deferred(); + function onComplete(items, request){ + var features = store.getFeatures(); + var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); + t.assertTrue(hasIdentityFeature); + for(var i = 0; i < items.length; ++i){ + var item = items[i]; + var identifier = store.getIdentityAttributes(item); + t.assertTrue(identifier === null); + var identity = store.getIdentity(item); + t.assertTrue(typeof identity == "number"); + } + d.callback(true); + } + function reportError(errData, request){ + d.errback(true); + } + store.fetch({onComplete: onComplete, onError: reportError}); + return d; // Deferred + } + }, + { + name: "Identity API: hierarchical_data", + runTest: function(datastore, t){ + var store = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + function onComplete(items, request){ + var features = store.getFeatures(); + var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); + t.assertTrue(hasIdentityFeature); + for(var i = 0; i < items.length; ++i){ + var item = items[i]; + var identifier = store.getIdentityAttributes(item); + t.assertTrue(identifier === null); + var identity = store.getIdentity(item); + t.assertTrue(typeof identity == "number"); + } + d.callback(true); + } + function reportError(errData, request){ + d.errback(true); + } + store.fetch({onComplete: onComplete, onError: reportError}); + return d; // Deferred + } + }, + { + name: "Read API: functionConformance", + runTest: function(datastore, t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + }, + { + name: "Identity API: functionConformance", + runTest: function(datastore, t){ + // summary: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new datastore(tests.data.readOnlyItemFileTestTemplates.getTestData("countries")); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + + for(i in identityApi){ + + if(i.toString().charAt(0) !== '_') + { + var member = identityApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + } +]; + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/reference_integrity.json b/js/dojo-release-1.7.2-src/dojo/tests/data/reference_integrity.json new file mode 100644 index 0000000..bdc6767 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/reference_integrity.json @@ -0,0 +1,27 @@ +/* +{ + "identifier": "id", + "label": "name", + "items":[ + {"id": 1, "name": "Item 1"}, + {"id": 2, "name": "Item 2"}, + {"id": 3, "name": "Item 3"}, + {"id": 4, "name": "Item 4"}, + {"id": 5, "name": "Item 5"}, + {"id": 6, "name": "Item 6"}, + {"id": 7, "name": "Item 7"}, + {"id": 8, "name": "Item 8"}, + {"id": 9, "name": "Item 9"}, + {"id": 10, "name": "Item 10", "friends": [{"_reference": 1},{"_reference": 3},{"_reference": 5}]}, + {"id": 11, "name": "Item 11", "friends": [{"_reference": 10}], "siblings": [{"_reference": 10}]}, + {"id": 12, "name": "Item 12", "friends": [{"_reference": 3},{"_reference": 7}], "enemies": [{"_reference": 10}]}, + {"id": 13, "name": "Item 13", "friends": [{"_reference": 10}]}, + {"id": 14, "name": "Item 14", "friends": [{"_reference": 11}]}, + {"id": 15, "name": "item 15", "friends": [{"id": 16, "name": "Item 16"}]} + ] +} +*/ + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/runTests.html b/js/dojo-release-1.7.2-src/dojo/tests/data/runTests.html new file mode 100644 index 0000000..ee3d473 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/runTests.html @@ -0,0 +1,9 @@ + + + + dojo.data D.O.H. Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/data/utils.js b/js/dojo-release-1.7.2-src/dojo/tests/data/utils.js new file mode 100644 index 0000000..f9e82c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/data/utils.js @@ -0,0 +1,199 @@ +define(["dojo", "doh", "dojo/data/util/filter", "dojo/data/util/sorter"], function(dojo, doh){ + +doh.register("tests.data.utils", + [ + function testWildcardFilter_1(t){ + var pattern = "ca*"; + var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testWildcardFilter_2(t){ + var pattern = "*ca"; + var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testWildcardFilter_3(t){ + var pattern = "*ca*"; + var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testWildcardFilter_4(t){ + //Try and match ca*b + var pattern = "*c*a\\*b*"; + var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; + + t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testWildcardFilter_5(t){ + var pattern = "*c*a\\\\*b"; + var values = ["ca", "california", "Macca", "Macca*b", "Macca\\b"]; + + t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testWildcardFilter_caseInsensitive(t){ + var pattern = "ca*"; + var values = ["CA", "california", "Macca", "Macca*b", "Macca\\b"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); + t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern, true))!== null); + }, + function testSingleChar_1(t){ + var pattern = "bob?le"; + var values = ["bobble", "boble", "foo", "bobBle", "bar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testSingleChar_2(t){ + var pattern = "?ob?le"; + var values = ["bobble", "cob1le", "foo", "bobBle", "bar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testBracketChar(t){ + //Make sure we don't treat this as regexp + var pattern = "*[*]*"; + var values = ["bo[b]ble", "cob1le", "foo", "[bobBle]", "b[]ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testBraceChar(t){ + //Make sure we don't treat this as regexp + var pattern = "*{*}*"; + var values = ["bo{b}ble", "cob1le", "foo", "{bobBle}", "b{}ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testParenChar(t){ + //Make sure we don't treat this as regexp + var pattern = "*(*)*"; + var values = ["bo(b)ble", "cob1le", "foo", "{bobBle}", "b()ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testPlusChar(t){ + //Make sure we don't treat this as regexp, so match anything with a + in it. + var pattern = "*+*"; + var values = ["bo+ble", "cob1le", "foo", "{bobBle}", "b{}ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testPeriodChar(t){ + //Make sure we don't treat this as regexp, so match anything with a period + var pattern = "*.*"; + var values = ["bo.ble", "cob1le", "foo", "{bobBle}", "b{}ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testBarChar(t){ + //Make sure we don't treat this as regexp, so match anything with a pipe bar + var pattern = "*|*"; + var values = ["bo.ble", "cob|le", "foo", "{bobBle}", "b{}ar"]; + + t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testDollarSignChar(t){ + //Make sure we don't treat this as regexp, so match anything with a $ in it + var pattern = "*$*"; + var values = ["bo$ble", "cob$le", "foo", "{bobBle}", "b{}ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testCarrotChar(t){ + //Make sure we don't treat this as regexp, so match anything with a ^ in it + var pattern = "*^*"; + var values = ["bo$ble", "cob$le", "f^oo", "{bobBle}", "b{}ar"]; + + t.assertFalse(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertTrue(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testEscapeChar(t){ + //Make sure we escape properly, so match this single word. + var pattern = "bob\*ble"; + var values = ["bob*ble", "cob$le", "f^oo", "{bobBle}", "b{}ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + }, + function testAbsoluteMatch(t){ + var pattern = "bobble"; + var values = ["bobble", "cob$le", "f^oo", "{bobBle}", "b{}ar"]; + + t.assertTrue(values[0].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[1].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[2].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[3].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + t.assertFalse(values[4].match(dojo.data.util.filter.patternToRegExp(pattern))!== null); + } + ] +); + +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/date.js b/js/dojo-release-1.7.2-src/dojo/tests/date.js new file mode 100644 index 0000000..c032249 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/date.js @@ -0,0 +1,706 @@ +define(["../main", "doh", "../date", "./date/locale", "./date/stamp"], function(dojo, doh){ +doh.register("tests.date.util", [ + +/* Informational Functions + **************************/ + +function test_date_getDaysInMonth(t){ + // months other than February + t.is(31, dojo.date.getDaysInMonth(new Date(2006,0,1))); + t.is(31, dojo.date.getDaysInMonth(new Date(2006,2,1))); + t.is(30, dojo.date.getDaysInMonth(new Date(2006,3,1))); + t.is(31, dojo.date.getDaysInMonth(new Date(2006,4,1))); + t.is(30, dojo.date.getDaysInMonth(new Date(2006,5,1))); + t.is(31, dojo.date.getDaysInMonth(new Date(2006,6,1))); + t.is(31, dojo.date.getDaysInMonth(new Date(2006,7,1))); + t.is(30, dojo.date.getDaysInMonth(new Date(2006,8,1))); + t.is(31, dojo.date.getDaysInMonth(new Date(2006,9,1))); + t.is(30, dojo.date.getDaysInMonth(new Date(2006,10,1))); + t.is(31, dojo.date.getDaysInMonth(new Date(2006,11,1))); + + // Februarys + t.is(28, dojo.date.getDaysInMonth(new Date(2006,1,1))); + t.is(29, dojo.date.getDaysInMonth(new Date(2004,1,1))); + t.is(29, dojo.date.getDaysInMonth(new Date(2000,1,1))); + t.is(28, dojo.date.getDaysInMonth(new Date(1900,1,1))); + t.is(28, dojo.date.getDaysInMonth(new Date(1800,1,1))); + t.is(28, dojo.date.getDaysInMonth(new Date(1700,1,1))); + t.is(29, dojo.date.getDaysInMonth(new Date(1600,1,1))); +}, + +function test_date_isLeapYear(t){ + t.f(dojo.date.isLeapYear(new Date(2006,0,1))); + t.t(dojo.date.isLeapYear(new Date(2004,0,1))); + t.t(dojo.date.isLeapYear(new Date(2000,0,1))); + t.f(dojo.date.isLeapYear(new Date(1900,0,1))); + t.f(dojo.date.isLeapYear(new Date(1800,0,1))); + t.f(dojo.date.isLeapYear(new Date(1700,0,1))); + t.t(dojo.date.isLeapYear(new Date(1600,0,1))); +}, + +// The getTimezone function pulls from either the date's toString or +// toLocaleString method -- it's really just a string-processing +// function (assuming the Date obj passed in supporting both toString +// and toLocaleString) and as such can be tested for multiple browsers +// by manually settting up fake Date objects with the actual strings +// produced by various browser/OS combinations. +// FIXME: the function and tests are not localized. +function test_date_getTimezoneName(t){ + + // Create a fake Date object with toString and toLocaleString + // results manually set to simulate tests for multiple browsers + function FakeDate(str, strLocale){ + this.str = str || ''; + this.strLocale = strLocale || ''; + this.toString = function() { + return this.str; + }; + this.toLocaleString = function(){ + return this.strLocale; + }; + } + var dt = new FakeDate(); + + // FF 1.5 Ubuntu Linux (Breezy) + dt.str = 'Sun Sep 17 2006 22:25:51 GMT-0500 (CDT)'; + dt.strLocale = 'Sun 17 Sep 2006 10:25:51 PM CDT'; + t.is('CDT', dojo.date.getTimezoneName(dt)); + + // Safari 2.0 Mac OS X 10.4 + dt.str = 'Sun Sep 17 2006 22:55:01 GMT-0500'; + dt.strLocale = 'September 17, 2006 10:55:01 PM CDT'; + t.is('CDT', dojo.date.getTimezoneName(dt)); + + // FF 1.5 Mac OS X 10.4 + dt.str = 'Sun Sep 17 2006 22:57:18 GMT-0500 (CDT)'; + dt.strLocale = 'Sun Sep 17 22:57:18 2006'; + t.is('CDT', dojo.date.getTimezoneName(dt)); + + // Opera 9 Mac OS X 10.4 -- no TZ data expect empty string return + dt.str = 'Sun, 17 Sep 2006 22:58:06 GMT-0500'; + dt.strLocale = 'Sunday September 17, 22:58:06 GMT-0500 2006'; + t.is('', dojo.date.getTimezoneName(dt)); + + // IE 6 Windows XP + dt.str = 'Mon Sep 18 11:21:07 CDT 2006'; + dt.strLocale = 'Monday, September 18, 2006 11:21:07 AM'; + t.is('CDT', dojo.date.getTimezoneName(dt)); + + // Opera 9 Ubuntu Linux (Breezy) -- no TZ data expect empty string return + dt.str = 'Mon, 18 Sep 2006 13:30:32 GMT-0500'; + dt.strLocale = 'Monday September 18, 13:30:32 GMT-0500 2006'; + t.is('', dojo.date.getTimezoneName(dt)); + + // IE 5.5 Windows 2000 + dt.str = 'Mon Sep 18 13:49:22 CDT 2006'; + dt.strLocale = 'Monday, September 18, 2006 1:49:22 PM'; + t.is('CDT', dojo.date.getTimezoneName(dt)); +} + ] +); + +doh.register("tests.date.math", + [ +function test_date_compare(t){ + var d1=new Date(); + d1.setHours(0); + var d2=new Date(); + d2.setFullYear(2005); + d2.setHours(12); + t.is(0, dojo.date.compare(d1, d1)); + t.is(1, dojo.date.compare(d1, d2, "date")); + t.is(-1, dojo.date.compare(d2, d1, "date")); + t.is(-1, dojo.date.compare(d1, d2, "time")); + t.is(1, dojo.date.compare(d1, d2, "datetime")); +}, +function test_date_add(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + + interv = "year"; + dtA = new Date(2005, 11, 27); + dtB = new Date(2006, 11, 27); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2005, 11, 27); + dtB = new Date(2004, 11, 27); + t.is(dtB, dojo.date.add(dtA, interv, -1)); + + dtA = new Date(2000, 1, 29); + dtB = new Date(2001, 1, 28); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2000, 1, 29); + dtB = new Date(2005, 1, 28); + t.is(dtB, dojo.date.add(dtA, interv, 5)); + + dtA = new Date(1900, 11, 31); + dtB = new Date(1930, 11, 31); + t.is(dtB, dojo.date.add(dtA, interv, 30)); + + dtA = new Date(1995, 11, 31); + dtB = new Date(2030, 11, 31); + t.is(dtB, dojo.date.add(dtA, interv, 35)); + + interv = "quarter"; + dtA = new Date(2000, 0, 1); + dtB = new Date(2000, 3, 1); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2000, 1, 29); + dtB = new Date(2000, 7, 29); + t.is(dtB, dojo.date.add(dtA, interv, 2)); + + dtA = new Date(2000, 1, 29); + dtB = new Date(2001, 1, 28); + t.is(dtB, dojo.date.add(dtA, interv, 4)); + + interv = "month"; + dtA = new Date(2000, 0, 1); + dtB = new Date(2000, 1, 1); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2000, 0, 31); + dtB = new Date(2000, 1, 29); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2000, 1, 29); + dtB = new Date(2001, 1, 28); + t.is(dtB, dojo.date.add(dtA, interv, 12)); + + interv = "week"; + dtA = new Date(2000, 0, 1); + dtB = new Date(2000, 0, 8); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + interv = "day"; + dtA = new Date(2000, 0, 1); + dtB = new Date(2000, 0, 2); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2001, 0, 1); + dtB = new Date(2002, 0, 1); + t.is(dtB, dojo.date.add(dtA, interv, 365)); + + dtA = new Date(2000, 0, 1); + dtB = new Date(2001, 0, 1); + t.is(dtB, dojo.date.add(dtA, interv, 366)); + + dtA = new Date(2000, 1, 28); + dtB = new Date(2000, 1, 29); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2001, 1, 28); + dtB = new Date(2001, 2, 1); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2000, 2, 1); + dtB = new Date(2000, 1, 29); + t.is(dtB, dojo.date.add(dtA, interv, -1)); + + dtA = new Date(2001, 2, 1); + dtB = new Date(2001, 1, 28); + t.is(dtB, dojo.date.add(dtA, interv, -1)); + + dtA = new Date(2000, 0, 1); + dtB = new Date(1999, 11, 31); + t.is(dtB, dojo.date.add(dtA, interv, -1)); + + interv = "weekday"; + // Sat, Jan 1 + dtA = new Date(2000, 0, 1); + // Should be Mon, Jan 3 + dtB = new Date(2000, 0, 3); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + // Sun, Jan 2 + dtA = new Date(2000, 0, 2); + // Should be Mon, Jan 3 + dtB = new Date(2000, 0, 3); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + // Sun, Jan 2 + dtA = new Date(2000, 0, 2); + // Should be Fri, Jan 7 + dtB = new Date(2000, 0, 7); + t.is(dtB, dojo.date.add(dtA, interv, 5)); + + // Sun, Jan 2 + dtA = new Date(2000, 0, 2); + // Should be Mon, Jan 10 + dtB = new Date(2000, 0, 10); + t.is(dtB, dojo.date.add(dtA, interv, 6)); + + // Mon, Jan 3 + dtA = new Date(2000, 0, 3); + // Should be Mon, Jan 17 + dtB = new Date(2000, 0, 17); + t.is(dtB, dojo.date.add(dtA, interv, 10)); + + // Sat, Jan 8 + dtA = new Date(2000, 0, 8); + // Should be Mon, Jan 3 + dtB = new Date(2000, 0, 3); + t.is(dtB, dojo.date.add(dtA, interv, -5)); + + // Sun, Jan 9 + dtA = new Date(2000, 0, 9); + // Should be Wed, Jan 5 + dtB = new Date(2000, 0, 5); + t.is(dtB, dojo.date.add(dtA, interv, -3)); + + // Sun, Jan 23 + dtA = new Date(2000, 0, 23); + // Should be Fri, Jan 7 + dtB = new Date(2000, 0, 7); + t.is(dtB, dojo.date.add(dtA, interv, -11)); + + interv = "hour"; + dtA = new Date(2000, 0, 1, 11); + dtB = new Date(2000, 0, 1, 12); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2001, 9, 28, 0); + dtB = new Date(dtA.getTime() + (60 * 60 * 1000)); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2001, 9, 28, 23); + dtB = new Date(2001, 9, 29, 0); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2001, 11, 31, 23); + dtB = new Date(2002, 0, 1, 0); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + interv = "minute"; + dtA = new Date(2000, 11, 31, 23, 59); + dtB = new Date(2001, 0, 1, 0, 0); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2000, 11, 27, 12, 2); + dtB = new Date(2000, 11, 27, 13, 2); + t.is(dtB, dojo.date.add(dtA, interv, 60)); + + interv = "second"; + dtA = new Date(2000, 11, 31, 23, 59, 59); + dtB = new Date(2001, 0, 1, 0, 0, 0); + t.is(dtB, dojo.date.add(dtA, interv, 1)); + + dtA = new Date(2000, 11, 27, 8, 10, 59); + dtB = new Date(2000, 11, 27, 8, 11, 59); + t.is(dtB, dojo.date.add(dtA, interv, 60)); + + // Test environment JS Date doesn't support millisec? + //interv = "millisecond"; + // + //dtA = new Date(2000, 11, 31, 23, 59, 59, 999); + //dtB = new Date(2001, 0, 1, 0, 0, 0, 0); + //t.is(dtB, dojo.date.add(dtA, interv, 1)); + // + //dtA = new Date(2000, 11, 27, 8, 10, 53, 2); + //dtB = new Date(2000, 11, 27, 8, 10, 54, 2); + //t.is(dtB, dojo.date.add(dtA, interv, 1000)); +}, +function test_date_diff(t){ + var dtA = null; // First date to compare + var dtB = null; // Second date to compare + var interv = ''; // Interval to compare on (e.g., year, month) + + interv = "year"; + dtA = new Date(2005, 11, 27); + dtB = new Date(2006, 11, 27); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 11, 31); + dtB = new Date(2001, 0, 1); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + interv = "quarter"; + dtA = new Date(2000, 1, 29); + dtB = new Date(2001, 2, 1); + t.is(4, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 11, 1); + dtB = new Date(2001, 0, 1); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + interv = "month"; + dtA = new Date(2000, 1, 29); + dtB = new Date(2001, 2, 1); + t.is(13, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 11, 1); + dtB = new Date(2001, 0, 1); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + interv = "week"; + dtA = new Date(2000, 1, 1); + dtB = new Date(2000, 1, 8); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 1, 28); + dtB = new Date(2000, 2, 6); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 2, 6); + dtB = new Date(2000, 1, 28); + t.is(-1, dojo.date.difference(dtA, dtB, interv)); + + interv = "day"; + dtA = new Date(2000, 1, 29); + dtB = new Date(2000, 2, 1); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 11, 31); + dtB = new Date(2001, 0, 1); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + // DST leap -- check for rounding err + // This is dependent on US calendar, but + // shouldn't break in other locales + dtA = new Date(2005, 3, 3); + dtB = new Date(2005, 3, 4); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + interv = "weekday"; + dtA = new Date(2006, 7, 3); + dtB = new Date(2006, 7, 11); + t.is(6, dojo.date.difference(dtA, dtB, interv)); + + // Positive diffs + dtA = new Date(2006, 7, 4); + dtB = new Date(2006, 7, 11); + t.is(5, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 5); + dtB = new Date(2006, 7, 11); + t.is(5, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 6); + dtB = new Date(2006, 7, 11); + t.is(5, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 7); + dtB = new Date(2006, 7, 11); + t.is(4, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 7); + dtB = new Date(2006, 7, 13); + t.is(4, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 7); + dtB = new Date(2006, 7, 14); + t.is(5, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 7); + dtB = new Date(2006, 7, 15); + t.is(6, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 7); + dtB = new Date(2006, 7, 28); + t.is(15, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 2, 2); + dtB = new Date(2006, 2, 28); + t.is(18, dojo.date.difference(dtA, dtB, interv)); + + // Negative diffs + dtA = new Date(2006, 7, 11); + dtB = new Date(2006, 7, 4); + t.is(-5, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 11); + dtB = new Date(2006, 7, 5); + t.is(-4, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 11); + dtB = new Date(2006, 7, 6); + t.is(-4, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 11); + dtB = new Date(2006, 7, 7); + t.is(-4, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 13); + dtB = new Date(2006, 7, 7); + t.is(-5, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 14); + dtB = new Date(2006, 7, 7); + t.is(-5, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 15); + dtB = new Date(2006, 7, 7); + t.is(-6, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 7, 28); + dtB = new Date(2006, 7, 7); + t.is(-15, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2006, 2, 28); + dtB = new Date(2006, 2, 2); + t.is(-18, dojo.date.difference(dtA, dtB, interv)); + + // Two days on the same weekend -- no weekday diff + dtA = new Date(2006, 7, 5); + dtB = new Date(2006, 7, 6); + t.is(0, dojo.date.difference(dtA, dtB, interv)); + + interv = "hour"; + dtA = new Date(2000, 11, 31, 23); + dtB = new Date(2001, 0, 1, 0); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 11, 31, 12); + dtB = new Date(2001, 0, 1, 0); + t.is(12, dojo.date.difference(dtA, dtB, interv)); + + interv = "minute"; + dtA = new Date(2000, 11, 31, 23, 59); + dtB = new Date(2001, 0, 1, 0, 0); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 1, 28, 23, 59); + dtB = new Date(2000, 1, 29, 0, 0); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + interv = "second"; + dtA = new Date(2000, 11, 31, 23, 59, 59); + dtB = new Date(2001, 0, 1, 0, 0, 0); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + interv = "millisecond"; + dtA = new Date(2000, 11, 31, 23, 59, 59, 999); + dtB = new Date(2001, 0, 1, 0, 0, 0, 0); + t.is(1, dojo.date.difference(dtA, dtB, interv)); + + dtA = new Date(2000, 11, 31, 23, 59, 59, 0); + dtB = new Date(2001, 0, 1, 0, 0, 0, 0); + t.is(1000, dojo.date.difference(dtA, dtB, interv)); +}, +function test_date_add_diff_year(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + + interv = "year"; + dtA = new Date(2005, 11, 27); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2005, 11, 27); + dtB = dojo.date.add(dtA, interv, -1); + t.is(dojo.date.difference(dtA, dtB, interv), -1); + + dtA = new Date(2000, 1, 29); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2000, 1, 29); + dtB = dojo.date.add(dtA, interv, 5); + t.is(dojo.date.difference(dtA, dtB, interv), 5); + + dtA = new Date(1900, 11, 31); + dtB = dojo.date.add(dtA, interv, 30); + t.is(dojo.date.difference(dtA, dtB, interv), 30); + + dtA = new Date(1995, 11, 31); + dtB = dojo.date.add(dtA, interv, 35); + t.is(dojo.date.difference(dtA, dtB, interv), 35); +}, +function test_date_add_diff_quarter(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + interv = "quarter"; + dtA = new Date(2000, 0, 1); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2000, 1, 29); + dtB = dojo.date.add(dtA, interv, 2); + t.is(dojo.date.difference(dtA, dtB, interv), 2); + + dtA = new Date(2000, 1, 29); + dtB = dojo.date.add(dtA, interv, 4); + t.is(dojo.date.difference(dtA, dtB, interv), 4); +}, +function test_date_add_diff_month(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + interv = "month"; + dtA = new Date(2000, 0, 1); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2000, 0, 31); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2000, 1, 29); + dtB = dojo.date.add(dtA, interv, 12); + t.is(dojo.date.difference(dtA, dtB, interv), 12); +}, +function test_date_add_diff_week(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + interv = "week"; + dtA = new Date(2000, 0, 1); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); +}, +function test_date_add_diff_day(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + interv = "day"; + dtA = new Date(2000, 0, 1); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2001, 0, 1); + dtB = dojo.date.add(dtA, interv, 365); + t.is(dojo.date.difference(dtA, dtB, interv), 365); + + dtA = new Date(2000, 0, 1); + dtB = dojo.date.add(dtA, interv, 366); + t.is(dojo.date.difference(dtA, dtB, interv), 366); + + dtA = new Date(2000, 1, 28); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2001, 1, 28); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2000, 2, 1); + dtB = dojo.date.add(dtA, interv, -1); + t.is(dojo.date.difference(dtA, dtB, interv), -1); + + dtA = new Date(2001, 2, 1); + dtB = dojo.date.add(dtA, interv, -1); + t.is(dojo.date.difference(dtA, dtB, interv), -1); + + dtA = new Date(2000, 0, 1); + dtB = dojo.date.add(dtA, interv, -1); + t.is(dojo.date.difference(dtA, dtB, interv), -1); +}, +function test_date_add_diff_weekday(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + interv = "weekday"; + // Sat, Jan 1 + dtA = new Date(2000, 0, 1); + // Should be Mon, Jan 3 + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + // Sun, Jan 2 + dtA = new Date(2000, 0, 2); + // Should be Mon, Jan 3 + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + // Sun, Jan 2 + dtA = new Date(2000, 0, 2); + // Should be Fri, Jan 7 + dtB = dojo.date.add(dtA, interv, 5); + t.is(dojo.date.difference(dtA, dtB, interv), 5); + + // Sun, Jan 2 + dtA = new Date(2000, 0, 2); + // Should be Mon, Jan 10 + dtB = dojo.date.add(dtA, interv, 6); + t.is(dojo.date.difference(dtA, dtB, interv), 6); + + // Mon, Jan 3 + dtA = new Date(2000, 0, 3); + // Should be Mon, Jan 17 + dtB = dojo.date.add(dtA, interv, 10); + t.is(dojo.date.difference(dtA, dtB, interv), 10); + + // Sat, Jan 8 + dtA = new Date(2000, 0, 8); + // Should be Mon, Jan 3 + dtB = dojo.date.add(dtA, interv, -5); + t.is(dojo.date.difference(dtA, dtB, interv), -5); + + // Sun, Jan 9 + dtA = new Date(2000, 0, 9); + // Should be Wed, Jan 5 + dtB = dojo.date.add(dtA, interv, -3); + t.is(dojo.date.difference(dtA, dtB, interv), -3); + + // Sun, Jan 23 + dtA = new Date(2000, 0, 23); + // Should be Fri, Jan 7 + dtB = dojo.date.add(dtA, interv, -11); + t.is(dojo.date.difference(dtA, dtB, interv), -11); +}, +function test_date_add_diff_hour(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + interv = "hour"; + dtA = new Date(2000, 0, 1, 11); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2001, 9, 28, 0); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2001, 9, 28, 23); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2001, 11, 31, 23); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); +}, +function test_date_add_diff_minute(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + interv = "minute"; + dtA = new Date(2000, 11, 31, 23, 59); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2000, 11, 27, 12, 2); + dtB = dojo.date.add(dtA, interv, 60); + t.is(dojo.date.difference(dtA, dtB, interv), 60); +}, +function test_date_add_diff_second(t){ + var interv = ''; // Interval (e.g., year, month) + var dtA = null; // Date to increment + var dtB = null; // Expected result date + console.debug("second"); + interv = "second"; + dtA = new Date(2000, 11, 31, 23, 59, 59); + dtB = dojo.date.add(dtA, interv, 1); + t.is(dojo.date.difference(dtA, dtB, interv), 1); + + dtA = new Date(2000, 11, 27, 8, 10, 59); + dtB = dojo.date.add(dtA, interv, 60); + t.is(dojo.date.difference(dtA, dtB, interv), 60); + + // Test environment JS Date doesn't support millisec? + //interv = "millisecond"; + // + //dtA = new Date(2000, 11, 31, 23, 59, 59, 999); + //dtB = dojo.date.add(dtA, interv, 1); + //t.is(dojo.date.difference(dtA, dtB, interv), 1); + // + //dtA = new Date(2000, 11, 27, 8, 10, 53, 2); + //dtB = dojo.date.add(dtA, interv, 1000); + //t.is(dojo.date.difference(dtA, dtB, interv), 1000); +} + ] +); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/date/locale.js b/js/dojo-release-1.7.2-src/dojo/tests/date/locale.js new file mode 100644 index 0000000..d6d6532 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/date/locale.js @@ -0,0 +1,445 @@ +dojo.provide("dojo.tests.date.locale"); + +dojo.require("dojo.date.locale"); + +tests.register("tests.date.locale", + [ + { + // Test formatting and parsing of dates in various locales pre-built in dojo.cldr + // NOTE: we can't set djConfig.extraLocale before bootstrapping unit tests, so directly + // load resources here for specific locales: + + name: "date.locale", + runTest: function(t){ + var partLocaleList = ["en-us", "fr-fr", "es", "de-at", "ja-jp", "zh-cn"]; + if(dojo.isAsync){ + var def = new doh.Deferred(), + deps = dojo.map(partLocaleList, function(locale){ + return dojo.getL10nName("dojo/cldr", "gregorian", locale) + }); + require(deps, function(){ + def.callback(true); + }); + return def; + }else{ // tests for the v1.x loader/i18n machinery + dojo.forEach(partLocaleList, function(locale){ + dojo.requireLocalization("dojo.cldr", "gregorian", locale); + }); + } + }, + tearDown: function(){ + //Clean up bundles that should not exist if + //the test is re-run. + //delete dojo.cldr.nls.gregorian; + } + }, + { + name: "isWeekend", + runTest: function(t){ + var thursday = new Date(2006, 8, 21); + var friday = new Date(2006, 8, 22); + var saturday = new Date(2006, 8, 23); + var sunday = new Date(2006, 8, 24); + var monday = new Date(2006, 8, 25); + t.f(dojo.date.locale.isWeekend(thursday, 'en-us')); + t.t(dojo.date.locale.isWeekend(saturday, 'en-us')); + t.t(dojo.date.locale.isWeekend(sunday, 'en-us')); + t.f(dojo.date.locale.isWeekend(monday, 'en-us')); +// t.f(dojo.date.locale.isWeekend(saturday, 'en-in')); +// t.t(dojo.date.locale.isWeekend(sunday, 'en-in')); +// t.f(dojo.date.locale.isWeekend(monday, 'en-in')); +// t.t(dojo.date.locale.isWeekend(friday, 'he-il')); +// t.f(dojo.date.locale.isWeekend(sunday, 'he-il')); + } + }, + { + name: "format", + runTest: function(t){ + + var date = new Date(2006, 7, 11, 0, 55, 12, 345); + + t.is("Friday, August 11, 2006", dojo.date.locale.format(date, {formatLength:'full',selector:'date', locale:'en-us'})); + t.is("vendredi 11 ao\xFBt 2006", dojo.date.locale.format(date, {formatLength:'full',selector:'date', locale:'fr-fr'})); + t.is("Freitag, 11. August 2006", dojo.date.locale.format(date, {formatLength:'full',selector:'date', locale:'de-at'})); + t.is("2006\u5E748\u670811\u65E5\u91D1\u66DC\u65E5", dojo.date.locale.format(date, {formatLength:'full',selector:'date', locale:'ja-jp'})); + + t.is("8/11/06", dojo.date.locale.format(date, {formatLength:'short',selector:'date', locale:'en-us'})); + t.is("11/08/06", dojo.date.locale.format(date, {formatLength:'short',selector:'date', locale:'fr-fr'})); + t.is("11.08.06", dojo.date.locale.format(date, {formatLength:'short',selector:'date', locale:'de-at'})); + t.is("06/08/11", dojo.date.locale.format(date, {formatLength:'short',selector:'date', locale:'ja-jp'})); + + t.is("6", dojo.date.locale.format(date, {datePattern:'E', selector:'date'})); + + t.is("12:55 AM", dojo.date.locale.format(date, {formatLength:'short',selector:'time', locale:'en-us'})); + t.is("12:55:12", dojo.date.locale.format(date, {timePattern:'h:m:s',selector:'time'})); + t.is("12:55:12.35", dojo.date.locale.format(date, {timePattern:'h:m:s.SS',selector:'time'})); + t.is("24:55:12.35", dojo.date.locale.format(date, {timePattern:'k:m:s.SS',selector:'time'})); + t.is("0:55:12.35", dojo.date.locale.format(date, {timePattern:'H:m:s.SS',selector:'time'})); + t.is("0:55:12.35", dojo.date.locale.format(date, {timePattern:'K:m:s.SS',selector:'time'})); + + t.is("11082006", dojo.date.locale.format(date, {datePattern:"ddMMyyyy", selector:"date"})); + + t.is("12 o'clock AM", dojo.date.locale.format(date, {datePattern:"hh 'o''clock' a", selector:"date", locale: 'en'})); + + t.is("11/08/2006 12:55am", dojo.date.locale.format(date, {datePattern:"dd/MM/yyyy", timePattern:"hh:mma", locale: 'en', am:"am", pm:"pm"})); + + // compare without timezone + t.is("\u4e0a\u534812\u65f655\u520612\u79d2", dojo.date.locale.format(date, {formatLength:'full',selector:'time', locale:'zh-cn'}).replace(/^.*(\u4e0a\u5348.*)/,"$1")); + } + }, + { + name: "parse_dates", + runTest: function(t){ + + var aug_11_2006 = new Date(2006, 7, 11, 0); + + //en: 'short' fmt: M/d/yy + // Tolerate either 8 or 08 for month part. + t.is( aug_11_2006, dojo.date.locale.parse("08/11/06", {formatLength:'short', selector:'date', locale:'en'})); + t.is( aug_11_2006, dojo.date.locale.parse("8/11/06", {formatLength:'short', selector:'date', locale:'en'})); + // Tolerate yyyy input in yy part... + t.is( aug_11_2006, dojo.date.locale.parse("8/11/2006", {formatLength:'short', selector:'date', locale:'en'})); + // ...but not in strict mode + t.f( Boolean(dojo.date.locale.parse("8/11/2006", {formatLength:'short', selector:'date', locale:'en', strict:true}))); + + // test dates with no spaces + t.is( aug_11_2006, dojo.date.locale.parse("11Aug2006", {selector: 'date', datePattern: 'ddMMMyyyy', locale: 'en'})); + t.is( new Date(2006, 7, 1), dojo.date.locale.parse("Aug2006", {selector: 'date', datePattern: 'MMMyyyy', locale: 'en'})); + t.is( new Date(2010, 10, 19), dojo.date.locale.parse("111910", {fullyear: false, datePattern: "MMddyy", selector: "date"})); + + //en: 'medium' fmt: MMM d, yyyy + // Tolerate either 8 or 08 for month part. + t.is( aug_11_2006, dojo.date.locale.parse("Aug 11, 2006", {formatLength:'medium', selector:'date', locale:'en'})); + t.is( aug_11_2006, dojo.date.locale.parse("Aug 11, 2006", {formatLength:'medium', selector:'date', locale:'en'})); + // Tolerate abbreviating period in month part... + t.is( aug_11_2006, dojo.date.locale.parse("Aug. 11, 2006", {formatLength:'medium', selector:'date', locale:'en'})); + // ...but not in strict mode + t.f( Boolean(dojo.date.locale.parse("Aug. 11, 2006", {formatLength:'medium', selector:'date', locale:'en', strict:true}))); + + // Note: 06 for year part will be translated literally as the year 6 C.E. + var aug_11_06CE = new Date(2006, 7, 11, 0); + aug_11_06CE.setFullYear(6); //literally the year 6 C.E. + t.is( aug_11_06CE, dojo.date.locale.parse("Aug 11, 06", {selector:'date', datePattern:'MMM dd, yyyy', locale: 'en', strict:true})); + + //en: 'long' fmt: MMMM d, yyyy + t.is( aug_11_2006, dojo.date.locale.parse("August 11, 2006", {formatLength:'long', selector:'date', locale:'en'})); + + //en: 'full' fmt: EEEE, MMMM d, yyyy + t.is( aug_11_2006, dojo.date.locale.parse("Friday, August 11, 2006", {formatLength:'full', selector:'date', locale:'en'})); + //TODO: wrong day-of-week should fail + //t.f( Boolean(dojo.date.locale.parse("Thursday, August 11, 2006", {formatLength:'full', selector:'date', locale:'en'}))); + //TODO: Whitespace tolerance + // t.is( aug_11_2006, dojo.date.locale.parse(" August 11, 2006", {formatLength:'long', selector:'date', locale:'en'})); + // t.is( aug_11_2006, dojo.date.locale.parse("August 11, 2006", {formatLength:'long', selector:'date', locale:'en'})); + // t.is( aug_11_2006, dojo.date.locale.parse("August 11 , 2006", {formatLength:'long', selector:'date', locale:'en'})); + // t.is( aug_11_2006, dojo.date.locale.parse("August 11, 2006", {formatLength:'long', selector:'date', locale:'en'})); + // t.is( aug_11_2006, dojo.date.locale.parse("August 11, 2006 ", {formatLength:'long', selector:'date', locale:'en'})); + + //Simple Validation Tests + //catch "month" > 12 (note: month/day reversals are common when user expectation isn't met wrt european versus US formats) + t.f( Boolean(dojo.date.locale.parse("15/1/2005", {formatLength:'short', selector:'date', locale:'en'}))); + //day of month typo rolls over to the next month + t.f( Boolean(dojo.date.locale.parse("Aug 32, 2006", {formatLength:'medium', selector:'date', locale:'en'}))); + + //German (de) + t.is( aug_11_2006, dojo.date.locale.parse("11.08.06", {formatLength:'short', selector:'date', locale:'de'})); + t.f( Boolean(dojo.date.locale.parse("11.8/06", {formatLength:'short', selector:'date', locale:'de'}))); + t.f( Boolean(dojo.date.locale.parse("11.8x06", {formatLength:'short', selector:'date', locale:'de'}))); + t.f( Boolean(dojo.date.locale.parse("11.13.06", {formatLength:'short', selector:'date', locale:'de'}))); + t.f( Boolean(dojo.date.locale.parse("11.0.06", {formatLength:'short', selector:'date', locale:'de'}))); + t.f( Boolean(dojo.date.locale.parse("32.08.06", {formatLength:'short', selector:'date', locale:'de'}))); + + //Spanish (es) + //es: 'short' fmt: d/MM/yy + t.is( aug_11_2006, dojo.date.locale.parse("11/08/06", {formatLength:'short', selector:'date', locale:'es'})); + t.is( aug_11_2006, dojo.date.locale.parse("11/8/06", {formatLength:'short', selector:'date', locale:'es'})); + // Tolerate yyyy input in yy part... + t.is( aug_11_2006, dojo.date.locale.parse("11/8/2006", {formatLength:'short', selector:'date', locale:'es'})); + // ...but not in strict mode + t.f( Boolean(dojo.date.locale.parse("11/8/2006", {formatLength:'short', selector:'date', locale:'es', strict:true}))); + //es: 'medium' fmt: dd-MMM-yy (not anymore as of CLDR 1.5.1) +// t.is( aug_11_2006, dojo.date.locale.parse("11-ago-06", {formatLength:'medium', selector:'date', locale:'es'})); +// t.is( aug_11_2006, dojo.date.locale.parse("11-ago-2006", {formatLength:'medium', selector:'date', locale:'es'})); + // Tolerate abbreviating period in month part... +// t.is( aug_11_2006, dojo.date.locale.parse("11-ago.-2006", {formatLength:'medium', selector:'date', locale:'es'})); + // ...but not in strict mode +// t.f( Boolean(dojo.date.locale.parse("11-ago.-2006", {formatLength:'medium', selector:'date', locale:'es', strict:true}))); + //es: 'long' fmt: d' de 'MMMM' de 'yyyy + t.is( aug_11_2006, dojo.date.locale.parse("11 de agosto de 2006", {formatLength:'long', selector:'date', locale:'es'})); + //case-insensitive month... + t.is( aug_11_2006, dojo.date.locale.parse("11 de Agosto de 2006", {formatLength:'long', selector:'date', locale:'es'})); + //...but not in strict mode + t.f( Boolean(dojo.date.locale.parse("11 de Agosto de 2006", {formatLength:'long', selector:'date', locale:'es', strict:true}))); + //es 'full' fmt: EEEE d' de 'MMMM' de 'yyyy + t.is( aug_11_2006, dojo.date.locale.parse("viernes 11 de agosto de 2006", {formatLength:'full', selector:'date', locale:'es'})); + //case-insensitive day-of-week... + t.is( aug_11_2006, dojo.date.locale.parse("Viernes 11 de agosto de 2006", {formatLength:'full', selector:'date', locale:'es'})); + //...but not in strict mode + t.f( Boolean(dojo.date.locale.parse("Viernes 11 de agosto de 2006", {formatLength:'full', selector:'date', locale:'es', strict:true}))); + + //Japanese (ja) + //note: to avoid garbling from non-utf8-aware editors that may touch this file, using the \uNNNN format + //for expressing double-byte chars. + //toshi (year): \u5e74 + //getsu (month): \u6708 + //nichi (day): \u65e5 + //kinyoubi (Friday): \u91d1\u66dc\u65e5 + //zenkaku space: \u3000 + + //ja: 'short' fmt: yy/MM/dd (note: the "short" fmt isn't actually defined in the CLDR data...) + t.is( aug_11_2006, dojo.date.locale.parse("06/08/11", {formatLength:'short', selector:'date', locale:'ja'})); + t.is( aug_11_2006, dojo.date.locale.parse("06/8/11", {formatLength:'short', selector:'date', locale:'ja'})); + // Tolerate yyyy input in yy part... + t.is( aug_11_2006, dojo.date.locale.parse("2006/8/11", {formatLength:'short', selector:'date', locale:'ja'})); + // ...but not in strict mode + t.f( Boolean(dojo.date.locale.parse("2006/8/11", {formatLength:'short', selector:'date', locale:'ja', strict:true}))); + //ja: 'medium' fmt: yyyy/MM/dd + t.is( aug_11_2006, dojo.date.locale.parse("2006/08/11", {formatLength:'medium', selector:'date', locale:'ja'})); + t.is( aug_11_2006, dojo.date.locale.parse("2006/8/11", {formatLength:'medium', selector:'date', locale:'ja'})); + //ja: 'long' fmt: yyyy'\u5e74'\u6708'd'\u65e5' + t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e748\u670811\u65e5", {formatLength:'long', selector:'date', locale:'ja'})); + //ja 'full' fmt: yyyy'\u5e74'M'\u6708'd'\u65e5'EEEE + t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); + + //TODO: Whitespace tolerance + //tolerate ascii space + // t.is( aug_11_2006, dojo.date.locale.parse(" 2006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5 ", {formatLength:'full', selector:'date', locale:'ja'})); + // t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e74 8\u670811\u65e5 \u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); + //tolerate zenkaku space + // t.is( aug_11_2006, dojo.date.locale.parse("\u30002006\u5e748\u670811\u65e5\u91d1\u66dc\u65e5\u3000", {formatLength:'full', selector:'date', locale:'ja'})); + // t.is( aug_11_2006, dojo.date.locale.parse("2006\u5e74\u30008\u670811\u65e5\u3000\u91d1\u66dc\u65e5", {formatLength:'full', selector:'date', locale:'ja'})); + + var apr_11_2006 = new Date(2006, 3, 11, 0); + //Roundtrip + var options={formatLength:'medium',selector:'date', locale:'fr-fr'}; + t.is(0, dojo.date.compare(apr_11_2006, dojo.date.locale.parse(dojo.date.locale.format(apr_11_2006, options), options))); + + //Tolerance for abbreviations + t.is(0, dojo.date.compare(apr_11_2006, dojo.date.locale.parse("11 avr 06", options))); + } + }, + { + name: "parse_dates_neg", + runTest: function(t){ + t.f(Boolean(dojo.date.locale.parse("2/29/2007", {formatLength: 'short', selector: 'date', locale: 'en'}))); + t.f(Boolean(dojo.date.locale.parse("4/31/2007", {formatLength: 'short', selector: 'date', locale: 'en'}))); + t.f(Boolean(dojo.date.locale.parse("Decemb 30, 2007", {formatLength: 'long', selector: 'date', locale: 'en'}))); + } + }, + { + name: "parse_datetimes", + runTest: function(t){ + + var aug_11_2006_12_30_am = new Date(2006, 7, 11, 0, 30); + var aug_11_2006_12_30_pm = new Date(2006, 7, 11, 12, 30); + + //en: 'short' datetime fmt: M/d/yy h:mm a + //note: this is concatenation of dateFormat-short and timeFormat-short, + //cldr provisionally defines datetime fmts as well, but we're not using them at the moment + t.is( aug_11_2006_12_30_pm, dojo.date.locale.parse("08/11/06 12:30 PM", {formatLength:'short', locale:'en'})); + //case-insensitive + t.is( aug_11_2006_12_30_pm, dojo.date.locale.parse("08/11/06 12:30 pm", {formatLength:'short', locale:'en'})); + //...but not in strict mode + t.f( Boolean(dojo.date.locale.parse("08/11/06 12:30 pm", {formatLength:'short', locale:'en', strict:true}))); + + t.is( aug_11_2006_12_30_am, dojo.date.locale.parse("08/11/06 12:30 AM", {formatLength:'short', locale:'en'})); + + t.is( new Date(2006, 7, 11), dojo.date.locale.parse("11082006", {datePattern:"ddMMyyyy", selector:"date"})); + + t.is( new Date(2006, 7, 31), dojo.date.locale.parse("31Aug2006", {datePattern:"ddMMMyyyy", selector:"date", locale:'en'})); + + t.is(new Date(1970,0,7), dojo.date.locale.parse("007", {datePattern:'DDD',selector:'date'})); + t.is(new Date(1970,0,31), dojo.date.locale.parse("031", {datePattern:'DDD',selector:'date'})); + t.is(new Date(1970,3,10), dojo.date.locale.parse("100", {datePattern:'DDD',selector:'date'})); + + } + }, + { + name: "parse_times", + runTest: function(t){ + var time = new Date(2006, 7, 11, 12, 30); + var tformat = {selector:'time', strict:true, timePattern:"h:mm a", locale:'en'}; + + t.is(time.getHours(), dojo.date.locale.parse("12:30 PM", tformat).getHours()); + t.is(time.getMinutes(), dojo.date.locale.parse("12:30 PM", tformat).getMinutes()); + } + }, + { + name: "format_patterns", + runTest: function(t){ + var time = new Date(2006, 7, 11, 12, 30); + var tformat = {selector:'time', strict:true, timePattern:"h 'o''clock'", locale:'en'}; + t.is(time.getHours(), dojo.date.locale.parse("12 o'clock", tformat).getHours()); + + tformat = {selector:'time', strict:true, timePattern:" 'Hour is' h", locale:'en'}; + t.is(time.getHours(), dojo.date.locale.parse(" Hour is 12", tformat).getHours()); + + tformat = {selector:'time', strict:true, timePattern:"'Hour is' h", locale:'en'}; + t.is(time.getHours(), dojo.date.locale.parse("Hour is 12", tformat).getHours()); + } + }, + { + name: "parse_patterns", + runTest: function(t){ + var time = new Date(2006, 7, 11, 12, 30); + var tformat = {selector:'time', strict:true, timePattern:"h 'o''clock'", locale:'en'}; + t.is(time.getHours(), dojo.date.locale.parse("12 o'clock", tformat).getHours()); + + tformat = {selector:'time', strict:true, timePattern:" 'Hour is' h", locale:'en'}; + t.is(time.getHours(), dojo.date.locale.parse(" Hour is 12", tformat).getHours()); + tformat = {selector:'time', strict:true, timePattern:"'Hour is' h", locale:'en'}; + t.is(time.getHours(), dojo.date.locale.parse("Hour is 12", tformat).getHours()); + } + }, + { + name: "day_of_year", + runTest: function(t){ + +// t.is(23, dojo.date.setDayOfYear(new Date(2006,0,1), 23).getDate()); + t.is(1, dojo.date.locale._getDayOfYear(new Date(2006,0,1))); + t.is(32, dojo.date.locale._getDayOfYear(new Date(2006,1,1))); + t.is(72, dojo.date.locale._getDayOfYear(new Date(2007,2,13,0,13))); + t.is(72, dojo.date.locale._getDayOfYear(new Date(2007,2,13,1,13))); + } + }, + { + name: "week_of_year", + runTest: function(t){ + t.is(0, dojo.date.locale._getWeekOfYear(new Date(2000,0,1))); + t.is(1, dojo.date.locale._getWeekOfYear(new Date(2000,0,2))); + t.is(0, dojo.date.locale._getWeekOfYear(new Date(2000,0,2), 1)); + t.is(0, dojo.date.locale._getWeekOfYear(new Date(2007,0,1))); + t.is(1, dojo.date.locale._getWeekOfYear(new Date(2007,0,1), 1)); + t.is(27, dojo.date.locale._getWeekOfYear(new Date(2007,6,14))); + t.is(28, dojo.date.locale._getWeekOfYear(new Date(2007,6,14), 1)); + } + } + ] +); + +/* +// workaround deprecated methods. Should decide whether we should convert the tests or add a helper method (in dojo.date?) to do this. + +dojo_validate_isValidTime = function(str, props){ + props = props || {}; + if(!props.format){props.format="h:mm:ss";} + if(!props.am){props.am="a.m.";} + if(!props.pm){props.pm="p.m.";} + var result = false; + if(/[hk]/.test(props.format) && props.format.indexOf('a') == -1){ + result = dojo.date.locale.parse(str, {selector: 'time', timePattern: props.format + " a"}); + } + return Boolean(result || dojo.date.locale.parse(str, {selector: 'time', timePattern: props.format})); +} + +dojo_validate_is12HourTime = function(str){ + return dojo_validate_isValidTime(str, {format: 'h:mm:ss'}) || dojo_validate_isValidTime(str, {format: 'h:mm'}); +} + +dojo_validate_is24HourTime = function(str){ + return dojo_validate_isValidTime(str, {format: 'H:mm:ss'}) || dojo_validate_isValidTime(str, {format: 'H:mm'}); +} + +dojo_validate_isValidDate = function(str, fmt){ + return Boolean(dojo.date.locale.parse(str, {selector: 'date', datePattern: fmt})); +} + +function test_validate_datetime_isValidTime(){ + jum.assertTrue("test1", dojo_validate_isValidTime('5:15:05 pm')); +// FAILURE jum.assertTrue("test2", dojo_validate_isValidTime('5:15:05 p.m.', {pm: "P.M."} )); + jum.assertFalse("test3", dojo_validate_isValidTime('5:15:05 f.m.')); + jum.assertTrue("test4", dojo_validate_isValidTime('5:15 pm', {format: "h:mm a"} ) ); + jum.assertFalse("test5", dojo_validate_isValidTime('5:15 fm', {}) ); + jum.assertTrue("test6", dojo_validate_isValidTime('15:15:00', {format: "H:mm:ss"} ) ); +// FAILURE jum.assertFalse("test7", dojo_validate_isValidTime('15:15:00', {}) ); + jum.assertTrue("test8", dojo_validate_isValidTime('17:01:30', {format: "H:mm:ss"} ) ); + jum.assertFalse("test9", dojo_validate_isValidTime('17:1:30', {format: "H:mm:ss"} ) ); +// FAILURE jum.assertFalse("test10", dojo_validate_isValidTime('17:01:30', {format: "H:m:ss"} ) ); + // Greek +// FAILURE jum.assertTrue("test11", dojo_validate_isValidTime('5:01:30 \u0924\u0924', {am: "\u0928\u0924", pm: "\u0924\u0924"} ) ); + // Italian + jum.assertTrue("test12", dojo_validate_isValidTime('17.01.30', {format: "H.mm.ss"} ) ); + // Mexico +// FAILURE jum.assertTrue("test13", dojo_validate_isValidTime('05:01:30 p.m.', {format: "hh:mm:ss a", am: "a.m.", pm: "p.m."} ) ); +} + + +function test_validate_datetime_is12HourTime(){ + jum.assertTrue("test1", dojo_validate_is12HourTime('5:15:05 pm')); +// FAILURE jum.assertFalse("test2", dojo_validate_is12HourTime('05:15:05 pm')); + jum.assertFalse("test3", dojo_validate_is12HourTime('5:5:05 pm')); + jum.assertFalse("test4", dojo_validate_is12HourTime('5:15:5 pm')); +// FAILURE jum.assertFalse("test5", dojo_validate_is12HourTime('13:15:05 pm')); + jum.assertFalse("test6", dojo_validate_is12HourTime('5:60:05 pm')); + jum.assertFalse("test7", dojo_validate_is12HourTime('5:15:60 pm')); + jum.assertTrue("test8", dojo_validate_is12HourTime('5:59:05 pm')); + jum.assertTrue("test9", dojo_validate_is12HourTime('5:15:59 pm')); +// FAILURE jum.assertFalse("test10", dojo_validate_is12HourTime('5:15:05')); + + // optional seconds + jum.assertTrue("test11", dojo_validate_is12HourTime('5:15 pm')); + jum.assertFalse("test12", dojo_validate_is12HourTime('5:15: pm')); +} + +function test_validate_datetime_is24HourTime(){ + jum.assertTrue("test1", dojo_validate_is24HourTime('00:03:59')); + jum.assertTrue("test2", dojo_validate_is24HourTime('22:03:59')); +//FIXME: fix tests or code? +// jum.assertFalse("test3", dojo_validate_is24HourTime('22:03:59 pm')); +// jum.assertFalse("test4", dojo_validate_is24HourTime('2:03:59')); + jum.assertFalse("test5", dojo_validate_is24HourTime('0:3:59')); + jum.assertFalse("test6", dojo_validate_is24HourTime('00:03:5')); + jum.assertFalse("test7", dojo_validate_isValidTime('24:03:59', {format: 'kk:mm:ss'})); + jum.assertFalse("test8", dojo_validate_is24HourTime('02:60:59')); + jum.assertFalse("test9", dojo_validate_is24HourTime('02:03:60')); + + // optional seconds + jum.assertTrue("test10", dojo_validate_is24HourTime('22:53')); + jum.assertFalse("test11", dojo_validate_is24HourTime('22:53:')); +} + +function test_validate_datetime_isValidDate(){ + + // Month date year + jum.assertTrue("test1", dojo_validate_isValidDate("08/06/2005", "MM/dd/yyyy")); + jum.assertTrue("test2", dojo_validate_isValidDate("08.06.2005", "MM.dd.yyyy")); + jum.assertTrue("test3", dojo_validate_isValidDate("08-06-2005", "MM-dd-yyyy")); + jum.assertTrue("test4", dojo_validate_isValidDate("8/6/2005", "M/d/yyyy")); + jum.assertTrue("test5", dojo_validate_isValidDate("8/6", "M/d")); + jum.assertFalse("test6", dojo_validate_isValidDate("09/31/2005", "MM/dd/yyyy")); + jum.assertFalse("test7", dojo_validate_isValidDate("02/29/2005", "MM/dd/yyyy")); + jum.assertTrue("test8", dojo_validate_isValidDate("02/29/2004", "MM/dd/yyyy")); + + // year month date + jum.assertTrue("test9", dojo_validate_isValidDate("2005-08-06", "yyyy-MM-dd")); + jum.assertTrue("test10", dojo_validate_isValidDate("20050806", "yyyyMMdd")); + + // year month + jum.assertTrue("test11", dojo_validate_isValidDate("2005-08", "yyyy-MM")); + jum.assertTrue("test12", dojo_validate_isValidDate("200508", "yyyyMM")); + + // year + jum.assertTrue("test13", dojo_validate_isValidDate("2005", "yyyy")); + + // year week day +//TODO: need to support 'w'? +// jum.assertTrue("test14", dojo_validate_isValidDate("2005-W42-3", "yyyy-'W'ww-d")); +// jum.assertTrue("test15", dojo_validate_isValidDate("2005W423", "yyyy'W'wwd")); +// jum.assertFalse("test16", dojo_validate_isValidDate("2005-W42-8", "yyyy-'W'ww-d")); +// jum.assertFalse("test17", dojo_validate_isValidDate("2005-W54-3", "yyyy-'W'ww-d")); + + // year week +// jum.assertTrue("test18", dojo_validate_isValidDate("2005-W42", "yyyy-'W'ww")); +// jum.assertTrue("test19", dojo_validate_isValidDate("2005W42", "yyyy'W'ww")); + + // year ordinal-day + jum.assertTrue("test20", dojo_validate_isValidDate("2005-292", "yyyy-DDD")); + jum.assertTrue("test21", dojo_validate_isValidDate("2005292", "yyyyDDD")); + jum.assertFalse("test22", dojo_validate_isValidDate("2005-366", "yyyy-DDD")); + jum.assertTrue("test23", dojo_validate_isValidDate("2004-366", "yyyy-DDD")); + + // date month year + jum.assertTrue("test24", dojo_validate_isValidDate("19.10.2005", "dd.MM.yyyy")); + jum.assertTrue("test25", dojo_validate_isValidDate("19-10-2005", "d-M-yyyy")); +} +*/ diff --git a/js/dojo-release-1.7.2-src/dojo/tests/date/stamp.js b/js/dojo-release-1.7.2-src/dojo/tests/date/stamp.js new file mode 100644 index 0000000..04c4044 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/date/stamp.js @@ -0,0 +1,98 @@ +dojo.provide("dojo.tests.date.stamp"); + +dojo.require("dojo.date.stamp"); + +tests.register("tests.date.stamp", + [ +function test_date_iso(t){ + var rfc = "2005-06-29T08:05:00-07:00"; + var date = dojo.date.stamp.fromISOString(rfc); + t.is(2005,date.getFullYear()); + t.is(5,date.getMonth()); + t.is(29,date.getUTCDate()); + t.is(15,date.getUTCHours()); + t.is(5,date.getUTCMinutes()); + t.is(0,date.getSeconds()); + + rfc = "2004-02-29"; + date = dojo.date.stamp.fromISOString(rfc); + t.is(2004,date.getFullYear()); + t.is(1,date.getMonth()); + t.is(29,date.getDate()); + + rfc = "2004-01"; + date = dojo.date.stamp.fromISOString(rfc); + t.is(2004,date.getFullYear()); + t.is(0,date.getMonth()); + t.is(1,date.getDate()); + + // No TZ info means local time + rfc = "2004-02-29T01:23:45"; + date = dojo.date.stamp.fromISOString(rfc); + t.is(2004,date.getFullYear()); + t.is(1,date.getMonth()); + t.is(29,date.getDate()); + t.is(1,date.getHours()); + + date = new Date(2005,5,29,8,5,0); + rfc = dojo.date.stamp.toISOString(date); + //truncate for comparison + t.is("2005-06",rfc.substring(0,7)); + + date = new Date(101,0,2); + date.setFullYear(101); + rfc = dojo.date.stamp.toISOString(date); + //truncate for comparison + t.is("0101-01",rfc.substring(0,7)); + + rfc = "0101-01-01"; + date = dojo.date.stamp.fromISOString(rfc); + t.is(101,date.getFullYear()); + t.is(0,date.getMonth()); + t.is(1,date.getDate()); + + rfc = "0001-01T00:00:00"; + date = dojo.date.stamp.fromISOString(rfc); + t.is(1,date.getFullYear()); + + date = dojo.date.stamp.fromISOString("T18:46:39"); + t.is(18, date.getHours()); + t.is(46, date.getMinutes()); + t.is(39, date.getSeconds()); +}, + +function test_date_iso_tz(t){ + + //23:59:59.9942 or 235959.9942 +// var date = dojo.date.stamp.fromISOString("T18:46:39.9942"); +// t.is(18, date.getHours()); +// t.is(46, date.getMinutes()); +// t.is(39, date.getSeconds()); +// t.is(994, date.getMilliseconds()); + + //1995-02-04 24:00 = 1995-02-05 00:00 + + //timezone tests + var offset = new Date().getTimezoneOffset()/60; + date = dojo.date.stamp.fromISOString("T18:46:39+07:00"); + t.is(11, date.getUTCHours()); + + date = dojo.date.stamp.fromISOString("T18:46:39+00:00"); + t.is(18, date.getUTCHours()); + + date = dojo.date.stamp.fromISOString("T18:46:39Z"); + t.is(18, date.getUTCHours()); + + date = dojo.date.stamp.fromISOString("T16:46:39-07:00"); + t.is(23, date.getUTCHours()); + + date = dojo.date.stamp.fromISOString("T00:00:00Z", new Date(2010,3,1)); + t.is(0, date.getUTCHours()); + t.is(2010, date.getFullYear()); + + //+hh:mm, +hhmm, or +hh + + //-hh:mm, -hhmm, or -hh + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/dndDefault.css b/js/dojo-release-1.7.2-src/dojo/tests/dnd/dndDefault.css new file mode 100644 index 0000000..d033239 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/dndDefault.css @@ -0,0 +1,77 @@ +/* + + there are basically all the classes you can set + for the various dojo.dnd states and elements in + their simplest form. hacking welcome. + +*/ +.container { + border: 3px solid #ccc; + padding: 1em 3em; + cursor: default; + radius: 8pt; + background: #fff; + -moz-border-radius: 8pt 8pt; +} + +.dojoDndContainerOver { + /* cursor:pointer; */ + border: 3px solid #aaa; +} + +.dojoDndTargetDisabled { + background: #eee; +} + +.dojoDndItem { + padding: 3px; +} + +.dj_ff2 .dojoDndItem { + -moz-user-select: none; /* workaround FF2 dragging bug, see #6345, #4854, #6350 */ +} + +.dojoDndItemOver { + background: #ededed; + cursor: pointer; +} + +.dojoDndItemSelected { + background: #ccf; color: #444; +} + +.dojoDndItemAnchor { + background: #ccf; color: black; +} + +.dojoDndItemOver .dojoDndItemSelected { + background: #ededed; +} + +.dojoDndItemOver .dojoDndItemAnchor { + background: #ededed; +} + +.dojoDndItemBefore { + border-top: 2px solid #369; +} + +.dojoDndItemAfter { + border-bottom: 2px solid #369; +} + +.dojoDndAvatar { + border: 2px solid #ccc; + font-size: 75%; + -moz-border-radius: 8pt 8pt; + radius: 8pt; +} + +.dojoDndAvatarHeader { + background: #aaa; +} + +.dojoDndAvatarItem { + background: #fff; + border-bottom: 1px solid #666; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/flickr_viewer.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/flickr_viewer.html new file mode 100644 index 0000000..4520f35 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/flickr_viewer.html @@ -0,0 +1,170 @@ + + + + Sort Flickr images by tags + + + + + + +

                            Sort Flickr images by tags

                            +

                            This simple web application retrieves public images from Flickr that were tagged either as "cat", "dog", or "cow". + You can copy/move images in different containers according to their tags.

                            +

                            Following selection modes are supported by default:

                            +
                              +
                            • Simple click — selects a single element, all other elements will be unselected.
                            • +
                            • Ctrl+click — toggles a selection state of an element (use Meta key on Mac).
                            • +
                            • Shift+click — selects a range of element from the previous anchor to the current element.
                            • +
                            • Ctrl+Shift+click — adds a range of element from the previous anchor to the current element (use Meta key on Mac).
                            • +
                            +

                            Following drop modes are supported by default:

                            +
                              +
                            • Simple drop — moves elements to the valid target removing them from the source. It can be used to reorganize elements within a single source/target.
                            • +
                            • Ctrl+drop — copies elements to the valid target (use Meta key on Mac).
                            • +
                            +

                            Now scroll down and start dragging and dropping, rearrange images using DnD, copy and move them back!

                            +

                            Status: retrieving a list of Flickr images...

                            +
                            +
                            + +
                            +
                            +

                            Tag: cat

                            +
                            +
                            + +
                            +
                            +

                            Tag: dog

                            +
                            +
                            + +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/robot/test_dnd.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/robot/test_dnd.html new file mode 100644 index 0000000..761e91f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/robot/test_dnd.html @@ -0,0 +1,100 @@ + + + + doh.robot DnD Test + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_box_constraints.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_box_constraints.html new file mode 100644 index 0000000..5217562 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_box_constraints.html @@ -0,0 +1,59 @@ + + + + Dojo box constraint test + + + + + + +

                            Dojo box constraint test

                            +
                            Paragraph restricted to (100,100:500,500) box: Donec ac odio sed pede aliquet auctor. Donec et lectus. Praesent feugiat ultrices enim. Morbi lectus. Donec vestibulum posuere libero. Donec quam enim, nonummy a, auctor vitae, placerat id, massa. Vivamus vulputate luctus nibh. Donec dolor orci, sagittis ac, pretium sed, ornare sit amet, pede. Vestibulum leo justo, pellentesque sit amet, tristique sed, tempor eu, felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam scelerisque velit vel sem. Curabitur vulputate. Morbi pretium porta dui.
                            +
                            Paragraph restricted to (100,100:500,500) box, it cannot go outside of this box: In hac habitasse platea dictumst. Etiam rhoncus, leo quis hendrerit vestibulum, ipsum felis porta massa, vitae posuere nunc lorem ac enim. Nam neque turpis, aliquet quis, sollicitudin sit amet, dapibus sed, eros. Duis volutpat porttitor velit. Vivamus nibh metus, iaculis eget, malesuada eget, facilisis id, lorem. Sed turpis. Vestibulum aliquam mauris. Integer malesuada tellus vel neque. In hac habitasse platea dictumst. Aliquam at lectus. Maecenas nonummy cursus nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi imperdiet purus eu ipsum. Curabitur sapien felis, euismod eu, dapibus vel, tempor vitae, pede. Suspendisse blandit. Nulla imperdiet. Duis placerat nulla ultricies sem. In in mi nec ipsum molestie tempor. Sed scelerisque.
                            +
                            Marked up paragraph restricted to (100,100:500,500) box: Donec ac odio sed pede aliquet auctor. Donec et lectus. Praesent feugiat ultrices enim. Morbi lectus. Donec vestibulum posuere libero. Donec quam enim, nonummy a, auctor vitae, placerat id, massa. Vivamus vulputate luctus nibh. Donec dolor orci, sagittis ac, pretium sed, ornare sit amet, pede. Vestibulum leo justo, pellentesque sit amet, tristique sed, tempor eu, felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam scelerisque velit vel sem. Curabitur vulputate. Morbi pretium porta dui.
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_container.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_container.html new file mode 100644 index 0000000..a8b2cc4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_container.html @@ -0,0 +1,76 @@ + + + + Dojo DnD container test + + + + + + +

                            Dojo DnD container test

                            +

                            Containers have a notion of a "current container", and one element can be "current".

                            +

                            see dndDefault.css for example styling

                            +

                            DIV container

                            +
                            +
                            Item 1
                            +
                            Item 2
                            +
                            Item 3
                            +
                            +

                            UL container

                            +
                              +
                            • Item 1
                            • +
                            • Item 2
                            • +
                            • Item 3
                            • +
                            +

                            OL container

                            +
                              +
                            1. Item 1
                            2. +
                            3. Item 2
                            4. +
                            5. Item 3
                            6. +
                            +

                            TABLE container

                            + + + + + + + + + + + + + +
                            Arow 1
                            Brow 2
                            Crow 3
                            +

                            P container with SPAN elements

                            +

                            Elements of this container are layed out horizontally.

                            +

                            +  Item 1  +  Item 2  +  Item 3  +

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_container_markup.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_container_markup.html new file mode 100644 index 0000000..415ad28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_container_markup.html @@ -0,0 +1,69 @@ + + + + Dojo DnD markup container test + + + + + + +

                            Dojo DnD markup container test

                            +

                            This example is functionally equivalent to test_container.html example but is done using the Dojo markup.

                            +

                            Containers have a notion of a "current container", and one element can be "current".

                            +

                            See dndDefault.css for example styling

                            +

                            DIV container

                            +
                            +
                            Item 1
                            +
                            Item 2
                            +
                            Item 3
                            +
                            +

                            UL container

                            +
                              +
                            • Item 1
                            • +
                            • Item 2
                            • +
                            • Item 3
                            • +
                            +

                            OL container

                            +
                              +
                            1. Item 1
                            2. +
                            3. Item 2
                            4. +
                            5. Item 3
                            6. +
                            +

                            TABLE container

                            + + + + + + + + + + + + + +
                            Arow 1
                            Brow 2
                            Crow 3
                            +

                            P container with SPAN elements

                            +

                            Elements of this container are layed out horizontally.

                            +

                            +  Item 1  +  Item 2  +  Item 3  +

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_custom_constraints.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_custom_constraints.html new file mode 100644 index 0000000..efece52 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_custom_constraints.html @@ -0,0 +1,53 @@ + + + + Dojo custom constraint test + + + + + + +

                            Dojo custom constraint test

                            +
                            This paragraph stops at 50x50 grid knots: Donec ac odio sed pede aliquet auctor. Donec et lectus. Praesent feugiat ultrices enim. Morbi lectus. Donec vestibulum posuere libero. Donec quam enim, nonummy a, auctor vitae, placerat id, massa. Vivamus vulputate luctus nibh. Donec dolor orci, sagittis ac, pretium sed, ornare sit amet, pede. Vestibulum leo justo, pellentesque sit amet, tristique sed, tempor eu, felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam scelerisque velit vel sem. Curabitur vulputate. Morbi pretium porta dui.
                            +
                            This paragraph stops at 50x50 grid knots: Donec ac odio sed pede aliquet auctor. Donec et lectus. Praesent feugiat ultrices enim. Morbi lectus. Donec vestibulum posuere libero. Donec quam enim, nonummy a, auctor vitae, placerat id, massa. Vivamus vulputate luctus nibh. Donec dolor orci, sagittis ac, pretium sed, ornare sit amet, pede. Vestibulum leo justo, pellentesque sit amet, tristique sed, tempor eu, felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam scelerisque velit vel sem. Curabitur vulputate. Morbi pretium porta dui.
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_dnd.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_dnd.html new file mode 100644 index 0000000..7865233 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_dnd.html @@ -0,0 +1,141 @@ + + + + Dojo DnD test + + + + + + + +

                            Dojo DnD test

                            + +

                            Elements of both sources/targets were created dynamically.

                            +

                            Following selection modes are supported by default:

                            +
                              +
                            • Simple click — selects a single element, all other elements will be unselected.
                            • +
                            • Ctrl+click — toggles a selection state of an element (use Meta key on Mac).
                            • +
                            • Shift+click — selects a range of element from the previous anchor to the current element.
                            • +
                            • Ctrl+Shift+click — adds a range of element from the previous anchor to the current element (use Meta key on Mac).
                            • +
                            +

                            Following drop modes are supported by default:

                            +
                              +
                            • Simple drop — moves elements to the valid target removing them from the source. It can be used to reorganize elements within a single source/target.
                            • +
                            • Ctrl+drop — copies elements to the valid target (use Meta key on Mac).
                            • +
                            + +
                            +
                            +

                            Source 1

                            +
                            +
                            +
                            +

                            Source 2 (copyOnly)

                            +
                            +
                            Item X
                            +
                            Item Y
                            +
                            Item Z
                            +
                            +
                            +
                            +

                            Source 3

                            +
                            + +
                            Item Alpha
                            +
                            Item Beta
                            +
                            Item Gamma
                            +
                            Item Delta
                            +
                            +
                            +
                            +

                            Source 4 (copyOnly, selfAccept, delay=8)

                            +
                            +
                            Item 1
                            +
                            Item 2
                            +
                            Item 3
                            +
                            +
                            +
                            +

                            Pure Target 5

                            +
                            +
                            One item
                            +
                            +
                            +
                            +
                            + +

                            HTML after

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_dnd_handles.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_dnd_handles.html new file mode 100644 index 0000000..44b1d96 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_dnd_handles.html @@ -0,0 +1,65 @@ + + + + Dojo DnD with handles test + + + + + + + +

                            Dojo DnD with handles test

                            + +

                            Following selection modes are supported by default:

                            +
                              +
                            • Simple click — selects a single element, all other elements will be unselected.
                            • +
                            • Ctrl+click — toggles a selection state of an element (use Meta key on Mac).
                            • +
                            • Shift+click — selects a range of element from the previous anchor to the current element.
                            • +
                            • Ctrl+Shift+click — adds a range of element from the previous anchor to the current element (use Meta key on Mac).
                            • +
                            +

                            Following drop modes are supported by default:

                            +
                              +
                            • Simple drop — moves elements to the valid target removing them from the source. It can be used to reorganize elements within a single source/target.
                            • +
                            • Ctrl+drop — copies elements to the valid target (use Meta key on Mac).
                            • +
                            + +

                            Source with handles. Items should be draggable by the "em" of the word "Item" (and also see a 'move' cursor on it).

                            +
                            +
                            Item Alpha
                            +
                            Item Beta
                            +
                            Item Gamma
                            +
                            Item Delta
                            +
                            + +

                            Source without handles.

                            +
                            +
                            Item Epsilon
                            +
                            Item Zeta
                            +
                            Item Eta
                            +
                            Item Theta
                            +
                            + +

                            HTML after

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_form.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_form.html new file mode 100644 index 0000000..0b0ad70 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_form.html @@ -0,0 +1,92 @@ + + + + Dojo DnD form test + + + + + + +

                            Dojo DnD form test

                            + +

                            This is a test to confirm that the DnD container does not interfere with form elements.

                            + +
                            + +
                            +

                            Target 1

                            +

                            +
                            + +
                            +

                            Target 2: form controls galore

                            +
                            + Input text:
                            + Input checkbox:
                            + Input radio:
                            + Input password:
                            + Input file:
                            + Input button:
                            + Input reset:
                            + Input submit:
                            + Input image:
                            + Button:
                            + Select:
                            + Textarea: +
                            +
                            +
                            +
                            + +

                             

                            + +
                            +
                            Source with skipForm = false (by default)
                            +
                            Item X:
                            +
                            Item Y:
                            +
                            Item Z:
                            +
                            + +

                             

                            + +
                            +
                            Source with skipForm = true
                            +
                            Item A:
                            +
                            Item B:
                            +
                            Item C:
                            +
                            + +

                            HTML after

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_moveable.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_moveable.html new file mode 100644 index 0000000..336a95b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_moveable.html @@ -0,0 +1,108 @@ + + + + Dojo Moveable test + + + + + + +

                            Dojo Moveable test

                            +

                            1st run

                            +

                            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent erat. In malesuada ultricies velit. Vestibulum tempor odio vitae diam. Morbi arcu lectus, laoreet eget, nonummy at, elementum a, quam. Pellentesque ac lacus. Cras quis est. Etiam suscipit, quam at eleifend nonummy, elit nunc sollicitudin tellus, at mattis est ligula interdum urna. Vivamus id augue sed mi consectetuer dictum. Suspendisse dapibus elit non urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam gravida dapibus ante. Nam viverra ligula in neque. Nullam at metus. Aenean ipsum.

                            +

                            Mauris vulputate elit a risus. Praesent pellentesque velit ac neque. Fusce ultrices augue vitae orci. Proin a ante. Nulla consectetuer arcu quis est. Suspendisse potenti. Aliquam erat volutpat. Morbi purus augue, eleifend eu, consectetuer sed, tristique ut, wisi. Cras ac tellus. Phasellus adipiscing, libero ac consequat volutpat, ligula purus mollis lectus, ac porttitor ipsum diam non urna. Donec lorem. Pellentesque diam tortor, posuere et, placerat vitae, iaculis et, sapien. Proin sodales vehicula purus. Quisque bibendum mi ac mauris. Quisque tellus. Morbi sagittis. Integer euismod rhoncus augue. Ut accumsan. Curabitur quis tellus sit amet odio ultricies tristique. Etiam malesuada.

                            +

                            Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec est. Cras semper nunc ut metus. Pellentesque blandit pede at erat. Quisque nonummy leo id metus. Donec mi mi, viverra id, adipiscing vitae, consectetuer ut, elit. In lectus augue, porttitor quis, viverra id, dignissim id, leo. Maecenas sapien. Nam adipiscing sem. Aenean ligula. Etiam vel velit. In mollis cursus dolor. Suspendisse ac nibh id leo tempor posuere. Aliquam sapien tellus, elementum non, aliquam sed, luctus eu, augue. Aliquam elementum leo nec enim. Donec ornare sagittis magna. Mauris ac tellus.

                            +

                            Duis ac augue rhoncus neque adipiscing feugiat. Donec pulvinar sem vitae neque. Donec commodo metus at ipsum. Cras vel magna vehicula lorem varius consequat. Morbi at enim vitae lectus mollis sodales. Sed tincidunt quam ut mi varius hendrerit. Sed porta arcu non libero. Quisque et wisi. Pellentesque lobortis. Ut enim felis, varius vitae, ornare quis, auctor ut, risus. Ut porta lorem vel quam. Etiam nunc purus, consectetuer non, lobortis eu, fermentum eu, magna. Aenean ultrices ante. Aliquam erat volutpat. Morbi quis velit eu mi sollicitudin lacinia. Suspendisse potenti. Donec lectus.

                            +

                            Quisque egestas turpis. Sed id ipsum id libero euismod nonummy. Nam sed dolor. Mauris in turpis. Duis nec wisi eget ante ultrices varius. Ut eget neque. Suspendisse sagittis iaculis tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus at justo. Donec imperdiet, elit et commodo bibendum, leo augue pellentesque arcu, ac dapibus lorem nulla eget erat. In viverra, tellus eu luctus eleifend, urna nibh lobortis sapien, ac pulvinar massa enim vel turpis. Sed orci neque, sagittis eu, mattis vitae, rutrum condimentum, leo. Fusce wisi odio, convallis at, condimentum vel, imperdiet id, mi. Mauris semper, magna pretium consectetuer sollicitudin, eros enim vehicula risus, eu ultrices turpis quam at wisi. Nam mollis.

                            + + + + + + + +
                            You can drag the table using this handle.
                            1Lorem ipsum dolor sit amet...
                            2Mauris vulputate elit a risus...
                            3Pellentesque habitant morbi tristique senectus...
                            4Duis ac augue rhoncus neque...
                            5Quisque egestas turpis. Sed id...
                            +

                            2nd run

                            +

                            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent erat. In malesuada ultricies velit. Vestibulum tempor odio vitae diam. Morbi arcu lectus, laoreet eget, nonummy at, elementum a, quam. Pellentesque ac lacus. Cras quis est. Etiam suscipit, quam at eleifend nonummy, elit nunc sollicitudin tellus, at mattis est ligula interdum urna. Vivamus id augue sed mi consectetuer dictum. Suspendisse dapibus elit non urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam gravida dapibus ante. Nam viverra ligula in neque. Nullam at metus. Aenean ipsum.

                            +

                            Mauris vulputate elit a risus. Praesent pellentesque velit ac neque. Fusce ultrices augue vitae orci. Proin a ante. Nulla consectetuer arcu quis est. Suspendisse potenti. Aliquam erat volutpat. Morbi purus augue, eleifend eu, consectetuer sed, tristique ut, wisi. Cras ac tellus. Phasellus adipiscing, libero ac consequat volutpat, ligula purus mollis lectus, ac porttitor ipsum diam non urna. Donec lorem. Pellentesque diam tortor, posuere et, placerat vitae, iaculis et, sapien. Proin sodales vehicula purus. Quisque bibendum mi ac mauris. Quisque tellus. Morbi sagittis. Integer euismod rhoncus augue. Ut accumsan. Curabitur quis tellus sit amet odio ultricies tristique. Etiam malesuada.

                            +

                            Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec est. Cras semper nunc ut metus. Pellentesque blandit pede at erat. Quisque nonummy leo id metus. Donec mi mi, viverra id, adipiscing vitae, consectetuer ut, elit. In lectus augue, porttitor quis, viverra id, dignissim id, leo. Maecenas sapien. Nam adipiscing sem. Aenean ligula. Etiam vel velit. In mollis cursus dolor. Suspendisse ac nibh id leo tempor posuere. Aliquam sapien tellus, elementum non, aliquam sed, luctus eu, augue. Aliquam elementum leo nec enim. Donec ornare sagittis magna. Mauris ac tellus.

                            +

                            Duis ac augue rhoncus neque adipiscing feugiat. Donec pulvinar sem vitae neque. Donec commodo metus at ipsum. Cras vel magna vehicula lorem varius consequat. Morbi at enim vitae lectus mollis sodales. Sed tincidunt quam ut mi varius hendrerit. Sed porta arcu non libero. Quisque et wisi. Pellentesque lobortis. Ut enim felis, varius vitae, ornare quis, auctor ut, risus. Ut porta lorem vel quam. Etiam nunc purus, consectetuer non, lobortis eu, fermentum eu, magna. Aenean ultrices ante. Aliquam erat volutpat. Morbi quis velit eu mi sollicitudin lacinia. Suspendisse potenti. Donec lectus.

                            +

                            Quisque egestas turpis. Sed id ipsum id libero euismod nonummy. Nam sed dolor. Mauris in turpis. Duis nec wisi eget ante ultrices varius. Ut eget neque. Suspendisse sagittis iaculis tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus at justo. Donec imperdiet, elit et commodo bibendum, leo augue pellentesque arcu, ac dapibus lorem nulla eget erat. In viverra, tellus eu luctus eleifend, urna nibh lobortis sapien, ac pulvinar massa enim vel turpis. Sed orci neque, sagittis eu, mattis vitae, rutrum condimentum, leo. Fusce wisi odio, convallis at, condimentum vel, imperdiet id, mi. Mauris semper, magna pretium consectetuer sollicitudin, eros enim vehicula risus, eu ultrices turpis quam at wisi. Nam mollis.

                            +
                            +
                            You can drag this whole object around.
                            +
                            You can move this paragraph. It is relatively positioned.
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_moveable_markup.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_moveable_markup.html new file mode 100644 index 0000000..96be17f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_moveable_markup.html @@ -0,0 +1,85 @@ + + + + Dojo Moveable markup test + + + + + + +

                            Dojo Moveable markup test

                            +

                            1st run

                            +

                            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent erat. In malesuada ultricies velit. Vestibulum tempor odio vitae diam. Morbi arcu lectus, laoreet eget, nonummy at, elementum a, quam. Pellentesque ac lacus. Cras quis est. Etiam suscipit, quam at eleifend nonummy, elit nunc sollicitudin tellus, at mattis est ligula interdum urna. Vivamus id augue sed mi consectetuer dictum. Suspendisse dapibus elit non urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam gravida dapibus ante. Nam viverra ligula in neque. Nullam at metus. Aenean ipsum.

                            +

                            Mauris vulputate elit a risus. Praesent pellentesque velit ac neque. Fusce ultrices augue vitae orci. Proin a ante. Nulla consectetuer arcu quis est. Suspendisse potenti. Aliquam erat volutpat. Morbi purus augue, eleifend eu, consectetuer sed, tristique ut, wisi. Cras ac tellus. Phasellus adipiscing, libero ac consequat volutpat, ligula purus mollis lectus, ac porttitor ipsum diam non urna. Donec lorem. Pellentesque diam tortor, posuere et, placerat vitae, iaculis et, sapien. Proin sodales vehicula purus. Quisque bibendum mi ac mauris. Quisque tellus. Morbi sagittis. Integer euismod rhoncus augue. Ut accumsan. Curabitur quis tellus sit amet odio ultricies tristique. Etiam malesuada.

                            +

                            Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec est. Cras semper nunc ut metus. Pellentesque blandit pede at erat. Quisque nonummy leo id metus. Donec mi mi, viverra id, adipiscing vitae, consectetuer ut, elit. In lectus augue, porttitor quis, viverra id, dignissim id, leo. Maecenas sapien. Nam adipiscing sem. Aenean ligula. Etiam vel velit. In mollis cursus dolor. Suspendisse ac nibh id leo tempor posuere. Aliquam sapien tellus, elementum non, aliquam sed, luctus eu, augue. Aliquam elementum leo nec enim. Donec ornare sagittis magna. Mauris ac tellus.

                            +

                            Duis ac augue rhoncus neque adipiscing feugiat. Donec pulvinar sem vitae neque. Donec commodo metus at ipsum. Cras vel magna vehicula lorem varius consequat. Morbi at enim vitae lectus mollis sodales. Sed tincidunt quam ut mi varius hendrerit. Sed porta arcu non libero. Quisque et wisi. Pellentesque lobortis. Ut enim felis, varius vitae, ornare quis, auctor ut, risus. Ut porta lorem vel quam. Etiam nunc purus, consectetuer non, lobortis eu, fermentum eu, magna. Aenean ultrices ante. Aliquam erat volutpat. Morbi quis velit eu mi sollicitudin lacinia. Suspendisse potenti. Donec lectus.

                            +

                            Quisque egestas turpis. Sed id ipsum id libero euismod nonummy. Nam sed dolor. Mauris in turpis. Duis nec wisi eget ante ultrices varius. Ut eget neque. Suspendisse sagittis iaculis tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus at justo. Donec imperdiet, elit et commodo bibendum, leo augue pellentesque arcu, ac dapibus lorem nulla eget erat. In viverra, tellus eu luctus eleifend, urna nibh lobortis sapien, ac pulvinar massa enim vel turpis. Sed orci neque, sagittis eu, mattis vitae, rutrum condimentum, leo. Fusce wisi odio, convallis at, condimentum vel, imperdiet id, mi. Mauris semper, magna pretium consectetuer sollicitudin, eros enim vehicula risus, eu ultrices turpis quam at wisi. Nam mollis.

                            + + + + + + + +
                            You can drag the table using this handle.
                            1Lorem ipsum dolor sit amet...
                            2Mauris vulputate elit a risus...
                            3Pellentesque habitant morbi tristique senectus...
                            4Duis ac augue rhoncus neque...
                            5Quisque egestas turpis. Sed id...
                            +

                            2nd run

                            +

                            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent erat. In malesuada ultricies velit. Vestibulum tempor odio vitae diam. Morbi arcu lectus, laoreet eget, nonummy at, elementum a, quam. Pellentesque ac lacus. Cras quis est. Etiam suscipit, quam at eleifend nonummy, elit nunc sollicitudin tellus, at mattis est ligula interdum urna. Vivamus id augue sed mi consectetuer dictum. Suspendisse dapibus elit non urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam gravida dapibus ante. Nam viverra ligula in neque. Nullam at metus. Aenean ipsum.

                            +

                            Mauris vulputate elit a risus. Praesent pellentesque velit ac neque. Fusce ultrices augue vitae orci. Proin a ante. Nulla consectetuer arcu quis est. Suspendisse potenti. Aliquam erat volutpat. Morbi purus augue, eleifend eu, consectetuer sed, tristique ut, wisi. Cras ac tellus. Phasellus adipiscing, libero ac consequat volutpat, ligula purus mollis lectus, ac porttitor ipsum diam non urna. Donec lorem. Pellentesque diam tortor, posuere et, placerat vitae, iaculis et, sapien. Proin sodales vehicula purus. Quisque bibendum mi ac mauris. Quisque tellus. Morbi sagittis. Integer euismod rhoncus augue. Ut accumsan. Curabitur quis tellus sit amet odio ultricies tristique. Etiam malesuada.

                            +

                            Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec est. Cras semper nunc ut metus. Pellentesque blandit pede at erat. Quisque nonummy leo id metus. Donec mi mi, viverra id, adipiscing vitae, consectetuer ut, elit. In lectus augue, porttitor quis, viverra id, dignissim id, leo. Maecenas sapien. Nam adipiscing sem. Aenean ligula. Etiam vel velit. In mollis cursus dolor. Suspendisse ac nibh id leo tempor posuere. Aliquam sapien tellus, elementum non, aliquam sed, luctus eu, augue. Aliquam elementum leo nec enim. Donec ornare sagittis magna. Mauris ac tellus.

                            +

                            Duis ac augue rhoncus neque adipiscing feugiat. Donec pulvinar sem vitae neque. Donec commodo metus at ipsum. Cras vel magna vehicula lorem varius consequat. Morbi at enim vitae lectus mollis sodales. Sed tincidunt quam ut mi varius hendrerit. Sed porta arcu non libero. Quisque et wisi. Pellentesque lobortis. Ut enim felis, varius vitae, ornare quis, auctor ut, risus. Ut porta lorem vel quam. Etiam nunc purus, consectetuer non, lobortis eu, fermentum eu, magna. Aenean ultrices ante. Aliquam erat volutpat. Morbi quis velit eu mi sollicitudin lacinia. Suspendisse potenti. Donec lectus.

                            +

                            Quisque egestas turpis. Sed id ipsum id libero euismod nonummy. Nam sed dolor. Mauris in turpis. Duis nec wisi eget ante ultrices varius. Ut eget neque. Suspendisse sagittis iaculis tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus at justo. Donec imperdiet, elit et commodo bibendum, leo augue pellentesque arcu, ac dapibus lorem nulla eget erat. In viverra, tellus eu luctus eleifend, urna nibh lobortis sapien, ac pulvinar massa enim vel turpis. Sed orci neque, sagittis eu, mattis vitae, rutrum condimentum, leo. Fusce wisi odio, convallis at, condimentum vel, imperdiet id, mi. Mauris semper, magna pretium consectetuer sollicitudin, eros enim vehicula risus, eu ultrices turpis quam at wisi. Nam mollis.

                            +
                            You can drag this whole paragraph around.
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_params.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_params.html new file mode 100644 index 0000000..a4049df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_params.html @@ -0,0 +1,63 @@ + + + + Dojo DnD optional parameters test + + + + + + +

                            Dojo DnD optional parameters test

                            +

                            Normal paragraph: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris augue augue, condimentum nec, viverra et, porttitor sit amet, ligula. Cras malesuada sollicitudin risus. Praesent tincidunt nunc ut enim. Aliquam sit amet libero ac lorem ornare vulputate. Nulla a mauris cursus erat rutrum condimentum. Vivamus sit amet pede in felis sodales adipiscing. Curabitur arcu turpis, pharetra ac, porttitor ac, ultrices nec, quam. Donec feugiat purus eu nulla. Aenean mattis tellus vel nulla. Pellentesque vitae quam. Vestibulum scelerisque, eros nec imperdiet interdum, sapien quam accumsan libero, at vestibulum risus purus ut quam. Nam mattis, lorem vel rhoncus pulvinar, augue nibh rhoncus felis, et elementum felis dolor vitae justo. Nullam felis augue, ultricies ac, laoreet sed, lobortis in, neque. Vivamus nunc quam, dictum at, egestas et, fringilla non, magna.

                            +

                            Delayed move by 10px: Quisque at urna. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque ante sem, ullamcorper in, ornare vitae, placerat id, velit. Ut ut tortor vitae lectus dignissim fringilla. Praesent urna enim, laoreet in, lobortis eget, porttitor eget, lacus. Suspendisse et enim. Duis semper nulla a felis. Duis dolor odio, ultrices et, lobortis sed, posuere eu, dolor. Duis est. Nam laoreet. Sed vehicula augue aliquam tortor.

                            +

                            With form elements: + dojotoolkit
                            + + + + + +

                            +

                            With form elements and skip setting: + dojotoolkit + + + + + +

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_parent_constraints.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_parent_constraints.html new file mode 100644 index 0000000..03abd75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_parent_constraints.html @@ -0,0 +1,55 @@ + + + + Dojo parent constraint test + + + + + + +

                            Dojo parent constraint test

                            +
                            +
                            This is the parent element. All children will be restricted with within = true.
                            +
                            I am restricted within my parent's margins.
                            +
                            I am restricted within my parent's border.
                            +
                            I am restricted within my parent's paddings.
                            +
                            I am restricted within my parent's content.
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_parent_constraints_margins.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_parent_constraints_margins.html new file mode 100644 index 0000000..fa5ec05 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_parent_constraints_margins.html @@ -0,0 +1,52 @@ + + + + Dojo parent constraint test + + + + + + +

                            Dojo parent constraint test

                            +
                            +
                            This is the parent element.
                            +
                            Paragraph restricted to its parent element: Sed hendrerit ornare justo. Maecenas ac urna. Maecenas in leo in tortor tincidunt pellentesque. Vivamus augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer eget ipsum vitae quam condimentum tempus. Phasellus augue tortor, pretium nec, bibendum eget, eleifend eget, quam. Nam sem mauris, volutpat eget, ultricies in, consequat nec, tortor. Nulla eleifend. Vivamus et purus ultricies turpis vehicula auctor.
                            +
                            Paragraph restricted to its parent element (cannot go outside): Nam nibh. Mauris neque sem, pharetra ac, gravida ac, ultricies eget, quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus scelerisque molestie mi. Duis eget ligula nec justo interdum hendrerit. Curabitur tempor convallis enim. In quis lorem. Proin nonummy consectetuer ligula. Curabitur tempor adipiscing lorem. Maecenas vitae nunc. Aliquam et magna. In vestibulum justo eleifend ante. Nulla pede sem, tempus tincidunt, vehicula ut, tempor et, nisi. Nulla ut lorem. Aliquam erat volutpat. Proin sodales, elit ut molestie dignissim, quam neque vulputate felis, quis scelerisque magna arcu aliquet lacus. Vivamus blandit. Nam eu mi vel augue pharetra semper.
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_selector.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_selector.html new file mode 100644 index 0000000..90be71e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_selector.html @@ -0,0 +1,82 @@ + + + + Dojo DnD selector test + + + + + + +

                            Dojo DnD selector test

                            +

                            Containers have a notion of a "current container", and one element can be "current". All containers on this page are selectors that allow to select elements.

                            +

                            Following selection modes are supported by default:

                            +
                              +
                            • Simple click — selects a single element, all other elements will be unselected.
                            • +
                            • Ctrl+click — toggles a selection state of an element (use Meta key on Mac).
                            • +
                            • Shift+click — selects a range of elements from the previous anchor to the current element.
                            • +
                            • Ctrl+Shift+click — adds a range of elements from the previous anchor to the current element (use Meta key on Mac).
                            • +
                            +

                            DIV selector

                            +

                            This selector can select just one element a time. It was specified during the creation time.

                            +
                            +
                            Item 1
                            +
                            Item 2
                            +
                            Item 3
                            +
                            +

                            UL selector

                            +
                              +
                            • Item 1
                            • +
                            • Item 2
                            • +
                            • Item 3
                            • +
                            +

                            OL selector

                            +
                              +
                            1. Item 1
                            2. +
                            3. Item 2
                            4. +
                            5. Item 3
                            6. +
                            +

                            TABLE selector

                            + + + + + + + + + + + + + +
                            Arow 1
                            Brow 2
                            Crow 3
                            +

                            P selector with SPAN elements

                            +

                            Elements of this container are layed out horizontally.

                            +

                            +  Item 1  +  Item 2  +  Item 3  +

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_selector_markup.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_selector_markup.html new file mode 100644 index 0000000..9c42159 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_selector_markup.html @@ -0,0 +1,73 @@ + + + + Dojo DnD markup selector test + + + + + + +

                            Dojo DnD markup selector test

                            +

                            This example is functionally equivalent to test_selector.html example but is done using the Dojo markup.

                            +

                            Containers have a notion of a "current container", and one element can be "current". All containers on this page are selectors that allow to select elements.

                            +

                            Following selection modes are supported by default:

                            +
                              +
                            • Simple click — selects a single element, all other elements will be unselected.
                            • +
                            • Ctrl+click — toggles a selection state of an element (use Meta key on Mac).
                            • +
                            • Shift+click — selects a range of elements from the previous anchor to the current element.
                            • +
                            • Ctrl+Shift+click — adds a range of elements from the previous anchor to the current element (use Meta key on Mac).
                            • +
                            +

                            DIV selector

                            +

                            This selector can select just one element a time. It was specified during the creation time.

                            +
                            +
                            Item 1
                            +
                            Item 2
                            +
                            Item 3
                            +
                            +

                            UL selector

                            +
                              +
                            • Item 1
                            • +
                            • Item 2
                            • +
                            • Item 3
                            • +
                            +

                            OL selector

                            +
                              +
                            1. Item 1
                            2. +
                            3. Item 2
                            4. +
                            5. Item 3
                            6. +
                            +

                            TABLE selector

                            + + + + + + + + + + + + + +
                            Arow 1
                            Brow 2
                            Crow 3
                            +

                            P selector with SPAN elements

                            +

                            Elements of this container are layed out horizontally.

                            +

                            +  Item 1  +  Item 2  +  Item 3  +

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_timed_moveable.html b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_timed_moveable.html new file mode 100644 index 0000000..f6c921f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/dnd/test_timed_moveable.html @@ -0,0 +1,114 @@ + + + + Dojo TimedMoveable test + + + + + + +

                            Dojo TimedMoveable test

                            +

                            One moveable (specially marked) is delayed by 500ms (2 fps). Other two are delayed by 40ms (25 fps) — this is the default value.

                            +

                            1st run

                            +

                            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent erat. In malesuada ultricies velit. Vestibulum tempor odio vitae diam. Morbi arcu lectus, laoreet eget, nonummy at, elementum a, quam. Pellentesque ac lacus. Cras quis est. Etiam suscipit, quam at eleifend nonummy, elit nunc sollicitudin tellus, at mattis est ligula interdum urna. Vivamus id augue sed mi consectetuer dictum. Suspendisse dapibus elit non urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam gravida dapibus ante. Nam viverra ligula in neque. Nullam at metus. Aenean ipsum.

                            +

                            Mauris vulputate elit a risus. Praesent pellentesque velit ac neque. Fusce ultrices augue vitae orci. Proin a ante. Nulla consectetuer arcu quis est. Suspendisse potenti. Aliquam erat volutpat. Morbi purus augue, eleifend eu, consectetuer sed, tristique ut, wisi. Cras ac tellus. Phasellus adipiscing, libero ac consequat volutpat, ligula purus mollis lectus, ac porttitor ipsum diam non urna. Donec lorem. Pellentesque diam tortor, posuere et, placerat vitae, iaculis et, sapien. Proin sodales vehicula purus. Quisque bibendum mi ac mauris. Quisque tellus. Morbi sagittis. Integer euismod rhoncus augue. Ut accumsan. Curabitur quis tellus sit amet odio ultricies tristique. Etiam malesuada.

                            +

                            Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec est. Cras semper nunc ut metus. Pellentesque blandit pede at erat. Quisque nonummy leo id metus. Donec mi mi, viverra id, adipiscing vitae, consectetuer ut, elit. In lectus augue, porttitor quis, viverra id, dignissim id, leo. Maecenas sapien. Nam adipiscing sem. Aenean ligula. Etiam vel velit. In mollis cursus dolor. Suspendisse ac nibh id leo tempor posuere. Aliquam sapien tellus, elementum non, aliquam sed, luctus eu, augue. Aliquam elementum leo nec enim. Donec ornare sagittis magna. Mauris ac tellus.

                            +

                            Duis ac augue rhoncus neque adipiscing feugiat. Donec pulvinar sem vitae neque. Donec commodo metus at ipsum. Cras vel magna vehicula lorem varius consequat. Morbi at enim vitae lectus mollis sodales. Sed tincidunt quam ut mi varius hendrerit. Sed porta arcu non libero. Quisque et wisi. Pellentesque lobortis. Ut enim felis, varius vitae, ornare quis, auctor ut, risus. Ut porta lorem vel quam. Etiam nunc purus, consectetuer non, lobortis eu, fermentum eu, magna. Aenean ultrices ante. Aliquam erat volutpat. Morbi quis velit eu mi sollicitudin lacinia. Suspendisse potenti. Donec lectus.

                            +

                            Quisque egestas turpis. Sed id ipsum id libero euismod nonummy. Nam sed dolor. Mauris in turpis. Duis nec wisi eget ante ultrices varius. Ut eget neque. Suspendisse sagittis iaculis tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus at justo. Donec imperdiet, elit et commodo bibendum, leo augue pellentesque arcu, ac dapibus lorem nulla eget erat. In viverra, tellus eu luctus eleifend, urna nibh lobortis sapien, ac pulvinar massa enim vel turpis. Sed orci neque, sagittis eu, mattis vitae, rutrum condimentum, leo. Fusce wisi odio, convallis at, condimentum vel, imperdiet id, mi. Mauris semper, magna pretium consectetuer sollicitudin, eros enim vehicula risus, eu ultrices turpis quam at wisi. Nam mollis.

                            + + + + + + + +
                            You can drag the table using this handle.
                            1Lorem ipsum dolor sit amet...
                            2Mauris vulputate elit a risus...
                            3Pellentesque habitant morbi tristique senectus...
                            4Duis ac augue rhoncus neque...
                            5Quisque egestas turpis. Sed id...
                            +

                            2nd run

                            +

                            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent erat. In malesuada ultricies velit. Vestibulum tempor odio vitae diam. Morbi arcu lectus, laoreet eget, nonummy at, elementum a, quam. Pellentesque ac lacus. Cras quis est. Etiam suscipit, quam at eleifend nonummy, elit nunc sollicitudin tellus, at mattis est ligula interdum urna. Vivamus id augue sed mi consectetuer dictum. Suspendisse dapibus elit non urna. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam gravida dapibus ante. Nam viverra ligula in neque. Nullam at metus. Aenean ipsum.

                            +

                            Mauris vulputate elit a risus. Praesent pellentesque velit ac neque. Fusce ultrices augue vitae orci. Proin a ante. Nulla consectetuer arcu quis est. Suspendisse potenti. Aliquam erat volutpat. Morbi purus augue, eleifend eu, consectetuer sed, tristique ut, wisi. Cras ac tellus. Phasellus adipiscing, libero ac consequat volutpat, ligula purus mollis lectus, ac porttitor ipsum diam non urna. Donec lorem. Pellentesque diam tortor, posuere et, placerat vitae, iaculis et, sapien. Proin sodales vehicula purus. Quisque bibendum mi ac mauris. Quisque tellus. Morbi sagittis. Integer euismod rhoncus augue. Ut accumsan. Curabitur quis tellus sit amet odio ultricies tristique. Etiam malesuada.

                            +

                            Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec est. Cras semper nunc ut metus. Pellentesque blandit pede at erat. Quisque nonummy leo id metus. Donec mi mi, viverra id, adipiscing vitae, consectetuer ut, elit. In lectus augue, porttitor quis, viverra id, dignissim id, leo. Maecenas sapien. Nam adipiscing sem. Aenean ligula. Etiam vel velit. In mollis cursus dolor. Suspendisse ac nibh id leo tempor posuere. Aliquam sapien tellus, elementum non, aliquam sed, luctus eu, augue. Aliquam elementum leo nec enim. Donec ornare sagittis magna. Mauris ac tellus.

                            +

                            Duis ac augue rhoncus neque adipiscing feugiat. Donec pulvinar sem vitae neque. Donec commodo metus at ipsum. Cras vel magna vehicula lorem varius consequat. Morbi at enim vitae lectus mollis sodales. Sed tincidunt quam ut mi varius hendrerit. Sed porta arcu non libero. Quisque et wisi. Pellentesque lobortis. Ut enim felis, varius vitae, ornare quis, auctor ut, risus. Ut porta lorem vel quam. Etiam nunc purus, consectetuer non, lobortis eu, fermentum eu, magna. Aenean ultrices ante. Aliquam erat volutpat. Morbi quis velit eu mi sollicitudin lacinia. Suspendisse potenti. Donec lectus.

                            +

                            Quisque egestas turpis. Sed id ipsum id libero euismod nonummy. Nam sed dolor. Mauris in turpis. Duis nec wisi eget ante ultrices varius. Ut eget neque. Suspendisse sagittis iaculis tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus at justo. Donec imperdiet, elit et commodo bibendum, leo augue pellentesque arcu, ac dapibus lorem nulla eget erat. In viverra, tellus eu luctus eleifend, urna nibh lobortis sapien, ac pulvinar massa enim vel turpis. Sed orci neque, sagittis eu, mattis vitae, rutrum condimentum, leo. Fusce wisi odio, convallis at, condimentum vel, imperdiet id, mi. Mauris semper, magna pretium consectetuer sollicitudin, eros enim vehicula risus, eu ultrices turpis quam at wisi. Nam mollis.

                            +
                            You can drag this whole paragraph around.
                            +
                            My move is delayed by 500ms, which corresponds to 2 fps.
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/fx.html b/js/dojo-release-1.7.2-src/dojo/tests/fx.html new file mode 100644 index 0000000..770393e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/fx.html @@ -0,0 +1,484 @@ + + + + Testing dojo.fx + + + + + +
                            a
                            b
                            +
                            c
                            d
                            + +
                            +

                            + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. + Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla + facilisi. Maecenas luctus venenatis nulla. In sit amet dui non mi + semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum + magna. Sed vitae risus. +

                            +

                            + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer + lorem nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean + id mi in massa bibendum suscipit. Integer eros. Nullam suscipit + mauris. In pellentesque. Mauris ipsum est, pharetra semper, + pharetra in, viverra quis, tellus. Etiam purus. Quisque egestas, + tortor ac cursus lacinia, felis leo adipiscing nisi, et rhoncus + elit dolor eget eros. Fusce ut quam. Suspendisse eleifend leo vitae + ligula. Nulla facilisi. Nulla rutrum, erat vitae lacinia dictum, + pede purus imperdiet lacus, ut semper velit ante id metus. Praesent + massa dolor, porttitor sed, pulvinar in, consequat ut, leo. Nullam + nec est. Aenean id risus blandit tortor pharetra congue. + Suspendisse pulvinar. +

                            +
                            +
                            foo2
                            + +
                            +

                            foo

                            bar

                            +
                            + +

                            p

                            p

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/fx.js b/js/dojo-release-1.7.2-src/dojo/tests/fx.js new file mode 100644 index 0000000..e6d942e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/fx.js @@ -0,0 +1,7 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.fx", require.toUrl("./fx.html"), 30000); + doh.register("tests.NodeList-fx", require.toUrl("./NodeList-fx.html"), 30000); + } +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/hash.js b/js/dojo-release-1.7.2-src/dojo/tests/hash.js new file mode 100644 index 0000000..fc9055b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/hash.js @@ -0,0 +1,321 @@ +define(["../main", "doh", "../hash"], function(dojo, doh){ + + // utilities for the tests: + function setHash(h){ + h = h || ""; + location.replace('#'+h); + } + + function getHash(){ + var h = location.href, i = h.indexOf("#"); + return (i >= 0) ? h.substring(i + 1) : ""; + } + + doh.register("tests.hash", [ + // hash as an empty string. + { + name: "Getting an empty hash", + setUp: function(){ + setHash(); + }, + runTest: function(t){ + t.is('', dojo.hash()); + } + }, + { + name: "Setting an empty hash", + setUp: function(){ + dojo.hash(''); + }, + runTest: function(t){ + t.is('', getHash()); + } + }, + // hash as "test" + { + name: "Getting the hash of 'test'", + setUp: function(){ + setHash('test'); + }, + runTest: function(t){ + t.is('test', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash to 'test'", + setUp: function(){ + dojo.hash('test'); + }, + runTest: function(t){ + t.is('test', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + // hash with spaces + { + name: "Getting the hash of 'test%20with%20spaces'", + setUp: function(){ + setHash('test%20with%20spaces'); + }, + runTest: function(t){ + t.is('test%20with%20spaces', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash of 'test%20with%20spaces'", + setUp: function(){ + setHash('test%20with%20spaces'); + }, + runTest: function(t){ + t.is('test%20with%20spaces', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + // hash with encoded hash + { + name: "Getting the hash of 'test%23with%23encoded%23hashes'", + setUp: function(){ + setHash('test%23with%23encoded%23hashes'); + }, + runTest: function(t){ + t.is('test%23with%23encoded%23hashes', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash of 'test%23with%23encoded%23hashes'", + setUp: function(){ + setHash('test%23with%23encoded%23hashes'); + }, + runTest: function(t){ + t.is('test%23with%23encoded%23hashes', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + // hash with plus character: test+with+pluses + { + name: "Getting the hash of 'test+with+pluses'", + setUp: function(){ + setHash('test+with+pluses'); + }, + runTest: function(t){ + t.is('test+with+pluses', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash to 'test+with+pluses'", + setUp: function(){ + dojo.hash('test+with+pluses'); + }, + runTest: function(t){ + t.is('test+with+pluses', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + // hash with leading space + { + name: "Getting the hash of '%20leadingSpace'", + setUp: function(){ + setHash('%20leadingSpace'); + }, + runTest: function(t){ + t.is('%20leadingSpace', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash to '%20leadingSpace'", + setUp: function(){ + dojo.hash('%20leadingSpace'); + }, + runTest: function(t){ + t.is('%20leadingSpace', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + + // hash with trailing space: + { + name: "Getting the hash of 'trailingSpace%20'", + setUp: function(){ + setHash('trailingSpace%20'); + }, + runTest: function(t){ + t.is('trailingSpace%20', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash to 'trailingSpace%20'", + setUp: function(){ + dojo.hash('trailingSpace%20'); + }, + runTest: function(t){ + t.is('trailingSpace%20', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + // hash with underscores. + { + name: "Getting the hash of 'under_score'", + setUp: function(){ + setHash('under_score'); + }, + runTest: function(t){ + t.is('under_score', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash to 'under_score'", + setUp: function(){ + dojo.hash('under_score'); + }, + runTest: function(t){ + t.is('under_score', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Getting the hash of 'extra&instring'", + setUp: function(){ + setHash("extra&instring"); + }, + runTest: function(t){ + t.is("extra&instring", dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash to 'extra&instring'", + setUp: function(){ + dojo.hash('extra&instring'); + }, + runTest: function(t){ + t.is('extra&instring', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Getting the hash of 'extra?instring'", + setUp: function(){ + setHash('extra?instring'); + }, + runTest: function(t){ + t.is('extra?instring', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash of 'extra?instring'", + setUp: function(){ + dojo.hash('extra?instring'); + }, + runTest: function(t){ + t.is('extra?instring', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Getting the hash resembling a query parameter ('?testa=3&testb=test')", + setUp: function(){ + setHash('?testa=3&testb=test'); + }, + runTest: function(t){ + t.is('?testa=3&testb=test', dojo.hash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash resembling a query parameter ('?testa=3&testb=test')", + setUp: function(){ + dojo.hash('?testa=3&testb=test'); + }, + runTest: function(t){ + t.is('?testa=3&testb=test', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + name: "Setting the hash to '#leadingHash' should result in the hash being 'leadingHash'", + setUp: function(){ + dojo.hash('#leadingHash'); + }, + runTest: function(t){ + t.is('leadingHash', getHash()); + }, + tearDown: function(){ + setHash(); + } + }, + { + _s: null, // used for the subscriber. + + name: "Hash change publishes to '/dojo/hashchange'", + setUp: function(t){ + setHash(); + }, + runTest: function(t){ + var d = new doh.Deferred(); + this._s = dojo.subscribe('/dojo/hashchange', null, function(value){ + try { + doh.assertEqual('test', value); + d.callback(true); + } catch(e){ + d.errback(e); + } + }); + + dojo.hash('test'); + return d; + }, + tearDown: function(){ + dojo.unsubscribe(this._s); + setHash(); + } + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/html.js b/js/dojo-release-1.7.2-src/dojo/tests/html.js new file mode 100644 index 0000000..8bbb712 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/html.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.html", require.toUrl("./html/test_set.html"), 30000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/html/test_set.html b/js/dojo-release-1.7.2-src/dojo/tests/html/test_set.html new file mode 100644 index 0000000..e23ad5d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/html/test_set.html @@ -0,0 +1,557 @@ + + + + dojo.html.set test + + + + + + +

                            dojo.html.set

                            + +
                            +
                            + + + + + + + + + + + +
                            +
                              initial content
                            +
                              initial content
                            +
                              initial content
                            + +
                            initial content
                            +
                            +
                            +
                            +
                            +
                            + + +
                            +
                            +
                            +
                            + Some content + +
                            +
                            +

                            test

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/i18n.html b/js/dojo-release-1.7.2-src/dojo/tests/i18n.html new file mode 100644 index 0000000..41a93ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/i18n.html @@ -0,0 +1,71 @@ + + + testing i18n extra locales + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/i18n.js b/js/dojo-release-1.7.2-src/dojo/tests/i18n.js new file mode 100644 index 0000000..f3e84bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/i18n.js @@ -0,0 +1,51 @@ +define(["../main", "doh", "require", "../i18n"], function(dojo, doh, require){ + var + getAsyncTest = function(value, locale){ + return function(){ + var def = new doh.Deferred(); + require([dojo.getL10nName("dojo/tests", "salutations", locale)], function(bundle){ + doh.assertEqual(value, bundle.hello); + def.callback(true); + }); + return def; + }; + }, + + getSyncTest = function(value, locale){ + return function(){ + doh.assertEqual(value, dojo.i18n.getLocalization("dojo/tests", "salutations", locale).hello); + }; + }, + + getFixture = function(locale, value){ + return { + name: "salutations-"+locale, + timeout: 2000, + runTest: (require.async ? getAsyncTest : getSyncTest)(value, locale) + }; + }, + + testSet = [ + // Locale which overrides root translation + getFixture("de", "Hallo"), + // Locale which does not override root translation + getFixture("en", "Hello"), + // Locale which overrides its parent + getFixture("en-au", "G'day"), + // Locale which does not override its parent + getFixture("en-us", "Hello"), + // Locale which overrides its parent + getFixture("en-us-texas", "Howdy"), + // 3rd level variant which overrides its parent + getFixture("en-us-new_york", "Hello"), + // Locale which overrides its grandparent + getFixture("en-us-new_york-brooklyn", "Yo"), + // Locale which does not have any translation available + getFixture("xx", "Hello"), + // A double-byte string. Everything should be read in as UTF-8 and treated as unicode within Javascript. + getFixture("zh-cn", "\u4f60\u597d") + ]; + doh.register("tests.i18n", testSet); + doh.register("tests.i18n.extra.sync", require.toUrl("./i18n.html"), {async:0}); + doh.register("tests.i18n.extra.async", require.toUrl("./i18n.html"), {async:1}); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframe.html b/js/dojo-release-1.7.2-src/dojo/tests/io/iframe.html new file mode 100644 index 0000000..c87c404 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframe.html @@ -0,0 +1,158 @@ + + + + Testing dojo.io.iframe + + + + + +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframe.js b/js/dojo-release-1.7.2-src/dojo/tests/io/iframe.js new file mode 100644 index 0000000..fab619c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframe.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.io.iframe", require.toUrl("./iframe.html")); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.html b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.html new file mode 100644 index 0000000..cd26e21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.html @@ -0,0 +1,8 @@ + + + + +

                            SUCCESSFUL HTML response

                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.js.html b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.js.html new file mode 100644 index 0000000..50c1855 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.js.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.json.html b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.json.html new file mode 100644 index 0000000..cb04ed7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.json.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.text.html b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.text.html new file mode 100644 index 0000000..2a05b83 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.text.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.xml b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.xml new file mode 100644 index 0000000..4d9c98a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeResponse.xml @@ -0,0 +1,17 @@ + + + + FOO + BAR + BAZ + BAT + + bar){ /* whatever */ } + } + } + ]]> + something else + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/iframeUploadTest.html b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeUploadTest.html new file mode 100644 index 0000000..6f6db6f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/iframeUploadTest.html @@ -0,0 +1,50 @@ + + + + + + + + +

                            This file tests dojo.io.iframe upload using a form POST with a file upload button.

                            + +

                            + Note: This test makes a form POST to upload.cgi. This cgi needs to be made executable for this test to work, and it won't work from local disk. +

                            +
                            + + + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/script.html b/js/dojo-release-1.7.2-src/dojo/tests/io/script.html new file mode 100644 index 0000000..24e89ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/script.html @@ -0,0 +1,110 @@ + + + + Testing dojo.io.script + + + + + +

                            dojo.io.script test

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/script.js b/js/dojo-release-1.7.2-src/dojo/tests/io/script.js new file mode 100644 index 0000000..ded51a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/script.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.io.script", require.toUrl("./script.html")); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/scriptJsonp.js b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptJsonp.js new file mode 100644 index 0000000..ad1a196 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptJsonp.js @@ -0,0 +1,57 @@ +function getJsonpCallback(url){ + var result = null; + var idMatch = url.match(/jsonp=(.*?)(&|$)/); + if(idMatch){ + result = idMatch[1]; + }else{ + //jsonp didn't match, so maybe it is the jsonCallback thing. + idMatch = url.match(/callback=(.*?)(&|$)/); + if(idMatch){ + result = idMatch[1]; + } + } + + if(result){ + result = decodeURIComponent(result); + } + return result; +} + +function findJsonpDone(){ + var result = false; + var scriptUrls = getScriptUrls(); + + for(var i = 0; i < scriptUrls.length; i++){ + var jsonp = getJsonpCallback(scriptUrls[i]); + if(jsonp){ + eval(jsonp + "({animalType: 'mammal'});"); + result = true; + break; + } + } + return result; +} + +function getScriptUrls(){ + //Get the script tags in the page to figure what state we are in. + var scripts = document.getElementsByTagName('script'); + var scriptUrls = new Array(); + for(var i = 0; scripts && i < scripts.length; i++){ + var scriptTag = scripts[i]; + if(scriptTag.id.indexOf("dojoIoScript") == 0){ + scriptUrls.push(scriptTag.src); + } + } + + return scriptUrls; +} + +function doJsonpCallback(){ + if(!findJsonpDone()){ + alert('ERROR: Could not jsonp callback!'); + } +} + +//Set a timeout to do the callback check, since MSIE won't see the SCRIPT tag until +//we complete processing of this page. +setTimeout(function(){doJsonpCallback();}, 300); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/scriptLoad.js b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptLoad.js new file mode 100644 index 0000000..db3ceab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptLoad.js @@ -0,0 +1,2 @@ +scriptLoad = "loaded"; + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/scriptSimple.js b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptSimple.js new file mode 100644 index 0000000..8ca316c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptSimple.js @@ -0,0 +1,5 @@ +myTasks = new Array(); +myTasks[0] = 'Take out trash.'; +myTasks[1] = 'Do dishes.'; +myTasks[2] = 'Brush teeth.'; + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/scriptTimeout.html b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptTimeout.html new file mode 100644 index 0000000..563e37c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/scriptTimeout.html @@ -0,0 +1,67 @@ + + + + Testing dojo.io.script + + + + + +

                            Timeout test

                            + +

                            + This test page tests the timeout functionality of dojo.io.script, and to make + sure that requests that time out get removed quickly. If the server response + is received after the script has been timed out, there should not be weird + errors as the browser tries to evaluate the responses after the desired time + period. +

                            + +

                            This test requires a server running PHP to work.

                            + +

                            +

                            Firefox Oddity: Firefox + will print an error after the script response is received from the server:
                            + dojo.io.script.jsonp_dojoIoScript1 has no properties + This is bad because Firefox goes ahead and evaluates the script contents in the page's + JavaScript space (this happens even when I turn off Firefox Add-Ons). All other browsers + do not evaluate the script (given the weird Opera 9.22 behavior below). You can test this + by clicking the Test for SuperXFooBarVariable button after receiving the response + for timeout.php (check Firebug Net tab to see when request is received). All other browsers + show an error or show the "undefined" value for SuperXFooBarVariable, but Firefox will show its + value as being: "Oh no! SuperXFooBarVariable is defined (should not be for timeout case)". + +

                            Opera Oddity: Opera 9.22 does not seem to trigger the timeout case, + but rather it waits for the server to send a response to the script before continuing past the + point where the script is added to the DOM? That seems wrong. Dynamic script tags are no longer + an async operation? +

                            + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/io/upload.cgi b/js/dojo-release-1.7.2-src/dojo/tests/io/upload.cgi new file mode 100755 index 0000000..baea1f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/io/upload.cgi @@ -0,0 +1,62 @@ +#!/usr/bin/python + +# FROM: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/273844 + +import cgi +import cgitb; cgitb.enable() +import os, sys +import string + +UPLOAD_DIR = "/tmp/upload/" +form = cgi.FieldStorage() + +dbg = [] + +def debug(dbgstr): + dbg.append(str(dbgstr)) + +def save_uploaded_file(form_field, upload_dir): + global form + if not form.has_key(form_field): + debug("didn't find it! (1)") + return + fileitem = form[form_field] + if not fileitem.file: + debug(form.getvalue(form_field, "")) + debug(fileitem.__dict__) + debug("didn't find it! (2)") + return + fout = file(os.path.join(upload_dir, fileitem.filename), 'wb') + while 1: + chunk = fileitem.file.read(100000) + if not chunk: break + fout.write (chunk) + fout.close() + +retval = "false"; +fileFields = "" + +if form.has_key("fileFields"): + fval = str(form.getvalue("fileFields", "")) + fileFields = fval.split(",") + debug("'fileCount': '" + str(len(fileFields)) + "',") + for field in fileFields: + debug("'fileField' : '"+field + "',") + # Uncomment the line below to really test file save. + # You may need to modify UPLOAD_DIR above. + # save_uploaded_file(str(field).strip(), UPLOAD_DIR) + retval = "true"; + +debug("'retval': " + retval) + +print """Content-Type: text/html + + + + + + + + + +""" % (string.join(dbg, "\n")) diff --git a/js/dojo-release-1.7.2-src/dojo/tests/json.js b/js/dojo-release-1.7.2-src/dojo/tests/json.js new file mode 100644 index 0000000..ee777a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/json.js @@ -0,0 +1,166 @@ +define(["../main", "doh", "../json"], function(dojo, doh, JSON){ + + var mustThrow = function(json){ + try{ + JSON.parse(json, true); + }catch(e){ + return; + } + throw new Error("Invalid JSON " + json + " should have been rejected"); + }; + + doh.register("tests.json", [ + // all tests below are taken from #4.2 of the CSS3 Color Module + function simpleString(t){ t.is("bar", JSON.parse('{"foo":"bar"}').foo)}, + function simpleTrue(t){ t.is(true, JSON.parse('{"foo":true}').foo)}, + function simpleFalse(t){ t.is(false, JSON.parse('{"foo":false}').foo)}, + function simpleNull(t){ t.is(null, JSON.parse('{"foo":null}').foo)}, + function simpleNumber(t){ t.is(3.3, JSON.parse('{"foo":3.3}', true).foo)}, + function strictString(t){ t.is("bar", JSON.parse('{"foo":"bar"}', true).foo)}, + function strictStringEsc(t){ t.is("b\n\t\"ar()", JSON.parse('{"foo":"b\\n\\t\\"ar()"}', true).foo)}, + function strictTrue(t){ t.is(true, JSON.parse('{"foo":true}', true).foo)}, + function strictFalse(t){ t.is(false, JSON.parse('{"foo":false}', true).foo)}, + function strictNull(t){ t.is(null, JSON.parse('{"foo":null}', true).foo)}, + function strictNumber(t){ t.is(3.3, JSON.parse('{"foo":3.3}', true).foo)}, + function strictNumberNeg(t){ t.is(-3.3, JSON.parse('{"foo":-3.3}', true).foo)}, + function exponentNegative(t){ t.is(3.3e-33, JSON.parse('{"foo":3.3e-33}', true).foo)}, + function exponent(t){ t.is(3.3e33, JSON.parse('{"foo":3.3e33}', true).foo)}, + function array(t){ t.is(3, JSON.parse('{"foo":[3,true,[]]}', true).foo[0])}, + function badCall(t){ mustThrow('{"foo":alert()}')}, + function badMath(t){ mustThrow('{"foo":3+4}')}, + function badIndex(t){ mustThrow('{"foo":"bar"}[3]')}, + function badKey(t){ mustThrow('{foo:"bar"}')}, + //function badKey2(t){ mustThrow('{2:"bar"}')}, + function badUnbalanced(t){ mustThrow('[')}, + function badUnbalanced2(t){ mustThrow('}')}, + function badType(t){ mustThrow('["foo":"bar"]')}, + function badUnbalanced2(t){ mustThrow('}')}, + function serializeString(t){ t.is('{"foo":"bar"}', JSON.stringify({"foo":"bar"}))}, + function serializeNull(t){ t.is('{"foo":null}', JSON.stringify({"foo":null}))}, + function serializeFunction(t){ t.is('{}', JSON.stringify({"foo":function(){}}))}, + function serializeNaN(t){ t.is('{"foo":null}', JSON.stringify({"foo":NaN}))}, + function serializeInfinity(t){ t.is('{"foo":null}', JSON.stringify({"foo":Infinity}))}, + // there is differences in how many decimals of accuracies in seconds in how Dates are serialized between browsers + function serializeDate(t){ t.t(/1970-01-01T00:00:00.*Z/.test(JSON.parse(JSON.stringify({"foo":new Date(1)})).foo));}, + function serializeCircular(t){ + try{ + var a = {}; + a.a = a; + console.log("circular: " + JSON.stringify(a)); + }catch(e){ + return; + } + throw new Error("stringify must throw for circular references"); + + }, + /*Apparently Firefox doesn't pass the key to the toJSON method*/ + function serializeToJSON(t){ t.is('{"foo":{"name":"value"}}', JSON.stringify({foo:{toJSON:function(key){return {name:"value"};}}}))} + ]); + +var smallDataSet = { + prop1: null, + prop2: true, + prop3: [], + prop4: 3.4325222223332266, + prop5: 10003, + prop6: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper", + prop7: "sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum", + prop8: "lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus", + prop9: "venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie", + prop10: "tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus." + + "Aliquam vitae enim. Duis scelerisque metus auctor est venenatis imperdiet." + + "Fusce dignissim porta augue. Nulla vestibulum. Integer lorem nunc," + + "ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in massa" + + "bibendum suscipit. Integer eros. Nullam suscipit mauris. In pellentesque." + + "Mauris ipsum est, pharetra semper, pharetra in, viverra quis, tellus. Etiam" + + "purus. Quisque egestas, tortor ac cursus lacinia, felis leo adipiscing" + + "nisi, et rhoncus elit dolor eget eros. Fusce ut quam. Suspendisse eleifend" + + "leo vitae ligula. Nulla facilisi." +}; +var smallJson = JSON.stringify(smallDataSet); + +var i, mediumDataSet = []; +for(i = 0; i < 20; i++){ + mediumDataSet.push({ + prop1: null, + prop2: true, + prop3: false, + prop4: 3.4325222223332266 - i, + prop5: 10003 + i, + prop6: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper", + prop7: "sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum", + prop8: "lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus", + prop9: "venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie", + prop10: "tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus." + + "Aliquam vitae enim." + }); +} +var mediumJson = JSON.stringify(mediumDataSet); + +var largeDataSet = []; +for(i = 0; i < 100; i++){ + largeDataSet.push({ + prop1: null, + prop2: true, + prop3: false, + prop4: 3.4325222223332266 - i, + prop5: ["Mauris ipsum est, pharetra semper, pharetra in, viverra quis, tellus. Etiam" + + "purus. Quisque egestas, tortor ac cursus lacinia, felis leo adipiscing", + "nisi, et rhoncus elit dolor eget eros. Fusce ut quam. Suspendisse eleifend" + + "leo vitae ligula. Nulla facilisi." + ], + prop6: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper", + prop7: "sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum", + prop8: "lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus", + prop9: "venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie", + prop10: "tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus." + + "Aliquam vitae enim. Duis scelerisque metus auctor est venenatis imperdiet." + + "Fusce dignissim porta augue. Nulla vestibulum. Integer lorem nunc," + + "ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in massa" + + "bibendum suscipit. Integer eros. Nullam suscipit mauris. In pellentesque." + }); +} +var largeJson = JSON.stringify(largeDataSet); + +doh.register("tests.json.performance", [ + // all tests below are taken from #4.2 of the CSS3 Color Module + function small(){ + var i = 10000; + while(i-->0){ + var result = JSON.parse(smallJson); + } + }, + function strictSmall(){ + var i = 10000; + while(i-->0){ + var result = JSON.parse(smallJson, true); + } + }, + function medium(){ + var i = 1000; + while(i-->0){ + var result = JSON.parse(mediumJson); + } + }, + function strictMedium(){ + var i = 1000; + while(i-->0){ + var result = JSON.parse(mediumJson, true); + } + }, + function large(){ + var i = 100; + while(i-->0){ + var result = JSON.parse(largeJson); + } + }, + function strictLarge(){ + var i = 100; + while(i-->0){ + var result = JSON.parse(largeJson, true); + } + } + ]); + +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/module.js b/js/dojo-release-1.7.2-src/dojo/tests/module.js new file mode 100644 index 0000000..c2f88b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/module.js @@ -0,0 +1,37 @@ +define([ + "dojo/tests/_base", + "dojo/tests/cache", + "dojo/tests/i18n", + "dojo/tests/cldr", + "dojo/tests/store", + "dojo/tests/data", + "dojo/tests/date", + "dojo/tests/on", + "dojo/tests/json", + "dojo/tests/aspect", + "dojo/tests/number", + "dojo/tests/currency", + "dojo/tests/AdapterRegistry", + "dojo/tests/regexp", + "dojo/tests/store", + "dojo/tests/string", + "dojo/tests/colors", + "dojo/tests/DeferredList", + "dojo/tests/Stateful", + "dojo/has!host-browser?dojo/tests/behavior", + "dojo/has!host-browser?dojo/tests/parser", + "dojo/has!host-browser?dojo/tests/html", + "dojo/has!host-browser?dojo/tests/fx", + "dojo/has!host-browser?dojo/tests/io/script", + "dojo/has!host-browser?dojo/tests/io/iframe", + "dojo/has!host-browser?dojo/tests/back-hash", + "dojo/has!host-browser?dojo/tests/hash", + "dojo/has!host-browser?dojo/tests/rpc", + "dojo/has!host-browser?dojo/tests/cookie", + "dojo/has!host-browser?dojo/tests/NodeList-traverse", + "dojo/has!host-browser?dojo/tests/NodeList-manipulate", + "dojo/has!host-browser?dojo/tests/NodeList-data", + "dojo/has!host-browser?dojo/tests/uacss", + "dojo/has!host-browser?dojo/tests/window", + "dojo/has!host-browser?dojo/tests/touch" +], 1); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/ar/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/ar/salutations.js new file mode 100644 index 0000000..9bd0656 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/ar/salutations.js @@ -0,0 +1,12 @@ +define( +//begin v1.x content +/**/ +// The above is a workaround for Konqueror and Safari (see bug #1010) +// The parentheses are optional, but make this file a valid JS expression for +// tools to inspect +({ + ar: "العربية", + hello: "ﺎﺑﺣﺮﻣ" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/cs/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/cs/salutations.js new file mode 100644 index 0000000..79c44df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/cs/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + cs: "česky", + hello: "Ahoj" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/de/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/de/salutations.js new file mode 100644 index 0000000..7c25ff9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/de/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + de: "Deutsch", + hello: "Hallo" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/el/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/el/salutations.js new file mode 100644 index 0000000..6688262 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/el/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + el: "Ελληνικά", + hello: "Γειά" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/en-au/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-au/salutations.js new file mode 100644 index 0000000..78d9ca6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-au/salutations.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +{ + hello: "G'day" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-hawaii/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-hawaii/salutations.js new file mode 100644 index 0000000..018524b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-hawaii/salutations.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +{ + hello: "Aloha" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-new_york-brooklyn/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-new_york-brooklyn/salutations.js new file mode 100644 index 0000000..13e995a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-new_york-brooklyn/salutations.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +{ + hello: "Yo" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-texas/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-texas/salutations.js new file mode 100644 index 0000000..7aae7a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/en-us-texas/salutations.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +{ + hello: "Howdy" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/es/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/es/salutations.js new file mode 100644 index 0000000..e91e6ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/es/salutations.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +{ + es: "Español", + hello: "Hola", + hello_dojo: "¡${hello}, ${dojo}!" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/fa/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/fa/salutations.js new file mode 100644 index 0000000..9f98575 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/fa/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + fa: "فارسی", + hello: "درود" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/fr/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/fr/salutations.js new file mode 100644 index 0000000..f87d354 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/fr/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + fr: "Français", + hello: "Bonjour" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/he/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/he/salutations.js new file mode 100644 index 0000000..7243d26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/he/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + he: "עברית", + hello: "שלום" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/hi/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/hi/salutations.js new file mode 100644 index 0000000..81a114c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/hi/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + hi: "हिन्दी", + hello: "नमस्ते" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/it/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/it/salutations.js new file mode 100644 index 0000000..aa77123 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/it/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + it: "italiano", + hello: "Ciao" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/ja/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/ja/salutations.js new file mode 100644 index 0000000..314c9dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/ja/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + ja: "\u65E5\u672C\u8A9E", + hello: "こにちは" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/ko/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/ko/salutations.js new file mode 100644 index 0000000..72d78c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/ko/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + ko: "\uD55C\uAD6D\uC5B4", + hello: "\uc548\ub155" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/pl/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/pl/salutations.js new file mode 100644 index 0000000..1a59470 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/pl/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + pl: "Polski", + hello: "Dzièn dobry" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/pt/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/pt/salutations.js new file mode 100644 index 0000000..a607689 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/pt/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + pt: "Português", + hello: "Olá" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/ru/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/ru/salutations.js new file mode 100644 index 0000000..56aac0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/ru/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + ru: "русский", + hello: "Привет" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/salutations.js new file mode 100644 index 0000000..9b515cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/salutations.js @@ -0,0 +1,62 @@ +define({ root: +//begin v1.x content +{ + ar: "Arabic", + cs: "Czech", + de: "German", + el: "Greek", + en: "English", + 'en-au': "English (Australia)", + 'en-us-hawaii': "English (US-Hawaii)", + 'en-us-new_york-brooklyn': "English (Brooklynese)", + 'en-us-texas': "English (Texas)", + es: "Spanish", + fa: "Farsi", + fr: "French", + he: "Hebrew", + hi: "Hindi", + it: "Italian", + ja: "Japanese", + ko: "Korean", + pl: "Polish", + pt: "Portugese", + ru: "Russian", + sw: "Kiswahili", + th: "Thai", + tr: "Turkish", + yi: "Yiddish", + 'zh-cn': "Chinese (Simplified)", + 'zh-tw': "Chinese (Traditional)", + hello: "Hello", + dojo: "Dojo", + hello_dojo: "${hello}, ${dojo}!", + file_not_found:"The file you requested, ${0}, is not found." +} +//end v1.x content +, +"zh-tw":1, +"zh-cn":1, +"yi":1, +"tr":1, +"th":1, +"sw":1, +"ru":1, +"pt":1, +"pl":1, +"ko":1, +"ja":1, +"it":1, +"hi":1, +"he":1, +"fr":1, +"fa":1, +"es":1, +"en-us-texas":1, +"en-us-new_york-brooklyn":1, +"en-us-hawaii":1, +"en-au":1, +"el":1, +"de":1, +"cs":1, +"ar":1 +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/sw/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/sw/salutations.js new file mode 100644 index 0000000..af66723 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/sw/salutations.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +{ + hello: "Hujambo" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/th/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/th/salutations.js new file mode 100644 index 0000000..70fbcd9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/th/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + th: "ქართული ენაქართული ენაქართული ენაสวัสดีครับ/คะ", + hello: "ภาษาไทย" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/tr/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/tr/salutations.js new file mode 100644 index 0000000..192b3f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/tr/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + tr: "Türkçe", + hello: "Merhaba" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/yi/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/yi/salutations.js new file mode 100644 index 0000000..5f242cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/yi/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + yi: "ייִדיש", + hello: "אַ גוטן טאָג" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/zh-cn/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/zh-cn/salutations.js new file mode 100644 index 0000000..7181e3d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/zh-cn/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + 'zh-cn': "汉语", + hello: "你好" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/nls/zh-tw/salutations.js b/js/dojo-release-1.7.2-src/dojo/tests/nls/zh-tw/salutations.js new file mode 100644 index 0000000..08e091f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/nls/zh-tw/salutations.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +{ + 'zh-tw': "漢語", + hello: "你好" +} +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/number.js b/js/dojo-release-1.7.2-src/dojo/tests/number.js new file mode 100644 index 0000000..d30bcbe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/number.js @@ -0,0 +1,1129 @@ +define(["../main", "doh", "../number", "../i18n"], function(dojo, doh){ +var tests= {number:{}}; +/** + * Refer to ICU4J's NumberFormatTest.expect(...) + */ +tests.number.check=function(t,options,sourceInput,expectResult){ + tests.number.checkFormatParseCycle(t, t,options,sourceInput,expectResult,false); + tests.number.checkParse(t, t,options,expectResult,sourceInput); +}; + +/** + * Perform a single formatting check or a backward check + * backward check:number1 -(formatted)-> string1 -(parsed)-> number2 -(formated)-> string2 + * then number should == number2; string1 should == string2 + */ +tests.number.checkFormatParseCycle=function(t,options,sourceInput,expectResult, + backwardCheck/*boolean,indicates whether need a backward chain check,like formate->parse->format*/){ + if(null != options){ + var pattern = options.pattern; + var locale = options.locale; + //TODO: add more fields + } + + //print("\n"); + var str = null==pattern?"default":pattern; + //print("pattern:" + str + "| locale:" + locale); + //print("input:" + sourceInput); + var result = dojo.number.format(sourceInput,options); + //print("result:" + result); + if(null != expectResult){ + t.is(expectResult,result); + } + if(backwardCheck){ + var resultParsed = dojo.number.parse(result,options); + //print("resultParsed:" + resultParsed); + if(!tests.number._decimalNumberDiff(sourceInput,resultParsed)){ + t.is(sourceInput,resultParsed); + } + var resultParsedReformatted = dojo.number.format(resultParsed,options); + //print("resultParsedReformatted:" + resultParsedReformatted); + if(!tests.number._decimalNumberDiff(result,resultParsedReformatted)){ + t.is(result,resultParsedReformatted); + } + } +}; + +/** + * Perform a single parsing check + */ +tests.number.checkParse=function(t,options,sourceInput,expectResult){ + var str = "default"; + if(null != options && null != options.pattern){ + str = options.pattern; + } + //print("input:" + sourceInput); + var result = dojo.number.parse(sourceInput,options); + //print("result :" + result); + if(null != expectResult){ + t.is(expectResult,result); + } +}; + +/** + * //TODO:Round a given number + */ +tests.number.rounding = function(t,number,maxFractionDigits,expected){ + var pattern="#0."; + for(var i=0; i 12,34,56,789 + //step2:12,34,56,789 parsed=> 123456789 => formated => 12,34,56,789 + tests.number.checkFormatParseCycle(t, options,sourceInput,expectResult,true); + + //TODO: sencondary grouping not implemented yet ? + //Pattern "#,###" and secondaryGroupingSize=4 should format 123456789 to "12,3456,789" + + //Special case for "en-in" locale + //1876543210 should be formated as 1,87,65,43,210 in "en-in" (India) +/* + sourceInput = 1876543210; + expectResult = "1,87,65,43,210"; + var result = dojo.number.format(sourceInput,{locale:"en-in"}); + t.is(expectResult,result); +*/ + //print("test_number_format_Grouping() end..............\n"); + } + }, + { + name: "format_pad", + runTest: function(t){ +/** + * TODO:!!Failed cases: + * According to ICU4J test criteria: + * 1.with pattern "*^##.##": + * 0 should be formatted to "^^^^0",but got "*^0" instead, + * -1.3 should be formatted to "^-1.3",but got "-*^1.3" instead. + * + * 2.with pattern "##0.0####*_ 'g-m/s^2'" : + * 0 should be formatted to "0.0______ g-m/s^2",but got ":0.0*_ 'g-m/s^2'" instead + * 1.0/3 should be formatted to "0.33333__ g-m/s^2",but got "0.33333*_ 'g-m/s^2'" instead + * + * 3.with pattern "*x#,###,###,##0.0#;*x(###,###,##0.0#)": + * -10 should be formatted to "xxxxxxxxxx(10.0)",but got "*x(10.0)" instead. + * 10 should be formatted to "xxxxxxxxxxxx10.0",but got "*x10.0" instead. + * ...... + * -1120456.37 should be formatted to "xx(1,120,456.37)",but got "*x(1,120,456.37)" instead. + * 1120456.37 should be formatted to "xxxx1,120,456.37",but got "*x1,120,456.37" instead. + * -1252045600.37 should be formatted to "(1,252,045,600.37)",but got "*x(1,252,045,600.37)" instead. + * 1252045600.37 should be formatted to "10,252,045,600.37",but got "*x10,252,045,600.37" instead. + * + * 4.with pattern "#,###,###,##0.0#*x;(###,###,##0.0#*x)" + * -10 should be formatted to (10.0xxxxxxxxxx),but got "(10.0*x)" instead. + * 10 should be formatted to "10.0xxxxxxxxxxxx",but got "10.0*x" instead. + * ...... + * -1120456.37 should be formatted to "(1,120,456.37xx)",but got "(1,120,456.37*x)" instead. + * 1120456.37 should be formatted to "xxxx1,120,456.37",but got "1,120,456.37*x" instead. + * -1252045600.37 should be formatted to "(1,252,045,600.37)",but got "(1,252,045,600.37*x)" instead. + * 1252045600.37 should be formatted to ""10,252,045,600.37"",but got "10,252,045,600.37*x" instead.* + * + * Refer to ICU4J's NumberFormatTest.TestPad() + */ +/* +function test_number_format_pad(){ + var locale = "en-us"; + print("test_number_format_Pad() start.............."); + var options = {pattern:"*^##.##",locale:locale}; + + tests.number.check(t, options,0,"^^^^0"); + tests.number.check(t, options,-1.3,"^-1.3"); + + + options = {pattern:"##0.0####*_ 'g-m/s^2'",locale:locale}; + tests.number.check(t, options,0,"0.0______ g-m/s^2"); + tests.number.checkFormatParseCycle(t, options,1.0/3,"0.33333__ g-m/s^2",true); + + //exponent not implemented + //options = {pattern:"##0.0####E0*_ 'g-m/s^2'",locale:locale}; + //tests.number.check(t, options,0,"0.0E0______ g-m/s^2"); + //tests.number.checkFormatParseCycle(t, options,1.0/3,"333.333E-3_ g-m/s^2",true); + + // Test padding before a sign + options = {pattern:"*x#,###,###,##0.0#;*x(###,###,##0.0#)",locale:locale}; + + tests.number.check(t, options,-10,"xxxxxxxxxx(10.0)"); + tests.number.check(t, options,-1000, "xxxxxxx(1,000.0)"); + tests.number.check(t, options,-1000000, "xxx(1,000,000.0)"); + tests.number.check(t, options,-100.37, "xxxxxxxx(100.37)"); + tests.number.check(t, options,-10456.37, "xxxxx(10,456.37)"); + tests.number.check(t, options,-1120456.37, "xx(1,120,456.37)"); + tests.number.check(t, options,-112045600.37, "(112,045,600.37)"); + tests.number.check(t, options,-1252045600.37, "(1,252,045,600.37)"); + + + tests.number.check(t, options,10, "xxxxxxxxxxxx10.0"); + tests.number.check(t, options,1000, "xxxxxxxxx1,000.0"); + tests.number.check(t, options,1000000, "xxxxx1,000,000.0"); + tests.number.check(t, options,100.37, "xxxxxxxxxx100.37"); + tests.number.check(t, options,10456.37, "xxxxxxx10,456.37"); + tests.number.check(t, options,1120456.37, "xxxx1,120,456.37"); + tests.number.check(t, options,112045600.37, "xx112,045,600.37"); + tests.number.check(t, options,10252045600.37, "10,252,045,600.37"); + + // Test padding between a sign and a number + options = {pattern:"#,###,###,##0.0#*x;(###,###,##0.0#*x)",locale:locale}; + tests.number.check(t, options, -10, "(10.0xxxxxxxxxx)"); + tests.number.check(t, options, -1000, "(1,000.0xxxxxxx)"); + tests.number.check(t, options, -1000000, "(1,000,000.0xxx)"); + tests.number.check(t, options, -100.37, "(100.37xxxxxxxx)"); + tests.number.check(t, options, -10456.37, "(10,456.37xxxxx)"); + tests.number.check(t, options, -1120456.37, "(1,120,456.37xx)"); + tests.number.check(t, options, -112045600.37, "(112,045,600.37)"); + tests.number.check(t, options, -1252045600.37, "(1,252,045,600.37)"); + + tests.number.check(t, options, 10, "10.0xxxxxxxxxxxx"); + tests.number.check(t, options, 1000, "1,000.0xxxxxxxxx"); + tests.number.check(t, options, 1000000, "1,000,000.0xxxxx"); + tests.number.check(t, options, 100.37, "100.37xxxxxxxxxx"); + tests.number.check(t, options, 10456.37, "10,456.37xxxxxxx"); + tests.number.check(t, options, 1120456.37, "1,120,456.37xxxx"); + tests.number.check(t, options, 112045600.37, "112,045,600.37xx"); + tests.number.check(t, options, 10252045600.37, "10,252,045,600.37"); + + //Not implemented yet,refer to NumberFormatTest.TestPatterns2() + //For future use - maily test pad patterns + print("test_number_format_Pad() end.............."); +} +*/ + } + }, + { + name: "parse_icu4j3_6", + runTest: function(t){ +/** + * In ICU4J, testing logic for NumberFormat.parse() is seperated into + * differernt single tese cases. So part of these logic are + * collected together in this test case. * + */ + //print("test_number_parse_icu4j3_6() start.............."); + //Refer to ICU4J's NumberFormatTest.TestParse() which is only a rudimentary version + var pattern = "00"; + var str = "0.0"; + var result = dojo.number.parse(str,{pattern:pattern, locale: 'en-us'}); + //TODO: add more locales +//FIXME: is this a valid test? +// t.is(0,result); + + /**************************************** tolerant parse ***************************************** + * refers to ICU4J's NumberFormatTest.TestStrictParse()?? + * TODO: Seems dojo.number parses string in a tolerant way. + */ + var options = {locale:"en-us"}; + /* + * TODO: !!Failed case,Should all pass, + * but the following elements failed (all parsed to NaN): + * [1]-"0 ",[2]-"0.",[3]-"0,",[5]-"0. ",[6]-"0.100,5", + * [7]-".00",[9]-"12345, ",[10]-"1,234, ",[12]-"0E" + */ + var passData = ([ + "0", //[0] single zero before end of text is not leading + //"0 ", //[1] single zero at end of number is not leading + //"0.", //[2] single zero before period (or decimal, it's ambiguous) is not leading + //"0,", //[3] single zero before comma (not group separator) is not leading + "0.0", //[4] single zero before decimal followed by digit is not leading + //"0. ", //[5] same as above before period (or decimal) is not leading + //"0.100,5", //[6] comma stops parse of decimal (no grouping) + //".00", //[7] leading decimal is ok, even with zeros + "1234567", //[8] group separators are not required + //"12345, ", //[9] comma not followed by digit is not a group separator, but end of number + //"1,234, ", //[10] if group separator is present, group sizes must be appropriate + "1,234,567" //[11] ...secondary too + //,"0E" //[12]not implemented yet,an exponnent not followed by zero or digits is not an exponent + ]); + runBatchParse(options,passData,true/*tolerant parse*/); + + /* + * TODO:!!Failed case,should all pass, + * but the following failed, + * [10]-"1,45 that" implies that we partially parse input + */ + var failData = ([ +// leading zeros without separators are tolerated #6933 +// "00", //[0] leading zero before zero +// "012", //[1] leading zero before digit + "0,456", //[2] leading zero before group separator + "1,2", //[3] wrong number of digits after group separator + ",0", //[4] leading group separator before zero + ",1", //[5] leading group separator before digit + ",.02", //[6] leading group separator before decimal + "1,.02", //[7] group separator before decimal + "1,,200", //[8] multiple group separators + "1,45", //[9] wrong number of digits in primary group + //"1,45 that", //[10] wrong number of digits in primary group + "1,45.34", //[11] wrong number of digits in primary group + "1234,567", //[12] wrong number of digits in secondary group + "12,34,567", //[13] wrong number of digits in secondary group + "1,23,456,7890" //[14] wrong number of digits in primary and secondary groups + ]); + runBatchParse(options,failData,false); + + options = {pattern:"#,##,##0.#",locale:"en-us"}; + /* + * TODO:!!Failed case,shoudl all pass. + + * but [1] [2] and [3] failed + * should be parsed to 1234567,but NaN instead + */ + var mixedPassData = ([ + "12,34,567" //[0] + //,"12,34,567," //[1] + //"12,34,567, that",//[2] + //"12,34,567 that" //[3] + ]); + runBatchParse(options,mixedPassData,true/*tolerant parse*/); + + /* + * TODO:!!Failed case,should all pass, + * but actually mixedFailData[2] and mixedFailData[3] passed. + * "12,34,56, that " and [3]-"12,34,56 that" should be parsed to 123456,but NaN instead + */ + var mixedFailData = ([ + "12,34,56", //[0] + "12,34,56," //[1] + //,"12,34,56, that ",//[2] + //"12,34,56 that", //[3] + ]); + runBatchParse(options,mixedFailData,false); + + + /**************************************** strict parse ****************************************** + * TODO:May need to test strict parsing in the future? + * e.g. A strict parsing like (with pattern "#,##0.#") + * 1.Leading zeros + * '00', '0123' fail the parse, but '0' and '0.001' pass + * 2.Leading or doubled grouping separators + * ',123' and '1,,234" fail + * 3.Groups of incorrect length when grouping is used + * '1,23' and '1234,567' fail, but '1234' passes + * 4.Grouping separators used in numbers followed by exponents + * '1,234E5' fails, but '1234E5' and '1,234E' pass + */ + //options={locale:"en",strict:true}; + //runBatchParse(options,passData,false/*strict parse*/); + //runBatchParse(options,failData,false/*strict parse*/); + + //options = {pattern:"#,##,##0.#",locale:"en-us",strict:true}; + //runBatchParse(options,mixedPassData,false/*strict parse*/); + //runBatchParse(options,mixedFailData,false/*strict parse*/); + + //print("test_number_parse_icu4j3_6() end..............\n"); + } + }, + { + name: "parse_whitespace", + runTest: function(t){ +/** + * TODO:!!Failed case + * With pattern "a b#0c ",both "a b3456c " and and "a b1234c " should be parsed to 3456,but got NaN instead. + * + * Refer to ICU4J's NumberFormatTest.TestWhiteSpaceParsing + */ + /* + print("test_number_parse_WhiteSpace() start.............."); + var pattern = "a b#0c "; + var expectResult = 3456; + result = dojo.number.parse("a b3456c ",{pattern:pattern,locale:"en-us"}); + t.is(expectResult,result); + result = dojo.number.parse("a b3456c ",{pattern:pattern,locale:"en-us"}); + t.is(expectResult,result); + print("test_number_parse_WhiteSpace() end..............\n"); + */ + } + }, +/************************************************************************************************* + * Regression test cases + * These test cases are referred to ICU4J's NumberFormatRegressionTest and NumberFormatRegression. + * The regression cases in ICU4J are used as unit test cases for bug fixing, + * They are inluced here so that dojo.number may avoid those similar bugs. + *************************************************************************************************/ + { + name: "number_regression_1", + runTest: function(t){ +/** + * Refer to ICU4J's NumberFormatRegressionTest.Test4161100() + */ + tests.number.checkFormatParseCycle(t, {pattern:"#0.#", locale: 'en-us'},-0.09,"-0.1",false); + } + }, + { + name: "number_regression_2", + runTest: function(t){ +/** + * !!Failed case,rounding hasn't been implemented yet. + * Refer to ICU4J's NumberFormatRegressionTest.Test4408066() + */ + /* + var data = ([-3.75, -2.5, -1.5, + -1.25, 0, 1.0, + 1.25, 1.5, 2.5, + 3.75, 10.0, 255.5]); + var expected = (["-4", "-2", "-2", + "-1", "0", "1", + "1", "2", "2", + "4", "10", "256"]); + var options = {locale:"zh-cn",round:true}; + for(var i =0; i < data.length; i++){ + tests.number.checkFormatParseCycle(t, options,data[i],expected[i],false); + } + + data = ([ "-3.75", "-2.5", "-1.5", + "-1.25", "0", "1.0", + "1.25", "1.5", "2.5", + "3.75", "10.0", "255.5"]); + expected =([ -3, -2, -1, + -1, 0, 1, + 1, 1, 2, + 3, 10, 255]); + + for(var i =0; i < data.length; i++){ + tests.number.checkParse(t, options,data[i],expected[i]); + } + */ + } + }, + { + name: "number_regression_3", + runTest: function(t){ +/** + * Refer to ICU4J's NumberRegression.Test4087535() and Test4243108() + */ + tests.number.checkFormatParseCycle(t, {places:0},0,"0",false); + //TODO:in icu4j,0.1 should be formatted to ".1" when minimumIntegerDigits=0 + tests.number.checkFormatParseCycle(t, {places:0},0.1,"0",false); + tests.number.checkParse(t, {pattern:"#0.#####", locale: 'en-us'},123.55456,123.55456); +//!! fails because default pattern only has 3 decimal places +// tests.number.checkParse(t, null,123.55456,123.55456); + + //See whether it fails first format 0.0 ,parse "99.99",and then reformat 0.0 + tests.number.checkFormatParseCycle(t, {pattern:"#.#"},0.0,"0",false); + tests.number.checkParse(t, {locale: 'en-us'},"99.99",99.99); + tests.number.checkFormatParseCycle(t, {pattern:"#.#"},0.0,"0",false); + } + }, + { + name: "number_regression_4", + runTest: function(t){ +/** + * TODO: + * In ICU -0.0 and -0.0001 should be formatted to "-0" with FieldPosition(0) + * dojo.i18n.number format -0.0 to "-0"; -0.0001 to "-0.000100" + * + * Refer to ICU4J's NumberRegression.Test4088503() and Test4106658() + */ + tests.number.checkFormatParseCycle(t, {places:0},123,"123",false); + + //TODO: differernt from ICU where -0.0 is formatted to "-0" + tests.number.checkFormatParseCycle(t, {locale:"en-us"},-0.0,"0",false); + + //TODO: differernt from ICU where -0.0001 is formatted to "-0" + tests.number.checkFormatParseCycle(t, {locale:"en-us",places:6},-0.0001,"-0.000100",false); + } + }, + { + name: "number_regression_5", + runTest: function(t){ +/** + * !!Failed case,rounding has not implemented yet. + * 0.00159999 should be formatted as 0.0016 but got 0.0015 instead. + * Refer to ICU4J's NumberRegression.Test4071492() + */ + //tests.number.checkFormatParseCycle(t, {places:4,round:true},0.00159999,"0.0016",false); + } + }, + { + name: "number_regression_6", + runTest: function(t){ +/** + * Refer to ICU4J's NumberRegression.Test4086575() + */ + var pattern = "###.00;(###.00)"; + var locale = "fr"; + var options = {pattern:pattern,locale:locale}; + + //no group separator + tests.number.checkFormatParseCycle(t, options,1234,"1234,00",false); + tests.number.checkFormatParseCycle(t, options,-1234,"(1234,00)",false); + + //space as group separator + pattern = "#,###.00;(#,###.00)"; + options = {pattern:pattern,locale:locale}; + tests.number.checkFormatParseCycle(t, options,1234,"1\u00a0234,00",false);// Expect 1 234,00 + tests.number.checkFormatParseCycle(t, options,-1234,"(1\u00a0234,00)",false); // Expect (1 234,00) + } + }, + { + name: "number_regression_7", + runTest: function(t){ +/** + * !!Failed case - expontent has not implemented yet + * shuold format 1.000000000000001E7 to 10000000.00000001, but got 10,000,000.000 instead + * Refer to ICU4J's NumberRegression.Test4090489() - loses precision + */ + //tests.number.checkFormatParseCycle(t, null,1.000000000000001E7,"10000000.00000001",false); + } + }, + { + name: "number_regression_8", + runTest: function(t){ +/** + * !!Failed case + * 1.with pattern "#,#00.00 p''ieces;-#,#00.00 p''ieces" + * 3456.78 should be formated to "3,456.78 p'ieces", + * but got "3,456.78 p''ieces","''" should be replaced with "'" + * 2.with illegal pattern "000.0#0" + * no error for the illegal pattern, and 3456.78 is formatted to 456.780 + * 3.with illegal pattern "0#0.000" + * no error for the illegal pattern, and 3456.78 is formatted to 3456.780 + * + * Refer to ICU4J's NumberRegression.Test4092480(),Test4074454() + */ + var patterns = (["#0000","#000","#00","#0","#"]); + var expect = (["0042","042","42","42","42"]); + + for(var i =0; i < patterns.length; i ++){ + tests.number.checkFormatParseCycle(t, {pattern:patterns[i]},42,expect[i],false); + tests.number.checkFormatParseCycle(t, {pattern:patterns[i]},-42,"-"+expect[i],false); + } + + tests.number.checkFormatParseCycle(t, {pattern:"#,#00.00;-#.#", locale: 'en-us'},3456.78,"3,456.78",false); + //!!Failed case + //tests.number.checkFormatParseCycle(t, {pattern:"#,#00.00 p''ieces;-#,#00.00 p''ieces"},3456.78,"3,456.78 p'ieces",false); + //tests.number.checkFormatParseCycle(t, {pattern:"000.0#0"},3456.78,null,false); + //tests.number.checkFormatParseCycle(t, {pattern:"0#0.000"},3456.78,null,false); + } + }, + { + name: "number_regression_9", + runTest: function(t){ +/** + * TODO + * Refer to ICU4J's NumberRegression.Test4052223() + */ + //TODO:only got NaN,need an illegal pattern exception? + tests.number.checkParse(t, {pattern:"#,#00.00"},"abc3"); + + //TODO: got NaN instead of 1.222, is it ok? + //tests.number.checkParse(t, {pattern:"#,##0.###",locale:"en-us"},"1.222,111",1.222); + //tests.number.checkParse(t, {pattern:"#,##0.###",locale:"en-us"},"1.222x111",1.222); + + //got NaN for illeal input,ok + tests.number.checkParse(t, null,"hello: ,.#$@^&**10x"); + } + }, + { + name: "number_regression_10", + runTest: function(t){ +/** + * Refer to ICU4J's NumberRegression.Test4125885() + */ + tests.number.checkFormatParseCycle(t, {pattern:"000.00", locale: 'en-us'},12.34,"012.34",false); + tests.number.checkFormatParseCycle(t, {pattern:"+000.00%;-000.00%", locale: 'en-us'},0.1234,"+012.34%",false); + tests.number.checkFormatParseCycle(t, {pattern:"##,###,###.00", locale: 'en-us'},9.02,"9.02",false); + + var patterns =(["#.00", "0.00", "00.00", "#0.0#", "#0.00"]); + var expect = (["1.20", "1.20", "01.20", "1.2", "1.20" ]); + for(var i =0 ; i < patterns.length; i ++){ + tests.number.checkFormatParseCycle(t, {pattern:patterns[i], locale: 'en-us'},1.2,expect[i],false); + } + } + }, + { + name: "number_regression_11", + runTest: function(t){ +/** + * TODO:!!Failed case + * Make sure that all special characters, when quoted in a suffix or prefix, lose their special meaning. + * The detail error info : + * for input 123 + * pattern:'0'#0'0'; expect:"01230"; but got "'3'#0'0'" instead + * pattern:','#0','; expect:",123,"; but got "','123','" instead + * pattern:'.'#0'.'; expect:".123."; but got "'.'123'.'" instead + * pattern:'‰'#0'‰'; expect:"‰123‰"; but got "'‰'123000'‰'" instead + * pattern:'%'#0'%'; expect:"%123%"; but got "'%'12300'%'" instead + * pattern:'#'#0'#'; expect:"#123#"; but got "'123'#0'#'" instead + * pattern:';'#0';'; expect:";123;"; but got "[dojo-test] FATAL exception raised: + * unable to find a number expression in pattern: '" + * pattern:'E'#0'E'; expect:"E123E"; not implemeted yet + * pattern:'*'#0'*'; expect:"*123*"; but got "'*'123'*'" instead + * pattern:'+'#0'+'; expect:"+123+"; but got "'+'123'+'" instead + * pattern:'-'#0'-'; expect:"-123-"; but got "'-'123'-'" instead + * + * TODO: is it ok to remain "'" in the formatted result as above?? + * + * Refer to ICU4J's NumberRegression.Test4212072() + */ +/* + var specials = ([ '0', ',', '.', '\u2030', '%', '#',';', 'E', '*', '+', '-']); + var pattern; + var expect; + + for(var i=0; i < specials.length; i ++){ + pattern = "'" + specials[i] + "'#0'" + specials[i] + "'"; + expect = "" + specials[i] + "123" + specials[i]; + tests.number.checkFormatParseCycle(t, {pattern:pattern,locale:"en-us"},123,expect,false); + } +*/ + } + }, + { + name: "number_regression_12", + runTest: function(t){ +/** + * TODO: add more rounding test cases, refer to ICU4J's NumberRegression.Test4071005(),Test4071014() etc.. + */ + +/** + * TODO:Decimal format doesnt round a double properly when the number is less than 1 + * + * Refer to ICU4J's NumberRegression.test4241880() + */ +/* + var input = ([ .019, .009, .015, .016, .014, + .004, .005, .006, .007, .008, + .5, 1.5, .05, .15, .005, + .015, .0005, .0015]); + var patterns = (["##0%", "##0%", "##0%", "##0%", "##0%", + "##0%", "##0%", "##0%", "##0%", "##0%", + "#,##0", "#,##0", "#,##0.0", "#,##0.0", "#,##0.00", + "#,##0.00", "#,##0.000", "#,##0.000"]); + var expect =([ "2%", "1%", "2%", "2%", "1%", + "0%", "0%", "1%", "1%", "1%", + "0", "2", "0.0", "0.2", "0.00", + "0.02", "0.000", "0.002"]); + for(var i = 0; i + + + Parser Unit Test + + + + + +

                            Parser Unit Test

                            + +
                            + +
                            + + + + +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            + + + +
                            +
                            + + +
                            +
                            + + + + +
                            +
                            +
                            +
                            +
                            +
                            + +
                            +
                            + + + + +
                            +
                            +
                            +
                            +
                            +
                            + + +
                            +
                            +
                            + +
                            + + +
                            +
                            + +
                            + +
                            +
                            +

                            Some random markup

                            + + + +
                            +
                            + + +
                            +
                            + + +
                            +
                            +
                            + + +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            + + +
                            + + + + + + +
                            + checked ToggleButton as div +
                            +
                            + unchecked ToggleButton as div +
                            +
                            +
                            + +
                            + + +
                            + +
                            + + +
                            + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/parser.js b/js/dojo-release-1.7.2-src/dojo/tests/parser.js new file mode 100644 index 0000000..51bf615 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/parser.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.parser", require.toUrl("./parser.html"), 30000); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/regexp.js b/js/dojo-release-1.7.2-src/dojo/tests/regexp.js new file mode 100644 index 0000000..1b7d793 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/regexp.js @@ -0,0 +1,11 @@ +define(["../main", "doh", "../regexp"], function(dojo, doh){ + +doh.register("tests.regexp", + function test_regexp_escape(t){ + t.assertTrue(new RegExp(dojo.regexp.escapeString("\f\b\n\t\r+.$?*|{}()[]\\/^")).test("TEST\f\b\n\t\r+.$?*|{}()[]\\/^TEST")); + t.assertTrue(new RegExp(dojo.regexp.escapeString("\f\b\n\t\r+.$?*|{}()[]\\/^", ".")).test("TEST\f\b\n\t\r+X$?*|{}()[]\\/^TEST")); + } +); + + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/resources/ApplicationState.js b/js/dojo-release-1.7.2-src/dojo/tests/resources/ApplicationState.js new file mode 100644 index 0000000..109830a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/resources/ApplicationState.js @@ -0,0 +1,28 @@ +/* +ApplicationState is an object that represents the application state. +It will be given to dojo.undo.browser to represent the current application state. +*/ +ApplicationState = function(stateData, outputDivId, backForwardOutputDivId, bookmarkValue){ + this.stateData = stateData; + this.outputDivId = outputDivId; + this.backForwardOutputDivId = backForwardOutputDivId; + this.changeUrl = bookmarkValue; +}; + +ApplicationState.prototype.back = function(){ + this.showBackForwardMessage("BACK for State Data: " + this.stateData); + this.showStateData(); +}; + +ApplicationState.prototype.forward = function(){ + this.showBackForwardMessage("FORWARD for State Data: " + this.stateData); + this.showStateData(); +}; + +ApplicationState.prototype.showStateData = function(){ + dojo.byId(this.outputDivId).innerHTML += this.stateData + '
                            '; +}; + +ApplicationState.prototype.showBackForwardMessage = function(message){ + dojo.byId(this.backForwardOutputDivId).innerHTML += message + '
                            '; +}; diff --git a/js/dojo-release-1.7.2-src/dojo/tests/resources/JSON.php b/js/dojo-release-1.7.2-src/dojo/tests/resources/JSON.php new file mode 100755 index 0000000..e87e4d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/resources/JSON.php @@ -0,0 +1,724 @@ + + * @author Matt Knapp + * @author Brett Stimmerman + * @copyright 2005 Michal Migurski + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + */ + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_SLICE', 1); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_STR', 2); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_ARR', 4); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_OBJ', 8); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_CMT', 16); + +/** + * Behavior switch for Services_JSON::decode() + */ +define('SERVICES_JSON_LOOSE_TYPE', 10); + +/** + * Behavior switch for Services_JSON::decode() + */ +define('SERVICES_JSON_STRICT_TYPE', 11); + +/** + * Converts to and from JSON format. + * + * Brief example of use: + * + * + * // create a new instance of Services_JSON + * $json = new Services_JSON(); + * + * // convert a complexe value to JSON notation, and send it to the browser + * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); + * $output = $json->encode($value); + * + * print($output); + * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] + * + * // accept incoming POST data, assumed to be in JSON notation + * $input = file_get_contents('php://input', 1000000); + * $value = $json->decode($input); + * + */ +class Services_JSON +{ + /** + * constructs a new JSON instance + * + * @param int $use object behavior: when encoding or decoding, + * be loose or strict about object/array usage + * + * possible values: + * - SERVICES_JSON_STRICT_TYPE: strict typing, default. + * "{...}" syntax creates objects in decode(). + * - SERVICES_JSON_LOOSE_TYPE: loose typing. + * "{...}" syntax creates associative arrays in decode(). + */ + function Services_JSON($use = SERVICES_JSON_STRICT_TYPE) + { + $this->use = $use; + } + + /** + * convert a string from one UTF-16 char to one UTF-8 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf16 UTF-16 character + * @return string UTF-8 character + * @access private + */ + function utf162utf8($utf16) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) + return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); + + $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); + + switch(true) { + case ((0x7F & $bytes) == $bytes): + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x7F & $bytes); + + case (0x07FF & $bytes) == $bytes: + // return a 2-byte UTF-8 character + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0xC0 | (($bytes >> 6) & 0x1F)) + . chr(0x80 | ($bytes & 0x3F)); + + case (0xFFFF & $bytes) == $bytes: + // return a 3-byte UTF-8 character + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0xE0 | (($bytes >> 12) & 0x0F)) + . chr(0x80 | (($bytes >> 6) & 0x3F)) + . chr(0x80 | ($bytes & 0x3F)); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * convert a string from one UTF-8 char to one UTF-16 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf8 UTF-8 character + * @return string UTF-16 character + * @access private + */ + function utf82utf16($utf8) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) + return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); + + switch(strlen($utf8)) { + case 1: + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return $utf8; + + case 2: + // return a UTF-16 character from a 2-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x07 & (ord($utf8{0}) >> 2)) + . chr((0xC0 & (ord($utf8{0}) << 6)) + | (0x3F & ord($utf8{1}))); + + case 3: + // return a UTF-16 character from a 3-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr((0xF0 & (ord($utf8{0}) << 4)) + | (0x0F & (ord($utf8{1}) >> 2))) + . chr((0xC0 & (ord($utf8{1}) << 6)) + | (0x7F & ord($utf8{2}))); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to Services_JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return string JSON string representation of input var + * @access public + */ + function encode($var) + { + switch (gettype($var)) { + case 'boolean': + return $var ? 'true' : 'false'; + + case 'NULL': + return 'null'; + + case 'integer': + return (int) $var; + + case 'double': + case 'float': + return (float) $var; + + case 'string': + // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT + $ascii = ''; + $strlen_var = strlen($var); + + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ + for ($c = 0; $c < $strlen_var; ++$c) { + + $ord_var_c = ord($var{$c}); + + switch (true) { + case $ord_var_c == 0x08: + $ascii .= '\b'; + break; + case $ord_var_c == 0x09: + $ascii .= '\t'; + break; + case $ord_var_c == 0x0A: + $ascii .= '\n'; + break; + case $ord_var_c == 0x0C: + $ascii .= '\f'; + break; + case $ord_var_c == 0x0D: + $ascii .= '\r'; + break; + + case $ord_var_c == 0x22: + case $ord_var_c == 0x2F: + case $ord_var_c == 0x5C: + // double quote, slash, slosh + $ascii .= '\\'.$var{$c}; + break; + + case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ascii .= $var{$c}; + break; + + case (($ord_var_c & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, ord($var{$c + 1})); + $c += 1; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2})); + $c += 2; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3})); + $c += 3; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4})); + $c += 4; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4}), + ord($var{$c + 5})); + $c += 5; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + } + } + + return '"'.$ascii.'"'; + + case 'array': + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ + + // treat as a JSON object + if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + return '{' . + join(',', array_map(array($this, 'name_value'), + array_keys($var), + array_values($var))) + . '}'; + } + + // treat it like a regular array + return '[' . join(',', array_map(array($this, 'encode'), $var)) . ']'; + + case 'object': + $vars = get_object_vars($var); + return '{' . + join(',', array_map(array($this, 'name_value'), + array_keys($vars), + array_values($vars))) + . '}'; + + default: + return ''; + } + } + + /** + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + function name_value($name, $value) + { + return $this->encode(strval($name)) . ':' . $this->encode($value); + } + + /** + * reduce a string by removing leading and trailing comments and whitespace + * + * @param $str string string value to strip of comments and whitespace + * + * @return string string value stripped of comments and whitespace + * @access private + */ + function reduce_string($str) + { + $str = preg_replace(array( + + // eliminate single line comments in '// ...' form + '#^\s*//(.+)$#m', + + // eliminate multi-line comments in '/* ... */' form, at start of string + '#^\s*/\*(.+)\*/#Us', + + // eliminate multi-line comments in '/* ... */' form, at end of string + '#/\*(.+)\*/\s*$#Us' + + ), '', $str); + + // eliminate extraneous space + return trim($str); + } + + /** + * decodes a JSON string into appropriate variable + * + * @param string $str JSON-formatted string + * + * @return mixed number, boolean, string, array, or object + * corresponding to given JSON input string. + * See argument 1 to Services_JSON() above for object-output behavior. + * Note that decode() always returns strings + * in ASCII or UTF-8 format! + * @access public + */ + function decode($str) + { + $str = $this->reduce_string($str); + + switch (strtolower($str)) { + case 'true': + return true; + + case 'false': + return false; + + case 'null': + return null; + + default: + if (is_numeric($str)) { + // Lookie-loo, it's a number + + // This would work on its own, but I'm trying to be + // good about returning integers where appropriate: + // return (float)$str; + + // Return float or int, as appropriate + return ((float)$str == (integer)$str) + ? (integer)$str + : (float)$str; + + } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { + // STRINGS RETURNED IN UTF-8 FORMAT + $delim = substr($str, 0, 1); + $chrs = substr($str, 1, -1); + $utf8 = ''; + $strlen_chrs = strlen($chrs); + + for ($c = 0; $c < $strlen_chrs; ++$c) { + + $substr_chrs_c_2 = substr($chrs, $c, 2); + $ord_chrs_c = ord($chrs{$c}); + + switch (true) { + case $substr_chrs_c_2 == '\b': + $utf8 .= chr(0x08); + ++$c; + break; + case $substr_chrs_c_2 == '\t': + $utf8 .= chr(0x09); + ++$c; + break; + case $substr_chrs_c_2 == '\n': + $utf8 .= chr(0x0A); + ++$c; + break; + case $substr_chrs_c_2 == '\f': + $utf8 .= chr(0x0C); + ++$c; + break; + case $substr_chrs_c_2 == '\r': + $utf8 .= chr(0x0D); + ++$c; + break; + + case $substr_chrs_c_2 == '\\"': + case $substr_chrs_c_2 == '\\\'': + case $substr_chrs_c_2 == '\\\\': + case $substr_chrs_c_2 == '\\/': + if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || + ($delim == "'" && $substr_chrs_c_2 != '\\"')) { + $utf8 .= $chrs{++$c}; + } + break; + + case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)): + // single, escaped unicode character + $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2))) + . chr(hexdec(substr($chrs, ($c + 4), 2))); + $utf8 .= $this->utf162utf8($utf16); + $c += 5; + break; + + case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): + $utf8 .= $chrs{$c}; + break; + + case ($ord_chrs_c & 0xE0) == 0xC0: + // characters U-00000080 - U-000007FF, mask 110XXXXX + //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 2); + ++$c; + break; + + case ($ord_chrs_c & 0xF0) == 0xE0: + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 3); + $c += 2; + break; + + case ($ord_chrs_c & 0xF8) == 0xF0: + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 4); + $c += 3; + break; + + case ($ord_chrs_c & 0xFC) == 0xF8: + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 5); + $c += 4; + break; + + case ($ord_chrs_c & 0xFE) == 0xFC: + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 6); + $c += 5; + break; + + } + + } + + return $utf8; + + } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { + // array, or object notation + + if ($str{0} == '[') { + $stk = array(SERVICES_JSON_IN_ARR); + $arr = array(); + } else { + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $stk = array(SERVICES_JSON_IN_OBJ); + $obj = array(); + } else { + $stk = array(SERVICES_JSON_IN_OBJ); + $obj = new stdClass(); + } + } + + array_push($stk, array('what' => SERVICES_JSON_SLICE, + 'where' => 0, + 'delim' => false)); + + $chrs = substr($str, 1, -1); + $chrs = $this->reduce_string($chrs); + + if ($chrs == '') { + if (reset($stk) == SERVICES_JSON_IN_ARR) { + return $arr; + + } else { + return $obj; + + } + } + + //print("\nparsing {$chrs}\n"); + + $strlen_chrs = strlen($chrs); + + for ($c = 0; $c <= $strlen_chrs; ++$c) { + + $top = end($stk); + $substr_chrs_c_2 = substr($chrs, $c, 2); + + if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) { + // found a comma that is not inside a string, array, etc., + // OR we've reached the end of the character list + $slice = substr($chrs, $top['where'], ($c - $top['where'])); + array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); + //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + if (reset($stk) == SERVICES_JSON_IN_ARR) { + // we are in an array, so just push an element onto the stack + array_push($arr, $this->decode($slice)); + + } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { + // we are in an object, so figure + // out the property name and set an + // element in an associative array, + // for now + if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { + // "name":value pair + $key = $this->decode($parts[1]); + $val = $this->decode($parts[2]); + + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $obj[$key] = $val; + } else { + $obj->$key = $val; + } + } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { + // name:value pair, where name is unquoted + $key = $parts[1]; + $val = $this->decode($parts[2]); + + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $obj[$key] = $val; + } else { + $obj->$key = $val; + } + } + + } + + } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) { + // found a quote, and we are not inside a string + array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); + //print("Found start of string at {$c}\n"); + + } elseif (($chrs{$c} == $top['delim']) && + ($top['what'] == SERVICES_JSON_IN_STR) && + (($chrs{$c - 1} != '\\') || + ($chrs{$c - 1} == '\\' && $chrs{$c - 2} == '\\'))) { + // found a quote, we're in a string, and it's not escaped + array_pop($stk); + //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); + + } elseif (($chrs{$c} == '[') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a left-bracket, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false)); + //print("Found start of array at {$c}\n"); + + } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) { + // found a right-bracket, and we're in an array + array_pop($stk); + //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } elseif (($chrs{$c} == '{') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a left-brace, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); + //print("Found start of object at {$c}\n"); + + } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) { + // found a right-brace, and we're in an object + array_pop($stk); + //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } elseif (($substr_chrs_c_2 == '/*') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a comment start, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false)); + $c++; + //print("Found start of comment at {$c}\n"); + + } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) { + // found a comment end, and we're in one now + array_pop($stk); + $c++; + + for ($i = $top['where']; $i <= $c; ++$i) + $chrs = substr_replace($chrs, ' ', $i, 1); + + //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } + + } + + if (reset($stk) == SERVICES_JSON_IN_ARR) { + return $arr; + + } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { + return $obj; + + } + + } + } + } + +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/resources/testClass.php b/js/dojo-release-1.7.2-src/dojo/tests/resources/testClass.php new file mode 100755 index 0000000..acf7f16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/resources/testClass.php @@ -0,0 +1,20 @@ +" . $somestring . "

                            "; + } + + function contentB () { + return "

                            Content B

                            "; + } + + function contentC () { + return "

                            Content C

                            "; + } + + function add($x,$y) { + return $x + $y; + } +} +?> diff --git a/js/dojo-release-1.7.2-src/dojo/tests/resources/testClass.smd b/js/dojo-release-1.7.2-src/dojo/tests/resources/testClass.smd new file mode 100755 index 0000000..85f4794 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/resources/testClass.smd @@ -0,0 +1,39 @@ +{ + "SMDVersion":".1", + "objectName":"testClass", + "serviceType":"JSON-RPC", + "serviceURL":"../../dojo/tests/resources/test_JsonRPCMediator.php", + "methods":[ + { + "name":"myecho", + "parameters":[ + { + "name":"somestring", + "type":"STRING" + } + ] + }, + { + "name":"contentB" + }, + { + "name":"contentC" + }, + { + "name":"add", + "parameters":[ + { + "name":"x", + "type":"STRING" + }, + { + "name":"y", + "type":"STRING" + } + ] + }, + { + "name":"triggerRpcError" + } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/resources/test_JsonRPCMediator.php b/js/dojo-release-1.7.2-src/dojo/tests/resources/test_JsonRPCMediator.php new file mode 100755 index 0000000..42a9711 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/resources/test_JsonRPCMediator.php @@ -0,0 +1,43 @@ + sudo pear install File + // Your server will also need the Pear library directory included in PHP's + // include_path configuration directive + // require_once('File.php'); + + // ensure that we don't try to send "html" down to the client + header("Content-Type: text/plain"); + + $json = new Services_JSON; + //$fp = new File(); + + $results = array(); + $results['error'] = null; + + $jsonRequest = file_get_contents('php://input'); + //$jsonRequest = '{"params":["Blah"],"method":"myecho","id":86}'; + + $req = $json->decode($jsonRequest); + + include("./testClass.php"); + $testObject = new testClass(); + + $method = $req->method; + if ($method != "triggerRpcError") { + $ret = call_user_func_array(array($testObject,$method),$req->params); + $results['result'] = $ret; + } else { + $results['error'] = "Triggered RPC Error test"; + } + $results['id'] = $req->id; + + $encoded = $json->encode($results); + + print $encoded; +?> diff --git a/js/dojo-release-1.7.2-src/dojo/tests/resources/test_css.html b/js/dojo-release-1.7.2-src/dojo/tests/resources/test_css.html new file mode 100644 index 0000000..c9cf333 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/resources/test_css.html @@ -0,0 +1,100 @@ + + + Dojo CSS Stylesheet Test + + + +

                            Lorem ipsum dolor sit amet.

                            +

                            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend sagittis turpis. Nullam consequat iaculis augue. Aliquam pellentesque egestas massa. Curabitur pulvinar, enim vel porta dapibus, ligula lectus vulputate purus, eu tempus ante dolor id quam. Sed luctus fermentum nulla. Donec sollicitudin imperdiet risus. Cras cursus, sapien ac faucibus feugiat, ligula felis laoreet justo, eu sollicitudin purus purus in nibh. Phasellus in nunc.

                            + Donec eu nunc vitae lorem egestas convallis var test=null; Nullam at enim id mauris vestibulum ornare. Cras facilisis tellus at risus. Phasellus ut pede at erat posuere vehicula. Donec auctor sodales risus. Maecenas dictum erat at justo. Nullam fringilla dictum orci. Ut vitae erat. Fusce nunc. Duis quis orci. Morbi faucibus. Ut fermentum augue ac nulla. Duis cursus eleifend felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris tincidunt, justo quis venenatis congue, nisi purus dignissim nisi, ullamcorper tempus dolor nulla at metus. +

                            Donec eu nunc vitae lorem.

                            +

                            Donec eu nunc vitae lorem egestas convallis. Nullam at enim id mauris vestibulum ornare. Cras facilisis tellus at risus. Phasellus ut pede at erat posuere vehicula. Donec auctor sodales risus. Maecenas dictum erat at justo. Nullam fringilla dictum orci. Ut vitae erat. Fusce nunc. Duis quis orci. Morbi faucibus. Ut fermentum augue ac nulla. Duis cursus eleifend felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris tincidunt, justo quis venenatis congue, nisi purus dignissim nisi, ullamcorper tempus dolor nulla at metus.

                            +

                            Vestibulum ultricies bibendum tortor. Nam auctor dignissim neque. Cras vehicula. Nulla facilisi. Duis quis tellus in est aliquet condimentum. Sed elementum, felis vel pharetra bibendum, neque lorem pulvinar nulla, consequat tempor libero enim vel nulla. Nulla eleifend, lorem accumsan convallis lobortis, diam dui eleifend urna, eu imperdiet purus urna nec nibh. Nullam pede odio, molestie eu, interdum sagittis, imperdiet ac, lectus. Sed pede nisl, vulputate at, pellentesque id, consectetuer ac, elit. Duis laoreet, elit sed tempus vehicula, lacus orci pulvinar nibh, non malesuada ante mi in enim. Etiam pulvinar, sapien ut vulputate venenatis, risus lectus sollicitudin sapien, in dapibus felis ligula congue ante. Vivamus sit amet ligula. Morbi pharetra augue egestas massa. Sed a ligula. In ac mi id nibh semper accumsan. Nunc luctus nibh vel magna. Nunc viverra nonummy tortor. Curabitur interdum convallis dui. Integer mollis hendrerit elit. Nam a lorem.

                            +
                              +
                            1. A List item.
                            2. +
                            3. A List item.
                            4. +
                            5. A List item.
                            6. +
                            7. A List item.
                            8. +
                            9. A List item.
                            10. +
                            11. A List item.
                            12. +
                            +

                            Cras pellentesque

                            +

                            Aliquam dapibus

                            +
                            +var test = someVariable;
                            +function foo(bar){
                            +	alert(baz);
                            +} 
                            +

                            Cras pellentesque tristique lorem. Aliquam dapibus, massa id posuere volutpat, sem sem nonummy turpis, ut ultricies nibh neque sed dolor. Duis commodo elit et massa. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed eu urna. Donec sit amet odio sit amet turpis facilisis molestie. In id mi. Nulla consequat ante ut elit. In risus urna, venenatis imperdiet, consequat vel, porttitor et, quam. In hac habitasse platea dictumst. Vestibulum id velit. Donec a eros. Donec quis quam at pede aliquet porta. Donec id ligula mollis turpis pulvinar dapibus. Praesent imperdiet, justo pulvinar accumsan scelerisque, lacus felis bibendum justo, id posuere augue libero eu velit.

                            +

                            An unstyled table.

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            FooBarBaz
                            bazfoobar
                            barbazfoo
                            foobarbaz
                            FooBarBaz
                            +

                            The same table, styled with dojoTabular.

                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            FooBarBaz
                            bazfoobar
                            barbazfoo
                            foobarbaz
                            FooBarBaz
                            +
                            Donec eu nunc vitae lorem egestas convallis. Nullam at enim id mauris vestibulum ornare. Cras facilisis tellus at risus. Phasellus ut pede at erat posuere vehicula. Donec auctor sodales risus. Maecenas dictum erat at justo. Nullam fringilla dictum orci. Ut vitae erat. Fusce nunc. Duis quis orci. Morbi faucibus. Ut fermentum augue ac nulla. Duis cursus eleifend felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris tincidunt, justo quis venenatis congue, nisi purus dignissim nisi, ullamcorper tempus dolor nulla at metus.
                            +

                            Phasellus quis velit. Curabitur porta dolor in arcu. Maecenas mollis purus. Donec nec erat et tellus laoreet elementum. Pellentesque vitae mi. Aenean pharetra libero ultricies augue. Vestibulum et nibh. Proin nibh quam, rutrum faucibus, auctor eget, mollis vel, orci. Duis tortor quam, tincidunt eu, lacinia id, fermentum at, turpis. Mauris at augue. Nulla facilisi. Pellentesque ut enim.

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/resources/yahoo_smd_v1.smd b/js/dojo-release-1.7.2-src/dojo/tests/resources/yahoo_smd_v1.smd new file mode 100755 index 0000000..a22241b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/resources/yahoo_smd_v1.smd @@ -0,0 +1,268 @@ +{ + "SMDVersion":".1", + "objectName":"yahoo", + "serviceType":"JSON-P", + "required": { + "appid": "dojotoolkit", + "output": "json" + }, + "methods":[ + // + // MAPS + // + { + // http://developer.yahoo.com/maps/rest/V1/mapImage.html + "name":"mapImage", + "serviceURL": "http://api.local.yahoo.com/MapsService/V1/mapImage", + "parameters":[ + { "name":"street", "type":"STRING" }, + { "name":"city", "type":"STRING" }, + { "name":"zip", "type":"INTEGER" }, + { "name":"location", "type":"STRING" }, + { "name":"longitude", "type":"FLOAT" }, + { "name":"latitude", "type":"FLOAT" }, + { "name":"image_type", "type":"STRING" }, + { "name":"image_width", "type":"INTEGER" }, + { "name":"image_height", "type":"INTEGER" }, + { "name":"zoom", "type":"INTEGER" }, + { "name":"radius", "type":"INTEGER" } + ] + }, + { + // http://developer.yahoo.com/traffic/rest/V1/index.html + "name":"trafficData", + "serviceURL": "http://api.local.yahoo.com/MapsService/V1/trafficData", + "parameters":[ + { "name":"street", "type":"STRING" }, + { "name":"city", "type":"STRING" }, + { "name":"zip", "type":"INTEGER" }, + { "name":"location", "type":"STRING" }, + { "name":"longitude", "type":"FLOAT" }, + { "name":"latitude", "type":"FLOAT" }, + { "name":"severity", "type":"INTEGER" }, + { "name":"include_map", "type":"INTEGER" }, + { "name":"image_type", "type":"STRING" }, + { "name":"image_width", "type":"INTEGER" }, + { "name":"image_height", "type":"INTEGER" }, + { "name":"zoom", "type":"INTEGER" }, + { "name":"radius", "type":"INTEGER" } + ] + }, + // + // LOCAL SEARCH + // + { + // http://developer.yahoo.com/search/local/V3/localSearch.html + "name":"localSearch", + "serviceURL": "http://api.local.yahoo.com/LocalSearchService/V3/localSearch", + "parameters":[ + { "name":"street", "type":"STRING" }, + { "name":"city", "type":"STRING" }, + { "name":"zip", "type":"INTEGER" }, + { "name":"location", "type":"STRING" }, + { "name":"listing_id", "type":"STRING" }, + { "name":"sort", "type":"STRING" }, // "relevence", "title", "distance", or "rating" + { "name":"start", "type":"INTEGER" }, + { "name":"radius", "type":"FLOAT" }, + { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10 + { "name":"longitude", "type":"FLOAT" }, + { "name":"latitude", "type":"FLOAT" }, + { "name":"category", "type":"INTEGER" }, + { "name":"omit_category", "type":"INTEGER" }, + { "name":"minimum_rating", "type":"INTEGER" } + ] + }, + // + // WEB SEARCH + // + { + // http://developer.yahoo.com/search/web/V1/webSearch.html + "name":"webSearch", + "serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/webSearch", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // defaults to "all" + { "name":"region", "type":"STRING" }, // defaults to "us" + { "name":"results", "type":"INTEGER" }, // defaults to 10 + { "name":"start", "type":"INTEGER" }, // defaults to 1 + { "name":"format", "type":"STRING" }, // defaults to "any", can be "html", "msword", "pdf", "ppt", "rst", "txt", or "xls" + { "name":"adult_ok", "type":"INTEGER" }, // defaults to null + { "name":"similar_ok", "type":"INTEGER" }, // defaults to null + { "name":"language", "type":"STRING" }, // defaults to null + { "name":"country", "type":"STRING" }, // defaults to null + { "name":"site", "type":"STRING" }, // defaults to null + { "name":"subscription", "type":"STRING" }, // defaults to null + { "name":"license", "type":"STRING" } // defaults to "any" + ] + }, + { + // http://developer.yahoo.com/search/web/V1/spellingSuggestion.html + "name":"spellingSuggestion", + "serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/spellingSuggestion", + "parameters":[ { "name":"query", "type":"STRING" } ] + }, + { + // http://developer.yahoo.com/search/web/V1/relatedSuggestion.html + "name":"relatedSuggestion", + "serviceURL": "http://api.search.yahoo.com/WebSearchService/V1/relatedSuggestion", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"results", "type":"INTEGER" } // 1-50, defaults to 10 + ] + }, + { + // http://developer.yahoo.com/search/content/V1/termExtraction.html + "name":"termExtraction", + "serviceURL": "http://search.yahooapis.com/ContentAnalysisService/V1/termExtraction", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"context", "type":"STRING" }, + { "name":"results", "type":"INTEGER" } // 1-50, defaults to 10 + ] + }, + { + // http://developer.yahoo.com/search/web/V1/contextSearch.html + "name":"contextSearch", + "serviceURL": "http://search.yahooapis.com/WebSearchService/V1/contextSearch", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"context", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // defaults to "all" + { "name":"results", "type":"INTEGER" }, // defaults to 10 + { "name":"start", "type":"INTEGER" }, // defaults to 1 + { "name":"format", "type":"STRING" }, // defaults to "any", can be "html", "msword", "pdf", "ppt", "rst", "txt", or "xls" + { "name":"adult_ok", "type":"INTEGER" }, // defaults to null + { "name":"similar_ok", "type":"INTEGER" }, // defaults to null + { "name":"language", "type":"STRING" }, // defaults to null + { "name":"country", "type":"STRING" }, // defaults to null + { "name":"site", "type":"STRING" }, // defaults to null + { "name":"license", "type":"STRING" } // defaults to "any", could be "cc_any", "cc_commercial", "cc_modifiable" + ] + }, + // + // IMAGE SEARCH + // + { + // http://developer.yahoo.com/search/image/V1/imageSearch.html + "name":"imageSearch", + "serviceURL": "http://api.search.yahoo.com/ImageSearchService/V1/imageSearch", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase" + { "name":"results", "type":"INTEGER" }, // defaults to 10 + { "name":"start", "type":"INTEGER" }, // defaults to 1 + { "name":"format", "type":"STRING" }, // defaults to "any", can be "bmp", "gif", "jpeg", or "png" + { "name":"adult_ok", "type":"INTEGER" }, // defaults to null + { "name":"coloration", "type":"STRING" }, // "any", "color", or "bw" + { "name":"site", "type":"STRING" } // defaults to null + ] + }, + // + // SITE EXPLORER + // + { + // http://developer.yahoo.com/search/siteexplorer/V1/inlinkData.html + "name":"inlinkData", + "serviceURL": "http://api.search.yahoo.com/SiteExplorerService/V1/inlinkData", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase" + { "name":"entire_site", "type":"INTEGER" }, // defaults to null + { "name":"omit_inlinks", "type":"STRING" }, // "domain" or "subdomain", defaults to null + { "name":"results", "type":"INTEGER" }, // defaults to 50 + { "name":"start", "type":"INTEGER" }, // defaults to 1 + { "name":"site", "type":"STRING" } // defaults to null + ] + }, + { + // http://developer.yahoo.com/search/siteexplorer/V1/pageData.html + "name":"pageData", + "serviceURL": "http://api.search.yahoo.com/SiteExplorerService/V1/pageData", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // defaults to "all", can by "any" or "phrase" + { "name":"domain_only", "type":"INTEGER" }, // defaults to null + { "name":"results", "type":"INTEGER" }, // defaults to 50 + { "name":"start", "type":"INTEGER" }, // defaults to 1 + { "name":"site", "type":"STRING" } // defaults to null + ] + }, + // + // MUSIC SEARCH + // + { + // http://developer.yahoo.com/search/audio/V1/artistSearch.html + "name":"artistSearch", + "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/artistSearch", + "parameters":[ + { "name":"artist", "type":"STRING" }, + { "name":"artistid", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // "all", "any", or "phrase" + { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10 + { "name":"start", "type":"INTEGER" } // defaults to 1 + ] + }, + { + // http://developer.yahoo.com/search/audio/V1/albumSearch.html + "name":"albumSearch", + "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/albumSearch", + "parameters":[ + { "name":"artist", "type":"STRING" }, + { "name":"artistid", "type":"STRING" }, + { "name":"album", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // "all", "any", or "phrase" + { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10 + { "name":"start", "type":"INTEGER" } // defaults to 1 + ] + }, + { + // http://developer.yahoo.com/search/audio/V1/songSearch.html + "name":"songSearch", + "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/songSearch", + "parameters":[ + { "name":"artist", "type":"STRING" }, + { "name":"artistid", "type":"STRING" }, + { "name":"album", "type":"STRING" }, + { "name":"albumid", "type":"STRING" }, + { "name":"song", "type":"STRING" }, + { "name":"songid", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // "all", "any", or "phrase" + { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10 + { "name":"start", "type":"INTEGER" } // defaults to 1 + ] + }, + { + // http://developer.yahoo.com/search/audio/V1/songDownloadLocation.html + "name":"songDownloadLocation", + "serviceURL": "http://api.search.yahoo.com/AudioSearchService/V1/songDownloadLocation", + "parameters":[ + { "name":"songid", "type":"STRING" }, + // "source" can contain: + // audiolunchbox artistdirect buymusic dmusic + // emusic epitonic garageband itunes yahoo + // livedownloads mp34u msn musicmatch mapster passalong + // rhapsody soundclick theweb + { "name":"source", "type":"STRING" }, + { "name":"results", "type":"INTEGER" }, // 1-50, defaults to 10 + { "name":"start", "type":"INTEGER" } // defaults to 1 + ] + }, + // + // NEWS SEARCH + // + { + // http://developer.yahoo.com/search/news/V1/newsSearch.html + "name":"newsSearch", + "serviceURL": "http://api.search.yahoo.com/NewsSearchService/V1/newsSearch", + "parameters":[ + { "name":"query", "type":"STRING" }, + { "name":"type", "type":"STRING" }, // defaults to "all" + { "name":"results", "type":"INTEGER" }, // defaults to 10 + { "name":"start", "type":"INTEGER" }, // defaults to 1 + { "name":"sort", "type":"STRING" }, // "rank" or "date" + { "name":"language", "type":"STRING" }, // defaults to null + { "name":"site", "type":"STRING" } // defaults to null + ] + } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/rpc.js b/js/dojo-release-1.7.2-src/dojo/tests/rpc.js new file mode 100644 index 0000000..ef6e477 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/rpc.js @@ -0,0 +1,140 @@ +define(["../main", "doh", "require", "../rpc/RpcService", "../rpc/JsonService", "../rpc/JsonpService"], function(dojo, doh, require){ + + doh.register("tests.rpc", [ + { + name: "JsonRPC-EchoTest", + timeout: 2000, + setUp: function(){ + + var testSmd = { + serviceURL:"../../dojo/tests/resources/test_JsonRPCMediator.php", + methods:[ + { + name:"myecho", + parameters:[ + { + name:"somestring", + type:"STRING" + } + ] + } + ] + }; + + this.svc = new dojo.rpc.JsonService(testSmd); + }, + runTest: function(){ + var d = new doh.Deferred(); + var td = this.svc.myecho("RPC TEST"); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and PHP and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + td.addCallbacks(function(result) { + if(result=="

                            RPC TEST

                            "){ + return true; + }else{ + return new Error("JsonRpc-EchoTest test failed, resultant content didn't match"); + } + }, function(result){ + return new Error(result); + }); + + td.addBoth(d, "callback"); + + return d; + } + + }, + + { + name: "JsonRPC-EmptyParamTest", + timeout: 2000, + setUp: function(){ + var testSmd={ + serviceURL:"../../dojo/tests/resources/test_JsonRPCMediator.php", + methods:[ { name:"contentB" } ] + }; + + this.svc = new dojo.rpc.JsonService(testSmd); + }, + runTest: function(){ + var d = new doh.Deferred(); + var td = this.svc.contentB(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and PHP and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + td.addCallbacks(function(result){ + if(result=="

                            Content B

                            "){ + return true; + }else{ + return new Error("JsonRpc-EmpytParamTest test failed, resultant content didn't match"); + } + }, function(result){ + return new Error(result); + }); + + td.addBoth(d, "callback"); + + return d; + } + }, + + { + name: "JsonRPC_SMD_Loading_test", + setUp: function(){ + this.svc = new dojo.rpc.JsonService("../../dojo/tests/resources/testClass.smd"); + }, + runTest: function(){ + + if (this.svc.objectName=="testClass") { + return true; + } else { + return new Error("Error loading and/or parsing an smd file"); + } + } + }, + + { + name: "JsonP_test", + timeout: 10000, + setUp: function(){ + this.svc = new dojo.rpc.JsonpService(require.toUrl("dojo/tests/resources/yahoo_smd_v1.smd"), {appid: "foo"}); + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + var td = this.svc.webSearch({query:"dojotoolkit"}); + + td.addCallbacks(function(result){ + return true; + if (result["ResultSet"]["Result"][0]["DisplayUrl"]=="dojotoolkit.org/") { + return true; + }else{ + return new Error("JsonRpc_SMD_Loading_Test failed, resultant content didn't match"); + } + }, function(result){ + return new Error(result); + }); + + td.addBoth(d, "callback"); + + return d; + } + } + ]); + +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/runTests.html b/js/dojo-release-1.7.2-src/dojo/tests/runTests.html new file mode 100644 index 0000000..a51d1a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojo CORE and BASE D.O.H. Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/smoke-dojo-sie.html b/js/dojo-release-1.7.2-src/dojo/tests/smoke-dojo-sie.html new file mode 100644 index 0000000..5649141 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/smoke-dojo-sie.html @@ -0,0 +1,11 @@ + + + + Minimum Dojo Application + + + +

                            hello, world

                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store.js b/js/dojo-release-1.7.2-src/dojo/tests/store.js new file mode 100644 index 0000000..b5f23d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store.js @@ -0,0 +1,8 @@ +define([ + "dojo/tests/store/Memory", + "dojo/tests/store/DataStore", + "dojo/tests/store/Observable", + "dojo/tests/store/Cache", + "dojo/has!host-browser?dojo/tests/store/JsonRest"], 1); + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/Cache.js b/js/dojo-release-1.7.2-src/dojo/tests/store/Cache.js new file mode 100644 index 0000000..1b2c0ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/Cache.js @@ -0,0 +1,83 @@ +dojo.provide("dojo.tests.store.Cache"); +dojo.require("dojo.store.Memory"); +dojo.require("dojo.store.Cache"); +(function(){ + var masterStore = new dojo.store.Memory({ + data: [ + {id: 1, name: "one", prime: false}, + {id: 2, name: "two", even: true, prime: true}, + {id: 3, name: "three", prime: true}, + {id: 4, name: "four", even: true, prime: false}, + {id: 5, name: "five", prime: true} + ] + }); + var cachingStore = new dojo.store.Memory(); + var options = {}; + var store = dojo.store.Cache(masterStore, cachingStore, options); + tests.register("dojo.tests.store.Cache", + [ + function testGet(t){ + t.is(store.get(1).name, "one"); + t.is(cachingStore.get(1).name, "one"); // second one should be cached + t.is(store.get(1).name, "one"); + t.is(store.get(4).name, "four"); + t.is(cachingStore.get(4).name, "four"); + t.is(store.get(4).name, "four"); + }, + function testQuery(t){ + options.isLoaded = function(){ return false;}; + t.is(store.query({prime: true}).length, 3); + t.is(store.query({even: true})[1].name, "four"); + t.is(cachingStore.get(3), undefined); + options.isLoaded = function(){ return true;}; + t.is(store.query({prime: true}).length, 3); + t.is(cachingStore.get(3).name, "three"); + }, + function testQueryWithSort(t){ + t.is(store.query({prime: true}, {sort:[{attribute:"name"}]}).length, 3); + t.is(store.query({even: true}, {sort:[{attribute:"name"}]})[1].name, "two"); + }, + function testPutUpdate(t){ + var four = store.get(4); + four.square = true; + store.put(four); + four = store.get(4); + t.t(four.square); + four = cachingStore.get(4); + t.t(four.square); + four = masterStore.get(4); + t.t(four.square); + }, + function testPutNew(t){ + store.put({ + id: 6, + perfect: true + }); + t.t(store.get(6).perfect); + t.t(cachingStore.get(6).perfect); + t.t(masterStore.get(6).perfect); + }, + function testAddDuplicate(t){ + var threw; + try{ + store.add({ + id: 6, + perfect: true + }); + }catch(e){ + threw = true; + } + t.t(threw); + }, + function testAddNew(t){ + store.add({ + id: 7, + prime: true + }); + t.t(store.get(7).prime); + t.t(cachingStore.get(7).prime); + t.t(masterStore.get(7).prime); + } + ] + ); +})(); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/DataStore.js b/js/dojo-release-1.7.2-src/dojo/tests/store/DataStore.js new file mode 100644 index 0000000..fc0ec85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/DataStore.js @@ -0,0 +1,68 @@ +dojo.provide("dojo.tests.store.DataStore"); +dojo.require("dojo.store.DataStore"); +dojo.require("dojo.data.ItemFileWriteStore"); +var temp = function(){ + var two = {id: 2, name: "two", even: true, prime: true}, + four = {id: 4, name: "four", even: true, prime: false}; + + var dataStore = new dojo.data.ItemFileWriteStore({data:{ + items: [ + {id: 1, name: "one", prime: false}, + {id: 2, name: "two", even: true, prime: true}, + {id: 3, name: "three", prime: true}, + {id: 4, name: "four", even: true, prime: false}, + {id: 5, name: "five", prime: true} + ], + identifier:"id" + }}); + dataStore.fetchItemByIdentity({identity:null}); + var store = new dojo.store.DataStore({store:dataStore}); + tests.register("dojo.tests.store.DataStore", + [ + function testGet(t){ + t.is(store.get(1).name, "one"); + t.is(store.get(4).name, "four"); + t.t(store.get(5).prime); + }, + function testQuery1(t){ + var d = new doh.Deferred(); + store.query({prime: true}).then(d.getTestCallback(function(results){ + t.is(results.length, 3); + })); + return d; + }, + function testQuery2(t){ + var d = new doh.Deferred(); + var result = store.query({even: true}); + result.map(d.getTestErrback(function(object){ + for(var i in object){ + t.is(object[i], (object.id == 2 ? two : four)[i], "map of " + i); + } + })); + result.then(d.getTestCallback(function(results){ + t.is("four", results[1].name, "then"); + })); + return d; + }, + function testPutUpdate(t){ + var four = store.get(4); + four.square = true; + store.put(four); + four = store.get(4); + t.t(four.square); + }, + function testPutNew(t){ + store.put({ + id: 6, + perfect: true + }); + t.t(store.get(6).perfect); + }, + function testNoWriteFeature(t){ + var readOnlyStore = new dojo.store.DataStore({store:new dojo.data.ItemFileReadStore({})}); + t.f(readOnlyStore.put); + } + ] + ); +}; +temp(); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/JsonRest.js b/js/dojo-release-1.7.2-src/dojo/tests/store/JsonRest.js new file mode 100644 index 0000000..c9e41e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/JsonRest.js @@ -0,0 +1,38 @@ +define(["dojo", "doh", "require", "dojo/store/JsonRest"], function(dojo, doh, require){ + var store = new dojo.store.JsonRest({target: require.toUrl("dojo/tests/store/x.y").match(/(.+)x\.y$/)[1]}); + doh.register("tests.store.JsonRest", + [ + function testGet(t){ + var d = new doh.Deferred(); + store.get("node1.1").then(function(object){ + t.is(object.name, "node1.1"); + t.is(object.someProperty, "somePropertyA1"); + d.callback(true); + }); + return d; + }, + function testQuery(t){ + var d = new doh.Deferred(); + store.query("treeTestRoot").then(function(results){ + var object = results[0]; + t.is(object.name, "node1"); + t.is(object.someProperty, "somePropertyA"); + d.callback(true); + }); + return d; + }, + function testQueryIterative(t){ + var d = new doh.Deferred(); + var i = 0; + store.query("treeTestRoot").forEach(function(object){ + i++; + console.log(i); + t.is(object.name, "node" + i); + }).then(function(){ + d.callback(true); + }); + return d; + } + ] + ); +}); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/Memory.js b/js/dojo-release-1.7.2-src/dojo/tests/store/Memory.js new file mode 100644 index 0000000..edf8081 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/Memory.js @@ -0,0 +1,104 @@ +dojo.provide("dojo.tests.store.Memory"); +dojo.require("dojo.store.Memory"); +(function(){ + var store = new dojo.store.Memory({ + data: [ + {id: 1, name: "one", prime: false}, + {id: 2, name: "two", even: true, prime: true}, + {id: 3, name: "three", prime: true}, + {id: 4, name: "four", even: true, prime: false}, + {id: 5, name: "five", prime: true} + ] + }); + tests.register("dojo.tests.store.Memory", + [ + function testGet(t){ + t.is(store.get(1).name, "one"); + t.is(store.get(4).name, "four"); + t.t(store.get(5).prime); + }, + function testQuery(t){ + t.is(store.query({prime: true}).length, 3); + t.is(store.query({even: true})[1].name, "four"); + }, + function testQueryWithString(t){ + t.is(store.query({name: "two"}).length, 1); + t.is(store.query({name: "two"})[0].name, "two"); + }, + function testQueryWithRegExp(t){ + t.is(store.query({name: /^t/}).length, 2); + t.is(store.query({name: /^t/})[1].name, "three"); + t.is(store.query({name: /^o/}).length, 1); + t.is(store.query({name: /o/}).length, 3); + }, + function testQueryWithSort(t){ + t.is(store.query({prime: true}, {sort:[{attribute:"name"}]}).length, 3); + t.is(store.query({even: true}, {sort:[{attribute:"name"}]})[1].name, "two"); + }, + function testQueryWithPaging(t){ + t.is(store.query({prime: true}, {start: 1, count: 1}).length, 1); + t.is(store.query({even: true}, {start: 1, count: 1})[0].name, "four"); + }, + function testPutUpdate(t){ + var four = store.get(4); + four.square = true; + store.put(four); + four = store.get(4); + t.t(four.square); + }, + function testPutNew(t){ + store.put({ + id: 6, + perfect: true + }); + t.t(store.get(6).perfect); + }, + function testAddDuplicate(t){ + var threw; + try{ + store.add({ + id: 6, + perfect: true + }); + }catch(e){ + threw = true; + } + t.t(threw); + }, + function testAddNew(t){ + store.add({ + id: 7, + prime: true + }); + t.t(store.get(7).prime); + }, + function testRemove(t){ + t.t(store.remove(7)); + t.is(store.get(7), undefined); + }, + function testRemoveMissing(t){ + t.f(store.remove(77)); + // make sure nothing changed + t.is(store.get(1).id, 1); + }, + function testQueryAfterChanges(t){ + t.is(store.query({prime: true}).length, 3); + t.is(store.query({perfect: true}).length, 1); + }, + function testIFRSStyleData(t){ + var anotherStore = new dojo.store.Memory({ + data: { + items:[ + {name: "one", prime: false}, + {name: "two", even: true, prime: true}, + {name: "three", prime: true} + ], + identifier: "name" + } + }); + t.is(anotherStore.get("one").name,"one"); + t.is(anotherStore.query({name:"one"})[0].name,"one"); + } + ] + ); +})(); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/Observable.js b/js/dojo-release-1.7.2-src/dojo/tests/store/Observable.js new file mode 100644 index 0000000..f607d71 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/Observable.js @@ -0,0 +1,105 @@ +dojo.provide("dojo.tests.store.Observable"); +dojo.require("dojo.store.Memory"); +dojo.require("dojo.store.Observable"); +(function(){ + var store = dojo.store.Observable(new dojo.store.Memory({ + data: [ + {id: 0, name: "zero", even: true, prime: false}, + {id: 1, name: "one", prime: false}, + {id: 2, name: "two", even: true, prime: true}, + {id: 3, name: "three", prime: true}, + {id: 4, name: "four", even: true, prime: false}, + {id: 5, name: "five", prime: true} + ] + })); + tests.register("dojo.tests.store.Observable", + [ + function testGet(t){ + t.is(store.get(1).name, "one"); + t.is(store.get(4).name, "four"); + t.t(store.get(5).prime); + }, + function testQuery(t){ + var results = store.query({prime: true}); + t.is(results.length, 3); + var changes = [], secondChanges = []; + var observer = results.observe(function(object, previousIndex, newIndex){ + changes.push({previousIndex:previousIndex, newIndex:newIndex, object:object}); + }); + var secondObserver = results.observe(function(object, previousIndex, newIndex){ + secondChanges.push({previousIndex:previousIndex, newIndex:newIndex, object:object}); + }); + var expectedChanges = []; + var two = results[0]; + two.prime = false; + store.put(two); // should remove it from the array + t.is(results.length, 2); + expectedChanges.push({ + previousIndex: 0, + newIndex: -1, + object:{ + id: 2, + name: "two", + even: true, + prime: false + } + }); + secondObserver.cancel(); + var one = store.get(1); + one.prime = true; + store.put(one); // should add it + expectedChanges.push({ + previousIndex: -1, + "newIndex":2, + object:{ + id: 1, + name: "one", + prime: true + } + }); + t.is(results.length, 3); + store.add({// shouldn't be added + id:6, name:"six" + }); + t.is(results.length, 3); + store.add({// should be added + id:7, name:"seven", prime:true + }); + t.is(results.length, 4); + + expectedChanges.push({ + previousIndex: -1, + "newIndex":3, + "object":{ + id:7, name:"seven", prime:true + } + }); + store.remove(3); + expectedChanges.push({ + "previousIndex":0, + newIndex: -1, + object: {id: 3, name: "three", prime: true} + }); + t.is(results.length, 3); + + observer.cancel(); // shouldn't get any more calls + store.add({// should not be added + id:11, name:"eleven", prime:true + }); + t.is(changes, expectedChanges); + }, + function testQueryWithZeroId(t){ + var results = store.query({}); + t.is(results.length, 8); + var observer = results.observe(function(object, previousIndex, newIndex){ + // we only do puts so previous & new indices must always been the same + // unfortunately if id = 0, the previousIndex + console.log("called with: "+previousIndex+", "+newIndex); + t.is(previousIndex, newIndex); + }, true); + store.put({id: 5, name: "-FIVE-", prime: true}); + store.put({id: 0, name: "-ZERO-", prime: false}); + } + ] + ); +})(); diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/node1.1 b/js/dojo-release-1.7.2-src/dojo/tests/store/node1.1 new file mode 100644 index 0000000..21d1923 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/node1.1 @@ -0,0 +1,4 @@ +{ id: 'node1.1',name:'node1.1', someProperty:'somePropertyA1', children: [ + { $ref: 'node1.1.1', name: 'node1.1.1'}, + { $ref: 'node1.1.2', name: 'node1.1.2'} +]} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/node1.2 b/js/dojo-release-1.7.2-src/dojo/tests/store/node1.2 new file mode 100644 index 0000000..b221fab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/node1.2 @@ -0,0 +1 @@ +{ id: 'node1.2',name:'node1.2', someProperty:'somePropertyA2'} diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/runTests.html b/js/dojo-release-1.7.2-src/dojo/tests/store/runTests.html new file mode 100644 index 0000000..7fd9d51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/runTests.html @@ -0,0 +1,9 @@ + + + + Dojo Store D.O.H. Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/store/treeTestRoot b/js/dojo-release-1.7.2-src/dojo/tests/store/treeTestRoot new file mode 100644 index 0000000..4a9adf1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/store/treeTestRoot @@ -0,0 +1,10 @@ +[ + { id: 'node1', name:'node1', someProperty:'somePropertyA', children:[ + { $ref: 'node1.1', name: 'node1.1', children: true}, + { $ref: 'node1.2', name: 'node1.2'} + ]}, + { id: 'node2', name:'node2', someProperty:'somePropertyB'}, + { id: 'node3', name:'node3', someProperty:'somePropertyC'}, + { id: 'node4', name:'node4', someProperty:'somePropertyA'}, + { id: 'node5', name:'node5', someProperty:'somePropertyB'} +] diff --git a/js/dojo-release-1.7.2-src/dojo/tests/string.js b/js/dojo-release-1.7.2-src/dojo/tests/string.js new file mode 100644 index 0000000..2fa1dda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/string.js @@ -0,0 +1,92 @@ +define(["../main", "doh", "../string"], function(dojo, doh){ + +doh.register("tests.string", + [ + function test_string_pad(t){ + t.is("00001", dojo.string.pad("1", 5)); + t.is("000001", dojo.string.pad("000001", 5)); + t.is("10000", dojo.string.pad("1", 5, null, true)); + }, + + function test_string_substitute(t){ + t.is("File 'foo.html' is not found in directory '/temp'.", + dojo.string.substitute( + "File '${0}' is not found in directory '${1}'.", + ["foo.html","/temp"] + ) + ); + t.is("File 'foo.html' is not found in directory '/temp'.", + dojo.string.substitute( + "File '${name}' is not found in directory '${info.dir}'.", + { + name: "foo.html", + info: { dir: "/temp" } + } + ) + ); + // Verify that an error is thrown! + t.assertError(Error, dojo.string, "substitute", ["${x}", {y:1}]); + }, + + function test_string_substitute_transform(t){ + var getPrefix = function(str){ + // try to figure out the type + var prefix = (str.charAt(0) == "/") ? "directory": "file"; + if(this.____prefix){ + prefix = this.____prefix + prefix; + } + return prefix + " '" + str + "'"; + }; + + var obj = { + ____prefix: "...", + getPrefix: getPrefix + }; + + t.is("file 'foo.html' is not found in directory '/temp'.", + dojo.string.substitute( + "${0} is not found in ${1}.", + ["foo.html","/temp"], + getPrefix + ) + ); + + t.is("...file 'foo.html' is not found in ...directory '/temp'.", + dojo.string.substitute( + "${0} is not found in ${1}.", + ["foo.html","/temp"], + obj.getPrefix, obj + ) + ); + }, + + function test_string_substitute_formatter(t){ + t.is("thinger -- howdy", + dojo.string.substitute( + "${0:postfix}", ["thinger"], null, { + postfix: function(value, key){ + return value + " -- howdy"; + } + } + ) + ); + }, + + function test_string_trim(t){ + t.is("astoria", dojo.string.trim(" \f\n\r\t astoria ")); + t.is("astoria", dojo.string.trim("astoria ")); + t.is("astoria", dojo.string.trim(" astoria")); + t.is("astoria", dojo.string.trim("astoria")); + t.is("a", dojo.string.trim(" a ")); + }, + + function test_string_rep(t){ + t.is("aaaaa", dojo.string.rep("a", 5)); + t.is("abababab", dojo.string.rep("ab", 4)); + t.is("", dojo.string.rep("ab", 0)); + t.is("", dojo.string.rep("", 3)); + } + ] +); + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/test_FirebugLite.html b/js/dojo-release-1.7.2-src/dojo/tests/test_FirebugLite.html new file mode 100644 index 0000000..4a85202 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/test_FirebugLite.html @@ -0,0 +1,101 @@ + + + + + Firebug Lite Tests + + + + + + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/test_FirebugLitePopup.html b/js/dojo-release-1.7.2-src/dojo/tests/test_FirebugLitePopup.html new file mode 100644 index 0000000..04db5a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/test_FirebugLitePopup.html @@ -0,0 +1,102 @@ + + + + + Firebug Lite Tests + + + + + + +

                            test Firebug popup window

                            + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/test_fx.html b/js/dojo-release-1.7.2-src/dojo/tests/test_fx.html new file mode 100644 index 0000000..4f4fd28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/test_fx.html @@ -0,0 +1,107 @@ + + + + + + + + + + +
                            +

                            + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. + Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla + facilisi. Maecenas luctus venenatis nulla. In sit amet dui non mi + semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum + magna. Sed vitae risus. +

                            +

                            + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer + lorem nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean + id mi in massa bibendum suscipit. Integer eros. Nullam suscipit + mauris. In pellentesque. Mauris ipsum est, pharetra semper, + pharetra in, viverra quis, tellus. Etiam purus. Quisque egestas, + tortor ac cursus lacinia, felis leo adipiscing nisi, et rhoncus + elit dolor eget eros. Fusce ut quam. Suspendisse eleifend leo vitae + ligula. Nulla facilisi. Nulla rutrum, erat vitae lacinia dictum, + pede purus imperdiet lacus, ut semper velit ante id metus. Praesent + massa dolor, porttitor sed, pulvinar in, consequat ut, leo. Nullam + nec est. Aenean id risus blandit tortor pharetra congue. + Suspendisse pulvinar. +

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/test_touch.html b/js/dojo-release-1.7.2-src/dojo/tests/test_touch.html new file mode 100644 index 0000000..5a2b510 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/test_touch.html @@ -0,0 +1,144 @@ + + + + + + Dojo Touch Testing + + + + + +
                            +
                            +
                            +
                            doh
                            + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/touch.js b/js/dojo-release-1.7.2-src/dojo/tests/touch.js new file mode 100644 index 0000000..5f5dc59 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/touch.js @@ -0,0 +1,6 @@ +define(["doh", "require"], function(doh, require){ + if(doh.isBrowser){ + doh.register("tests.touch", require.toUrl("./test_touch.html")); + } +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/uacss.js b/js/dojo-release-1.7.2-src/dojo/tests/uacss.js new file mode 100644 index 0000000..2e3bb57 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/uacss.js @@ -0,0 +1,7 @@ +define(["doh", "require"], function(doh, require){ + + doh.register("tests.uacss.sniffQuirks", require.toUrl("./uacss/sniffQuirks.html")); + doh.register("tests.uacss.sniffStandards", require.toUrl("./uacss/sniffStandards.html")); + +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/uacss/sniffQuirks.html b/js/dojo-release-1.7.2-src/dojo/tests/uacss/sniffQuirks.html new file mode 100644 index 0000000..ca070ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/uacss/sniffQuirks.html @@ -0,0 +1,62 @@ + + + + + + + + Sniffing for Box Model (quirks) + + + + + + +

                            CSS Sniff test dj_boxmodel in quirks mode

                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/uacss/sniffStandards.html b/js/dojo-release-1.7.2-src/dojo/tests/uacss/sniffStandards.html new file mode 100644 index 0000000..a0ed84f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/uacss/sniffStandards.html @@ -0,0 +1,61 @@ + + + + + + + Sniffing for Box Model (standards mode) + + + + + + +

                            CSS Sniff test dj_boxmodel in standards mode

                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/window.js b/js/dojo-release-1.7.2-src/dojo/tests/window.js new file mode 100755 index 0000000..40e4b09 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/window.js @@ -0,0 +1,5 @@ +define(["doh", "require"], function(doh, require){ + doh.register("tests.window.viewport", require.toUrl("./window/viewport.html")); + doh.register("tests.window.viewportQuirks", require.toUrl("./window/viewportQuirks.html")); + doh.register("tests.window.test_scroll", require.toUrl("./window/test_scroll.html"), 99999999); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/tests/window/test_scroll.html b/js/dojo-release-1.7.2-src/dojo/tests/window/test_scroll.html new file mode 100644 index 0000000..2875eca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/window/test_scroll.html @@ -0,0 +1,624 @@ + + + + dojo.window.scrollIntoView Test + + + + + + + +

                            Automated scrollIntoView tests with 3 different DOCTYPEs as well as right-to-left

                            + + + + +
                             
                             
                            + +
                            + +
                            + INPUT { float:left; } +
                            +
                            +
                            +
                            + +
                            + HTML { overflow-x:hidden !important; /*IE6*/ } +
                            +
                            + +
                            +
                            +
                            +
                            + +
                            + HTML { overflow-x:hidden !important; /*IE6*/ } +
                            + +
                            +
                            +
                            + +
                            +
                            +
                            + +
                            +
                            +
                            + +
                            + HTML { overflow-x:hidden !important; /*IE6*/ } + INPUT { height:20px; MZT_MZQ_WKT_WKQ_IEQ_OPQ_OPT_height:28px; width:20px; MZT_MZQ_WKT_WKQ_IEQ_OPQ_OPT_width:28px; } +
                            + +
                            +
                            +
                            +
                            +
                            +
                            + +
                            + INPUT { height:20px; MZT_MZQ_WKT_WKQ_IEQ_OPQ_OPT_height:28px; width:20px; MZT_MZQ_WKT_WKQ_IEQ_OPQ_OPT_width:28px; } +

                            +
                            +
                            +
                            +
                            + +
                            + BODY { overflow:hidden !important; /*IE9*/ } +
                            +
                            +
                            +
                            + +
                            + + HTML { overflow:hidden !important; /*IE6*/ } + BODY { overflow:hidden !important; /*IE9*/ } + + +
                            +
                            +
                            + +
                            + HTML { overflow-x:hidden !important; /*IE6*/ } + + +
                            +
                            +
                            +
                            + +
                            + + HTML { overflow:hidden !important; /*IE6*/ } + BODY { padding:10px; } + TABLE { OPR_float:left; } + +
                            +
                            +
                            +
                            + +
                            +
                            + + +
                            +
                            +
                            +
                            +
                            + +
                            + + HTML { IEZ_overflow:scroll !important; /*IE6*/ } + BODY { OPT_overflow:scroll !important; } + + +
                            +
                            +
                            +
                            +
                            + +
                            + HTML, BODY { padding:50px 9px; } + HTML { overflow-x:hidden !important; /*IE6*/ } +
                            + +
                            +
                            +
                            +
                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/window/test_scrollNoDTD.html b/js/dojo-release-1.7.2-src/dojo/tests/window/test_scrollNoDTD.html new file mode 100644 index 0000000..1b5f222 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/window/test_scrollNoDTD.html @@ -0,0 +1,74 @@ + + + dojo.window.scrollIntoView Test with No DTD + + + + + + + +

                            Manually scroll and click elements that have a border
                            and they should scroll into view

                            + + +
                            + +
                             
                             
                            +
                            +

                             

                            +

                             

                            +

                             

                            +

                             

                            +
                            +
                             
                            +
                            + +
                            + +
                             
                            +
                            +
                            + +
                             
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/window/test_scrollStrictDTD.html b/js/dojo-release-1.7.2-src/dojo/tests/window/test_scrollStrictDTD.html new file mode 100644 index 0000000..ee9a1f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/window/test_scrollStrictDTD.html @@ -0,0 +1,76 @@ + + + + dojo.window.scrollIntoView Test with Strict DTD + + + + + + + +

                            Manually scroll and click elements that have a border
                            and they should scroll into view

                            + + +
                            + +
                             
                             
                            +
                            +

                             

                            +

                             

                            +

                             

                            +

                             

                            +
                            +
                             
                            +
                            + +
                            + +
                             
                            +
                            +
                            + +
                             
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/window/viewport.html b/js/dojo-release-1.7.2-src/dojo/tests/window/viewport.html new file mode 100644 index 0000000..f0089c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/window/viewport.html @@ -0,0 +1,75 @@ + + + + dojo.window.getBox() test + + + + + + +
                            +

                            dojo.window.getBox() test

                            +
                            padding div
                            + + +
                              +
                            1. check results div below to see that before adding text, document is smaller than viewport +
                            2. after adding text, document should be bigger than viewport,and check that viewport size hasn't changed, + except maybe being a little bit smaller (about 15px) because of the size of the scrollbars +
                            3. resize browser window and click the "recompute size" button; reported viewport size should change +
                            4. scroll the window and click "recompute size" to see that the scroll position is taken into effect +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojo/tests/window/viewportQuirks.html b/js/dojo-release-1.7.2-src/dojo/tests/window/viewportQuirks.html new file mode 100644 index 0000000..5fd3d8c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/tests/window/viewportQuirks.html @@ -0,0 +1,5 @@ + + + + + diff --git a/js/dojo-release-1.7.2-src/dojo/text.js b/js/dojo-release-1.7.2-src/dojo/text.js new file mode 100644 index 0000000..f5deb51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/text.js @@ -0,0 +1,212 @@ +define(["./_base/kernel", "require", "./has", "./has!host-browser?./_base/xhr"], function(dojo, require, has, xhr){ + // module: + // dojo/text + // summary: + // This module implements the !dojo/text plugin and the dojo.cache API. + // description: + // We choose to include our own plugin to leverage functionality already contained in dojo + // and thereby reduce the size of the plugin compared to various foreign loader implementations. + // Also, this allows foreign AMD loaders to be used without their plugins. + // + // CAUTION: this module is designed to optionally function synchronously to support the dojo v1.x synchronous + // loader. This feature is outside the scope of the CommonJS plugins specification. + + var getText; + if(has("host-browser")){ + getText= function(url, sync, load){ + xhr("GET", {url:url, sync:!!sync, load:load}); + }; + }else{ + // TODOC: only works for dojo AMD loader + if(require.getText){ + getText= require.getText; + }else{ + console.error("dojo/text plugin failed to load because loader does not support getText"); + } + } + + var + theCache= {}, + + strip= function(text){ + //Strips declarations so that external SVG and XML + //documents can be added to a document without worry. Also, if the string + //is an HTML document, only the part inside the body tag is returned. + if(text){ + text= text.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, ""); + var matches= text.match(/]*>\s*([\s\S]+)\s*<\/body>/im); + if(matches){ + text= matches[1]; + } + }else{ + text = ""; + } + return text; + }, + + notFound = {}, + + pending = {}, + + result= { + dynamic: + // the dojo/text caches it's own resources because of dojo.cache + true, + + normalize:function(id, toAbsMid){ + // id is something like (path may be relative): + // + // "path/to/text.html" + // "path/to/text.html!strip" + var parts= id.split("!"), + url= parts[0]; + return (/^\./.test(url) ? toAbsMid(url) : url) + (parts[1] ? "!" + parts[1] : ""); + }, + + load:function(id, require, load){ + // id is something like (path is always absolute): + // + // "path/to/text.html" + // "path/to/text.html!strip" + var + parts= id.split("!"), + stripFlag= parts.length>1, + absMid= parts[0], + url = require.toUrl(parts[0]), + text = notFound, + finish = function(text){ + load(stripFlag ? strip(text) : text); + }; + if(absMid in theCache){ + text = theCache[absMid]; + }else if(url in require.cache){ + text = require.cache[url]; + }else if(url in theCache){ + text = theCache[url]; + } + if(text===notFound){ + if(pending[url]){ + pending[url].push(finish); + }else{ + var pendingList = pending[url] = [finish]; + getText(url, !require.async, function(text){ + theCache[absMid]= theCache[url]= text; + for(var i = 0; i (module, url, value) + // * (object [value]) => (module, value), url defaults to "" + // + // * if module is an object, then it must be convertable to a string + // * (module, url) module + (url ? ("/" + url) : "") must be a legal argument to require.toUrl + // * value may be a string or an object; if an object then may have the properties "value" and/or "sanitize" + var key; + if(typeof module=="string"){ + if(/\//.test(module)){ + // module is a version 1.7+ resolved path + key = module; + value = url; + }else{ + // module is a version 1.6- argument to dojo.moduleUrl + key = require.toUrl(module.replace(/\./g, "/") + (url ? ("/" + url) : "")); + } + }else{ + key = module + ""; + value = url; + } + var + val = (value != undefined && typeof value != "string") ? value.value : value, + sanitize = value && value.sanitize; + + if(typeof val == "string"){ + //We have a string, set cache value + theCache[key] = val; + return sanitize ? strip(val) : val; + }else if(val === null){ + //Remove cached value + delete theCache[key]; + return null; + }else{ + //Allow cache values to be empty strings. If key property does + //not exist, fetch it. + if(!(key in theCache)){ + getText(key, true, function(text){ + theCache[key]= text; + }); + } + return sanitize ? strip(theCache[key]) : theCache[key]; + } + }; + + return result; + +/*===== +dojo.cache = function(module, url, value){ + // summary: + // A getter and setter for storing the string content associated with the + // module and url arguments. + // description: + // If module is a string that contains slashes, then it is interpretted as a fully + // resolved path (typically a result returned by require.toUrl), and url should not be + // provided. This is the preferred signature. If module is a string that does not + // contain slashes, then url must also be provided and module and url are used to + // call `dojo.moduleUrl()` to generate a module URL. This signature is deprecated. + // If value is specified, the cache value for the moduleUrl will be set to + // that value. Otherwise, dojo.cache will fetch the moduleUrl and store it + // in its internal cache and return that cached value for the URL. To clear + // a cache value pass null for value. Since XMLHttpRequest (XHR) is used to fetch the + // the URL contents, only modules on the same domain of the page can use this capability. + // The build system can inline the cache values though, to allow for xdomain hosting. + // module: String||Object + // If a String with slashes, a fully resolved path; if a String without slashes, the + // module name to use for the base part of the URL, similar to module argument + // to `dojo.moduleUrl`. If an Object, something that has a .toString() method that + // generates a valid path for the cache item. For example, a dojo._Url object. + // url: String + // The rest of the path to append to the path derived from the module argument. If + // module is an object, then this second argument should be the "value" argument instead. + // value: String||Object? + // If a String, the value to use in the cache for the module/url combination. + // If an Object, it can have two properties: value and sanitize. The value property + // should be the value to use in the cache, and sanitize can be set to true or false, + // to indicate if XML declarations should be removed from the value and if the HTML + // inside a body tag in the value should be extracted as the real value. The value argument + // or the value property on the value argument are usually only used by the build system + // as it inlines cache content. + // example: + // To ask dojo.cache to fetch content and store it in the cache (the dojo["cache"] style + // of call is used to avoid an issue with the build system erroneously trying to intern + // this example. To get the build system to intern your dojo.cache calls, use the + // "dojo.cache" style of call): + // | //If template.html contains "

                            Hello

                            " that will be + // | //the value for the text variable. + // | var text = dojo["cache"]("my.module", "template.html"); + // example: + // To ask dojo.cache to fetch content and store it in the cache, and sanitize the input + // (the dojo["cache"] style of call is used to avoid an issue with the build system + // erroneously trying to intern this example. To get the build system to intern your + // dojo.cache calls, use the "dojo.cache" style of call): + // | //If template.html contains "

                            Hello

                            ", the + // | //text variable will contain just "

                            Hello

                            ". + // | var text = dojo["cache"]("my.module", "template.html", {sanitize: true}); + // example: + // Same example as previous, but demostrates how an object can be passed in as + // the first argument, then the value argument can then be the second argument. + // | //If template.html contains "

                            Hello

                            ", the + // | //text variable will contain just "

                            Hello

                            ". + // | var text = dojo["cache"](new dojo._Url("my/module/template.html"), {sanitize: true}); + return val; //String +}; +=====*/ +}); + diff --git a/js/dojo-release-1.7.2-src/dojo/topic.js b/js/dojo-release-1.7.2-src/dojo/topic.js new file mode 100644 index 0000000..b29cfa3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/topic.js @@ -0,0 +1,33 @@ +define(["./Evented"], function(Evented){ + // summary: + // The export of this module is a pubsub hub + // You can also use listen function itself as a pub/sub hub: + // | topic.subscribe("some/topic", function(event){ + // | ... do something with event + // | }); + // | topic.publish("some/topic", {name:"some event", ...}); + + var hub = new Evented; + return { + publish: function(topic, event){ + // summary: + // Publishes a message to a topic on the pub/sub hub. All arguments after + // the first will be passed to the subscribers, so any number of arguments + // can be provided (not just event). + // topic: String + // The name of the topic to publish to + // event: Object + // An event to distribute to the topic listeners + return hub.emit.apply(hub, arguments); + }, + subscribe: function(topic, listener){ + // summary: + // Subcribes to a topic on the pub/sub hub + // topic: String + // The topic to subscribe to + // listener: Function + // A function to call when a message is published to the given topic + return hub.on.apply(hub, arguments); + } + } +}); diff --git a/js/dojo-release-1.7.2-src/dojo/touch.js b/js/dojo-release-1.7.2-src/dojo/touch.js new file mode 100644 index 0000000..328ae1f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/touch.js @@ -0,0 +1,89 @@ +define(["./_base/kernel", "./on", "./has", "./mouse"], function(dojo, on, has, mouse){ +// module: +// dojo/touch + +/*===== + dojo.touch = { + // summary: + // This module provides unified touch event handlers by exporting + // press, move, release and cancel which can also run well on desktop. + // Based on http://dvcs.w3.org/hg/webevents/raw-file/tip/touchevents.html + // + // example: + // 1. Used with dojo.connect() + // | dojo.connect(node, dojo.touch.press, function(e){}); + // | dojo.connect(node, dojo.touch.move, function(e){}); + // | dojo.connect(node, dojo.touch.release, function(e){}); + // | dojo.connect(node, dojo.touch.cancel, function(e){}); + // + // 2. Used with dojo.on + // | define(["dojo/on", "dojo/touch"], function(on, touch){ + // | on(node, touch.press, function(e){}); + // | on(node, touch.move, function(e){}); + // | on(node, touch.release, function(e){}); + // | on(node, touch.cancel, function(e){}); + // + // 3. Used with dojo.touch.* directly + // | dojo.touch.press(node, function(e){}); + // | dojo.touch.move(node, function(e){}); + // | dojo.touch.release(node, function(e){}); + // | dojo.touch.cancel(node, function(e){}); + + press: function(node, listener){ + // summary: + // Register a listener to 'touchstart'|'mousedown' for the given node + // node: Dom + // Target node to listen to + // listener: Function + // Callback function + // returns: + // A handle which will be used to remove the listener by handle.remove() + }, + move: function(node, listener){ + // summary: + // Register a listener to 'touchmove'|'mousemove' for the given node + // node: Dom + // Target node to listen to + // listener: Function + // Callback function + // returns: + // A handle which will be used to remove the listener by handle.remove() + }, + release: function(node, listener){ + // summary: + // Register a listener to 'touchend'|'mouseup' for the given node + // node: Dom + // Target node to listen to + // listener: Function + // Callback function + // returns: + // A handle which will be used to remove the listener by handle.remove() + }, + cancel: function(node, listener){ + // summary: + // Register a listener to 'touchcancel'|'mouseleave' for the given node + // node: Dom + // Target node to listen to + // listener: Function + // Callback function + // returns: + // A handle which will be used to remove the listener by handle.remove() + } + }; +=====*/ + + function _handle(/*String - press | move | release | cancel*/type){ + return function(node, listener){//called by on(), see dojo.on + return on(node, type, listener); + }; + } + var touch = has("touch"); + //device neutral events - dojo.touch.press|move|release|cancel + dojo.touch = { + press: _handle(touch ? "touchstart": "mousedown"), + move: _handle(touch ? "touchmove": "mousemove"), + release: _handle(touch ? "touchend": "mouseup"), + cancel: touch ? _handle("touchcancel") : mouse.leave + }; + return dojo.touch; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojo/uacss.js b/js/dojo-release-1.7.2-src/dojo/uacss.js new file mode 100644 index 0000000..8591a1b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/uacss.js @@ -0,0 +1,66 @@ +define(["./dom-geometry", "./_base/lang", "./ready", "./_base/sniff", "./_base/window"], + function(geometry, lang, ready, has, baseWindow){ + // module: + // dojo/uacss + // summary: + // Applies pre-set CSS classes to the top-level HTML node, based on: + // - browser (ex: dj_ie) + // - browser version (ex: dj_ie6) + // - box model (ex: dj_contentBox) + // - text direction (ex: dijitRtl) + // + // In addition, browser, browser version, and box model are + // combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl. + + var + html = baseWindow.doc.documentElement, + ie = has("ie"), + opera = has("opera"), + maj = Math.floor, + ff = has("ff"), + boxModel = geometry.boxModel.replace(/-/,''), + + classes = { + "dj_ie": ie, + "dj_ie6": maj(ie) == 6, + "dj_ie7": maj(ie) == 7, + "dj_ie8": maj(ie) == 8, + "dj_ie9": maj(ie) == 9, + "dj_quirks": has("quirks"), + "dj_iequirks": ie && has("quirks"), + + // NOTE: Opera not supported by dijit + "dj_opera": opera, + + "dj_khtml": has("khtml"), + + "dj_webkit": has("webkit"), + "dj_safari": has("safari"), + "dj_chrome": has("chrome"), + + "dj_gecko": has("mozilla"), + "dj_ff3": maj(ff) == 3 + }; // no dojo unsupported browsers + + classes["dj_" + boxModel] = true; + + // apply browser, browser version, and box model class names + var classStr = ""; + for(var clz in classes){ + if(classes[clz]){ + classStr += clz + " "; + } + } + html.className = lang.trim(html.className + " " + classStr); + + // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension. + // We can't run the code below until the tag has loaded (so we can check for dir=rtl). + // priority is 90 to run ahead of parser priority of 100 + ready(90, function(){ + if(!geometry.isBodyLtr()){ + var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl "); + html.className = lang.trim(html.className + " " + rtlClassStr + "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ")); + } + }); + return has; +}); diff --git a/js/dojo-release-1.7.2-src/dojo/window.js b/js/dojo-release-1.7.2-src/dojo/window.js new file mode 100644 index 0000000..25b0fda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojo/window.js @@ -0,0 +1,169 @@ +define(["./_base/lang", "./_base/sniff", "./_base/window", "./dom", "./dom-geometry", "./dom-style"], + function(lang, has, baseWindow, dom, geom, style) { + +// module: +// dojo/window +// summary: +// TODOC + +var window = lang.getObject("dojo.window", true); + +/*===== +dojo.window = { + // summary: + // TODO +}; +window = dojo.window; +=====*/ + +window.getBox = function(){ + // summary: + // Returns the dimensions and scroll position of the viewable area of a browser window + + var + scrollRoot = (baseWindow.doc.compatMode == 'BackCompat') ? baseWindow.body() : baseWindow.doc.documentElement, + // get scroll position + scroll = geom.docScroll(), // scrollRoot.scrollTop/Left should work + w, h; + + if(has("touch")){ // if(scrollbars not supported) + var uiWindow = baseWindow.doc.parentWindow || baseWindow.doc.defaultView; // use UI window, not dojo.global window. baseWindow.doc.parentWindow probably not needed since it's not defined for webkit + // on mobile, scrollRoot.clientHeight <= uiWindow.innerHeight <= scrollRoot.offsetHeight, return uiWindow.innerHeight + w = uiWindow.innerWidth || scrollRoot.clientWidth; // || scrollRoot.clientXXX probably never evaluated + h = uiWindow.innerHeight || scrollRoot.clientHeight; + }else{ + // on desktops, scrollRoot.clientHeight <= scrollRoot.offsetHeight <= uiWindow.innerHeight, return scrollRoot.clientHeight + // uiWindow.innerWidth/Height includes the scrollbar and cannot be used + w = scrollRoot.clientWidth; + h = scrollRoot.clientHeight; + } + return { + l: scroll.x, + t: scroll.y, + w: w, + h: h + }; +}; + +window.get = function(doc){ + // summary: + // Get window object associated with document doc + + // In some IE versions (at least 6.0), document.parentWindow does not return a + // reference to the real window object (maybe a copy), so we must fix it as well + // We use IE specific execScript to attach the real window reference to + // document._parentWindow for later use + if(has("ie") && window !== document.parentWindow){ + /* + In IE 6, only the variable "window" can be used to connect events (others + may be only copies). + */ + doc.parentWindow.execScript("document._parentWindow = window;", "Javascript"); + //to prevent memory leak, unset it after use + //another possibility is to add an onUnload handler which seems overkill to me (liucougar) + var win = doc._parentWindow; + doc._parentWindow = null; + return win; // Window + } + + return doc.parentWindow || doc.defaultView; // Window +}; + +window.scrollIntoView = function(/*DomNode*/ node, /*Object?*/ pos){ + // summary: + // Scroll the passed node into view, if it is not already. + + // don't rely on node.scrollIntoView working just because the function is there + + try{ // catch unexpected/unrecreatable errors (#7808) since we can recover using a semi-acceptable native method + node = dom.byId(node); + var doc = node.ownerDocument || baseWindow.doc, + body = doc.body || baseWindow.body(), + html = doc.documentElement || body.parentNode, + isIE = has("ie"), isWK = has("webkit"); + // if an untested browser, then use the native method + if((!(has("mozilla") || isIE || isWK || has("opera")) || node == body || node == html) && (typeof node.scrollIntoView != "undefined")){ + node.scrollIntoView(false); // short-circuit to native if possible + return; + } + var backCompat = doc.compatMode == 'BackCompat', + clientAreaRoot = (isIE >= 9 && node.ownerDocument.parentWindow.frameElement) + ? ((html.clientHeight > 0 && html.clientWidth > 0 && (body.clientHeight == 0 || body.clientWidth == 0 || body.clientHeight > html.clientHeight || body.clientWidth > html.clientWidth)) ? html : body) + : (backCompat ? body : html), + scrollRoot = isWK ? body : clientAreaRoot, + rootWidth = clientAreaRoot.clientWidth, + rootHeight = clientAreaRoot.clientHeight, + rtl = !geom.isBodyLtr(), + nodePos = pos || geom.position(node), + el = node.parentNode, + isFixed = function(el){ + return ((isIE <= 6 || (isIE && backCompat))? false : (style.get(el, 'position').toLowerCase() == "fixed")); + }; + if(isFixed(node)){ return; } // nothing to do + + while(el){ + if(el == body){ el = scrollRoot; } + var elPos = geom.position(el), + fixedPos = isFixed(el); + + if(el == scrollRoot){ + elPos.w = rootWidth; elPos.h = rootHeight; + if(scrollRoot == html && isIE && rtl){ elPos.x += scrollRoot.offsetWidth-elPos.w; } // IE workaround where scrollbar causes negative x + if(elPos.x < 0 || !isIE){ elPos.x = 0; } // IE can have values > 0 + if(elPos.y < 0 || !isIE){ elPos.y = 0; } + }else{ + var pb = geom.getPadBorderExtents(el); + elPos.w -= pb.w; elPos.h -= pb.h; elPos.x += pb.l; elPos.y += pb.t; + var clientSize = el.clientWidth, + scrollBarSize = elPos.w - clientSize; + if(clientSize > 0 && scrollBarSize > 0){ + elPos.w = clientSize; + elPos.x += (rtl && (isIE || el.clientLeft > pb.l/*Chrome*/)) ? scrollBarSize : 0; + } + clientSize = el.clientHeight; + scrollBarSize = elPos.h - clientSize; + if(clientSize > 0 && scrollBarSize > 0){ + elPos.h = clientSize; + } + } + if(fixedPos){ // bounded by viewport, not parents + if(elPos.y < 0){ + elPos.h += elPos.y; elPos.y = 0; + } + if(elPos.x < 0){ + elPos.w += elPos.x; elPos.x = 0; + } + if(elPos.y + elPos.h > rootHeight){ + elPos.h = rootHeight - elPos.y; + } + if(elPos.x + elPos.w > rootWidth){ + elPos.w = rootWidth - elPos.x; + } + } + // calculate overflow in all 4 directions + var l = nodePos.x - elPos.x, // beyond left: < 0 + t = nodePos.y - Math.max(elPos.y, 0), // beyond top: < 0 + r = l + nodePos.w - elPos.w, // beyond right: > 0 + bot = t + nodePos.h - elPos.h; // beyond bottom: > 0 + if(r * l > 0){ + var s = Math[l < 0? "max" : "min"](l, r); + if(rtl && ((isIE == 8 && !backCompat) || isIE >= 9)){ s = -s; } + nodePos.x += el.scrollLeft; + el.scrollLeft += s; + nodePos.x -= el.scrollLeft; + } + if(bot * t > 0){ + nodePos.y += el.scrollTop; + el.scrollTop += Math[t < 0? "max" : "min"](t, bot); + nodePos.y -= el.scrollTop; + } + el = (el != scrollRoot) && !fixedPos && el.parentNode; + } + }catch(error){ + console.error('scrollIntoView: ' + error); + node.scrollIntoView(false); + } +}; + +return window; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/LICENSE b/js/dojo-release-1.7.2-src/dojox/LICENSE new file mode 100644 index 0000000..aa6b39f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/LICENSE @@ -0,0 +1,195 @@ +Dojo is available under *either* the terms of the modified BSD license *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL or BSD licenses that Dojo is distributed under. + +The text of the AFL and BSD licenses is reproduced below. + +------------------------------------------------------------------------------- +The "New" BSD License: +********************** + +Copyright (c) 2005-2011, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. diff --git a/js/dojo-release-1.7.2-src/dojox/NodeList/README b/js/dojo-release-1.7.2-src/dojox/NodeList/README new file mode 100755 index 0000000..039c37d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/NodeList/README @@ -0,0 +1,33 @@ +------------------------------------------------------------------------------- +Project Name: NodeList +------------------------------------------------------------------------------- +Version 0.01 +Release date: 07/20/2010 +------------------------------------------------------------------------------- +Project state: + experimental +------------------------------------------------------------------------------- +Credits: + Bill Keese +------------------------------------------------------------------------------- +Project description + +This project is meant to extend NodeList with various methods. The first is +delegate(), similar to jQuery's delegate method (http://api.jquery.com/delegate/) +------------------------------------------------------------------------------- +Dependencies: + dojo base + dojo.NodeList-traverse +------------------------------------------------------------------------------- +Documentation + Documentation resides at: + http://api.dojotoolkit.org/NodeList + +------------------------------------------------------------------------------- +Installation instructions + +Just dojo.require("dojox.NodeList.delegate") in your application and then +delegate() is added as a method to NodeList. + +------------------------------------------------------------------------------- + diff --git a/js/dojo-release-1.7.2-src/dojox/NodeList/delegate.js b/js/dojo-release-1.7.2-src/dojox/NodeList/delegate.js new file mode 100644 index 0000000..dfdb332 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/NodeList/delegate.js @@ -0,0 +1,65 @@ +define(["dojo/_base/lang", "dojo/query", "dojo/_base/NodeList", "dojo/NodeList-traverse"], function(lang, query, NodeList) { + // module: + // dojox/NodeList/delegate + // summary: + // TODOC + +/*===== +// doc alias helpers: +NodeList = dojo.NodeList; +=====*/ + +lang.extend(NodeList, { + delegate: function(/*String*/ selector, /*String*/ eventName, /*Function*/ fn){ + // summary: + // Monitor nodes in this NodeList for [bubbled] events on nodes that match selector. + // Calls fn(evt) for those events, where (inside of fn()), this == the node + // that matches the selector. + // description: + // Sets up event handlers that can catch events on any subnodes matching a given selector, + // including nodes created after delegate() has been called. + // + // This allows an app to setup a single event handler on a high level node, rather than many + // event handlers on subnodes. For example, one onclick handler for a Tree widget, rather than separate + // handlers for each node in the tree. + // Since setting up many event handlers is expensive, this can increase performance. + // + // Note that delegate() will not work for events that don't bubble, like focus. + // onmouseenter/onmouseleave also don't currently work. + // selector: + // CSS selector valid to `dojo.query`, like ".foo" or "div > span". The + // selector is relative to the nodes in this NodeList, not the document root. + // For example myNodeList.delegate("> a", "onclick", ...) will catch events on + // anchor nodes which are (immediate) children of the nodes in myNodeList. + // eventName: + // Standard event name used as an argument to `dojo.connect`, like "onclick". + // fn: + // Callback function passed the event object, and where this == the node that matches the selector. + // That means that for example, after setting up a handler via + // dojo.query("body").delegate("fieldset", "onclick", ...) + // clicking on a fieldset or *any nodes inside of a fieldset* will be reported + // as a click on the fieldset itself. + // example: + // | dojo.query("navbar").delegate("a", "onclick", function(evt){ + // | console.log("user clicked anchor ", this.node); + // | }); + + // Possible future tasks: + // - change signature of callback to be fn(node, evt), and then have scope argument + // to delegate(selector, eventName, scope, fn)? + // - support non-bubbling events like focus + // - support onmouseenter/onmouseleave + // - maybe should return an array of connect handles instead, to allow undelegate()? + // - single node version + + return this.connect(eventName, function(evt){ + var closest = query(evt.target).closest(selector, this); + if(closest.length){ + fn.call(closest[0], evt); + } + }); //dojo.NodeList + } +}); + +return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/NodeList/tests/delegate-async.html b/js/dojo-release-1.7.2-src/dojox/NodeList/tests/delegate-async.html new file mode 100644 index 0000000..1f60791 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/NodeList/tests/delegate-async.html @@ -0,0 +1,72 @@ + + + + NodeList.delegate() test + + + + + + +

                            Test of NodeList.delegate() method

                            +
                            +

                            + This DIV has class=blue but it shouldn't matter because the delegate() connections are on + sub node inside of me. +

                            +
                            +

                            This div has a delegate handler on it so clicking the blue DIV's below will have an effect.

                            +
                            +
                            +

                            This div has a delegate handler on it so clicking the blue DIV's below will have an effect.

                            +
                            +
                            +

                            This div doesn't have a delegate handler on it so clicking the blue DIV's below will have no effect.

                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/NodeList/tests/delegate.html b/js/dojo-release-1.7.2-src/dojox/NodeList/tests/delegate.html new file mode 100644 index 0000000..ff0d35b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/NodeList/tests/delegate.html @@ -0,0 +1,70 @@ + + + + NodeList.delegate() test + + + + + + +

                            Test of NodeList.delegate() method

                            +
                            +

                            + This DIV has class=blue but it shouldn't matter because the delegate() connections are on + sub node inside of me. +

                            +
                            +

                            This div has a delegate handler on it so clicking the blue DIV's below will have an effect.

                            +
                            +
                            +

                            This div has a delegate handler on it so clicking the blue DIV's below will have an effect.

                            +
                            +
                            +

                            This div doesn't have a delegate handler on it so clicking the blue DIV's below will have no effect.

                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/analytics.js b/js/dojo-release-1.7.2-src/dojox/analytics.js new file mode 100644 index 0000000..fbd71e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics.js @@ -0,0 +1,3 @@ +define(["./analytics/_base"], function(analytics) { + return analytics; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/README b/js/dojo-release-1.7.2-src/dojox/analytics/README new file mode 100644 index 0000000..7299925 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/README @@ -0,0 +1,139 @@ +------------------------------------------------------------------------------- +dojox.analytics +------------------------------------------------------------------------------- +Version 1.0 +Release date: 12/17/2007 +------------------------------------------------------------------------------- +Project state: +[base]: alpha +[Urchin]: alpha +------------------------------------------------------------------------------- +Project authors + Dustin Machi (dmachi) + Peter Higgins (dante) +------------------------------------------------------------------------------- +Project description + analytics and client monitoring system. Including the base analytics +system and any number of plugins enables logging of different system data +back to the server. Plugins included at this time: + + dojo - reports dojo startup collected information + window - reports available window information to the server + mouseOver - allows periodic sampling of mouseOver + mouseClick - reports any mouse clicks to the server + idle - reports idle/activity + consoleMessages - reports console.* messages to the server + + Additionally, a Google Analytics (Urchin tracker) helper is included + in this project, though is unrelated to the Core dojox.analytics + project code. + +------------------------------------------------------------------------------- +Dependencies: + +Dojo Core (package loader). +------------------------------------------------------------------------------- +Documentation + +Usage: + +The primary intended usage will be to create a custom build layer that includes +the particular plugins you need for your project. However in practice you +can use the system as such: + + + + + +When done using a build, none of the dojo.require() statement will be requires +would already be in the build. + +Most of the plugins and the base itself have a number of configurable params +that are passed in via the djConfig variable set. This approach is taken so that +the parameters can be easily provided in the case of a build or for a custom +dojo.js build with analytics built in. Examples for different build profiles +are in the profiles directory. + +Available Configuration Parameters: + + Base Configs + sendInterval - Normal send interval. Default 5000 + sendMethod - "script" || "xhrPost" + inTransitRetry - Delay before retrying an a send if it was in transit + or if there is still data to be sent after a post. + Default 1000 + analyticsUrl - url to send logging data to. defaults to the test php + file for now + maxRequestSize - Maximum size of GET style requests. Capped at 2000 for + IE, and 4000 otherwise + + consoleMessages Config: + + consoleLogFuncs - functions from the console object that you will log to + the server. If the console object doesn't exist + or a particuarl method doesn't exist it will be + created as a remote logging only method. This provides + a quick and convient way to automatically define + a remote logging funciton that includes the functions + name in the log. The 'rlog' in the default paramerters + is an example of this. Defaults to ["error", "warn", "info", "rlog"] + + idle Config: + + idleTime - Number of ms to be idle before being reported to the server as idle + + mouseOver config: + targetProps - the properties whose values will be reported for each target from + a mouse over sample. defaults to ["id","className","localName","href", "spellcheck", "lang", "textContent", "value" ] + + sampleDelay - the delay in ms between mouseover samples. Defaults to 2500 + + window config: + windowConnects - methods on the window objec that will be attached to + have its data passed to the server when called. + + +Note that the basic usage of this system simply serializes json with toJson() when passed +to the analytics addData() method. If data is passed that has circular references +it will die. Take care not to do that or be surprised when it doens't work +in those cases. + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/analytics + +Install into the following directory structure: +/dojox/analytics/ + +...which should be at the same level as your Dojo checkout. diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/Urchin.js b/js/dojo-release-1.7.2-src/dojox/analytics/Urchin.js new file mode 100644 index 0000000..2fb4707 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/Urchin.js @@ -0,0 +1,133 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/window", + "dojo/_base/config", "dojo/dom-construct" +], function(lang, declare, window, config, construct){ + + /*===== + dojo.mixin(djConfig,{ + // urchin: String + // Used by `dojox.analytics.Urchin` as the default UA-123456-7 account + // number used when being created. Alternately, you can pass an acct:"" + // parameter to the constructor a la: new dojox.analytics.Urchin({ acct:"UA-123456-7" }); + urchin: "" + }); + =====*/ + + return declare("dojox.analytics.Urchin", null, { + // summary: A Google-analytics helper, for post-onLoad inclusion of the tracker, and + // dynamic tracking during long-lived page cycles. + // + // description: + // A small class object will allows for lazy-loading the Google Analytics API + // at any point during a page lifecycle. Most commonly, Google-Analytics is loaded + // via a synchronous script tag in the body, which causes `dojo.addOnLoad` to + // stall until the external API has been completely loaded. The Urchin helper + // will load the API on the fly, and provide a convenient API to use, wrapping + // Analytics for Ajaxy or single page applications. + // + // The class can be instantiated two ways: Programatically, by passing an + // `acct:` parameter, or via Markup / dojoType and defining a djConfig + // parameter `urchin:` + // + // IMPORTANT: + // This module will not work simultaneously with the core dojox.analytics + // package. If you need the ability to run Google Analytics AND your own local + // analytics system, you MUST include dojox.analytics._base BEFORE dojox.analytics.Urchin + // + // example: + // | // create the tracker programatically: + // | var tracker = new dojox.analytics.Urchin({ acct:"UA-123456-7" }); + // + // example: + // | // define the urchin djConfig option: + // | var djConfig = { urchin: "UA-123456-7" }; + // | + // | // and in markup: + // |
                            + // | // or code: + // | new dojox.analytics.Urchin(); + // + // example: + // | // create and define all analytics with one tag. + // |
                            + // + // acct: String + // your GA urchin tracker account number. Overrides `djConfig.urchin` + acct: "", + + constructor: function(args){ + // summary: + // Initialize this Urchin instance. Immediately starts the load + // sequence, so defer construction until (ideally) after onLoad and + // potentially widget parsing. + this.tracker = null; + lang.mixin(this, args); + this.acct = this.acct || config.urchin; + + var re = /loaded|complete/, + gaHost = ("https:" == window.doc.location.protocol) ? "https://ssl." : "http://www.", + h = window.doc.getElementsByTagName("head")[0], + n = construct.create('script', { + src: gaHost + "google-analytics.com/ga.js" + }, h); + + n.onload = n.onreadystatechange = lang.hitch(this, function(e){ + if(e && e.type == "load" || re.test(n.readyState)){ + n.onload = n.onreadystatechange = null; + this._gotGA(); + h.removeChild(n); + } + }); + + }, + + _gotGA: function(){ + // summary: initialize the tracker + this.tracker = _gat._getTracker(this.acct); + this.GAonLoad.apply(this, arguments); + }, + + GAonLoad: function(){ + // summary: + // Stub function to fire when urchin is complete + // description: + // This function is executed when the tracker variable is + // complete and initialized. The initial trackPageView (with + // no arguments) is called here as well, so remeber to call + // manually if overloading this method. + // + // example: + // Create an Urchin tracker that will track a specific page on init + // after page load (or parsing, if parseOnLoad is true) + // | dojo.addOnLoad(function(){ + // | new dojox.ananlytics.Urchin({ + // | acct:"UA-12345-67", + // | GAonLoad: function(){ + // | this.trackPageView("/custom-page"); + // | } + // | }); + // | }); + + this.trackPageView(); + }, + + trackPageView: function(/* string */url){ + // summary: A public API attached to this widget instance, allowing you + // Ajax-like notification of updates. + // + // url: String + // A location to tell the tracker to track, eg: "/my-ajaxy-endpoint" + // + // example: + // Track clicks from a container of anchors and populate a `ContentPane` + // | // 'tracker' is our `Urchin` instance, pane is the `ContentPane` ref. + // | dojo.connect(container, "onclick", function(e){ + // | var ref = dojo.attr(e.target, "href"); + // | tracker.trackPageView(ref); + // | pane.attr("href", ref); + // | }); + + this.tracker._trackPageview.apply(this.tracker, arguments); + } + + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/_base.js b/js/dojo-release-1.7.2-src/dojox/analytics/_base.js new file mode 100644 index 0000000..33a0074 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/_base.js @@ -0,0 +1,140 @@ +define(["dojo/_base/lang", "dojo/_base/config", "dojo/ready", "dojo/_base/unload", + "dojo/_base/sniff", "dojo/_base/xhr", "dojo/_base/json", "dojo/io-query", "dojo/io/script" +], function(lang, config, ready, unload, has, xhr, json, ioQuery, scriptIO){ + /*===== + ready = dojo.ready; + ioQuery = dojo/io-query; + scriptIO = dojo/io/script; + =====*/ + + var Analytics = function(){ + // summary: TODOC + // where we store data until we're ready to send it off. + // + //the data queue; + this._data = []; + + //id of messages for this session/page + this._id = 1; + + //some default values + this.sendInterval = config["sendInterval"] || 5000; + this.inTransitRetry = config["inTransitRetry"] || 200; + this.dataUrl = config["analyticsUrl"] || require.toUrl("dojox/analytics/logger/dojoxAnalytics.php"); + this.sendMethod = config["sendMethod"] || "xhrPost"; + this.maxRequestSize = has("ie") ? 2000 : config["maxRequestSize"] || 4000; + + //while we can go ahead and being logging as soon as this constructor is completed + //we're not going to schedule pushing data to the server until after the page + //has completed loading + ready(this, "schedulePusher"); + unload.addOnUnload(this, "pushData", true); + }; + + lang.extend(Analytics, { + schedulePusher: function(/* Int */interval){ + // summary: Schedule the data pushing routines to happen in interval ms + setTimeout(lang.hitch(this, "checkData"), interval || this.sendInterval); + }, + + addData: function(dataType, data){ + // summary: + // add data to the queue. Will be pusshed to the server on the next + // data push + + if(arguments.length > 2){ + // FIXME: var c = dojo._toArray(arguments) ? + var c = []; + for(var i = 1; i < arguments.length; i++){ + c.push(arguments[i]); + } + data = c; + } + + this._data.push({ plugin: dataType, data: data }); + }, + + checkData: function(){ + // summary: TODOC? + if(this._inTransit){ + this.schedulePusher(this.inTransitRetry); + return; + } + + if(this.pushData()){ return; } + this.schedulePusher(); + }, + + pushData: function(){ + // summary: + // pushes data to the server if any exists. If a push is done, return + // the deferred after hooking up completion callbacks. If there is no data + // to be pushed, return false; + if(this._data.length){ + //clear the queue + this._inTransit = this._data; + this._data = []; + var def; + switch(this.sendMethod){ + case "script": + def = scriptIO.get({ + url: this.getQueryPacket(), + preventCache: 1, + callbackParamName: "callback" + }); + break; + case "xhrPost": + default: + def = xhr.post({ + url:this.dataUrl, + content:{ + id: this._id++, + data: json.toJson(this._inTransit) + } + }); + break; + } + def.addCallback(this, "onPushComplete"); + return def; + } + return false; + }, + + getQueryPacket: function(){ + // summary: TODOC + while(true){ + var content = { + id: this._id++, + data: json.toJson(this._inTransit) + }; + + //FIXME would like a much better way to get the query down to length + var query = this.dataUrl + '?' + ioQuery.objectToQuery(content); + if(query.length > this.maxRequestSize){ + this._data.unshift(this._inTransit.pop()); + this._split = 1; + }else{ + return query; + } + } + }, + + onPushComplete: function(results){ + // summary: + // If our data push was successfully, remove the _inTransit data and schedule the next + // parser run. + if(this._inTransit){ + delete this._inTransit; + } + + if(this._data.length > 0){ + this.schedulePusher(this.inTransitRetry); + }else{ + this.schedulePusher(); + } + } + }); + + //create the analytics singleton + return lang.setObject("dojox.analytics",new Analytics()); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/logger/JSON.php b/js/dojo-release-1.7.2-src/dojox/analytics/logger/JSON.php new file mode 100755 index 0000000..e87e4d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/logger/JSON.php @@ -0,0 +1,724 @@ + + * @author Matt Knapp + * @author Brett Stimmerman + * @copyright 2005 Michal Migurski + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + */ + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_SLICE', 1); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_STR', 2); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_ARR', 4); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_OBJ', 8); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_CMT', 16); + +/** + * Behavior switch for Services_JSON::decode() + */ +define('SERVICES_JSON_LOOSE_TYPE', 10); + +/** + * Behavior switch for Services_JSON::decode() + */ +define('SERVICES_JSON_STRICT_TYPE', 11); + +/** + * Converts to and from JSON format. + * + * Brief example of use: + * + * + * // create a new instance of Services_JSON + * $json = new Services_JSON(); + * + * // convert a complexe value to JSON notation, and send it to the browser + * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); + * $output = $json->encode($value); + * + * print($output); + * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] + * + * // accept incoming POST data, assumed to be in JSON notation + * $input = file_get_contents('php://input', 1000000); + * $value = $json->decode($input); + * + */ +class Services_JSON +{ + /** + * constructs a new JSON instance + * + * @param int $use object behavior: when encoding or decoding, + * be loose or strict about object/array usage + * + * possible values: + * - SERVICES_JSON_STRICT_TYPE: strict typing, default. + * "{...}" syntax creates objects in decode(). + * - SERVICES_JSON_LOOSE_TYPE: loose typing. + * "{...}" syntax creates associative arrays in decode(). + */ + function Services_JSON($use = SERVICES_JSON_STRICT_TYPE) + { + $this->use = $use; + } + + /** + * convert a string from one UTF-16 char to one UTF-8 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf16 UTF-16 character + * @return string UTF-8 character + * @access private + */ + function utf162utf8($utf16) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) + return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); + + $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); + + switch(true) { + case ((0x7F & $bytes) == $bytes): + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x7F & $bytes); + + case (0x07FF & $bytes) == $bytes: + // return a 2-byte UTF-8 character + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0xC0 | (($bytes >> 6) & 0x1F)) + . chr(0x80 | ($bytes & 0x3F)); + + case (0xFFFF & $bytes) == $bytes: + // return a 3-byte UTF-8 character + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0xE0 | (($bytes >> 12) & 0x0F)) + . chr(0x80 | (($bytes >> 6) & 0x3F)) + . chr(0x80 | ($bytes & 0x3F)); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * convert a string from one UTF-8 char to one UTF-16 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf8 UTF-8 character + * @return string UTF-16 character + * @access private + */ + function utf82utf16($utf8) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) + return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); + + switch(strlen($utf8)) { + case 1: + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return $utf8; + + case 2: + // return a UTF-16 character from a 2-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x07 & (ord($utf8{0}) >> 2)) + . chr((0xC0 & (ord($utf8{0}) << 6)) + | (0x3F & ord($utf8{1}))); + + case 3: + // return a UTF-16 character from a 3-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr((0xF0 & (ord($utf8{0}) << 4)) + | (0x0F & (ord($utf8{1}) >> 2))) + . chr((0xC0 & (ord($utf8{1}) << 6)) + | (0x7F & ord($utf8{2}))); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to Services_JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return string JSON string representation of input var + * @access public + */ + function encode($var) + { + switch (gettype($var)) { + case 'boolean': + return $var ? 'true' : 'false'; + + case 'NULL': + return 'null'; + + case 'integer': + return (int) $var; + + case 'double': + case 'float': + return (float) $var; + + case 'string': + // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT + $ascii = ''; + $strlen_var = strlen($var); + + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ + for ($c = 0; $c < $strlen_var; ++$c) { + + $ord_var_c = ord($var{$c}); + + switch (true) { + case $ord_var_c == 0x08: + $ascii .= '\b'; + break; + case $ord_var_c == 0x09: + $ascii .= '\t'; + break; + case $ord_var_c == 0x0A: + $ascii .= '\n'; + break; + case $ord_var_c == 0x0C: + $ascii .= '\f'; + break; + case $ord_var_c == 0x0D: + $ascii .= '\r'; + break; + + case $ord_var_c == 0x22: + case $ord_var_c == 0x2F: + case $ord_var_c == 0x5C: + // double quote, slash, slosh + $ascii .= '\\'.$var{$c}; + break; + + case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ascii .= $var{$c}; + break; + + case (($ord_var_c & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, ord($var{$c + 1})); + $c += 1; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2})); + $c += 2; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3})); + $c += 3; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4})); + $c += 4; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4}), + ord($var{$c + 5})); + $c += 5; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + } + } + + return '"'.$ascii.'"'; + + case 'array': + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ + + // treat as a JSON object + if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + return '{' . + join(',', array_map(array($this, 'name_value'), + array_keys($var), + array_values($var))) + . '}'; + } + + // treat it like a regular array + return '[' . join(',', array_map(array($this, 'encode'), $var)) . ']'; + + case 'object': + $vars = get_object_vars($var); + return '{' . + join(',', array_map(array($this, 'name_value'), + array_keys($vars), + array_values($vars))) + . '}'; + + default: + return ''; + } + } + + /** + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + function name_value($name, $value) + { + return $this->encode(strval($name)) . ':' . $this->encode($value); + } + + /** + * reduce a string by removing leading and trailing comments and whitespace + * + * @param $str string string value to strip of comments and whitespace + * + * @return string string value stripped of comments and whitespace + * @access private + */ + function reduce_string($str) + { + $str = preg_replace(array( + + // eliminate single line comments in '// ...' form + '#^\s*//(.+)$#m', + + // eliminate multi-line comments in '/* ... */' form, at start of string + '#^\s*/\*(.+)\*/#Us', + + // eliminate multi-line comments in '/* ... */' form, at end of string + '#/\*(.+)\*/\s*$#Us' + + ), '', $str); + + // eliminate extraneous space + return trim($str); + } + + /** + * decodes a JSON string into appropriate variable + * + * @param string $str JSON-formatted string + * + * @return mixed number, boolean, string, array, or object + * corresponding to given JSON input string. + * See argument 1 to Services_JSON() above for object-output behavior. + * Note that decode() always returns strings + * in ASCII or UTF-8 format! + * @access public + */ + function decode($str) + { + $str = $this->reduce_string($str); + + switch (strtolower($str)) { + case 'true': + return true; + + case 'false': + return false; + + case 'null': + return null; + + default: + if (is_numeric($str)) { + // Lookie-loo, it's a number + + // This would work on its own, but I'm trying to be + // good about returning integers where appropriate: + // return (float)$str; + + // Return float or int, as appropriate + return ((float)$str == (integer)$str) + ? (integer)$str + : (float)$str; + + } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { + // STRINGS RETURNED IN UTF-8 FORMAT + $delim = substr($str, 0, 1); + $chrs = substr($str, 1, -1); + $utf8 = ''; + $strlen_chrs = strlen($chrs); + + for ($c = 0; $c < $strlen_chrs; ++$c) { + + $substr_chrs_c_2 = substr($chrs, $c, 2); + $ord_chrs_c = ord($chrs{$c}); + + switch (true) { + case $substr_chrs_c_2 == '\b': + $utf8 .= chr(0x08); + ++$c; + break; + case $substr_chrs_c_2 == '\t': + $utf8 .= chr(0x09); + ++$c; + break; + case $substr_chrs_c_2 == '\n': + $utf8 .= chr(0x0A); + ++$c; + break; + case $substr_chrs_c_2 == '\f': + $utf8 .= chr(0x0C); + ++$c; + break; + case $substr_chrs_c_2 == '\r': + $utf8 .= chr(0x0D); + ++$c; + break; + + case $substr_chrs_c_2 == '\\"': + case $substr_chrs_c_2 == '\\\'': + case $substr_chrs_c_2 == '\\\\': + case $substr_chrs_c_2 == '\\/': + if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || + ($delim == "'" && $substr_chrs_c_2 != '\\"')) { + $utf8 .= $chrs{++$c}; + } + break; + + case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)): + // single, escaped unicode character + $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2))) + . chr(hexdec(substr($chrs, ($c + 4), 2))); + $utf8 .= $this->utf162utf8($utf16); + $c += 5; + break; + + case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): + $utf8 .= $chrs{$c}; + break; + + case ($ord_chrs_c & 0xE0) == 0xC0: + // characters U-00000080 - U-000007FF, mask 110XXXXX + //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 2); + ++$c; + break; + + case ($ord_chrs_c & 0xF0) == 0xE0: + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 3); + $c += 2; + break; + + case ($ord_chrs_c & 0xF8) == 0xF0: + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 4); + $c += 3; + break; + + case ($ord_chrs_c & 0xFC) == 0xF8: + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 5); + $c += 4; + break; + + case ($ord_chrs_c & 0xFE) == 0xFC: + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 6); + $c += 5; + break; + + } + + } + + return $utf8; + + } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { + // array, or object notation + + if ($str{0} == '[') { + $stk = array(SERVICES_JSON_IN_ARR); + $arr = array(); + } else { + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $stk = array(SERVICES_JSON_IN_OBJ); + $obj = array(); + } else { + $stk = array(SERVICES_JSON_IN_OBJ); + $obj = new stdClass(); + } + } + + array_push($stk, array('what' => SERVICES_JSON_SLICE, + 'where' => 0, + 'delim' => false)); + + $chrs = substr($str, 1, -1); + $chrs = $this->reduce_string($chrs); + + if ($chrs == '') { + if (reset($stk) == SERVICES_JSON_IN_ARR) { + return $arr; + + } else { + return $obj; + + } + } + + //print("\nparsing {$chrs}\n"); + + $strlen_chrs = strlen($chrs); + + for ($c = 0; $c <= $strlen_chrs; ++$c) { + + $top = end($stk); + $substr_chrs_c_2 = substr($chrs, $c, 2); + + if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) { + // found a comma that is not inside a string, array, etc., + // OR we've reached the end of the character list + $slice = substr($chrs, $top['where'], ($c - $top['where'])); + array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); + //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + if (reset($stk) == SERVICES_JSON_IN_ARR) { + // we are in an array, so just push an element onto the stack + array_push($arr, $this->decode($slice)); + + } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { + // we are in an object, so figure + // out the property name and set an + // element in an associative array, + // for now + if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { + // "name":value pair + $key = $this->decode($parts[1]); + $val = $this->decode($parts[2]); + + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $obj[$key] = $val; + } else { + $obj->$key = $val; + } + } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { + // name:value pair, where name is unquoted + $key = $parts[1]; + $val = $this->decode($parts[2]); + + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $obj[$key] = $val; + } else { + $obj->$key = $val; + } + } + + } + + } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) { + // found a quote, and we are not inside a string + array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); + //print("Found start of string at {$c}\n"); + + } elseif (($chrs{$c} == $top['delim']) && + ($top['what'] == SERVICES_JSON_IN_STR) && + (($chrs{$c - 1} != '\\') || + ($chrs{$c - 1} == '\\' && $chrs{$c - 2} == '\\'))) { + // found a quote, we're in a string, and it's not escaped + array_pop($stk); + //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); + + } elseif (($chrs{$c} == '[') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a left-bracket, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false)); + //print("Found start of array at {$c}\n"); + + } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) { + // found a right-bracket, and we're in an array + array_pop($stk); + //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } elseif (($chrs{$c} == '{') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a left-brace, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); + //print("Found start of object at {$c}\n"); + + } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) { + // found a right-brace, and we're in an object + array_pop($stk); + //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } elseif (($substr_chrs_c_2 == '/*') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a comment start, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false)); + $c++; + //print("Found start of comment at {$c}\n"); + + } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) { + // found a comment end, and we're in one now + array_pop($stk); + $c++; + + for ($i = $top['where']; $i <= $c; ++$i) + $chrs = substr_replace($chrs, ' ', $i, 1); + + //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } + + } + + if (reset($stk) == SERVICES_JSON_IN_ARR) { + return $arr; + + } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { + return $obj; + + } + + } + } + } + +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/logger/dojoxAnalytics.php b/js/dojo-release-1.7.2-src/dojox/analytics/logger/dojoxAnalytics.php new file mode 100644 index 0000000..dfc7ac8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/logger/dojoxAnalytics.php @@ -0,0 +1,31 @@ +decode($_REQUEST["data"]); + + if (!$handle = fopen($filename, 'a+')) { + print '{error: "server error"}'; + exit; + } + + foreach($items as $i=>$item){ + $item->_analyticsId = $id; + $item->_analyticsTimeStamp = time(); + $log = $json->encode($item) . "\n"; + fwrite($handle, $log); + } + + fclose($handle); + + $response = "{'eventsRecieved': '" . sizeof($items) . "', 'id': '" . $id . "'}"; + if ($_REQUEST["callback"]){ + print htmlentities($_REQUEST["callback"]) . "(" . $response . ");"; + }else{ + print $response; + } + +?> diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/plugins/consoleMessages.js b/js/dojo-release-1.7.2-src/dojox/analytics/plugins/consoleMessages.js new file mode 100644 index 0000000..19602cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/plugins/consoleMessages.js @@ -0,0 +1,26 @@ +define(["dojo/_base/lang","../_base", "dojo/_base/config", "dojo/aspect" +], function(lang, dxa, config, aspect){ + /*===== + dxa = dojox.analytics; + aspect = dojo.aspect; + =====*/ + consoleMessages = lang.getObject("dojox.analytics.plugins.consoleMessages", true); + + // summary: + // plugin to have analyitcs return the base info dojo collects + this.addData = lang.hitch(dxa, "addData", "consoleMessages"); + + var lvls = config["consoleLogFuncs"] || ["error", "warn", "info", "rlog"]; + if(!console){ + console = {}; + } + + for(var i=0; i < lvls.length; i++){ + if(console[lvls[i]]){ + aspect.after(console, lvls[i], lang.hitch(this, "addData", lvls[i]),true); + }else{ + console[lvls[i]] = lang.hitch(this, "addData", lvls[i]); + } + } + return consoleMessages; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/plugins/dojo.js b/js/dojo-release-1.7.2-src/dojox/analytics/plugins/dojo.js new file mode 100644 index 0000000..75f367d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/plugins/dojo.js @@ -0,0 +1,27 @@ +define(["dojo/_base/lang","../_base", "dojo/_base/config", "dojo/ready" +], function(lang, dxa, config, ready){ + var plugins = lang.getObject("dojox.analytics.plugins", true); + /*===== + dxa = dojox.analytics; + ready = dojo.ready; + plugins = dojox.analytics.plugins; + plugins.dojo = dojox.analytics.plugins.dojo; + =====*/ + + return (plugins.dojo = new (function(){ + // summary: + // plugin to have analyitcs return the base info dojo collects + this.addData = lang.hitch(dxa, "addData", "dojo"); + ready(lang.hitch(this, function(){ + var data = {}; + for(var i in dojo){ + if ((i=="version") || ((!(typeof dojo[i] == "object" || typeof dojo[i] == "function"))&&(i[0]!="_"))){ + data[i]=dojo[i]; + } + } + + if (config){data.djConfig=config} + this.addData(data); + })); + })()); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/plugins/idle.js b/js/dojo-release-1.7.2-src/dojox/analytics/plugins/idle.js new file mode 100644 index 0000000..236d455 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/plugins/idle.js @@ -0,0 +1,38 @@ +define(["dojo/_base/lang", "../_base", "dojo/_base/config", "dojo/ready", + "dojo/aspect", "dojo/_base/window" +], function(lang, dxa, config, ready, aspect, window){ + /*===== + dxa = dojox.analytics; + ready = dojo.ready; + aspect = dojo/aspect; + =====*/ + + // window startup data + return (dxa.plugins.idle = new (function(){ + this.addData = lang.hitch(dxa, "addData", "idle"); + this.idleTime=config["idleTime"] || 60000; + this.idle=true; + + this.setIdle = function(){ + this.addData("isIdle"); + this.idle=true; + + } + + ready(lang.hitch(this, function(){ + var idleResets=["onmousemove","onkeydown","onclick","onscroll"]; + for (var i=0;i + + + Dojox Analytics Test + + + + + + + + + + + + + + + + + +

                            Simple Lazy loading of Google Analytics Code

                            + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_GoogleAnalyticsMarkup.html b/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_GoogleAnalyticsMarkup.html new file mode 100644 index 0000000..6979163 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_GoogleAnalyticsMarkup.html @@ -0,0 +1,51 @@ + + + + Dojox Analytics Test + + + + + + + + + + + + + + + +

                            Simple Lazy loading of Google Analytics Code

                            + +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_analytics-async.html b/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_analytics-async.html new file mode 100644 index 0000000..69cb559 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_analytics-async.html @@ -0,0 +1,121 @@ + + + + Dojox Analytics Test + + + + + + + + + + + + + + + + + + + + + + + + + +
                            +

                            Async Analytics Test

                            +
                            +
                            + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. + + cometdaily.com +
                            + +
                            + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. + + dojotoolkit.org +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_analytics.html b/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_analytics.html new file mode 100644 index 0000000..eb08e8b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/analytics/tests/test_analytics.html @@ -0,0 +1,103 @@ + + + + Dojox Analytics Test + + + + + + + + + + + + + + + + + + + + + + + + + +
                            +

                            Dijit TitlePane Test

                            +
                            +
                            + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. + + cometdaily.com +
                            + +
                            + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. + + dojotoolkit.org +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/app/README.txt b/js/dojo-release-1.7.2-src/dojox/app/README.txt new file mode 100644 index 0000000..1849006 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/README.txt @@ -0,0 +1,174 @@ +------------------------------------------------------------------------------- +DojoX app +------------------------------------------------------------------------------- +Version 0.1 +Release date: 05/08/2011 +------------------------------------------------------------------------------- +Project state: EXPERIMENTAL / Under Construction + +This project is under active development with increasing capabilities beginning +in dojo 1.7, but is not yet capable or stable enough to use in production +------------------------------------------------------------------------------- +Project authors + Dustin Machi + Stephen Zhang +------------------------------------------------------------------------------- +Project description + +dojox/app is a small application framework providing a set of classes to manage the the lifecycle and behavior of a single page application hosted on mobile or desktop platforms. The main class, Application, is responsible for providing the lifecycle of the application, but is designed to be easily modified with additional custom behaviors. An application instance contains scenes and views which provide the visible user interface. The available views, scenes, module dependencies, and other information about the application are all passed into the Application class through a JSON configuration file. +------------------------------------------------------------------------------- +Dependencies: + +Dojo Core (dijit, dojox/mobile). +------------------------------------------------------------------------------- +Documentation + +config.json + +The config file defines all of the dependencies, application behaviors, top level views and scenes, and any other information required for the application to function. + +Example Config: + +{ + /* global application dependencies */ + "dependencies": [ + "dojox/mobile/Heading", + "dojo/mobile/RoundRect", + "my/custom/module" + ], + + /* Application Modules. These are implicitly added to the above set of dependencies */ + modules: [ + "dojox/app/module/history", + "my/custom/appModule" + ], + + /* The html template for the application itself */ + template: "example.html", + + /* the view to start on by default */ + "defaultView": "home", + + /* transition to use if none has been provided */ + "defaultTransition": "slide", + + /* Views and Scenes */ + "views": { + + /* home is a top level dojox.app.view */ + "home": { + + /* class to instantiate this view as */ + "type": "dojox.app.view", + + /* dependencies specific to this view */ + "dependencies: [ + "dojox/mobile/ListItem", + "dojox/mobile/EdgeToEdgeCategory" + ], + + /* template to use for this view */ + template: "views/home.html" + }, + + /* tabscene is a dojox.app.scene, and it contains three child views */ + + "tabscene": { + /* class to instantiate, a scene in this case */ + "type": "dojox.app.scene", + + /* the scene's template */ + "template": "tabScene.html", + + /* the default view within this scene */ + "defaultView": "tab1", + + /* when transitioning between tabs, use a flip animation by default */ + "defaultTransition": "flip", + + //the views available to this scene + "views": { + "tab1":{ + "template": "views/tabs/tab1.html" + }, + "tab2":{ + "template": "views/tabs/tab2.html" + }, + "tab3":{ + "template": "views/tabs/tab3.html" + } + }, + + /* dependencies specific to this scene */ + "dependencies":["dojox/mobile/RoundRectList","dojox/mobile/ListItem", "dojox/mobile/EdgeToEdgeCategory"], + } + + } +} + + + +Property descriptions + + - dependencies - These are the modules that are required for the application when defined at the root of the configuration. When defined inside of a scene or a view, the dependency property defines modules which must be loaded before that view/scene can be instantiated. + + - modules - The modules property defines application modules that will mixed into the Application class to control the lifecycle and behavior of the application. These properties will become the array of mixins provided to a dojo.declare() extending the base Application class. In other words, the Application class that is instantiated is dynamically created at run time using the base class and this list of modules. + + - template - This is the template/html that is used for the application when defined at the root of the configuration. Within the context of a view or a scene, it is the template/html for defining said component. + + - defaultView - The default view defines the starting view for the application when loaded to its root. + + - defaultTransition - This is the default transition method for top level views/scenes when defined at the root of the configuration. When defined within a scene, it is the default transition method for the associated scene only. + + - views - The views property is a nested set of objects defining the views and scenes available to the application. Details of views and scene classes will be discussed below. + +Some additional properties, such as models, stores, id, name, and description are reserved for future use, but their exact use is still under development. + +The Application Class: + The application class itself doesn't currently exist as an exported class! The base Application class is a very simple extension of the Scene Class (see below) defined in dojox/app/main.js. This module file exports a generatation function, which when provided a configuration file will declare the application class that will actually be used on a page and then start it up at a specific node: + + + require(["dojo/_base/html","dojox/app/main", "dojo/text!app/config.json"],function(dojo,Application,config){ + app = Application(json.parse(config)); + }); + + + +The Scene Class: + + The Scene Class provides a templated container for views. Its purpose is to allow the layout of the scene to be provided through an html template and to have a set of children views which the scene transitions between. For example, to display a set of tabs, you would use a Scene with a child view for each tab. The scene's template would define where within the scene the views are displayed and where any tab buttons and such are displayed. + + Internally, the Scene steals some concepts layout and templated dijits provide. The "template", for the base Scene is pretty simple and not really a template. It is simply HTML content. However, nodes within the template can be tagged with region="top" (bottom, left, right) to define where that node and its children should be displayed. For example: + + +
                            +
                            Tab Scene
                            +
                              +
                            • Tab 1
                            • +
                            • Tab 2
                            • +
                            • Tab 3
                            • +
                            +
                            +
                            + +This template for the tab scene defines two areas with region top, a header and the tab buttons. The will be placed at the top of this scene when rendered. + +Normally, when using a BorderContainer, one would also have a region="center" section. In the case of a Scene however, the "center" region will be applied to the currently active view (the current tab for example). + +In addition to the code to support the appropriate lifecycle of the scene and its rendering, it provides a transition method which controls the transition of content from one child view to another. This includes propogating transition events on to children if the active child is itself another scene. Scene can container views and other scenes. Views can only be leaf nodes in the view tree. + +The View Class: + +Views, like Scenes, are also containers of content. However, instead of containing additional views as children, they contain only the content defined by their template. The template may contain widgets. + +All three of these classes are intended to, at their base, be as simple and feature free as possible providing only basic structure and lifecycle described above (though additional core methods/lifecycle hooks will be added as the are worked out). A developer using the dojox/app framework can define additional custom view or scene types simply by extending the base classes (or implementing equivalent functionality) and defining them in the applications configuration file. The base application need not be extended, as its extensions are provided at run time through the modules config property. Scenes and Views are easily extended and included in an app. + +TODO: + +dojox/app is still an experimental framework with several key pieces still under design and development before a final release. This final release is expected to occur prior to the Dojo 2.0 release. The following items are piece that are under development and testing and we see as requirements prior to the final release + +- Model/Store support. We have a couple of preliminary implementations of model/store support, including one for dojox/mvc. However, additional work and testing are required to come to a simple and agreed up on API for these components. While MVC systems such as dojox/mvc should be supported with first class capabilities, they should not be required. An application developer can 'control' the html of any one view by simply extending the view class and using javascript if they so desired. + +- Desktop/Mobile Branching - Dojox/app is not to be specific to any one particular web platform. Using css media selectors and definitions within the config, there will be support for choosing which set of views and parameters to use based on the users browser. + +- Intelligent build support - For performance, especially on the mobile side, an appropriate build of the application is required. Rather than adding a build profile for the app, there will be a wrapper utility that runs the build from the config.json. This will allow us to intelligently build the base layers and dynamically loaded layers which should be defined by dependencies and default views as well as other information. diff --git a/js/dojo-release-1.7.2-src/dojox/app/animation.js b/js/dojo-release-1.7.2-src/dojox/app/animation.js new file mode 100644 index 0000000..a2d168c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/animation.js @@ -0,0 +1,346 @@ +define(["dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/Deferred", + "dojo/DeferredList", + "dojo/on", + "dojo/_base/sniff"], + function(dojo, lang, declare, array, deferred, deferredList, on, has){ + //TODO create cross platform animation/transition effects + var transitionEndEventName = "transitionend"; + var transitionPrefix = "t"; //by default use "t" prefix and "ransition" to make word "transition" + var translateMethodStart = "translate3d(";//Android 2.x does not support translateX in CSS Transition, we need to use translate3d in webkit browsers + var translateMethodEnd = ",0,0)"; + if(has("webkit")){ + transitionPrefix = "WebkitT"; + transitionEndEventName = "webkitTransitionEnd"; + }else if(has("mozilla")){ + transitionPrefix = "MozT"; + translateMethodStart = "translateX("; + translateMethodEnd = ")"; + } + + + + //TODO find a way to lock the animation and prevent animation conflict + declare("dojox.app.animation", null, { + + + constructor: function(args){ + //default config should be in animation object itself instead of its prototype + //otherwise, it might be easy for making mistake of modifying prototype + var defaultConfig = { + startState: {}, + endState: {}, + node: null, + duration: 250, + "in": true, + direction: 1, + autoClear: true + }; + + lang.mixin(this, defaultConfig); + lang.mixin(this, args); + + //create the deferred object which will resolve after the animation is finished. + //We can rely on "onAfterEnd" function to notify the end of a single animation, + //but using a deferred object is easier to wait for multiple animations end. + if(!this.deferred){ + this.deferred = new deferred(); + } + }, + + play: function(){ + //play the animation using CSS3 Transition + dojox.app.animation.groupedPlay([this]); + }, + + //method to apply the state of the transition + _applyState: function(state){ + var style = this.node.style; + for(var property in state){ + if(state.hasOwnProperty(property)){ + style[property] = state[property]; + } + } + }, + + //method to initialize state for transition + initState: function(){ + + //apply the immediate style change for initial state. + this.node.style[transitionPrefix + "ransitionProperty"] = "none"; + this.node.style[transitionPrefix + "ransitionDuration"] = "0ms"; + this._applyState(this.startState); + + }, + + _beforeStart: function(){ + if (this.node.style.display === "none"){ + this.node.style.display = ""; + } + this.beforeStart(); + }, + + _beforeClear: function(){ + this.node.style[transitionPrefix + "ransitionProperty"] = null; + this.node.style[transitionPrefix + "ransitionDuration"] = null; + if(this["in"] !== true){ + this.node.style.display = "none"; + } + this.beforeClear(); + }, + + _onAfterEnd: function(){ + this.deferred.resolve(this.node); + if(this.node.id && dojox.app.animation.playing[this.node.id]===this.deferred){ + delete dojox.app.animation.playing[this.node.id]; + } + this.onAfterEnd(); + }, + + beforeStart: function(){ + + }, + + beforeClear: function(){ + + }, + + onAfterEnd: function(){ + + }, + + //method to start the transition + start: function(){ + this._beforeStart(); + + var self = this; + //change the transition duration + self.node.style[transitionPrefix + "ransitionProperty"] = "all"; + self.node.style[transitionPrefix + "ransitionDuration"] = self.duration + "ms"; + + //connect to clear the transition state after the transition end. + //Since the transition is conducted asynchronously, we need to + //connect to transition end event to clear the state + on.once(self.node, transitionEndEventName, function(){ + self.clear(); + }); + + this._applyState(this.endState); + }, + + //method to clear state after transition + clear: function(){ + this._beforeClear(); + this._removeState(this.endState); + console.log(this.node.id + " clear."); + this._onAfterEnd(); + }, + + //create removeState method + _removeState: function(state){ + var style = this.node.style; + for(var property in state){ + if(state.hasOwnProperty(property)){ + style[property] = null; + } + } + } + + }); + + //TODO add the lock mechanism for all of the transition effects + // consider using only one object for one type of transition. + //TODO create the first animation, slide. + dojox.app.animation.slide = function(node, config){ + + //TODO create the return and set the startState, endState of the return + var ret = new dojox.app.animation(config); + ret.node = node; + + var startX = "0"; + var endX = "0"; + + if(ret["in"]){ + if(ret.direction === 1){ + startX = "100%"; + }else{ + startX = "-100%"; + } + }else{ + if(ret.direction === 1){ + endX = "-100%"; + }else{ + endX = "100%"; + } + } + + + ret.startState[transitionPrefix + "ransform"]=translateMethodStart+startX+translateMethodEnd; + + ret.endState[transitionPrefix + "ransform"]=translateMethodStart+endX+translateMethodEnd; + + return ret; + }; + + + //fade in/out animation effects + dojox.app.animation.fade = function(node, config){ + + var ret = new dojox.app.animation(config); + ret.node = node; + + var startOpacity = "0"; + var endOpacity = "0"; + + if(ret["in"]){ + endOpacity = "1"; + }else{ + startOpacity = "1"; + } + + lang.mixin(ret, { + startState:{ + "opacity": startOpacity + }, + endState:{ + "opacity": endOpacity + } + }); + + return ret; + }; + + //fade in/out animation effects + dojox.app.animation.flip = function(node, config){ + + var ret = new dojox.app.animation(config); + ret.node = node; + + if(ret["in"]){ + //Need to set opacity here because Android 2.2 has bug that + //scale(...) in transform does not persist status + lang.mixin(ret,{ + startState:{ + "opacity": "0" + }, + endState:{ + "opacity": "1" + } + }); + ret.startState[transitionPrefix + "ransform"]="scale(0,0.8) skew(0,-30deg)"; + ret.endState[transitionPrefix + "ransform"]="scale(1,1) skew(0,0)"; + }else{ + lang.mixin(ret,{ + startState:{ + "opacity": "1" + }, + endState:{ + "opacity": "0" + } + }); + ret.startState[transitionPrefix + "ransform"]="scale(1,1) skew(0,0)"; + ret.endState[transitionPrefix + "ransform"]="scale(0,0.8) skew(0,30deg)"; + } + + return ret; + }; + + var getWaitingList = function(/*Array*/ nodes){ + var defs = []; + array.forEach(nodes, function(node){ + //check whether the node is under other animation + if(node.id && dojox.app.animation.playing[node.id]){ + //TODO hook on deferred object in dojox.app.animation.playing + defs.push(dojox.app.animation.playing[node.id]); + } + + }); + return new deferredList(defs); + }; + + dojox.app.animation.getWaitingList = getWaitingList; + + //TODO groupedPlay should ensure the UI update happens when + //all animations end. + //the group player to start multiple animations together + dojox.app.animation.groupedPlay = function(/*Array*/args){ + //args should be array of dojox.app.animation + + var animNodes = array.filter(args, function(item){ + return item.node; + }); + + var waitingList = getWaitingList(animNodes); + + //update registry with deferred objects in animations of args. + array.forEach(args, function(item){ + if(item.node.id){ + dojox.app.animation.playing[item.node.id] = item.deferred; + } + }); + + //TODO wait for all deferred object in deferred list to resolve + dojo.when(waitingList, function(){ + array.forEach(args, function(item){ + //set the start state + item.initState(); + }); + + //Assume the fps of the animation should be higher than 30 fps and + //allow the browser to use one frame's time to redraw so that + //the transition can be started + setTimeout(function(){ + array.forEach(args, function(item){ + item.start(); + }); + }, 33); + }); + }; + + //the chain player to start multiple animations one by one + dojox.app.animation.chainedPlay = function(/*Array*/args){ + //args should be array of dojox.app.animation + + var animNodes = array.filter(args, function(item){ + return item.node; + }); + + var waitingList = getWaitingList(animNodes); + + //update registry with deferred objects in animations of args. + array.forEach(args, function(item){ + if(item.node.id){ + dojox.app.animation.playing[item.node.id] = item.deferred; + } + }); + + dojo.when(waitingList, function(){ + array.forEach(args, function(item){ + //set the start state + item.initState(); + }); + + //chain animations together + for (var i=1, len=args.length; i < len; i++){ + args[i-1].deferred.then(lang.hitch(args[i], function(){ + this.start(); + })); + } + + //Assume the fps of the animation should be higher than 30 fps and + //allow the browser to use one frame's time to redraw so that + //the transition can be started + setTimeout(function(){ + args[0].start(); + }, 33); + }); + }; + + //TODO complete the registry mechanism for animation handling and prevent animation conflicts + dojox.app.animation.playing = {}; + + return dojox.app.animation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/app/bind.js b/js/dojo-release-1.7.2-src/dojox/app/bind.js new file mode 100644 index 0000000..3bb43c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/bind.js @@ -0,0 +1,39 @@ +define(["dojo/_base/kernel", "dojo/query" , "dojo/_base/array", "dijit", "dojo/_base/json"], function(dojo, query, array, dijit, djson){ + return function(/*Array of widgets*/widgets, /*Object*/ models){ + array.forEach(widgets, function(item){ + //TODO need to find a better way to get all bindable widgets + var bindWidgets = query("div[dojoType^=\"dojox.mvc\"],div[data-dojo-type^=\"dojox.mvc\"]", item.domNode); + //set ref for each dojox.mvc widgets. + array.forEach(bindWidgets, function(widget){ + //TODO need to find a better way to know which model the widget is bound to + //currently, the ref attribute in dojox.mvc.Group cannot be empty, leave + //explicit string with single quote in ref attribute. + var ref = widget.getAttribute("ref"); + + if(ref === null){ + var refProps = widget.getAttribute("data-dojo-props"); + if(refProps){ + try{ + refProps = djson.fromJson("{" + refProps + "}"); + }catch(e){ + // give the user a pointer to their invalid parameters. FIXME: can we kill this in production? + throw new Error(e.toString() + " in data-dojo-props='" + extra + "'"); + } + ref = refProps.ref.replace(/^\s*rel\s*:\s*/, ""); + } + } + + if (ref) { + if(ref[0] === "'"){ + ref = ref.substring(1, ref.length-1); + } + var model = dojo.getObject(ref, false, models); + if (model){ + dijit.byNode(widget).set("ref", model); + } + } + }, this); + }, this); + + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/app/main.js b/js/dojo-release-1.7.2-src/dojox/app/main.js new file mode 100644 index 0000000..cc0880f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/main.js @@ -0,0 +1,115 @@ +define(["dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/declare", + "dojo/_base/Deferred", + "dojo/_base/connect", + "dojo/ready", + "dojo/_base/window", + "dojo/dom-construct", + "./scene"], + function(dojo, lang, declare, deferred, connect, ready, baseWindow, dom, sceneCtor){ + + dojo.experimental("dojox.app"); + var Application = declare([sceneCtor], { + constructor: function(params){ + this.scenes={}; + if(params.stores){ + //create stores in the configuration. + for (var item in params.stores){ + if(item.charAt(0)!=="_"){//skip the private properties + var type = params.stores[item].type? params.stores[item].type : "dojo.store.Memory"; + var config = {}; + if(params.stores[item].params){ + dojo.mixin(config, params.stores[item].params); + } + var storeCtor = dojo.getObject(type); + if(config.data && lang.isString(config.data)){ + //get the object specified by string value of data property + //cannot assign object literal or reference to data property + //because json.ref will generate __parent to point to its parent + //and will cause infinitive loop when creating StatefulModel. + config.data = dojo.getObject(config.data); + } + params.stores[item].store = new storeCtor(config); + } + } + } + + }, + + // load default view and startup the default view + start: function(applicaton){ + var child = this.loadChild(); + + deferred.when(child, dojo.hitch(this, function(){ + this.startup(); + + //set application status to STARTED + this.setStatus(this.lifecycle.STARTED); + })); + }, + templateString: "
                            ", + selectedChild: null, + baseClass: "application mblView", + defaultViewType: sceneCtor, + buildRendering: function(){ + if (this.srcNodeRef===baseWindow.body()){ + this.srcNodeRef = dom.create("DIV",{},baseWindow.body()); + } + this.inherited(arguments); + } + }); + + function generateApp(config,node,appSchema,validate){ + + //console.log("config.modules: ", config.modules); + var modules = config.modules.concat(config.dependencies); + + if (config.template){ + //console.log("config.template: ", config.template); + modules.push("dojo/text!" + "app/" + config.template); + } + //console.log("modules: ", modules); + + require(modules, function(){ + var modules=[Application]; + for(var i=0;i0){ + var to = id.shift(); + }else{ + console.warn("invalid child id passed to splitChildRef(): ", childId); + } + + return { + id:to || this.defaultView, + next: id.join(',') + } + }, + + loadChild: function(childId,subIds){ + // if no childId, load the default view + if (!childId) { + var parts = this.defaultView ? this.defaultView.split(",") : "default"; + childId = parts.shift(); + subIds = parts.join(','); + } + + var cid = this.id+"_" + childId; + if (this.children[cid]){ + return this.children[cid]; + } + + if (this.views&& this.views[childId]){ + var conf = this.views[childId]; + if (!conf.dependencies){conf.dependencies=[];} + var deps = conf.template? conf.dependencies.concat(["dojo/text!app/"+conf.template]) : + conf.dependencies.concat([]); + + var def = new deferred(); + if (deps.length>0) { + require(deps,function(){ + def.resolve.call(def, arguments); + }); + }else{ + def.resolve(true); + } + + var loadChildDeferred = new deferred(); + var self = this; + deferred.when(def, function(){ + var ctor; + if (conf.type){ + ctor=dojo.getObject(conf.type); + }else if (self.defaultViewType){ + ctor=self.defaultViewType; + }else{ + throw Error("Unable to find appropriate ctor for the base child class"); + } + + var params = dojo.mixin({}, conf, { + id: self.id + "_" + childId, + templateString: conf.template?arguments[0][arguments[0].length-1]:"
                            ", + parent: self, + app: self.app + }) + if (subIds){ + params.defaultView=subIds; + } + var child = new ctor(params); + //load child's model if it is not loaded before + if(!child.loadedModels){ + child.loadedModels = model(conf.models, self.loadedModels) + //TODO need to find out a better way to get all bindable controls in a view + bind([child], child.loadedModels); + } + var addResult = self.addChild(child); + //publish /app/loadchild event + //application can subscript this event to do user define operation like select TabBarButton, add dynamic script text etc. + connect.publish("/app/loadchild", [child]); + + var promise; + + subIds = subIds.split(','); + if ((subIds[0].length > 0) && (subIds.length > 1)) {//TODO join subIds + promise = child.loadChild(subIds[0], subIds[1]); + } + else + if (subIds[0].length > 0) { + promise = child.loadChild(subIds[0], ""); + } + + dojo.when(promise, function(){ + loadChildDeferred.resolve(addResult) + }); + }); + return loadChildDeferred; + } + + throw Error("Child '" + childId + "' not found."); + }, + + resize: function(changeSize,resultSize){ + var node = this.domNode; + + // set margin box size, unless it wasn't specified, in which case use current size + if(changeSize){ + dgeometry.setMarginBox(node, changeSize); + + // set offset of the node + if(changeSize.t){ node.style.top = changeSize.t + "px"; } + if(changeSize.l){ node.style.left = changeSize.l + "px"; } + } + + // If either height or width wasn't specified by the user, then query node for it. + // But note that setting the margin box and then immediately querying dimensions may return + // inaccurate results, so try not to depend on it. + var mb = resultSize || {}; + dojo.mixin(mb, changeSize || {}); // changeSize overrides resultSize + if( !("h" in mb) || !("w" in mb) ){ + mb = dojo.mixin(dgeometry.getMarginBox(node), mb); // just use dojo.marginBox() to fill in missing values + } + + // Compute and save the size of my border box and content box + // (w/out calling dojo.contentBox() since that may fail if size was recently set) + var cs = dstyle.getComputedStyle(node); + var me = dgeometry.getMarginExtents(node, cs); + var be = dgeometry.getBorderExtents(node, cs); + var bb = (this._borderBox = { + w: mb.w - (me.w + be.w), + h: mb.h - (me.h + be.h) + }); + var pe = dgeometry.getPadExtents(node, cs); + this._contentBox = { + l: dstyle.toPixelValue(node, cs.paddingLeft), + t: dstyle.toPixelValue(node, cs.paddingTop), + w: bb.w - pe.w, + h: bb.h - pe.h + }; + + // Callback for widget to adjust size of its children + this.layout(); + }, + + layout: function(){ + var fullScreenScene,children,hasCenter; + //console.log("fullscreen: ", this.selectedChild && this.selectedChild.isFullScreen); + if (this.selectedChild && this.selectedChild.isFullScreen) { + console.warn("fullscreen sceen layout"); + /* + fullScreenScene=true; + children=[{domNode: this.selectedChild.domNode,region: "center"}]; + dojo.query("> [region]",this.domNode).forEach(function(c){ + if(this.selectedChild.domNode!==c.domNode){ + dojo.style(c.domNode,"display","none"); + } + }) + */ + }else{ + children = query("> [region]", this.domNode).map(function(node){ + var w = dijit.getEnclosingWidget(node); + if (w){return w;} + + return { + domNode: node, + region: dattr.get(node,"region") + } + + }); + if (this.selectedChild){ + children = array.filter(children, function(c){ + if (c.region=="center" && this.selectedChild && this.selectedChild.domNode!==c.domNode){ + dstyle.set(c.domNode,"zIndex",25); + dstyle.set(c.domNode,'display','none'); + return false; + }else if (c.region!="center"){ + dstyle.set(c.domNode,"display",""); + dstyle.set(c.domNode,"zIndex",100); + } + + return c.domNode && c.region; + },this); + + // this.selectedChild.region="center"; + // dojo.attr(this.selectedChild.domNode,"region","center"); + // dojo.style(this.selectedChild.domNode, "display",""); + // dojo.style(this.selectedChild.domNode,"zIndex",50); + + // children.push({domNode: this.selectedChild.domNode, region: "center"}); + // children.push(this.selectedChild); + // console.log("children: ", children); + }else{ + array.forEach(children, function(c){ + if (c && c.domNode && c.region=="center"){ + dstyle.set(c.domNode,"zIndex",25); + dstyle.set(c.domNode,'display','none'); + } + }); + } + + } + // We don't need to layout children if this._contentBox is null for the operation will do nothing. + if (this._contentBox) { + this.layoutChildren(this.domNode, this._contentBox, children); + } + array.forEach(this.getChildren(), function(child){ + if (!child._started && child.startup){ + child.startup(); + } + + }); + + }, + + + layoutChildren: function(/*DomNode*/ container, /*Object*/ dim, /*Widget[]*/ children, + /*String?*/ changedRegionId, /*Number?*/ changedRegionSize){ + // summary + // Layout a bunch of child dom nodes within a parent dom node + // container: + // parent node + // dim: + // {l, t, w, h} object specifying dimensions of container into which to place children + // children: + // an array of Widgets or at least objects containing: + // * domNode: pointer to DOM node to position + // * region or layoutAlign: position to place DOM node + // * resize(): (optional) method to set size of node + // * id: (optional) Id of widgets, referenced from resize object, below. + // changedRegionId: + // If specified, the slider for the region with the specified id has been dragged, and thus + // the region's height or width should be adjusted according to changedRegionSize + // changedRegionSize: + // See changedRegionId. + + // copy dim because we are going to modify it + dim = dojo.mixin({}, dim); + + cls.add(container, "dijitLayoutContainer"); + + // Move "client" elements to the end of the array for layout. a11y dictates that the author + // needs to be able to put them in the document in tab-order, but this algorithm requires that + // client be last. TODO: move these lines to LayoutContainer? Unneeded other places I think. + children = array.filter(children, function(item){ return item.region != "center" && item.layoutAlign != "client"; }) + .concat(array.filter(children, function(item){ return item.region == "center" || item.layoutAlign == "client"; })); + + // set positions/sizes + array.forEach(children, function(child){ + var elm = child.domNode, + pos = (child.region || child.layoutAlign); + + // set elem to upper left corner of unused space; may move it later + var elmStyle = elm.style; + elmStyle.left = dim.l+"px"; + elmStyle.top = dim.t+"px"; + elmStyle.position = "absolute"; + + cls.add(elm, "dijitAlign" + capitalize(pos)); + + // Size adjustments to make to this child widget + var sizeSetting = {}; + + // Check for optional size adjustment due to splitter drag (height adjustment for top/bottom align + // panes and width adjustment for left/right align panes. + if(changedRegionId && changedRegionId == child.id){ + sizeSetting[child.region == "top" || child.region == "bottom" ? "h" : "w"] = changedRegionSize; + } + + // set size && adjust record of remaining space. + // note that setting the width of a
                            may affect its height. + if(pos == "top" || pos == "bottom"){ + sizeSetting.w = dim.w; + size(child, sizeSetting); + dim.h -= child.h; + if(pos == "top"){ + dim.t += child.h; + }else{ + elmStyle.top = dim.t + dim.h + "px"; + } + }else if(pos == "left" || pos == "right"){ + sizeSetting.h = dim.h; + size(child, sizeSetting); + dim.w -= child.w; + if(pos == "left"){ + dim.l += child.w; + }else{ + elmStyle.left = dim.l + dim.w + "px"; + } + }else if(pos == "client" || pos == "center"){ + size(child, dim); + } + }); + }, + + getChildren: function(){ + return this._supportingWidgets; + }, + + startup: function(){ + if(this._started){ return; } + this._started=true; + + var parts = this.defaultView?this.defaultView.split(","):"default"; + var toId, subIds; + toId= parts.shift(); + subIds = parts.join(','); + + if(this.views[this.defaultView] && this.views[this.defaultView]["defaultView"]){ + subIds = this.views[this.defaultView]["defaultView"]; + } + + if(this.models && !this.loadedModels){ + //if there is this.models config data and the models has not been loaded yet, + //load models at here using the configuration data and load model logic in model.js + this.loadedModels = model(this.models); + bind(this.getChildren(), this.loadedModels); + } + + //startup assumes all children are loaded into DOM before startup is called + //startup will only start the current available children. + var cid = this.id + "_" + toId; + if (this.children[cid]) { + var next = this.children[cid]; + + this.set("selectedChild", next); + + // If I am a not being controlled by a parent layout widget... + var parent = this.getParent && this.getParent(); + if (!(parent && parent.isLayoutContainer)) { + // Do recursive sizing and layout of all my descendants + // (passing in no argument to resize means that it has to glean the size itself) + this.resize(); + + // Since my parent isn't a layout container, and my style *may be* width=height=100% + // or something similar (either set directly or via a CSS class), + // monitor when my size changes so that I can re-layout. + // For browsers where I can't directly monitor when my size changes, + // monitor when the viewport changes size, which *may* indicate a size change for me. + this.connect(has("ie") ? this.domNode : dojo.global, 'onresize', function(){ + // Using function(){} closure to ensure no arguments to resize. + this.resize(); + }); + + } + + array.forEach(this.getChildren(), function(child){ + child.startup(); + }); + + //transition to _startView + if (this._startView && (this._startView != this.defaultView)) { + this.transition(this._startView, {}); + } + } + }, + + addChild: function(widget){ + cls.add(widget.domNode, this.baseClass + "_child"); + widget.region = "center";; + dattr.set(widget.domNode,"region","center"); + this._supportingWidgets.push(widget); + dconstruct.place(widget.domNode,this.domNode); + this.children[widget.id] = widget; + return widget; + }, + + removeChild: function(widget){ + // summary: + // Removes the passed widget instance from this widget but does + // not destroy it. You can also pass in an integer indicating + // the index within the container to remove + + if(widget){ + var node = widget.domNode; + if(node && node.parentNode){ + node.parentNode.removeChild(node); // detach but don't destroy + } + return widget; + } + }, + + _setSelectedChildAttr: function(child,opts){ + if (child !== this.selectedChild) { + return deferred.when(child, dlang.hitch(this, function(child){ + if (this.selectedChild){ + if (this.selectedChild.deactivate){ + this.selectedChild.deactivate(); + } + + dstyle.set(this.selectedChild.domNode,"zIndex",25); + } + + //dojo.style(child.domNode, { + // "display": "", + // "zIndex": 50, + // "overflow": "auto" + //}); + this.selectedChild = child; + dstyle.set(child.domNode, "display", ""); + dstyle.set(child.domNode,"zIndex",50); + this.selectedChild=child; + if (this._started) { + if (child.startup && !child._started){ + child.startup(); + }else if (child.activate){ + child.activate(); + } + + } + this.layout(); + })); + } + }, + + + transition: function(transitionTo,opts){ + //summary: + // transitions from the currently visible scene to the defined scene. + // it should determine what would be the best transition unless + // an override in opts tells it to use a specific transitioning methodology + // the transitionTo is a string in the form of [view]@[scene]. If + // view is left of, the current scene will be transitioned to the default + // view of the specified scene (eg @scene2), if the scene is left off + // the app controller will instruct the active scene to the view (eg view1). If both + // are supplied (view1@scene2), then the application should transition to the scene, + // and instruct the scene to navigate to the view. + var toId,subIds,next, current = this.selectedChild; + console.log("scene", this.id, transitionTo); + if (transitionTo){ + var parts = transitionTo.split(","); + toId= parts.shift(); + subIds = parts.join(','); + + }else{ + toId = this.defaultView; + if(this.views[this.defaultView] && this.views[this.defaultView]["defaultView"]){ + subIds = this.views[this.defaultView]["defaultView"]; + } + } + + next = this.loadChild(toId,subIds); + + if (!current){ + //assume this.set(...) will return a promise object if child is first loaded + //return nothing if child is already in array of this.children + return this.set("selectedChild",next); + } + + var transitionDeferred = new deferred(); + deferred.when(next, dlang.hitch(this, function(next){ + var promise; + + if (next!==current){ + //TODO need to refactor here, when clicking fast, current will not be the + //view we want to start transition. For example, during transition 1 -> 2 + //if user click button to transition to 3 and then transition to 1. It will + //perform transition 2 -> 3 and 2 -> 1 because current is always point to + //2 during 1 -> 2 transition. + + var waitingList = anim.getWaitingList([next.domNode, current.domNode]); + //update registry with deferred objects in animations of args. + var transitionDefs = {}; + transitionDefs[current.domNode.id] = anim.playing[current.domNode.id] = new deferred(); + transitionDefs[next.domNode.id] = anim.playing[current.domNode.id] = new deferred(); + + deferred.when(waitingList, dojo.hitch(this, function(){ + //assume next is already loaded so that this.set(...) will not return + //a promise object. this.set(...) will handles the this.selectedChild, + //activate or deactivate views and refresh layout. + this.set("selectedChild", next); + + //publish /app/transition event + //application can subscript this event to do user define operation like select TabBarButton, etc. + connect.publish("/app/transition", [next, toId]); + transit(current.domNode,next.domNode,dojo.mixin({},opts,{transition: this.defaultTransition || "none", transitionDefs: transitionDefs})).then(dlang.hitch(this, function(){ + //dojo.style(current.domNode, "display", "none"); + if (subIds && next.transition){ + promise = next.transition(subIds,opts); + } + deferred.when(promise, function(){ + transitionDeferred.resolve(); + }); + })); + })); + return; + } + + //we didn't need to transition, but continue to propogate. + if (subIds && next.transition){ + promise = next.transition(subIds,opts); + } + deferred.when(promise, function(){ + transitionDeferred.resolve(); + }); + })); + return transitionDeferred; + }, + toString: function(){return this.id}, + + activate: function(){}, + deactive: function(){} + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/app/schema/README b/js/dojo-release-1.7.2-src/dojox/app/schema/README new file mode 100644 index 0000000..7e514bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/schema/README @@ -0,0 +1 @@ +Schemas to validate application configs, not fully in sync with what is being accepted just yet diff --git a/js/dojo-release-1.7.2-src/dojox/app/schema/application.json b/js/dojo-release-1.7.2-src/dojox/app/schema/application.json new file mode 100644 index 0000000..7f8fdd4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/schema/application.json @@ -0,0 +1,55 @@ +define({ + "description":"A representation of an Application", + "type": "object", + "properties":{ + "author": {"$ref": "http://json-schema.org/card"}, + + "description": { + "description": "Description of the application represented here", + "type": "string" + }, + + "modules": { + "type": "array", + "description": "Modules this application requires ", + "default": [], + "items":{ + "type": "string", + "description": "Module to be loaded and mixed into the application" + } + }, + + + "defaultScene": { + "type": "string" + "description": "id of scene to load for this application at startup" + }, + + "scenes": { + "type": "object", + "description": "This object contains references to scene objects, which are collections of views and models making up a closely related set of the ui", + "additionalProperties":{"$ref":"/jdoe/test/schema/scene.json"} + }, + + "stores": { + "type": "object", + "description":"This object contains references to store instances that the rest of the application will use.", + "additionalProperties": {"$ref":"/jdoe/test/schema/scene.json"}, + "default": {} + }, + + "models": { + "type": "object", + "description": "This object contains references to model instances the application uses", + "additionalProperties":{"$ref":"/jdoe/test/schema/model.json"}, + "default": {} + }, + + "views": { + "type": "object", + "description": "This object contains references to view instances the application uses", + "additionalProperties":{"$ref":"/jdoe/test/schema/view.json"}, + "default": {} + } + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/app/schema/model.json b/js/dojo-release-1.7.2-src/dojox/app/schema/model.json new file mode 100644 index 0000000..a630516 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/schema/model.json @@ -0,0 +1,11 @@ +{ + "description":"An applications model declaration", + "type": "object", + "properties":{ + "type": { + "type": "string", + "description": "Model Instance Type (Class)" + }, + }, + "additionalProperties": true +} diff --git a/js/dojo-release-1.7.2-src/dojox/app/schema/scene.json b/js/dojo-release-1.7.2-src/dojox/app/schema/scene.json new file mode 100644 index 0000000..412ce90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/schema/scene.json @@ -0,0 +1,29 @@ +{ + "description":"An application's scene instance declarations", + "type": "object", + "properties":{ + "type": { + "type": "string", + "description": "Scene Instance Type (Class)" + }, + "models": { + "type": "array", + "items": {"$ref": "/jdoe/test/schema/model"} + }, + "views": { + "type": "array", + "items": { + "type": "object", + "properties" : { + "id": { + "type": "string" + }, + "view": "$ref": "/jdoe/test/schema/view", + "params": { + "type": "object" + } + } + } + }, + "additionalProperties": true +} diff --git a/js/dojo-release-1.7.2-src/dojox/app/schema/store.json b/js/dojo-release-1.7.2-src/dojox/app/schema/store.json new file mode 100644 index 0000000..924f5e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/schema/store.json @@ -0,0 +1,11 @@ +{ + "description":"An applications store instance declarations", + "type": "object", + "properties":{ + "type": { + "type": "string", + "description": "Store Instance Type (Class)" + }, + }, + "additionalProperties": true +} diff --git a/js/dojo-release-1.7.2-src/dojox/app/schema/view.json b/js/dojo-release-1.7.2-src/dojox/app/schema/view.json new file mode 100644 index 0000000..b6c1c54 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/schema/view.json @@ -0,0 +1,30 @@ +{ + "description": "Base View Schema for defining View Instances in an application", + "type": "object", + "properties": { + "type": { + "type":"string", + "description": "The Name of the Class to be used for this view" + }, + + "models": { + "type": "array", + "items": { + "type":"string", + "description": "Models that this view requires. These should reference one of the available #models", + "dependences":{} + } + }, + + "persist": { + "type": "boolean", + "description":"Keep this view loaded on the dom or memory, but not necessarily visible" + }, + + "template": { + "type": "string", + "description": "Template to be used with this view" + } + } +} + diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-1-41x41.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-1-41x41.png new file mode 100755 index 0000000..0e94b75 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-1-41x41.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-1.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-1.png new file mode 100755 index 0000000..5f28394 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-10.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-10.png new file mode 100644 index 0000000..b3df995 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-11.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-11.png new file mode 100644 index 0000000..307b8e3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-11.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-12.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-12.png new file mode 100644 index 0000000..425cadb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-12.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-13.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-13.png new file mode 100644 index 0000000..7244dbe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-13.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-14.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-14.png new file mode 100644 index 0000000..c8afcec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-14.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-15.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-15.png new file mode 100644 index 0000000..49812a3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-15.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-16.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-16.png new file mode 100644 index 0000000..8208beb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-16.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-17.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-17.png new file mode 100644 index 0000000..533870e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-17.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-18.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-18.png new file mode 100644 index 0000000..d52419a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-18.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-2-41x41.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-2-41x41.png new file mode 100755 index 0000000..df8aaaf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-2-41x41.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-2.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-2.png new file mode 100755 index 0000000..c457062 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-3.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-3.png new file mode 100755 index 0000000..dc3941f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-4.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-4.png new file mode 100755 index 0000000..c7df122 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/a-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-1.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-1.png new file mode 100644 index 0000000..e6c072c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-2.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-2.png new file mode 100644 index 0000000..1252683 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-3.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-3.png new file mode 100644 index 0000000..0d239a8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-4.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-4.png new file mode 100644 index 0000000..16eb0d7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-5.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-5.png new file mode 100644 index 0000000..38e69cc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-6.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-6.png new file mode 100644 index 0000000..04bf53c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-7.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-7.png new file mode 100644 index 0000000..0a92e0c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-8.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-8.png new file mode 100644 index 0000000..9beadfe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-app-icon-8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-1.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-1.png new file mode 100644 index 0000000..3dee072 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-2.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-2.png new file mode 100644 index 0000000..4b5ab9c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-3.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-3.png new file mode 100644 index 0000000..bfbf682 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-4.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-4.png new file mode 100644 index 0000000..18e26a6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-5.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-5.png new file mode 100644 index 0000000..52befc8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-6.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-6.png new file mode 100644 index 0000000..59ed1d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-7.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-7.png new file mode 100644 index 0000000..026e3f0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-8.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-8.png new file mode 100644 index 0000000..f7190f4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/b-icon-8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/chart.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/chart.png new file mode 100644 index 0000000..3887ba8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/chart.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/checkboxRadioButtonStates.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/checkboxRadioButtonStates.png new file mode 100644 index 0000000..2d06a82 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/checkboxRadioButtonStates.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish1.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish1.jpg new file mode 100644 index 0000000..2b147ef Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish2.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish2.jpg new file mode 100644 index 0000000..32cac74 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish3.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish3.jpg new file mode 100644 index 0000000..d57cc3e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish4.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish4.jpg new file mode 100644 index 0000000..342569c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish5.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish5.jpg new file mode 100644 index 0000000..ab97da6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish6.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish6.jpg new file mode 100644 index 0000000..c954329 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish7.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish7.jpg new file mode 100644 index 0000000..ce51f3a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish8.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish8.jpg new file mode 100644 index 0000000..73a4d6c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish9.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish9.jpg new file mode 100644 index 0000000..4cc815c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/dish9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass1.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass1.jpg new file mode 100644 index 0000000..65edf8d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass10.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass10.jpg new file mode 100644 index 0000000..be890a2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass11.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass11.jpg new file mode 100644 index 0000000..c51a991 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass11.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass12.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass12.jpg new file mode 100644 index 0000000..0d03c6b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass12.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass13.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass13.jpg new file mode 100644 index 0000000..afa1ab6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass13.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass14.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass14.jpg new file mode 100644 index 0000000..9b3f904 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass14.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass15.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass15.jpg new file mode 100644 index 0000000..6ca4e4c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass15.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass16.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass16.jpg new file mode 100644 index 0000000..e695221 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass16.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass2.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass2.jpg new file mode 100644 index 0000000..2ff3476 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass3.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass3.jpg new file mode 100644 index 0000000..eebaf31 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass4.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass4.jpg new file mode 100644 index 0000000..c1e34a1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass5.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass5.jpg new file mode 100644 index 0000000..30520c4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass6.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass6.jpg new file mode 100644 index 0000000..444f9f4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass7.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass7.jpg new file mode 100644 index 0000000..1672ab2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass8.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass8.jpg new file mode 100644 index 0000000..a4d1e4d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass9.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass9.jpg new file mode 100644 index 0000000..ff98ce0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/glass9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-1.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-1.png new file mode 100755 index 0000000..8cbf494 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-10.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-10.png new file mode 100755 index 0000000..65a7909 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-2.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-2.png new file mode 100755 index 0000000..1965b3e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-3.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-3.png new file mode 100755 index 0000000..3450131 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-4.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-4.png new file mode 100755 index 0000000..403990b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-5.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-5.png new file mode 100755 index 0000000..afd1199 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-6.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-6.png new file mode 100755 index 0000000..24d141b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-7.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-7.png new file mode 100755 index 0000000..48b239f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-8.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-8.png new file mode 100755 index 0000000..0880428 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-9.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-9.png new file mode 100755 index 0000000..e709a42 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-9.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-all.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-all.png new file mode 100755 index 0000000..d891dbd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/i-icon-all.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/icon-1.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/icon-1.png new file mode 100755 index 0000000..26dde5d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/not-images.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/not-images.png new file mode 100755 index 0000000..7aee19a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/not-images.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic1.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic1.jpg new file mode 100644 index 0000000..a8ef25f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic10.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic10.jpg new file mode 100644 index 0000000..eed3321 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic2.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic2.jpg new file mode 100644 index 0000000..5998cec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic3.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic3.jpg new file mode 100644 index 0000000..10c593b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic4.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic4.jpg new file mode 100644 index 0000000..7abbaa9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic5.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic5.jpg new file mode 100644 index 0000000..7c02ed7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic6.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic6.jpg new file mode 100644 index 0000000..a3045f2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic7.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic7.jpg new file mode 100644 index 0000000..c182569 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic8.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic8.jpg new file mode 100644 index 0000000..d83c21d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic9.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic9.jpg new file mode 100644 index 0000000..663ae58 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/pic9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/red-button-bg.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/red-button-bg.png new file mode 100755 index 0000000..5749018 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/red-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/red-button-sel-bg.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/red-button-sel-bg.png new file mode 100755 index 0000000..c5ba62a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/red-button-sel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell1.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell1.jpg new file mode 100644 index 0000000..7f236d3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell10.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell10.jpg new file mode 100644 index 0000000..a4ddf98 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell11.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell11.jpg new file mode 100644 index 0000000..ff212e5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell11.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell2.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell2.jpg new file mode 100644 index 0000000..8a13ade Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell3.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell3.jpg new file mode 100644 index 0000000..7e88f8c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell4.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell4.jpg new file mode 100644 index 0000000..04e70d4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell5.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell5.jpg new file mode 100644 index 0000000..c252082 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell6.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell6.jpg new file mode 100644 index 0000000..92a19eb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell7.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell7.jpg new file mode 100644 index 0000000..4750752 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell8.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell8.jpg new file mode 100644 index 0000000..cc568f3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell9.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell9.jpg new file mode 100644 index 0000000..9b5b029 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/shell9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone1.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone1.jpg new file mode 100644 index 0000000..a012158 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone10.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone10.jpg new file mode 100644 index 0000000..b25e375 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone2.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone2.jpg new file mode 100644 index 0000000..596b64a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone3.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone3.jpg new file mode 100644 index 0000000..8c2424b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone4.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone4.jpg new file mode 100644 index 0000000..bab8eac Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone5.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone5.jpg new file mode 100644 index 0000000..3a65c85 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone6.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone6.jpg new file mode 100644 index 0000000..c1cd4aa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone7.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone7.jpg new file mode 100644 index 0000000..2d20a5f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone8.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone8.jpg new file mode 100644 index 0000000..03c2fe4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone9.jpg b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone9.jpg new file mode 100644 index 0000000..6b8d588 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/stone9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-10.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-10.png new file mode 100644 index 0000000..5266c1e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-10h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-10h.png new file mode 100644 index 0000000..9b12683 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-10h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-11.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-11.png new file mode 100644 index 0000000..57740eb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-11.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-11h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-11h.png new file mode 100644 index 0000000..0f3592d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-11h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-12.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-12.png new file mode 100644 index 0000000..8b6dc5f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-12.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-12h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-12h.png new file mode 100644 index 0000000..e230a38 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-12h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-13.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-13.png new file mode 100644 index 0000000..57f21cc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-13.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-13h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-13h.png new file mode 100644 index 0000000..ec87db0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-13h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-14.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-14.png new file mode 100644 index 0000000..cea484a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-14.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-14h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-14h.png new file mode 100644 index 0000000..0e602c4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-14h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-15.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-15.png new file mode 100644 index 0000000..09368cf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-15.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-15h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-15h.png new file mode 100644 index 0000000..bd0daee Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-15h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-16.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-16.png new file mode 100644 index 0000000..ee58ce6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-16.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-16h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-16h.png new file mode 100644 index 0000000..1ca2c06 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-16h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-17.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-17.png new file mode 100644 index 0000000..0387855 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-17.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-17h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-17h.png new file mode 100644 index 0000000..06c894e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-17h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-18.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-18.png new file mode 100644 index 0000000..ac8fa6d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-18.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-18h.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-18h.png new file mode 100644 index 0000000..6fa5a1f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icon-18h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icons.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icons.png new file mode 100644 index 0000000..93f50d0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/tab-icons.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/welcomeLogo.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/welcomeLogo.png new file mode 100644 index 0000000..42341e4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/welcomeLogo.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/images/widget-bg.png b/js/dojo-release-1.7.2-src/dojox/app/tests/images/widget-bg.png new file mode 100755 index 0000000..144dd00 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/app/tests/images/widget-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/config.json b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/config.json new file mode 100644 index 0000000..e3d7383 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/config.json @@ -0,0 +1,97 @@ +{ + "id": "modelApp", + "name": "Model App", + "description": "A modelApp", + "splash": "splash", + + "dependencies": [ + "dojox/mobile/_base", + "dojox/mobile/TabBar", + "dojox/mobile/RoundRect", + "dojox/mobile/TabBarButton", + "dojox/mobile/Button", + "dojox/mobile/RoundRect", + "dojox/mobile/Heading", + "dojox/mvc/StatefulModel", //TODO remove the explicit dependency for stores. + "dojo/store/Memory", //TODO remove the explicit dependency for stores. + "dojox/mvc/Group", + "dojox/mvc/Repeat", + "dojox/mvc" + ], + // Modules for the application. The are basically used as the second + // array of mixins in a dojo.declare(). Modify the top level behavior + // of the application, how it processes the config or any other life cycle + // by creating and including one or more of these + "modules": [ + "dojox/app/module/env", + "dojox/app/module/history", + "dojox/app/module/lifecycle" + //"dojox/app/module/phonegap", + //"dojox/app/module/somePlugin" + ], + + //stores we are using + "stores": { + "namesStore":{ + "type": "dojo.store.Memory", + "params": { + "data": "modelApp.names" + } + }, + "repeatStore":{ + "type": "dojo.store.Memory", + "params": { + "data": "modelApp.repeatData" + } + } + }, + + //models and instantiation parameters for the models. Including 'type' as a property allows + //one to overide the class that will be used for the model. By default it is dojox/mvc/model + "models": { + "names": { + "params":{ + "store": {"$ref":"#stores.namesStore"} + } + } + }, + + //the name of the scene to load when the app is initialized. + "defaultView": "home", + + "defaultTransition": "slide", + //scenes are groups of views and models loaded at once + "views": { + + "home": { + "type": "dojox.app.view", + "dependencies":["dojox/mobile/ListItem","dojox/mobile/RoundRectList","dojox/mobile/RoundRectCategory","dojox/mobile/Heading"], + "template": "views/main.html" + }, + + "simple":{ + "type": "dojox.app.view", + "template": "views/simple.html", + "dependencies":["dojox/mobile/TextBox"], + }, + + "repeat": { + "type": "dojox.app.view", + "models": { + "repeatmodels": { + "params":{ + "store": {"$ref":"#stores.repeatStore"} + } + } + }, + "template": "views/repeat.html", + "dependencies":["dojox/mobile/TextBox"], + }, + + "generate": { + "type": "dojox.app.view", + "template": "views/generate.html", + "dependencies":["dojox/mobile/TextBox", "dojox/mobile/TextArea", "dojox/mvc/Generate"], + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/index.html b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/index.html new file mode 100644 index 0000000..c2469fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/index.html @@ -0,0 +1,60 @@ + + + + + + Model App Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/modelApp.js b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/modelApp.js new file mode 100644 index 0000000..78809ea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/modelApp.js @@ -0,0 +1,98 @@ +require(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/loader"], function(dojo, lang){ +var path = window.location.pathname; +if (path.charAt(path.length)!="/"){ + path = path.split("/"); + path.pop(); + path=path.join("/"); +} +dojo.registerModulePath("app",path); + + // search script tag and create new tag in head to fix IE and Firefox not load script. + // In IE, set script text to innerHTML with ", then replace ""); + + while ((startIndex > -1) && (endIndex > -1) && (endIndex > startIndex)) { + var str = tempStr.substring(startIndex, endIndex); + str = str.replace(/.*?/, ""); + scriptText += str; + + startIndex = tempStr.indexOf("", endIndex); + } + + if (scriptText) { + var header = document.getElementsByTagName('head')[0]; + var scriptTag = document.createElement('script'); + scriptTag.text = scriptText; + header.appendChild(scriptTag); + } + }; + + require(["dojo", "dojox/app/main", "dojox/json/ref", "dojo/text!app/config.json", "dojo/_base/connect"], function(dojo, Application, jsonRef, config, connect){ + //app = Application(dojox.json.ref.resolveJson(config), dojo.body()); + dojo.global.modelApp = {}; + modelApp.names = [{ + "Serial" : "360324", + "First" : "John", + "Last" : "Doe", + "Email" : "jdoe@us.ibm.com", + "ShipTo" : { + "Street" : "123 Valley Rd", + "City" : "Katonah", + "State" : "NY", + "Zip" : "10536" + }, + "BillTo" : { + "Street" : "17 Skyline Dr", + "City" : "Hawthorne", + "State" : "NY", + "Zip" : "10532" + } + }]; + modelApp.repeatData = [ + { + "First" : "Chad", + "Last" : "Chapman", + "Location": "CA", + "Office" : "1278", + "Email" : "c.c@test.com", + "Tel" : "408-764-8237", + "Fax" : "408-764-8228" + }, + { + "First" : "Irene", + "Last" : "Ira", + "Location": "NJ", + "Office" : "F09", + "Email" : "i.i@test.com", + "Tel" : "514-764-6532", + "Fax" : "514-764-7300" + }, + { + "First" : "John", + "Last" : "Jacklin", + "Location": "CA", + "Office" : "6701", + "Email" : "j.j@test.com", + "Tel" : "408-764-1234", + "Fax" : "408-764-4321" + } + ]; + app = Application(jsonRef.fromJson(config)); + + connect.subscribe("/app/loadchild", lang.hitch(app, function(node){ + console.log(node); + addDynamicScript(node); + })); +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/generate.html b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/generate.html new file mode 100644 index 0000000..738091e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/generate.html @@ -0,0 +1,68 @@ +
                            +

                            Simple Form Generate Example

                            +
                            +
                            +
                            +
                            +
                            +
                            +

                            Model

                            +
                            + +
                            +
                            +
                            + +
                            +
                            + +
                            +
                            + +
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/main.html b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/main.html new file mode 100644 index 0000000..f81f51c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/main.html @@ -0,0 +1,15 @@ +
                            +

                            Mobile MVC Demo

                            +

                            Mobile MVC Views

                            +
                              +
                            • + Simple Data Binding +
                            • +
                            • + Repeat Data Binding +
                            • +
                            • + Simple Form Generate +
                            • +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/repeat.html b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/repeat.html new file mode 100644 index 0000000..28a238c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/repeat.html @@ -0,0 +1,89 @@ +
                            +

                            Repeat Data Binding Example

                            +
                            +
                            Search Results
                            + +
                            +
                            +
                            + + + + +
                            +
                            +
                            + +
                            +
                            +
                            Details for selected index:
                            +
                            +
                            + First Name + +
                            +
                            + Last Name + +
                            +
                            + Email + +
                            +
                            + Telephone + +
                            +
                            +
                            +
                            + + + +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/simple.html b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/simple.html new file mode 100644 index 0000000..bfe3b2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/modelApp/views/simple.html @@ -0,0 +1,59 @@ +
                            + +

                            Data Binding Example

                            + +
                            Ship to - Bill to Address
                            +
                            +
                            + Order # + +
                            +
                            + Last + +
                            +
                            + Email + +
                            +
                            +
                            + + +
                            +
                            +
                            + Street + +
                            +
                            + City + +
                            +
                            + State + +
                            +
                            + ZIP Code + +
                            +
                            +
                            + + +
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/application.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/application.html new file mode 100644 index 0000000..dad92c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/application.html @@ -0,0 +1,7 @@ +
                            +
                              +
                            • Home
                            • +
                            • Main
                            • +
                            • Tabbed Scene
                            • +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/config.json b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/config.json new file mode 100644 index 0000000..609a379 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/config.json @@ -0,0 +1,167 @@ +{ + "id": "multiSceneApp", + "name": "Multi Scene App", + "description": "A multiSceneApp", + "splash": "splash", + + "dependencies": [ + "dojox/mobile/View", //Temporary work around for getting a null when calling getParent + "dojox/mobile/TabBar", + "dojox/mobile/RoundRect", + "dojox/mobile/TabBarButton", + "dojox/mobile/Button", + "dojox/mobile/RoundRect", + "dojox/mobile/Heading" + ], + // Modules for the app. The are basically used as the second + // array of mixins in a dojo.declare(). Modify the top level behavior + // of the app, how it processes the config or any other life cycle + // by creating and including one or more of these + "modules": [ + "dojox/app/module/env", + "dojox/app/module/history", + "dojox/app/module/lifecycle" + //"dojox/app/module/phonegap", + //"dojox/app/module/somePlugin" + ], + + //stores we are using + "stores": {}, + + "template": "application.html", + + //models and instantiation parameters for the models. Including 'type' as a property allows + //one to overide the class that will be used for the model. By default it is dojox/mvc/model + "models": {}, + + //the name of the scene to load when the app is initialized. + "defaultView": "home", + + "defaultTransition": "slide", + //scenes are groups of views and models loaded at once + "views": { + + //simple scene which loads all views and shows the default first + "home": { + "type": "dojox.app.view", + "dependencies":["dojox/mobile/RoundRectList","dojox/mobile/ListItem", "dojox/mobile/EdgeToEdgeCategory"], + "template": "views/simple/home.html" + }, + + "main":{ + //all views in the main scene will be bound to the user model + "models": [], + "type": "dojox.app.scene", + "template": "simple.html", + "defaultView": "main", + "defaultTransition": "slide", + //the views available to this scene + "views": { + "main":{ + "template": "views/simple/main.html" + }, + "second":{ + "template": "views/simple/second.html" + }, + "third":{ + "template": "views/simple/third.html" + } + }, + "dependencies":["dojox/mobile/RoundRectList","dojox/mobile/ListItem","dojox/mobile/EdgeToEdgeCategory","dojox/mobile/EdgeToEdgeList"], + }, + //simple scene which loads all views and shows the default first + "tabscene": { + //all views in the second scene will be bound to the user model + "models": [], + "template": "tabScene.html", + "defaultView": "tab1", + "defaultTransition": "flip", + "type": "dojox.app.scene", + //the views available to this scene + "views": { + "tab1":{ + "template": "views/tabs/tab1.html" + }, + "tab2":{ + "template": "views/tabs/tab2.html" + }, + "tab3":{ + "template": "views/tabs/tab3.html" + } + }, + "dependencies":["dojox/mobile/RoundRectList","dojox/mobile/ListItem", "dojox/mobile/EdgeToEdgeCategory"], + }, + //simple scene which loads all views and shows the default first + "gallery": { + //all views in the main scene will be bound to the user model + "models": [], + + "defaultView": "welcome", + "defaultTransition": "flip", + "type": "dojox.app.scene", + "template": "gallery.html", + //the views available to this scene + "views": { + "welcome": { + "template": "views/gallery/welcome.html" + }, + "tabbar": { + "template": "views/gallery/tabbar.html" + }, + "navigation": { + "template": "views/gallery/navigation.html" + }, + "map": { + "template": "views/gallery/map.html" + }, + "list": { + "template": "views/gallery/list.html" + }, + "jsonp": { + "template": "views/gallery/jsonp.html" + }, + "icons": { + "template": "views/gallery/icons.html" + }, + "headings": { + "template": "views/gallery/headings.html" + }, + "forms": { + "template": "views/gallery/forms.html" + }, + "flippableViews": { + "template": "views/gallery/flippableViews.html" + }, + "buttons": { + "type": "dojox.app.scene", + "template": "views/gallery/buttonScene.html", + "defaultView": "tab1", + "views": { + "tab1":{ + "template": "views/gallery/buttons/tab1.html" + }, + "tab2":{ + "template": "views/gallery/buttons/tab2.html" + }, + "tab3":{ + "template": "views/gallery/buttons/tab3.html" + } + } + }, + "animations": { + "template": "views/gallery/animations.html" + }, + "ajaxLoad": { + "template": "views/gallery/ajaxLoad.html" + }, + "ajax": { + "template": "views/gallery/ajax.html" + } + }, + + "dependencies": [ + "dojox/mobile/Button" + ] + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/gallery.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/gallery.html new file mode 100644 index 0000000..57d8d51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/gallery.html @@ -0,0 +1,3 @@ +
                            +

                            Mobile Widget Gallery

                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/index.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/index.html new file mode 100644 index 0000000..d7c0761 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/index.html @@ -0,0 +1,77 @@ + + + + + + Multi Scene App Test + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/multiSceneApp.js b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/multiSceneApp.js new file mode 100644 index 0000000..a8f4214 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/multiSceneApp.js @@ -0,0 +1,15 @@ +require(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array", "dojo/_base/loader"], +function(dojo, lang, array){ + var path = window.location.pathname; + if (path.charAt(path.length)!="/"){ + path = path.split("/"); + path.pop(); + path=path.join("/"); + } + + dojo.registerModulePath("app",path); + require(["dojo/_base/html","dojox/app/main", "dojo/text!app/config.json"], + function(dojo,Application,config){ + app = Application(eval("(" + config + ")")); + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/simple.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/simple.html new file mode 100644 index 0000000..4e97f2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/simple.html @@ -0,0 +1,3 @@ +
                            +

                            Main Scene

                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/tabScene.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/tabScene.html new file mode 100644 index 0000000..2d49dfb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/tabScene.html @@ -0,0 +1,8 @@ +
                            +
                            Tab Scene
                            +
                              +
                            • Tab 1
                            • +
                            • Tab 2
                            • +
                            • Tab 3
                            • +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/ajax.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/ajax.html new file mode 100644 index 0000000..61799df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/ajax.html @@ -0,0 +1,10 @@ +
                            +
                            + +
                            +
                            +
                            
                            +	
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/ajaxLoad.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/ajaxLoad.html new file mode 100644 index 0000000..8326af1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/ajaxLoad.html @@ -0,0 +1,7 @@ +
                            +
                            I'm using Dojo.
                            +
                            + +
                            + Visit us +
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/animations.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/animations.html new file mode 100644 index 0000000..60c9e82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/animations.html @@ -0,0 +1,24 @@ +
                            +

                            Transition Effects

                            +
                              +
                            • Slide
                            • +
                            • Flip
                            • +
                            • Fade
                            • +
                            +
                            +
                            +

                            Transition Effects

                            +
                              +
                            • Slide
                            • +
                            • Flip
                            • +
                            • Fade
                            • +
                            +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttonScene.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttonScene.html new file mode 100644 index 0000000..2d5b1ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttonScene.html @@ -0,0 +1,8 @@ +
                            +
                            Button Gallery
                            +
                              +
                            • Tab 1
                            • +
                            • Tab 2
                            • +
                            • Tab 3
                            • +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab1.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab1.html new file mode 100644 index 0000000..453c2dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab1.html @@ -0,0 +1,9 @@ +
                            +
                            + + + + + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab2.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab2.html new file mode 100644 index 0000000..e3dbd88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab2.html @@ -0,0 +1,8 @@ +
                            +
                            + + + + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab3.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab3.html new file mode 100644 index 0000000..d205a80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/buttons/tab3.html @@ -0,0 +1,6 @@ +
                            +
                            + + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/flippableViews.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/flippableViews.html new file mode 100644 index 0000000..ea1ddda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/flippableViews.html @@ -0,0 +1,19 @@ +
                            +
                            +
                            +
                            +

                            Page 1/3

                            +
                            +
                            +
                            +
                            +

                            Page 2/3

                            +
                            +
                            +
                            +
                            +

                            Page 3/3

                            +
                            +
                            +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/forms.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/forms.html new file mode 100644 index 0000000..ac914a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/forms.html @@ -0,0 +1,110 @@ +
                            +
                            +
                            Personal Data
                            +
                            +
                            + Full name + +
                            + +
                            + Goals + +
                            +
                            + +
                            + Login +
                            +
                            +
                            + User name* + + +
                            +
                            + Password* + + +
                            + +
                            + +
                            + Alerts +
                            +
                            + Issue alerts for: +
                            +
                            + All messages + + +
                            +
                            + Urgent messages only + + +
                            +
                            + Audible alerts: +
                            +
                            +
                            +
                            + Alert volume +
                            + + + +
                            +
                            + +
                            +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/headings.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/headings.html new file mode 100644 index 0000000..9a59b1c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/headings.html @@ -0,0 +1,23 @@ +
                            +

                            +
                            Default
                            +
                            Round
                            +
                            Toggle Button
                            +

                            +

                            +
                              +
                            • New
                            • +
                            • What's Hot
                            • +
                            • Genius
                            • +
                            +

                            +

                            + + + +
                            +
                            +
                            +

                            +
                            Pick up a button, any button.
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/icons.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/icons.html new file mode 100644 index 0000000..5dc8b26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/icons.html @@ -0,0 +1,18 @@ +
                            +
                              +
                            • +
                              + Click the close icon on the left top corner to close this box. +
                              +
                            • +
                            • +
                            • +
                            +
                            +
                            +

                            Move To

                            +

                            About

                            +
                            +	You can click "Icons" back button to go back to "Icons" view. 
                            +	
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/jsonp.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/jsonp.html new file mode 100644 index 0000000..95d0add --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/jsonp.html @@ -0,0 +1,10 @@ +
                            +
                            + +
                            +
                            + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/list.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/list.html new file mode 100644 index 0000000..76d3cdb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/list.html @@ -0,0 +1,143 @@ +
                            +
                              +
                            • RoundRectList
                            • +
                            • EdgeToEdgeList
                            • +
                            +
                            +
                            +

                            File Genres

                            +
                            +
                            +
                          7. Action
                          8. +
                          9. Comedy
                          10. +
                          11. Sci-Fi
                          12. +
                            +
                            +
                            +
                            +

                            Classical

                            +
                            +
                          13. Baroque
                          14. +
                          15. Romantic
                          16. +
                          17. Modern
                          18. +
                            +

                            Rock

                            +
                            +
                          19. Alternative
                          20. +
                          21. Metal
                          22. +
                          23. Progressive
                          24. +
                          25. R&B
                          26. +
                            +
                            +
                            +

                            Action Movies

                            +
                            +
                            +
                          27. Braveheart
                          28. +
                          29. Hellboy
                          30. +
                          31. Iron Man
                          32. +
                          33. Kill Bill
                          34. +
                          35. Rambo
                          36. +
                          37. Spider Man
                          38. +
                          39. Terminator
                          40. +
                          41. The Dark Knight
                          42. +
                          43. Transformers
                          44. +
                          45. True Lies
                          46. +
                            +
                            +
                            +
                            +

                            Comedy Movies

                            +
                            +
                            +
                          47. Ace Ventura
                          48. +
                          49. Pineapple Express
                          50. +
                          51. Shrek
                          52. +
                          53. Superbad
                          54. +
                          55. The Simpsons Movie
                          56. +
                            +
                            +
                            +
                            +

                            Sci-Fi Movies

                            +
                            +
                            +
                          57. Alien
                          58. +
                          59. Avatar
                          60. +
                          61. Back to the Future
                          62. +
                          63. Blade Runner
                          64. +
                          65. District 9
                          66. +
                          67. Inception
                          68. +
                          69. Star Wars
                          70. +
                          71. The Matrix
                          72. +
                            +
                            +
                            +
                            +

                            Baroque

                            +
                            +
                          73. Antonio Vivaldi
                          74. +
                          75. Henry Purcell
                          76. +
                          77. Johann Sebastian Bach
                          78. +
                            +
                            +
                            +

                            Romantic

                            +
                            +
                          79. Ludwig van Beethoven
                          80. +
                          81. Hector Berlioz
                          82. +
                          83. Modest Petrovich
                          84. +
                          85. Mussorgsky
                          86. +
                            +
                            +
                            +

                            Modern

                            +
                            +
                          87. Aaron Copeland
                          88. +
                          89. Igor Stravinksy
                          90. +
                          91. Philip Glass
                          92. +
                            +
                            +
                            +

                            Alternative

                            +
                            +
                          93. Nirvana
                          94. +
                          95. R.E.M.
                          96. +
                          97. The White Stripes
                          98. +
                            +
                            +
                            +

                            Metal

                            +
                            +
                          99. Led Zeppelin
                          100. +
                          101. Metalica
                          102. +
                            +
                            +
                            +

                            Progressive

                            +
                            +
                          103. King Crimson
                          104. +
                          105. Pink Floyd
                          106. +
                          107. Yes
                          108. +
                            +
                            +
                            +

                            R&B

                            +
                            +
                          109. Chuck Berry
                          110. +
                          111. Elvis Presley
                          112. +
                          113. Sam Cooke
                          114. +
                            +
                            +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/map.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/map.html new file mode 100644 index 0000000..eb2f526 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/map.html @@ -0,0 +1,5 @@ +
                            +
                            +
                            +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/navigation.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/navigation.html new file mode 100644 index 0000000..c2999b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/navigation.html @@ -0,0 +1,51 @@ +
                            +

                            Controls

                            +
                              +
                            • Buttons1.6
                            • +
                            • Forms1.6
                            • +
                            • Forms Data1.7
                            • +
                            • Switches1.7
                            • +
                            • Flippable1.6
                            • +
                            • Icons1.6
                            • +
                            • Tab Bar1.6
                            • +
                            • Headings1.6
                            • +
                            • Map (Google)1.6
                            • +
                            • Maps1.7
                            • +
                            • List1.6
                            • +
                            • List Data1.7
                            • +
                            • Charts1.7
                            • +
                            • Gauges1.7
                            • +
                            • Touch Layer1.7
                            • +
                            +

                            Effects

                            +
                              +
                            • Transitions1.6
                            • +
                            • Transitions1.7
                            • +
                            • CSS3 Effects1.6
                            • +
                            +

                            Data

                            +
                              +
                            • JSON P1.6
                            • +
                            • AJAX1.6
                            • +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/rowTemplate.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/rowTemplate.html new file mode 100644 index 0000000..89b9b1c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/rowTemplate.html @@ -0,0 +1 @@ +
                            ${firstName} ${lastName}
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/tabbar.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/tabbar.html new file mode 100644 index 0000000..0812865 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/tabbar.html @@ -0,0 +1,27 @@ +
                            +

                            Here is the Tab Bar. You can put it in any place.

                            +
                            +
                            +
                            +
                            You can place the tab bar content view in any place.
                            +
                            +
                            +
                            Tab 1
                            +
                            +
                            +
                            Tab 2
                            +
                            +
                            +
                            Tab 3
                            +
                            +
                            +
                              +
                            • +
                            • +
                            • +
                            +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/welcome.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/welcome.html new file mode 100644 index 0000000..b591b23 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/gallery/welcome.html @@ -0,0 +1,5 @@ +
                            +

                            Welcome to Dojo Mobile Showcase
                            + +

                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/home.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/home.html new file mode 100644 index 0000000..5317179 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/home.html @@ -0,0 +1,5 @@ +
                            +
                            + This is the content of the home scene. Hello World. +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/main.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/main.html new file mode 100644 index 0000000..a8b1235 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/main.html @@ -0,0 +1,92 @@ +
                            +
                            + This is the content of the main scene. Use the buttons in each scene to move between + the multiple scenes, or views, contained in the app. +
                            +
                              +

                              Main Scene Views

                              + +
                            • + Main Scene::Main View (Current View) +
                            • +
                            • + Main Scene::Second View +
                            • +
                            • + Main Scene::Third View +
                            • +
                            + +
                              +

                              Tab Scene Views

                              +
                            • + Tab Scene +
                            • +
                            + +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/second.html b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/second.html new file mode 100644 index 0000000..08429f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/app/tests/multiSceneApp/views/simple/second.html @@ -0,0 +1,13 @@ +
                            +
                            View simple/second
                            + +
                            + to tabscene,tab2
                            + +
                            +
                            +
                            +
                            +
                            + +
                            +
                            +
                            +
                            + +
                            +
                            +
                            +
                            + + +
                            +
                            +
                            +
                            + +
                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_bind_sync.html b/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_bind_sync.html new file mode 100644 index 0000000..4fba464 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_bind_sync.html @@ -0,0 +1,53 @@ + + + +Test the Feed Viewer (using ATOM) + + + + + + +
                            +
                            +
                            +
                            +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_local.html b/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_local.html new file mode 100644 index 0000000..1c0f579 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_local.html @@ -0,0 +1,52 @@ + + + +Test the Feed Viewer (using ATOM) + + + + + + +
                            +
                            +
                            +
                            +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_local_declarative.html b/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_local_declarative.html new file mode 100644 index 0000000..8f9f945 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/tests/widget/test_FeedViewer_local_declarative.html @@ -0,0 +1,45 @@ + + + +Test the Feed Viewer (using ATOM) + + + + + + +
                            +
                            +
                            +
                            + +
                            +
                            + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedEntryEditor.js new file mode 100644 index 0000000..6f04828 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedEntryEditor.js @@ -0,0 +1,1235 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/connect", + "dojo/_base/fx", + "dojo/_base/sniff", + "dojo/dom", + "dojo/dom-style", + "dojo/dom-construct", + "dijit/_Widget", + "dijit/_Templated", + "dijit/_Container", + "dijit/Editor", + "dijit/form/TextBox", + "dijit/form/SimpleTextarea", + "./FeedEntryViewer", + "../io/model", + "dojo/text!./templates/FeedEntryEditor.html", + "dojo/text!./templates/PeopleEditor.html", + "dojo/i18n!./nls/FeedEntryViewer", + "dojo/i18n!./nls/FeedEntryEditor", + "dojo/i18n!./nls/PeopleEditor", + "dojo/_base/declare" +], function (dojo, lang, connect, fx, has, domUtil, domStyle, domConstruct, _Widget, _Templated, _Container, Editor, TextBox, SimpleTextarea, FeedEntryViewer, model, template, peopleEditorTemplate, i18nViewer, i18nEditor, i18nPeople) { +dojo.experimental("dojox.atom.widget.FeedEntryEditor"); + +var widget = dojo.getObject("dojox.atom.widget", true); + +widget.FeedEntryEditor = dojo.declare(/*===== "dojox.atom.widget.FeedEntryEditor", =====*/ FeedEntryViewer,{ + // summary: + // An ATOM feed entry editor that allows viewing of the individual attributes of an entry. + // description: + // An ATOM feed entry editor that allows viewing of the individual attributes of an entry. + _contentEditor: null, + _oldContent: null, + _setObject: null, + enableEdit: false, + _contentEditorCreator: null, + _editors: {}, + entryNewButton: null, + _editable: false, //Flag denoting if the current entry is editable or not. + + //Templates for the HTML rendering. Need to figure these out better, admittedly. + templateString: template, + + postCreate: function(){ + if(this.entrySelectionTopic !== ""){ + this._subscriptions = [dojo.subscribe(this.entrySelectionTopic, this, "_handleEvent")]; + } + var _nlsResources = i18nViewer; + this.displayOptions.innerHTML = _nlsResources.displayOptions; + this.feedEntryCheckBoxLabelTitle.innerHTML = _nlsResources.title; + this.feedEntryCheckBoxLabelAuthors.innerHTML = _nlsResources.authors; + this.feedEntryCheckBoxLabelContributors.innerHTML = _nlsResources.contributors; + this.feedEntryCheckBoxLabelId.innerHTML = _nlsResources.id; + this.close.innerHTML = _nlsResources.close; + this.feedEntryCheckBoxLabelUpdated.innerHTML = _nlsResources.updated; + this.feedEntryCheckBoxLabelSummary.innerHTML = _nlsResources.summary; + this.feedEntryCheckBoxLabelContent.innerHTML = _nlsResources.content; + + _nlsResources = i18nEditor; + this.doNew.innerHTML = _nlsResources.doNew; + this.edit.innerHTML = _nlsResources.edit; + this.save.innerHTML = _nlsResources.save; + this.cancel.innerHTML = _nlsResources.cancel; + }, + + setEntry: function(/*object*/entry, /*object*/feed, /*boolean*/leaveMenuState){ + // summary: + // Function to set the current entry that is being edited. + // description: + // Function to set the current entry that is being edited. + // + // entry: + // Instance of dojox.atom.io.model.Entry to display for reading/editing. + if(this._entry !== entry){ + //If we swap entries, we don't want to keep the menu states and modes. + this._editMode=false; + leaveMenuState=false; + }else{ + leaveMenuState = true; + } + widget.FeedEntryEditor.superclass.setEntry.call(this, entry, feed); + this._editable = this._isEditable(entry); + if(!leaveMenuState && !this._editable){ + domStyle.set(this.entryEditButton, 'display', 'none'); + domStyle.set(this.entrySaveCancelButtons, 'display', 'none'); + } + if(this._editable && this.enableEdit){ + if(!leaveMenuState){ + domStyle.set(this.entryEditButton, 'display', ''); + //TODO double check this &&... + if(this.enableMenuFade && this.entrySaveCancelButton){ + fx.fadeOut({node: this.entrySaveCancelButton,duration: 250}).play(); + } + } + } + }, + + _toggleEdit: function(){ + // summary: + // Internal function for toggling/enabling the display of edit mode + // description: + // Internal function for toggling/enabling the display of edit mode + // + // returns: + // Nothing. + if(this._editable && this.enableEdit){ + domStyle.set(this.entryEditButton, 'display', 'none'); + domStyle.set(this.entrySaveCancelButtons, 'display', ''); + this._editMode = true; + + //Rebuild the view using the same entry and feed. + this.setEntry(this._entry, this._feed, true); + } + }, + + _handleEvent: function(/*object*/entrySelectionEvent){ + // summary: + // Internal function for listening to a topic that will handle entry notification. + // description: + // Internal function for listening to a topic that will handle entry notification. + // + // entrySelectionEvent: + // The topic message containing the entry that was selected for view. + // + // returns: + // Nothing. + if(entrySelectionEvent.source != this && entrySelectionEvent.action == "delete" && + entrySelectionEvent.entry && entrySelectionEvent.entry == this._entry){ + domStyle.set(this.entryEditButton, 'display', 'none'); + } + widget.FeedEntryEditor.superclass._handleEvent.call(this, entrySelectionEvent); + }, + + _isEditable: function(/*object*/entry){ + // summary: + // Internal function for determining of a particular entry is editable. + // description: + // Internal function for determining of a particular entry is editable. + // This is used for determining if the delete action should be displayed or not. + // + // entry: + // The dojox.atom.io.model.Entry object to examine + // + // returns: + // Boolean denoting if the entry seems editable or not.. + var retVal = false; + if(entry && entry !== null && entry.links && entry.links !== null){ + for(var x in entry.links){ + if(entry.links[x].rel && entry.links[x].rel == "edit"){ + retVal = true; + break; + } + } + } + return retVal; + }, + + // The following set functions override the corresponding functions in FeedEntryViewer. These handle + // the editMode flag by inserting appropriate editor widgets inside of just splashing the content in the page. + setTitle: function(/*DOM node*/titleAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the title node in the template to some value from the entry. + // description: + // Function to set the contents of the title node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // titleAnchorNode: + // The DOM node to attach the title data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + // + if(!editMode){ + widget.FeedEntryEditor.superclass.setTitle.call(this, titleAnchorNode, editMode, entry); + if(entry.title && entry.title.value && entry.title.value !== null){ + this.setFieldValidity("title", true); + } + }else{ + if(entry.title && entry.title.value && entry.title.value !== null){ + if(!this._toLoad){ + this._toLoad = []; + } + this.entryTitleSelect.value = entry.title.type; + + var editor = this._createEditor(titleAnchorNode, entry.title, true, entry.title.type === "html" || entry.title.type === "xhtml"); + editor.name = "title"; + this._toLoad.push(editor); + this.setFieldValidity("titleedit",true); + this.setFieldValidity("title",true); + } + } + }, + + setAuthors: function(/*DOM node*/authorsAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the author node in the template to some value from the entry. + // description: + // Function to set the contents of the author node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // authorsAnchorNode: + // The DOM node to attach the author data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(!editMode){ + widget.FeedEntryEditor.superclass.setAuthors.call(this, authorsAnchorNode, editMode, entry); + if(entry.authors && entry.authors.length > 0){ + this.setFieldValidity("authors", true); + } + }else{ + if(entry.authors && entry.authors.length > 0){ + this._editors.authors = this._createPeopleEditor(this.entryAuthorNode, {data: entry.authors, name: "Author"}); + this.setFieldValidity("authors", true); + } + } + }, + + + setContributors: function(/*DOM node*/contributorsAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the contributor node in the template to some value from the entry. + // description: + // Function to set the contents of the contributor node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // contributorsAnchorNode: + // The DOM node to attach the contributor data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(!editMode){ + widget.FeedEntryEditor.superclass.setContributors.call(this, contributorsAnchorNode, editMode, entry); + if(entry.contributors && entry.contributors.length > 0){ + this.setFieldValidity("contributors", true); + } + }else{ + if(entry.contributors && entry.contributors.length > 0){ + this._editors.contributors = this._createPeopleEditor(this.entryContributorNode, {data: entry.contributors, name: "Contributor"}); + this.setFieldValidity("contributors", true); + } + } + }, + + + setId: function(/*DOM node*/idAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the ID node in the template to some value from the entry. + // description: + // Function to set the contents of the ID node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // idAnchorNode: + // The DOM node to attach the ID data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(!editMode){ + widget.FeedEntryEditor.superclass.setId.call(this, idAnchorNode, editMode, entry); + if(entry.id && entry.id !== null){ + this.setFieldValidity("id", true); + } + }else{ + if(entry.id && entry.id !== null){ + this._editors.id = this._createEditor(idAnchorNode, entry.id); + this.setFieldValidity("id",true); + } + } + }, + + setUpdated: function(/*DOM node*/updatedAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the updated node in the template to some value from the entry. + // description: + // Function to set the contents of the updated node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // updatedAnchorNode: + // The DOM node to attach the udpated data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(!editMode){ + widget.FeedEntryEditor.superclass.setUpdated.call(this, updatedAnchorNode, editMode, entry); + if(entry.updated && entry.updated !== null){ + this.setFieldValidity("updated", true); + } + }else{ + if(entry.updated && entry.updated !== null){ + this._editors.updated = this._createEditor(updatedAnchorNode, entry.updated); + this.setFieldValidity("updated",true); + } + } + }, + + + setSummary: function(/*DOM node*/summaryAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the summary node in the template to some value from the entry. + // description: + // Function to set the contents of the summary node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // summaryAnchorNode: + // The DOM node to attach the summary data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(!editMode){ + widget.FeedEntryEditor.superclass.setSummary.call(this, summaryAnchorNode, editMode, entry); + if(entry.summary && entry.summary.value && entry.summary.value !== null){ + this.setFieldValidity("summary", true); + } + }else{ + if(entry.summary && entry.summary.value && entry.summary.value !== null){ + if(!this._toLoad){ + this._toLoad = []; + } + this.entrySummarySelect.value = entry.summary.type; + + var editor = this._createEditor(summaryAnchorNode, entry.summary, true, entry.summary.type === "html" || entry.summary.type === "xhtml"); + editor.name = "summary"; + this._toLoad.push(editor); + this.setFieldValidity("summaryedit",true); + this.setFieldValidity("summary",true); + } + } + }, + + setContent: function(/*DOM node*/contentAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the content node in the template to some value from the entry. + // description: + // Function to set the contents of the content node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // summaryAnchorNode: + // The DOM node to attach the content data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(!editMode){ + widget.FeedEntryEditor.superclass.setContent.call(this, contentAnchorNode, editMode, entry); + if(entry.content && entry.content.value && entry.content.value !== null){ + this.setFieldValidity("content",true); + } + }else{ + if(entry.content && entry.content.value && entry.content.value !== null){ + if(!this._toLoad){ + this._toLoad = []; + } + this.entryContentSelect.value = entry.content.type; + var editor = this._createEditor(contentAnchorNode, entry.content, true, entry.content.type === "html" || entry.content.type === "xhtml"); + editor.name = "content"; + this._toLoad.push(editor); + this.setFieldValidity("contentedit",true); + this.setFieldValidity("content",true); + } + } + }, + + _createEditor: function(/*DOM node*/anchorNode, /*DOM node*/node, /*boolean*/multiline, /*object*/rte){ + // summary: + // Function to create an appropriate text editor widget based on the given parameters. + // description: + // Function to create an appropriate text editor widget based on the given parameters. + // + // anchorNode: + // The DOM node to attach the editor widget to. + // node: + // An object containing the value to be put into the editor. This ranges from an anonymous object + // with a value parameter to a dojox.atom.io.model.Content object. + // multiline: + // A boolean indicating whether the content should be multiline (such as a textarea) instead of a + // single line (such as a textbox). + // rte: + // A boolean indicating whether the content should be a rich text editor widget. + // + // returns: + // Either a widget (for textarea or textbox widgets) or an anonymous object to be used to create a + // rich text area widget. + var viewNode; + var box; + if(!node){ + if(rte){ + // Returns an anonymous object which would then be loaded later, after the containing element + // exists on the page. + return {anchorNode: anchorNode, + entryValue: "", + editor: null, + generateEditor: function(){ + // The only way I found I could get the editor to behave consistently was to + // create the content on a span, and allow the content editor to replace it. + // This gets around the dynamic/delayed way in which content editors get created. + var node = document.createElement("div"); + node.innerHTML = this.entryValue; + this.anchorNode.appendChild(node); + var _editor = new Editor({}, node); + this.editor = _editor; + return _editor; + } + }; + } + if(multiline){ + // If multiline, create a textarea + viewNode = document.createElement("textarea"); + anchorNode.appendChild(viewNode); + domStyle.set(viewNode, 'width', '90%'); + box = new SimpleTextarea({},viewNode); + }else{ + // If single line, create a textbox. + viewNode = document.createElement("input"); + anchorNode.appendChild(viewNode); + domStyle.set(viewNode, 'width', '95%'); + box = new TextBox({},viewNode); + } + box.attr('value', ''); + return box; + } + + // Check through the node parameter to get the value to be used. + var value; + if(node.value !== undefined){ + value = node.value; + }else if(node.attr){ + value = node.attr('value'); + }else{ + value = node; + } + if(rte){ + // Returns an anonymous object which would then be loaded later, after the containing element + // exists on the page. + if(value.indexOf("<") != -1){ + value = value.replace(/') !== 0){ + value = '
                            ' + value + '
                            '; + } + } + entry.title = new model.Content("title", value, null, this.entryTitleSelect.value); + modifiedEntry = true; + } + + if(this._editors.id.attr('value') != entry.id){ + entry.id = this._editors.id.attr('value'); + modifiedEntry = true; + } + + if(this._editors.summary && (this._editors.summary.attr('value') != entry.summary.value || this.entrySummarySelect.value != entry.summary.type)){ + value = this._editors.summary.attr('value'); + if(this.entrySummarySelect.value === "xhtml"){ + value = this._enforceXhtml(value); + if(value.indexOf('
                            ') !== 0){ + value = '
                            ' + value + '
                            '; + } + } + entry.summary = new model.Content("summary", value, null, this.entrySummarySelect.value); + modifiedEntry = true; + } + + if(this._editors.content && (this._editors.content.attr('value') != entry.content.value || this.entryContentSelect.value != entry.content.type)){ + value = this._editors.content.attr('value'); + if(this.entryContentSelect.value === "xhtml"){ + value = this._enforceXhtml(value); + if(value.indexOf('
                            ') !== 0){ + value = '
                            ' + value + '
                            '; + } + } + entry.content = new model.Content("content", value, null, this.entryContentSelect.value); + modifiedEntry = true; + } + + if(this._editors.authors){ + if(modifiedEntry){ + entry.authors = []; + authors = this._editors.authors.getValues(); + for(i in authors){ + if(authors[i].name || authors[i].email || authors[i].uri){ + entry.addAuthor(authors[i].name, authors[i].email, authors[i].uri); + } + } + }else{ + var currentAuthors = entry.authors; + var searchAuthors = function(name, email, uri){ + for(i in currentAuthors){ + if(currentAuthors[i].name === name && currentAuthors[i].email === email && currentAuthors[i].uri === uri){ + return true; + } + } + return false; + }; + authors = this._editors.authors.getValues(); + changed = false; + for(i in authors){ + if(!searchAuthors(authors[i].name, authors[i].email, authors[i].uri)){ + changed = true; + break; + } + } + if(changed){ + entry.authors = []; + for(i in authors){ + if(authors[i].name || authors[i].email || authors[i].uri){ + entry.addAuthor(authors[i].name, authors[i].email, authors[i].uri); + } + } + modifiedEntry = true; + } + } + } + + if(this._editors.contributors){ + if(modifiedEntry){ + entry.contributors = []; + contributors = this._editors.contributors.getValues(); + for(i in contributors){ + if(contributors[i].name || contributors[i].email || contributors[i].uri){ + entry.addAuthor(contributors[i].name, contributors[i].email, contributors[i].uri); + } + } + }else{ + var currentContributors = entry.contributors; + var searchContributors = function(name, email, uri){ + for(i in currentContributors){ + if(currentContributors[i].name === name && currentContributors[i].email === email && currentContributors[i].uri === uri){ + return true; + } + } + return false; + }; + contributors = this._editors.contributors.getValues(); + changed = false; + for(i in contributors){ + if(searchContributors(contributors[i].name, contributors[i].email, contributors[i].uri)){ + changed = true; + break; + } + } + if(changed){ + entry.contributors = []; + for(i in contributors){ + if(contributors[i].name || contributors[i].email || contributors[i].uri){ + entry.addContributor(contributors[i].name, contributors[i].email, contributors[i].uri); + } + } + modifiedEntry = true; + } + } + } + + if(modifiedEntry){ + dojo.publish(this.entrySelectionTopic, [{action: "update", source: this, entry: entry, callback: this._handleSave }]); + //TODO: REMOVE BELOW + //var atomIO = new dojox.atom.io.Connection(); + //atomIO.updateEntry(entry, dojo.hitch(this,this._handleSave)); + //WARNING: Use above when testing with SimpleProxy (or any other servlet which + // doesn't actually create a new entry and return it properly) + //atomIO.updateEntry(entry, dojo.hitch(this,this._handleSave), true); + } + }else{ + this._new = false; + entry = new model.Entry(); + + value = this._editors.title.attr('value'); + if(this.entryTitleSelect.value === "xhtml"){ + value = this._enforceXhtml(value); + value = '
                            ' + value + '
                            '; + } + entry.setTitle(value, this.entryTitleSelect.value); + entry.id = this._editors.id.attr('value'); + + authors = this._editors.authors.getValues(); + for(i in authors){ + if(authors[i].name || authors[i].email || authors[i].uri){ + entry.addAuthor(authors[i].name, authors[i].email, authors[i].uri); + } + } + + contributors = this._editors.contributors.getValues(); + for(i in contributors){ + if(contributors[i].name || contributors[i].email || contributors[i].uri){ + entry.addContributor(contributors[i].name, contributors[i].email, contributors[i].uri); + } + } + + + value = this._editors.summary.attr('value'); + if(this.entrySummarySelect.value === "xhtml"){ + value = this._enforceXhtml(value); + value = '
                            ' + value + '
                            '; + } + entry.summary = new model.Content("summary", value, null, this.entrySummarySelect.value); + + value = this._editors.content.attr('value'); + if(this.entryContentSelect.value === "xhtml"){ + value = this._enforceXhtml(value); + value = '
                            ' + value + '
                            '; + } + entry.content = new model.Content("content", value, null, this.entryContentSelect.value); + + domStyle.set(this.entryNewButton, 'display', ''); + dojo.publish(this.entrySelectionTopic, [{action: "post", source: this, entry: entry }]); + } + this._editMode = false; + + //Rebuild the view using the same entry and feed. + this.setEntry(entry, this._feed, true); + }, + + _handleSave: function(/*object*/entry, /*string*/location){ + // summary: + // Function for handling the save of an entry, cleaning up the display after the edit is completed. + // description: + // Function for handling the save of an entry, cleaning up the display after the edit is completed. + // + // entry: dojox.atom.io.model.Entry object + // The entry that was saved. + // Location: String + // A URL to be used, not used here, but part of the call back from the AtomIO + // returns: + // Nothing. + //Close the editor and revert out. + this._editMode = false; + + //Rebuild the view using the same entry and feed. + this.clear(); + this.setEntry(entry, this.getFeed(), true); + }, + + cancelEdits: function(){ + // summary: + // Cancels edits and reverts the editor to its previous state (display mode) + // description: + // Cancels edits and reverts the editor to its previous state (display mode) + // + // returns: + // Nothing. + this._new = false; + domStyle.set(this.entrySaveCancelButtons, 'display', 'none'); + if(this._editable){ + domStyle.set(this.entryEditButton, 'display', ''); + } + domStyle.set(this.entryNewButton, 'display', ''); + this._editMode = false; + + //Rebuild the view using the same entry and feed. + this.clearEditors(); + this.setEntry(this.getEntry(), this.getFeed(), true); + }, + + clear: function(){ + // summary: + // Clears the editor, destorys all editors, leaving the editor completely clear + // description: + // Clears the editor, destorys all editors, leaving the editor completely clear + this._editable=false; + this.clearEditors(); + widget.FeedEntryEditor.superclass.clear.apply(this); + if(this._contentEditor){ + // Note that the superclass clear destroys the widget since it's in the child widget list, + // so this is just ref clearing. + this._contentEditor = this._setObject = this._oldContent = this._contentEditorCreator = null; + this._editors = {}; + } + }, + + clearEditors: function(){ + for(var key in this._editors){ + if(this._editors[key].isInstanceOf(Editor)){ + this._editors[key].close(false, true); + } + this._editors[key].destroy(); + } + this._editors = {}; + }, + + _enforceXhtml: function(/*string*/html){ + // summary: + // Function for cleaning up/enforcing the XHTML standard in HTML returned from the editor2 widget. + // description: + // Function for cleaning up/enforcing the XHTML standard in HTML returned from the editor2 widget. + // + // html: + // HTML string to be enforced as xhtml. + // + // returns: + // string of cleaned up HTML. + var xhtml = null; + if(html){ + //Handle
                            + var brRegExp = /
                            /g; + xhtml = html.replace(brRegExp, "
                            "); + + //Handle
                            + xhtml = this._closeTag(xhtml, "hr"); + + //Handle + xhtml = this._closeTag(xhtml, "img"); + } + return xhtml; + }, + + _closeTag: function(/*string*/xhtml, /*string*/tag){ + // summary: + // Function for closing tags in a text of HTML/XHTML + // description: + // Function for closing tags in a text of HTML/XHTML + // + // xhtml: String + // XHTML string which needs the closing tag. + // tag: + // The tag to close. + // + // returns: string of cleaned up HTML. + // + // NOTE: Probably should redo this function in a more efficient way. This could get expensive. + var tagStart = "<" + tag; + var tagIndex = xhtml.indexOf(tagStart); + if(tagIndex !== -1){ + while (tagIndex !== -1){ + var tempString = ""; + var foundTagEnd = false; + for (var i = 0; i < xhtml.length; i++){ + var c = xhtml.charAt(i); + if(i <= tagIndex ||foundTagEnd){ + tempString += c; + } + else + { + if(c === '>'){ + tempString += "/"; + foundTagEnd = true; + } + tempString +=c; + } + } + xhtml = tempString; + tagIndex = xhtml.indexOf(tagStart, tagIndex + 1); + } + } + return xhtml; + }, + + _toggleNew: function(){ + // summary: + // Function to put the editor into a state to create a new entry. + // description: + // Function to put the editor into a state to create a new entry. + + // Hide the edit/new buttons and show the save/cancel buttons. + domStyle.set(this.entryNewButton, 'display', 'none'); + domStyle.set(this.entryEditButton, 'display', 'none'); + domStyle.set(this.entrySaveCancelButtons, 'display', ''); + + // Reset the type select boxes to text. + this.entrySummarySelect.value = "text"; + this.entryContentSelect.value = "text"; + this.entryTitleSelect.value = "text"; + + // Clear all nodes. + this.clearNodes(); + this._new = true; + + var _nlsResources = i18nViewer; + // Create all headers and editors. + var titleHeader = new widget.EntryHeader({title: _nlsResources.title}); + this.entryTitleHeader.appendChild(titleHeader.domNode); + + this._editors.title = this._createEditor(this.entryTitleNode, null); + this.setFieldValidity("title",true); + + var authorHeader = new widget.EntryHeader({title: _nlsResources.authors}); + this.entryAuthorHeader.appendChild(authorHeader.domNode); + + this._editors.authors = this._createPeopleEditor(this.entryAuthorNode, {name: "Author"}); + this.setFieldValidity("authors", true); + + var contributorHeader = new widget.EntryHeader({title: _nlsResources.contributors}); + this.entryContributorHeader.appendChild(contributorHeader.domNode); + + this._editors.contributors = this._createPeopleEditor(this.entryContributorNode, {name: "Contributor"}); + this.setFieldValidity("contributors", true); + + var idHeader = new widget.EntryHeader({title: _nlsResources.id}); + this.entryIdHeader.appendChild(idHeader.domNode); + + this._editors.id = this._createEditor(this.entryIdNode, null); + this.setFieldValidity("id",true); + + var updatedHeader = new widget.EntryHeader({title: _nlsResources.updated}); + this.entryUpdatedHeader.appendChild(updatedHeader.domNode); + + this._editors.updated = this._createEditor(this.entryUpdatedNode, null); + this.setFieldValidity("updated",true); + + var summaryHeader = new widget.EntryHeader({title: _nlsResources.summary}); + this.entrySummaryHeader.appendChild(summaryHeader.domNode); + + this._editors.summary = this._createEditor(this.entrySummaryNode, null, true); + this.setFieldValidity("summaryedit",true); + this.setFieldValidity("summary",true); + + var contentHeader = new widget.EntryHeader({title: _nlsResources.content}); + this.entryContentHeader.appendChild(contentHeader.domNode); + + this._editors.content = this._createEditor(this.entryContentNode, null, true); + this.setFieldValidity("contentedit",true); + this.setFieldValidity("content",true); + + // Show the sections. + this._displaySections(); + }, + + _displaySections: function(){ + // summary: Function to display the appropriate sections based on validity. + // description: Function to display the appropriate sections based on validity. + + // Hide select boxes. + domStyle.set(this.entrySummarySelect, 'display', 'none'); + domStyle.set(this.entryContentSelect, 'display', 'none'); + domStyle.set(this.entryTitleSelect, 'display', 'none'); + + // Show select boxes if the flags are set. + if(this.isFieldValid("contentedit")){ + domStyle.set(this.entryContentSelect, 'display', ''); + } + if(this.isFieldValid("summaryedit")){ + domStyle.set(this.entrySummarySelect, 'display', ''); + } + if(this.isFieldValid("titleedit")){ + domStyle.set(this.entryTitleSelect, 'display', ''); + } + // Call super's _displaySections. + widget.FeedEntryEditor.superclass._displaySections.apply(this); + + // If we have editors to load after the nodes are created on the page, execute those now. + if(this._toLoad){ + for(var i in this._toLoad){ + var editor; + if(this._toLoad[i].generateEditor){ + editor = lang.hitch(this._toLoad[i], this._toLoad[i].generateEditor)(); + }else{ + editor = this._toLoad[i]; + } + this._editors[this._toLoad[i].name] = editor; + this._toLoad[i] = null; + } + this._toLoad = null; + } + } +}); + +widget.PeopleEditor = dojo.declare(/*===== "dojox.atom.widget.PeopleEditor", =====*/ [_Widget, _Templated, _Container],{ + // summary: + // An editor for dojox.atom.io.model.Person objects. + // description: + // An editor for dojox.atom.io.model.Person objects. Displays multiple rows for the respective arrays + // of people. Can add/remove rows on the fly. + templateString: peopleEditorTemplate, + + _rows: [], + _editors: [], + _index: 0, + _numRows: 0, + + postCreate: function(){ + // Initializer function for the PeopleEditor widget. + var _nlsResources = i18nPeople; + if(this.name){ + if(this.name == "Author"){ + this.peopleEditorButton.appendChild(document.createTextNode("["+_nlsResources.addAuthor+"]")); + }else if(this.name == "Contributor"){ + this.peopleEditorButton.appendChild(document.createTextNode("["+_nlsResources.addContributor+"]")); + } + }else{ + this.peopleEditorButton.appendChild(document.createTextNode("["+_nlsResources.add+"]")); + } + this._editors = []; + + if(!this.data || this.data.length===0){ + this._createEditors(null, null, null, 0, this.name); + this._index = 1; + }else{ + for(var i in this.data){ + this._createEditors(this.data[i].name, this.data[i].email, this.data[i].uri, i); + this._index++; + this._numRows++; + } + } + }, + + destroy: function(){ + for(var key in this._editors){ + for(var key2 in this._editors[key]){ + this._editors[key][key2].destroy(); + } + } + this._editors = []; + }, + + _createEditors: function(/*string*/name, /*string*/email, /*string*/uri, /*int*/index, /*string*/widgetName){ + // summary: + // creates editor boxes (textbox widgets) for the individual values of a Person. + // description: + // creates editor boxes (textbox widgets) for the individual values of a Person. + // + // name: + // The name of this Person. + // email: + // The email of this Person. + // uri: + // The Person's URI. + // index: + // The row index to use for this Person. + var row = document.createElement("tr"); + this.peopleEditorEditors.appendChild(row); + row.id = "removeRow"+index; + + var node = document.createElement("td"); + node.setAttribute('align', 'right'); + row.appendChild(node); + node.colSpan = 2; + + if(this._numRows>0){ + var hr = document.createElement("hr"); + node.appendChild(hr); + hr.id = "hr"+index; + } + + row = document.createElement("span"); + node.appendChild(row); + row.className = "peopleEditorButton"; + domStyle.set(row, 'font-size', 'x-small'); + connect.connect(row, "onclick", this, "_removeEditor"); + row.id = "remove"+index; + + node = document.createTextNode("[X]"); + row.appendChild(node); + + row = document.createElement("tr"); + this.peopleEditorEditors.appendChild(row); + row.id = "editorsRow"+index; + + var labelNode = document.createElement("td"); + row.appendChild(labelNode); + domStyle.set(labelNode, 'width', '20%'); + + node = document.createElement("td"); + row.appendChild(node); + + row = document.createElement("table"); + labelNode.appendChild(row); + domStyle.set(row, 'width', '100%'); + + labelNode = document.createElement("tbody"); + row.appendChild(labelNode); + + row = document.createElement("table"); + node.appendChild(row); + domStyle.set(row, 'width', '100%'); + + node = document.createElement("tbody"); + row.appendChild(node); + + this._editors[index] = []; + this._editors[index].push(this._createEditor(name, widgetName+'name'+index, 'Name:', labelNode, node)); + this._editors[index].push(this._createEditor(email, widgetName+'email'+index, 'Email:', labelNode, node)); + this._editors[index].push(this._createEditor(uri, widgetName+'uri'+index, 'URI:', labelNode, node)); + }, + + _createEditor: function(/*string*/value, /*string*/id, /*string*/name, /*DOM node*/labelNode, /*DOM node*/node){ + // summary: + // Creates an individual editor widget (textbox) for a value. + // description: + // Creates an individual editor widget (textbox) for a value. + // + // value: + // The initial value of the textbox + // id: + // The id the textbox should have. + // name: + // The text to put in the label element for this textbox. + // labelNode: + // The node to attach the label to. + // node: + // The node to attach the editor rows to. + // + // returns: + // Editor widget. + var row = document.createElement("tr"); + labelNode.appendChild(row); + + var label = document.createElement("label"); + label.setAttribute('for', id); + label.appendChild(document.createTextNode(name)); + labelNode = document.createElement("td"); + labelNode.appendChild(label); + row.appendChild(labelNode); + + row = document.createElement("tr"); + node.appendChild(row); + + node = document.createElement("td"); + row.appendChild(node); + + var viewNode = document.createElement("input"); + viewNode.setAttribute('id', id); + node.appendChild(viewNode); + domStyle.set(viewNode, 'width', '95%'); + + var box = new TextBox({},viewNode); + box.attr('value', value); + return box; + }, + + _removeEditor: function(/*object*/event){ + // summary: + // Removes a Person from our list of editors. + // description: + // Removes a Person from our list of editors by removing the block of editors that + // make up that Person. + // + // event: + // The event generated when the remove button is pressed on the page. + var target = null; + + if(has("ie")){ + target = event.srcElement; + }else{ + target = event.target; + } + + var id = target.id; + id = id.substring(6); + for(var key in this._editors[id]){ + this._editors[id][key].destroy(); + } + + var node = domUtil.byId("editorsRow"+id); + var parent = node.parentNode; + parent.removeChild(node); + + node = domUtil.byId("removeRow"+id); + parent = node.parentNode; + parent.removeChild(node); + + this._numRows--; + if(this._numRows === 1 && parent.firstChild.firstChild.firstChild.tagName.toLowerCase() === "hr"){ + node = parent.firstChild.firstChild; + node.removeChild(node.firstChild); + } + this._editors[id] = null; + }, + + _add: function(){ + // summary: + // Adds a new block of blank editors to represent a Person. + // description: + // Adds a new block of blank editors to represent a Person. + this._createEditors(null, null, null, this._index); + this._index++; + this._numRows++; + }, + + getValues: function(){ + // summary: + // Gets the values of this editor in an array. + // description: + // Gets the values of this editor in an array, with each Person as an object within the array. + // + // returns: + // An array of anonymous objects representing dojox.atom.io.model.Persons. + var values = []; + for(var i in this._editors){ + if(this._editors[i]){ + values.push({name: this._editors[i][0].attr('value'), email: this._editors[i][1].attr('value'), uri: this._editors[i][2].attr('value')}); + } + } + return values; + } +}); +return widget.FeedEntryEditor; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedEntryViewer.js new file mode 100644 index 0000000..d3c98f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedEntryViewer.js @@ -0,0 +1,796 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/fx", + "dojo/_base/array", + "dojo/dom-style", + "dojo/dom-construct", + "dijit/_Widget", + "dijit/_Templated", + "dijit/_Container", + "dijit/layout/ContentPane", + "../io/Connection", + "dojo/text!./templates/FeedEntryViewer.html", + "dojo/text!./templates/EntryHeader.html", + "dojo/i18n!./nls/FeedEntryViewer" +], function (dojo, connect, declare, fx, arrayUtil, domStyle, domConstruct, _Widget, _Templated, _Container, ContentPane, Connection, template, headerTemplate, i18nViewer) { + +dojo.experimental("dojox.atom.widget.FeedEntryViewer"); + +var widget = dojo.getObject("dojox.atom.widget", true); + +widget.FeedEntryViewer = dojo.declare(/*===== "dojox.atom.widget.FeedEntryViewer", =====*/ [_Widget, _Templated, _Container],{ + // summary: + // An ATOM feed entry editor for publishing updated ATOM entries, or viewing non-editable entries. + // description: + // An ATOM feed entry editor for publishing updated ATOM entries, or viewing non-editable entries. + entrySelectionTopic: "", //The topic to listen on for entries to edit. + + _validEntryFields: {}, //The entry fields that were present on the entry and are being displayed. + //This works in conjuntion with what is selected to be displayed. + displayEntrySections: "", //What current sections of the entries to display as a comma separated list. + _displayEntrySections: null, + + //Control options for the display options menu. + enableMenu: false, + enableMenuFade: false, + _optionButtonDisplayed: true, + + //Templates for the HTML rendering. Need to figure these out better, admittedly. + templateString: template, + + _entry: null, //The entry that is being viewed/edited. + _feed: null, //The feed the entry came from. + + _editMode: false, //Flag denoting the state of the widget, in edit mode or not. + + postCreate: function(){ + if(this.entrySelectionTopic !== ""){ + this._subscriptions = [dojo.subscribe(this.entrySelectionTopic, this, "_handleEvent")]; + } + var _nlsResources = i18nViewer; + this.displayOptions.innerHTML = _nlsResources.displayOptions; + this.feedEntryCheckBoxLabelTitle.innerHTML = _nlsResources.title; + this.feedEntryCheckBoxLabelAuthors.innerHTML = _nlsResources.authors; + this.feedEntryCheckBoxLabelContributors.innerHTML = _nlsResources.contributors; + this.feedEntryCheckBoxLabelId.innerHTML = _nlsResources.id; + this.close.innerHTML = _nlsResources.close; + this.feedEntryCheckBoxLabelUpdated.innerHTML = _nlsResources.updated; + this.feedEntryCheckBoxLabelSummary.innerHTML = _nlsResources.summary; + this.feedEntryCheckBoxLabelContent.innerHTML = _nlsResources.content; + }, + + startup: function(){ + if(this.displayEntrySections === ""){ + this._displayEntrySections = ["title","authors","contributors","summary","content","id","updated"]; + }else{ + this._displayEntrySections = this.displayEntrySections.split(","); + } + this._setDisplaySectionsCheckboxes(); + + if(this.enableMenu){ + domStyle.set(this.feedEntryViewerMenu, 'display', ''); + if(this.entryCheckBoxRow && this.entryCheckBoxRow2){ + if(this.enableMenuFade){ + fx.fadeOut({node: this.entryCheckBoxRow,duration: 250}).play(); + fx.fadeOut({node: this.entryCheckBoxRow2,duration: 250}).play(); + } + } + } + }, + + clear: function(){ + // summary: + // Function to clear the state of the widget. + // description: + // Function to clear the state of the widget. + this.destroyDescendants(); + this._entry=null; + this._feed=null; + this.clearNodes(); + }, + + clearNodes: function(){ + // summary: + // Function to clear all the display nodes for the ATOM entry from the viewer. + // description: + // Function to clear all the display nodes for the ATOM entry from the viewer. + + arrayUtil.forEach([ + "entryTitleRow", "entryAuthorRow", "entryContributorRow", "entrySummaryRow", "entryContentRow", + "entryIdRow", "entryUpdatedRow" + ], function(node){ + domStyle.set(this[node], "display", "none"); + }, this); + + arrayUtil.forEach([ + "entryTitleNode", "entryTitleHeader", "entryAuthorHeader", "entryContributorHeader", + "entryContributorNode", "entrySummaryHeader", "entrySummaryNode", "entryContentHeader", + "entryContentNode", "entryIdNode", "entryIdHeader", "entryUpdatedHeader", "entryUpdatedNode" + ], function(part){ + while(this[part].firstChild){ + domConstruct.destroy(this[part].firstChild); + } + } + ,this); + + }, + + setEntry: function(/*object*/entry, /*object*/feed, /*boolean*/leaveMenuState){ + // summary: + // Function to set the current entry that is being edited. + // description: + // Function to set the current entry that is being edited. + // + // entry: + // Instance of dojox.atom.io.model.Entry to display for reading/editing. + this.clear(); + this._validEntryFields = {}; + this._entry = entry; + this._feed = feed; + + if(entry !== null){ + // Handle the title. + if(this.entryTitleHeader){ + this.setTitleHeader(this.entryTitleHeader, entry); + } + + if(this.entryTitleNode){ + this.setTitle(this.entryTitleNode, this._editMode, entry); + } + + if(this.entryAuthorHeader){ + this.setAuthorsHeader(this.entryAuthorHeader, entry); + } + + if(this.entryAuthorNode){ + this.setAuthors(this.entryAuthorNode, this._editMode, entry); + } + + if(this.entryContributorHeader){ + this.setContributorsHeader(this.entryContributorHeader, entry); + } + + if(this.entryContributorNode){ + this.setContributors(this.entryContributorNode, this._editMode, entry); + } + + if(this.entryIdHeader){ + this.setIdHeader(this.entryIdHeader, entry); + } + + if(this.entryIdNode){ + this.setId(this.entryIdNode, this._editMode, entry); + } + + if(this.entryUpdatedHeader){ + this.setUpdatedHeader(this.entryUpdatedHeader, entry); + } + + if(this.entryUpdatedNode){ + this.setUpdated(this.entryUpdatedNode, this._editMode, entry); + } + + if(this.entrySummaryHeader){ + this.setSummaryHeader(this.entrySummaryHeader, entry); + } + + if(this.entrySummaryNode){ + this.setSummary(this.entrySummaryNode, this._editMode, entry); + } + + if(this.entryContentHeader){ + this.setContentHeader(this.entryContentHeader, entry); + } + + if(this.entryContentNode){ + this.setContent(this.entryContentNode, this._editMode, entry); + } + } + this._displaySections(); + }, + + setTitleHeader: function(/*DOM node*/titleHeaderNode, /*object*/entry){ + // summary: + // Function to set the contents of the title header node in the template to some value. + // description: + // Function to set the contents of the title header node in the template to some value. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // titleAchorNode: + // The DOM node to attach the title data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + // + if(entry.title && entry.title.value && entry.title.value !== null){ + var _nlsResources = i18nViewer; + var titleHeader = new widget.EntryHeader({title: _nlsResources.title}); + titleHeaderNode.appendChild(titleHeader.domNode); + } + }, + + setTitle: function(titleAnchorNode, editMode, entry){ + // summary: + // Function to set the contents of the title node in the template to some value from the entry. + // description: + // Function to set the contents of the title node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // titleAchorNode: + // The DOM node to attach the title data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(entry.title && entry.title.value && entry.title.value !== null){ + if(entry.title.type == "text"){ + var titleNode = document.createTextNode(entry.title.value); + titleAnchorNode.appendChild(titleNode); + }else{ + var titleViewNode = document.createElement("span"); + var titleView = new ContentPane({refreshOnShow: true, executeScripts: false}, titleViewNode); + titleView.attr('content', entry.title.value); + titleAnchorNode.appendChild(titleView.domNode); + } + this.setFieldValidity("title", true); + } + }, + + setAuthorsHeader: function(/*DOM node*/authorHeaderNode, /*object*/entry){ + // summary: + // Function to set the title format for the authors section of the author row in the template to some value from the entry. + // description: + // Function to set the title format for the authors section of the author row in the template to some value from the entry. + // This exists specifically so users can over-ride how the author data is filled out from an entry. + // + // authorHeaderNode: + // The DOM node to attach the author section header data to. + // entry: + // The Feed Entry to work with. + if(entry.authors && entry.authors.length > 0){ + var _nlsResources = i18nViewer; + var authorHeader = new widget.EntryHeader({title: _nlsResources.authors}); + authorHeaderNode.appendChild(authorHeader.domNode); + } + }, + + setAuthors: function(/*DOM node*/authorsAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the author node in the template to some value from the entry. + // description: + // Function to set the contents of the author node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // authorsAchorNode: + // The DOM node to attach the author data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + authorsAnchorNode.innerHTML = ""; + if(entry.authors && entry.authors.length > 0){ + for(var i in entry.authors){ + if(entry.authors[i].name){ + var anchor = authorsAnchorNode; + if(entry.authors[i].uri){ + var link = document.createElement("a"); + anchor.appendChild(link); + link.href = entry.authors[i].uri; + anchor = link; + } + var name = entry.authors[i].name; + if(entry.authors[i].email){ + name = name + " (" + entry.authors[i].email + ")"; + } + var authorNode = document.createTextNode(name); + anchor.appendChild(authorNode); + var breakNode = document.createElement("br"); + authorsAnchorNode.appendChild(breakNode); + this.setFieldValidity("authors", true); + } + } + } + }, + + setContributorsHeader: function(/*DOM node*/contributorsHeaderNode, /*object*/entry){ + // summary: + // Function to set the contents of the contributor header node in the template to some value from the entry. + // description: + // Function to set the contents of the contributor header node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // contributorsHeaderNode: + // The DOM node to attach the contributor title to. + // entry: + // The Feed Entry to work with. + if(entry.contributors && entry.contributors.length > 0){ + var _nlsResources = i18nViewer; + var contributorHeader = new widget.EntryHeader({title: _nlsResources.contributors}); + contributorsHeaderNode.appendChild(contributorHeader.domNode); + } + }, + + + setContributors: function(/*DOM node*/contributorsAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the contributor node in the template to some value from the entry. + // description: + // Function to set the contents of the contributor node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // contributorsAnchorNode: + // The DOM node to attach the contributor data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(entry.contributors && entry.contributors.length > 0){ + for(var i in entry.contributors){ + var contributorNode = document.createTextNode(entry.contributors[i].name); + contributorsAnchorNode.appendChild(contributorNode); + var breakNode = document.createElement("br"); + contributorsAnchorNode.appendChild(breakNode); + this.setFieldValidity("contributors", true); + } + } + }, + + + setIdHeader: function(/*DOM node*/idHeaderNode, /*object*/entry){ + // summary: + // Function to set the contents of the ID node in the template to some value from the entry. + // description: + // Function to set the contents of the ID node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // idAnchorNode: + // The DOM node to attach the ID data to. + // entry: + // The Feed Entry to work with. + if(entry.id && entry.id !== null){ + var _nlsResources = i18nViewer; + var idHeader = new widget.EntryHeader({title: _nlsResources.id}); + idHeaderNode.appendChild(idHeader.domNode); + } + }, + + + setId: function(/*DOM node*/idAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the ID node in the template to some value from the entry. + // description: + // Function to set the contents of the ID node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // idAnchorNode: + // The DOM node to attach the ID data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(entry.id && entry.id !== null){ + var idNode = document.createTextNode(entry.id); + idAnchorNode.appendChild(idNode); + this.setFieldValidity("id", true); + } + }, + + setUpdatedHeader: function(/*DOM node*/updatedHeaderNode, /*object*/entry){ + // summary: + // Function to set the contents of the updated header node in the template to some value from the entry. + // description: + // Function to set the contents of the updated header node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // updatedHeaderNode: + // The DOM node to attach the updated header data to. + // entry: + // The Feed Entry to work with. + if(entry.updated && entry.updated !== null){ + var _nlsResources = i18nViewer; + var updatedHeader = new widget.EntryHeader({title: _nlsResources.updated}); + updatedHeaderNode.appendChild(updatedHeader.domNode); + } + }, + + setUpdated: function(/*DOM node*/updatedAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the updated node in the template to some value from the entry. + // description: + // Function to set the contents of the updated node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // updatedAnchorNode: + // The DOM node to attach the udpated data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(entry.updated && entry.updated !== null){ + var updatedNode = document.createTextNode(entry.updated); + updatedAnchorNode.appendChild(updatedNode); + this.setFieldValidity("updated", true); + } + }, + + setSummaryHeader: function(/*DOM node*/summaryHeaderNode, /*object*/entry){ + // summary: + // Function to set the contents of the summary node in the template to some value from the entry. + // description: + // Function to set the contents of the summary node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // summaryHeaderNode: + // The DOM node to attach the summary title to. + // entry: + // The Feed Entry to work with. + if(entry.summary && entry.summary.value && entry.summary.value !== null){ + var _nlsResources = i18nViewer; + var summaryHeader = new widget.EntryHeader({title: _nlsResources.summary}); + summaryHeaderNode.appendChild(summaryHeader.domNode); + } + }, + + + setSummary: function(/*DOM node*/summaryAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the summary node in the template to some value from the entry. + // description: + // Function to set the contents of the summary node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // summaryAnchorNode: + // The DOM node to attach the summary data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(entry.summary && entry.summary.value && entry.summary.value !== null){ + var summaryViewNode = document.createElement("span"); + var summaryView = new ContentPane({refreshOnShow: true, executeScripts: false}, summaryViewNode); + summaryView.attr('content', entry.summary.value); + summaryAnchorNode.appendChild(summaryView.domNode); + this.setFieldValidity("summary", true); + } + }, + + setContentHeader: function(/*DOM node*/contentHeaderNode, /*object*/entry){ + // summary: + // Function to set the contents of the content node in the template to some value from the entry. + // description: + // Function to set the contents of the content node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // contentHeaderNode: + // The DOM node to attach the content data to. + // entry: + // The Feed Entry to work with. + if(entry.content && entry.content.value && entry.content.value !== null){ + var _nlsResources = i18nViewer; + var contentHeader = new widget.EntryHeader({title: _nlsResources.content}); + contentHeaderNode.appendChild(contentHeader.domNode); + } + }, + + setContent: function(/*DOM node*/contentAnchorNode, /*boolean*/editMode, /*object*/entry){ + // summary: + // Function to set the contents of the content node in the template to some value from the entry. + // description: + // Function to set the contents of the content node in the template to some value from the entry. + // This exists specifically so users can over-ride how the title data is filled out from an entry. + // + // contentAnchorNode: + // The DOM node to attach the content data to. + // editMode: + // Boolean to indicate if the display should be in edit mode or not. + // entry: + // The Feed Entry to work with. + if(entry.content && entry.content.value && entry.content.value !== null){ + var contentViewNode = document.createElement("span"); + var contentView = new ContentPane({refreshOnShow: true, executeScripts: false},contentViewNode); + contentView.attr('content', entry.content.value); + contentAnchorNode.appendChild(contentView.domNode); + this.setFieldValidity("content", true); + } + }, + + + _displaySections: function(){ + // summary: + // Internal function for determining which sections of the view to actually display. + // description: + // Internal function for determining which sections of the view to actually display. + // + // returns: + // Nothing. + domStyle.set(this.entryTitleRow, 'display', 'none'); + domStyle.set(this.entryAuthorRow, 'display', 'none'); + domStyle.set(this.entryContributorRow, 'display', 'none'); + domStyle.set(this.entrySummaryRow, 'display', 'none'); + domStyle.set(this.entryContentRow, 'display', 'none'); + domStyle.set(this.entryIdRow, 'display', 'none'); + domStyle.set(this.entryUpdatedRow, 'display', 'none'); + + for(var i in this._displayEntrySections){ + var section = this._displayEntrySections[i].toLowerCase(); + if(section === "title" && this.isFieldValid("title")){ + domStyle.set(this.entryTitleRow, 'display', ''); + } + if(section === "authors" && this.isFieldValid("authors")){ + domStyle.set(this.entryAuthorRow, 'display', ''); + } + if(section === "contributors" && this.isFieldValid("contributors")){ + domStyle.set(this.entryContributorRow, 'display', ''); + } + if(section === "summary" && this.isFieldValid("summary")){ + domStyle.set(this.entrySummaryRow, 'display', ''); + } + if(section === "content" && this.isFieldValid("content")){ + domStyle.set(this.entryContentRow, 'display', ''); + } + if(section === "id" && this.isFieldValid("id")){ + domStyle.set(this.entryIdRow, 'display', ''); + } + if(section === "updated" && this.isFieldValid("updated")){ + domStyle.set(this.entryUpdatedRow, 'display', ''); + } + + } + }, + + setDisplaySections: function(/*array*/sectionsArray){ + // summary: + // Function for setting which sections of the entry should be displayed. + // description: + // Function for setting which sections of the entry should be displayed. + // + // sectionsArray: + // Array of string names that indicate which sections to display. + // + // returns: + // Nothing. + if(sectionsArray !== null){ + this._displayEntrySections = sectionsArray; + this._displaySections(); + }else{ + this._displayEntrySections = ["title","authors","contributors","summary","content","id","updated"]; + } + }, + + _setDisplaySectionsCheckboxes: function(){ + // summary: + // Internal function for setting which checkboxes on the display are selected. + // description: + // Internal function for setting which checkboxes on the display are selected. + // + // returns: + // Nothing. + var items = ["title","authors","contributors","summary","content","id","updated"]; + for(var i in items){ + if(arrayUtil.indexOf(this._displayEntrySections, items[i]) == -1){ + domStyle.set(this["feedEntryCell"+items[i]], 'display', 'none'); + }else{ + this["feedEntryCheckBox"+items[i].substring(0,1).toUpperCase()+items[i].substring(1)].checked=true; + } + } + }, + + _readDisplaySections: function(){ + // summary: + // Internal function for reading what is currently checked for display and generating the display list from it. + // description: + // Internal function for reading what is currently checked for display and generating the display list from it. + // + // returns: + // Nothing. + var checkedList = []; + + if(this.feedEntryCheckBoxTitle.checked){ + checkedList.push("title"); + } + if(this.feedEntryCheckBoxAuthors.checked){ + checkedList.push("authors"); + } + if(this.feedEntryCheckBoxContributors.checked){ + checkedList.push("contributors"); + } + if(this.feedEntryCheckBoxSummary.checked){ + checkedList.push("summary"); + } + if(this.feedEntryCheckBoxContent.checked){ + checkedList.push("content"); + } + if(this.feedEntryCheckBoxId.checked){ + checkedList.push("id"); + } + if(this.feedEntryCheckBoxUpdated.checked){ + checkedList.push("updated"); + } + this._displayEntrySections = checkedList; + }, + + _toggleCheckbox: function(/*object*/checkBox){ + // summary: + // Internal function for determining of a particular entry is editable. + // description: + // Internal function for determining of a particular entry is editable. + // This is used for determining if the delete action should be displayed or not. + // + // checkBox: + // The checkbox object to toggle the selection on. + // + // returns: + // Nothing + if(checkBox.checked){ + checkBox.checked=false; + }else{ + checkBox.checked=true; + } + this._readDisplaySections(); + this._displaySections(); + }, + + _toggleOptions: function(/*object*/checkBox){ + // summary: + // Internal function for determining of a particular entry is editable. + // description: + // Internal function for determining of a particular entry is editable. + // This is used for determining if the delete action should be displayed or not. + // + // checkBox: + // The checkbox object to toggle the selection on. + // + // returns: + // Nothing + if(this.enableMenu){ + var fade = null; + var anim; + var anim2; + if(this._optionButtonDisplayed){ + if(this.enableMenuFade){ + anim = fx.fadeOut({node: this.entryCheckBoxDisplayOptions,duration: 250}); + connect.connect(anim, "onEnd", this, function(){ + domStyle.set(this.entryCheckBoxDisplayOptions, 'display', 'none'); + domStyle.set(this.entryCheckBoxRow, 'display', ''); + domStyle.set(this.entryCheckBoxRow2, 'display', ''); + fx.fadeIn({node: this.entryCheckBoxRow, duration: 250}).play(); + fx.fadeIn({node: this.entryCheckBoxRow2, duration: 250}).play(); + }); + anim.play(); + }else{ + domStyle.set(this.entryCheckBoxDisplayOptions, 'display', 'none'); + domStyle.set(this.entryCheckBoxRow, 'display', ''); + domStyle.set(this.entryCheckBoxRow2, 'display', ''); + } + this._optionButtonDisplayed=false; + }else{ + if(this.enableMenuFade){ + anim = fx.fadeOut({node: this.entryCheckBoxRow,duration: 250}); + anim2 = fx.fadeOut({node: this.entryCheckBoxRow2,duration: 250}); + connect.connect(anim, "onEnd", this, function(){ + domStyle.set(this.entryCheckBoxRow, 'display', 'none'); + domStyle.set(this.entryCheckBoxRow2, 'display', 'none'); + domStyle.set(this.entryCheckBoxDisplayOptions, 'display', ''); + fx.fadeIn({node: this.entryCheckBoxDisplayOptions, duration: 250}).play(); + }); + anim.play(); + anim2.play(); + }else{ + domStyle.set(this.entryCheckBoxRow, 'display', 'none'); + domStyle.set(this.entryCheckBoxRow2, 'display', 'none'); + domStyle.set(this.entryCheckBoxDisplayOptions, 'display', ''); + } + this._optionButtonDisplayed=true; + } + } + }, + + _handleEvent: function(/*object*/entrySelectionEvent){ + // summary: + // Internal function for listening to a topic that will handle entry notification. + // description: + // Internal function for listening to a topic that will handle entry notification. + // + // entrySelectionEvent: + // The topic message containing the entry that was selected for view. + // + // returns: + // Nothing. + if(entrySelectionEvent.source != this){ + if(entrySelectionEvent.action == "set" && entrySelectionEvent.entry){ + this.setEntry(entrySelectionEvent.entry, entrySelectionEvent.feed); + }else if(entrySelectionEvent.action == "delete" && entrySelectionEvent.entry && entrySelectionEvent.entry == this._entry){ + this.clear(); + } + } + }, + + setFieldValidity: function(/*string*/field, /*boolean*/isValid){ + // summary: + // Function to set whether a field in the view is valid and displayable. + // description: + // Function to set whether a field in the view is valid and displayable. + // This is needed for over-riding of the set* functions and customization of how data is displayed in the attach point. + // So if custom implementations use their own display logic, they can still enable the field. + // + // field: + // The field name to set the valid parameter on. Such as 'content', 'id', etc. + // isValid: + // Flag denoting if the field is valid or not. + // + // returns: + // Nothing. + if(field){ + var lowerField = field.toLowerCase(); + this._validEntryFields[field] = isValid; + } + }, + + isFieldValid: function(/*string*/field){ + // summary: + // Function to return if a displayable field is valid or not + // description: + // Function to return if a displayable field is valid or not + // + // field: + // The field name to get the valid parameter of. Such as 'content', 'id', etc. + // + // returns: + // boolean denoting if the field is valid and set. + return this._validEntryFields[field.toLowerCase()]; + }, + + getEntry: function(){ + return this._entry; + }, + + getFeed: function(){ + return this._feed; + }, + + destroy: function(){ + this.clear(); + arrayUtil.forEach(this._subscriptions, dojo.unsubscribe); + } +}); + +widget.EntryHeader = dojo.declare(/*===== "dojox.atom.widget.EntryHeader", =====*/ [_Widget, _Templated, _Container],{ + // summary: + // Widget representing a header in a FeedEntryViewer/Editor + // description: + // Widget representing a header in a FeedEntryViewer/Editor + title: "", + templateString: headerTemplate, + + postCreate: function(){ + this.setListHeader(); + }, + + setListHeader: function(/*string*/title){ + this.clear(); + if(title){ + this.title = title; + } + var textNode = document.createTextNode(this.title); + this.entryHeaderNode.appendChild(textNode); + }, + + clear: function(){ + this.destroyDescendants(); + if(this.entryHeaderNode){ + for(var i = 0; i < this.entryHeaderNode.childNodes.length; i++){ + this.entryHeaderNode.removeChild(this.entryHeaderNode.childNodes[i]); + } + } + }, + + destroy: function(){ + this.clear(); + } +}); + +return widget.FeedEntryViewer; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedViewer.js new file mode 100644 index 0000000..c591360 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/FeedViewer.js @@ -0,0 +1,807 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/dom-class", + "dijit/_Widget", + "dijit/_Templated", + "dijit/_Container", + "../io/Connection", + "dojo/text!./templates/FeedViewer.html", + "dojo/text!./templates/FeedViewerEntry.html", + "dojo/text!./templates/FeedViewerGrouping.html", + "dojo/i18n!./nls/FeedViewerEntry", + "dojo/_base/declare" +], function (dojo, lang, arrayUtil, connect, domClass, _Widget, _Templated, _Container, Connection, template, entryTemplate, groupingTemplate, i18nViewer) { +dojo.experimental("dojox.atom.widget.FeedViewer"); + +var widget = dojo.getObject("dojox.atom.widget", true); + +widget.FeedViewer = dojo.declare(/*===== "dojox.atom.widget.FeedViewer", =====*/ [_Widget, _Templated, _Container],{ + // summary: + // An ATOM feed viewer that allows for viewing a feed, deleting entries, and editing entries. + // description: + // An ATOM feed viewer that allows for viewing a feed, deleting entries, and editing entries. + feedViewerTableBody: null, //The body of the feed viewer table so we can access it and populate it. Will be assigned via template. + feedViewerTable: null, //The overal table container which contains the feed viewer table. Will be assigned via template. + entrySelectionTopic: "", //The topic to broadcast when any entry is clicked so that a listener can pick up it and display it. + url: "", //The URL to which to connect to initially on creation. + xmethod: false, + localSaveOnly: false, + + //Templates for the HTML rendering. Need to figure these out better, admittedly. + templateString: template, + + _feed: null, + _currentSelection: null, // Currently selected entry + + _includeFilters: null, + + alertsEnabled: false, + + postCreate: function(){ + // summary: + // The postCreate function. + // description: + // The postCreate function. Creates our AtomIO object for future interactions and subscribes to the + // event given in markup/creation. + this._includeFilters = []; + + if(this.entrySelectionTopic !== ""){ + this._subscriptions = [dojo.subscribe(this.entrySelectionTopic, this, "_handleEvent")]; + } + this.atomIO = new Connection(); + this.childWidgets = []; + }, + + startup: function(){ + // summary: + // The startup function. + // description: + // The startup function. Parses the filters and sets the feed based on the given url. + this.containerNode = this.feedViewerTableBody; + var children = this.getDescendants(); + for(var i in children){ + var child = children[i]; + if(child && child.isFilter){ + this._includeFilters.push(new widget.FeedViewer.CategoryIncludeFilter(child.scheme, child.term, child.label)); + child.destroy(); + } + } + + if(this.url !== ""){ + this.setFeedFromUrl(this.url); + } + }, + + clear: function(){ + // summary: + // Function clearing all current entries in the feed view. + // description: + // Function clearing all current entries in the feed view. + // + // returns: + // Nothing. + this.destroyDescendants(); + }, + + setFeedFromUrl: function(/*string*/url){ + // summary: + // Function setting the feed from a URL which to get the feed. + // description: + // Function setting the dojox.atom.io.model.Feed data into the view. + // + // url: + // The URL to the feed to load. + // + // returns: + // Nothing. + if(url !== ""){ + if(this._isRelativeURL(url)){ + var baseUrl = ""; + if(url.charAt(0) !== '/'){ + baseUrl = this._calculateBaseURL(window.location.href, true); + }else{ + baseUrl = this._calculateBaseURL(window.location.href, false); + } + this.url = baseUrl + url; + } + + this.atomIO.getFeed(url,lang.hitch(this,this.setFeed)); + } + }, + + + setFeed: function(/*object*/feed){ + // summary: + // Function setting the dojox.atom.io.model.Feed data into the view. + // description: + // Function setting the dojox.atom.io.model.Feed data into the view. + // + // entry: + // The dojox.atom.io.model.Feed object to process + // + // returns: + // Nothing. + this._feed = feed; + this.clear(); + var entrySorter=function(a,b){ + var dispA = this._displayDateForEntry(a); + var dispB = this._displayDateForEntry(b); + if(dispA > dispB){return -1;} + if(dispA < dispB){return 1;} + return 0; + }; + + // This function may not be safe in different locales. + var groupingStr = function(dateStr){ + var dpts = dateStr.split(','); + + dpts.pop(); // remove year and time + return dpts.join(","); + }; + var sortedEntries = feed.entries.sort(lang.hitch(this,entrySorter)); + if(feed){ + var lastSectionTitle = null; + for(var i=0;i 0) && (index < fullURL.length) && (index !== (fullURL.length -1))){ + //We want to include the terminating / + baseURL = fullURL.substring(0,(index + 1)); + }else{ + baseURL = fullURL; + } + }else{ + //We want to find the first occurance of / after the :// + index = fullURL.indexOf("://"); + if(index > 0){ + index = index + 3; + var protocol = fullURL.substring(0,index); + var fragmentURL = fullURL.substring(index, fullURL.length); + index = fragmentURL.indexOf("/"); + if((index < fragmentURL.length) && (index > 0) ){ + baseURL = protocol + fragmentURL.substring(0,index); + }else{ + baseURL = protocol + fragmentURL; + } + } + } + } + return baseURL; + }, + + _isFilterAccepted: function(/*object*/entry) { + // summary: + // Internal function to do matching of category filters to widgets. + // description: + // Internal function to do matching of category filters to widgets. + // + // returns: + // boolean denoting if this entry matched one of the accept filters. + var accepted = false; + if (this._includeFilters && (this._includeFilters.length > 0)) { + for (var i = 0; i < this._includeFilters.length; i++) { + var filter = this._includeFilters[i]; + if (filter.match(entry)) { + accepted = true; + break; + } + } + } + else { + accepted = true; + } + return accepted; + }, + + addCategoryIncludeFilter: function(/*object*/filter) { + // summary: + // Function to add a filter for entry inclusion in the feed view. + // description: + // Function to add a filter for entry inclusion in the feed view. + // + // filter: + // The basic items to filter on and the values. + // Should be of format: {scheme: , term: , label: } + // + // returns: + // Nothing. + if (filter) { + var scheme = filter.scheme; + var term = filter.term; + var label = filter.label; + var addIt = true; + + if (!scheme) { + scheme = null; + } + if (!term) { + scheme = null; + } + if (!label) { + scheme = null; + } + + if (this._includeFilters && this._includeFilters.length > 0) { + for (var i = 0; i < this._includeFilters.length; i++) { + var eFilter = this._includeFilters[i]; + if ((eFilter.term === term) && (eFilter.scheme === scheme) && (eFilter.label === label)) { + //Verify we don't have this filter already. + addIt = false; + break; + } + } + } + + if (addIt) { + this._includeFilters.push(widget.FeedViewer.CategoryIncludeFilter(scheme, term, label)); + } + } + }, + + removeCategoryIncludeFilter: function(/*object*/filter) { + // summary: + // Function to remove a filter for entry inclusion in the feed view. + // description: + // Function to remove a filter for entry inclusion in the feed view. + // + // filter: + // The basic items to identify the filter that is present. + // Should be of format: {scheme: , term: , label: } + // + // returns: + // Nothing. + if (filter) { + var scheme = filter.scheme; + var term = filter.term; + var label = filter.label; + + if (!scheme) { + scheme = null; + } + if (!term) { + scheme = null; + } + if (!label) { + scheme = null; + } + + var newFilters = []; + if (this._includeFilters && this._includeFilters.length > 0) { + for (var i = 0; i < this._includeFilters.length; i++) { + var eFilter = this._includeFilters[i]; + if (!((eFilter.term === term) && (eFilter.scheme === scheme) && (eFilter.label === label))) { + //Keep only filters that do not match + newFilters.push(eFilter); + } + } + this._includeFilters = newFilters; + } + } + }, + + _handleEvent: function(/*object*/entrySelectionEvent) { + // summary: + // Internal function for listening to a topic that will handle entry notification. + // description: + // Internal function for listening to a topic that will handle entry notification. + // + // entrySelectionEvent: + // The topic message containing the entry that was selected for view. + // + // returns: + // Nothing. + if(entrySelectionEvent.source != this) { + if(entrySelectionEvent.action == "update" && entrySelectionEvent.entry) { + var evt = entrySelectionEvent; + if(!this.localSaveOnly){ + this.atomIO.updateEntry(evt.entry, lang.hitch(evt.source,evt.callback), null, true); + } + this._currentSelection._entryWidget.setTime(this._displayDateForEntry(evt.entry).toLocaleTimeString()); + this._currentSelection._entryWidget.setTitle(evt.entry.title.value); + } else if(entrySelectionEvent.action == "post" && entrySelectionEvent.entry) { + if(!this.localSaveOnly){ + this.atomIO.addEntry(entrySelectionEvent.entry, this.url, lang.hitch(this,this._addEntry)); + }else{ + this._addEntry(entrySelectionEvent.entry); + } + } + } + }, + + _addEntry: function(/*object*/entry) { + // summary: + // callback function used when adding an entry to the feed. + // description: + // callback function used when adding an entry to the feed. After the entry has been posted to the feed, + // we add it to our feed representation (to show it on the page) and publish an event to update any entry viewers. + this._feed.addEntry(entry); + this.setFeed(this._feed); + dojo.publish(this.entrySelectionTopic, [{ action: "set", source: this, feed: this._feed, entry: entry }]); + }, + + destroy: function(){ + // summary: + // Destroys this widget, including all descendants and subscriptions. + // description: + // Destroys this widget, including all descendants and subscriptions. + this.clear(); + arrayUtil.forEach(this._subscriptions, dojo.unsubscribe); + } +}); + +widget.FeedViewerEntry = dojo.declare(/*===== "dojox.atom.widget.FeedViewerEntry", =====*/ [_Widget, _Templated],{ + // summary: + // Widget for handling the display of an entry and specific events associated with it. + // description: Widget for handling the display of an entry and specific events associated with it. + + templateString: entryTemplate, + + entryNode: null, + timeNode: null, + deleteButton: null, + entry: null, + feed: null, + + postCreate: function(){ + var _nlsResources = i18nViewer; + this.deleteButton.innerHTML = _nlsResources.deleteButton; + }, + + setTitle: function(/*string*/text){ + // summary: + // Function to set the title of the entry. + // description: + // Function to set the title of the entry. + // + // text: + // The title. + // + // returns: + // Nothing. + if (this.titleNode.lastChild){this.titleNode.removeChild(this.titleNode.lastChild);} + + var titleTextNode = document.createElement("div"); + titleTextNode.innerHTML = text; + this.titleNode.appendChild(titleTextNode); + }, + + setTime: function(/*string*/timeText){ + // summary: + // Function to set the time of the entry. + // description: + // Function to set the time of the entry. + // + // timeText: + // The string form of the date. + // + // returns: + // Nothing. + if (this.timeNode.lastChild){this.timeNode.removeChild(this.timeNode.lastChild);} + var timeTextNode = document.createTextNode(timeText); + this.timeNode.appendChild(timeTextNode); + }, + + enableDelete: function(){ + // summary: + // Function to enable the delete action on this entry. + // description: + // Function to enable the delete action on this entry. + // + // returns: + // Nothing. + if (this.deleteButton !== null) { + //TODO Fix this + this.deleteButton.style.display = 'inline'; + } + }, + + disableDelete: function(){ + // summary: + // Function to disable the delete action on this entry. + // description: + // Function to disable the delete action on this entry. + // + // returns: + // Nothing. + if (this.deleteButton !== null) { + this.deleteButton.style.display = 'none'; + } + }, + + deleteEntry: function(/*object*/event) { + // summary: + // Function to handle the delete event and delete the entry. + // description: + // Function to handle the delete event and delete the entry. + // + // returns: + // Nothing. + event.preventDefault(); + event.stopPropagation(); + this.feed.deleteEntry(this); + }, + + onClick: function(/*object*/e){ + // summary: + // Attach point for when a row is clicked on. + // description: + // Attach point for when a row is clicked on. + // + // e: + // The event generated by the click. + } +}); + +widget.FeedViewerGrouping = dojo.declare(/*===== "dojox.atom.widget.FeedViewerGrouping", =====*/ [_Widget, _Templated],{ + // summary: + // Grouping of feed entries. + // description: + // Grouping of feed entries. + templateString: groupingTemplate, + + groupingNode: null, + titleNode: null, + + setText: function(text){ + // summary: + // Sets the text to be shown above this grouping. + // description: + // Sets the text to be shown above this grouping. + // + // text: + // The text to show. + if (this.titleNode.lastChild){this.titleNode.removeChild(this.titleNode.lastChild);} + var textNode = document.createTextNode(text); + this.titleNode.appendChild(textNode); + } +}); + +widget.AtomEntryCategoryFilter = dojo.declare(/*===== "dojox.atom.widget.AtomEntryCategoryFilter", =====*/ [_Widget, _Templated],{ + // summary: + // A filter to be applied to the list of entries. + // description: + // A filter to be applied to the list of entries. + scheme: "", + term: "", + label: "", + isFilter: true +}); + +widget.FeedViewer.CategoryIncludeFilter = dojo.declare(/*===== "dojox.atom.widget.FeedViewer.CategoryIncludeFilter", =====*/ null,{ + constructor: function(scheme, term, label){ + // summary: + // The initializer function. + // description: + // The initializer function. + this.scheme = scheme; + this.term = term; + this.label = label; + }, + + match: function(entry) { + // summary: + // Function to determine if this category filter matches against a category on an atom entry + // description: + // Function to determine if this category filter matches against a category on an atom entry + // + // returns: + // boolean denoting if this category filter matched to this entry. + var matched = false; + if (entry !== null) { + var categories = entry.categories; + if (categories !== null) { + for (var i = 0; i < categories.length; i++) { + var category = categories[i]; + + if (this.scheme !== "") { + if (this.scheme !== category.scheme) { + break; + } + } + + if (this.term !== "") { + if (this.term !== category.term) { + break; + } + } + + if (this.label !== "") { + if (this.label !== category.label) { + break; + } + } + //Made it this far, everything matched. + matched = true; + } + } + } + return matched; + } +}); +return widget.FeedViewer; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedEntryEditor.js new file mode 100644 index 0000000..b4140c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedEntryEditor.js @@ -0,0 +1,42 @@ +define({ root: +//begin v1.x content +({ + doNew: "[new]", + edit: "[edit]", + save: "[save]", + cancel: "[cancel]" +}) +//end v1.x content +, +"ar": true, +"az": true, +"ca": true, +"cs": true, +"da": true, +"de": true, +"el": true, +"es": true, +"fi": true, +"fr": true, +"he": true, +"hu": true, +"hr": true, +"it": true, +"ja": true, +"kk": true, +"ko": true, +"nb": true, +"nl": true, +"pl": true, +"pt-pt": true, +"pt": true, +"ro": true, +"ru": true, +"sk": true, +"sl": true, +"sv": true, +"th": true, +"tr": true, +"zh": true, +"zh-tw": true +}) diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedEntryViewer.js new file mode 100644 index 0000000..0b05018 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedEntryViewer.js @@ -0,0 +1,47 @@ +define({ root: +//begin v1.x content +({ + displayOptions: "[display options]", + title: "Title", + authors: "Authors", + contributors: "Contributors", + id: "ID", + close: "[close]", + updated: "Updated", + summary: "Summary", + content: "Content" +}) +//end v1.x content +, +"ar": true, +"az": true, +"ca": true, +"cs": true, +"da": true, +"de": true, +"el": true, +"es": true, +"fi": true, +"fr": true, +"he": true, +"hu": true, +"hr": true, +"it": true, +"ja": true, +"kk": true, +"ko": true, +"nb": true, +"nl": true, +"pl": true, +"pt-pt": true, +"pt": true, +"ro": true, +"ru": true, +"sk": true, +"sl": true, +"sv": true, +"th": true, +"tr": true, +"zh": true, +"zh-tw": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedViewerEntry.js new file mode 100644 index 0000000..f4817b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/FeedViewerEntry.js @@ -0,0 +1,39 @@ +define({ root: +//begin v1.x content +({ + deleteButton: "[Delete]" +}) +//end v1.x content +, +"ar": true, +"az": true, +"ca": true, +"cs": true, +"da": true, +"de": true, +"el": true, +"es": true, +"fi": true, +"fr": true, +"he": true, +"hu": true, +"hr": true, +"it": true, +"ja": true, +"kk": true, +"ko": true, +"nb": true, +"nl": true, +"pl": true, +"pt-pt": true, +"pt": true, +"ro": true, +"ru": true, +"sk": true, +"sl": true, +"sv": true, +"th": true, +"tr": true, +"zh": true, +"zh-tw": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/PeopleEditor.js new file mode 100644 index 0000000..b1072d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/PeopleEditor.js @@ -0,0 +1,41 @@ +define({ root: +//begin v1.x content +({ + add: "Add", + addAuthor: "Add Author", + addContributor: "Add Contributor" +}) +//end v1.x content +, +"ar": true, +"az": true, +"ca": true, +"cs": true, +"da": true, +"de": true, +"el": true, +"es": true, +"fi": true, +"fr": true, +"he": true, +"hu": true, +"hr": true, +"it": true, +"ja": true, +"kk": true, +"ko": true, +"nb": true, +"nl": true, +"pl": true, +"pt-pt": true, +"pt": true, +"ro": true, +"ru": true, +"sk": true, +"sl": true, +"sv": true, +"th": true, +"tr": true, +"zh": true, +"zh-tw": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedEntryEditor.js new file mode 100644 index 0000000..794cfc3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[جديد]", + edit: "[تحرير]", + save: "[حفظ]", + cancel: "[الغاء]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedEntryViewer.js new file mode 100644 index 0000000..b12f468 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[اختيارات العرض]", + title: "العنوان", + authors: "المؤلفين", + contributors: "المساهمين", + id: "الكود", + close: "[اغلاق]", + updated: "تحديث في", + summary: "الملخص", + content: "المحتويات" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedViewerEntry.js new file mode 100644 index 0000000..1b4beb3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[حذف]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/PeopleEditor.js new file mode 100644 index 0000000..cc9eed1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ar/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "اضافة", + addAuthor: "اضافة مؤلف", + addContributor: "اضافة مشارك" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedEntryEditor.js new file mode 100644 index 0000000..94453d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + "edit" : "[tərtib et]", + "save" : "[saxla]", + "cancel" : "[ləğv et]", + "doNew" : "[yeni]" +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedEntryViewer.js new file mode 100644 index 0000000..3d94dc4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + "close" : "[çıx]", + "title" : "Başlıq", + "authors" : "Yazıçılar", + "summary" : "Məzmun", + "content" : "Tərkib", + "contributors" : "Əməyi keçənlər", + "updated" : "Yeniləndi", + "displayOptions" : "[göstərmə seçimləri]", + "id" : "Şəxsiyyət" +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedViewerEntry.js new file mode 100644 index 0000000..f92f842 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "deleteButton" : "[Sil]" +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/PeopleEditor.js new file mode 100644 index 0000000..470ea80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/az/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "add" : "Əlavə Et", + "addAuthor" : "Yazıçı Əlavə Et", + "addContributor" : "Əməyi keçənlərə Əlavə Et" +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedEntryEditor.js new file mode 100644 index 0000000..d4e2e5e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nou]", + edit: "[edita]", + save: "[desa]", + cancel: "[cancel·la]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedEntryViewer.js new file mode 100644 index 0000000..e8e069f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[mostra opcions]", + title: "Títol", + authors: "Autors", + contributors: "Col·laboradors", + id: "ID", + close: "[tanca]", + updated: "Actualitzat", + summary: "Resum", + content: "Contingut" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedViewerEntry.js new file mode 100644 index 0000000..09d0637 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Suprimeix]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/PeopleEditor.js new file mode 100644 index 0000000..5812a77 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ca/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Afegeix", + addAuthor: "Afegeix un autor", + addContributor: "Afegeix un col·laborador" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedEntryEditor.js new file mode 100644 index 0000000..4cdca82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nové]", + edit: "[upravit]", + save: "[uložit]", + cancel: "[storno]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedEntryViewer.js new file mode 100644 index 0000000..3001df4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[volby zobrazení]", + title: "Název", + authors: "Autoři", + contributors: "Přispěvatelé", + id: "ID", + close: "[zavřít]", + updated: "Aktualizováno", + summary: "Souhrn", + content: "Obsah" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedViewerEntry.js new file mode 100644 index 0000000..ef49dff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Odstranit]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/PeopleEditor.js new file mode 100644 index 0000000..902299d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/cs/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Přidat", + addAuthor: "Přidat autora", + addContributor: "Přidat přispěvatele" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedEntryEditor.js new file mode 100644 index 0000000..2c384b1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[ny]", + edit: "[redigér]", + save: "[gem]", + cancel: "[annullér]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedEntryViewer.js new file mode 100644 index 0000000..e423bbe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[fremvisningsvalg]", + title: "Titel", + authors: "Forfattere", + contributors: "Bidragydere", + id: "Id", + close: "[luk]", + updated: "Opdateret", + summary: "Resumé", + content: "Indhold" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedViewerEntry.js new file mode 100644 index 0000000..70f46db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Slet]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/PeopleEditor.js new file mode 100644 index 0000000..a3be0e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/da/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Tilføj", + addAuthor: "Tilføj forfatter", + addContributor: "Tilføj bidragyder" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedEntryEditor.js new file mode 100644 index 0000000..5f99cd6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[Neu]", + edit: "[Bearbeiten]", + save: "[Speichern]", + cancel: "[Abbrechen]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedEntryViewer.js new file mode 100644 index 0000000..964ca9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[Anzeigeoptionen]", + title: "Titel", + authors: "Autoren", + contributors: "Mitwirkende", + id: "ID", + close: "[Schließen]", + updated: "Aktualisiert", + summary: "Zusammenfassung", + content: "Inhalt" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedViewerEntry.js new file mode 100644 index 0000000..3d31af6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Löschen]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/PeopleEditor.js new file mode 100644 index 0000000..0d8ae2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/de/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Hinzufügen", + addAuthor: "Autor hinzufügen", + addContributor: "Mitwirkenden hinzufügen" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedEntryEditor.js new file mode 100644 index 0000000..dfbc26a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[δημιουργία]", + edit: "[τροποποίηση]", + save: "[αποθήκευση]", + cancel: "[ακύρωση]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedEntryViewer.js new file mode 100644 index 0000000..9fe5927 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[επιλογές παρουσίασης]", + title: "Τίτλος", + authors: "Συντάκτες", + contributors: "Συνεισφέροντες", + id: "Ταυτότητα", + close: "[κλείσιμο]", + updated: "Ενημερώθηκε", + summary: "Περίληψη", + content: "Περιεχόμενο" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedViewerEntry.js new file mode 100644 index 0000000..26ff04a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Διαγραφή]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/PeopleEditor.js new file mode 100644 index 0000000..f77bccd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/el/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Προσθήκη", + addAuthor: "Προσθήκη συντάκτη", + addContributor: "Προσθήκη συνεισφέροντα" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedEntryEditor.js new file mode 100644 index 0000000..9875ea9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nuevo]", + edit: "[editar]", + save: "[guardar]", + cancel: "[cancelar]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedEntryViewer.js new file mode 100644 index 0000000..183d3c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[opciones de visualización]", + title: "Título", + authors: "Autores", + contributors: "Colaboradores", + id: "ID", + close: "[cerrar]", + updated: "Actualizado", + summary: "Resumen", + content: "Contenido" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedViewerEntry.js new file mode 100644 index 0000000..5a4bbab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Suprimir]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/PeopleEditor.js new file mode 100644 index 0000000..e44cd21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/es/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Añadir", + addAuthor: "Añadir autor", + addContributor: "Añadir colaborador" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedEntryEditor.js new file mode 100644 index 0000000..ff67f18 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[uusi]", + edit: "[muokkaa]", + save: "[tallenna]", + cancel: "[peruuta]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedEntryViewer.js new file mode 100644 index 0000000..5fe38a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[näyttöasetukset]", + title: "Otsikko", + authors: "Tekijät", + contributors: "Lisääjät", + id: "Tunnus", + close: "[sulje]", + updated: "Päivitetty", + summary: "Tiivistelmä", + content: "Sisältö" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedViewerEntry.js new file mode 100644 index 0000000..b105b9a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Poista]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/PeopleEditor.js new file mode 100644 index 0000000..9788510 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fi/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Lisää", + addAuthor: "Lisää tekijä", + addContributor: "Lisää lisääjä" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedEntryEditor.js new file mode 100644 index 0000000..75207e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nouveau]", + edit: "[éditer]", + save: "[sauvegarder]", + cancel: "[annuler]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedEntryViewer.js new file mode 100644 index 0000000..6cfa5ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[options d'affichage]", + title: "Titre", + authors: "Auteurs", + contributors: "Collaborateurs", + id: "ID", + close: "[fermer]", + updated: "Mis à jour", + summary: "Récapitulatif", + content: "Contenu" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedViewerEntry.js new file mode 100644 index 0000000..e59ee80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Supprimer]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/PeopleEditor.js new file mode 100644 index 0000000..467c093 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/fr/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Ajouter", + addAuthor: "Ajouter un auteur", + addContributor: "Ajouter un collaborateur" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedEntryEditor.js new file mode 100644 index 0000000..ee70d5f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[חדש]", + edit: "[עריכה]", + save: "[שמירה]", + cancel: "[ביטול]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedEntryViewer.js new file mode 100644 index 0000000..ebc1fef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[אפשרויות הצגה]", + title: "כותרת", + authors: "מחברים", + contributors: "תורמים", + id: "זיהוי", + close: "[סגירה]", + updated: "עודכן", + summary: "סיכום", + content: "תוכן" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedViewerEntry.js new file mode 100644 index 0000000..f4a105c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[מחיקה]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/PeopleEditor.js new file mode 100644 index 0000000..ed16c78 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/he/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "הוספה", + addAuthor: "הוספת מחבר", + addContributor: "הוספת תורם" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedEntryEditor.js new file mode 100644 index 0000000..220f3e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedEntryEditor.js @@ -0,0 +1,8 @@ +define( +({ + doNew: "[novo]", + edit: "[uredi]", + save: "[spremi]", + cancel: "[opoziv]" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedEntryViewer.js new file mode 100644 index 0000000..97b5633 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedEntryViewer.js @@ -0,0 +1,13 @@ +define( +({ + displayOptions: "[opcije prikaza]", + title: "Naslov", + authors: "Autori", + contributors: "Doprinositelji", + id: "ID", + close: "[zatvori]", + updated: "Ažurirano", + summary: "Sažetak", + content: "Sadržaj" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedViewerEntry.js new file mode 100644 index 0000000..ae50ee3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/FeedViewerEntry.js @@ -0,0 +1,5 @@ +define( +({ + deleteButton: "[Izbriši]" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/PeopleEditor.js new file mode 100644 index 0000000..f581335 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hr/PeopleEditor.js @@ -0,0 +1,7 @@ +define( +({ + add: "Dodaj", + addAuthor: "Dodaj autora", + addContributor: "Dodaj doprinositelja" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedEntryEditor.js new file mode 100644 index 0000000..7f1df74 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[új]", + edit: "[szerkesztés]", + save: "[mentés]", + cancel: "[mégse]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedEntryViewer.js new file mode 100644 index 0000000..606763a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[megjelenítési beállítások]", + title: "Cím", + authors: "Szerzők", + contributors: "Közreműködők", + id: "Azonosító", + close: "[bezárás]", + updated: "Frissítve", + summary: "Összegzés", + content: "Tartalom" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedViewerEntry.js new file mode 100644 index 0000000..d33877c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Törlés]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/PeopleEditor.js new file mode 100644 index 0000000..ed930e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/hu/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Hozzáadás", + addAuthor: "Szerző hozzáadása", + addContributor: "Közreműködő hozzáadása" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedEntryEditor.js new file mode 100644 index 0000000..eb86b7e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nuovo]", + edit: "[modifica]", + save: "[salva]", + cancel: "[annulla]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedEntryViewer.js new file mode 100644 index 0000000..b336fa8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[visualizza opzioni]", + title: "Titolo", + authors: "Autori", + contributors: "Collaboratori", + id: "ID", + close: "[chiudi]", + updated: "Aggiornato", + summary: "Riepilogo", + content: "Indice" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedViewerEntry.js new file mode 100644 index 0000000..65838d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Cancella]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/PeopleEditor.js new file mode 100644 index 0000000..82f0b58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/it/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Aggiungi", + addAuthor: "Aggiungi autore", + addContributor: "Aggiungi collaboratori" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedEntryEditor.js new file mode 100644 index 0000000..c416414 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[新規]", + edit: "[編集]", + save: "[保存]", + cancel: "[キャンセル]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedEntryViewer.js new file mode 100644 index 0000000..7529c46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[表示オプション]", + title: "タイトル", + authors: "作成者", + contributors: "貢献者", + id: "ID", + close: "[閉じる]", + updated: "更新", + summary: "要約", + content: "内容" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedViewerEntry.js new file mode 100644 index 0000000..eb1dcd5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[削除]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/PeopleEditor.js new file mode 100644 index 0000000..6e9ed94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ja/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "追加", + addAuthor: "作成者の追加", + addContributor: "貢献者の追加" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedEntryEditor.js new file mode 100644 index 0000000..e639c51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[жаңа]", + edit: "[өңдеу]", + save: "[сақтау]", + cancel: "[болдырмау]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedEntryViewer.js new file mode 100644 index 0000000..aba4117 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[көрсету параметрлері]", + title: "Тақырып", + authors: "Авторлар", + contributors: "Таратушылар", + id: "ID коды", + close: "[жабу]", + updated: "Жаңартылған", + summary: "Жиынтық", + content: "Мазмұн" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedViewerEntry.js new file mode 100644 index 0000000..29e37cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Жою]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/PeopleEditor.js new file mode 100644 index 0000000..e6a5d51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/kk/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Қосу", + addAuthor: "Авторды қосу", + addContributor: "Салымшыны қосу" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedEntryEditor.js new file mode 100644 index 0000000..96d7121 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[새로 작성]", + edit: "[편집]", + save: "[저장]", + cancel: "[취소]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedEntryViewer.js new file mode 100644 index 0000000..c09eeec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[옵션 표시]", + title: "제목", + authors: "작성자", + contributors: "기고자", + id: "ID", + close: "[닫기]", + updated: "업데이트된 날짜", + summary: "요약", + content: "컨텐츠" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedViewerEntry.js new file mode 100644 index 0000000..3ed9505 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[삭제]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/PeopleEditor.js new file mode 100644 index 0000000..4d13a0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ko/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "추가", + addAuthor: "작성자 추가", + addContributor: "제공자 추가" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedEntryEditor.js new file mode 100644 index 0000000..47276a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[ny(tt)]", + edit: "[rediger]", + save: "[lagre]", + cancel: "[avbryt]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedEntryViewer.js new file mode 100644 index 0000000..b866294 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[visningsalternativer]", + title: "Tittel", + authors: "Forfattere", + contributors: "Bidragsytere", + id: "ID", + close: "[lukk]", + updated: "Oppdatert", + summary: "Sammendrag", + content: "Innhold" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedViewerEntry.js new file mode 100644 index 0000000..012ba64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Slett]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/PeopleEditor.js new file mode 100644 index 0000000..4557df9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nb/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Legg til", + addAuthor: "Legg til forfatter", + addContributor: "Legg til bidragsyter" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedEntryEditor.js new file mode 100644 index 0000000..3b2be53 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nieuw]", + edit: "[bewerken]", + save: "[opslaan]", + cancel: "[annuleren]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedEntryViewer.js new file mode 100644 index 0000000..088876f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[weergaveopties]", + title: "Titel", + authors: "Auteurs", + contributors: "Deelnemers", + id: "ID", + close: "[sluiten]", + updated: "Bijgewerkt", + summary: "Overzicht", + content: "Content" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedViewerEntry.js new file mode 100644 index 0000000..e44093c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Wissen]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/PeopleEditor.js new file mode 100644 index 0000000..74324dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/nl/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Toevoegen", + addAuthor: "Auteur toevoegen", + addContributor: "Deelnemer toevoegen" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedEntryEditor.js new file mode 100644 index 0000000..4f0a243 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nowy]", + edit: "[edytuj]", + save: "[zapisz]", + cancel: "[anuluj]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedEntryViewer.js new file mode 100644 index 0000000..48799aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[opcje wyświetlania]", + title: "Tytuł", + authors: "Autorzy", + contributors: "Kontrybutorzy", + id: "Identyfikator", + close: "[zamknij]", + updated: "Zaktualizowano", + summary: "Podsumowanie", + content: "Treść" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedViewerEntry.js new file mode 100644 index 0000000..c95c641 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Usuń]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/PeopleEditor.js new file mode 100644 index 0000000..56ffe89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pl/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Dodaj", + addAuthor: "Dodaj autora", + addContributor: "Dodaj kontrybutora" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedEntryEditor.js new file mode 100644 index 0000000..f134efc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[novo]", + edit: "[editar]", + save: "[guardar]", + cancel: "[cancelar]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedEntryViewer.js new file mode 100644 index 0000000..12732fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[opções de visualização]", + title: "Título", + authors: "Autores", + contributors: "Contribuintes", + id: "ID", + close: "[fechar]", + updated: "Actualizado", + summary: "Resumo", + content: "Conteúdo" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedViewerEntry.js new file mode 100644 index 0000000..bff7222 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Eliminar]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/PeopleEditor.js new file mode 100644 index 0000000..601c753 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt-pt/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Adicionar", + addAuthor: "Adicionar autor", + addContributor: "Adicionar contribuinte" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedEntryEditor.js new file mode 100644 index 0000000..26c3f10 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[novo]", + edit: "[editar]", + save: "[salvar]", + cancel: "[cancelar]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedEntryViewer.js new file mode 100644 index 0000000..4dc46e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[exibir opções]", + title: "Título", + authors: "Autores", + contributors: "Contribuidores", + id: "ID", + close: "[fechar]", + updated: "Atualizado", + summary: "Resumo", + content: "Conteúdo" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedViewerEntry.js new file mode 100644 index 0000000..8bb50b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Excluir]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/PeopleEditor.js new file mode 100644 index 0000000..b5e50e3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/pt/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Adicionar", + addAuthor: "Adicionar Autor", + addContributor: "Adicionar Contribuidor" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedEntryEditor.js new file mode 100644 index 0000000..a105010 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nou]", + edit: "[editare]", + save: "[salvare]", + cancel: "[anulare]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedEntryViewer.js new file mode 100644 index 0000000..cf2973b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[opţiuni afişare]", + title: "Titlu", + authors: "Autori", + contributors: "Contribuitori", + id: "ID", + close: "[închidere]", + updated: "Actualizat", + summary: "Sumar", + content: "Conţinut" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedViewerEntry.js new file mode 100644 index 0000000..5121ce8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Ştergere]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/PeopleEditor.js new file mode 100644 index 0000000..29a6dcf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ro/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Adăugare", + addAuthor: "Adăugare autor", + addContributor: "Adăugare contribuitor" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedEntryEditor.js new file mode 100644 index 0000000..9e4df1e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[создать]", + edit: "[изменить]", + save: "[сохранить]", + cancel: "[отмена]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedEntryViewer.js new file mode 100644 index 0000000..32db5f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[показать опции]", + title: "Название", + authors: "Авторы", + contributors: "Участники", + id: "ИД", + close: "[закрыть]", + updated: "Обновлено", + summary: "Сводка", + content: "Информационное наполнение" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedViewerEntry.js new file mode 100644 index 0000000..93347a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Удалить]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/PeopleEditor.js new file mode 100644 index 0000000..56e7b87 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/ru/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Добавить", + addAuthor: "Добавить автора", + addContributor: "Добавить участника" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedEntryEditor.js new file mode 100644 index 0000000..1c5625e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[nový]", + edit: "[upraviť]", + save: "[uložiť]", + cancel: "[zrušiť]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedEntryViewer.js new file mode 100644 index 0000000..9021643 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[zobraziť voľby]", + title: "Nadpis", + authors: "Autori", + contributors: "Prispievatelia", + id: "ID", + close: "[zatvoriť]", + updated: "Aktualizovaný", + summary: "Súhrn", + content: "Obsah" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedViewerEntry.js new file mode 100644 index 0000000..04f781b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Vymazať]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/PeopleEditor.js new file mode 100644 index 0000000..a87e12d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sk/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Pridať", + addAuthor: "Pridať autora", + addContributor: "Pridať prispievateľa" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedEntryEditor.js new file mode 100644 index 0000000..600a46b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[novo]", + edit: "[urejanje]", + save: "[shrani]", + cancel: "[prekliči]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedEntryViewer.js new file mode 100644 index 0000000..7233447 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[možnosti prikaza]", + title: "Naslov", + authors: "Avtorji", + contributors: "Kontributorji", + id: "ID", + close: "[zapri]", + updated: "Posodobljeno", + summary: "Povzetek", + content: "Vsebina" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedViewerEntry.js new file mode 100644 index 0000000..57deaff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Izbriši]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/PeopleEditor.js new file mode 100644 index 0000000..398504d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sl/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Dodaj", + addAuthor: "Dodaj avtorja", + addContributor: "Dodaj kontributorja" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedEntryEditor.js new file mode 100644 index 0000000..1119de5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[Nytt]", + edit: "[Redigera]", + save: "[Spara]", + cancel: "[Avbryt]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedEntryViewer.js new file mode 100644 index 0000000..d7bd22d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[Visningsalternativ]", + title: "Rubrik", + authors: "Författare", + contributors: "Medverkande", + id: "ID", + close: "[Stäng]", + updated: "Uppdaterat", + summary: "Sammanfattning", + content: "Innehåll" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedViewerEntry.js new file mode 100644 index 0000000..220dc3b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Ta bort]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/PeopleEditor.js new file mode 100644 index 0000000..79eee2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/sv/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Lägg till", + addAuthor: "Lägg till författare", + addContributor: "Lägg till medverkande" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedEntryEditor.js new file mode 100644 index 0000000..2386f0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[สร้าง]", + edit: "[แก้ไข]", + save: "[บันทึก]", + cancel: "[ยกเลิก]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedEntryViewer.js new file mode 100644 index 0000000..7f6fa5e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[อ็อพชันการแสดงผล]", + title: "ชื่อเรื่อง", + authors: "ผู้เขียน", + contributors: "ผู้อนุเคราะห์", + id: "ID", + close: "[ปิด]", + updated: "อัพเดต", + summary: "สรุป", + content: "เนื้อหา" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedViewerEntry.js new file mode 100644 index 0000000..2e2ce0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[ลบ]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/PeopleEditor.js new file mode 100644 index 0000000..4acc14d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/th/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "เพิ่ม", + addAuthor: "เพิ่มผู้เขียน", + addContributor: "เพิ่มผู้อนุเคราะห์" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedEntryEditor.js new file mode 100644 index 0000000..afc61bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[yeni]", + edit: "[düzenle]", + save: "[kaydet]", + cancel: "[iptal]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedEntryViewer.js new file mode 100644 index 0000000..bed8901 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[görüntüleme seçenekleri]", + title: "Başlık", + authors: "Yazarlar", + contributors: "Katkıda Bulunanlar", + id: "Kimlik", + close: "[kapat]", + updated: "Güncelleştirildi", + summary: "Özet", + content: "İçerik" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedViewerEntry.js new file mode 100644 index 0000000..7b6071c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[Sil]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/PeopleEditor.js new file mode 100644 index 0000000..dd78561 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/tr/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "Ekle", + addAuthor: "Yazar Ekle", + addContributor: "Katkıda Bulunan Ekle" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedEntryEditor.js new file mode 100644 index 0000000..b87c26c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[新建]", + edit: "[編輯]", + save: "[儲存]", + cancel: "[取消]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedEntryViewer.js new file mode 100644 index 0000000..e903d76 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[顯示選項]", + title: "標題", + authors: "作者", + contributors: "貢獻者", + id: "ID", + close: "[關閉]", + updated: "已更新", + summary: "摘要", + content: "內容" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedViewerEntry.js new file mode 100644 index 0000000..c2336df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[刪除]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/PeopleEditor.js new file mode 100644 index 0000000..41ea811 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh-tw/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "新增", + addAuthor: "新增作者", + addContributor: "新增貢獻者" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedEntryEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedEntryEditor.js new file mode 100644 index 0000000..ac9f053 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedEntryEditor.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + doNew: "[新建]", + edit: "[编辑]", + save: "[保存]", + cancel: "[取消]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedEntryViewer.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedEntryViewer.js new file mode 100644 index 0000000..7d59651 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedEntryViewer.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + displayOptions: "[显示选项]", + title: "标题", + authors: "作者", + contributors: "内容添加者", + id: "标识", + close: "[关闭]", + updated: "更新时间", + summary: "摘要", + content: "内容" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedViewerEntry.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedViewerEntry.js new file mode 100644 index 0000000..7ebd582 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/FeedViewerEntry.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + deleteButton: "[删除]" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/PeopleEditor.js b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/PeopleEditor.js new file mode 100644 index 0000000..7eb3533 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/nls/zh/PeopleEditor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + add: "添加", + addAuthor: "添加作者", + addContributor: "添加内容添加者" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/EntryHeader.html b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/EntryHeader.html new file mode 100644 index 0000000..67d1e81 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/EntryHeader.html @@ -0,0 +1 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedEntryEditor.html b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedEntryEditor.html new file mode 100644 index 0000000..6a7f445 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedEntryEditor.html @@ -0,0 +1,195 @@ +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedEntryViewer.html b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedEntryViewer.html new file mode 100644 index 0000000..408c071 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedEntryViewer.html @@ -0,0 +1,158 @@ +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewer.html b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewer.html new file mode 100644 index 0000000..f3d2108 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewer.html @@ -0,0 +1,6 @@ +
                            + + + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewerEntry.html b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewerEntry.html new file mode 100644 index 0000000..201f884 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/FeedViewerEntry.html @@ -0,0 +1,15 @@ +
                            + + + + + + +
                            + + +
                            +
                            +
                            + +
                            + +
                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/EntryHeader.css b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/EntryHeader.css new file mode 100644 index 0000000..6403b61 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/EntryHeader.css @@ -0,0 +1,35 @@ + +.containerNode { + visibility : visible; +} +.graphic-tab-lgray { + margin-bottom: 10px; +} +/* + background: #d9d9d9; + border-bottom: #d9d9d9 solid 7px; +}*/ + +/* headers for listview */ +.newgraphic-tab-lgray { + border-bottom: #d9d9d9 solid 7px; +} +td.lp { + padding: 0px 13px 0px 10px; + font-weight: bold; + background: #d9d9d9; + border-bottom: #d9d9d9 solid 7px; +} + +td.lp2 { + background: #FFFFFF; + border-bottom: #d9d9d9 solid 7px; +} + +span.lp { + padding: 0px 13px 0px 10px; + font-weight: bold; + background: #d9d9d9; + border-bottom: #d9d9d9 solid 7px; + width: auto; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedEntryEditor.css b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedEntryEditor.css new file mode 100644 index 0000000..a6fa3c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedEntryEditor.css @@ -0,0 +1,98 @@ +.feedEntryEditor { + color:#000000; + background: #FFFFFF; +} + +.feedEntryEditorMenuTable { + background: #C0C0C0; + border:2px solid; + border-top-color: lightgrey; + border-left-color: lightgrey; + border-right-color: darkgray; + border-bottom-color: darkgray; +} + +.feedEntryEditorMenu { + cursor: pointer; + color:#0000FF; + text-align: left; + font-size: small; +} + +.feedEntryEditorDisplayCheckbox { + font-size: small; + text-align: left; +} + +.feedEntryEditorMenu:hover { + text-decoration: underline; +} + +.feedEntryEditorTitle { + color:#000000; + background: #FFFFFF; + text-align: left; + #padding-left: 10px; + font-size: 125%; + font-weight: bold; +} + +.feedEntryEditorAuthor { + color:#000000; + background: #FFFFFF; +} + +.feedEntryEditorAuthorNames { + color:#000000; + background: #FFFFFF; + text-align: left; + #padding-left: 10px; + font-size: 110%; + font-style: italic; + font-weight: normal; +} + +.feedEntryEditorSummary { + color:#000000; + background: #FFFFFF; +} + +.feedEntryEditorUpdated { + color:#000000; + background: #FFFFFF; +} + +.feedEntryEditorUpdatedText { + color:#000000; + background: #FFFFFF; + font-size: 110%; + font-style: italic; + font-weight: normal; +} + +.feedEntryEditorId { + color:#000000; + background: #FFFFFF; +} + +.feedEntryEditorIdText { + color:#000000; + background: #FFFFFF; + font-style: italic; + font-size: 110%; + font-weight: normal; +} + +.feedEntryEditorContent { + color:#000000; + background: #FFFFFF; +} + +.feedEntryEditorContributorNames { + color:#000000; + text-align: left; + #padding-left: 10px; + font-size: 125%; + font-style: italic; + font-weight: normal; +} diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedEntryViewer.css b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedEntryViewer.css new file mode 100644 index 0000000..36400c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedEntryViewer.css @@ -0,0 +1,107 @@ +.feedEntryViewer { + color:#000000; + background: #FFFFFF; +/* overflow: auto;*/ +} + +.feedEntryViewerMenuTable { + background: #C0C0C0; + border:2px solid; + border-top-color: lightgrey; + border-left-color: lightgrey; + border-right-color: darkgray; + border-bottom-color: darkgray; + margin: 0; +} + +.feedEntryViewerMenu, .peopleEditorButton { + cursor: pointer; + color:#0000FF; + text-align: left; + font-size: small; +} + +.feedEntryViewerDisplayCheckbox { + font-size: small; + text-align: left; +} + +.feedEntryViewerMenu:hover, .peopleEditorButton:hover { + text-decoration: underline; +} + +.feedEntryViewerContainer, .feedEntryViewerContainer table { + border-width: 0; + margin: 0; +} + +.feedEntryViewerTitle { + color:#000000; + background: #FFFFFF; + text-align: left; + /*padding-left: 10px;*/ + font-size: 125%; + font-weight: bold; +} + +.feedEntryViewerAuthor { + color:#000000; + background: #FFFFFF; +} + +.feedEntryViewerAuthorNames { + color:#000000; + background: #FFFFFF; + text-align: left; + /*padding-left: 10px;*/ + font-size: 110%; + font-style: italic; + font-weight: normal; +} + +.feedEntryViewerSummary { + color:#000000; + background: #FFFFFF; +} + +.feedEntryViewerUpdated { + color:#000000; + background: #FFFFFF; +} + +.feedEntryViewerUpdatedText { + color:#000000; + background: #FFFFFF; + font-size: 110%; + font-style: italic; + font-weight: normal; +} + +.feedEntryViewerId { + color:#000000; + background: #FFFFFF; +} + +.feedEntryViewerIdText { + color:#000000; + background: #FFFFFF; + font-style: italic; + font-size: 110%; + font-weight: normal; +} + +.feedEntryViewerContent { + color:#000000; + background: #FFFFFF; +} + +.feedEntryViewerContributorNames { + color:#000000; + text-align: left; + /*padding-left: 10px;*/ + font-size: 125%; + font-weight: normal; +} + +.feedEntryViewer table { +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewer.css b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewer.css new file mode 100644 index 0000000..395df3d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewer.css @@ -0,0 +1,16 @@ +.feedViewerTable { + font-size: small; + width:100%; + cursor:default; + padding:2px; +} + +.feedViewerTable, .feedViewerTable table { + border-width: 0; + margin: 0; +} + +.feedViewerTableBody { + overflow-x: auto; + overflow-y: auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewerEntry.css b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewerEntry.css new file mode 100644 index 0000000..49a7f6c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewerEntry.css @@ -0,0 +1,70 @@ +.feedViewerEntry { + background: #F0F0F0; + padding: 2px; + overflow-x: auto; + overflow-y: auto; + cursor: pointer; +} + +.feedViewerEntry:hover { + background: #a6c2e7; + padding: 2px; +} + +.feedViewerEntrySelected { + color: #000000; + background: #C0C0C0; + text-align: left; + vertical-align: top; + padding-bottom: 2px; + padding: 2px; +} + +.feedViewerEntrySelected:hover { + background: #a6c2e7; + padding: 2px; +} + + +.feedViewerEntryUpdated { + text-align: left; + vertical-align: top; + color: #909090; + padding-bottom: 2px; + padding: 2px; +} + +.feedViewerEntryUpdatedSelected { + text-align: left; + vertical-align: top; + color: #000000; + padding-bottom: 2px; + padding: 2px; +} + + +.feedViewerEntryTitle { + color:#000000; + text-align: left; + text-decoration:none; + padding-left: 4px; + padding-bottom: 2px; +} +.feedViewerEntryTitle:hover { + color:#000000; + text-align: left; + text-decoration:underline; + padding-left: 4px; + padding-bottom: 2px; +} + +.feedViewerDeleteButton { + cursor: pointer; + color:#0000FF; + text-align: left; + font-size: small; +} + +.feedViewerDeleteButton:hover { + text-decoration: underline; +} diff --git a/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewerGrouping.css b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewerGrouping.css new file mode 100644 index 0000000..326781e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/atom/widget/templates/css/HtmlFeedViewerGrouping.css @@ -0,0 +1,8 @@ +.feedViewerGrouping { +} +.feedViewerGroupingTitle { + font-weight: bold; + color:#606060; + border-bottom:1px solid #909090; + padding-top: 4px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/av/FLAudio.js b/js/dojo-release-1.7.2-src/dojox/av/FLAudio.js new file mode 100644 index 0000000..34fa6b0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/FLAudio.js @@ -0,0 +1,378 @@ +define(['dojo', 'dojox/embed/Flash', 'dojox/timing/doLater'],function(dojo, dijit){ + +dojo.experimental("dojox.av.FLVideo"); + +dojo.declare("dojox.av.FLAudio", null, { + + // summary: + // Play MP3 files through the Flash SWF built in the + // DEFT project. + // description: + // This class is brand new, so there is a lot of + // functionality not yet available. The initial + // purpose is for playing "event" sounds like button + // clicks, and for loading and controlling multiple + // sounds at once. As of yet, streaming is not supported + // and polling the sounds for events during playback + // may still be missing information. Markup is not + // supported, as it may not be needed. + // + // TODO: + // Streaming, playback events, crossdomain, CDN support, + // (alternate SWF location), global volume, ID3 tag, + // factor out doLater, onLoadStatus needs work, + // play(position) / seek() + // + // example: + // | new dojox.av.FLAudio({ + // | initialVolume:.7, + // | initialPan:0, + // | autoPlay:false + // | }); + // + // id: String? + // The id of this widget and the id of the SWF movie. + id:"", + // + // initialVolume: Number + // From 0-1 + // Sets volume for all files unless changed with doPlay + // or setVolume + initialVolume: 0.7, + // + // initialPan: Number + // From -1 to 1 (-1 is left, 1 is right, 0 is middle) + // Sets pan for all files unless changed with play + // or setPan + initialPan: 0, + // + // autoPlay: Boolean + // If true, all files will play upon load. If false, + // they load and wait for doPlay() command. + // + // isDebug: Boolean? + // Setting to true tells the SWF to output log messages to Firebug. + isDebug: false, + // + // statusInterval: Number + // How often in milliseconds that the status of the + // player is checked - both load and play + statusInterval:200, + // + // _swfPath: Uri + // The path to the video player SWF resource + _swfPath: dojo.moduleUrl("dojox.av", "resources/audio.swf"), + // + // + // allowScriptAccess: String + // Whether the SWF can access the container JS + allowScriptAccess:"always", + // + // allowNetworking: String + // Whether SWF is restricted to a domain + allowNetworking: "all", + // + + constructor: function(/*Object*/options){ + + // Provide this function for the SWF to ensure that the it is playing + // in HTML. + dojo.global.swfIsInHTML = function(){ return true; } + + dojo.mixin(this, options || {}); + if(!this.id){ this.id = "flaudio_"+new Date().getTime(); } + this.domNode = dojo.doc.createElement("div"); + dojo.style(this.domNode, { + position:"relative", + width:"1px", + height:"1px", + top:"1px", + left:"1px" + }); + dojo.body().appendChild(this.domNode); + this.init(); + }, + + init: function(){ + // summary: + // Initialize the media. + // + // + this._subs = []; + this.initialVolume = this._normalizeVolume(this.initialVolume); + + var args = { + path:this._swfPath.uri, + width:"1px", + height:"1px", + minimumVersion:9, // this may need to be 10, not sure + expressInstall:true, + params:{ + wmode:"transparent", + allowScriptAccess:this.allowScriptAccess, + allowNetworking:this.allowNetworking + }, + // only pass in simple variables - no deep objects + vars:{ + id:this.id, + autoPlay:this.autoPlay, + initialVolume:this.initialVolume, + initialPan:this.initialPan, + statusInterval:this.statusInterval, + isDebug:this.isDebug + } + }; + + this._sub("mediaError", "onError"); + this._sub("filesProgress", "onLoadStatus"); + this._sub("filesAllLoaded", "onAllLoaded"); + this._sub("mediaPosition", "onPlayStatus"); + this._sub("mediaEnd", "onComplete"); + this._sub("mediaMeta", "onID3"); + + this._flashObject = new dojox.embed.Flash(args, this.domNode); + this._flashObject.onError = function(err){ + console.warn("Flash Error:", err); + }; + this._flashObject.onLoad = dojo.hitch(this, function(mov){ + this.flashMedia = mov; + this.isPlaying = this.autoPlay; + this.isStopped = !this.autoPlay; + this.onLoad(this.flashMedia); + }); + }, + + // ============== // + // Loading Files // + // ============== // + + load: function(/*Object*/options){ + // summary: + // Adds a media object to the playlist + // ***This can be called repeatedly to add multiple items. + // options: Object + // url: String + // (required) path to MP3 media + // url must be absolute or relative to SWF, + // not dojo or the html. An effort will be made + // to fix incorrect paths. + // id: String + // (optional) an identifier to later determine + // which media to control. + // returns: + // The normalized url, which can be used to identify the + // audio. + // + if(dojox.timing.doLater(this.flashMedia, this)){ return false; } + if(!options.url){ + throw new Error("An url is required for loading media"); + return false; + }else{ + options.url = this._normalizeUrl(options.url); + } + this.flashMedia.load(options); + + return options.url; // String + }, + + // ============================= // + // Methods to control the sound // + // ============================= // + + doPlay: function(/*Object*/options){ + // summary: + // Tell media to play, based on + // the options passed. + // options: Object + // volume: Number + // Sets the volume + // pan: Number + // Sets left/right pan + // index:Number OR id:String OR url:String + // Choose one of the above to indentify + // the media you wish to control. id is + // set by you. index is the order in which + // media was added (zero based) + // NOTE: lack of an identifier will default + // to first (or only) item. + // NOTE: Can't name this method "play()" as it causes + // an IE error. + this.flashMedia.doPlay(options); + }, + + pause: function(/*Object*/options){ + // summary: + // Tell media to pause, based on identifier in + // the options passed. + // options: Object + // index:Number OR id:String OR url:String + // See doPlay() + // + this.flashMedia.pause(options); + }, + + stop: function(/*Object*/options){ + // summary: + // Tell media to stop, based on identifier in + // the options passed. + // options: + // index:Number OR id:String OR url:String + // See doPlay() + // + this.flashMedia.doStop(options); + }, + + setVolume: function(/*Object*/options){ + // summary: + // Set media volume, based on identifier in + // the options passed. + // options: + // volume: Number + // 0 to 1 + // index:Number OR id:String OR url:String + // See doPlay() + // + this.flashMedia.setVolume(options); + }, + + setPan: function(/*Object*/options){ + // summary: + // Set media pan, based on identifier in + // the options passed. + // options: + // pan:Number + // -1 to 1 + // index:Number OR id:String OR url:String + // See doPlay() + // + this.flashMedia.setPan(options); + }, + + getVolume: function(/*Object*/options){ + // summary: + // Get media volume, based on identifier in + // the options passed. + // options: + // index:Number OR id:String OR url:String + // See doPlay() + // + return this.flashMedia.getVolume(options); + }, + + getPan: function(/*Object*/options){ + // summary: + // Set media pan, based on identifier in + // the options passed. + // options: + // index:Number OR id:String OR url:String + // See doPlay() + // + return this.flashMedia.getPan(options); + }, + + getPosition: function(/*Object*/options){ + // summary: + // Get the current time. + // options: + // index:Number OR id:String OR url:String + // See doPlay() + // + return this.flashMedia.getPosition(options); + }, + + // ============= // + // Sound Events // + // ============= // + onError: function(msg){ + // summary: + // stub fired when an error occurs + console.warn("SWF ERROR:", msg) + }, + + onLoadStatus: function(/*Array*/events){ + // summary: + }, + + onAllLoaded: function(){ + // summary: + // stub fired + }, + + onPlayStatus: function(/*Array*/events){ + // summary: + }, + + onComplete: function(/*Array*/events){ + // summary: + // Fired at the end of a media file. + }, + + onLoad: function(){ + // summary: + // stub fired when SWF is ready + }, + onID3: function(evt){ + // summary: + // Fired when the ID3 data is received. + }, + + + + destroy: function(){ + // summary: + // destroys flash + if(!this.flashMedia){ + this._cons.push(dojo.connect(this, "onLoad", this, "destroy")); + return; + } + dojo.forEach(this._subs, function(s){ + dojo.unsubscribe(s); + }); + dojo.forEach(this._cons, function(c){ + dojo.disconnect(c); + }); + this._flashObject.destroy(); + //dojo._destroyElement(this.flashDiv); + }, + + + + _sub: function(topic, method){ + // summary: + // helper for subscribing to topics + dojo.subscribe(this.id+"/"+topic, this, method); + }, + + _normalizeVolume: function(vol){ + // summary: + // Ensures volume is less than one + // + if(vol>1){ + while(vol>1){ + vol*=.1 + } + } + return vol; + }, + + _normalizeUrl: function(_url){ + // summary: + // Checks that path is relative to HTML file or + // convertes it to an absolute path. + // + if(_url && _url.toLowerCase().indexOf("http")<0){ + // + // Appears to be a relative path. Attempt to convert it to absolute, + // so it will better target the SWF. + var loc = window.location.href.split("/"); + loc.pop(); + loc = loc.join("/")+"/"; + + _url = loc+_url; + } + return _url; + } + +}); +return dojox.av.FLAudio; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/FLVideo.js b/js/dojo-release-1.7.2-src/dojox/av/FLVideo.js new file mode 100644 index 0000000..1954526 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/FLVideo.js @@ -0,0 +1,322 @@ +define(['dojo', 'dijit', 'dijit/_Widget', 'dojox/embed/Flash', 'dojox/av/_Media'],function(dojo, dijit){ + +dojo.experimental("dojox.av.FLVideo"); +dojo.declare("dojox.av.FLVideo", [dijit._Widget, dojox.av._Media], { + + // summary: + // Inserts a Flash FLV video into the HTML page and provides methods + // and events for controlling the video. Also plays the H264/M4V codec + // with a little trickery: change the '.M4V' extension to '.flv'. + // + // example: + // + // markup: + // |
                          + // programmatic: + // | new dojox.av.FLVideo({ + // | initialVolume:.7, + // | mediaUrl:"../resources/Grog.flv" + // | }, "vid"); + // + // mediaUrl: String + // REQUIRED: The Url of the video file that will be played. + // NOTE: Must be either an absolute URL or relative to the HTML file. + // Relative paths will be converted to abslute paths + // + // _swfPath: Uri + // The path to the video player SWF resource + _swfPath: dojo.moduleUrl("dojox.av", "resources/video.swf"), + // + // + constructor: function(/*Object*/options){ + // Provide this function for the SWF to ensure that the it is playing + // in HTML. + dojo.global.swfIsInHTML = function(){ return true; } + }, + + postCreate: function(){ + // summary: + // Initialize the media. + // + // + this._subs = []; + this._cons = []; + this.mediaUrl = this._normalizeUrl(this.mediaUrl); + this.initialVolume = this._normalizeVolume(this.initialVolume); + + var args = { + path:this._swfPath, + width:"100%", + height:"100%", + minimumVersion:9, + expressInstall:true, + params:{ + allowFullScreen: this.allowFullScreen, + wmode:this.wmode, + allowScriptAccess:this.allowScriptAccess, + allowNetworking:this.allowNetworking + }, + // only pass in simple variables - no deep objects + vars:{ + videoUrl:this.mediaUrl, + id:this.id, + autoPlay:this.autoPlay, + volume:this.initialVolume, + isDebug:this.isDebug + } + }; + + // Setting up dojo.subscribes that listens to events + // from the player + this._sub("stageClick", "onClick"); + this._sub("stageSized", "onSwfSized"); + this._sub("mediaStatus", "onPlayerStatus"); + this._sub("mediaMeta", "onMetaData"); + this._sub("mediaError", "onError"); + this._sub("mediaStart", "onStart"); + this._sub("mediaEnd", "onEnd"); + + this._flashObject = new dojox.embed.Flash(args, this.domNode); + this._flashObject.onError = function(err){ + console.error("Flash Error:", err); + }; + this._flashObject.onLoad = dojo.hitch(this, function(mov){ + this.flashMedia = mov; + this.isPlaying = this.autoPlay; + this.isStopped = !this.autoPlay; + this.onLoad(this.flashMedia); + this._initStatus(); + this._update(); + }); + this.inherited(arguments); + }, + + // ============================= // + // Methods to control the player // + // ============================= // + + play: function(/* String? */newUrl){ + // summary: + // Plays the video. If an url is passed in, plays the new link. + this.isPlaying = true; + this.isStopped = false; + this.flashMedia.doPlay(this._normalizeUrl(newUrl)); + }, + + pause: function(){ + // summary: + // Pauses the video + this.isPlaying = false; + this.isStopped = false; + if(this.onPaused){ + this.onPaused(); + } + this.flashMedia.pause(); + }, + + seek: function(/* Float */ time ){ + // summary: + // Goes to the time passed in the argument + this.flashMedia.seek(time); + }, + + + // ===================== // + // Player Getter/Setters // + // ===================== // + + volume: function(/* Float */ vol){ + // summary: + // Sets the volume of the video to the time in the + // argument - between 0 - 1. + // + if(vol){ + if(!this.flashMedia) { + this.initialVolume = vol; + } + this.flashMedia.setVolume(this._normalizeVolume(vol)); + } + if(!this.flashMedia || !this.flashMedia.doGetVolume) { + return this.initialVolume; + } + return this.flashMedia.getVolume(); // Float + }, + + // ============= // + // Player Events // + // ============= // + + /*===== + onLoad: function(mov){ + // summary: + // Fired when the SWF player has loaded + // NOT when the video has loaded + }, + + onDownloaded: function(percent){ + // summary: + // Fires the amount of that the media has been + // downloaded. Number, 0-100 + }, + + onClick: function(evt){ + // summary: + // Fires when the player is clicked + // Could be used to toggle play/pause, or + // do an external activity, like opening a new + // window. + }, + + onSwfSized: function(data){ + // summary: + // Fired on SWF resize, or when its + // toggled between fullscreen. + }, + + onMetaData: function(data, evt){ + // summary: + // The video properties. Width, height, duration, etc. + // NOTE: if data is empty, this is an older FLV with no meta data. + // Duration cannot be determined. In original FLVs, duration + // could only be obtained with Flash Media Server. + // NOTE: Older FLVs can still return width and height + // and will do so on a second event call + }, + + onPosition: function( time){ + // summary: + // The position of the playhead in seconds + }, + + onStart: function( data){ + // summary: + // Fires when video starts + // Good for setting the play button to pause + // during an autoPlay for example + }, + + onPlay: function(data){ + // summary: + // Fires when video starts and resumes + }, + + onPause: function(data){ + // summary: + // Fires when the pause button is clicked + }, + + onEnd: function(data){ + // summary: + // Fires when video ends + // Could be used to change pause button to play + // or show a post video graphic, like YouTube + }, + + onStop: function(){ + // summary: + // Fire when the Stop button is clicked + // TODO: This is not hooked up yet and shouldn't + // fire. + }, + + onBuffer: function(isBuffering){ + // summary: + // Fires a boolean to tell if media + // is paused for buffering or if buffering + // has finished + this.isBuffering = isBuffering; + }, + + onError: function(data, url){ + // summary: + // Fired when the player encounters an error + // example: + // | console.warn("ERROR-"+data.type.toUpperCase()+":", + // | data.info.code, " - URL:", url); + }, + + onStatus: function(data){ + // summary: + // Simple status + }, + + onPlayerStatus: function(data){ + // summary: + // The status of the video from the SWF + // playing, stopped, bufering, etc. + }, + + onResize: function(){ + // summary: + // Fired on page resize + }, + =====*/ + + // =============== // + // Private Methods // + // =============== // + + _checkBuffer: function(/* Float */time, /* Float */bufferLength){ + // summary: + // Checks that there is a proper buffer time between + // current playhead time and the amount of data loaded. + // Works only on FLVs with a duration (not older). Pauses + // the video while continuing download. + // + if(this.percentDownloaded == 100){ + if(this.isBuffering){ + this.onBuffer(false); + this.flashMedia.doPlay(); + } + return; + } + + if(!this.isBuffering && bufferLength<.1){ + this.onBuffer(true); + this.flashMedia.pause(); + return; + } + + var timePercentLoad = this.percentDownloaded*.01*this.duration; + + // check if start buffer needed + if(!this.isBuffering && time+this.minBufferTime*.001>timePercentLoad){ + this.onBuffer(true); + this.flashMedia.pause(); + + // check if end buffer needed + }else if(this.isBuffering && time+this.bufferTime*.001<=timePercentLoad){ + this.onBuffer(false); + this.flashMedia.doPlay(); + } + + }, + _update: function(){ + // summary: + // Helper function to fire onPosition, check download progress, + // and check buffer. + var time = Math.min(this.getTime() || 0, this.duration); + + var dObj = this.flashMedia.getLoaded(); + this.percentDownloaded = Math.ceil(dObj.bytesLoaded/dObj.bytesTotal*100); + this.onDownloaded(this.percentDownloaded); + this.onPosition(time); + if(this.duration){ + this._checkBuffer(time, dObj.buffer); + } + // FIXME: need to remove this on destroy + this._updateHandle = setTimeout(dojo.hitch(this, "_update"), this.updateTime); + }, + + destroy: function(){ + clearTimeout(this._updateHandle); + dojo.disconnect(this._positionHandle); + this.inherited(arguments); + } + +}); + +return dojox.av.FLVideo; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/README b/js/dojo-release-1.7.2-src/dojox/av/README new file mode 100644 index 0000000..b249a2e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/README @@ -0,0 +1,65 @@ +------------------------------------------------------------------------------- +DojoX Audio/Video +------------------------------------------------------------------------------- +Version 0.1 +Release date: 01/15/2008 +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Tom Trenka (ttrenka AT gmail.com) + Mike Wilcox (AnM8tR AT Yahoo.com) +------------------------------------------------------------------------------- +Project description + +DojoX A/V aims to bring audio and video capabilities to the Open Web, first +by wrapping common media types (Flash and Quicktime) and then by providing +easy to use objects to accomplish basic A/V tasks. As of version 0.1, only +the base is included (Flash and Quicktime embedding mechanisms); in the near +future, usable objects will appear, both in raw programmatic form and also with +Dijit-compatible wrappers. +------------------------------------------------------------------------------- +Dependencies: + +DojoX A/V depends on dojox.embed, and uses Flash movies created in the deft +project using Flex OSS 3. You do not need any of the deft code; compiled +movies are included with dojox.av. If you want to modify the actual movies, +you can look in the deft project (under the package deft.av). +------------------------------------------------------------------------------- +Documentation + +TBD. +------------------------------------------------------------------------------- +Included media: + +Video: +test/video/Grog.flv and test/video/OldMan.flv are both created by Mike Wilcox +and may be freely used and distributed in any way. I only ask for credit if +widely shown. + +Audio: +test/audio/Ola.mp3, test/audio/Hio.mp3, test/audio/FuzzWah.mp3 are from a +sounds effects CD and are not to be redistributed. They will most likely +be swapped out when a better open source option is avaialable. + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: + +http://svn.dojotoolkit.org/src/dojox/trunk/embed/* +http://svn.dojotoolkit.org/src/dojox/trunk/av/* + +Install into the following directory structure: +/dojox/av/ + +...which should be at the same level as your Dojo checkout. + +------------------------------------------------------------------------------- +Change history + +2008-01-15 Initial checkin, with basic movie embedding code. +2008-06-04 Removed the base code, after moving it into dojox.embed and modifying it. +2008-08-14 Implemented FLVideo for Flash Video +2009-02-08 Implemented FLAudio for Flash Audio diff --git a/js/dojo-release-1.7.2-src/dojox/av/_Media.js b/js/dojo-release-1.7.2-src/dojox/av/_Media.js new file mode 100644 index 0000000..696c1df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/_Media.js @@ -0,0 +1,352 @@ +define(['dojo'],function(dojo){ + +dojo.experimental("dojox.av.FLVideo"); + + return dojo.declare("dojox.av._Media", null, { + // summary: + // Used as a mixin for dojox and AIR media + // description: + // Calculates the current status of the playing media and fires + // the appropriate events. + // + mediaUrl:"", + // + // initialVolume: Float? + // The initial volume setting of the player. Acccepts between 0 and 1. + initialVolume:1, + // + // autoPlay:Boolean? + // Whether the video automatically plays on load or not. + autoPlay: false, + // + // bufferTime: Number? + // Time in milliseconds that the video should be loaded before it will + // play. May pause and resume to build up buffer. Prevents stuttering. + // Note: + // Older FLVs, without a duration, cannot be buffered. + bufferTime: 2000, + // + // minBufferTime: Number + // Time in milliseconds bwteen the playhead time and loaded time that + // will trigger the buffer. When buffer is triggered, video will pause + // until the bufferTime amount is buffered. + // Note: Should be a small number, greater than zero. + minBufferTime:300, + // + // updateTime: Number + // How often, in milliseconds to get an update of the video position. + updateTime: 100, + // + // id: String? + // The id of this widget and the id of the SWF movie. + id:"", + // + // isDebug: Boolean? + // Setting to true tells the SWF to output log messages to Firebug. + isDebug: false, + // + // percentDownloaded: read-only-Number + // The percentage the media has downloaded; from 0-100 + percentDownloaded:0, + // + // _flashObject: read-only-Object + // The dojox.embed object + _flashObject:null, + // + // flashMedia: read-only-SWF + // The SWF object. Methods are passed to this. + flashMedia:null, + // + // allowScriptAccess: String + // Whether the SWF can access the container JS + allowScriptAccess:"always", + // + // allowNetworking: String + // Whether SWF is restricted to a domain + allowNetworking: "all", + // + // wmode: String + // The render type of the SWF + wmode: "transparent", + // + // allowFullScreen: Boolean + // Whether to allow the SWF to go to fullscreen + allowFullScreen:true, + + _initStatus: function(){ + // summary: + // Connect mediaStatus to the media. + // + this.status = "ready"; + this._positionHandle = dojo.connect(this, "onPosition", this, "_figureStatus"); + + }, + + // ============== // + // Player Getters // + // ============== // + + getTime: function(){ + // summary: + // Returns the current time of the video + // Note: + // Consider the onPosition event, which returns + // the time at a set interval. Too many trips to + // the SWF could impact performance. + return this.flashMedia.getTime(); // Float + }, + + // ============= // + // Player Events // + // ============= // + + onLoad: function(/* SWF */ mov){ + // summary: + // Fired when the SWF player has loaded + // NOT when the video has loaded + // + }, + + onDownloaded: function(/* Number */percent){ + // summary: + // Fires the amount of that the media has been + // downloaded. Number, 0-100 + }, + + onClick: function(/* Object */ evt){ + // summary: + // TODO: Return x/y of click + // Fires when the player is clicked + // Could be used to toggle play/pause, or + // do an external activity, like opening a new + // window. + }, + + onSwfSized: function(/* Object */ data){ + // summary: + // Fired on SWF resize, or when its + // toggled between fullscreen. + }, + + onMetaData: function(/* Object */ data, /* Object */ evt){ + // summary: + // The video properties. Width, height, duration, etc. + // NOTE: if data is empty, this is an older FLV with no meta data. + // Duration cannot be determined. In original FLVs, duration + // could only be obtained with Flash Media Server. + // NOTE: Older FLVs can still return width and height + // and will do so on a second event call + console.warn("onMeta", data) + this.duration = data.duration; + }, + + onPosition: function(/* Float */ time){ + // summary: + // The position of the playhead in seconds + }, + + onStart: function(/* Object */ data){ + // summary: + // Fires when video starts + // Good for setting the play button to pause + // during an autoPlay for example + }, + + onPlay: function(/* Object */ data){ + // summary: + // Fires when video starts and resumes + }, + + onPause: function(/* Object */ data){ + // summary: + // Fires when the pause button is clicked + }, + + onEnd: function(/* Object */ data){ + // summary: + // Fires when video ends + // Could be used to change pause button to play + // or show a post video graphic, like YouTube + }, + + onStop: function(){ + // summary: + // Fire when the Stop button is clicked + // TODO: This is not hooked up yet and shouldn't + // fire. + }, + + onBuffer: function(/* Boolean */ isBuffering){ + // summary: + // Fires a boolean to tell if media + // is paused for buffering or if buffering + // has finished + this.isBuffering = isBuffering; + }, + + onError: function(/* Object */ data, /* String */ url){ + // summary: + // Fired when the player encounters an error + // example: + // | console.warn("ERROR-"+data.type.toUpperCase()+":", + // | data.info.code, " - URL:", url); + console.warn("ERROR-"+data.type.toUpperCase()+":", data.info.code, " - URL:", url); + }, + + onStatus: function(/* Object */data){ + // summary: + // Simple status + }, + + onPlayerStatus: function(/* Object */data){ + // summary: + // The status of the video from the SWF + // playing, stopped, bufering, etc. + }, + + onResize: function(){ + + }, + + _figureStatus: function(){ + // summary: + // Calculate media status, based on playhead movement, and + // onStop and onStart events + // TODO: + // Figure in real status from the media for more accurate results. + // + var pos = this.getTime(); + //console.log(pos, this.duration, (pos>this.duration-.5), (this.duration && pos>this.duration-.5)) + + if(this.status=="stopping"){ + // stop was fired, need to fake pos==0 + this.status = "stopped"; + this.onStop(this._eventFactory()); + + }else if(this.status=="ending" && pos==this._prevPos){ + this.status = "ended"; + this.onEnd(this._eventFactory()); + + }else if(this.duration && pos>this.duration-.5){ + this.status="ending" + + }else if(pos===0 ){//|| this.status == "stopped" + if(this.status == "ready"){ + //never played + }else{ + //stopped + this.status = "stopped"; + if(this._prevStatus != "stopped"){ + this.onStop(this._eventFactory()); + } + } + + }else{ + // pos > 0 + if(this.status == "ready"){ + //started + this.status = "started"; + this.onStart(this._eventFactory()); + this.onPlay(this._eventFactory()); + + }else if(this.isBuffering){ + this.status = "buffering"; + + }else if(this.status == "started" || (this.status == "playing" && pos != this._prevPos)){ + this.status = "playing"; + //this.onPosition(this._eventFactory()); + + }else if(!this.isStopped && this.status == "playing" && pos == this._prevPos){ + this.status = "paused"; + console.warn("pause", pos, this._prevPos) + if(this.status != this._prevStatus){ + this.onPause(this._eventFactory()); + } + + }else if((this.status == "paused" ||this.status == "stopped") && pos != this._prevPos){ + this.status = "started"; + this.onPlay(this._eventFactory()); + } + } + + this._prevPos = pos; + this._prevStatus = this.status; + this.onStatus(this.status); + + + }, + + _eventFactory: function(){ + // summary: + // Creates a generic event object. + // + var evt = { + //position:this._channel.position, + //seconds:this.toSeconds(this._channel.position*.001), + //percentPlayed:this._getPercent(), + status:this.status + } + return evt; // Object + }, + + + + _sub: function(topic, method){ + // summary: + // helper for subscribing to topics + dojo.subscribe(this.id+"/"+topic, this, method); + }, + + _normalizeVolume: function(vol){ + // summary: + // Ensures volume is less than one + // + if(vol>1){ + while(vol>1){ + vol*=.1 + } + } + return vol; + }, + + _normalizeUrl: function(_url){ + // summary: + // Checks that path is relative to HTML file or + // convertes it to an absolute path. + // + + console.log(" url:", _url); + + if(_url && (_url.toLowerCase().indexOf("http")<0 || _url.indexOf("/") == 0)){ + // + // Appears to be a relative path. Attempt to convert it to absolute, + // so it will better target the SWF. + var loc = window.location.href.split("/"); + loc.pop(); + + loc = loc.join("/")+"/"; + console.log(" loc:", loc); + _url = loc+_url; + } + return _url; + }, + + destroy: function(){ + // summary: + // destroys flash + if(!this.flashMedia){ + this._cons.push(dojo.connect(this, "onLoad", this, "destroy")); + return; + } + dojo.forEach(this._subs, function(s){ + dojo.unsubscribe(s); + }); + dojo.forEach(this._cons, function(c){ + dojo.disconnect(c); + }); + this._flashObject.destroy(); + //dojo._destroyElement(this.flashDiv); + + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/resources/audio.swf b/js/dojo-release-1.7.2-src/dojox/av/resources/audio.swf new file mode 100644 index 0000000..7162c35 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/resources/audio.swf differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/resources/version.mov b/js/dojo-release-1.7.2-src/dojox/av/resources/version.mov new file mode 100644 index 0000000..4f2cb73 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/resources/version.mov differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/resources/video.swf b/js/dojo-release-1.7.2-src/dojox/av/resources/video.swf new file mode 100644 index 0000000..5122311 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/resources/video.swf differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/audio/FuzzWah.mp3 b/js/dojo-release-1.7.2-src/dojox/av/tests/audio/FuzzWah.mp3 new file mode 100755 index 0000000..6cee929 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/tests/audio/FuzzWah.mp3 differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/audio/Hio.mp3 b/js/dojo-release-1.7.2-src/dojox/av/tests/audio/Hio.mp3 new file mode 100755 index 0000000..937f5e4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/tests/audio/Hio.mp3 differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/audio/Ola.mp3 b/js/dojo-release-1.7.2-src/dojox/av/tests/audio/Ola.mp3 new file mode 100755 index 0000000..1d35c22 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/tests/audio/Ola.mp3 differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/testVideoPlayer.html b/js/dojo-release-1.7.2-src/dojox/av/tests/testVideoPlayer.html new file mode 100644 index 0000000..98a79de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/tests/testVideoPlayer.html @@ -0,0 +1,48 @@ + + + + +dojox.av.widget.Player + + + + + + + + + +

                          dojox.av.widget.Player

                          +
                          + +
                          + +
                          +
                          +
                          +
                          + +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/test_FLAudio.html b/js/dojo-release-1.7.2-src/dojox/av/tests/test_FLAudio.html new file mode 100644 index 0000000..01705e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/tests/test_FLAudio.html @@ -0,0 +1,104 @@ + + + + dojox.av.FLAudio + + + + + + + + +
                          +

                          dojox.av.FLAudio

                          +
                          + + + + + + +
                          + + + + + + +
                          + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/test_FLVideo.html b/js/dojo-release-1.7.2-src/dojox/av/tests/test_FLVideo.html new file mode 100644 index 0000000..0dcb2ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/tests/test_FLVideo.html @@ -0,0 +1,217 @@ + + + + dojox.av.FLVideo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                          dojox.av.FLVideo

                          +

                          DojoX Video uses a Deft component to provide the ability to play FLV files. It does not provide any UI controls; + it is comprised mostly of methods and events so that a UI can be built that controls the player. The following test + is kept purposely simple and void of any Dijit widgets. Most of the code in the test is to handle layout and the + sliders. In fact, adding a video is as easy as:
                          + new dojox.av.FLVideo({mediaUrl:"myVideoPath"}, "myAttachNode");.

                          +
                          +
                          +
                          +
                          +
                          + + + + + +
                          +
                          + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/video/Grog.flv b/js/dojo-release-1.7.2-src/dojox/av/tests/video/Grog.flv new file mode 100755 index 0000000..aa98be4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/tests/video/Grog.flv differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/tests/video/OldMan.flv b/js/dojo-release-1.7.2-src/dojox/av/tests/video/OldMan.flv new file mode 100755 index 0000000..e8e3de5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/tests/video/OldMan.flv differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/PlayButton.js b/js/dojo-release-1.7.2-src/dojox/av/widget/PlayButton.js new file mode 100644 index 0000000..c451c24 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/PlayButton.js @@ -0,0 +1,74 @@ +define(['dojo', 'dijit', 'dijit/_Widget', 'dijit/_TemplatedMixin'],function(dojo, dijit){ + +dojo.declare("dojox.av.widget.PlayButton", [dijit._Widget, dijit._TemplatedMixin], { + // summary: + // A Play/Pause button widget to use with dojox.av.widget.Player + // + templateString: dojo.cache("dojox.av.widget","resources/PlayButton.html"), + // + postCreate: function(){ + // summary: + // Intialize button. + this.showPlay(); + }, + + setMedia: function(/* Object */med){ + // summary: + // A common method to set the media in all Player widgets. + // May do connections and initializations. + // + this.media = med; + dojo.connect(this.media, "onEnd", this, "showPlay"); + dojo.connect(this.media, "onStart", this, "showPause"); + }, + + onClick: function(){ + // summary: + // Fired on play or pause click. + // + if(this._mode=="play"){ + this.onPlay(); + }else{ + this.onPause(); + } + }, + + onPlay: function(){ + // summary: + // Fired on play click. + // + if(this.media){ + this.media.play(); + } + this.showPause(); + }, + onPause: function(){ + // summary: + // Fired on pause click. + // + if(this.media){ + this.media.pause(); + } + this.showPlay(); + }, + showPlay: function(){ + // summary: + // Toggles the pause button invisible and the play + // button visible.. + // + this._mode = "play"; + dojo.removeClass(this.domNode, "Pause"); + dojo.addClass(this.domNode, "Play"); + }, + showPause: function(){ + // summary: + // Toggles the play button invisible and the pause + // button visible. + // + this._mode = "pause"; + dojo.addClass(this.domNode, "Pause"); + dojo.removeClass(this.domNode, "Play"); + } +}); +return dojox.av.widget.PlayButton; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/Player.js b/js/dojo-release-1.7.2-src/dojox/av/widget/Player.js new file mode 100644 index 0000000..47f8657 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/Player.js @@ -0,0 +1,127 @@ +define(['dojo', 'dijit', 'dijit/_Widget', 'dijit/_TemplatedMixin'],function(dojo, dijit){ + +dojo.experimental("dojox.av.widget.Player"); +dojo.declare("dojox.av.widget.Player", [dijit._Widget, dijit._TemplatedMixin], { + // summary: + // A Media Player UI widget for all types of dojox.av and AIR media. + // + // description: + // Currently for markup only. All controls should reside as child + // nodes within the Player node. 'controlType' is used to determine + // the placement of the control. If no type or an unrecoginized type + // is used, it will be left-aligned in the same row as the volume. + // Note: + // Be sure to use 'controlType' as a node attribute. It is not a + // property of the widget. + // + // example: + // |
                          + // |
                          + // |
                          + // |
                          + // |
                          + // |
                          + // |
                          + // + // playerWidth: /* Number or String */ + // Sets the width of the player (not the video size) + // Number will be converted to pixels + // String will be used literally. EX: "320px" or "100%" + playerWidth: "480px", + // + // TODO: + //playerHeight + //videoWidth: 320, + //videoHeight: 240, + + widgetsInTemplate:true, + templateString: dojo.cache("dojox.av.widget","resources/Player.html"), + + _fillContent: function(){ + // summary + // Finding and collecting child nodes + if(!this.items && this.srcNodeRef){ + this.items = []; + var nodes = dojo.query("*", this.srcNodeRef); + dojo.forEach(nodes, function(n){ + this.items.push(n); + }, this); + } + }, + + postCreate: function(){ + // summary: + // Do player styling, and place child widgets in the proper location. + // + dojo.style(this.domNode, "width", this.playerWidth+(dojo.isString(this.playerWidth)?"":"px")); + + if(dojo.isString(this.playerWidth) && this.playerWidth.indexOf("%")){ + dojo.connect(window, "resize", this, "onResize"); + } + this.children = []; + var domNode; + dojo.forEach(this.items, function(n, i){ + n.id = dijit.getUniqueId("player_control"); + switch(dojo.attr(n, "controlType")){ + case "play": + this.playContainer.appendChild(n); break; + case "volume" : + this.controlsBottom.appendChild(n); break; + case "status" : + this.statusContainer.appendChild(n); break; + case "progress": + case "slider": + this.progressContainer.appendChild(n); break; + case "video": + this.mediaNode = n; + this.playerScreen.appendChild(n); break; + default: + + } + this.items[i] = n.id; + }, this); + + }, + startup: function(){ + // summary: + // Fired when all children are ready. Set the media in + // all children with setMedia() + // + this.media = dijit.byId(this.mediaNode.id); + if(!dojo.isAIR){ + dojo.style(this.media.domNode, "width", "100%"); + dojo.style(this.media.domNode, "height", "100%"); + } + dojo.forEach(this.items, function(id){ + if(id !== this.mediaNode.id){ + var child = dijit.byId(id); + this.children.push(child); + if(child){ + child.setMedia(this.media, this); + } + } + }, this); + }, + + onResize: function(evt){ + // summary: + // If a player size is a percentage, this will fire an onResize + // event for all children, passing the size of the player. + // + var dim = dojo.marginBox(this.domNode); + if(this.media && this.media.onResize !== null){ + this.media.onResize(dim); + } + dojo.forEach(this.children, function(child){ + if(child.onResize){ + child.onResize(dim); + } + }); + } + +}); + +return dojox.av.widget.Player; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/ProgressSlider.js b/js/dojo-release-1.7.2-src/dojox/av/widget/ProgressSlider.js new file mode 100644 index 0000000..a6881e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/ProgressSlider.js @@ -0,0 +1,133 @@ +define(['dojo', 'dijit', 'dijit/_Widget', 'dijit/_TemplatedMixin'],function(dojo, dijit){ + +dojo.declare("dojox.av.widget.ProgressSlider", [dijit._Widget, dijit._TemplatedMixin], { + // summary: + // A custom slider widget to use with dojox.av.widget.Player. + // description: + // Displays the current playhead position of the media. Has two + // progress bars: one for playhead position, and one for download + // progress. + // + templateString: dojo.cache("dojox.av.widget","resources/ProgressSlider.html"), + postCreate: function(){ + // summary: + // Initialize slider. + // + this.seeking = false; + this.handleWidth = dojo.marginBox(this.handle).w; + var dim = dojo.coords(this.domNode); + this.finalWidth = dim.w + this.width = dim.w-this.handleWidth; + this.x = dim.x; + + dojo.setSelectable(this.domNode, false); + dojo.setSelectable(this.handle, false); + }, + setMedia: function(/* Object */med, playerWidget){ + // summary: + // A common method to set the media in all Player widgets. + // May do connections and initializations. + // + this.playerWidget = playerWidget; + this.media = med; + dojo.connect(this.media, "onMetaData", this, function(data){ + if(data && data.duration){ + this.duration = data.duration; + } + }); + dojo.connect(this.media, "onEnd", this, function(){ + dojo.disconnect(this.posCon); + this.setHandle(this.duration); + }); + dojo.connect(this.media, "onStart", this, function(){ + this.posCon = dojo.connect(this.media, "onPosition", this, "setHandle"); + }); + + dojo.connect(this.media, "onDownloaded", this, function(percent){ + this.setLoadedPosition(percent*.01); + this.width = this.finalWidth * .01 * percent; + }); + + }, + onDrag: function(/* HTMLEvent */ evt){ + // summary: + // Fired when the mouse is moved. Sets the slider. + // + var x = evt.clientX - this.x; + if(x<0) x = 0; + if(x>this.width-this.handleWidth) x=this.width-this.handleWidth; + + var p = x/this.finalWidth; + this.media.seek( this.duration * p ); + dojo.style(this.handle, "marginLeft", x+"px"); + dojo.style(this.progressPosition, "width", x+"px"); + }, + startDrag: function(){ + // summary: + // Fired onmousedown of the slider handle. + // + dojo.setSelectable(this.playerWidget.domNode, false); + this.seeking = true; + this.cmove = dojo.connect(dojo.doc, "mousemove", this, "onDrag"); + this.cup = dojo.connect(dojo.doc, "mouseup", this, "endDrag"); + }, + endDrag: function(){ + // summary: + // Fired on document.onmouseup. + // + dojo.setSelectable(this.playerWidget.domNode, true); + this.seeking = false; + if(this.cmove) dojo.disconnect(this.cmove); + if(this.cup) dojo.disconnect(this.cup); + this.handleOut(); + }, + + setHandle: function(time){ + // summary: + // Sets the slider handle (when it is not being dragged) + // + if(!this.seeking){ + var w = this.width-this.handleWidth; + var p = time/this.duration; + var x = p*w; + + dojo.style(this.handle, "marginLeft", x+"px"); + dojo.style(this.progressPosition, "width", x+"px"); + } + }, + + setLoadedPosition: function(decimal){ + // summary: + // Sets the download progress bar to the percentage of how much + // the media has been downloaded. + dojo.style(this.progressLoaded, "width", (this.finalWidth*decimal)+"px"); + }, + + handleOver: function(){ + // summary: + // Highlights the slider handle on mouseover, and + // stays highlighted during drag. + // + dojo.addClass(this.handle, "over"); + }, + handleOut: function(){ + // summary: + // Unhighlights handle onmouseover, or on endDrag. + // + if(!this.seeking){ + dojo.removeClass(this.handle, "over"); + } + }, + onResize: function(playerDimensions){ + // summary: + // Handles player resize. Need to recalculate the width of + // position an download bars. + var dim = dojo.coords(this.domNode); + this.finalWidth = dim.w; + + } + +}); + +return dojox.av.widget.ProgressSlider; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/Status.js b/js/dojo-release-1.7.2-src/dojox/av/widget/Status.js new file mode 100644 index 0000000..f167ea4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/Status.js @@ -0,0 +1,114 @@ +define(['dojo', 'dijit', 'dijit/_Widget', 'dijit/_TemplatedMixin'],function(dojo, dijit){ + +dojo.declare("dojox.av.widget.Status", [dijit._Widget, dijit._TemplatedMixin], { + // summary: + // A Status widget to use with dojox.av.widget.Player + // + // description: + // Displays the name of the media file, and it's current status + // (playing, paused, buffering, etc.) in the middle. Displays + // the playhead time on the left and the duration on the right. + // + templateString: dojo.cache("dojox.av.widget","resources/Status.html"), + + setMedia: function(/* Object */med){ + // summary: + // A common method to set the media in all Player widgets. + // May do connections and initializations. + // + this.media = med; + dojo.connect(this.media, "onMetaData", this, function(data){ + this.duration = data.duration; + this.durNode.innerHTML = this.toSeconds(this.duration); + }); + dojo.connect(this.media, "onPosition", this, function(time){ + this.timeNode.innerHTML = this.toSeconds(time); + }); + + var cons = ["onMetaData", "onPosition", "onStart", "onBuffer", "onPlay", "onPaused", "onStop", "onEnd", "onError", "onLoad"]; + dojo.forEach(cons, function(c){ + dojo.connect(this.media, c, this, c); + }, this); + + }, + onMetaData: function(data){ + this.duration = data.duration; + this.durNode.innerHTML = this.toSeconds(this.duration); + if(this.media.title){ + this.title = this.media.title; + }else{ + var a = this.media.mediaUrl.split("/"); + var b = a[a.length-1].split(".")[0]; + this.title = b; + } + }, + onBuffer: function(isBuffering){ + this.isBuffering = isBuffering; + console.warn("status onBuffer", this.isBuffering); + if(this.isBuffering){ + this.setStatus("buffering..."); + }else{ + this.setStatus("Playing"); + } + }, + onPosition:function(time){ + //console.log("onPosition:", time) + // this.timeNode.innerHTML = this.toSeconds(time); + }, + onStart: function(){ + this.setStatus("Starting"); + }, + onPlay: function(){ + this.setStatus("Playing"); + }, + onPaused: function(){ + this.setStatus("Paused"); + }, + onStop: function(){ + this.setStatus("Stopped"); + }, + onEnd: function(){ + this.setStatus("Stopped"); + }, + onError: function(evt){ + console.log("status error:", evt) + var msg = evt.info.code; + if(msg == "NetStream.Play.StreamNotFound"){ + msg = "Stream Not Found" + } + this.setStatus("ERROR: "+ msg, true); + }, + onLoad: function(){ + this.setStatus("Loading..."); + }, + + setStatus: function(str, isError){ + if(isError){ + dojo.addClass(this.titleNode, "statusError"); + }else{ + dojo.removeClass(this.titleNode, "statusError"); + if(this.isBuffering){ + str = "buffering..."; + } + } + //console.log(this.titleNode, "title:",this.title, "str:",str) + this.titleNode.innerHTML = ''+this.title+' '+str+''; + }, + + toSeconds: function(time){ + var ts = time.toString() + + if(ts.indexOf(".")<0){ + ts += ".00" + }else if(ts.length - ts.indexOf(".")==2){ + ts+="0" + }else if(ts.length - ts.indexOf(".")>2){ + ts = ts.substring(0, ts.indexOf(".")+3) + } + return ts; + } + +}); + +return dojox.av.widget.Status; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/VolumeButton.js b/js/dojo-release-1.7.2-src/dojox/av/widget/VolumeButton.js new file mode 100644 index 0000000..9aae459 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/VolumeButton.js @@ -0,0 +1,186 @@ +define(['dojo', 'dijit', 'dijit/_Widget', 'dijit/_TemplatedMixin', 'dijit/form/Button'],function(dojo, dijit){ + +dojo.declare("dojox.av.widget.VolumeButton", [dijit._Widget, dijit._TemplatedMixin], { + // summary: + // A volume widget to use with dojox.av.widget.Player + // + // description: + // Controls and displays the volume of the media. This widget + // opens a slider on click that is used to adjust the volume. + // The icon changes according to the volume level. + // + templateString: dojo.cache("dojox.av.widget","resources/VolumeButton.html"), + // + postCreate: function(){ + // summary: + // Initialize the widget. + // + this.handleWidth = dojo.marginBox(this.handle).w; + this.width = dojo.marginBox(this.volumeSlider).w; + this.slotWidth = 100; + dojo.setSelectable(this.handle, false); + this.volumeSlider = this.domNode.removeChild(this.volumeSlider); + }, + setMedia: function(/* Object */med){ + // summary: + // A common method to set the media in all Player widgets. + // May do connections and initializations. + // + this.media = med; + this.updateIcon(); + }, + updateIcon: function(/*Float*/ vol){ + // summary: + // Changes the icon on the button according to volume level. + // + vol = (vol===undefined) ? this.media.volume() : vol; + if(vol===0){ + dojo.attr(this.domNode, "class", "Volume mute"); + }else if(vol<.334){ + dojo.attr(this.domNode, "class", "Volume low"); + }else if(vol<.667){ + dojo.attr(this.domNode, "class", "Volume med"); + }else{ + dojo.attr(this.domNode, "class", "Volume high"); + } + }, + + onShowVolume: function(/*DOMEvent*/evt){ + // summary: + // Shows the volume slider. + // + if(this.showing==undefined){ + dojo.body().appendChild(this.volumeSlider); + this.showing = false; + } + if(!this.showing){ + + var TOPMARG = 2; + var LEFTMARG = 7; + var vol = this.media.volume(); + var dim = this._getVolumeDim(); + var hand = this._getHandleDim(); + this.x = dim.x - this.width; + + + + dojo.style(this.volumeSlider, "display", ""); + dojo.style(this.volumeSlider, "top", dim.y+"px"); + dojo.style(this.volumeSlider, "left", (this.x)+"px"); + + var x = (this.slotWidth * vol); + + dojo.style(this.handle, "top", (TOPMARG+(hand.w/2))+"px"); + dojo.style(this.handle, "left", (x+LEFTMARG+(hand.h/2))+"px"); + + this.showing = true; + //this.startDrag(); + + this.clickOff = dojo.connect(dojo.doc, "onmousedown", this, "onDocClick"); + }else{ + this.onHideVolume(); + } + }, + onDocClick: function(/*DOMEvent*/evt){ + // summary: + // Fired on document.onmousedown. Checks if clicked inside + // of this widget or not. + // + if(!dojo.isDescendant(evt.target, this.domNode) && !dojo.isDescendant(evt.target, this.volumeSlider)){ + this.onHideVolume(); + } + }, + + onHideVolume: function(){ + // summary: + // Hides volume slider. + // + this.endDrag(); + dojo.style(this.volumeSlider, "display", "none"); + this.showing = false; + }, + + onDrag: function(/*DOMEvent*/evt){ + // summary: + // Fired on mousemove. Updates volume and position of + // slider handle. + var beg = this.handleWidth/2; + var end = beg + this.slotWidth + var x = evt.clientX - this.x; + if(xend) x=end; + dojo.style(this.handle, "left", (x)+"px"); + + var p = (x-beg)/(end-beg); + this.media.volume(p); + this.updateIcon(p); + }, + startDrag: function(){ + // summary: + // Fired on mousedown of the slider handle. + // + this.isDragging = true; + this.cmove = dojo.connect(dojo.doc, "mousemove", this, "onDrag"); + this.cup = dojo.connect(dojo.doc, "mouseup", this, "endDrag"); + }, + endDrag: function(){ + // summary: + // Fired on mouseup of the slider handle. + // + this.isDragging = false; + if(this.cmove) dojo.disconnect(this.cmove); + if(this.cup) dojo.disconnect(this.cup); + this.handleOut(); + }, + + handleOver: function(){ + // summary: + // Highlights the slider handle on mouseover, and + // stays highlighted during drag. + // + dojo.addClass(this.handle, "over"); + }, + handleOut: function(){ + // summary: + // Unhighlights handle onmouseover, or on endDrag. + // + if(!this.isDragging){ + dojo.removeClass(this.handle, "over"); + } + }, + + _getVolumeDim: function(){ + // summary: + // Gets dimensions of slider background node. + // Only uses dojo.coords once, unless the page + // or player is resized. + // + if(this._domCoords){ + return this._domCoords; + } + this._domCoords = dojo.coords(this.domNode); + return this._domCoords; + }, + _getHandleDim: function(){ + // summary: + // Gets dimensions of slider handle. + // Only uses dojo.marginBox once. + if(this._handleCoords){ + return this._handleCoords; + } + this._handleCoords = dojo.marginBox(this.handle); + return this._handleCoords; + }, + + onResize: function(/*Object*/playerDimensions){ + // summary: + // Fired on player resize. Zeros dimensions + // so that it can be calculated again. + // + this.onHideVolume(); + this._domCoords = null; + } +}); + +return dojox.av.widget.VolumeButton; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/PlayButton.html b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/PlayButton.html new file mode 100644 index 0000000..cd7c127 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/PlayButton.html @@ -0,0 +1,3 @@ +
                          +
                          +
                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Player.css b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Player.css new file mode 100644 index 0000000..3029e68 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Player.css @@ -0,0 +1,203 @@ +.playerContainer{ + width:480px; + background:#76C8C4; + text-align:center; +} +.PlayerScreen{ + background:#00FFFF; + width:320px; + height:240px; + margin-left:auto; + margin-right:auto; +} +.Controls{ + height:85px; + background:#333333; + text-align:left; + width:100%; +} +.ControlsRight{ + vertical-align:top; +} +.ControlsBottom{ + vertical-align:bottom; +} +.StatusContainer{ + width:100%; + height:100%; +} +.PlayContainer{ + width:60px; + height:60px; +} + + +.Progress{ + height:10px; +} + +.Time, .Duration, .Status{ + height:16px; + margin-top:0px; + color:#F5FFC8; + width:100%; +} + +.Time{ + padding-left:2px; +} + +.Duration{ + padding-right:2px; + text-align:right; +} +.StatusContainer{ + padding:0; + border-collapse:collapse; +} +.Status{ + height:20px; + background:#ff0000; + table-layout:fixed; +} +.Status.statusError .statusTitle, .Status.statusError .statusInfo{ + color:#FF0000; +} +.Status .statusTitle{ + font-weight:bold; + color:#A5B3E9; +} +.Status .statusInfo{ + font-weight:normal; + color:#3770D6; +} + +.Time, .Duration, .Status{ + font-family:Verdana, Arial, Helvetica, sans-serif; + font-size:9px; + background:#000000; +} + +.Time, .Duration{ + width:60px; +} + +.Volume{ + width:30px; + height:30px; + float:right; + margin-right:2px; + margin-top:auto; + background-image:url(images/player_sprite.png); + background-repeat:no-repeat; + background-position:-1px -62px; + cursor:pointer; +} +.Volume:hover{ + background-position:-33px -62px; +} +.PlayPauseToggle{ + width:60px; + height:60px; + background-image:url(images/player_sprite.png); + background-repeat:no-repeat; + background-position:-1px -1px; + cursor:pointer; + vertical-align:middle; + line-height:60px; +} +.PlayPauseToggle:hover{ + background-position:-63px -1px; + cursor:pointer; +} +.icon{ + background-image:url(images/dojoPlayerIcons.png); + background-repeat:no-repeat; + width:22px; + height:22px; +} + +.PlayPauseToggle .icon{ + position:relative; + top:19px; + left:19px; + background-position:-1px -1px; +} +.PlayPauseToggle.Play .icon{ + background-position:-1px -1px; +} +.PlayPauseToggle.Pause .icon{ + background-position:-24px -1px; +} + + + +.Progress{ + +} +.Progress, .ProgressLoaded, .ProgressPosition, .ProgressHandle{ + height:10px; +} +.ProgressLoaded, .ProgressPosition, .ProgressHandle{ + position:absolute; +} +.ProgressLoaded{ +background:url(images/progressLoadedBk.png) repeat-x; +} +.ProgressHandle{ + background-image:url(images/sliderHandleSprite.png); + background-position:0px 0px; + width:15px; + margin-left:0px; + cursor:pointer; +} +.ProgressHandle.over{ + background-position:-15px 0px; +} +.ProgressPosition{ + background:url(images/progressPositionBk.png) repeat-x; + width:0px; +} +.VolumeSlider{ + position:absolute; +} +.VolumeSliderBack{ + width:128px; + height:30px; + background-image:url(images/player_sprite.png); + background-repeat:no-repeat; + background-position:-1px -95px; +} +.VolumeSliderHandle{ + position:absolute; + width:12px; + height:14px; + background-image:url(images/player_sprite.png); + background-repeat:no-repeat; + background-position:-1px -140px; + cursor:pointer; +} +.VolumeSliderHandle.over{ + background-position:-15px -138px; + cursor:pointer; +} +.Volume .icon{ + background-position:-60px -43px; + width:18px; + height:16px; + position:relative; + top:7px; + left:7px; +} +.Volume.mute .icon{ + background-position:-1px -43px; +} +.Volume.low .icon{ + background-position:-20px -43px; +} +.Volume.med .icon{ + background-position:-40px -43px; +} +.Volume.high .icon{ + background-position:-60px -43px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Player.html b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Player.html new file mode 100644 index 0000000..6d464df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Player.html @@ -0,0 +1,20 @@ +
                          +
                          + + + + + + + + +
                          + + + + + + +
                          +
                          +
                          diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/ProgressSlider.html b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/ProgressSlider.html new file mode 100644 index 0000000..2691e02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/ProgressSlider.html @@ -0,0 +1,6 @@ +
                          + +
                          +
                          +
                          +
                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Status.html b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Status.html new file mode 100644 index 0000000..63e411b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/Status.html @@ -0,0 +1,7 @@ + + + + + + +
                          0.00
                          Loading...
                          0.00
                          diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/VolumeButton.html b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/VolumeButton.html new file mode 100644 index 0000000..f5d3eb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/VolumeButton.html @@ -0,0 +1,7 @@ +
                          +
                          +
                          +
                          +
                          +
                          +
                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/dojoPlayerIcons.png b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/dojoPlayerIcons.png new file mode 100644 index 0000000..ea3aaf9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/dojoPlayerIcons.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/playerIcons b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/playerIcons new file mode 100644 index 0000000..0a0ff8c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/playerIcons differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/player_sprite.png b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/player_sprite.png new file mode 100644 index 0000000..01f721c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/player_sprite.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/progressLoadedBk.png b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/progressLoadedBk.png new file mode 100644 index 0000000..b3bca11 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/progressLoadedBk.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/progressPositionBk.png b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/progressPositionBk.png new file mode 100644 index 0000000..9cbae27 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/progressPositionBk.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleNorm.png b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleNorm.png new file mode 100644 index 0000000..fda2e9f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleNorm.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleOver.png b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleOver.png new file mode 100644 index 0000000..b3bec9f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleOver.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleSprite.png b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleSprite.png new file mode 100644 index 0000000..fe639ff Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/av/widget/resources/images/sliderHandleSprite.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/calc/FuncGen.js b/js/dojo-release-1.7.2-src/dojox/calc/FuncGen.js new file mode 100644 index 0000000..376fcfc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/FuncGen.js @@ -0,0 +1,154 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/dom-style", + "dijit/_WidgetBase", + "dijit/_WidgetsInTemplateMixin", + "dijit/_TemplatedMixin", + "dojox/math/_base", + "dijit/registry", + "dojo/text!./templates/FuncGen.html", + "dojox/calc/_Executor", + "dijit/form/ComboBox", // template + "dijit/form/SimpleTextarea", // template + "dijit/form/Button", // template + "dijit/form/TextBox" // template +], function(declare, lang, domStyle, WidgetBase, WidgetsInTemplateMixin, TemplatedMixin, math, registry, template, calc){ + + /*===== + WidgetBase = dijit._WidgetBase; + WidgetsInTemplateMixin = dijit._WidgetsInTemplateMixin; + TemplatedMixin = dijit._TemplatedMixin; + =====*/ + var FuncGen = declare( + "dojox.calc.FuncGen", + [WidgetBase, TemplatedMixin, WidgetsInTemplateMixin], + { + // summary: + // The dialog layout for making functions + // + templateString: template, + + onSelect: function(){ + // summary + // if they select something in the name combobox, then change the body and arguments to correspond to the function they selected + this.reset(); + }, + onClear: function(){ + // summary + // the clear button in the template calls this + // clear the name, arguments, and body if the user says yes + var answer = confirm("Do you want to clear the name, argument, and body text?"); + if(answer){ + this.clear(); + } + }, + saveFunction: function(name, args, body){ + // override me + }, + onSaved: function(){ + // this on save needs to be overriden if you want Executor parsing support + //console.log("Save was pressed"); + }, + clear: function(){ + // summary + // clear the name, arguments, and body + this.textarea.set("value", ""); + this.args.set("value", ""); + this.combo.set("value", ""); + }, + reset: function(){ + // summary + // set the arguments and body to match a function selected if it exists in the function list + if(this.combo.get("value") in this.functions){ + this.textarea.set("value", this.functions[this.combo.get("value")].body); + this.args.set("value", this.functions[this.combo.get("value")].args); + } + }, + onReset: function(){ + // summary + // (Reset button on click event) reset the arguments and body to their previously saved state if the user says yes + //console.log("Reset was pressed"); + if(this.combo.get("value") in this.functions){ + var answer = confirm("Do you want to reset this function?"); + if(answer){ + this.reset(); + this.status.set("value", "The function has been reset to its last save point."); + } + } + }, + deleteThing: function(item){ + // summary + // delete an item in the writestore + if(this.writeStore.isItem(item)){ + // delete it + //console.log("Found item "+item); + this.writeStore.deleteItem(item); + this.writeStore.save(); + }else{ + //console.log("Unable to locate the item"); + } + }, + deleteFunction: function(name){ + // override me + }, + onDelete: function(){ + // summary + // (Delete button on click event) delete a function if the user clicks yes + + //console.log("Delete was pressed"); + + var name; + if((name = this.combo.get("value")) in this.functions){ + var answer = confirm("Do you want to delete this function?"); + if(answer){ + var item = this.combo.item; + + //this.writeStore.fetchItemByIdentity({identity:name, onItem: this.deleteThing, onError:null}); + + this.writeStore.deleteItem(item); + this.writeStore.save(); + + this.deleteFunction(name); + delete this.functions[name]; + this.clear(); + } + }else{ + this.status.set("value", "Function cannot be deleted, it isn't saved."); + } + }, + readyStatus: function(){ + // summary + // set the status in the template to ready + this.status.set("value", "Ready"); + }, + writeStore:null, //the user can save functions to the writestore + readStore:null, // users cannot edit the read store contents, but they can use them + functions:null, // use the names to get to the function + + /*postCreate: function(){ + this.functions = []; // use the names to get to the function + this.writeStore = new dojo.data.ItemFileWriteStore({data: {identifier: 'name', items:[]}}); + + this.combo.set("store", this.writeStore); + },*/ + + startup: function(){ + // summary + // make sure the parent has a close button if it needs to be able to close + // link the write store too + this.combo.set("store", this.writeStore); + + this.inherited(arguments);// this is super class startup + // close is only valid if the parent is a widget with a close function + var parent = registry.getEnclosingWidget(this.domNode.parentNode); + if(parent && typeof parent.close == "function"){ + this.closeButton.set("onClick", lang.hitch(parent, 'close')); + }else{ + domStyle.set(this.closeButton.domNode, { display: "none" }); // hide the button + } + } + }); + + return lang.mixin(calc, { FuncGen: FuncGen }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/calc/GraphPro.js b/js/dojo-release-1.7.2-src/dojox/calc/GraphPro.js new file mode 100644 index 0000000..cee505c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/GraphPro.js @@ -0,0 +1,151 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom-style", + "dojo/dom-construct", + "dojo/dom-geometry", + "dojo/ready", + "dojox/calc/Standard", + "dojox/calc/Grapher", + "dojox/layout/FloatingPane", + "dojo/text!./templates/GraphPro.html", + "dojox/calc/_Executor", // template + "dijit/Menu", // template + "dijit/MenuItem", // template + "dijit/form/ComboButton", // template + "dijit/form/Button", // template + "dijit/form/TextBox" // template +], function(declare, lang, win, domStyle, domConstruct, domGeometry, ready, Standard, calc, FloatingPane, template){ + + /*===== + Standard = dojox.calc.Standard; + =====*/ + return declare( + "dojox.calc.GraphPro", + Standard, + { + // summary: + // The dialog widget for a graphing, scientific calculator + // + templateString: template, + + grapher:null, + funcMaker:null, + aFloatingPane: null, + + executorLoaded: function(){ + // summary + // when executor loads check to see if the writestore is there + this.inherited(arguments); + ready(lang.hitch(this, function(){ + if(this.writeStore == null && "functionMakerButton" in this){ + domStyle.set(this.functionMakerButton.domNode, { visibility: "hidden" }); + } + })); + }, + makeFunctionWindow: function(){ + // summary + // use this function to create a function window (with the button on the layout) + var body = win.body(); + + var pane = domConstruct.create('div'); + body.appendChild(pane); + + this.aFloatingPane = new dojox.layout.FloatingPane({resizable:false, dockable:true, maxable:false, closable:true, duration:300, title:"Function Window", style:"position:absolute;left:10em;top:10em;width:50em;"}, pane); + var that = this; + var d = domConstruct.create("div"); + this.funcMaker = new calc.FuncGen({ + writeStore:that.writeStore, + readStore:that.readStore, + functions:that.functions, + deleteFunction: that.executor.deleteFunction, + onSaved:function(){ + var name, + body; + if((name = this.combo.get("value")) == ""){ + this.status.set("value", "The function needs a name"); + }else if((body = this.textarea.get("value")) == ""){ + // i don't think users need empty functions for math + this.status.set("value", "The function needs a body"); + }else{ + var args = this.args.get("value"); + if(!(name in this.functions)){ + this.combo.item = this.writeStore.put({name: name, args: args, body: body}); + } + this.saveFunction(name, args, body); + this.status.set("value", "Function "+name+" was saved"); + } + }, + saveFunction: lang.hitch(that, that.saveFunction) + }, d); + this.aFloatingPane.set('content', this.funcMaker); + this.aFloatingPane.startup(); + this.aFloatingPane.bringToTop(); + }, + makeGrapherWindow: function(){ + // summary + // use this to make a Grapher window appear with a button + var body = win.body(); + + var pane = domConstruct.create('div'); + body.appendChild(pane); + + this.aFloatingPane = new dojox.layout.FloatingPane({resizable:false, dockable:true, maxable:false, closable:true, duration:300, title:"Graph Window", style:"position:absolute;left:10em;top:5em;width:50em;"}, pane); + var that = this; + + var d = domConstruct.create("div"); + this.grapher = new calc.Grapher({ + myPane: this.aFloatingPane, + drawOne: function(i){ + this.array[i][this.chartIndex].resize(this.graphWidth.get("value"), this.graphHeight.get("value")); + this.array[i][this.chartIndex].axes["x"].max = this.graphMaxX.get('value'); + if(this.array[i][this.expressionIndex].get("value")==""){ + this.setStatus(i, "Error"); + return; + } + var func; + var yEquals = (this.array[i][this.functionMode]=="y="); + if(this.array[i][this.expressionIndex].get("value")!=this.array[i][this.evaluatedExpression]){ + var args = 'x'; + if(!yEquals){ + args = 'y'; + } + func = that.executor.Function('', args, "return "+this.array[i][this.expressionIndex].get('value')); + this.array[i][this.evaluatedExpression] = this.array[i][this.expressionIndex].value; + this.array[i][this.functionRef] = func; + } + else{ + func = this.array[i][this.functionRef]; + } + var pickedColor = this.array[i][this.colorIndex].get("value"); + if(!pickedColor){ + pickedColor = 'black'; + } + calc.draw(this.array[i][this.chartIndex], func, {graphNumber:this.array[i][this.funcNumberIndex], fOfX:yEquals, color:{stroke:{color:pickedColor}}}); + this.setStatus(i, "Drawn"); + }, + onDraw:function(){ + for(var i = 0; i < this.rowCount; i++){ + if((!this.dirty && this.array[i][this.checkboxIndex].get("checked")) || (this.dirty && this.array[i][this.statusIndex].innerHTML=="Drawn")){ + this.drawOne(i); + }else{ + this.array[i][this.chartIndex].resize(this.graphWidth.get("value"), this.graphHeight.get("value")); + this.array[i][this.chartIndex].axes["x"].max = this.graphMaxX.get('value'); + } + } + + var bufferY = domGeometry.position(this.outerDiv).y-domGeometry.position(this.myPane.domNode).y; + bufferY*=2; + bufferY=Math.abs(bufferY); + var height = "" + Math.max(parseInt(this.graphHeight.get('value'))+50, this.outerDiv.scrollHeight+bufferY); + var width = "" + (parseInt(this.graphWidth.get('value')) + this.outerDiv.scrollWidth); + this.myPane.resize({w:width, h:height}); + } + }, d); + this.aFloatingPane.set('content', this.grapher); + this.aFloatingPane.startup(); + this.aFloatingPane.bringToTop(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/calc/Grapher.js b/js/dojo-release-1.7.2-src/dojox/calc/Grapher.js new file mode 100644 index 0000000..9ada5bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/Grapher.js @@ -0,0 +1,650 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom-construct", + "dojo/dom-class", + "dojo/dom-style", + "dijit/_WidgetBase", + "dijit/_WidgetsInTemplateMixin", + "dijit/_TemplatedMixin", + "dojox/math/_base", + "dijit/registry", + "dijit/form/DropDownButton", + "dijit/TooltipDialog", + "dijit/form/TextBox", + "dijit/form/CheckBox", + "dijit/ColorPalette", + "dojox/charting/Chart", + "dojox/charting/axis2d/Default", + "dojox/charting/plot2d/Default", + "dojox/charting/plot2d/Lines", + "dojox/charting/themes/Tufte", + "dojo/colors", + "dojo/text!./templates/Grapher.html", + "dojox/calc/_Executor", + "dijit/form/Button", // template + "dijit/form/Select" // template +], function(declare, lang, win, domConstruct, domClass, domStyle, WidgetBase, WidgetsInTemplateMixin, TemplatedMixin, math, registry, DropDownButton, TooltipDialog, TextBox, CheckBox, ColorPalette, Chart, axis2d, plot2d, Lines, Tufte, colors, template, calc){ + + // summary + // provide static functions for Grapher + var + epsilon = 1e-15 / 9, + bigNumber = 1e200, + log2 = Math.log(2), + defaultParams = {graphNumber:0, fOfX:true, color:{stroke:"black"}}; + + + /*===== + WidgetBase = dijit._WidgetBase; + WidgetsInTemplateMixin = dijit._WidgetsInTemplateMixin; + TemplatedMixin = dijit._TemplatedMixin; + =====*/ + var Grapher = declare( + "dojox.calc.Grapher", + [WidgetBase, TemplatedMixin, WidgetsInTemplateMixin], + { + // summary: + // The dialog layout for making graphs + // + templateString: template, + + addXYAxes: function(chart){ + // summary: + // add or re-add the default x/y axes to the Chart provided + // params: + // chart is an instance of dojox.charting.Chart + + return chart.addAxis("x", { + max: parseInt(this.graphMaxX.get("value")), + min: parseInt(this.graphMinX.get("value")), + majorLabels: true, + minorLabels: true, + //includeZero: true, + minorTicks: false, + microTicks: false, + //majorTickStep: 1, + htmlLabels: true, + labelFunc: function(value){ + return value; + }, + maxLabelSize: 30, + fixUpper: "major", fixLower: "major", + majorTick: { length: 3 } + }). + addAxis("y", { + max: parseInt(this.graphMaxY.get("value")), + min: parseInt(this.graphMinY.get("value")), + labelFunc: function(value){ + return value; + }, + maxLabelSize: 50, + vertical: true, + // htmlLabels: false, + microTicks: false, + minorTicks: true, + majorTick: { stroke: "black", length: 3 } + }); + }, + selectAll: function(){ + // summary + // select all checkboxes inside the function table + for(var i = 0; i < this.rowCount; i++){ + this.array[i][this.checkboxIndex].set("checked", true); + } + }, + deselectAll: function(){ + // summary + // deselect all checkboxes inside the function table + for(var i = 0; i < this.rowCount; i++){ + this.array[i][this.checkboxIndex].set("checked", false); + } + }, + drawOne: function(i){ + // i is a the index to this.array + // override me + }, + onDraw: function(){ + console.log("Draw was pressed"); + // override me + }, + erase: function(i){ + // summary: + // erase the chart inside this.array with the index i + // params: + // i is the integer index to this.array that represents the current row number in the table + var nameNum = 0; + var name = "Series "+this.array[i][this.funcNumberIndex]+"_"+nameNum; + while(name in this.array[i][this.chartIndex].runs){ + this.array[i][this.chartIndex].removeSeries(name); + nameNum++; + name = "Series "+this.array[i][this.funcNumberIndex]+"_"+nameNum; + } + this.array[i][this.chartIndex].render(); + this.setStatus(i, "Hidden"); + }, + onErase: function(){ + // summary: + // the erase button's onClick method + // it see's if the checkbox is checked and then erases it if it is. + for(var i = 0; i < this.rowCount; i++){ + if(this.array[i][this.checkboxIndex].get("checked")){ + this.erase(i); + } + } + }, + onDelete: function(){ + // summary: + // the delete button's onClick method + // delete all of the selected rows + for(var i = 0; i < this.rowCount; i++){ + if(this.array[i][this.checkboxIndex].get("checked")){ + this.erase(i); + for(var k = 0; k < this.functionRef; k++){ + if(this.array[i][k] && this.array[i][k]["destroy"]){ + this.array[i][k].destroy(); + } + } + this.graphTable.deleteRow(i); + this.array.splice(i, 1); + this.rowCount--; + i--; + } + } + }, + // attributes to name the indices of this.array + checkboxIndex: 0, + functionMode: 1, + expressionIndex: 2, + colorIndex: 3, + dropDownIndex: 4, + tooltipIndex: 5, + colorBoxFieldsetIndex: 6, + statusIndex: 7, + chartIndex: 8, + funcNumberIndex: 9, + evaluatedExpression: 10, + functionRef: 11, + + createFunction: function(){ + // summary: + // create a new row in the table with all of the dojo objects. + + var tr = this.graphTable.insertRow(-1); + this.array[tr.rowIndex] = []; + var td = tr.insertCell(-1); + var d = domConstruct.create('div'); + td.appendChild(d); + var checkBox = new CheckBox({}, d); + this.array[tr.rowIndex][this.checkboxIndex] = checkBox; + domClass.add(d, "dojoxCalcCheckBox"); + + td = tr.insertCell(-1); + var funcMode = this.funcMode.get("value"); + d = win.doc.createTextNode(funcMode); + td.appendChild(d); + this.array[tr.rowIndex][this.functionMode] = funcMode; + //domClass.add(d, "dojoxCalcFunctionMode");// cannot use text nodes + + td = tr.insertCell(-1); + d = domConstruct.create('div'); + td.appendChild(d); + var expression = new TextBox({}, d); + this.array[tr.rowIndex][this.expressionIndex] = expression; + domClass.add(d, "dojoxCalcExpressionBox"); + + var b = domConstruct.create('div'); + var color = new ColorPalette({changedColor:this.changedColor}, b); + domClass.add(b, "dojoxCalcColorPalette"); + + this.array[tr.rowIndex][this.colorIndex] = color; + + var c = domConstruct.create('div'); + var dialog = new TooltipDialog({content:color}, c); + this.array[tr.rowIndex][this.tooltipIndex] = dialog; + domClass.add(c, "dojoxCalcContainerOfColor"); + + td = tr.insertCell(-1); + d = domConstruct.create('div'); + td.appendChild(d); + + var colorBoxFieldset = domConstruct.create('fieldset'); + domStyle.set(colorBoxFieldset, { backgroundColor: "black", width: "1em", height: "1em", display: "inline" }); + this.array[tr.rowIndex][this.colorBoxFieldsetIndex] = colorBoxFieldset; + + var drop = new DropDownButton({label:"Color ", dropDown:dialog}, d); + drop.containerNode.appendChild(colorBoxFieldset); + this.array[tr.rowIndex][this.dropDownIndex] = drop; + domClass.add(d, "dojoxCalcDropDownForColor"); + + /*td = tr.insertCell(-1); + d = domConstruct.create('div'); + td.appendChild(d); + var status = new TextBox({style:"width:50px", value:"Hidden", readOnly:true}, d);//hidden, drawn, or error + this.array[tr.rowIndex][this.statusIndex] = status; + domClass.add(d, "dojoxCalcStatusBox");*/ + + td = tr.insertCell(-1); + d = domConstruct.create('fieldset'); + d.innerHTML = "Hidden"; + this.array[tr.rowIndex][this.statusIndex] = d; + domClass.add(d, "dojoxCalcStatusBox"); + td.appendChild(d); + + d = domConstruct.create('div'); + domStyle.set(d, { position: "absolute", left: "0px", top: "0px" }) + this.chartsParent.appendChild(d); + this.array[tr.rowIndex][this.chartNodeIndex] = d; + domClass.add(d, "dojoxCalcChart"); + var chart = new dojox.charting.Chart(d).setTheme(dojox.charting.themes.Tufte). + addPlot("default", { type: "Lines", shadow: {dx: 1, dy: 1, width: 2, color: [0, 0, 0, 0.3]} }); + this.addXYAxes(chart); + this.array[tr.rowIndex][this.chartIndex] = chart; + color.set("chart", chart); + color.set("colorBox", colorBoxFieldset); + color.set("onChange", lang.hitch(color, 'changedColor')); + + this.array[tr.rowIndex][this.funcNumberIndex] = this.funcNumber++; + this.rowCount++; + }, + setStatus: function(i, status){ + // summary: + // set the status of the row i to be status + // params: + // i is an integer index of this.array as well as a row index + // status is a String, it is either Error, Hidden, or Drawn + this.array[i][this.statusIndex].innerHTML = status; //this.array[i][this.statusIndex].set("value", status); + }, + changedColor: function(){ + // summary: + // make the color of the chart the new color + // the context is changed to the colorPalette, and a reference to chart was added to it a an attribute + var chart = this.get("chart"); + var colorBoxFieldset = this.get("colorBox"); + for(var i = 0; i < chart.series.length; i++){ + if(chart.series[i]["stroke"]){ + if(chart.series[i].stroke["color"]){ + chart.series[i]["stroke"].color = this.get("value"); + chart.dirty = true; + } + } + } + chart.render(); + domStyle.set(colorBoxFieldset, { backgroundColor: this.get("value") }); + }, + makeDirty: function(){ + // summary: + // if something in the window options is changed, this is called + this.dirty = true; + }, + checkDirty1: function(){ + // summary: + // to stay in sync with onChange, checkDirty is called with a timeout + setTimeout(lang.hitch(this, 'checkDirty'), 0); + }, + checkDirty: function(){ + // summary: + // adjust all charts in this.array according to any changes in window options + if(this.dirty){ + // change the axes of all charts if it is dirty + for(var i = 0; i < this.rowCount; i++){ + this.array[i][this.chartIndex].removeAxis("x"); + this.array[i][this.chartIndex].removeAxis("y"); + this.addXYAxes(this.array[i][this.chartIndex]); + } + this.onDraw(); + } + this.dirty = false; + }, + postCreate: function(){ + // summary + // add Event handlers, some additional attributes, etc + this.inherited(arguments);// this is super class postCreate + this.createFunc.set("onClick", lang.hitch(this, 'createFunction')); + + this.selectAllButton.set("onClick", lang.hitch(this, 'selectAll')); + this.deselectAllButton.set("onClick", lang.hitch(this, 'deselectAll')); + + this.drawButton.set("onClick", lang.hitch(this, 'onDraw')); + this.eraseButton.set("onClick", lang.hitch(this, 'onErase')); + this.deleteButton.set("onClick", lang.hitch(this, 'onDelete')); + + this.dirty = false; + this.graphWidth.set("onChange", lang.hitch(this, 'makeDirty')); + this.graphHeight.set("onChange", lang.hitch(this, 'makeDirty')); + this.graphMaxX.set("onChange", lang.hitch(this, 'makeDirty')); + this.graphMinX.set("onChange", lang.hitch(this, 'makeDirty')); + this.graphMaxY.set("onChange", lang.hitch(this, 'makeDirty')); + this.graphMinY.set("onChange", lang.hitch(this, 'makeDirty')); + this.windowOptionsInside.set("onClose", lang.hitch(this, 'checkDirty1')); + + this.funcNumber = 0; + this.rowCount = 0; + this.array = []; + + }, + startup: function(){ + // summary + // make sure the parent has a close button if it needs to be able to close + this.inherited(arguments);// this is super class startup + // close is only valid if the parent is a widget with a close function + var parent = registry.getEnclosingWidget(this.domNode.parentNode); + if(parent && typeof parent.close == "function"){ + this.closeButton.set("onClick", lang.hitch(parent, 'close')); + }else{ + domStyle.set(this.closeButton.domNode, { display: "none" }); // hide the button + } + // add one row at the start + this.createFunction(); + + // make the graph bounds appear initially + this.array[0][this.checkboxIndex].set("checked", true); + this.onDraw(); + this.erase(0); + this.array[0][this.expressionIndex].value = ""; + } + }); + + return lang.mixin(calc, { + draw: function(/*Chart*/ chart, /*Function*/ functionToGraph, params){ + // summary + // graph a chart with the given function. + // params + // chart is a dojox.charting.Chart object, functionToGraph is a function with one numeric parameter (x or y typically) + // and params is an Object the can contain the number of the graph in the chart it is (an integer), a boolean saying if the functionToGraph is a function of x (otherwise y) + // and the color, which is an object with a stroke with a color's name eg: color:{stroke:"black"} + + params = lang.mixin({}, defaultParams, params); + chart.fullGeometry(); + var x; + var y; + var points; + if(params.fOfX==true){ + x = 'x'; + y = 'y'; + points = calc.generatePoints(functionToGraph, x, y, chart.axes.x.scaler.bounds.span, chart.axes.x.scaler.bounds.lower, chart.axes.x.scaler.bounds.upper, chart.axes.y.scaler.bounds.lower, chart.axes.y.scaler.bounds.upper); + }else{ + x = 'y'; + y = 'x'; + points = calc.generatePoints(functionToGraph, x, y, chart.axes.y.scaler.bounds.span, chart.axes.y.scaler.bounds.lower, chart.axes.y.scaler.bounds.upper, chart.axes.x.scaler.bounds.lower, chart.axes.x.scaler.bounds.upper); + } + + var i = 0; + + if(points.length > 0){ + for(; i < points.length; i++){ + if(points[i].length>0){ + chart.addSeries("Series "+params.graphNumber+"_"+i, points[i], params.color); + } + } + } + // you only need to remove the excess i's + var name = "Series "+params.graphNumber+"_"+i; + while(name in chart.runs){ + chart.removeSeries(name); + i++; + name = "Series "+params.graphNumber+"_"+i; + } + chart.render(); + return points; + }, + + generatePoints: function(/*Function*/ funcToGraph, /*String*/ x, /*String*/ y, /*Number*/ width, /*Number*/ minX, /*Number*/ maxX, /*Number*/ minY, /*Number*/ maxY){ + // summary: + // create the points with information about the graph. + // params: + // funcToGraph is a function with one numeric parameter (x or y typically) + // x and y are Strings which always have the values of "x" or "y". If y="x" and x="y" then it is creating points for the function as though it was a function of y + // Number minX, Number maxX, Number minY, Number maxY are all bounds of the chart. If x="y" then maxY should be the maximum bound of x rather than y + // Number width is the pixel width of the chart + // output: + // an array of arrays of points + var pow2 = (1 << Math.ceil(Math.log(width) / log2)); + var + dx = (maxX - minX) / pow2, // divide by 2^n instead of width to avoid loss of precision + points = [], // [{x:value, y:value2},...] + series = 0, + slopeTrend, + slopeTrendTemp; + + points[series] = []; + + var i = minX, k, p; + for(var counter = 0; counter <= pow2; i += dx, counter++){ + p = {}; + p[x] = i; + p[y] = funcToGraph({_name:x, _value:i, _graphing:true});//funcToGraph(i); + if(p[x] == null || p[y] == null){ + return {};// someone pushed cancel in the val code + } + if(isNaN(p[y]) || isNaN(p[x])){ + continue; + } + points[series].push(p); + + if(points[series].length == 3){ + slopeTrend = getSlopePairTrend(slope(points[series][points[series].length - 3], points[series][points[series].length-2]), slope(points[series][points[series].length-2], points[series][points[series].length-1])); + continue; + } + if(points[series].length < 4){ + continue; + } + + slopeTrendTemp = getSlopePairTrend(slope(points[series][points[series].length - 3], points[series][points[series].length-2]), slope(points[series][points[series].length-2], points[series][points[series].length-1])); + if(slopeTrend.inc != slopeTrendTemp.inc || slopeTrend.pos != slopeTrendTemp.pos){ + // var a = asymptoteSearch(funcToGraph, points[series][points[series].length - 2], points[series][points[series].length-1]); + var a = asymptoteSearch(funcToGraph, points[series][points[series].length - 3], points[series][points[series].length-1]); + p = points[series].pop(); + // this pop was added after changing the var a line above + points[series].pop(); + for(var j = 0; j < a[0].length; j++){ + points[series].push(a[0][j]); + } + for(k = 1; k < a.length; k++){ + points[++series] = a.pop(); + } + points[series].push(p); + slopeTrend = slopeTrendTemp; + } + } + while(points.length > 1){ + for(k = 0; k < points[1].length; k++){ + if(points[0][points[0].length - 1][x] == points[1][k][x]){ + continue; + } + points[0].push(points[1][k]); + } + points.splice(1, 1); + } + points = points[0]; + + // make new series when it goes off the graph + var s = 0; + var points2 = [ [] ]; + for(k = 0; k < points.length; k++){ + var x1, y1, b, slope1; + if(isNaN(points[k][y]) || isNaN(points[k][x])){ + while(isNaN(points[k][y]) || isNaN(points[k][x])){ + points.splice(k, 1); + } + points2[++s] = []; + k--; + }else if(points[k][y] > maxY || points[k][y] < minY){ + // make the last point's y equal maxY and find a matching x + if(k > 0 && points[k - 1].y!=minY && points[k - 1].y!=maxY){ + slope1 = slope(points[k - 1], points[k]); + if(slope1 > bigNumber){ + slope1 = bigNumber; + }else if(slope1 < -bigNumber){ + slope1 = -bigNumber; + } + if(points[k][y] > maxY){ + y1 = maxY; + }else{ + y1 = minY; + } + b = points[k][y] - slope1 * points[k][x]; + x1 = (y1 - b) / slope1; + + p = {}; + p[x] = x1; + p[y] = funcToGraph(x1);//y1;// + + if(p[y]!=y1){ + p = findMinOrMaxY(funcToGraph, points[k - 1], points[k], y1); + } + + points2[s].push(p); + // setup the next series + points2[++s] = [] + } + var startK = k; + while(k < points.length && (points[k][y] > maxY || points[k][y] < minY)){ + k++; + } + if(k >= points.length){ + if(points2[s].length == 0){ + points2.splice(s, 1); + } + break; + } + // connect the end graph + if(k > 0 && points[k].y != minY && points[k].y != maxY){ + slope1 = slope(points[k - 1], points[k]); + if(slope1 > bigNumber){ + slope1 = bigNumber; + }else if(slope1 < -bigNumber){ + slope1 = -bigNumber; + } + if(points[k - 1][y] > maxY){ + y1 = maxY; + }else{ + y1 = minY; + } + b = points[k][y] - slope1 * points[k][x]; + x1 = (y1 - b) / slope1; + + p = {}; + p[x] = x1; + p[y] = funcToGraph(x1);//y1;// + if(p[y]!=y1){ + p = findMinOrMaxY(funcToGraph, points[k - 1], points[k], y1); + } + points2[s].push(p); + points2[s].push(points[k]); + } + }else{ + points2[s].push(points[k]); + } + } + return points2; + + function findMinOrMaxY(funcToGraph, left, right, minMaxY){ + + while(left<=right){ + var midX = (left[x]+right[x])/2; + var mid = {}; + mid[x] = midX; + mid[y] = funcToGraph(mid[x]); + + if(minMaxY==mid[y]||mid[x]==right[x]||mid[x]==left[x]){ + return mid; + } + + var moveTowardsLarger = true; + if(minMaxY= Math.abs(midpoint[y])){ + pointTemp[0].push(midpoint); + left = rightPoint; + }else{ + pointTemp[1].unshift(midpoint); + if(right[x] == midpoint[x]){ + break; + } + right = midpoint; + } + + } + return pointTemp; + } + + function getSlopePairTrend(slope1, slope2){ + var + isInc = false, + isPos = false; + + if(slope1 < slope2){ + isInc = true; + } + if(slope2 > 0){ + isPos = true; + } + return { inc: isInc, pos: isPos }; + } + + function nextNumber(v){ + var delta; + if(v > -1 && v < 1){ + if(v < 0){ // special handling as we approach 0 + if(v >= -epsilon){ + delta = -v; // always stop at 0 + }else{ + delta = v / Math.ceil(v / epsilon); // divide distance to 0 into equal tiny chunks + } + }else{ + delta = epsilon; + } + }else{ + delta = Math.abs(v) * epsilon; + } + return v + delta; + } + + function slope(p1, p2){ + return (p2[y] - p1[y]) / (p2[x] - p1[x]); + } + }, + Grapher: Grapher + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/calc/Readme.txt b/js/dojo-release-1.7.2-src/dojox/calc/Readme.txt new file mode 100644 index 0000000..b70d1c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/Readme.txt @@ -0,0 +1,175 @@ +Dojo Toolkit Graphing Calculator Project Readme +Author: Jason Hays +Trac ID: jason_hays22 + +Contents: + Expressions + Variables, Functions, and uninitializing variables + toFrac in GraphPro + Numbers and bases + Graphing equations + Substitutes for hard to type characters + Making Functions + Decimal points, commas, and semicolons in different languages + Important mathematical functions + + + +---------------Expressions---------------- +The calculator has the ability to simplify a valid expression. +With Augmented Mathematical Syntax, users are allowed to use nonstandard operators in their expressions. Those operators include ^, !, and radical. + +^ is used for exponentiation. + It is a binary operator, which means it needs a number on both the left and right side (like multiplication and division) + 2^5 is an example of valid use of ^, and represents two to the power of five. + +! is used for factorial. + It supports numbers that are not whole numbers through the use of the gamma function. It uses the number on its left side. Both 2! and 2.6! are examples of valid input in America. (2,6! is valid in some nations) + +radicals can be used for either square root or various other roots. + to use it as a square root sign, there should only be a number on its right. If you put a number on the left as well, then it will use that number as the root. + +To evaluate an expression, type in a valid expression, such as 2*(10+5), into the input box. If you are using GraphPro, then it is the smaller text box. + After you have chosen an expression, press Enter on either your keyboard or on the lower right of the calculator. + If it did not evaluate, make sure you correctly closed your parentheses. + In the Standard calculator, the answer will appear in the input box, in GraphPro, the answer will appear in the larger text box above. + On the keyboard, you can navigate through your previous inputs with the up and down arrow keys. + +If you enter an operator when the textbox is empty or highlighted (like *) then Ans* should appear. That means the answer you got before will be multiplied by whatever you input next. +So try Ans*3. Whenever you start the calculator, Ans is set to zero. + + +--------------Variables, Functions, and uninitializing variables---------------- +A variable is basically something that stores a value. If you saw Ans in the previous example, you've also seen a variable. +If you want to store your own number somewhere, you'll need to use the = operator. + + Valid variable and function names include cannot start with numbers, do not include spaces, but can start with the alphabet (a-z or A-Z) and can have numbers within the names "var1" is a valid name + + Input "myVar = 2" into the textbox and press "Enter." You've just saved a variable. Now if you ever type myVar into an expression, 2 will appear (unless you change it to something else). + Variables are best used to store Ans. Ans is overridden whenever you evaluate an expression, so it is good to store the value of Ans somewhere else before it is overridden. + + If you want a variable (like myVar) to become empty, or undefined, you just need to set it equal to undefined. + Now try "myVar = undefined" Now myVar is no longer defined. + + Functions are very useful for finding answers and gathering data. + You can use functions by inputting their name and their arguments. + For this example, I'll be using the functions named "sqrt" and "pow" + + sqrt is a function with one argument. That argument has a name too, its name is 'x.' x is a very common name amongst built in functions + So, let's run a function. Input "sqrt" then input a left parenthesis (all arguments of a function go within parentheses). Now type a value for x, like 2. + Now close the parentheses with the right parenthesis. If you used 2, you should have "sqrt(2)" in the text box. If you press enter, you should get the square root of 2 back from the calculator. + + Now for "pow" it has two arguments 'x' and 'y' + Type in "pow(" and pick a value for 'x' (I am picking 2 again) + but now, you need to separate the value you gave x with a list separator. Depending on your location, it is either a comma or a semicolon. I'm in America, and I use commas. + by this point, I have "pow(2," + Now we need a value for 'y' (I'm using 3). Put a ')' and now I have 'pow(2,3)' + Press Enter, and, following my example, you should get 8 + + In this calculator, there are several ways to input arguments. + You've already seen the first way, just input numbers in a specific order based on the names. + + The second way is with an arbitrary order, and storage. + With 'pow' I can input "pow(y=3, x=2)" and get the exact answer as before. x and y will retain their assigned values, so you will need to set them to undefined it you want to try the next way. + + The third way is to let the calculator ask you for the values. Input "pow()" If the values have been assigned globally, then it will use those values, but otherwise, it will ask for values of x and y. They will not be stored globally this way. + + I'll go ahead and mention that because of the way the calculator parses, underscores should not be used to name a variable like _#_ (where # is an integer of any length) + +---------------toFrac()---------------- +toFrac is a function that takes one parameter, x, and converts it to a fraction for you. It is only in GraphPro, not the Standard mode. + It will try to simplify pi, square roots, and rational numbers where the denominator is less than a set bound (100 right now). + Immediately after the calculator starts, toFrac may seen slow, but it just needs to finish loading when the calculator starts. After that, it will respond without delay. + For an example, input "toFrac(.5)" or (,5 for some). It will return "1/2" + For a more complicated example, input "toFrac(atan(1))" to get back "pi/4" (atan is also known as "arc tangent" or "inverse tangent") + +--------------Numbers and bases---------------- +This calculator supports multiple bases, and not only that, but non integer versions of multiple bases. + What is a base? Well, the numbers you know and love are base 10. That means that you count to all of the numbers up until 10 before you move on to add to the tenths place. + So, what about base 2? All of the numbers up until 2 are 0 and 1. If you want to type a base 2 number into the calculator, simply input "0b" (meaning base 2) followed by some number of 1's and 0's. 0b101 is 5 in base 10 + + Hexadecimal is 0x, and octal is 0o, but i won't go into too much detail on those here. + If you want an arbitrary integer base, type the number in the correct base, insert '#' and put the radix on the end. ".1#3" is the same as 1/3 in base 10 + Because there is not yet cause for it, you cannot have a base that is not a whole number. + +--------------Graphing Equations---------------- +First thing is first, in GraphPro only, the "Graph" button in the top left corner opens the Graph Window + So, now you should see a single text box adjacent to "y=" + Type the right side of the equation using 'x' as the independent variable. + "sin(x)" for example. To Graph it, make sure the checkbox to the left of the equation is selected, and press the Draw Selected button. + You can change the color in the color tab. By default, it is black. Under window options, you can change the window size and x/y boundaries + + Let's add a second function. Go to the Add Function button, select the mode you want, and press Create. Another input box will appear. + If you selected x= as the Mode, then y is the independent variable for the line (an example is "x=sin(y)"). + If you want to erase, check the checkboxes you want to erase, and press "Erase Selected" + And similarly, Delete Selected will delete the chosen functions + + "Close" will terminate the Graph Window completely + +---------------Substitutes for hard to type characters--------------- +Some characters are not simple to add in for keyboard users, so there are substitutes that are much easier to add into the text box. + + pi or PI can be used in place of the special character for it. + For epsilon, eps or E can be used. + radical has replacement functions. sqrt(x) or pow(x,y) can be used instead. + +--------------Making Functions----------------- +My favorite part. Before we start, I'll mention that Augmented Mathematical Syntax is allowed in the Function Generator (yay). + Ok, now the bad news: to prevent some security issues, keywords new and delete are forbidden. + Sorry, it is a math calculator, not a game container; not that that would be so bad, but it is to keep it from being used for some evil purposes. + + Ok, onto function making. Most JavaScript arithmetic is supported here, but, some syntax was overlapping mathematical syntax, so ++Variable no longer increases the contents of Variable because of ++1, but Variable++ does increase it (same deal with --) + Strings have incredibly limited support. Objects have near zero support + So, let's make a Function: + Press the "Func" button. A Function Window should pop up. + Enter a name into the "functionName" box. (it must follow the name guidelines in the variables section) I'm putting myFunc + Enter the variables you want into the arguments box (I'll put "x,y" so I have two arguments x and y) + Now enter the giant text box. + Type "return " and then the expression you want to give to the calculator. I'm putting "return x*2 + y/2" + Then press Save. Now your function should appear in the functionName list and you can call it in the Calculator. + + If you want to Delete a function you made, select it in the function Name list, and then press Delete. + If you altered a previously saved function (and haven't saved over the old one) you can reset the text back to its original state with the Reset button. + Clear will empty out all of the text boxes in the Function Window + Close terminates the Function Window + +---------------Decimal points, commas, and semicolons in different languages---------------- +In America, 3.5 is three and one half. Comma is used to separate function parameters and list members. + +In some nations, 3,5 is three and one half. In lists, ;'s are used to separate its members. +So, when you evaluate expressions, 3,5 will be valid, but in the function generator, some ambiguous texts prevent me from allowing the conversion of that format to JavaScript. So I cannot parse it in the Function Generator. +And here is my example: +var i = 3,5; + b = 2; +I cannot discern whether the semicolon between i and b are list separators or the JavaScript character for end the line. b could be intended as a global variable, and i is a local variable, but I don't know that. So language conversion isn't supported in Function Making. + +--------------Important mathematical Functions--------------- +Here is a list of functions you may find useful and their variable arguments: + +sqrt(x) returns the square root of x +x is in radians for all trig functions +sin(x) returns the sine of x +asin(x) returns the arc sine of x +cos(x) returns the cosine of x +acos(x) returns the arc cosine of x +tan(x) returns the tangent of x +atan(x) returns the arc tangent of x + +atan2(y, x) returns the arc tangent of y and x +Round(x) returns the rounded integer form of x +Int(x) Cuts off the decimal digits of x +Ceil(x) If x has decimal digits, get the next highest integer + +ln(x) return the natural log of x +log(x) return log base 10 of x +pow(x, y) return x to the power of y + +permutations(n, r) get the permutations for n choose r +P(n, r) see permutations +combinations(n, r) get the combinations for n choose r +C(n, r) see combinations + +toRadix(number, baseOut) convert a number to a different base (baseOut) +toBin(number) convert number to a binary number +toOct(number) convert number to an octal number +toHex(number) convert number to a hexadecimal number diff --git a/js/dojo-release-1.7.2-src/dojox/calc/Standard.js b/js/dojo-release-1.7.2-src/dojox/calc/Standard.js new file mode 100644 index 0000000..bb3fe72 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/Standard.js @@ -0,0 +1,361 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/sniff", + "dojo/_base/window", + "dojo/_base/event", + "dojo/dom-style", + "dojo/ready", + "dojo/keys", + "dijit/registry", + "dijit/typematic", + "dijit/_WidgetBase", + "dijit/_WidgetsInTemplateMixin", + "dijit/_TemplatedMixin", + "dijit/form/_TextBoxMixin", + "dojox/math/_base", + "dijit/TooltipDialog", + "dojo/text!./templates/Standard.html", + "dojox/calc/_Executor", // template + "dijit/Menu", // template + "dijit/MenuItem", // template + "dijit/form/ComboButton", // template + "dijit/form/Button", // template + "dijit/form/TextBox" // template +], function(declare, lang, has, win, event, domStyle, ready, keys, registry, typematic, WidgetBase, WidgetsInTemplateMixin, TemplatedMixin, _TextBoxMixin, math, TooltipDialog, template, calc){ + + /*===== + WidgetBase = dijit._WidgetBase; + WidgetsInTemplateMixin = dijit._WidgetsInTemplateMixin; + TemplatedMixin = dijit._TemplatedMixin; + =====*/ + return declare( + "dojox.calc.Standard", + [WidgetBase, TemplatedMixin, WidgetsInTemplateMixin], + { + // summary: + // The dialog layout for a standard 4 function/algebraic calculator + // + templateString: template, + + readStore:null, + writeStore:null, + functions: [], + + executorLoaded: function(){ + // summary + // load in the stores after executor is loaded (the stores need executor to be loaded because it parses them) + ready(lang.hitch(this, function(){ + this.loadStore(this.readStore, true); + this.loadStore(this.writeStore); + })); + }, + + saveFunction: function(name, args, body){ + // summary + // make the function with executor + this.functions[name] = this.executor.normalizedFunction(name, args, body); + this.functions[name].args = args; + this.functions[name].body = body; + }, + + loadStore: function(store, isReadOnly){ + // summary + // load an entire store, and make it publicly editable/viewable based on isReadOnly + if(!store){ + return; + } + store.query({}).forEach(lang.hitch(this, function(item){ + lang.hitch(this, isReadOnly ? this.executor.normalizedFunction : this.saveFunction)(item.name, item.args, item.body); + })); + }, + + parseTextbox: function(){ + // summary + // parse the contents of the textboxWidget and display the answer somewhere (depending on the layout) + var text = this.textboxWidget.textbox.value; + if(text == "" && this.commandList.length > 0){ + this.setTextboxValue(this.textboxWidget, this.commandList[this.commandList.length-1]); + text = this.textboxWidget.textbox.value; + } + if(text!=""){ + var ans = this.executor.eval(text); + + if((typeof ans == "number" && isNaN(ans))){ + if(this.commandList.length == 0 || this.commandList[this.commandList.length - 1] != text){ + this.commandList.push(text); + } + this.print(text, false); + this.print("Not a Number", true); + }else if(((typeof ans == "object" && "length" in ans) || typeof ans != "object") && typeof ans != "function" && ans != null){ + this.executor.eval("Ans="+ans); + // add it to the command list as well + if(this.commandList.length == 0 || this.commandList[this.commandList.length - 1] != text){ + this.commandList.push(text); + } + this.print(text, false); + this.print(ans, true); + } + this.commandIndex = this.commandList.length-1; + //this.displayBox.textbox.scrollTop=this.displayBox.textbox.scrollHeight; + if(this.hasDisplay){ + this.displayBox.scrollTop=this.displayBox.scrollHeight; + } + //this.clearText(); + //this.textboxWidget.focus(); + _TextBoxMixin.selectInputText(this.textboxWidget.textbox); + + }else{ + this.textboxWidget.focus(); + } + }, + cycleCommands: function(count, node, event){ + // summary + // cycle through the commands that the user has entered + // it does not wrap around + if(count == -1 || this.commandList.length==0){ + return; + } + var keyNum = event.charOrCode; + //up arrow + if(keyNum == keys.UP_ARROW){ + this.cycleCommandUp(); + }else if(keyNum == keys.DOWN_ARROW){ + this.cycleCommandDown(); + } + }, + cycleCommandUp: function(){ + // summary + // cycle up through the list of commands the user has entered already + if(this.commandIndex-1<0){ + this.commandIndex=0; + }else{ + this.commandIndex--; + } + this.setTextboxValue(this.textboxWidget, this.commandList[this.commandIndex]); + }, + cycleCommandDown: function(){ + // summary + // cycle down through the list of commands the user has entered already + if(this.commandIndex+1>=this.commandList.length){ + this.commandIndex=this.commandList.length; + this.setTextboxValue(this.textboxWidget, ""); + }else{ + this.commandIndex++; + this.setTextboxValue(this.textboxWidget, this.commandList[this.commandIndex]); + } + + }, + onBlur: function(){ + // summary + // IE is lacking in function when it comes to the text boxes, so here, make it work like other browsers do by forcing a node.selectionStart and End onto it + if(has('ie')){ + var tr = win.doc.selection.createRange().duplicate(); + var selectedText = tr.text || ''; + var ntr = this.textboxWidget.textbox.createTextRange(); + tr.move("character",0); + ntr.move("character",0); + try{ + ntr.setEndPoint("EndToEnd", tr); + this.textboxWidget.textbox.selectionEnd = (this.textboxWidget.textbox.selectionStart = String(ntr.text).replace(/\r/g,"").length) + selectedText.length; + + }catch(e){} + } + }, + onKeyPress: function(e){ + // summary + // handle key input for Enter and operators + if(e.charOrCode == keys.ENTER){ + this.parseTextbox(); + // stop form submissions + event.stop(e); + }else if(e.charOrCode == '!' || e.charOrCode == '^' || e.charOrCode == '*' || e.charOrCode == '/' || e.charOrCode == '-' || e.charOrCode == '+'){ + if(has('ie')){ + var tr = win.doc.selection.createRange().duplicate(); + var selectedText = tr.text || ''; + var ntr = this.textboxWidget.textbox.createTextRange(); + tr.move("character",0); + ntr.move("character",0); + try{ + ntr.setEndPoint("EndToEnd", tr); + this.textboxWidget.textbox.selectionEnd = (this.textboxWidget.textbox.selectionStart = String(ntr.text).replace(/\r/g,"").length) + selectedText.length; + + }catch(e){} + } + + if(this.textboxWidget.get("value")==""){ + this.setTextboxValue(this.textboxWidget, "Ans"); + }else if(this.putInAnsIfTextboxIsHighlighted(this.textboxWidget.textbox, event.charOrCode)){ + this.setTextboxValue(this.textboxWidget, "Ans");//this.insertText("Ans"); + // move the cursor to the end of "Ans" + _TextBoxMixin.selectInputText(this.textboxWidget.textbox, this.textboxWidget.textbox.value.length, this.textboxWidget.textbox.value.length); + } + } + }, + insertMinus: function(){ + // summary + // insert a minus sign when they press (-) in the combo button + this.insertText('-'); + }, + print: function(text, isRight){ + // summary + // print the answer (typically) to the display or the input box + var t = ""; + }else{ + t += "text-align:left;'>"; + } + t += text+"
                          "; + if(this.hasDisplay){ + this.displayBox.innerHTML += t; + }else{// if there is not a display box, put the answer in the input box + this.setTextboxValue(this.textboxWidget, text); + } + //this.setTextboxValue(this.displayBox, this.displayBox.get('value')+'\n'+text); + }, + setTextboxValue: function(widget, val){ + // summary + // set a widget's value + widget.set('value', val); + }, + putInAnsIfTextboxIsHighlighted: function(node){ + // summary + // try seeing if the textbox is highlighted completely so you know if Ans should be put in for an operator like + + //console.log("Entered "+node.selectionStart + " "+ node.selectionEnd); + if(typeof node.selectionStart == "number"){ // not-IE + if(node.selectionStart==0 && node.selectionEnd == node.value.length){ + //node.value = "Ans"; + //dijit.selectInputText(node, node.value.length, node.value.length); + return true; + } + }else if(document.selection){ // IE + //console.log("Entered 2"); + var range = document.selection.createRange(); + //console.log("Range: "+range.text +" Node: "+node.value); + if(node.value == range.text){ + //this.insertText("Ans"); + return true; + } + } + return false; + }, + clearText: function(){ + // summary + // this clears the input box if it has content, but if it does not it clears the display + if(this.hasDisplay && this.textboxWidget.get('value')==""){ + this.displayBox.innerHTML = "";//this.setTextboxValue(this.displayBox, ""); + }else{ + this.setTextboxValue(this.textboxWidget, ""); + } + this.textboxWidget.focus(); + }, + /*insertMinusSign: function(){ + // + var v = this.subtract.get('label'); + if(v != '(-)' && this.putInAnsIfTextboxIsHighlighted(this.textboxWidget.textbox)){ + this.insertText("Ans-"); + return; + } + this.insertText('-'); + },*/ + insertOperator: function(newText){ + // summary + // insert an operator with a button + if(typeof newText == "object"){ + newText = newText = registry.getEnclosingWidget(newText["target"]).value; + } + if(this.textboxWidget.get("value") == "" || this.putInAnsIfTextboxIsHighlighted(this.textboxWidget.textbox)){ + newText = "Ans"+newText; + } + this.insertText(newText); + }, + insertText: function(newText){//(node, newText){ + // summary + // insert text to the textboxWidget node + setTimeout(lang.hitch(this, function(){ + + var node = this.textboxWidget.textbox; + if(node.value==""){ + node.selectionStart = 0; + node.selectionEnd = 0; + } + if(typeof newText == "object"){ + newText = newText = registry.getEnclosingWidget(newText["target"]).value; + } + + var value = node.value.replace(/\r/g,''); + if(typeof node.selectionStart == "number"){ // not-IE + var pos = node.selectionStart; + var cr = 0; + if(has('opera')){ + cr = (node.value.substring(0,pos).match(/\r/g) || []).length; + } + node.value = value.substring(0, node.selectionStart-cr) + newText + value.substring(node.selectionEnd-cr); + node.focus(); + pos += newText.length; + //node.setSelectionRange(pos, pos); + _TextBoxMixin.selectInputText(this.textboxWidget.textbox, pos, pos); + }else if(document.selection){ // IE + if(this.handle){ + clearTimeout(this.handle); + this.handle = null; + } + node.focus(); + this.handle = setTimeout(function(){ + var range = document.selection.createRange(); + range.text = newText; + // show cursor + range.select(); + this.handle = null; + }, 0); + + } + }), 0); + }, + hasDisplay: false, + postCreate: function(){ + // summary + // run startup, see if there is an upper display box, etc + this.handle = null; + this.commandList = []; + this.commandIndex = 0; + + if(this.displayBox){ + this.hasDisplay = true; + } + if(this.toFracButton && !calc.toFrac){ + domStyle.set(this.toFracButton.domNode, { visibility: "hidden" }); + } + if(this.functionMakerButton && !calc.FuncGen){ + domStyle.set(this.functionMakerButton.domNode, { visibility: "hidden" }); + } + if(this.grapherMakerButton && !calc.Grapher){ + domStyle.set(this.grapherMakerButton.domNode, { visibility: "hidden" }); + } + this._connects.push(typematic.addKeyListener(this.textboxWidget.textbox, + { + charOrCode:keys.UP_ARROW, + shiftKey:false, + metaKey:false, + ctrlKey:false // ALT is optional since its unspecified + }, + this, this.cycleCommands, 200, 200)); + this._connects.push(typematic.addKeyListener(this.textboxWidget.textbox, + { + charOrCode:keys.DOWN_ARROW, + shiftKey:false, + metaKey:false, + ctrlKey:false // ALT is optional since its unspecified + }, + this, this.cycleCommands, 200, 200)); + + + //onClick="this.insertText(document.getElementById('textbox'), '\u221A')" + //this.sqrt.set("onClick", lang.hitch(this, "insertText", this.textboxWidget, '\u221A')); + //this.pi.set("onClick", lang.hitch(this, "insertText", this.textboxWidget, '\u03C0')); + this.startup() + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/calc/_Executor.js b/js/dojo-release-1.7.2-src/dojox/calc/_Executor.js new file mode 100644 index 0000000..8a4abf6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/_Executor.js @@ -0,0 +1,148 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/number", + "dijit/_base/manager", + "dijit/_WidgetBase", + "dijit/_TemplatedMixin", + "dojox/math/_base" +], function(kernel, declare, lang, number, dijit, WidgetBase, TemplatedMixin, math){ + + kernel.experimental("dojox.calc"); + + var calcEnv, calc; // private + + var magicBigInt = (1 << 30) - 35; // 2^30 - 35 is a prime that ensures approx(n/(2^k)) != n/(2^k) for k >= 1 and n < 2^k + + /*===== + WidgetBase = dijit._WidgetBase; + TemplatedMixin = dijit._TemplatedMixin; + =====*/ + var Executor = declare( + "dojox.calc._Executor", + [WidgetBase, TemplatedMixin], + { + // summary: + // A graphing, scientific calculator + // + + templateString: '', + + _onLoad: function(env){ + // summary + // prepare for communications between the user and the calculator by saving the calculator environment, storing the prompt function locally, and making dojox.math available + // + calcEnv = env; + env.outerPrompt = window.prompt; // for IE who can't execute the iframe's prompt method without notifying the user first + // let the user call dojo math functions + env.dojox = {math: {}}; + for(var f in math){ env.dojox.math[f] = lang.hitch(math, f); } + if("toFrac" in calc){ + env.toFracCall = lang.hitch(calc, 'toFrac'); + this.Function('toFrac', 'x', "return toFracCall(x)"); + } + + env.isJavaScriptLanguage = number.format(1.5, {pattern:'#.#'}) == "1.5"; + env.Ans = 0; + env.pi = Math.PI; + env.eps = Math.E; + + env.powCall = lang.hitch(calc, 'pow'); + + // TODO add Degrees support to trig functions + + + //this.normalizedFunction('toString', 'number, radix', "return number.toString(radix)"); + this.normalizedFunction('sqrt', 'x', "return Math.sqrt(x)"); + this.normalizedFunction('sin', 'x', "return Math.sin(x)"); + this.normalizedFunction('cos', 'x', "return Math.cos(x)"); + this.normalizedFunction('tan', 'x', "return Math.tan(x)"); + this.normalizedFunction('asin', 'x', "return Math.asin(x)"); + this.normalizedFunction('acos', 'x', "return Math.acos(x)"); + this.normalizedFunction('atan', 'x', "return Math.atan(x)"); + this.normalizedFunction('atan2', 'y, x', "return Math.atan2(y, x)"); + this.normalizedFunction('Round', 'x', "return Math.round(x)"); + this.normalizedFunction('Int', 'x', "return Math.floor(x)"); + this.normalizedFunction('Ceil', 'x', "return Math.ceil(x)"); + this.normalizedFunction('ln', 'x', "return Math.log(x)"); + this.normalizedFunction('log', 'x', "return Math.log(x)/Math.log(10)"); + this.normalizedFunction('pow', 'x, y', "return powCall(x,y)"); + this.normalizedFunction('permutations', 'n, r', "return dojox.math.permutations(n, r);"); + this.normalizedFunction('P', 'n, r', "return dojox.math.permutations(n, r);"); + this.normalizedFunction('combinations', 'n, r', "return dojox.math.combinations(n, r);"); + this.normalizedFunction('C', 'n, r', "return dojox.math.combinations(n, r)"); + + this.normalizedFunction('toRadix', 'number, baseOut', "if(!baseOut){ baseOut = 10; } if(typeof number == 'string'){ number = parseFloat(number); }return number.toString(baseOut);"); + this.normalizedFunction('toBin', 'number', "return toRadix(number, 2)"); + this.normalizedFunction('toOct', 'number', "return toRadix(number, 8)"); + this.normalizedFunction('toHex', 'number', "return toRadix(number, 16)"); + this.onLoad(); + }, + + onLoad: function(){ + // summary: + // this should be overwritten and become a great place for making user predefined functions + // + }, + Function: function(name, args, body){ + // summary + // create an anonymous function to run the code the parser generates from the user input. + // params + // name: this argument is simply a String that represents the name of the function being evaluated. It can be undefined, but in that case the function is a one time use. + // args: the function arguments (a String) + // body: the function body, also a String + // + return lang.hitch(calcEnv, calcEnv.Function.apply(calcEnv, arguments)); + }, + normalizedFunction: function(name, args, body){ + return lang.hitch(calcEnv, calcEnv.normalizedFunction.apply(calcEnv, arguments)); + }, + deleteFunction: function(name){ + calcEnv[name] = undefined; + delete calcEnv[name]; + }, + eval: function(text){ + // summary + // create an anonymous function to run the code the parser generates from the user input. + // params + // text, type String, is the user input that needs to be parsed + // + return calcEnv.eval.apply(calcEnv, arguments); + }, + destroy: function(){ + this.inherited(arguments); + calcEnv = null; // assist garbage collection + } + }); + + return calc = { + pow: function(/*Number*/ base, /*Number*/ exponent){ + // summary: + // Computes base ^ exponent + // Wrapper to Math.pow(base, exponent) to handle (-27) ^ (1/3) + + function isInt(n){ + return Math.floor(n) == n; + } + + if(base >= 0 || isInt(exponent)){ + return Math.pow(base, exponent); + }else{ // e.g. (1/3) root of -27 = -3 + var inv = 1 / exponent; + // e.g. 1 / (1/3) must be an odd integer + return (isInt(inv) && (inv & 1)) ? -Math.pow(-base, exponent) : NaN; + } + }, + approx: function(/*Number*/ r){ + // summary: + // Return a less exact approximation of r such that approx(r * (1 +- eps)) == approx(r) + if(typeof r == "number"){ + return Math.round(r * magicBigInt) / magicBigInt; + } + return r; + }, + _Executor: Executor + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/calc/_ExecutorIframe.html b/js/dojo-release-1.7.2-src/dojox/calc/_ExecutorIframe.html new file mode 100644 index 0000000..0d2cac5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/_ExecutorIframe.html @@ -0,0 +1,525 @@ + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/calc/resources/Common.css b/js/dojo-release-1.7.2-src/dojox/calc/resources/Common.css new file mode 100644 index 0000000..012a5ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/resources/Common.css @@ -0,0 +1,146 @@ +.dojoxCalcLayout span.dijitButtonNode, +.dojoxCalcLayout span.dijitButtonContents{ + display:block; +} +.dojoxCalc .dojoxCalcLayout .dojoxCalcTextAreaContainer { + padding-left: 0.2em; + padding-right: 0.2em; + #border-right: .3em; +} +.dojoxCalcLayout .dojoxCalcInputContainer .dijitTextBox { + /* IE bug workaround where the input caret is not visible (extends into the table border) */ + position: relative; + border-left: 0 none; + border-right: 0 none; + width:100%; +} +.dojoxCalcLayout .dojoxCalcInputContainer, +.dojoxCalcLayout .dojoxCalcInputContainer .dijitInputField { + padding-left: 0; + padding-right: 0; +} +.dojoxCalcLayout .dojoxCalcInputContainer .dijitInputContainer { + padding-left: 0; + #padding-left: 0.5em; + padding-right: 0.3em; + #padding-right: 0; +} +.dojoxCalcLayout .dojoxCalcInputContainer .dijitInputInner { + text-align: left; + padding-left: 0.2em !important; + padding-right: 0 !important; + #padding-right: 0.3em !important; /* IE workaround to make sure the input caret is visible */ + overflow: hidden; +} +.dojoxCalcMinusButtonContainer { + width: 4em; + min-width: 4em; + padding: 0; +} +.dojoxCalcMinusButtonContainer .dijitButton { + margin: 0.1em; + width: 3.8em; +} +.dojoxCalcMinusButtonContainer .dijitArrowButtonInner { + width:1.3em; +} +.dojoxCalcMinusButtonContainer .dijitButtonNode .dijitButtonContents { + width: 2.1em; + min-width: 2.1em; +} +.dojoxCalcLayout .dojoxCalcMinusButtonContainer .dijitButtonText, +.dojoxCalcLayout .dojoxCalcMinusButtonContainer .dijitButtonNode { + padding-left: 0px; + padding-right: 0px; +} + +.dojoxCalcButtonContainer { + width: 4em; + min-width: 4em; + padding: 0; +} +.dojoxCalcButtonContainer .dijitButton { + margin: 0.1em; + width: 3.8em; +} + +.dojoxCalcLayout .dojoxCalcButtonContainer .dijitButtonText, +.dojoxCalcLayout .dojoxCalcButtonContainer .dijitButtonNode { + padding-left: 0px; + padding-right: 0px; +} +.dojoxCalcLayout { + table-layout:fixed; + border-width: 0; + border-style: none; + width:16.0em; + font:monospace; +} +.dojoxCalc { + border: 0.4em ridge #909090; +} + +.dojoxCalcGrapherLayout span.dijitButtonNode, +.dojoxCalcGrapherLayout span.dijitButtonContents{ + display:block; +} +.dojoxCalcGrapherButtonContainer { + width: 10em; + min-width: 10em; + padding: 0; +} +.dojoxCalcGrapherButton { + display:block; +} +.dojoxCalcGrapherLayout { + table-layout:fixed; + border-width: 0; + border-style: none; + width:20.0em; + font:monospace; +} +.dojoxCalcExpressionBox { + width:15em; +} +.dojoxCalcChartHolder { + position:absolute; + left:36em; + top:5em; +} +.dojoxCalcGraphOptionTable { + width:25em; +} +.dojoxCalcGraphWidth { + width:5em; +} +.dojoxCalcGraphHeight { + width:5em; +} +.dojoxCalcGraphMinX { + width:5em; +} +.dojoxCalcGraphMaxX { + width:5em; +} +.dojoxCalcGraphMinY { + width:5em; +} +.dojoxCalcGraphMaxY { + width:5em; +} +.dojoxCalcGrapherFuncOuterDiv { + width:35em; + height:15em; + overflow-y:scroll; +} +.dojoxCalcGrapherModeTable { + width:10em; +} +.dojoxCalcFunctionModeSelector { + width:5em; +} +.dojoxCalcStatusBox { + border:1px solid; + padding:1px; + display:inline; +} diff --git a/js/dojo-release-1.7.2-src/dojox/calc/resources/GraphPro.css b/js/dojo-release-1.7.2-src/dojox/calc/resources/GraphPro.css new file mode 100644 index 0000000..7d1181d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/resources/GraphPro.css @@ -0,0 +1,7 @@ +/* + Adds cosmetic styling to the dojox.calc.GraphPro widget. Users may swap with a custom theme CSS file. + + NOTES: + --- +*/ +@import url("Common.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/calc/resources/Standard.css b/js/dojo-release-1.7.2-src/dojox/calc/resources/Standard.css new file mode 100644 index 0000000..c4fdd94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/resources/Standard.css @@ -0,0 +1,7 @@ +/* + Adds cosmetic styling to the dojox.calc.Standard widget. Users may swap with a custom theme CSS file. + + NOTES: + --- +*/ +@import url("Common.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/calc/templates/FuncGen.html b/js/dojo-release-1.7.2-src/dojox/calc/templates/FuncGen.html new file mode 100644 index 0000000..dcc883e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/templates/FuncGen.html @@ -0,0 +1,15 @@ +
                          + + +
                          + +
                          + + + + +

                          + +
                          + +
                          diff --git a/js/dojo-release-1.7.2-src/dojox/calc/templates/GraphPro.html b/js/dojo-release-1.7.2-src/dojox/calc/templates/GraphPro.html new file mode 100644 index 0000000..a28b0e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/templates/GraphPro.html @@ -0,0 +1,165 @@ +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + +
                          + + + +
                          + + + +
                          + + + +
                          + + + + + +
                          +
                          + (-) +
                          +
                          +
                          +
                          + + + +
                          + + + +
                          + + + +
                          + + + +
                          + + + +
                          + +
                          diff --git a/js/dojo-release-1.7.2-src/dojox/calc/templates/Grapher.html b/js/dojo-release-1.7.2-src/dojox/calc/templates/Grapher.html new file mode 100644 index 0000000..91fd002 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/templates/Grapher.html @@ -0,0 +1,117 @@ +
                          +
                          +
                          +
                          +
                          Window Options
                          +
                          + + + + + + + + + + + + + + + + + + + + + +
                          + Width: + + + + Height: + + +
                          + X >= + + + + X <= + + +
                          + Y >= + + + + Y <= + + +
                          +
                          +
                          + +
                          + +
                          + +
                          +
                          + +
                          +
                          Add Function
                          +
                          + + + + + + + + + +
                          + Mode: + + + +
                          + +
                          +
                          +
                          +
                          +
                          + + + + + + + + + + + + + +
                          + + + +
                          + + + +
                          + + + +
                          +
                          +
                          diff --git a/js/dojo-release-1.7.2-src/dojox/calc/templates/Standard.html b/js/dojo-release-1.7.2-src/dojox/calc/templates/Standard.html new file mode 100644 index 0000000..87ed826 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/templates/Standard.html @@ -0,0 +1,101 @@ +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + + + +
                          + + + +
                          + + + +
                          + + + + + +
                          +
                          + (-) +
                          +
                          +
                          +
                          + + + +
                          + + + +
                          + +
                          diff --git a/js/dojo-release-1.7.2-src/dojox/calc/tests/test_Executor.html b/js/dojo-release-1.7.2-src/dojox/calc/tests/test_Executor.html new file mode 100644 index 0000000..2043937 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/tests/test_Executor.html @@ -0,0 +1,288 @@ + + + + + Calculator Executor Test + + + + + + + dojox.calc._Executor tests +
                          Loading...
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/calc/tests/test_GraphPro.html b/js/dojo-release-1.7.2-src/dojox/calc/tests/test_GraphPro.html new file mode 100644 index 0000000..52bda2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/tests/test_GraphPro.html @@ -0,0 +1,41 @@ + + + + GraphPro Calculator Test + + + + + + + + +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/calc/tests/test_Standard.html b/js/dojo-release-1.7.2-src/dojox/calc/tests/test_Standard.html new file mode 100644 index 0000000..f722702 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/tests/test_Standard.html @@ -0,0 +1,42 @@ + + + + Standard Calculator Test + + + + + + + + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/calc/toFrac.js b/js/dojo-release-1.7.2-src/dojox/calc/toFrac.js new file mode 100644 index 0000000..8871edc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/calc/toFrac.js @@ -0,0 +1,142 @@ +define([ + "dojo/_base/lang", + "dojox/calc/_Executor" +], function(lang, calc) { + + var multiples; + + function _fracHashInit(){ + var sqrts = [ + 5,6,7,10,11,13,14,15,17,19,21,22,23,26,29, + 30,31,33,34,35,37,38,39,41,42,43,46,47,51,53,55,57,58,59, + 61,62,65,66,67,69,70,71,73,74,77,78,79,82,83,85,86,87,89,91,93,94,95,97 + ]; + multiples = { "1":1, "\u221A(2)":Math.sqrt(2), "\u221A(3)":Math.sqrt(3), "pi":Math.PI }; + // populate the rest of the multiples array + for(var i in sqrts){ + var n = sqrts[i]; + multiples["\u221A("+n+")"] = Math.sqrt(n); + } + multiples["\u221A(pi)"] = Math.sqrt(Math.PI); + } + + function _fracLookup(number){ + function findSimpleFraction(fraction){ + var denom1Low = Math.floor(1 / fraction); + // fraction <= 1/denom1Low + var quotient = calc.approx(1 / denom1Low); + if(quotient == fraction){ return { n:1, d:denom1Low }; } + var denom1High = denom1Low + 1; + // 1/denom1High <= fraction < 1/denom1Low + quotient = calc.approx(1 / denom1High); + if(quotient == fraction){ return { n:1, d:denom1High }; } + if(denom1Low >= 50){ return null; } // only 1's in the numerator beyond this point + // 1/denom1High < fraction < 1/denom1Low + var denom2 = denom1Low + denom1High; + quotient = calc.approx(2 / denom2); + // 1/denom1High < 2/(denom1Low+denom1High) < 1/denom1Low + if(quotient == fraction){ return { n:2, d:denom2 }; } + if(denom1Low >= 34){ return null; } // only 1's and 2's in the numerator beyond this point + var less2 = fraction < quotient; + // if less2 + // 1/denom1High < fraction < 2/(denom1Low+denom1High) + // else + // 2/(denom1Low+denom1High) < fraction < 1/denom1Low + var denom4 = denom2 * 2 + (less2 ? 1 : -1); + quotient = calc.approx(4 / denom4); + // 1/denom1High < 4/(2*denom1Low+2*denom1High+1) < 2/(denom1Low+denom1High) < 4/(2*denom1Low+2*denom1High-1) < 1/denom1Low + if(quotient == fraction){ return { n:4, d:denom4 }; } + var less4 = fraction < quotient; + // we've already checked for 1, 2 and 4, but now see if we need to check for 3 in the numerator + if((less2 && !less4) || (!less2 && less4)){ + var denom3 = (denom2 + denom4) >> 1; + quotient = calc.approx(3 / denom3); + // 1/denom1High < 4/(2*denom1Low+2*denom1High+1) < 3/((3*denom1Low+3*denom1High+1)/2) < 2/(denom1Low+denom1High) < 3/((3*denom1Low+3*denom1High-1)/2) < 4/(2*denom1Low+2*denom1High-1) < 1/denom1Low + if(quotient == fraction){ return { n:3, d:denom3 }; } + } + if(denom1Low >= 20){ return null; } // only 1's, 2's, 3's, and 4's in the numerator beyond this point + // if less2 + // if less4 + // 1/denom1High < fraction < 4/(2*denom1Low+2*denom1High+1) + // else + // 4/(2*denom1Low+2*denom1High+1) < fraction < 2/(denom1Low+denom1High) + // else + // if less4 + // 2/(denom1Low+denom1High) < fraction < 4/(2*denom1Low+2*denom1High-1) + // else + // 4/(2*denom1Low+2*denom1High-1) < fraction < 1/denom1Low + var smallestDenom = denom2 + denom1Low * 2; + var largestDenom = smallestDenom + 2; + for(var numerator = 5; smallestDenom <= 100; numerator++){ // start with 5 in the numerator + smallestDenom += denom1Low; + largestDenom += denom1High; + var startDenom = less2 ? ((largestDenom + smallestDenom + 1) >> 1) : smallestDenom; + var stopDenom = less2 ? largestDenom : ((largestDenom + smallestDenom - 1) >> 1); + startDenom = less4 ? ((startDenom + stopDenom) >> 1) : startDenom; + stopDenom = less4 ? stopDenom : ((startDenom + stopDenom) >> 1); + for(var thisDenom = startDenom; thisDenom <= stopDenom; thisDenom++){ + if(numerator & 1 == 0 && thisDenom & 1 == 0){ continue; } // skip where n and d are both even + quotient = calc.approx(numerator / thisDenom); + if(quotient == fraction){ return { n:numerator, d:thisDenom }; } + if(quotient < fraction){ break; } // stop since the values will just get smaller + } + } + return null; + } + number = Math.abs(number); + for(var mt in multiples){ + var multiple = multiples[mt]; + var simpleFraction = number / multiple; + var wholeNumber = Math.floor(simpleFraction); + simpleFraction = calc.approx(simpleFraction - wholeNumber); + if(simpleFraction == 0){ + return { mt:mt, m:multiple, n:wholeNumber, d:1 }; + }else{ + var a = findSimpleFraction(simpleFraction); + if(!a){ continue; } + return { mt:mt, m:multiple, n:(wholeNumber * a.d + a.n), d:a.d }; + } + } + return null; + } + + // make the hash + _fracHashInit(); + + // add toFrac to the calculator + return lang.mixin(calc, { + toFrac: function(number){// get a string fraction for a decimal with a set range of numbers, based on the hash + var f = _fracLookup(number); + return f ? ((number < 0 ? '-' : '') + (f.m == 1 ? '' : (f.n == 1 ? '' : (f.n + '*'))) + (f.m == 1 ? f.n : f.mt) + ((f.d == 1 ? '' : '/' + f.d))) : number; + //return f ? ((number < 0 ? '-' : '') + (f.m == 1 ? '' : (f.n == 1 ? '' : (f.n + '*'))) + (f.m == 1 ? f.n : f.mt) + '/' + f.d) : number; + }, + pow: function(base, exponent){// pow benefits from toFrac because it can overcome many of the limitations set before the standard Math.pow + // summary: + // Computes base ^ exponent + // Wrapper to Math.pow(base, exponent) to handle (-27) ^ (1/3) + function isInt(n){ + return Math.floor(n) == n; + } + + if(base>0||isInt(exponent)){ + return Math.pow(base, exponent); + }else{ + var f = _fracLookup(exponent); + if(base >= 0){ + return (f && f.m == 1) + ? Math.pow(Math.pow(base, 1 / f.d), exponent < 0 ? -f.n : f.n) // 32 ^ (2/5) is much more accurate if done as (32 ^ (1/5)) ^ 2 + : Math.pow(base, exponent); + }else{ // e.g. (1/3) root of -27 = -3, 1 / exponent must be an odd integer for a negative base + return (f && f.d & 1) ? Math.pow(Math.pow(-Math.pow(-base, 1 / f.d), exponent < 0 ? -f.n : f.n), f.m) : NaN; + } + } + } + }); +/* + function reduceError(number){ + var f = _fracLookup(number); + if(!f){ f = _fracLookup(number); } + return f ? ((number < 0 ? -1 : 1) * f.n * f.m / f.d) : number; + } +*/ +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/BidiSupport.js b/js/dojo-release-1.7.2-src/dojox/charting/BidiSupport.js new file mode 100644 index 0000000..fd99ddd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/BidiSupport.js @@ -0,0 +1,264 @@ +define(["dojo/_base/lang", "dojo/_base/html", "dojo/_base/array", "dojo/_base/sniff", + "dojo/dom","dojo/dom-construct", + "dojox/gfx", "dojox/gfx/_gfxBidiSupport", "./Chart", "./axis2d/common", "dojox/string/BidiEngine", "dojox/lang/functional"], + function(lang, html, arr, has, dom, domConstruct, g, gBidi, Chart, da, BidiEngine, df){ + + var bidiEngine = new BidiEngine(); + + lang.extend(Chart, { + // summary: + // Add support for bidi scripts. + // description: + // Bidi stands for support for languages with a bidirectional script. + // There's a special need for displaying BIDI text in rtl direction + // in ltr GUI, sometimes needed auto support. + // dojox.charting does not support control over base text direction provided in Dojo. + + // textDir: String + // Bi-directional support, the main variable which is responsible for the direction of the text. + // The text direction can be different than the GUI direction by using this parameter. + // Allowed values: + // 1. "ltr" + // 2. "rtl" + // 3. "auto" - contextual the direction of a text defined by first strong letter. + // By default is as the page direction. + textDir:"", + + getTextDir: function(/*String*/text){ + // summary: + // Return direction of the text. + // description: + // If textDir is ltr or rtl returns the value. + // If it's auto, calls to another function that responsible + // for checking the value, and defining the direction. + // text: + // Used in case textDir is "auto", this case the direction is according to the first + // strong (directionally - which direction is strong defined) letter. + // tags: + // protected. + var textDir = this.textDir == "auto" ? bidiEngine.checkContextual(text) : this.textDir; + // providing default value + if(!textDir){ + textDir = html.style(this.node,"direction"); + } + return textDir; + }, + + postscript: function(node,args){ + // summary: + // Kicks off chart instantiation. + // description: + // Used for setting the textDir of the chart. + // tags: + // private + + // validate textDir + var textDir = args ? (args["textDir"] ? validateTextDir(args["textDir"]) : "") : ""; + // if textDir wasn't defined or was defined wrong, apply default value + textDir = textDir ? textDir : html.style(this.node,"direction"); + this.textDir = textDir; + + this.surface.textDir = textDir; + + // two data structures, used for storing data for further enablement to change + // textDir dynamically + this.htmlElementsRegistry = []; + this.truncatedLabelsRegistry = []; + }, + + setTextDir: function(/*String*/ newTextDir, obj){ + // summary: + // Setter for the textDir attribute. + // description: + // Allows dynamically set the textDir, goes over all the text-children and + // updates their base text direction. + // tags: + // public + + if(newTextDir == this.textDir){ + return this; + } + if(validateTextDir(newTextDir) != null){ + this.textDir = newTextDir; + + // set automatically all the gfx objects that were created by this surface + // (groups, text objects) + this.surface.setTextDir(newTextDir); + + // truncated labels that were created with gfx creator need to recalculate dir + // for case like: "111111A" (A stands for bidi character) and the truncation + // is "111..." If the textDir is auto, the display should be: "...111" but in gfx + // case we will get "111...". Because this.surface.setTextDir will calculate the dir of truncated + // label, which value is "111..." but th real is "111111A". + // each time we created a gfx truncated label we stored it in the truncatedLabelsRegistry, so update now + // the registry. + if(this.truncatedLabelsRegistry && newTextDir == "auto"){ + arr.forEach(this.truncatedLabelsRegistry, function(elem){ + var tDir = this.getTextDir(elem["label"]); + if(elem["element"].textDir != tDir){ + elem["element"].setShape({textDir: tDir}); + } + }, this); + } + + // re-render axes with html labels. for recalculation of the labels + // positions etc. + // create array of keys for all the axis in chart + var axesKeyArr = df.keys(this.axes); + if(axesKeyArr.length > 0){ + // iterate over the axes, and for each that have html labels render it. + arr.forEach(axesKeyArr, function(key, index, arr){ + // get the axis + var axis = this.axes[key]; + // if the axis has html labels + if(axis.htmlElements[0]){ + axis.dirty = true; + axis.render(this.dim, this.offsets); + } + },this); + + // recreate title + if(this.title){ + var forceHtmlLabels = (g.renderer == "canvas"), + labelType = forceHtmlLabels || !has("ie") && !has("opera") ? "html" : "gfx", + tsize = g.normalizedLength(g.splitFontString(this.titleFont).size); + // remove the title + domConstruct.destroy(this.chartTitle); + this.chartTitle =null; + // create the new title + this.chartTitle = da.createText[labelType]( + this, + this.surface, + this.dim.width/2, + this.titlePos=="top" ? tsize + this.margins.t : this.dim.height - this.margins.b, + "middle", + this.title, + this.titleFont, + this.titleFontColor + ); + } + }else{ + // case of pies, spiders etc. + arr.forEach(this.htmlElementsRegistry, function(elem, index, arr){ + var tDir = newTextDir == "auto" ? this.getTextDir(elem[4]) : newTextDir; + if(elem[0].children[0] && elem[0].children[0].dir != tDir){ + dom.destroy(elem[0].children[0]); + elem[0].children[0] = da.createText["html"] + (this, this.surface, elem[1], elem[2], elem[3], elem[4], elem[5], elem[6]).children[0]; + } + },this); + } + } + }, + + truncateBidi: function(elem, label, labelType){ + // summary: + // Enables bidi support for truncated labels. + // description: + // Can be two types of labels: html or gfx. + // gfx labels: + // Need to be stored in registry to be used when the textDir will be set dynamically. + // Additional work on truncated labels is needed for case as 111111A (A stands for "bidi" character rtl directioned). + // let say in this case the truncation is "111..." If the textDir is auto, the display should be: "...111" but in gfx + // case we will get "111...". Because this.surface.setTextDir will calculate the dir of truncated + // label, which value is "111..." but th real is "111111A". + // each time we created a gfx truncated label we store it in the truncatedLabelsRegistry. + // html labels: + // no need for repository (stored in another place). Here we only need to update the current dir according to textDir. + // tags: + // private + + if(labelType == "gfx"){ + // store truncated gfx labels in the data structure. + this.truncatedLabelsRegistry.push({element: elem, label: label}); + if(this.textDir == "auto"){ + elem.setShape({textDir: this.getTextDir(label)}); + } + } + if(labelType == "html" && this.textDir == "auto"){ + elem.children[0].dir = this.getTextDir(label); + } + } + }); + + var extendMethod = function(obj, method, bundleByPrototype, before, after){ + // Some helper function. Used for extending method of obj. + // obj: Object + // The obj we overriding it's method. + // method: String + // The method that is extended, the original method is called before or after + // functions that passed to extendMethod. + // bundleByPrototype: boolean + // There's two methods to extend, using prototype or not. + // before: function + // If defined this function will be executed before the original method. + // after: function + // If defined this function will be executed after the original method. + if(bundleByPrototype){ + var old = obj.prototype[method]; + obj.prototype[method] = + function(){ + var rBefore; + if (before){ + rBefore = before.apply(this, arguments); + } + var r = old.apply(this, rBefore); + if (after){ + r = after.call(this, r, arguments); + } + return r; + }; + }else{ + var old = lang.clone(obj[method]); + obj[method] = + function(){ + var rBefore; + if (before){ + rBefore = before.apply(this, arguments); + } + var r = old.apply(this, arguments); + if (after){ + after(r, arguments); + } + return r; + }; + } + }; + + var labelPreprocess = function(elem, chart, label, truncatedLabel, font, elemType){ + // aditional preprocessing of the labels, needed for rtl base text direction in LTR + // GUI, or for ltr base text direction for RTL GUI. + + var isChartDirectionRtl = (html.style(chart.node,"direction") == "rtl"); + var isBaseTextDirRtl = (chart.getTextDir(label) == "rtl"); + + if(isBaseTextDirRtl && !isChartDirectionRtl){ + label = "" + label +""; + } + if(!isBaseTextDirRtl && isChartDirectionRtl){ + label = "" + label +""; + } + + return arguments; + }; + + // connect labelPreprocess to run before labelTooltip. + // patch it only is available + if(dojox.charting.axis2d && dojox.charting.axis2d.Default){ + extendMethod(dojox.charting.axis2d.Default,"labelTooltip",true, labelPreprocess, null); + //extendMethod(dijit,"showTooltip",false, labelPreprocess, null); + } + + function htmlCreateText(r, agumentsArr){ + // function to register HTML elements that created by html.createText, this array + // needed for allowing to change textDir dynamically. + agumentsArr[0].htmlElementsRegistry.push([r, agumentsArr[2], agumentsArr[3], agumentsArr[4], agumentsArr[5], agumentsArr[6], agumentsArr[7]]); + } + + extendMethod(da.createText,"html", false, null, htmlCreateText); + + function validateTextDir(textDir){ + return /^(ltr|rtl|auto)$/.test(textDir) ? textDir : null; + } + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/Chart.js b/js/dojo-release-1.7.2-src/dojox/charting/Chart.js new file mode 100644 index 0000000..afe0c4b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/Chart.js @@ -0,0 +1,1129 @@ +define(["dojo/_base/lang", "dojo/_base/array","dojo/_base/declare", "dojo/_base/html", + "dojo/dom", "dojo/dom-geometry", "dojo/dom-construct","dojo/_base/Color", "dojo/_base/sniff", + "./Element", "./Theme", "./Series", "./axis2d/common", + "dojox/gfx", "dojox/lang/functional", "dojox/lang/functional/fold", "dojox/lang/functional/reversed"], + function(lang, arr, declare, html, + dom, domGeom, domConstruct, Color, has, + Element, Theme, Series, common, + g, func, funcFold, funcReversed){ + /*===== + dojox.charting.__ChartCtorArgs = function(margins, stroke, fill, delayInMs){ + // summary: + // The keyword arguments that can be passed in a Chart constructor. + // + // margins: Object? + // Optional margins for the chart, in the form of { l, t, r, b}. + // stroke: dojox.gfx.Stroke? + // An optional outline/stroke for the chart. + // fill: dojox.gfx.Fill? + // An optional fill for the chart. + // delayInMs: Number + // Delay in ms for delayedRender(). Default: 200. + this.margins = margins; + this.stroke = stroke; + this.fill = fill; + this.delayInMs = delayInMs; + } + =====*/ + var dc = dojox.charting, + clear = func.lambda("item.clear()"), + purge = func.lambda("item.purgeGroup()"), + destroy = func.lambda("item.destroy()"), + makeClean = func.lambda("item.dirty = false"), + makeDirty = func.lambda("item.dirty = true"), + getName = func.lambda("item.name"); + + declare("dojox.charting.Chart", null, { + // summary: + // The main chart object in dojox.charting. This will create a two dimensional + // chart based on dojox.gfx. + // + // description: + // dojox.charting.Chart is the primary object used for any kind of charts. It + // is simple to create--just pass it a node reference, which is used as the + // container for the chart--and a set of optional keyword arguments and go. + // + // Note that like most of dojox.gfx, most of dojox.charting.Chart's methods are + // designed to return a reference to the chart itself, to allow for functional + // chaining. This makes defining everything on a Chart very easy to do. + // + // example: + // Create an area chart, with smoothing. + // | new dojox.charting.Chart(node)) + // | .addPlot("default", { type: "Areas", tension: "X" }) + // | .setTheme(dojox.charting.themes.Shrooms) + // | .addSeries("Series A", [1, 2, 0.5, 1.5, 1, 2.8, 0.4]) + // | .addSeries("Series B", [2.6, 1.8, 2, 1, 1.4, 0.7, 2]) + // | .addSeries("Series C", [6.3, 1.8, 3, 0.5, 4.4, 2.7, 2]) + // | .render(); + // + // example: + // The form of data in a data series can take a number of forms: a simple array, + // an array of objects {x,y}, or something custom (as determined by the plot). + // Here's an example of a Candlestick chart, which expects an object of + // { open, high, low, close }. + // | new dojox.charting.Chart(node)) + // | .addPlot("default", {type: "Candlesticks", gap: 1}) + // | .addAxis("x", {fixLower: "major", fixUpper: "major", includeZero: true}) + // | .addAxis("y", {vertical: true, fixLower: "major", fixUpper: "major", natural: true}) + // | .addSeries("Series A", [ + // | { open: 20, close: 16, high: 22, low: 8 }, + // | { open: 16, close: 22, high: 26, low: 6, mid: 18 }, + // | { open: 22, close: 18, high: 22, low: 11, mid: 21 }, + // | { open: 18, close: 29, high: 32, low: 14, mid: 27 }, + // | { open: 29, close: 24, high: 29, low: 13, mid: 27 }, + // | { open: 24, close: 8, high: 24, low: 5 }, + // | { open: 8, close: 16, high: 22, low: 2 }, + // | { open: 16, close: 12, high: 19, low: 7 }, + // | { open: 12, close: 20, high: 22, low: 8 }, + // | { open: 20, close: 16, high: 22, low: 8 }, + // | { open: 16, close: 22, high: 26, low: 6, mid: 18 }, + // | { open: 22, close: 18, high: 22, low: 11, mid: 21 }, + // | { open: 18, close: 29, high: 32, low: 14, mid: 27 }, + // | { open: 29, close: 24, high: 29, low: 13, mid: 27 }, + // | { open: 24, close: 8, high: 24, low: 5 }, + // | { open: 8, close: 16, high: 22, low: 2 }, + // | { open: 16, close: 12, high: 19, low: 7 }, + // | { open: 12, close: 20, high: 22, low: 8 }, + // | { open: 20, close: 16, high: 22, low: 8 }, + // | { open: 16, close: 22, high: 26, low: 6 }, + // | { open: 22, close: 18, high: 22, low: 11 }, + // | { open: 18, close: 29, high: 32, low: 14 }, + // | { open: 29, close: 24, high: 29, low: 13 }, + // | { open: 24, close: 8, high: 24, low: 5 }, + // | { open: 8, close: 16, high: 22, low: 2 }, + // | { open: 16, close: 12, high: 19, low: 7 }, + // | { open: 12, close: 20, high: 22, low: 8 }, + // | { open: 20, close: 16, high: 22, low: 8 } + // | ], + // | { stroke: { color: "green" }, fill: "lightgreen" } + // | ) + // | .render(); + + // theme: dojox.charting.Theme? + // An optional theme to use for styling the chart. + // axes: dojox.charting.Axis{}? + // A map of axes for use in plotting a chart. + // stack: dojox.charting.plot2d.Base[] + // A stack of plotters. + // plots: dojox.charting.plot2d.Base{} + // A map of plotter indices + // series: dojox.charting.Series[] + // The stack of data runs used to create plots. + // runs: dojox.charting.Series{} + // A map of series indices + // margins: Object? + // The margins around the chart. Default is { l:10, t:10, r:10, b:10 }. + // stroke: dojox.gfx.Stroke? + // The outline of the chart (stroke in vector graphics terms). + // fill: dojox.gfx.Fill? + // The color for the chart. + // node: DOMNode + // The container node passed to the constructor. + // surface: dojox.gfx.Surface + // The main graphics surface upon which a chart is drawn. + // dirty: Boolean + // A boolean flag indicating whether or not the chart needs to be updated/re-rendered. + // coords: Object + // The coordinates on a page of the containing node, as returned from dojo.coords. + + constructor: function(/* DOMNode */node, /* dojox.charting.__ChartCtorArgs? */kwArgs){ + // summary: + // The constructor for a new Chart. Initializes all parameters used for a chart. + // returns: dojox.charting.Chart + // The newly created chart. + + // initialize parameters + if(!kwArgs){ kwArgs = {}; } + this.margins = kwArgs.margins ? kwArgs.margins : {l: 10, t: 10, r: 10, b: 10}; + this.stroke = kwArgs.stroke; + this.fill = kwArgs.fill; + this.delayInMs = kwArgs.delayInMs || 200; + this.title = kwArgs.title; + this.titleGap = kwArgs.titleGap; + this.titlePos = kwArgs.titlePos; + this.titleFont = kwArgs.titleFont; + this.titleFontColor = kwArgs.titleFontColor; + this.chartTitle = null; + + // default initialization + this.theme = null; + this.axes = {}; // map of axes + this.stack = []; // stack of plotters + this.plots = {}; // map of plotter indices + this.series = []; // stack of data runs + this.runs = {}; // map of data run indices + this.dirty = true; + this.coords = null; + + // create a surface + this.node = dom.byId(node); + var box = domGeom.getMarginBox(node); + this.surface = g.createSurface(this.node, box.w || 400, box.h || 300); + }, + destroy: function(){ + // summary: + // Cleanup when a chart is to be destroyed. + // returns: void + arr.forEach(this.series, destroy); + arr.forEach(this.stack, destroy); + func.forIn(this.axes, destroy); + if(this.chartTitle && this.chartTitle.tagName){ + // destroy title if it is a DOM node + domConstruct.destroy(this.chartTitle); + } + this.surface.destroy(); + }, + getCoords: function(){ + // summary: + // Get the coordinates and dimensions of the containing DOMNode, as + // returned by dojo.coords. + // returns: Object + // The resulting coordinates of the chart. See dojo.coords for details. + return html.coords(this.node, true); // Object + }, + setTheme: function(theme){ + // summary: + // Set a theme of the chart. + // theme: dojox.charting.Theme + // The theme to be used for visual rendering. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + this.theme = theme.clone(); + this.dirty = true; + return this; // dojox.charting.Chart + }, + addAxis: function(name, kwArgs){ + // summary: + // Add an axis to the chart, for rendering. + // name: String + // The name of the axis. + // kwArgs: dojox.charting.axis2d.__AxisCtorArgs? + // An optional keyword arguments object for use in defining details of an axis. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + var axis, axisType = kwArgs && kwArgs.type || "Default"; + if(typeof axisType == "string"){ + if(!dc.axis2d || !dc.axis2d[axisType]){ + throw Error("Can't find axis: " + axisType + " - Check " + "require() dependencies."); + } + axis = new dc.axis2d[axisType](this, kwArgs); + }else{ + axis = new axisType(this, kwArgs); + } + axis.name = name; + axis.dirty = true; + if(name in this.axes){ + this.axes[name].destroy(); + } + this.axes[name] = axis; + this.dirty = true; + return this; // dojox.charting.Chart + }, + getAxis: function(name){ + // summary: + // Get the given axis, by name. + // name: String + // The name the axis was defined by. + // returns: dojox.charting.axis2d.Default + // The axis as stored in the chart's axis map. + return this.axes[name]; // dojox.charting.axis2d.Default + }, + removeAxis: function(name){ + // summary: + // Remove the axis that was defined using name. + // name: String + // The axis name, as defined in addAxis. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.axes){ + // destroy the axis + this.axes[name].destroy(); + delete this.axes[name]; + // mark the chart as dirty + this.dirty = true; + } + return this; // dojox.charting.Chart + }, + addPlot: function(name, kwArgs){ + // summary: + // Add a new plot to the chart, defined by name and using the optional keyword arguments object. + // Note that dojox.charting assumes the main plot to be called "default"; if you do not have + // a plot called "default" and attempt to add data series to the chart without specifying the + // plot to be rendered on, you WILL get errors. + // name: String + // The name of the plot to be added to the chart. If you only plan on using one plot, call it "default". + // kwArgs: dojox.charting.plot2d.__PlotCtorArgs + // An object with optional parameters for the plot in question. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + var plot, plotType = kwArgs && kwArgs.type || "Default"; + if(typeof plotType == "string"){ + if(!dc.plot2d || !dc.plot2d[plotType]){ + throw Error("Can't find plot: " + plotType + " - didn't you forget to dojo" + ".require() it?"); + } + plot = new dc.plot2d[plotType](this, kwArgs); + }else{ + plot = new plotType(this, kwArgs); + } + plot.name = name; + plot.dirty = true; + if(name in this.plots){ + this.stack[this.plots[name]].destroy(); + this.stack[this.plots[name]] = plot; + }else{ + this.plots[name] = this.stack.length; + this.stack.push(plot); + } + this.dirty = true; + return this; // dojox.charting.Chart + }, + getPlot: function(name){ + // summary: + // Get the given plot, by name. + // name: String + // The name the plot was defined by. + // returns: dojox.charting.plot2d.Base + // The plot. + return this.stack[this.plots[name]]; + }, + removePlot: function(name){ + // summary: + // Remove the plot defined using name from the chart's plot stack. + // name: String + // The name of the plot as defined using addPlot. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.plots){ + // get the index and remove the name + var index = this.plots[name]; + delete this.plots[name]; + // destroy the plot + this.stack[index].destroy(); + // remove the plot from the stack + this.stack.splice(index, 1); + // update indices to reflect the shift + func.forIn(this.plots, function(idx, name, plots){ + if(idx > index){ + plots[name] = idx - 1; + } + }); + // remove all related series + var ns = arr.filter(this.series, function(run){ return run.plot != name; }); + if(ns.length < this.series.length){ + // kill all removed series + arr.forEach(this.series, function(run){ + if(run.plot == name){ + run.destroy(); + } + }); + // rebuild all necessary data structures + this.runs = {}; + arr.forEach(ns, function(run, index){ + this.runs[run.plot] = index; + }, this); + this.series = ns; + } + // mark the chart as dirty + this.dirty = true; + } + return this; // dojox.charting.Chart + }, + getPlotOrder: function(){ + // summary: + // Returns an array of plot names in the current order + // (the top-most plot is the first). + // returns: Array + return func.map(this.stack, getName); // Array + }, + setPlotOrder: function(newOrder){ + // summary: + // Sets new order of plots. newOrder cannot add or remove + // plots. Wrong names, or dups are ignored. + // newOrder: Array: + // Array of plot names compatible with getPlotOrder(). + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + var names = {}, + order = func.filter(newOrder, function(name){ + if(!(name in this.plots) || (name in names)){ + return false; + } + names[name] = 1; + return true; + }, this); + if(order.length < this.stack.length){ + func.forEach(this.stack, function(plot){ + var name = plot.name; + if(!(name in names)){ + order.push(name); + } + }); + } + var newStack = func.map(order, function(name){ + return this.stack[this.plots[name]]; + }, this); + func.forEach(newStack, function(plot, i){ + this.plots[plot.name] = i; + }, this); + this.stack = newStack; + this.dirty = true; + return this; // dojox.charting.Chart + }, + movePlotToFront: function(name){ + // summary: + // Moves a given plot to front. + // name: String: + // Plot's name to move. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.plots){ + var index = this.plots[name]; + if(index){ + var newOrder = this.getPlotOrder(); + newOrder.splice(index, 1); + newOrder.unshift(name); + return this.setPlotOrder(newOrder); // dojox.charting.Chart + } + } + return this; // dojox.charting.Chart + }, + movePlotToBack: function(name){ + // summary: + // Moves a given plot to back. + // name: String: + // Plot's name to move. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.plots){ + var index = this.plots[name]; + if(index < this.stack.length - 1){ + var newOrder = this.getPlotOrder(); + newOrder.splice(index, 1); + newOrder.push(name); + return this.setPlotOrder(newOrder); // dojox.charting.Chart + } + } + return this; // dojox.charting.Chart + }, + addSeries: function(name, data, kwArgs){ + // summary: + // Add a data series to the chart for rendering. + // name: String: + // The name of the data series to be plotted. + // data: Array|Object: + // The array of data points (either numbers or objects) that + // represents the data to be drawn. Or it can be an object. In + // the latter case, it should have a property "data" (an array), + // destroy(), and setSeriesObject(). + // kwArgs: dojox.charting.__SeriesCtorArgs?: + // An optional keyword arguments object that will be mixed into + // the resultant series object. + // returns: dojox.charting.Chart: + // A reference to the current chart for functional chaining. + var run = new Series(this, data, kwArgs); + run.name = name; + if(name in this.runs){ + this.series[this.runs[name]].destroy(); + this.series[this.runs[name]] = run; + }else{ + this.runs[name] = this.series.length; + this.series.push(run); + } + this.dirty = true; + // fix min/max + if(!("ymin" in run) && "min" in run){ run.ymin = run.min; } + if(!("ymax" in run) && "max" in run){ run.ymax = run.max; } + return this; // dojox.charting.Chart + }, + getSeries: function(name){ + // summary: + // Get the given series, by name. + // name: String + // The name the series was defined by. + // returns: dojox.charting.Series + // The series. + return this.series[this.runs[name]]; + }, + removeSeries: function(name){ + // summary: + // Remove the series defined by name from the chart. + // name: String + // The name of the series as defined by addSeries. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.runs){ + // get the index and remove the name + var index = this.runs[name]; + delete this.runs[name]; + // destroy the run + this.series[index].destroy(); + // remove the run from the stack of series + this.series.splice(index, 1); + // update indices to reflect the shift + func.forIn(this.runs, function(idx, name, runs){ + if(idx > index){ + runs[name] = idx - 1; + } + }); + this.dirty = true; + } + return this; // dojox.charting.Chart + }, + updateSeries: function(name, data){ + // summary: + // Update the given series with a new set of data points. + // name: String + // The name of the series as defined in addSeries. + // data: Array|Object: + // The array of data points (either numbers or objects) that + // represents the data to be drawn. Or it can be an object. In + // the latter case, it should have a property "data" (an array), + // destroy(), and setSeriesObject(). + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.runs){ + var run = this.series[this.runs[name]]; + run.update(data); + this._invalidateDependentPlots(run.plot, false); + this._invalidateDependentPlots(run.plot, true); + } + return this; // dojox.charting.Chart + }, + getSeriesOrder: function(plotName){ + // summary: + // Returns an array of series names in the current order + // (the top-most series is the first) within a plot. + // plotName: String: + // Plot's name. + // returns: Array + return func.map(func.filter(this.series, function(run){ + return run.plot == plotName; + }), getName); + }, + setSeriesOrder: function(newOrder){ + // summary: + // Sets new order of series within a plot. newOrder cannot add + // or remove series. Wrong names, or dups are ignored. + // newOrder: Array: + // Array of series names compatible with getPlotOrder(). All + // series should belong to the same plot. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + var plotName, names = {}, + order = func.filter(newOrder, function(name){ + if(!(name in this.runs) || (name in names)){ + return false; + } + var run = this.series[this.runs[name]]; + if(plotName){ + if(run.plot != plotName){ + return false; + } + }else{ + plotName = run.plot; + } + names[name] = 1; + return true; + }, this); + func.forEach(this.series, function(run){ + var name = run.name; + if(!(name in names) && run.plot == plotName){ + order.push(name); + } + }); + var newSeries = func.map(order, function(name){ + return this.series[this.runs[name]]; + }, this); + this.series = newSeries.concat(func.filter(this.series, function(run){ + return run.plot != plotName; + })); + func.forEach(this.series, function(run, i){ + this.runs[run.name] = i; + }, this); + this.dirty = true; + return this; // dojox.charting.Chart + }, + moveSeriesToFront: function(name){ + // summary: + // Moves a given series to front of a plot. + // name: String: + // Series' name to move. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.runs){ + var index = this.runs[name], + newOrder = this.getSeriesOrder(this.series[index].plot); + if(name != newOrder[0]){ + newOrder.splice(index, 1); + newOrder.unshift(name); + return this.setSeriesOrder(newOrder); // dojox.charting.Chart + } + } + return this; // dojox.charting.Chart + }, + moveSeriesToBack: function(name){ + // summary: + // Moves a given series to back of a plot. + // name: String: + // Series' name to move. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(name in this.runs){ + var index = this.runs[name], + newOrder = this.getSeriesOrder(this.series[index].plot); + if(name != newOrder[newOrder.length - 1]){ + newOrder.splice(index, 1); + newOrder.push(name); + return this.setSeriesOrder(newOrder); // dojox.charting.Chart + } + } + return this; // dojox.charting.Chart + }, + resize: function(width, height){ + // summary: + // Resize the chart to the dimensions of width and height. + // description: + // Resize the chart and its surface to the width and height dimensions. + // If no width/height or box is provided, resize the surface to the marginBox of the chart. + // width: Number + // The new width of the chart. + // height: Number + // The new height of the chart. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + var box; + switch(arguments.length){ + // case 0, do not resize the div, just the surface + case 1: + // argument, override node box + box = lang.mixin({}, width); + domGeom.setMarginBox(this.node, box); + break; + case 2: + box = {w: width, h: height}; + // argument, override node box + domGeom.setMarginBox(this.node, box); + break; + } + // in all cases take back the computed box + box = domGeom.getMarginBox(this.node); + var d = this.surface.getDimensions(); + if(d.width != box.w || d.height != box.h){ + // and set it on the surface + this.surface.setDimensions(box.w, box.h); + this.dirty = true; + return this.render(); // dojox.charting.Chart + }else{ + return this; + } + }, + getGeometry: function(){ + // summary: + // Returns a map of information about all axes in a chart and what they represent + // in terms of scaling (see dojox.charting.axis2d.Default.getScaler). + // returns: Object + // An map of geometry objects, a one-to-one mapping of axes. + var ret = {}; + func.forIn(this.axes, function(axis){ + if(axis.initialized()){ + ret[axis.name] = { + name: axis.name, + vertical: axis.vertical, + scaler: axis.scaler, + ticks: axis.ticks + }; + } + }); + return ret; // Object + }, + setAxisWindow: function(name, scale, offset, zoom){ + // summary: + // Zooms an axis and all dependent plots. Can be used to zoom in 1D. + // name: String + // The name of the axis as defined by addAxis. + // scale: Number + // The scale on the target axis. + // offset: Number + // Any offest, as measured by axis tick + // zoom: Boolean|Object? + // The chart zooming animation trigger. This is null by default, + // e.g. {duration: 1200}, or just set true. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + var axis = this.axes[name]; + if(axis){ + axis.setWindow(scale, offset); + arr.forEach(this.stack,function(plot){ + if(plot.hAxis == name || plot.vAxis == name){ + plot.zoom = zoom; + } + }); + } + return this; // dojox.charting.Chart + }, + setWindow: function(sx, sy, dx, dy, zoom){ + // summary: + // Zooms in or out any plots in two dimensions. + // sx: Number + // The scale for the x axis. + // sy: Number + // The scale for the y axis. + // dx: Number + // The pixel offset on the x axis. + // dy: Number + // The pixel offset on the y axis. + // zoom: Boolean|Object? + // The chart zooming animation trigger. This is null by default, + // e.g. {duration: 1200}, or just set true. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(!("plotArea" in this)){ + this.calculateGeometry(); + } + func.forIn(this.axes, function(axis){ + var scale, offset, bounds = axis.getScaler().bounds, + s = bounds.span / (bounds.upper - bounds.lower); + if(axis.vertical){ + scale = sy; + offset = dy / s / scale; + }else{ + scale = sx; + offset = dx / s / scale; + } + axis.setWindow(scale, offset); + }); + arr.forEach(this.stack, function(plot){ plot.zoom = zoom; }); + return this; // dojox.charting.Chart + }, + zoomIn: function(name, range){ + // summary: + // Zoom the chart to a specific range on one axis. This calls render() + // directly as a convenience method. + // name: String + // The name of the axis as defined by addAxis. + // range: Array + // The end points of the zoom range, measured in axis ticks. + var axis = this.axes[name]; + if(axis){ + var scale, offset, bounds = axis.getScaler().bounds; + var lower = Math.min(range[0],range[1]); + var upper = Math.max(range[0],range[1]); + lower = range[0] < bounds.lower ? bounds.lower : lower; + upper = range[1] > bounds.upper ? bounds.upper : upper; + scale = (bounds.upper - bounds.lower) / (upper - lower); + offset = lower - bounds.lower; + this.setAxisWindow(name, scale, offset); + this.render(); + } + }, + calculateGeometry: function(){ + // summary: + // Calculate the geometry of the chart based on the defined axes of + // a chart. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(this.dirty){ + return this.fullGeometry(); + } + + // calculate geometry + var dirty = arr.filter(this.stack, function(plot){ + return plot.dirty || + (plot.hAxis && this.axes[plot.hAxis].dirty) || + (plot.vAxis && this.axes[plot.vAxis].dirty); + }, this); + calculateAxes(dirty, this.plotArea); + + return this; // dojox.charting.Chart + }, + fullGeometry: function(){ + // summary: + // Calculate the full geometry of the chart. This includes passing + // over all major elements of a chart (plots, axes, series, container) + // in order to ensure proper rendering. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + this._makeDirty(); + + // clear old values + arr.forEach(this.stack, clear); + + // rebuild new connections, and add defaults + + // set up a theme + if(!this.theme){ + this.setTheme(new Theme(dojox.charting._def)); + } + + // assign series + arr.forEach(this.series, function(run){ + if(!(run.plot in this.plots)){ + if(!dc.plot2d || !dc.plot2d.Default){ + throw Error("Can't find plot: Default - didn't you forget to dojo" + ".require() it?"); + } + var plot = new dc.plot2d.Default(this, {}); + plot.name = run.plot; + this.plots[run.plot] = this.stack.length; + this.stack.push(plot); + } + this.stack[this.plots[run.plot]].addSeries(run); + }, this); + // assign axes + arr.forEach(this.stack, function(plot){ + if(plot.hAxis){ + plot.setAxis(this.axes[plot.hAxis]); + } + if(plot.vAxis){ + plot.setAxis(this.axes[plot.vAxis]); + } + }, this); + + // calculate geometry + + // 1st pass + var dim = this.dim = this.surface.getDimensions(); + dim.width = g.normalizedLength(dim.width); + dim.height = g.normalizedLength(dim.height); + func.forIn(this.axes, clear); + calculateAxes(this.stack, dim); + + // assumption: we don't have stacked axes yet + var offsets = this.offsets = { l: 0, r: 0, t: 0, b: 0 }; + func.forIn(this.axes, function(axis){ + func.forIn(axis.getOffsets(), function(o, i){ offsets[i] += o; }); + }); + // add title area + if(this.title){ + this.titleGap = (this.titleGap==0) ? 0 : this.titleGap || this.theme.chart.titleGap || 20; + this.titlePos = this.titlePos || this.theme.chart.titlePos || "top"; + this.titleFont = this.titleFont || this.theme.chart.titleFont; + this.titleFontColor = this.titleFontColor || this.theme.chart.titleFontColor || "black"; + var tsize = g.normalizedLength(g.splitFontString(this.titleFont).size); + offsets[this.titlePos=="top" ? "t":"b"] += (tsize + this.titleGap); + } + // add margins + func.forIn(this.margins, function(o, i){ offsets[i] += o; }); + + // 2nd pass with realistic dimensions + this.plotArea = { + width: dim.width - offsets.l - offsets.r, + height: dim.height - offsets.t - offsets.b + }; + func.forIn(this.axes, clear); + calculateAxes(this.stack, this.plotArea); + + return this; // dojox.charting.Chart + }, + render: function(){ + // summary: + // Render the chart according to the current information defined. This should + // be the last call made when defining/creating a chart, or if data within the + // chart has been changed. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(this.theme){ + this.theme.clear(); + } + + if(this.dirty){ + return this.fullRender(); + } + + this.calculateGeometry(); + + // go over the stack backwards + func.forEachRev(this.stack, function(plot){ plot.render(this.dim, this.offsets); }, this); + + // go over axes + func.forIn(this.axes, function(axis){ axis.render(this.dim, this.offsets); }, this); + + this._makeClean(); + + // BEGIN FOR HTML CANVAS + if(this.surface.render){ this.surface.render(); }; + // END FOR HTML CANVAS + + return this; // dojox.charting.Chart + }, + fullRender: function(){ + // summary: + // Force a full rendering of the chart, including full resets on the chart itself. + // You should not call this method directly unless absolutely necessary. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + + // calculate geometry + this.fullGeometry(); + var offsets = this.offsets, dim = this.dim, rect; + + // get required colors + //var requiredColors = func.foldl(this.stack, "z + plot.getRequiredColors()", 0); + //this.theme.defineColors({num: requiredColors, cache: false}); + + // clear old shapes + arr.forEach(this.series, purge); + func.forIn(this.axes, purge); + arr.forEach(this.stack, purge); + if(this.chartTitle && this.chartTitle.tagName){ + // destroy title if it is a DOM node + domConstruct.destroy(this.chartTitle); + } + this.surface.clear(); + this.chartTitle = null; + + // generate shapes + + // draw a plot background + var t = this.theme, + fill = t.plotarea && t.plotarea.fill, + stroke = t.plotarea && t.plotarea.stroke, + // size might be neg if offsets are bigger that chart size this happens quite often at + // initialization time if the chart widget is used in a BorderContainer + // this will fail on IE/VML + w = Math.max(0, dim.width - offsets.l - offsets.r), + h = Math.max(0, dim.height - offsets.t - offsets.b), + rect = { + x: offsets.l - 1, y: offsets.t - 1, + width: w + 2, + height: h + 2 + }; + if(fill){ + fill = Element.prototype._shapeFill(Element.prototype._plotFill(fill, dim, offsets), rect); + this.surface.createRect(rect).setFill(fill); + } + if(stroke){ + this.surface.createRect({ + x: offsets.l, y: offsets.t, + width: w + 1, + height: h + 1 + }).setStroke(stroke); + } + + // go over the stack backwards + func.foldr(this.stack, function(z, plot){ return plot.render(dim, offsets), 0; }, 0); + + // pseudo-clipping: matting + fill = this.fill !== undefined ? this.fill : (t.chart && t.chart.fill); + stroke = this.stroke !== undefined ? this.stroke : (t.chart && t.chart.stroke); + + // TRT: support for "inherit" as a named value in a theme. + if(fill == "inherit"){ + // find the background color of the nearest ancestor node, and use that explicitly. + var node = this.node, fill = new Color(html.style(node, "backgroundColor")); + while(fill.a==0 && node!=document.documentElement){ + fill = new Color(html.style(node, "backgroundColor")); + node = node.parentNode; + } + } + + if(fill){ + fill = Element.prototype._plotFill(fill, dim, offsets); + if(offsets.l){ // left + rect = { + width: offsets.l, + height: dim.height + 1 + }; + this.surface.createRect(rect).setFill(Element.prototype._shapeFill(fill, rect)); + } + if(offsets.r){ // right + rect = { + x: dim.width - offsets.r, + width: offsets.r + 1, + height: dim.height + 2 + }; + this.surface.createRect(rect).setFill(Element.prototype._shapeFill(fill, rect)); + } + if(offsets.t){ // top + rect = { + width: dim.width + 1, + height: offsets.t + }; + this.surface.createRect(rect).setFill(Element.prototype._shapeFill(fill, rect)); + } + if(offsets.b){ // bottom + rect = { + y: dim.height - offsets.b, + width: dim.width + 1, + height: offsets.b + 2 + }; + this.surface.createRect(rect).setFill(Element.prototype._shapeFill(fill, rect)); + } + } + if(stroke){ + this.surface.createRect({ + width: dim.width - 1, + height: dim.height - 1 + }).setStroke(stroke); + } + + //create title: Whether to make chart title as a widget which extends dojox.charting.Element? + if(this.title){ + var forceHtmlLabels = (g.renderer == "canvas"), + labelType = forceHtmlLabels || !has("ie") && !has("opera") ? "html" : "gfx", + tsize = g.normalizedLength(g.splitFontString(this.titleFont).size); + this.chartTitle = common.createText[labelType]( + this, + this.surface, + dim.width/2, + this.titlePos=="top" ? tsize + this.margins.t : dim.height - this.margins.b, + "middle", + this.title, + this.titleFont, + this.titleFontColor + ); + } + + // go over axes + func.forIn(this.axes, function(axis){ axis.render(dim, offsets); }); + + this._makeClean(); + + // BEGIN FOR HTML CANVAS + if(this.surface.render){ this.surface.render(); }; + // END FOR HTML CANVAS + + return this; // dojox.charting.Chart + }, + delayedRender: function(){ + // summary: + // Delayed render, which is used to collect multiple updates + // within a delayInMs time window. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + + if(!this._delayedRenderHandle){ + this._delayedRenderHandle = setTimeout( + lang.hitch(this, function(){ + clearTimeout(this._delayedRenderHandle); + this._delayedRenderHandle = null; + this.render(); + }), + this.delayInMs + ); + } + + return this; // dojox.charting.Chart + }, + connectToPlot: function(name, object, method){ + // summary: + // A convenience method to connect a function to a plot. + // name: String + // The name of the plot as defined by addPlot. + // object: Object + // The object to be connected. + // method: Function + // The function to be executed. + // returns: Array + // A handle to the connection, as defined by dojo.connect (see dojo.connect). + return name in this.plots ? this.stack[this.plots[name]].connect(object, method) : null; // Array + }, + fireEvent: function(seriesName, eventName, index){ + // summary: + // Fires a synthetic event for a series item. + // seriesName: String: + // Series name. + // eventName: String: + // Event name to simulate: onmouseover, onmouseout, onclick. + // index: Number: + // Valid data value index for the event. + // returns: dojox.charting.Chart + // A reference to the current chart for functional chaining. + if(seriesName in this.runs){ + var plotName = this.series[this.runs[seriesName]].plot; + if(plotName in this.plots){ + var plot = this.stack[this.plots[plotName]]; + if(plot){ + plot.fireEvent(seriesName, eventName, index); + } + } + } + return this; // dojox.charting.Chart + }, + _makeClean: function(){ + // reset dirty flags + arr.forEach(this.axes, makeClean); + arr.forEach(this.stack, makeClean); + arr.forEach(this.series, makeClean); + this.dirty = false; + }, + _makeDirty: function(){ + // reset dirty flags + arr.forEach(this.axes, makeDirty); + arr.forEach(this.stack, makeDirty); + arr.forEach(this.series, makeDirty); + this.dirty = true; + }, + _invalidateDependentPlots: function(plotName, /* Boolean */ verticalAxis){ + if(plotName in this.plots){ + var plot = this.stack[this.plots[plotName]], axis, + axisName = verticalAxis ? "vAxis" : "hAxis"; + if(plot[axisName]){ + axis = this.axes[plot[axisName]]; + if(axis && axis.dependOnData()){ + axis.dirty = true; + // find all plots and mark them dirty + arr.forEach(this.stack, function(p){ + if(p[axisName] && p[axisName] == plot[axisName]){ + p.dirty = true; + } + }); + } + }else{ + plot.dirty = true; + } + } + } + }); + + function hSection(stats){ + return {min: stats.hmin, max: stats.hmax}; + } + + function vSection(stats){ + return {min: stats.vmin, max: stats.vmax}; + } + + function hReplace(stats, h){ + stats.hmin = h.min; + stats.hmax = h.max; + } + + function vReplace(stats, v){ + stats.vmin = v.min; + stats.vmax = v.max; + } + + function combineStats(target, source){ + if(target && source){ + target.min = Math.min(target.min, source.min); + target.max = Math.max(target.max, source.max); + } + return target || source; + } + + function calculateAxes(stack, plotArea){ + var plots = {}, axes = {}; + arr.forEach(stack, function(plot){ + var stats = plots[plot.name] = plot.getSeriesStats(); + if(plot.hAxis){ + axes[plot.hAxis] = combineStats(axes[plot.hAxis], hSection(stats)); + } + if(plot.vAxis){ + axes[plot.vAxis] = combineStats(axes[plot.vAxis], vSection(stats)); + } + }); + arr.forEach(stack, function(plot){ + var stats = plots[plot.name]; + if(plot.hAxis){ + hReplace(stats, axes[plot.hAxis]); + } + if(plot.vAxis){ + vReplace(stats, axes[plot.vAxis]); + } + plot.initializeScalers(plotArea, stats); + }); + } + + return dojox.charting.Chart; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/Chart2D.js b/js/dojo-release-1.7.2-src/dojox/charting/Chart2D.js new file mode 100644 index 0000000..f425daf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/Chart2D.js @@ -0,0 +1,16 @@ +define(["dojo/_base/kernel", "dojox", "./Chart", + "./axis2d/Default", "./axis2d/Invisible", "./plot2d/Default", "./plot2d/Lines", "./plot2d/Areas", + "./plot2d/Markers", "./plot2d/MarkersOnly", "./plot2d/Scatter", "./plot2d/Stacked", "./plot2d/StackedLines", + "./plot2d/StackedAreas", "./plot2d/Columns", "./plot2d/StackedColumns", "./plot2d/ClusteredColumns", + "./plot2d/Bars", "./plot2d/StackedBars", "./plot2d/ClusteredBars", "./plot2d/Grid", "./plot2d/Pie", + "./plot2d/Bubble", "./plot2d/Candlesticks", "./plot2d/OHLC", "./plot2d/Spider"], + function(dojo, dojox, Chart){ + dojo.deprecated("dojox.charting.Chart2D", "Use dojo.charting.Chart instead and require all other components explicitly", "2.0"); + // module: + // dojox/charting/Chart2D + // summary: + // This is a compatibility module which loads all charting modules that used to be automatically + // loaded in versions prior to 1.6. It is highly recommended for performance reasons that + // this module no longer be referenced by applications. Instead, use dojox/charting/Chart. + return dojox.charting.Chart2D = Chart; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/Chart3D.js b/js/dojo-release-1.7.2-src/dojox/charting/Chart3D.js new file mode 100644 index 0000000..8bdac03 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/Chart3D.js @@ -0,0 +1,99 @@ +define(["dojo/_base/array", "dojo/dom","dojo/_base/declare", "dojo/_base/html", "dojox/gfx", "dojox/gfx3d"], + function(arr, dom, declare, html, gfx, gfx3d){ + // module: + // dojox/charting/Chart3D + // summary: + // This module provides basic 3d charting capablities (using 2d vector graphics to simulate 3d. + + /*===== + dojox.charting.__Chart3DCtorArgs = function(node, lights, camera, theme){ + // summary: + // The keyword arguments that can be passed in a Chart constructor. + // + // node: Node + // The DOM node to construct the chart on. + // lights: + // Lighting properties for the 3d scene + // camera: Object + // Camera properties describing the viewing camera position. + // theme: Object + // Charting theme to use for coloring chart elements. + } + =====*/ + var observerVector = {x: 0, y: 0, z: 1}, v = gfx3d.vector, n = gfx.normalizedLength; + + return declare("dojox.charting.Chart3D", null, { + constructor: function(node, lights, camera, theme){ + // setup a view + this.node = dom.byId(node); + this.surface = gfx.createSurface(this.node, n(this.node.style.width), n(this.node.style.height)); + this.view = this.surface.createViewport(); + this.view.setLights(lights.lights, lights.ambient, lights.specular); + this.view.setCameraTransform(camera); + this.theme = theme; + + // initialize internal variables + this.walls = []; + this.plots = []; + }, + + // public API + generate: function(){ + return this._generateWalls()._generatePlots(); + }, + invalidate: function(){ + this.view.invalidate(); + return this; + }, + render: function(){ + this.view.render(); + return this; + }, + addPlot: function(plot){ + return this._add(this.plots, plot); + }, + removePlot: function(plot){ + return this._remove(this.plots, plot); + }, + addWall: function(wall){ + return this._add(this.walls, wall); + }, + removeWall: function(wall){ + return this._remove(this.walls, wall); + }, + + // internal API + _add: function(array, item){ + if(!arr.some(array, function(i){ return i == item; })){ + array.push(item); + this.view.invalidate(); + } + return this; + }, + _remove: function(array, item){ + var a = arr.filter(array, function(i){ return i != item; }); + return a.length < array.length ? (array = a, this.invalidate()) : this; + }, + _generateWalls: function(){ + for(var i = 0; i < this.walls.length; ++i){ + if(v.dotProduct(observerVector, this.walls[i].normal) > 0){ + this.walls[i].generate(this); + } + } + return this; + }, + _generatePlots: function(){ + var depth = 0, m = gfx3d.matrix, i = 0; + for(; i < this.plots.length; ++i){ + depth += this.plots[i].getDepth(); + } + for(--i; i >= 0; --i){ + var scene = this.view.createScene(); + scene.setTransform(m.translate(0, 0, -depth)); + this.plots[i].generate(this, scene); + depth -= this.plots[i].getDepth(); + } + return this; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/DataChart.js b/js/dojo-release-1.7.2-src/dojox/charting/DataChart.js new file mode 100644 index 0000000..80de51e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/DataChart.js @@ -0,0 +1,518 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare", "dojo/_base/html", "dojo/_base/connect", + "dojo/_base/array", "./Chart2D", "./themes/PlotKit/blue", "dojo/dom"], + function(kernel, lang, declare, html, hub, arr, Chart, blue, dom){ + // FIXME: This module drags in all Charting modules because of the Chart2D dependency...it is VERY heavy + kernel.experimental("dojox.charting.DataChart"); + + // Defaults for axes + // to be mixed in with xaxis/yaxis custom properties + // see dojox.charting.axis2d.Default for details. + var _yaxis = { + vertical: true, + min: 0, + max: 10, + majorTickStep: 5, + minorTickStep: 1, + natural:false, + stroke: "black", + majorTick: {stroke: "black", length: 8}, + minorTick: {stroke: "gray", length: 2}, + majorLabels:true + }; + + var _xaxis = { + natural: true, // true - no fractions + majorLabels: true, //show labels on major ticks + includeZero: false, // do not change on upating chart + majorTickStep: 1, + majorTick: {stroke: "black", length: 8}, + fixUpper:"major", + stroke: "black", + htmlLabels: true, + from:1 + }; + + // default for chart elements + var chartPlot = { + markers: true, + tension:2, + gap:2 + }; + /*===== + var Chart = dojox.charting.Chart; + =====*/ + return declare("dojox.charting.DataChart", Chart, { + // summary: + // DataChart + // Extension to the 2D chart that connects to a data store in + // a simple manner. Convenience methods have been added for + // connecting store item labels to the chart labels. + // + // description: + // This code should be considered very experimental and the APIs subject + // to change. This is currently an alpha version and will need some testing + // and review. + // + // The main reason for this extension is to create animated charts, generally + // available with scroll=true, and a property field that gets continually updated. + // The previous property settings are kept in memory and displayed until scrolled + // off the chart. + // + // Although great effort was made to maintain the integrity of the current + // charting APIs, some things have been added or modified in order to get + // the store to connect and also to get the data to scroll/animate. + // "displayRange" in particular is used to force the xaxis to a specific + // size and keep the chart from stretching or squashing to fit the data. + // + // Currently, plot lines can only be set at initialization. Setting + // a new store query will have no effect (although using setStore + // may work but its untested). + // + // example: + // + // | var chart = new dojox.charting.DataChart("myNode", { + // | displayRange:8, + // | store:dataStore, + // | query:{symbol:"*"}, + // | fieldName:"price" + // | type: dojox.charting.plot2d.Columns + // | }); + // + // properties: + // + // scroll: Boolean + // Whether live data updates and changes display, like columns moving + // up and down, or whether it scrolls to the left as data is added + scroll:true, + // + // comparative: Boolean + // If false, all items are each their own series. + // If true, the items are combined into one series + // so that their charted properties can be compared. + comparative:false, + // + // query: String + // Used for fetching items. Will vary depending upon store. + query: "*", + // + // queryOptions: String + // Option used for fetching items + queryOptions: "", + // + /*===== + // start:Number + // first item to fetch from store + // count:Number + // Total amount of items to fetch from store + // sort:Object + // Paramaters to sort the fetched items from store + =====*/ + // + // fieldName: String + // The field in the store item that is getting charted + fieldName: "value", + // + // chartTheme: dojox.charting.themes.* + // The theme to style the chart. Defaults to PlotKit.blue. + chartTheme: blue, + // + // displayRange: Number + // The number of major ticks to show on the xaxis + displayRange:0, + // + // stretchToFit: Boolean + // If true, chart is sized to data. If false, chart is a + // fixed size. Note, is overridden by displayRange. + // TODO: Stretch for the y-axis? + stretchToFit:true, + // + // minWidth: Number + // The the smallest the chart width can be + minWidth:200, + // + // minHeight: Number + // The the smallest the chart height can be + minHeight:100, + // + // showing: Boolean + // Whether the chart is showing (default) on + // initialization or hidden. + showing: true, + // + // label: String + // The name field of the store item + // DO NOT SET: Set from store.labelAttribute + label: "name", + + constructor: function(node, kwArgs){ + // summary: + // Set up properties and initialize chart build. + // + // arguments: + // node: DomNode + // The node to attach the chart to. + // kwArgs: Object + // xaxis: Object + // optional parameters for xaxis (see above) + // yaxis: Object + // optional parameters for yaxis (see above) + // store: Object + // dojo.data store (currently nly supports Persevere) + // xaxis: Object + // First query for store + // grid: Object + // Options for the grid plot + // chartPlot: Object + // Options for chart elements (lines, bars, etc) + + this.domNode = dom.byId(node); + + lang.mixin(this, kwArgs); + + this.xaxis = lang.mixin(lang.mixin({}, _xaxis), kwArgs.xaxis); + if(this.xaxis.labelFunc == "seriesLabels"){ + this.xaxis.labelFunc = lang.hitch(this, "seriesLabels"); + } + + this.yaxis = lang.mixin(lang.mixin({}, _yaxis), kwArgs.yaxis); + if(this.yaxis.labelFunc == "seriesLabels"){ + this.yaxis.labelFunc = lang.hitch(this, "seriesLabels"); + } + + // potential event's collector + this._events = []; + + this.convertLabels(this.yaxis); + this.convertLabels(this.xaxis); + + this.onSetItems = {}; + this.onSetInterval = 0; + this.dataLength = 0; + this.seriesData = {}; + this.seriesDataBk = {}; + this.firstRun = true; + + this.dataOffset = 0; + + // FIXME: looks better with this, but it's custom + this.chartTheme.plotarea.stroke = {color: "gray", width: 3}; + + this.setTheme(this.chartTheme); + + // displayRange overrides stretchToFit + if(this.displayRange){ + this.stretchToFit = false; + } + if(!this.stretchToFit){ + this.xaxis.to = this.displayRange; + } + this.addAxis("x", this.xaxis); + this.addAxis("y", this.yaxis); + chartPlot.type = kwArgs.type || "Markers" + this.addPlot("default", lang.mixin(chartPlot, kwArgs.chartPlot)); + + this.addPlot("grid", lang.mixin(kwArgs.grid || {}, {type: "Grid", hMinorLines: true})); + + if(this.showing){ + this.render(); + } + + if(kwArgs.store){ + this.setStore(kwArgs.store, kwArgs.query, kwArgs.fieldName, kwArgs.queryOptions); + } + }, + + destroy: function(){ + arr.forEach(this._events, hub.disconnect); + this.inherited(arguments); + }, + + setStore: function(/*Object*/store, /* ? String*/query, /* ? String*/fieldName, /* ? Object */queryOptions){ + // summary: + // Sets the chart store and query + // then does the first fetch and + // connects to subsequent changes. + // + // TODO: Not handling resetting store + // + this.firstRun = true; + this.store = store || this.store; + this.query = query || this.query; + this.fieldName = fieldName || this.fieldName; + this.label = this.store.getLabelAttributes(); + this.queryOptions = queryOptions || queryOptions; + + arr.forEach(this._events, hub.disconnect); + this._events = [ + hub.connect(this.store, "onSet", this, "onSet"), + hub.connect(this.store, "onError", this, "onError") + ]; + this.fetch(); + }, + + show: function(){ + // summary: + // If chart is hidden, show it + if(!this.showing){ + html.style(this.domNode, "display", ""); + this.showing = true; + this.render(); + } + }, + hide: function(){ + // summary: + // If chart is showing, hide it + // Prevents rendering while hidden + if(this.showing){ + html.style(this.domNode, "display", "none"); + this.showing = false; + } + }, + + onSet: function(/*storeObject*/item){ + // summary: + // Fired when a store item changes. + // Collects the item calls and when + // done (after 200ms), sends item + // array to onData(). + // + // FIXME: Using labels instead of IDs for item + // identifiers here and in the chart series. This + // is obviously short sighted, but currently used + // for seriesLabels. Workaround for potential bugs + // is to assign a label for which all items are unique. + + var nm = this.getProperty(item, this.label); + + // FIXME: why the check for if-in-runs? + if(nm in this.runs || this.comparative){ + clearTimeout(this.onSetInterval); + if(!this.onSetItems[nm]){ + this.onSetItems[nm] = item; + } + this.onSetInterval = setTimeout(lang.hitch(this, function(){ + clearTimeout(this.onSetInterval); + var items = []; + for(var nm in this.onSetItems){ + items.push(this.onSetItems[nm]); + } + this.onData(items); + this.onSetItems = {}; + }),200); + } + }, + + onError: function(/*Error*/err){ + // stub + // Fires on fetch error + console.error("DataChart Error:", err); + }, + + onDataReceived: function(/*Array*/items){ + // summary: + // stub. Fires after data is received but + // before data is parsed and rendered + }, + + getProperty: function(/*storeObject*/item, prop){ + // summary: + // The main use of this function is to determine + // between a single value and an array of values. + // Other property types included for convenience. + // + if(prop==this.label){ + return this.store.getLabel(item); + } + if(prop=="id"){ + return this.store.getIdentity(item); + } + var value = this.store.getValues(item, prop); + if(value.length < 2){ + value = this.store.getValue(item, prop); + } + return value; + }, + onData: function(/*Array*/items){ + // summary: + // Called after a completed fetch + // or when store items change. + // On first run, sets the chart data, + // then updates chart and legends. + // + //console.log("Store:", store);console.log("items: (", items.length+")", items);console.log("Chart:", this); + if(!items || !items.length){ return; } + + if(this.items && this.items.length != items.length){ + arr.forEach(items, function(m){ + var id = this.getProperty(m, "id"); + arr.forEach(this.items, function(m2, i){ + if(this.getProperty(m2, "id") == id){ + this.items[i] = m2; + } + },this); + }, this); + items = this.items; + } + if(this.stretchToFit){ + this.displayRange = items.length; + } + this.onDataReceived(items); + this.items = items; + + + if(this.comparative){ + // all items are gathered together and used as one + // series so their properties can be compared. + var nm = "default"; + + this.seriesData[nm] = []; + this.seriesDataBk[nm] = []; + arr.forEach(items, function(m, i){ + var field = this.getProperty(m, this.fieldName); + this.seriesData[nm].push(field); + }, this); + + }else{ + + // each item is a seperate series. + arr.forEach(items, function(m, i){ + var nm = this.store.getLabel(m); + if(!this.seriesData[nm]){ + this.seriesData[nm] = []; + this.seriesDataBk[nm] = []; + } + + // the property in the item we are using + var field = this.getProperty(m, this.fieldName); + if(lang.isArray(field)){ + // Data is an array, so it's a snapshot, and not + // live, updating data + // + this.seriesData[nm] = field; + + }else{ + if(!this.scroll){ + // Data updates, and "moves in place". Columns and + // line markers go up and down + // + // create empty chart elements by starting an array + // with zeros until we reach our relevant data + var ar = arr.map(new Array(i+1), function(){ return 0; }); + ar.push(Number(field)); + this.seriesData[nm] = ar; + + }else{ + // Data updates and scrolls to the left + if(this.seriesDataBk[nm].length > this.seriesData[nm].length){ + this.seriesData[nm] = this.seriesDataBk[nm]; + } + // Collecting and storing series data. The items come in + // only one at a time, but we need to display historical + // data, so it is kept in memory. + this.seriesData[nm].push(Number(field)); + } + this.seriesDataBk[nm].push(Number(field)); + } + }, this); + } + + // displayData is the segment of the data array that is within + // the chart boundaries + var displayData; + if(this.firstRun){ + // First time around we need to add the series (chart lines) + // to the chart. + this.firstRun = false; + for(nm in this.seriesData){ + this.addSeries(nm, this.seriesData[nm]); + displayData = this.seriesData[nm]; + } + + }else{ + + // update existing series + for(nm in this.seriesData){ + displayData = this.seriesData[nm]; + + if(this.scroll && displayData.length > this.displayRange){ + // chart lines have gone beyond the right boundary. + this.dataOffset = displayData.length-this.displayRange - 1; + displayData = displayData.slice(displayData.length-this.displayRange, displayData.length); + } + this.updateSeries(nm, displayData); + } + } + this.dataLength = displayData.length; + + if(this.showing){ + this.render(); + } + + }, + + fetch: function(){ + // summary: + // Fetches initial data. Subsequent changes + // are received via onSet in data store. + // + if(!this.store){ return; } + this.store.fetch({query:this.query, queryOptions:this.queryOptions, start:this.start, count:this.count, sort:this.sort, + onComplete:lang.hitch(this, function(data){ + setTimeout(lang.hitch(this, function(){ + this.onData(data) + }),0); + }), + onError:lang.hitch(this, "onError") + }); + }, + + convertLabels: function(axis){ + // summary: + // Convenience method to convert a label array of strings + // into an array of objects + // + if(!axis.labels || lang.isObject(axis.labels[0])){ return null; } + + axis.labels = arr.map(axis.labels, function(ele, i){ + return {value:i, text:ele}; + }); + return null; // null + }, + + seriesLabels: function(/*Number*/val){ + // summary: + // Convenience method that sets series labels based on item labels. + val--; + if(this.series.length<1 || (!this.comparative && val>this.series.length)){ return "-"; } + if(this.comparative){ + return this.store.getLabel(this.items[val]);// String + + }else{ + // FIXME: + // Here we are setting the label base on if there is data in the array slot. + // A typical series may look like: [0,0,3.1,0,0,0] which mean the data is populated in the + // 3rd row or column. This works well and keeps the labels aligned but has a side effect + // of not showing the label is the data is zero. Work around is to not go lower than + // 0.01 or something. + for(var i=0;i0){ + return this.series[i].name; // String + } + } + } + return "-"; // String + + }, + + resizeChart: function(/*Object*/dim){ + // summary: + // Call this function to change the chart size. + // Can be connected to a layout widget that calls + // resize. + // + var w = Math.max(dim.w, this.minWidth); + var h = Math.max(dim.h, this.minHeight); + this.resize(w, h); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/DataSeries.js b/js/dojo-release-1.7.2-src/dojox/charting/DataSeries.js new file mode 100644 index 0000000..70dcb11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/DataSeries.js @@ -0,0 +1,183 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", "dojo/_base/connect", "dojox/lang/functional"], + function(Lang, declare, ArrayUtil, Hub, df){ + + return declare("dojox.charting.DataSeries", null, { + constructor: function(store, kwArgs, value){ + // summary: + // Series adapter for dojo.data stores. + // store: Object: + // A dojo.data store object. + // kwArgs: Object: + // A store-specific keyword parameters used for fetching items. + // See dojo.data.api.Read.fetch(). + // value: Function|Object|String|Null: + // Function, which takes a store, and an object handle, and + // produces an output possibly inspecting the store's item. Or + // a dictionary object, which tells what names to extract from + // an object and how to map them to an output. Or a string, which + // is a numeric field name to use for plotting. If undefined, null + // or empty string (the default), "value" field is extracted. + this.store = store; + this.kwArgs = kwArgs; + + if(value){ + if(Lang.isFunction(value)){ + this.value = value; + }else if(Lang.isObject(value)){ + this.value = Lang.hitch(this, "_dictValue", + df.keys(value), value); + }else{ + this.value = Lang.hitch(this, "_fieldValue", value); + } + }else{ + this.value = Lang.hitch(this, "_defaultValue"); + } + + this.data = []; + + this._events = []; + + if(this.store.getFeatures()["dojo.data.api.Notification"]){ + this._events.push( + Hub.connect(this.store, "onNew", this, "_onStoreNew"), + Hub.connect(this.store, "onDelete", this, "_onStoreDelete"), + Hub.connect(this.store, "onSet", this, "_onStoreSet") + ); + } + + this.fetch(); + }, + + destroy: function(){ + // summary: + // Clean up before GC. + ArrayUtil.forEach(this._events, Hub.disconnect); + }, + + setSeriesObject: function(series){ + // summary: + // Sets a dojox.charting.Series object we will be working with. + // series: dojox.charting.Series: + // Our interface to the chart. + this.series = series; + }, + + // value transformers + + _dictValue: function(keys, dict, store, item){ + var o = {}; + ArrayUtil.forEach(keys, function(key){ + o[key] = store.getValue(item, dict[key]); + }); + return o; + }, + + _fieldValue: function(field, store, item){ + return store.getValue(item, field); + }, + + _defaultValue: function(store, item){ + return store.getValue(item, "value"); + }, + + // store fetch loop + + fetch: function(){ + // summary: + // Fetches data from the store and updates a chart. + if(!this._inFlight){ + this._inFlight = true; + var kwArgs = Lang.delegate(this.kwArgs); + kwArgs.onComplete = Lang.hitch(this, "_onFetchComplete"); + kwArgs.onError = Lang.hitch(this, "onFetchError"); + this.store.fetch(kwArgs); + } + }, + + _onFetchComplete: function(items, request){ + this.items = items; + this._buildItemMap(); + this.data = ArrayUtil.map(this.items, function(item){ + return this.value(this.store, item); + }, this); + this._pushDataChanges(); + this._inFlight = false; + }, + + onFetchError: function(errorData, request){ + // summary: + // As stub to process fetch errors. Provide so user can attach to + // it with dojo.connect(). See dojo.data.api.Read fetch() for + // details: onError property. + this._inFlight = false; + }, + + _buildItemMap: function(){ + if(this.store.getFeatures()["dojo.data.api.Identity"]){ + var itemMap = {}; + ArrayUtil.forEach(this.items, function(item, index){ + itemMap[this.store.getIdentity(item)] = index; + }, this); + this.itemMap = itemMap; + } + }, + + _pushDataChanges: function(){ + if(this.series){ + this.series.chart.updateSeries(this.series.name, this); + this.series.chart.delayedRender(); + } + }, + + // store notification handlers + + _onStoreNew: function(){ + // the only thing we can do is to re-fetch items + this.fetch(); + }, + + _onStoreDelete: function(item){ + // we cannot do anything with deleted item, the only way is to compare + // items for equality + if(this.items){ + var flag = ArrayUtil.some(this.items, function(it, index){ + if(it === item){ + this.items.splice(index, 1); + this._buildItemMap(); + this.data.splice(index, 1); + return true; + } + return false; + }, this); + if(flag){ + this._pushDataChanges(); + } + } + }, + + _onStoreSet: function(item){ + if(this.itemMap){ + // we can use our handy item map, if the store supports Identity + var id = this.store.getIdentity(item), index = this.itemMap[id]; + if(typeof index == "number"){ + this.data[index] = this.value(this.store, this.items[index]); + this._pushDataChanges(); + } + }else{ + // otherwise we have to rely on item's equality + if(this.items){ + var flag = ArrayUtil.some(this.items, function(it, index){ + if(it === item){ + this.data[index] = this.value(this.store, it); + return true; + } + return false; + }, this); + if(flag){ + this._pushDataChanges(); + } + } + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/Element.js b/js/dojo-release-1.7.2-src/dojox/charting/Element.js new file mode 100644 index 0000000..fa42b3d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/Element.js @@ -0,0 +1,364 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/dom-construct","dojo/_base/declare", "dojox/gfx", "dojox/gfx/utils", "dojox/gfx/shape"], + function(lang, arr, domConstruct, declare, gfx, utils, shape){ + + return declare("dojox.charting.Element", null, { + // summary: + // A base class that is used to build other elements of a chart, such as + // a series. + // chart: dojox.charting.Chart + // The parent chart for this element. + // group: dojox.gfx.Group + // The visual GFX group representing this element. + // htmlElement: Array + // Any DOMNodes used as a part of this element (such as HTML-based labels). + // dirty: Boolean + // A flag indicating whether or not this element needs to be rendered. + + chart: null, + group: null, + htmlElements: null, + dirty: true, + + constructor: function(chart){ + // summary: + // Creates a new charting element. + // chart: dojox.charting.Chart + // The chart that this element belongs to. + this.chart = chart; + this.group = null; + this.htmlElements = []; + this.dirty = true; + this.trailingSymbol = "..."; + this._events = []; + }, + createGroup: function(creator){ + // summary: + // Convenience function to create a new dojox.gfx.Group. + // creator: dojox.gfx.Surface? + // An optional surface in which to create this group. + // returns: dojox.charting.Element + // A reference to this object for functional chaining. + if(!creator){ creator = this.chart.surface; } + if(!this.group){ + this.group = creator.createGroup(); + } + return this; // dojox.charting.Element + }, + purgeGroup: function(){ + // summary: + // Clear any elements out of our group, and destroy the group. + // returns: dojox.charting.Element + // A reference to this object for functional chaining. + this.destroyHtmlElements(); + if(this.group){ + // since 1.7.x we need dispose shape otherwise there is a memoryleak + utils.forEach(this.group, function(child){ + shape.dispose(child); + }); + this.group.clear(); + this.group.removeShape(); + this.group = null; + } + this.dirty = true; + if(this._events.length){ + arr.forEach(this._events, function(item){ + item.shape.disconnect(item.handle); + }); + this._events = []; + } + return this; // dojox.charting.Element + }, + cleanGroup: function(creator){ + // summary: + // Clean any elements (HTML or GFX-based) out of our group, and create a new one. + // creator: dojox.gfx.Surface? + // An optional surface to work with. + // returns: dojox.charting.Element + // A reference to this object for functional chaining. + this.destroyHtmlElements(); + if(!creator){ creator = this.chart.surface; } + if(this.group){ + this.group.clear(); + }else{ + this.group = creator.createGroup(); + } + this.dirty = true; + return this; // dojox.charting.Element + }, + destroyHtmlElements: function(){ + // summary: + // Destroy any DOMNodes that may have been created as a part of this element. + if(this.htmlElements.length){ + arr.forEach(this.htmlElements, domConstruct.destroy); + this.htmlElements = []; + } + }, + destroy: function(){ + // summary: + // API addition to conform to the rest of the Dojo Toolkit's standard. + this.purgeGroup(); + }, + //text utilities + getTextWidth: function(s, font){ + return gfx._base._getTextBox(s, {font: font}).w || 0; + }, + getTextWithLimitLength: function(s, font, limitWidth, truncated){ + // summary: + // Get the truncated string based on the limited width in px(dichotomy algorithm) + // s: String? + // candidate text. + // font: String? + // text's font style. + // limitWidth: Number? + // text limited width in px. + // truncated: Boolean? + // whether the input text(s) has already been truncated. + // returns: Object + // { + // text: processed text, maybe truncated or not + // truncated: whether text has been truncated + // } + if (!s || s.length <= 0) { + return { + text: "", + truncated: truncated || false + }; + } + if(!limitWidth || limitWidth <= 0){ + return { + text: s, + truncated: truncated || false + }; + } + var delta = 2, + //golden section for dichotomy algorithm + trucPercentage = 0.618, + minStr = s.substring(0,1) + this.trailingSymbol, + minWidth = this.getTextWidth(minStr, font); + if (limitWidth <= minWidth) { + return { + text: minStr, + truncated: true + }; + } + var width = this.getTextWidth(s, font); + if(width <= limitWidth){ + return { + text: s, + truncated: truncated || false + }; + }else{ + var begin = 0, + end = s.length; + while(begin < end){ + if(end - begin <= delta ){ + while (this.getTextWidth(s.substring(0, begin) + this.trailingSymbol, font) > limitWidth) { + begin -= 1; + } + return { + text: (s.substring(0,begin) + this.trailingSymbol), + truncated: true + }; + } + var index = begin + Math.round((end - begin) * trucPercentage), + widthIntercepted = this.getTextWidth(s.substring(0, index), font); + if(widthIntercepted < limitWidth){ + begin = index; + end = end; + }else{ + begin = begin; + end = index; + } + } + } + }, + getTextWithLimitCharCount: function(s, font, wcLimit, truncated){ + // summary: + // Get the truncated string based on the limited character count(dichotomy algorithm) + // s: String? + // candidate text. + // font: String? + // text's font style. + // wcLimit: Number? + // text limited character count. + // truncated: Boolean? + // whether the input text(s) has already been truncated. + // returns: Object + // { + // text: processed text, maybe truncated or not + // truncated: whether text has been truncated + // } + if (!s || s.length <= 0) { + return { + text: "", + truncated: truncated || false + }; + } + if(!wcLimit || wcLimit <= 0 || s.length <= wcLimit){ + return { + text: s, + truncated: truncated || false + }; + } + return { + text: s.substring(0, wcLimit) + this.trailingSymbol, + truncated: true + }; + }, + // fill utilities + _plotFill: function(fill, dim, offsets){ + // process a plot-wide fill + if(!fill || !fill.type || !fill.space){ + return fill; + } + var space = fill.space; + switch(fill.type){ + case "linear": + if(space === "plot" || space === "shapeX" || space === "shapeY"){ + // clone a fill so we can modify properly directly + fill = gfx.makeParameters(gfx.defaultLinearGradient, fill); + fill.space = space; + // process dimensions + if(space === "plot" || space === "shapeX"){ + // process Y + var span = dim.height - offsets.t - offsets.b; + fill.y1 = offsets.t + span * fill.y1 / 100; + fill.y2 = offsets.t + span * fill.y2 / 100; + } + if(space === "plot" || space === "shapeY"){ + // process X + var span = dim.width - offsets.l - offsets.r; + fill.x1 = offsets.l + span * fill.x1 / 100; + fill.x2 = offsets.l + span * fill.x2 / 100; + } + } + break; + case "radial": + if(space === "plot"){ + // this one is used exclusively for scatter charts + // clone a fill so we can modify properly directly + fill = gfx.makeParameters(gfx.defaultRadialGradient, fill); + fill.space = space; + // process both dimensions + var spanX = dim.width - offsets.l - offsets.r, + spanY = dim.height - offsets.t - offsets.b; + fill.cx = offsets.l + spanX * fill.cx / 100; + fill.cy = offsets.t + spanY * fill.cy / 100; + fill.r = fill.r * Math.sqrt(spanX * spanX + spanY * spanY) / 200; + } + break; + case "pattern": + if(space === "plot" || space === "shapeX" || space === "shapeY"){ + // clone a fill so we can modify properly directly + fill = gfx.makeParameters(gfx.defaultPattern, fill); + fill.space = space; + // process dimensions + if(space === "plot" || space === "shapeX"){ + // process Y + var span = dim.height - offsets.t - offsets.b; + fill.y = offsets.t + span * fill.y / 100; + fill.height = span * fill.height / 100; + } + if(space === "plot" || space === "shapeY"){ + // process X + var span = dim.width - offsets.l - offsets.r; + fill.x = offsets.l + span * fill.x / 100; + fill.width = span * fill.width / 100; + } + } + break; + } + return fill; + }, + _shapeFill: function(fill, bbox){ + // process shape-specific fill + if(!fill || !fill.space){ + return fill; + } + var space = fill.space; + switch(fill.type){ + case "linear": + if(space === "shape" || space === "shapeX" || space === "shapeY"){ + // clone a fill so we can modify properly directly + fill = gfx.makeParameters(gfx.defaultLinearGradient, fill); + fill.space = space; + // process dimensions + if(space === "shape" || space === "shapeX"){ + // process X + var span = bbox.width; + fill.x1 = bbox.x + span * fill.x1 / 100; + fill.x2 = bbox.x + span * fill.x2 / 100; + } + if(space === "shape" || space === "shapeY"){ + // process Y + var span = bbox.height; + fill.y1 = bbox.y + span * fill.y1 / 100; + fill.y2 = bbox.y + span * fill.y2 / 100; + } + } + break; + case "radial": + if(space === "shape"){ + // this one is used exclusively for bubble charts and pie charts + // clone a fill so we can modify properly directly + fill = gfx.makeParameters(gfx.defaultRadialGradient, fill); + fill.space = space; + // process both dimensions + fill.cx = bbox.x + bbox.width / 2; + fill.cy = bbox.y + bbox.height / 2; + fill.r = fill.r * bbox.width / 200; + } + break; + case "pattern": + if(space === "shape" || space === "shapeX" || space === "shapeY"){ + // clone a fill so we can modify properly directly + fill = gfx.makeParameters(gfx.defaultPattern, fill); + fill.space = space; + // process dimensions + if(space === "shape" || space === "shapeX"){ + // process X + var span = bbox.width; + fill.x = bbox.x + span * fill.x / 100; + fill.width = span * fill.width / 100; + } + if(space === "shape" || space === "shapeY"){ + // process Y + var span = bbox.height; + fill.y = bbox.y + span * fill.y / 100; + fill.height = span * fill.height / 100; + } + } + break; + } + return fill; + }, + _pseudoRadialFill: function(fill, center, radius, start, end){ + // process pseudo-radial fills + if(!fill || fill.type !== "radial" || fill.space !== "shape"){ + return fill; + } + // clone and normalize fill + var space = fill.space; + fill = gfx.makeParameters(gfx.defaultRadialGradient, fill); + fill.space = space; + if(arguments.length < 4){ + // process both dimensions + fill.cx = center.x; + fill.cy = center.y; + fill.r = fill.r * radius / 100; + return fill; + } + // convert to a linear gradient + var angle = arguments.length < 5 ? start : (end + start) / 2; + return { + type: "linear", + x1: center.x, + y1: center.y, + x2: center.x + fill.r * radius * Math.cos(angle) / 100, + y2: center.y + fill.r * radius * Math.sin(angle) / 100, + colors: fill.colors + }; + return fill; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/README b/js/dojo-release-1.7.2-src/dojox/charting/README new file mode 100644 index 0000000..0858f3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/README @@ -0,0 +1,31 @@ +------------------------------------------------------------------------------- +dojox.charting +------------------------------------------------------------------------------- +Version 0.800 +Release date: 10/31/2007 +------------------------------------------------------------------------------- +Project state: +beta +------------------------------------------------------------------------------- +Credits + Tom Trenka (ttrenka@gmail.com) + Eugene Lazutkin (eugene.lazutkin@gmail.com) +------------------------------------------------------------------------------- +Project description + +Implementation of simple charting library based on dojox.gfx/dojox.gfx3d. +------------------------------------------------------------------------------- +Dependencies: + +Dojo Core, dojox.gfx, dojox.gfx3d, dojox.lang. +------------------------------------------------------------------------------- +Documentation + +Not ready yet. +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/ +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/ +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/charting/Series.js b/js/dojo-release-1.7.2-src/dojox/charting/Series.js new file mode 100644 index 0000000..6ee7852 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/Series.js @@ -0,0 +1,62 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "./Element"], + function(lang, declare, Element){ + /*===== + dojox.charting.__SeriesCtorArgs = function(plot){ + // summary: + // An optional arguments object that can be used in the Series constructor. + // plot: String? + // The plot (by name) that this series belongs to. + this.plot = plot; + } + + var Element = dojox.charting.Element; + =====*/ + return declare("dojox.charting.Series", Element, { + // summary: + // An object representing a series of data for plotting on a chart. + constructor: function(chart, data, kwArgs){ + // summary: + // Create a new data series object for use within charting. + // chart: dojox.charting.Chart + // The chart that this series belongs to. + // data: Array|Object: + // The array of data points (either numbers or objects) that + // represents the data to be drawn. Or it can be an object. In + // the latter case, it should have a property "data" (an array), + // destroy(), and setSeriesObject(). + // kwArgs: dojox.charting.__SeriesCtorArgs? + // An optional keyword arguments object to set details for this series. + lang.mixin(this, kwArgs); + if(typeof this.plot != "string"){ this.plot = "default"; } + this.update(data); + }, + + clear: function(){ + // summary: + // Clear the calculated additional parameters set on this series. + this.dyn = {}; + }, + + update: function(data){ + // summary: + // Set data and make this object dirty, so it can be redrawn. + // data: Array|Object: + // The array of data points (either numbers or objects) that + // represents the data to be drawn. Or it can be an object. In + // the latter case, it should have a property "data" (an array), + // destroy(), and setSeriesObject(). + if(lang.isArray(data)){ + this.data = data; + }else{ + this.source = data; + this.data = this.source.data; + if(this.source.setSeriesObject){ + this.source.setSeriesObject(this); + } + } + this.dirty = true; + this.clear(); + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/StoreSeries.js b/js/dojo-release-1.7.2-src/dojox/charting/StoreSeries.js new file mode 100644 index 0000000..98fd850 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/StoreSeries.js @@ -0,0 +1,100 @@ +define(["dojo/_base/array", "dojo/_base/declare", "dojo/_base/Deferred"], + function(arr, declare, Deferred){ + + return declare("dojox.charting.StoreSeries", null, { + constructor: function(store, kwArgs, value){ + // summary: + // Series adapter for dojo object stores (dojo.store). + // store: Object: + // A dojo object store. + // kwArgs: Object: + // A store-specific keyword parameters used for querying objects. + // See dojo.store docs + // value: Function|Object|String|Null: + // Function, which takes an object handle, and + // produces an output possibly inspecting the store's item. Or + // a dictionary object, which tells what names to extract from + // an object and how to map them to an output. Or a string, which + // is a numeric field name to use for plotting. If undefined, null + // or empty string (the default), "value" field is extracted. + this.store = store; + this.kwArgs = kwArgs; + + if(value){ + if(typeof value == "function"){ + this.value = value; + }else if(typeof value == "object"){ + this.value = function(object){ + var o = {}; + for(var key in value){ + o[key] = object[value[key]]; + } + return o; + }; + }else{ + this.value = function(object){ + return object[value]; + }; + } + }else{ + this.value = function(object){ + return object.value; + }; + } + + this.data = []; + + this.fetch(); + }, + + destroy: function(){ + // summary: + // Clean up before GC. + if(this.observeHandle){ + this.observeHandle.dismiss(); + } + }, + + setSeriesObject: function(series){ + // summary: + // Sets a dojox.charting.Series object we will be working with. + // series: dojox.charting.Series: + // Our interface to the chart. + this.series = series; + }, + + // store fetch loop + + fetch: function(){ + // summary: + // Fetches data from the store and updates a chart. + var objects = this.objects = []; + var self = this; + if(this.observeHandle){ + this.observeHandle.dismiss(); + } + var results = this.store.query(this.kwArgs.query, this.kwArgs); + Deferred.when(results, function(objects){ + self.objects = objects; + update(); + }); + if(results.observe){ + this.observeHandle = results.observe(update, true); + } + function update(){ + self.data = arr.map(self.objects, function(object){ + return self.value(object, self.store); + }); + self._pushDataChanges(); + } + }, + + _pushDataChanges: function(){ + if(this.series){ + this.series.chart.updateSeries(this.series.name, this); + this.series.chart.delayedRender(); + } + } + + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/Theme.js b/js/dojo-release-1.7.2-src/dojox/charting/Theme.js new file mode 100644 index 0000000..75de4c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/Theme.js @@ -0,0 +1,657 @@ +define(["dojo/_base/lang", "dojo/_base/array","dojo/_base/declare","dojo/_base/Color", + "dojox/color/_base", "dojox/color/Palette", "dojox/lang/utils", "dojox/gfx/gradutils"], + function(lang, arr, declare, Color, colorX, Palette, dlu, dgg){ + + var Theme = declare("dojox.charting.Theme", null, { + // summary: + // A Theme is a pre-defined object, primarily JSON-based, that makes up the definitions to + // style a chart. + // + // description: + // While you can set up style definitions on a chart directly (usually through the various add methods + // on a dojox.charting.Chart object), a Theme simplifies this manual setup by allowing you to + // pre-define all of the various visual parameters of each element in a chart. + // + // Most of the properties of a Theme are straight-forward; if something is line-based (such as + // an axis or the ticks on an axis), they will be defined using basic stroke parameters. Likewise, + // if an element is primarily block-based (such as the background of a chart), it will be primarily + // fill-based. + // + // In addition (for convenience), a Theme definition does not have to contain the entire JSON-based + // structure. Each theme is built on top of a default theme (which serves as the basis for the theme + // "GreySkies"), and is mixed into the default theme object. This allows you to create a theme based, + // say, solely on colors for data series. + // + // Defining a new theme is relatively easy; see any of the themes in dojox.charting.themes for examples + // on how to define your own. + // + // When you set a theme on a chart, the theme itself is deep-cloned. This means that you cannot alter + // the theme itself after setting the theme value on a chart, and expect it to change your chart. If you + // are looking to make alterations to a theme for a chart, the suggestion would be to create your own + // theme, based on the one you want to use, that makes those alterations before it is applied to a chart. + // + // Finally, a Theme contains a number of functions to facilitate rendering operations on a chart--the main + // helper of which is the ~next~ method, in which a chart asks for the information for the next data series + // to be rendered. + // + // A note on colors: + // The Theme constructor was on the use of dojox.color.Palette (in general) for creating a visually distinct + // set of colors for usage in a chart. A palette is usually comprised of 5 different color definitions, and + // no more. If you have a need to render a chart with more than 5 data elements, you can simply "push" + // new color definitions into the theme's .color array. Make sure that you do that with the actual + // theme object from a Chart, and not in the theme itself (i.e. either do that before using .setTheme + // on a chart). + // + // example: + // The default theme (and structure) looks like so: + // | // all objects are structs used directly in dojox.gfx + // | chart:{ + // | stroke: null, + // | fill: "white", + // | pageStyle: null // suggested page style as an object suitable for dojo.style() + // | }, + // | plotarea:{ + // | stroke: null, + // | fill: "white" + // | }, + // | axis:{ + // | stroke: { // the axis itself + // | color: "#333", + // | width: 1 + // | }, + // | tick: { // used as a foundation for all ticks + // | color: "#666", + // | position: "center", + // | font: "normal normal normal 7pt Tahoma", // labels on axis + // | fontColor: "#333" // color of labels + // | }, + // | majorTick: { // major ticks on axis, and used for major gridlines + // | width: 1, + // | length: 6 + // | }, + // | minorTick: { // minor ticks on axis, and used for minor gridlines + // | width: 0.8, + // | length: 3 + // | }, + // | microTick: { // minor ticks on axis, and used for minor gridlines + // | width: 0.5, + // | length: 1 + // | } + // | }, + // | series: { + // | stroke: {width: 1.5, color: "#333"}, // line + // | outline: {width: 0.1, color: "#ccc"}, // outline + // | //shadow: {dx: 1, dy: 1, width: 2, color: [0, 0, 0, 0.3]}, + // | shadow: null, // no shadow + // | fill: "#ccc", // fill, if appropriate + // | font: "normal normal normal 8pt Tahoma", // if there's a label + // | fontColor: "#000" // color of labels + // | labelWiring: {width: 1, color: "#ccc"}, // connect marker and target data item(slice, column, bar...) + // | }, + // | marker: { // any markers on a series + // | symbol: "m-3,3 l3,-6 3,6 z", // symbol + // | stroke: {width: 1.5, color: "#333"}, // stroke + // | outline: {width: 0.1, color: "#ccc"}, // outline + // | shadow: null, // no shadow + // | fill: "#ccc", // fill if needed + // | font: "normal normal normal 8pt Tahoma", // label + // | fontColor: "#000" + // | }, + // | indicator: { + // | lineStroke: {width: 1.5, color: "#333"}, // line + // | lineOutline: {width: 0.1, color: "#ccc"}, // line outline + // | lineShadow: null, // no line shadow + // | stroke: {width: 1.5, color: "#333"}, // label background stroke + // | outline: {width: 0.1, color: "#ccc"}, // label background outline + // | shadow: null, // no label background shadow + // | fill: "#ccc", // label background fill + // | radius: 3, // radius of the label background + // | font: "normal normal normal 10pt Tahoma", // label font + // | fontColor: "#000" // label color + // | markerFill: "#ccc", // marker fill + // | markerSymbol: "m-3,0 c0,-4 6,-4 6,0 m-6,0 c0,4 6,4 6,0", // marker symbol + // | markerStroke: {width: 1.5, color: "#333"}, // marker stroke + // | markerOutline: {width: 0.1, color: "#ccc"}, // marker outline + // | markerShadow: null, // no marker shadow + // | } + // + // example: + // Defining a new theme is pretty simple: + // | dojox.charting.themes.Grasslands = new dojox.charting.Theme({ + // | colors: [ "#70803a", "#dde574", "#788062", "#b1cc5d", "#eff2c2" ] + // | }); + // | + // | myChart.setTheme(dojox.charting.themes.Grasslands); + + shapeSpaces: {shape: 1, shapeX: 1, shapeY: 1}, + + constructor: function(kwArgs){ + // summary: + // Initialize a theme using the keyword arguments. Note that the arguments + // look like the example (above), and may include a few more parameters. + kwArgs = kwArgs || {}; + + // populate theme with defaults updating them if needed + var def = Theme.defaultTheme; + arr.forEach(["chart", "plotarea", "axis", "series", "marker", "indicator"], function(name){ + this[name] = lang.delegate(def[name], kwArgs[name]); + }, this); + + // personalize theme + if(kwArgs.seriesThemes && kwArgs.seriesThemes.length){ + this.colors = null; + this.seriesThemes = kwArgs.seriesThemes.slice(0); + }else{ + this.seriesThemes = null; + this.colors = (kwArgs.colors || Theme.defaultColors).slice(0); + } + this.markerThemes = null; + if(kwArgs.markerThemes && kwArgs.markerThemes.length){ + this.markerThemes = kwArgs.markerThemes.slice(0); + } + this.markers = kwArgs.markers ? lang.clone(kwArgs.markers) : lang.delegate(Theme.defaultMarkers); + + // set flags + this.noGradConv = kwArgs.noGradConv; + this.noRadialConv = kwArgs.noRadialConv; + if(kwArgs.reverseFills){ + this.reverseFills(); + } + + // private housekeeping + this._current = 0; + this._buildMarkerArray(); + }, + + clone: function(){ + // summary: + // Clone the current theme. + // returns: dojox.charting.Theme + // The cloned theme; any alterations made will not affect the original. + var theme = new Theme({ + // theme components + chart: this.chart, + plotarea: this.plotarea, + axis: this.axis, + series: this.series, + marker: this.marker, + // individual arrays + colors: this.colors, + markers: this.markers, + indicator: this.indicator, + seriesThemes: this.seriesThemes, + markerThemes: this.markerThemes, + // flags + noGradConv: this.noGradConv, + noRadialConv: this.noRadialConv + }); + // copy custom methods + arr.forEach( + ["clone", "clear", "next", "skip", "addMixin", "post", "getTick"], + function(name){ + if(this.hasOwnProperty(name)){ + theme[name] = this[name]; + } + }, + this + ); + return theme; // dojox.charting.Theme + }, + + clear: function(){ + // summary: + // Clear and reset the internal pointer to start fresh. + this._current = 0; + }, + + next: function(elementType, mixin, doPost){ + // summary: + // Get the next color or series theme. + // elementType: String? + // An optional element type (for use with series themes) + // mixin: Object? + // An optional object to mix into the theme. + // doPost: Boolean? + // A flag to post-process the results. + // returns: Object + // An object of the structure { series, marker, symbol } + var merge = dlu.merge, series, marker; + if(this.colors){ + series = lang.delegate(this.series); + marker = lang.delegate(this.marker); + var color = new Color(this.colors[this._current % this.colors.length]), old; + // modify the stroke + if(series.stroke && series.stroke.color){ + series.stroke = lang.delegate(series.stroke); + old = new Color(series.stroke.color); + series.stroke.color = new Color(color); + series.stroke.color.a = old.a; + }else{ + series.stroke = {color: color}; + } + if(marker.stroke && marker.stroke.color){ + marker.stroke = lang.delegate(marker.stroke); + old = new Color(marker.stroke.color); + marker.stroke.color = new Color(color); + marker.stroke.color.a = old.a; + }else{ + marker.stroke = {color: color}; + } + // modify the fill + if(!series.fill || series.fill.type){ + series.fill = color; + }else{ + old = new Color(series.fill); + series.fill = new Color(color); + series.fill.a = old.a; + } + if(!marker.fill || marker.fill.type){ + marker.fill = color; + }else{ + old = new Color(marker.fill); + marker.fill = new Color(color); + marker.fill.a = old.a; + } + }else{ + series = this.seriesThemes ? + merge(this.series, this.seriesThemes[this._current % this.seriesThemes.length]) : + this.series; + marker = this.markerThemes ? + merge(this.marker, this.markerThemes[this._current % this.markerThemes.length]) : + series; + } + + var symbol = marker && marker.symbol || this._markers[this._current % this._markers.length]; + + var theme = {series: series, marker: marker, symbol: symbol}; + + // advance the counter + ++this._current; + + if(mixin){ + theme = this.addMixin(theme, elementType, mixin); + } + if(doPost){ + theme = this.post(theme, elementType); + } + + return theme; // Object + }, + + skip: function(){ + // summary: + // Skip the next internal color. + ++this._current; + }, + + addMixin: function(theme, elementType, mixin, doPost){ + // summary: + // Add a mixin object to the passed theme and process. + // theme: dojox.charting.Theme + // The theme to mixin to. + // elementType: String + // The type of element in question. Can be "line", "bar" or "circle" + // mixin: Object|Array + // The object or objects to mix into the theme. + // doPost: Boolean + // If true, run the new theme through the post-processor. + // returns: dojox.charting.Theme + // The new theme. + if(lang.isArray(mixin)){ + arr.forEach(mixin, function(m){ + theme = this.addMixin(theme, elementType, m); + }, this); + }else{ + var t = {}; + if("color" in mixin){ + if(elementType == "line" || elementType == "area"){ + lang.setObject("series.stroke.color", mixin.color, t); + lang.setObject("marker.stroke.color", mixin.color, t); + }else{ + lang.setObject("series.fill", mixin.color, t); + } + } + arr.forEach(["stroke", "outline", "shadow", "fill", "font", "fontColor", "labelWiring"], function(name){ + var markerName = "marker" + name.charAt(0).toUpperCase() + name.substr(1), + b = markerName in mixin; + if(name in mixin){ + lang.setObject("series." + name, mixin[name], t); + if(!b){ + lang.setObject("marker." + name, mixin[name], t); + } + } + if(b){ + lang.setObject("marker." + name, mixin[markerName], t); + } + }); + if("marker" in mixin){ + t.symbol = mixin.marker; + } + theme = dlu.merge(theme, t); + } + if(doPost){ + theme = this.post(theme, elementType); + } + return theme; // dojox.charting.Theme + }, + + post: function(theme, elementType){ + // summary: + // Process any post-shape fills. + // theme: dojox.charting.Theme + // The theme to post process with. + // elementType: String + // The type of element being filled. Can be "bar" or "circle". + // returns: dojox.charting.Theme + // The post-processed theme. + var fill = theme.series.fill, t; + if(!this.noGradConv && this.shapeSpaces[fill.space] && fill.type == "linear"){ + if(elementType == "bar"){ + // transpose start and end points + t = { + x1: fill.y1, + y1: fill.x1, + x2: fill.y2, + y2: fill.x2 + }; + }else if(!this.noRadialConv && fill.space == "shape" && (elementType == "slice" || elementType == "circle")){ + // switch to radial + t = { + type: "radial", + cx: 0, + cy: 0, + r: 100 + }; + } + if(t){ + return dlu.merge(theme, {series: {fill: t}}); + } + } + return theme; // dojox.charting.Theme + }, + + getTick: function(name, mixin){ + // summary: + // Calculates and merges tick parameters. + // name: String + // Tick name, can be "major", "minor", or "micro". + // mixin: Object? + // Optional object to mix in to the tick. + var tick = this.axis.tick, tickName = name + "Tick", + merge = dlu.merge; + if(tick){ + if(this.axis[tickName]){ + tick = merge(tick, this.axis[tickName]); + } + }else{ + tick = this.axis[tickName]; + } + if(mixin){ + if(tick){ + if(mixin[tickName]){ + tick = merge(tick, mixin[tickName]); + } + }else{ + tick = mixin[tickName]; + } + } + return tick; // Object + }, + + inspectObjects: function(f){ + arr.forEach(["chart", "plotarea", "axis", "series", "marker", "indicator"], function(name){ + f(this[name]); + }, this); + if(this.seriesThemes){ + arr.forEach(this.seriesThemes, f); + } + if(this.markerThemes){ + arr.forEach(this.markerThemes, f); + } + }, + + reverseFills: function(){ + this.inspectObjects(function(o){ + if(o && o.fill){ + o.fill = dgg.reverse(o.fill); + } + }); + }, + + addMarker:function(/*String*/ name, /*String*/ segment){ + // summary: + // Add a custom marker to this theme. + // example: + // | myTheme.addMarker("Ellipse", foo); + this.markers[name] = segment; + this._buildMarkerArray(); + }, + + setMarkers:function(/*Object*/ obj){ + // summary: + // Set all the markers of this theme at once. obj should be a + // dictionary of keys and path segments. + // + // example: + // | myTheme.setMarkers({ "CIRCLE": foo }); + this.markers = obj; + this._buildMarkerArray(); + }, + + _buildMarkerArray: function(){ + this._markers = []; + for(var p in this.markers){ + this._markers.push(this.markers[p]); + } + } +}); + +/*===== +dojox.charting.Theme.__DefineColorArgs = function(num, colors, hue, saturation, low, high, base, generator){ + // summary: + // The arguments object that can be passed to define colors for a theme. + // num: Number? + // The number of colors to generate. Defaults to 5. + // colors: String[]|dojo.Color[]? + // A pre-defined set of colors; this is passed through to the Theme directly. + // hue: Number? + // A hue to base the generated colors from (a number from 0 - 359). + // saturation: Number? + // If a hue is passed, this is used for the saturation value (0 - 100). + // low: Number? + // An optional value to determine the lowest value used to generate a color (HSV model) + // high: Number? + // An optional value to determine the highest value used to generate a color (HSV model) + // base: String|dojo.Color? + // A base color to use if we are defining colors using dojox.color.Palette + // generator: String? + // The generator function name from dojox.color.Palette. + this.num = num; + this.colors = colors; + this.hue = hue; + this.saturation = saturation; + this.low = low; + this.high = high; + this.base = base; + this.generator = generator; +} +=====*/ +lang.mixin(Theme, { + defaultMarkers: { + CIRCLE: "m-3,0 c0,-4 6,-4 6,0 m-6,0 c0,4 6,4 6,0", + SQUARE: "m-3,-3 l0,6 6,0 0,-6 z", + DIAMOND: "m0,-3 l3,3 -3,3 -3,-3 z", + CROSS: "m0,-3 l0,6 m-3,-3 l6,0", + X: "m-3,-3 l6,6 m0,-6 l-6,6", + TRIANGLE: "m-3,3 l3,-6 3,6 z", + TRIANGLE_INVERTED: "m-3,-3 l3,6 3,-6 z" + }, + + defaultColors:[ + // gray skies + "#54544c", "#858e94", "#6e767a", "#948585", "#474747" + ], + + defaultTheme: { + // all objects are structs used directly in dojox.gfx + chart:{ + stroke: null, + fill: "white", + pageStyle: null, + titleGap: 20, + titlePos: "top", + titleFont: "normal normal bold 14pt Tahoma", // labels on axis + titleFontColor: "#333" + }, + plotarea:{ + stroke: null, + fill: "white" + }, + // TODO: label rotation on axis + axis:{ + stroke: { // the axis itself + color: "#333", + width: 1 + }, + tick: { // used as a foundation for all ticks + color: "#666", + position: "center", + font: "normal normal normal 7pt Tahoma", // labels on axis + fontColor: "#333", // color of labels + titleGap: 15, + titleFont: "normal normal normal 11pt Tahoma", // labels on axis + titleFontColor: "#333", // color of labels + titleOrientation: "axis" // "axis": facing the axis, "away": facing away + }, + majorTick: { // major ticks on axis, and used for major gridlines + width: 1, + length: 6 + }, + minorTick: { // minor ticks on axis, and used for minor gridlines + width: 0.8, + length: 3 + }, + microTick: { // minor ticks on axis, and used for minor gridlines + width: 0.5, + length: 1 + } + }, + series: { + // used as a "main" theme for series, sThemes augment it + stroke: {width: 1.5, color: "#333"}, // line + outline: {width: 0.1, color: "#ccc"}, // outline + //shadow: {dx: 1, dy: 1, width: 2, color: [0, 0, 0, 0.3]}, + shadow: null, // no shadow + fill: "#ccc", // fill, if appropriate + font: "normal normal normal 8pt Tahoma", // if there's a label + fontColor: "#000", // color of labels + labelWiring: {width: 1, color: "#ccc"} // connect marker and target data item(slice, column, bar...) + }, + marker: { // any markers on a series + stroke: {width: 1.5, color: "#333"}, // stroke + outline: {width: 0.1, color: "#ccc"}, // outline + //shadow: {dx: 1, dy: 1, width: 2, color: [0, 0, 0, 0.3]}, + shadow: null, // no shadow + fill: "#ccc", // fill if needed + font: "normal normal normal 8pt Tahoma", // label + fontColor: "#000" + }, + indicator: { + lineStroke: {width: 1.5, color: "#333"}, + lineOutline: {width: 0.1, color: "#ccc"}, + lineShadow: null, + stroke: {width: 1.5, color: "#333"}, + outline: {width: 0.1, color: "#ccc"}, + shadow: null, + fill : "#ccc", + radius: 3, + font: "normal normal normal 10pt Tahoma", + fontColor: "#000", + markerFill: "#ccc", + markerSymbol: "m-3,0 c0,-4 6,-4 6,0 m-6,0 c0,4 6,4 6,0", + markerStroke: {width: 1.5, color: "#333"}, + markerOutline: {width: 0.1, color: "#ccc"}, + markerShadow: null + } + }, + + defineColors: function(kwArgs){ + // summary: + // Generate a set of colors for the theme based on keyword + // arguments. + // kwArgs: dojox.charting.Theme.__DefineColorArgs + // The arguments object used to define colors. + // returns: dojo.Color[] + // An array of colors for use in a theme. + // + // example: + // | var colors = dojox.charting.Theme.defineColors({ + // | base: "#369", + // | generator: "compound" + // | }); + // + // example: + // | var colors = dojox.charting.Theme.defineColors({ + // | hue: 60, + // | saturation: 90, + // | low: 30, + // | high: 80 + // | }); + kwArgs = kwArgs || {}; + var l, c = [], n = kwArgs.num || 5; // the number of colors to generate + if(kwArgs.colors){ + // we have an array of colors predefined, so fix for the number of series. + l = kwArgs.colors.length; + for(var i = 0; i < n; i++){ + c.push(kwArgs.colors[i % l]); + } + return c; // dojo.Color[] + } + if(kwArgs.hue){ + // single hue, generate a set based on brightness + var s = kwArgs.saturation || 100, // saturation + st = kwArgs.low || 30, + end = kwArgs.high || 90; + // we'd like it to be a little on the darker side. + l = (end + st) / 2; + // alternately, use "shades" + return colorX.Palette.generate( + colorX.fromHsv(kwArgs.hue, s, l), "monochromatic" + ).colors; + } + if(kwArgs.generator){ + // pass a base color and the name of a generator + return colorX.Palette.generate(kwArgs.base, kwArgs.generator).colors; + } + return c; // dojo.Color[] + }, + + generateGradient: function(fillPattern, colorFrom, colorTo){ + var fill = lang.delegate(fillPattern); + fill.colors = [ + {offset: 0, color: colorFrom}, + {offset: 1, color: colorTo} + ]; + return fill; + }, + + generateHslColor: function(color, luminance){ + color = new Color(color); + var hsl = color.toHsl(), + result = colorX.fromHsl(hsl.h, hsl.s, luminance); + result.a = color.a; // add missing opacity + return result; + }, + + generateHslGradient: function(color, fillPattern, lumFrom, lumTo){ + color = new Color(color); + var hsl = color.toHsl(), + colorFrom = colorX.fromHsl(hsl.h, hsl.s, lumFrom), + colorTo = colorX.fromHsl(hsl.h, hsl.s, lumTo); + colorFrom.a = colorTo.a = color.a; // add missing opacity + return Theme.generateGradient(fillPattern, colorFrom, colorTo); // Object + } +}); + +return Theme; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/Base.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Base.js new file mode 100644 index 0000000..36cba66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Base.js @@ -0,0 +1,36 @@ +define(["dojo/_base/lang", "dojo/_base/declare"], + function(lang, declare){ + + return declare("dojox.charting.action2d.Base", null, { + // summary: + // Base action class for plot and chart actions. + + constructor: function(chart, plot){ + // summary: + // Create a new base action. This can either be a plot or a chart action. + // chart: dojox.charting.Chart + // The chart this action applies to. + // plot: String?|dojox.charting.plot2d.Base? + // Optional target plot for this action. Default is "default". + this.chart = chart; + this.plot = plot ? (lang.isString(plot) ? this.chart.getPlot(plot) : plot) : this.chart.getPlot("default"); + }, + + connect: function(){ + // summary: + // Connect this action to the plot or the chart. + }, + + disconnect: function(){ + // summary: + // Disconnect this action from the plot or the chart. + }, + + destroy: function(){ + // summary: + // Do any cleanup needed when destroying parent elements. + this.disconnect(); + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/ChartAction.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/ChartAction.js new file mode 100644 index 0000000..e438daf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/ChartAction.js @@ -0,0 +1,38 @@ +define(["dojo/_base/connect", "dojo/_base/declare", "./Base"], + function(hub, declare, Base){ + /*===== + var Base = dojox.charting.action2d.Base; + =====*/ + return declare("dojox.charting.action2d.ChartAction", Base, { + // summary: + // Base action class for chart actions. + + constructor: function(chart, plot){ + // summary: + // Create a new base chart action. + // chart: dojox.charting.Chart + // The chart this action applies to. + // plot: String?|dojox.charting.plot2d.Base? + // Optional target plot for this chart action. Default is "default". + }, + + connect: function(){ + // summary: + // Connect this action to the chart. + for(var i = 0; i < this._listeners.length; ++i){ + this._listeners[i].handle = hub.connect(this.chart.node, this._listeners[i].eventName, + this, this._listeners[i].methodName); + } + }, + + disconnect: function(){ + // summary: + // Disconnect this action from the chart. + for(var i = 0; i < this._listeners.length; ++i){ + hub.disconnect(this._listeners[i].handle); + delete this._listeners[i].handle; + } + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/Highlight.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Highlight.js new file mode 100644 index 0000000..acf189e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Highlight.js @@ -0,0 +1,126 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare", "dojo/_base/Color", "dojo/_base/connect", "dojox/color/_base", + "./PlotAction", "dojo/fx/easing", "dojox/gfx/fx"], + function(dojo, lang, declare, Color, hub, c, PlotAction, dfe, dgf){ + + /*===== + dojo.declare("dojox.charting.action2d.__HighlightCtorArgs", dojox.charting.action2d.__PlotActionCtorArgs, { + // summary: + // Additional arguments for highlighting actions. + + // highlight: String|dojo.Color|Function? + // Either a color or a function that creates a color when highlighting happens. + highlight: null + }); + var PlotAction = dojox.charting.action2d.PlotAction; + =====*/ + + var DEFAULT_SATURATION = 100, // % + DEFAULT_LUMINOSITY1 = 75, // % + DEFAULT_LUMINOSITY2 = 50, // % + cc = function(color){ + return function(){ return color; }; + }, + + hl = function(color){ + var a = new c.Color(color), + x = a.toHsl(); + if(x.s == 0){ + x.l = x.l < 50 ? 100 : 0; + }else{ + x.s = DEFAULT_SATURATION; + if(x.l < DEFAULT_LUMINOSITY2){ + x.l = DEFAULT_LUMINOSITY1; + }else if(x.l > DEFAULT_LUMINOSITY1){ + x.l = DEFAULT_LUMINOSITY2; + }else{ + x.l = x.l - DEFAULT_LUMINOSITY2 > DEFAULT_LUMINOSITY1 - x.l ? + DEFAULT_LUMINOSITY2 : DEFAULT_LUMINOSITY1; + } + } + return c.fromHsl(x); + }; + + return declare("dojox.charting.action2d.Highlight", PlotAction, { + // summary: + // Creates a highlighting action on a plot, where an element on that plot + // has a highlight on it. + + // the data description block for the widget parser + defaultParams: { + duration: 400, // duration of the action in ms + easing: dfe.backOut // easing for the action + }, + optionalParams: { + highlight: "red" // name for the highlight color + // programmatic instantiation can use functions and color objects + }, + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create the highlighting action and connect it to the plot. + // chart: dojox.charting.Chart + // The chart this action belongs to. + // plot: String? + // The plot this action is attached to. If not passed, "default" is assumed. + // kwArgs: charting.action2d.__HighlightCtorArgs? + // Optional keyword arguments object for setting parameters. + var a = kwArgs && kwArgs.highlight; + this.colorFun = a ? (lang.isFunction(a) ? a : cc(a)) : hl; + + this.connect(); + }, + + process: function(o){ + // summary: + // Process the action on the given object. + // o: dojox.gfx.Shape + // The object on which to process the highlighting action. + if(!o.shape || !(o.type in this.overOutEvents)){ return; } + + var runName = o.run.name, index = o.index, anim, startFill, endFill; + + if(runName in this.anim){ + anim = this.anim[runName][index]; + }else{ + this.anim[runName] = {}; + } + + if(anim){ + anim.action.stop(true); + }else{ + var color = o.shape.getFill(); + if(!color || !(color instanceof Color)){ + return; + } + this.anim[runName][index] = anim = { + start: color, + end: this.colorFun(color) + }; + } + + var start = anim.start, end = anim.end; + if(o.type == "onmouseout"){ + // swap colors + var t = start; + start = end; + end = t; + } + + anim.action = dgf.animateFill({ + shape: o.shape, + duration: this.duration, + easing: this.easing, + color: {start: start, end: end} + }); + if(o.type == "onmouseout"){ + hub.connect(anim.action, "onEnd", this, function(){ + if(this.anim[runName]){ + delete this.anim[runName][index]; + } + }); + } + anim.action.play(); + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/Magnify.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Magnify.js new file mode 100644 index 0000000..b3707a9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Magnify.js @@ -0,0 +1,116 @@ +define(["dojo/_base/connect", "dojo/_base/declare", + "./PlotAction", "dojox/gfx/matrix", + "dojox/gfx/fx", "dojo/fx", "dojo/fx/easing"], + function(Hub, declare, PlotAction, m, gf, df, dfe){ + + /*===== + dojo.declare("dojox.charting.action2d.__MagnifyCtorArgs", dojox.charting.action2d.__PlotActionCtorArgs, { + // summary: + // Additional arguments for highlighting actions. + + // scale: Number? + // The amount to magnify the given object to. Default is 2. + scale: 2 + }); + var PlotAction = dojox.charting.action2d.PlotAction; + =====*/ + + var DEFAULT_SCALE = 2; + + return declare("dojox.charting.action2d.Magnify", PlotAction, { + // summary: + // Create an action that magnifies the object the action is applied to. + + // the data description block for the widget parser + defaultParams: { + duration: 400, // duration of the action in ms + easing: dfe.backOut, // easing for the action + scale: DEFAULT_SCALE // scale of magnification + }, + optionalParams: {}, // no optional parameters + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create the magnifying action. + // chart: dojox.charting.Chart + // The chart this action belongs to. + // plot: String? + // The plot to apply the action to. If not passed, "default" is assumed. + // kwArgs: dojox.charting.action2d.__MagnifyCtorArgs? + // Optional keyword arguments for this action. + + // process optional named parameters + this.scale = kwArgs && typeof kwArgs.scale == "number" ? kwArgs.scale : DEFAULT_SCALE; + + this.connect(); + }, + + process: function(o){ + // summary: + // Process the action on the given object. + // o: dojox.gfx.Shape + // The object on which to process the magnifying action. + if(!o.shape || !(o.type in this.overOutEvents) || + !("cx" in o) || !("cy" in o)){ return; } + + var runName = o.run.name, index = o.index, vector = [], anim, init, scale; + + if(runName in this.anim){ + anim = this.anim[runName][index]; + }else{ + this.anim[runName] = {}; + } + + if(anim){ + anim.action.stop(true); + }else{ + this.anim[runName][index] = anim = {}; + } + + if(o.type == "onmouseover"){ + init = m.identity; + scale = this.scale; + }else{ + init = m.scaleAt(this.scale, o.cx, o.cy); + scale = 1 / this.scale; + } + + var kwArgs = { + shape: o.shape, + duration: this.duration, + easing: this.easing, + transform: [ + {name: "scaleAt", start: [1, o.cx, o.cy], end: [scale, o.cx, o.cy]}, + init + ] + }; + if(o.shape){ + vector.push(gf.animateTransform(kwArgs)); + } + if(o.oultine){ + kwArgs.shape = o.outline; + vector.push(gf.animateTransform(kwArgs)); + } + if(o.shadow){ + kwArgs.shape = o.shadow; + vector.push(gf.animateTransform(kwArgs)); + } + + if(!vector.length){ + delete this.anim[runName][index]; + return; + } + + anim.action = df.combine(vector); + if(o.type == "onmouseout"){ + Hub.connect(anim.action, "onEnd", this, function(){ + if(this.anim[runName]){ + delete this.anim[runName][index]; + } + }); + } + anim.action.play(); + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/MouseIndicator.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/MouseIndicator.js new file mode 100644 index 0000000..a982d2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/MouseIndicator.js @@ -0,0 +1,221 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/connect", "dojo/_base/window", "dojo/_base/sniff", + "./ChartAction", "./_IndicatorElement", "dojox/lang/utils", "dojo/_base/event","dojo/_base/array"], + function(lang, declare, hub, win, has, ChartAction, IndicatorElement, du, eventUtil, arr){ + + /*===== + dojo.declare("dojox.charting.action2d.__MouseIndicatorCtorArgs", null, { + // summary: + // Additional arguments for mouse indicator. + + // series: String + // Target series name for this action. + series: "", + + // autoScroll: Boolean? + // Whether when moving indicator the chart is automatically scrolled. Default is true. + autoScroll: true, + + // vertical: Boolean? + // Whether the indicator is vertical or not. Default is true. + vertical: true, + + // fixed: Boolean? + // Whether a fixed precision must be applied to data values for display. Default is true. + fixed: true, + + // precision: Number? + // The precision at which to round data values for display. Default is 1. + precision: 0, + + // lineStroke: dojo.gfx.Stroke? + // An optional stroke to use for indicator line. + lineStroke: {}, + + // lineOutline: dojo.gfx.Stroke? + // An optional outline to use for indicator line. + lineOutline: {}, + + // lineShadow: dojo.gfx.Stroke? + // An optional shadow to use for indicator line. + lineShadow: {}, + + // stroke: dojo.gfx.Stroke? + // An optional stroke to use for indicator label background. + stroke: {}, + + // outline: dojo.gfx.Stroke? + // An optional outline to use for indicator label background. + outline: {}, + + // shadow: dojo.gfx.Stroke? + // An optional shadow to use for indicator label background. + shadow: {}, + + // fill: dojo.gfx.Fill? + // An optional fill to use for indicator label background. + fill: {}, + + // fillFunc: Function? + // An optional function to use to compute label background fill. It takes precedence over + // fill property when available. + fillFunc: null, + + // labelFunc: Function? + // An optional function to use to compute label text. It takes precedence over + // the default text when available. + labelFunc: {}, + + // font: String? + // A font definition to use for indicator label background. + font: "", + + // fontColor: String|dojo.Color? + // The color to use for indicator label background. + fontColor: "", + + // markerStroke: dojo.gfx.Stroke? + // An optional stroke to use for indicator marker. + markerStroke: {}, + + // markerOutline: dojo.gfx.Stroke? + // An optional outline to use for indicator marker. + markerOutline: {}, + + // markerShadow: dojo.gfx.Stroke? + // An optional shadow to use for indicator marker. + markerShadow: {}, + + // markerFill: dojo.gfx.Fill? + // An optional fill to use for indicator marker. + markerFill: {}, + + // markerSymbol: String? + // An optional symbol string to use for indicator marker. + markerFill: {} + }); + var ChartAction = dojox.charting.action2d.ChartAction; + =====*/ + + return declare("dojox.charting.action2d.MouseIndicator", ChartAction, { + // summary: + // Create a mouse indicator action. You can drag mouse over the chart to display a data indicator. + + // the data description block for the widget parser + defaultParams: { + series: "", + vertical: true, + autoScroll: true, + fixed: true, + precision: 0 + }, + optionalParams: { + lineStroke: {}, + outlineStroke: {}, + shadowStroke: {}, + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + fillFunc: null, + labelFunc: null, + font: "", + fontColor: "", + markerStroke: {}, + markerOutline: {}, + markerShadow: {}, + markerFill: {}, + markerSymbol: "" + }, + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create an mouse indicator action and connect it. + // chart: dojox.charting.Chart + // The chart this action applies to. + // kwArgs: dojox.charting.action2d.__MouseIndicatorCtorArgs? + // Optional arguments for the chart action. + this._listeners = [{eventName: "onmousedown", methodName: "onMouseDown"}]; + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this._uName = "mouseIndicator"+this.opt.series; + this._handles = []; + this.connect(); + }, + + _disconnectHandles: function(){ + if(has("ie")){ + this.chart.node.releaseCapture(); + } + arr.forEach(this._handles, hub.disconnect); + this._handles = []; + }, + + connect: function(){ + // summary: + // Connect this action to the chart. This adds a indicator plot + // to the chart that's why Chart.render() must be called after connect. + this.inherited(arguments); + // add plot with unique name + this.chart.addPlot(this._uName, {type: IndicatorElement, inter: this}); + }, + + disconnect: function(){ + // summary: + // Disconnect this action from the chart. + if(this._isMouseDown){ + this.onMouseUp(); + } + this.chart.removePlot(this._uName); + this.inherited(arguments); + this._disconnectHandles(); + }, + + onMouseDown: function(event){ + // summary: + // Called when mouse is down on the chart. + this._isMouseDown = true; + + // we now want to capture mouse move events everywhere to avoid + // stop scrolling when going out of the chart window + if(has("ie")){ + this._handles.push(hub.connect(this.chart.node, "onmousemove", this, "onMouseMove")); + this._handles.push(hub.connect(this.chart.node, "onmouseup", this, "onMouseUp")); + this.chart.node.setCapture(); + }else{ + this._handles.push(hub.connect(win.doc, "onmousemove", this, "onMouseMove")); + this._handles.push(hub.connect(win.doc, "onmouseup", this, "onMouseUp")); + } + + this._onMouseSingle(event); + }, + + onMouseMove: function(event){ + // summary: + // Called when the mouse is moved on the chart. + if(this._isMouseDown){ + this._onMouseSingle(event); + } + }, + + _onMouseSingle: function(event){ + var plot = this.chart.getPlot(this._uName); + plot.pageCoord = {x: event.pageX, y: event.pageY}; + plot.dirty = true; + this.chart.render(); + eventUtil.stop(event); + }, + + onMouseUp: function(event){ + // summary: + // Called when mouse is up on the chart. + var plot = this.chart.getPlot(this._uName); + plot.stopTrack(); + this._isMouseDown = false; + this._disconnectHandles(); + plot.pageCoord = null; + plot.dirty = true; + this.chart.render(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/MouseZoomAndPan.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/MouseZoomAndPan.js new file mode 100644 index 0000000..37226d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/MouseZoomAndPan.js @@ -0,0 +1,245 @@ +define(["dojo/_base/html", "dojo/_base/declare", "dojo/_base/window", "dojo/_base/array", "dojo/_base/event", + "dojo/_base/connect", "./ChartAction", "dojo/_base/sniff", "dojo/dom-prop", "dojo/keys"], + function(html, declare, win, arr, eventUtil, connect, ChartAction, has, domProp, keys){ + + /*===== + dojo.declare("dojox.charting.action2d.__MouseZoomAndPanCtorArgs", null, { + // summary: + // Additional arguments for mouse zoom and pan actions. + + // axis: String? + // Target axis name for this action. Default is "x". + axis: "x", + // scaleFactor: Number? + // The scale factor applied on mouse wheel zoom. Default is 1.2. + scaleFactor: 1.2, + // maxScale: Number? + // The max scale factor accepted by this chart action. Default is 100. + maxScale: 100, + // enableScroll: Boolean? + // Whether mouse drag gesture should scroll the chart. Default is true. + enableScroll: true, + // enableDoubleClickZoom: Boolean? + // Whether a double click gesture should toggle between fit and zoom on the chart. Default is true. + enableDoubleClickZoom: true, + // enableKeyZoom: Boolean? + // Whether a keyZoomModifier + + or keyZoomModifier + - key press should zoom in our out on the chart. Default is true. + enableKeyZoom: true, + // keyZoomModifier: String? + // Which keyboard modifier should used for keyboard zoom in and out. This should be one of "alt", "ctrl", "shift" or "none" for no modifier. Default is "ctrl". + keyZoomModifier: "ctrl" + }); + var ChartAction = dojox.charting.action2d.ChartAction; + =====*/ + + var sUnit = has("mozilla") ? -3 : 120; + var keyTests = { + none: function(event){ + return !event.ctrlKey && !event.altKey && !event.shiftKey; + }, + ctrl: function(event){ + return event.ctrlKey && !event.altKey && !event.shiftKey; + }, + alt: function(event){ + return !event.ctrlKey && event.altKey && !event.shiftKey; + }, + shift: function(event){ + return !event.ctrlKey && !event.altKey && event.shiftKey; + } + }; + + return declare("dojox.charting.action2d.MouseZoomAndPan", ChartAction, { + // summary: + // Create an mouse zoom and pan action. + // You can zoom in or out the data window with mouse wheel. You can scroll using mouse drag gesture. + // You can toggle between zoom and fit view using double click on the chart. + + // the data description block for the widget parser + defaultParams: { + axis: "x", + scaleFactor: 1.2, + maxScale: 100, + enableScroll: true, + enableDoubleClickZoom: true, + enableKeyZoom: true, + keyZoomModifier: "ctrl" + }, + optionalParams: {}, // no optional parameters + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create an mouse zoom and pan action and connect it. + // chart: dojox.charting.Chart + // The chart this action applies to. + // kwArgs: dojox.charting.action2d.__MouseZoomAndPanCtorArgs? + // Optional arguments for the chart action. + this._listeners = [{eventName: !has("mozilla") ? "onmousewheel" : "DOMMouseScroll", methodName: "onMouseWheel"}]; + if(!kwArgs){ kwArgs = {}; } + this.axis = kwArgs.axis ? kwArgs.axis : "x"; + this.scaleFactor = kwArgs.scaleFactor ? kwArgs.scaleFactor : 1.2; + this.maxScale = kwArgs.maxScale ? kwArgs.maxScale : 100; + this.enableScroll = kwArgs.enableScroll != undefined ? kwArgs.enableScroll : true; + this.enableDoubleClickZoom = kwArgs.enableDoubleClickZoom != undefined ? kwArgs.enableDoubleClickZoom : true; + this.enableKeyZoom = kwArgs.enableKeyZoom != undefined ? kwArgs.enableKeyZoom : true; + this.keyZoomModifier = kwArgs.keyZoomModifier ? kwArgs.keyZoomModifier : "ctrl"; + if(this.enableScroll){ + this._listeners.push({eventName: "onmousedown", methodName: "onMouseDown"}); + } + if(this.enableDoubleClickZoom){ + this._listeners.push({eventName: "ondblclick", methodName: "onDoubleClick"}); + } + if(this.enableKeyZoom){ + this._listeners.push({eventName: "keypress", methodName: "onKeyPress"}); + } + this._handles = []; + this.connect(); + }, + + _disconnectHandles: function(){ + if(has("ie")){ + this.chart.node.releaseCapture(); + } + arr.forEach(this._handles, connect.disconnect); + this._handles = []; + }, + + connect: function(){ + // summary: + // Connect this action to the chart. + this.inherited(arguments); + if(this.enableKeyZoom){ + // we want to be able to get focus to receive key events + domProp.set(this.chart.node, "tabindex", "0"); + // if one doesn't want a focus border he can do something like + // dojo.style(this.chart.node, "outline", "none"); + } + }, + + disconnect: function(){ + // summary: + // Disconnect this action from the chart. + this.inherited(arguments); + if(this.enableKeyZoom){ + // we don't need anymore to be able to get focus to receive key events + domProp.set(this.chart.node, "tabindex", "-1"); + } + // in case we disconnect before the end of the action + this._disconnectHandles(); + }, + + onMouseDown: function(event){ + // summary: + // Called when mouse is down on the chart. + var chart = this.chart, axis = chart.getAxis(this.axis); + if(!axis.vertical){ + this._startCoord = event.pageX; + }else{ + this._startCoord = event.pageY; + } + this._startOffset = axis.getWindowOffset(); + this._isPanning = true; + // we now want to capture mouse move events everywhere to avoid + // stop scrolling when going out of the chart window + if(has("ie")){ + this._handles.push(connect.connect(this.chart.node, "onmousemove", this, "onMouseMove")); + this._handles.push(connect.connect(this.chart.node, "onmouseup", this, "onMouseUp")); + this.chart.node.setCapture(); + }else{ + this._handles.push(connect.connect(win.doc, "onmousemove", this, "onMouseMove")); + this._handles.push(connect.connect(win.doc, "onmouseup", this, "onMouseUp")); + } + chart.node.focus(); + // prevent the browser from trying the drag on the "image" + eventUtil.stop(event); + }, + + onMouseMove: function(event){ + // summary: + // Called when mouse is moved on the chart. + if(this._isPanning){ + var chart = this.chart, axis = chart.getAxis(this.axis); + var delta = axis.vertical?(this._startCoord- event.pageY):(event.pageX - this._startCoord); + + var bounds = axis.getScaler().bounds, + s = bounds.span / (bounds.upper - bounds.lower); + + var scale = axis.getWindowScale(); + + chart.setAxisWindow(this.axis, scale, this._startOffset - delta / s / scale); + chart.render(); + } + }, + + onMouseUp: function(event){ + // summary: + // Called when mouse is up on the chart. + this._isPanning = false; + this._disconnectHandles(); + }, + + onMouseWheel: function(event){ + // summary: + // Called when mouse wheel is used on the chart. + var scroll = event[(has("mozilla") ? "detail" : "wheelDelta")] / sUnit; + // on Mozilla the sUnit might actually not always be 3 + // make sure we never have -1 < scroll < 1 + if(scroll > -1 && scroll < 0){ + scroll = -1; + }else if(scroll > 0 && scroll < 1){ + scroll = 1; + } + this._onZoom(scroll, event); + }, + + onKeyPress: function(event){ + // summary: + // Called when a key is pressed on the chart. + if(keyTests[this.keyZoomModifier](event)){ + if(event.keyChar == "+" || event.keyCode == keys.NUMPAD_PLUS){ + this._onZoom(1, event); + }else if(event.keyChar == "-" || event.keyCode == keys.NUMPAD_MINUS){ + this._onZoom(-1, event); + } + } + }, + + onDoubleClick: function(event){ + // summary: + // Called when the mouse is double is double clicked on the chart. Toggle between zoom and fit chart. + var chart = this.chart, axis = chart.getAxis(this.axis); + var scale = 1 / this.scaleFactor; + // are we fit? + if(axis.getWindowScale()==1){ + // fit => zoom + var scaler = axis.getScaler(), start = scaler.bounds.from, end = scaler.bounds.to, + oldMiddle = (start + end) / 2, newMiddle = this.plot.toData({x: event.pageX, y: event.pageY})[this.axis], + newStart = scale * (start - oldMiddle) + newMiddle, newEnd = scale * (end - oldMiddle) + newMiddle; + chart.zoomIn(this.axis, [newStart, newEnd]); + }else{ + // non fit => fit + chart.setAxisWindow(this.axis, 1, 0); + chart.render(); + } + eventUtil.stop(event); + }, + + _onZoom: function(scroll, event){ + var scale = (scroll < 0 ? Math.abs(scroll)*this.scaleFactor : + 1 / (Math.abs(scroll)*this.scaleFactor)); + var chart = this.chart, axis = chart.getAxis(this.axis); + // after wheel reset event position exactly if we could start a new scroll action + var cscale = axis.getWindowScale(); + if(cscale / scale > this.maxScale){ + return; + } + var scaler = axis.getScaler(), start = scaler.bounds.from, end = scaler.bounds.to; + // keep mouse pointer as transformation center if available otherwise center + var middle = (event.type == "keypress") ? (start + end) / 2 : + this.plot.toData({x: event.pageX, y: event.pageY})[this.axis]; + var newStart = scale * (start - middle) + middle, newEnd = scale * (end - middle) + middle; + chart.zoomIn(this.axis, [newStart, newEnd]); + // do not scroll browser + eventUtil.stop(event); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/MoveSlice.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/MoveSlice.js new file mode 100644 index 0000000..8ea61d3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/MoveSlice.js @@ -0,0 +1,121 @@ +define(["dojo/_base/connect", "dojo/_base/declare", "./PlotAction", "dojo/fx/easing", "dojox/gfx/matrix", + "dojox/gfx/fx", "dojox/lang/functional", "dojox/lang/functional/scan", "dojox/lang/functional/fold"], + function(hub, declare, PlotAction, dfe, m, gf, df, dfs, dff){ + + /*===== + dojo.declare("dojox.charting.action2d.__MoveSliceCtorArgs", dojox.charting.action2d.__PlotActionCtorArgs, { + // summary: + // Additional arguments for highlighting actions. + + // scale: Number? + // The amount to scale the pie slice. Default is 1.05. + scale: 1.05, + + // shift: Number? + // The amount in pixels to shift the pie slice. Default is 7. + shift: 7 + }); + var PlotAction = dojox.charting.action2d.PlotAction; + =====*/ + + var DEFAULT_SCALE = 1.05, + DEFAULT_SHIFT = 7; // px + + return declare("dojox.charting.action2d.MoveSlice", PlotAction, { + // summary: + // Create an action for a pie chart that moves and scales a pie slice. + + // the data description block for the widget parser + defaultParams: { + duration: 400, // duration of the action in ms + easing: dfe.backOut, // easing for the action + scale: DEFAULT_SCALE, // scale of magnification + shift: DEFAULT_SHIFT // shift of the slice + }, + optionalParams: {}, // no optional parameters + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create the slice moving action and connect it to the plot. + // chart: dojox.charting.Chart + // The chart this action belongs to. + // plot: String? + // The plot this action is attached to. If not passed, "default" is assumed. + // kwArgs: dojox.charting.action2d.__MoveSliceCtorArgs? + // Optional keyword arguments object for setting parameters. + if(!kwArgs){ kwArgs = {}; } + this.scale = typeof kwArgs.scale == "number" ? kwArgs.scale : DEFAULT_SCALE; + this.shift = typeof kwArgs.shift == "number" ? kwArgs.shift : DEFAULT_SHIFT; + + this.connect(); + }, + + process: function(o){ + // summary: + // Process the action on the given object. + // o: dojox.gfx.Shape + // The object on which to process the slice moving action. + if(!o.shape || o.element != "slice" || !(o.type in this.overOutEvents)){ return; } + + if(!this.angles){ + // calculate the running total of slice angles + var startAngle = m._degToRad(o.plot.opt.startAngle); + if(typeof o.run.data[0] == "number"){ + this.angles = df.map(df.scanl(o.run.data, "+", startAngle), + "* 2 * Math.PI / this", df.foldl(o.run.data, "+", 0)); + }else{ + this.angles = df.map(df.scanl(o.run.data, "a + b.y", startAngle), + "* 2 * Math.PI / this", df.foldl(o.run.data, "a + b.y", 0)); + } + } + + var index = o.index, anim, startScale, endScale, startOffset, endOffset, + angle = (this.angles[index] + this.angles[index + 1]) / 2, + rotateTo0 = m.rotateAt(-angle, o.cx, o.cy), + rotateBack = m.rotateAt( angle, o.cx, o.cy); + + anim = this.anim[index]; + + if(anim){ + anim.action.stop(true); + }else{ + this.anim[index] = anim = {}; + } + + if(o.type == "onmouseover"){ + startOffset = 0; + endOffset = this.shift; + startScale = 1; + endScale = this.scale; + }else{ + startOffset = this.shift; + endOffset = 0; + startScale = this.scale; + endScale = 1; + } + + anim.action = gf.animateTransform({ + shape: o.shape, + duration: this.duration, + easing: this.easing, + transform: [ + rotateBack, + {name: "translate", start: [startOffset, 0], end: [endOffset, 0]}, + {name: "scaleAt", start: [startScale, o.cx, o.cy], end: [endScale, o.cx, o.cy]}, + rotateTo0 + ] + }); + + if(o.type == "onmouseout"){ + hub.connect(anim.action, "onEnd", this, function(){ + delete this.anim[index]; + }); + } + anim.action.play(); + }, + + reset: function(){ + delete this.angles; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/PlotAction.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/PlotAction.js new file mode 100644 index 0000000..3ac5733 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/PlotAction.js @@ -0,0 +1,78 @@ +define(["dojo/_base/connect", "dojo/_base/declare", "./Base", "dojo/fx/easing", "dojox/lang/functional", + "dojox/lang/functional/object"], + function(hub, declare, Base, dfe, df, dlfo){ + + /*===== + dojox.charting.action2d.__PlotActionCtorArgs = function(duration, easing){ + // summary: + // The base keyword arguments object for creating an action2d. + // duration: Number? + // The amount of time in milliseconds for an animation to last. Default is 400. + // easing: dojo.fx.easing.*? + // An easing object (see dojo.fx.easing) for use in an animation. The + // default is dojo.fx.easing.backOut. + this.duration = duration; + this.easing = easing; + } + var Base = dojox.charting.action2d.Base; + =====*/ + + var DEFAULT_DURATION = 400, // ms + DEFAULT_EASING = dfe.backOut; + + return declare("dojox.charting.action2d.PlotAction", Base, { + // summary: + // Base action class for plot actions. + + overOutEvents: {onmouseover: 1, onmouseout: 1}, + + constructor: function(chart, plot, kwargs){ + // summary: + // Create a new base PlotAction. + // chart: dojox.charting.Chart + // The chart this action applies to. + // plot: String? + // The name of the plot this action belongs to. If none is passed "default" is assumed. + // kwargs: dojox.charting.action2d.__PlotActionCtorArgs? + // Optional arguments for the action. + this.anim = {}; + + // process common optional named parameters + if(!kwargs){ kwargs = {}; } + this.duration = kwargs.duration ? kwargs.duration : DEFAULT_DURATION; + this.easing = kwargs.easing ? kwargs.easing : DEFAULT_EASING; + }, + + connect: function(){ + // summary: + // Connect this action to the given plot. + this.handle = this.chart.connectToPlot(this.plot.name, this, "process"); + }, + + disconnect: function(){ + // summary: + // Disconnect this action from the given plot, if connected. + if(this.handle){ + hub.disconnect(this.handle); + this.handle = null; + } + }, + + reset: function(){ + // summary: + // Reset the action. + }, + + destroy: function(){ + // summary: + // Do any cleanup needed when destroying parent elements. + this.inherited(arguments); + df.forIn(this.anim, function(o){ + df.forIn(o, function(anim){ + anim.action.stop(true); + }); + }); + this.anim = {}; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/Shake.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Shake.js new file mode 100644 index 0000000..3827242 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Shake.js @@ -0,0 +1,108 @@ +define(["dojo/_base/connect", "dojo/_base/declare", "./PlotAction", + "dojo/fx", "dojo/fx/easing", "dojox/gfx/matrix", "dojox/gfx/fx"], + function(hub, declare, PlotAction, df, dfe, m, gf){ + + /*===== + dojo.declare("dojox.charting.action2d.__ShakeCtorArgs", dojox.charting.action2d.__PlotActionCtorArgstorArgs, { + // summary: + // Additional arguments for highlighting actions. + + // shift: Number? + // The amount in pixels to shift the pie slice. Default is 3. + shift: 3 + }); + var PlotAction = dojox.charting.action2d.PlotAction; + =====*/ + + var DEFAULT_SHIFT = 3; + + return declare("dojox.charting.action2d.Shake", PlotAction, { + // summary: + // Create a shaking action for use on an element in a chart. + + // the data description block for the widget parser + defaultParams: { + duration: 400, // duration of the action in ms + easing: dfe.backOut, // easing for the action + shiftX: DEFAULT_SHIFT, // shift of the element along the X axis + shiftY: DEFAULT_SHIFT // shift of the element along the Y axis + }, + optionalParams: {}, // no optional parameters + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create the shaking action and connect it to the plot. + // chart: dojox.charting.Chart + // The chart this action belongs to. + // plot: String? + // The plot this action is attached to. If not passed, "default" is assumed. + // kwArgs: dojox.charting.action2d.__ShakeCtorArgs? + // Optional keyword arguments object for setting parameters. + if(!kwArgs){ kwArgs = {}; } + this.shiftX = typeof kwArgs.shiftX == "number" ? kwArgs.shiftX : DEFAULT_SHIFT; + this.shiftY = typeof kwArgs.shiftY == "number" ? kwArgs.shiftY : DEFAULT_SHIFT; + + this.connect(); + }, + + process: function(o){ + // summary: + // Process the action on the given object. + // o: dojox.gfx.Shape + // The object on which to process the slice moving action. + if(!o.shape || !(o.type in this.overOutEvents)){ return; } + + var runName = o.run.name, index = o.index, vector = [], anim, + shiftX = o.type == "onmouseover" ? this.shiftX : -this.shiftX, + shiftY = o.type == "onmouseover" ? this.shiftY : -this.shiftY; + + if(runName in this.anim){ + anim = this.anim[runName][index]; + }else{ + this.anim[runName] = {}; + } + + if(anim){ + anim.action.stop(true); + }else{ + this.anim[runName][index] = anim = {}; + } + + var kwArgs = { + shape: o.shape, + duration: this.duration, + easing: this.easing, + transform: [ + {name: "translate", start: [this.shiftX, this.shiftY], end: [0, 0]}, + m.identity + ] + }; + if(o.shape){ + vector.push(gf.animateTransform(kwArgs)); + } + if(o.oultine){ + kwArgs.shape = o.outline; + vector.push(gf.animateTransform(kwArgs)); + } + if(o.shadow){ + kwArgs.shape = o.shadow; + vector.push(gf.animateTransform(kwArgs)); + } + + if(!vector.length){ + delete this.anim[runName][index]; + return; + } + + anim.action = df.combine(vector); + if(o.type == "onmouseout"){ + hub.connect(anim.action, "onEnd", this, function(){ + if(this.anim[runName]){ + delete this.anim[runName][index]; + } + }); + } + anim.action.play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/Tooltip.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Tooltip.js new file mode 100644 index 0000000..b86f6f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/Tooltip.js @@ -0,0 +1,166 @@ +define(["dojo/_base/kernel", "dijit/Tooltip","dojo/_base/lang", "dojo/_base/html", "dojo/_base/declare", "./PlotAction", + "dojox/gfx/matrix", "dojox/lang/functional", "dojox/lang/functional/scan", "dojox/lang/functional/fold"], + function(dojo, Tooltip, lang, html, declare, PlotAction, m, df, dfs, dff){ + + /*===== + dojo.declare("dojox.charting.action2d.__TooltipCtorArgs", dojox.charting.action2d.__PlotActionCtorArgs, { + // summary: + // Additional arguments for tooltip actions. + + // text: Function? + // The function that produces the text to be shown within a tooltip. By default this will be + // set by the plot in question, by returning the value of the element. + text: null + }); + var PlotAction = dojox.charting.action2d.PlotAction; + =====*/ + + var DEFAULT_TEXT = function(o){ + var t = o.run && o.run.data && o.run.data[o.index]; + if(t && typeof t != "number" && (t.tooltip || t.text)){ + return t.tooltip || t.text; + } + if(o.element == "candlestick"){ + return '' + + '' + + '' + + '' + + '' + + (o.data.mid !== undefined ? '' : '') + + '
                          Open:' + o.data.open + '
                          High:' + o.data.high + '
                          Low:' + o.data.low + '
                          Close:' + o.data.close + '
                          Mid:' + o.data.mid + '
                          '; + } + return o.element == "bar" ? o.x : o.y; + }; + + var pi4 = Math.PI / 4, pi2 = Math.PI / 2; + + return declare("dojox.charting.action2d.Tooltip", PlotAction, { + // summary: + // Create an action on a plot where a tooltip is shown when hovering over an element. + + // the data description block for the widget parser + defaultParams: { + text: DEFAULT_TEXT // the function to produce a tooltip from the object + }, + optionalParams: {}, // no optional parameters + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create the tooltip action and connect it to the plot. + // chart: dojox.charting.Chart + // The chart this action belongs to. + // plot: String? + // The plot this action is attached to. If not passed, "default" is assumed. + // kwArgs: dojox.charting.action2d.__TooltipCtorArgs? + // Optional keyword arguments object for setting parameters. + this.text = kwArgs && kwArgs.text ? kwArgs.text : DEFAULT_TEXT; + + this.connect(); + }, + + process: function(o){ + // summary: + // Process the action on the given object. + // o: dojox.gfx.Shape + // The object on which to process the highlighting action. + if(o.type === "onplotreset" || o.type === "onmouseout"){ + Tooltip.hide(this.aroundRect); + this.aroundRect = null; + if(o.type === "onplotreset"){ + delete this.angles; + } + return; + } + + if(!o.shape || o.type !== "onmouseover"){ return; } + + // calculate relative coordinates and the position + var aroundRect = {type: "rect"}, position = ["after", "before"]; + switch(o.element){ + case "marker": + aroundRect.x = o.cx; + aroundRect.y = o.cy; + aroundRect.w = aroundRect.h = 1; + break; + case "circle": + aroundRect.x = o.cx - o.cr; + aroundRect.y = o.cy - o.cr; + aroundRect.w = aroundRect.h = 2 * o.cr; + break; + case "column": + position = ["above", "below"]; + // intentional fall down + case "bar": + aroundRect = lang.clone(o.shape.getShape()); + aroundRect.w = aroundRect.width; + aroundRect.h = aroundRect.height; + break; + case "candlestick": + aroundRect.x = o.x; + aroundRect.y = o.y; + aroundRect.w = o.width; + aroundRect.h = o.height; + break; + default: + //case "slice": + if(!this.angles){ + // calculate the running total of slice angles + if(typeof o.run.data[0] == "number"){ + this.angles = df.map(df.scanl(o.run.data, "+", 0), + "* 2 * Math.PI / this", df.foldl(o.run.data, "+", 0)); + }else{ + this.angles = df.map(df.scanl(o.run.data, "a + b.y", 0), + "* 2 * Math.PI / this", df.foldl(o.run.data, "a + b.y", 0)); + } + } + var startAngle = m._degToRad(o.plot.opt.startAngle), + angle = (this.angles[o.index] + this.angles[o.index + 1]) / 2 + startAngle; + aroundRect.x = o.cx + o.cr * Math.cos(angle); + aroundRect.y = o.cy + o.cr * Math.sin(angle); + aroundRect.w = aroundRect.h = 1; + // calculate the position + if(angle < pi4){ + // do nothing: the position is right + }else if(angle < pi2 + pi4){ + position = ["below", "above"]; + }else if(angle < Math.PI + pi4){ + position = ["before", "after"]; + }else if(angle < 2 * Math.PI - pi4){ + position = ["above", "below"]; + } + /* + else{ + // do nothing: the position is right + } + */ + break; + } + + // adjust relative coordinates to absolute, and remove fractions + var lt = this.chart.getCoords(); + aroundRect.x += lt.x; + aroundRect.y += lt.y; + aroundRect.x = Math.round(aroundRect.x); + aroundRect.y = Math.round(aroundRect.y); + aroundRect.w = Math.ceil(aroundRect.w); + aroundRect.h = Math.ceil(aroundRect.h); + this.aroundRect = aroundRect; + + var tooltip = this.text(o); + if(this.chart.getTextDir){ + var isChartDirectionRtl = (html.style(this.chart.node,"direction") == "rtl"); + var isBaseTextDirRtl = (this.chart.getTextDir(tooltip) == "rtl"); + } + if(tooltip){ + if(isBaseTextDirRtl && !isChartDirectionRtl){ + Tooltip.show("" + tooltip +"", this.aroundRect, position); + } + else if(!isBaseTextDirRtl && isChartDirectionRtl){ + Tooltip.show("" + tooltip +"", this.aroundRect, position); + }else{ + Tooltip.show(tooltip, this.aroundRect, position); + } + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/TouchIndicator.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/TouchIndicator.js new file mode 100644 index 0000000..f8fc594 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/TouchIndicator.js @@ -0,0 +1,232 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/event", "./ChartAction", "./_IndicatorElement", "dojox/lang/utils"], + function(lang, declare, eventUtil, ChartAction, IndicatorElement, du){ + + /*===== + dojo.declare("dojox.charting.action2d.__TouchIndicatorCtorArgs", null, { + // summary: + // Additional arguments for Touch indicator. + + // series: String + // Target series name for this chart action. + series: "", + + // dualIndicator: Boolean? + // Whether a double touch on the chart creates a dual indicator showing data trend between the two touch points. Default is false. + dualIndicator: false, + + // autoScroll: Boolean? + // Whether when moving indicator the chart is automatically scrolled. Default is true. + autoScroll: true, + + // vertical: Boolean? + // Whether the indicator is vertical or not. Default is true. + vertical: true, + + // fixed: Boolean? + // Whether a fixed precision must be applied to data values for display. Default is true. + fixed: true, + + // precision: Number? + // The precision at which to round data values for display. Default is 1. + precision: 0, + + // lineStroke: gfx.Stroke? + // An optional stroke to use for indicator line. + lineStroke: {}, + + // lineOutline: dojo.gfx.Stroke? + // An optional outline to use for indicator line. + lineOutline: {}, + + // lineShadow: dojo.gfx.Stroke? + // An optional shadow to use for indicator line. + lineShadow: {}, + + // stroke: dojo.gfx.Stroke? + // An optional stroke to use for indicator label background. + stroke: {}, + + // outline: dojo.gfx.Stroke? + // An optional outline to use for indicator label background. + outline: {}, + + // shadow: dojo.gfx.Stroke? + // An optional shadow to use for indicator label background. + shadow: {}, + + // fill: dojo.gfx.Fill? + // An optional fill to use for indicator label background. + fill: {}, + + // fillFunc: Function? + // An optional function to use to compute label background fill. It takes precedence over + // fill property when available. + fillFunc: null, + + // labelFunc: Function? + // An optional function to use to compute label text. It takes precedence over + // the default text when available. + labelFunc: {}, + + // font: String? + // A font definition to use for indicator label background. + font: "", + + // fontColor: String|dojo.Color? + // The color to use for indicator label background. + fontColor: "", + + // markerStroke: dojo.gfx.Stroke? + // An optional stroke to use for indicator marker. + markerStroke: {}, + + // markerOutline: dojo.gfx.Stroke? + // An optional outline to use for indicator marker. + markerOutline: {}, + + // markerShadow: dojo.gfx.Stroke? + // An optional shadow to use for indicator marker. + markerShadow: {}, + + // markerFill: dojo.gfx.Fill? + // An optional fill to use for indicator marker. + markerFill: {}, + + // markerSymbol: String? + // An optional symbol string to use for indicator marker. + markerFill: {} + }); + var ChartAction = dojox.charting.action2d.ChartAction; + =====*/ + + return declare("dojox.charting.action2d.TouchIndicator", ChartAction, { + // summary: + // Create a touch indicator action. You can touch over the chart to display a data indicator. + + // the data description block for the widget parser + defaultParams: { + series: "", + dualIndicator: false, + vertical: true, + autoScroll: true, + fixed: true, + precision: 0 + }, + optionalParams: { + lineStroke: {}, + outlineStroke: {}, + shadowStroke: {}, + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + fillFunc: null, + labelFunc: null, + font: "", + fontColor: "", + markerStroke: {}, + markerOutline: {}, + markerShadow: {}, + markerFill: {}, + markerSymbol: "" + }, + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create a new touch indicator action and connect it. + // chart: dojox.charting.Chart + // The chart this action applies to. + // kwArgs: dojox.charting.action2d.__TouchIndicatorCtorArgs? + // Optional arguments for the chart action. + this._listeners = [{eventName: "ontouchstart", methodName: "onTouchStart"}, + {eventName: "ontouchmove", methodName: "onTouchMove"}, + {eventName: "ontouchend", methodName: "onTouchEnd"}, + {eventName: "ontouchcancel", methodName: "onTouchEnd"}]; + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this._uName = "touchIndicator"+this.opt.series; + this.connect(); + }, + + connect: function(){ + // summary: + // Connect this action to the chart. This adds a indicator plot + // to the chart that's why Chart.render() must be called after connect. + this.inherited(arguments); + // add plot with unique name + this.chart.addPlot(this._uName, {type: IndicatorElement, inter: this}); + }, + + disconnect: function(){ + // summary: + // Disconnect this action from the chart. + var plot = this.chart.getPlot(this._uName); + if(plot.pageCoord){ + // we might still have something drawn on the screen + this.onTouchEnd(); + } + this.chart.removePlot(this._uName); + this.inherited(arguments); + }, + + onTouchStart: function(event){ + // summary: + // Called when touch is started on the chart. + if(event.touches.length==1){ + this._onTouchSingle(event, true); + }else if(this.opt.dualIndicator && event.touches.length==2){ + this._onTouchDual(event); + } + }, + + onTouchMove: function(event){ + // summary: + // Called when touch is moved on the chart. + if(event.touches.length==1){ + this._onTouchSingle(event); + }else if(this.opt.dualIndicator && event.touches.length==2){ + this._onTouchDual(event); + } + }, + + _onTouchSingle: function(event, delayed){ + // sync + if(this.chart._delayedRenderHandle && !delayed){ + // we have pending rendering from a previous call, let's sync + clearTimeout(this.chart._delayedRenderHandle); + this.chart._delayedRenderHandle = null; + this.chart.render(); + } + var plot = this.chart.getPlot(this._uName); + plot.pageCoord = {x: event.touches[0].pageX, y: event.touches[0].pageY}; + plot.dirty = true; + if(delayed){ + this.chart.delayedRender(); + }else{ + this.chart.render(); + } + eventUtil.stop(event); + }, + + _onTouchDual: function(event){ + var plot = this.chart.getPlot(this._uName); + plot.pageCoord = {x: event.touches[0].pageX, y: event.touches[0].pageY}; + plot.secondCoord = {x: event.touches[1].pageX, y: event.touches[1].pageY}; + plot.dirty = true; + this.chart.render(); + eventUtil.stop(event); + }, + + onTouchEnd: function(event){ + // summary: + // Called when touch is ended or canceled on the chart. + var plot = this.chart.getPlot(this._uName); + plot.stopTrack(); + plot.pageCoord = null; + plot.secondCoord = null; + plot.dirty = true; + this.chart.delayedRender(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/TouchZoomAndPan.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/TouchZoomAndPan.js new file mode 100644 index 0000000..f60b679 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/TouchZoomAndPan.js @@ -0,0 +1,249 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/event", "dojo/_base/sniff", + "./ChartAction", "../Element", "dojox/gesture/tap", "../plot2d/common"], + function(lang, declare, eventUtil, has, ChartAction, Element, tap, common){ + var GlassView = declare("dojox.charting.action2d._GlassView", [Element], { + // summary: Private internal class used by TouchZoomAndPan actions. + // tags: + // private + constructor: function(chart){ + }, + render: function(){ + if(!this.isDirty()){ + return; + } + this.cleanGroup(); + this.group.createRect({width: this.chart.dim.width, height: this.chart.dim.height}).setFill("rgba(0,0,0,0)"); + }, + cleanGroup: function(creator){ + // summary: + // Clean any elements (HTML or GFX-based) out of our group, and create a new one. + // creator: dojox.gfx.Surface? + // An optional surface to work with. + // returns: dojox.charting.Element + // A reference to this object for functional chaining. + this.inherited(arguments); + return this; // dojox.charting.Element + }, + clear: function(){ + // summary: + // Clear out any parameters set on this plot. + // returns: dojox.charting.action2d._IndicatorElement + // The reference to this plot for functional chaining. + this.dirty = true; + // glass view needs to be above + if(this.chart.stack[0] != this){ + this.chart.movePlotToFront(this.name); + } + return this; // dojox.charting.plot2d._IndicatorElement + }, + getSeriesStats: function(){ + // summary: + // Returns default stats (irrelevant for this type of plot). + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + return lang.delegate(common.defaultStats); + }, + initializeScalers: function(){ + // summary: + // Does nothing (irrelevant for this type of plot). + return this; + }, + isDirty: function(){ + // summary: + // Return whether or not this plot needs to be redrawn. + // returns: Boolean + // If this plot needs to be rendered, this will return true. + return this.dirty; + } + }); + + /*===== + + declare("dojox.charting.action2d.__TouchZoomAndPanCtorArgs", null, { + // summary: + // Additional arguments for mouse zoom and pan actions. + + // axis: String? + // Target axis name for this action. Default is "x". + axis: "x", + // scaleFactor: Number? + // The scale factor applied on double tap. Default is 1.2. + scaleFactor: 1.2, + // maxScale: Number? + // The max scale factor accepted by this action. Default is 100. + maxScale: 100, + // enableScroll: Boolean? + // Whether touch drag gesture should scroll the chart. Default is true. + enableScroll: true, + // enableZoom: Boolean? + // Whether touch pinch and spread gesture should zoom out or in the chart. Default is true. + enableZoom: true, + }); + var ChartAction = dojox.charting.action2d.ChartAction; + =====*/ + + return declare("dojox.charting.action2d.TouchZoomAndPan", ChartAction, { + // summary: + // Create a touch zoom and pan action. + // You can zoom out or in the data window with pinch and spread gestures. You can scroll using drag gesture. + // Finally this is possible to navigate between a fit window and a zoom one using double tap gesture. + + // the data description block for the widget parser + defaultParams: { + axis: "x", + scaleFactor: 1.2, + maxScale: 100, + enableScroll: true, + enableZoom: true + }, + optionalParams: {}, // no optional parameters + + constructor: function(chart, plot, kwArgs){ + // summary: + // Create a new touch zoom and pan action and connect it. + // chart: dojox.charting.Chart + // The chart this action applies to. + // kwArgs: dojox.charting.action2d.__TouchZoomAndPanCtorArgs? + // Optional arguments for the action. + this._listeners = [{eventName: "ontouchstart", methodName: "onTouchStart"}, + {eventName: "ontouchmove", methodName: "onTouchMove"}, + {eventName: "ontouchend", methodName: "onTouchEnd"}, + {eventName: tap.doubletap, methodName: "onDoubleTap"}]; + if(!kwArgs){ kwArgs = {}; } + this.axis = kwArgs.axis ? kwArgs.axis : "x"; + this.scaleFactor = kwArgs.scaleFactor ? kwArgs.scaleFactor : 1.2; + this.maxScale = kwArgs.maxScale ? kwArgs.maxScale : 100; + this.enableScroll = kwArgs.enableScroll != undefined ? kwArgs.enableScroll : true; + this.enableZoom = kwArgs.enableScroll != undefined ? kwArgs.enableZoom : true; + this._uName = "touchZoomPan"+this.axis; + this.connect(); + }, + + connect: function(){ + // summary: + // Connect this action to the chart. On Safari this adds a new glass view plot + // to the chart that's why Chart.render() must be called after connect. + this.inherited(arguments); + // this is needed to workaround issue on Safari + SVG, because a touch start action + // started above a item that is removed during the touch action will stop + // dispatching touch events! + if(has("safari") && this.chart.surface.declaredClass.indexOf("svg")!=-1){ + this.chart.addPlot(this._uName, {type: GlassView}); + } + }, + + disconnect: function(){ + // summary: + // Disconnect this action from the chart. + if(has("safari") && this.chart.surface.declaredClass.indexOf("svg")!=-1){ + this.chart.removePlot(this._uName); + } + this.inherited(arguments); + }, + + onTouchStart: function(event){ + // summary: + // Called when touch is started on the chart. + // we always want to be above regular plots and not clipped + var chart = this.chart, axis = chart.getAxis(this.axis); + var length = event.touches.length; + this._startPageCoord = {x: event.touches[0].pageX, y: event.touches[0].pageY}; + if((this.enableZoom || this.enableScroll) && chart._delayedRenderHandle){ + // we have pending rendering from a scroll, let's sync + clearTimeout(chart._delayedRenderHandle); + chart._delayedRenderHandle = null; + chart.render(); + } + if(this.enableZoom && length >= 2){ + this._endPageCoord = {x: event.touches[1].pageX, y: event.touches[1].pageY}; + var middlePageCoord = {x: (this._startPageCoord.x + this._endPageCoord.x) / 2, + y: (this._startPageCoord.y + this._endPageCoord.y) / 2}; + var scaler = axis.getScaler(); + this._initScale = axis.getWindowScale(); + var t = this._initData = this.plot.toData(); + this._middleCoord = t(middlePageCoord)[this.axis]; + this._startCoord = scaler.bounds.from; + this._endCoord = scaler.bounds.to; + }else if(this.enableScroll){ + this._startScroll(axis); + // needed for Android, otherwise will get a touch cancel while swiping + eventUtil.stop(event); + } + }, + + onTouchMove: function(event){ + // summary: + // Called when touch is moved on the chart. + var chart = this.chart, axis = chart.getAxis(this.axis); + var length = event.touches.length; + var pAttr = axis.vertical?"pageY":"pageX", + attr = axis.vertical?"y":"x"; + if(this.enableZoom && length >= 2){ + var newMiddlePageCoord = {x: (event.touches[1].pageX + event.touches[0].pageX) / 2, + y: (event.touches[1].pageY + event.touches[0].pageY) / 2}; + var scale = (this._endPageCoord[attr] - this._startPageCoord[attr]) / + (event.touches[1][pAttr] - event.touches[0][pAttr]); + + if(this._initScale / scale > this.maxScale){ + return; + } + + var newMiddleCoord = this._initData(newMiddlePageCoord)[this.axis]; + + var newStart = scale * (this._startCoord - newMiddleCoord) + this._middleCoord, + newEnd = scale * (this._endCoord - newMiddleCoord) + this._middleCoord; + chart.zoomIn(this.axis, [newStart, newEnd]); + // avoid browser pan + eventUtil.stop(event); + }else if(this.enableScroll){ + var delta = axis.vertical?(this._startPageCoord[attr] - event.touches[0][pAttr]): + (event.touches[0][pAttr] - this._startPageCoord[attr]); + chart.setAxisWindow(this.axis, this._lastScale, this._initOffset - delta / this._lastFactor / this._lastScale); + chart.delayedRender(); + // avoid browser pan + eventUtil.stop(event); + } + }, + + onTouchEnd: function(event){ + // summary: + // Called when touch is ended on the chart. + var chart = this.chart, axis = chart.getAxis(this.axis); + if(event.touches.length == 1 && this.enableScroll){ + // still one touch available, let's start back from here for + // potential pan + this._startPageCoord = {x: event.touches[0].pageX, y: event.touches[0].pageY}; + this._startScroll(axis); + } + }, + + _startScroll: function(axis){ + var bounds = axis.getScaler().bounds; + this._initOffset = axis.getWindowOffset(); + // we keep it because of delay rendering we might now always have access to the + // information to compute it + this._lastScale = axis.getWindowScale(); + this._lastFactor = bounds.span / (bounds.upper - bounds.lower); + }, + + onDoubleTap: function(event){ + // summary: + // Called when double tap is performed on the chart. + var chart = this.chart, axis = chart.getAxis(this.axis); + var scale = 1 / this.scaleFactor; + // are we fit? + if(axis.getWindowScale()==1){ + // fit => zoom + var scaler = axis.getScaler(), start = scaler.bounds.from, end = scaler.bounds.to, + oldMiddle = (start + end) / 2, newMiddle = this.plot.toData(this._startPageCoord)[this.axis], + newStart = scale * (start - oldMiddle) + newMiddle, newEnd = scale * (end - oldMiddle) + newMiddle; + chart.zoomIn(this.axis, [newStart, newEnd]); + }else{ + // non fit => fit + chart.setAxisWindow(this.axis, 1, 0); + chart.render(); + } + eventUtil.stop(event); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/action2d/_IndicatorElement.js b/js/dojo-release-1.7.2-src/dojox/charting/action2d/_IndicatorElement.js new file mode 100644 index 0000000..7dc5ccf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/action2d/_IndicatorElement.js @@ -0,0 +1,370 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "../Element", "../plot2d/common", + "../axis2d/common", "dojox/gfx"], + function(lang, declare, Element, dcpc, dcac, gfx){ + + // all the code below should be removed when http://trac.dojotoolkit.org/ticket/11299 will be available + var getBoundingBox = function(shape){ + return getTextBBox(shape, shape.getShape().text); + }; + var getTextBBox = function(s, t){ + var c = s.declaredClass; + if (c.indexOf("svg")!=-1){ + // try/catch the FF native getBBox error. cheaper than walking up in the DOM + // hierarchy to check the conditions (bench show /10 ) + try { + return lang.mixin({}, s.rawNode.getBBox()); + }catch (e){ + return null; + } + }else if(c.indexOf("vml")!=-1){ + var rawNode = s.rawNode, _display = rawNode.style.display; + rawNode.style.display = "inline"; + var w = gfx.pt2px(parseFloat(rawNode.currentStyle.width)); + var h = gfx.pt2px(parseFloat(rawNode.currentStyle.height)); + var sz = {x: 0, y: 0, width: w, height: h}; + // in VML, the width/height we get are in view coordinates + // in our case we don't zoom the view so that is ok + // It's impossible to get the x/y from the currentStyle.left/top, + // because all negative coordinates are 'clipped' to 0. + // (x:0 + translate(-100) -> x=0 + computeLocation(s, sz); + rawNode.style.display = _display; + return sz; + }else if(c.indexOf("silverlight")!=-1){ + var bb = {width: s.rawNode.actualWidth, height: s.rawNode.actualHeight}; + return computeLocation(s, bb, 0.75); + }else if(s.getTextWidth){ + // canvas + var w = s.getTextWidth(); + var font = s.getFont(); + var fz = font ? font.size : gfx.defaultFont.size; + var h = gfx.normalizedLength(fz); + sz = {width: w, height: h}; + computeLocation(s, sz, 0.75); + return sz; + } + }; + var computeLocation = function(s, sz, coef){ + var width = sz.width, height = sz.height, sh = s.getShape(), align = sh.align; + switch (align) { + case "end": + sz.x = sh.x - width; + break; + case "middle": + sz.x = sh.x - width / 2; + break; + case "start": + default: + sz.x = sh.x; + break; + } + coef = coef || 1; + sz.y = sh.y - height*coef; // rough approximation of the ascent!... + return sz; + }; + + return declare("dojox.charting.action2d._IndicatorElement",[Element], { + // summary: + // Internal element used by indicator actions. + // tags: + // private + constructor: function(chart, kwArgs){ + if(!kwArgs){ kwArgs = {}; } + this.inter = kwArgs.inter; + }, + _updateVisibility: function(cp, limit, attr){ + var axis = attr=="x"?this.inter.plot._hAxis:this.inter.plot._vAxis; + var scale = axis.getWindowScale(); + this.chart.setAxisWindow(axis.name, scale, axis.getWindowOffset() + (cp[attr] - limit[attr]) / scale); + this._noDirty = true; + this.chart.render(); + this._noDirty = false; + if(!this._tracker){ + this.initTrack(); + } + }, + _trackMove: function(){ + // let's update the selector + this._updateIndicator(this.pageCoord); + // if we reached that point once, then we don't stop until mouse up + if(this._initTrackPhase){ + this._initTrackPhase = false; + this._tracker = setInterval(lang.hitch(this, this._trackMove), 100); + } + }, + initTrack: function(){ + this._initTrackPhase = true; + this._tracker = setTimeout(lang.hitch(this, this._trackMove), 500); + }, + stopTrack: function(){ + if(this._tracker){ + if(this._initTrackPhase){ + clearTimeout(this._tracker); + }else{ + clearInterval(this._tracker); + } + this._tracker = null; + } + }, + render: function(){ + if(!this.isDirty()){ + return; + } + + this.cleanGroup(); + + if (!this.pageCoord){ + return; + } + + this._updateIndicator(this.pageCoord, this.secondCoord); + }, + _updateIndicator: function(cp1, cp2){ + var inter = this.inter, plot = inter.plot, v = inter.opt.vertical; + var hAxis = this.chart.getAxis(plot.hAxis), vAxis = this.chart.getAxis(plot.vAxis); + var hn = hAxis.name, vn = vAxis.name, hb = hAxis.getScaler().bounds, vb = vAxis.getScaler().bounds; + var attr = v?"x":"y", n = v?hn:vn, bounds = v?hb:vb; + + // sort data point + if(cp2){ + var tmp; + if(v){ + if(cp1.x>cp2.x){ + tmp = cp2; + cp2 = cp1; + cp1 = tmp; + } + }else{ + if(cp1.y>cp2.y){ + tmp = cp2; + cp2 = cp1; + cp1 = tmp; + } + } + } + + var cd1 = plot.toData(cp1), cd2; + if(cp2){ + cd2 = plot.toData(cp2); + } + + var o = {}; + o[hn] = hb.from; + o[vn] = vb.from; + var min = plot.toPage(o); + o[hn] = hb.to; + o[vn] = vb.to; + var max = plot.toPage(o); + + if(cd1[n] < bounds.from){ + // do not autoscroll if dual indicator + if(!cd2 && inter.opt.autoScroll){ + this._updateVisibility(cp1, min, attr); + return; + }else{ + cp1[attr] = min[attr]; + } + // cp1 might have changed, let's update cd1 + cd1 = plot.toData(cp1); + }else if(cd1[n] > bounds.to){ + if(!cd2 && inter.opt.autoScroll){ + this._updateVisibility(cp1, max, attr); + return; + }else{ + cp1[attr] = max[attr]; + } + // cp1 might have changed, let's update cd1 + cd1 = plot.toData(cp1); + } + + var c1 = this._getData(cd1, attr, v), c2; + + if(c1.y == null){ + // we have no data for that point let's just return + return; + } + + if(cp2){ + if(cd2[n] < bounds.from){ + cp2[attr] = min[attr]; + cd2 = plot.toData(cp2); + }else if(cd2[n] > bounds.to){ + cp2[attr] = max[attr]; + cd2 = plot.toData(cp2); + } + c2 = this._getData(cd2, attr, v); + if(c2.y == null){ + // we have no data for that point let's pretend we have a single touch point + cp2 = null; + } + } + + var t1 = this._renderIndicator(c1, cp2?1:0, hn, vn, min, max); + if(cp2){ + var t2 = this._renderIndicator(c2, 2, hn, vn, min, max); + var delta = v?c2.y-c1.y:c2.x-c1.y; + var text = inter.opt.labelFunc?inter.opt.labelFunc(c1, c2, inter.opt.fixed, inter.opt.precision): + (dcpc.getLabel(delta, inter.opt.fixed, inter.opt.precision)+" ("+dcpc.getLabel(100*delta/(v?c1.y:c1.x), true, 2)+"%)"); + this._renderText(text, inter, this.chart.theme, v?(t1.x+t2.x)/2:t1.x, v?t1.y:(t1.y+t2.y)/2, c1, c2); + }; + + }, + _renderIndicator: function(coord, index, hn, vn, min, max){ + var t = this.chart.theme, c = this.chart.getCoords(), inter = this.inter, plot = inter.plot, v = inter.opt.vertical; + + var mark = {}; + mark[hn] = coord.x; + mark[vn] = coord.y; + mark = plot.toPage(mark); + + var cx = mark.x - c.x, cy = mark.y - c.y; + var x1 = v?cx:min.x - c.x, y1 = v?min.y - c.y:cy, x2 = v?x1:max.x - c.x, y2 = v?max.y - c.y:y1; + var sh = inter.opt.lineShadow?inter.opt.lineShadow:t.indicator.lineShadow, + ls = inter.opt.lineStroke?inter.opt.lineStroke:t.indicator.lineStroke, + ol = inter.opt.lineOutline?inter.opt.lineOutline:t.indicator.lineOutline; + if(sh){ + this.group.createLine({x1: x1 + sh.dx, y1: y1 + sh.dy, x2: x2 + sh.dx, y2: y2 + sh.dy}).setStroke(sh); + } + if(ol){ + ol = dcpc.makeStroke(ol); + ol.width = 2 * ol.width + ls.width; + this.group.createLine({x1: x1, y1: y1, x2: x2, y2: y2}).setStroke(ol); + } + this.group.createLine({x1: x1, y1: y1, x2: x2, y2: y2}).setStroke(ls); + + var ms = inter.opt.markerSymbol?inter.opt.markerSymbol:t.indicator.markerSymbol, + path = "M" + cx + " " + cy + " " + ms; + sh = inter.opt.markerShadow?inter.opt.markerShadow:t.indicator.markerShadow; + ls = inter.opt.markerStroke?inter.opt.markerStroke:t.indicator.markerStroke; + ol = inter.opt.markerOutline?inter.opt.markerOutline:t.indicator.markerOutline; + if(sh){ + var sp = "M" + (cx + sh.dx) + " " + (cy + sh.dy) + " " + ms; + this.group.createPath(sp).setFill(sh.color).setStroke(sh); + } + if(ol){ + ol = dcpc.makeStroke(ol); + ol.width = 2 * ol.width + ls.width; + this.group.createPath(path).setStroke(ol); + } + + var shape = this.group.createPath(path); + var sf = this._shapeFill(inter.opt.markerFill?inter.opt.markerFill:t.indicator.markerFill, shape.getBoundingBox()); + shape.setFill(sf).setStroke(ls); + + if(index==0){ + var text = inter.opt.labelFunc?inter.opt.labelFunc(coord, null, inter.opt.fixed, inter.opt.precision): + dcpc.getLabel(v?coord.y:coord.x, inter.opt.fixed, inter.opt.precision); + this._renderText(text, inter, t, v?x1:x2+5, v?y2+5:y1, coord); + }else{ + return v?{x: x1, y: y2+5}:{x: x2+5, y: y1}; + } + + }, + _renderText: function(text, inter, t, x, y, c1, c2){ + var label = dcac.createText.gfx( + this.chart, + this.group, + x, y, + "middle", + text, inter.opt.font?inter.opt.font:t.indicator.font, inter.opt.fontColor?inter.opt.fontColor:t.indicator.fontColor); + var b = getBoundingBox(label); + b.x-=2; b.y-=1; b.width+=4; b.height+=2; b.r = inter.opt.radius?inter.opt.radius:t.indicator.radius; + sh = inter.opt.shadow?inter.opt.shadow:t.indicator.shadow; + ls = inter.opt.stroke?inter.opt.stroke:t.indicator.stroke; + ol = inter.opt.outline?inter.opt.outline:t.indicator.outline; + if(sh){ + this.group.createRect(b).setFill(sh.color).setStroke(sh); + } + if(ol){ + ol = dcpc.makeStroke(ol); + ol.width = 2 * ol.width + ls.width; + this.group.createRect(b).setStroke(ol); + } + var f = inter.opt.fillFunc?inter.opt.fillFunc(c1, c2):(inter.opt.fill?inter.opt.fill:t.indicator.fill); + this.group.createRect(b).setFill(this._shapeFill(f, b)).setStroke(ls); + label.moveToFront(); + }, + _getData: function(cd, attr, v){ + // we need to find which actual data point is "close" to the data value + var data = this.chart.getSeries(this.inter.opt.series).data; + // let's consider data are sorted because anyway rendering will be "weird" with unsorted data + // i is an index in the array, which is different from a x-axis value even for index based data + var i, r, l = data.length; + for (i = 0; i < l; ++i){ + r = data[i]; + if(r == null){ + // move to next item + }else if(typeof r == "number"){ + if(i + 1 > cd[attr]){ + break; + } + }else if(r[attr] > cd[attr]){ + break; + } + } + var x,y,px,py; + if(typeof r == "number"){ + x = i+1; + y = r; + if(i>0){ + px = i; + py = data[i-1]; + } + }else{ + x = r.x; + y = r.y; + if(i>0){ + px = data[i-1].x; + py = data[i-1].y; + } + } + if(i>0){ + var m = v?(x+px)/2:(y+py)/2; + if(cd[attr]<=m){ + x = px; + y = py; + } + } + return {x: x, y: y}; + }, + cleanGroup: function(creator){ + // summary: + // Clean any elements (HTML or GFX-based) out of our group, and create a new one. + // creator: dojox.gfx.Surface? + // An optional surface to work with. + // returns: dojox.charting.Element + // A reference to this object for functional chaining. + this.inherited(arguments); + // we always want to be above regular plots and not clipped + this.group.moveToFront(); + return this; // dojox.charting.Element + }, + clear: function(){ + // summary: + // Clear out any parameters set on this plot. + // returns: dojox.charting.action2d._IndicatorElement + // The reference to this plot for functional chaining. + this.dirty = true; + return this; // dojox.charting.plot2d._IndicatorElement + }, + getSeriesStats: function(){ + // summary: + // Returns default stats (irrelevant for this type of plot). + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + return lang.delegate(dcpc.defaultStats); + }, + initializeScalers: function(){ + // summary: + // Does nothing (irrelevant for this type of plot). + return this; + }, + isDirty: function(){ + // summary: + // Return whether or not this plot needs to be redrawn. + // returns: Boolean + // If this plot needs to be rendered, this will return true. + return !this._noDirty && (this.dirty || this.inter.plot.isDirty()); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Base.js b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Base.js new file mode 100644 index 0000000..2b1c0fc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Base.js @@ -0,0 +1,71 @@ +define(["dojo/_base/declare", "../Element"], + function(declare, Element){ +/*===== +var Element = dojox.charting.Element; +=====*/ +return declare("dojox.charting.axis2d.Base", Element, { + // summary: + // The base class for any axis. This is more of an interface/API + // definition than anything else; see dojox.charting.axis2d.Default + // for more details. + constructor: function(chart, kwArgs){ + // summary: + // Return a new base axis. + // chart: dojox.charting.Chart + // The chart this axis belongs to. + // kwArgs: dojox.charting.axis2d.__AxisCtorArgs? + // An optional arguments object to define the axis parameters. + this.vertical = kwArgs && kwArgs.vertical; + }, + clear: function(){ + // summary: + // Stub function for clearing the axis. + // returns: dojox.charting.axis2d.Base + // A reference to the axis for functional chaining. + return this; // dojox.charting.axis2d.Base + }, + initialized: function(){ + // summary: + // Return a flag as to whether or not this axis has been initialized. + // returns: Boolean + // If the axis is initialized or not. + return false; // Boolean + }, + calculate: function(min, max, span){ + // summary: + // Stub function to run the calcuations needed for drawing this axis. + // returns: dojox.charting.axis2d.Base + // A reference to the axis for functional chaining. + return this; // dojox.charting.axis2d.Base + }, + getScaler: function(){ + // summary: + // A stub function to return the scaler object created during calculate. + // returns: Object + // The scaler object (see dojox.charting.scaler.linear for more information) + return null; // Object + }, + getTicks: function(){ + // summary: + // A stub function to return the object that helps define how ticks are rendered. + // returns: Object + // The ticks object. + return null; // Object + }, + getOffsets: function(){ + // summary: + // A stub function to return any offsets needed for axis and series rendering. + // returns: Object + // An object of the form { l, r, t, b }. + return {l: 0, r: 0, t: 0, b: 0}; // Object + }, + render: function(dim, offsets){ + // summary: + // Stub function to render this axis. + // returns: dojox.charting.axis2d.Base + // A reference to the axis for functional chaining. + this.dirty = false; + return this; // dojox.charting.axis2d.Base + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Default.js b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Default.js new file mode 100644 index 0000000..dfef5cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Default.js @@ -0,0 +1,799 @@ +define(["dojo/_base/lang", "dojo/_base/array","dojo/_base/sniff", "dojo/_base/declare", + "dojo/_base/connect", "dojo/_base/html", "dojo/dom-geometry", "./Invisible", + "../scaler/common", "../scaler/linear", "./common", "dojox/gfx", "dojox/lang/utils"], + function(lang, arr, has, declare, connect, html, domGeom, Invisible, scommon, + lin, acommon, g, du){ + + /*===== + dojox.charting.axis2d.__AxisCtorArgs = function( + vertical, fixUpper, fixLower, natural, leftBottom, + includeZero, fixed, majorLabels, minorTicks, minorLabels, microTicks, htmlLabels, + min, max, from, to, majorTickStep, minorTickStep, microTickStep, + labels, labelFunc, maxLabelSize, + stroke, majorTick, minorTick, microTick, tick, + font, fontColor + ){ + // summary: + // Optional arguments used in the definition of an axis. + // + // vertical: Boolean? + // A flag that says whether an axis is vertical (i.e. y axis) or horizontal. Default is false (horizontal). + // fixUpper: String? + // Align the greatest value on the axis with the specified tick level. Options are "major", "minor", "micro", or "none". Defaults to "none". + // fixLower: String? + // Align the smallest value on the axis with the specified tick level. Options are "major", "minor", "micro", or "none". Defaults to "none". + // natural: Boolean? + // Ensure tick marks are made on "natural" numbers. Defaults to false. + // leftBottom: Boolean? + // The position of a vertical axis; if true, will be placed against the left-bottom corner of the chart. Defaults to true. + // includeZero: Boolean? + // Include 0 on the axis rendering. Default is false. + // fixed: Boolean? + // Force all axis labels to be fixed numbers. Default is true. + // majorLabels: Boolean? + // Flag to draw all labels at major ticks. Default is true. + // minorTicks: Boolean? + // Flag to draw minor ticks on an axis. Default is true. + // minorLabels: Boolean? + // Flag to draw labels on minor ticks. Default is true. + // microTicks: Boolean? + // Flag to draw micro ticks on an axis. Default is false. + // htmlLabels: Boolean? + // Flag to use HTML (as opposed to the native vector graphics engine) to draw labels. Default is true. + // min: Number? + // The smallest value on an axis. Default is 0. + // max: Number? + // The largest value on an axis. Default is 1. + // from: Number? + // Force the chart to render data visible from this value. Default is 0. + // to: Number? + // Force the chart to render data visible to this value. Default is 1. + // majorTickStep: Number? + // The amount to skip before a major tick is drawn. Default is 4. + // minorTickStep: Number? + // The amount to skip before a minor tick is drawn. Default is 2. + // microTickStep: Number? + // The amount to skip before a micro tick is drawn. Default is 1. + // labels: Object[]? + // An array of labels for major ticks, with corresponding numeric values, ordered by value. + // labelFunc: Function? + // An optional function used to compute label values. + // maxLabelSize: Number? + // The maximum size, in pixels, for a label. To be used with the optional label function. + // stroke: dojox.gfx.Stroke? + // An optional stroke to be used for drawing an axis. + // majorTick: Object? + // An object containing a dojox.gfx.Stroke, and a length (number) for a major tick. + // minorTick: Object? + // An object containing a dojox.gfx.Stroke, and a length (number) for a minor tick. + // microTick: Object? + // An object containing a dojox.gfx.Stroke, and a length (number) for a micro tick. + // tick: Object? + // An object containing a dojox.gfx.Stroke, and a length (number) for a tick. + // font: String? + // An optional font definition (as used in the CSS font property) for labels. + // fontColor: String|dojo.Color? + // An optional color to be used in drawing labels. + // enableCache: Boolean? + // Whether the ticks and labels are cached from one rendering to another. This improves the rendering performance of + // successive rendering but penalize the first rendering. For labels it is only working with gfx labels + // not html ones. Default false. + + this.vertical = vertical; + this.fixUpper = fixUpper; + this.fixLower = fixLower; + this.natural = natural; + this.leftBottom = leftBottom; + this.includeZero = includeZero; + this.fixed = fixed; + this.majorLabels = majorLabels; + this.minorTicks = minorTicks; + this.minorLabels = minorLabels; + this.microTicks = microTicks; + this.htmlLabels = htmlLabels; + this.min = min; + this.max = max; + this.from = from; + this.to = to; + this.majorTickStep = majorTickStep; + this.minorTickStep = minorTickStep; + this.microTickStep = microTickStep; + this.labels = labels; + this.labelFunc = labelFunc; + this.maxLabelSize = maxLabelSize; + this.stroke = stroke; + this.majorTick = majorTick; + this.minorTick = minorTick; + this.microTick = microTick; + this.tick = tick; + this.font = font; + this.fontColor = fontColor; + this.enableCache = enableCache; + } + var Invisible = dojox.charting.axis2d.Invisible + =====*/ + + var labelGap = 4, // in pixels + centerAnchorLimit = 45; // in degrees + + return declare("dojox.charting.axis2d.Default", Invisible, { + // summary: + // The default axis object used in dojox.charting. See dojox.charting.Chart.addAxis for details. + // + // defaultParams: Object + // The default parameters used to define any axis. + // optionalParams: Object + // Any optional parameters needed to define an axis. + + /* + // TODO: the documentation tools need these to be pre-defined in order to pick them up + // correctly, but the code here is partially predicated on whether or not the properties + // actually exist. For now, we will leave these undocumented but in the code for later. -- TRT + + // opt: Object + // The actual options used to define this axis, created at initialization. + // scalar: Object + // The calculated helper object to tell charts how to draw an axis and any data. + // ticks: Object + // The calculated tick object that helps a chart draw the scaling on an axis. + // dirty: Boolean + // The state of the axis (whether it needs to be redrawn or not) + // scale: Number + // The current scale of the axis. + // offset: Number + // The current offset of the axis. + + opt: null, + scalar: null, + ticks: null, + dirty: true, + scale: 1, + offset: 0, + */ + defaultParams: { + vertical: false, // true for vertical axis + fixUpper: "none", // align the upper on ticks: "major", "minor", "micro", "none" + fixLower: "none", // align the lower on ticks: "major", "minor", "micro", "none" + natural: false, // all tick marks should be made on natural numbers + leftBottom: true, // position of the axis, used with "vertical" + includeZero: false, // 0 should be included + fixed: true, // all labels are fixed numbers + majorLabels: true, // draw major labels + minorTicks: true, // draw minor ticks + minorLabels: true, // draw minor labels + microTicks: false, // draw micro ticks + rotation: 0, // label rotation angle in degrees + htmlLabels: true, // use HTML to draw labels + enableCache: false // whether we cache or not + }, + optionalParams: { + min: 0, // minimal value on this axis + max: 1, // maximal value on this axis + from: 0, // visible from this value + to: 1, // visible to this value + majorTickStep: 4, // major tick step + minorTickStep: 2, // minor tick step + microTickStep: 1, // micro tick step + labels: [], // array of labels for major ticks + // with corresponding numeric values + // ordered by values + labelFunc: null, // function to compute label values + maxLabelSize: 0, // size in px. For use with labelFunc + maxLabelCharCount: 0, // size in word count. + trailingSymbol: null, + + // TODO: add support for minRange! + // minRange: 1, // smallest distance from min allowed on the axis + + // theme components + stroke: {}, // stroke for an axis + majorTick: {}, // stroke + length for a tick + minorTick: {}, // stroke + length for a tick + microTick: {}, // stroke + length for a tick + tick: {}, // stroke + length for a tick + font: "", // font for labels + fontColor: "", // color for labels as a string + title: "", // axis title + titleGap: 0, // gap between axis title and axis label + titleFont: "", // axis title font + titleFontColor: "", // axis title font color + titleOrientation: "" // "axis" means the title facing the axis, "away" means facing away + }, + + constructor: function(chart, kwArgs){ + // summary: + // The constructor for an axis. + // chart: dojox.charting.Chart + // The chart the axis belongs to. + // kwArgs: dojox.charting.axis2d.__AxisCtorArgs? + // Any optional keyword arguments to be used to define this axis. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + if(this.opt.enableCache){ + this._textFreePool = []; + this._lineFreePool = []; + this._textUsePool = []; + this._lineUsePool = []; + } + }, + getOffsets: function(){ + // summary: + // Get the physical offset values for this axis (used in drawing data series). + // returns: Object + // The calculated offsets in the form of { l, r, t, b } (left, right, top, bottom). + var s = this.scaler, offsets = { l: 0, r: 0, t: 0, b: 0 }; + if(!s){ + return offsets; + } + var o = this.opt, labelWidth = 0, a, b, c, d, + gl = scommon.getNumericLabel, + offset = 0, ma = s.major, mi = s.minor, + ta = this.chart.theme.axis, + // TODO: we use one font --- of major tick, we need to use major and minor fonts + taFont = o.font || (ta.majorTick && ta.majorTick.font) || (ta.tick && ta.tick.font), + taTitleFont = o.titleFont || (ta.tick && ta.tick.titleFont), + taTitleGap = (o.titleGap==0) ? 0 : o.titleGap || (ta.tick && ta.tick.titleGap) || 15, + taMajorTick = this.chart.theme.getTick("major", o), + taMinorTick = this.chart.theme.getTick("minor", o), + size = taFont ? g.normalizedLength(g.splitFontString(taFont).size) : 0, + tsize = taTitleFont ? g.normalizedLength(g.splitFontString(taTitleFont).size) : 0, + rotation = o.rotation % 360, leftBottom = o.leftBottom, + cosr = Math.abs(Math.cos(rotation * Math.PI / 180)), + sinr = Math.abs(Math.sin(rotation * Math.PI / 180)); + this.trailingSymbol = (o.trailingSymbol === undefined || o.trailingSymbol === null) ? this.trailingSymbol : o.trailingSymbol; + if(rotation < 0){ + rotation += 360; + } + + if(size){ + // we need width of all labels + if(this.labels){ + labelWidth = this._groupLabelWidth(this.labels, taFont, o.maxLabelCharCount); + }else{ + labelWidth = this._groupLabelWidth([ + gl(ma.start, ma.prec, o), + gl(ma.start + ma.count * ma.tick, ma.prec, o), + gl(mi.start, mi.prec, o), + gl(mi.start + mi.count * mi.tick, mi.prec, o) + ], taFont, o.maxLabelCharCount); + } + labelWidth = o.maxLabelSize ? Math.min(o.maxLabelSize, labelWidth) : labelWidth; + if(this.vertical){ + var side = leftBottom ? "l" : "r"; + switch(rotation){ + case 0: + case 180: + offsets[side] = labelWidth; + offsets.t = offsets.b = size / 2; + break; + case 90: + case 270: + offsets[side] = size; + offsets.t = offsets.b = labelWidth / 2; + break; + default: + if(rotation <= centerAnchorLimit || (180 < rotation && rotation <= (180 + centerAnchorLimit))){ + offsets[side] = size * sinr / 2 + labelWidth * cosr; + offsets[leftBottom ? "t" : "b"] = size * cosr / 2 + labelWidth * sinr; + offsets[leftBottom ? "b" : "t"] = size * cosr / 2; + }else if(rotation > (360 - centerAnchorLimit) || (180 > rotation && rotation > (180 - centerAnchorLimit))){ + offsets[side] = size * sinr / 2 + labelWidth * cosr; + offsets[leftBottom ? "b" : "t"] = size * cosr / 2 + labelWidth * sinr; + offsets[leftBottom ? "t" : "b"] = size * cosr / 2; + }else if(rotation < 90 || (180 < rotation && rotation < 270)){ + offsets[side] = size * sinr + labelWidth * cosr; + offsets[leftBottom ? "t" : "b"] = size * cosr + labelWidth * sinr; + }else{ + offsets[side] = size * sinr + labelWidth * cosr; + offsets[leftBottom ? "b" : "t"] = size * cosr + labelWidth * sinr; + } + break; + } + offsets[side] += labelGap + Math.max(taMajorTick.length, taMinorTick.length) + (o.title ? (tsize + taTitleGap) : 0); + }else{ + var side = leftBottom ? "b" : "t"; + switch(rotation){ + case 0: + case 180: + offsets[side] = size; + offsets.l = offsets.r = labelWidth / 2; + break; + case 90: + case 270: + offsets[side] = labelWidth; + offsets.l = offsets.r = size / 2; + break; + default: + if((90 - centerAnchorLimit) <= rotation && rotation <= 90 || (270 - centerAnchorLimit) <= rotation && rotation <= 270){ + offsets[side] = size * sinr / 2 + labelWidth * cosr; + offsets[leftBottom ? "r" : "l"] = size * cosr / 2 + labelWidth * sinr; + offsets[leftBottom ? "l" : "r"] = size * cosr / 2; + }else if(90 <= rotation && rotation <= (90 + centerAnchorLimit) || 270 <= rotation && rotation <= (270 + centerAnchorLimit)){ + offsets[side] = size * sinr / 2 + labelWidth * cosr; + offsets[leftBottom ? "l" : "r"] = size * cosr / 2 + labelWidth * sinr; + offsets[leftBottom ? "r" : "l"] = size * cosr / 2; + }else if(rotation < centerAnchorLimit || (180 < rotation && rotation < (180 - centerAnchorLimit))){ + offsets[side] = size * sinr + labelWidth * cosr; + offsets[leftBottom ? "r" : "l"] = size * cosr + labelWidth * sinr; + }else{ + offsets[side] = size * sinr + labelWidth * cosr; + offsets[leftBottom ? "l" : "r"] = size * cosr + labelWidth * sinr; + } + break; + } + offsets[side] += labelGap + Math.max(taMajorTick.length, taMinorTick.length) + (o.title ? (tsize + taTitleGap) : 0); + } + } + if(labelWidth){ + this._cachedLabelWidth = labelWidth; + } + return offsets; // Object + }, + cleanGroup: function(creator){ + if(this.opt.enableCache && this.group){ + this._lineFreePool = this._lineFreePool.concat(this._lineUsePool); + this._lineUsePool = []; + this._textFreePool = this._textFreePool.concat(this._textUsePool); + this._textUsePool = []; + } + this.inherited(arguments); + }, + createText: function(labelType, creator, x, y, align, textContent, font, fontColor, labelWidth){ + if(!this.opt.enableCache || labelType=="html"){ + return acommon.createText[labelType]( + this.chart, + creator, + x, + y, + align, + textContent, + font, + fontColor, + labelWidth + ); + } + var text; + if (this._textFreePool.length > 0){ + text = this._textFreePool.pop(); + text.setShape({x: x, y: y, text: textContent, align: align}); + // For now all items share the same font, no need to re-set it + //.setFont(font).setFill(fontColor); + // was cleared, add it back + creator.add(text); + }else{ + text = acommon.createText[labelType]( + this.chart, + creator, + x, + y, + align, + textContent, + font, + fontColor, + labelWidth + ); } + this._textUsePool.push(text); + return text; + }, + createLine: function(creator, params){ + var line; + if(this.opt.enableCache && this._lineFreePool.length > 0){ + line = this._lineFreePool.pop(); + line.setShape(params); + // was cleared, add it back + creator.add(line); + }else{ + line = creator.createLine(params); + } + if(this.opt.enableCache){ + this._lineUsePool.push(line); + } + return line; + }, + render: function(dim, offsets){ + // summary: + // Render/draw the axis. + // dim: Object + // An object of the form { width, height}. + // offsets: Object + // An object of the form { l, r, t, b }. + // returns: dojox.charting.axis2d.Default + // The reference to the axis for functional chaining. + if(!this.dirty){ + return this; // dojox.charting.axis2d.Default + } + // prepare variable + var o = this.opt, ta = this.chart.theme.axis, leftBottom = o.leftBottom, rotation = o.rotation % 360, + start, stop, titlePos, titleRotation=0, titleOffset, axisVector, tickVector, anchorOffset, labelOffset, labelAlign, + + // TODO: we use one font --- of major tick, we need to use major and minor fonts + taFont = o.font || (ta.majorTick && ta.majorTick.font) || (ta.tick && ta.tick.font), + taTitleFont = o.titleFont || (ta.tick && ta.tick.titleFont), + // TODO: we use one font color --- we need to use different colors + taFontColor = o.fontColor || (ta.majorTick && ta.majorTick.fontColor) || (ta.tick && ta.tick.fontColor) || "black", + taTitleFontColor = o.titleFontColor || (ta.tick && ta.tick.titleFontColor) || "black", + taTitleGap = (o.titleGap==0) ? 0 : o.titleGap || (ta.tick && ta.tick.titleGap) || 15, + taTitleOrientation = o.titleOrientation || (ta.tick && ta.tick.titleOrientation) || "axis", + taMajorTick = this.chart.theme.getTick("major", o), + taMinorTick = this.chart.theme.getTick("minor", o), + taMicroTick = this.chart.theme.getTick("micro", o), + + tickSize = Math.max(taMajorTick.length, taMinorTick.length, taMicroTick.length), + taStroke = "stroke" in o ? o.stroke : ta.stroke, + size = taFont ? g.normalizedLength(g.splitFontString(taFont).size) : 0, + cosr = Math.abs(Math.cos(rotation * Math.PI / 180)), + sinr = Math.abs(Math.sin(rotation * Math.PI / 180)), + tsize = taTitleFont ? g.normalizedLength(g.splitFontString(taTitleFont).size) : 0; + if(rotation < 0){ + rotation += 360; + } + if(this.vertical){ + start = {y: dim.height - offsets.b}; + stop = {y: offsets.t}; + titlePos = {y: (dim.height - offsets.b + offsets.t)/2}; + titleOffset = size * sinr + (this._cachedLabelWidth || 0) * cosr + labelGap + Math.max(taMajorTick.length, taMinorTick.length) + tsize + taTitleGap; + axisVector = {x: 0, y: -1}; + labelOffset = {x: 0, y: 0}; + tickVector = {x: 1, y: 0}; + anchorOffset = {x: labelGap, y: 0}; + switch(rotation){ + case 0: + labelAlign = "end"; + labelOffset.y = size * 0.4; + break; + case 90: + labelAlign = "middle"; + labelOffset.x = -size; + break; + case 180: + labelAlign = "start"; + labelOffset.y = -size * 0.4; + break; + case 270: + labelAlign = "middle"; + break; + default: + if(rotation < centerAnchorLimit){ + labelAlign = "end"; + labelOffset.y = size * 0.4; + }else if(rotation < 90){ + labelAlign = "end"; + labelOffset.y = size * 0.4; + }else if(rotation < (180 - centerAnchorLimit)){ + labelAlign = "start"; + }else if(rotation < (180 + centerAnchorLimit)){ + labelAlign = "start"; + labelOffset.y = -size * 0.4; + }else if(rotation < 270){ + labelAlign = "start"; + labelOffset.x = leftBottom ? 0 : size * 0.4; + }else if(rotation < (360 - centerAnchorLimit)){ + labelAlign = "end"; + labelOffset.x = leftBottom ? 0 : size * 0.4; + }else{ + labelAlign = "end"; + labelOffset.y = size * 0.4; + } + } + if(leftBottom){ + start.x = stop.x = offsets.l; + titleRotation = (taTitleOrientation && taTitleOrientation == "away") ? 90 : 270; + titlePos.x = offsets.l - titleOffset + (titleRotation == 270 ? tsize : 0); + tickVector.x = -1; + anchorOffset.x = -anchorOffset.x; + }else{ + start.x = stop.x = dim.width - offsets.r; + titleRotation = (taTitleOrientation && taTitleOrientation == "axis") ? 90 : 270; + titlePos.x = dim.width - offsets.r + titleOffset - (titleRotation == 270 ? 0 : tsize); + switch(labelAlign){ + case "start": + labelAlign = "end"; + break; + case "end": + labelAlign = "start"; + break; + case "middle": + labelOffset.x += size; + break; + } + } + }else{ + start = {x: offsets.l}; + stop = {x: dim.width - offsets.r}; + titlePos = {x: (dim.width - offsets.r + offsets.l)/2}; + titleOffset = size * cosr + (this._cachedLabelWidth || 0) * sinr + labelGap + Math.max(taMajorTick.length, taMinorTick.length) + tsize + taTitleGap; + axisVector = {x: 1, y: 0}; + labelOffset = {x: 0, y: 0}; + tickVector = {x: 0, y: 1}; + anchorOffset = {x: 0, y: labelGap}; + switch(rotation){ + case 0: + labelAlign = "middle"; + labelOffset.y = size; + break; + case 90: + labelAlign = "start"; + labelOffset.x = -size * 0.4; + break; + case 180: + labelAlign = "middle"; + break; + case 270: + labelAlign = "end"; + labelOffset.x = size * 0.4; + break; + default: + if(rotation < (90 - centerAnchorLimit)){ + labelAlign = "start"; + labelOffset.y = leftBottom ? size : 0; + }else if(rotation < (90 + centerAnchorLimit)){ + labelAlign = "start"; + labelOffset.x = -size * 0.4; + }else if(rotation < 180){ + labelAlign = "start"; + labelOffset.y = leftBottom ? 0 : -size; + }else if(rotation < (270 - centerAnchorLimit)){ + labelAlign = "end"; + labelOffset.y = leftBottom ? 0 : -size; + }else if(rotation < (270 + centerAnchorLimit)){ + labelAlign = "end"; + labelOffset.y = leftBottom ? size * 0.4 : 0; + }else{ + labelAlign = "end"; + labelOffset.y = leftBottom ? size : 0; + } + } + if(leftBottom){ + start.y = stop.y = dim.height - offsets.b; + titleRotation = (taTitleOrientation && taTitleOrientation == "axis") ? 180 : 0; + titlePos.y = dim.height - offsets.b + titleOffset - (titleRotation ? tsize : 0); + }else{ + start.y = stop.y = offsets.t; + titleRotation = (taTitleOrientation && taTitleOrientation == "away") ? 180 : 0; + titlePos.y = offsets.t - titleOffset + (titleRotation ? 0 : tsize); + tickVector.y = -1; + anchorOffset.y = -anchorOffset.y; + switch(labelAlign){ + case "start": + labelAlign = "end"; + break; + case "end": + labelAlign = "start"; + break; + case "middle": + labelOffset.y -= size; + break; + } + } + } + + // render shapes + + this.cleanGroup(); + + try{ + var s = this.group, + c = this.scaler, + t = this.ticks, + canLabel, + f = lin.getTransformerFromModel(this.scaler), + // GFX Canvas now supports labels, so let's _not_ fallback to HTML anymore on canvas, just use + // HTML labels if explicitly asked + no rotation + no IE + no Opera + labelType = (!o.title || !titleRotation) && !rotation && this.opt.htmlLabels && !has("ie") && !has("opera") ? "html" : "gfx", + dx = tickVector.x * taMajorTick.length, + dy = tickVector.y * taMajorTick.length; + + s.createLine({ + x1: start.x, + y1: start.y, + x2: stop.x, + y2: stop.y + }).setStroke(taStroke); + + //create axis title + if(o.title){ + var axisTitle = acommon.createText[labelType]( + this.chart, + s, + titlePos.x, + titlePos.y, + "middle", + o.title, + taTitleFont, + taTitleFontColor + ); + if(labelType == "html"){ + this.htmlElements.push(axisTitle); + }else{ + //as soon as rotation is provided, labelType won't be "html" + //rotate gfx labels + axisTitle.setTransform(g.matrix.rotategAt(titleRotation, titlePos.x, titlePos.y)); + } + } + + // go out nicely instead of try/catch + if(t==null){ + this.dirty = false; + return this; + } + + arr.forEach(t.major, function(tick){ + var offset = f(tick.value), elem, + x = start.x + axisVector.x * offset, + y = start.y + axisVector.y * offset; + this.createLine(s, { + x1: x, y1: y, + x2: x + dx, + y2: y + dy + }).setStroke(taMajorTick); + if(tick.label){ + var label = o.maxLabelCharCount ? this.getTextWithLimitCharCount(tick.label, taFont, o.maxLabelCharCount) : { + text: tick.label, + truncated: false + }; + label = o.maxLabelSize ? this.getTextWithLimitLength(label.text, taFont, o.maxLabelSize, label.truncated) : label; + elem = this.createText(labelType, + s, + x + dx + anchorOffset.x + (rotation ? 0 : labelOffset.x), + y + dy + anchorOffset.y + (rotation ? 0 : labelOffset.y), + labelAlign, + label.text, + taFont, + taFontColor + //this._cachedLabelWidth + ); + + // if bidi support was required, the textDir is "auto" and truncation + // took place, we need to update the dir of the element for cases as: + // Fool label: 111111W (W for bidi character) + // truncated label: 11... + // in this case for auto textDir the dir will be "ltr" which is wrong. + if(this.chart.truncateBidi && label.truncated){ + this.chart.truncateBidi(elem, tick.label, labelType); + } + label.truncated && this.labelTooltip(elem, this.chart, tick.label, label.text, taFont, labelType); + if(labelType == "html"){ + this.htmlElements.push(elem); + }else if(rotation){ + elem.setTransform([ + {dx: labelOffset.x, dy: labelOffset.y}, + g.matrix.rotategAt( + rotation, + x + dx + anchorOffset.x, + y + dy + anchorOffset.y + ) + ]); + } + } + }, this); + + dx = tickVector.x * taMinorTick.length; + dy = tickVector.y * taMinorTick.length; + canLabel = c.minMinorStep <= c.minor.tick * c.bounds.scale; + arr.forEach(t.minor, function(tick){ + var offset = f(tick.value), elem, + x = start.x + axisVector.x * offset, + y = start.y + axisVector.y * offset; + this.createLine(s, { + x1: x, y1: y, + x2: x + dx, + y2: y + dy + }).setStroke(taMinorTick); + if(canLabel && tick.label){ + var label = o.maxLabelCharCount ? this.getTextWithLimitCharCount(tick.label, taFont, o.maxLabelCharCount) : { + text: tick.label, + truncated: false + }; + label = o.maxLabelSize ? this.getTextWithLimitLength(label.text, taFont, o.maxLabelSize, label.truncated) : label; + elem = this.createText(labelType, + s, + x + dx + anchorOffset.x + (rotation ? 0 : labelOffset.x), + y + dy + anchorOffset.y + (rotation ? 0 : labelOffset.y), + labelAlign, + label.text, + taFont, + taFontColor + //this._cachedLabelWidth + ); + // if bidi support was required, the textDir is "auto" and truncation + // took place, we need to update the dir of the element for cases as: + // Fool label: 111111W (W for bidi character) + // truncated label: 11... + // in this case for auto textDir the dir will be "ltr" which is wrong. + if(this.chart.getTextDir && label.truncated){ + this.chart.truncateBidi(elem, tick.label, labelType); + } + label.truncated && this.labelTooltip(elem, this.chart, tick.label, label.text, taFont, labelType); + if(labelType == "html"){ + this.htmlElements.push(elem); + }else if(rotation){ + elem.setTransform([ + {dx: labelOffset.x, dy: labelOffset.y}, + g.matrix.rotategAt( + rotation, + x + dx + anchorOffset.x, + y + dy + anchorOffset.y + ) + ]); + } + } + }, this); + + dx = tickVector.x * taMicroTick.length; + dy = tickVector.y * taMicroTick.length; + arr.forEach(t.micro, function(tick){ + var offset = f(tick.value), elem, + x = start.x + axisVector.x * offset, + y = start.y + axisVector.y * offset; + this.createLine(s, { + x1: x, y1: y, + x2: x + dx, + y2: y + dy + }).setStroke(taMicroTick); + }, this); + }catch(e){ + // squelch + } + + this.dirty = false; + return this; // dojox.charting.axis2d.Default + }, + labelTooltip: function(elem, chart, label, truncatedLabel, font, elemType){ + var modules = ["dijit/Tooltip"]; + var aroundRect = {type: "rect"}, position = ["above", "below"], + fontWidth = g._base._getTextBox(truncatedLabel, {font: font}).w || 0, + fontHeight = font ? g.normalizedLength(g.splitFontString(font).size) : 0; + if(elemType == "html"){ + lang.mixin(aroundRect, html.coords(elem.firstChild, true)); + aroundRect.width = Math.ceil(fontWidth); + aroundRect.height = Math.ceil(fontHeight); + this._events.push({ + shape: dojo, + handle: connect.connect(elem.firstChild, "onmouseover", this, function(e){ + require(modules, function(Tooltip){ + Tooltip.show(label, aroundRect, position); + }); + }) + }); + this._events.push({ + shape: dojo, + handle: connect.connect(elem.firstChild, "onmouseout", this, function(e){ + require(modules, function(Tooltip){ + Tooltip.hide(aroundRect); + }); + }) + }); + }else{ + var shp = elem.getShape(), + lt = html.coords(chart.node, true); + aroundRect = lang.mixin(aroundRect, { + x: shp.x - fontWidth / 2, + y: shp.y + }); + aroundRect.x += lt.x; + aroundRect.y += lt.y; + aroundRect.x = Math.round(aroundRect.x); + aroundRect.y = Math.round(aroundRect.y); + aroundRect.width = Math.ceil(fontWidth); + aroundRect.height = Math.ceil(fontHeight); + this._events.push({ + shape: elem, + handle: elem.connect("onmouseenter", this, function(e){ + require(modules, function(Tooltip){ + Tooltip.show(label, aroundRect, position); + }); + }) + }); + this._events.push({ + shape: elem, + handle: elem.connect("onmouseleave", this, function(e){ + require(modules, function(Tooltip){ + Tooltip.hide(aroundRect); + }); + }) + }); + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Invisible.js b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Invisible.js new file mode 100644 index 0000000..b03bea0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/Invisible.js @@ -0,0 +1,285 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "./Base", "../scaler/linear", + "dojox/gfx", "dojox/lang/utils", "dojox/lang/functional", "dojo/string"], + function(lang, declare, Base, lin, g, du, df, dstring){ +/*===== +var Base = dojox.charting.axis2d.Base; +=====*/ + var merge = du.merge, + labelGap = 4, // in pixels + centerAnchorLimit = 45; // in degrees + + return declare("dojox.charting.axis2d.Invisible", Base, { + // summary: + // The default axis object used in dojox.charting. See dojox.charting.Chart.addAxis for details. + // + // defaultParams: Object + // The default parameters used to define any axis. + // optionalParams: Object + // Any optional parameters needed to define an axis. + + /* + // TODO: the documentation tools need these to be pre-defined in order to pick them up + // correctly, but the code here is partially predicated on whether or not the properties + // actually exist. For now, we will leave these undocumented but in the code for later. -- TRT + + // opt: Object + // The actual options used to define this axis, created at initialization. + // scalar: Object + // The calculated helper object to tell charts how to draw an axis and any data. + // ticks: Object + // The calculated tick object that helps a chart draw the scaling on an axis. + // dirty: Boolean + // The state of the axis (whether it needs to be redrawn or not) + // scale: Number + // The current scale of the axis. + // offset: Number + // The current offset of the axis. + + opt: null, + scalar: null, + ticks: null, + dirty: true, + scale: 1, + offset: 0, + */ + defaultParams: { + vertical: false, // true for vertical axis + fixUpper: "none", // align the upper on ticks: "major", "minor", "micro", "none" + fixLower: "none", // align the lower on ticks: "major", "minor", "micro", "none" + natural: false, // all tick marks should be made on natural numbers + leftBottom: true, // position of the axis, used with "vertical" + includeZero: false, // 0 should be included + fixed: true, // all labels are fixed numbers + majorLabels: true, // draw major labels + minorTicks: true, // draw minor ticks + minorLabels: true, // draw minor labels + microTicks: false, // draw micro ticks + rotation: 0 // label rotation angle in degrees + }, + optionalParams: { + min: 0, // minimal value on this axis + max: 1, // maximal value on this axis + from: 0, // visible from this value + to: 1, // visible to this value + majorTickStep: 4, // major tick step + minorTickStep: 2, // minor tick step + microTickStep: 1, // micro tick step + labels: [], // array of labels for major ticks + // with corresponding numeric values + // ordered by values + labelFunc: null, // function to compute label values + maxLabelSize: 0, // size in px. For use with labelFunc + maxLabelCharCount: 0, // size in word count. + trailingSymbol: null + + // TODO: add support for minRange! + // minRange: 1, // smallest distance from min allowed on the axis + }, + + constructor: function(chart, kwArgs){ + // summary: + // The constructor for an axis. + // chart: dojox.charting.Chart + // The chart the axis belongs to. + // kwArgs: dojox.charting.axis2d.__AxisCtorArgs? + // Any optional keyword arguments to be used to define this axis. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + }, + dependOnData: function(){ + // summary: + // Find out whether or not the axis options depend on the data in the axis. + return !("min" in this.opt) || !("max" in this.opt); // Boolean + }, + clear: function(){ + // summary: + // Clear out all calculated properties on this axis; + // returns: dojox.charting.axis2d.Default + // The reference to the axis for functional chaining. + delete this.scaler; + delete this.ticks; + this.dirty = true; + return this; // dojox.charting.axis2d.Default + }, + initialized: function(){ + // summary: + // Finds out if this axis has been initialized or not. + // returns: Boolean + // Whether a scaler has been calculated and if the axis is not dirty. + return "scaler" in this && !(this.dirty && this.dependOnData()); + }, + setWindow: function(scale, offset){ + // summary: + // Set the drawing "window" for the axis. + // scale: Number + // The new scale for the axis. + // offset: Number + // The new offset for the axis. + // returns: dojox.charting.axis2d.Default + // The reference to the axis for functional chaining. + this.scale = scale; + this.offset = offset; + return this.clear(); // dojox.charting.axis2d.Default + }, + getWindowScale: function(){ + // summary: + // Get the current windowing scale of the axis. + return "scale" in this ? this.scale : 1; // Number + }, + getWindowOffset: function(){ + // summary: + // Get the current windowing offset for the axis. + return "offset" in this ? this.offset : 0; // Number + }, + _groupLabelWidth: function(labels, font, wcLimit){ + if(!labels.length){ + return 0; + } + if(lang.isObject(labels[0])){ + labels = df.map(labels, function(label){ return label.text; }); + } + if (wcLimit) { + labels = df.map(labels, function(label){ + return lang.trim(label).length == 0 ? "" : label.substring(0, wcLimit) + this.trailingSymbol; + }, this); + } + var s = labels.join("
                          "); + return g._base._getTextBox(s, {font: font}).w || 0; + }, + calculate: function(min, max, span, labels){ + // summary: + // Perform all calculations needed to render this axis. + // min: Number + // The smallest value represented on this axis. + // max: Number + // The largest value represented on this axis. + // span: Number + // The span in pixels over which axis calculations are made. + // labels: String[] + // Optional list of labels. + // returns: dojox.charting.axis2d.Default + // The reference to the axis for functional chaining. + if(this.initialized()){ + return this; + } + var o = this.opt; + this.labels = "labels" in o ? o.labels : labels; + this.scaler = lin.buildScaler(min, max, span, o); + var tsb = this.scaler.bounds; + if("scale" in this){ + // calculate new range + o.from = tsb.lower + this.offset; + o.to = (tsb.upper - tsb.lower) / this.scale + o.from; + // make sure that bounds are correct + if( !isFinite(o.from) || + isNaN(o.from) || + !isFinite(o.to) || + isNaN(o.to) || + o.to - o.from >= tsb.upper - tsb.lower + ){ + // any error --- remove from/to bounds + delete o.from; + delete o.to; + delete this.scale; + delete this.offset; + }else{ + // shift the window, if we are out of bounds + if(o.from < tsb.lower){ + o.to += tsb.lower - o.from; + o.from = tsb.lower; + }else if(o.to > tsb.upper){ + o.from += tsb.upper - o.to; + o.to = tsb.upper; + } + // update the offset + this.offset = o.from - tsb.lower; + } + // re-calculate the scaler + this.scaler = lin.buildScaler(min, max, span, o); + tsb = this.scaler.bounds; + // cleanup + if(this.scale == 1 && this.offset == 0){ + delete this.scale; + delete this.offset; + } + } + + var ta = this.chart.theme.axis, labelWidth = 0, rotation = o.rotation % 360, + // TODO: we use one font --- of major tick, we need to use major and minor fonts + taFont = o.font || (ta.majorTick && ta.majorTick.font) || (ta.tick && ta.tick.font), + size = taFont ? g.normalizedLength(g.splitFontString(taFont).size) : 0, + cosr = Math.abs(Math.cos(rotation * Math.PI / 180)), + sinr = Math.abs(Math.sin(rotation * Math.PI / 180)); + + if(rotation < 0){ + rotation += 360; + } + + if(size){ + if(this.vertical ? rotation != 0 && rotation != 180 : rotation != 90 && rotation != 270){ + // we need width of all labels + if(this.labels){ + labelWidth = this._groupLabelWidth(this.labels, taFont, o.maxLabelCharCount); + }else{ + var labelLength = Math.ceil( + Math.log( + Math.max( + Math.abs(tsb.from), + Math.abs(tsb.to) + ) + ) / Math.LN10 + ), + t = []; + if(tsb.from < 0 || tsb.to < 0){ + t.push("-"); + } + t.push(dstring.rep("9", labelLength)); + var precision = Math.floor( + Math.log( tsb.to - tsb.from ) / Math.LN10 + ); + if(precision > 0){ + t.push("."); + t.push(dstring.rep("9", precision)); + } + labelWidth = g._base._getTextBox( + t.join(""), + { font: taFont } + ).w; + } + labelWidth = o.maxLabelSize ? Math.min(o.maxLabelSize, labelWidth) : labelWidth; + }else{ + labelWidth = size; + } + switch(rotation){ + case 0: + case 90: + case 180: + case 270: + // trivial cases: use labelWidth + break; + default: + // rotated labels + var gap1 = Math.sqrt(labelWidth * labelWidth + size * size), // short labels + gap2 = this.vertical ? size * cosr + labelWidth * sinr : labelWidth * cosr + size * sinr; // slanted labels + labelWidth = Math.min(gap1, gap2); + break; + } + } + + this.scaler.minMinorStep = labelWidth + labelGap; + this.ticks = lin.buildTicks(this.scaler, o); + return this; // dojox.charting.axis2d.Default + }, + getScaler: function(){ + // summary: + // Get the pre-calculated scaler object. + return this.scaler; // Object + }, + getTicks: function(){ + // summary: + // Get the pre-calculated ticks object. + return this.ticks; // Object + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/axis2d/common.js b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/common.js new file mode 100644 index 0000000..6682346 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/axis2d/common.js @@ -0,0 +1,161 @@ +define(["dojo/_base/lang", "dojo/_base/html", "dojo/_base/window", "dojo/dom-geometry", "dojox/gfx"], + function(lang, html, win, domGeom, g){ + + var common = lang.getObject("dojox.charting.axis2d.common", true); + + var clearNode = function(s){ + s.marginLeft = "0px"; + s.marginTop = "0px"; + s.marginRight = "0px"; + s.marginBottom = "0px"; + s.paddingLeft = "0px"; + s.paddingTop = "0px"; + s.paddingRight = "0px"; + s.paddingBottom = "0px"; + s.borderLeftWidth = "0px"; + s.borderTopWidth = "0px"; + s.borderRightWidth = "0px"; + s.borderBottomWidth = "0px"; + }; + + var getBoxWidth = function(n){ + // marginBox is incredibly slow, so avoid it if we can + if(n["getBoundingClientRect"]){ + var bcr = n.getBoundingClientRect(); + return bcr.width || (bcr.right - bcr.left); + }else{ + return domGeom.getMarginBox(n).w; + } + }; + + return lang.mixin(common, { + // summary: + // Common methods to be used by any axis. This is considered "static". + createText: { + gfx: function(chart, creator, x, y, align, text, font, fontColor){ + // summary: + // Use dojox.gfx to create any text. + // chart: dojox.charting.Chart + // The chart to create the text into. + // creator: dojox.gfx.Surface + // The graphics surface to use for creating the text. + // x: Number + // Where to create the text along the x axis (CSS left). + // y: Number + // Where to create the text along the y axis (CSS top). + // align: String + // How to align the text. Can be "left", "right", "center". + // text: String + // The text to render. + // font: String + // The font definition, a la CSS "font". + // fontColor: String|dojo.Color + // The color of the resultant text. + // returns: dojox.gfx.Text + // The resultant GFX object. + return creator.createText({ + x: x, y: y, text: text, align: align + }).setFont(font).setFill(fontColor); // dojox.gfx.Text + }, + html: function(chart, creator, x, y, align, text, font, fontColor, labelWidth){ + // summary: + // Use the HTML DOM to create any text. + // chart: dojox.charting.Chart + // The chart to create the text into. + // creator: dojox.gfx.Surface + // The graphics surface to use for creating the text. + // x: Number + // Where to create the text along the x axis (CSS left). + // y: Number + // Where to create the text along the y axis (CSS top). + // align: String + // How to align the text. Can be "left", "right", "center". + // text: String + // The text to render. + // font: String + // The font definition, a la CSS "font". + // fontColor: String|dojo.Color + // The color of the resultant text. + // labelWidth: Number? + // The maximum width of the resultant DOM node. + // returns: DOMNode + // The resultant DOMNode (a "div" element). + + // setup the text node + var p = win.doc.createElement("div"), s = p.style, boxWidth; + // bidi support, if this function exists the module was loaded + if(chart.getTextDir){ + p.dir = chart.getTextDir(text); + } + clearNode(s); + s.font = font; + p.innerHTML = String(text).replace(/\s/g, " "); + s.color = fontColor; + // measure the size + s.position = "absolute"; + s.left = "-10000px"; + win.body().appendChild(p); + var size = g.normalizedLength(g.splitFontString(font).size); + + // do we need to calculate the label width? + if(!labelWidth){ + boxWidth = getBoxWidth(p); + } + // when the textDir is rtl, but the UI ltr needs + // to recalculate the starting point + if(p.dir == "rtl"){ + x += labelWidth ? labelWidth : boxWidth; + } + + // new settings for the text node + win.body().removeChild(p); + + s.position = "relative"; + if(labelWidth){ + s.width = labelWidth + "px"; + // s.border = "1px dotted grey"; + switch(align){ + case "middle": + s.textAlign = "center"; + s.left = (x - labelWidth / 2) + "px"; + break; + case "end": + s.textAlign = "right"; + s.left = (x - labelWidth) + "px"; + break; + default: + s.left = x + "px"; + s.textAlign = "left"; + break; + } + }else{ + switch(align){ + case "middle": + s.left = Math.floor(x - boxWidth / 2) + "px"; + // s.left = Math.floor(x - p.offsetWidth / 2) + "px"; + break; + case "end": + s.left = Math.floor(x - boxWidth) + "px"; + // s.left = Math.floor(x - p.offsetWidth) + "px"; + break; + //case "start": + default: + s.left = Math.floor(x) + "px"; + break; + } + } + s.top = Math.floor(y - size) + "px"; + s.whiteSpace = "nowrap"; // hack for WebKit + // setup the wrapper node + var wrap = win.doc.createElement("div"), w = wrap.style; + clearNode(w); + w.width = "0px"; + w.height = "0px"; + // insert nodes + wrap.appendChild(p) + chart.node.insertBefore(wrap, chart.node.firstChild); + return wrap; // DOMNode + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Areas.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Areas.js new file mode 100644 index 0000000..ca9e8a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Areas.js @@ -0,0 +1,14 @@ +define(["dojo/_base/declare", "./Default"], + function(declare, Default){ +/*===== +var Default = dojox.charting.plot2d.Default; +=====*/ + return declare("dojox.charting.plot2d.Areas", Default, { + // summary: + // Represents an area chart. See dojox.charting.plot2d.Default for details. + constructor: function(){ + this.opt.lines = true; + this.opt.areas = true; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Bars.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Bars.js new file mode 100644 index 0000000..aeb9a75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Bars.js @@ -0,0 +1,195 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "./Base", "./common", + "dojox/gfx/fx", "dojox/lang/utils", "dojox/lang/functional", "dojox/lang/functional/reversed"], + function(dojo, lang, arr, declare, Base, dc, fx, du, df, dfr){ + + /*===== + dojo.declare("dojox.charting.plot2d.__BarCtorArgs", dojox.charting.plot2d.__DefaultCtorArgs, { + // summary: + // Additional keyword arguments for bar charts. + + // minBarSize: Number? + // The minimum size for a bar in pixels. Default is 1. + minBarSize: 1, + + // maxBarSize: Number? + // The maximum size for a bar in pixels. Default is 1. + maxBarSize: 1, + + // enableCache: Boolean? + // Whether the bars rect are cached from one rendering to another. This improves the rendering performance of + // successive rendering but penalize the first rendering. Default false. + enableCache: false + }); + var Base = dojox.charting.plot2d.Base; + =====*/ + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + return declare("dojox.charting.plot2d.Bars", Base, { + // summary: + // The plot object representing a bar chart (horizontal bars). + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + gap: 0, // gap between columns in pixels + animate: null, // animate bars into place + enableCache: false + }, + optionalParams: { + minBarSize: 1, // minimal bar width in pixels + maxBarSize: 1, // maximal bar width in pixels + // theme component + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + font: "", + fontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // The constructor for a bar chart. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__BarCtorArgs? + // An optional keyword arguments object to help define the plot. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + this.animate = this.opt.animate; + }, + + getSeriesStats: function(){ + // summary: + // Calculate the min/max on all attached series in both directions. + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + var stats = dc.collectSimpleStats(this.series), t; + stats.hmin -= 0.5; + stats.hmax += 0.5; + t = stats.hmin, stats.hmin = stats.vmin, stats.vmin = t; + t = stats.hmax, stats.hmax = stats.vmax, stats.vmax = t; + return stats; + }, + + createRect: function(run, creator, params){ + var rect; + if(this.opt.enableCache && run._rectFreePool.length > 0){ + rect = run._rectFreePool.pop(); + rect.setShape(params); + // was cleared, add it back + creator.add(rect); + }else{ + rect = creator.createRect(params); + } + if(this.opt.enableCache){ + run._rectUsePool.push(rect); + } + return rect; + }, + + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.Bars + // A reference to this plot for functional chaining. + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.dirty = this.isDirty(); + this.resetEvents(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, f, gap, height, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + baseline = Math.max(0, this._hScaler.bounds.lower), + baselineWidth = ht(baseline), + events = this.events(); + f = dc.calculateBarSize(this._vScaler.bounds.scale, this.opt); + gap = f.gap; + height = f.size; + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + if(this.opt.enableCache){ + run._rectFreePool = (run._rectFreePool?run._rectFreePool:[]).concat(run._rectUsePool?run._rectUsePool:[]); + run._rectUsePool = []; + } + var theme = t.next("bar", [this.opt, run]), s = run.group, + eventSeries = new Array(run.data.length); + for(var j = 0; j < run.data.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y, + hv = ht(v), + width = hv - baselineWidth, + w = Math.abs(width), + finalTheme = typeof value != "number" ? + t.addMixin(theme, "bar", value, true) : + t.post(theme, "bar"); + if(w >= 0 && height >= 1){ + var rect = { + x: offsets.l + (v < baseline ? hv : baselineWidth), + y: dim.height - offsets.b - vt(j + 1.5) + gap, + width: w, height: height + }; + var specialFill = this._plotFill(finalTheme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, rect); + var shape = this.createRect(run, s, rect).setFill(specialFill).setStroke(finalTheme.series.stroke); + run.dyn.fill = shape.getFill(); + run.dyn.stroke = shape.getStroke(); + if(events){ + var o = { + element: "bar", + index: j, + run: run, + shape: shape, + x: v, + y: j + 1.5 + }; + this._connectEvents(o); + eventSeries[j] = o; + } + if(this.animate){ + this._animateBar(shape, offsets.l + baselineWidth, -w); + } + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.Bars + }, + _animateBar: function(shape, hoffset, hsize){ + fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform: [ + {name: "translate", start: [hoffset - (hoffset/hsize), 0], end: [0, 0]}, + {name: "scale", start: [1/hsize, 1], end: [1, 1]}, + {name: "original"} + ] + }, this.animate)).play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Base.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Base.js new file mode 100644 index 0000000..87e1674 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Base.js @@ -0,0 +1,244 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/connect", + "../Element", "./_PlotEvents", "dojo/_base/array", + "../scaler/primitive", "./common", "dojox/gfx/fx"], + function(lang, declare, hub, Element, PlotEvents, arr, primitive, common, fx){ +/*===== +var Element = dojox.charting.Element; +var PlotEvents = dojox.charting.plot2d._PlotEvents; +dojox.charting.plot2d.__PlotCtorArgs = function(){ + // summary: + // The base keyword arguments object for plot constructors. + // Note that the parameters for this may change based on the + // specific plot type (see the corresponding plot type for + // details). +} +=====*/ +return declare("dojox.charting.plot2d.Base", [Element, PlotEvents], { + constructor: function(chart, kwArgs){ + // summary: + // Create a base plot for charting. + // chart: dojox.chart.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__PlotCtorArgs? + // An optional arguments object to help define the plot. + this.zoom = null, + this.zoomQueue = []; // zooming action task queue + this.lastWindow = {vscale: 1, hscale: 1, xoffset: 0, yoffset: 0}; + }, + clear: function(){ + // summary: + // Clear out all of the information tied to this plot. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + this.series = []; + this._hAxis = null; + this._vAxis = null; + this.dirty = true; + return this; // dojox.charting.plot2d.Base + }, + setAxis: function(axis){ + // summary: + // Set an axis for this plot. + // axis: dojox.charting.axis2d.Base + // The axis to set. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + if(axis){ + this[axis.vertical ? "_vAxis" : "_hAxis"] = axis; + } + return this; // dojox.charting.plot2d.Base + }, + toPage: function(coord){ + // summary: + // Compute page coordinates from plot axis data coordinates. + // coord: Object? + // The coordinates in plot axis data coordinate space. For cartesian charts that is of the following form: + // `{ hAxisName: 50, vAxisName: 200 }` + // If not provided return the tranform method instead of the result of the transformation. + // returns: Object + // The resulting page pixel coordinates. That is of the following form: + // `{ x: 50, y: 200 }` + var ah = this._hAxis, av = this._vAxis, + sh = ah.getScaler(), sv = av.getScaler(), + th = sh.scaler.getTransformerFromModel(sh), + tv = sv.scaler.getTransformerFromModel(sv), + c = this.chart.getCoords(), + o = this.chart.offsets, dim = this.chart.dim; + var t = function(coord){ + var r = {}; + r.x = th(coord[ah.name]) + c.x + o.l; + r.y = c.y + dim.height - o.b - tv(coord[av.name]); + return r; + }; + // if no coord return the function so that we can capture the current transforms + // and reuse them later on + return coord?t(coord):t; + }, + toData: function(coord){ + // summary: + // Compute plot axis data coordinates from page coordinates. + // coord: Object + // The pixel coordinate in page coordinate space. That is of the following form: + // `{ x: 50, y: 200 }` + // If not provided return the tranform method instead of the result of the transformation. + // returns: Object + // The resulting plot axis data coordinates. For cartesian charts that is of the following form: + // `{ hAxisName: 50, vAxisName: 200 }` + var ah = this._hAxis, av = this._vAxis, + sh = ah.getScaler(), sv = av.getScaler(), + th = sh.scaler.getTransformerFromPlot(sh), + tv = sv.scaler.getTransformerFromPlot(sv), + c = this.chart.getCoords(), + o = this.chart.offsets, dim = this.chart.dim; + var t = function(coord){ + var r = {}; + r[ah.name] = th(coord.x - c.x - o.l); + r[av.name] = tv(c.y + dim.height - coord.y - o.b); + return r; + }; + // if no coord return the function so that we can capture the current transforms + // and reuse them later on + return coord?t(coord):t; + }, + addSeries: function(run){ + // summary: + // Add a data series to this plot. + // run: dojox.charting.Series + // The series to be added. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + this.series.push(run); + return this; // dojox.charting.plot2d.Base + }, + getSeriesStats: function(){ + // summary: + // Calculate the min/max on all attached series in both directions. + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + return common.collectSimpleStats(this.series); + }, + calculateAxes: function(dim){ + // summary: + // Stub function for running the axis calculations (depricated). + // dim: Object + // An object of the form { width, height } + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + this.initializeScalers(dim, this.getSeriesStats()); + return this; // dojox.charting.plot2d.Base + }, + isDirty: function(){ + // summary: + // Returns whether or not this plot needs to be rendered. + // returns: Boolean + // The state of the plot. + return this.dirty || this._hAxis && this._hAxis.dirty || this._vAxis && this._vAxis.dirty; // Boolean + }, + isDataDirty: function(){ + // summary: + // Returns whether or not any of this plot's data series need to be rendered. + // returns: Boolean + // Flag indicating if any of this plot's series are invalid and need rendering. + return arr.some(this.series, function(item){ return item.dirty; }); // Boolean + }, + performZoom: function(dim, offsets){ + // summary: + // Create/alter any zooming windows on this plot. + // dim: Object + // An object of the form { width, height }. + // offsets: Object + // An object of the form { l, r, t, b }. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + + // get current zooming various + var vs = this._vAxis.scale || 1, + hs = this._hAxis.scale || 1, + vOffset = dim.height - offsets.b, + hBounds = this._hScaler.bounds, + xOffset = (hBounds.from - hBounds.lower) * hBounds.scale, + vBounds = this._vScaler.bounds, + yOffset = (vBounds.from - vBounds.lower) * vBounds.scale, + // get incremental zooming various + rVScale = vs / this.lastWindow.vscale, + rHScale = hs / this.lastWindow.hscale, + rXOffset = (this.lastWindow.xoffset - xOffset)/ + ((this.lastWindow.hscale == 1)? hs : this.lastWindow.hscale), + rYOffset = (yOffset - this.lastWindow.yoffset)/ + ((this.lastWindow.vscale == 1)? vs : this.lastWindow.vscale), + + shape = this.group, + anim = fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform:[ + {name:"translate", start:[0, 0], end: [offsets.l * (1 - rHScale), vOffset * (1 - rVScale)]}, + {name:"scale", start:[1, 1], end: [rHScale, rVScale]}, + {name:"original"}, + {name:"translate", start: [0, 0], end: [rXOffset, rYOffset]} + ]}, this.zoom)); + + lang.mixin(this.lastWindow, {vscale: vs, hscale: hs, xoffset: xOffset, yoffset: yOffset}); + //add anim to zooming action queue, + //in order to avoid several zooming action happened at the same time + this.zoomQueue.push(anim); + //perform each anim one by one in zoomQueue + hub.connect(anim, "onEnd", this, function(){ + this.zoom = null; + this.zoomQueue.shift(); + if(this.zoomQueue.length > 0){ + this.zoomQueue[0].play(); + } + }); + if(this.zoomQueue.length == 1){ + this.zoomQueue[0].play(); + } + return this; // dojox.charting.plot2d.Base + }, + render: function(dim, offsets){ + // summary: + // Render the plot on the chart. + // dim: Object + // An object of the form { width, height }. + // offsets: Object + // An object of the form { l, r, t, b }. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + return this; // dojox.charting.plot2d.Base + }, + getRequiredColors: function(){ + // summary: + // Get how many data series we have, so we know how many colors to use. + // returns: Number + // The number of colors needed. + return this.series.length; // Number + }, + initializeScalers: function(dim, stats){ + // summary: + // Initializes scalers using attached axes. + // dim: Object: + // Size of a plot area in pixels as {width, height}. + // stats: Object: + // Min/max of data in both directions as {hmin, hmax, vmin, vmax}. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + if(this._hAxis){ + if(!this._hAxis.initialized()){ + this._hAxis.calculate(stats.hmin, stats.hmax, dim.width); + } + this._hScaler = this._hAxis.getScaler(); + }else{ + this._hScaler = primitive.buildScaler(stats.hmin, stats.hmax, dim.width); + } + if(this._vAxis){ + if(!this._vAxis.initialized()){ + this._vAxis.calculate(stats.vmin, stats.vmax, dim.height); + } + this._vScaler = this._vAxis.getScaler(); + }else{ + this._vScaler = primitive.buildScaler(stats.vmin, stats.vmax, dim.height); + } + return this; // dojox.charting.plot2d.Base + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Bubble.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Bubble.js new file mode 100644 index 0000000..ae7ce3b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Bubble.js @@ -0,0 +1,218 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", + "./Base", "./common", "dojox/lang/functional", "dojox/lang/functional/reversed", + "dojox/lang/utils", "dojox/gfx/fx"], + function(lang, declare, arr, Base, dc, df, dfr, du, fx){ +/*===== +var Base = dojox.charting.plot2d.Base; +=====*/ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + return declare("dojox.charting.plot2d.Bubble", Base, { + // summary: + // A plot representing bubbles. Note that data for Bubbles requires 3 parameters, + // in the form of: { x, y, size }, where size determines the size of the bubble. + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + animate: null // animate bars into place + }, + optionalParams: { + // theme component + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + font: "", + fontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // Create a plot of bubbles. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__DefaultCtorArgs? + // Optional keyword arguments object to help define plot parameters. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + this.animate = this.opt.animate; + }, + + // override the render so that we are plotting only circles. + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.Bubble + // A reference to this plot for functional chaining. + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + + var t = this.chart.theme, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + events = this.events(); + + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + if(!run.data.length){ + run.dirty = false; + t.skip(); + continue; + } + + if(typeof run.data[0] == "number"){ + console.warn("dojox.charting.plot2d.Bubble: the data in the following series cannot be rendered as a bubble chart; ", run); + continue; + } + + var theme = t.next("circle", [this.opt, run]), s = run.group, + points = arr.map(run.data, function(v, i){ + return v ? { + x: ht(v.x) + offsets.l, + y: dim.height - offsets.b - vt(v.y), + radius: this._vScaler.bounds.scale * (v.size / 2) + } : null; + }, this); + + var frontCircles = null, outlineCircles = null, shadowCircles = null; + + // make shadows if needed + if(theme.series.shadow){ + shadowCircles = arr.map(points, function(item){ + if(item !== null){ + var finalTheme = t.addMixin(theme, "circle", item, true), + shadow = finalTheme.series.shadow; + var shape = s.createCircle({ + cx: item.x + shadow.dx, cy: item.y + shadow.dy, r: item.radius + }).setStroke(shadow).setFill(shadow.color); + if(this.animate){ + this._animateBubble(shape, dim.height - offsets.b, item.radius); + } + return shape; + } + return null; + }, this); + if(shadowCircles.length){ + run.dyn.shadow = shadowCircles[shadowCircles.length - 1].getStroke(); + } + } + + // make outlines if needed + if(theme.series.outline){ + outlineCircles = arr.map(points, function(item){ + if(item !== null){ + var finalTheme = t.addMixin(theme, "circle", item, true), + outline = dc.makeStroke(finalTheme.series.outline); + outline.width = 2 * outline.width + theme.series.stroke.width; + var shape = s.createCircle({ + cx: item.x, cy: item.y, r: item.radius + }).setStroke(outline); + if(this.animate){ + this._animateBubble(shape, dim.height - offsets.b, item.radius); + } + return shape; + } + return null; + }, this); + if(outlineCircles.length){ + run.dyn.outline = outlineCircles[outlineCircles.length - 1].getStroke(); + } + } + + // run through the data and add the circles. + frontCircles = arr.map(points, function(item){ + if(item !== null){ + var finalTheme = t.addMixin(theme, "circle", item, true), + rect = { + x: item.x - item.radius, + y: item.y - item.radius, + width: 2 * item.radius, + height: 2 * item.radius + }; + var specialFill = this._plotFill(finalTheme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, rect); + var shape = s.createCircle({ + cx: item.x, cy: item.y, r: item.radius + }).setFill(specialFill).setStroke(finalTheme.series.stroke); + if(this.animate){ + this._animateBubble(shape, dim.height - offsets.b, item.radius); + } + return shape; + } + return null; + }, this); + if(frontCircles.length){ + run.dyn.fill = frontCircles[frontCircles.length - 1].getFill(); + run.dyn.stroke = frontCircles[frontCircles.length - 1].getStroke(); + } + + if(events){ + var eventSeries = new Array(frontCircles.length); + arr.forEach(frontCircles, function(s, i){ + if(s !== null){ + var o = { + element: "circle", + index: i, + run: run, + shape: s, + outline: outlineCircles && outlineCircles[i] || null, + shadow: shadowCircles && shadowCircles[i] || null, + x: run.data[i].x, + y: run.data[i].y, + r: run.data[i].size / 2, + cx: points[i].x, + cy: points[i].y, + cr: points[i].radius + }; + this._connectEvents(o); + eventSeries[i] = o; + } + }, this); + this._eventSeries[run.name] = eventSeries; + }else{ + delete this._eventSeries[run.name]; + } + + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.Bubble + }, + _animateBubble: function(shape, offset, size){ + fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform: [ + {name: "translate", start: [0, offset], end: [0, 0]}, + {name: "scale", start: [0, 1/size], end: [1, 1]}, + {name: "original"} + ] + }, this.animate)).play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Candlesticks.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Candlesticks.js new file mode 100644 index 0000000..0235679 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Candlesticks.js @@ -0,0 +1,228 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", "./Base", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/utils", "dojox/gfx/fx"], + function(lang, declare, arr, Base, dc, df, dfr, du, fx){ +/*===== +var Base = dojox.charting.plot2d.Base; +=====*/ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + // Candlesticks are based on the Bars plot type; we expect the following passed + // as values in a series: + // { x?, open, close, high, low, mid? } + // if x is not provided, the array index is used. + // failing to provide the OHLC values will throw an error. + return declare("dojox.charting.plot2d.Candlesticks", Base, { + // summary: + // A plot that represents typical candlesticks (financial reporting, primarily). + // Unlike most charts, the Candlestick expects data points to be represented by + // an object of the form { x?, open, close, high, low, mid? }, where both + // x and mid are optional parameters. If x is not provided, the index of the + // data array is used. + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + gap: 2, // gap between columns in pixels + animate: null // animate bars into place + }, + optionalParams: { + minBarSize: 1, // minimal candle width in pixels + maxBarSize: 1, // maximal candle width in pixels + // theme component + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + font: "", + fontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // The constructor for a candlestick chart. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__BarCtorArgs? + // An optional keyword arguments object to help define the plot. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + this.animate = this.opt.animate; + }, + + collectStats: function(series){ + // summary: + // Collect all statistics for drawing this chart. Since the common + // functionality only assumes x and y, Candlesticks must create it's own + // stats (since data has no y value, but open/close/high/low instead). + // series: dojox.charting.Series[] + // The data series array to be drawn on this plot. + // returns: Object + // Returns an object in the form of { hmin, hmax, vmin, vmax }. + + // we have to roll our own, since we need to use all four passed + // values to figure out our stats, and common only assumes x and y. + var stats = lang.delegate(dc.defaultStats); + for(var i=0; i= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + var theme = t.next("candlestick", [this.opt, run]), s = run.group, + eventSeries = new Array(run.data.length); + for(var j = 0; j < run.data.length; ++j){ + var v = run.data[j]; + if(v !== null){ + var finalTheme = t.addMixin(theme, "candlestick", v, true); + + // calculate the points we need for OHLC + var x = ht(v.x || (j+0.5)) + offsets.l + gap, + y = dim.height - offsets.b, + open = vt(v.open), + close = vt(v.close), + high = vt(v.high), + low = vt(v.low); + if("mid" in v){ + var mid = vt(v.mid); + } + if(low > high){ + var tmp = high; + high = low; + low = tmp; + } + + if(width >= 1){ + // draw the line and rect, set up as a group and pass that to the events. + var doFill = open > close; + var line = { x1: width/2, x2: width/2, y1: y - high, y2: y - low }, + rect = { + x: 0, y: y-Math.max(open, close), + width: width, height: Math.max(doFill ? open-close : close-open, 1) + }; + var shape = s.createGroup(); + shape.setTransform({dx: x, dy: 0 }); + var inner = shape.createGroup(); + inner.createLine(line).setStroke(finalTheme.series.stroke); + inner.createRect(rect).setStroke(finalTheme.series.stroke). + setFill(doFill ? finalTheme.series.fill : "white"); + if("mid" in v){ + // add the mid line. + inner.createLine({ + x1: (finalTheme.series.stroke.width||1), x2: width - (finalTheme.series.stroke.width || 1), + y1: y - mid, y2: y - mid + }).setStroke(doFill ? "white" : finalTheme.series.stroke); + } + + // TODO: double check this. + run.dyn.fill = finalTheme.series.fill; + run.dyn.stroke = finalTheme.series.stroke; + if(events){ + var o = { + element: "candlestick", + index: j, + run: run, + shape: inner, + x: x, + y: y-Math.max(open, close), + cx: width/2, + cy: (y-Math.max(open, close)) + (Math.max(doFill ? open-close : close-open, 1)/2), + width: width, + height: Math.max(doFill ? open-close : close-open, 1), + data: v + }; + this._connectEvents(o); + eventSeries[j] = o; + } + } + if(this.animate){ + this._animateCandlesticks(shape, y - low, high - low); + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.Candlesticks + }, + _animateCandlesticks: function(shape, voffset, vsize){ + fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform: [ + {name: "translate", start: [0, voffset - (voffset/vsize)], end: [0, 0]}, + {name: "scale", start: [1, 1/vsize], end: [1, 1]}, + {name: "original"} + ] + }, this.animate)).play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/ClusteredBars.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/ClusteredBars.js new file mode 100644 index 0000000..2074a41 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/ClusteredBars.js @@ -0,0 +1,99 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "./Bars", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/utils"], + function(lang, arr, declare, Bars, dc, df, dfr, du){ +/*===== +var Bars = dojox.charting.plot2d.Bars; +=====*/ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + return declare("dojox.charting.plot2d.ClusteredBars", Bars, { + // summary: + // A plot representing grouped or clustered bars (horizontal bars) + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.ClusteredBars + // A reference to this plot for functional chaining. + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, f, gap, height, thickness, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + baseline = Math.max(0, this._hScaler.bounds.lower), + baselineWidth = ht(baseline), + events = this.events(); + f = dc.calculateBarSize(this._vScaler.bounds.scale, this.opt, this.series.length); + gap = f.gap; + height = thickness = f.size; + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i], shift = thickness * (this.series.length - i - 1); + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + var theme = t.next("bar", [this.opt, run]), s = run.group, + eventSeries = new Array(run.data.length); + for(var j = 0; j < run.data.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y, + hv = ht(v), + width = hv - baselineWidth, + w = Math.abs(width), + finalTheme = typeof value != "number" ? + t.addMixin(theme, "bar", value, true) : + t.post(theme, "bar"); + if(w >= 0 && height >= 1){ + var rect = { + x: offsets.l + (v < baseline ? hv : baselineWidth), + y: dim.height - offsets.b - vt(j + 1.5) + gap + shift, + width: w, height: height + }; + var specialFill = this._plotFill(finalTheme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, rect); + var shape = s.createRect(rect).setFill(specialFill).setStroke(finalTheme.series.stroke); + run.dyn.fill = shape.getFill(); + run.dyn.stroke = shape.getStroke(); + if(events){ + var o = { + element: "bar", + index: j, + run: run, + shape: shape, + x: v, + y: j + 1.5 + }; + this._connectEvents(o); + eventSeries[j] = o; + } + if(this.animate){ + this._animateBar(shape, offsets.l + baselineWidth, -width); + } + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.ClusteredBars + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/ClusteredColumns.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/ClusteredColumns.js new file mode 100644 index 0000000..a5ceadb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/ClusteredColumns.js @@ -0,0 +1,99 @@ +define(["dojo/_base/array", "dojo/_base/declare", "./Columns", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/utils"], + function(arr, declare, Columns, dc, df, dfr, du){ +/*===== +var Columns = dojox.charting.plot2d.Columns; +=====*/ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + return declare("dojox.charting.plot2d.ClusteredColumns", Columns, { + // summary: + // A plot representing grouped or clustered columns (vertical bars). + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.ClusteredColumns + // A reference to this plot for functional chaining. + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, f, gap, width, thickness, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + baseline = Math.max(0, this._vScaler.bounds.lower), + baselineHeight = vt(baseline), + events = this.events(); + f = dc.calculateBarSize(this._hScaler.bounds.scale, this.opt, this.series.length); + gap = f.gap; + width = thickness = f.size; + for(var i = 0; i < this.series.length; ++i){ + var run = this.series[i], shift = thickness * i; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + var theme = t.next("column", [this.opt, run]), s = run.group, + eventSeries = new Array(run.data.length); + for(var j = 0; j < run.data.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y, + vv = vt(v), + height = vv - baselineHeight, + h = Math.abs(height), + finalTheme = typeof value != "number" ? + t.addMixin(theme, "column", value, true) : + t.post(theme, "column"); + if(width >= 1 && h >= 0){ + var rect = { + x: offsets.l + ht(j + 0.5) + gap + shift, + y: dim.height - offsets.b - (v > baseline ? vv : baselineHeight), + width: width, height: h + }; + var specialFill = this._plotFill(finalTheme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, rect); + var shape = s.createRect(rect).setFill(specialFill).setStroke(finalTheme.series.stroke); + run.dyn.fill = shape.getFill(); + run.dyn.stroke = shape.getStroke(); + if(events){ + var o = { + element: "column", + index: j, + run: run, + shape: shape, + x: j + 0.5, + y: v + }; + this._connectEvents(o); + eventSeries[j] = o; + } + if(this.animate){ + this._animateColumn(shape, dim.height - offsets.b - baselineHeight, h); + } + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.ClusteredColumns + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Columns.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Columns.js new file mode 100644 index 0000000..462a24c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Columns.js @@ -0,0 +1,179 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "./Base", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/utils", "dojox/gfx/fx"], + function(lang, arr, declare, Base, dc, df, dfr, du, fx){ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); +/*===== +var Base = dojox.charting.plot2d.Base; +=====*/ + + return declare("dojox.charting.plot2d.Columns", Base, { + // summary: + // The plot object representing a column chart (vertical bars). + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + gap: 0, // gap between columns in pixels + animate: null, // animate bars into place + enableCache: false + }, + optionalParams: { + minBarSize: 1, // minimal column width in pixels + maxBarSize: 1, // maximal column width in pixels + // theme component + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + font: "", + fontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // The constructor for a columns chart. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__BarCtorArgs? + // An optional keyword arguments object to help define the plot. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + this.animate = this.opt.animate; + }, + + getSeriesStats: function(){ + // summary: + // Calculate the min/max on all attached series in both directions. + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + var stats = dc.collectSimpleStats(this.series); + stats.hmin -= 0.5; + stats.hmax += 0.5; + return stats; + }, + + createRect: function(run, creator, params){ + var rect; + if(this.opt.enableCache && run._rectFreePool.length > 0){ + rect = run._rectFreePool.pop(); + rect.setShape(params); + // was cleared, add it back + creator.add(rect); + }else{ + rect = creator.createRect(params); + } + if(this.opt.enableCache){ + run._rectUsePool.push(rect); + } + return rect; + }, + + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.Columns + // A reference to this plot for functional chaining. + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + var t = this.getSeriesStats(); + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, f, gap, width, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + baseline = Math.max(0, this._vScaler.bounds.lower), + baselineHeight = vt(baseline), + min = Math.max(0, Math.floor(this._hScaler.bounds.from - 1)), max = Math.ceil(this._hScaler.bounds.to), + events = this.events(); + f = dc.calculateBarSize(this._hScaler.bounds.scale, this.opt); + gap = f.gap; + width = f.size; + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + if(this.opt.enableCache){ + run._rectFreePool = (run._rectFreePool?run._rectFreePool:[]).concat(run._rectUsePool?run._rectUsePool:[]); + run._rectUsePool = []; + } + var theme = t.next("column", [this.opt, run]), s = run.group, + eventSeries = new Array(run.data.length); + var l = Math.min(run.data.length, max); + for(var j = min; j < l; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y, + vv = vt(v), + height = vv - baselineHeight, + h = Math.abs(height), + finalTheme = typeof value != "number" ? + t.addMixin(theme, "column", value, true) : + t.post(theme, "column"); + if(width >= 1 && h >= 0){ + var rect = { + x: offsets.l + ht(j + 0.5) + gap, + y: dim.height - offsets.b - (v > baseline ? vv : baselineHeight), + width: width, height: h + }; + var specialFill = this._plotFill(finalTheme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, rect); + var shape = this.createRect(run, s, rect).setFill(specialFill).setStroke(finalTheme.series.stroke); + run.dyn.fill = shape.getFill(); + run.dyn.stroke = shape.getStroke(); + if(events){ + var o = { + element: "column", + index: j, + run: run, + shape: shape, + x: j + 0.5, + y: v + }; + this._connectEvents(o); + eventSeries[j] = o; + } + if(this.animate){ + this._animateColumn(shape, dim.height - offsets.b - baselineHeight, h); + } + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.Columns + }, + _animateColumn: function(shape, voffset, vsize){ + fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform: [ + {name: "translate", start: [0, voffset - (voffset/vsize)], end: [0, 0]}, + {name: "scale", start: [1, 1/vsize], end: [1, 1]}, + {name: "original"} + ] + }, this.animate)).play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Default.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Default.js new file mode 100644 index 0000000..cdaedf2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Default.js @@ -0,0 +1,376 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", + "./Base", "./common", "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/utils", "dojox/gfx/fx"], + function(lang, declare, arr, Base, dc, df, dfr, du, fx){ + + /*===== + dojo.declare("dojox.charting.plot2d.__DefaultCtorArgs", dojox.charting.plot2d.__PlotCtorArgs, { + // summary: + // The arguments used for any/most plots. + + // hAxis: String? + // The horizontal axis name. + hAxis: "x", + + // vAxis: String? + // The vertical axis name + vAxis: "y", + + // lines: Boolean? + // Whether or not to draw lines on this plot. Defaults to true. + lines: true, + + // areas: Boolean? + // Whether or not to draw areas on this plot. Defaults to false. + areas: false, + + // markers: Boolean? + // Whether or not to draw markers at data points on this plot. Default is false. + markers: false, + + // tension: Number|String? + // Whether or not to apply 'tensioning' to the lines on this chart. + // Options include a number, "X", "x", or "S"; if a number is used, the + // simpler bezier curve calculations are used to draw the lines. If X, x or S + // is used, the more accurate smoothing algorithm is used. + tension: "", + + // animate: Boolean? + // Whether or not to animate the chart to place. + animate: false, + + // stroke: dojox.gfx.Stroke? + // An optional stroke to use for any series on the plot. + stroke: {}, + + // outline: dojox.gfx.Stroke? + // An optional stroke used to outline any series on the plot. + outline: {}, + + // shadow: dojox.gfx.Stroke? + // An optional stroke to use to draw any shadows for a series on a plot. + shadow: {}, + + // fill: dojox.gfx.Fill? + // Any fill to be used for elements on the plot (such as areas). + fill: {}, + + // font: String? + // A font definition to be used for labels and other text-based elements on the plot. + font: "", + + // fontColor: String|dojo.Color? + // The color to be used for any text-based elements on the plot. + fontColor: "", + + // markerStroke: dojo.gfx.Stroke? + // An optional stroke to use for any markers on the plot. + markerStroke: {}, + + // markerOutline: dojo.gfx.Stroke? + // An optional outline to use for any markers on the plot. + markerOutline: {}, + + // markerShadow: dojo.gfx.Stroke? + // An optional shadow to use for any markers on the plot. + markerShadow: {}, + + // markerFill: dojo.gfx.Fill? + // An optional fill to use for any markers on the plot. + markerFill: {}, + + // markerFont: String? + // An optional font definition to use for any markers on the plot. + markerFont: "", + + // markerFontColor: String|dojo.Color? + // An optional color to use for any marker text on the plot. + markerFontColor: "", + + // enableCache: Boolean? + // Whether the markers are cached from one rendering to another. This improves the rendering performance of + // successive rendering but penalize the first rendering. Default false. + enableCache: false + }); + + var Base = dojox.charting.plot2d.Base; +=====*/ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + var DEFAULT_ANIMATION_LENGTH = 1200; // in ms + + return declare("dojox.charting.plot2d.Default", Base, { + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + lines: true, // draw lines + areas: false, // draw areas + markers: false, // draw markers + tension: "", // draw curved lines (tension is "X", "x", or "S") + animate: false, // animate chart to place + enableCache: false + }, + optionalParams: { + // theme component + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + font: "", + fontColor: "", + markerStroke: {}, + markerOutline: {}, + markerShadow: {}, + markerFill: {}, + markerFont: "", + markerFontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // Return a new plot. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__DefaultCtorArgs? + // An optional arguments object to help define this plot. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + + // animation properties + this.animate = this.opt.animate; + }, + + createPath: function(run, creator, params){ + var path; + if(this.opt.enableCache && run._pathFreePool.length > 0){ + path = run._pathFreePool.pop(); + path.setShape(params); + // was cleared, add it back + creator.add(path); + }else{ + path = creator.createPath(params); + } + if(this.opt.enableCache){ + run._pathUsePool.push(path); + } + return path; + }, + + render: function(dim, offsets){ + // summary: + // Render/draw everything on this plot. + // dim: Object + // An object of the form { width, height } + // offsets: Object + // An object of the form { l, r, t, b } + // returns: dojox.charting.plot2d.Default + // A reference to this plot for functional chaining. + + // make sure all the series is not modified + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + this.group.setTransform(null); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, stroke, outline, marker, events = this.events(); + + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + if(this.opt.enableCache){ + run._pathFreePool = (run._pathFreePool?run._pathFreePool:[]).concat(run._pathUsePool?run._pathUsePool:[]); + run._pathUsePool = []; + } + if(!run.data.length){ + run.dirty = false; + t.skip(); + continue; + } + + var theme = t.next(this.opt.areas ? "area" : "line", [this.opt, run], true), + s = run.group, rsegments = [], startindexes = [], rseg = null, lpoly, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + eventSeries = this._eventSeries[run.name] = new Array(run.data.length); + + // optim works only for index based case + var indexed = typeof run.data[0] == "number"; + var min = indexed?Math.max(0, Math.floor(this._hScaler.bounds.from - 1)):0, + max = indexed?Math.min(run.data.length, Math.ceil(this._hScaler.bounds.to)):run.data.length; + + // split the run data into dense segments (each containing no nulls) + for(var j = min; j < max; j++){ + if(run.data[j] != null){ + if(!rseg){ + rseg = []; + startindexes.push(j); + rsegments.push(rseg); + } + rseg.push(run.data[j]); + }else{ + rseg = null; + } + } + + for(var seg = 0; seg < rsegments.length; seg++){ + if(typeof rsegments[seg][0] == "number"){ + lpoly = arr.map(rsegments[seg], function(v, i){ + return { + x: ht(i + startindexes[seg] + 1) + offsets.l, + y: dim.height - offsets.b - vt(v) + }; + }, this); + }else{ + lpoly = arr.map(rsegments[seg], function(v, i){ + return { + x: ht(v.x) + offsets.l, + y: dim.height - offsets.b - vt(v.y) + }; + }, this); + } + + var lpath = this.opt.tension ? dc.curve(lpoly, this.opt.tension) : ""; + + if(this.opt.areas && lpoly.length > 1){ + var fill = theme.series.fill; + var apoly = lang.clone(lpoly); + if(this.opt.tension){ + var apath = "L" + apoly[apoly.length-1].x + "," + (dim.height - offsets.b) + + " L" + apoly[0].x + "," + (dim.height - offsets.b) + + " L" + apoly[0].x + "," + apoly[0].y; + run.dyn.fill = s.createPath(lpath + " " + apath).setFill(fill).getFill(); + } else { + apoly.push({x: lpoly[lpoly.length - 1].x, y: dim.height - offsets.b}); + apoly.push({x: lpoly[0].x, y: dim.height - offsets.b}); + apoly.push(lpoly[0]); + run.dyn.fill = s.createPolyline(apoly).setFill(fill).getFill(); + } + } + if(this.opt.lines || this.opt.markers){ + // need a stroke + stroke = theme.series.stroke; + if(theme.series.outline){ + outline = run.dyn.outline = dc.makeStroke(theme.series.outline); + outline.width = 2 * outline.width + stroke.width; + } + } + if(this.opt.markers){ + run.dyn.marker = theme.symbol; + } + var frontMarkers = null, outlineMarkers = null, shadowMarkers = null; + if(stroke && theme.series.shadow && lpoly.length > 1){ + var shadow = theme.series.shadow, + spoly = arr.map(lpoly, function(c){ + return {x: c.x + shadow.dx, y: c.y + shadow.dy}; + }); + if(this.opt.lines){ + if(this.opt.tension){ + run.dyn.shadow = s.createPath(dc.curve(spoly, this.opt.tension)).setStroke(shadow).getStroke(); + } else { + run.dyn.shadow = s.createPolyline(spoly).setStroke(shadow).getStroke(); + } + } + if(this.opt.markers && theme.marker.shadow){ + shadow = theme.marker.shadow; + shadowMarkers = arr.map(spoly, function(c){ + return this.createPath(run, s, "M" + c.x + " " + c.y + " " + theme.symbol). + setStroke(shadow).setFill(shadow.color); + }, this); + } + } + if(this.opt.lines && lpoly.length > 1){ + if(outline){ + if(this.opt.tension){ + run.dyn.outline = s.createPath(lpath).setStroke(outline).getStroke(); + } else { + run.dyn.outline = s.createPolyline(lpoly).setStroke(outline).getStroke(); + } + } + if(this.opt.tension){ + run.dyn.stroke = s.createPath(lpath).setStroke(stroke).getStroke(); + } else { + run.dyn.stroke = s.createPolyline(lpoly).setStroke(stroke).getStroke(); + } + } + if(this.opt.markers){ + frontMarkers = new Array(lpoly.length); + outlineMarkers = new Array(lpoly.length); + outline = null; + if(theme.marker.outline){ + outline = dc.makeStroke(theme.marker.outline); + outline.width = 2 * outline.width + (theme.marker.stroke ? theme.marker.stroke.width : 0); + } + arr.forEach(lpoly, function(c, i){ + var path = "M" + c.x + " " + c.y + " " + theme.symbol; + if(outline){ + outlineMarkers[i] = this.createPath(run, s, path).setStroke(outline); + } + frontMarkers[i] = this.createPath(run, s, path).setStroke(theme.marker.stroke).setFill(theme.marker.fill); + }, this); + run.dyn.markerFill = theme.marker.fill; + run.dyn.markerStroke = theme.marker.stroke; + if(events){ + arr.forEach(frontMarkers, function(s, i){ + var o = { + element: "marker", + index: i + startindexes[seg], + run: run, + shape: s, + outline: outlineMarkers[i] || null, + shadow: shadowMarkers && shadowMarkers[i] || null, + cx: lpoly[i].x, + cy: lpoly[i].y + }; + if(typeof rsegments[seg][0] == "number"){ + o.x = i + startindexes[seg] + 1; + o.y = rsegments[seg][i]; + }else{ + o.x = rsegments[seg][i].x; + o.y = rsegments[seg][i].y; + } + this._connectEvents(o); + eventSeries[i + startindexes[seg]] = o; + }, this); + }else{ + delete this._eventSeries[run.name]; + } + } + } + run.dirty = false; + } + if(this.animate){ + // grow from the bottom + var plotGroup = this.group; + fx.animateTransform(lang.delegate({ + shape: plotGroup, + duration: DEFAULT_ANIMATION_LENGTH, + transform:[ + {name:"translate", start: [0, dim.height - offsets.b], end: [0, 0]}, + {name:"scale", start: [1, 0], end:[1, 1]}, + {name:"original"} + ] + }, this.animate)).play(); + } + this.dirty = false; + return this; // dojox.charting.plot2d.Default + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Grid.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Grid.js new file mode 100644 index 0000000..154e164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Grid.js @@ -0,0 +1,319 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/connect", "dojo/_base/array", + "../Element", "./common", "dojox/lang/utils", "dojox/gfx/fx"], + function(lang, declare, hub, arr, Element, dc, du, fx){ + + /*===== + dojo.declare("dojox.charting.plot2d.__GridCtorArgs", dojox.charting.plot2d.__DefaultCtorArgs, { + // summary: + // A special keyword arguments object that is specific to a grid "plot". + + // hMajorLines: Boolean? + // Whether to show lines at the major ticks along the horizontal axis. Default is true. + hMajorLines: true, + + // hMinorLines: Boolean? + // Whether to show lines at the minor ticks along the horizontal axis. Default is false. + hMinorLines: false, + + // vMajorLines: Boolean? + // Whether to show lines at the major ticks along the vertical axis. Default is true. + vMajorLines: true, + + // vMinorLines: Boolean? + // Whether to show lines at the major ticks along the vertical axis. Default is false. + vMinorLines: false, + + // hStripes: String? + // Whether or not to show stripes (alternating fills) along the horizontal axis. Default is "none". + hStripes: "none", + + // vStripes: String? + // Whether or not to show stripes (alternating fills) along the vertical axis. Default is "none". + vStripes: "none", + + // enableCache: Boolean? + // Whether the grid lines are cached from one rendering to another. This improves the rendering performance of + // successive rendering but penalize the first rendering. Default false. + enableCache: false + }); + var Element = dojox.charting.plot2d.Element; + =====*/ + + return declare("dojox.charting.plot2d.Grid", Element, { + // summary: + // A "faux" plot that can be placed behind other plots to represent + // a grid against which other plots can be easily measured. + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + hMajorLines: true, // draw horizontal major lines + hMinorLines: false, // draw horizontal minor lines + vMajorLines: true, // draw vertical major lines + vMinorLines: false, // draw vertical minor lines + hStripes: "none", // TBD + vStripes: "none", // TBD + animate: null, // animate bars into place + enableCache: false + }, + optionalParams: {}, // no optional parameters + + constructor: function(chart, kwArgs){ + // summary: + // Create the faux Grid plot. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__GridCtorArgs? + // An optional keyword arguments object to help define the parameters of the underlying grid. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + this.dirty = true; + this.animate = this.opt.animate; + this.zoom = null, + this.zoomQueue = []; // zooming action task queue + this.lastWindow = {vscale: 1, hscale: 1, xoffset: 0, yoffset: 0}; + if(this.opt.enableCache){ + this._lineFreePool = []; + this._lineUsePool = []; + } + }, + clear: function(){ + // summary: + // Clear out any parameters set on this plot. + // returns: dojox.charting.plot2d.Grid + // The reference to this plot for functional chaining. + this._hAxis = null; + this._vAxis = null; + this.dirty = true; + return this; // dojox.charting.plot2d.Grid + }, + setAxis: function(axis){ + // summary: + // Set an axis for this plot. + // returns: dojox.charting.plot2d.Grid + // The reference to this plot for functional chaining. + if(axis){ + this[axis.vertical ? "_vAxis" : "_hAxis"] = axis; + } + return this; // dojox.charting.plot2d.Grid + }, + addSeries: function(run){ + // summary: + // Ignored but included as a dummy method. + // returns: dojox.charting.plot2d.Grid + // The reference to this plot for functional chaining. + return this; // dojox.charting.plot2d.Grid + }, + getSeriesStats: function(){ + // summary: + // Returns default stats (irrelevant for this type of plot). + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + return lang.delegate(dc.defaultStats); + }, + initializeScalers: function(){ + // summary: + // Does nothing (irrelevant for this type of plot). + return this; + }, + isDirty: function(){ + // summary: + // Return whether or not this plot needs to be redrawn. + // returns: Boolean + // If this plot needs to be rendered, this will return true. + return this.dirty || this._hAxis && this._hAxis.dirty || this._vAxis && this._vAxis.dirty; // Boolean + }, + performZoom: function(dim, offsets){ + // summary: + // Create/alter any zooming windows on this plot. + // dim: Object + // An object of the form { width, height }. + // offsets: Object + // An object of the form { l, r, t, b }. + // returns: dojox.charting.plot2d.Grid + // A reference to this plot for functional chaining. + + // get current zooming various + var vs = this._vAxis.scale || 1, + hs = this._hAxis.scale || 1, + vOffset = dim.height - offsets.b, + hBounds = this._hAxis.getScaler().bounds, + xOffset = (hBounds.from - hBounds.lower) * hBounds.scale, + vBounds = this._vAxis.getScaler().bounds, + yOffset = (vBounds.from - vBounds.lower) * vBounds.scale, + // get incremental zooming various + rVScale = vs / this.lastWindow.vscale, + rHScale = hs / this.lastWindow.hscale, + rXOffset = (this.lastWindow.xoffset - xOffset)/ + ((this.lastWindow.hscale == 1)? hs : this.lastWindow.hscale), + rYOffset = (yOffset - this.lastWindow.yoffset)/ + ((this.lastWindow.vscale == 1)? vs : this.lastWindow.vscale), + + shape = this.group, + anim = fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform:[ + {name:"translate", start:[0, 0], end: [offsets.l * (1 - rHScale), vOffset * (1 - rVScale)]}, + {name:"scale", start:[1, 1], end: [rHScale, rVScale]}, + {name:"original"}, + {name:"translate", start: [0, 0], end: [rXOffset, rYOffset]} + ]}, this.zoom)); + + lang.mixin(this.lastWindow, {vscale: vs, hscale: hs, xoffset: xOffset, yoffset: yOffset}); + //add anim to zooming action queue, + //in order to avoid several zooming action happened at the same time + this.zoomQueue.push(anim); + //perform each anim one by one in zoomQueue + hub.connect(anim, "onEnd", this, function(){ + this.zoom = null; + this.zoomQueue.shift(); + if(this.zoomQueue.length > 0){ + this.zoomQueue[0].play(); + } + }); + if(this.zoomQueue.length == 1){ + this.zoomQueue[0].play(); + } + return this; // dojox.charting.plot2d.Grid + }, + getRequiredColors: function(){ + // summary: + // Ignored but included as a dummy method. + // returns: Number + // Returns 0, since there are no series associated with this plot type. + return 0; // Number + }, + cleanGroup: function(){ + this.inherited(arguments); + if(this.opt.enableCache){ + this._lineFreePool = this._lineFreePool.concat(this._lineUsePool); + this._lineUsePool = []; + } + }, + createLine: function(creator, params){ + var line; + if(this.opt.enableCache && this._lineFreePool.length > 0){ + line = this._lineFreePool.pop(); + line.setShape(params); + // was cleared, add it back + creator.add(line); + }else{ + line = creator.createLine(params); + } + if(this.opt.enableCache){ + this._lineUsePool.push(line); + } + return line; + }, + render: function(dim, offsets){ + // summary: + // Render the plot on the chart. + // dim: Object + // An object of the form { width, height }. + // offsets: Object + // An object of the form { l, r, t, b }. + // returns: dojox.charting.plot2d.Grid + // A reference to this plot for functional chaining. + if(this.zoom){ + return this.performZoom(dim, offsets); + } + this.dirty = this.isDirty(); + if(!this.dirty){ return this; } + this.cleanGroup(); + var s = this.group, ta = this.chart.theme.axis; + // draw horizontal stripes and lines + try{ + var vScaler = this._vAxis.getScaler(), + vt = vScaler.scaler.getTransformerFromModel(vScaler), + ticks = this._vAxis.getTicks(); + if(ticks != null){ + if(this.opt.hMinorLines){ + arr.forEach(ticks.minor, function(tick){ + var y = dim.height - offsets.b - vt(tick.value); + var hMinorLine = this.createLine(s, { + x1: offsets.l, + y1: y, + x2: dim.width - offsets.r, + y2: y + }).setStroke(ta.minorTick); + if(this.animate){ + this._animateGrid(hMinorLine, "h", offsets.l, offsets.r + offsets.l - dim.width); + } + }, this); + } + if(this.opt.hMajorLines){ + arr.forEach(ticks.major, function(tick){ + var y = dim.height - offsets.b - vt(tick.value); + var hMajorLine = this.createLine(s, { + x1: offsets.l, + y1: y, + x2: dim.width - offsets.r, + y2: y + }).setStroke(ta.majorTick); + if(this.animate){ + this._animateGrid(hMajorLine, "h", offsets.l, offsets.r + offsets.l - dim.width); + } + }, this); + } + } + }catch(e){ + // squelch + } + // draw vertical stripes and lines + try{ + var hScaler = this._hAxis.getScaler(), + ht = hScaler.scaler.getTransformerFromModel(hScaler), + ticks = this._hAxis.getTicks(); + if(this != null){ + if(ticks && this.opt.vMinorLines){ + arr.forEach(ticks.minor, function(tick){ + var x = offsets.l + ht(tick.value); + var vMinorLine = this.createLine(s, { + x1: x, + y1: offsets.t, + x2: x, + y2: dim.height - offsets.b + }).setStroke(ta.minorTick); + if(this.animate){ + this._animateGrid(vMinorLine, "v", dim.height - offsets.b, dim.height - offsets.b - offsets.t); + } + }, this); + } + if(ticks && this.opt.vMajorLines){ + arr.forEach(ticks.major, function(tick){ + var x = offsets.l + ht(tick.value); + var vMajorLine = this.createLine(s, { + x1: x, + y1: offsets.t, + x2: x, + y2: dim.height - offsets.b + }).setStroke(ta.majorTick); + if(this.animate){ + this._animateGrid(vMajorLine, "v", dim.height - offsets.b, dim.height - offsets.b - offsets.t); + } + }, this); + } + } + }catch(e){ + // squelch + } + this.dirty = false; + return this; // dojox.charting.plot2d.Grid + }, + _animateGrid: function(shape, type, offset, size){ + var transStart = type == "h" ? [offset, 0] : [0, offset]; + var scaleStart = type == "h" ? [1/size, 1] : [1, 1/size]; + fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform: [ + {name: "translate", start: transStart, end: [0, 0]}, + {name: "scale", start: scaleStart, end: [1, 1]}, + {name: "original"} + ] + }, this.animate)).play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Lines.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Lines.js new file mode 100644 index 0000000..38f55a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Lines.js @@ -0,0 +1,14 @@ +define(["dojo/_base/declare", "./Default"], function(declare, Default){ +/*===== +var Default = dojox.charting.plot2d.Default; +=====*/ + return declare("dojox.charting.plot2d.Lines", Default, { + // summary: + // A convenience constructor to create a typical line chart. + constructor: function(){ + // summary: + // Preset our default plot to be line-based. + this.opt.lines = true; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Markers.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Markers.js new file mode 100644 index 0000000..1757e02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Markers.js @@ -0,0 +1,14 @@ +define(["dojo/_base/declare", "./Default"], function(declare, Default){ +/*===== +var Default = dojox.charting.plot2d.Default +=====*/ + return declare("dojox.charting.plot2d.Markers", Default, { + // summary: + // A convenience plot to draw a line chart with markers. + constructor: function(){ + // summary: + // Set up the plot for lines and markers. + this.opt.markers = true; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/MarkersOnly.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/MarkersOnly.js new file mode 100644 index 0000000..06c6052 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/MarkersOnly.js @@ -0,0 +1,15 @@ +define(["dojo/_base/declare", "./Default"], function(declare, Default){ +/*===== +var Default = dojox.charting.plot2d.Default; +=====*/ + return declare("dojox.charting.plot2d.MarkersOnly", Default, { + // summary: + // A convenience object to draw only markers (like a scatter but not quite). + constructor: function(){ + // summary: + // Set up our default plot to only have markers and no lines. + this.opt.lines = false; + this.opt.markers = true; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/OHLC.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/OHLC.js new file mode 100644 index 0000000..6cf7936 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/OHLC.js @@ -0,0 +1,213 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "./Base", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/utils", "dojox/gfx/fx"], + function(lang, arr, declare, Base, dc, df, dfr, du, fx){ +/*===== +var Base = dojox.charting.plot2d.Base; +=====*/ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + // Candlesticks are based on the Bars plot type; we expect the following passed + // as values in a series: + // { x?, open, close, high, low } + // if x is not provided, the array index is used. + // failing to provide the OHLC values will throw an error. + return declare("dojox.charting.plot2d.OHLC", Base, { + // summary: + // A plot that represents typical open/high/low/close (financial reporting, primarily). + // Unlike most charts, the Candlestick expects data points to be represented by + // an object of the form { x?, open, close, high, low, mid? }, where both + // x and mid are optional parameters. If x is not provided, the index of the + // data array is used. + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + gap: 2, // gap between columns in pixels + animate: null // animate chart to place + }, + optionalParams: { + minBarSize: 1, // minimal bar size in pixels + maxBarSize: 1, // maximal bar size in pixels + // theme component + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + font: "", + fontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // The constructor for a candlestick chart. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__BarCtorArgs? + // An optional keyword arguments object to help define the plot. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + this.animate = this.opt.animate; + }, + + collectStats: function(series){ + // summary: + // Collect all statistics for drawing this chart. Since the common + // functionality only assumes x and y, OHLC must create it's own + // stats (since data has no y value, but open/close/high/low instead). + // series: dojox.charting.Series[] + // The data series array to be drawn on this plot. + // returns: Object + // Returns an object in the form of { hmin, hmax, vmin, vmax }. + + // we have to roll our own, since we need to use all four passed + // values to figure out our stats, and common only assumes x and y. + var stats = lang.delegate(dc.defaultStats); + for(var i=0; i= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + var theme = t.next("candlestick", [this.opt, run]), s = run.group, + eventSeries = new Array(run.data.length); + for(var j = 0; j < run.data.length; ++j){ + var v = run.data[j]; + if(v !== null){ + var finalTheme = t.addMixin(theme, "candlestick", v, true); + + // calculate the points we need for OHLC + var x = ht(v.x || (j+0.5)) + offsets.l + gap, + y = dim.height - offsets.b, + open = vt(v.open), + close = vt(v.close), + high = vt(v.high), + low = vt(v.low); + if(low > high){ + var tmp = high; + high = low; + low = tmp; + } + + if(width >= 1){ + var hl = {x1: width/2, x2: width/2, y1: y - high, y2: y - low}, + op = {x1: 0, x2: ((width/2) + ((finalTheme.series.stroke.width||1)/2)), y1: y-open, y2: y-open}, + cl = {x1: ((width/2) - ((finalTheme.series.stroke.width||1)/2)), x2: width, y1: y-close, y2: y-close}; + var shape = s.createGroup(); + shape.setTransform({dx: x, dy: 0}); + var inner = shape.createGroup(); + inner.createLine(hl).setStroke(finalTheme.series.stroke); + inner.createLine(op).setStroke(finalTheme.series.stroke); + inner.createLine(cl).setStroke(finalTheme.series.stroke); + + // TODO: double check this. + run.dyn.stroke = finalTheme.series.stroke; + if(events){ + var o = { + element: "candlestick", + index: j, + run: run, + shape: inner, + x: x, + y: y-Math.max(open, close), + cx: width/2, + cy: (y-Math.max(open, close)) + (Math.max(open > close ? open-close : close-open, 1)/2), + width: width, + height: Math.max(open > close ? open-close : close-open, 1), + data: v + }; + this._connectEvents(o); + eventSeries[j] = o; + } + } + if(this.animate){ + this._animateOHLC(shape, y - low, high - low); + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.OHLC + }, + _animateOHLC: function(shape, voffset, vsize){ + fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform: [ + {name: "translate", start: [0, voffset - (voffset/vsize)], end: [0, 0]}, + {name: "scale", start: [1, 1/vsize], end: [1, 1]}, + {name: "original"} + ] + }, this.animate)).play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Pie.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Pie.js new file mode 100644 index 0000000..5608c95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Pie.js @@ -0,0 +1,490 @@ +define(["dojo/_base/lang", "dojo/_base/array" ,"dojo/_base/declare", + "../Element", "./_PlotEvents", "./common", "../axis2d/common", + "dojox/gfx", "dojox/gfx/matrix", "dojox/lang/functional", "dojox/lang/utils"], + function(lang, arr, declare, Element, PlotEvents, dc, da, g, m, df, du){ + + /*===== + var Element = dojox.charting.Element; + var PlotEvents = dojox.charting.plot2d._PlotEvents; + dojo.declare("dojox.charting.plot2d.__PieCtorArgs", dojox.charting.plot2d.__DefaultCtorArgs, { + // summary: + // Specialized keyword arguments object for use in defining parameters on a Pie chart. + + // labels: Boolean? + // Whether or not to draw labels for each pie slice. Default is true. + labels: true, + + // ticks: Boolean? + // Whether or not to draw ticks to labels within each slice. Default is false. + ticks: false, + + // fixed: Boolean? + // TODO + fixed: true, + + // precision: Number? + // The precision at which to sum/add data values. Default is 1. + precision: 1, + + // labelOffset: Number? + // The amount in pixels by which to offset labels. Default is 20. + labelOffset: 20, + + // labelStyle: String? + // Options as to where to draw labels. Values include "default", and "columns". Default is "default". + labelStyle: "default", // default/columns + + // htmlLabels: Boolean? + // Whether or not to use HTML to render slice labels. Default is true. + htmlLabels: true, + + // radGrad: String? + // The type of radial gradient to use in rendering. Default is "native". + radGrad: "native", + + // fanSize: Number? + // The amount for a radial gradient. Default is 5. + fanSize: 5, + + // startAngle: Number? + // Where to being rendering gradients in slices, in degrees. Default is 0. + startAngle: 0, + + // radius: Number? + // The size of the radial gradient. Default is 0. + radius: 0 + }); + =====*/ + + var FUDGE_FACTOR = 0.2; // use to overlap fans + + return declare("dojox.charting.plot2d.Pie", [Element, PlotEvents], { + // summary: + // The plot that represents a typical pie chart. + defaultParams: { + labels: true, + ticks: false, + fixed: true, + precision: 1, + labelOffset: 20, + labelStyle: "default", // default/columns + htmlLabels: true, // use HTML to draw labels + radGrad: "native", // or "linear", or "fan" + fanSize: 5, // maximum fan size in degrees + startAngle: 0 // start angle for slices in degrees + }, + optionalParams: { + radius: 0, + // theme components + stroke: {}, + outline: {}, + shadow: {}, + fill: {}, + font: "", + fontColor: "", + labelWiring: {} + }, + + constructor: function(chart, kwArgs){ + // summary: + // Create a pie plot. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.run = null; + this.dyn = []; + }, + clear: function(){ + // summary: + // Clear out all of the information tied to this plot. + // returns: dojox.charting.plot2d.Pie + // A reference to this plot for functional chaining. + this.dirty = true; + this.dyn = []; + this.run = null; + return this; // dojox.charting.plot2d.Pie + }, + setAxis: function(axis){ + // summary: + // Dummy method, since axes are irrelevant with a Pie chart. + // returns: dojox.charting.plot2d.Pie + // The reference to this plot for functional chaining. + return this; // dojox.charting.plot2d.Pie + }, + addSeries: function(run){ + // summary: + // Add a series of data to this plot. + // returns: dojox.charting.plot2d.Pie + // The reference to this plot for functional chaining. + this.run = run; + return this; // dojox.charting.plot2d.Pie + }, + getSeriesStats: function(){ + // summary: + // Returns default stats (irrelevant for this type of plot). + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + return lang.delegate(dc.defaultStats); + }, + initializeScalers: function(){ + // summary: + // Does nothing (irrelevant for this type of plot). + return this; + }, + getRequiredColors: function(){ + // summary: + // Return the number of colors needed to draw this plot. + return this.run ? this.run.data.length : 0; + }, + + render: function(dim, offsets){ + // summary: + // Render the plot on the chart. + // dim: Object + // An object of the form { width, height }. + // offsets: Object + // An object of the form { l, r, t, b }. + // returns: dojox.charting.plot2d.Pie + // A reference to this plot for functional chaining. + if(!this.dirty){ return this; } + this.resetEvents(); + this.dirty = false; + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group, t = this.chart.theme; + + if(!this.run || !this.run.data.length){ + return this; + } + + // calculate the geometry + var rx = (dim.width - offsets.l - offsets.r) / 2, + ry = (dim.height - offsets.t - offsets.b) / 2, + r = Math.min(rx, ry), + taFont = "font" in this.opt ? this.opt.font : t.axis.font, + size = taFont ? g.normalizedLength(g.splitFontString(taFont).size) : 0, + taFontColor = "fontColor" in this.opt ? this.opt.fontColor : t.axis.fontColor, + startAngle = m._degToRad(this.opt.startAngle), + start = startAngle, step, filteredRun, slices, labels, shift, labelR, + run = this.run.data, + events = this.events(); + if(typeof run[0] == "number"){ + filteredRun = df.map(run, "x ? Math.max(x, 0) : 0"); + if(df.every(filteredRun, "<= 0")){ + return this; + } + slices = df.map(filteredRun, "/this", df.foldl(filteredRun, "+", 0)); + if(this.opt.labels){ + labels = arr.map(slices, function(x){ + return x > 0 ? this._getLabel(x * 100) + "%" : ""; + }, this); + } + }else{ + filteredRun = df.map(run, "x ? Math.max(x.y, 0) : 0"); + if(df.every(filteredRun, "<= 0")){ + return this; + } + slices = df.map(filteredRun, "/this", df.foldl(filteredRun, "+", 0)); + if(this.opt.labels){ + labels = arr.map(slices, function(x, i){ + if(x <= 0){ return ""; } + var v = run[i]; + return "text" in v ? v.text : this._getLabel(x * 100) + "%"; + }, this); + } + } + var themes = df.map(run, function(v, i){ + if(v === null || typeof v == "number"){ + return t.next("slice", [this.opt, this.run], true); + } + return t.next("slice", [this.opt, this.run, v], true); + }, this); + if(this.opt.labels){ + shift = df.foldl1(df.map(labels, function(label, i){ + var font = themes[i].series.font; + return g._base._getTextBox(label, {font: font}).w; + }, this), "Math.max(a, b)") / 2; + if(this.opt.labelOffset < 0){ + r = Math.min(rx - 2 * shift, ry - size) + this.opt.labelOffset; + } + labelR = r - this.opt.labelOffset; + } + if("radius" in this.opt){ + r = this.opt.radius; + labelR = r - this.opt.labelOffset; + } + var circle = { + cx: offsets.l + rx, + cy: offsets.t + ry, + r: r + }; + + this.dyn = []; + // draw slices + var eventSeries = new Array(slices.length); + arr.some(slices, function(slice, i){ + if(slice < 0){ + // degenerated slice + return false; // continue + } + if(slice == 0){ + this.dyn.push({fill: null, stroke: null}); + return false; + } + var v = run[i], theme = themes[i], specialFill; + if(slice >= 1){ + // whole pie + specialFill = this._plotFill(theme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, + { + x: circle.cx - circle.r, y: circle.cy - circle.r, + width: 2 * circle.r, height: 2 * circle.r + }); + specialFill = this._pseudoRadialFill(specialFill, {x: circle.cx, y: circle.cy}, circle.r); + var shape = s.createCircle(circle).setFill(specialFill).setStroke(theme.series.stroke); + this.dyn.push({fill: specialFill, stroke: theme.series.stroke}); + + if(events){ + var o = { + element: "slice", + index: i, + run: this.run, + shape: shape, + x: i, + y: typeof v == "number" ? v : v.y, + cx: circle.cx, + cy: circle.cy, + cr: r + }; + this._connectEvents(o); + eventSeries[i] = o; + } + + return true; // stop iteration + } + // calculate the geometry of the slice + var end = start + slice * 2 * Math.PI; + if(i + 1 == slices.length){ + end = startAngle + 2 * Math.PI; + } + var step = end - start, + x1 = circle.cx + r * Math.cos(start), + y1 = circle.cy + r * Math.sin(start), + x2 = circle.cx + r * Math.cos(end), + y2 = circle.cy + r * Math.sin(end); + // draw the slice + var fanSize = m._degToRad(this.opt.fanSize); + if(theme.series.fill && theme.series.fill.type === "radial" && this.opt.radGrad === "fan" && step > fanSize){ + var group = s.createGroup(), nfans = Math.ceil(step / fanSize), delta = step / nfans; + specialFill = this._shapeFill(theme.series.fill, + {x: circle.cx - circle.r, y: circle.cy - circle.r, width: 2 * circle.r, height: 2 * circle.r}); + for(var j = 0; j < nfans; ++j){ + var fansx = j == 0 ? x1 : circle.cx + r * Math.cos(start + (j - FUDGE_FACTOR) * delta), + fansy = j == 0 ? y1 : circle.cy + r * Math.sin(start + (j - FUDGE_FACTOR) * delta), + fanex = j == nfans - 1 ? x2 : circle.cx + r * Math.cos(start + (j + 1 + FUDGE_FACTOR) * delta), + faney = j == nfans - 1 ? y2 : circle.cy + r * Math.sin(start + (j + 1 + FUDGE_FACTOR) * delta), + fan = group.createPath(). + moveTo(circle.cx, circle.cy). + lineTo(fansx, fansy). + arcTo(r, r, 0, delta > Math.PI, true, fanex, faney). + lineTo(circle.cx, circle.cy). + closePath(). + setFill(this._pseudoRadialFill(specialFill, {x: circle.cx, y: circle.cy}, r, start + (j + 0.5) * delta, start + (j + 0.5) * delta)); + } + group.createPath(). + moveTo(circle.cx, circle.cy). + lineTo(x1, y1). + arcTo(r, r, 0, step > Math.PI, true, x2, y2). + lineTo(circle.cx, circle.cy). + closePath(). + setStroke(theme.series.stroke); + shape = group; + }else{ + shape = s.createPath(). + moveTo(circle.cx, circle.cy). + lineTo(x1, y1). + arcTo(r, r, 0, step > Math.PI, true, x2, y2). + lineTo(circle.cx, circle.cy). + closePath(). + setStroke(theme.series.stroke); + var specialFill = theme.series.fill; + if(specialFill && specialFill.type === "radial"){ + specialFill = this._shapeFill(specialFill, {x: circle.cx - circle.r, y: circle.cy - circle.r, width: 2 * circle.r, height: 2 * circle.r}); + if(this.opt.radGrad === "linear"){ + specialFill = this._pseudoRadialFill(specialFill, {x: circle.cx, y: circle.cy}, r, start, end); + } + }else if(specialFill && specialFill.type === "linear"){ + specialFill = this._plotFill(specialFill, dim, offsets); + specialFill = this._shapeFill(specialFill, shape.getBoundingBox()); + } + shape.setFill(specialFill); + } + this.dyn.push({fill: specialFill, stroke: theme.series.stroke}); + + if(events){ + var o = { + element: "slice", + index: i, + run: this.run, + shape: shape, + x: i, + y: typeof v == "number" ? v : v.y, + cx: circle.cx, + cy: circle.cy, + cr: r + }; + this._connectEvents(o); + eventSeries[i] = o; + } + + start = end; + + return false; // continue + }, this); + // draw labels + if(this.opt.labels){ + if(this.opt.labelStyle == "default"){ + start = startAngle; + arr.some(slices, function(slice, i){ + if(slice <= 0){ + // degenerated slice + return false; // continue + } + var theme = themes[i]; + if(slice >= 1){ + // whole pie + var v = run[i], elem = da.createText[this.opt.htmlLabels && g.renderer != "vml" ? "html" : "gfx"]( + this.chart, s, circle.cx, circle.cy + size / 2, "middle", labels[i], + theme.series.font, theme.series.fontColor); + if(this.opt.htmlLabels){ + this.htmlElements.push(elem); + } + return true; // stop iteration + } + // calculate the geometry of the slice + var end = start + slice * 2 * Math.PI, v = run[i]; + if(i + 1 == slices.length){ + end = startAngle + 2 * Math.PI; + } + var labelAngle = (start + end) / 2, + x = circle.cx + labelR * Math.cos(labelAngle), + y = circle.cy + labelR * Math.sin(labelAngle) + size / 2; + // draw the label + var elem = da.createText[this.opt.htmlLabels && g.renderer != "vml" ? "html" : "gfx"] + (this.chart, s, x, y, "middle", labels[i], theme.series.font, theme.series.fontColor); + if(this.opt.htmlLabels){ + this.htmlElements.push(elem); + } + start = end; + return false; // continue + }, this); + }else if(this.opt.labelStyle == "columns"){ + start = startAngle; + //calculate label angles + var labeledSlices = []; + arr.forEach(slices, function(slice, i){ + var end = start + slice * 2 * Math.PI; + if(i + 1 == slices.length){ + end = startAngle + 2 * Math.PI; + } + var labelAngle = (start + end) / 2; + labeledSlices.push({ + angle: labelAngle, + left: Math.cos(labelAngle) < 0, + theme: themes[i], + index: i, + omit: end - start < 0.001 + }); + start = end; + }); + //calculate label radius to each slice + var labelHeight = g._base._getTextBox("a",{font:taFont}).h; + this._getProperLabelRadius(labeledSlices, labelHeight, circle.r * 1.1); + //draw label and wiring + arr.forEach(labeledSlices, function(slice, i){ + if (!slice.omit) { + var leftColumn = circle.cx - circle.r * 2, + rightColumn = circle.cx + circle.r * 2, + labelWidth = g._base._getTextBox(labels[i], {font: taFont}).w, + x = circle.cx + slice.labelR * Math.cos(slice.angle), + y = circle.cy + slice.labelR * Math.sin(slice.angle), + jointX = (slice.left) ? (leftColumn + labelWidth) : (rightColumn - labelWidth), + labelX = (slice.left) ? leftColumn : jointX; + var wiring = s.createPath().moveTo(circle.cx + circle.r * Math.cos(slice.angle), circle.cy + circle.r * Math.sin(slice.angle)) + if (Math.abs(slice.labelR * Math.cos(slice.angle)) < circle.r * 2 - labelWidth) { + wiring.lineTo(x, y); + } + wiring.lineTo(jointX, y).setStroke(slice.theme.series.labelWiring); + var elem = da.createText[this.opt.htmlLabels && g.renderer != "vml" ? "html" : "gfx"]( + this.chart, s, labelX, y, "left", labels[i], slice.theme.series.font, slice.theme.series.fontColor); + if (this.opt.htmlLabels) { + this.htmlElements.push(elem); + } + } + },this); + } + } + // post-process events to restore the original indexing + var esi = 0; + this._eventSeries[this.run.name] = df.map(run, function(v){ + return v <= 0 ? null : eventSeries[esi++]; + }); + return this; // dojox.charting.plot2d.Pie + }, + + _getProperLabelRadius: function(slices, labelHeight, minRidius){ + var leftCenterSlice = {},rightCenterSlice = {},leftMinSIN = 1, rightMinSIN = 1; + if (slices.length == 1) { + slices[0].labelR = minRidius; + return; + } + for(var i = 0;i tempSIN){ + leftMinSIN = tempSIN; + leftCenterSlice = slices[i]; + } + }else{ + if(rightMinSIN > tempSIN){ + rightMinSIN = tempSIN; + rightCenterSlice = slices[i]; + } + } + } + leftCenterSlice.labelR = rightCenterSlice.labelR = minRidius; + this._calculateLabelR(leftCenterSlice,slices,labelHeight); + this._calculateLabelR(rightCenterSlice,slices,labelHeight); + }, + _calculateLabelR: function(firstSlice,slices,labelHeight){ + var i = firstSlice.index,length = slices.length, + currentLabelR = firstSlice.labelR; + while(!(slices[i%length].left ^ slices[(i+1)%length].left)){ + if (!slices[(i + 1) % length].omit) { + var nextLabelR = (Math.sin(slices[i % length].angle) * currentLabelR + ((slices[i % length].left) ? (-labelHeight) : labelHeight)) / + Math.sin(slices[(i + 1) % length].angle); + currentLabelR = (nextLabelR < firstSlice.labelR) ? firstSlice.labelR : nextLabelR; + slices[(i + 1) % length].labelR = currentLabelR; + } + i++; + } + i = firstSlice.index; + var j = (i == 0)?length-1 : i - 1; + while(!(slices[i].left ^ slices[j].left)){ + if (!slices[j].omit) { + var nextLabelR = (Math.sin(slices[i].angle) * currentLabelR + ((slices[i].left) ? labelHeight : (-labelHeight))) / + Math.sin(slices[j].angle); + currentLabelR = (nextLabelR < firstSlice.labelR) ? firstSlice.labelR : nextLabelR; + slices[j].labelR = currentLabelR; + } + i--;j--; + i = (i < 0)?i+slices.length:i; + j = (j < 0)?j+slices.length:j; + } + }, + // utilities + _getLabel: function(number){ + return dc.getLabel(number, this.opt.fixed, this.opt.precision); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Scatter.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Scatter.js new file mode 100644 index 0000000..d5434b7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Scatter.js @@ -0,0 +1,188 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "./Base", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/utils", "dojox/gfx/fx", "dojox/gfx/gradutils"], + function(lang, arr, declare, Base, dc, df, dfr, du, fx, gradutils){ +/*===== +var Base = dojox.charting.plot2d.Base; +=====*/ + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + return declare("dojox.charting.plot2d.Scatter", Base, { + // summary: + // A plot object representing a typical scatter chart. + defaultParams: { + hAxis: "x", // use a horizontal axis named "x" + vAxis: "y", // use a vertical axis named "y" + shadows: null, // draw shadows + animate: null // animate chart to place + }, + optionalParams: { + // theme component + markerStroke: {}, + markerOutline: {}, + markerShadow: {}, + markerFill: {}, + markerFont: "", + markerFontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // Create the scatter plot. + // chart: dojox.charting.Chart + // The chart this plot belongs to. + // kwArgs: dojox.charting.plot2d.__DefaultCtorArgs? + // An optional keyword arguments object to help define this plot's parameters. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.hAxis = this.opt.hAxis; + this.vAxis = this.opt.vAxis; + this.animate = this.opt.animate; + }, + + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.Scatter + // A reference to this plot for functional chaining. + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, events = this.events(); + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + if(!run.data.length){ + run.dirty = false; + t.skip(); + continue; + } + + var theme = t.next("marker", [this.opt, run]), s = run.group, lpoly, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler); + if(typeof run.data[0] == "number"){ + lpoly = arr.map(run.data, function(v, i){ + return { + x: ht(i + 1) + offsets.l, + y: dim.height - offsets.b - vt(v) + }; + }, this); + }else{ + lpoly = arr.map(run.data, function(v, i){ + return { + x: ht(v.x) + offsets.l, + y: dim.height - offsets.b - vt(v.y) + }; + }, this); + } + + var shadowMarkers = new Array(lpoly.length), + frontMarkers = new Array(lpoly.length), + outlineMarkers = new Array(lpoly.length); + + arr.forEach(lpoly, function(c, i){ + var finalTheme = typeof run.data[i] == "number" ? + t.post(theme, "marker") : + t.addMixin(theme, "marker", run.data[i], true), + path = "M" + c.x + " " + c.y + " " + finalTheme.symbol; + if(finalTheme.marker.shadow){ + shadowMarkers[i] = s.createPath("M" + (c.x + finalTheme.marker.shadow.dx) + " " + + (c.y + finalTheme.marker.shadow.dy) + " " + finalTheme.symbol). + setStroke(finalTheme.marker.shadow).setFill(finalTheme.marker.shadow.color); + if(this.animate){ + this._animateScatter(shadowMarkers[i], dim.height - offsets.b); + } + } + if(finalTheme.marker.outline){ + var outline = dc.makeStroke(finalTheme.marker.outline); + outline.width = 2 * outline.width + finalTheme.marker.stroke.width; + outlineMarkers[i] = s.createPath(path).setStroke(outline); + if(this.animate){ + this._animateScatter(outlineMarkers[i], dim.height - offsets.b); + } + } + var stroke = dc.makeStroke(finalTheme.marker.stroke), + fill = this._plotFill(finalTheme.marker.fill, dim, offsets); + if(fill && (fill.type === "linear" || fill.type == "radial")){ + var color = gradutils.getColor(fill, {x: c.x, y: c.y}); + if(stroke){ + stroke.color = color; + } + frontMarkers[i] = s.createPath(path).setStroke(stroke).setFill(color); + }else{ + frontMarkers[i] = s.createPath(path).setStroke(stroke).setFill(fill); + } + if(this.animate){ + this._animateScatter(frontMarkers[i], dim.height - offsets.b); + } + }, this); + if(frontMarkers.length){ + run.dyn.stroke = frontMarkers[frontMarkers.length - 1].getStroke(); + run.dyn.fill = frontMarkers[frontMarkers.length - 1].getFill(); + } + + if(events){ + var eventSeries = new Array(frontMarkers.length); + arr.forEach(frontMarkers, function(s, i){ + var o = { + element: "marker", + index: i, + run: run, + shape: s, + outline: outlineMarkers && outlineMarkers[i] || null, + shadow: shadowMarkers && shadowMarkers[i] || null, + cx: lpoly[i].x, + cy: lpoly[i].y + }; + if(typeof run.data[0] == "number"){ + o.x = i + 1; + o.y = run.data[i]; + }else{ + o.x = run.data[i].x; + o.y = run.data[i].y; + } + this._connectEvents(o); + eventSeries[i] = o; + }, this); + this._eventSeries[run.name] = eventSeries; + }else{ + delete this._eventSeries[run.name]; + } + run.dirty = false; + } + this.dirty = false; + return this; // dojox.charting.plot2d.Scatter + }, + _animateScatter: function(shape, offset){ + fx.animateTransform(lang.delegate({ + shape: shape, + duration: 1200, + transform: [ + {name: "translate", start: [0, offset], end: [0, 0]}, + {name: "scale", start: [0, 0], end: [1, 1]}, + {name: "original"} + ] + }, this.animate)).play(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Spider.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Spider.js new file mode 100644 index 0000000..9178e94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Spider.js @@ -0,0 +1,631 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/connect", "dojo/_base/html", "dojo/_base/array", + "dojo/dom-geometry", "dojo/_base/fx", "dojo/fx", "dojo/_base/sniff", + "../Element", "./_PlotEvents", "dojo/_base/Color", "dojox/color/_base", "./common", "../axis2d/common", + "../scaler/primitive", "dojox/gfx", "dojox/gfx/matrix", "dojox/gfx/fx", "dojox/lang/functional", + "dojox/lang/utils", "dojo/fx/easing"], + function(lang, declare, hub, html, arr, domGeom, baseFx, coreFx, has, + Element, PlotEvents, Color, dxcolor, dc, da, primitive, + g, m, gfxfx, df, du, easing){ +/*===== +var Element = dojox.charting.Element; +var PlotEvents = dojox.charting.plot2d._PlotEvents; +=====*/ + var FUDGE_FACTOR = 0.2; // use to overlap fans + + var Spider = declare("dojox.charting.plot2d.Spider", [Element, PlotEvents], { + // summary: + // The plot that represents a typical Spider chart. + defaultParams: { + labels: true, + ticks: false, + fixed: true, + precision: 1, + labelOffset: -10, + labelStyle: "default", // default/rows/auto + htmlLabels: true, // use HTML to draw labels + startAngle: -90, // start angle for slices in degrees + divisions: 3, // radius tick count + axisColor: "", // spider axis color + axisWidth: 0, // spider axis stroke width + spiderColor: "", // spider web color + spiderWidth: 0, // spider web stroke width + seriesWidth: 0, // plot border with + seriesFillAlpha: 0.2, // plot fill alpha + spiderOrigin: 0.16, + markerSize: 3, // radius of plot vertex (px) + spiderType: "polygon", //"circle" + animationType: easing.backOut, + axisTickFont: "", + axisTickFontColor: "", + axisFont: "", + axisFontColor: "" + }, + optionalParams: { + radius: 0, + font: "", + fontColor: "" + }, + + constructor: function(chart, kwArgs){ + // summary: + // Create a Spider plot. + this.opt = lang.clone(this.defaultParams); + du.updateWithObject(this.opt, kwArgs); + du.updateWithPattern(this.opt, kwArgs, this.optionalParams); + this.series = []; + this.dyn = []; + this.datas = {}; + this.labelKey = []; + this.oldSeriePoints = {}; + this.animations = {}; + }, + clear: function(){ + // summary: + // Clear out all of the information tied to this plot. + // returns: dojox.charting.plot2d.Spider + // A reference to this plot for functional chaining. + this.dirty = true; + this.dyn = []; + this.series = []; + this.datas = {}; + this.labelKey = []; + this.oldSeriePoints = {}; + this.animations = {}; + return this; // dojox.charting.plot2d.Spider + }, + setAxis: function(axis){ + // summary: + // Dummy method, since axes are irrelevant with a Spider chart. + // returns: dojox.charting.plot2d.Spider + // The reference to this plot for functional chaining. + return this; // dojox.charting.plot2d.Spider + }, + addSeries: function(run){ + // summary: + // Add a data series to this plot. + // run: dojox.charting.Series + // The series to be added. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + var matched = false; + this.series.push(run); + for(var key in run.data){ + var val = run.data[key], + data = this.datas[key]; + if(data){ + data.vlist.push(val); + data.min = Math.min(data.min, val); + data.max = Math.max(data.max, val); + }else{ + this.datas[key] = {min: val, max: val, vlist: [val]}; + } + } + if (this.labelKey.length <= 0) { + for (var key in run.data) { + this.labelKey.push(key); + } + } + return this; // dojox.charting.plot2d.Base + }, + getSeriesStats: function(){ + // summary: + // Calculate the min/max on all attached series in both directions. + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + return dc.collectSimpleStats(this.series); + }, + calculateAxes: function(dim){ + // summary: + // Stub function for running the axis calculations (depricated). + // dim: Object + // An object of the form { width, height } + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + this.initializeScalers(dim, this.getSeriesStats()); + return this; // dojox.charting.plot2d.Base + }, + getRequiredColors: function(){ + // summary: + // Get how many data series we have, so we know how many colors to use. + // returns: Number + // The number of colors needed. + return this.series.length; // Number + }, + initializeScalers: function(dim, stats){ + // summary: + // Initializes scalers using attached axes. + // dim: Object: + // Size of a plot area in pixels as {width, height}. + // stats: Object: + // Min/max of data in both directions as {hmin, hmax, vmin, vmax}. + // returns: dojox.charting.plot2d.Base + // A reference to this plot for functional chaining. + if(this._hAxis){ + if(!this._hAxis.initialized()){ + this._hAxis.calculate(stats.hmin, stats.hmax, dim.width); + } + this._hScaler = this._hAxis.getScaler(); + }else{ + this._hScaler = primitive.buildScaler(stats.hmin, stats.hmax, dim.width); + } + if(this._vAxis){ + if(!this._vAxis.initialized()){ + this._vAxis.calculate(stats.vmin, stats.vmax, dim.height); + } + this._vScaler = this._vAxis.getScaler(); + }else{ + this._vScaler = primitive.buildScaler(stats.vmin, stats.vmax, dim.height); + } + return this; // dojox.charting.plot2d.Base + }, + render: function(dim, offsets){ + // summary: + // Render the plot on the chart. + // dim: Object + // An object of the form { width, height }. + // offsets: Object + // An object of the form { l, r, t, b }. + // returns: dojox.charting.plot2d.Spider + // A reference to this plot for functional chaining. + if(!this.dirty){ return this; } + this.dirty = false; + this.cleanGroup(); + var s = this.group, t = this.chart.theme; + this.resetEvents(); + + if(!this.series || !this.series.length){ + return this; + } + + // calculate the geometry + var o = this.opt, ta = t.axis, + rx = (dim.width - offsets.l - offsets.r) / 2, + ry = (dim.height - offsets.t - offsets.b) / 2, + r = Math.min(rx, ry), + axisTickFont = o.font || (ta.majorTick && ta.majorTick.font) || (ta.tick && ta.tick.font) || "normal normal normal 7pt Tahoma", + axisFont = o.axisFont || (ta.tick && ta.tick.titleFont) || "normal normal normal 11pt Tahoma", + axisTickFontColor = o.axisTickFontColor || (ta.majorTick && ta.majorTick.fontColor) || (ta.tick && ta.tick.fontColor) || "silver", + axisFontColor = o.axisFontColor || (ta.tick && ta.tick.titleFontColor) || "black", + axisColor = o.axisColor || (ta.tick && ta.tick.axisColor) || "silver", + spiderColor = o.spiderColor || (ta.tick && ta.tick.spiderColor) || "silver", + axisWidth = o.axisWidth || (ta.stroke && ta.stroke.width) || 2, + spiderWidth = o.spiderWidth || (ta.stroke && ta.stroke.width) || 2, + seriesWidth = o.seriesWidth || (ta.stroke && ta.stroke.width) || 2, + asize = g.normalizedLength(g.splitFontString(axisFont).size), + startAngle = m._degToRad(o.startAngle), + start = startAngle, step, filteredRun, slices, labels, shift, labelR, + outerPoints, innerPoints, divisionPoints, divisionRadius, labelPoints, + ro = o.spiderOrigin, dv = o.divisions >= 3 ? o.divisions : 3, ms = o.markerSize, + spt = o.spiderType, at = o.animationType, lboffset = o.labelOffset < -10 ? o.labelOffset : -10, + axisExtra = 0.2; + + if(o.labels){ + labels = arr.map(this.series, function(s){ + return s.name; + }, this); + shift = df.foldl1(df.map(labels, function(label, i){ + var font = t.series.font; + return g._base._getTextBox(label, { + font: font + }).w; + }, this), "Math.max(a, b)") / 2; + r = Math.min(rx - 2 * shift, ry - asize) + lboffset; + labelR = r - lboffset; + } + if ("radius" in o) { + r = o.radius; + labelR = r - lboffset; + } + r /= (1+axisExtra); + var circle = { + cx: offsets.l + rx, + cy: offsets.t + ry, + r: r + }; + + for (var i = this.series.length - 1; i >= 0; i--) { + var serieEntry = this.series[i]; + if (!this.dirty && !serieEntry.dirty) { + t.skip(); + continue; + } + serieEntry.cleanGroup(); + var run = serieEntry.data; + if (run !== null) { + var len = this._getObjectLength(run); + //construct connect points + if (!outerPoints || outerPoints.length <= 0) { + outerPoints = [], innerPoints = [], labelPoints = []; + this._buildPoints(outerPoints, len, circle, r, start, true); + this._buildPoints(innerPoints, len, circle, r*ro, start, true); + this._buildPoints(labelPoints, len, circle, labelR, start); + if(dv > 2){ + divisionPoints = [], divisionRadius = []; + for (var j = 0; j < dv - 2; j++) { + divisionPoints[j] = []; + this._buildPoints(divisionPoints[j], len, circle, r*(ro + (1-ro)*(j+1)/(dv-1)), start, true); + divisionRadius[j] = r*(ro + (1-ro)*(j+1)/(dv-1)); + } + } + } + } + } + + //draw Spider + //axis + var axisGroup = s.createGroup(), axisStroke = {color: axisColor, width: axisWidth}, + spiderStroke = {color: spiderColor, width: spiderWidth}; + for (var j = outerPoints.length - 1; j >= 0; --j) { + var point = outerPoints[j], + st = { + x: point.x + (point.x - circle.cx) * axisExtra, + y: point.y + (point.y - circle.cy) * axisExtra + }, + nd = { + x: point.x + (point.x - circle.cx) * axisExtra / 2, + y: point.y + (point.y - circle.cy) * axisExtra / 2 + }; + axisGroup.createLine({ + x1: circle.cx, + y1: circle.cy, + x2: st.x, + y2: st.y + }).setStroke(axisStroke); + //arrow + this._drawArrow(axisGroup, st, nd, axisStroke); + } + + // draw the label + var labelGroup = s.createGroup(); + for (var j = labelPoints.length - 1; j >= 0; --j) { + var point = labelPoints[j], + fontWidth = g._base._getTextBox(this.labelKey[j], {font: axisFont}).w || 0, + render = this.opt.htmlLabels && g.renderer != "vml" ? "html" : "gfx", + elem = da.createText[render](this.chart, labelGroup, (!domGeom.isBodyLtr() && render == "html") ? (point.x + fontWidth - dim.width) : point.x, point.y, + "middle", this.labelKey[j], axisFont, axisFontColor); + if (this.opt.htmlLabels) { + this.htmlElements.push(elem); + } + } + + //spider web: polygon or circle + var spiderGroup = s.createGroup(); + if(spt == "polygon"){ + spiderGroup.createPolyline(outerPoints).setStroke(spiderStroke); + spiderGroup.createPolyline(innerPoints).setStroke(spiderStroke); + if (divisionPoints.length > 0) { + for (var j = divisionPoints.length - 1; j >= 0; --j) { + spiderGroup.createPolyline(divisionPoints[j]).setStroke(spiderStroke); + } + } + }else{//circle + var ccount = this._getObjectLength(this.datas); + spiderGroup.createCircle({cx: circle.cx, cy: circle.cy, r: r}).setStroke(spiderStroke); + spiderGroup.createCircle({cx: circle.cx, cy: circle.cy, r: r*ro}).setStroke(spiderStroke); + if (divisionRadius.length > 0) { + for (var j = divisionRadius.length - 1; j >= 0; --j) { + spiderGroup.createCircle({cx: circle.cx, cy: circle.cy, r: divisionRadius[j]}).setStroke(spiderStroke); + } + } + } + //text + var textGroup = s.createGroup(), len = this._getObjectLength(this.datas), k = 0; + for(var key in this.datas){ + var data = this.datas[key], min = data.min, max = data.max, distance = max - min, + end = start + 2 * Math.PI * k / len; + for (var i = 0; i < dv; i++) { + var text = min + distance*i/(dv-1), point = this._getCoordinate(circle, r*(ro + (1-ro)*i/(dv-1)), end); + text = this._getLabel(text); + var fontWidth = g._base._getTextBox(text, {font: axisTickFont}).w || 0, + render = this.opt.htmlLabels && g.renderer != "vml" ? "html" : "gfx"; + if (this.opt.htmlLabels) { + this.htmlElements.push(da.createText[render] + (this.chart, textGroup, (!domGeom.isBodyLtr() && render == "html") ? (point.x + fontWidth - dim.width) : point.x, point.y, + "start", text, axisTickFont, axisTickFontColor)); + } + } + k++; + } + + //draw series (animation) + this.chart.seriesShapes = {}; + var animationConnections = []; + for (var i = this.series.length - 1; i >= 0; i--) { + var serieEntry = this.series[i], run = serieEntry.data; + if (run !== null) { + //series polygon + var seriePoints = [], k = 0, tipData = []; + for(var key in run){ + var data = this.datas[key], min = data.min, max = data.max, distance = max - min, + entry = run[key], end = start + 2 * Math.PI * k / len, + point = this._getCoordinate(circle, r*(ro + (1-ro)*(entry-min)/distance), end); + seriePoints.push(point); + tipData.push({sname: serieEntry.name, key: key, data: entry}); + k++; + } + seriePoints[seriePoints.length] = seriePoints[0]; + tipData[tipData.length] = tipData[0]; + var polygonBoundRect = this._getBoundary(seriePoints), + theme = t.next("spider", [o, serieEntry]), ts = serieEntry.group, + f = g.normalizeColor(theme.series.fill), sk = {color: theme.series.fill, width: seriesWidth}; + f.a = o.seriesFillAlpha; + serieEntry.dyn = {fill: f, stroke: sk}; + + var osps = this.oldSeriePoints[serieEntry.name]; + var cs = this._createSeriesEntry(ts, (osps || innerPoints), seriePoints, f, sk, r, ro, ms, at); + this.chart.seriesShapes[serieEntry.name] = cs; + this.oldSeriePoints[serieEntry.name] = seriePoints; + + var po = { + element: "spider_poly", + index: i, + id: "spider_poly_"+serieEntry.name, + run: serieEntry, + plot: this, + shape: cs.poly, + parent: ts, + brect: polygonBoundRect, + cx: circle.cx, + cy: circle.cy, + cr: r, + f: f, + s: s + }; + this._connectEvents(po); + + var so = { + element: "spider_plot", + index: i, + id: "spider_plot_"+serieEntry.name, + run: serieEntry, + plot: this, + shape: serieEntry.group + }; + this._connectEvents(so); + + arr.forEach(cs.circles, function(c, i){ + var shape = c.getShape(), + co = { + element: "spider_circle", + index: i, + id: "spider_circle_"+serieEntry.name+i, + run: serieEntry, + plot: this, + shape: c, + parent: ts, + tdata: tipData[i], + cx: seriePoints[i].x, + cy: seriePoints[i].y, + f: f, + s: s + }; + this._connectEvents(co); + }, this); + } + } + return this; // dojox.charting.plot2d.Spider + }, + _createSeriesEntry: function(ts, osps, sps, f, sk, r, ro, ms, at){ + //polygon + var spoly = ts.createPolyline(osps).setFill(f).setStroke(sk), scircle = []; + for (var j = 0; j < osps.length; j++) { + var point = osps[j], cr = ms; + var circle = ts.createCircle({cx: point.x, cy: point.y, r: cr}).setFill(f).setStroke(sk); + scircle.push(circle); + } + + var anims = arr.map(sps, function(np, j){ + // create animation + var sp = osps[j], + anim = new baseFx.Animation({ + duration: 1000, + easing: at, + curve: [sp.y, np.y] + }); + var spl = spoly, sc = scircle[j]; + hub.connect(anim, "onAnimate", function(y){ + //apply poly + var pshape = spl.getShape(); + pshape.points[j].y = y; + spl.setShape(pshape); + //apply circle + var cshape = sc.getShape(); + cshape.cy = y; + sc.setShape(cshape); + }); + return anim; + }); + + var anims1 = arr.map(sps, function(np, j){ + // create animation + var sp = osps[j], + anim = new baseFx.Animation({ + duration: 1000, + easing: at, + curve: [sp.x, np.x] + }); + var spl = spoly, sc = scircle[j]; + hub.connect(anim, "onAnimate", function(x){ + //apply poly + var pshape = spl.getShape(); + pshape.points[j].x = x; + spl.setShape(pshape); + //apply circle + var cshape = sc.getShape(); + cshape.cx = x; + sc.setShape(cshape); + }); + return anim; + }); + var masterAnimation = coreFx.combine(anims.concat(anims1)); //dojo.fx.chain(anims); + masterAnimation.play(); + return {group :ts, poly: spoly, circles: scircle}; + }, + plotEvent: function(o){ + // summary: + // Stub function for use by specific plots. + // o: Object + // An object intended to represent event parameters. + var runName = o.id ? o.id : "default", a; + if (runName in this.animations) { + a = this.animations[runName]; + a.anim && a.anim.stop(true); + } else { + a = this.animations[runName] = {}; + } + if(o.element == "spider_poly"){ + if(!a.color){ + var color = o.shape.getFill(); + if(!color || !(color instanceof Color)){ + return; + } + a.color = { + start: color, + end: transColor(color) + }; + } + var start = a.color.start, end = a.color.end; + if(o.type == "onmouseout"){ + // swap colors + var t = start; start = end; end = t; + } + a.anim = gfxfx.animateFill({ + shape: o.shape, + duration: 800, + easing: easing.backOut, + color: {start: start, end: end} + }); + a.anim.play(); + }else if(o.element == "spider_circle"){ + var init, scale, defaultScale = 1.5; + if(o.type == "onmouseover"){ + init = m.identity; + scale = defaultScale; + //show tooltip + var aroundRect = {type: "rect"}; + aroundRect.x = o.cx; + aroundRect.y = o.cy; + aroundRect.width = aroundRect.height = 1; + var lt = html.coords(this.chart.node, true); + aroundRect.x += lt.x; + aroundRect.y += lt.y; + aroundRect.x = Math.round(aroundRect.x); + aroundRect.y = Math.round(aroundRect.y); + aroundRect.width = Math.ceil(aroundRect.width); + aroundRect.height = Math.ceil(aroundRect.height); + this.aroundRect = aroundRect; + var position = ["after", "before"]; + dc.doIfLoaded("dijit/Tooltip", dojo.hitch(this, function(Tooltip){ + Tooltip.show(o.tdata.sname + "
                          " + o.tdata.key + "
                          " + o.tdata.data, this.aroundRect, position); + })); + }else{ + init = m.scaleAt(defaultScale, o.cx, o.cy); + scale = 1/defaultScale; + dc.doIfLoaded("dijit/Tooltip", dojo.hitch(this, function(Tooltip){ + this.aroundRect && Tooltip.hide(this.aroundRect); + })); + } + var cs = o.shape.getShape(), + init = m.scaleAt(defaultScale, cs.cx, cs.cy), + kwArgs = { + shape: o.shape, + duration: 200, + easing: easing.backOut, + transform: [ + {name: "scaleAt", start: [1, cs.cx, cs.cy], end: [scale, cs.cx, cs.cy]}, + init + ] + }; + a.anim = gfxfx.animateTransform(kwArgs); + a.anim.play(); + }else if(o.element == "spider_plot"){ + //dojo gfx function "moveToFront" not work in IE + if (o.type == "onmouseover" && !has("ie")) { + o.shape.moveToFront(); + } + } + }, + _getBoundary: function(points){ + var xmax = points[0].x, + xmin = points[0].x, + ymax = points[0].y, + ymin = points[0].y; + for(var i = 0; i < points.length; i++){ + var point = points[i]; + xmax = Math.max(point.x, xmax); + ymax = Math.max(point.y, ymax); + xmin = Math.min(point.x, xmin); + ymin = Math.min(point.y, ymin); + } + return { + x: xmin, + y: ymin, + width: xmax - xmin, + height: ymax - ymin + }; + }, + + _drawArrow: function(s, start, end, stroke){ + var len = Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2)), + sin = (end.y - start.y)/len, cos = (end.x - start.x)/len, + point2 = {x: end.x + (len/3)*(-sin), y: end.y + (len/3)*cos}, + point3 = {x: end.x + (len/3)*sin, y: end.y + (len/3)*(-cos)}; + s.createPolyline([start, point2, point3]).setFill(stroke.color).setStroke(stroke); + }, + + _buildPoints: function(points, count, circle, radius, angle, recursive){ + for (var i = 0; i < count; i++) { + var end = angle + 2 * Math.PI * i / count; + points.push(this._getCoordinate(circle, radius, end)); + } + if(recursive){ + points.push(this._getCoordinate(circle, radius, angle + 2 * Math.PI)); + } + }, + + _getCoordinate: function(circle, radius, angle){ + return { + x: circle.cx + radius * Math.cos(angle), + y: circle.cy + radius * Math.sin(angle) + } + }, + + _getObjectLength: function(obj){ + var count = 0; + if(lang.isObject(obj)){ + for(var key in obj){ + count++; + } + } + return count; + }, + + // utilities + _getLabel: function(number){ + return dc.getLabel(number, this.opt.fixed, this.opt.precision); + } + }); + + function transColor(color){ + var a = new dxcolor.Color(color), + x = a.toHsl(); + if(x.s == 0){ + x.l = x.l < 50 ? 100 : 0; + }else{ + x.s = 100; + if(x.l < 50){ + x.l = 75; + }else if(x.l > 75){ + x.l = 50; + }else{ + x.l = x.l - 50 > 75 - x.l ? + 50 : 75; + } + } + var color = dxcolor.fromHsl(x); + color.a = 0.7; + return color; + } + + return Spider; // dojox.plot2d.Spider +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Stacked.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Stacked.js new file mode 100644 index 0000000..921792a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/Stacked.js @@ -0,0 +1,196 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", "./Default", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/functional/sequence"], + function(lang, declare, arr, Default, dc, df, dfr, dfs){ +/*===== +var Default = dojox.charting.plot2d.Default; +=====*/ + var purgeGroup = dfr.lambda("item.purgeGroup()"); + + return declare("dojox.charting.plot2d.Stacked", Default, { + // summary: + // Like the default plot, Stacked sets up lines, areas and markers + // in a stacked fashion (values on the y axis added to each other) + // as opposed to a direct one. + getSeriesStats: function(){ + // summary: + // Calculate the min/max on all attached series in both directions. + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + var stats = dc.collectStackedStats(this.series); + this._maxRunLength = stats.hmax; + return stats; + }, + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.Stacked + // A reference to this plot for functional chaining. + if(this._maxRunLength <= 0){ + return this; + } + + // stack all values + var acc = df.repeat(this._maxRunLength, "-> 0", 0); + for(var i = 0; i < this.series.length; ++i){ + var run = this.series[i]; + for(var j = 0; j < run.data.length; ++j){ + var v = run.data[j]; + if(v !== null){ + if(isNaN(v)){ v = 0; } + acc[j] += v; + } + } + } + // draw runs in backwards + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + + var t = this.chart.theme, events = this.events(), + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler); + + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + var theme = t.next(this.opt.areas ? "area" : "line", [this.opt, run], true), + s = run.group, outline, + lpoly = arr.map(acc, function(v, i){ + return { + x: ht(i + 1) + offsets.l, + y: dim.height - offsets.b - vt(v) + }; + }, this); + + var lpath = this.opt.tension ? dc.curve(lpoly, this.opt.tension) : ""; + + if(this.opt.areas){ + var apoly = lang.clone(lpoly); + if(this.opt.tension){ + var p=dc.curve(apoly, this.opt.tension); + p += " L" + lpoly[lpoly.length - 1].x + "," + (dim.height - offsets.b) + + " L" + lpoly[0].x + "," + (dim.height - offsets.b) + + " L" + lpoly[0].x + "," + lpoly[0].y; + run.dyn.fill = s.createPath(p).setFill(theme.series.fill).getFill(); + } else { + apoly.push({x: lpoly[lpoly.length - 1].x, y: dim.height - offsets.b}); + apoly.push({x: lpoly[0].x, y: dim.height - offsets.b}); + apoly.push(lpoly[0]); + run.dyn.fill = s.createPolyline(apoly).setFill(theme.series.fill).getFill(); + } + } + if(this.opt.lines || this.opt.markers){ + if(theme.series.outline){ + outline = dc.makeStroke(theme.series.outline); + outline.width = 2 * outline.width + theme.series.stroke.width; + } + } + if(this.opt.markers){ + run.dyn.marker = theme.symbol; + } + var frontMarkers, outlineMarkers, shadowMarkers; + if(theme.series.shadow && theme.series.stroke){ + var shadow = theme.series.shadow, + spoly = arr.map(lpoly, function(c){ + return {x: c.x + shadow.dx, y: c.y + shadow.dy}; + }); + if(this.opt.lines){ + if(this.opt.tension){ + run.dyn.shadow = s.createPath(dc.curve(spoly, this.opt.tension)).setStroke(shadow).getStroke(); + } else { + run.dyn.shadow = s.createPolyline(spoly).setStroke(shadow).getStroke(); + } + } + if(this.opt.markers){ + shadow = theme.marker.shadow; + shadowMarkers = arr.map(spoly, function(c){ + return s.createPath("M" + c.x + " " + c.y + " " + theme.symbol). + setStroke(shadow).setFill(shadow.color); + }, this); + } + } + if(this.opt.lines){ + if(outline){ + if(this.opt.tension){ + run.dyn.outline = s.createPath(lpath).setStroke(outline).getStroke(); + } else { + run.dyn.outline = s.createPolyline(lpoly).setStroke(outline).getStroke(); + } + } + if(this.opt.tension){ + run.dyn.stroke = s.createPath(lpath).setStroke(theme.series.stroke).getStroke(); + } else { + run.dyn.stroke = s.createPolyline(lpoly).setStroke(theme.series.stroke).getStroke(); + } + } + if(this.opt.markers){ + frontMarkers = new Array(lpoly.length); + outlineMarkers = new Array(lpoly.length); + outline = null; + if(theme.marker.outline){ + outline = dc.makeStroke(theme.marker.outline); + outline.width = 2 * outline.width + (theme.marker.stroke ? theme.marker.stroke.width : 0); + } + arr.forEach(lpoly, function(c, i){ + var path = "M" + c.x + " " + c.y + " " + theme.symbol; + if(outline){ + outlineMarkers[i] = s.createPath(path).setStroke(outline); + } + frontMarkers[i] = s.createPath(path).setStroke(theme.marker.stroke).setFill(theme.marker.fill); + }, this); + if(events){ + var eventSeries = new Array(frontMarkers.length); + arr.forEach(frontMarkers, function(s, i){ + var o = { + element: "marker", + index: i, + run: run, + shape: s, + outline: outlineMarkers[i] || null, + shadow: shadowMarkers && shadowMarkers[i] || null, + cx: lpoly[i].x, + cy: lpoly[i].y, + x: i + 1, + y: run.data[i] + }; + this._connectEvents(o); + eventSeries[i] = o; + }, this); + this._eventSeries[run.name] = eventSeries; + }else{ + delete this._eventSeries[run.name]; + } + } + run.dirty = false; + // update the accumulator + for(var j = 0; j < run.data.length; ++j){ + var v = run.data[j]; + if(v !== null){ + if(isNaN(v)){ v = 0; } + acc[j] -= v; + } + } + } + this.dirty = false; + return this; // dojox.charting.plot2d.Stacked + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedAreas.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedAreas.js new file mode 100644 index 0000000..637ae49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedAreas.js @@ -0,0 +1,16 @@ +define(["dojo/_base/declare", "./Stacked"], function(declare, Stacked){ +/*===== +var Stacked = dojox.charting.plot2d.Stacked; +=====*/ + return declare("dojox.charting.plot2d.StackedAreas", Stacked, { + // summary: + // A convenience object to set up a stacked area plot. + constructor: function(){ + // summary: + // Force our Stacked plotter to include both lines and areas. + this.opt.lines = true; + this.opt.areas = true; + } + }); +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedBars.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedBars.js new file mode 100644 index 0000000..5d3923b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedBars.js @@ -0,0 +1,134 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "./Bars", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/functional/sequence"], + function(lang, arr, declare, Bars, dc, df, dfr, dfs){ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); +/*===== +var bars = dojox.charting.plot2d.Bars; +=====*/ + return declare("dojox.charting.plot2d.StackedBars", Bars, { + // summary: + // The plot object representing a stacked bar chart (horizontal bars). + getSeriesStats: function(){ + // summary: + // Calculate the min/max on all attached series in both directions. + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + var stats = dc.collectStackedStats(this.series), t; + this._maxRunLength = stats.hmax; + stats.hmin -= 0.5; + stats.hmax += 0.5; + t = stats.hmin, stats.hmin = stats.vmin, stats.vmin = t; + t = stats.hmax, stats.hmax = stats.vmax, stats.vmax = t; + return stats; + }, + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.StackedBars + // A reference to this plot for functional chaining. + if(this._maxRunLength <= 0){ + return this; + } + + // stack all values + var acc = df.repeat(this._maxRunLength, "-> 0", 0); + for(var i = 0; i < this.series.length; ++i){ + var run = this.series[i]; + for(var j = 0; j < run.data.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y; + if(isNaN(v)){ v = 0; } + acc[j] += v; + } + } + } + // draw runs in backwards + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, f, gap, height, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + events = this.events(); + f = dc.calculateBarSize(this._vScaler.bounds.scale, this.opt); + gap = f.gap; + height = f.size; + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + var theme = t.next("bar", [this.opt, run]), s = run.group, + eventSeries = new Array(acc.length); + for(var j = 0; j < acc.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = acc[j], + width = ht(v), + finalTheme = typeof value != "number" ? + t.addMixin(theme, "bar", value, true) : + t.post(theme, "bar"); + if(width >= 0 && height >= 1){ + var rect = { + x: offsets.l, + y: dim.height - offsets.b - vt(j + 1.5) + gap, + width: width, height: height + }; + var specialFill = this._plotFill(finalTheme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, rect); + var shape = s.createRect(rect).setFill(specialFill).setStroke(finalTheme.series.stroke); + run.dyn.fill = shape.getFill(); + run.dyn.stroke = shape.getStroke(); + if(events){ + var o = { + element: "bar", + index: j, + run: run, + shape: shape, + x: v, + y: j + 1.5 + }; + this._connectEvents(o); + eventSeries[j] = o; + } + if(this.animate){ + this._animateBar(shape, offsets.l, -width); + } + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + // update the accumulator + for(var j = 0; j < run.data.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y; + if(isNaN(v)){ v = 0; } + acc[j] -= v; + } + } + } + this.dirty = false; + return this; // dojox.charting.plot2d.StackedBars + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedColumns.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedColumns.js new file mode 100644 index 0000000..551e99e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedColumns.js @@ -0,0 +1,132 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "./Columns", "./common", + "dojox/lang/functional", "dojox/lang/functional/reversed", "dojox/lang/functional/sequence"], + function(lang, arr, declare, Columns, dc, df, dfr, dfs){ + + var purgeGroup = dfr.lambda("item.purgeGroup()"); +/*===== +var Columns = dojox.charting.plot2d.Columns; +=====*/ + return declare("dojox.charting.plot2d.StackedColumns", Columns, { + // summary: + // The plot object representing a stacked column chart (vertical bars). + getSeriesStats: function(){ + // summary: + // Calculate the min/max on all attached series in both directions. + // returns: Object + // {hmin, hmax, vmin, vmax} min/max in both directions. + var stats = dc.collectStackedStats(this.series); + this._maxRunLength = stats.hmax; + stats.hmin -= 0.5; + stats.hmax += 0.5; + return stats; + }, + render: function(dim, offsets){ + // summary: + // Run the calculations for any axes for this plot. + // dim: Object + // An object in the form of { width, height } + // offsets: Object + // An object of the form { l, r, t, b}. + // returns: dojox.charting.plot2d.StackedColumns + // A reference to this plot for functional chaining. + if(this._maxRunLength <= 0){ + return this; + } + + // stack all values + var acc = df.repeat(this._maxRunLength, "-> 0", 0); + for(var i = 0; i < this.series.length; ++i){ + var run = this.series[i]; + for(var j = 0; j < run.data.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y; + if(isNaN(v)){ v = 0; } + acc[j] += v; + } + } + } + // draw runs in backwards + if(this.zoom && !this.isDataDirty()){ + return this.performZoom(dim, offsets); + } + this.resetEvents(); + this.dirty = this.isDirty(); + if(this.dirty){ + arr.forEach(this.series, purgeGroup); + this._eventSeries = {}; + this.cleanGroup(); + var s = this.group; + df.forEachRev(this.series, function(item){ item.cleanGroup(s); }); + } + var t = this.chart.theme, f, gap, width, + ht = this._hScaler.scaler.getTransformerFromModel(this._hScaler), + vt = this._vScaler.scaler.getTransformerFromModel(this._vScaler), + events = this.events(); + f = dc.calculateBarSize(this._hScaler.bounds.scale, this.opt); + gap = f.gap; + width = f.size; + for(var i = this.series.length - 1; i >= 0; --i){ + var run = this.series[i]; + if(!this.dirty && !run.dirty){ + t.skip(); + this._reconnectEvents(run.name); + continue; + } + run.cleanGroup(); + var theme = t.next("column", [this.opt, run]), s = run.group, + eventSeries = new Array(acc.length); + for(var j = 0; j < acc.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = acc[j], + height = vt(v), + finalTheme = typeof value != "number" ? + t.addMixin(theme, "column", value, true) : + t.post(theme, "column"); + if(width >= 1 && height >= 0){ + var rect = { + x: offsets.l + ht(j + 0.5) + gap, + y: dim.height - offsets.b - vt(v), + width: width, height: height + }; + var specialFill = this._plotFill(finalTheme.series.fill, dim, offsets); + specialFill = this._shapeFill(specialFill, rect); + var shape = s.createRect(rect).setFill(specialFill).setStroke(finalTheme.series.stroke); + run.dyn.fill = shape.getFill(); + run.dyn.stroke = shape.getStroke(); + if(events){ + var o = { + element: "column", + index: j, + run: run, + shape: shape, + x: j + 0.5, + y: v + }; + this._connectEvents(o); + eventSeries[j] = o; + } + if(this.animate){ + this._animateColumn(shape, dim.height - offsets.b, height); + } + } + } + } + this._eventSeries[run.name] = eventSeries; + run.dirty = false; + // update the accumulator + for(var j = 0; j < run.data.length; ++j){ + var value = run.data[j]; + if(value !== null){ + var v = typeof value == "number" ? value : value.y; + if(isNaN(v)){ v = 0; } + acc[j] -= v; + } + } + } + this.dirty = false; + return this; // dojox.charting.plot2d.StackedColumns + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedLines.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedLines.js new file mode 100644 index 0000000..03f0b4d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/StackedLines.js @@ -0,0 +1,14 @@ +define(["dojo/_base/declare", "./Stacked"], function(declare, Stacked){ +/*===== +var Stacked = dojox.charting.plot2d.Stacked; +=====*/ + return declare("dojox.charting.plot2d.StackedLines", Stacked, { + // summary: + // A convenience object to create a stacked line chart. + constructor: function(){ + // summary: + // Force our Stacked base to be lines only. + this.opt.lines = true; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/_PlotEvents.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/_PlotEvents.js new file mode 100644 index 0000000..76c7ef0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/_PlotEvents.js @@ -0,0 +1,120 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "dojo/_base/connect"], + function(lang, arr, declare, hub){ + + return declare("dojox.charting.plot2d._PlotEvents", null, { + constructor: function(){ + this._shapeEvents = []; + this._eventSeries = {}; + }, + destroy: function(){ + // summary: + // Destroy any internal elements and event handlers. + this.resetEvents(); + this.inherited(arguments); + }, + plotEvent: function(o){ + // summary: + // Stub function for use by specific plots. + // o: Object + // An object intended to represent event parameters. + }, + raiseEvent: function(o){ + // summary: + // Raises events in predefined order + // o: Object + // An object intended to represent event parameters. + this.plotEvent(o); + var t = lang.delegate(o); + t.originalEvent = o.type; + t.originalPlot = o.plot; + t.type = "onindirect"; + arr.forEach(this.chart.stack, function(plot){ + if(plot !== this && plot.plotEvent){ + t.plot = plot; + plot.plotEvent(t); + } + }, this); + }, + connect: function(object, method){ + // summary: + // Helper function to connect any object's method to our plotEvent. + // object: Object + // The object to connect to. + // method: String|Function + // The method to fire when our plotEvent is fired. + // returns: Array + // The handle as returned from dojo.connect (see dojo.connect). + this.dirty = true; + return hub.connect(this, "plotEvent", object, method); // Array + }, + events: function(){ + // summary: + // Find out if any event handlers have been connected to our plotEvent. + // returns: Boolean + // A flag indicating that there are handlers attached. + return !!this.plotEvent.after; + }, + resetEvents: function(){ + // summary: + // Reset all events attached to our plotEvent (i.e. disconnect). + if(this._shapeEvents.length){ + arr.forEach(this._shapeEvents, function(item){ + item.shape.disconnect(item.handle); + }); + this._shapeEvents = []; + } + this.raiseEvent({type: "onplotreset", plot: this}); + }, + _connectSingleEvent: function(o, eventName){ + this._shapeEvents.push({ + shape: o.eventMask, + handle: o.eventMask.connect(eventName, this, function(e){ + o.type = eventName; + o.event = e; + this.raiseEvent(o); + o.event = null; + }) + }); + }, + _connectEvents: function(o){ + if(o){ + o.chart = this.chart; + o.plot = this; + o.hAxis = this.hAxis || null; + o.vAxis = this.vAxis || null; + o.eventMask = o.eventMask || o.shape; + this._connectSingleEvent(o, "onmouseover"); + this._connectSingleEvent(o, "onmouseout"); + this._connectSingleEvent(o, "onclick"); + } + }, + _reconnectEvents: function(seriesName){ + var a = this._eventSeries[seriesName]; + if(a){ + arr.forEach(a, this._connectEvents, this); + } + }, + fireEvent: function(seriesName, eventName, index, eventObject){ + // summary: + // Emulates firing an event for a given data value (specified by + // an index) of a given series. + // seriesName: String: + // Series name. + // eventName: String: + // Event name to emulate. + // index: Number: + // Valid data value index used to raise an event. + // eventObject: Object?: + // Optional event object. Especially useful for synthetic events. + // Default: null. + var s = this._eventSeries[seriesName]; + if(s && s.length && index < s.length){ + var o = s[index]; + o.type = eventName; + o.event = eventObject || null; + this.raiseEvent(o); + o.event = null; + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot2d/common.js b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/common.js new file mode 100644 index 0000000..858138f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot2d/common.js @@ -0,0 +1,216 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/Color", + "dojox/gfx", "dojox/lang/functional", "../scaler/common"], + function(lang, arr, Color, g, df, sc){ + + var common = lang.getObject("dojox.charting.plot2d.common", true); + + return lang.mixin(common, { + doIfLoaded: sc.doIfLoaded, + makeStroke: function(stroke){ + if(!stroke){ return stroke; } + if(typeof stroke == "string" || stroke instanceof Color){ + stroke = {color: stroke}; + } + return g.makeParameters(g.defaultStroke, stroke); + }, + augmentColor: function(target, color){ + var t = new Color(target), + c = new Color(color); + c.a = t.a; + return c; + }, + augmentStroke: function(stroke, color){ + var s = common.makeStroke(stroke); + if(s){ + s.color = common.augmentColor(s.color, color); + } + return s; + }, + augmentFill: function(fill, color){ + var fc, c = new Color(color); + if(typeof fill == "string" || fill instanceof Color){ + return common.augmentColor(fill, color); + } + return fill; + }, + + defaultStats: { + vmin: Number.POSITIVE_INFINITY, vmax: Number.NEGATIVE_INFINITY, + hmin: Number.POSITIVE_INFINITY, hmax: Number.NEGATIVE_INFINITY + }, + + collectSimpleStats: function(series){ + var stats = lang.delegate(common.defaultStats); + for(var i = 0; i < series.length; ++i){ + var run = series[i]; + for(var j = 0; j < run.data.length; j++){ + if(run.data[j] !== null){ + if(typeof run.data[j] == "number"){ + // 1D case + var old_vmin = stats.vmin, old_vmax = stats.vmax; + if(!("ymin" in run) || !("ymax" in run)){ + arr.forEach(run.data, function(val, i){ + if(val !== null){ + var x = i + 1, y = val; + if(isNaN(y)){ y = 0; } + stats.hmin = Math.min(stats.hmin, x); + stats.hmax = Math.max(stats.hmax, x); + stats.vmin = Math.min(stats.vmin, y); + stats.vmax = Math.max(stats.vmax, y); + } + }); + } + if("ymin" in run){ stats.vmin = Math.min(old_vmin, run.ymin); } + if("ymax" in run){ stats.vmax = Math.max(old_vmax, run.ymax); } + }else{ + // 2D case + var old_hmin = stats.hmin, old_hmax = stats.hmax, + old_vmin = stats.vmin, old_vmax = stats.vmax; + if(!("xmin" in run) || !("xmax" in run) || !("ymin" in run) || !("ymax" in run)){ + arr.forEach(run.data, function(val, i){ + if(val !== null){ + var x = "x" in val ? val.x : i + 1, y = val.y; + if(isNaN(x)){ x = 0; } + if(isNaN(y)){ y = 0; } + stats.hmin = Math.min(stats.hmin, x); + stats.hmax = Math.max(stats.hmax, x); + stats.vmin = Math.min(stats.vmin, y); + stats.vmax = Math.max(stats.vmax, y); + } + }); + } + if("xmin" in run){ stats.hmin = Math.min(old_hmin, run.xmin); } + if("xmax" in run){ stats.hmax = Math.max(old_hmax, run.xmax); } + if("ymin" in run){ stats.vmin = Math.min(old_vmin, run.ymin); } + if("ymax" in run){ stats.vmax = Math.max(old_vmax, run.ymax); } + } + + break; + } + } + } + return stats; + }, + + calculateBarSize: function(/* Number */ availableSize, /* Object */ opt, /* Number? */ clusterSize){ + if(!clusterSize){ + clusterSize = 1; + } + var gap = opt.gap, size = (availableSize - 2 * gap) / clusterSize; + if("minBarSize" in opt){ + size = Math.max(size, opt.minBarSize); + } + if("maxBarSize" in opt){ + size = Math.min(size, opt.maxBarSize); + } + size = Math.max(size, 1); + gap = (availableSize - size * clusterSize) / 2; + return {size: size, gap: gap}; // Object + }, + + collectStackedStats: function(series){ + // collect statistics + var stats = lang.clone(common.defaultStats); + if(series.length){ + // 1st pass: find the maximal length of runs + stats.hmin = Math.min(stats.hmin, 1); + stats.hmax = df.foldl(series, "seed, run -> Math.max(seed, run.data.length)", stats.hmax); + // 2nd pass: stack values + for(var i = 0; i < stats.hmax; ++i){ + var v = series[0].data[i]; + v = v && (typeof v == "number" ? v : v.y); + if(isNaN(v)){ v = 0; } + stats.vmin = Math.min(stats.vmin, v); + for(var j = 1; j < series.length; ++j){ + var t = series[j].data[i]; + t = t && (typeof t == "number" ? t : t.y); + if(isNaN(t)){ t = 0; } + v += t; + } + stats.vmax = Math.max(stats.vmax, v); + } + } + return stats; + }, + + curve: function(/* Number[] */a, /* Number|String */tension){ + // FIX for #7235, submitted by Enzo Michelangeli. + // Emulates the smoothing algorithms used in a famous, unnamed spreadsheet + // program ;) + var array = a.slice(0); + if(tension == "x") { + array[array.length] = arr[0]; // add a last element equal to the first, closing the loop + } + var p=arr.map(array, function(item, i){ + if(i==0){ return "M" + item.x + "," + item.y; } + if(!isNaN(tension)) { // use standard Dojo smoothing in tension is numeric + var dx=item.x-array[i-1].x, dy=array[i-1].y; + return "C"+(item.x-(tension-1)*(dx/tension))+","+dy+" "+(item.x-(dx/tension))+","+item.y+" "+item.x+","+item.y; + } else if(tension == "X" || tension == "x" || tension == "S") { + // use Excel "line smoothing" algorithm (http://xlrotor.com/resources/files.shtml) + var p0, p1 = array[i-1], p2 = array[i], p3; + var bz1x, bz1y, bz2x, bz2y; + var f = 1/6; + if(i==1) { + if(tension == "x") { + p0 = array[array.length-2]; + } else { // "tension == X || tension == "S" + p0 = p1; + } + f = 1/3; + } else { + p0 = array[i-2]; + } + if(i==(array.length-1)) { + if(tension == "x") { + p3 = array[1]; + } else { // "tension == X || tension == "S" + p3 = p2; + } + f = 1/3; + } else { + p3 = array[i+1]; + } + var p1p2 = Math.sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)); + var p0p2 = Math.sqrt((p2.x-p0.x)*(p2.x-p0.x)+(p2.y-p0.y)*(p2.y-p0.y)); + var p1p3 = Math.sqrt((p3.x-p1.x)*(p3.x-p1.x)+(p3.y-p1.y)*(p3.y-p1.y)); + + var p0p2f = p0p2 * f; + var p1p3f = p1p3 * f; + + if(p0p2f > p1p2/2 && p1p3f > p1p2/2) { + p0p2f = p1p2/2; + p1p3f = p1p2/2; + } else if(p0p2f > p1p2/2) { + p0p2f = p1p2/2; + p1p3f = p1p2/2 * p1p3/p0p2; + } else if(p1p3f > p1p2/2) { + p1p3f = p1p2/2; + p0p2f = p1p2/2 * p0p2/p1p3; + } + + if(tension == "S") { + if(p0 == p1) { p0p2f = 0; } + if(p2 == p3) { p1p3f = 0; } + } + + bz1x = p1.x + p0p2f*(p2.x - p0.x)/p0p2; + bz1y = p1.y + p0p2f*(p2.y - p0.y)/p0p2; + bz2x = p2.x - p1p3f*(p3.x - p1.x)/p1p3; + bz2y = p2.y - p1p3f*(p3.y - p1.y)/p1p3; + } + return "C"+(bz1x+","+bz1y+" "+bz2x+","+bz2y+" "+p2.x+","+p2.y); + }); + return p.join(" "); + }, + + getLabel: function(/*Number*/number, /*Boolean*/fixed, /*Number*/precision){ + return sc.doIfLoaded("dojo/number", function(numberLib){ + return (fixed ? numberLib.format(number, {places : precision}) : + numberLib.format(number)) || ""; + }, function(){ + return fixed ? number.toFixed(precision) : number.toString(); + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Bars.js b/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Bars.js new file mode 100644 index 0000000..7cceece --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Bars.js @@ -0,0 +1,61 @@ +define(["dojox/gfx3d", "dojo/_base/window", "dojo/_base/declare", "dojo/_base/Color", "./Base"], + function(gfx3d, win, declare, Color, Base) { + + // reduce function borrowed from dojox.fun + var reduce = function(/*Array*/ a, /*Function|String|Array*/ f, /*Object?*/ o){ + // summary: repeatedly applies a binary function to an array from left + // to right; returns the final value. + a = typeof a == "string" ? a.split("") : a; o = o || win.global; + var z = a[0]; + for(var i = 1; i < a.length; z = f.call(o, z, a[i++])); + return z; // Object + }; + /*===== + var Base = dojox.charting.plot3d.Base; + =====*/ + return declare("dojox.charting.plot3d.Bars", Base, { + constructor: function(width, height, kwArgs){ + this.depth = "auto"; + this.gap = 0; + this.data = []; + this.material = {type: "plastic", finish: "dull", color: "lime"}; + if(kwArgs){ + if("depth" in kwArgs){ this.depth = kwArgs.depth; } + if("gap" in kwArgs){ this.gap = kwArgs.gap; } + if("material" in kwArgs){ + var m = kwArgs.material; + if(typeof m == "string" || m instanceof Color){ + this.material.color = m; + }else{ + this.material = m; + } + } + } + }, + getDepth: function(){ + if(this.depth == "auto"){ + var w = this.width; + if(this.data && this.data.length){ + w = w / this.data.length; + } + return w - 2 * this.gap; + } + return this.depth; + }, + generate: function(chart, creator){ + if(!this.data){ return this; } + var step = this.width / this.data.length, org = 0, + depth = this.depth == "auto" ? step - 2 * this.gap : this.depth, + scale = this.height / reduce(this.data, Math.max); + if(!creator){ creator = chart.view; } + for(var i = 0; i < this.data.length; ++i, org += step){ + creator + .createCube({ + bottom: {x: org + this.gap, y: 0, z: 0}, + top: {x: org + step - this.gap, y: this.data[i] * scale, z: depth} + }) + .setFill(this.material); + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Base.js b/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Base.js new file mode 100644 index 0000000..ab1b536 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Base.js @@ -0,0 +1,19 @@ +define(["dojo/_base/declare"], + function(declare) { + return declare("dojox.charting.plot3d.Base", null, { + constructor: function(width, height, kwArgs){ + this.width = width; + this.height = height; + }, + setData: function(data){ + this.data = data ? data : []; + return this; + }, + getDepth: function(){ + return this.depth; + }, + generate: function(chart, creator){ + } + }); +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Cylinders.js b/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Cylinders.js new file mode 100644 index 0000000..8b63668 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/plot3d/Cylinders.js @@ -0,0 +1,65 @@ +define(["dojox/gfx3d", "dojox/gfx3d/matrix", "dojo/_base/declare", "dojo/_base/Color", "dojo/_base/window", "./Base"], + function(gfx3d, matrix3d, declare, Color, win, Base) { + + // reduce function borrowed from dojox.fun + var reduce = function(/*Array*/ a, /*Function|String|Array*/ f, /*Object?*/ o){ + // summary: repeatedly applies a binary function to an array from left + // to right; returns the final value. + a = typeof a == "string" ? a.split("") : a; o = o || win.global; + var z = a[0]; + for(var i = 1; i < a.length; z = f.call(o, z, a[i++])); + return z; // Object + }; + /*===== + var Base = dojox.charting.plot3d.Base; + =====*/ + return declare("dojox.charting.plot3d.Cylinders", Base, { + constructor: function(width, height, kwArgs){ + this.depth = "auto"; + this.gap = 0; + this.data = []; + this.material = {type: "plastic", finish: "shiny", color: "lime"}; + this.outline = null; + if(kwArgs){ + if("depth" in kwArgs){ this.depth = kwArgs.depth; } + if("gap" in kwArgs){ this.gap = kwArgs.gap; } + if("material" in kwArgs){ + var m = kwArgs.material; + if(typeof m == "string" || m instanceof Color){ + this.material.color = m; + }else{ + this.material = m; + } + } + if("outline" in kwArgs){ this.outline = kwArgs.outline; } + } + }, + getDepth: function(){ + if(this.depth == "auto"){ + var w = this.width; + if(this.data && this.data.length){ + w = w / this.data.length; + } + return w - 2 * this.gap; + } + return this.depth; + }, + generate: function(chart, creator){ + if(!this.data){ return this; } + var step = this.width / this.data.length, org = 0, + scale = this.height / reduce(this.data, Math.max); + if(!creator){ creator = chart.view; } + for(var i = 0; i < this.data.length; ++i, org += step){ + creator + .createCylinder({ + center: {x: org + step / 2, y: 0, z: 0}, + radius: step / 2 - this.gap, + height: this.data[i] * scale + }) + .setTransform(matrix3d.rotateXg(-90)) + .setFill(this.material).setStroke(this.outline); + } + } + }); +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/resources/Legend.css b/js/dojo-release-1.7.2-src/dojox/charting/resources/Legend.css new file mode 100644 index 0000000..3eae82d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/resources/Legend.css @@ -0,0 +1,24 @@ +.dojoxLegendNode { + background-color:#F7F7F7; + border:1px solid #CCCCCC; + margin:0; + padding:0; +} +.dojoxLegendNode td{ + padding: 6px 4px 6px 6px; +} +.dojoxLegendIcon { + padding: 0px; + margin: 0 2px 0 4px; +} +.dojoxLegendIcon div{ + float: left; +} +.dj_ie .dojoxLegendNode td{ + padding: 5px; +} +.dj_ie .dojoxLegendIcon { + padding: 0px; + margin: 0 2px 0 5px; + vertical-align: middle; +} diff --git a/js/dojo-release-1.7.2-src/dojox/charting/scaler/common.js b/js/dojo-release-1.7.2-src/dojox/charting/scaler/common.js new file mode 100644 index 0000000..af353cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/scaler/common.js @@ -0,0 +1,75 @@ +define(["dojo/_base/lang"], function(lang){ + + var eq = function(/*Number*/ a, /*Number*/ b){ + // summary: compare two FP numbers for equality + return Math.abs(a - b) <= 1e-6 * (Math.abs(a) + Math.abs(b)); // Boolean + }; + + var common = lang.getObject("dojox.charting.scaler.common", true); + + var testedModules = {}; + + return lang.mixin(common, { + doIfLoaded: function(moduleName, ifloaded, ifnotloaded){ + if(testedModules[moduleName] == undefined){ + try{ + testedModules[moduleName] = require(moduleName); + }catch(e){ + testedModules[moduleName] = null; + } + } + if(testedModules[moduleName]){ + return ifloaded(testedModules[moduleName]); + }else{ + return ifnotloaded(); + } + }, + findString: function(/*String*/ val, /*Array*/ text){ + val = val.toLowerCase(); + for(var i = 0; i < text.length; ++i){ + if(val == text[i]){ return true; } + } + return false; + }, + getNumericLabel: function(/*Number*/ number, /*Number*/ precision, /*Object*/ kwArgs){ + var def = ""; + common.doIfLoaded("dojo/number", function(numberLib){ + def = (kwArgs.fixed ? numberLib.format(number, {places : precision < 0 ? -precision : 0}) : + numberLib.format(number)) || ""; + }, function(){ + def = kwArgs.fixed ? number.toFixed(precision < 0 ? -precision : 0) : number.toString(); + }); + if(kwArgs.labelFunc){ + var r = kwArgs.labelFunc(def, number, precision); + if(r){ return r; } + // else fall through to the regular labels search + } + if(kwArgs.labels){ + // classic binary search + var l = kwArgs.labels, lo = 0, hi = l.length; + while(lo < hi){ + var mid = Math.floor((lo + hi) / 2), val = l[mid].value; + if(val < number){ + lo = mid + 1; + }else{ + hi = mid; + } + } + // lets take into account FP errors + if(lo < l.length && eq(l[lo].value, number)){ + return l[lo].text; + } + --lo; + if(lo >= 0 && lo < l.length && eq(l[lo].value, number)){ + return l[lo].text; + } + lo += 2; + if(lo < l.length && eq(l[lo].value, number)){ + return l[lo].text; + } + // otherwise we will produce a number + } + return def; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/scaler/linear.js b/js/dojo-release-1.7.2-src/dojox/charting/scaler/linear.js new file mode 100644 index 0000000..cb22f62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/scaler/linear.js @@ -0,0 +1,250 @@ +define(["dojo/_base/lang", "./common"], + function(lang, common){ + var linear = lang.getObject("dojox.charting.scaler.linear", true); + + var deltaLimit = 3, // pixels + findString = common.findString, + getLabel = common.getNumericLabel; + + var calcTicks = function(min, max, kwArgs, majorTick, minorTick, microTick, span){ + kwArgs = lang.delegate(kwArgs); + if(!majorTick){ + if(kwArgs.fixUpper == "major"){ kwArgs.fixUpper = "minor"; } + if(kwArgs.fixLower == "major"){ kwArgs.fixLower = "minor"; } + } + if(!minorTick){ + if(kwArgs.fixUpper == "minor"){ kwArgs.fixUpper = "micro"; } + if(kwArgs.fixLower == "minor"){ kwArgs.fixLower = "micro"; } + } + if(!microTick){ + if(kwArgs.fixUpper == "micro"){ kwArgs.fixUpper = "none"; } + if(kwArgs.fixLower == "micro"){ kwArgs.fixLower = "none"; } + } + var lowerBound = findString(kwArgs.fixLower, ["major"]) ? + Math.floor(kwArgs.min / majorTick) * majorTick : + findString(kwArgs.fixLower, ["minor"]) ? + Math.floor(kwArgs.min / minorTick) * minorTick : + findString(kwArgs.fixLower, ["micro"]) ? + Math.floor(kwArgs.min / microTick) * microTick : kwArgs.min, + upperBound = findString(kwArgs.fixUpper, ["major"]) ? + Math.ceil(kwArgs.max / majorTick) * majorTick : + findString(kwArgs.fixUpper, ["minor"]) ? + Math.ceil(kwArgs.max / minorTick) * minorTick : + findString(kwArgs.fixUpper, ["micro"]) ? + Math.ceil(kwArgs.max / microTick) * microTick : kwArgs.max; + + if(kwArgs.useMin){ min = lowerBound; } + if(kwArgs.useMax){ max = upperBound; } + + var majorStart = (!majorTick || kwArgs.useMin && findString(kwArgs.fixLower, ["major"])) ? + min : Math.ceil(min / majorTick) * majorTick, + minorStart = (!minorTick || kwArgs.useMin && findString(kwArgs.fixLower, ["major", "minor"])) ? + min : Math.ceil(min / minorTick) * minorTick, + microStart = (! microTick || kwArgs.useMin && findString(kwArgs.fixLower, ["major", "minor", "micro"])) ? + min : Math.ceil(min / microTick) * microTick, + majorCount = !majorTick ? 0 : (kwArgs.useMax && findString(kwArgs.fixUpper, ["major"]) ? + Math.round((max - majorStart) / majorTick) : + Math.floor((max - majorStart) / majorTick)) + 1, + minorCount = !minorTick ? 0 : (kwArgs.useMax && findString(kwArgs.fixUpper, ["major", "minor"]) ? + Math.round((max - minorStart) / minorTick) : + Math.floor((max - minorStart) / minorTick)) + 1, + microCount = !microTick ? 0 : (kwArgs.useMax && findString(kwArgs.fixUpper, ["major", "minor", "micro"]) ? + Math.round((max - microStart) / microTick) : + Math.floor((max - microStart) / microTick)) + 1, + minorPerMajor = minorTick ? Math.round(majorTick / minorTick) : 0, + microPerMinor = microTick ? Math.round(minorTick / microTick) : 0, + majorPrecision = majorTick ? Math.floor(Math.log(majorTick) / Math.LN10) : 0, + minorPrecision = minorTick ? Math.floor(Math.log(minorTick) / Math.LN10) : 0, + scale = span / (max - min); + if(!isFinite(scale)){ scale = 1; } + + return { + bounds: { + lower: lowerBound, + upper: upperBound, + from: min, + to: max, + scale: scale, + span: span + }, + major: { + tick: majorTick, + start: majorStart, + count: majorCount, + prec: majorPrecision + }, + minor: { + tick: minorTick, + start: minorStart, + count: minorCount, + prec: minorPrecision + }, + micro: { + tick: microTick, + start: microStart, + count: microCount, + prec: 0 + }, + minorPerMajor: minorPerMajor, + microPerMinor: microPerMinor, + scaler: linear + }; + }; + + return lang.mixin(linear, { + buildScaler: function(/*Number*/ min, /*Number*/ max, /*Number*/ span, /*Object*/ kwArgs){ + var h = {fixUpper: "none", fixLower: "none", natural: false}; + if(kwArgs){ + if("fixUpper" in kwArgs){ h.fixUpper = String(kwArgs.fixUpper); } + if("fixLower" in kwArgs){ h.fixLower = String(kwArgs.fixLower); } + if("natural" in kwArgs){ h.natural = Boolean(kwArgs.natural); } + } + + // update bounds + if("min" in kwArgs){ min = kwArgs.min; } + if("max" in kwArgs){ max = kwArgs.max; } + if(kwArgs.includeZero){ + if(min > 0){ min = 0; } + if(max < 0){ max = 0; } + } + h.min = min; + h.useMin = true; + h.max = max; + h.useMax = true; + + if("from" in kwArgs){ + min = kwArgs.from; + h.useMin = false; + } + if("to" in kwArgs){ + max = kwArgs.to; + h.useMax = false; + } + + // check for erroneous condition + if(max <= min){ + return calcTicks(min, max, h, 0, 0, 0, span); // Object + } + + var mag = Math.floor(Math.log(max - min) / Math.LN10), + major = kwArgs && ("majorTickStep" in kwArgs) ? kwArgs.majorTickStep : Math.pow(10, mag), + minor = 0, micro = 0, ticks; + + // calculate minor ticks + if(kwArgs && ("minorTickStep" in kwArgs)){ + minor = kwArgs.minorTickStep; + }else{ + do{ + minor = major / 10; + if(!h.natural || minor > 0.9){ + ticks = calcTicks(min, max, h, major, minor, 0, span); + if(ticks.bounds.scale * ticks.minor.tick > deltaLimit){ break; } + } + minor = major / 5; + if(!h.natural || minor > 0.9){ + ticks = calcTicks(min, max, h, major, minor, 0, span); + if(ticks.bounds.scale * ticks.minor.tick > deltaLimit){ break; } + } + minor = major / 2; + if(!h.natural || minor > 0.9){ + ticks = calcTicks(min, max, h, major, minor, 0, span); + if(ticks.bounds.scale * ticks.minor.tick > deltaLimit){ break; } + } + return calcTicks(min, max, h, major, 0, 0, span); // Object + }while(false); + } + + // calculate micro ticks + if(kwArgs && ("microTickStep" in kwArgs)){ + micro = kwArgs.microTickStep; + ticks = calcTicks(min, max, h, major, minor, micro, span); + }else{ + do{ + micro = minor / 10; + if(!h.natural || micro > 0.9){ + ticks = calcTicks(min, max, h, major, minor, micro, span); + if(ticks.bounds.scale * ticks.micro.tick > deltaLimit){ break; } + } + micro = minor / 5; + if(!h.natural || micro > 0.9){ + ticks = calcTicks(min, max, h, major, minor, micro, span); + if(ticks.bounds.scale * ticks.micro.tick > deltaLimit){ break; } + } + micro = minor / 2; + if(!h.natural || micro > 0.9){ + ticks = calcTicks(min, max, h, major, minor, micro, span); + if(ticks.bounds.scale * ticks.micro.tick > deltaLimit){ break; } + } + micro = 0; + }while(false); + } + + return micro ? ticks : calcTicks(min, max, h, major, minor, 0, span); // Object + }, + buildTicks: function(/*Object*/ scaler, /*Object*/ kwArgs){ + var step, next, tick, + nextMajor = scaler.major.start, + nextMinor = scaler.minor.start, + nextMicro = scaler.micro.start; + if(kwArgs.microTicks && scaler.micro.tick){ + step = scaler.micro.tick, next = nextMicro; + }else if(kwArgs.minorTicks && scaler.minor.tick){ + step = scaler.minor.tick, next = nextMinor; + }else if(scaler.major.tick){ + step = scaler.major.tick, next = nextMajor; + }else{ + // no ticks + return null; + } + // make sure that we have finite bounds + var revScale = 1 / scaler.bounds.scale; + if(scaler.bounds.to <= scaler.bounds.from || isNaN(revScale) || !isFinite(revScale) || + step <= 0 || isNaN(step) || !isFinite(step)){ + // no ticks + return null; + } + // loop over all ticks + var majorTicks = [], minorTicks = [], microTicks = []; + while(next <= scaler.bounds.to + revScale){ + if(Math.abs(nextMajor - next) < step / 2){ + // major tick + tick = {value: nextMajor}; + if(kwArgs.majorLabels){ + tick.label = getLabel(nextMajor, scaler.major.prec, kwArgs); + } + majorTicks.push(tick); + nextMajor += scaler.major.tick; + nextMinor += scaler.minor.tick; + nextMicro += scaler.micro.tick; + }else if(Math.abs(nextMinor - next) < step / 2){ + // minor tick + if(kwArgs.minorTicks){ + tick = {value: nextMinor}; + if(kwArgs.minorLabels && (scaler.minMinorStep <= scaler.minor.tick * scaler.bounds.scale)){ + tick.label = getLabel(nextMinor, scaler.minor.prec, kwArgs); + } + minorTicks.push(tick); + } + nextMinor += scaler.minor.tick; + nextMicro += scaler.micro.tick; + }else{ + // micro tick + if(kwArgs.microTicks){ + microTicks.push({value: nextMicro}); + } + nextMicro += scaler.micro.tick; + } + next += step; + } + return {major: majorTicks, minor: minorTicks, micro: microTicks}; // Object + }, + getTransformerFromModel: function(/*Object*/ scaler){ + var offset = scaler.bounds.from, scale = scaler.bounds.scale; + return function(x){ return (x - offset) * scale; }; // Function + }, + getTransformerFromPlot: function(/*Object*/ scaler){ + var offset = scaler.bounds.from, scale = scaler.bounds.scale; + return function(x){ return x / scale + offset; }; // Function + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/scaler/primitive.js b/js/dojo-release-1.7.2-src/dojox/charting/scaler/primitive.js new file mode 100644 index 0000000..11ab9ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/scaler/primitive.js @@ -0,0 +1,36 @@ +define(["dojo/_base/lang"], + function(lang){ + var primitive = lang.getObject("dojox.charting.scaler.primitive", true); + return lang.mixin(primitive, { + buildScaler: function(/*Number*/ min, /*Number*/ max, /*Number*/ span, /*Object*/ kwArgs){ + if(min == max){ + // artificially extend bounds + min -= 0.5; + max += 0.5; + // now the line will be centered + } + return { + bounds: { + lower: min, + upper: max, + from: min, + to: max, + scale: span / (max - min), + span: span + }, + scaler: primitive + }; + }, + buildTicks: function(/*Object*/ scaler, /*Object*/ kwArgs){ + return {major: [], minor: [], micro: []}; // Object + }, + getTransformerFromModel: function(/*Object*/ scaler){ + var offset = scaler.bounds.from, scale = scaler.bounds.scale; + return function(x){ return (x - offset) * scale; }; // Function + }, + getTransformerFromPlot: function(/*Object*/ scaler){ + var offset = scaler.bounds.from, scale = scaler.bounds.scale; + return function(x){ return x / scale + offset; }; // Function + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_ChartAxisTitle.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_ChartAxisTitle.html new file mode 100644 index 0000000..9f2a968 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_ChartAxisTitle.html @@ -0,0 +1,192 @@ + + + + + + + + + Chart2D Title + + + + + +

                          Chart2D Titles

                          +

                          Column chart with axis title

                          +

                          + Axis Title Gap:  + +    + Axis Rotation + +       + +       + +

                          +       +

                          Line chart, textDir = auto

                          +
                          +

                          Line chart, default textDir (inherited from UI)

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_DataSeries.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_DataSeries.html new file mode 100644 index 0000000..afe6ff3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_DataSeries.html @@ -0,0 +1,237 @@ + + + + + + + + + DataSeries Test + + + + + + + + + + +

                          DataSeries Test

                          +

                          + Use the spinner fields at the bottom to change the data. The charts listen to store changes an update automatically. +

                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_DeclerativeChart.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_DeclerativeChart.html new file mode 100644 index 0000000..4029daa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_DeclerativeChart.html @@ -0,0 +1,107 @@ + + + + + + + + + Chart 2D + + + + + + + + + + +

                          Chart 2D

                          +

                          Examples of charts using widgets.

                          +
                          + + + + + + + + + + + + + + + + + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Event2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Event2d.html new file mode 100644 index 0000000..fcd321d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Event2d.html @@ -0,0 +1,249 @@ + + + + + + + + + Event 2D + + + + + + + + +

                          Event 2D

                          + +

                          Hover over markers, bars, columns, slices, and so on.

                          +

                          1: textDir = "rtl"

                          +
                          +
                          +

                          2: textDir = "auto"

                          +
                          +
                          +

                          3: textDir = "auto"

                          +
                          +
                          +

                          4: textDir inherited from UI

                          +
                          +
                          +

                          5: textDir = "rtl"

                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Label_shortening.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Label_shortening.html new file mode 100644 index 0000000..5630cfa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Label_shortening.html @@ -0,0 +1,233 @@ + + + + + + + + + Chart 2D labels shortening + + + + + +

                          Chart 2D labels shortening

                          +

                          Hover on the truncated label(end with default trailing Symbol: "..." or your customized trailing symbols) you will see the whole label on tooltip

                          +

                          1: Label shortening.(x axis customized trailing Symbol) +textDir = auto

                          +
                          +

                          2: Label shortening with rotation +textDir inherited.

                          +
                          +

                          3: Label shortening with limited character.(y axis customized trailing Symbol) +textDir inherited

                          +
                          +

                          4: Label shortening with both limited character and limited length in px +textDir = rtl.

                          +
                          +

                          5: Label shortening for HTML declared chart +textDir = auto.

                          +
                          + + + + + + + + + + + + + + + + + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Pie_smart_label.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Pie_smart_label.html new file mode 100644 index 0000000..9e70b2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Pie_smart_label.html @@ -0,0 +1,170 @@ + + + + + + + + + Pie 2D: Smart Label + + + + + +

                          Pie 2D: Smart Label

                          +

                          Example of Pie chart using smart label:

                          +
                          +
                          +
                          +
                          +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Pies.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Pies.html new file mode 100644 index 0000000..9eedbc5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Pies.html @@ -0,0 +1,123 @@ + + + + + + + + + Pie 2D + + + + + +

                          Pie 2D

                          + + + + +

                          1: Pie with internal labels.

                          +

                          2: Pie with external labels.

                          +

                          3: Degenerated pie with 1 positive elements (out of 5).

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_RotatedLabels.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_RotatedLabels.html new file mode 100644 index 0000000..3840717 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_RotatedLabels.html @@ -0,0 +1,122 @@ + + + + + + + + + Chart 2D rotated labels + + + + + +

                          Chart 2D rotated labels

                          + +

                          + Rotation:  + +   + +

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_SelectableLegend.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_SelectableLegend.html new file mode 100644 index 0000000..25a6a91 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_SelectableLegend.html @@ -0,0 +1,208 @@ + + + + + + + + + Chart: Selectable Legend test + + + + + + + +

                          Chart: Selectable Legend

                          +

                          Click the legends

                          +
                          +
                          +

                          1.Bars

                          +
                          +
                          +
                          +
                          + + +
                          +

                          2.Lines&Columns

                          +
                          +
                          +
                          +
                          + +
                          +
                          +

                          3.Pie

                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          4.Bubble

                          +
                          +
                          +
                          +
                          +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_SetTextDir.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_SetTextDir.html new file mode 100644 index 0000000..27159fc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_SetTextDir.html @@ -0,0 +1,356 @@ + + + + + + + + + Chart2D Title + + + + + +

                          Chart2D Titles

                          +

                          Column chart with axis title

                          +

                          + + + + +    + +

                          Programmatically created chart.

                          +
                          +

                          +

                          +    + +

                          HTML declared chart.

                          +
                          + + + + + + + + + + + + + + + + + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          3.Pie

                          +
                          +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Spider2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Spider2d.html new file mode 100644 index 0000000..38580fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/bidi_Spider2d.html @@ -0,0 +1,274 @@ + + + + + + + + + Spider 2D + + + + + + + + + + + + + +

                          Spider 2D

                          + +

                          + Spider 2D Demo: +

                          +

                          + + Switch Year: + + +       +                                +   + + +

                          +

                          + + Switch Spider Type: + + +       + + +                                + + Switch Divisions: + + +       + + +

                          +
                          + The following legends are selectable: +
                          +
                          +

                          +

                          +

                          + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/module.js b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/module.js new file mode 100644 index 0000000..ccbe92b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/module.js @@ -0,0 +1,31 @@ +dojo.provide("dojox.charting.tests.BidiSupport.module"); + +try{ + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_ChartAxisTitle", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_ChartAxisTitle.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_DataSeries", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_DataSeries.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_DeclerativeChart", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_DeclerativeChart.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_Event2d", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_Event2d.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_Label_shortening", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_Label_shortening.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_Pie_smart_label", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_Pie_smart_label.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_Pies", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_Pies.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_RotatedLabels", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_RotatedLabels.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_SelectableLegend", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_SelectableLegend.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_SetTextDir", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_SetTextDir.html")); + + doh.registerUrl("dojox.charting.tests.BidiSupport.bidi_Spider2d", dojo.moduleUrl("dojox", "charting/tests/BidiSupport/bidi_Spider2d.html")); + +}catch(e){ + + doh.debug(e); + +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/runTests.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/runTests.html new file mode 100644 index 0000000..f0b7f55 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/runTests.html @@ -0,0 +1,11 @@ + + + + + Inheritance Unit Test Runner + + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/stockHebrew.json b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/stockHebrew.json new file mode 100644 index 0000000..7879515 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/BidiSupport/stockHebrew.json @@ -0,0 +1,8 @@ +{ "identifier": "symbol", "idAttribute":"symbol", "label": "symbol","items": [ + { "symbol":"\u05d0\u05d7\u05d3.", "name":"Bagies Consulting", "historicPrice":[4.11,3.98,4.05,4.20,4.16,4.22,3.80], "open":4.11, "price":3.98, "updown":"v", "change":"-0.13 (-05%)", "low":3.77, "high":4.11 }, + { "symbol":"\u05e9\u05ea\u05d9\u05d9\u05dd.", "name":"BAY Corporation", "historicPrice":[9.79,9.60,9.50,2.23,9.45,9.76,9.99], "open":9.79, "price":9.60, "updown":"v", "change":"-0.19 (+14%)", "low":9.60, "high":9.81 }, + { "symbol":"Three.", "name":"Corcor PLC", "historicPrice":[8.44,8.44,8.54,8.60,9.65,8.42,8.44], "open":8.44, "price":8.44, "updown":"--", "change":"+0.00 (+00%)", "low":8.22, "high":8.44 }, + { "symbol":"Hello.", "name":"Anduct.", "historicPrice":[0.01,3.52,3.66,3.11,3.90,3.11,3.11], "open":3.13, "price":3.52, "updown":"^", "change":"+0.39 (+21%)", "low":3.13, "high":3.69 }, + { "symbol":"\u05e9\u05de\u05d9: Tal.", "name":"\u05d0\u05d5\u05e1\u05d8\u05d9\u05df.", "historicPrice":[6.72,6.76,6.61,6.41,6.31,6.99,7.20], "open":6.72, "price":6.76, "updown":"^", "change":"+0.04 (+01%)", "low":6.56, "high":6.77 }, + { "symbol":"My name: \u05d8\u05dc.", "name":"Datio PLC", "historicPrice":[2.11,2.47,3.11,3.06,3.01,3.01,3.00], "open":2.11, "price":2.47, "updown":"^", "change":"+0.36 (+36%)", "low":2.11, "high":3.01 } +]} diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/Theme.js b/js/dojo-release-1.7.2-src/dojox/charting/tests/Theme.js new file mode 100644 index 0000000..17c4f7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/Theme.js @@ -0,0 +1,67 @@ +dojo.provide("dojox.charting.tests.Theme"); +dojo.require("dojox.charting.Theme"); +dojo.require("dojox.charting.themes.PlotKit.blue"); + +(function(){ + var dxc=dojox.charting, Theme = dxc.Theme; + var blue=dxc.themes.PlotKit.blue; + tests.register("dojox.charting.tests.Theme", [ + function testDefineColor(t){ + var args={ num:16, cache:false }; + Theme.defineColors(args); + var a=blue.colors; + var s=""; + for(var i=0; i0) s+=""; + s+=""; + } + s+=''; + } + s+="
                           
                          "; + doh.debug(s); + + var args={ num:32, cache: false }; + Theme.defineColors(args); + var a=blue.colors; + var s=""; + for(var i=0; i0) s+=""; + s+=""; + } + s+=''; + } + s+="
                           
                          "; + doh.debug(s); + + var args={ saturation:20, num:32, cache:false }; + Theme.defineColors(args); + var a=blue.colors; + var s=""; + for(var i=0; i0) s+=""; + s+=""; + } + s+=''; + } + s+="
                           
                          "; + doh.debug(s); + + var args={ low:10, high:90, num:32, cache: false }; + Theme.defineColors(args); + var a=blue.colors; + var s=""; + for(var i=0; i0) s+=""; + s+=""; + } + s+=''; + } + s+="
                           
                          "; + doh.debug(s); + } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/charting.js b/js/dojo-release-1.7.2-src/dojox/charting/tests/charting.js new file mode 100644 index 0000000..f9cff0a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/charting.js @@ -0,0 +1,7 @@ +dojo.provide("dojox.charting.tests.charting"); + +try{ + dojo.require("dojox.charting.tests.Theme"); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/data/goog_prices.csv b/js/dojo-release-1.7.2-src/dojox/charting/tests/data/goog_prices.csv new file mode 100644 index 0000000..901a6d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/data/goog_prices.csv @@ -0,0 +1,796 @@ +Date,Open,High,Low,Close,Volume,Adj Close +2008-02-29,471.87,479.74,464.65,471.18,9425400,471.18 +2008-02-28,470.50,479.09,467.36,475.39,6586900,475.39 +2008-02-27,460.13,475.49,459.64,472.86,10121900,472.86 +2008-02-26,461.20,466.47,446.85,464.19,23287300,464.19 +2008-02-25,505.95,506.50,485.74,486.44,8350800,486.44 +2008-02-22,502.06,509.00,497.55,507.80,5515900,507.80 +2008-02-21,512.85,513.21,499.50,502.86,5677800,502.86 +2008-02-20,503.51,511.01,498.82,509.00,6662200,509.00 +2008-02-19,534.94,535.06,506.50,508.95,6350400,508.95 +2008-02-15,528.31,532.66,524.33,529.64,5240100,529.64 +2008-02-14,538.35,541.04,531.00,532.25,6476700,532.25 +2008-02-13,522.50,534.99,518.69,534.62,6624700,534.62 +2008-02-12,523.39,530.60,513.03,518.09,6662300,518.09 +2008-02-11,520.52,523.71,513.40,521.16,5826000,521.16 +2008-02-08,509.41,517.73,508.70,516.69,6828900,516.69 +2008-02-07,496.86,514.19,494.76,504.95,7928900,504.95 +2008-02-06,511.14,511.17,497.93,501.71,7636400,501.71 +2008-02-05,489.43,509.00,488.52,506.80,11203300,506.80 +2008-02-04,509.07,512.78,492.55,495.43,13157100,495.43 +2008-02-01,528.67,536.67,510.00,515.90,17600500,515.90 +2008-01-31,539.01,573.00,534.29,564.30,14871300,564.30 +2008-01-30,549.19,560.43,543.51,548.27,7939600,548.27 +2008-01-29,560.47,561.33,540.67,550.52,6283000,550.52 +2008-01-28,570.97,572.24,548.60,555.98,5816700,555.98 +2008-01-25,591.81,595.00,566.18,566.40,6966000,566.40 +2008-01-24,558.80,579.69,554.14,574.49,9400900,574.49 +2008-01-23,560.71,568.00,519.00,548.62,16965700,548.62 +2008-01-22,562.03,597.50,561.20,584.35,9501500,584.35 +2008-01-18,608.36,609.99,598.45,600.25,8539600,600.25 +2008-01-17,620.76,625.74,598.01,600.79,8216800,600.79 +2008-01-16,628.97,639.99,601.93,615.95,10560000,615.95 +2008-01-15,645.90,649.05,635.38,637.65,5568200,637.65 +2008-01-14,651.14,657.40,645.25,653.82,4447500,653.82 +2008-01-11,642.70,649.47,630.11,638.25,4977000,638.25 +2008-01-10,645.01,657.20,640.11,646.73,6334200,646.73 +2008-01-09,630.04,653.34,622.51,653.20,6739700,653.20 +2008-01-08,653.00,659.96,631.00,631.68,5339100,631.68 +2008-01-07,653.94,662.28,637.35,649.25,6403400,649.25 +2008-01-04,679.69,680.96,655.00,657.00,5359800,657.00 +2008-01-03,685.26,686.85,676.52,685.33,3252500,685.33 +2008-01-02,692.87,697.37,677.73,685.19,4306900,685.19 +2007-12-31,698.57,702.49,690.58,691.48,2376200,691.48 +2007-12-28,704.93,707.95,696.54,702.53,2562700,702.53 +2007-12-27,707.07,716.00,700.74,700.74,2942500,700.74 +2007-12-26,698.99,713.22,698.21,710.84,2530000,710.84 +2007-12-24,694.99,700.73,693.06,700.73,1628400,700.73 +2007-12-21,697.88,699.26,693.24,696.69,5382000,696.69 +2007-12-20,685.83,691.00,680.61,689.69,4422200,689.69 +2007-12-19,674.21,679.50,669.00,677.37,4421100,677.37 +2007-12-18,674.16,676.71,652.50,673.35,7166700,673.35 +2007-12-17,688.00,695.42,663.67,669.23,5486000,669.23 +2007-12-14,687.51,699.70,687.26,689.96,3673500,689.96 +2007-12-13,696.31,697.62,681.21,694.05,5040800,694.05 +2007-12-12,714.00,714.32,688.50,699.35,6159100,699.35 +2007-12-11,719.94,720.99,698.78,699.20,6139100,699.20 +2007-12-10,715.99,724.80,714.00,718.42,3856200,718.42 +2007-12-07,714.99,718.00,710.50,714.87,3852100,714.87 +2007-12-06,697.80,716.56,697.01,715.26,4909000,715.26 +2007-12-05,692.73,698.93,687.50,698.51,4209600,698.51 +2007-12-04,678.31,692.00,677.12,684.16,4231800,684.16 +2007-12-03,691.01,695.00,681.14,681.53,4325100,681.53 +2007-11-30,711.00,711.06,682.11,693.00,7895500,693.00 +2007-11-29,690.75,702.79,687.77,697.00,6208000,697.00 +2007-11-28,682.11,694.30,672.14,692.26,7916500,692.26 +2007-11-27,674.80,676.43,650.26,673.57,8904500,673.57 +2007-11-26,680.20,693.40,665.00,666.00,6790100,666.00 +2007-11-23,670.00,678.28,668.11,676.70,2738700,676.70 +2007-11-21,643.77,669.97,642.08,660.52,7013500,660.52 +2007-11-20,636.48,659.10,632.87,648.54,9840600,648.54 +2007-11-19,629.59,636.77,618.50,625.85,5527400,625.85 +2007-11-16,633.94,635.49,616.02,633.63,9042800,633.63 +2007-11-15,638.57,647.50,624.00,629.65,6967700,629.65 +2007-11-14,673.28,675.49,636.27,641.68,8094700,641.68 +2007-11-13,644.99,660.92,632.07,660.55,8426100,660.55 +2007-11-12,657.74,669.93,626.21,632.07,10227300,632.07 +2007-11-09,675.78,681.88,661.21,663.97,11388100,663.97 +2007-11-08,734.60,734.89,677.18,693.84,16512200,693.84 +2007-11-07,741.13,747.24,723.14,732.94,8252900,732.94 +2007-11-06,737.56,741.79,725.00,741.79,8436300,741.79 +2007-11-05,706.99,730.23,706.07,725.65,8883700,725.65 +2007-11-02,710.51,713.58,697.34,711.25,5841500,711.25 +2007-11-01,702.79,713.72,701.78,703.21,6527200,703.21 +2007-10-31,700.69,707.00,696.04,707.00,6876800,707.00 +2007-10-30,677.51,699.91,677.51,694.77,6900600,694.77 +2007-10-29,677.77,680.00,672.09,679.23,3066300,679.23 +2007-10-26,674.03,676.54,668.06,674.60,3353900,674.60 +2007-10-25,678.68,678.97,663.55,668.51,5795500,668.51 +2007-10-24,672.71,677.47,659.56,675.82,7404200,675.82 +2007-10-23,661.25,677.60,660.00,675.77,6793700,675.77 +2007-10-22,638.67,655.00,636.28,650.75,6664400,650.75 +2007-10-19,654.56,658.49,643.23,644.71,15789000,644.71 +2007-10-18,635.41,641.37,628.50,639.62,12289200,639.62 +2007-10-17,630.45,634.00,621.59,633.48,6030500,633.48 +2007-10-16,618.49,625.92,611.99,616.00,6025300,616.00 +2007-10-15,638.47,639.86,615.55,620.11,6943800,620.11 +2007-10-12,623.98,638.40,618.24,637.39,6823700,637.39 +2007-10-11,633.64,641.41,609.00,622.00,11799000,622.00 +2007-10-10,621.36,625.68,616.80,625.39,5385600,625.39 +2007-10-09,615.11,623.78,608.39,615.18,8767800,615.18 +2007-10-08,595.00,610.26,593.95,609.62,5028000,609.62 +2007-10-05,587.11,596.00,587.01,594.05,5068700,594.05 +2007-10-04,585.09,585.09,577.06,579.03,2986700,579.03 +2007-10-03,586.25,588.99,580.36,584.02,3879500,584.02 +2007-10-02,583.38,596.81,580.01,584.39,7067500,584.39 +2007-10-01,569.97,584.35,569.61,582.55,4711300,582.55 +2007-09-28,567.00,569.55,564.12,567.27,2639500,567.27 +2007-09-27,571.73,571.74,565.78,567.50,2056300,567.50 +2007-09-26,570.40,571.79,563.81,568.16,3346100,568.16 +2007-09-25,564.00,569.56,562.86,569.00,2730600,569.00 +2007-09-24,561.00,571.46,560.00,568.02,5297000,568.02 +2007-09-21,556.34,560.79,552.83,560.10,8011700,560.10 +2007-09-20,547.00,556.80,546.03,552.83,5525000,552.83 +2007-09-19,539.27,549.45,538.86,546.85,5526900,546.85 +2007-09-18,526.52,537.25,524.27,535.27,4215700,535.27 +2007-09-17,526.53,529.28,524.07,525.30,2197500,525.30 +2007-09-14,523.20,530.27,522.22,528.75,2764900,528.75 +2007-09-13,524.06,527.21,523.22,524.78,1891100,524.78 +2007-09-12,520.53,527.98,519.00,522.65,2986000,522.65 +2007-09-11,516.99,521.65,515.73,521.33,2703600,521.33 +2007-09-10,521.28,522.07,510.88,514.48,3225800,514.48 +2007-09-07,517.86,521.24,516.80,519.35,3663600,519.35 +2007-09-06,529.36,529.83,518.24,523.52,3625900,523.52 +2007-09-05,523.40,529.48,522.25,527.80,3312900,527.80 +2007-09-04,515.02,528.00,514.62,525.15,3693700,525.15 +2007-08-31,513.10,516.50,511.47,515.25,2977600,515.25 +2007-08-30,512.36,515.40,510.58,511.40,2651700,511.40 +2007-08-29,507.84,513.30,507.23,512.88,2549300,512.88 +2007-08-28,511.53,514.98,505.79,506.40,3273900,506.40 +2007-08-27,514.43,517.45,511.40,513.26,2325100,513.26 +2007-08-24,512.61,515.55,508.50,515.00,2472700,515.00 +2007-08-23,516.00,516.13,507.00,512.19,3076700,512.19 +2007-08-22,509.96,516.25,509.25,512.75,3252700,512.75 +2007-08-21,498.94,508.16,497.77,506.61,3610600,506.61 +2007-08-20,502.46,502.56,496.00,497.92,2697300,497.92 +2007-08-17,497.44,501.00,491.65,500.04,5479400,500.04 +2007-08-16,492.02,496.43,480.46,491.52,8645600,491.52 +2007-08-15,509.00,511.69,496.71,497.55,5409500,497.55 +2007-08-14,515.72,517.40,508.00,508.60,3633700,508.60 +2007-08-13,519.54,519.75,513.03,515.50,3179300,515.50 +2007-08-10,510.18,518.72,505.63,515.75,5875200,515.75 +2007-08-09,520.80,526.82,514.63,514.73,4846500,514.73 +2007-08-08,519.34,525.78,517.09,525.78,4068800,525.78 +2007-08-07,509.75,519.88,509.04,516.02,4264300,516.02 +2007-08-06,503.00,510.15,502.50,510.00,3651500,510.00 +2007-08-03,510.05,513.20,503.00,503.00,3176200,503.00 +2007-08-02,513.72,514.99,509.00,511.01,3154900,511.01 +2007-08-01,510.50,516.51,508.14,512.94,4421500,512.94 +2007-07-31,520.23,520.44,510.00,510.00,4270500,510.00 +2007-07-30,512.92,519.34,510.50,516.11,3963300,516.11 +2007-07-27,508.53,516.62,505.50,511.89,5509100,511.89 +2007-07-26,508.74,512.59,498.88,508.00,6883400,508.00 +2007-07-25,516.98,517.02,505.56,509.76,5545000,509.76 +2007-07-24,509.30,518.69,507.11,514.00,5572100,514.00 +2007-07-23,519.01,520.00,512.15,512.51,6356700,512.51 +2007-07-20,511.90,523.18,509.50,520.12,17772300,520.12 +2007-07-19,553.46,553.52,542.24,548.59,11127200,548.59 +2007-07-18,553.89,554.50,543.81,549.50,6080000,549.50 +2007-07-17,555.04,557.73,552.38,555.00,4328600,555.00 +2007-07-16,550.30,558.58,549.31,552.99,6599500,552.99 +2007-07-13,547.91,552.67,547.25,552.16,5237100,552.16 +2007-07-12,545.86,547.32,540.22,545.33,3441600,545.33 +2007-07-11,543.61,546.50,540.01,544.47,3309300,544.47 +2007-07-10,543.79,547.00,541.65,543.34,3856000,543.34 +2007-07-09,543.00,548.74,540.26,542.56,3729800,542.56 +2007-07-06,541.25,543.87,538.73,539.40,2747000,539.40 +2007-07-05,535.56,544.40,532.15,541.63,4942900,541.63 +2007-07-03,531.06,534.40,527.50,534.34,1871800,534.34 +2007-07-02,525.49,531.85,524.20,530.38,3487600,530.38 +2007-06-29,526.02,527.40,519.46,522.70,3880600,522.70 +2007-06-28,524.88,529.50,523.80,525.01,4168400,525.01 +2007-06-27,525.00,527.99,519.56,526.29,6123100,526.29 +2007-06-26,532.73,533.20,526.24,530.26,5689500,530.26 +2007-06-25,528.98,534.99,523.38,527.42,7925000,527.42 +2007-06-22,516.42,524.99,516.10,524.98,7203700,524.98 +2007-06-21,510.98,515.29,506.28,514.11,4409700,514.11 +2007-06-20,516.96,518.75,509.06,509.97,4338200,509.97 +2007-06-19,514.01,517.25,511.54,514.31,4355300,514.31 +2007-06-18,506.18,516.00,504.24,515.20,4835900,515.20 +2007-06-15,508.19,509.00,501.23,505.89,6174100,505.89 +2007-06-14,505.38,505.88,501.70,502.84,4621200,502.84 +2007-06-13,507.09,508.54,498.69,505.24,7034000,505.24 +2007-06-12,508.71,511.67,503.17,504.77,6419500,504.77 +2007-06-11,514.02,518.25,510.00,511.34,4647700,511.34 +2007-06-08,516.20,519.64,509.46,515.49,6358200,515.49 +2007-06-07,519.75,526.50,512.51,515.06,10630500,515.06 +2007-06-06,516.75,520.78,515.26,518.25,7886700,518.25 +2007-06-05,509.75,519.00,506.61,518.84,10447100,518.84 +2007-06-04,497.91,510.51,497.59,507.07,7101000,507.07 +2007-06-01,501.00,505.02,497.93,500.40,4799000,500.40 +2007-05-31,500.56,508.78,497.06,497.91,8924300,497.91 +2007-05-30,484.50,498.84,483.00,498.60,7245800,498.60 +2007-05-29,485.00,491.80,484.00,487.11,5218000,487.11 +2007-05-25,479.70,484.95,477.27,483.52,5348500,483.52 +2007-05-24,475.15,479.20,471.50,474.33,4173600,474.33 +2007-05-23,480.82,483.41,473.75,473.97,5060200,473.97 +2007-05-22,473.00,479.01,473.00,475.86,3839000,475.86 +2007-05-21,469.53,479.20,466.72,470.60,6159300,470.60 +2007-05-18,472.03,472.70,469.75,470.32,3695900,470.32 +2007-05-17,472.46,475.22,470.81,470.96,4660600,470.96 +2007-05-16,462.00,473.14,459.02,472.61,6554200,472.61 +2007-05-15,461.96,462.54,457.41,458.00,4119000,458.00 +2007-05-14,465.48,467.51,460.00,461.78,3872700,461.78 +2007-05-11,461.83,467.00,461.00,466.74,2944100,466.74 +2007-05-10,467.04,469.49,461.02,461.47,3686300,461.47 +2007-05-09,466.15,471.73,463.88,469.25,3889900,469.25 +2007-05-08,466.13,468.17,464.73,466.81,2905100,466.81 +2007-05-07,472.14,472.82,466.47,467.27,3020100,467.27 +2007-05-04,470.12,474.84,465.88,471.12,3950000,471.12 +2007-05-03,466.22,474.07,465.29,473.23,3594200,473.23 +2007-05-02,468.65,471.08,465.73,465.78,3062700,465.78 +2007-05-01,472.19,472.81,464.17,469.00,3658200,469.00 +2007-04-30,479.15,481.35,471.38,471.38,3641200,471.38 +2007-04-27,480.07,482.40,478.33,479.01,2925700,479.01 +2007-04-26,478.10,484.45,477.11,481.18,4124900,481.18 +2007-04-25,480.00,481.37,476.11,477.99,3966800,477.99 +2007-04-24,478.61,479.98,475.55,477.53,3694700,477.53 +2007-04-23,480.10,485.00,478.26,479.08,5674600,479.08 +2007-04-20,490.52,492.50,482.02,482.48,12161500,482.48 +2007-04-19,474.50,481.95,469.59,471.65,11009600,471.65 +2007-04-18,471.26,479.90,469.53,476.01,5670500,476.01 +2007-04-17,473.80,476.39,471.60,472.80,3210100,472.80 +2007-04-16,468.46,476.99,468.15,474.27,5077900,474.27 +2007-04-13,468.45,468.77,463.36,466.29,2794800,466.29 +2007-04-12,464.00,468.00,462.24,467.39,2707900,467.39 +2007-04-11,466.06,469.40,462.61,464.53,3812000,464.53 +2007-04-10,467.09,470.79,465.16,466.50,2979300,466.50 +2007-04-09,472.98,473.00,465.59,468.21,3062100,468.21 +2007-04-05,471.30,472.09,469.62,471.51,2715800,471.51 +2007-04-04,472.14,473.00,469.58,471.02,3778800,471.02 +2007-04-03,464.05,474.25,464.00,472.60,6501800,472.60 +2007-04-02,457.76,458.53,452.12,458.53,3448500,458.53 +2007-03-30,462.10,463.40,456.14,458.16,3380200,458.16 +2007-03-29,464.55,466.00,455.00,460.92,3988500,460.92 +2007-03-28,461.87,465.44,460.15,461.88,4591600,461.88 +2007-03-27,463.55,465.23,460.34,463.62,3741200,463.62 +2007-03-26,460.55,465.00,455.62,465.00,4710300,465.00 +2007-03-23,461.45,463.39,457.08,461.83,4111300,461.83 +2007-03-22,455.61,462.17,452.53,462.04,5680700,462.04 +2007-03-21,445.30,456.57,445.21,456.55,5798300,456.55 +2007-03-20,445.79,447.60,443.60,445.28,3421500,445.28 +2007-03-19,443.25,448.50,440.63,447.23,5197700,447.23 +2007-03-16,445.65,446.70,439.89,440.85,5659100,440.85 +2007-03-15,447.86,449.82,443.94,446.19,3944200,446.19 +2007-03-14,443.23,448.66,439.00,448.00,8016900,448.00 +2007-03-13,450.11,451.93,442.83,443.03,6377300,443.03 +2007-03-12,452.57,455.25,451.11,454.75,3465400,454.75 +2007-03-09,458.00,458.40,450.10,452.96,4977700,452.96 +2007-03-08,459.22,465.50,454.10,454.72,5362800,454.72 +2007-03-07,462.69,463.14,454.29,455.64,6534100,455.64 +2007-03-06,447.47,459.00,447.38,457.55,7533700,457.55 +2007-03-05,437.02,445.50,437.00,440.95,6355100,440.95 +2007-03-02,445.11,448.70,438.68,438.68,6583600,438.68 +2007-03-01,442.67,452.42,440.00,448.23,8685200,448.23 +2007-02-28,450.41,453.67,443.04,449.45,8032300,449.45 +2007-02-27,455.00,459.80,447.17,448.77,9312800,448.77 +2007-02-26,472.83,475.25,463.75,464.93,3969900,464.93 +2007-02-23,475.75,476.95,467.80,470.62,3882600,470.62 +2007-02-22,478.69,484.24,474.39,475.85,5743900,475.85 +2007-02-21,469.84,478.68,467.74,475.86,5640600,475.86 +2007-02-20,468.47,472.75,464.71,472.10,4067600,472.10 +2007-02-16,462.80,470.15,462.06,469.94,6177000,469.94 +2007-02-15,466.00,466.13,460.72,461.47,4042400,461.47 +2007-02-14,460.00,469.13,459.22,465.93,5698800,465.93 +2007-02-13,459.15,462.78,457.26,459.10,4062600,459.10 +2007-02-12,460.68,462.39,455.02,458.29,5754500,458.29 +2007-02-09,471.65,472.68,461.50,461.89,4858600,461.89 +2007-02-08,468.05,473.75,465.15,471.03,4076700,471.03 +2007-02-07,473.82,474.35,468.78,470.01,4119800,470.01 +2007-02-06,468.10,473.30,467.26,471.48,5321900,471.48 +2007-02-05,477.50,478.00,466.19,467.16,7206900,467.16 +2007-02-02,482.61,485.00,477.81,481.50,6286500,481.50 +2007-02-01,506.00,506.01,481.53,481.75,15658700,481.75 +2007-01-31,496.49,505.00,495.51,501.50,12206100,501.50 +2007-01-30,494.00,498.00,491.22,494.32,4180500,494.32 +2007-01-29,498.00,498.75,490.50,492.47,4775700,492.47 +2007-01-26,490.93,497.90,487.03,495.84,5496500,495.84 +2007-01-25,501.00,504.50,485.66,488.09,6368500,488.09 +2007-01-24,484.45,499.54,483.29,499.07,6059300,499.07 +2007-01-23,480.79,484.75,477.29,479.05,4665500,479.05 +2007-01-22,492.50,492.65,478.50,480.84,5404300,480.84 +2007-01-19,487.98,490.76,486.74,489.75,4978300,489.75 +2007-01-18,494.52,496.48,487.43,487.83,5932000,487.83 +2007-01-17,503.39,507.77,494.38,497.28,6699100,497.28 +2007-01-16,507.55,513.00,503.30,504.28,7568900,504.28 +2007-01-12,501.99,505.00,500.00,505.00,4473700,505.00 +2007-01-11,497.20,501.75,496.18,499.72,7208200,499.72 +2007-01-10,484.43,493.55,482.04,489.46,5968500,489.46 +2007-01-09,485.45,488.25,481.20,485.50,5381400,485.50 +2007-01-08,487.69,489.87,482.20,483.58,4754400,483.58 +2007-01-05,482.50,487.50,478.11,487.19,6872100,487.19 +2007-01-04,469.00,483.95,468.35,483.26,7887600,483.26 +2007-01-03,466.00,476.66,461.11,467.59,7706500,467.59 +2006-12-29,462.10,464.47,459.86,460.48,2559200,460.48 +2006-12-28,467.12,468.58,462.25,462.56,3116200,462.56 +2006-12-27,460.00,468.08,459.10,468.03,4231500,468.03 +2006-12-26,456.52,459.47,454.59,457.53,2074300,457.53 +2006-12-22,457.50,458.64,452.73,455.58,3988300,455.58 +2006-12-21,464.18,465.25,452.34,456.20,6953300,456.20 +2006-12-20,470.00,471.50,462.33,462.90,4367800,462.90 +2006-12-19,461.72,469.31,458.50,468.63,6587000,468.63 +2006-12-18,482.51,482.74,460.72,462.80,8016600,462.80 +2006-12-15,482.64,484.11,479.84,480.30,5190800,480.30 +2006-12-14,480.25,483.75,477.26,482.12,4748900,482.12 +2006-12-13,484.69,485.50,477.02,478.99,4662100,478.99 +2006-12-12,483.85,486.36,480.28,481.78,4181000,481.78 +2006-12-11,484.92,488.90,483.80,483.93,3263400,483.93 +2006-12-08,481.94,488.60,480.00,484.11,3974900,484.11 +2006-12-07,490.23,491.80,482.42,482.64,4664300,482.64 +2006-12-06,486.96,492.40,484.52,488.71,4450300,488.71 +2006-12-05,487.40,489.44,484.89,487.00,4103000,487.00 +2006-12-04,483.00,487.43,479.35,484.85,4899900,484.85 +2006-12-01,485.98,488.39,478.50,480.80,5631400,480.80 +2006-11-30,484.19,490.40,481.55,484.81,5577500,484.81 +2006-11-29,494.24,494.74,482.25,484.65,6315300,484.65 +2006-11-28,481.13,489.86,477.03,489.50,7797600,489.50 +2006-11-27,501.37,501.78,484.75,484.75,7324700,484.75 +2006-11-24,504.50,507.50,504.00,505.00,1732700,505.00 +2006-11-22,510.97,513.00,505.78,508.01,4500700,508.01 +2006-11-21,496.54,510.00,495.83,509.65,8427500,509.65 +2006-11-20,498.40,498.40,492.65,495.05,5124500,495.05 +2006-11-17,493.25,499.66,493.00,498.79,5511000,498.79 +2006-11-16,495.00,497.68,492.56,495.90,5092600,495.90 +2006-11-15,493.43,499.85,491.93,491.93,8370700,491.93 +2006-11-14,480.70,489.95,480.50,489.30,7223400,489.30 +2006-11-13,474.90,481.17,474.14,481.03,4341900,481.03 +2006-11-10,473.78,474.72,470.29,473.55,2796700,473.55 +2006-11-09,476.50,479.49,471.86,472.63,4879200,472.63 +2006-11-08,470.35,481.74,468.60,475.00,7965000,475.00 +2006-11-07,476.95,479.02,471.77,472.57,4897100,472.57 +2006-11-06,473.77,479.66,472.33,476.95,4991500,476.95 +2006-11-03,472.23,473.75,465.06,471.80,4907700,471.80 +2006-11-02,467.50,473.73,466.38,469.91,5236700,469.91 +2006-11-01,478.76,479.13,465.26,467.50,5426300,467.50 +2006-10-31,478.06,482.16,473.84,476.39,6285400,476.39 +2006-10-30,474.82,480.46,470.01,476.57,6563100,476.57 +2006-10-27,483.90,485.24,472.49,475.20,6604000,475.20 +2006-10-26,487.68,491.96,484.20,485.10,7031700,485.10 +2006-10-25,477.49,488.50,475.11,486.60,9187500,486.60 +2006-10-24,476.28,477.86,471.41,473.31,8660200,473.31 +2006-10-23,462.28,484.64,460.37,480.78,15104500,480.78 +2006-10-20,458.99,460.10,453.59,459.67,11647900,459.67 +2006-10-19,420.23,429.50,419.57,426.06,11503500,426.06 +2006-10-18,422.99,424.75,417.50,419.31,6017300,419.31 +2006-10-17,420.30,423.75,416.70,420.64,5211000,420.64 +2006-10-16,427.70,429.20,421.34,421.75,4319400,421.75 +2006-10-13,427.76,429.50,425.56,427.30,3622500,427.30 +2006-10-12,428.56,429.68,424.00,427.44,4844000,427.44 +2006-10-11,425.02,429.91,423.76,426.50,5635400,426.50 +2006-10-10,431.56,437.85,422.39,426.65,9788600,426.65 +2006-10-09,424.80,431.95,423.42,429.00,7583300,429.00 +2006-10-06,410.22,421.91,409.75,420.50,7336500,420.50 +2006-10-05,414.70,418.24,410.86,411.81,5789800,411.81 +2006-10-04,404.97,415.77,403.05,415.70,6661800,415.70 +2006-10-03,401.29,406.46,398.19,404.04,5464700,404.04 +2006-10-02,401.90,406.00,400.80,401.44,3651900,401.44 +2006-09-29,405.13,405.62,401.41,401.90,3310900,401.90 +2006-09-28,404.08,406.98,400.54,403.58,5107400,403.58 +2006-09-27,406.30,411.22,402.37,402.92,5876700,402.92 +2006-09-26,405.50,407.68,401.77,406.87,5289400,406.87 +2006-09-25,405.58,409.45,402.50,403.98,5737300,403.98 +2006-09-22,404.98,407.45,401.36,403.78,4649600,403.78 +2006-09-21,400.30,408.45,399.86,406.85,10692100,406.85 +2006-09-20,407.10,407.39,394.62,397.00,9147800,397.00 +2006-09-19,415.46,415.49,392.74,403.81,14292900,403.81 +2006-09-18,410.00,418.69,409.47,414.69,7106700,414.69 +2006-09-15,407.48,410.05,406.74,409.88,7838200,409.88 +2006-09-14,404.30,406.28,401.93,403.98,5366100,403.98 +2006-09-13,395.15,406.76,395.10,406.57,9768200,406.57 +2006-09-12,385.00,392.73,384.88,391.90,5442200,391.90 +2006-09-11,378.26,384.69,377.77,384.09,4529200,384.09 +2006-09-08,376.72,380.79,376.72,377.85,3083400,377.85 +2006-09-07,379.39,381.75,377.40,378.49,3842000,378.49 +2006-09-06,382.10,383.19,379.66,380.14,3724100,380.14 +2006-09-05,379.87,385.40,377.44,384.36,4074300,384.36 +2006-09-01,380.99,381.28,377.19,378.60,2672900,378.60 +2006-08-31,381.49,382.15,378.20,378.53,2959900,378.53 +2006-08-30,379.21,384.65,378.51,380.75,4044400,380.75 +2006-08-29,380.78,382.32,377.20,378.95,4460000,378.95 +2006-08-28,375.61,380.95,375.00,380.95,4164000,380.95 +2006-08-25,373.08,375.32,372.50,373.26,2466700,373.26 +2006-08-24,374.44,376.40,372.26,373.73,3482500,373.73 +2006-08-23,377.64,378.27,372.66,373.43,3642300,373.43 +2006-08-22,377.73,379.26,374.84,378.29,4164100,378.29 +2006-08-21,378.10,379.00,375.22,377.30,4023300,377.30 +2006-08-18,386.31,387.09,380.75,383.36,4952200,383.36 +2006-08-17,386.39,390.00,383.92,385.80,5080200,385.80 +2006-08-16,383.48,388.45,382.12,387.72,5853200,387.72 +2006-08-15,374.11,381.67,372.60,380.97,6698200,380.97 +2006-08-14,371.50,375.13,368.67,369.43,4968300,369.43 +2006-08-11,374.40,375.28,368.00,368.50,3766500,368.50 +2006-08-10,373.88,377.67,372.46,374.20,4261900,374.20 +2006-08-09,382.80,384.68,376.36,376.94,4311000,376.94 +2006-08-08,382.82,384.50,379.09,381.00,5743200,381.00 +2006-08-07,371.50,379.73,371.15,377.95,3946900,377.95 +2006-08-04,379.56,380.68,371.75,373.85,5095200,373.85 +2006-08-03,364.98,377.91,363.36,375.39,6327000,375.39 +2006-08-02,375.60,377.17,365.20,367.23,7097800,367.23 +2006-08-01,385.11,385.77,375.51,375.51,5463200,375.51 +2006-07-31,388.00,389.17,383.31,386.60,4595300,386.60 +2006-07-28,382.00,389.56,381.73,388.12,4083600,388.12 +2006-07-27,387.37,387.49,377.95,382.40,5641100,382.40 +2006-07-26,388.20,391.91,383.00,385.50,5531900,385.50 +2006-07-25,385.02,391.31,383.80,389.36,5761100,389.36 +2006-07-24,392.82,393.89,381.21,390.90,8086100,390.90 +2006-07-21,386.14,391.75,377.69,390.11,11754600,390.11 +2006-07-20,404.28,404.44,385.66,387.12,12538700,387.12 +2006-07-19,395.01,401.14,394.66,399.00,8518500,399.00 +2006-07-18,409.75,410.57,397.74,403.05,8536800,403.05 +2006-07-17,404.63,411.00,403.72,407.89,5811900,407.89 +2006-07-14,410.33,411.49,398.61,403.50,7552100,403.50 +2006-07-13,414.00,418.34,406.83,408.83,6924500,408.83 +2006-07-12,422.09,422.74,416.73,417.25,4906700,417.25 +2006-07-11,418.51,425.05,413.03,424.56,5971300,424.56 +2006-07-10,423.44,425.23,416.38,418.20,4436400,418.20 +2006-07-07,426.05,427.89,415.88,420.45,6041900,420.45 +2006-07-06,423.38,425.38,421.98,423.19,3687100,423.19 +2006-07-05,421.52,422.80,415.64,421.46,4985600,421.46 +2006-07-03,420.04,423.77,419.45,423.20,2156700,423.20 +2006-06-30,415.60,419.33,412.33,419.33,6258000,419.33 +2006-06-29,407.99,418.20,405.82,417.81,6658200,417.81 +2006-06-28,404.01,406.48,401.13,406.11,3710500,406.11 +2006-06-27,405.71,408.00,401.01,402.32,4107100,402.32 +2006-06-26,406.75,408.30,403.25,404.22,3551200,404.22 +2006-06-23,402.76,409.75,400.74,404.86,5314800,404.86 +2006-06-22,401.58,406.00,388.00,399.95,5911900,399.95 +2006-06-21,391.06,404.00,389.75,402.13,8744400,402.13 +2006-06-20,388.03,391.87,386.51,387.17,4039900,387.17 +2006-06-19,390.85,394.80,386.98,388.14,7633100,388.14 +2006-06-16,389.10,390.93,388.00,390.70,5304600,390.70 +2006-06-15,386.62,392.25,383.00,391.00,6785700,391.00 +2006-06-14,389.83,391.10,378.52,384.39,7772000,384.39 +2006-06-13,380.90,387.00,378.12,386.52,7659100,386.52 +2006-06-12,388.34,390.49,381.00,381.54,5019100,381.54 +2006-06-09,392.19,395.43,385.35,386.57,6157500,386.57 +2006-06-08,387.75,394.27,378.59,393.30,10359500,393.30 +2006-06-07,393.24,394.86,386.50,386.51,8911300,386.51 +2006-06-06,376.58,390.00,376.30,389.99,10259800,389.99 +2006-06-05,376.18,381.45,374.15,374.44,5558500,374.44 +2006-06-02,386.84,387.08,377.45,379.44,6386400,379.44 +2006-06-01,373.54,382.99,371.60,382.62,6278000,382.62 +2006-05-31,373.80,378.25,366.78,371.82,7981300,371.82 +2006-05-30,378.28,381.00,371.45,371.94,4316000,371.94 +2006-05-26,384.55,385.88,380.03,381.35,3667000,381.35 +2006-05-25,379.08,383.00,372.31,382.99,8194600,382.99 +2006-05-24,377.35,383.44,371.61,381.25,9553800,381.25 +2006-05-23,374.21,383.88,373.56,375.58,8983000,375.58 +2006-05-22,367.85,373.03,365.25,370.95,8604400,370.95 +2006-05-19,373.28,374.50,360.57,370.02,11398200,370.02 +2006-05-18,378.78,381.81,370.71,370.99,5835000,370.99 +2006-05-17,370.61,379.84,370.22,374.50,10643800,374.50 +2006-05-16,375.99,376.86,369.89,371.30,6491100,371.30 +2006-05-15,375.93,380.15,368.25,376.20,8590100,376.20 +2006-05-12,383.54,384.87,373.55,374.13,10087600,374.13 +2006-05-11,403.42,404.71,384.98,387.00,8892800,387.00 +2006-05-10,408.31,411.71,401.86,402.98,6187200,402.98 +2006-05-09,395.70,409.00,393.75,408.80,9140600,408.80 +2006-05-08,395.11,397.12,390.05,394.78,5118600,394.78 +2006-05-05,397.60,400.68,391.78,394.30,6065000,394.30 +2006-05-04,395.03,398.87,392.21,394.75,4652000,394.75 +2006-05-03,396.35,401.50,390.88,394.17,8072200,394.17 +2006-05-02,401.08,402.49,388.40,394.80,13104300,394.80 +2006-05-01,418.47,419.44,398.55,398.90,10361200,398.90 +2006-04-28,418.63,425.73,416.30,417.94,7421300,417.94 +2006-04-27,422.91,426.91,419.39,420.03,8337900,420.03 +2006-04-26,427.74,430.04,423.53,425.97,7277800,425.97 +2006-04-25,439.63,441.04,426.00,427.16,9569000,427.16 +2006-04-24,439.40,444.70,436.52,440.50,8836400,440.50 +2006-04-21,448.90,450.72,436.17,437.10,22551300,437.10 +2006-04-20,411.01,416.00,408.20,415.00,12271500,415.00 +2006-04-19,412.57,413.64,406.73,410.50,6781700,410.50 +2006-04-18,407.93,409.83,401.50,404.24,8137600,404.24 +2006-04-17,403.45,412.50,400.84,406.82,8259500,406.82 +2006-04-13,408.63,409.76,400.50,402.16,6552900,402.16 +2006-04-12,409.00,411.33,405.19,408.95,6017000,408.95 +2006-04-11,416.42,419.10,406.22,409.66,11107200,409.66 +2006-04-10,407.08,417.17,405.25,416.38,9320100,416.38 +2006-04-07,412.41,412.85,404.02,406.16,7025900,406.16 +2006-04-06,406.49,413.89,405.43,411.18,8598500,411.18 +2006-04-05,408.20,414.57,402.82,407.99,13410500,407.99 +2006-04-04,389.90,404.90,388.14,404.34,15715700,404.34 +2006-04-03,389.53,392.47,387.93,389.70,8122700,389.70 +2006-03-31,388.74,391.87,384.03,390.00,36521400,390.00 +2006-03-30,389.19,393.50,383.61,388.44,14711700,388.44 +2006-03-29,379.94,399.00,379.51,394.98,19027500,394.98 +2006-03-28,371.71,377.86,371.17,377.20,8945800,377.20 +2006-03-27,367.09,371.71,365.00,369.69,7023700,369.69 +2006-03-24,368.62,370.09,362.51,365.80,15180600,365.80 +2006-03-23,342.35,345.75,340.20,341.89,7434700,341.89 +2006-03-22,339.75,344.10,337.50,340.22,7596000,340.22 +2006-03-21,350.01,351.66,339.08,339.92,9831100,339.92 +2006-03-20,342.34,350.09,341.54,348.19,10407600,348.19 +2006-03-17,338.80,341.78,334.93,339.79,8551700,339.79 +2006-03-16,348.61,348.75,337.90,338.77,10016700,338.77 +2006-03-15,350.77,352.30,340.53,344.50,12768800,344.50 +2006-03-14,337.14,352.37,332.62,351.16,18450700,351.16 +2006-03-13,340.93,346.10,335.45,337.06,13642400,337.06 +2006-03-10,343.50,344.50,331.55,337.50,19325600,337.50 +2006-03-09,355.39,358.53,341.50,343.00,13910400,343.00 +2006-03-08,353.93,360.03,350.54,353.88,11745600,353.88 +2006-03-07,365.02,368.45,358.15,364.45,10378800,364.45 +2006-03-06,380.91,383.40,367.14,368.10,8939700,368.10 +2006-03-03,384.30,387.24,375.76,378.18,11962000,378.18 +2006-03-02,364.28,381.10,362.20,376.45,18330300,376.45 +2006-03-01,368.56,369.45,361.30,364.80,12061200,364.80 +2006-02-28,393.20,397.54,338.51,362.62,39437600,362.62 +2006-02-27,381.27,391.70,380.28,390.38,10212200,390.38 +2006-02-24,377.30,380.07,373.49,377.40,6484300,377.40 +2006-02-23,365.61,381.24,365.39,378.07,12551600,378.07 +2006-02-22,367.15,368.95,363.86,365.49,6476200,365.49 +2006-02-21,366.44,373.54,365.11,366.59,8686000,366.59 +2006-02-17,369.86,372.14,363.62,368.75,14320200,368.75 +2006-02-16,345.67,367.00,344.49,366.46,21315500,366.46 +2006-02-15,341.27,346.00,337.83,342.38,12947000,342.38 +2006-02-14,345.33,351.69,342.40,343.32,14654000,343.32 +2006-02-13,346.64,350.60,341.89,345.70,19717800,345.70 +2006-02-10,361.95,364.50,353.14,362.61,15223500,362.61 +2006-02-09,371.20,374.40,356.11,358.77,11912400,358.77 +2006-02-08,368.48,370.69,354.67,369.08,20804100,369.08 +2006-02-07,382.99,383.70,363.35,367.92,16630200,367.92 +2006-02-06,385.31,389.90,379.56,385.10,8940400,385.10 +2006-02-03,393.62,393.90,372.57,381.55,18281800,381.55 +2006-02-02,403.82,406.50,395.98,396.04,11807700,396.04 +2006-02-01,389.03,402.00,387.52,401.78,27122500,401.78 +2006-01-31,430.57,439.60,423.97,432.66,22066000,432.66 +2006-01-30,429.23,433.28,425.00,426.82,8588900,426.82 +2006-01-27,435.00,438.22,428.98,433.49,8452200,433.49 +2006-01-26,439.54,439.99,423.56,434.27,12926100,434.27 +2006-01-25,451.26,454.23,429.22,433.00,18739800,433.00 +2006-01-24,436.03,444.95,434.48,443.03,15464600,443.03 +2006-01-23,407.38,428.39,405.73,427.50,22741400,427.50 +2006-01-20,438.70,440.03,394.74,399.46,41116700,399.46 +2006-01-19,451.17,453.49,433.00,436.45,14537300,436.45 +2006-01-18,447.30,457.36,443.25,444.91,20485700,444.91 +2006-01-17,463.06,469.90,462.53,467.11,8270300,467.11 +2006-01-13,464.31,466.89,461.61,466.25,7656600,466.25 +2006-01-12,473.72,474.99,461.50,463.63,10125300,463.63 +2006-01-11,471.27,475.11,469.18,471.63,9007400,471.63 +2006-01-10,464.42,470.25,462.04,469.76,9097100,469.76 +2006-01-09,466.41,473.40,460.94,466.90,12791900,466.90 +2006-01-06,456.87,470.50,453.24,465.66,17756900,465.66 +2006-01-05,446.00,451.55,441.50,451.24,10808300,451.24 +2006-01-04,443.90,448.96,439.75,445.24,15286400,445.24 +2006-01-03,422.52,435.67,418.22,435.23,13121200,435.23 +2005-12-30,417.27,418.21,413.74,414.86,7587100,414.86 +2005-12-29,427.98,428.73,419.17,420.15,6945800,420.15 +2005-12-28,424.34,427.78,421.26,426.69,7117900,426.69 +2005-12-27,431.86,431.86,422.76,424.64,6702800,424.64 +2005-12-23,432.15,432.50,428.78,430.93,4595100,430.93 +2005-12-22,431.77,432.86,425.93,432.04,7546600,432.04 +2005-12-21,433.55,436.86,420.71,426.33,11221900,426.33 +2005-12-20,427.86,432.20,424.67,429.74,10084700,429.74 +2005-12-19,432.20,446.21,420.11,424.60,21936800,424.60 +2005-12-16,425.34,432.50,422.75,430.15,16330500,430.15 +2005-12-15,419.11,423.14,416.50,422.55,6045800,422.55 +2005-12-14,417.04,419.73,415.49,418.96,6630400,418.96 +2005-12-13,412.50,418.00,411.64,417.49,8157000,417.49 +2005-12-12,414.63,415.21,409.95,412.61,6950100,412.61 +2005-12-09,415.00,415.78,408.56,409.20,7643400,409.20 +2005-12-08,405.30,410.65,402.64,410.65,8910100,410.65 +2005-12-07,406.16,406.70,399.01,404.22,11665900,404.22 +2005-12-06,408.70,416.41,401.70,404.54,15114700,404.54 +2005-12-05,417.00,417.50,404.28,405.85,10289400,405.85 +2005-12-02,416.94,419.53,413.86,417.70,7543500,417.70 +2005-12-01,409.20,415.44,408.29,414.09,9744900,414.09 +2005-11-30,404.26,408.45,395.56,404.91,15596600,404.91 +2005-11-29,424.46,426.40,402.14,403.54,21495800,403.54 +2005-11-28,429.82,431.24,422.44,423.48,11008400,423.48 +2005-11-25,425.78,428.75,425.30,428.62,4840100,428.62 +2005-11-23,417.04,424.72,415.78,422.86,10085000,422.86 +2005-11-22,408.65,417.31,406.23,416.47,9596000,416.47 +2005-11-21,399.17,409.98,393.49,409.36,10335100,409.36 +2005-11-18,403.49,404.50,399.85,400.21,7025700,400.21 +2005-11-17,401.80,403.81,399.53,403.45,9212200,403.45 +2005-11-16,396.20,398.85,394.11,398.15,8695200,398.15 +2005-11-15,394.38,397.00,390.95,392.80,8624900,392.80 +2005-11-14,392.12,398.22,391.53,396.97,7807900,396.97 +2005-11-11,395.12,396.90,388.85,390.40,7063900,390.40 +2005-11-10,378.36,391.35,377.43,391.10,9128700,391.10 +2005-11-09,386.67,388.29,378.03,379.15,10466900,379.15 +2005-11-08,394.25,395.59,388.58,389.90,7897500,389.90 +2005-11-07,395.10,397.47,392.15,395.03,9591500,395.03 +2005-11-04,389.98,391.79,385.45,390.43,8824900,390.43 +2005-11-03,382.41,386.58,381.38,385.95,7448400,385.95 +2005-11-02,381.70,385.00,377.17,379.68,10565400,379.68 +2005-11-01,371.86,383.90,369.01,379.38,16356100,379.38 +2005-10-31,360.24,374.75,359.51,372.14,14342900,372.14 +2005-10-28,355.27,358.95,355.02,358.17,5903500,358.17 +2005-10-27,356.60,357.09,351.68,353.06,5134400,353.06 +2005-10-26,346.28,356.00,346.19,355.44,8907500,355.44 +2005-10-25,345.78,347.40,342.86,346.91,6878300,346.91 +2005-10-24,343.37,349.30,342.19,348.65,9431700,348.65 +2005-10-21,345.80,346.43,333.00,339.90,22892400,339.90 +2005-10-20,309.99,311.13,301.21,303.20,13911700,303.20 +2005-10-19,304.00,309.87,303.96,308.70,7010700,308.70 +2005-10-18,304.96,307.96,302.74,303.28,7077800,303.28 +2005-10-17,297.50,305.20,294.56,305.00,7566700,305.00 +2005-10-14,299.90,300.23,292.54,296.14,8519100,296.14 +2005-10-13,302.00,302.00,290.68,297.44,10567700,297.44 +2005-10-12,305.20,307.19,299.00,300.97,9306200,300.97 +2005-10-11,310.61,312.65,304.86,306.10,8542600,306.10 +2005-10-10,313.31,314.82,309.15,310.65,5572200,310.65 +2005-10-07,314.79,316.67,310.54,312.99,6770300,312.99 +2005-10-06,314.14,314.48,310.09,312.75,7993800,312.75 +2005-10-05,312.69,314.90,308.00,310.71,8328400,310.71 +2005-10-04,319.95,321.28,310.74,311.00,9144300,311.00 +2005-10-03,313.63,320.11,312.79,318.68,9160300,318.68 +2005-09-30,314.22,317.50,312.29,316.46,9151300,316.46 +2005-09-29,306.68,310.72,306.08,309.62,5613800,309.62 +2005-09-28,314.22,315.10,305.60,306.00,7997400,306.00 +2005-09-27,314.95,318.41,313.38,313.94,6873100,313.94 +2005-09-26,319.50,320.95,312.56,314.28,9894400,314.28 +2005-09-23,313.00,317.21,312.59,315.36,8483800,315.36 +2005-09-22,311.50,319.22,310.17,311.37,13006400,311.37 +2005-09-21,308.41,313.76,305.96,311.90,10119700,311.90 +2005-09-20,306.15,311.30,305.23,307.91,9351000,307.91 +2005-09-19,301.00,306.00,300.71,303.79,5761900,303.79 +2005-09-16,304.02,304.50,299.87,300.20,7579800,300.20 +2005-09-15,299.52,306.75,297.91,302.62,15466200,302.62 +2005-09-14,308.73,313.28,300.30,303.00,11275800,303.00 +2005-09-13,309.00,315.53,306.17,311.68,10299900,311.68 +2005-09-12,301.75,311.42,301.00,309.74,10386500,309.74 +2005-09-09,297.28,299.10,296.56,299.09,4390500,299.09 +2005-09-08,294.83,299.28,293.36,295.39,6613300,295.39 +2005-09-07,285.89,295.50,285.28,294.87,7499500,294.87 +2005-09-06,289.00,289.39,286.80,287.11,4212300,287.11 +2005-09-02,286.51,289.99,286.44,288.45,3434500,288.45 +2005-09-01,285.91,287.50,285.00,286.25,2742100,286.25 +2005-08-31,288.23,288.50,284.36,286.00,5034000,286.00 +2005-08-30,287.39,289.51,285.88,287.27,4792000,287.27 +2005-08-29,282.24,289.12,282.24,288.45,5903000,288.45 +2005-08-26,283.48,285.02,282.66,283.58,3755300,283.58 +2005-08-25,282.55,284.00,279.97,282.59,4376600,282.59 +2005-08-24,277.57,284.75,276.45,282.57,8593100,282.57 +2005-08-23,276.16,279.74,274.12,279.58,5821700,279.58 +2005-08-22,281.24,281.47,273.35,274.01,6813000,274.01 +2005-08-19,280.99,281.45,279.62,280.00,5542900,280.00 +2005-08-18,275.91,280.50,275.00,279.99,11872800,279.99 +2005-08-17,285.51,286.57,284.00,285.10,3883300,285.10 +2005-08-16,284.88,287.79,283.34,285.65,7109200,285.65 +2005-08-15,289.80,292.77,283.77,284.00,8174700,284.00 +2005-08-12,283.36,290.20,281.64,289.72,6585900,289.72 +2005-08-11,285.89,286.58,280.62,284.05,7514900,284.05 +2005-08-10,291.30,292.33,284.88,285.68,6879000,285.68 +2005-08-09,291.96,292.68,288.51,291.57,5779300,291.57 +2005-08-08,293.60,295.65,290.49,291.25,4481800,291.25 +2005-08-05,297.50,298.51,291.31,292.35,5939700,292.35 +2005-08-04,295.55,299.00,295.25,297.73,5236500,297.73 +2005-08-03,298.00,299.72,295.60,297.30,5930600,297.30 +2005-08-02,291.60,299.52,291.12,299.19,7290200,299.19 +2005-08-01,288.12,292.50,288.10,291.61,5662400,291.61 +2005-07-29,292.14,292.84,286.99,287.76,8363300,287.76 +2005-07-28,297.41,297.41,293.28,293.50,5925600,293.50 +2005-07-27,297.74,298.23,292.40,296.93,7217900,296.93 +2005-07-26,295.01,298.00,292.09,296.09,9816900,296.09 +2005-07-25,302.39,303.29,294.96,295.85,9658800,295.85 +2005-07-22,306.37,309.25,296.33,302.40,23386800,302.40 +2005-07-21,314.05,317.80,311.21,313.94,19789400,313.94 +2005-07-20,305.57,312.61,301.80,312.00,14310400,312.00 +2005-07-19,302.10,310.35,301.80,309.90,12621400,309.90 +2005-07-18,300.00,301.90,297.75,299.54,6207800,299.54 +2005-07-15,301.24,303.40,299.78,301.19,8438400,301.19 +2005-07-14,305.34,306.75,300.07,300.89,10667700,300.89 +2005-07-13,292.51,299.24,292.10,298.86,11437900,298.86 +2005-07-12,293.39,294.40,290.93,291.78,5864900,291.78 +2005-07-11,296.40,296.60,291.02,293.35,8390300,293.35 +2005-07-08,296.25,297.50,294.05,296.23,7457600,296.23 +2005-07-07,289.39,295.80,288.51,295.54,10672100,295.54 +2005-07-06,297.30,297.60,291.38,291.52,8000300,291.52 +2005-07-05,292.10,295.98,290.23,295.71,7494000,295.71 +2005-07-01,295.04,296.24,289.22,291.25,9227600,291.25 +2005-06-30,294.34,298.93,291.04,294.15,15094400,294.15 +2005-06-29,302.50,304.38,292.15,292.72,18298700,292.72 +2005-06-28,306.28,309.25,302.00,302.00,19036500,302.00 +2005-06-27,298.90,304.47,293.86,304.10,17802900,304.10 +2005-06-24,290.90,298.00,289.58,297.25,17771200,297.25 +2005-06-23,288.00,294.81,286.50,289.71,14056400,289.71 +2005-06-22,289.67,292.32,288.67,289.30,10474000,289.30 +2005-06-21,288.07,290.30,284.97,287.84,15132300,287.84 +2005-06-20,276.09,287.67,271.73,286.70,21024700,286.70 +2005-06-17,279.00,280.30,275.90,280.30,10434400,280.30 +2005-06-16,274.26,278.30,273.07,277.44,12462400,277.44 +2005-06-15,275.00,277.30,267.43,274.80,20883100,274.80 +2005-06-14,278.59,281.24,277.75,278.35,10091900,278.35 +2005-06-13,279.82,284.19,276.52,282.75,12803200,282.75 +2005-06-10,286.99,287.28,280.02,282.50,12696600,282.50 +2005-06-09,284.72,288.50,280.56,286.31,16441100,286.31 +2005-06-08,292.85,293.19,278.00,279.56,25700900,279.56 +2005-06-07,297.10,299.59,290.30,293.12,24323000,293.12 +2005-06-06,282.39,293.75,281.83,290.94,22525900,290.94 +2005-06-03,286.79,289.30,277.41,280.26,18782300,280.26 +2005-06-02,288.73,289.78,284.60,287.90,17974100,287.90 +2005-06-01,283.20,292.89,282.02,288.00,35191700,288.00 +2005-05-31,269.43,278.40,269.37,277.27,22236800,277.27 +2005-05-27,260.46,266.05,259.25,266.00,12184100,266.00 +2005-05-26,260.96,263.76,258.30,259.20,13546600,259.20 +2005-05-25,252.73,260.98,250.63,260.81,18057900,260.81 +2005-05-24,256.96,265.44,253.50,256.00,29043100,256.00 +2005-05-23,243.16,258.10,242.71,255.45,21388300,255.45 +2005-05-20,241.21,241.67,239.65,241.61,8163500,241.61 +2005-05-19,240.34,241.17,238.27,239.18,9716500,239.18 +2005-05-18,233.61,239.97,233.52,239.16,12312000,239.16 +2005-05-17,230.56,233.45,230.20,233.13,7808900,233.13 +2005-05-16,229.68,231.62,228.57,231.05,5681400,231.05 +2005-05-13,229.18,231.09,227.32,229.24,7415500,229.24 +2005-05-12,230.81,232.23,228.20,228.72,8948200,228.72 +2005-05-11,228.97,231.98,227.93,231.29,11478800,231.29 +2005-05-10,225.47,227.80,224.72,227.80,6345800,227.80 +2005-05-09,228.00,228.50,225.43,226.02,5536800,226.02 +2005-05-06,228.40,229.25,226.47,228.02,6763900,228.02 +2005-05-05,228.62,228.62,225.88,226.98,7509600,226.98 +2005-05-04,227.23,229.88,227.00,228.50,12083500,228.50 +2005-05-03,221.85,228.15,221.32,226.19,17780200,226.19 +2005-05-02,222.05,223.70,220.21,222.29,9767400,222.29 +2005-04-29,221.91,222.25,217.82,220.00,9170200,220.00 +2005-04-28,219.50,222.08,217.71,219.45,8682800,219.45 +2005-04-27,217.99,220.85,216.74,219.78,10264800,219.78 +2005-04-26,220.22,222.00,218.29,218.75,17272000,218.75 +2005-04-25,217.82,224.74,217.52,223.53,19840000,223.53 +2005-04-22,222.90,224.00,214.26,215.81,33205100,215.81 +2005-04-21,200.42,205.00,199.32,204.22,17751900,204.22 +2005-04-20,198.58,200.50,195.91,198.10,15451500,198.10 +2005-04-19,189.33,192.00,188.03,191.40,8430000,191.40 +2005-04-18,184.58,187.88,183.49,186.97,6550300,186.97 +2005-04-15,190.10,190.34,184.66,185.00,11577400,185.00 +2005-04-14,193.27,194.36,190.10,191.45,6152700,191.45 +2005-04-13,193.47,194.32,189.73,192.93,6555800,192.93 +2005-04-12,193.00,194.42,189.41,193.96,7319600,193.96 +2005-04-11,193.09,194.80,192.32,193.23,5410500,193.23 +2005-04-08,193.69,195.10,191.45,192.05,5116600,192.05 +2005-04-07,188.78,194.62,188.64,193.76,9692200,193.76 +2005-04-06,189.24,189.65,187.58,189.22,5252600,189.22 +2005-04-05,187.73,190.26,187.57,188.57,8736700,188.57 +2005-04-04,179.95,185.32,179.84,185.29,8076400,185.29 +2005-04-01,181.76,182.95,179.99,180.04,6182000,180.04 +2005-03-31,177.95,181.39,177.64,180.51,6768600,180.51 +2005-03-30,180.64,181.45,179.60,180.45,6236100,180.45 +2005-03-29,181.05,183.28,178.07,179.57,6473000,179.57 +2005-03-28,181.68,184.80,180.95,181.42,8738000,181.42 +2005-03-24,180.70,180.86,179.20,179.25,3705200,179.25 +2005-03-23,177.97,180.24,177.97,178.98,4845000,178.98 +2005-03-22,181.18,181.94,177.85,178.60,5631700,178.60 +2005-03-21,179.27,182.17,177.25,180.88,7483700,180.88 +2005-03-18,178.81,180.40,178.31,180.04,7090000,180.04 +2005-03-17,177.13,179.64,175.80,179.29,8260600,179.29 +2005-03-16,176.70,178.61,175.01,175.60,7106300,175.60 +2005-03-15,175.30,180.00,174.21,178.61,10422100,178.61 +2005-03-14,178.33,178.40,172.57,174.99,11146600,174.99 +2005-03-11,180.44,180.95,177.15,177.80,8028300,177.80 +2005-03-10,181.01,181.20,177.40,179.98,10960500,179.98 +2005-03-09,184.21,184.65,180.16,181.35,11360400,181.35 +2005-03-08,189.10,189.85,184.97,185.20,8046100,185.20 +2005-03-07,187.78,189.60,187.03,188.81,8667400,188.81 +2005-03-04,186.70,187.25,185.07,185.90,6774100,185.90 +2005-03-03,186.13,187.75,184.31,187.01,7608600,187.01 +2005-03-02,185.95,187.67,184.36,185.18,7285500,185.18 +2005-03-01,189.29,189.75,182.00,186.06,9311200,186.06 +2005-02-28,186.00,189.87,185.85,187.99,7818400,187.99 +2005-02-25,189.15,189.92,185.51,185.87,9973500,185.87 +2005-02-24,183.37,189.85,182.23,188.89,25814300,188.89 +2005-02-23,193.30,194.48,188.66,193.95,15586000,193.95 +2005-02-22,196.50,198.90,190.39,191.37,13483700,191.37 +2005-02-18,198.51,198.84,196.66,197.95,8485900,197.95 +2005-02-17,197.83,199.75,196.81,197.90,10414400,197.90 +2005-02-16,194.70,199.33,194.30,198.41,16532300,198.41 +2005-02-15,193.60,199.84,193.08,195.23,25782800,195.23 +2005-02-14,182.85,193.08,181.00,192.99,38562200,192.99 +2005-02-11,186.66,192.32,186.07,187.40,13116000,187.40 +2005-02-10,191.97,192.21,185.25,187.98,18982700,187.98 +2005-02-09,200.76,201.60,189.46,191.58,17171500,191.58 +2005-02-08,196.96,200.02,194.53,198.64,11480000,198.64 +2005-02-07,205.26,206.40,195.51,196.03,12960400,196.03 +2005-02-04,206.47,207.75,202.60,204.36,14819300,204.36 +2005-02-03,205.99,213.37,205.81,210.86,12988100,210.86 +2005-02-02,215.55,216.80,203.66,205.96,32799300,205.96 +2005-02-01,194.38,196.66,190.63,191.90,18839000,191.90 +2005-01-31,193.69,196.36,191.72,195.62,9596700,195.62 +2005-01-28,190.02,194.70,186.34,190.34,12208200,190.34 +2005-01-27,188.76,188.86,185.20,188.08,6627400,188.08 +2005-01-26,179.27,189.41,179.15,189.24,12307900,189.24 +2005-01-25,181.94,182.24,176.29,177.12,10659200,177.12 +2005-01-24,188.69,189.33,180.32,180.72,14022700,180.72 +2005-01-21,194.54,195.36,188.12,188.28,9258400,188.28 +2005-01-20,192.50,196.25,192.00,193.92,9001600,193.92 +2005-01-19,204.65,205.30,196.71,197.30,11257700,197.30 +2005-01-18,200.97,205.02,198.66,203.90,13172600,203.90 +2005-01-14,196.00,200.01,194.13,199.97,9640300,199.97 +2005-01-13,195.38,197.39,194.05,195.33,6849400,195.33 +2005-01-12,194.33,195.93,190.50,195.38,8177800,195.38 +2005-01-11,195.62,197.71,193.18,193.54,6958700,193.54 +2005-01-10,194.50,198.10,191.83,195.06,7539600,195.06 +2005-01-07,190.64,194.25,188.78,193.85,9662900,193.85 +2005-01-06,195.08,195.90,187.72,188.55,10387100,188.55 +2005-01-05,193.45,196.90,192.23,193.51,8236600,193.51 +2005-01-04,201.40,202.93,193.48,194.50,13755900,194.50 +2005-01-03,197.40,203.64,195.46,202.71,15844200,202.71 diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/data/msft_prices.csv b/js/dojo-release-1.7.2-src/dojox/charting/tests/data/msft_prices.csv new file mode 100644 index 0000000..a0c1e90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/data/msft_prices.csv @@ -0,0 +1,796 @@ +Date,Open,High,Low,Close,Volume,Adj Close +2008-02-29,27.69,27.83,27.02,27.20,117394000,27.20 +2008-02-28,28.02,28.27,27.80,27.93,83002900,27.93 +2008-02-27,28.19,28.68,28.10,28.26,75187200,28.26 +2008-02-26,27.74,28.86,27.67,28.38,108923500,28.38 +2008-02-25,27.65,28.24,27.48,27.84,109945200,27.84 +2008-02-22,28.24,28.39,27.20,27.68,125705400,27.68 +2008-02-21,28.62,28.96,27.96,28.10,98776500,28.10 +2008-02-20,28.15,28.26,27.92,28.22,92830000,28.22 +2008-02-19,28.80,28.84,28.07,28.17,68261200,28.17 +2008-02-15,28.31,28.64,28.25,28.42,68166100,28.31 +2008-02-14,28.88,29.04,28.46,28.50,68191600,28.39 +2008-02-13,28.62,29.05,28.53,28.96,88986200,28.85 +2008-02-12,28.43,28.62,28.11,28.34,84365900,28.23 +2008-02-11,28.52,28.61,27.91,28.21,156814100,28.10 +2008-02-08,28.29,29.08,28.24,28.56,124872000,28.45 +2008-02-07,28.34,28.78,27.90,28.12,164964900,28.01 +2008-02-06,29.28,29.35,28.29,28.52,138315600,28.41 +2008-02-05,29.91,29.94,28.89,29.07,137534100,28.96 +2008-02-04,30.49,30.72,30.11,30.19,119998600,30.07 +2008-02-01,31.06,33.25,30.25,30.45,291138900,30.33 +2008-01-31,31.91,32.74,31.72,32.60,103642200,32.47 +2008-01-30,32.56,32.80,32.05,32.20,106432600,32.08 +2008-01-29,32.85,32.89,32.35,32.60,68023000,32.47 +2008-01-28,33.02,33.10,32.42,32.72,81019000,32.59 +2008-01-25,34.90,35.00,32.87,32.94,196992300,32.81 +2008-01-24,32.35,33.36,32.12,33.25,155640400,33.12 +2008-01-23,31.48,32.05,31.04,31.93,137597400,31.81 +2008-01-22,31.54,32.53,31.50,31.96,108521400,31.84 +2008-01-18,33.16,34.00,32.97,33.01,117062000,32.88 +2008-01-17,33.54,33.80,32.97,33.11,94247800,32.98 +2008-01-16,33.42,33.65,32.51,33.23,120778500,33.10 +2008-01-15,34.03,34.38,34.00,34.00,61606200,33.87 +2008-01-14,34.46,34.57,34.08,34.39,52792200,34.26 +2008-01-11,34.14,34.24,33.72,33.91,55187900,33.78 +2008-01-10,34.35,34.50,33.78,34.33,72446000,34.20 +2008-01-09,33.36,34.54,33.35,34.44,74305500,34.31 +2008-01-08,34.71,34.71,33.40,33.45,79148300,33.32 +2008-01-07,34.55,34.80,34.25,34.61,80164300,34.48 +2008-01-04,35.19,35.20,34.09,34.38,72090800,34.25 +2008-01-03,35.22,35.65,34.86,35.37,49599600,35.23 +2008-01-02,35.79,35.96,35.00,35.22,63004200,35.08 +2007-12-31,35.90,35.99,35.52,35.60,35229700,35.46 +2007-12-28,36.10,36.23,35.67,36.12,33447200,35.98 +2007-12-27,36.35,36.55,35.94,35.97,33311100,35.83 +2007-12-26,36.41,36.64,36.26,36.61,30252400,36.47 +2007-12-24,36.13,36.72,36.05,36.58,29622600,36.44 +2007-12-21,35.90,36.06,35.75,36.06,83240500,35.92 +2007-12-20,35.29,35.79,35.08,35.52,59345000,35.38 +2007-12-19,34.69,35.14,34.38,34.79,58469100,34.66 +2007-12-18,34.64,35.00,34.21,34.74,52791800,34.61 +2007-12-17,35.03,35.13,34.36,34.39,58121200,34.26 +2007-12-14,35.05,35.84,35.01,35.31,71126200,35.17 +2007-12-13,34.48,35.45,34.28,35.22,73913200,35.08 +2007-12-12,34.61,35.09,33.93,34.47,63345400,34.34 +2007-12-11,34.73,34.99,33.93,34.10,55070700,33.97 +2007-12-10,34.64,34.95,34.47,34.76,36083500,34.63 +2007-12-07,34.61,34.70,34.22,34.53,40771000,34.40 +2007-12-06,34.26,34.61,33.87,34.55,49209700,34.42 +2007-12-05,33.14,34.52,33.03,34.15,84894700,34.02 +2007-12-04,32.74,33.24,32.63,32.77,54801500,32.64 +2007-12-03,33.50,33.64,32.68,32.92,61770600,32.79 +2007-11-30,33.92,34.12,33.19,33.60,71027800,33.47 +2007-11-29,33.58,33.93,33.31,33.59,53633600,33.46 +2007-11-28,33.38,33.89,32.90,33.70,88585000,33.57 +2007-11-27,33.27,33.60,32.68,33.06,84178400,32.93 +2007-11-26,34.09,34.37,32.93,32.97,80335000,32.84 +2007-11-23,34.36,34.44,33.71,34.11,33467200,33.98 +2007-11-21,34.40,34.73,34.18,34.23,89518700,34.10 +2007-11-20,34.23,34.97,34.10,34.58,100009400,34.45 +2007-11-19,33.96,34.24,33.87,33.96,63000300,33.83 +2007-11-16,33.86,34.26,33.71,34.09,71113800,33.96 +2007-11-15,33.76,34.10,33.55,33.76,63111200,33.63 +2007-11-14,34.62,34.75,33.75,33.93,83840100,33.80 +2007-11-13,33.54,34.67,33.38,34.46,104261100,34.33 +2007-11-12,33.32,33.71,33.02,33.38,84719000,33.14 +2007-11-09,34.18,34.54,33.65,33.73,125111400,33.49 +2007-11-08,35.60,35.90,34.40,34.74,133742400,34.49 +2007-11-07,36.04,36.16,35.45,35.52,74873600,35.27 +2007-11-06,36.59,36.66,35.87,36.41,100966700,36.15 +2007-11-05,36.76,37.10,36.63,36.73,75485400,36.47 +2007-11-02,37.22,37.50,36.42,37.06,96389800,36.79 +2007-11-01,36.53,37.49,36.36,37.06,152078800,36.79 +2007-10-31,35.52,37.00,35.51,36.81,185635800,36.55 +2007-10-30,34.37,35.59,34.35,35.57,107297300,35.32 +2007-10-29,34.85,35.29,34.45,34.57,114655600,34.32 +2007-10-26,36.01,36.03,34.56,35.03,287270900,34.78 +2007-10-25,31.57,32.22,31.49,31.99,169588700,31.76 +2007-10-24,30.85,31.30,30.50,31.25,77979200,31.03 +2007-10-23,30.71,31.12,30.71,30.90,49956200,30.68 +2007-10-22,30.12,30.70,30.12,30.51,58785100,30.29 +2007-10-19,31.09,31.09,30.11,30.17,75200200,29.95 +2007-10-18,31.22,31.23,30.63,31.16,49208600,30.94 +2007-10-17,30.75,31.23,30.65,31.08,86092400,30.86 +2007-10-16,30.24,30.58,30.23,30.32,56286200,30.10 +2007-10-15,30.10,30.33,30.00,30.04,47150500,29.83 +2007-10-12,30.03,30.40,29.95,30.17,31121100,29.95 +2007-10-11,30.30,30.63,29.79,29.91,50788400,29.70 +2007-10-10,30.04,30.37,30.03,30.23,32251500,30.01 +2007-10-09,30.03,30.39,30.00,30.10,63603100,29.88 +2007-10-08,29.66,29.85,29.60,29.84,30265400,29.63 +2007-10-05,29.89,29.99,29.73,29.84,45012300,29.63 +2007-10-04,29.56,29.77,29.44,29.71,37868000,29.50 +2007-10-03,29.71,29.85,29.29,29.45,37633900,29.24 +2007-10-02,29.70,29.85,29.57,29.70,33700900,29.49 +2007-10-01,29.46,29.79,29.41,29.77,43875100,29.56 +2007-09-28,29.49,29.69,29.23,29.46,45819100,29.25 +2007-09-27,29.70,29.72,29.44,29.49,43407100,29.28 +2007-09-26,29.68,29.85,29.48,29.50,60337000,29.29 +2007-09-25,29.14,29.56,29.11,29.56,75621000,29.35 +2007-09-24,28.81,29.61,28.80,29.08,104459800,28.87 +2007-09-21,28.69,28.81,28.44,28.65,135636100,28.45 +2007-09-20,28.48,28.58,28.34,28.42,67168900,28.22 +2007-09-19,28.87,28.91,28.30,28.67,94242200,28.46 +2007-09-18,28.70,28.97,28.27,28.93,77462400,28.72 +2007-09-17,28.79,28.88,28.62,28.73,39536500,28.52 +2007-09-14,28.98,29.11,28.88,29.04,33496600,28.83 +2007-09-13,29.12,29.26,28.96,29.16,35288600,28.95 +2007-09-12,28.81,29.17,28.80,28.93,42364700,28.72 +2007-09-11,28.63,28.95,28.58,28.93,34380800,28.72 +2007-09-10,28.67,28.75,28.41,28.48,37247600,28.28 +2007-09-07,28.62,28.83,28.32,28.44,52160900,28.24 +2007-09-06,28.56,29.01,28.55,28.91,45430800,28.70 +2007-09-05,28.65,28.73,28.42,28.48,47669800,28.28 +2007-09-04,28.50,29.10,28.48,28.81,45689600,28.60 +2007-08-31,28.70,28.92,28.36,28.73,42511900,28.52 +2007-08-30,28.42,28.93,28.32,28.45,33690700,28.25 +2007-08-29,28.13,28.61,27.82,28.59,45753700,28.39 +2007-08-28,28.30,28.49,27.91,27.93,43924400,27.73 +2007-08-27,28.61,28.77,28.40,28.49,32789500,28.29 +2007-08-24,28.21,28.84,28.07,28.81,45158900,28.60 +2007-08-23,28.28,28.33,28.10,28.30,33886600,28.10 +2007-08-22,28.27,28.32,28.01,28.22,44763500,28.02 +2007-08-21,28.10,28.32,27.87,28.07,50786200,27.87 +2007-08-20,28.18,28.49,28.08,28.26,49952000,28.06 +2007-08-17,28.09,28.25,27.82,28.25,76747700,28.05 +2007-08-16,27.88,28.35,27.51,27.81,81447400,27.61 +2007-08-15,28.24,28.99,28.05,28.10,48117700,27.90 +2007-08-14,28.77,28.89,28.20,28.27,42944100,28.07 +2007-08-13,28.94,28.99,28.44,28.63,55492300,28.33 +2007-08-10,28.90,29.05,28.26,28.71,76576200,28.41 +2007-08-09,29.64,30.10,28.92,29.30,72964500,28.99 +2007-08-08,29.72,30.01,29.21,30.00,52898600,29.68 +2007-08-07,29.33,29.79,29.05,29.55,49163000,29.24 +2007-08-06,29.05,29.54,28.75,29.54,59530500,29.23 +2007-08-03,29.45,29.78,28.90,28.96,61535500,28.65 +2007-08-02,29.19,29.79,29.02,29.52,47938300,29.21 +2007-08-01,28.95,29.55,28.82,29.30,80006300,28.99 +2007-07-31,29.71,29.72,28.98,28.99,66554000,28.68 +2007-07-30,29.41,29.49,28.95,29.40,67499600,29.09 +2007-07-27,29.93,30.00,29.36,29.39,69214600,29.08 +2007-07-26,30.24,30.53,29.51,29.98,87025300,29.66 +2007-07-25,30.99,31.30,30.37,30.71,54950100,30.38 +2007-07-24,31.01,31.48,30.71,30.80,59729300,30.47 +2007-07-23,31.36,31.52,31.12,31.19,48910600,30.86 +2007-07-20,31.15,31.20,30.79,31.16,98292600,30.83 +2007-07-19,31.05,31.84,30.93,31.51,121159300,31.18 +2007-07-18,30.51,30.97,30.50,30.92,64414400,30.59 +2007-07-17,30.02,30.88,30.01,30.78,77539600,30.45 +2007-07-16,29.76,30.24,29.72,30.03,48023200,29.71 +2007-07-13,29.94,30.02,29.66,29.82,42173000,29.50 +2007-07-12,29.56,30.11,29.44,30.07,54302400,29.75 +2007-07-11,29.24,29.65,29.21,29.49,48017000,29.18 +2007-07-10,29.70,29.99,29.18,29.33,66013500,29.02 +2007-07-09,29.86,29.95,29.81,29.87,33831400,29.55 +2007-07-06,29.91,30.04,29.66,29.97,57541000,29.65 +2007-07-05,30.05,30.22,29.83,29.99,47838500,29.67 +2007-07-03,29.79,30.22,29.78,30.02,35202600,29.70 +2007-07-02,29.67,29.80,29.49,29.74,47316000,29.42 +2007-06-29,29.87,29.93,29.04,29.47,71193900,29.16 +2007-06-28,29.86,29.97,29.68,29.83,46055200,29.51 +2007-06-27,29.36,29.95,29.36,29.87,53468600,29.55 +2007-06-26,29.55,29.80,29.50,29.52,48340300,29.21 +2007-06-25,29.47,29.77,29.38,29.49,53905800,29.18 +2007-06-22,30.00,30.10,29.45,29.49,86219900,29.18 +2007-06-21,29.98,30.30,29.91,30.22,56564800,29.90 +2007-06-20,30.44,30.51,29.96,30.01,46861600,29.69 +2007-06-19,30.48,30.66,30.38,30.46,46802600,30.14 +2007-06-18,30.69,30.72,30.42,30.51,45412600,30.19 +2007-06-15,30.86,30.88,30.43,30.49,100933000,30.17 +2007-06-14,30.35,30.71,30.30,30.52,59065700,30.20 +2007-06-13,29.97,30.41,29.85,30.39,64435600,30.07 +2007-06-12,29.96,30.24,29.77,29.85,56981800,29.53 +2007-06-11,29.94,30.25,29.93,30.02,48467400,29.70 +2007-06-08,29.58,30.06,29.41,30.05,61346200,29.73 +2007-06-07,30.02,30.29,29.59,29.62,71971400,29.31 +2007-06-06,30.37,30.53,30.25,30.29,38217500,29.97 +2007-06-05,30.62,30.63,30.33,30.58,44265000,30.26 +2007-06-04,30.42,30.76,30.40,30.72,41434500,30.39 +2007-06-01,30.79,30.90,30.55,30.59,39469400,30.27 +2007-05-31,31.12,31.16,30.61,30.69,85290500,30.36 +2007-05-30,30.55,31.13,30.51,31.11,57376800,30.78 +2007-05-29,30.49,30.83,30.39,30.79,42373100,30.46 +2007-05-25,30.28,30.66,30.18,30.48,47726500,30.16 +2007-05-24,30.54,30.80,29.96,30.17,64046400,29.85 +2007-05-23,30.84,30.84,30.57,30.58,46322500,30.26 +2007-05-22,30.90,30.93,30.66,30.69,39999500,30.36 +2007-05-21,30.73,31.16,30.73,31.05,41836400,30.72 +2007-05-18,30.97,30.99,30.58,30.83,58453000,30.50 +2007-05-17,31.03,31.14,30.96,30.98,41045600,30.65 +2007-05-16,31.00,31.09,30.81,31.07,45833600,30.74 +2007-05-15,30.90,31.09,30.84,30.90,75013900,30.57 +2007-05-14,30.84,30.99,30.81,30.97,70188500,30.54 +2007-05-11,30.57,30.98,30.55,30.89,43425300,30.46 +2007-05-10,30.68,30.93,30.53,30.58,55398600,30.16 +2007-05-09,30.70,30.93,30.57,30.78,51735000,30.35 +2007-05-08,30.68,30.94,30.58,30.75,60551700,30.33 +2007-05-07,30.52,30.76,30.48,30.71,59889100,30.29 +2007-05-04,30.68,30.70,30.29,30.56,104385900,30.14 +2007-05-03,30.60,31.00,30.53,30.97,82036800,30.54 +2007-05-02,30.39,30.69,30.30,30.61,80686700,30.19 +2007-05-01,29.94,30.42,29.90,30.40,73539300,29.98 +2007-04-30,30.13,30.37,29.94,29.94,67788800,29.53 +2007-04-27,30.17,30.74,30.00,30.12,128298800,29.70 +2007-04-26,29.09,29.35,28.91,29.10,68760300,28.70 +2007-04-25,28.86,29.00,28.69,28.99,39475000,28.59 +2007-04-24,28.79,28.96,28.59,28.79,34236700,28.39 +2007-04-23,28.96,28.99,28.67,28.78,41739100,28.38 +2007-04-20,28.98,29.10,28.70,29.02,60311500,28.62 +2007-04-19,28.34,28.89,28.26,28.69,43648800,28.29 +2007-04-18,28.61,28.67,28.36,28.60,41778400,28.20 +2007-04-17,28.63,28.89,28.56,28.85,33170200,28.45 +2007-04-16,28.60,28.75,28.21,28.73,30740100,28.33 +2007-04-13,28.43,28.70,28.10,28.61,36002900,28.21 +2007-04-12,28.06,28.62,28.04,28.54,43762100,28.15 +2007-04-11,28.30,28.57,27.99,28.11,44050200,27.72 +2007-04-10,28.50,28.64,28.22,28.40,38643100,28.01 +2007-04-09,28.58,28.72,28.39,28.57,31384600,28.18 +2007-04-05,28.32,28.65,28.30,28.55,30131200,28.16 +2007-04-04,28.01,28.78,27.90,28.50,63244200,28.11 +2007-04-03,27.86,28.06,27.75,27.87,39821300,27.48 +2007-04-02,27.89,27.93,27.56,27.74,41977600,27.36 +2007-03-30,27.75,27.95,27.50,27.87,47061000,27.48 +2007-03-29,27.84,27.85,27.49,27.75,42629900,27.37 +2007-03-28,27.58,28.00,27.40,27.64,46947000,27.26 +2007-03-27,28.04,28.16,27.65,27.72,58979800,27.34 +2007-03-26,27.94,28.22,27.70,28.22,47491500,27.83 +2007-03-23,28.22,28.27,27.80,28.02,50519800,27.63 +2007-03-22,28.52,28.55,28.01,28.27,47934900,27.88 +2007-03-21,27.90,28.52,27.56,28.52,72808200,28.13 +2007-03-20,27.93,28.16,27.76,27.84,47902400,27.46 +2007-03-19,27.34,27.83,27.20,27.83,49412000,27.45 +2007-03-16,27.35,27.48,27.20,27.33,65055300,26.95 +2007-03-15,27.32,27.47,27.20,27.28,51757100,26.90 +2007-03-14,26.82,27.40,26.73,27.40,75730300,27.02 +2007-03-13,27.25,27.40,26.71,26.72,75169500,26.35 +2007-03-12,27.18,27.48,27.13,27.44,36516400,27.06 +2007-03-09,27.42,27.48,27.03,27.29,80125000,26.91 +2007-03-08,27.72,27.85,26.60,27.32,72175200,26.94 +2007-03-07,27.76,27.90,27.55,27.61,52044700,27.23 +2007-03-06,27.80,27.94,27.65,27.83,49361800,27.45 +2007-03-05,27.49,27.91,27.41,27.55,56454300,27.17 +2007-03-02,28.02,28.16,27.76,27.76,63254700,27.38 +2007-03-01,27.82,28.33,27.73,28.09,80175700,27.70 +2007-02-28,27.95,28.25,27.92,28.17,86333300,27.78 +2007-02-27,28.71,28.97,27.79,27.87,87143300,27.48 +2007-02-26,28.96,29.09,28.82,29.07,63481900,28.67 +2007-02-23,29.22,29.28,28.89,28.90,63787100,28.50 +2007-02-22,29.31,29.54,29.16,29.39,57754400,28.98 +2007-02-21,28.75,29.39,28.74,29.35,68604900,28.94 +2007-02-20,28.63,28.86,28.47,28.83,53978200,28.43 +2007-02-16,28.91,28.94,28.65,28.74,109340300,28.34 +2007-02-15,29.58,29.65,29.22,29.46,63858100,29.05 +2007-02-14,29.17,29.69,29.15,29.40,55588600,28.99 +2007-02-13,29.04,29.20,28.96,29.01,50348100,28.61 +2007-02-12,28.89,29.09,28.83,28.94,52774400,28.44 +2007-02-09,29.35,29.40,28.93,28.98,69823100,28.48 +2007-02-08,29.24,29.80,29.20,29.26,48749000,28.76 +2007-02-07,29.64,29.70,29.25,29.37,65145500,28.86 +2007-02-06,29.59,29.75,29.22,29.51,79281100,29.00 +2007-02-05,29.97,30.02,29.41,29.61,99102100,29.10 +2007-02-02,30.82,30.84,30.13,30.19,60401700,29.67 +2007-02-01,30.84,30.94,30.37,30.56,55355800,30.03 +2007-01-31,30.41,31.10,30.35,30.86,73968400,30.33 +2007-01-30,30.57,30.64,30.14,30.48,61900400,29.96 +2007-01-29,30.65,30.78,30.34,30.53,57605900,30.00 +2007-01-26,31.22,31.23,30.60,30.60,96103700,30.07 +2007-01-25,31.08,31.48,30.45,30.45,97378700,29.93 +2007-01-24,30.78,31.30,30.65,31.09,58527800,30.55 +2007-01-23,30.63,30.96,30.52,30.74,49171200,30.21 +2007-01-22,31.06,31.12,30.51,30.72,56143900,30.19 +2007-01-19,30.73,31.11,30.69,31.11,75826900,30.57 +2007-01-18,31.15,31.37,30.80,31.00,56364300,30.47 +2007-01-17,31.26,31.44,31.01,31.10,58519600,30.56 +2007-01-16,31.26,31.45,31.03,31.16,62379600,30.62 +2007-01-12,30.65,31.39,30.64,31.21,103972500,30.67 +2007-01-11,29.76,30.75,29.65,30.70,99464300,30.17 +2007-01-10,29.80,29.89,29.43,29.66,55017400,29.15 +2007-01-09,30.00,30.18,29.73,29.96,44636600,29.44 +2007-01-08,29.65,30.10,29.53,29.93,50220200,29.41 +2007-01-05,29.63,29.75,29.45,29.64,44607200,29.13 +2007-01-04,29.70,29.97,29.44,29.81,45774500,29.30 +2007-01-03,29.91,30.25,29.40,29.86,76935100,29.35 +2006-12-29,29.86,30.15,29.83,29.86,41739800,29.35 +2006-12-28,29.86,30.03,29.81,29.98,26690600,29.46 +2006-12-27,29.99,30.13,29.91,30.02,31248400,29.50 +2006-12-26,29.53,30.00,29.40,29.99,37098300,29.47 +2006-12-22,29.83,29.86,29.62,29.64,37971700,29.13 +2006-12-21,30.13,30.14,29.89,29.98,32270500,29.46 +2006-12-20,29.99,30.24,29.97,30.09,31202100,29.57 +2006-12-19,29.71,30.17,29.53,29.99,53822100,29.47 +2006-12-18,30.19,30.26,29.78,29.89,56986800,29.38 +2006-12-15,30.14,30.23,30.03,30.19,102783700,29.67 +2006-12-14,29.54,30.08,29.52,30.07,85866500,29.55 +2006-12-13,29.60,29.60,29.32,29.55,46002500,29.04 +2006-12-12,29.56,29.63,29.22,29.43,68529400,28.92 +2006-12-11,29.19,29.75,29.11,29.54,107712000,29.03 +2006-12-08,28.82,29.40,28.80,29.40,108854900,28.89 +2006-12-07,28.96,29.07,28.81,28.85,46831100,28.35 +2006-12-06,29.10,29.13,28.87,28.99,48564100,28.49 +2006-12-05,29.36,29.40,29.03,29.13,45606000,28.63 +2006-12-04,29.23,29.52,29.17,29.33,55123400,28.82 +2006-12-01,29.23,29.30,28.90,29.12,72257000,28.62 +2006-11-30,29.42,29.57,29.33,29.36,53297400,28.85 +2006-11-29,29.44,29.78,29.43,29.57,58775100,29.06 +2006-11-28,29.34,29.42,29.13,29.39,52602300,28.88 +2006-11-27,29.69,29.74,29.33,29.48,72722100,28.97 +2006-11-24,29.66,29.84,29.64,29.76,20456700,29.25 +2006-11-22,29.97,30.00,29.82,29.92,43907200,29.40 +2006-11-21,29.91,30.00,29.79,29.92,66446600,29.40 +2006-11-20,29.52,30.00,29.50,29.89,85703800,29.38 +2006-11-17,29.31,29.54,29.28,29.40,49356700,28.89 +2006-11-16,29.14,29.64,29.13,29.47,64328500,28.96 +2006-11-15,29.13,29.36,29.11,29.12,63943200,28.62 +2006-11-14,29.28,29.42,29.07,29.23,63012500,28.73 +2006-11-13,29.19,29.46,29.16,29.35,47271800,28.75 +2006-11-10,29.17,29.29,29.15,29.24,37855100,28.64 +2006-11-09,29.11,29.40,29.00,29.26,89407500,28.66 +2006-11-08,28.78,29.23,28.66,28.98,77403300,28.38 +2006-11-07,28.86,29.07,28.80,28.95,56511200,28.35 +2006-11-06,28.77,29.05,28.76,28.84,60446200,28.25 +2006-11-03,28.85,28.93,28.61,28.73,41124500,28.14 +2006-11-02,28.71,28.86,28.58,28.77,58674400,28.18 +2006-11-01,28.78,28.99,28.70,28.81,75895900,28.22 +2006-10-31,28.66,28.85,28.56,28.71,61861700,28.12 +2006-10-30,28.35,28.84,28.32,28.53,47296800,27.94 +2006-10-27,28.49,28.79,28.25,28.34,89060100,27.76 +2006-10-26,28.33,28.41,28.04,28.35,69964200,27.77 +2006-10-25,28.28,28.46,28.14,28.31,40717100,27.73 +2006-10-24,28.43,28.43,28.13,28.28,61409600,27.70 +2006-10-23,28.30,28.69,28.18,28.45,48525000,27.86 +2006-10-20,28.48,28.49,28.17,28.43,48887800,27.85 +2006-10-19,28.35,28.45,28.12,28.29,44730800,27.71 +2006-10-18,28.50,28.70,28.26,28.52,40630800,27.93 +2006-10-17,28.24,28.51,28.17,28.44,40122600,27.85 +2006-10-16,28.48,28.60,28.33,28.45,49744800,27.86 +2006-10-13,28.34,28.69,28.31,28.37,129751900,27.79 +2006-10-12,27.58,28.29,27.54,28.22,120174900,27.64 +2006-10-11,27.46,27.67,27.42,27.54,37219600,26.97 +2006-10-10,27.69,27.75,27.44,27.69,34598500,27.12 +2006-10-09,27.80,27.93,27.62,27.72,33366300,27.15 +2006-10-06,27.76,28.00,27.65,27.87,36452200,27.30 +2006-10-05,27.92,28.11,27.78,27.92,81967200,27.35 +2006-10-04,27.39,27.96,27.37,27.94,82191200,27.37 +2006-10-03,27.37,27.48,27.21,27.37,39386200,26.81 +2006-10-02,27.32,27.49,27.15,27.36,52908100,26.80 +2006-09-29,27.35,27.42,27.21,27.35,34283500,26.79 +2006-09-28,27.47,27.52,27.26,27.40,44179700,26.84 +2006-09-27,27.18,27.47,27.12,27.44,66233900,26.88 +2006-09-26,26.91,27.32,26.88,27.20,54766500,26.64 +2006-09-25,26.81,27.19,26.79,26.95,67903900,26.40 +2006-09-22,26.83,26.85,26.48,26.66,47712500,26.11 +2006-09-21,27.24,27.25,26.85,26.90,58495100,26.35 +2006-09-20,27.01,27.23,26.99,27.18,71676400,26.62 +2006-09-19,26.74,26.94,26.72,26.86,43039100,26.31 +2006-09-18,26.74,27.04,26.67,26.79,49135000,26.24 +2006-09-15,26.58,26.94,26.49,26.85,126057700,26.30 +2006-09-14,25.99,26.50,25.98,26.33,74324500,25.79 +2006-09-13,25.82,26.10,25.82,25.98,37706700,25.45 +2006-09-12,25.90,25.98,25.72,25.93,52248800,25.40 +2006-09-11,25.43,25.95,25.42,25.91,55608200,25.38 +2006-09-08,25.53,25.79,25.46,25.60,36866800,25.07 +2006-09-07,25.48,25.70,25.39,25.43,51266900,24.91 +2006-09-06,25.51,25.72,25.51,25.61,50160400,25.08 +2006-09-05,25.69,25.96,25.56,25.61,44222400,25.08 +2006-09-01,25.89,25.97,25.64,25.84,31594600,25.31 +2006-08-31,25.87,25.98,25.68,25.70,26380500,25.17 +2006-08-30,25.85,25.89,25.64,25.80,30283100,25.27 +2006-08-29,25.92,25.98,25.63,25.84,42711200,25.31 +2006-08-28,25.84,26.00,25.69,25.95,34190900,25.42 +2006-08-25,25.71,26.00,25.69,25.85,33115900,25.32 +2006-08-24,25.82,25.86,25.50,25.74,35933300,25.21 +2006-08-23,25.65,25.95,25.52,25.67,44648500,25.14 +2006-08-22,26.01,26.25,25.62,25.62,89312400,25.09 +2006-08-21,25.66,26.13,25.56,26.12,88398300,25.58 +2006-08-18,25.05,25.80,24.98,25.79,128414800,25.26 +2006-08-17,24.70,24.75,24.61,24.70,45674800,24.19 +2006-08-16,24.61,24.73,24.47,24.70,52373600,24.19 +2006-08-15,24.55,24.65,24.44,24.62,48994500,24.11 +2006-08-14,24.52,24.60,24.35,24.53,47831900,23.94 +2006-08-11,24.43,24.45,24.20,24.43,30255500,23.84 +2006-08-10,24.37,24.60,24.34,24.46,31753400,23.87 +2006-08-09,24.49,24.64,24.34,24.44,44405700,23.85 +2006-08-08,24.39,24.52,24.20,24.34,58171300,23.75 +2006-08-07,24.28,24.48,24.19,24.22,36862400,23.63 +2006-08-04,24.40,24.49,24.15,24.29,45690400,23.70 +2006-08-03,24.19,24.48,24.15,24.21,43155300,23.62 +2006-08-02,24.12,24.40,24.03,24.30,46462000,23.71 +2006-08-01,24.02,24.20,23.85,23.99,49168700,23.41 +2006-07-31,24.07,24.42,24.01,24.06,40254400,23.48 +2006-07-28,24.08,24.28,24.06,24.25,51705800,23.66 +2006-07-27,24.58,24.60,23.77,23.87,85386800,23.29 +2006-07-26,24.12,24.53,24.10,24.37,54942100,23.78 +2006-07-25,24.00,24.29,23.90,24.22,60075800,23.63 +2006-07-24,24.01,24.11,23.79,24.00,59586700,23.42 +2006-07-21,24.08,24.15,23.00,23.87,175483800,23.29 +2006-07-20,23.44,23.45,22.78,22.85,76605200,22.30 +2006-07-19,22.82,23.46,22.72,23.40,82188200,22.83 +2006-07-18,22.59,22.76,22.48,22.74,65047300,22.19 +2006-07-17,22.29,22.61,22.26,22.48,37053500,21.94 +2006-07-14,22.28,22.55,22.23,22.29,67499400,21.75 +2006-07-13,22.37,22.61,22.25,22.26,73099500,21.72 +2006-07-12,22.79,22.88,22.62,22.64,77379300,22.09 +2006-07-11,23.37,23.37,22.74,23.10,88676300,22.54 +2006-07-10,23.43,23.66,23.38,23.50,50565100,22.93 +2006-07-07,23.39,23.55,23.30,23.30,63168800,22.74 +2006-07-06,23.45,23.61,23.42,23.48,44775200,22.91 +2006-07-05,23.48,23.52,23.30,23.35,53093500,22.79 +2006-07-03,23.53,23.72,23.45,23.70,25711400,23.13 +2006-06-30,23.54,23.65,23.30,23.30,73048800,22.74 +2006-06-29,23.32,23.63,23.22,23.47,121395500,22.90 +2006-06-28,22.96,23.25,22.91,23.16,71906500,22.60 +2006-06-27,22.89,23.16,22.84,22.86,84759100,22.31 +2006-06-26,22.65,22.89,22.63,22.82,53644100,22.27 +2006-06-23,22.85,22.87,22.50,22.50,60532600,21.96 +2006-06-22,23.06,23.17,22.78,22.88,76590600,22.33 +2006-06-21,22.61,23.15,22.53,23.08,91660300,22.52 +2006-06-20,22.54,22.76,22.50,22.56,90598500,22.01 +2006-06-19,22.14,22.60,22.12,22.55,129640900,22.01 +2006-06-16,21.97,22.28,21.79,22.10,147506500,21.57 +2006-06-15,22.01,22.13,21.80,22.07,121577300,21.54 +2006-06-14,21.59,21.94,21.55,21.88,86081500,21.35 +2006-06-13,21.73,22.03,21.46,21.51,113175300,20.99 +2006-06-12,21.96,22.10,21.70,21.71,74309700,21.19 +2006-06-09,22.15,22.19,21.89,21.92,52573800,21.39 +2006-06-08,22.03,22.21,21.97,22.11,104126900,21.58 +2006-06-07,22.15,22.39,22.01,22.04,73827500,21.51 +2006-06-06,22.55,22.56,21.98,22.13,126601300,21.60 +2006-06-05,22.72,22.73,22.49,22.50,63914100,21.96 +2006-06-02,22.87,22.99,22.67,22.76,73935600,22.21 +2006-06-01,22.74,22.84,22.62,22.82,80230800,22.27 +2006-05-31,23.26,23.35,22.65,22.65,120202000,22.10 +2006-05-30,23.55,23.76,23.14,23.15,52497500,22.59 +2006-05-26,23.77,23.88,23.56,23.72,46861600,23.15 +2006-05-25,23.57,23.92,23.54,23.74,83052700,23.17 +2006-05-24,22.99,23.54,22.98,23.50,107356700,22.93 +2006-05-23,23.11,23.38,22.77,22.79,79986300,22.24 +2006-05-22,22.48,23.02,22.45,22.88,87322300,22.33 +2006-05-19,22.79,22.90,22.52,22.56,100071200,22.01 +2006-05-18,22.84,23.14,22.76,22.83,95476400,22.28 +2006-05-17,22.89,23.08,22.73,22.73,98598300,22.18 +2006-05-16,23.16,24.00,22.91,23.01,82095100,22.45 +2006-05-15,23.10,23.23,23.03,23.15,67314800,22.59 +2006-05-12,23.14,23.37,23.05,23.17,83115900,22.52 +2006-05-11,23.71,23.79,23.15,23.22,92916700,22.57 +2006-05-10,23.67,23.79,23.59,23.77,76563300,23.11 +2006-05-09,23.75,24.00,23.49,23.62,75345900,22.96 +2006-05-08,23.85,25.00,23.51,23.73,80693500,23.07 +2006-05-05,23.66,23.95,23.52,23.80,131604300,23.13 +2006-05-04,23.35,23.67,23.14,23.44,171257400,22.78 +2006-05-03,23.99,24.02,23.15,23.17,211527100,22.52 +2006-05-02,24.49,25.00,23.90,24.01,190533500,23.34 +2006-05-01,24.32,25.00,24.09,24.29,174800900,23.61 +2006-04-28,24.23,24.50,24.00,24.15,591052200,23.47 +2006-04-27,26.97,27.63,26.94,27.25,96509600,26.49 +2006-04-26,27.08,27.23,27.00,27.10,39190000,26.34 +2006-04-25,27.09,27.21,27.02,27.11,49222500,26.35 +2006-04-24,27.07,27.25,26.98,27.11,42318400,26.35 +2006-04-21,27.05,27.39,27.00,27.15,58528000,26.39 +2006-04-20,27.05,27.19,26.70,27.03,45648300,26.27 +2006-04-19,27.11,27.19,26.96,27.03,45111100,26.27 +2006-04-18,26.94,27.50,26.82,27.22,56272700,26.46 +2006-04-17,27.03,27.05,26.73,26.84,35796200,26.09 +2006-04-13,27.08,27.20,27.00,27.07,28160000,26.31 +2006-04-12,27.10,27.20,26.97,27.20,32183000,26.44 +2006-04-11,27.29,27.32,27.00,27.13,42953400,26.37 +2006-04-10,27.23,27.44,27.20,27.29,39432000,26.53 +2006-04-07,27.61,27.72,27.23,27.25,47249400,26.49 +2006-04-06,27.66,27.72,27.37,27.56,51885500,26.79 +2006-04-05,27.88,27.94,27.64,27.74,41539300,26.96 +2006-04-04,27.60,27.80,27.47,27.64,45470000,26.87 +2006-04-03,27.67,27.73,27.44,27.56,57605300,26.79 +2006-03-31,27.30,27.54,27.21,27.21,62190500,26.45 +2006-03-30,27.03,27.39,27.00,27.23,54612000,26.47 +2006-03-29,26.95,27.20,26.92,27.02,53150300,26.26 +2006-03-28,27.01,27.21,26.81,26.90,58520500,26.15 +2006-03-27,27.01,27.30,27.00,27.01,59908600,26.25 +2006-03-24,26.71,27.21,26.62,27.01,69157600,26.25 +2006-03-23,27.08,27.10,26.66,26.85,73682900,26.10 +2006-03-22,27.08,27.50,26.80,27.15,145696100,26.39 +2006-03-21,27.74,28.22,27.68,27.74,73199600,26.96 +2006-03-20,27.70,27.99,27.67,27.89,67094100,27.11 +2006-03-17,27.35,27.66,27.27,27.50,120615000,26.73 +2006-03-16,27.34,27.48,27.22,27.27,73793700,26.51 +2006-03-15,27.20,27.45,27.01,27.36,57152000,26.60 +2006-03-14,27.04,27.38,26.99,27.23,39821800,26.47 +2006-03-13,27.18,27.29,26.94,27.11,40342600,26.35 +2006-03-10,27.06,27.22,26.88,27.17,41297200,26.41 +2006-03-09,27.27,27.42,27.00,27.00,45360700,26.25 +2006-03-08,26.99,27.50,26.97,27.25,57547400,26.49 +2006-03-07,26.90,27.10,26.81,27.06,51613900,26.30 +2006-03-06,26.92,27.15,26.83,26.91,53054100,26.16 +2006-03-03,26.81,27.16,26.74,26.93,45218800,26.18 +2006-03-02,27.02,27.10,26.90,26.97,41850300,26.22 +2006-03-01,26.98,27.20,26.95,27.14,53061200,26.38 +2006-02-28,26.95,27.30,26.87,26.87,65036100,26.12 +2006-02-27,26.75,27.26,26.67,27.05,51301500,26.29 +2006-02-24,26.59,26.74,26.52,26.63,44753800,25.89 +2006-02-23,26.73,26.89,26.54,26.66,47359100,25.91 +2006-02-22,26.53,26.86,26.47,26.72,43043100,25.97 +2006-02-21,26.72,26.72,26.34,26.54,50216100,25.80 +2006-02-17,26.67,26.81,26.56,26.70,41513200,25.95 +2006-02-16,26.85,26.90,26.57,26.81,48868500,26.06 +2006-02-15,26.60,26.93,26.50,26.88,62808900,26.13 +2006-02-14,26.41,26.68,26.35,26.65,58432900,25.82 +2006-02-13,26.63,26.70,26.34,26.39,46707000,25.57 +2006-02-10,26.62,26.89,26.51,26.69,52127000,25.86 +2006-02-09,26.96,27.03,26.65,26.66,52861700,25.83 +2006-02-08,27.01,27.08,26.71,26.91,51795200,26.07 +2006-02-07,26.95,27.15,26.81,26.94,72159500,26.10 +2006-02-06,27.51,27.54,27.09,27.17,60170500,26.32 +2006-02-03,27.48,27.70,27.34,27.54,75022700,26.68 +2006-02-02,27.97,27.99,27.55,27.68,55073400,26.82 +2006-02-01,27.96,28.07,27.76,28.04,68448800,27.16 +2006-01-31,27.91,28.38,27.87,28.15,94841300,27.27 +2006-01-30,27.82,28.18,27.78,28.00,103999200,27.13 +2006-01-27,27.23,27.95,27.19,27.79,134520700,26.92 +2006-01-26,26.56,26.72,26.31,26.50,69509300,25.67 +2006-01-25,26.41,26.57,26.23,26.40,59072100,25.58 +2006-01-24,26.34,26.45,26.22,26.28,63040700,25.46 +2006-01-23,26.41,26.53,26.30,26.35,47925600,25.53 +2006-01-20,27.01,27.01,26.26,26.41,79165900,25.58 +2006-01-19,26.87,27.24,26.85,27.02,60367600,26.18 +2006-01-18,26.74,26.98,26.70,26.83,52376200,25.99 +2006-01-17,26.90,27.19,26.90,26.99,58566600,26.15 +2006-01-13,27.03,27.25,27.01,27.19,41418000,26.34 +2006-01-12,27.25,27.26,26.97,27.14,45994800,26.29 +2006-01-11,27.01,27.39,26.90,27.29,70120700,26.44 +2006-01-10,26.65,27.02,26.59,27.00,64921900,26.16 +2006-01-09,26.93,27.07,26.76,26.86,55625000,26.02 +2006-01-06,26.89,27.00,26.49,26.91,100963000,26.07 +2006-01-05,26.96,27.13,26.91,26.99,48245500,26.15 +2006-01-04,26.77,27.08,26.77,26.97,57975600,26.13 +2006-01-03,26.25,27.00,26.10,26.84,79973000,26.00 +2005-12-30,26.15,26.31,26.10,26.15,49044600,25.33 +2005-12-29,26.41,26.50,26.26,26.27,34495500,25.45 +2005-12-28,26.51,26.66,26.35,26.39,35444400,25.57 +2005-12-27,26.68,26.85,26.45,26.46,37819000,25.63 +2005-12-23,26.52,26.67,26.44,26.64,30689200,25.81 +2005-12-22,26.71,26.78,26.42,26.59,91276900,25.76 +2005-12-21,26.87,26.91,26.71,26.73,75800900,25.89 +2005-12-20,26.76,26.88,26.67,26.86,62960600,26.02 +2005-12-19,26.82,26.87,26.65,26.83,68680100,25.99 +2005-12-16,26.88,27.08,26.81,26.90,88542500,26.06 +2005-12-15,27.08,27.11,26.81,26.92,79018100,26.08 +2005-12-14,27.00,27.24,26.85,27.09,65076200,26.24 +2005-12-13,27.29,27.43,27.00,27.13,104285500,26.28 +2005-12-12,27.70,27.75,27.33,27.45,63757200,26.59 +2005-12-09,27.71,27.83,27.64,27.71,48467000,26.84 +2005-12-08,27.71,27.81,27.60,27.69,63931600,26.83 +2005-12-07,27.67,27.75,27.55,27.75,55583200,26.88 +2005-12-06,27.90,27.92,27.68,27.69,65980000,26.83 +2005-12-05,27.93,28.02,27.71,27.85,47517300,26.98 +2005-12-02,27.82,28.10,27.79,28.01,42319600,27.14 +2005-12-01,27.73,28.10,27.73,27.89,61006100,27.02 +2005-11-30,27.68,27.77,27.63,27.68,55904700,26.82 +2005-11-29,27.79,27.79,27.60,27.68,62220400,26.82 +2005-11-28,27.79,27.85,27.53,27.75,57517200,26.88 +2005-11-25,27.80,27.94,27.47,27.76,44082500,26.89 +2005-11-23,27.92,28.09,27.74,27.92,70541300,27.05 +2005-11-22,28.06,28.08,27.86,27.91,104253300,27.04 +2005-11-21,28.07,28.24,27.84,28.16,65794400,27.28 +2005-11-18,28.12,28.25,27.90,28.07,75431200,27.19 +2005-11-17,27.85,28.00,27.76,27.97,91351000,27.10 +2005-11-16,27.48,27.88,27.44,27.74,86277000,26.87 +2005-11-15,27.33,27.54,27.25,27.50,65081000,26.64 +2005-11-14,27.36,27.44,27.20,27.37,67152200,26.44 +2005-11-11,27.15,27.39,27.13,27.28,51945600,26.35 +2005-11-10,26.94,27.15,26.64,27.09,73314800,26.17 +2005-11-09,26.98,27.15,26.94,26.96,59562100,26.04 +2005-11-08,26.94,27.18,26.77,27.05,60091700,26.13 +2005-11-07,26.72,27.08,26.70,27.01,77104800,26.09 +2005-11-04,26.53,26.71,26.45,26.66,57464000,25.75 +2005-11-03,26.60,26.64,26.25,26.44,73421600,25.54 +2005-11-02,25.93,26.50,25.93,26.46,75067100,25.56 +2005-11-01,25.61,26.10,25.61,25.96,71370400,25.08 +2005-10-31,25.61,25.80,25.50,25.70,75122100,24.82 +2005-10-28,25.10,25.60,25.10,25.53,106559300,24.66 +2005-10-27,25.22,25.27,24.85,24.85,61566100,24.00 +2005-10-26,24.97,25.33,24.93,25.11,58178100,24.25 +2005-10-25,24.95,25.13,24.83,25.03,41310500,24.18 +2005-10-24,24.89,25.10,24.68,25.10,51868000,24.24 +2005-10-21,24.91,25.00,24.57,24.78,69431200,23.94 +2005-10-20,25.05,25.13,24.74,24.79,58830600,23.95 +2005-10-19,24.56,25.09,24.50,25.09,66574500,24.24 +2005-10-18,24.49,24.83,24.45,24.57,69328200,23.73 +2005-10-17,24.68,24.69,24.44,24.53,46924400,23.69 +2005-10-14,24.71,24.73,24.50,24.67,53846700,23.83 +2005-10-13,24.31,24.73,24.27,24.59,70192000,23.75 +2005-10-12,24.49,24.70,24.27,24.30,71294400,23.47 +2005-10-11,24.51,24.55,24.25,24.41,76567300,23.58 +2005-10-10,24.67,24.68,24.35,24.46,48880900,23.63 +2005-10-07,24.77,24.84,24.52,24.59,50768700,23.75 +2005-10-06,24.66,24.95,24.53,24.73,81724600,23.89 +2005-10-05,25.04,25.05,24.67,24.67,73684700,23.83 +2005-10-04,25.36,25.39,24.75,24.98,151666300,24.13 +2005-10-03,25.71,25.73,25.44,25.50,55341300,24.63 +2005-09-30,25.91,25.95,25.61,25.73,57644500,24.85 +2005-09-29,25.61,26.00,25.50,25.94,66807100,25.06 +2005-09-28,25.39,25.87,25.38,25.67,71019400,24.80 +2005-09-27,25.37,25.45,25.30,25.34,48797900,24.48 +2005-09-26,25.40,25.49,25.21,25.27,56203700,24.41 +2005-09-23,25.31,25.54,25.12,25.27,66396800,24.41 +2005-09-22,25.49,25.60,25.15,25.34,71314900,24.48 +2005-09-21,25.80,25.90,25.43,25.49,68281800,24.62 +2005-09-20,26.07,26.22,25.69,25.84,61043400,24.96 +2005-09-19,26.09,26.27,25.86,26.00,61832300,25.11 +2005-09-16,26.34,26.40,25.97,26.07,187384300,25.18 +2005-09-15,26.37,26.43,26.22,26.27,60357200,25.37 +2005-09-14,26.52,26.64,26.30,26.31,54969600,25.41 +2005-09-13,26.54,26.76,26.37,26.48,63422900,25.58 +2005-09-12,26.62,26.75,26.52,26.61,40550500,25.70 +2005-09-09,26.62,26.82,26.53,26.58,41515800,25.67 +2005-09-08,26.80,26.88,26.52,26.61,52552300,25.70 +2005-09-07,26.94,27.11,26.82,26.85,44656100,25.94 +2005-09-06,27.06,27.29,26.98,27.00,46089000,26.08 +2005-09-02,27.21,27.27,26.97,27.02,52047500,26.10 +2005-09-01,27.38,27.39,27.15,27.20,75974500,26.27 +2005-08-31,27.17,27.44,27.04,27.38,65210200,26.45 +2005-08-30,27.06,27.23,26.96,27.18,55163200,26.25 +2005-08-29,26.81,27.23,26.81,27.15,52307700,26.22 +2005-08-26,27.06,27.08,26.87,26.97,36774600,26.05 +2005-08-25,26.90,27.09,26.85,27.03,39306300,26.11 +2005-08-24,26.84,27.16,26.78,26.81,63645000,25.90 +2005-08-23,26.84,27.07,26.74,26.87,48296700,25.95 +2005-08-22,26.79,27.17,26.77,26.91,41691700,25.99 +2005-08-19,26.85,26.91,26.70,26.72,36043500,25.81 +2005-08-18,26.89,27.08,26.80,26.82,40861900,25.91 +2005-08-17,26.82,27.15,26.66,26.95,52413100,26.03 +2005-08-16,27.03,27.14,26.70,26.74,46894600,25.83 +2005-08-15,26.98,27.30,26.69,27.13,45976600,26.21 +2005-08-12,27.08,27.14,26.90,27.05,52006500,26.05 +2005-08-11,26.98,27.30,26.89,27.27,48646800,26.26 +2005-08-10,27.41,27.50,26.85,26.95,62818800,25.95 +2005-08-09,27.22,27.51,27.01,27.35,64761800,26.34 +2005-08-08,27.80,27.84,27.08,27.13,77207200,26.13 +2005-08-05,27.29,27.94,27.25,27.76,82212400,26.73 +2005-08-04,27.16,27.50,27.05,27.32,91461400,26.31 +2005-08-03,26.76,27.43,26.73,27.25,139422400,26.24 +2005-08-02,25.90,26.90,25.87,26.81,137510100,25.82 +2005-08-01,25.81,26.05,25.76,25.92,61346800,24.96 +2005-07-29,25.78,26.00,25.59,25.61,59524400,24.66 +2005-07-28,25.75,25.85,25.66,25.75,44738700,24.80 +2005-07-27,25.61,25.80,25.53,25.72,57977300,24.77 +2005-07-26,25.72,25.74,25.53,25.54,51476400,24.60 +2005-07-25,25.69,25.90,25.65,25.69,45174600,24.74 +2005-07-22,25.99,26.34,25.63,25.68,97558900,24.73 +2005-07-21,26.30,26.48,26.00,26.44,112932100,25.46 +2005-07-20,26.00,26.23,25.88,26.19,71424800,25.22 +2005-07-19,25.79,26.25,25.75,26.16,113290100,25.19 +2005-07-18,25.71,25.79,25.55,25.55,39668000,24.61 +2005-07-15,26.04,26.10,25.75,25.79,56472800,24.84 +2005-07-14,25.79,26.10,25.79,25.97,69506800,25.01 +2005-07-13,25.53,25.75,25.48,25.66,44749200,24.71 +2005-07-12,25.24,25.62,25.20,25.61,63384800,24.66 +2005-07-11,25.15,25.38,25.11,25.29,61525400,24.36 +2005-07-08,24.64,25.12,24.63,25.09,56104000,24.16 +2005-07-07,24.58,24.71,24.50,24.65,80082900,23.74 +2005-07-06,24.97,25.08,24.69,24.70,64214600,23.79 +2005-07-05,24.66,25.19,24.62,24.98,61883500,24.06 +2005-07-01,24.85,24.99,24.67,24.71,69718400,23.80 +2005-06-30,25.06,25.14,24.82,24.84,82018200,23.92 +2005-06-29,25.22,25.32,25.00,25.09,55859900,24.16 +2005-06-28,25.09,25.20,25.03,25.07,53058100,24.14 +2005-06-27,25.07,25.25,25.03,25.05,61636200,24.12 +2005-06-24,25.22,25.40,25.04,25.04,57970700,24.12 +2005-06-23,25.17,25.62,25.15,25.31,105159800,24.38 +2005-06-22,25.11,25.26,25.03,25.07,60492700,24.14 +2005-06-21,25.08,25.19,25.04,25.15,81084000,24.22 +2005-06-20,24.98,25.28,24.93,25.11,50538900,24.18 +2005-06-17,25.27,25.29,24.92,25.04,90821300,24.12 +2005-06-16,25.22,25.23,24.95,25.04,65918800,24.12 +2005-06-15,25.40,25.41,25.11,25.26,50764800,24.33 +2005-06-14,25.31,25.44,25.24,25.36,44243300,24.42 +2005-06-13,25.36,25.49,25.26,25.31,49104100,24.38 +2005-06-10,25.49,25.52,25.34,25.43,39459800,24.49 +2005-06-09,25.40,25.61,25.35,25.51,52767900,24.57 +2005-06-08,25.55,25.62,25.34,25.40,45369700,24.46 +2005-06-07,25.33,25.83,25.31,25.51,54511400,24.57 +2005-06-06,25.38,25.50,25.31,25.37,40756900,24.43 +2005-06-03,25.70,25.81,25.34,25.43,79659500,24.49 +2005-06-02,25.71,25.86,25.64,25.79,27212500,24.84 +2005-06-01,25.73,26.00,25.61,25.81,54621000,24.86 +2005-05-31,25.99,26.03,25.75,25.80,46131100,24.85 +2005-05-27,25.83,26.09,25.81,26.07,54978000,25.11 +2005-05-26,25.75,26.00,25.73,25.90,50579200,24.94 +2005-05-25,25.68,25.77,25.50,25.71,35749000,24.76 +2005-05-24,25.80,25.88,25.72,25.75,61287700,24.80 +2005-05-23,25.74,26.07,25.74,25.85,75421100,24.90 +2005-05-20,25.88,25.92,25.73,25.74,64444500,24.79 +2005-05-19,25.75,26.05,25.70,25.92,52120800,24.96 +2005-05-18,25.50,25.84,25.42,25.70,71182400,24.75 +2005-05-17,25.31,25.50,25.25,25.46,39983200,24.52 +2005-05-16,25.23,25.50,25.19,25.49,50577300,24.55 +2005-05-13,25.03,25.38,24.99,25.30,77204300,24.29 +2005-05-12,24.84,25.11,24.83,25.00,74540700,24.00 +2005-05-11,24.89,24.97,24.64,24.91,59463300,23.91 +2005-05-10,25.04,25.08,24.82,24.90,62235100,23.90 +2005-05-09,25.23,25.33,25.05,25.11,61872400,24.11 +2005-05-06,25.33,25.48,25.19,25.22,64322600,24.21 +2005-05-05,25.20,25.33,25.08,25.23,59362300,24.22 +2005-05-04,25.34,25.40,25.11,25.21,86864200,24.20 +2005-05-03,25.13,25.40,25.09,25.36,67867800,24.35 +2005-05-02,25.23,25.36,24.95,25.23,54376700,24.22 +2005-04-29,24.88,25.30,24.79,25.30,98641200,24.29 +2005-04-28,24.82,24.92,24.44,24.45,83623100,23.47 +2005-04-27,24.66,25.15,24.63,24.99,47732800,23.99 +2005-04-26,24.95,25.25,24.74,24.76,60464300,23.77 +2005-04-25,25.07,25.28,24.86,24.99,75457900,23.99 +2005-04-22,25.05,25.25,24.78,24.98,80087500,23.98 +2005-04-21,24.48,25.39,24.47,25.28,93562300,24.27 +2005-04-20,24.66,24.70,24.30,24.32,91923500,23.35 +2005-04-19,24.71,24.80,24.45,24.63,65956200,23.65 +2005-04-18,24.45,24.84,24.40,24.65,75766400,23.66 +2005-04-15,24.58,24.90,24.41,24.46,100251600,23.48 +2005-04-14,25.01,25.14,24.83,24.84,66754400,23.85 +2005-04-13,25.23,25.45,24.99,25.04,60929300,24.04 +2005-04-12,24.92,25.35,24.80,25.32,67517800,24.31 +2005-04-11,25.03,25.11,24.86,24.97,47791800,23.97 +2005-04-08,25.07,25.25,24.91,24.94,47956300,23.94 +2005-04-07,24.66,25.13,24.63,25.10,77451500,24.10 +2005-04-06,24.47,24.94,24.45,24.67,78020200,23.68 +2005-04-05,24.22,24.50,24.12,24.47,73549600,23.49 +2005-04-04,24.11,24.26,23.94,24.23,62196400,23.26 +2005-04-01,24.24,24.35,24.10,24.12,64619600,23.16 +2005-03-31,24.25,24.31,24.12,24.17,62382300,23.20 +2005-03-30,24.04,24.19,24.00,24.16,59585700,23.19 +2005-03-29,24.14,24.24,23.82,23.92,74231700,22.96 +2005-03-28,24.40,24.47,24.18,24.20,49802000,23.23 +2005-03-24,24.24,24.47,24.20,24.28,78820900,23.31 +2005-03-23,23.99,24.39,23.96,24.18,79293300,23.21 +2005-03-22,24.19,24.27,23.96,23.99,102113300,23.03 +2005-03-21,24.35,24.36,24.15,24.20,71446200,23.23 +2005-03-18,24.53,24.91,24.28,24.31,135904000,23.34 +2005-03-17,24.64,24.68,24.53,24.54,60573200,23.56 +2005-03-16,24.82,24.97,24.56,24.63,74841400,23.65 +2005-03-15,25.10,25.24,24.89,24.91,71469400,23.91 +2005-03-14,25.08,25.15,24.96,25.11,65550500,24.11 +2005-03-11,25.45,25.48,25.06,25.09,60617900,24.09 +2005-03-10,25.43,25.48,25.25,25.43,59132900,24.41 +2005-03-09,25.39,25.57,25.28,25.31,62991800,24.30 +2005-03-08,25.40,25.62,25.34,25.40,52871800,24.38 +2005-03-07,25.17,25.79,25.16,25.47,80407400,24.45 +2005-03-04,25.21,25.30,25.13,25.17,63058200,24.16 +2005-03-03,25.30,25.31,25.14,25.17,52183600,24.16 +2005-03-02,25.19,25.48,25.16,25.26,67739000,24.25 +2005-03-01,25.19,25.41,25.13,25.28,56394800,24.27 +2005-02-28,25.22,25.37,25.13,25.16,82728000,24.15 +2005-02-25,25.33,25.38,25.15,25.25,62467700,24.24 +2005-02-24,25.18,25.44,25.15,25.37,85236300,24.36 +2005-02-23,25.24,25.35,25.17,25.20,83689400,24.19 +2005-02-22,25.25,25.49,25.20,25.23,96419200,24.22 +2005-02-18,25.64,25.65,25.40,25.48,77091100,24.46 +2005-02-17,25.71,25.86,25.60,25.65,67024800,24.62 +2005-02-16,25.87,25.93,25.67,25.79,57506600,24.76 +2005-02-15,26.00,26.08,25.86,25.93,76551600,24.89 +2005-02-14,25.93,26.12,25.91,26.01,58694000,24.89 +2005-02-11,26.03,26.12,25.81,25.97,83835900,24.86 +2005-02-10,26.10,26.13,26.00,26.06,71796400,24.94 +2005-02-09,26.25,26.31,26.04,26.07,77874800,24.95 +2005-02-08,26.19,26.34,26.16,26.24,61343700,25.11 +2005-02-07,26.27,26.30,26.06,26.16,57763400,25.04 +2005-02-04,26.17,26.37,26.14,26.32,61246500,25.19 +2005-02-03,26.37,26.40,26.10,26.18,62545400,25.06 +2005-02-02,26.42,26.50,26.28,26.46,79329500,25.32 +2005-02-01,26.25,26.43,26.22,26.39,57981700,25.26 +2005-01-31,26.35,26.52,26.16,26.28,71442100,25.15 +2005-01-28,26.54,26.65,25.96,26.18,110466500,25.06 +2005-01-27,25.95,26.16,25.85,26.11,93204100,24.99 +2005-01-26,26.07,26.17,25.90,26.01,64974500,24.89 +2005-01-25,25.76,26.19,25.75,26.02,67580700,24.90 +2005-01-24,25.76,26.00,25.64,25.67,69010900,24.57 +2005-01-21,25.95,26.13,25.64,25.65,76501000,24.55 +2005-01-20,25.84,26.10,25.74,25.86,58380100,24.75 +2005-01-19,26.21,26.26,25.92,25.98,58114100,24.86 +2005-01-18,26.03,26.35,25.84,26.32,69146400,25.19 +2005-01-14,26.40,26.45,26.04,26.12,92180800,25.00 +2005-01-13,26.68,26.80,26.16,26.27,89861600,25.14 +2005-01-12,26.77,26.85,26.62,26.78,72940600,25.63 +2005-01-11,26.69,26.82,26.61,26.73,64712000,25.58 +2005-01-10,26.60,26.86,26.54,26.80,70376600,25.65 +2005-01-07,26.82,26.89,26.62,26.67,68723300,25.53 +2005-01-06,26.85,27.06,26.64,26.75,76890500,25.60 +2005-01-05,26.84,27.10,26.76,26.78,72463500,25.63 +2005-01-04,26.87,27.10,26.66,26.84,109442100,25.69 +2005-01-03,26.80,26.95,26.65,26.74,65002900,25.59 diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/data/yahoo_prices.csv b/js/dojo-release-1.7.2-src/dojox/charting/tests/data/yahoo_prices.csv new file mode 100644 index 0000000..261889b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/data/yahoo_prices.csv @@ -0,0 +1,796 @@ +Date,Open,High,Low,Close,Volume,Adj Close +2008-02-29,27.94,28.41,27.50,27.78,23860500,27.78 +2008-02-28,27.98,28.82,27.96,28.15,30113200,28.15 +2008-02-27,28.33,28.49,27.75,28.37,27664100,28.37 +2008-02-26,27.93,28.55,27.81,28.22,26013000,28.22 +2008-02-25,28.42,28.57,27.75,28.13,32470600,28.13 +2008-02-22,28.36,28.64,27.98,28.42,26157800,28.42 +2008-02-21,28.76,29.17,28.25,28.42,34494000,28.42 +2008-02-20,28.71,29.04,28.39,28.83,29274700,28.83 +2008-02-19,29.34,29.42,28.75,29.01,38679600,29.01 +2008-02-15,29.95,30.15,29.43,29.66,40125200,29.66 +2008-02-14,29.98,30.25,29.75,29.98,38045600,29.98 +2008-02-13,29.78,30.07,29.60,29.88,57047700,29.88 +2008-02-12,29.81,29.84,29.40,29.57,42445600,29.57 +2008-02-11,29.89,30.05,29.32,29.87,67253700,29.87 +2008-02-08,28.98,29.22,28.71,29.20,55618900,29.20 +2008-02-07,28.63,29.19,28.60,29.04,44248800,29.04 +2008-02-06,29.11,29.33,28.53,28.57,55648800,28.57 +2008-02-05,28.78,29.57,28.75,28.98,68583700,28.98 +2008-02-04,28.33,29.50,28.33,29.33,144814000,29.33 +2008-02-01,28.68,29.83,27.34,28.38,438248800,28.38 +2008-01-31,18.87,19.35,18.72,19.18,41449800,19.18 +2008-01-30,18.62,20.81,18.58,19.05,115993300,19.05 +2008-01-29,20.87,20.90,20.05,20.81,79230000,20.81 +2008-01-28,21.56,21.90,20.42,20.78,32473100,20.78 +2008-01-25,22.24,22.37,21.32,21.94,28386800,21.94 +2008-01-24,20.44,21.75,20.42,21.69,39823300,21.69 +2008-01-23,19.25,20.34,18.72,20.01,42064200,20.01 +2008-01-22,19.29,21.03,19.26,19.86,38126200,19.86 +2008-01-18,21.27,21.61,20.07,20.78,41239300,20.78 +2008-01-17,22.00,22.17,21.14,21.22,28812600,21.22 +2008-01-16,22.20,22.75,21.73,21.95,38155300,21.95 +2008-01-15,23.00,23.49,22.57,22.91,31911000,22.91 +2008-01-14,23.51,23.76,23.18,23.70,18552900,23.70 +2008-01-11,23.81,24.13,22.98,23.36,27297400,23.36 +2008-01-10,23.19,24.57,22.83,24.09,52342100,24.09 +2008-01-09,22.47,22.80,21.37,22.56,46662700,22.56 +2008-01-08,23.28,23.65,22.50,22.61,22974000,22.61 +2008-01-07,23.12,23.56,22.73,23.18,24769400,23.18 +2008-01-04,23.81,23.81,23.10,23.16,20745800,23.16 +2008-01-03,23.86,24.19,23.70,23.84,20179700,23.84 +2008-01-02,23.80,24.15,23.60,23.72,25671700,23.72 +2007-12-31,23.22,23.43,23.11,23.26,14782600,23.26 +2007-12-28,23.66,23.71,23.21,23.45,13773000,23.45 +2007-12-27,23.60,24.15,23.57,23.71,16041500,23.71 +2007-12-26,23.85,24.25,23.85,23.96,9821600,23.96 +2007-12-24,24.01,24.19,23.94,24.05,24861800,24.05 +2007-12-21,23.88,24.10,23.74,24.01,24094600,24.01 +2007-12-20,23.50,23.80,23.24,23.64,21030700,23.64 +2007-12-19,22.92,23.69,22.92,23.31,26547300,23.31 +2007-12-18,23.22,23.35,22.80,23.02,27735600,23.02 +2007-12-17,23.80,24.03,22.94,23.04,37877100,23.04 +2007-12-14,24.13,24.47,24.00,24.06,15125500,24.06 +2007-12-13,24.39,24.75,24.19,24.38,23787400,24.38 +2007-12-12,24.82,25.00,24.11,24.54,20241200,24.54 +2007-12-11,25.15,25.65,24.36,24.47,28579100,24.47 +2007-12-10,25.51,25.57,24.92,25.20,26074900,25.20 +2007-12-07,25.86,26.11,25.50,25.63,11443200,25.63 +2007-12-06,25.88,26.02,25.39,25.96,19236500,25.96 +2007-12-05,26.63,26.73,25.73,25.98,21170900,25.98 +2007-12-04,26.14,26.73,26.11,26.42,14668800,26.42 +2007-12-03,26.64,27.20,26.56,26.61,15250100,26.61 +2007-11-30,26.96,27.33,26.51,26.81,23994000,26.81 +2007-11-29,26.01,26.71,25.91,26.63,17929700,26.63 +2007-11-28,26.03,26.70,25.93,26.20,23239300,26.20 +2007-11-27,25.18,26.00,25.17,25.59,19484500,25.59 +2007-11-26,26.08,26.25,25.20,25.22,24174600,25.22 +2007-11-23,25.98,26.40,25.76,26.13,9249400,26.13 +2007-11-21,26.11,26.58,25.52,25.71,23320100,25.71 +2007-11-20,26.93,27.25,25.98,26.72,25672500,26.72 +2007-11-19,27.11,27.35,26.35,26.76,33066200,26.76 +2007-11-16,25.66,27.13,25.10,26.82,53013100,26.82 +2007-11-15,24.94,25.75,24.90,25.42,27920800,25.42 +2007-11-14,26.42,26.44,25.00,25.07,38154800,25.07 +2007-11-13,25.53,26.24,25.30,26.10,34123300,26.10 +2007-11-12,25.80,26.20,24.69,24.78,31264200,24.78 +2007-11-09,26.13,26.38,25.40,25.79,45199700,25.79 +2007-11-08,28.11,28.24,25.82,26.70,58160600,26.70 +2007-11-07,29.27,29.30,27.56,27.63,57069800,27.63 +2007-11-06,31.76,31.79,29.00,29.93,63664400,29.93 +2007-11-05,30.71,32.37,30.35,31.36,43520300,31.36 +2007-11-02,30.54,31.21,29.64,31.11,34090300,31.11 +2007-11-01,30.86,31.10,30.04,30.22,26913300,30.22 +2007-10-31,31.50,31.75,30.50,31.10,34762000,31.10 +2007-10-30,31.55,31.64,30.12,30.83,52417300,30.83 +2007-10-29,34.07,34.08,31.18,31.79,83685800,31.79 +2007-10-26,32.43,33.99,31.61,33.63,66018100,33.63 +2007-10-25,30.75,31.62,30.50,31.34,38706600,31.34 +2007-10-24,30.68,30.98,30.00,30.68,33603100,30.68 +2007-10-23,30.12,30.88,30.03,30.64,45406200,30.64 +2007-10-22,28.93,30.00,28.80,29.85,27750100,29.85 +2007-10-19,29.36,29.96,28.85,29.03,41933000,29.03 +2007-10-18,28.59,29.60,28.47,29.35,28152200,29.35 +2007-10-17,29.10,29.20,28.00,28.82,75067700,28.82 +2007-10-16,27.37,27.48,26.55,26.69,56275300,26.69 +2007-10-15,28.32,28.40,27.46,27.86,22994100,27.86 +2007-10-12,27.76,28.51,27.65,28.48,22130500,28.48 +2007-10-11,28.44,28.68,27.50,27.65,25298300,27.65 +2007-10-10,28.43,28.70,27.90,28.36,14847100,28.36 +2007-10-09,28.35,28.76,27.94,28.37,19539500,28.37 +2007-10-08,28.01,28.17,27.75,28.05,15060700,28.05 +2007-10-05,27.78,28.16,27.75,27.88,28389600,27.88 +2007-10-04,27.19,27.29,26.90,27.15,19203600,27.15 +2007-10-03,27.16,27.38,26.82,27.17,18052500,27.17 +2007-10-02,27.20,27.24,26.62,26.95,15133400,26.95 +2007-10-01,26.76,27.10,26.73,27.04,16938700,27.04 +2007-09-28,26.49,26.89,26.20,26.84,22155600,26.84 +2007-09-27,26.95,26.95,26.17,26.27,21365200,26.27 +2007-09-26,26.70,27.07,26.50,26.70,18692400,26.70 +2007-09-25,25.70,26.65,25.63,26.51,33721300,26.51 +2007-09-24,26.13,26.40,25.51,25.73,27597800,25.73 +2007-09-21,25.54,26.21,25.29,26.05,53074900,26.05 +2007-09-20,25.28,25.61,25.16,25.29,17312000,25.29 +2007-09-19,25.09,25.37,24.81,25.29,25867900,25.29 +2007-09-18,25.06,25.21,24.53,25.06,28121000,25.06 +2007-09-17,24.50,25.10,24.38,24.95,20594000,24.95 +2007-09-14,23.69,25.00,23.65,24.73,28868600,24.73 +2007-09-13,23.60,23.96,23.60,23.72,10309000,23.72 +2007-09-12,23.64,23.94,23.53,23.56,16553700,23.56 +2007-09-11,23.31,23.84,23.31,23.71,17207500,23.71 +2007-09-10,23.85,23.85,23.10,23.30,15246000,23.30 +2007-09-07,23.76,24.05,23.60,23.76,12591900,23.76 +2007-09-06,24.22,24.32,23.62,24.15,13922100,24.15 +2007-09-05,24.10,24.40,23.91,24.10,23071000,24.10 +2007-09-04,23.30,24.50,23.20,23.97,43598600,23.97 +2007-08-31,22.81,22.83,22.51,22.73,13052500,22.73 +2007-08-30,22.49,22.91,22.38,22.61,18172500,22.61 +2007-08-29,22.60,22.69,22.27,22.55,24599900,22.55 +2007-08-28,22.95,23.10,22.50,22.52,18030600,22.52 +2007-08-27,23.59,23.76,23.01,23.03,16523800,23.03 +2007-08-24,23.03,23.73,23.03,23.59,11191100,23.59 +2007-08-23,23.35,23.36,22.95,23.13,15603000,23.13 +2007-08-22,23.22,23.52,23.18,23.23,18763700,23.23 +2007-08-21,23.25,23.48,22.91,23.04,25962900,23.04 +2007-08-20,23.64,23.74,23.18,23.34,13338900,23.34 +2007-08-17,23.26,23.63,22.76,23.54,19528200,23.54 +2007-08-16,23.00,23.15,22.50,22.76,29652200,22.76 +2007-08-15,23.56,24.00,23.25,23.32,18767700,23.32 +2007-08-14,24.69,24.70,23.69,23.72,18707100,23.72 +2007-08-13,24.21,24.74,24.01,24.57,21317600,24.57 +2007-08-10,23.93,24.22,23.52,23.94,22939800,23.94 +2007-08-09,23.67,24.45,23.51,23.80,24052500,23.80 +2007-08-08,23.46,23.87,23.43,23.87,17198000,23.87 +2007-08-07,22.75,23.70,22.69,23.44,20075300,23.44 +2007-08-06,23.03,23.15,22.44,22.97,28948000,22.97 +2007-08-03,23.20,23.39,22.87,22.92,19702100,22.92 +2007-08-02,22.65,23.70,22.65,23.36,21098900,23.36 +2007-08-01,23.17,23.40,22.85,23.25,22030400,23.25 +2007-07-31,23.88,23.93,23.24,23.25,21575800,23.25 +2007-07-30,23.55,23.88,23.38,23.62,20976600,23.62 +2007-07-27,23.98,24.49,23.47,23.49,35783800,23.49 +2007-07-26,24.40,24.49,23.62,24.03,33373300,24.03 +2007-07-25,25.01,25.32,24.59,24.68,21882400,24.68 +2007-07-24,24.80,25.34,24.73,24.84,28981000,24.84 +2007-07-23,25.43,25.46,24.98,24.99,26631500,24.99 +2007-07-20,25.70,25.89,25.20,25.35,38056100,25.35 +2007-07-19,26.32,26.34,25.92,26.03,29537900,26.03 +2007-07-18,26.07,26.72,26.02,26.20,65125900,26.20 +2007-07-17,26.74,27.80,26.70,27.53,53656100,27.53 +2007-07-16,26.48,26.74,26.13,26.70,30804500,26.70 +2007-07-13,26.87,26.97,26.50,26.58,18522700,26.58 +2007-07-12,26.70,26.97,26.34,26.96,20082300,26.96 +2007-07-11,27.03,27.05,26.55,26.69,21970700,26.69 +2007-07-10,27.09,27.57,26.96,26.97,24635500,26.97 +2007-07-09,26.92,27.33,26.82,27.20,17515800,27.20 +2007-07-06,27.01,27.14,26.93,27.10,12284500,27.10 +2007-07-05,26.92,27.14,26.90,26.99,16071900,26.99 +2007-07-03,26.95,27.25,26.90,27.00,11643400,27.00 +2007-07-02,27.19,27.27,26.76,26.86,21011000,26.86 +2007-06-29,27.21,27.38,26.93,27.13,13842500,27.13 +2007-06-28,27.44,27.49,27.12,27.25,17124500,27.25 +2007-06-27,27.51,27.66,27.40,27.58,13997000,27.58 +2007-06-26,27.73,28.18,27.36,27.71,25324000,27.71 +2007-06-25,27.60,27.77,27.34,27.64,21232200,27.64 +2007-06-22,27.68,27.79,27.31,27.38,33796900,27.38 +2007-06-21,27.69,27.94,27.55,27.67,17885800,27.67 +2007-06-20,27.89,28.17,27.66,27.66,33496400,27.66 +2007-06-19,29.40,29.40,27.54,27.63,65967500,27.63 +2007-06-18,27.72,28.34,27.50,28.12,70919400,28.12 +2007-06-15,27.49,27.52,27.19,27.31,23816900,27.31 +2007-06-14,27.38,27.64,27.15,27.30,18919400,27.30 +2007-06-13,27.12,27.41,26.61,27.38,31210700,27.38 +2007-06-12,27.30,27.66,26.98,27.05,22203600,27.05 +2007-06-11,27.27,27.52,27.15,27.35,14856500,27.35 +2007-06-08,27.02,27.45,26.96,27.39,18618500,27.39 +2007-06-07,27.34,27.73,26.98,26.98,34232300,26.98 +2007-06-06,28.05,28.11,27.30,27.44,33508200,27.44 +2007-06-05,28.40,28.59,28.10,28.23,20494800,28.23 +2007-06-04,28.60,28.78,28.40,28.59,13428800,28.59 +2007-06-01,28.90,29.13,28.61,28.78,12398800,28.78 +2007-05-31,28.76,28.85,28.49,28.70,15859100,28.70 +2007-05-30,28.19,28.38,28.00,28.38,16046800,28.38 +2007-05-29,28.36,28.73,28.20,28.40,13981500,28.40 +2007-05-25,28.44,28.73,28.34,28.58,10334600,28.58 +2007-05-24,28.65,28.88,28.25,28.41,19122900,28.41 +2007-05-23,29.10,29.37,28.53,28.61,27964400,28.61 +2007-05-22,29.33,29.35,28.78,28.92,19131300,28.92 +2007-05-21,29.62,29.86,29.32,29.35,18955900,29.35 +2007-05-18,28.90,29.80,28.78,29.75,35487200,29.75 +2007-05-17,28.99,29.13,28.49,28.57,23535000,28.57 +2007-05-16,28.89,29.37,28.25,29.21,32944800,29.21 +2007-05-15,29.16,29.42,28.75,28.81,22226800,28.81 +2007-05-14,29.79,30.00,29.08,29.31,20895900,29.31 +2007-05-11,29.62,30.08,29.53,30.05,13838800,30.05 +2007-05-10,30.52,30.69,29.61,29.70,26570200,29.70 +2007-05-09,30.17,30.44,29.95,30.22,23533100,30.22 +2007-05-08,30.24,31.10,30.21,30.41,28018200,30.41 +2007-05-07,30.13,30.98,29.86,30.38,41243900,30.38 +2007-05-04,33.27,33.61,29.58,30.98,245611400,30.98 +2007-05-03,28.25,28.50,28.01,28.18,20119500,28.18 +2007-05-02,27.72,28.26,27.72,28.12,16911800,28.12 +2007-05-01,28.25,28.35,27.53,27.73,18310900,27.73 +2007-04-30,28.32,28.50,28.00,28.04,17596300,28.04 +2007-04-27,28.35,28.86,28.17,28.34,21097000,28.34 +2007-04-26,27.98,28.65,27.73,28.49,32331000,28.49 +2007-04-25,28.22,28.27,27.68,28.06,35568600,28.06 +2007-04-24,28.03,28.26,27.69,28.02,25964000,28.02 +2007-04-23,27.53,28.14,27.37,27.88,27262400,27.88 +2007-04-20,27.86,27.86,27.37,27.46,39123300,27.46 +2007-04-19,28.10,28.23,27.46,27.51,45664700,27.51 +2007-04-18,28.42,28.90,27.89,28.31,127875300,28.31 +2007-04-17,31.98,32.14,31.71,32.09,43223800,32.09 +2007-04-16,31.68,31.79,31.24,31.61,14359100,31.61 +2007-04-13,31.15,31.50,30.96,31.41,12006300,31.41 +2007-04-12,31.26,31.42,31.10,31.21,13904800,31.21 +2007-04-11,31.65,31.73,30.90,31.17,16141100,31.17 +2007-04-10,31.64,32.02,31.60,31.69,12797600,31.69 +2007-04-09,32.01,32.24,31.60,31.64,12408000,31.64 +2007-04-05,32.00,32.09,31.72,31.96,13878100,31.96 +2007-04-04,31.61,31.87,31.48,31.62,7836200,31.62 +2007-04-03,31.41,32.00,31.41,31.72,12324600,31.72 +2007-04-02,31.22,31.40,30.93,31.28,8668800,31.28 +2007-03-30,31.21,31.60,31.02,31.29,9425000,31.29 +2007-03-29,31.71,31.73,30.83,31.34,13815000,31.34 +2007-03-28,31.45,31.70,31.25,31.41,13162500,31.41 +2007-03-27,31.56,31.66,31.24,31.55,9403100,31.55 +2007-03-26,31.25,31.74,31.24,31.66,12907000,31.66 +2007-03-23,31.33,31.70,31.16,31.36,12727900,31.36 +2007-03-22,31.36,31.44,30.85,31.26,12989800,31.26 +2007-03-21,30.33,31.39,30.21,31.29,26667300,31.29 +2007-03-20,30.00,30.35,29.94,30.33,12203800,30.33 +2007-03-19,30.00,30.19,29.92,30.03,9983800,30.03 +2007-03-16,30.02,30.11,29.72,29.88,19799300,29.88 +2007-03-15,29.81,30.07,29.78,30.06,15440900,30.06 +2007-03-14,29.63,30.04,29.26,29.86,23604900,29.86 +2007-03-13,29.77,30.24,29.42,29.56,18263800,29.56 +2007-03-12,29.30,30.11,29.29,29.99,35991600,29.99 +2007-03-09,29.85,30.15,28.79,29.12,72749900,29.12 +2007-03-08,30.82,31.04,30.58,30.71,13715100,30.71 +2007-03-07,30.95,31.03,30.33,30.39,16014300,30.39 +2007-03-06,30.89,31.06,30.52,30.80,33472600,30.80 +2007-03-05,30.18,31.90,30.14,30.31,21469000,30.31 +2007-03-02,30.54,30.89,30.28,30.42,18136600,30.42 +2007-03-01,30.13,31.23,30.00,30.86,24012900,30.86 +2007-02-28,30.86,31.47,30.09,30.86,30487800,30.86 +2007-02-27,31.38,31.64,30.24,30.95,31505200,30.95 +2007-02-26,32.80,32.84,30.85,32.11,28295200,32.11 +2007-02-23,31.60,32.18,31.41,32.10,21533500,32.10 +2007-02-22,31.60,32.08,31.32,31.60,15485100,31.60 +2007-02-21,31.74,31.77,31.22,31.65,27999200,31.65 +2007-02-20,31.80,32.21,31.39,32.01,20026500,32.01 +2007-02-16,31.00,32.00,31.00,31.91,36774800,31.91 +2007-02-15,30.82,31.65,30.69,31.25,28160300,31.25 +2007-02-14,29.69,30.86,29.64,30.66,30821100,30.66 +2007-02-13,29.37,29.68,29.26,29.56,12802300,29.56 +2007-02-12,29.29,29.77,29.05,29.17,18316200,29.17 +2007-02-09,30.07,30.16,29.51,29.74,18172200,29.74 +2007-02-08,29.75,30.24,29.73,30.08,15561700,30.08 +2007-02-07,29.35,30.15,29.12,29.89,29162600,29.89 +2007-02-06,28.61,29.56,28.60,29.35,24506800,29.35 +2007-02-05,28.67,28.80,28.36,28.56,11163300,28.56 +2007-02-02,28.57,28.92,28.45,28.77,16483100,28.77 +2007-02-01,28.68,28.71,28.15,28.35,17905200,28.35 +2007-01-31,28.04,28.48,27.82,28.31,14100300,28.31 +2007-01-30,27.87,28.39,27.61,28.04,13576600,28.04 +2007-01-29,28.05,28.21,27.73,27.87,16859000,27.87 +2007-01-26,28.33,28.52,27.96,28.04,21334800,28.04 +2007-01-25,28.68,29.05,28.13,28.21,28356200,28.21 +2007-01-24,28.34,29.20,28.22,28.94,81017500,28.94 +2007-01-23,27.42,27.54,26.88,26.96,43728100,26.96 +2007-01-22,27.85,27.90,27.18,27.42,23199800,27.42 +2007-01-19,27.93,28.34,27.55,27.64,24757700,27.64 +2007-01-18,28.92,28.99,27.82,28.12,23869400,28.12 +2007-01-17,29.40,29.40,28.81,29.05,17796100,29.05 +2007-01-16,29.88,29.88,28.79,29.29,24448400,29.29 +2007-01-12,28.98,29.50,28.49,29.45,20971100,29.45 +2007-01-11,28.76,29.37,28.70,29.20,28457500,29.20 +2007-01-10,27.48,28.92,27.44,28.70,40240000,28.70 +2007-01-09,28.00,28.05,27.41,27.58,25621500,27.58 +2007-01-08,27.70,28.04,27.43,27.92,25713700,27.92 +2007-01-05,26.70,27.87,26.66,27.74,64264600,27.74 +2007-01-04,25.64,26.92,25.52,26.85,32512200,26.85 +2007-01-03,25.85,26.26,25.26,25.61,26352700,25.61 +2006-12-29,25.42,25.82,25.33,25.54,16297800,25.54 +2006-12-28,25.62,25.72,25.30,25.36,11908400,25.36 +2006-12-27,25.47,25.88,25.45,25.75,12421800,25.75 +2006-12-26,25.49,25.61,25.34,25.45,8400500,25.45 +2006-12-22,25.67,25.88,25.45,25.55,14666100,25.55 +2006-12-21,25.71,25.75,25.13,25.48,27050600,25.48 +2006-12-20,26.24,26.31,25.54,25.59,24905600,25.59 +2006-12-19,26.05,26.50,25.91,26.41,18973800,26.41 +2006-12-18,26.89,26.97,26.07,26.30,19431200,26.30 +2006-12-15,27.00,27.22,26.76,26.90,27227300,26.90 +2006-12-14,26.63,26.97,26.50,26.87,14400300,26.87 +2006-12-13,27.05,27.23,26.51,26.60,20428600,26.60 +2006-12-12,26.63,27.38,26.60,26.75,31971600,26.75 +2006-12-11,26.37,26.70,26.12,26.49,12916900,26.49 +2006-12-08,26.65,26.78,26.27,26.34,19262200,26.34 +2006-12-07,26.95,27.16,26.60,26.63,22407000,26.63 +2006-12-06,27.25,27.45,26.60,26.86,35202800,26.86 +2006-12-05,26.87,27.61,26.86,27.43,27118200,27.43 +2006-12-04,26.49,27.30,26.49,26.89,28012700,26.89 +2006-12-01,27.00,27.25,26.00,26.49,20055800,26.49 +2006-11-30,27.00,27.15,26.73,27.01,14916300,27.01 +2006-11-29,27.40,27.40,26.71,27.04,19375100,27.04 +2006-11-28,27.03,27.24,26.85,27.00,14940800,27.00 +2006-11-27,27.50,28.50,27.17,27.27,19922300,27.27 +2006-11-24,28.22,28.49,27.70,28.03,9384400,28.03 +2006-11-22,27.51,28.56,27.29,28.49,32055800,28.49 +2006-11-21,26.50,27.34,26.50,27.14,21138300,27.14 +2006-11-20,26.96,27.04,26.63,26.72,20272000,26.72 +2006-11-17,26.68,27.05,26.63,26.91,17955200,26.91 +2006-11-16,27.31,27.33,26.20,26.64,38508500,26.64 +2006-11-15,27.18,27.50,27.03,27.15,22112700,27.15 +2006-11-14,27.40,27.50,27.11,27.24,20145700,27.24 +2006-11-13,27.17,27.62,27.15,27.40,16876500,27.40 +2006-11-10,27.40,27.50,27.03,27.39,21366600,27.39 +2006-11-09,27.18,27.65,26.96,27.45,27428600,27.45 +2006-11-08,26.36,27.25,26.31,26.90,23384800,26.90 +2006-11-07,26.69,27.15,26.58,26.61,28442700,26.61 +2006-11-06,26.34,26.70,26.10,26.59,22563600,26.59 +2006-11-03,26.63,26.70,26.04,26.18,15313800,26.18 +2006-11-02,25.94,26.60,25.77,26.53,34824500,26.53 +2006-11-01,26.50,26.62,25.82,25.99,26300200,25.99 +2006-10-31,26.44,26.70,26.10,26.34,33492800,26.34 +2006-10-30,25.87,26.40,25.66,25.95,35295800,25.95 +2006-10-27,25.23,25.60,24.90,25.34,29647200,25.34 +2006-10-26,24.70,25.33,24.36,25.28,38435800,25.28 +2006-10-25,23.73,24.64,23.69,24.49,40110600,24.49 +2006-10-24,23.35,23.64,23.15,23.53,31704000,23.53 +2006-10-23,23.14,23.50,23.10,23.37,26301200,23.37 +2006-10-20,23.22,23.27,22.65,23.21,49795600,23.21 +2006-10-19,23.02,23.59,23.00,23.14,42280400,23.14 +2006-10-18,24.57,24.75,22.88,22.99,111660900,22.99 +2006-10-17,23.74,24.35,23.68,24.15,67417200,24.15 +2006-10-16,24.34,24.52,23.75,24.18,36496400,24.18 +2006-10-13,23.90,24.50,23.57,24.42,51338900,24.42 +2006-10-12,24.32,24.38,24.10,24.12,25824500,24.12 +2006-10-11,24.29,24.64,23.80,24.24,39356300,24.24 +2006-10-10,24.94,25.03,24.32,24.47,30371900,24.47 +2006-10-09,25.45,25.72,25.00,25.03,15729500,25.03 +2006-10-06,25.09,25.50,25.01,25.47,20847000,25.47 +2006-10-05,25.16,25.25,24.88,25.18,17634000,25.18 +2006-10-04,24.89,25.26,24.74,25.21,21717900,25.21 +2006-10-03,24.81,25.00,24.70,24.84,21148300,24.84 +2006-10-02,25.45,25.46,24.75,24.88,19641300,24.88 +2006-09-29,25.50,25.59,25.24,25.28,18982600,25.28 +2006-09-28,24.87,25.50,24.84,25.33,35331200,25.33 +2006-09-27,25.00,25.01,24.60,24.65,29835900,24.65 +2006-09-26,25.44,25.48,24.81,25.05,34950100,25.05 +2006-09-25,25.64,25.87,25.20,25.29,19992400,25.29 +2006-09-22,25.34,25.69,25.18,25.52,20667400,25.52 +2006-09-21,25.53,25.95,25.21,25.34,28584500,25.34 +2006-09-20,26.04,26.09,25.38,25.64,55636600,25.64 +2006-09-19,29.09,29.13,25.10,25.75,127718600,25.75 +2006-09-18,29.37,29.39,28.58,29.00,15685000,29.00 +2006-09-15,29.30,29.57,29.22,29.32,19550300,29.32 +2006-09-14,29.10,29.24,28.89,29.03,9565500,29.03 +2006-09-13,29.06,29.37,28.80,29.17,15248400,29.17 +2006-09-12,28.55,29.22,28.46,29.09,10005000,29.09 +2006-09-11,28.05,28.73,27.67,28.61,12936000,28.61 +2006-09-08,28.04,28.32,27.97,28.14,9781800,28.14 +2006-09-07,28.40,28.51,27.82,27.86,18434400,27.86 +2006-09-06,28.94,29.01,28.49,28.50,12800600,28.50 +2006-09-05,29.45,29.48,28.95,29.07,11425600,29.07 +2006-09-01,28.91,29.53,28.91,29.49,11573600,29.49 +2006-08-31,28.99,29.02,28.59,28.83,8879300,28.83 +2006-08-30,29.00,29.14,28.71,29.02,13119300,29.02 +2006-08-29,28.86,29.01,28.51,28.96,9888800,28.96 +2006-08-28,28.75,29.25,28.70,28.91,10404700,28.91 +2006-08-25,28.95,29.28,28.74,28.77,6203800,28.77 +2006-08-24,28.75,29.13,28.70,28.99,8983600,28.99 +2006-08-23,29.34,29.47,28.68,28.70,8837400,28.70 +2006-08-22,28.84,29.65,28.80,29.26,10891800,29.26 +2006-08-21,29.22,29.52,28.83,28.90,11575200,28.90 +2006-08-18,28.90,29.97,28.77,29.78,19611300,29.78 +2006-08-17,28.38,29.32,28.34,28.91,17251600,28.91 +2006-08-16,28.35,28.46,27.97,28.39,12589400,28.39 +2006-08-15,27.58,28.20,27.48,28.17,15298500,28.17 +2006-08-14,27.71,27.80,27.00,27.26,10640100,27.26 +2006-08-11,27.52,27.72,27.40,27.50,9252200,27.50 +2006-08-10,26.95,27.80,26.85,27.49,12597900,27.49 +2006-08-09,27.75,27.85,27.00,27.22,14736100,27.22 +2006-08-08,26.95,27.70,26.63,27.44,19332800,27.44 +2006-08-07,26.92,27.11,26.58,27.08,12847200,27.08 +2006-08-04,27.20,27.58,26.83,26.99,11607900,26.99 +2006-08-03,26.50,27.05,26.40,26.90,15468500,26.90 +2006-08-02,27.01,27.10,26.45,26.63,18116200,26.63 +2006-08-01,27.06,27.12,26.74,26.94,18613100,26.94 +2006-07-31,27.46,27.55,26.99,27.14,16492600,27.14 +2006-07-28,26.90,27.50,26.33,27.47,21584800,27.47 +2006-07-27,27.35,27.50,26.64,26.70,25153000,26.70 +2006-07-26,26.78,27.51,26.57,27.08,20073800,27.08 +2006-07-25,26.75,27.19,26.57,26.95,21388800,26.95 +2006-07-24,26.24,27.23,25.89,26.94,42631300,26.94 +2006-07-21,24.99,26.06,24.91,25.89,36187100,25.89 +2006-07-20,25.55,26.21,24.91,25.27,54659700,25.27 +2006-07-19,26.41,26.70,25.04,25.20,204339000,25.20 +2006-07-18,32.08,32.26,31.25,32.24,39767700,32.24 +2006-07-17,31.98,32.40,31.69,31.84,16369600,31.84 +2006-07-14,32.34,32.48,31.85,32.08,12484700,32.08 +2006-07-13,32.85,33.16,32.07,32.23,19463500,32.23 +2006-07-12,33.03,33.74,32.99,33.38,18708400,33.38 +2006-07-11,32.79,33.35,32.32,33.17,11285900,33.17 +2006-07-10,32.91,33.14,32.73,32.85,15317600,32.85 +2006-07-07,32.94,33.05,32.37,32.50,12372500,32.50 +2006-07-06,32.77,33.22,32.70,33.11,13801500,33.11 +2006-07-05,32.85,32.99,32.33,32.47,13453900,32.47 +2006-07-03,32.90,33.44,32.90,33.30,8067100,33.30 +2006-06-30,33.01,33.12,32.54,33.00,22566600,33.00 +2006-06-29,32.26,33.00,32.20,32.97,15745900,32.97 +2006-06-28,31.75,32.17,31.70,31.92,14032800,31.92 +2006-06-27,31.85,32.22,31.32,31.51,16589400,31.51 +2006-06-26,31.45,31.70,31.16,31.55,11457000,31.55 +2006-06-23,31.08,31.76,30.82,31.37,17378500,31.37 +2006-06-22,30.85,31.16,30.44,30.68,11500300,30.68 +2006-06-21,30.77,31.54,30.65,31.06,18252900,31.06 +2006-06-20,30.42,30.65,30.10,30.60,12613200,30.60 +2006-06-19,30.51,30.75,30.06,30.35,12236700,30.35 +2006-06-16,30.70,30.86,30.15,30.36,12951700,30.36 +2006-06-15,29.98,30.96,29.72,30.79,22375000,30.79 +2006-06-14,29.81,30.00,29.25,29.62,19257500,29.62 +2006-06-13,29.77,30.20,29.51,29.65,16435700,29.65 +2006-06-12,30.37,30.65,29.66,29.78,14344600,29.78 +2006-06-09,30.70,30.80,30.23,30.37,10044700,30.37 +2006-06-08,30.43,30.99,29.83,30.45,20538600,30.45 +2006-06-07,30.80,31.25,30.36,30.54,17470100,30.54 +2006-06-06,30.83,30.97,30.35,30.70,15615600,30.70 +2006-06-05,31.19,31.43,30.79,30.82,17188500,30.82 +2006-06-02,32.11,32.19,31.30,31.52,16470900,31.52 +2006-06-01,31.83,32.00,31.49,31.99,16652400,31.99 +2006-05-31,32.19,32.32,31.11,31.59,21306700,31.59 +2006-05-30,32.73,32.89,31.79,32.00,16247600,32.00 +2006-05-26,32.86,33.02,32.35,33.02,13842600,33.02 +2006-05-25,32.94,33.50,32.50,32.92,34732700,32.92 +2006-05-24,30.95,32.02,30.71,31.79,27286300,31.79 +2006-05-23,31.04,31.63,30.76,30.76,28583400,30.76 +2006-05-22,30.42,30.98,29.89,30.46,35089300,30.46 +2006-05-19,29.05,29.75,28.60,29.53,33121900,29.53 +2006-05-18,30.10,30.36,28.93,29.00,38254000,29.00 +2006-05-17,30.61,31.26,30.04,30.11,39847500,30.11 +2006-05-16,31.10,31.22,30.63,30.97,15333700,30.97 +2006-05-15,30.85,31.25,30.60,31.03,13350700,31.03 +2006-05-12,30.71,31.18,30.38,30.81,16745600,30.81 +2006-05-11,31.96,32.17,30.87,30.99,24277000,30.99 +2006-05-10,32.48,32.56,32.00,32.09,13797500,32.09 +2006-05-09,32.68,34.00,32.35,32.49,13396400,32.49 +2006-05-08,33.09,33.43,32.63,32.87,18188200,32.87 +2006-05-05,32.63,32.75,32.22,32.66,14689200,32.66 +2006-05-04,32.40,32.56,32.08,32.19,10402300,32.19 +2006-05-03,32.40,33.00,31.75,32.17,23292600,32.17 +2006-05-02,32.20,32.91,31.72,31.85,16276000,31.85 +2006-05-01,32.99,33.10,31.86,32.08,19752200,32.08 +2006-04-28,32.88,33.45,32.78,32.78,13283500,32.78 +2006-04-27,32.79,33.50,32.40,33.20,19635700,33.20 +2006-04-26,32.30,33.09,32.10,33.00,24426400,33.00 +2006-04-25,32.99,33.06,31.88,31.99,22363200,31.99 +2006-04-24,33.01,33.45,32.90,33.01,15441600,33.01 +2006-04-21,33.36,34.09,32.70,32.89,25215000,32.89 +2006-04-20,33.48,33.70,32.93,33.37,23403900,33.37 +2006-04-19,33.47,33.98,32.76,33.54,77253600,33.54 +2006-04-18,31.17,31.38,30.53,31.30,38604500,31.30 +2006-04-17,31.16,31.79,30.66,30.97,18239900,30.97 +2006-04-13,31.14,31.40,30.85,31.13,15609800,31.13 +2006-04-12,31.44,31.50,30.89,31.10,14926900,31.10 +2006-04-11,32.45,32.60,31.15,31.39,22105600,31.39 +2006-04-10,32.28,32.63,32.12,32.55,9618000,32.55 +2006-04-07,32.85,32.97,32.21,32.27,12980200,32.27 +2006-04-06,32.12,33.14,32.11,32.79,21572600,32.79 +2006-04-05,32.30,32.50,31.96,32.11,11982500,32.11 +2006-04-04,31.69,32.25,31.66,32.10,16232700,32.10 +2006-04-03,32.41,32.53,31.79,31.89,14887900,31.89 +2006-03-31,32.45,32.63,32.01,32.26,12677300,32.26 +2006-03-30,32.75,32.83,32.09,32.42,14314000,32.42 +2006-03-29,32.44,32.91,32.14,32.56,25508200,32.56 +2006-03-28,31.45,32.50,31.41,32.39,25981500,32.39 +2006-03-27,31.84,32.08,31.30,31.45,14858500,31.45 +2006-03-24,32.28,32.31,31.53,31.77,17816500,31.77 +2006-03-23,31.52,31.95,31.48,31.83,33834000,31.83 +2006-03-22,30.33,30.91,30.31,30.75,23147400,30.75 +2006-03-21,30.11,30.78,30.02,30.11,18876400,30.11 +2006-03-20,30.38,30.93,30.20,30.44,21455200,30.44 +2006-03-17,30.35,30.36,29.83,30.07,23629700,30.07 +2006-03-16,30.77,30.88,30.10,30.13,17108000,30.13 +2006-03-15,31.25,31.28,30.47,30.53,20758000,30.53 +2006-03-14,30.10,31.00,30.10,30.99,19294700,30.99 +2006-03-13,30.72,30.97,30.12,30.15,18437700,30.15 +2006-03-10,30.40,31.10,29.75,30.58,28991400,30.58 +2006-03-09,31.05,31.32,30.25,30.28,18277000,30.28 +2006-03-08,31.31,31.55,30.82,30.99,20910200,30.99 +2006-03-07,31.42,32.20,31.31,31.43,23365100,31.43 +2006-03-06,31.53,31.94,31.45,31.57,17211200,31.57 +2006-03-03,31.70,32.07,31.38,31.45,23196000,31.45 +2006-03-02,32.01,32.11,31.58,31.70,23487300,31.70 +2006-03-01,32.21,32.42,31.72,32.18,18466100,32.18 +2006-02-28,32.63,32.98,31.34,32.06,39926200,32.06 +2006-02-27,33.11,33.21,32.57,32.74,11821900,32.74 +2006-02-24,33.20,33.34,32.92,33.01,10136400,33.01 +2006-02-23,33.01,33.66,32.88,33.15,14947600,33.15 +2006-02-22,32.49,33.34,32.40,33.16,18433500,33.16 +2006-02-21,32.90,33.07,32.38,32.39,14328100,32.39 +2006-02-17,32.88,33.14,32.71,32.76,12620200,32.76 +2006-02-16,33.30,33.40,32.60,32.75,19500100,32.75 +2006-02-15,32.62,33.33,32.55,33.02,19542100,33.02 +2006-02-14,32.14,32.83,32.05,32.72,26198600,32.72 +2006-02-13,32.21,32.44,31.70,32.04,26139300,32.04 +2006-02-10,32.58,32.60,32.10,32.51,19628600,32.51 +2006-02-09,33.01,33.36,32.40,32.50,25335200,32.50 +2006-02-08,33.24,33.40,32.51,33.00,28112900,33.00 +2006-02-07,33.01,33.10,32.32,33.02,37236800,33.02 +2006-02-06,33.90,33.95,32.78,32.92,23523100,32.92 +2006-02-03,34.00,34.05,33.26,33.54,32639600,33.54 +2006-02-02,35.01,35.10,34.10,34.25,18323500,34.25 +2006-02-01,34.45,35.00,34.35,35.00,43600400,35.00 +2006-01-31,35.20,35.20,34.31,34.38,36538000,34.38 +2006-01-30,35.09,35.23,34.88,35.05,29030600,35.05 +2006-01-27,35.26,35.27,34.66,35.09,24317400,35.09 +2006-01-26,34.94,35.25,34.49,35.17,28471400,35.17 +2006-01-25,35.43,35.48,34.38,34.49,23779200,34.49 +2006-01-24,34.55,35.20,34.51,34.87,31667800,34.87 +2006-01-23,34.22,34.40,33.98,34.17,30887600,34.17 +2006-01-20,34.44,34.66,33.21,33.74,57644600,33.74 +2006-01-19,35.82,35.84,34.24,34.33,60913000,34.33 +2006-01-18,35.01,36.16,34.74,35.18,118556100,35.18 +2006-01-17,39.09,40.39,38.96,40.11,41797000,40.11 +2006-01-13,41.00,41.08,39.62,39.90,30960800,39.90 +2006-01-12,41.92,41.99,40.76,40.89,18921700,40.89 +2006-01-11,42.19,42.31,41.72,41.87,26191400,41.87 +2006-01-10,42.96,43.34,42.34,42.98,16287200,42.98 +2006-01-09,43.10,43.66,42.82,43.42,16266900,43.42 +2006-01-06,42.88,43.57,42.80,43.21,29418400,43.21 +2006-01-05,40.93,41.73,40.85,41.53,12829100,41.53 +2006-01-04,41.22,41.90,40.77,40.97,20549000,40.97 +2006-01-03,39.69,41.22,38.79,40.91,24227700,40.91 +2005-12-30,39.40,39.56,39.05,39.18,12233000,39.18 +2005-12-29,40.25,40.35,39.41,39.56,10116600,39.56 +2005-12-28,40.10,40.48,39.77,40.25,11567900,40.25 +2005-12-27,40.65,40.94,39.85,39.94,11672900,39.94 +2005-12-23,41.09,41.10,40.45,40.63,5070200,40.63 +2005-12-22,40.69,41.68,40.55,40.83,9548300,40.83 +2005-12-21,40.52,41.05,40.35,40.47,11626900,40.47 +2005-12-20,41.26,41.36,40.48,40.68,15269500,40.68 +2005-12-19,42.16,42.89,40.88,41.05,18563700,41.05 +2005-12-16,41.86,42.67,41.75,42.32,21805000,42.32 +2005-12-15,41.23,41.84,41.14,41.75,20900800,41.75 +2005-12-14,41.12,41.68,40.84,41.30,23034200,41.30 +2005-12-13,40.01,41.40,40.00,41.20,17264700,41.20 +2005-12-12,40.41,40.54,39.81,40.08,9776300,40.08 +2005-12-09,40.50,40.87,40.20,40.31,11116900,40.31 +2005-12-08,40.25,40.54,39.95,40.35,12851600,40.35 +2005-12-07,40.31,40.63,39.57,40.11,15644900,40.11 +2005-12-06,40.78,41.18,40.12,40.19,16356800,40.19 +2005-12-05,40.88,41.03,40.37,40.47,15389400,40.47 +2005-12-02,41.22,41.85,40.89,41.21,14411400,41.21 +2005-12-01,40.74,41.25,40.54,41.07,20069600,41.07 +2005-11-30,39.38,40.84,39.09,40.23,31608700,40.23 +2005-11-29,41.01,41.59,39.82,40.19,28698200,40.19 +2005-11-28,41.63,41.77,40.66,41.11,23190900,41.11 +2005-11-25,42.71,42.84,41.94,42.13,8253000,42.13 +2005-11-23,42.21,43.45,42.17,42.50,21471000,42.50 +2005-11-22,41.73,42.65,41.65,42.36,26389500,42.36 +2005-11-21,41.26,42.98,41.21,42.27,27915500,42.27 +2005-11-18,42.04,42.41,41.29,41.54,30747600,41.54 +2005-11-17,40.32,42.50,40.03,42.23,44796000,42.23 +2005-11-16,37.90,40.07,37.86,40.04,39464600,40.04 +2005-11-15,38.26,38.61,37.54,37.65,11981600,37.65 +2005-11-14,38.43,38.72,37.96,38.45,10112500,38.45 +2005-11-11,38.69,39.05,38.34,38.49,12234400,38.49 +2005-11-10,37.52,38.75,37.52,38.69,13722400,38.69 +2005-11-09,37.76,38.04,37.43,37.75,12217600,37.75 +2005-11-08,37.75,38.50,37.60,37.97,14434400,37.97 +2005-11-07,37.69,38.18,37.41,37.90,11652700,37.90 +2005-11-04,37.59,37.99,37.37,37.87,11656100,37.87 +2005-11-03,38.26,38.28,37.33,37.45,16880800,37.45 +2005-11-02,37.49,38.04,37.43,37.99,17886200,37.99 +2005-11-01,36.62,38.71,36.59,37.72,41932100,37.72 +2005-10-31,35.60,37.27,35.60,36.97,24867100,36.97 +2005-10-28,35.62,35.92,35.25,35.58,14123800,35.58 +2005-10-27,35.34,35.66,35.30,35.45,11605000,35.45 +2005-10-26,35.06,35.75,34.97,35.46,17125600,35.46 +2005-10-25,35.19,35.38,34.89,35.12,14441100,35.12 +2005-10-24,35.30,35.49,34.94,35.28,19591900,35.28 +2005-10-21,35.99,36.33,35.19,35.29,28423400,35.29 +2005-10-20,35.90,36.94,35.05,35.26,29267000,35.26 +2005-10-19,34.62,35.94,34.59,35.91,63254000,35.91 +2005-10-18,34.40,34.76,33.64,33.70,35010300,33.70 +2005-10-17,33.85,34.30,33.80,34.16,21994600,34.16 +2005-10-14,33.62,33.62,32.77,33.52,17425200,33.52 +2005-10-13,33.80,33.85,32.97,33.37,16254600,33.37 +2005-10-12,33.99,34.71,33.91,33.93,16089600,33.93 +2005-10-11,34.55,34.84,33.66,34.10,16504700,34.10 +2005-10-10,34.20,34.90,34.12,34.53,15227800,34.53 +2005-10-07,34.03,34.29,33.97,34.16,12253200,34.16 +2005-10-06,33.95,34.30,33.54,33.80,21836100,33.80 +2005-10-05,33.79,33.93,33.36,33.49,14642000,33.49 +2005-10-04,33.75,34.37,33.51,33.57,14331000,33.57 +2005-10-03,33.80,34.12,33.71,33.77,13184500,33.77 +2005-09-30,33.59,34.10,33.56,33.84,15697000,33.84 +2005-09-29,32.40,33.70,32.12,33.46,22209100,33.46 +2005-09-28,32.67,32.80,32.27,32.35,11622800,32.35 +2005-09-27,32.17,32.61,32.17,32.48,12246900,32.48 +2005-09-26,32.48,32.55,31.99,32.18,13548200,32.18 +2005-09-23,32.12,32.25,31.75,32.13,14903700,32.13 +2005-09-22,32.09,32.41,31.76,32.04,18259400,32.04 +2005-09-21,32.53,33.10,31.60,31.97,21896000,31.97 +2005-09-20,32.88,33.11,32.36,32.64,14578900,32.64 +2005-09-19,33.27,33.47,32.25,32.75,15429900,32.75 +2005-09-16,33.74,33.77,33.05,33.17,20858300,33.17 +2005-09-15,33.95,33.99,33.50,33.57,10404800,33.57 +2005-09-14,34.30,34.50,33.64,33.80,15017400,33.80 +2005-09-13,33.93,34.71,33.73,34.30,19346600,34.30 +2005-09-12,33.42,34.34,33.41,33.91,18580300,33.91 +2005-09-09,33.35,33.60,33.02,33.46,15247900,33.46 +2005-09-08,33.74,33.93,33.20,33.34,17464400,33.34 +2005-09-07,33.50,34.26,33.30,34.06,12545300,34.06 +2005-09-06,33.18,33.78,33.18,33.68,12513300,33.68 +2005-09-02,33.20,33.37,33.10,33.17,6849000,33.17 +2005-09-01,33.28,33.51,33.04,33.24,11848500,33.24 +2005-08-31,33.23,33.39,32.99,33.32,13035500,33.32 +2005-08-30,33.50,33.67,33.00,33.18,13496000,33.18 +2005-08-29,33.40,33.78,33.31,33.68,11427600,33.68 +2005-08-26,33.51,33.81,33.38,33.57,9833400,33.57 +2005-08-25,33.54,33.62,33.20,33.48,12564900,33.48 +2005-08-24,32.92,33.68,32.88,33.47,23249500,33.47 +2005-08-23,33.29,33.33,32.65,33.11,16912700,33.11 +2005-08-22,34.07,34.10,33.07,33.20,21054400,33.20 +2005-08-19,34.39,34.47,33.98,34.00,12810400,34.00 +2005-08-18,34.13,34.73,34.12,34.36,12154200,34.36 +2005-08-17,34.30,34.73,34.23,34.39,10443700,34.39 +2005-08-16,34.57,34.66,34.21,34.23,11867100,34.23 +2005-08-15,34.80,34.87,34.49,34.60,11244500,34.60 +2005-08-12,34.86,34.88,34.45,34.60,13306100,34.60 +2005-08-11,34.54,35.00,34.32,34.94,22391900,34.94 +2005-08-10,34.28,34.77,34.00,34.19,18047900,34.19 +2005-08-09,34.15,34.32,33.91,34.06,9987400,34.06 +2005-08-08,33.86,34.18,33.66,33.94,13066200,33.94 +2005-08-05,34.09,34.28,33.49,33.52,11873800,33.52 +2005-08-04,34.26,34.60,34.00,34.06,11143400,34.06 +2005-08-03,33.75,34.68,33.73,34.51,18240600,34.51 +2005-08-02,33.46,34.20,33.39,33.88,17581900,33.88 +2005-08-01,33.63,33.69,33.31,33.33,12637100,33.33 +2005-07-29,34.01,34.06,33.34,33.34,16236100,33.34 +2005-07-28,34.23,34.31,33.98,34.01,11871600,34.01 +2005-07-27,34.22,34.37,33.95,34.29,20497500,34.29 +2005-07-26,34.05,34.30,33.91,34.15,16819200,34.15 +2005-07-25,33.88,34.08,33.59,33.85,23252600,33.85 +2005-07-22,33.35,33.77,33.17,33.53,27561500,33.53 +2005-07-21,33.75,33.76,32.75,32.94,37778500,32.94 +2005-07-20,34.21,34.35,33.31,33.40,82623300,33.40 +2005-07-19,37.02,38.02,36.56,37.73,32685500,37.73 +2005-07-18,36.45,36.78,36.37,36.58,11019300,36.58 +2005-07-15,37.05,37.16,36.50,36.58,12372200,36.58 +2005-07-14,37.40,37.50,36.77,36.86,14722200,36.86 +2005-07-13,36.42,36.98,36.41,36.73,16897500,36.73 +2005-07-12,36.20,36.49,35.94,36.23,19665800,36.23 +2005-07-11,34.90,35.81,34.78,35.76,20233000,35.76 +2005-07-08,34.77,34.87,34.25,34.62,15515400,34.62 +2005-07-07,33.87,34.77,33.72,34.63,16354300,34.63 +2005-07-06,34.64,34.97,34.03,34.12,13585700,34.12 +2005-07-05,34.25,35.08,34.20,34.60,16086700,34.60 +2005-07-01,34.76,34.85,34.22,34.44,9861600,34.44 +2005-06-30,34.84,35.17,34.44,34.65,16699500,34.65 +2005-06-29,35.80,35.94,34.88,34.94,16481900,34.94 +2005-06-28,35.95,36.24,35.51,35.80,13346200,35.80 +2005-06-27,35.88,36.11,35.20,35.68,12044700,35.68 +2005-06-24,36.26,36.40,35.60,36.09,13468200,36.09 +2005-06-23,36.85,37.31,36.20,36.20,15547700,36.20 +2005-06-22,36.91,37.32,36.84,36.90,12148100,36.90 +2005-06-21,36.37,37.31,36.36,36.95,16219200,36.95 +2005-06-20,35.96,36.84,35.79,36.45,12753200,36.45 +2005-06-17,36.76,36.98,36.12,36.30,15952800,36.30 +2005-06-16,36.46,36.74,36.22,36.40,12228700,36.40 +2005-06-15,36.97,37.11,35.91,36.32,22753900,36.32 +2005-06-14,36.56,37.05,36.43,36.80,12781200,36.80 +2005-06-13,36.66,37.51,36.53,36.90,11586300,36.90 +2005-06-10,37.48,37.50,36.32,36.81,14216900,36.81 +2005-06-09,36.81,37.48,36.38,37.45,18455100,37.45 +2005-06-08,37.42,37.45,36.32,36.63,20121100,36.63 +2005-06-07,38.72,38.95,37.32,37.44,22848300,37.44 +2005-06-06,37.79,38.74,37.75,38.52,12416000,38.52 +2005-06-03,38.24,38.79,37.60,37.92,12813300,37.92 +2005-06-02,38.20,38.71,38.13,38.50,13150700,38.50 +2005-06-01,37.31,38.90,37.17,38.42,28153800,38.42 +2005-05-31,37.03,37.35,36.85,37.20,12498300,37.20 +2005-05-27,36.98,37.47,36.95,37.27,10256600,37.27 +2005-05-26,36.45,37.19,36.35,37.14,15547700,37.14 +2005-05-25,36.25,36.42,36.06,36.27,14995100,36.27 +2005-05-24,36.87,37.10,36.45,36.63,17421300,36.63 +2005-05-23,36.10,37.10,36.04,36.80,21616200,36.80 +2005-05-20,36.60,36.64,36.13,36.33,13771900,36.33 +2005-05-19,36.13,36.99,36.11,36.75,21267100,36.75 +2005-05-18,35.79,36.58,35.69,35.95,23769000,35.95 +2005-05-17,35.20,35.80,35.14,35.68,13178400,35.68 +2005-05-16,34.78,35.50,34.74,35.45,15473900,35.45 +2005-05-13,34.71,35.35,34.35,34.82,15855900,34.82 +2005-05-12,34.95,35.37,34.54,34.71,18906700,34.71 +2005-05-11,34.09,34.88,33.69,34.88,19537100,34.88 +2005-05-10,34.30,34.37,33.86,34.06,13227000,34.06 +2005-05-09,34.48,34.65,34.25,34.59,9991700,34.59 +2005-05-06,35.00,35.08,34.45,34.52,14202200,34.52 +2005-05-05,35.10,35.29,34.43,34.71,16926300,34.71 +2005-05-04,34.43,35.50,34.38,35.18,23410900,35.18 +2005-05-03,34.05,34.60,33.90,34.28,22042800,34.28 +2005-05-02,34.44,34.85,34.03,34.38,13231500,34.38 +2005-04-29,34.60,34.75,33.92,34.50,15666100,34.50 +2005-04-28,34.70,34.93,34.02,34.33,16159300,34.33 +2005-04-27,34.70,35.14,34.59,34.95,14861300,34.95 +2005-04-26,35.12,35.42,34.80,35.00,17921200,35.00 +2005-04-25,34.58,35.59,34.58,35.49,23883600,35.49 +2005-04-22,35.21,35.88,34.50,34.87,31869800,34.87 +2005-04-21,35.12,35.91,34.71,35.87,27731600,35.87 +2005-04-20,34.96,35.25,34.36,34.65,50104400,34.65 +2005-04-19,32.96,33.33,32.42,33.22,34158500,33.22 +2005-04-18,32.43,33.09,32.40,32.55,19201200,32.55 +2005-04-15,32.96,33.41,32.29,32.46,27008500,32.46 +2005-04-14,33.63,34.20,33.40,33.46,19855300,33.46 +2005-04-13,34.16,34.46,33.40,33.60,16886100,33.60 +2005-04-12,34.35,34.50,33.74,34.28,22681900,34.28 +2005-04-11,34.97,35.09,34.54,34.60,11758500,34.60 +2005-04-08,35.04,35.14,34.65,34.76,11106300,34.76 +2005-04-07,34.45,35.25,34.45,35.07,20575000,35.07 +2005-04-06,35.14,35.42,34.12,34.49,23574000,34.49 +2005-04-05,35.15,35.40,34.84,35.15,20275900,35.15 +2005-04-04,34.34,35.27,33.75,35.07,27853300,35.07 +2005-04-01,34.18,34.77,34.15,34.28,27955400,34.28 +2005-03-31,33.55,34.20,33.20,33.90,25390000,33.90 +2005-03-30,32.31,33.60,32.27,33.48,28267900,33.48 +2005-03-29,32.18,32.84,31.79,32.16,23544700,32.16 +2005-03-28,32.21,32.50,32.10,32.25,20624400,32.25 +2005-03-24,31.94,32.09,31.41,31.41,23162000,31.41 +2005-03-23,30.91,31.33,30.85,30.87,13917100,30.87 +2005-03-22,31.70,31.98,30.86,30.99,19570600,30.99 +2005-03-21,31.29,31.77,30.98,31.62,18449400,31.62 +2005-03-18,31.53,31.73,30.91,31.11,20796400,31.11 +2005-03-17,31.80,31.98,31.54,31.61,13760200,31.61 +2005-03-16,31.87,32.35,31.40,31.58,17952000,31.58 +2005-03-15,31.61,32.28,31.53,31.94,20880800,31.94 +2005-03-14,31.74,31.83,30.65,31.32,19762000,31.32 +2005-03-11,31.86,32.21,31.65,31.65,13364800,31.65 +2005-03-10,32.43,32.56,31.60,31.91,19381200,31.91 +2005-03-09,33.01,33.15,32.01,32.32,21824400,32.32 +2005-03-08,33.55,33.73,33.14,33.16,17839300,33.16 +2005-03-07,32.40,33.31,32.36,33.09,17679200,33.09 +2005-03-04,32.36,32.57,31.76,32.36,17499800,32.36 +2005-03-03,32.25,32.48,31.80,32.31,17896100,32.31 +2005-03-02,32.07,32.60,31.75,32.23,15357200,32.23 +2005-03-01,32.37,32.67,32.05,32.30,20222500,32.30 +2005-02-28,31.74,33.77,31.62,32.27,25266400,32.27 +2005-02-25,31.53,31.96,31.43,31.73,20114900,31.73 +2005-02-24,30.43,31.49,30.30,31.48,55457300,31.48 +2005-02-23,32.82,32.92,31.40,32.12,34757100,32.12 +2005-02-22,33.25,33.82,32.66,32.79,18142600,32.79 +2005-02-18,33.84,33.98,33.38,33.60,12436100,33.60 +2005-02-17,34.42,34.79,33.76,33.82,16203500,33.82 +2005-02-16,33.81,34.82,33.75,34.42,22176200,34.42 +2005-02-15,34.34,34.92,33.81,33.98,20391900,33.98 +2005-02-14,34.01,34.41,33.78,34.33,20065300,34.33 +2005-02-11,33.45,34.70,33.31,34.15,20005800,34.15 +2005-02-10,33.72,33.72,32.47,33.44,32637400,33.44 +2005-02-09,34.60,34.66,33.45,33.59,18285100,33.59 +2005-02-08,34.64,34.91,34.32,34.36,17321500,34.36 +2005-02-07,35.07,35.19,34.36,34.47,14588900,34.47 +2005-02-04,34.71,35.30,34.71,35.02,16850200,35.02 +2005-02-03,35.27,35.67,35.00,35.09,16742400,35.09 +2005-02-02,36.02,36.34,35.29,35.54,33495200,35.54 +2005-02-01,35.13,35.28,34.46,34.75,18633600,34.75 +2005-01-31,35.04,35.44,34.53,35.21,20712200,35.21 +2005-01-28,34.90,35.24,34.12,34.62,17853700,34.62 +2005-01-27,35.38,35.49,34.35,34.73,21450800,34.73 +2005-01-26,34.71,35.74,34.39,35.47,25767500,35.47 +2005-01-25,34.55,34.76,33.94,34.04,26521400,34.04 +2005-01-24,35.48,35.52,33.75,33.93,31477400,33.93 +2005-01-21,36.07,36.11,35.29,35.30,26608000,35.30 +2005-01-20,35.39,36.42,35.05,35.78,30239100,35.78 +2005-01-19,38.08,38.20,36.42,36.45,44303200,36.45 +2005-01-18,37.10,37.46,36.60,37.18,42709600,37.18 +2005-01-14,35.86,36.70,35.83,36.70,27697700,36.70 +2005-01-13,36.12,36.32,35.26,35.33,18526500,35.33 +2005-01-12,35.88,36.18,34.80,36.14,23274700,36.14 +2005-01-11,36.31,36.58,35.39,35.66,19711900,35.66 +2005-01-10,36.00,36.76,35.51,36.32,17482800,36.32 +2005-01-07,35.99,36.46,35.41,35.96,18596300,35.96 +2005-01-06,36.32,36.50,35.21,35.43,20835300,35.43 +2005-01-05,36.69,36.98,36.06,36.13,18469100,36.13 +2005-01-04,38.45,38.54,36.46,36.58,26625300,36.58 +2005-01-03,38.36,38.90,37.65,38.18,25482800,38.18 diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars1.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars1.html new file mode 100644 index 0000000..e76be3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars1.html @@ -0,0 +1,101 @@ + + + + + + + + Gradient: Bars #1 + + + + +

                          +

                          plot-space left-to-right gradient

                          +

                          Bars

                          +
                          +

                          Stacked Bars

                          +
                          +

                          Clustered Bars

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars2.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars2.html new file mode 100644 index 0000000..d80a23c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars2.html @@ -0,0 +1,96 @@ + + + + + + + + + Gradient: Bars #2 + + + + +

                          +

                          plot-space diagonal gradient

                          +

                          Bars

                          +
                          +

                          Stacked Bars

                          +
                          +

                          Clustered Bars

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars3.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars3.html new file mode 100644 index 0000000..b141962 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars3.html @@ -0,0 +1,95 @@ + + + + + + + + Gradient: Bars #3 + + + + +

                          +

                          shape-space gradient

                          +

                          Bars

                          +
                          +

                          Stacked Bars

                          +
                          +

                          Clustered Bars

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars4.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars4.html new file mode 100644 index 0000000..ff142fc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars4.html @@ -0,0 +1,95 @@ + + + + + + + + Gradient: Bars #4 + + + + +

                          +

                          1D shape-space gradient

                          +

                          Bars

                          +
                          +

                          Stacked Bars

                          +
                          +

                          Clustered Bars

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars5.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars5.html new file mode 100644 index 0000000..7050854 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bars5.html @@ -0,0 +1,98 @@ + + + + + + + + Gradient: Bars #5 + + + + +

                          +

                          1D shape-space pseudo-3D gradient

                          +

                          Bars

                          +
                          +

                          Stacked Bars

                          +
                          +

                          Clustered Bars

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble1.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble1.html new file mode 100644 index 0000000..0a2970b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble1.html @@ -0,0 +1,85 @@ + + + + + + + + Gradient: Bubble #1 + + + + +

                          +

                          plot-space left-to-right gradient

                          +

                          Bubble

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble2.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble2.html new file mode 100644 index 0000000..1a8e564 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble2.html @@ -0,0 +1,79 @@ + + + + + + + + Gradient: Bubble #2 + + + + +

                          +

                          plot-space diagonal gradient

                          +

                          Bubble

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble3.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble3.html new file mode 100644 index 0000000..ad32f44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble3.html @@ -0,0 +1,80 @@ + + + + + + + + Gradient: Bubble #3 + + + + +

                          +

                          shape-space gradient

                          +

                          Bubble

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble4.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble4.html new file mode 100644 index 0000000..824cc02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble4.html @@ -0,0 +1,79 @@ + + + + + + + + Gradient: Bubble #4 + + + + +

                          +

                          1D shape-space gradient

                          +

                          Bubble

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble6.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble6.html new file mode 100644 index 0000000..f68daf9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_bubble6.html @@ -0,0 +1,85 @@ + + + + + + + + Gradient: Bubble #6 + + + + +

                          +

                          radial gradient

                          +

                          Bubble

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns1.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns1.html new file mode 100644 index 0000000..32aa555 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns1.html @@ -0,0 +1,101 @@ + + + + + + + + Gradient: Columns #1 + + + + +

                          +

                          plot-space left-to-right gradient

                          +

                          Columns

                          +
                          +

                          Stacked Columns

                          +
                          +

                          Clustered Columns

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns2.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns2.html new file mode 100644 index 0000000..a0f759e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns2.html @@ -0,0 +1,95 @@ + + + + + + + + Gradient: Columns #2 + + + + +

                          +

                          plot-space diagonal gradient

                          +

                          Columns

                          +
                          +

                          Stacked Columns

                          +
                          +

                          Clustered Columns

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns3.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns3.html new file mode 100644 index 0000000..cf3d5e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns3.html @@ -0,0 +1,95 @@ + + + + + + + + Gradient: Columns #3 + + + + +

                          +

                          shape-space gradient

                          +

                          Columns

                          +
                          +

                          Stacked Columns

                          +
                          +

                          Clustered Columns

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns4.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns4.html new file mode 100644 index 0000000..cf8f404 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns4.html @@ -0,0 +1,95 @@ + + + + + + + + Gradient: Columns #4 + + + + +

                          +

                          1D shape-space gradient

                          +

                          Columns

                          +
                          +

                          Stacked Columns

                          +
                          +

                          Clustered Columns

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns5.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns5.html new file mode 100644 index 0000000..72e0edd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_columns5.html @@ -0,0 +1,98 @@ + + + + + + + + Gradient: Columns #5 + + + + +

                          +

                          1D shape-space pseudo-3D gradient

                          +

                          Columns

                          +
                          +

                          Stacked Columns

                          +
                          +

                          Clustered Columns

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie1.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie1.html new file mode 100644 index 0000000..efa2120 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie1.html @@ -0,0 +1,71 @@ + + + + + + + + Gradient: Pie #1 + + + + +

                          +

                          plot-space left-to-right gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie2.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie2.html new file mode 100644 index 0000000..accfc7c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie2.html @@ -0,0 +1,65 @@ + + + + + + + + Gradient: Pie #2 + + + + +

                          +

                          plot-space diagonal gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie3.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie3.html new file mode 100644 index 0000000..f6cd7b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie3.html @@ -0,0 +1,66 @@ + + + + + + + + Gradient: Pie #3 + + + + +

                          +

                          shape-space gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie4.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie4.html new file mode 100644 index 0000000..a39816f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie4.html @@ -0,0 +1,65 @@ + + + + + + + + Gradient: Pie #4 + + + + +

                          +

                          1D shape-space gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie7.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie7.html new file mode 100644 index 0000000..4d13781 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie7.html @@ -0,0 +1,65 @@ + + + + + + + + Gradient: Pie #7 + + + + +

                          +

                          radial-to-linear pie slice gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie8.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie8.html new file mode 100644 index 0000000..8b8d2a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie8.html @@ -0,0 +1,65 @@ + + + + + + + + Gradient: Pie #8 + + + + +

                          +

                          radial-to-linear pie slice gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie9.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie9.html new file mode 100644 index 0000000..1330106 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pie9.html @@ -0,0 +1,65 @@ + + + + + + + + Gradient: Pie #9 + + + + +

                          +

                          radial-to-fan pie slice gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pieA.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pieA.html new file mode 100644 index 0000000..7c84bd5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_pieA.html @@ -0,0 +1,65 @@ + + + + + + + + Gradient: Pie #A + + + + +

                          +

                          radial-to-fan pie slice gradient

                          +

                          Pie

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatter1.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatter1.html new file mode 100644 index 0000000..c74ad93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatter1.html @@ -0,0 +1,85 @@ + + + + + + + + Gradient: Scatter #1 + + + + +

                          +

                          plot-space left-to-right gradient

                          +

                          Scatter

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatter2.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatter2.html new file mode 100644 index 0000000..677773f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatter2.html @@ -0,0 +1,79 @@ + + + + + + + + Gradient: Scatter #2 + + + + +

                          +

                          plot-space diagonal gradient

                          +

                          Scatter

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatterB.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatterB.html new file mode 100644 index 0000000..07dd891 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/gradients/test_grad_scatterB.html @@ -0,0 +1,68 @@ + + + + + + + + Gradient: Scatter #2 + + + + +

                          +

                          plot-space radial gradient

                          +

                          Scatter

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/runTests.html new file mode 100644 index 0000000..6e13c2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox.wire Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/stock.json b/js/dojo-release-1.7.2-src/dojox/charting/tests/stock.json new file mode 100644 index 0000000..746d025 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/stock.json @@ -0,0 +1,8 @@ +{ "identifier": "symbol", "idAttribute":"symbol", "label": "symbol","items": [ + { "symbol":"ANDT", "name":"Anduct", "historicPrice":[0.01,3.52,3.66,3.11,3.90,3.11,3.11], "open":3.13, "price":3.52, "updown":"^", "change":"+0.39 (+21%)", "low":3.13, "high":3.69 }, + { "symbol":"ATEU", "name":"Ations Europe", "historicPrice":[6.72,6.76,6.61,6.41,6.31,6.99,7.20], "open":6.72, "price":6.76, "updown":"^", "change":"+0.04 (+01%)", "low":6.56, "high":6.77 }, + { "symbol":"BGCN", "name":"Bagies Consulting", "historicPrice":[4.11,3.98,4.05,4.20,4.16,4.22,3.80], "open":4.11, "price":3.98, "updown":"v", "change":"-0.13 (-05%)", "low":3.77, "high":4.11 }, + { "symbol":"BAYC", "name":"BAY Corporation", "historicPrice":[9.79,9.60,9.50,2.23,9.45,9.76,9.99], "open":9.79, "price":9.60, "updown":"v", "change":"-0.19 (+14%)", "low":9.60, "high":9.81 }, + { "symbol":"CRCR", "name":"Corcor PLC", "historicPrice":[8.44,8.44,8.54,8.60,9.65,8.42,8.44], "open":8.44, "price":8.44, "updown":"--", "change":"+0.00 (+00%)", "low":8.22, "high":8.44 }, + { "symbol":"DTOA", "name":"Datio PLC", "historicPrice":[2.11,2.47,3.11,3.06,3.01,3.01,3.00], "open":2.11, "price":2.47, "updown":"^", "change":"+0.36 (+36%)", "low":2.11, "high":3.01 } +]} diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_DataChart.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_DataChart.html new file mode 100644 index 0000000..d319e67 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_DataChart.html @@ -0,0 +1,173 @@ + + + + + + + + +DataChart Test + + + + + + + + + +

                          DataChart

                          +

                          + DataChart extends dojox.charting.Chart2D and allows for a simple connection to a data store. When adding a store to a chart, it is necessary to also supply which + item property you wish charted. There are two types of properties supported: numbers and arrays of numbers (bubble charts take an array of objects and are not currently + supported). If the property is an array, a segment of the array is taken from the end that fits in the display range of the chart. Animated charts are also possible. +

                          +

                          + Use the spinner fields at the bottom to change the data. The charts listen to store changes an update automatically. +

                          +
                          +
                          +
                          + This line chart uses a different data field than the rest, which is an array. This chart will not upate using the spinners. +
                          +
                          +
                          + This chart uses comparitive to compare the price of each item. Without compartive, the items would each be a separate series and not be connected. Will update. +
                          +
                          +
                          + Each column in this chart is a separate series. Will update. +
                          +
                          +
                          + Each bar in this chart is a separate series. Will update. +
                          +
                          +
                          + This chart also uses comparitive to create one series from several items. Will update. +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_DataSeries.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_DataSeries.html new file mode 100644 index 0000000..6a32de6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_DataSeries.html @@ -0,0 +1,196 @@ + + + + + + + + +DataSeries Test + + + + + + + + + + + + + +

                          DataSeries Test

                          +

                          + Use the spinner fields at the bottom to change the data. The charts listen to store changes an update automatically. +

                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_StoreSeries-amd.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_StoreSeries-amd.html new file mode 100644 index 0000000..8ab5e45 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_StoreSeries-amd.html @@ -0,0 +1,187 @@ + + + + + + + + +StoreSeries Test + + + + + + + + + + +

                          StoreSeries Test

                          +

                          + Use the spinner fields at the bottom to change the data. The charts listen to store changes an update automatically. +

                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_StoreSeries.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_StoreSeries.html new file mode 100644 index 0000000..d96d68d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_StoreSeries.html @@ -0,0 +1,203 @@ + + + + + + + + +StoreSeries Test + + + + + + + + + + + + + +

                          StoreSeries Test

                          +

                          + Use the spinner fields at the bottom to change the data. The charts listen to store changes an update automatically. +

                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_anim2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_anim2d.html new file mode 100644 index 0000000..de28697 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_anim2d.html @@ -0,0 +1,91 @@ + + + + + + + + Chart 2D: Animation tests + + + + + + + +

                          Chart 2D: Animation tests

                          + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_axes.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_axes.html new file mode 100644 index 0000000..8e04038 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_axes.html @@ -0,0 +1,96 @@ + + + + + + + + +Testing Axes + + + + + +

                          Testing Axes

                          + +

                          1: Shared axes and three series

                          +
                          +

                          2: Shared axes and three plots.

                          +
                          +

                          3: Like #1 but invisible axes.

                          +
                          +

                          4: Like #1 but no axes.

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_axisZoomControl.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_axisZoomControl.html new file mode 100644 index 0000000..547ed7f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_axisZoomControl.html @@ -0,0 +1,101 @@ + + + + + + + + Axis Zoom Control + + + + + + +

                          Axis Zoom Control

                          + Try to drag the slider endpoints and the bar to zoom X axis of the chart. +
                          +
                          +
                          +
                            +
                          1. 0
                          2. 10
                          3. 20
                          4. 30
                          5. 40
                          6. 50
                          7. 60
                          8. 70
                          9. 80
                          10. 90
                          11. 100
                          12. +
                          +
                          +
                          +
                          +

                          X Axis Lower Value: 

                          +

                          X Axis Upper Value: 

                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_bars.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_bars.html new file mode 100644 index 0000000..d4ef677 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_bars.html @@ -0,0 +1,72 @@ + + + + + + + + +Bar chart + + + + + +

                          Bar chart

                          +
                          + +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d-amd.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d-amd.html new file mode 100644 index 0000000..bf7f2e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d-amd.html @@ -0,0 +1,856 @@ + + + + + + + + Chart 2D + + + + + + + + +

                          Chart 2D

                          + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d.html new file mode 100644 index 0000000..e2567ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d.html @@ -0,0 +1,848 @@ + + + + + + + + Chart 2D + + + + + + + +

                          Chart 2D

                          + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d_dynamics.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d_dynamics.html new file mode 100644 index 0000000..a7f634b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d_dynamics.html @@ -0,0 +1,262 @@ + + + + + + + + +Chart 2D: dynamics + + + + + +

                          Chart 2D: dynamics

                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          Plot: + +
                          Grid: + + +
                          X axis: + + +
                          Y axis: + + +
                          Series 1: + + +   + +
                          Series 2: + + +   + +
                          Series 3: + + +   + +
                          Series 4: + + +   + +
                          Series 5: + + +   + +
                          Series 6: + + +  this series contains all 0 values +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d_updating.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d_updating.html new file mode 100644 index 0000000..873296a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chart2d_updating.html @@ -0,0 +1,105 @@ + + + + + + + + Chart 2D + + + + + +

                          Chart 2D Updating Data

                          +

                          + Areas, grey theme, axes, grid. Very crude example to show a chart + with updating values. +

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartAxisTitle.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartAxisTitle.html new file mode 100644 index 0000000..8038af6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartAxisTitle.html @@ -0,0 +1,176 @@ + + + + + + + + +Chart2D Title + + + + + +

                          Chart2D Titles

                          +

                          Column chart with axis title

                          +

                          + Axis Title Gap:  + +    + Axis Rotation + +       + +       + +

                          +
                          +

                          Line chart with customized axis title

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartTitle.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartTitle.html new file mode 100644 index 0000000..962967e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartTitle.html @@ -0,0 +1,106 @@ + + + + + + + + +Chart2D Title + + + + + +

                          Chart2D Title

                          +

                          Column chart with chart title

                          +

                          + Title Gap:  + +   + +

                          +
                          +

                          Line chart with customized chart title

                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartingsize.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartingsize.html new file mode 100644 index 0000000..5c8288e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_chartingsize.html @@ -0,0 +1,45 @@ + + + + + + + + Test charting sizing + + + + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_cylinders.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_cylinders.html new file mode 100644 index 0000000..c8c358c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_cylinders.html @@ -0,0 +1,72 @@ + + + + + + + + +Cylinder chart + + + + + +

                          Cylinder chart

                          +
                          + +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_event2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_event2d.html new file mode 100644 index 0000000..c89fd15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_event2d.html @@ -0,0 +1,252 @@ + + + + + + + + +Event 2D + + + + + + + + +

                          Event 2D

                          + +

                          Hover over markers, bars, columns, slices, and so on.

                          +

                          1: Markers, lines, 2D data, custom axis. Actions: Magnify, Tooltip.

                          +
                          +
                          +

                          2: Stacked lines, markers, shadows, no axes, custom strokes, fills, and markers. Actions: Magnify, Highlight.

                          +
                          +
                          +

                          3: Columns with gaps beetwen them, vertical axis aligned on major ticks, custom strokes, fills. Actions: Highlight, Tooltip.

                          +
                          +
                          +

                          4: Bars, axes aligned on major ticks, no minor ticks, custom strokes and fills. Actions: Highlight, Tooltip.

                          +
                          +
                          +

                          5: Clustered bars, custom axes, custom strokes, fills, custom tooltips, and gap. Actions: Highlight, Tooltip.

                          +
                          +
                          +

                          6: Clustered columns with positive and negative values, axes, and grid. Actions: Highlight, Shake, Tooltip.

                          +
                          +
                          +

                          7: Stacked columns, no axes, custom strokes and fills. Actions: Highlight, Shake, Tooltip.

                          +
                          +
                          +

                          8: Stacked bars, no axes, custom strokes and fills. Actions: Highlight, Shake, Tooltip.

                          +
                          +
                          +

                          9: Bubble chart, axes. Actions: Magnify, Highlight, Tooltip.

                          +
                          +
                          +

                          10: Rotated pie with internal custom labels, custom colors, and custom tooltips. Actions: MoveSlice, Highlight, Tooltip.

                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_fillstroke.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_fillstroke.html new file mode 100644 index 0000000..c904611 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_fillstroke.html @@ -0,0 +1,138 @@ + + + + + + + + + Chart Fill & Stroke + + + + + + + + + + +

                          Chart Fill & Stroke

                          + + + + + + + + + + + + +
                          + +
                          +
                          +
                          +
                          +
                          + +
                          +
                          +
                          +
                          +
                          + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_fireEvent.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_fireEvent.html new file mode 100644 index 0000000..3cf97e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_fireEvent.html @@ -0,0 +1,228 @@ + + + + + + + + +Chart 2D: fireEvent test + + + + + + +

                          Chart 2D: fireEvent test

                          + +

                          + Plot:  + +

                          + + + + + + + + + + + + + + + +
                          PlotEventEvent ObjectH. axisV. axisSeriesIndexX valueY value
                                   
                                   
                          + +

                          + Fire event:  + +  on index:  + +   +   +   +

                          + +

                          Warning: the pie chart shows only the last series (Series 5).

                          + +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_label_shortening.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_label_shortening.html new file mode 100644 index 0000000..c017740 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_label_shortening.html @@ -0,0 +1,156 @@ + + + + + + + + +Chart 2D labels shortening + + + + + +

                          Chart 2D labels shortening

                          +

                          Hover on the truncated label(end with default trailing Symbol: "..." or your customized trailing symbols) you will see the whole label on tooltip

                          +

                          1: Label shortening.(x axis customized trailing Symbol)

                          +
                          +

                          2: Label shortening with rotation.

                          +
                          +

                          3: Label shortening with limited character.(y axis customized trailing Symbol)

                          +
                          +

                          4: Label shortening with both limited character and limited length in px.

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_labels2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_labels2d.html new file mode 100644 index 0000000..44b1f5d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_labels2d.html @@ -0,0 +1,191 @@ + + + + + + + + +Chart 2D labels + + + + + +

                          Chart 2D labels

                          + +

                          1: Bars, axes aligned on major ticks, no minor ticks, custom strokes and fills.

                          +
                          +

                          2: Bars, axes aligned on major ticks, no minor ticks, custom strokes and fills, custom labels.

                          +
                          +

                          3: Bars, axes aligned on major ticks, no minor ticks, custom strokes and fills, custom labels with spaces.

                          +
                          +

                          4: Trying to make it look good.

                          +
                          +

                          5: Label rotation.

                          +
                          +

                          6: Label rotation (opposite).

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseIndicator.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseIndicator.html new file mode 100644 index 0000000..6ce0e79 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseIndicator.html @@ -0,0 +1,65 @@ + + + + + + + +Mouse Indicator + + + + + + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseIndicator2.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseIndicator2.html new file mode 100644 index 0000000..0bd61d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseIndicator2.html @@ -0,0 +1,70 @@ + + + + + + + + Mouse Indicator + + + + + + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseZoomAndPan.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseZoomAndPan.html new file mode 100644 index 0000000..b48edca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_mouseZoomAndPan.html @@ -0,0 +1,80 @@ + + + + + + + + Mouse Zoom And Pan + + + + + + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_nulls.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_nulls.html new file mode 100644 index 0000000..d2c8ffd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_nulls.html @@ -0,0 +1,115 @@ + + + + + + + +Chart 2D nulls + + + + + + +

                          Chart 2D nulls in series

                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie2d.html new file mode 100644 index 0000000..6142bf4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie2d.html @@ -0,0 +1,165 @@ + + + + + + + + +Pie 2D + + + + + +

                          Pie 2D

                          + +

                          1: Pie with internal labels.

                          +
                          +

                          2: Pie with external labels and precision=0.

                          +
                          +

                          3/4: Two pies with internal and external labels with a constant radius.

                          + + + +
                          +

                          5/6: Pie with internal custom labels and custom colors (#6 is rotated).

                          + + + +
                          +

                          7: Degenerated pie with 1 element.

                          +
                          +

                          8: Degenerated pie with 1 positive elements (out of 5).

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie2d_zeroslice.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie2d_zeroslice.html new file mode 100644 index 0000000..3b3d20e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie2d_zeroslice.html @@ -0,0 +1,65 @@ + + + + + + + + +Pie 2D + + + + + +

                          Pie 2D

                          + +

                          Pie with a 0 slice

                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie_smart_label.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie_smart_label.html new file mode 100644 index 0000000..0521aac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_pie_smart_label.html @@ -0,0 +1,146 @@ + + + + + + + + + Pie 2D: Smart Label + + + + + +

                          Pie 2D: Smart Label

                          +

                          Example of Pie chart using smart label:

                          +
                          +
                          +
                          +
                          +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_plot_order.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_plot_order.html new file mode 100644 index 0000000..a56ebbe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_plot_order.html @@ -0,0 +1,110 @@ + + + + + + + + +Testing plot order + + + + + +

                          Testing plot order

                          + +

                          Chart:

                          +
                          +
                          +

                          Plot 1:

                          +

                          Plot 2:

                          +

                          Plot 3:

                          +

                          Plots (rearrange using drag-and-drop):

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_rotatedLabels.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_rotatedLabels.html new file mode 100644 index 0000000..063f177 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_rotatedLabels.html @@ -0,0 +1,101 @@ + + + + + + + + +Chart 2D rotated labels + + + + + +

                          Chart 2D rotated labels

                          + +

                          + Rotation:  + +   + +

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_scaler.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_scaler.html new file mode 100644 index 0000000..5402d33 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_scaler.html @@ -0,0 +1,108 @@ + + + + + + + + +Scaler/tick generator + + + + + +

                          Scaler/tick generator

                          +

                          Input

                          + + + + + + + + +
                          NameValue
                          min
                          max
                          span
                          natural
                          fixLower
                          fixUpper
                          +

                          +

                          Output

                          + + + + + + + + + + + + + + + + + + + + + + + +
                          NameValue
                          lowerBound 
                          upperBound 
                          major.tick 
                          major.start 
                          major.count 
                          major.prec 
                          minor.tick 
                          minor.start 
                          minor.count 
                          minor.prec 
                          micro.tick 
                          micro.start 
                          micro.count 
                          micro.prec 
                          scale 
                          span 
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_selectableLegend.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_selectableLegend.html new file mode 100644 index 0000000..b3828a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_selectableLegend.html @@ -0,0 +1,262 @@ + + + + + + + + + Chart: Selectable Legend test + + + + + + + +

                          Chart: Selectable Legend

                          +

                          Click the legends

                          +
                          +
                          +

                          1.Bars

                          +
                          +
                          +
                          +
                          +

                          2.Clustered Bars

                          +
                          +
                          +
                          +
                          +

                          3.Stacked Bars

                          +
                          +
                          +
                          +
                          +

                          4.Stacked Area

                          +
                          +
                          +
                          +
                          + + +
                          +
                          +

                          5.Columns

                          +
                          +
                          +
                          +
                          +

                          6.Clustered Columns

                          +
                          +
                          +
                          +
                          +

                          7.Stacked Columns

                          +
                          +
                          +
                          +
                          +

                          8.Lines&Columns

                          +
                          +
                          +
                          +
                          + +
                          +
                          +

                          9.Pie

                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          10.Bubble

                          +
                          +
                          +
                          +
                          +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_series_order.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_series_order.html new file mode 100644 index 0000000..c3cbfd3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_series_order.html @@ -0,0 +1,102 @@ + + + + + + + + +Testing series order + + + + + +

                          Testing series order

                          + +

                          Chart:

                          +
                          +
                          +

                          Series A:

                          +

                          Series B:

                          +

                          Series C:

                          +

                          Series (rearrange using drag-and-drop):

                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_sparklines.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_sparklines.html new file mode 100644 index 0000000..6341da4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_sparklines.html @@ -0,0 +1,216 @@ + + + + + + + + Chart 2D -- Sparklines Edition + + + + + + +

                          Chart 2D

                          +

                          Sparkline-style charts using dojox.charting

                          +

                          This is a particularly brutal example with lots and lots of data. + It may cause laggyness in lesser browsers.

                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + Simple Sparkline: + +
                          +
                          +
                          +
                          +
                          + 7 arbitrary data points +
                          + Google Closing Price & Volume: + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          + +
                          + ~1400 data points, all trading days since Jan '05 +
                          + Yahoo Closing Price & Volume: + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          + +
                          +
                          + Microsoft Closing Price & Volume: + +
                          +
                          +
                          +
                          +
                          +
                          +
                          + +
                          +
                          + Microsoft Closing Price: + +
                          +
                          + 100 points using Sparkline widget +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_spider2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_spider2d.html new file mode 100644 index 0000000..e549cdc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_spider2d.html @@ -0,0 +1,297 @@ + + + + + + + + +Spider 2D + + + + + + + + + + + + + +

                          Spider 2D

                          +
                          +A spider chart is a graphical method of displaying multivariate data in the form of a two-dimensional chart of three or more quantitative variables represented on axes starting from the same point. The relative position and angle of the axes is typically uninformative. +
                          +
                            +
                          • + It consists of a sequence of equi-angular spokes, called radii, with each spoke representing one of the variables. The data length of a spoke is proportional to the magnitude of the variable for the data point relative to the maximum magnitude of the variable across all data points. + A line is drawn connecting the data values for each spoke. This gives the plot a star-like appearance and the origin of the name of this plot. +
                          • +
                          • + Spider charts are useful when you want to look at several different factors all related to one item. spider charts have multiple axes along which data can be plotted +
                          • +
                          + +
                          +Application +
                          +
                            + +
                          • + The "spider chart" can be a format commonly used by management consultants to show their clients how an organization compares with those in similar companies. +
                          • +
                          • + It also can be used as the control of quality improvement to display the performance metrics of any ongoing program. +
                          • +
                          • + Furthermore, it is also being used in sports to chart players' strengths and weaknesses. +
                          • +
                          • + For example, you could use a spider chart to compile data about a wide receiver on a professional football team. On one axis, you could plot the percentage of passes caught. + Another axis would show his yards per completion; another, his completions per 100 plays; another, blocks made; and a final axis might show his interceptions + So far as we can see, the spider has a broad application area. +
                          • +
                          +
                          +Comparison with radar chart in dojox.charting +
                          +
                            +
                          • + Spider charts differ from radar chart in that a spider chart is a chart that has N "y" axes while radar chart has only one "y" axis, all radiating from a central point, + where each "y" axis represents a specific category. For example, there are 5 "y" axes: GDP, area, population, inflation and growth here. +
                          • +
                          • + The radar chart, however, instead of being drawn in a typical linear X/Y space, the radar chart is drawn using a circular plot, with specific X values being shown using an arbitrary number of spokes drawn from a center point. + These charts are useful for showing data over a cyclical set of values (for instance, hours of a day, minutes in an hour, etc.). With a radar chart, data is plotted in much the same way as with a typical line or area chart. +
                          • +
                          • + Actually, the radar chart is somewhat similar with line chart, the major difference between them is: line chart has a "straight" X axis while radar chart has a "circular" X axis, and the orientation of their Y axis is opposite. +
                          • +
                          +
                          +

                          +Spider 2D Demo: +

                          +

                          + + Switch Year: + + +       +                                +   + + +

                          +

                          + + Switch Spider Type: + + +       + + +                               + + Switch Divisions: + + +       + + +

                          +
                          + The following legends are selectable: +
                          +
                          +

                          +

                          +

                          + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_tension.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_tension.html new file mode 100644 index 0000000..3f95b68 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_tension.html @@ -0,0 +1,69 @@ + + + + + + + + + Tension test. + + + + + + +

                          Tension test.

                          + +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_themes-amd.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_themes-amd.html new file mode 100644 index 0000000..cab1ba7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_themes-amd.html @@ -0,0 +1,316 @@ + + + + + + + + +Example Dojo Chart Types + + + + + +

                          Example Dojo Chart Types

                          +

                          Choose a theme from the list below, a theme will be loaded dynamically, and the charts will be rendered using it.

                          +

                          + +     + + +

                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_themes.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_themes.html new file mode 100644 index 0000000..b8ed78a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_themes.html @@ -0,0 +1,318 @@ + + + + + + + + +Example Dojo Chart Types + + + + + +

                          Example Dojo Chart Types

                          +

                          Choose a theme from the list below, a theme will be loaded dynamically, and the charts will be rendered using it.

                          +

                          + +     + + +

                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_touchIndicator.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_touchIndicator.html new file mode 100644 index 0000000..7ed067b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_touchIndicator.html @@ -0,0 +1,103 @@ + + + + + + + + Touch Indicator + + + + + + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_touchZoomAndPan.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_touchZoomAndPan.html new file mode 100644 index 0000000..fb85165 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_touchZoomAndPan.html @@ -0,0 +1,63 @@ + + + + + + + + Touch Zoom And Pan + + + + + + + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d-amd.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d-amd.html new file mode 100644 index 0000000..b51175c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d-amd.html @@ -0,0 +1,122 @@ + + + + + + + + + Chart 2D + + + + + + + + + +

                          Chart 2D

                          +

                          Examples of charts using widgets.

                          +
                          + + + + + + + + + + + + + + + + + + + + + + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d.html new file mode 100644 index 0000000..4252d13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d.html @@ -0,0 +1,126 @@ + + + + + + + + + Chart 2D + + + + + + + + + + +

                          Chart 2D

                          +

                          Examples of charts using widgets.

                          +
                          + + + + + + + + + + + + + + + + + + + + + + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d_deprecated.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d_deprecated.html new file mode 100644 index 0000000..3274dee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_widget2d_deprecated.html @@ -0,0 +1,116 @@ + + + + + + + + + Chart 2D + + + + + + + + + + +

                          Chart 2D

                          +

                          Examples of charts using widgets.

                          +
                          + + + + + + + + + + + + + + + + + + + + + + + +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/test_win2d.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_win2d.html new file mode 100644 index 0000000..3183eb5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/test_win2d.html @@ -0,0 +1,213 @@ + + + + + + + + +Scaling, scrolling, and panning. + + + + + +

                          Scaling, scrolling, and panning.

                          + +

                          UI explained:

                          +
                            +
                          • Use Scale X and Scale Y to zoom in the chart. You can scale the chart anisotropically.
                          • +
                          • Use Offset X and Offset Y to move the origin of the chart.
                          • +
                          • You cannot move the chart outside its boundaries. +
                              +
                            • Example: if both scale factors are 1, you cannot move the origin — you should zoom in first.
                            • +
                            +
                          • +
                          • After applying scale/offset to the chart, sliders' positions change to reflect actual values.
                          • +
                          • When you zoomed in, you can grab chart with mouse and move around (pan). +
                              +
                            • Warning: can be slow on some browsers.
                            • +
                            +
                          • +
                          + + + + + + + + + +
                          Scale X (1)
                          +
                          +
                          +
                          +
                          +
                          Scale Y (1)
                          +
                          +
                          +
                          +
                          +
                          Offset X (0)
                          +
                          +
                          +
                          +
                          +
                          Offset Y (0)
                          +
                          +
                          +
                          +
                          +
                          +
                          +

                          That's all Folks!

                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/theme_preview-amd.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/theme_preview-amd.html new file mode 100644 index 0000000..2f97fcd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/theme_preview-amd.html @@ -0,0 +1,100 @@ + + + + + + + + + + DojoX Charting Theme Previewer + + + + + +

                          DojoX Charting Theme Preview

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/tests/theme_preview.html b/js/dojo-release-1.7.2-src/dojox/charting/tests/theme_preview.html new file mode 100644 index 0000000..0409e7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/tests/theme_preview.html @@ -0,0 +1,83 @@ + + + + + + + + + + DojoX Charting Theme Previewer + + + + + +

                          DojoX Charting Theme Preview

                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Adobebricks.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Adobebricks.js new file mode 100644 index 0000000..db3dd99 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Adobebricks.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Adobebricks=new Theme({ + colors: [ + "#7f2518", + "#3e170c", + "#cc3927", + "#651f0e", + "#8c271c" + ] + }); + + return themes.Adobebricks; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Algae.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Algae.js new file mode 100644 index 0000000..7a809ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Algae.js @@ -0,0 +1,12 @@ +define(["../Theme", "./common"], function(Theme, themes){ + themes.Algae = new Theme({ + colors: [ + "#57808f", + "#506885", + "#4f7878", + "#558f7f", + "#508567" + ] + }); + return themes.Algae; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Bahamation.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Bahamation.js new file mode 100644 index 0000000..6132766 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Bahamation.js @@ -0,0 +1,12 @@ +define(["../Theme", "./common"], function(Theme, themes){ + themes.Bahamation=new Theme({ + colors: [ + "#3f9998", + "#3fc0c3", + "#70c058", + "#ef446f", + "#c663a6" + ] + }); + return themes.Bahamation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/BlueDusk.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/BlueDusk.js new file mode 100644 index 0000000..7762bdd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/BlueDusk.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.BlueDusk=new Theme({ + colors: [ + "#292e76", + "#3e56a6", + "#10143f", + "#33449c", + "#798dcd" + ] + }); + + return themes.BlueDusk; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Charged.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Charged.js new file mode 100644 index 0000000..0e6f1c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Charged.js @@ -0,0 +1,87 @@ +define(["../Theme", "dojox/gfx/gradutils", "./common"], function(Theme, gradutils, themes){ + + var g = Theme.generateGradient, + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 0, y2: 75}; + + themes.Charged = new Theme({ + chart: { + fill: "#ededdf", + pageStyle: {backgroundColor: "#ededdf", backgroundImage: "none", color: "inherit"} + }, + plotarea: { + fill: "transparent" + }, + axis:{ + stroke: { // the axis itself + color: "#808078", + width: 1 + }, + tick: { // used as a foundation for all ticks + color: "#b3b3a8", + position: "center", + font: "normal normal normal 7pt Helvetica, Arial, sans-serif", // labels on axis + fontColor: "#808078" // color of labels + } + }, + series: { + stroke: {width: 2, color: "#595954"}, + outline: null, + font: "normal normal normal 8pt Helvetica, Arial, sans-serif", + fontColor: "#808078" + }, + marker: { + stroke: {width: 3, color: "#595954"}, + outline: null, + font: "normal normal normal 8pt Helvetica, Arial, sans-serif", + fontColor: "#808078" + }, + seriesThemes: [ + {fill: g(defaultFill, "#004cbf", "#06f")}, + {fill: g(defaultFill, "#bf004c", "#f06")}, + {fill: g(defaultFill, "#43bf00", "#6f0")}, + {fill: g(defaultFill, "#7300bf", "#90f")}, + {fill: g(defaultFill, "#bf7300", "#f90")}, + {fill: g(defaultFill, "#00bf73", "#0f9")} + ], + markerThemes: [ + {fill: "#06f", stroke: {color: "#06f"}}, + {fill: "#f06", stroke: {color: "#f06"}}, + {fill: "#6f0", stroke: {color: "#6f0"}}, + {fill: "#90f", stroke: {color: "#90f"}}, + {fill: "#f90", stroke: {color: "#f90"}}, + {fill: "#0f9", stroke: {color: "#0f9"}} + ] + }); + + themes.Charged.next = function(elementType, mixin, doPost){ + var isLine = elementType == "line"; + if(isLine || elementType == "area"){ + // custom processing for lines: substitute colors + var s = this.seriesThemes[this._current % this.seriesThemes.length]; + s.fill.space = "plot"; + if(isLine){ + s.stroke = { width: 2.5, color: s.fill.colors[1].color}; + } + if(elementType == "area"){ + s.fill.y2 = 90; + } + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + delete s.stroke; + s.fill.y2 = 75; + s.fill.space = "shape"; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + themes.Charged.post = function(theme, elementType){ + theme = Theme.prototype.post.apply(this, arguments); + if((elementType == "slice" || elementType == "circle") && theme.series.fill && theme.series.fill.type == "radial"){ + theme.series.fill = gradutils.reverse(theme.series.fill); + } + return theme; + }; + + return themes.Charged; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Chris.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Chris.js new file mode 100644 index 0000000..c9ec04a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Chris.js @@ -0,0 +1,75 @@ +define(["../Theme", "dojox/gfx/gradutils", "./common"], function(Theme, gradutils, themes){ + + // created by Christopher Anderson + + var g = Theme.generateGradient, + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 0, y2: 100}; + + themes.Chris = new Theme({ + chart: { + fill: "#c1c1c1", + stroke: {color: "#666"} + }, + plotarea: { + fill: "#c1c1c1" + }, + series: { + stroke: {width: 2, color: "white"}, + outline: null, + fontColor: "#333" + }, + marker: { + stroke: {width: 2, color: "white"}, + outline: {width: 2, color: "white"}, + fontColor: "#333" + }, + seriesThemes: [ + {fill: g(defaultFill, "#01b717", "#238c01")}, // green + {fill: g(defaultFill, "#d04918", "#7c0344")}, // red + {fill: g(defaultFill, "#0005ec", "#002578")}, // blue + {fill: g(defaultFill, "#f9e500", "#786f00")}, // yellow + {fill: g(defaultFill, "#e27d00", "#773e00")}, // orange + {fill: g(defaultFill, "#00b5b0", "#005f5d")}, // teal + {fill: g(defaultFill, "#ac00cb", "#590060")} // purple + ], + markerThemes: [ + {fill: "#01b717", stroke: {color: "#238c01"}}, // green + {fill: "#d04918", stroke: {color: "#7c0344"}}, // red + {fill: "#0005ec", stroke: {color: "#002578"}}, // blue + {fill: "#f9e500", stroke: {color: "#786f00"}}, // yellow + {fill: "#e27d00", stroke: {color: "#773e00"}}, // orange + {fill: "#00b5b0", stroke: {color: "#005f5d"}}, // teal + {fill: "#ac00cb", stroke: {color: "#590060"}} // purple + ] + }); + + themes.Chris.next = function(elementType, mixin, doPost){ + var isLine = elementType == "line"; + if(isLine || elementType == "area"){ + // custom processing for lines: substitute colors + var s = this.seriesThemes[this._current % this.seriesThemes.length]; + s.fill.space = "plot"; + if(isLine){ + s.stroke = {color: s.fill.colors[1].color}; + s.outline = {width: 2, color: "white"}; + } + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + delete s.outline; + delete s.stroke; + s.fill.space = "shape"; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + themes.Chris.post = function(theme, elementType){ + theme = Theme.prototype.post.apply(this, arguments); + if((elementType == "slice" || elementType == "circle") && theme.series.fill && theme.series.fill.type == "radial"){ + theme.series.fill = gradutils.reverse(theme.series.fill); + } + return theme; + }; + + return themes.Chris; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Claro.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Claro.js new file mode 100644 index 0000000..e4f3e40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Claro.js @@ -0,0 +1,106 @@ +define(["../Theme", "dojox/gfx/gradutils", "./common"], function(Theme, gradutils, themes){ + // created by Tom Trenka + + var g = Theme.generateGradient, + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 0, y2: 100}; + + themes.Claro = new Theme({ + chart: { + fill: { + type: "linear", + x1: 0, x2: 0, y1: 0, y2: 100, + colors: [ + { offset: 0, color: "#dbdbdb" }, + { offset: 1, color: "#efefef" } + ] + }, + stroke: {color: "#b5bcc7"} + }, + plotarea: { + fill: { + type: "linear", + x1: 0, x2: 0, y1: 0, y2: 100, + colors: [ + { offset: 0, color: "#dbdbdb" }, + { offset: 1, color: "#efefef" } + ] + } + }, + axis:{ + stroke: { // the axis itself + color: "#888c76", + width: 1 + }, + tick: { // used as a foundation for all ticks + color: "#888c76", + position: "center", + font: "normal normal normal 7pt Verdana, Arial, sans-serif", // labels on axis + fontColor: "#888c76" // color of labels + } + }, + series: { + stroke: {width: 2.5, color: "#fff"}, + outline: null, + font: "normal normal normal 7pt Verdana, Arial, sans-serif", + fontColor: "#131313" + }, + marker: { + stroke: {width: 1.25, color: "#131313"}, + outline: {width: 1.25, color: "#131313"}, + font: "normal normal normal 8pt Verdana, Arial, sans-serif", + fontColor: "#131313" + }, + seriesThemes: [ + {fill: g(defaultFill, "#2a6ead", "#3a99f2")}, + {fill: g(defaultFill, "#613e04", "#996106")}, + {fill: g(defaultFill, "#0e3961", "#155896")}, + {fill: g(defaultFill, "#55aafa", "#3f7fba")}, + {fill: g(defaultFill, "#ad7b2a", "#db9b35")} + ], + markerThemes: [ + {fill: "#2a6ead", stroke: {color: "#fff"}}, + {fill: "#613e04", stroke: {color: "#fff"}}, + {fill: "#0e3961", stroke: {color: "#fff"}}, + {fill: "#55aafa", stroke: {color: "#fff"}}, + {fill: "#ad7b2a", stroke: {color: "#fff"}} + ] + }); + + themes.Claro.next = function(elementType, mixin, doPost){ + var isLine = elementType == "line"; + if(isLine || elementType == "area"){ + // custom processing for lines: substitute colors + var s = this.seriesThemes[this._current % this.seriesThemes.length], + m = this.markerThemes[this._current % this.markerThemes.length]; + s.fill.space = "plot"; + if(isLine){ + s.stroke = { width: 4, color: s.fill.colors[0].color}; + } + m.outline = { width: 1.25, color: m.fill }; + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + delete s.outline; + delete s.stroke; + s.fill.space = "shape"; + return theme; + } + else if(elementType == "candlestick"){ + var s = this.seriesThemes[this._current % this.seriesThemes.length]; + s.fill.space = "plot"; + s.stroke = { width: 1, color: s.fill.colors[0].color}; + var theme = Theme.prototype.next.apply(this, arguments); + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + themes.Claro.post = function(theme, elementType){ + theme = Theme.prototype.post.apply(this, arguments); + if((elementType == "slice" || elementType == "circle") && theme.series.fill && theme.series.fill.type == "radial"){ + theme.series.fill = gradutils.reverse(theme.series.fill); + } + return theme; + }; + + return themes.Claro; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/CubanShirts.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/CubanShirts.js new file mode 100644 index 0000000..7591e91 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/CubanShirts.js @@ -0,0 +1,16 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + // notes: colors generated by moving in 30 degree increments around the hue circle, + // at 90% saturation, using a B value of 75 (HSB model). + themes.CubanShirts=new Theme({ + colors: [ + "#d42d2a", + "#004f80", + "#989736", + "#2085c7", + "#7f7f33" + ] + }); + + return themes.CubanShirts; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Desert.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Desert.js new file mode 100644 index 0000000..cab2e75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Desert.js @@ -0,0 +1,16 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + // notes: colors generated by moving in 30 degree increments around the hue circle, + // at 90% saturation, using a B value of 75 (HSB model). + themes.Desert=new Theme({ + colors: [ + "#ffebd5", + "#806544", + "#fdc888", + "#80766b", + "#cda26e" + ] + }); + + return themes.Desert; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Distinctive.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Distinctive.js new file mode 100644 index 0000000..eaeb239 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Distinctive.js @@ -0,0 +1,42 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Distinctive=new Theme({ + colors: [ + "#497c91", + "#ada9d6", + "#768b4e", + "#eeea99", + "#b39c53", + "#c28b69", + "#815454", + "#bebebe", + "#59a0bd", + "#c9c6e4", + "#677e13", + "#f0eebb", + "#e9c756", + "#cfb09b", + "#a05a5a", + "#d8d8d8", + "#9dc7d9", + "#7b78a4", + "#a8c179", + "#b7b35c", + "#ebcf81", + "#956649", + "#c99999", + "#868686", + "#c7e0e9", + "#8d88c7", + "#c0d0a0", + "#e8e667", + "#efdeb0", + "#b17044", + "#ddc0c0", + "#a5a5a5" + + ] + }); + + return themes.Distinctive; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Dollar.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Dollar.js new file mode 100644 index 0000000..36790c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Dollar.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Dollar=new Theme({ + colors: [ + "#A4CE67", + "#739363", + "#6B824A", + "#343434", + "#636563" + ] + }); + + return themes.Dollar; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Electric.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Electric.js new file mode 100644 index 0000000..1e8d8ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Electric.js @@ -0,0 +1,88 @@ +define(["../Theme", "dojox/gfx/gradutils", "./common"], function(Theme, gradutils, themes){ + + var g = Theme.generateGradient, + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 0, y2: 75}; + + themes.Electric = new Theme({ + chart: { + fill: "#252525", + stroke: {color: "#252525"}, + pageStyle: {backgroundColor: "#252525", backgroundImage: "none", color: "#ccc"} + }, + plotarea: { + fill: "#252525" + }, + axis:{ + stroke: { // the axis itself + color: "#aaa", + width: 1 + }, + tick: { // used as a foundation for all ticks + color: "#777", + position: "center", + font: "normal normal normal 7pt Helvetica, Arial, sans-serif", // labels on axis + fontColor: "#777" // color of labels + } + }, + series: { + stroke: {width: 2, color: "#ccc"}, + outline: null, + font: "normal normal normal 8pt Helvetica, Arial, sans-serif", + fontColor: "#ccc" + }, + marker: { + stroke: {width: 3, color: "#ccc"}, + outline: null, + font: "normal normal normal 8pt Helvetica, Arial, sans-serif", + fontColor: "#ccc" + }, + seriesThemes: [ + {fill: g(defaultFill, "#004cbf", "#06f")}, + {fill: g(defaultFill, "#bf004c", "#f06")}, + {fill: g(defaultFill, "#43bf00", "#6f0")}, + {fill: g(defaultFill, "#7300bf", "#90f")}, + {fill: g(defaultFill, "#bf7300", "#f90")}, + {fill: g(defaultFill, "#00bf73", "#0f9")} + ], + markerThemes: [ + {fill: "#06f", stroke: {color: "#06f"}}, + {fill: "#f06", stroke: {color: "#f06"}}, + {fill: "#6f0", stroke: {color: "#6f0"}}, + {fill: "#90f", stroke: {color: "#90f"}}, + {fill: "#f90", stroke: {color: "#f90"}}, + {fill: "#0f9", stroke: {color: "#0f9"}} + ] + }); + + themes.Electric.next = function(elementType, mixin, doPost){ + var isLine = elementType == "line"; + if(isLine || elementType == "area"){ + // custom processing for lines: substitute colors + var s = this.seriesThemes[this._current % this.seriesThemes.length]; + s.fill.space = "plot"; + if(isLine){ + s.stroke = { width: 2.5, color: s.fill.colors[1].color}; + } + if(elementType == "area"){ + s.fill.y2 = 90; + } + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + delete s.stroke; + s.fill.y2 = 75; + s.fill.space = "shape"; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + themes.Electric.post = function(theme, elementType){ + theme = Theme.prototype.post.apply(this, arguments); + if((elementType == "slice" || elementType == "circle") && theme.series.fill && theme.series.fill.type == "radial"){ + theme.series.fill = gradutils.reverse(theme.series.fill); + } + return theme; + }; + + return themes.Electric; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Grasshopper.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Grasshopper.js new file mode 100644 index 0000000..a5e182d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Grasshopper.js @@ -0,0 +1,12 @@ +define(["dojo/_base/lang","../Theme", "./common"], function(lang, Theme, themes){ + themes.Grasshopper=new Theme({ + colors: [ + "#208040", + "#40b657", + "#78c25e", + "#14401f", + "#64bd5f" + ] + }); + return themes.Grasshopper; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Grasslands.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Grasslands.js new file mode 100644 index 0000000..5c53dbf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Grasslands.js @@ -0,0 +1,16 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + // notes: colors generated by moving in 30 degree increments around the hue circle, + // at 90% saturation, using a B value of 75 (HSB model). + themes.Grasslands=new Theme({ + colors: [ + "#70803a", + "#dde574", + "#788062", + "#b1cc5d", + "#eff2c2" + ] + }); + + return themes.Grasslands; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/GreySkies.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/GreySkies.js new file mode 100644 index 0000000..7864e99 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/GreySkies.js @@ -0,0 +1,6 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.GreySkies=new Theme(Theme._def); + + return themes.GreySkies; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Harmony.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Harmony.js new file mode 100644 index 0000000..7fbe9a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Harmony.js @@ -0,0 +1,41 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Harmony=new Theme({ + colors: [ + "#497c91", + "#59a0bd", + "#9dc7d9", + "#c7e0e9", + "#7b78a4", + "#8d88c7", + "#ada9d6", + "#c9c6e4", + "#768b4e", + "#677e13", + "#a8c179", + "#c0d0a0", + "#b7b35c", + "#e8e667", + "#eeea99", + "#f0eebb", + "#b39c53", + "#e9c756", + "#ebcf81", + "#efdeb0", + "#956649", + "#b17044", + "#c28b69", + "#cfb09b", + "#815454", + "#a05a5a", + "#c99999", + "#ddc0c0", + "#868686", + "#a5a5a5", + "#bebebe", + "#d8d8d8" + ] + }); + + return themes.Harmony; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/IndigoNation.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/IndigoNation.js new file mode 100644 index 0000000..f3d131a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/IndigoNation.js @@ -0,0 +1,16 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + // notes: colors generated by moving in 30 degree increments around the hue circle, + // at 90% saturation, using a B value of 75 (HSB model). + themes.IndigoNation=new Theme({ + colors: [ + "#93a4d0", + "#3b4152", + "#687291", + "#9faed9", + "#8290b8" + ] + }); + + return themes.IndigoNation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Ireland.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Ireland.js new file mode 100644 index 0000000..82ac126 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Ireland.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Ireland=new Theme({ + colors: [ + "#abdbcb", + "#435a51", + "#70998b", + "#78d596", + "#5f8074" + ] + }); + + return themes.Ireland; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Julie.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Julie.js new file mode 100644 index 0000000..79c4a15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Julie.js @@ -0,0 +1,68 @@ +define(["../Theme", "dojox/gfx/gradutils", "./common"], function(Theme, gradutils){ + + // created by Julie Santilli (Claro-based theme) + + var themes = dojox.charting.themes, g = Theme.generateGradient, + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 0, y2: 100}; + + themes.Julie = new Theme({ + seriesThemes: [ + {fill: g(defaultFill, "#59a0bd", "#497c91"), stroke: {color: "#22627d"}}, // blue + {fill: g(defaultFill, "#8d88c7", "#6c6d8e"), stroke: {color: "#8a84c5"}}, // purple + {fill: g(defaultFill, "#85a54a", "#768b4e"), stroke: {color: "#5b6d1f"}}, // green + {fill: g(defaultFill, "#e8e667", "#c6c361"), stroke: {color: "#918e38"}}, // yellow + {fill: g(defaultFill, "#e9c756", "#c7a223"), stroke: {color: "#947b30"}}, // orange + {fill: g(defaultFill, "#a05a5a", "#815454"), stroke: {color: "#572828"}}, // red + {fill: g(defaultFill, "#b17044", "#72543e"), stroke: {color: "#74482e"}}, // brown + {fill: g(defaultFill, "#a5a5a5", "#727272"), stroke: {color: "#535353"}}, // grey + + {fill: g(defaultFill, "#9dc7d9", "#59a0bd"), stroke: {color: "#22627d"}}, // blue + {fill: g(defaultFill, "#b7b3da", "#8681b3"), stroke: {color: "#8a84c5"}}, // purple + {fill: g(defaultFill, "#a8c179", "#85a54a"), stroke: {color: "#5b6d1f"}}, // green + {fill: g(defaultFill, "#eeea99", "#d6d456"), stroke: {color: "#918e38"}}, // yellow + {fill: g(defaultFill, "#ebcf81", "#e9c756"), stroke: {color: "#947b30"}}, // orange + {fill: g(defaultFill, "#c99999", "#a05a5a"), stroke: {color: "#572828"}}, // red + {fill: g(defaultFill, "#c28b69", "#7d5437"), stroke: {color: "#74482e"}}, // brown + {fill: g(defaultFill, "#bebebe", "#8c8c8c"), stroke: {color: "#535353"}}, // grey + + {fill: g(defaultFill, "#c7e0e9", "#92baca"), stroke: {color: "#22627d"}}, // blue + {fill: g(defaultFill, "#c9c6e4", "#ada9d6"), stroke: {color: "#8a84c5"}}, // purple + {fill: g(defaultFill, "#c0d0a0", "#98ab74"), stroke: {color: "#5b6d1f"}}, // green + {fill: g(defaultFill, "#f0eebb", "#dcd87c"), stroke: {color: "#918e38"}}, // yellow + {fill: g(defaultFill, "#efdeb0", "#ebcf81"), stroke: {color: "#947b30"}}, // orange + {fill: g(defaultFill, "#ddc0c0", "#c99999"), stroke: {color: "#572828"}}, // red + {fill: g(defaultFill, "#cfb09b", "#c28b69"), stroke: {color: "#74482e"}}, // brown + {fill: g(defaultFill, "#d8d8d8", "#bebebe"), stroke: {color: "#535353"}}, // grey + + {fill: g(defaultFill, "#ddeff5", "#a5c4cd"), stroke: {color: "#22627d"}}, // blue + {fill: g(defaultFill, "#dedcf0", "#b3afd3"), stroke: {color: "#8a84c5"}}, // purple + {fill: g(defaultFill, "#dfe9ca", "#c0d0a0"), stroke: {color: "#5b6d1f"}}, // green + {fill: g(defaultFill, "#f8f7db", "#e5e28f"), stroke: {color: "#918e38"}}, // yellow + {fill: g(defaultFill, "#f7f0d8", "#cfbd88"), stroke: {color: "#947b30"}}, // orange + {fill: g(defaultFill, "#eedede", "#caafaf"), stroke: {color: "#572828"}}, // red + {fill: g(defaultFill, "#e3cdbf", "#cfb09b"), stroke: {color: "#74482e"}}, // brown + {fill: g(defaultFill, "#efefef", "#cacaca"), stroke: {color: "#535353"}} // grey + ] + }); + + themes.Julie.next = function(elementType, mixin, doPost){ + if(elementType == "line" || elementType == "area"){ + var s = this.seriesThemes[this._current % this.seriesThemes.length]; + s.fill.space = "plot"; + var theme = Theme.prototype.next.apply(this, arguments); + s.fill.space = "shape"; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + themes.Julie.post = function(theme, elementType){ + theme = Theme.prototype.post.apply(this, arguments); + if(elementType == "slice" && theme.series.fill && theme.series.fill.type == "radial"){ + theme.series.fill = gradutils.reverse(theme.series.fill); + } + return theme; + }; + + return themes.Julie; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/MiamiNice.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/MiamiNice.js new file mode 100644 index 0000000..1739fee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/MiamiNice.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.MiamiNice=new Theme({ + colors: [ + "#7f9599", + "#45b8cc", + "#8ecfb0", + "#f8acac", + "#cc4482" + ] + }); + + return themes.MiamiNice; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Midwest.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Midwest.js new file mode 100644 index 0000000..a122974 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Midwest.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Midwest=new Theme({ + colors: [ + "#927b51", + "#a89166", + "#80c31c", + "#bcdd5a", + "#aebc21" + ] + }); + + return themes.Midwest; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Minty.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Minty.js new file mode 100644 index 0000000..89a1dd5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Minty.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Minty=new Theme({ + colors: [ + "#80ccbb", + "#539e8b", + "#335f54", + "#8dd1c2", + "#68c5ad" + ] + }); + + return themes.Minty; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/README b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/README new file mode 100644 index 0000000..dbf4c81 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/README @@ -0,0 +1,11 @@ +This directory contains a set of themes for the DojoX Charting +engine that are based on the visual stylings of the PlotKit +chart kit, created by Alastair Tse: + +http://www.liquidx.net/plotkit/ + +...whose work we admire. Consider these themes to not be a +ripoff of his fine work, but instead a true homage: his charts +are beautiful, and we stand in awe. + +--trt, 2007-06-08 diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/base.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/base.js new file mode 100644 index 0000000..ff6e700 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/base.js @@ -0,0 +1,53 @@ +define(["dojo/_base/kernel","dojo/_base/lang","../../Theme", "../common"], + function(dojo, lang, Theme, themes){ + + // the baseline theme for all PlotKIt themes + var pk = lang.getObject("PlotKit", true, themes); + + pk.base = new Theme({ + chart:{ + stroke: null, + fill: "yellow" + }, + plotarea:{ + stroke: null, + fill: "yellow" + }, + axis:{ + stroke: {color:"#fff", width:1}, + line: {color:"#fff", width:.5}, + majorTick: {color: "#fff", width: .5, length: 6}, + minorTick: {color: "#fff", width: .5, length: 3}, + tick: {font: "normal normal normal 7pt Helvetica,Arial,sans-serif", fontColor: "#999"} + }, + series:{ + stroke: {width: 2.5, color:"#fff"}, + fill: "#666", + font: "normal normal normal 7.5pt Helvetica,Arial,sans-serif", // label + fontColor: "#666" + }, + marker:{ // any markers on a series. + stroke: {width: 2}, + fill: "#333", + font: "normal normal normal 7pt Helvetica,Arial,sans-serif", // label + fontColor: "#666" + }, + colors: ["red", "green", "blue"] + }); + + pk.base.next = function(elementType, mixin, doPost){ + var theme = Theme.prototype.next.apply(this, arguments); + if(elementType == "line"){ + theme.marker.outline = {width: 2, color: "#fff"}; + theme.series.stroke.width = 3.5; + theme.marker.stroke.width = 2; + } else if (elementType == "candlestick"){ + theme.series.stroke.width = 1; + } else { + theme.series.stroke.color = "#fff"; + } + return theme; + }; + + return pk; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/blue.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/blue.js new file mode 100644 index 0000000..5159887 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/blue.js @@ -0,0 +1,7 @@ +define(["./base", "../../Theme"], function(pk, Theme){ + pk.blue = pk.base.clone(); + pk.blue.chart.fill = pk.blue.plotarea.fill = "#e7eef6"; + pk.blue.colors = Theme.defineColors({hue: 217, saturation: 60, low: 40, high: 88}); + + return pk.blue; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/cyan.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/cyan.js new file mode 100644 index 0000000..125278b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/cyan.js @@ -0,0 +1,7 @@ +define(["./base", "../../Theme"], function(pk, Theme){ + pk.cyan = pk.base.clone(); + pk.cyan.chart.fill = pk.cyan.plotarea.fill = "#e6f1f5"; + pk.cyan.colors = Theme.defineColors({hue: 194, saturation: 60, low: 40, high: 88}); + + return pk.cyan; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/green.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/green.js new file mode 100644 index 0000000..74191e3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/green.js @@ -0,0 +1,7 @@ +define(["./base", "../../Theme"], function(pk, Theme){ + pk.green = pk.base.clone(); + pk.green.chart.fill = pk.green.plotarea.fill = "#eff5e6"; + pk.green.colors = Theme.defineColors({hue: 82, saturation: 60, low: 40, high: 88}); + + return pk.green; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/orange.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/orange.js new file mode 100644 index 0000000..1dda179 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/orange.js @@ -0,0 +1,7 @@ +define(["./base", "../../Theme"], function(pk, Theme){ + pk.orange = pk.base.clone(); + pk.orange.chart.fill = pk.orange.plotarea.fill = "#f5eee6"; + pk.orange.colors = Theme.defineColors({hue: 31, saturation: 60, low: 40, high: 88}); + + return pk.orange; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/purple.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/purple.js new file mode 100644 index 0000000..2b6b641 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/purple.js @@ -0,0 +1,7 @@ +define(["./base", "../../Theme"], function(pk, Theme){ + pk.purple = pk.base.clone(); + pk.purple.chart.fill = pk.purple.plotarea.fill = "#eee6f5"; + pk.purple.colors = Theme.defineColors({hue: 271, saturation: 60, low: 40, high: 88}); + + return pk.purple; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/red.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/red.js new file mode 100644 index 0000000..468f745 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PlotKit/red.js @@ -0,0 +1,7 @@ +define(["./base", "../../Theme"], function(pk, Theme){ + pk.red = pk.base.clone(); + pk.red.chart.fill = pk.red.plotarea.fill = "#f5e6e6"; + pk.red.colors = Theme.defineColors({hue: 1, saturation: 60, low: 40, high: 88}); + + return pk.red; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PrimaryColors.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PrimaryColors.js new file mode 100644 index 0000000..44a2dab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PrimaryColors.js @@ -0,0 +1,11 @@ +define(["../Theme", "./gradientGenerator", "./common"], function(Theme, gradientGenerator, themes){ + + var colors = ["#f00", "#0f0", "#00f", "#ff0", "#0ff", "#f0f", "./common"], + defaultFill = {type: "linear", space: "plot", x1: 0, y1: 0, x2: 0, y2: 100}; + + themes.PrimaryColors = new Theme({ + seriesThemes: gradientGenerator.generateMiniTheme(colors, defaultFill, 90, 40, 25) + }); + + return themes.PrimaryColors; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/PurpleRain.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/PurpleRain.js new file mode 100644 index 0000000..2e43efb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/PurpleRain.js @@ -0,0 +1,16 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + // notes: colors generated by moving in 30 degree increments around the hue circle, + // at 90% saturation, using a B value of 75 (HSB model). + themes.PurpleRain=new Theme({ + colors: [ + "#4879bc", + "#ef446f", + "#3f58a7", + "#8254a2", + "#4956a6" + ] + }); + + return themes.PurpleRain; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/README b/js/dojo-release-1.7.2-src/dojox/charting/themes/README new file mode 100644 index 0000000..9a3725d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/README @@ -0,0 +1,5 @@ +Theme authors: + +GreySkies, Shrooms, PlotKit (all): Tom Trenka (ttrenka AT gmail.com) +ET (all): Alex Russell (alex AT dojotoolkit.org) +Ireland, SageToLime, Minty: Damon Dimmick (SitePen, Inc.) diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Renkoo.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Renkoo.js new file mode 100644 index 0000000..91395e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Renkoo.js @@ -0,0 +1,83 @@ +define(["../Theme", "dojox/gfx/gradutils", "./common"], function(Theme, gradutils, themes){ + + // created by Tom Trenka + + var g = Theme.generateGradient, + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 0, y2: 150}; + + themes.Renkoo = new Theme({ + chart: { + fill: "#123666", + pageStyle: {backgroundColor: "#123666", backgroundImage: "none", color: "#95afdb"} + }, + plotarea: { + fill: "#123666" + }, + axis:{ + stroke: { // the axis itself + color: "#95afdb", + width: 1 + }, + tick: { // used as a foundation for all ticks + color: "#95afdb", + position: "center", + font: "normal normal normal 7pt Lucida Grande, Helvetica, Arial, sans-serif", // labels on axis + fontColor: "#95afdb" // color of labels + } + }, + series: { + stroke: {width: 2.5, color: "#123666"}, + outline: null, + font: "normal normal normal 8pt Lucida Grande, Helvetica, Arial, sans-serif", // labels on axis + fontColor: "#95afdb" + }, + marker: { + stroke: {width: 2.5, color: "#ccc"}, + outline: null, + font: "normal normal normal 8pt Lucida Grande, Helvetica, Arial, sans-serif", // labels on axis + fontColor: "#95afdb" + }, + seriesThemes: [ + {fill: g(defaultFill, "#e7e391", "#f8f7de")}, + {fill: g(defaultFill, "#ffb6b6", "#ffe8e8")}, + {fill: g(defaultFill, "#bcda7d", "#eef7da")}, + {fill: g(defaultFill, "#d5d5d5", "#f4f4f4")}, + {fill: g(defaultFill, "#c1e3fd", "#e4f3ff")} + ], + markerThemes: [ + {fill: "#fcfcf3", stroke: {color: "#e7e391"}}, + {fill: "#fff1f1", stroke: {color: "#ffb6b6"}}, + {fill: "#fafdf4", stroke: {color: "#bcda7d"}}, + {fill: "#fbfbfb", stroke: {color: "#d5d5d5"}}, + {fill: "#f3faff", stroke: {color: "#c1e3fd"}} + ] + }); + + themes.Renkoo.next = function(elementType, mixin, doPost){ + if("slice,column,bar".indexOf(elementType) == -1){ + // custom processing to substitute colors + var s = this.seriesThemes[this._current % this.seriesThemes.length]; + s.fill.space = "plot"; + s.stroke = { width: 2, color: s.fill.colors[0].color}; + if(elementType == "line" || elementType == "area"){ + s.stroke.width = 4; + } + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + delete s.stroke; + s.fill.space = "shape"; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + themes.Renkoo.post = function(theme, elementType){ + theme = Theme.prototype.post.apply(this, arguments); + if((elementType == "slice" || elementType == "circle") && theme.series.fill && theme.series.fill.type == "radial"){ + theme.series.fill = gradutils.reverse(theme.series.fill); + } + return theme; + }; + + return themes.Renkoo; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/RoyalPurples.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/RoyalPurples.js new file mode 100644 index 0000000..c424a32 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/RoyalPurples.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.RoyalPurples=new Theme({ + colors: [ + "#473980", + "#685aa7", + "#7970b3", + "#231c3f", + "#7267ae" + ] + }); + + return themes.RoyalPurples; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/SageToLime.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/SageToLime.js new file mode 100644 index 0000000..e18020f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/SageToLime.js @@ -0,0 +1,19 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.SageToLime=new Theme({ + colors: [ + "#abdbcb", + "#435a51", + "#70998b", + "#5f8074", + "#80ccbb", + "#539e8b", + "#78a596", + "#335f54", + "#8dd1c2", + "#68c5ad" + ] + }); + + return themes.SageToLime; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Shrooms.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Shrooms.js new file mode 100644 index 0000000..bd43a8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Shrooms.js @@ -0,0 +1,22 @@ +define(["../Theme", "./common"], function(Theme, themes){ + // notes: colors generated by moving in 30 degree increments around the hue circle, + // at 90% saturation, using a B value of 75 (HSB model). + themes.Shrooms = new Theme({ + colors: [ + "#bf1313", // 0 + "#69bf13", // 90 + "#13bfbf", // 180 + "#6913bf", // 270 + "#bf6913", // 30 + "#13bf13", // 120 + "#1369bf", // 210 + "#bf13bf", // 300 + "#bfbf13", // 60 + "#13bf69", // 150 + "#1313bf", // 240 + "#bf1369" // 330 + ] + }); + + return themes.Shrooms; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/ThreeD.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/ThreeD.js new file mode 100644 index 0000000..a58a830 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/ThreeD.js @@ -0,0 +1,43 @@ +define(["dojox","dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array", "../Theme", "./gradientGenerator", "./PrimaryColors", "dojo/colors" /* for sanitize */, "./common"], + function(dojox, kernel, lang, ArrayUtil, Theme, gradientGenerator, PrimaryColors, themes){ + + var colors = ["#f00", "#0f0", "#00f", "#ff0", "#0ff", "#f0f", "./common"], // the same is in PrimaryColors + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 100, y2: 0}, + // 3D cylinder map is calculated using dojox.gfx3d + cyl3dMap = [ + {o: 0.00, i: 174}, {o: 0.08, i: 231}, {o: 0.18, i: 237}, {o: 0.30, i: 231}, + {o: 0.39, i: 221}, {o: 0.49, i: 206}, {o: 0.58, i: 187}, {o: 0.68, i: 165}, + {o: 0.80, i: 128}, {o: 0.90, i: 102}, {o: 1.00, i: 174} + ], + hiliteIndex = 2, hiliteIntensity = 100, lumStroke = 50, + cyl3dFills = ArrayUtil.map(colors, function(c){ + var fill = lang.delegate(defaultFill), + colors = fill.colors = gradientGenerator.generateGradientByIntensity(c, cyl3dMap), + hilite = colors[hiliteIndex].color; + // add highlight + hilite.r += hiliteIntensity; + hilite.g += hiliteIntensity; + hilite.b += hiliteIntensity; + hilite.sanitize(); + return fill; + }); + + themes.ThreeD = PrimaryColors.clone(); + themes.ThreeD.series.shadow = {dx: 1, dy: 1, width: 3, color: [0, 0, 0, 0.15]}; + + themes.ThreeD.next = function(elementType, mixin, doPost){ + if(elementType == "bar" || elementType == "column"){ + // custom processing for bars and columns: substitute fills + var index = this._current % this.seriesThemes.length, + s = this.seriesThemes[index], old = s.fill; + s.fill = cyl3dFills[index]; + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + s.fill = old; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + return themes.ThreeD; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Tom.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Tom.js new file mode 100644 index 0000000..1691867 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Tom.js @@ -0,0 +1,85 @@ +define(["../Theme", "dojox/gfx/gradutils", "./common"], function(Theme, gradutils, themes){ + + // created by Tom Trenka + + var g = Theme.generateGradient, + defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 0, y2: 100}; + + themes.Tom = new Theme({ + chart: { + fill: "#181818", + stroke: {color: "#181818"}, + pageStyle: {backgroundColor: "#181818", backgroundImage: "none", color: "#eaf2cb"} + }, + plotarea: { + fill: "#181818" + }, + axis:{ + stroke: { // the axis itself + color: "#a0a68b", + width: 1 + }, + tick: { // used as a foundation for all ticks + color: "#888c76", + position: "center", + font: "normal normal normal 7pt Helvetica, Arial, sans-serif", // labels on axis + fontColor: "#888c76" // color of labels + } + }, + series: { + stroke: {width: 2.5, color: "#eaf2cb"}, + outline: null, + font: "normal normal normal 8pt Helvetica, Arial, sans-serif", + fontColor: "#eaf2cb" + }, + marker: { + stroke: {width: 1.25, color: "#eaf2cb"}, + outline: {width: 1.25, color: "#eaf2cb"}, + font: "normal normal normal 8pt Helvetica, Arial, sans-serif", + fontColor: "#eaf2cb" + }, + seriesThemes: [ + {fill: g(defaultFill, "#bf9e0a", "#ecc20c")}, + {fill: g(defaultFill, "#73b086", "#95e5af")}, + {fill: g(defaultFill, "#c7212d", "#ed2835")}, + {fill: g(defaultFill, "#87ab41", "#b6e557")}, + {fill: g(defaultFill, "#b86c25", "#d37d2a")} + ], + markerThemes: [ + {fill: "#bf9e0a", stroke: {color: "#ecc20c"}}, + {fill: "#73b086", stroke: {color: "#95e5af"}}, + {fill: "#c7212d", stroke: {color: "#ed2835"}}, + {fill: "#87ab41", stroke: {color: "#b6e557"}}, + {fill: "#b86c25", stroke: {color: "#d37d2a"}} + ] + }); + + themes.Tom.next = function(elementType, mixin, doPost){ + var isLine = elementType == "line"; + if(isLine || elementType == "area"){ + // custom processing for lines: substitute colors + var s = this.seriesThemes[this._current % this.seriesThemes.length]; + s.fill.space = "plot"; + if(isLine){ + s.stroke = { width: 4, color: s.fill.colors[0].color}; + } + var theme = Theme.prototype.next.apply(this, arguments); + // cleanup + delete s.outline; + delete s.stroke; + s.fill.space = "shape"; + return theme; + } + return Theme.prototype.next.apply(this, arguments); + }; + + themes.Tom.post = function(theme, elementType){ + theme = Theme.prototype.post.apply(this, arguments); + if((elementType == "slice" || elementType == "circle") && theme.series.fill && theme.series.fill.type == "radial"){ + theme.series.fill = gradutils.reverse(theme.series.fill); + } + return theme; + }; + + return themes.Tom; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Tufte.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Tufte.js new file mode 100644 index 0000000..0792185 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Tufte.js @@ -0,0 +1,54 @@ +define(["../Theme", "dojo/_base/Color", "./common"], function(Theme, Color, themes){ + /* + A charting theme based on the principles championed by + Edward Tufte. By Alex Russell, Dojo Project Lead. + */ + themes.Tufte = new Theme({ + chart: { + stroke: null, + fill: "inherit" + }, + plotarea: { + // stroke: { width: 0.2, color: "#666666" }, + stroke: null, + fill: "transparent" + }, + axis: { + stroke: {width: 1, color: "#ccc"}, + majorTick:{ + color: "black", + width: 1, + length: 5 + }, + minorTick: { + color: "#666", + width: 1, + length: 2 + }, + font: "normal normal normal 8pt Tahoma", + fontColor: "#999" + }, + series: { + outline: null, + stroke: {width: 1, color: "black"}, + // fill: "#3b444b", + fill: new Color([0x3b, 0x44, 0x4b, 0.85]), + font: "normal normal normal 7pt Tahoma", + fontColor: "#717171" + }, + marker: { + stroke: {width: 1, color: "black"}, + fill: "#333", + font: "normal normal normal 7pt Tahoma", + fontColor: "black" + }, + colors:[ + Color.fromHex("#8a8c8f"), + Color.fromHex("#4b4b4b"), + Color.fromHex("#3b444b"), + Color.fromHex("#2e2d30"), + Color.fromHex("#000000") + ] + }); + return themes.Tufte; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/WatersEdge.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/WatersEdge.js new file mode 100644 index 0000000..08b1fb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/WatersEdge.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.WatersEdge = new Theme({ + colors: [ + "#437cc0", + "#6256a5", + "#4552a3", + "#43c4f2", + "#4b66b0" + ] + }); + + return themes.WatersEdge; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/Wetland.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/Wetland.js new file mode 100644 index 0000000..ec1a43e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/Wetland.js @@ -0,0 +1,14 @@ +define(["../Theme", "./common"], function(Theme, themes){ + + themes.Wetland = new Theme({ + colors: [ + "#bfbc64", + "#737130", + "#73373b", + "#7dafca", + "#8d3c42" + ] + }); + + return themes.Wetland; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/common.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/common.js new file mode 100644 index 0000000..c6c9e54 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/common.js @@ -0,0 +1,3 @@ +define(["dojo/_base/lang"], function(lang){ + return lang.getObject("dojox.charting.themes", true); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/themes/gradientGenerator.js b/js/dojo-release-1.7.2-src/dojox/charting/themes/gradientGenerator.js new file mode 100644 index 0000000..d4994f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/themes/gradientGenerator.js @@ -0,0 +1,81 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/Color", "../Theme", "dojox/color/_base", "./common"], + function(lang, arr, Color, Theme, dxcolor, themes){ + + var gg = lang.getObject("gradientGenerator", true, themes); + + gg.generateFills = function(colors, fillPattern, lumFrom, lumTo){ + // summary: + // generates 2-color gradients using pure colors, a fill pattern, and two luminance values + // colors: Array: + // Array of colors to generate gradients for each. + // fillPattern: Object: + // Gradient fill descriptor which colors list will be generated. + // lumFrom: Number: + // Initial luminance value (0-100). + // lumTo: Number: + // Final luminance value (0-100). + return arr.map(colors, function(c){ // Array + return Theme.generateHslGradient(c, fillPattern, lumFrom, lumTo); + }); + }; + + gg.updateFills = function(themes, fillPattern, lumFrom, lumTo){ + // summary: + // transforms solid color fills into 2-color gradients using a fill pattern, and two luminance values + // themes: Array: + // Array of mini-themes (usually series themes or marker themes), which fill will be transformed. + // fillPattern: Object: + // Gradient fill descriptor which colors list will be generated. + // lumFrom: Number: + // Initial luminance value (0-100). + // lumTo: Number: + // Final luminance value (0-100). + arr.forEach(themes, function(t){ + if(t.fill && !t.fill.type){ + t.fill = Theme.generateHslGradient(t.fill, fillPattern, lumFrom, lumTo); + } + }); + }; + + gg.generateMiniTheme = function(colors, fillPattern, lumFrom, lumTo, lumStroke){ + // summary: + // generates mini-themes with 2-color gradients using colors, a fill pattern, and three luminance values + // colors: Array: + // Array of colors to generate gradients for each. + // fillPattern: Object: + // Gradient fill descriptor which colors list will be generated. + // lumFrom: Number: + // Initial luminance value (0-100). + // lumTo: Number: + // Final luminance value (0-100). + // lumStroke: Number: + // Stroke luminance value (0-100). + return arr.map(colors, function(c){ // Array + c = new dxcolor.Color(c); + return { + fill: Theme.generateHslGradient(c, fillPattern, lumFrom, lumTo), + stroke: {color: Theme.generateHslColor(c, lumStroke)} + } + }); + }; + + gg.generateGradientByIntensity = function(color, intensityMap){ + // summary: + // generates gradient colors using an intensity map + // color: dojo.Color: + // Color to use to generate gradients. + // intensityMap: Array: + // Array of tuples {o, i}, where o is a gradient offset (0-1), + // and i is an intensity (0-255). + color = new Color(color); + return arr.map(intensityMap, function(stop){ // Array + var s = stop.i / 255; + return { + offset: stop.o, + color: new Color([color.r * s, color.g * s, color.b * s, color.a]) + }; + }); + } + + return gg; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/widget/BidiSupport.js b/js/dojo-release-1.7.2-src/dojox/charting/widget/BidiSupport.js new file mode 100644 index 0000000..015c794 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/widget/BidiSupport.js @@ -0,0 +1,92 @@ +define(["dojo/dom", "dojo/_base/lang", "dojo/_base/html", "dojo/_base/array", "dojo/_base/connect", "dojo/query", + "dijit/_BidiSupport", "../BidiSupport", "dijit/registry", "./Chart", "./Legend"], + function(dom, lang, html, arrayUtil, hub, query, dBidi, cBidi, widgetManager, Chart, Legend){ + + // patch only if present + if( Legend ){ + lang.extend(Legend, { + // summary: + // Add support for bidi scripts in legend. + // description: + // Since dojox.charting.widget.Legend inherits from _Widget use the bidi support + // that introduced there. + + postMixInProperties: function(){ + // summary: + // Connect the setter of textDir legend to setTextDir of the chart, + // so _setTextDirAttr of the legend will be called after setTextDir of the chart is called. + // tags: + // private + + // find the chart that is the owner of this legend, use it's + // textDir + if(!this.chart){ + if(!this.chartRef){ return; } + var chart = widgetManager.byId(this.chartRef); + if(!chart){ + var node = dom.byId(this.chartRef); + if(node){ + chart = widgetManager.byNode(node); + }else{ + return; + } + } + this.textDir = chart.chart.textDir; + hub.connect(chart.chart, "setTextDir", this, "_setTextDirAttr"); + + }else{ + this.textDir = this.chart.textDir; + hub.connect(this.chart, "setTextDir", this, "_setTextDirAttr"); + + } + }, + + _setTextDirAttr: function(/*String*/ textDir){ + // summary: + // Setter for textDir. + // description: + // Users shouldn't call this function; they should be calling + // set('textDir', value) + // tags: + // private + + // only if new textDir is different from the old one + if(validateTextDir(textDir) != null){ + if(this.textDir != textDir){ + this._set("textDir", textDir); + // get array of all the labels + var legendLabels = query(".dojoxLegendText", this._tr); + // for every label calculate it's new dir. + arrayUtil.forEach(legendLabels, function(label){ + label.dir = this.getTextDir(label.innerHTML, label.dir); + }, this); + } + } + } + }); + } + + // patch only if present + if( Chart ){ + lang.extend( Chart ,{ + postMixInProperties: function(){ + // set initial textDir of the chart, if passed in the creation use that value + // else use default value, following the GUI direction, this.chart doesn't exist yet + // so can't use set("textDir", textDir). This passed to this.chart in it's future creation. + this.textDir = this.params["textDir"] ? this.params["textDir"] : this.params["dir"]; + }, + + _setTextDirAttr: function(/*String*/ textDir){ + if(validateTextDir(textDir) != null){ + this._set("textDir", textDir); + this.chart.setTextDir(textDir); + } + } + }); + } + + function validateTextDir(textDir){ + return /^(ltr|rtl|auto)$/.test(textDir) ? textDir : null; + } + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/widget/Chart.js b/js/dojo-release-1.7.2-src/dojox/charting/widget/Chart.js new file mode 100644 index 0000000..7492a4a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/widget/Chart.js @@ -0,0 +1,271 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array","dojo/_base/html","dojo/_base/declare", "dojo/query", + "dijit/_Widget", "../Chart", "dojox/lang/utils", "dojox/lang/functional","dojox/lang/functional/lambda", + "dijit/_base/manager"], + function(kernel, lang, arr, html, declare, query, Widget, Chart, du, df, dfl){ +/*===== +var Widget = dijit._Widget; +=====*/ + var collectParams, collectAxisParams, collectPlotParams, + collectActionParams, collectDataParams, + notNull = function(o){ return o; }, + dc = lang.getObject("dojox.charting"); + + var ChartWidget = declare("dojox.charting.widget.Chart", Widget, { + // parameters for the markup + + // theme for the chart + theme: null, + + // margins for the chart: {l: 10, r: 10, t: 10, b: 10} + margins: null, + + // chart area, define them as undefined to: + // allow the parser to take them into account + // but make sure they have no defined value to not override theme + stroke: undefined, + fill: undefined, + + // methods + + buildRendering: function(){ + this.inherited(arguments); + + n = this.domNode; + + // collect chart parameters + var axes = query("> .axis", n).map(collectAxisParams).filter(notNull), + plots = query("> .plot", n).map(collectPlotParams).filter(notNull), + actions = query("> .action", n).map(collectActionParams).filter(notNull), + series = query("> .series", n).map(collectDataParams).filter(notNull); + + // build the chart + n.innerHTML = ""; + var c = this.chart = new Chart(n, { + margins: this.margins, + stroke: this.stroke, + fill: this.fill, + textDir: this.textDir + }); + + // add collected parameters + if(this.theme){ + c.setTheme(this.theme); + } + axes.forEach(function(axis){ + c.addAxis(axis.name, axis.kwArgs); + }); + plots.forEach(function(plot){ + c.addPlot(plot.name, plot.kwArgs); + }); + + this.actions = actions.map(function(action){ + return new action.action(c, action.plot, action.kwArgs); + }); + + var render = df.foldl(series, function(render, series){ + if(series.type == "data"){ + c.addSeries(series.name, series.data, series.kwArgs); + render = true; + }else{ + c.addSeries(series.name, [0], series.kwArgs); + var kw = {}; + du.updateWithPattern( + kw, + series.kwArgs, + { + "query": "", + "queryOptions": null, + "start": 0, + "count": 1 //, + // "sort": [] + }, + true + ); + if(series.kwArgs.sort){ + // sort is a complex object type and doesn't survive coercian + kw.sort = lang.clone(series.kwArgs.sort); + } + lang.mixin(kw, { + onComplete: function(data){ + var values; + if("valueFn" in series.kwArgs){ + var fn = series.kwArgs.valueFn; + values = arr.map(data, function(x){ + return fn(series.data.getValue(x, series.field, 0)); + }); + }else{ + values = arr.map(data, function(x){ + return series.data.getValue(x, series.field, 0); + }); + } + c.addSeries(series.name, values, series.kwArgs).render(); + } + }); + series.data.fetch(kw); + } + return render; + }, false); + if(render){ c.render(); } + }, + destroy: function(){ + // summary: properly destroy the widget + this.chart.destroy(); + this.inherited(arguments); + }, + resize: function(box){ + // summary: + // Resize the widget. + // description: + // Resize the domNode and the widget surface to the dimensions of a box of the following form: + // `{ l: 50, t: 200, w: 300: h: 150 }` + // If no box is provided, resize the surface to the marginBox of the domNode. + // box: + // If passed, denotes the new size of the widget. + this.chart.resize(box); + } + }); + + collectParams = function(node, type, kw){ + var dp = eval("(" + type + ".prototype.defaultParams)"); + var x, attr; + for(x in dp){ + if(x in kw){ continue; } + attr = node.getAttribute(x); + kw[x] = du.coerceType(dp[x], attr == null || typeof attr == "undefined" ? dp[x] : attr); + } + var op = eval("(" + type + ".prototype.optionalParams)"); + for(x in op){ + if(x in kw){ continue; } + attr = node.getAttribute(x); + if(attr != null){ + kw[x] = du.coerceType(op[x], attr); + } + } + }; + + collectAxisParams = function(node){ + var name = node.getAttribute("name"), type = node.getAttribute("type"); + if(!name){ return null; } + var o = {name: name, kwArgs: {}}, kw = o.kwArgs; + if(type){ + if(dc.axis2d[type]){ + type = dojo._scopeName + "x.charting.axis2d." + type; + } + var axis = eval("(" + type + ")"); + if(axis){ kw.type = axis; } + }else{ + type = dojo._scopeName + "x.charting.axis2d.Default"; + } + collectParams(node, type, kw); + // compatibility conversions + if(kw.font || kw.fontColor){ + if(!kw.tick){ + kw.tick = {}; + } + if(kw.font){ + kw.tick.font = kw.font; + } + if(kw.fontColor){ + kw.tick.fontColor = kw.fontColor; + } + } + return o; + }; + + collectPlotParams = function(node){ + // var name = d.attr(node, "name"), type = d.attr(node, "type"); + var name = node.getAttribute("name"), type = node.getAttribute("type"); + if(!name){ return null; } + var o = {name: name, kwArgs: {}}, kw = o.kwArgs; + if(type){ + if(dc.plot2d && dc.plot2d[type]){ + type = dojo._scopeName + "x.charting.plot2d." + type; + } + var plot = eval("(" + type + ")"); + if(plot){ kw.type = plot; } + }else{ + type = dojo._scopeName + "x.charting.plot2d.Default"; + } + collectParams(node, type, kw); + return o; + }; + + collectActionParams = function(node){ + // var plot = d.attr(node, "plot"), type = d.attr(node, "type"); + var plot = node.getAttribute("plot"), type = node.getAttribute("type"); + if(!plot){ plot = "default"; } + var o = {plot: plot, kwArgs: {}}, kw = o.kwArgs; + if(type){ + if(dc.action2d[type]){ + type = dojo._scopeName + "x.charting.action2d." + type; + } + var action = eval("(" + type + ")"); + if(!action){ return null; } + o.action = action; + }else{ + return null; + } + collectParams(node, type, kw); + return o; + }; + + collectDataParams = function(node){ + var ga = lang.partial(html.attr, node); + var name = ga("name"); + if(!name){ return null; } + var o = { name: name, kwArgs: {} }, kw = o.kwArgs, t; + t = ga("plot"); + if(t != null){ kw.plot = t; } + t = ga("marker"); + if(t != null){ kw.marker = t; } + t = ga("stroke"); + if(t != null){ kw.stroke = eval("(" + t + ")"); } + t = ga("outline"); + if(t != null){ kw.outline = eval("(" + t + ")"); } + t = ga("shadow"); + if(t != null){ kw.shadow = eval("(" + t + ")"); } + t = ga("fill"); + if(t != null){ kw.fill = eval("(" + t + ")"); } + t = ga("font"); + if(t != null){ kw.font = t; } + t = ga("fontColor"); + if(t != null){ kw.fontColor = eval("(" + t + ")"); } + t = ga("legend"); + if(t != null){ kw.legend = t; } + t = ga("data"); + if(t != null){ + o.type = "data"; + o.data = t ? arr.map(String(t).split(','), Number) : []; + return o; + } + t = ga("array"); + if(t != null){ + o.type = "data"; + o.data = eval("(" + t + ")"); + return o; + } + t = ga("store"); + if(t != null){ + o.type = "store"; + o.data = eval("(" + t + ")"); + t = ga("field"); + o.field = t != null ? t : "value"; + t = ga("query"); + if(!!t){ kw.query = t; } + t = ga("queryOptions"); + if(!!t){ kw.queryOptions = eval("(" + t + ")"); } + t = ga("start"); + if(!!t){ kw.start = Number(t); } + t = ga("count"); + if(!!t){ kw.count = Number(t); } + t = ga("sort"); + if(!!t){ kw.sort = eval("("+t+")"); } + t = ga("valueFn"); + if(!!t){ kw.valueFn = dfl.lambda(t); } + return o; + } + return null; + }; + + return ChartWidget; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/widget/Chart2D.js b/js/dojo-release-1.7.2-src/dojox/charting/widget/Chart2D.js new file mode 100644 index 0000000..2e37762 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/widget/Chart2D.js @@ -0,0 +1,6 @@ +define(["dojo/_base/kernel", "./Chart", "../Chart2D", + "../action2d/Highlight", "../action2d/Magnify", + "../action2d/MoveSlice", "../action2d/Shake", "../action2d/Tooltip"], function(dojo, Chart) { + dojo.deprecated("dojox.charting.widget.Chart2D", "Use dojo.charting.widget.Chart instead and require all other components explicitly", "2.0"); + return dojox.charting.widget.Chart2D = Chart; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/widget/Legend.js b/js/dojo-release-1.7.2-src/dojox/charting/widget/Legend.js new file mode 100644 index 0000000..f358749 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/widget/Legend.js @@ -0,0 +1,181 @@ +define(["dojo/_base/lang", "dojo/_base/html", "dojo/_base/declare", "dijit/_Widget", "dojox/gfx","dojo/_base/array", + "dojox/lang/functional", "dojox/lang/functional/array", "dojox/lang/functional/fold", + "dojo/dom", "dojo/dom-construct", "dojo/dom-class","dijit/_base/manager"], + function(lang, html, declare, Widget, gfx, arrayUtil, df, dfa, dff, + dom, domFactory, domClass, widgetManager){ +/*===== +var Widget = dijit._Widget; +=====*/ + + var REVERSED_SERIES = /\.(StackedColumns|StackedAreas|ClusteredBars)$/; + + return declare("dojox.charting.widget.Legend", Widget, { + // summary: A legend for a chart. A legend contains summary labels for + // each series of data contained in the chart. + // + // Set the horizontal attribute to boolean false to layout legend labels vertically. + // Set the horizontal attribute to a number to layout legend labels in horizontal + // rows each containing that number of labels (except possibly the last row). + // + // (Line or Scatter charts (colored lines with shape symbols) ) + // -o- Series1 -X- Series2 -v- Series3 + // + // (Area/Bar/Pie charts (letters represent colors)) + // [a] Series1 [b] Series2 [c] Series3 + + chartRef: "", + horizontal: true, + swatchSize: 18, + + legendBody: null, + + postCreate: function(){ + if(!this.chart){ + if(!this.chartRef){ return; } + this.chart = widgetManager.byId(this.chartRef); + if(!this.chart){ + var node = dom.byId(this.chartRef); + if(node){ + this.chart = widgetManager.byNode(node); + }else{ + console.log("Could not find chart instance with id: " + this.chartRef); + return; + } + } + this.series = this.chart.chart.series; + }else{ + this.series = this.chart.series; + } + + this.refresh(); + }, + buildRendering: function(){ + this.domNode = domFactory.create("table", + {role: "group", "aria-label": "chart legend", "class": "dojoxLegendNode"}); + this.legendBody = domFactory.create("tbody", null, this.domNode); + this.inherited(arguments); + }, + refresh: function(){ + // summary: regenerates the legend to reflect changes to the chart + + // cleanup + if(this._surfaces){ + arrayUtil.forEach(this._surfaces, function(surface){ + surface.destroy(); + }); + } + this._surfaces = []; + while(this.legendBody.lastChild){ + domFactory.destroy(this.legendBody.lastChild); + } + + if(this.horizontal){ + domClass.add(this.domNode, "dojoxLegendHorizontal"); + // make a container + this._tr = domFactory.create("tr", null, this.legendBody); + this._inrow = 0; + } + + var s = this.series; + if(s.length == 0){ + return; + } + if(s[0].chart.stack[0].declaredClass == "dojox.charting.plot2d.Pie"){ + var t = s[0].chart.stack[0]; + if(typeof t.run.data[0] == "number"){ + var filteredRun = df.map(t.run.data, "Math.max(x, 0)"); + if(df.every(filteredRun, "<= 0")){ + return; + } + var slices = df.map(filteredRun, "/this", df.foldl(filteredRun, "+", 0)); + arrayUtil.forEach(slices, function(x, i){ + this._addLabel(t.dyn[i], t._getLabel(x * 100) + "%"); + }, this); + }else{ + arrayUtil.forEach(t.run.data, function(x, i){ + this._addLabel(t.dyn[i], x.legend || x.text || x.y); + }, this); + } + }else{ + if(this._isReversal()){ + s = s.slice(0).reverse(); + } + arrayUtil.forEach(s, function(x){ + this._addLabel(x.dyn, x.legend || x.name); + }, this); + } + }, + _addLabel: function(dyn, label){ + // create necessary elements + var wrapper = domFactory.create("td"), + icon = domFactory.create("div", null, wrapper), + text = domFactory.create("label", null, wrapper), + div = domFactory.create("div", { + style: { + "width": this.swatchSize + "px", + "height":this.swatchSize + "px", + "float": "left" + } + }, icon); + domClass.add(icon, "dojoxLegendIcon dijitInline"); + domClass.add(text, "dojoxLegendText"); + // create a skeleton + if(this._tr){ + // horizontal + this._tr.appendChild(wrapper); + if(++this._inrow === this.horizontal){ + // make a fresh container + this._tr = domFactory.create("tr", null, this.legendBody); + this._inrow = 0; + } + }else{ + // vertical + var tr = domFactory.create("tr", null, this.legendBody); + tr.appendChild(wrapper); + } + + // populate the skeleton + this._makeIcon(div, dyn); + text.innerHTML = String(label); + text.dir = this.getTextDir(label, text.dir); + }, + _makeIcon: function(div, dyn){ + var mb = { h: this.swatchSize, w: this.swatchSize }; + var surface = gfx.createSurface(div, mb.w, mb.h); + this._surfaces.push(surface); + if(dyn.fill){ + // regions + surface.createRect({x: 2, y: 2, width: mb.w - 4, height: mb.h - 4}). + setFill(dyn.fill).setStroke(dyn.stroke); + }else if(dyn.stroke || dyn.marker){ + // draw line + var line = {x1: 0, y1: mb.h / 2, x2: mb.w, y2: mb.h / 2}; + if(dyn.stroke){ + surface.createLine(line).setStroke(dyn.stroke); + } + if(dyn.marker){ + // draw marker on top + var c = {x: mb.w / 2, y: mb.h / 2}; + if(dyn.stroke){ + surface.createPath({path: "M" + c.x + " " + c.y + " " + dyn.marker}). + setFill(dyn.stroke.color).setStroke(dyn.stroke); + }else{ + surface.createPath({path: "M" + c.x + " " + c.y + " " + dyn.marker}). + setFill(dyn.color).setStroke(dyn.color); + } + } + }else{ + // nothing + surface.createRect({x: 2, y: 2, width: mb.w - 4, height: mb.h - 4}). + setStroke("black"); + surface.createLine({x1: 2, y1: 2, x2: mb.w - 2, y2: mb.h - 2}).setStroke("black"); + surface.createLine({x1: 2, y1: mb.h - 2, x2: mb.w - 2, y2: 2}).setStroke("black"); + } + }, + _isReversal: function(){ + return (!this.horizontal) && arrayUtil.some(this.chart.stack, function(item){ + return REVERSED_SERIES.test(item.declaredClass); + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/widget/SelectableLegend.js b/js/dojo-release-1.7.2-src/dojox/charting/widget/SelectableLegend.js new file mode 100644 index 0000000..490e189 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/widget/SelectableLegend.js @@ -0,0 +1,244 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "dojo/query", "dojo/_base/html", + "dojo/_base/connect", "dojo/_base/Color", "./Legend", "dijit/form/CheckBox", "../action2d/Highlight", + "dojox/lang/functional", "dojox/gfx/fx", "dojo/keys", "dojo/_base/event", "dojo/dom-construct", + "dojo/dom-prop"], + function(lang, arrayUtil, declare, query, html, hub, Color, Legend, CheckBox, + Highlight, df, fx, keys, event, dom, domProp){ +/*===== +var Legend = dojox.charting.widget.Legend; +=====*/ + var FocusManager = declare(null, { + // summary: + // It will take legend as a tab stop, and using + // cursor keys to navigate labels within the legend. + constructor: function(legend){ + this.legend = legend; + this.index = 0; + this.horizontalLength = this._getHrizontalLength(); + arrayUtil.forEach(legend.legends, function(item, i){ + if(i > 0){ + query("input", item).attr("tabindex", -1); + } + }); + this.firstLabel = query("input", legend.legends[0])[0]; + hub.connect(this.firstLabel, "focus", this, function(){this.legend.active = true;}); + hub.connect(this.legend.domNode, "keydown", this, "_onKeyEvent"); + }, + _getHrizontalLength: function(){ + var horizontal = this.legend.horizontal; + if(typeof horizontal == "number"){ + return Math.min(horizontal, this.legend.legends.length); + }else if(!horizontal){ + return 1; + }else{ + return this.legend.legends.length; + } + }, + _onKeyEvent: function(e){ + // if not focused + if(!this.legend.active){ + return; + } + // lose focus + if(e.keyCode == keys.TAB){ + this.legend.active = false; + return; + } + // handle with arrow keys + var max = this.legend.legends.length; + switch(e.keyCode){ + case keys.LEFT_ARROW: + this.index--; + if(this.index < 0){ + this.index += max; + } + break; + case keys.RIGHT_ARROW: + this.index++; + if(this.index >= max){ + this.index -= max; + } + break; + case keys.UP_ARROW: + if(this.index - this.horizontalLength >= 0){ + this.index -= this.horizontalLength; + } + break; + case keys.DOWN_ARROW: + if(this.index + this.horizontalLength < max){ + this.index += this.horizontalLength; + } + break; + default: + return; + } + this._moveToFocus(); + Event.stop(e); + }, + _moveToFocus: function(){ + query("input", this.legend.legends[this.index])[0].focus(); + } + }); + + declare("dojox.charting.widget.SelectableLegend", Legend, { + // summary: + // An enhanced chart legend supporting interactive events on data series + + // theme component + outline: false, // outline of vanished data series + transitionFill: null, // fill of deselected data series + transitionStroke: null, // stroke of deselected data series + + postCreate: function(){ + this.legends = []; + this.legendAnim = {}; + this.inherited(arguments); + }, + refresh: function(){ + this.legends = []; + this.inherited(arguments); + this._applyEvents(); + new FocusManager(this); + }, + _addLabel: function(dyn, label){ + this.inherited(arguments); + // create checkbox + var legendNodes = query("td", this.legendBody); + var currentLegendNode = legendNodes[legendNodes.length - 1]; + this.legends.push(currentLegendNode); + var checkbox = new CheckBox({checked: true}); + dom.place(checkbox.domNode, currentLegendNode, "first"); + // connect checkbox and existed label + var label = query("label", currentLegendNode)[0]; + domProp.set(label, "for", checkbox.id); + }, + _applyEvents: function(){ + // summary: + // Apply click-event on checkbox and hover-event on legend icon, + // highlight data series or toggle it. + // if the chart has not yet been refreshed it will crash here (targetData.group == null) + if(this.chart.dirty){ + return; + } + arrayUtil.forEach(this.legends, function(legend, i){ + var targetData, shapes = [], plotName, seriesName; + if(this._isPie()){ + targetData = this.chart.stack[0]; + shapes.push(targetData.group.children[i]); + plotName = targetData.name; + seriesName = this.chart.series[0].name; + }else{ + targetData = this.chart.series[i]; + shapes = targetData.group.children; + plotName = targetData.plot; + seriesName = targetData.name; + } + var originalDyn = { + fills : df.map(shapes, "x.getFill()"), + strokes: df.map(shapes, "x.getStroke()") + }; + // toggle action + var legendCheckBox = query(".dijitCheckBox", legend)[0]; + hub.connect(legendCheckBox, "onclick", this, function(e){ + this._toggle(shapes, i, legend.vanished, originalDyn, seriesName, plotName); + legend.vanished = !legend.vanished; + e.stopPropagation(); + }); + + // highlight action + var legendIcon = query(".dojoxLegendIcon", legend)[0], + iconShape = this._getFilledShape(this._surfaces[i].children); + arrayUtil.forEach(["onmouseenter", "onmouseleave"], function(event){ + hub.connect(legendIcon, event, this, function(e){ + this._highlight(e, iconShape, shapes, i, legend.vanished, originalDyn, seriesName, plotName); + }); + }, this); + },this); + }, + _toggle: function(shapes, index, isOff, dyn, seriesName, plotName){ + arrayUtil.forEach(shapes, function(shape, i){ + var startFill = dyn.fills[i], + endFill = this._getTransitionFill(plotName), + startStroke = dyn.strokes[i], + endStroke = this.transitionStroke; + if(startFill){ + if(endFill && (typeof startFill == "string" || startFill instanceof Color)){ + fx.animateFill({ + shape: shape, + color: { + start: isOff ? endFill : startFill, + end: isOff ? startFill : endFill + } + }).play(); + }else{ + shape.setFill(isOff ? startFill : endFill); + } + } + if(startStroke && !this.outline){ + shape.setStroke(isOff ? startStroke : endStroke); + } + }, this); + }, + _highlight: function(e, iconShape, shapes, index, isOff, dyn, seriesName, plotName){ + if(!isOff){ + var anim = this._getAnim(plotName), + isPie = this._isPie(), + type = formatEventType(e.type); + // highlight the label icon, + var label = { + shape: iconShape, + index: isPie ? "legend" + index : "legend", + run: {name: seriesName}, + type: type + }; + anim.process(label); + // highlight the data items + arrayUtil.forEach(shapes, function(shape, i){ + shape.setFill(dyn.fills[i]); + var o = { + shape: shape, + index: isPie ? index : i, + run: {name: seriesName}, + type: type + }; + anim.duration = 100; + anim.process(o); + }); + } + }, + _getAnim: function(plotName){ + if(!this.legendAnim[plotName]){ + this.legendAnim[plotName] = new Highlight(this.chart, plotName); + } + return this.legendAnim[plotName]; + }, + _getTransitionFill: function(plotName){ + // Since series of stacked charts all start from the base line, + // fill the "front" series with plotarea color to make it disappear . + if(this.chart.stack[this.chart.plots[plotName]].declaredClass.indexOf("dojox.charting.plot2d.Stacked") != -1){ + return this.chart.theme.plotarea.fill; + } + return null; + }, + _getFilledShape: function(shapes){ + // summary: + // Get filled shape in legend icon which would be highlighted when hovered + var i = 0; + while(shapes[i]){ + if(shapes[i].getFill())return shapes[i]; + i++; + } + }, + _isPie: function(){ + return this.chart.stack[0].declaredClass == "dojox.charting.plot2d.Pie"; + } + }); + + function formatEventType(type){ + if(type == "mouseenter")return "onmouseover"; + if(type == "mouseleave")return "onmouseout"; + return "on" + type; + } + + return dojox.charting.widget.SelectableLegend; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/charting/widget/Sparkline.js b/js/dojo-release-1.7.2-src/dojox/charting/widget/Sparkline.js new file mode 100644 index 0000000..9466ccd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/charting/widget/Sparkline.js @@ -0,0 +1,58 @@ +define(["dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "dojo/_base/html", "dojo/query", + "./Chart", "../themes/GreySkies", "../plot2d/Lines", "dojo/dom-prop"], + function(lang, arrayUtil, declare, html, query, Chart, GreySkies, Lines, domProp){ +/*===== +var Chart = dojox.charting.widget.Chart; +=====*/ + + declare("dojox.charting.widget.Sparkline", Chart, { + theme: GreySkies, + margins: { l: 0, r: 0, t: 0, b: 0 }, + type: "Lines", + valueFn: "Number(x)", + store: "", + field: "", + query: "", + queryOptions: "", + start: "0", + count: "Infinity", + sort: "", + data: "", + name: "default", + buildRendering: function(){ + var n = this.srcNodeRef; + if( !n.childNodes.length || // shortcut the query + !query("> .axis, > .plot, > .action, > .series", n).length){ + var plot = document.createElement("div"); + domProp.set(plot, { + "class": "plot", + "name": "default", + "type": this.type + }); + n.appendChild(plot); + + var series = document.createElement("div"); + domProp.set(series, { + "class": "series", + plot: "default", + name: this.name, + start: this.start, + count: this.count, + valueFn: this.valueFn + }); + arrayUtil.forEach( + ["store", "field", "query", "queryOptions", "sort", "data"], + function(i){ + if(this[i].length){ + domProp.set(series, i, this[i]); + } + }, + this + ); + n.appendChild(series); + } + this.inherited(arguments); + } + } + ); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/collections.js b/js/dojo-release-1.7.2-src/dojox/collections.js new file mode 100644 index 0000000..c7f14c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections.js @@ -0,0 +1,3 @@ +define(["./collections/_base"], function(collections){ + return collections; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/ArrayList.js b/js/dojo-release-1.7.2-src/dojox/collections/ArrayList.js new file mode 100644 index 0000000..915fae7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/ArrayList.js @@ -0,0 +1,132 @@ +define(["dojo/_base/kernel", "dojo/_base/array", "./_base"], function(dojo, darray, dxc){ +/*===== +var dxc = dojox.collections; +=====*/ + dxc.ArrayList=function(/* array? */arr){ + // summary + // Returns a new object of type dojox.collections.ArrayList + var items=[]; + if(arr) items=items.concat(arr); + this.count=items.length; + this.add=function(/* object */obj){ + // summary + // Add an element to the collection. + items.push(obj); + this.count=items.length; + }; + this.addRange=function(/* array */a){ + // summary + // Add a range of objects to the ArrayList + if(a.getIterator){ + var e=a.getIterator(); + while(!e.atEnd()){ + this.add(e.get()); + } + this.count=items.length; + }else{ + for(var i=0; i=0) { + items.splice(i,1); + } + this.count=items.length; + }; + this.removeAt=function(/* int */ i){ + // summary + // return an array with function applied to all elements + items.splice(i,1); + this.count=items.length; + }; + this.reverse=function(){ + // summary + // Reverse the internal array + items.reverse(); + }; + this.sort=function(/* function? */ fn){ + // summary + // sort the internal array + if(fn){ + items.sort(fn); + }else{ + items.sort(); + } + }; + this.setByIndex=function(/* int */ i, /* object */ obj){ + // summary + // Set an element in the array by the passed index. + items[i]=obj; + this.count=items.length; + }; + this.toArray=function(){ + // summary + // Return a new array with all of the items of the internal array concatenated. + return [].concat(items); + } + this.toString=function(/* string */ delim){ + // summary + // implementation of toString, follows [].toString(); + return items.join((delim||",")); + }; + }; + return dxc.ArrayList; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/BinaryTree.js b/js/dojo-release-1.7.2-src/dojox/collections/BinaryTree.js new file mode 100644 index 0000000..08638d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/BinaryTree.js @@ -0,0 +1,210 @@ +define(["dojo/_base/kernel", "dojo/_base/array", "./_base"], function(dojo, darray, dxc){ +/*===== +var dxc = dojox.collections; +=====*/ + dxc.BinaryTree=function(data){ + function node(data, rnode, lnode){ + this.value=data||null; + this.right=rnode||null; + this.left=lnode||null; + this.clone=function(){ + var c=new node(); + if(this.value.value){ + c.value=this.value.clone(); + }else{ + c.value=this.value; + } + if(this.left!=null){ + c.left=this.left.clone(); + } + if(this.right!=null){ + c.right=this.right.clone(); + } + return c; + } + this.compare=function(n){ + if(this.value>n.value){ return 1; } + if(this.valued){ return 1; } + if(this.value0){ return searchHelper(current.left, data); } + else{ return searchHelper(current.right, data); } + } + + this.add=function(data){ + var n=new node(data); + var i; + var current=root; + var parent=null; + while(current){ + i=current.compare(n); + if(i==0){ return; } + parent=current; + if(i>0){ current=current.left; } + else{ current=current.right; } + } + this.count++; + if(!parent){ + root=n; + }else{ + i=parent.compare(n); + if(i>0){ + parent.left=n; + }else{ + parent.right=n; + } + } + }; + this.clear=function(){ + root=null; + this.count=0; + }; + this.clone=function(){ + var c=new dxc.BinaryTree(); + var itr=this.getIterator(); + while(!itr.atEnd()){ + c.add(itr.get()); + } + return c; + }; + this.contains=function(data){ + return this.search(data) != null; + }; + this.deleteData=function(data){ + var current=root; + var parent=null; + var i=current.compareData(data); + while(i!=0&¤t!=null){ + if(i>0){ + parent=current; + current=current.left; + }else if(i<0){ + parent=current; + current=current.right; + } + i=current.compareData(data); + } + if(!current){ return; } + this.count--; + if(!current.right){ + if(!parent){ + root=current.left; + }else{ + i=parent.compare(current); + if(i>0){ parent.left=current.left; } + else if(i<0){ parent.right=current.left; } + } + } + else if(!current.right.left){ + if(!parent){ + root=current.right; + }else{ + i=parent.compare(current); + if(i>0){ parent.left=current.right; } + else if(i<0){ parent.right=current.right; } + } + } + else{ + var leftmost=current.right.left; + var lmParent=current.right; + while(leftmost.left!=null){ + lmParent=leftmost; + leftmost=leftmost.left; + } + lmParent.left=leftmost.right; + leftmost.left=current.left; + leftmost.right=current.right; + if(!parent){ + root=leftmost; + }else{ + i=parent.compare(current); + if(i>0){ parent.left=leftmost; } + else if(i<0){ parent.right=leftmost; } + } + } + }; + this.getIterator=function(){ + var a=[]; + inorderTraversalBuildup(root, a); + return new dxc.Iterator(a); + }; + this.search=function(data){ + return searchHelper(root, data); + }; + this.toString=function(order, sep){ + if(!order){ order=dxc.BinaryTree.TraversalMethods.Inorder; } + if(!sep){ sep=","; } + var s=""; + switch(order){ + case dxc.BinaryTree.TraversalMethods.Preorder: + s=preorderTraversal(root, sep); + break; + case dxc.BinaryTree.TraversalMethods.Inorder: + s=inorderTraversal(root, sep); + break; + case dxc.BinaryTree.TraversalMethods.Postorder: + s=postorderTraversal(root, sep); + break; + }; + if(s.length==0){ return ""; } + else{ return s.substring(0, s.length - sep.length); } + }; + + this.count=0; + var root=this.root=null; + if(data){ + this.add(data); + } + } + dxc.BinaryTree.TraversalMethods={ + Preorder: 1, Inorder: 2, Postorder: 3 + }; + return dxc.BinaryTree; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/Dictionary.js b/js/dojo-release-1.7.2-src/dojox/collections/Dictionary.js new file mode 100644 index 0000000..1332a15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/Dictionary.js @@ -0,0 +1,115 @@ +define(["dojo/_base/kernel", "dojo/_base/array", "./_base"], function(dojo, darray, dxc){ +/*===== +var dxc = dojox.collections; +=====*/ + dxc.Dictionary=function(/* dojox.collections.Dictionary? */dictionary){ + // summary + // Returns an object of type dojox.collections.Dictionary + var items={}; + this.count=0; + + // comparator for property addition and access. + var testObject={}; + + this.add=function(/* string */k, /* object */v){ + // summary + // Add a new item to the Dictionary. + var b=(k in items); + items[k]=new dxc.DictionaryEntry(k,v); + if(!b){ + this.count++; + } + }; + this.clear=function(){ + // summary + // Clears the internal dictionary. + items={}; + this.count=0; + }; + this.clone=function(){ + // summary + // Returns a new instance of dojox.collections.Dictionary; note the the dictionary is a clone but items might not be. + return new dxc.Dictionary(this); // dojox.collections.Dictionary + }; + this.contains=this.containsKey=function(/* string */k){ + // summary + // Check to see if the dictionary has an entry at key "k". + if(testObject[k]){ + return false; // bool + } + return (items[k]!=null); // bool + }; + this.containsValue=function(/* object */v){ + // summary + // Check to see if the dictionary has an entry with value "v". + var e=this.getIterator(); + while(e.get()){ + if(e.element.value==v){ + return true; // bool + } + } + return false; // bool + }; + this.entry=function(/* string */k){ + // summary + // Accessor method; similar to dojox.collections.Dictionary.item but returns the actual Entry object. + return items[k]; // dojox.collections.DictionaryEntry + }; + this.forEach=function(/* function */ fn, /* object? */ scope){ + // summary + // functional iterator, following the mozilla spec. + var a=[]; // Create an indexing array + for(var p in items) { + if(!testObject[p]){ + a.push(items[p]); // fill it up + } + } + dojo.forEach(a, fn, scope); + }; + this.getKeyList=function(){ + // summary + // Returns an array of the keys in the dictionary. + return (this.getIterator()).map(function(entry){ + return entry.key; + }); // array + }; + this.getValueList=function(){ + // summary + // Returns an array of the values in the dictionary. + return (this.getIterator()).map(function(entry){ + return entry.value; + }); // array + }; + this.item=function(/* string */k){ + // summary + // Accessor method. + if(k in items){ + return items[k].valueOf(); // object + } + return undefined; // object + }; + this.getIterator=function(){ + // summary + // Gets a dojox.collections.DictionaryIterator for iteration purposes. + return new dxc.DictionaryIterator(items); // dojox.collections.DictionaryIterator + }; + this.remove=function(/* string */k){ + // summary + // Removes the item at k from the internal collection. + if(k in items && !testObject[k]){ + delete items[k]; + this.count--; + return true; // bool + } + return false; // bool + }; + + if (dictionary){ + var e=dictionary.getIterator(); + while(e.get()) { + this.add(e.element.key, e.element.value); + } + } + }; + return dxc.Dictionary; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/Queue.js b/js/dojo-release-1.7.2-src/dojox/collections/Queue.js new file mode 100644 index 0000000..3394162 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/Queue.js @@ -0,0 +1,73 @@ +define(["dojo/_base/kernel", "dojo/_base/array", "./_base"], function(dojo, darray, dxc){ +/*===== +var dxc = dojox.collections; +=====*/ + dxc.Queue=function(/* array? */arr){ + // summary + // return an object of type dojox.collections.Queue + var q=[]; + if (arr){ + q=q.concat(arr); + } + this.count=q.length; + this.clear=function(){ + // summary + // clears the internal collection + q=[]; + this.count=q.length; + }; + this.clone=function(){ + // summary + // creates a new Queue based on this one + return new dxc.Queue(q); // dojox.collections.Queue + }; + this.contains=function(/* object */ o){ + // summary + // Check to see if the passed object is an element in this queue + for(var i=0; i b.key) return 1; + if (a.key < b.key) return -1; + return 0; + }; + var build=function(){ + q=[]; + var e=_this.getIterator(); + while (!e.atEnd()){ + q.push(e.get()); + } + q.sort(sorter); + }; + var testObject={}; + + this.count=q.length; + this.add=function(/* string */ k,/* object */v){ + // summary + // add the passed value to the dictionary at location k + if (!items[k]) { + items[k]=new dxc.DictionaryEntry(k,v); + this.count=q.push(items[k]); + q.sort(sorter); + } + }; + this.clear=function(){ + // summary + // clear the internal collections + items={}; + q=[]; + this.count=q.length; + }; + this.clone=function(){ + // summary + // create a clone of this sorted list + return new dxc.SortedList(this); // dojox.collections.SortedList + }; + this.contains=this.containsKey=function(/* string */ k){ + // summary + // Check to see if the list has a location k + if(testObject[k]){ + return false; // bool + } + return (items[k]!=null); // bool + }; + this.containsValue=function(/* object */ o){ + // summary + // Check to see if this list contains the passed object + var e=this.getIterator(); + while (!e.atEnd()){ + var item=e.get(); + if(item.value==o){ + return true; // bool + } + } + return false; // bool + }; + this.copyTo=function(/* array */ arr, /* int */ i){ + // summary + // copy the contents of the list into array arr at index i + var e=this.getIterator(); + var idx=i; + while(!e.atEnd()){ + arr.splice(idx,0,e.get()); + idx++; + } + }; + this.entry=function(/* string */ k){ + // summary + // return the object at location k + return items[k]; // dojox.collections.DictionaryEntry + }; + this.forEach=function(/* function */ fn, /* object? */ scope){ + // summary + // functional iterator, following the mozilla spec. + dojo.forEach(q, fn, scope); + }; + this.getByIndex=function(/* int */ i){ + // summary + // return the item at index i + return q[i].valueOf(); // object + }; + this.getIterator=function(){ + // summary + // get an iterator for this object + return new dxc.DictionaryIterator(items); // dojox.collections.DictionaryIterator + }; + this.getKey=function(/* int */ i){ + // summary + // return the key of the item at index i + return q[i].key; + }; + this.getKeyList=function(){ + // summary + // return an array of the keys set in this list + var arr=[]; + var e=this.getIterator(); + while (!e.atEnd()){ + arr.push(e.get().key); + } + return arr; // array + }; + this.getValueList=function(){ + // summary + // return an array of values in this list + var arr=[]; + var e=this.getIterator(); + while (!e.atEnd()){ + arr.push(e.get().value); + } + return arr; // array + }; + this.indexOfKey=function(/* string */ k){ + // summary + // return the index of the passed key. + for (var i=0; i=a.length); // bool + }; + this.get=function(){ + // summary + // Get the next member in the collection. + if(this.atEnd()){ + return null; // object + } + this.element=a[position++]; + return this.element; // object + }; + this.map=function(/* function */fn, /* object? */scope){ + // summary + // Functional iteration with optional scope. + return arr.map(a, fn, scope); + }; + this.reset=function(){ + // summary + // reset the internal cursor. + position=0; + this.element=a[position]; + }; + } + + /* Notes: + * The DictionaryIterator no longer supports a key and value property; + * the reality is that you can use this to iterate over a JS object + * being used as a hashtable. + */ + collections.DictionaryIterator=function(/* object */obj){ + // summary + // return an object of type dojox.collections.DictionaryIterator + var a=[]; // Create an indexing array + var testObject={}; + for(var p in obj){ + if(!testObject[p]){ + a.push(obj[p]); // fill it up + } + } + var position=0; + this.element=a[position]||null; + this.atEnd=function(){ + // summary + // Test to see if the internal cursor has reached the end of the internal collection. + return (position>=a.length); // bool + }; + this.get=function(){ + // summary + // Get the next member in the collection. + if(this.atEnd()){ + return null; // object + } + this.element=a[position++]; + return this.element; // object + }; + this.map=function(/* function */fn, /* object? */scope){ + // summary + // Functional iteration with optional scope. + return arr.map(a, fn, scope); + }; + this.reset=function() { + // summary + // reset the internal cursor. + position=0; + this.element=a[position]; + }; + }; + + return collections; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/ArrayList.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/ArrayList.js new file mode 100644 index 0000000..444e07a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/ArrayList.js @@ -0,0 +1,79 @@ +dojo.provide("dojox.collections.tests.ArrayList"); +dojo.require("dojox.collections.ArrayList"); + +tests.register("dojox.collections.tests.ArrayList", [ + function testCtor(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + t.assertEqual(4, al.count); + }, + function testAdd(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + al.add("carp"); + t.assertEqual("foo,bar,test,bull,carp", al.toString()); + al.addRange(["oof","rab"]); + t.assertEqual("foo,bar,test,bull,carp,oof,rab", al.toString()); + }, + function testClear(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + al.clear(); + t.assertEqual(0, al.count); + }, + function testClone(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + var cloned=al.clone(); + t.assertEqual(al.toString(), cloned.toString()); + }, + function testContains(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + t.assertTrue(al.contains("bar")); + t.assertFalse(al.contains("faz")); + }, + function testGetIterator(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + var itr=al.getIterator(); + while(!itr.atEnd()){ + itr.get(); + } + t.assertEqual("bull", itr.element); + }, + function testIndexOf(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + t.assertEqual(1, al.indexOf("bar")); + }, + function testInsert(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + al.insert(2, "baz"); + t.assertEqual(2, al.indexOf("baz")); + }, + function testItem(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + t.assertEqual("test", al.item(2)); + }, + function testRemove(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + al.remove("bar"); + t.assertEqual("foo,test,bull", al.toString()); + t.assertEqual(3, al.count); + }, + function testRemoveAt(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + al.removeAt(3); + t.assertEqual("foo,bar,test", al.toString()); + t.assertEqual(3, al.count); + }, + function testReverse(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + al.reverse(); + t.assertEqual("bull,test,bar,foo", al.toString()); + }, + function testSort(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + al.sort(); + t.assertEqual("bar,bull,foo,test", al.toString()); + }, + function testToArray(t){ + var al=new dojox.collections.ArrayList(["foo","bar","test","bull"]); + var a=al.toArray(); + t.assertEqual(a.join(","), al.toString()); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/BinaryTree.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/BinaryTree.js new file mode 100644 index 0000000..eeb2c0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/BinaryTree.js @@ -0,0 +1,79 @@ +dojo.provide("dojox.collections.tests.BinaryTree"); +dojo.require("dojox.collections.BinaryTree"); + +tests.register("dojox.collections.tests.BinaryTree", [ + function testCtor(t){ + var bt=new dojox.collections.BinaryTree("foo"); + t.assertTrue(bt instanceof dojox.collections.BinaryTree); + }, + function testAdd(t){ + var bt=new dojox.collections.BinaryTree("foo"); + bt.add("bar"); + bt.add("baz"); + bt.add("buck"); + bt.add("shot"); + bt.add("apple"); + t.assertEqual("apple,bar,baz,buck,foo,shot",bt.toString()); + }, + function testClear(t){ + var bt=new dojox.collections.BinaryTree("foo"); + bt.add("bar"); + bt.add("baz"); + bt.add("buck"); + bt.add("shot"); + bt.add("apple"); + bt.clear(); + t.assertEqual(bt.count, 0); + }, + function testClone(t){ + var bt=new dojox.collections.BinaryTree("foo"); + bt.add("bar"); + bt.add("baz"); + bt.add("buck"); + bt.add("shot"); + bt.add("apple"); + var bt2=bt.clone(); + t.assertEqual(bt2.count, 6); + t.assertEqual(bt.toString(), bt2.toString()); + }, + function testContains(t){ + var bt=new dojox.collections.BinaryTree("foo"); + bt.add("bar"); + bt.add("baz"); + bt.add("buck"); + bt.add("shot"); + bt.add("apple"); + t.assertTrue(bt.contains("buck")); + t.assertFalse(bt.contains("duck")); + }, + function testDeleteData(t){ + var bt=new dojox.collections.BinaryTree("foo"); + bt.add("bar"); + bt.add("baz"); + bt.add("buck"); + bt.add("shot"); + bt.add("apple"); + bt.deleteData("buck"); + t.assertEqual("apple,bar,baz,foo,shot",bt.toString()); + }, + function testGetIterator(t){ + var bt=new dojox.collections.BinaryTree("foo"); + bt.add("bar"); + bt.add("baz"); + bt.add("buck"); + bt.add("shot"); + bt.add("apple"); + var itr=bt.getIterator(); + while(!itr.atEnd()){ itr.get(); } + t.assertEqual("shot", itr.element); + }, + function testSearch(t){ + var bt=new dojox.collections.BinaryTree("foo"); + bt.add("bar"); + bt.add("baz"); + bt.add("buck"); + bt.add("shot"); + bt.add("apple"); + t.assertEqual("buck", bt.search("buck").value); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/Dictionary.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/Dictionary.js new file mode 100644 index 0000000..cc0303b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/Dictionary.js @@ -0,0 +1,78 @@ +dojo.provide("dojox.collections.tests.Dictionary"); +dojo.require("dojox.collections.Dictionary"); + +tests.register("dojox.collections.tests.Dictionary", [ + function testCtor(t){ + var d=new dojox.collections.Dictionary(); + t.assertTrue(d instanceof dojox.collections.Dictionary); + }, + function testAdd(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + t.assertEqual("bar", d.item("foo").valueOf()); + }, + function testClear(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + d.clear() + t.assertEqual(0, d.count); + }, + function testClone(t){ + var d=new dojox.collections.Dictionary(); + d.add("baz","fab"); + d.add("buck","shot"); + d.add("apple","orange"); + var d2 = d.clone(); + t.assertTrue(d2.contains("baz")); + }, + function testContains(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + d.add("baz","fab"); + d.add("buck","shot"); + d.add("apple","orange"); + t.assertTrue(d.contains("baz")); + }, + function testContainsKey(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + d.add("baz","fab"); + d.add("buck","shot"); + d.add("apple","orange"); + t.assertTrue(d.containsKey("buck")); + }, + function testContainsValue(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + d.add("baz","fab"); + d.add("buck","shot"); + d.add("apple","orange"); + t.assertTrue(d.containsValue("shot")); + }, + function testGetKeyList(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + d.add("baz","fab"); + d.add("buck","shot"); + d.add("apple","orange"); + t.assertEqual("foo,baz,buck,apple", d.getKeyList().join(",")); + }, + function testGetValueList(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + d.add("baz","fab"); + d.add("buck","shot"); + d.add("apple","orange"); + t.assertEqual("bar,fab,shot,orange", d.getValueList().join(",")); + }, + function testRemove(t){ + var d=new dojox.collections.Dictionary(); + d.add("foo","bar"); + d.add("baz","fab"); + d.add("buck","shot"); + d.add("apple","orange"); + d.remove("baz"); + t.assertEqual(3, d.count); + t.assertEqual(undefined, d.item("baz")); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/Queue.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/Queue.js new file mode 100644 index 0000000..2880f8d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/Queue.js @@ -0,0 +1,45 @@ +dojo.provide("dojox.collections.tests.Queue"); +dojo.require("dojox.collections.Queue"); + +tests.register("dojox.collections.tests.Queue", [ + function testCtor(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + t.assertEqual(4, q.count); + }, + function testClear(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + q.clear(); + t.assertEqual(0, q.count); + }, + function testClone(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + var cloned=q.clone(); + t.assertEqual(q.count, cloned.count); + t.assertEqual(q.toArray().join(), cloned.toArray().join()); + }, + function testContains(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + t.assertTrue(q.contains("bar")); + t.assertFalse(q.contains("faz")); + }, + function testGetIterator(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + var itr=q.getIterator(); + while(!itr.atEnd()){ itr.get(); } + t.assertEqual("bull", itr.element); + }, + function testPeek(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + t.assertEqual("foo", q.peek()); + }, + function testDequeue(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + t.assertEqual("foo", q.dequeue()); + t.assertEqual("bar,test,bull", q.toArray().join(",")); + }, + function testEnqueue(t){ + var q=new dojox.collections.Queue(["foo","bar","test","bull"]); + q.enqueue("bull"); + t.assertEqual("bull", q.toArray().pop()); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/Set.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/Set.js new file mode 100644 index 0000000..cbc9ed8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/Set.js @@ -0,0 +1,31 @@ +dojo.provide("dojox.collections.tests.Set"); +dojo.require("dojox.collections.Set"); + +(function(){ + var dxcs=dojox.collections.Set; + var a = ["apple","bear","candy","donut","epiphite","frank"]; + var b = ["bear","epiphite","google","happy","joy"]; + tests.register("dojox.collections.tests.Set", [ + function testUnion(t){ + var union=dxcs.union(a,b); + t.assertEqual("apple,bear,candy,donut,epiphite,frank,google,happy,joy", union.toArray().join(',')); + }, + function testIntersection(t){ + var itsn=dxcs.intersection(a,b); + t.assertEqual("bear,epiphite", itsn.toArray().join(",")); + t.assertEqual("bear", dxcs.intersection(["bear","apple"], ["bear"])); + }, + function testDifference(t){ + var d=dxcs.difference(a,b); + t.assertEqual("apple,candy,donut,frank",d.toArray().join(',')); + }, + function testIsSubSet(t){ + t.assertFalse(dxcs.isSubSet(a,["bear","candy"])); + t.assertTrue(dxcs.isSubSet(["bear","candy"],a)); + }, + function testIsSuperSet(t){ + t.assertTrue(dxcs.isSuperSet(a,["bear","candy"])); + t.assertFalse(dxcs.isSuperSet(["bear","candy"],a)); + } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/SortedList.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/SortedList.js new file mode 100644 index 0000000..c5c3865 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/SortedList.js @@ -0,0 +1,164 @@ +dojo.provide("dojox.collections.tests.SortedList"); +dojo.require("dojox.collections.SortedList"); + +tests.register("dojox.collections.tests.SortedList", [ + function testCtor(t){ + var sl=new dojox.collections.SortedList(); + t.assertTrue(sl instanceof dojox.collections.SortedList); + }, + function testAdd(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + t.assertEqual("bar", sl.item("foo").valueOf()); + }, + function testClear(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.clear(); + t.assertEqual(0, sl.count); + }, + function testClone(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + var sl2=sl.clone(); + t.assertTrue(sl2.contains("baz")); + }, + function testContains(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertTrue(sl.contains("baz")); + t.assertFalse(sl.contains("faz")); + }, + function testContainsKey(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertTrue(sl.containsKey("buck")); + t.assertFalse(sl.containsKey("faz")); + }, + function testContainsValue(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertTrue(sl.containsValue("shot")); + t.assertFalse(sl.containsValue("faz")); + }, + function testGetKeyList(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertEqual("foo,baz,buck,apple",sl.getKeyList().join(',')); + }, + function testGetValueList(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertEqual("bar,fab,shot,orange",sl.getValueList().join(',')); + }, + function testCopyTo(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + var arr=["bek"]; + sl.copyTo(arr,0); + t.assertEqual("bar,fab,shot,orange,bek", arr.join(',')); + }, + function testGetByIndex(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertEqual("shot", sl.getByIndex(2)); + }, + function testGetKey(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertEqual("apple", sl.getKey(0)); + }, + function testIndexOfKey(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertEqual(0, sl.indexOfKey("apple")); + }, + function testIndexOfValue(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + t.assertEqual(3, sl.indexOfValue("bar")); + }, + function testRemove(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + sl.remove("baz"); + t.assertEqual(3, sl.count); + t.assertEqual(undefined, sl.item("baz")); + }, + function testRemoveAt(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + sl.removeAt(2); + t.assertEqual(undefined, sl.item("buck")); + }, + function testReplace(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + sl.replace("buck","dollar"); + t.assertEqual(sl.item("buck").valueOf(), "dollar"); + }, + function testSetByIndex(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + sl.setByIndex(0, "bar"); + t.assertEqual("bar", sl.getByIndex(0)); + }, + function testSorting(t){ + var sl=new dojox.collections.SortedList(); + sl.add("foo","bar"); + sl.add("baz","fab"); + sl.add("buck","shot"); + sl.add("apple","orange"); + + var a=[]; + sl.forEach(function(item){ + a.push(item); + }); + t.assertEqual("orange,fab,shot,bar", a.join()); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/Stack.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/Stack.js new file mode 100644 index 0000000..b600941 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/Stack.js @@ -0,0 +1,45 @@ +dojo.provide("dojox.collections.tests.Stack"); +dojo.require("dojox.collections.Stack"); + +tests.register("dojox.collections.tests.Stack", [ + function testCtor(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + t.assertEqual(4, s.count); + }, + function testClear(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + s.clear(); + t.assertEqual(0, s.count); + }, + function testClone(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + var cloned=s.clone(); + t.assertEqual(s.count, cloned.count); + t.assertEqual(s.toArray().join(), cloned.toArray().join()); + }, + function testContains(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + t.assertTrue(s.contains("bar")); + t.assertFalse(s.contains("faz")); + }, + function testGetIterator(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + var itr=s.getIterator(); + while(!itr.atEnd()){ itr.get(); } + t.assertEqual("bull", itr.element); + }, + function testPeek(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + t.assertEqual("bull", s.peek()); + }, + function testPop(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + t.assertEqual("bull", s.pop()); + t.assertEqual("test", s.pop()); + }, + function testPush(t){ + var s=new dojox.collections.Stack(["foo","bar","test","bull"]); + s.push("bug"); + t.assertEqual("bug", s.peek()); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/_base.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/_base.js new file mode 100644 index 0000000..da760c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/_base.js @@ -0,0 +1,80 @@ +dojo.provide("dojox.collections.tests._base"); +dojo.require("dojox.collections"); + +tests.register("dojox.collections.tests._base", [ + function testDictionaryEntry(t){ + var d=new dojox.collections.DictionaryEntry("foo","bar"); + t.assertEqual("bar", d.valueOf()); + t.assertEqual("bar", d.toString()); + }, + + function testIterator(t){ + var itr=new dojox.collections.Iterator(["foo","bar","baz","zoo"]); + t.assertEqual("foo", itr.element); // test initialization + t.assertTrue(!itr.atEnd()); + t.assertEqual("foo", itr.get()); // make sure the first get doesn't advance. + t.assertEqual("bar", itr.get()); + t.assertEqual("baz", itr.get()); + t.assertEqual("zoo", itr.get()); + t.assertTrue(itr.atEnd()); + t.assertEqual(null, itr.get()); + + itr.reset(); + t.assertTrue(!itr.atEnd()); + t.assertEqual("foo", itr.element); + + // test map + var a=itr.map(function(elm){ + return elm+"-mapped"; + }); + itr=new dojox.collections.Iterator(a); + t.assertEqual("foo-mapped", itr.element); // test initialization + t.assertTrue(!itr.atEnd()); + t.assertEqual("foo-mapped", itr.get()); // make sure the first get doesn't advance. + t.assertEqual("bar-mapped", itr.get()); + t.assertEqual("baz-mapped", itr.get()); + t.assertEqual("zoo-mapped", itr.get()); + t.assertTrue(itr.atEnd()); + t.assertEqual(null, itr.get()); + }, + + function testDictionaryIterator(t){ + /* + in the context of any of the Dictionary-based collections, the + element would normally return a DictionaryEntry. However, since + the DictionaryIterator is really an iterator of pure objects, + we will just test with an object here. This means all property + names are lost in the translation, but...that's why there's a + DictionaryEntry object :) + */ + var itr=new dojox.collections.DictionaryIterator({ + first:"foo", second:"bar", third:"baz", fourth:"zoo" + }); + t.assertEqual("foo", itr.element); // test initialization + t.assertTrue(!itr.atEnd()); + t.assertEqual("foo", itr.get()); // make sure the first get doesn't advance. + t.assertEqual("bar", itr.get()); + t.assertEqual("baz", itr.get()); + t.assertEqual("zoo", itr.get()); + t.assertTrue(itr.atEnd()); + t.assertEqual(null, itr.get()); + + itr.reset(); + t.assertTrue(!itr.atEnd()); + t.assertEqual("foo", itr.element); + + // test map + var a=itr.map(function(elm){ + return elm+"-mapped"; + }); + itr=new dojox.collections.Iterator(a); + t.assertEqual("foo-mapped", itr.element); // test initialization + t.assertTrue(!itr.atEnd()); + t.assertEqual("foo-mapped", itr.get()); // make sure the first get doesn't advance. + t.assertEqual("bar-mapped", itr.get()); + t.assertEqual("baz-mapped", itr.get()); + t.assertEqual("zoo-mapped", itr.get()); + t.assertTrue(itr.atEnd()); + t.assertEqual(null, itr.get()); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/collections.js b/js/dojo-release-1.7.2-src/dojox/collections/tests/collections.js new file mode 100644 index 0000000..439794e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/collections.js @@ -0,0 +1,15 @@ +dojo.provide("dojox.collections.tests.collections"); +dojo.require("dojox.collections"); + +try{ + dojo.require("dojox.collections.tests._base"); + dojo.require("dojox.collections.tests.ArrayList"); + dojo.require("dojox.collections.tests.BinaryTree"); + dojo.require("dojox.collections.tests.Dictionary"); + dojo.require("dojox.collections.tests.Queue"); + dojo.require("dojox.collections.tests.Set"); + dojo.require("dojox.collections.tests.SortedList"); + dojo.require("dojox.collections.tests.Stack"); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/collections/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/collections/tests/runTests.html new file mode 100644 index 0000000..37f26a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/collections/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox.wire Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/color.js b/js/dojo-release-1.7.2-src/dojox/color.js new file mode 100644 index 0000000..12c71e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color.js @@ -0,0 +1,3 @@ +define(["./color/_base"], function(dxcolor){ + return dxcolor; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/color/Colorspace.js b/js/dojo-release-1.7.2-src/dojox/color/Colorspace.js new file mode 100644 index 0000000..eb6578f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/Colorspace.js @@ -0,0 +1,553 @@ +define(["dojo/_base/kernel", "../main", "dojo/_base/lang", "./_base", "dojox/math/matrix"], + function(dojo, dojox, dlang, dxc, dxm){ + +dojox.color.Colorspace=new (function(){ + var self=this; + var wpMap={ + "2":{ + "E": { x:1/3, y:1/3, t:5400 }, + "D50": { x:0.34567, y:0.3585, t:5000 }, + "D55": { x:0.33242, y:0.34743, t:5500 }, + "D65": { x:0.31271, y:0.32902, t:6500 }, + "D75": { x:0.29902, y:0.31485, t:7500 }, + "A": { x:0.44757, y:0.40745, t:2856 }, + "B": { x:0.34842, y:0.35161, t:4874 }, + "C": { x:0.31006, y:0.31616, t:6774 }, + "9300": { x:0.2848, y:0.2932, t:9300 }, + "F2": { x:0.37207, y:0.37512, t:4200 }, + "F7": { x:0.31285, y:0.32918, t:6500 }, + "F11": { x:0.38054, y:0.37691, t:4000 } + }, + "10":{ + "E": { x:1/3, y:1/3, t:5400 }, + "D50": { x:0.34773, y:0.35952, t:5000 }, + "D55": { x:0.33411, y:0.34877, t:5500 }, + "D65": { x:0.31382, y:0.331, t:6500 }, + "D75": { x:0.29968, y:0.3174, t:7500 }, + "A": { x:0.45117, y:0.40594, t:2856 }, + "B": { x:0.3498, y:0.3527, t:4874 }, + "C": { x:0.31039, y:0.31905, t:6774 }, + "F2": { x:0.37928, y:0.36723, t:4200 }, + "F7": { x:0.31565, y:0.32951, t:6500 }, + "F11": { x:0.38543, y:0.3711, t:4000 } + } + }; + + var profiles={ + "Adobe RGB 98":[2.2, "D65", 0.64, 0.33, 0.297361, 0.21, 0.71, 0.627355, 0.15, 0.06, 0.075285], + "Apple RGB":[1.8, "D65", 0.625, 0.34, 0.244634, 0.28, 0.595, 0.672034, 0.155, 0.07, 0.083332], + "Best RGB":[2.2, "D50", 0.7347, 0.2653, 0.228457, 0.215, 0.775, 0.737352, 0.13, 0.035, 0.034191], + "Beta RGB":[2.2, "D50", 0.6888, 0.3112, 0.303273, 0.1986, 0.7551, 0.663786, 0.1265, 0.0352, 0.032941], + "Bruce RGB":[2.2, "D65", 0.64, 0.33, 0.240995, 0.28, 0.65, 0.683554, 0.15, 0.06, 0.075452], + "CIE RGB":[2.2, "E", 0.735, 0.265, 0.176204, 0.274, 0.717, 0.812985, 0.167, 0.009, 0.010811], + "ColorMatch RGB":[1.8, "D50", 0.63, 0.34, 0.274884, 0.295, 0.605, 0.658132, 0.15, 0.075, 0.066985], + "DON RGB 4":[2.2, "D50", 0.696, 0.3, 0.27835, 0.215, 0.765, 0.68797, 0.13, 0.035, 0.03368], + "ECI RGB":[1.8, "D50", 0.67, 0.33, 0.32025, 0.21, 0.71, 0.602071, 0.14, 0.08, 0.077679], + "EktaSpace PS5":[2.2, "D50", 0.695, 0.305, 0.260629, 0.26, 0.7, 0.734946, 0.11, 0.005, 0.004425], + "NTSC RGB":[2.2, "C", 0.67, 0.33, 0.298839, 0.21, 0.71, 0.586811, 0.14, 0.08, 0.11435], + "PAL/SECAM RGB":[2.2, "D65", 0.64, 0.33, 0.222021, 0.29, 0.6, 0.706645, 0.15, 0.06, 0.071334], + "Pro Photo RGB":[1.8, "D50", 0.7347, 0.2653, 0.28804, 0.1596, 0.8404, 0.711874, 0.0366, 0.0001, 0.000086], + "SMPTE/C RGB":[2.2, "D65", 0.63, 0.34, 0.212395, 0.31, 0.595, 0.701049, 0.155, 0.07, 0.086556], + "sRGB":[2.2, "D65", 0.64, 0.33, 0.212656, 0.3, 0.6, 0.715158, 0.15, 0.06, 0.072186], + "Wide Gamut RGB":[2.2, "D50", 0.735, 0.265, 0.258187, 0.115, 0.826, 0.724938, 0.157, 0.018, 0.016875] + }; + + var adaptors={ + "XYZ scaling":{ + ma: [[1,0,0], [0,1,0], [0,0,1]], + mai: [[1,0,0], [0,1,0], [0,0,1]] + }, + "Bradford":{ + ma: [[0.8951, -0.7502, 0.0389], [0.2664, 1.7135, -0.0685], [-0.1614, 0.0367, 1.0296]], + mai: [[0.986993, 0.432305, -0.008529], [-0.147054, 0.51836, 0.040043], [0.159963, 0.049291, 0.968487]] + }, + "Von Kries":{ + ma: [[0.40024, -0.2263, 0], [0.7076, 1.16532, 0], [-0.08081, 0.0457, 0.91822]], + mai: [[1.859936, 0.361191, 0], [-1.129382, 0.638812, 0], [0.219897, -0.000006, 1.089064]] + } + }; + + var cMaps={ + "XYZ":{ + "xyY":function(xyz, kwArgs){ + kwArgs=dojo.mixin({ + whitepoint:"D65", + observer:"10", + useApproximation:true + }, kwArgs||{}); + var wp=self.whitepoint(kwArgs.whitepoint, kwArgs.observer); + var sum=xyz.X+xyz.Y+xyz.Z; + if(sum==0){ var x=wp.x, y=wp.y; } + else{ var x=xyz.X/sum, y=xyz.Y/sum; } + return { x:x, y:y, Y:xyz.Y }; + }, + "Lab":function(xyz, kwArgs){ + kwArgs=dojo.mixin({ + whitepoint:"D65", + observer:"10", + useApproximation:true + }, kwArgs||{}); + + var kappa=self.kappa(kwArgs.useApproximation), epsilon=self.epsilon(kwArgs.useApproximation); + var wp=self.whitepoint(kwArgs.whitepoint, kwArgs.observer); + var xr=xyz.X/wp.x, yr=xyz.Y/wp.y, zr=xyz.z/wp.z; + var fx=(xr>epsilon)?Math.pow(xr,1/3):(kappa*xr+16)/116; + var fy=(yr>epsilon)?Math.pow(yr,1/3):(kappa*yr+16)/116; + var fz=(zr>epsilon)?Math.pow(zr,1/3):(kappa*zr+16)/116; + var L=116*fy-16, a=500*(fx-fy), b=200*(fy-fz); + return { L:L, a:a, b:b }; + }, + "Luv": function(xyz, kwArgs){ + kwArgs=dojo.mixin({ + whitepoint:"D65", + observer:"10", + useApproximation:true + }, kwArgs||{}); + + var kappa=self.kappa(kwArgs.useApproximation), epsilon=self.epsilon(kwArgs.useApproximation); + var wp=self.whitepoint(kwArgs.whitepoint, kwArgs.observer); + var ud=(4*xyz.X)/(xyz.X+15*xyz.Y+3*xyz.Z); + var vd=(9*xyz.Y)/(xyz.X+15*xyz.Y+3*xyz.Z); + var udr=(4*wp.x)/(wp.x+15*wp.y+3*wp.z); + var vdr=(9*wp.y)/(wp.x+15*wp.y+3*wp.z); + var yr=xyz.Y/wp.y; + var L=(yr>epsilon)?116*Math.pow(yr, 1/3)-16:kappa*yr; + var u=13*L*(ud-udr); + var v=13*L*(vd-vdr); + return { L:L, u:u, v:v }; + } + }, + "xyY":{ + "XYZ":function(xyY){ + if(xyY.y==0){ var X=0, Y=0, Z=0; } + else{ + var X=(xyY.x*xyY.Y)/xyY.y; + var Y=xyY.Y; + var Z=((1-xyY.x-xyY.y)*xyY.Y)/xyY.y; + } + return { X:X, Y:Y, Z:Z }; + } + }, + "Lab":{ + "XYZ": function(lab, kwArgs){ + kwArgs=dojo.mixin({ + whitepoint:"D65", + observer:"10", + useApproximation:true + }, kwArgs||{}); + + var b=kwArgs.useApproximation, kappa=self.kappa(b), epsilon=self.epsilon(b); + var wp=self.whitepoint(kwArgs.whitepoint, kwArgs.observer); + var yr=(lab.L>(kappa*epsilon))?Math.pow((lab.L+16)/116, 3):lab.L/kappa; + var fy=(yr>epsilon)?(lab.L+16)/116:(kappa*yr+16)/116; + var fx=(lab.a/500)+fy; + var fz=fy-(lab.b/200); + var fxcube=Math.pow(fx, 3), fzcube=Math.pow(fz, 3); + var xr=(fxcube>epsilon)?fxcube:(116*fx-16)/kappa; + var zr=(fzcube>epsilon)?fzcube:(116*fz-16)/kappa; + return { X: xr*wp.x, Y: yr*wp.y, Z: zr*wp.z }; + }, + "LCHab": function(lab){ + var L=lab.L, C=Math.pow(lab.a*lab.a+lab.b*lab.b, 0.5), H=Math.atan(lab.b, lab.a)*(180/Math.PI); + if(H<0){ H+=360; } + if(H<360){ H-=360; } + return { L:L, C:C, H:H }; + } + }, + "LCHab":{ + "Lab":function(lch){ + var hRad=lch.H*(Math.PI/180), L=lch.L, a=lch.C/Math.pow(Math.pow(Math.tan(hRad),2)+1, 0.5); + if(90180){ b = -b; } + return { L: L, a:a, b:b }; + } + }, + "Luv":{ + "XYZ": function(Luv, kwArgs){ + kwArgs=dojo.mixin({ + whitepoint:"D65", + observer:"10", + useApproximation:true + }, kwArgs||{}); + + var b=kwArgs.useApproximation, kappa=self.kappa(b), epsilon=self.epsilon(b); + var wp=self.whitepoint(kwArgs.whitepoint, kwArgs.observer); + var uz=(4*wp.x)/(wp.x+15*wp.y+3*wp.z); + var vz=(9*wp.y)/(wp.x+15*wp.y+3*wp.z); + var Y=(Luv.L>kappa*epsilon)?Math.pow((Luv.L+16)/116, 3):Luv.L/kappa; + var a=(1/3)*(((52*Luv.L)/(Luv.u+13*Luv.L*uz))-1); + var b=-5*Y, c=-(1/3), d=Y*(((39*Luv.L)/(Luv.v+13*Luv.L*vz))-5); + var X=(d-b)/(a-c), Z=X*a+b; + return { X:X, Y:Y, Z:Z }; + }, + "LCHuv": function(Luv){ + var L=Luv.L, C=Math.pow(Luv.u*Luv.u+Luv.v*Luv*v, 0.5), H=Math.atan(Luv.v, Luv.u)*(180/Math.PI); + if(H<0){ H+=360; } + if(H>360){ H-=360; } + return { L:L, C:C, H:H }; + } + }, + "LCHuv":{ + "Luv": function(LCH){ + var hRad=LCH.H*(Math.PI/180); + var L=LCH.L, u=LCH.C/Math.pow(Math.pow(Math.tan(hRad),2)+1, 0.5); + var v=Math.pow(LCH.C*LCH.C-u*u, 0.5); + if(90270){ u*=-1; } + if(LCH.H>180){ v*=-1; } + return { L:L, u:u, v:v }; + } + } + }; + var converters={ + "CMY":{ + "CMYK":function(obj, kwArgs){ return dxc.fromCmy(obj).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromCmy(obj).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromCmy(obj).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](dxc.fromCmy(obj).toXYZ(kwArgs)); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](converters["CMY"]["Lab"](obj)); }, + "LCHuv":function(obj, kwArgs){ return cMaps["LCHuv"]["Luv"](cMaps["Luv"]["XYZ"](dxc.fromCmy(obj).toXYZ(kwArgs))); }, + "Luv":function(obj, kwArgs){ return cMaps["Luv"]["XYZ"](dxc.fromCmy(obj).toXYZ(kwArgs)); }, + "RGB":function(obj, kwArgs){ return dxc.fromCmy(obj); }, + "XYZ":function(obj, kwArgs){ return dxc.fromCmy(obj).toXYZ(kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](dxc.fromCmy(obj).toXYZ(kwArgs)); } + }, + "CMYK":{ + "CMY":function(obj, kwArgs){ return dxc.fromCmyk(obj).toCmy(); }, + "HSL":function(obj, kwArgs){ return dxc.fromCmyk(obj).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromCmyk(obj).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](dxc.fromCmyk(obj).toXYZ(kwArgs)); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](converters["CMYK"]["Lab"](obj)); }, + "LCHuv":function(obj, kwArgs){ return cMaps["LCHuv"]["Luv"](cMaps["Luv"]["XYZ"](dxc.fromCmyk(obj).toXYZ(kwArgs))); }, + "Luv":function(obj, kwArgs){ return cMaps["Luv"]["XYZ"](dxc.fromCmyk(obj).toXYZ(kwArgs)); }, + "RGB":function(obj, kwArgs){ return dxc.fromCmyk(obj); }, + "XYZ":function(obj, kwArgs){ return dxc.fromCmyk(obj).toXYZ(kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](dxc.fromCmyk(obj).toXYZ(kwArgs)); } + }, + "HSL":{ + "CMY":function(obj, kwArgs){ return dxc.fromHsl(obj).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromHsl(obj).toCmyk(); }, + "HSV":function(obj, kwArgs){ return dxc.fromHsl(obj).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](dxc.fromHsl(obj).toXYZ(kwArgs)); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](converters["CMYK"]["Lab"](obj)); }, + "LCHuv":function(obj, kwArgs){ return cMaps["LCHuv"]["Luv"](cMaps["Luv"]["XYZ"](dxc.fromHsl(obj).toXYZ(kwArgs))); }, + "Luv":function(obj, kwArgs){ return cMaps["Luv"]["XYZ"](dxc.fromHsl(obj).toXYZ(kwArgs)); }, + "RGB":function(obj, kwArgs){ return dxc.fromHsl(obj); }, + "XYZ":function(obj, kwArgs){ return dxc.fromHsl(obj).toXYZ(kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](dxc.fromHsl(obj).toXYZ(kwArgs)); } + }, + "HSV":{ + "CMY":function(obj, kwArgs){ return dxc.fromHsv(obj).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromHsv(obj).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromHsv(obj).toHsl(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](dxc.fromHsv(obj).toXYZ(kwArgs)); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](converters["CMYK"]["Lab"](obj)); }, + "LCHuv":function(obj, kwArgs){ return cMaps["LCHuv"]["Luv"](cMaps["Luv"]["XYZ"](dxc.fromHsv(obj).toXYZ(kwArgs))); }, + "Luv":function(obj, kwArgs){ return cMaps["Luv"]["XYZ"](dxc.fromHsv(obj).toXYZ(kwArgs)); }, + "RGB":function(obj, kwArgs){ return dxc.fromHsv(obj); }, + "XYZ":function(obj, kwArgs){ return dxc.fromHsv(obj).toXYZ(kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](dxc.fromHsv(obj).toXYZ(kwArgs)); } + }, + "Lab":{ + "CMY":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](obj, kwArgs)).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](obj, kwArgs)).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](obj, kwArgs)).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](obj, kwArgs)).toHsv(); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](obj, kwArgs); }, + "LCHuv":function(obj, kwArgs){ return cMaps["Luv"]["LCHuv"](cMaps["Lab"]["XYZ"](obj, kwArgs), kwArgs); }, + "Luv":function(obj, kwArgs){ return cMaps["XYZ"]["Luv"](cMaps["Lab"]["XYZ"](obj, kwArgs), kwArgs); }, + "RGB":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](obj, kwArgs)); }, + "XYZ":function(obj, kwArgs){ return cMaps["Lab"]["XYZ"](obj, kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](cMaps["Lab"]["XYZ"](obj, kwArgs), kwArgs); } + }, + "LCHab":{ + "CMY":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](obj, kwArgs); }, + "LCHuv":function(obj, kwArgs){ return cMaps["Luv"]["LCHuv"](cMaps["XYZ"]["Luv"](cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs), kwArgs);}, + "Luv":function(obj, kwArgs){ return cMaps["XYZ"]["Luv"](cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs);}, + "RGB":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs); }, + "XYZ":function(obj, kwArgs){ return cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj, kwArgs), kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](cMaps["Lab"]["XYZ"](cMaps["LCHab"]["Lab"](obj), kwArgs), kwArgs); } + }, + "LCHuv":{ + "CMY":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](cMaps["XYZ"]["Lab"](cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs), kwArgs); }, + "Luv":function(obj, kwArgs){ return cMaps["LCHuv"]["Luv"](obj, kwArgs); }, + "RGB":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs); }, + "XYZ":function(obj, kwArgs){ return cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](cMaps["Luv"]["XYZ"](cMaps["LCHuv"]["Luv"](obj), kwArgs), kwArgs); } + }, + "Luv":{ + "CMY":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](cMaps["XYZ"]["Lab"](cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs), kwArgs); }, + "LCHuv":function(obj, kwArgs){ return cMaps["Luv"]["LCHuv"](obj, kwArgs); }, + "RGB":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs); }, + "XYZ":function(obj, kwArgs){ return cMaps["Luv"]["XYZ"](obj, kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](cMaps["Luv"]["XYZ"](obj, kwArgs), kwArgs); } + }, + "RGB":{ + "CMY":function(obj, kwArgs){ return obj.toCmy(); }, + "CMYK":function(obj, kwArgs){ return obj.toCmyk(); }, + "HSL":function(obj, kwArgs){ return obj.toHsl(); }, + "HSV":function(obj, kwArgs){ return obj.toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](obj.toXYZ(kwArgs), kwArgs); }, + "LCHab":function(obj, kwArgs){ return cMaps["LCHab"]["Lab"](cMaps["XYZ"]["Lab"](obj.toXYZ(kwArgs), kwArgs), kwArgs);}, + "LCHuv":function(obj, kwArgs){ return cMaps["LCHuv"]["Luv"](cMaps["XYZ"]["Luv"](obj.toXYZ(kwArgs), kwArgs), kwArgs);}, + "Luv":function(obj, kwArgs){ return cMaps["XYZ"]["Luv"](obj.toXYZ(kwArgs), kwArgs); }, + "XYZ":function(obj, kwArgs){ return obj.toXYZ(kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](obj.toXYZ(kwArgs), kwArgs); } + }, + "XYZ":{ + "CMY":function(obj, kwArgs){ return dxc.fromXYZ(obj, kwArgs).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromXYZ(obj, kwArgs).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromXYZ(obj, kwArgs).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromXYZ(obj, kwArgs).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["XYZ"]["Lab"](obj, kwArgs); }, + "LCHab":function(obj, kwArgs){ return cMaps["Lab"]["LCHab"](cMaps["XYZ"]["Lab"](obj, kwArgs), kwArgs); }, + "LCHuv":function(obj, kwArgs){ return cMaps["Luv"]["LCHuv"](cMaps["XYZ"]["Luv"](obj, kwArgs), kwArgs); }, + "Luv":function(obj, kwArgs){ return cMaps["XYZ"]["Luv"](obj, kwArgs); }, + "RGB":function(obj, kwArgs){ return dxc.fromXYZ(obj, kwArgs); }, + "xyY":function(obj, kwArgs){ return cMaps["XYZ"]["xyY"](dxc.fromXYZ(obj, kwArgs), kwArgs); } + }, + // TODO: revisit this. xyY represents a single color, not a spectrum of colors. + "xyY":{ + "CMY":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs).toCmy(); }, + "CMYK":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs).toCmyk(); }, + "HSL":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs).toHsl(); }, + "HSV":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs).toHsv(); }, + "Lab":function(obj, kwArgs){ return cMaps["Lab"]["XYZ"](cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs); }, + "LCHab":function(obj, kwArgs){ return cMaps["LCHab"]["Lab"](cMaps["Lab"]["XYZ"](cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs), kwArgs); }, + "LCHuv":function(obj, kwArgs){ return cMaps["LCHuv"]["Luv"](cMaps["Luv"]["XYZ"](cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs), kwArgs); }, + "Luv":function(obj, kwArgs){ return cMaps["Luv"]["XYZ"](cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs); }, + "RGB":function(obj, kwArgs){ return dxc.fromXYZ(cMaps["xyY"]["XYZ"](obj, kwArgs), kwArgs); }, + "XYZ":function(obj, kwArgs){ return cMaps["xyY"]["XYZ"](obj, kwArgs); } + } + }; + + this.whitepoint=function(/* String */wpName, /* String? */observer){ + observer=observer||"10"; + var x=0, y=0, t=0; + if(wpMap[observer] && wpMap[observer][wpName]){ + x=wpMap[observer][wpName].x; + y=wpMap[observer][wpName].y; + t=wpMap[observer][wpName].t; + } else { + console.warn( + "dojox.color.Colorspace::whitepoint: either the observer or the whitepoint name was not found. ", + observer, wpName + ); + } + var wp={ x:x, y:y, z:(1-x-y), t:t, Y:1 }; + return this.convert(wp, "xyY", "XYZ"); + }; + + this.tempToWhitepoint=function(/* Number */t){ + if(t<4000){ + console.warn("dojox.color.Colorspace::tempToWhitepoint: can't find a white point for temperatures less than 4000K. (Passed ", t, ")."); + return { x:0, y:0 }; + } + if(t>25000){ + console.warn("dojox.color.Colorspace::tempToWhitepoint: can't find a white point for temperatures greater than 25000K. (Passed ", t, ")."); + return { x:0, y:0 }; + } + var t1=t, t2=t*t, t3=t2*t; + var ten9=Math.pow(10, 9), ten6=Math.pow(10, 6), ten3=Math.pow(10,3); + if(t<=7000){ + var x=(-4.607*ten9/t3)+(2.9678*ten6/t2)+(0.09911*ten3/t)+0.2444063; + } else { + var x=(-2.0064*ten9/t3)+(1.9018*ten6/t2)+(0.24748*ten3/t)+0.23704; + } + var y=-3*x*x+2.87*x-0.275; + return { x:x, y:y }; + }; + + this.primaries=function(/* Object */kwArgs){ + // mix in the defaults. + kwArgs=dojo.mixin({ + profile:"sRGB", + whitepoint:"D65", + observer:"10", + adaptor:"Bradford" + }, kwArgs||{}); + + var m=[]; + if(profiles[kwArgs.profile]){ + m=profiles[kwArgs.profile].slice(0); + } else { + console.warn( + "dojox.color.Colorspace::primaries: the passed profile was not found. ", + "Available profiles include: ", profiles, + ". The profile passed was ", kwArgs.profile + ); + } + var primary={ + name:kwArgs.profile, + gamma:m[0], whitepoint:m[1], + xr:m[2], yr:m[3], Yr:m[4], + xg:m[5], yg:m[6], Yg:m[7], + xb:m[8], yb:m[9], Yb:m[10] + }; + + // convert for the whitepoint + if(kwArgs.whitepoint!=primary.whitepoint){ + var r=this.convert( + this.adapt({ + color:this.convert({ x:xr, y:yr, Y:Yr }, "xyY", "XYZ"), + adaptor:kwArgs.adaptor, + source:primary.whitepoint, + destination:kwArgs.whitepoint + }), + "XYZ", + "xyY" + ); + var g=this.convert( + this.adapt({ + color:this.convert({ x:xg, y:yg, Y:Yg }, "xyY", "XYZ"), + adaptor:kwArgs.adaptor, + source:primary.whitepoint, + destination:kwArgs.whitepoint + }), + "XYZ", + "xyY" + ); + var b=this.convert( + this.adapt({ + color:this.convert({ x:xb, y:yb, Y:Yb }, "xyY", "XYZ"), + adaptor:kwArgs.adaptor, + source:primary.whitepoint, + destination:kwArgs.whitepoint + }), + "XYZ", + "xyY" + ); + primary=dojo.mixin(primary, { + xr: r.x, yr: r.y, Yr: r.Y, + xg: g.x, yg: g.y, Yg: g.Y, + xb: b.x, yb: b.y, Yb: b.Y, + whitepoint: kwArgs.whitepoint + }); + } + return dojo.mixin(primary, { + zr: 1-primary.xr-primary.yr, + zg: 1-primary.xg-primary.yg, + zb: 1-primary.xb-primary.yb + }); // Object + }; + + this.adapt=function(/* Object */kwArgs){ + // color is required in the form of XYZ, source whitepoint name is required. + if(!kwArgs.color || !kwArgs.source){ + console.error("dojox.color.Colorspace::adapt: color and source arguments are required. ", kwArgs); + } + + // defaults + kwArgs=dojo.mixin({ + adaptor:"Bradford", + destination:"D65" + }, kwArgs); + + // adapt + var swp = this.whitepoint(kwArgs.source); + var dwp = this.whitepoint(kwArgs.destination); + if(adaptors[kwArgs.adaptor]){ + var ma=adaptors[kwArgs.adaptor].ma; + var mai=adaptors[kwArgs.adaptor].mai; + }else{ + console.warn("dojox.color.Colorspace::adapt: the passed adaptor '", kwArgs.adaptor, "' was not found."); + } + var dSrc=dxm.multiply([[swp.x, swp.y, swp.z]], ma); + var dDest=dxm.multiply([[dwp.x, dwp.y, dwp.z]], ma); + var center=[ + [dDest[0][0]/dSrc[0][0], 0, 0], + [0, dDest[0][1]/dSrc[0][1], 0], + [0, 0, dDest[0][2]/dSrc[0][2]] + ]; + var m=dxm.multiply(dxm.multiply(ma, center), mai); + var r=dxm.multiply([[ kwArgs.color.X, kwArgs.color.Y, kwArgs.color.Z ]], m)[0]; + return { X:r[0], Y:r[1], Z:r[2] }; + }; + + this.matrix=function(/* String */to, /* Object */primary){ + var p=primary, wp=this.whitepoint(p.whitepoint); + var Xr = p.xr/p.yr, Yr = 1, Zr = (1-p.xr-p.yr)/p.yr; + var Xg = p.xg/p.yg, Yg = 1, Zg = (1-p.xg-p.yg)/p.yg; + var Xb = p.xb/p.yb, Yb = 1, Zb = (1-p.xb-p.yb)/p.yb; + + var m1 = [[ Xr, Yr, Zr ], [ Xg, Yg, Zg ], [ Xb, Yb, Zb ]]; + var m2 = [[ wp.X, wp.Y, wp.Z ]]; + var sm = dxm.multiply(m2, dxm.inverse(m1)); + var Sr = sm[0][0], Sg = sm[0][1], Sb = sm[0][2]; + var result=[ + [Sr*Xr, Sr*Yr, Sr*Zr], + [Sg*Xg, Sg*Yg, Sg*Zg], + [Sb*Xb, Sb*Yb, Sb*Zb] + ]; + if(to=="RGB"){ return dxm.inverse(result); } + return result; + }; + + this.epsilon=function(/* bool? */useApprox){ + return (useApprox || typeof(useApprox)=="undefined")? 0.008856: 216/24289; + }; + this.kappa=function(/* bool? */useApprox){ + return (useApprox || typeof(useApprox)=="undefined")? 903.3: 24389/27; + }; + + this.convert=function(/* Object */color, /* string */from, /* string */to, /* Object? */kwArgs){ + if(converters[from] && converters[from][to]){ + return converters[from][to](color, kwArgs); + } + console.warn("dojox.color.Colorspace::convert: Can't convert ", color, " from ", from, " to ", to, "."); + }; +})(); + +// More dojox.color and dojox.color.Color extensions +dojo.mixin(dojox.color, { + fromXYZ: function(/* Object */xyz, /* Object?*/kwArgs){ + kwArgs=kwArgs||{}; + var p=dojox.color.Colorspace.primaries(kwArgs); + var m=dojox.color.Colorspace.matrix("RGB", p); + var rgb=dojox.math.matrix.multiply([[ xyz.X, xyz.Y, xyz.Z ]], m); + var r=rgb[0][0], g=rgb[0][1], b=rgb[0][2]; + if(p.profile=="sRGB"){ + var R = (r>0.0031308)?(1.055*Math.pow(r, 1/2.4))-0.055: 12.92*r; + var G = (g>0.0031308)?(1.055*Math.pow(g, 1/2.4))-0.055: 12.92*g; + var B = (b>0.0031308)?(1.055*Math.pow(b, 1/2.4))-0.055: 12.92*b; + }else{ + var R=Math.pow(r, 1/p.gamma), G=Math.pow(g, 1/p.gamma), B=Math.pow(b, 1/p.gamma); + } + return new dojox.color.Color({ r:Math.floor(R*255), g:Math.floor(G*255), b:Math.floor(B*255) }); + } +}); + +dojo.extend(dojox.color.Color, { + toXYZ: function(/* Object */kwArgs){ + kwArgs=kwArgs||{}; + var p=dojox.color.Colorspace.primaries(kwArgs); + var m=dojox.color.Colorspace.matrix("XYZ", p); + var _r=this.r/255, _g=this.g/255, _b=this.b/255; + if(p.profile=="sRGB"){ + var r=(_r>0.04045) ? Math.pow(((_r+0.055)/1.055), 2.4):_r/12.92; + var g=(_g>0.04045) ? Math.pow(((_g+0.055)/1.055), 2.4):_g/12.92; + var b=(_b>0.04045) ? Math.pow(((_b+0.055)/1.055), 2.4):_b/12.92; + } else { + var r=Math.pow(_r, p.gamma), g=Math.pow(_g, p.gamma), b=Math.pow(_b, p.gamma); + } + var xyz=dojox.math.matrix([[ r, g, b ]], m); + return { X: xyz[0][0], Y: xyz[0][1], Z: xyz[0][2] }; // Object + } +}); + +return dojox.color.Colorspace; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/color/Palette.js b/js/dojo-release-1.7.2-src/dojox/color/Palette.js new file mode 100644 index 0000000..3305946 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/Palette.js @@ -0,0 +1,482 @@ +define(["dojo/_base/kernel", "../main", "dojo/_base/lang", "dojo/_base/array", "./_base"], + function(dojo, dojox, lang, arr, dxc){ + + /*************************************************************** + * dojox.color.Palette + * + * The Palette object is loosely based on the color palettes + * at Kuler (http://kuler.adobe.com). They are 5 color palettes + * with the base color considered to be the third color in the + * palette (for generation purposes). + * + * Palettes can be generated from well-known algorithms or they + * can be manually created by passing an array to the constructor. + * + * Palettes can be transformed, using a set of specific params + * similar to the way shapes can be transformed with dojox.gfx. + * However, unlike with transformations in dojox.gfx, transforming + * a palette will return you a new Palette object, in effect + * a clone of the original. + ***************************************************************/ + + // ctor ---------------------------------------------------------------------------- + dxc.Palette = function(/* String|Array|dojox.color.Color|dojox.color.Palette */base){ + // summary: + // An object that represents a palette of colors. + // description: + // A Palette is a representation of a set of colors. While the standard + // number of colors contained in a palette is 5, it can really handle any + // number of colors. + // + // A palette is useful for the ability to transform all the colors in it + // using a simple object-based approach. In addition, you can generate + // palettes using dojox.color.Palette.generate; these generated palettes + // are based on the palette generators at http://kuler.adobe.com. + // + // colors: dojox.color.Color[] + // The actual color references in this palette. + this.colors = []; + if(base instanceof dxc.Palette){ + this.colors = base.colors.slice(0); + } + else if(base instanceof dxc.Color){ + this.colors = [ null, null, base, null, null ]; + } + else if(lang.isArray(base)){ + this.colors = arr.map(base.slice(0), function(item){ + if(lang.isString(item)){ return new dxc.Color(item); } + return item; + }); + } + else if (lang.isString(base)){ + this.colors = [ null, null, new dxc.Color(base), null, null ]; + } + } + + // private functions --------------------------------------------------------------- + + // transformations + function tRGBA(p, param, val){ + var ret = new dxc.Palette(); + ret.colors = []; + arr.forEach(p.colors, function(item){ + var r=(param=="dr")?item.r+val:item.r, + g=(param=="dg")?item.g+val:item.g, + b=(param=="db")?item.b+val:item.b, + a=(param=="da")?item.a+val:item.a + ret.colors.push(new dxc.Color({ + r: Math.min(255, Math.max(0, r)), + g: Math.min(255, Math.max(0, g)), + b: Math.min(255, Math.max(0, b)), + a: Math.min(1, Math.max(0, a)) + })); + }); + return ret; + } + + function tCMY(p, param, val){ + var ret = new dxc.Palette(); + ret.colors = []; + arr.forEach(p.colors, function(item){ + var o=item.toCmy(), + c=(param=="dc")?o.c+val:o.c, + m=(param=="dm")?o.m+val:o.m, + y=(param=="dy")?o.y+val:o.y; + ret.colors.push(dxc.fromCmy( + Math.min(100, Math.max(0, c)), + Math.min(100, Math.max(0, m)), + Math.min(100, Math.max(0, y)) + )); + }); + return ret; + } + + function tCMYK(p, param, val){ + var ret = new dxc.Palette(); + ret.colors = []; + arr.forEach(p.colors, function(item){ + var o=item.toCmyk(), + c=(param=="dc")?o.c+val:o.c, + m=(param=="dm")?o.m+val:o.m, + y=(param=="dy")?o.y+val:o.y, + k=(param=="dk")?o.b+val:o.b; + ret.colors.push(dxc.fromCmyk( + Math.min(100, Math.max(0, c)), + Math.min(100, Math.max(0, m)), + Math.min(100, Math.max(0, y)), + Math.min(100, Math.max(0, k)) + )); + }); + return ret; + } + + function tHSL(p, param, val){ + var ret = new dxc.Palette(); + ret.colors = []; + arr.forEach(p.colors, function(item){ + var o=item.toHsl(), + h=(param=="dh")?o.h+val:o.h, + s=(param=="ds")?o.s+val:o.s, + l=(param=="dl")?o.l+val:o.l; + ret.colors.push(dxc.fromHsl(h%360, Math.min(100, Math.max(0, s)), Math.min(100, Math.max(0, l)))); + }); + return ret; + } + + function tHSV(p, param, val){ + var ret = new dxc.Palette(); + ret.colors = []; + arr.forEach(p.colors, function(item){ + var o=item.toHsv(), + h=(param=="dh")?o.h+val:o.h, + s=(param=="ds")?o.s+val:o.s, + v=(param=="dv")?o.v+val:o.v; + ret.colors.push(dxc.fromHsv(h%360, Math.min(100, Math.max(0, s)), Math.min(100, Math.max(0, v)))); + }); + return ret; + } + + // helper functions + function rangeDiff(val, low, high){ + // given the value in a range from 0 to high, find the equiv + // using the range low to high. + return high-((high-val)*((high-low)/high)); + } + + // object methods --------------------------------------------------------------- + lang.extend(dxc.Palette, { + transform: function(/* dojox.color.Palette.__transformArgs */kwArgs){ + // summary: + // Transform the palette using a specific transformation function + // and a set of transformation parameters. + // description: + // {palette}.transform is a simple way to uniformly transform + // all of the colors in a palette using any of 5 formulae: + // RGBA, HSL, HSV, CMYK or CMY. + // + // Once the forumula to be used is determined, you can pass any + // number of parameters based on the formula "d"[param]; for instance, + // { use: "rgba", dr: 20, dg: -50 } will take all of the colors in + // palette, add 20 to the R value and subtract 50 from the G value. + // + // Unlike other types of transformations, transform does *not* alter + // the original palette but will instead return a new one. + var fn=tRGBA; // the default transform function. + if(kwArgs.use){ + // we are being specific about the algo we want to use. + var use=kwArgs.use.toLowerCase(); + if(use.indexOf("hs")==0){ + if(use.charAt(2)=="l"){ fn=tHSL; } + else { fn=tHSV; } + } + else if(use.indexOf("cmy")==0){ + if(use.charAt(3)=="k"){ fn=tCMYK; } + else { fn=tCMY; } + } + } + // try to guess the best choice. + else if("dc" in kwArgs || "dm" in kwArgs || "dy" in kwArgs){ + if("dk" in kwArgs){ fn = tCMYK; } + else { fn = tCMY; } + } + else if("dh" in kwArgs || "ds" in kwArgs){ + if("dv" in kwArgs){ fn = tHSV; } + else { fn = tHSL; } + } + + var palette = this; + for(var p in kwArgs){ + // ignore use + if(p=="use"){ continue; } + palette = fn(palette, p, kwArgs[p]); + } + return palette; // dojox.color.Palette + }, + clone: function(){ + // summary: + // Clones the current palette. + return new dxc.Palette(this); // dojox.color.Palette + } + }); + +/*===== +dojox.color.Palette.__transformArgs = function(use, dr, dg, db, da, dc, dm, dy, dk, dh, ds, dv, dl){ + // summary: + // The keywords argument to be passed to the dojox.color.Palette.transform function. Note that + // while all arguments are optional, *some* arguments must be passed. The basic concept is that + // you pass a delta value for a specific aspect of a color model (or multiple aspects of the same + // color model); for instance, if you wish to transform a palette based on the HSV color model, + // you would pass one of "dh", "ds", or "dv" as a value. + // + // use: String? + // Specify the color model to use for the transformation. Can be "rgb", "rgba", "hsv", "hsl", "cmy", "cmyk". + // dr: Number? + // The delta to be applied to the red aspect of the RGB/RGBA color model. + // dg: Number? + // The delta to be applied to the green aspect of the RGB/RGBA color model. + // db: Number? + // The delta to be applied to the blue aspect of the RGB/RGBA color model. + // da: Number? + // The delta to be applied to the alpha aspect of the RGBA color model. + // dc: Number? + // The delta to be applied to the cyan aspect of the CMY/CMYK color model. + // dm: Number? + // The delta to be applied to the magenta aspect of the CMY/CMYK color model. + // dy: Number? + // The delta to be applied to the yellow aspect of the CMY/CMYK color model. + // dk: Number? + // The delta to be applied to the black aspect of the CMYK color model. + // dh: Number? + // The delta to be applied to the hue aspect of the HSL/HSV color model. + // ds: Number? + // The delta to be applied to the saturation aspect of the HSL/HSV color model. + // dl: Number? + // The delta to be applied to the luminosity aspect of the HSL color model. + // dv: Number? + // The delta to be applied to the value aspect of the HSV color model. + this.use = use; + this.dr = dr; + this.dg = dg; + this.db = db; + this.da = da; + this.dc = dc; + this.dm = dm; + this.dy = dy; + this.dk = dk; + this.dh = dh; + this.ds = ds; + this.dl = dl; + this.dv = dv; +} +dojox.color.Palette.__generatorArgs = function(base){ + // summary: + // The keyword arguments object used to create a palette based on a base color. + // + // base: dojo.Color + // The base color to be used to generate the palette. + this.base = base; +} +dojox.color.Palette.__analogousArgs = function(base, high, low){ + // summary: + // The keyword arguments object that is used to create a 5 color palette based on the + // analogous rules as implemented at http://kuler.adobe.com, using the HSV color model. + // + // base: dojo.Color + // The base color to be used to generate the palette. + // high: Number? + // The difference between the hue of the base color and the highest hue. In degrees, default is 60. + // low: Number? + // The difference between the hue of the base color and the lowest hue. In degrees, default is 18. + this.base = base; + this.high = high; + this.low = low; +} +dojox.color.Palette.__splitComplementaryArgs = function(base, da){ + // summary: + // The keyword arguments object used to create a palette based on the split complementary rules + // as implemented at http://kuler.adobe.com. + // + // base: dojo.Color + // The base color to be used to generate the palette. + // da: Number? + // The delta angle to be used to determine where the split for the complementary rules happen. + // In degrees, the default is 30. + this.base = base; + this.da = da; +} +=====*/ + lang.mixin(dxc.Palette, { + generators: { + analogous:function(/* dojox.color.Palette.__analogousArgs */args){ + // summary: + // Create a 5 color palette based on the analogous rules as implemented at + // http://kuler.adobe.com. + var high=args.high||60, // delta between base hue and highest hue (subtracted from base) + low=args.low||18, // delta between base hue and lowest hue (added to base) + base = lang.isString(args.base)?new dxc.Color(args.base):args.base, + hsv=base.toHsv(); + + // generate our hue angle differences + var h=[ + (hsv.h+low+360)%360, + (hsv.h+Math.round(low/2)+360)%360, + hsv.h, + (hsv.h-Math.round(high/2)+360)%360, + (hsv.h-high+360)%360 + ]; + + var s1=Math.max(10, (hsv.s<=95)?hsv.s+5:(100-(hsv.s-95))), + s2=(hsv.s>1)?hsv.s-1:21-hsv.s, + v1=(hsv.v>=92)?hsv.v-9:Math.max(hsv.v+9, 20), + v2=(hsv.v<=90)?Math.max(hsv.v+5, 20):(95+Math.ceil((hsv.v-90)/2)), + s=[ s1, s2, hsv.s, s1, s1 ], + v=[ v1, v2, hsv.v, v1, v2 ] + + return new dxc.Palette(arr.map(h, function(hue, i){ + return dxc.fromHsv(hue, s[i], v[i]); + })); // dojox.color.Palette + }, + + monochromatic: function(/* dojox.color.Palette.__generatorArgs */args){ + // summary: + // Create a 5 color palette based on the monochromatic rules as implemented at + // http://kuler.adobe.com. + var base = lang.isString(args.base)?new dxc.Color(args.base):args.base, + hsv = base.toHsv(); + + // figure out the saturation and value + var s1 = (hsv.s-30>9)?hsv.s-30:hsv.s+30, + s2 = hsv.s, + v1 = rangeDiff(hsv.v, 20, 100), + v2 = (hsv.v-20>20)?hsv.v-20:hsv.v+60, + v3 = (hsv.v-50>20)?hsv.v-50:hsv.v+30; + + return new dxc.Palette([ + dxc.fromHsv(hsv.h, s1, v1), + dxc.fromHsv(hsv.h, s2, v3), + base, + dxc.fromHsv(hsv.h, s1, v3), + dxc.fromHsv(hsv.h, s2, v2) + ]); // dojox.color.Palette + }, + + triadic: function(/* dojox.color.Palette.__generatorArgs */args){ + // summary: + // Create a 5 color palette based on the triadic rules as implemented at + // http://kuler.adobe.com. + var base = lang.isString(args.base)?new dxc.Color(args.base):args.base, + hsv = base.toHsv(); + + var h1 = (hsv.h+57+360)%360, + h2 = (hsv.h-157+360)%360, + s1 = (hsv.s>20)?hsv.s-10:hsv.s+10, + s2 = (hsv.s>90)?hsv.s-10:hsv.s+10, + s3 = (hsv.s>95)?hsv.s-5:hsv.s+5, + v1 = (hsv.v-20>20)?hsv.v-20:hsv.v+20, + v2 = (hsv.v-30>20)?hsv.v-30:hsv.v+30, + v3 = (hsv.v-30>70)?hsv.v-30:hsv.v+30; + + return new dxc.Palette([ + dxc.fromHsv(h1, s1, hsv.v), + dxc.fromHsv(hsv.h, s2, v2), + base, + dxc.fromHsv(h2, s2, v1), + dxc.fromHsv(h2, s3, v3) + ]); // dojox.color.Palette + }, + + complementary: function(/* dojox.color.Palette.__generatorArgs */args){ + // summary: + // Create a 5 color palette based on the complementary rules as implemented at + // http://kuler.adobe.com. + var base = lang.isString(args.base)?new dxc.Color(args.base):args.base, + hsv = base.toHsv(); + + var h1 = ((hsv.h*2)+137<360)?(hsv.h*2)+137:Math.floor(hsv.h/2)-137, + s1 = Math.max(hsv.s-10, 0), + s2 = rangeDiff(hsv.s, 10, 100), + s3 = Math.min(100, hsv.s+20), + v1 = Math.min(100, hsv.v+30), + v2 = (hsv.v>20)?hsv.v-30:hsv.v+30; + + return new dxc.Palette([ + dxc.fromHsv(hsv.h, s1, v1), + dxc.fromHsv(hsv.h, s2, v2), + base, + dxc.fromHsv(h1, s3, v2), + dxc.fromHsv(h1, hsv.s, hsv.v) + ]); // dojox.color.Palette + }, + + splitComplementary: function(/* dojox.color.Palette.__splitComplementaryArgs */args){ + // summary: + // Create a 5 color palette based on the split complementary rules as implemented at + // http://kuler.adobe.com. + var base = lang.isString(args.base)?new dxc.Color(args.base):args.base, + dangle = args.da || 30, + hsv = base.toHsv(); + + var baseh = ((hsv.h*2)+137<360)?(hsv.h*2)+137:Math.floor(hsv.h/2)-137, + h1 = (baseh-dangle+360)%360, + h2 = (baseh+dangle)%360, + s1 = Math.max(hsv.s-10, 0), + s2 = rangeDiff(hsv.s, 10, 100), + s3 = Math.min(100, hsv.s+20), + v1 = Math.min(100, hsv.v+30), + v2 = (hsv.v>20)?hsv.v-30:hsv.v+30; + + return new dxc.Palette([ + dxc.fromHsv(h1, s1, v1), + dxc.fromHsv(h1, s2, v2), + base, + dxc.fromHsv(h2, s3, v2), + dxc.fromHsv(h2, hsv.s, hsv.v) + ]); // dojox.color.Palette + }, + + compound: function(/* dojox.color.Palette.__generatorArgs */args){ + // summary: + // Create a 5 color palette based on the compound rules as implemented at + // http://kuler.adobe.com. + var base = lang.isString(args.base)?new dxc.Color(args.base):args.base, + hsv = base.toHsv(); + + var h1 = ((hsv.h*2)+18<360)?(hsv.h*2)+18:Math.floor(hsv.h/2)-18, + h2 = ((hsv.h*2)+120<360)?(hsv.h*2)+120:Math.floor(hsv.h/2)-120, + h3 = ((hsv.h*2)+99<360)?(hsv.h*2)+99:Math.floor(hsv.h/2)-99, + s1 = (hsv.s-40>10)?hsv.s-40:hsv.s+40, + s2 = (hsv.s-10>80)?hsv.s-10:hsv.s+10, + s3 = (hsv.s-25>10)?hsv.s-25:hsv.s+25, + v1 = (hsv.v-40>10)?hsv.v-40:hsv.v+40, + v2 = (hsv.v-20>80)?hsv.v-20:hsv.v+20, + v3 = Math.max(hsv.v, 20); + + return new dxc.Palette([ + dxc.fromHsv(h1, s1, v1), + dxc.fromHsv(h1, s2, v2), + base, + dxc.fromHsv(h2, s3, v3), + dxc.fromHsv(h3, s2, v2) + ]); // dojox.color.Palette + }, + + shades: function(/* dojox.color.Palette.__generatorArgs */args){ + // summary: + // Create a 5 color palette based on the shades rules as implemented at + // http://kuler.adobe.com. + var base = lang.isString(args.base)?new dxc.Color(args.base):args.base, + hsv = base.toHsv(); + + var s = (hsv.s==100 && hsv.v==0)?0:hsv.s, + v1 = (hsv.v-50>20)?hsv.v-50:hsv.v+30, + v2 = (hsv.v-25>=20)?hsv.v-25:hsv.v+55, + v3 = (hsv.v-75>=20)?hsv.v-75:hsv.v+5, + v4 = Math.max(hsv.v-10, 20); + + return new dxc.Palette([ + new dxc.fromHsv(hsv.h, s, v1), + new dxc.fromHsv(hsv.h, s, v2), + base, + new dxc.fromHsv(hsv.h, s, v3), + new dxc.fromHsv(hsv.h, s, v4) + ]); // dojox.color.Palette + } + }, + generate: function(/* String|dojox.color.Color */base, /* Function|String */type){ + // summary: + // Generate a new Palette using any of the named functions in + // dojox.color.Palette.generators or an optional function definition. Current + // generators include "analogous", "monochromatic", "triadic", "complementary", + // "splitComplementary", and "shades". + if(lang.isFunction(type)){ + return type({ base: base }); // dojox.color.Palette + } + else if(dxc.Palette.generators[type]){ + return dxc.Palette.generators[type]({ base: base }); // dojox.color.Palette + } + throw new Error("dojox.color.Palette.generate: the specified generator ('" + type + "') does not exist."); + } + }); + + return dxc.Palette; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/color/README b/js/dojo-release-1.7.2-src/dojox/color/README new file mode 100644 index 0000000..a65e11a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/README @@ -0,0 +1,41 @@ +------------------------------------------------------------------------------- +DojoX Color +------------------------------------------------------------------------------- +Version 0.9 +Release date: 10/20/2007 +------------------------------------------------------------------------------- +Project state: +dojox.color._base: production +dojox.color.Colorspace: experimental +dojox.color.Generator: beta +------------------------------------------------------------------------------- +Credits + Cal Henderson + Tom Trenka (ttrenka AT gmail.com) +------------------------------------------------------------------------------- +Project description + +Both a port of the older dojo.gfx.color work (Cal Henderson) as well as some +new additions (Generator, Tom Trenka). Everything is applied to an alias of +dojo.Color or dojo.color, so that you can just use dojox.color.Color instead +with extended methods. +------------------------------------------------------------------------------- +Dependencies: + +Depends on the Dojo Core, v1.0 +------------------------------------------------------------------------------- +Documentation + +See the API documentation. +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/color.js +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/color/* + +Install into the following directory structure: +/dojox/color/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/color/_base.js b/js/dojo-release-1.7.2-src/dojox/color/_base.js new file mode 100644 index 0000000..a826054 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/_base.js @@ -0,0 +1,196 @@ +define(["dojo/_base/kernel", "../main", "dojo/_base/lang", "dojo/_base/Color", "dojo/colors"], + function(dojo, dojox, lang, Color, colors){ + +var cx = lang.getObject("dojox.color", true); +/*===== cx = dojox.color =====*/ + +// alias all the dojo.Color mechanisms +cx.Color=Color; +cx.blend=Color.blendColors; +cx.fromRgb=Color.fromRgb; +cx.fromHex=Color.fromHex; +cx.fromArray=Color.fromArray; +cx.fromString=Color.fromString; + +// alias the dojo.colors mechanisms +cx.greyscale=colors.makeGrey; + +lang.mixin(cx,{ + fromCmy: function(/* Object|Array|int */cyan, /*int*/magenta, /*int*/yellow){ + // summary + // Create a dojox.color.Color from a CMY defined color. + // All colors should be expressed as 0-100 (percentage) + + if(lang.isArray(cyan)){ + magenta=cyan[1], yellow=cyan[2], cyan=cyan[0]; + } else if(lang.isObject(cyan)){ + magenta=cyan.m, yellow=cyan.y, cyan=cyan.c; + } + cyan/=100, magenta/=100, yellow/=100; + + var r=1-cyan, g=1-magenta, b=1-yellow; + return new Color({ r:Math.round(r*255), g:Math.round(g*255), b:Math.round(b*255) }); // dojox.color.Color + }, + + fromCmyk: function(/* Object|Array|int */cyan, /*int*/magenta, /*int*/yellow, /*int*/black){ + // summary + // Create a dojox.color.Color from a CMYK defined color. + // All colors should be expressed as 0-100 (percentage) + + if(lang.isArray(cyan)){ + magenta=cyan[1], yellow=cyan[2], black=cyan[3], cyan=cyan[0]; + } else if(lang.isObject(cyan)){ + magenta=cyan.m, yellow=cyan.y, black=cyan.b, cyan=cyan.c; + } + cyan/=100, magenta/=100, yellow/=100, black/=100; + var r,g,b; + r = 1-Math.min(1, cyan*(1-black)+black); + g = 1-Math.min(1, magenta*(1-black)+black); + b = 1-Math.min(1, yellow*(1-black)+black); + return new Color({ r:Math.round(r*255), g:Math.round(g*255), b:Math.round(b*255) }); // dojox.color.Color + }, + + fromHsl: function(/* Object|Array|int */hue, /* int */saturation, /* int */luminosity){ + // summary + // Create a dojox.color.Color from an HSL defined color. + // hue from 0-359 (degrees), saturation and luminosity 0-100. + + if(lang.isArray(hue)){ + saturation=hue[1], luminosity=hue[2], hue=hue[0]; + } else if(lang.isObject(hue)){ + saturation=hue.s, luminosity=hue.l, hue=hue.h; + } + saturation/=100; + luminosity/=100; + + while(hue<0){ hue+=360; } + while(hue>=360){ hue-=360; } + + var r, g, b; + if(hue<120){ + r=(120-hue)/60, g=hue/60, b=0; + } else if (hue<240){ + r=0, g=(240-hue)/60, b=(hue-120)/60; + } else { + r=(hue-240)/60, g=0, b=(360-hue)/60; + } + + r=2*saturation*Math.min(r, 1)+(1-saturation); + g=2*saturation*Math.min(g, 1)+(1-saturation); + b=2*saturation*Math.min(b, 1)+(1-saturation); + if(luminosity<0.5){ + r*=luminosity, g*=luminosity, b*=luminosity; + }else{ + r=(1-luminosity)*r+2*luminosity-1; + g=(1-luminosity)*g+2*luminosity-1; + b=(1-luminosity)*b+2*luminosity-1; + } + return new Color({ r:Math.round(r*255), g:Math.round(g*255), b:Math.round(b*255) }); // dojox.color.Color + } +}); + +cx.fromHsv = function(/* Object|Array|int */hue, /* int */saturation, /* int */value){ + // summary + // Create a dojox.color.Color from an HSV defined color. + // hue from 0-359 (degrees), saturation and value 0-100. + + if(lang.isArray(hue)){ + saturation=hue[1], value=hue[2], hue=hue[0]; + } else if (lang.isObject(hue)){ + saturation=hue.s, value=hue.v, hue=hue.h; + } + + if(hue==360){ hue=0; } + saturation/=100; + value/=100; + + var r, g, b; + if(saturation==0){ + r=value, b=value, g=value; + }else{ + var hTemp=hue/60, i=Math.floor(hTemp), f=hTemp-i; + var p=value*(1-saturation); + var q=value*(1-(saturation*f)); + var t=value*(1-(saturation*(1-f))); + switch(i){ + case 0:{ r=value, g=t, b=p; break; } + case 1:{ r=q, g=value, b=p; break; } + case 2:{ r=p, g=value, b=t; break; } + case 3:{ r=p, g=q, b=value; break; } + case 4:{ r=t, g=p, b=value; break; } + case 5:{ r=value, g=p, b=q; break; } + } + } + return new Color({ r:Math.round(r*255), g:Math.round(g*255), b:Math.round(b*255) }); // dojox.color.Color +}; +lang.extend(Color,{ + toCmy: function(){ + // summary + // Convert this Color to a CMY definition. + var cyan=1-(this.r/255), magenta=1-(this.g/255), yellow=1-(this.b/255); + return { c:Math.round(cyan*100), m:Math.round(magenta*100), y:Math.round(yellow*100) }; // Object + }, + + toCmyk: function(){ + // summary + // Convert this Color to a CMYK definition. + var cyan, magenta, yellow, black; + var r=this.r/255, g=this.g/255, b=this.b/255; + black = Math.min(1-r, 1-g, 1-b); + cyan = (1-r-black)/(1-black); + magenta = (1-g-black)/(1-black); + yellow = (1-b-black)/(1-black); + return { c:Math.round(cyan*100), m:Math.round(magenta*100), y:Math.round(yellow*100), b:Math.round(black*100) }; // Object + }, + + toHsl: function(){ + // summary + // Convert this Color to an HSL definition. + var r=this.r/255, g=this.g/255, b=this.b/255; + var min = Math.min(r, b, g), max = Math.max(r, g, b); + var delta = max-min; + var h=0, s=0, l=(min+max)/2; + if(l>0 && l<1){ + s = delta/((l<0.5)?(2*l):(2-2*l)); + } + if(delta>0){ + if(max==r && max!=g){ + h+=(g-b)/delta; + } + if(max==g && max!=b){ + h+=(2+(b-r)/delta); + } + if(max==b && max!=r){ + h+=(4+(r-g)/delta); + } + h*=60; + } + return { h:h, s:Math.round(s*100), l:Math.round(l*100) }; // Object + }, + + toHsv: function(){ + // summary + // Convert this Color to an HSV definition. + var r=this.r/255, g=this.g/255, b=this.b/255; + var min = Math.min(r, b, g), max = Math.max(r, g, b); + var delta = max-min; + var h = null, s = (max==0)?0:(delta/max); + if(s==0){ + h = 0; + }else{ + if(r==max){ + h = 60*(g-b)/delta; + }else if(g==max){ + h = 120 + 60*(b-r)/delta; + }else{ + h = 240 + 60*(r-g)/delta; + } + + if(h<0){ h+=360; } + } + return { h:h, s:Math.round(s*100), v:Math.round(max*100) }; // Object + } +}); + +return cx; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/color/tests/Palette.js b/js/dojo-release-1.7.2-src/dojox/color/tests/Palette.js new file mode 100644 index 0000000..b5b0e15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/tests/Palette.js @@ -0,0 +1,86 @@ +dojo.provide("dojox.color.tests.Palette"); +dojo.require("dojox.color.Palette"); + +var __p__, palette=function(){ + if(__p__) return __p__; + __p__=document.createElement("div"); + var s=__p__.style; + s.overflow="auto"; + s.padding="0 6px"; + // drop it in the test thing + var body=dojo.query("#testListContainer table tbody")[0]; + if(body){ + var tr=document.createElement("tr"); + var td=document.createElement("td"); + td.colSpan=4; + td.appendChild(__p__); + tr.appendChild(td); + body.appendChild(tr); + } + return __p__; +} + +var p = new dojox.color.Palette([ + "#ff0000", + "#ffff00", + "#ff00ff", + "#00ffff", + "#0000ff" +]); + +function displayIt(pal, title){ + var s='

                          '+title+'

                          '; + var cols=5, c=0; + dojo.forEach(pal.colors, function(item){ + s+=''; + console.log("item color is ", item.toHex()); + }); + palette().innerHTML += s + "
                           
                          "; +} + +tests.register("dojox.color.tests.Palette", [ + function testPalette(t){ + var p = new dojox.color.Palette([ + "#000000", + "#333333", + "#666666", + "#999999", + "#cccccc" + ]); + displayIt(p, "dojox.color.Palette"); + }, + + function testTransform(t){ + displayIt(p, "Transform: initial palette"); + var trans = p.transform({ + use: "hsv", + dh: 120, + dv: -40 + }); + displayIt(trans, "Transform dh:+120, dv: -40"); + + trans = p.transform({ + use: "cmyk", + dc: 30, + dk: 30 + }); + displayIt(trans, "Transform using CMYK dc:+30, dk: +30"); + + trans = p.transform({ + use: "rgba", + db: -100 + }); + displayIt(trans, "Transform using RGB db:-100"); + }, + + function testGenerators(t){ + var base = "#ff0000"; + displayIt(dojox.color.Palette.generate(base, "analogous"), "Generated analogous palette"); + displayIt(dojox.color.Palette.generate(base, "monochromatic"), "Generated monochromatic palette"); + displayIt(dojox.color.Palette.generate(base, "triadic"), "Generated triadic palette"); + displayIt(dojox.color.Palette.generate(base, "complementary"), "Generated complementary palette"); + displayIt(dojox.color.Palette.generate(base, "splitComplementary"), "Generated splitComplementary palette"); + displayIt(dojox.color.Palette.generate(base, "compound"), "Generated compound palette"); + displayIt(dojox.color.Palette.generate(base, "shades"), "Generated shades palette"); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/color/tests/_base.js b/js/dojo-release-1.7.2-src/dojox/color/tests/_base.js new file mode 100644 index 0000000..8d5f370 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/tests/_base.js @@ -0,0 +1,78 @@ +dojo.provide("dojox.color.tests._base"); +dojo.require("dojox.color"); + +/************************************************************ + * Note that some color translations are not exact, + * due to the need to round calculations in translation. + * + * These tests work with grey, the primary colors and + * one secondary color to ensure that extreme calculation + * is correct. + ************************************************************/ + +tests.register("dojox.color.tests._base", [ + function testStaticMethods(t){ + // fromCmy + t.assertEqual(dojox.color.fromCmy({ c:50, m:50, y:50}), new dojo.Color({ r:128, g:128, b:128 })); + t.assertEqual(dojox.color.fromCmy({ c:0, m:100, y:100}), new dojo.Color({ r:255, g:0, b:0 })); + t.assertEqual(dojox.color.fromCmy({ c:100, m:0, y:100}), new dojo.Color({ r:0, g:255, b:0 })); + t.assertEqual(dojox.color.fromCmy({ c:100, m:100, y:0}), new dojo.Color({ r:0, g:0, b:255 })); + t.assertEqual(dojox.color.fromCmy({ c:0, m:0, y:100}), new dojo.Color({ r:255, g:255, b:0 })); + + // fromCmyk + t.assertEqual(dojox.color.fromCmyk({ c:0, m:0, y:0, b:50}), new dojo.Color({ r:128, g:128, b:128 })); + t.assertEqual(dojox.color.fromCmyk({ c:0, m:100, y:100, b:0}), new dojo.Color({ r:255, g:0, b:0 })); + t.assertEqual(dojox.color.fromCmyk({ c:100, m:0, y:100, b:0}), new dojo.Color({ r:0, g:255, b:0 })); + t.assertEqual(dojox.color.fromCmyk({ c:100, m:100, y:0, b:0}), new dojo.Color({ r:0, g:0, b:255 })); + t.assertEqual(dojox.color.fromCmyk({ c:0, m:0, y:100, b:0}), new dojo.Color({ r:255, g:255, b:0 })); + + // fromHsl + t.assertEqual(dojox.color.fromHsl({ h:0, s:0, l:50}), new dojo.Color({ r:128, g:128, b:128 })); + t.assertEqual(dojox.color.fromHsl({ h:0, s:100, l:50}), new dojo.Color({ r:255, g:0, b:0 })); + t.assertEqual(dojox.color.fromHsl({ h:120, s:100, l:50}), new dojo.Color({ r:0, g:255, b:0 })); + t.assertEqual(dojox.color.fromHsl({ h:240, s:100, l:50}), new dojo.Color({ r:0, g:0, b:255 })); + t.assertEqual(dojox.color.fromHsl({ h:60, s:100, l:50}), new dojo.Color({ r:255, g:255, b:0 })); + + // fromHsv + t.assertEqual(dojox.color.fromHsv({ h:0, s:0, v:50}), new dojo.Color({ r:128, g:128, b:128 })); + t.assertEqual(dojox.color.fromHsv({ h:0, s:100, v:100}), new dojo.Color({ r:255, g:0, b:0 })); + t.assertEqual(dojox.color.fromHsv({ h:120, s:100, v:100}), new dojo.Color({ r:0, g:255, b:0 })); + t.assertEqual(dojox.color.fromHsv({ h:240, s:100, v:100}), new dojo.Color({ r:0, g:0, b:255 })); + t.assertEqual(dojox.color.fromHsv({ h:60, s:100, v:100}), new dojo.Color({ r:255, g:255, b:0 })); + }, + function testColorExtensions(t){ + var grey=new dojox.color.Color({ r:128, g:128, b:128 }); + var red=new dojox.color.Color({ r:255, g:0, b:0 }); + var green=new dojox.color.Color({ r:0, g:255, b:0 }); + var blue=new dojox.color.Color({ r:0, g:0, b:255 }); + var yellow=new dojox.color.Color({ r:255, g:255, b:0 }); + + // toCmy + t.assertEqual(grey.toCmy(), { c:50, m:50, y:50 }); + t.assertEqual(red.toCmy(), { c:0, m:100, y:100 }); + t.assertEqual(green.toCmy(), { c:100, m:0, y:100 }); + t.assertEqual(blue.toCmy(), { c:100, m:100, y:0 }); + t.assertEqual(yellow.toCmy(), { c:0, m:0, y:100 }); + + // toCmyk + t.assertEqual(grey.toCmyk(), { c:0, m:0, y:0, b:50 }); + t.assertEqual(red.toCmyk(), { c:0, m:100, y:100, b:0 }); + t.assertEqual(green.toCmyk(), { c:100, m:0, y:100, b:0 }); + t.assertEqual(blue.toCmyk(), { c:100, m:100, y:0, b:0 }); + t.assertEqual(yellow.toCmyk(), { c:0, m:0, y:100, b:0 }); + + // toHsl + t.assertEqual(grey.toHsl(), { h:0, s:0, l:50 }); + t.assertEqual(red.toHsl(), { h:0, s:100, l:50 }); + t.assertEqual(green.toHsl(), { h:120, s:100, l:50 }); + t.assertEqual(blue.toHsl(), { h:240, s:100, l:50 }); + t.assertEqual(yellow.toHsl(), { h:60, s:100, l:50 }); + + // toHsv + t.assertEqual(grey.toHsv(), { h:0, s:0, v:50 }); + t.assertEqual(red.toHsv(), { h:0, s:100, v:100 }); + t.assertEqual(green.toHsv(), { h:120, s:100, v:100 }); + t.assertEqual(blue.toHsv(), { h:240, s:100, v:100 }); + t.assertEqual(yellow.toHsv(), { h:60, s:100, v:100 }); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/color/tests/color.js b/js/dojo-release-1.7.2-src/dojox/color/tests/color.js new file mode 100644 index 0000000..03bc4fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/tests/color.js @@ -0,0 +1,10 @@ +dojo.provide("dojox.color.tests.color"); +dojo.require("dojox.color"); + +try{ + dojo.require("dojox.color.tests._base"); +// dojo.require("dojox.color.tests.Colorspace"); + dojo.require("dojox.color.tests.Palette"); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/color/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/color/tests/runTests.html new file mode 100644 index 0000000..9376e20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/color/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox.wire Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/cometd.js b/js/dojo-release-1.7.2-src/dojox/cometd.js new file mode 100644 index 0000000..ad541c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd.js @@ -0,0 +1,5 @@ +// stub loader for the cometd module since no implementation code is allowed to live in top-level files +dojo.provide("dojox.cometd"); +dojo.require("dojox.cometd._base"); +dojo.require("dojox.cometd.longPollTransport"); +dojo.require("dojox.cometd.callbackPollTransport"); diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/HttpChannels.js b/js/dojo-release-1.7.2-src/dojox/cometd/HttpChannels.js new file mode 100644 index 0000000..c350e2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/HttpChannels.js @@ -0,0 +1,32 @@ +dojo.provide("dojox.cometd.HttpChannels"); + +dojo.require("dojox.io.httpParse"); +dojo.require("dojox.cometd.RestChannels"); +// Note that cometd _base is _not_ required, this can run standalone, but ifyou want +// cometd functionality, you must explicitly load/require it elsewhere, and cometd._base +// MUST be loaded prior to HttpChannels ifyou use it. + +// summary: +// HttpChannels - An HTTP Based approach to Comet transport with full HTTP messaging +// semantics including REST. HttpChannels is exactly the same as RestChannels, loading HttpChannels simply ensures that http parsing +// capabilities are present for application/http messages + +// description: +// This can be used: +// 1. As a cometd transport +// 2. As an enhancement for the REST RPC service, to enable "live" data (real-time updates directly alter the data in indexes) +// 2a. With the JsonRestStore (which is driven by the REST RPC service), so this dojo.data has real-time data. Updates can be heard through the dojo.data notification API. +// 3. As a standalone transport. To use it as a standalone transport looks like this: +// | dojox.cometd.HttpChannels.open(); +// | dojox.cometd.HttpChannels.get("/myResource",{callback:function(){ +// | // this is called when the resource is first retrieved and any time the +// | // resource is changed in the future. This provides a means for retrieving a +// | // resource and subscribing to it in a single request +// | }); +// | dojox.cometd.HttpChannels.subscribe("/anotherResource",{callback:function(){ +// | // this is called when the resource is changed in the future +// | }); +// Channels HTTP can be configured to a different delays: +// | dojox.cometd.HttpChannels.autoReconnectTime = 60000; // reconnect after one minute +// +dojox.cometd.HttpChannels = dojox.cometd.RestChannels; diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/README b/js/dojo-release-1.7.2-src/dojox/cometd/README new file mode 100644 index 0000000..05a42a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/README @@ -0,0 +1,29 @@ +------------------------------------------------------------------------------- +Cometd (client) +------------------------------------------------------------------------------- +Version 0.4 +Release date: May 29, 2007 +------------------------------------------------------------------------------- +Project state: beta +------------------------------------------------------------------------------- +Project authors + Alex Russell (alex@dojotoolkit.org) + Greg Wilkins +------------------------------------------------------------------------------- +Project description + +Low-latency data transfer from servers to clients. dojox.cometd implements a +Bayeux protocol client for use with most Bayeux servers. See cometd.com for +details on Cometd or on the Bayeux protocol. +------------------------------------------------------------------------------- +Dependencies: + +Needs a cooperating Bayeux server +------------------------------------------------------------------------------- +Documentation + +See http://cometd.com +------------------------------------------------------------------------------- +Installation instructions + +Use this library with (preferably through) an existing Cometd server. diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/RestChannels.js b/js/dojo-release-1.7.2-src/dojox/cometd/RestChannels.js new file mode 100644 index 0000000..c4fe799 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/RestChannels.js @@ -0,0 +1,483 @@ +dojo.provide("dojox.cometd.RestChannels"); + +dojo.require("dojox.rpc.Client"); +dojo.require("dojo._base.url"); +dojo.requireIf(dojox.data && !!dojox.data.JsonRestStore,"dojox.data.restListener"); + +// Note that cometd _base is _not_ required, this can run standalone, but ifyou want +// cometd functionality, you must explicitly load/require it elsewhere, and cometd._base +// MUST be loaded prior to RestChannels ifyou use it. + +// summary: +// REST Channels - An HTTP/REST Based approach to Comet transport with full REST messaging +// semantics +// REST Channels is a efficient, reliable duplex transport for Comet + +// description: +// This can be used: +// 1. As a cometd transport +// 2. As an enhancement for the REST RPC service, to enable "live" data (real-time updates directly alter the data in indexes) +// 2a. With the JsonRestStore (which is driven by the REST RPC service), so this dojo.data has real-time data. Updates can be heard through the dojo.data notification API. +// 3. As a standalone transport. To use it as a standalone transport looks like this: +// | dojox.cometd.RestChannels.open(); +// | dojox.cometd.RestChannels.get("/myResource",{callback:function(){ +// | // this is called when the resource is first retrieved and any time the +// | // resource is changed in the future. This provides a means for retrieving a +// | // resource and subscribing to it in a single request +// | }); +// | dojox.cometd.RestChannels.subscribe("/anotherResource",{callback:function(){ +// | // this is called when the resource is changed in the future +// | }); +// Channels HTTP can be configured to a different delays: +// | dojox.cometd.RestChannels.defaultInstance.autoReconnectTime = 60000; // reconnect after one minute +// + +(function(){ + dojo.declare("dojox.cometd.RestChannels", null, { + constructor: function(options){ + // summary: + // Initiates the REST Channels protocol + // options: + // Keyword arguments: + // The *autoSubscribeRoot* parameter: + // When this is set, all REST service requests that have this + // prefix will be auto-subscribed. The default is '/' (all REST requests). + // The *url* parameter: + // This is the url to connect to for server-sent messages. The default + // is "/channels". + // The *autoReconnectTime* parameter: + // This is amount time to wait to reconnect with a connection is broken + // The *reloadDataOnReconnect* parameter: + // This indicates whether RestChannels should re-download data when a connection + // is restored (value of true), or if it should re-subscribe with retroactive subscriptions + // (Subscribe-Since header) using HEAD requests (value of false). The + // default is true. + dojo.mixin(this,options); + // If we have a Rest service available and we are auto subscribing, we will augment the Rest service + if(dojox.rpc.Rest && this.autoSubscribeRoot){ + // override the default Rest handler so we can add subscription requests + var defaultGet = dojox.rpc.Rest._get; + var self = this; + dojox.rpc.Rest._get = function(service, id){ + // when there is a REST get, we will intercept and add our own xhr handler + var defaultXhrGet = dojo.xhrGet; + dojo.xhrGet = function(r){ + var autoSubscribeRoot = self.autoSubscribeRoot; + return (autoSubscribeRoot && r.url.substring(0, autoSubscribeRoot.length) == autoSubscribeRoot) ? + self.get(r.url,r) : // auto-subscribe + defaultXhrGet(r); // plain XHR request + }; + + var result = defaultGet.apply(this,arguments); + dojo.xhrGet = defaultXhrGet; + return result; + }; + } + }, + absoluteUrl: function(baseUrl,relativeUrl){ + return new dojo._Url(baseUrl,relativeUrl)+''; + }, + acceptType: "application/rest+json,application/http;q=0.9,*/*;q=0.7", + subscriptions: {}, + subCallbacks: {}, + autoReconnectTime: 3000, + reloadDataOnReconnect: true, + sendAsJson: false, + url: '/channels', + autoSubscribeRoot: '/', + open: function(){ + // summary: + // Startup the transport (connect to the "channels" resource to receive updates from the server). + // + // description: + // Note that if there is no connection open, this is automatically called when you do a subscription, + // it is often not necessary to call this + // + this.started = true; + if(!this.connected){ + this.connectionId = dojox.rpc.Client.clientId; + var clientIdHeader = this.createdClientId ? 'Client-Id' : 'Create-Client-Id'; + this.createdClientId = true; + var headers = {Accept:this.acceptType}; + headers[clientIdHeader] = this.connectionId; + var dfd = dojo.xhrPost({headers:headers, url: this.url, noStatus: true}); + var self = this; + this.lastIndex = 0; + var onerror, onprogress = function(data){ // get all the possible event handlers + if(typeof dojo == 'undefined'){ + return null;// this can be called after dojo is unloaded, just do nothing in that case + } + if(xhr && xhr.status > 400){ + return onerror(true); + } + if(typeof data == 'string'){ + data = data.substring(self.lastIndex); + } + var contentType = xhr && (xhr.contentType || xhr.getResponseHeader("Content-Type")) || (typeof data != 'string' && "already json"); + var error = self.onprogress(xhr,data,contentType); + if(error){ + if(onerror()){ + return new Error(error); + } + } + if(!xhr || xhr.readyState==4){ + xhr = null; + if(self.connected){ + self.connected = false; + self.open(); + } + } + return data; + }; + onerror = function(error){ + if(xhr && xhr.status == 409){ + // a 409 indicates that there is a multiple connections, and we need to poll + console.log("multiple tabs/windows open, polling"); + self.disconnected(); + return null; + } + self.createdClientId = false; + self.disconnected(); + return error; + }; + dfd.addCallbacks(onprogress,onerror); + var xhr = dfd.ioArgs.xhr; // this may not exist if we are not using XHR, but an alternate XHR plugin + if(xhr){ + // if we are doing a monitorable XHR, we want to listen to streaming events + xhr.onreadystatechange = function(){ + var responseText; + try{ + if(xhr.readyState == 3){// only for progress, the deferred object will handle the finished responses + self.readyState = 3; + responseText = xhr.responseText; + } + } catch(e){ + } + if(typeof responseText=='string'){ + onprogress(responseText); + } + } + } + + + if(window.attachEvent){// IE needs a little help with cleanup + window.attachEvent("onunload",function(){ + self.connected= false; + if(xhr){ + xhr.abort(); + } + }); + } + + this.connected = true; + } + }, + _send: function(method,args,data){ + // fire an XHR with appropriate modification for JSON handling + if(this.sendAsJson){ + // send use JSON Messaging + args.postData = dojo.toJson({ + target:args.url, + method:method, + content: data, + params:args.content, + subscribe:args.headers["Subscribe"] + }); + args.url = this.url; + method = "POST"; + }else{ + args.postData = dojo.toJson(data); + } + return dojo.xhr(method,args,args.postData); + }, + subscribe: function(/*String*/channel, /*dojo.__XhrArgs?*/args){ + // summary: + // Subscribes to a channel/uri, and returns a dojo.Deferred object for the response from + // the subscription request + // + // channel: + // the uri for the resource you want to monitor + // + // args: + // See dojo.xhr + // + // headers: + // These are the headers to be applied to the channel subscription request + // + // callback: + // This will be called when a event occurs for the channel + // The callback will be called with a single argument: + // | callback(message) + // where message is an object that follows the XHR API: + // status : Http status + // statusText : Http status text + // getAllResponseHeaders() : The response headers + // getResponseHeaders(headerName) : Retrieve a header by name + // responseText : The response body as text + // with the following additional Bayeux properties + // data : The response body as JSON + // channel : The channel/url of the response + args = args || {}; + args.url = this.absoluteUrl(this.url, channel); + if(args.headers){ + // FIXME: combining Ranges with notifications is very complicated, we will save that for a future version + delete args.headers.Range; + } + var oldSince = this.subscriptions[channel]; + var method = args.method || "HEAD"; // HEAD is the default for a subscription + var since = args.since; + var callback = args.callback; + var headers = args.headers || (args.headers = {}); + this.subscriptions[channel] = since || oldSince || 0; + var oldCallback = this.subCallbacks[channel]; + if(callback){ + this.subCallbacks[channel] = oldCallback ? function(m){ + oldCallback(m); + callback(m); + } : callback; + } + if(!this.connected){ + this.open(); + } + if(oldSince === undefined || oldSince != since){ + headers["Cache-Control"] = "max-age=0"; + since = typeof since == 'number' ? new Date(since).toUTCString() : since; + if(since){ + headers["Subscribe-Since"] = since; + } + headers["Subscribe"] = args.unsubscribe ? 'none' : '*'; + var dfd = this._send(method,args); + + var self = this; + dfd.addBoth(function(result){ + var xhr = dfd.ioArgs.xhr; + if(!(result instanceof Error)){ + if(args.confirmation){ + args.confirmation(); + } + } + if(xhr && xhr.getResponseHeader("Subscribed") == "OK"){ + var lastMod = xhr.getResponseHeader('Last-Modified'); + + if(xhr.responseText){ + self.subscriptions[channel] = lastMod || new Date().toUTCString(); + }else{ + return null; // don't process the response, the response will be received in the main channels response + } + }else if(xhr && !(result instanceof Error)){ // if the server response was successful and we have access to headers but it does indicate a subcription was successful, that means it is did not accept the subscription + delete self.subscriptions[channel]; + } + if(!(result instanceof Error)){ + var message = { + responseText:xhr && xhr.responseText, + channel:channel, + getResponseHeader:function(name){ + return xhr.getResponseHeader(name); + }, + getAllResponseHeaders:function(){ + return xhr.getAllResponseHeaders(); + }, + result: result + }; + if(self.subCallbacks[channel]){ + self.subCallbacks[channel](message); // call with the fake xhr object + } + }else{ + if(self.subCallbacks[channel]){ + self.subCallbacks[channel](xhr); // call with the actual xhr object + } + } + return result; + }); + return dfd; + } + return null; + }, + publish: function(channel,data){ + // summary: + // Publish an event. + // description: + // This does a simple POST operation to the provided URL, + // POST is the semantic equivalent of publishing a message within REST/Channels + // channel: + // Channel/resource path to publish to + // data: + // data to publish + return this._send("POST",{url:channel,contentType : 'application/json'},data); + }, + _processMessage: function(message){ + message.event = message.event || message.getResponseHeader('Event'); + if(message.event=="connection-conflict"){ + return "conflict"; // indicate an error + } + try{ + message.result = message.result || dojo.fromJson(message.responseText); + } + catch(e){} + var self = this; + var loc = message.channel = new dojo._Url(this.url, message.source || message.getResponseHeader('Content-Location'))+'';//for cometd + if(loc in this.subscriptions && message.getResponseHeader){ + this.subscriptions[loc] = message.getResponseHeader('Last-Modified'); + } + if(this.subCallbacks[loc]){ + setTimeout(function(){ //give it it's own stack + self.subCallbacks[loc](message); + },0); + } + this.receive(message); + return null; + }, + onprogress: function(xhr,data,contentType){ + // internal XHR progress handler + if(!contentType || contentType.match(/application\/rest\+json/)){ + var size = data.length; + data = data.replace(/^\s*[,\[]?/,'['). // must start with a opening bracket + replace(/[,\]]?\s*$/,']'); // and end with a closing bracket + try{ + // if this fails, it probably means we have an incomplete JSON object + var xhrs = dojo.fromJson(data); + this.lastIndex += size; + } + catch(e){ + } + }else if(dojox.io && dojox.io.httpParse && contentType.match(/application\/http/)){ + // do HTTP tunnel parsing + var topHeaders = ''; + if(xhr && xhr.getAllResponseHeaders){ + // mixin/inherit headers from the container response + topHeaders = xhr.getAllResponseHeaders(); + } + xhrs = dojox.io.httpParse(data,topHeaders,xhr.readyState != 4); + }else if(typeof data == "object"){ + xhrs = data; + } + if(xhrs){ + for(var i = 0;i < xhrs.length;i++){ + if(this._processMessage(xhrs[i])){ + return "conflict"; + } + } + return null; + } + if(!xhr){ + //no streaming and we didn't get any message, must be an error + return "error"; + } + if(xhr.readyState != 4){ // we only want finished responses here if we are not streaming + return null; + } + if(xhr.__proto__){// firefox uses this property, so we create an instance to shadow this property + xhr = {channel:"channel",__proto__:xhr}; + } + return this._processMessage(xhr); + + }, + + get: function(/*String*/channel, /*dojo.__XhrArgs?*/args){ + // summary: + // GET the initial value of the resource and subscribe to it + // See subscribe for parameter values + (args = args || {}).method = "GET"; + return this.subscribe(channel,args); + }, + receive: function(message){ + // summary: + // Called when a message is received from the server + // message: + // A cometd/XHR message + if(dojox.data && dojox.data.restListener){ + dojox.data.restListener(message); + } + }, + disconnected: function(){ + // summary: + // called when our channel gets disconnected + var self = this; + if(this.connected){ + this.connected = false; + if(this.started){ // if we are started, we shall try to reconnect + setTimeout(function(){ // auto reconnect + // resubscribe to our current subscriptions + var subscriptions = self.subscriptions; + self.subscriptions = {}; + for(var i in subscriptions){ + if(self.reloadDataOnReconnect && dojox.rpc.JsonRest){ + // do a reload of the resource + delete dojox.rpc.Rest._index[i]; + dojox.rpc.JsonRest.fetch(i); + }else{ + self.subscribe(i,{since:subscriptions[i]}); + } + } + self.open(); + }, this.autoReconnectTime); + } + } + }, + unsubscribe: function(/*String*/channel, /*dojo.__XhrArgs?*/args){ + // summary: + // unsubscribes from the resource + // See subscribe for parameter values + + args = args || {}; + args.unsubscribe = true; + this.subscribe(channel,args); // change the time frame to after 5000AD + }, + disconnect: function(){ + // summary: + // disconnect from the server + this.started = false; + this.xhr.abort(); + } + }); + var Channels = dojox.cometd.RestChannels.defaultInstance = new dojox.cometd.RestChannels(); + if(dojox.cometd.connectionTypes){ + // register as a dojox.cometd transport and wire everything for cometd handling + // below are the necessary adaptions for cometd + Channels.startup = function(data){ // must be able to handle objects or strings + Channels.open(); + this._cometd._deliver({channel:"/meta/connect",successful:true}); // tell cometd we are connected so it can proceed to send subscriptions, even though we aren't yet + + }; + Channels.check = function(types, version, xdomain){ + for(var i = 0; i< types.length; i++){ + if(types[i] == "rest-channels"){ + return !xdomain; + } + } + return false; + }; + Channels.deliver = function(message){ + // nothing to do + }; + dojo.connect(this,"receive",null,function(message){ + message.data = message.result; + this._cometd._deliver(message); + }); + Channels.sendMessages = function(messages){ + for(var i = 0; i < messages.length; i++){ + var message = messages[i]; + var channel = message.channel; + var cometd = this._cometd; + var args = { + confirmation: function(){ // send a confirmation back to cometd + cometd._deliver({channel:channel,successful:true}); + } + }; + if(channel == '/meta/subscribe'){ + this.subscribe(message.subscription,args); + }else if(channel == '/meta/unsubscribe'){ + this.unsubscribe(message.subscription,args); + }else if(channel == '/meta/connect'){ + args.confirmation(); + }else if(channel == '/meta/disconnect'){ + Channels.disconnect(); + args.confirmation(); + }else if(channel.substring(0,6) != '/meta/'){ + this.publish(channel,message.data); + } + } + }; + dojox.cometd.connectionTypes.register("rest-channels", Channels.check, Channels,false,true); + } +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/_base.js b/js/dojo-release-1.7.2-src/dojox/cometd/_base.js new file mode 100644 index 0000000..7190c4b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/_base.js @@ -0,0 +1,754 @@ +dojo.provide("dojox.cometd._base"); +dojo.require("dojo.AdapterRegistry"); + + +/* + * this file defines Comet protocol client. Actual message transport is + * deferred to one of several connection type implementations. The default is a + * long-polling implementation. A single global object named "dojox.cometd" is + * used to mediate for these connection types in order to provide a stable + * interface. + * + * extensions modules may be loaded (eg "dojox.cometd.timestamp", that use + * the cometd._extendInList and cometd._extendOutList fields to provide functions + * that extend and handling incoming and outgoing messages. + * + * By default the long-polling and callback-polling transports will be required. + * If specific or alternative transports are required, then they can be directly + * loaded. For example dojo.require('dojox.cometd.longPollTransportJsonEncoded') + * will load cometd with only the json encoded variant of the long polling transport. + */ + +dojox.cometd = { + Connection: function(prefix){ // This constructor is stored as dojox.cometd.Connection + // summary + // This constructor is used to create new cometd connections. Generally, you should use + // one cometd connection for each server you connect to. A default connection instance is + // created at dojox.cometd. + // To connect to a new server you can create an instance like: + // var cometd = new dojox.cometd.Connection("/otherServer"); + // cometd.init("http://otherServer.com/cometd"); + // + // prefix is the prefix for all the events that are published in the Dojo pub/sub system. + // You must include this prefix, and it should start with a slash like "/myprefix". + + // cometd states: + // unconnected, handshaking, connecting, connected, disconnected + dojo.mixin(this, { + prefix: prefix, + _status: "unconnected", + _handshook: false, + _initialized: false, + _polling: false, + + expectedNetworkDelay: 10000, // expected max network delay + connectTimeout: 0, // If set, used as ms to wait for a connect response and sent as the advised timeout + + version: "1.0", + minimumVersion: "0.9", + clientId: null, + messageId: 0, + batch: 0, + + _isXD: false, + handshakeReturn: null, + currentTransport: null, + url: null, + lastMessage: null, + _messageQ: [], + handleAs: "json", + _advice: {}, + _backoffInterval: 0, + _backoffIncrement: 1000, + _backoffMax: 60000, + _deferredSubscribes: {}, + _deferredUnsubscribes: {}, + _subscriptions: [], + _extendInList: [], // List of functions invoked before delivering messages + _extendOutList: [] // List of functions invoked before sending messages + + }); + + this.state = function() { + return this._status; + } + + this.init = function( /*String*/ root, + /*Object?*/ props, + /*Object?*/ bargs){ // return: dojo.Deferred + // summary: + // Initialize the cometd implementation of the Bayeux protocol + // description: + // Initialize the cometd implementation of the Bayeux protocol by + // sending a handshake message. The cometd state will be changed to CONNECTING + // until a handshake response is received and the first successful connect message + // has returned. + // The protocol state changes may be monitored + // by subscribing to the dojo topic "/prefix/meta" (typically "/cometd/meta") where + // events are published in the form + // {cometd:this,action:"handshake",successful:true,state:this.state()} + // root: + // The URL of the cometd server. If the root is absolute, the host + // is examined to determine if xd transport is needed. Otherwise the + // same domain is assumed. + // props: + // An optional object that is used as the basis of the handshake message + // bargs: + // An optional object of bind args mixed in with the send of the handshake + // example: + // | dojox.cometd.init("/cometd"); + // | dojox.cometd.init("http://xdHost/cometd",{ext:{user:"fred",pwd:"secret"}}); + + // FIXME: if the root isn't from the same host, we should automatically + // try to select an XD-capable transport + props = props || {}; + // go ask the short bus server what we can support + props.version = this.version; + props.minimumVersion = this.minimumVersion; + props.channel = "/meta/handshake"; + props.id = "" + this.messageId++; + + this.url = root || dojo.config["cometdRoot"]; + if(!this.url){ + throw "no cometd root"; + return null; + } + + // Are we x-domain? borrowed from dojo.uri.Uri in lieu of fixed host and port properties + var regexp = "^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"; + var parts = ("" + window.location).match(new RegExp(regexp)); + if(parts[4]){ + var tmp = parts[4].split(":"); + var thisHost = tmp[0]; + var thisPort = tmp[1]||"80"; // FIXME: match 443 + + parts = this.url.match(new RegExp(regexp)); + if(parts[4]){ + tmp = parts[4].split(":"); + var urlHost = tmp[0]; + var urlPort = tmp[1]||"80"; + this._isXD = ((urlHost != thisHost)||(urlPort != thisPort)); + } + } + + if(!this._isXD){ + props.supportedConnectionTypes = dojo.map(dojox.cometd.connectionTypes.pairs, "return item[0]"); + } + + props = this._extendOut(props); + + var bindArgs = { + url: this.url, + handleAs: this.handleAs, + content: { "message": dojo.toJson([props]) }, + load: dojo.hitch(this,function(msg){ + this._backon(); + this._finishInit(msg); + }), + error: dojo.hitch(this,function(e){ + this._backoff(); + this._finishInit(e); + }), + timeout: this.expectedNetworkDelay + }; + + if(bargs){ + dojo.mixin(bindArgs, bargs); + } + this._props = props; + for(var tname in this._subscriptions){ + for(var sub in this._subscriptions[tname]){ + if(this._subscriptions[tname][sub].topic){ + dojo.unsubscribe(this._subscriptions[tname][sub].topic); + } + } + } + this._messageQ = []; + this._subscriptions = []; + this._initialized = true; + this._status = "handshaking"; + this.batch = 0; + this.startBatch(); + + var r; + // if xdomain, then we assume jsonp for handshake + if(this._isXD){ + bindArgs.callbackParamName = "jsonp"; + r = dojo.io.script.get(bindArgs); + }else{ + r = dojo.xhrPost(bindArgs); + } + return r; + } + + this.publish = function(/*String*/ channel, /*Object*/ data, /*Object?*/ props){ + // summary: + // publishes the passed message to the cometd server for delivery + // on the specified topic + // channel: + // the destination channel for the message + // data: + // a JSON object containing the message "payload" + // properties: + // Optional. Other meta-data to be mixed into the top-level of the + // message + var message = { + data: data, + channel: channel + }; + if(props){ + dojo.mixin(message, props); + } + this._sendMessage(message); + } + + + this.subscribe = function( /*String */ channel, + /*Object */ objOrFunc, + /*String */ funcName, + /*Object?*/ props){ // return: dojo.Deferred + // summary: + // inform the server of this client's interest in channel + // description: + // `dojox.cometd.subscribe()` handles all the hard work of telling + // the server that we want to be notified when events are + // published on a particular topic. `subscribe` accepts a function + // to handle messages and returns a `dojo.Deferred` object which + // has an extra property added to it which makes it suitable for + // passing to `dojox.cometd.unsubscribe()` as a "subscription + // handle" (much like the handle object that `dojo.connect()` + // produces and which `dojo.disconnect()` expects). + // + // Note that of a subscription is registered before a connection + // with the server is established, events sent before the + // connection is established will not be delivered to this client. + // The deferred object which `subscribe` returns will callback + // when the server successfuly acknolwedges receipt of our + // "subscribe" request. + // channel: + // name of the cometd channel to subscribe to + // objOrFunc: + // an object scope for funcName or the name or reference to a + // function to be called when messages are delivered to the + // channel + // funcName: + // the second half of the objOrFunc/funcName pair for identifying + // a callback function to notifiy upon channel message delivery + // example: + // Simple subscribe use-case + // | dojox.cometd.init("http://myserver.com:8080/cometd"); + // | // log out all incoming messages on /foo/bar + // | dojox.cometd.subscribe("/foo/bar", console, "debug"); + // example: + // Subscribe before connection is initialized + // | dojox.cometd.subscribe("/foo/bar", console, "debug"); + // | dojox.cometd.init("http://myserver.com:8080/cometd"); + // example: + // Subscribe an unsubscribe + // | dojox.cometd.init("http://myserver.com:8080/cometd"); + // | var h = dojox.cometd.subscribe("/foo/bar", console, "debug"); + // | dojox.cometd.unsubscribe(h); + // example: + // Listen for successful subscription: + // | dojox.cometd.init("http://myserver.com:8080/cometd"); + // | var h = dojox.cometd.subscribe("/foo/bar", console, "debug"); + // | h.addCallback(function(){ + // | console.debug("subscription to /foo/bar established"); + // | }); + + props = props||{}; + if(objOrFunc){ + var tname = prefix + channel; + var subs = this._subscriptions[tname]; + if(!subs || subs.length == 0){ + subs = []; + props.channel = "/meta/subscribe"; + props.subscription = channel; + this._sendMessage(props); + + var _ds = this._deferredSubscribes; + if(_ds[channel]){ + _ds[channel].cancel(); + delete _ds[channel]; + } + _ds[channel] = new dojo.Deferred(); + } + + for(var i in subs){ + if(subs[i].objOrFunc === objOrFunc && (!subs[i].funcName&&!funcName||subs[i].funcName==funcName) ){ + return null; + } + } + + var topic = dojo.subscribe(tname, objOrFunc, funcName); + subs.push({ + topic: topic, + objOrFunc: objOrFunc, + funcName: funcName + }); + this._subscriptions[tname] = subs; + } + var ret = this._deferredSubscribes[channel] || {}; + ret.args = dojo._toArray(arguments); + return ret; // dojo.Deferred + } + + this.unsubscribe = function( /*String*/ channel, + /*Object?*/ objOrFunc, + /*String?*/ funcName, + /*Object?*/ props){ + // summary: + // inform the server of this client's disinterest in channel + // channel: + // name of the cometd channel to unsubscribe from + // objOrFunc: + // an object scope for funcName or the name or reference to a + // function to be called when messages are delivered to the + // channel. If null then all subscribers to the channel are unsubscribed. + // funcName: + // the second half of the objOrFunc/funcName pair for identifying + // a callback function to notifiy upon channel message delivery + + if( + (arguments.length == 1) && + (!dojo.isString(channel)) && + (channel.args) + ){ + // it's a subscription handle, unroll + return this.unsubscribe.apply(this, channel.args); + } + + var tname = prefix + channel; + var subs = this._subscriptions[tname]; + if(!subs || subs.length==0){ + return null; + } + + var s=0; + for(var i in subs){ + var sb = subs[i]; + if((!objOrFunc) || + ( + sb.objOrFunc===objOrFunc && + (!sb.funcName && !funcName || sb.funcName==funcName) + ) + ){ + dojo.unsubscribe(subs[i].topic); + delete subs[i]; + }else{ + s++; + } + } + + if(s == 0){ + props = props || {}; + props.channel = "/meta/unsubscribe"; + props.subscription = channel; + delete this._subscriptions[tname]; + this._sendMessage(props); + this._deferredUnsubscribes[channel] = new dojo.Deferred(); + if(this._deferredSubscribes[channel]){ + this._deferredSubscribes[channel].cancel(); + delete this._deferredSubscribes[channel]; + } + } + return this._deferredUnsubscribes[channel]; // dojo.Deferred + } + + + this.disconnect = function(){ + // summary: + // Disconnect from the server. + // description: + // Disconnect from the server by sending a disconnect message + // example: + // | dojox.cometd.disconnect(); + + for(var tname in this._subscriptions){ + for(var sub in this._subscriptions[tname]){ + if(this._subscriptions[tname][sub].topic){ + dojo.unsubscribe(this._subscriptions[tname][sub].topic); + } + } + } + this._subscriptions = []; + this._messageQ = []; + if(this._initialized && this.currentTransport){ + this._initialized=false; + this.currentTransport.disconnect(); + } + if(!this._polling) { + this._publishMeta("connect",false); + } + this._initialized=false; + this._handshook=false; + this._status = "disconnected"; //should be disconnecting, but we ignore the reply to this message + this._publishMeta("disconnect",true); + } + + + // public extension points + + this.subscribed = function( /*String*/channel, /*Object*/message){ } + + this.unsubscribed = function(/*String*/channel, /*Object*/message){ } + + + // private methods (TODO name all with leading _) + + this.tunnelInit = function(childLocation, childDomain){ + // placeholder - replaced by _finishInit + } + + this.tunnelCollapse = function(){ + // placeholder - replaced by _finishInit + } + + this._backoff = function(){ + if(!this._advice){ + this._advice={reconnect:"retry",interval:0}; + }else if(!this._advice.interval){ + this._advice.interval = 0; + } + + if(this._backoffInterval < this._backoffMax){ + this._backoffInterval += this._backoffIncrement; + } + } + + this._backon = function(){ + this._backoffInterval=0; + } + + this._interval = function(){ + var i = this._backoffInterval + (this._advice ? (this._advice.interval ? this._advice.interval : 0) : 0); + if (i>0){ + console.log("Retry in interval+backoff=" + this._advice.interval + "+" + this._backoffInterval+"="+i+"ms"); + } + return i; + } + + this._publishMeta = function(action,successful,props){ + try { + var meta = {cometd:this,action:action,successful:successful,state:this.state()}; + if (props){ + dojo.mixin(meta, props); + } + dojo.publish(this.prefix + "/meta", [meta]); + } catch(e) { + console.log(e); + } + } + + this._finishInit = function(data){ + // summary: + // Handle the handshake return from the server and initialize + // connection if all is OK + + if(this._status!="handshaking") {return;} + + + var wasHandshook = this._handshook; + var successful = false; + var metaMsg = {}; + + if (data instanceof Error) { + dojo.mixin(metaMsg,{ + reestablish:false, + failure: true, + error: data, + advice: this._advice + }); + } else { + data = data[0]; + data = this._extendIn(data); + this.handshakeReturn = data; + // remember any advice + if(data["advice"]){ + this._advice = data.advice; + } + + successful = data.successful ? data.successful : false; + + // check version + if(data.version < this.minimumVersion){ + if (console.log) + console.log("cometd protocol version mismatch. We wanted", this.minimumVersion, "but got", data.version); + successful=false; + this._advice.reconnect="none"; + } + dojo.mixin(metaMsg,{reestablish: successful && wasHandshook, response:data}); + } + + this._publishMeta("handshake",successful,metaMsg); + //in the meta listeners, disconnect() may have been called, so recheck it now to + //prevent resends or continuing with initializing the protocol + if(this._status!="handshaking") {return;} + + // If all OK + if(successful){ + this._status = "connecting"; + this._handshook = true; + // pick a transport + this.currentTransport = dojox.cometd.connectionTypes.match( + data.supportedConnectionTypes, + data.version, + this._isXD + ); + var transport = this.currentTransport; + // initialize the transport + transport._cometd = this; + transport.version = data.version; + this.clientId = data.clientId; + this.tunnelInit = transport.tunnelInit && dojo.hitch(transport, "tunnelInit"); + this.tunnelCollapse = transport.tunnelCollapse && dojo.hitch(transport, "tunnelCollapse"); + transport.startup(data); + }else{ + // If there is a problem follow advice + if(!this._advice || this._advice["reconnect"] != "none"){ + setTimeout(dojo.hitch(this, "init", this.url, this._props), this._interval()); + } + } + } + + // FIXME: lots of repeated code...why? + this._extendIn = function(message){ + // summary: Handle extensions for inbound messages + dojo.forEach(dojox.cometd._extendInList, function(f){ + message = f(message) || message; + }); + return message; + } + + this._extendOut = function(message){ + // summary: Handle extensions for inbound messages + dojo.forEach(dojox.cometd._extendOutList, function(f){ + message = f(message) || message; + }); + return message; + } + + this.deliver = function(messages){ + dojo.forEach(messages, this._deliver, this); + return messages; + } + + this._deliver = function(message){ + // dipatch events along the specified path + + message = this._extendIn(message); + + if(!message["channel"]){ + if(message["success"] !== true){ + return; + } + } + this.lastMessage = message; + + if(message.advice){ + this._advice = message.advice; // TODO maybe merge? + } + + // check to see if we got a /meta channel message that we care about + var deferred=null; + if( (message["channel"]) && + (message.channel.length > 5) && + (message.channel.substr(0, 5) == "/meta")){ + // check for various meta topic actions that we need to respond to + switch(message.channel){ + case "/meta/connect": + var metaMsg = {response: message}; + if(message.successful) { + if (this._status != "connected"){ + this._status = "connected"; + this.endBatch(); + } + } + + if(this._initialized){ + this._publishMeta("connect",message.successful, metaMsg); + } + break; + case "/meta/subscribe": + deferred = this._deferredSubscribes[message.subscription]; + try + { + if(!message.successful){ + if(deferred){ + deferred.errback(new Error(message.error)); + } + this.currentTransport.cancelConnect(); + return; + } + if(deferred){ + deferred.callback(true); + } + this.subscribed(message.subscription, message); + } catch(e) { + log.warn(e); + } + break; + case "/meta/unsubscribe": + deferred = this._deferredUnsubscribes[message.subscription]; + try + { + if(!message.successful){ + if(deferred){ + deferred.errback(new Error(message.error)); + } + this.currentTransport.cancelConnect(); + return; + } + if(deferred){ + deferred.callback(true); + } + this.unsubscribed(message.subscription, message); + } catch(e) { + log.warn(e); + } + break; + default: + if(message.successful && !message.successful){ + this.currentTransport.cancelConnect(); + return; + } + } + } + + // send the message down for processing by the transport + this.currentTransport.deliver(message); + + if(message.data){ + // dispatch the message to any locally subscribed listeners + try{ + var messages = [message]; + + // Determine target topic + var tname = prefix + message.channel; + + // Deliver to globs that apply to target topic + var tnameParts = message.channel.split("/"); + var tnameGlob = prefix; + for (var i = 1; i < tnameParts.length - 1; i++){ + dojo.publish(tnameGlob + "/**", messages); + tnameGlob += "/" + tnameParts[i]; + } + dojo.publish(tnameGlob + "/**", messages); + dojo.publish(tnameGlob + "/*", messages); + + // deliver to target topic + dojo.publish(tname,messages); + }catch(e){ + console.log(e); + } + } + } + + this._sendMessage = function(/* object */ message){ + if(this.currentTransport && !this.batch){ + return this.currentTransport.sendMessages([message]); + }else{ + this._messageQ.push(message); + return null; + } + } + + this.startBatch = function(){ + this.batch++; + } + + this.endBatch = function(){ + if(--this.batch <= 0 && this.currentTransport && this._status == "connected"){ + this.batch = 0; + var messages = this._messageQ; + this._messageQ = []; + if(messages.length > 0){ + this.currentTransport.sendMessages(messages); + } + } + } + + this._onUnload = function(){ + // make this the last of the onUnload method + dojo.addOnUnload(dojox.cometd, "disconnect"); + } + + this._connectTimeout = function(){ + // summary: Return the connect timeout in ms, calculated as the minimum of the advised timeout + // and the configured timeout. Else 0 to indicate no client side timeout + var advised=0; + if(this._advice && this._advice.timeout && this.expectedNetworkDelay > 0){ + advised = this._advice.timeout + this.expectedNetworkDelay; + } + + if(this.connectTimeout > 0 && this.connectTimeout < advised){ + return this.connectTimeout; + } + + return advised; + } + }, + // connectionTypes are shared by all cometd Connection. + connectionTypes : new dojo.AdapterRegistry(true) +} + +// create the default instance +dojox.cometd.Connection.call(dojox.cometd,"/cometd"); + +/* + +FIXME: TODOC: this info should be part of the relevant functions and/or overview so +the parser can find it. + +transport objects MUST expose the following methods: + - check + - startup + - sendMessages + - deliver + - disconnect +optional, standard but transport dependent methods are: + - tunnelCollapse + - tunnelInit + +Transports SHOULD be namespaced under the cometd object and transports MUST +register themselves with cometd.connectionTypes + +here's a stub transport defintion: + +cometd.blahTransport = new function(){ + this._connectionType="my-polling"; + this._cometd=null; + this.lastTimestamp = null; + + this.check = function(types, version, xdomain){ + // summary: + // determines whether or not this transport is suitable given a + // list of transport types that the server supports + return dojo.inArray(types, "blah"); + } + + this.startup = function(){ + if(dojox.cometd._polling){ return; } + // FIXME: fill in startup routine here + dojox.cometd._polling = true; + } + + this.sendMessages = function(message){ + // FIXME: fill in message array sending logic + } + + this.deliver = function(message){ + } + + this.disconnect = function(){ + // send orderly disconnect message + } + + this.cancelConnect = function(){ + // cancel the current connection + } +} +cometd.connectionTypes.register("blah", cometd.blahTransport.check, cometd.blahTransport); +*/ + +dojo.addOnUnload(dojox.cometd, "_onUnload"); diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/ack.js b/js/dojo-release-1.7.2-src/dojox/cometd/ack.js new file mode 100644 index 0000000..4decdf3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/ack.js @@ -0,0 +1,50 @@ +dojo.provide("dojox.cometd.ack"); +dojo.require("dojox.cometd._base"); + +/* + * This file provides the dojox cometd ack extension which + * acknowledges the messages received in /meta/connect responses. + * Each meta/connect is sent with the id of the last successful meta/connect + * received. The server uses this information to manage a queue of unacknowleged + * messages. + * + * To use, add dojo.require("dojox.cometd.ack"); and if the handshake will be sent + * with ext:{ack:true}. If the server supports the same extension, then the + * mechanism will be initialized. The dojox.cometd.ackEnabled field may also be + * used to optionally enable/disable the extension before init of cometd. + * + */ +dojox.cometd._ack = new function(){ + var supportAcks = false; + var lastAck = -1; + + this._in = function(msg){ + if (msg.channel == "/meta/handshake") { + supportAcks = msg.ext && msg.ext.ack; + } else if (supportAcks && msg.channel == "/meta/connect" && msg.ext && msg.ext.ack && msg.successful) { + var ackId = parseInt(msg.ext.ack); + lastAck = ackId; + } + return msg; + } + + this._out = function(msg){ + + if (msg.channel == "/meta/handshake") { + if (!msg.ext) + msg.ext = {}; + msg.ext.ack = dojox.cometd.ackEnabled; + lastAck = -1; + } + if (supportAcks && msg.channel == "/meta/connect") { + if (!msg.ext) + msg.ext = {}; + msg.ext.ack = lastAck; + } + return msg; + } +}; + +dojox.cometd._extendInList.push(dojo.hitch(dojox.cometd._ack, "_in")); +dojox.cometd._extendOutList.push(dojo.hitch(dojox.cometd._ack, "_out")); +dojox.cometd.ackEnabled = true; diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/callbackPollTransport.js b/js/dojo-release-1.7.2-src/dojox/cometd/callbackPollTransport.js new file mode 100644 index 0000000..e9baf9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/callbackPollTransport.js @@ -0,0 +1,102 @@ +dojo.provide("dojox.cometd.callbackPollTransport"); +dojo.require("dojox.cometd._base"); +dojo.require("dojox.cometd.longPollTransport"); +dojo.require("dojo.io.script"); + +dojox.cometd.callbackPollTransport = new function(){ + + this._connectionType = "callback-polling"; + this._cometd = null; + + this.check = function(types, version, xdomain){ + // we handle x-domain! + return (dojo.indexOf(types, "callback-polling") >= 0); + } + + this.tunnelInit = function(){ + var message = { + channel: "/meta/connect", + clientId: this._cometd.clientId, + connectionType: this._connectionType, + id: "" + this._cometd.messageId++ + }; + message = this._cometd._extendOut(message); + this.openTunnelWith([message]); + } + + this.tunnelCollapse = dojox.cometd.longPollTransport.tunnelCollapse; + this._connect = dojox.cometd.longPollTransport._connect; + this.deliver = dojox.cometd.longPollTransport.deliver; + + this.openTunnelWith = function(content, url){ + this._cometd._polling = true; + var script = { + load: dojo.hitch(this, function(data){ + this._cometd._polling=false; + this._cometd.deliver(data); + this._cometd._backon(); + this.tunnelCollapse(); + }), + error: dojo.hitch(this, function(err){ + this._cometd._polling = false; + this._cometd._publishMeta("connect",false); + this._cometd._backoff(); + this.tunnelCollapse(); + }), + url: (url || this._cometd.url), + content: { message: dojo.toJson(content) }, + callbackParamName: "jsonp" + }; + var connectTimeout = this._cometd._connectTimeout(); + if(connectTimeout > 0){ + script.timeout=connectTimeout; + } + dojo.io.script.get(script); + } + + this.sendMessages = function(/*array*/ messages){ + for(var i = 0; i < messages.length; i++){ + messages[i].clientId = this._cometd.clientId; + messages[i].id = ""+this._cometd.messageId++; + messages[i]=this._cometd._extendOut(messages[i]); + } + + var bindArgs = { + url: this._cometd.url || dojo.config["cometdRoot"], + load: dojo.hitch(this._cometd, "deliver"), + callbackParamName: "jsonp", + content: { message: dojo.toJson( messages ) }, + error: dojo.hitch(this, function(err){ + this._cometd._publishMeta("publish",false,{messages:messages}); + }), + timeout: this._cometd.expectedNetworkDelay + }; + return dojo.io.script.get(bindArgs); + } + + this.startup = function(handshakeData){ + if(this._cometd._connected){ return; } + this.tunnelInit(); + } + + // FIXME: what is this supposed to do? ;) + this.disconnect = dojox.cometd.longPollTransport.disconnect; + this.disconnect = function(){ + var message = { + channel: "/meta/disconnect", + clientId: this._cometd.clientId, + id: "" + this._cometd.messageId++ + }; + message = this._cometd._extendOut(message); + dojo.io.script.get({ + url: this._cometd.url || dojo.config["cometdRoot"], + callbackParamName: "jsonp", + content: { message: dojo.toJson([message]) } + }); + } + + this.cancelConnect = function(){} +} + +dojox.cometd.connectionTypes.register("callback-polling", dojox.cometd.callbackPollTransport.check, dojox.cometd.callbackPollTransport); + diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransport.js b/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransport.js new file mode 100644 index 0000000..d7b3b39 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransport.js @@ -0,0 +1,2 @@ +dojo.provide("dojox.cometd.longPollTransport"); +dojo.require("dojox.cometd.longPollTransportJsonEncoded"); diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransportFormEncoded.js b/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransportFormEncoded.js new file mode 100644 index 0000000..ca0b640 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransportFormEncoded.js @@ -0,0 +1,157 @@ +dojo.provide("dojox.cometd.longPollTransportFormEncoded"); +dojo.require("dojox.cometd._base"); + +dojox.cometd.longPollTransportFormEncoded = new function(){ + // This is an alternative implementation to that provided in logPollTransport.js that + // form encodes all messages instead of sending them as text/json + + this._connectionType = "long-polling"; + this._cometd = null; + + this.check = function(types, version, xdomain){ + return ((!xdomain)&&(dojo.indexOf(types, "long-polling") >= 0)); + } + + this.tunnelInit = function(){ + var message = { + channel: "/meta/connect", + clientId: this._cometd.clientId, + connectionType: this._connectionType, + id: "" + this._cometd.messageId++ + }; + message = this._cometd._extendOut(message); + this.openTunnelWith({ message: dojo.toJson([message]) }); + } + + this.tunnelCollapse = function(){ + // TODO handle transport specific advice + + if(!this._cometd._initialized){ return; } + if(this._cometd._advice && this._cometd._advice["reconnect"]=="none"){ + return; + } + var interval = this._cometd._interval(); + if (this._cometd._status=="connected") { + setTimeout(dojo.hitch(this, "_connect"), interval); + }else{ + setTimeout(dojo.hitch(this._cometd, function(){ + this.init(this.url, this._props); + }), interval); + } + } + + this._connect = function(){ + if(!this._cometd._initialized){ return; } + if(this._cometd._polling) { return; } + + if((this._cometd._advice) && (this._cometd._advice["reconnect"]=="handshake")){ + this._cometd._status="unconnected"; //? + this._initialized = false; + this._cometd.init(this._cometd.url, this._cometd._props); + }else if(this._cometd._status=="connected"){ + var message = { + channel: "/meta/connect", + connectionType: this._connectionType, + clientId: this._cometd.clientId, + id: "" + this._cometd.messageId++ + }; + if(this._cometd.connectTimeout>=this._cometd.expectedNetworkDelay){ + message.advice = { + timeout: this._cometd.connectTimeout - this._cometd.expectedNetworkDelay + }; + } + message = this._cometd._extendOut(message); + this.openTunnelWith({ message: dojo.toJson([message]) }); + } + } + + this.deliver = function(message){ + // Nothing to do + } + + this.openTunnelWith = function(content, url){ + this._cometd._polling = true; + var post = { + url: (url||this._cometd.url), + content: content, + handleAs: this._cometd.handleAs, + load: dojo.hitch(this, function(data){ + this._cometd._polling=false; + this._cometd.deliver(data); + this._cometd._backon(); + this.tunnelCollapse(); + }), + error: dojo.hitch(this, function(err){ + var metaMsg = { + failure: true, + error: err, + advice: this._cometd._advice + }; + this._cometd._polling=false; + this._cometd._publishMeta("connect",false, metaMsg); + this._cometd._backoff(); + this.tunnelCollapse(); + }) + }; + + var connectTimeout = this._cometd._connectTimeout(); + if(connectTimeout > 0){ + post.timeout = connectTimeout; + } + + this._poll = dojo.xhrPost(post); + } + + this.sendMessages = function(messages){ + for(var i=0; i < messages.length; i++){ + messages[i].clientId = this._cometd.clientId; + messages[i].id = "" + this._cometd.messageId++; + messages[i]= this._cometd._extendOut(messages[i]); + } + return dojo.xhrPost({ + url: this._cometd.url||dojo.config["cometdRoot"], + handleAs: this._cometd.handleAs, + load: dojo.hitch(this._cometd, "deliver"), + content: { message: dojo.toJson(messages) }, + error: dojo.hitch(this, function(err){ + this._cometd._publishMeta("publish",false,{messages:messages}); + }), + timeout: this._cometd.expectedNetworkDelay + }); + } + + this.startup = function(handshakeData){ + if(this._cometd._status=="connected"){ return; } + this.tunnelInit(); + } + + this.disconnect = function(){ + var message = { + channel: "/meta/disconnect", + clientId: this._cometd.clientId, + id: "" + this._cometd.messageId++ + }; + message = this._cometd._extendOut(message); + dojo.xhrPost({ + url: this._cometd.url || dojo.config["cometdRoot"], + handleAs: this._cometd.handleAs, + content: { message: dojo.toJson([message]) } + }); + } + + this.cancelConnect = function(){ + if(this._poll){ + this._poll.cancel(); + this._cometd._polling=false; + this._cometd._publishMeta("connect",false,{cancel:true}); + this._cometd._backoff(); + this.disconnect(); + this.tunnelCollapse(); + } + } +} + +dojox.cometd.longPollTransport = dojox.cometd.longPollTransportFormEncoded; + +dojox.cometd.connectionTypes.register("long-polling", dojox.cometd.longPollTransport.check, dojox.cometd.longPollTransportFormEncoded); +dojox.cometd.connectionTypes.register("long-polling-form-encoded", dojox.cometd.longPollTransport.check, dojox.cometd.longPollTransportFormEncoded); diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransportJsonEncoded.js b/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransportJsonEncoded.js new file mode 100644 index 0000000..b343c63 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/longPollTransportJsonEncoded.js @@ -0,0 +1,159 @@ +dojo.provide("dojox.cometd.longPollTransportJsonEncoded"); +dojo.require("dojox.cometd._base"); + +dojox.cometd.longPollTransportJsonEncoded = new function(){ + // This is an alternative implementation to that provided in logPollTransportFormEncoded.js + // that sends messages as text/json rather than form encoding them. + + this._connectionType="long-polling"; + this._cometd=null; + + this.check = function(types, version, xdomain){ + return ((!xdomain)&&(dojo.indexOf(types, "long-polling") >= 0)); + } + + this.tunnelInit = function(){ + var message = { + channel: "/meta/connect", + clientId: this._cometd.clientId, + connectionType: this._connectionType, + id: ""+this._cometd.messageId++ + }; + message=this._cometd._extendOut(message); + this.openTunnelWith([message]); + } + + this.tunnelCollapse = function(){ + // TODO handle transport specific advice + + if(!this._cometd._initialized){ return; } + + if(this._cometd._advice && this._cometd._advice["reconnect"]=="none"){ + return; + } + if (this._cometd._status=="connected") { + setTimeout(dojo.hitch(this,function(){this._connect();}),this._cometd._interval()); + }else{ + setTimeout(dojo.hitch(this._cometd,function(){this.init(this.url,this._props);}),this._cometd._interval()); + } + } + + this._connect = function(){ + if(!this._cometd._initialized){ return; } + if(this._cometd._polling) { + return; + } + + if((this._cometd._advice) && (this._cometd._advice["reconnect"]=="handshake")){ + this._cometd._status="unconnected"; + this._initialized = false; + this._cometd.init(this._cometd.url,this._cometd._props); + }else if(this._cometd._status=="connected"){ + var message={ + channel: "/meta/connect", + connectionType: this._connectionType, + clientId: this._cometd.clientId, + id: ""+this._cometd.messageId++ + }; + if (this._cometd.connectTimeout>=this._cometd.expectedNetworkDelay){ + message.advice={timeout:(this._cometd.connectTimeout-this._cometd.expectedNetworkDelay)}; + } + message=this._cometd._extendOut(message); + this.openTunnelWith([message]); + } + } + + this.deliver = function(message){ + // Nothing to do + } + + this.openTunnelWith = function(messages, url){ + this._cometd._polling = true; + var post = { + url: (url||this._cometd.url), + postData: dojo.toJson(messages), + contentType: "text/json;charset=UTF-8", + handleAs: this._cometd.handleAs, + load: dojo.hitch(this, function(data){ + this._cometd._polling=false; + this._cometd.deliver(data); + this._cometd._backon(); + this.tunnelCollapse(); + }), + error: dojo.hitch(this, function(err){ + this._cometd._polling=false; + var metaMsg = { + failure: true, + error: err, + advice: this._cometd._advice + }; + this._cometd._publishMeta("connect",false, metaMsg); + this._cometd._backoff(); + this.tunnelCollapse(); + }) + }; + + var connectTimeout=this._cometd._connectTimeout(); + if (connectTimeout>0) { + post.timeout=connectTimeout; + } + + this._poll = dojo.rawXhrPost(post); + } + + this.sendMessages = function(messages){ + for(var i=0; i + + + Dojox.wire Unit Test Runner + + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/timestamp.js b/js/dojo-release-1.7.2-src/dojox/cometd/timestamp.js new file mode 100644 index 0000000..d0c537e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/timestamp.js @@ -0,0 +1,8 @@ +dojo.provide("dojox.cometd.timestamp"); +dojo.require("dojox.cometd._base"); + +// A cometd extension that adds a timestamp to every message +dojox.cometd._extendOutList.push(function(msg){ + msg.timestamp = new Date().toUTCString(); + return msg +}); diff --git a/js/dojo-release-1.7.2-src/dojox/cometd/timesync.js b/js/dojo-release-1.7.2-src/dojox/cometd/timesync.js new file mode 100644 index 0000000..99a3cbb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/cometd/timesync.js @@ -0,0 +1,141 @@ +dojo.provide("dojox.cometd.timesync"); +dojo.require("dojox.cometd._base"); + +/** + * this file provides the time synchronization extension to cometd. + * Timesync allows the client and server to exchange time information on every + * handshake and connect message so that the client may calculate an approximate + * offset from it's own clock epoch to that of the server. + * + * With each handshake or connect, the extension sends timestamps within the + * ext field like: {ext:{timesync:{tc:12345567890,l:23,o:4567},...},...} + * where:
                            + *
                          • tc is the client timestamp in ms since 1970 of when the message was sent. + *
                          • l is the network lag that the client has calculated. + *
                          • o is the clock offset that the client has calculated. + *
                          + * The accuracy of the offset and lag may be calculated with tc-now-l-o, + * which should be zero if the calculated offset and lag are perfectly + * accurate. + *

                          + * A cometd server that supports timesync, should respond only if the + * measured accuracy value is greater than accuracy target. The response + * will be an ext field like: {ext:{timesync:{tc:12345567890,ts:1234567900,p:123,a:3},...},...} + * where:

                            + *
                          • tc is the client timestamp of when the message was sent, + *
                          • ts is the server timestamp of when the message was received + *
                          • p is the poll duration in ms - ie the time the server took before sending the response. + *
                          • a is the measured accuracy of the calculated offset and lag sent by the client + *
                          + * + * On receipt of the response, the client is able to use current time to determine + * the total trip time, from which p is subtracted to determine an approximate + * two way network traversal time. The measured accuracy is used to adjust the assumption + * that the network is symmetric for traversal time, so:
                            + *
                          • lag = (now-tc-p)/2-a + *
                          • offset = ts-tc-lag + *
                          + * + * In order to smooth over any transient fluctuations, the extension keeps a sliding + * average of the offsets received. By default this is over 10 messages, but this can + * be changed with the dojox.cometd.timesync._window element. + */ +dojox.cometd.timesync = new function(){ + this._window = 10; // The window size for the sliding average of offset samples. + this._lags = []; // The samples used to calculate the average lag. + this._offsets = []; // The samples used to calculate the average offset. + this.lag=0; // The calculated network lag from client to server + this.offset = 0; // The offset in ms between the clients clock and the servers clock. + this.samples = 0; // The number of samples used to calculate the offset. If 0, the offset is not valid. + + this.getServerTime = function(){ // return: long + // Summary: + // Calculate the current time on the server + // + return new Date().getTime()+this.offset; + } + + this.getServerDate = function(){ // return: Date + // Summary: + // Calculate the current time on the server + // + return new Date(this.getServerTime()); + } + + this.setTimeout = function(/*function*/call, /*long|Date*/atTimeOrDate){ + // Summary: + // Set a timeout function relative to server time + // call: + // the function to call when the timeout occurs + // atTimeOrTime: + // a long timestamp or a Date representing the server time at + // which the timeout should occur. + + var ts = (atTimeOrDate instanceof Date) ? atTimeOrDate.getTime() : (0 + atTimeOrDate); + var tc = ts - this.offset; + var interval = tc - new Date().getTime(); + if(interval <= 0){ + interval = 1; + } + return setTimeout(call,interval); + } + + this._in = function(/*Object*/msg){ + // Summary: + // Handle incoming messages for the timesync extension. + // description: + // Look for ext:{timesync:{}} field and calculate offset if present. + // msg: + // The incoming bayeux message + + var channel = msg.channel; + if(channel && channel.indexOf('/meta/') == 0){ + if(msg.ext && msg.ext.timesync){ + var sync = msg.ext.timesync; + var now = new Date().getTime(); + var l=(now-sync.tc-sync.p)/2-sync.a; + var o=sync.ts-sync.tc-l; + + this._lags.push(l); + this._offsets.push(o); + if(this._offsets.length > this._window){ + this._offsets.shift(); + this._lags.shift(); + } + this.samples++; + l=0; + o=0; + for(var i in this._offsets){ + l+=this._lags[i]; + o+=this._offsets[i]; + } + this.offset = parseInt((o / this._offsets.length).toFixed()); + this.lag = parseInt((l / this._lags.length).toFixed()); + + } + } + return msg; + } + + this._out = function(msg){ + // Summary: + // Handle outgoing messages for the timesync extension. + // description: + // Look for handshake and connect messages and add the ext:{timesync:{}} fields + // msg: + // The outgoing bayeux message + + var channel = msg.channel; + if(channel && channel.indexOf('/meta/') == 0){ + var now = new Date().getTime(); + if(!msg.ext){ + msg.ext = {}; + } + msg.ext.timesync = {tc:now,l:this.lag,o:this.offset}; + } + return msg; + } +}; + +dojox.cometd._extendInList.push(dojo.hitch(dojox.cometd.timesync, "_in")); +dojox.cometd._extendOutList.push(dojo.hitch(dojox.cometd.timesync, "_out")); diff --git a/js/dojo-release-1.7.2-src/dojox/css3/README b/js/dojo-release-1.7.2-src/dojox/css3/README new file mode 100644 index 0000000..fe72cd3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/css3/README @@ -0,0 +1,37 @@ +------------------------------------------------------------------------------- +dojox.css3 +------------------------------------------------------------------------------- +Version: 0.1 +Release date: 03/06/2010 +------------------------------------------------------------------------------- +Project state: beta +------------------------------------------------------------------------------- +Project author + Nicola Rizzo +------------------------------------------------------------------------------- +Project description +Common animations (flip, bounce, puff, rotate, expand, shrink) +using the CSS3 Transform property + +------------------------------------------------------------------------------- +Dependencies: + +Dojo core (package loader, connect, dom-style, fx, html) +dojox/html/ext-dojo/style to handle transform and transform origin +dojox/fx/ext-dojo/complex to handle animations with multiple values + +------------------------------------------------------------------------------- +Documentation: + +See the Dojo API tool (http://dojotoolkit.org/api) + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/src/dojo/dojox/trunk/css3/fx.js + +Install into the following directory structure: +/dojox/css3/ + +...which should be at the same level as your Dojo checkout. \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/css3/fx.js b/js/dojo-release-1.7.2-src/dojox/css3/fx.js new file mode 100644 index 0000000..b447412 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/css3/fx.js @@ -0,0 +1,191 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/connect", // dojo.connect + "dojo/dom-style", // dojo.style + "dojo/_base/fx", + "dojo/fx", + "dojo/_base/html", + "dojox/html/ext-dojo/style", + "dojox/fx/ext-dojo/complex"], +function(lang,connectUtil,domStyle,baseFx,coreFx,htmlUtil,htmlStyleExt,complexFx){ + var css3fx = lang.getObject("dojox.css3.fx", true); + /*===== css3fx = dojox.css3.fx =====*/ + + return lang.mixin(css3fx, { + puff: function(args){ + // summary: + // Returns an animation that will do a "puff" effect on the given node + // + // description: + // Fades out an element and scales it to args.endScale + // + return coreFx.combine([baseFx.fadeOut(args), + this.expand({ + node: args.node, + endScale: args.endScale || 2 + }) + ]); + }, + + expand: function(args){ + // summary: + // Returns an animation that expands args.node + // + // description: + // Scales an element to args.endScale + // + return baseFx.animateProperty({ + node: args.node, + properties: { + transform: { start: "scale(1)", end: "scale(" + [args.endScale || 3] + ")" } + } + }); + }, + + shrink: function(args){ + // summary: + // Returns an animation that shrinks args.node + // + // description: + // Shrinks an element, same as expand({ node: node, endScale: .01 }); + // + return this.expand({ + node: args.node, + endScale: .01 + }); + }, + + rotate: function(args){ + // summary: + // Returns an animation that rotates an element + // + // description: + // Rotates an element from args.startAngle to args.endAngle + // + return baseFx.animateProperty({ + node: args.node, + duration: args.duration || 1000, + properties: { + transform: { start: "rotate(" + (args.startAngle || "0deg") + ")", end: "rotate(" + (args.endAngle || "360deg") + ")" } + } + }); + }, + + flip: function(args){ + // summary: + // Returns an animation that flips an element around his y axis + // + // description: + // Flips an element around his y axis. The default is a 360deg flip + // but it's possible to run a partial flip using args.whichAnims + // + // example: + // | // half flip + // | dojox.css3.fx.flip({ + // | node: domNode, + // | whichAnim: [0, 1] + // | }).play(); + // + var anims = [], + whichAnims = args.whichAnims || [0, 1, 2, 3], + direction = args.direction || 1, + transforms = [ + { start: "scale(1, 1) skew(0deg,0deg)", end: "scale(0, 1) skew(0," + (direction * 30) + "deg)" }, + { start: "scale(0, 1) skew(0deg," + (direction * 30) + "deg)", end: "scale(-1, 1) skew(0deg,0deg)" }, + { start: "scale(-1, 1) skew(0deg,0deg)", end: "scale(0, 1) skew(0deg," + (-direction * 30) + "deg)" }, + { start: "scale(0, 1) skew(0deg," + (-direction * 30) + "deg)", end: "scale(1, 1) skew(0deg,0deg)" } + ]; + for(var i = 0; i < whichAnims.length; i++){ + anims.push(baseFx.animateProperty( + lang.mixin({ + node: args.node, + duration: args.duration || 600, + properties: { + transform: transforms[whichAnims[i]] + }}, args) + )); + } + return coreFx.chain(anims); + }, + + bounce: function(args){ + // summary: + // Returns an animation that do a "bounce" effect on args.node + // + // description: + // Vertical bounce animation, the scaleX, scaleY deformation and the + // jump height (args.jumpHeight) can be specified + // + var anims = [], + n = args.node, + duration = args.duration || 1000, + scaleX = args.scaleX || 1.2, + scaleY = args.scaleY || .6, + ds = htmlUtil.style, + oldPos = ds(n, "position"), + newPos = "absolute", + oldTop = ds(n, "top"), + combinedAnims = [], + bTime = 0, + round = Math.round, + jumpHeight = args.jumpHeight || 70 + ; + if(oldPos !== "absolute"){ + newPos = "relative"; + } + var a1 = baseFx.animateProperty({ + node: n, + duration: duration / 6, + properties: { + transform: { start: "scale(1, 1)", end: "scale(" + scaleX + ", " + scaleY + ")" } + } + }); + connectUtil.connect(a1, "onBegin", function(){ + ds(n, { + transformOrigin: "50% 100%", + position: newPos + }); + }); + anims.push(a1); + var a2 = baseFx.animateProperty({ + node: n, + duration: duration / 6, + properties: { + transform: { end: "scale(1, 1)", start: "scale(" + scaleX + ", " + scaleY + ")" } + } + }); + combinedAnims.push(a2); + combinedAnims.push(new baseFx.Animation(lang.mixin({ + curve: [], + duration: duration / 3, + delay: duration / 12, + onBegin: function(){ + bTime = (new Date).getTime(); + }, + onAnimate: function(){ + var cTime = (new Date).getTime(); + ds(n, { + top: parseInt(ds(n, "top")) - round(jumpHeight*((cTime-bTime)/this.duration)) + "px" + }); + bTime = cTime; + } + }, args))); + anims.push(coreFx.combine(combinedAnims)); + anims.push(baseFx.animateProperty(lang.mixin({ + duration: duration / 3, + onEnd: function(){ + ds(n, { + position: oldPos + }); + }, + properties:{ + top: oldTop + } + }, args))); + anims.push(a1); + anims.push(a2); + + return coreFx.chain(anims); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/css3/transit.js b/js/dojo-release-1.7.2-src/dojox/css3/transit.js new file mode 100644 index 0000000..203e94e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/css3/transit.js @@ -0,0 +1,62 @@ +define(["dojo/_base/kernel", "dojo/_base/array","dojo/dom-style","dojo/DeferredList","./transition"], + function(dojo, darray, domStyle, DeferredList,transition){ + var transit = function(from, to, options){ + var rev = (options && options.reverse) ? -1 : 1; + if(!options || !options.transition || !transition[options.transition]){ + domStyle.set(from,"display","none"); + domStyle.set(to, "display", ""); + if(options.transitionDefs){ + if(options.transitionDefs[from.id]){ + options.transitionDefs[from.id].resolve(from); + } + if(options.transitionDefs[to.id]){ + options.transitionDefs[to.id].resolve(to); + } + } + }else{ + var defs=[]; + var transit=[]; + var duration = 250; + if(options.transition === "fade"){ + duration = 600; + }else if (options.transition === "flip"){ + duration = 200; + } + domStyle.set(from, "display", ""); + domStyle.set(to, "display", ""); + if (from){ + //create transition to transit "from" out + var fromTransit = transition[options.transition](from, { + "in": false, + direction: rev, + duration: duration, + deferred: (options.transitionDefs && options.transitionDefs[from.id]) ? options.transitionDefs[from.id] : null + }); + defs.push(fromTransit.deferred);//every transition object should have a deferred. + transit.push(fromTransit); + } + + //create transition to transit "to" in + var toTransit = transition[options.transition](to, { + direction: rev, + duration: duration, + deferred: (options.transitionDefs && options.transitionDefs[to.id]) ? options.transitionDefs[to.id] : null + }); + defs.push(toTransit.deferred);//every transition object should have a deferred. + transit.push(toTransit); + + //TODO If it is flip use the chainedPlay + //play fromTransit and toTransit together + if(options.transition === "flip"){ + transition.chainedPlay(transit); + }else{ + transition.groupedPlay(transit); + } + + return new DeferredList(defs); + + } + }; + + return transit; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/css3/transition.js b/js/dojo-release-1.7.2-src/dojox/css3/transition.js new file mode 100644 index 0000000..1fd9f72 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/css3/transition.js @@ -0,0 +1,344 @@ +define(["dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/Deferred", + "dojo/DeferredList", + "dojo/on", + "dojo/_base/sniff"], + function(dojo, lang, declare, array, deferred, deferredList, on, has){ + //TODO create cross platform animation/transition effects + var transitionEndEventName = "transitionend"; + var transitionPrefix = "t"; //by default use "t" prefix and "ransition" to make word "transition" + var translateMethodStart = "translate3d(";//Android 2.x does not support translateX in CSS Transition, we need to use translate3d in webkit browsers + var translateMethodEnd = ",0,0)"; + if(has("webkit")){ + transitionPrefix = "WebkitT"; + transitionEndEventName = "webkitTransitionEnd"; + }else if(has("mozilla")){ + transitionPrefix = "MozT"; + translateMethodStart = "translateX("; + translateMethodEnd = ")"; + } + + //TODO find a way to lock the animation and prevent animation conflict + declare("dojox.css3.transition", null, { + + + constructor: function(args){ + //default config should be in animation object itself instead of its prototype + //otherwise, it might be easy for making mistake of modifying prototype + var defaultConfig = { + startState: {}, + endState: {}, + node: null, + duration: 250, + "in": true, + direction: 1, + autoClear: true + }; + + lang.mixin(this, defaultConfig); + lang.mixin(this, args); + + //create the deferred object which will resolve after the animation is finished. + //We can rely on "onAfterEnd" function to notify the end of a single animation, + //but using a deferred object is easier to wait for multiple animations end. + if(!this.deferred){ + this.deferred = new deferred(); + } + }, + + play: function(){ + //play the animation using CSS3 Transition + dojox.css3.transition.groupedPlay([this]); + }, + + //method to apply the state of the transition + _applyState: function(state){ + var style = this.node.style; + for(var property in state){ + if(state.hasOwnProperty(property)){ + style[property] = state[property]; + } + } + }, + + //method to initialize state for transition + initState: function(){ + + //apply the immediate style change for initial state. + this.node.style[transitionPrefix + "ransitionProperty"] = "none"; + this.node.style[transitionPrefix + "ransitionDuration"] = "0ms"; + this._applyState(this.startState); + + }, + + _beforeStart: function(){ + if (this.node.style.display === "none"){ + this.node.style.display = ""; + } + this.beforeStart(); + }, + + _beforeClear: function(){ + this.node.style[transitionPrefix + "ransitionProperty"] = null; + this.node.style[transitionPrefix + "ransitionDuration"] = null; + if(this["in"] !== true){ + this.node.style.display = "none"; + } + this.beforeClear(); + }, + + _onAfterEnd: function(){ + this.deferred.resolve(this.node); + if(this.node.id && dojox.css3.transition.playing[this.node.id]===this.deferred){ + delete dojox.css3.transition.playing[this.node.id]; + } + this.onAfterEnd(); + }, + + beforeStart: function(){ + + }, + + beforeClear: function(){ + + }, + + onAfterEnd: function(){ + + }, + + //method to start the transition + start: function(){ + this._beforeStart(); + + var self = this; + //change the transition duration + self.node.style[transitionPrefix + "ransitionProperty"] = "all"; + self.node.style[transitionPrefix + "ransitionDuration"] = self.duration + "ms"; + + //connect to clear the transition state after the transition end. + //Since the transition is conducted asynchronously, we need to + //connect to transition end event to clear the state + on.once(self.node, transitionEndEventName, function(){ + self.clear(); + }); + + this._applyState(this.endState); + }, + + //method to clear state after transition + clear: function(){ + this._beforeClear(); + this._removeState(this.endState); + console.log(this.node.id + " clear."); + this._onAfterEnd(); + }, + + //create removeState method + _removeState: function(state){ + var style = this.node.style; + for(var property in state){ + if(state.hasOwnProperty(property)){ + style[property] = null; + } + } + } + + }); + + //TODO add the lock mechanism for all of the transition effects + // consider using only one object for one type of transition. + //TODO create the first animation, slide. + dojox.css3.transition.slide = function(node, config){ + + //TODO create the return and set the startState, endState of the return + var ret = new dojox.css3.transition(config); + ret.node = node; + + var startX = "0"; + var endX = "0"; + + if(ret["in"]){ + if(ret.direction === 1){ + startX = "100%"; + }else{ + startX = "-100%"; + } + }else{ + if(ret.direction === 1){ + endX = "-100%"; + }else{ + endX = "100%"; + } + } + + + ret.startState[transitionPrefix + "ransform"]=translateMethodStart+startX+translateMethodEnd; + + ret.endState[transitionPrefix + "ransform"]=translateMethodStart+endX+translateMethodEnd; + + return ret; + }; + + + //fade in/out animation effects + dojox.css3.transition.fade = function(node, config){ + + var ret = new dojox.css3.transition(config); + ret.node = node; + + var startOpacity = "0"; + var endOpacity = "0"; + + if(ret["in"]){ + endOpacity = "1"; + }else{ + startOpacity = "1"; + } + + lang.mixin(ret, { + startState:{ + "opacity": startOpacity + }, + endState:{ + "opacity": endOpacity + } + }); + + return ret; + }; + + //fade in/out animation effects + dojox.css3.transition.flip = function(node, config){ + + var ret = new dojox.css3.transition(config); + ret.node = node; + + if(ret["in"]){ + //Need to set opacity here because Android 2.2 has bug that + //scale(...) in transform does not persist status + lang.mixin(ret,{ + startState:{ + "opacity": "0" + }, + endState:{ + "opacity": "1" + } + }); + ret.startState[transitionPrefix + "ransform"]="scale(0,0.8) skew(0,-30deg)"; + ret.endState[transitionPrefix + "ransform"]="scale(1,1) skew(0,0)"; + }else{ + lang.mixin(ret,{ + startState:{ + "opacity": "1" + }, + endState:{ + "opacity": "0" + } + }); + ret.startState[transitionPrefix + "ransform"]="scale(1,1) skew(0,0)"; + ret.endState[transitionPrefix + "ransform"]="scale(0,0.8) skew(0,30deg)"; + } + + return ret; + }; + + var getWaitingList = function(/*Array*/ nodes){ + var defs = []; + array.forEach(nodes, function(node){ + //check whether the node is under other animation + if(node.id && dojox.css3.transition.playing[node.id]){ + //TODO hook on deferred object in dojox.css3.transition.playing + defs.push(dojox.css3.transition.playing[node.id]); + } + + }); + return new deferredList(defs); + }; + + dojox.css3.transition.getWaitingList = getWaitingList; + + //TODO groupedPlay should ensure the UI update happens when + //all animations end. + //the group player to start multiple animations together + dojox.css3.transition.groupedPlay = function(/*Array*/args){ + //args should be array of dojox.css3.transition + + var animNodes = array.filter(args, function(item){ + return item.node; + }); + + var waitingList = getWaitingList(animNodes); + + //update registry with deferred objects in animations of args. + array.forEach(args, function(item){ + if(item.node.id){ + dojox.css3.transition.playing[item.node.id] = item.deferred; + } + }); + + //TODO wait for all deferred object in deferred list to resolve + dojo.when(waitingList, function(){ + array.forEach(args, function(item){ + //set the start state + item.initState(); + }); + + //Assume the fps of the animation should be higher than 30 fps and + //allow the browser to use one frame's time to redraw so that + //the transition can be started + setTimeout(function(){ + array.forEach(args, function(item){ + item.start(); + }); + }, 33); + }); + }; + + //the chain player to start multiple animations one by one + dojox.css3.transition.chainedPlay = function(/*Array*/args){ + //args should be array of dojox.css3.transition + + var animNodes = array.filter(args, function(item){ + return item.node; + }); + + var waitingList = getWaitingList(animNodes); + + //update registry with deferred objects in animations of args. + array.forEach(args, function(item){ + if(item.node.id){ + dojox.css3.transition.playing[item.node.id] = item.deferred; + } + }); + + dojo.when(waitingList, function(){ + array.forEach(args, function(item){ + //set the start state + item.initState(); + }); + + //chain animations together + for (var i=1, len=args.length; i < len; i++){ + args[i-1].deferred.then(lang.hitch(args[i], function(){ + this.start(); + })); + } + + //Assume the fps of the animation should be higher than 30 fps and + //allow the browser to use one frame's time to redraw so that + //the transition can be started + setTimeout(function(){ + args[0].start(); + }, 33); + }); + }; + + //TODO complete the registry mechanism for animation handling and prevent animation conflicts + dojox.css3.transition.playing = {}; + + return dojox.css3.transition; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/AndOrReadStore.js b/js/dojo-release-1.7.2-src/dojox/data/AndOrReadStore.js new file mode 100755 index 0000000..e8564e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/AndOrReadStore.js @@ -0,0 +1,1046 @@ +define(["dojo/_base/kernel", "dojo/_base/declare", "dojo/_base/lang", "dojo/data/util/filter", "dojo/data/util/simpleFetch", + "dojo/_base/array", "dojo/date/stamp", "dojo/_base/json", "dojo/_base/window", "dojo/_base/xhr"], + function(kernel, declare, lang, filterUtil, simpleFetch, array, dateStamp, json, winUtil, xhr) { + +var AndOrReadStore = declare("dojox.data.AndOrReadStore", null, { + // summary: + // AndOrReadStore uses ItemFileReadStore as a base, modifying only the query (_fetchItems) section. + // Supports queries of the form: query:"id:1* OR dept:'Sales Department' || (id:2* && NOT dept:S*)" + // Includes legacy/widget support via: + // query:{complexQuery:"id:1* OR dept:'Sales Department' || (id:2* && NOT dept:S*)"} + // The ItemFileReadStore implements the dojo.data.api.Read API and reads + // data from JSON files that have contents in this format -- + // { items: [ + // { name:'Kermit', color:'green', age:12, friends:['Gonzo', {_reference:{name:'Fozzie Bear'}}]}, + // { name:'Fozzie Bear', wears:['hat', 'tie']}, + // { name:'Miss Piggy', pets:'Foo-Foo'} + // ]} + // Note that it can also contain an 'identifer' property that specified which attribute on the items + // in the array of items that acts as the unique identifier for that item. + // + constructor: function(/* Object */ keywordParameters){ + // summary: constructor + // keywordParameters: {url: String} + // keywordParameters: {data: jsonObject} + // keywordParameters: {typeMap: object) + // The structure of the typeMap object is as follows: + // { + // type0: function || object, + // type1: function || object, + // ... + // typeN: function || object + // } + // Where if it is a function, it is assumed to be an object constructor that takes the + // value of _value as the initialization parameters. If it is an object, then it is assumed + // to be an object of general form: + // { + // type: function, //constructor. + // deserialize: function(value) //The function that parses the value and constructs the object defined by type appropriately. + // } + + this._arrayOfAllItems = []; + this._arrayOfTopLevelItems = []; + this._loadFinished = false; + this._jsonFileUrl = keywordParameters.url; + this._ccUrl = keywordParameters.url; + this.url = keywordParameters.url; + this._jsonData = keywordParameters.data; + this.data = null; + this._datatypeMap = keywordParameters.typeMap || {}; + if(!this._datatypeMap['Date']){ + //If no default mapping for dates, then set this as default. + //We use the dojo.date.stamp here because the ISO format is the 'dojo way' + //of generically representing dates. + this._datatypeMap['Date'] = { + type: Date, + deserialize: function(value){ + return dateStamp.fromISOString(value); + } + }; + } + this._features = {'dojo.data.api.Read':true, 'dojo.data.api.Identity':true}; + this._itemsByIdentity = null; + this._storeRefPropName = "_S"; // Default name for the store reference to attach to every item. + this._itemNumPropName = "_0"; // Default Item Id for isItem to attach to every item. + this._rootItemPropName = "_RI"; // Default Item Id for isItem to attach to every item. + this._reverseRefMap = "_RRM"; // Default attribute for constructing a reverse reference map for use with reference integrity + this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset. + this._queuedFetches = []; + + if(keywordParameters.urlPreventCache !== undefined){ + this.urlPreventCache = keywordParameters.urlPreventCache?true:false; + } + if(keywordParameters.hierarchical !== undefined){ + this.hierarchical = keywordParameters.hierarchical?true:false; + } + if(keywordParameters.clearOnClose){ + this.clearOnClose = true; + } + }, + + url: "", // use "" rather than undefined for the benefit of the parser (#3539) + + //Internal var, crossCheckUrl. Used so that setting either url or _jsonFileUrl, can still trigger a reload + //when clearOnClose and close is used. + _ccUrl: "", + + data: null, //Make this parser settable. + + typeMap: null, //Make this parser settable. + + //Parameter to allow users to specify if a close call should force a reload or not. + //By default, it retains the old behavior of not clearing if close is called. But + //if set true, the store will be reset to default state. Note that by doing this, + //all item handles will become invalid and a new fetch must be issued. + clearOnClose: false, + + //Parameter to allow specifying if preventCache should be passed to the xhrGet call or not when loading data from a url. + //Note this does not mean the store calls the server on each fetch, only that the data load has preventCache set as an option. + //Added for tracker: #6072 + urlPreventCache: false, + + //Parameter to indicate to process data from the url as hierarchical + //(data items can contain other data items in js form). Default is true + //for backwards compatibility. False means only root items are processed + //as items, all child objects outside of type-mapped objects and those in + //specific reference format, are left straight JS data objects. + hierarchical: true, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.AndOrReadStore: Invalid item argument."); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error("dojox.data.AndOrReadStore: Invalid attribute argument."); + } + }, + + getValue: function( /* item */ item, + /* attribute-name-string */ attribute, + /* value? */ defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + var values = this.getValues(item, attribute); + return (values.length > 0)?values[0]:defaultValue; // mixed + }, + + getValues: function(/* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.getValues() + + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var arr = item[attribute] || []; + // Clone it before returning. refs: #10474 + return arr.slice(0, arr.length); // Array + }, + + getAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + var attributes = []; + for(var key in item){ + // Save off only the real item attributes, not the special id marks for O(1) isItem. + if((key !== this._storeRefPropName) && (key !== this._itemNumPropName) && (key !== this._rootItemPropName) && (key !== this._reverseRefMap)){ + attributes.push(key); + } + } + return attributes; // Array + }, + + hasAttribute: function( /* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.hasAttribute() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + return (attribute in item); + }, + + containsValue: function(/* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value){ + // summary: + // See dojo.data.api.Read.containsValue() + var regexp = undefined; + if(typeof value === "string"){ + regexp = filterUtil.patternToRegExp(value, false); + } + return this._containsValue(item, attribute, value, regexp); //boolean. + }, + + _containsValue: function( /* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value, + /* RegExp?*/ regexp){ + // summary: + // Internal function for looking at the values contained by the item. + // description: + // Internal function for looking at the values contained by the item. This + // function allows for denoting if the comparison should be case sensitive for + // strings or not (for handling filtering cases where string case should not matter) + // + // item: + // The data item to examine for attribute values. + // attribute: + // The attribute to inspect. + // value: + // The value to match. + // regexp: + // Optional regular expression generated off value if value was of string type to handle wildcarding. + // If present and attribute values are string, then it can be used for comparison instead of 'value' + return array.some(this.getValues(item, attribute), function(possibleValue){ + if(possibleValue !== null && !lang.isObject(possibleValue) && regexp){ + if(possibleValue.toString().match(regexp)){ + return true; // Boolean + } + } else if(value === possibleValue){ + return true; // Boolean + } else { + return false; + } + }); + }, + + isItem: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItem() + if(something && something[this._storeRefPropName] === this){ + if(this._arrayOfAllItems[something[this._itemNumPropName]] === something){ + return true; + } + } + return false; // Boolean + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(something); //boolean + }, + + loadItem: function(/* object */ keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + this._assertIsItem(keywordArgs.item); + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return this._features; //Object + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if(this._labelAttr && this.isItem(item)){ + return this.getValue(item,this._labelAttr); //String + } + return undefined; //undefined + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + if(this._labelAttr){ + return [this._labelAttr]; //array + } + return null; //null + }, + + _fetchItems: function( /* Object */ keywordArgs, + /* Function */ findCallback, + /* Function */ errorCallback){ + // summary: + // See dojo.data.util.simpleFetch.fetch() + // filter modified to permit complex queries where + // logical operators are case insensitive: + // , NOT AND OR ( ) ! && || + // Note: "," included for quoted/string legacy queries. + var self = this; + var filter = function(requestArgs, arrayOfItems){ + var items = []; + if(requestArgs.query){ + //Complete copy, we may have to mess with it. + //Safer than clone, which does a shallow copy, I believe. + var query = json.fromJson(json.toJson(requestArgs.query)); + //Okay, object form query, we have to check to see if someone mixed query methods (such as using FilteringSelect + //with a complexQuery). In that case, the params need to be anded to the complex query statement. + //See defect #7980 + if(typeof query == "object" ){ + var count = 0; + var p; + for(p in query){ + count++; + } + if(count > 1 && query.complexQuery){ + var cq = query.complexQuery; + var wrapped = false; + for(p in query){ + if(p !== "complexQuery"){ + //We should wrap this in () as it should and with the entire complex query + //Not just part of it. + if(!wrapped){ + cq = "( " + cq + " )"; + wrapped = true; + } + //Make sure strings are quoted when going into complexQuery merge. + var v = requestArgs.query[p]; + if(lang.isString(v)){ + v = "'" + v + "'"; + } + cq += " AND " + p + ":" + v; + delete query[p]; + + } + } + query.complexQuery = cq; + } + } + + var ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false; + //for complex queries only: pattern = query[:|=]"NOT id:23* AND (type:'test*' OR dept:'bob') && !filed:true" + //logical operators are case insensitive: , NOT AND OR ( ) ! && || // "," included for quoted/string legacy queries. + if(typeof query != "string"){ + query = json.toJson(query); + query = query.replace(/\\\\/g,"\\"); //counter toJson expansion of backslashes, e.g., foo\\*bar test. + } + query = query.replace(/\\"/g,"\""); //ditto, for embedded \" in lieu of " availability. + var complexQuery = lang.trim(query.replace(/{|}/g,"")); //we can handle these, too. + var pos2, i; + if(complexQuery.match(/"? *complexQuery *"?:/)){ //case where widget required a json object, so use complexQuery:'the real query' + complexQuery = lang.trim(complexQuery.replace(/"?\s*complexQuery\s*"?:/,"")); + var quotes = ["'",'"']; + var pos1,colon; + var flag = false; + for(i = 0; i 0 && !err){ + op = complexQuery.match(begRegExp); + + //get/process/append one or two leading logical operators. + while(op && !err){ //look for leading logical operators. + complexQuery = lang.trim(complexQuery.replace(op[0],"")); + op = lang.trim(op[0]).toUpperCase(); + //convert some logical operators to their javascript equivalents for later eval. + op = op == "NOT" ? "!" : op == "AND" || op == "," ? "&&" : op == "OR" ? "||" : op; + op = " " + op + " "; + sQuery += op; + op = complexQuery.match(begRegExp); + }//end op && !err + + //now get/process/append one key:value pair. + if(complexQuery.length > 0){ + pos = complexQuery.indexOf(":"); + if(pos == -1){ + err = true; + break; + }else{ + key = lang.trim(complexQuery.substring(0,pos).replace(/\"|\'/g,"")); + complexQuery = lang.trim(complexQuery.substring(pos + 1)); + tok = complexQuery.match(/^\'|^\"/); //quoted? + if(tok){ + tok = tok[0]; + pos = complexQuery.indexOf(tok); + pos2 = complexQuery.indexOf(tok,pos + 1); + if(pos2 == -1){ + err = true; + break; + } + value = complexQuery.substring(pos + 1,pos2); + if(pos2 == complexQuery.length - 1){ //quote is last character + complexQuery = ""; + }else{ + complexQuery = lang.trim(complexQuery.substring(pos2 + 1)); + } + sQuery += self._containsValue(candidateItem, key, value, filterUtil.patternToRegExp(value, ignoreCase)); + } + else{ //not quoted, so a space, comma, or closing parens (or the end) will be the break. + tok = complexQuery.match(/\s|\)|,/); + if(tok){ + var pos3 = new Array(tok.length); + for(var j = 0;j 1){ + for(var j=1;j 0) + } //end while complexQuery.length > 0 && !err, so finished the i-th item. + match = eval(sQuery); + } //end else is non-null candidateItem. + if(match){ + items.push(candidateItem); + } + } //end for/next of all items. + if(err){ + //soft fail. + items = []; + console.log("The store's _fetchItems failed, probably due to a syntax error in query."); + } + findCallback(items, requestArgs); + }else{ + // No query... + // We want a copy to pass back in case the parent wishes to sort the array. + // We shouldn't allow resort of the internal list, so that multiple callers + // can get lists and sort without affecting each other. We also need to + // filter out any null values that have been left as a result of deleteItem() + // calls in ItemFileWriteStore. + for(var i = 0; i < arrayOfItems.length; ++i){ + var item = arrayOfItems[i]; + if(item !== null){ + items.push(item); + } + } + findCallback(items, requestArgs); + } //end if there is a query. + }; //end filter function + + if(this._loadFinished){ + filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions)); + }else{ + if(this._jsonFileUrl !== this._ccUrl){ + kernel.deprecated("dojox.data.AndOrReadStore: ", + "To change the url, set the url property of the store," + + " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); + this._ccUrl = this._jsonFileUrl; + this.url = this._jsonFileUrl; + }else if(this.url !== this._ccUrl){ + this._jsonFileUrl = this.url; + this._ccUrl = this.url; + } + //See if there was any forced reset of data. + if(this.data != null && this._jsonData == null){ + this._jsonData = this.data; + this.data = null; + } + if(this._jsonFileUrl){ + //If fetches come in before the loading has finished, but while + //a load is in progress, we have to defer the fetching to be + //invoked in the callback. + if(this._loadInProgress){ + this._queuedFetches.push({args: keywordArgs, filter: filter}); + }else{ + this._loadInProgress = true; + var getArgs = { + url: self._jsonFileUrl, + handleAs: "json-comment-optional", + preventCache: this.urlPreventCache + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + try{ + self._getItemsFromLoadedData(data); + self._loadFinished = true; + self._loadInProgress = false; + + filter(keywordArgs, self._getItemsArray(keywordArgs.queryOptions)); + self._handleQueuedFetches(); + }catch(e){ + self._loadFinished = true; + self._loadInProgress = false; + errorCallback(e, keywordArgs); + } + }); + getHandler.addErrback(function(error){ + self._loadInProgress = false; + errorCallback(error, keywordArgs); + }); + + //Wire up the cancel to abort of the request + //This call cancel on the deferred if it hasn't been called + //yet and then will chain to the simple abort of the + //simpleFetch keywordArgs + var oldAbort = null; + if(keywordArgs.abort){ + oldAbort = keywordArgs.abort; + } + keywordArgs.abort = function(){ + var df = getHandler; + if(df && df.fired === -1){ + df.cancel(); + df = null; + } + if(oldAbort){ + oldAbort.call(keywordArgs); + } + }; + } + }else if(this._jsonData){ + try{ + this._loadFinished = true; + this._getItemsFromLoadedData(this._jsonData); + this._jsonData = null; + filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions)); + }catch(e){ + errorCallback(e, keywordArgs); + } + }else{ + errorCallback(new Error("dojox.data.AndOrReadStore: No JSON source data was provided as either URL or a nested Javascript object."), keywordArgs); + } + } //end deferred fetching. + }, //end _fetchItems + + _handleQueuedFetches: function(){ + // summary: + // Internal function to execute delayed request in the store. + //Execute any deferred fetches now. + if(this._queuedFetches.length > 0){ + for(var i = 0; i < this._queuedFetches.length; i++){ + var fData = this._queuedFetches[i]; + var delayedQuery = fData.args; + var delayedFilter = fData.filter; + if(delayedFilter){ + delayedFilter(delayedQuery, this._getItemsArray(delayedQuery.queryOptions)); + }else{ + this.fetchItemByIdentity(delayedQuery); + } + } + this._queuedFetches = []; + } + }, + + _getItemsArray: function(/*object?*/queryOptions){ + // summary: + // Internal function to determine which list of items to search over. + // queryOptions: The query options parameter, if any. + if(queryOptions && queryOptions.deep){ + return this._arrayOfAllItems; + } + return this._arrayOfTopLevelItems; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + if(this.clearOnClose && + this._loadFinished && + !this._loadInProgress){ + //Reset all internalsback to default state. This will force a reload + //on next fetch. This also checks that the data or url param was set + //so that the store knows it can get data. Without one of those being set, + //the next fetch will trigger an error. + + if(((this._jsonFileUrl == "" || this._jsonFileUrl == null) && + (this.url == "" || this.url == null) + ) && this.data == null){ + console.debug("dojox.data.AndOrReadStore: WARNING! Data reload " + + " information has not been provided." + + " Please set 'url' or 'data' to the appropriate value before" + + " the next fetch"); + } + this._arrayOfAllItems = []; + this._arrayOfTopLevelItems = []; + this._loadFinished = false; + this._itemsByIdentity = null; + this._loadInProgress = false; + this._queuedFetches = []; + } + }, + + _getItemsFromLoadedData: function(/* Object */ dataObject){ + // summary: + // Function to parse the loaded data into item format and build the internal items array. + // description: + // Function to parse the loaded data into item format and build the internal items array. + // + // dataObject: + // The JS data object containing the raw data to convery into item format. + // + // returns: array + // Array of items in store item format. + + // First, we define a couple little utility functions... + + var self = this; + function valueIsAnItem(/* anything */ aValue){ + // summary: + // Given any sort of value that could be in the raw json data, + // return true if we should interpret the value as being an + // item itself, rather than a literal value or a reference. + // example: + // | false == valueIsAnItem("Kermit"); + // | false == valueIsAnItem(42); + // | false == valueIsAnItem(new Date()); + // | false == valueIsAnItem({_type:'Date', _value:'May 14, 1802'}); + // | false == valueIsAnItem({_reference:'Kermit'}); + // | true == valueIsAnItem({name:'Kermit', color:'green'}); + // | true == valueIsAnItem({iggy:'pop'}); + // | true == valueIsAnItem({foo:42}); + var isItem = ( + (aValue !== null) && + (typeof aValue === "object") && + (!lang.isArray(aValue)) && + (!lang.isFunction(aValue)) && + (aValue.constructor == Object) && + (typeof aValue._reference === "undefined") && + (typeof aValue._type === "undefined") && + (typeof aValue._value === "undefined") && + self.hierarchical + ); + return isItem; + } + + function addItemAndSubItemsToArrayOfAllItems(/* Item */ anItem){ + self._arrayOfAllItems.push(anItem); + for(var attribute in anItem){ + var valueForAttribute = anItem[attribute]; + if(valueForAttribute){ + if(lang.isArray(valueForAttribute)){ + var valueArray = valueForAttribute; + for(var k = 0; k < valueArray.length; ++k){ + var singleValue = valueArray[k]; + if(valueIsAnItem(singleValue)){ + addItemAndSubItemsToArrayOfAllItems(singleValue); + } + } + }else{ + if(valueIsAnItem(valueForAttribute)){ + addItemAndSubItemsToArrayOfAllItems(valueForAttribute); + } + } + } + } + } + + this._labelAttr = dataObject.label; + + // We need to do some transformations to convert the data structure + // that we read from the file into a format that will be convenient + // to work with in memory. + + // Step 1: Walk through the object hierarchy and build a list of all items + var i; + var item; + this._arrayOfAllItems = []; + this._arrayOfTopLevelItems = dataObject.items; + + for(i = 0; i < this._arrayOfTopLevelItems.length; ++i){ + item = this._arrayOfTopLevelItems[i]; + addItemAndSubItemsToArrayOfAllItems(item); + item[this._rootItemPropName]=true; + } + + // Step 2: Walk through all the attribute values of all the items, + // and replace single values with arrays. For example, we change this: + // { name:'Miss Piggy', pets:'Foo-Foo'} + // into this: + // { name:['Miss Piggy'], pets:['Foo-Foo']} + // + // We also store the attribute names so we can validate our store + // reference and item id special properties for the O(1) isItem + var allAttributeNames = {}; + var key; + + for(i = 0; i < this._arrayOfAllItems.length; ++i){ + item = this._arrayOfAllItems[i]; + for(key in item){ + if(key !== this._rootItemPropName){ + var value = item[key]; + if(value !== null){ + if(!lang.isArray(value)){ + item[key] = [value]; + } + }else{ + item[key] = [null]; + } + } + allAttributeNames[key]=key; + } + } + + // Step 3: Build unique property names to use for the _storeRefPropName and _itemNumPropName + // This should go really fast, it will generally never even run the loop. + while(allAttributeNames[this._storeRefPropName]){ + this._storeRefPropName += "_"; + } + while(allAttributeNames[this._itemNumPropName]){ + this._itemNumPropName += "_"; + } + while(allAttributeNames[this._reverseRefMap]){ + this._reverseRefMap += "_"; + } + + // Step 4: Some data files specify an optional 'identifier', which is + // the name of an attribute that holds the identity of each item. + // If this data file specified an identifier attribute, then build a + // hash table of items keyed by the identity of the items. + var arrayOfValues; + + var identifier = dataObject.identifier; + if(identifier){ + this._itemsByIdentity = {}; + this._features['dojo.data.api.Identity'] = identifier; + for(i = 0; i < this._arrayOfAllItems.length; ++i){ + item = this._arrayOfAllItems[i]; + arrayOfValues = item[identifier]; + var identity = arrayOfValues[0]; + if(!this._itemsByIdentity[identity]){ + this._itemsByIdentity[identity] = item; + }else{ + if(this._jsonFileUrl){ + throw new Error("dojox.data.AndOrReadStore: The json data as specified by: [" + this._jsonFileUrl + "] is malformed. Items within the list have identifier: [" + identifier + "]. Value collided: [" + identity + "]"); + }else if(this._jsonData){ + throw new Error("dojox.data.AndOrReadStore: The json data provided by the creation arguments is malformed. Items within the list have identifier: [" + identifier + "]. Value collided: [" + identity + "]"); + } + } + } + }else{ + this._features['dojo.data.api.Identity'] = Number; + } + + // Step 5: Walk through all the items, and set each item's properties + // for _storeRefPropName and _itemNumPropName, so that store.isItem() will return true. + for(i = 0; i < this._arrayOfAllItems.length; ++i){ + item = this._arrayOfAllItems[i]; + item[this._storeRefPropName] = this; + item[this._itemNumPropName] = i; + } + + // Step 6: We walk through all the attribute values of all the items, + // looking for type/value literals and item-references. + // + // We replace item-references with pointers to items. For example, we change: + // { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } + // into this: + // { name:['Kermit'], friends:[miss_piggy] } + // (where miss_piggy is the object representing the 'Miss Piggy' item). + // + // We replace type/value pairs with typed-literals. For example, we change: + // { name:['Nelson Mandela'], born:[{_type:'Date', _value:'July 18, 1918'}] } + // into this: + // { name:['Kermit'], born:(new Date('July 18, 1918')) } + // + // We also generate the associate map for all items for the O(1) isItem function. + for(i = 0; i < this._arrayOfAllItems.length; ++i){ + item = this._arrayOfAllItems[i]; // example: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } + for(key in item){ + arrayOfValues = item[key]; // example: [{_reference:{name:'Miss Piggy'}}] + for(var j = 0; j < arrayOfValues.length; ++j){ + value = arrayOfValues[j]; // example: {_reference:{name:'Miss Piggy'}} + if(value !== null && typeof value == "object"){ + if(("_type" in value) && ("_value" in value)){ + var type = value._type; // examples: 'Date', 'Color', or 'ComplexNumber' + var mappingObj = this._datatypeMap[type]; // examples: Date, dojo.Color, foo.math.ComplexNumber, {type: dojo.Color, deserialize(value){ return new dojo.Color(value)}} + if(!mappingObj){ + throw new Error("dojox.data.AndOrReadStore: in the typeMap constructor arg, no object class was specified for the datatype '" + type + "'"); + }else if(lang.isFunction(mappingObj)){ + arrayOfValues[j] = new mappingObj(value._value); + }else if(lang.isFunction(mappingObj.deserialize)){ + arrayOfValues[j] = mappingObj.deserialize(value._value); + }else{ + throw new Error("dojox.data.AndOrReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function"); + } + } + if(value._reference){ + var referenceDescription = value._reference; // example: {name:'Miss Piggy'} + if(!lang.isObject(referenceDescription)){ + // example: 'Miss Piggy' + // from an item like: { name:['Kermit'], friends:[{_reference:'Miss Piggy'}]} + arrayOfValues[j] = this._getItemByIdentity(referenceDescription); + }else{ + // example: {name:'Miss Piggy'} + // from an item like: { name:['Kermit'], friends:[{_reference:{name:'Miss Piggy'}}] } + for(var k = 0; k < this._arrayOfAllItems.length; ++k){ + var candidateItem = this._arrayOfAllItems[k]; + var found = true; + for(var refKey in referenceDescription){ + if(candidateItem[refKey] != referenceDescription[refKey]){ + found = false; + } + } + if(found){ + arrayOfValues[j] = candidateItem; + } + } + } + if(this.referenceIntegrity){ + var refItem = arrayOfValues[j]; + if(this.isItem(refItem)){ + this._addReferenceToMap(refItem, item, key); + } + } + }else if(this.isItem(value)){ + //It's a child item (not one referenced through _reference). + //We need to treat this as a referenced item, so it can be cleaned up + //in a write store easily. + if(this.referenceIntegrity){ + this._addReferenceToMap(value, item, key); + } + } + } + } + } + } + }, + + _addReferenceToMap: function(/*item*/ refItem, /*item*/ parentItem, /*string*/ attribute){ + // summary: + // Method to add an reference map entry for an item and attribute. + // description: + // Method to add an reference map entry for an item and attribute. // + // refItem: + // The item that is referenced. + // parentItem: + // The item that holds the new reference to refItem. + // attribute: + // The attribute on parentItem that contains the new reference. + + //Stub function, does nothing. Real processing is in ItemFileWriteStore. + }, + + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + var identifier = this._features['dojo.data.api.Identity']; + if(identifier === Number){ + return item[this._itemNumPropName]; // Number + }else{ + var arrayOfValues = item[identifier]; + if(arrayOfValues){ + return arrayOfValues[0]; // Object || String + } + } + return null; // null + }, + + fetchItemByIdentity: function(/* Object */ keywordArgs){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity() + + // Hasn't loaded yet, we have to trigger the load. + if(!this._loadFinished){ + var self = this; + if(this._jsonFileUrl !== this._ccUrl){ + kernel.deprecated("dojox.data.AndOrReadStore: ", + "To change the url, set the url property of the store," + + " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); + this._ccUrl = this._jsonFileUrl; + this.url = this._jsonFileUrl; + }else if(this.url !== this._ccUrl){ + this._jsonFileUrl = this.url; + this._ccUrl = this.url; + } + //See if there was any forced reset of data. + if(this.data != null && this._jsonData == null){ + this._jsonData = this.data; + this.data = null; + } + if(this._jsonFileUrl){ + + if(this._loadInProgress){ + this._queuedFetches.push({args: keywordArgs}); + }else{ + this._loadInProgress = true; + var getArgs = { + url: self._jsonFileUrl, + handleAs: "json-comment-optional", + preventCache: this.urlPreventCache + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + var scope = keywordArgs.scope?keywordArgs.scope:winUtil.global; + try{ + self._getItemsFromLoadedData(data); + self._loadFinished = true; + self._loadInProgress = false; + var item = self._getItemByIdentity(keywordArgs.identity); + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, item); + } + self._handleQueuedFetches(); + }catch(error){ + self._loadInProgress = false; + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, error); + } + } + }); + getHandler.addErrback(function(error){ + self._loadInProgress = false; + if(keywordArgs.onError){ + var scope = keywordArgs.scope?keywordArgs.scope:winUtil.global; + keywordArgs.onError.call(scope, error); + } + }); + } + + }else if(this._jsonData){ + // Passed in data, no need to xhr. + self._getItemsFromLoadedData(self._jsonData); + self._jsonData = null; + self._loadFinished = true; + var item = self._getItemByIdentity(keywordArgs.identity); + if(keywordArgs.onItem){ + var scope = keywordArgs.scope?keywordArgs.scope:winUtil.global; + keywordArgs.onItem.call(scope, item); + } + } + }else{ + // Already loaded. We can just look it up and call back. + var item = this._getItemByIdentity(keywordArgs.identity); + if(keywordArgs.onItem){ + var scope = keywordArgs.scope?keywordArgs.scope:winUtil.global; + keywordArgs.onItem.call(scope, item); + } + } + }, + + _getItemByIdentity: function(/* Object */ identity){ + // summary: + // Internal function to look an item up by its identity map. + var item = null; + if(this._itemsByIdentity){ + item = this._itemsByIdentity[identity]; + }else{ + item = this._arrayOfAllItems[identity]; + } + if(item === undefined){ + item = null; + } + return item; // Object + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentifierAttributes() + + var identifier = this._features['dojo.data.api.Identity']; + if(identifier === Number){ + // If (identifier === Number) it means getIdentity() just returns + // an integer item-number for each item. The dojo.data.api.Identity + // spec says we need to return null if the identity is not composed + // of attributes + return null; // null + }else{ + return [identifier]; // Array + } + }, + + _forceLoad: function(){ + // summary: + // Internal function to force a load of the store if it hasn't occurred yet. This is required + // for specific functions to work properly. + var self = this; + if(this._jsonFileUrl !== this._ccUrl){ + kernel.deprecated("dojox.data.AndOrReadStore: ", + "To change the url, set the url property of the store," + + " not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0"); + this._ccUrl = this._jsonFileUrl; + this.url = this._jsonFileUrl; + }else if(this.url !== this._ccUrl){ + this._jsonFileUrl = this.url; + this._ccUrl = this.url; + } + //See if there was any forced reset of data. + if(this.data != null && this._jsonData == null){ + this._jsonData = this.data; + this.data = null; + } + if(this._jsonFileUrl){ + var getArgs = { + url: self._jsonFileUrl, + handleAs: "json-comment-optional", + preventCache: this.urlPreventCache, + sync: true + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + try{ + //Check to be sure there wasn't another load going on concurrently + //So we don't clobber data that comes in on it. If there is a load going on + //then do not save this data. It will potentially clobber current data. + //We mainly wanted to sync/wait here. + //TODO: Revisit the loading scheme of this store to improve multi-initial + //request handling. + if(self._loadInProgress !== true && !self._loadFinished){ + self._getItemsFromLoadedData(data); + self._loadFinished = true; + }else if(self._loadInProgress){ + //Okay, we hit an error state we can't recover from. A forced load occurred + //while an async load was occurring. Since we cannot block at this point, the best + //that can be managed is to throw an error. + throw new Error("dojox.data.AndOrReadStore: Unable to perform a synchronous load, an async load is in progress."); + } + }catch(e){ + console.log(e); + throw e; + } + }); + getHandler.addErrback(function(error){ + throw error; + }); + }else if(this._jsonData){ + self._getItemsFromLoadedData(self._jsonData); + self._jsonData = null; + self._loadFinished = true; + } + } +}); +//Mix in the simple fetch implementation to this class. +lang.extend(AndOrReadStore, simpleFetch); + +return AndOrReadStore; +}); + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/AndOrWriteStore.js b/js/dojo-release-1.7.2-src/dojox/data/AndOrWriteStore.js new file mode 100755 index 0000000..8c67bae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/AndOrWriteStore.js @@ -0,0 +1,811 @@ +define(["dojo/_base/declare","dojo/_base/lang","dojo/_base/array", "dojo/_base/json", "dojo/date/stamp", + "dojo/_base/window", "./AndOrReadStore"], + function(declare, lang, arrayUtil, json, dateStamp, winUtil, AndOrReadStore) { +/*===== var AndOrReadStore = dojox.data.AndOrReadStore; =====*/ + +return declare("dojox.data.AndOrWriteStore", AndOrReadStore, { + constructor: function(/* object */ keywordParameters){ + // keywordParameters: {typeMap: object) + // The structure of the typeMap object is as follows: + // { + // type0: function || object, + // type1: function || object, + // ... + // typeN: function || object + // } + // Where if it is a function, it is assumed to be an object constructor that takes the + // value of _value as the initialization parameters. It is serialized assuming object.toString() + // serialization. If it is an object, then it is assumed + // to be an object of general form: + // { + // type: function, //constructor. + // deserialize: function(value) //The function that parses the value and constructs the object defined by type appropriately. + // serialize: function(object) //The function that converts the object back into the proper file format form. + // } + + // AndOrWriteStore duplicates ItemFileWriteStore, except extends AndOrReadStore, which offers complex queries. + // ItemFileWriteStore extends ItemFileReadStore to implement these additional dojo.data APIs + this._features['dojo.data.api.Write'] = true; + this._features['dojo.data.api.Notification'] = true; + + // For keeping track of changes so that we can implement isDirty and revert + this._pending = { + _newItems:{}, + _modifiedItems:{}, + _deletedItems:{} + }; + + if(!this._datatypeMap['Date'].serialize){ + this._datatypeMap['Date'].serialize = function(obj){ + return dateStamp.toISOString(obj, {zulu:true}); + }; + } + //Disable only if explicitly set to false. + if(keywordParameters && (keywordParameters.referenceIntegrity === false)){ + this.referenceIntegrity = false; + } + + // this._saveInProgress is set to true, briefly, from when save() is first called to when it completes + this._saveInProgress = false; + }, + + referenceIntegrity: true, //Flag that defaultly enabled reference integrity tracking. This way it can also be disabled pogrammatially or declaratively. + + _assert: function(/* boolean */ condition){ + if(!condition){ + throw new Error("assertion failed in ItemFileWriteStore"); + } + }, + + _getIdentifierAttribute: function(){ + var identifierAttribute = this.getFeatures()['dojo.data.api.Identity']; + // this._assert((identifierAttribute === Number) || (dojo.isString(identifierAttribute))); + return identifierAttribute; + }, + + +/* dojo.data.api.Write */ + + newItem: function(/* Object? */ keywordArgs, /* Object? */ parentInfo){ + // summary: See dojo.data.api.Write.newItem() + + this._assert(!this._saveInProgress); + + if(!this._loadFinished){ + // We need to do this here so that we'll be able to find out what + // identifierAttribute was specified in the data file. + this._forceLoad(); + } + + if(typeof keywordArgs != "object" && typeof keywordArgs != "undefined"){ + throw new Error("newItem() was passed something other than an object"); + } + var newIdentity = null; + var identifierAttribute = this._getIdentifierAttribute(); + if(identifierAttribute === Number){ + newIdentity = this._arrayOfAllItems.length; + }else{ + newIdentity = keywordArgs[identifierAttribute]; + if(typeof newIdentity === "undefined"){ + throw new Error("newItem() was not passed an identity for the new item"); + } + if(lang.isArray(newIdentity)){ + throw new Error("newItem() was not passed an single-valued identity"); + } + } + + // make sure this identity is not already in use by another item, if identifiers were + // defined in the file. Otherwise it would be the item count, + // which should always be unique in this case. + if(this._itemsByIdentity){ + this._assert(typeof this._itemsByIdentity[newIdentity] === "undefined"); + } + this._assert(typeof this._pending._newItems[newIdentity] === "undefined"); + this._assert(typeof this._pending._deletedItems[newIdentity] === "undefined"); + + var newItem = {}; + newItem[this._storeRefPropName] = this; + newItem[this._itemNumPropName] = this._arrayOfAllItems.length; + if(this._itemsByIdentity){ + this._itemsByIdentity[newIdentity] = newItem; + //We have to set the identifier now, otherwise we can't look it + //up at calls to setValueorValues in parentInfo handling. + newItem[identifierAttribute] = [newIdentity]; + } + this._arrayOfAllItems.push(newItem); + + //We need to construct some data for the onNew call too... + var pInfo = null; + + // Now we need to check to see where we want to assign this thingm if any. + if(parentInfo && parentInfo.parent && parentInfo.attribute){ + pInfo = { + item: parentInfo.parent, + attribute: parentInfo.attribute, + oldValue: undefined + }; + + //See if it is multi-valued or not and handle appropriately + //Generally, all attributes are multi-valued for this store + //So, we only need to append if there are already values present. + var values = this.getValues(parentInfo.parent, parentInfo.attribute); + if(values && values.length > 0){ + var tempValues = values.slice(0, values.length); + if(values.length === 1){ + pInfo.oldValue = values[0]; + }else{ + pInfo.oldValue = values.slice(0, values.length); + } + tempValues.push(newItem); + this._setValueOrValues(parentInfo.parent, parentInfo.attribute, tempValues, false); + pInfo.newValue = this.getValues(parentInfo.parent, parentInfo.attribute); + }else{ + this._setValueOrValues(parentInfo.parent, parentInfo.attribute, newItem, false); + pInfo.newValue = newItem; + } + }else{ + //Toplevel item, add to both top list as well as all list. + newItem[this._rootItemPropName]=true; + this._arrayOfTopLevelItems.push(newItem); + } + + this._pending._newItems[newIdentity] = newItem; + + //Clone over the properties to the new item + for(var key in keywordArgs){ + if(key === this._storeRefPropName || key === this._itemNumPropName){ + // Bummer, the user is trying to do something like + // newItem({_S:"foo"}). Unfortunately, our superclass, + // ItemFileReadStore, is already using _S in each of our items + // to hold private info. To avoid a naming collision, we + // need to move all our private info to some other property + // of all the items/objects. So, we need to iterate over all + // the items and do something like: + // item.__S = item._S; + // item._S = undefined; + // But first we have to make sure the new "__S" variable is + // not in use, which means we have to iterate over all the + // items checking for that. + throw new Error("encountered bug in ItemFileWriteStore.newItem"); + } + var value = keywordArgs[key]; + if(!lang.isArray(value)){ + value = [value]; + } + newItem[key] = value; + if(this.referenceIntegrity){ + for(var i = 0; i < value.length; i++){ + var val = value[i]; + if(this.isItem(val)){ + this._addReferenceToMap(val, newItem, key); + } + } + } + } + this.onNew(newItem, pInfo); // dojo.data.api.Notification call + return newItem; // item + }, + + _removeArrayElement: function(/* Array */ array, /* anything */ element){ + var index = arrayUtil.indexOf(array, element); + if(index != -1){ + array.splice(index, 1); + return true; + } + return false; + }, + + deleteItem: function(/* item */ item){ + // summary: See dojo.data.api.Write.deleteItem() + this._assert(!this._saveInProgress); + this._assertIsItem(item); + + // Remove this item from the _arrayOfAllItems, but leave a null value in place + // of the item, so as not to change the length of the array, so that in newItem() + // we can still safely do: newIdentity = this._arrayOfAllItems.length; + var indexInArrayOfAllItems = item[this._itemNumPropName]; + var identity = this.getIdentity(item); + + //If we have reference integrity on, we need to do reference cleanup for the deleted item + if(this.referenceIntegrity){ + //First scan all the attributes of this items for references and clean them up in the map + //As this item is going away, no need to track its references anymore. + + //Get the attributes list before we generate the backup so it + //doesn't pollute the attributes list. + var attributes = this.getAttributes(item); + + //Backup the map, we'll have to restore it potentially, in a revert. + if(item[this._reverseRefMap]){ + item["backup_" + this._reverseRefMap] = lang.clone(item[this._reverseRefMap]); + } + + //TODO: This causes a reversion problem. This list won't be restored on revert since it is + //attached to the 'value'. item, not ours. Need to back tese up somehow too. + //Maybe build a map of the backup of the entries and attach it to the deleted item to be restored + //later. Or just record them and call _addReferenceToMap on them in revert. + arrayUtil.forEach(attributes, function(attribute){ + arrayUtil.forEach(this.getValues(item, attribute), function(value){ + if(this.isItem(value)){ + //We have to back up all the references we had to others so they can be restored on a revert. + if(!item["backupRefs_" + this._reverseRefMap]){ + item["backupRefs_" + this._reverseRefMap] = []; + } + item["backupRefs_" + this._reverseRefMap].push({id: this.getIdentity(value), attr: attribute}); + this._removeReferenceFromMap(value, item, attribute); + } + }, this); + }, this); + + //Next, see if we have references to this item, if we do, we have to clean them up too. + var references = item[this._reverseRefMap]; + if(references){ + //Look through all the items noted as references to clean them up. + for(var itemId in references){ + var containingItem = null; + if(this._itemsByIdentity){ + containingItem = this._itemsByIdentity[itemId]; + }else{ + containingItem = this._arrayOfAllItems[itemId]; + } + //We have a reference to a containing item, now we have to process the + //attributes and clear all references to the item being deleted. + if(containingItem){ + for(var attribute in references[itemId]){ + var oldValues = this.getValues(containingItem, attribute) || []; + var newValues = arrayUtil.filter(oldValues, function(possibleItem){ + return !(this.isItem(possibleItem) && this.getIdentity(possibleItem) == identity); + }, this); + //Remove the note of the reference to the item and set the values on the modified attribute. + this._removeReferenceFromMap(item, containingItem, attribute); + if(newValues.length < oldValues.length){ + this._setValueOrValues(containingItem, attribute, newValues); + } + } + } + } + } + } + + this._arrayOfAllItems[indexInArrayOfAllItems] = null; + + item[this._storeRefPropName] = null; + if(this._itemsByIdentity){ + delete this._itemsByIdentity[identity]; + } + this._pending._deletedItems[identity] = item; + + //Remove from the toplevel items, if necessary... + if(item[this._rootItemPropName]){ + this._removeArrayElement(this._arrayOfTopLevelItems, item); + } + this.onDelete(item); // dojo.data.api.Notification call + return true; + }, + + setValue: function(/* item */ item, /* attribute-name-string */ attribute, /* almost anything */ value){ + // summary: See dojo.data.api.Write.set() + return this._setValueOrValues(item, attribute, value, true); // boolean + }, + + setValues: function(/* item */ item, /* attribute-name-string */ attribute, /* array */ values){ + // summary: See dojo.data.api.Write.setValues() + return this._setValueOrValues(item, attribute, values, true); // boolean + }, + + unsetAttribute: function(/* item */ item, /* attribute-name-string */ attribute){ + // summary: See dojo.data.api.Write.unsetAttribute() + return this._setValueOrValues(item, attribute, [], true); + }, + + _setValueOrValues: function(/* item */ item, /* attribute-name-string */ attribute, /* anything */ newValueOrValues, /*boolean?*/ callOnSet){ + this._assert(!this._saveInProgress); + + // Check for valid arguments + this._assertIsItem(item); + this._assert(lang.isString(attribute)); + this._assert(typeof newValueOrValues !== "undefined"); + + // Make sure the user isn't trying to change the item's identity + var identifierAttribute = this._getIdentifierAttribute(); + if(attribute == identifierAttribute){ + throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier."); + } + + // To implement the Notification API, we need to make a note of what + // the old attribute value was, so that we can pass that info when + // we call the onSet method. + var oldValueOrValues = this._getValueOrValues(item, attribute); + + var identity = this.getIdentity(item); + if(!this._pending._modifiedItems[identity]){ + // Before we actually change the item, we make a copy of it to + // record the original state, so that we'll be able to revert if + // the revert method gets called. If the item has already been + // modified then there's no need to do this now, since we already + // have a record of the original state. + var copyOfItemState = {}; + for(var key in item){ + if((key === this._storeRefPropName) || (key === this._itemNumPropName) || (key === this._rootItemPropName)){ + copyOfItemState[key] = item[key]; + }else if(key === this._reverseRefMap){ + copyOfItemState[key] = lang.clone(item[key]); + }else{ + copyOfItemState[key] = item[key].slice(0, item[key].length); + } + } + // Now mark the item as dirty, and save the copy of the original state + this._pending._modifiedItems[identity] = copyOfItemState; + } + + // Okay, now we can actually change this attribute on the item + var success = false; + + if(lang.isArray(newValueOrValues) && newValueOrValues.length === 0){ + + // If we were passed an empty array as the value, that counts + // as "unsetting" the attribute, so we need to remove this + // attribute from the item. + success = delete item[attribute]; + newValueOrValues = undefined; // used in the onSet Notification call below + + if(this.referenceIntegrity && oldValueOrValues){ + var oldValues = oldValueOrValues; + if(!lang.isArray(oldValues)){ + oldValues = [oldValues]; + } + for(var i = 0; i < oldValues.length; i++){ + var value = oldValues[i]; + if(this.isItem(value)){ + this._removeReferenceFromMap(value, item, attribute); + } + } + } + }else{ + var newValueArray; + if(lang.isArray(newValueOrValues)){ + var newValues = newValueOrValues; + // Unfortunately, it's not safe to just do this: + // newValueArray = newValues; + // Instead, we need to copy the array, which slice() does very nicely. + // This is so that our internal data structure won't + // get corrupted if the user mucks with the values array *after* + // calling setValues(). + newValueArray = newValueOrValues.slice(0, newValueOrValues.length); + }else{ + newValueArray = [newValueOrValues]; + } + + //We need to handle reference integrity if this is on. + //In the case of set, we need to see if references were added or removed + //and update the reference tracking map accordingly. + if(this.referenceIntegrity){ + if(oldValueOrValues){ + var oldValues = oldValueOrValues; + if(!lang.isArray(oldValues)){ + oldValues = [oldValues]; + } + //Use an associative map to determine what was added/removed from the list. + //Should be O(n) performant. First look at all the old values and make a list of them + //Then for any item not in the old list, we add it. If it was already present, we remove it. + //Then we pass over the map and any references left it it need to be removed (IE, no match in + //the new values list). + var map = {}; + arrayUtil.forEach(oldValues, function(possibleItem){ + if(this.isItem(possibleItem)){ + var id = this.getIdentity(possibleItem); + map[id.toString()] = true; + } + }, this); + arrayUtil.forEach(newValueArray, function(possibleItem){ + if(this.isItem(possibleItem)){ + var id = this.getIdentity(possibleItem); + if(map[id.toString()]){ + delete map[id.toString()]; + }else{ + this._addReferenceToMap(possibleItem, item, attribute); + } + } + }, this); + for(var rId in map){ + var removedItem; + if(this._itemsByIdentity){ + removedItem = this._itemsByIdentity[rId]; + }else{ + removedItem = this._arrayOfAllItems[rId]; + } + this._removeReferenceFromMap(removedItem, item, attribute); + } + }else{ + //Everything is new (no old values) so we have to just + //insert all the references, if any. + for(var i = 0; i < newValueArray.length; i++){ + var value = newValueArray[i]; + if(this.isItem(value)){ + this._addReferenceToMap(value, item, attribute); + } + } + } + } + item[attribute] = newValueArray; + success = true; + } + + // Now we make the dojo.data.api.Notification call + if(callOnSet){ + this.onSet(item, attribute, oldValueOrValues, newValueOrValues); + } + return success; // boolean + }, + + _addReferenceToMap: function(/*item*/ refItem, /*item*/ parentItem, /*string*/ attribute){ + // summary: + // Method to add an reference map entry for an item and attribute. + // description: + // Method to add an reference map entry for an item and attribute. // + // refItem: + // The item that is referenced. + // parentItem: + // The item that holds the new reference to refItem. + // attribute: + // The attribute on parentItem that contains the new reference. + + var parentId = this.getIdentity(parentItem); + var references = refItem[this._reverseRefMap]; + + if(!references){ + references = refItem[this._reverseRefMap] = {}; + } + var itemRef = references[parentId]; + if(!itemRef){ + itemRef = references[parentId] = {}; + } + itemRef[attribute] = true; + }, + + _removeReferenceFromMap: function(/* item */ refItem, /* item */ parentItem, /*strin*/ attribute){ + // summary: + // Method to remove an reference map entry for an item and attribute. + // description: + // Method to remove an reference map entry for an item and attribute. This will + // also perform cleanup on the map such that if there are no more references at all to + // the item, its reference object and entry are removed. + // + // refItem: + // The item that is referenced. + // parentItem: + // The item holding a reference to refItem. + // attribute: + // The attribute on parentItem that contains the reference. + var identity = this.getIdentity(parentItem); + var references = refItem[this._reverseRefMap]; + var itemId; + if(references){ + for(itemId in references){ + if(itemId == identity){ + delete references[itemId][attribute]; + if(this._isEmpty(references[itemId])){ + delete references[itemId]; + } + } + } + if(this._isEmpty(references)){ + delete refItem[this._reverseRefMap]; + } + } + }, + + _dumpReferenceMap: function(){ + // summary: + // Function to dump the reverse reference map of all items in the store for debug purposes. + // description: + // Function to dump the reverse reference map of all items in the store for debug purposes. + var i; + for(i = 0; i < this._arrayOfAllItems.length; i++){ + var item = this._arrayOfAllItems[i]; + if(item && item[this._reverseRefMap]){ + console.log("Item: [" + this.getIdentity(item) + "] is referenced by: " + json.toJson(item[this._reverseRefMap])); + } + } + }, + + _getValueOrValues: function(/* item */ item, /* attribute-name-string */ attribute){ + var valueOrValues = undefined; + if(this.hasAttribute(item, attribute)){ + var valueArray = this.getValues(item, attribute); + if(valueArray.length == 1){ + valueOrValues = valueArray[0]; + }else{ + valueOrValues = valueArray; + } + } + return valueOrValues; + }, + + _flatten: function(/* anything */ value){ + if(this.isItem(value)){ + var item = value; + // Given an item, return an serializable object that provides a + // reference to the item. + // For example, given kermit: + // var kermit = store.newItem({id:2, name:"Kermit"}); + // we want to return + // {_reference:2} + var identity = this.getIdentity(item); + var referenceObject = {_reference: identity}; + return referenceObject; + }else{ + if(typeof value === "object"){ + for(var type in this._datatypeMap){ + var typeMap = this._datatypeMap[type]; + if(lang.isObject(typeMap) && !lang.isFunction(typeMap)){ + if(value instanceof typeMap.type){ + if(!typeMap.serialize){ + throw new Error("ItemFileWriteStore: No serializer defined for type mapping: [" + type + "]"); + } + return {_type: type, _value: typeMap.serialize(value)}; + } + } else if(value instanceof typeMap){ + //SImple mapping, therefore, return as a toString serialization. + return {_type: type, _value: value.toString()}; + } + } + } + return value; + } + }, + + _getNewFileContentString: function(){ + // summary: + // Generate a string that can be saved to a file. + // The result should look similar to: + // http://trac.dojotoolkit.org/browser/dojo/trunk/tests/data/countries.json + var serializableStructure = {}; + + var identifierAttribute = this._getIdentifierAttribute(); + if(identifierAttribute !== Number){ + serializableStructure.identifier = identifierAttribute; + } + if(this._labelAttr){ + serializableStructure.label = this._labelAttr; + } + serializableStructure.items = []; + for(var i = 0; i < this._arrayOfAllItems.length; ++i){ + var item = this._arrayOfAllItems[i]; + if(item !== null){ + var serializableItem = {}; + for(var key in item){ + if(key !== this._storeRefPropName && key !== this._itemNumPropName && key !== this._reverseRefMap && key !== this._rootItemPropName){ + var attribute = key; + var valueArray = this.getValues(item, attribute); + if(valueArray.length == 1){ + serializableItem[attribute] = this._flatten(valueArray[0]); + }else{ + var serializableArray = []; + for(var j = 0; j < valueArray.length; ++j){ + serializableArray.push(this._flatten(valueArray[j])); + serializableItem[attribute] = serializableArray; + } + } + } + } + serializableStructure.items.push(serializableItem); + } + } + var prettyPrint = true; + return json.toJson(serializableStructure, prettyPrint); + }, + + _isEmpty: function(something){ + // summary: + // Function to determine if an array or object has no properties or values. + // something: + // The array or object to examine. + var empty = true; + if(lang.isObject(something)){ + var i; + for(i in something){ + empty = false; + break; + } + }else if(lang.isArray(something)){ + if(something.length > 0){ + empty = false; + } + } + return empty; //boolean + }, + + save: function(/* object */ keywordArgs){ + // summary: See dojo.data.api.Write.save() + this._assert(!this._saveInProgress); + + // this._saveInProgress is set to true, briefly, from when save is first called to when it completes + this._saveInProgress = true; + + var self = this; + var saveCompleteCallback = function(){ + self._pending = { + _newItems:{}, + _modifiedItems:{}, + _deletedItems:{} + }; + + self._saveInProgress = false; // must come after this._pending is cleared, but before any callbacks + if(keywordArgs && keywordArgs.onComplete){ + var scope = keywordArgs.scope || winUtil.global; + keywordArgs.onComplete.call(scope); + } + }; + var saveFailedCallback = function(){ + self._saveInProgress = false; + if(keywordArgs && keywordArgs.onError){ + var scope = keywordArgs.scope || winUtil.global; + keywordArgs.onError.call(scope); + } + }; + + if(this._saveEverything){ + var newFileContentString = this._getNewFileContentString(); + this._saveEverything(saveCompleteCallback, saveFailedCallback, newFileContentString); + } + if(this._saveCustom){ + this._saveCustom(saveCompleteCallback, saveFailedCallback); + } + if(!this._saveEverything && !this._saveCustom){ + // Looks like there is no user-defined save-handler function. + // That's fine, it just means the datastore is acting as a "mock-write" + // store -- changes get saved in memory but don't get saved to disk. + saveCompleteCallback(); + } + }, + + revert: function(){ + // summary: See dojo.data.api.Write.revert() + this._assert(!this._saveInProgress); + + var identity; + for(identity in this._pending._modifiedItems){ + // find the original item and the modified item that replaced it + var copyOfItemState = this._pending._modifiedItems[identity]; + var modifiedItem = null; + if(this._itemsByIdentity){ + modifiedItem = this._itemsByIdentity[identity]; + }else{ + modifiedItem = this._arrayOfAllItems[identity]; + } + + // Restore the original item into a full-fledged item again, we want to try to + // keep the same object instance as if we don't it, causes bugs like #9022. + copyOfItemState[this._storeRefPropName] = this; + for(key in modifiedItem){ + delete modifiedItem[key]; + } + lang.mixin(modifiedItem, copyOfItemState); + } + var deletedItem; + for(identity in this._pending._deletedItems){ + deletedItem = this._pending._deletedItems[identity]; + deletedItem[this._storeRefPropName] = this; + var index = deletedItem[this._itemNumPropName]; + + //Restore the reverse refererence map, if any. + if(deletedItem["backup_" + this._reverseRefMap]){ + deletedItem[this._reverseRefMap] = deletedItem["backup_" + this._reverseRefMap]; + delete deletedItem["backup_" + this._reverseRefMap]; + } + this._arrayOfAllItems[index] = deletedItem; + if(this._itemsByIdentity){ + this._itemsByIdentity[identity] = deletedItem; + } + if(deletedItem[this._rootItemPropName]){ + this._arrayOfTopLevelItems.push(deletedItem); + } + } + //We have to pass through it again and restore the reference maps after all the + //undeletes have occurred. + for(identity in this._pending._deletedItems){ + deletedItem = this._pending._deletedItems[identity]; + if(deletedItem["backupRefs_" + this._reverseRefMap]){ + arrayUtil.forEach(deletedItem["backupRefs_" + this._reverseRefMap], function(reference){ + var refItem; + if(this._itemsByIdentity){ + refItem = this._itemsByIdentity[reference.id]; + }else{ + refItem = this._arrayOfAllItems[reference.id]; + } + this._addReferenceToMap(refItem, deletedItem, reference.attr); + }, this); + delete deletedItem["backupRefs_" + this._reverseRefMap]; + } + } + + for(identity in this._pending._newItems){ + var newItem = this._pending._newItems[identity]; + newItem[this._storeRefPropName] = null; + // null out the new item, but don't change the array index so + // so we can keep using _arrayOfAllItems.length. + this._arrayOfAllItems[newItem[this._itemNumPropName]] = null; + if(newItem[this._rootItemPropName]){ + this._removeArrayElement(this._arrayOfTopLevelItems, newItem); + } + if(this._itemsByIdentity){ + delete this._itemsByIdentity[identity]; + } + } + + this._pending = { + _newItems:{}, + _modifiedItems:{}, + _deletedItems:{} + }; + return true; // boolean + }, + + isDirty: function(/* item? */ item){ + // summary: See dojo.data.api.Write.isDirty() + if(item){ + // return true if the item is dirty + var identity = this.getIdentity(item); + return new Boolean(this._pending._newItems[identity] || + this._pending._modifiedItems[identity] || + this._pending._deletedItems[identity]).valueOf(); // boolean + }else{ + // return true if the store is dirty -- which means return true + // if there are any new items, dirty items, or modified items + if(!this._isEmpty(this._pending._newItems) || + !this._isEmpty(this._pending._modifiedItems) || + !this._isEmpty(this._pending._deletedItems)){ + return true; + } + return false; // boolean + } + }, + +/* dojo.data.api.Notification */ + + onSet: function(/* item */ item, + /*attribute-name-string*/ attribute, + /*object | array*/ oldValue, + /*object | array*/ newValue){ + // summary: See dojo.data.api.Notification.onSet() + + // No need to do anything. This method is here just so that the + // client code can connect observers to it. + }, + + onNew: function(/* item */ newItem, /*object?*/ parentInfo){ + // summary: See dojo.data.api.Notification.onNew() + + // No need to do anything. This method is here just so that the + // client code can connect observers to it. + }, + + onDelete: function(/* item */ deletedItem){ + // summary: See dojo.data.api.Notification.onDelete() + + // No need to do anything. This method is here just so that the + // client code can connect observers to it. + }, + + close: function(/* object? */ request){ + // summary: + // Over-ride of base close function of ItemFileReadStore to add in check for store state. + // description: + // Over-ride of base close function of ItemFileReadStore to add in check for store state. + // If the store is still dirty (unsaved changes), then an error will be thrown instead of + // clearing the internal state for reload from the url. + + //Clear if not dirty ... or throw an error + if(this.clearOnClose){ + if(!this.isDirty()){ + this.inherited(arguments); + }else{ + //Only throw an error if the store was dirty and we were loading from a url (cannot reload from url until state is saved). + throw new Error("dojox.data.AndOrWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close."); + } + } + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/AppStore.js b/js/dojo-release-1.7.2-src/dojox/data/AppStore.js new file mode 100644 index 0000000..91b8d3d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/AppStore.js @@ -0,0 +1,828 @@ +define(["dojo", "dojox", "dojo/data/util/simpleFetch", "dojo/data/util/filter", "dojox/atom/io/Connection"], function(dojo, dojox) { + +dojo.experimental("dojox.data.AppStore"); + +dojo.declare("dojox.data.AppStore", + null,{ + + // url: [public] string + // So the parser can instantiate the store via markup. + url: "", + + // urlPreventCache: [public] boolean + // Whether or not to pass the preventCache parameter to the connection + urlPreventCache: false, + + // xmethod: [public] boolean + // Whether to use X-Method-Override for PUT/DELETE. + xmethod: false, + + _atomIO: null, + _feed: null, + _requests: null, + _processing: null, + + _updates: null, + _adds: null, + _deletes: null, + + constructor: function(/*Object*/args){ + // summary: + // The APP data store. + // description: + // The APP Store is instantiated either in markup or programmatically by supplying a + // url of the Collection to be used. + // + // args: + // An anonymous object to initialize properties. It expects the following values: + // url: The url of the Collection to load. + // urlPreventCache: Whether or not to append on cache prevention params (as defined by dojo.xhr*) + + if(args && args.url){ + this.url = args.url; + } + if(args && args.urlPreventCache){ + this.urlPreventCache = args.urlPreventCache; + } + if(!this.url){ + throw new Error("A URL is required to instantiate an APP Store object"); + } + }, + + _setFeed: function(feed, data){ + // summary: + // Sets the internal feed using a dojox.atom.io.model.Feed object. + // description: + // Sets the internal feed using a dojox.atom.io.model.Feed object. Also adds + // a property to the entries to track that they belong to this store. It + // also parses stored requests (since we were waiting on a callback) and + // executes those as well. + // + // feed: dojox.atom.io.model.Feed object + // The Feed to use for this data store. + // data: unused + // Signature for this function is defined by AtomIO.getFeed, since this is a callback. + this._feed = feed; + var i; + for(i=0; i 0)?values[0]:defaultValue; //Object || int || Boolean + }, + + getValues: function(/* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.getValues() + + this._assertIsItem(item); + var flag = this._assertIsAttribute(attribute); + + if(flag){ + if((attribute === "author" || attribute === "contributor" || attribute === "link") && item[attribute+"s"]){ + return item[attribute+"s"]; + } + if(attribute === "category" && item.categories){ + return item.categories; + } + if(item[attribute]){ + item = item[attribute]; + if(item.nodeType == "Content"){ + return [item.value]; + } + return [item] ; + } + } + return []; //Array + }, + + getAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + var attributes = []; + for(var key in dojox.atom.io.model._actions){ + if(this.hasAttribute(item, key)){ + attributes.push(key); + } + } + return attributes; //Array + }, + + hasAttribute: function( /* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.hasAttribute() + return this.getValues(item, attribute).length > 0; + }, + + containsValue: function(/* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value){ + // summary: + // See dojo.data.api.Read.containsValue() + var regexp = undefined; + if(typeof value === "string"){ + regexp = dojo.data.util.filter.patternToRegExp(value, false); + } + return this._containsValue(item, attribute, value, regexp); //boolean. + }, + + _containsValue: function( /* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value, + /* RegExp?*/ regexp, + /* Boolean?*/ trim){ + // summary: + // Internal function for looking at the values contained by the item. + // description: + // Internal function for looking at the values contained by the item. This + // function allows for denoting if the comparison should be case sensitive for + // strings or not (for handling filtering cases where string case should not matter) + // + // item: + // The data item to examine for attribute values. + // attribute: + // The attribute to inspect. + // value: + // The value to match. + // regexp: + // Optional regular expression generated off value if value was of string type to handle wildcarding. + // If present and attribute values are string, then it can be used for comparison instead of 'value' + var values = this.getValues(item, attribute); + for(var i = 0; i < values.length; ++i){ + var possibleValue = values[i]; + if(typeof possibleValue === "string" && regexp){ + if(trim){ + possibleValue = possibleValue.replace(new RegExp(/^\s+/),""); // START + possibleValue = possibleValue.replace(new RegExp(/\s+$/),""); // END + } + possibleValue = possibleValue.replace(/\r|\n|\r\n/g, ""); + return (possibleValue.match(regexp) !== null); + }else{ + //Non-string matching. + if(value === possibleValue){ + return true; // Boolean + } + } + } + return false; // Boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItem() + return something && something.store && something.store === this; //boolean + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(something); + }, + + loadItem: function(/* Object */ keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + this._assertIsItem(keywordArgs.item); + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Fetch items (Atom entries) that match to a query + // description: + // Fetch items (Atom entries) that match to a query + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + if(this._feed){ + this._finishFetchItems(request, fetchHandler, errorHandler); + }else{ + var flag = false; + if(!this._requests){ + this._requests = []; + flag = true; + } + this._requests.push({request: request, fh: fetchHandler, eh: errorHandler}); + if(flag){ + this._atomIO = new dojox.atom.io.Connection(false, this.urlPreventCache); + this._atomIO.getFeed(this.url,this._setFeed, null, this); + } + } + }, + + _finishFetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Internal function for finishing a fetch request. + // description: + // Internal function for finishing a fetch request. Needed since the feed + // might not have been loaded, so we finish the fetch in a callback. + // + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + var items = null; + var arrayOfAllItems = this._getAllItems(); + if(request.query){ + var ignoreCase = request.queryOptions ? request.queryOptions.ignoreCase : false; + items = []; + + //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the + //same value for each item examined. Much more efficient. + var regexpList = {}; + var key; + var value; + for(key in request.query){ + value = request.query[key]+''; + if(typeof value === "string"){ + regexpList[key] = dojo.data.util.filter.patternToRegExp(value, ignoreCase); + } + } + + for(var i = 0; i < arrayOfAllItems.length; ++i){ + var match = true; + var candidateItem = arrayOfAllItems[i]; + for(key in request.query){ + value = request.query[key]+''; + if(!this._containsValue(candidateItem, key, value, regexpList[key], request.trim)){ + match = false; + } + } + if(match){ + items.push(candidateItem); + } + } + }else{ + // We want a copy to pass back in case the parent wishes to sort the array. We shouldn't allow resort + // of the internal list so that multiple callers can get listsand sort without affecting each other. + if(arrayOfAllItems.length> 0){ + items = arrayOfAllItems.slice(0,arrayOfAllItems.length); + } + } + try{ + fetchHandler(items, request); + }catch(e){ + errorHandler(e, request); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true, + 'dojo.data.api.Write': true, + 'dojo.data.api.Identity': true + }; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + // nothing to do here! + this._feed = null; + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if(this.isItem(item)){ + return this.getValue(item, "title", "No Title"); + } + return undefined; + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return ["title"]; + }, + +/*************************************** + dojo.data.api.Identity API +***************************************/ + + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + this._assertIsItem(item); + return this.getValue(item, "id"); + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentityAttributes() + return ["id"]; + }, + + fetchItemByIdentity: function(keywordArgs){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity() + + this._fetchItems({query:{id:keywordArgs.identity}, onItem: keywordArgs.onItem, scope: keywordArgs.scope}, + function(items, request){ + var scope = request.scope; + if(!scope){ + scope = dojo.global; + } + if(items.length < 1){ + request.onItem.call(scope, null); + }else{ + request.onItem.call(scope, items[0]); + } + }, keywordArgs.onError); + }, + +/*************************************** + dojo.data.api.Identity API +***************************************/ + + newItem: function(/* Object? */ keywordArgs){ + // summary: + // See dojo.data.api.Write.newItem() + var entry = new dojox.atom.io.model.Entry(); + var value = null; + var temp = null; + var i; + for(var key in keywordArgs){ + if(this._assertIsAttribute(key)){ + value = keywordArgs[key]; + switch(key){ + case "link": + for(i in value){ + temp = value[i]; + entry.addLink(temp.href,temp.rel,temp.hrefLang,temp.title,temp.type); + } + break; + case "author": + for(i in value){ + temp = value[i]; + entry.addAuthor(temp.name, temp.email, temp.uri); + } + break; + case "contributor": + for(i in value){ + temp = value[i]; + entry.addContributor(temp.name, temp.email, temp.uri); + } + break; + case "category": + for(i in value){ + temp = value[i]; + entry.addCategory(temp.scheme, temp.term, temp.label); + } + break; + case "icon": + case "id": + case "logo": + case "xmlBase": + case "rights": + entry[key] = value; + break; + case "updated": + case "published": + case "issued": + case "modified": + entry[key] = dojox.atom.io.model.util.createDate(value); + break; + case "content": + case "summary": + case "title": + case "subtitle": + entry[key] = new dojox.atom.io.model.Content(key); + entry[key].value = value; + break; + default: + entry[key] = value; + break; + } + } + } + entry.store = this; + entry.isDirty = true; + + if(!this._adds){ + this._adds = [entry]; + }else{ + this._adds.push(entry); + } + + if(this._feed){ + this._feed.addEntry(entry); + }else{ + if(this._requests){ + this._requests.push({add:entry}); + }else{ + this._requests = [{add:entry}]; + this._atomIO = new dojox.atom.io.Connection(false, this.urlPreventCache); + this._atomIO.getFeed(this.url,dojo.hitch(this,this._setFeed)); + } + } + return true; + }, + + deleteItem: function(/* item */ item){ + // summary: + // See dojo.data.api.Write.deleteItem() + this._assertIsItem(item); + + if(!this._deletes){ + this._deletes = [item]; + }else{ + this._deletes.push(item); + } + + if(this._feed){ + this._feed.removeEntry(item); + }else{ + if(this._requests){ + this._requests.push({remove:item}); + }else{ + this._requests = [{remove:item}]; + this._atomIO = new dojox.atom.io.Connection(false, this.urlPreventCache); + this._atomIO.getFeed(this.url,dojo.hitch(this,this._setFeed)); + } + } + item = null; + return true; + }, + + setValue: function( /* item */ item, + /* string */ attribute, + /* almost anything */ value){ + // summary: + // See dojo.data.api.Write.setValue() + this._assertIsItem(item); + + var update = {item: item}; + if(this._assertIsAttribute(attribute)){ + switch(attribute){ + case "link": + update.links = item.links; + this._addUpdate(update); + item.links = null; + item.addLink(value.href,value.rel,value.hrefLang,value.title,value.type); + item.isDirty = true; + return true; + case "author": + update.authors = item.authors; + this._addUpdate(update); + item.authors = null; + item.addAuthor(value.name, value.email, value.uri); + item.isDirty = true; + return true; + case "contributor": + update.contributors = item.contributors; + this._addUpdate(update); + item.contributors = null; + item.addContributor(value.name, value.email, value.uri); + item.isDirty = true; + return true; + case "category": + update.categories = item.categories; + this._addUpdate(update); + item.categories = null; + item.addCategory(value.scheme, value.term, value.label); + item.isDirty = true; + return true; + case "icon": + case "id": + case "logo": + case "xmlBase": + case "rights": + update[attribute] = item[attribute]; + this._addUpdate(update); + item[attribute] = value; + item.isDirty = true; + return true; + case "updated": + case "published": + case "issued": + case "modified": + update[attribute] = item[attribute]; + this._addUpdate(update); + item[attribute] = dojox.atom.io.model.util.createDate(value); + item.isDirty = true; + return true; + case "content": + case "summary": + case "title": + case "subtitle": + update[attribute] = item[attribute]; + this._addUpdate(update); + item[attribute] = new dojox.atom.io.model.Content(attribute); + item[attribute].value = value; + item.isDirty = true; + return true; + default: + update[attribute] = item[attribute]; + this._addUpdate(update); + item[attribute] = value; + item.isDirty = true; + return true; + } + } + return false; + }, + + setValues: function(/* item */ item, + /* string */ attribute, + /* array */ values){ + // summary: + // See dojo.data.api.Write.setValues() + if(values.length === 0){ + return this.unsetAttribute(item, attribute); + } + this._assertIsItem(item); + + var update = {item: item}; + var value; + var i; + if(this._assertIsAttribute(attribute)){ + switch(attribute){ + case "link": + update.links = item.links; + item.links = null; + for(i in values){ + value = values[i]; + item.addLink(value.href,value.rel,value.hrefLang,value.title,value.type); + } + item.isDirty = true; + return true; + case "author": + update.authors = item.authors; + item.authors = null; + for(i in values){ + value = values[i]; + item.addAuthor(value.name, value.email, value.uri); + } + item.isDirty = true; + return true; + case "contributor": + update.contributors = item.contributors; + item.contributors = null; + for(i in values){ + value = values[i]; + item.addContributor(value.name, value.email, value.uri); + } + item.isDirty = true; + return true; + case "categories": + update.categories = item.categories; + item.categories = null; + for(i in values){ + value = values[i]; + item.addCategory(value.scheme, value.term, value.label); + } + item.isDirty = true; + return true; + case "icon": + case "id": + case "logo": + case "xmlBase": + case "rights": + update[attribute] = item[attribute]; + item[attribute] = values[0]; + item.isDirty = true; + return true; + case "updated": + case "published": + case "issued": + case "modified": + update[attribute] = item[attribute]; + item[attribute] = dojox.atom.io.model.util.createDate(values[0]); + item.isDirty = true; + return true; + case "content": + case "summary": + case "title": + case "subtitle": + update[attribute] = item[attribute]; + item[attribute] = new dojox.atom.io.model.Content(attribute); + item[attribute].values[0] = values[0]; + item.isDirty = true; + return true; + default: + update[attribute] = item[attribute]; + item[attribute] = values[0]; + item.isDirty = true; + return true; + } + } + this._addUpdate(update); + return false; + }, + + unsetAttribute: function( /* item */ item, + /* string */ attribute){ + // summary: + // See dojo.data.api.Write.unsetAttribute() + this._assertIsItem(item); + if(this._assertIsAttribute(attribute)){ + if(item[attribute] !== null){ + var update = {item: item}; + switch(attribute){ + case "author": + case "contributor": + case "link": + update[attribute+"s"] = item[attribute+"s"]; + break; + case "category": + update.categories = item.categories; + break; + default: + update[attribute] = item[attribute]; + break; + } + item.isDirty = true; + item[attribute] = null; + this._addUpdate(update); + return true; + } + } + return false; // boolean + }, + + save: function(/* object */ keywordArgs){ + // summary: + // See dojo.data.api.Write.save() + // keywordArgs: + // { + // onComplete: function + // onError: function + // scope: object + // } + var i; + for(i in this._adds){ + this._atomIO.addEntry(this._adds[i], null, function(){}, keywordArgs.onError, false, keywordArgs.scope); + } + + this._adds = null; + + for(i in this._updates){ + this._atomIO.updateEntry(this._updates[i].item, function(){}, keywordArgs.onError, false, this.xmethod, keywordArgs.scope); + } + + this._updates = null; + + for(i in this._deletes){ + this._atomIO.removeEntry(this._deletes[i], function(){}, keywordArgs.onError, this.xmethod, keywordArgs.scope); + } + + this._deletes = null; + + this._atomIO.getFeed(this.url,dojo.hitch(this,this._setFeed)); + + if(keywordArgs.onComplete){ + var scope = keywordArgs.scope || dojo.global; + keywordArgs.onComplete.call(scope); + } + }, + + revert: function(){ + // summary: + // See dojo.data.api.Write.revert() + var i; + for(i in this._adds){ + this._feed.removeEntry(this._adds[i]); + } + + this._adds = null; + + var update, item, key; + for(i in this._updates){ + update = this._updates[i]; + item = update.item; + for(key in update){ + if(key !== "item"){ + item[key] = update[key]; + } + } + } + this._updates = null; + + for(i in this._deletes){ + this._feed.addEntry(this._deletes[i]); + } + this._deletes = null; + return true; + }, + + isDirty: function(/* item? */ item){ + // summary: + // See dojo.data.api.Write.isDirty() + if(item){ + this._assertIsItem(item); + return item.isDirty?true:false; //boolean + } + return (this._adds !== null || this._updates !== null); //boolean + } +}); +dojo.extend(dojox.data.AppStore,dojo.data.util.simpleFetch); + +return dojox.data.AppStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/AtomReadStore.js b/js/dojo-release-1.7.2-src/dojox/data/AtomReadStore.js new file mode 100644 index 0000000..4a8f85d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/AtomReadStore.js @@ -0,0 +1,550 @@ +define(["dojo", "dojox", "dojo/data/util/filter", "dojo/data/util/simpleFetch", "dojo/date/stamp"], function(dojo, dojox) { +dojo.experimental("dojox.data.AtomReadStore"); + +dojo.declare("dojox.data.AtomReadStore", null, { + // summary: + // A read only data store for Atom XML based services or documents + // description: + // A data store for Atom XML based services or documents. This store is still under development + // and doesn't support wildcard filtering yet. Attribute filtering is limited to category or id. + + constructor: function(/* object */ args){ + // summary: + // Constructor for the AtomRead store. + // args: + // An anonymous object to initialize properties. It expects the following values: + // url: The url to a service or an XML document that represents the store + // unescapeHTML: A boolean to specify whether or not to unescape HTML text + // sendQuery: A boolean indicate to add a query string to the service URL + + if(args){ + this.url = args.url; + this.rewriteUrl = args.rewriteUrl; + this.label = args.label || this.label; + this.sendQuery = (args.sendQuery || args.sendquery || this.sendQuery); + this.unescapeHTML = args.unescapeHTML; + if("urlPreventCache" in args){ + this.urlPreventCache = args.urlPreventCache?true:false; + } + } + if(!this.url){ + throw new Error("AtomReadStore: a URL must be specified when creating the data store"); + } + }, + + //Values that may be set by the parser. + //Ergo, have to be instantiated to something + //So the parser knows how to set them. + url: "", + + label: "title", + + sendQuery: false, + + unescapeHTML: false, + + //Configurable preventCache option for the URL. + urlPreventCache: false, + + /* dojo.data.api.Read */ + + getValue: function(/* item */ item, /* attribute || attribute-name-string */ attribute, /* value? */ defaultValue){ + // summary: + // Return an attribute value + // description: + // 'item' must be an instance of an object created by the AtomReadStore instance. + // Accepted attributes are id, subtitle, title, summary, content, author, updated, + // published, category, link and alternate + // item: + // An item returned by a call to the 'fetch' method. + // attribute: + // A attribute of the Atom Entry + // defaultValue: + // A default value + // returns: + // An attribute value found, otherwise 'defaultValue' + this._assertIsItem(item); + this._assertIsAttribute(attribute); + this._initItem(item); + attribute = attribute.toLowerCase(); + //If the attribute has previously been retrieved, then return it + if(!item._attribs[attribute] && !item._parsed){ + this._parseItem(item); + item._parsed = true; + } + var retVal = item._attribs[attribute]; + + if(!retVal && attribute == "summary"){ + var content = this.getValue(item, "content"); + var regexp = new RegExp("/(<([^>]+)>)/g", "i"); + var text = content.text.replace(regexp,""); + retVal = { + text: text.substring(0, Math.min(400, text.length)), + type: "text" + }; + item._attribs[attribute] = retVal; + } + + if(retVal && this.unescapeHTML){ + if((attribute == "content" || attribute == "summary" || attribute == "subtitle") && !item["_"+attribute+"Escaped"]){ + retVal.text = this._unescapeHTML(retVal.text); + item["_"+attribute+"Escaped"] = true; + } + } + return retVal ? dojo.isArray(retVal) ? retVal[0]: retVal : defaultValue; + }, + + getValues: function(/* item */ item, /* attribute || attribute-name-string */ attribute){ + // summary: + // Return an attribute value + // description: + // 'item' must be an instance of an object created by the AtomReadStore instance. + // Accepted attributes are id, subtitle, title, summary, content, author, updated, + // published, category, link and alternate + // item: + // An item returned by a call to the 'fetch' method. + // attribute: + // A attribute of the Atom Entry + // returns: + // An array of values for the attribute value found, otherwise 'defaultValue' + this._assertIsItem(item); + this._assertIsAttribute(attribute); + this._initItem(item); + attribute = attribute.toLowerCase(); + //If the attribute has previously been retrieved, then return it + if(!item._attribs[attribute]){ + this._parseItem(item); + } + var retVal = item._attribs[attribute]; + return retVal ? ((retVal.length !== undefined && typeof(retVal) !== "string") ? retVal : [retVal]) : undefined; + }, + + getAttributes: function(/* item */ item){ + // summary: + // Return an array of attribute names + // description: + // 'item' must be have been created by the AtomReadStore instance. + // tag names of child elements and XML attribute names of attributes + // specified to the element are returned along with special attribute + // names applicable to the element including "tagName", "childNodes" + // if the element has child elements, "text()" if the element has + // child text nodes, and attribute names in '_attributeMap' that match + // the tag name of the element. + // item: + // An XML element + // returns: + // An array of attributes found + this._assertIsItem(item); + if(!item._attribs){ + this._initItem(item); + this._parseItem(item); + } + var attrNames = []; + for(var x in item._attribs){ + attrNames.push(x); + } + return attrNames; //array + }, + + hasAttribute: function(/* item */ item, /* attribute || attribute-name-string */ attribute){ + // summary: + // Check whether an element has the attribute + // item: + // 'item' must be created by the AtomReadStore instance. + // attribute: + // An attribute of an Atom Entry item. + // returns: + // True if the element has the attribute, otherwise false + return (this.getValue(item, attribute) !== undefined); //boolean + }, + + containsValue: function(/* item */ item, /* attribute || attribute-name-string */ attribute, /* anything */ value){ + // summary: + // Check whether the attribute values contain the value + // item: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // attribute: + // A tag name of a child element, An XML attribute name or one of + // special names + // returns: + // True if the attribute values contain the value, otherwise false + var values = this.getValues(item, attribute); + for(var i = 0; i < values.length; i++){ + if((typeof value === "string")){ + if(values[i].toString && values[i].toString() === value){ + return true; + } + }else if(values[i] === value){ + return true; //boolean + } + } + return false;//boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // Check whether the object is an item (XML element) + // item: + // An object to check + // returns: + // True if the object is an XML element, otherwise false + if(something && something.element && something.store && something.store === this){ + return true; //boolean + } + return false; //boolran + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // Check whether the object is an item (XML element) and loaded + // item: + // An object to check + // returns: + // True if the object is an XML element, otherwise false + return this.isItem(something); //boolean + }, + + loadItem: function(/* object */ keywordArgs){ + // summary: + // Load an item (XML element) + // keywordArgs: + // object containing the args for loadItem. See dojo.data.api.Read.loadItem() + }, + + getFeatures: function(){ + // summary: + // Return supported data APIs + // returns: + // "dojo.data.api.Read" and "dojo.data.api.Write" + var features = { + "dojo.data.api.Read": true + }; + return features; //array + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if((this.label !== "") && this.isItem(item)){ + var label = this.getValue(item,this.label); + if(label && label.text){ + return label.text; + }else if(label){ + return label.toString(); + }else{ + return undefined; + } + } + return undefined; //undefined + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + if(this.label !== ""){ + return [this.label]; //array + } + return null; //null + }, + + getFeedValue: function(attribute, defaultValue){ + // summary: + // Non-API method for retrieving values regarding the Atom feed, + // rather than the Atom entries. + var values = this.getFeedValues(attribute, defaultValue); + if(dojo.isArray(values)){ + return values[0]; + } + return values; + }, + + getFeedValues: function(attribute, defaultValue){ + // summary: + // Non-API method for retrieving values regarding the Atom feed, + // rather than the Atom entries. + if(!this.doc){ + return defaultValue; + } + if(!this._feedMetaData){ + this._feedMetaData = { + element: this.doc.getElementsByTagName("feed")[0], + store: this, + _attribs: {} + }; + this._parseItem(this._feedMetaData); + } + return this._feedMetaData._attribs[attribute] || defaultValue; + }, + + _initItem: function(item){ + // summary: + // Initializes an item before it can be parsed. + if(!item._attribs){ + item._attribs = {}; + } + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Retrieves the items from the Atom XML document. + var url = this._getFetchUrl(request); + if(!url){ + errorHandler(new Error("No URL specified.")); + return; + } + var localRequest = (!this.sendQuery ? request : null); // use request for _getItems() + + var _this = this; + var docHandler = function(data){ + _this.doc = data; + var items = _this._getItems(data, localRequest); + var query = request.query; + if(query){ + if(query.id){ + items = dojo.filter(items, function(item){ + return (_this.getValue(item, "id") == query.id); + }); + }else if(query.category){ + items = dojo.filter(items, function(entry){ + var cats = _this.getValues(entry, "category"); + if(!cats){ + return false; + } + return dojo.some(cats, "return item.term=='"+query.category+"'"); + }); + } + } + + if(items && items.length > 0){ + fetchHandler(items, request); + }else{ + fetchHandler([], request); + } + }; + + if(this.doc){ + docHandler(this.doc); + }else{ + var getArgs = { + url: url, + handleAs: "xml", + preventCache: this.urlPreventCache + }; + var getHandler = dojo.xhrGet(getArgs); + getHandler.addCallback(docHandler); + + getHandler.addErrback(function(data){ + errorHandler(data, request); + }); + } + }, + + _getFetchUrl: function(request){ + if(!this.sendQuery){ + return this.url; + } + var query = request.query; + if(!query){ + return this.url; + } + if(dojo.isString(query)){ + return this.url + query; + } + var queryString = ""; + for(var name in query){ + var value = query[name]; + if(value){ + if(queryString){ + queryString += "&"; + } + queryString += (name + "=" + value); + } + } + if(!queryString){ + return this.url; + } + //Check to see if the URL already has query params or not. + var fullUrl = this.url; + if(fullUrl.indexOf("?") < 0){ + fullUrl += "?"; + }else{ + fullUrl += "&"; + } + return fullUrl + queryString; + }, + + _getItems: function(document, request){ + // summary: + // Parses the document in a first pass + if(this._items){ + return this._items; + } + var items = []; + var nodes = []; + + if(document.childNodes.length < 1){ + this._items = items; + console.log("dojox.data.AtomReadStore: Received an invalid Atom document. Check the content type header"); + return items; + } + + var feedNodes = dojo.filter(document.childNodes, "return item.tagName && item.tagName.toLowerCase() == 'feed'"); + + var query = request.query; + + if(!feedNodes || feedNodes.length != 1){ + console.log("dojox.data.AtomReadStore: Received an invalid Atom document, number of feed tags = " + (feedNodes? feedNodes.length : 0)); + return items; + } + + nodes = dojo.filter(feedNodes[0].childNodes, "return item.tagName && item.tagName.toLowerCase() == 'entry'"); + + if(request.onBegin){ + request.onBegin(nodes.length, this.sendQuery ? request : {}); + } + + for(var i = 0; i < nodes.length; i++){ + var node = nodes[i]; + if(node.nodeType != 1 /*ELEMENT_NODE*/){ + continue; + } + items.push(this._getItem(node)); + } + this._items = items; + return items; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + }, + +/* internal API */ + + _getItem: function(element){ + return { + element: element, + store: this + }; + }, + + _parseItem: function(item){ + var attribs = item._attribs; + var _this = this; + var text, type; + + function getNodeText(node){ + var txt = node.textContent || node.innerHTML || node.innerXML; + if(!txt && node.childNodes[0]){ + var child = node.childNodes[0]; + if(child && (child.nodeType == 3 || child.nodeType == 4)){ + txt = node.childNodes[0].nodeValue; + } + } + return txt; + } + function parseTextAndType(node){ + return {text: getNodeText(node),type: node.getAttribute("type")}; + } + dojo.forEach(item.element.childNodes, function(node){ + var tagName = node.tagName ? node.tagName.toLowerCase() : ""; + switch(tagName){ + case "title": + attribs[tagName] = { + text: getNodeText(node), + type: node.getAttribute("type") + }; break; + case "subtitle": + case "summary": + case "content": + attribs[tagName] = parseTextAndType(node); + break; + case "author": + var nameNode ,uriNode; + dojo.forEach(node.childNodes, function(child){ + if(!child.tagName){ + return; + } + switch(child.tagName.toLowerCase()){ + case "name": + nameNode = child; + break; + case "uri": + uriNode = child; + break; + } + }); + var author = {}; + if(nameNode && nameNode.length == 1){ + author.name = getNodeText(nameNode[0]); + } + if(uriNode && uriNode.length == 1){ + author.uri = getNodeText(uriNode[0]); + } + attribs[tagName] = author; + break; + case "id": + attribs[tagName] = getNodeText(node); + break; + case "updated": + attribs[tagName] = dojo.date.stamp.fromISOString(getNodeText(node) ); + break; + case "published": + attribs[tagName] = dojo.date.stamp.fromISOString(getNodeText(node)); + break; + case "category": + if(!attribs[tagName]){ + attribs[tagName] = []; + } + attribs[tagName].push({scheme:node.getAttribute("scheme"), term: node.getAttribute("term")}); + break; + case "link": + if(!attribs[tagName]){ + attribs[tagName] = []; + } + var link = { + rel: node.getAttribute("rel"), + href: node.getAttribute("href"), + type: node.getAttribute("type")}; + attribs[tagName].push(link); + + if(link.rel == "alternate"){ + attribs["alternate"] = link; + } + break; + default: + break; + } + }); + }, + + _unescapeHTML : function(text){ + //Replace HTML character codes with their unencoded equivalents, e.g. ’ with ' + text = text.replace(/’/m , "'").replace(/″/m , "\"").replace(/</m,">").replace(/>/m,"<").replace(/&/m,"&"); + return text; + }, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.AtomReadStore: Invalid item argument."); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error("dojox.data.AtomReadStore: Invalid attribute argument."); + } + } +}); +dojo.extend(dojox.data.AtomReadStore,dojo.data.util.simpleFetch); + +return dojox.data.AtomReadStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/CdfStore.js b/js/dojo-release-1.7.2-src/dojox/data/CdfStore.js new file mode 100755 index 0000000..0d81a30 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/CdfStore.js @@ -0,0 +1,599 @@ +define(["dojo", "dojox", "dojo/data/util/sorter"], function(dojo, dojox) { + +dojox.data.ASYNC_MODE = 0; +dojox.data.SYNC_MODE = 1; + +dojo.declare("dojox.data.CdfStore", null, { + // summary: + // IMPORTANT: The CDF Store is designed to work with Tibco GI, and references Tibco's + // JSX3 JavaScript library and will not work without it. + // + // The CDF Store implements dojo.data.Read, Write, and Identity api's. It is a local + // (in memory) store that handles XML documents formatted according to the + // Common Data Format (CDF) spec: + // http://www.tibco.com/devnet/resources/gi/3_1/tips_and_techniques/CommonDataFormatCDF.pdf + // + // The purpose of this store is to provide a glue between a jsx3 CDF file and a Dijit. + // + // While a CDF document is an XML file, other than the initial input, all data returned + // from and written to this store should be in object format. + // + // identity: [const] String + // The unique identifier for each item. Defaults to "jsxid" which is standard for a CDF + // document. Should not be changed. + identity: "jsxid", + // + // url : String + // The location from which to fetch the XML (CDF) document. + url: "", + // + // xmlStr: String + // A string that can be parsed into an XML document and should be formatted according + // to the CDF spec. + // example: + // | '' + xmlStr:"", + // + // data: Object + // A object that will be converted into the xmlStr property, and then parsed into a CDF. + data:null, + // + // label: String + // The property within each item used to define the item. + label: "", + // + // mode [const]: dojox.data.ASYNC_MODE | dojox.data.SYNC_MODE + // This store supports syncronous fetches if this property is set to dojox.data.SYNC_MODE. + mode:dojox.data.ASYNC_MODE, + + constructor: function(/* Object */ args){ + // summary: + // Constructor for the CDF store. Instantiate a new CdfStore. + // + if(args){ + this.url = args.url; + this.xmlStr = args.xmlStr || args.str; + if(args.data){ + this.xmlStr = this._makeXmlString(args.data); + } + this.identity = args.identity || this.identity; + this.label = args.label || this.label; + this.mode = args.mode !== undefined ? args.mode : this.mode; + } + this._modifiedItems = {}; + + this.byId = this.fetchItemByIdentity; + }, + + /* dojo.data.api.Read */ + + getValue: function(/* jsx3.xml.Entity */ item, /* String */ property, /* value? */ defaultValue){ + // summary: + // Return an property value of an item + // + return item.getAttribute(property) || defaultValue; // anything + }, + + getValues: function(/* jsx3.xml.Entity */ item, /* String */ property){ + // summary: + // Return an array of values + // + // TODO!!! Can't find an example of an array in any CDF files + // + var v = this.getValue(item, property, []); + return dojo.isArray(v) ? v : [v]; + }, + + getAttributes: function(/* jsx3.xml.Entity */ item){ + // summary: + // Return an array of property names + // + return item.getAttributeNames(); // Array + }, + + hasAttribute: function(/* jsx3.xml.Entity */ item, /* String */ property){ + // summary: + // Check whether an item has a property + // + return (this.getValue(item, property) !== undefined); // Boolean + }, + + hasProperty: function(/* jsx3.xml.Entity */ item, /* String */ property){ + // summary: + // Alias for hasAttribute + return this.hasAttribute(item, property); + }, + + containsValue: function(/* jsx3.xml.Entity */ item, /* String */ property, /* anything */ value){ + // summary: + // Check whether an item contains a value + // + var values = this.getValues(item, property); + for(var i = 0; i < values.length; i++){ + if(values[i] === null){ continue; } + if((typeof value === "string")){ + if(values[i].toString && values[i].toString() === value){ + return true; + } + }else if(values[i] === value){ + return true; //boolean + } + } + return false;//boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // Check whether the object is an item (jsx3.xml.Entity) + // + if(something.getClass && something.getClass().equals(jsx3.xml.Entity.jsxclass)){ + return true; //boolean + } + return false; //boolran + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // Check whether the object is a jsx3.xml.Entity object and loaded + // + return this.isItem(something); // Boolean + }, + + loadItem: function(/* object */ keywordArgs){ + // summary: + // Load an item + // description: + // The store always loads all items, so if it's an item, then it's loaded. + }, + + getFeatures: function(){ + // summary: + // Return supported data APIs + // + return { + "dojo.data.api.Read": true, + "dojo.data.api.Write": true, + "dojo.data.api.Identity":true + }; // Object + }, + + getLabel: function(/* jsx3.xml.Entity */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + // + if((this.label !== "") && this.isItem(item)){ + var label = this.getValue(item,this.label); + if(label){ + return label.toString(); + } + } + return undefined; //undefined + }, + + getLabelAttributes: function(/* jsx3.xml.Entity */ item){ + // summary: + // returns an array of what properties of the item that were used + // to generate its label + // See dojo.data.api.Read.getLabelAttributes() + // + if(this.label !== ""){ + return [this.label]; //array + } + return null; //null + }, + + + fetch: function(/* Object? */ request){ + // summary: + // Returns an Array of items based on the request arguments. + // description: + // Returns an Array of items based on the request arguments. + // If the store is in ASYNC mode, the items should be expected in an onComplete + // method passed in the request object. If store is in SYNC mode, the items will + // be return directly as well as within the onComplete method. + // note: + // The mode can be set on store initialization or during a fetch as one of the + // parameters. + // + // query: String + // The items in the store are treated as objects, but this is reading an XML + // document. Further, the actual querying of the items takes place in Tibco GI's + // jsx3.xml.Entity. Therefore, we are using their syntax which is xpath. + // Note: + // As conforming to a CDF document, most, if not all nodes are considered "records" + // and their tagNames are as such. The root node is named "data". + // + // examples: + // All items: + // | store.fetch({query:"*"}); + // Item with a jsxid attribute equal to "1" (note you could use byId for this) + // | store.fetch({query:"//record[@jsxid='1']"}); + // All items with any jsxid attribute: + // | "//record[@jsxid='*']" + // The items with a jsxid of '1' or '4': + // | "//record[@jsxid='4' or @jsxid='1']" + // All children within a "group" node (could be multiple group nodes): + // "//group/record" + // All children within a specific group node: + // "//group[@name='mySecondGroup']/record" + // Any record, anywhere in the document: + // | "//record" + // Only the records beneath the root (data) node: + // | "//data/record" + // + // See: + // http://www.tibco.com/devnet/resources/gi/3_7/api/html/jsx3/xml/Entity.html#method:selectNodes + // http://www.w3.org/TR/xpath + // http://msdn.microsoft.com/en-us/library/ms256086.aspx + // + // See dojo.data.Read.fetch(): + // onBegin + // onComplete + // onItem + // onError + // scope + // start + // count + // sort + // + request = request || {}; + if(!request.store){ + request.store = this; + } + if(request.mode !== undefined){ + this.mode = request.mode; + } + var self = this; + + var errorHandler = function(errorData){ + if(request.onError){ + var scope = request.scope || dojo.global; + request.onError.call(scope, errorData, request); + }else{ + console.error("cdfStore Error:", errorData); + } + }; + + var fetchHandler = function(items, requestObject){ + requestObject = requestObject || request; + var oldAbortFunction = requestObject.abort || null; + var aborted = false; + + var startIndex = requestObject.start?requestObject.start:0; + var endIndex = (requestObject.count && (requestObject.count !== Infinity))?(startIndex + requestObject.count):items.length; + + requestObject.abort = function(){ + aborted = true; + if(oldAbortFunction){ + oldAbortFunction.call(requestObject); + } + }; + + var scope = requestObject.scope || dojo.global; + if(!requestObject.store){ + requestObject.store = self; + } + if(requestObject.onBegin){ + requestObject.onBegin.call(scope, items.length, requestObject); + } + if(requestObject.sort){ + items.sort(dojo.data.util.sorter.createSortFunction(requestObject.sort, self)); + } + + if(requestObject.onItem){ + for(var i = startIndex; (i < items.length) && (i < endIndex); ++i){ + var item = items[i]; + if(!aborted){ + requestObject.onItem.call(scope, item, requestObject); + } + } + } + if(requestObject.onComplete && !aborted){ + if(!requestObject.onItem){ + items = items.slice(startIndex, endIndex); + if(requestObject.byId){ + items = items[0]; + } + } + requestObject.onComplete.call(scope, items, requestObject); + }else{ + items = items.slice(startIndex, endIndex); + if(requestObject.byId){ + items = items[0]; + } + } + return items; + }; + + if(!this.url && !this.data && !this.xmlStr){ + errorHandler(new Error("No URL or data specified.")); + return false; + } + var localRequest = request || "*"; // use request for _getItems() + + if(this.mode == dojox.data.SYNC_MODE){ + // sync mode. items returned directly + var res = this._loadCDF(); + if(res instanceof Error){ + if(request.onError){ + request.onError.call(request.scope || dojo.global, res, request); + }else{ + console.error("CdfStore Error:", res); + } + return res; + } + this.cdfDoc = res; + + var items = this._getItems(this.cdfDoc, localRequest); + if(items && items.length > 0){ + items = fetchHandler(items, request); + }else{ + items = fetchHandler([], request); + } + return items; + + }else{ + + // async mode. Return a Deferred. + var dfd = this._loadCDF(); + dfd.addCallbacks(dojo.hitch(this, function(cdfDoc){ + var items = this._getItems(this.cdfDoc, localRequest); + if(items && items.length > 0){ + fetchHandler(items, request); + }else{ + fetchHandler([], request); + } + }), + dojo.hitch(this, function(err){ + errorHandler(err, request); + })); + + return dfd; // Object + } + }, + + + _loadCDF: function(){ + // summary: + // Internal method. + // If a cdfDoc exists, return it. Otherwise, get one from JSX3, + // load the data or url, and return the doc or a deferred. + var dfd = new dojo.Deferred(); + if(this.cdfDoc){ + if(this.mode == dojox.data.SYNC_MODE){ + return this.cdfDoc; // jsx3.xml.CDF + }else{ + setTimeout(dojo.hitch(this, function(){ + dfd.callback(this.cdfDoc); + }), 0); + return dfd; // dojo.Deferred + } + } + + this.cdfDoc = jsx3.xml.CDF.Document.newDocument(); + this.cdfDoc.subscribe("response", this, function(evt){ + dfd.callback(this.cdfDoc); + }); + this.cdfDoc.subscribe("error", this, function(err){ + dfd.errback(err); + }); + + this.cdfDoc.setAsync(!this.mode); + if(this.url){ + this.cdfDoc.load(this.url); + }else if(this.xmlStr){ + this.cdfDoc.loadXML(this.xmlStr); + if(this.cdfDoc.getError().code){ + return new Error(this.cdfDoc.getError().description); // Error + } + } + + if(this.mode == dojox.data.SYNC_MODE){ + return this.cdfDoc; // jsx3.xml.CDF + }else{ + return dfd; // dojo.Deferred + } + }, + + _getItems: function(/* jsx3.xml.Entity */cdfDoc, /* Object */request){ + // summary: + // Internal method. + // Requests the items from jsx3.xml.Entity with an xpath query. + // + var itr = cdfDoc.selectNodes(request.query, false, 1); + var items = []; + while(itr.hasNext()){ + items.push(itr.next()); + } + return items; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + }, + +/* dojo.data.api.Write */ + + newItem: function(/* object? */ keywordArgs, /* object? || String? */parentInfo){ + // summary: + // Creates a jsx3.xml.Entity item and inserts it either inside the + // parent or appends it to the root + // + keywordArgs = (keywordArgs || {}); + if(keywordArgs.tagName){ + // record tagName is automatic and this would add it + // as a property + if(keywordArgs.tagName!="record"){ + // TODO: How about some sort of group? + console.warn("Only record inserts are supported at this time"); + } + delete keywordArgs.tagName; + } + keywordArgs.jsxid = keywordArgs.jsxid || this.cdfDoc.getKey(); + if(this.isItem(parentInfo)){ + parentInfo = this.getIdentity(parentInfo); + } + var item = this.cdfDoc.insertRecord(keywordArgs, parentInfo); + + this._makeDirty(item); + + return item; // jsx3.xml.Entity + }, + + deleteItem: function(/* jsx3.xml.Entity */ item){ + // summary: + // Delete an jsx3.xml.Entity (wrapper to a XML element). + // + this.cdfDoc.deleteRecord(this.getIdentity(item)); + this._makeDirty(item); + return true; //boolean + }, + + setValue: function(/* jsx3.xml.Entity */ item, /* String */ property, /* almost anything */ value){ + // summary: + // Set an property value + // + this._makeDirty(item); + item.setAttribute(property, value); + return true; // Boolean + }, + + setValues: function(/* jsx3.xml.Entity */ item, /* String */ property, /*array*/ values){ + // summary: + // Set property values + // TODO: Needs to be fully implemented. + // + this._makeDirty(item); + console.warn("cdfStore.setValues only partially implemented."); + return item.setAttribute(property, values); + + }, + + unsetAttribute: function(/* jsx3.xml.Entity */ item, /* String */ property){ + // summary: + // Remove an property + // + this._makeDirty(item); + item.removeAttribute(property); + return true; // Boolean + }, + + revert: function(){ + // summary: + // Invalidate changes (new and/or modified elements) + // Resets data by simply deleting the reference to the cdfDoc. + // Subsequent fetches will load the new data. + // Note: + // Any items outside the store will no longer be valid and may cause errors. + // + delete this.cdfDoc; + this._modifiedItems = {}; + return true; //boolean + }, + + isDirty: function(/* jsx3.xml.Entity ? */ item){ + // summary: + // Check whether an item is new, modified or deleted. + // If no item is passed, checks if anything in the store has changed. + // + if(item){ + return !!this._modifiedItems[this.getIdentity(item)]; // Boolean + }else{ + var _dirty = false; + for(var nm in this._modifiedItems){ _dirty = true; break; } + return _dirty; // Boolean + } + }, + + + +/* internal API */ + + _makeDirty: function(item){ + // summary: + // Internal method. + // Marks items as modified, deleted or new. + var id = this.getIdentity(item); + this._modifiedItems[id] = item; + }, + + + _makeXmlString: function(obj){ + // summary: + // Internal method. + // Converts an object into an XML string. + // + var parseObj = function(obj, name){ + var xmlStr = ""; + var nm; + if(dojo.isArray(obj)){ + for(var i=0;i'; + } + return xmlStr; + }; + return parseObj(obj, "data"); + }, + + /************************************* + * Dojo.data Identity implementation * + *************************************/ + getIdentity: function(/* jsx3.xml.Entity */ item){ + // summary: + // Returns the identifier for an item. + // + return this.getValue(item, this.identity); // String + }, + + getIdentityAttributes: function(/* jsx3.xml.Entity */ item){ + // summary: + // Returns the property used for the identity. + // + return [this.identity]; // Array + }, + + + fetchItemByIdentity: function(/* Object || String */ args){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity(keywordArgs) + // + // Note: + // This method can be synchronous if mode is set. + // Also, there is a more finger friendly alias of this method, byId(); + if(dojo.isString(args)){ + var id = args; + args = {query:"//record[@jsxid='"+id+"']", mode: dojox.data.SYNC_MODE}; + }else{ + if(args){ + args.query = "//record[@jsxid='"+args.identity+"']"; + } + if(!args.mode){args.mode = this.mode;} + } + args.byId = true; + return this.fetch(args); // dojo.Deferred || Array + }, + byId: function(/* Object || String */ args){ + // stub. See fetchItemByIdentity + } + +}); + +return dojox.data.CdfStore; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/ClientFilter.js b/js/dojo-release-1.7.2-src/dojox/data/ClientFilter.js new file mode 100644 index 0000000..0412299 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/ClientFilter.js @@ -0,0 +1,292 @@ +define(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/array", "dojo/_base/Deferred", "dojo/data/util/filter"], + function(declare, lang, array, Deferred, filter) { + +// This is an abstract data store module for adding updateable result set functionality to an existing data store class + + var addUpdate = function(store,create,remove){ + // create a handler that adds to the list of notifications + return function(item){ + store._updates.push({ + create:create && item, + remove:remove && item + }); + ClientFilter.onUpdate(); + } + }; + var ClientFilter = declare("dojox.data.ClientFilter", null, { + cacheByDefault: false, + constructor: function(){ + // summary: + // This is an abstract class that data stores can extend to add updateable result set functionality + // as well as client side querying capabilities. This enables + // widgets to be aware of how active results change in response to the modifications/notifications. + // + // description: + // To a update a result set after a notification (onNew, onSet, and onDelete), + // widgets can call the updateResultSet method. Widgets can use the updated + // result sets to determine how to react to notifications, and how to update their displayed results + // based on changes. + // + // This module will use the best available information to update result sets, using query attribute + // objects to determine if items are in a result set, and using the sort arrays to maintain sort + // information. However, queries can be opaque strings, and this module can not update + // results by itself in this case. In this situations, data stores can provide a isUpdateable(request) function + // and matchesQuery(item,request) function. If a data store can handle a query, it can return true from + // isUpdateable and if an item matches a query, it can return true from matchesQuery. Here is + // definition of isUpdateable and matchesQuery + // isUpdateable(request) - request is the keywords arguments as is passed to the fetch function. + // matchesQuery(item,request) - item is the item to test, and request is the value arguments object + // for the fetch function. + // + // You can define a property on this object instance "cacheByDefault" to a value of true that will + // cause all queries to be cached by default unless the cache queryOption is explicitly set to false. + // This can be defined in the constructor options for ServiceStore/JsonRestStore and subtypes. + // + // example: + // to make a updated-result-set data store from an existing data store: + // | dojo.declare("dojox.data.MyLiveDataStore", + // | dojox.data.MyDataStore,dojox.data.ClientFilter], // subclass LiveResultSets if available + // | {} + // | ); + this.onSet = addUpdate(this,true,true); + this.onNew = addUpdate(this,true,false); + this.onDelete = addUpdate(this,false,true); + this._updates= []; + this._fetchCache = []; + }, + clearCache: function(){ + // summary: + // Clears the cache of client side queries + this._fetchCache = []; + }, + updateResultSet: function(/*Array*/ resultSet, /*Object*/ request){ + // summary: + // Attempts to update the given result set based on previous notifications + // resultSet: + // The result set array that should be updated + // request: + // This object follows the same meaning as the keywordArgs passed to a dojo.data.api.Read.fetch. + // description: + // This will attempt to update the provide result based on previous notification, adding new items + // from onNew calls, removing deleted items, and updating modified items, and properly removing + // and adding items as required by the query and sort parameters. This function will return: + // 0: Indicates it could not successfully update the result set + // 1: Indicates it could successfully handle all the notifications, but no changes were made to the result set + // 2: Indicates it successfully handled all the notifications and result set has been updated. + if(this.isUpdateable(request)){ + // we try to avoid rerunning notification updates more than once on the same object for performance + for(var i = request._version || 0; i < this._updates.length;i++){ + // for each notification,we will update the result set + var create = this._updates[i].create; + var remove = this._updates[i].remove; + if(remove){ + for(var j = 0; j < resultSet.length;j++){ + if(this.getIdentity(resultSet[j]) == this.getIdentity(remove)){ + resultSet.splice(j--,1); + var updated = true; + } + } + } + if(create && this.matchesQuery(create,request) && // if there is a new/replacement item and it matches the query + array.indexOf(resultSet,create) == -1){ // and it doesn't already exist in query + resultSet.push(create); // should this go at the beginning by default instead? + updated = true; + } + } + if(request.sort && updated){ + // do the sort if needed + resultSet.sort(this.makeComparator(request.sort.concat())); + } + resultSet._fullLength = resultSet.length; + if(request.count && updated && request.count !== Infinity){ + // do we really need to do this? + // make sure we still find within the defined paging set + resultSet.splice(request.count, resultSet.length); + } + request._version = this._updates.length; + return updated ? 2 : 1; + } + return 0; + }, + querySuperSet: function(argsSuper, argsSub){ + // summary: + // Determines whether the provided arguments are super/sub sets of each other + // argsSuper: + // Dojo Data Fetch arguments + // argsSub: + // Dojo Data Fetch arguments + if(argsSuper.query == argsSub.query){ + return {}; + } + if(!(argsSub.query instanceof Object && // sub query must be an object + // super query must be non-existent or an object + (!argsSuper.query || typeof argsSuper.query == 'object'))){ + return false; + } + var clientQuery = lang.mixin({},argsSub.query); + for(var i in argsSuper.query){ + if(clientQuery[i] == argsSuper.query[i]){ + delete clientQuery[i]; + }else if(!(typeof argsSuper.query[i] == 'string' && + // if it is a pattern, we can test to see if it is a sub-pattern + // FIXME: This is not technically correct, but it will work for the majority of cases + filter.patternToRegExp(argsSuper.query[i]).test(clientQuery[i]))){ + return false; + } + } + return clientQuery; + }, + // This is the point in the version notification history at which it is known that the server is in sync, this should + // be updated to this._updates.length on commit operations. + serverVersion: 0, + + cachingFetch: function(args){ + var self = this; + for(var i = 0; i < this._fetchCache.length;i++){ + var cachedArgs = this._fetchCache[i]; + var clientQuery = this.querySuperSet(cachedArgs,args); + if(clientQuery !== false){ + var defResult = cachedArgs._loading; + if(!defResult){ + defResult = new Deferred(); + defResult.callback(cachedArgs.cacheResults); + } + defResult.addCallback(function(results){ + results = self.clientSideFetch(lang.mixin(lang.mixin({}, args),{query:clientQuery}), results); + defResult.fullLength = results._fullLength; + return results; + }); + args._version = cachedArgs._version; + break; + } + } + if(!defResult){ + var serverArgs = lang.mixin({}, args); + var putInCache = (args.queryOptions || 0).cache; + var fetchCache = this._fetchCache; + if(putInCache === undefined ? this.cacheByDefault : putInCache){ + // we are caching this request, so we want to get all the data, and page on the client side + if(args.start || args.count){ + delete serverArgs.start; + delete serverArgs.count; + args.clientQuery = lang.mixin(args.clientQuery || {}, { + start: args.start, + count: args.count + }); + } + args = serverArgs; + fetchCache.push(args); + } + defResult= args._loading = this._doQuery(args); + + defResult.addErrback(function(){ + fetchCache.splice(array.indexOf(fetchCache, args), 1); + }); + } + var version = this.serverVersion; + + defResult.addCallback(function(results){ + delete args._loading; + // update the result set in case anything changed while we were waiting for the fetch + if(results){ + args._version = typeof args._version == "number" ? args._version : version; + self.updateResultSet(results,args); + args.cacheResults = results; + if(!args.count || results.length < args.count){ + defResult.fullLength = ((args.start)?args.start:0) + results.length; + } + } + return results; + }); + return defResult; + }, + isUpdateable: function(/*Object*/ request){ + // summary: + // Returns whether the provide fetch arguments can be used to update an existing list + // request: + // See dojo.data.api.Read.fetch request + + return typeof request.query == "object"; + }, + clientSideFetch: function(/*Object*/ request,/*Array*/ baseResults){ + // summary: + // Performs a query on the client side and returns the results as an array + // + // request: + // See dojo.data.api.Read.fetch request + // + // baseResults: + // This provides the result set to start with for client side querying + if(request.queryOptions && request.queryOptions.results){ + baseResults = request.queryOptions.results; + } + if(request.query){ + // filter by the query + var results = []; + for(var i = 0; i < baseResults.length; i++){ + var value = baseResults[i]; + if(value && this.matchesQuery(value,request)){ + results.push(baseResults[i]); + } + } + }else{ + results = request.sort ? baseResults.concat() : baseResults; // we don't want to mutate the baseResults if we are doing a sort + } + if(request.sort){ + // do the sort if needed + results.sort(this.makeComparator(request.sort.concat())); + } + return this.clientSidePaging(request, results); + }, + clientSidePaging: function(/*Object*/ request,/*Array*/ baseResults){ + var start = request.start || 0; + var finalResults = (start || request.count) ? baseResults.slice(start,start + (request.count || baseResults.length)) : baseResults; + finalResults._fullLength = baseResults.length; + return finalResults; + }, + matchesQuery: function(item,request){ + var query = request.query; + var ignoreCase = request.queryOptions && request.queryOptions.ignoreCase; + for(var i in query){ + // if anything doesn't match, than this should be in the query + var match = query[i]; + var value = this.getValue(item,i); + if((typeof match == 'string' && (match.match(/[\*\.]/) || ignoreCase)) ? + !filter.patternToRegExp(match, ignoreCase).test(value) : + value != match){ + return false; + } + } + return true; + }, + makeComparator: function(sort){ + // summary: + // returns a comparator function for the given sort order array + // sort: + // See dojox.data.api.Read.fetch + var current = sort.shift(); + if(!current){ + // sort order for ties and no sort orders + return function(){ + return 0;// keep the order unchanged + }; + } + var attribute = current.attribute; + var descending = !!current.descending; + var next = this.makeComparator(sort); + var store = this; + return function(a,b){ + var av = store.getValue(a,attribute); + var bv = store.getValue(b,attribute); + if(av != bv){ + return av < bv == descending ? 1 : -1; + } + return next(a,b); + }; + } + } + ); + ClientFilter.onUpdate = function(){}; + + return ClientFilter; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/CouchDBRestStore.js b/js/dojo-release-1.7.2-src/dojox/data/CouchDBRestStore.js new file mode 100644 index 0000000..39a91e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/CouchDBRestStore.js @@ -0,0 +1,82 @@ +define(["dojo", "dojox", "dojox/data/JsonRestStore"], function(dojo, dojox) { + +// A CouchDBRestStore is an extension of JsonRestStore to handle CouchDB's idiosyncrasies, special features, +// and deviations from standard HTTP Rest. +// NOTE: CouchDB is not designed to be run on a public facing network. There is no access control +// on database documents, and you should NOT rely on client side control to implement security. + + +dojo.declare("dojox.data.CouchDBRestStore", + dojox.data.JsonRestStore, + { + save: function(kwArgs){ + var actions = this.inherited(arguments); // do the default save and then update for version numbers + var prefix = this.service.servicePath; + for(var i = 0; i < actions.length; i++){ + // need to update the item's version number after it has been committed + (function(item,dfd){ + dfd.addCallback(function(result){ + if(result){ + item.__id = prefix + result.id; // update the object with the results of the post + item._rev = result.rev; + } + return result; + }); + })(actions[i].content,actions[i].deferred); + } + }, + fetch: function(args){ + // summary: + // This only differs from JsonRestStore in that it, will put the query string the query part of the URL and it handles start and count + args.query = args.query || '_all_docs?'; + if(args.start){ + args.query = (args.query ? (args.query + '&') : '') + 'startkey=' + args.start; + delete args.start; + } + if(args.count){ + args.query = (args.query ? (args.query + '&') : '') + 'limit=' + args.count; + delete args.count; + } + return this.inherited(arguments); + }, + _processResults: function(results){ + var rows = results.rows; + if(rows){ + var prefix = this.service.servicePath; + var self = this; + for(var i = 0; i < rows.length;i++){ + var realItem = rows[i].value; + realItem.__id= prefix + rows[i].id; + realItem._id= rows[i].id; + realItem._loadObject= dojox.rpc.JsonRest._loader; + rows[i] = realItem; + } + return {totalCount:results.total_rows, items:results.rows}; + }else{ + return {items:results}; + } + + } + } +); + +// create a set of stores +dojox.data.CouchDBRestStore.getStores = function(couchServerUrl){ + var dfd = dojo.xhrGet({ + url: couchServerUrl+"_all_dbs", + handleAs: "json", + sync: true + }); + var stores = {}; + dfd.addBoth(function(dbs){ + for(var i = 0; i < dbs.length; i++){ + stores[dbs[i]] = new dojox.data.CouchDBRestStore({target:couchServerUrl + dbs[i],idAttribute:"_id"}); + } + return stores; + }); + return stores; +}; + +return dojox.data.CouchDBRestStore; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/CssClassStore.js b/js/dojo-release-1.7.2-src/dojox/data/CssClassStore.js new file mode 100755 index 0000000..86dc71d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/CssClassStore.js @@ -0,0 +1,161 @@ +define(["dojo/_base/declare","dojox/data/CssRuleStore"], + function(declare, CssRuleStore) { + +/*===== var CssRuleStore = dojox.data.CssRuleStore =====*/ + +return declare("dojox.data.CssClassStore", CssRuleStore, { + // summary: + // Basic store to display CSS information. + // description: + // The CssClassStore allows users to get information about active Css classes in the page running the CssClassStore. + // It can also filter out classes from specific stylesheets. The attributes it exposes on classes are as follows: + // class: The classname, including the '.'. + // classSans: The classname without the '.'. + + _labelAttribute: 'class', // text representation of the Item [label and identifier may need to stay due to method names] + _idAttribute: 'class', + _cName: "dojox.data.CssClassStore", + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + "dojo.data.api.Read" : true, + "dojo.data.api.Identity" : true + }; + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + return ['class', 'classSans']; + }, + + getValue: function(item, attribute, defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + var values = this.getValues(item, attribute); + if(values && values.length > 0){ + return values[0]; + } + return defaultValue; + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValues() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var value = []; + if(attribute === "class"){ + value = [item.className]; + }else if(attribute === "classSans"){ + value = [item.className.replace(/\./g,'')]; + } + return value; + }, + + _handleRule: function(rule, styleSheet, href){ + // summary: + // Handles the creation of an item based on the passed rule. In this store, this implies + // parsing out all available class names. + var obj = {}; + var s = rule['selectorText'].split(" "); + for(var j=0; j 0 && first !== -1){ + var last = tmp.indexOf(',') || tmp.indexOf('['); + tmp = tmp.substring(first, ((last !== -1 && last > first)?last:tmp.length)); + obj[tmp] = true; + } + } + for(var key in obj){ + if(!this._allItems[key]){ + var item = {}; + item.className = key; + item[this._storeRef] = this; + this._allItems[key] = item; + } + } + }, + + _handleReturn: function(){ + // summary: + // Handles the return from a fetching action. Delegates requests to act on the resulting + // item set to eitehr the _handleFetchReturn or _handleFetchByIdentityReturn depending on + // where the request originated. + var _inProgress = []; + + var items = {}; + for(var i in this._allItems){ + items[i] = this._allItems[i]; + } + var requestInfo; + // One-level deep clone (can't use dojo.clone, since we don't want to clone all those store refs!) + while(this._pending.length){ + requestInfo = this._pending.pop(); + requestInfo.request._items = items; + _inProgress.push(requestInfo); + } + + while(_inProgress.length){ + requestInfo = _inProgress.pop(); + if(requestInfo.fetch){ + this._handleFetchReturn(requestInfo.request); + }else{ + this._handleFetchByIdentityReturn(requestInfo.request); + } + } + }, + + _handleFetchByIdentityReturn: function(request){ + // summary: + // Handles a fetchByIdentity request by finding the correct item. + var items = request._items; + // Per https://bugs.webkit.org/show_bug.cgi?id=17935 , Safari 3.x always returns the selectorText + // of a rule in full lowercase. + var item = items[request.identity]; + if(!this.isItem(item)){ + item = null; + } + if(request.onItem){ + var scope = request.scope || dojo.global; + request.onItem.call(scope, item); + } + }, + + /* Identity API */ + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + this._assertIsItem(item); + return this.getValue(item, this._idAttribute); + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentityAttributes() + this._assertIsItem(item); + return [this._idAttribute]; + }, + + fetchItemByIdentity: function(/* request */ request){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity() + request = request || {}; + if(!request.store){ + request.store = this; + } + if(this._pending && this._pending.length > 0){ + this._pending.push({request: request}); + }else{ + this._pending = [{request: request}]; + this._fetch(request); + } + return request; + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/CssRuleStore.js b/js/dojo-release-1.7.2-src/dojox/data/CssRuleStore.js new file mode 100755 index 0000000..6d22e25 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/CssRuleStore.js @@ -0,0 +1,461 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", "dojo/_base/json","dojo/_base/window", "dojo/_base/sniff", "dojo/data/util/sorter", "dojo/data/util/filter", "./css"], + function(lang, declare, array, jsonUtil, winUtil, has, sorter, filter, css) { + +return declare("dojox.data.CssRuleStore", null, { + // summary: + // Basic store to display CSS information. + // description: + // The CssRuleStore allows users to get information about active CSS rules in the page running the CssRuleStore. + // It can also filter out rules from specific stylesheets. The attributes it exposes on rules are as follows: + // selector: The selector text. + // classes: An array of classes present in this selector. + // rule: The actual DOM Rule object. + // style: The actual DOM CSSStyleDeclaration object. + // cssText: The cssText string provided on the rule object. + // styleSheet: The originating DOM Stylesheet object. + // parentStyleSheet: The parent stylesheet to the sheet this rule originates from. + // parentStyleSheetHref: The href of the parent stylesheet. + // AND every style attribute denoted as style.*, such as style.textAlign or style.backgroundColor + + _storeRef: '_S', + _labelAttribute: 'selector', // text representation of the Item [label and identifier may need to stay due to method names] + + _cache: null, + + _browserMap: null, + + _cName: "dojox.data.CssRuleStore", + + constructor: function(/* Object */ keywordParameters){ + // Initializes this store + if(keywordParameters){ + lang.mixin(this, keywordParameters); + } + this._cache = {}; + this._allItems = null; + this._waiting = []; + this.gatherHandle = null; + var self = this; + // CSS files may not be finished loading by the time the store is constructed. We need to + // give them a little time, so setting the stylesheet loading to retry every 250ms. + function gatherRules(){ + try{ + // Funkiness here is due to css that may still be loading. This throws an DOM Access + // error if css isnt completely loaded. + self.context = css.determineContext(self.context); + if(self.gatherHandle){ + clearInterval(self.gatherHandle); + self.gatherHandle = null; + } + // Handle any fetches that have been queued while we've been waiting on the CSS files + // to finish + while(self._waiting.length){ + var item = self._waiting.pop(); + css.rules.forEach(item.forFunc, null, self.context); + item.finishFunc(); + } + }catch(e){} + } + this.gatherHandle = setInterval(gatherRules,250); + }, + + setContext: function(/* Array */ context){ + // Sets the context in which queries are executed + // context: Array - Array of CSS string paths to execute queries within + if(context){ + this.close(); + this.context = css.determineContext(context); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + "dojo.data.api.Read" : true + }; + }, + + isItem: function(item){ + // summary: + // See dojo.data.api.Read.isItem() + if(item && item[this._storeRef] == this){ + return true; + } + return false; + }, + + hasAttribute: function(item, attribute){ + // summary: + // See dojo.data.api.Read.hasAttribute() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var attrs = this.getAttributes(item); + if(array.indexOf(attrs, attribute) != -1){ + return true; + } + return false; + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + var attrs = ['selector', 'classes', 'rule', 'style', 'cssText', 'styleSheet', 'parentStyleSheet', 'parentStyleSheetHref']; + var style = item.rule.style; + if(style){ + var key; + for(key in style){ + attrs.push("style." + key); + } + } + return attrs; + }, + + getValue: function(item, attribute, defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + var values = this.getValues(item, attribute); + var value = defaultValue; + if(values && values.length > 0){ + return values[0]; + } + return defaultValue; + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValues() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var value = null; + if(attribute === "selector"){ + value = item.rule["selectorText"]; + if(value && lang.isString(value)){ + value = value.split(","); + } + }else if(attribute === "classes"){ + value = item.classes; + }else if(attribute === "rule"){ + value = item.rule.rule; + }else if(attribute === "style"){ + value = item.rule.style; + }else if(attribute === "cssText"){ + if(has("ie")){ + if(item.rule.style){ + value = item.rule.style.cssText; + if(value){ + value = "{ " + value.toLowerCase() + " }"; + } + } + }else{ + value = item.rule.cssText; + if(value){ + value = value.substring(value.indexOf("{"), value.length); + } + } + }else if(attribute === "styleSheet"){ + value = item.rule.styleSheet; + }else if(attribute === "parentStyleSheet"){ + value = item.rule.parentStyleSheet; + }else if(attribute === "parentStyleSheetHref"){ + if(item.href){ + value = item.href; + } + }else if(attribute.indexOf("style.") === 0){ + var attr = attribute.substring(attribute.indexOf("."), attribute.length); + value = item.rule.style[attr]; + }else{ + value = []; + } + if(value !== undefined){ + if(!lang.isArray(value)){ + value = [value]; + } + } + return value; + }, + + getLabel: function(item){ + // summary: + // See dojo.data.api.Read.getLabel() + this._assertIsItem(item); + return this.getValue(item, this._labelAttribute); + }, + + getLabelAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this._labelAttribute]; + }, + + containsValue: function(/* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value){ + // summary: + // See dojo.data.api.Read.containsValue() + var regexp = undefined; + if(typeof value === "string"){ + regexp = filter.patternToRegExp(value, false); + } + return this._containsValue(item, attribute, value, regexp); //boolean. + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(something); //boolean + }, + + loadItem: function(/* object */ keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + this._assertIsItem(keywordArgs.item); + }, + + fetch: function(request){ + // summary: + // See dojo.data.api.Read.fetch() + request = request || {}; + if(!request.store){ + request.store = this; + } + + var scope = request.scope || winUtil.global; + if(this._pending && this._pending.length > 0){ + this._pending.push({request: request, fetch: true}); + }else{ + this._pending = [{request: request, fetch: true}]; + this._fetch(request); + } + return request; + }, + + _fetch: function(request){ + // summary: + // Populates the _allItems object with unique class names + var scope = request.scope || winUtil.global; + if(this._allItems === null){ + this._allItems = {}; + try{ + if(this.gatherHandle){ + this._waiting.push({'forFunc': lang.hitch(this, this._handleRule), 'finishFunc': lang.hitch(this, this._handleReturn)}); + }else{ + css.rules.forEach(lang.hitch(this, this._handleRule), null, this.context); + this._handleReturn(); + } + }catch(e){ + if(request.onError){ + request.onError.call(scope, e, request); + } + } + }else{ + this._handleReturn(); + } + }, + + _handleRule: function(rule, styleSheet, href){ + // summary: + // Handles the creation of an item based on the passed rule. In this store, this implies + // parsing out all available class names. + var selector = rule['selectorText']; + var s = selector.split(" "); + var classes = []; + for(var j=0; j 0 && first !== -1){ + var last = tmp.indexOf(',') || tmp.indexOf('['); + tmp = tmp.substring(first, ((last !== -1 && last > first)?last:tmp.length)); + classes.push(tmp); + } + } + var item = {}; + item.rule = rule; + item.styleSheet = styleSheet; + item.href = href; + item.classes = classes; + item[this._storeRef] = this; + if(!this._allItems[selector]){ + this._allItems[selector] = []; + } + this._allItems[selector].push(item); + }, + + _handleReturn: function(){ + // summary: + // Handles the return from a fetching action. Delegates requests to act on the resulting + // item set to eitehr the _handleFetchReturn or _handleFetchByIdentityReturn depending on + // where the request originated. + var _inProgress = []; + + var items = []; + var item = null; + for(var i in this._allItems){ + item = this._allItems[i]; + for(var j in item){ + items.push(item[j]); + } + } + + var requestInfo; + // One-level deep clone (can't use dojo.clone, since we don't want to clone all those store refs!) + while(this._pending.length){ + requestInfo = this._pending.pop(); + requestInfo.request._items = items; + _inProgress.push(requestInfo); + } + + while(_inProgress.length){ + requestInfo = _inProgress.pop(); + this._handleFetchReturn(requestInfo.request); + } + }, + + _handleFetchReturn: function(/*Request */ request){ + // summary: + // Handles a fetchByIdentity request by finding the correct items. + var scope = request.scope || winUtil.global; + var items = []; + //Check to see if we've looked this query up before + //If so, just reuse it, much faster. Only regen if query changes. + var cacheKey = "all"; + var i; + if(request.query){ + cacheKey = jsonUtil.toJson(request.query); + } + if(this._cache[cacheKey]){ + items = this._cache[cacheKey]; + }else if(request.query){ + for(i in request._items){ + var item = request._items[i]; + // Per https://bugs.webkit.org/show_bug.cgi?id=17935 , Safari 3.x always returns the selectorText + // of a rule in full lowercase. + var ignoreCase = (request.queryOptions ? request.queryOptions.ignoreCase : false); + var regexpList = {}; + var key; + var value; + for(key in request.query){ + value = request.query[key]; + if(typeof value === "string"){ + regexpList[key] = filter.patternToRegExp(value, ignoreCase); + } + } + var match = true; + for(key in request.query){ + value = request.query[key]; + if(!this._containsValue(item, key, value, regexpList[key])){ + match = false; + } + } + if(match){ + items.push(item); + } + } + this._cache[cacheKey] = items; + }else{ + for(i in request._items){ + items.push(request._items[i]); + } + } + var total = items.length; + + //Sort it if we need to. + if(request.sort){ + items.sort(sorter.createSortFunction(request.sort, this)); + } + var start = 0; + var count = items.length; + if(request.start > 0 && request.start < items.length){ + start = request.start; + } + if(request.count && request.count){ + count = request.count; + } + var endIdx = start + count; + if(endIdx > items.length){ + endIdx = items.length; + } + + items = items.slice(start, endIdx); + + if(request.onBegin){ + request.onBegin.call(scope, total, request); + } + if(request.onItem){ + if(lang.isArray(items)){ + for(i = 0; i < items.length; i++){ + request.onItem.call(scope, items[i], request); + } + if(request.onComplete){ + request.onComplete.call(scope, null, request); + } + } + }else if(request.onComplete){ + request.onComplete.call(scope, items, request); + } + return request; + }, + + close: function(){ + // summary: + // See dojo.data.api.Read.close() + // Clears out the cache and allItems objects, meaning all future fetches will requery + // the stylesheets. + this._cache = {}; + this._allItems = null; + }, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error(this._cName + ": Invalid item argument."); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error(this._cName + ": Invalid attribute argument."); + } + }, + + _containsValue: function( /* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value, + /* RegExp?*/ regexp){ + // summary: + // Internal function for looking at the values contained by the item. + // description: + // Internal function for looking at the values contained by the item. This + // function allows for denoting if the comparison should be case sensitive for + // strings or not (for handling filtering cases where string case should not matter) + // + // item: + // The data item to examine for attribute values. + // attribute: + // The attribute to inspect. + // value: + // The value to match. + // regexp: + // Optional regular expression generated off value if value was of string type to handle wildcarding. + // If present and attribute values are string, then it can be used for comparison instead of 'value' + return array.some(this.getValues(item, attribute), function(possibleValue){ + if(possibleValue !== null && !lang.isObject(possibleValue) && regexp){ + if(possibleValue.toString().match(regexp)){ + return true; // Boolean + } + }else if(value === possibleValue){ + return true; // Boolean + } + return false; + }); + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/CsvStore.js b/js/dojo-release-1.7.2-src/dojox/data/CsvStore.js new file mode 100644 index 0000000..a16f928 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/CsvStore.js @@ -0,0 +1,726 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/xhr", "dojo/_base/window","dojo/data/util/filter", "dojo/data/util/simpleFetch"], + function(lang, declare, xhr, winUtil, filterUtil, simpleFetch) { + +var CsvStore = declare("dojox.data.CsvStore", null, { + // summary: + // The CsvStore implements the dojo.data.api.Read API and reads + // data from files in CSV (Comma Separated Values) format. + // All values are simple string values. References to other items + // are not supported as attribute values in this datastore. + // + // Example data file: + // name, color, age, tagline + // Kermit, green, 12, "Hi, I'm Kermit the Frog." + // Fozzie Bear, orange, 10, "Wakka Wakka Wakka!" + // Miss Piggy, pink, 11, "Kermie!" + // + // Note that values containing a comma must be enclosed with quotes ("") + // Also note that values containing quotes must be escaped with two consecutive quotes (""quoted"") + // + // examples: + // var csvStore = new dojox.data.CsvStore({url:"movies.csv"); + // var csvStore = new dojox.data.CsvStore({url:"http://example.com/movies.csv"); + + constructor: function(/* Object */ keywordParameters){ + // summary: + // initializer + // keywordParameters: {url: String} + // keywordParameters: {data: String} + // keywordParameters: {label: String} The column label for the column to use for the label returned by getLabel. + // keywordParameters: {identifier: String} The column label for the column to use for the identity. Optional. If not set, the identity is the row number. + + this._attributes = []; // e.g. ["Title", "Year", "Producer"] + this._attributeIndexes = {}; // e.g. {Title: 0, Year: 1, Producer: 2} + this._dataArray = []; // e.g. [[],[],[]] + this._arrayOfAllItems = []; // e.g. [{_csvId:0,_csvStore:store},...] + this._loadFinished = false; + if(keywordParameters.url){ + this.url = keywordParameters.url; + } + this._csvData = keywordParameters.data; + if(keywordParameters.label){ + this.label = keywordParameters.label; + }else if(this.label === ""){ + this.label = undefined; + } + this._storeProp = "_csvStore"; // Property name for the store reference on every item. + this._idProp = "_csvId"; // Property name for the Item Id on every item. + this._features = { + 'dojo.data.api.Read': true, + 'dojo.data.api.Identity': true + }; + this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset. + this._queuedFetches = []; + this.identifier = keywordParameters.identifier; + if(this.identifier === ""){ + delete this.identifier; + }else{ + this._idMap = {}; + } + if("separator" in keywordParameters){ + this.separator = keywordParameters.separator; + } + if("urlPreventCache" in keywordParameters){ + this.urlPreventCache = keywordParameters.urlPreventCache?true:false; + } + }, + + // url: [public] string + // Declarative hook for setting Csv source url. + url: "", + + // label: [public] string + // Declarative hook for setting the label attribute. + label: "", + + // identifier: [public] string + // Declarative hook for setting the identifier. + identifier: "", + + // separator: [public] string + // Declatative and programmatic hook for defining the separator + // character used in the Csv style file. + separator: ",", + + // separator: [public] string + // Parameter to allow specifying if preventCache should be passed to + // the xhrGet call or not when loading data from a url. + // Note this does not mean the store calls the server on each fetch, + // only that the data load has preventCache set as an option. + urlPreventCache: false, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error(this.declaredClass + ": a function was passed an item argument that was not an item"); + } + }, + + _getIndex: function(item){ + // summary: + // Internal function to get the internal index to the item data from the item handle + // item: + // The idem handle to get the index for. + var idx = this.getIdentity(item); + if(this.identifier){ + idx = this._idMap[idx]; + } + return idx; + }, + +/*************************************** + dojo.data.api.Read API +***************************************/ + getValue: function( /* item */ item, + /* attribute || attribute-name-string */ attribute, + /* value? */ defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + // Note that for the CsvStore, an empty string value is the same as no value, + // so the defaultValue would be returned instead of an empty string. + this._assertIsItem(item); + var itemValue = defaultValue; + if(typeof attribute === "string"){ + var ai = this._attributeIndexes[attribute]; + if(ai != null){ + var itemData = this._dataArray[this._getIndex(item)]; + itemValue = itemData[ai] || defaultValue; + } + }else{ + throw new Error(this.declaredClass + ": a function was passed an attribute argument that was not a string"); + } + return itemValue; //String + }, + + getValues: function(/* item */ item, + /* attribute || attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.getValues() + // CSV syntax does not support multi-valued attributes, so this is just a + // wrapper function for getValue(). + var value = this.getValue(item, attribute); + return (value ? [value] : []); //Array + }, + + getAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + var attributes = []; + var itemData = this._dataArray[this._getIndex(item)]; + for(var i=0; i= 0 && identity < this._dataArray.length){ + return true; //Boolean + } + } + } + return false; //Boolean + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + // The CsvStore always loads all items, so if it's an item, then it's loaded. + return this.isItem(something); //Boolean + }, + + loadItem: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.loadItem() + // description: + // The CsvStore always loads all items, so if it's an item, then it's loaded. + // From the dojo.data.api.Read.loadItem docs: + // If a call to isItemLoaded() returns true before loadItem() is even called, + // then loadItem() need not do any work at all and will not even invoke + // the callback handlers. + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return this._features; //Object + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if(this.label && this.isItem(item)){ + return this.getValue(item,this.label); //String + } + return undefined; //undefined + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + if(this.label){ + return [this.label]; //array + } + return null; //null + }, + + + // The dojo.data.api.Read.fetch() function is implemented as + // a mixin from dojo.data.util.simpleFetch. + // That mixin requires us to define _fetchItems(). + _fetchItems: function( /* Object */ keywordArgs, + /* Function */ findCallback, + /* Function */ errorCallback){ + // summary: + // See dojo.data.util.simpleFetch.fetch() + // tags: + // protected + var self = this; + var filter = function(requestArgs, arrayOfAllItems){ + var items = null; + if(requestArgs.query){ + var key, value; + items = []; + var ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false; + + //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the + //same value for each item examined. Much more efficient. + var regexpList = {}; + for(key in requestArgs.query){ + value = requestArgs.query[key]; + if(typeof value === "string"){ + regexpList[key] = filterUtil.patternToRegExp(value, ignoreCase); + } + } + + for(var i = 0; i < arrayOfAllItems.length; ++i){ + var match = true; + var candidateItem = arrayOfAllItems[i]; + for(key in requestArgs.query){ + value = requestArgs.query[key]; + if(!self._containsValue(candidateItem, key, value, regexpList[key])){ + match = false; + } + } + if(match){ + items.push(candidateItem); + } + } + }else{ + // We want a copy to pass back in case the parent wishes to sort the array. We shouldn't allow resort + // of the internal list so that multiple callers can get lists and sort without affecting each other. + items = arrayOfAllItems.slice(0,arrayOfAllItems.length); + + } + findCallback(items, requestArgs); + }; + + if(this._loadFinished){ + filter(keywordArgs, this._arrayOfAllItems); + }else{ + if(this.url !== ""){ + //If fetches come in before the loading has finished, but while + //a load is in progress, we have to defer the fetching to be + //invoked in the callback. + if(this._loadInProgress){ + this._queuedFetches.push({args: keywordArgs, filter: filter}); + }else{ + this._loadInProgress = true; + var getArgs = { + url: self.url, + handleAs: "text", + preventCache: self.urlPreventCache + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + try{ + self._processData(data); + filter(keywordArgs, self._arrayOfAllItems); + self._handleQueuedFetches(); + }catch(e){ + errorCallback(e, keywordArgs); + } + }); + getHandler.addErrback(function(error){ + self._loadInProgress = false; + if(errorCallback){ + errorCallback(error, keywordArgs); + }else{ + throw error; + } + }); + //Wire up the cancel to abort of the request + //This call cancel on the deferred if it hasn't been called + //yet and then will chain to the simple abort of the + //simpleFetch keywordArgs + var oldAbort = null; + if(keywordArgs.abort){ + oldAbort = keywordArgs.abort; + } + keywordArgs.abort = function(){ + var df = getHandler; + if(df && df.fired === -1){ + df.cancel(); + df = null; + } + if(oldAbort){ + oldAbort.call(keywordArgs); + } + }; + } + }else if(this._csvData){ + try{ + this._processData(this._csvData); + this._csvData = null; + filter(keywordArgs, this._arrayOfAllItems); + }catch(e){ + errorCallback(e, keywordArgs); + } + }else{ + var error = new Error(this.declaredClass + ": No CSV source data was provided as either URL or String data input."); + if(errorCallback){ + errorCallback(error, keywordArgs); + }else{ + throw error; + } + } + } + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + }, + + + // ------------------------------------------------------------------- + // Private methods + _getArrayOfArraysFromCsvFileContents: function(/* string */ csvFileContents){ + // summary: + // Parses a string of CSV records into a nested array structure. + // description: + // Given a string containing CSV records, this method parses + // the string and returns a data structure containing the parsed + // content. The data structure we return is an array of length + // R, where R is the number of rows (lines) in the CSV data. The + // return array contains one sub-array for each CSV line, and each + // sub-array contains C string values, where C is the number of + // columns in the CSV data. + // example: + // For example, given this CSV string as input: + // "Title, Year, Producer \n Alien, 1979, Ridley Scott \n Blade Runner, 1982, Ridley Scott" + // this._dataArray will be set to: + // [["Alien", "1979", "Ridley Scott"], + // ["Blade Runner", "1982", "Ridley Scott"]] + // And this._attributes will be set to: + // ["Title", "Year", "Producer"] + // And this._attributeIndexes will be set to: + // { "Title":0, "Year":1, "Producer":2 } + // tags: + // private + if(lang.isString(csvFileContents)){ + var leadingWhiteSpaceCharacters = new RegExp("^\\s+",'g'); + var trailingWhiteSpaceCharacters = new RegExp("\\s+$",'g'); + var doubleQuotes = new RegExp('""','g'); + var arrayOfOutputRecords = []; + var i; + + var arrayOfInputLines = this._splitLines(csvFileContents); + for(i = 0; i < arrayOfInputLines.length; ++i){ + var singleLine = arrayOfInputLines[i]; + if(singleLine.length > 0){ + var listOfFields = singleLine.split(this.separator); + var j = 0; + while(j < listOfFields.length){ + var space_field_space = listOfFields[j]; + var field_space = space_field_space.replace(leadingWhiteSpaceCharacters, ''); // trim leading whitespace + var field = field_space.replace(trailingWhiteSpaceCharacters, ''); // trim trailing whitespace + var firstChar = field.charAt(0); + var lastChar = field.charAt(field.length - 1); + var secondToLastChar = field.charAt(field.length - 2); + var thirdToLastChar = field.charAt(field.length - 3); + if(field.length === 2 && field == "\"\""){ + listOfFields[j] = ""; //Special case empty string field. + }else if((firstChar == '"') && + ((lastChar != '"') || + ((lastChar == '"') && (secondToLastChar == '"') && (thirdToLastChar != '"')))){ + if(j+1 === listOfFields.length){ + // alert("The last field in record " + i + " is corrupted:\n" + field); + return; //null + } + var nextField = listOfFields[j+1]; + listOfFields[j] = field_space + this.separator + nextField; + listOfFields.splice(j+1, 1); // delete element [j+1] from the list + }else{ + if((firstChar == '"') && (lastChar == '"')){ + field = field.slice(1, (field.length - 1)); // trim the " characters off the ends + field = field.replace(doubleQuotes, '"'); // replace "" with " + } + listOfFields[j] = field; + j += 1; + } + } + arrayOfOutputRecords.push(listOfFields); + } + } + + // The first item of the array must be the header row with attribute names. + this._attributes = arrayOfOutputRecords.shift(); + for(i = 0; i 0){ + for(var i = 0; i < this._queuedFetches.length; i++){ + var fData = this._queuedFetches[i]; + var delayedFilter = fData.filter; + var delayedQuery = fData.args; + if(delayedFilter){ + delayedFilter(delayedQuery, this._arrayOfAllItems); + }else{ + this.fetchItemByIdentity(fData.args); + } + } + this._queuedFetches = []; + } + } +}); +//Mix in the simple fetch implementation to this class. +lang.extend(CsvStore, simpleFetch); + +return CsvStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/FileStore.js b/js/dojo-release-1.7.2-src/dojox/data/FileStore.js new file mode 100755 index 0000000..566edee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/FileStore.js @@ -0,0 +1,430 @@ +define(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/window", "dojo/_base/json", "dojo/_base/xhr"], + function(declare, lang, winUtil, jsonUtil, xhr) { + +return declare("dojox.data.FileStore", null, { + constructor: function(/*Object*/args){ + // summary: + // A simple store that provides a datastore interface to a filesystem. + // description: + // A simple store that provides a datastore interface to a filesystem. It takes a few parameters + // for initialization: + // url: The URL of the service which provides the file store serverside implementation. + // label: The attribute of the file to use as the huma-readable text. Default is 'name'. + // The purpose of this store is to represent a file as a datastore item. The + // datastore item by default has the following attributes that can be examined on it. + // directory: Boolean indicating if the file item represents a directory. + // name: The filename with no path informatiom. + // path: The file complete file path including name, relative to the location the + // file service scans from + // size: The size of the file, in bytes. + // parentDir: The parent directory path. + // children: Any child files contained by a directory file item. + // + // Note that the store's server call pattern is RESTlike. + // + // The store also supports the passing of configurable options to the back end service, such as + // expanding all child files (no lazy load), displaying hidden files, displaying only directories, and so on. + // These are defined through a comma-separated list in declarative, or through setting the options array in programmatic. + // example: options="expand,dirsOnly,showHiddenFiles" + if(args && args.label){ + this.label = args.label; + } + if(args && args.url){ + this.url = args.url; + } + if(args && args.options){ + if(lang.isArray(args.options)){ + this.options = args.options; + }else{ + if(lang.isString(args.options)){ + this.options = args.options.split(","); + } + } + } + if(args && args.pathAsQueryParam){ + this.pathAsQueryParam = true; + } + if(args && "urlPreventCache" in args){ + this.urlPreventCache = args.urlPreventCache?true:false; + } + }, + + // url: [public] string + // The URL to the file path service. + url: "", + + // _storeRef: [private] string + // Internal variable used to denote an item came from this store instance. + _storeRef: "_S", + + // label: [public] string + // Default attribute to use to represent the item as a user-readable + // string. Public, so users can change it. + label: "name", + + // _identifier: [private] string + // Default attribute to use to represent the item's identifier. + // Path should always be unique in the store instance. + _identifier: "path", + + // _attributes: [private] string + // Internal variable of attributes all file items should have. + _attributes: ["children", "directory", "name", "path", "modified", "size", "parentDir"], // + + // pathSeparator: [public] string + // The path separator to use when chaining requests for children + // Can be overriden by the server on initial load + pathSeparator: "/", + + // options: [public] array + // Array of options to always send when doing requests. + // Back end service controls this, like 'dirsOnly', 'showHiddenFiles', 'expandChildren', etc. + options: [], + + // failOk: [public] boolean + // Flag to pass on to xhr functions to check if we are OK to fail the call silently + failOk: false, + + // urlPreventCache: [public] string + // Flag to dennote if preventCache should be passed to xhrGet. + urlPreventCache: true, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.FileStore: a function was passed an item argument that was not an item"); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error("dojox.data.FileStore: a function was passed an attribute argument that was not an attribute name string"); + } + }, + + pathAsQueryParam: false, //Function to switch between REST style URL lookups and passing the path to specific items as a query param: 'path'. + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true, 'dojo.data.api.Identity':true + }; + }, + + getValue: function(item, attribute, defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + var values = this.getValues(item, attribute); + if(values && values.length > 0){ + return values[0]; + } + return defaultValue; + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + return this._attributes; + }, + + hasAttribute: function(item, attribute){ + // summary: + // See dojo.data.api.Read.hasAttribute() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + return (attribute in item); + }, + + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + return this.getValue(item, this._identifier); + }, + + getIdentityAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this._identifier]; + }, + + + isItemLoaded: function(item){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + var loaded = this.isItem(item); + if(loaded && typeof item._loaded == "boolean" && !item._loaded){ + loaded = false; + } + return loaded; + }, + + loadItem: function(keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + var item = keywordArgs.item; + var self = this; + var scope = keywordArgs.scope || winUtil.global; + + var content = {}; + + if(this.options.length > 0){ + content.options = jsonUtil.toJson(this.options); + } + + if(this.pathAsQueryParam){ + content.path = item.parentPath + this.pathSeparator + item.name; + } + var xhrData = { + url: this.pathAsQueryParam? this.url : this.url + "/" + item.parentPath + "/" + item.name, + handleAs: "json-comment-optional", + content: content, + preventCache: this.urlPreventCache, + failOk: this.failOk + }; + + var deferred = xhr.get(xhrData); + deferred.addErrback(function(error){ + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, error); + } + }); + + deferred.addCallback(function(data){ + delete item.parentPath; + delete item._loaded; + lang.mixin(item, data); + self._processItem(item); + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, item); + } + }); + }, + + getLabel: function(item){ + // summary: + // See dojo.data.api.Read.getLabel() + return this.getValue(item,this.label); + }, + + getLabelAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this.label]; + }, + + containsValue: function(item, attribute, value){ + // summary: + // See dojo.data.api.Read.containsValue() + var values = this.getValues(item,attribute); + for(var i = 0; i < values.length; i++){ + if(values[i] == value){ + return true; + } + } + return false; + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValue() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + + var value = item[attribute]; + if(typeof value !== "undefined" && !lang.isArray(value)){ + value = [value]; + }else if(typeof value === "undefined"){ + value = []; + } + return value; + }, + + isItem: function(item){ + // summary: + // See dojo.data.api.Read.isItem() + if(item && item[this._storeRef] === this){ + return true; + } + return false; + }, + + close: function(request){ + // summary: + // See dojo.data.api.Read.close() + }, + + fetch: function(request){ + // summary: + // Fetch items that match to a query + // request: + // A request object + + request = request || {}; + if(!request.store){ + request.store = this; + } + var self = this; + var scope = request.scope || winUtil.global; + + //Generate what will be sent over. + var reqParams = {}; + if(request.query){ + reqParams.query = jsonUtil.toJson(request.query); + } + + if(request.sort){ + reqParams.sort = jsonUtil.toJson(request.sort); + } + + if(request.queryOptions){ + reqParams.queryOptions = jsonUtil.toJson(request.queryOptions); + } + + if(typeof request.start == "number"){ + reqParams.start = "" + request.start; + } + if(typeof request.count == "number"){ + reqParams.count = "" + request.count; + } + + if(this.options.length > 0){ + reqParams.options = jsonUtil.toJson(this.options); + } + + var getArgs = { + url: this.url, + preventCache: this.urlPreventCache, + failOk: this.failOk, + handleAs: "json-comment-optional", + content: reqParams + }; + + + var deferred = xhr.get(getArgs); + + deferred.addCallback(function(data){self._processResult(data, request);}); + deferred.addErrback(function(error){ + if(request.onError){ + request.onError.call(scope, error, request); + } + }); + }, + + fetchItemByIdentity: function(keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + var path = keywordArgs.identity; + var self = this; + var scope = keywordArgs.scope || winUtil.global; + + var content = {}; + + if(this.options.length > 0){ + content.options = jsonUtil.toJson(this.options); + } + + if(this.pathAsQueryParam){ + content.path = path; + } + var xhrData = { + url: this.pathAsQueryParam? this.url : this.url + "/" + path, + handleAs: "json-comment-optional", + content: content, + preventCache: this.urlPreventCache, + failOk: this.failOk + }; + + var deferred = xhr.get(xhrData); + deferred.addErrback(function(error){ + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, error); + } + }); + + deferred.addCallback(function(data){ + var item = self._processItem(data); + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, item); + } + }); + }, + + _processResult: function(data, request){ + var scope = request.scope || winUtil.global; + try{ + //If the data contains a path separator, set ours + if(data.pathSeparator){ + this.pathSeparator = data.pathSeparator; + } + //Invoke the onBegin handler, if any, to return the + //size of the dataset as indicated by the service. + if(request.onBegin){ + request.onBegin.call(scope, data.total, request); + } + //Now process all the returned items thro + var items = this._processItemArray(data.items); + if(request.onItem){ + var i; + for(i = 0; i < items.length; i++){ + request.onItem.call(scope, items[i], request); + } + items = null; + } + if(request.onComplete){ + request.onComplete.call(scope, items, request); + } + }catch (e){ + if(request.onError){ + request.onError.call(scope, e, request); + }else{ + console.log(e); + } + } + }, + + _processItemArray: function(itemArray){ + // summary: + // Internal function for processing an array of items for return. + var i; + for(i = 0; i < itemArray.length; i++){ + this._processItem(itemArray[i]); + } + return itemArray; + }, + + _processItem: function(item){ + // summary: + // Internal function for processing an item returned from the store. + // It sets up the store ref as well as sets up the attributes necessary + // to invoke a lazy load on a child, if there are any. + if(!item){return null;} + item[this._storeRef] = this; + if(item.children && item.directory){ + if(lang.isArray(item.children)){ + var children = item.children; + var i; + for(i = 0; i < children.length; i++ ){ + var name = children[i]; + if(lang.isObject(name)){ + children[i] = this._processItem(name); + }else{ + children[i] = {name: name, _loaded: false, parentPath: item.path}; + children[i][this._storeRef] = this; + } + } + }else{ + delete item.children; + } + } + return item; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/FlickrRestStore.js b/js/dojo-release-1.7.2-src/dojox/data/FlickrRestStore.js new file mode 100644 index 0000000..325f44c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/FlickrRestStore.js @@ -0,0 +1,485 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", "dojo/io/script", "dojox/data/FlickrStore", "dojo/_base/connect"], + function(lang, declare, array, scriptIO, FlickrStore, connect) { + +/*===== var FlickrStore = dojox.data.FlickrStore; =====*/ + +var FlickrRestStore = declare("dojox.data.FlickrRestStore", + FlickrStore, { + constructor: function(/*Object*/args){ + // summary: + // Initializer for the FlickrRestStore store. + // description: + // The FlickrRestStore is a Datastore interface to one of the basic services + // of the Flickr service, the public photo feed. This does not provide + // access to all the services of Flickr. + // This store cannot do * and ? filtering as the flickr service + // provides no interface for wildcards. + if(args){ + if(args.label){ + this.label = args.label; + } + if(args.apikey){ + this._apikey = args.apikey; + } + } + this._cache = []; + this._prevRequests = {}; + this._handlers = {}; + this._prevRequestRanges = []; + this._maxPhotosPerUser = {}; + this._id = FlickrRestStore.prototype._id++; + }, + + // _id: Integer + // A unique identifier for this store. + _id: 0, + + // _requestCount: Integer + // A counter for the number of requests made. This is used to define + // the callback function that Flickr will use. + _requestCount: 0, + + // _flickrRestUrl: String + // The URL to the Flickr REST services. + _flickrRestUrl: "http://www.flickr.com/services/rest/", + + // _apikey: String + // The users API key to be used when accessing Flickr REST services. + _apikey: null, + + // _storeRef: String + // A key used to mark an data store item as belonging to this store. + _storeRef: "_S", + + // _cache: Array + // An Array of all previously downloaded picture info. + _cache: null, + + // _prevRequests: Object + // A HashMap used to record the signature of a request to prevent duplicate + // request being made. + _prevRequests: null, + + // _handlers: Object + // A HashMap used to record the handlers registered for a single remote request. Multiple + // requests may be made for the same information before the first request has finished. + // Each element of this Object is an array of handlers to call back when the request finishes. + // This prevents multiple requests being made for the same information. + _handlers: null, + + // _sortAttributes: Object + // A quick lookup of valid attribute names in a sort query. + _sortAttributes: { + "date-posted": true, + "date-taken": true, + "interestingness": true + }, + + _fetchItems: function( /*Object*/ request, + /*Function*/ fetchHandler, + /*Function*/ errorHandler){ + // summary: Fetch flickr items that match to a query + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + var query = {}; + if(!request.query){ + request.query = query = {}; + } else { + lang.mixin(query, request.query); + } + + var primaryKey = []; + var secondaryKey = []; + + //Build up the content to send the request for. + var content = { + format: "json", + method: "flickr.photos.search", + api_key: this._apikey, + extras: "owner_name,date_upload,date_taken" + }; + var isRest = false; + if(query.userid){ + isRest = true; + content.user_id = request.query.userid; + primaryKey.push("userid"+request.query.userid); + } + + if(query.groupid){ + isRest = true; + content.group_id = query.groupid; + primaryKey.push("groupid" + query.groupid); + } + + if(query.apikey){ + isRest = true; + content.api_key = request.query.apikey; + secondaryKey.push("api"+request.query.apikey); + }else if(content.api_key){ + isRest = true; + request.query.apikey = content.api_key; + secondaryKey.push("api"+content.api_key); + }else{ + throw Error("dojox.data.FlickrRestStore: An API key must be specified."); + } + + request._curCount = request.count; + + if(query.page){ + content.page = request.query.page; + secondaryKey.push("page" + content.page); + }else if(("start" in request) && request.start !== null){ + if(!request.count){ + request.count = 20; + } + var diff = request.start % request.count; + var start = request.start, count = request.count; + // If the count does not divide cleanly into the start number, + // more work has to be done to figure out the best page to request + if(diff !== 0) { + if(start < count / 2){ + // If the first record requested is less than half the + // amount requested, then request from 0 to the count record + count = start + count; + start = 0; + }else{ + var divLimit = 20, div = 2; + for(var i = divLimit; i > 0; i--){ + if(start % i === 0 && (start/i) >= count){ + div = i; + break; + } + } + count = start/div; + } + request._realStart = request.start; + request._realCount = request.count; + request._curStart = start; + request._curCount = count; + }else{ + request._realStart = request._realCount = null; + request._curStart = request.start; + request._curCount = request.count; + } + + content.page = (start / count) + 1; + secondaryKey.push("page" + content.page); + } + + if(request._curCount){ + content.per_page = request._curCount; + secondaryKey.push("count" + request._curCount); + } + + if(query.lang){ + content.lang = request.query.lang; + primaryKey.push("lang" + request.lang); + } + + if(query.setid){ + content.method = "flickr.photosets.getPhotos"; + content.photoset_id = request.query.setid; + primaryKey.push("set" + request.query.setid); + } + + if(query.tags){ + if(query.tags instanceof Array){ + content.tags = query.tags.join(","); + }else{ + content.tags = query.tags; + } + primaryKey.push("tags" + content.tags); + + if(query["tag_mode"] && (query.tag_mode.toLowerCase() === "any" || + query.tag_mode.toLowerCase() === "all")){ + content.tag_mode = query.tag_mode; + } + } + if(query.text){ + content.text=query.text; + primaryKey.push("text:"+query.text); + } + + //The store only supports a single sort attribute, even though the + //Read API technically allows multiple sort attributes + if(query.sort && query.sort.length > 0){ + //The default sort attribute is 'date-posted' + if(!query.sort[0].attribute){ + query.sort[0].attribute = "date-posted"; + } + + //If the sort attribute is valid, check if it is ascending or + //descending. + if(this._sortAttributes[query.sort[0].attribute]) { + if(query.sort[0].descending){ + content.sort = query.sort[0].attribute + "-desc"; + }else{ + content.sort = query.sort[0].attribute + "-asc"; + } + } + }else{ + //The default sort in the Dojo Data API is ascending. + content.sort = "date-posted-asc"; + } + primaryKey.push("sort:"+content.sort); + + //Generate a unique key for this request, so the store can + //detect duplicate requests. + primaryKey = primaryKey.join("."); + secondaryKey = secondaryKey.length > 0 ? "." + secondaryKey.join(".") : ""; + var requestKey = primaryKey + secondaryKey; + + //Make a copy of the request, in case the source object is modified + //before the request completes + request = { + query: query, + count: request._curCount, + start: request._curStart, + _realCount: request._realCount, + _realStart: request._realStart, + onBegin: request.onBegin, + onComplete: request.onComplete, + onItem: request.onItem + }; + + var thisHandler = { + request: request, + fetchHandler: fetchHandler, + errorHandler: errorHandler + }; + + //If the request has already been made, but not yet completed, + //then add the callback handler to the list of handlers + //for this request, and finish. + if(this._handlers[requestKey]){ + this._handlers[requestKey].push(thisHandler); + return; + } + + this._handlers[requestKey] = [thisHandler]; + + //Linking this up to Flickr is a PAIN! + var handle = null; + var getArgs = { + url: this._flickrRestUrl, + preventCache: this.urlPreventCache, + content: content, + callbackParamName: "jsoncallback" + }; + + var doHandle = lang.hitch(this, function(processedData, data, handler){ + var onBegin = handler.request.onBegin; + handler.request.onBegin = null; + var maxPhotos; + var req = handler.request; + + if(("_realStart" in req) && req._realStart != null){ + req.start = req._realStart; + req.count = req._realCount; + req._realStart = req._realCount = null; + } + + //If the request contains an onBegin method, the total number + //of photos must be calculated. + if(onBegin){ + var photos = null; + if(data){ + photos = (data.photoset ? data.photoset : data.photos); + } + if(photos && ("perpage" in photos) && ("pages" in photos)){ + if(photos.perpage * photos.pages <= handler.request.start + handler.request.count){ + //If the final page of results has been received, it is possible to + //know exactly how many photos there are + maxPhotos = handler.request.start + photos.photo.length; + }else{ + //If the final page of results has not yet been received, + //it is not possible to tell exactly how many photos exist, so + //return the number of pages multiplied by the number of photos per page. + maxPhotos = photos.perpage * photos.pages; + } + this._maxPhotosPerUser[primaryKey] = maxPhotos; + onBegin(maxPhotos, handler.request); + }else if(this._maxPhotosPerUser[primaryKey]){ + onBegin(this._maxPhotosPerUser[primaryKey], handler.request); + } + } + //Call whatever functions the caller has defined on the request object, except for onBegin + handler.fetchHandler(processedData, handler.request); + if(onBegin){ + //Replace the onBegin function, if it existed. + handler.request.onBegin = onBegin; + } + }); + + //Define a callback for the script that iterates through a list of + //handlers for this piece of data. Multiple requests can come into + //the store for the same data. + var myHandler = lang.hitch(this, function(data){ + //The handler should not be called more than once, so disconnect it. + //if(handle !== null){ dojo.disconnect(handle); } + if(data.stat != "ok"){ + errorHandler(null, request); + }else{ //Process the items... + var handlers = this._handlers[requestKey]; + if(!handlers){ + console.log("FlickrRestStore: no handlers for data", data); + return; + } + + this._handlers[requestKey] = null; + this._prevRequests[requestKey] = data; + + //Process the data once. + var processedData = this._processFlickrData(data, request, primaryKey); + if(!this._prevRequestRanges[primaryKey]){ + this._prevRequestRanges[primaryKey] = []; + } + this._prevRequestRanges[primaryKey].push({ + start: request.start, + end: request.start + (data.photoset ? data.photoset.photo.length : data.photos.photo.length) + }); + + //Iterate through the array of handlers, calling each one. + array.forEach(handlers, function(i){ + doHandle(processedData, data, i); + }); + } + }); + + var data = this._prevRequests[requestKey]; + + //If the data was previously retrieved, there is no need to fetch it again. + if(data){ + this._handlers[requestKey] = null; + doHandle(this._cache[primaryKey], data, thisHandler); + return; + }else if(this._checkPrevRanges(primaryKey, request.start, request.count)){ + //If this range of data has already been retrieved, reuse it. + this._handlers[requestKey] = null; + doHandle(this._cache[primaryKey], null, thisHandler); + return; + } + + var deferred = scriptIO.get(getArgs); + deferred.addCallback(myHandler); + + //We only set up the errback, because the callback isn't ever really used because we have + //to link to the jsonFlickrFeed function.... + deferred.addErrback(function(error){ + connect.disconnect(handle); + errorHandler(error, request); + }); + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + return [ + "title", "author", "imageUrl", "imageUrlSmall", "imageUrlMedium", + "imageUrlThumb", "imageUrlLarge", "imageUrlOriginal", "link", "dateTaken", "datePublished" + ]; + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValue() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + + switch(attribute){ + case "title": + return [ this._unescapeHtml(item.title) ]; // String + case "author": + return [ item.ownername ]; // String + case "imageUrlSmall": + return [ item.media.s ]; // String + case "imageUrl": + return [ item.media.l ]; // String + case "imageUrlOriginal": + return [ item.media.o ]; // String + case "imageUrlLarge": + return [ item.media.l ]; // String + case "imageUrlMedium": + return [ item.media.m ]; // String + case "imageUrlThumb": + return [ item.media.t ]; // String + case "link": + return [ "http://www.flickr.com/photos/" + item.owner + "/" + item.id ]; // String + case "dateTaken": + return [ item.datetaken ]; + case "datePublished": + return [ item.datepublished ]; + default: + return undefined; + } + + }, + + _processFlickrData: function(/* Object */data, /* Object */request, /* String */ cacheKey){ + // summary: Processes the raw data from Flickr and updates the internal cache. + // data: + // Data returned from Flickr + // request: + // The original dojo.data.Request object passed in by the user. + + // If the data contains an 'item' object, it has not come from the REST + // services, so process it using the FlickrStore. + if(data.items){ + return FlickrStore.prototype._processFlickrData.apply(this,arguments); + } + var template = ["http://farm", null, ".static.flickr.com/", null, "/", null, "_", null]; + + var items = []; + var photos = (data.photoset ? data.photoset : data.photos); + if(data.stat == "ok" && photos && photos.photo){ + items = photos.photo; + + //Add on the store ref so that isItem can work. + for(var i = 0; i < items.length; i++){ + var item = items[i]; + item[this._storeRef] = this; + template[1] = item.farm; + template[3] = item.server; + template[5] = item.id; + template[7] = item.secret; + + var base = template.join(""); + item.media = { + s: base + "_s.jpg", + m: base + "_m.jpg", + l: base + ".jpg", + t: base + "_t.jpg", + o: base + "_o.jpg" + }; + if(!item.owner && data.photoset){ + item.owner = data.photoset.owner; + } + } + } + var start = request.start ? request.start : 0; + var arr = this._cache[cacheKey]; + if(!arr){ + this._cache[cacheKey] = arr = []; + } + array.forEach(items, function(i, idx){ + arr[idx+ start] = i; + }); + + return arr; // Array + }, + + _checkPrevRanges: function(primaryKey, start, count){ + var end = start + count; + var arr = this._prevRequestRanges[primaryKey]; + return (!!arr) && array.some(arr, function(item){ + return ((start >= item.start)&&(end <= item.end)); + }); + } +}); +return FlickrRestStore; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/FlickrStore.js b/js/dojo-release-1.7.2-src/dojox/data/FlickrStore.js new file mode 100644 index 0000000..104f112 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/FlickrStore.js @@ -0,0 +1,284 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/array", "dojo/data/util/simpleFetch", "dojo/io/script", + "dojo/_base/connect", "dojo/date/stamp", "dojo/AdapterRegistry"], + function(lang, declare, array, simpleFetch, scriptIO, connect, dateStamp, AdapterRegistry) { + +var FlickrStore = declare("dojox.data.FlickrStore", null, { + constructor: function(/*Object*/args){ + // summary: + // Initializer for the FlickrStore store. + // description: + // The FlickrStore is a Datastore interface to one of the basic services + // of the Flickr service, the public photo feed. This does not provide + // access to all the services of Flickr. + // This store cannot do * and ? filtering as the flickr service + // provides no interface for wildcards. + if(args && args.label){ + this.label = args.label; + } + if(args && "urlPreventCache" in args){ + this.urlPreventCache = args.urlPreventCache?true:false; + } + }, + + _storeRef: "_S", + + label: "title", + + //Flag to allor control of if cache prevention is enabled or not. + urlPreventCache: true, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.FlickrStore: a function was passed an item argument that was not an item"); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error("dojox.data.FlickrStore: a function was passed an attribute argument that was not an attribute name string"); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true + }; + }, + + getValue: function(item, attribute, defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + var values = this.getValues(item, attribute); + if(values && values.length > 0){ + return values[0]; + } + return defaultValue; + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + return [ + "title", "description", "author", "datePublished", "dateTaken", + "imageUrl", "imageUrlSmall", "imageUrlMedium", "tags", "link" + ]; + }, + + hasAttribute: function(item, attribute){ + // summary: + // See dojo.data.api.Read.hasAttributes() + var v = this.getValue(item,attribute); + if(v || v === "" || v === false){ + return true; + } + return false; + }, + + isItemLoaded: function(item){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(item); + }, + + loadItem: function(keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + }, + + getLabel: function(item){ + // summary: + // See dojo.data.api.Read.getLabel() + return this.getValue(item,this.label); + }, + + getLabelAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this.label]; + }, + + containsValue: function(item, attribute, value){ + // summary: + // See dojo.data.api.Read.containsValue() + var values = this.getValues(item,attribute); + for(var i = 0; i < values.length; i++){ + if(values[i] === value){ + return true; + } + } + return false; + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValue() + + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var u = lang.hitch(this, "_unescapeHtml"); + var s = lang.hitch(dateStamp, "fromISOString"); + switch(attribute){ + case "title": + return [ u(item.title) ]; + case "author": + return [ u(item.author) ]; + case "datePublished": + return [ s(item.published) ]; + case "dateTaken": + return [ s(item.date_taken) ]; + case "imageUrlSmall": + return [ item.media.m.replace(/_m\./, "_s.") ]; + case "imageUrl": + return [ item.media.m.replace(/_m\./, ".") ]; + case "imageUrlMedium": + return [ item.media.m ]; + case "link": + return [ item.link ]; + case "tags": + return item.tags.split(" "); + case "description": + return [ u(item.description) ]; + default: + return []; + } + }, + + isItem: function(item){ + // summary: + // See dojo.data.api.Read.isItem() + if(item && item[this._storeRef] === this){ + return true; + } + return false; + }, + + close: function(request){ + // summary: + // See dojo.data.api.Read.close() + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Fetch flickr items that match to a query + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + + var rq = request.query = request.query || {}; + + //Build up the content to send the request for. + var content = { + format: "json", + tagmode:"any" + }; + + array.forEach( + [ "tags", "tagmode", "lang", "id", "ids" ], + function(i){ + if(rq[i]){ content[i] = rq[i]; } + } + ); + + content.id = rq.id || rq.userid || rq.groupid; + + if(rq.userids){ + content.ids = rq.userids; + } + + //Linking this up to Flickr is a PAIN! + var handle = null; + var getArgs = { + url: dojox.data.FlickrStore.urlRegistry.match(request), + preventCache: this.urlPreventCache, + content: content + }; + var myHandler = lang.hitch(this, function(data){ + if(!!handle){ + connect.disconnect(handle); + } + + //Process the items... + fetchHandler(this._processFlickrData(data), request); + }); + handle = connect.connect("jsonFlickrFeed", myHandler); + var deferred = scriptIO.get(getArgs); + + //We only set up the errback, because the callback isn't ever really used because we have + //to link to the jsonFlickrFeed function.... + deferred.addErrback(function(error){ + connect.disconnect(handle); + errorHandler(error, request); + }); + }, + + _processFlickrData: function(data){ + var items = []; + if(data.items){ + items = data.items; + //Add on the store ref so that isItem can work. + for(var i = 0; i < data.items.length; i++){ + var item = data.items[i]; + item[this._storeRef] = this; + } + } + return items; + }, + + _unescapeHtml: function(/*String*/ str){ + // summary: + // Utility function to un-escape XML special characters in an + // HTML string. + // str: String. + // The string to un-escape + // returns: + // HTML String converted back to the normal text (unescaped) + // characters (<,>,&, ", etc,). + + //TODO: + // Check to see if theres already compatible escape() in + // dojo.string or dojo.html + return str.replace(/&/gm, "&"). + replace(/</gm, "<"). + replace(/>/gm, ">"). + replace(/"/gm, "\""). + replace(/'/gm, "'"); + } +}); + +lang.extend(FlickrStore, simpleFetch); + +var feedsUrl = "http://api.flickr.com/services/feeds/"; + +var reg = FlickrStore.urlRegistry = new AdapterRegistry(true); + +reg.register("group pool", + function(request){ return !!request.query["groupid"]; }, + feedsUrl+"groups_pool.gne" +); + +reg.register("default", + function(request){ return true; }, + feedsUrl+"photos_public.gne" +); + +//We have to define this because of how the Flickr API works. +//This somewhat stinks, but what can you do? +if(!jsonFlickrFeed){ + var jsonFlickrFeed = function(data){}; +} + +return FlickrStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/GoogleFeedStore.js b/js/dojo-release-1.7.2-src/dojox/data/GoogleFeedStore.js new file mode 100644 index 0000000..b85f7f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/GoogleFeedStore.js @@ -0,0 +1,80 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare", "dojox/data/GoogleSearchStore"], + function(dojo, lang, declare, GoogleSearchStore) { + +dojo.experimental("dojox.data.GoogleFeedStore"); + +/*===== var Search = dojox.data.GoogleSearchStore =====*/ +var Search = GoogleSearchStore.Search; + +return declare("dojox.data.GoogleFeedStore", Search,{ + // summary: + // A data store for retrieving RSS and Atom feeds from Google. The + // feeds can come from any source, which is specified in the "url" + // parameter of the query passed to the "fetch" function. + // The following attributes are supported on each item: + //
                            + //
                          • title - The feed entry title.
                          • + //
                          • link - The URL for the HTML version of the feed entry.
                          • + //
                          • content - The full content of the blog post, in HTML format
                          • + //
                          • summary - A snippet of information about the feed entry, in plain text
                          • + //
                          • published - The string date on which the entry was published. + // You can parse the date with new Date(store.getValue(item, "published")
                          • + //
                          • categories - An array of string tags for the entry
                          • + //
                          + // The query accepts one parameter: url - The URL of the feed to retrieve + _type: "", + _googleUrl: "http://ajax.googleapis.com/ajax/services/feed/load", + _attributes: ["title", "link", "author", "published", + "content", "summary", "categories"], + _queryAttrs: { + "url":"q" + }, + + getFeedValue: function(attribute, defaultValue){ + // summary: + // Non-API method for retrieving values regarding the Atom feed, + // rather than the Atom entries. + var values = this.getFeedValues(attribute, defaultValue); + if(lang.isArray(values)){ + return values[0]; + } + return values; + }, + + getFeedValues: function(attribute, defaultValue){ + // summary: + // Non-API method for retrieving values regarding the Atom feed, + // rather than the Atom entries. + if(!this._feedMetaData){ + return defaultValue; + } + return this._feedMetaData[attribute] || defaultValue; + }, + + _processItem: function(item, request) { + this.inherited(arguments); + item["summary"] = item["contentSnippet"]; + item["published"] = item["publishedDate"]; + }, + + _getItems: function(data){ + if(data['feed']){ + this._feedMetaData = { + title: data.feed.title, + desc: data.feed.description, + url: data.feed.link, + author: data.feed.author + }; + return data.feed.entries; + } + return null; + }, + + _createContent: function(query, callback, request){ + var cb = this.inherited(arguments); + cb.num = (request.count || 10) + (request.start || 0); + return cb; + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/GoogleSearchStore.js b/js/dojo-release-1.7.2-src/dojox/data/GoogleSearchStore.js new file mode 100644 index 0000000..8fb3788 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/GoogleSearchStore.js @@ -0,0 +1,656 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare", "dojo/_base/window", "dojo/_base/query", + "dojo/dom-construct","dojo/io/script"], + function(dojo, lang, declare, winUtil, domQuery, domConstruct, scriptIO) { + +dojo.experimental("dojox.data.GoogleSearchStore"); + +var SearchStore = declare("dojox.data.GoogleSearchStore",null,{ + // summary: + // A data store for retrieving search results from Google. + // This data store acts as a base class for Google searches, + // and has a number of child data stores that implement different + // searches. This store defaults to searching the web, and is functionally + // identical to the dojox.data.GoogleWebSearchStore object. + // The following attributes are supported on each item: + //
                            + //
                          • url - The URL for the item
                          • + //
                          • unescapedUrl - The URL for the item, with URL escaping. This is often more readable
                          • + //
                          • visibleUrl - The URL with no protocol specified. + //
                          • cacheUrl - The URL to the copy of the document cached by Google + //
                          • title - The page title in HTML format.
                          • + //
                          • titleNoFormatting - The page title in plain text
                          • + //
                          • content - A snippet of information about the page
                          • + //
                          + // The query accepts one parameter: text - The string to search for + constructor: function(/*Object*/args){ + // summary: + // Initializer for the GoogleSearchStore store. + // description: + // The GoogleSearchStore is a Datastore interface to + // the Google search service. The constructor accepts the following arguments: + //
                            + //
                          • label - the label attribute to use. Defaults to titleNoFormatting
                          • + //
                          • key - The API key to use. This is optional
                          • + //
                          • lang - The language locale to use. Defaults to the browser locale
                          • + //
                          + + if(args){ + if(args.label){ + this.label = args.label; + } + if(args.key){ + this._key = args.key; + } + if(args.lang){ + this._lang = args.lang; + } + if("urlPreventCache" in args){ + this.urlPreventCache = args.urlPreventCache?true:false; + } + } + this._id = dojox.data.GoogleSearchStore.prototype._id++; + }, + + // _id: Integer + // A unique identifier for this store. + _id: 0, + + // _requestCount: Integer + // A counter for the number of requests made. This is used to define + // the callback function that GoogleSearchStore will use. + _requestCount: 0, + + // _googleUrl: String + // The URL to Googles search web service. + _googleUrl: "http://ajax.googleapis.com/ajax/services/search/", + + // _storeRef: String + // The internal reference added to each item pointing at the store which owns it. + _storeRef: "_S", + + // _attributes: Array + // The list of attributes that this store supports + _attributes: [ "unescapedUrl", "url", "visibleUrl", "cacheUrl", "title", + "titleNoFormatting", "content", "estimatedResultCount"], + + // _aggregtedAttributes: Hash + // Maps per-query aggregated attributes that this store supports to the result keys that they come from. + _aggregatedAttributes: { + estimatedResultCount: "cursor.estimatedResultCount" + }, + + // label: String + // The default attribute which acts as a label for each item. + label: "titleNoFormatting", + + // type: String + // The type of search. Valid values are "web", "local", "video", "blogs", "news", "books", "images". + // This should not be set directly. Instead use one of the child classes. + _type: "web", + + // urlPreventCache: boolean + // Sets whether or not to pass preventCache to dojo.io.script. + urlPreventCache: true, + + + // _queryAttrs: Hash + // Maps query hash keys to Google query parameters. + _queryAttrs: { + text: 'q' + }, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.GoogleSearchStore: a function was passed an item argument that was not an item"); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error("dojox.data.GoogleSearchStore: a function was passed an attribute argument that was not an attribute name string"); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true + }; + }, + + getValue: function(item, attribute, defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + var values = this.getValues(item, attribute); + if(values && values.length > 0){ + return values[0]; + } + return defaultValue; + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + return this._attributes; + }, + + hasAttribute: function(item, attribute){ + // summary: + // See dojo.data.api.Read.hasAttributes() + if(this.getValue(item,attribute)){ + return true; + } + return false; + }, + + isItemLoaded: function(item){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(item); + }, + + loadItem: function(keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + }, + + getLabel: function(item){ + // summary: + // See dojo.data.api.Read.getLabel() + return this.getValue(item,this.label); + }, + + getLabelAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this.label]; + }, + + containsValue: function(item, attribute, value){ + // summary: + // See dojo.data.api.Read.containsValue() + var values = this.getValues(item,attribute); + for(var i = 0; i < values.length; i++){ + if(values[i] === value){ + return true; + } + } + return false; + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValue() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var val = item[attribute]; + if(lang.isArray(val)) { + return val; + }else if(val !== undefined){ + return [val]; + }else{ + return []; + } + }, + + isItem: function(item){ + // summary: + // See dojo.data.api.Read.isItem() + if(item && item[this._storeRef] === this){ + return true; + } + return false; + }, + + close: function(request){ + // summary: + // See dojo.data.api.Read.close() + }, + + _format: function(item, name){ + return item;//base implementation does not format any items + }, + + fetch: function(request){ + // summary: + // Fetch Google search items that match to a query + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + request = request || {}; + + var scope = request.scope || winUtil.global; + + if(!request.query){ + if(request.onError){ + request.onError.call(scope, new Error(this.declaredClass + + ": A query must be specified.")); + return; + } + } + //Make a copy of the request object, in case it is + //modified outside the store in the middle of a request + var query = {}; + for(var attr in this._queryAttrs) { + query[attr] = request.query[attr]; + } + request = { + query: query, + onComplete: request.onComplete, + onError: request.onError, + onItem: request.onItem, + onBegin: request.onBegin, + start: request.start, + count: request.count + }; + + //Google's web api will only return a max of 8 results per page. + var pageSize = 8; + + //Generate a unique function to be called back + var callbackFn = "GoogleSearchStoreCallback_" + this._id + "_" + (++this._requestCount); + + //Build up the content to send the request for. + //rsz is the result size, "large" gives 8 results each time + var content = this._createContent(query, callbackFn, request); + + var firstRequest; + + if(typeof(request.start) === "undefined" || request.start === null){ + request.start = 0; + } + + if(!request.count){ + request.count = pageSize; + } + firstRequest = {start: request.start - request.start % pageSize}; + + var _this = this; + var searchUrl = this._googleUrl + this._type; + + var getArgs = { + url: searchUrl, + preventCache: this.urlPreventCache, + content: content + }; + + var items = []; + var successfulReq = 0; + var finished = false; + var lastOnItem = request.start -1; + var numRequests = 0; + var scriptIds = []; + + // Performs the remote request. + function doRequest(req){ + //Record how many requests have been made. + numRequests ++; + getArgs.content.context = getArgs.content.start = req.start; + + var deferred = scriptIO.get(getArgs); + scriptIds.push(deferred.ioArgs.id); + + //We only set up the errback, because the callback isn't ever really used because we have + //to link to the jsonp callback function.... + deferred.addErrback(function(error){ + if(request.onError){ + request.onError.call(scope, error, request); + } + }); + } + + // Function to handle returned data. + var myHandler = function(start, data){ + if (scriptIds.length > 0) { + // Delete the script node that was created. + domQuery("#" + scriptIds.splice(0,1)).forEach(domConstruct.destroy); + } + if(finished){return;} + + var results = _this._getItems(data); + var cursor = data ? data['cursor']: null; + + if(results){ + //Process the results, adding the store reference to them + for(var i = 0; i < results.length && i + start < request.count + request.start; i++) { + _this._processItem(results[i], data); + items[i + start] = results[i]; + } + successfulReq ++; + if(successfulReq == 1){ + // After the first request, we know how many results exist. + // So perform any follow up requests to retrieve more data. + var pages = cursor ? cursor.pages : null; + var firstStart = pages ? Number(pages[pages.length - 1].start) : 0; + + //Call the onBegin method if it exists + if (request.onBegin){ + var est = cursor ? cursor.estimatedResultCount : results.length; + var total = est ? Math.min(est, firstStart + results.length) : firstStart + results.length; + request.onBegin.call(scope, total, request); + } + + // Request the next pages. + var nextPage = (request.start - request.start % pageSize) + pageSize; + var page = 1; + while(pages){ + if(!pages[page] || Number(pages[page].start) >= request.start + request.count){ + break; + } + if(Number(pages[page].start) >= nextPage) { + doRequest({start: pages[page].start}); + } + page++; + } + } + + // Call the onItem function on all retrieved items. + if(request.onItem && items[lastOnItem + 1]){ + do{ + lastOnItem++; + request.onItem.call(scope, items[lastOnItem], request); + }while(items[lastOnItem + 1] && lastOnItem < request.start + request.count); + } + + //If this is the last request, call final fetch handler. + if(successfulReq == numRequests){ + //Process the items... + finished = true; + //Clean up the function, it should never be called again + winUtil.global[callbackFn] = null; + if(request.onItem){ + request.onComplete.call(scope, null, request); + }else{ + items = items.slice(request.start, request.start + request.count); + request.onComplete.call(scope, items, request); + } + + } + } + }; + + var callbacks = []; + var lastCallback = firstRequest.start - 1; + + // Attach a callback function to the global namespace, where Google can call it. + winUtil.global[callbackFn] = function(start, data, responseCode, errorMsg){ + try { + if(responseCode != 200){ + if(request.onError){ + request.onError.call(scope, new Error("Response from Google was: " + responseCode), request); + } + winUtil.global[callbackFn] = function(){};//an error occurred, do not return anything else. + return; + } + + if(start == lastCallback + 1){ + myHandler(Number(start), data); + lastCallback += pageSize; + + //make sure that the callbacks happen in the correct sequence + if(callbacks.length > 0){ + callbacks.sort(_this._getSort()); + //In case the requsts do not come back in order, sort the returned results. + while(callbacks.length > 0 && callbacks[0].start == lastCallback + 1){ + myHandler(Number(callbacks[0].start), callbacks[0].data); + callbacks.splice(0,1); + lastCallback += pageSize; + } + } + }else{ + callbacks.push({start:start, data: data}); + } + } catch (e) { + request.onError.call(scope, e, request); + } + }; + + // Perform the first request. When this has finished + // we will have a list of pages, which can then be + // gone through + doRequest(firstRequest); + }, + + _getSort: function() { + return function(a,b){ + if(a.start < b.start){return -1;} + if(b.start < a.start){return 1;} + return 0; + }; + }, + + _processItem: function(item, data) { + item[this._storeRef] = this; + // Copy aggregated attributes from query results to the item. + for(var attribute in this._aggregatedAttributes) { + item[attribute] = lang.getObject(this._aggregatedAttributes[attribute], false, data); + } + }, + + _getItems: function(data){ + return data['results'] || data; + }, + + _createContent: function(query, callback, request){ + var content = { + v: "1.0", + rsz: "large", + callback: callback, + key: this._key, + hl: this._lang + }; + for(var attr in this._queryAttrs) { + content[this._queryAttrs[attr]] = query[attr]; + } + return content; + } +}); + +var WebSearchStore = declare("dojox.data.GoogleWebSearchStore", SearchStore,{ + // Summary: + // A data store for retrieving search results from Google. + // The following attributes are supported on each item: + //
                            + //
                          • title - The page title in HTML format.
                          • + //
                          • titleNoFormatting - The page title in plain text
                          • + //
                          • content - A snippet of information about the page
                          • + //
                          • url - The URL for the item
                          • + //
                          • unescapedUrl - The URL for the item, with URL escaping. This is often more readable
                          • + //
                          • visibleUrl - The URL with no protocol specified.
                          • + //
                          • cacheUrl - The URL to the copy of the document cached by Google
                          • + //
                          • estimatedResultCount - (aggregated per-query) estimated number of results
                          • + //
                          + // The query accepts one parameter: text - The string to search for +}); + +var BlogSearchStore = declare("dojox.data.GoogleBlogSearchStore", SearchStore,{ + // Summary: + // A data store for retrieving search results from Google. + // The following attributes are supported on each item: + //
                            + //
                          • title - The blog post title in HTML format.
                          • + //
                          • titleNoFormatting - The blog post title in plain text
                          • + //
                          • content - A snippet of information about the blog post
                          • + //
                          • blogUrl - The URL for the blog
                          • + //
                          • postUrl - The URL for the a single blog post
                          • + //
                          • visibleUrl - The URL with no protocol specified. + //
                          • cacheUrl - The URL to the copy of the document cached by Google + //
                          • author - The author of the blog post
                          • + //
                          • publishedDate - The published date, in RFC-822 format
                          • + //
                          + // The query accepts one parameter: text - The string to search for + _type: "blogs", + _attributes: ["blogUrl", "postUrl", "title", "titleNoFormatting", "content", + "author", "publishedDate"], + _aggregatedAttributes: { } +}); + + +var LocalSearchStore = declare("dojox.data.GoogleLocalSearchStore", SearchStore,{ + // summary: + // A data store for retrieving search results from Google. + // The following attributes are supported on each item: + //
                            + //
                          • title - The blog post title in HTML format.
                          • + //
                          • titleNoFormatting - The blog post title in plain text
                          • + //
                          • content - A snippet of information about the blog post
                          • + //
                          • url - The URL for the item
                          • + //
                          • lat - The latitude.
                          • + //
                          • lng - The longtitude.
                          • + //
                          • streetAddress - The street address
                          • + //
                          • city - The city
                          • + //
                          • region - The region
                          • + //
                          • country - The country
                          • + //
                          • phoneNumbers - Phone numbers associated with this address. Can be one or more.
                          • + //
                          • ddUrl - A URL that can be used to provide driving directions from the center of the search results to this search results
                          • + //
                          • ddUrlToHere - A URL that can be used to provide driving directions from this search result to a user specified location
                          • + //
                          • staticMapUrl - The published date, in RFC-822 format
                          • + //
                          • viewport - Recommended viewport for the query results (same for all results in a query) + //
                              + //
                            • center - contains lat, lng properties
                            • + //
                            • span - lat, lng properties for the viewport span
                            • + //
                            • ne, sw - lat, lng properties for the viewport corners
                            • + //
                            + //
                          • + //
                          + // The query accepts the following parameters: + //
                            + //
                          • text - The string to search for
                          • + //
                          • centerLatLong - Comma-separated lat & long for the center of the search (e.g. "48.8565,2.3509")
                          • + //
                          • searchSpan - Comma-separated lat & long degrees indicating the size of the desired search area (e.g. "0.065165,0.194149")
                          • + //
                          + _type: "local", + _attributes: ["title", "titleNoFormatting", "url", "lat", "lng", "streetAddress", + "city", "region", "country", "phoneNumbers", "ddUrl", "ddUrlToHere", + "ddUrlFromHere", "staticMapUrl", "viewport"], + _aggregatedAttributes: { + viewport: "viewport" + }, + _queryAttrs: { + text: 'q', + centerLatLong: 'sll', + searchSpan: 'sspn' + } +}); + +var VideoSearchStore = declare("dojox.data.GoogleVideoSearchStore", SearchStore,{ + // summary: + // A data store for retrieving search results from Google. + // The following attributes are supported on each item: + //
                            + //
                          • title - The blog post title in HTML format.
                          • + //
                          • titleNoFormatting - The blog post title in plain text
                          • + //
                          • content - A snippet of information about the blog post
                          • + //
                          • url - The URL for the item
                          • + //
                          • published - The published date, in RFC-822 format.
                          • + //
                          • publisher - The name of the publisher.
                          • + //
                          • duration - The approximate duration, in seconds, of the video.
                          • + //
                          • tbWidth - The width in pixels of the video.
                          • + //
                          • tbHeight - The height in pixels of the video
                          • + //
                          • tbUrl - The URL to a thumbnail representation of the video.
                          • + //
                          • playUrl - If present, supplies the url of the flash version of the video that can be played inline on your page. To play this video simply create and element on your page using this value as the src attribute and using application/x-shockwave-flash as the type attribute. If you want the video to play right away, make sure to append &autoPlay=true to the url..
                          • + //
                          + // The query accepts one parameter: text - The string to search for + _type: "video", + _attributes: ["title", "titleNoFormatting", "content", "url", "published", "publisher", + "duration", "tbWidth", "tbHeight", "tbUrl", "playUrl"], + _aggregatedAttributes: { } +}); + +var NewsSearchStore = declare("dojox.data.GoogleNewsSearchStore", SearchStore,{ + // summary: + // A data store for retrieving search results from Google. + // The following attributes are supported on each item: + //
                            + //
                          • title - The news story title in HTML format.
                          • + //
                          • titleNoFormatting - The news story title in plain text
                          • + //
                          • content - A snippet of information about the news story
                          • + //
                          • url - The URL for the item
                          • + //
                          • unescapedUrl - The URL for the item, with URL escaping. This is often more readable
                          • + //
                          • publisher - The name of the publisher
                          • + //
                          • clusterUrl - A URL pointing to a page listing related storied.
                          • + //
                          • location - The location of the news story.
                          • + //
                          • publishedDate - The date of publication, in RFC-822 format.
                          • + //
                          • relatedStories - An optional array of objects specifying related stories. + // Each object has the following subset of properties: + // "title", "titleNoFormatting", "url", "unescapedUrl", "publisher", "location", "publishedDate". + //
                          • + //
                          + // The query accepts one parameter: text - The string to search for + _type: "news", + _attributes: ["title", "titleNoFormatting", "content", "url", "unescapedUrl", "publisher", + "clusterUrl", "location", "publishedDate", "relatedStories" ], + _aggregatedAttributes: { } +}); + +var BookSearchStore = declare("dojox.data.GoogleBookSearchStore", SearchStore,{ + // summary: + // A data store for retrieving search results from Google. + // The following attributes are supported on each item: + //
                            + //
                          • title - The book title in HTML format.
                          • + //
                          • titleNoFormatting - The book title in plain text
                          • + //
                          • authors - An array of authors
                          • + //
                          • url - The URL for the item
                          • + //
                          • unescapedUrl - The URL for the item, with URL escaping. This is often more readable
                          • + //
                          • bookId - An identifier for the book, usually an ISBN.
                          • + //
                          • pageCount - The number of pages in the book.
                          • + //
                          • publishedYear - The year of publication.
                          • + //
                          + // The query accepts one parameter: text - The string to search for + _type: "books", + _attributes: ["title", "titleNoFormatting", "authors", "url", "unescapedUrl", "bookId", + "pageCount", "publishedYear"], + _aggregatedAttributes: { } +}); + +var ImageSearchStore = declare("dojox.data.GoogleImageSearchStore", SearchStore,{ + // summary: + // A data store for retrieving search results from Google. + // The following attributes are supported on each item: + //
                            + //
                          • title - The image title in HTML format.
                          • + //
                          • titleNoFormatting - The image title in plain text
                          • + //
                          • url - The URL for the image
                          • + //
                          • unescapedUrl - The URL for the image, with URL escaping. This is often more readable
                          • + //
                          • tbUrl - The URL for the image thumbnail
                          • + //
                          • visibleUrl - A shortened version of the URL associated with the result, stripped of a protocol and path
                          • + //
                          • originalContextUrl - The URL of the page containing the image.
                          • + //
                          • width - The width of the image in pixels.
                          • + //
                          • height - The height of the image in pixels.
                          • + //
                          • tbWidth - The width of the image thumbnail in pixels.
                          • + //
                          • tbHeight - The height of the image thumbnail in pixels.
                          • + //
                          • content - A snippet of information about the image, in HTML format
                          • + //
                          • contentNoFormatting - A snippet of information about the image, in plain text
                          • + //
                          + // The query accepts one parameter: text - The string to search for + _type: "images", + _attributes: ["title", "titleNoFormatting", "visibleUrl", "url", "unescapedUrl", + "originalContextUrl", "width", "height", "tbWidth", "tbHeight", + "tbUrl", "content", "contentNoFormatting"], + _aggregatedAttributes: { } +}); + +return { + Search: SearchStore, + ImageSearch: ImageSearchStore, + BookSearch: BookSearchStore, + NewsSearch: NewsSearchStore, + VideoSearch: VideoSearchStore, + LocalSearch: LocalSearchStore, + BlogSearch: BlogSearchStore, + WebSearch: WebSearchStore + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/HtmlStore.js b/js/dojo-release-1.7.2-src/dojox/data/HtmlStore.js new file mode 100644 index 0000000..c769aad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/HtmlStore.js @@ -0,0 +1,564 @@ +define(["dojo/_base/declare", "dojo/_base/array", "dojo/_base/lang", "dojo/dom", "dojo/_base/xhr", "dojo/_base/window", + "dojo/data/util/simpleFetch", "dojo/data/util/filter", "dojox/xml/parser"], + function(declare, array, lang, dom, xhr, winUtil, simpleFetch, filter, xmlParser) { + +var HtmlStore = declare("dojox.data.HtmlStore", null, { + constructor: function(/*Object*/args){ + // summary: + // Initializer for the HTML table store. + // description: + // The HtmlStore can be created in one of two ways: a) by parsing an existing + // table or list DOM node on the current page or b) by referencing an external url and giving + // the id of the table or list in that page. The remote url will be parsed as an html page. + // + // The HTML table or list should be of the following form: + // + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // | + // |
                          Attribute1Attribute2
                          Value1.1Value1.2
                          Value2.1Value2.2
                          + // + // -or- + // + // |
                            + // |
                          • Value.1
                          • + // |
                          • Value.2
                          • + // |
                          + // + // -or- + // + // |
                            + // |
                          1. Value.1
                          2. + // |
                          3. Value.2
                          4. + // |
                          + // + // args: + // An anonymous object to initialize properties. It expects the following values: + // dataId: The id of the HTML table to use. + // OR + // url: The url of the remote page to load + // dataId: The id of the table element in the remote page + // and the option: + // trimWhitespace: Trim off any surrounding whitespace from the headers (attribute + // names) and text content of the items in question. Default is false for + // backwards compatibility. + if(args && "urlPreventCache" in args){ + this.urlPreventCache = args.urlPreventCache?true:false; + } + if(args && "trimWhitespace" in args){ + this.trimWhitespace = args.trimWhitespace?true:false; + } + if(args.url){ + if(!args.dataId){ + throw new Error("dojo.data.HtmlStore: Cannot instantiate using url without an id!"); + } + this.url = args.url; + this.dataId = args.dataId; + }else{ + if(args.dataId){ + this.dataId = args.dataId; + } + } + if(args && "fetchOnCreate" in args){ + this.fetchOnCreate = args.fetchOnCreate?true:false; + } + if(this.fetchOnCreate && this.dataId){ + this.fetch(); + } + }, + + // url: [public] string + // The URL from which to load an HTML document for data loading + url: "", + + // dataId: [public] string + // The id in the document for an element from which to get the data. + dataId: "", + + // trimWhitepace: [public] boolean + // Boolean flag to denote if the store should trim whitepace around + // header and data content of a node. This matters if reformatters + // alter the white spacing around the tags. The default is false for + // backwards compat. + trimWhitespace: false, + + // urlPreventCache: [public] boolean + // Flag to denote if peventCache should be used on xhrGet calls. + urlPreventCache: false, + + // fetchOnCreate: [public] boolean + // Flag to denote if it should try to load from a data id (nested in the page) + // The moment the store is created, instead of waiting for first + // fetch call. + fetchOnCreate: false, + + _indexItems: function(){ + // summary: + // Function to index items found under the id. + // tags: + // private + this._getHeadings(); + if(this._rootNode.rows){//tables + if(this._rootNode.tBodies && this._rootNode.tBodies.length > 0){ + this._rootNode = this._rootNode.tBodies[0]; + } + var i; + for(i=0; i 0)?values[0]:defaultValue; //Object || int || Boolean + }, + + getValues: function(/* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.getValues() + + this._assertIsItem(item); + var index = this._assertIsAttribute(attribute); + if(index>-1){ + var text; + if(item.cells){ + text = xmlParser.textContent(item.cells[index]); + }else{//return Value for lists + text = xmlParser.textContent(item); + } + return [this.trimWhitespace?lang.trim(text):text]; + } + return []; //Array + }, + + getAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + var attributes = []; + for(var i=0; i 0; + }, + + containsValue: function(/* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value){ + // summary: + // See dojo.data.api.Read.containsValue() + var regexp = undefined; + if(typeof value === "string"){ + regexp = filter.patternToRegExp(value, false); + } + return this._containsValue(item, attribute, value, regexp); //boolean. + }, + + _containsValue: function( /* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value, + /* RegExp?*/ regexp){ + // summary: + // Internal function for looking at the values contained by the item. + // description: + // Internal function for looking at the values contained by the item. This + // function allows for denoting if the comparison should be case sensitive for + // strings or not (for handling filtering cases where string case should not matter) + // + // item: + // The data item to examine for attribute values. + // attribute: + // The attribute to inspect. + // value: + // The value to match. + // regexp: + // Optional regular expression generated off value if value was of string type to handle wildcarding. + // If present and attribute values are string, then it can be used for comparison instead of 'value' + var values = this.getValues(item, attribute); + for(var i = 0; i < values.length; ++i){ + var possibleValue = values[i]; + if(typeof possibleValue === "string" && regexp){ + return (possibleValue.match(regexp) !== null); + }else{ + //Non-string matching. + if(value === possibleValue){ + return true; // Boolean + } + } + } + return false; // Boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItem() + return something && dom.isDescendant(something, this._rootNode); + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(something); + }, + + loadItem: function(/* Object */ keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + this._assertIsItem(keywordArgs.item); + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Fetch items (XML elements) that match to a query + // description: + // If '_fetchUrl' is specified, it is used to load an XML document + // with a query string. + // Otherwise and if 'url' is specified, the XML document is + // loaded and list XML elements that match to a query (set of element + // names and their text attribute values that the items to contain). + // A wildcard, "*" can be used to query values to match all + // occurrences. + // If '_rootItem' is specified, it is used to fetch items. + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + + if(this._rootNode){ + this._finishFetchItems(request, fetchHandler, errorHandler); + }else{ + if(!this.url){ + this._rootNode = dom.byId(this.dataId); + this._indexItems(); + this._finishFetchItems(request, fetchHandler, errorHandler); + }else{ + var getArgs = { + url: this.url, + handleAs: "text", + preventCache: this.urlPreventCache + }; + var self = this; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + var findNode = function(node, id){ + if(node.id == id){ + return node; //object + } + if(node.childNodes){ + for(var i=0; i 0){ + items = arrayOfAllItems.slice(0,arrayOfAllItems.length); + } + fetchHandler(items, request); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true, + 'dojo.data.api.Identity': true + }; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + // nothing to do here! + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if(this.isItem(item)){ + if(item.cells){ + return "Item #" + this.getIdentity(item); + }else{ + return this.getValue(item,"name"); + } + } + return undefined; + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + if(item.cells){ + return null; + }else{ + return ["name"]; + } + }, + +/*************************************** + dojo.data.api.Identity API +***************************************/ + + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + this._assertIsItem(item); + if(this.hasAttribute(item, "name")){ + return this.getValue(item,"name"); + }else{ + return item._ident; + } + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentityAttributes() + //Identity isn't taken from a public attribute. + return null; + }, + + fetchItemByIdentity: function(keywordArgs){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity() + var identity = keywordArgs.identity; + var self = this; + var item = null; + var scope = null; + if(!this._rootNode){ + if(!this.url){ + this._rootNode = dom.byId(this.dataId); + this._indexItems(); + if(self._rootNode.rows){ //Table + item = this._rootNode.rows[identity + 1]; + }else{ //Lists + for(var i = 0; i < self._rootNode.childNodes.length; i++){ + if(self._rootNode.childNodes[i].nodeType === 1 && identity === xmlParser.textContent(self._rootNode.childNodes[i])){ + item = self._rootNode.childNodes[i]; + } + } + } + if(keywordArgs.onItem){ + scope = keywordArgs.scope?keywordArgs.scope:winUtil.global; + keywordArgs.onItem.call(scope, item); + } + + }else{ + var getArgs = { + url: this.url, + handleAs: "text" + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + var findNode = function(node, id){ + if(node.id == id){ + return node; //object + } + if(node.childNodes){ + for(var i=0; i + // + // + // Attribute1 + // Attribute2 + // + // + // + // + // Value1.1 + // Value1.2 + // + // + // Value2.1 + // Value2.2 + // + // + // + // + // args: + // An anonymous object to initialize properties. It expects the following values: + // tableId: The id of the HTML table to use. + // OR + // url: The url of the remote page to load + // tableId: The id of the table element in the remote page + + if(args.url){ + if(!args.tableId) + throw new Error("dojo.data.HtmlTableStore: Cannot instantiate using url without an id!"); + this.url = args.url; + this.tableId = args.tableId; + }else{ + if(args.tableId){ + this._rootNode = dom.byId(args.tableId); + this.tableId = this._rootNode.id; + }else{ + this._rootNode = dom.byId(this.tableId); + } + this._getHeadings(); + for(var i=0; i 0)?values[0]:defaultValue; //Object || int || Boolean + }, + + getValues: function(/* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.getValues() + + this._assertIsItem(item); + var index = this._assertIsAttribute(attribute); + + if(index>-1){ + return [xmlParser.textContent(item.cells[index])] ; + } + return []; //Array + }, + + getAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + var attributes = []; + for(var i=0; i 0; + }, + + containsValue: function(/* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value){ + // summary: + // See dojo.data.api.Read.containsValue() + var regexp = undefined; + if(typeof value === "string"){ + regexp = filter.patternToRegExp(value, false); + } + return this._containsValue(item, attribute, value, regexp); //boolean. + }, + + _containsValue: function( /* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value, + /* RegExp?*/ regexp){ + // summary: + // Internal function for looking at the values contained by the item. + // description: + // Internal function for looking at the values contained by the item. This + // function allows for denoting if the comparison should be case sensitive for + // strings or not (for handling filtering cases where string case should not matter) + // + // item: + // The data item to examine for attribute values. + // attribute: + // The attribute to inspect. + // value: + // The value to match. + // regexp: + // Optional regular expression generated off value if value was of string type to handle wildcarding. + // If present and attribute values are string, then it can be used for comparison instead of 'value' + var values = this.getValues(item, attribute); + for(var i = 0; i < values.length; ++i){ + var possibleValue = values[i]; + if(typeof possibleValue === "string" && regexp){ + return (possibleValue.match(regexp) !== null); + }else{ + //Non-string matching. + if(value === possibleValue){ + return true; // Boolean + } + } + } + return false; // Boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItem() + if(something && something.store && something.store === this){ + return true; //boolean + } + return false; //boolean + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(something); + }, + + loadItem: function(/* Object */ keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + this._assertIsItem(keywordArgs.item); + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Fetch items (XML elements) that match to a query + // description: + // If '_fetchUrl' is specified, it is used to load an XML document + // with a query string. + // Otherwise and if 'url' is specified, the XML document is + // loaded and list XML elements that match to a query (set of element + // names and their text attribute values that the items to contain). + // A wildcard, "*" can be used to query values to match all + // occurrences. + // If '_rootItem' is specified, it is used to fetch items. + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + + if(this._rootNode){ + this._finishFetchItems(request, fetchHandler, errorHandler); + }else{ + if(!this.url){ + this._rootNode = dom.byId(this.tableId); + this._getHeadings(); + for(var i=0; i 0){ + items = arrayOfAllItems.slice(0,arrayOfAllItems.length); + } + fetchHandler(items, request); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true, + 'dojo.data.api.Identity': true + }; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + // nothing to do here! + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if(this.isItem(item)) + return "Table Row #" + this.getIdentity(item); + return undefined; + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return null; + }, + +/*************************************** + dojo.data.api.Identity API +***************************************/ + + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + this._assertIsItem(item); + //Opera doesn't support the sectionRowIndex, + //So, have to call the indexOf to locate it. + //Blah. + if(!has("opera")){ + return item.sectionRowIndex; // int + }else{ + return (array.indexOf(this._rootNode.rows, item) - 1) // int + } + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentityAttributes() + //Identity isn't taken from a public attribute. + return null; + }, + + fetchItemByIdentity: function(keywordArgs){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity() + var identity = keywordArgs.identity; + var self = this; + var item = null; + var scope = null; + + if(!this._rootNode){ + if(!this.url){ + this._rootNode = dom.byId(this.tableId); + this._getHeadings(); + for(var i=0; i= 0){ // id node + this.focusNode(node); + alert("Cannot modify an Identifier node."); + }else if(item.addNew){ + this.focusNode(node); + }else{ + dojo.forEach(contextMenu.getChildren(), function(widget){ + widget.attr("disabled", (widget.label != "Edit") && (widget.label != "Delete")); + }) + // this won't focus the node but gives us a way to reference the node + this.lastFocused = node; + } + } + }); + contextMenu.addChild(new dijit.MenuItem({label: "Add", onClick: dojo.hitch(this, "_addProperty")})); + contextMenu.addChild(new dijit.MenuItem({label: "Edit", onClick: dojo.hitch(this, "_editProperty")})); + contextMenu.addChild(new dijit.MenuItem({label: "Delete", onClick: dojo.hitch(this, "_destroyProperty")})); + contextMenu.startup(); + }, + store: null, + setStore: function(store){ + this.store = store; + var self = this; + if(this._editDialog){ + this._editDialog.destroyRecursive(); + delete this._editDialog; + } + // i think we should just destroy this._editDialog and let _createEditDialog take care of everything + // once it gets called again by either _editProperty or _addProperty - it will create everything again + // using the new store. this way we don't need to keep track of what is in the dialog if we change it. + /*if(this._editDialog && this.useSelect){ + dojo.query(".reference [widgetId]", this._editDialog.containerNode).forEach(function(node){ + dijit.getEnclosingWidget(node).attr("store", store); + }); + }*/ + dojo.connect(store, "onSet", function(item, attribute, oldValue, newValue){ + var nodes, i, identity = self.store.getIdentity(item); + nodes = self._modelNodeIdMap[identity]; + + if(nodes && + (oldValue === undefined || newValue === undefined || + oldValue instanceof Array || newValue instanceof Array || typeof oldValue == 'object' || typeof newValue == 'object')){ + for(i = 0; i < nodes.length; i++){ + (function(node){ + self.model.getChildren(node, function(children){ + self.model.onChildrenChange(node, children); + }); + })(nodes[i]); + } + } + nodes = self._modelNodePropMap[identity + "." + attribute]; + + if(nodes){ + for(i = 0; i < nodes.length; i++){ + nodes[i].value = newValue; + self.model.onChange(nodes[i]); + } + } + }); + this.rootNode.setChildItems([]); + }, + setItem: function(item){ + // this is called to show a different item + + // reset the maps, for the root getIdentity is not called, so we pre-initialize it here + (this._modelNodeIdMap = {})[this.store.getIdentity(item)] = [this.rootModelNode]; + this._modelNodePropMap = {}; + + this.rootModelNode.value = item; + var self = this; + this.model.getChildren(this.rootModelNode, function(children){ + self.rootNode.setChildItems(children); + }); + + }, + refreshItem: function(){ + this.setItem(this.rootModelNode.value); + }, + _createEditDialog: function(){ + this._editDialog = new dijit.Dialog({ + title: "Edit Property", + execute: dojo.hitch(this, "_updateItem"), + preload: true + }); + this._editDialog.placeAt(dojo.body()); + this._editDialog.startup(); + + // handle for dialog content + var pane = dojo.doc.createElement('div'); + + // label for property + var labelProp = dojo.doc.createElement('label'); + dojo.attr(labelProp, "for", "property"); + dojo.style(labelProp, "fontWeight", "bold"); + dojo.attr(labelProp, "innerHTML", "Property:") + pane.appendChild(labelProp); + + // property name field + var propName = new dijit.form.ValidationTextBox({ + name: "property", + value: "", + required: true, + disabled: true + }).placeAt(pane); + + pane.appendChild(dojo.doc.createElement("br")); + pane.appendChild(dojo.doc.createElement("br")); + + // radio button for "value" + var value = new dijit.form.RadioButton({ + name: "itemType", + value: "value", + onClick: dojo.hitch(this, function(){this._enableFields("value");}) + }).placeAt(pane); + + // label for value + var labelVal = dojo.doc.createElement('label'); + dojo.attr(labelVal, "for", "value"); + dojo.attr(labelVal, "innerHTML", "Value (JSON):") + pane.appendChild(labelVal); + + // container for value fields + var valueDiv = dojo.doc.createElement("div"); + dojo.addClass(valueDiv, "value"); + + // textarea + var textarea = new dijit.form.Textarea({ + name: "jsonVal" + }).placeAt(valueDiv); + pane.appendChild(valueDiv); + + // radio button for "reference" + var reference = new dijit.form.RadioButton({ + name: "itemType", + value: "reference", + onClick: dojo.hitch(this, function(){this._enableFields("reference");}) + }).placeAt(pane); + + // label for reference + var labelRef = dojo.doc.createElement('label'); + dojo.attr(labelRef, "for", "_reference"); + dojo.attr(labelRef, "innerHTML", "Reference (ID):") + pane.appendChild(labelRef); + pane.appendChild(dojo.doc.createElement("br")); + + // container for reference fields + var refDiv = dojo.doc.createElement("div"); + dojo.addClass(refDiv, "reference"); + + if(this.useSelect){ + // filteringselect + // TODO: see if there is a way to sort the items in this list + var refSelect = new dijit.form.FilteringSelect({ + name: "_reference", + store: this.store, + searchAttr: this.refSelectSearchAttr || this.store.getIdentityAttributes()[0], + required: false, + value: null, // need to file a ticket about the fetch that happens when declared with value: null + pageSize: 10 + }).placeAt(refDiv); + }else{ + var refTextbox = new dijit.form.ValidationTextBox({ + name: "_reference", + value: "", + promptMessage: "Enter the ID of the item to reference", + isValid: dojo.hitch(this, function(isFocused){ + // don't validate while it's focused + return true;//isFocused || this.store.getItemByIdentity(this._editDialog.attr("value")._reference); + }) + }).placeAt(refDiv); + } + pane.appendChild(refDiv); + pane.appendChild(dojo.doc.createElement("br")); + pane.appendChild(dojo.doc.createElement("br")); + + // buttons + var buttons = document.createElement('div'); + buttons.setAttribute("dir", "rtl"); + var cancelButton = new dijit.form.Button({type: "reset", label: "Cancel"}).placeAt(buttons); + cancelButton.onClick = dojo.hitch(this._editDialog, "onCancel"); + var okButton = new dijit.form.Button({type: "submit", label: "OK"}).placeAt(buttons); + pane.appendChild(buttons); + + this._editDialog.attr("content", pane); + }, + _enableFields: function(selection){ + // enables/disables fields based on whether the value in this._editDialog is a reference or a primitive value + switch(selection){ + case "reference": + dojo.query(".value [widgetId]", this._editDialog.containerNode).forEach(function(node){ + dijit.getEnclosingWidget(node).attr("disabled", true); + }); + dojo.query(".reference [widgetId]", this._editDialog.containerNode).forEach(function(node){ + dijit.getEnclosingWidget(node).attr("disabled", false); + }); + break; + case "value": + dojo.query(".value [widgetId]", this._editDialog.containerNode).forEach(function(node){ + dijit.getEnclosingWidget(node).attr("disabled", false); + }); + dojo.query(".reference [widgetId]", this._editDialog.containerNode).forEach(function(node){ + dijit.getEnclosingWidget(node).attr("disabled", true); + }); + break; + } + }, + _updateItem: function(vals){ + // a single "execute" function that handles adding and editing of values and references. + var node, item, val, storeItemVal, editingItem = this._editDialog.attr("title") == "Edit Property"; + var editDialog = this._editDialog; + var store = this.store; + function setValue(){ + try{ + var itemVal, propPath = []; + var prop = vals.property; + if(editingItem){ + while(!store.isItem(item.parent, true)){ + node = node.getParent(); + propPath.push(item.property); + item = node.item; + } + if(propPath.length == 0){ + // working with an item attribute already + store.setValue(item.parent, item.property, val); + }else{ + // need to walk back down the item property to the object + storeItemVal = getValue(store, item.parent, item.property); + if(storeItemVal instanceof Array){ + // create a copy for modification + storeItemVal = storeItemVal.concat(); + } + itemVal = storeItemVal; + while(propPath.length > 1){ + itemVal = itemVal[propPath.pop()]; + } + itemVal[propPath] = val; // this change is reflected in storeItemVal as well + store.setValue(item.parent, item.property, storeItemVal); + } + }else{ + // adding a property + if(store.isItem(value, true)){ + // adding a top-level property to an item + if(!store.isItemLoaded(value)){ + // fetch the value and see if it is an array + store.loadItem({ + item: value, + onItem: function(loadedItem){ + if(loadedItem instanceof Array){ + prop = loadedItem.length; + } + store.setValue(loadedItem, prop, val); + } + }); + }else{ + if(value instanceof Array){ + prop = value.length; + } + store.setValue(value, prop, val); + } + }else{ + // adding a property to a lower level in an item + if(item.value instanceof Array){ + propPath.push(item.value.length); + }else{ + propPath.push(vals.property); + } + while(!store.isItem(item.parent, true)){ + node = node.getParent(); + propPath.push(item.property); + item = node.item; + } + storeItemVal = getValue(store, item.parent, item.property); + itemVal = storeItemVal; + while(propPath.length > 1){ + itemVal = itemVal[propPath.pop()]; + } + itemVal[propPath] = val; + store.setValue(item.parent, item.property, storeItemVal); + } + } + }catch(e){ + alert(e); + } + } + + if(editDialog.validate()){ + node = this.lastFocused; + item = node.item; + var value = item.value; + // var property = null; + if(item.addNew){ + // we are adding a property to the parent item + // the real value of the parent is in the parent property of the lastFocused item + // this.lastFocused.getParent().item.value may be a reference to an item + value = node.item.parent; + node = node.getParent(); + item = node.item; + } + val = null; + switch(vals.itemType){ + case "reference": + this.store.fetchItemByIdentity({identity:vals._reference, + onItem:function(item){ + val = item; + setValue(); + }, + onError:function(){ + alert("The id could not be found"); + } + }); + break; + case "value": + var jsonVal = vals.jsonVal; + val = dojo.fromJson(jsonVal); + // ifit is a function we want to preserve the source (comments, et al) + if(typeof val == 'function'){ + val.toString = function(){ + return jsonVal; + } + } + setValue(); + break; + } + }else{ + // the form didn't validate - show it again. + editDialog.show(); + } + }, + _editProperty: function(){ + // this mixin stops us polluting the tree item with jsonVal etc. + // FIXME: if a store identifies items by instanceof checks, this will fail + var item = dojo.mixin({}, this.lastFocused.item); + // create the dialog or reset it if it already exists + if(!this._editDialog){ + this._createEditDialog(); + }else{ + this._editDialog.reset(); + } + // not allowed to edit an item's id - so check for that and stop it. + if(dojo.indexOf(this.store.getIdentityAttributes(), item.property) >= 0){ + alert("Cannot Edit an Identifier!"); + }else{ + this._editDialog.attr("title", "Edit Property"); + // make sure the property input is disabled + dijit.getEnclosingWidget(dojo.query("input", this._editDialog.containerNode)[0]).attr("disabled", true); + if(this.store.isItem(item.value, true)){ + // root node || Item reference + if(item.parent){ + // Item reference + item.itemType = "reference"; + this._enableFields(item.itemType); + item._reference = this.store.getIdentity(item.value); + this._editDialog.attr("value", item); + this._editDialog.show(); + } // else root node + }else{ + if(item.value && typeof item.value == 'object' && !(item.value instanceof Date)){ + // item.value is an object but it's NOT an item from the store - no-op + // only allow editing on a property not on the node that represents the object/array + }else{ + // this is a primitive + item.itemType = "value"; + this._enableFields(item.itemType); + item.jsonVal = typeof item.value == 'function' ? + // use the plain toString for functions, dojo.toJson doesn't support functions + item.value.toString() : + item.value instanceof Date ? + // A json-ish form of a date: + 'new Date("' + item.value + '")' : + dojo.toJson(item.value); + this._editDialog.attr("value", item); + this._editDialog.show(); + } + } + } + }, + _destroyProperty: function(){ + var node = this.lastFocused; + var item = node.item; + var propPath = []; + // we have to walk up the tree to the item before we can know if we're working with the identifier + while(!this.store.isItem(item.parent, true) || item.parent instanceof Array){ + node = node.getParent(); + propPath.push(item.property); + item = node.item; + } + // this will prevent any part of the identifier from being changed + if(dojo.indexOf(this.store.getIdentityAttributes(), item.property) >= 0){ + alert("Cannot Delete an Identifier!"); + }else{ + try{ + if(propPath.length > 0){ + // not deleting a top-level property of an item so get the top-level store item to change + var itemVal, storeItemVal = getValue(this.store, item.parent, item.property); + itemVal = storeItemVal; + // walk back down the object if needed + while(propPath.length > 1){ + itemVal = itemVal[propPath.pop()]; + } + // delete the property + if(dojo.isArray(itemVal)){ + // the value being deleted represents an array element + itemVal.splice(propPath, 1); + }else{ + // object property + delete itemVal[propPath]; + } + // save it back to the store + this.store.setValue(item.parent, item.property, storeItemVal); + }else{ + // deleting an item property + this.store.unsetAttribute(item.parent, item.property); + } + }catch(e){ + alert(e); + } + } + }, + _addProperty: function(){ + // item is what we are adding a property to + var item = this.lastFocused.item; + // value is the real value of the item - not a reference to a store item + var value = item.value; + var showDialog = dojo.hitch(this, function(){ + var property = null; + if(!this._editDialog){ + this._createEditDialog(); + }else{ + this._editDialog.reset(); + } + // are we adding another item to an array? + if(value instanceof Array){ + // preset the property to the next index in the array and disable the property field + property = value.length; + dijit.getEnclosingWidget(dojo.query("input", this._editDialog.containerNode)[0]).attr("disabled", true); + }else{ + // enable the property TextBox + dijit.getEnclosingWidget(dojo.query("input", this._editDialog.containerNode)[0]).attr("disabled", false); + } + this._editDialog.attr("title", "Add Property"); + // default to a value type + this._enableFields("value"); + this._editDialog.attr("value", {itemType: "value", property: property}); + this._editDialog.show(); + }); + + if(item.addNew){ + // we are adding a property to the parent item + item = this.lastFocused.getParent().item; + // the real value of the parent is in the parent property of the lastFocused item + // this.lastFocused.getParent().item.value may be a reference to an item + value = this.lastFocused.item.parent; + } + if(item.property && dojo.indexOf(this.store.getIdentityAttributes(), item.property) >= 0){ + alert("Cannot add properties to an ID node!"); + }else{ + // ifthe value is an item then we need to get the item's value + if(this.store.isItem(value, true) && !this.store.isItemLoaded(value)){ + // fetch the value and see if it is an array + this.store.loadItem({ + item: value, + onItem: function(loadedItem){ + value = loadedItem; + showDialog(); + } + }); + }else{ + showDialog(); + } +// + } + } +}); +})(); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/JsonQueryRestStore.js b/js/dojo-release-1.7.2-src/dojox/data/JsonQueryRestStore.js new file mode 100644 index 0000000..0f0e374 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/JsonQueryRestStore.js @@ -0,0 +1,14 @@ +define(["dojo", "dojox", "dojox/data/JsonRestStore", "dojox/data/util/JsonQuery", "dojox/data/ClientFilter", "dojox/json/query"], function(dojo, dojox) { + +// this is an extension of JsonRestStore to convert object attribute queries to +// JSONQuery/JSONPath syntax to be sent to the server. This also enables +// JSONQuery/JSONPath queries to be performed locally if dojox.data.ClientFilter +// has been loaded +dojo.declare("dojox.data.JsonQueryRestStore",[dojox.data.JsonRestStore,dojox.data.util.JsonQuery],{ + matchesQuery: function(item,request){ + return item.__id && (item.__id.indexOf("#") == -1) && this.inherited(arguments); + } +}); + +return dojox.data.JsonQueryRestStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/JsonRestStore.js b/js/dojo-release-1.7.2-src/dojox/data/JsonRestStore.js new file mode 100644 index 0000000..cd82c9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/JsonRestStore.js @@ -0,0 +1,509 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/connect", "dojox/rpc/Rest", + "dojox/rpc/JsonRest", "dojox/json/schema", "dojox/data/ServiceStore"], + function(lang, declare, connect, rpcRest, rpcJsonRest, jsonSchema, ServiceStore) { + +/*===== +var ServiceStore = dojox.data.ServiceStore; +=====*/ + +var JsonRestStore = declare("dojox.data.JsonRestStore", ServiceStore, + { + constructor: function(options){ + //summary: + // JsonRestStore is a Dojo Data store interface to JSON HTTP/REST web + // storage services that support read and write through GET, PUT, POST, and DELETE. + // options: + // Keyword arguments + // + // The *schema* parameter + // This is a schema object for this store. This should be JSON Schema format. + // + // The *service* parameter + // This is the service object that is used to retrieve lazy data and save results + // The function should be directly callable with a single parameter of an object id to be loaded + // The function should also have the following methods: + // put(id,value) - puts the value at the given id + // post(id,value) - posts (appends) the value at the given id + // delete(id) - deletes the value corresponding to the given id + // Note that it is critical that the service parses responses as JSON. + // If you are using dojox.rpc.Service, the easiest way to make sure this + // happens is to make the responses have a content type of + // application/json. If you are creating your own service, make sure you + // use handleAs: "json" with your XHR requests. + // + // The *target* parameter + // This is the target URL for this Service store. This may be used in place + // of a service parameter to connect directly to RESTful URL without + // using a dojox.rpc.Service object. + // + // The *idAttribute* parameter + // Defaults to 'id'. The name of the attribute that holds an objects id. + // This can be a preexisting id provided by the server. + // If an ID isn't already provided when an object + // is fetched or added to the store, the autoIdentity system + // will generate an id for it and add it to the index. + // + // The *syncMode* parameter + // Setting this to true will set the store to using synchronous calls by default. + // Sync calls return their data immediately from the calling function, so + // callbacks are unnecessary + // + // description: + // The JsonRestStore will cause all saved modifications to be sent to the server using Rest commands (PUT, POST, or DELETE). + // When using a Rest store on a public network, it is important to implement proper security measures to + // control access to resources. + // On the server side implementing a REST interface means providing GET, PUT, POST, and DELETE handlers. + // GET - Retrieve an object or array/result set, this can be by id (like /table/1) or with a + // query (like /table/?name=foo). + // PUT - This should modify a object, the URL will correspond to the id (like /table/1), and the body will + // provide the modified object + // POST - This should create a new object. The URL will correspond to the target store (like /table/) + // and the body should be the properties of the new object. The server's response should include a + // Location header that indicates the id of the newly created object. This id will be used for subsequent + // PUT and DELETE requests. JsonRestStore also includes a Content-Location header that indicates + // the temporary randomly generated id used by client, and this location is used for subsequent + // PUT/DELETEs if no Location header is provided by the server or if a modification is sent prior + // to receiving a response from the server. + // DELETE - This should delete an object by id. + // These articles include more detailed information on using the JsonRestStore: + // http://www.sitepen.com/blog/2008/06/13/restful-json-dojo-data/ + // http://blog.medryx.org/2008/07/24/jsonreststore-overview/ + // + // example: + // A JsonRestStore takes a REST service or a URL and uses it the remote communication for a + // read/write dojo.data implementation. A JsonRestStore can be created with a simple URL like: + // | new JsonRestStore({target:"/MyData/"}); + // example: + // To use a JsonRestStore with a service, you should create a + // service with a REST transport. This can be configured with an SMD: + // | { + // | services: { + // | jsonRestStore: { + // | transport: "REST", + // | envelope: "URL", + // | target: "store.php", + // | contentType:"application/json", + // | parameters: [ + // | {name: "location", type: "string", optional: true} + // | ] + // | } + // | } + // | } + // The SMD can then be used to create service, and the service can be passed to a JsonRestStore. For example: + // | var myServices = new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.tests.resources", "test.smd")); + // | var jsonStore = new dojox.data.JsonRestStore({service:myServices.jsonRestStore}); + // example: + // The JsonRestStore also supports lazy loading. References can be made to objects that have not been loaded. + // For example if a service returned: + // | {"name":"Example","lazyLoadedObject":{"$ref":"obj2"}} + // And this object has accessed using the dojo.data API: + // | var obj = jsonStore.getValue(myObject,"lazyLoadedObject"); + // The object would automatically be requested from the server (with an object id of "obj2"). + // + + connect.connect(rpcRest._index,"onUpdate",this,function(obj,attrName,oldValue,newValue){ + var prefix = this.service.servicePath; + if(!obj.__id){ + console.log("no id on updated object ", obj); + }else if(obj.__id.substring(0,prefix.length) == prefix){ + this.onSet(obj,attrName,oldValue,newValue); + } + }); + this.idAttribute = this.idAttribute || 'id';// no options about it, we have to have identity + + if(typeof options.target == 'string'){ + options.target = options.target.match(/\/$/) || this.allowNoTrailingSlash ? options.target : (options.target + '/'); + if(!this.service){ + this.service = rpcJsonRest.services[options.target] || + rpcRest(options.target, true); + // create a default Rest service + } + } + + rpcJsonRest.registerService(this.service, options.target, this.schema); + this.schema = this.service._schema = this.schema || this.service._schema || {}; + // wrap the service with so it goes through JsonRest manager + this.service._store = this; + this.service.idAsRef = this.idAsRef; + this.schema._idAttr = this.idAttribute; + var constructor = rpcJsonRest.getConstructor(this.service); + var self = this; + this._constructor = function(data){ + constructor.call(this, data); + self.onNew(this); + } + this._constructor.prototype = constructor.prototype; + this._index = rpcRest._index; + }, + + // summary: + // Will load any schemas referenced content-type header or in Link headers + loadReferencedSchema: true, + // summary: + // Treat objects in queries as partially loaded objects + idAsRef: false, + referenceIntegrity: true, + target:"", + // summary: + // Allow no trailing slash on target paths. This is generally discouraged since + // it creates prevents simple scalar values from being used a relative URLs. + // Disabled by default. + allowNoTrailingSlash: false, + //Write API Support + newItem: function(data, parentInfo){ + // summary: + // adds a new item to the store at the specified point. + // Takes two parameters, data, and options. + // + // data: /* object */ + // The data to be added in as an item. + data = new this._constructor(data); + if(parentInfo){ + // get the previous value or any empty array + var values = this.getValue(parentInfo.parent,parentInfo.attribute,[]); + // set the new value + values = values.concat([data]); + data.__parent = values; + this.setValue(parentInfo.parent, parentInfo.attribute, values); + } + return data; + }, + deleteItem: function(item){ + // summary: + // deletes item and any references to that item from the store. + // + // item: + // item to delete + // + + // If the desire is to delete only one reference, unsetAttribute or + // setValue is the way to go. + var checked = []; + var store = dataExtCfg._getStoreForItem(item) || this; + if(this.referenceIntegrity){ + // cleanup all references + rpcJsonRest._saveNotNeeded = true; + var index = rpcRest._index; + var fixReferences = function(parent){ + var toSplice; + // keep track of the checked ones + checked.push(parent); + // mark it checked so we don't run into circular loops when encountering cycles + parent.__checked = 1; + for(var i in parent){ + if(i.substring(0,2) != "__"){ + var value = parent[i]; + if(value == item){ + if(parent != index){ // make sure we are just operating on real objects + if(parent instanceof Array){ + // mark it as needing to be spliced, don't do it now or it will mess up the index into the array + (toSplice = toSplice || []).push(i); + }else{ + // property, just delete it. + (dataExtCfg._getStoreForItem(parent) || store).unsetAttribute(parent, i); + } + } + }else{ + if((typeof value == 'object') && value){ + if(!value.__checked){ + // recursively search + fixReferences(value); + } + if(typeof value.__checked == 'object' && parent != index){ + // if it is a modified array, we will replace it + (dataExtCfg._getStoreForItem(parent) || store).setValue(parent, i, value.__checked); + } + } + } + } + } + if(toSplice){ + // we need to splice the deleted item out of these arrays + i = toSplice.length; + parent = parent.__checked = parent.concat(); // indicates that the array is modified + while(i--){ + parent.splice(toSplice[i], 1); + } + return parent; + } + return null; + }; + // start with the index + fixReferences(index); + rpcJsonRest._saveNotNeeded = false; + var i = 0; + while(checked[i]){ + // remove the checked marker + delete checked[i++].__checked; + } + } + rpcJsonRest.deleteObject(item); + + store.onDelete(item); + }, + changing: function(item,_deleting){ + // summary: + // adds an item to the list of dirty items. This item + // contains a reference to the item itself as well as a + // cloned and trimmed version of old item for use with + // revert. + rpcJsonRest.changing(item,_deleting); + }, + cancelChanging : function(object){ + // summary: + // Removes an object from the list of dirty objects + // This will prevent that object from being saved to the server on the next save + // object: + // The item to cancel changes on + if(!object.__id){ + return; + } + dirtyObjects = dirty=rpcJsonRest.getDirtyObjects(); + for(var i=0; i]*)>;\s*rel="?definedby"?/); + } + schemaRef = schemaRef && schemaRef[1]; + if(schemaRef){ + var serviceAndId = rpcJsonRest.getServiceAndId((self.target + schemaRef).replace(/^(.*\/)?(\w+:\/\/)|[^\/\.]+\/\.\.\/|^.*\/(\/)/,"$2$3")); + var schemaDeferred = rpcJsonRest.byId(serviceAndId.service, serviceAndId.id); + schemaDeferred.addCallbacks(function(newSchema){ + lang.mixin(self.schema, newSchema); + return result; + }, function(error){ + console.error(error); // log it, but don't let it cause the main request to fail + return result; + }); + return schemaDeferred; + } + return undefined;//don't change anything, and deal with the stupid post-commit lint complaints + }); + } + return deferred; + }, + _processResults: function(results, deferred){ + // index the results + var count = results.length; + // if we don't know the length, and it is partial result, we will guess that it is twice as big, that will work for most widgets + return {totalCount:deferred.fullLength || (deferred.request.count == count ? (deferred.request.start || 0) + count * 2 : count), items: results}; + }, + + getConstructor: function(){ + // summary: + // Gets the constructor for objects from this store + return this._constructor; + }, + getIdentity: function(item){ + var id = item.__clientId || item.__id; + if(!id){ + return id; + } + var prefix = this.service.servicePath.replace(/[^\/]*$/,''); + // support for relative or absolute referencing with ids + return id.substring(0,prefix.length) != prefix ? id : id.substring(prefix.length); // String + }, + fetchItemByIdentity: function(args){ + var id = args.identity; + var store = this; + // if it is an absolute id, we want to find the right store to query + if(id.toString().match(/^(\w*:)?\//)){ + var serviceAndId = rpcJsonRest.getServiceAndId(id); + store = serviceAndId.service._store; + args.identity = serviceAndId.id; + } + args._prefix = store.service.servicePath.replace(/[^\/]*$/,''); + return store.inherited(arguments); + }, + //Notifcation Support + + onSet: function(){}, + onNew: function(){}, + onDelete: function(){}, + + getFeatures: function(){ + // summary: + // return the store feature set + var features = this.inherited(arguments); + features["dojo.data.api.Write"] = true; + features["dojo.data.api.Notification"] = true; + return features; + }, + + getParent: function(item){ + // summary: + // Returns the parent item (or query) for the given item + // item: + // The item to find the parent of + + return item && item.__parent; + } + + + } +); +JsonRestStore.getStore = function(options, Class){ + // summary: + // Will retrieve or create a store using the given options (the same options + // that are passed to JsonRestStore constructor. Returns a JsonRestStore instance + // options: + // See the JsonRestStore constructor + // Class: + // Constructor to use (for creating stores from JsonRestStore subclasses). + // This is optional and defaults to JsonRestStore. + if(typeof options.target == 'string'){ + options.target = options.target.match(/\/$/) || options.allowNoTrailingSlash ? + options.target : (options.target + '/'); + var store = (rpcJsonRest.services[options.target] || {})._store; + if(store){ + return store; + } + } + return new (Class || JsonRestStore)(options); +}; + +var dataExtCfg = lang.getObject("dojox.data",true); +dataExtCfg._getStoreForItem = function(item){ + if(item.__id){ + var serviceAndId = rpcJsonRest.getServiceAndId(item.__id); + if(serviceAndId && serviceAndId.service._store){ + return serviceAndId.service._store; + }else{ + var servicePath = item.__id.toString().match(/.*\//)[0]; + return new JsonRestStore({target:servicePath}); + } + } + return null; +}; +var jsonRefConfig = lang.getObject("dojox.json.ref", true); +jsonRefConfig._useRefs = true; // Use referencing when identifiable objects are referenced + +return JsonRestStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/KeyValueStore.js b/js/dojo-release-1.7.2-src/dojox/data/KeyValueStore.js new file mode 100644 index 0000000..d41e85f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/KeyValueStore.js @@ -0,0 +1,392 @@ +define(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/xhr", "dojo/_base/window", + "dojo/data/util/simpleFetch", "dojo/data/util/filter"], + function(declare, lang, xhr, winUtil, simpleFetch, filterUtil) { + +var KeyValueStore = declare("dojox.data.KeyValueStore", null, { + // summary: + // This is a dojo.data store implementation. It can take in either a Javascript + // array, JSON string, or URL as the data source. Data is expected to be in the + // following format: + // [ + // { "key1": "value1" }, + // { "key2": "value2" } + // ] + // This is to mimic the Java Properties file format. Each 'item' from this store + // is a JS object representing a key-value pair. If an item in the above array has + // more than one key/value pair, only the first will be used/accessed. + constructor: function(/* Object */ keywordParameters){ + // summary: constructor + // keywordParameters: {url: String} + // keywordParameters: {data: string} + // keywordParameters: {dataVar: jsonObject} + if(keywordParameters.url){ + this.url = keywordParameters.url; + } + this._keyValueString = keywordParameters.data; + this._keyValueVar = keywordParameters.dataVar; + this._keyAttribute = "key"; + this._valueAttribute = "value"; + this._storeProp = "_keyValueStore"; + this._features = { + 'dojo.data.api.Read': true, + 'dojo.data.api.Identity': true + }; + this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset. + this._queuedFetches = []; + if(keywordParameters && "urlPreventCache" in keywordParameters){ + this.urlPreventCache = keywordParameters.urlPreventCache?true:false; + } + }, + + url: "", + data: "", + + //urlPreventCache: boolean + //Controls if urlPreventCache should be used with underlying xhrGet. + urlPreventCache: false, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.KeyValueStore: a function was passed an item argument that was not an item"); + } + }, + + _assertIsAttribute: function(/* item */ item, /* String */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(!lang.isString(attribute)){ + throw new Error("dojox.data.KeyValueStore: a function was passed an attribute argument that was not an attribute object nor an attribute name string"); + } + }, + +/*************************************** + dojo.data.api.Read API +***************************************/ + getValue: function( /* item */ item, + /* attribute-name-string */ attribute, + /* value? */ defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + this._assertIsItem(item); + this._assertIsAttribute(item, attribute); + var value; + if(attribute == this._keyAttribute){ // Looking for key + value = item[this._keyAttribute]; + }else{ + value = item[this._valueAttribute]; // Otherwise, attribute == ('value' || the actual key ) + } + if(value === undefined){ + value = defaultValue; + } + return value; + }, + + getValues: function(/* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.getValues() + // Key/Value syntax does not support multi-valued attributes, so this is just a + // wrapper function for getValue(). + var value = this.getValue(item, attribute); + return (value ? [value] : []); //Array + }, + + getAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getAttributes() + return [this._keyAttribute, this._valueAttribute, item[this._keyAttribute]]; + }, + + hasAttribute: function( /* item */ item, + /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.hasAttribute() + this._assertIsItem(item); + this._assertIsAttribute(item, attribute); + return (attribute == this._keyAttribute || attribute == this._valueAttribute || attribute == item[this._keyAttribute]); + }, + + containsValue: function(/* item */ item, + /* attribute-name-string */ attribute, + /* anything */ value){ + // summary: + // See dojo.data.api.Read.containsValue() + var regexp = undefined; + if(typeof value === "string"){ + regexp = filterUtil.patternToRegExp(value, false); + } + return this._containsValue(item, attribute, value, regexp); //boolean. + }, + + _containsValue: function( /* item */ item, + /* attribute || attribute-name-string */ attribute, + /* anything */ value, + /* RegExp?*/ regexp){ + // summary: + // Internal function for looking at the values contained by the item. + // description: + // Internal function for looking at the values contained by the item. This + // function allows for denoting if the comparison should be case sensitive for + // strings or not (for handling filtering cases where string case should not matter) + // + // item: + // The data item to examine for attribute values. + // attribute: + // The attribute to inspect. + // value: + // The value to match. + // regexp: + // Optional regular expression generated off value if value was of string type to handle wildcarding. + // If present and attribute values are string, then it can be used for comparison instead of 'value' + var values = this.getValues(item, attribute); + for(var i = 0; i < values.length; ++i){ + var possibleValue = values[i]; + if(typeof possibleValue === "string" && regexp){ + return (possibleValue.match(regexp) !== null); + }else{ + //Non-string matching. + if(value === possibleValue){ + return true; // Boolean + } + } + } + return false; // Boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItem() + if(something && something[this._storeProp] === this){ + return true; //Boolean + } + return false; //Boolean + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + // The KeyValueStore always loads all items, so if it's an item, then it's loaded. + return this.isItem(something); //Boolean + }, + + loadItem: function(/* object */ keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + // description: + // The KeyValueStore always loads all items, so if it's an item, then it's loaded. + // From the dojo.data.api.Read.loadItem docs: + // If a call to isItemLoaded() returns true before loadItem() is even called, + // then loadItem() need not do any work at all and will not even invoke + // the callback handlers. + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return this._features; //Object + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + return item[this._keyAttribute]; + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this._keyAttribute]; + }, + + // The dojo.data.api.Read.fetch() function is implemented as + // a mixin from dojo.data.util.simpleFetch. + // That mixin requires us to define _fetchItems(). + _fetchItems: function( /* Object */ keywordArgs, + /* Function */ findCallback, + /* Function */ errorCallback){ + // summary: + // See dojo.data.util.simpleFetch.fetch() + + var self = this; + + var filter = function(requestArgs, arrayOfAllItems){ + var items = null; + if(requestArgs.query){ + items = []; + var ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false; + + //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the + //same value for each item examined. Much more efficient. + var regexpList = {}; + for(var key in requestArgs.query){ + var value = requestArgs.query[key]; + if(typeof value === "string"){ + regexpList[key] = filterUtil.patternToRegExp(value, ignoreCase); + } + } + + for(var i = 0; i < arrayOfAllItems.length; ++i){ + var match = true; + var candidateItem = arrayOfAllItems[i]; + for(var key in requestArgs.query){ + var value = requestArgs.query[key]; + if(!self._containsValue(candidateItem, key, value, regexpList[key])){ + match = false; + } + } + if(match){ + items.push(candidateItem); + } + } + }else if(requestArgs.identity){ + items = []; + var item; + for(var key in arrayOfAllItems){ + item = arrayOfAllItems[key]; + if(item[self._keyAttribute] == requestArgs.identity){ + items.push(item); + break; + } + } + }else{ + // We want a copy to pass back in case the parent wishes to sort the array. We shouldn't allow resort + // of the internal list so that multiple callers can get lists and sort without affecting each other. + if(arrayOfAllItems.length> 0){ + items = arrayOfAllItems.slice(0,arrayOfAllItems.length); + } + } + findCallback(items, requestArgs); + }; + + if(this._loadFinished){ + filter(keywordArgs, this._arrayOfAllItems); + }else{ + if(this.url !== ""){ + //If fetches come in before the loading has finished, but while + //a load is in progress, we have to defer the fetching to be + //invoked in the callback. + if(this._loadInProgress){ + this._queuedFetches.push({args: keywordArgs, filter: filter}); + }else{ + this._loadInProgress = true; + var getArgs = { + url: self.url, + handleAs: "json-comment-filtered", + preventCache: this.urlPreventCache + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + self._processData(data); + filter(keywordArgs, self._arrayOfAllItems); + self._handleQueuedFetches(); + }); + getHandler.addErrback(function(error){ + self._loadInProgress = false; + throw error; + }); + } + }else if(this._keyValueString){ + this._processData(eval(this._keyValueString)); + this._keyValueString = null; + filter(keywordArgs, this._arrayOfAllItems); + }else if(this._keyValueVar){ + this._processData(this._keyValueVar); + this._keyValueVar = null; + filter(keywordArgs, this._arrayOfAllItems); + }else{ + throw new Error("dojox.data.KeyValueStore: No source data was provided as either URL, String, or Javascript variable data input."); + } + } + + }, + + _handleQueuedFetches: function(){ + // summary: + // Internal function to execute delayed request in the store. + //Execute any deferred fetches now. + if(this._queuedFetches.length > 0){ + for(var i = 0; i < this._queuedFetches.length; i++){ + var fData = this._queuedFetches[i]; + var delayedFilter = fData.filter; + var delayedQuery = fData.args; + if(delayedFilter){ + delayedFilter(delayedQuery, this._arrayOfAllItems); + }else{ + this.fetchItemByIdentity(fData.args); + } + } + this._queuedFetches = []; + } + }, + + _processData: function(/* Array */ data){ + this._arrayOfAllItems = []; + for(var i=0; i"); + } + for(i=0; i\n"); + } + return xml.join(""); + case 3: + case 4: + return node.nodeValue; + } + return undefined; + }, + + _processOsdd: function(doc){ + var urlnodes = doc.getElementsByTagName("Url"); + //TODO: Check all the urlnodes and determine what our best one is... + var types = []; + var contentType; + var i; + for(i=0; icurrentType){ + index = i; + currentType = types[i]; + } + } + + // We'll be using urlnodes[index] as it's the best option (ATOM > RSS > XML) + var label = urlnodes[index].nodeName.toLowerCase(); + if(label == 'url'){ + var urlattrs = urlnodes[index].attributes; + this.urlElement = urlnodes[index]; + switch(types[index]){ + case this.ATOM_CONTENT_TYPE: + this.contentType = this.ATOM_CONTENT_TYPE_STRING; + break; + case this.RSS_CONTENT_TYPE: + this.contentType = this.RSS_CONTENT_TYPE_STRING; + break; + case this.XML_CONTENT_TYPE: + this.contentType = this.XML_CONTENT_TYPE_STRING; + break; + } + } + } +}); +return lang.extend(OpenSearchStore,simpleFetch); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/OpmlStore.js b/js/dojo-release-1.7.2-src/dojox/data/OpmlStore.js new file mode 100644 index 0000000..22d8913 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/OpmlStore.js @@ -0,0 +1,525 @@ +define(["dojo/_base/declare", "dojo/_base/lang", "dojo/_base/xhr", "dojo/data/util/simpleFetch", "dojo/data/util/filter", + "dojo/_base/window"], + function(declare, lang, xhr, simpleFetch, filterUtil, winUtil) { + +var OpmlStore = declare("dojox.data.OpmlStore", null, { + /* summary: + * The OpmlStore implements the dojo.data.api.Read API. + */ + + /* examples: + * var opmlStore = new dojo.data.OpmlStore({url:"geography.xml"}); + * var opmlStore = new dojo.data.OpmlStore({url:"http://example.com/geography.xml"}); + */ + constructor: function(/* Object */ keywordParameters){ + // summary: constructor + // keywordParameters: {url: String, label: String} Where label is optional and configures what should be used as the return from getLabel() + this._xmlData = null; + this._arrayOfTopLevelItems = []; + this._arrayOfAllItems = []; + this._metadataNodes = null; + this._loadFinished = false; + this.url = keywordParameters.url; + this._opmlData = keywordParameters.data; // XML DOM Document + if(keywordParameters.label){ + this.label = keywordParameters.label; + } + this._loadInProgress = false; //Got to track the initial load to prevent duelling loads of the dataset. + this._queuedFetches = []; + this._identityMap = {}; + this._identCount = 0; + this._idProp = "_I"; + if(keywordParameters && "urlPreventCache" in keywordParameters){ + this.urlPreventCache = keywordParameters.urlPreventCache?true:false; + } + }, + + // label: [public] string + // The attribute of the Opml item to act as a label. + label: "text", + + // url: [public] string + // The location from which to fetch the Opml document. + url: "", + + // urlPreventCache: [public] boolean + // Flag to denote if the underlying xhrGet call should set preventCache. + urlPreventCache: false, + + _assertIsItem: function(/* item */ item){ + if(!this.isItem(item)){ + throw new Error("dojo.data.OpmlStore: a function was passed an item argument that was not an item"); + } + }, + + _assertIsAttribute: function(/* item || String */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(!lang.isString(attribute)){ + throw new Error("dojox.data.OpmlStore: a function was passed an attribute argument that was not an attribute object nor an attribute name string"); + } + }, + + _removeChildNodesThatAreNotElementNodes: function(/* node */ node, /* boolean */ recursive){ + var childNodes = node.childNodes; + if(childNodes.length === 0){ + return; + } + var nodesToRemove = []; + var i, childNode; + for(i = 0; i < childNodes.length; ++i){ + childNode = childNodes[i]; + if(childNode.nodeType != 1){ + nodesToRemove.push(childNode); + } + } + for(i = 0; i < nodesToRemove.length; ++i){ + childNode = nodesToRemove[i]; + node.removeChild(childNode); + } + if(recursive){ + for(i = 0; i < childNodes.length; ++i){ + childNode = childNodes[i]; + this._removeChildNodesThatAreNotElementNodes(childNode, recursive); + } + } + }, + + _processRawXmlTree: function(/* xmlDoc */ rawXmlTree){ + this._loadFinished = true; + this._xmlData = rawXmlTree; + var headNodes = rawXmlTree.getElementsByTagName('head'); + var headNode = headNodes[0]; + if(headNode){ + this._removeChildNodesThatAreNotElementNodes(headNode); + this._metadataNodes = headNode.childNodes; + } + var bodyNodes = rawXmlTree.getElementsByTagName('body'); + var bodyNode = bodyNodes[0]; + if(bodyNode){ + this._removeChildNodesThatAreNotElementNodes(bodyNode, true); + + var bodyChildNodes = bodyNodes[0].childNodes; + for(var i = 0; i < bodyChildNodes.length; ++i){ + var node = bodyChildNodes[i]; + if(node.tagName == 'outline'){ + this._identityMap[this._identCount] = node; + this._identCount++; + this._arrayOfTopLevelItems.push(node); + this._arrayOfAllItems.push(node); + this._checkChildNodes(node); + } + } + } + }, + + _checkChildNodes: function(node /*Node*/){ + // summary: + // Internal function to recurse over all child nodes from the store and add them + // As non-toplevel items + // description: + // Internal function to recurse over all child nodes from the store and add them + // As non-toplevel items + // + // node: + // The child node to walk. + if(node.firstChild){ + for(var i = 0; i < node.childNodes.length; i++){ + var child = node.childNodes[i]; + if(child.tagName == 'outline'){ + this._identityMap[this._identCount] = child; + this._identCount++; + this._arrayOfAllItems.push(child); + this._checkChildNodes(child); + } + } + } + }, + + _getItemsArray: function(/*object?*/queryOptions){ + // summary: + // Internal function to determine which list of items to search over. + // queryOptions: The query options parameter, if any. + if(queryOptions && queryOptions.deep){ + return this._arrayOfAllItems; + } + return this._arrayOfTopLevelItems; + }, + +/*************************************** + dojo.data.api.Read API +***************************************/ + getValue: function( /* item */ item, + /* attribute || attribute-name-string */ attribute, + /* value? */ defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + if(attribute == 'children'){ + return (item.firstChild || defaultValue); //Object + }else{ + var value = item.getAttribute(attribute); + return (value !== undefined) ? value : defaultValue; //Object + } + }, + + getValues: function(/* item */ item, + /* attribute || attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.getValues() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var array = []; + if(attribute == 'children'){ + for(var i = 0; i < item.childNodes.length; ++i){ + array.push(item.childNodes[i]); + } + } else if(item.getAttribute(attribute) !== null){ + array.push(item.getAttribute(attribute)); + } + return array; // Array + }, + + getAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + var attributes = []; + var xmlNode = item; + var xmlAttributes = xmlNode.attributes; + for(var i = 0; i < xmlAttributes.length; ++i){ + var xmlAttribute = xmlAttributes.item(i); + attributes.push(xmlAttribute.nodeName); + } + if(xmlNode.childNodes.length > 0){ + attributes.push('children'); + } + return attributes; //Array + }, + + hasAttribute: function( /* item */ item, + /* attribute || attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.hasAttribute() + return (this.getValues(item, attribute).length > 0); //Boolean + }, + + containsValue: function(/* item */ item, + /* attribute || attribute-name-string */ attribute, + /* anything */ value){ + // summary: + // See dojo.data.api.Read.containsValue() + var regexp = undefined; + if(typeof value === "string"){ + regexp = filterUtil.patternToRegExp(value, false); + } + return this._containsValue(item, attribute, value, regexp); //boolean. + }, + + _containsValue: function( /* item */ item, + /* attribute || attribute-name-string */ attribute, + /* anything */ value, + /* RegExp?*/ regexp){ + // summary: + // Internal function for looking at the values contained by the item. + // description: + // Internal function for looking at the values contained by the item. This + // function allows for denoting if the comparison should be case sensitive for + // strings or not (for handling filtering cases where string case should not matter) + // + // item: + // The data item to examine for attribute values. + // attribute: + // The attribute to inspect. + // value: + // The value to match. + // regexp: + // Optional regular expression generated off value if value was of string type to handle wildcarding. + // If present and attribute values are string, then it can be used for comparison instead of 'value' + var values = this.getValues(item, attribute); + for(var i = 0; i < values.length; ++i){ + var possibleValue = values[i]; + if(typeof possibleValue === "string" && regexp){ + return (possibleValue.match(regexp) !== null); + }else{ + //Non-string matching. + if(value === possibleValue){ + return true; // Boolean + } + } + } + return false; // Boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItem() + // description: + // Four things are verified to ensure that "something" is an item: + // something can not be null, the nodeType must be an XML Element, + // the tagName must be "outline", and the node must be a member of + // XML document for this datastore. + return (something && + something.nodeType == 1 && + something.tagName == 'outline' && + something.ownerDocument === this._xmlData); //Boolean + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + // OpmlStore loads every item, so if it's an item, then it's loaded. + return this.isItem(something); //Boolean + }, + + loadItem: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.loadItem() + // description: + // The OpmlStore always loads all items, so if it's an item, then it's loaded. + // From the dojo.data.api.Read.loadItem docs: + // If a call to isItemLoaded() returns true before loadItem() is even called, + // then loadItem() need not do any work at all and will not even invoke the callback handlers. + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if(this.isItem(item)){ + return this.getValue(item,this.label); //String + } + return undefined; //undefined + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this.label]; //array + }, + + // The dojo.data.api.Read.fetch() function is implemented as + // a mixin from dojo.data.util.simpleFetch. + // That mixin requires us to define _fetchItems(). + _fetchItems: function( /* Object */ keywordArgs, + /* Function */ findCallback, + /* Function */ errorCallback){ + // summary: + // See dojo.data.util.simpleFetch.fetch() + + var self = this; + var filter = function(requestArgs, arrayOfItems){ + var items = null; + if(requestArgs.query){ + items = []; + var ignoreCase = requestArgs.queryOptions ? requestArgs.queryOptions.ignoreCase : false; + + //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the + //same value for each item examined. Much more efficient. + var regexpList = {}; + for(var key in requestArgs.query){ + var value = requestArgs.query[key]; + if(typeof value === "string"){ + regexpList[key] = filterUtil.patternToRegExp(value, ignoreCase); + } + } + + for(var i = 0; i < arrayOfItems.length; ++i){ + var match = true; + var candidateItem = arrayOfItems[i]; + for(var key in requestArgs.query){ + var value = requestArgs.query[key]; + if(!self._containsValue(candidateItem, key, value, regexpList[key])){ + match = false; + } + } + if(match){ + items.push(candidateItem); + } + } + }else{ + // We want a copy to pass back in case the parent wishes to sort the array. We shouldn't allow resort + // of the internal list so that multiple callers can get lists and sort without affecting each other. + if(arrayOfItems.length> 0){ + items = arrayOfItems.slice(0,arrayOfItems.length); + } + } + findCallback(items, requestArgs); + }; + + if(this._loadFinished){ + filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions)); + }else{ + + //If fetches come in before the loading has finished, but while + //a load is in progress, we have to defer the fetching to be + //invoked in the callback. + if(this._loadInProgress){ + this._queuedFetches.push({args: keywordArgs, filter: filter}); + }else{ + if(this.url !== ""){ + this._loadInProgress = true; + var getArgs = { + url: self.url, + handleAs: "xml", + preventCache: self.urlPreventCache + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + self._processRawXmlTree(data); + filter(keywordArgs, self._getItemsArray(keywordArgs.queryOptions)); + self._handleQueuedFetches(); + }); + getHandler.addErrback(function(error){ + throw error; + }); + }else if(this._opmlData){ + this._processRawXmlTree(this._opmlData); + this._opmlData = null; + filter(keywordArgs, this._getItemsArray(keywordArgs.queryOptions)); + }else{ + throw new Error("dojox.data.OpmlStore: No OPML source data was provided as either URL or XML data input."); + } + } + } + }, + + getFeatures: function(){ + // summary: See dojo.data.api.Read.getFeatures() + var features = { + 'dojo.data.api.Read': true, + 'dojo.data.api.Identity': true + }; + return features; //Object + }, + +/*************************************** + dojo.data.api.Identity API +***************************************/ + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + if(this.isItem(item)){ + //No ther way to do this other than O(n) without + //complete rework of how the tree stores nodes. + for(var i in this._identityMap){ + if(this._identityMap[i] === item){ + return i; + } + } + } + return null; //null + }, + + fetchItemByIdentity: function(/* Object */ keywordArgs){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity() + + //Hasn't loaded yet, we have to trigger the load. + if(!this._loadFinished){ + var self = this; + if(this.url !== ""){ + //If fetches come in before the loading has finished, but while + //a load is in progress, we have to defer the fetching to be + //invoked in the callback. + if(this._loadInProgress){ + this._queuedFetches.push({args: keywordArgs}); + }else{ + this._loadInProgress = true; + var getArgs = { + url: self.url, + handleAs: "xml" + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + var scope = keywordArgs.scope ? keywordArgs.scope : winUtil.global; + try{ + self._processRawXmlTree(data); + var item = self._identityMap[keywordArgs.identity]; + if(!self.isItem(item)){ + item = null; + } + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, item); + } + self._handleQueuedFetches(); + }catch(error){ + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, error); + } + } + }); + getHandler.addErrback(function(error){ + this._loadInProgress = false; + if(keywordArgs.onError){ + var scope = keywordArgs.scope ? keywordArgs.scope : winUtil.global; + keywordArgs.onError.call(scope, error); + } + }); + } + }else if(this._opmlData){ + this._processRawXmlTree(this._opmlData); + this._opmlData = null; + var item = this._identityMap[keywordArgs.identity]; + if(!self.isItem(item)){ + item = null; + } + if(keywordArgs.onItem){ + var scope = keywordArgs.scope ? keywordArgs.scope : winUtil.global; + keywordArgs.onItem.call(scope, item); + } + } + }else{ + //Already loaded. We can just look it up and call back. + var item = this._identityMap[keywordArgs.identity]; + if(!this.isItem(item)){ + item = null; + } + if(keywordArgs.onItem){ + var scope = keywordArgs.scope ? keywordArgs.scope : winUtil.global; + keywordArgs.onItem.call(scope, item); + } + } + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentifierAttributes() + + //Identity isn't a public attribute in the item, it's the node count. + //So, return null. + return null; + }, + + _handleQueuedFetches: function(){ + // summary: + // Internal function to execute delayed request in the store. + //Execute any deferred fetches now. + if(this._queuedFetches.length > 0){ + for(var i = 0; i < this._queuedFetches.length; i++){ + var fData = this._queuedFetches[i]; + var delayedQuery = fData.args; + var delayedFilter = fData.filter; + if(delayedFilter){ + delayedFilter(delayedQuery, this._getItemsArray(delayedQuery.queryOptions)); + }else{ + this.fetchItemByIdentity(delayedQuery); + } + } + this._queuedFetches = []; + } + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + } +}); +//Mix in the simple fetch implementation to this class. +lang.extend(OpmlStore, simpleFetch); + +return OpmlStore; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/PersevereStore.js b/js/dojo-release-1.7.2-src/dojox/data/PersevereStore.js new file mode 100644 index 0000000..eea68d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/PersevereStore.js @@ -0,0 +1,112 @@ +define(["dojo", "dojox", "require", "dojox/data/JsonQueryRestStore", "dojox/rpc/Client", "dojo/_base/url"], function(dojo, dojox, require) { + +// PersevereStore is an extension of JsonRestStore to handle Persevere's special features + +dojox.json.ref.serializeFunctions = true; // Persevere supports persisted functions + +dojo.declare("dojox.data.PersevereStore",dojox.data.JsonQueryRestStore,{ + useFullIdInQueries: true, // in JSONQuerys use the full id + jsonQueryPagination: false // use the Range headers instead +}); + +dojox.data.PersevereStore.getStores = function(/*String?*/path,/*Boolean?*/sync){ + // summary: + // Creates Dojo data stores for all the table/classes on a Persevere server + // path: + // URL of the Persevere server's root, this normally just "/" + // which is the default value if the target is not provided + // sync: + // Indicates that the operation should happen synchronously. + // return: + // A map/object of datastores will be returned if it is performed asynchronously, + // otherwise it will return a Deferred object that will provide the map/object. + // The name of each property is a the name of a store, + // and the value is the actual data store object. + path = (path && (path.match(/\/$/) ? path : (path + '/'))) || '/'; + if(path.match(/^\w*:\/\//)){ + // if it is cross-domain, we will use window.name for communication + require("dojox/io/xhrScriptPlugin"); + dojox.io.xhrScriptPlugin(path, "callback", dojox.io.xhrPlugins.fullHttpAdapter); + } + var plainXhr = dojo.xhr; + dojo.xhr = function(method,args){ + (args.headers = args.headers || {})['Server-Methods'] = "false"; + return plainXhr.apply(dojo,arguments); + } + var rootService= dojox.rpc.Rest(path,true); + dojox.rpc._sync = sync; + var dfd = rootService("Class/");//dojo.xhrGet({url: target, sync:!callback, handleAs:'json'}); + var results; + var stores = {}; + var callId = 0; + dfd.addCallback(function(schemas){ + dojox.json.ref.resolveJson(schemas, { + index: dojox.rpc.Rest._index, + idPrefix: "/Class/", + assignAbsoluteIds: true + }); + function setupHierarchy(schema){ + if(schema['extends'] && schema['extends'].prototype){ + if(!schema.prototype || !schema.prototype.isPrototypeOf(schema['extends'].prototype)){ + setupHierarchy(schema['extends']); + dojox.rpc.Rest._index[schema.prototype.__id] = schema.prototype = dojo.mixin(dojo.delegate(schema['extends'].prototype), schema.prototype); + } + } + } + function setupMethods(methodsDefinitions, methodsTarget){ + if(methodsDefinitions && methodsTarget){ + for(var j in methodsDefinitions){ + var methodDef = methodsDefinitions[j]; + // if any method definitions indicate that the method should run on the server, than add + // it to the prototype as a JSON-RPC method + if(methodDef.runAt != "client" && !methodsTarget[j]){ + methodsTarget[j] = (function(methodName){ + return function(){ + // execute a JSON-RPC call + var deferred = dojo.rawXhrPost({ + url: this.__id, + // the JSON-RPC call + postData: dojox.json.ref.toJson({ + method: methodName, + id: callId++, + params: dojo._toArray(arguments) + }), + handleAs: "json" + }); + deferred.addCallback(function(response){ + // handle the response + return response.error ? + new Error(response.error) : + response.result; + }); + return deferred; + } + })(j); + } + } + } + } + for(var i in schemas){ + if(typeof schemas[i] == 'object'){ + var schema = schemas[i]; + setupHierarchy(schema); + setupMethods(schema.methods, schema.prototype = schema.prototype || {}); + setupMethods(schema.staticMethods, schema); + stores[schemas[i].id] = new dojox.data.PersevereStore({target:new dojo._Url(path,schemas[i].id) + '/',schema:schema}); + } + } + return (results = stores); + }); + dojo.xhr = plainXhr; + return sync ? results : dfd; +}; +dojox.data.PersevereStore.addProxy = function(){ + // summary: + // Invokes the XHR proxy plugin. Call this if you will be using x-site data. + require("dojox/io/xhrPlugins"); // also not necessary, but we can register that Persevere supports proxying + dojox.io.xhrPlugins.addProxy("/proxy/"); +}; + +return dojox.data.PersevereStore; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/PicasaStore.js b/js/dojo-release-1.7.2-src/dojox/data/PicasaStore.js new file mode 100644 index 0000000..ce9d892 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/PicasaStore.js @@ -0,0 +1,273 @@ +define(["dojo/_base/lang","dojo/_base/declare", "dojo/_base/connect", "dojo/io/script", "dojo/data/util/simpleFetch", "dojo/date/stamp"], + function(lang, declare, connect, scriptIO, simpleFetch, dateStamp) { + +var PicasaStore = declare("dojox.data.PicasaStore", null, { + constructor: function(/*Object*/args){ + // summary: + // Initializer for the PicasaStore store. + // description: + // The PicasaStore is a Datastore interface to one of the basic services + // of the Picasa service, the public photo feed. This does not provide + // access to all the services of Picasa. + // This store cannot do * and ? filtering as the picasa service + // provides no interface for wildcards. + if(args && args.label){ + this.label = args.label; + } + if(args && "urlPreventCache" in args){ + this.urlPreventCache = args.urlPreventCache?true:false; + } + if(args && "maxResults" in args){ + this.maxResults = parseInt(args.maxResults); + if(!this.maxResults){ + this.maxResults = 20; + } + } + }, + + _picasaUrl: "http://picasaweb.google.com/data/feed/api/all", + + _storeRef: "_S", + + //label: string + //The attribute to use from the picasa item as its label. + label: "title", + + //urlPreventCache: boolean + //Flag denoting if preventCache should be passed to io.script. + urlPreventCache: false, + + //maxResults: Define out how many results to return for a fetch. + maxResults: 20, + + _assertIsItem: function(/* item */ item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.PicasaStore: a function was passed an item argument that was not an item"); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error("dojox.data.PicasaStore: a function was passed an attribute argument that was not an attribute name string"); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true + }; + }, + + getValue: function(item, attribute, defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + var values = this.getValues(item, attribute); + if(values && values.length > 0){ + return values[0]; + } + return defaultValue; + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + return ["id", "published", "updated", "category", "title$type", "title", + "summary$type", "summary", "rights$type", "rights", "link", "author", + "gphoto$id", "gphoto$name", "location", "imageUrlSmall", "imageUrlMedium", + "imageUrl", "datePublished", "dateTaken","description"]; + }, + + hasAttribute: function(item, attribute){ + // summary: + // See dojo.data.api.Read.hasAttributes() + if(this.getValue(item,attribute)){ + return true; + } + return false; + }, + + isItemLoaded: function(item){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(item); + }, + + loadItem: function(keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + }, + + getLabel: function(item){ + // summary: + // See dojo.data.api.Read.getLabel() + return this.getValue(item,this.label); + }, + + getLabelAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return [this.label]; + }, + + containsValue: function(item, attribute, value){ + // summary: + // See dojo.data.api.Read.containsValue() + var values = this.getValues(item,attribute); + for(var i = 0; i < values.length; i++){ + if(values[i] === value){ + return true; + } + } + return false; + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValue() + + this._assertIsItem(item); + this._assertIsAttribute(attribute); + if(attribute === "title"){ + return [this._unescapeHtml(item.title)]; + }else if(attribute === "author"){ + return [this._unescapeHtml(item.author[0].name)]; + }else if(attribute === "datePublished"){ + return [dateAtamp.fromISOString(item.published)]; + }else if(attribute === "dateTaken"){ + return [dateStamp.fromISOString(item.published)]; + }else if(attribute === "updated"){ + return [dateStamp.fromISOString(item.updated)]; + }else if(attribute === "imageUrlSmall"){ + return [item.media.thumbnail[1].url]; + }else if(attribute === "imageUrl"){ + return [item.content$src]; + }else if(attribute === "imageUrlMedium"){ + return [item.media.thumbnail[2].url]; + }else if(attribute === "link"){ + return [item.link[1]]; + }else if(attribute === "tags"){ + return item.tags.split(" "); + }else if(attribute === "description"){ + return [this._unescapeHtml(item.summary)]; + } + return []; + }, + + isItem: function(item){ + // summary: + // See dojo.data.api.Read.isItem() + if(item && item[this._storeRef] === this){ + return true; + } + return false; + }, + + close: function(request){ + // summary: + // See dojo.data.api.Read.close() + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Fetch picasa items that match to a query + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + + if(!request.query){ + request.query={}; + } + + //Build up the content to send the request for. + var content = {alt: "jsonm", pp: "1", psc: "G"}; + + content['start-index'] = "1"; + if(request.query.start){ + content['start-index'] = request.query.start; + } + if(request.query.tags){ + content.q = request.query.tags; + } + if(request.query.userid){ + content.uname = request.query.userid; + } + if(request.query.userids){ + content.ids = request.query.userids; + } + if(request.query.lang){ + content.hl = request.query.lang; + } + content['max-results'] = this.maxResults; + + //Linking this up to Picasa is a JOY! + var self = this; + var handle = null; + var myHandler = function(data){ + if(handle !== null){ + connect.disconnect(handle); + } + + //Process the items... + fetchHandler(self._processPicasaData(data), request); + }; + var getArgs = { + url: this._picasaUrl, + preventCache: this.urlPreventCache, + content: content, + callbackParamName: 'callback', + handle: myHandler + }; + var deferred = scriptIO.get(getArgs); + + deferred.addErrback(function(error){ + connect.disconnect(handle); + errorHandler(error, request); + }); + }, + + _processPicasaData: function(data){ + var items = []; + if(data.feed){ + items = data.feed.entry; + //Add on the store ref so that isItem can work. + for(var i = 0; i < items.length; i++){ + var item = items[i]; + item[this._storeRef] = this; + } + } + return items; + }, + + _unescapeHtml: function(str){ + // summary: Utility function to un-escape XML special characters in an HTML string. + // description: Utility function to un-escape XML special characters in an HTML string. + // str: String. + // The string to un-escape + // returns: HTML String converted back to the normal text (unescaped) characters (<,>,&, ", etc,). + // + //TODO: Check to see if theres already compatible escape() in dojo.string or dojo.html + if(str){ + str = str.replace(/&/gm, "&").replace(/</gm, "<").replace(/>/gm, ">").replace(/"/gm, "\""); + str = str.replace(/'/gm, "'"); + } + return str; + } +}); +lang.extend(PicasaStore, simpleFetch); + +return PicasaStore; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/QueryReadStore.js b/js/dojo-release-1.7.2-src/dojox/data/QueryReadStore.js new file mode 100644 index 0000000..0efa0bc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/QueryReadStore.js @@ -0,0 +1,518 @@ +define(["dojo", "dojox", "dojo/data/util/sorter", "dojo/string"], function(dojo, dojox) { + +dojo.declare("dojox.data.QueryReadStore", + null, + { + // summary: + // This class provides a store that is mainly intended to be used + // for loading data dynamically from the server, used i.e. for + // retreiving chunks of data from huge data stores on the server (by server-side filtering!). + // Upon calling the fetch() method of this store the data are requested from + // the server if they are not yet loaded for paging (or cached). + // + // For example used for a combobox which works on lots of data. It + // can be used to retreive the data partially upon entering the + // letters "ac" it returns only items like "action", "acting", etc. + // + // note: + // The field name "id" in a query is reserved for looking up data + // by id. This is necessary as before the first fetch, the store + // has no way of knowing which field the server will declare as + // identifier. + // + // example: + // | // The parameter "query" contains the data that are sent to the server. + // | var store = new dojox.data.QueryReadStore({url:'/search.php'}); + // | store.fetch({query:{name:'a'}, queryOptions:{ignoreCase:false}}); + // + // | // Since "serverQuery" is given, it overrules and those data are + // | // sent to the server. + // | var store = new dojox.data.QueryReadStore({url:'/search.php'}); + // | store.fetch({serverQuery:{name:'a'}, queryOptions:{ignoreCase:false}}); + // + // |
                          + // |
                          + // |
                          + + // + // todo: + // - there is a bug in the paging, when i set start:2, count:5 after an initial fetch() and doClientPaging:true + // it returns 6 elemetns, though count=5, try it in QueryReadStore.html + // - add optional caching + // - when the first query searched for "a" and the next for a subset of + // the first, i.e. "ab" then we actually dont need a server request, if + // we have client paging, we just need to filter the items we already have + // that might also be tooo much logic + + url:"", + requestMethod:"get", + //useCache:false, + + // We use the name in the errors, once the name is fixed hardcode it, may be. + _className:"dojox.data.QueryReadStore", + + // This will contain the items we have loaded from the server. + // The contents of this array is optimized to satisfy all read-api requirements + // and for using lesser storage, so the keys and their content need some explaination: + // this._items[0].i - the item itself + // this._items[0].r - a reference to the store, so we can identify the item + // securly. We set this reference right after receiving the item from the + // server. + _items:[], + + // Store the last query that triggered xhr request to the server. + // So we can compare if the request changed and if we shall reload + // (this also depends on other factors, such as is caching used, etc). + _lastServerQuery:null, + + // Store how many rows we have so that we can pass it to a clientPaging handler + _numRows:-1, + + // Store a hash of the last server request. Actually I introduced this + // for testing, so I can check if no unnecessary requests were issued for + // client-side-paging. + lastRequestHash:null, + + // summary: + // By default every request for paging is sent to the server. + doClientPaging:false, + + // summary: + // By default all the sorting is done serverside before the data is returned + // which is the proper place to be doing it for really large datasets. + doClientSorting:false, + + // Items by identify for Identify API + _itemsByIdentity:null, + + // Identifier used + _identifier:null, + + _features: {'dojo.data.api.Read':true, 'dojo.data.api.Identity':true}, + + _labelAttr: "label", + + constructor: function(/* Object */ params){ + dojo.mixin(this,params); + }, + + getValue: function(/* item */ item, /* attribute-name-string */ attribute, /* value? */ defaultValue){ + // According to the Read API comments in getValue() and exception is + // thrown when an item is not an item or the attribute not a string! + this._assertIsItem(item); + if(!dojo.isString(attribute)){ + throw new Error(this._className+".getValue(): Invalid attribute, string expected!"); + } + if(!this.hasAttribute(item, attribute)){ + // read api says: return defaultValue "only if *item* does not have a value for *attribute*." + // Is this the case here? The attribute doesn't exist, but a defaultValue, sounds reasonable. + if(defaultValue){ + return defaultValue; + } + } + return item.i[attribute]; + }, + + getValues: function(/* item */ item, /* attribute-name-string */ attribute){ + this._assertIsItem(item); + var ret = []; + if(this.hasAttribute(item, attribute)){ + ret.push(item.i[attribute]); + } + return ret; + }, + + getAttributes: function(/* item */ item){ + this._assertIsItem(item); + var ret = []; + for(var i in item.i){ + ret.push(i); + } + return ret; + }, + + hasAttribute: function(/* item */ item, /* attribute-name-string */ attribute){ + // summary: + // See dojo.data.api.Read.hasAttribute() + return this.isItem(item) && typeof item.i[attribute]!="undefined"; + }, + + containsValue: function(/* item */ item, /* attribute-name-string */ attribute, /* anything */ value){ + var values = this.getValues(item, attribute); + var len = values.length; + for(var i=0; i>> var store = new dojox.data.QueryReadStore({}); + // >>> store.isItem(""); + // false + // + // >>> var store = new dojox.data.QueryReadStore({}); + // >>> store.isItem({}); + // false + // + // >>> var store = new dojox.data.QueryReadStore({}); + // >>> store.isItem(0); + // false + // + // >>> var store = new dojox.data.QueryReadStore({}); + // >>> store.isItem({name:"me", label:"me too"}); + // false + // + if(something){ + return typeof something.r != "undefined" && something.r == this; + } + return false; + }, + + isItemLoaded: function(/* anything */ something){ + // Currently we dont have any state that tells if an item is loaded or not + // if the item exists its also loaded. + // This might change when we start working with refs inside items ... + return this.isItem(something); + }, + + loadItem: function(/* object */ args){ + if(this.isItemLoaded(args.item)){ + return; + } + // Actually we have nothing to do here, or at least I dont know what to do here ... + }, + + fetch:function(/* Object? */ request){ + // summary: + // See dojo.data.util.simpleFetch.fetch() this is just a copy and I adjusted + // only the paging, since it happens on the server if doClientPaging is + // false, thx to http://trac.dojotoolkit.org/ticket/4761 reporting this. + // Would be nice to be able to use simpleFetch() to reduce copied code, + // but i dont know how yet. Ideas please! + request = request || {}; + if(!request.store){ + request.store = this; + } + var self = this; + + var _errorHandler = function(errorData, requestObject){ + if(requestObject.onError){ + var scope = requestObject.scope || dojo.global; + requestObject.onError.call(scope, errorData, requestObject); + } + }; + + var _fetchHandler = function(items, requestObject, numRows){ + var oldAbortFunction = requestObject.abort || null; + var aborted = false; + + var startIndex = requestObject.start?requestObject.start:0; + if(self.doClientPaging == false){ + // For client paging we dont need no slicing of the result. + startIndex = 0; + } + var endIndex = requestObject.count?(startIndex + requestObject.count):items.length; + + requestObject.abort = function(){ + aborted = true; + if(oldAbortFunction){ + oldAbortFunction.call(requestObject); + } + }; + + var scope = requestObject.scope || dojo.global; + if(!requestObject.store){ + requestObject.store = self; + } + if(requestObject.onBegin){ + requestObject.onBegin.call(scope, numRows, requestObject); + } + if(requestObject.sort && self.doClientSorting){ + items.sort(dojo.data.util.sorter.createSortFunction(requestObject.sort, self)); + } + if(requestObject.onItem){ + for(var i = startIndex; (i < items.length) && (i < endIndex); ++i){ + var item = items[i]; + if(!aborted){ + requestObject.onItem.call(scope, item, requestObject); + } + } + } + if(requestObject.onComplete && !aborted){ + var subset = null; + if(!requestObject.onItem){ + subset = items.slice(startIndex, endIndex); + } + requestObject.onComplete.call(scope, subset, requestObject); + } + }; + this._fetchItems(request, _fetchHandler, _errorHandler); + return request; // Object + }, + + getFeatures: function(){ + return this._features; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // I have no idea if this is really needed ... + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if(this._labelAttr && this.isItem(item)){ + return this.getValue(item, this._labelAttr); //String + } + return undefined; //undefined + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + if(this._labelAttr){ + return [this._labelAttr]; //array + } + return null; //null + }, + + _xhrFetchHandler: function(data, request, fetchHandler, errorHandler){ + data = this._filterResponse(data); + if(data.label){ + this._labelAttr = data.label; + } + var numRows = data.numRows || -1; + + this._items = []; + // Store a ref to "this" in each item, so we can simply check if an item + // really origins form here (idea is from ItemFileReadStore, I just don't know + // how efficient the real storage use, garbage collection effort, etc. is). + dojo.forEach(data.items,function(e){ + this._items.push({i:e, r:this}); + },this); + + var identifier = data.identifier; + this._itemsByIdentity = {}; + if(identifier){ + this._identifier = identifier; + var i; + for(i = 0; i < this._items.length; ++i){ + var item = this._items[i].i; + var identity = item[identifier]; + if(!this._itemsByIdentity[identity]){ + this._itemsByIdentity[identity] = item; + }else{ + throw new Error(this._className+": The json data as specified by: [" + this.url + "] is malformed. Items within the list have identifier: [" + identifier + "]. Value collided: [" + identity + "]"); + } + } + }else{ + this._identifier = Number; + for(i = 0; i < this._items.length; ++i){ + this._items[i].n = i; + } + } + + // TODO actually we should do the same as dojo.data.ItemFileReadStore._getItemsFromLoadedData() to sanitize + // (does it really sanititze them) and store the data optimal. should we? for security reasons??? + numRows = this._numRows = (numRows === -1) ? this._items.length : numRows; + fetchHandler(this._items, request, numRows); + this._numRows = numRows; + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // The request contains the data as defined in the Read-API. + // Additionally there is following keyword "serverQuery". + // + // The *serverQuery* parameter, optional. + // This parameter contains the data that will be sent to the server. + // If this parameter is not given the parameter "query"'s + // data are sent to the server. This is done for some reasons: + // - to specify explicitly which data are sent to the server, they + // might also be a mix of what is contained in "query", "queryOptions" + // and the paging parameters "start" and "count" or may be even + // completely different things. + // - don't modify the request.query data, so the interface using this + // store can rely on unmodified data, as the combobox dijit currently + // does it, it compares if the query has changed + // - request.query is required by the Read-API + // + // I.e. the following examples might be sent via GET: + // fetch({query:{name:"abc"}, queryOptions:{ignoreCase:true}}) + // the URL will become: /url.php?name=abc + // + // fetch({serverQuery:{q:"abc", c:true}, query:{name:"abc"}, queryOptions:{ignoreCase:true}}) + // the URL will become: /url.php?q=abc&c=true + // // The serverQuery-parameter has overruled the query-parameter + // // but the query parameter stays untouched, but is not sent to the server! + // // The serverQuery contains more data than the query, so they might differ! + // + + var serverQuery = request.serverQuery || request.query || {}; + //Need to add start and count + if(!this.doClientPaging){ + serverQuery.start = request.start || 0; + // Count might not be sent if not given. + if(request.count){ + serverQuery.count = request.count; + } + } + if(!this.doClientSorting && request.sort){ + var sortInfo = []; + dojo.forEach(request.sort, function(sort){ + if(sort && sort.attribute){ + sortInfo.push((sort.descending ? "-" : "") + sort.attribute); + } + }); + serverQuery.sort = sortInfo.join(','); + } + // Compare the last query and the current query by simply json-encoding them, + // so we dont have to do any deep object compare ... is there some dojo.areObjectsEqual()??? + if(this.doClientPaging && this._lastServerQuery !== null && + dojo.toJson(serverQuery) == dojo.toJson(this._lastServerQuery) + ){ + this._numRows = (this._numRows === -1) ? this._items.length : this._numRows; + fetchHandler(this._items, request, this._numRows); + }else{ + var xhrFunc = this.requestMethod.toLowerCase() == "post" ? dojo.xhrPost : dojo.xhrGet; + var xhrHandler = xhrFunc({url:this.url, handleAs:"json-comment-optional", content:serverQuery, failOk: true}); + request.abort = function(){ + xhrHandler.cancel(); + }; + xhrHandler.addCallback(dojo.hitch(this, function(data){ + this._xhrFetchHandler(data, request, fetchHandler, errorHandler); + })); + xhrHandler.addErrback(function(error){ + errorHandler(error, request); + }); + // Generate the hash using the time in milliseconds and a randon number. + // Since Math.randon() returns something like: 0.23453463, we just remove the "0." + // probably just for esthetic reasons :-). + this.lastRequestHash = new Date().getTime()+"-"+String(Math.random()).substring(2); + this._lastServerQuery = dojo.mixin({}, serverQuery); + } + }, + + _filterResponse: function(data){ + // summary: + // If the data from servers needs to be processed before it can be processed by this + // store, then this function should be re-implemented in subclass. This default + // implementation just return the data unchanged. + // data: + // The data received from server + return data; + }, + + _assertIsItem: function(/* item */ item){ + // summary: + // It throws an error if item is not valid, so you can call it in every method that needs to + // throw an error when item is invalid. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error(this._className+": Invalid item argument."); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error(this._className+": Invalid attribute argument ('"+attribute+"')."); + } + }, + + fetchItemByIdentity: function(/* Object */ keywordArgs){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity() + + // See if we have already loaded the item with that id + // In case there hasn't been a fetch yet, _itemsByIdentity is null + // and thus a fetch will be triggered below. + if(this._itemsByIdentity){ + var item = this._itemsByIdentity[keywordArgs.identity]; + if(!(item === undefined)){ + if(keywordArgs.onItem){ + var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global; + keywordArgs.onItem.call(scope, {i:item, r:this}); + } + return; + } + } + + // Otherwise we need to go remote + // Set up error handler + var _errorHandler = function(errorData, requestObject){ + var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global; + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, errorData); + } + }; + + // Set up fetch handler + var _fetchHandler = function(items, requestObject){ + var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global; + try{ + // There is supposed to be only one result + var item = null; + if(items && items.length == 1){ + item = items[0]; + } + + // If no item was found, item is still null and we'll + // fire the onItem event with the null here + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, item); + } + }catch(error){ + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, error); + } + } + }; + + // Construct query + var request = {serverQuery:{id:keywordArgs.identity}}; + + // Dispatch query + this._fetchItems(request, _fetchHandler, _errorHandler); + }, + + getIdentity: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentity() + var identifier = null; + if(this._identifier === Number){ + identifier = item.n; // Number + }else{ + identifier = item.i[this._identifier]; + } + return identifier; + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Identity.getIdentityAttributes() + return [this._identifier]; + } + } +); + +return dojox.data.QueryReadStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/README b/js/dojo-release-1.7.2-src/dojox/data/README new file mode 100644 index 0000000..4641983 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/README @@ -0,0 +1,127 @@ +------------------------------------------------------------------------------- +DojoX Data +------------------------------------------------------------------------------- +Version 1.1 +Release date: 03/18/2008 +------------------------------------------------------------------------------- +Project state: production +------------------------------------------------------------------------------- +Project authors + Jared Jurkiewicz (jared.jurkiewicz@gmail.com) (FileStore, HtmlStore, XmlStore, FlickrStore, CssRuleStore, CssClassStore, AppStore, others). + Shane O'Sullivan (shaneosullivan1@gmail.com) (FlickrRestStore, AtomReadStore, GoogleSeachStore, GoogleFeedStore) + Wolfram Kriesing (wolfram@kriesing.de) (QueryReadStore) + Dustin Machi (dmachi@dojotolkit.org) (jsonPathStore); + Russell Jones (KeyValueStore) (CLA) + Benjamin Schell (KeyValueStore, CssRuleStore, CssClassStore, AppStore, OpenSearchStore) (Corporate CLA) + Kurt Stutsman (kurt@snaplogic.org) (SnapLogicStore) + Kris Zyp (kzyp@dojotoolkit.org) (JsonRestStore, PersevereStore, S3JsonRestStore, CouchDBRestStore) + Frank Fortson (frank.fortson@equorum.com) (AndOrReadStore, AndOrWriteStore) + + +------------------------------------------------------------------------------- +Project description + +The DojoX Data project is a container for extensions and extra example stores +that implement the dojo.data APIs. It may also contain utility functions for +working with specific types of data. + +------------------------------------------------------------------------------- +Dependencies: + +DojoX Data has dependencies on core dojo (dojo.data), dojox.xml for XmlStore +and dojox.data.dom(deprecated) and the D.O.H. unit test framework +------------------------------------------------------------------------------- +Documentation: + +See the Dojo API tool (http://dojotoolkit.org/api) +------------------------------------------------------------------------------- +Contributions: + +For contributions to be committed into the dojox repository, the datastore +should have basic unit tests that exercise the API's that the store declares it +implements. Documentation and demos are a plus, but unit tests are required +to be committed into this sub-package. This is necessary to help keep the +provided datastores as stable as possible. + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/data/* + +Install into the following directory structure: +/dojox/data/ + +...which should be at the same level as your Dojo checkout. + +/dojox/data/* + +Require in the dojox.data stores you wish to use. +------------------------------------------------------------------------------- +Additional Notes: + dojox.data.AtomReadStore - Reads Atom XML documents. + + dojox.data.CvsStore - comma-separated (spreadsheet output) + datastore implementation + + dojox.data.FlickrRestStore - advanced version of: dojox.data.FlickrStore + (Caching + user key support) + + dojox.data.FlickrStore - data store driven by Flickr.com public API. + + dojox.data.HtmlTableStore - Implementation of an HTML Table reading + datastore + + dojox.data.HtmlStore - Implementation of an HTML reading datastore. Can + handle tables, ordered and un-ordered lists, and lists of divs. + + dojox.data.OpmlStore - Store for reading OMPL formatted data + + dojox.data.XmlStore - datastore for XML based services or + documents. + + dojox.data.QueryReadStore - datastore to provide serverside URL query + matching. Similar to the 0.4.X ComboBox dataUrl parameter. + + dojox.data.jsonPathStore - datastore that takes an arbitrary js object + and uses it as the store. Pre-Alpha at the moment. + + dojox.data.KeyValueStore - datastore that mimics a key/value property + file format. + + dojox.data.SnapLogicStore - Store to interface to SnapLogic data services. + + dojox.data.JsonRestStore - Store to interface with RESTful HTTP/JSON web services. + dojox.data.PersevereStore - Extension of JsonRestStore for Persevere + dojox.data.CouchDBRestStore - Extension of JsonRestStore for CouchDB + dojox.data.S3JsonRestStore - Extension of JsonRestStore for Amazon S3 + dojox.data.GoogleSearchStore - Store to interface Google's AJAX search services. + There are many subclasses of this store for particular types of searches: + dojox.data.GoogleWebSearchStore + dojox.data.GoogleBlogSearchStore + dojox.data.GoogleLocalSearchStore + dojox.data.GoogleVideoSearchStore + dojox.data.GoogleNewsSearchStore + dojox.data.GoogleBookSearchStore + dojox.data.GoogleImageSearchStore + + dojox.data.AndOrReadStore - Demonstrating a more complex query format allowing AND/OR. + Based directly on dojo.data.ItemFileReadStore. + + dojox.data.AndOrWriteStore - Demonstrating a more complex query format allowing AND/OR. + Based directly on dojo.data.ItemFileWriteStore. + + dojox.data.FileStore - A lazy-loading store designed for searching filesystems with a provided + PHP back end. Implements dojo.data.api.Read and dojo.data.api.Identity + + dojox.data.CssRuleStore - A store that allows searching/querying over Css rules loaded in the page in + the browser. + + dojox.data.CssClassStore - A store that allows searching/querying over what classes are defined in the page in + the browser. + + dojox.data.AppStore - A store that implements full read, write, and identity APIs for working with ATOM documents. + The store uses the full APP protocol. + + dojox.data.OpenSearchStore - A store that implements OpenSearch provider search capability. + diff --git a/js/dojo-release-1.7.2-src/dojox/data/RailsStore.js b/js/dojo-release-1.7.2-src/dojox/data/RailsStore.js new file mode 100644 index 0000000..b573c2e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/RailsStore.js @@ -0,0 +1,168 @@ +define(["dojo", "dojox", "dojox/data/JsonRestStore"], function(dojo, dojox) { + +// Contains code donated by Travis Tilley under CLA +dojo.declare("dojox.data.RailsStore", dojox.data.JsonRestStore, { + constructor: function(){ + // summary: + // RailsStore is a data store for interacting with RESTful Rails controllers + }, + preamble: function(options){ + if(typeof options.target == 'string' && !options.service){ + var target = options.target.replace(/\/$/g, ''); + + // Special getRequest handler for handling content type negotiation via + // the Rails format extension, as well as properly setting the ID param + // in the URL. + var getRequest = function(id, args){ + args = args || {}; + var url = target; + var query; + var ident; + + if(dojo.isObject(id)){ + ident = ''; + query = '?' + dojo.objectToQuery(id); + }else if(args.queryStr && args.queryStr.indexOf('?') != -1){ + ident = args.queryStr.replace(/\?.*/, ''); + query = args.queryStr.replace(/[^?]*\?/g, '?'); + }else if(dojo.isString(args.query) && args.query.indexOf('?') != -1){ + ident = args.query.replace(/\?.*/, ''); + query = args.query.replace(/[^?]*\?/g, '?'); + }else{ + ident = id ? id.toString() : ''; + query = ''; + } + + if(ident.indexOf('=') != -1){ + query = ident; + ident = ''; + } + + if(ident){ + url = url + '/' + ident + '.json' + query; + }else{ + url = url + '.json' + query; + } + + var isSync = dojox.rpc._sync; + dojox.rpc._sync = false; + + return { + url : url, + handleAs : 'json', + contentType : 'application/json', + sync : isSync, + headers : { + Accept : 'application/json,application/javascript', + Range : args && (args.start >= 0 || args.count >= 0) + ? "items=" + + (args.start || '0') + + '-' + + ((args.count && (args.count + + (args.start || 0) - 1)) || '') + : undefined + } + }; + }; + + options.service = dojox.rpc.Rest(this.target, true, null, + getRequest); + } + }, + fetch: function(args){ + args = args || {}; + function addToQueryStr(obj){ + function buildInitialQueryString(){ + if(args.queryStr == null){ + args.queryStr = ''; + } + if(dojo.isObject(args.query)){ + args.queryStr = '?' + dojo.objectToQuery(args.query); + }else if(dojo.isString(args.query)){ + args.queryStr = args.query; + } + } + function separator(){ + if(args.queryStr.indexOf('?') == -1){ + return '?'; + }else{ + return '&'; + } + } + if(args.queryStr == null){ + buildInitialQueryString(); + } + args.queryStr = args.queryStr + separator() + dojo.objectToQuery(obj); + } + if(args.start || args.count){ + // in addition to the content range headers, also provide query parameters for use + // with the will_paginate plugin if so desired. + if((args.start || 0) % args.count){ + throw new Error("The start parameter must be a multiple of the count parameter"); + } + addToQueryStr({ + page: ((args.start || 0) / args.count) + 1, + per_page: args.count + }); + } + if(args.sort){ + // make the sort into query parameters + var queryObj = { + sortBy : [], + sortDir : [] + }; + + dojo.forEach(args.sort, function(item){ + queryObj.sortBy.push(item.attribute); + queryObj.sortDir.push(!!item.descending ? 'DESC' : 'ASC'); + }); + + addToQueryStr(queryObj); + delete args.sort; + } + + return this.inherited(arguments); + }, + _processResults: function(results, deferred){ + var items; + + /* + * depending on the ActiveRecord::Base.include_root_in_json setting, + * you might get back an array of attribute objects, or an array of + * objects with the attribute object nested under an attribute having + * the same name as the (remote and unguessable) model class. + * + * 'Example' without root_in_json: [{'id':1, 'text':'first'}] + * 'Example' with root_in_json: [{'example':{'id':1, 'text':'first'}}] + */ + if((typeof this.rootAttribute == 'undefined') && results[0]){ + if(results[0][this.idAttribute]){ + this.rootAttribute = false; + console.debug('RailsStore: without root_in_json'); + }else{ + for(var attribute in results[0]){ + if(results[0][attribute][this.idAttribute]){ + this.rootAttribute = attribute; + console.debug('RailsStore: with root_in_json, attribute: ' + attribute); + } + } + } + } + + if(this.rootAttribute){ + items = dojo.map(results, function(item){ + return item[this.rootAttribute]; + }, this); + }else{ + items = results; + } + + // index the results + var count = results.length; + // if we don't know the length, and it is partial result, we will guess that it is twice as big, that will work for most widgets + return {totalCount:deferred.fullLength || (deferred.request.count == count ? (deferred.request.start || 0) + count * 2 : count), items: items}; + } +}); + +return dojox.data.RailsStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/S3Store.js b/js/dojo-release-1.7.2-src/dojox/data/S3Store.js new file mode 100644 index 0000000..10d7867 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/S3Store.js @@ -0,0 +1,34 @@ +define(["dojo/_base/declare", "dojox/data/JsonRestStore", "dojox/rpc/ProxiedPath"], + function(declare, JsonRestStore, ProxiedPath) { + +// S3JsonRestStore is an extension of JsonRestStore to handle +// Amazon's S3 service using JSON data +/*===== var JsonRestStore = dojox.data.JsonRestStore =====*/ +return declare("dojox.data.S3Store", JsonRestStore, + { + _processResults : function(results){ + // unfortunately, S3 returns query results in XML form + var keyElements = results.getElementsByTagName("Key"); + var jsResults = []; + var self = this; + for(var i=0; i return default value + }, + getValues: function(item, property){ + // summary: + // Gets the value of an item's 'property' and returns + // it. If this value is an array it is just returned, + // if not, the value is added to an array and that is returned. + // + // item: /* object */ + // property: /* string */ + // property to look up value for + + var val = this.getValue(item,property); + return val instanceof Array ? val : val === undefined ? [] : [val]; + }, + + getAttributes: function(item){ + // summary: + // Gets the available attributes of an item's 'property' and returns + // it as an array. + // + // item: /* object */ + + var res = []; + for(var i in item){ + if(item.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_')){ + res.push(i); + } + } + return res; + }, + + hasAttribute: function(item,attribute){ + // summary: + // Checks to see if item has attribute + // + // item: /* object */ + // attribute: /* string */ + return attribute in item; + }, + + containsValue: function(item, attribute, value){ + // summary: + // Checks to see if 'item' has 'value' at 'attribute' + // + // item: /* object */ + // attribute: /* string */ + // value: /* anything */ + return array.indexOf(this.getValues(item,attribute),value) > -1; + }, + + + isItem: function(item){ + // summary: + // Checks to see if the argument is an item + // + // item: /* object */ + // attribute: /* string */ + + // we have no way of determining if it belongs, we just have object returned from + // service queries + return (typeof item == 'object') && item && !(item instanceof Date); + }, + + isItemLoaded: function(item){ + // summary: + // Checks to see if the item is loaded. + // + // item: /* object */ + + return item && !item._loadObject; + }, + + loadItem: function(args){ + // summary: + // Loads an item and calls the callback handler. Note, that this will call the callback + // handler even if the item is loaded. Consequently, you can use loadItem to ensure + // that an item is loaded is situations when the item may or may not be loaded yet. + // If you access a value directly through property access, you can use this to load + // a lazy value as well (doesn't need to be an item). + // + // example: + // store.loadItem({ + // item: item, // this item may or may not be loaded + // onItem: function(item){ + // // do something with the item + // } + // }); + + var item; + if(args.item._loadObject){ + args.item._loadObject(function(result){ + item = result; // in synchronous mode this can allow loadItem to return the value + delete item._loadObject; + var func = result instanceof Error ? args.onError : args.onItem; + if(func){ + func.call(args.scope, result); + } + }); + }else if(args.onItem){ + // even if it is already loaded, we will use call the callback, this makes it easier to + // use when it is not known if the item is loaded (you can always safely call loadItem). + args.onItem.call(args.scope, args.item); + } + return item; + }, + _currentId : 0, + _processResults : function(results, deferred){ + // this should return an object with the items as an array and the total count of + // items (maybe more than currently in the result set). + // for example: + // | {totalCount:10, items: [{id:1},{id:2}]} + + // index the results, assigning ids as necessary + + if(results && typeof results == 'object'){ + var id = results.__id; + if(!id){// if it hasn't been assigned yet + if(this.idAttribute){ + // use the defined id if available + id = results[this.idAttribute]; + }else{ + id = this._currentId++; + } + if(id !== undefined){ + var existingObj = this._index[id]; + if(existingObj){ + for(var j in existingObj){ + delete existingObj[j]; // clear it so we can mixin + } + results = lang.mixin(existingObj,results); + } + results.__id = id; + this._index[id] = results; + } + } + for(var i in results){ + results[i] = this._processResults(results[i], deferred).items; + } + var count = results.length; + } + return {totalCount: deferred.request.count == count ? (deferred.request.start || 0) + count * this.estimateCountFactor : count, items: results}; + }, + close: function(request){ + return request && request.abort && request.abort(); + }, + fetch: function(args){ + // summary: + // See dojo.data.api.Read.fetch + // + // The *queryOptions.cache* parameter + // If true, indicates that the query result should be cached for future use. This is only available + // if dojox.data.ClientFilter has been loaded before the ServiceStore + // + // The *syncMode* parameter + // Indicates that the call should be fetch synchronously if possible (this is not always possible) + // + // The *clientFetch* parameter + // This is a fetch keyword argument for explicitly doing client side filtering, querying, and paging + + args = args || {}; + + if("syncMode" in args ? args.syncMode : this.syncMode){ + dojox.rpc._sync = true; + } + var self = this; + + var scope = args.scope || self; + var defResult = this.cachingFetch ? this.cachingFetch(args) : this._doQuery(args); + defResult.request = args; + defResult.addCallback(function(results){ + if(args.clientFetch){ + results = self.clientSideFetch({query:args.clientFetch,sort:args.sort,start:args.start,count:args.count},results); + } + var resultSet = self._processResults(results, defResult); + results = args.results = resultSet.items; + if(args.onBegin){ + args.onBegin.call(scope, resultSet.totalCount, args); + } + if(args.onItem){ + for(var i=0; i:/pipe//". + // parameters: + // An object whose properties define parameters to the pipeline. The values of these + // properties will be sent to the pipeline as parameters when it run. + // + if(args.url){ + this.url = args.url; + } + this._parameters = args.parameters; + }, + + _assertIsItem: function(/* item */item){ + // summary: + // This function tests whether the item passed in is indeed an item in the store. + // item: + // The item to test for being contained by the store. + if(!this.isItem(item)){ + throw new Error("dojox.data.SnapLogicStore: a function was passed an item argument that was not an item"); + } + }, + + _assertIsAttribute: function(/* attribute-name-string */ attribute){ + // summary: + // This function tests whether the item passed in is indeed a valid 'attribute' like type for the store. + // attribute: + // The attribute to test for being contained by the store. + if(typeof attribute !== "string"){ + throw new Error("dojox.data.SnapLogicStore: a function was passed an attribute argument that was not an attribute name string"); + } + }, + + getFeatures: function(){ + // summary: + // See dojo.data.api.Read.getFeatures() + return { + 'dojo.data.api.Read': true + }; + }, + + getValue: function(item, attribute, defaultValue){ + // summary: + // See dojo.data.api.Read.getValue() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var i = dojo.indexOf(item.attributes, attribute); + if(i !== -1){ + return item.values[i]; + } + return defaultValue; + }, + + getAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getAttributes() + this._assertIsItem(item); + return item.attributes; + }, + + hasAttribute: function(item, attribute){ + // summary: + // See dojo.data.api.Read.hasAttributes() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + for(var i = 0; i < item.attributes.length; ++i){ + if(attribute == item.attributes[i]){ + return true; + } + } + return false; + }, + + isItemLoaded: function(item){ + // summary: + // See dojo.data.api.Read.isItemLoaded() + return this.isItem(item); // Boolean + }, + + loadItem: function(keywordArgs){ + // summary: + // See dojo.data.api.Read.loadItem() + }, + + getLabel: function(item){ + // summary: + // See dojo.data.api.Read.getLabel() + return undefined; + }, + + getLabelAttributes: function(item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + return null; + }, + + containsValue: function(item, attribute, value){ + // summary: + // See dojo.data.api.Read.containsValue() + return this.getValue(item, attribute) === value; // Boolean + }, + + getValues: function(item, attribute){ + // summary: + // See dojo.data.api.Read.getValue() + this._assertIsItem(item); + this._assertIsAttribute(attribute); + var i = dojo.indexOf(item.attributes, attribute); + if(i !== -1){ + return [item.values[i]]; // Array + } + return []; + }, + + isItem: function(item){ + // summary: + // See dojo.data.api.Read.isItem() + if(item && item._store === this){ + return true; + } + return false; + }, + + close: function(request){ + // summary: + // See dojo.data.api.Read.close() + }, + + _fetchHandler: function(/* Object */request){ + // summary: + // Process data retrieved via fetch and send it back to requester. + // response: + // The data returend from the I/O transport. In the normal case, it will be an array of result rows + // from the pipeline. In the special case for record count optimization, response will be an array + // with a single element containing the total pipeline result row count. See fetch() for details + // on this optimization. + + var scope = request.scope || dojo.global; + + if(request.onBegin){ + // Check for the record count optimization + request.onBegin.call(scope, request._countResponse[0], request); + } + + if(request.onItem || request.onComplete){ + var response = request._dataResponse; + + if(!response.length){ + request.onError.call(scope, + new Error("dojox.data.SnapLogicStore: invalid response of length 0"), + request); + return; + }else if(request.query != 'record count'){ + //If this was not a record count request, the first element returned will contain + //the field names. + var field_names = response.shift(); + + var items = []; + for(var i = 0; i < response.length; ++i){ + if(request._aborted){ + break; + } + + items.push({attributes: field_names, values: response[i], _store: this}); + } + + if(request.sort && !request._aborted){ + items.sort(dojo.data.util.sorter.createSortFunction(request.sort, self)); + } + }else{ + //This is a record count request, so manually set the field names. + items = [({attributes: ['count'], values: response, _store: this})]; + } + + if(request.onItem){ + for(var i = 0; i < items.length; ++i){ + if(request._aborted){ + break; + } + request.onItem.call(scope, items[i], request); + } + items = null; + } + + if(request.onComplete && !request._aborted){ + request.onComplete.call(scope, items, request); + } + } + }, + + _partHandler: function(/* Object */request, /* String */part, /* Object */response){ + // summary: + // Handle the individual replies for both data and length requests. + // request: + // The request/handle object used with the original fetch() call. + // part: + // A value indicating which request this handler call is for (this.Parts). + // response: + // Response received from the underlying IO transport. + + if(response instanceof Error){ + if(part == this.Parts.DATA){ + request._dataHandle = null; + }else{ + request._countHandle = null; + } + request._aborted = true; + if(request.onError){ + request.onError.call(request.scope, response, request); + } + }else{ + if(request._aborted){ + return; + } + if(part == this.Parts.DATA){ + request._dataResponse = response; + }else{ + request._countResponse = response; + } + if((!request._dataHandle || request._dataResponse !== null) && + (!request._countHandle || request._countResponse !== null)){ + this._fetchHandler(request); + } + } + }, + + fetch: function(/* Object */request){ + // summary: + // See dojo.data.api.Read.close() + // request: + // See dojo.data.api.Read.close() for generic interface. + // + // In addition to the standard Read API fetch support, this store supports an optimization for + // for retrieving the total count of records in the Pipeline without retrieving the data. To + // use this optimization, simply provide an onBegin handler without an onItem or onComplete handler. + + request._countResponse = null; + request._dataResponse = null; + request._aborted = false; + request.abort = function(){ + if(!request._aborted){ + request._aborted = true; + if(request._dataHandle && request._dataHandle.cancel){ + request._dataHandle.cancel(); + } + if(request._countHandle && request._countHandle.cancel){ + request._countHandle.cancel(); + } + } + }; + + // Only make the call for data if onItem or onComplete is used. Otherwise, onBegin will only + // require the total row count. + if(request.onItem || request.onComplete){ + var content = this._parameters || {}; + if(request.start){ + if(request.start < 0){ + throw new Error("dojox.data.SnapLogicStore: request start value must be 0 or greater"); + } + content['sn.start'] = request.start + 1; + } + if(request.count){ + if(request.count < 0){ + throw new Error("dojox.data.SnapLogicStore: request count value 0 or greater"); + } + content['sn.limit'] = request.count; + } + + content['sn.content_type'] = 'application/javascript'; + + var store = this; + var handler = function(response, ioArgs){ + if(response instanceof Error){ + store._fetchHandler(response, request); + } + }; + + var getArgs = { + url: this.url, + content: content, + // preventCache: true, + timeout: 60000, //Starting a pipeline can take a long time. + callbackParamName: "sn.stream_header", + handle: dojo.hitch(this, "_partHandler", request, this.Parts.DATA) + }; + + request._dataHandle = dojo.io.script.get(getArgs); + } + + if(request.onBegin){ + var content = {}; + content['sn.count'] = 'records'; + content['sn.content_type'] = 'application/javascript'; + + var getArgs = { + url: this.url, + content: content, + timeout: 60000, + callbackParamName: "sn.stream_header", + handle: dojo.hitch(this, "_partHandler", request, this.Parts.COUNT) + }; + + request._countHandle = dojo.io.script.get(getArgs); + } + + return request; // Object + } +}); + +return dojox.data.SnapLogicStore; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/StoreExplorer.js b/js/dojo-release-1.7.2-src/dojox/data/StoreExplorer.js new file mode 100644 index 0000000..e047acc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/StoreExplorer.js @@ -0,0 +1,191 @@ +dojo.provide("dojox.data.StoreExplorer"); +dojo.require("dojox.grid.DataGrid"); +dojo.require("dojox.data.ItemExplorer"); +dojo.require("dijit.layout.BorderContainer"); +dojo.require("dijit.layout.ContentPane"); + +dojo.declare("dojox.data.StoreExplorer", dijit.layout.BorderContainer, { + constructor: function(options){ + dojo.mixin(this, options); + }, + store: null, + columnWidth: '', + stringQueries: false, + showAllColumns: false, + postCreate: function(){ + var self = this; + this.inherited(arguments); + var contentPane = new dijit.layout.ContentPane({ + region:'top' + }).placeAt(this); + function addButton(name, action){ + var button = new dijit.form.Button({label: name}); + contentPane.containerNode.appendChild(button.domNode); + button.onClick = action; + return button; + } + var queryText = contentPane.containerNode.appendChild(document.createElement("span")); + queryText.innerHTML = "Enter query:  "; + queryText.id = "queryText"; + var queryTextBox = contentPane.containerNode.appendChild(document.createElement("input")); + queryTextBox.type = "text"; + queryTextBox.id = "queryTextBox"; + addButton("Query",function(){ + var query = queryTextBox.value; + self.setQuery(self.stringQueries ? query : dojo.fromJson(query)); + }); + contentPane.containerNode.appendChild(document.createElement("span")).innerHTML = "   "; + var createNewButton = addButton("Create New", dojo.hitch(this, "createNew")); + var deleteButton = addButton("Delete",function(){ + var items = grid.selection.getSelected(); + for(var i = 0; i < items.length; i++){ + self.store.deleteItem(items[i]); + } + }); + this.setItemName = function(name){ + createNewButton.attr('label'," Create New " + name); + deleteButton.attr('label',"Delete " + name); + }; + addButton("Save",function(){ + self.store.save({onError:function(error){ + alert(error); + }}); + //refresh the tree + self.tree.refreshItem(); + }); + addButton("Revert",function(){ + self.store.revert(); + }); + addButton("Add Column", function(){ + var columnName = prompt("Enter column name:","property"); + if(columnName){ + self.gridLayout.push({ + field: columnName, + name: columnName, + formatter: dojo.hitch(self,"_formatCell"), + editable: true + }); + self.grid.attr("structure",self.gridLayout); + } + }); + var centerCP = new dijit.layout.ContentPane({ + region:'center' + }).placeAt(this); + var grid = this.grid = new dojox.grid.DataGrid( + {store: this.store} + ); + centerCP.attr("content", grid); + grid.canEdit = function(inCell, inRowIndex){ + var value = this._copyAttr(inRowIndex, inCell.field); + return !(value && typeof value == 'object') || value instanceof Date; + } + + var trailingCP = new dijit.layout.ContentPane({ + region: 'trailing', + splitter: true, + style: "width: 300px" + }).placeAt(this); + + var tree = this.tree = new dojox.data.ItemExplorer({ + store: this.store} + ); + trailingCP.attr("content", tree); + + dojo.connect(grid, "onCellClick", function(){ + var selected = grid.selection.getSelected()[0]; + tree.setItem(selected); + }); + + this.gridOnFetchComplete = grid._onFetchComplete; + this.setStore(this.store); + }, + setQuery: function(query, options){ + this.grid.setQuery(query, options); + }, + _formatCell: function(value){ + if(this.store.isItem(value)){ + return this.store.getLabel(value) || this.store.getIdentity(value); + } + return value; + }, + setStore: function(store){ + this.store = store; + var self = this; + var grid = this.grid; + grid._pending_requests[0] = false; + function formatCell(value){ + return self._formatCell(value); + } + var defaultOnComplete = this.gridOnFetchComplete; + grid._onFetchComplete = function(items, req){ + var layout = self.gridLayout = []; + var column, key, item, i, j, k, idAttributes = store.getIdentityAttributes(); + for(i = 0; i < idAttributes.length; i++){ + key = idAttributes[i]; + layout.push({ + field: key, + name: key, + _score: 100, + formatter: formatCell, + editable: false + }); + + } + for(i=0; item = items[i++];){ + var keys = store.getAttributes(item); + for(k=0; key = keys[k++];){ + var found = false; + for(j=0; column = layout[j++];){ + if(column.field == key){ + column._score++; + found = true; + break; + } + } + if(!found){ + layout.push({ + field: key, + name: key, + _score: 1, + formatter: formatCell, + styles: "white-space:nowrap; ", + editable: true + }); + } + } + } + layout = layout.sort(function(a, b){ + return b._score - a._score; + }); + if(!self.showAllColumns){ + for(j=0; column=layout[j]; j++){ + if(column._score < items.length/40 * j) { + layout.splice(j, layout.length-j); + break; + } + } + } + for(j=0; column = layout[j++];){ + column.width=self.columnWidth || Math.round(100/layout.length) + '%'; + } + grid._onFetchComplete = defaultOnComplete; + grid.attr("structure",layout); + var retValue = defaultOnComplete.apply(this, arguments); + + } + grid.setStore(store); + this.queryOptions = {cache:true}; + this.tree.setStore(store); + }, + createNew: function(){ + var props = prompt("Enter any properties (in JSON literal form) to put in the new item (passed to the newItem constructor):","{ }"); + if(props){ + try{ + this.store.newItem(dojo.fromJson(props)); + }catch(e){ + alert(e); + } + + } + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/WikipediaStore.js b/js/dojo-release-1.7.2-src/dojox/data/WikipediaStore.js new file mode 100644 index 0000000..c5552c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/WikipediaStore.js @@ -0,0 +1,117 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare", "dojo/io/script", + "dojo/io-query", "dojox/rpc/Service", "dojox/data/ServiceStore"], + function(kernel, lang, declare, scriptIO, ioQuery, Service, ServiceStore) { + +kernel.experimental("dojox.data.WikipediaStore"); + +/*===== var ServiceStore = dojox.data.ServiceStore; =====*/ + +return declare("dojox.data.WikipediaStore", ServiceStore, { + // summary: + // Initializer for the Wikipedia data store interface. + // description: + // The WikipediaStore is a data store interface to Wikipedia, using the + // Wikipedia SMD spec from dojox.rpc. It currently is useful only for + // finding articles that contain some particular text or grabbing single + // articles by full name; no wildcards or other filtering are supported. + // example: + // | var store = new dojox.data.WikipediaStore(); + // | store.fetch({ + // | query: {title:"Dojo Toolkit"}, + // | onItem: function(item){ + // | dojo.byId("somediv").innerHTML = item.text["*"]; + // | } + // | }); + constructor: function(options){ + if(options && options.service){ + this.service = options.service; + }else{ + var svc = new Service(require.toUrl("dojox/rpc/SMDLibrary/wikipedia.smd")); + this.service = svc.query; + } + + this.idAttribute = this.labelAttribute = "title"; + }, + + fetch: function(/* object */ request){ + // summary: + // Fetch a page or some partially-loaded search results from + // Wikipedia. Note that there isn't a way to sort data coming + // in from the API, so we just ignore the *sort* parameter. + // example: + // Loading a page: + // | store.fetch({ + // | query: {title:"Dojo Toolkit"}, + // | // define your handlers here + // | }); + // example: + // Searching for pages containing "dojo": + // | store.fetch({ + // | query: { + // | action: "query", + // | text: "dojo" + // | }, + // | // define your handlers here + // | }); + // example: + // Searching for the next 50 pages containing "dojo": + // | store.fetch({ + // | query: { + // | action: "query", + // | text: "dojo", + // | start: 10, + // | count: 50 // max 500; will be capped if necessary + // | }, + // | // define your handlers here + // | }); + var rq = lang.mixin({}, request.query); + if(rq && (!rq.action || rq.action === "parse")){ + // default to a single page fetch + rq.action = "parse"; + rq.page = rq.title; + delete rq.title; + + }else if(rq.action === "query"){ + // perform a full text search on page content + rq.list = "search"; + rq.srwhat = "text"; + rq.srsearch = rq.text; + if(request.start){ + rq.sroffset = request.start-1; + } + if(request.count){ + rq.srlimit = request.count >= 500 ? 500 : request.count; + } + delete rq.text; + } + request.query = rq; + return this.inherited(arguments); + }, + + _processResults: function(results, def){ + if(results.parse){ + // loading a complete page + results.parse.title = ioQuery.queryToObject(def.ioArgs.url.split("?")[1]).page; + results = [results.parse]; + + }else if(results.query && results.query.search){ + // loading some search results; all we have here is page titles, + // so we mark our items as incomplete + results = results.query.search; + var _thisStore = this; + for(var i in results){ + results[i]._loadObject = function(callback){ + _thisStore.fetch({ + query: { action:"parse", title:this.title }, + onItem: callback + }); + delete this._loadObject; + } + } + } + return this.inherited(arguments); + } +}); + +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/XmlItem.js b/js/dojo-release-1.7.2-src/dojox/data/XmlItem.js new file mode 100644 index 0000000..2aee3db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/XmlItem.js @@ -0,0 +1,43 @@ +define(["dojo/_base/declare"], + function(declare) { + +return declare("dojox.data.XmlItem", null, { + constructor: function(element, store, query){ + // summary: + // Initialize with an XML element + // element: + // An XML element + // store: + // The containing store, if any. + // query: + // The query to use to look up a specific element. + // Usually an XPath or dojo.query statement. + this.element = element; + this.store = store; + this.q = query; + }, + // summary: + // A data item of 'XmlStore' + // description: + // This class represents an item of 'XmlStore' holding an XML element. + // 'element' + // element: + // An XML element + toString: function(){ + // summary: + // Return a value of the first text child of the element + // returns: + // a value of the first text child of the element + var str = ""; + if(this.element){ + for(var i = 0; i < this.element.childNodes.length; i++){ + var node = this.element.childNodes[i]; + if(node.nodeType === 3 || node.nodeType === 4){ + str += node.nodeValue; + } + } + } + return str; //String + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/XmlStore.js b/js/dojo-release-1.7.2-src/dojox/data/XmlStore.js new file mode 100644 index 0000000..cca77fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/XmlStore.js @@ -0,0 +1,1471 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/xhr", "dojo/data/util/simpleFetch", + "dojo/_base/query", "dojo/_base/array", "dojo/_base/window", "dojo/data/util/filter", "dojox/xml/parser", + "dojox/data/XmlItem"], + function(lang, declare, xhr, simpleFetch, domQuery, array, winUtil, filter, xmlParser, XmlItem) { + +var XmlStore = declare("dojox.data.XmlStore", null, { + // summary: + // A data store for XML based services or documents + // description: + // A data store for XML based services or documents + + constructor: function(/* object */ args){ + // summary: + // Constructor for the XML store. + // args: + // An anonymous object to initialize properties. It expects the following values: + // url: The url to a service or an XML document that represents the store + // rootItem: A tag name for root items + // keyAttribute: An attribute name for a key or an identity (unique identifier) + // Required for serverside fetchByIdentity, etc. Not required for + // client side fetchItemBIdentity, as it will use an XPath-like + // structure if keyAttribute was not specified. Recommended to always + // set this, though, for consistent identity behavior. + // attributeMap: An anonymous object contains properties for attribute mapping, + // {"tag_name.item_attribute_name": "@xml_attribute_name", ...} + // sendQuery: A boolean indicate to add a query string to the service URL. + // Default is false. + // urlPreventCache: Parameter to indicate whether or not URL calls should apply + // the preventCache option to the xhr request. + if(args){ + this.url = args.url; + this.rootItem = (args.rootItem || args.rootitem || this.rootItem); + this.keyAttribute = (args.keyAttribute || args.keyattribute || this.keyAttribute); + this._attributeMap = (args.attributeMap || args.attributemap); + this.label = args.label || this.label; + this.sendQuery = (args.sendQuery || args.sendquery || this.sendQuery); + if("urlPreventCache" in args){ + this.urlPreventCache = args.urlPreventCache?true:false; + } + } + this._newItems = []; + this._deletedItems = []; + this._modifiedItems = []; + }, + + //Values that may be set by the parser. + //Ergo, have to be instantiated to something + //So the parser knows how to set them. + url: "", + + // A tag name for XML tags to be considered root items in the hierarchy + rootItem: "", + + // An attribute name for a key or an identity (unique identifier) + // Required for serverside fetchByIdentity, etc. Not required for + // client side fetchItemBIdentity, as it will use an XPath-like + // structure if keyAttribute was not specified. Recommended to always + // set this, though, for consistent identity behavior. + keyAttribute: "", + + // An attribute of the item to use as the label. + label: "", + + // A boolean indicate to add a query string to the service URL. + // Default is false. + sendQuery: false, + + // An anonymous object that contains properties for attribute mapping, + // for example {"tag_name.item_attribute_name": "@xml_attribute_name", ...}. + // This is optional. This is done so that attributes which are actual + // XML tag attributes (and not sub-tags of an XML tag), can be referenced. + attributeMap: null, + + // Parameter to indicate whether or not URL calls should apply the preventCache option to the xhr request. + urlPreventCache: true, + + /* dojo.data.api.Read */ + + getValue: function(/* item */ item, /* attribute || attribute-name-string */ attribute, /* value? */ defaultValue){ + // summary: + // Return an attribute value + // description: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // If 'attribute' specifies "tagName", the tag name of the element is + // returned. + // If 'attribute' specifies "childNodes", the first element child is + // returned. + // If 'attribute' specifies "text()", the value of the first text + // child is returned. + // For generic attributes, if '_attributeMap' is specified, + // an actual attribute name is looked up with the tag name of + // the element and 'attribute' (concatenated with '.'). + // Then, if 'attribute' starts with "@", the value of the XML + // attribute is returned. + // Otherwise, the first child element of the tag name specified with + // 'attribute' is returned. + // item: + // An XML element that holds the attribute + // attribute: + // A tag name of a child element, An XML attribute name or one of + // special names + // defaultValue: + // A default value + // returns: + // An attribute value found, otherwise 'defaultValue' + var element = item.element; + var i; + var node; + if(attribute === "tagName"){ + return element.nodeName; + }else if(attribute === "childNodes"){ + for(i = 0; i < element.childNodes.length; i++){ + node = element.childNodes[i]; + if(node.nodeType === 1 /*ELEMENT_NODE*/){ + return this._getItem(node); //object + } + } + return defaultValue; + }else if(attribute === "text()"){ + for(i = 0; i < element.childNodes.length; i++){ + node = element.childNodes[i]; + if(node.nodeType === 3 /*TEXT_NODE*/ || + node.nodeType === 4 /*CDATA_SECTION_NODE*/){ + return node.nodeValue; //string + } + } + return defaultValue; + }else{ + attribute = this._getAttribute(element.nodeName, attribute); + if(attribute.charAt(0) === '@'){ + var name = attribute.substring(1); + var value = element.getAttribute(name); + //Note that getAttribute will return null or empty string for undefined/unset + //attributes, therefore, we should just check the return was valid + //non-empty string and not null. + return (value) ? value : defaultValue; //object + }else{ + for(i = 0; i < element.childNodes.length; i++){ + node = element.childNodes[i]; + if( node.nodeType === 1 /*ELEMENT_NODE*/ && + node.nodeName === attribute){ + return this._getItem(node); //object + } + } + return defaultValue; //object + } + } + }, + + getValues: function(/* item */ item, /* attribute || attribute-name-string */ attribute){ + // summary: + // Return an array of attribute values + // description: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // If 'attribute' specifies "tagName", the tag name of the element is + // returned. + // If 'attribute' specifies "childNodes", child elements are returned. + // If 'attribute' specifies "text()", the values of child text nodes + // are returned. + // For generic attributes, if 'attributeMap' is specified, + // an actual attribute name is looked up with the tag name of + // the element and 'attribute' (concatenated with '.'). + // Then, if 'attribute' starts with "@", the value of the XML + // attribute is returned. + // Otherwise, child elements of the tag name specified with + // 'attribute' are returned. + // item: + // An XML element that holds the attribute + // attribute: + // A tag name of child elements, An XML attribute name or one of + // special names + // returns: + // An array of attribute values found, otherwise an empty array + var element = item.element; + var values = []; + var i; + var node; + if(attribute === "tagName"){ + return [element.nodeName]; + }else if(attribute === "childNodes"){ + for(i = 0; i < element.childNodes.length; i++){ + node = element.childNodes[i]; + if(node.nodeType === 1 /*ELEMENT_NODE*/){ + values.push(this._getItem(node)); + } + } + return values; //array + }else if(attribute === "text()"){ + var ec = element.childNodes; + for(i = 0; i < ec.length; i++){ + node = ec[i]; + if(node.nodeType === 3 || node.nodeType === 4){ + values.push(node.nodeValue); + } + } + return values; //array + }else{ + attribute = this._getAttribute(element.nodeName, attribute); + if(attribute.charAt(0) === '@'){ + var name = attribute.substring(1); + var value = element.getAttribute(name); + return (value !== undefined) ? [value] : []; //array + }else{ + for(i = 0; i < element.childNodes.length; i++){ + node = element.childNodes[i]; + if( node.nodeType === 1 /*ELEMENT_NODE*/ && + node.nodeName === attribute){ + values.push(this._getItem(node)); + } + } + return values; //array + } + } + }, + + getAttributes: function(/* item */ item){ + // summary: + // Return an array of attribute names + // description: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // tag names of child elements and XML attribute names of attributes + // specified to the element are returned along with special attribute + // names applicable to the element including "tagName", "childNodes" + // if the element has child elements, "text()" if the element has + // child text nodes, and attribute names in '_attributeMap' that match + // the tag name of the element. + // item: + // An XML element + // returns: + // An array of attributes found + var element = item.element; + var attributes = []; + var i; + attributes.push("tagName"); + if(element.childNodes.length > 0){ + var names = {}; + var childNodes = true; + var text = false; + for(i = 0; i < element.childNodes.length; i++){ + var node = element.childNodes[i]; + if(node.nodeType === 1 /*ELEMENT_NODE*/){ + var name = node.nodeName; + if(!names[name]){ + attributes.push(name); + names[name] = name; + } + childNodes = true; + }else if(node.nodeType === 3){ + text = true; + } + } + if(childNodes){ + attributes.push("childNodes"); + } + if(text){ + attributes.push("text()"); + } + } + for(i = 0; i < element.attributes.length; i++){ + attributes.push("@" + element.attributes[i].nodeName); + } + if(this._attributeMap){ + for(var key in this._attributeMap){ + i = key.indexOf('.'); + if(i > 0){ + var tagName = key.substring(0, i); + if(tagName === element.nodeName){ + attributes.push(key.substring(i + 1)); + } + }else{ // global attribute + attributes.push(key); + } + } + } + return attributes; //array + }, + + hasAttribute: function(/* item */ item, /* attribute || attribute-name-string */ attribute){ + // summary: + // Check whether an element has the attribute + // item: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // attribute: + // A tag name of a child element, An XML attribute name or one of + // special names + // returns: + // True if the element has the attribute, otherwise false + return (this.getValue(item, attribute) !== undefined); //boolean + }, + + containsValue: function(/* item */ item, /* attribute || attribute-name-string */ attribute, /* anything */ value){ + // summary: + // Check whether the attribute values contain the value + // item: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // attribute: + // A tag name of a child element, An XML attribute name or one of + // special names + // returns: + // True if the attribute values contain the value, otherwise false + var values = this.getValues(item, attribute); + for(var i = 0; i < values.length; i++){ + if((typeof value === "string")){ + if(values[i].toString && values[i].toString() === value){ + return true; + } + }else if(values[i] === value){ + return true; //boolean + } + } + return false;//boolean + }, + + isItem: function(/* anything */ something){ + // summary: + // Check whether the object is an item (XML element) + // item: + // An object to check + // returns: + // True if the object is an XML element, otherwise false + if(something && something.element && something.store && something.store === this){ + return true; //boolean + } + return false; //boolran + }, + + isItemLoaded: function(/* anything */ something){ + // summary: + // Check whether the object is an item (XML element) and loaded + // item: + // An object to check + // returns: + // True if the object is an XML element, otherwise false + return this.isItem(something); //boolean + }, + + loadItem: function(/* object */ keywordArgs){ + // summary: + // Load an item (XML element) + // keywordArgs: + // object containing the args for loadItem. See dojo.data.api.Read.loadItem() + }, + + getFeatures: function(){ + // summary: + // Return supported data APIs + // returns: + // "dojo.data.api.Read" and "dojo.data.api.Write" + var features = { + "dojo.data.api.Read": true, + "dojo.data.api.Write": true + }; + + //Local XML parsing can implement Identity fairly simple via + if(!this.sendQuery || this.keyAttribute !== ""){ + features["dojo.data.api.Identity"] = true; + } + return features; //array + }, + + getLabel: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabel() + if((this.label !== "") && this.isItem(item)){ + var label = this.getValue(item,this.label); + if(label){ + return label.toString(); + } + } + return undefined; //undefined + }, + + getLabelAttributes: function(/* item */ item){ + // summary: + // See dojo.data.api.Read.getLabelAttributes() + if(this.label !== ""){ + return [this.label]; //array + } + return null; //null + }, + + _fetchItems: function(request, fetchHandler, errorHandler){ + // summary: + // Fetch items (XML elements) that match to a query + // description: + // If 'sendQuery' is true, an XML document is loaded from + // 'url' with a query string. + // Otherwise, an XML document is loaded and list XML elements that + // match to a query (set of element names and their text attribute + // values that the items to contain). + // A wildcard, "*" can be used to query values to match all + // occurrences. + // If 'rootItem' is specified, it is used to fetch items. + // request: + // A request object + // fetchHandler: + // A function to call for fetched items + // errorHandler: + // A function to call on error + var url = this._getFetchUrl(request); + if(!url){ + errorHandler(new Error("No URL specified."), request); + return; + } + var localRequest = (!this.sendQuery ? request : {}); // use request for _getItems() + + var self = this; + var getArgs = { + url: url, + handleAs: "xml", + preventCache: self.urlPreventCache + }; + var getHandler = xhr.get(getArgs); + getHandler.addCallback(function(data){ + var items = self._getItems(data, localRequest); + if(items && items.length > 0){ + fetchHandler(items, request); + }else{ + fetchHandler([], request); + } + }); + getHandler.addErrback(function(data){ + errorHandler(data, request); + }); + }, + + _getFetchUrl: function(request){ + // summary: + // Generate a URL for fetch + // description: + // This default implementation generates a query string in the form of + // "?name1=value1&name2=value2..." off properties of 'query' object + // specified in 'request' and appends it to 'url', if 'sendQuery' + // is set to false. + // Otherwise, 'url' is returned as is. + // Sub-classes may override this method for the custom URL generation. + // request: + // A request object + // returns: + // A fetch URL + if(!this.sendQuery){ + return this.url; + } + var query = request.query; + if(!query){ + return this.url; + } + if(lang.isString(query)){ + return this.url + query; + } + var queryString = ""; + for(var name in query){ + var value = query[name]; + if(value){ + if(queryString){ + queryString += "&"; + } + queryString += (name + "=" + value); + } + } + if(!queryString){ + return this.url; + } + //Check to see if the URL already has query params or not. + var fullUrl = this.url; + if(fullUrl.indexOf("?") < 0){ + fullUrl += "?"; + }else{ + fullUrl += "&"; + } + return fullUrl + queryString; + }, + + _getItems: function(document, request){ + // summary: + // Fetch items (XML elements) in an XML document based on a request + // description: + // This default implementation walks through child elements of + // the document element to see if all properties of 'query' object + // match corresponding attributes of the element (item). + // If 'request' is not specified, all child elements are returned. + // Sub-classes may override this method for the custom search in + // an XML document. + // document: + // An XML document + // request: + // A request object + // returns: + // An array of items + var query = null; + if(request){ + query = request.query; + } + var items = []; + var nodes = null; + + if(this.rootItem !== ""){ + nodes = domQuery(this.rootItem, document); + }else{ + nodes = document.documentElement.childNodes; + } + + var deep = request.queryOptions ? request.queryOptions.deep : false; + if(deep){ + nodes = this._flattenNodes(nodes); + } + for(var i = 0; i < nodes.length; i++){ + var node = nodes[i]; + if(node.nodeType != 1 /*ELEMENT_NODE*/){ + continue; + } + var item = this._getItem(node); + if(query){ + var ignoreCase = request.queryOptions ? request.queryOptions.ignoreCase : false; + var value; + var match = false; + var j; + var emptyQuery = true; + + //See if there are any string values that can be regexp parsed first to avoid multiple regexp gens on the + //same value for each item examined. Much more efficient. + var regexpList = {}; + for(var key in query){ + value = query[key]; + if(typeof value === "string"){ + regexpList[key] = filter.patternToRegExp(value, ignoreCase); + }else if(value){ + // It's an object, possibly regexp, so treat it as one. + regexpList[key] = value; + } + } + for(var attribute in query){ + emptyQuery = false; + var values = this.getValues(item, attribute); + for(j = 0; j < values.length; j++){ + value = values[j]; + if(value){ + var queryValue = query[attribute]; + if((typeof value) === "string" && + (regexpList[attribute])){ + if((value.match(regexpList[attribute])) !== null){ + match = true; + }else{ + match = false; + } + }else if((typeof value) === "object"){ + if( value.toString && + (regexpList[attribute])){ + var stringValue = value.toString(); + if((stringValue.match(regexpList[attribute])) !== null){ + match = true; + }else{ + match = false; + } + }else{ + if(queryValue === "*" || queryValue === value){ + match = true; + }else{ + match = false; + } + } + } + } + //One of the multiValue values matched, + //so quit looking. + if(match){ + break; + } + } + if(!match){ + break; + } + } + //Either the query was an empty object {}, which is match all, or + //was an actual match. + if(emptyQuery || match){ + items.push(item); + } + }else{ + //No query, everything matches. + items.push(item); + } + } + array.forEach(items,function(item){ + if(item.element.parentNode){ + item.element.parentNode.removeChild(item.element); // make it root + } + },this); + return items; + }, + + _flattenNodes: function(nodes){ + // Summary: + // Function used to flatten a hierarchy of XML nodes into a single list for + // querying over. Used when deep = true; + var flattened = []; + if(nodes){ + var i; + for(i = 0; i < nodes.length; i++){ + var node = nodes[i]; + flattened.push(node); + if(node.childNodes && node.childNodes.length > 0){ + flattened = flattened.concat(this._flattenNodes(node.childNodes)); + } + } + } + return flattened; + }, + + close: function(/*dojo.data.api.Request || keywordArgs || null */ request){ + // summary: + // See dojo.data.api.Read.close() + }, + +/* dojo.data.api.Write */ + + newItem: function(/* object? */ keywordArgs, parentInfo){ + // summary: + // Return a new dojox.data.XmlItem + // description: + // At least, 'keywordArgs' must contain "tagName" to be used for + // the new element. + // Other attributes in 'keywordArgs' are set to the new element, + // including "text()", but excluding "childNodes". + // keywordArgs: + // An object containing initial attributes + // returns: + // An XML element + keywordArgs = (keywordArgs || {}); + var tagName = keywordArgs.tagName; + if(!tagName){ + tagName = this.rootItem; + if(tagName === ""){ + return null; + } + } + + var document = this._getDocument(); + var element = document.createElement(tagName); + for(var attribute in keywordArgs){ + var text; + if(attribute === "tagName"){ + continue; + }else if(attribute === "text()"){ + text = document.createTextNode(keywordArgs[attribute]); + element.appendChild(text); + }else{ + attribute = this._getAttribute(tagName, attribute); + if(attribute.charAt(0) === '@'){ + var name = attribute.substring(1); + element.setAttribute(name, keywordArgs[attribute]); + }else{ + var child = document.createElement(attribute); + text = document.createTextNode(keywordArgs[attribute]); + child.appendChild(text); + element.appendChild(child); + } + } + } + + var item = this._getItem(element); + this._newItems.push(item); + + var pInfo = null; + if(parentInfo && parentInfo.parent && parentInfo.attribute){ + pInfo = { + item: parentInfo.parent, + attribute: parentInfo.attribute, + oldValue: undefined + }; + + //See if it is multi-valued or not and handle appropriately + //Generally, all attributes are multi-valued for this store + //So, we only need to append if there are already values present. + var values = this.getValues(parentInfo.parent, parentInfo.attribute); + if(values && values.length > 0){ + var tempValues = values.slice(0, values.length); + if(values.length === 1){ + pInfo.oldValue = values[0]; + }else{ + pInfo.oldValue = values.slice(0, values.length); + } + tempValues.push(item); + this.setValues(parentInfo.parent, parentInfo.attribute, tempValues); + pInfo.newValue = this.getValues(parentInfo.parent, parentInfo.attribute); + }else{ + this.setValue(parentInfo.parent, parentInfo.attribute, item); + pInfo.newValue = item; + } + } + return item; //object + }, + + deleteItem: function(/* item */ item){ + // summary: + // Delete an dojox.data.XmlItem (wrapper to a XML element). + // item: + // An XML element to delete + // returns: + // True + var element = item.element; + if(element.parentNode){ + this._backupItem(item); + element.parentNode.removeChild(element); + return true; + } + this._forgetItem(item); + this._deletedItems.push(item); + return true; //boolean + }, + + setValue: function(/* item */ item, /* attribute || string */ attribute, /* almost anything */ value){ + // summary: + // Set an attribute value + // description: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // If 'attribute' specifies "tagName", nothing is set and false is + // returned. + // If 'attribute' specifies "childNodes", the value (XML element) is + // added to the element. + // If 'attribute' specifies "text()", a text node is created with + // the value and set it to the element as a child. + // For generic attributes, if '_attributeMap' is specified, + // an actual attribute name is looked up with the tag name of + // the element and 'attribute' (concatenated with '.'). + // Then, if 'attribute' starts with "@", the value is set to the XML + // attribute. + // Otherwise, a text node is created with the value and set it to + // the first child element of the tag name specified with 'attribute'. + // If the child element does not exist, it is created. + // item: + // An XML element that holds the attribute + // attribute: + // A tag name of a child element, An XML attribute name or one of + // special names + // value: + // A attribute value to set + // returns: + // False for "tagName", otherwise true + if(attribute === "tagName"){ + return false; //boolean + } + + this._backupItem(item); + + var element = item.element; + var child; + var text; + if(attribute === "childNodes"){ + child = value.element; + element.appendChild(child); + }else if(attribute === "text()"){ + while(element.firstChild){ + element.removeChild(element.firstChild); + } + text = this._getDocument(element).createTextNode(value); + element.appendChild(text); + }else{ + attribute = this._getAttribute(element.nodeName, attribute); + if(attribute.charAt(0) === '@'){ + var name = attribute.substring(1); + element.setAttribute(name, value); + }else{ + for(var i = 0; i < element.childNodes.length; i++){ + var node = element.childNodes[i]; + if( node.nodeType === 1 /*ELEMENT_NODE*/ && + node.nodeName === attribute){ + child = node; + break; + } + } + var document = this._getDocument(element); + if(child){ + while(child.firstChild){ + child.removeChild(child.firstChild); + } + }else{ + child = document.createElement(attribute); + element.appendChild(child); + } + text = document.createTextNode(value); + child.appendChild(text); + } + } + return true; //boolean + }, + + setValues: function(/* item */ item, /* attribute || string */ attribute, /*array*/ values){ + // summary: + // Set attribute values + // description: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // If 'attribute' specifies "tagName", nothing is set and false is + // returned. + // If 'attribute' specifies "childNodes", the value (array of XML + // elements) is set to the element's childNodes. + // If 'attribute' specifies "text()", a text node is created with + // the values and set it to the element as a child. + // For generic attributes, if '_attributeMap' is specified, + // an actual attribute name is looked up with the tag name of + // the element and 'attribute' (concatenated with '.'). + // Then, if 'attribute' starts with "@", the first value is set to + // the XML attribute. + // Otherwise, child elements of the tag name specified with + // 'attribute' are replaced with new child elements and their + // child text nodes of values. + // item: + // An XML element that holds the attribute + // attribute: + // A tag name of child elements, an XML attribute name or one of + // special names + // value: + // A attribute value to set + // notify: + // A non-API optional argument, used to indicate if notification API should be called + // or not. + + // returns: + // False for "tagName", otherwise true + if(attribute === "tagName"){ + return false; //boolean + } + + this._backupItem(item); + + var element = item.element; + var i; + var child; + var text; + if(attribute === "childNodes"){ + while(element.firstChild){ + element.removeChild(element.firstChild); + } + for(i = 0; i < values.length; i++){ + child = values[i].element; + element.appendChild(child); + } + }else if(attribute === "text()"){ + while(element.firstChild){ + element.removeChild(element.firstChild); + } + var value = ""; + for(i = 0; i < values.length; i++){ + value += values[i]; + } + text = this._getDocument(element).createTextNode(value); + element.appendChild(text); + }else{ + attribute = this._getAttribute(element.nodeName, attribute); + if(attribute.charAt(0) === '@'){ + var name = attribute.substring(1); + element.setAttribute(name, values[0]); + }else{ + for(i = element.childNodes.length - 1; i >= 0; i--){ + var node = element.childNodes[i]; + if( node.nodeType === 1 /*ELEMENT_NODE*/ && + node.nodeName === attribute){ + element.removeChild(node); + } + } + var document = this._getDocument(element); + for(i = 0; i < values.length; i++){ + child = document.createElement(attribute); + text = document.createTextNode(values[i]); + child.appendChild(text); + element.appendChild(child); + } + } + } + return true; //boolean + }, + + unsetAttribute: function(/* item */ item, /* attribute || string */ attribute){ + // summary: + // Remove an attribute + // description: + // 'item' must be an instance of a dojox.data.XmlItem from the store instance. + // 'attribute' can be an XML attribute name of the element or one of + // special names described below. + // If 'attribute' specifies "tagName", nothing is removed and false is + // returned. + // If 'attribute' specifies "childNodes" or "text()", all child nodes + // are removed. + // For generic attributes, if '_attributeMap' is specified, + // an actual attribute name is looked up with the tag name of + // the element and 'attribute' (concatenated with '.'). + // Then, if 'attribute' starts with "@", the XML attribute is removed. + // Otherwise, child elements of the tag name specified with + // 'attribute' are removed. + // item: + // An XML element that holds the attribute + // attribute: + // A tag name of child elements, an XML attribute name or one of + // special names + // returns: + // False for "tagName", otherwise true + if(attribute === "tagName"){ + return false; //boolean + } + + this._backupItem(item); + + var element = item.element; + if(attribute === "childNodes" || attribute === "text()"){ + while(element.firstChild){ + element.removeChild(element.firstChild); + } + }else{ + attribute = this._getAttribute(element.nodeName, attribute); + if(attribute.charAt(0) === '@'){ + var name = attribute.substring(1); + element.removeAttribute(name); + }else{ + for(var i = element.childNodes.length - 1; i >= 0; i--){ + var node = element.childNodes[i]; + if( node.nodeType === 1 /*ELEMENT_NODE*/ && + node.nodeName === attribute){ + element.removeChild(node); + } + } + } + } + return true; //boolean + }, + + save: function(/* object */ keywordArgs){ + // summary: + // Save new and/or modified items (XML elements) + // description: + // 'url' is used to save XML documents for new, modified and/or + // deleted XML elements. + // keywordArgs: + // An object for callbacks + if(!keywordArgs){ + keywordArgs = {}; + } + var i; + for(i = 0; i < this._modifiedItems.length; i++){ + this._saveItem(this._modifiedItems[i], keywordArgs, "PUT"); + } + for(i = 0; i < this._newItems.length; i++){ + var item = this._newItems[i]; + if(item.element.parentNode){ // reparented + this._newItems.splice(i, 1); + i--; + continue; + } + this._saveItem(this._newItems[i], keywordArgs, "POST"); + } + for(i = 0; i < this._deletedItems.length; i++){ + this._saveItem(this._deletedItems[i], keywordArgs, "DELETE"); + } + }, + + revert: function(){ + // summary: + // Invalidate changes (new and/or modified elements) + // returns: + // True + this._newItems = []; + this._restoreItems(this._deletedItems); + this._deletedItems = []; + this._restoreItems(this._modifiedItems); + this._modifiedItems = []; + return true; //boolean + }, + + isDirty: function(/* item? */ item){ + // summary: + // Check whether an item is new, modified or deleted + // description: + // If 'item' is specified, true is returned if the item is new, + // modified or deleted. + // Otherwise, true is returned if there are any new, modified + // or deleted items. + // item: + // An item (XML element) to check + // returns: + // True if an item or items are new, modified or deleted, otherwise + // false + if(item){ + var element = this._getRootElement(item.element); + return (this._getItemIndex(this._newItems, element) >= 0 || + this._getItemIndex(this._deletedItems, element) >= 0 || + this._getItemIndex(this._modifiedItems, element) >= 0); //boolean + }else{ + return (this._newItems.length > 0 || + this._deletedItems.length > 0 || + this._modifiedItems.length > 0); //boolean + } + }, + + _saveItem: function(item, keywordArgs, method){ + var url; + var scope; + if(method === "PUT"){ + url = this._getPutUrl(item); + }else if(method === "DELETE"){ + url = this._getDeleteUrl(item); + }else{ // POST + url = this._getPostUrl(item); + } + if(!url){ + if(keywordArgs.onError){ + scope = keywordArgs.scope || winUtil.global; + keywordArgs.onError.call(scope, new Error("No URL for saving content: " + this._getPostContent(item))); + } + return; + } + + var saveArgs = { + url: url, + method: (method || "POST"), + contentType: "text/xml", + handleAs: "xml" + }; + var saveHandler; + if(method === "PUT"){ + saveArgs.putData = this._getPutContent(item); + saveHandler = xhr.put(saveArgs); + }else if(method === "DELETE"){ + saveHandler = xhr.del(saveArgs); + }else{ // POST + saveArgs.postData = this._getPostContent(item); + saveHandler = xhr.post(saveArgs); + } + scope = (keywordArgs.scope || winUtil. global); + var self = this; + saveHandler.addCallback(function(data){ + self._forgetItem(item); + if(keywordArgs.onComplete){ + keywordArgs.onComplete.call(scope); + } + }); + saveHandler.addErrback(function(error){ + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, error); + } + }); + }, + + _getPostUrl: function(item){ + // summary: + // Generate a URL for post + // description: + // This default implementation just returns 'url'. + // Sub-classes may override this method for the custom URL. + // item: + // An item to save + // returns: + // A post URL + return this.url; //string + }, + + _getPutUrl: function(item){ + // summary: + // Generate a URL for put + // description: + // This default implementation just returns 'url'. + // Sub-classes may override this method for the custom URL. + // item: + // An item to save + // returns: + // A put URL + return this.url; //string + }, + + _getDeleteUrl: function(item){ + // summary: + // Generate a URL for delete + // description: + // This default implementation returns 'url' with 'keyAttribute' + // as a query string. + // Sub-classes may override this method for the custom URL based on + // changes (new, deleted, or modified). + // item: + // An item to delete + // returns: + // A delete URL + var url = this.url; + if(item && this.keyAttribute !== ""){ + var value = this.getValue(item, this.keyAttribute); + if(value){ + var key = this.keyAttribute.charAt(0) ==='@' ? this.keyAttribute.substring(1): this.keyAttribute; + url += url.indexOf('?') < 0 ? '?' : '&'; + url += key + '=' + value; + } + } + return url; //string + }, + + _getPostContent: function(item){ + // summary: + // Generate a content to post + // description: + // This default implementation generates an XML document for one + // (the first only) new or modified element. + // Sub-classes may override this method for the custom post content + // generation. + // item: + // An item to save + // returns: + // A post content + return "" + xmlParser.innerXML(item.element); //XML string + }, + + _getPutContent: function(item){ + // summary: + // Generate a content to put + // description: + // This default implementation generates an XML document for one + // (the first only) new or modified element. + // Sub-classes may override this method for the custom put content + // generation. + // item: + // An item to save + // returns: + // A post content + return "" + xmlParser.innerXML(item.element); //XML string + }, + +/* internal API */ + + _getAttribute: function(tagName, attribute){ + if(this._attributeMap){ + var key = tagName + "." + attribute; + var value = this._attributeMap[key]; + if(value){ + attribute = value; + }else{ // look for global attribute + value = this._attributeMap[attribute]; + if(value){ + attribute = value; + } + } + } + return attribute; //object + }, + + _getItem: function(element){ + try{ + var q = null; + //Avoid function call if possible. + if(this.keyAttribute === ""){ + q = this._getXPath(element); + } + return new XmlItem(element, this, q); //object + }catch (e){ + console.log(e); + } + return null; + }, + + _getItemIndex: function(items, element){ + for(var i = 0; i < items.length; i++){ + if(items[i].element === element){ + return i; //int + } + } + return -1; //int + }, + + _backupItem: function(item){ + var element = this._getRootElement(item.element); + if( this._getItemIndex(this._newItems, element) >= 0 || + this._getItemIndex(this._modifiedItems, element) >= 0){ + return; // new or already modified + } + if(element != item.element){ + item = this._getItem(element); + } + item._backup = element.cloneNode(true); + this._modifiedItems.push(item); + }, + + _restoreItems: function(items){ + + array.forEach(items,function(item){ + if(item._backup){ + item.element = item._backup; + item._backup = null; + } + },this); + }, + + _forgetItem: function(item){ + var element = item.element; + var index = this._getItemIndex(this._newItems, element); + if(index >= 0){ + this._newItems.splice(index, 1); + } + index = this._getItemIndex(this._deletedItems, element); + if(index >= 0){ + this._deletedItems.splice(index, 1); + } + index = this._getItemIndex(this._modifiedItems, element); + if(index >= 0){ + this._modifiedItems.splice(index, 1); + } + }, + + _getDocument: function(element){ + if(element){ + return element.ownerDocument; //DOMDocument + }else if(!this._document){ + return xmlParser.parse(); // DOMDocument + } + return null; //null + }, + + _getRootElement: function(element){ + while(element.parentNode){ + element = element.parentNode; + } + return element; //DOMElement + }, + + _getXPath: function(element){ + // summary: + // A function to compute the xpath of a node in a DOM document. + // description: + // A function to compute the xpath of a node in a DOM document. Used for + // Client side query handling and identity. + var xpath = null; + if(!this.sendQuery){ + //xpath should be null for any server queries, as we don't have the entire + //XML dom to figure it out. + var node = element; + xpath = ""; + while(node && node != element.ownerDocument){ + var pos = 0; + var sibling = node; + var name = node.nodeName; + while(sibling){ + sibling = sibling.previousSibling; + if(sibling && sibling.nodeName === name){ + pos++; + } + } + var temp = "/" + name + "[" + pos + "]"; + if(xpath){ + xpath = temp + xpath; + }else{ + xpath = temp; + } + node = node.parentNode; + } + } + return xpath; //string + }, + + /************************************* + * Dojo.data Identity implementation * + *************************************/ + getIdentity: function(/* item */ item){ + // summary: + // Returns a unique identifier for an item. + // item: + // The XML Item from the store from which to obtain its identifier. + if(!this.isItem(item)){ + throw new Error("dojox.data.XmlStore: Object supplied to getIdentity is not an item"); + }else{ + var id = null; + if(this.sendQuery && this.keyAttribute !== ""){ + id = this.getValue(item, this.keyAttribute).toString(); + }else if(!this.serverQuery){ + if(this.keyAttribute !== ""){ + id = this.getValue(item,this.keyAttribute).toString(); + }else{ + //No specified identity, so return the dojo.query/xpath + //for the node as fallback. + id = item.q; + } + } + return id; //String. + } + }, + + getIdentityAttributes: function(/* item */ item){ + // summary: + // Returns an array of attribute names that are used to generate the identity. + // description: + // For XmlStore, if sendQuery is false and no keyAttribute was set, then this function + // returns null, as xpath is used for the identity, which is not a public attribute of + // the item. If sendQuery is true and keyAttribute is set, then this function + // returns an array of one attribute name: keyAttribute. This means the server side + // implementation must apply a keyAttribute to a returned node that always allows + // it to be looked up again. + // item: + // The item from the store from which to obtain the array of public attributes that + // compose the identifier, if any. + if(!this.isItem(item)){ + throw new Error("dojox.data.XmlStore: Object supplied to getIdentity is not an item"); + }else{ + if(this.keyAttribute !== ""){ + return [this.keyAttribute]; //array + }else{ + //Otherwise it's either using xpath (not an attribute), or the remote store + //doesn't support identity. + return null; //null + } + } + }, + + + fetchItemByIdentity: function(/* object */ keywordArgs){ + // summary: + // See dojo.data.api.Identity.fetchItemByIdentity(keywordArgs) + var handleDocument = null; + var scope = null; + var self = this; + var url = null; + var getArgs = null; + var getHandler = null; + + if(!self.sendQuery){ + handleDocument = function(data){ + if(data){ + if(self.keyAttribute !== ""){ + //We have a key attribute specified. So ... we can process the items and locate the item + //that contains a matching key attribute. Its identity, as it were. + var request = {}; + request.query={}; + request.query[self.keyAttribute] = keywordArgs.identity; + request.queryOptions = {deep: true}; + var items = self._getItems(data,request); + scope = keywordArgs.scope || winUtil.global; + if(items.length === 1){ + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, items[0]); + } + }else if(items.length === 0){ + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, null); + } + }else{ + if(keywordArgs.onError){ + keywordArgs.onError.call(scope, new Error("Items array size for identity lookup greater than 1, invalid keyAttribute.")); + } + } + }else{ + //Since dojo.query doesn't really support the functions needed + //to do child node selection on IE well and since xpath support + //is flakey across browsers, it's simpler to implement a + //pseudo-xpath parser here. + var qArgs = keywordArgs.identity.split("/"); + var i; + var node = data; + for(i = 0; i < qArgs.length; i++){ + if(qArgs[i] && qArgs[i] !== ""){ + var section = qArgs[i]; + section = section.substring(0,section.length - 1); + var vals = section.split("["); + var tag = vals[0]; + var index = parseInt(vals[1], 10); + var pos = 0; + if(node){ + var cNodes = node.childNodes; + if(cNodes){ + var j; + var foundNode = null; + for(j = 0; j < cNodes.length; j++){ + var pNode = cNodes[j]; + if(pNode.nodeName === tag){ + if(pos < index){ + pos++; + }else{ + foundNode = pNode; + break; + } + } + } + if(foundNode){ + node = foundNode; + }else{ + node = null; + } + }else{ + node = null; + } + }else{ + break; + } + } + } + //Return what we found, if any. + var item = null; + if(node){ + item = self._getItem(node); + if(item.element.parentNode){ + item.element.parentNode.removeChild(item.element); + } + } + if(keywordArgs.onItem){ + scope = keywordArgs.scope || winUtil.global; + keywordArgs.onItem.call(scope, item); + } + } + } + }; + url = this._getFetchUrl(null); + getArgs = { + url: url, + handleAs: "xml", + preventCache: self.urlPreventCache + }; + getHandler = xhr.get(getArgs); + + //Add in the callbacks for completion of data load. + getHandler.addCallback(handleDocument); + if(keywordArgs.onError){ + getHandler.addErrback(function(error){ + var s = keywordArgs.scope || winUtil.global; + keywordArgs.onError.call(s, error); + }); + } + }else{ + //Server side querying, so need to pass the keyAttribute back to the server and let it return + //what it will. It SHOULD be only one item. + if(self.keyAttribute !== ""){ + var request = {query:{}}; + request.query[self.keyAttribute] = keywordArgs.identity; + url = this._getFetchUrl(request); + handleDocument = function(data){ + var item = null; + if(data){ + var items = self._getItems(data, {}); + if(items.length === 1){ + item = items[0]; + }else{ + if(keywordArgs.onError){ + var scope = keywordArgs.scope || winUtil.global; + keywordArgs.onError.call(scope, new Error("More than one item was returned from the server for the denoted identity")); + } + } + } + if(keywordArgs.onItem){ + scope = keywordArgs.scope || winUtil.global; + keywordArgs.onItem.call(scope, item); + } + }; + + getArgs = { + url: url, + handleAs: "xml", + preventCache: self.urlPreventCache + }; + getHandler = xhr.get(getArgs); + + //Add in the callbacks for completion of data load. + getHandler.addCallback(handleDocument); + if(keywordArgs.onError){ + getHandler.addErrback(function(error){ + var s = keywordArgs.scope || winUtil.global; + keywordArgs.onError.call(s, error); + }); + } + }else{ + if(keywordArgs.onError){ + var s = keywordArgs.scope || winUtil.global; + keywordArgs.onError.call(s, new Error("XmlStore is not told that the server to provides identity support. No keyAttribute specified.")); + } + } + } + } +}); + +lang.extend(XmlStore,simpleFetch); + +return XmlStore; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/css.js b/js/dojo-release-1.7.2-src/dojox/data/css.js new file mode 100755 index 0000000..bae0691 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/css.js @@ -0,0 +1,106 @@ +define(["dojo/_base/lang", "dojo/_base/array"], + function(lang, array) { + +var css = lang.getObject("dojox.data.css",true) + +css.rules = {}; + +css.rules.forEach = function(fn,ctx,context){ + if(context){ + var _processSS = function(styleSheet){ + //iterate across rules in the stylesheet + array.forEach(styleSheet[styleSheet.cssRules?"cssRules":"rules"], function(rule){ + if(!rule.type || rule.type !== 3){// apply fn to current rule with approp ctx. rule is arg (all browsers) + var href = ""; + if(styleSheet && styleSheet.href){ + href = styleSheet.href; + } + fn.call(ctx?ctx:this,rule, styleSheet, href); + } + }); + //process any child stylesheets + }; + array.forEach(context,_processSS); + } +}; + +css.findStyleSheets = function(sheets){ + // Takes an array of stylesheet paths and finds the currently loaded StyleSheet objects matching + // those names + var sheetObjects = []; + var _processSS = function(styleSheet){ + var s = css.findStyleSheet(styleSheet); + if(s){ + array.forEach(s, function(sheet){ + if(array.indexOf(sheetObjects, sheet) === -1){ + sheetObjects.push(sheet); + } + }); + } + }; + array.forEach(sheets, _processSS); + return sheetObjects; +}; + +css.findStyleSheet = function(sheet){ + // Takes a stylesheet path and finds the currently loaded StyleSheet objects matching + // those names (and it's parent(s), if it is imported from another) + var sheetObjects = []; + if(sheet.charAt(0) === '.'){ + sheet = sheet.substring(1); + } + var _processSS = function(styleSheet){ + if(styleSheet.href && styleSheet.href.match(sheet)){ + sheetObjects.push(styleSheet); + return true; + } + if(styleSheet.imports){ + return array.some(styleSheet.imports, function(importedSS){ //IE stylesheet has imports[] containing @import'ed rules + //console.debug("Processing IE @import rule",importedSS); + return _processSS(importedSS); + }); + } + //iterate across rules in the stylesheet + return array.some(styleSheet[styleSheet.cssRules?"cssRules":"rules"], function(rule){ + if(rule.type && rule.type === 3 && _processSS(rule.styleSheet)){// CSSImportRule (firefox) + //sheetObjects.push(styleSheet); + return true; + } + return false; + }); + }; + array.some(document.styleSheets, _processSS); + return sheetObjects; +}; + +css.determineContext = function(initialStylesheets){ + // Takes an array of stylesheet paths and returns an array of all stylesheets that fall in the + // given context. If no paths are given, all stylesheets are returned. + var ret = []; + if(initialStylesheets && initialStylesheets.length > 0){ + initialStylesheets = css.findStyleSheets(initialStylesheets); + }else{ + initialStylesheets = document.styleSheets; + } + var _processSS = function(styleSheet){ + ret.push(styleSheet); + if(styleSheet.imports){ + array.forEach(styleSheet.imports, function(importedSS){ //IE stylesheet has imports[] containing @import'ed rules + //console.debug("Processing IE @import rule",importedSS); + _processSS(importedSS); + }); + } + //iterate across rules in the stylesheet + array.forEach(styleSheet[styleSheet.cssRules?"cssRules":"rules"], function(rule){ + if(rule.type && rule.type === 3){// CSSImportRule (firefox) + _processSS(rule.styleSheet); + } + }); + }; + array.forEach(initialStylesheets,_processSS); + return ret; +}; + +return css; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleFeedTemplate.html b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleFeedTemplate.html new file mode 100644 index 0000000..2d18fca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleFeedTemplate.html @@ -0,0 +1,26 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as google %} +
                            +{% for item in google %} +
                          • +
                            + {{item.title}} + +
                            +
                            + {{item.summary}} +
                            +
                            + + Tags: + + {{cat}} + + +
                            +
                          • +{% endfor %} +
                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplate.html b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplate.html new file mode 100644 index 0000000..a87d107 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplate.html @@ -0,0 +1,7 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as google %} +{% for item in google %} + + {{item.titleNoFormatting}} + +{% endfor %} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateBlog.html b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateBlog.html new file mode 100644 index 0000000..4d67548 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateBlog.html @@ -0,0 +1,7 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as google %} +{% for item in google %} + + {{item.titleNoFormatting}} + +{% endfor %} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateImage.html b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateImage.html new file mode 100644 index 0000000..37088d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateImage.html @@ -0,0 +1,7 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as google %} +{% for item in google %} + + {{item.contentNoFormatting}} + +{% endfor %} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateLocal.html b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateLocal.html new file mode 100644 index 0000000..da37f90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateLocal.html @@ -0,0 +1,7 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as google %} +{% for item in google %} + + + +{% endfor %} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateVideo.html b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateVideo.html new file mode 100644 index 0000000..0600db0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/GoogleTemplateVideo.html @@ -0,0 +1,7 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as google %} +{% for item in google %} + + + +{% endfor %} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_CssStores_combo_tree_grid.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_CssStores_combo_tree_grid.html new file mode 100755 index 0000000..22cf65a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_CssStores_combo_tree_grid.html @@ -0,0 +1,94 @@ + + + + + Demo: dojox.data.CssClassStore + + + + + + + + +

                          + Demo: Demo of using the Css Stores to browse the loaded CSS classes and associated rules. +

                          +

                          This demo demonstrates hooking up the Css*Stores to the various digit widgets to browse the Css loaded for the page.

                          +
                          + +
                          +
                          + + +
                          +
                          + +

                          dojox.data.CssClassStore connected to ComboBox and querying on classSans:

                          +
                          + +

                          dojox.data.CssRuleStore:

                          + Displays the list of CSS rules filtered by the class selected in the ComboBox. +
                          +
                          + +

                          dojox.data.CssClassStore connected to Tree:

                          + +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_DataDemoTable.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_DataDemoTable.html new file mode 100644 index 0000000..9c594c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_DataDemoTable.html @@ -0,0 +1,143 @@ + + + + Dojo Visual Loader Test + + + + + + + + + + +

                          Dojox Data Demo Table

                          + + + + + + + + + + + + + + +
                          + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FileStore_dojotree.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FileStore_dojotree.html new file mode 100755 index 0000000..e134361 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FileStore_dojotree.html @@ -0,0 +1,119 @@ + + + + + Demo: dojox.data.FileStore + + + + + + + + +

                          + Demo: Lazy Loading File Browsing Store +

                          +

                          The tree below uses the dojox.data.FileStore and a PHP implementation for the serverside to browse the dojo tree hierarchy in a lazy-load fashion.

                          +

                          This demo must be run from a web-server with PHP support enabled. Without PHP support, this demo cannot function. The Demo also requires PHP + support for json_encode and json_decode. Please be sure to have those packages installed in your PHP environment.

                          +
                          + Clicking on a file in the tree will display the details about that file. +
                          +
                          + + + + + + + + + +
                          + + + + +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FileStore_dojoxdata_combo_grid.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FileStore_dojoxdata_combo_grid.html new file mode 100755 index 0000000..c4eae5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FileStore_dojoxdata_combo_grid.html @@ -0,0 +1,157 @@ + + + + + Demo: dojox.data.FileStore + + + + + + + + +

                          + Demo: Lazy Loading File Browsing Store connected to multiple widgets +

                          +

                          All the widgets used in this demo connect to the same filestore instance. It is talking to a filestore rooted in the dojox/data/ sub-directory to make it fast handling when querying across all files.

                          +

                          This demo must be run from a web-server with PHP support enabled. Without PHP support, this demo cannot function. The Demo also requires PHP + support for json_encode and json_decode. Please be sure to have those packages installed in your PHP environment.

                          +
                          + +
                          +
                          + + +

                          dojox.data.FileStore connected to ComboBox and querying on path:

                          +
                          + + +

                          dojox.data.FileStore connected to Grid and displaying all files:

                          +
                          +
                          + +
                          +
                          + + +

                          dojox.data.FileStore connected to Tree:

                          + Clicking on a file in the tree will display the details about that file. + + + + + + + + +
                          + + + + +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FlickrRestStore.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FlickrRestStore.html new file mode 100644 index 0000000..5774c76 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FlickrRestStore.html @@ -0,0 +1,236 @@ + + + + Demo of FlickrRestStore + + + + + + + +

                          + DEMO: FlickrRestStore Search +

                          +
                          +

                          + Description: +

                          +

                          + This simple demo shows how services, such as Flickr, can be wrapped by the datastore API. + In this demo, you can search public Flickr images through a FlickrRestStore by specifying + a series of tags (separated by spaces) to search on. The results will be displayed below the search box. +

                          +

                          + For fun, search on the 3dny tag! +

                          + +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + Status: + +
                          +
                          + User ID: + +
                          +
                          + Set ID + +
                          +
                          + Tags: + +
                          +
                          + Full Text + +
                          +
                          + Tagmode: + + + + Sort + + + +
                          + Number of Pictures: + +
                          +
                          + Page: + +
                          +
                          + +
                          +
                          +
                          +
                          +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FlickrStore.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FlickrStore.html new file mode 100644 index 0000000..0adf8d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_FlickrStore.html @@ -0,0 +1,161 @@ + + + + Demo of FlickrStore + + + + + + + +

                          + DEMO: FlickrStore Search +

                          +

                          + This simple demo shows how services, such as Flickr, can be wrapped by + the datastore API. In this demo, you can search public Flickr images + through a simple FlickrStore by specifying a series of tags (separated + by spaces) to search on. The results will be displayed below the + search box. +

                          + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          + Status: + +
                          +
                          + ID: + +
                          +
                          + Tags: + +
                          +
                          + Tagmode: + + +
                          + Number of Pictures: + +
                          +
                          + +
                          +
                          + +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleFeedStore.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleFeedStore.html new file mode 100644 index 0000000..6a4d115 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleFeedStore.html @@ -0,0 +1,113 @@ + + + + + + Google Feed Store + + + + + +
                          + Text: + Count: + + +
                          + +
                          +
                          + +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleSearchStore.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleSearchStore.html new file mode 100644 index 0000000..b82b334 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleSearchStore.html @@ -0,0 +1,125 @@ + + + + + + Google Search store + + + + + +
                          + Text: + Count: + + Type + +
                          + +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleSearchStore_Grid.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleSearchStore_Grid.html new file mode 100644 index 0000000..99dacaa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_GoogleSearchStore_Grid.html @@ -0,0 +1,71 @@ + + + + + + Google Search Store with Grid + + + + + +

                          dojox.data.GoogleSearchStore:

                          + Displays a list of results from a google query. +
                          +
                          +
                          +
                          + +
                          +
                          +
                          + +
                          +
                          + + +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_LazyLoad.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_LazyLoad.html new file mode 100644 index 0000000..358ce84 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_LazyLoad.html @@ -0,0 +1,66 @@ + + + + Demo of Lazy Loading Datastore + + + + + + + +

                          + DEMO: Lazy Loading Datastore used by dijit.Tree +

                          +
                          +

                          + Description: +

                          +

                          + This simple demo shows how the dijit.Tree widget can work with a Datastore that does lazy-loading of values into the tree. + In this demo, the Datastore is an extension of ItemFileReadStore that overrides the isItemLoaded() and loadItem() functions of + with ones that can detect 'stub' items and use the data in the stub item to load the real data for that item when it + is required. In this demo, the real data is required when one of the tree nodes is expanded. +

                          +

                          + The key thing to note is that all the lazy-loading logic (how to locate the data from the backend and so forth) is encapsulated + into the store functions. The dijit.Tree widget only knows about and uses the dojo.data.Read API interfaces to call to the store to + get items, test if child items are fully loaded or not, and to invoke the loadItem() function on items that are not yet fully + loaded but have been requested to be expanded into view. It has no knowledge of how the store actually goes and gets the data. +

                          + +
                          + + +
                          + + + Continents +
                          +
                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_MultiStores.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_MultiStores.html new file mode 100644 index 0000000..29ede27 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_MultiStores.html @@ -0,0 +1,116 @@ + + + + Demo of Multiple Widgets using different Datastores + + + + + + + +

                          + DEMO: Multiple DataStore implementations with dojo.data aware Widgets +

                          +
                          +

                          + Description: +

                          +

                          + This simple demo shows how widgets which know only the dojo.data interfaces can work with data sources of varying formats. In this case an OpmlStore + and a ItemFileReadStore are used to house the same data in different formats. +

                          + +
                          + + +
                          +
                          +
                          + +

                          + Widgets using OpmlStore: +

                          +
                          + ComboBox:
                          + +
                          +
                          + Filtering Select:
                          + +
                          +
                          + + Tree:
                          +
                          +
                          +
                          +
                          + +

                          + Widgets using ItemFileReadStore: +

                          +
                          + ComboBox:
                          + +
                          +
                          + + Filtering Select:
                          + +
                          +
                          + + Tree:
                          +
                          +
                          +
                          +
                          + +

                          + Widgets using XmlStore: +

                          +
                          + ComboBox:
                          + +
                          +
                          + + Filtering Select:
                          + +
                          +
                          + + Tree:
                          +
                          +
                          +
                          +
                          +
                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_OpenSearchStore.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_OpenSearchStore.html new file mode 100644 index 0000000..e8bcc13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_OpenSearchStore.html @@ -0,0 +1,215 @@ + + + + Demo of OpenSearchStore + + + + + + + + +

                          DEMO: OpenSearchStore Search

                          +
                          +

                          Description:

                          +

                          + This simple demo shows how services, such as an OpenSearch compliant search service, can be wrapped by the datastore API. In this demo, you can search public search engines through a simple OpenSearchStore by specifying a series of search terms (separated by spaces) to search on. The results will be displayed below the search box. +

                          +

                          + NOTE: This demo makes use of a simple PHP based proxy script. The proxy script requires cURL support in PHP. Without cURL support, the demo will throw errors. +

                          + + + + + +
                          + +
                          + +
                          + +
                          +
                          +
                          +
                          +
                          +
                          +
                            + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_PicasaStore.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_PicasaStore.html new file mode 100644 index 0000000..47f73a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_PicasaStore.html @@ -0,0 +1,190 @@ + + + + Demo of PicasaStore + + + + + + + +

                            + DEMO: PicasaStore Search +

                            +
                            +

                            + Description: +

                            +

                            + This simple demo shows how services, such as Picasa, can be wrapped by the datastore API. In this demo, you can search public Picasa images through a simple PicasaStore by specifying a series of tags (separated by spaces) to search on. The results will be displayed below the search box. +

                            +

                            + For fun, search on the 3dny tag! +

                            + +
                            + + + + + + + + + + + + + + + + + + + + + + + + + +
                            + Status: + +
                            +
                            + ID: + +
                            +
                            + Query: + +
                            +
                            + Number of Pictures: + +
                            +
                            +
                            + +
                            +
                            +
                            +
                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_ComboBox.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_ComboBox.html new file mode 100644 index 0000000..6be9265 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_ComboBox.html @@ -0,0 +1,58 @@ + + + + Dojox QueryReadStore+ComboBox Demo + + + + + + +

                            Dojox QueryReadStore + ComboBox demo

                            + +

                            Everything is created ONLY in markup

                            +
                            +
                            +
                            +
                            + +
                            +
                            + var w = dijit.byId("cb1"); +
                            = w.value +
                            = w.item ? w.store.getValue(w.item, "id") : "-" +
                            = w.attr("displayedValue") +
                            = w.isValid() +
                            +
                            +
                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_FilteringSelect.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_FilteringSelect.html new file mode 100644 index 0000000..6f89167 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_FilteringSelect.html @@ -0,0 +1,56 @@ + + + + Dojox QueryReadStore+FilteringSelect Demo + + + + + + +

                            Dojox QueryReadStore + FilteringSelect demo

                            + +

                            Everything is created ONLY in markup

                            +
                            +
                            +
                            + +
                            +
                            + var w = dijit.byId("fs1"); +
                            = w.value +
                            = w.item ? w.store.getValue(w.item, "id") : "-" +
                            = w.getDisplayedValue() +
                            = w.isValid() +
                            +
                            + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_grid.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_grid.html new file mode 100644 index 0000000..7035ebd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_QueryReadStore_grid.html @@ -0,0 +1,110 @@ + + + + Dojox QueryReadStore+grid Demo + + + + + + + +

                            Dojox QueryReadStore + Grid demo - paging, sortable and filterable all server-side

                            + +

                            The grid is in HTML, store, etc. are JS, sorting is added by extending the model class

                            + Capabilities: load data from server, show data, paging (30 rows at a time), sort, filter
                            + You can see that data are loaded upon demand by scrolling down in the grid below line #30, + open FireBug and you see a server request being issued, to retreive another 30 rows/items.
                            +

                            + +
                            + +

                            The store and grid are "generated" and connected in HTML, filtering is done via JS

                            + This store is by default sorted descending by name (not as the one above, which is ascending). +
                            + +
                            + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/demo_WikipediaStore.html b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_WikipediaStore.html new file mode 100644 index 0000000..bc290b0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/demo_WikipediaStore.html @@ -0,0 +1,82 @@ + + + +Wikipedia Data Store + + + + + + +
                            +

                            + Text: + Count: + +

                            + +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography.json new file mode 100644 index 0000000..c2f01bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography.json @@ -0,0 +1,45 @@ +{ identifier: 'name', + label: 'name', + items: [ + { name:'Africa', type:'continent', children:[ + { name:'Egypt', type:'country' }, + { name:'Kenya', type:'country', children:[ + { name:'Nairobi', type:'city' }, + { name:'Mombasa', type:'city' } ] + }, + { name:'Sudan', type:'country', children: + { name:'Khartoum', type:'city' } + } ] + }, + { name:'Asia', type:'continent', children:[ + { name:'China', type:'country' }, + { name:'India', type:'country' }, + { name:'Russia', type:'country' }, + { name:'Mongolia', type:'country' } ] + }, + { name:'Australia', type:'continent', population:'21 million', children: + { name:'Commonwealth of Australia', type:'country', population:'21 million'} + }, + { name:'Europe', type:'continent', children:[ + { name:'Germany', type:'country' }, + { name:'France', type:'country' }, + { name:'Spain', type:'country' }, + { name:'Italy', type:'country' } ] + }, + { name:'North America', type:'continent', children:[ + { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', children:[ + { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, + { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' } ] + }, + { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', children:[ + { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, + { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }] + }, + { name:'United States of America', type:'country' } ] + }, + { name:'South America', type:'continent', children:[ + { name:'Brazil', type:'country', population:'186 million' }, + { name:'Argentina', type:'country', population:'40 million' } ] + } ] +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography.xml b/js/dojo-release-1.7.2-src/dojox/data/demos/geography.xml new file mode 100644 index 0000000..070a8c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography.xml @@ -0,0 +1,51 @@ + + + + geography.opml + 2006-11-10 + 2006-11-13 + Magellan, Ferdinand + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Argentina/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Argentina/data.json new file mode 100644 index 0000000..17ba291 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Argentina/data.json @@ -0,0 +1,5 @@ +{ + name:'Argentina', + type:'country', + population:'40 million' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Brazil/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Brazil/data.json new file mode 100644 index 0000000..a326c24 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Brazil/data.json @@ -0,0 +1,5 @@ +{ + name:'Brazil', + type:'country', + population:'186 million' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/Ottawa/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/Ottawa/data.json new file mode 100644 index 0000000..df3bbc8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/Ottawa/data.json @@ -0,0 +1,6 @@ +{ + name:'Ottawa', + type:'city', + population:'0.9 million', + timezone:'-5 UTC' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/Toronto/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/Toronto/data.json new file mode 100644 index 0000000..534409b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/Toronto/data.json @@ -0,0 +1,6 @@ +{ + name:'Toronto', + type:'city', + population:'2.5 million', + timezone:'-5 UTC' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/data.json new file mode 100644 index 0000000..6ef34ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Canada/data.json @@ -0,0 +1,10 @@ +{ + name:'Canada', + type:'country', + population:'33 million', area:'9,984,670 sq km', + children:[ + {stub:'Ottawa'}, + {stub:'Toronto'} + ] +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/China/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/China/data.json new file mode 100644 index 0000000..72c29cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/China/data.json @@ -0,0 +1,4 @@ +{ + name:'China', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Commonwealth of Australia/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Commonwealth of Australia/data.json new file mode 100644 index 0000000..e093295 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Commonwealth of Australia/data.json @@ -0,0 +1,5 @@ +{ + name:'Commonwealth of Australia', + type:'country', + population:'21 million' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Egypt/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Egypt/data.json new file mode 100644 index 0000000..d355537 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Egypt/data.json @@ -0,0 +1,5 @@ +{ + name:'Egypt', + type:'country' +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/France/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/France/data.json new file mode 100644 index 0000000..5b5f3c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/France/data.json @@ -0,0 +1,4 @@ +{ + name:'France', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Germany/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Germany/data.json new file mode 100644 index 0000000..1656257 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Germany/data.json @@ -0,0 +1,4 @@ +{ + name:'Germany', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/India/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/India/data.json new file mode 100644 index 0000000..3103f89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/India/data.json @@ -0,0 +1,4 @@ +{ + name:'India', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Italy/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Italy/data.json new file mode 100644 index 0000000..6e6b076 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Italy/data.json @@ -0,0 +1,4 @@ +{ + name:'Italy', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/Mombasa/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/Mombasa/data.json new file mode 100644 index 0000000..28aa849 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/Mombasa/data.json @@ -0,0 +1,5 @@ +{ + name:'Mombasa', + type:'city', + population: "Unknown" +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/Nairobi/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/Nairobi/data.json new file mode 100644 index 0000000..f5658ec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/Nairobi/data.json @@ -0,0 +1,5 @@ +{ + name:'Nairobi', + type:'city', + population: "Unknown" +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/data.json new file mode 100644 index 0000000..9253c25 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Kenya/data.json @@ -0,0 +1,9 @@ +{ + name:'Kenya', + type:'country', + children:[ + {stub:'Nairobi'}, + {stub:'Mombasa'} + ] +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/Guadalajara/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/Guadalajara/data.json new file mode 100644 index 0000000..059fc82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/Guadalajara/data.json @@ -0,0 +1,7 @@ +{ + name:'Guadalajara', + type:'city', + population:'4 million', + timezone:'-6 UTC' +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/Mexico City/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/Mexico City/data.json new file mode 100644 index 0000000..8c67622 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/Mexico City/data.json @@ -0,0 +1,6 @@ +{ + name:'Mexico City', + type:'city', + population:'19 million', + timezone:'-6 UTC' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/data.json new file mode 100644 index 0000000..aa381e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mexico/data.json @@ -0,0 +1,10 @@ +{ + name:'Mexico', + type:'country', + population:'108 million', + area:'1,972,550 sq km', + children:[ + {stub:'Mexico City'}, + {stub:'Guadalajara'} + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mongolia/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mongolia/data.json new file mode 100644 index 0000000..4c60b22 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Mongolia/data.json @@ -0,0 +1,4 @@ +{ + name:'Mongolia', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Russia/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Russia/data.json new file mode 100644 index 0000000..5d9a6ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Russia/data.json @@ -0,0 +1,4 @@ +{ + name:'Russia', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Spain/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Spain/data.json new file mode 100644 index 0000000..d9a1210 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Spain/data.json @@ -0,0 +1,4 @@ +{ + name:'Spain', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Sudan/Khartoum/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Sudan/Khartoum/data.json new file mode 100644 index 0000000..befa3c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Sudan/Khartoum/data.json @@ -0,0 +1,5 @@ +{ + name:'Khartoum', + type:'city' +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Sudan/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Sudan/data.json new file mode 100644 index 0000000..fe7585b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/Sudan/data.json @@ -0,0 +1,6 @@ +{ + name:'Sudan', + type:'country', + children:{stub:'Khartoum'} +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/United States of America/data.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/United States of America/data.json new file mode 100644 index 0000000..7dbdd61 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/United States of America/data.json @@ -0,0 +1,4 @@ +{ + name:'United States of America', + type:'country' +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography/root.json b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/root.json new file mode 100644 index 0000000..dda74f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography/root.json @@ -0,0 +1,39 @@ +{ + identifier: 'name', + label: 'name', + items: [ + { name:'Africa', type:'continent', + children:[{_reference:'Egypt'}, {_reference:'Kenya'}, {_reference:'Sudan'}] }, + { name:'Egypt', type:'stub', parent: 'geography'}, + { name:'Kenya', type:'stub', parent: 'geography'}, + { name:'Sudan', type:'stub', parent: 'geography'}, + + { name:'Asia', type:'continent', + children:[{_reference:'China'}, {_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] }, + { name:'China', type:'stub', parent: 'geography'}, + { name:'India', type:'stub', parent: 'geography'}, + { name:'Russia', type:'stub', parent: 'geography'}, + { name:'Mongolia', type:'stub', parent: 'geography'}, + + { name:'Australia', type:'continent', population:'21 million', + children:{_reference:'Commonwealth of Australia'}}, + { name:'Commonwealth of Australia', type:'stub', parent:'geography'}, + + { name:'Europe', type:'continent', + children:[{_reference:'Germany'}, {_reference:'France'}, {_reference:'Spain'}, {_reference:'Italy'}] }, + { name:'Germany', type:'stub', parent: 'geography'}, + { name:'France', type:'stub', parent: 'geography'}, + { name:'Spain', type:'stub', parent: 'geography'}, + { name:'Italy', type:'stub', parent: 'geography'}, + + { name:'North America', type:'continent', + children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] }, + { name:'Mexico', type:'stub', parent: 'geography'}, + { name:'Canada', type:'stub', parent: 'geography'}, + { name:'United States of America', type:'stub', parent: 'geography'}, + + { name:'South America', type:'continent', + children:[{_reference:'Brazil'}, {_reference:'Argentina'}] }, + { name:'Brazil', type:'stub', parent: 'geography'}, + { name:'Argentina', type:'stub', parent: 'geography'} +]} diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/geography2.xml b/js/dojo-release-1.7.2-src/dojox/data/demos/geography2.xml new file mode 100755 index 0000000..b82c110 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/geography2.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/openSearchProxy.php b/js/dojo-release-1.7.2-src/dojox/data/demos/openSearchProxy.php new file mode 100755 index 0000000..4f66307 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/openSearchProxy.php @@ -0,0 +1,33 @@ +Url){ + foreach($xml->Url as $url){ + $url['template'] = $_SERVER['SCRIPT_NAME'].'?url='.str_replace(array('?', '&'), array(';;;;', '%%%%'), $url['template']); + } + header('Content-Type: text/xml'); + print $xml->asXML(); + } + }else{ + header('Content-Type: '.curl_getinfo($ch, CURLINFO_CONTENT_TYPE)); + print $results; + } +}else{ + header("HTTP/1.0 403 Forbidden"); + header("Status: 403 Forbidden"); + print "Provided URL not allowed by this demo proxy."; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/picasaDemo.css b/js/dojo-release-1.7.2-src/dojox/data/demos/picasaDemo.css new file mode 100644 index 0000000..e274f87 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/picasaDemo.css @@ -0,0 +1,44 @@ +.picasaView { + padding: 3 3 3 3; + border-width: 1px; + border-style: solid; + border-color: #000000; + border-collapse: separate; + width: 100%; +} + +.picasaView th { + text-align: left; +} + +.picasaView tr { + padding: 3 3 3 3; + border-width: 1px; + border-style: solid; + border-color: #000000; +} + +.picasaView tr td { + padding: 3 3 3 3; + border-width: 1px; + border-style: solid; + border-color: #000000; +} + +.picasaView { + background-color: #EFEFEF; + float: left; + width: 250px; + height: 250px; +} + +.picasaSummary { + width: 250px; + height: 30px; + overflow: hidden; + } + +.picasaTitle { + background-color: #CCCCCC; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/stores/LazyLoadJSIStore.js b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/LazyLoadJSIStore.js new file mode 100644 index 0000000..e811e85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/LazyLoadJSIStore.js @@ -0,0 +1,138 @@ +dojo.provide("dojox.data.demos.stores.LazyLoadJSIStore"); +dojo.require("dojo.data.ItemFileReadStore"); + +dojo.declare("dojox.data.demos.stores.LazyLoadJSIStore", dojo.data.ItemFileReadStore, { + constructor: function(/* object */ keywordParameters){ + // LazyLoadJSIStore extends ItemFileReadStore to implement an + // example of lazy-loading/faulting in items on-demand. + // Note this is certianly not a perfect implementation, it is + // an example. + }, + + isItemLoaded: function(/*object*/ item) { + // summary: + // Overload of the isItemLoaded function to look for items of type 'stub', which indicate + // the data hasn't been loaded in yet. + // + // item: + // The item to examine. + + //For this store, if it has the value of stub for its type attribute, + //then the item basn't been fully loaded yet. It's just a placeholder. + if(this.getValue(item, "type") === "stub"){ + return false; + } + return true; + }, + + loadItem: function(keywordArgs){ + // summary: + // Overload of the loadItem function to fault in items. This assumes the data for an item is laid out + // in a RESTful sort of pattern name0/name1/data.json and so on and uses that to load the data. + // It will also detect stub items in the newly loaded item and insert the stubs into the ItemFileReadStore + // list so they can also be loaded in on-demand. + // + // item: + // The item to examine. + + var item = keywordArgs.item; + this._assertIsItem(item); + + //Build the path to the data.json for this item + //The path consists of where its parent was loaded from + //plus the item name. + var itemName = this.getValue(item, "name"); + var parent = this.getValue(item, "parent"); + var dataUrl = ""; + if (parent){ + dataUrl += (parent + "/"); + } + + //For this store, all child input data is loaded from a url that ends with data.json + dataUrl += itemName + "/data.json"; + + //Need a reference to the store to call back to its structures. + var self = this; + + // Callback for handling a successful load. + var gotData = function(data){ + //Now we need to modify the existing item a bit to take it out of stub state + //Since we extend the store and have knowledge of the internal + //structure, this can be done here. Now, is we extended + //a write store, we could call the write APIs to do this too + //But for a simple demo the diretc modification in the store function + //is sufficient. + + //Clear off the stub indicators. + delete item.type; + delete item.parent; + + //Set up the loaded values in the format ItemFileReadStore uses for attributes. + for (var i in data) { + if (dojo.isArray(data[i])) { + item[i] = data[i]; + }else{ + item[i] = [data[i]]; + } + } + + //Reset the item in the reference. + self._arrayOfAllItems[item[self._itemNumPropName]] = item; + + //Scan the new values in the item for extra stub items we need to + //add to the items array of the store so they can be lazy-loaded later... + var attributes = self.getAttributes(item); + for(i in attributes){ + var values = item[attributes[i]]; + for (var j = 0; j < values.length; j++) { + var value = values[j]; + + if(typeof value === "object"){ + if(value["stub"] ){ + //We have a stub reference here, we need to create the stub item + var stub = { + type: ["stub"], + name: [value["stub"]], // + parent: [itemName] //The child stub item is parented by this item name... + }; + if (parent) { + //Add in any parents to your parent so URL construstruction is accurate. + stub.parent[0] = parent + "/" + stub.parent[0]; + } + //Finalize the addition of the new stub item into the ItemFileReadStore list. + self._arrayOfAllItems.push(stub); + stub[self._storeRefPropName] = self; + stub[self._itemNumPropName] = (self._arrayOfAllItems.length - 1); //Last one pushed in should be the item + values[j] = stub; //Set the stub item back in its place and replace the stub notation. + } + } + } + } + + //Done processing! Call the onItem, if any. + if(keywordArgs.onItem){ + var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global; + keywordArgs.onItem.call(scope, item); + } + }; + + //Callback for any errors that occur during load. + var gotError = function(error){ + //Call the onComplete, if any + if(keywordArgs.onError){ + var scope = keywordArgs.scope ? keywordArgs.scope : dojo.global; + keywordArgs.onError.call(scope, error); + } + }; + + //Fire the get and pass the proper callbacks to the deferred. + var xhrArgs = { + url: dataUrl, + handleAs: "json-comment-optional" + }; + var d = dojo.xhrGet(xhrArgs); + d.addCallback(gotData); + d.addErrback(gotError); + } +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_dojotree.php b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_dojotree.php new file mode 100755 index 0000000..5e19385 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_dojotree.php @@ -0,0 +1,179 @@ +deep; + } + if (property_exists($queryOptions, "ignoreCase")) { + $ignoreCase = $queryOptions->ignoreCase; + } + } + + //Extract non-dojo.data spec config options. + $expand = false; + $dirsOnly = false; + $showHiddenFiles = false; + $options = array(); + if (array_key_exists("options", $_GET)) { + $options = $_GET['options']; + $options = str_replace("\\\"", "\"", $options); + $options = json_decode($options); + if (array_search("expand", $options) > -1) { + $expand = true; + } + if (array_search("dirsOnly", $options) > -1) { + $dirsOnly = true; + } + if (array_search("showHiddenFiles", $options) > -1) { + $showHiddenFiles = true; + } + } + + + //See if a specific file was requested, or if it is just a query for files. + $path = false; + if (array_key_exists("path", $_GET)) { + $path = $_GET['path']; + } + + if (!is_string($path)) { + + $files = array(); + + //Handle query for files. Must try to generate patterns over the query + //attributes. + $patterns = array(); + if (is_array($query)) { + //Generate a series of RegExp patterns as necessary. + $keys = array_keys($query); + $total = count($keys); + if ($total > 0) { + for ($i = 0; $i < $total; $i++) { + $key = $keys[$i]; + $pattern = $query[$key]; + if (is_string($pattern)) { + $patterns[$key] = patternToRegExp($pattern); + } + } + $files = matchFiles($query, $patterns, $ignoreCase, ".", $rootDir, $deep, $dirsOnly, $expand, $showHiddenFiles); + } else { + $files = getAllFiles(".",$rootDir,$deep,$dirsOnly,$expand,$showHiddenFiles); + } + }else{ + $files = getAllFiles(".",$rootDir,$deep,$dirsOnly,$expand,$showHiddenFiles); + } + + $total = count($files); + + //Handle the sorting and paging. + $sortSpec = false; + if (array_key_exists("sort", $_GET)) { + $sortSpec = $_GET['sort']; + $sortSpec = str_replace("\\\"", "\"", $sortSpec); + $sortSpec = json_decode($sortSpec); + } + + if ($sortSpec != null) { + $comparator = createComparator($sortSpec); + usort($files,array($comparator, "compare")); + } + + //Page, if necessary. + if (array_key_exists("start", $_GET)) { + $start = $_GET['start']; + if (!is_numeric($start)) { + $start = 0; + } + $files = array_slice($files, $start); + } + if (array_key_exists("count", $_GET)) { + $count = $_GET['count']; + if (!is_numeric($count)) { + $count = $total; + } + $files = array_slice($files, 0, $count); + } + + $result = new stdClass(); + $result->total = $total; + $result->items = $files; + header("Content-Type", "text/json"); + print("/* ".json_encode($result)." */"); + } else { + //Query of a specific file (useful for fetchByIdentity and loadItem) + + //Make sure the path isn't trying to walk out of the rooted directory + //As defined by $rootDir in the top of the php script. + $rootPath = realPath($rootDir); + $fullPath = realPath($rootPath."/".$path); + + if ($fullPath !== false) { + if (strpos($fullPath,$rootPath) === 0) { + //Root the path into the tree cleaner. + if (strlen($fullPath) == strlen($rootPath)) { + $path = "."; + } else { + //Fix the path to relative of root and put back into UNIX style (even if windows). + $path = substr($fullPath,(strlen($rootPath) + 1),strlen($fullPath)); + $path = str_replace("\\", "/", $path); + } + + if (file_exists($fullPath)) { + $arr = explode("/", $path); + $size = count($arr); + + if ($size > 0) { + $fName = $arr[$size - 1]; + if ($size == 1) { + print("Setting path to: ."); + $path = "."; + } else { + $path = $arr[0]; + } + for ($i = 1; $i < ($size - 1); $i++) { + $path = $path."/".$arr[$i]; + } + $file = generateFileObj($fName, $path, $rootDir, $expand,$showHiddenFiles); + header("Content-Type", "text/json"); + print("/* ".json_encode($file)." */"); + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } else { + header("HTTP/1.0 403 Forbidden"); + header("Status: 403 Forbidden"); + print("Cannot access file: [".htmlentities($path)."]. It is outside of the root of the file service."); + } + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } +?> diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_dojoxdata.php b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_dojoxdata.php new file mode 100755 index 0000000..0360049 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_dojoxdata.php @@ -0,0 +1,179 @@ +deep; + } + if (property_exists($queryOptions, "ignoreCase")) { + $ignoreCase = $queryOptions->ignoreCase; + } + } + + //Extract non-dojo.data spec config options. + $expand = false; + $dirsOnly = false; + $showHiddenFiles = false; + $options = array(); + if (array_key_exists("options", $_GET)) { + $options = $_GET['options']; + $options = str_replace("\\\"", "\"", $options); + $options = json_decode($options); + if (array_search("expand", $options) > -1) { + $expand = true; + } + if (array_search("dirsOnly", $options) > -1) { + $dirsOnly = true; + } + if (array_search("showHiddenFiles", $options) > -1) { + $showHiddenFiles = true; + } + } + + + //See if a specific file was requested, or if it is just a query for files. + $path = false; + if (array_key_exists("path", $_GET)) { + $path = $_GET['path']; + } + + if (!is_string($path)) { + + $files = array(); + + //Handle query for files. Must try to generate patterns over the query + //attributes. + $patterns = array(); + if (is_array($query)) { + //Generate a series of RegExp patterns as necessary. + $keys = array_keys($query); + $total = count($keys); + if ($total > 0) { + for ($i = 0; $i < $total; $i++) { + $key = $keys[$i]; + $pattern = $query[$key]; + if (is_string($pattern)) { + $patterns[$key] = patternToRegExp($pattern); + } + } + $files = matchFiles($query, $patterns, $ignoreCase, ".", $rootDir, $deep, $dirsOnly, $expand, $showHiddenFiles); + } else { + $files = getAllFiles(".",$rootDir,$deep,$dirsOnly,$expand,$showHiddenFiles); + } + }else{ + $files = getAllFiles(".",$rootDir,$deep,$dirsOnly,$expand,$showHiddenFiles); + } + + $total = count($files); + + //Handle the sorting and paging. + $sortSpec = false; + if (array_key_exists("sort", $_GET)) { + $sortSpec = $_GET['sort']; + $sortSpec = str_replace("\\\"", "\"", $sortSpec); + $sortSpec = json_decode($sortSpec); + } + + if ($sortSpec != null) { + $comparator = createComparator($sortSpec); + usort($files,array($comparator, "compare")); + } + + //Page, if necessary. + if (array_key_exists("start", $_GET)) { + $start = $_GET['start']; + if (!is_numeric($start)) { + $start = 0; + } + $files = array_slice($files, $start); + } + if (array_key_exists("count", $_GET)) { + $count = $_GET['count']; + if (!is_numeric($count)) { + $count = $total; + } + $files = array_slice($files, 0, $count); + } + + $result; + $result->total = $total; + $result->items = $files; + header("Content-Type", "text/json"); + print("/* ".json_encode($result)." */"); + } else { + //Query of a specific file (useful for fetchByIdentity and loadItem) + + //Make sure the path isn't trying to walk out of the rooted directory + //As defined by $rootDir in the top of the php script. + $rootPath = realPath($rootDir); + $fullPath = realPath($rootPath."/".$path); + + if ($fullPath !== false) { + if (strpos($fullPath,$rootPath) === 0) { + //Root the path into the tree cleaner. + if (strlen($fullPath) == strlen($rootPath)) { + $path = "."; + } else { + //Fix the path to relative of root and put back into UNIX style (even if windows). + $path = substr($fullPath,(strlen($rootPath) + 1),strlen($fullPath)); + $path = str_replace("\\", "/", $path); + } + + if (file_exists($fullPath)) { + $arr = split("/", $path); + $size = count($arr); + + if ($size > 0) { + $fName = $arr[$size - 1]; + if ($size == 1) { + print("Setting path to: ."); + $path = "."; + } else { + $path = $arr[0]; + } + for ($i = 1; $i < ($size - 1); $i++) { + $path = $path."/".$arr[$i]; + } + $file = generateFileObj($fName, $path, $rootDir, $expand,$showHiddenFiles); + header("Content-Type", "text/json"); + print("/* ".json_encode($file)." */"); + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } else { + header("HTTP/1.0 403 Forbidden"); + header("Status: 403 Forbidden"); + print("Cannot access file: [".htmlentities($path)."]. It is outside of the root of the file service."); + } + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } +?> diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_funcs.php b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_funcs.php new file mode 100755 index 0000000..ff61139 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/stores/filestore_funcs.php @@ -0,0 +1,366 @@ + /^ca.*$/ + * *ca* -> /^.*ca.*$/ + * *c\*a* -> /^.*c\*a.*$/ + * *c\*a?* -> /^.*c\*a..*$/ + * and so on. + * + * @param pattern: string + * A simple matching pattern to convert that follows basic rules: + * * Means match anything, so ca* means match anything starting with ca + * ? Means match single character. So, b?b will match to bob and bab, and so on. + * \ is an escape character. So for example, \* means do not treat * as a match, but literal character *. + * To use a \ as a character in the string, it must be escaped. So in the pattern it should be + * represented by \\ to be treated as an ordinary \ character instead of an escape. + */ + function patternToRegExp(/*String*/$pattern){ + $rxp = "^"; + $c = ""; + $len = strlen($pattern); + for ($i = 0; $i < $len; $i++) { + $c = $pattern[$i]; + switch ($c) { + case '\\': + $rxp = $rxp.$c; + $i++; + $rxp = $rxp.$pattern[$i]; + break; + case '*': + $rxp = $rxp.".*"; break; + case '?': + $rxp = $rxp."."; break; + case '$': + case '^': + case '/': + case '+': + case '.': + case '|': + case '(': + case ')': + case '{': + case '}': + case '[': + case ']': + $rxp = $rxp."\\"; //fallthrough + default: + $rxp = $rxp.$c; + } + } + return "(".$rxp."$)"; + } + + /** + * Function to load all file info from a particular directory. + * + * @param $dir The dir to seach from, relative to $rootDir. + * @param $rootDir The directory where the file service is rooted, used as separate var to allow easier checking and prevention of ../ing out of the tree. + * @param $recurse Whether or not to deep scan the dir and return all subfiles, or just return the toplevel files. + * @param $dirsOnly boolean to enote to only return directory names, not filenames. + * @param $expand boolean to indicate whether or not to inflate all children files along a path/file, or leave them as stubs. + * @param $showHiddenFiles boolean to indicate to return hidden files as part of the list. + */ + function getAllfiles($dir, $rootDir, $recurse, $dirsOnly, $expand, $showHiddenFiles) { + // summary: + // A function to obtain all the files in a particular directory (file or dir) + $files = array(); + $dirHandle = opendir($rootDir."/".$dir); + if ($dirHandle) { + while($file = readdir($dirHandle)) { + if ($file) { + if ($file != ".." && $file != ".") { + $path = $dir."/".$file; + $fileObj = generateFileObj($file, $dir, $rootDir,$expand,$showHiddenFiles); + if (is_dir($rootDir."/".$path)) { + if ($recurse) { + if ($showHiddenFiles || $fileObj["name"][0] != '.') { + $subfiles = getAllfiles($path,$rootDir,$recurse,$dirsOnly,$expand,$showHiddenFiles); + $length = count($subfiles); + for ($i = 0; $i < $length; $i++) { + $files[] = $subfiles[$i]; + } + } + } + } + if (!$dirsOnly || $fileObj["directory"]) { + if ($showHiddenFiles || $fileObj["name"][0] !== '.') { + $files[] = $fileObj; + } + } + } + } + } + } + closedir($dirHandle); + return $files; + } + + /** + * Function to generate an associative map of data about a specific file. + * @param $file The name of the file this object represents. + * @param $dir The sub-path that contains the file defined by $file + * @param $rootDir The directory from which to append dir and name to get the full path to the file. + * @param $expand boolean to denote that if the file is a directory, expand all children in the children attribute + * to a a full object + * @param $showHiddenFiles boolean to denote if hidden files should be shown in-view or not. + * + * @return Associative Map. The details about the file: + * $file["name"] - Returns the shortname of the file. + * $file["parentDir"] - Returns the relative path from the service root for the parent directory containing file $file["name"] + * $file["path"] - The relative path to the file. + * $file["directory"] - Boolean indicator if the file represents a directory. + * $file["size"] - The size of the file, in bytes. + * $file["modified] - The modified date of the file in milliseconds since Jan 1st, 1970. + * $file["children"] - Children files of a directory. Empty if a standard file. + */ + function generateFileObj($file, $dir, $rootDir, $expand, $showHiddenFiles) { + // summary: + // Function to generate an object representation of a disk file. + $path = $file; + if ($dir != "." && $dir != "./") { + $path = $dir."/".$file; + } + + $fullPath = $rootDir."/".$path; + + $atts = stat($fullPath); + + $rootPath = realPath($rootDir); + $resolvedDir = realPath($rootDir."/".$dir); + $resolvedFullPath = realPath($fullPath); + + //Try to normalize down the paths so it does a consistent return. + if (strcmp($rootPath, $resolvedDir) === 0) { + $dir = "."; + } else { + $dir = substr($resolvedDir, (strlen($rootPath) + 1), strlen($resolvedDir)); + $dir = "./".str_replace("\\","/",$dir); + } + if (strcmp($rootPath, $resolvedFullPath) === 0) { + $path = "."; + } else { + $path = substr($resolvedFullPath, (strlen($rootPath) + 1), strlen($resolvedFullPath)); + $path = "./".str_replace("\\","/",$path); + } + + $fObj = array(); + $fObj["name"] = $file; + $fObj["parentDir"] = $dir; + $fObj["path"] = $path; + $fObj["directory"] = is_dir($fullPath); + $fObj["size"] = filesize($fullPath); + $fObj["modified"] = $atts[9]; + + if (is_dir($fullPath)) { + $children = array(); + $dirHandle = opendir($fullPath); + while($cFile = readdir($dirHandle)) { + if ($cFile) { + if ($cFile != ".." && $cFile != ".") { + if ($showHiddenFiles || $cFile[0] != '.') { + if (!$expand) { + $children[] = $cFile; + }else{ + $children[] = generateFileObj($cFile, $path, $rootDir, $expand, $showHiddenFiles); + } + } + } + } + } + closedir($dirHandle); + $fObj["children"] = $children; + } + return $fObj; + } + + /** + * A field comparator class, whose role it is to define which fields on an associaive map to compare on + * and provide the comparison function to do so. + */ + class FieldComparator { + var $field; + var $descending = false; + + /** + * Constructor. + * @param $f The field of the item to compare. + * @param $d Parameter denoting whether it should be ascending or descending. Default is ascending. + */ + function FieldComparator($f, $d) { + $this->field = $f; + $this->descending = $d; + } + + /** + * Function to compare file objects A and B on the field defined by $this->field. + * @param $fileA The first file to compare. + * @param #fileB The second file to compare. + */ + function compare($fileA,$fileB){ + $f = $this->field; + $a = $fileA[$f]; + $b = $fileB[$f]; + + $ret = 0; + if (is_string($a) && is_string($b)) { + $ret = strcmp($a,$b); + } else if($a > $b || $a === null){ + $ret = 1; + }else if($a < $b || $b === null){ + $ret = -1; + } + + if (property_exists($this, "descending") && $this->descending == true) { + $ret = $ret * -1; + } + + if ($ret > 0) { + $ret = 1; + } else if ($ret < 0) { + $ret = -1; + } + return $ret; //int, {-1,0,1} + } + } + + /** + * A compound comparator class, whose role it is to sequentially call a set of comparators on two objects and + * return the combined result of the comparison. + */ + class CompoundComparator { + //Comparator chain. + var $comparators = array(); + + /** + * Function to compare two objects $a and $b, using the chain of comparators. + * @param $a The first object to compare. + * @param $b The second object to compare. + * @returns -1, 0, 1. -1 if a < b, 1 if a > b, and 0 if a = b. + */ + function compare($a, $b) { + $ret = 0; + $size = count($this->comparators); + for ($i = 0; $i < $size; $i++) { + $comp = $this->comparators[$i]; + $ret = $comp->compare($a, $b); + if ($ret != 0) { + break; + } + } + return $ret; + } + + /** + * Function to add a comparator to the chain. + * @param $comp The comparator to add. + */ + function addComparator($comp){ + $this->comparators[] = $comp; + } + } + + /** + * A function to create a Comparator class with chained comparators based off the sort specification passed into the store. + * @param $sortSpec The Sort specification, which is an array of sort objects containing ( attribute: "someStr": descending: true|fase} + * @returns The constructed comparator. + */ + function createComparator($sortSpec) { + //Function to construct the class that handles chained comparisons. + $comparator = new CompoundComparator(); + $size = count($sortSpec); + for ($i = 0; $i < $size; $i++) { + $sort = $sortSpec[$i]; + $desc = false; + if(property_exists($sort, "descending")){ + $desc = $sort->descending; + } + $fileComp = new FieldComparator($sort->attribute,$desc); + $comparator->addComparator($fileComp); + } + return $comparator; + } + + /** + * Function to match a set of queries against a directory and possibly all subfiles. + * @param query The Query send in to process and test against. + * @param patterns The set of regexp patterns generated off the query. + * @param dir the directory to search in. + * @param recurse Whether or not to recurse into subdirs and test files there too. + * + * @return Array. Returns an array of all matches of the query. + */ + function matchFiles($query, $patterns, $ignoreCase, $dir, $rootDir, $recurse, $dirsOnly, $expand, $showHiddenFiles) { + $files = array(); + $fullDir = $rootDir."/".$dir; + + if ($fullDir != null && is_dir($fullDir)) { + + $dirHandle = opendir($fullDir); + while ($file = readdir($dirHandle)) { + if ($file != "." && $file != "..") { + $item = generateFileObj($file, $dir, $rootDir, $expand,$showHiddenFiles); + $keys = array_keys($patterns); + $total = count($keys); + for ($i = 0; $i < $total; $i++) { + $key = $keys[$i]; + $pattern = $query[$key]; + $matched = containsValue($item,$key,$query[$key],$patterns[$key], $ignoreCase); + if (!$matched) { + break; + } + } + if ($matched) { + if (!$dirsOnly || $item["directory"]) { + if ($showHiddenFiles || $item["name"][0] != '.') { + $files[] = $item; + } + } + } + + if (is_dir($rootDir."/".$item["path"]) && $recurse) { + if ($showHiddenFiles || $item["name"][0] != '.') { + $files = array_merge($files, matchFiles($query, $patterns, $ignoreCase, $item["path"], $rootDir, $recurse, $dirsOnly, $expand, $showHiddenFiles)); + } + } + } + } + closedir($dirHandle); + } + return $files; + } + + /** + * Function to handle comparing the value of an attribute on a file item. + * @param item The item to examine. + * @param attr The attribute of the tem to examine. + * @parma value The value to compare it to. + * @param rExp A regular Expression pattern object generated off 'value' if any. + * + * @returns boolean denoting if the value was matched or not. + */ + function containsValue($item, $attr, $value, $rExp, $ignoreCase) { + $matched = false; + $possibleValue = $item[$attr]; + if ($possibleValue === null && $value === null) { + $matched = true; + } else { + if ($rExp != null && is_string($possibleValue)) { + if ($ignoreCase) { + $matched = eregi($rExp, $possibleValue); + } else { + $matched = ereg($rExp, $possibleValue); + } + + } else { + if ($value != null && $possibleValue != null) { + $matched = ($value == $possibleValue); + } + } + } + return $matched; + } +// No closing PHP tag on purpose. Do not want it to print whitepace and thus not allow setting headers later. diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/FileView.js b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/FileView.js new file mode 100755 index 0000000..c6776af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/FileView.js @@ -0,0 +1,40 @@ +dojo.provide("dojox.data.demos.widgets.FileView"); +dojo.require("dijit._Templated"); +dojo.require("dijit._Widget"); + +dojo.declare("dojox.data.demos.widgets.FileView", [dijit._Widget, dijit._Templated], { + //Simple demo widget for representing a view of a Flickr Item. + + templateString: dojo.cache("dojox", "data/demos/widgets/templates/FileView.html"), + + //Attach points for reference. + titleNode: null, + descriptionNode: null, + imageNode: null, + authorNode: null, + + name: "", + path: "", + size: 0, + directory: false, + parentDir: "", + children: [], + + postCreate: function(){ + this.nameNode.appendChild(document.createTextNode(this.name)); + this.pathNode.appendChild(document.createTextNode(this.path)); + this.sizeNode.appendChild(document.createTextNode(this.size)); + this.directoryNode.appendChild(document.createTextNode(this.directory)); + this.parentDirNode.appendChild(document.createTextNode(this.parentDir)); + if (this.children && this.children.length > 0) { + var i; + for (i = 0; i < this.children.length; i++) { + var tNode = document.createTextNode(this.children[i]); + this.childrenNode.appendChild(tNode); + if (i < (this.children.length - 1)) { + this.childrenNode.appendChild(document.createElement("br")); + } + } + } + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/FlickrViewList.js b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/FlickrViewList.js new file mode 100644 index 0000000..5125c13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/FlickrViewList.js @@ -0,0 +1,30 @@ +dojo.provide("dojox.data.demos.widgets.FlickrViewList"); +dojo.require("dojox.dtl._Templated"); +dojo.require("dijit._Widget"); + +dojo.declare("dojox.data.demos.widgets.FlickrViewList", + [ dijit._Widget, dojox.dtl._Templated ], + { + store: null, + items: null, + + templateString: dojo.cache("dojox", "data/demos/widgets/templates/FlickrViewList.html"), + + fetch: function(request){ + request.onComplete = dojo.hitch(this, "onComplete"); + request.onError = dojo.hitch(this, "onError"); + return this.store.fetch(request); + }, + + onError: function(){ + console.trace(); + this.items = []; + this.render(); + }, + + onComplete: function(items, request){ + this.items = items||[]; + this.render(); + } + } +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/PicasaView.js b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/PicasaView.js new file mode 100644 index 0000000..015a5f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/PicasaView.js @@ -0,0 +1,33 @@ +dojo.provide("dojox.data.demos.widgets.PicasaView"); +dojo.require("dijit._Templated"); +dojo.require("dijit._Widget"); + +dojo.declare("dojox.data.demos.widgets.PicasaView", [dijit._Widget, dijit._Templated], { + //Simple demo widget for representing a view of a Picasa Item. + + templateString: dojo.cache("dojox", "data/demos/widgets/templates/PicasaView.html"), + + //Attach points for reference. + titleNode: null, + descriptionNode: null, + imageNode: null, + authorNode: null, + + title: "", + author: "", + imageUrl: "", + iconUrl: "", + + postCreate: function(){ + this.titleNode.appendChild(document.createTextNode(this.title)); + this.authorNode.appendChild(document.createTextNode(this.author)); + this.descriptionNode.appendChild(document.createTextNode(this.description)); + var href = document.createElement("a"); + href.setAttribute("href", this.imageUrl); + href.setAttribute("target", "_blank"); + var imageTag = document.createElement("img"); + imageTag.setAttribute("src", this.iconUrl); + href.appendChild(imageTag); + this.imageNode.appendChild(href); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/PicasaViewList.js b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/PicasaViewList.js new file mode 100644 index 0000000..67205a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/PicasaViewList.js @@ -0,0 +1,33 @@ +dojo.provide("dojox.data.demos.widgets.PicasaViewList"); +dojo.require("dijit._Templated"); +dojo.require("dijit._Widget"); +dojo.require("dojox.data.demos.widgets.PicasaView"); + +dojo.declare("dojox.data.demos.widgets.PicasaViewList", [dijit._Widget, dijit._Templated], { + //Simple demo widget that is just a list of PicasaView Widgets. + + templateString: dojo.cache("dojox", "data/demos/widgets/templates/PicasaViewList.html"), + + //Attach points for reference. + listNode: null, + + postCreate: function(){ + this.fViewWidgets = []; + }, + + clearList: function(){ + while(this.list.firstChild){ + this.list.removeChild(this.list.firstChild); + } + for(var i = 0; i < this.fViewWidgets.length; i++){ + this.fViewWidgets[i].destroy(); + } + this.fViewWidgets = []; + }, + + addView: function(viewData){ + var newView = new dojox.data.demos.widgets.PicasaView(viewData); + this.fViewWidgets.push(newView); + this.list.appendChild(newView.domNode); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/FileView.html b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/FileView.html new file mode 100755 index 0000000..a83fd28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/FileView.html @@ -0,0 +1,62 @@ +
                            +
                            File Details:
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            + + Name: + + +
                            + + Path: + + +
                            + + Size: + + +  bytes. +
                            + + Is Directory: + + +
                            + + Parent Directory: + + +
                            + + Children: + + +
                            +
                            diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/FlickrViewList.html b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/FlickrViewList.html new file mode 100644 index 0000000..e9fe02f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/FlickrViewList.html @@ -0,0 +1,20 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as flickr %} +
                            + {% for item in flickr %} +
                            +
                            {{ item.title }}
                            + + + +

                            {{ item.author }}

                            + + +
                            + {% endfor %} +
                            + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/PicasaView.html b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/PicasaView.html new file mode 100644 index 0000000..88dbb31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/PicasaView.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + +
                            + + Title: + + +
                            + + Author: + + +
                            + + Summary: + + +
                            +
                            + diff --git a/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/PicasaViewList.html b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/PicasaViewList.html new file mode 100644 index 0000000..3a9f565 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/demos/widgets/templates/PicasaViewList.html @@ -0,0 +1,2 @@ +
                            + diff --git a/js/dojo-release-1.7.2-src/dojox/data/dom.js b/js/dojo-release-1.7.2-src/dojox/data/dom.js new file mode 100644 index 0000000..71385a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/dom.js @@ -0,0 +1,101 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojox/xml/parser"], + function(kernel, lang, xmlParser) { + +//DOM type to int value for reference. +//Ints make for more compact code than full constant names. +//ELEMENT_NODE = 1; +//ATTRIBUTE_NODE = 2; +//TEXT_NODE = 3; +//CDATA_SECTION_NODE = 4; +//ENTITY_REFERENCE_NODE = 5; +//ENTITY_NODE = 6; +//PROCESSING_INSTRUCTION_NODE = 7; +//COMMENT_NODE = 8; +//DOCUMENT_NODE = 9; +//DOCUMENT_TYPE_NODE = 10; +//DOCUMENT_FRAGMENT_NODE = 11; +//NOTATION_NODE = 12; + +//This file contains internal/helper APIs as holders for people who used them. They have been migrated to +//a better project, dojox.xml and experimental has been removed there. Please update usage to the new package. +dojo.deprecated("dojox.data.dom", "Use dojox.xml.parser instead.", "2.0"); + +var dataDom = lang.getObject("dojox.data.dom",true); + +dataDom.createDocument = function(/*string?*/ str, /*string?*/ mimetype){ + // summary: + // cross-browser implementation of creating an XML document object. + // + // str: + // Optional text to create the document from. If not provided, an empty XML document will be created. + // If str is empty string "", then a new empty document will be created. + // mimetype: + // Optional mimetype of the text. Typically, this is text/xml. Will be defaulted to text/xml if not provided. + dojo.deprecated("dojox.data.dom.createDocument()", "Use dojox.xml.parser.parse() instead.", "2.0"); + try{ + return xmlParser.parse(str,mimetype); //DOMDocument. + }catch(e){ + /*Squeltch errors like the old parser did.*/ + return null; + } +}; + +dataDom.textContent = function(/*Node*/node, /*string?*/text){ + // summary: + // Implementation of the DOM Level 3 attribute; scan node for text + // description: + // Implementation of the DOM Level 3 attribute; scan node for text + // This function can also update the text of a node by replacing all child + // content of the node. + // node: + // The node to get the text off of or set the text on. + // text: + // Optional argument of the text to apply to the node. + dojo.deprecated("dojox.data.dom.textContent()", "Use dojox.xml.parser.textContent() instead.", "2.0"); + if(arguments.length> 1){ + return xmlParser.textContent(node, text); //string + }else{ + return xmlParser.textContent(node); //string + } +}; + +dataDom.replaceChildren = function(/*Element*/node, /*Node || array*/ newChildren){ + // summary: + // Removes all children of node and appends newChild. All the existing + // children will be destroyed. + // description: + // Removes all children of node and appends newChild. All the existing + // children will be destroyed. + // node: + // The node to modify the children on + // newChildren: + // The children to add to the node. It can either be a single Node or an + // array of Nodes. + dojo.deprecated("dojox.data.dom.replaceChildren()", "Use dojox.xml.parser.replaceChildren() instead.", "2.0"); + xmlParser.replaceChildren(node, newChildren); +}; + +dataDom.removeChildren = function(/*Element*/node){ + // summary: + // removes all children from node and returns the count of children removed. + // The children nodes are not destroyed. Be sure to call dojo._destroyElement on them + // after they are not used anymore. + // node: + // The node to remove all the children from. + dojo.deprecated("dojox.data.dom.removeChildren()", "Use dojox.xml.parser.removeChildren() instead.", "2.0"); + return dojox.xml.parser.removeChildren(node); //int +}; + +dataDom.innerXML = function(/*Node*/node){ + // summary: + // Implementation of MS's innerXML function. + // node: + // The node from which to generate the XML text representation. + dojo.deprecated("dojox.data.dom.innerXML()", "Use dojox.xml.parser.innerXML() instead.", "2.0"); + return xmlParser.innerXML(node); //string||null +}; + +return dataDom; + +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/restListener.js b/js/dojo-release-1.7.2-src/dojox/data/restListener.js new file mode 100644 index 0000000..02af85b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/restListener.js @@ -0,0 +1,48 @@ +dojo.provide("dojox.data.restListener"); + +dojox.data.restListener = function(message){ + // summary: + // this function can be used to receive REST notifications, from Comet or from another frame + // description: + // Example: + // | dojo.connect(window,"onMessage",null,function(event) { + // | var data = dojo.fromJson(event.data); + // | dojox.restListener(data); + // | }); + var channel = message.channel; + var jr = dojox.rpc.JsonRest; + var service = jr.getServiceAndId(channel).service; + var result = dojox.json.ref.resolveJson(message.result, { + defaultId: message.event == 'put' && channel, + index: dojox.rpc.Rest._index, + idPrefix: service.servicePath.replace(/[^\/]*$/,''), + idAttribute: jr.getIdAttribute(service), + schemas: jr.schemas, + loader: jr._loader, + assignAbsoluteIds: true + }); + var target = dojox.rpc.Rest._index && dojox.rpc.Rest._index[channel]; + var onEvent = 'on' + message.event.toLowerCase(); + var store = service && service._store; + if(target){ + if(target[onEvent]){ + target[onEvent](result); // call the REST handler if available + return; + } + } + // this is how we respond to different events + if(store){ + switch(onEvent){ + case 'onpost': + store.onNew(result); // call onNew for the store; + break; + case 'ondelete': + store.onDelete(target); + break; + // put is handled by JsonReferencing + //TODO: we may want to bring the JsonReferencing capability into here... + // that is really tricky though because JsonReferencing handles sub object, + // it would be expensive to do full object graph searches from here + } + } +}; diff --git a/js/dojo-release-1.7.2-src/dojox/data/s3/README b/js/dojo-release-1.7.2-src/dojox/data/s3/README new file mode 100644 index 0000000..cfa2347 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/s3/README @@ -0,0 +1,41 @@ +Using Amazon S3 with Dojo has the following prerequisites: + * You must be signed up to use Amazon S3. You can sign up for Amazon S3 at http://aws.amazon.com/s3. + * Use the provided proxy (/dojox/rpc/s3/proxy.php) with PHP 5. + * proxy.php requires the following modules: + o Crypt_HMAC + o HTTP_Request + + +To use S3 from Dojo, you need a proxy. You can use the provided proxy example file by renaming +proxy.example-php to proxy.php and then you must enter your Amazon access key and secret access key +into the proxy.php file on line 3 and 4: + +$accessKey = "access key"; +$secretAccessKey = "secret access key"; + +You then use the Dojo RPC service with the "PROXIED-PATH" envelope: + +dojo.require("dojox.rpc.Service"); +dojo.require("dojox.rpc.ProxiedPath"); +var s3Buckets = new dojox.rpc.Service({ + target:"http://s3.amazonaws.com/", + proxyUrl:"../s3/proxy.php", // the path to the proxy + transport:"REST", + envelope:"PROXIED-PATH", + contentType:"application/json", + services:{ + myBucket:{ + target:"myBucket", + parameters:[{type:"string"}] + } + } +}); + + +To use the S3 as a Dojo data store you can use the S3JsonRestStore module. First setup an RPC service +as shown above and then pass the RPC service to the S3JsonRestStore: + +dojo.require("dojox.data.S3JsonRestStore"); +s3Store = new dojox.data.S3JsonRestStore({service:s3Buckets.myBucket}); // and create a store for it + +You can then use the s3Store as a normal Read/Write Dojo Data store. diff --git a/js/dojo-release-1.7.2-src/dojox/data/s3/proxy.example-php b/js/dojo-release-1.7.2-src/dojox/data/s3/proxy.example-php new file mode 100644 index 0000000..e5b57e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/s3/proxy.example-php @@ -0,0 +1,74 @@ +hash($stringToSign)); + +$req =& new HTTP_Request($TARGET_WS . $resource); +$req->setMethod($method); +$req->addHeader("content-type", $contentType); +$req->addHeader("Date", $httpDate); +$req->addHeader("x-amz-acl", $acl); +$req->addHeader("Authorization", "AWS " . $accessKey . ":" . $signature); +if ($content != "") { + $req->setBody($content); +} + +$req->sendRequest(); + +$contentType = $req->getResponseHeader("content-type"); +header("content-type: $contentType"); +header('HTTP/1.1 ' . $req->getResponseCode() . ' Ok'); + +ob_end_flush(); + +$content = $req->getResponseBody(); +if ($content) { + print($content); +} +else { + print("\"success\""); +} + +function hexTob64($str) { + $raw = ''; + for ($i=0; $i < strlen($str); $i+=2) { + $raw .= chr(hexdec(substr($str, $i, 2))); + } + return base64_encode($raw); +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/ClientFilter.js b/js/dojo-release-1.7.2-src/dojox/data/tests/ClientFilter.js new file mode 100644 index 0000000..4ecbe3d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/ClientFilter.js @@ -0,0 +1,150 @@ +dojo.provide("dojox.data.tests.ClientFilter"); +dojo.require("dojox.data.ClientFilter"); +dojo.require("dojox.data.JsonRestStore"); + + +mockService = function(query){ + var dfd = new dojo.Deferred(); + setTimeout(function(){ + dfd.callback([{firstName:"John",lastName:"Smith",__id:"mock/1"}, + {firstName:"Jim",lastName:"Smith",__id:"mock/2"}, + {firstName:"Jill",lastName:"Smith",__id:"mock/3"}, + {firstName:"Jerry",lastName:"Smith",__id:"mock/4"}]); + },10); + return dfd; +}; +mockService.servicePath = "mock/"; +jsonStore = new dojox.data.JsonRestStore({service:mockService}); + +doh.register("dojox.data.tests.ClientFilter", + [ + function updateWhileLoading(t) { + var d = new doh.Deferred(); + jsonStore.fetch({query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName",descending:true}], + onComplete: function(items, request){ + t.is(5, items.length); // make sure it was added + t.is(newJack,items[4]); // make sure it is in the right location + console.log("updateWhileLoading",items[4],newJack); + d.callback(true); + } + }); + newJack = jsonStore.newItem({firstName:"Jack",lastName:"Smith"}); // this should fire while we are waiting for the fetch response + return d; + }, + function makeChanges(t) { + // summary: + // Simple test of a basic fetch on JsonRestStore of a simple query. + var d = new doh.Deferred(); + jsonStore.fetch({queryOptions:{cache:true},query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName",descending:true}], + onComplete: function(items, request){ + t.is(5, items.length); // make sure it was added + t.is(newJack,items[4]); // make sure it is in the right location + console.log("items[4]",items[4]); + var newJoe = jsonStore.newItem({firstName:"Joe",lastName:"Smith"}); + t.is(5, items.length); // make sure it was not added yet + jsonStore.updateResultSet(items, request); + t.is(6, items.length); // make sure it was added + t.is(newJoe,items[1]); // make sure it is in the right location + var jackJones = jsonStore.newItem({firstName:"Jack",lastName:"Jones"}); + jsonStore.updateResultSet(items, request); + t.is(6, items.length); // make sure it is not added + jsonStore.setValue(newJoe,"firstName","Jesse"); + jsonStore.updateResultSet(items, request); + t.is(6, items.length); // make sure it is the same + t.is(newJoe,items[3]); // make sure it is in the new right location + t.f(newJoe==items[1]); // make sure it is not in the old location + jsonStore.deleteItem(newJack); + jsonStore.updateResultSet(items, request); + t.is(5, items.length); // make sure it is has been removed + jsonStore.setValue(newJoe,"lastName","Baker"); + jsonStore.updateResultSet(items, request); + t.is(4, items.length); // make sure it is has been removed + jsonStore.setValue(jackJones,"lastName","Smith"); + jsonStore.updateResultSet(items, request); + t.is(5, items.length); // make sure it is has been added + } + }); + console.log("sent first"); + var finished; + jsonStore.fetch({query:{lastName:"Smith",firstName:"Jack"},sort:[{attribute:"firstName",descending:true}], + onComplete: function(items, request){ + console.log("items first",items); + finished = true; + t.is(1, items.length); // make sure we get the correct number of items + d.callback(true); + } + }); + console.log("sent seconds"); + t.f(finished); // this should finish synchronously, because we should have it in the cache + return d; //Object + }, + function cachedResults(t) { + var d = new doh.Deferred(); + var finished; + jsonStore.fetch({query:{lastName:"Smith",firstName:"Jack"},sort:[{attribute:"firstName",descending:true}], + onComplete: function(items, request){ + console.log("items",items); + finished = true; + t.is(1, items.length); // make sure we get the correct number of items + d.callback(true); + } + }); + t.t(finished); // this should finish synchronously, because we should have it in the cache + return d; + }, + function repeatedQueries(t) { + var d = new doh.Deferred(); + var finished; + jsonStore.fetch({queryOptions:{cache:true},query:{}, + onComplete: function(items, request){ + console.log("items",items); + t.is(6, items.length); // make sure we get the correct number of items + jsonStore.newItem({firstName:"Jack",lastName:"Jones"}); + jsonStore.fetch({query:{}, + onComplete: function(items, request){ + t.is(7, items.length); // make sure we get the correct number of items + } + }); + jsonStore.serverVersion = jsonStore._updates.length; + jsonStore.newItem({firstName:"Jack",lastName:"Jones"}); + jsonStore.fetch({query:{}, + onComplete: function(items, request){ + finished = true; + t.is(8, items.length); // make sure we get the correct number of items + d.callback(true); + } + }); + } + }); + return d; + }, + + function sorting(t) { + var d = new doh.Deferred(); + var finished; + // test sorting. Descending order should be John,Jim,Jill,Jerry,Jack + jsonStore.fetch({query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName",descending:true}], + onComplete: function(items, request){ + var last = jsonStore.getValue(items[0], "firstName"); + console.log("last name: ",last, items[0]); + + t.is("John", last); // make sure we get the correct number of items + + jsonStore.fetch({query:{lastName:"Smith",firstName:"*"},sort:[{attribute:"firstName"}], + onComplete: function(items, request){ + var first = jsonStore.getValue(items[0], "firstName"); + console.log("first name",first, items[0]); + finished = true; + t.is("Jack", first); // make sure we get the correct number of items + + d.callback(true); + } + }); + } + }); + t.t(finished); // this should finish synchronously, because we should have it in the cache + return d; + } + + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/QueryReadStore.html b/js/dojo-release-1.7.2-src/dojox/data/tests/QueryReadStore.html new file mode 100644 index 0000000..2a70bff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/QueryReadStore.html @@ -0,0 +1,221 @@ + + + + + + Query read store + + + + + + + + + +
                            + This is a ComboBox: +


                            + + This is a FilteringSelect: +
                            +
                            + + +
                            + +


                            + + This ComboBox uses a customized QueryReadStore, it prepares the query-string for the URL that + way that the paging parameters "start" and "count" are also send.
                            +
                            + +
                            + Click here to see the code! + +

                            + +
                            + +
                            +
                            + requestMethod + get + post +
                            + +
                            + queryOptions + +
                            + ignoreCase +
                            + true + false +
                            +
                            +
                            + deep +
                            + true + false +
                            +
                            +
                            +
                            + paging + start: + count: +

                            + do client paging: +
                            + + +

                            + + +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/dom.js b/js/dojo-release-1.7.2-src/dojox/data/tests/dom.js new file mode 100644 index 0000000..5754232 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/dom.js @@ -0,0 +1,147 @@ +dojo.provide("dojox.data.tests.dom"); +dojo.require("dojox.data.dom"); + +tests.register("dojox.data.tests.dom", + [ + function testCreateDocument(t){ + var document = dojox.data.dom.createDocument(); + t.assertTrue(document !== null); + }, + function testCreateDocumentFromText(t){ + var simpleXml = ""; + var document = dojox.data.dom.createDocument(simpleXml, "text/xml"); + + var parent = document.firstChild; + t.assertTrue(parent !== null); + t.assertTrue(parent.tagName === "parentNode"); + t.assertTrue(parent.childNodes.length == 2); + + var firstChild = parent.firstChild; + t.assertTrue(firstChild !== null); + t.assertTrue(firstChild.tagName === "childNode"); + t.assertTrue(firstChild.childNodes.length == 1); + + var secondChild = firstChild.nextSibling; + t.assertTrue(secondChild !== null); + t.assertTrue(secondChild.tagName === "childNode"); + + var grandChild = firstChild.firstChild; + t.assertTrue(grandChild !== null); + t.assertTrue(grandChild.tagName === "grandchildNode"); + + }, + function testCreateDocumentEmptyString(t){ + var simpleXml = ""; + var document = dojox.data.dom.createDocument(simpleXml, "text/xml"); + + t.assertTrue(typeof document != "undefined"); + + var parent = document.firstChild; + t.assertTrue(parent === null); + }, + function testCreateDocumentEmpty(t){ + var simpleXml; + var document = dojox.data.dom.createDocument(); + + t.assertTrue(typeof document != "undefined"); + + var parent = document.firstChild; + t.assertTrue(parent === null); + }, + function testReadTextContent(t){ + var text = "This is a bunch of child text on the node"; + var simpleXml = "" + text + ""; + var document = dojox.data.dom.createDocument(simpleXml, "text/xml"); + + var topNode = document.firstChild; + t.assertTrue(topNode !== null); + t.assertTrue(topNode.tagName === "parentNode"); + t.assertTrue(text === dojox.data.dom.textContent(topNode)); + dojo.destroy(topNode); + t.assertTrue(document.firstChild === null); + }, + function testSetTextContent(t){ + var text = "This is a bunch of child text on the node"; + var text2 = "This is the new text"; + var simpleXml = "" + text + ""; + var document = dojox.data.dom.createDocument(simpleXml, "text/xml"); + + var topNode = document.firstChild; + t.assertTrue(topNode !== null); + t.assertTrue(topNode.tagName === "parentNode"); + t.assertTrue(text === dojox.data.dom.textContent(topNode)); + dojox.data.dom.textContent(topNode, text2); + t.assertTrue(text2 === dojox.data.dom.textContent(topNode)); + dojo.destroy(topNode); + t.assertTrue(document.firstChild === null); + + }, + function testReplaceChildrenArray(t){ + var simpleXml1 = ""; + var simpleXml2 = ""; + var doc1 = dojox.data.dom.createDocument(simpleXml1, "text/xml"); + var doc2 = dojox.data.dom.createDocument(simpleXml2, "text/xml"); + + var topNode1 = doc1.firstChild; + var topNode2 = doc2.firstChild; + t.assertTrue(topNode1 !== null); + t.assertTrue(topNode1.tagName === "parentNode"); + t.assertTrue(topNode2 !== null); + t.assertTrue(topNode2.tagName === "parentNode"); + dojox.data.dom.removeChildren(topNode1); + var newChildren=[]; + for(var i=0;i + + + + HTML Div List for HtmlStore + + +
                            +
                            bold
                            +
                            italic
                            +
                            normal
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/ml/orderedList.html b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/orderedList.html new file mode 100644 index 0000000..e995377 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/orderedList.html @@ -0,0 +1,16 @@ + + + + + HTML Ordered List for HtmlStore + + +
                              +
                            1. Every
                            2. +
                            3. Good
                            4. +
                            5. Boy
                            6. +
                            7. Does
                            8. +
                            9. Fine
                            10. +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/ml/table.html b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/table.html new file mode 100644 index 0000000..0c556d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/table.html @@ -0,0 +1,46 @@ + + + + + HTML Ordered List for HtmlStore + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            XYAB
                            238
                            1357
                            4922777
                            32313535747
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlStore_declaratively.html b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlStore_declaratively.html new file mode 100644 index 0000000..ea36c8a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlStore_declaratively.html @@ -0,0 +1,172 @@ + + + +Dojox HtmlDataStore Widget + + + + + + + + + +

                            Dojox HtmlDataStore Widget

                            +
                            +
                            +
                            + + +
                            +
                            +
                            +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            XYAB
                            238
                            1357
                            4922777
                            32313535747
                            + +
                            +
                            +
                            + Table Rows:
                            (Just to show that the tree can determine that the tableStore works like a store).
                            Should have three branches, where the row had attr Y value of 3.
                            +
                            +
                            + +
                              +
                            • Red
                            • +
                            • Orange
                            • +
                            • Yellow
                            • +
                            • Green
                            • +
                            • Blue
                            • +
                            • Violet
                            • +
                            + + + + +
                            + Unordered List in Tree:
                            +
                            +
                            + +
                              +
                            1. Every
                            2. +
                            3. Good
                            4. +
                            5. Boy
                            6. +
                            7. Does
                            8. +
                            9. Fine
                            10. +
                            + + + + +
                            + Ordered List in Tree:
                            +
                            +
                            + + +
                            +
                            bold
                            +
                            italic
                            +
                            normal
                            +
                            + + + + +
                            + Div list in tree:
                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlStore_remote.html b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlStore_remote.html new file mode 100644 index 0000000..f9d9eff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlStore_remote.html @@ -0,0 +1,115 @@ + + + +Dojox HtmlDataStore Widget + + + + + + + + + +

                            Dojox HtmlDataStore Widget

                            +
                            +
                            +
                            + + +
                            +
                            +
                            +
                            + +
                            + Table Rows:
                            (Just to show that the tree can determine that the tableStore works like a store).
                            Should have three branches, where the row had attr Y value of 3.
                            +
                            +
                            + + + + +
                            + Unordered List in Tree:
                            +
                            +
                            + + + + +
                            + Ordered List in Tree:
                            +
                            +
                            + + +
                            +
                            bold
                            +
                            italic
                            +
                            normal
                            +
                            + + + + +
                            + Div list in tree:
                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlTableStore_declaratively.html b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlTableStore_declaratively.html new file mode 100644 index 0000000..f69ba68 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/test_HtmlTableStore_declaratively.html @@ -0,0 +1,120 @@ + + + +Dojox HtmlDataStore Widget + + + + + + + + + +

                            Dojox HtmlDataStore Widget

                            +
                            +
                            +
                            + + +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            XYAB
                            238
                            1357
                            4922777
                            32313535747
                            + +
                            +
                            +
                            + Table Rows:
                            (Just to show that the tree can determine that the tableStore works like a store).
                            Should have three branches, where the row had attr Y value of 3.
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/ml/unorderedList.html b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/unorderedList.html new file mode 100644 index 0000000..a19149a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/ml/unorderedList.html @@ -0,0 +1,17 @@ + + + + + HTML Unorderd List for HtmlStore + + +
                              +
                            • Red
                            • +
                            • Orange
                            • +
                            • Yellow
                            • +
                            • Green
                            • +
                            • Blue
                            • +
                            • Violet
                            • +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/module.js b/js/dojo-release-1.7.2-src/dojox/data/tests/module.js new file mode 100644 index 0000000..e040788 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/module.js @@ -0,0 +1,39 @@ +dojo.provide("dojox.data.tests.module"); + +try{ + dojo.require("dojox.data.tests.ClientFilter"); + dojo.require("dojox.data.tests.stores.CsvStore"); + dojo.require("dojox.data.tests.stores.KeyValueStore"); + dojo.require("dojox.data.tests.stores.AndOrReadStore"); + dojo.require("dojox.data.tests.stores.AndOrWriteStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.HtmlTableStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.HtmlStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.OpmlStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.XmlStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.FlickrStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.FlickrRestStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.PicasaStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.AtomReadStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.GoogleSearchStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.GoogleFeedStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.WikipediaStore"); + + //Load only if in a browser AND if the location is remote (not file. As it needs a PHP server to work). + if(dojo.isBrowser){ + if(window.location.protocol !== "file:"){ + dojo.require("dojox.data.tests.stores.QueryReadStore"); + dojo.require("dojox.data.tests.stores.SnapLogicStore"); + dojo.require("dojox.data.tests.stores.FileStore"); + } + } + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.CssRuleStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.CssClassStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.AppStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.stores.OpenSearchStore"); + dojo.requireIf(dojo.isBrowser, "dojox.data.tests.dom"); +}catch(e){ + doh.debug(e); +} + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/performance/CsvStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/performance/CsvStore.js new file mode 100755 index 0000000..7dba47a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/performance/CsvStore.js @@ -0,0 +1,166 @@ +dojo.provide("dojox.data.tests.performance.CsvStore"); +dojo.require("dojox.data.CsvStore"); +dojo.require("dojo.data.util.sorter"); + + +dojox.data.tests.performance.CsvStore.getData = function(size){ + // summary: + // This function generates a psuedorandom dataset collected + // from some templated entries. + // returns: + // A 2000 'row' CSV dataset. + + var header = "Title, Year, Producer\n"; + var templateData = [ + "City of God, 2002, Katia Lund\n", + "Rain,, Christine Jeffs\n", + "2001: A Space Odyssey, 1968, Stanley Kubrick\n", + '"This is a ""fake"" movie title", 1957, Sidney Lumet\n', + "Alien, 1979 , Ridley Scott\n", + '"The Sequel to ""Dances With Wolves.""", 1982, Ridley Scott\n', + '"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward"\n' + ]; + + var data = header; + + var i; + for(i = 0; i < size; i++){ + var idx =Math.floor(Math.random()*7); + data += templateData[idx]; + } + return data; +}; + + +doh.register("dojox.data.tests.performance.CsvStore",[ + { + name: "Initial Parse and First Fetch", + testType: "perf", + trialDuration: 100, + trialDelay: 50, + trialIterations: 50, + runTest: function(){ + store = new dojox.data.CsvStore({ + data: dojox.data.tests.performance.CsvStore.getData(2000) + }); + var def = new doh.Deferred(); + var complete = function(items, request){ + try{ + doh.assertEqual(2000, items.length); + def.callback(true); + }catch(e){ + def.errback(e); + } + }; + var err = function(error, request){ + def.errback(error); + }; + store.fetch({onComplete: complete, onError: err}); + return def; + } + }, + { + name: "Fetch All Data", + testType: "perf", + trialDuration: 100, + trialDelay: 50, + trialIterations: 50, + setUp: function(){ + dojox.data.tests.performance.CsvStore.store = new dojox.data.CsvStore({ + data: dojox.data.tests.performance.CsvStore.getData(2000) + }); + //Since the store is fed this way, it prettymuch acts sync + //and we can force a fill data load and parse. + //This gets the parse time out of the fetch. + dojox.data.tests.performance.CsvStore.store.fetch({}); + }, + tearDown: function(){ + delete dojox.data.tests.performance.CsvStore.store; + }, + runTest: function(){ + var store = dojox.data.tests.performance.CsvStore.store; + var def = new doh.Deferred(); + var complete = function(items, request){ + try{ + doh.assertEqual(2000, items.length); + def.callback(true); + }catch(e){ + def.errback(e); + } + }; + var err = function(error, request){ + def.errback(error); + }; + store.fetch({onComplete: complete, onError: err}); + if(!dojo.isSafari){ + //Well, realistically this is all sync so we don't *have* to + //pass back a deferred. I think safari is blowing stack again. + //Need to look more at DOH once more. + return def; + } + return null; + } + }, + { + name: "getValue", + testType: "perf", + trialDuration: 100, + trialDelay: 50, + trialIterations: 50, + setUp: function(){ + dojox.data.tests.performance.CsvStore.store = new dojox.data.CsvStore({ + data: dojox.data.tests.performance.CsvStore.getData(2000) + }); + //Since the store is fed this way, it prettymuch acts sync + //and we can force a fill data load and parse. + //This gets the parse time out of the fetch. + dojox.data.tests.performance.CsvStore.store.fetch({}); + }, + tearDown: function(){ + delete dojox.data.tests.performance.CsvStore.store; + }, + runTest: function(){ + //Yes, this is bad, I'm accessing internal data, but I don't care + //about the fetch time, only the getValue processing. So, + //I just gab the first item. + var value = dojox.data.tests.performance.CsvStore.store.getValue( + dojox.data.tests.performance.CsvStore.store._arrayOfAllItems[0], + "Title"); + } + }, + { + name: "sort (500 rows)", + testType: "perf", + trialDuration: 100, + trialDelay: 50, + trialIterations: 50, + setUp: function(){ + dojox.data.tests.performance.CsvStore.store = new dojox.data.CsvStore({ + data: dojox.data.tests.performance.CsvStore.getData(500) + }); + //Since the store is fed this way, it prettymuch acts sync + //and we can force a fill data load and parse. + //This gets the parse time out of the fetch. + dojox.data.tests.performance.CsvStore.store.fetch(); + }, + tearDown: function(){ + delete dojox.data.tests.performance.CsvStore.store; + }, + runTest: function(){ + //Yes, this is bad, I'm accessing internal data, but I don't care + //about the fetch time, only the getValue processing. So, + //I just gab the first item. + var sort = [{attribute: "Title"}]; + + //Create a clone array of all the data. Yes, this accesses internals, but my goal here + //is to test the sorter code with respect to the store. + var data = dojox.data.tests.performance.CsvStore.store._arrayOfAllItems.slice(0, + dojox.data.tests.performance.CsvStore.store._arrayOfAllItems.length); + + //Sort it using the generic sorter.. + data.sort(dojo.data.util.sorter.createSortFunction(sort, + dojox.data.tests.performance.CsvStore.store)); + } + } +]); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/performance/module.js b/js/dojo-release-1.7.2-src/dojox/data/tests/performance/module.js new file mode 100755 index 0000000..209696d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/performance/module.js @@ -0,0 +1,4 @@ +dojo.provide("dojox.data.tests.performance.module"); +dojo.require("dojox.data.tests.performance.CsvStore"); + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/performance/runTests.html b/js/dojo-release-1.7.2-src/dojox/data/tests/performance/runTests.html new file mode 100755 index 0000000..cbe6501 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/performance/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/data/tests/runTests.html new file mode 100644 index 0000000..49f065c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AndOrReadStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AndOrReadStore.js new file mode 100755 index 0000000..e054882 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AndOrReadStore.js @@ -0,0 +1,3575 @@ +dojo.provide("dojox.data.tests.stores.AndOrReadStore"); +dojo.require("dojox.data.AndOrReadStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); +dojo.require("dojo.date"); +dojo.require("dojo.date.stamp"); + +dojo.declare("dojox.data.tests.Wrapper", null, { + // summary: + // Simple class to use for typeMap in order to test out + // 'falsy' values for _value. + _wrapped: null, + + constructor: function(obj){ + this._wrapped = obj; + }, + + getValue: function() { + return this._wrapped; + }, + + setValue: function(obj) { + this._wrapped = obj; + }, + + toString: function(){ + return "WRAPPER: [" + this._wrapped + "]"; + } +}); + + +//The test data-sets and tests are taken from ItemFileReadStore, to show +// backwards compatibility. +//Additionally, where appropriate (fetch/query), the AndOrReadStore test is immediately +// followed by the same query (with ", complex" in the description), but with the query +// being a string rather than a json object. +//Below all those tests are new ones that test the use of AND, OR, NOT, ||, &&, (, ), and "," +// in queries, as well as a mix of string and json object queries. +//Since some widgets expect the query to be in json object form, in addition to the +// query="id:1234 || dept:'Sales Department' || (dept:Auto && id:2*)" programmatic syntax, +// query="{complexQuery:'id:1234 || dept:\"Sales Department\" || (dept:Auto && id:2*)" is +// tested/supported. + +//----------------------------------------------------- +// test data-sets +dojox.data.tests.stores.AndOrReadStore.getTestData = function(name){ + var data = null; + if(name === "countries"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("dojo/tests/data/countries.json").toString() }; + }else{ + data = {data: { + identifier:'abbr', + label:'name', + items:[ + {abbr:'ec', name:'Ecuador', capital:'Quito'}, + {abbr:'eg', name:'Egypt', capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:'Estonia', capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + } + }else if(name === "countries_withNull"){ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:null, capital:"Quito"}, + {abbr:'eg', name:null, capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:null, capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + }else if(name === "countries_withoutid"){ + data = {data: { + label: "name", + items:[ + {abbr:"ec", name:null, capital:"Quito"}, + {abbr:'eg', name:null, capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:null, capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + }else if (name === "countries_withBoolean"){ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:"Ecuador", capital:"Quito", real:true}, + {abbr:'eg', name:'Egypt', capital:'Cairo', real:true}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador', real:true}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo', real:true}, + {abbr:'er', name:'Eritrea', capital:'Asmara', real:true}, + {abbr:'ee', name:'Estonia', capital:'Tallinn', real:true}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa', real:true}, + {abbr:'ut', name:'Utopia', capital:'Paradise', real:false} + ] + } }; + }else if (name === "countries_withDates"){ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:"Ecuador", capital:"Quito"}, + {abbr:'eg', name:'Egypt', capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara', independence:{_type:'Date', _value:"1993-05-24T00:00:00Z"}}, // May 24, 1993, + {abbr:'ee', name:'Estonia', capital:'Tallinn', independence:{_type:'Date', _value:"1991-08-20T00:00:00Z"}}, // August 20, 1991 + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + }else if (name === "geography_hierarchy_small"){ + data = {data: { + items:[ + { name:'Africa', countries:[ + { name:'Egypt', capital:'Cairo' }, + { name:'Kenya', capital:'Nairobi' }, + { name:'Sudan', capital:'Khartoum' }]}, + { name:'Australia', capital:'Canberra' }, + { name:'North America', countries:[ + { name:'Canada', population:'33 million', cities:[ + { name:'Toronto', population:'2.5 million' }, + { name:'Alberta', population:'1 million' } + ]}, + { name: 'United States of America', capital: 'Washington DC', states:[ + { name: 'Missouri'}, + { name: 'Arkansas'} + ]} + ]} + ] + }}; + }else if (name === "data_multitype"){ + data = {data: { + "identifier": "count", + "label": "count", + items: [ + { count: 1, value: "true" }, + { count: 2, value: true }, + { count: 3, value: "false"}, + { count: 4, value: false }, + { count: 5, value: true }, + { count: 6, value: true }, + { count: 7, value: "true" }, + { count: 8, value: "true" }, + { count: 9, value: "false"}, + { count: 10, value: false }, + { count: 11, value: [false, false]}, + { count: "12", value: [false, "true"]} + ] + } + }; + }else if (name === "countries_references"){ + data = {data: { identifier: 'name', + label: 'name', + items: [ + { name:'Africa', type:'continent', + children:[{_reference:'Egypt'}, {_reference:'Kenya'}, {_reference:'Sudan'}] }, + { name:'Egypt', type:'country' }, + { name:'Kenya', type:'country', + children:[{_reference:'Nairobi'}, {_reference:'Mombasa'}] }, + { name:'Nairobi', type:'city' }, + { name:'Mombasa', type:'city' }, + { name:'Sudan', type:'country', + children:{_reference:'Khartoum'} }, + { name:'Khartoum', type:'city' }, + { name:'Asia', type:'continent', + children:[{_reference:'China'}, {_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] }, + { name:'China', type:'country' }, + { name:'India', type:'country' }, + { name:'Russia', type:'country' }, + { name:'Mongolia', type:'country' }, + { name:'Australia', type:'continent', population:'21 million', + children:{_reference:'Commonwealth of Australia'}}, + { name:'Commonwealth of Australia', type:'country', population:'21 million'}, + { name:'Europe', type:'continent', + children:[{_reference:'Germany'}, {_reference:'France'}, {_reference:'Spain'}, {_reference:'Italy'}] }, + { name:'Germany', type:'country' }, + { name:'France', type:'country' }, + { name:'Spain', type:'country' }, + { name:'Italy', type:'country' }, + { name:'North America', type:'continent', + children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] }, + { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', + children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] }, + { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, + { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' }, + { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', + children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] }, + { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, + { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }, + { name:'United States of America', type:'country' }, + { name:'South America', type:'continent', + children:[{_reference:'Brazil'}, {_reference:'Argentina'}] }, + { name:'Brazil', type:'country', population:'186 million' }, + { name:'Argentina', type:'country', population:'40 million' } + ] + } + }; + } + return data; +}; + +//----------------------------------------------------- +// tests +dojox.data.tests.stores.AndOrReadStore.getTests = function(){ + dojox.data.tests.stores.AndOrReadStore.tests = [ + { + name: "Identity API: fetchItemByIdentity()", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + if(item !== null){ + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + } + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() notFound", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item === null); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv_not", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentityAttributes()", + runTest: function(t){ + // summary: + // Simple test of the getIdentityAttributes function. + // description: + // Simple test of the getIdentityAttributes function. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var identifiers = store.getIdentityAttributes(item); + t.assertTrue(dojo.isArray(identifiers)); + t.assertEqual(1, identifiers.length); + t.assertEqual("abbr", identifiers[0]); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() commentFilteredJson", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + // This tests loading a comment-filtered json file so that people using secure + // data with this store can bypass the JavaSceipt hijack noted in Fortify's + // paper. + + if(dojo.isBrowser){ + var store = new dojox.data.AndOrReadStore({url: require.toUrl("dojo/tests/data/countries_commentFiltered.json").toString()}); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + } + }, + { + name: "Identity API: fetchItemByIdentity() nullValue", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store, checling a null value. + // description: + // Simple test of the fetchItemByIdentity function of the store, checking a null value. + // This tests handling attributes in json that were defined as null properly. + // Introduced because of tracker: #3153 + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries_withNull")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, null); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "ec", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() booleanValue", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. + // description: + // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries_withBoolean")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "Utopia"); + var real = store.getValue(item,"real"); + t.assertEqual(real, false); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "ut", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() withoutSpecifiedIdInData", + runTest: function(t){ + // summary: + // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. + // description: + // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "2", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity()", + runTest: function(t){ + // summary: + // Simple test of the getIdentity function of the store. + // description: + // Simple test of the getIdentity function of the store. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === "sv"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity() withoutSpecifiedId", + runTest: function(t){ + // summary: + // Simple test of the #4691 bug + // description: + // Simple test of the #4691 bug + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + var onItem = function(item, request){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query:{abbr: "sv"}, onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity() withoutSpecifiedId, complex", + runTest: function(t){ + // summary: + // Simple test of the #4691 bug + // description: + // Simple test of the #4691 bug + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + var onItem = function(item, request){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query:'abbr: "sv"', onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Read API: fetch() all", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore. + // description: + // Simple test of a basic fetch on AndOrReadStore. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var completedAll = function(items, request){ + t.is(7, items.length); + d.callback(true); + }; + var error = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + + //Get everything... + store.fetch({ onComplete: completedAll, onError: error}); + return d; + } + }, + { + name: "Read API: fetch() abort", + runTest: function(t){ + // summary: + // Simple test of a basic fetch abort on AndOrReadStore. + // description: + // Simple test of a basic fetch abort on AndOrReadStore. + if(dojo.isBrowser){ + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + var d = new doh.Deferred(); + var abortCalled = false; + function completedAll(items, request){ + t.is(7, items.length); + if(abortCalled){ + console.log("Made it to complete callback and abort was called. Problem."); + d.errback(new Error("Should not be here.")); + }else{ + //We beat out calling abort, so this is okay. Timing. + console.log("in onComplete and abort has not been called. Timing. This is okay."); + d.callback(true); + } + } + function error(errData, request){ + //An abort should throw a cancel error, so we should + //reach this. + t.assertTrue(true); + d.callback(true); + } + //Get everything... + var req = store.fetch({ onComplete: completedAll, onError: error}); + abortCalled=true; + console.log("Calling abort."); + req.abort(); + return d; + } + } + }, + { + name: "Read API: fetch() one", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: {abbr: "ec"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() one, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: 'abbr: "ec"', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() shallow", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of only toplevel items + // description: + // Simple test of a basic fetch on AndOrReadStore of only toplevel items. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "A*"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() shallow, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of only toplevel items + // description: + // Simple test of a basic fetch on AndOrReadStore of only toplevel items. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "A*"', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() Multiple", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onCompleteOne = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 2); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onCompleteTwo = function(items, request){ + done[1] = true; + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "A*"}, + onComplete: onCompleteOne, + onError: onError + }); + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "N*"}, + onComplete: onCompleteTwo, + onError: onError + }); + + return d; + } + }, + { + name: "Read API: fetch() Multiple, complex", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onCompleteOne = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 2); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onCompleteTwo = function(items, request){ + done[1] = true; + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "A*"', + onComplete: onCompleteOne, + onError: onError + }); + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "N*"', + onComplete: onCompleteTwo, + onError: onError + }); + + return d; + } + }, + { + name: "Read API: fetch() MultipleMixedFetch", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // Tests an item fetch and an identity fetch. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onComplete = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 1); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onItem = function(item){ + done[1] = true; + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "El*"}, + onComplete: onComplete, + onError: onError + }); + + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; + } + }, + { + name: "Read API: fetch() MultipleMixedFetch, complex", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // Tests an item fetch and an identity fetch. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onComplete = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 1); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onItem = function(item){ + done[1] = true; + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "El*"', + onComplete: onComplete, + onError: onError + }); + + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; + } + }, + { + name: "Read API: fetch() deep", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of all items (including children (nested)) + // description: + // Simple test of a basic fetch on AndOrReadStore of all items (including children (nested)) + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 4); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, including child (nested) items. + store.fetch({ query: {name: "A*"}, + onComplete: onComplete, + onError: onError, + queryOptions: {deep:true} + }); + return d; + } + }, + { + name: "Read API: fetch() deep, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of all items (including children (nested)) + // description: + // Simple test of a basic fetch on AndOrReadStore of all items (including children (nested)) + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 4); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, including child (nested) items. + store.fetch({ query: 'name: "A*"', + onComplete: onComplete, + onError: onError, + queryOptions: {deep:true} + }); + return d; + } + }, + { + name: "Read API: fetch() hierarchy off", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of all items with hierarchy disabled + // This should turn off processing child objects as data store items. It will still process + // references and type maps. + // description: + // Simple test of a basic fetch on AndOrReadStore of all items with hierarchy disabled + // This should turn off processing child objects as data store items. It will still process + // references and type maps. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + + //Set this as hierarchy off before fetch to make sure it traps and configs right. + store.hierarchical = false; + + var d = new doh.Deferred(); + function onComplete(items, request){ + //With hierarchy off, this should only match 2, as only two data store items + //will be quertied + t.assertEqual(2, items.length); + var i; + var passed = true; + for(i = 0; i < items.length; i++){ + var countries = store.getValues(items[i], "countries"); + if(countries){ + var j; + //Make sure none of the child objects were processed into items. + for(j = 0; j enumMap[b]) { + ret = 1; + } + if (enumMap[a] < enumMap[b]) { + ret = -1; + } + return ret; + }; + + var sortAttributes = [{attribute: "status", descending: true}, { attribute: "uniqueId", descending: true}]; + + var d = new doh.Deferred(); + var completed = function(items, findResult){ + var orderedArray = [11,6,2,12,10,4,8,7,3,9,5,1]; + var passed = true; + for(var i = 0; i < items.length; i++){ + var value = store.getValue(items[i], "value"); + if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + if (passed){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected sorting order found, sort failure.")); + } + }; + + var error = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); + return d; + } + }, + { + name: "Read API: fetch() sortAlphabeticWithUndefined", + runTest: function(t){ + // summary: + // Function to test sorting alphabetic ordering. + // description: + // Function to test sorting alphabetic ordering. + + var store = new dojox.data.AndOrReadStore({data: { identifier: "uniqueId", + items: [ {uniqueId: 0, value:"abc"}, + {uniqueId: 1, value:"bca"}, + {uniqueId: 2, value:"abcd"}, + {uniqueId: 3, value:"abcdefg"}, + {uniqueId: 4, value:"lmnop"}, + {uniqueId: 5, value:"foghorn"}, + {uniqueId: 6, value:"qberty"}, + {uniqueId: 7, value:"qwerty"}, + {uniqueId: 8 }, //Deliberate undefined value + {uniqueId: 9, value:"seaweed"}, + {uniqueId: 10, value:"123abc"} + + ] + } + }); + + var d = new doh.Deferred(); + var completed = function(items, request){ + //Output should be in this order... + var orderedArray = [10,0,2,3,1,5,4,6,7,9,8]; + t.assertEqual(items.length, 11); + var passed = true; + for(var i = 0; i < items.length; i++){ + if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + if (passed){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected sorting order found, sort failure.")); + } + }; + + var error = function(error, request) { + t.assertTrue(false); + d.errback(error); + }; + + var sortAttributes = [{attribute: "value"}]; + store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); + return d; + } + }, + { + name: "Read API: errorCondition_idCollision_inMemory", + runTest: function(t){ + // summary: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + // description: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + + var store = new dojox.data.AndOrReadStore({ data: { identifier: "uniqueId", + items: [{uniqueId: 12345, value:"foo"}, + {uniqueId: 123456, value:"bar"}, + {uniqueId: 12345, value:"boom"}, + {uniqueId: 123457, value:"bit"} + ] + } + }); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + //This is bad if this fires, this case should fail and not call onComplete. + t.assertTrue(false); + d.callback(false); + }; + + var reportError = function(errData, request){ + //This is good if this fires, it is expected. + t.assertTrue(true); + d.callback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; + } + }, + { + name: "Read API: errorCondition_idCollision_xhr", + runTest: function(t){ + // summary: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + // description: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + + if(dojo.isBrowser){ + var store = new dojox.data.AndOrReadStore({url: require.toUrl("dojo/tests/data/countries_idcollision.json").toString() }); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + //This is bad if this fires, this case should fail and not call onComplete. + t.assertTrue(false); + d.callback(false); + }; + + var reportError = function(errData, request){ + //This is good if this fires, it is expected. + t.assertTrue(true); + d.callback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; + } + } + }, + { + name: "Read API: Date_datatype", + runTest: function(t){ + //var store = new dojox.data.AndOrReadStore(tests.data.readOnlyItemFileTestTemplates.testFile["countries_withDates"]); + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries_withDates")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var independenceDate = store.getValue(item, "independence"); + t.assertTrue(independenceDate instanceof Date); + //Check to see if the value was deserialized properly. Since the store stores in UTC/GMT, it + //should also be compared in the UTC/GMT mode + t.assertTrue(dojo.date.stamp.toISOString(independenceDate, {zulu:true}) === "1993-05-24T00:00:00Z"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity:"er", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_Color_SimpleMapping", + runTest: function(t){ + // summary: + // Function to test using literal values with custom datatypes + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + var store = new dojox.data.AndOrReadStore({ + data:dataset, + typeMap:{'Color': dojo.Color} + }); + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var beaker = item; + var hairColor = store.getValue(beaker, "hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertTrue(hairColor.toHex() == "#ff0000"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_Color_GeneralMapping", + runTest: function(t){ + // summary: + // Function to test using literal values with custom datatypes + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + var store = new dojox.data.AndOrReadStore({ + data:dataset, + typeMap:{'Color': { + type: dojo.Color, + deserialize: function(value){ + return new dojo.Color(value); + } + } + } + }); + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var beaker = item; + var hairColor = store.getValue(beaker, "hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertTrue(hairColor.toHex() == "#ff0000"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject 0 (False) value", + runTest: function(t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', species:'human', age: {_type:'dojox.data.tests.Wrapper', _value:0} }, + { name:'Nancy', species:'human', age: {_type:'dojox.data.tests.Wrapper', _value:32} } + ] + }; + var store = new dojox.data.AndOrReadStore({ + data:dataset, + typeMap:{'dojox.data.tests.Wrapper': { + type: dojox.data.tests.Wrapper, + deserialize: function(value){ + return new dojox.data.tests.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + console.log(item); + t.assertTrue(item !== null); + var bob = item; + var age = store.getValue(item, "age"); + t.assertTrue(age instanceof dojox.data.tests.Wrapper); + t.assertTrue(age.toString() == "WRAPPER: [0]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject Boolean False values", + runTest: function(t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', isHuman: {_type:'dojox.data.tests.Wrapper', _value:false} }, + { name:'Nancy', isHuman: {_type:'dojox.data.tests.Wrapper', _value: true} } + ] + }; + var store = new dojox.data.AndOrReadStore({ + data:dataset, + typeMap:{'dojox.data.tests.Wrapper': { + type: dojox.data.tests.Wrapper, + deserialize: function(value){ + return new dojox.data.tests.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var isHuman = store.getValue(item, "isHuman"); + t.assertTrue(isHuman instanceof dojox.data.tests.Wrapper); + t.assertTrue(isHuman.toString() == "WRAPPER: [false]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject Empty String values", + runTest: function(t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', lastName: {_type:'dojox.data.tests.Wrapper', _value:""} }, + { name:'Nancy', lastName: {_type:'dojox.data.tests.Wrapper', _value: "Doe"} } + ] + }; + var store = new dojox.data.AndOrReadStore({ + data:dataset, + typeMap:{'dojox.data.tests.Wrapper': { + type: dojox.data.tests.Wrapper, + deserialize: function(value){ + return new dojox.data.tests.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var lastName = store.getValue(item, "lastName"); + t.assertTrue(lastName instanceof dojox.data.tests.Wrapper); + t.assertTrue(lastName.toString() == "WRAPPER: []"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject explicit null values", + runTest: function(t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', lastName: {_type:'dojox.data.tests.Wrapper', _value:null} }, + { name:'Nancy', lastName: {_type:'dojox.data.tests.Wrapper', _value: "Doe"} } + ] + }; + var store = new dojox.data.AndOrReadStore({ + data:dataset, + typeMap:{'dojox.data.tests.Wrapper': { + type: dojox.data.tests.Wrapper, + deserialize: function(value){ + return new dojox.data.tests.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var lastName = store.getValue(item, "lastName"); + t.assertTrue(lastName instanceof dojox.data.tests.Wrapper); + t.assertTrue(lastName.toString() == "WRAPPER: [null]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_CustomObject explicit undefined value", + runTest: function(t){ + // summary: + // Function to test type mapping and _values that are false-like + var dataset = { + identifier:'name', + items: [ + { name:'Bob', lastName: {_type:'dojox.data.tests.Wrapper', _value: undefined} }, + { name:'Nancy', lastName: {_type:'dojox.data.tests.Wrapper', _value: "Doe"} } + ] + }; + var store = new dojox.data.AndOrReadStore({ + data:dataset, + typeMap:{'dojox.data.tests.Wrapper': { + type: dojox.data.tests.Wrapper, + deserialize: function(value){ + return new dojox.data.tests.Wrapper(value); + } + } + } + }); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var bob = item; + var lastName = store.getValue(item, "lastName"); + t.assertTrue(lastName instanceof dojox.data.tests.Wrapper); + t.assertTrue(lastName.toString() == "WRAPPER: [undefined]"); + d.callback(true); + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"Bob", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + + { + name: "Read API: hierarchical_data", + runTest: function(t){ + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + var northAmerica = items[0]; + var canada = store.getValue(northAmerica, "countries"); + var toronto = store.getValue(canada, "cities"); + t.assertEqual(store.getValue(canada, "name"), "Canada"); + t.assertEqual(store.getValue(toronto, "name"), "Toronto"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetch({ + query: {name: "North America"}, + onComplete: onComplete, + onError: onError + }); + + return d; // Deferred + } + }, + { + name: "Read API: hierarchical_data, complex", + runTest: function(t){ + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + var northAmerica = items[0]; + var canada = store.getValue(northAmerica, "countries"); + var toronto = store.getValue(canada, "cities"); + t.assertEqual(store.getValue(canada, "name"), "Canada"); + t.assertEqual(store.getValue(toronto, "name"), "Toronto"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetch({ + query: 'name: "North America"', + onComplete: onComplete, + onError: onError + }); + + return d; // Deferred + } + }, + { + name: "Read API: close (clearOnClose: true, reset url.)", + runTest: function(t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + store.clearOnClose = true; + store.urlPreventCache = true; + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store.url = require.toUrl("dojo/tests/data/countries_withNull.json").toString() + function onItem2 (item){ + var err; + try{ + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem2, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: fetch, close (clearOnClose: true, reset url.)", + runTest: function(t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + store.clearOnClose = true; + store.urlPreventCache = true; + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store.url = require.toUrl("dojo/tests/data/countries_withNull.json").toString() + function onComplete (items){ + var err; + try{ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetch({query: {abbr:"ec"}, onComplete:onComplete, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: true, reset _jsonFileUrl.)", + runTest: function(t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + store.clearOnClose = true; + store.urlPreventCache = true; + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store._jsonFileUrl = require.toUrl("dojo/tests/data/countries_withNull.json").toString() + function onItem2 (item){ + var err; + try{ + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem2, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: true, reset data.)", + runTest: function(t){ + // summary: + // Function to test that clear on close and reset of data works. + // description: + // Function to test that clear on close and reset of data works. + var store = new dojox.data.AndOrReadStore({data: { identifier: "uniqueId", + items: [ {uniqueId: 1, value:"foo*bar"}, + {uniqueId: 2, value:"bar*foo"}, + {uniqueId: 3, value:"boomBam"}, + {uniqueId: 4, value:"bit$Bite"}, + {uniqueId: 5, value:"ouagadogou"}, + {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, + {uniqueId: 7, value:"squawl"}, + {uniqueId: 8, value:"seaweed"}, + {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} + ] + } + }); + + var d = new doh.Deferred(); + var firstComplete = function(items, request){ + t.assertEqual(items.length, 1); + var firstItem = items[0]; + + //Set the store clearing options and the new data + store.clearOnClose = true; + store.data = { identifier: "uniqueId", + items: [ {uniqueId: 1, value:"foo*bar"}, + {uniqueId: 2, value:"bar*foo"}, + {uniqueId: 3, value:"boomBam"}, + {uniqueId: 4, value:"bit$Bite"}, + {uniqueId: 5, value:"ouagadogou"}, + {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, + {uniqueId: 7, value:"squawl"}, + {uniqueId: 8, value:"seaweed"}, + {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} + ] + }; + store.close(); + + //Do the next fetch and verify that the next item you get is not + //a reference to the same item (data cleared and reloaded. + var secondComplete = function(items, request){ + try{ + t.assertEqual(items.length, 1); + var secondItem = items[0]; + t.assertTrue(firstItem != null); + t.assertTrue(secondItem != null); + t.assertTrue(firstItem != secondItem); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + store.fetch({query: {value: "bar\*foo"}, onComplete: secondComplete, onError: error}); + } + function error(error, request){ + t.assertTrue(false); + d.errback(error); + } + store.fetch({query: {value: "bar\*foo"}, onComplete: firstComplete, onError: error}); + return d; + } + }, + { + name: "Identity API: no_identifier_specified", + runTest: function(t){ + var arrayOfItems = [ + {name:"Kermit", color:"green"}, + {name:"Miss Piggy", likes:"Kermit"}, + {name:"Beaker", hairColor:"red"} + ]; + var store = new dojox.data.AndOrReadStore({data:{items:arrayOfItems}}); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + var features = store.getFeatures(); + var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); + t.assertTrue(hasIdentityFeature); + for(var i = 0; i < items.length; ++i){ + var item = items[i]; + var identifier = store.getIdentityAttributes(item); + t.assertTrue(identifier === null); + var identity = store.getIdentity(item); + t.assertTrue(typeof identity == "number"); + } + d.callback(true); + }; + var reportError = function(errData, request){ + d.errback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; // Deferred + } + }, + { + name: "Identity API: hierarchical_data", + runTest: function(t){ + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + var features = store.getFeatures(); + var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); + t.assertTrue(hasIdentityFeature); + for(var i = 0; i < items.length; ++i){ + var item = items[i]; + var identifier = store.getIdentityAttributes(item); + t.assertTrue(identifier === null); + var identity = store.getIdentity(item); + t.assertTrue(typeof identity == "number"); + } + d.callback(true); + }; + var reportError = function(errData, request){ + d.errback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; // Deferred + } + }, + { + name: "Read API: functionConformance", + runTest: function(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + }, + { + name: "Identity API: functionConformance", + runTest: function(t){ + // summary: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + + for(var i in identityApi){ + + if(i.toString().charAt(0) !== '_') + { + var member = identityApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + }, + //complex parallels of existing simple queries immediately follow them above. can search on "complex" + //below are complex queries. + { + name: "Read API: fetch() multiple, OR, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: 'abbr: "s*" || capital:"A*"', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND(OR, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: 'abbr: "e*" AND (capital:"A*" or capital: "Q*")', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND(OR, as json object, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: {complexQuery:'abbr: "e*" AND (capital:"A*" or capital: "Q*")'}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND/OR, as json object, complex, with extra attrs", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: {complexQuery:'abbr: "e*" AND (capital:"A*" or capital: "Q*")', name: "Ec*"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND/OR, as json object, complex, with extra attrs and spaces", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + t.assertEqual("Equatorial Guinea", store.getValue(items[0], "name")); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: {complexQuery:'abbr: "g*" AND (capital:"A*" or capital: "M*")', name: "Equatorial G*"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND/OR, as quoted json object, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrReadStore of a single item. + // description: + // Simple test of a basic fetch on AndOrReadStore of a single item. + var store = new dojox.data.AndOrReadStore(dojox.data.tests.stores.AndOrReadStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: "{complexQuery:'abbr: \"e*\" AND (capital:\"A*\" or capital: \"Q*\")'}", + onComplete: onComplete, + onError: onError + }); + return d; + } + } + ]; + return dojox.data.tests.stores.AndOrReadStore.tests; +}; +doh.register("dojox.data.tests.stores.AndOrReadStore", dojox.data.tests.stores.AndOrReadStore.getTests()); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AndOrWriteStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AndOrWriteStore.js new file mode 100755 index 0000000..9a262d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AndOrWriteStore.js @@ -0,0 +1,4965 @@ +dojo.provide("dojox.data.tests.stores.AndOrWriteStore"); +dojo.require("dojox.data.AndOrWriteStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); +dojo.require("dojo.date"); +dojo.require("dojo.date.stamp"); +dojo.require("dojo.data.api.Write"); +dojo.require("dojo.data.api.Notification"); + + +//The test data-sets and tests are taken from ItemFileReadStore, to show +// backwards compatibility, and from ItemFileWriteStore. +//Since no new write capabilities are included in AndOrWriteStore (just those from +// ItemFileWriteStore), no new write tests were added. +//Additionally, where appropriate (fetch/query), the ItemFileReadStore test is immediately +// followed by the same query (with ", complex" in the description), but with the query +// being a string rather than a json object. +//Below all those tests are new ones that test the use of AND, OR, NOT, ||, &&, (, ), and "," +// in queries, as well as a mix of string and json object queries. +//Since some widgets expect the query to be in json object form, in addition to the +// query="id:1234 || dept:'Sales Department' || (dept:Auto && id:2*)" programmatic syntax, +// query="{complexQuery:'id:1234 || dept:\"Sales Department\" || (dept:Auto && id:2*)" is +// tested/supported. + +//----------------------------------------------------- +// test data-sets +dojox.data.tests.stores.AndOrWriteStore.getTestData = function(name){ + var data = null; + if(name === "countries"){ + if(dojo.isBrowser){ + data = {url: require.toUrl("dojo/tests/data/countries.json").toString() }; + }else{ + data = {data: { + identifier:'abbr', + label:'name', + items:[ + {abbr:'ec', name:'Ecuador', capital:'Quito'}, + {abbr:'eg', name:'Egypt', capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:'Estonia', capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + } + }else if(name === "countries_withNull"){ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:null, capital:"Quito"}, + {abbr:'eg', name:null, capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:null, capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + }else if(name === "countries_withoutid"){ + data = {data: { + label: "name", + items:[ + {abbr:"ec", name:null, capital:"Quito"}, + {abbr:'eg', name:null, capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara'}, + {abbr:'ee', name:null, capital:'Tallinn'}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + }else if (name === "countries_withBoolean"){ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:"Ecuador", capital:"Quito", real:true}, + {abbr:'eg', name:'Egypt', capital:'Cairo', real:true}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador', real:true}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo', real:true}, + {abbr:'er', name:'Eritrea', capital:'Asmara', real:true}, + {abbr:'ee', name:'Estonia', capital:'Tallinn', real:true}, + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa', real:true}, + {abbr:'ut', name:'Utopia', capital:'Paradise', real:false} + ] + } }; + }else if (name === "countries_withDates"){ + data = {data: { + identifier:"abbr", + items:[ + {abbr:"ec", name:"Ecuador", capital:"Quito"}, + {abbr:'eg', name:'Egypt', capital:'Cairo'}, + {abbr:'sv', name:'El Salvador', capital:'San Salvador'}, + {abbr:'gq', name:'Equatorial Guinea', capital:'Malabo'}, + {abbr:'er', name:'Eritrea', capital:'Asmara', independence:{_type:'Date', _value:"1993-05-24T00:00:00Z"}}, // May 24, 1993, + {abbr:'ee', name:'Estonia', capital:'Tallinn', independence:{_type:'Date', _value:"1991-08-20T00:00:00Z"}}, // August 20, 1991 + {abbr:'et', name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + }else if (name === "geography_hierarchy_small"){ + data = {data: { + items:[ + { name:'Africa', countries:[ + { name:'Egypt', capital:'Cairo' }, + { name:'Kenya', capital:'Nairobi' }, + { name:'Sudan', capital:'Khartoum' }]}, + { name:'Australia', capital:'Canberra' }, + { name:'North America', countries:[ + { name:'Canada', population:'33 million', cities:[ + { name:'Toronto', population:'2.5 million' }, + { name:'Alberta', population:'1 million' } + ]}, + { name: 'United States of America', capital: 'Washington DC', states:[ + { name: 'Missouri'}, + { name: 'Arkansas'} + ]} + ]} + ] + }}; + }else if (name === "data_multitype"){ + data = {data: { + "identifier": "count", + "label": "count", + items: [ + { count: 1, value: "true" }, + { count: 2, value: true }, + { count: 3, value: "false"}, + { count: 4, value: false }, + { count: 5, value: true }, + { count: 6, value: true }, + { count: 7, value: "true" }, + { count: 8, value: "true" }, + { count: 9, value: "false"}, + { count: 10, value: false }, + { count: 11, value: [false, false]}, + { count: "12", value: [false, "true"]} + ] + } + }; + }else if (name === "countries_references"){ + data = {data: { identifier: 'name', + label: 'name', + items: [ + { name:'Africa', type:'continent', + children:[{_reference:'Egypt'}, {_reference:'Kenya'}, {_reference:'Sudan'}] }, + { name:'Egypt', type:'country' }, + { name:'Kenya', type:'country', + children:[{_reference:'Nairobi'}, {_reference:'Mombasa'}] }, + { name:'Nairobi', type:'city' }, + { name:'Mombasa', type:'city' }, + { name:'Sudan', type:'country', + children:{_reference:'Khartoum'} }, + { name:'Khartoum', type:'city' }, + { name:'Asia', type:'continent', + children:[{_reference:'China'}, {_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] }, + { name:'China', type:'country' }, + { name:'India', type:'country' }, + { name:'Russia', type:'country' }, + { name:'Mongolia', type:'country' }, + { name:'Australia', type:'continent', population:'21 million', + children:{_reference:'Commonwealth of Australia'}}, + { name:'Commonwealth of Australia', type:'country', population:'21 million'}, + { name:'Europe', type:'continent', + children:[{_reference:'Germany'}, {_reference:'France'}, {_reference:'Spain'}, {_reference:'Italy'}] }, + { name:'Germany', type:'country' }, + { name:'France', type:'country' }, + { name:'Spain', type:'country' }, + { name:'Italy', type:'country' }, + { name:'North America', type:'continent', + children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] }, + { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', + children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] }, + { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, + { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' }, + { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', + children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] }, + { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, + { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }, + { name:'United States of America', type:'country' }, + { name:'South America', type:'continent', + children:[{_reference:'Brazil'}, {_reference:'Argentina'}] }, + { name:'Brazil', type:'country', population:'186 million' }, + { name:'Argentina', type:'country', population:'40 million' } + ] + } + }; + }else if(name === "reference_integrity"){ //write test data. + data = + { data: { + "identifier": "id", + "label": "name", + "items": [ + {"id": 1, "name": "Item 1"}, + {"id": 2, "name": "Item 2"}, + {"id": 3, "name": "Item 3"}, + {"id": 4, "name": "Item 4"}, + {"id": 5, "name": "Item 5"}, + {"id": 6, "name": "Item 6"}, + {"id": 7, "name": "Item 7"}, + {"id": 8, "name": "Item 8"}, + {"id": 9, "name": "Item 9"}, + {"id": 10, "name": "Item 10", "friends": [{"_reference": 1},{"_reference": 3},{"_reference": 5}]}, + {"id": 11, "name": "Item 11", "friends": [{"_reference": 10}], "siblings": [{"_reference": 10}]}, + {"id": 12, "name": "Item 12", "friends": [{"_reference": 3},{"_reference": 7}], "enemies": [{"_reference": 10}]}, + {"id": 13, "name": "Item 13", "friends": [{"_reference": 10}]}, + {"id": 14, "name": "Item 14", "friends": [{"_reference": 11}]}, + {"id": 15, "name": "item 15", "friends": [{"id": 16, "name": "Item 16"}]} + ] + } + }; + } + + return data; +}; + +//----------------------------------------------------- +// tests +dojox.data.tests.stores.AndOrWriteStore.getTests = function(){ + dojox.data.tests.stores.AndOrWriteStore.tests = [ + { + name: "Identity API: fetchItemByIdentity()", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + if(item !== null){ + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + } + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() notFound", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item === null); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv_not", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentityAttributes()", + runTest: function(t){ + // summary: + // Simple test of the getIdentityAttributes function. + // description: + // Simple test of the getIdentityAttributes function. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var identifiers = store.getIdentityAttributes(item); + t.assertTrue(dojo.isArray(identifiers)); + t.assertEqual(1, identifiers.length); + t.assertEqual("abbr", identifiers[0]); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() commentFilteredJson", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + // This tests loading a comment-filtered json file so that people using secure + // data with this store can bypass the JavaSceipt hijack noted in Fortify's + // paper. + + if(dojo.isBrowser){ + var store = new dojox.data.AndOrWriteStore({url: require.toUrl("dojo/tests/data/countries_commentFiltered.json").toString()}); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + } + }, + { + name: "Identity API: fetchItemByIdentity() nullValue", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store, checling a null value. + // description: + // Simple test of the fetchItemByIdentity function of the store, checking a null value. + // This tests handling attributes in json that were defined as null properly. + // Introduced because of tracker: #3153 + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries_withNull")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, null); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "ec", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() booleanValue", + runTest: function(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. + // description: + // Simple test of the fetchItemByIdentity function of the store, checking a boolean value. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries_withBoolean")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "Utopia"); + var real = store.getValue(item,"real"); + t.assertEqual(real, false); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "ut", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: fetchItemByIdentity() withoutSpecifiedIdInData", + runTest: function(t){ + // summary: + // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. + // description: + // Simple test of bug #4691, looking up something by assigned id, not one specified in the JSON data. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "2", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity()", + runTest: function(t){ + // summary: + // Simple test of the getIdentity function of the store. + // description: + // Simple test of the getIdentity function of the store. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === "sv"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity() withoutSpecifiedId", + runTest: function(t){ + // summary: + // Simple test of the #4691 bug + // description: + // Simple test of the #4691 bug + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + var onItem = function(item, request){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query:{abbr: "sv"}, onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Identity API: getIdentity() withoutSpecifiedId, complex", + runTest: function(t){ + // summary: + // Simple test of the #4691 bug + // description: + // Simple test of the #4691 bug + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries_withoutid")); + + var d = new doh.Deferred(); + var onItem = function(item, request){ + t.assertTrue(item !== null); + t.assertTrue(store.getIdentity(item) === 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query:'abbr: "sv"', onItem: onItem, onError: onError}); + return d; // Deferred + } + }, + { + name: "Read API: fetch() all", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore. + // description: + // Simple test of a basic fetch on AndOrWriteStore. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var completedAll = function(items, request){ + t.is(7, items.length); + d.callback(true); + }; + var error = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + + //Get everything... + store.fetch({ onComplete: completedAll, onError: error}); + return d; + } + }, + { + name: "Read API: fetch() abort", + runTest: function(t){ + // summary: + // Simple test of a basic fetch abort on AndOrWriteStore. + // description: + // Simple test of a basic fetch abort on AndOrWriteStore. + if(dojo.isBrowser){ + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var d = new doh.Deferred(); + var abortCalled = false; + function completedAll(items, request){ + t.is(7, items.length); + if(abortCalled){ + console.log("Made it to complete callback and abort was called. Problem."); + d.errback(new Error("Should not be here.")); + }else{ + //We beat out calling abort, so this is okay. Timing. + console.log("in onComplete and abort has not been called. Timing. This is okay."); + d.callback(true); + } + } + function error(errData, request){ + //An abort should throw a cancel error, so we should + //reach this. + t.assertTrue(true); + d.callback(true); + } + //Get everything... + var req = store.fetch({ onComplete: completedAll, onError: error}); + abortCalled=true; + console.log("Calling abort."); + req.abort(); + return d; + } + } + }, + { + name: "Read API: fetch() one", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: {abbr: "ec"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() one, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: 'abbr: "ec"', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() shallow", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of only toplevel items + // description: + // Simple test of a basic fetch on AndOrWriteStore of only toplevel items. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "A*"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() shallow, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of only toplevel items + // description: + // Simple test of a basic fetch on AndOrWriteStore of only toplevel items. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 2); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "A*"', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() Multiple", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onCompleteOne = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 2); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onCompleteTwo = function(items, request){ + done[1] = true; + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "A*"}, + onComplete: onCompleteOne, + onError: onError + }); + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "N*"}, + onComplete: onCompleteTwo, + onError: onError + }); + + return d; + } + }, + { + name: "Read API: fetch() Multiple, complex", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onCompleteOne = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 2); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onCompleteTwo = function(items, request){ + done[1] = true; + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "A*"', + onComplete: onCompleteOne, + onError: onError + }); + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "N*"', + onComplete: onCompleteTwo, + onError: onError + }); + + return d; + } + }, + { + name: "Read API: fetch() MultipleMixedFetch", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // Tests an item fetch and an identity fetch. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onComplete = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 1); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onItem = function(item){ + done[1] = true; + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: {name: "El*"}, + onComplete: onComplete, + onError: onError + }); + + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; + } + }, + { + name: "Read API: fetch() MultipleMixedFetch, complex", + runTest: function(t){ + // summary: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // description: + // Tests that multiple fetches at the same time queue up properly and do not clobber each other on initial load. + // Tests an item fetch and an identity fetch. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var done = [false, false]; + + var onComplete = function(items, request){ + done[0] = true; + t.assertEqual(items.length, 1); + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onItem = function(item){ + done[1] = true; + t.assertTrue(item !== null); + var name = store.getValue(item,"name"); + t.assertEqual(name, "El Salvador"); + + if(done[0] && done[1]){ + d.callback(true); + } + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + + //Find all items starting with A, only toplevel (root) items. + store.fetch({ query: 'name: "El*"', + onComplete: onComplete, + onError: onError + }); + + store.fetchItemByIdentity({identity: "sv", onItem: onItem, onError: onError}); + return d; + } + }, + { + name: "Read API: fetch() deep", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of all items (including children (nested)) + // description: + // Simple test of a basic fetch on AndOrWriteStore of all items (including children (nested)) + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 4); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, including child (nested) items. + store.fetch({ query: {name: "A*"}, + onComplete: onComplete, + onError: onError, + queryOptions: {deep:true} + }); + return d; + } + }, + { + name: "Read API: fetch() deep, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of all items (including children (nested)) + // description: + // Simple test of a basic fetch on AndOrWriteStore of all items (including children (nested)) + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 4); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + //Find all items starting with A, including child (nested) items. + store.fetch({ query: 'name: "A*"', + onComplete: onComplete, + onError: onError, + queryOptions: {deep:true} + }); + return d; + } + }, + { + name: "Read API: fetch() hierarchy off", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of all items with hierarchy disabled + // This should turn off processing child objects as data store items. It will still process + // references and type maps. + // description: + // Simple test of a basic fetch on AndOrWriteStore of all items with hierarchy disabled + // This should turn off processing child objects as data store items. It will still process + // references and type maps. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + + //Set this as hierarchy off before fetch to make sure it traps and configs right. + store.hierarchical = false; + + var d = new doh.Deferred(); + function onComplete(items, request){ + //With hierarchy off, this should only match 2, as only two data store items + //will be quertied + t.assertEqual(2, items.length); + var i; + var passed = true; + for(i = 0; i < items.length; i++){ + var countries = store.getValues(items[i], "countries"); + if(countries){ + var j; + //Make sure none of the child objects were processed into items. + for(j = 0; j enumMap[b]) { + ret = 1; + } + if (enumMap[a] < enumMap[b]) { + ret = -1; + } + return ret; + }; + + var sortAttributes = [{attribute: "status", descending: true}, { attribute: "uniqueId", descending: true}]; + + var d = new doh.Deferred(); + var completed = function(items, findResult){ + var orderedArray = [11,6,2,12,10,4,8,7,3,9,5,1]; + var passed = true; + for(var i = 0; i < items.length; i++){ + var value = store.getValue(items[i], "value"); + if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + if (passed){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected sorting order found, sort failure.")); + } + }; + + var error = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); + return d; + } + }, + { + name: "Read API: fetch() sortAlphabeticWithUndefined", + runTest: function(t){ + // summary: + // Function to test sorting alphabetic ordering. + // description: + // Function to test sorting alphabetic ordering. + + var store = new dojox.data.AndOrWriteStore({data: { identifier: "uniqueId", + items: [ {uniqueId: 0, value:"abc"}, + {uniqueId: 1, value:"bca"}, + {uniqueId: 2, value:"abcd"}, + {uniqueId: 3, value:"abcdefg"}, + {uniqueId: 4, value:"lmnop"}, + {uniqueId: 5, value:"foghorn"}, + {uniqueId: 6, value:"qberty"}, + {uniqueId: 7, value:"qwerty"}, + {uniqueId: 8 }, //Deliberate undefined value + {uniqueId: 9, value:"seaweed"}, + {uniqueId: 10, value:"123abc"} + + ] + } + }); + + var d = new doh.Deferred(); + var completed = function(items, request){ + //Output should be in this order... + var orderedArray = [10,0,2,3,1,5,4,6,7,9,8]; + t.assertEqual(items.length, 11); + var passed = true; + for(var i = 0; i < items.length; i++){ + if(!(store.getValue(items[i], "uniqueId") === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + if (passed){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected sorting order found, sort failure.")); + } + }; + + var error = function(error, request) { + t.assertTrue(false); + d.errback(error); + }; + + var sortAttributes = [{attribute: "value"}]; + store.fetch({onComplete: completed, onError: error, sort: sortAttributes}); + return d; + } + }, + { + name: "Read API: errorCondition_idCollision_inMemory", + runTest: function(t){ + // summary: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + // description: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + + var store = new dojox.data.AndOrWriteStore({ data: { identifier: "uniqueId", + items: [{uniqueId: 12345, value:"foo"}, + {uniqueId: 123456, value:"bar"}, + {uniqueId: 12345, value:"boom"}, + {uniqueId: 123457, value:"bit"} + ] + } + }); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + //This is bad if this fires, this case should fail and not call onComplete. + t.assertTrue(false); + d.callback(false); + }; + + var reportError = function(errData, request){ + //This is good if this fires, it is expected. + t.assertTrue(true); + d.callback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; + } + }, + { + name: "Read API: errorCondition_idCollision_xhr", + runTest: function(t){ + // summary: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + // description: + // Simple test of the errors thrown when there is an id collision in the data. + // Added because of tracker: #2546 + + if(dojo.isBrowser){ + var store = new dojox.data.AndOrWriteStore({url: require.toUrl("dojo/tests/data/countries_idcollision.json").toString() }); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + //This is bad if this fires, this case should fail and not call onComplete. + t.assertTrue(false); + d.callback(false); + }; + + var reportError = function(errData, request){ + //This is good if this fires, it is expected. + t.assertTrue(true); + d.callback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; + } + } + }, + { + name: "Read API: Date_datatype", + runTest: function(t){ + //var store = new dojox.data.AndOrWriteStore(tests.data.readOnlyItemFileTestTemplates.testFile["countries_withDates"]); + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries_withDates")); + + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var independenceDate = store.getValue(item, "independence"); + t.assertTrue(independenceDate instanceof Date); + //Check to see if the value was deserialized properly. Since the store stores in UTC/GMT, it + //should also be compared in the UTC/GMT mode + t.assertTrue(dojo.date.stamp.toISOString(independenceDate, {zulu:true}) === "1993-05-24T00:00:00Z"); + d.callback(true); + }; + var onError = function(errData){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetchItemByIdentity({identity:"er", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_Color_SimpleMapping", + runTest: function(t){ + // summary: + // Function to test using literal values with custom datatypes + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + var store = new dojox.data.AndOrWriteStore({ + data:dataset, + typeMap:{'Color': dojo.Color} + }); + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var beaker = item; + var hairColor = store.getValue(beaker, "hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertTrue(hairColor.toHex() == "#ff0000"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: custom_datatype_Color_GeneralMapping", + runTest: function(t){ + // summary: + // Function to test using literal values with custom datatypes + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + var store = new dojox.data.AndOrWriteStore({ + data:dataset, + typeMap:{'Color': { + type: dojo.Color, + deserialize: function(value){ + return new dojo.Color(value); + } + } + } + }); + var d = new doh.Deferred(); + var onItem = function(item){ + t.assertTrue(item !== null); + var beaker = item; + var hairColor = store.getValue(beaker, "hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertTrue(hairColor.toHex() == "#ff0000"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetchItemByIdentity({identity:"Beaker", onItem:onItem, onError:onError}); + return d; // Deferred + } + }, + { + name: "Read API: hierarchical_data", + runTest: function(t){ + //var store = new dojox.data.AndOrWriteStore(tests.data.readOnlyItemFileTestTemplates.testFile["geography_hierarchy_small"]); + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + var northAmerica = items[0]; + var canada = store.getValue(northAmerica, "countries"); + var toronto = store.getValue(canada, "cities"); + t.assertEqual(store.getValue(canada, "name"), "Canada"); + t.assertEqual(store.getValue(toronto, "name"), "Toronto"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetch({ + query: {name: "North America"}, + onComplete: onComplete, + onError: onError + }); + + return d; // Deferred + } + }, + { + name: "Read API: hierarchical_data, complex", + runTest: function(t){ + //var store = new dojox.data.AndOrWriteStore(tests.data.readOnlyItemFileTestTemplates.testFile["geography_hierarchy_small"]); + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + var northAmerica = items[0]; + var canada = store.getValue(northAmerica, "countries"); + var toronto = store.getValue(canada, "cities"); + t.assertEqual(store.getValue(canada, "name"), "Canada"); + t.assertEqual(store.getValue(toronto, "name"), "Toronto"); + d.callback(true); + }; + var onError = function(errData){ + d.errback(errData); + }; + store.fetch({ + query: 'name: "North America"', + onComplete: onComplete, + onError: onError + }); + + return d; // Deferred + } + }, + { + name: "Identity API: no_identifier_specified", + runTest: function(t){ + var arrayOfItems = [ + {name:"Kermit", color:"green"}, + {name:"Miss Piggy", likes:"Kermit"}, + {name:"Beaker", hairColor:"red"} + ]; + var store = new dojox.data.AndOrWriteStore({data:{items:arrayOfItems}}); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + var features = store.getFeatures(); + var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); + t.assertTrue(hasIdentityFeature); + for(var i = 0; i < items.length; ++i){ + var item = items[i]; + var identifier = store.getIdentityAttributes(item); + t.assertTrue(identifier === null); + var identity = store.getIdentity(item); + t.assertTrue(typeof identity == "number"); + } + d.callback(true); + }; + var reportError = function(errData, request){ + d.errback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; // Deferred + } + }, + { + name: "Identity API: hierarchical_data", + runTest: function(t){ + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("geography_hierarchy_small")); + var d = new doh.Deferred(); + var onComplete = function(items, request){ + var features = store.getFeatures(); + var hasIdentityFeature = Boolean(features['dojo.data.api.Identity']); + t.assertTrue(hasIdentityFeature); + for(var i = 0; i < items.length; ++i){ + var item = items[i]; + var identifier = store.getIdentityAttributes(item); + t.assertTrue(identifier === null); + var identity = store.getIdentity(item); + t.assertTrue(typeof identity == "number"); + } + d.callback(true); + }; + var reportError = function(errData, request){ + d.errback(true); + }; + store.fetch({onComplete: onComplete, onError: reportError}); + return d; // Deferred + } + }, + { + name: "Read API: functionConformance", + runTest: function(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + }, + { + name: "Identity API: functionConformance", + runTest: function(t){ + // summary: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + + for(var i in identityApi){ + + if(i.toString().charAt(0) !== '_') + { + var member = identityApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + }, + //complex parallels of existing simple queries immediately follow them above. can search on "complex" + //below are complex queries. + { + name: "Read API: fetch() multiple, OR, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: 'abbr: "s*" || capital:"A*"', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND(OR, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: 'abbr: "e*" AND (capital:"A*" or capital: "Q*")', + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND/OR, as json object, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: {complexQuery:'abbr: "e*" AND (capital:"A*" or capital: "Q*")'}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND/OR, as json object, complex, with extra attrs", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 1); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: {complexQuery:'abbr: "e*" AND (capital:"A*" or capital: "Q*")', name: "Ec*"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND/OR, as json object, complex, with extra attrs and spaces", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + try{ + t.assertEqual(items.length, 1); + t.assertEqual("Equatorial Guinea", store.getValue(items[0], "name")); + d.callback(true); + }catch(e){ + d.errback(e); + } + }; + var onError = function(errData, request){ + d.errback(errData); + }; + store.fetch({ query: {complexQuery:'abbr: "g*" AND (capital:"A*" or capital: "M*")', name: "Equatorial G*"}, + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: fetch() multiple, AND/OR, as quoted json object, complex", + runTest: function(t){ + // summary: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + // description: + // Simple test of a basic fetch on AndOrWriteStore of a single item. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(items.length, 3); + d.callback(true); + }; + var onError = function(errData, request){ + t.assertTrue(false); + d.errback(errData); + }; + store.fetch({ query: "{complexQuery:'abbr: \"e*\" AND (capital:\"A*\" or capital: \"Q*\")'}", + onComplete: onComplete, + onError: onError + }); + return d; + } + }, + { + name: "Read API: close (clearOnClose: true, reset url.)", + runTest: function(t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + store.clearOnClose = true; + store.urlPreventCache = true; + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store.url = require.toUrl("dojo/tests/data/countries_withNull.json").toString() + function onItem2 (item){ + var err; + try{ + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem2, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: fetch, close (clearOnClose: true, reset url.)", + runTest: function(t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + store.clearOnClose = true; + store.urlPreventCache = true; + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store.url = require.toUrl("dojo/tests/data/countries_withNull.json").toString() + function onComplete (items){ + var err; + try{ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetch({query: {abbr:"ec"}, onComplete:onComplete, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: true, reset _jsonFileUrl.)", + runTest: function(t){ + // summary: + // Function to test the close api properly clears the store for reload when clearOnClose is set. + if (dojo.isBrowser) { + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + store.clearOnClose = true; + store.urlPreventCache = true; + + var d = new doh.Deferred(); + function onItem(item){ + var error = null; + try { + t.assertTrue(item !== null); + var ec = item; + var val = store.getValue(ec, "name"); + t.assertEqual("Ecuador", val); + + store.close(); + //Check some internals here. Do not normally access these! + t.assertTrue(store._arrayOfAllItems.length === 0); + t.assertTrue(store._loadFinished === false); + + store._jsonFileUrl = require.toUrl("dojo/tests/data/countries_withNull.json").toString() + function onItem2 (item){ + var err; + try{ + t.assertTrue(item !== null); + var val = store.getValue(item, "name"); + t.assertEqual(null, val); + }catch(e){ + err = e; + } + if(err){ + d.errback(err); + }else{ + d.callback(true); + } + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem2, onError:onError}); + }catch (e){ + error = e; + } + if (error) { + d.errback(error); + } + } + function onError(errData){ + d.errback(errData); + } + store.fetchItemByIdentity({identity:"ec", onItem:onItem, onError:onError}); + return d; // Deferred + } + } + }, + { + name: "Read API: close (clearOnClose: true, reset data.)", + runTest: function(t){ + // summary: + // Function to test that clear on close and reset of data works. + // description: + // Function to test that clear on close and reset of data works. + var store = new dojox.data.AndOrWriteStore({data: { identifier: "uniqueId", + items: [ {uniqueId: 1, value:"foo*bar"}, + {uniqueId: 2, value:"bar*foo"}, + {uniqueId: 3, value:"boomBam"}, + {uniqueId: 4, value:"bit$Bite"}, + {uniqueId: 5, value:"ouagadogou"}, + {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, + {uniqueId: 7, value:"squawl"}, + {uniqueId: 8, value:"seaweed"}, + {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} + ] + } + }); + + var d = new doh.Deferred(); + var firstComplete = function(items, request){ + t.assertEqual(items.length, 1); + var firstItem = items[0]; + + //Set the store clearing options and the new data + store.clearOnClose = true; + store.data = { identifier: "uniqueId", + items: [ {uniqueId: 1, value:"foo*bar"}, + {uniqueId: 2, value:"bar*foo"}, + {uniqueId: 3, value:"boomBam"}, + {uniqueId: 4, value:"bit$Bite"}, + {uniqueId: 5, value:"ouagadogou"}, + {uniqueId: 6, value:"BaBaMaSaRa***Foo"}, + {uniqueId: 7, value:"squawl"}, + {uniqueId: 8, value:"seaweed"}, + {uniqueId: 9, value:"jfq4@#!$!@Rf14r14i5u"} + ] + }; + store.close(); + + //Do the next fetch and verify that the next item you get is not + //a reference to the same item (data cleared and reloaded. + var secondComplete = function(items, request){ + try{ + t.assertEqual(items.length, 1); + var secondItem = items[0]; + t.assertTrue(firstItem != null); + t.assertTrue(secondItem != null); + t.assertTrue(firstItem != secondItem); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + store.fetch({query: {value: "bar\*foo"}, onComplete: secondComplete, onError: error}); + } + function error(error, request){ + t.assertTrue(false); + d.errback(error); + } + store.fetch({query: {value: "bar\*foo"}, onComplete: firstComplete, onError: error}); + return d; + } + }, + + //write tests follow. + { + name: "Write API: getFeatures", + runTest: function(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var features = store.getFeatures(); + + // make sure we have the expected features: + t.assertTrue(features["dojo.data.api.Read"] !== null); + t.assertTrue(features["dojo.data.api.Identity"] !== null); + t.assertTrue(features["dojo.data.api.Write"] !== null); + t.assertTrue(features["dojo.data.api.Notification"] !== null); + t.assertFalse(features["iggy"]); + + // and only the expected features: + var count = 0; + for(var i in features){ + t.assertTrue((i === "dojo.data.api.Read" || + i === "dojo.data.api.Identity" || + i === "dojo.data.api.Write" || + i === "dojo.data.api.Notification")); + count++; + } + t.assertEqual(count, 4); + } + }, + { + name: "Write API: setValue", + runTest: function(t){ + // summary: + // Simple test of the setValue API + // description: + // Simple test of the setValue API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "capital", "Cairo")); + + // FIXME: + // Okay, so this seems very odd. Maybe I'm just being dense. + // These tests works: + t.assertEqual(store.isDirty(item), false); + t.assertTrue(store.isDirty(item) === false); + // But these seemingly equivalent tests will not work: + // t.assertFalse(store.isDirty(item)); + // t.assertTrue(!(store.isDirty(item))); + // + // All of which seems especially weird, given that this *does* work: + t.assertFalse(store.isDirty()); + + + t.assertTrue(store.isDirty(item) === false); + t.assertTrue(!store.isDirty()); + store.setValue(item, "capital", "New Cairo"); + t.assertTrue(store.isDirty(item)); + t.assertTrue(store.isDirty()); + t.assertEqual(store.getValue(item, "capital").toString(), "New Cairo"); + d.callback(true); + }; + var onError = function(error, request){ + d.errback(error); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: setValues", + runTest: function(t){ + // summary: + // Simple test of the setValues API + // description: + // Simple test of the setValues API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Egypt")); + t.assertTrue(store.isDirty(item) === false); + t.assertTrue(!store.isDirty()); + store.setValues(item, "name", ["Egypt 1", "Egypt 2"]); + t.assertTrue(store.isDirty(item)); + t.assertTrue(store.isDirty()); + var values = store.getValues(item, "name"); + t.assertTrue(values[0] == "Egypt 1"); + t.assertTrue(values[1] == "Egypt 2"); + d.callback(true); + }; + var onError = function(error, request){ + d.errback(error); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: unsetAttribute", + runTest: function(t){ + // summary: + // Simple test of the unsetAttribute API + // description: + // Simple test of the unsetAttribute API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Egypt")); + t.assertTrue(store.isDirty(item) === false); + t.assertTrue(!store.isDirty()); + store.unsetAttribute(item, "name"); + t.assertTrue(store.isDirty(item)); + t.assertTrue(store.isDirty()); + t.assertTrue(!store.hasAttribute(item, "name")); + d.callback(true); + }; + var onError = function(error, request) { + d.errback(error); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: newItem", + runTest: function(t){ + // summary: + // Simple test of the newItem API + // description: + // Simple test of the newItem API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + t.assertTrue(!store.isDirty()); + + var onNewInvoked = false; + store.onNew = function(newItem, parentInfo){ + + t.assertTrue(newItem !== null); + t.assertTrue(parentInfo === null); + t.assertTrue(store.isItem(newItem)); + onNewInvoked = true; + }; + var canada = store.newItem({name: "Canada", abbr:"ca", capital:"Ottawa"}); + t.assertTrue(onNewInvoked); + + t.assertTrue(store.isDirty(canada)); + t.assertTrue(store.isDirty()); + t.assertTrue(store.getValues(canada, "name") == "Canada"); + var onComplete = function(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Canada")); + d.callback(true); + }; + var onError = function(error, request){ + d.errback(error); + }; + store.fetch({query:{name:"Canada"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: newItem with a parent assignment", + runTest: function(t){ + // summary: + // Simple test of the newItem API with a parent assignment + // description: + // Simple test of the newItem API with a parent assignment + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + t.assertTrue(!store.isDirty()); + + var onError = function(error, request){ + d.errback(error); + }; + + var onComplete = function(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Egypt")); + + //Attach an onNew to validate we get expected values. + var onNewInvoked = false; + store.onNew = function(newItem, parentInfo){ + t.assertEqual(item, parentInfo.item); + t.assertEqual("cities", parentInfo.attribute); + t.assertTrue(parentInfo.oldValue === undefined); + t.assertTrue(parentInfo.newValue === newItem); + onNewInvoked = true; + }; + + //Attach an onSet and verify onSet is NOT called in this case. + store.onSet = function(item, attribute, oldValue, newValue){ + t.assertTrue(false); + }; + + //See if we can add in a new item representing the city of Cairo. + //This should also call the onNew set above.... + var newItem = store.newItem({name: "Cairo", abbr: "Cairo"}, {parent: item, attribute: "cities"}); + t.assertTrue(onNewInvoked); + + var onCompleteNewItemShallow = function(items, request){ + t.assertEqual(0, items.length); + var onCompleteNewItemDeep = function(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertEqual("Cairo", store.getValue(item, "name")); + d.callback(true); + }; + //Do a deep search now, should find the new item of the city with name attribute Cairo. + store.fetch({query:{name:"Cairo"}, onComplete: onCompleteNewItemDeep, onError: onError, queryOptions: {deep:true}}); + }; + //Do a shallow search first, should find nothing. + store.fetch({query:{name:"Cairo"}, onComplete: onCompleteNewItemShallow, onError: onError}); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: newItem with a parent assignment multiple times", + runTest: function(t){ + // summary: + // Simple test of the newItem API with a parent assignment multiple times. + // description: + // Simple test of the newItem API with a parent assignment multiple times. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + + t.assertTrue(!store.isDirty()); + + var onComplete = function(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Egypt")); + + //Attach an onNew to validate we get expected values. + store.onNew = function(newItem, parentInfo){ + t.assertEqual(item, parentInfo.item); + t.assertEqual("cities", parentInfo.attribute); + + t.assertTrue(parentInfo.oldValue === undefined); + + t.assertTrue(parentInfo.newValue === newItem); + }; + + //See if we can add in a new item representing the city of Cairo. + //This should also call the onNew set above.... + var newItem1 = store.newItem({name: "Cairo", abbr: "Cairo"}, {parent: item, attribute: "cities"}); + + //Attach a new onNew to validate we get expected values. + store.onNew = function(newItem, parentInfo){ + t.assertEqual(item, parentInfo.item); + t.assertEqual("cities", parentInfo.attribute); + + console.log(parentInfo.oldValue); + t.assertTrue(parentInfo.oldValue == newItem1); + + t.assertTrue(parentInfo.newValue[0] == newItem1); + t.assertTrue(parentInfo.newValue[1] == newItem); + }; + var newItem2 = store.newItem({name: "Banha", abbr: "Banha"}, {parent: item, attribute: "cities"}); + + //Attach a new onNew to validate we get expected values. + store.onNew = function(newItem, parentInfo){ + t.assertEqual(item, parentInfo.item); + t.assertEqual("cities", parentInfo.attribute); + + t.assertTrue(parentInfo.oldValue[0] == newItem1); + t.assertTrue(parentInfo.oldValue[1] == newItem2); + + t.assertTrue(parentInfo.newValue[0] == newItem1); + t.assertTrue(parentInfo.newValue[1] == newItem2); + t.assertTrue(parentInfo.newValue[2] == newItem); + }; + var newItem3 = store.newItem({name: "Damanhur", abbr: "Damanhur"}, {parent: item, attribute: "cities"}); + d.callback(true); + }; + var onError = function(error, request){ + d.errback(error); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: deleteItem", + runTest: function(t){ + // summary: + // Simple test of the deleteItem API + // description: + // Simple test of the deleteItem API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + + var onError = function(error, request){ + d.errback(error); + }; + + var onComplete = function(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Egypt")); + t.assertTrue(store.isDirty(item) === false); + t.assertTrue(!store.isDirty()); + store.deleteItem(item); + t.assertTrue(store.isDirty(item)); + t.assertTrue(store.isDirty()); + var onCompleteToo = function(itemsToo, requestToo) { + t.assertEqual(0, itemsToo.length); + d.callback(true); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: isDirty", + runTest: function(t){ + // summary: + // Simple test of the isDirty API + // description: + // Simple test of the isDirty API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onComplete = function(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Egypt")); + store.setValue(item, "name", "Egypt 2"); + t.assertTrue(store.getValue(item, "name") == "Egypt 2"); + t.assertTrue(store.isDirty(item)); + d.callback(true); + }; + var onError = function(error, request) { + d.errback(error); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: revert", + runTest: function(t){ + // summary: + // Simple test of the revert API + // description: + // Simple test of the revert API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + + var onError = function(error, request){ + d.errback(error); + }; + + var onComplete = function(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Egypt")); + t.assertTrue(store.isDirty(item) === false); + t.assertTrue(!store.isDirty()); + store.setValue(item, "name", "Egypt 2"); + t.assertTrue(store.getValue(item, "name") == "Egypt 2"); + t.assertTrue(store.isDirty(item)); + t.assertTrue(store.isDirty()); + store.revert(); + + //Fetch again to see if it reset the state. + var onCompleteToo = function(itemsToo, requestToo){ + t.assertEqual(1, itemsToo.length); + var itemToo = itemsToo[0]; + t.assertTrue(store.containsValue(itemToo, "name", "Egypt")); + d.callback(true); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onCompleteToo, onError: onError}); + }; + store.fetch({query:{name:"Egypt"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "Write API: save", + runTest: function(t){ + // summary: + // Simple test of the save API + // description: + // Simple test of the save API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onError = function(error){ + d.errback(error); + }; + var onItem = function(item){ + store.setValue(item, "capital", "New Cairo"); + var onComplete = function() { + d.callback(true); + } ; + store.save({onComplete:onComplete, onError:onError}); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return d; //Object + } + }, + { + name: "Write API: save, verify state", + runTest: function(t){ + // summary: + // Simple test of the save API + // description: + // Simple test of the save API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onError = function(error){ + d.errback(error); + }; + var onItem = function(item){ + store.setValue(item, "capital", "New Cairo"); + var onComplete = function() { + //Check internal state. Note: Users should NOT do this, this is a UT verification + //of internals in this case. Ref tracker: #4394 + t.assertTrue(!store._saveInProgress); + d.callback(true); + }; + store.save({onComplete:onComplete, onError:onError}); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return d; //Object + } + }, + { + name: "Write API: saveEverything", + runTest: function(t){ + // summary: + // Simple test of the save API + // description: + // Simple test of the save API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var egypt; + + var d = new doh.Deferred(); + var onError = function(error){ + d.errback(error); + }; + + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + var struct = dojo.fromJson(newFileContentString); + t.assertEqual(struct.identifier, store.getIdentityAttributes(egypt)[0]); + t.assertEqual(struct.label, store.getLabelAttributes(egypt)[0]); + t.assertEqual(struct.items.length, 7); + + var cloneStore = new dojox.data.AndOrWriteStore({data:struct}); + var onItemClone = function(itemClone){ + var egyptClone = itemClone; + t.assertEqual(store.getIdentityAttributes(egypt)[0], cloneStore.getIdentityAttributes(egyptClone)[0]); + t.assertEqual(store.getLabelAttributes(egypt)[0], cloneStore.getLabelAttributes(egyptClone)[0]); + t.assertEqual(store.getValue(egypt, "name"), cloneStore.getValue(egyptClone, "name")); + }; + cloneStore.fetchItemByIdentity({identity:"eg", onItem:onItemClone, onError:onError}); + + saveCompleteCallback(); + }; + + var onItem = function(item){ + egypt = item; + var onComplete = function() { + d.callback(true); + }; + store.setValue(egypt, "capital", "New Cairo"); + store.save({onComplete:onComplete, onError:onError}); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return d; //Object + } + }, + { + name: "Write API: saveEverything with Date type", + runTest: function(t){ + // summary: + // Simple test of the save API with a non-atomic type (Date) that has a type mapping. + // description: + // Simple test of the save API with a non-atomic type (Date) that has a type mapping. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + + //Now load the new data into a datastore and validate that it stored the date right. + var dataset = dojo.fromJson(newFileContentString); + var newStore = new dojox.data.AndOrWriteStore({data: dataset}); + + var gotItem = function(item){ + var independenceDate = newStore.getValue(item,"independence"); + t.assertTrue(independenceDate instanceof Date); + t.assertTrue(dojo.date.compare(new Date(1993,4,24), independenceDate, "date") === 0); + saveCompleteCallback(); + }; + var failed = function(error, request){ + d.errback(error); + saveFailedCallback(); + }; + newStore.fetchItemByIdentity({identity:"eg", onItem:gotItem, onError:failed}); + }; + + var onError = function(error){ + d.errback(error); + }; + var onItem = function(item){ + var onComplete = function() { + d.callback(true); + }; + store.setValue(item, "independence", new Date(1993,4,24)); + store.save({onComplete:onComplete, onError:onError}); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + return d; //Object + } + }, + { + name: "Write API: saveEverything, with custom color simple type", + runTest: function(t){ + // summary: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + // description: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + + //Set up the store basics: What data it has, and what to do when save is called for saveEverything + //And how to map the 'Color' type in and out of the format. + //(Test of saving all to a some location...) + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + + var customTypeMap = {'Color': dojo.Color }; + + var store = new dojox.data.AndOrWriteStore({ + data:dataset, + typeMap: customTypeMap + }); + + var d = new doh.Deferred(); + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + //Now load the new data into a datastore and validate that it stored the Color right. + var dataset = dojo.fromJson(newFileContentString); + var newStore = new dojox.data.AndOrWriteStore({data: dataset, typeMap: customTypeMap}); + + var gotItem = function(item){ + var hairColor = newStore.getValue(item,"hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertEqual("rgba(255, 255, 0, 1)", hairColor.toString()); + saveCompleteCallback(); + }; + var failed = function(error, request){ + d.errback(error); + saveFailedCallback(); + }; + newStore.fetchItemByIdentity({identity:"Animal", onItem:gotItem, onError:failed}); + }; + + //Add a new item with a color type, then save it. + var onError = function(error){ + d.errback(error); + }; + var onComplete = function() { + d.callback(true); + }; + + var animal = store.newItem({name: "Animal", hairColor: new dojo.Color("yellow")}); + store.save({onComplete:onComplete, onError:onError}); + return d; //Object + } + }, + { + name: "Write API: saveEverything, with custom color type general", + runTest: function(t){ + // summary: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + // description: + // Simple test of the save API with a non-atomic type (dojo.Color) that has a type mapping. + + //Set up the store basics: What data it has, and what to do when save is called for saveEverything + //And how to map the 'Color' type in and out of the format. + //(Test of saving all to a some location...) + var dataset = { + identifier:'name', + items: [ + { name:'Kermit', species:'frog', color:{_type:'Color', _value:'green'} }, + { name:'Beaker', hairColor:{_type:'Color', _value:'red'} } + ] + }; + + var customTypeMap = {'Color': { + type: dojo.Color, + deserialize: function(value){ + return new dojo.Color(value); + }, + serialize: function(obj){ + return obj.toString(); + } + } + }; + var store = new dojox.data.AndOrWriteStore({ + data:dataset, + typeMap: customTypeMap + }); + + var d = new doh.Deferred(); + store._saveEverything = function(saveCompleteCallback, saveFailedCallback, newFileContentString){ + //Now load the new data into a datastore and validate that it stored the Color right. + var dataset = dojo.fromJson(newFileContentString); + var newStore = new dojox.data.AndOrWriteStore({data: dataset, typeMap: customTypeMap}); + + var gotItem = function(item){ + var hairColor = newStore.getValue(item,"hairColor"); + t.assertTrue(hairColor instanceof dojo.Color); + t.assertEqual("rgba(255, 255, 0, 1)", hairColor.toString()); + saveCompleteCallback(); + }; + var failed = function(error, request){ + d.errback(error); + saveFailedCallback(); + }; + newStore.fetchItemByIdentity({identity:"Animal", onItem:gotItem, onError:failed}); + }; + + //Add a new item with a color type, then save it. + var onError = function(error){ + d.errback(error); + }; + var onComplete = function() { + d.callback(true); + }; + + var animal = store.newItem({name: "Animal", hairColor: new dojo.Color("yellow")}); + store.save({onComplete:onComplete, onError:onError}); + return d; //Object + } + }, + { + name: "Write API: newItem, revert", + runTest: function(t){ + // summary: + // Test for bug #5357. Ensure that the revert properly nulls the identity position + // for a new item after revert. + var args = {data: { + label:"name", + items:[ + {name:'Ecuador', capital:'Quito'}, + {name:'Egypt', capital:'Cairo'}, + {name:'El Salvador', capital:'San Salvador'}, + {name:'Equatorial Guinea', capital:'Malabo'}, + {name:'Eritrea', capital:'Asmara'}, + {name:'Estonia', capital:'Tallinn'}, + {name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + var store = new dojox.data.AndOrWriteStore(args); + + var newCountry = store.newItem({name: "Utopia", capitol: "Perfect"}); + + //DO NOT ACCESS THIS WAY. THESE ARE INTERNAL VARIABLES. DOING THIS FOR TEST PURPOSES. + var itemEntryNum = newCountry[store._itemNumPropName]; + t.assertTrue(store._arrayOfAllItems[itemEntryNum] === newCountry); + store.revert(); + t.assertTrue(store._arrayOfAllItems[itemEntryNum] === null); + } + }, + { + name: "Write API: newItem, modify revert", + runTest: function(){ + // summary: + // Test of a new item, modify it, then revert, to ensure the state remains consistent. Added due to #9022. + // description: + // Test of a new item, modify it, then revert, to ensure the state remains consistent. Added due to #9022. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var deferred = new doh.Deferred(); + doh.assertTrue(!store.isDirty()); + + var onError = function(error, request){ + deferred.errback(error); + }; + + var intialFetch = function(items, request){ + var initialCount = items.length; + var canada = store.newItem({name: "Canada", abbr:"ca", capital:"Ottawa"}); + store.setValue(canada, "someattribute", "modified a new item!"); + var afterNewFetch = function(items, request){ + var afterNewCount = items.length; + doh.assertEqual(afterNewCount, (initialCount + 1)); + store.revert(); + var afterRevertFetch = function(items, request){ + var afterRevertCount = items.length; + doh.assertEqual(afterRevertCount, initialCount); + deferred.callback(true); + }; + store.fetch({onComplete: afterRevertFetch, onError: onError}); + }; + store.fetch({onComplete: afterNewFetch, onError: onError}); + }; + store.fetch({onComplete: intialFetch, onError: onError}); + return deferred; //Object + } + }, + { + name: "Write API: newItem, modify, delete, revert", + runTest: function(){ + // summary: + // Test of a new item, modify it, delete it, then revert, to ensure the state remains consistent. Added due to #9022. + // description: + // Test of a new item, modify it, delete it, then revert, to ensure the state remains consistent. Added due to #9022. + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var i; + var found = false; + + var deferred = new doh.Deferred(); + doh.assertTrue(!store.isDirty()); + + var onError = function(error, request){ + deferred.errback(error); + }; + + var intialFetch = function(items, request){ + var initialCount = items.length; + var canada = store.newItem({name: "Canada", abbr:"ca", capital:"Ottawa"}); + store.setValue(canada, "someattribute", "modified a new item!"); + + // check that after new and modify, the total items count goes up by one. + var afterNewFetch = function(items, request){ + var afterNewCount = items.length; + doh.assertEqual(afterNewCount, (initialCount + 1)); + store.deleteItem(canada); + + //Check that after delete, the total items count goes back to initial count. + //Also verify the item with abbr of ca is gone. + var afterDeleteFetch = function(items, request){ + var afterDeleteCount = items.length; + doh.assertEqual(initialCount, afterDeleteCount); + + for(i=0; i < items.length; i++){ + found = (store.getIdentity(items[i]) === "ca"); + if(found){ + break; + } + } + if(found){ + deferred.errback(new Error("Error: Found the supposedly deleted item!")); + }else{ + store.revert(); + //Check that after revert, we still have the same item count as the + //original fetch. Also verify the item with abbr of ca is gone. + var afterRevertFetch = function(items, request){ + var afterRevertCount = items.length; + doh.assertEqual(afterRevertCount, initialCount); + for(i=0; i < items.length; i++){ + found = (store.getIdentity(items[i]) === "ca"); + if(found){ + break; + } + } + if(found){ + deferred.errback(new Error("Error: Found the 'new' item after revert!")); + }else{ + deferred.callback(true); + } + }; + store.fetch({onComplete: afterRevertFetch, onError: onError}); + } + }; + store.fetch({onComplete: afterDeleteFetch, onError: onError}); + }; + store.fetch({onComplete: afterNewFetch, onError: onError}); + }; + store.fetch({onComplete: intialFetch, onError: onError}); + return deferred; //Object + } + }, + + { + name: "Write API: onSet notification", + runTest: function(t){ + // summary: + // Simple test of the onSet API + // description: + // Simple test of the onSet API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onError = function(error){ + d.errback(error); + }; + var onItem = function(fetchedItem){ + var egypt = fetchedItem; + var connectHandle = null; + var setValueHandler = function(item, attribute, oldValue, newValue){ + t.assertTrue(store.isItem(item)); + t.assertTrue(item == egypt); + t.assertTrue(attribute == "capital"); + t.assertTrue(oldValue == "Cairo"); + t.assertTrue(newValue == "New Cairo"); + d.callback(true); + dojo.disconnect(connectHandle); + }; + connectHandle = dojo.connect(store, "onSet", setValueHandler); + store.setValue(egypt, "capital", "New Cairo"); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + } + }, + { + name: "Write API: onNew notification", + runTest: function(t){ + // summary: + // Simple test of the onNew API + // description: + // Simple test of the onNew API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var connectHandle = null; + var newItemHandler = function(item){ + t.assertTrue(store.isItem(item)); + t.assertTrue(store.getValue(item, "name") == "Canada"); + d.callback(true); + dojo.disconnect(connectHandle); + }; + connectHandle = dojo.connect(store, "onNew", newItemHandler); + var canada = store.newItem({name:"Canada", abbr:"ca", capital:"Ottawa"}); + } + }, + { + name: "Write API: onDelete notification", + runTest: function(t){ + // summary: + // Simple test of the onDelete API + // description: + // Simple test of the onDelete API + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + + var d = new doh.Deferred(); + var onError = function(error){ + d.errback(error); + }; + var onItem = function(fetchedItem){ + var egypt = fetchedItem; + var connectHandle = null; + var deleteItemHandler = function(item){ + t.assertTrue(store.isItem(item) === false); + t.assertTrue(item == egypt); + d.callback(true); + dojo.disconnect(connectHandle); + }; + connectHandle = dojo.connect(store, "onDelete", deleteItemHandler); + store.deleteItem(egypt); + }; + store.fetchItemByIdentity({identity:"eg", onItem:onItem, onError:onError}); + } + }, + { + name: "Write API: Read API conformance", + runTest: function(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var functionName in readApi){ + var member = readApi[functionName]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[functionName]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + t.assertTrue(passed); + } + }, + { + name: "Write API: Write API conformance", + runTest: function(t){ + // summary: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var writeApi = new dojo.data.api.Write(); + var passed = true; + + for(var functionName in writeApi){ + var member = writeApi[functionName]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[functionName]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + t.assertTrue(passed); + } + }, + { + name: "Write API: Notification API conformance", + runTest: function(t){ + // summary: + // Simple test Notification API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test Notification API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries")); + var api = new dojo.data.api.Notification(); + var passed = true; + + for(var functionName in api){ + var member = api[functionName]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[functionName]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + t.assertTrue(passed); + } + }, + { + name: "Write API: Identity, auto-creation when missing", + runTest: function(t){ + // summary: + // Test for bug #3873. Given a datafile that does not specify an + // identifier, make sure AndOrWriteStore auto-creates identities + // that are unique even after calls to deleteItem() and newItem() + var args = {data: { + label:"name", + items:[ + {name:'Ecuador', capital:'Quito'}, + {name:'Egypt', capital:'Cairo'}, + {name:'El Salvador', capital:'San Salvador'}, + {name:'Equatorial Guinea', capital:'Malabo'}, + {name:'Eritrea', capital:'Asmara'}, + {name:'Estonia', capital:'Tallinn'}, + {name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + var store = new dojox.data.AndOrWriteStore(args); + var d = new doh.Deferred(); + + var onError = function(error, request){ + d.errback(error); + }; + var onComplete = function(items, request){ + t.assertEqual(7, items.length); + + var lastItem = items[(items.length - 1)]; + var idOfLastItem = store.getIdentity(lastItem); + store.deleteItem(lastItem); + store.newItem({name:'Canada', capital:'Ottawa'}); + + var onCompleteAgain = function(itemsAgain, requestAgain){ + t.assertEqual(7, itemsAgain.length); + var identitiesInUse = {}; + for(var i = 0; i < itemsAgain.length; ++i){ + var item = itemsAgain[i]; + var id = store.getIdentity(item); + if(identitiesInUse.hasOwnProperty(id)){ + // there should not already be an entry for this id + t.assertTrue(false); + }else{ + // we want to add the entry now + identitiesInUse[id] = item; + } + } + d.callback(true); + }; + store.fetch({onComplete:onCompleteAgain, onError:onError}); + }; + + store.fetch({onComplete:onComplete, onError:onError}); + return d; + } + }, + { + name: "Write API: Identity, auto-creation when missing, revert", + runTest: function(t){ + // summary: + // Test for bug #4691 Given a datafile that does not specify an + // identifier, make sure AndOrWriteStore auto-creates identities + // that are unique even after calls to deleteItem() and newItem() + var args = {data: { + label:"name", + items:[ + {name:'Ecuador', capital:'Quito'}, + {name:'Egypt', capital:'Cairo'}, + {name:'El Salvador', capital:'San Salvador'}, + {name:'Equatorial Guinea', capital:'Malabo'}, + {name:'Eritrea', capital:'Asmara'}, + {name:'Estonia', capital:'Tallinn'}, + {name:'Ethiopia', capital:'Addis Ababa'} + ] + } }; + var store = new dojox.data.AndOrWriteStore(args); + var d = new doh.Deferred(); + + var onError = function(error, request){ + d.errback(error); + }; + var onComplete = function(items, request){ + t.assertEqual(7, items.length); + + var lastItem = items[(items.length - 1)]; + var idOfLastItem = store.getIdentity(lastItem); + store.deleteItem(lastItem); + store.newItem({name:'Canada', capital:'Ottawa'}); + + var onCompleteAgain = function(itemsAgain, requestAgain){ + t.assertEqual(7, itemsAgain.length); + var identitiesInUse = {}; + for(var i = 0; i < itemsAgain.length; ++i){ + var item = itemsAgain[i]; + var id = store.getIdentity(item); + if(identitiesInUse.hasOwnProperty(id)){ + // there should not already be an entry for this id + t.assertTrue(false); + }else{ + // we want to add the entry now + identitiesInUse[id] = item; + } + } + //Last test, revert everything and check item sizes. + store.revert(); + + //Now call fetch again and verify store state. + var revertComplete = function(itemsReverted, request){ + t.assertEqual(7, itemsReverted.length); + d.callback(true); + }; + store.fetch({onComplete:revertComplete, onError:onError}); + }; + store.fetch({onComplete:onCompleteAgain, onError:onError}); + }; + store.fetch({onComplete:onComplete, onError:onError}); + return d; + } + }, + { + name: "Write API: reference integrity, check references", + runTest: function(t){ + // summary: + // Simple test to verify the references were properly resolved. + // description: + // Simple test to verify the references were properly resolved. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var onError = function(error, request){ + d.errback(error); + }; + var onComplete = function(items, request){ + + var item10 = null; + var item1 = null; + var item3 = null; + var item5 = null; + + var i; + for (i = 0; i < items.length; i++) { + var ident = store.getIdentity(items[i]); + if (ident === 10) { + item10 = items[i]; + }else if (ident === 1) { + item1 = items[i]; + }else if (ident === 3) { + item3 = items[i]; + }else if (ident === 5) { + item5 = items[i]; + } + } + var friends = store.getValues(item10, "friends"); + t.assertTrue(friends !== null); + t.assertTrue(friends !== undefined); + + t.assertTrue(store.isItem(item10)); + t.assertTrue(store.isItem(item1)); + t.assertTrue(store.isItem(item3)); + t.assertTrue(store.isItem(item5)); + var found = 0; + try{ + for (i = 0; i < friends.length; i++) { + if (i === 0) { + t.assertTrue(store.isItem(friends[i])); + t.assertEqual(friends[i], item1); + t.assertEqual(store.getIdentity(friends[i]), 1); + found++; + }else if (i === 1) { + t.assertTrue(store.isItem(friends[i])); + t.assertEqual(friends[i], item3); + t.assertEqual(store.getIdentity(friends[i]), 3); + found++; + }else if (i === 2) { + t.assertTrue(store.isItem(friends[i])); + t.assertEqual(friends[i], item5); + t.assertEqual(store.getIdentity(friends[i]), 5); + found++; + } + } + }catch(e){ + doh.errback(e); + } + t.assertEqual(3, found); + d.callback(true); + }; + store.fetch({onError: onError, onComplete: onComplete}); + return d; + } + }, + { + name: "Write API: reference integrity, delete referenced item", + runTest: function(t){ + // summary: + // Simple test to verify the references were properly deleted. + // description: + // Simple test to verify the references were properly deleted. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + }; + var onItem = function(item, request){ + try{ + console.log("Before delete map state is: " + dojo.toJson(item[store._reverseRefMap])); + store.deleteItem(item); + console.log("After delete map state is: " + dojo.toJson(item[store._reverseRefMap])); + function verifyRefDelete(items, request){ + var passed = true; + for(var i = 0; i < items.length; i++){ + var curItem = items[i]; + var attributes = store.getAttributes(curItem); + for(var j = 0; j < attributes.length; j++){ + var values = store.getValues(curItem, attributes[j]); + var badRef = false; + for(var k = 0; k < values.length; k++){ + var value = values[k]; + try{ + var id = store.getIdentity(value); + if(id == 10){ + badRef = true; + break; + } + }catch(e){/*Not an item, even a dead one, just eat it.*/} + } + if(badRef){ + d.errback(new Error("Found a reference remaining to a deleted item. Failure.")); + passed = false; + break; + } + } + } + if(passed){ + d.callback(true); + } + } + store.fetch({onComplete: verifyRefDelete, onError: onError}); + }catch(error){ + d.errback(error); + } + }; + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return d; + } + }, + { + name: "Write API: reference integrity, delete referenced item, then revert", + runTest: function(t){ + // summary: + // Simple test to verify the references were properly deleted. + // description: + // Simple test to verify the references were properly deleted. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + }; + var onItem = function(item, request){ + try{ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + console.log("Map before delete:"); + store._dumpReferenceMap(); + var beforeDelete = dojo.toJson(item[store._reverseRefMap]); + store.deleteItem(item); + console.log("Map after delete:"); + store._dumpReferenceMap(); + var afterDelete = dojo.toJson(item[store._reverseRefMap]); + store.revert(); + console.log("Map after revert:"); + store._dumpReferenceMap(); + var afterRevert = dojo.toJson(item[store._reverseRefMap]); + t.assertTrue(afterRevert === beforeDelete); + }catch(e){ + d.errback(e); + passed = false; + } + if(passed){ + d.callback(true); + } + }; + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return d; + } + }, + { + name: "Write API: reference integrity, delete multiple items with references and revert", + runTest: function(t){ + // summary: + // Simple test to verify that a flow of deleting items with references and reverting does not damage the internal structure. + // Created for tracker bug: #5743 + // description: + // Simple test to verify that a flow of deleting items with references and reverting does not damage the internal structure. + // Created for tracker bug: #5743 + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("countries_references")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + t.assertTrue(false); + }; + var onItem = function(item, request){ + //Save off the located item, then locate another one (peer to Egypt) + t.assertTrue(store.isItem(item)); + var egypt = item; + var onItem2 = function(item, request){ + t.assertTrue(store.isItem(item)); + var nairobi = item; + + //Delete them + store.deleteItem(egypt); + store.deleteItem(nairobi); + try{ + //Revert, then do a fetch. If the internals have been damaged, this will generally + //cause onError to fire instead of onComplete. + store.revert(); + var onComplete = function(items, request){ + d.callback(true); + }; + store.fetch({query: {name: "*"}, start: 0, count: 20, onComplete: onComplete, onError: onError}); + }catch(e){ + d.errback(e); + } + }; + store.fetchItemByIdentity({identity: "Nairobi", onError: onError, onItem: onItem2}); + }; + store.fetchItemByIdentity({identity: "Egypt", onError: onError, onItem: onItem}); + return d; + } + }, + { + name: "Write API: reference integrity, remove reference from attribute", + runTest: function(t){ + // summary: + // Simple test to verify the reference removal updates the internal map. + // description: + // Simple test to verify the reference removal updates the internal map. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + t.assertTrue(false); + }; + var onItem = function(item, request){ + try{ + store.setValues(item, "friends", [null]); + + var onItem2 = function(item10, request){ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + var refMap = item10[store._reverseRefMap]; + store._dumpReferenceMap(); + + console.log("MAP for Item 10 is: " + dojo.toJson(refMap)); + + //Assert there is no reference to item 10 in item 11's attribute 'friends'. + t.assertTrue(!refMap["11"]["friends"]); + store.setValues(item, "siblings", [0, 1, 2]); + //Assert there are no more references to 10 in 11. Ergo, "11" should be a 'undefined' attribute for the map of items referencing '10'.. + t.assertTrue(!refMap["11"]); + d.callback(true); + }; + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem2}); + + }catch(e){ + console.debug(e); + d.errback(e); + t.assertTrue(false); + } + }; + store.fetchItemByIdentity({identity: 11, onError: onError, onItem: onItem}); + return d; + } + }, + { + name: "Write API: reference integrity, delete referenced item non-parent", + runTest: function(t){ + // summary: + // Simple test to verify the references to a non-parent item was properly deleted. + // description: + // Simple test to verify the references to a non-parent item was properly deleted. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + }; + var onItem = function(item, request){ + try{ + console.log("Reference state for item 16 is: " + dojo.toJson(item[store._reverseRefMap])); + store.deleteItem(item); + function verifyRefDelete(items, request){ + var passed = true; + for(var i = 0; i < items.length; i++){ + var curItem = items[i]; + var attributes = store.getAttributes(curItem); + for(var j = 0; j < attributes.length; j++){ + var values = store.getValues(curItem, attributes[j]); + var badRef = false; + for(var k = 0; k < values.length; k++){ + var value = values[k]; + try{ + var id = store.getIdentity(value); + if(id == 16){ + badRef = true; + break; + } + }catch(e){/*Not an item, even a dead one, just eat it.*/} + } + if(badRef){ + d.errback(new Error("Found a reference remaining to a deleted item. Failure.")); + passed = false; + break; + } + } + } + if(passed){ + d.callback(true); + } + } + store.fetch({onComplete: verifyRefDelete, onError: onError}); + }catch(error){ + d.errback(error); + } + }; + store.fetchItemByIdentity({identity: 16, onError: onError, onItem: onItem}); + return d; + } + }, + { + name: "Write API: reference integrity, add reference to attribute", + runTest: function(t){ + // summary: + // Simple test to verify the reference additions can happen. + // description: + // Simple test to verify the reference additions can happen. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + t.assertTrue(false); + }; + var onComplete = function(items, request){ + + t.assertTrue(items.length > 2); + + var item1 = items[0]; + var item2 = items[1]; + + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + console.log("Map state for Item 1 is: " + dojo.toJson(item1[store._reverseRefMap])); + console.log("Map state for Item 2 is: " + dojo.toJson(item2[store._reverseRefMap])); + + store.setValue(item1, "siblings", item2); + + //Emit the current map state for inspection. + console.log("Map state for Item 1 is: " + dojo.toJson(item1[store._reverseRefMap])); + console.log("Map state for Item 2 is: " + dojo.toJson(item2[store._reverseRefMap])); + + t.assertTrue(item2[store._reverseRefMap] !== null); + + //Assert there is a recorded reference to item 2 in item 1's attribute 'sibling'. + t.assertTrue(item2[store._reverseRefMap][store.getIdentity(item1)]["siblings"]); + + d.callback(true); + }; + store.fetch({onError: onError, onComplete: onComplete}); + return d; + } + }, + { + name: "Write API: reference integrity, new item with parent reference", + runTest: function(t){ + // summary: + // Simple test to verify that newItems with a parent properly record the parent's reference in the map. + // description: + // Simple test to verify that newItems with a parent properly record the parent's reference in the map. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + t.assertTrue(false); + }; + var onItem = function(item, request){ + try{ + //Create a new item and set its parent to item 10's uncle attribute. + var newItem = store.newItem({id: 17, name: "Item 17"}, {parent: item, attribute: "uncles"}); + + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + //Look up the references to 17, as item 10 has one now on attribute 'uncles' + var refs = newItem[store._reverseRefMap]; + + //Assert there is a reference from 10 to item 17, on attribute uncle + t.assertTrue(refs["10"]["uncles"]); + + console.log("State of map of item 17 after newItem: " + dojo.toJson(refs)); + }catch(e){ + console.debug(e); + d.errback(e); + t.assertTrue(false); + passed = false; + } + if(passed){ + d.callback(true); + } + }; + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return d; + } + }, + { + name: "Write API: reference integrity, new item with reference to existing item", + runTest: function(t){ + // summary: + // Simple test to verify that a new item with references to existing items properly record the references in the map. + // description: + // Simple test to verify that a new item with references to existing items properly record the references in the map. + + var store = new dojox.data.AndOrWriteStore(dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity")); + + var d = new doh.Deferred(); + var passed = true; + var onError = function(error, request){ + d.errback(error); + t.assertTrue(false); + }; + var onItem = function(item, request){ + try{ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + console.log("State of reference map to item 10 before newItem: " + dojo.toJson(item[store._reverseRefMap])); + + //Create a new item and set its parent to item 10's uncle attribute. + var newItem = store.newItem({id: 17, name: "Item 17", friends: [item]}); + + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + //Look up the references to 10, as item 17 has one on friends now. + var refs = item[store._reverseRefMap]; + + //Assert there is a reference from 15 to item 10, on attribute friends + t.assertTrue(refs["17"]["friends"]); + + console.log("State of reference map to item 10 after newItem: " + dojo.toJson(refs)); + }catch(e){ + console.debug(e); + d.errback(e); + t.assertTrue(false); + passed = false; + } + if(passed){ + d.callback(true); + } + }; + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return d; + } + }, + { + name: "Write API: reference integrity, disable reference integrity", + runTest: function(t){ + // summary: + // Simple test to verify reference integrity can be disabled. + // description: + // Simple test to verify reference integrity can be disabled. + + var params = dojox.data.tests.stores.AndOrWriteStore.getTestData("reference_integrity"); + params.referenceIntegrity = false; + var store = new dojox.data.AndOrWriteStore(params); + + var d = new doh.Deferred(); + var onError = function(error, request){ + d.errback(error); + t.assertTrue(false); + }; + var onItem = function(item, request){ + //DO NOT EVER ACCESS THESE VARIABLES LIKE THIS! + //THIS IS FOR TESTING INTERNAL STATE! + if(item[store._reverseRefMap] === undefined){ + d.callback(true); + }else{ + d.errback(new Error("Disabling of reference integrity failed.")); + } + }; + store.fetchItemByIdentity({identity: 10, onError: onError, onItem: onItem}); + return d; + } + } + + ]; + return dojox.data.tests.stores.AndOrWriteStore.tests; +}; +doh.register("dojox.data.tests.stores.AndOrWriteStore", dojox.data.tests.stores.AndOrWriteStore.getTests()); + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AppStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AppStore.js new file mode 100644 index 0000000..3270438 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AppStore.js @@ -0,0 +1,898 @@ +dojo.provide("dojox.data.tests.stores.AppStore"); +dojo.require("dojox.data.AppStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Write"); +dojo.require("dojo.data.api.Identity"); + +dojox.data.tests.stores.AppStore.getStore = function(preventCache){ + preventCache = preventCache?true:false; + return new dojox.data.AppStore({url: dojo.moduleUrl('dojox.atom.tests.widget', 'samplefeedEdit.xml').toString(), urlPreventCache: preventCache}); +}; + +doh.register("dojox.data.tests.stores.AppStore", + [ + function testReadAPI_fetch_all(t){ + // summary: + // Simple test of fetching all items + // description: + // Simple test of fetching all items + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(8, items.length); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_all_preventCache(t){ + // summary: + // Simple test of fetching all items + // description: + // Simple test of fetching all items + var store = dojox.data.tests.stores.AppStore.getStore(true); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(8, items.length); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_one(t){ + // summary: + // Simple test of fetching one item + // description: + // Simple test of fetching one item + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_paging(t){ + // summary: + // Simple test of paging + // description: + // Simple test of paging + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + + function dumpFifthFetch(items, request){ + t.assertEqual(0, items.length); + d.callback(true); + } + + function dumpFourthFetch(items, request){ + t.assertEqual(6, items.length); + request.start = 9; + request.count = 100; + request.onComplete = dumpFifthFetch; + store.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + store.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.assertEqual(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + store.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + store.fetch(request); + } + + function completed(items, request){ + t.assertEqual(8, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + store.fetch(request); + } + + function error(errData, request){ + d.errback(errData); + } + + store.fetch({onComplete: completed, onError: error}); + return d; //Object + }, + function testReadAPI_fetch_pattern0(t){ + // summary: + // Simple test of fetching one item with ? pattern match + // description: + // Simple test of fetching one item with ? pattern match + var store = dojox.data.tests.stores.AppStore.getStore(); + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"?est Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern1(t){ + // summary: + // Simple test of fetching one item with * pattern match + // description: + // Simple test of fetching one item with * pattern match + var store = dojox.data.tests.stores.AppStore.getStore(); + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(8, items.length); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"*Test*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern_caseInsensitive(t){ + // summary: + // Simple test of fetching one item with * pattern match case insensitive + // description: + // Simple test of fetching one item with * pattern match case insensitive + var store = dojox.data.tests.stores.AppStore.getStore(); + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(8, items.length); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"*test*"}, queryOptions: {ignoreCase: true}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_getLabel(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = store.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual("Test Editable Entry #1", label); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; + }, + function testReadAPI_getLabelAttributes(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = store.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual("title", labelList[0]); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; + }, + + function testReadAPI_getValue(t){ + // summary: + // Simple test of the getValue API + // description: + // Simple test of the getValue API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"id")); + t.assertEqual(store.getValue(item,"id"), "http://example.com/samplefeedEdit.xml/entry/10"); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_getValues(t){ + // summary: + // Simple test of the getValues API + // description: + // Simple test of the getValues API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"id")); + var values = store.getValues(item,"id"); + t.assertEqual(1,values.length); + t.assertEqual(values[0], "http://example.com/samplefeedEdit.xml/entry/10"); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItem(t){ + // summary: + // Simple test of the isItem API + // description: + // Simple test of the isItem API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItem(item)); + t.assertTrue(!store.isItem({})); + t.assertTrue(!store.isItem("Foo")); + t.assertTrue(!store.isItem(1)); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItem_multistore(t){ + // summary: + // Simple test of the isItem API across multiple store instances. + // description: + // Simple test of the isItem API across multiple store instances. + var store1 = dojox.data.tests.stores.AppStore.getStore(); + var store2 = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + + function onError(error, request){ + d.errback(error); + } + + function onComplete1(items, request){ + t.assertEqual(1, items.length); + var item1 = items[0]; + t.assertTrue(store1.isItem(item1)); + + function onComplete2(items, request){ + t.assertEqual(1, items.length); + var item2 = items[0]; + t.assertTrue(store2.isItem(item2)); + t.assertTrue(!store1.isItem(item2)); + t.assertTrue(!store2.isItem(item1)); + d.callback(true); + } + store2.fetch({query:{title:"Test Entry #1"}, onComplete: onComplete2, onError: onError}); + } + store1.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete1, onError: onError}); + return d; //Object + }, + function testReadAPI_hasAttribute(t){ + // summary: + // Simple test of the hasAttribute API + // description: + // Simple test of the hasAttribute API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + + function onError(error, request){ + d.errback(error); + } + + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"title")); + t.assertTrue(store.hasAttribute(item,"summary")); + t.assertTrue(!store.hasAttribute(item,"bob")); + d.callback(true); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_containsValue(t){ + // summary: + // Simple test of the containsValue API + // description: + // Simple test of the containsValue API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + t.assertTrue(!store.containsValue(item,"title", "bob")); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortDescending(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.AppStore.getStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ "Test Entry #6", + "Test Entry #5", + "Test Entry #4", + "Test Entry #3", + "Test Entry #2", + "Test Entry #1", + "Test Editable Entry #2", + "Test Editable Entry #1"]; + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(8, items.length); + + for(var i = 0; i < items.length; i++){ + t.assertEqual(order[i], store.getValue(items[i],"title")); + } + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + + var sortAttributes = [{attribute: "title", descending: true}]; + store.fetch({query:{title:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortAscending(t){ + // summary: + // Simple test of the sorting API in ascending order. + // description: + // Simple test of the sorting API in ascending order. + var store = dojox.data.tests.stores.AppStore.getStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ "Test Editable Entry #1", + "Test Editable Entry #2", + "Test Entry #1", + "Test Entry #2", + "Test Entry #3", + "Test Entry #4", + "Test Entry #5", + "Test Entry #6"]; + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(8, items.length); + var itemId = 1; + for(var i = 0; i < items.length; i++){ + t.assertEqual(order[i], store.getValue(items[i],"title")); + } + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + + var sortAttributes = [{attribute: "title"}]; + store.fetch({query:{title:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItemLoaded(t){ + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var store = dojox.data.tests.stores.AppStore.getStore(); + var features = store.getFeatures(); + var count = 0; + for(var i in features){ + t.assertTrue(( i === "dojo.data.api.Read" || i === "dojo.data.api.Write" || i === "dojo.data.api.Identity")); + count++; + } + t.assertEqual(3, count); + }, + function testReadAPI_getAttributes(t){ + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + t.assertEqual(6,attributes.length); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_newItem(t){ + // summary: + // Simple test of the newItem API + // description: + // Simple test of the newItem API + var store = dojox.data.tests.stores.AppStore.getStore(); + + store.newItem({title: "New entry", id: "12345", content: "This is test content", author: {name:"Bob"}}); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "New entry")); + t.assertTrue(store.containsValue(item, "content", "This is test content")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{title:"New entry"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_newItemInCallback(t){ + // summary: + // Simple test of the newItem API + // description: + // Simple test of the newItem API + var store = dojox.data.tests.stores.AppStore.getStore(); + + store.newItem({title: "New entry", id: "12345", content: "This is test content", author: {name:"Bob"}}); + + var d = new doh.Deferred(); + + function onError(error, request){ + d.errback(error); + } + + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "New entry")); + t.assertTrue(store.containsValue(item, "content", "This is test content")); + + store.newItem({title: "New entry2", id: "12346", content: "This is test content", author: [{name:"Bob"}]}); + + function onComplete1(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item, "title", "New entry2")); + d.callback(true); + } + + store.fetch({query:{title:"New entry2"}, onComplete: onComplete1, onError: onError}); + } + store.fetch({query:{title:"New entry"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_deleteItem(t){ + // summary: + // Simple test of the deleteItem API + // description: + // Simple test of the deleteItem API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + + function onError(error, request){ + d.errback(error); + } + + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + store.deleteItem(item); + + function onComplete1(items, request){ + t.assertEqual(0, items.length); + d.callback(true); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete1, onError: onError}); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_setValue(t){ + // summary: + // Simple test of the setValue API + // description: + // Simple test of the setValue API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + store.setValue(item, "title", "Edited title"); + t.assertEqual(store.getValue(item,"title"), "Edited title"); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_setValues(t){ + // summary: + // Simple test of the setValues API + // description: + // Simple test of the setValues API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + store.setValues(item, "author", [{name: "John"}, {name: "Bill", email:"bill@example.com", uri:"http://example.com/bill"}]); + var values = store.getValues(item,"author"); + t.assertEqual(values[0].name, "John"); + t.assertEqual(values[1].name, "Bill"); + t.assertEqual(values[1].email, "bill@example.com"); + t.assertEqual(values[1].uri, "http://example.com/bill"); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_unsetAttribute(t){ + // summary: + // Simple test of the unsetAttribute API + // description: + // Simple test of the unsetAttribute API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + store.unsetAttribute(item,"title"); + t.assertTrue(!store.hasAttribute(item,"title")); + t.assertTrue(store.isDirty(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_isDirty(t){ + // summary: + // Simple test of the isDirty API + // description: + // Simple test of the isDirty API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + store.setValue(item, "title", "Edited title"); + t.assertEqual(store.getValue(item,"title"), "Edited title"); + t.assertTrue(store.isDirty(item)); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_revert(t){ + // summary: + // Simple test of the isDirty API + // description: + // Simple test of the isDirty API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onError(error, request){ + d.errback(error); + } + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + t.assertTrue(!store.isDirty(item)); + store.setValue(item, "title", "Edited title"); + t.assertEqual(store.getValue(item,"title"), "Edited title"); + t.assertTrue(store.isDirty(item)); + store.revert(); + + //Fetch again to see if it reset the state. + function onComplete1(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + d.callback(true); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete1, onError: onError}); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_revert2(t){ + // summary: + // Simple test of the revert API + // description: + // Simple test of the revert API + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onError(error, request){ + d.errback(error); + } + function onComplete(items, request){ + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"title", "Test Editable Entry #1")); + store.deleteItem(item); + + function onComplete1(items, request){ + t.assertEqual(7, items.length); + store.newItem({title: "New entry", id: "12345", content: "This is test content", author: {name:"Bob"}}); + + function onComplete2(items, request){ + t.assertEqual(1, items.length); + store.revert(); + + function onComplete3(items, request){ + t.assertEqual(0, items.length); + d.callback(true); + } + store.fetch({query:{title:"New entry"}, onComplete: onComplete3, onError: onError}); + } + store.fetch({query:{title:"New entry"}, onComplete: onComplete2, onError: onError}); + } + store.fetch({query:{title:"*"}, onComplete: onComplete1, onError: onError}); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_getIdentity(t){ + // summary: + // Simple test of fetching the identity of an item. + // description: + // Simple test of fetching the identity of an item. + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var id = store.getIdentity(items[0]); + t.assertEqual("http://example.com/samplefeedEdit.xml/entry/10",id); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_getIdentityAttributes(t){ + // summary: + // Simple test of fetching the identity attributes off an item, + // description: + // Simple test of fetching the identity attributes off an item, + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + var idAttrs = store.getIdentityAttributes(items[0]); + t.assertEqual(1, idAttrs.length); + t.assertEqual("id", idAttrs[0]); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetch({query:{title:"Test Editable Entry #1"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_fetchItemByIdentity(t){ + // summary: + // Simple test of fetching one atom item through its identity + // description: + // Simple test of fetching one atom item through its identity + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onItem(item, request) { + var id = store.getIdentity(item); + t.assertEqual("http://example.com/samplefeedEdit.xml/entry/10",id); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetchItemByIdentity({identity: "http://example.com/samplefeedEdit.xml/entry/10", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testReadAPI_fetchItemByIdentity_fails(t){ + // summary: + // Simple test of fetching one atom item through its identity fails correctly on no id match + // description: + // Simple test of fetching one atom item through its identity fails correctly on no id match + var store = dojox.data.tests.stores.AppStore.getStore(); + + var d = new doh.Deferred(); + function onItem(item, request){ + t.assertTrue(item === null); + d.callback(true); + } + function onError(error, request){ + d.errback(error); + } + store.fetchItemByIdentity({identity: "http://example.com/samplefeedEdit.xml/entry/10/none", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = dojox.data.tests.stores.AppStore.getStore(); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]"); + passed = false; + break; + } + } + } + t.assertTrue(passed); + }, + function testWriteAPI_functionConformance(t){ + // summary: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = dojox.data.tests.stores.AppStore.getStore(); + var writeApi = new dojo.data.api.Write(); + var passed = true; + + for(var i in writeApi){ + var member = writeApi[i]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + t.assertTrue(passed); + }, + function testIdentityAPI_functionConformance(t){ + // summary: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = dojox.data.tests.stores.AppStore.getStore(); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + + for(var i in identityApi){ + var member = identityApi[i]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + t.assertTrue(passed); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AtomReadStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AtomReadStore.js new file mode 100644 index 0000000..06c71fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/AtomReadStore.js @@ -0,0 +1,637 @@ +dojo.provide("dojox.data.tests.stores.AtomReadStore"); +dojo.require("dojox.data.AtomReadStore"); +dojo.require("dojo.data.api.Read"); + +dojox.data.tests.stores.AtomReadStore.getBlog1Store = function(){ + return new dojox.data.AtomReadStore({url: require.toUrl("dojox/data/tests/stores/atom1.xml").toString()}); + //return new dojox.data.AtomReadStore({url: "/sos/feeds/blog.php"}); +}; +/* +dojox.data.tests.stores.AtomReadStore.getBlog2Store = function(){ + return new dojox.data.AtomReadStore({url: dojo.moduleUrl("dojox.data.tests", "stores/atom2.xml").toString()}); +}; +*/ +dojox.data.tests.stores.AtomReadStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + //console.log("In here."); + //console.trace(); + d.errback(errData); +} + +doh.register("dojox.data.tests.stores.AtomReadStore", + [ + { + name: "ReadAPI: Fetch_One", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of a basic fetch on AtomReadStore of a single item. + // description: + // Simple test of a basic fetch on AtomReadStore of a single item. + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, doh, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: Fetch_5_Streaming", + timeout: 5000, //1 second. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on AtomReadStore. + // description: + // Simple test of a basic fetch on AtomReadStore. + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + var count = 0; + + function onItem(item, requestObj){ + t.assertTrue(atomStore.isItem(item)); + count++; + } + function onComplete(items, request){ + t.is(5, count); + + t.is(null, items); + d.callback(true); + } + //Get everything... + atomStore.fetch({ + query: { + }, + onBegin: null, + count: 5, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: Fetch_Paging", + timeout: 5000, //1 second. + runTest: function(t) { + // summary: + // Test of multiple fetches on a single result. Paging, if you will. + // description: + // Test of multiple fetches on a single result. Paging, if you will. + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + var d = new doh.Deferred(); + + function dumpFirstFetch(items, request){ + t.is(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + atomStore.fetch(request); + } + + function dumpSecondFetch(items, request){ + console.log("dumpSecondFetch: got "+items.length); + t.is(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + atomStore.fetch(request); + } + + function dumpThirdFetch(items, request){ + console.log("dumpThirdFetch: got "+items.length); + t.is(5, items.length); + request.start = 2; + request.count = 18; + request.onComplete = dumpFourthFetch; + atomStore.fetch(request); + } + + function dumpFourthFetch(items, request){ + console.log("dumpFourthFetch: got "+items.length); + t.is(18, items.length); + request.start = 5; + request.count = 11; + request.onComplete = dumpFifthFetch; + atomStore.fetch(request); + } + + function dumpFifthFetch(items, request){ + console.log("dumpFifthFetch: got "+items.length); + t.is(11, items.length); + request.start = 4; + request.count = 16; + request.onComplete = dumpSixthFetch; + atomStore.fetch(request); + } + + function dumpSixthFetch(items, request){ + console.log("dumpSixthFetch: got "+items.length); + t.is(16, items.length); + d.callback(true); + } + + function completed(items, request){ + t.is(7, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + atomStore.fetch(request); + } + atomStore.fetch({ + query: { + }, + count: 7, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: getLabel", + timeout: 5000, //1 second. + runTest: function(t) { + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = atomStore.getLabel(items[0]); + t.assertTrue(label !== null); + d.callback(true); + } + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getLabelAttributes", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = atomStore.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual("title", labelList[0]); + d.callback(true); + } + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; + + } + }, + { + name: "ReadAPI: getValue", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function completedAll(items){ + t.is(1, items.length); + t.assertTrue(atomStore.getValue(items[0], "summary") !== null); + t.assertTrue(atomStore.getValue(items[0], "content") !== null); + t.assertTrue(atomStore.getValue(items[0], "published") !== null); + t.assertTrue(atomStore.getValue(items[0], "updated") !== null); + console.log("typeof updated = "+typeof(atomStore.getValue(items[0], "updated"))); + t.assertTrue(atomStore.getValue(items[0], "updated").getFullYear); + d.callback(true); + } + + //Get one item and look at it. + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d)}); + return d; //Object + } + }, + { + name: "ReadAPI: getValue_Failure", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + var passed = false; + try{ + var value = atomStore.getValue("NotAnItem", "foo"); + }catch(e){ + passed = true; + } + t.assertTrue(passed); + } + }, + { + name: "ReadAPI: getValues", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function completedAll(items){ + t.is(1, items.length); + var summary = atomStore.getValues(items[0], "summary"); + t.assertTrue(dojo.isArray(summary)); + + var content = atomStore.getValues(items[0], "content"); + t.assertTrue(dojo.isArray(content)); + + var published = atomStore.getValues(items[0], "published"); + t.assertTrue(dojo.isArray(published)); + + var updated = atomStore.getValues(items[0], "updated"); + t.assertTrue(dojo.isArray(updated)); + d.callback(true); + } + //Get one item and look at it. + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, + t, + d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: getValues_Failure", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + var passed = false; + try{ + var value = atomStore.getValues("NotAnItem", "foo"); + }catch(e){ + passed = true; + } + t.assertTrue(passed); + } + }, + { + name: "ReadAPI: isItem", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the isItem function of the store + // description: + // Simple test of the isItem function of the store + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function completedAll(items){ + t.is(5, items.length); + for(var i=0; i < items.length; i++){ + t.assertTrue(atomStore.isItem(items[i])); + } + d.callback(true); + } + + //Get everything... + atomStore.fetch({ + query: { + }, + count: 5, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: hasAttribute", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the hasAttribute function of the store + // description: + // Simple test of the hasAttribute function of the store + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items){ + t.is(1, items.length); + t.assertTrue(items[0] !== null); + var count = 0; + console.log("hasAttribute"); + t.assertTrue(atomStore.hasAttribute(items[0], "author")); + t.assertTrue(atomStore.hasAttribute(items[0], "published")); + t.assertTrue(atomStore.hasAttribute(items[0], "updated")); + t.assertTrue(atomStore.hasAttribute(items[0], "category")); + t.assertTrue(atomStore.hasAttribute(items[0], "id")); + t.assertTrue(!atomStore.hasAttribute(items[0], "foo")); + t.assertTrue(!atomStore.hasAttribute(items[0], "bar")); + + + t.assertTrue(atomStore.hasAttribute(items[0], "summary")); + t.assertTrue(atomStore.hasAttribute(items[0], "content")); + t.assertTrue(atomStore.hasAttribute(items[0], "title")); + + + var summary = atomStore.getValue(items[0], "summary"); + var content = atomStore.getValue(items[0], "content"); + var title = atomStore.getValue(items[0], "title"); + + t.assertTrue(summary && summary.text && summary.type == "html"); + t.assertTrue(content && content.text && content.type == "html"); + t.assertTrue(title && title.text && title.type == "html"); + + //Test that null attributes throw an exception + try{ + atomStore.hasAttribute(items[0], null); + t.assertTrue(false); + }catch (e){ + + } + d.callback(true); + } + + //Get one item... + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: containsValue", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the containsValue function of the store + // description: + // Simple test of the containsValue function of the store + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items){ + t.is(1, items.length); + + t.assertTrue(atomStore.containsValue(items[0], "id","http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/")); + + d.callback(true); + } + + //Get one item... + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: getAttributes", + timeout: 5000, //1 second + runTest: function(t) { + // summary: + // Simple test of the getAttributes function of the store + // description: + // Simple test of the getAttributes function of the store + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items){ + t.is(1, items.length); + t.assertTrue(atomStore.isItem(items[0])); + + var attributes = atomStore.getAttributes(items[0]); + console.log("getAttributes 4: "+attributes.length); + t.is(10, attributes.length); + d.callback(true); + } + + //Get everything... + atomStore.fetch({ + query: { + }, + count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: fetch_Category", + timeout: 5000, //1 second. + runTest: function(t) { + // summary: + // Retrieve items from the store by category + // description: + // Simple test of the getAttributes function of the store + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items){ + t.is(2, items.length); + t.assertTrue(atomStore.isItem(items[0])); + t.assertTrue(atomStore.isItem(items[1])); + + var categories = atomStore.getValues(items[0], "category"); + t.assertTrue(dojo.some(categories, function(category){ + return category.term == "aol"; + })); + categories = atomStore.getValues(items[1], "category"); + t.assertTrue(dojo.some(categories, function(category){ + return category.term == "aol"; + })); + + d.callback(true); + } + + //Get everything... + atomStore.fetch({ + query: { + category: "aol" + }, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: fetch_byID", + timeout: 5000, //1 second. + runTest: function(t) { + // summary: + // Retrieve items from the store by category + // description: + // Simple test of the getAttributes function of the store + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items){ + console.log("getById: items.length="+items.length) + t.is(1, items.length); + t.assertTrue(atomStore.isItem(items[0])); + + var title = atomStore.getValue(items[0], "title"); + console.log("getById: title.text="+title.text) + t.assertTrue(title.text == "Dojo Grid has landed"); + + d.callback(true); + } + + //Get everything... + atomStore.fetch({ + query: { + id: "http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/" + }, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: fetch_alternate", + timeout: 5000, //1 second. + runTest: function(t) { + // summary: + // Retrieve items from the store by category + // description: + // Simple test of the getAttributes function of the store + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var d = new doh.Deferred(); + function onComplete(items){ + t.is(1, items.length); + t.assertTrue(atomStore.isItem(items[0])); + + var alternate = atomStore.getValue(items[0], "alternate"); + t.assertEqual(alternate.href, "http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/"); + + d.callback(true); + } + + //Get everything... + atomStore.fetch({ + query: { + id: "http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/" + }, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.AtomReadStore.error, t, d) + }); + return d; //Object + } + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var atomStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + + var features = atomStore.getFeatures(); + var count = 0; + for(i in features){ + t.assertTrue((i === "dojo.data.api.Read")); + count++; + } + t.assertTrue(count === 1); + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = dojox.data.tests.stores.AtomReadStore.getBlog1Store(); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + console.log("Looking at function: [" + i + "]"); + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]. Got value: " + testStoreMember); + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CssClassStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CssClassStore.js new file mode 100755 index 0000000..d5a0e60 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CssClassStore.js @@ -0,0 +1,904 @@ +dojo.provide("dojox.data.tests.stores.CssClassStore"); +dojo.require("dojox.data.CssClassStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); + +dojox.data.tests.stores.CssClassStore.createStore = function(context){ + // summary: + // A simple helper function for getting the sample data used in each of the tests. + // description: + // A simple helper function for getting the sample data used in each of the tests. + var store = null; + if(dojo.isBrowser){ + if(!dojox.data.tests.stores.CssClassStore._loaded){ + var head = dojo.doc.getElementsByTagName('head')[0]; + var link = document.createElement('link'); + link.href = require.toUrl('dojox/data/tests/stores/test1.css').toString(); + link.rel = "stylesheet"; + link.type = "text/css"; + head.appendChild(link); + var style; + var text; + if(dojo.isIE){ + style = document.createStyleSheet(); + style.cssText = '@import "'+require.toUrl('dojox/data/tests/stores/test2.css').toString()+'";'; + }else{ + style = document.createElement('style'); + text = document.createTextNode('@import "'+require.toUrl('dojox/data/tests/stores/test2.css').toString()+'";'); + style.appendChild(text); + head.appendChild(style); + } + if(dojo.isIE){ + style = document.createStyleSheet(); + style.cssText = '.embeddedTestClass { text-align: center; }'; + }else{ + style = document.createElement('style'); + text = document.createTextNode('.embeddedTestClass { text-align: center; }'); + style.appendChild(text); + head.appendChild(style); + } + dojox.data.tests.stores.CssClassStore._loaded = true; + } + store = new dojox.data.CssClassStore({context: context}); + }else{ + // When running tests in Rhino, xhrGet is not available, + // so we have the file data in the code below. + + // TODO: What are the stipulations re: DOM ? Can I do the same as above? + } + return store; +}; + +dojox.data.tests.stores.CssClassStore.verifyItems = function(cssClassStore, items, attribute, compareArray){ + // summary: + // A helper function for validating that the items array is ordered + // the same as the compareArray + if(items.length != compareArray.length){ return false; } + for(var i = 0; i < items.length; i++){ + // Safari is dumb, see comment in CssClassStore about bug in selectorText + if(!(cssClassStore.getValue(items[i], attribute) === compareArray[i])){ + return false; //Boolean + } + } + return true; //Boolean +}; + +dojox.data.tests.stores.CssClassStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + for (var i in errData) { + console.log(errData[i]); + } + d.errback(errData); +}; + +doh.register("dojox.data.tests.stores.CssClassStore", + [ + { + name: "testReadAPI_fetch", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on CssClassStore. + // description: + // Simple test of a basic fetch on CssClassStore. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 3); + d.callback(true); + } + + //Get everything... + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + } + }, + function testReadAPI_fetch_all(t){ + // summary: + // Simple test of a basic fetch on CssClassStore. + // description: + // Simple test of a basic fetch on CssClassStore. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(['dojox/data/tests/stores/test1.css', 'dojox/data/tests/stores/test2.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 3); + d.callback(true); + } + + //Get everything... + cssClassStore.fetch({ + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_withinContext(t){ + // summary: + // Simple test of a basic fetch on CssClassStore. + // description: + // Simple test of a basic fetch on CssClassStore. + //dojox.data.tests.stores.CssClassStore.loadStylesheets(); + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(['dojox/data/tests/stores/test1.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 1); + d.callback(true); + } + + //Get everything... + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_withinMultipleSheetContext(t){ + // summary: + // Simple test of a basic fetch on CssClassStore. + // description: + // Simple test of a basic fetch on CssClassStore. + //dojox.data.tests.stores.CssClassStore.loadStylesheets(); + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(['dojox/data/tests/stores/test1.css', 'dojox/data/tests/stores/test2.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 2); + d.callback(true); + } + + //Get everything... + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_switchContext(t){ + // summary: + // Simple test of a basic fetch on CssClassStore. + // description: + // Simple test of a basic fetch on CssClassStore. + //dojox.data.tests.stores.CssClassStore.loadStylesheets(); + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(['dojox/data/tests/stores/test1.css', 'dojox/data/tests/stores/test2.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 2); + + function completedAllTwo(items){ + t.assertTrue(items.length === 1); + d.callback(true); + } + + cssClassStore.setContext(['dojox/data/tests/stores/test1.css']); + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + onComplete: completedAllTwo, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + } + + //Get everything... + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_one(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + cssClassStore.fetch({ + query: {'class': '.linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_one_sans(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_Multiple(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + var done = [false, false]; + + function onCompleteOne(items, request){ + done[0] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + function onCompleteTwo(items, request){ + done[1] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + try{ + cssClassStore.fetch({ + query: {'class': '.embeddedTestClass'}, + onComplete: onCompleteOne, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + cssClassStore.fetch({ + query: {'class': '.linkTestClass'}, + onComplete: onCompleteTwo, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + }catch(e){ + for(var i in e){ + console.log(e[i]); + } + } + + return d; //Object + }, + function testReadAPI_fetch_MultipleMixed(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + + var done = [false, false]; + function onComplete(items, request){ + done[0] = true; + t.is(1, items.length); + t.is('.linkTestClass', cssClassStore.getValue(items[0], 'class')); + if(done[0] && done[1]){ + d.callback(true); + } + } + + function onItem(item){ + done[1] = true; + t.assertTrue(item !== null); + t.is('.embeddedTestClass', cssClassStore.getValue(item, 'class')); + if(done[0] && done[1]){ + d.callback(true); + } + } + + cssClassStore.fetch({ + query: {'class': '.linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + + cssClassStore.fetch({ + query: {'classSans': 'embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_all_streaming(t){ + // summary: + // Simple test of a basic fetch on CsvStore. + // description: + // Simple test of a basic fetch on CsvStore. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + var count = 0; + + function onBegin(size, requestObj){ + t.assertTrue(size === 3); + } + function onItem(item, requestObj){ + t.assertTrue(cssClassStore.isItem(item)); + count++; + } + function onComplete(items, request){ + t.is(3, count); + t.is(null, items); + d.callback(true); + } + + //Get everything... + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + onBegin: onBegin, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_paging(t){ + // summary: + // Test of multiple fetches on a single result. Paging, if you will. + // description: + // Test of multiple fetches on a single result. Paging, if you will. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + + function dumpThirdFetch(items, request){ + t.is(2, items.length); + d.callback(true); + } + + function dumpSecondFetch(items, request){ + t.is(1, items.length); + t.is('.embeddedTestClass', cssClassStore.getValue(items[0], 'class')); + request.start = 0; + request.count = 2; + request.onComplete = dumpThirdFetch; + cssClassStore.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.is(3, items.length); + request.start = 2; + request.count = 1; + request.onComplete = dumpSecondFetch; + cssClassStore.fetch(request); + } + + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + onComplete: dumpFirstFetch, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + + }, + + function testReadAPI_getLabel(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = cssClassStore.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual(".linkTestClass", label); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_getLabelAttributes(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = cssClassStore.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual("class", labelList[0]); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_getValue(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is('.linkTestClass', cssClassStore.getValue(item,'class')); + t.is('linkTestClass', cssClassStore.getValue(item,'classSans')); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'linkTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_getValue_2(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is('.importTestClass', cssClassStore.getValue(item,'class')); + t.is('importTestClass', cssClassStore.getValue(item,'classSans')); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'importTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_getValues(t){ + // summary: + // Simple test of the getValues function of the store. + // description: + // Simple test of the getValues function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var values = cssClassStore.getValues(item,'class'); + t.assertTrue(dojo.isArray(values)); + t.is(1, values.length); + t.is('.embeddedTestClass', values[0]); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_isItem(t){ + // summary: + // Simple test of the isItem function of the store + // description: + // Simple test of the isItem function of the store + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(cssClassStore.isItem(item)); + t.assertTrue(!cssClassStore.isItem({})); + t.assertTrue(!cssClassStore.isItem({ item: "not an item" })); + t.assertTrue(!cssClassStore.isItem("not an item")); + t.assertTrue(!cssClassStore.isItem(["not an item"])); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_hasAttribute(t){ + // summary: + // Simple test of the hasAttribute function of the store + // description: + // Simple test of the hasAttribute function of the store + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(cssClassStore.hasAttribute(item, 'class')); + t.assertTrue(cssClassStore.hasAttribute(item, 'classSans')); + t.assertTrue(!cssClassStore.hasAttribute(item, "Year")); + t.assertTrue(!cssClassStore.hasAttribute(item, "Nothing")); + t.assertTrue(!cssClassStore.hasAttribute(item, "title")); + + //Test that null attributes throw an exception + var passed = false; + try{ + cssClassStore.hasAttribute(item, null); + }catch (e){ + passed = true; + } + t.assertTrue(passed); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_containsValue(t){ + // summary: + // Simple test of the containsValue function of the store + // description: + // Simple test of the containsValue function of the store + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(cssClassStore.containsValue(item, 'class', '.embeddedTestClass')); + t.assertTrue(cssClassStore.containsValue(item, 'classSans', 'embeddedTestClass')); + t.assertTrue(!cssClassStore.containsValue(item, 'class', '.embeddedTestClass2')); + t.assertTrue(!cssClassStore.containsValue(item, 'classSans', 'embeddedTestClass ')); + t.assertTrue(!cssClassStore.containsValue(item, 'class', null)); + + //Test that null attributes throw an exception + var passed = false; + try{ + cssClassStore.containsValue(item, null, "foo"); + }catch (e){ + passed = true; + } + t.assertTrue(passed); + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_getAttributes(t){ + // summary: + // Simple test of the getAttributes function of the store + // description: + // Simple test of the getAttributes function of the store + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(cssClassStore.isItem(item)); + + var attributes = cssClassStore.getAttributes(item); + t.is(2, attributes.length); + for(var i = 0; i < attributes.length; i++){ + t.assertTrue((attributes[i] === 'class' || attributes[i] === 'classSans')); + } + d.callback(true); + } + cssClassStore.fetch({ + query: {'classSans': 'embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var features = cssClassStore.getFeatures(); + var count = 0; + for(var i in features){ + t.assertTrue(i === "dojo.data.api.Read" || i === "dojo.data.api.Identity"); + count++; + } + t.assertTrue(count === 2); + }, + function testReadAPI_fetch_patternMatch0(t){ + // summary: + // Function to test pattern matching of everything swith Cla in it + // description: + // Function to test pattern matching of everything with Cla in it + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + t.is(3, items.length); + var valueArray = ['linkTestClass', 'importTestClass', 'embeddedTestClass']; + t.assertTrue(dojox.data.tests.stores.CssClassStore.verifyItems(cssClassStore, items, 'classSans', valueArray)); + d.callback(true); + } + + cssClassStore.fetch({ + query: {'class': '*TestCla**'}, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_patternMatch_caseInsensitive(t){ + // summary: + // Function to test exact pattern match with case insensitivity set. + // description: + // Function to test exact pattern match with case insensitivity set. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + t.is(1, items.length); + t.assertTrue(cssClassStore.getValue(items[0], 'class') === '.linkTestClass'); + d.callback(true); + } + + cssClassStore.fetch({ + query: {'class': '.LINKtEsTclass'}, + queryOptions: {ignoreCase: true}, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_patternMatch_caseSensitive(t){ + // summary: + // Function to test exact pattern match with case insensitivity set. + // description: + // Function to test exact pattern match with case insensitivity set. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + t.is(0, items.length); + d.callback(true); + } + + cssClassStore.fetch({ + query: {'class': '.LINKtEsTclass'}, + queryOptions: {ignoreCase: false}, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_sortAlphabetic(t){ + // summary: + // Function to test sorting alphabetic ordering. + // description: + // Function to test sorting alphabetic ordering. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + //Output should be in this order... + var orderedArray = [ '.embeddedTestClass', + '.importTestClass', + '.linkTestClass' + ]; + t.is(3, items.length); + t.assertTrue(dojox.data.tests.stores.CssClassStore.verifyItems(cssClassStore, items, 'class', orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: 'class'}]; + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + sort: sortAttributes, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_sortAlphabeticDescending(t){ + // summary: + // Function to test sorting alphabetic ordering in descending mode. + // description: + // Function to test sorting alphabetic ordering in descending mode. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + + + function completed(items, request){ + //Output should be in this order... + var orderedArray = [ 'linkTestClass', + 'importTestClass', + 'embeddedTestClass' + ]; + + console.debug(items); + + t.is(3, items.length); + t.assertTrue(dojox.data.tests.stores.CssClassStore.verifyItems(cssClassStore, items, 'classSans', orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: "classSans", descending: true}]; + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + sort: sortAttributes, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = dojox.data.tests.stores.CssClassStore.createStore(); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + console.log("Looking at function: [" + i + "]"); + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]. Got value: " + testStoreMember); + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + }, + function testIdentityAPI_fetchItemByIdentity(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + d.callback(true); + } + cssClassStore.fetchItemByIdentity({ + identity: ".linkTestClass", + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testIdentityAPI_fetchItemByIdentity_bad1(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + cssClassStore.fetchItemByIdentity({ + identity: ".bsClass", + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testIdentityAPI_fetchItemByIdentity_bad2(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + cssClassStore.fetchItemByIdentity({ + identity: 'linkTestClass', // missing the '.'! + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testIdentityAPI_fetchItemByIdentity_bad3(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + cssClassStore.fetchItemByIdentity({ + identity: '9999999', + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + }, + function testIdentityAPI_getIdentity(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + t.is(3, items.length); + t.assertTrue(cssClassStore.getIdentity(items[0]) === '.embeddedTestClass'); + t.assertTrue(cssClassStore.getIdentity(items[1]) === '.importTestClass'); + t.assertTrue(cssClassStore.getIdentity(items[2]) === '.linkTestClass'); + d.callback(true); + } + //Get everything... + cssClassStore.fetch({ + query: {'class': '*TestClass'}, + sort: [{attribute: 'class'}], + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; //Object + }, + function testIdentityAPI_getIdentityAttributes(t){ + // summary: + // Simple test of the getIdentityAttributes + // description: + // Simple test of the fetchItemByIdentity function of the store. + var cssClassStore = dojox.data.tests.stores.CssClassStore.createStore(); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(cssClassStore.isItem(item)); + var attrs = cssClassStore.getIdentityAttributes(item); + t.assertTrue(dojo.isArray(attrs)); + t.is(1, attrs.length); + t.assertEqual(attrs[0], 'class'); + d.callback(true); + } + cssClassStore.fetchItemByIdentity({ + identity: ".linkTestClass", + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssClassStore.error, t, d) + }); + return d; + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CssRuleStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CssRuleStore.js new file mode 100755 index 0000000..b56c7a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CssRuleStore.js @@ -0,0 +1,787 @@ +dojo.provide("dojox.data.tests.stores.CssRuleStore"); +dojo.require("dojox.data.CssRuleStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); + +dojox.data.tests.stores.CssRuleStore.createStore = function(context){ + // summary: + // A simple helper function for getting the sample data used in each of the tests. + // description: + // A simple helper function for getting the sample data used in each of the tests. + var store = null; + if(dojo.isBrowser){ + if(!dojox.data.tests.stores.CssRuleStore._loaded){ + var head = dojo.doc.getElementsByTagName('head')[0]; + var link = document.createElement('link'); + link.href = require.toUrl('dojox/data/tests/stores/test1.css').toString(); + link.rel = "stylesheet"; + link.type = "text/css"; + head.appendChild(link); + var style; + var text; + if(dojo.isIE){ + style = document.createStyleSheet(); + style.cssText = '@import "'+require.toUrl('dojox/data/tests/stores/test2.css').toString()+'";'; + }else{ + style = document.createElement('style'); + text = document.createTextNode('@import "'+require.toUrl('dojox/data/tests/stores/test2.css').toString()+'";'); + style.appendChild(text); + head.appendChild(style); + } + if(dojo.isIE){ + style = document.createStyleSheet(); + style.cssText = '.embeddedTestClass { text-align: center; }'; + }else{ + style = document.createElement('style'); + text = document.createTextNode('.embeddedTestClass { text-align: center; }'); + style.appendChild(text); + head.appendChild(style); + } + dojox.data.tests.stores.CssRuleStore._loaded = true; + } + store = new dojox.data.CssRuleStore({context: context}); + }else{ + // When running tests in Rhino, xhrGet is not available, + // so we have the file data in the code below. + + // TODO: What are the stipulations re: DOM ? Can I do the same as above? + } + return store; +} ; + +dojox.data.tests.stores.CssRuleStore.verifyItems = function(cssRuleStore, items, attribute, compareArray){ + // summary: + // A helper function for validating that the items array is ordered + // the same as the compareArray + if(items.length != compareArray.length){ return false; } + for(var i = 0; i < items.length; i++){ + if(!(cssRuleStore.getValue(items[i], attribute) === compareArray[i])){ + return false; //Boolean + } + } + return true; //Boolean +}; + +dojox.data.tests.stores.CssRuleStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + for (var i in errData) { + console.log(errData[i]); + } + d.errback(errData); +}; + +doh.register("dojox.data.tests.stores.CssRuleStore", + [ + { + name: "testReadAPI_fetch", + timeout: 10000, //10 seconds. Flickr can sometimes be slow. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on CssRuleStorem longer timeout because initial load can sometimes take a bit.. + // description: + // Simple test of a basic fetch on CssRuleStorem longer timeout because initial load can sometimes take a bit. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 3); + d.callback(true); + } + + //Get everything... + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + } + }, + function testReadAPI_fetch_all(t){ + // summary: + // Simple test of a basic fetch on CssRuleStore. + // description: + // Simple test of a basic fetch on CssClassStore. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(['dojox/data/tests/stores/test1.css', 'dojox/data/tests/stores/test2.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 3); + d.callback(true); + } + + //Get everything... + cssRuleStore.fetch({ + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_withinContext(t){ + // summary: + // Simple test of a basic fetch on CssRuleStore. + // description: + // Simple test of a basic fetch on CssRuleStore. + //dojox.data.tests.stores.CssRuleStore.loadStylesheets(); + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(['dojox/data/tests/stores/test1.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 1); + d.callback(true); + } + + //Get everything... + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_withinMultipleSheetContext(t){ + // summary: + // Simple test of a basic fetch on CssRuleStore. + // description: + // Simple test of a basic fetch on CssRuleStore. + //dojox.data.tests.stores.CssRuleStore.loadStylesheets(); + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(['dojox/data/tests/stores/test1.css', 'dojox/data/tests/stores/test2.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 2); + d.callback(true); + } + + //Get everything... + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_switchContext(t){ + // summary: + // Simple test of a basic fetch on CssRuleStore. + // description: + // Simple test of a basic fetch on CssRuleStore. + //dojox.data.tests.stores.CssRuleStore.loadStylesheets(); + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(['dojox/data/tests/stores/test1.css', 'dojox/data/tests/stores/test2.css']); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue(items.length === 2); + + function completedAllTwo(items){ + t.assertTrue(items.length === 1); + d.callback(true); + } + + cssRuleStore.setContext(['dojox/data/tests/stores/test1.css']); + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + onComplete: completedAllTwo, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + } + + //Get everything... + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_one(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_one_longer(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.linkTestClass .test'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_Multiple(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + var done = [false, false]; + + function onCompleteOne(items, request){ + done[0] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + function onCompleteTwo(items, request){ + done[1] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + try{ + cssRuleStore.fetch({ + query: {'selector': '.embeddedTestClass'}, + onComplete: onCompleteOne, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + cssRuleStore.fetch({ + query: {'selector': '.linkTestClass'}, + onComplete: onCompleteTwo, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + }catch(e){ + for(var i in e){ + console.log(e[i]); + } + } + + return d; //Object + }, + function testReadAPI_fetch_MultipleMixed(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + + var done = [false, false]; + function onComplete(items, request){ + done[0] = true; + t.is(1, items.length); + t.is('.embeddedTestClass', cssRuleStore.getValue(items[0], 'selector')); + if(done[0] && done[1]){ + d.callback(true); + } + } + + function onItem(item){ + done[1] = true; + t.assertTrue(item !== null); + t.is('.linkTestClass .test', cssRuleStore.getValue(item, 'selector')); + if(done[0] && done[1]){ + d.callback(true); + } + } + + cssRuleStore.fetch({ + query: {'selector': '.embeddedTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + + cssRuleStore.fetch({ + query: {'selector': '.linkTestClass .test'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_all_streaming(t){ + // summary: + // Simple test of a basic fetch on CsvStore. + // description: + // Simple test of a basic fetch on CsvStore. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + var count = 0; + + function onBegin(size, requestObj){ + t.assertTrue(size === 3); + } + function onItem(item, requestObj){ + t.assertTrue(cssRuleStore.isItem(item)); + count++; + } + function onComplete(items, request){ + t.is(3, count); + t.is(null, items); + d.callback(true); + } + + //Get everything... + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + onBegin: onBegin, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_paging(t){ + // summary: + // Test of multiple fetches on a single result. Paging, if you will. + // description: + // Test of multiple fetches on a single result. Paging, if you will. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + + function dumpThirdFetch(items, request){ + t.is(2, items.length); + d.callback(true); + } + + function dumpSecondFetch(items, request){ + t.is(1, items.length); + t.is('.embeddedTestClass', cssRuleStore.getValue(items[0], 'selector')); + request.start = 0; + request.count = 2; + request.onComplete = dumpThirdFetch; + cssRuleStore.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.is(3, items.length); + request.start = 2; + request.count = 1; + request.onComplete = dumpSecondFetch; + cssRuleStore.fetch(request); + } + + + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + onComplete: dumpFirstFetch, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + + }, + + function testReadAPI_getLabel(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = cssRuleStore.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual(".linkTestClass", label); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_getLabelAttributes(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = cssRuleStore.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual('selector', labelList[0]); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.linkTestClass'}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_getValue(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is('.linkTestClass', cssRuleStore.getValue(item,'selector')); + t.assertTrue(cssRuleStore.getValue(item, 'parentStyleSheetHref').match('dojox/data/tests/stores/test1.css')); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.linkTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_getValue_2(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is('.importTestClass', cssRuleStore.getValue(item,'selector')); + t.assertTrue(cssRuleStore.getValue(item, 'parentStyleSheetHref').match('dojox/data/tests/stores/test2.css')); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.importTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_getValues(t){ + // summary: + // Simple test of the getValues function of the store. + // description: + // Simple test of the getValues function of the store. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var values = cssRuleStore.getValues(item,'selector'); + t.assertTrue(dojo.isArray(values)); + t.is(1, values.length); + t.is('.embeddedTestClass', values[0]); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_isItem(t){ + // summary: + // Simple test of the isItem function of the store + // description: + // Simple test of the isItem function of the store + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(cssRuleStore.isItem(item)); + t.assertTrue(!cssRuleStore.isItem({})); + t.assertTrue(!cssRuleStore.isItem({ item: "not an item" })); + t.assertTrue(!cssRuleStore.isItem("not an item")); + t.assertTrue(!cssRuleStore.isItem(["not an item"])); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_hasAttribute(t){ + // summary: + // Simple test of the hasAttribute function of the store + // description: + // Simple test of the hasAttribute function of the store + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(cssRuleStore.hasAttribute(item, 'selector')); + t.assertTrue(cssRuleStore.hasAttribute(item, 'classes')); + t.assertTrue(!cssRuleStore.hasAttribute(item, 'Year')); + t.assertTrue(!cssRuleStore.hasAttribute(item, 'Nothing')); + t.assertTrue(!cssRuleStore.hasAttribute(item, 'title')); + + //Test that null attributes throw an exception + var passed = false; + try{ + cssRuleStore.hasAttribute(item, null); + }catch (e){ + passed = true; + } + t.assertTrue(passed); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_containsValue(t){ + // summary: + // Simple test of the containsValue function of the store + // description: + // Simple test of the containsValue function of the store + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(cssRuleStore.containsValue(item, 'selector', '.embeddedTestClass')); + t.assertTrue(cssRuleStore.containsValue(item, 'classes', '.embeddedTestClass')); + t.assertTrue(!cssRuleStore.containsValue(item, 'selector', '.embeddedTestClass2')); + t.assertTrue(!cssRuleStore.containsValue(item, 'classes', 'embeddedTestClass ')); + t.assertTrue(!cssRuleStore.containsValue(item, 'selector', null)); + + //Test that null attributes throw an exception + var passed = false; + try{ + cssRuleStore.containsValue(item, null, "foo"); + }catch (e){ + passed = true; + } + t.assertTrue(passed); + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_getAttributes(t){ + // summary: + // Simple test of the getAttributes function of the store + // description: + // Simple test of the getAttributes function of the store + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(cssRuleStore.isItem(item)); + + var attributes = cssRuleStore.getAttributes(item); + t.assertTrue(attributes.length > 8); + for(var i = 0; i < 8; i++){ + var a = attributes[i]; + t.assertTrue(( a === 'selector' || a === 'classes' + || a === 'rule' || a === 'style' + || a === 'cssText' || a === 'styleSheet' + || a === 'parentStyleSheet' || a === 'parentStyleSheetHref')); + } + d.callback(true); + } + cssRuleStore.fetch({ + query: {'selector': '.embeddedTestClass'}, + onItem: onItem, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + + var features = cssRuleStore.getFeatures(); + var count = 0; + for(var i in features){ + t.assertTrue(i === "dojo.data.api.Read"); + count++; + } + t.assertTrue(count === 1); + }, + function testReadAPI_fetch_patternMatch(t){ + // summary: + // Function to test pattern matching of everything swith Cla in it + // description: + // Function to test pattern matching of everything with Cla in it + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + t.is(4, items.length); + var valueArray = ['.linkTestClass', '.linkTestClass .test', '.importTestClass', '.embeddedTestClass']; + t.assertTrue(dojox.data.tests.stores.CssRuleStore.verifyItems(cssRuleStore, items, 'selector', valueArray)); + d.callback(true); + } + + cssRuleStore.fetch({ + query: {'selector': '*TestCla*'}, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_patternMatch_caseInsensitive(t){ + // summary: + // Function to test exact pattern match with case insensitivity set. + // description: + // Function to test exact pattern match with case insensitivity set. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + t.is(1, items.length); + t.assertTrue(cssRuleStore.getValue(items[0], 'selector') === '.linkTestClass'); + d.callback(true); + } + + cssRuleStore.fetch({ + query: {'selector': '.LINKtEsTclass'}, + queryOptions: {ignoreCase: true}, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_patternMatch_caseSensitive(t){ + // summary: + // Function to test exact pattern match with case insensitivity set. + // description: + // Function to test exact pattern match with case insensitivity set. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + t.is(0, items.length); + d.callback(true); + } + + cssRuleStore.fetch({ + query: {'selector': '.LINKtEsTclass'}, + queryOptions: {ignoreCase: false}, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_sortAlphabetic(t){ + // summary: + // Function to test sorting alphabetic ordering. + // description: + // Function to test sorting alphabetic ordering. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + var d = new doh.Deferred(); + function completed(items, request){ + //Output should be in this order... + var orderedArray = [ '.embeddedTestClass', + '.importTestClass', + '.linkTestClass' + ]; + t.is(3, items.length); + t.assertTrue(dojox.data.tests.stores.CssRuleStore.verifyItems(cssRuleStore, items, 'selector', orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: 'selector'}]; + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + sort: sortAttributes, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_sortAlphabeticDescending(t){ + // summary: + // Function to test sorting alphabetic ordering in descending mode. + // description: + // Function to test sorting alphabetic ordering in descending mode. + var cssRuleStore = dojox.data.tests.stores.CssRuleStore.createStore(); + var d = new doh.Deferred(); + + + function completed(items, request){ + //Output should be in this order... + var orderedArray = [ '.linkTestClass', + '.importTestClass', + '.embeddedTestClass' + ]; + + t.is(3, items.length); + t.assertTrue(dojox.data.tests.stores.CssRuleStore.verifyItems(cssRuleStore, items, 'selector', orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: "selector", descending: true}]; + cssRuleStore.fetch({ + query: {'selector': '*TestClass'}, + sort: sortAttributes, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CssRuleStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + var testStore = dojox.data.tests.stores.CssRuleStore.createStore(); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + console.log("Looking at function: [" + i + "]"); + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]. Got value: " + testStoreMember); + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CsvStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CsvStore.js new file mode 100644 index 0000000..c8f5d75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/CsvStore.js @@ -0,0 +1,1411 @@ +dojo.provide("dojox.data.tests.stores.CsvStore"); +dojo.require("dojox.data.CsvStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); + +dojox.data.tests.stores.CsvStore.getDatasource = function(filepath){ + // summary: + // A simple helper function for getting the sample data used in each of the tests. + // description: + // A simple helper function for getting the sample data used in each of the tests. + + var dataSource = {}; + if(dojo.isBrowser){ + dataSource.url = require.toUrl("dojox/data/tests/"+filepath).toString(); + }else{ + // When running tests in Rhino, xhrGet is not available, + // so we have the file data in the code below. + var csvData; + switch(filepath){ + case "stores/movies.csv": + csvData += "Title, Year, Producer\n"; + csvData += "City of God, 2002, Katia Lund\n"; + csvData += "Rain,, Christine Jeffs\n"; + csvData += "2001: A Space Odyssey, 1968, Stanley Kubrick\n"; + csvData += '"This is a ""fake"" movie title", 1957, Sidney Lumet\n'; + csvData += "Alien, 1979 , Ridley Scott\n"; + csvData += '"The Sequel to ""Dances With Wolves.""", 1982, Ridley Scott\n'; + csvData += '"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward"\n'; + break; + case "stores/movies2.csv": + csvData += "Title, Year, Producer\n"; + csvData += "City of God, 2002, Katia Lund\n"; + csvData += "Rain,\"\", Christine Jeffs\n"; + csvData += "2001: A Space Odyssey, 1968, Stanley Kubrick\n"; + csvData += '"This is a ""fake"" movie title", 1957, Sidney Lumet\n'; + csvData += "Alien, 1979 , Ridley Scott\n"; + csvData += '"The Sequel to ""Dances With Wolves.""", 1982, Ridley Scott\n'; + csvData += '"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward"\n'; + break; + case "stores/empty.csv": + csvData += "Title, Year, Producer\n"; + break; + case "stores/movies3.csv": + csvData += "Title, Year, Producer\n"; + csvData += "\"City\n of God\", 2002, Katia Lund\n"; + csvData += "Rain,\"\", Christine Jeffs\n"; + csvData += "2001: A Space Odyssey, 1968, Stanley Kubrick\n"; + csvData += '"This is a ""fake"" movie title", 1957, Sidney Lumet\n'; + csvData += "Alien, 1979 , Ridley Scott\n"; + csvData += '"The Sequel to ""Dances With\n Wolves.""", 1982, Ridley Scott\n'; + csvData += '"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward"\n'; + break; + case "stores/books.csv": + csvData += "Title, Author\n"; + csvData += "The Transparent Society, David Brin\n"; + csvData += "The First Measured Century, Theodore Caplow\n"; + csvData += "Maps in a Mirror, Orson Scott Card\n"; + csvData += "Princess Smartypants, Babette Cole\n"; + csvData += "Carfree Cities, Crawford J.H.\n"; + csvData += "Down and Out in the Magic Kingdom, Cory Doctorow\n"; + csvData += "Tax Shift, Alan Thein Durning\n"; + csvData += "The Sneetches and other stories, Dr. Seuss\n"; + csvData += "News from Tartary, Peter Fleming\n"; + break; + case "stores/patterns.csv": + csvData += "uniqueId, value\n"; + csvData += "9, jfq4@#!$!@Rf14r14i5u\n"; + csvData += "6, BaBaMaSaRa***Foo\n"; + csvData += "2, bar*foo\n"; + csvData += "8, 123abc\n"; + csvData += "4, bit$Bite\n"; + csvData += "3, 123abc\n"; + csvData += "10, 123abcdefg\n"; + csvData += "1, foo*bar\n"; + csvData += "7, \n"; + csvData += "5, 123abc\n"; + break; + case "stores/semicolonSeparator.csv": + csvData += "article;price\n"; + csvData += "1008;4,59\n"; + csvData += "1010;10,09\n"; + csvData += "1011;5,13\n"; + csvData += "1016;16,68\n"; + csvData += "1019;15,5\n"; + csvData += "1022;10,36\n"; + break; + case "stores/pipeSeparator.csv": + csvData += "article|price\n"; + csvData += "1008|4,59\n"; + csvData += "1010|10,09\n"; + csvData += "1011|5,13\n"; + csvData += "1016|16,68\n"; + csvData += "1019|15,5\n"; + csvData += "1022|10,36\n"; + break; + case "stores/pipeSeparatorInData.csv": + csvData += "article|price\n"; + csvData += "1008|\"4,59|4,54\"\n"; + csvData += "1010|10,09\n"; + csvData += "1011|5,13\n"; + csvData += "1016|16,68\n"; + csvData += "1019|15,5\n"; + csvData += "1022|10,36\n"; + break; + } + dataSource.data = csvData; + } + return dataSource; //Object +}; + +dojox.data.tests.stores.CsvStore.verifyItems = function(csvStore, items, attribute, compareArray){ + // summary: + // A helper function for validating that the items array is ordered + // the same as the compareArray + if(items.length != compareArray.length){ return false; } + for(var i = 0; i < items.length; i++){ + if(!(csvStore.getValue(items[i], attribute) === compareArray[i])){ + return false; //Boolean + } + } + return true; //Boolean +}; + +dojox.data.tests.stores.CsvStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + for (var i in errData) { + console.log(errData[i]); + } + d.errback(errData); +}; + +doh.register("dojox.data.tests.stores.CsvStore", + [ + function testReadAPI_fetch_all(t){ + // summary: + // Simple test of a basic fetch on CsvStore. + // description: + // Simple test of a basic fetch on CsvStore. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue((items.length === 7)); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_all_empty(t){ + // summary: + // Simple test of a basic fetch on CsvStore that's empty. + // description: + // Simple test of a basic fetch on CsvStore that's empty. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/empty.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue((items.length === 0)); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_all_semicolon(t){ + // summary: + // Simple test of a basic fetch on CsvStore with separator defined as |. + // description: + // Simple test of a basic fetch on CsvStore with separator defined as |. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/semicolonSeparator.csv"); + args.separator = ";"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertEqual(6, items.length); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_all_pipe(t){ + // summary: + // Simple test of a basic fetch on CsvStore with separator defined as |. + // description: + // Simple test of a basic fetch on CsvStore with separator defined as | + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/pipeSeparator.csv"); + args.separator = "|"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertEqual(6, items.length); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_all_pipe_indata(t){ + // summary: + // Simple test of a basic fetch on CsvStore with separator defined as |. + // description: + // Simple test of a basic fetch on CsvStore with separator defined as | + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/pipeSeparatorInData.csv"); + args.separator = "|"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertEqual(6, items.length); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_all_withnewlinedCsv(t){ + // summary: + // Simple test of a basic fetch on CsvStore loading a CSV file with quoted newlines. + // description: + // Simple test of a basic fetch on CsvStore loading a CSV file with quoted newlines. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies3.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue((items.length === 7)); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_all_withEmptyStringField(t){ + // summary: + // Simple test of a basic fetch on CsvStore. + // description: + // Simple test of a basic fetch on CsvStore. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies2.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertTrue((items.length === 7)); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_one(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + csvStore.fetch({ query: {Title: "*Sequel*"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_one_preventcache(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + args.urlPreventCache = true; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + csvStore.fetch({ query: {Title: "*Sequel*"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_Multiple(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + + var done = [false, false]; + + function onCompleteOne(items, request){ + done[0] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + function onCompleteTwo(items, request){ + done[1] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + try + { + csvStore.fetch({ query: {Title: "*Sequel*"}, + onComplete: onCompleteOne, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + csvStore.fetch({ query: {Title: "2001:*"}, + onComplete: onCompleteTwo, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + } + catch(e) + { + for (var i in e) { + console.log(e[i]); + } + } + + return d; //Object + }, + function testReadAPI_fetch_MultipleMixed(t){ + // summary: + // Simple test of a basic fetch on CsvStore of a single item. + // description: + // Simple test of a basic fetch on CsvStore of a single item. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + + var done = [false, false]; + function onComplete(items, request){ + done[0] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + function onItem(item){ + done[1] = true; + t.assertTrue(item !== null); + t.is('Dymtryk "the King", Edward', csvStore.getValue(item,"Producer")); + t.is('Caine Mutiny, The', csvStore.getValue(item,"Title")); + if(done[0] && done[1]){ + d.callback(true); + } + } + + csvStore.fetch({ query: {Title: "*Sequel*"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + + csvStore.fetchItemByIdentity({identity: "6", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_all_streaming(t){ + // summary: + // Simple test of a basic fetch on CsvStore. + // description: + // Simple test of a basic fetch on CsvStore. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + var count = 0; + + function onBegin(size, requestObj){ + t.assertTrue(size === 7); + } + function onItem(item, requestObj){ + t.assertTrue(csvStore.isItem(item)); + count++; + } + function onComplete(items, request){ + t.is(7, count); + t.is(null, items); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onBegin: onBegin, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_paging(t){ + // summary: + // Test of multiple fetches on a single result. Paging, if you will. + // description: + // Test of multiple fetches on a single result. Paging, if you will. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + + function dumpSixthFetch(items, request){ + t.is(5, items.length); + d.callback(true); + } + + function dumpFifthFetch(items, request){ + t.is(0, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpSixthFetch; + csvStore.fetch(request); + } + + function dumpFourthFetch(items, request){ + t.is(5, items.length); + request.start = 9; + request.count = 100; + request.onComplete = dumpFifthFetch; + csvStore.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.is(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + csvStore.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.is(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + csvStore.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.is(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + csvStore.fetch(request); + } + + function completed(items, request){ + t.is(7, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + csvStore.fetch(request); + } + + csvStore.fetch({onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + + function testReadAPI_getLabel(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + args.label = "Title"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = csvStore.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual("The Sequel to \"Dances With Wolves.\"", label); + d.callback(true); + } + csvStore.fetch({ query: {Title: "*Sequel*"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + return d; + }, + function testReadAPI_getLabelAttributes(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + args.label = "Title"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = csvStore.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual("Title", labelList[0]); + d.callback(true); + } + csvStore.fetch({ query: {Title: "*Sequel*"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d) + }); + return d; + }, + function testReadAPI_getValue(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is('Dymtryk "the King", Edward', csvStore.getValue(item,"Producer")); + t.is('Caine Mutiny, The', csvStore.getValue(item,"Title")); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "6", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testReadAPI_getValue_2(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is("City of God", csvStore.getValue(item,"Title")); + t.is("2002", csvStore.getValue(item,"Year")); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "0", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testReadAPI_getValue_3(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is("1979", csvStore.getValue(item,"Year")); + t.is("Alien", csvStore.getValue(item,"Title")); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "4", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testReadAPI_getValue_4(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.is("2001: A Space Odyssey", csvStore.getValue(item,"Title")); + t.is("Stanley Kubrick", csvStore.getValue(item,"Producer")); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "2", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + + function testReadAPI_getValues(t){ + // summary: + // Simple test of the getValues function of the store. + // description: + // Simple test of the getValues function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + var names = csvStore.getValues(item,"Title"); + t.assertTrue(dojo.isArray(names)); + t.is(1, names.length); + t.is("Rain", names[0]); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testIdentityAPI_fetchItemByIdentity(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + + function testIdentityAPI_fetchItemByIdentity_withDefinedIdentifier(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + args.identifier = "Title"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "City of God", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + + function testIdentityAPI_fetchItemByIdentity_withDefinedIdentifier_bad1(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + args.identifier = "Title"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "No Such Title", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + + function testIdentityAPI_fetchItemByIdentity_bad1(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "7", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testIdentityAPI_fetchItemByIdentity_bad2(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "-1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testIdentityAPI_fetchItemByIdentity_bad3(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item === null); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "999999", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testIdentityAPI_getIdentity(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(7, items.length); + var passed = true; + for(var i = 0; i < items.length; i++){ + if(!(csvStore.getIdentity(items[i]) === i)){ + passed=false; + break; + } + } + t.assertTrue(passed); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + + function testIdentityAPI_getIdentity_withDefinedIdentifier(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + args.identifier = "Title"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(7, items.length); + var passed = true; + for(var i = 0; i < items.length; i++){ + if(!csvStore.getIdentity(items[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + d.callback(true); + } + + //Get everything... + csvStore.fetch({ onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + + function testIdentityAPI_getIdentity_withBadDefinedIdentifier(t){ + // summary: + // Simple test of the fetchItemByIdentity function of the store. + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + args.identifier = "Not Column"; + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + d.errback(new Error("Unexpected callback of success in failure case.")); + } + function error(err){ + d.callback(true); + } + + //Get everything... + csvStore.fetch({onComplete: completed, onError: error}); + return d; //Object + }, + + function testIdentityAPI_getIdentityAttributes(t){ + // summary: + // Simple test of the getIdentityAttributes + // description: + // Simple test of the fetchItemByIdentity function of the store. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(csvStore.isItem(item)); + t.assertEqual(null, csvStore.getIdentityAttributes(item)); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testReadAPI_isItem(t){ + // summary: + // Simple test of the isItem function of the store + // description: + // Simple test of the isItem function of the store + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(csvStore.isItem(item)); + t.assertTrue(!csvStore.isItem({})); + t.assertTrue(!csvStore.isItem({ item: "not an item" })); + t.assertTrue(!csvStore.isItem("not an item")); + t.assertTrue(!csvStore.isItem(["not an item"])); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testReadAPI_hasAttribute(t){ + // summary: + // Simple test of the hasAttribute function of the store + // description: + // Simple test of the hasAttribute function of the store + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(csvStore.hasAttribute(item, "Title")); + t.assertTrue(csvStore.hasAttribute(item, "Producer")); + t.assertTrue(!csvStore.hasAttribute(item, "Year")); + t.assertTrue(!csvStore.hasAttribute(item, "Nothing")); + t.assertTrue(!csvStore.hasAttribute(item, "title")); + + //Test that null attributes throw an exception + var passed = false; + try{ + csvStore.hasAttribute(item, null); + }catch (e){ + passed = true; + } + t.assertTrue(passed); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testReadAPI_containsValue(t){ + // summary: + // Simple test of the containsValue function of the store + // description: + // Simple test of the containsValue function of the store + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(csvStore.containsValue(item, "Title", "Alien")); + t.assertTrue(csvStore.containsValue(item, "Year", "1979")); + t.assertTrue(csvStore.containsValue(item, "Producer", "Ridley Scott")); + t.assertTrue(!csvStore.containsValue(item, "Title", "Alien2")); + t.assertTrue(!csvStore.containsValue(item, "Year", "1979 ")); + t.assertTrue(!csvStore.containsValue(item, "Title", null)); + + //Test that null attributes throw an exception + var passed = false; + try{ + csvStore.containsValue(item, null, "foo"); + }catch (e){ + passed = true; + } + t.assertTrue(passed); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "4", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + function testReadAPI_getAttributes(t){ + // summary: + // Simple test of the getAttributes function of the store + // description: + // Simple test of the getAttributes function of the store + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + t.assertTrue(item !== null); + t.assertTrue(csvStore.isItem(item)); + + var attributes = csvStore.getAttributes(item); + t.is(3, attributes.length); + for(var i = 0; i < attributes.length; i++){ + t.assertTrue((attributes[i] === "Title" || attributes[i] === "Year" || attributes[i] === "Producer")); + } + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "4", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + + function testReadAPI_getAttributes_onlyTwo(t){ + // summary: + // Simple test of the getAttributes function of the store + // description: + // Simple test of the getAttributes function of the store + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function onItem(item){ + // Test an item that does not have all of the attributes + t.assertTrue(item !== null); + t.assertTrue(csvStore.isItem(item)); + + var attributes = csvStore.getAttributes(item); + t.assertTrue(attributes.length === 2); + t.assertTrue(attributes[0] === "Title"); + t.assertTrue(attributes[1] === "Producer"); + d.callback(true); + } + csvStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; + }, + + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var features = csvStore.getFeatures(); + var count = 0; + for(var i in features){ + t.assertTrue((i === "dojo.data.api.Read" || i === "dojo.data.api.Identity")); + count++; + } + t.assertTrue(count === 2); + }, + function testReadAPI_fetch_patternMatch0(t){ + // summary: + // Function to test pattern matching of everything starting with lowercase e + // description: + // Function to test pattern matching of everything starting with lowercase e + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(2, items.length); + var valueArray = [ "Alien", "The Sequel to \"Dances With Wolves.\""]; + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "Title", valueArray)); + d.callback(true); + } + + csvStore.fetch({query: {Producer: "* Scott"}, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_patternMatch1(t){ + // summary: + // Function to test pattern matching of everything with $ in it. + // description: + // Function to test pattern matching of everything with $ in it. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.assertTrue(items.length === 2); + var valueArray = [ "jfq4@#!$!@Rf14r14i5u", "bit$Bite"]; + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "value", valueArray)); + d.callback(true); + } + + csvStore.fetch({query: {value: "*$*"}, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_patternMatch2(t){ + // summary: + // Function to test exact pattern match + // description: + // Function to test exact pattern match + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(1, items.length); + t.assertTrue(csvStore.getValue(items[0], "value") === "bar*foo"); + d.callback(true); + } + + csvStore.fetch({query: {value: "bar\\*foo"}, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_patternMatch_caseInsensitive(t){ + // summary: + // Function to test exact pattern match with case insensitivity set. + // description: + // Function to test exact pattern match with case insensitivity set. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(1, items.length); + t.assertTrue(csvStore.getValue(items[0], "value") === "bar*foo"); + d.callback(true); + } + + csvStore.fetch({query: {value: "BAR\\*foo"}, queryOptions: {ignoreCase: true}, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_patternMatch_caseSensitive(t){ + // summary: + // Function to test exact pattern match with case insensitivity set. + // description: + // Function to test exact pattern match with case insensitivity set. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(0, items.length); + d.callback(true); + } + + csvStore.fetch({query: {value: "BAR\\*foo"}, queryOptions: {ignoreCase: false}, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_sortNumeric(t){ + // summary: + // Function to test sorting numerically. + // description: + // Function to test sorting numerically. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.assertTrue(items.length === 10); + // TODO: CsvStore treats everything like a string, so these numbers will be sorted lexicographically. + var orderedArray = [ "1", "10", "2", "3", "4", "5", "6", "7", "8", "9" ]; + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "uniqueId", orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: "uniqueId"}]; + csvStore.fetch({onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d), + sort: sortAttributes}); + return d; //Object + }, + function testReadAPI_fetch_sortNumericDescending(t){ + // summary: + // Function to test sorting numerically. + // description: + // Function to test sorting numerically. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(10, items.length); + // TODO: CsvStore treats everything like a string, so these numbers will be sorted lexicographically. + var orderedArray = [ "9", "8", "7", "6", "5", "4", "3", "2", "10", "1" ]; + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "uniqueId", orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: "uniqueId", descending: true}]; + csvStore.fetch({ sort: sortAttributes, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_sortNumericWithCount(t){ + // summary: + // Function to test sorting numerically in descending order, returning only a specified number of them. + // description: + // Function to test sorting numerically in descending order, returning only a specified number of them. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + t.is(5, items.length); + // TODO: CsvStore treats everything like a string, so these numbers will be sorted lexicographically. + var orderedArray = [ "9", "8", "7", "6", "5" ]; + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "uniqueId", orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: "uniqueId", descending: true}]; + csvStore.fetch({sort: sortAttributes, + count: 5, + onComplete: completed, + onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_sortAlphabetic(t){ + // summary: + // Function to test sorting alphabetic ordering. + // description: + // Function to test sorting alphabetic ordering. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + //Output should be in this order... + var orderedArray = [ "123abc", + "123abc", + "123abc", + "123abcdefg", + "BaBaMaSaRa***Foo", + "bar*foo", + "bit$Bite", + "foo*bar", + "jfq4@#!$!@Rf14r14i5u", + undefined + ]; + t.is(10, items.length); + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "value", orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: "value"}]; + csvStore.fetch({sort: sortAttributes, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_sortAlphabeticDescending(t){ + // summary: + // Function to test sorting alphabetic ordering in descending mode. + // description: + // Function to test sorting alphabetic ordering in descending mode. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + //Output should be in this order... + var orderedArray = [ undefined, + "jfq4@#!$!@Rf14r14i5u", + "foo*bar", + "bit$Bite", + "bar*foo", + "BaBaMaSaRa***Foo", + "123abcdefg", + "123abc", + "123abc", + "123abc" + ]; + t.is(10, items.length); + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "value", orderedArray)); + d.callback(true); + } + + var sortAttributes = [{attribute: "value", descending: true}]; + csvStore.fetch({sort: sortAttributes, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_sortMultiple(t){ + // summary: + // Function to test sorting on multiple attributes. + // description: + // Function to test sorting on multiple attributes. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/patterns.csv"); + var csvStore = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + function completed(items, request){ + var orderedArray0 = [ "8", "5", "3", "10", "6", "2", "4", "1", "9", "7" ]; + var orderedArray1 = [ "123abc", + "123abc", + "123abc", + "123abcdefg", + "BaBaMaSaRa***Foo", + "bar*foo", + "bit$Bite", + "foo*bar", + "jfq4@#!$!@Rf14r14i5u", + undefined + ]; + t.is(10, items.length); + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "uniqueId", orderedArray0)); + t.assertTrue(dojox.data.tests.stores.CsvStore.verifyItems(csvStore, items, "value", orderedArray1)); + d.callback(true); + } + + var sortAttributes = [{ attribute: "value"}, { attribute: "uniqueId", descending: true}]; + csvStore.fetch({sort: sortAttributes, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_sortMultipleSpecialComparator(t){ + // summary: + // Function to test sorting on multiple attributes with a custom comparator. + // description: + // Function to test sorting on multiple attributes with a custom comparator. + + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var csvStore = new dojox.data.CsvStore(args); + + csvStore.comparatorMap = {}; + csvStore.comparatorMap["Producer"] = function(a,b){ + var ret = 0; + // We want to sort authors alphabetical by their last name + function lastName(name){ + if(typeof name === "undefined"){ return undefined; } + + var matches = name.match(/\s*(\S+)$/); // Grab the last word in the string. + return matches ? matches[1] : name; // Strings with only whitespace will not match. + } + var lastNameA = lastName(a); + var lastNameB = lastName(b); + if(lastNameA > lastNameB || typeof lastNameA === "undefined"){ + ret = 1; + }else if(lastNameA < lastNameB || typeof lastNameB === "undefined"){ + ret = -1; + } + return ret; + }; + + var sortAttributes = [{attribute: "Producer", descending: true}, { attribute: "Title", descending: true}]; + + var d = new doh.Deferred(); + function completed(items, findResult){ + var orderedArray = [5,4,0,3,2,1,6]; + t.assertTrue(items.length === 7); + var passed = true; + for(var i = 0; i < items.length; i++){ + if(!(csvStore.getIdentity(items[i]) === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + d.callback(true); + } + + csvStore.fetch({sort: sortAttributes, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.CsvStore.error, t, d)}); + return d; //Object + }, + + { + name: "testReadAPI_fetch_abort", + runTest: function(t){ + // summary: + // Simple test of a basic fetch abort on CsvStore. + // description: + // Simple test of a basic fetch abort on CsvStore. + //Can only async abort in a browser, so disable this test from rhino + if(dojo.isBrowser){ + var args = dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv"); + var store = new dojox.data.CsvStore(args); + + var d = new doh.Deferred(); + var abortCalled = false; + var completedAll = function(items, request){ + t.is(7, items.length); + if(abortCalled){ + console.log("Made it to complete callback and abort was called. Problem."); + d.errback(new Error("Should not be here.")); + }else{ + //We beat out calling abort, so this is okay. Timing. + console.log("in onComplete and abort has not been called. Timing. This is okay."); + d.callback(true); + } + }; + var error = function(errData, request){ + //An abort should throw a cancel error, so we should + //reach this. + t.assertTrue(true); + d.callback(true); + }; + + //Get everything... + var req = store.fetch({ onComplete: completedAll, onError: error}); + abortCalled=true; + console.log("Calling abort."); + req.abort(); + return d; + } + } + }, + + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = new dojox.data.CsvStore(dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv")); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + console.log("Looking at function: [" + i + "]"); + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]. Got value: " + testStoreMember); + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + }, + function testIdentityAPI_functionConformance(t){ + // summary: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = new dojox.data.CsvStore(dojox.data.tests.stores.CsvStore.getDatasource("stores/movies.csv")); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + + for(var i in identityApi){ + if(i.toString().charAt(0) !== '_') + { + var member = identityApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + console.log("Looking at function: [" + i + "]"); + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/FileStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/FileStore.js new file mode 100755 index 0000000..eda1177 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/FileStore.js @@ -0,0 +1,697 @@ +dojo.provide("dojox.data.tests.stores.FileStore"); +dojo.require("dojox.data.FileStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); + + +dojox.data.tests.stores.FileStore.getGeoStore = function(){ + return new dojox.data.FileStore({url: require.toUrl("dojox/data/tests/stores/filestore_dojoxdatageo.php").toString(), pathAsQueryParam: true}); +}; + + +doh.register("dojox.data.tests.stores.FileStore", + [ +/*************************************** + dojo.data.api.Read API +***************************************/ + { + name: "testReadAPI_fetch_all", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of fetching all xml items through an XML element called isbn + // description: + // Simple test of fetching all xml items through an XML element called isbn + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(49, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"*"}, queryOptions: {deep: true}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_fetch_one", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of fetching one xml items through an XML element called isbn + // description: + // Simple test of fetching one xml items through an XML element called isbn + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"Commonwealth of Australia"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_fetch_paging", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of fetching a series of pages + // description: + // Simple test of fetching a series of pages + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + + function dumpSixthFetch(items, request){ + t.assertEqual(20, items.length); + d.callback(true); + } + + function dumpFifthFetch(items, request){ + t.assertEqual(40, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpSixthFetch; + store.fetch(request); + } + + function dumpFourthFetch(items, request){ + t.assertEqual(20, items.length); + request.start = 9; + request.count = 100; + request.onComplete = dumpFifthFetch; + store.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + store.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.assertEqual(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + store.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + store.fetch(request); + } + + function completed(items, request){ + t.assertEqual(49, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + store.fetch(request); + } + + function error(errData, request){ + d.errback(errData); + } + + store.fetch({queryOptions: {deep:true}, onComplete: completed, onError: error}); + return d; //Object + } + }, + { + name: "testReadAPI_fetch_pattern0", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of fetching a few files based on wildcarded name + // description: + // Simple test of fetching a few files based on wildcarded name + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(3, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"C*"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_fetch_pattern1", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of fetching a one files based on wildcarded name + // description: + // Simple test of fetching a one file based on wildcarded name + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"?ussia"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_fetch_pattern_caseInsensitive", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of fetching one file item case insensitively + // description: + // Simple test of fetching one file item case insensitively + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"germany"}, queryOptions: {ignoreCase: true}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_fetch_pattern_caseSensitive", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of fetching one file item case sensitively + // description: + // Simple test of fetching one file item case sensitively + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"Germany"}, queryOptions: {ignoreCase: false}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_getLabel", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the getLabel function against a store + // description: + // Simple test of the getLabel function against a store + + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = store.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual("China", label); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"China"}, onComplete: onComplete, onError: onError}); + return d; + } + }, + { + name: "testReadAPI_getLabelAttributes", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = store.getLabelAttributes(items[0]); + t.assertTrue(labelList !== null); + t.assertEqual("name", labelList[0]); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"China"}, onComplete: onComplete, onError: onError}); + return d; + } + }, + { + name: "testReadAPI_getValue", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the getValue API + // description: + // Simple test of the getValue API + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"name")); + t.assertEqual(store.getValue(item,"name"), "Guadalajara"); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"Guadalajara"}, queryOptions: {deep: true}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_getValues", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the getValues API + // description: + // Simple test of the getValues API + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"name")); + var values = store.getValues(item,"name"); + t.assertEqual(1,values.length); + t.assertEqual("Guadalajara", values[0]); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"Guadalajara"}, queryOptions: {deep: true}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_isItem", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the isItem API + // description: + // Simple test of the isItem API + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItem(item)); + t.assertTrue(!store.isItem({})); + t.assertTrue(!store.isItem("Foo")); + t.assertTrue(!store.isItem(1)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"Guadalajara"}, queryOptions: {deep: true}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_isItem_multistore", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the isItem API across multiple store instances. + // description: + // Simple test of the isItem API across multiple store instances. + var store1 = dojox.data.tests.stores.FileStore.getGeoStore(); + var store2 = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + + function onError(error, request) { + d.errback(error); + } + + function onComplete1(items, request) { + t.assertEqual(1, items.length); + var item1 = items[0]; + t.assertTrue(store1.isItem(item1)); + + function onComplete2(items, request) { + t.assertEqual(1, items.length); + var item2 = items[0]; + t.assertTrue(store2.isItem(item2)); + t.assertTrue(!store1.isItem(item2)); + t.assertTrue(!store2.isItem(item1)); + d.callback(true); + } + store2.fetch({query:{name:"Guadalajara"}, queryOptions: {deep: true}, onComplete: onComplete2, onError: onError}); + } + store1.fetch({query:{name:"China"}, onComplete: onComplete1, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_hasAttribute", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the hasAttribute API + // description: + // Simple test of the hasAttribute API + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"name")); + t.assertTrue(!store.hasAttribute(item,"bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"China"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_containsValue", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the containsValue API + // description: + // Simple test of the containsValue API + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"name", "China")); + t.assertTrue(!store.containsValue(item,"name", "bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"China"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_sortDescending", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = ["root.json","United States of America","Sudan","Spain","Russia","Mongolia","Mexico","Kenya","Italy","India","Germany","France","Egypt","Commonwealth of Australia","China","Canada","Brazil","Argentina"]; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(18, items.length); + for(var i = 0; i < items.length; i++){ + t.assertEqual(order[i], store.getValue(items[i],"name").toString()); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "name", descending: true}]; + store.fetch({query:{name:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_sortAscending", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the sorting API in ascending order. + // description: + // Simple test of the sorting API in ascending order. + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + + var order = ["root.json","United States of America","Sudan","Spain","Russia","Mongolia","Mexico","Kenya","Italy","India","Germany","France","Egypt","Commonwealth of Australia","China","Canada","Brazil","Argentina"].reverse(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(18, items.length); + for(var i = 0; i < items.length; i++){ + t.assertEqual(order[i], store.getValue(items[i],"name").toString()); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "name"}]; + store.fetch({query:{name:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: "testReadAPI_isItemLoaded", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{name:"China"}, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + var features = store.getFeatures(); + var count = 0; + var i; + for(i in features){ + t.assertTrue((i === "dojo.data.api.Read" || i === "dojo.data.api.Identity")); + count++; + } + t.assertEqual(2, count); + }, + { + name: "testReadAPI_getAttributes", + timeout: 10000, //10 seconds. Lots of server calls, expect network delay + runTest: function(t) { + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.FileStore.getGeoStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + t.assertEqual(7,attributes.length); + for(var i=0; i parseInt(b.toString())){ + ret = 1; + }else if(parseInt(a.toString()) < parseInt(b.toString())){ + ret = -1; + } + return ret; //int, {-1,0,1} + }; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var itemId = 20; + for(var i = 0; i < items.length; i++){ + t.assertEqual(itemId, store.getValue(items[i],"isbn").toString()); + itemId--; + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn", descending: true}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortAscendingNumeric(t){ + // summary: + // Simple test of the sorting API in ascending order using a numeric comparator. + // description: + // Simple test of the sorting API in ascending order using a numeric comparator. + var store = dojox.data.tests.stores.HtmlStore.getBooksStore(); + + //isbn should be treated as a numeric, not as a string comparison + store.comparatorMap = {}; + store.comparatorMap["isbn"] = function(a, b){ + var ret = 0; + if(parseInt(a.toString()) > parseInt(b.toString())){ + ret = 1; + }else if(parseInt(a.toString()) < parseInt(b.toString())){ + ret = -1; + } + return ret; //int, {-1,0,1} + }; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var itemId = 1; + for(var i = 0; i < items.length; i++){ + t.assertEqual(itemId, store.getValue(items[i],"isbn").toString()); + itemId++; + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn"}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItemLoaded(t){ + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.HtmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var store = dojox.data.tests.stores.HtmlStore.getBooks2Store(); + var features = store.getFeatures(); + var count = 0; + for(i in features){ + t.assertTrue((i === "dojo.data.api.Read" || i === "dojo.data.api.Identity")); + count++; + } + t.assertEqual(2, count); + }, + function testReadAPI_getAttributes(t){ + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.HtmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + t.assertEqual(3,attributes.length); + for(var i=0; i parseInt(b.toString())){ + ret = 1; + }else if(parseInt(a.toString()) < parseInt(b.toString())){ + ret = -1; + } + return ret; //int, {-1,0,1} + }; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var itemId = 20; + for(var i = 0; i < items.length; i++){ + t.assertEqual(itemId, store.getValue(items[i],"isbn").toString()); + itemId--; + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn", descending: true}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortAscendingNumeric(t){ + // summary: + // Simple test of the sorting API in ascending order using a numeric comparator. + // description: + // Simple test of the sorting API in ascending order using a numeric comparator. + var store = dojox.data.tests.stores.HtmlTableStore.getBooksStore(); + + //isbn should be treated as a numeric, not as a string comparison + store.comparatorMap = {}; + store.comparatorMap["isbn"] = function(a, b){ + var ret = 0; + if(parseInt(a.toString()) > parseInt(b.toString())){ + ret = 1; + }else if(parseInt(a.toString()) < parseInt(b.toString())){ + ret = -1; + } + return ret; //int, {-1,0,1} + }; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var itemId = 1; + for(var i = 0; i < items.length; i++){ + t.assertEqual(itemId, store.getValue(items[i],"isbn").toString()); + itemId++; + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn"}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItemLoaded(t){ + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.HtmlTableStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var store = dojox.data.tests.stores.HtmlTableStore.getBooks2Store(); + var features = store.getFeatures(); + var count = 0; + for(i in features){ + t.assertTrue((i === "dojo.data.api.Read" || i === "dojo.data.api.Identity")); + count++; + } + t.assertEqual(2, count); + }, + function testReadAPI_getAttributes(t){ + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.HtmlTableStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + t.assertEqual(3,attributes.length); + for(var i=0; i lastCharB || typeof lastCharA === "undefined"){ + ret = 1; + }else if(lastCharA < lastCharB || typeof lastCharB === "undefined"){ + ret = -1; + } + return ret; + }; + + var sortAttributes = [{attribute: "key", descending: true}, { attribute: "value", descending: true}]; + + var d = new doh.Deferred(); + function completed(items, findResult){ + var orderedArray = [5,4,0,3,2,1,6]; + var orderedArray = [ "day", "nday", "weekOfYear", "dayOfYear", "year", "month", "nmonth" ]; + t.assertTrue(items.length === 7); + var passed = true; + for(var i = 0; i < items.length; i++){ + if(!(keyStore.getIdentity(items[i]) === orderedArray[i])){ + passed=false; + break; + } + } + t.assertTrue(passed); + d.callback(true); + } + + keyStore.fetch({sort: sortAttributes, onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.KeyValueStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = new dojox.data.KeyValueStore(dojox.data.tests.stores.KeyValueStore.getDatasource("stores/movies.csv")); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + console.log("Looking at function: [" + i + "]"); + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]. Got value: " + testStoreMember); + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + }, + function testIdentityAPI_functionConformance(t){ + // summary: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test identity API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = new dojox.data.KeyValueStore(dojox.data.tests.stores.KeyValueStore.getDatasource("stores/movies.csv")); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + + for(i in identityApi){ + if(i.toString().charAt(0) !== '_') + { + var member = identityApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + console.log("Looking at function: [" + i + "]"); + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/OpenSearchStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/OpenSearchStore.js new file mode 100644 index 0000000..c755223 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/OpenSearchStore.js @@ -0,0 +1,1306 @@ +dojo.provide("dojox.data.tests.stores.OpenSearchStore"); +dojo.require("dojox.data.OpenSearchStore"); +dojo.require("dojo.data.api.Read"); + + +dojox.data.tests.stores.OpenSearchStore.getAtomStore = function(){ + var store = new dojox.data.OpenSearchStore({url: require.toUrl('dojox/data/tests/stores/opensearch_atom.xml').toString()}); + store._createSearchUrl = function(request){ + return require.toUrl('dojox/data/tests/stores/atom1.xml').toString(); + }; + return store; +}; +dojox.data.tests.stores.OpenSearchStore.getRSSStore = function(){ + var store = new dojox.data.OpenSearchStore({url: require.toUrl('dojox/data/tests/stores/opensearch_rss.xml').toString()}); + store._createSearchUrl = function(request){ + return require.toUrl('dojox/data/tests/stores/rss1.xml').toString(); + }; + return store; +}; +dojox.data.tests.stores.OpenSearchStore.getHTMLStore = function(){ + var store = new dojox.data.OpenSearchStore({url: require.toUrl('dojox/data/tests/stores/opensearch_html.xml').toString(), itemPath: "table tbody tr"}); + store._createSearchUrl = function(request){ + return require.toUrl('dojox/data/tests/stores/books.html').toString(); + }; + return store; +}; + +doh.register("dojox.data.tests.stores.OpenSearchStore", + [ + { + name: 'testReadAPI_fetch_all_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of fetching all atom entries + // description: + // Simple test of fetching all atom entries + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_fetch_all_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of fetching all atom entries + // description: + // Simple test of fetching all atom entries + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_fetch_all_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of fetching all atom entries + // description: + // Simple test of fetching all atom entries + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_fetch_paging_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn + // description: + // Simple test of fetching one xml items through an XML element called isbn + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + + function dumpFifthFetch(items, request){ + t.assertEqual(0, items.length); + d.callback(true); + } + + function dumpFourthFetch(items, request){ + t.assertEqual(18, items.length); + request.start = 20; + request.count = 100; + request.onComplete = dumpFifthFetch; + store.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + store.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.assertEqual(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + store.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + store.fetch(request); + } + + function completed(items, request){ + t.assertEqual(20, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + store.fetch(request); + } + + function error(errData, request){ + d.errback(errData); + } + + store.fetch({onComplete: completed, onError: error}); + return d; //Object + } + }, + { + name: 'testReadAPI_fetch_paging_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn + // description: + // Simple test of fetching one xml items through an XML element called isbn + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + + function dumpFifthFetch(items, request){ + t.assertEqual(0, items.length); + d.callback(true); + } + + function dumpFourthFetch(items, request){ + t.assertEqual(18, items.length); + request.start = 20; + request.count = 100; + request.onComplete = dumpFifthFetch; + store.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + store.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.assertEqual(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + store.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + store.fetch(request); + } + + function completed(items, request){ + t.assertEqual(20, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + store.fetch(request); + } + + function error(errData, request){ + d.errback(errData); + } + + store.fetch({onComplete: completed, onError: error}); + return d; //Object + } + }, + { + name: 'testReadAPI_fetch_paging_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn + // description: + // Simple test of fetching one xml items through an XML element called isbn + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + + function dumpFifthFetch(items, request){ + t.assertEqual(10, items.length); + d.callback(true); + } + + function dumpFourthFetch(items, request){ + t.assertEqual(18, items.length); + request.start = 10; + request.count = 100; + request.onComplete = dumpFifthFetch; + store.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + store.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.assertEqual(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + store.fetch(request); + } + + function dumpFirstFetch(items, request){ + t.assertEqual(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + store.fetch(request); + } + + function completed(items, request){ + t.assertEqual(20, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + store.fetch(request); + } + + function error(errData, request){ + d.errback(errData); + } + + store.fetch({onComplete: completed, onError: error}); + return d; //Object + } + }, + { + name: 'testReadAPI_getLabel', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + // This test will be the same for all three types, so not bothering. + + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 20); + var label = store.getLabel(items[0]); + t.assertTrue(label === undefined); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; + } + }, + { + name: 'testReadAPI_getLabelAttributes', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // This test will be the same for all three types, so not bothering. + + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 20); + var labelList = store.getLabelAttributes(items[0]); + t.assertTrue(!dojo.isArray(labelList)); + t.assertTrue(labelList === null); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; + } + }, + { + name: 'testReadAPI_getValue_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getValue API + // description: + // Simple test of the getValue API + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertEqual(item.node.nodeName, 'entry'); + var id = item.node.getElementsByTagName('id'); + t.assertEqual(id.length, 1); + t.assertEqual(dojox.xml.parser.textContent(id[0]), 'http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/'); + t.assertTrue(store.hasAttribute(item, 'content')); + t.assertEqual(store.getValue(item, 'content').length, 6624); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getValue_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getValue API + // description: + // Simple test of the getValue API + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertEqual(item.node.nodeName, 'item'); + var link = item.node.getElementsByTagName('link'); + t.assertEqual(link.length, 3); + t.assertEqual(dojox.xml.parser.textContent(link[0]), 'http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/'); + t.assertTrue(store.hasAttribute(item, 'content')); + t.assertEqual(store.getValue(item, 'content').length, 315); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getValue_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getValue API + // description: + // Simple test of the getValue API + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertEqual(item.node.nodeName, 'TR'); + var td = item.node.getElementsByTagName('td'); + t.assertEqual(td.length, 3); + t.assertEqual(dojox.xml.parser.textContent(td[0]), '1'); + t.assertEqual(dojox.xml.parser.textContent(td[1]), 'Title of 1'); + t.assertEqual(dojox.xml.parser.textContent(td[2]), 'Author of 1'); + t.assertTrue(store.hasAttribute(item, 'content')); + t.assertEqual(store.getValue(item, 'content').length, dojo.isIE?53:64); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getValues_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getValues API + // description: + // Simple test of the getValues API + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertEqual(item.node.nodeName, 'entry'); + t.assertTrue(store.hasAttribute(item, 'content')); + var values = store.getValues(item,'content'); + t.assertEqual(1,values.length); + t.assertEqual(store.getValue(item, 'content').length, 6624); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getValues_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getValues API + // description: + // Simple test of the getValues API + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertEqual(item.node.nodeName, 'item'); + t.assertTrue(store.hasAttribute(item, 'content')); + var values = store.getValues(item,'content'); + t.assertEqual(1,values.length); + t.assertEqual(store.getValue(item, 'content').length, 315); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getValues_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getValues API + // description: + // Simple test of the getValues API + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertEqual(item.node.nodeName, 'TR'); + t.assertTrue(store.hasAttribute(item, 'content')); + var values = store.getValues(item,'content'); + t.assertEqual(1,values.length); + t.assertEqual(store.getValue(item, 'content').length, dojo.isIE?53:64); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_isItem_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the isItem API + // description: + // Simple test of the isItem API + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.isItem(item)); + t.assertTrue(!store.isItem({})); + t.assertTrue(!store.isItem("Foo")); + t.assertTrue(!store.isItem(1)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_isItem_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the isItem API + // description: + // Simple test of the isItem API + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.isItem(item)); + t.assertTrue(!store.isItem({})); + t.assertTrue(!store.isItem("Foo")); + t.assertTrue(!store.isItem(1)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_isItem_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the isItem API + // description: + // Simple test of the isItem API + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.isItem(item)); + t.assertTrue(!store.isItem({})); + t.assertTrue(!store.isItem("Foo")); + t.assertTrue(!store.isItem(1)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_isItem_multistore', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the isItem API across multiple store instances. + // description: + // Simple test of the isItem API across multiple store instances. + var store1 = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + var store2 = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onError(error, request) { + d.errback(error); + } + function onComplete1(items, request) { + t.assertEqual(20, items.length); + var item1 = items[0]; + t.assertTrue(store1.isItem(item1)); + + function onComplete2(items, request) { + t.assertEqual(20, items.length); + var item2 = items[0]; + t.assertTrue(store2.isItem(item2)); + t.assertTrue(!store1.isItem(item2)); + t.assertTrue(!store2.isItem(item1)); + d.callback(true); + } + store2.fetch({onComplete: onComplete2, onError: onError}); + } + store1.fetch({onComplete: onComplete1, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_hasAttribute_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the hasAttribute API + // description: + // Simple test of the hasAttribute API + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"content")); + t.assertTrue(!store.hasAttribute(item,"summary")); + t.assertTrue(!store.hasAttribute(item,"bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_hasAttribute_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the hasAttribute API + // description: + // Simple test of the hasAttribute API + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"content")); + t.assertTrue(!store.hasAttribute(item,"summary")); + t.assertTrue(!store.hasAttribute(item,"bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_hasAttribute_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the hasAttribute API + // description: + // Simple test of the hasAttribute API + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"content")); + t.assertTrue(!store.hasAttribute(item,"summary")); + t.assertTrue(!store.hasAttribute(item,"bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_containsValue_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the containsValue API + // description: + // Simple test of the containsValue API + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[19]; + t.assertTrue(store.containsValue(item,"content", '

                            Bill Higgins of IBM has written a very well thought out article of why web applications should look and act like web applications, and not the desktop variety. Well worth a read - http://billhiggins.us/weblog/2007/05/17/the-uncanny-valley-of-user-interface-design

                            \n\n
                            ')); + t.assertTrue(!store.containsValue(item,"content", "bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_containsValue_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the containsValue API + // description: + // Simple test of the containsValue API + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[19]; + t.assertTrue(store.containsValue(item,"content", 'Bill Higgins of IBM has written a very well thought out article of why web applications should look and act like web applications, and not the desktop variety. Well worth a read - http://billhiggins.us/weblog/2007/05/17/the-uncanny-valley-of-user-interface-design\n (...)')); + t.assertTrue(!store.containsValue(item,"content", "bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_containsValue_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the containsValue API + // description: + // Simple test of the containsValue API + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[19]; + var val = store.getValue(item, 'content').replace(/20/g, '19'); + item = items[18]; + // IE Strips the tabs out, so it has a different value. + t.assertTrue(store.containsValue(item,"content", val)); + t.assertTrue(!store.containsValue(item,"content", "bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_sortDescending_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ 'http://shaneosullivan.wordpress.com/2007/07/25/why-is-my-web-page-slow-yslow-for-firebug-can-tell-you/', + 'http://shaneosullivan.wordpress.com/2007/08/23/dojo-event-performance-tip/', + 'http://shaneosullivan.wordpress.com/2007/10/18/upgrading-ubuntu-feisty-fawn-704-to-gutsy-gibbon-710/', + 'http://shaneosullivan.wordpress.com/2007/06/19/is-dojo-being-ignored-by-developers/', + 'http://shaneosullivan.wordpress.com/2007/08/22/dojo-09-released/', + 'http://shaneosullivan.wordpress.com/2007/08/17/dojo-theme-browser-shows-off-dijit-widgets/', + 'http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/', + 'http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/', + 'http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/', + 'http://shaneosullivan.wordpress.com/2007/10/13/introducing-the-new-dojo-image-widgets/', + 'http://shaneosullivan.wordpress.com/2007/09/04/image-gallery-slideshow-and-flickr-data-source-for-dojo-09/', + 'http://shaneosullivan.wordpress.com/2007/09/22/querying-flickr-with-dojo/', + 'http://shaneosullivan.wordpress.com/2007/06/15/dojo-charting-example-to-show-website-statistics-2/', + 'http://shaneosullivan.wordpress.com/2007/10/04/a-tortoisesvn-replacement-for-ubuntu/', + 'http://shaneosullivan.wordpress.com/2007/07/03/flickr-and-dojo-image-gallery/', + 'http://shaneosullivan.wordpress.com/2007/05/22/greasemonkey-script-to-add-digg-like-links-to-posts/', + 'http://shaneosullivan.wordpress.com/2007/09/13/specifying-the-callback-function-with-the-flickr-json-apis/', + 'http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/', + 'http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/', + 'http://shaneosullivan.wordpress.com/2007/05/22/article-on-the-square-pegs-and-round-holes-of-desktop-and-web-applications/']; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + + for(var i = 0; i < items.length; i++){ + var id = items[i].node.getElementsByTagName('id'); + t.assertEqual(id.length, 1); + //console.debug(dojox.xml.parser.textContent(id[0])); + t.assertEqual(order[i], dojox.xml.parser.textContent(id[0])); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: 'content', descending: true}]; + store.fetch({sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_sortDescending_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ 'http://shaneosullivan.wordpress.com/2007/07/25/why-is-my-web-page-slow-yslow-for-firebug-can-tell-you/', + 'http://shaneosullivan.wordpress.com/2007/08/23/dojo-event-performance-tip/', + 'http://shaneosullivan.wordpress.com/2007/10/18/upgrading-ubuntu-feisty-fawn-704-to-gutsy-gibbon-710/', + 'http://shaneosullivan.wordpress.com/2007/06/19/is-dojo-being-ignored-by-developers/', + 'http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/', + 'http://shaneosullivan.wordpress.com/2007/08/22/dojo-09-released/', + 'http://shaneosullivan.wordpress.com/2007/08/17/dojo-theme-browser-shows-off-dijit-widgets/', + 'http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/', + 'http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/', + 'http://shaneosullivan.wordpress.com/2007/10/13/introducing-the-new-dojo-image-widgets/', + 'http://shaneosullivan.wordpress.com/2007/09/04/image-gallery-slideshow-and-flickr-data-source-for-dojo-09/', + 'http://shaneosullivan.wordpress.com/2007/09/22/querying-flickr-with-dojo/', + 'http://shaneosullivan.wordpress.com/2007/06/15/dojo-charting-example-to-show-website-statistics-2/', + 'http://shaneosullivan.wordpress.com/2007/10/04/a-tortoisesvn-replacement-for-ubuntu/', + 'http://shaneosullivan.wordpress.com/2007/07/03/flickr-and-dojo-image-gallery/', + 'http://shaneosullivan.wordpress.com/2007/05/22/greasemonkey-script-to-add-digg-like-links-to-posts/', + 'http://shaneosullivan.wordpress.com/2007/09/13/specifying-the-callback-function-with-the-flickr-json-apis/', + 'http://shaneosullivan.wordpress.com/2007/05/22/article-on-the-square-pegs-and-round-holes-of-desktop-and-web-applications/', + 'http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/', + 'http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/']; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + + for(var i = 0; i < items.length; i++){ + var link = items[i].node.getElementsByTagName('link'); + t.assertEqual(link.length, 3); + //console.debug(dojox.xml.parser.textContent(link[0])); + t.assertEqual(order[i], dojox.xml.parser.textContent(link[0])); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: 'content', descending: true}]; + store.fetch({sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_sortDescending_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ 'Author of 9', + 'Author of 8', + 'Author of 7', + 'Author of 6', + 'Author of 5', + 'Author of 4', + 'Author of 3', + 'Author of 2', + 'Author of 20', + 'Author of 1', + 'Author of 19', + 'Author of 18', + 'Author of 17', + 'Author of 16', + 'Author of 15', + 'Author of 14', + 'Author of 13', + 'Author of 12', + 'Author of 11', + 'Author of 10']; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + + for(var i = 0; i < items.length; i++){ + var td = items[i].node.getElementsByTagName('TD'); + t.assertEqual(td.length, 3); + t.assertEqual(order[i], dojox.xml.parser.textContent(td[2])); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: 'content', descending: true}]; + store.fetch({sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_sortAscending_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ 'http://shaneosullivan.wordpress.com/2007/05/22/article-on-the-square-pegs-and-round-holes-of-desktop-and-web-applications/', + 'http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/', + 'http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/', + 'http://shaneosullivan.wordpress.com/2007/09/13/specifying-the-callback-function-with-the-flickr-json-apis/', + 'http://shaneosullivan.wordpress.com/2007/05/22/greasemonkey-script-to-add-digg-like-links-to-posts/', + 'http://shaneosullivan.wordpress.com/2007/07/03/flickr-and-dojo-image-gallery/', + 'http://shaneosullivan.wordpress.com/2007/10/04/a-tortoisesvn-replacement-for-ubuntu/', + 'http://shaneosullivan.wordpress.com/2007/06/15/dojo-charting-example-to-show-website-statistics-2/', + 'http://shaneosullivan.wordpress.com/2007/09/22/querying-flickr-with-dojo/', + 'http://shaneosullivan.wordpress.com/2007/09/04/image-gallery-slideshow-and-flickr-data-source-for-dojo-09/', + 'http://shaneosullivan.wordpress.com/2007/10/13/introducing-the-new-dojo-image-widgets/', + 'http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/', + 'http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/', + 'http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/', + 'http://shaneosullivan.wordpress.com/2007/08/17/dojo-theme-browser-shows-off-dijit-widgets/', + 'http://shaneosullivan.wordpress.com/2007/08/22/dojo-09-released/', + 'http://shaneosullivan.wordpress.com/2007/06/19/is-dojo-being-ignored-by-developers/', + 'http://shaneosullivan.wordpress.com/2007/10/18/upgrading-ubuntu-feisty-fawn-704-to-gutsy-gibbon-710/', + 'http://shaneosullivan.wordpress.com/2007/08/23/dojo-event-performance-tip/', + 'http://shaneosullivan.wordpress.com/2007/07/25/why-is-my-web-page-slow-yslow-for-firebug-can-tell-you/']; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + + for(var i = 0; i < items.length; i++){ + var id = items[i].node.getElementsByTagName('id'); + t.assertEqual(id.length, 1); + t.assertEqual(order[i], dojox.xml.parser.textContent(id[0])); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: 'content'}]; + store.fetch({sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_sortAscending_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ 'http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/', + 'http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/', + 'http://shaneosullivan.wordpress.com/2007/05/22/article-on-the-square-pegs-and-round-holes-of-desktop-and-web-applications/', + 'http://shaneosullivan.wordpress.com/2007/09/13/specifying-the-callback-function-with-the-flickr-json-apis/', + 'http://shaneosullivan.wordpress.com/2007/05/22/greasemonkey-script-to-add-digg-like-links-to-posts/', + 'http://shaneosullivan.wordpress.com/2007/07/03/flickr-and-dojo-image-gallery/', + 'http://shaneosullivan.wordpress.com/2007/10/04/a-tortoisesvn-replacement-for-ubuntu/', + 'http://shaneosullivan.wordpress.com/2007/06/15/dojo-charting-example-to-show-website-statistics-2/', + 'http://shaneosullivan.wordpress.com/2007/09/22/querying-flickr-with-dojo/', + 'http://shaneosullivan.wordpress.com/2007/09/04/image-gallery-slideshow-and-flickr-data-source-for-dojo-09/', + 'http://shaneosullivan.wordpress.com/2007/10/13/introducing-the-new-dojo-image-widgets/', + 'http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/', + 'http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/', + 'http://shaneosullivan.wordpress.com/2007/08/17/dojo-theme-browser-shows-off-dijit-widgets/', + 'http://shaneosullivan.wordpress.com/2007/08/22/dojo-09-released/', + 'http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/', + 'http://shaneosullivan.wordpress.com/2007/06/19/is-dojo-being-ignored-by-developers/', + 'http://shaneosullivan.wordpress.com/2007/10/18/upgrading-ubuntu-feisty-fawn-704-to-gutsy-gibbon-710/', + 'http://shaneosullivan.wordpress.com/2007/08/23/dojo-event-performance-tip/', + 'http://shaneosullivan.wordpress.com/2007/07/25/why-is-my-web-page-slow-yslow-for-firebug-can-tell-you/']; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + + for(var i = 0; i < items.length; i++){ + var link = items[i].node.getElementsByTagName('link'); + t.assertEqual(link.length, 3); + t.assertEqual(order[i], dojox.xml.parser.textContent(link[0])); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: 'content'}]; + store.fetch({sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_sortAscending_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [ 'Author of 10', + 'Author of 11', + 'Author of 12', + 'Author of 13', + 'Author of 14', + 'Author of 15', + 'Author of 16', + 'Author of 17', + 'Author of 18', + 'Author of 19', + 'Author of 1', + 'Author of 20', + 'Author of 2', + 'Author of 3', + 'Author of 4', + 'Author of 5', + 'Author of 6', + 'Author of 7', + 'Author of 8', + 'Author of 9']; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + + for(var i = 0; i < items.length; i++){ + var td = items[i].node.getElementsByTagName('TD'); + t.assertEqual(td.length, 3); + t.assertEqual(order[i], dojox.xml.parser.textContent(td[2])); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: 'content'}]; + store.fetch({sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_isItemLoaded_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_isItemLoaded_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_isItemLoaded_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getFeatures', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + var features = store.getFeatures(); + t.assertTrue(dojo.isObject(features)); + t.assertTrue(features["dojo.data.api.Read"]); + t.assertFalse(features["dojo.data.api.Identity"]); + t.assertFalse(features["dojo.data.api.Write"]); + t.assertFalse(features["dojo.data.api.Notification"]); + } + }, + { + name: 'testReadAPI_getAttributes_atom', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + t.assertTrue(dojo.isArray(attributes)); + t.assertEqual(1,attributes.length); + t.assertTrue(attributes[0] === 'content'); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getAttributes_rss', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.OpenSearchStore.getRSSStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + t.assertTrue(dojo.isArray(attributes)); + t.assertEqual(1,attributes.length); + t.assertTrue(attributes[0] === 'content'); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_getAttributes_html', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.OpenSearchStore.getHTMLStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + t.assertTrue(dojo.isArray(attributes)); + t.assertEqual(1,attributes.length); + t.assertTrue(attributes[0] === 'content'); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({onComplete: onComplete, onError: onError}); + return d; //Object + } + }, + { + name: 'testReadAPI_functionConformance', + timeout: 20000, + runTest: function(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var store = dojox.data.tests.stores.OpenSearchStore.getAtomStore(); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = store[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]"); + passed = false; + break; + } + } + } + t.assertTrue(passed); + } + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/OpmlStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/OpmlStore.js new file mode 100644 index 0000000..4630938 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/OpmlStore.js @@ -0,0 +1,1072 @@ +dojo.provide("dojox.data.tests.stores.OpmlStore"); +dojo.require("dojox.data.OpmlStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); + +dojox.data.tests.stores.OpmlStore.getDatasource = function(filepath){ + // summary: + // A simple helper function for getting the sample data used in each of the tests. + // description: + // A simple helper function for getting the sample data used in each of the tests. + + var dataSource = {}; + if(dojo.isBrowser){ + dataSource.url = require.toUrl("dojox/data/tests/" + filepath).toString(); + }else{ + // When running tests in Rhino, xhrGet is not available, + // so we have the file data in the code below. + switch(filepath){ + case "stores/geography.xml": + var opmlData = ""; + opmlData += '\n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' geography.opml\n'; + opmlData += ' 2006-11-10\n'; + opmlData += ' 2006-11-13\n'; + opmlData += ' Magellan, Ferdinand\n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + break; + case "stores/geography_withspeciallabel.xml": + var opmlData = ""; + opmlData += '\n'; + opmlData += '\n'; + opmlData += ' \n'; + opmlData += ' geography.opml\n'; + opmlData += ' 2006-11-10\n'; + opmlData += ' 2006-11-13\n'; + opmlData += ' Magellan, Ferdinand\n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += ' \n'; + opmlData += '\n'; + break; + } + dataSource.data = opmlData; + } + return dataSource; //Object +} + +dojox.data.tests.stores.OpmlStore.verifyItems = function(opmlStore, items, attribute, compareArray){ + // summary: + // A helper function for validating that the items array is ordered + // the same as the compareArray + if(items.length != compareArray.length){ return false; } + for(var i = 0; i < items.length; i++){ + if(!(opmlStore.getValue(items[i], attribute) === compareArray[i])){ + return false; //Boolean + } + } + return true; //Boolean +} + +dojox.data.tests.stores.OpmlStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + d.errback(errData); +} + +doh.register("dojox.data.tests.stores.OpmlStore", + [ + function testReadAPI_fetch_all(t){ + // summary: + // Simple test of a basic fetch on OpmlStore. + // description: + // Simple test of a basic fetch on OpmlStore. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.is(6, items.length); + d.callback(true); + } + + //Get everything... + opmlStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_fetch_one(t){ + // summary: + // Simple test of a basic fetch on OpmlStore of a single item. + // description: + // Simple test of a basic fetch on OpmlStore of a single item. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + opmlStore.fetch({ query: {text: "Asia"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; //Object + }, + + function testReadAPI_fetch_one_Multiple(t){ + // summary: + // Simple test of a basic fetch on OpmlStore of a single item. + // description: + // Simple test of a basic fetch on OpmlStore of a single item. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + var done = [false,false]; + function onCompleteOne(items, request){ + done[0] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + function onCompleteTwo(items, request){ + done[1] = true; + t.is(1, items.length); + if(done[0] && done[1]){ + d.callback(true); + } + } + + opmlStore.fetch({ query: {text: "Asia"}, + onComplete: onCompleteOne, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + + opmlStore.fetch({ query: {text: "North America"}, + onComplete: onCompleteTwo, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + + return d; //Object + }, + + function testReadAPI_fetch_one_MultipleMixed(t){ + // summary: + // Simple test of a basic fetch on OpmlStore of a single item mixing two fetch types. + // description: + // Simple test of a basic fetch on Cpmltore of a single item mixing two fetch types. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + + var done = [false, false]; + function onComplete(items, request){ + done[0] = true; + t.is(1, items.length); + console.log("Found item: " + opmlStore.getValue(items[0],"text") + " with identity: " + opmlStore.getIdentity(items[0])); + t.is(0, opmlStore.getIdentity(items[0])); + if(done[0] && done[1]){ + d.callback(true); + } + } + + function onItem(item){ + done[1] = true; + t.assertTrue(item !== null); + console.log("Found item: " + opmlStore.getValue(item,"text")); + t.is('Egypt', opmlStore.getValue(item,"text")); //Should be the second node parsed, ergo id 1, first node is id 0. + t.is(1, opmlStore.getIdentity(item)); + if(done[0] && done[1]){ + d.callback(true); + } + } + + opmlStore.fetch({ query: {text: "Africa"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + + opmlStore.fetchItemByIdentity({identity: "1", onItem: onItem, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)}); + + return d; //Object + }, + + function testReadAPI_fetch_one_deep(t){ + // summary: + // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item. + // description: + // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.is(1, items.length); + d.callback(true); + } + opmlStore.fetch({ query: {text: "Mexico City"}, + queryOptions: {deep:true}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; //Object + }, + + function testReadAPI_fetch_one_deep_off(t){ + // summary: + // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item. + // description: + // Simple test of a basic fetch on OpmlStore of a single item that's nested down as a child item. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + //Nothing should be found. + t.is(0, items.length); + d.callback(true); + } + opmlStore.fetch({ query: {text: "Mexico City"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; //Object + }, + + function testReadAPI_fetch_all_streaming(t){ + // summary: + // Simple test of a basic fetch on OpmlStore. + // description: + // Simple test of a basic fetch on OpmlStore. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + count = 0; + + function onBegin(size, requestObj){ + t.is(6, size); + } + function onItem(item, requestObj){ + t.assertTrue(opmlStore.isItem(item)); + count++; + } + function onComplete(items, request){ + t.is(6, count); + t.is(null, items); + d.callback(true); + } + + //Get everything... + opmlStore.fetch({ onBegin: onBegin, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; //Object + }, + function testReadAPI_fetch_paging(t){ + // summary: + // Test of multiple fetches on a single result. Paging, if you will. + // description: + // Test of multiple fetches on a single result. Paging, if you will. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function dumpFirstFetch(items, request){ + t.is(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + opmlStore.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.is(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + opmlStore.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.is(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + opmlStore.fetch(request); + } + + function dumpFourthFetch(items, request){ + t.is(4, items.length); + request.start = 9; + request.count = 100; + request.onComplete = dumpFifthFetch; + opmlStore.fetch(request); + } + + function dumpFifthFetch(items, request){ + t.is(0, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpSixthFetch; + opmlStore.fetch(request); + } + + function dumpSixthFetch(items, request){ + t.is(4, items.length); + d.callback(true); + } + + function completed(items, request){ + t.is(6, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + opmlStore.fetch(request); + } + + opmlStore.fetch({onComplete: completed, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)}); + return d; //Object + + }, + function testReadAPI_getLabel(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = opmlStore.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual("Asia", label); + d.callback(true); + } + opmlStore.fetch({ query: {text: "Asia"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; + }, + function testReadAPI_getLabelAttributes(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = opmlStore.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual("text", labelList[0]); + d.callback(true); + } + opmlStore.fetch({ query: {text: "Asia"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; + }, + + function testReadAPI_getLabel_nondefault(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography_withspeciallabel.xml"); + args.label="label"; + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = opmlStore.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual("Continent/Asia", label); + d.callback(true); + } + opmlStore.fetch({ query: {text: "Asia"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; + }, + function testReadAPI_getLabelAttributes_nondefault(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography_withspeciallabel.xml"); + args.label="label"; + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = opmlStore.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual("label", labelList[0]); + d.callback(true); + } + opmlStore.fetch({ query: {text: "Asia"}, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d) + }); + return d; + }, + + function testReadAPI_getValue(t){ + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function completedAll(items){ + t.is(6, items.length); + + t.is("Africa", opmlStore.getValue(items[0],"text")); + t.is("Asia", opmlStore.getValue(items[1],"text")); + t.is("Australia", opmlStore.getValue(items[2],"text")); + t.is("Europe", opmlStore.getValue(items[3],"text")); + t.is("North America", opmlStore.getValue(items[4],"text")); + t.is("South America", opmlStore.getValue(items[5],"text")); + + t.is("continent", opmlStore.getValue(items[1],"type")); + t.is("21 million", opmlStore.getValue(items[2],"population")); + + var firstChild = opmlStore.getValue(items[4],"children"); + t.assertTrue(opmlStore.isItem(firstChild)); + t.is("Mexico", opmlStore.getValue(firstChild,"text")); + t.is("country", opmlStore.getValue(firstChild,"type")); + t.is("108 million", opmlStore.getValue(firstChild,"population")); + t.is("1,972,550 sq km", opmlStore.getValue(firstChild,"area")); + + firstChild = opmlStore.getValue(firstChild,"children"); + t.assertTrue(opmlStore.isItem(firstChild)); + t.is("Mexico City", opmlStore.getValue(firstChild,"text")); + t.is("city", opmlStore.getValue(firstChild,"type")); + t.is("19 million", opmlStore.getValue(firstChild,"population")); + t.is("-6 UTC", opmlStore.getValue(firstChild,"timezone")); + + d.callback(true); + } + + //Get everything... + opmlStore.fetch({ onComplete: completedAll, onError: dojo.partial(dojox.data.tests.stores.OpmlStore.error, t, d)}); + return d; //Object + }, + function testReadAPI_getValues(t){ + // summary: + // Simple test of the getValues function of the store. + // description: + // Simple test of the getValues function of the store. + + var args = dojox.data.tests.stores.OpmlStore.getDatasource("stores/geography.xml"); + var opmlStore = new dojox.data.OpmlStore(args); + + var d = new doh.Deferred(); + function completed(items){ + t.is(1, items.length); + + var children = opmlStore.getValues(items[0],"children"); + t.is(3, children.length); + for(var i=0; iAlabama", store.getValue(item, "label")); + t.assertEqual("AL", store.getValue(item, "abbreviation")); + // Test the defaultValue cases (the third paramter). + t.assertEqual("default value", store.getValue(item, "NAME", "default value")); + // TODO Test for null somehow ... + // Read api says: Returns null if and only if null was explicitly set as the attribute value. + + // According to Read-API getValue() an exception is thrown when + // the item is not an item or when the attribute is not a string. + t.assertError(Error, store, "getValue", ["not an item", "NOT THERE"]); + t.assertError(Error, store, "getValue", [item, {}]); + + d.callback(true); + } + store.fetch({query:{q:"Alabama"}, onComplete: onComplete}); + return d; //Object + }, + + function testReadApi_getValues(t){ + // summary: + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + var item = items[0]; + // The good cases. + t.assertEqual(["Alabama"], store.getValues(item, "name")); + t.assertEqual(["Alabama"], store.getValues(item, "label")); + t.assertEqual(["AL"], store.getValues(item, "abbreviation")); + // TODO Test for null somehow ... + // Read api says: Returns null if and only if null was explicitly set as the attribute value. + + // Test for not-existing attributes without defaultValues and invalid items. + // TODO + t.assertEqual([], store.getValues(item, "NOT THERE")); + var errThrown = false; + try{ + //Should throw an exception. + var values = store.getValues("not an item", "NOT THERE"); + }catch (e){ + errThrown = true; + } + t.assertTrue(errThrown); + d.callback(true); + } + store.fetch({query:{q:"Alabama"}, onComplete: onComplete}); + return d; //Object + }, + + function testReadApi_getAttributes(t){ + // summary: + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + var item = items[0]; + // The good case(s). + t.assertEqual(['id', 'name', 'label', 'abbreviation', 'capital'], store.getAttributes(item)); + t.assertError(Error, store, "getAttributes", [{}]); + + d.callback(true); + } + store.fetch({query:{q:"Alabama"}, onComplete: onComplete}); + return d; //Object + }, + + function testReadApi_getLabel(t){ + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + var d = new doh.Deferred(); + function onComplete(items, request){ + var item = items[0]; + // The good cases. + t.assertEqual(["Alabama"], store.getLabel(item)); + d.callback(true); + } + store.fetch({query:{q:"Alabama"}, onComplete: onComplete}); + return d; //Object + }, + + function testReadApi_hasAttribute(t){ + // summary: + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + var item = items[0]; + // The positive cases. + t.assertEqual(true, store.hasAttribute(item, "name")); + t.assertEqual(true, store.hasAttribute(item, "label")); + t.assertEqual(true, store.hasAttribute(item, "abbreviation")); + // Make sure attribute case doesnt matter. + t.assertEqual(false, store.hasAttribute(item, "NAME")); + t.assertEqual(false, store.hasAttribute(item, "Name")); + t.assertEqual(false, store.hasAttribute(item, "Label")); + // Pass in an invalid item. + t.assertEqual(false, store.hasAttribute({}, "abbreviation")); + // pass in something that looks like the item with the attribute. + t.assertEqual(false, store.hasAttribute({name:"yo"}, "name")); + + d.callback(true); + } + store.fetch({query:{q:"Alaska"}, onComplete: onComplete}); + return d; //Object + }, + + function testReadApi_containsValue(t){ + // summary: + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + var item = items[0]; + t.assertTrue(store.containsValue(item, "name", "Alaska")); + d.callback(true); + } + store.fetch({query:{q:"Alaska"}, onComplete: onComplete}); + return d; //Object + }, + + function testReadApi_isItem(t){ + // summary: + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + // The good case. + t.assertEqual(true, store.isItem(items[0])); + // Try a pure object. + t.assertEqual(false, store.isItem({})); + // Try to look like an item. + t.assertEqual(false, store.isItem({name:"Alaska", label:"Alaska", abbreviation:"AK"})); + d.callback(true); + } + store.fetch({query:{q:"Alaska"}, onComplete: onComplete}); + return d; //Object + }, + + function testReadApi_isItemLoaded(t){ + // summary: + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + var item = items[0]; + // The good case(s). + t.assertTrue(store.isItemLoaded(item)); + + d.callback(true); + } + store.fetch({query:{q:"Alabama"}, onComplete: onComplete}); + return d; //Object + }, + + //function testReadApi_loadItem(t){ + // // summary: + // // description: + // t.assertTrue(false); + //}, + + function testReadApi_fetch_all(t){ + // summary: + // Simple test of fetching all items. + // description: + // Simple test of fetching all items. + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(12, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{q:"m"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadApi_fetch_onBegin(t){ + // summary: + // Simple test of fetching items, checking that onBegin size is all items matched, and page is just the items asked for. + // description: + // Simple test of fetching items, checking that onBegin size is all items matched, and page is just the items asked for. + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + var passed = false; + function onBegin(size, request){ + t.assertEqual(12, size); + passed = true; + } + function onComplete(items, request) { + t.assertEqual(5, items.length); + if(passed){ + d.callback(true); + }else{ + d.errback(new Error("Store did not return proper number of rows, regardless of page size")); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{q:"m"}, start: 0, count: 5, onBegin: onBegin, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadApi_fetch_onBegin_ServersidePaging(t){ + // summary: + // Simple test of fetching items, checking that onBegin size is all items matched, and page is just the items asked for. + // description: + // Simple test of fetching items, checking that onBegin size is all items matched, and page is just the items asked for. + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + var passed = false; + function onBegin(size, request){ + t.assertEqual(12, size); + passed = true; + } + function onComplete(items, request) { + t.assertEqual(5, items.length); + if(passed){ + d.callback(true); + }else{ + d.errback(new Error("Store did not return proper number of rows, regardless of page size")); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{q:"m"}, start: 5, count: 5, onBegin: onBegin, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadApi_fetch_onBegin_ClientsidePaging(t){ + // summary: + // Simple test of fetching items, checking that onBegin size is all items matched, and page is just the items asked for. + // description: + // Simple test of fetching items, checking that onBegin size is all items matched, and page is just the items asked for. + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + store.doClientPaging = true; + + var d = new doh.Deferred(); + var passed = false; + function onBegin(size, request){ + t.assertEqual(12, size); + passed = true; + } + function onComplete(items, request) { + t.assertEqual(5, items.length); + if(passed){ + d.callback(true); + }else{ + d.errback(new Error("Store did not return proper number of rows, regardless of page size")); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{q:"m"}, start: 0, count: 5, onBegin: onBegin, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadApi_fetch_one(t){ + // summary: + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{q:"Alaska"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadApi_fetch_client_paging(t){ + // summary: + // Lets test that paging on the same request does not trigger + // server requests. + // description: + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + store.doClientPaging = true; + + var lastRequestHash = null; + var firstItems = []; + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(5, items.length); + lastRequestHash = store.lastRequestHash; + firstItems = items; + + // Do the next request AFTER the previous one, so we are sure its sequential. + // We need to be sure so we can compare to the data from the first request. + function onComplete1(items, request) { + t.assertEqual(5, items.length); + t.assertEqual(lastRequestHash, store.lastRequestHash); + t.assertEqual(firstItems[1], items[0]); + d.callback(true); + } + req.start = 1; + req.onComplete = onComplete1; + store.fetch(req); + } + function onError(error, request) { + d.errback(error); + } + var req = {query:{q:"m"}, start:0, count:5, + onComplete: onComplete, onError: onError}; + store.fetch(req); + return d; //Object + }, + + function testReadApi_fetch_server_paging(t) { + // Verify that the paging on the server side does work. + // This is the test for http://trac.dojotoolkit.org/ticket/4761 + // + // How? We request 10 items from the server, start=0, count=10. + // The second request requests 5 items: start=5, count=5 and those + // 5 items should have the same values as the last 5 of the first + // request. + // This tests if the server side paging does work. + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + + var lastRequestHash = null; + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(10, items.length); + lastRequestHash = store.lastRequestHash; + firstItems = items; + + // Do the next request AFTER the previous one, so we are sure its sequential. + // We need to be sure so we can compare to the data from the first request. + function onComplete1(items, request) { + t.assertEqual(5, items.length); + // Compare the hash of the last request, they must be different, + // since another server request was issued. + t.assertTrue(lastRequestHash!=store.lastRequestHash); + t.assertEqual(store.getValue(firstItems[5], "name"), store.getValue(items[0], "name")); + t.assertEqual(store.getValue(firstItems[6], "name"), store.getValue(items[1], "name")); + t.assertEqual(store.getValue(firstItems[7], "name"), store.getValue(items[2], "name")); + t.assertEqual(store.getValue(firstItems[8], "name"), store.getValue(items[3], "name")); + t.assertEqual(store.getValue(firstItems[9], "name"), store.getValue(items[4], "name")); + d.callback(true); + } + // Init a new store, or it will use the old data, since the query has not changed. + store.doClientPaging = false; + store.fetch({start:5, count:5, onComplete: onComplete1, onError: onError}); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{}, start:0, count:10, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadApi_getFeatures(t) { + var store = dojox.data.tests.stores.QueryReadStore.getStore(); + var features = store.getFeatures(); + t.assertTrue(features["dojo.data.api.Read"]); + t.assertTrue(features["dojo.data.api.Identity"]); + var count = 0; + for (i in features){ + count++; + } + t.assertEqual(2, count); + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = dojox.data.tests.stores.QueryReadStore.getStore(); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(i in readApi){ + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]"); + passed = false; + break; + } + } + } + t.assertTrue(passed); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/QueryReadStore.php b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/QueryReadStore.php new file mode 100644 index 0000000..956ecaa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/QueryReadStore.php @@ -0,0 +1,139 @@ +0, 'name'=>"Alabama", 'label'=>"Alabama", 'abbreviation'=>"AL", 'capital'=>'Montgomery'), + array('id'=>1, 'name'=>"Alaska", 'label'=>"Alaska", 'abbreviation'=>"AK", 'capital'=>'Juneau'), + array('id'=>2, 'name'=>"American Samoa", 'label'=>"American Samoa", 'abbreviation'=>"AS", 'capital'=>'Pago Pago'), + array('id'=>3, 'name'=>"Arizona", 'label'=>"Arizona", 'abbreviation'=>"AZ", 'capital'=>'Phoenix'), + array('id'=>4, 'name'=>"Arkansas", 'label'=>"Arkansas", 'abbreviation'=>"AR", 'capital'=>'Little Rock'), + array('id'=>5, 'name'=>"Armed Forces Europe", 'label'=>"Armed Forces Europe", 'abbreviation'=>"AE", 'capital'=>'??? (Europe)'), + array('id'=>6, 'name'=>"Armed Forces Pacific", 'label'=>"Armed Forces Pacific", 'abbreviation'=>"AP", 'capital'=>'??? (Pacific)'), + array('id'=>7, 'name'=>"Armed Forces the Americas", 'label'=>"Armed Forces the Americas", 'abbreviation'=>"AA", 'capital'=>'??? (America)'), + array('id'=>8, 'name'=>"California", 'label'=>"California", 'abbreviation'=>"CA", 'capital'=>'Sacramento'), + array('id'=>9, 'name'=>"Colorado", 'label'=>"Colorado", 'abbreviation'=>"CO", 'capital'=>'Denver'), + array('id'=>10, 'name'=>"Connecticut", 'label'=>"Connecticut", 'abbreviation'=>"CT", 'capital'=>'Hartford'), + array('id'=>11, 'name'=>"Delaware", 'label'=>"Delaware", 'abbreviation'=>"DE", 'capital'=>'Dover'), + array('id'=>12, 'name'=>"District of Columbia", 'label'=>"District of Columbia", 'abbreviation'=>"DC", 'capital'=>'Washington'), + array('id'=>13, 'name'=>"Federated States of Micronesia", 'label'=>"Federated States of Micronesia", 'abbreviation'=>"FM", 'capital'=>'Palikir'), + array('id'=>14, 'name'=>"Florida", 'label'=>"Florida", 'abbreviation'=>"FL", 'capital'=>'Tallahassee'), + array('id'=>15, 'name'=>"Georgia", 'label'=>"Georgia", 'abbreviation'=>"GA", 'capital'=>'Atlanta'), + array('id'=>16, 'name'=>"Guam", 'label'=>"Guam", 'abbreviation'=>"GU", 'capital'=>'Hagatna'), + array('id'=>17, 'name'=>"Hawaii", 'label'=>"Hawaii", 'abbreviation'=>"HI", 'capital'=>'Honolulu'), + array('id'=>18, 'name'=>"Idaho", 'label'=>"Idaho", 'abbreviation'=>"ID", 'capital'=>'Boise'), + array('id'=>19, 'name'=>"Illinois", 'label'=>"Illinois", 'abbreviation'=>"IL", 'capital'=>'Springfield'), + array('id'=>20, 'name'=>"Indiana", 'label'=>"Indiana", 'abbreviation'=>"IN", 'capital'=>'Indianapolis'), + array('id'=>21, 'name'=>"Iowa", 'label'=>"Iowa", 'abbreviation'=>"IA", 'capital'=>'Des Moines'), + array('id'=>22, 'name'=>"Kansas", 'label'=>"Kansas", 'abbreviation'=>"KS", 'capital'=>'Topeka'), + array('id'=>23, 'name'=>"Kentucky", 'label'=>"Kentucky", 'abbreviation'=>"KY", 'capital'=>'Frankfort'), + array('id'=>24, 'name'=>"Louisiana", 'label'=>"Louisiana", 'abbreviation'=>"LA", 'capital'=>'Baton Rouge'), + array('id'=>25, 'name'=>"Maine", 'label'=>"Maine", 'abbreviation'=>"ME", 'capital'=>'Augusta'), + array('id'=>26, 'name'=>"Marshall Islands", 'label'=>"Marshall Islands", 'abbreviation'=>"MH", 'capital'=>'Answer Majuro'), + array('id'=>27, 'name'=>"Maryland", 'label'=>"Maryland", 'abbreviation'=>"MD", 'capital'=>'Annapolis'), + array('id'=>28, 'name'=>"Massachusetts", 'label'=>"Massachusetts", 'abbreviation'=>"MA", 'capital'=>'Boston'), + array('id'=>29, 'name'=>"Michigan", 'label'=>"Michigan", 'abbreviation'=>"MI", 'capital'=>'Lansing'), + array('id'=>30, 'name'=>"Minnesota", 'label'=>"Minnesota", 'abbreviation'=>"MN", 'capital'=>'Saint Paul'), + array('id'=>31, 'name'=>"Mississippi", 'label'=>"Mississippi", 'abbreviation'=>"MS", 'capital'=>'Jackson'), + array('id'=>32, 'name'=>"Missouri", 'label'=>"Missouri", 'abbreviation'=>"MO", 'capital'=>'Jefferson City'), + array('id'=>33, 'name'=>"Montana", 'label'=>"Montana", 'abbreviation'=>"MT", 'capital'=>'Helena'), + array('id'=>34, 'name'=>"Nebraska", 'label'=>"Nebraska", 'abbreviation'=>"NE", 'capital'=>'Lincoln'), + array('id'=>35, 'name'=>"Nevada", 'label'=>"Nevada", 'abbreviation'=>"NV", 'capital'=>'Carson City'), + array('id'=>36, 'name'=>"New Hampshire", 'label'=>"New Hampshire", 'abbreviation'=>"NH", 'capital'=>'Concord'), + array('id'=>37, 'name'=>"New Jersey", 'label'=>"New Jersey", 'abbreviation'=>"NJ", 'capital'=>'Trenton'), + array('id'=>38, 'name'=>"New Mexico", 'label'=>"New Mexico", 'abbreviation'=>"NM", 'capital'=>'Santa Fe'), + array('id'=>39, 'name'=>"New York", 'label'=>"New York", 'abbreviation'=>"NY", 'capital'=>'Albany'), + array('id'=>40, 'name'=>"North Carolina", 'label'=>"North Carolina", 'abbreviation'=>"NC", 'capital'=>'Raleigh'), + array('id'=>41, 'name'=>"North Dakota", 'label'=>"North Dakota", 'abbreviation'=>"ND", 'capital'=>'Bismarck'), + array('id'=>42, 'name'=>"Northern Mariana Islands", 'label'=>"Northern Mariana Islands", 'abbreviation'=>"MP", 'capital'=>'Saipan'), + array('id'=>43, 'name'=>"Ohio", 'label'=>"Ohio", 'abbreviation'=>"OH", 'capital'=>'Columbus'), + array('id'=>44, 'name'=>"Oklahoma", 'label'=>"Oklahoma", 'abbreviation'=>"OK", 'capital'=>'Oklahoma City'), + array('id'=>45, 'name'=>"Oregon", 'label'=>"Oregon", 'abbreviation'=>"OR", 'capital'=>'Salem'), + array('id'=>46, 'name'=>"Pennsylvania", 'label'=>"Pennsylvania", 'abbreviation'=>"PA", 'capital'=>'Harrisburg'), + array('id'=>47, 'name'=>"Puerto Rico", 'label'=>"Puerto Rico", 'abbreviation'=>"PR", 'capital'=>'San Juan'), + array('id'=>48, 'name'=>"Rhode Island", 'label'=>"Rhode Island", 'abbreviation'=>"RI", 'capital'=>'Providence'), + array('id'=>49, 'name'=>"South Carolina", 'label'=>"South Carolina", 'abbreviation'=>"SC", 'capital'=>'Columbia'), + array('id'=>50, 'name'=>"South Dakota", 'label'=>"South Dakota", 'abbreviation'=>"SD", 'capital'=>'Pierre'), + array('id'=>51, 'name'=>"Tennessee", 'label'=>"Tennessee", 'abbreviation'=>"TN", 'capital'=>'Nashville'), + array('id'=>52, 'name'=>"Texas", 'label'=>"Texas", 'abbreviation'=>"TX", 'capital'=>'Austin'), + array('id'=>53, 'name'=>"Utah", 'label'=>"Utah", 'abbreviation'=>"UT", 'capital'=>'Salt Lake City'), + array('id'=>54, 'name'=>"Vermont", 'label'=>"Vermont", 'abbreviation'=>"VT", 'capital'=>'Montpelier'), + array('id'=>55, 'name'=> "Virgin Islands, U.S.", 'label'=>"Virgin Islands, U.S.", 'abbreviation'=>"VI", 'capital'=>'Charlotte Amalie'), + array('id'=>56, 'name'=>"Virginia", 'label'=>"Virginia", 'abbreviation'=>"VA", 'capital'=>'Richmond'), + array('id'=>57, 'name'=>"Washington", 'label'=>"Washington", 'abbreviation'=>"WA", 'capital'=>'Olympia'), + array('id'=>58, 'name'=>"West Virginia", 'label'=>"West Virginia", 'abbreviation'=>"WV", 'capital'=>'Charleston'), + array('id'=>59, 'name'=>"Wisconsin", 'label'=>"Wisconsin", 'abbreviation'=>"WI", 'capital'=>'Madison'), + array('id'=>60, 'name'=>"Wyoming", 'label'=>"Wyoming", 'abbreviation'=>"WY", 'capital'=>'Cheyenne'), + array('id'=>61, 'name'=>"Special chars !\"$%&/()=? #'+*-_.:,; <", 'label'=>"Special chars !\"$%&/()=? #'+*-_.:,;<", 'abbreviation'=>":-)", 'capital'=>'/dev/null'), +); + +$q = ""; +if (array_key_exists("q", $_REQUEST)) { + $q = $_REQUEST['q']; +}else if (array_key_exists("name", $_REQUEST)) { + $q = $_REQUEST['name']; +} + +if (strlen($q) && $q[strlen($q)-1]=="*") { + $q = substr($q, 0, strlen($q)-1); +} +$ret = array(); +foreach ($allItems as $item) { + $foundPos = -1; + $foundWord = false; + if ($q) { + $foundPos = strpos(strtolower($item['name']), strtolower($q)); + $foundWord = $foundPos===0; + if (!$foundWord) { + $foundPos = strpos(strtolower($item['name']), ' '.strtolower($q)); + if ($foundPos!==false) { + $foundPos += 1; // It was found, so subtract the offset the space occupied. + $foundWord = true; + } + } + } + if (!$q || $foundWord) { + // Put a span around the searched characters to highlight them. + $resultItem = $item; + // Currently we dont need custom highlighting, its implemented in the client too. + //if ($foundWord) { + // $resultItem['highlightedLabel'] = substr($item['name'], 0, $foundPos) . + // '' . + // substr($item['name'], $foundPos, strlen($q)) . '' . + // substr($item['name'], $foundPos+strlen($q)); + //} else { + // $resultItem['highlightedLabel'] = $item['name']; + //} + $ret[] = $resultItem; + } +} + +// Handle sorting +if (array_key_exists("sort", $_REQUEST)) { + $sort = $_REQUEST['sort']; + // Check if $sort starts with "-" then we have a DESC sort. + $desc = strpos($sort, '-')===0 ? true : false; + $sort = strpos($sort, '-')===0 ? substr($sort, 1) : $sort; + if (in_array($sort, array_keys($ret[0]))) { + $toSort = array(); + foreach ($ret as $i) $toSort[$i[$sort]] = $i; + if ($desc) krsort($toSort); else ksort($toSort); + $newRet = array(); + foreach ($toSort as $i) $newRet[] = $i; + $ret = $newRet; + } +} + + +// Handle total number of matches as a return, regardless of page size, but taking the filtering into account (if taken place). +$numRows = count($ret); + +// Handle paging, if given. +if (array_key_exists("start", $_REQUEST)) { + $ret = array_slice($ret, $_REQUEST['start']); +} +if (array_key_exists("count", $_REQUEST)) { + $ret = array_slice($ret, 0, $_REQUEST['count']); +} + +print '/*'.json_encode(array('numRows'=>$numRows, 'items'=>$ret, 'identity'=>'id')).'*/'; diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/ServiceStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/ServiceStore.js new file mode 100644 index 0000000..c1da408 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/ServiceStore.js @@ -0,0 +1,161 @@ +dojo.provide("dojox.data.tests.stores.ServiceStore"); +dojo.require("dojox.rpc.Service"); +dojo.require("dojox.rpc.Rest"); +//dojo.require("dojox.data.ClientFilter"); +dojo.require("dojox.data.ServiceStore"); +dojo.require("dojo.data.api.Read"); +dojox.data.tests.stores.ServiceStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + d.errback(errData); +} +var testServices = new dojox.rpc.Service(require.toUrl("dojox/rpc/tests/resources/test.smd")); +var jsonStore = new dojox.data.ServiceStore({service:testServices.jsonRestStore}); + +doh.register("dojox.data.tests.stores.ServiceStore", + [ + { + name: "Fetch some items", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on ServiceStore of a simple query. + var d = new doh.Deferred(); + jsonStore.fetch({query:"query", + onComplete: function(items, request){ + t.is(4, items.length); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.ServiceStore.error, doh, d) + }); + return d; //Object + } + }, + { + name: "fetchItemByIdentity, getValue, getValues, hasAttribute,containsValue, getAttributes, getIdentity", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on ServiceStore of a single item. + var d = new doh.Deferred(); + jsonStore.fetchItemByIdentity({identity:1, + onItem: function(item, request){ + t.is("Object 1", item.name); + t.is("Object 1",jsonStore.getValue(item,"name")); + t.t(jsonStore.hasAttribute(item,"name")); + t.is(jsonStore.getValues(item,"name").length,1); + t.t(jsonStore.isItem(item)); + t.t(jsonStore.isItemLoaded(item)); + t.t(jsonStore.containsValue(item,"name","Object 1")); + t.f(jsonStore.containsValue(item,"name","Something Else")); + t.is(jsonStore.getIdentity(item),1); + t.t(dojo.indexOf(jsonStore.getAttributes(item),"name")>-1); + t.is("default",jsonStore.getValue(item,"nothing","default")); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.ServiceStore.error, doh, d) + }); + return d; //Object + } + }, + { + name: "createLazyItem", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on ServiceStore of a single item. + var d = new doh.Deferred(); + var lazyItem = { + _loadObject: function(callback){ + this.name="loaded"; + delete this._loadObject; + callback(this); + } + }; + t.f(jsonStore.isItemLoaded(lazyItem)); + jsonStore.loadItem({item:lazyItem,onItem:function(){ + t.t(jsonStore.isItemLoaded(lazyItem)); + t.is(lazyItem.name,"loaded"); + d.callback(true); + }}); + return d; //Object + } + }, + { + name: "lazyItem With Fetch", + timeout: 10000, //10 seconds. + runTest: function(t) { + var d = new doh.Deferred(); + jsonStore.idAttribute = "id"; + jsonStore.syncMode = true; + jsonStore.fetch({query:"query", + onComplete: function(items, request){ + items[0]._loadObject = function(callback){ + jsonStore.fetch({query:this.id,onComplete:callback}); + } + t.t(jsonStore.getValue(items[0],"testArray").length); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.ServiceStore.error, doh, d) + }); + return d; + } + }, + { + name: "ReadAPI: Fetch_20_Streaming", + timeout: 10000, //10 seconds. Json can sometimes be slow. + runTest: function(t) { + // summary: + // fetching with paging + + var d = new doh.Deferred(); + var count = 0; + + function onItem(item, requestObj){ + t.assertTrue(typeof item == 'number'); + count++; + } + function onComplete(items, request){ + t.is(20, count); + + d.callback(true); + } + //Get everything... + jsonStore.fetch({ + query: "bigQuery", + onBegin: null, + count: 20, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.ServiceStore.error, t, d) + }); + return d; //Object + } + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = jsonStore [i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/SnapLogicStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/SnapLogicStore.js new file mode 100644 index 0000000..25dfe29 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/SnapLogicStore.js @@ -0,0 +1,434 @@ +dojo.provide("dojox.data.tests.stores.SnapLogicStore"); +dojo.require("dojox.data.SnapLogicStore"); +dojo.require("dojo.data.api.Read"); + +dojox.data.tests.stores.SnapLogicStore.pipelineUrl = require.toUrl("dojox/data/tests/stores/snap_pipeline.php").toString(); +dojox.data.tests.stores.SnapLogicStore.pipelineSize = 14; +dojox.data.tests.stores.SnapLogicStore.attributes = ["empno", "ename", "job", "hiredate", "sal", "comm", "deptno"]; + +dojox.data.tests.stores.SnapLogicStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + d.errback(errData); +} + +doh.register("dojox.data.tests.stores.SnapLogicStore", + [ + { + name: "ReadAPI: Fetch One", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch from a SnapLogic pipeline + // description: + // Simple test of a basic fetch from a SnapLogic pipeline + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(1, items.length); + d.callback(true); + } + store.fetch({ count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, doh, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: Fetch_10_Streaming", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on SnapLogic pipeline. + // description: + // Simple test of a basic fetch on SnapLogic pipeline. + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + count = 0; + + function onBegin(size, requestObj){ + t.assertEqual(dojox.data.tests.stores.SnapLogicStore.pipelineSize, size); + } + function onItem(item, requestObj){ + t.assertTrue(store.isItem(item)); + count++; + } + function onComplete(items, request){ + t.assertEqual(10, count); + t.assertTrue(items === null); + d.callback(true); + } + + //Get everything... + store.fetch({ onBegin: onBegin, + count: 10, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: Fetch Zero", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Try fetching 0 records. A count of the items in the pipeline should be returned. + // description: + // Try fetching 0 records. A count of the items in the pipeline should be returned. + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function onBegin(count, request){ + t.assertEqual(dojox.data.tests.stores.SnapLogicStore.pipelineSize, count); + d.callback(true); + } + store.fetch({ count: 0, + onBegin: onBegin, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, doh, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: Fetch_Paging", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Test of multiple fetches on a single result. Paging, if you will. + // description: + // Test of multiple fetches on a single result. Paging, if you will. + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function dumpFirstFetch(items, request){ + t.assertEqual(request.count, items.length); + request.start = dojox.data.tests.stores.SnapLogicStore.pipelineSize / 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + store.fetch(request); + } + + function dumpSecondFetch(items, request){ + t.assertEqual(1, items.length); + request.start = 0; + request.count = dojox.data.tests.stores.SnapLogicStore.pipelineSize / 2; + request.onComplete = dumpThirdFetch; + store.fetch(request); + } + + function dumpThirdFetch(items, request){ + t.assertEqual(request.count, items.length); + request.count = dojox.data.tests.stores.SnapLogicStore.pipelineSize * 2; + request.onComplete = dumpFourthFetch; + store.fetch(request); + } + + function dumpFourthFetch(items, request){ + t.assertEqual(dojox.data.tests.stores.SnapLogicStore.pipelineSize, items.length); + request.start = Math.floor(3 * dojox.data.tests.stores.SnapLogicStore.pipelineSize / 4); + request.count = dojox.data.tests.stores.SnapLogicStore.pipelineSize; + request.onComplete = dumpFifthFetch; + store.fetch(request); + } + + function dumpFifthFetch(items, request){ + t.assertEqual(dojox.data.tests.stores.SnapLogicStore.pipelineSize - request.start, items.length); + request.start = 2; + request.count = dojox.data.tests.stores.SnapLogicStore.pipelineSize * 10; + request.onComplete = dumpSixthFetch; + store.fetch(request); + } + + function dumpSixthFetch(items, request){ + t.assertEqual(dojox.data.tests.stores.SnapLogicStore.pipelineSize - request.start, items.length); + d.callback(true); + } + + store.fetch({ count: 5, + onComplete: dumpFirstFetch, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d)}); + return d; //Object + } + }, + { + name: "ReadAPI: getLabel", + timeout: 3000, //3 seconds + runTest: function(t) { + // summary: + // Test that the label function returns undefined since it's not supported. + // description: + // Test that the label function returns undefined since it's not supported. + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = store.getLabel(items[0]); + t.assertTrue(label === undefined); + d.callback(true); + } + store.fetch({ count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getLabelAttributes", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of the getLabelAttributes returns null since it's not supported. + // description: + // Simple test of the getLabelAttributes returns null since it's not supported. + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = store.getLabelAttributes(items[0]); + t.assertTrue(labelList === null); + d.callback(true); + } + store.fetch({ count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getValue", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertEqual(1, items.length); + console.debug(items[0]); + t.assertTrue(store.getValue(items[0], "empno") === 7369); + t.assertTrue(store.getValue(items[0], "ename") === "SMITH,CLERK"); + console.debug(store.getValue(items[0], "sal")); + t.assertTrue(store.getValue(items[0], "sal") == 800.00); + console.debug(1); + t.assertTrue(store.getValue(items[0], "deptno") === 20); + d.callback(true); + } + + store.fetch({ count: 1, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d)}); + return d; + } + }, + { + name: "ReadAPI: getValues", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of the getValue function of the store. + // description: + // Simple test of the getValue function of the store. + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertEqual(1, items.length); + for(var i = 0; i < dojox.data.tests.stores.SnapLogicStore.attributes.length; ++i){ + var values = store.getValues(items[0], dojox.data.tests.stores.SnapLogicStore.attributes[i]); + t.assertTrue(dojo.isArray(values)); + t.assertTrue(values[0] === store.getValue(items[0], dojox.data.tests.stores.SnapLogicStore.attributes[i])); + } + d.callback(true); + } + + store.fetch({ count: 1, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d)}); + return d; + } + }, + { + name: "ReadAPI: isItem", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of the isItem function of the store + // description: + // Simple test of the isItem function of the store + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function completedAll(items){ + t.assertEqual(5, items.length); + for(var i=0; i < items.length; i++){ + t.assertTrue(store.isItem(items[i])); + } + d.callback(true); + } + + //Get everything... + store.fetch({ count: 5, + onComplete: completedAll, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d)}); + return d; //Object + } + }, + { + name: "ReadAPI: hasAttribute", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of the hasAttribute function of the store + // description: + // Simple test of the hasAttribute function of the store + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function onComplete(items){ + t.assertEqual(1, items.length); + t.assertTrue(items[0] !== null); + for(var i = 0; i < dojox.data.tests.stores.SnapLogicStore.attributes.length; ++i){ + t.assertTrue(store.hasAttribute(items[0], dojox.data.tests.stores.SnapLogicStore.attributes[i])); + } + t.assertTrue(!store.hasAttribute(items[0], "Nothing")); + t.assertTrue(!store.hasAttribute(items[0], "Text")); + + //Test that null attributes throw an exception + var passed = false; + try{ + store.hasAttribute(items[0], null); + }catch (e){ + passed = true; + } + t.assertTrue(passed); + d.callback(true); + } + + //Get one item... + store.fetch({ count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: containsValue", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of the containsValue function of the store + // description: + // Simple test of the containsValue function of the store + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function onComplete(items){ + t.assertEqual(1, items.length); + var value = store.getValue(items[0], "LastName"); + t.assertTrue(store.containsValue(items[0], "LastName", value)); + d.callback(true); + } + + //Get one item... + store.fetch({ count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d) + }); + return d; //Object + } + }, + { + name: "ReadAPI: getAttributes", + timeout: 3000, //3 seconds. + runTest: function(t) { + // summary: + // Simple test of the getAttributes function of the store + // description: + // Simple test of the getAttributes function of the store + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var d = new doh.Deferred(); + function onComplete(items){ + t.assertEqual(1, items.length); + + var itemAttributes = store.getAttributes(items[0]); + t.assertEqual(dojox.data.tests.stores.SnapLogicStore.attributes.length, itemAttributes.length); + for(var i = 0; i < dojox.data.tests.stores.SnapLogicStore.attributes.length; ++i){ + t.assertTrue(dojo.indexOf(itemAttributes, dojox.data.tests.stores.SnapLogicStore.attributes[i]) !== -1); + } + d.callback(true); + } + + //Get everything... + store.fetch({ count: 1, + onComplete: onComplete, + onError: dojo.partial(dojox.data.tests.stores.SnapLogicStore.error, t, d)}); + return d; //Object + } + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var store = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + + var features = store.getFeatures(); + var count = 0; + for(var i in features){ + t.assertEqual(i, "dojo.data.api.Read"); + count++; + } + + t.assertEqual(count, 1); + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = new dojox.data.SnapLogicStore({url: dojox.data.tests.stores.SnapLogicStore.pipelineUrl}); + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(var i in readApi){ + if(i.toString().charAt(0) !== '_'){ + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + t.assertTrue(passed); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/WikipediaStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/WikipediaStore.js new file mode 100644 index 0000000..4d30af4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/WikipediaStore.js @@ -0,0 +1,449 @@ +dojo.provide("dojox.data.tests.stores.WikipediaStore"); + +dojo.require("dojox.data.WikipediaStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Identity"); + +dojox.data.tests.stores.WikipediaStore.getStore = function(){ + return new dojox.data.WikipediaStore(); +}; + +dojox.data.tests.stores.WikipediaStore.error = function(t, d, errData){ + // summary: + // Our shared error callback + d.errback(errData); +}; + +doh.register("dojox.data.tests.stores.WikipediaStore",[ + { + name: "ReadAPI: containsValue", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify the containsValue method functions correctly. + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + // hopefully Wikipedia doesn't rename the Main Page! + ws.fetch({ + query: { title: "Main Page" }, + onComplete: function(items, length){ + t.is(1, items.length); + t.t(ws.containsValue(items[0], "title", "Main Page")); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: fetch (one)", + timeout: 30000, + runTest: function(t) { + // summary: + // Test a single page fetch from Wikipedia + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { title: "Main Page" }, + onItem: function(item, request){ + t.t(item.title && item.title.length && item.title.length > 0); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, doh, d) + }); + return d; + } + }, + { + name: "ReadAPI: fetch (query 30)", + timeout: 30000, + runTest: function(t) { + // summary: + // Test a full text search from Wikipedia + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { action: "query", text: "dojo" }, + count: 30, + onComplete: function(items, request){ + t.is(30, items.length); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: fetch (paged)", + timeout: 30000, + runTest: function(t) { + // summary: + // Test multiple fetches on a single full text search. + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + var count = 0; + + ws.fetch({ + query: { action: "query", text: "dojo" }, + count: 15, + onComplete: function(items, request){ + t.is(15, items.length); + count = items.length; + ws.fetch({ + query: { action: "query", text: "dojo" }, + start: count+1, + count: 15, + onComplete: function(items, request){ + t.is(30, count + items.length); + d.callback(true); + } + }); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getAttributes", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify the getAttributes method functions correctly + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { title: "Main Page" }, + onComplete: function(items, request){ + t.is(1, items.length); + t.t(ws.isItem(items[0])); + t.t(ws.getAttributes(items[0]).length > 0); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getLabel", + timeout: 30000, + runTest: function(t) { + // summary: + // Test that the store correctly sets a label. + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { action: "query", text: "dojo" }, + count: 1, + onComplete: function(items, request){ + t.is(1, items.length); + t.t(ws.getLabel(items[0]) !== null); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getLabelAttributes", + timeout: 30000, + runTest: function(t) { + // summary: + // Test that the store correctly enumerates the label attributes. + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { action: "query", text: "dojo" }, + count: 1, + onComplete: function(items, request){ + t.is(1, items.length); + var labels = ws.getLabelAttributes(items[0]); + t.t(dojo.isArray(labels)); + t.is("title", labels[0]); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getValue", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify that getValue does what it should. + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { title: "Main Page" }, + onComplete: function(items, request){ + t.is(1, items.length); + var i = items[0]; + t.t(ws.getValue(i, "text") !== null); + t.t(ws.getValue(i, "links") !== null); + t.t(ws.getValue(i, "categories") !== null); + t.t(ws.getValue(i, "images") !== null); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: getValues", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify that getValues does what it should + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { title: "Main Page" }, + onComplete: function(items, request){ + t.is(1, items.length); + var i = items[0]; + t.t(dojo.isArray(ws.getValues(i, "text"))); + t.t(dojo.isArray(ws.getValues(i, "links"))); + t.t(dojo.isArray(ws.getValues(i, "categories"))); + t.t(dojo.isArray(ws.getValues(i, "images"))); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: hasAttribute", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify the hasAttribute method + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { title: "Main Page" }, + onComplete: function(items, request){ + t.is(1, items.length); + var i = items[0]; + t.t(i !== null); + t.t(ws.hasAttribute(i, "title")); + t.t(ws.hasAttribute(i, "text")); + t.t(ws.hasAttribute(i, "links")); + t.t(ws.hasAttribute(i, "categories")); + t.t(ws.hasAttribute(i, "images")); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "ReadAPI: isItem", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify the isItem method + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { action: "query", text: "dojo" }, + count: 10, + onComplete: function(items, request){ + t.is(10, items.length); + for(var i=0; i 0); + ws.loadItem({ + item: items[0], + onItem: function(item, request){ + t.t(ws.isItem(item)); + t.t(ws.isItemLoaded(item)); + d.callback(true); + } + }); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "IdentityAPI: getIdentityAttributes", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify the getIdentityAttributes method functions correctly + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { title: "Main Page" }, + onComplete: function(items, request){ + t.is(1, items.length); + t.t(ws.isItem(items[0])); + t.t(ws.getIdentityAttributes(items[0]).length > 0); + d.callback(true); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + { + name: "IdentityAPI: fetchItemByIdentity", + timeout: 30000, + runTest: function(t) { + // summary: + // Verify the fetchItemByIdentity method works + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var d = new doh.Deferred(); + + ws.fetch({ + query: { title: "Main Page" }, + onComplete: function(items, request){ + var firstItem = items[0]; + t.is(1, items.length); + t.t(ws.isItem(firstItem)); + ws.fetchItemByIdentity({ + identity: "Main Page", + onItem: function(item, request){ + t.t(ws.isItem(item)); + t.t(ws.getValue(firstItem, "title") === ws.getValue(item, "title")); + d.callback(true); + } + }); + }, + onError: dojo.partial(dojox.data.tests.stores.WikipediaStore.error, t, d) + }); + return d; + } + }, + + + function testIdentityAPI_getFeatures(t){ + // summary: + // Test that the store correctly advertises its capabilities + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + + var features = ws.getFeatures(); + var count = 0; + for(var i in features){ + if(i === "dojo.data.api.Read") count++; + if(i === "dojo.data.api.Identity") count++; + } + t.assertTrue(count === 2); + }, + + function testIdentityAPI_functionConformance(t){ + // summary: + // Tests for Identity API conformance by checking to see that all declared functions are actual functions on the instances. + var ws = dojox.data.tests.stores.WikipediaStore.getStore(); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + for(var i in identityApi){ + if(i.toString().charAt(0) === '_'){ + continue; + } + // check that every function defined in the Identity API is defined on the store + if(typeof identityApi[i] === "function"){ + if(!(typeof ws[i] === "function")){ + console.log("Error:" + i + " should be a function but is: " + typeof ws[i]); + passed = false; + break; + } + } + } + t.assertTrue(passed); + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/XmlStore.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/XmlStore.js new file mode 100644 index 0000000..79a589d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/XmlStore.js @@ -0,0 +1,1415 @@ +dojo.provide("dojox.data.tests.stores.XmlStore"); +dojo.require("dojox.data.XmlStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojo.data.api.Write"); +dojo.require("dojo.data.api.Identity"); + + +dojox.data.tests.stores.XmlStore.getBooks3Store = function(){ + return new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books2.xml").toString(), label: "title", keyAttribute: "isbn"}); +}; + +dojox.data.tests.stores.XmlStore.getBooks2Store = function(){ + return new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books2.xml").toString(), label: "title"}); +}; + +dojox.data.tests.stores.XmlStore.getBooks2StorePC = function(){ + return new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books2.xml").toString(), label: "title", urlPreventCache: false}); +}; + +dojox.data.tests.stores.XmlStore.getBooksStore = function(){ + return new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books.xml").toString(), label: "title"}); +}; + +dojox.data.tests.stores.XmlStore.getCDataTestStore = function(){ + return new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/cdata_test.xml").toString(), label: "title"}); +}; + +dojox.data.tests.stores.XmlStore.getGeographyStore = function(){ + return new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/geography2.xml").toString(), label: "text", keyAttribute: "text", attributeMap: {text: '@text'}, rootItem: "geography"}); +}; + +doh.register("dojox.data.tests.stores.XmlStore", + [ + function testReadAPI_fetch_all(t){ + // summary: + // Simple test of fetching all xml items through an XML element called isbn + // description: + // Simple test of fetching all xml items through an XML element called isbn + var store = dojox.data.tests.stores.XmlStore.getBooksStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_one(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn + // description: + // Simple test of fetching one xml items through an XML element called isbn + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + { + name: "testReadAPI_fetch_paging", + timeout: 10000, + runTest: function(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn + // description: + // Simple test of fetching one xml items through an XML element called isbn + var store = dojox.data.tests.stores.XmlStore.getBooksStore(); + var d = new doh.Deferred(); + + var dumpSixthFetch = function(items, request){ + t.assertEqual(18, items.length); + d.callback(true); + }; + + var dumpFifthFetch = function(items, request){ + t.assertEqual(11, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpSixthFetch; + store.fetch(request); + }; + + var dumpFourthFetch = function(items, request){ + t.assertEqual(18, items.length); + request.start = 9; + request.count = 100; + request.onComplete = dumpFifthFetch; + store.fetch(request); + }; + + var dumpThirdFetch = function (items, request){ + t.assertEqual(5, items.length); + request.start = 2; + request.count = 20; + request.onComplete = dumpFourthFetch; + store.fetch(request); + }; + + var dumpSecondFetch = function(items, request){ + t.assertEqual(1, items.length); + request.start = 0; + request.count = 5; + request.onComplete = dumpThirdFetch; + store.fetch(request); + }; + + var dumpFirstFetch = function(items, request){ + t.assertEqual(5, items.length); + request.start = 3; + request.count = 1; + request.onComplete = dumpSecondFetch; + store.fetch(request); + }; + + var completed = function(items, request){ + t.assertEqual(20, items.length); + request.start = 1; + request.count = 5; + request.onComplete = dumpFirstFetch; + store.fetch(request); + }; + + + function error(errData, request){ + d.errback(errData); + } + + store.fetch({onComplete: completed, onError: error}); + return d; //Object + } + }, + function testReadAPI_fetch_pattern0(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"?9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_fetch_pattern1(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(4, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B57?"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern1_preventCacheOff(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // with preventCache off to test that it doesn't pass it when told not to. + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // with preventCache off to test that it doesn't pass it when told not to. + var store = dojox.data.tests.stores.XmlStore.getBooks2StorePC(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(4, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B57?"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern2(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with * pattern match + // description: + // Simple test of fetching one xml items through an XML element called isbn with * pattern match + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(5, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern_multi(t){ + // summary: + // Simple test of fetching one xml items with a pattern of multiple attrs. + // description: + // Simple test of fetching one xml items with a pattern of multiple attrs. + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B57?", title: "?itle of 3"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern_multiValuedValue(t){ + // summary: + // Simple test of fetching one xml items with a pattern of multiple attrs. + // description: + // Simple test of fetching one xml items with a pattern of multiple attrs. + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{author:"Third Author of 5"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern_caseInsensitive(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match and in case insensitive mode. + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match and in case insensitive mode. + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"?9b574"}, queryOptions: {ignoreCase: true}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_pattern_caseSensitive(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match and in case sensitive mode. + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match and in case sensitive mode. + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"?9B574"}, queryOptions: {ignoreCase: false}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_regexp(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn: new RegExp("^.9B574$")}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_all_rootItem(t){ + // summary: + // Simple test of fetching all xml items through an XML element called isbn + // description: + // Simple test of fetching all xml items through an XML element called isbn + var store = new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books3.xml").toString(), + rootItem:"book"}); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(5, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_withAttrMap_all(t){ + var store = new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books_isbnAttr.xml").toString(), + attributeMap: {"book.isbn": "@isbn"}}); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(5, items.length); + d.callback(true); + } + function onError(error, request) { + console.debug(error); + d.errback(error); + } + store.fetch({query:{isbn:"*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_withAttrMap_one(t){ + var store = new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books_isbnAttr.xml").toString(), + attributeMap: {"book.isbn": "@isbn"}}); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + d.callback(true); + } + function onError(error, request) { + console.debug(error); + d.errback(error); + } + store.fetch({query:{isbn:"2"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_withAttrMap_pattern0(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + var store = new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books_isbnAttr2.xml").toString(), + attributeMap: {"book.isbn": "@isbn"}}); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(3, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"ABC?"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_withAttrMap_pattern1(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + var store = new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books_isbnAttr2.xml").toString(), + attributeMap: {"book.isbn": "@isbn"}}); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(5, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_fetch_withAttrMap_pattern2(t){ + // summary: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + // description: + // Simple test of fetching one xml items through an XML element called isbn with ? pattern match + var store = new dojox.data.XmlStore({url: require.toUrl("dojox/data/tests/stores/books_isbnAttr2.xml").toString(), + attributeMap: {"book.isbn": "@isbn"}}); + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(2, items.length); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"?C*"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_getLabel(t){ + // summary: + // Simple test of the getLabel function against a store set that has a label defined. + // description: + // Simple test of the getLabel function against a store set that has a label defined. + + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var label = store.getLabel(items[0]); + t.assertTrue(label !== null); + t.assertEqual("Title of 4", label); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; + }, + function testReadAPI_getLabelAttributes(t){ + // summary: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + // description: + // Simple test of the getLabelAttributes function against a store set that has a label defined. + + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request){ + t.assertEqual(items.length, 1); + var labelList = store.getLabelAttributes(items[0]); + t.assertTrue(dojo.isArray(labelList)); + t.assertEqual("title", labelList[0]); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; + }, + + function testReadAPI_getValue(t){ + // summary: + // Simple test of the getValue API + // description: + // Simple test of the getValue API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"isbn")); + t.assertEqual(store.getValue(item,"isbn"), "A9B574"); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_getValue_cdata(t) { + // summary: + // Simple test of the getValue text() special attribute. + // description: + // Simple test of the getValue text() special attribute. + var store = dojox.data.tests.stores.XmlStore.getCDataTestStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + try{ + t.assertTrue(store.hasAttribute(item,"ids")); + t.assertEqual(store.getValue(item,"ids"), "{68d3c190-4b83-11dd-c204-000000000001}17"); + var title = store.getValue(item, "title"); + t.assertTrue(store.isItem(title)); + var titleValue = store.getValue(title, "text()"); + t.assertEqual("First 3", dojo.trim(titleValue)); + d.callback(true); + } catch (e) { + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{ids:"{68d3c190-4b83-11dd-c204-000000000001}17"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_getValues_cdata(t) { + // summary: + // Simple test of the getValues text() special attribute. + // description: + // Simple test of the getValues text() special attribute. + var store = dojox.data.tests.stores.XmlStore.getCDataTestStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + try{ + t.assertTrue(store.hasAttribute(item,"ids")); + t.assertEqual(store.getValue(item,"ids"), "{68d3c190-4b83-11dd-c204-000000000001}17"); + var title = store.getValue(item, "title"); + t.assertTrue(store.isItem(title)); + var titleValue = store.getValues(title, "text()"); + t.assertEqual("First 3", dojo.trim(titleValue[0])); + d.callback(true); + } catch (e) { + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{ids:"{68d3c190-4b83-11dd-c204-000000000001}17"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_getValue_cdata_toString(t) { + // summary: + // Simple test of the getValue and toString of the resulting 'XmlItem' API + // description: + // Simple test of the getValue and toString of the resulting 'XmlItem' API + var store = dojox.data.tests.stores.XmlStore.getCDataTestStore(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + try{ + t.assertTrue(store.hasAttribute(item,"ids")); + t.assertEqual(store.getValue(item,"ids"), "{68d3c190-4b83-11dd-c204-000000000001}17"); + var title = store.getValue(item, "title"); + t.assertTrue(store.isItem(title)); + var firstText = title.toString(); + t.assertEqual("First 3", dojo.trim(firstText)); + d.callback(true); + } catch (e) { + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{ids:"{68d3c190-4b83-11dd-c204-000000000001}17"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testReadAPI_getValues(t){ + // summary: + // Simple test of the getValues API + // description: + // Simple test of the getValues API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"isbn")); + var values = store.getValues(item,"isbn"); + t.assertEqual(1,values.length); + t.assertEqual("A9B574", values[0]); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItem(t){ + // summary: + // Simple test of the isItem API + // description: + // Simple test of the isItem API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItem(item)); + t.assertTrue(!store.isItem({})); + t.assertTrue(!store.isItem("Foo")); + t.assertTrue(!store.isItem(1)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItem_multistore(t){ + // summary: + // Simple test of the isItem API across multiple store instances. + // description: + // Simple test of the isItem API across multiple store instances. + var store1 = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var store2 = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var d = new doh.Deferred(); + + var onError = function(error, request) { + d.errback(error); + }; + + var onComplete1 = function(items, request) { + t.assertEqual(1, items.length); + var item1 = items[0]; + t.assertTrue(store1.isItem(item1)); + + var onComplete2 = function(items, request) { + t.assertEqual(1, items.length); + var item2 = items[0]; + t.assertTrue(store2.isItem(item2)); + t.assertTrue(!store1.isItem(item2)); + t.assertTrue(!store2.isItem(item1)); + d.callback(true); + }; + store2.fetch({query:{isbn:"A9B574"}, onComplete: onComplete2, onError: onError}); + }; + store1.fetch({query:{isbn:"A9B574"}, onComplete: onComplete1, onError: onError}); + return d; //Object + }, + function testReadAPI_hasAttribute(t){ + // summary: + // Simple test of the hasAttribute API + // description: + // Simple test of the hasAttribute API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.hasAttribute(item,"isbn")); + t.assertTrue(!store.hasAttribute(item,"bob")); + //Verify that XML attributes return false in this case. + t.assertTrue(store.hasAttribute(item,"@xmlAttribute")); + t.assertFalse(store.hasAttribute(item,"@bogus")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_containsValue(t){ + // summary: + // Simple test of the containsValue API + // description: + // Simple test of the containsValue API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"isbn", "A9B574")); + t.assertTrue(!store.containsValue(item,"isbn", "bob")); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortDescending(t){ + // summary: + // Simple test of the sorting API in descending order. + // description: + // Simple test of the sorting API in descending order. + var store = dojox.data.tests.stores.XmlStore.getBooksStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [9,8,7,6,5,4,3,20,2,19,18,17,16,15,14,13,12,11,10,1]; + + var d = new doh.Deferred(); + function onComplete(items, request) { + console.log("Number of items: " + items.length); + t.assertEqual(20, items.length); + + for(var i = 0; i < items.length; i++){ + t.assertEqual(order[i], store.getValue(items[i],"isbn").toString()); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn", descending: true}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortAscending(t){ + // summary: + // Simple test of the sorting API in ascending order. + // description: + // Simple test of the sorting API in ascending order. + var store = dojox.data.tests.stores.XmlStore.getBooksStore(); + + //Comparison is done as a string type (toString comparison), so the order won't be numeric + //So have to compare in 'alphabetic' order. + var order = [1,10,11,12,13,14,15,16,17,18,19,2,20,3,4,5,6,7,8,9]; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var itemId = 1; + for(var i = 0; i < items.length; i++){ + t.assertEqual(order[i], store.getValue(items[i],"isbn").toString()); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn"}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortDescendingNumeric(t){ + // summary: + // Simple test of the sorting API in descending order using a numeric comparator. + // description: + // Simple test of the sorting API in descending order using a numeric comparator. + var store = dojox.data.tests.stores.XmlStore.getBooksStore(); + + //isbn should be treated as a numeric, not as a string comparison + store.comparatorMap = {}; + store.comparatorMap["isbn"] = function(a, b){ + var ret = 0; + if(parseInt(a.toString(), 10) > parseInt(b.toString(), 10)){ + ret = 1; + }else if(parseInt(a.toString(), 10) < parseInt(b.toString(), 10)){ + ret = -1; + } + return ret; //int, {-1,0,1} + }; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var itemId = 20; + for(var i = 0; i < items.length; i++){ + t.assertEqual(itemId, store.getValue(items[i],"isbn").toString()); + itemId--; + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn", descending: true}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_sortAscendingNumeric(t){ + // summary: + // Simple test of the sorting API in ascending order using a numeric comparator. + // description: + // Simple test of the sorting API in ascending order using a numeric comparator. + var store = dojox.data.tests.stores.XmlStore.getBooksStore(); + + //isbn should be treated as a numeric, not as a string comparison + store.comparatorMap = {}; + store.comparatorMap["isbn"] = function(a, b){ + var ret = 0; + if(parseInt(a.toString(), 10) > parseInt(b.toString(), 10)){ + ret = 1; + }else if(parseInt(a.toString(), 10) < parseInt(b.toString(), 10)){ + ret = -1; + } + return ret; //int, {-1,0,1} + }; + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(20, items.length); + var itemId = 1; + for(var i = 0; i < items.length; i++){ + t.assertEqual(itemId, store.getValue(items[i],"isbn").toString()); + itemId++; + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + + var sortAttributes = [{attribute: "isbn"}]; + store.fetch({query:{isbn:"*"}, sort: sortAttributes, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_isItemLoaded(t){ + // summary: + // Simple test of the isItemLoaded API + // description: + // Simple test of the isItemLoaded API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.isItemLoaded(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testReadAPI_getFeatures(t){ + // summary: + // Simple test of the getFeatures function of the store + // description: + // Simple test of the getFeatures function of the store + + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + var features = store.getFeatures(); + var count = 0; + var i; + for(i in features){ + t.assertTrue((i === "dojo.data.api.Read" || i === "dojo.data.api.Write" || "dojo.data.api.Identity")); + count++; + } + t.assertEqual(3, count); + }, + function testReadAPI_getAttributes(t){ + // summary: + // Simple test of the getAttributes API + // description: + // Simple test of the getAttributes API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + var attributes = store.getAttributes(item); + + //Should be six, as all items should have tagName, childNodes, and text() special attributes + //in addition to any doc defined ones, which in this case are author, title, and isbn + //FIXME: Figure out why IE returns 5! Need to get firebug lite working in IE for that. + //Suspect it's childNodes, may not be defined if there are no child nodes. + for(var i = 0; i < attributes.length; i++){ + console.log("attribute found: " + attributes[i]); + } + if(dojo.isIE){ + t.assertEqual(5,attributes.length); + }else{ + t.assertEqual(6,attributes.length); + } + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B577"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_setValue(t){ + // summary: + // Simple test of the setValue API + // description: + // Simple test of the setValue API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"isbn", "A9B574")); + store.setValue(item, "isbn", "A9B574-new"); + t.assertEqual(store.getValue(item,"isbn").toString(), "A9B574-new"); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_setValues(t){ + // summary: + // Simple test of the setValues API + // description: + // Simple test of the setValues API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"isbn", "A9B574")); + store.setValues(item, "isbn", ["A9B574-new1", "A9B574-new2"]); + var values = store.getValues(item,"isbn"); + t.assertEqual(values[0].toString(), "A9B574-new1"); + t.assertEqual(values[1].toString(), "A9B574-new2"); + store.setValues(values[0], "text()", ["A9B574", "-new3"]); + t.assertEqual(store.getValue(values[0],"text()").toString(), "A9B574-new3"); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_unsetAttribute(t){ + // summary: + // Simple test of the unsetAttribute API + // description: + // Simple test of the unsetAttribute API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"isbn", "A9B574")); + store.unsetAttribute(item,"isbn"); + t.assertTrue(!store.hasAttribute(item,"isbn")); + t.assertTrue(store.isDirty(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_isDirty(t){ + // summary: + // Simple test of the isDirty API + // description: + // Simple test of the isDirty API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"isbn", "A9B574")); + store.setValue(item, "isbn", "A9B574-new"); + t.assertEqual(store.getValue(item,"isbn").toString(), "A9B574-new"); + t.assertTrue(store.isDirty(item)); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + function testWriteAPI_revert(t){ + // summary: + // Simple test of the write revert API + // description: + // Simple test of the write revert API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + var onError = function(error, request) { + d.errback(error); + }; + var onComplete = function(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"isbn", "A9B574")); + t.assertTrue(!store.isDirty(item)); + store.setValue(item, "isbn", "A9B574-new"); + t.assertEqual(store.getValue(item,"isbn").toString(), "A9B574-new"); + t.assertTrue(store.isDirty(item)); + store.revert(); + + //Fetch again to see if it reset the state. + var onComplete1 = function(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + t.assertTrue(store.containsValue(item,"isbn", "A9B574")); + d.callback(true); + }; + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete1, onError: onError}); + }; + store.fetch({query:{isbn:"A9B574"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_getIdentity(t) { + // summary: + // Simple test of the Identity getIdentity API + // description: + // Simple test of the Identity getIdentity API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onComplete(items, request) { + t.assertEqual(1, items.length); + var item = items[0]; + try { + t.assertTrue(store.containsValue(item,"isbn", "A9B5CC")); + t.assertTrue(store.getIdentity(item) !== null); + d.callback(true); + } catch (e) { + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetch({query:{isbn:"A9B5CC"}, onComplete: onComplete, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_getIdentityAttributes(t) { + // summary: + // Simple test of the Identity getIdentityAttributes API where it defaults to internal xpath (no keyAttribute) + // description: + // Simple test of the Identity getIdentityAttributes API where it defaults to internal xpath (no keyAttribute) + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + var idAttrs = store.getIdentityAttributes(item); + t.assertTrue(idAttrs === null); + t.assertEqual("/books[0]/book[4]", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "/books[0]/book[4]", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_getIdentityAttributes_usingKeyAttributeIdentity(t) { + // summary: + // Simple test of the Identity getIdentityAttributes API where identity is specified by the keyAttribute param + // description: + // Simple test of the Identity getIdentityAttributes API where identity is specified by the keyAttribute param + var store = dojox.data.tests.stores.XmlStore.getBooks3Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + var idAttrs = store.getIdentityAttributes(item); + t.assertTrue(idAttrs !== null); + t.assertTrue(idAttrs.length === 1); + t.assertTrue(idAttrs[0] === "isbn"); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "A9B574", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_fetchItemByIdentity(t) { + // summary: + // Simple test of the Identity getIdentity API where the store defaults the identity to a xpathlike lookup. + // description: + // Simple test of the Identity getIdentity API where the store defaults the identity to a xpathlike lookup. + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + t.assertEqual("/books[0]/book[4]", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "/books[0]/book[4]", onItem: onItem, onError: onError}); + return d; //Object + + }, + + function testIdentityAPI_fetchItemByIdentity2(t) { + // summary: + // Simple test of the Identity getIdentity API where the store defaults the identity to a xpathlike lookup. + // description: + // Simple test of the Identity getIdentity API where the store defaults the identity to a xpathlike lookup. + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + t.assertEqual("/books[0]/book[0]", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "/books[0]/book[0]", onItem: onItem, onError: onError}); + return d; //Object + + }, + + function testIdentityAPI_fetchItemByIdentity3(t) { + // summary: + // Simple test of the Identity getIdentity API where the store defaults the identity to a xpathlike lookup. + // description: + // Simple test of the Identity getIdentity API where the store defaults the identity to a xpathlike lookup. + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + t.assertEqual("/books[0]/book[2]", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "/books[0]/book[2]", onItem: onItem, onError: onError}); + return d; //Object + + }, + + function testIdentityAPI_fetchItemByIdentity_usingKeyAttributeIdentity(t) { + // summary: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + // description: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + var store = dojox.data.tests.stores.XmlStore.getBooks3Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + t.assertEqual("A9B574", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "A9B574", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_fetchItemByIdentity_usingKeyAttributeIdentity2(t) { + // summary: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + // description: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + var store = dojox.data.tests.stores.XmlStore.getBooks3Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + t.assertEqual("A9B57C", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "A9B57C", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_fetchItemByIdentity_usingKeyAttributeIdentity3(t) { + // summary: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + // description: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + var store = dojox.data.tests.stores.XmlStore.getBooks3Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + t.assertEqual("A9B5CC", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "A9B5CC", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_fetchItemByIdentity_usingKeyAttributeIdentity4(t) { + // summary: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + // description: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + var store = dojox.data.tests.stores.XmlStore.getGeographyStore(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item !== null); + t.assertEqual("Mexico City", store.getIdentity(item)); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "Mexico City", onItem: onItem, onError: onError}); + return d; //Object + }, + + + function testIdentityAPI_fetchItemByIdentity_fails(t) { + // summary: + // Simple test of the Identity getIdentity API + // description: + // Simple test of the Identity getIdentity API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + t.assertTrue(item === null); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + //In memory stores use dojo query syntax for the identifier. + store.fetchItemByIdentity({identity: "/books[0]/book[200]", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_fetchItemByIdentity_fails2(t) { + // summary: + // Simple test of the Identity getIdentity API + // description: + // Simple test of the Identity getIdentity API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + t.assertTrue(item === null); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + //In memory stores use dojo query syntax for the identifier. + store.fetchItemByIdentity({identity: "/books[1]/book[4]", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_fetchItemByIdentity_fails3(t) { + // summary: + // Simple test of the Identity getIdentity API + // description: + // Simple test of the Identity getIdentity API + var store = dojox.data.tests.stores.XmlStore.getBooks2Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + t.assertTrue(item === null); + d.callback(true); + } + function onError(error, request) { + d.errback(error); + } + //In memory stores use dojo query syntax for the identifier. + store.fetchItemByIdentity({identity: "/books[1]/book[200]", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testIdentityAPI_fetchItemByIdentity_usingKeyAttributeIdentity_fails(t) { + // summary: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + // description: + // Simple test of the Identity getIdentity API where identity is specified by the keyAttribute param + var store = dojox.data.tests.stores.XmlStore.getBooks3Store(); + + var d = new doh.Deferred(); + function onItem(item, request) { + try{ + t.assertTrue(item === null); + d.callback(true); + }catch(e){ + d.errback(e); + } + } + function onError(error, request) { + d.errback(error); + } + store.fetchItemByIdentity({identity: "A9B574_NONEXISTANT", onItem: onItem, onError: onError}); + return d; //Object + }, + + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = dojox.data.tests.stores.XmlStore.getBooksStore(); + var readApi = new dojo.data.api.Read(); + var passed = true; + var i; + for(i in readApi){ + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + console.log("Problem with function: [" + i + "]"); + passed = false; + break; + } + } + } + t.assertTrue(passed); + }, + function testWriteAPI_functionConformance(t){ + // summary: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = dojox.data.tests.stores.XmlStore.getBooksStore(); + var writeApi = new dojo.data.api.Write(); + var passed = true; + var i; + for(i in writeApi){ + var member = writeApi[i]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + t.assertTrue(passed); + }, + function testIdentityAPI_functionConformance(t){ + // summary: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test write API conformance. Checks to see all declared functions are actual functions on the instances. + + var testStore = dojox.data.tests.stores.XmlStore.getBooksStore(); + var identityApi = new dojo.data.api.Identity(); + var passed = true; + var i; + for(i in identityApi){ + var member = identityApi[i]; + //Check that all the 'Write' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = testStore[i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + t.assertTrue(passed); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/atom1.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/atom1.xml new file mode 100644 index 0000000..faff9aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/atom1.xml @@ -0,0 +1,848 @@ + + SOS + ..where the wave finally broke, and rolled back.. Shane O'Sullivan's technical blog + + 2008-01-22T14:32:09Z + WordPress + + + http://shaneosullivan.wordpress.com/feed/atom/ + + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Using AOL hosted Dojo with your custom code]]> + + http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/ + 2008-01-22T14:32:09Z + 2008-01-22T14:32:09Z + + + + + + + + +

                            The Dojo Ajax Toolkit is kindly hosted by AOL for the consumption of anyone at all. This has the advantage of

                            + +
                              +
                            • Reducing the load on your own server
                            • +
                            • Speeding up the delivery, as a Content Delivery Network (CDN) is used to ensure that the server is as close as possible to the client, and
                            • +
                            • The more people who use this the better, as the same Dojo files will be cached when users move from site to site, as they’ll all be downloading the AOL hosted files.
                            • +
                            • Gzip compression as standard, so the files are as small as possible
                            • +
                            +

                            Additionally, since release 0.9 onwards, the main Dojo JavaScript file, dojo.js, is always exactly the same, whereas in previous released it changed for every developer who built it.

                            +

                            However, the problem comes in where you want to use your own custom code with the hosted Dojo code. This is because the hosted code uses Dojo’s loading system to dynamically load the resources needed on the page, and this will read the files from AOL, not your server (as you would expect - it knows nothing about your server). If you want to build custom layers to improve performance, the remotely hosted Dojo will not be able to find them.

                            + +

                            So, the solution I generally tend to use is to put the AOL dojo.js on every page, and tell Dojo to load any other required files from my own server. To do this, set the baseUrl parameter on the djConfig attribute for the JavaScript file to the folder where Dojo is stored on your server. E.g.

                            +

                            <script type=”text/javascript” src=”http://o.aolcdn.com/dojo/1.0.2/dojo/dojo.js” djConfig=”{baseUrl:’/js/dojo/’}”></script>

                            + +

                            Notice here that the file I load is dojo.js, the normal version, not dojo.xd.js, which is the cross domain version capable of loading files from AOL.

                            +

                            After doing this, you can then include whatever custom built layers you like onto an particular page. For example, if you have a layer built for the dojox.image.Gallery widget called /js/dojo/dojox/image/Gallery-layer.js, you can load it either dynamically:

                            +

                            <script type=”text/javascript”>dojo.require(”dojox.image.Gallery-layer.js”);</script>

                            + +

                            or include it via a script tag:

                            +

                            <script type=”text/javascript” src=”js/dojo/dojox/image/Gallery-layer.js”></script>

                            +

                            and it should work just as if you were using Dojo from your own server. Only of course you are not - AOL is serving up that file, and in many cases users will already have cached that file, speeding up your site quite nicely.

                            +

                            Another approach is to create a custom namespace, register it with Dojo, and put all your layers in there…. but that’s for another post :-)
                            + +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 1 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Dojo Demo Engine Update]]> + + http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/ + 2008-01-12T13:22:38Z + 2008-01-07T01:02:43Z + +

                            A short while ago I posted about the demo engine I’m writing for the Dojo Ajax Toolkit. Click here to read that post or go to http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html to see it in action.

                            + +

                            Features

                            +

                            Since that post, quite a lot of work has gone into both the features and the content of the demo engine, and the development process has solidified nicely. Some of the features include:

                            +
                              +
                            • Tree navigation. A dijit.Tree widget, reading from a remote JSON data store is used to navigate the various demos.
                            • +
                            • Search feature. A dijit.form.ComboBox widget, reading from the same JSON data store as the tree, can be used to dynamically search for demos by matching any part of their name.
                            • + +
                            • Theme switcher. A dijit.form.ComboBox widget is used to switch between the CSS styles that Dojo provides.
                            • +
                            • URL addressability. Using a hash identifier (e.g. #Dojo_Query_By%20Class) in the URL of the demo engine causes it to open that demo when it has finished loading. For example, if you click this link, it will open the dojo.query demo showing you how to select nodes by class name. Opening any demo changes the URL in the browser to the URL for that demo, for easy bookmarking.
                            • + +
                            • Integrated build process. A simple build script is integrated with the Dojo build process. It builds a JSON data file listing all the existing demos and their respective files. It also builds files with URL links for each demo.
                            • +
                            +

                            Content

                            +

                            To date, a lot of content has been added. Many, many widgets in Dijit and DojoX
                            +
                            have have been added, including the majority of the Form Controls.

                            + +

                            The latest, pretty cool additions have been the IO and dojo.query demos. These cover things such as:

                            +
                              +
                            • Performing a XMLHttpRequest request
                            • +
                            • Using an iFrame transport
                            • +
                            • Submitting a form asynchronously
                            • +
                            • Loading remote JavaScript files from another domain
                            • +
                            • Selecting nodes using CSS selectors with dojo.query
                            • + +
                            • Performing operations on the NodeList returned from dojo.query
                            • +
                            • Attaching events to the NodeList returned from dojo.query
                            • +
                            +

                            File Naming Scheme
                            +A simple file naming scheme is used to add content to the demo framework. Each folder beneath the root folder represents a demo. Each file in a folder must be named the same as the folder, with five possible extensions. For example, given a folder with the name ‘Button‘, the possible files are:

                            +
                              + +
                            • Button.html - this contains the demo to be displayed. Any JavaScript code inside <script> tags is executed, and any <link type=”text/css”> and <style> tags have their CSS loaded. The executed code is shown in the View tab, and and the source code is shown in the XML tab. The <html>, <head> and <body> tags are not required.
                            • + +
                            • Button.js - this contains pure JavaScript code that performs the same operations as Button.html, if applicable. It is not executed however. It is shown in the JS tab.
                            • +
                            • Button.txt - this contains the text description of the demo. It is loaded above the tabs.
                            • +
                            • Button.links - this contains a JSON array of URL links. The build script transforms these links into HTML, and the result is loaded into the Links tab. One neat feature of this is that all links from sub folders are integrated with the parent folder and displayed in a nested structure. Do, for example, clicking on Dijit will show all the links for all widgets in the Dijit project.
                            • + +
                            • Button.full.html - this is standalone demo, that is designed to run outside the demo engine. The View tab provides a link to the external file.
                            • +
                            • sort.txt - this contains a comma separated list of the child folders contained in this folder. It specifies the order in which to display the child demos in the tree. If this file is not specified, then an alphabetical ordering is used.
                            • +
                            +

                            All of these files are optional. If a file in a folder does not match this naming scheme, it is assumed to be some kind of resource that the demo needs, such as an image or a JSON data file. In this case, the file can be named whatever you like.

                            +

                            The tree structure in the demo engine mirrors the folder layout.

                            + +

                            Still To Do

                            +

                            There remains quite a lot of work ahead. There are a few bugs remaining, some more cross browser testing is needed, and of course more content is required, particularly the base Dojo package.

                            +

                            In the relatively near future this should be opened up to the public for development. The Dojo folks are setting up a source control server for community additions, and this demo engine should be part of that. Once that is done, people can start adding all sorts of cool stuff!
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 3 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Navigating in an IE Modal Dialog]]> + + http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/ + 2007-12-31T16:36:21Z + 2007-12-31T16:36:21Z + +

                            Internet Explorer has a nice feature where a new window can be opened modally using the window.showModalDialog function, meaning that the page that opened it cannot be accessed until the new window is closed. This can be useful in many situations.

                            + +

                            However, the main limitation of IE Modal Dialogs (other than being non-standard), is that any hyperlink clicked in a modal dialog causes another, non modal, dialog to be opened, rather than opening the page linked to in the same window, as would happen in a normal pop up window.

                            +

                            The key to solving this problem is to note that a modal dialog only opens another window when a GET request is made, not when a POST request is made. However, an anchor tag automatically causes a GET request, so the solution is to:

                            +
                              +
                            1. Catch the click on each anchor tag, cancel it,
                            2. +
                            3. Submit a dynamically created FORM element, with it’s method set to ‘POST’ and it’s action set to the URL of the link clicked.
                            4. + +
                            +

                            While it is possible to put a listener on each anchor tag to achieve this, such an approach will not scale well. Instead, place a listener on the body tag. The example below is done using methods from the Dojo Ajax Toolkit, since that the toolkit I use the most, but you can of course use whatever methods you like to achieve the same result:

                            +

                            <script type="text/javascript">
                            +dojo.addOnLoad(function(){
                            +dojo.connect(dojo.body(), “onclick”, function(evt) {
                            +if(evt.target.tagName != “A”) {return true;}
                            +dojo.stopEvent(evt);
                            +var form = document.createElement(”form”);
                            +form.setAttribute(”target”, window.name ? window.name : “SrPopUp”);
                            +form.setAttribute(”action”, url);
                            +form.setAttribute(”method”,”POST”);
                            +document.appendChild(form);
                            +form.submit();
                            +return false;
                            +});
                            +});
                            + +</script>

                            +

                            This method assumes that you have control over the content of the page being shown in the modal dialog. It would also make sense to add a similar listener to the body tag for key events, as a user can trigger an anchor tag by tabbing to it and hitting enter.

                            +

                            Thanks to Danny Goodman and Steiner Overbeck Cook for coming up with this solution.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 1 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[A new Demo engine for Dojo]]> + + http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/ + 2008-01-12T13:23:15Z + 2007-12-04T09:29:16Z + +

                            A couple of weeks ago I saw a cool demo framework for an Ajax toolkit just released as open source. It’s a very slick implementation, with a tree listing all the various demos, and a tabbed area showing the implementation, and the widget in practice.

                            + +

                            So, I think to myself, this is exactly what the Dojo Ajax Toolkit is missing! Cut to today, and I’ve put the first rough cut at the demo framework on the web for people’s perusal. Check it out at http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html .

                            +

                            Note: I have written a follow up post here.

                            +

                            Some of the features include:

                            +
                              + +
                            • Tree navigation for the demos. Demos can be nested as deep as required.
                            • +
                            • View tab. This shows the widgets in action.
                            • +
                            • HTML tab. This shows how to instantiate the widget using HTML markup.
                            • +
                            • JS tab. This shows how to instantiate the widget using JavaScript code.
                            • +
                            • Links tab. This shows various hyperlinks to alternate content for that demo, e.g. the Dojo Book.
                            • +
                            • Demo description. Gives a text description of the demo.
                            • +
                            • Theme selector. This allows you to change from one CSS theme to another
                            • +
                            • Ability to link to standalone demos that open in a new page. This is useful for large demos that show the integration of many widgets together, and may not fit well within the demo framework itself. See the Dijit/Mail demo for an example of this.
                            • + +
                            • A build system that takes a very simple naming scheme for the demos, and creates a JSON data store that the framework runs off of. So, whenever a user adds a new demo, they simply have to re-run the build step, and that’s it! No need for a server side script, so you can run this right off your hard drive.
                            • +
                            +

                            This is still very much beta code, and there are a couple of errors floating around, but those will of course be hunted down. There are also some Internet Explorer issues that I’ll get to soon, so try this in Firefox for now (update Dec 05 2007 - most of these have been solved, with one or two small bugs remaining). I’m in discussions to get this into the Dojo toolkit, so that the community at large can start adding in demos. I’ve put in quite a few already, but it’s so easy to do that this could become a huge resource for the Dojo community.

                            +

                            If you have any suggestions, please let me know.

                            +

                            Demo Framework
                            + +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 3 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Upgrading Ubuntu Feisty Fawn (7.04) to Gutsy Gibbon (7.10)]]> + + http://shaneosullivan.wordpress.com/2007/10/18/upgrading-ubuntu-feisty-fawn-704-to-gutsy-gibbon-710/ + 2008-01-12T10:26:42Z + 2007-10-18T16:11:37Z + +

                            Today I’ve begun the process of upgrading my Ubuntu installation of version 7.04 to version 7.10. To see my previous tutorial of getting Ubuntu installed on my IBM Thinkpad X41, see http://shaneosullivan.wordpress.com/2007/02/16/installing-ubuntu-edgy-on-a-thinkpad-x41-tablet/.

                            + +

                            This post lists whatever issues I found when upgrading, and my solutions to them. For the official instructions, see https://help.ubuntu.com/community/GutsyUpgrades.

                            +

                            Third Party software sources cause problems

                            +

                            My first problem was caused by having links to third party software distribution sites. When running the “update-manager -d” command, I received an error, saying the dbus couldn’t run.

                            +

                            This was caused by having third party software sources enabled that no longer existed, for whatever reason.

                            + +

                            To fix this:

                            +
                              +
                            1. click “System/Administration/Software Sources”
                            2. +
                            3. Click the “Third-Party Software” tab
                            4. +
                            5. Deselect any non-Ubuntu software sources. You can always reselect them after the upgrade
                            6. + +
                            +

                            Modifying the software channels gets stuck

                            +

                            When the second step in the “Distribution Upgrade” application is running, that is, the “Modifying the software channels” step, it got stuck downloading files. It would say

                            +

                            Downloading file 36 of 97

                            +

                            and stay at that number for a long time. This was not a bandwidth issue, it simply stopped. To fix this

                            +
                              +
                            1. Click the “Cancel” button.
                            2. + +
                            3. Run the “update-manager -d” command again.
                            4. +
                            5. Repeat this each time it gets stuck downloading files. I had to do this four times for it to work completely.
                            6. +
                            +

                            Dual monitors didn’t work correctly

                            +

                            When booted up with an external monitor plugged in, the desktop was fixed at 640 * 480 pixels resolution. I found someone else with a similar issue at http://ubuntuforums.org/showthread.php?t=566947 , but their solution didn’t work for me. I solved this by:

                            + +
                              +
                            1. Unplugging the monitor.
                            2. +
                            3. Restart the machine, and log in.
                            4. +
                            5. Click “System/Administration/Screens and Graphics
                            6. +
                            7. Click the “Graphics Card” tab.
                            8. + +
                            9. Click the “Driver” button
                            10. +
                            11. From the “Driver” dropdown list, choose “i810 - Intel Integrated Graphics Chipsets
                            12. +
                            13. Restart the machine.
                            14. + +
                            +

                            Compiz has problems with dual monitors

                            +

                            Compiz (the 3D graphics stuff) causes problems and refuses to work at all if I am using dual monitors. Still working on this one.

                            +

                            Some Eclipse plug-ins no longer work

                            +

                            As a Java developer, I often use the Eclipse development platform. I include some non-standard plugins in the application, like plugins for Subversion support. However, when Ubuntu is upgraded to 7.10, the base Eclipse platform in upgraded, but not the non-standard plugins, which stops some of them from working.

                            +

                            Update: actually, this didn’t fix my Eclipse problems, please ignore :-)

                            + +

                            The solution is to upgrade the plugins in the usual Eclipse manner:

                            +
                              +
                            1. Open Eclipse
                            2. +
                            3. Click Help/Software Updates/Find and Install
                            4. +
                            5. Click Finish
                            6. +
                            7. Wait a while…
                            8. +
                            + +

                            Running low on disk space after upgrade

                            +

                            My laptop was running out of disk space after the install, as it downloaded quite a few packages. I found a very good blog post on how to clean up your Ubuntu install at http://www.ubuntugeek.com/cleaning-up-all-unnecessary-junk-files-in-ubuntu.html.

                            +

                            Make sure to read comment #7 also, that alone saved me 1GB.

                            +

                            Some Thinkpad features no longer work

                            +

                            I found that some things didn’t work that did work before, for example the stylus pen and the middle ’scroller’ button of the mouse. If this happens, just reapply the settings I describe here, as the upgrade removed them. This solved the problems for me.

                            + +

                            Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 25 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Introducing the new Dojo Image Widgets]]> + + http://shaneosullivan.wordpress.com/2007/10/13/introducing-the-new-dojo-image-widgets/ + 2008-01-08T11:23:13Z + 2007-10-13T11:09:13Z + + + + + + + + + + + + + + + + +

                            In previous posts (here for the Dojo 0.4.3 version, here and here), I wrote how I wrote an image gallery for version 0.4.3 of the Dojo Ajax Toolkit, and how I was translating it for the latest version of the toolkit, version 1.0.

                            + +

                            Well, that work is now, finally, complete, and I have to say, I’m pretty damn happy with the results. The code is now part of the dojox.image project (dojox is the Dojo extensions project, for cool new code that may in the future make it into the core code base if enough people like/want it).

                            +

                            If you’d like to just see the gallery in action, have a look at the Photos page on my personal website, or see the links at the bottom of the post, otherwise, read on!

                            +

                            Update: changes have been made to the widgets since this post was written, resulting in some badly aligned images. This will be fixed in the next few days. (Oct 25th 2007)

                            +

                            Update: issue above has been fixed (Oct 29th 2007)

                            + +

                            All For One….

                            +

                            The gallery is composed of three widgets:

                            +
                              +
                            • dojox.image.ThumbnailPicker - a widget to list many small images in either a horizontal or vertical orientation, scroll through them, and attach click events that other widgets can listen to
                            • +
                            • dojox.image.SlideShow - a widget that displays one image at a time, and can run a slideshow, changing the images every ‘x’ seconds.
                            • +
                            • dojox.image.Gallery - A wrapper around the ThumbnailPicker, and SlideShow widgets.
                            • + +
                            +

                            Both the ThumbnailPicker and Slideshow widgets can also be used on their own, and have no dependencies on each other.
                            +

                            +

                            Dojo Data Is Too Cool for School

                            +

                            One of the coolest features of all of these widgets is that they all feed off image data provided by the dojo.data API. What this basically means is that each widget can display images from any source, with no modification whatsoever. You simply pass it a Dojo data store, and is shows the pictures. Some of the data stores currently in the Dojo toolkit include:

                            +
                              +
                            • dojo.data.ItemFileReadStore - pull in simple JSON data in an array. You could use this if you simply have a directory of images on your own web server you would like to display
                            • +
                            • dojox.data.FlickrRestStore (demo) - query the Flickr photo sharing website for images. This is all done on the browser, with no need for any server-side redirects. This is another of my additions to the Dojo toolkit - I love Flickr, feel free to check out my photo stream here. I previously wrote another blog post on this data store here.
                            • + +
                            • dojox.data.PicasaStore (demo) - query Google’s Picasa image sharing website for images. As with the Flickr data store, this is done on the browser, with no need for server side support.
                            • +
                            +

                            and many more….. You can also write your own data store if you so desire, but the ones included in the toolkit should cover almost everything you might need.

                            +

                            Gimme, Gimme, Gimme!

                            +

                            So, how can I get this, you ask! Well, you can:

                            + +

                            Update: Dojo 1.0 is now released. Get it at http://www.dojotoolkit.org/downloads
                            +As always, any and all feedback is welcome. Also, a big thanks to Peter Higgins, owner of the dojox.image project, and Jared Jurkiewicz, owner of the dojo.data project, for all their helpful ideas, and for reviewing/committing my code to the Dojo project.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 46 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Dojo Grid has landed]]> + + http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/ + 2007-10-14T21:46:03Z + 2007-10-05T13:23:17Z + +

                            The previously announced Dojo Grid has landed in source control, and is in the nightly builds. It has all sorts of fancy functionality, like support for lazy loading huge data sets, individual styling of rows and columns, inline editing etc.

                            + +

                            Check it out at http://archive.dojotoolkit.org/nightly/checkout/dojox/grid/tests/

                            +

                            Very cool stuff!

                            +

                            Update: The Sitepen guys have recently blogged about the grid at http://www.sitepen.com/blog/2007/10/13/dojo-grid-update/

                            +

                            Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 0 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[A TortoiseSVN replacement for Ubuntu]]> + + http://shaneosullivan.wordpress.com/2007/10/04/a-tortoisesvn-replacement-for-ubuntu/ + 2007-10-04T15:50:50Z + 2007-10-04T15:50:50Z + +

                            I work on a number of open source projects, and many of them use the Subversion version control system to manage their code. Before my switch from Windows XP to Ubuntu Linux (which I am still ecstatically happy with btw), I became a big fan of TortoiseSVN, an extremely useful Subversion client that integrates itself directly into Windows Explorer.

                            + +

                            TortoiseSVN is simple to use, very intuitive, and does everything I need from it. You simply right click on a folder you want to store your checked out files in, give it the URL of the Subversion server, and it checks out the code, updates it, checks it back in (if you have permission), performs file diffs ….. basically everything you need to do is integrated right in with your file browser.

                            +

                            So, I miss this in Ubuntu, as TortoiseSVN is Windows only. However, I recently found a replacement, which integrates nicely with Nautilus, the Ubuntu file browser. While it is not as slick as TortoiseSVN, it works in a very similar way. You right click on a folder, and have a selection of SVN operations you can perform.

                            +

                            See http://marius.scurtescu.com/2005/08/24/nautilus_scripts_for_subversion for details.

                            +

                            Nautilus Subversion Menu

                            +

                            Nautilus Subversion Dialog

                            +

                            One thing that is missing from this is the display of icons in the file browser (Nautilus) to inform you of the state of a file - checked out, modified, not added to source control etc. Another person has developed a solution to this, which unfortunately I have not, yet, been able to get working, but perhaps you will have more luck.

                            + +

                            See http://www.kryogenix.org/days/2006/09/12/extremely-noddy-tortoisesvn-for-the-gnome-desktop for details on this.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + +
                            ]]> + + + 3 + + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Querying Flickr with Dojo!]]> + + http://shaneosullivan.wordpress.com/2007/09/22/querying-flickr-with-dojo/ + 2007-09-22T18:26:51Z + 2007-09-22T16:10:05Z + +

                            I’ve recently submitted a new data store for the Dojo Ajax Toolkit that makes it very simple to query Flickr for your and other peoples images. For those not familiar with Flickr, it is a photo sharing website, one of the most popular on the net. However, what makes it quite special is the comprehensive public APIs that it exposes.

                            + +

                            While these APIs are extremely useful, however, they are also very complex, with a steep learning curve before you can even get started. In steps Dojo and their new Data API specification, whose stated aim is to have a single unified interface to all data sources, so that users of a data store won’t have to care if they’re reading from a database, from a XML or JSON file, or from some remote service like Flickr.

                            +

                            So, long story short, I’ve written an implementation of the Dojo Data APIs to query data from Flickr. It is part of the DojoX project, and is called dojox.data.FlickrRestStore. It provides quite a few methods of querying for photos:

                            +
                              +
                            • By one or more tags, matchine any or all of them
                            • +
                            • By user id
                            • + +
                            • By set id
                            • +
                            • Full text search
                            • +
                            • Sorting on date taken, date published or ‘interestingness’
                            • +
                            +

                            FlickrRestStore also performs caching of image data, so if you request the data twice it won’t make a second remote request.

                            +

                            The store is also designed to be accessed by multiple clients simultaneously. If two clients request the same data, only one request is made, with both clients being notified of the identical results.

                            +

                            Examples

                            + +

                            I’ve put a fairly comprehensive set of examples in the Dojo book at http://dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo
                            +/using-dojo-data/available-stores/flickr-rest-s#examples
                            .

                            +

                            You can see a Demo of it running at http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/data/demos/demo_FlickrRestStore.html .

                            +

                            The unit tests cover quite a few cases also, and you can see them at http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/data/tests/stores/FlickrRestStore.js

                            +

                            To get the code, you can:

                            + + +

                            Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 3 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Specifying the callback function with the Flickr JSON APIs]]> + + http://shaneosullivan.wordpress.com/2007/09/13/specifying-the-callback-function-with-the-flickr-json-apis/ + 2007-09-13T09:54:53Z + 2007-09-13T09:31:30Z + +

                            Flickr is a photo sharing website that has a very flexible set of APIs that other applications and websites can use to access the photos it stores. This post shows you how to specify a callback function that Flickr can call to pass your web application information on photos it stores.

                            + +

                            Quite a while ago I looked into the Flickr APIs for a website I was writing. Looking at the service that returns photo data in JSON (Javascript Object Notation), I noticed that it did so by calling a predefined function, jsonFlickrApi, passing in the data to that function. This seemed to be an obvious weak spot, since if more than one widget on a page were accessing the Flickr REST services, they would clash with each other, possibly receiving each others data. Obviously not a good thing.

                            +

                            Cut to today. I’ve been working on a JavaScript data store that operates against the Flickr REST services for the Dojo Ajax Toolkit, and had another look at the Flickr APIs. Now, whether I missed it before (doubtful, as I looked specifically for it), or the fine Flickr folk have listened to complaints (very likely), but there is now a parameter that can be passed to the Flickr API that specifies the callback function to use when the data is retrieved from Flickr.

                            +

                            All you have to do is pass a parameter jsoncallback to Flickr, with the name of the function you want to be called with the data, and thats it.

                            + +

                            E.g. if I had a function:

                            +

                            function myCallbackFunction(data) {

                            +

                            alert(”I received ” + data.photos.photo.length +” photos”);

                            +

                            }

                            +

                            I could then specify a <script> element in my HTML page to retrieve the data in a cross site manner (since you can’t make cross site XmlHttpRequest calls), like so:

                            + +

                            <SCRIPT type=”text/javascript” src=”http://www.flickr.com/services/rest/?format=json&jsoncallback=myCallbackFunction
                            +&method=flickr.people.getPublicPhotos
                            +&api_key=8c6803164dbc395fb7131c9d54843627
                            +&user_id=44153025%40N00&per_page=1″>

                            + +

                            </SCRIPT>

                            +

                            Note the jsoncallback parameter in the src attribute. This results in JavaScript similar to:

                            +

                            myCallbackFunction({”photos”:{”page”:1, “pages”:489, “perpage”:1, “total”:”489″, “photo”:[{”id”:”1352049918″, “owner”:”44153025@N00″, “secret”:”5636009306″, “server”:”1111″, “farm”:2, “title”:”The Liffey Panorama”, “ispublic”:1, “isfriend”:0, “isfamily”:0}]}, “stat”:”ok”});

                            + +

                            being called.

                            +

                            Thanks Flickr! Nice to see them listening, and continually improving. This will make web applications built on Flickr much more robust, without the need of ridiculous hackery to get around unnecessarily difficult APIs. See http://www.flickr.com/services/api/response.json.html for the offical info on JSON responses.

                            +

                            Keep an eye out for my dojox.data.FlickrRestStore being release some day soon!!
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 0 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Image Gallery, Slideshow, and Flickr data source for Dojo 0.9]]> + + http://shaneosullivan.wordpress.com/2007/09/04/image-gallery-slideshow-and-flickr-data-source-for-dojo-09/ + 2007-09-05T08:32:22Z + 2007-09-04T23:32:51Z + +

                            In a previous post (see here) I spoke about how I’d written an Image Gallery widget that worked with Dojo Ajax Toolkit version 0.4.2 and 0.4.3. I contacted the good folks at Dojo about updating it for the latest release, 0.9, and adding it to the toolkit.

                            + +

                            They were very receptive to the idea, with a few suggestions. Firstly, rather than having its own method of storing information, it should run off the dojo.data API, and secondly, it should go into the newly created dojox.image project.

                            +

                            Both of these suggestions were perfectly reasonable, so, cut to a few weeks later and I’ve finished my first pass at converting over the code from 0.4.3 to 0.9. As the Dojo APIs have changed drastically recently, this was no simple matter, but thats the subject of another blog post.

                            +

                            The code is not finished (or even checked in) yet, but you can see some examples of it running from test pages. There are two separate widgets:

                            +
                              +
                            • dojox.image.SlideShow - a simple widget that runs a slide show of images, with urls loaded from a dojo.data store.
                            • +
                            • dojox.image.ImageGallery - this wraps the SlideShow widget, adding thumbnail views. This is also loaded from a dojo.data store.
                            • +
                            +

                            Finally, I’ve implemented a dojo.data store that reads from the Flickr REST APIs, to pull down lists of photos. This store is more complex than the existing Flickr store, as it does caching of results, as well as going against a much more flexible API, meaning that expanding its capabilities later is possible.

                            + +

                            Whether or not this goes into dojox or not is still undecided. However, you can see the widgets running using this data store.

                            +

                            See the test files at http://www.skynet.ie/~sos/js2/dojox/image/tests for examples of this working.

                            +

                            Note that this is NOT the final code. It may still be buggy, may look different in the future (it’s pretty basic now), and the code will be cleaned up. However, if you have any suggestions, please feel free to leave comments on this post.

                            +

                            Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 1 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Dojo event performance tip]]> + + http://shaneosullivan.wordpress.com/2007/08/23/dojo-event-performance-tip/ + 2007-08-23T12:38:36Z + 2007-08-23T12:29:08Z + +

                            When working with the Dojo Ajax Toolkit and using it’s dojo.event package to listen to DOM and custom events, the two most common approaches are:

                            + +
                              +
                            1. Listen for an event (or function call) to be triggered on an object, and when it is to run a custom function, e.g.
                              + var alertFn = function() {alert(”widget is showing”);};
                              +dojo.event.connect(myWidget, “onShow”, alertFn);
                            2. +

                              This basically says that when the “onShow” function is called on some widget, called myWidget, run a function that does a simple alert. Of course you can do whatever you like inside this function.

                              + +
                            3. Listen for an event (or function call) to be triggered on an object, and when it is to run a custom function defined in the scope of an object, e.g.
                              + var myObj = {
                              +alertFn: function() {alert(”widget is showing”);}
                              +};
                              +dojo.event.connect(myWidget, “onShow”,myObj, “alertFn”);

                              +

                              This is saying that I have an object called “myObj“, which has a function called “alertFn“, and when the “onShow” method on “myWidget” is called, call the “alertFn” function on “myObj“.

                            4. + +
                            +

                            I’ve found that when working with Dojo version 0.4.2 and 0.4.3, using the second approach is far far quicker. It turns out that internally, if you simply pass an anonymous function to Dojo, it will add that function to an internal structure and do a brute force search on that internal structure to make sure that this function is unique. This can result in a very significant performance hit - I’ve seen it take up over 50% of the startup time of a page on one of our more JavaScript heavy applications.

                            +

                            So, the conclusion is that if you are dojo.event.connect, which is one of the most useful functions in the toolkit, make sure to use four arguments to the function (approach #2 above), rather than just three (approach #1 above). If necessary, place a simple wrapper around the function as I have shown.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 0 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Dojo 0.9 released]]> + + http://shaneosullivan.wordpress.com/2007/08/22/dojo-09-released/ + 2007-09-04T15:23:50Z + 2007-08-22T10:24:51Z + +

                            The latest version of the Dojo Ajax Toolkit has just been released into the wild. Version 0.9 is a very streamlined progression of the toolkit, with many of the less essential features pushed out to another project, DojoX, and the Dojo widgets given their own project, Dijit.

                            + +

                            Another big change is the the main JavaScript file in Dojo, dojo.js, is no longer customisable. It now contains the most common features required by most web developers, and nothing more. As a result, it is far smaller than previous incarnations, down to ~24k when gzipped.

                            +

                            Some resources:

                            +

                            James Burke has written up a very informative post about what exactly is baked into the default build of dojo.js, which you can find at http://dojotoolkit.org/2007/08/22/dissecting-0-9s-dojo-js . Well worth a read.

                            +

                            Bill Keese wrote up a guided tour of 0.9 at http://dojotoolkit.org/2007/08/20/dijit-0-9-guided-tour.

                            +

                            The Dojo book for version 0.9 can be found at http://dojotoolkit.org/book/dojo-book-0-9-0. It’s almost finished (almost!) as of today, Aug 22 2007.

                            + +

                            The Ajaxian post on Dojo 0.9 can be read at http://ajaxian.com/archives/dojo-09-final-version-released.

                            +

                            Download the toolkit from http://build.dojotoolkit.org/0.9.0. This page gives some information on how you can use Dojo from AOL’s hosting servers, so you never have to download it at all.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 2 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Dojo theme browser shows off Dijit widgets]]> + + http://shaneosullivan.wordpress.com/2007/08/17/dojo-theme-browser-shows-off-dijit-widgets/ + 2007-11-05T13:45:45Z + 2007-08-17T12:18:57Z + +

                            The Dojo/Dijit (Dojo’s widget project) toolkit has created a page where you can view many of their widgets using the four CSS themes written so far for Dojo. This is cool for a couple of reasons.

                            + +

                            Firstly, it showcases the excellent work the Dijit developers have put into new themeing skins. There are four themes completed so far, and changing the look of Dojo is now as simple as including a different CSS file on your web page. All Dijit widgets now run off a single CSS file, rather than each having their own CSS file.

                            +

                            Secondly, it shows the usage of many of Dijit’s widgets (say that five times in a row! :-) ). Many of the demos from the 0.4.* days are gone now, and this is about as comprehensive a demo of Dojo’s widgets as you’re likely to see for a while. And yes, they are very nice indeed.

                            +

                            Go to http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html to see the default theme (tundra) in use. Click on the “Alternate Themes” tab at the bottom of the page to switch themes to one of the alternate themes.

                            + +

                            Enjoy!

                            +

                            Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 2 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Why is my web page slow? YSlow for Firebug can tell you.]]> + + http://shaneosullivan.wordpress.com/2007/07/25/why-is-my-web-page-slow-yslow-for-firebug-can-tell-you/ + 2007-07-26T08:28:03Z + 2007-07-25T15:08:30Z + +

                            Yahoo have released a very useful extension for Firebug, which is itself an extension for Firefox, which can be used to analyze a web page’s performance. The extension, called YSlow, appears as a separate pane in Firebug, and gives you a whole load of statistics about your page.

                            + +

                            However, in addition to the bare numbers, it also gives your page a ranking, from zero to a hundred, and offers tips in plain English on you can improve the performance of your page.

                            +

                            All in all, a very handy little addition to a web developer’s toolkit.

                            +

                            One caveat is that it is of course not perfect - I tried to use it on Gmail, and it gave the site a 98% mark (practically impossible to achieve in reality), as the initial page of the Gmail application simply loads a single JavaScript page and not much else. Therefore, YSlow seems to only analyze content sent down the wire to browser upon page load, and ignores generated content. However, this does not take away from the fact that it is perfectly suitable for the vast majority of websites out there.

                            +

                            More information available here, or read Ajaxian’s post here.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 1 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Flickr and Dojo Image Gallery]]> + + http://shaneosullivan.wordpress.com/2007/07/03/flickr-and-dojo-image-gallery/ + 2007-07-19T10:44:19Z + 2007-07-03T15:53:33Z + +

                            I have created an Image Gallery widget built on Dojo 0.4.3 that integrates nicely with Flickr. The widget it written entirely using JavaScript and CSS as a standalone Dojo widget, and is released under the same open source license as Dojo, the Academic Free License.

                            + +

                            For more information, including the code and examples, see http://www.skynet.ie/~sos/ajax/imagegallery.php.

                            +

                            Some of the features of the widget include:

                            +
                              +
                            • Pages of thumbnails.
                            • +
                            • Intelligent pre-loading of images so the images you are looking at are loaded first.
                            • +
                            • Fade effects for transitioning of images
                            • +
                            • Populated using JSON data - any JSON data, not just Flickr.
                            • +
                            • Flickr integration - remotely load your Flickr images.
                            • + +
                            • Paging through a Flickr collection.
                            • +
                            • Slideshow
                            • +
                            +

                            The widget can be instantiated from both HTML markup and programmatically in JavaScript.

                            +

                            To view your own Flickr pictures on the widget, without installing it on your own site, go to http://www.skynet.ie/~sos/ajax/yourpics.php .

                            +

                            There is a discussion thread in the Flickr API group at http://www.flickr.com/groups/api/discuss/72157600624623643.

                            +

                            So, why create this widget? Well, firstly I wanted a JavaScript image gallery that would list thumbnails and allow me to page through Flickr photos. Also, a slide show would have been nice. I was surprised to discover that I couldn’t find one that I liked in the twenty or so minutes I spent looking for one. I found a handy Flash based one, but I wanted a HTML and JavaScript only widget. So I grabbed Dojo 0.4.3 (my JavaScript library of choice right now) and wrote one.

                            + +

                            Here is a screen shot:

                            +


                            +Screenshot

                            +

                            The widget has all the features that I personally require at the moment, but will probably evolve as I think of new things to add. If you have any suggestions/bug reports, please comment on this post.

                            +

                            Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 7 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Is Dojo being ignored by developers?]]> + + http://shaneosullivan.wordpress.com/2007/06/19/is-dojo-being-ignored-by-developers/ + 2007-06-26T10:18:09Z + 2007-06-19T10:36:49Z + +

                            The two main areas of interest for me over the last year or two, blog-wise that is, have been the Dojo Ajax toolkit, one of the more popular open source JavaScript toolkits, and Ubuntu Linux, the very popular operating system that is seen by many as the best chance Linux has of succeeding on the desktop.

                            + +

                            Due to the fact that my blog is hosted on Wordpress.com, I am provided with very detailed statistics on which blog posts are more popular, what days they are accessed on etc. Looking at these, a very definite trend has become apparent

                            +

                            While the number of hits received by the Ubuntu blogs remains more or less steady, hits on Dojo blog posts falls dramatically on the weekend.

                            +

                            While this is not an exact measurement by any means, it points to a worrying possibility. People are obviously working with Ubuntu on their spare time, installing it, upgrading, adding applications and window managers etc, and need help doing this. They are personally interested in Ubuntu, not just professionally. This is one of the main reasons for Ubuntu’s success - people are excited and motivated by it. They want to work and play with it on their own time.

                            + +

                            This does not seem to be the case for Dojo.

                            +

                            Dojo has the backing of many large and small companies, including two I have worked for, my previous employer IBM, and my current employer Curam. Both of these are attracted to Dojo for a number of reasons, chief among them being it’s good design and wide range of features. The very large size of the toolkit is not a problem for them (and corporations in general) because it will be included in websites that employees will use to do their everyday work tasks (e.g. using a corporate installation of IBM WebSphere Portal), so the JavaScript is cached and the performance hit is avoided.

                            +

                            However, for hobbyists, this is not the case. A person might only visit a single page on their website, and a ~200KB overhead for perhaps something simple like a collapsible menu and some fading effects is simply not feasible. I’ve experienced this recently when writing a simple website for myself - all I wanted was some fading/sliding effects, but the huge overhead just wasn’t worth it. And I am a very big supporter of Dojo (I’ve contributed code even - here and here), and use it every day at work.

                            + +

                            The Dojo team are working hard on the 0.9 release, which is addressing many of these issues, bringing the base size down to a more manageable size (at time of writing dojo.js is down to 68KB). I look forward to the day when my site statistics change, when Dojo can stand on the shoulders of many thousands of enthusiastic hackers rather than being held up by a few big corporations. I really do.

                            +

                            However, this does not seem to be the case today. Version 0.9 has a lot of work to do.
                            +Share this post: digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 5 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Dojo Charting example to show website statistics]]> + + http://shaneosullivan.wordpress.com/2007/06/15/dojo-charting-example-to-show-website-statistics-2/ + 2007-06-15T12:38:24Z + 2007-06-15T12:35:35Z + +

                            I’ve created an example usage of the Dojo Charting engine, which you can find at http://www.skynet.ie/~sos/pageStats.php. View the source to see how it works.
                            +It’s a modified version of the unit test available with the Dojo toolkit, but used in a specific scenario - in this case, to graph the page impressions for my personal website . The JSON data on the page is dynamically generated by PHP, however all other processing is done in JavaScript.

                            + +

                            You can filter the data to show info on any combination of pages, and also use a number of different chart types.

                            +

                            The code is well documented, so should be easy to follow.
                            +Some other good examples of using the Dojo Charting engine can be found here and here.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 4 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[GreaseMonkey script to add Digg-like links to posts]]> + + http://shaneosullivan.wordpress.com/2007/05/22/greasemonkey-script-to-add-digg-like-links-to-posts/ + 2007-05-23T14:56:07Z + 2007-05-22T16:57:02Z + +

                            I decided today that I wanted to put links at the bottom of each of my blog posts that would allow people to perform actions on the post, e.g:

                            + + +

                            My blog is on Wordpress.com which doesn’t seem to have a plugin that will allow me to do this. So, I got off my ass and wrote a GreaseMonkey Firefox script that’ll do it for me. You can download this script by going to http://userscripts.org/scripts/show/9421 and clicking the “Install This Script” button.

                            + +

                            The links that are inserted are at the bottom of this post. The script is open source (GPL license), so take it, play with it, whatever. If you find any bugs, please let me know by commenting on this post.
                            +Share this post:digg it|kick it|Email it|bookmark it|reddit|liveIt

                            + + ]]>
                            + + + 8 +
                            + + + Shane O'Sullivan + http://shaneosullivan.wordpress.com/ + + <![CDATA[Article on the square pegs and round holes of desktop and web applications]]> + + http://shaneosullivan.wordpress.com/2007/05/22/article-on-the-square-pegs-and-round-holes-of-desktop-and-web-applications/ + 2007-05-22T08:57:59Z + 2007-05-22T08:49:00Z + +

                            Bill Higgins of IBM has written a very well thought out article of why web applications should look and act like web applications, and not the desktop variety. Well worth a read - http://billhiggins.us/weblog/2007/05/17/the-uncanny-valley-of-user-interface-design

                            + + ]]>
                            + + + 0 +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books.html b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books.html new file mode 100644 index 0000000..8535cec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books.html @@ -0,0 +1,118 @@ + + + Books.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            isbntitleauthor
                            1Title of 1Author of 1
                            2Title of 2Author of 2
                            3Title of 3Author of 3
                            4Title of 4Author of 4
                            5Title of 5Author of 5
                            6Title of 6Author of 6
                            7Title of 7Author of 7
                            8Title of 8Author of 8
                            9Title of 9Author of 9
                            10Title of 10Author of 10
                            11Title of 11Author of 11
                            12Title of 12Author of 12
                            13Title of 13Author of 13
                            14Title of 14Author of 14
                            15Title of 15Author of 15
                            16Title of 16Author of 16
                            17Title of 17Author of 17
                            18Title of 18Author of 18
                            19Title of 19Author of 19
                            20Title of 20Author of 20
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books.xml new file mode 100644 index 0000000..4c330e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books.xml @@ -0,0 +1,103 @@ + + + + 1 + Title of 1 + Author of 1 + + + 2 + Title of 2 + Author of 2 + + + 3 + Title of 3 + Author of 3 + + + 4 + Title of 4 + Author of 4 + + + 5 + Title of 5 + Author of 5 + + + 6 + Title of 6 + Author of 6 + + + 7 + Title of 7 + Author of 7 + + + 8 + Title of 8 + Author of 8 + + + 9 + Title of 9 + Author of 9 + + + 10 + Title of 10 + Author of 10 + + + 11 + Title of 11 + Author of 11 + + + 12 + Title of 12 + Author of 12 + + + 13 + Title of 13 + Author of 13 + + + 14 + Title of 14 + Author of 14 + + + 15 + Title of 15 + Author of 15 + + + 16 + Title of 16 + Author of 16 + + + 17 + Title of 17 + Author of 17 + + + 18 + Title of 18 + Author of 18 + + + 19 + Title of 19 + Author of 19 + + + 20 + Title of 20 + Author of 20 + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books2.html b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books2.html new file mode 100644 index 0000000..c0b3550 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books2.html @@ -0,0 +1,43 @@ + + + Books2.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            isbntitleauthor
                            A9B57CTitle of 1Author of 1
                            A9B57FTitle of 2Author of 2
                            A9B577Title of 3Author of 3
                            A9B574Title of 4Author of 4
                            A9B5CCTitle of 5Author of 5
                            + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books2.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books2.xml new file mode 100644 index 0000000..ca0f6ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books2.xml @@ -0,0 +1,32 @@ + + + + A9B57C + Title of 1 + Author of 1 + + + A9B57F + Title of 2 + Author of 2 + + + A9B577 + Title of 3 + Author of 3 + + + A9B574 + Title of 4 + Author of 4 + + + A9B5CC + Title of 5 + Author of 5 + Second Author of 5 + Third Author of 5 + Fourth Author of 5 + Fifth Author of 5 + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3.html b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3.html new file mode 100644 index 0000000..d28f6cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3.html @@ -0,0 +1,14 @@ + + + Books3.html + + +
                              +
                            • A9B57C - Title of 1 - Author of 1
                            • +
                            • A9B57F - Title of 2 - Author of 2
                            • +
                            • A9B577 - Title of 3 - Author of 3
                            • +
                            • A9B574 - Title of 4 - Author of 4
                            • +
                            • A9B5CC - Title of 5 - Author of 5
                            • +
                            + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3.xml new file mode 100644 index 0000000..c44b4c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3.xml @@ -0,0 +1,31 @@ + + + + Category 1 + + 1 + Title of 1 + Author of 1 + + + 2 + Title of 2 + Author of 2 + + + 3 + Title of 3 + Author of 3 + + + 4 + Title of 4 + Author of 4 + + + 5 + Title of 5 + Author of 5 + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3Whitespace.html b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3Whitespace.html new file mode 100755 index 0000000..4a42df9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books3Whitespace.html @@ -0,0 +1,27 @@ + + + + Books3.html + + + +
                              +
                            • + A9B57C - Title of 1 - Author of 1 +
                            • +
                            • + A9B57F - Title of 2 - Author of 2 +
                            • +
                            • + A9B577 - Title of 3 - Author of 3 +
                            • +
                            • + A9B574 - Title of 4 - Author of 4 +
                            • +
                            • + A9B5CC - Title of 5 - Author of 5 +
                            • +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/booksWhitespace.html b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/booksWhitespace.html new file mode 100755 index 0000000..25b3ac3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/booksWhitespace.html @@ -0,0 +1,241 @@ + + Books.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            + isbn + + title + + author +
                            + 1 + + Title of 1 + + Author of 1 +
                            + 2 + + Title of 2 + + Author of 2 +
                            + 3 + + Title of 3 + + Author of 3 +
                            + 4 + + Title of 4 + + Author of 4 +
                            + 5 + + Title of 5 + + Author of 5 +
                            + 6 + + Title of 6 + + Author of 6 +
                            + 7 + + Title of 7 + + Author of 7 +
                            + 8 + + Title of 8 + + Author of 8 +
                            + 9 + + Title of 9 + + Author of 9 +
                            + 10 + + Title of 10 + + Author of 10 +
                            + 11 + + Title of 11 + + Author of 11 +
                            + 12 + + Title of 12 + + Author of 12 +
                            + 13 + + Title of 13 + + Author of 13 +
                            + 14 + + Title of 14 + + Author of 14 +
                            + 15 + + Title of 15 + + Author of 15 +
                            + 16 + + Title of 16 + + Author of 16 +
                            + 17 + + Title of 17 + + Author of 17 +
                            + 18 + + Title of 18 + + Author of 18 +
                            + 19 + + Title of 19 + + Author of 19 +
                            + 20 + + Title of 20 + + Author of 20 +
                            + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books_isbnAttr.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books_isbnAttr.xml new file mode 100644 index 0000000..b9f3d27 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books_isbnAttr.xml @@ -0,0 +1,23 @@ + + + + Title of 1 + Author of 1 + + + Title of 2 + Author of 2 + + + Title of 3 + Author of 3 + + + Title of 4 + Author of 4 + + + Title of 5 + Author of 5 + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books_isbnAttr2.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books_isbnAttr2.xml new file mode 100644 index 0000000..a6ce005 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/books_isbnAttr2.xml @@ -0,0 +1,23 @@ + + + + Title of 1 + Author of 1 + + + Title of 2 + Author of 2 + + + Title of 3 + Author of 3 + + + Title of 4 + Author of 4 + + + Title of 5 + Author of 5 + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/cdata_test.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/cdata_test.xml new file mode 100755 index 0000000..a9cba1f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/cdata_test.xml @@ -0,0 +1,12 @@ + + + {68d3c190-4b83-11dd-c204-000000000001}17 + <![CDATA[ <b>First</b> 3]]> + Problem + + + {78d3c190-4b83-11dd-c204-000000000000}17 + <![CDATA[ <b>Second</b> 3]]> + Problem + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/cdf1.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/cdf1.xml new file mode 100755 index 0000000..7fa6e36 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/cdf1.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/countries.json b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/countries.json new file mode 100755 index 0000000..9946d25 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/countries.json @@ -0,0 +1,12 @@ +{} && { "identifier": "abbr", + "label": "name", + "items": [ + { "abbr":"ec", "name":"Ecuador", "capital":"Quito" }, + { "abbr":"eg", "name":"Egypt", "capital":"Cairo" }, + { "abbr":"sv", "name":"El Salvador", "capital":"San Salvador" }, + { "abbr":"gq", "name":"Equatorial Guinea", "capital":"Malabo" }, + { "abbr":"er", "name":"Eritrea", "capital":"Asmara" }, + { "abbr":"ee", "name":"Estonia", "capital":"Tallinn" }, + { "abbr":"et", "name":"Ethiopia", "capital":"Addis Ababa" } +]} + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/countries_withNull.json b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/countries_withNull.json new file mode 100755 index 0000000..a0a7a3f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/countries_withNull.json @@ -0,0 +1,10 @@ +{ identifier: 'abbr', + items: [ + { abbr:'ec', name:null, capital:'Quito' }, + { abbr:'eg', name:null, capital:'Cairo' }, + { abbr:'sv', name:'El Salvador', capital:'San Salvador' }, + { abbr:'gq', name:'Equatorial Guinea', capital:'Malabo' }, + { abbr:'er', name:'Eritrea', capital:'Asmara' }, + { abbr:'ee', name:null, capital:'Tallinn' }, + { abbr:'et', name:'Ethiopia', capital:'Addis Ababa' } +]} diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/empty.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/empty.csv new file mode 100644 index 0000000..8dcdaee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/empty.csv @@ -0,0 +1 @@ +Title, Year, Producer diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/explore_ItemFileWriteStore.html b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/explore_ItemFileWriteStore.html new file mode 100644 index 0000000..35c61f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/explore_ItemFileWriteStore.html @@ -0,0 +1,83 @@ + + + + Dojox Store Explorer + + + + + +

                            ItemFileWriteStore Explorer

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/filestore_dojoxdatageo.php b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/filestore_dojoxdatageo.php new file mode 100755 index 0000000..8a8cbdc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/filestore_dojoxdatageo.php @@ -0,0 +1,178 @@ +deep; + } + if (property_exists($queryOptions, "ignoreCase")) { + $ignoreCase = $queryOptions->ignoreCase; + } + } + + //Extract non-dojo.data spec config options. + $expand = false; + $dirsOnly = false; + $showHiddenFiles = false; + $options = array(); + if (array_key_exists("options", $_GET)) { + $options = $_GET['options']; + $options = str_replace("\\\"", "\"", $options); + $options = json_decode($options); + if (array_search("expand", $options) > -1) { + $expand = true; + } + if (array_search("dirsOnly", $options) > -1) { + $dirsOnly = true; + } + if (array_search("showHiddenFiles", $options) > -1) { + $showHiddenFiles = true; + } + } + + //See if a specific file was requested, or if it is just a query for files. + $path = false; + if (array_key_exists("path", $_GET)) { + $path = $_GET['path']; + } + + if (!is_string($path)) { + + $files = array(); + + //Handle query for files. Must try to generate patterns over the query + //attributes. + $patterns = array(); + if (is_array($query)) { + //Generate a series of RegExp patterns as necessary. + $keys = array_keys($query); + $total = count($keys); + if ($total > 0) { + for ($i = 0; $i < $total; $i++) { + $key = $keys[$i]; + $pattern = $query[$key]; + if (is_string($pattern)) { + $patterns[$key] = patternToRegExp($pattern); + } + } + $files = matchFiles($query, $patterns, $ignoreCase, ".", $rootDir, $deep, $dirsOnly, $expand, $showHiddenFiles); + } else { + $files = getAllFiles(".",$rootDir,$deep,$dirsOnly,$expand,$showHiddenFiles); + } + }else{ + $files = getAllFiles(".",$rootDir,$deep,$dirsOnly,$expand,$showHiddenFiles); + } + + $total = count($files); + + //Handle the sorting and paging. + $sortSpec = false; + if (array_key_exists("sort", $_GET)) { + $sortSpec = $_GET['sort']; + $sortSpec = str_replace("\\\"", "\"", $sortSpec); + $sortSpec = json_decode($sortSpec); + } + + if ($sortSpec != null) { + $comparator = createComparator($sortSpec); + usort($files,array($comparator, "compare")); + } + + //Page, if necessary. + if (array_key_exists("start", $_GET)) { + $start = $_GET['start']; + if (!is_numeric($start)) { + $start = 0; + } + $files = array_slice($files, $start); + } + if (array_key_exists("count", $_GET)) { + $count = $_GET['count']; + if (!is_numeric($count)) { + $count = $total; + } + $files = array_slice($files, 0, $count); + } + + $result = new stdClass(); + $result->total = $total; + $result->items = $files; + header("Content-Type", "text/json"); + print("/* ".json_encode($result)." */"); + } else { + //Query of a specific file (useful for fetchByIdentity and loadItem) + + //Make sure the path isn't trying to walk out of the rooted directory + //As defined by $rootDir in the top of the php script. + $rootPath = realPath($rootDir); + $fullPath = realPath($rootPath."/".$path); + + if ($fullPath !== false) { + if (strpos($fullPath,$rootPath) === 0) { + //Root the path into the tree cleaner. + if (strlen($fullPath) == strlen($rootPath)) { + $path = "."; + } else { + //Fix the path to relative of root and put back into UNIX style (even if windows). + $path = substr($fullPath,(strlen($rootPath) + 1),strlen($fullPath)); + $path = str_replace("\\", "/", $path); + } + + if (file_exists($fullPath)) { + $arr = explode("/", $path); + $size = count($arr); + + if ($size > 0) { + $fName = $arr[$size - 1]; + if ($size == 1) { + print("Setting path to: ."); + $path = "."; + } else { + $path = $arr[0]; + } + for ($i = 1; $i < ($size - 1); $i++) { + $path = $path."/".$arr[$i]; + } + $file = generateFileObj($fName, $path, $rootDir, $expand,$showHiddenFiles); + header("Content-Type", "text/json"); + print("/* ".json_encode($file)." */"); + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } else { + header("HTTP/1.0 403 Forbidden"); + header("Status: 403 Forbidden"); + print("Cannot access file: [".htmlentities($path)."]. It is outside of the root of the file service."); + } + } else { + header("HTTP/1.0 404 Not Found"); + header("Status: 404 Not Found"); + print("Cannot access file: [".htmlentities($path)."]"); + } + } +?> diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/filestore_funcs.php b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/filestore_funcs.php new file mode 100755 index 0000000..5d4408b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/filestore_funcs.php @@ -0,0 +1,366 @@ + /^ca.*$/ + * *ca* -> /^.*ca.*$/ + * *c\*a* -> /^.*c\*a.*$/ + * *c\*a?* -> /^.*c\*a..*$/ + * and so on. + * + * @param pattern: string + * A simple matching pattern to convert that follows basic rules: + * * Means match anything, so ca* means match anything starting with ca + * ? Means match single character. So, b?b will match to bob and bab, and so on. + * \ is an escape character. So for example, \* means do not treat * as a match, but literal character *. + * To use a \ as a character in the string, it must be escaped. So in the pattern it should be + * represented by \\ to be treated as an ordinary \ character instead of an escape. + */ + function patternToRegExp(/*String*/$pattern){ + $rxp = "^"; + $c = ""; + $len = strlen($pattern); + for ($i = 0; $i < $len; $i++) { + $c = $pattern[$i]; + switch ($c) { + case '\\': + $rxp = $rxp.$c; + $i++; + $rxp = $rxp.$pattern[$i]; + break; + case '*': + $rxp = $rxp.".*"; break; + case '?': + $rxp = $rxp."."; break; + case '$': + case '^': + case '/': + case '+': + case '.': + case '|': + case '(': + case ')': + case '{': + case '}': + case '[': + case ']': + $rxp = $rxp."\\"; //fallthrough + default: + $rxp = $rxp.$c; + } + } + return "/(".$rxp."$)/"; + } + + /** + * Function to load all file info from a particular directory. + * + * @param $dir The dir to seach from, relative to $rootDir. + * @param $rootDir The directory where the file service is rooted, used as separate var to allow easier checking and prevention of ../ing out of the tree. + * @param $recurse Whether or not to deep scan the dir and return all subfiles, or just return the toplevel files. + * @param $dirsOnly boolean to enote to only return directory names, not filenames. + * @param $expand boolean to indicate whether or not to inflate all children files along a path/file, or leave them as stubs. + * @param $showHiddenFiles boolean to indicate to return hidden files as part of the list. + */ + function getAllfiles($dir, $rootDir, $recurse, $dirsOnly, $expand, $showHiddenFiles) { + // summary: + // A function to obtain all the files in a particular directory (file or dir) + $files = array(); + $dirHandle = opendir($rootDir."/".$dir); + if ($dirHandle) { + while($file = readdir($dirHandle)) { + if ($file) { + if ($file != ".." && $file != ".") { + $path = $dir."/".$file; + $fileObj = generateFileObj($file, $dir, $rootDir,$expand,$showHiddenFiles); + if (is_dir($rootDir."/".$path)) { + if ($recurse) { + if ($showHiddenFiles || $fileObj["name"][0] != '.') { + $subfiles = getAllfiles($path,$rootDir,$recurse,$dirsOnly,$expand,$showHiddenFiles); + $length = count($subfiles); + for ($i = 0; $i < $length; $i++) { + $files[] = $subfiles[$i]; + } + } + } + } + if (!$dirsOnly || $fileObj["directory"]) { + if ($showHiddenFiles || $fileObj["name"][0] !== '.') { + $files[] = $fileObj; + } + } + } + } + } + } + closedir($dirHandle); + return $files; + } + + /** + * Function to generate an associative map of data about a specific file. + * @param $file The name of the file this object represents. + * @param $dir The sub-path that contains the file defined by $file + * @param $rootDir The directory from which to append dir and name to get the full path to the file. + * @param $expand boolean to denote that if the file is a directory, expand all children in the children attribute + * to a a full object + * @param $showHiddenFiles boolean to denote if hidden files should be shown in-view or not. + * + * @return Associative Map. The details about the file: + * $file["name"] - Returns the shortname of the file. + * $file["parentDir"] - Returns the relative path from the service root for the parent directory containing file $file["name"] + * $file["path"] - The relative path to the file. + * $file["directory"] - Boolean indicator if the file represents a directory. + * $file["size"] - The size of the file, in bytes. + * $file["modified] - The modified date of the file in milliseconds since Jan 1st, 1970. + * $file["children"] - Children files of a directory. Empty if a standard file. + */ + function generateFileObj($file, $dir, $rootDir, $expand, $showHiddenFiles) { + // summary: + // Function to generate an object representation of a disk file. + $path = $file; + if ($dir != "." && $dir != "./") { + $path = $dir."/".$file; + } + + $fullPath = $rootDir."/".$path; + + $atts = stat($fullPath); + + $rootPath = realPath($rootDir); + $resolvedDir = realPath($rootDir."/".$dir); + $resolvedFullPath = realPath($fullPath); + + //Try to normalize down the paths so it does a consistent return. + if (strcmp($rootPath, $resolvedDir) === 0) { + $dir = "."; + } else { + $dir = substr($resolvedDir, (strlen($rootPath) + 1), strlen($resolvedDir)); + $dir = "./".str_replace("\\","/",$dir); + } + if (strcmp($rootPath, $resolvedFullPath) === 0) { + $path = "."; + } else { + $path = substr($resolvedFullPath, (strlen($rootPath) + 1), strlen($resolvedFullPath)); + $path = "./".str_replace("\\","/",$path); + } + + $fObj = array(); + $fObj["name"] = $file; + $fObj["parentDir"] = $dir; + $fObj["path"] = $path; + $fObj["directory"] = is_dir($fullPath); + $fObj["size"] = filesize($fullPath); + $fObj["modified"] = $atts[9]; + + if (is_dir($fullPath)) { + $children = array(); + $dirHandle = opendir($fullPath); + while($cFile = readdir($dirHandle)) { + if ($cFile) { + if ($cFile != ".." && $cFile != ".") { + if ($showHiddenFiles || $cFile[0] != '.') { + if (!$expand) { + $children[] = $cFile; + }else{ + $children[] = generateFileObj($cFile, $path, $rootDir, $expand, $showHiddenFiles); + } + } + } + } + } + closedir($dirHandle); + $fObj["children"] = $children; + } + return $fObj; + } + + /** + * A field comparator class, whose role it is to define which fields on an associaive map to compare on + * and provide the comparison function to do so. + */ + class FieldComparator { + var $field; + var $descending = false; + + /** + * Constructor. + * @param $f The field of the item to compare. + * @param $d Parameter denoting whether it should be ascending or descending. Default is ascending. + */ + function FieldComparator($f, $d) { + $this->field = $f; + $this->descending = $d; + } + + /** + * Function to compare file objects A and B on the field defined by $this->field. + * @param $fileA The first file to compare. + * @param #fileB The second file to compare. + */ + function compare($fileA,$fileB){ + $f = $this->field; + $a = $fileA[$f]; + $b = $fileB[$f]; + + $ret = 0; + if (is_string($a) && is_string($b)) { + $ret = strcmp($a,$b); + } else if($a > $b || $a === null){ + $ret = 1; + }else if($a < $b || $b === null){ + $ret = -1; + } + + if (property_exists($this, "descending") && $this->descending == true) { + $ret = $ret * -1; + } + + if ($ret > 0) { + $ret = 1; + } else if ($ret < 0) { + $ret = -1; + } + return $ret; //int, {-1,0,1} + } + } + + /** + * A compound comparator class, whose role it is to sequentially call a set of comparators on two objects and + * return the combined result of the comparison. + */ + class CompoundComparator { + //Comparator chain. + var $comparators = array(); + + /** + * Function to compare two objects $a and $b, using the chain of comparators. + * @param $a The first object to compare. + * @param $b The second object to compare. + * @returns -1, 0, 1. -1 if a < b, 1 if a > b, and 0 if a = b. + */ + function compare($a, $b) { + $ret = 0; + $size = count($this->comparators); + for ($i = 0; $i < $size; $i++) { + $comp = $this->comparators[$i]; + $ret = $comp->compare($a, $b); + if ($ret != 0) { + break; + } + } + return $ret; + } + + /** + * Function to add a comparator to the chain. + * @param $comp The comparator to add. + */ + function addComparator($comp){ + $this->comparators[] = $comp; + } + } + + /** + * A function to create a Comparator class with chained comparators based off the sort specification passed into the store. + * @param $sortSpec The Sort specification, which is an array of sort objects containing ( attribute: "someStr": descending: true|fase} + * @returns The constructed comparator. + */ + function createComparator($sortSpec) { + //Function to construct the class that handles chained comparisons. + $comparator = new CompoundComparator(); + $size = count($sortSpec); + for ($i = 0; $i < $size; $i++) { + $sort = $sortSpec[$i]; + $desc = false; + if(property_exists($sort, "descending")){ + $desc = $sort->descending; + } + $fileComp = new FieldComparator($sort->attribute,$desc); + $comparator->addComparator($fileComp); + } + return $comparator; + } + + /** + * Function to match a set of queries against a directory and possibly all subfiles. + * @param query The Query send in to process and test against. + * @param patterns The set of regexp patterns generated off the query. + * @param dir the directory to search in. + * @param recurse Whether or not to recurse into subdirs and test files there too. + * + * @return Array. Returns an array of all matches of the query. + */ + function matchFiles($query, $patterns, $ignoreCase, $dir, $rootDir, $recurse, $dirsOnly, $expand, $showHiddenFiles) { + $files = array(); + $fullDir = $rootDir."/".$dir; + + if ($fullDir != null && is_dir($fullDir)) { + + $dirHandle = opendir($fullDir); + while ($file = readdir($dirHandle)) { + if ($file != "." && $file != "..") { + $item = generateFileObj($file, $dir, $rootDir, $expand,$showHiddenFiles); + $keys = array_keys($patterns); + $total = count($keys); + for ($i = 0; $i < $total; $i++) { + $key = $keys[$i]; + $pattern = $query[$key]; + $matched = containsValue($item,$key,$query[$key],$patterns[$key], $ignoreCase); + if (!$matched) { + break; + } + } + if ($matched) { + if (!$dirsOnly || $item["directory"]) { + if ($showHiddenFiles || $item["name"][0] != '.') { + $files[] = $item; + } + } + } + + if (is_dir($rootDir."/".$item["path"]) && $recurse) { + if ($showHiddenFiles || $item["name"][0] != '.') { + $files = array_merge($files, matchFiles($query, $patterns, $ignoreCase, $item["path"], $rootDir, $recurse, $dirsOnly, $expand, $showHiddenFiles)); + } + } + } + } + closedir($dirHandle); + } + return $files; + } + + /** + * Function to handle comparing the value of an attribute on a file item. + * @param item The item to examine. + * @param attr The attribute of the tem to examine. + * @parma value The value to compare it to. + * @param rExp A regular Expression pattern object generated off 'value' if any. + * + * @returns boolean denoting if the value was matched or not. + */ + function containsValue($item, $attr, $value, $rExp, $ignoreCase) { + $matched = false; + $possibleValue = $item[$attr]; + if ($possibleValue === null && $value === null) { + $matched = true; + } else { + if ($rExp != null && is_string($possibleValue)) { + if ($ignoreCase) { + $matched = preg_match($rExp . 'i', $possibleValue); + } else { + $matched = preg_match($rExp, $possibleValue); + } + + } else { + if ($value != null && $possibleValue != null) { + $matched = ($value == $possibleValue); + } + } + } + return $matched; + } +// No closing PHP tag on purpose. Do not want it to print whitepace and thus not allow setting headers later. diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography.xml new file mode 100644 index 0000000..070a8c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography.xml @@ -0,0 +1,51 @@ + + + + geography.opml + 2006-11-10 + 2006-11-13 + Magellan, Ferdinand + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography2.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography2.xml new file mode 100644 index 0000000..b82c110 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography2.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography_withspeciallabel.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography_withspeciallabel.xml new file mode 100644 index 0000000..597c164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/geography_withspeciallabel.xml @@ -0,0 +1,51 @@ + + + + geography.opml + 2006-11-10 + 2006-11-13 + Magellan, Ferdinand + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies.csv new file mode 100644 index 0000000..baf71eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies.csv @@ -0,0 +1,9 @@ +Title, Year, Producer +City of God, 2002, Katia Lund +Rain,, Christine Jeffs +2001: A Space Odyssey, , Stanley Kubrick +"This is a ""fake"" movie title", 1957, Sidney Lumet +Alien, 1979 , Ridley Scott +"The Sequel to ""Dances With Wolves.""", 1982, Ridley Scott +"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward" + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies2.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies2.csv new file mode 100644 index 0000000..401bcfc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies2.csv @@ -0,0 +1,9 @@ +Title, Year, Producer +City of God, 2002, Katia Lund +Rain,"", Christine Jeffs +2001: A Space Odyssey, , Stanley Kubrick +"This is a ""fake"" movie title", 1957, Sidney Lumet +Alien, 1979 , Ridley Scott +"The Sequel to ""Dances With Wolves.""", 1982, Ridley Scott +"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward" + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies3.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies3.csv new file mode 100755 index 0000000..a7ad288 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/movies3.csv @@ -0,0 +1,11 @@ +Title, Year, Producer +"City +of God", 2002, Katia Lund +Rain,, Christine Jeffs +2001: A Space Odyssey, , Stanley Kubrick +"This is a ""fake"" movie title", 1957, Sidney Lumet +Alien, 1979 , Ridley Scott +"The Sequel to ""Dances With + Wolves.""", 1982, Ridley Scott +"Caine Mutiny, The", 1954, "Dymtryk ""the King"", Edward" + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/node1.1 b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/node1.1 new file mode 100644 index 0000000..21d1923 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/node1.1 @@ -0,0 +1,4 @@ +{ id: 'node1.1',name:'node1.1', someProperty:'somePropertyA1', children: [ + { $ref: 'node1.1.1', name: 'node1.1.1'}, + { $ref: 'node1.1.2', name: 'node1.1.2'} +]} diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/node1.2 b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/node1.2 new file mode 100644 index 0000000..b221fab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/node1.2 @@ -0,0 +1 @@ +{ id: 'node1.2',name:'node1.2', someProperty:'somePropertyA2'} diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_atom.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_atom.xml new file mode 100644 index 0000000..d6733a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_atom.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_html.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_html.xml new file mode 100644 index 0000000..4793685 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_html.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_rss.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_rss.xml new file mode 100644 index 0000000..a1a9b46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/opensearch_rss.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/patterns.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/patterns.csv new file mode 100644 index 0000000..a9bee64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/patterns.csv @@ -0,0 +1,11 @@ +uniqueId, value +9, jfq4@#!$!@Rf14r14i5u +6, BaBaMaSaRa***Foo +2, bar*foo +8, 123abc +4, bit$Bite +3, 123abc +10, 123abcdefg +1, foo*bar +7, +5, 123abc diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/pipeSeparator.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/pipeSeparator.csv new file mode 100755 index 0000000..5f3d8cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/pipeSeparator.csv @@ -0,0 +1,7 @@ +article|price +1008|4,59 +1010|10,09 +1011|5,13 +1016|16,68 +1019|15,5 +1022|10,36 diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/pipeSeparatorInData.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/pipeSeparatorInData.csv new file mode 100755 index 0000000..d3998b1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/pipeSeparatorInData.csv @@ -0,0 +1,7 @@ +article|price +1008|"4,59|5,54" +1010|10,09 +1011|5,13 +1016|16,68 +1019|15,5 +1022|10,36 diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/properties.js b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/properties.js new file mode 100644 index 0000000..486abbf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/properties.js @@ -0,0 +1,10 @@ +/*[ + // Properties of December 1, 2007 + { "year": "2007" }, + { "nmonth": "12" }, + { "month": "December" }, + { "nday": "1" }, + { "day": "Saturday" }, + { "dayOfYear": "335" }, + { "weekOfYear": "48" } +]*/ diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/rss1.xml b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/rss1.xml new file mode 100644 index 0000000..e0ecec1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/rss1.xml @@ -0,0 +1,436 @@ + + + en + <![CDATA[SOS]]> + + + Tue, 22 Jan 2008 14:32:09 GMT + + + + http://shaneosullivan.wordpress.com + + + + The Dojo Ajax Toolkit is kindly hosted by AOL for the consumption of anyone at all. This has the advantage of + +Reducing the load on your own server +Speeding up the delivery, as a Content Delivery Network (CDN) is used to ensure that the server is as close as possible to the client, and +The more people [...] (...) + + (Shane O'Sullivan) + + Using AOL hosted Dojo with your custom code + http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/ + http://shaneosullivan.wordpress.com/2008/01/22/using-aol-hosted-dojo-with-your-custom-code/ + + + Tue, 22 Jan 2008 14:32:09 GMT + + Ajax + Dojo + Javascript + Technical + aol + + cross domain + open source + + + + + 1 + SOS + A short while ago I posted about the demo engine I&#8217;m writing for the Dojo Ajax Toolkit. Click here to read that post or go to http://www.skynet.ie/~sos/js/demo/dojo/dojoc/demos/featureexplorer.html to see it in action. +Features +Since that post, quite a lot of work has gone into both the features and the content of the demo engine, and the development [...] (...) + + + (Shane O'Sullivan) + + Dojo Demo Engine Update + http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/ + http://shaneosullivan.wordpress.com/2008/01/07/dojo-demo-engine-update/ + + Mon, 07 Jan 2008 01:02:43 GMT + + + AjaxDemo EngineDojoJavascriptdemodijitdocumentationdojo.querydojoxjsonopen source + + + + 3 + + SOS + Internet Explorer has a nice feature where a new window can be opened modally using the window.showModalDialog function, meaning that the page that opened it cannot be accessed until the new window is closed. This can be useful in many situations. +However, the main limitation of IE Modal Dialogs (other than being non-standard), is that [...] (...) + + (Shane O'Sullivan) + + Navigating in an IE Modal Dialog + http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/ + + http://shaneosullivan.wordpress.com/2007/12/31/navigating-in-an-ie-modal-dialog/ + + Mon, 31 Dec 2007 16:36:21 GMT + + DojoInternet ExplorerJavascriptTechnicalmodal + + + + 1 + + SOS + A couple of weeks ago I saw a cool demo framework for an Ajax toolkit just released as open source. It&#8217;s a very slick implementation, with a tree listing all the various demos, and a tabbed area showing the implementation, and the widget in practice. +So, I think to myself, this is exactly what the [...] (...) + + (Shane O'Sullivan) + + A new Demo engine for Dojo + http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/ + + http://shaneosullivan.wordpress.com/2007/12/04/a-new-demo-engine-for-dojo/ + + Tue, 04 Dec 2007 09:29:16 GMT + + AjaxDojoJavascriptdemodijitdocumentationdojox.imagejsonopen source + + + + + 3 + SOS + Today I&#8217;ve begun the process of upgrading my Ubuntu installation of version 7.04 to version 7.10. To see my previous tutorial of getting Ubuntu installed on my IBM Thinkpad X41, see http://shaneosullivan.wordpress.com/2007/02/16/installing-ubuntu-edgy-on-a-thinkpad-x41-tablet/. +This post lists whatever issues I found when upgrading, and my solutions to them. For the official instructions, see https://help.ubuntu.com/community/GutsyUpgrades. +Third Party software [...] (...) + + (Shane O'Sullivan) + + + Upgrading Ubuntu Feisty Fawn (7.04) to Gutsy Gibbon (7.10) + http://shaneosullivan.wordpress.com/2007/10/18/upgrading-ubuntu-feisty-fawn-704-to-gutsy-gibbon-710/ + http://shaneosullivan.wordpress.com/2007/10/18/upgrading-ubuntu-feisty-fawn-704-to-gutsy-gibbon-710/ + + Thu, 18 Oct 2007 16:11:37 GMT + + Gutsy GibbonUbuntuopen source + + + + + 25 + SOS + In previous posts (here for the Dojo 0.4.3 version, here and here), I wrote how I wrote an image gallery for version 0.4.3 of the Dojo Ajax Toolkit, and how I was translating it for the latest version of the toolkit, version 1.0. +Well, that work is now, finally, complete, and I have to say, I&#8217;m [...] (...) + + (Shane O'Sullivan) + + + Introducing the new Dojo Image Widgets + http://shaneosullivan.wordpress.com/2007/10/13/introducing-the-new-dojo-image-widgets/ + http://shaneosullivan.wordpress.com/2007/10/13/introducing-the-new-dojo-image-widgets/ + + Sat, 13 Oct 2007 11:09:13 GMT + + Ajax + Dojo + + Flickr + Image Gallery + Javascript + Technical + aol + cross domain + + dijit + dojo.data + dojox + dojox.data + dojox.image + json + + open source + + + + + 46 + SOS + The previously announced Dojo Grid has landed in source control, and is in the nightly builds. It has all sorts of fancy functionality, like support for lazy loading huge data sets, individual styling of rows and columns, inline editing etc. +Check it out at http://archive.dojotoolkit.org/nightly/checkout/dojox/grid/tests/ +Very cool stuff! +Update: The Sitepen guys have recently blogged about [...] (...) + + + (Shane O'Sullivan) + + Dojo Grid has landed + http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/ + http://shaneosullivan.wordpress.com/2007/10/05/dojo-grid-has-landed/ + + Fri, 05 Oct 2007 13:23:17 GMT + + AjaxDojogridopen source + + + + + 0 + SOS + I work on a number of open source projects, and many of them use the Subversion version control system to manage their code. Before my switch from Windows XP to Ubuntu Linux (which I am still ecstatically happy with btw), I became a big fan of TortoiseSVN, an extremely useful Subversion client that integrates itself [...] (...) + + (Shane O'Sullivan) + + A TortoiseSVN replacement for Ubuntu + + http://shaneosullivan.wordpress.com/2007/10/04/a-tortoisesvn-replacement-for-ubuntu/ + http://shaneosullivan.wordpress.com/2007/10/04/a-tortoisesvn-replacement-for-ubuntu/ + + Thu, 04 Oct 2007 15:50:50 GMT + + LinuxNautilusSubversionTechnicalTortoiseSVNUbuntuopen source + + + + + 3 + SOS + I&#8217;ve recently submitted a new data store for the Dojo Ajax Toolkit that makes it very simple to query Flickr for your and other peoples images. For those not familiar with Flickr, it is a photo sharing website, one of the most popular on the net. However, what makes it quite special is [...] (...) + + (Shane O'Sullivan) + + + Querying Flickr with Dojo! + http://shaneosullivan.wordpress.com/2007/09/22/querying-flickr-with-dojo/ + http://shaneosullivan.wordpress.com/2007/09/22/querying-flickr-with-dojo/ + + Sat, 22 Sep 2007 16:10:05 GMT + + AjaxDojoFlickrImage GalleryJavascriptTechnicaldojo.datadojox.datadojox.imagejsonopen source + + + + + 3 + SOS + Flickr is a photo sharing website that has a very flexible set of APIs that other applications and websites can use to access the photos it stores. This post shows you how to specify a callback function that Flickr can call to pass your web application information on photos it stores. +Quite a while ago I [...] (...) + + (Shane O'Sullivan) + + Specifying the callback function with the Flickr JSON APIs + + http://shaneosullivan.wordpress.com/2007/09/13/specifying-the-callback-function-with-the-flickr-json-apis/ + http://shaneosullivan.wordpress.com/2007/09/13/specifying-the-callback-function-with-the-flickr-json-apis/ + + Thu, 13 Sep 2007 09:31:30 GMT + + AjaxDojoFlickrImage GalleryJavascriptTechnicaldojoxdojox.datadojox.imageopen source + + + + + 0 + SOS + In a previous post (see here) I spoke about how I&#8217;d written an Image Gallery widget that worked with Dojo Ajax Toolkit version 0.4.2 and 0.4.3. I contacted the good folks at Dojo about updating it for the latest release, 0.9, and adding it to the toolkit. +They were very receptive to the idea, [...] (...) + + (Shane O'Sullivan) + + + Image Gallery, Slideshow, and Flickr data source for Dojo 0.9 + http://shaneosullivan.wordpress.com/2007/09/04/image-gallery-slideshow-and-flickr-data-source-for-dojo-09/ + http://shaneosullivan.wordpress.com/2007/09/04/image-gallery-slideshow-and-flickr-data-source-for-dojo-09/ + + Tue, 04 Sep 2007 23:32:51 GMT + + AjaxDojoImage GalleryJavascriptTechnicaldijitdojo.imagedojoxopen source + + + + + 1 + SOS + When working with the Dojo Ajax Toolkit and using it&#8217;s dojo.event package to listen to DOM and custom events, the two most common approaches are: + +Listen for an event (or function call) to be triggered on an object, and when it is to run a custom function, e.g. + var alertFn = function() [...] (...) + + (Shane O'Sullivan) + + + Dojo event performance tip + http://shaneosullivan.wordpress.com/2007/08/23/dojo-event-performance-tip/ + http://shaneosullivan.wordpress.com/2007/08/23/dojo-event-performance-tip/ + + Thu, 23 Aug 2007 12:29:08 GMT + + AjaxDojoJavascriptTechnicaldojo.eventopen sourceperformance + + + + + 0 + SOS + The latest version of the Dojo Ajax Toolkit has just been released into the wild. Version 0.9 is a very streamlined progression of the toolkit, with many of the less essential features pushed out to another project, DojoX, and the Dojo widgets given their own project, Dijit. +Another big change is the the main [...] (...) + + (Shane O'Sullivan) + + Dojo 0.9 released + + http://shaneosullivan.wordpress.com/2007/08/22/dojo-09-released/ + http://shaneosullivan.wordpress.com/2007/08/22/dojo-09-released/ + + Wed, 22 Aug 2007 10:24:51 GMT + + AjaxDojoJavascriptTechnicaldijitopen source + + + + + 2 + SOS + The Dojo/Dijit (Dojo&#8217;s widget project) toolkit has created a page where you can view many of their widgets using the four CSS themes written so far for Dojo. This is cool for a couple of reasons. +Firstly, it showcases the excellent work the Dijit developers have put into new themeing skins. There are four [...] (...) + + (Shane O'Sullivan) + + + Dojo theme browser shows off Dijit widgets + http://shaneosullivan.wordpress.com/2007/08/17/dojo-theme-browser-shows-off-dijit-widgets/ + http://shaneosullivan.wordpress.com/2007/08/17/dojo-theme-browser-shows-off-dijit-widgets/ + + Fri, 17 Aug 2007 12:18:57 GMT + + AjaxDojoJavascriptRich TextTechnicaldijitopen source + + + + + 2 + SOS + Yahoo have released a very useful extension for Firebug, which is itself an extension for Firefox, which can be used to analyze a web page&#8217;s performance. The extension, called YSlow, appears as a separate pane in Firebug, and gives you a whole load of statistics about your page. +However, in addition to the bare numbers, [...] (...) + + (Shane O'Sullivan) + + + Why is my web page slow? YSlow for Firebug can tell you. + http://shaneosullivan.wordpress.com/2007/07/25/why-is-my-web-page-slow-yslow-for-firebug-can-tell-you/ + http://shaneosullivan.wordpress.com/2007/07/25/why-is-my-web-page-slow-yslow-for-firebug-can-tell-you/ + + Wed, 25 Jul 2007 15:08:30 GMT + + AjaxFirebugFirefoxJavascriptTechnicaltools + + + + + 1 + SOS + I have created an Image Gallery widget built on Dojo 0.4.3 that integrates nicely with Flickr. The widget it written entirely using JavaScript and CSS as a standalone Dojo widget, and is released under the same open source license as Dojo, the Academic Free License. +For more information, including the code and examples, see http://www.skynet.ie/~sos/ajax/imagegallery.php. +Some [...] (...) + + (Shane O'Sullivan) + + Flickr and Dojo Image Gallery + + http://shaneosullivan.wordpress.com/2007/07/03/flickr-and-dojo-image-gallery/ + http://shaneosullivan.wordpress.com/2007/07/03/flickr-and-dojo-image-gallery/ + + Tue, 03 Jul 2007 15:53:33 GMT + + AjaxDojoFlickrImage GalleryJavascriptTechnicaljson + + + + + 7 + SOS + The two main areas of interest for me over the last year or two, blog-wise that is, have been the Dojo Ajax toolkit, one of the more popular open source JavaScript toolkits, and Ubuntu Linux, the very popular operating system that is seen by many as the best chance Linux has of succeeding on the [...] (...) + + (Shane O'Sullivan) + + Is Dojo being ignored by developers? + + http://shaneosullivan.wordpress.com/2007/06/19/is-dojo-being-ignored-by-developers/ + http://shaneosullivan.wordpress.com/2007/06/19/is-dojo-being-ignored-by-developers/ + + Tue, 19 Jun 2007 10:36:49 GMT + + AjaxDojoJavascriptTechnicalopen source + + + + + 5 + SOS + I&#8217;ve created an example usage of the Dojo Charting engine, which you can find at http://www.skynet.ie/~sos/pageStats.php. View the source to see how it works. +It&#8217;s a modified version of the unit test available with the Dojo toolkit, but used in a specific scenario - in this case, to graph the page impressions for my personal [...] (...) + + (Shane O'Sullivan) + + + Dojo Charting example to show website statistics + http://shaneosullivan.wordpress.com/2007/06/15/dojo-charting-example-to-show-website-statistics-2/ + http://shaneosullivan.wordpress.com/2007/06/15/dojo-charting-example-to-show-website-statistics-2/ + + Fri, 15 Jun 2007 12:35:35 GMT + + AjaxDojoJavascriptTechnicalchartchartingdojo.chartingjsonopen sourcephp + + + + + 4 + SOS + I decided today that I wanted to put links at the bottom of each of my blog posts that would allow people to perform actions on the post, e.g: + +Digg it +Kick it +Mail it +Bookmark it on del.icio.us +Bookmark it on reddit.com +Bookmark it on live.com + +My blog is on Wordpress.com which doesn&#8217;t seem to have a plugin that will [...] (...) + + (Shane O'Sullivan) + + + GreaseMonkey script to add Digg-like links to posts + http://shaneosullivan.wordpress.com/2007/05/22/greasemonkey-script-to-add-digg-like-links-to-posts/ + http://shaneosullivan.wordpress.com/2007/05/22/greasemonkey-script-to-add-digg-like-links-to-posts/ + + Tue, 22 May 2007 16:57:02 GMT + + AjaxFirefoxJavascriptgreasemonkey + + + + + 8 + SOS + Bill Higgins of IBM has written a very well thought out article of why web applications should look and act like web applications, and not the desktop variety. Well worth a read - http://billhiggins.us/weblog/2007/05/17/the-uncanny-valley-of-user-interface-design + (...) + + (Shane O'Sullivan) + + Article on the square pegs and round holes of desktop and web applications + + http://shaneosullivan.wordpress.com/2007/05/22/article-on-the-square-pegs-and-round-holes-of-desktop-and-web-applications/ + http://shaneosullivan.wordpress.com/2007/05/22/article-on-the-square-pegs-and-round-holes-of-desktop-and-web-applications/ + + Tue, 22 May 2007 08:49:00 GMT + + AjaxJavascriptZimbra + + + + + 0 + SOS + WordPress vMU (http://wordpress.org/) + Atom 1.0 XSLT Transform v1 (http://atom.geekhood.net/) + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/semicolonSeparator.csv b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/semicolonSeparator.csv new file mode 100755 index 0000000..7cf1008 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/semicolonSeparator.csv @@ -0,0 +1,7 @@ +article;price +1008;4,59 +1010;10,09 +1011;5,13 +1016;16,68 +1019;15,5 +1022;10,36 diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/snap_pipeline.php b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/snap_pipeline.php new file mode 100644 index 0000000..9a8b53b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/snap_pipeline.php @@ -0,0 +1,72 @@ += count($rows) || $limit < 0) { + header("HTTP/1.1 400 Bad Request"); + echo "sn.start and/or sn.limit out of range"; + exit(0); + } + + $slice = array_slice($rows, $start, $limit); + + header("Content-type: application/javascript"); + echo $prefix . "(["; + + $out_rows = array("[" . join(", ", $field_names) . "]"); + foreach($slice as $r) { + $out_rows[] = "[" . join(", ", $r) . "]"; + } + + echo join(", ", $out_rows); + echo "])"; + } + +?> + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test1.css b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test1.css new file mode 100755 index 0000000..ff0ac3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test1.css @@ -0,0 +1,2 @@ +.linkTestClass { text-align: center; } +.linkTestClass .test { background-color: blue; } diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test2.css b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test2.css new file mode 100755 index 0000000..cc21e7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test2.css @@ -0,0 +1 @@ +.importTestClass { text-align: center; } diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test_Tree_on_JsonRestStore.html b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test_Tree_on_JsonRestStore.html new file mode 100644 index 0000000..f7ce121 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/test_Tree_on_JsonRestStore.html @@ -0,0 +1,114 @@ + + + + Dijit Tree Test + + + + + + + + + + + + + + + + + +

                            Dijit Tree Test - dojo.data.Notification API support

                            + + +
                            + +
                            +

                            Current Selection: Tree Root

                            + +

                            Selected Item:

                            + Name:
                            + Description:

                            +
                            Update Item
                            + +

                            New Item

                            +

                            Enter an Id, Name, and optionally a description to be added as a new item to the store. Upon successful addition, the tree will recieve notification of this event and respond accordingly. If you select a node the item will be added to that node, otherwise the item will be added to the tree root. "Id" is the identifer here and as such must be unique for all items in the store.

                            + Id:
                            + Name:
                            + Description:

                            + +
                            Add Item to Store
                            +
                            + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/stores/treeTestRoot b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/treeTestRoot new file mode 100644 index 0000000..4a9adf1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/stores/treeTestRoot @@ -0,0 +1,10 @@ +[ + { id: 'node1', name:'node1', someProperty:'somePropertyA', children:[ + { $ref: 'node1.1', name: 'node1.1', children: true}, + { $ref: 'node1.2', name: 'node1.2'} + ]}, + { id: 'node2', name:'node2', someProperty:'somePropertyB'}, + { id: 'node3', name:'node3', someProperty:'somePropertyC'}, + { id: 'node4', name:'node4', someProperty:'somePropertyA'}, + { id: 'node5', name:'node5', someProperty:'somePropertyB'} +] diff --git a/js/dojo-release-1.7.2-src/dojox/data/tests/treeTest.json b/js/dojo-release-1.7.2-src/dojox/data/tests/treeTest.json new file mode 100644 index 0000000..70cc7d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/tests/treeTest.json @@ -0,0 +1,10 @@ +{ + node1: { id: 'node1', name:'node1', someProperty:'somePropertyA', children:[ + { id: 'node1.1',name:'node1.1', someProperty:'somePropertyA1'}, + { id: 'node1.2',name:'node1.2', someProperty:'somePropertyA2'} + ]}, + node2:{ id: 'node2', name:'node2', someProperty:'somePropertyB'}, + node3:{ id: 'node3', name:'node3', someProperty:'somePropertyC'}, + node4:{ id: 'node4', name:'node4', someProperty:'somePropertyA'}, + node5:{ id: 'node5', name:'node5', someProperty:'somePropertyB'} +} diff --git a/js/dojo-release-1.7.2-src/dojox/data/util/JsonQuery.js b/js/dojo-release-1.7.2-src/dojox/data/util/JsonQuery.js new file mode 100644 index 0000000..96a0f4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/data/util/JsonQuery.js @@ -0,0 +1,98 @@ +define("dojox/data/util/JsonQuery", ["dojo", "dojox"], function(dojo, dojox) { + +// this is a mixin to convert object attribute queries to +// JSONQuery/JSONPath syntax to be sent to the server. +dojo.declare("dojox.data.util.JsonQuery", null, { + useFullIdInQueries: false, + _toJsonQuery: function(args, jsonQueryPagination){ + var first = true; + var self = this; + function buildQuery(path, query){ + var isDataItem = query.__id; + if(isDataItem){ + // it is a reference to a persisted object, need to make it a query by id + var newQuery = {}; + newQuery[self.idAttribute] = self.useFullIdInQueries ? query.__id : query[self.idAttribute]; + query = newQuery; + } + for(var i in query){ + // iterate through each property, adding them to the overall query + var value = query[i]; + var newPath = path + (/^[a-zA-Z_][\w_]*$/.test(i) ? '.' + i : '[' + dojo._escapeString(i) + ']'); + if(value && typeof value == "object"){ + buildQuery(newPath, value); + }else if(value!="*"){ // full wildcards can be ommitted + jsonQuery += (first ? "" : "&") + newPath + + ((!isDataItem && typeof value == "string" && args.queryOptions && args.queryOptions.ignoreCase) ? "~" : "=") + + (self.simplifiedQuery ? encodeURIComponent(value) : dojo.toJson(value)); + first = false; + } + } + } + // performs conversion of Dojo Data query objects and sort arrays to JSONQuery strings + if(args.query && typeof args.query == "object"){ + // convert Dojo Data query objects to JSONQuery + var jsonQuery = "[?("; + buildQuery("@", args.query); + if(!first){ + // use ' instead of " for quoting in JSONQuery, and end with ] + jsonQuery += ")]"; + }else{ + jsonQuery = ""; + } + args.queryStr = jsonQuery.replace(/\\"|"/g,function(t){return t == '"' ? "'" : t;}); + }else if(!args.query || args.query == '*'){ + args.query = ""; + } + + var sort = args.sort; + if(sort){ + // if we have a sort order, add that to the JSONQuery expression + args.queryStr = args.queryStr || (typeof args.query == 'string' ? args.query : ""); + first = true; + for(i = 0; i < sort.length; i++){ + args.queryStr += (first ? '[' : ',') + (sort[i].descending ? '\\' : '/') + "@[" + dojo._escapeString(sort[i].attribute) + "]"; + first = false; + } + args.queryStr += ']'; + } + // this is optional because with client side paging JSONQuery doesn't yield the total count + if(jsonQueryPagination && (args.start || args.count)){ + // pagination + args.queryStr = (args.queryStr || (typeof args.query == 'string' ? args.query : "")) + + '[' + (args.start || '') + ':' + (args.count ? (args.start || 0) + args.count : '') + ']'; + } + if(typeof args.queryStr == 'string'){ + args.queryStr = args.queryStr.replace(/\\"|"/g,function(t){return t == '"' ? "'" : t;}); + return args.queryStr; + } + return args.query; + }, + jsonQueryPagination: true, + fetch: function(args){ + this._toJsonQuery(args, this.jsonQueryPagination); + return this.inherited(arguments); + }, + isUpdateable: function(){ + return true; + }, + matchesQuery: function(item,request){ + request._jsonQuery = request._jsonQuery || dojox.json.query(this._toJsonQuery(request)); + return request._jsonQuery([item]).length; + }, + clientSideFetch: function(/*Object*/ request,/*Array*/ baseResults){ + request._jsonQuery = request._jsonQuery || dojox.json.query(this._toJsonQuery(request)); + // we use client side paging function here instead of JSON Query because we must also determine the total count + return this.clientSidePaging(request, request._jsonQuery(baseResults)); + }, + querySuperSet: function(argsSuper,argsSub){ + if(!argsSuper.query){ + return argsSub.query; + } + return this.inherited(arguments); + } + +}); + +return dojox.data.util.JsonQuery; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/README b/js/dojo-release-1.7.2-src/dojox/date/README new file mode 100644 index 0000000..401e6c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/README @@ -0,0 +1,48 @@ +------------------------------------------------------------------------------- +DojoX Date +------------------------------------------------------------------------------- +Version 0.9 +Release date: 5/17/2007 +------------------------------------------------------------------------------- +Project state: +varies + +Buddhist, Hebrew, Islamic calendars: stable +posix, php: beta +timezone: experimental + +------------------------------------------------------------------------------- +Credits + Paul Sowden (dojox.date.posix) + Neil Roberts (dojox.date.php) + Hossam Aldin Katory (dojox.date.islamic, dojox.date.hebrew) + Helena Halperin, Moshe Wajnberg, Tomer Mahlin (dojox.date.hebrew) + Nathan Toone (dojox.date.relative, dojox.date.tzdate, dojox.date.timezone) +------------------------------------------------------------------------------- +Project description + +Placeholder for any kind of date operations, including formatters that are +common to other languages (posix and php). + +------------------------------------------------------------------------------- +Dependencies: + +Depends only on the Dojo Core. +------------------------------------------------------------------------------- +Documentation + +See the API documentation for details. +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/date/* + +Install into the following directory structure: +/dojox/date/ + +...which should be at the same level as your Dojo checkout. + +To use the non-Gregorian calendars, you must do a complete build of dojo.cldr. +See util/buildscripts/cldr/README for details. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/date/buddhist.js b/js/dojo-release-1.7.2-src/dojox/date/buddhist.js new file mode 100644 index 0000000..4140c73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/buddhist.js @@ -0,0 +1,240 @@ +define(["dojo/_base/kernel", "dojo/date", "./buddhist/Date"], function(dojo, dd, buddhistDate){ + dojo.getObject("date.buddhist", true, dojox); + dojo.experimental("dojox.date.buddhist"); + +// Utility methods to do arithmetic calculations with buddhist.Dates + +dojox.date.buddhist.getDaysInMonth = function(/*buddhist.Date*/dateObject){ + return dd.getDaysInMonth(dateObject.toGregorian()); +}; + +dojox.date.buddhist.isLeapYear = function(/*buddhist.Date*/dateObject){ + return dd.isLeapYear(dateObject.toGregorian()); +}; + +//FIXME: reduce compare, add, diff also +dojox.date.buddhist.compare = function(/*buddhist.Date*/date1, /*buddhist.Date*/date2, /*String?*/portion){ + // summary: + // Compare two buddhist date objects by date, time, or both. + return dd.compare(date1,date2, portion); // int +}; + + +dojox.date.buddhist.add = function(/*dojox.date.buddhist.Date*/date, /*String*/interval, /*int*/amount){ + // based on and similar to dojo.date.add + // summary: + // Add to a Date in intervals of different size, from milliseconds to years + // date: buddhist.Date + // Date object to start with + // interval: + // A string representing the interval. One of the following: + // "year", "month", "day", "hour", "minute", "second", + // "millisecond", "week", "weekday" + // amount: + // How much to add to the date. + + var newBuddDate = new buddhistDate(date); + + switch(interval){ + case "day": + newBuddDate.setDate(date.getDate(true) + amount); + break; + case "weekday": + var days, weeks; + var mod = amount % 5; + if(!mod){ + days = (amount > 0) ? 5 : -5; + weeks = (amount > 0) ? ((amount-5)/5) : ((amount+5)/5); + }else{ + days = mod; + weeks = parseInt(amount/5); + } + // Get weekday value for orig date param + var strt = date.getDay(); + // Orig date is Sat / positive incrementer + // Jump over Sun + var adj = 0; + if(strt == 6 && amount > 0){ + adj = 1; + }else if(strt == 0 && amount < 0){ + // Orig date is Sun / negative incrementer + // Jump back over Sat + adj = -1; + } + // Get weekday val for the new date + var trgt = strt + days; + // New date is on Sat or Sun + if(trgt == 0 || trgt == 6){ + adj = (amount > 0) ? 2 : -2; + } + // Increment by number of weeks plus leftover days plus + // weekend adjustments + amount = (7 * weeks) + days + adj; + newBuddDate.setDate(date.getDate(true) + amount); + break; + case "year": + newBuddDate.setFullYear(date.getFullYear() + amount ); + break; + case "week": + amount *= 7; + newBuddDate.setDate(date.getDate(true) + amount); + break; + case "month": + newBuddDate.setMonth(date.getMonth() + amount); + break; + case "hour": + newBuddDate.setHours(date.getHours() + amount ); + break; + case "minute": + newBuddDate._addMinutes(amount); + break; + case "second": + newBuddDate._addSeconds(amount); + break; + case "millisecond": + newBuddDate._addMilliseconds(amount); + break; + } + return newBuddDate; // dojox.date.buddhist.Date +}; + +dojox.date.buddhist.difference = function(/*dojox.date.buddhist.Date*/date1, /*dojox.date.buddhist.Date?*/date2, /*String?*/interval){ + // based on and similar to dojo.date.difference + // summary: + // date2 - date1 + // date2 is hebrew.Date object. If not specified, the current hebrew.Date is used. + // interval: + // A string representing the interval. One of the following: + // "year", "month", "day", "hour", "minute", "second", + // "millisecond", "week", "weekday" + // Defaults to "day". + + date2 = date2 || new buddhistDate(); + interval = interval || "day"; + var yearDiff = date2.getFullYear() - date1.getFullYear(); + var delta = 1; // Integer return value + switch(interval){ + case "weekday": + var days = Math.round(dojox.date.buddhist.difference(date1, date2, "day")); + var weeks = parseInt(dojox.date.buddhist.difference(date1, date2, "week")); + var mod = days % 7; + + // Even number of weeks + if(mod == 0){ + days = weeks*5; + }else{ + // Weeks plus spare change (< 7 days) + var adj = 0; + var aDay = date1.getDay(); + var bDay = date2.getDay(); + + weeks = parseInt(days/7); + mod = days % 7; + // Mark the date advanced by the number of + // round weeks (may be zero) + var dtMark = new buddhistDate(date2); + dtMark.setDate(dtMark.getDate(true)+(weeks*7)); + var dayMark = dtMark.getDay(); + + // Spare change days -- 6 or less + if(days > 0){ + switch(true){ + // Range starts on Fri + case aDay == 5: + adj = -1; + break; + // Range starts on Sat + case aDay == 6: + adj = 0; + break; + // Range ends on Fri + case bDay == 5: + adj = -1; + break; + // Range ends on Sat + case bDay == 6: + adj = -2; + break; + // Range contains weekend + case (dayMark + mod) > 5: + adj = -2; + } + }else if(days < 0){ + switch(true){ + // Range starts on Fri + case aDay == 5: + adj = 0; + break; + // Range starts on Sat + case aDay == 6: + adj = 1; + break; + // Range ends on Fri + case bDay == 5: + adj = 2; + break; + // Range ends on Sat + case bDay == 6: + adj = 1; + break; + // Range contains weekend + case (dayMark + mod) < 0: + adj = 2; + } + } + days += adj; + days -= (weeks*2); + } + delta = days; + break; + case "year": + delta = yearDiff; + break; + case "month": + var startdate = (date2.toGregorian() > date1.toGregorian()) ? date2 : date1; // more + var enddate = (date2.toGregorian() > date1.toGregorian()) ? date1 : date2; + + var month1 = startdate.getMonth(); + var month2 = enddate.getMonth(); + + if (yearDiff == 0){ + delta = startdate.getMonth() - enddate.getMonth() ; + }else{ + delta = 12-month2; + delta += month1; + var i = enddate.getFullYear()+1; + var e = startdate.getFullYear(); + for (i; i < e; i++){ + delta += 12; + } + } + if (date2.toGregorian() < date1.toGregorian()){ + delta = -delta; + } + break; + case "week": + // Truncate instead of rounding + // Don't use Math.floor -- value may be negative + delta = parseInt(dojox.date.buddhist.difference(date1, date2, "day")/7); + break; + case "day": + delta /= 24; + // fallthrough + case "hour": + delta /= 60; + // fallthrough + case "minute": + delta /= 60; + // fallthrough + case "second": + delta /= 1000; + // fallthrough + case "millisecond": + delta *= date2.toGregorian().getTime()- date1.toGregorian().getTime(); + } + + // Round for fractional values and DST leaps + return Math.round(delta); // Number (integer) +}; +return dojox.date.buddhist; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/date/buddhist/Date.js b/js/dojo-release-1.7.2-src/dojox/date/buddhist/Date.js new file mode 100644 index 0000000..04308b5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/buddhist/Date.js @@ -0,0 +1,288 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/date" +], function(dojo, declare, dd){ + +dojo.getObject("date.buddhist.Date", true, dojox); +dojo.experimental("dojox.date.buddhist.Date"); + +dojo.declare("dojox.date.buddhist.Date", null, { + + _date: 0, + _month: 0, + _year: 0, + _hours: 0, + _minutes: 0, + _seconds: 0, + _milliseconds: 0, + _day: 0, + + constructor: function(){ + // summary: This is the constructor + // description: + // This fucntion initialize the date object values + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | var date2 = new dojox.date.buddhist.Date(date1); + // | + // | var date3 = new dojox.date.buddhist.Date(2552,2,12); + var len = arguments.length; + if(!len){// use the current date value, added "" to the similarity to date + this.fromGregorian(new Date()); + }else if(len == 1){ + var arg0 = arguments[0]; + if(typeof arg0 == "number"){ // this is time "valueof" + arg0 = new Date(arg0); + } + + if(arg0 instanceof Date){ + this.fromGregorian(arg0); + }else if(arg0 == ""){ + this._date = new Date(""); + }else{ + this._year = arg0._year; + this._month = arg0._month; + this._date = arg0._date; + this._hours = arg0._hours; + this._minutes = arg0._minutes; + this._seconds = arg0._seconds; + this._milliseconds = arg0._milliseconds; + } + }else if(len >=3){ + this._year += arguments[0]; + this._month += arguments[1]; + this._date += arguments[2]; + + if(this._month >11){ + console.warn("the month is incorrect , set 0"); + this._month = 0; + } + this._hours += arguments[3] || 0; + this._minutes += arguments[4] || 0; + this._seconds += arguments[5] || 0; + this._milliseconds += arguments[6] || 0; + } + }, + + getDate: function(/*boolean?*/isNumber){ + // summary: This function returns the date value (0 - 30) + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | console.log(date1.getDate()); + return parseInt(this._date); + }, + + getMonth: function(){ + // summary: This function return the month value ( 0 - 11 ) + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | console.log(date1.getMonth()+1); + return parseInt(this._month); + }, + + + getFullYear: function(){ + // summary: This function return the Year value + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | + // | console.log(date1.getFullYear()); + return parseInt(this._year); + }, + + getHours: function(){ + //summary: returns the Hour value + return this._hours; + }, + + getMinutes: function(){ + //summary: returns the Minuites value + return this._minutes; + }, + + getSeconds: function(){ + //summary: returns the seconde value + return this._seconds; + }, + + getMilliseconds: function(){ + //summary: returns the Milliseconds value + return this._milliseconds; + }, + + setDate: function(/*number*/date){ + // summary: This function sets the Date + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | date1.setDate(2); + date = parseInt(date); + + if(date > 0 && date <= this._getDaysInMonth(this._month, this._year)){ + this._date = date; + }else{ + var mdays; + if(date>0){ + for(mdays = this._getDaysInMonth(this._month, this._year); + date > mdays; + date -= mdays,mdays = this._getDaysInMonth(this._month, this._year)){ + this._month++; + if(this._month >= 12){this._year++; this._month -= 12;} + } + + this._date = date; + }else{ + for(mdays = this._getDaysInMonth((this._month-1)>=0 ?(this._month-1) :11 ,((this._month-1)>=0)? this._year: this._year-1); + date <= 0; + mdays = this._getDaysInMonth((this._month-1)>=0 ? (this._month-1) :11,((this._month-1)>=0)? this._year: this._year-1)){ + this._month--; + if(this._month < 0){this._year--; this._month += 12;} + + date+=mdays; + } + this._date = date; + } + } + return this; + }, + + setFullYear: function(/*number*/year, /*number?*/month, /*number?*/ date){ + // summary: This function set Year + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | date1.setFullYear(2552); + // | date1.setFullYear(2552, 1, 1); + this._year = parseInt(year); + }, + + setMonth: function(/*number*/month){ + // summary: This function set Month + // + // example: + // | var date1 = new dojox.date.buddhist.Date(); + // | date1.setMonth(0); //first month + this._year += Math.floor(month / 12); + this._month = Math.floor(month % 12); + for(; this._month < 0; this._month = this._month+12); + }, + + setHours: function(){ + //summary: set the Hours 0-23 + var hours_arg_no = arguments.length; + var hours = 0; + if(hours_arg_no >= 1){ + hours = parseInt(arguments[0]); + } + + if(hours_arg_no >= 2){ + this._minutes = parseInt(arguments[1]); + } + + if(hours_arg_no >= 3){ + this._seconds = parseInt(arguments[2]); + } + + if(hours_arg_no == 4){ + this._milliseconds = parseInt(arguments[3]); + } + + while(hours >= 24){ + this._date++; + var mdays = this._getDaysInMonth(this._month, this._year); + if(this._date > mdays){ + this._month ++; + if(this._month >= 12){this._year++; this._month -= 12;} + this._date -= mdays; + } + hours -= 24; + } + this._hours = hours; + }, + + _addMinutes: function(/*Number*/minutes){ + minutes += this._minutes; + this.setMinutes(minutes); + this.setHours(this._hours + parseInt(minutes / 60)); + return this; + }, + + _addSeconds: function(/*Number*/seconds){ + seconds += this._seconds; + this.setSeconds(seconds); + this._addMinutes(parseInt(seconds / 60)); + return this; + }, + + _addMilliseconds: function(/*Number*/milliseconds){ + milliseconds += this._milliseconds; + this.setMilliseconds(milliseconds); + this._addSeconds(parseInt(milliseconds / 1000)); + return this; + }, + + setMinutes: function(/*Number*/minutes){ + //summary: sets the minutes (0-59) only. + this._minutes = minutes % 60; + return this; + }, + + setSeconds: function(/*Number*/seconds){ + //summary: sets the seconds (0-59) only. + this._seconds = seconds % 60; + return this; + }, + + setMilliseconds: function(/*Number*/milliseconds){ + this._milliseconds = milliseconds % 1000; + return this; + }, + + toString: function(){ + // summary: This returns a string representation of the date in "dd, MM, YYYY HH:MM:SS" format + return this._date + ", " + this._month + ", " + this._year + " " + this._hours + ":" + this._minutes + ":" + this._seconds; // String + }, + +//FIXME: remove this and replace usage with dojox.date.buddhist.getDaysInMonth? + _getDaysInMonth: function(/*number*/month, /*number*/ year){ + return dd.getDaysInMonth(new Date(year-543, month)); + }, + + fromGregorian: function(/*Date*/gdate){ + // summary: This function sets this Date to the Hebrew Date corresponding to the Gregorian Date + var date = new Date(gdate); + this._date = date.getDate(); + this._month = date.getMonth(); + this._year = date.getFullYear()+543; + this._hours = date.getHours(); + this._minutes = date.getMinutes(); + this._seconds = date.getSeconds(); + this._milliseconds = date.getMilliseconds(); + this._day = date.getDay(); + return this; + }, + + toGregorian: function(){ + // summary: This returns the equivalent Gregorian date value as a Date object + return new Date(this._year-543, this._month, this._date, this._hours, this._minutes, this._seconds, this._milliseconds); // Date + }, + + getDay: function(){ + // summary: This function return Week Day value ( 0 - 6 ) + return this.toGregorian().getDay(); // int + } +}); + +dojox.date.buddhist.Date.prototype.valueOf = function(){ + return this.toGregorian().valueOf(); +}; + +return dojox.date.buddhist.Date; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/buddhist/locale.js b/js/dojo-release-1.7.2-src/dojox/date/buddhist/locale.js new file mode 100644 index 0000000..91b32d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/buddhist/locale.js @@ -0,0 +1,407 @@ +define(["dojo/main", "dojo/date", "dojo/i18n", "dojo/regexp", "dojo/string", "./Date", "dojo/i18n!dojo/cldr/nls/buddhist"], + function(dojo, dd, i18n, regexp, string, buddhistDate){ + + dojo.getObject("date.buddhist.locale", true, dojox); + dojo.experimental("dojox.date.buddhist.locale"); + + // Format a pattern without literals + function formatPattern(dateObject, bundle, locale, fullYear, pattern){ + + return pattern.replace(/([a-z])\1*/ig, function(match){ + var s, pad; + var c = match.charAt(0); + var l = match.length; + var widthList = ["abbr", "wide", "narrow"]; + + switch(c){ + case 'G': + s = bundle["eraAbbr"][0]; + break; + case 'y': + s = String(dateObject.getFullYear()); + break; + case 'M': + var m = dateObject.getMonth(); + if(l<3){ + s = m+1; pad = true; + }else{ + var propM = ["months", "format", widthList[l-3]].join("-"); + s = bundle[propM][m]; + } + break; + case 'd': + s = dateObject.getDate(true); pad = true; + break; + case 'E': + var d = dateObject.getDay(); + if(l<3){ + s = d+1; pad = true; + }else{ + var propD = ["days", "format", widthList[l-3]].join("-"); + s = bundle[propD][d]; + } + break; + case 'a': + var timePeriod = (dateObject.getHours() < 12) ? 'am' : 'pm'; + s = bundle['dayPeriods-format-wide-' + timePeriod]; + break; + case 'h': + case 'H': + case 'K': + case 'k': + var h = dateObject.getHours(); + switch (c){ + case 'h': // 1-12 + s = (h % 12) || 12; + break; + case 'H': // 0-23 + s = h; + break; + case 'K': // 0-11 + s = (h % 12); + break; + case 'k': // 1-24 + s = h || 24; + break; + } + pad = true; + break; + case 'm': + s = dateObject.getMinutes(); pad = true; + break; + case 's': + s = dateObject.getSeconds(); pad = true; + break; + case 'S': + s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l-3)); pad = true; + break; + case 'z': + // We only have one timezone to offer; the one from the browser + s = dojo.date.getTimezoneName(dateObject.toGregorian()); + if(s){ break; } + l = 4; + // fallthrough... use GMT if tz not available + case 'Z': + var offset = dateObject.toGregorian().getTimezoneOffset(); + var tz = [ + (offset <= 0 ? "+" : "-"), + string.pad(Math.floor(Math.abs(offset) / 60), 2), + string.pad(Math.abs(offset) % 60, 2) + ]; + if(l == 4){ + tz.splice(0, 0, "GMT"); + tz.splice(3, 0, ":"); + } + s = tz.join(""); + break; + default: + throw new Error("dojox.date.buddhist.locale.formatPattern: invalid pattern char: "+pattern); + } + if(pad){ s = string.pad(s, l); } + return s; + }); + } + + dojox.date.buddhist.locale.format = function(/*buddhist.Date*/dateObject, /*object?*/options){ + // based on and similar to dojo.date.locale.format + // summary: + // Format a Date object as a String, using settings. + options = options || {}; + + var locale = i18n.normalizeLocale(options.locale); + var formatLength = options.formatLength || 'short'; + var bundle = dojox.date.buddhist.locale._getBuddhistBundle(locale); + var str = []; + + var sauce = dojo.hitch(this, formatPattern, dateObject, bundle, locale, options.fullYear); + if(options.selector == "year"){ + var year = dateObject.getFullYear(); + return year; + } + if(options.selector != "time"){ + var datePattern = options.datePattern || bundle["dateFormat-"+formatLength]; + if(datePattern){str.push(_processPattern(datePattern, sauce));} + } + if(options.selector != "date"){ + var timePattern = options.timePattern || bundle["timeFormat-"+formatLength]; + if(timePattern){str.push(_processPattern(timePattern, sauce));} + } + var result = str.join(" "); //TODO: use locale-specific pattern to assemble date + time + + return result; // String + }; + + dojox.date.buddhist.locale.regexp = function(/*Object?*/options){ + // based on and similar to dojo.date.locale.regexp + // summary: + // Builds the regular needed to parse a buddhist.Date + return dojox.date.buddhist.locale._parseInfo(options).regexp; // String + }; + + dojox.date.buddhist.locale._parseInfo = function(/*Object?*/options){ + /* based on and similar to dojo.date.locale._parseInfo */ + + options = options || {}; + var locale = i18n.normalizeLocale(options.locale); + var bundle = dojox.date.buddhist.locale._getBuddhistBundle(locale); + var formatLength = options.formatLength || 'short'; + var datePattern = options.datePattern || bundle["dateFormat-" + formatLength]; + var timePattern = options.timePattern || bundle["timeFormat-" + formatLength]; + + var pattern; + if(options.selector == 'date'){ + pattern = datePattern; + }else if(options.selector == 'time'){ + pattern = timePattern; + }else{ + pattern = (typeof (timePattern) == "undefined") ? datePattern : datePattern + ' ' + timePattern; + } + + var tokens = []; + + var re = _processPattern(pattern, dojo.hitch(this, _buildDateTimeRE, tokens, bundle, options)); + return {regexp: re, tokens: tokens, bundle: bundle}; + }; + + dojox.date.buddhist.locale.parse = function(/*String*/value, /*Object?*/options){ + // based on and similar to dojo.date.locale.parse + // summary: This function parses string date value according to options + value = value.replace(/[\u200E\u200F\u202A-\u202E]/g, ""); //remove special chars + + if(!options){options={};} + var info = dojox.date.buddhist.locale._parseInfo(options); + + var tokens = info.tokens, bundle = info.bundle; + var re = new RegExp("^" + info.regexp + "$"); + + var match = re.exec(value); + + var locale = i18n.normalizeLocale(options.locale); + + if(!match){ + console.debug("dojox.date.buddhist.locale.parse: value "+value+" doesn't match pattern " + re); + return null; + } // null + + var date, date1; + + var result = [2513,0,1,0,0,0,0]; // buddhist date for [1970,0,1,0,0,0,0] used in gregorian locale + var amPm = ""; + var mLength = 0; + var widthList = ["abbr", "wide", "narrow"]; + var valid = dojo.every(match, function(v, i){ + if(!i){return true;} + var token=tokens[i-1]; + var l=token.length; + switch(token.charAt(0)){ + case 'y': + result[0] = Number(v); + break; + case 'M': + if(l>2){ + var months = bundle['months-format-' + widthList[l-3]].concat(); + if(!options.strict){ + //Tolerate abbreviating period in month part + //Case-insensitive comparison + v = v.replace(".","").toLowerCase(); + months = dojo.map(months, function(s){ return s ? s.replace(".","").toLowerCase() : s; } ); + } + v = dojo.indexOf(months, v); + if(v == -1){ + return false; + } + mLength = l; + }else{ + v--; + } + result[1] = Number(v); + break; + case 'D': + result[1] = 0; + // fallthrough... + case 'd': + result[2] = Number(v); + break; + case 'a': //am/pm + var am = options.am || bundle['dayPeriods-format-wide-am'], + pm = options.pm || bundle['dayPeriods-format-wide-pm']; + if(!options.strict){ + var period = /\./g; + v = v.replace(period,'').toLowerCase(); + am = am.replace(period,'').toLowerCase(); + pm = pm.replace(period,'').toLowerCase(); + } + if(options.strict && v != am && v != pm){ + return false; + } + + // we might not have seen the hours field yet, so store the state and apply hour change later + amPm = (v == pm) ? 'p' : (v == am) ? 'a' : ''; + break; + case 'K': //hour (1-24) + if(v == 24){ v = 0; } + // fallthrough... + case 'h': //hour (1-12) + case 'H': //hour (0-23) + case 'k': //hour (0-11) + //in the 12-hour case, adjusting for am/pm requires the 'a' part + //which could come before or after the hour, so we will adjust later + result[3] = Number(v); + break; + case 'm': //minutes + result[4] = Number(v); + break; + case 's': //seconds + result[5] = Number(v); + break; + case 'S': //milliseconds + result[6] = Number(v); + } + return true; + }); + + var hours = +result[3]; + if(amPm === 'p' && hours < 12){ + result[3] = hours + 12; //e.g., 3pm -> 15 + }else if(amPm === 'a' && hours == 12){ + result[3] = 0; //12am -> 0 + } + var dateObject = new buddhistDate(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); + return dateObject; + }; + + + function _processPattern(pattern, applyPattern, applyLiteral, applyAll){ + // summary: Process a pattern with literals in it + + // Break up on single quotes, treat every other one as a literal, except '' which becomes ' + var identity = function(x){return x;}; + applyPattern = applyPattern || identity; + applyLiteral = applyLiteral || identity; + applyAll = applyAll || identity; + + //split on single quotes (which escape literals in date format strings) + //but preserve escaped single quotes (e.g., o''clock) + var chunks = pattern.match(/(''|[^'])+/g); + var literal = pattern.charAt(0) == "'"; + + dojo.forEach(chunks, function(chunk, i){ + if(!chunk){ + chunks[i]=''; + }else{ + chunks[i]=(literal ? applyLiteral : applyPattern)(chunk); + literal = !literal; + } + }); + return applyAll(chunks.join('')); + } + + function _buildDateTimeRE (tokens, bundle, options, pattern){ + // based on and similar to dojo.date.locale._buildDateTimeRE + // + + pattern = regexp.escapeString(pattern); + var locale = i18n.normalizeLocale(options.locale); + + return pattern.replace(/([a-z])\1*/ig, function(match){ + + // Build a simple regexp. Avoid captures, which would ruin the tokens list + var s; + var c = match.charAt(0); + var l = match.length; + var p2 = '', p3 = ''; + if(options.strict){ + if(l > 1){ p2 = '0' + '{'+(l-1)+'}'; } + if(l > 2){ p3 = '0' + '{'+(l-2)+'}'; } + }else{ + p2 = '0?'; p3 = '0{0,2}'; + } + switch(c){ + case 'y': + s = '\\d+'; + break; + case 'M': + s = (l>2) ? '\\S+' : p2+'[1-9]|1[0-2]'; + break; + case 'd': + s = '[12]\\d|'+p2+'[1-9]|3[01]'; + break; + case 'E': + s = '\\S+'; + break; + case 'h': //hour (1-12) + s = p2+'[1-9]|1[0-2]'; + break; + case 'k': //hour (0-11) + s = p2+'\\d|1[01]'; + break; + case 'H': //hour (0-23) + s = p2+'\\d|1\\d|2[0-3]'; + break; + case 'K': //hour (1-24) + s = p2+'[1-9]|1\\d|2[0-4]'; + break; + case 'm': + case 's': + s = p2+'\\d|[0-5]\\d'; + break; + case 'S': + s = '\\d{'+l+'}'; + break; + case 'a': + var am = options.am || bundle['dayPeriods-format-wide-am'], + pm = options.pm || bundle['dayPeriods-format-wide-pm']; + if(options.strict){ + s = am + '|' + pm; + }else{ + s = am + '|' + pm; + if(am != am.toLowerCase()){ s += '|' + am.toLowerCase(); } + if(pm != pm.toLowerCase()){ s += '|' + pm.toLowerCase(); } + } + break; + default: + s = ".*"; + } + if(tokens){ tokens.push(match); } + return "(" + s + ")"; // add capture + }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace. Need explicit handling of \xa0 for IE. */ + } + + var _customFormats = []; + dojox.date.buddhist.locale.addCustomFormats = function(/*String*/packageName, /*String*/bundleName){ + // summary: + // Add a reference to a bundle containing localized custom formats to be + // used by date/time formatting and parsing routines. + _customFormats.push({pkg:packageName,name:bundleName}); + }; + + dojox.date.buddhist.locale._getBuddhistBundle = function(/*String*/locale){ + var buddhist = {}; + dojo.forEach(_customFormats, function(desc){ + var bundle = i18n.getLocalization(desc.pkg, desc.name, locale); + buddhist = dojo.mixin(buddhist, bundle); + }, this); + return buddhist; /*Object*/ + }; + + dojox.date.buddhist.locale.addCustomFormats("dojo.cldr","buddhist"); + + dojox.date.buddhist.locale.getNames = function(/*String*/item, /*String*/type, /*String?*/context, /*String?*/locale, /*buddhist Date Object?*/date){ + // summary: + // Used to get localized strings from dojo.cldr for day or month names. + var label; + var lookup = dojox.date.buddhist.locale._getBuddhistBundle(locale); + var props = [item, context, type]; + if(context == 'standAlone'){ + var key = props.join('-'); + label = lookup[key]; + // Fall back to 'format' flavor of name + if(label[0] == 1){ label = undefined; } // kludge, in the absence of real aliasing support in dojo.cldr + } + props[1] = 'format'; + + // return by copy so changes won't be made accidentally to the in-memory model + return (label || lookup[props.join('-')]).concat(); /*Array*/ + }; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/hebrew.js b/js/dojo-release-1.7.2-src/dojox/date/hebrew.js new file mode 100644 index 0000000..ab4c7b4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/hebrew.js @@ -0,0 +1,249 @@ +define(["dojo/_base/kernel", "dojo/date", "./hebrew/Date"], function(dojo, dd, hebrewDate){ + +dojo.getObject("date.hebrew", true, dojox); +dojo.experimental("dojox.date.hebrew"); + +// Utility methods to do arithmetic calculations with hebrew.Dates + +// added for compat to date +dojox.date.hebrew.getDaysInMonth = function(/*hebrew.Date*/month){ + return month.getDaysInHebrewMonth(month.getMonth(), month.getFullYear()); +}; + +//TODO: define hebrew.isLeapYear? Or should it be invalid, since it has different meaning? + +dojox.date.hebrew.compare = function(/*hebrew.Date*/dateheb1, /*hebrew.Date*/dateheb2, /*String?*/portion){ + // summary: + // Compare two hebrew date objects by date, time, or both. + // description: + // Returns 0 if equal, positive if a > b, else negative. + // date1: + // hebrew.Date object + // date2: + // hebrew.Date object. If not specified, the current hebrew.Date is used. + // portion: + // A string indicating the "date" or "time" portion of a Date object. + // Compares both "date" and "time" by default. One of the following: + // "date", "time", "datetime" + + if(dateheb1 instanceof hebrewDate){ + dateheb1 = dateheb1.toGregorian(); + } + if(dateheb2 instanceof hebrewDate){ + dateheb2 = dateheb2.toGregorian(); + } + + return dd.compare.apply(null, arguments); +}; + + +dojox.date.hebrew.add = function(/*dojox.date.hebrew.Date*/date, /*String*/interval, /*int*/amount){ + // based on and similar to dojo.date.add + // summary: + // Add to a Date in intervals of different size, from milliseconds to years + // date: hebrew.Date + // Date object to start with + // interval: + // A string representing the interval. One of the following: + // "year", "month", "day", "hour", "minute", "second", + // "millisecond", "week", "weekday" + // amount: + // How much to add to the date. + + var newHebrDate = new hebrewDate(date); + + switch(interval){ + case "day": + newHebrDate.setDate(date.getDate() + amount); + break; + case "weekday": + var day = date.getDay(); + var remdays = 0; + if(amount < 0 && day == 6){ day = 5; remdays = -1; } + + if((day + amount) < 5 && (day + amount) >= 0){ //in the same week + newHebrDate.setDate(date.getDate() + amount + remdays); + }else{ + var add = (amount > 0) ? 5 : -1; + var adddays = (amount > 0) ? 2 : -2 ; /*first weekend */ + if (amount > 0 && (day == 5 || day == 6)) { remdays = 4 - day; day = 4;} + var newamount = day + amount - add; + var weeks = parseInt(newamount / 5); + var newday = newamount%5; + newHebrDate.setDate(date.getDate() - day+ adddays + weeks * 7 + remdays + newday + add); + } + break; + case "year": + newHebrDate.setFullYear(date.getFullYear() + amount); + break; + case "week": + amount *= 7; + newHebrDate.setDate(date.getDate() + amount); + break; + case "month": + var month = date.getMonth(), + newMonth = month + amount; + if(!date.isLeapYear(date.getFullYear())){ + if(month < 5 && newMonth >= 5){ newMonth++;} + else if (month > 5 && newMonth <= 5){ newMonth--;} + } + newHebrDate.setMonth(newMonth); + break; + case "hour": + newHebrDate.setHours(date.getHours() + amount); + break; + case "minute": + newHebrDate._addMinutes(amount); + break; + case "second": + newHebrDate._addSeconds(amount); + break; + case "millisecond": + newHebrDate._addMilliseconds(amount); + break; + } + + return newHebrDate; // dojox.date.hebrew.Date +}; + +dojox.date.hebrew.difference = function(/*dojox.date.hebrew.Date*/date1, /*dojox.date.hebrew.Date?*/date2, /*String?*/interval){ + // based on and similar to dojo.date.difference + // summary: + // date2 - date1 + // date2 is hebrew.Date object. If not specified, the current hebrew.Date is used. + // interval: + // A string representing the interval. One of the following: + // "year", "month", "day", "hour", "minute", "second", + // "millisecond", "week", "weekday" + // Defaults to "day". + + date2 = date2 || new hebrewDate(); + interval = interval || "day"; + var yearDiff = date2.getFullYear() - date1.getFullYear(); + var delta = 1; // Integer return value + switch(interval){ + case "weekday": + var days = Math.round(dojox.date.hebrew.difference(date1, date2, "day")); + var weeks = parseInt(dojox.date.hebrew.difference(date1, date2, "week")); + var mod = days % 7; + + // Even number of weeks + if(mod == 0){ + days = weeks*5; + }else{ + // Weeks plus spare change (< 7 days) + var adj = 0; + var aDay = date1.getDay(); + var bDay = date2.getDay(); + + weeks = parseInt(days/7); + mod = days % 7; + // Mark the date advanced by the number of + // round weeks (may be zero) + var dtMark = new hebrewDate(date1); + dtMark.setDate(dtMark.getDate()+(weeks*7)); + var dayMark = dtMark.getDay(); + + // Spare change days -- 6 or less + if(days > 0){ + switch(true){ + // Range starts on Fri + case aDay == 5: + adj = -1; + break; + // Range starts on Sat + case aDay == 6: + adj = 0; + break; + // Range ends on Fri + case bDay == 5: + adj = -1; + break; + // Range ends on Sat + case bDay == 6: + adj = -2; + break; + // Range contains weekend + case (dayMark + mod) > 5: + adj = -2; + } + }else if(days < 0){ + switch(true){ + // Range starts on Fri + case aDay == 5: + adj = 0; + break; + // Range starts on Sat + case aDay == 6: + adj = 1; + break; + // Range ends on Fri + case bDay == 5: + adj = 2; + break; + // Range ends on Sat + case bDay == 6: + adj = 1; + break; + // Range contains weekend + case (dayMark + mod) < 0: + adj = 2; + } + } + days += adj; + days -= (weeks*2); + } + delta = days; + break; + case "year": + delta = yearDiff; + break; + case "month": + var startdate = (date2.toGregorian() > date1.toGregorian()) ? date2 : date1; // more + var enddate = (date2.toGregorian() > date1.toGregorian()) ? date1 : date2; + + var month1 = startdate.getMonth(); + var month2 = enddate.getMonth(); + + if(yearDiff == 0){ + delta = ( !date2.isLeapYear(date2.getFullYear()) && startdate.getMonth() > 5 && enddate.getMonth() <=5) ? (startdate.getMonth() - enddate.getMonth() - 1) : + (startdate.getMonth() - enddate.getMonth() ); + }else{ + delta = (!enddate.isLeapYear(enddate.getFullYear()) && month2 < 6) ? (13-month2-1) : (13-month2); + delta += (!startdate.isLeapYear(startdate.getFullYear()) && month1 > 5) ? (month1 -1): month1; + var i = enddate.getFullYear() + 1; + var e = startdate.getFullYear(); + for (i; i < e; i++){ + delta += enddate.isLeapYear(i) ? 13 : 12; + } + } + if(date2.toGregorian() < date1.toGregorian()){ + delta = -delta; + } + break; + case "week": + // Truncate instead of rounding + // Don't use Math.floor -- value may be negative + delta = parseInt(dojox.date.hebrew.difference(date1, date2, "day")/7); + break; + case "day": + delta /= 24; + // fallthrough + case "hour": + delta /= 60; + // fallthrough + case "minute": + delta /= 60; + // fallthrough + case "second": + delta /= 1000; + // fallthrough + case "millisecond": + delta *= date2.toGregorian().getTime()- date1.toGregorian().getTime(); + } + + // Round for fractional values and DST leaps + return Math.round(delta); // Number (integer) +}; +return dojox.date.hebrew; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/hebrew/Date.js b/js/dojo-release-1.7.2-src/dojox/date/hebrew/Date.js new file mode 100644 index 0000000..de291d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/hebrew/Date.js @@ -0,0 +1,720 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "./numerals" +], function(dojo, declare, numerals){ + +dojo.getObject("date.hebrew.Date", true, dojox); +dojo.experimental("dojox.date.hebrew.Date"); + +dojo.declare("dojox.date.hebrew.Date", null, { + // summary: A Date-like object which implements the Hebrew calendar + // + // description: + // A Date-like object which implements the Hebrew Calendar. Because this object + // implements many of the same methods as the native JavaScript Date object, which + // implements the Gregorian calendar, it can often be used its place. Note that + // this object does not extend Date or use its prototype. + // + // example: + // | dojo.require("dojox.date.hebrew.Date"); + // | + // | var date = new dojox.date.hebrew.Date(); + // | console.log(date.getFullYear()+'\'+date.getMonth()+'\'+date.getDate()); + + // Hebrew date calculations are performed in terms of days, hours, and + // "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds. + //_HOUR_PARTS: 1080, + //_DAY_PARTS: 24*1080, + + // An approximate value for the length of a lunar month. + // It is used to calculate the approximate year and month of a given + // absolute date. + //_MONTH_FRACT: 12*1080 + 793, + //_MONTH_PARTS: 29*24*1080 + 12*1080 + 793, + + // The time of the new moon (in parts) on 1 Tishri, year 1 (the epoch) + // counting from noon on the day before. BAHARAD is an abbreviation of + // Bet (Monday), Hey (5 hours from sunset), Resh-Daled (204). + //_BAHARAD: 11*1080 + 204, + + // The Julian day of the Gregorian epoch, that is, January 1, 1 on the + // Gregorian calendar. + //_JAN_1_1_JULIAN_DAY: 1721426, + + /** + * The lengths of the Hebrew months. This is complicated, because there + * are three different types of years, or six if you count leap years. + * Due to the rules for postponing the start of the year to avoid having + * certain holidays fall on the sabbath, the year can end up being three + * different lengths, called "deficient", "normal", and "complete". + */ + + //"Absolute" indexes of months: Tishri - 0, Heshvan - 1, Kislev - 2, Tevet - 3, Shevat - 4, Adar I (leap years only) - 5, Adar - 6, Nisan - 7, Iyar - 8, Sivan - 9, Tammuz-10, Av - 11, Elul - 12. + + _MONTH_LENGTH: [ + // Deficient Normal Complete + [ 30, 30, 30 ], //Tishri 0 + [ 29, 29, 30 ], //Heshvan 1 + [ 29, 30, 30 ], //Kislev 2 + [ 29, 29, 29 ], //Tevet 3 + [ 30, 30, 30 ], //Shevat 4 + [ 30, 30, 30 ], //Adar I (leap years only) 5 + [ 29, 29, 29 ], //Adar 6 + [ 30, 30, 30 ], //Nisan 7 + [ 29, 29, 29 ], //Iyar 8 + [ 30, 30, 30 ], //Sivan 9 + [ 29, 29, 29 ], //Tammuz 10 + [ 30, 30, 30 ], //Av 11 + [ 29, 29, 29 ] //Elul 12 + ], + + /** + * The cumulative # of days to the end of each month in a non-leap year + * Although this can be calculated from the MONTH_LENGTH table, + * keeping it around separately makes some calculations a lot faster + */ + _MONTH_START: [ + // Deficient Normal Complete + [ 0, 0, 0 ], // (placeholder) + [ 30, 30, 30 ], // Tishri + [ 59, 59, 60 ], // Heshvan + [ 88, 89, 90 ], // Kislev + [ 117, 118, 119 ], // Tevet + [ 147, 148, 149 ], // Shevat + [ 147, 148, 149 ], // (Adar I placeholder) + [ 176, 177, 178 ], // Adar + [ 206, 207, 208 ], // Nisan + [ 235, 236, 237 ], // Iyar + [ 265, 266, 267 ], // Sivan + [ 294, 295, 296 ], // Tammuz + [ 324, 325, 326 ], // Av + [ 353, 354, 355 ] // Elul + ], + + /** + * The cumulative # of days to the end of each month in a leap year + */ + _LEAP_MONTH_START: [ + // Deficient Normal Complete + [ 0, 0, 0 ], // (placeholder) + [ 30, 30, 30 ], // Tishri + [ 59, 59, 60 ], // Heshvan + [ 88, 89, 90 ], // Kislev + [ 117, 118, 119 ], // Tevet + [ 147, 148, 149 ], // Shevat + [ 177, 178, 179 ], // Adar I + [ 206, 207, 208 ], // Adar II + [ 236, 237, 238 ], // Nisan + [ 265, 266, 267 ], // Iyar + [ 295, 296, 297 ], // Sivan + [ 324, 325, 326 ], // Tammuz + [ 354, 355, 356 ], // Av + [ 383, 384, 385 ] // Elul + ], + + _GREGORIAN_MONTH_COUNT: [ + //len len2 st st2 + [ 31, 31, 0, 0 ], // Jan + [ 28, 29, 31, 31 ], // Feb + [ 31, 31, 59, 60 ], // Mar + [ 30, 30, 90, 91 ], // Apr + [ 31, 31, 120, 121 ], // May + [ 30, 30, 151, 152 ], // Jun + [ 31, 31, 181, 182 ], // Jul + [ 31, 31, 212, 213 ], // Aug + [ 30, 30, 243, 244 ], // Sep + [ 31, 31, 273, 274 ], // Oct + [ 30, 30, 304, 305 ], // Nov + [ 31, 31, 334, 335 ] // Dec + // len length of month + // len2 length of month in a leap year + // st days in year before start of month + // st2 days in year before month in leap year + ], + + _date: 0, + _month: 0, + _year: 0, + _hours: 0, + _minutes: 0, + _seconds: 0, + _milliseconds: 0, + _day: 0, + + constructor: function(){ + // summary: initialize the date object value + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | var date2 = new dojox.date.hebrew.Date(date1); + // | + // | var date3 = new dojox.date.hebrew.Date(5768,2,12); + + var len = arguments.length; + if(!len){// use the current date value, added "" to the similarity to date + this.fromGregorian(new Date()); + }else if(len == 1){ + var arg0 = arguments[0]; + if(typeof arg0 == "number"){ // this is time "valueof" + arg0 = new Date(arg0); + } + + if(arg0 instanceof Date){ + this.fromGregorian(arg0); + }else if(arg0 == ""){ + // date should be invalid. Dijit relies on this behavior. + this._date = new Date(""); //TODO: should this be NaN? _date is not a Date object + }else{ // this is hebrew.Date object + this._year = arg0._year; + this._month = arg0._month; + this._date = arg0._date; + this._hours = arg0._hours; + this._minutes = arg0._minutes; + this._seconds = arg0._seconds; + this._milliseconds = arg0._milliseconds; + } + }else if(len >= 3){ + // YYYY, MM, DD arguments passed, month is from 0-12, "absolute" index of month + this._year += arguments[0]; + this._month += arguments[1]; + this._date += arguments[2]; + + if(this._month > 12){ + console.warn("the month is incorrect , set 0 " + this._month + " " + this._year ); + this._month = 0; + } + this._hours += arguments[3] || 0; + this._minutes += arguments[4] || 0; + this._seconds += arguments[5] || 0; + this._milliseconds += arguments[6] || 0; + } + + this._setDay(); + }, + + getDate: function(){ + // summary: returns the date value (1 - 30) + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | console.log(date1.getDate()); + + return this._date; // int + }, + + getDateLocalized: function(/*String?*/locale){ + // summary: returns the date value as hebrew numerals for the Hebrew locale, + // a number for all others. + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | console.log(date1.getDate()); + + return (locale || dojo.locale).match(/^he(?:-.+)?$/) ? + numerals.getDayHebrewLetters(this._date) : this.getDate(); + }, + + getMonth: function(){ + // summary: returns the month value (0 - 12) + // + // description: the result is the index in the month array: + // 0. Tishri + // 1. Heshvan + // 2. Kislev + // 3. Tevet + // 4. Shevat + // 5. Adar I (leap years only) + // 6. Adar + // 7. Nisan + // 8. Iyar + // 9. Sivan + // 10. Tammuz + // 11. Av + // 12. Elul - 12 + // For non leap years, for months after Shevat, the actual position of + // the month in the year (used for short format) is less than + // the "absolute" index by 1. + // + // example: + // | var date1 = new dojox.date.hebrew.Date(5769, 6, 1); + // | + // | console.log(date1.getMonth()+1); + // | >> 7 + + return this._month; + }, + + getFullYear: function(){ + // summary: returns the Year value + // + // example: + // | var date1 = new dojox.date.hebrew.Date(5769, 6, 1); + // | + // | console.log(date1.getFullYear()); + // | >> 5769 + return this._year; + }, + + getHours: function(){ + //summary: returns the hour value + return this._hours; + }, + + getMinutes: function(){ + //summary: returns the minutes value + + return this._minutes; + }, + + getSeconds: function(){ + //summary: returns the seconds value + return this._seconds; + }, + + getMilliseconds: function(){ + //summary: returns the milliseconds value + + return this._milliseconds; + }, + + setDate: function(/*number*/date){ + // summary: sets the date number for a given month + // example: + // | var date1 = new dojox.date.hebrew.Date(5769, 6, 1); + // | date1.setDate(2); + + date = +date; + var mdays; + if(date>0){ + while (date > (mdays = this.getDaysInHebrewMonth(this._month, this._year))){ + date -= mdays; + this._month++; + if(this._month >= 13){this._year++; this._month -= 13;} + } + }else{ + while(date<=0){ + mdays = this.getDaysInHebrewMonth((this._month-1)>=0 ? (this._month-1) : 12, ((this._month-1)>=0)? this._year : this._year-1); + this._month--; + if(this._month < 0){this._year--; this._month += 13;} + date += mdays; + } + } + this._date = date; + this._setDay(); + return this; + }, + + + setFullYear: function(/*number*/year, /*number?*/month, /*number?*/ date){ + // summary: set the year + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | date1.setFullYear(5768); + // | date1.setFullYear(5768, 1, 1); + + this._year = year = +year; + if(!this.isLeapYear(year) && this._month==5){ //incorrect month number for non leap year + this._month++; + } + + if(month !== undefined){this.setMonth(month);} + if(date !== undefined){this.setDate(date);} + + var dnum = this.getDaysInHebrewMonth(this._month, this._year); + if(dnum < this._date){ + this._date = dnum; + } // if the date in this month more than number of the days in this month + + this._setDay(); + return this; + }, + + setMonth: function(/*number*/month){ + // summary: sets the month. You should use "absolute" index in the month array: + // 0. Tishri + // 1. Heshvan + // 2. Kislev + // 3. Tevet + // 4. Shevat + // 5. Adar I (leap years only) + // 6. Adar + // 7. Nisan + // 8. Iyar + // 9. Sivan + // 10. Tammuz + // 11. Av + // 12. Elul - 12 + // For non leap years, for months after Shevat, the actual position of + // the month in the year (used for short format) is less than + // the "absolute" index by 1. + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | date1.setMonth(0); //first month + + month = +month; // coerce to a Number + if(!this.isLeapYear(this._year) && month == 5){month++;} + + if(month>=0){ + while(month >12){ + this._year++; + month -= 13; + if (!this.isLeapYear(this._year) && month >= 5){month++;} + } + }else{ + while(month<0){ + this._year--; + month += (!this.isLeapYear(this._year) && month < -7) ? 12 : 13; + } + } + + this._month = month; + + var dnum = this.getDaysInHebrewMonth(this._month, this._year); + if(dnum < this._date){ + this._date = dnum; + } // if the date in this month more than number of the days in this month + + this._setDay(); + return this; + }, + + setHours: function(){ + // summary: sets the hour + // + // description: Sets the hour and optionally minutes, seconds, milliseconds also. + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | date1.setHours(12, 30, 0, 0); + + var hours_arg_no = arguments.length; + var hours = 0; + if(hours_arg_no >= 1){ + hours += +arguments[0]; + } + + if(hours_arg_no >= 2){ + this._minutes += +arguments[1]; + } + + if(hours_arg_no >= 3){ + this._seconds += +arguments[2]; + } + + if(hours_arg_no == 4){ + this._milliseconds += +arguments[3]; + } + + while(hours >= 24){ + this._date++; + var mdays = this.getDaysInHebrewMonth(this._month, this._year); + if(this._date > mdays) + { + this._month++; + if(!this.isLeapYear(this._year) && this._month==5){ this._month++; } + if(this._month >= 13){this._year++; this._month -= 13;} + this._date -= mdays; + } + hours -= 24; + } + this._hours = hours; + this._setDay(); + return this; + }, + + _addMinutes: function(/*Number*/minutes){ + minutes += this._minutes; + this.setMinutes(minutes); + this.setHours(this._hours + parseInt(minutes / 60)); + return this; + }, + + _addSeconds: function(/*Number*/seconds){ + seconds += this._seconds; + this.setSeconds(seconds); + this._addMinutes(parseInt(seconds / 60)); + return this; + }, + + _addMilliseconds: function(/*Number*/milliseconds){ + milliseconds += this._milliseconds; + this.setMilliseconds(milliseconds); + this._addSeconds(parseInt(milliseconds / 1000)); + return this; + }, + + setMinutes: function(/*Number*/minutes){ + //summary: sets the minutes (0-59) only. + this._minutes = minutes % 60; + return this; + }, + + setSeconds: function(/*Number*/seconds){ + //summary: sets the seconds (0-59) only. + this._seconds = seconds % 60; + return this; + }, + + setMilliseconds: function(/*Number*/milliseconds){ + this._milliseconds = milliseconds % 1000; + return this; + }, + + _setDay: function(){ + var day = this._startOfYear(this._year); + if(this._month != 0){ + day += (this.isLeapYear(this._year) ? this._LEAP_MONTH_START : this._MONTH_START)[this._month || 0][this._yearType(this._year)]; + } + day += this._date - 1; + this._day = (day+1) % 7; + }, + + toString: function(){ + // summary: returns a string representation of the date in "dd, MM, yyyy HH:mm:ss" format + // + // description: returns a string representation of the date in "dd, MM, yyyy HH:mm:ss" format (all numeric) + // For user presentation, use dojox.date.hebrew.locale.format which will present in the appropriate language + // and format. toString() language- and culturally-specific conventions to keep this module free of + // dependencies on dojox.date.locale and dojo.cldr. + // + // example: + // | var date1 = new dojox.date.hebrew.Date(5769, 6, 1); + // | console.log(date1.toString()); + // | >>> "1, 6, 5769 0:0:0" + return this._date + ", " + this._month + ", " + this._year + " " + this._hours + ":" + this._minutes + ":" + this._seconds; // String + }, + + // ported from the Java class com.ibm.icu.util.HebrewCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + getDaysInHebrewMonth: function(/*Number*/month, /*Number*/ year){ + // summary: returns the number of days in the given month and year + + // Aside from the leap month, these two months can vary: 1=HESHVAN, 2=KISLEV + // The rest are a fixed length + var yearType = (month == 1 || month == 2) ? this._yearType(year) : 0; + return (!this.isLeapYear(this._year) && month == 5) ? 0 : this._MONTH_LENGTH[month][yearType]; + }, + + // ported from the Java class com.ibm.icu.util.HebrewCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + _yearType: function(/*Number*/year){ + var yearLength = this._handleGetYearLength(Number(year)); + if(yearLength > 380){ + yearLength -= 30; // Subtract length of leap month. + } + + var yearType = yearLength - 353; + if (yearType < 0 || yearType > 2){ + throw new Error("Illegal year length " + yearLength + " in year " + year); + } + return yearType; + }, + + // ported from the Java class com.ibm.icu.util.HebrewCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + _handleGetYearLength: function(/*number*/eyear){ + return this._startOfYear(eyear+1) - this._startOfYear(eyear); + }, + + // ported from the Java class com.ibm.icu.util.HebrewCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + _startOfYear: function(/*number*/year){ + var months = Math.floor((235 * year - 234) / 19), // # of months before year + frac = months * (12*1080 + 793) + 11*1080 + 204/*BAHARAD*/, // Fractional part of day # + day = months * 29 + Math.floor(frac / (24*1080)); // Whole # part of calculation + frac %= 24*1080; // Time of day + + var wd = day % 7; // Day of week (0 == Monday) + + if(wd == 2 || wd == 4 || wd == 6){ + // If the 1st is on Sun, Wed, or Fri, postpone to the next day + day += 1; + wd = day % 7; + } + if(wd == 1 && frac > 15 * 1080 + 204 && !this.isLeapYear(year)){ + // If the new moon falls after 3:11:20am (15h204p from the previous noon) + // on a Tuesday and it is not a leap year, postpone by 2 days. + // This prevents 356-day years. + day += 2; + }else if(wd == 0 && frac > 21 * 1080 + 589 && this.isLeapYear(year-1)){ + // If the new moon falls after 9:32:43 1/3am (21h589p from yesterday noon) + // on a Monday and *last* year was a leap year, postpone by 1 day. + // Prevents 382-day years. + day += 1; + } + + return day; + }, + + // ported from the Java class com.ibm.icu.util.HebrewCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + isLeapYear: function(/*Number*/year){ + // summary: + // Determines if the year (argument) is a leap year + // description: The Leap year contains additional month adar sheni + // + //return (year * 12 + 17) % 19 >= 12; + var x = (year*12 + 17) % 19; + return x >= ((x < 0) ? -7 : 12); + }, + + + fromGregorian: function(/*Date*/gdate){ + // summary: This function sets this Date to the Hebrew Date corresponding to the Gregorian Date + // example: + // | var dateHebrew = new dojox.date.hebrew.Date(); + // | var dateGregorian = new Date(2008,10,12); + // | dateHebrew.fromGregorian(dateGregorian); + + var result = (!isNaN(gdate)) ? this._computeHebrewFields(gdate) : NaN; + this._year = (!isNaN(gdate)) ? result[0] : NaN; + this._month = (!isNaN(gdate))? result[1] : NaN; + this._date = (!isNaN(gdate)) ? result[2] : NaN; + this._hours = gdate.getHours(); + this._milliseconds = gdate.getMilliseconds(); + this._minutes = gdate.getMinutes(); + this._seconds = gdate.getSeconds(); + if (!isNaN(gdate)) this._setDay(); + return this; + }, + + // ported from the Java class com.ibm.icu.util.HebrewCalendar.handleComputeFields from ICU4J v3.6.1 at http://www.icu-project.org/ + _computeHebrewFields: function(/*Date*/gdate){ + var julianDay = this._getJulianDayFromGregorianDate(gdate), + d = julianDay - 347997, + m = Math.floor((d * 24*1080) / (29*24*1080 + 12*1080 + 793)), // Months (approx) + year = Math.floor((19 * m + 234) / 235) + 1, // Years (approx) + ys = this._startOfYear(year), // 1st day of year + dayOfYear = (d - ys); + // Because of the postponement rules, it's possible to guess wrong. Fix it. + while(dayOfYear < 1){ + year--; + ys = this._startOfYear(year); + dayOfYear = d - ys; + } + + // Now figure out which month we're in, and the date within that month + + var typeofYear = this._yearType(year), + monthStart = this.isLeapYear(year) ? this._LEAP_MONTH_START : this._MONTH_START, + month = 0; + + while(dayOfYear > monthStart[month][typeofYear]){ + month++; + } + month--; + var dayOfMonth = dayOfYear - monthStart[month][typeofYear]; + return [year, month, dayOfMonth]; + }, + + // ported from the Java class com.ibm.icu.util.Calendar.computeGregorianFields from ICU4J v3.6.1 at http://www.icu-project.org/ + toGregorian: function(){ + // summary: returns the equivalent Grogorian date value as a native Date object + // example: + // | var dateHebrew = new dojox.date.hebrew.Date(5768,11,20); + // | var dateGregorian = dateHebrew.toGregorian(); + + var hYear = this._year || 0, + hMonth = this._month || 0, + hDate = this._date || 0, + day = this._startOfYear(hYear); + + if(hMonth != 0){ + day += (this.isLeapYear(hYear) ? this._LEAP_MONTH_START : this._MONTH_START)[hMonth][this._yearType(hYear)]; + } + + var julianDay = (hDate + day + 347997), + // The Gregorian epoch day is zero for Monday January 1, year 1. + gregorianEpochDay = julianDay - 1721426; + + // Here we convert from the day number to the multiple radix + // representation. We use 400-year, 100-year, and 4-year cycles. + // For example, the 4-year cycle has 4 years + 1 leap day; giving + // 1461 == 365*4 + 1 days. + var rem = []; + var n400 = this._floorDivide(gregorianEpochDay , 146097, rem), // 400-year cycle length + n100 = this._floorDivide(rem[0] , 36524, rem), // 100-year cycle length + n4 = this._floorDivide(rem[0] , 1461, rem), // 4-year cycle length + n1 = this._floorDivide(rem[0] , 365, rem), + year = 400*n400 + 100*n100 + 4*n4 + n1, + dayOfYear = rem[0]; // zero-based day of year + + if(n100 == 4 || n1 == 4){ + dayOfYear = 365; // Dec 31 at end of 4- or 400-yr cycle + }else{ + ++year; + } + + var isLeap = !(year%4) && // equiv. to (year%4 == 0) + (year%100 || !(year%400)), + correction = 0, + march1 = isLeap ? 60 : 59; // zero-based DOY for March 1 + if(dayOfYear >= march1){ correction = isLeap ? 1 : 2; } + var month = Math.floor((12 * (dayOfYear + correction) + 6) / 367); // zero-based month + var dayOfMonth = dayOfYear - + this._GREGORIAN_MONTH_COUNT[month][isLeap ? 3 : 2] + 1; // one-based DOM + + return new Date(year, month, dayOfMonth, this._hours, this._minutes, this._seconds, this._milliseconds); // Date + }, + _floorDivide: function(numerator, denominator, remainder){ + if(numerator >= 0){ + remainder[0] = (numerator % denominator); + return Math.floor(numerator / denominator); + } + var quotient = Math.floor(numerator / denominator); + remainder[0] = numerator - (quotient * denominator); + return quotient; + }, + + getDay: function(){ + // summary: returns weekday value (0 - 6) + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | console.log(date1.getDay()); + + var hYear = this._year, + hMonth = this._month, + hDate = this._date, + day = this._startOfYear(hYear); + + if(hMonth != 0){ + day += (this.isLeapYear(hYear) ? this._LEAP_MONTH_START : this._MONTH_START)[hMonth][this._yearType(hYear)]; + } + + day += hDate - 1; + return (day+1) % 7; + }, + + // ported from the Java class com.ibm.icu.util.Calendar.computeGregorianMonthStart from ICU4J v3.6.1 at http://www.icu-project.org/ + _getJulianDayFromGregorianDate: function(gdate){ + //summary: returns the Julian day of a Gregorian date + + var year = gdate.getFullYear(), + month = gdate.getMonth(), + d = gdate.getDate(), + isLeap = !(year%4) && (year%100 || !(year%400)), //TODO: dup + y = year - 1; + // This computation is actually ... + (_JAN_1_1_JULIAN_DAY - 3) + 2. + // Add 2 because Gregorian calendar starts 2 days after Julian + // calendar. + var julianDay = 365*y + Math.floor(y/4) - Math.floor(y/100) + + Math.floor(y/400) + 1721426 - 1; + // At this point julianDay indicates the day BEFORE the first day + // of January 1, of the Gregorian calendar. + if(month > 0) { + julianDay += this._GREGORIAN_MONTH_COUNT[month][isLeap ? 3 : 2]; + } + + julianDay += d; + return julianDay; + } +}); + +dojox.date.hebrew.Date.prototype.valueOf = function(){ + return this.toGregorian().valueOf(); +}; +return dojox.date.hebrew.Date; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/hebrew/locale.js b/js/dojo-release-1.7.2-src/dojox/date/hebrew/locale.js new file mode 100644 index 0000000..5b0e1db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/hebrew/locale.js @@ -0,0 +1,510 @@ +define(["dojo/main", "dojo/date", "dojo/i18n", "dojo/regexp", "dojo/string", "./Date", "./numerals", "dojo/i18n!dojo/cldr/nls/hebrew"], + function(dojo, dd, i18n, regexp, string, hebrewDate, numerals){ + + dojo.getObject("date.hebrew.locale", true, dojox); + dojo.experimental("dojox.date.hebrew.locale"); + + //Load the bundles containing localization information for + // names and formats + dojo.requireLocalization("dojo.cldr", "hebrew"); + + // Format a pattern without literals + function formatPattern(dateObject, bundle, locale, fullYear, pattern){ + + return pattern.replace(/([a-z])\1*/ig, function(match){ + var s, pad; + var c = match.charAt(0); + var l = match.length; + var widthList = ["abbr", "wide", "narrow"]; + + switch(c){ + case 'y': + if(locale.match(/^he(?:-.+)?$/)){ + s = numerals.getYearHebrewLetters(dateObject.getFullYear()); + }else{ + s = String(dateObject.getFullYear()); + } + break; + case 'M': + var m = dateObject.getMonth(); + if(l<3){ + if(!dateObject.isLeapYear(dateObject.getFullYear()) && m>5){m--;} + if(locale.match(/^he(?:-.+)?$/)){ + s = numerals.getMonthHebrewLetters(m); + }else{ + s = m+1; pad = true; + } + }else{ + var monthNames = dojox.date.hebrew.locale.getNames('months',widthList[l-3], 'format', locale, dateObject); + s = monthNames[m]; + } + break; + case 'd': + if(locale.match(/^he(?:-.+)?$/)){ + s = dateObject.getDateLocalized(locale); + }else{ + s = dateObject.getDate(); pad = true; + } + break; + case 'E': + var d = dateObject.getDay(); + if(l<3){ + s = d+1; pad = true; + }else{ + var propD = ["days", "format", widthList[l-3]].join("-"); + s = bundle[propD][d]; + } + break; + case 'a': + var timePeriod = (dateObject.getHours() < 12) ? 'am' : 'pm'; + s = bundle['dayPeriods-format-wide-' + timePeriod]; + break; + case 'h': + case 'H': + case 'K': + case 'k': + var h = dateObject.getHours(); + // strange choices in the date format make it impossible to write this succinctly + switch (c){ + case 'h': // 1-12 + s = (h % 12) || 12; + break; + case 'H': // 0-23 + s = h; + break; + case 'K': // 0-11 + s = (h % 12); + break; + case 'k': // 1-24 + s = h || 24; + break; + } + pad = true; + break; + case 'm': + s = dateObject.getMinutes(); pad = true; + break; + case 's': + s = dateObject.getSeconds(); pad = true; + break; + case 'S': + s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l-3)); pad = true; + break; + case 'z': + s = ""; + break; + default: + throw new Error("dojox.date.hebrew.locale.formatPattern: invalid pattern char: "+pattern); + } + if(pad){ s = string.pad(s, l); } + return s; + }); + } + + dojox.date.hebrew.locale.format = function(/*hebrew.Date*/dateObject, /*object?*/options){ + // based on and similar to dojo.date.locale.format + //summary: + // Format a Date object as a String, using settings. + // + // description: + // Create a string from a hebrew.Date object using a known pattern. + // By default, this method formats both date and time from dateObject. + // Default formatting lengths is 'short' + // + // dateObject: + // the date and/or time to be formatted. If a time only is formatted, + // the values in the year, month, and day fields are irrelevant. The + // opposite is true when formatting only dates. + + options = options || {}; + + var locale = i18n.normalizeLocale(options.locale); + var formatLength = options.formatLength || 'short'; + var bundle = dojox.date.hebrew.locale._getHebrewBundle(locale); + var str = []; + + var sauce = dojo.hitch(this, formatPattern, dateObject, bundle, locale, options.fullYear); + if(options.selector == "year"){ + var year = dateObject.getFullYear(); + return locale.match(/^he(?:-.+)?$/) ? + numerals.getYearHebrewLetters(year) : year; + } + if(options.selector != "time"){ + var datePattern = options.datePattern || bundle["dateFormat-"+formatLength]; + if(datePattern){str.push(_processPattern(datePattern, sauce));} + } + if(options.selector != "date"){ + var timePattern = options.timePattern || bundle["timeFormat-"+formatLength]; + if(timePattern){str.push(_processPattern(timePattern, sauce));} + } + var result = str.join(" "); //TODO: use locale-specific pattern to assemble date + time + + return result; // String + }; + + dojox.date.hebrew.locale.regexp = function(/*object?*/options){ + // based on and similar to dojo.date.locale.regexp + // summary: + // Builds the regular needed to parse a hebrew.Date + + return dojox.date.hebrew.locale._parseInfo(options).regexp; // String + }; + + dojox.date.hebrew.locale._parseInfo = function(/*oblect?*/options){ + /* based on and similar to dojo.date.locale._parseInfo */ + + options = options || {}; + var locale = i18n.normalizeLocale(options.locale); + var bundle = dojox.date.hebrew.locale._getHebrewBundle(locale); + + var formatLength = options.formatLength || 'short'; + var datePattern = options.datePattern || bundle["dateFormat-" + formatLength]; + var timePattern = options.timePattern || bundle["timeFormat-" + formatLength]; + + var pattern; + if(options.selector == 'date'){ + pattern = datePattern; + }else if(options.selector == 'time'){ + pattern = timePattern; + }else{ + pattern = (timePattern === undefined) ? datePattern : datePattern + ' ' + timePattern; //hebrew resource file does not contain time patterns - a bug? + } + + var tokens = []; + + var re = _processPattern(pattern, dojo.hitch(this, _buildDateTimeRE, tokens, bundle, options)); + return {regexp: re, tokens: tokens, bundle: bundle}; + }; + + dojox.date.hebrew.locale.parse = function(/*String*/value, /*Object?*/options){ + // based on and similar to dojo.date.locale.parse + // summary: This function parse string date value according to options + // example: + // | var dateHebrew = dojox.date.hebrew.locale.parse('11/10/5740', {datePattern:'dd/MM/yy', selector:'date'}); + // | in Hebrew locale string for parsing contains Hebrew Numerals + // | + // | options = {datePattern:'dd MMMM yy', selector:'date'}; + // | + // | y - year + // | M, MM - short month + // | MMM, MMMM - long month + // | d - date + // | a - am, pm + // | E, EE, EEE, EEEE - week day + // | + // | h, H, k, K, m, s, S, - time format + + value = value.replace(/[\u200E\u200F\u202A-\u202E]/g, ""); //remove special chars + + if(!options){options={};} + var info = dojox.date.hebrew.locale._parseInfo(options); + + var tokens = info.tokens, bundle = info.bundle; + var re = new RegExp("^" + info.regexp + "$"); + + var match = re.exec(value); + + var locale = i18n.normalizeLocale(options.locale); + + if(!match){ + console.debug("dojox.date.hebrew.locale.parse: value "+value+" doesn't match pattern " + re); + return null; + } // null + + var date, date1; + + //var result = [1970,0,1,0,0,0,0]; // + var result = [5730,3,23,0,0,0,0]; // hebrew date for [1970,0,1,0,0,0,0] used in gregorian locale + var amPm = ""; + var mLength = 0; + var widthList = ["abbr", "wide", "narrow"]; + var valid = dojo.every(match, function(v, i){ + if(!i){return true;} + var token=tokens[i-1]; + var l=token.length; + switch(token.charAt(0)){ + case 'y': + if(locale.match(/^he(?:-.+)?$/)){ + result[0] = numerals.parseYearHebrewLetters(v); + }else{ + result[0] = Number(v); + } + break; + case 'M': + //if it is short format, month is one letter or two letter with "geresh" + if(l>2){ + //we do not know here if the year is leap or not + var months = dojox.date.hebrew.locale.getNames('months', widthList[l-3], 'format', locale, new hebrewDate(5769, 1, 1)), + leapmonths = dojox.date.hebrew.locale.getNames('months', widthList[l-3], 'format', locale, new hebrewDate(5768, 1, 1)); + if(!options.strict){ + //Tolerate abbreviating period in month part + //Case-insensitive comparison + v = v.replace(".","").toLowerCase(); + months = dojo.map(months, function(s){ return s ? s.replace(".","").toLowerCase() : s; } ); + leapmonths = dojo.map(leapmonths, function(s){ return s ? s.replace(".","").toLowerCase() : s; } ); + } + var monthName = v; + v = dojo.indexOf(months, monthName); + if(v == -1){ + v = dojo.indexOf(leapmonths, monthName); + if(v == -1){ + //console.debug("dojox.date.hebrew.locale.parse: Could not parse month name: second " + v +"'."); + return false; + } + } + mLength = l; + }else{ + if(locale.match(/^he(?:-.+)?$/)){ + v = numerals.parseMonthHebrewLetters(v); + }else{ + v--; + } + } + result[1] = Number(v); + break; + case 'D': + result[1] = 0; + // fallthrough... + case 'd': + if(locale.match(/^he(?:-.+)?$/)){ + result[2] = numerals.parseDayHebrewLetters(v); + }else{ + result[2] = Number(v); + } + break; + case 'a': //am/pm + var am = options.am || bundle['dayPeriods-format-wide-am'], + pm = options.pm || bundle['dayPeriods-format-wide-pm']; + if(!options.strict){ + var period = /\./g; + v = v.replace(period,'').toLowerCase(); + am = am.replace(period,'').toLowerCase(); + pm = pm.replace(period,'').toLowerCase(); + } + if(options.strict && v != am && v != pm){ + return false; + } + + // we might not have seen the hours field yet, so store the state and apply hour change later + amPm = (v == pm) ? 'p' : (v == am) ? 'a' : ''; + break; + case 'K': //hour (1-24) + if(v == 24){ v = 0; } + // fallthrough... + case 'h': //hour (1-12) + case 'H': //hour (0-23) + case 'k': //hour (0-11) + //in the 12-hour case, adjusting for am/pm requires the 'a' part + //which could come before or after the hour, so we will adjust later + result[3] = Number(v); + break; + case 'm': //minutes + result[4] = Number(v); + break; + case 's': //seconds + result[5] = Number(v); + break; + case 'S': //milliseconds + result[6] = Number(v); + } + return true; + }); + + var hours = +result[3]; + if(amPm === 'p' && hours < 12){ + result[3] = hours + 12; //e.g., 3pm -> 15 + }else if(amPm === 'a' && hours == 12){ + result[3] = 0; //12am -> 0 + } + var dateObject = new hebrewDate(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // hebrew.Date + //for non leap year, the index of the short month start from adar should be increased by 1 + if(mLength < 3 && result[1] >= 5 && !dateObject.isLeapYear(dateObject.getFullYear())){ + dateObject.setMonth(result[1]+1); + } + return dateObject; // hebrew.Date + }; + + + function _processPattern(pattern, applyPattern, applyLiteral, applyAll){ + //summary: Process a pattern with literals in it + + // Break up on single quotes, treat every other one as a literal, except '' which becomes ' + var identity = function(x){return x;}; + applyPattern = applyPattern || identity; + applyLiteral = applyLiteral || identity; + applyAll = applyAll || identity; + + //split on single quotes (which escape literals in date format strings) + //but preserve escaped single quotes (e.g., o''clock) + var chunks = pattern.match(/(''|[^'])+/g); + var literal = pattern.charAt(0) == "'"; + + dojo.forEach(chunks, function(chunk, i){ + if(!chunk){ + chunks[i]=''; + }else{ + chunks[i]=(literal ? applyLiteral : applyPattern)(chunk); + literal = !literal; + } + }); + return applyAll(chunks.join('')); + } + + function _buildDateTimeRE (tokens, bundle, options, pattern){ + // based on and similar to dojo.date.locale._buildDateTimeRE + // + + pattern = regexp.escapeString(pattern); + var locale = i18n.normalizeLocale(options.locale); + + return pattern.replace(/([a-z])\1*/ig, function(match){ + + // Build a simple regexp. Avoid captures, which would ruin the tokens list + var s; + var c = match.charAt(0); + var l = match.length; + var p2 = '', p3 = ''; + if(options.strict){ + if(l > 1){ p2 = '0' + '{'+(l-1)+'}'; } + if(l > 2){ p3 = '0' + '{'+(l-2)+'}'; } + }else{ + p2 = '0?'; p3 = '0{0,2}'; + } + switch(c){ + case 'y': + s = '\\S+'; + break; + case 'M': + if(locale.match('^he(?:-.+)?$')){ + s = (l>2) ? '\\S+ ?\\S+' : '\\S{1,4}'; + }else{ + s = (l>2) ? '\\S+ ?\\S+' : p2+'[1-9]|1[0-2]'; + } + break; + case 'd': + if(locale.match('^he(?:-.+)?$')){ + s = '\\S[\'\"\'\u05F3]{1,2}\\S?'; + }else{ + s = '[12]\\d|'+p2+'[1-9]|30'; + } + break; + case 'E': + if(locale.match('^he(?:-.+)?$')){ + s = (l>3) ? '\\S+ ?\\S+' : '\\S'; + }else{ + s = '\\S+'; + } + break; + case 'h': //hour (1-12) + s = p2+'[1-9]|1[0-2]'; + break; + case 'k': //hour (0-11) + s = p2+'\\d|1[01]'; + break; + case 'H': //hour (0-23) + s = p2+'\\d|1\\d|2[0-3]'; + break; + case 'K': //hour (1-24) + s = p2+'[1-9]|1\\d|2[0-4]'; + break; + case 'm': + case 's': + s = p2+'\\d|[0-5]\\d'; + break; + case 'S': + s = '\\d{'+l+'}'; + break; + case 'a': + var am = options.am || bundle['dayPeriods-format-wide-am'], + pm = options.pm || bundle['dayPeriods-format-wide-pm']; + if(options.strict){ + s = am + '|' + pm; + }else{ + s = am + '|' + pm; + if(am != am.toLowerCase()){ s += '|' + am.toLowerCase(); } + if(pm != pm.toLowerCase()){ s += '|' + pm.toLowerCase(); } + } + break; + default: + s = ".*"; + } + if(tokens){ tokens.push(match); } + return "(" + s + ")"; // add capture + }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace. Need explicit handling of \xa0 for IE. */ + } + + var _customFormats = []; + dojox.date.hebrew.locale.addCustomFormats = function(/*String*/packageName, /*String*/bundleName){ + // summary: + // Add a reference to a bundle containing localized custom formats to be + // used by date/time formatting and parsing routines. + // + // description: + // The user may add custom localized formats where the bundle has properties following the + // same naming convention used by dojo.cldr: `dateFormat-xxxx` / `timeFormat-xxxx` + // The pattern string should match the format used by the CLDR. + // See dojo.date.locale.format() for details. + // The resources must be loaded by dojo.requireLocalization() prior to use + + _customFormats.push({pkg:packageName,name:bundleName}); + }; + + dojox.date.hebrew.locale._getHebrewBundle = function(/*String*/locale){ + var hebrew = {}; + dojo.forEach(_customFormats, function(desc){ + var bundle = i18n.getLocalization(desc.pkg, desc.name, locale); + hebrew = dojo.mixin(hebrew, bundle); + }, this); + return hebrew; /*Object*/ + }; + + dojox.date.hebrew.locale.addCustomFormats("dojo.cldr","hebrew"); + + dojox.date.hebrew.locale.getNames = function(/*String*/item, /*String*/type, /*String?*/context, /*String?*/locale, /*dojox.date.hebrew.Date?*/date){ + // summary: + // Used to get localized strings from dojo.cldr for day or month names. + // + // item: + // 'months' || 'days' + // type: + // 'wide' || 'narrow' || 'abbr' (e.g. "Monday", "Mon", or "M" respectively, in English) + // use: + // 'standAlone' || 'format' (default) + // locale: + // override locale used to find the names + // date: + // required for item=months to determine leap month name + // + // using var monthNames = dojox.date.hebrew.locale.getNames('months', 'wide', 'format', 'he', new hebrewDate(5768, 2, 12)); + + var label, + lookup = dojox.date.hebrew.locale._getHebrewBundle(locale), + props = [item, context, type]; + if(context == 'standAlone'){ + var key = props.join('-'); + label = lookup[key]; + // Fall back to 'format' flavor of name + if(label[0] == 1){ label = undefined; } // kludge, in the absence of real aliasing support in dojo.cldr + } + props[1] = 'format'; + + // return by copy so changes won't be made accidentally to the in-memory model + var result = (label || lookup[props.join('-')]).concat(); + + if(item == "months"){ + if(date.isLeapYear(date.getFullYear())){ + // Adar I (6th position in the array) will be used. + // Substitute the leap month Adar II for the regular Adar (7th position) + props.push("leap"); + result[6] = lookup[props.join('-')]; + }else{ + // Remove Adar I but leave an empty position in the array + delete result[5]; + } + } + + return result; /*Array*/ + }; + + return dojox.date.hebrew.locale; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/hebrew/numerals.js b/js/dojo-release-1.7.2-src/dojox/date/hebrew/numerals.js new file mode 100644 index 0000000..9c48809 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/hebrew/numerals.js @@ -0,0 +1,140 @@ +define(["dojo/_base/kernel", "dojo/_base/array"], function(dojo){ + dojo.getObject("date.hebrew.numerals", true, dojox); + dojo.experimental("dojox.date.hebrew.numerals"); + +//Conversion from "Hindi" numerals to Hebrew numerals and vice versa + + var DIG="אבגדהוזחט"; + var TEN="יכלמנסעפצ"; + var HUN="קרשת"; + + var transformChars = function(str, nogrsh){ + str = str.replace("יה", "טו").replace("יו", "טז"); + + if(!nogrsh){ + var len = str.length; + if(len > 1){ + str = str.substr(0, len - 1) + '"' + str.charAt(len - 1); + }else{ + str += "\u05F3"; // 05F3:geresh + } + } + return str; // String + }; + + var parseStrToNumber = function(str){ + var num = 0; + dojo.forEach(str, function(ch){ + var i; + if((i = DIG.indexOf(ch)) != -1){ + num += ++i; + }else if((i = TEN.indexOf(ch)) != -1){ + num += 10 * ++i; + }else if((i = HUN.indexOf(ch)) != -1){ + num += 100 * ++i; + } + }); + return num; //Number + }; + + var convertNumberToStr = function(num){ + var str = "", n = 4, j = 9; + while(num){ + if(num >= n*100){ + str += HUN.charAt(n-1); + num -= n*100; + continue; + }else if(n > 1){ + n--; + continue; + }else if(num >= j*10){ + str += TEN.charAt(j-1); + num -= j*10; + }else if(j > 1){ + j--; + continue; + }else if(num > 0){ + str += DIG.charAt(num-1); + num = 0; + } + } + return str; //String + }; + + dojox.date.hebrew.numerals.getYearHebrewLetters = function(/*Number */ year){ + // summary: converts the year from an integer to Hebrew numerals. + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | document.writeln(dojox.date.hebrew.numerals.getYearHebrewLetters(date1.getFullYear()); + + var rem = year % 1000; + //FIXME: tests include dates outside this range and seem to pass. + // if((year - rem) / 1000 != 5){ throw new Error("Hebrew year "+year+" is not in range 5001-5999");} + return transformChars(convertNumberToStr(rem)); // String + }; + + dojox.date.hebrew.numerals.parseYearHebrewLetters = function(/*String hebrew year*/ year){ + // summary: converts the year written in Hebrew numerals to an integer + // + // example: + // | var date = new dojox.date.hebrew.Date(); + // | date.setFullYear(dojox.date.hebrew.numerals.parseYearHebrewLetters('\u05ea\u05e9\u05e1\u05f4\u05d7')); + + return parseStrToNumber(year) + 5000; // int + }; + + dojox.date.hebrew.numerals.getDayHebrewLetters = function(day, /*boolean?*/ nogrsh){ + // summary: converts an integer to a String representing the number in Hebrew numerals. Can be formatted with or without geresh ׳ + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | document.writeln(dojox.date.hebrew.numerals.getDayHebrewLetters(date1.getDay()); + + return transformChars(convertNumberToStr(day), nogrsh); // String + }; + + dojox.date.hebrew.numerals.parseDayHebrewLetters = function(/*String hebrew*/ day){ + // summary: converts the string containing a Hebrew numeral to an integer + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | date1.setDate(dojox.date.hebrew.numerals.parseDayHebrewLetters('\u05d0')); // ALEPH + return parseStrToNumber(day); // int + }; + + dojox.date.hebrew.numerals.getMonthHebrewLetters = function(/*int*/month){ + // summary: converts an integer representing a month to a String written in Hebrew numerals + // + // example: + // | var date1 = new dojox.date.hebrew.Date(); + // | + // | document.writeln(dojox.date.hebrew.numerals.getMonthHebrewLetters(date1.getMonth()); + + return transformChars(convertNumberToStr(month+1)); // String + }; + + dojox.date.hebrew.numerals.parseMonthHebrewLetters = function(/*String*/monthStr){ + // summary: converts a Hebrew numeral string representing + // a month to an integer. The returned value + // is indexed in the month name array. To use it for + // setMonth, do correction for leap year + // + // example: + // | var date = new dojox.date.hebrew.Date(); + // | var number = dojox.date.hebrew.numerals.parseMonthHebrewLetters("\u05ea\u05de\u05d5\u05d6"); // Tammuz + // | date.setMonth(number); + + //month number from 0 to 12 + var monnum = dojox.date.hebrew.numerals.parseDayHebrewLetters(monthStr) - 1; + + if(monnum == -1 || monnum > 12){ + throw new Error("The month name is incorrect , month = " + monnum); + } + return monnum; + }; + return dojox.date.hebrew.numerals; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/islamic.js b/js/dojo-release-1.7.2-src/dojox/date/islamic.js new file mode 100644 index 0000000..590160e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/islamic.js @@ -0,0 +1,249 @@ +define(["dojo/_base/kernel", "dojo/date", "./islamic/Date"], function(dojo, dd, islamicDate){ + +dojo.getObject("date.islamic", true, dojox); +dojo.experimental("dojox.date.islamic"); + +// Utility methods to do arithmetic calculations with islamic.Dates + + // added for compat to date +dojox.date.islamic.getDaysInMonth = function(/*islamic.Date*/month){ + return month.getDaysInIslamicMonth(month.getMonth(), month.getFullYear()); +}; + +//TODO: define islamic.isLeapYear? Or should it be invalid, since it has different meaning? + +dojox.date.islamic.compare = function(/*islamic.Date*/date1, /*islamic.Date*/date2, /*String?*/portion){ + // summary: + // Compare two islamic date objects by date, time, or both. + // description: + // Returns 0 if equal, positive if a > b, else negative. + // date1: + // islamic.Date object + // date2: + // islamic.Date object. If not specified, the current islamic.Date is used. + // portion: + // A string indicating the "date" or "time" portion of a Date object. + // Compares both "date" and "time" by default. One of the following: + // "date", "time", "datetime" + + if(date1 instanceof islamicDate){ + date1 = date1.toGregorian(); + } + if(date2 instanceof islamicDate){ + date2 = date2.toGregorian(); + } + + return dd.compare.apply(null, arguments); +}; + +dojox.date.islamic.add = function(/*dojox.date.islamic.Date*/date, /*String*/interval, /*int*/amount){ + // based on and similar to dojo.date.add + // summary: + // Add to a Date in intervals of different size, from milliseconds to years + // date: islamic.Date + // Date object to start with + // interval: + // A string representing the interval. One of the following: + // "year", "month", "day", "hour", "minute", "second", + // "millisecond", "week", "weekday" + // amount: + // How much to add to the date. + + var newIslamDate = new islamicDate(date); + + switch(interval){ + case "day": + newIslamDate.setDate(date.getDate() + amount); + break; + case "weekday": + var day = date.getDay(); + if(((day + amount) < 5) && ((day + amount) > 0)){ + newIslamDate.setDate(date.getDate() + amount); + }else{ + var adddays = 0, /*weekend */ + remdays = 0; + if(day == 5){//friday + day = 4; + remdays = (amount > 0) ? -1 : 1; + }else if(day == 6){ //shabat + day = 4; + remdays = (amount > 0) ? -2 : 2; + } + var add = (amount > 0) ? (5 - day - 1) : -day + var amountdif = amount - add; + var div = parseInt(amountdif / 5); + if(amountdif % 5 != 0){ + adddays = (amount > 0) ? 2 : -2; + } + adddays = adddays + div * 7 + amountdif % 5 + add; + newIslamDate.setDate(date.getDate() + adddays + remdays); + } + break; + case "year": + newIslamDate.setFullYear(date.getFullYear() + amount); + break; + case "week": + amount *= 7; + newIslamDate.setDate(date.getDate() + amount); + break; + case "month": + var month = date.getMonth(); + newIslamDate.setMonth(month + amount); + break; + case "hour": + newIslamDate.setHours(date.getHours() + amount); + break; + case "minute": + newIslamDate._addMinutes(amount); + break; + case "second": + newIslamDate._addSeconds(amount); + break; + case "millisecond": + newIslamDate._addMilliseconds(amount); + break; + } + + return newIslamDate; // dojox.date.islamic.Date +}; + +dojox.date.islamic.difference = function(/*dojox.date.islamic.Date*/date1, /*dojox.date.islamic.Date?*/date2, /*String?*/interval){ + // based on and similar to dojo.date.difference + // summary: + // date2 - date1 + // date2 is islamic.Date object. If not specified, the current islamic.Date is used. + // interval: + // A string representing the interval. One of the following: + // "year", "month", "day", "hour", "minute", "second", + // "millisecond", "week", "weekday" + // Defaults to "day". + + date2 = date2 || new islamicDate(); + interval = interval || "day"; + var yearDiff = date2.getFullYear() - date1.getFullYear(); + var delta = 1; // Integer return value + switch(interval){ + case "weekday": + var days = Math.round(dojox.date.islamic.difference(date1, date2, "day")); + var weeks = parseInt(dojox.date.islamic.difference(date1, date2, "week")); + var mod = days % 7; + + // Even number of weeks + if(mod == 0){ + days = weeks*5; + }else{ + // Weeks plus spare change (< 7 days) + var adj = 0; + var aDay = date1.getDay(); + var bDay = date2.getDay(); + + weeks = parseInt(days/7); + mod = days % 7; + // Mark the date advanced by the number of + // round weeks (may be zero) + var dtMark = new islamicDate(date1); + dtMark.setDate(dtMark.getDate()+(weeks*7)); + var dayMark = dtMark.getDay(); + + // Spare change days -- 6 or less + if(days > 0){ + switch(true){ + // Range starts on Fri + case aDay == 5: + adj = -1; + break; + // Range starts on Sat + case aDay == 6: + adj = 0; + break; + // Range ends on Fri + case bDay == 5: + adj = -1; + break; + // Range ends on Sat + case bDay == 6: + adj = -2; + break; + // Range contains weekend + case (dayMark + mod) > 5: + adj = -2; + } + }else if(days < 0){ + switch(true){ + // Range starts on Fri + case aDay == 5: + adj = 0; + break; + // Range starts on Sat + case aDay == 6: + adj = 1; + break; + // Range ends on Fri + case bDay == 5: + adj = 2; + break; + // Range ends on Sat + case bDay == 6: + adj = 1; + break; + // Range contains weekend + case (dayMark + mod) < 0: + adj = 2; + } + } + days += adj; + days -= (weeks*2); + } + delta = days; + break; + case "year": + delta = yearDiff; + break; + case "month": + var startdate = (date2.toGregorian() > date1.toGregorian()) ? date2 : date1; // more + var enddate = (date2.toGregorian() > date1.toGregorian()) ? date1 : date2; + + var month1 = startdate.getMonth(); + var month2 = enddate.getMonth(); + + if (yearDiff == 0){ + delta = startdate.getMonth() - enddate.getMonth() ; + }else{ + delta = 12-month2; + delta += month1; + var i = enddate.getFullYear()+1; + var e = startdate.getFullYear(); + for (i; i < e; i++){ + delta += 12; + } + } + if (date2.toGregorian() < date1.toGregorian()){ + delta = -delta; + } + break; + case "week": + // Truncate instead of rounding + // Don't use Math.floor -- value may be negative + delta = parseInt(dojox.date.islamic.difference(date1, date2, "day")/7); + break; + case "day": + delta /= 24; + // fallthrough + case "hour": + delta /= 60; + // fallthrough + case "minute": + delta /= 60; + // fallthrough + case "second": + delta /= 1000; + // fallthrough + case "millisecond": + delta *= date2.toGregorian().getTime()- date1.toGregorian().getTime(); + } + + // Round for fractional values and DST leaps + return Math.round(delta); // Number (integer) +}; +return dojox.date.islamic; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/date/islamic/Date.js b/js/dojo-release-1.7.2-src/dojox/date/islamic/Date.js new file mode 100644 index 0000000..3dad685 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/islamic/Date.js @@ -0,0 +1,424 @@ +define(["dojo/_base/kernel", "dojo/_base/declare", "dojo/date"], function(dojo, declare, dd){ + +dojo.getObject("date.buddhist.Date", true, dojox); +dojo.experimental("dojox.date.buddhist.Date"); + +dojo.declare("dojox.date.islamic.Date", null, { + // summary: The component defines the Islamic (Hijri) Calendar Object + // + // description: + // This module is similar to the Date() object provided by JavaScript + // + // example: + // | dojo.require("dojox.date.islamic.Date"); + // | + // | var date = new dojox.date.islamic.Date(); + // | document.writeln(date.getFullYear()+'\'+date.getMonth()+'\'+date.getDate()); + + + _date: 0, + _month: 0, + _year: 0, + _hours: 0, + _minutes: 0, + _seconds: 0, + _milliseconds: 0, + _day: 0, + _GREGORIAN_EPOCH : 1721425.5, + _ISLAMIC_EPOCH : 1948439.5, + + constructor: function(){ + // summary: This is the constructor + // description: + // This function initialize the date object values + // + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | + // | var date2 = new dojox.date.islamic.Date("12\2\1429"); + // | + // | var date3 = new dojox.date.islamic.Date(date2); + // | + // | var date4 = new dojox.date.islamic.Date(1429,2,12); + + var len = arguments.length; + if(!len){// use the current date value, added "" to the similarity to date + this.fromGregorian(new Date()); + }else if(len == 1){ + var arg0 = arguments[0]; + if(typeof arg0 == "number"){ // this is time "valueof" + arg0 = new Date(arg0); + } + + if(arg0 instanceof Date){ + this.fromGregorian(arg0); + }else if(arg0 == ""){ + // date should be invalid. Dijit relies on this behavior. + this._date = new Date(""); //TODO: should this be NaN? _date is not a Date object + }else{ // this is Islamic.Date object + this._year = arg0._year; + this._month = arg0._month; + this._date = arg0._date; + this._hours = arg0._hours; + this._minutes = arg0._minutes; + this._seconds = arg0._seconds; + this._milliseconds = arg0._milliseconds; + } + }else if(len >=3){ + // YYYY MM DD arguments passed, month is from 0-12 + this._year += arguments[0]; + this._month += arguments[1]; + this._date += arguments[2]; + this._hours += arguments[3] || 0; + this._minutes += arguments[4] || 0; + this._seconds += arguments[5] || 0; + this._milliseconds += arguments[6] || 0; + } + }, + + getDate:function(){ + // summary: This function returns the date value (1 - 30) + // + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | + // | document.writeln(date1.getDate); + return this._date; + }, + + getMonth:function(){ + // summary: This function return the month value ( 0 - 11 ) + // + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | + // | document.writeln(date1.getMonth()+1); + + return this._month; + }, + + getFullYear:function(){ + // summary: This function return the Year value + // + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | + // | document.writeln(date1.getFullYear()); + + return this._year; + }, + + getDay:function(){ + // summary: This function return Week Day value ( 0 - 6 ) + // + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | + // | document.writeln(date1.getDay()); + + return this.toGregorian().getDay(); + }, + + getHours:function(){ + //summary: returns the Hour value + return this._hours; + }, + + getMinutes:function(){ + //summary: returns the Minuites value + return this._minutes; + }, + + getSeconds:function(){ + //summary: returns the seconde value + return this._seconds; + }, + + getMilliseconds:function(){ + //summary: returns the Milliseconds value + return this._milliseconds; + }, + + setDate: function(/*number*/date){ + // summary: This function sets the Date + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | date1.setDate(2); + + date = parseInt(date); + + if(date > 0 && date <= this.getDaysInIslamicMonth(this._month, this._year)){ + this._date = date; + }else{ + var mdays; + if(date>0){ + for(mdays = this.getDaysInIslamicMonth(this._month, this._year); + date > mdays; + date -= mdays,mdays =this.getDaysInIslamicMonth(this._month, this._year)){ + this._month++; + if(this._month >= 12){this._year++; this._month -= 12;} + } + + this._date = date; + }else{ + for(mdays = this.getDaysInIslamicMonth((this._month-1)>=0 ?(this._month-1) :11 ,((this._month-1)>=0)? this._year: this._year-1); + date <= 0; + mdays = this.getDaysInIslamicMonth((this._month-1)>=0 ? (this._month-1) :11,((this._month-1)>=0)? this._year: this._year-1)){ + this._month--; + if(this._month < 0){this._year--; this._month += 12;} + + date+=mdays; + } + this._date = date; + } + } + return this; + }, + + setFullYear:function(/*number*/year){ + // summary: This function set Year + // + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | date1.setYear(1429); + + this._year = +year; + }, + + setMonth: function(/*number*/month) { + // summary: This function set Month + // + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | date1.setMonth(2); + + this._year += Math.floor(month / 12); + if(month > 0){ + this._month = Math.floor(month % 12); + }else{ + this._month = Math.floor(((month % 12) + 12) % 12); + } + }, + + setHours:function(){ + //summary: set the Hours + var hours_arg_no = arguments.length; + var hours = 0; + if(hours_arg_no >= 1){ + hours = parseInt(arguments[0]); + } + + if(hours_arg_no >= 2){ + this._minutes = parseInt(arguments[1]); + } + + if(hours_arg_no >= 3){ + this._seconds = parseInt(arguments[2]); + } + + if(hours_arg_no == 4){ + this._milliseconds = parseInt(arguments[3]); + } + + while(hours >= 24){ + this._date++; + var mdays = this.getDaysInIslamicMonth(this._month, this._year); + if(this._date > mdays){ + this._month ++; + if(this._month >= 12){this._year++; this._month -= 12;} + this._date -= mdays; + } + hours -= 24; + } + this._hours = hours; + }, + + _addMinutes: function(/*Number*/minutes){ + minutes += this._minutes; + this.setMinutes(minutes); + this.setHours(this._hours + parseInt(minutes / 60)); + return this; + }, + + _addSeconds: function(/*Number*/seconds){ + seconds += this._seconds; + this.setSeconds(seconds); + this._addMinutes(parseInt(seconds / 60)); + return this; + }, + + _addMilliseconds: function(/*Number*/milliseconds){ + milliseconds += this._milliseconds; + this.setMilliseconds(milliseconds); + this._addSeconds(parseInt(milliseconds / 1000)); + return this; + }, + + setMinutes: function(/*Number*/minutes){ + //summary: sets the minutes (0-59) only. + this._minutes = minutes % 60; + return this; + }, + + setSeconds: function(/*Number*/seconds){ + //summary: sets the seconds (0-59) only. + this._seconds = seconds % 60; + return this; + }, + + setMilliseconds: function(/*Number*/milliseconds){ + this._milliseconds = milliseconds % 1000; + return this; + }, + + toString:function(){ + // summary: This returns a string representation of the date in "DDDD MMMM DD YYYY HH:MM:SS" format + // example: + // | var date1 = new dojox.date.islamic.Date(); + // | document.writeln(date1.toString()); + + //FIXME: TZ/DST issues? + var x = new Date(); + x.setHours(this._hours); + x.setMinutes(this._minutes); + x.setSeconds(this._seconds); + x.setMilliseconds(this._milliseconds); + return this._month+" "+ this._date + " " + this._year + " " + x.toTimeString(); + }, + + + toGregorian:function(){ + // summary: This returns the equevalent Grogorian date value in Date object + // example: + // | var dateIslamic = new dojox.date.islamic.Date(1429,11,20); + // | var dateGregorian = dateIslamic.toGregorian(); + + var hYear = this._year; + var hMonth = this._month; + var hDate = this._date; + var julianDay = hDate + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + + Math.floor((3 + (11 * hYear)) / 30) + this._ISLAMIC_EPOCH - 1; + + var wjd = Math.floor(julianDay - 0.5) + 0.5, + depoch = wjd - this._GREGORIAN_EPOCH, + quadricent = Math.floor(depoch / 146097), + dqc = this._mod(depoch, 146097), + cent = Math.floor(dqc / 36524), + dcent = this._mod(dqc, 36524), + quad = Math.floor(dcent / 1461), + dquad = this._mod(dcent, 1461), + yindex = Math.floor(dquad / 365), + year = (quadricent * 400) + (cent * 100) + (quad * 4) + yindex; + if(!(cent == 4 || yindex == 4)){ + year++; + } + + var gYearStart = this._GREGORIAN_EPOCH + (365 * (year - 1)) + Math.floor((year - 1) / 4) + - ( Math.floor((year - 1) / 100)) + Math.floor((year - 1) / 400); + + var yearday = wjd - gYearStart; + + var tjd = (this._GREGORIAN_EPOCH - 1) + (365 * (year - 1)) + Math.floor((year - 1) / 4) + -( Math.floor((year - 1) / 100)) + Math.floor((year - 1) / 400) + Math.floor( (739 / 12) + + ( (dd.isLeapYear(new Date(year,3,1)) ? -1 : -2)) + 1); + + var leapadj = ((wjd < tjd ) ? 0 : (dd.isLeapYear(new Date(year,3,1)) ? 1 : 2)); + + var month = Math.floor((((yearday + leapadj) * 12) + 373) / 367); + var tjd2 = (this._GREGORIAN_EPOCH - 1) + (365 * (year - 1)) + + Math.floor((year - 1) / 4) - (Math.floor((year - 1) / 100)) + + Math.floor((year - 1) / 400) + Math.floor((((367 * month) - 362) / 12) + + ((month <= 2) ? 0 : (dd.isLeapYear(new Date(year,month,1)) ? -1 : -2)) + 1); + + var day = (wjd - tjd2) + 1; + + var gdate = new Date(year, (month - 1), day, this._hours, this._minutes, this._seconds, this._milliseconds); + + return gdate; + }, + + //TODO: would it make more sense to make this a constructor option? or a static? + // ported from the Java class com.ibm.icu.util.IslamicCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + fromGregorian:function(/*Date*/gdate){ + // summary: This function returns the equivalent Islamic Date value for the Gregorian Date + // example: + // | var dateIslamic = new dojox.date.islamic.Date(); + // | var dateGregorian = new Date(2008,10,12); + // | dateIslamic.fromGregorian(dateGregorian); + + var date = new Date(gdate); + var gYear = date.getFullYear(), + gMonth = date.getMonth(), + gDay = date.getDate(); + + var julianDay = (this._GREGORIAN_EPOCH - 1) + (365 * (gYear - 1)) + Math.floor((gYear - 1) / 4) + + (-Math.floor((gYear - 1) / 100)) + Math.floor((gYear - 1) / 400) + + Math.floor((((367 * (gMonth+1)) - 362) / 12) + + (((gMonth+1) <= 2) ? 0 : (dd.isLeapYear(date) ? -1 : -2)) + gDay); + julianDay = Math.floor(julianDay) + 0.5; + + var days = julianDay - this._ISLAMIC_EPOCH; + var hYear = Math.floor( (30 * days + 10646) / 10631.0 ); + var hMonth = Math.ceil((days - 29 - this._yearStart(hYear)) / 29.5 ); + hMonth = Math.min(hMonth, 11); + var hDay = Math.ceil(days - this._monthStart(hYear, hMonth)) + 1; + + this._date = hDay; + this._month = hMonth; + this._year = hYear; + this._hours = date.getHours(); + this._minutes = date.getMinutes(); + this._seconds = date.getSeconds(); + this._milliseconds = date.getMilliseconds(); + this._day = date.getDay(); + return this; + }, + + valueOf:function(){ + // summary: This function returns The stored time value in milliseconds + // since midnight, January 1, 1970 UTC + + return this.toGregorian().valueOf(); + }, + + // ported from the Java class com.ibm.icu.util.IslamicCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + _yearStart:function(/*Number*/year){ + //summary: return start of Islamic year + return (year-1)*354 + Math.floor((3+11*year)/30.0); + }, + + // ported from the Java class com.ibm.icu.util.IslamicCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + _monthStart:function(/*Number*/year, /*Number*/month){ + //summary: return the start of Islamic Month + return Math.ceil(29.5*month) + + (year-1)*354 + Math.floor((3+11*year)/30.0); + }, + + // ported from the Java class com.ibm.icu.util.IslamicCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + _civilLeapYear:function(/*Number*/year){ + //summary: return Boolean value if Islamic leap year + return (14 + 11 * year) % 30 < 11; + }, + + // ported from the Java class com.ibm.icu.util.IslamicCalendar from ICU4J v3.6.1 at http://www.icu-project.org/ + getDaysInIslamicMonth:function(/*Number*/month, /*Number*/ year){ + //summary: returns the number of days in the given Islamic Month + var length = 0; + length = 29 + ((month+1) % 2); + if(month == 11 && this._civilLeapYear(year)){ + length++; + } + return length; + }, + + _mod:function(a, b){ + return a - (b * Math.floor(a / b)); + } +}); + +//TODOC +dojox.date.islamic.Date.getDaysInIslamicMonth = function(/*dojox.date.islamic.Date*/month){ + return new dojox.date.islamic.Date().getDaysInIslamicMonth(month.getMonth(),month.getFullYear()); // dojox.date.islamic.Date +}; +return dojox.date.islamic.Date; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/islamic/locale.js b/js/dojo-release-1.7.2-src/dojox/date/islamic/locale.js new file mode 100644 index 0000000..caed2a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/islamic/locale.js @@ -0,0 +1,416 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array", "dojo/date", "dojo/i18n", "dojo/regexp", "dojo/string", "./Date", "dojo/i18n!dojo/cldr/nls/islamic"], + function(dojo, dlang, darray, dd, i18n, regexp, string, islamicDate){ + + dojo.getObject("date.islamic.locale", true, dojox); + dojo.experimental("dojox.date.islamic.locale"); + + dojo.requireLocalization("dojo.cldr", "islamic"); + + // Format a pattern without literals + function formatPattern(dateObject, bundle, locale, fullYear, pattern){ + + return pattern.replace(/([a-z])\1*/ig, function(match){ + var s, pad; + var c = match.charAt(0); + var l = match.length; + var widthList = ["abbr", "wide", "narrow"]; + + switch(c){ + case 'G': + s = bundle["eraAbbr"][0]; + break; + case 'y': + s = String(dateObject.getFullYear()); + break; + case 'M': + var m = dateObject.getMonth(); + if(l<3){ + s = m+1; pad = true; + }else{ + var propM = ["months", "format", widthList[l-3]].join("-"); + s = bundle[propM][m]; + } + break; + case 'd': + s = dateObject.getDate(true); pad = true; + break; + case 'E': + var d = dateObject.getDay(); + if(l<3){ + s = d+1; pad = true; + }else{ + var propD = ["days", "format", widthList[l-3]].join("-"); + s = bundle[propD][d]; + } + break; + case 'a': + var timePeriod = (dateObject.getHours() < 12) ? 'am' : 'pm'; + s = bundle['dayPeriods-format-wide-' + timePeriod]; + break; + case 'h': + case 'H': + case 'K': + case 'k': + var h = dateObject.getHours(); + switch (c){ + case 'h': // 1-12 + s = (h % 12) || 12; + break; + case 'H': // 0-23 + s = h; + break; + case 'K': // 0-11 + s = (h % 12); + break; + case 'k': // 1-24 + s = h || 24; + break; + } + pad = true; + break; + case 'm': + s = dateObject.getMinutes(); pad = true; + break; + case 's': + s = dateObject.getSeconds(); pad = true; + break; + case 'S': + s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l-3)); pad = true; + break; + case 'z': + // We only have one timezone to offer; the one from the browser + s = dd.getTimezoneName(dateObject.toGregorian()); + if(s){ break; } + l = 4; + // fallthrough... use GMT if tz not available + case 'Z': + var offset = dateObject.toGregorian().getTimezoneOffset(); + var tz = [ + (offset <= 0 ? "+" : "-"), + string.pad(Math.floor(Math.abs(offset) / 60), 2), + string.pad(Math.abs(offset) % 60, 2) + ]; + if(l == 4){ + tz.splice(0, 0, "GMT"); + tz.splice(3, 0, ":"); + } + s = tz.join(""); + break; + default: + throw new Error("dojox.date.islamic.locale.formatPattern: invalid pattern char: "+pattern); + } + if(pad){ s = string.pad(s, l); } + return s; + }); + } + + // based on and similar to dojo.date.locale.format + dojox.date.islamic.locale.format = function(/*islamic.Date*/dateObject, /*Object?*/options){ + // summary: + // Format a Date object as a String, using settings. + options = options || {}; + + var locale = i18n.normalizeLocale(options.locale); + var formatLength = options.formatLength || 'short'; + var bundle = dojox.date.islamic.locale._getIslamicBundle(locale); + var str = []; + + var sauce = dojo.hitch(this, formatPattern, dateObject, bundle, locale, options.fullYear); + if(options.selector == "year"){ + var year = dateObject.getFullYear(); + return year; + } + if(options.selector != "time"){ + var datePattern = options.datePattern || bundle["dateFormat-"+formatLength]; + if(datePattern){str.push(_processPattern(datePattern, sauce));} + } + if(options.selector != "date"){ + var timePattern = options.timePattern || bundle["timeFormat-"+formatLength]; + if(timePattern){str.push(_processPattern(timePattern, sauce));} + } + var result = str.join(" "); //TODO: use locale-specific pattern to assemble date + time + + return result; // String + }; + + dojox.date.islamic.locale.regexp = function(/*object?*/options){ + // based on and similar to dojo.date.locale.regexp + // summary: + // Builds the regular needed to parse a islamic.Date + return dojox.date.islamic.locale._parseInfo(options).regexp; // String + }; + + dojox.date.islamic.locale._parseInfo = function(/*oblect?*/options){ + /* based on and similar to dojo.date.locale._parseInfo */ + + options = options || {}; + var locale = i18n.normalizeLocale(options.locale); + var bundle = dojox.date.islamic.locale._getIslamicBundle(locale); + var formatLength = options.formatLength || 'short'; + var datePattern = options.datePattern || bundle["dateFormat-" + formatLength]; + var timePattern = options.timePattern || bundle["timeFormat-" + formatLength]; + + var pattern; + if(options.selector == 'date'){ + pattern = datePattern; + }else if(options.selector == 'time'){ + pattern = timePattern; + }else{ + pattern = (typeof (timePattern) == "undefined") ? datePattern : datePattern + ' ' + timePattern; + } + + var tokens = []; + + var re = _processPattern(pattern, dojo.hitch(this, _buildDateTimeRE, tokens, bundle, options)); + return {regexp: re, tokens: tokens, bundle: bundle}; + }; + + dojox.date.islamic.locale.parse = function(/*String*/value, /*Object?*/options){ + // based on and similar to dojo.date.locale.parse + // summary: This function parse string date value according to options + + value = value.replace(/[\u200E\u200F\u202A\u202E]/g, ""); //remove bidi non-printing chars + + if(!options){ options={}; } + var info = dojox.date.islamic.locale._parseInfo(options); + + var tokens = info.tokens, bundle = info.bundle; + var regexp = info.regexp.replace(/[\u200E\u200F\u202A\u202E]/g, ""); //remove bidi non-printing chars from the pattern + var re = new RegExp("^" + regexp + "$"); + + var match = re.exec(value); + + var locale = i18n.normalizeLocale(options.locale); + + if(!match){ + console.debug("dojox.date.islamic.locale.parse: value "+value+" doesn't match pattern " + re); + return null; + } // null + + var date, date1; + + var result = [1389,0,1,0,0,0,0]; //FIXME: islamic date for [1970,0,1,0,0,0,0] used in gregorian locale + var amPm = ""; + var mLength = 0; + var widthList = ["abbr", "wide", "narrow"]; + var valid = dojo.every(match, function(v, i){ + if(!i){return true;} + var token=tokens[i-1]; + var l=token.length; + switch(token.charAt(0)){ + case 'y': + result[0] = Number(v); + break; + case 'M': + if(l>2){ + var months = bundle['months-format-' + widthList[l-3]].concat(); + if(!options.strict){ + //Tolerate abbreviating period in month part + //Case-insensitive comparison + v = v.replace(".","").toLowerCase(); + months = dojo.map(months, function(s){ return s ? s.replace(".","").toLowerCase() : s; } ); + } + v = dojo.indexOf(months, v); + if(v == -1){ + return false; + } + mLength = l; + }else{ + v--; + } + result[1] = Number(v); + break; + case 'D': + result[1] = 0; + // fallthrough... + case 'd': + result[2] = Number(v); + break; + case 'a': //am/pm + var am = options.am || bundle['dayPeriods-format-wide-am'], + pm = options.pm || bundle['dayPeriods-format-wide-pm']; + if(!options.strict){ + var period = /\./g; + v = v.replace(period,'').toLowerCase(); + am = am.replace(period,'').toLowerCase(); + pm = pm.replace(period,'').toLowerCase(); + } + if(options.strict && v != am && v != pm){ + return false; + } + + // we might not have seen the hours field yet, so store the state and apply hour change later + amPm = (v == pm) ? 'p' : (v == am) ? 'a' : ''; + break; + case 'K': //hour (1-24) + if(v == 24){ v = 0; } + // fallthrough... + case 'h': //hour (1-12) + case 'H': //hour (0-23) + case 'k': //hour (0-11) + //in the 12-hour case, adjusting for am/pm requires the 'a' part + //which could come before or after the hour, so we will adjust later + result[3] = Number(v); + break; + case 'm': //minutes + result[4] = Number(v); + break; + case 's': //seconds + result[5] = Number(v); + break; + case 'S': //milliseconds + result[6] = Number(v); + } + return true; + }); + + var hours = +result[3]; + if(amPm === 'p' && hours < 12){ + result[3] = hours + 12; //e.g., 3pm -> 15 + }else if(amPm === 'a' && hours == 12){ + result[3] = 0; //12am -> 0 + } + var dateObject = new islamicDate(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); + return dateObject; + }; + + function _processPattern(pattern, applyPattern, applyLiteral, applyAll){ + //summary: Process a pattern with literals in it + + // Break up on single quotes, treat every other one as a literal, except '' which becomes ' + var identity = function(x){return x;}; + applyPattern = applyPattern || identity; + applyLiteral = applyLiteral || identity; + applyAll = applyAll || identity; + + //split on single quotes (which escape literals in date format strings) + //but preserve escaped single quotes (e.g., o''clock) + var chunks = pattern.match(/(''|[^'])+/g); + var literal = pattern.charAt(0) == "'"; + + dojo.forEach(chunks, function(chunk, i){ + if(!chunk){ + chunks[i]=''; + }else{ + chunks[i]=(literal ? applyLiteral : applyPattern)(chunk); + literal = !literal; + } + }); + return applyAll(chunks.join('')); + } + + function _buildDateTimeRE (tokens, bundle, options, pattern){ + // based on and similar to dojo.date.locale._buildDateTimeRE + // + + pattern = regexp.escapeString(pattern); + var locale = i18n.normalizeLocale(options.locale); + + return pattern.replace(/([a-z])\1*/ig, function(match){ + + // Build a simple regexp. Avoid captures, which would ruin the tokens list + var s; + var c = match.charAt(0); + var l = match.length; + var p2 = '', p3 = ''; + if(options.strict){ + if(l > 1){ p2 = '0' + '{'+(l-1)+'}'; } + if(l > 2){ p3 = '0' + '{'+(l-2)+'}'; } + }else{ + p2 = '0?'; p3 = '0{0,2}'; + } + switch(c){ + case 'y': + s = '\\d+'; + break; + case 'M': + s = (l>2) ? '\\S+ ?\\S+' : p2+'[1-9]|1[0-2]'; + break; + case 'd': + s = '[12]\\d|'+p2+'[1-9]|3[01]'; + break; + case 'E': + s = '\\S+'; + break; + case 'h': //hour (1-12) + s = p2+'[1-9]|1[0-2]'; + break; + case 'k': //hour (0-11) + s = p2+'\\d|1[01]'; + break; + case 'H': //hour (0-23) + s = p2+'\\d|1\\d|2[0-3]'; + break; + case 'K': //hour (1-24) + s = p2+'[1-9]|1\\d|2[0-4]'; + break; + case 'm': + case 's': + s = p2+'\\d|[0-5]\\d'; + break; + case 'S': + s = '\\d{'+l+'}'; + break; + case 'a': + var am = options.am || bundle['dayPeriods-format-wide-am'], + pm = options.pm || bundle['dayPeriods-format-wide-pm']; + if(options.strict){ + s = am + '|' + pm; + }else{ + s = am + '|' + pm; + if(am != am.toLowerCase()){ s += '|' + am.toLowerCase(); } + if(pm != pm.toLowerCase()){ s += '|' + pm.toLowerCase(); } + } + break; + default: + s = ".*"; + } + if(tokens){ tokens.push(match); } + return "(" + s + ")"; // add capture + }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace. Need explicit handling of \xa0 for IE. */ + } + + var _customFormats = []; + dojox.date.islamic.locale.addCustomFormats = function(/*String*/packageName, /*String*/bundleName){ + // summary: + // Add a reference to a bundle containing localized custom formats to be + // used by date/time formatting and parsing routines. + _customFormats.push({pkg:packageName,name:bundleName}); + }; + + dojox.date.islamic.locale._getIslamicBundle = function(/*String*/locale){ + var islamic = {}; + dojo.forEach(_customFormats, function(desc){ + var bundle = i18n.getLocalization(desc.pkg, desc.name, locale); + islamic = dojo.mixin(islamic, bundle); + }, this); + return islamic; /*Object*/ + }; + + dojox.date.islamic.locale.addCustomFormats("dojo.cldr","islamic"); + + dojox.date.islamic.locale.getNames = function(/*String*/item, /*String*/type, /*String?*/context, /*String?*/locale, /*islamic Date Object?*/date){ + // summary: + // Used to get localized strings from dojo.cldr for day or month names. + var label; + var lookup = dojox.date.islamic.locale._getIslamicBundle(locale); + var props = [item, context, type]; + if(context == 'standAlone'){ + var key = props.join('-'); + label = lookup[key]; + // Fall back to 'format' flavor of name + if(label[0] == 1){ label = undefined; } // kludge, in the absence of real aliasing support in dojo.cldr + } + props[1] = 'format'; + + // return by copy so changes won't be made accidentally to the in-memory model + return (label || lookup[props.join('-')]).concat(); /*Array*/ + }; + + + dojox.date.islamic.locale.weekDays = dojox.date.islamic.locale.getNames('days', 'wide', 'format'); + + dojox.date.islamic.locale.months = dojox.date.islamic.locale.getNames('months', 'wide', 'format'); + + return dojox.date.islamic.locale; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/date/php.js b/js/dojo-release-1.7.2-src/dojox/date/php.js new file mode 100644 index 0000000..fb22a80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/php.js @@ -0,0 +1,309 @@ +define(["dojo/_base/kernel", "dojo/_base/lang","dojo/date","dojox/string/tokenize"], function(dojo,dlang,ddate,dxst){ +dojo.getObject("date.php", true, dojox); + +dojox.date.php.format = function(/*Date*/ date, /*String*/ format){ + // summary: Get a formatted string for a given date object + var df = new dojox.date.php.DateFormat(format); + return df.format(date); +} + +dojox.date.php.DateFormat = function(/*String*/ format){ + // summary: Format the internal date object + if(!this.regex){ + var keys = []; + for(var key in this.constructor.prototype){ + if(dojo.isString(key) && key.length == 1 && dojo.isFunction(this[key])){ + keys.push(key); + } + } + this.constructor.prototype.regex = new RegExp("(?:(\\\\.)|([" + keys.join("") + "]))", "g"); + } + + var replacements = []; + + this.tokens = dxst(format, this.regex, function(escape, token, i){ + if(token){ + replacements.push([i, token]); + return token; + } + if(escape){ + return escape.charAt(1); + } + }); + + this.replacements = replacements; +} +dojo.extend(dojox.date.php.DateFormat, { + weekdays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + weekdays_3: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + months_3: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + monthdays: [31,28,31,30,31,30,31,31,30,31,30,31], + + format: function(/*Date*/ date){ + this.date = date; + for(var i = 0, replacement; replacement = this.replacements[i]; i++){ + this.tokens[replacement[0]] = this[replacement[1]](); + } + return this.tokens.join(""); + }, + + // Day + + d: function(){ + // summary: Day of the month, 2 digits with leading zeros + var j = this.j(); + return (j.length == 1) ? "0" + j : j; + }, + + D: function(){ + // summary: A textual representation of a day, three letters + return this.weekdays_3[this.date.getDay()]; + }, + + j: function(){ + // summary: Day of the month without leading zeros + return this.date.getDate() + ""; + }, + + l: function(){ + // summary: A full textual representation of the day of the week + return this.weekdays[this.date.getDay()]; + }, + + N: function(){ + // summary: ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0) + var w = this.w(); + return (!w) ? 7 : w; + }, + + S: function(){ + // summary: English ordinal suffix for the day of the month, 2 characters + switch(this.date.getDate()){ + case 11: case 12: case 13: return "th"; + case 1: case 21: case 31: return "st"; + case 2: case 22: return "nd"; + case 3: case 23: return "rd"; + default: return "th"; + } + }, + + w: function(){ + // summary: Numeric representation of the day of the week + return this.date.getDay() + ""; + }, + + z: function(){ + // summary: The day of the year (starting from 0) + var millis = this.date.getTime() - new Date(this.date.getFullYear(), 0, 1).getTime(); + return Math.floor(millis/86400000) + ""; + }, + + // Week + + W: function(){ + // summary: ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) + var week; + var jan1_w = new Date(this.date.getFullYear(), 0, 1).getDay() + 1; + var w = this.date.getDay() + 1; + var z = parseInt(this.z()); + + if(z <= (8 - jan1_w) && jan1_w > 4){ + var last_year = new Date(this.date.getFullYear() - 1, this.date.getMonth(), this.date.getDate()); + if(jan1_w == 5 || (jan1_w == 6 && ddate.isLeapYear(last_year))){ + week = 53; + }else{ + week = 52; + } + }else{ + var i; + if(Boolean(this.L())){ + i = 366; + }else{ + i = 365; + } + if((i - z) < (4 - w)){ + week = 1; + }else{ + var j = z + (7 - w) + (jan1_w - 1); + week = Math.ceil(j / 7); + if(jan1_w > 4){ + --week; + } + } + } + + return week; + }, + + // Month + + F: function(){ + // summary: A full textual representation of a month, such as January or March + return this.months[this.date.getMonth()]; + }, + + m: function(){ + // summary: Numeric representation of a month, with leading zeros + var n = this.n(); + return (n.length == 1) ? "0" + n : n; + }, + + M: function(){ + // summary: A short textual representation of a month, three letters + return this.months_3[this.date.getMonth()]; + }, + + n: function(){ + // summary: Numeric representation of a month, without leading zeros + return this.date.getMonth() + 1 + ""; + }, + + t: function(){ + // summary: Number of days in the given month + return (Boolean(this.L()) && this.date.getMonth() == 1) ? 29 : this.monthdays[this.getMonth()]; + }, + + // Year + + L: function(){ + // summary: Whether it's a leap year + return (ddate.isLeapYear(this.date)) ? "1" : "0"; + }, + + o: function(){ + // summary: + // ISO-8601 year number. This has the same value as Y, except that if + // the ISO week number (W) belongs to the previous or next year, that year is used instead. (added in PHP 5.1.0) + // TODO: Figure out what this means + }, + + Y: function(){ + // summary: A full numeric representation of a year, 4 digits + return this.date.getFullYear() + ""; + }, + + y: function(){ + // summary: A two digit representation of a year + return this.Y().slice(-2); + }, + + // Time + + a: function(){ + // summary: Lowercase Ante meridiem and Post meridiem + return this.date.getHours() >= 12 ? "pm" : "am"; + }, + + b: function(){ + // summary: Uppercase Ante meridiem and Post meridiem + return this.a().toUpperCase(); + }, + + B: function(){ + // summary: + // Swatch Internet time + // A day is 1,000 beats. All time is measured from GMT + 1 + var off = this.date.getTimezoneOffset() + 60; + var secs = (this.date.getHours() * 3600) + (this.date.getMinutes() * 60) + this.getSeconds() + (off * 60); + var beat = Math.abs(Math.floor(secs / 86.4) % 1000) + ""; + while(beat.length < 2) beat = "0" + beat; + return beat; + }, + + g: function(){ + // summary: 12-hour format of an hour without leading zeros + return (this.date.getHours() > 12) ? this.date.getHours() - 12 + "" : this.date.getHours() + ""; + }, + + G: function(){ + // summary: 24-hour format of an hour without leading zeros + return this.date.getHours() + ""; + }, + + h: function(){ + // summary: 12-hour format of an hour with leading zeros + var g = this.g(); + return (g.length == 1) ? "0" + g : g; + }, + + H: function(){ + // summary: 24-hour format of an hour with leading zeros + var G = this.G(); + return (G.length == 1) ? "0" + G : G; + }, + + i: function(){ + // summary: Minutes with leading zeros + var mins = this.date.getMinutes() + ""; + return (mins.length == 1) ? "0" + mins : mins; + }, + + s: function(){ + // summary: Seconds, with leading zeros + var secs = this.date.getSeconds() + ""; + return (secs.length == 1) ? "0" + secs : secs; + }, + + // Timezone + + e: function(){ + // summary: Timezone identifier (added in PHP 5.1.0) + return ddate.getTimezoneName(this.date); + }, + + I: function(){ + // summary: Whether or not the date is in daylight saving time + // TODO: Can dojo.date do this? + }, + + O: function(){ + // summary: Difference to Greenwich time (GMT) in hours + var off = Math.abs(this.date.getTimezoneOffset()); + var hours = Math.floor(off / 60) + ""; + var mins = (off % 60) + ""; + if(hours.length == 1) hours = "0" + hours; + if(mins.length == 1) hours = "0" + mins; + return ((this.date.getTimezoneOffset() < 0) ? "+" : "-") + hours + mins; + }, + + P: function(){ + // summary: Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3) + var O = this.O(); + return O.substring(0, 2) + ":" + O.substring(2, 4); + }, + + T: function(){ + // summary: Timezone abbreviation + + // Guess... + return this.e().substring(0, 3); + }, + + Z: function(){ + // summary: + // Timezone offset in seconds. The offset for timezones west of UTC is always negative, + // and for those east of UTC is always positive. + return this.date.getTimezoneOffset() * -60; + }, + + // Full Date/Time + + c: function(){ + // summary: ISO 8601 date (added in PHP 5) + return this.Y() + "-" + this.m() + "-" + this.d() + "T" + this.h() + ":" + this.i() + ":" + this.s() + this.P(); + }, + + r: function(){ + // summary: RFC 2822 formatted date + return this.D() + ", " + this.d() + " " + this.M() + " " + this.Y() + " " + this.H() + ":" + this.i() + ":" + this.s() + " " + this.O(); + }, + + U: function(){ + // summary: Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) + return Math.floor(this.date.getTime() / 1000); + } + +}); +return dojox.date.php; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/date/posix.js b/js/dojo-release-1.7.2-src/dojox/date/posix.js new file mode 100644 index 0000000..60da32d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/posix.js @@ -0,0 +1,290 @@ +define(["dojo/_base/kernel", "dojo/date", "dojo/date/locale", "dojo/string", "dojo/cldr/supplemental"], + function(dojo, dojoDate, dojoDateLocale, dojoString, dojoCldrSupplemental){ + +dojo.getObject("date.posix", true, dojox); + +dojox.date.posix.strftime = function(/*Date*/dateObject, /*String*/format, /*String?*/locale){ +// +// summary: +// Formats the date object using the specifications of the POSIX strftime function +// +// description: +// see http://www.opengroup.org/onlinepubs/007908799/xsh/strftime.html + + // zero pad + var padChar = null; + var _ = function(s, n){ + return dojoString.pad(s, n || 2, padChar || "0"); + }; + + var bundle = dojoDateLocale._getGregorianBundle(locale); + + var $ = function(property){ + switch(property){ + case "a": // abbreviated weekday name according to the current locale + return dojoDateLocale.getNames('days', 'abbr', 'format', locale)[dateObject.getDay()]; + + case "A": // full weekday name according to the current locale + return dojoDateLocale.getNames('days', 'wide', 'format', locale)[dateObject.getDay()]; + + case "b": + case "h": // abbreviated month name according to the current locale + return dojoDateLocale.getNames('months', 'abbr', 'format', locale)[dateObject.getMonth()]; + + case "B": // full month name according to the current locale + return dojoDateLocale.getNames('months', 'wide', 'format', locale)[dateObject.getMonth()]; + + case "c": // preferred date and time representation for the current + // locale + return dojoDateLocale.format(dateObject, {formatLength: 'full', locale: locale}); + + case "C": // century number (the year divided by 100 and truncated + // to an integer, range 00 to 99) + return _(Math.floor(dateObject.getFullYear()/100)); + + case "d": // day of the month as a decimal number (range 01 to 31) + return _(dateObject.getDate()); + + case "D": // same as %m/%d/%y + return $("m") + "/" + $("d") + "/" + $("y"); + + case "e": // day of the month as a decimal number, a single digit is + // preceded by a space (range ' 1' to '31') + if(padChar == null){ padChar = " "; } + return _(dateObject.getDate()); + + case "f": // month as a decimal number, a single digit is + // preceded by a space (range ' 1' to '12') + if(padChar == null){ padChar = " "; } + return _(dateObject.getMonth()+1); + + case "g": // like %G, but without the century. + break; + + case "G": // The 4-digit year corresponding to the ISO week number + // (see %V). This has the same format and value as %Y, + // except that if the ISO week number belongs to the + // previous or next year, that year is used instead. + console.warn("unimplemented modifier 'G'"); + break; + + case "F": // same as %Y-%m-%d + return $("Y") + "-" + $("m") + "-" + $("d"); + + case "H": // hour as a decimal number using a 24-hour clock (range + // 00 to 23) + return _(dateObject.getHours()); + + case "I": // hour as a decimal number using a 12-hour clock (range + // 01 to 12) + return _(dateObject.getHours() % 12 || 12); + + case "j": // day of the year as a decimal number (range 001 to 366) + return _(dojoDateLocale._getDayOfYear(dateObject), 3); + + case "k": // Hour as a decimal number using a 24-hour clock (range + // 0 to 23 (space-padded)) + if(padChar == null){ padChar = " "; } + return _(dateObject.getHours()); + + case "l": // Hour as a decimal number using a 12-hour clock (range + // 1 to 12 (space-padded)) + if(padChar == null){ padChar = " "; } + return _(dateObject.getHours() % 12 || 12); + + case "m": // month as a decimal number (range 01 to 12) + return _(dateObject.getMonth() + 1); + + case "M": // minute as a decimal number + return _(dateObject.getMinutes()); + + case "n": + return "\n"; + + case "p": // either `am' or `pm' according to the given time value, + // or the corresponding strings for the current locale + return bundle['dayPeriods-format-wide-' + (dateObject.getHours() < 12 ? "am" : "pm")]; + + case "r": // time in a.m. and p.m. notation + return $("I") + ":" + $("M") + ":" + $("S") + " " + $("p"); + + case "R": // time in 24 hour notation + return $("H") + ":" + $("M"); + + case "S": // second as a decimal number + return _(dateObject.getSeconds()); + + case "t": + return "\t"; + + case "T": // current time, equal to %H:%M:%S + return $("H") + ":" + $("M") + ":" + $("S"); + + case "u": // weekday as a decimal number [1,7], with 1 representing + // Monday + return String(dateObject.getDay() || 7); + + case "U": // week number of the current year as a decimal number, + // starting with the first Sunday as the first day of the + // first week + return _(dojoDateLocale._getWeekOfYear(dateObject)); + + case "V": // week number of the year (Monday as the first day of the + // week) as a decimal number [01,53]. If the week containing + // 1 January has four or more days in the new year, then it + // is considered week 1. Otherwise, it is the last week of + // the previous year, and the next week is week 1. + return _(dojox.date.posix.getIsoWeekOfYear(dateObject)); + + case "W": // week number of the current year as a decimal number, + // starting with the first Monday as the first day of the + // first week + return _(dojoDateLocale._getWeekOfYear(dateObject, 1)); + + case "w": // day of the week as a decimal, Sunday being 0 + return String(dateObject.getDay()); + + case "x": // preferred date representation for the current locale + // without the time + return dojoDateLocale.format(dateObject, {selector:'date', formatLength: 'full', locale:locale}); + + case "X": // preferred time representation for the current locale + // without the date + return dojoDateLocale.format(dateObject, {selector:'time', formatLength: 'full', locale:locale}); + + case "y": // year as a decimal number without a century (range 00 to + // 99) + return _(dateObject.getFullYear()%100); + + case "Y": // year as a decimal number including the century + return String(dateObject.getFullYear()); + + case "z": // time zone or name or abbreviation + var timezoneOffset = dateObject.getTimezoneOffset(); + return (timezoneOffset > 0 ? "-" : "+") + + _(Math.floor(Math.abs(timezoneOffset)/60)) + ":" + + _(Math.abs(timezoneOffset)%60); + + case "Z": // time zone or name or abbreviation + return dojoDate.getTimezoneName(dateObject); + + case "%": + return "%"; + } + }; + + // parse the formatting string and construct the resulting string + var string = "", + i = 0, + index = 0, + switchCase = null; + while ((index = format.indexOf("%", i)) != -1){ + string += format.substring(i, index++); + + // inspect modifier flag + switch (format.charAt(index++)) { + case "_": // Pad a numeric result string with spaces. + padChar = " "; break; + case "-": // Do not pad a numeric result string. + padChar = ""; break; + case "0": // Pad a numeric result string with zeros. + padChar = "0"; break; + case "^": // Convert characters in result string to uppercase. + switchCase = "upper"; break; + case "*": // Convert characters in result string to lowercase + switchCase = "lower"; break; + case "#": // Swap the case of the result string. + switchCase = "swap"; break; + default: // no modifier flag so decrement the index + padChar = null; index--; break; + } + + // toggle case if a flag is set + var property = $(format.charAt(index++)); + switch (switchCase){ + case "upper": + property = property.toUpperCase(); + break; + case "lower": + property = property.toLowerCase(); + break; + case "swap": // Upper to lower, and versey-vicea + var compareString = property.toLowerCase(); + var swapString = ''; + var ch = ''; + for (var j = 0; j < property.length; j++){ + ch = property.charAt(j); + swapString += (ch == compareString.charAt(j)) ? + ch.toUpperCase() : ch.toLowerCase(); + } + property = swapString; + break; + default: + break; + } + switchCase = null; + + string += property; + i = index; + } + string += format.substring(i); + + return string; // String +}; + +dojox.date.posix.getStartOfWeek = function(/*Date*/dateObject, /*Number*/firstDay){ + // summary: Return a date object representing the first day of the given + // date's week. + if(isNaN(firstDay)){ + firstDay = dojoCldrSupplemental.getFirstDayOfWeek ? dojoCldrSupplemental.getFirstDayOfWeek() : 0; + } + var offset = firstDay; + if(dateObject.getDay() >= firstDay){ + offset -= dateObject.getDay(); + }else{ + offset -= (7 - dateObject.getDay()); + } + var date = new Date(dateObject); + date.setHours(0, 0, 0, 0); + return dojoDate.add(date, "day", offset); // Date +} + +dojox.date.posix.setIsoWeekOfYear = function(/*Date*/dateObject, /*Number*/week){ + // summary: Set the ISO8601 week number of the given date. + // The week containing January 4th is the first week of the year. + // week: + // can be positive or negative: -1 is the year's last week. + if(!week){ return dateObject; } + var currentWeek = dojox.date.posix.getIsoWeekOfYear(dateObject); + var offset = week - currentWeek; + if(week < 0){ + var weeks = dojox.date.posix.getIsoWeeksInYear(dateObject); + offset = (weeks + week + 1) - currentWeek; + } + return dojoDate.add(dateObject, "week", offset); // Date +} + +dojox.date.posix.getIsoWeekOfYear = function(/*Date*/dateObject){ + // summary: Get the ISO8601 week number of the given date. + // The week containing January 4th is the first week of the year. + // See http://en.wikipedia.org/wiki/ISO_week_date + var weekStart = dojox.date.posix.getStartOfWeek(dateObject, 1); + var yearStart = new Date(dateObject.getFullYear(), 0, 4); // January 4th + yearStart = dojox.date.posix.getStartOfWeek(yearStart, 1); + var diff = weekStart.getTime() - yearStart.getTime(); + if(diff < 0){ return dojox.date.posix.getIsoWeeksInYear(weekStart); } // Integer + return Math.ceil(diff / 604800000) + 1; // Integer +} + +dojox.date.posix.getIsoWeeksInYear = function(/*Date*/dateObject) { + // summary: Determine the number of ISO8601 weeks in the year of the given + // date. Most years have 52 but some have 53. + // See http://www.phys.uu.nl/~vgent/calendar/isocalendar_text3.htm + function p(y) { + return y + Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400); + } + var y = dateObject.getFullYear(); + return ( p(y) % 7 == 4 || p(y-1) % 7 == 3 ) ? 53 : 52; // Integer +} + return dojox.date.posix; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/date/relative.js b/js/dojo-release-1.7.2-src/dojox/date/relative.js new file mode 100644 index 0000000..f7a656d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/relative.js @@ -0,0 +1,91 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/date/locale", "dojo/i18n"], function(dojo, dlang, ddl, i18n){ + +dojo.getObject("date.relative", true, dojox); + +/*===== +dojox.date.relative.__FormatOptions = function(){ +// locale: String +// override the locale used to determine formatting rules +// relativeDate: Date +// Date to calculate relation to (defaults to new Date()) +// weekCheck: boolean +// Whether or not to display the day of week (defaults true) + this.locale = locale; + this.relativeDate = relativeDate; + this.weekCheck = weekCheck; +} +=====*/ + +var DAY = 1000*60*60*24, + SIX_DAYS = 6 * DAY, + del = dojo.delegate, + ggb = ddl._getGregorianBundle, + fmt = ddl.format; + +function _clearTime(date){ + date = new Date(date); + date.setHours(0, 0, 0, 0); + return date; +} + +dojox.date.relative.format = function(/*Date*/dateObject, /*dojox.date.relative.__FormatOptions?*/options){ + // summary: + // Format a Date object as a String, using locale-specific settings, + // relative to the current date or some other date. + // + // description: + // Create a string from a Date object using the most significant information + // and a known localized pattern. This method formats both the date and + // time from dateObject. Formatting patterns are chosen appropriate to + // the locale. + // + // If the day portion of the date falls within the current date (or the + // relativeDate option, if present), then the time will be all that + // is displayed + // + // If the day portion of the date falls within the past week (or the + // week preceeding relativeDate, if present), then the display will show + // day of week and time. This functionality can be turned off by setting + // weekCheck to false. + // + // If the year portion of the date falls within the current year (or the + // year portion of relativeDate, if present), then the display will show + // month and day. + // + // Otherwise, this function is equivalent to calling dojo.date.format with + // formatLength of "medium" + // + // dateObject: + // the date and time to be formatted. + + options = options || {}; + + var today = _clearTime(options.relativeDate || new Date()), + diff = today.getTime() - _clearTime(dateObject).getTime(), + fmtOpts = {locale: options.locale}; + + if(diff === 0){ + // today: 9:32 AM + return fmt(dateObject, del(fmtOpts, {selector: "time"})); + }else if(diff <= SIX_DAYS && diff > 0 && options.weekCheck !== false){ + // within the last week: Mon 9:32 am + return fmt(dateObject, del(fmtOpts, {selector: "date", datePattern: "EEE"})) + + " " + + fmt(dateObject, del(fmtOpts, {selector: "time", formatLength: "short"})); + }else if(dateObject.getFullYear() == today.getFullYear()){ + // this year: Nov 1 + var bundle = ggb(i18n.normalizeLocale(options.locale)); + return fmt(dateObject, del(fmtOpts, { + selector: "date", + datePattern: bundle["dateFormatItem-MMMd"] + })); + }else{ + // default: Jun 1, 2010 + return fmt(dateObject, del(fmtOpts, { + selector: "date", + formatLength: "medium", + locale: options.locale + })); + } +}; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/HebrewDateTest1.html b/js/dojo-release-1.7.2-src/dojox/date/tests/HebrewDateTest1.html new file mode 100644 index 0000000..d6fcb7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/HebrewDateTest1.html @@ -0,0 +1,175 @@ + + + + + + + + Date in Hebrew calendar: +     +
                            +
                            + + + + + + + + +
                            +
                            +
                            + + + +
                            + ///////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +
                            +
                            + + + + +
                            +
                            + + + +
                            +
                            +
                            + ///////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +
                            + Test add function +
                            +
                            +
                            + + + + + + + +
                            +
                            +
                            + + +
                            +
                            + ///////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ +
                            + Test difference function +
                            +
                            + + + + +
                            + + + + + +
                            +
                            +
                            + + +
                            +
                            +

                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/buddhist/Date.js b/js/dojo-release-1.7.2-src/dojox/date/tests/buddhist/Date.js new file mode 100644 index 0000000..95aedc7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/buddhist/Date.js @@ -0,0 +1,237 @@ +dojo.provide("dojox.date.tests.buddhist.Date"); +dojo.require("dojox.date.buddhist"); +dojo.require("dojox.date.buddhist.Date"); +dojo.require("dojox.date.buddhist.locale"); +dojo.require("dojo.date.locale"); + +//dojo.requireLocalization("dojo.cldr", "gregorian"); +//dojo.requireLocalization("dojo.cldr", "buddhist"); + +tests.register("dojox.date.tests.buddhist.Date", + [ + { + // see tests for dojo.date.locale for setup info + + name: "setup", + setUp: function(){ + var partLocaleList = ["th"]; + + dojo.forEach(partLocaleList, function(locale){ + dojo.requireLocalization("dojo.cldr", "gregorian", locale); + dojo.requireLocalization("dojo.cldr", "buddhist", locale); + }); + }, + runTest: function(t){ + }, + tearDown: function(){ + //Clean up bundles that should not exist if + //the test is re-run. + // delete dojo.cldr.nls.greg; + // delete dojo.cldr.nls.buddhist; + } + }, + { + name: "toGregorian", + runTest: function(t){ + var dateBuddhist = new dojox.date.buddhist.Date(2551, 11, 19); //Buddhist.Date month 0-12 + var dateGregorian = dateBuddhist.toGregorian(); + t.is(0, dojo.date.compare(new Date(2008, 11, 19), dateGregorian, "date"));//Date month 0-11 + + dateBuddhist = new dojox.date.buddhist.Date(2548, 3, 18); + dateGregorian = dateBuddhist.toGregorian(); + t.is(0, dojo.date.compare(new Date(2005, 3, 18), dateGregorian, "date")); + + dateBuddhist = new dojox.date.buddhist.Date(2550, 7, 10); + dateGregorian = dateBuddhist.toGregorian(); + t.is(0, dojo.date.compare(new Date(2007, 7, 10), dateGregorian, "date")); + + dateBuddhist = new dojox.date.buddhist.Date(2552, 4, 20); + dateGregorian = dateBuddhist.toGregorian(); + t.is(0, dojo.date.compare(new Date(2009, 4, 20), dateGregorian, "date")); + + dateBuddhist = new dojox.date.buddhist.Date(2553, 6, 31); + dateGregorian = dateBuddhist.toGregorian(); + t.is(0, dojo.date.compare(new Date(2010, 6, 31), dateGregorian, "date")); + + dateBuddhist = new dojox.date.buddhist.Date(2554, 9, 1); + dateGregorian = dateBuddhist.toGregorian(); + t.is(0, dojo.date.compare(new Date(2011, 9, 1), dateGregorian, "date")); + } + }, + { + name: "fromGregorian", + runTest: function(t){ + var dateGregorian = new Date(2009, 3, 12); + var dateBuddhistFromGreg = new dojox.date.buddhist.Date(dateGregorian); + t.is(0, dojo.date.compare( dateBuddhistFromGreg.toGregorian(), dateGregorian, "date")); + t.is(0, dojo.date.compare( dateBuddhistFromGreg.toGregorian(), dateGregorian)); + + dateGregorian = new Date(2008, 11, 18); //Date month 0-11 + dateBuddhistFromGreg = new dojox.date.buddhist.Date(dateGregorian); + t.is(0, dojox.date.buddhist.compare(new dojox.date.buddhist.Date(2551, 11, 18), dateBuddhistFromGreg, "date")); //Buddhist.Date month 0-12 + + dateGregorian = new Date(2005, 3, 18); + dateBuddhistFromGreg = new dojox.date.buddhist.Date(dateGregorian); + t.is(0, dojox.date.buddhist.compare(new dojox.date.buddhist.Date(2548, 3, 18), dateBuddhistFromGreg, "date")); + + dateGregorian = new Date(2007, 7, 10); + dateBuddhistFromGreg = new dojox.date.buddhist.Date(dateGregorian); + t.is(0, dojox.date.buddhist.compare(new dojox.date.buddhist.Date(2550, 7, 10), dateBuddhistFromGreg, "date")); + + dateGregorian = new Date(2009, 4, 20); + dateBuddhistFromGreg = new dojox.date.buddhist.Date(dateGregorian); + t.is(0, dojox.date.buddhist.compare(new dojox.date.buddhist.Date(2552, 4, 20), dateBuddhistFromGreg, "date")); + + dateGregorian = new Date(2010, 6, 31); + dateBuddhistFromGreg = new dojox.date.buddhist.Date(dateGregorian); + t.is(0, dojox.date.buddhist.compare(new dojox.date.buddhist.Date(2553, 6, 31), dateBuddhistFromGreg, "date")); + + dateGregorian = new Date(2011, 9, 1); + dateBuddhistFromGreg = new dojox.date.buddhist.Date(dateGregorian); + t.is(0, dojox.date.buddhist.compare(new dojox.date.buddhist.Date(2554, 9, 1), dateBuddhistFromGreg, "date")); + } + }, + { + name: "compare", + runTest: function(t){ + var dateBuddhist = new dojox.date.buddhist.Date(2552, 5, 16); + var dateBuddhist1 = new dojox.date.buddhist.Date(2550, 10, 25); + t.is(1, dojo.date.compare(dateBuddhist.toGregorian(), dateBuddhist1.toGregorian())); + t.is(-1, dojo.date.compare(dateBuddhist1.toGregorian(), dateBuddhist.toGregorian())); + } + }, + { + name: "add_and_difference", + runTest: function(t){ + var dateBuddhist = new dojox.date.buddhist.Date(2552, 5, 16); + var dateBuddhistLeap = new dojox.date.buddhist.Date(2551, 5, 16); + + var dateBuddhistAdd = dojox.date.buddhist.add(dateBuddhist, "month", 18); + var dateBuddhistAddLeap = dojox.date.buddhist.add(dateBuddhistLeap, "month", 18); + t.is(0, 18 - dojox.date.buddhist.difference(dateBuddhist, dateBuddhistAdd, "month")); + t.is(0, 18 - dojox.date.buddhist.difference(dateBuddhistLeap, dateBuddhistAddLeap, "month")); + + var dateBuddhistAdd1= dojox.date.buddhist.add(dateBuddhist, "year", 2); + t.is(0, 2 - dojox.date.buddhist.difference(dateBuddhist, dateBuddhistAdd1, "year")); + t.is(0, 2 - dojox.date.buddhist.difference(dateBuddhistLeap, dojox.date.buddhist.add(dateBuddhistLeap, "year", 2), "year")); + + var dateBuddhistAdd2= dojox.date.buddhist.add(dateBuddhist, "week", 12); + t.is(0, 12 - dojox.date.buddhist.difference(dateBuddhist, dateBuddhistAdd2, "week")); + t.is(0, 12 - dojox.date.buddhist.difference(dateBuddhistLeap, dojox.date.buddhist.add(dateBuddhistLeap, "week", 12), "week")); + + var dateBuddhistAdd3= dojox.date.buddhist.add(dateBuddhist, "weekday", 20); + t.is(0, 20 - dojox.date.buddhist.difference(dateBuddhist, dateBuddhistAdd3, "weekday")); + t.is(0, 20 - dojox.date.buddhist.difference(dateBuddhistLeap, dojox.date.buddhist.add(dateBuddhistLeap, "weekday", 20), "weekday")); + + var dateBuddhistAdd4= dojox.date.buddhist.add(dateBuddhist, "day", -50) + t.is(0, -50 - dojox.date.buddhist.difference(dateBuddhist, dateBuddhistAdd4, "day")); + t.is(0, -50 - dojox.date.buddhist.difference(dateBuddhistLeap, dojox.date.buddhist.add(dateBuddhistLeap, "day", -50), "day")); + + var dateBuddhistAdd5= dojox.date.buddhist.add(dateBuddhist, "hour", 200); + t.is(0, 200 - dojox.date.buddhist.difference(dateBuddhist, dateBuddhistAdd5, "hour")); + t.is(0, 200 - dojox.date.buddhist.difference(dateBuddhistLeap, dojox.date.buddhist.add(dateBuddhistLeap, "hour", 200), "hour")); + + var dateBuddhistAdd6= dojox.date.buddhist.add(dateBuddhist, "minute", -200); + t.is(0, -200 - dojox.date.buddhist.difference(dateBuddhist, dateBuddhistAdd6, "minute")); + t.is(0, -200 - dojox.date.buddhist.difference(dateBuddhistLeap, dojox.date.buddhist.add(dateBuddhistLeap, "minute", -200), "minute")); + + var dateBuddhistDiff = new dojox.date.buddhist.Date(2552, 5, 17); + t.is(1, dojox.date.buddhist.difference(dateBuddhist, dateBuddhistDiff)); + } + }, + { + name: "parse_and_format", + runTest: function(t){ + var dateBuddhist = new dojox.date.buddhist.Date(2552, 5, 16); + + var options = {formatLength:'short'}; + str= dojox.date.buddhist.locale.format(dateBuddhist, options); + dateBuddhist1 = dojox.date.buddhist.locale.parse(str, options); + t.is(0, dojo.date.compare(dateBuddhist.toGregorian(), dateBuddhist1.toGregorian(), 'date')); + + var pat = 'dd/MM/yy h:m:s'; + options = {datePattern:pat, selector:'date'}; + str= dojox.date.buddhist.locale.format(dateBuddhist, options); + dateBuddhist1 = dojox.date.buddhist.locale.parse(str, options); + t.is(0, dojo.date.compare(dateBuddhist.toGregorian(), dateBuddhist1.toGregorian(), 'date')); + + pat = 'dd#MM#yy HH$mm$ss'; + options = {datePattern:pat, selector:'date'}; + str= dojox.date.buddhist.locale.format(dateBuddhist, options); + dateBuddhist1 = dojox.date.buddhist.locale.parse(str, options); + t.is(0, dojo.date.compare(dateBuddhist.toGregorian(), dateBuddhist1.toGregorian(), 'date')); + + + pat = 'HH$mm$ss'; + options = {timePattern:pat, selector:'time'}; + str= dojox.date.buddhist.locale.format(dateBuddhist, options); + dateBuddhist1 = dojox.date.buddhist.locale.parse(str, options); + gregDate = dojo.date.locale.parse(str, options); + t.is(0, dojo.date.compare(gregDate, dateBuddhist1.toGregorian(), 'time')); + + } + }, + { + name: "addMilliseconds", + runTest: function(t){ + var buddhistDates = [ + [5771, 8, 21, 10, 30], + [5771, 8, 21, 2, 2], + [5771, 8, 21, 8, 10], // "absolute" index of month, non-leap year + [5771, 8, 21, 12, 59], + [5771, 8, 21, 3, 33] + ]; + + var dates = [ + [1432, 8, 21, 10, 30], + [1432, 8, 21, 2, 2], + [1432, 8, 21, 8, 10], // "absolute" index of month, non-leap year + [1432, 8, 21, 12, 59], + [1432, 8, 21, 3, 33] + ]; + + var traceAttributes = function(date){ + console.log("getHours():" + date.getHours()+" getMinutes():"+date.getMinutes()+" getSeconds():"+date.getSeconds()+" getMilliseconds():"+date.getMilliseconds()); + }; + + var dateBuddhist, date2; + dojo.forEach(buddhistDates, function(date, i){ + dateBuddhist = new dojox.date.buddhist.Date(date[0], date[1], date[2], date[3], date[4]); + date2 = new Date(dates[i][0], dates[i][1], dates[i][2], dates[i][3], dates[i][4]); + + var newBuddhistDate = dojox.date.buddhist.add(dateBuddhist, "millisecond", 1200); + var newDate = dojo.date.add(date2, "millisecond", 1200); + t.is(newBuddhistDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newBuddhistDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newBuddhistDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newBuddhistDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newBuddhistDate); + + newBuddhistDate = dojox.date.buddhist.add(dateBuddhist, "millisecond", 12022); + newDate = dojo.date.add(date2, "millisecond", 12022); + t.is(newBuddhistDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newBuddhistDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newBuddhistDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newBuddhistDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newBuddhistDate); + + newBuddhistDate = dojox.date.buddhist.add(dateBuddhist, "millisecond", 120422); + newDate = dojo.date.add(date2, "millisecond", 120422); + t.is(newBuddhistDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newBuddhistDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newBuddhistDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newBuddhistDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newBuddhistDate); + + newBuddhistDate = dojox.date.buddhist.add(dateBuddhist, "millisecond", 1204422); + newDate = dojo.date.add(date2, "millisecond", 1204422); + t.is(newBuddhistDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newBuddhistDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newBuddhistDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newBuddhistDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newBuddhistDate); + }); + } + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/hebrew/Date.js b/js/dojo-release-1.7.2-src/dojox/date/tests/hebrew/Date.js new file mode 100644 index 0000000..2e1b94d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/hebrew/Date.js @@ -0,0 +1,476 @@ +dojo.provide("dojox.date.tests.hebrew.Date"); +dojo.require("dojox.date.hebrew"); +dojo.require("dojox.date.hebrew.Date"); +dojo.require("dojox.date.hebrew.locale"); +dojo.require("dojo.date.locale"); + +dojo.requireLocalization("dojo.cldr", "gregorian"); +dojo.requireLocalization("dojo.cldr", "hebrew"); + +tests.register("dojox.date.tests.hebrew.Date", + [ + { + // see tests for dojo.date.locale for setup info + + name: "setup", + setUp: function(){ + var partLocaleList = ["he", "en"]; + + dojo.forEach(partLocaleList, function(locale){ + dojo.requireLocalization("dojo.cldr", "gregorian", locale); + dojo.requireLocalization("dojo.cldr", "hebrew", locale); + }); + }, + runTest: function(t){ + }, + tearDown: function(){ + //Clean up bundles that should not exist if + //the test is re-run. + // delete dojo.cldr.nls.gregorian; + // delete dojo.cldr.nls.hebrew; + } + }, + { + name: "compare", + runTest: function(t){ + var dateHebrew = new dojox.date.hebrew.Date(5769, 5, 16); + var dateHebrew1 = new dojox.date.hebrew.Date(5758, 10, 25); + t.is(1, dojo.date.compare(dateHebrew.toGregorian(), dateHebrew1.toGregorian())); + t.is(-1, dojo.date.compare(dateHebrew1.toGregorian(), dateHebrew.toGregorian())); + } + }, + { + name: "toGregorian_fromGregorian", + runTest: function(t){ + + //Hebrew month names + var TISHRI = 0 , HESHVAN = 1, KISLEV = 2, TEVET = 3, SHVAT = 4 , ADARI = 5, ADAR = 6, NISAN= 7 , IYAR= 8 , SIVAN= 9 , TAMMUZ = 10, AV = 11 , ELUL = 12; + //hebrew.Date month names + //Gregorian Date month 1-12 - for readability + var dateTable = [ + [1239, 9, 8, 5000,TISHRI,1], + [1240, 9, 25, 5001,TISHRI,1], + [1298, 4, 17, 5058, NISAN, 27], + [1391, 7, 11, 5151, AV, 1], + [1492, 5, 9, 5252, IYAR, 3], + [1560, 4, 4, 5320, ADAR, 27], + [1648, 7, 10, 5408, TAMMUZ, 20], + [1903, 5, 19, 5663, IYAR, 22], + [1929, 9, 24, 5689, ELUL, 19], + [1941, 10, 29, 5702, HESHVAN, 8], + [1943, 5, 19, 5703, IYAR, 14], + [1943, 11, 6, 5704, HESHVAN, 8], + [1992, 4, 15, 5752, NISAN, 12], + [1996, 3, 25, 5756, NISAN, 5], + [2005, 4, 18, 5765, NISAN, 9], + [2007, 7, 12, 5767, TAMMUZ, 26], + [2007, 10, 13, 5768, HESHVAN, 1], + [2007, 11, 11, 5768, KISLEV, 1], + [2007, 12, 10, 5768, TEVET, 1], + [2008, 1, 8, 5768, SHVAT, 1], + [2008, 2, 7, 5768, ADARI, 1], + [2008, 3, 8, 5768, ADAR, 1], + [2008, 4, 6, 5768, NISAN, 1], + [2008, 5, 6, 5768, IYAR, 1], + [2008, 6, 4, 5768, SIVAN, 1], + [2008, 7, 4, 5768, TAMMUZ, 1], + [2008, 8, 2, 5768, AV, 1], + [2008, 8, 4, 5768, AV, 3], + [2008, 9, 5, 5768, ELUL, 5], + [2008, 8, 5, 5768, AV, 4], + [2008, 9, 11, 5768, ELUL, 11], + [2008, 12, 19, 5769, KISLEV, 22], + [2009, 1, 26, 5769, SHVAT, 1], + [2009, 2, 25, 5769, ADARI, 1], //incorrect, not leap year , the month is set to ADAR + [2009, 2, 25, 5769, ADAR, 1], + [2009, 3, 26, 5769, NISAN, 1], + [2009, 5, 24, 5769, SIVAN, 1], + [2009, 7, 22, 5769, AV, 1], + [2009, 8, 21, 5769, ELUL, 1], + [2010, 7, 2, 5770, TAMMUZ, 20], + [2011, 10, 1, 5772, TISHRI, 3], + [2038, 12, 9, 5799, KISLEV, 12], + [2094, 8, 17, 5854, ELUL, 5] + ]; + + + + var dateHebrew, dateGregorian; + //toGregorian + dojo.forEach(dateTable, function(d, i){ + dateHebrew = new dojox.date.hebrew.Date(d[3], d[4], d[5]); + dateGregorian = dateHebrew.toGregorian(); + t.is(0, dojo.date.compare(new Date(d[0], d[1]-1, d[2]), dateGregorian, "date")); + }); + + //fromGregorian + dojo.forEach(dateTable, function(d, i){ + dateGregorian = new Date(d[0], d[1]-1, d[2]); + dateHebrew = new dojox.date.hebrew.Date(dateGregorian); + testHebrew = new dojox.date.hebrew.Date(d[3], d[4], d[5]); + t.is(0, dojo.date.compare(testHebrew.toGregorian() , dateHebrew.toGregorian(), "date")); + }); + + //test for invalid date, toGregorian and fromGregorian should return invalid date + var invDate = new Date(""); + var hDate = new dojox.date.hebrew.Date(invDate); + t.is(true, isNaN(hDate)); + t.is(true, isNaN(hDate.toGregorian())); + + } + }, + { + name: "getDay", + runTest: function(t){ + var dateTable = [ + [5769, 0, 11, 5], + [5769, 1, 3, 6], + [5769, 2, 10, 0], + [5769, 3, 23, 1], + [5769, 6, 21, 2], + [5769, 6, 22, 3], + [5769, 7, 15, 4] + ]; + dojo.forEach(dateTable, function(d, i){ + var date = new dojox.date.hebrew.Date(d[0], d[1], d[2]); + t.is(d[3], date.getDay()); + }); + + } + }, + { + name: "getDaysInHebrewMonth", + runTest: function(t){ + + var dateTable = [ + [5768, 1, 29], //HESHVAN + [5770, 1, 30], //HESHVAN + [5768, 5, 30], //ADARI + [5769, 5, 0], //ADARI + [5768, 2, 29], //KISLEV, + [5769, 2, 30] //KISLEV, + ]; + + dojo.forEach(dateTable, function(d, i){ + var date = new dojox.date.hebrew.Date(d[0], d[1], 1); + t.is(d[2], dojox.date.hebrew.getDaysInMonth(date)); + }); + } + }, + { + name: "add_difference", + runTest: function(t){ + // 5766, 5767, 5769, 5770, 5772, 5772, 5773, 5775 - non leap + // 5765, 5768, 5771, 5774 - leap + + //Hebrew month names + var TISHRI = 0 , HESHVAN = 1, KISLEV = 2, TEVET = 3, SHVAT = 4 , ADARI = 5, ADAR = 6, NISAN= 7 , IYAR= 8 , SIVAN= 9 , TAMMUZ = 10, AV = 11 , ELUL = 12; + var start = [ + [5767, TAMMUZ, 5769, SIVAN], + [5767, TAMMUZ, 5772, IYAR], + [5767, 0, 5768, TISHRI], + [5775, KISLEV, 5773, TEVET], + [5767, TISHRI , 5765, HESHVAN], + [5768, TEVET, 5768, ADARI], + [5768, IYAR, 5768, ADAR], + [5769, TEVET, 5769, ADAR], + [5769, IYAR, 5769, SHVAT], + [5769, ELUL, 5770, TISHRI], + [5769, ELUL, 5769, AV] + ]; + var add =[24, 60, 12, -24,-24, 2, -2, 2, -3, 1, -1]; + + var dateHebStart, dateHebEnd, res, dateHebRes; + dojo.forEach(start, function(s, i){ + dateHebStart = new dojox.date.hebrew.Date( s[0], s[1], 1); + dateHebRes = dojox.date.hebrew.add(dateHebStart, "month", add[i]); + + t.is(0, dateHebRes.getMonth() - s[3]); + t.is(0, dateHebRes.getFullYear() - s[2]); + }); + + //month difference + dojo.forEach(start, function(s, i){ + dateHebRes = new dojox.date.hebrew.Date( s[2], s[3], 1); + dateHebStart = new dojox.date.hebrew.Date( s[0], s[1], 1); + t.is(add[i], dojox.date.hebrew.difference(dateHebStart , dateHebRes, "month")); + }); + + //different fields + var fields = [ + [ 5757, TISHRI, 1, "year", 10, 5767, TISHRI, 1 ], + [ 5758, KISLEV, 30, "year", -1, 5757, KISLEV, 29 ], + [ 5769, NISAN, 30, "year", -1, 5768, NISAN, 30 ], + [ 5768, ADARI, 30, "year", 1, 5769, ADAR, 29 ], + [ 5757, TISHRI, 30, "month", 1, 5757, HESHVAN, 29 ], + [ 5762, AV, 30, "day", 1, 5762, ELUL, 1 ], + [ 5762, ELUL, 1, "day", -1, 5762, AV, 30 ], + [ 5769, TAMMUZ, 27, "day", 10, 5769, AV, 8], + [ 5757, KISLEV, 1, "day", 30, 5757, TEVET, 2 ], // 29-day month + [ 5758, KISLEV, 1, "day", 31, 5758, TEVET, 2 ], // 30-day month + [ 5769, AV, 27, "day", 10, 5769, ELUL, 7], + [ 5769, ELUL, 27, "day", 10, 5770, TISHRI, 8], + [ 5769, TAMMUZ, 27, "day", -30, 5769, SIVAN, 27], + [ 5769, AV, 1, "day", -60, 5769, IYAR, 29], + [ 5769, SHVAT, 30, "day", 1, 5769, ADAR, 1], + [ 5769, TAMMUZ, 27, "weekday", 10, 5769, AV, 12], + [ 5769, KISLEV, 1, "weekday", 1, 5769, KISLEV, 3], + [ 5769, NISAN, 1, "weekday", -5, 5769, ADAR, 23], + [ 5769, AV, 7, "weekday", -10, 5769, TAMMUZ, 22], + [ 5769, AV, 12, "weekday", -6, 5769, AV, 2], + [ 5769, AV, 11, "weekday", -6, 5769, AV, 2], + [ 5769, AV, 10, "weekday", -6, 5769,AV, 2], + [ 5769, AV, 11, "weekday", 6, 5769, AV, 19], + [ 5769, AV, 10, "weekday", 6, 5769, AV, 19], + [ 5769, AV, 11, "weekday", 12, 5769, AV, 27], + [ 5769, AV, 10, "weekday", 12, 5769, AV, 27], + [ 5769, AV, 9, "weekday", 12, 5769, AV, 27], + [ 5769, NISAN, 29, "week", 1, 5769, IYAR, 6], + [ 5771, NISAN, 1, "week", -4, 5771, ADAR, 2], + [ 5771, NISAN, 1, "week", -8, 5771, ADARI, 4], + [ 5769, AV, 17, "week", 2, 5769, ELUL, 1], + [ 5769, AV, 18, "week", -1, 5769, AV, 11] ]; + + //test add + dojo.forEach( fields, function(f, i){ + dateHebStart = new dojox.date.hebrew.Date( f[0], f[1], f[2]); + dateHebEnd = dojox.date.hebrew.add(dateHebStart, f[3], f[4]); + dateHebRes = new dojox.date.hebrew.Date( f[5], f[6], f[7]); + t.is(0, dojo.date.compare (dateHebRes.toGregorian(), dateHebEnd.toGregorian())); + if(f[3] == "week"){ + t.is(dateHebStart.getDay(), dateHebEnd.getDay()); + } + }); + + //test difference + dojo.forEach( fields, function(f, i){ + dateHebStart = new dojox.date.hebrew.Date( f[0], f[1], f[2]); + dateHebRes = new dojox.date.hebrew.Date( f[5], f[6], f[7]); + res = dojox.date.hebrew.difference(dateHebStart, dateHebRes, f[3]); + t.is(f[4], res); + }); + + // check that setMonth (getMonth + d) is not the same as add month (d), due to adar + dateHebStart = new dojox.date.hebrew.Date( 5769, KISLEV, 1); + var dateHebAdd = dojox.date.hebrew.add(dateHebStart, "month", 4); + dateHebStart.setMonth(dateHebStart.getMonth() +4); + t.assertFalse(dateHebStart.getMonth() == dateHebAdd.getMonth()); + + } + }, + { + name: "consistency_of_add_and_difference", + runTest: function(t){ + var dateHebrew = new dojox.date.hebrew.Date(5769, 4, 16); + var dateHebrewLeap = new dojox.date.hebrew.Date(5768, 5, 16); + + // var m = ["TISHRI " , "HESHVAN", "KISLEV", "TEVET", "SHVAT" , "ADARI", "ADAR", "NISAN" , "IYAR" , "SIVAN" , "TAMMUZ", "AV" , "ELUL"]; + + var amouts = [2, 5, 6, 7, 8,12, 18,20, 24, 50, -3, -4, -5, -6, -7, -8, -9, -10, -50, 200, -200]; + var dateHebrewAdd, dateHebrewAddLeap; + + dojo.forEach( amouts, function(amount, i){ + dateHebrewAdd = dojox.date.hebrew.add(dateHebrew, "month", amount); + dateHebrewAddLeap = dojox.date.hebrew.add(dateHebrewLeap, "month", amount); + t.is(dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "month"), amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dateHebrewAddLeap, "month")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "year", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "year")); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "year", amount), "year")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "week", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "week")); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "week", amount), "week")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "weekday", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "weekday")); + dateHebrewAddLeap = dojox.date.hebrew.add(dateHebrewLeap, "weekday", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "weekday", amount), "weekday")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "day", amount) + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "day")); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "day", amount), "day")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "hour", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "hour")); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "hour", amount), "hour")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "minute", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "minute")); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "minute", amount), "minute")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "second", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "second")); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "second", amount), "second")); + + dateHebrewAdd= dojox.date.hebrew.add(dateHebrew, "millisecond", amount); + t.is(amount, dojox.date.hebrew.difference(dateHebrew, dateHebrewAdd, "millisecond")); + t.is(amount, dojox.date.hebrew.difference(dateHebrewLeap, dojox.date.hebrew.add(dateHebrewLeap, "millisecond", amount), "millisecond")); + }); + + var dateHebrewDiff = new dojox.date.hebrew.Date(5769, 4, 17); + t.is(1, dojox.date.hebrew.difference(dateHebrew, dateHebrewDiff)); + } + }, + { + name: "getMonth_setMonth", + runTest: function(t){ + var nonLeap = "5766, 5767, 5769, 5770, 5772, 5772, 5773, 5775"; + var leap = "5765, 5768, 5771, 5774"; + // ELUL - 12, ADAR -6, ADARI -5 + var dateHebrew = new dojox.date.hebrew.Date(5765, 1, 1); + for (var year = 5766; year < 5866; year++){ + dateHebrew.setFullYear(year); + t.is(year,dateHebrew.getFullYear()); + dateHebrew.setMonth(12); + t.is(12,dateHebrew.getMonth()); + dateHebrew.setMonth(6); + t.is(6,dateHebrew.getMonth()); + if (leap.match(year)){ + dateHebrew.setMonth(5); + t.is(5,dateHebrew.getMonth()); + } + if (nonLeap.match(year)){ + dateHebrew.setMonth(5); // non leap year does not have ADARI, set month to ADAR + t.is(6,dateHebrew.getMonth()); + } + } + } + }, + { + name: "hebrew_numerals", + runTest: function(t){ + var i, hebrNum; + for ( i = 1 ; i <= 30; i++){ + //test day hebrew numerals + t.is(dojox.date.hebrew.numerals.parseDayHebrewLetters(dojox.date.hebrew.numerals.getDayHebrewLetters(i)), i); + t.is(dojox.date.hebrew.numerals.parseDayHebrewLetters(dojox.date.hebrew.numerals.getDayHebrewLetters(i, true)), i); //with geresh + //test month hebrew numerals + if ( i <= 13){ + t.is(dojox.date.hebrew.numerals.parseMonthHebrewLetters(dojox.date.hebrew.numerals.getMonthHebrewLetters(i-1)), i-1); + } + } + //test year hebrew numerals + for ( i = 5001; i < 6000; i+=27){ + t.is(dojox.date.hebrew.numerals.parseYearHebrewLetters(dojox.date.hebrew.numerals.getYearHebrewLetters(i)), i); + } + //hebrew numerals are not relevant for year < 5001 or > 5999 + t.assertFalse (dojox.date.hebrew.numerals.parseYearHebrewLetters(dojox.date.hebrew.numerals.getYearHebrewLetters(2345)) == 2345); + t.assertFalse (dojox.date.hebrew.numerals.parseYearHebrewLetters(dojox.date.hebrew.numerals.getYearHebrewLetters(6789)) == 6789); + } + }, + { + name: "parse_and_format", + runTest: function(t){ + + //test Hebrew and English locale + + var dates = [ + [5768, 5, 1], + [5768, 1, 29], + [5769, 6, 16], // "absolute" index of month, non-leap year + [5769, 11, 2], + [5770, 0, 2] + ]; + + var dateHebrew, dateHebrew1; + dojo.forEach(dates, function(date, i){ + dateHebrew = new dojox.date.hebrew.Date(date[0], date[1], date[2]); + + var options = [{formatLength:'full', locale:'he'},{formatLength:'long', locale:'he'},{formatLength:'medium', locale:'he'},{formatLength:'short', locale:'he'}, + {formatLength:'full', locale:'en'},{formatLength:'long', locale:'en'},{formatLength:'medium', locale:'en'},{formatLength:'short', locale:'en'}]; + dojo.forEach(options, function(opt, i){ + str= dojox.date.hebrew.locale.format(dateHebrew, opt); + var option = "{" +opt+", locale:'he'}"; + dateHebrew1 = dojox.date.hebrew.locale.parse(str, opt); + t.is(0, dojo.date.compare(dateHebrew.toGregorian(), dateHebrew1.toGregorian(), 'date')); + }); + + var pattern = ['d M yy', 'dd/MM/yy h:m:s', 'dd#MM#yy HH$mm$ss', 'dd MMMM yyyy']; + dojo.forEach( pattern, function(pat, i){ + options = {datePattern:pat, selector:'date', locale:'he'}; + str= dojox.date.hebrew.locale.format(dateHebrew, options); + dateHebrew1 = dojox.date.hebrew.locale.parse(str, options); + t.is(0, dojo.date.compare(dateHebrew.toGregorian(), dateHebrew1.toGregorian(), 'date')); + }); + }); + + dateHebrew = new dojox.date.hebrew.Date(5769, 6, 3, 15, 3, 59); + pattern = 'HH$mm$ss'; + options = {timePattern:pattern, selector:'time'}; + str= dojox.date.hebrew.locale.format(dateHebrew, options); + dateHebrew1 = dojox.date.hebrew.locale.parse(str, options); + var gregDate = dojo.date.locale.parse(str, options); + t.is(0, dojo.date.compare(gregDate, dateHebrew1.toGregorian(), 'time')); + + pattern = "h:m:s"; + options = {timePattern:pattern, selector:'time'}; + str= dojox.date.hebrew.locale.format(dateHebrew, options); + t.is(str, "3:3:59"); + } + }, + { + name: "addMilliseconds", + runTest: function(t){ + var hebrewDates = [ + [5771, 8, 21, 10, 30], + [5771, 8, 21, 2, 2], + [5771, 8, 21, 8, 10], // "absolute" index of month, non-leap year + [5771, 8, 21, 12, 59], + [5771, 8, 21, 3, 33] + ]; + + var dates = [ + [1432, 8, 21, 10, 30], + [1432, 8, 21, 2, 2], + [1432, 8, 21, 8, 10], // "absolute" index of month, non-leap year + [1432, 8, 21, 12, 59], + [1432, 8, 21, 3, 33] + ]; + + var traceAttributes = function(date){ + console.log("getHours():" + date.getHours()+" getMinutes():"+date.getMinutes()+" getSeconds():"+date.getSeconds()+" getMilliseconds():"+date.getMilliseconds()); + }; + + var dateHebrew, date2; + dojo.forEach(hebrewDates, function(date, i){ + dateHebrew = new dojox.date.hebrew.Date(date[0], date[1], date[2], date[3], date[4]); + date2 = new Date(dates[i][0], dates[i][1], dates[i][2], dates[i][3], dates[i][4]); + + var newHebrewDate = dojox.date.hebrew.add(dateHebrew, "millisecond", 1200); + var newDate = dojo.date.add(date2, "millisecond", 1200); + t.is(newHebrewDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newHebrewDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newHebrewDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newHebrewDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newHebrewDate); + + newHebrewDate = dojox.date.hebrew.add(dateHebrew, "millisecond", 12022); + newDate = dojo.date.add(date2, "millisecond", 12022); + t.is(newHebrewDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newHebrewDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newHebrewDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newHebrewDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newHebrewDate); + + newHebrewDate = dojox.date.hebrew.add(dateHebrew, "millisecond", 120422); + newDate = dojo.date.add(date2, "millisecond", 120422); + t.is(newHebrewDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newHebrewDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newHebrewDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newHebrewDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newHebrewDate); + + newHebrewDate = dojox.date.hebrew.add(dateHebrew, "millisecond", 1204422); + newDate = dojo.date.add(date2, "millisecond", 1204422); + t.is(newHebrewDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newHebrewDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newHebrewDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newHebrewDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newHebrewDate); + }); + } + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/islamic/Date.js b/js/dojo-release-1.7.2-src/dojox/date/tests/islamic/Date.js new file mode 100644 index 0000000..123fdcd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/islamic/Date.js @@ -0,0 +1,294 @@ +dojo.provide("dojox.date.tests.islamic.Date"); +dojo.require("dojox.date.islamic.Date"); +dojo.require("dojox.date.islamic.locale"); +dojo.require("dojox.date.islamic"); +dojo.require("dojo.date"); +dojo.require("dojo.date.locale"); + +dojo.requireLocalization("dojo.cldr", "gregorian"); +dojo.requireLocalization("dojo.cldr", "islamic"); + +tests.register("dojox.date.tests.islamic.Date", + [ + { + // Test formatting and parsing of dates in various locales pre-built in dojo.cldr + // NOTE: we can't set djConfig.extraLocale before bootstrapping unit tests, so directly + // load resources here for specific locales: + + name: "setup", + setUp: function() { + var partLocaleList = ["ar","en"]; + + dojo.forEach(partLocaleList, function(locale) { + dojo.requireLocalization("dojo.cldr", "islamic", locale); + }); + }, + runTest: function(t) { + }, + tearDown: function() { + //Clean up bundles that should not exist if + //the test is re-run. + // delete dojo.cldr.nls.islamic; + } + }, + { + name: "toGregorian", + runTest: function(t) { + var dateIslamic = new dojox.date.islamic.Date(1431, 3, 6, 15, 15, 10 ); // March 22 2010 3:15:10 PM + var dateGregorian = dateIslamic.toGregorian(); + t.is(0, dojo.date.compare(new Date(2010, 2, 22, 15, 15, 10), dateGregorian, "date")); + } + }, + { + name: "fromGregorian", + runTest: function(t) { + var dateIslamic = new dojox.date.islamic.Date(); + var dateGregorian = new Date(2010, 2, 22, 15, 15, 10); + dateIslamic.fromGregorian(dateGregorian); + t.is(0, dojox.date.islamic.compare(new dojox.date.islamic.Date(1431, 3, 6, 15, 15, 10), dateIslamic, "date")); + } + }, + { + name: "getDay", + runTest: function(t) { + var dateTable = [ + [1431, 0, 11, 1], + [1431, 1, 3, 2], + [1431, 2, 10, 3], + [1431, 3, 23, 4], + [1431, 6, 21, 6], + [1431, 6, 22, 0], + [1431, 7, 15, 2] + ]; + dojo.forEach(dateTable, function(d, i) { + var date = new dojox.date.islamic.Date(d[0], d[1], d[2]); + t.is(d[3], date.getDay()); + }); + + } + }, + { + name: "getDaysInIslamicMonth", + runTest: function(t) { + + var dateTable = [ + [1430, 1, 29], + [1420, 1, 29], + [1422, 5, 29], + [1431, 5, 29], + [1430, 2, 30], + [1431, 2, 30] + ]; + + dojo.forEach(dateTable, function(d, i) { + var date = new dojox.date.islamic.Date(d[0], d[1], 1); + t.is(d[2], dojox.date.islamic.getDaysInMonth(date)); + }); + } + }, + { + name: "add_difference", + runTest: function(t) { + var start = [ + [1420, 1, 1422, 1], + [1430, 2, 1435, 2], + [1433, 0, 1434, 0], + [1422, 2, 1420, 2], + [1429, 3, 1427, 3], + [1431, 4, 1431, 6], + [1429, 7, 1429, 5], + [1431, 3, 1431, 5], + [1431, 3, 1431, 0], + [1431, 1, 1431, 2], + [1431, 9, 1431, 8] + ]; + var add = [24, 60, 12, -24, -24, 2, -2, 2, -3, 1, -1]; + + var dateHijriStart, dateHijriEnd, res, dateHijriRes; + dojo.forEach(start, function(s, i) { + dateHijriStart = new dojox.date.islamic.Date(s[0], s[1], 1); + dateHijriRes = dojox.date.islamic.add(dateHijriStart, "month", add[i]); + + t.is(0, dateHijriRes.getMonth() - s[3]); + t.is(0, dateHijriRes.getFullYear() - s[2]); + }); + + //month difference + dojo.forEach(start, function(s, i) { + dateHijriRes = new dojox.date.islamic.Date(s[2], s[3], 1); + dateHijriStart = new dojox.date.islamic.Date(s[0], s[1], 1); + t.is(add[i], dojox.date.islamic.difference(dateHijriStart, dateHijriRes, "month")); + }); + } + }, + { + name: "consistency_of_add_and_difference", + runTest: function(t) { + var dateIslamic = new dojox.date.islamic.Date(1431, 4, 6); + + + var amouts = [2, 5, 6, 7, 8, 12, 18, 20, 24, 50, -3, -4, -5, -6, -7, -8, -9, -10, -50, 200, -200]; + var dateIslamicAdd; + + dojo.forEach(amouts, function(amount, i) { + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "month", amount); + t.is(dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "month"), amount); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "year", amount); + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "year")); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "week", amount); + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "week")); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "weekday", amount); + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "weekday")); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "day", amount) + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "day")); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "hour", amount); + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "hour")); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "minute", amount); + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "minute")); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "second", amount); + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "second")); + + dateIslamicAdd = dojox.date.islamic.add(dateIslamic, "millisecond", amount); + t.is(amount, dojox.date.islamic.difference(dateIslamic, dateIslamicAdd, "millisecond")); + }); + + var dateIslamicDiff = new dojox.date.islamic.Date(1431, 4, 7); + t.is(1, dojox.date.islamic.difference(dateIslamic, dateIslamicDiff)); + } + }, + { + name: "getMonth_setMonth", + runTest: function(t) { + var dateIslamic = new dojox.date.islamic.Date(1420, 1, 1); + for (var year = 1420; year < 1430; year++) { + dateIslamic.setFullYear(year); + t.is(year, dateIslamic.getFullYear()); + dateIslamic.setMonth(11); + t.is(11, dateIslamic.getMonth()); + dateIslamic.setMonth(6); + t.is(6, dateIslamic.getMonth()); + + } + } + }, + { + name: "parse_and_format", + runTest: function(t) { + + //test Islamic and English locale + + var dates = [ + [1430, 5, 1], + [1428, 1, 28], + [1431, 5, 16], + [1431, 11, 2], + [1433, 0, 2] + ]; + + var dateIslamic, dateIslamic1; + dojo.forEach(dates, function(date, i) { + dateIslamic = new dojox.date.islamic.Date(date[0], date[1], date[2]); + + var options = [{ formatLength: 'full', locale: 'ar' }, { formatLength: 'long', locale: 'ar' }, { formatLength: 'medium', locale: 'ar' }, { formatLength: 'short', locale: 'ar' }, + { formatLength: 'full', locale: 'en' }, { formatLength: 'long', locale: 'en' }, { formatLength: 'medium', locale: 'en' }, { formatLength: 'short', locale: 'en'}]; + dojo.forEach(options, function(opt, i) { + str = dojox.date.islamic.locale.format(dateIslamic, opt); + var option = "{" + opt + ", locale:'ar'}"; + dateIslamic1 = dojox.date.islamic.locale.parse(str, opt); + t.is(0, dojo.date.compare(dateIslamic.toGregorian(), dateIslamic1.toGregorian(), 'date')); + }); + + var pattern = ['d M yy', 'dd/MM/yy h:m:s', 'dd#MM#yy HH$mm$ss', 'dd MMMM yyyy']; + dojo.forEach(pattern, function(pat, i) { + options = { datePattern: pat, selector: 'date', locale: 'ar' }; + str = dojox.date.islamic.locale.format(dateIslamic, options); + dateIslamic1 = dojox.date.islamic.locale.parse(str, options); + t.is(0, dojo.date.compare(dateIslamic.toGregorian(), dateIslamic1.toGregorian(), 'date')); + }); + }); + + dateIslamic = new dojox.date.islamic.Date(1431, 6, 3, 15, 3, 59); + pattern = 'HH$mm$ss'; + options = { timePattern: pattern, selector: 'time' }; + str = dojox.date.islamic.locale.format(dateIslamic, options); + dateIslamic1 = dojox.date.islamic.locale.parse(str, options); + var gregDate = dojo.date.locale.parse(str, options); + t.is(0, dojo.date.compare(gregDate, dateIslamic1.toGregorian(), 'time')); + + pattern = "h:m:s"; + options = { timePattern: pattern, selector: 'time' }; + str = dojox.date.islamic.locale.format(dateIslamic, options); + t.is(str, "3:3:59"); + } + }, + { + name: "addMilliseconds", + runTest: function(t){ + var islamicDates = [ + [5771, 8, 21, 10, 30], + [5771, 8, 21, 2, 2], + [5771, 8, 21, 8, 10], // "absolute" index of month, non-leap year + [5771, 8, 21, 12, 59], + [5771, 8, 21, 3, 33] + ]; + + var dates = [ + [1432, 8, 21, 10, 30], + [1432, 8, 21, 2, 2], + [1432, 8, 21, 8, 10], // "absolute" index of month, non-leap year + [1432, 8, 21, 12, 59], + [1432, 8, 21, 3, 33] + ]; + + var traceAttributes = function(date){ + console.log("getHours():" + date.getHours()+" getMinutes():"+date.getMinutes()+" getSeconds():"+date.getSeconds()+" getMilliseconds():"+date.getMilliseconds()); + }; + + var dateIslamic, date2; + dojo.forEach(islamicDates, function(date, i){ + dateIslamic = new dojox.date.islamic.Date(date[0], date[1], date[2], date[3], date[4]); + date2 = new Date(dates[i][0], dates[i][1], dates[i][2], dates[i][3], dates[i][4]); + + var newIslamicDate = dojox.date.islamic.add(dateIslamic, "millisecond", 1200); + var newDate = dojo.date.add(date2, "millisecond", 1200); + t.is(newIslamicDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newIslamicDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newIslamicDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newIslamicDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newIslamicDate); + + newIslamicDate = dojox.date.islamic.add(dateIslamic, "millisecond", 12022); + newDate = dojo.date.add(date2, "millisecond", 12022); + t.is(newIslamicDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newIslamicDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newIslamicDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newIslamicDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newIslamicDate); + + newIslamicDate = dojox.date.islamic.add(dateIslamic, "millisecond", 120422); + newDate = dojo.date.add(date2, "millisecond", 120422); + t.is(newIslamicDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newIslamicDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newIslamicDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newIslamicDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newIslamicDate); + + newIslamicDate = dojox.date.islamic.add(dateIslamic, "millisecond", 1204422); + newDate = dojo.date.add(date2, "millisecond", 1204422); + t.is(newIslamicDate.getHours(), newDate.getHours(), "Hours are different"); + t.is(newIslamicDate.getMinutes(), newDate.getMinutes(), "Minutes are different"); + t.is(newIslamicDate.getSeconds(), newDate.getSeconds(), "Seconds are different"); + t.is(newIslamicDate.getMilliseconds(), newDate.getMilliseconds(), "Milliseconds are different"); + //traceAttributes(newIslamicDate); + }); + } + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/module.js b/js/dojo-release-1.7.2-src/dojox/date/tests/module.js new file mode 100644 index 0000000..3eeb05c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/module.js @@ -0,0 +1,14 @@ +dojo.provide("dojox.date.tests.module"); + +try{ + dojo.require("dojox.date.tests.timezone"); + dojo.require("dojox.date.tests.timezoneFormatting"); + dojo.require("dojox.date.tests.relative"); + dojo.require("dojox.date.tests.hebrew.Date"); + dojo.require("dojox.date.tests.islamic.Date"); + dojo.require("dojox.date.tests.buddhist.Date"); + dojo.require("dojox.date.tests.posix"); +}catch(e){ + doh.debug(e); +} + diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/posix.js b/js/dojo-release-1.7.2-src/dojox/date/tests/posix.js new file mode 100644 index 0000000..147ac7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/posix.js @@ -0,0 +1,261 @@ +dojo.provide("dojox.date.tests.posix"); +dojo.require("dojox.date.posix"); + +tests.register("dojox.date.tests.posix", + [ + { + // see tests for dojo.date.locale for setup info + + name: "dojox.date.tests.posix", + setUp: function(){ + var partLocaleList = ["en"]; + + dojo.forEach(partLocaleList, function(locale){ + dojo.requireLocalization("dojo.cldr", "gregorian", locale); + }); + }, + runTest: function(t){ + }, + tearDown: function(){ + //Clean up bundles that should not exist if + //the test is re-run. +// delete dojo.cldr.nls.gregorian; + } + }, + { + name: "strftime", + runTest: function(t){ + var date = new Date(2006, 7, 11, 0, 55, 12, 3456); + t.is("06/08/11", dojox.date.posix.strftime(date, "%y/%m/%d")); + + var dt = null; // Date to test + var fmt = ''; // Format to test + var res = ''; // Expected result + + dt = new Date(2006, 0, 1, 18, 23); + fmt = '%a'; + res = 'Sun'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%A'; + res = 'Sunday'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%b'; + res = 'Jan'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%B'; + res = 'January'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%c'; + res = 'Sunday, January 1, 2006 6:23:00 PM'; + t.is(res, dojox.date.posix.strftime(dt, fmt).substring(0, res.length)); + + fmt = '%C'; + res = '20'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%d'; + res = '01'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%D'; + res = '01/01/06'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%e'; + res = ' 1'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%h'; + res = 'Jan'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%H'; + res = '18'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%I'; + res = '06'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%j'; + res = '001'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%k'; + res = '18'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%l'; + res = ' 6'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%m'; + res = '01'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%M'; + res = '23'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%p'; + res = 'PM'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%r'; + res = '06:23:00 PM'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%R'; + res = '18:23'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%S'; + res = '00'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%T'; + res = '18:23:00'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%u'; + res = '7'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%w'; + res = '0'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%x'; + res = 'Sunday, January 1, 2006'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en')); + + fmt = '%X'; + res = '6:23:00 PM'; + t.is(res, dojox.date.posix.strftime(dt, fmt, 'en').substring(0,res.length)); + + fmt = '%y'; + res = '06'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%Y'; + res = '2006'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + + fmt = '%%'; + res = '%'; + t.is(res, dojox.date.posix.strftime(dt, fmt)); + } + }, + { + name: "getStartOfWeek", + runTest: function(t){ + var weekStart; + + // Monday + var date = new Date(2007, 0, 1); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 1), 1); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 2), 1); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 3), 1); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 4), 1); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 5), 1); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 6), 1); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 7), 1); + t.is(date, weekStart); + + // Sunday + date = new Date(2007, 0, 7); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 7), 0); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 8), 0); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 9), 0); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 10), 0); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 11), 0); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 12), 0); + t.is(date, weekStart); + weekStart = dojox.date.posix.getStartOfWeek(new Date(2007, 0, 13), 0); + t.is(date, weekStart); + } + }, + { + name: "setIsoWeekOfYear", + runTest: function(t){ + var date = new Date(2006,10,10); + var result = dojox.date.posix.setIsoWeekOfYear(date, 1); + t.is(new Date(2006,0,6), result); + result = dojox.date.posix.setIsoWeekOfYear(date, 10); + result = dojox.date.posix.setIsoWeekOfYear(date, 2); + t.is(new Date(2006,0,13), result); + result = dojox.date.posix.setIsoWeekOfYear(date, 10); + t.is(new Date(2006,2,10), result); + result = dojox.date.posix.setIsoWeekOfYear(date, 52); + t.is(new Date(2006,11,29), result); + var result = dojox.date.posix.setIsoWeekOfYear(date, -1); + t.is(new Date(2006,11,29), result); + var result = dojox.date.posix.setIsoWeekOfYear(date, -2); + t.is(new Date(2006,11,22), result); + var result = dojox.date.posix.setIsoWeekOfYear(date, -10); + t.is(new Date(2006,9,27), result); + + date = new Date(2004,10,10); + result = dojox.date.posix.setIsoWeekOfYear(date, 1); + t.is(new Date(2003,11,31), result); + result = dojox.date.posix.setIsoWeekOfYear(date, 2); + t.is(new Date(2004,0,7), result); + result = dojox.date.posix.setIsoWeekOfYear(date, -1); + t.is(new Date(2004,11,29), result); + } + }, + { + name: "getIsoWeekOfYear", + runTest: function(t){ + var week = dojox.date.posix.getIsoWeekOfYear(new Date(2006,0,1)); + t.is(52, week); + week = dojox.date.posix.getIsoWeekOfYear(new Date(2006,0,4)); + t.is(1, week); + week = dojox.date.posix.getIsoWeekOfYear(new Date(2006,11,31)); + t.is(52, week); + week = dojox.date.posix.getIsoWeekOfYear(new Date(2007,0,1)); + t.is(1, week); + week = dojox.date.posix.getIsoWeekOfYear(new Date(2007,11,31)); + t.is(53, week); + week = dojox.date.posix.getIsoWeekOfYear(new Date(2008,0,1)); + t.is(1, week); + week = dojox.date.posix.getIsoWeekOfYear(new Date(2007,11,31)); + t.is(53, week); + } + }, + { + name: "getIsoWeeksInYear", + runTest: function(t){ + // 44 long years in a 400 year cycle. + var longYears = [4, 9, 15, 20, 26, 32, 37, 43, 48, 54, 60, 65, 71, 76, 82, + 88, 93, 99, 105, 111, 116, 122, 128, 133, 139, 144, 150, 156, 161, 167, + 172, 178, 184, 189, 195, 201, 207, 212, 218, 224, 229, 235, 240, 246, + 252, 257, 263, 268, 274, 280, 285, 291, 296, 303, 308, 314, 320, 325, + 331, 336, 342, 348, 353, 359, 364, 370, 376, 381, 387, 392, 398]; + + var i, j, weeks, result; + for(i=0; i < 400; i++) { + weeks = 52; + if(i == longYears[0]) { weeks = 53; longYears.shift(); } + result = dojox.date.posix.getIsoWeeksInYear(new Date(2000 + i, 0, 1)); + t.is(/*weeks +" weeks in "+ (2000+i), */weeks, result); + } + } + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/relative.js b/js/dojo-release-1.7.2-src/dojox/date/tests/relative.js new file mode 100644 index 0000000..5c204a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/relative.js @@ -0,0 +1,58 @@ +dojo.provide("dojox.date.tests.relative"); +dojo.require("dojox.date.relative"); +dojo.require("dojo.date"); + +dojo.requireLocalization("dojo.cldr", "gregorian"); + +tests.register("dojox.date.tests.relative", + [ + { + // Test formatting and parsing of dates in various locales pre-built in dojo.cldr + // NOTE: we can't set djConfig.extraLocale before bootstrapping unit tests, so directly + // load resources here for specific locales: + + name: "date.locale", + setUp: function(){ + var partLocaleList = ["en-us", "zh-cn"]; + + dojo.forEach(partLocaleList, function(locale){ + dojo.requireLocalization("dojo.cldr", "gregorian", locale); + }); + }, + runTest: function(t){ + }, + tearDown: function(){ + } + }, + { + name: "format_dates", + runTest: function(t){ + //relative to "today", default locale + var d = new Date(); + t.is(dojo.date.locale.format(d, {selector: "time"}), dojox.date.relative.format(d)); + + //en-us: test the various relativities + var opts = {locale: "en-us", relativeDate: new Date(2009, 1, 1, 5, 27, 34)}; + t.is("3:32 AM", dojox.date.relative.format(new Date(2009, 1, 1, 3, 32, 26), opts)); + t.is("Sat 8:32 PM", dojox.date.relative.format(new Date(2009, 0, 31, 20, 32, 26), opts)); + t.is("Jan 1", dojox.date.relative.format(new Date(2009, 0, 1, 20, 32, 26), opts)); + t.is("Jan 1, 2008", dojox.date.relative.format(new Date(2008, 0, 1, 0), opts)); + + //en-us: test various options as well as future dates and edge cases + t.is("8:32 PM", dojox.date.relative.format(new Date(2009, 1, 1, 20, 32, 26), opts)); + t.is("12:00 AM", dojox.date.relative.format(new Date(2009, 1, 1, 0), opts)); + t.is("Jan 31", dojox.date.relative.format(new Date(2009, 0, 31, 20, 32, 26), dojo.delegate(opts, {weekCheck: false}))); + t.is("Jan 1", dojox.date.relative.format(new Date(2009, 0, 1, 20, 32, 26), opts)); + t.is("Feb 2", dojox.date.relative.format(new Date(2009, 1, 2, 20, 32, 26), opts)); + t.is("Jan 1, 2010", dojox.date.relative.format(new Date(2010, 0, 1, 0), opts)); + + //zh-tw: test the various relativities + opts.locale = "zh-cn"; + t.is("\u4e0a\u53483:32", dojox.date.relative.format(new Date(2009, 1, 1, 3, 32, 26), opts)); + t.is("\u5468\u516d \u4e0b\u53488:32", dojox.date.relative.format(new Date(2009, 0, 31, 20, 32, 26), opts)); + t.is("1\u67081\u65e5", dojox.date.relative.format(new Date(2009, 0, 1, 20, 32, 26), opts)); + t.is("2008-1-1", dojox.date.relative.format(new Date(2008, 0, 1, 0), opts)); + } + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/date/tests/runTests.html new file mode 100644 index 0000000..57f6ba1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxBuddhist.html b/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxBuddhist.html new file mode 100644 index 0000000..ce2fe11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxBuddhist.html @@ -0,0 +1,148 @@ + + + + Test DateTextBoxNew Buddhist Widget + + + + + + + + + + + + + + + + + +

                            Test DateTextBoxNew Buddhist Widget

                            + +
                            +
                            + + DateTextBox class, datePackage = "dojox.date.buddhist" +
                            +
                            + + onChange: + + + + + +
                            +
                            + + DateTextBox class, Gregorian Calendar with min max +
                            +
                            + + onChange: + + + + + +
                            +
                            + + DateTextBox class, Gregorian Calendar +
                            +
                            + + onChange: + + + + + + +
                            + + + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxIslamic.html b/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxIslamic.html new file mode 100644 index 0000000..12ac0e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxIslamic.html @@ -0,0 +1,146 @@ + + + + Test DateTextBoxNew Islamic Widget + + + + + + + + + + + + + + + + + +

                            Test DateTextBoxNew Islamic Widget

                            + +
                            +
                            + + DateTextBox class, datePackage="dojox.date.islamic" +
                            +
                            + + onChange: + + + + + +
                            +
                            + + DateTextBox class, Gregorian Calendar with min max +
                            +
                            + + onChange: + + + + + +
                            +
                            + + DateTextBox class, Gregorian Calendar +
                            +
                            + + onChange: + + + + + + +
                            + + + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxNewHebrewGreg.html b/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxNewHebrewGreg.html new file mode 100644 index 0000000..9f84ddf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/test_DateTextBoxNewHebrewGreg.html @@ -0,0 +1,148 @@ + + + + Test DateTextBoxNew Hebrew Gregorian Widget + + + + + + + + + + + + + + + + + +

                            Test DateTextBoxNew Hebrew and Gregorian Widget

                            + +
                            +
                            + + DateTextBox class, datePackage = "dojox.date.hebrew" +
                            +
                            + + onChange: + + + + + +
                            +
                            + + DateTextBox class, Gregorian Calendar with min max +
                            +
                            + + onChange: + + + + + +
                            +
                            + + DateTextBox class, Gregorian Calendar +
                            +
                            + + onChange: + + + + + + +
                            + + + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/timezone.js b/js/dojo-release-1.7.2-src/dojox/date/tests/timezone.js new file mode 100644 index 0000000..12986f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/timezone.js @@ -0,0 +1,421 @@ +dojo.provide("dojox.date.tests.timezone"); +dojo.require("dojox.date.timezone"); +dojo.require("dojo.date"); + +doh.checkDate = function(x, u, z, e){ + var d = new Date(u); + var t = dojox.date.timezone.getTzInfo(d, z); + // Account for rounding differences between perl and js + x.tzOffset = Math.round(x.tzOffset * 1000) / 1000; + t.tzOffset = Math.round(t.tzOffset * 1000) / 1000; + + // Check our expected offset and abbreviation + doh.assertEqual(x, t); + // Check that we didn't change the date internally + doh.assertEqual(u, d.getTime()); +} + +var testsToRun = [ + "Africa-Abidjan", + "Africa-Accra", + "Africa-Addis_Ababa", + "Africa-Algiers", + "Africa-Asmara", + "Africa-Bamako", + "Africa-Bangui", + "Africa-Banjul", + "Africa-Bissau", + "Africa-Blantyre", + "Africa-Brazzaville", + "Africa-Bujumbura", + "Africa-Cairo", + "Africa-Casablanca", + "Africa-Ceuta", + "Africa-Conakry", + "Africa-Dakar", + "Africa-Dar_es_Salaam", + "Africa-Djibouti", + "Africa-Douala", + "Africa-El_Aaiun", + "Africa-Freetown", + "Africa-Gaborone", + "Africa-Harare", + "Africa-Johannesburg", + "Africa-Kampala", + "Africa-Khartoum", + "Africa-Kigali", + "Africa-Kinshasa", + "Africa-Lagos", + "Africa-Libreville", + "Africa-Lome", + "Africa-Luanda", + "Africa-Lubumbashi", + "Africa-Lusaka", + "Africa-Malabo", + "Africa-Maputo", + "Africa-Maseru", + "Africa-Mbabane", + "Africa-Mogadishu", + "Africa-Monrovia", + "Africa-Nairobi", + "Africa-Ndjamena", + "Africa-Niamey", + "Africa-Nouakchott", + "Africa-Ouagadougou", + "Africa-Porto-Novo", + "Africa-Sao_Tome", + "Africa-Tripoli", + "Africa-Tunis", + "Africa-Windhoek", + "America-Adak", + "America-Anchorage", + "America-Anguilla", + "America-Antigua", + "America-Araguaina", + "America-Argentina-Buenos_Aires", + "America-Argentina-Catamarca", + "America-Argentina-Cordoba", + "America-Argentina-Jujuy", + "America-Argentina-La_Rioja", + "America-Argentina-Mendoza", + "America-Argentina-Rio_Gallegos", + "America-Argentina-Salta", + "America-Argentina-San_Juan", + "America-Argentina-San_Luis", + "America-Argentina-Tucuman", + "America-Argentina-Ushuaia", + "America-Aruba", + "America-Asuncion", + "America-Atikokan", + "America-Bahia", + "America-Barbados", + "America-Belem", + "America-Belize", + "America-Blanc-Sablon", + "America-Boa_Vista", + "America-Bogota", + "America-Boise", + "America-Cambridge_Bay", + "America-Campo_Grande", + "America-Cancun", + "America-Caracas", + "America-Cayenne", + "America-Cayman", + "America-Chicago", + "America-Chihuahua", + "America-Costa_Rica", + "America-Cuiaba", + "America-Curacao", + "America-Danmarkshavn", + "America-Dawson", + "America-Dawson_Creek", + "America-Denver", + "America-Detroit", + "America-Dominica", + "America-Edmonton", + "America-Eirunepe", + "America-El_Salvador", + "America-Fortaleza", + "America-Glace_Bay", + "America-Godthab", + "America-Goose_Bay", + "America-Grand_Turk", + "America-Grenada", + "America-Guadeloupe", + "America-Guatemala", + "America-Guayaquil", + "America-Guyana", + "America-Halifax", + "America-Havana", + "America-Hermosillo", + "America-Indiana-Indianapolis", + "America-Indiana-Knox", + "America-Indiana-Marengo", + "America-Indiana-Petersburg", + "America-Indiana-Tell_City", + "America-Indiana-Vevay", + "America-Indiana-Vincennes", + "America-Indiana-Winamac", + "America-Inuvik", + "America-Iqaluit", + "America-Jamaica", + "America-Juneau", + "America-Kentucky-Louisville", + "America-Kentucky-Monticello", + "America-La_Paz", + "America-Lima", + "America-Los_Angeles", + "America-Maceio", + "America-Managua", + "America-Manaus", + "America-Martinique", + "America-Mazatlan", + "America-Menominee", + "America-Merida", + "America-Mexico_City", + "America-Miquelon", + "America-Moncton", + "America-Monterrey", + "America-Montevideo", + "America-Montreal", + "America-Montserrat", + "America-Nassau", + "America-New_York", + "America-Nipigon", + "America-Nome", + "America-Noronha", + "America-North_Dakota-Center", + "America-North_Dakota-New_Salem", + "America-Panama", + "America-Pangnirtung", + "America-Paramaribo", + "America-Phoenix", + "America-Port-au-Prince", + "America-Port_of_Spain", + "America-Porto_Velho", + "America-Puerto_Rico", + "America-Rainy_River", + "America-Rankin_Inlet", + "America-Recife", + "America-Regina", + "America-Resolute", + "America-Rio_Branco", + "America-Santarem", + "America-Santiago", + "America-Santo_Domingo", + "America-Sao_Paulo", + "America-Scoresbysund", + "America-St_Johns", + "America-St_Kitts", + "America-St_Lucia", + "America-St_Thomas", + "America-St_Vincent", + "America-Swift_Current", + "America-Tegucigalpa", + "America-Thule", + "America-Thunder_Bay", + "America-Tijuana", + "America-Toronto", + "America-Tortola", + "America-Vancouver", + "America-Whitehorse", + "America-Winnipeg", + "America-Yakutat", + "America-Yellowknife", + "Antarctica-Casey", + "Antarctica-Davis", + "Antarctica-DumontDUrville", + "Antarctica-Mawson", + "Antarctica-McMurdo", + "Antarctica-Palmer", + "Antarctica-Rothera", + "Antarctica-Syowa", + "Antarctica-Vostok", + "Asia-Aden", + "Asia-Almaty", + "Asia-Amman", + "Asia-Anadyr", + "Asia-Aqtau", + "Asia-Aqtobe", + "Asia-Ashgabat", + "Asia-Baghdad", + "Asia-Bahrain", + "Asia-Baku", + "Asia-Bangkok", + "Asia-Beirut", + "Asia-Bishkek", + "Asia-Brunei", + "Asia-Choibalsan", + "Asia-Chongqing", + "Asia-Colombo", + "Asia-Damascus", + "Asia-Dhaka", + "Asia-Dili", + "Asia-Dubai", + "Asia-Dushanbe", + "Asia-Gaza", + "Asia-Harbin", + "Asia-Ho_Chi_Minh", + "Asia-Hong_Kong", + "Asia-Hovd", + "Asia-Irkutsk", + "Asia-Jakarta", + "Asia-Jayapura", + "Asia-Jerusalem", + "Asia-Kabul", + "Asia-Kamchatka", + "Asia-Karachi", + "Asia-Kashgar", + "Asia-Kathmandu", + "Asia-Kolkata", + "Asia-Krasnoyarsk", + "Asia-Kuala_Lumpur", + "Asia-Kuching", + "Asia-Kuwait", + "Asia-Macau", + "Asia-Magadan", + "Asia-Makassar", + "Asia-Manila", + "Asia-Muscat", + "Asia-Nicosia", + "Asia-Novosibirsk", + "Asia-Omsk", + "Asia-Oral", + "Asia-Phnom_Penh", + "Asia-Pontianak", + "Asia-Pyongyang", + "Asia-Qatar", + "Asia-Qyzylorda", + "Asia-Rangoon", + "Asia-Riyadh", + "Asia-Sakhalin", + "Asia-Samarkand", + "Asia-Seoul", + "Asia-Shanghai", + "Asia-Singapore", + "Asia-Taipei", + "Asia-Tashkent", + "Asia-Tbilisi", + "Asia-Tehran", + "Asia-Thimphu", + "Asia-Tokyo", + "Asia-Ulaanbaatar", + "Asia-Urumqi", + "Asia-Vientiane", + "Asia-Vladivostok", + "Asia-Yakutsk", + "Asia-Yekaterinburg", + "Asia-Yerevan", + "Atlantic-Azores", + "Atlantic-Bermuda", + "Atlantic-Canary", + "Atlantic-Cape_Verde", + "Atlantic-Faroe", + "Atlantic-Madeira", + "Atlantic-Reykjavik", + "Atlantic-South_Georgia", + "Atlantic-St_Helena", + "Atlantic-Stanley", + "Australia-Adelaide", + "Australia-Brisbane", + "Australia-Broken_Hill", + "Australia-Currie", + "Australia-Darwin", + "Australia-Eucla", + "Australia-Hobart", + "Australia-Lindeman", + "Australia-Lord_Howe", + "Australia-Melbourne", + "Australia-Perth", + "Australia-Sydney", + "CET", + "CST6CDT", + "EET", + "EST5EDT", + "Europe-Amsterdam", + "Europe-Andorra", + "Europe-Athens", + "Europe-Belgrade", + "Europe-Berlin", + "Europe-Brussels", + "Europe-Bucharest", + "Europe-Budapest", + "Europe-Chisinau", + "Europe-Copenhagen", + "Europe-Dublin", + "Europe-Gibraltar", + "Europe-Helsinki", + "Europe-Istanbul", + "Europe-Kaliningrad", + "Europe-Kiev", + "Europe-Lisbon", + "Europe-London", + "Europe-Luxembourg", + "Europe-Madrid", + "Europe-Malta", + "Europe-Minsk", + "Europe-Monaco", + "Europe-Moscow", + "Europe-Oslo", + "Europe-Paris", + "Europe-Prague", + "Europe-Riga", + "Europe-Rome", + "Europe-Samara", + "Europe-Simferopol", + "Europe-Sofia", + "Europe-Stockholm", + "Europe-Tallinn", + "Europe-Tirane", + "Europe-Uzhgorod", + "Europe-Vaduz", + "Europe-Vienna", + "Europe-Vilnius", + "Europe-Volgograd", + "Europe-Warsaw", + "Europe-Zaporozhye", + "Europe-Zurich", + "HST", + "Indian-Antananarivo", + "Indian-Chagos", + "Indian-Christmas", + "Indian-Cocos", + "Indian-Comoro", + "Indian-Kerguelen", + "Indian-Mahe", + "Indian-Maldives", + "Indian-Mauritius", + "Indian-Mayotte", + "Indian-Reunion", + "MET", + "MST7MDT", + "PST8PDT", + "Pacific-Apia", + "Pacific-Auckland", + "Pacific-Chatham", + "Pacific-Easter", + "Pacific-Efate", + "Pacific-Enderbury", + "Pacific-Fakaofo", + "Pacific-Fiji", + "Pacific-Funafuti", + "Pacific-Galapagos", + "Pacific-Gambier", + "Pacific-Guadalcanal", + "Pacific-Guam", + "Pacific-Honolulu", + "Pacific-Johnston", + "Pacific-Kiritimati", + "Pacific-Kosrae", + "Pacific-Kwajalein", + "Pacific-Majuro", + "Pacific-Marquesas", + "Pacific-Midway", + "Pacific-Nauru", + "Pacific-Niue", + "Pacific-Norfolk", + "Pacific-Noumea", + "Pacific-Pago_Pago", + "Pacific-Palau", + "Pacific-Pitcairn", + "Pacific-Ponape", + "Pacific-Port_Moresby", + "Pacific-Rarotonga", + "Pacific-Saipan", + "Pacific-Tahiti", + "Pacific-Tarawa", + "Pacific-Tongatapu", + "Pacific-Truk", + "Pacific-Wake", + "Pacific-Wallis", + "WET" +]; + +dojo.forEach(testsToRun, function(tRun){ + dojo.xhrGet({ + url: dojo.moduleUrl("dojox.date.tests", "tztests/tz_" + tRun + ".json"), + handleAs: "json", + load: function(d){ + tests.register("dojox.date.tests.timezone", [ d ]); + }}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/timezoneFormatting.js b/js/dojo-release-1.7.2-src/dojox/date/tests/timezoneFormatting.js new file mode 100644 index 0000000..8d93c07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/timezoneFormatting.js @@ -0,0 +1,83 @@ +dojo.provide("dojox.date.tests.timezoneFormatting"); +dojo.require("dojox.date.timezone"); +dojo.require("dojo.date"); + +tests.register("dojox.date.tests.timezoneFormatting", + [ + { + name: "timezone format", + setUp: function(){ + var partLocaleList = ["en-us", "fr-fr", "es", "de-at", "ja-jp", "zh-cn"]; + + dojo.forEach(partLocaleList, function(locale){ + dojo.requireLocalization("dojo.cldr", "gregorian", locale); + }); + }, + runTest: function(t){ + var date = new Date(1155257712345); + // This translates to: + // GMT Friday, August 11, 2006 at 00:55:12 GMT + // Denver Thursday, August 10, 2006 at 6:55:12 PM MDT + // Anchorage Thursday, August 10, 2006 at 4:55:12 PM AKDT + // Jerusalem Friday, August 11, 2006 at 3:55:12 AM IDT + // Sydney Friday, August 11, 2006 at 10:55:12 AM EST + // Tokyo Friday, August 11, 2006 at 9:55:12 AM JST + // Shanghai Friday, August 11, 2006 at 8:55:12 AM CST + // Paris Friday, August 11, 2006 at 2:55:12 AM CEST + // Vienna Friday, August 11, 2006 at 2:55:12 AM CEST + // Madrid Friday, August 11, 2006 at 2:55:12 AM CEST + + ////////////////////// + // Custom Selector: + var selectorOpts = {datePattern: "EEEE, MMMM d, y 'at'", timePattern: "HH:mm:ss z", locale: "en-us"}; + doh.is("Friday, August 11, 2006 at 00:55:12 GMT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'GMT'}))); + doh.is("Thursday, August 10, 2006 at 18:55:12 MDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'America/Denver'}))); + doh.is("Thursday, August 10, 2006 at 16:55:12 AKDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'America/Anchorage'}))); + doh.is("Friday, August 11, 2006 at 03:55:12 IDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Asia/Jerusalem'}))); + doh.is("Friday, August 11, 2006 at 10:55:12 EST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Australia/Sydney'}))); + doh.is("Friday, August 11, 2006 at 09:55:12 JST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Asia/Tokyo'}))); + doh.is("Friday, August 11, 2006 at 08:55:12 CST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Asia/Shanghai'}))); + doh.is("Friday, August 11, 2006 at 02:55:12 CEST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone: 'Europe/Madrid'}))); + + + ////////////////////// + // Full Selectors: + // New York (in en-us) + doh.is("Thursday, August 10, 2006 8:55:12 PM EDT", dojo.date.locale.format(date, {formatLength:'full',locale:'en-us',timezone:'America/New_York'})); + // Tokyo (in ja-jp) + doh.is("2006\u5e748\u670811\u65e5\u91d1\u66dc\u65e59\u664255\u520612\u79d2 JST", dojo.date.locale.format(date, {formatLength:'full',locale:'ja-jp',timezone:'Asia/Tokyo'})); + // Shanghai (in zh-cn) + doh.is("2006\u5e748\u670811\u65e5\u661f\u671f\u4e94CST\u4e0a\u53488\u65f655\u520612\u79d2", dojo.date.locale.format(date, {formatLength:'full',locale:'zh-cn',timezone:'Asia/Shanghai'})); + // Paris (in fr-fr) + doh.is("vendredi 11 août 2006 02:55:12 CEST", dojo.date.locale.format(date, {formatLength:'full',locale:'fr-fr',timezone:'Europe/Paris'})); + // Vienna (in de-at) + doh.is("Freitag, 11. August 2006 02:55:12 CEST", dojo.date.locale.format(date, {formatLength:'full',locale:'de-at',timezone:'Europe/Vienna'})); + // Madrid (in es) + doh.is("viernes 11 de agosto de 2006 02:55:12 CEST", dojo.date.locale.format(date, {formatLength:'full',locale:'es',timezone:'Europe/Madrid'})); + + ////////////////////// + // Tricky Dates: + date = new Date(1225605599000); // 1 second before New York goes off DST - NY and LA are 3 hours apart + selectorOpts = {formatLength: "full", locale: "en-us"}; + doh.is("Sunday, November 2, 2008 1:59:59 AM EDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/New_York'}))); + doh.is("Saturday, November 1, 2008 10:59:59 PM PDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Los_Angeles'}))); + + date = new Date(1225605600000); // New York goes off DST - NY and LA are 2 hours apart + doh.is("Sunday, November 2, 2008 1:00:00 AM EST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/New_York'}))); + doh.is("Saturday, November 1, 2008 11:00:00 PM PDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Los_Angeles'}))); + + date = new Date(1225616400000); // LA goes off DST - NY and LA are 3 hours apart again + doh.is("Sunday, November 2, 2008 4:00:00 AM EST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/New_York'}))); + doh.is("Sunday, November 2, 2008 1:00:00 AM PST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Los_Angeles'}))); + + date = new Date(1257062399000); // Denver on DST - Denver is 1 hr ahead of Phoenix + doh.is("Sunday, November 1, 2009 1:59:59 AM MDT", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Denver'}))); + doh.is("Sunday, November 1, 2009 12:59:59 AM MST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Phoenix'}))); + + date = new Date(1257062400000); // Denver off DST - Denver is same time as Phoenix + doh.is("Sunday, November 1, 2009 1:00:00 AM MST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Denver'}))); + doh.is("Sunday, November 1, 2009 1:00:00 AM MST", dojo.date.locale.format(date, dojo.delegate(selectorOpts, {timezone:'America/Phoenix'}))); + } + } + ] +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Abidjan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Abidjan.json new file mode 100644 index 0000000..2ec548e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Abidjan.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Abidjan", + runTest: function(t){ + var tz = "Africa/Abidjan"; + doh.checkDate({tzOffset: 16.1333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 16.1333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 16.1333333333333, tzAbbr: "LMT"}, -1830383033000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830383032000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Accra.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Accra.json new file mode 100644 index 0000000..484ea15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Accra.json @@ -0,0 +1,42 @@ +({ + name: "date.timezone.Africa-Accra", + runTest: function(t){ + var tz = "Africa/Accra"; + doh.checkDate({tzOffset: 0.866666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0.866666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0.866666666666667, tzAbbr: "LMT"}, -1640995149000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1640995148000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1051920001000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -1051920000000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -1041466801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1041466800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1020384001000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -1020384000000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -1009930801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1009930800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -988848001000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -988848000000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -978394801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -978394800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -957312001000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -957312000000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -946858801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -946858800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -925689601000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -925689600000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -915236401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -915236400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -894153601000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -894153600000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -883700401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -883700400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -862617601000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -862617600000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "GHST"}, -852164401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -852164400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Addis_Ababa.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Addis_Ababa.json new file mode 100644 index 0000000..915a03c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Addis_Ababa.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Addis_Ababa", + runTest: function(t){ + var tz = "Africa/Addis_Ababa"; + doh.checkDate({tzOffset: -155.333333333333, tzAbbr: "ADMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -155.333333333333, tzAbbr: "ADMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -155.333333333333, tzAbbr: "ADMT"}, -1062210921000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1062210920000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Algiers.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Algiers.json new file mode 100644 index 0000000..8dc4897 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Algiers.json @@ -0,0 +1,78 @@ +({ + name: "date.timezone.Africa-Algiers", + runTest: function(t){ + var tz = "Africa/Algiers"; + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -1855958962000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1855958961000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1689814801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1689814800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1680397201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1680397200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1665363601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1665363600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1648342801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1648342800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1635123601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1635123600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1616893201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1616893200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1604278801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1604278800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1585443601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1585443600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1574038801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1574038800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1552266001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1552266000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1539997201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1539997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1531443601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1531443600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -956365201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -956365200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -950486401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -950486400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796262401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796262400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766630801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766630800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733280401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -733280400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -439430401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -439430400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -212029201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -212029200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 41468399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 41468400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 54773999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 54774000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 231724799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 231724800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 246236399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 246236400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 259545599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 259545600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 275273999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 275274000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 309740399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 309740400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 325468799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 325468800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 341801999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 341802000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 357523199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 357523200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Asmara.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Asmara.json new file mode 100644 index 0000000..96fa05b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Asmara.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Asmara", + runTest: function(t){ + var tz = "Africa/Asmara"; + doh.checkDate({tzOffset: -155.333333333333, tzAbbr: "ADMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -155.333333333333, tzAbbr: "ADMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -155.333333333333, tzAbbr: "ADMT"}, -1062210921000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1062210920000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bamako.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bamako.json new file mode 100644 index 0000000..7843da6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bamako.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Bamako", + runTest: function(t){ + var tz = "Africa/Bamako"; + doh.checkDate({tzOffset: 32, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 32, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 32, tzAbbr: "LMT"}, -1830382081000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830382080000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1131235201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1131235200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -300841201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -300841200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bangui.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bangui.json new file mode 100644 index 0000000..88f9fe4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bangui.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Bangui", + runTest: function(t){ + var tz = "Africa/Bangui"; + doh.checkDate({tzOffset: -74.3333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -74.3333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -74.3333333333333, tzAbbr: "LMT"}, -1830388461000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1830388460000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Banjul.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Banjul.json new file mode 100644 index 0000000..a9b9c46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Banjul.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Banjul", + runTest: function(t){ + var tz = "Africa/Banjul"; + doh.checkDate({tzOffset: 66.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 66.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 66.6, tzAbbr: "LMT"}, -1830380005000, tz, 1); + doh.checkDate({tzOffset: 66.6, tzAbbr: "BMT"}, -1830380004000, tz, 1); + doh.checkDate({tzOffset: 66.6, tzAbbr: "BMT"}, -1104533605000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1104533604000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -189385201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -189385200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bissau.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bissau.json new file mode 100644 index 0000000..a7e8039 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bissau.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-Bissau", + runTest: function(t){ + var tz = "Africa/Bissau"; + doh.checkDate({tzOffset: 62.3333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 62.3333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 62.3333333333333, tzAbbr: "LMT"}, -1849388261000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1849388260000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, 157769999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 157770000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Blantyre.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Blantyre.json new file mode 100644 index 0000000..d00ccea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Blantyre.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Blantyre", + runTest: function(t){ + var tz = "Africa/Blantyre"; + doh.checkDate({tzOffset: -140, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -140, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -140, tzAbbr: "LMT"}, -2109291601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2109291600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Brazzaville.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Brazzaville.json new file mode 100644 index 0000000..a9d6328 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Brazzaville.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Brazzaville", + runTest: function(t){ + var tz = "Africa/Brazzaville"; + doh.checkDate({tzOffset: -61.1333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -61.1333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -61.1333333333333, tzAbbr: "LMT"}, -1830387669000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1830387668000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bujumbura.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bujumbura.json new file mode 100644 index 0000000..0c79470 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Bujumbura.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Africa-Bujumbura", + runTest: function(t){ + var tz = "Africa/Bujumbura"; + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Cairo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Cairo.json new file mode 100644 index 0000000..40c4a16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Cairo.json @@ -0,0 +1,360 @@ +({ + name: "date.timezone.Africa-Cairo", + runTest: function(t){ + var tz = "Africa/Cairo"; + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -929844001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -929844000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -923108401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -923108400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -906170401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -906170400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -892868401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -892868400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -875844001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -875844000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -857790001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -857790000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -844308001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -844308000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -825822001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -825822000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -812685601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -812685600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -794199601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -794199600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -779853601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -779853600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -762663601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -762663600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -399088801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -399088800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -386650801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -386650800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -368330401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -368330400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -355114801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -355114800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -336790801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -336790800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -323654401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -323654400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -305168401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -305168400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -292032001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -292032000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -273632401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -273632400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -260496001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -260496000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -242096401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -242096400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -228960001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -228960000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -210560401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -210560400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -197424001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -197424000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -178938001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -178938000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -165801601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -165801600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -147402001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -147402000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -134265601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -134265600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -115866001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -115866000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -102643201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -102643200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -84330001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -84330000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -71107201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -71107200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -52707601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -52707600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -39484801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -39484800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -21171601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -21171600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -7948801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -7948800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 10364399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 10364400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 23587199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 23587200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 41900399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 41900400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 55123199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 55123200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 73522799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 73522800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 86745599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 86745600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 105058799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 105058800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 118281599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 118281600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 136594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 136594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 149817599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 149817600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 168130799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 168130800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 181353599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 181353600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 199753199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 199753200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 212975999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 212976000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 231289199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 231289200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 244511999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 244512000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 262825199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 262825200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 276047999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 276048000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 294361199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 294361200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 307583999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 307584000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 325983599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 325983600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 339206399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 339206400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 357519599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 357519600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 370742399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 370742400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 396399599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 396399600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 402278399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 402278400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 426812399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 426812400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433814399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433814400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 452213999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 452214000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465436799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465436800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 483749999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 483750000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496972799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496972800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 515285999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 515286000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528508799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528508800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 546821999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 546822000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 560044799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 560044800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 578444399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 578444400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591667199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591667200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 610412399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 610412400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 623203199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 623203200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 641516399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 641516400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654739199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654739200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 673052399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 673052400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686275199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686275200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 704674799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 704674800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717897599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717897600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 736210799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 736210800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749433599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749433600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 767746799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 767746800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780969599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780969600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 799019999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 799020000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 812321999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 812322000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 830469599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 830469600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 843771599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 843771600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 861919199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 861919200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 875221199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 875221200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 893368799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 893368800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 906670799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 906670800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 925423199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 925423200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 938725199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 938725200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 956872799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 956872800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 970174799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 970174800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 988322399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 988322400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1001624399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1001624400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1019771999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1019772000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1033073999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1033074000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1051221599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1051221600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1064523599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1064523600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1083275999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1083276000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1096577999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1096578000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1114725599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1114725600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1128027599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1128027600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1146175199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1146175200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1158872399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1158872400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1177624799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1177624800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1189112399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1189112400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1209074399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1209074400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1219957199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1219957200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1240523999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1240524000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1253825999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1253826000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1272578399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1272578400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1285880399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1285880400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1304027999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1304028000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1317329999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1317330000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1335477599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1335477600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1348779599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1348779600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1366927199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1366927200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1380229199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1380229200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1398376799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1398376800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1411678799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1411678800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1429826399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1429826400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1443128399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1443128400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1461880799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1461880800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1475182799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1475182800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1493330399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1493330400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1506632399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1506632400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1524779999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1524780000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1538081999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1538082000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1556229599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1556229600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1569531599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1569531600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1587679199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1587679200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1600981199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1600981200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1619733599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1619733600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1633035599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1633035600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1651183199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1651183200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1664485199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1664485200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1682632799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1682632800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1695934799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1695934800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1714082399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1714082400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1727384399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1727384400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1745531999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1745532000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1758833999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1758834000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1776981599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1776981600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1790283599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1790283600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1809035999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1809036000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1822337999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1822338000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1840485599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1840485600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1853787599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1853787600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1871935199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1871935200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1885237199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1885237200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1903384799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1903384800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1916686799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1916686800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1934834399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1934834400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1948136399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1948136400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1966888799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1966888800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1980190799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1980190800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1998338399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1998338400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2011640399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2011640400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2029787999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2029788000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2043089999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2043090000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2061237599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2061237600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2074539599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2074539600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2092687199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2092687200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2105989199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2105989200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2124136799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2124136800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2137438799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2137438800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Casablanca.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Casablanca.json new file mode 100644 index 0000000..eacb9fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Casablanca.json @@ -0,0 +1,58 @@ +({ + name: "date.timezone.Africa-Casablanca", + runTest: function(t){ + var tz = "Africa/Casablanca"; + doh.checkDate({tzOffset: 30.3333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 30.3333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 30.3333333333333, tzAbbr: "LMT"}, -1773012581000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1773012580000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -956361601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -956361600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -950490001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -950490000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -942019201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -942019200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -761187601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -761187600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -617241601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -617241600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -605149201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -605149200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -81432001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -81432000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -71110801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -71110800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 141263999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 141264000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 147221999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 147222000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 199756799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 199756800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 207701999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 207702000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 231292799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 231292800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 244249199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 244249200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 265507199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 265507200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 271033199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 271033200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 448243199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 448243200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 504917999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 504918000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1212278399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1212278400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1220223599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1220223600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1243814399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1243814400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1250809199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1250809200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ceuta.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ceuta.json new file mode 100644 index 0000000..d90b8aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ceuta.json @@ -0,0 +1,262 @@ +({ + name: "date.timezone.Africa-Ceuta", + runTest: function(t){ + var tz = "Africa/Ceuta"; + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1630112401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1630112400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1616810401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1616810400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1442451601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1442451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1427677201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1427677200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1379293201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1379293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1364778001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1364778000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1348448401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1348448400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1333328401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1333328400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1316394001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1316394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1301274001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1301274000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -81432001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -81432000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -71110801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -71110800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 141263999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 141264000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 147221999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 147222000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 199756799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 199756800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 207701999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 207702000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 231292799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 231292800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 244249199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 244249200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 265507199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 265507200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 271033199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 271033200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 448243199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 448243200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Conakry.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Conakry.json new file mode 100644 index 0000000..d1e8865 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Conakry.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Conakry", + runTest: function(t){ + var tz = "Africa/Conakry"; + doh.checkDate({tzOffset: 54.8666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 54.8666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 54.8666666666667, tzAbbr: "LMT"}, -1830380709000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830380708000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1131235201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1131235200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -315615601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -315615600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Dakar.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Dakar.json new file mode 100644 index 0000000..032b727 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Dakar.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-Dakar", + runTest: function(t){ + var tz = "Africa/Dakar"; + doh.checkDate({tzOffset: 69.7333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 69.7333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 69.7333333333333, tzAbbr: "LMT"}, -1830379817000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1830379816000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -902098801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -902098800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Dar_es_Salaam.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Dar_es_Salaam.json new file mode 100644 index 0000000..45815fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Dar_es_Salaam.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Dar_es_Salaam", + runTest: function(t){ + var tz = "Africa/Dar_es_Salaam"; + doh.checkDate({tzOffset: -157.133333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -157.133333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -157.133333333333, tzAbbr: "LMT"}, -1230777429000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1230777428000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -694321201000, tz, 1); + doh.checkDate({tzOffset: -164.75, tzAbbr: "BEAUT"}, -694321200000, tz, 1); + doh.checkDate({tzOffset: -164.75, tzAbbr: "BEAUT"}, -284006686000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -284006685000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Djibouti.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Djibouti.json new file mode 100644 index 0000000..d6eb734 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Djibouti.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Djibouti", + runTest: function(t){ + var tz = "Africa/Djibouti"; + doh.checkDate({tzOffset: -172.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -172.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -172.6, tzAbbr: "LMT"}, -1846291957000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1846291956000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Douala.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Douala.json new file mode 100644 index 0000000..0b65ea4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Douala.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Douala", + runTest: function(t){ + var tz = "Africa/Douala"; + doh.checkDate({tzOffset: -38.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -38.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -38.8, tzAbbr: "LMT"}, -1830386329000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1830386328000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-El_Aaiun.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-El_Aaiun.json new file mode 100644 index 0000000..fcd1257 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-El_Aaiun.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-El_Aaiun", + runTest: function(t){ + var tz = "Africa/El_Aaiun"; + doh.checkDate({tzOffset: 52.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 52.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 52.8, tzAbbr: "LMT"}, -1136070433000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1136070432000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, 198291599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 198291600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Freetown.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Freetown.json new file mode 100644 index 0000000..fcb05ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Freetown.json @@ -0,0 +1,72 @@ +({ + name: "date.timezone.Africa-Freetown", + runTest: function(t){ + var tz = "Africa/Freetown"; + doh.checkDate({tzOffset: 53, tzAbbr: "FMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 53, tzAbbr: "FMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 53, tzAbbr: "FMT"}, -1785712021000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1785712020000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1091487601000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -1091487600000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -1080949201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1080949200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1059865201000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -1059865200000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -1049326801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1049326800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1028329201000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -1028329200000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -1017790801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1017790800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -996793201000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -996793200000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -986254801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -986254800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -965257201000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -965257200000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -954718801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -954718800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -933634801000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -933634800000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -923096401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -923096400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -902098801000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -902098800000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -891560401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -891560400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -870562801000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -870562800000, tz, 1); + doh.checkDate({tzOffset: 20, tzAbbr: "SLST"}, -860024401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -860024400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -410223601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WAT"}, -410223600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WAT"}, -397180801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -397180800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -389235601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -389235600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -365644801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -365644800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -357699601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -357699600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -334108801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -334108800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -326163601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -326163600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -302486401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -302486400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -294541201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -294541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -270950401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -270950400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -263005201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -263005200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -239414401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -239414400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "SLST"}, -231469201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -231469200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Gaborone.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Gaborone.json new file mode 100644 index 0000000..95bc027 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Gaborone.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-Gaborone", + runTest: function(t){ + var tz = "Africa/Gaborone"; + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -829526401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, -829526400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, -813805201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -813805200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Harare.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Harare.json new file mode 100644 index 0000000..f6d1629 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Harare.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Harare", + runTest: function(t){ + var tz = "Africa/Harare"; + doh.checkDate({tzOffset: -124.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -124.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -124.2, tzAbbr: "LMT"}, -2109290653000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2109290652000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Johannesburg.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Johannesburg.json new file mode 100644 index 0000000..613a317 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Johannesburg.json @@ -0,0 +1,22 @@ +({ + name: "date.timezone.Africa-Johannesburg", + runTest: function(t){ + var tz = "Africa/Johannesburg"; + doh.checkDate({tzOffset: -90, tzAbbr: "SAST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -90, tzAbbr: "SAST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -90, tzAbbr: "SAST"}, -2109288601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -2109288600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -860976001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -860976000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -845254801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -845254800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -829526401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -829526400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -813805201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -813805200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kampala.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kampala.json new file mode 100644 index 0000000..211945e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kampala.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Africa-Kampala", + runTest: function(t){ + var tz = "Africa/Kampala"; + doh.checkDate({tzOffset: -129.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -129.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -129.666666666667, tzAbbr: "LMT"}, -1309745381000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1309745380000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1262314801000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "BEAT"}, -1262314800000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "BEAT"}, -694319401000, tz, 1); + doh.checkDate({tzOffset: -164.75, tzAbbr: "BEAUT"}, -694319400000, tz, 1); + doh.checkDate({tzOffset: -164.75, tzAbbr: "BEAUT"}, -410237086000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -410237085000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Khartoum.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Khartoum.json new file mode 100644 index 0000000..1300ef6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Khartoum.json @@ -0,0 +1,80 @@ +({ + name: "date.timezone.Africa-Khartoum", + runTest: function(t){ + var tz = "Africa/Khartoum"; + doh.checkDate({tzOffset: -130.133333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -130.133333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -130.133333333333, tzAbbr: "LMT"}, -1230775809000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -1230775808000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 10360799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 10360800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 24785999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 24786000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 41810399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 41810400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 56321999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 56322000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 73432799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 73432800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 87944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 87944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 104882399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 104882400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 119480399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 119480400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 136331999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 136332000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 151016399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 151016400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 167781599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 167781600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 182552399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 182552400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 199231199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 199231200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 214174799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 214174800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 230680799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 230680800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 245710799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 245710800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 262735199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 262735200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 277246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 277246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 294184799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 294184800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 308782799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 308782800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 325634399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 325634400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 340405199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 340405200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 357083999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 357084000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 371941199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 371941200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 388533599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 388533600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 403477199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 403477200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 419983199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 419983200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 435013199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 435013200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 452037599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 452037600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 466635599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 466635600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 483487199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 483487200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CAST"}, 498171599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 498171600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 947930399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 947930400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kigali.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kigali.json new file mode 100644 index 0000000..b6feb15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kigali.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Kigali", + runTest: function(t){ + var tz = "Africa/Kigali"; + doh.checkDate({tzOffset: -120.266666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120.266666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120.266666666667, tzAbbr: "LMT"}, -1091498417000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -1091498416000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kinshasa.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kinshasa.json new file mode 100644 index 0000000..202a59f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Kinshasa.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Africa-Kinshasa", + runTest: function(t){ + var tz = "Africa/Kinshasa"; + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lagos.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lagos.json new file mode 100644 index 0000000..116e1ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lagos.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Lagos", + runTest: function(t){ + var tz = "Africa/Lagos"; + doh.checkDate({tzOffset: -13.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -13.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -13.6, tzAbbr: "LMT"}, -1588464817000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1588464816000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Libreville.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Libreville.json new file mode 100644 index 0000000..dd94083 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Libreville.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Libreville", + runTest: function(t){ + var tz = "Africa/Libreville"; + doh.checkDate({tzOffset: -37.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -37.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -37.8, tzAbbr: "LMT"}, -1830386269000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1830386268000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lome.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lome.json new file mode 100644 index 0000000..1c4a499 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lome.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Africa-Lome", + runTest: function(t){ + var tz = "Africa/Lome"; + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Luanda.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Luanda.json new file mode 100644 index 0000000..532c51a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Luanda.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Luanda", + runTest: function(t){ + var tz = "Africa/Luanda"; + doh.checkDate({tzOffset: -52.0666666666667, tzAbbr: "AOT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -52.0666666666667, tzAbbr: "AOT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -52.0666666666667, tzAbbr: "AOT"}, -1849395125000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1849395124000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lubumbashi.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lubumbashi.json new file mode 100644 index 0000000..23b8eb7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lubumbashi.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Africa-Lubumbashi", + runTest: function(t){ + var tz = "Africa/Lubumbashi"; + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lusaka.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lusaka.json new file mode 100644 index 0000000..157caa8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Lusaka.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Lusaka", + runTest: function(t){ + var tz = "Africa/Lusaka"; + doh.checkDate({tzOffset: -113.133333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -113.133333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -113.133333333333, tzAbbr: "LMT"}, -2109289989000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2109289988000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Malabo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Malabo.json new file mode 100644 index 0000000..e1a587d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Malabo.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-Malabo", + runTest: function(t){ + var tz = "Africa/Malabo"; + doh.checkDate({tzOffset: -35.1333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -35.1333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -35.1333333333333, tzAbbr: "LMT"}, -1830386109000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830386108000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -190857601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -190857600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Maputo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Maputo.json new file mode 100644 index 0000000..422c611 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Maputo.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Maputo", + runTest: function(t){ + var tz = "Africa/Maputo"; + doh.checkDate({tzOffset: -130.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -130.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -130.333333333333, tzAbbr: "LMT"}, -2109291021000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, -2109291020000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Maseru.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Maseru.json new file mode 100644 index 0000000..b0471eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Maseru.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Maseru", + runTest: function(t){ + var tz = "Africa/Maseru"; + doh.checkDate({tzOffset: -110, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -110, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -110, tzAbbr: "LMT"}, -2109289801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -2109289800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -829526401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -829526400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -813805201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -813805200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Mbabane.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Mbabane.json new file mode 100644 index 0000000..a32973a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Mbabane.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Mbabane", + runTest: function(t){ + var tz = "Africa/Mbabane"; + doh.checkDate({tzOffset: -124.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -124.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -124.4, tzAbbr: "LMT"}, -2109290665000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -2109290664000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Mogadishu.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Mogadishu.json new file mode 100644 index 0000000..b56dfa1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Mogadishu.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-Mogadishu", + runTest: function(t){ + var tz = "Africa/Mogadishu"; + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1230778801000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "BEAT"}, -1230778800000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "BEAT"}, -410236201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -410236200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Monrovia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Monrovia.json new file mode 100644 index 0000000..61f240f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Monrovia.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-Monrovia", + runTest: function(t){ + var tz = "Africa/Monrovia"; + doh.checkDate({tzOffset: 43.1333333333333, tzAbbr: "MMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 43.1333333333333, tzAbbr: "MMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 43.1333333333333, tzAbbr: "MMT"}, -1604359013000, tz, 1); + doh.checkDate({tzOffset: 44.5, tzAbbr: "LRT"}, -1604359012000, tz, 1); + doh.checkDate({tzOffset: 44.5, tzAbbr: "LRT"}, 73529069000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 73529070000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Nairobi.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Nairobi.json new file mode 100644 index 0000000..167d08e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Nairobi.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Africa-Nairobi", + runTest: function(t){ + var tz = "Africa/Nairobi"; + doh.checkDate({tzOffset: -147.266666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -147.266666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -147.266666666667, tzAbbr: "LMT"}, -1309746437000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1309746436000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1262314801000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "BEAT"}, -1262314800000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "BEAT"}, -946780201000, tz, 1); + doh.checkDate({tzOffset: -164.75, tzAbbr: "BEAUT"}, -946780200000, tz, 1); + doh.checkDate({tzOffset: -164.75, tzAbbr: "BEAUT"}, -315629086000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -315629085000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ndjamena.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ndjamena.json new file mode 100644 index 0000000..c973813 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ndjamena.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Ndjamena", + runTest: function(t){ + var tz = "Africa/Ndjamena"; + doh.checkDate({tzOffset: -60.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60.2, tzAbbr: "LMT"}, -1830387613000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1830387612000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 308703599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 308703600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 321314399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 321314400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Niamey.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Niamey.json new file mode 100644 index 0000000..f0bfc42 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Niamey.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Niamey", + runTest: function(t){ + var tz = "Africa/Niamey"; + doh.checkDate({tzOffset: -8.46666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -8.46666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -8.46666666666667, tzAbbr: "LMT"}, -1830384509000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1830384508000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1131231601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1131231600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -315619201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -315619200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Nouakchott.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Nouakchott.json new file mode 100644 index 0000000..c49fa31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Nouakchott.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Africa-Nouakchott", + runTest: function(t){ + var tz = "Africa/Nouakchott"; + doh.checkDate({tzOffset: 63.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 63.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 63.8, tzAbbr: "LMT"}, -1830380173000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830380172000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1131235201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -1131235200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "WAT"}, -286930801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -286930800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ouagadougou.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ouagadougou.json new file mode 100644 index 0000000..9ee15e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Ouagadougou.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Ouagadougou", + runTest: function(t){ + var tz = "Africa/Ouagadougou"; + doh.checkDate({tzOffset: 6.06666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 6.06666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 6.06666666666667, tzAbbr: "LMT"}, -1830383637000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830383636000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Porto-Novo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Porto-Novo.json new file mode 100644 index 0000000..3d3d378 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Porto-Novo.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Africa-Porto-Novo", + runTest: function(t){ + var tz = "Africa/Porto-Novo"; + doh.checkDate({tzOffset: -10.4666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -10.4666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -10.4666666666667, tzAbbr: "LMT"}, -1830384629000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830384628000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1131235201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, -1131235200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Sao_Tome.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Sao_Tome.json new file mode 100644 index 0000000..142a48a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Sao_Tome.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Africa-Sao_Tome", + runTest: function(t){ + var tz = "Africa/Sao_Tome"; + doh.checkDate({tzOffset: 36.5333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 36.5333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 36.5333333333333, tzAbbr: "LMT"}, -1830381809000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1830381808000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Tripoli.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Tripoli.json new file mode 100644 index 0000000..e77b844 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Tripoli.json @@ -0,0 +1,70 @@ +({ + name: "date.timezone.Africa-Tripoli", + runTest: function(t){ + var tz = "Africa/Tripoli"; + doh.checkDate({tzOffset: -52.7333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -52.7333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -52.7333333333333, tzAbbr: "LMT"}, -1577926365000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1577926364000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -574902001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -574902000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -568087201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -568087200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -512175601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -512175600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -504928801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -504928800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -449888401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -449888400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -441856801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -441856800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -347158801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -347158800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 378683999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 378684000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386463599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386463600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 402271199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 402271200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417999599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417999600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433807199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433807200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449621999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449622000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465429599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465429600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481589999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481590000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496965599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496965600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512953199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512953200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528674399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528674400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 544229999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 544230000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 560037599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 560037600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575852399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575852400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591659999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591660000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 607388399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 607388400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 623195999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 623196000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 641775599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 641775600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 844034399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 844034400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 860108399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 860108400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 875915999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 875916000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Tunis.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Tunis.json new file mode 100644 index 0000000..5933a0a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Tunis.json @@ -0,0 +1,190 @@ +({ + name: "date.timezone.Africa-Tunis", + runTest: function(t){ + var tz = "Africa/Tunis"; + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -1855958962000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1855958961000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -969242401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -969242400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -950493601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -950493600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -941940001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -941940000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -891136801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -891136800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -877827601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -842918401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -842918400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -842223601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -842223600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828230401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828230400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796269601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796269600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766634401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766634400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 231202799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 231202800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243903599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243903600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 262825199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 262825200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276044399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276044400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 581122799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 581122800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 641516399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 641516400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1114901999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1114902000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1128038399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1128038400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Windhoek.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Windhoek.json new file mode 100644 index 0000000..abb809f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Africa-Windhoek.json @@ -0,0 +1,196 @@ +({ + name: "date.timezone.Africa-Windhoek", + runTest: function(t){ + var tz = "Africa/Windhoek"; + doh.checkDate({tzOffset: -90, tzAbbr: "SWAT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -90, tzAbbr: "SWAT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -90, tzAbbr: "SWAT"}, -2109288601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -2109288600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -860976001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -860976000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAST"}, -845254801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, -845254800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "SAST"}, 637970399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 637970400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CAT"}, 765323999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 765324000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 778640399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 778640400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 796780799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 796780800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 810089999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 810090000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 828835199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 828835200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 841539599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 841539600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 860284799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 860284800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 873593999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 873594000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 891734399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 891734400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 905043599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 905043600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 923183999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 923184000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 936493199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 936493200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 954633599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 954633600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 967942799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 967942800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 986083199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 986083200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 999392399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 999392400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1018137599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1018137600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1030841999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1030842000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1049587199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1049587200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1062896399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1062896400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1081036799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1081036800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1094345999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1094346000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1112486399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1112486400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1125795599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1125795600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1143935999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1143936000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1157245199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1157245200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1175385599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1175385600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1188694799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1188694800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1207439999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1207440000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1220749199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1220749200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1238889599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1238889600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1252198799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1252198800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1270339199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1270339200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1283648399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1283648400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1301788799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1301788800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1315097999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1315098000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1333238399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1333238400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1346547599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1346547600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1365292799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1365292800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1377997199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1377997200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1396742399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1396742400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1410051599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1410051600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1428191999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1428192000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1441501199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1441501200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1459641599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1459641600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1472950799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1472950800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1491091199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1491091200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1504400399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1504400400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1522540799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1522540800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1535849999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1535850000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1554595199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1554595200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1567299599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1567299600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1586044799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1586044800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1599353999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1599354000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1617494399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1617494400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1630803599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1630803600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1648943999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1648944000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1662253199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1662253200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1680393599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1680393600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1693702799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1693702800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1712447999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1712448000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1725152399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1725152400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1743897599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1743897600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1757206799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1757206800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1775347199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1775347200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1788656399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1788656400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1806796799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1806796800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1820105999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1820106000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1838246399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1838246400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1851555599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1851555600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1869695999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1869696000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1883005199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1883005200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1901750399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1901750400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1914454799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1914454800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1933199999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1933200000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1946509199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1946509200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1964649599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1964649600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1977958799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1977958800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1996099199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1996099200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2009408399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2009408400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2027548799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2027548800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2040857999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2040858000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2058998399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2058998400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2072307599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2072307600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2091052799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2091052800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2104361999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2104362000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2122502399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2122502400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 2135811599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2135811600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WAST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Adak.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Adak.json new file mode 100644 index 0000000..be20f1e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Adak.json @@ -0,0 +1,298 @@ +({ + name: "date.timezone.America-Adak", + runTest: function(t){ + var tz = "America/Adak"; + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -880196401000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NWT"}, -880196400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NPT"}, -765374401000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -765374400000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -86878801000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -86878800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -21466801000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, -21466800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, -5745601000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -5745600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 9982799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 9982800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 25703999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 25704000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 41432399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 41432400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 57758399000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 57758400000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 73486799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 73486800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 89207999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 89208000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 104936399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 104936400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 120657599000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 120657600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 126709199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 126709200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 152107199000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 152107200000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 162392399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 162392400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 183556799000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 183556800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 199285199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 199285200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 215611199000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 215611200000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 230734799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 230734800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 247060799000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 247060800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 262789199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 262789200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 278510399000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 278510400000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 294238799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 294238800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 309959999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 309960000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 325688399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 325688400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 341409599000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 341409600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 357137999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 357138000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 372859199000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 372859200000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 388587599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 388587600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 404913599000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 404913600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 420037199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 420037200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 436363199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 436363200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 439034399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 439034400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 452087999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 452088000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 467809199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 467809200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 483537599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 483537600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 499258799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 499258800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 514987199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 514987200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 530708399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 530708400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 544622399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 544622400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 562157999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 562158000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 576071999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 576072000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 594212399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 594212400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 607521599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 607521600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 625661999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 625662000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 638971199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 638971200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 657111599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 657111600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 671025599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 671025600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 688561199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 688561200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 702475199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 702475200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 720010799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 720010800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 733924799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 733924800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 752065199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 752065200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 765374399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 765374400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 783514799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 783514800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 796823999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 796824000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 814964399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 814964400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 828878399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 828878400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 846413999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 846414000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 860327999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 860328000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 877863599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 877863600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 891777599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 891777600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 909313199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 909313200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 923227199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 923227200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 941367599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 941367600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 954676799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 954676800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 972817199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 972817200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 986126399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 986126400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1004266799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1004266800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1018180799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1018180800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1035716399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1035716400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1049630399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1049630400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1067165999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1067166000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1081079999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1081080000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1099220399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1099220400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1112529599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1112529600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1130669999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1130670000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1143979199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1143979200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1162119599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1162119600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1173614399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1173614400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1194173999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1194174000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1205063999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1205064000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1225623599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1225623600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1236513599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1236513600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1257073199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1257073200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1268567999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1268568000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1289127599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1289127600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1300017599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1300017600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1320577199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1320577200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1331467199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1331467200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1352026799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1352026800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1362916799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1362916800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1383476399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1383476400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1394366399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1394366400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1414925999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1414926000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1425815999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1425816000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1446375599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1446375600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1457870399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1457870400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1478429999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1478430000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1489319999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1489320000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1509879599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1509879600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1520769599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1520769600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1541329199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1541329200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1552219199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1552219200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1572778799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1572778800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1583668799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1583668800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1604228399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1604228400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1615723199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1615723200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1636282799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1636282800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1647172799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1647172800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1667732399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1667732400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1678622399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1678622400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1699181999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1699182000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1710071999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1710072000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1730631599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1730631600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1741521599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1741521600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1762081199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1762081200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1772971199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1772971200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1793530799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1793530800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1805025599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1805025600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1825585199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1825585200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1836475199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1836475200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1857034799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1857034800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1867924799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1867924800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1888484399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1888484400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1899374399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1899374400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1919933999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1919934000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1930823999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1930824000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1951383599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1951383600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1962878399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1962878400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1983437999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1983438000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1994327999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1994328000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2014887599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2014887600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2025777599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2025777600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2046337199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2046337200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2057227199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2057227200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2077786799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2077786800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2088676799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2088676800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2109236399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2109236400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2120126399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2120126400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 2140685999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2140686000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HAST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 540, tzAbbr: "HADT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Anchorage.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Anchorage.json new file mode 100644 index 0000000..9503ce4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Anchorage.json @@ -0,0 +1,298 @@ +({ + name: "date.timezone.America-Anchorage", + runTest: function(t){ + var tz = "America/Anchorage"; + doh.checkDate({tzOffset: 600, tzAbbr: "CAT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CAT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CAT"}, -880200001000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "CAWT"}, -880200000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "CAWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "CAPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "CAPT"}, -765378001000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CAT"}, -765378000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CAT"}, -86882401000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, -86882400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, -21470401000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, -21470400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, -5749201000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, -5749200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 9979199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 9979200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 25700399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 25700400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 41428799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 41428800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 57754799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 57754800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 73483199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 73483200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 89204399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 89204400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 104932799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 104932800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 120653999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 120654000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 126705599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 126705600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 152103599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 152103600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 162388799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 162388800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 183553199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 183553200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 199281599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 199281600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 215607599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 215607600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 230731199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 230731200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 247057199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 247057200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 262785599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 262785600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 278506799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 278506800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 294235199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 294235200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 309956399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 309956400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 325684799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 325684800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 341405999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 341406000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 357134399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 357134400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 372855599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 372855600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 388583999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 388584000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 404909999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 404910000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "AHST"}, 420033599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 420033600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AHDT"}, 436359599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 436359600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 439030799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 439030800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 452084399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 452084400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 467805599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 467805600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 483533999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 483534000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 499255199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 499255200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 514983599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 514983600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 530704799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 530704800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 544618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 544618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 562154399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 562154400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 576068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 576068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 594208799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 594208800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 607517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 607518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 625658399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 625658400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 638967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 638967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 657107999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 657108000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 671021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 671022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 688557599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 688557600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 702471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 702471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 720007199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 720007200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 733921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 733921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 752061599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 752061600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 765370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 765370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 783511199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 783511200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 796820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 796820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 814960799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 814960800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 828874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 828874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 846410399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 846410400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 860324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 860324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 877859999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 877860000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 891773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 891774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 909309599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 909309600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 923223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 923223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 941363999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 941364000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 954673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 954673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 972813599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 972813600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 986122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 986122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1004263199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1004263200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1018177199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1018177200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1035712799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1035712800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1049626799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1049626800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1067162399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1067162400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1081076399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1081076400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1099216799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1099216800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1112525999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1112526000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1130666399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1130666400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1143975599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1143975600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1162115999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1162116000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1173610799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1173610800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1194170399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1194170400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1205060399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1205060400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1225619999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1225620000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1236509999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1236510000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1257069599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1257069600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1268564399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1268564400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1289123999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1289124000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1300013999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1300014000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1320573599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1320573600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1331463599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1331463600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1352023199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1352023200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1362913199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1362913200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1383472799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1383472800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1394362799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1394362800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1414922399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1414922400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1425812399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1425812400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1446371999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1446372000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1457866799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1457866800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1478426399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1478426400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1489316399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1489316400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1509875999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1509876000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1520765999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1520766000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1541325599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1541325600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1552215599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1552215600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1572775199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1572775200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1583665199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1583665200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1604224799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1604224800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1615719599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1615719600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1636279199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1636279200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1647169199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1647169200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1667728799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1667728800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1678618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1678618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1699178399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1699178400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1710068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1710068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1730627999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1730628000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1741517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1741518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1762077599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1762077600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1772967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1772967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1793527199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1793527200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1805021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1805022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1825581599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1825581600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1836471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1836471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1857031199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1857031200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1867921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1867921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1888480799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1888480800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1899370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1899370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1919930399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1919930400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1930820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1930820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1951379999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1951380000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1962874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1962874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1983434399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1983434400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1994324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1994324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2014883999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2014884000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2025773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2025774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2046333599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2046333600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2057223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2057223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2077783199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2077783200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2088673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2088673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2109232799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2109232800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2120122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2120122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2140682399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2140682400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Anguilla.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Anguilla.json new file mode 100644 index 0000000..4302b51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Anguilla.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Anguilla", + runTest: function(t){ + var tz = "America/Anguilla"; + doh.checkDate({tzOffset: 252.266666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 252.266666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 252.266666666667, tzAbbr: "LMT"}, -1825098465000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1825098464000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Antigua.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Antigua.json new file mode 100644 index 0000000..ca40ee2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Antigua.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.America-Antigua", + runTest: function(t){ + var tz = "America/Antigua"; + doh.checkDate({tzOffset: 247.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 247.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 247.2, tzAbbr: "LMT"}, -1825098769000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1825098768000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -599598001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -599598000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Araguaina.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Araguaina.json new file mode 100644 index 0000000..5a9ec81 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Araguaina.json @@ -0,0 +1,110 @@ +({ + name: "date.timezone.America-Araguaina", + runTest: function(t){ + var tz = "America/Araguaina"; + doh.checkDate({tzOffset: 192.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 192.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 192.8, tzAbbr: "LMT"}, -1767214033000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1767214032000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1206957601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1206957600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1191362401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1191362400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1175374801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1175374800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1159826401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1159826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -633819601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -633819600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -622069201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -622069200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -602283601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -602283600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -570747601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -570747600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -560210401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -560210400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -539125201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -539125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -531352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -531352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -191365201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -191365200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -184197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -184197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -155163601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -155163600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -150069601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -150069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -128898001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -128898000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -121125601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -121125600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -99954001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -99954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -89589601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -89589600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -68418001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -68418000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -57967201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -57967200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 499748399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 499748400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 511235999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 511236000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 530593199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 530593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 540266399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 540266400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 562129199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 562129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 571197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 571197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 592973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 592974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 602042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 602042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 634701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 634701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 813725999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 813726000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 824003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 824004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 844570799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 844570800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 856058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 856058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 876106799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 876106800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 888717599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 888717600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 908074799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 908074800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 919562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 919562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 951616799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 951616800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 970973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 970974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 982461599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 982461600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1003028399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1003028400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1013911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1013911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1036292399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1036292400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1045360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1045360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Buenos_Aires.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Buenos_Aires.json new file mode 100644 index 0000000..05f82ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Buenos_Aires.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.America-Argentina-Buenos_Aires", + runTest: function(t){ + var tz = "America/Argentina/Buenos_Aires"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 687927599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687927600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1224385199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1224385200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1237082399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1237082400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1255834799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1255834800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1269136799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1269136800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1287284399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1287284400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1300586399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1300586400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1318733999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1318734000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1332035999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1332036000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1350788399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1350788400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1363485599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1363485600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1382237999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1382238000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1394935199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1394935200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1413687599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1413687600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1426384799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1426384800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1445137199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1445137200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1458439199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1458439200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1476586799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1476586800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1489888799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1489888800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1508036399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1508036400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1521338399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1521338400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1540090799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1540090800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1552787999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1552788000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1571540399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1571540400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1584237599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1584237600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1602989999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1602990000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1616291999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1616292000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1634439599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1634439600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1647741599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1647741600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1665889199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1665889200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1679191199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1679191200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1697338799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1697338800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1710640799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1710640800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1729393199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1729393200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1742090399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1742090400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1760842799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1760842800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1773539999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1773540000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1792292399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1792292400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1805594399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1805594400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1823741999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1823742000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1837043999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1837044000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1855191599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1855191600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1868493599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1868493600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1887245999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1887246000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1899943199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1899943200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1918695599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1918695600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1931392799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1931392800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1950145199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1950145200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1963447199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1963447200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1981594799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1981594800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1994896799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1994896800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2013044399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2013044400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2026346399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2026346400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2044493999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2044494000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2057795999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2057796000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2076548399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2076548400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2089245599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2089245600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2107997999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2107998000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2120695199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2120695200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2139447599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2139447600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Catamarca.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Catamarca.json new file mode 100644 index 0000000..0d66ff6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Catamarca.json @@ -0,0 +1,132 @@ +({ + name: "date.timezone.America-Argentina-Catamarca", + runTest: function(t){ + var tz = "America/Argentina/Catamarca"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 687931199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687931200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1086058799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1086058800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1087703999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1087704000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Cordoba.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Cordoba.json new file mode 100644 index 0000000..e6fb563 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Cordoba.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.America-Argentina-Cordoba", + runTest: function(t){ + var tz = "America/Argentina/Cordoba"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 687931199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687931200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1224385199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1224385200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1237082399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1237082400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1255834799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1255834800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1269136799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1269136800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1287284399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1287284400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1300586399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1300586400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1318733999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1318734000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1332035999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1332036000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1350788399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1350788400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1363485599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1363485600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1382237999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1382238000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1394935199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1394935200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1413687599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1413687600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1426384799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1426384800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1445137199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1445137200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1458439199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1458439200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1476586799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1476586800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1489888799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1489888800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1508036399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1508036400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1521338399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1521338400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1540090799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1540090800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1552787999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1552788000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1571540399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1571540400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1584237599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1584237600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1602989999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1602990000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1616291999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1616292000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1634439599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1634439600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1647741599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1647741600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1665889199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1665889200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1679191199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1679191200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1697338799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1697338800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1710640799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1710640800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1729393199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1729393200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1742090399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1742090400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1760842799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1760842800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1773539999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1773540000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1792292399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1792292400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1805594399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1805594400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1823741999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1823742000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1837043999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1837044000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1855191599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1855191600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1868493599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1868493600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1887245999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1887246000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1899943199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1899943200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1918695599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1918695600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1931392799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1931392800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1950145199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1950145200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1963447199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1963447200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1981594799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1981594800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1994896799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1994896800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2013044399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2013044400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2026346399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2026346400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2044493999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2044494000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2057795999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2057796000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2076548399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2076548400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2089245599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2089245600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2107997999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2107998000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2120695199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2120695200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2139447599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2139447600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Jujuy.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Jujuy.json new file mode 100644 index 0000000..b980fda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Jujuy.json @@ -0,0 +1,128 @@ +({ + name: "date.timezone.America-Argentina-Jujuy", + runTest: function(t){ + var tz = "America/Argentina/Jujuy"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 657086399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 657086400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 669178799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 669178800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 686721599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 686721600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-La_Rioja.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-La_Rioja.json new file mode 100644 index 0000000..23efd3c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-La_Rioja.json @@ -0,0 +1,134 @@ +({ + name: "date.timezone.America-Argentina-La_Rioja", + runTest: function(t){ + var tz = "America/Argentina/La_Rioja"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667792799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667792800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 673588799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 673588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 687927599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687927600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1086058799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1086058800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1087703999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1087704000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Mendoza.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Mendoza.json new file mode 100644 index 0000000..9fa3f27 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Mendoza.json @@ -0,0 +1,132 @@ +({ + name: "date.timezone.America-Argentina-Mendoza", + runTest: function(t){ + var tz = "America/Argentina/Mendoza"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 655963199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 655963200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 667796399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667796400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 687499199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 687499200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 699418799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 699418800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 719380799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719380800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1085281199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1085281200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1096171199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1096171200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Rio_Gallegos.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Rio_Gallegos.json new file mode 100644 index 0000000..2d4064c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Rio_Gallegos.json @@ -0,0 +1,132 @@ +({ + name: "date.timezone.America-Argentina-Rio_Gallegos", + runTest: function(t){ + var tz = "America/Argentina/Rio_Gallegos"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 687927599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687927600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1086058799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1086058800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1087703999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1087704000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Salta.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Salta.json new file mode 100644 index 0000000..9c3b569 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Salta.json @@ -0,0 +1,128 @@ +({ + name: "date.timezone.America-Argentina-Salta", + runTest: function(t){ + var tz = "America/Argentina/Salta"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 687931199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687931200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-San_Juan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-San_Juan.json new file mode 100644 index 0000000..e68c883 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-San_Juan.json @@ -0,0 +1,134 @@ +({ + name: "date.timezone.America-Argentina-San_Juan", + runTest: function(t){ + var tz = "America/Argentina/San_Juan"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667792799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667792800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 673588799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 673588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 687927599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687927600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1085972399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1085972400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1090727999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1090728000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-San_Luis.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-San_Luis.json new file mode 100644 index 0000000..9df0edb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-San_Luis.json @@ -0,0 +1,242 @@ +({ + name: "date.timezone.America-Argentina-San_Luis", + runTest: function(t){ + var tz = "America/Argentina/San_Luis"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 637379999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 637380000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 655963199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 655963200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 667796399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667796400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 675748799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 675748800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1085972399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1085972400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1090727999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1090728000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1200880799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1200880800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1237085999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1237086000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1255838399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1255838400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1269140399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1269140400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1287287999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1287288000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1300589999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1300590000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1318737599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1318737600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1332039599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1332039600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1350791999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1350792000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1363489199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1363489200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1382241599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1382241600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1394938799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1394938800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1413691199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1413691200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1426388399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1426388400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1445140799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1445140800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1458442799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1458442800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1476590399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1476590400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1489892399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1489892400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1508039999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1508040000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1521341999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1521342000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1540094399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1540094400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1552791599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1552791600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1571543999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1571544000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1584241199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1584241200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1602993599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1602993600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1616295599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1616295600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1634443199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1634443200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1647745199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1647745200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1665892799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1665892800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1679194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1679194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1697342399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1697342400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1710644399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1710644400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1729396799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1729396800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1742093999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1742094000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1760846399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1760846400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1773543599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1773543600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1792295999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1792296000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1805597999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1805598000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1823745599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1823745600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1837047599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1837047600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1855195199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1855195200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1868497199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1868497200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1887249599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1887249600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1899946799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1899946800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1918699199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1918699200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1931396399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1931396400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1950148799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1950148800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1963450799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1963450800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1981598399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1981598400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 1994900399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1994900400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2013047999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2013048000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2026349999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2026350000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2044497599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2044497600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2057799599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2057799600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2076551999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2076552000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2089249199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2089249200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2108001599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2108001600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2120698799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2120698800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 2139451199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2139451200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WARST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Tucuman.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Tucuman.json new file mode 100644 index 0000000..1cfa119 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Tucuman.json @@ -0,0 +1,250 @@ +({ + name: "date.timezone.America-Argentina-Tucuman", + runTest: function(t){ + var tz = "America/Argentina/Tucuman"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 687931199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687931200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1086058799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1086058800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1087099199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1087099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1224385199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1224385200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1237082399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1237082400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1255834799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1255834800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1269136799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1269136800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1287284399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1287284400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1300586399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1300586400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1318733999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1318734000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1332035999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1332036000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1350788399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1350788400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1363485599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1363485600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1382237999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1382238000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1394935199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1394935200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1413687599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1413687600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1426384799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1426384800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1445137199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1445137200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1458439199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1458439200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1476586799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1476586800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1489888799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1489888800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1508036399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1508036400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1521338399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1521338400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1540090799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1540090800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1552787999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1552788000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1571540399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1571540400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1584237599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1584237600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1602989999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1602990000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1616291999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1616292000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1634439599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1634439600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1647741599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1647741600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1665889199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1665889200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1679191199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1679191200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1697338799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1697338800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1710640799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1710640800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1729393199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1729393200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1742090399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1742090400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1760842799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1760842800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1773539999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1773540000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1792292399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1792292400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1805594399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1805594400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1823741999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1823742000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1837043999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1837044000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1855191599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1855191600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1868493599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1868493600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1887245999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1887246000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1899943199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1899943200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1918695599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1918695600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1931392799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1931392800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1950145199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1950145200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1963447199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1963447200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1981594799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1981594800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1994896799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1994896800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2013044399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2013044400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2026346399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2026346400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2044493999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2044494000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2057795999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2057796000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2076548399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2076548400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2089245599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2089245600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2107997999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2107998000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2120695199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2120695200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2139447599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2139447600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Ushuaia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Ushuaia.json new file mode 100644 index 0000000..baa1c51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Argentina-Ushuaia.json @@ -0,0 +1,132 @@ +({ + name: "date.timezone.America-Argentina-Ushuaia", + runTest: function(t){ + var tz = "America/Argentina/Ushuaia"; + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 256.8, tzAbbr: "CMT"}, -1567453393000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1567453392000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1233432001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1233432000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1222981201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1222981200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1205956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1205956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1194037201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1194037200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1172865601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1172865600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1162501201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1162501200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1141329601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1141329600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1130965201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1130965200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1109793601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1109793600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1099429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1099429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1078257601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1078257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1067806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1067806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1046635201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1046635200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1036270801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1036270800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1015099201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1015099200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -1004734801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -1004734800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -983563201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -983563200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -973198801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -973198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -952027201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -952027200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -941576401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -941576400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -931032001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -931032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -900882001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -900882000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -890337601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -890337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -833749201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -833749200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -827265601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -827265600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -752274001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -752274000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -733780801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -733780800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -197326801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -197326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -190843201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -190843200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -164491201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -164491200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 596948399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 596948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 605066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 605066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 687927599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 687927600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 731469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 731469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, 952052399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 952052400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1085885999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1085886000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "WART"}, 1087703999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1087704000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1198983599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1198983600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 1205632799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1205632800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Aruba.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Aruba.json new file mode 100644 index 0000000..8f2c798 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Aruba.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.America-Aruba", + runTest: function(t){ + var tz = "America/Aruba"; + doh.checkDate({tzOffset: 280.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 280.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 280.4, tzAbbr: "LMT"}, -1826738377000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "ANT"}, -1826738376000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "ANT"}, -157750201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -157750200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Asuncion.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Asuncion.json new file mode 100644 index 0000000..5d74c55 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Asuncion.json @@ -0,0 +1,268 @@ +({ + name: "date.timezone.America-Asuncion", + runTest: function(t){ + var tz = "America/Asuncion"; + doh.checkDate({tzOffset: 230.666666666667, tzAbbr: "AMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 230.666666666667, tzAbbr: "AMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 230.666666666667, tzAbbr: "AMT"}, -1206389361000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, -1206389360000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 86759999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYT"}, 86760000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYT"}, 134017199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 134017200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 181367999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 181368000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 194497199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 194497200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 212990399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 212990400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 226033199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 226033200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 244526399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 244526400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 257569199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 257569200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 276062399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 276062400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 291783599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 291783600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 307598399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 307598400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 323405999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 323406000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 339220799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 339220800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 354941999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 354942000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 370756799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 370756800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 386477999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 386478000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 402292799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 402292800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 418013999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 418014000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 433828799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 433828800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 449636399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 449636400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 465451199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 465451200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 481172399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 481172400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 496987199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 496987200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 512708399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 512708400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 528523199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 528523200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 544244399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 544244400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 560059199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 560059200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 575866799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 575866800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 591681599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 591681600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 607402799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 607402800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 625031999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 625032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 638938799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 638938800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 654753599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 654753600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 670474799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 670474800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 686721599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 686721600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 699418799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 699418800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 718257599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 718257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 733546799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 733546800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 749447999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 749448000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 762317999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 762318000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 780983999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 780984000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 793767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 793767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 812519999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 812520000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 825649199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 825649200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 844574399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 844574400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 856666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 856666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 876023999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 876024000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 888721199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 888721200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 907473599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 907473600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 920775599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 920775600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 938923199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 938923200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 952225199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 952225200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 970372799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 970372800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 983674799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 983674800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1002427199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1002427200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1018148399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1018148400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1030852799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1030852800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1049597999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1049598000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1062907199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1062907200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1081047599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1081047600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1097985599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1097985600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1110682799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1110682800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1129435199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1129435200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1142132399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1142132400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1160884799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1160884800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1173581999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1173582000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1192939199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1192939200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1205031599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1205031600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1224388799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1224388800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1236481199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1236481200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1255838399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1255838400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1268535599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1268535600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1287287999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1287288000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1299985199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1299985200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1318737599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1318737600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1331434799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1331434800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1350791999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1350792000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1362884399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1362884400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1382241599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1382241600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1394333999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1394334000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1413691199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1413691200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1425783599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1425783600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1445140799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1445140800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1457837999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1457838000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1476590399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1476590400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1489287599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1489287600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1508039999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1508040000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1520737199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1520737200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1540094399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1540094400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1552186799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1552186800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1571543999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1571544000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1583636399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1583636400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1602993599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1602993600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1615690799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1615690800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1634443199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1634443200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1647140399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1647140400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1665892799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1665892800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1678589999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1678590000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1697342399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1697342400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1710039599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1710039600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1729396799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1729396800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1741489199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1741489200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1760846399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1760846400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1772938799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1772938800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1792295999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1792296000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1804993199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1804993200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1823745599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1823745600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1836442799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1836442800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1855195199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1855195200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1867892399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1867892400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1887249599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1887249600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1899341999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1899342000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1918699199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1918699200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1930791599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1930791600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1950148799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1950148800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1962845999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1962846000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1981598399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1981598400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1994295599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1994295600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2013047999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2013048000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2025745199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2025745200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2044497599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2044497600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2057194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2057194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2076551999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2076552000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2088644399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2088644400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2108001599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2108001600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2120093999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2120094000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 2139451199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2139451200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PYST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "PYT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Atikokan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Atikokan.json new file mode 100644 index 0000000..aaa4b54 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Atikokan.json @@ -0,0 +1,24 @@ +({ + name: "date.timezone.America-Atikokan", + runTest: function(t){ + var tz = "America/Atikokan"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1632067201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1632067200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1614790801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1614790800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -923248801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -923248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Bahia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Bahia.json new file mode 100644 index 0000000..861af12 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Bahia.json @@ -0,0 +1,130 @@ +({ + name: "date.timezone.America-Bahia", + runTest: function(t){ + var tz = "America/Bahia"; + doh.checkDate({tzOffset: 154.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 154.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 154.066666666667, tzAbbr: "LMT"}, -1767216357000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1767216356000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1206957601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1206957600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1191362401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1191362400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1175374801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1175374800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1159826401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1159826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -633819601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -633819600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -622069201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -622069200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -602283601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -602283600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -570747601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -570747600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -560210401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -560210400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -539125201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -539125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -531352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -531352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -191365201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -191365200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -184197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -184197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -155163601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -155163600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -150069601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -150069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -128898001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -128898000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -121125601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -121125600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -99954001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -99954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -89589601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -89589600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -68418001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -68418000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -57967201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -57967200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 499748399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 499748400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 511235999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 511236000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 530593199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 530593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 540266399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 540266400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 562129199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 562129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 571197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 571197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 592973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 592974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 602042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 602042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 634701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 634701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 666755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 666756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 687927599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 687927600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 697600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 697600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 719981999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 719982000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 728445599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 728445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 750826799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 750826800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 761709599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 761709600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 782276399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 782276400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 793159199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 793159200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 813725999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 813726000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 824003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 824004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 844570799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 844570800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 856058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 856058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 876106799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 876106800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 888717599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 888717600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 908074799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 908074800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 919562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 919562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 951616799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 951616800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 970973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 970974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 982461599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 982461600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1003028399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1003028400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1013911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1013911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1036292399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1036292400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1045360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1045360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Barbados.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Barbados.json new file mode 100644 index 0000000..ca2e204 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Barbados.json @@ -0,0 +1,32 @@ +({ + name: "date.timezone.America-Barbados", + runTest: function(t){ + var tz = "America/Barbados"; + doh.checkDate({tzOffset: 238.466666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 238.466666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 238.466666666667, tzAbbr: "LMT"}, -1451678493000, tz, 1); + doh.checkDate({tzOffset: 238.466666666667, tzAbbr: "BMT"}, -1451678492000, tz, 1); + doh.checkDate({tzOffset: 238.466666666667, tzAbbr: "BMT"}, -1199217693000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1199217692000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 234943199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 234943200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 244616399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 244616400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 261554399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 261554400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 276065999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 276066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 293003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 293004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 307515599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 307515600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 325058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 325058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 338705999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 338706000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Belem.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Belem.json new file mode 100644 index 0000000..32ffea2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Belem.json @@ -0,0 +1,70 @@ +({ + name: "date.timezone.America-Belem", + runTest: function(t){ + var tz = "America/Belem"; + doh.checkDate({tzOffset: 193.933333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 193.933333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 193.933333333333, tzAbbr: "LMT"}, -1767213965000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1767213964000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1206957601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1206957600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1191362401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1191362400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1175374801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1175374800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1159826401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1159826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -633819601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -633819600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -622069201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -622069200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -602283601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -602283600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -570747601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -570747600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -560210401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -560210400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -539125201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -539125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -531352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -531352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -191365201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -191365200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -184197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -184197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -155163601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -155163600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -150069601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -150069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -128898001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -128898000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -121125601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -121125600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -99954001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -99954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -89589601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -89589600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -68418001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -68418000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -57967201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -57967200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 499748399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 499748400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 511235999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 511236000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 530593199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 530593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 540266399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 540266400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 562129199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 562129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 571197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 571197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Belize.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Belize.json new file mode 100644 index 0000000..2375e1c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Belize.json @@ -0,0 +1,122 @@ +({ + name: "date.timezone.America-Belize", + runTest: function(t){ + var tz = "America/Belize"; + doh.checkDate({tzOffset: 352.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 352.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 352.8, tzAbbr: "LMT"}, -1822500433000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1822500432000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1616954401000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1616954400000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1606069801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1606069800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1585504801000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1585504800000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1574015401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1574015400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1554055201000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1554055200000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1542565801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1542565800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1522605601000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1522605600000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1511116201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1511116200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1490551201000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1490551200000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1479666601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1479666600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1459101601000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1459101600000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1448217001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1448217000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1427652001000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1427652000000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1416162601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1416162600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1396202401000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1396202400000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1384713001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1384713000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1364752801000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1364752800000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1353263401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1353263400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1333303201000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1333303200000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1321813801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1321813800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1301248801000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1301248800000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1290364201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1290364200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1269799201000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1269799200000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1258914601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1258914600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1238349601000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1238349600000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1226860201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1226860200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1206900001000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1206900000000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1195410601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1195410600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1175450401000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1175450400000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1163961001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1163961000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1143396001000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1143396000000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1132511401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1132511400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1111946401000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1111946400000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1101061801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1101061800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1080496801000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1080496800000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1069612201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1069612200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1049047201000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1049047200000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1037557801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1037557800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1017597601000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1017597600000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -1006108201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1006108200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -986148001000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -986148000000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -974658601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -974658600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -954093601000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -954093600000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -943209001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -943209000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -922644001000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -922644000000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -911759401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -911759400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -891194401000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -891194400000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -879705001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -879705000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -859744801000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -859744800000, tz, 1); + doh.checkDate({tzOffset: 330, tzAbbr: "CHDT"}, -848255401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -848255400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 123919199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 123919200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 129617999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 129618000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 409039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 409039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 413873999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 413874000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Blanc-Sablon.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Blanc-Sablon.json new file mode 100644 index 0000000..9f2e0a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Blanc-Sablon.json @@ -0,0 +1,22 @@ +({ + name: "date.timezone.America-Blanc-Sablon", + runTest: function(t){ + var tz = "America/Blanc-Sablon"; + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1632074401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1632074400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1614798001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1614798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -880221601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -880221600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -765399601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -765399600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Boa_Vista.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Boa_Vista.json new file mode 100644 index 0000000..bb04c85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Boa_Vista.json @@ -0,0 +1,78 @@ +({ + name: "date.timezone.America-Boa_Vista", + runTest: function(t){ + var tz = "America/Boa_Vista"; + doh.checkDate({tzOffset: 242.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 242.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 242.666666666667, tzAbbr: "LMT"}, -1767211041000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1767211040000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1206954001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1206954000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1191358801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1191358800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1175371201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1175371200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1159822801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1159822800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -633816001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -633816000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -622065601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -622065600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -602280001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -602280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -591829201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -591829200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -570744001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -570744000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -560206801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -560206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -539121601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -539121600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -531349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -531349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -191361601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -191361600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -155160001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -155160000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -150066001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -150066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -128894401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -128894400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -99950401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -99950400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -89586001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -89586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -68414401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -68414400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -57963601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -57963600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 499751999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 499752000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 511239599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 511239600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 530596799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 530596800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 540269999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 540270000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 571201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 571201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 938923199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 938923200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 951620399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 951620400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 970977599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 970977600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 971578799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 971578800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Bogota.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Bogota.json new file mode 100644 index 0000000..c2b51be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Bogota.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.America-Bogota", + runTest: function(t){ + var tz = "America/Bogota"; + doh.checkDate({tzOffset: 296.333333333333, tzAbbr: "BMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 296.333333333333, tzAbbr: "BMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 296.333333333333, tzAbbr: "BMT"}, -1739041421000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "COT"}, -1739041420000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "COT"}, 704869199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "COST"}, 704869200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "COST"}, 733895999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "COT"}, 733896000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "COT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "COT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "COT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "COT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Boise.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Boise.json new file mode 100644 index 0000000..ceb8736 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Boise.json @@ -0,0 +1,312 @@ +({ + name: "date.timezone.America-Boise", + runTest: function(t){ + var tz = "America/Boise"; + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1633269601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1633269600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1615129201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1615129200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1601820001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1601820000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1583679601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1583679600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1471788001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1471788000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -84380401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -84380400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -52930801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -52930800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -37209601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -37209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -21481201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -21481200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -5760001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -5760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 9968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 9968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 25689599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 25689600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 41417999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 41418000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 57743999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 57744000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 73472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 73472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 89193599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 89193600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 104921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 104922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 120643199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 120643200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 129113999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 129114000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 152092799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 152092800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 162377999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 162378000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 183542399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 183542400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 199270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 199270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 215596799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 215596800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 230720399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 230720400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 247046399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 247046400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 262774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 262774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 278495999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 278496000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 294224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 294224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 309945599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 309945600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1173603599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1173603600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1194163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1194163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1205053199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1205053200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1236502799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1236502800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1257062399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1257062400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1268557199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1268557200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1289116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1289116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1300006799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1300006800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1320566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1320566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1331456399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1331456400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1352015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1352016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1362905999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1362906000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1383465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1383465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1394355599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1394355600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1425805199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1425805200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1446364799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1446364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1457859599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1457859600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1478419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1478419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1489309199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1489309200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1520758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1520758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1541318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1541318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1552208399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1552208400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1583657999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1583658000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1604217599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1604217600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1615712399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1615712400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1636271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1636272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1647161999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1647162000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1678611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1678611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1699171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1699171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1710061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1710061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1741510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1741510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1762070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1762070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1772960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1772960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1793519999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1793520000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1805014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1805014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1825574399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1825574400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1836464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1836464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1857023999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1857024000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1867913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1867914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1888473599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1888473600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1899363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1899363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919923199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1930813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1930813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1951372799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1951372800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1962867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1962867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1983427199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1983427200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1994317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1994317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014876799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014876800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2025766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2025766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2046326399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2046326400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2057216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2057216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077775999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077776000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2088665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2088666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2109225599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2109225600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2120115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2120115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140675199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140675200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cambridge_Bay.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cambridge_Bay.json new file mode 100644 index 0000000..071ed43 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cambridge_Bay.json @@ -0,0 +1,258 @@ +({ + name: "date.timezone.America-Cambridge_Bay", + runTest: function(t){ + var tz = "America/Cambridge_Bay"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -1577923201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1577923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -147891601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "MDDT"}, -147891600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "MDDT"}, -131562001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -131562000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 973400399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 973400400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1173603599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1173603600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1194163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1194163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1205053199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1205053200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1236502799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1236502800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1257062399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1257062400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1268557199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1268557200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1289116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1289116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1300006799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1300006800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1320566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1320566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1331456399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1331456400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1352015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1352016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1362905999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1362906000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1383465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1383465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1394355599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1394355600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1425805199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1425805200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1446364799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1446364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1457859599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1457859600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1478419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1478419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1489309199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1489309200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1520758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1520758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1541318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1541318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1552208399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1552208400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1583657999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1583658000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1604217599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1604217600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1615712399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1615712400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1636271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1636272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1647161999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1647162000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1678611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1678611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1699171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1699171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1710061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1710061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1741510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1741510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1762070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1762070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1772960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1772960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1793519999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1793520000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1805014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1805014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1825574399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1825574400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1836464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1836464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1857023999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1857024000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1867913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1867914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1888473599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1888473600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1899363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1899363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919923199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1930813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1930813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1951372799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1951372800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1962867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1962867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1983427199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1983427200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1994317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1994317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014876799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014876800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2025766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2025766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2046326399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2046326400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2057216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2057216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077775999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077776000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2088665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2088666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2109225599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2109225600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2120115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2120115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140675199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140675200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Campo_Grande.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Campo_Grande.json new file mode 100644 index 0000000..0fd4252 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Campo_Grande.json @@ -0,0 +1,268 @@ +({ + name: "date.timezone.America-Campo_Grande", + runTest: function(t){ + var tz = "America/Campo_Grande"; + doh.checkDate({tzOffset: 218.466666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 218.466666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 218.466666666667, tzAbbr: "LMT"}, -1767212493000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1767212492000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1206954001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1206954000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1191358801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1191358800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1175371201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1175371200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1159822801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1159822800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -633816001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -633816000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -622065601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -622065600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -602280001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -602280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -591829201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -591829200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -570744001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -570744000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -560206801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -560206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -539121601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -539121600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -531349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -531349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -191361601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -191361600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -155160001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -155160000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -150066001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -150066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -128894401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -128894400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -99950401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -99950400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -89586001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -89586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -68414401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -68414400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -57963601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -57963600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 499751999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 499752000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 511239599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 511239600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 530596799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 530596800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 540269999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 540270000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 571201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 571201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 592977599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 592977600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 602045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 602046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 624427199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 624427200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 634705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 634705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 656481599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 656481600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 666759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 666759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 687931199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 687931200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 697604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 697604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 719985599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 719985600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 728449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 728449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 750830399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 750830400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 761713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 761713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 782279999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 782280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 793162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 793162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 813729599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 813729600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 824007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 824007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 844574399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 844574400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 856061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 856062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 876110399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 876110400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 888721199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 888721200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 908078399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 908078400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 919565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 919566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 938923199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 938923200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 951620399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 951620400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 970977599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 970977600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 982465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 982465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1003031999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1003032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1013914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1013914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1036295999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1036296000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1045364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1045364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1066535999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1066536000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1076813999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1076814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1099367999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1099368000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1108868399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1108868400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1129435199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1129435200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1140317999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1140318000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1162699199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1162699200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1172372399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1172372400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1192334399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1192334400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1203217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1203217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1224388799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1224388800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1234666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1234666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1255838399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1255838400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1266721199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1266721200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1287287999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1287288000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1298170799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1298170800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1318737599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1318737600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1330225199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1330225200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1350791999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1350792000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1361069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1361070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1382241599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1382241600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1392519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1392519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1413691199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1413691200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1424573999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1424574000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1445140799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1445140800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1456023599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1456023600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1476590399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1476590400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1487473199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1487473200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1508039999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1508040000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1518922799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1518922800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1540094399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1540094400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1550372399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1550372400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1571543999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1571544000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1581821999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1581822000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1602993599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1602993600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1613876399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1613876400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1634443199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1634443200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1645325999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1645326000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1665892799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1665892800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1677380399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1677380400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1697342399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1697342400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1708225199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1708225200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1729396799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1729396800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1739674799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1739674800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1760846399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1760846400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1771729199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1771729200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1792295999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1792296000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1803178799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1803178800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1823745599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1823745600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1834628399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1834628400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1855195199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1855195200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1866077999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1866078000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1887249599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1887249600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1897527599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1897527600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1918699199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1918699200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1928977199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1928977200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1950148799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1950148800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1960426799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1960426800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1981598399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1981598400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1992481199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1992481200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2013047999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2013048000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2024535599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2024535600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2044497599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2044497600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2055380399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2055380400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2076551999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2076552000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2086829999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2086830000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2108001599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2108001600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2118884399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2118884400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2139451199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2139451200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cancun.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cancun.json new file mode 100644 index 0000000..f479860 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cancun.json @@ -0,0 +1,186 @@ +({ + name: "date.timezone.America-Cancun", + runTest: function(t){ + var tz = "America/Cancun"; + doh.checkDate({tzOffset: 347.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 347.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 347.066666666667, tzAbbr: "LMT"}, -1514743201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1514743200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 377935199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 377935200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 902037599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 902037600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 989135999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 989136000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1001833199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1001833200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1175414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1175414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1193554799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1193554800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1207468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1207468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225004399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225004400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1238918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1238918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1256453999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1256454000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1270367999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1270368000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1288508399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1288508400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1301817599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1301817600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1319957999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1319958000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1333267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1333267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1351407599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1351407600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1365321599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1365321600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1382857199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1382857200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1396771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1396771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414306799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414306800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1428220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1428220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1445756399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1445756400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1459670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1459670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1477810799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1477810800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1491119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1491120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509260399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509260400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1522569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1522569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1540709999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1540710000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1554623999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1554624000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1586073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1586073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1603609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1603609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1617523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1617523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1635663599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1635663600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1648972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1648972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1680422399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1680422400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1698562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1698562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1712476799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1712476800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1743926399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1743926400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1761461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1761462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1775375999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1775376000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1792911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1792911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1806825599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1806825600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1824965999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1824966000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1838275199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1838275200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1856415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1856415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1869724799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1869724800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1887865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1887865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1901779199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1901779200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1933228799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1933228800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1950764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1950764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1964678399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1964678400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1982818799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1982818800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1996127999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1996128000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2027577599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2027577600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2045717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2045718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2059027199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2059027200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2091081599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2091081600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2108617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2108617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2122531199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2122531200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Caracas.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Caracas.json new file mode 100644 index 0000000..b8a2f26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Caracas.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.America-Caracas", + runTest: function(t){ + var tz = "America/Caracas"; + doh.checkDate({tzOffset: 267.666666666667, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 267.666666666667, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 267.666666666667, tzAbbr: "CMT"}, -1826739141000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "VET"}, -1826739140000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "VET"}, -157750201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "VET"}, -157750200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "VET"}, 1197183599000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "VET"}, 1197183600000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "VET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "VET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "VET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 270, tzAbbr: "VET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cayenne.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cayenne.json new file mode 100644 index 0000000..b432987 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cayenne.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.America-Cayenne", + runTest: function(t){ + var tz = "America/Cayenne"; + doh.checkDate({tzOffset: 209.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 209.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 209.333333333333, tzAbbr: "LMT"}, -1846269041000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "GFT"}, -1846269040000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "GFT"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "GFT"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "GFT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "GFT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "GFT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "GFT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cayman.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cayman.json new file mode 100644 index 0000000..9bfa33e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cayman.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Cayman", + runTest: function(t){ + var tz = "America/Cayman"; + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -1827687169000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1827687168000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Chicago.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Chicago.json new file mode 100644 index 0000000..2414a6f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Chicago.json @@ -0,0 +1,482 @@ +({ + name: "date.timezone.America-Chicago", + runTest: function(t){ + var tz = "America/Chicago"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1563724801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1563724800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1551632401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1551632400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1538928001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1538928000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1520182801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1520182800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1504454401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1504454400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1491757201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1491757200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1473004801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1473004800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1459702801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1459702800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1441555201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1441555200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1428253201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1428253200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1410105601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1410105600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1396803601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1396803600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1378656001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1378656000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1365354001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1365354000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1347206401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1347206400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1333904401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1333904400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1315152001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1315152000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1301850001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1301850000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1283702401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1283702400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1270400401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1270400400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1252252801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1252252800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1238950801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1238950800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1220803201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1220803200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1207501201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1207501200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1189353601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1189353600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1176051601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1176051600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1157299201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1157299200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1144602001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1144602000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1125849601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1125849600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1112547601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1112547600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1094400001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1094400000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1081098001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1081098000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1067788801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1067788800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1045414801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1045414800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1031500801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1031500800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1018198801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1018198800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1000051201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1000051200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -986749201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -986749200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -967996801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -967996800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -955299601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -955299600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -936547201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -936547200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -923245201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -923245200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -905097601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -905097600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -891795601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -891795600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -747244801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -747244800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -733942801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -733942800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -715795201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -715795200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -702493201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -702493200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -684345601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -684345600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -671043601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -671043600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -652896001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -652896000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -639594001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -639594000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -620841601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -620841600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -608144401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -608144400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -589392001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -589392000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -576090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -576090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -557942401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -557942400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -544640401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -544640400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -463593601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -463593600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -447267601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -447267600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -415818001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -415818000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -384368401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -384368400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -352918801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -352918800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -321469201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -321469200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -289414801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -289414800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -257965201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -257965200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -242236801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -242236800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -226515601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -226515600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -210787201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -210787200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -195066001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -195066000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -179337601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -179337600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -163616401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -163616400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -147888001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -147888000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -131562001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -131562000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -116438401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -116438400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -100112401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -100112400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -84384001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -84384000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -68662801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -68662800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -52934401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -52934400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -37213201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -37213200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -21484801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -21484800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -5763601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -5763600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 9964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 9964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 25685999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 25686000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 41414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 41414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 57740399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 57740400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 73468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 73468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 89189999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 89190000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 104918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 104918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 120639599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 120639600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 126691199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126691200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 162374399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 162374400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183538799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183538800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215593199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215593200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247042799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 247042800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 262771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 262771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 278492399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 278492400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 294220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 294220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 309941999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 309942000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719996399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 719996400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004252399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004252400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Chihuahua.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Chihuahua.json new file mode 100644 index 0000000..9cf500d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Chihuahua.json @@ -0,0 +1,192 @@ +({ + name: "date.timezone.America-Chihuahua", + runTest: function(t){ + var tz = "America/Chihuahua"; + doh.checkDate({tzOffset: 424.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 424.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 424.333333333333, tzAbbr: "LMT"}, -1514739601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1514739600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1343066401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1343066400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1234807201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1234807200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1220292001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1220292000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1207159201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1207159200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1191344401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1191344400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 989139599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 989139600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1001836799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1001836800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1175417999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1175418000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1193558399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1193558400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1207472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1207472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225007999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225008000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1238921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1238922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1256457599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1256457600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1270371599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1270371600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1288511999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1288512000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1301821199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1301821200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1319961599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1319961600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1333270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1333270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1351411199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1351411200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1365325199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1365325200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1382860799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1382860800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1396774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1396774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414310399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414310400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1428224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1428224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1445759999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1445760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1459673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1459674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1477814399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1477814400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1491123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1491123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509263999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509264000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1522573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1522573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1540713599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1540713600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1554627599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1554627600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1586077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1586077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1603612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1603612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1617526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1617526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1635667199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1635667200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1648976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1648976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1680425999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1680426000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1698566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1698566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1712480399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1712480400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1743929999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1743930000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1761465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1761465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1775379599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1775379600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1792915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1792915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1806829199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1806829200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1824969599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1824969600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1838278799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1838278800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1856419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1856419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1869728399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1869728400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1887868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1887868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1901782799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1901782800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1933232399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1933232400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1950767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1950768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1964681999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1964682000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1982822399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1982822400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1996131599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1996131600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2027581199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2027581200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2045721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2045721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2059030799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2059030800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2091085199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2091085200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2108620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2108620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2122534799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2122534800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Costa_Rica.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Costa_Rica.json new file mode 100644 index 0000000..3c17270 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Costa_Rica.json @@ -0,0 +1,30 @@ +({ + name: "date.timezone.America-Costa_Rica", + runTest: function(t){ + var tz = "America/Costa_Rica"; + doh.checkDate({tzOffset: 336.333333333333, tzAbbr: "SJMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 336.333333333333, tzAbbr: "SJMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 336.333333333333, tzAbbr: "SJMT"}, -1545071021000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1545071020000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 288770399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 288770400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 297233999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 297234000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 320219999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 320220000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 328683599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 328683600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 664264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 664264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 678344399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 678344400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 695714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 695714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 700635599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 700635600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cuiaba.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cuiaba.json new file mode 100644 index 0000000..ef81035 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Cuiaba.json @@ -0,0 +1,264 @@ +({ + name: "date.timezone.America-Cuiaba", + runTest: function(t){ + var tz = "America/Cuiaba"; + doh.checkDate({tzOffset: 224.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 224.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 224.333333333333, tzAbbr: "LMT"}, -1767212141000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1767212140000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1206954001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1206954000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1191358801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1191358800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1175371201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1175371200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1159822801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1159822800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -633816001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -633816000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -622065601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -622065600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -602280001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -602280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -591829201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -591829200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -570744001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -570744000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -560206801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -560206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -539121601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -539121600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -531349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -531349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -191361601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -191361600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -155160001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -155160000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -150066001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -150066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -128894401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -128894400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -99950401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -99950400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -89586001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -89586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -68414401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -68414400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -57963601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -57963600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 499751999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 499752000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 511239599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 511239600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 530596799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 530596800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 540269999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 540270000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 571201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 571201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 592977599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 592977600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 602045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 602046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 624427199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 624427200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 634705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 634705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 656481599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 656481600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 666759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 666759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 687931199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 687931200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 697604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 697604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 719985599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 719985600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 728449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 728449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 750830399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 750830400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 761713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 761713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 782279999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 782280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 793162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 793162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 813729599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 813729600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 824007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 824007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 844574399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 844574400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 856061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 856062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 876110399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 876110400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 888721199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 888721200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 908078399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 908078400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 919565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 919566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 938923199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 938923200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 951620399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 951620400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 970977599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 970977600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 982465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 982465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1003031999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1003032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1013914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1013914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1036295999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1036296000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1045364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1045364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1099367999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1099368000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1108868399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1108868400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1129435199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1129435200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1140317999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1140318000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1162699199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1162699200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1172372399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1172372400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1192334399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1192334400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1203217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1203217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1224388799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1224388800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1234666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1234666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1255838399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1255838400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1266721199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1266721200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1287287999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1287288000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1298170799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1298170800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1318737599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1318737600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1330225199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1330225200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1350791999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1350792000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1361069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1361070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1382241599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1382241600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1392519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1392519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1413691199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1413691200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1424573999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1424574000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1445140799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1445140800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1456023599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1456023600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1476590399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1476590400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1487473199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1487473200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1508039999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1508040000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1518922799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1518922800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1540094399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1540094400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1550372399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1550372400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1571543999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1571544000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1581821999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1581822000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1602993599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1602993600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1613876399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1613876400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1634443199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1634443200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1645325999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1645326000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1665892799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1665892800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1677380399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1677380400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1697342399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1697342400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1708225199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1708225200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1729396799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1729396800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1739674799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1739674800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1760846399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1760846400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1771729199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1771729200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1792295999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1792296000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1803178799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1803178800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1823745599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1823745600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1834628399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1834628400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1855195199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1855195200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1866077999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1866078000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1887249599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1887249600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1897527599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1897527600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1918699199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1918699200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1928977199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1928977200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1950148799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1950148800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1960426799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1960426800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1981598399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1981598400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1992481199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1992481200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2013047999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2013048000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2024535599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2024535600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2044497599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2044497600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2055380399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2055380400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2076551999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2076552000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2086829999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2086830000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2108001599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2108001600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2118884399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2118884400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2139451199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2139451200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Curacao.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Curacao.json new file mode 100644 index 0000000..496784e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Curacao.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.America-Curacao", + runTest: function(t){ + var tz = "America/Curacao"; + doh.checkDate({tzOffset: 275.733333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 275.733333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 275.733333333333, tzAbbr: "LMT"}, -1826738657000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "ANT"}, -1826738656000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "ANT"}, -157750201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -157750200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Danmarkshavn.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Danmarkshavn.json new file mode 100644 index 0000000..acdeab0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Danmarkshavn.json @@ -0,0 +1,80 @@ +({ + name: "date.timezone.America-Danmarkshavn", + runTest: function(t){ + var tz = "America/Danmarkshavn"; + doh.checkDate({tzOffset: 74.6666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 74.6666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 74.6666666666667, tzAbbr: "LMT"}, -1686091521000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, -1686091520000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 323845199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 323845200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 820465199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 820465200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dawson.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dawson.json new file mode 100644 index 0000000..8e8515b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dawson.json @@ -0,0 +1,264 @@ +({ + name: "date.timezone.America-Dawson", + runTest: function(t){ + var tz = "America/Dawson"; + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1632056401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1632056400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1615125601000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1615125600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1596978001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1596978000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1583164801000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1583164800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -880203601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YWT"}, -880203600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YPT"}, -765381601000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -765381600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -147884401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "YDDT"}, -147884400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "YDDT"}, -131554801000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -131554800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 120646799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 120646800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 325677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 325677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 341398799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 341398800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 357127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 357127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 372848399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 372848400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 388576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 388576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 404902799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 404902800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 420026399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 420026400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 436352399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 436352400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 452080799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 452080800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 467801999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 467802000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 483530399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 483530400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 499251599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 499251600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 514979999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 514980000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 530701199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 530701200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 544615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 544615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 562150799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 562150800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 576064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 576064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 594205199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 594205200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 607514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 607514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 625654799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 625654800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 638963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 638964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 657104399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 657104400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 671018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 671018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 688553999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 688554000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 702467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 702468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 720003599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 720003600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 733917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 733917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 752057999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 752058000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 765367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 765367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 783507599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 783507600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 796816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 796816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 814957199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 814957200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 828871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 828871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 846406799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 846406800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 860320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 860320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 877856399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 877856400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 891770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 891770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 909305999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 909306000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 923219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 923220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 941360399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 941360400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 954669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 954669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 972809999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 972810000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 986119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 986119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1004259599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1004259600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1018173599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1018173600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1035709199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1035709200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1049623199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1049623200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1067158799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1067158800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1081072799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1081072800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1099213199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1099213200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1112522399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1112522400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1130662799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1130662800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1143971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1143972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1162112399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1162112400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1173607199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1173607200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1194166799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1194166800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1205056799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1205056800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1225616399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1225616400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1236506399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1236506400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1257065999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1257066000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1268560799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1268560800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1289120399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1289120400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1300010399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1300010400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1320569999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1320570000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1331459999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1331460000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1352019599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1352019600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1362909599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1362909600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1383469199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1383469200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1394359199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1394359200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1414918799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1414918800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1425808799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1425808800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1446368399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1446368400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1457863199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1457863200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1478422799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1478422800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1489312799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1489312800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1509872399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1509872400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1520762399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1520762400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1541321999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1541322000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1552211999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1552212000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1572771599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1572771600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1583661599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1583661600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1604221199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1604221200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1615715999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1615716000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1636275599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1636275600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1647165599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1647165600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1667725199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1667725200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1678615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1678615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1699174799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1699174800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1710064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1710064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1730624399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1730624400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1741514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1741514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1762073999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1762074000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1772963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1772964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1793523599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1793523600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1805018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1805018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1825577999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1825578000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1836467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1836468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1857027599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1857027600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1867917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1867917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1888477199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1888477200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1899367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1899367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1919926799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1919926800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1930816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1930816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1951376399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1951376400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1962871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1962871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1983430799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1983430800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1994320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1994320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2014880399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2014880400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2025770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2025770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2046329999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2046330000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2057219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2057220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2077779599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2077779600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2088669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2088669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2109229199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2109229200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2120119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2120119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2140678799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2140678800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dawson_Creek.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dawson_Creek.json new file mode 100644 index 0000000..7401aa4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dawson_Creek.json @@ -0,0 +1,126 @@ +({ + name: "date.timezone.America-Dawson_Creek", + runTest: function(t){ + var tz = "America/Dawson_Creek"; + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1632060001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1632060000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1614783601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1614783600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -880207201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -880207200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -765385201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -765385200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -715788001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -715788000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -702486001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -702486000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -684338401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -684338400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -671036401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -671036400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -652888801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -652888800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -639586801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -639586800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -620834401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -620834400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -608137201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -608137200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -589384801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -589384800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -576082801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -576082800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -557935201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -557935200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -544633201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -544633200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -526485601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -526485600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -513183601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -513183600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -495036001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -495036000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -481734001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -481734000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -463586401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -463586400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -450284401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -450284400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -431532001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -431532000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -418230001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -418230000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -400082401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -400082400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -386780401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -386780400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -368632801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -368632800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -355330801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -355330800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -337183201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -337183200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -323881201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -323881200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -305733601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -305733600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -292431601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -292431600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -273679201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -273679200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -260982001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -260982000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -242229601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -242229600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -226508401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -226508400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -210780001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -210780000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -195058801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -195058800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -179330401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -179330400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -163609201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -163609200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -147880801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -147880800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -131554801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -131554800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -116431201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -116431200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -100105201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -100105200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -84376801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -84376800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -68655601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -68655600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -52927201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -52927200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -37206001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -37206000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -21477601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -21477600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -5756401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -5756400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 9971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 9972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 25693199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 25693200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 41421599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 41421600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 57747599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 57747600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 73475999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 73476000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 84013199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 84013200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Denver.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Denver.json new file mode 100644 index 0000000..d4b5618 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Denver.json @@ -0,0 +1,326 @@ +({ + name: "date.timezone.America-Denver", + runTest: function(t){ + var tz = "America/Denver"; + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1633273201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1633273200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1615132801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1615132800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1601823601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1601823600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1583683201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1583683200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1570374001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1570374000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1551628801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1551628800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1538924401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1538924400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1534089601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1534089600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -147884401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -147884400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -131558401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -131558400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -116434801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -116434800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -100108801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -100108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -84380401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -84380400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -52930801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -52930800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -37209601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -37209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -21481201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -21481200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -5760001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -5760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 9968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 9968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 25689599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 25689600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 41417999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 41418000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 57743999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 57744000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 73472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 73472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 89193599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 89193600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 104921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 104922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 120643199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 120643200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 126694799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 126694800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 152092799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 152092800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 162377999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 162378000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 183542399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 183542400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 199270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 199270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 215596799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 215596800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 230720399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 230720400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 247046399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 247046400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 262774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 262774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 278495999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 278496000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 294224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 294224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 309945599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 309945600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1173603599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1173603600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1194163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1194163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1205053199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1205053200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1236502799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1236502800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1257062399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1257062400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1268557199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1268557200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1289116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1289116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1300006799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1300006800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1320566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1320566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1331456399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1331456400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1352015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1352016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1362905999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1362906000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1383465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1383465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1394355599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1394355600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1425805199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1425805200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1446364799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1446364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1457859599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1457859600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1478419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1478419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1489309199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1489309200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1520758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1520758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1541318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1541318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1552208399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1552208400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1583657999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1583658000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1604217599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1604217600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1615712399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1615712400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1636271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1636272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1647161999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1647162000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1678611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1678611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1699171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1699171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1710061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1710061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1741510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1741510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1762070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1762070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1772960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1772960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1793519999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1793520000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1805014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1805014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1825574399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1825574400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1836464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1836464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1857023999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1857024000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1867913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1867914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1888473599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1888473600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1899363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1899363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919923199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1930813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1930813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1951372799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1951372800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1962867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1962867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1983427199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1983427200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1994317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1994317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014876799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014876800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2025766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2025766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2046326399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2046326400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2057216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2057216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077775999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077776000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2088665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2088666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2109225599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2109225600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2120115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2120115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140675199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140675200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Detroit.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Detroit.json new file mode 100644 index 0000000..1315ab5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Detroit.json @@ -0,0 +1,290 @@ +({ + name: "date.timezone.America-Detroit", + runTest: function(t){ + var tz = "America/Detroit"; + doh.checkDate({tzOffset: 332.183333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 332.183333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 332.183333333333, tzAbbr: "LMT"}, -2051202470000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2051202469000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1724083201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1724083200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -880218001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -880218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -684349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -684349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -671047201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -671047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -80499601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -80499600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -68666401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -68666400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 126687599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 126687600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 167813999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 167814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dominica.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dominica.json new file mode 100644 index 0000000..54abc09 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Dominica.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Dominica", + runTest: function(t){ + var tz = "America/Dominica"; + doh.checkDate({tzOffset: 245.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 245.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 245.6, tzAbbr: "LMT"}, -1846266805000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1846266804000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Edmonton.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Edmonton.json new file mode 100644 index 0000000..49469e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Edmonton.json @@ -0,0 +1,320 @@ +({ + name: "date.timezone.America-Edmonton", + runTest: function(t){ + var tz = "America/Edmonton"; + doh.checkDate({tzOffset: 453.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 453.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 453.866666666667, tzAbbr: "LMT"}, -1998663969000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1998663968000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1632063601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1632063600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1614787201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1614787200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1600614001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1600614000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1596816001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1596816000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1567954801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1567954800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1551628801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1551628800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1536505201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1536505200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1523203201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1523203200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1504450801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1504450800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1491753601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1491753600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1473001201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1473001200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1459699201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1459699200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -715791601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -715791600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -702489601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -702489600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -84380401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -84380400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -21481201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -21481200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -5760001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -5760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 73472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 73472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 89193599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 89193600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 104921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 104922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 120643199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 120643200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 136371599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 136371600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 152092799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 152092800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 167821199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 167821200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 183542399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 183542400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 199270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 199270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 215596799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 215596800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 230720399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 230720400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 247046399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 247046400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 262774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 262774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 278495999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 278496000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 294224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 294224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 309945599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 309945600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1173603599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1173603600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1194163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1194163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1205053199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1205053200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1236502799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1236502800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1257062399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1257062400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1268557199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1268557200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1289116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1289116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1300006799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1300006800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1320566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1320566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1331456399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1331456400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1352015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1352016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1362905999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1362906000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1383465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1383465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1394355599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1394355600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1425805199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1425805200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1446364799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1446364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1457859599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1457859600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1478419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1478419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1489309199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1489309200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1520758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1520758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1541318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1541318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1552208399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1552208400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1583657999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1583658000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1604217599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1604217600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1615712399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1615712400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1636271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1636272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1647161999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1647162000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1678611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1678611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1699171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1699171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1710061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1710061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1741510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1741510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1762070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1762070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1772960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1772960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1793519999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1793520000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1805014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1805014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1825574399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1825574400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1836464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1836464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1857023999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1857024000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1867913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1867914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1888473599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1888473600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1899363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1899363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919923199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1930813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1930813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1951372799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1951372800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1962867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1962867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1983427199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1983427200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1994317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1994317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014876799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014876800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2025766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2025766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2046326399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2046326400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2057216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2057216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077775999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077776000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2088665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2088666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2109225599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2109225600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2120115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2120115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140675199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140675200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Eirunepe.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Eirunepe.json new file mode 100644 index 0000000..40f36e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Eirunepe.json @@ -0,0 +1,76 @@ +({ + name: "date.timezone.America-Eirunepe", + runTest: function(t){ + var tz = "America/Eirunepe"; + doh.checkDate({tzOffset: 279.466666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 279.466666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 279.466666666667, tzAbbr: "LMT"}, -1767208833000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1767208832000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1206950401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1206950400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1191355201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1191355200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1175367601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1175367600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1159819201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1159819200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -633812401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -633812400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -622062001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -622062000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -602276401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -602276400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -591825601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -591825600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -570740401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -570740400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -560203201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -560203200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -539118001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -539118000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -531345601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -531345600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -191358001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -191358000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -184190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -184190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -155156401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -155156400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -150062401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -150062400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -128890801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -128890800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -121118401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -121118400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -99946801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -99946800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -89582401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -89582400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -68410801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -68410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -57960001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -57960000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 499755599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 499755600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 511243199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 511243200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 530600399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 530600400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 540273599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 540273600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 562136399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 562136400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 571204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 571204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 750833999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 750834000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 761716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 761716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 1214283599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1214283600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-El_Salvador.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-El_Salvador.json new file mode 100644 index 0000000..a0ff44c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-El_Salvador.json @@ -0,0 +1,22 @@ +({ + name: "date.timezone.America-El_Salvador", + runTest: function(t){ + var tz = "America/El_Salvador"; + doh.checkDate({tzOffset: 356.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 356.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 356.8, tzAbbr: "LMT"}, -1546279393000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1546279392000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 547019999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 547020000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 559717199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 559717200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 578469599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 578469600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 591166799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 591166800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Fortaleza.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Fortaleza.json new file mode 100644 index 0000000..479f3ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Fortaleza.json @@ -0,0 +1,90 @@ +({ + name: "date.timezone.America-Fortaleza", + runTest: function(t){ + var tz = "America/Fortaleza"; + doh.checkDate({tzOffset: 154, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 154, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 154, tzAbbr: "LMT"}, -1767216361000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1767216360000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1206957601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1206957600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1191362401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1191362400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1175374801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1175374800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1159826401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1159826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -633819601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -633819600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -622069201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -622069200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -602283601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -602283600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -570747601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -570747600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -560210401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -560210400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -539125201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -539125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -531352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -531352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -191365201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -191365200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -184197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -184197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -155163601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -155163600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -150069601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -150069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -128898001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -128898000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -121125601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -121125600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -99954001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -99954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -89589601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -89589600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -68418001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -68418000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -57967201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -57967200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 499748399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 499748400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 511235999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 511236000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 530593199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 530593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 540266399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 540266400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 562129199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 562129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 571197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 571197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 592973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 592974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 602042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 602042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 634701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 634701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 951616799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 951616800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 970973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 970974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 972179999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 972180000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1003028399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1003028400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1013911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1013911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Glace_Bay.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Glace_Bay.json new file mode 100644 index 0000000..06fa374 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Glace_Bay.json @@ -0,0 +1,292 @@ +({ + name: "date.timezone.America-Glace_Bay", + runTest: function(t){ + var tz = "America/Glace_Bay"; + doh.checkDate({tzOffset: 239.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 239.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 239.8, tzAbbr: "LMT"}, -2131646413000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -2131646412000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1632074401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1632074400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1614798001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1614798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -880221601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -880221600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -765399601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -765399600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -526500001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -526500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -513198001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -513198000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 73461599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 73461600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 89182799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 89182800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 104911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 104911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 120632399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 120632400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 136360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 136360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 152081999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 152082000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 167810399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 167810400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 183531599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 183531600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 199259999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 199260000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 215585999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 215586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 230709599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 230709600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 247035599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 247035600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 262763999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 262764000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 278485199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 278485200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 294213599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 294213600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 309934799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 309934800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 325663199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 325663200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 341384399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 341384400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 357112799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 357112800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 372833999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 372834000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 388562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 388562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 404888399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 404888400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 420011999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 420012000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 436337999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 436338000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 452066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 452066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 467787599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 467787600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 483515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 483516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 499237199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 499237200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 514965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 514965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 530686799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 530686800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 544600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 544600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 562136399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 562136400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 576050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 576050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 594190799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 594190800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 607499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 607500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 625640399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 625640400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 638949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 638949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 657089999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 657090000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 671003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 671004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 688539599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 688539600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 702453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 702453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 719989199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 719989200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 733903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 733903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 752043599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 752043600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 765352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 765352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 783493199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 783493200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 796802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 796802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 814942799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 814942800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 828856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 828856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 846392399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 846392400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 860306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 860306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 877841999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 877842000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 891755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 891756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 909291599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 909291600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 923205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 923205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 941345999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 941346000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 954655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 954655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 972795599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 972795600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 986104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 986104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1004245199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1004245200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1018159199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1018159200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1035694799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1035694800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1049608799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1049608800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1067144399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1067144400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1081058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1081058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1099198799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1099198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1112507999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1112508000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1130648399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1130648400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1143957599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1143957600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1162097999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1162098000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1173592799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1173592800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1194152399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1194152400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1205042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1205042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1225601999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1225602000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1236491999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1236492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1257051599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1257051600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1268546399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1268546400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1289105999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1289106000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1299995999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1299996000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1320555599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1320555600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1331445599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1331445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1352005199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1352005200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1362895199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1362895200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1383454799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1383454800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1394344799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1394344800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1414904399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1414904400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1425794399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1425794400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1446353999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1446354000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1457848799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1457848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1478408399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1478408400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1489298399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1489298400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1509857999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1509858000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1520747999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1520748000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1541307599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1541307600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1552197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1552197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1572757199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1572757200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1583647199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1583647200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1604206799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1604206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1615701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1615701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1636261199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1636261200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1647151199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1647151200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1667710799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1667710800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1678600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1678600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1699160399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1699160400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1710050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1710050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1730609999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1730610000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1741499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1741500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1762059599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1762059600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1772949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1772949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1793509199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1793509200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1805003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1805004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1825563599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1825563600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1836453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1836453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1857013199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1857013200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1867903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1867903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1888462799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1888462800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1899352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1899352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1919912399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1919912400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1930802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1930802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1951361999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1951362000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1962856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1962856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1983416399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1983416400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1994306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1994306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2014865999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2014866000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2025755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2025756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2046315599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2046315600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2057205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2057205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2077765199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2077765200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2088655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2088655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2109214799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2109214800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2120104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2120104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2140664399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2140664400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Godthab.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Godthab.json new file mode 100644 index 0000000..ac07460 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Godthab.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.America-Godthab", + runTest: function(t){ + var tz = "America/Godthab"; + doh.checkDate({tzOffset: 206.933333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 206.933333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 206.933333333333, tzAbbr: "LMT"}, -1686083585000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, -1686083584000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 323845199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 323845200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "WGT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 120, tzAbbr: "WGST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Goose_Bay.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Goose_Bay.json new file mode 100644 index 0000000..bb10689 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Goose_Bay.json @@ -0,0 +1,418 @@ +({ + name: "date.timezone.America-Goose_Bay", + runTest: function(t){ + var tz = "America/Goose_Bay"; + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1632076149000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1632076148000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1614799749000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1614799748000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1096921749000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1096921748000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1061670601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1061670600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1048973401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1048973400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1030221001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1030221000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1017523801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1017523800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -998771401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -998771400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -986074201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -986074200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -966717001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -966717000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -954624601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -954624600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -935267401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -935267400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -922570201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -922570200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -903817801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -903817800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -891120601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -891120600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -872368201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NWT"}, -872368200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NPT"}, -765401401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -765401400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -746044201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -746044200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -733347001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -733347000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -714594601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -714594600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -701897401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -701897400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -683145001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -683145000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -670447801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -670447800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -651695401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -651695400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -638998201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -638998200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -619641001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -619641000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -606943801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -606943800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -589401001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -589401000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -576099001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -576099000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -557951401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -557951400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -544649401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -544649400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -526501801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -526501800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -513199801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -513199800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -495052201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -495052200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -481750201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -481750200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -463602601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -463602600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -450300601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -450300600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -431548201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -431548200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -418246201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -418246200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -400098601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -400098600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -386796601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -386796600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -368649001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -368649000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -355347001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -355347000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -337199401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -337199400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -323897401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -323897400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -305749801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -305749800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -289423801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -289423800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -273695401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -273695400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -257974201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -257974200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -242245801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -242245800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -226524601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -226524600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -210796201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -210796200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -195075001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -195075000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -179346601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -179346600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -163625401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -163625400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -147897001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -147897000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -131571001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -131571000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -119903401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -119903400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -116445601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -116445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -100119601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -100119600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -84391201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -84391200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -68670001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -68670000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -52941601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -52941600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -37220401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -37220400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -21492001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -21492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -5770801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -5770800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 9957599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 9957600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 25678799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 25678800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 41407199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 41407200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 57733199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 57733200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 73461599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 73461600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 89182799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 89182800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 104911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 104911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 120632399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 120632400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 136360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 136360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 152081999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 152082000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 167810399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 167810400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 183531599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 183531600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 199259999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 199260000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 215585999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 215586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 230709599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 230709600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 247035599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 247035600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 262763999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 262764000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 278485199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 278485200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 294213599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 294213600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 309934799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 309934800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 325663199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 325663200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 341384399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 341384400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 357112799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 357112800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 372833999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 372834000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 388562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 388562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 404888399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 404888400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 420011999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 420012000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 436337999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 436338000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 452066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 452066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 467787599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 467787600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 483515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 483516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 499237199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 499237200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 514965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 514965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 530686799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 530686800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 544593659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 544593660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 562129259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 562129260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 576043259000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ADDT"}, 576043260000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ADDT"}, 594180059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 594180060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 607492859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 607492860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 625633259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 625633260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 638942459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 638942460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 657082859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 657082860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 670996859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 670996860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 688532459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 688532460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 702446459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 702446460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 719982059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 719982060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 733896059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 733896060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 752036459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 752036460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 765345659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 765345660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 783486059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 783486060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 796795259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 796795260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 814935659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 814935660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 828849659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 828849660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 846385259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 846385260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 860299259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 860299260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 877834859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 877834860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 891748859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 891748860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 909284459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 909284460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 923198459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 923198460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 941338859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 941338860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 954648059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 954648060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 972788459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 972788460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 986097659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 986097660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1004238059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1004238060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1018152059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1018152060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1035687659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1035687660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1049601659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1049601660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1067137259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1067137260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1081051259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1081051260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1099191659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1099191660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1112500859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1112500860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1130641259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1130641260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1143950459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1143950460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1162090859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1162090860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1173585659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1173585660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1194145259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1194145260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1205035259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1205035260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1225594859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1225594860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1236484859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1236484860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1257044459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1257044460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1268539259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1268539260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1289098859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1289098860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1299988859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1299988860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1320548459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1320548460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1331438459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1331438460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1351998059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1351998060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1362888059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1362888060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1383447659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1383447660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1394337659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1394337660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1414897259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1414897260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1425787259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1425787260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1446346859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1446346860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1457841659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1457841660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1478401259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1478401260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1489291259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1489291260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1509850859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1509850860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1520740859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1520740860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1541300459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1541300460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1552190459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1552190460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1572750059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1572750060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1583640059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1583640060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1604199659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1604199660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1615694459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1615694460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1636254059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1636254060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1647144059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1647144060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1667703659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1667703660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1678593659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1678593660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1699153259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1699153260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1710043259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1710043260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1730602859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1730602860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1741492859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1741492860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1762052459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1762052460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1772942459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1772942460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1793502059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1793502060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1804996859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1804996860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1825556459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1825556460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1836446459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1836446460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1857006059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1857006060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1867896059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1867896060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1888455659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1888455660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1899345659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1899345660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1919905259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1919905260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1930795259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1930795260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1951354859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1951354860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1962849659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1962849660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1983409259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1983409260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1994299259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1994299260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2014858859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2014858860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2025748859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2025748860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2046308459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2046308460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2057198459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2057198460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2077758059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2077758060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2088648059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2088648060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2109207659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2109207660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2120097659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2120097660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2140657259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2140657260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Grand_Turk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Grand_Turk.json new file mode 100644 index 0000000..72ae180 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Grand_Turk.json @@ -0,0 +1,250 @@ +({ + name: "date.timezone.America-Grand_Turk", + runTest: function(t){ + var tz = "America/Grand_Turk"; + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -1827687169000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1827687168000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Grenada.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Grenada.json new file mode 100644 index 0000000..bd1246a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Grenada.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Grenada", + runTest: function(t){ + var tz = "America/Grenada"; + doh.checkDate({tzOffset: 247, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 247, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 247, tzAbbr: "LMT"}, -1846266781000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1846266780000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guadeloupe.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guadeloupe.json new file mode 100644 index 0000000..5f70ad7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guadeloupe.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Guadeloupe", + runTest: function(t){ + var tz = "America/Guadeloupe"; + doh.checkDate({tzOffset: 246.133333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 246.133333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 246.133333333333, tzAbbr: "LMT"}, -1848254033000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1848254032000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guatemala.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guatemala.json new file mode 100644 index 0000000..e7a5f79 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guatemala.json @@ -0,0 +1,30 @@ +({ + name: "date.timezone.America-Guatemala", + runTest: function(t){ + var tz = "America/Guatemala"; + doh.checkDate({tzOffset: 362.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 362.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 362.066666666667, tzAbbr: "LMT"}, -1617040677000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1617040676000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 123055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 123055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 130913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 130914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 422344799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 422344800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 433054799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 433054800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 669707999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 669708000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 684219599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 684219600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1146376799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1146376800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1159678799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1159678800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guayaquil.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guayaquil.json new file mode 100644 index 0000000..d3b5b1b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guayaquil.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Guayaquil", + runTest: function(t){ + var tz = "America/Guayaquil"; + doh.checkDate({tzOffset: 314, tzAbbr: "QMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 314, tzAbbr: "QMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 314, tzAbbr: "QMT"}, -1230749161000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ECT"}, -1230749160000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ECT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ECT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ECT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "ECT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guyana.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guyana.json new file mode 100644 index 0000000..3457149 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Guyana.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.America-Guyana", + runTest: function(t){ + var tz = "America/Guyana"; + doh.checkDate({tzOffset: 232.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 232.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 232.666666666667, tzAbbr: "LMT"}, -1730578041000, tz, 1); + doh.checkDate({tzOffset: 225, tzAbbr: "GBGT"}, -1730578040000, tz, 1); + doh.checkDate({tzOffset: 225, tzAbbr: "GBGT"}, -113688901000, tz, 1); + doh.checkDate({tzOffset: 225, tzAbbr: "GYT"}, -113688900000, tz, 1); + doh.checkDate({tzOffset: 225, tzAbbr: "GYT"}, 176010299000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "GYT"}, 176010300000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "GYT"}, 662698799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "GYT"}, 662698800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "GYT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "GYT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "GYT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "GYT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Halifax.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Halifax.json new file mode 100644 index 0000000..a2294a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Halifax.json @@ -0,0 +1,468 @@ +({ + name: "date.timezone.America-Halifax", + runTest: function(t){ + var tz = "America/Halifax"; + doh.checkDate({tzOffset: 254.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 254.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 254.4, tzAbbr: "LMT"}, -2131645537000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -2131645536000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1696276801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1696276800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1680469201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1680469200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1632074401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1632074400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1614798001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1614798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1566763201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1566763200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1557090001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1557090000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1535486401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1535486400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1524949201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1524949200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1504468801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1504468800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1493413201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1493413200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1472414401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1472414400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1461963601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1461963600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1440964801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1440964800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1429390801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1429390800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1409515201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1409515200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1396731601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1396731600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1376856001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1376856000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1366491601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1366491600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1346616001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1346616000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1333832401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1333832400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1313956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1313956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1303678801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1303678800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1282507201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1282507200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1272661201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1272661200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1251057601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1251057600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1240088401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1240088400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1219608001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1219608000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1207429201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1207429200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1188763201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1188763200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1175979601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1175979600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1157313601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1157313600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1143925201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1143925200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1124049601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1124049600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1113771601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1113771600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1091390401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1091390400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1081026001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1081026000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1059854401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1059854400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1050786001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1050786000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1030910401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1030910400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1018126801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1018126800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -999460801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -999460800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -986677201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -986677200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -965592001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -965592000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -955227601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -955227600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -935956801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -935956800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -923173201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -923173200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -904507201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -904507200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -891723601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -891723600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -880221601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -880221600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -765399601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -765399600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -747252001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -747252000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -733950001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -733950000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -715802401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -715802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -702500401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -702500400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -684352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -684352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -671050801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -671050800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -652903201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -652903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -639601201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -639601200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -589399201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -589399200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -576097201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -576097200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -557949601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -557949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -544647601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -544647600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -526500001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -526500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -513198001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -513198000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -495050401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -495050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -481748401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -481748400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -431546401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -431546400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -418244401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -418244400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -400096801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -400096800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -386794801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -386794800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -368647201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -368647200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -355345201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -355345200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -337197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -337197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -323895601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -323895600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -242244001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -242244000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -226522801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -226522800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -210794401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -210794400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -195073201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -195073200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -179344801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -179344800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -163623601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -163623600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -147895201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -147895200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -131569201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -131569200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -116445601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -116445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -100119601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -100119600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -84391201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -84391200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -68670001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -68670000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -52941601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -52941600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -37220401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -37220400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -21492001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -21492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -5770801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -5770800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 9957599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 9957600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 25678799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 25678800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 41407199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 41407200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 57733199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 57733200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 73461599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 73461600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 89182799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 89182800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 104911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 104911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 120632399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 120632400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 136360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 136360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 152081999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 152082000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 167810399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 167810400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 183531599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 183531600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 199259999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 199260000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 215585999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 215586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 230709599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 230709600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 247035599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 247035600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 262763999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 262764000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 278485199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 278485200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 294213599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 294213600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 309934799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 309934800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 325663199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 325663200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 341384399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 341384400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 357112799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 357112800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 372833999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 372834000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 388562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 388562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 404888399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 404888400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 420011999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 420012000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 436337999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 436338000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 452066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 452066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 467787599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 467787600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 483515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 483516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 499237199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 499237200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 514965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 514965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 530686799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 530686800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 544600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 544600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 562136399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 562136400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 576050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 576050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 594190799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 594190800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 607499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 607500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 625640399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 625640400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 638949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 638949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 657089999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 657090000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 671003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 671004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 688539599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 688539600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 702453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 702453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 719989199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 719989200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 733903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 733903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 752043599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 752043600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 765352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 765352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 783493199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 783493200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 796802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 796802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 814942799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 814942800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 828856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 828856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 846392399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 846392400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 860306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 860306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 877841999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 877842000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 891755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 891756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 909291599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 909291600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 923205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 923205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 941345999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 941346000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 954655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 954655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 972795599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 972795600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 986104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 986104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1004245199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1004245200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1018159199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1018159200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1035694799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1035694800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1049608799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1049608800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1067144399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1067144400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1081058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1081058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1099198799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1099198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1112507999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1112508000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1130648399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1130648400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1143957599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1143957600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1162097999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1162098000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1173592799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1173592800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1194152399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1194152400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1205042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1205042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1225601999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1225602000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1236491999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1236492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1257051599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1257051600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1268546399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1268546400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1289105999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1289106000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1299995999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1299996000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1320555599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1320555600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1331445599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1331445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1352005199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1352005200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1362895199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1362895200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1383454799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1383454800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1394344799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1394344800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1414904399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1414904400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1425794399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1425794400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1446353999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1446354000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1457848799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1457848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1478408399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1478408400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1489298399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1489298400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1509857999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1509858000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1520747999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1520748000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1541307599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1541307600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1552197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1552197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1572757199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1572757200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1583647199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1583647200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1604206799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1604206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1615701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1615701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1636261199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1636261200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1647151199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1647151200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1667710799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1667710800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1678600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1678600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1699160399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1699160400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1710050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1710050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1730609999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1730610000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1741499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1741500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1762059599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1762059600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1772949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1772949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1793509199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1793509200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1805003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1805004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1825563599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1825563600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1836453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1836453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1857013199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1857013200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1867903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1867903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1888462799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1888462800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1899352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1899352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1919912399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1919912400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1930802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1930802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1951361999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1951362000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1962856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1962856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1983416399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1983416400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1994306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1994306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2014865999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2014866000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2025755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2025756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2046315599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2046315600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2057205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2057205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2077765199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2077765200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2088655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2088655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2109214799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2109214800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2120104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2120104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2140664399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2140664400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Havana.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Havana.json new file mode 100644 index 0000000..3bba88a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Havana.json @@ -0,0 +1,322 @@ +({ + name: "date.timezone.America-Havana", + runTest: function(t){ + var tz = "America/Havana"; + doh.checkDate({tzOffset: 329.6, tzAbbr: "HMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 329.6, tzAbbr: "HMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 329.6, tzAbbr: "HMT"}, -1402813825000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -1402813824000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -1311534001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -1311534000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -1300996801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -1300996800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -933534001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -933534000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -925675201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -925675200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -902084401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -902084400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -893620801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -893620800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -870030001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -870030000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -862171201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -862171200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -775681201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -775681200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -767822401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -767822400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -744231601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -744231600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -736372801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -736372800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -144702001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -144702000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -134251201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -134251200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -113425201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -113425200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -102542401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -102542400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -86295601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -86295600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -72907201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -72907200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -54154801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -54154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -41457601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -41457600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -21495601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -21495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, -5774401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, -5774400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 9953999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 9954000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 25675199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 25675200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 41403599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 41403600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 57729599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 57729600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 73457999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 73458000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 87364799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 87364800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 104907599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 104907600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 118900799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 118900800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 136357199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 136357200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 150436799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 150436800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 167806799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 167806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 183527999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 183528000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 199256399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 199256400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 215582399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 215582400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 230705999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 230706000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 247031999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 247032000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 263365199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 263365200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 276667199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 276667200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 290581199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 290581200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 308721599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 308721600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 322030799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 322030800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 340171199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 340171200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 358318799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 358318800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 371620799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 371620800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 389768399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 389768400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 403070399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 403070400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 421217999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 421218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 434519999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 434520000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 452667599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 452667600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 466574399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 466574400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 484117199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 484117200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 498023999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 498024000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 511333199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 511333200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 529473599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 529473600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 542782799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 542782800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 560923199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 560923200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 574837199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 574837200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 592372799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 592372800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 606286799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 606286800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 623822399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 623822400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 638945999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 638946000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 655876799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 655876800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 671000399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 671000400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 687329999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 687330000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 702449999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 702450000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 718779599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 718779600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 733899599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 733899600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 750229199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 750229200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 765349199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 765349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 781678799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 781678800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 796798799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 796798800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 813128399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 813128400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 828853199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 828853200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 844577999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 844578000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 860302799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 860302800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 876632399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 876632400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 891147599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 891147600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 909291599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 909291600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 922597199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 922597200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 941345999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 941346000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 954651599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 954651600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 972795599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 972795600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 986101199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 986101200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1004245199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1004245200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1018155599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1018155600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1035694799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1035694800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1049605199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1049605200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1067144399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1067144400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1081054799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1081054800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1162097999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1162098000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1173589199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1173589200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1193547599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1193547600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1205643599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1205643600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1224997199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1224997200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1236488399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1236488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1256446799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1256446800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1268542799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1268542800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1288501199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1288501200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1299992399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1299992400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1319950799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1319950800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1331441999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1331442000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1351400399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1351400400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1362891599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1362891600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1382849999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1382850000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1394341199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1394341200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1414299599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1414299600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1425790799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1425790800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1445749199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1445749200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1457845199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1457845200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1477803599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1477803600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1489294799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1489294800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1509253199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1509253200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1520744399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1520744400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1540702799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1540702800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1552193999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1552194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1572152399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1572152400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1583643599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1583643600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1603601999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1603602000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1615697999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1615698000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1635656399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1635656400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1647147599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1647147600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1667105999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1667106000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1678597199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1678597200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1698555599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1698555600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1710046799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1710046800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1730005199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1730005200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1741496399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1741496400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1761454799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1761454800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1772945999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1772946000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1792904399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1792904400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1805000399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1805000400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1824958799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1824958800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1836449999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1836450000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1856408399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1856408400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1867899599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1867899600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1887857999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1887858000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1899349199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1899349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1919307599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1919307600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1930798799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1930798800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1950757199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1950757200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1962853199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1962853200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1982811599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1982811600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1994302799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1994302800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2014261199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2014261200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2025752399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2025752400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2045710799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2045710800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2057201999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2057202000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2077160399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2077160400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2088651599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2088651600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2108609999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2108610000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2120101199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2120101200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 2140059599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2140059600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Hermosillo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Hermosillo.json new file mode 100644 index 0000000..5638a81 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Hermosillo.json @@ -0,0 +1,42 @@ +({ + name: "date.timezone.America-Hermosillo", + runTest: function(t){ + var tz = "America/Hermosillo"; + doh.checkDate({tzOffset: 443.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 443.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 443.866666666667, tzAbbr: "LMT"}, -1514739601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1514739600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1343066401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1343066400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1234807201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1234807200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1220292001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1220292000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1207159201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1207159200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1191344401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1191344400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -873828001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -873828000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -661539601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -661539600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 28799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 28800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Indianapolis.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Indianapolis.json new file mode 100644 index 0000000..ef89387 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Indianapolis.json @@ -0,0 +1,208 @@ +({ + name: "date.timezone.America-Indiana-Indianapolis", + runTest: function(t){ + var tz = "America/Indiana/Indianapolis"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -900259201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -900259200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -891795601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -891795600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -747244801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -747244800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -733942801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -733942800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -715795201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -715795200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -702493201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -702493200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -684345601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -684345600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -671043601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -671043600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -652896001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -652896000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -639594001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -639594000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -620841601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -620841600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -608144401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -608144400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -589392001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -589392000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -576090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -576090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -557942401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -557942400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -544640401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -544640400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -463593601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -463593600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Knox.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Knox.json new file mode 100644 index 0000000..2c893a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Knox.json @@ -0,0 +1,318 @@ +({ + name: "date.timezone.America-Indiana-Knox", + runTest: function(t){ + var tz = "America/Indiana/Knox"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -715795201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -715795200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -702493201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -702493200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -684345601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -684345600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -671043601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -671043600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -652896001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -652896000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -639594001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -639594000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -620841601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -620841600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -608144401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -608144400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -589392001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -589392000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -576090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -576090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -557942401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -557942400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -544640401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -544640400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -463593601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -463593600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -447267601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -447267600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -415818001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -415818000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -355338001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -355338000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -321469201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -321469200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -289414801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -289414800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -257965201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -257965200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -242236801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -242236800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -195066001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -195066000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -84384001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -84384000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -68662801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -68662800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -52934401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -52934400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -37213201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -37213200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -21484801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -21484800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -5763601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -5763600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 9964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 9964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 25685999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 25686000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 41414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 41414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 57740399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 57740400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 73468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 73468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 89189999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 89190000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 104918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 104918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 120639599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 120639600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 126691199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126691200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 162374399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 162374400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183538799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183538800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215593199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215593200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247042799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 247042800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 262771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 262771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 278492399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 278492400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 294220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 294220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 309941999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 309942000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Marengo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Marengo.json new file mode 100644 index 0000000..84665f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Marengo.json @@ -0,0 +1,216 @@ +({ + name: "date.timezone.America-Indiana-Marengo", + runTest: function(t){ + var tz = "America/Indiana/Marengo"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -589392001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -589392000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -576090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -576090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -463593601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -463593600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -450291601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -450291600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -418237201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -418237200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -355338001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -355338000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -323888401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -323888400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -292438801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -292438800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 126687599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126687600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 162370799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 162370800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Petersburg.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Petersburg.json new file mode 100644 index 0000000..14e0fe8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Petersburg.json @@ -0,0 +1,242 @@ +({ + name: "date.timezone.America-Indiana-Petersburg", + runTest: function(t){ + var tz = "America/Indiana/Petersburg"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -462996001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -462996000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -450291601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -450291600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -418237201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -418237200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -355338001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -355338000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -323888401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -323888400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -292438801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -292438800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -257965201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -257965200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -242236801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -242236800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -226515601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -226515600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -210787201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -210787200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -195066001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -195066000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -179337601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -179337600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -163616401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -163616400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -147888001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -147888000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -100112401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -100112400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -84384001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -84384000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -68662801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -68662800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -52934401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -52934400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -37213201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -37213200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -21484801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -21484800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -5763601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -5763600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 9964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 9964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 25685999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 25686000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 41414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 41414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 57740399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 57740400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 73468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 73468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 89189999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 89190000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 104918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 104918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 120639599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 120639600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 126691199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126691200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 162374399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 162374400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183538799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183538800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215593199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215593200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247042799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247042800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Tell_City.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Tell_City.json new file mode 100644 index 0000000..edfb7a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Tell_City.json @@ -0,0 +1,212 @@ +({ + name: "date.timezone.America-Indiana-Tell_City", + runTest: function(t){ + var tz = "America/Indiana/Tell_City"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -747244801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -747244800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -733942801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -733942800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -462996001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -462996000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -450291601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -450291600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -418237201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -418237200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -355338001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -355338000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -323888401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -323888400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -289414801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -289414800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -260989201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -260989200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -242236801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -242236800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -226515601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -226515600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -210787201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -210787200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -195066001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -195066000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -179337601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -179337600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Vevay.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Vevay.json new file mode 100644 index 0000000..511e6b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Vevay.json @@ -0,0 +1,172 @@ +({ + name: "date.timezone.America-Indiana-Vevay", + runTest: function(t){ + var tz = "America/Indiana/Vevay"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Vincennes.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Vincennes.json new file mode 100644 index 0000000..1d63cb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Vincennes.json @@ -0,0 +1,212 @@ +({ + name: "date.timezone.America-Indiana-Vincennes", + runTest: function(t){ + var tz = "America/Indiana/Vincennes"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -747244801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -747244800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -733942801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -733942800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -462996001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -462996000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -450291601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -450291600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -418237201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -418237200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -355338001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -355338000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -323888401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -323888400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -289414801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -289414800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -260989201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -260989200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -242236801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -242236800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -226515601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -226515600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -210787201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -210787200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -195066001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -195066000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -179337601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -179337600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Winamac.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Winamac.json new file mode 100644 index 0000000..af4cfce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Indiana-Winamac.json @@ -0,0 +1,224 @@ +({ + name: "date.timezone.America-Indiana-Winamac", + runTest: function(t){ + var tz = "America/Indiana/Winamac"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -747244801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -747244800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -733942801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -733942800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -715795201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -715795200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -702493201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -702493200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -684345601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -684345600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -671043601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -671043600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -652896001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -652896000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -639594001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -639594000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -620841601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -620841600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -608144401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -608144400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -589392001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -589392000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -576090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -576090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -557942401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -557942400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -544640401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -544640400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -463593601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -463593600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -447267601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -447267600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -415818001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -415818000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -355338001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -355338000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -323888401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -323888400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -292438801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -292438800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Inuvik.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Inuvik.json new file mode 100644 index 0000000..ea7ab5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Inuvik.json @@ -0,0 +1,252 @@ +({ + name: "date.timezone.America-Inuvik", + runTest: function(t){ + var tz = "America/Inuvik"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -536457601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -536457600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -147888001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "PDDT"}, -147888000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "PDDT"}, -131558401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -131558400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 294227999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 294228000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1173603599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1173603600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1194163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1194163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1205053199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1205053200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1236502799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1236502800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1257062399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1257062400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1268557199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1268557200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1289116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1289116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1300006799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1300006800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1320566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1320566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1331456399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1331456400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1352015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1352016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1362905999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1362906000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1383465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1383465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1394355599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1394355600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1425805199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1425805200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1446364799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1446364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1457859599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1457859600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1478419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1478419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1489309199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1489309200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1520758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1520758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1541318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1541318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1552208399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1552208400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1583657999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1583658000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1604217599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1604217600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1615712399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1615712400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1636271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1636272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1647161999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1647162000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1678611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1678611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1699171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1699171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1710061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1710061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1741510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1741510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1762070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1762070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1772960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1772960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1793519999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1793520000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1805014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1805014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1825574399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1825574400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1836464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1836464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1857023999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1857024000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1867913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1867914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1888473599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1888473600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1899363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1899363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919923199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1930813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1930813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1951372799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1951372800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1962867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1962867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1983427199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1983427200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1994317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1994317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014876799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014876800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2025766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2025766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2046326399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2046326400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2057216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2057216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077775999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077776000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2088665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2088666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2109225599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2109225600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2120115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2120115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140675199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140675200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Iqaluit.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Iqaluit.json new file mode 100644 index 0000000..7fa497f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Iqaluit.json @@ -0,0 +1,254 @@ +({ + name: "date.timezone.America-Iqaluit", + runTest: function(t){ + var tz = "America/Iqaluit"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -865296001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -865296000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -147898801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "EDDT"}, -147898800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "EDDT"}, -131569201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -131569200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Jamaica.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Jamaica.json new file mode 100644 index 0000000..93e2bb8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Jamaica.json @@ -0,0 +1,54 @@ +({ + name: "date.timezone.America-Jamaica", + runTest: function(t){ + var tz = "America/Jamaica"; + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 307.2, tzAbbr: "KMT"}, -1827687169000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1827687168000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 136364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 136364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 162370799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 162370800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Juneau.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Juneau.json new file mode 100644 index 0000000..a7fe096 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Juneau.json @@ -0,0 +1,296 @@ +({ + name: "date.timezone.America-Juneau", + runTest: function(t){ + var tz = "America/Juneau"; + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -880207201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -880207200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -765385201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -765385200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -21477601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -21477600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -5756401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -5756400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 9971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 9972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 25693199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 25693200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 41421599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 41421600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 57747599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 57747600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 73475999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 73476000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 89197199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 89197200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 104925599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 104925600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 120646799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 120646800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 126698399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 126698400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 152096399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 152096400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 162381599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 162381600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 183545999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 183546000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 199274399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 199274400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 215600399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 215600400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 230723999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 230724000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 247049999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 247050000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 262778399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 262778400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 278499599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 278499600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 294227999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 294228000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 309949199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 309949200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 325677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 325677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 341398799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 341398800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 357127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 357127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 372848399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 372848400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 388576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 388576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 404902799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 404902800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 420026399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 420026400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 436352399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 436352400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 439030799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 439030800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 452084399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 452084400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 467805599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 467805600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 483533999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 483534000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 499255199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 499255200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 514983599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 514983600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 530704799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 530704800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 544618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 544618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 562154399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 562154400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 576068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 576068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 594208799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 594208800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 607517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 607518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 625658399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 625658400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 638967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 638967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 657107999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 657108000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 671021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 671022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 688557599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 688557600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 702471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 702471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 720007199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 720007200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 733921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 733921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 752061599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 752061600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 765370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 765370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 783511199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 783511200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 796820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 796820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 814960799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 814960800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 828874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 828874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 846410399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 846410400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 860324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 860324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 877859999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 877860000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 891773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 891774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 909309599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 909309600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 923223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 923223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 941363999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 941364000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 954673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 954673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 972813599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 972813600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 986122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 986122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1004263199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1004263200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1018177199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1018177200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1035712799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1035712800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1049626799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1049626800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1067162399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1067162400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1081076399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1081076400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1099216799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1099216800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1112525999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1112526000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1130666399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1130666400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1143975599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1143975600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1162115999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1162116000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1173610799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1173610800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1194170399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1194170400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1205060399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1205060400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1225619999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1225620000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1236509999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1236510000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1257069599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1257069600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1268564399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1268564400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1289123999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1289124000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1300013999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1300014000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1320573599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1320573600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1331463599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1331463600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1352023199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1352023200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1362913199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1362913200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1383472799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1383472800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1394362799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1394362800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1414922399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1414922400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1425812399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1425812400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1446371999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1446372000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1457866799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1457866800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1478426399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1478426400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1489316399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1489316400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1509875999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1509876000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1520765999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1520766000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1541325599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1541325600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1552215599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1552215600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1572775199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1572775200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1583665199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1583665200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1604224799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1604224800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1615719599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1615719600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1636279199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1636279200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1647169199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1647169200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1667728799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1667728800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1678618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1678618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1699178399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1699178400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1710068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1710068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1730627999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1730628000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1741517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1741518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1762077599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1762077600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1772967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1772967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1793527199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1793527200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1805021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1805022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1825581599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1825581600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1836471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1836471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1857031199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1857031200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1867921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1867921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1888480799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1888480800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1899370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1899370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1919930399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1919930400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1930820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1930820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1951379999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1951380000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1962874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1962874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1983434399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1983434400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1994324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1994324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2014883999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2014884000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2025773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2025774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2046333599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2046333600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2057223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2057223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2077783199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2077783200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2088673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2088673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2109232799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2109232800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2120122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2120122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2140682399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2140682400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Kentucky-Louisville.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Kentucky-Louisville.json new file mode 100644 index 0000000..1d999d6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Kentucky-Louisville.json @@ -0,0 +1,366 @@ +({ + name: "date.timezone.America-Kentucky-Louisville", + runTest: function(t){ + var tz = "America/Kentucky/Louisville"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1535904001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1535904000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1525280401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1525280400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -905097601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -905097600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -891795601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -891795600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -757360801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -757360800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -744224401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -744224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -715795201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -715795200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -608144401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -608144400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -589392001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -589392000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -576090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -576090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -557942401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -557942400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -544640401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -544640400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -463593601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -463593600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -450291601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -450291600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -415818001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -415818000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -384368401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -384368400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -352918801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -352918800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -321469201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -321469200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -289414801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -289414800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -273686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -273686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -266432401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -266432400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -52938001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -52938000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -37216801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -37216800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 126687599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126687600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 162370799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 162370800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Kentucky-Monticello.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Kentucky-Monticello.json new file mode 100644 index 0000000..fa211c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Kentucky-Monticello.json @@ -0,0 +1,306 @@ +({ + name: "date.timezone.America-Kentucky-Monticello", + runTest: function(t){ + var tz = "America/Kentucky/Monticello"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -52934401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -52934400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -37213201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -37213200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -21484801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -21484800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -5763601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -5763600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 9964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 9964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 25685999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 25686000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 41414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 41414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 57740399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 57740400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 73468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 73468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 89189999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 89190000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 104918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 104918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 120639599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 120639600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 126691199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126691200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 162374399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 162374400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183538799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183538800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215593199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215593200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247042799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 247042800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 262771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 262771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 278492399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 278492400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 294220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 294220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 309941999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 309942000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719996399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 719996400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-La_Paz.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-La_Paz.json new file mode 100644 index 0000000..735dfdb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-La_Paz.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.America-La_Paz", + runTest: function(t){ + var tz = "America/La_Paz"; + doh.checkDate({tzOffset: 272.6, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 272.6, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 272.6, tzAbbr: "CMT"}, -1205954845000, tz, 1); + doh.checkDate({tzOffset: 212.6, tzAbbr: "BOST"}, -1205954844000, tz, 1); + doh.checkDate({tzOffset: 212.6, tzAbbr: "BOST"}, -1192307245000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "BOT"}, -1192307244000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "BOT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "BOT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "BOT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "BOT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Lima.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Lima.json new file mode 100644 index 0000000..53ba324 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Lima.json @@ -0,0 +1,42 @@ +({ + name: "date.timezone.America-Lima", + runTest: function(t){ + var tz = "America/Lima"; + doh.checkDate({tzOffset: 308.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 308.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 308.6, tzAbbr: "LMT"}, -1938538285000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, -1938538284000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, -1009825201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, -1009825200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, -1002052801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, -1002052800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, -986756401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, -986756400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, -971035201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, -971035200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, -955306801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, -955306800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, -939585601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, -939585600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 504939599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 504939600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 512711999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 512712000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 536475599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 536475600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 544247999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 544248000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 631169999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 631170000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 638942399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 638942400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 757400399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 757400400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "PEST"}, 765172799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 765172800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "PET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Los_Angeles.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Los_Angeles.json new file mode 100644 index 0000000..f2ee7f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Los_Angeles.json @@ -0,0 +1,382 @@ +({ + name: "date.timezone.America-Los_Angeles", + runTest: function(t){ + var tz = "America/Los_Angeles"; + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1633269601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1633269600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1615129201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1615129200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1601820001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1601820000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1583679601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1583679600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -880207201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -880207200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -765385201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -765385200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -687967201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -687967200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -662655601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -662655600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -620834401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -620834400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -608137201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -608137200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -589384801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -589384800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -576082801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -576082800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -557935201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -557935200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -544633201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -544633200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -526485601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -526485600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -513183601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -513183600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -495036001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -495036000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -481734001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -481734000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -463586401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -463586400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -450284401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -450284400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -431532001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -431532000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -418230001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -418230000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -400082401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -400082400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -386780401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -386780400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -368632801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -368632800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -355330801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -355330800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -337183201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -337183200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -323881201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -323881200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -305733601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -305733600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -292431601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -292431600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -273679201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -273679200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -260982001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -260982000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -242229601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -242229600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -226508401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -226508400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -210780001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -210780000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -195058801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -195058800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -179330401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -179330400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -163609201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -163609200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -147880801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -147880800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -131554801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -131554800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -116431201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -116431200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -100105201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -100105200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -84376801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -84376800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -68655601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -68655600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -52927201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -52927200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -37206001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -37206000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -21477601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -21477600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -5756401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -5756400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 9971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 9972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 25693199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 25693200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 41421599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 41421600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 57747599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 57747600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 73475999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 73476000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 89197199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 89197200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 104925599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 104925600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 120646799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 120646800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 126698399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 126698400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 152096399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 152096400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 162381599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 162381600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 183545999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 183546000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 199274399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 199274400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 215600399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 215600400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 230723999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 230724000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 247049999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 247050000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 262778399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 262778400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 278499599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 278499600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 294227999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 294228000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 309949199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 309949200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 325677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 325677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 341398799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 341398800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 357127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 357127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 372848399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 372848400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 388576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 388576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 404902799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 404902800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 420026399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 420026400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 436352399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 436352400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 452080799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 452080800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 467801999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 467802000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 483530399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 483530400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 499251599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 499251600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 514979999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 514980000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 530701199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 530701200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 544615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 544615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 562150799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 562150800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 576064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 576064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 594205199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 594205200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 607514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 607514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 625654799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 625654800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 638963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 638964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 657104399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 657104400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 671018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 671018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 688553999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 688554000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 702467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 702468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 720003599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 720003600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 733917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 733917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 752057999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 752058000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 765367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 765367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 783507599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 783507600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 796816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 796816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 814957199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 814957200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 828871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 828871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 846406799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 846406800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 860320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 860320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 877856399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 877856400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 891770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 891770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 909305999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 909306000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 923219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 923220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 941360399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 941360400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 954669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 954669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 972809999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 972810000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 986119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 986119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1004259599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1004259600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1018173599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1018173600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1035709199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1035709200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1049623199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1049623200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1067158799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1067158800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1081072799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1081072800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1099213199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1099213200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1112522399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1112522400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1130662799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1130662800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1143971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1143972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1162112399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1162112400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1173607199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1173607200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1194166799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1194166800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1205056799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1205056800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1225616399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1225616400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1236506399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1236506400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1257065999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1257066000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1268560799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1268560800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1289120399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1289120400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1300010399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1300010400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1320569999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1320570000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1331459999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1331460000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1352019599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1352019600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1362909599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1362909600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1383469199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1383469200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1394359199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1394359200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1414918799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1414918800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1425808799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1425808800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1446368399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1446368400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1457863199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1457863200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1478422799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1478422800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1489312799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1489312800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1509872399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1509872400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1520762399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1520762400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1541321999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1541322000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1552211999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1552212000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1572771599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1572771600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1583661599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1583661600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1604221199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1604221200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1615715999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1615716000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1636275599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1636275600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1647165599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1647165600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1667725199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1667725200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1678615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1678615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1699174799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1699174800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1710064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1710064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1730624399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1730624400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1741514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1741514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1762073999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1762074000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1772963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1772964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1793523599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1793523600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1805018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1805018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1825577999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1825578000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1836467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1836468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1857027599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1857027600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1867917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1867917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1888477199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1888477200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1899367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1899367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1919926799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1919926800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1930816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1930816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1951376399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1951376400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1962871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1962871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1983430799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1983430800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1994320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1994320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2014880399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2014880400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2025770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2025770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2046329999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2046330000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2057219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2057220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2077779599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2077779600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2088669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2088669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2109229199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2109229200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2120119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2120119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2140678799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2140678800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Maceio.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Maceio.json new file mode 100644 index 0000000..a05dfd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Maceio.json @@ -0,0 +1,94 @@ +({ + name: "date.timezone.America-Maceio", + runTest: function(t){ + var tz = "America/Maceio"; + doh.checkDate({tzOffset: 142.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 142.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 142.866666666667, tzAbbr: "LMT"}, -1767217029000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1767217028000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1206957601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1206957600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1191362401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1191362400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1175374801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1175374800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1159826401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1159826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -633819601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -633819600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -622069201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -622069200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -602283601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -602283600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -570747601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -570747600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -560210401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -560210400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -539125201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -539125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -531352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -531352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -191365201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -191365200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -184197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -184197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -155163601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -155163600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -150069601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -150069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -128898001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -128898000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -121125601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -121125600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -99954001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -99954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -89589601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -89589600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -68418001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -68418000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -57967201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -57967200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 499748399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 499748400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 511235999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 511236000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 530593199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 530593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 540266399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 540266400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 562129199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 562129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 571197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 571197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 592973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 592974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 602042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 602042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 634701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 634701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 813725999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 813726000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 824003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 824004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 951616799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 951616800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 970973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 970974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 972179999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 972180000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1003028399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1003028400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1013911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1013911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Managua.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Managua.json new file mode 100644 index 0000000..8c8fb7a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Managua.json @@ -0,0 +1,42 @@ +({ + name: "date.timezone.America-Managua", + runTest: function(t){ + var tz = "America/Managua"; + doh.checkDate({tzOffset: 345.2, tzAbbr: "MMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 345.2, tzAbbr: "MMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 345.2, tzAbbr: "MMT"}, -1121105689000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1121105688000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 105083999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 105084000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 161758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 161758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 290584799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 290584800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 299134799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 299134800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 322034399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 322034400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 330584399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 330584400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 694259999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 694260000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 717310799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 717310800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 725867999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 725868000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 852094799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 852094800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1113112799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1113112800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1128229199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1128229200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1146383999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1146384000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1159682399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1159682400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Manaus.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Manaus.json new file mode 100644 index 0000000..9352da8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Manaus.json @@ -0,0 +1,74 @@ +({ + name: "date.timezone.America-Manaus", + runTest: function(t){ + var tz = "America/Manaus"; + doh.checkDate({tzOffset: 240.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 240.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 240.066666666667, tzAbbr: "LMT"}, -1767211197000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1767211196000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1206954001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1206954000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1191358801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1191358800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1175371201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1175371200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1159822801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1159822800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -633816001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -633816000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -622065601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -622065600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -602280001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -602280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -591829201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -591829200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -570744001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -570744000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -560206801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -560206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -539121601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -539121600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -531349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -531349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -191361601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -191361600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -155160001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -155160000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -150066001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -150066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -128894401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -128894400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -99950401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -99950400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -89586001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -89586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -68414401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -68414400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -57963601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -57963600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 499751999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 499752000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 511239599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 511239600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 530596799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 530596800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 540269999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 540270000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 571201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 571201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 750830399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 750830400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 761713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 761713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Martinique.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Martinique.json new file mode 100644 index 0000000..abd498a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Martinique.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.America-Martinique", + runTest: function(t){ + var tz = "America/Martinique"; + doh.checkDate({tzOffset: 244.333333333333, tzAbbr: "FFMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 244.333333333333, tzAbbr: "FFMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 244.333333333333, tzAbbr: "FFMT"}, -1851537341000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1851537340000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 323841599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 323841600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 338957999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 338958000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Mazatlan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Mazatlan.json new file mode 100644 index 0000000..a3706f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Mazatlan.json @@ -0,0 +1,198 @@ +({ + name: "date.timezone.America-Mazatlan", + runTest: function(t){ + var tz = "America/Mazatlan"; + doh.checkDate({tzOffset: 425.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 425.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 425.666666666667, tzAbbr: "LMT"}, -1514739601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1514739600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1343066401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1343066400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1234807201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1234807200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1220292001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1220292000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1207159201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1207159200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1191344401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1191344400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -873828001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -873828000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -661539601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -661539600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 28799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 28800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 989139599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 989139600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1001836799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1001836800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1175417999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1175418000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1193558399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1193558400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1207472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1207472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225007999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225008000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1238921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1238922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1256457599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1256457600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1270371599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1270371600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1288511999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1288512000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1301821199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1301821200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1319961599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1319961600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1333270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1333270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1351411199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1351411200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1365325199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1365325200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1382860799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1382860800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1396774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1396774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414310399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414310400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1428224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1428224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1445759999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1445760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1459673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1459674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1477814399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1477814400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1491123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1491123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509263999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509264000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1522573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1522573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1540713599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1540713600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1554627599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1554627600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1586077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1586077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1603612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1603612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1617526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1617526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1635667199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1635667200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1648976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1648976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1680425999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1680426000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1698566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1698566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1712480399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1712480400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1743929999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1743930000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1761465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1761465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1775379599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1775379600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1792915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1792915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1806829199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1806829200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1824969599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1824969600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1838278799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1838278800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1856419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1856419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1869728399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1869728400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1887868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1887868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1901782799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1901782800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1933232399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1933232400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1950767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1950768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1964681999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1964682000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1982822399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1982822400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1996131599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1996131600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2027581199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2027581200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2045721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2045721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2059030799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2059030800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2091085199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2091085200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2108620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2108620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2122534799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2122534800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Menominee.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Menominee.json new file mode 100644 index 0000000..45d8d64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Menominee.json @@ -0,0 +1,296 @@ +({ + name: "date.timezone.America-Menominee", + runTest: function(t){ + var tz = "America/Menominee"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -747244801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -747244800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -733942801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -733942800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -116438401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -116438400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -100112401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -100112400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -21484801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21484800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 120639599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 120639600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 126691199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126691200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 162374399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 162374400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183538799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183538800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215593199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215593200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247042799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 247042800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 262771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 262771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 278492399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 278492400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 294220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 294220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 309941999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 309942000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719996399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 719996400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004252399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004252400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Merida.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Merida.json new file mode 100644 index 0000000..2ec5bd3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Merida.json @@ -0,0 +1,186 @@ +({ + name: "date.timezone.America-Merida", + runTest: function(t){ + var tz = "America/Merida"; + doh.checkDate({tzOffset: 358.466666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 358.466666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 358.466666666667, tzAbbr: "LMT"}, -1514743201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1514743200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 377935199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 377935200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 407653199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 407653200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 989135999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 989136000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1001833199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1001833200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1175414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1175414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1193554799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1193554800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1207468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1207468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225004399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225004400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1238918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1238918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1256453999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1256454000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1270367999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1270368000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1288508399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1288508400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1301817599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1301817600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1319957999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1319958000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1333267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1333267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1351407599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1351407600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1365321599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1365321600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1382857199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1382857200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1396771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1396771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414306799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414306800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1428220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1428220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1445756399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1445756400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1459670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1459670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1477810799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1477810800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1491119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1491120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509260399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509260400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1522569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1522569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1540709999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1540710000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1554623999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1554624000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1586073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1586073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1603609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1603609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1617523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1617523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1635663599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1635663600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1648972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1648972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1680422399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1680422400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1698562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1698562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1712476799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1712476800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1743926399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1743926400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1761461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1761462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1775375999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1775376000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1792911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1792911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1806825599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1806825600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1824965999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1824966000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1838275199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1838275200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1856415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1856415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1869724799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1869724800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1887865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1887865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1901779199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1901779200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1933228799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1933228800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1950764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1950764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1964678399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1964678400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1982818799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1982818800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1996127999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1996128000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2027577599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2027577600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2045717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2045718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2059027199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2059027200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2091081599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2091081600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2108617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2108617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2122531199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2122531200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Mexico_City.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Mexico_City.json new file mode 100644 index 0000000..a5693ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Mexico_City.json @@ -0,0 +1,208 @@ +({ + name: "date.timezone.America-Mexico_City", + runTest: function(t){ + var tz = "America/Mexico_City"; + doh.checkDate({tzOffset: 396.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 396.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 396.6, tzAbbr: "LMT"}, -1514739601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1514739600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1343066401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1343066400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1234807201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1234807200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1220292001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1220292000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1207159201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1207159200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1191344401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1191344400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -975261601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -975261600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -963169201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -963169200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -917114401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -917114400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -907354801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -907354800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -821901601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -821901600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -810068401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -810068400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -627501601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -627501600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -612990001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -612990000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 989135999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 989136000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1001833199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1001833200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1175414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1175414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1193554799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1193554800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1207468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1207468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225004399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225004400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1238918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1238918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1256453999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1256454000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1270367999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1270368000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1288508399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1288508400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1301817599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1301817600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1319957999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1319958000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1333267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1333267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1351407599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1351407600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1365321599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1365321600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1382857199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1382857200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1396771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1396771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414306799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414306800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1428220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1428220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1445756399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1445756400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1459670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1459670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1477810799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1477810800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1491119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1491120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509260399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509260400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1522569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1522569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1540709999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1540710000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1554623999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1554624000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1586073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1586073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1603609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1603609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1617523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1617523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1635663599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1635663600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1648972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1648972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1680422399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1680422400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1698562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1698562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1712476799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1712476800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1743926399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1743926400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1761461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1761462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1775375999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1775376000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1792911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1792911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1806825599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1806825600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1824965999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1824966000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1838275199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1838275200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1856415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1856415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1869724799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1869724800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1887865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1887865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1901779199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1901779200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1933228799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1933228800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1950764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1950764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1964678399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1964678400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1982818799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1982818800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1996127999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1996128000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2027577599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2027577600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2045717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2045718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2059027199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2059027200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2091081599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2091081600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2108617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2108617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2122531199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2122531200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Miquelon.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Miquelon.json new file mode 100644 index 0000000..5ccf80f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Miquelon.json @@ -0,0 +1,220 @@ +({ + name: "date.timezone.America-Miquelon", + runTest: function(t){ + var tz = "America/Miquelon"; + doh.checkDate({tzOffset: 224.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 224.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 224.666666666667, tzAbbr: "LMT"}, -1850328921000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1850328920000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 326001599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 326001600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 544597199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 544597200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 576046799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 576046800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 594187199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 594187200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 607496399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 607496400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 625636799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 625636800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 638945999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 638946000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 657086399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 657086400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 671000399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 671000400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 688535999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 688536000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 702449999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 702450000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 719985599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 719985600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 733899599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 733899600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 752039999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 752040000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 765349199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 765349200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 783489599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 783489600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 796798799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 796798800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 814939199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 814939200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 828853199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 828853200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 846388799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 846388800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 860302799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 860302800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 877838399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 877838400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 891752399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 891752400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 909287999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 909288000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 923201999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 923202000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 941342399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 941342400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 954651599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 954651600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 972791999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 972792000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 986101199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 986101200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1004241599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1004241600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1018155599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1018155600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1035691199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1035691200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1049605199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1049605200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1067140799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1067140800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1081054799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1081054800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1099195199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1099195200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1112504399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1112504400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1130644799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1130644800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1143953999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1143954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1162094399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1162094400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1173589199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1173589200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1194148799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1194148800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1205038799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1205038800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1225598399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1225598400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1236488399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1236488400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1257047999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1257048000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1268542799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1268542800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1289102399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1289102400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1299992399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1299992400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1320551999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1320552000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1331441999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1331442000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1352001599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1352001600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1362891599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1362891600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1383451199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1383451200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1394341199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1394341200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1414900799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1414900800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1425790799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1425790800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1446350399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1446350400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1457845199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1457845200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1478404799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1478404800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1489294799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1489294800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1509854399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1509854400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1520744399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1520744400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1541303999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1541304000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1552193999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1552194000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1572753599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1572753600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1583643599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1583643600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1604203199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1604203200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1615697999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1615698000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1636257599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1636257600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1647147599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1647147600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1667707199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1667707200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1678597199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1678597200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1699156799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1699156800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1710046799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1710046800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1730606399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1730606400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1741496399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1741496400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1762055999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1762056000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1772945999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1772946000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1793505599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1793505600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1805000399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1805000400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1825559999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1825560000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1836449999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1836450000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1857009599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1857009600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1867899599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1867899600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1888459199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1888459200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1899349199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1899349200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1919908799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1919908800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1930798799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1930798800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1951358399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1951358400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1962853199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1962853200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1983412799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1983412800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1994302799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1994302800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2014862399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2014862400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2025752399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2025752400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2046311999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2046312000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2057201999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2057202000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2077761599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2077761600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2088651599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2088651600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2109211199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2109211200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2120101199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2120101200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 2140660799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2140660800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "PMST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 120, tzAbbr: "PMDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Moncton.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Moncton.json new file mode 100644 index 0000000..1171eb5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Moncton.json @@ -0,0 +1,424 @@ +({ + name: "date.timezone.America-Moncton", + runTest: function(t){ + var tz = "America/Moncton"; + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2131642801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -2131642800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1632074401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1632074400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1614798001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1614798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1153681201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1153681200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1145822401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1145822400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1122231601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1122231600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1114372801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1114372800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1090782001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1090782000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1082923201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1082923200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1059332401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1059332400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1051473601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1051473600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1027882801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1027882800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -1020024001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1020024000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -996433201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -996433200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -988574401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -988574400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -965674801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -965674800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -955396801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -955396800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -934743601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -934743600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -923947201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -923947200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -904503601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -904503600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -891892801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -891892800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -880221601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -880221600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -765399601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -765399600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -747252001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -747252000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -733950001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -733950000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -715802401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -715802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -702500401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -702500400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -684352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -684352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -671050801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -671050800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -652903201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -652903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -639601201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -639601200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -620848801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -620848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -608151601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -608151600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -589399201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -589399200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -576097201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -576097200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -557949601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -557949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -544647601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -544647600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -526500001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -526500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -513198001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -513198000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -495050401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -495050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -481748401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -481748400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -463600801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -463600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -450298801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -450298800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -431546401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -431546400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -418244401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -418244400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -400096801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -400096800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -384375601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -384375600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -368647201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -368647200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -352926001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -352926000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -337197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -337197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -321476401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -321476400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -305748001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -305748000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -289422001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -289422000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -273693601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -273693600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -257972401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -257972400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -242244001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -242244000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -226522801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -226522800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -210794401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -210794400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -195073201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -195073200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -179344801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -179344800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -163623601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -163623600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -147895201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -147895200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -131569201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -131569200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -116445601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -116445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -100119601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -100119600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -84391201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -84391200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -68670001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -68670000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -52941601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -52941600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -37220401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -37220400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -21492001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -21492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, -5770801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -5770800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 9957599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 9957600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 25678799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 25678800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 41407199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 41407200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 57733199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 57733200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 73461599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 73461600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 89182799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 89182800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 136360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 136360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 152081999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 152082000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 167810399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 167810400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 183531599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 183531600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 199259999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 199260000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 215585999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 215586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 230709599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 230709600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 247035599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 247035600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 262763999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 262764000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 278485199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 278485200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 294213599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 294213600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 309934799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 309934800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 325663199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 325663200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 341384399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 341384400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 357112799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 357112800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 372833999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 372834000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 388562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 388562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 404888399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 404888400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 420011999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 420012000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 436337999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 436338000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 452066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 452066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 467787599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 467787600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 483515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 483516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 499237199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 499237200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 514965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 514965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 530686799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 530686800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 544600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 544600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 562136399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 562136400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 576050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 576050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 594190799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 594190800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 607499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 607500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 625640399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 625640400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 638949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 638949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 657089999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 657090000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 671003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 671004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 688539599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 688539600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 702453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 702453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 719989199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 719989200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 733896059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 733896060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 752036459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 752036460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 765345659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 765345660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 783486059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 783486060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 796795259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 796795260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 814935659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 814935660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 828849659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 828849660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 846385259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 846385260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 860299259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 860299260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 877834859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 877834860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 891748859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 891748860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 909284459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 909284460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 923198459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 923198460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 941338859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 941338860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 954648059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 954648060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 972788459000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 972788460000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 986097659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 986097660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1004238059000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1004238060000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1018152059000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1018152060000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1035687659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1035687660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1049601659000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1049601660000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1067137259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1067137260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1081051259000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1081051260000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1099191659000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1099191660000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1112500859000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1112500860000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1130641259000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1130641260000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1143950459000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1143950460000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1162090859000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1162090860000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1173592799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1173592800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1194152399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1194152400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1205042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1205042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1225601999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1225602000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1236491999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1236492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1257051599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1257051600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1268546399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1268546400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1289105999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1289106000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1299995999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1299996000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1320555599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1320555600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1331445599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1331445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1352005199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1352005200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1362895199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1362895200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1383454799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1383454800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1394344799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1394344800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1414904399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1414904400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1425794399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1425794400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1446353999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1446354000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1457848799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1457848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1478408399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1478408400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1489298399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1489298400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1509857999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1509858000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1520747999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1520748000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1541307599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1541307600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1552197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1552197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1572757199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1572757200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1583647199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1583647200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1604206799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1604206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1615701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1615701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1636261199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1636261200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1647151199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1647151200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1667710799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1667710800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1678600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1678600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1699160399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1699160400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1710050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1710050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1730609999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1730610000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1741499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1741500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1762059599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1762059600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1772949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1772949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1793509199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1793509200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1805003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1805004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1825563599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1825563600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1836453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1836453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1857013199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1857013200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1867903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1867903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1888462799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1888462800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1899352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1899352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1919912399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1919912400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1930802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1930802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1951361999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1951362000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1962856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1962856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1983416399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1983416400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1994306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1994306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2014865999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2014866000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2025755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2025756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2046315599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2046315600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2057205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2057205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2077765199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2077765200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2088655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2088655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2109214799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2109214800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2120104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2120104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2140664399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2140664400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Monterrey.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Monterrey.json new file mode 100644 index 0000000..ac7e981 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Monterrey.json @@ -0,0 +1,186 @@ +({ + name: "date.timezone.America-Monterrey", + runTest: function(t){ + var tz = "America/Monterrey"; + doh.checkDate({tzOffset: 401.266666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 401.266666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 401.266666666667, tzAbbr: "LMT"}, -1514743201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1514743200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 989135999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 989136000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1001833199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1001833200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1175414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1175414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1193554799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1193554800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1207468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1207468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225004399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225004400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1238918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1238918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1256453999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1256454000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1270367999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1270368000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1288508399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1288508400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1301817599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1301817600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1319957999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1319958000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1333267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1333267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1351407599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1351407600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1365321599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1365321600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1382857199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1382857200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1396771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1396771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414306799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414306800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1428220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1428220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1445756399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1445756400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1459670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1459670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1477810799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1477810800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1491119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1491120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509260399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509260400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1522569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1522569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1540709999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1540710000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1554623999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1554624000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1586073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1586073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1603609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1603609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1617523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1617523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1635663599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1635663600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1648972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1648972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1680422399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1680422400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1698562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1698562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1712476799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1712476800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1743926399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1743926400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1761461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1761462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1775375999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1775376000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1792911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1792911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1806825599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1806825600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1824965999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1824966000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1838275199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1838275200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1856415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1856415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1869724799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1869724800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1887865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1887865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1901779199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1901779200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1933228799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1933228800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1950764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1950764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1964678399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1964678400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1982818799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1982818800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1996127999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1996128000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2027577599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2027577600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2045717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2045718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2059027199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2059027200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2091081599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2091081600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2108617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2108617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2122531199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2122531200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montevideo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montevideo.json new file mode 100644 index 0000000..c933d28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montevideo.json @@ -0,0 +1,274 @@ +({ + name: "date.timezone.America-Montevideo", + runTest: function(t){ + var tz = "America/Montevideo"; + doh.checkDate({tzOffset: 224.733333333333, tzAbbr: "MMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 224.733333333333, tzAbbr: "MMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 224.733333333333, tzAbbr: "MMT"}, -1567455317000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1567455316000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1459542601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1459542600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1443819601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1443819600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1428006601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1428006600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1412283601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1412283600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1396470601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1396470600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1380747601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1380747600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1141590601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1141590600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1128286801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1128286800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1110141001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1110141000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1096837201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1096837200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1078691401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1078691400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1065387601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1065387600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1046637001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1046637000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1033938001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1033938000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1015187401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1015187400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -1002488401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -1002488400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -983737801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -983737800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -971038801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -971038800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -952288201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -952288200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -938984401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -938984400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -920838601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -920838600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -907534801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -907534800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -896819401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -896819400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYHST"}, -883602001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -883602000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "UYT"}, -853619401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -853619400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -845848801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -845848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -334789201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -334789200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -319672801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -319672800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -314226001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -314226000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -309996001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -309996000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -149720401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -149720400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -134604001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -134604000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -118270801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -118270800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -100044001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -100044000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, -68508001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -68508000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -50446801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, -50446800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, -34119001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -34119000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -18910801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, -18910800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, -2583001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, -2583000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 12625199000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, 12625200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, 28952999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 28953000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 72932399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 72932400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 82691999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 82692000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 132116399000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, 132116400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "UYHST"}, 156911399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 156911400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 212983199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 212983200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 250052399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 250052400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 260243999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 260244000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 307594799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 307594800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 325994399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 325994400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 566449199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 566449200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 574307999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 574308000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 597812399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 597812400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 605671199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 605671200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 625633199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 625633200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 636515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 636516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 667965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 667965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 688532399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 688532400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 699415199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 699415200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 719377199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 719377200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 730864799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 730864800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1095562799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1095562800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1111895999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1111896000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1128833999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1128834000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1142135999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1142136000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1159678799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1159678800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1173585599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1173585600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1191733199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1191733200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1205035199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1205035200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1223182799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1223182800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1236484799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1236484800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1254632399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1254632400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1268539199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1268539200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1286081999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1286082000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1299988799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1299988800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1317531599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1317531600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1331438399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1331438400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1349585999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1349586000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1362887999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1362888000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1381035599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1381035600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1394337599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1394337600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1412485199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1412485200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1425787199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1425787200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1443934799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1443934800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1457841599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1457841600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1475384399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1475384400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1489291199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1489291200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1506833999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1506834000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1520740799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1520740800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1538888399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1538888400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1552190399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1552190400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1570337999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1570338000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1583639999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1583640000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1601787599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1601787600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1615694399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1615694400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1633237199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1633237200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1647143999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1647144000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1664686799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1664686800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1678593599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1678593600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1696136399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1696136400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1710043199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1710043200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1728190799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1728190800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1741492799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1741492800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1759640399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1759640400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1772942399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1772942400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1791089999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1791090000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1804996799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1804996800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1822539599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1822539600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1836446399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1836446400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1853989199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1853989200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1867895999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1867896000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1886043599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1886043600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1899345599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1899345600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1917493199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1917493200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1930795199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1930795200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1948942799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1948942800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1962849599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1962849600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1980392399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1980392400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1994299199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1994299200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2011841999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2011842000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2025748799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2025748800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2043291599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2043291600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2057198399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2057198400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2075345999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2075346000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2088647999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2088648000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2106795599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2106795600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2120097599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2120097600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 2138245199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2138245200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "UYST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "UYT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montreal.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montreal.json new file mode 100644 index 0000000..d1b4cb5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montreal.json @@ -0,0 +1,476 @@ +({ + name: "date.timezone.America-Montreal", + runTest: function(t){ + var tz = "America/Montreal"; + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1665334801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1665334800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1662753601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1662753600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1632070801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1632070800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1614794401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1614794400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1601742601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1601742600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1583775001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1583775000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1567355401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1567355400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1554053401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1554053400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1535907601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1535907600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1522603801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1522603800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1504458001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1504458000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1491154201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1491154200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1439830801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1439830800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1428255001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1428255000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1409504401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1409504400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1396805401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1396805400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1378054801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1378054800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1365355801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1365355800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1346612401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1346612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1333915201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1333915200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1315162801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1315162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1301860801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1301860800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1283713201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1283713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1270411201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1270411200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1252263601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1252263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1238961601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1238961600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1220814001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1220814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1207512001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1207512000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1188759601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1188759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1176062401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1176062400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1157310001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1157310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1144008001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1144008000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1125860401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1125860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1112558401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1112558400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1094410801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1094410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1081108801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1081108800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1062961201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1062961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1049659201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1049659200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1031511601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1031511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1018209601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1018209600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1000062001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1000062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -986760001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -986760000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -968007601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -968007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -955310401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -955310400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -936558001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -936558000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -880218001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -880218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -747248401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -747248400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -733946401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -733946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -715798801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -715798800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -702496801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -702496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -684349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -684349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -671047201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -671047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -652899601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -652899600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -636573601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -636573600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -620845201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -620845200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -605124001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -605124000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -589395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -589395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -576093601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -576093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -557946001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -557946000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -544644001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -544644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -526496401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -526496400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -513194401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -513194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -495046801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -495046800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -481744801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -481744800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -463597201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -463597200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -450295201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -450295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -431542801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -431542800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -418240801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -418240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -400093201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -400093200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -384372001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -384372000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -368643601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -368643600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -352922401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -352922400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -337194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -337194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -321472801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -321472800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -305744401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -305744400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -289418401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -289418400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -273690001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -273690000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -257968801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -257968800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -242240401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -242240400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -226519201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -226519200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -210790801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -210790800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -195069601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -195069600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -179341201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -179341200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -163620001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -163620000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -147891601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -147891600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -131565601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -131565600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -116442001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -116442000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -100116001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -100116000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -84387601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -84387600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -68666401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -68666400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -52938001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -52938000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -37216801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -37216800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 136364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 136364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 167813999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 167814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montserrat.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montserrat.json new file mode 100644 index 0000000..06d35e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Montserrat.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Montserrat", + runTest: function(t){ + var tz = "America/Montserrat"; + doh.checkDate({tzOffset: 248.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 248.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 248.866666666667, tzAbbr: "LMT"}, -1846266609000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1846266608000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nassau.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nassau.json new file mode 100644 index 0000000..a9fbc38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nassau.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.America-Nassau", + runTest: function(t){ + var tz = "America/Nassau"; + doh.checkDate({tzOffset: 309.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 309.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 309.4, tzAbbr: "LMT"}, -1825095037000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1825095036000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -179341201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -179341200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -163620001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -163620000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -147891601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -147891600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -131565601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -131565600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -116442001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -116442000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -100116001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -100116000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -84387601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -84387600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -68666401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -68666400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -52938001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -52938000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -37216801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -37216800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 136364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 136364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 167813999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 167814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-New_York.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-New_York.json new file mode 100644 index 0000000..75bd42b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-New_York.json @@ -0,0 +1,482 @@ +({ + name: "date.timezone.America-New_York", + runTest: function(t){ + var tz = "America/New_York"; + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1633280401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1633280400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1615140001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1615140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1601830801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1601830800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1583690401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1583690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1570381201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1570381200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1551636001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1551636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1536512401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1536512400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1523210401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1523210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1504458001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1504458000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1491760801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1491760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1473008401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1473008400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1459706401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1459706400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1441558801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1441558800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1428256801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1428256800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1410109201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1410109200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1396807201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1396807200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1378659601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1378659600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1365357601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1365357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1347210001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1347210000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1333908001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1333908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1315155601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1315155600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1301853601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1301853600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1283706001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1283706000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1270404001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1270404000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1252256401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1252256400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1238954401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1238954400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1220806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1220806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1207504801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1207504800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1189357201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1189357200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1176055201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1176055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1157302801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1157302800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1144605601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1144605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1125853201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1125853200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1112551201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1112551200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1094403601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1094403600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1081101601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1081101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1062954001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1062954000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1049652001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1049652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1031504401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1031504400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1018202401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1018202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1000054801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1000054800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -986752801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -986752800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -968000401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -968000400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -955303201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -955303200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -936550801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -936550800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -923248801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -923248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -905101201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -905101200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -891799201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -891799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -880218001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -880218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -747248401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -747248400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -733946401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -733946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -715798801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -715798800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -702496801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -702496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -684349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -684349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -671047201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -671047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -652899601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -652899600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -639597601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -639597600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -620845201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -620845200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -608148001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -608148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -589395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -589395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -576093601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -576093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -557946001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -557946000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -544644001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -544644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -526496401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -526496400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -513194401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -513194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -495046801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -495046800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -481744801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -481744800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -463597201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -463597200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -447271201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -447271200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -431542801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -431542800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -415821601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -415821600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -400093201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -400093200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -384372001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -384372000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -368643601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -368643600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -352922401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -352922400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -337194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -337194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -321472801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -321472800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -305744401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -305744400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -289418401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -289418400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -273690001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -273690000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -257968801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -257968800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -242240401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -242240400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -226519201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -226519200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -210790801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -210790800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -195069601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -195069600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -179341201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -179341200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -163620001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -163620000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -147891601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -147891600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -131565601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -131565600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -116442001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -116442000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -100116001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -100116000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -84387601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -84387600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -68666401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -68666400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -52938001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -52938000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -37216801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -37216800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 126687599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 126687600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 162370799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 162370800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nipigon.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nipigon.json new file mode 100644 index 0000000..2a62963 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nipigon.json @@ -0,0 +1,280 @@ +({ + name: "date.timezone.America-Nipigon", + runTest: function(t){ + var tz = "America/Nipigon"; + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1632070801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1632070800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1614794401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1614794400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -923252401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -923252400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -880218001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -880218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 136364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 136364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 167813999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 167814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nome.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nome.json new file mode 100644 index 0000000..5c82470 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Nome.json @@ -0,0 +1,298 @@ +({ + name: "date.timezone.America-Nome", + runTest: function(t){ + var tz = "America/Nome"; + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -880196401000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NWT"}, -880196400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NPT"}, -765374401000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -765374400000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -86878801000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -86878800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -21466801000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, -21466800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, -5745601000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -5745600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 9982799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 9982800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 25703999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 25704000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 41432399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 41432400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 57758399000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 57758400000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 73486799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 73486800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 89207999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 89208000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 104936399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 104936400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 120657599000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 120657600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 126709199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 126709200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 152107199000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 152107200000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 162392399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 162392400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 183556799000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 183556800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 199285199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 199285200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 215611199000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 215611200000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 230734799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 230734800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 247060799000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 247060800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 262789199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 262789200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 278510399000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 278510400000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 294238799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 294238800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 309959999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 309960000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 325688399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 325688400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 341409599000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 341409600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 357137999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 357138000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 372859199000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 372859200000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 388587599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 388587600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 404913599000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 404913600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 420037199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 420037200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "BDT"}, 436363199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 436363200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 439030799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 439030800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 452084399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 452084400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 467805599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 467805600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 483533999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 483534000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 499255199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 499255200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 514983599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 514983600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 530704799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 530704800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 544618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 544618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 562154399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 562154400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 576068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 576068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 594208799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 594208800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 607517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 607518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 625658399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 625658400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 638967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 638967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 657107999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 657108000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 671021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 671022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 688557599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 688557600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 702471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 702471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 720007199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 720007200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 733921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 733921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 752061599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 752061600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 765370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 765370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 783511199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 783511200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 796820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 796820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 814960799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 814960800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 828874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 828874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 846410399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 846410400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 860324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 860324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 877859999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 877860000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 891773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 891774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 909309599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 909309600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 923223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 923223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 941363999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 941364000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 954673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 954673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 972813599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 972813600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 986122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 986122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1004263199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1004263200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1018177199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1018177200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1035712799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1035712800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1049626799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1049626800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1067162399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1067162400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1081076399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1081076400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1099216799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1099216800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1112525999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1112526000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1130666399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1130666400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1143975599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1143975600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1162115999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1162116000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1173610799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1173610800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1194170399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1194170400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1205060399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1205060400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1225619999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1225620000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1236509999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1236510000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1257069599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1257069600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1268564399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1268564400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1289123999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1289124000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1300013999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1300014000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1320573599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1320573600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1331463599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1331463600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1352023199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1352023200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1362913199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1362913200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1383472799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1383472800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1394362799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1394362800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1414922399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1414922400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1425812399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1425812400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1446371999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1446372000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1457866799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1457866800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1478426399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1478426400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1489316399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1489316400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1509875999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1509876000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1520765999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1520766000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1541325599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1541325600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1552215599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1552215600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1572775199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1572775200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1583665199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1583665200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1604224799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1604224800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1615719599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1615719600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1636279199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1636279200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1647169199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1647169200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1667728799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1667728800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1678618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1678618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1699178399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1699178400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1710068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1710068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1730627999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1730628000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1741517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1741518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1762077599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1762077600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1772967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1772967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1793527199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1793527200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1805021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1805022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1825581599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1825581600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1836471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1836471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1857031199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1857031200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1867921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1867921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1888480799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1888480800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1899370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1899370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1919930399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1919930400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1930820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1930820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1951379999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1951380000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1962874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1962874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1983434399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1983434400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1994324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1994324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2014883999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2014884000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2025773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2025774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2046333599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2046333600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2057223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2057223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2077783199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2077783200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2088673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2088673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2109232799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2109232800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2120122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2120122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2140682399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2140682400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Noronha.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Noronha.json new file mode 100644 index 0000000..ce4c3c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Noronha.json @@ -0,0 +1,90 @@ +({ + name: "date.timezone.America-Noronha", + runTest: function(t){ + var tz = "America/Noronha"; + doh.checkDate({tzOffset: 129.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 129.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 129.666666666667, tzAbbr: "LMT"}, -1767217821000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -1767217820000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -1206961201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -1206961200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -1191366001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -1191366000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -1175378401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -1175378400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -1159830001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -1159830000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -633823201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -633823200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -622072801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -622072800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -602287201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -602287200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -591836401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -591836400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -570751201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -570751200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -560214001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -560214000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -539128801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -539128800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -531356401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -531356400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -191368801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -191368800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -184201201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -184201200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -155167201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -155167200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -150073201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -150073200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -128901601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -128901600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -121129201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -121129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -99957601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -99957600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -89593201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -89593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -68421601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -68421600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, -57970801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, -57970800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 499744799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 499744800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 511232399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 511232400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 530589599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 530589600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 540262799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 540262800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 562125599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 562125600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 571193999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 571194000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 592970399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 592970400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 602038799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 602038800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 624419999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 624420000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 634697999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 634698000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 938915999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 938916000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 951613199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 951613200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 970970399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 970970400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 971571599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 971571600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 1003024799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 1003024800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "FNST"}, 1013907599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 1013907600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 120, tzAbbr: "FNT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-North_Dakota-Center.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-North_Dakota-Center.json new file mode 100644 index 0000000..95a7868 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-North_Dakota-Center.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.America-North_Dakota-Center", + runTest: function(t){ + var tz = "America/North_Dakota/Center"; + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1633273201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1633273200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1615132801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1615132800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1601823601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1601823600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1583683201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1583683200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -84380401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -84380400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -52930801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -52930800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -37209601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -37209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -21481201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -21481200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -5760001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -5760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 9968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 9968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 25689599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 25689600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 41417999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 41418000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 57743999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 57744000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 73472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 73472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 89193599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 89193600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 104921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 104922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 120643199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 120643200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 126694799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 126694800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 152092799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 152092800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 162377999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 162378000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 183542399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 183542400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 199270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 199270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 215596799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 215596800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 230720399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 230720400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 247046399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 247046400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 262774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 262774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 278495999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 278496000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 294224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 294224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 309945599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 309945600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004252399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004252400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-North_Dakota-New_Salem.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-North_Dakota-New_Salem.json new file mode 100644 index 0000000..a0d0c45 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-North_Dakota-New_Salem.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.America-North_Dakota-New_Salem", + runTest: function(t){ + var tz = "America/North_Dakota/New_Salem"; + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1633273201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1633273200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1615132801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1615132800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1601823601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1601823600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1583683201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1583683200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -84380401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -84380400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -52930801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -52930800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -37209601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -37209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -21481201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -21481200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -5760001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -5760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 9968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 9968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 25689599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 25689600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 41417999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 41418000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 57743999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 57744000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 73472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 73472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 89193599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 89193600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 104921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 104922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 120643199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 120643200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 126694799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 126694800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 152092799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 152092800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 162377999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 162378000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 183542399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 183542400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 199270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 199270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 215596799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 215596800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 230720399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 230720400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 247046399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 247046400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 262774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 262774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 278495999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 278496000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 294224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 294224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 309945599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 309945600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Panama.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Panama.json new file mode 100644 index 0000000..8012835 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Panama.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Panama", + runTest: function(t){ + var tz = "America/Panama"; + doh.checkDate({tzOffset: 319.6, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 319.6, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 319.6, tzAbbr: "CMT"}, -1946918425000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1946918424000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Pangnirtung.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Pangnirtung.json new file mode 100644 index 0000000..ef5eb06 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Pangnirtung.json @@ -0,0 +1,256 @@ +({ + name: "date.timezone.America-Pangnirtung", + runTest: function(t){ + var tz = "America/Pangnirtung"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -1546300801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1546300800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -880221601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -880221600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -765399601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -765399600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -147902401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ADDT"}, -147902400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ADDT"}, -131572801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -131572800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 325663199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 325663200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 341384399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 341384400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 357112799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 357112800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 372833999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 372834000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 388562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 388562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 404888399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 404888400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 420011999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 420012000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 436337999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 436338000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 452066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 452066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 467787599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 467787600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 483515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 483516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 499237199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 499237200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 514965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 514965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 530686799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 530686800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 544600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 544600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 562136399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 562136400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 576050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 576050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 594190799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 594190800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 607499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 607500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 625640399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 625640400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 638949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 638949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 657089999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 657090000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 671003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 671004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 688539599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 688539600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 702453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 702453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 719989199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 719989200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 733903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 733903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 752043599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 752043600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 765352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 765352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 783493199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 783493200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 796802399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796802400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Paramaribo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Paramaribo.json new file mode 100644 index 0000000..253980d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Paramaribo.json @@ -0,0 +1,22 @@ +({ + name: "date.timezone.America-Paramaribo", + runTest: function(t){ + var tz = "America/Paramaribo"; + doh.checkDate({tzOffset: 220.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 220.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 220.666666666667, tzAbbr: "LMT"}, -1861906761000, tz, 1); + doh.checkDate({tzOffset: 220.866666666667, tzAbbr: "PMT"}, -1861906760000, tz, 1); + doh.checkDate({tzOffset: 220.866666666667, tzAbbr: "PMT"}, -1104524349000, tz, 1); + doh.checkDate({tzOffset: 220.6, tzAbbr: "PMT"}, -1104524348000, tz, 1); + doh.checkDate({tzOffset: 220.6, tzAbbr: "PMT"}, -765317965000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NEGT"}, -765317964000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NEGT"}, 185686199000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "SRT"}, 185686200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "SRT"}, 465449399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "SRT"}, 465449400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "SRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "SRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "SRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "SRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Phoenix.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Phoenix.json new file mode 100644 index 0000000..7711be9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Phoenix.json @@ -0,0 +1,32 @@ +({ + name: "date.timezone.America-Phoenix", + runTest: function(t){ + var tz = "America/Phoenix"; + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1633273201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1633273200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1615132801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1615132800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1601823601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1601823600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1583683201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1583683200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -820519141000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -820519140000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -812653141000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -812653140000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -796845541000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -796845540000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -84380401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -84380400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Port-au-Prince.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Port-au-Prince.json new file mode 100644 index 0000000..7c86ad2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Port-au-Prince.json @@ -0,0 +1,82 @@ +({ + name: "date.timezone.America-Port-au-Prince", + runTest: function(t){ + var tz = "America/Port-au-Prince"; + doh.checkDate({tzOffset: 289, tzAbbr: "PPMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 289, tzAbbr: "PPMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 289, tzAbbr: "PPMT"}, -1670483461000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1670483460000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 421217999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 421218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436334399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436334400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452062799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452062800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467783999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467784000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483512399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483512400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499233599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499233600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514961999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514962000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530683199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530683200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 546411599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 546411600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576050399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576050400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607499999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607500000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638949599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638949600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671003999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671004000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702453599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702453600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733903199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733903200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765352799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765352800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796802399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796802400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828856799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828856800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860306399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860306400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112504399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112504400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130644799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130644800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143953999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143954000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162094399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162094400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Port_of_Spain.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Port_of_Spain.json new file mode 100644 index 0000000..d22b365 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Port_of_Spain.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Port_of_Spain", + runTest: function(t){ + var tz = "America/Port_of_Spain"; + doh.checkDate({tzOffset: 246.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 246.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 246.066666666667, tzAbbr: "LMT"}, -1825098837000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1825098836000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Porto_Velho.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Porto_Velho.json new file mode 100644 index 0000000..e73aabf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Porto_Velho.json @@ -0,0 +1,70 @@ +({ + name: "date.timezone.America-Porto_Velho", + runTest: function(t){ + var tz = "America/Porto_Velho"; + doh.checkDate({tzOffset: 255.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 255.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 255.6, tzAbbr: "LMT"}, -1767210265000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1767210264000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1206954001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1206954000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1191358801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1191358800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1175371201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1175371200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1159822801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1159822800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -633816001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -633816000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -622065601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -622065600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -602280001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -602280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -591829201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -591829200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -570744001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -570744000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -560206801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -560206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -539121601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -539121600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -531349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -531349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -191361601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -191361600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -155160001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -155160000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -150066001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -150066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -128894401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -128894400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -99950401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -99950400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -89586001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -89586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -68414401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -68414400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -57963601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -57963600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 499751999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 499752000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 511239599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 511239600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 530596799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 530596800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 540269999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 540270000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 571201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 571201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Puerto_Rico.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Puerto_Rico.json new file mode 100644 index 0000000..3c8d08f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Puerto_Rico.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.America-Puerto_Rico", + runTest: function(t){ + var tz = "America/Puerto_Rico"; + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -873057601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -873057600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "APT"}, -765399601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -765399600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rainy_River.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rainy_River.json new file mode 100644 index 0000000..8a9820a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rainy_River.json @@ -0,0 +1,280 @@ +({ + name: "date.timezone.America-Rainy_River", + runTest: function(t){ + var tz = "America/Rainy_River"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1632067201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1632067200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1614790801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1614790800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -923248801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -923248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 136367999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 136368000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 167817599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 167817600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183538799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183538800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215593199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215593200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247042799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 247042800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 262771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 262771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 278492399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 278492400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 294220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 294220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 309941999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 309942000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719996399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 719996400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004252399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004252400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rankin_Inlet.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rankin_Inlet.json new file mode 100644 index 0000000..d1b840c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rankin_Inlet.json @@ -0,0 +1,250 @@ +({ + name: "date.timezone.America-Rankin_Inlet", + runTest: function(t){ + var tz = "America/Rankin_Inlet"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -410227201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -410227200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -147895201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDDT"}, -147895200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDDT"}, -131565601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -131565600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719996399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 719996400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004252399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004252400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Recife.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Recife.json new file mode 100644 index 0000000..49d3204 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Recife.json @@ -0,0 +1,90 @@ +({ + name: "date.timezone.America-Recife", + runTest: function(t){ + var tz = "America/Recife"; + doh.checkDate({tzOffset: 139.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 139.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 139.6, tzAbbr: "LMT"}, -1767217225000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1767217224000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1206957601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1206957600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1191362401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1191362400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1175374801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1175374800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1159826401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1159826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -633819601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -633819600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -622069201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -622069200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -602283601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -602283600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -570747601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -570747600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -560210401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -560210400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -539125201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -539125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -531352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -531352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -191365201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -191365200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -184197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -184197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -155163601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -155163600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -150069601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -150069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -128898001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -128898000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -121125601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -121125600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -99954001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -99954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -89589601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -89589600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -68418001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -68418000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -57967201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -57967200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 499748399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 499748400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 511235999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 511236000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 530593199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 530593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 540266399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 540266400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 562129199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 562129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 571197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 571197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 592973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 592974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 602042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 602042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 634701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 634701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 951616799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 951616800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 970973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 970974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 971575199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 971575200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1003028399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1003028400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1013911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1013911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Regina.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Regina.json new file mode 100644 index 0000000..05ae97e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Regina.json @@ -0,0 +1,118 @@ +({ + name: "date.timezone.America-Regina", + runTest: function(t){ + var tz = "America/Regina"; + doh.checkDate({tzOffset: 418.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 418.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 418.6, tzAbbr: "LMT"}, -2030202085000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2030202084000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1632063601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1632063600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1614787201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1614787200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1251651601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1251651600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1238349601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1238349600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1220202001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1220202000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1206900001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1206900000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1188752401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1188752400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1175450401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1175450400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1156698001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1156698000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1144000801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1144000800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1125248401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1125248400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1111946401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1111946400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1032714001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1032714000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1016992801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1016992800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1001264401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1001264400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -986148001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -986148000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -969814801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -969814800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -954093601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -954093600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -937760401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -937760400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -922039201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -922039200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -906310801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -906310800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -890589601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -890589600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -748450801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -748450800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -732729601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -732729600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -715791601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -715791600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -702489601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -702489600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -684342001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -684342000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -671040001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -671040000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -652892401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -652892400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -639590401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -639590400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -620838001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -620838000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -608140801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -608140800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -589388401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -589388400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -576086401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -576086400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -557938801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -557938800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -544636801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -544636800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -526489201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -526489200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -513187201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -513187200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -495039601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -495039600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -481737601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -481737600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -463590001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -463590000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -450288001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -450288000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -431535601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -431535600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -418233601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -418233600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -400086001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -400086000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -386784001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -386784000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -337186801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -337186800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -321465601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -321465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -305737201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305737200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Resolute.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Resolute.json new file mode 100644 index 0000000..e402249 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Resolute.json @@ -0,0 +1,250 @@ +({ + name: "date.timezone.America-Resolute", + runTest: function(t){ + var tz = "America/Resolute"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -704937601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -704937600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -147895201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDDT"}, -147895200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CDDT"}, -131565601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -131565600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719996399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 719996400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004252399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004252400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rio_Branco.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rio_Branco.json new file mode 100644 index 0000000..21efaf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Rio_Branco.json @@ -0,0 +1,72 @@ +({ + name: "date.timezone.America-Rio_Branco", + runTest: function(t){ + var tz = "America/Rio_Branco"; + doh.checkDate({tzOffset: 271.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 271.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 271.2, tzAbbr: "LMT"}, -1767209329000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1767209328000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1206950401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1206950400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1191355201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1191355200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1175367601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1175367600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -1159819201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -1159819200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -633812401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -633812400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -622062001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -622062000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -602276401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -602276400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -591825601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -591825600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -570740401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -570740400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -560203201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -560203200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -539118001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -539118000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -531345601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -531345600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -191358001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -191358000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -184190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -184190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -155156401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -155156400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -150062401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -150062400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -128890801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -128890800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -121118401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -121118400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -99946801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -99946800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -89582401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -89582400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -68410801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -68410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, -57960001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, -57960000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 499755599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 499755600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 511243199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 511243200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 530600399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 530600400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 540273599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 540273600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 562136399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 562136400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ACST"}, 571204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 571204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ACT"}, 1214283599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1214283600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santarem.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santarem.json new file mode 100644 index 0000000..7cdf912 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santarem.json @@ -0,0 +1,72 @@ +({ + name: "date.timezone.America-Santarem", + runTest: function(t){ + var tz = "America/Santarem"; + doh.checkDate({tzOffset: 218.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 218.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 218.8, tzAbbr: "LMT"}, -1767212473000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1767212472000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1206954001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1206954000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1191358801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1191358800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1175371201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1175371200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -1159822801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -1159822800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -633816001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -633816000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -622065601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -622065600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -602280001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -602280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -591829201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -591829200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -570744001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -570744000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -560206801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -560206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -539121601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -539121600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -531349201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -531349200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -191361601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -191361600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -184194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -184194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -155160001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -155160000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -150066001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -150066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -128894401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -128894400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -99950401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -99950400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -89586001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -89586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -68414401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -68414400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, -57963601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, -57963600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 499751999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 499752000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 511239599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 511239600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 530596799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 530596800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 540269999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 540270000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 562132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 562132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "AMST"}, 571201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 571201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AMT"}, 1214279999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1214280000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santiago.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santiago.json new file mode 100644 index 0000000..7b3557d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santiago.json @@ -0,0 +1,328 @@ +({ + name: "date.timezone.America-Santiago", + runTest: function(t){ + var tz = "America/Santiago"; + doh.checkDate({tzOffset: 282.766666666667, tzAbbr: "SMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 282.766666666667, tzAbbr: "SMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 282.766666666667, tzAbbr: "SMT"}, -1893439035000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1893439034000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1688410801000, tz, 1); + doh.checkDate({tzOffset: 282.766666666667, tzAbbr: "SMT"}, -1688410800000, tz, 1); + doh.checkDate({tzOffset: 282.766666666667, tzAbbr: "SMT"}, -1619983035000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, -1619983034000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, -1593806401000, tz, 1); + doh.checkDate({tzOffset: 282.766666666667, tzAbbr: "SMT"}, -1593806400000, tz, 1); + doh.checkDate({tzOffset: 282.766666666667, tzAbbr: "SMT"}, -1335986235000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1335986234000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1317585601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1317585600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1304362801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1304362800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1286049601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1286049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1272826801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1272826800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1254513601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1254513600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1241290801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1241290800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1222977601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1222977600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1209754801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1209754800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1191355201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1191355200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -1178132401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -1178132400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -870552001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -870552000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -865278001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -865278000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLST"}, -736376401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -736376400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CLT"}, -713646001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, -713646000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, -36619201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, -36619200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, -23922001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, -23922000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, -3355201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, -3355200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 7527599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 7527600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 24465599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 24465600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 37767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 37767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 55915199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 55915200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 69217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 69217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 87969599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 87969600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 100666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 100666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 118209599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 118209600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 132116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 132116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 150868799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 150868800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 163565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 163566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 182318399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 182318400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 195620399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 195620400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 213767999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 213768000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 227069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 227070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 245217599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 245217600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 258519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 258519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 277271999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 277272000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 289969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 289969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 308721599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 308721600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 321418799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 321418800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 340171199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 340171200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 353473199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 353473200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 371620799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 371620800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 384922799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 384922800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 403070399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 403070400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 416372399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 416372400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 434519999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 434520000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 447821999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 447822000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 466574399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 466574400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 479271599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 479271600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 498023999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 498024000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 510721199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 510721200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 529473599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 529473600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 545194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 545194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 560923199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 560923200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 574225199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 574225200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 591767999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 591768000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 605674799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 605674800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 624427199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 624427200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 637729199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 637729200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 653457599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 653457600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 668573999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 668574000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 687326399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 687326400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 700628399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 700628400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 718775999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 718776000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 732077999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 732078000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 750225599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 750225600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 763527599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 763527600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 781675199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 781675200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 794977199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 794977200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 813729599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 813729600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 826426799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 826426800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 845179199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 845179200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 859690799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 859690800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 876628799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 876628800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 889930799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 889930800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 906868799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 906868800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 923194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 923194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 939527999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 939528000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 952829999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 952830000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 971582399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 971582400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 984279599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 984279600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1003031999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1003032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1015729199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1015729200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1034481599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1034481600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1047178799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1047178800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1065931199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1065931200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1079233199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1079233200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1097380799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1097380800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1110682799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1110682800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1128830399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1128830400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1142132399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1142132400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1160884799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1160884800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1173581999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1173582000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1192334399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1192334400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1206845999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1206846000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1223783999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1223784000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1237085999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1237086000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1255233599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1255233600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1268535599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1268535600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1286683199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1286683200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1299985199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1299985200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1318132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1318132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1331434799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1331434800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1350187199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1350187200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1362884399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1362884400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1381636799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1381636800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1394333999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1394334000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1413086399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1413086400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1426388399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1426388400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1444535999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1444536000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1457837999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1457838000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1475985599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1475985600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1489287599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1489287600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1508039999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1508040000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1520737199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1520737200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1539489599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1539489600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1552186799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1552186800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1570939199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1570939200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1584241199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1584241200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1602388799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1602388800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1615690799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1615690800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1633838399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1633838400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1647140399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1647140400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1665287999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1665288000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1678589999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1678590000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1697342399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1697342400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1710039599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1710039600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1728791999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1728792000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1741489199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1741489200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1760241599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1760241600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1773543599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1773543600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1791691199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1791691200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1804993199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1804993200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1823140799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1823140800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1836442799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1836442800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1855195199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1855195200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1867892399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1867892400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1886644799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1886644800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1899341999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1899342000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1918094399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1918094400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1930791599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1930791600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1949543999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1949544000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1962845999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1962846000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1980993599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1980993600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1994295599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1994295600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2012443199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2012443200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2025745199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2025745200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2044497599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2044497600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2057194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2057194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2075947199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2075947200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2088644399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2088644400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2107396799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2107396800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2120698799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2120698800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2138846399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2138846400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santo_Domingo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santo_Domingo.json new file mode 100644 index 0000000..8f6164b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Santo_Domingo.json @@ -0,0 +1,44 @@ +({ + name: "date.timezone.America-Santo_Domingo", + runTest: function(t){ + var tz = "America/Santo_Domingo"; + doh.checkDate({tzOffset: 280, tzAbbr: "SDMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 280, tzAbbr: "SDMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 280, tzAbbr: "SDMT"}, -1159773601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1159773600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -100119601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -100119600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -89668801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -89668800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5770801000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, -5770800000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 4422599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 4422600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25678799000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 25678800000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 33193799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 33193800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57733199000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 57733200000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 64816199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 64816200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89182799000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 89182800000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 96438599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 96438600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120632399000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 120632400000, tz, 1); + doh.checkDate({tzOffset: 270, tzAbbr: "EHDT"}, 127974599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 127974600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152081999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 152082000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 975823199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 975823200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Sao_Paulo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Sao_Paulo.json new file mode 100644 index 0000000..82a5a68 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Sao_Paulo.json @@ -0,0 +1,268 @@ +({ + name: "date.timezone.America-Sao_Paulo", + runTest: function(t){ + var tz = "America/Sao_Paulo"; + doh.checkDate({tzOffset: 186.466666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 186.466666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 186.466666666667, tzAbbr: "LMT"}, -1767214413000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1767214412000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1206957601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1206957600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1191362401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1191362400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1175374801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1175374800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -1159826401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -1159826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -633819601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -633819600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -622069201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -622069200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -602283601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -602283600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -570747601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -570747600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -560210401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -560210400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -539125201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -539125200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -531352801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -531352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -195426001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -195426000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -184197601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -184197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -155163601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -155163600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -150069601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -150069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -128898001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -128898000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -121125601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -121125600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -99954001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -99954000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -89589601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -89589600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -68418001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -68418000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, -57967201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, -57967200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 499748399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 499748400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 511235999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 511236000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 530593199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 530593200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 540266399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 540266400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 562129199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 562129200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 571197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 571197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 592973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 592974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 602042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 602042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 624423599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 624423600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 634701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 634701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 656477999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 656478000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 666755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 666756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 687927599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 687927600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 697600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 697600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 719981999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 719982000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 728445599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 728445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 750826799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 750826800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 761709599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 761709600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 782276399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 782276400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 793159199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 793159200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 813725999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 813726000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 824003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 824004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 844570799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 844570800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 856058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 856058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 876106799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 876106800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 888717599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 888717600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 908074799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 908074800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 919562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 919562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 938919599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 938919600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 951616799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 951616800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 970973999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 970974000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 982461599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 982461600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1003028399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1003028400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1013911199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1013911200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1036292399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1036292400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1045360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1045360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1066532399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1066532400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1076810399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1076810400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1099364399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1099364400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1108864799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1108864800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1129431599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1129431600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1140314399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1140314400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1162695599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1162695600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1172368799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1172368800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1192330799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1192330800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1203213599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1203213600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1224385199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1224385200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1234663199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1234663200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1255834799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1255834800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1266717599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1266717600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1287284399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1287284400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1298167199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1298167200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1318733999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1318734000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1330221599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1330221600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1350788399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1350788400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1361066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1361066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1382237999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1382238000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1392515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1392516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1413687599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1413687600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1424570399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1424570400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1445137199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1445137200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1456019999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1456020000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1476586799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1476586800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1487469599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1487469600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1508036399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1508036400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1518919199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1518919200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1540090799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1540090800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1550368799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1550368800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1571540399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1571540400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1581818399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1581818400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1602989999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1602990000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1613872799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1613872800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1634439599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1634439600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1645322399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1645322400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1665889199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1665889200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1677376799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1677376800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1697338799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1697338800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1708221599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1708221600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1729393199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1729393200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1739671199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1739671200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1760842799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1760842800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1771725599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1771725600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1792292399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1792292400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1803175199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1803175200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1823741999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1823742000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1834624799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1834624800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1855191599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1855191600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1866074399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1866074400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1887245999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1887246000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1897523999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1897524000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1918695599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1918695600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1928973599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1928973600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1950145199000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1950145200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1960423199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1960423200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1981594799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1981594800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1992477599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1992477600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2013044399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2013044400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2024531999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2024532000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2044493999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2044494000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2055376799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2055376800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2076548399000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2076548400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2086826399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2086826400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2107997999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2107998000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2118880799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2118880800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 2139447599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2139447600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "BRST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "BRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Scoresbysund.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Scoresbysund.json new file mode 100644 index 0000000..95841a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Scoresbysund.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.America-Scoresbysund", + runTest: function(t){ + var tz = "America/Scoresbysund"; + doh.checkDate({tzOffset: 87.8666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 87.8666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 87.8666666666667, tzAbbr: "LMT"}, -1686090729000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CGT"}, -1686090728000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CGT"}, 323841599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CGST"}, 323841600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CGST"}, 338961599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CGT"}, 338961600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CGT"}, 354679199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 354679200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "EGT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "EGST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Johns.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Johns.json new file mode 100644 index 0000000..eea742d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Johns.json @@ -0,0 +1,488 @@ +({ + name: "date.timezone.America-St_Johns", + runTest: function(t){ + var tz = "America/St_Johns"; + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1664130549000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1664130548000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1650137349000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1650137348000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1632076149000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1632076148000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1614799749000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1614799748000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1598650149000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1598650148000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1590100149000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1590100148000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1567286949000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1567286948000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1551565749000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1551565748000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1535837349000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1535837348000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1520116149000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1520116148000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1503782949000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1503782948000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1488666549000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1488666548000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1472333349000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1472333348000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1457216949000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1457216948000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1440883749000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1440883748000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1425767349000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1425767348000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1409434149000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1409434148000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1394317749000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1394317748000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1377984549000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1377984548000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1362263349000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1362263348000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1346534949000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1346534948000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1330813749000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1330813748000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1314480549000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1314480548000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1299364149000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1299364148000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1283030949000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1283030948000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1267914549000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1267914548000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1251581349000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1251581348000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1236464949000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1236464948000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1220131749000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1220131748000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1205015349000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1205015348000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1188682149000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1188682148000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1172960949000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1172960948000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1156627749000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1156627748000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1141511349000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1141511348000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1125178149000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1125178148000, tz, 1); + doh.checkDate({tzOffset: 150.866666666667, tzAbbr: "NDT"}, -1110061749000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1110061748000, tz, 1); + doh.checkDate({tzOffset: 210.866666666667, tzAbbr: "NST"}, -1096921749000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1096921748000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1093728601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1093728600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1078612201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1078612200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1061670601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1061670600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1048973401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1048973400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1030221001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1030221000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -1017523801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -1017523800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -998771401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -998771400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -986074201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -986074200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -966717001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -966717000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -954624601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -954624600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -935267401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -935267400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -922570201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -922570200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -903817801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -903817800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -891120601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -891120600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -872368201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NWT"}, -872368200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NPT"}, -765401401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -765401400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -746044201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -746044200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -733347001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -733347000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -714594601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -714594600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -701897401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -701897400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -683145001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -683145000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -670447801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -670447800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -651695401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -651695400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -638998201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -638998200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -619641001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -619641000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -606943801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -606943800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -589401001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -589401000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -576099001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -576099000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -557951401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -557951400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -544649401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -544649400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -526501801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -526501800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -513199801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -513199800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -495052201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -495052200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -481750201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -481750200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -463602601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -463602600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -450300601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -450300600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -431548201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -431548200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -418246201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -418246200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -400098601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -400098600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -386796601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -386796600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -368649001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -368649000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -355347001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -355347000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -337199401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -337199400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -323897401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -323897400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -305749801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -305749800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -289423801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -289423800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -273695401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -273695400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -257974201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -257974200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -242245801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -242245800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -226524601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -226524600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -210796201000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -210796200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -195075001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -195075000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -179346601000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -179346600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -163625401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -163625400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -147897001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -147897000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -131571001000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -131571000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -116447401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -116447400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -100121401000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -100121400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -84393001000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -84393000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -68671801000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -68671800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -52943401000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -52943400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -37222201000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -37222200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -21493801000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -21493800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, -5772601000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, -5772600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 9955799000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 9955800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 25676999000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 25677000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 41405399000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 41405400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 57731399000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 57731400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 73459799000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 73459800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 89180999000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 89181000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 104909399000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 104909400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 120630599000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 120630600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 136358999000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 136359000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 152080199000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 152080200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 167808599000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 167808600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 183529799000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 183529800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 199258199000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 199258200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 215584199000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 215584200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 230707799000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 230707800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 247033799000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 247033800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 262762199000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 262762200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 278483399000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 278483400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 294211799000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 294211800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 309932999000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 309933000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 325661399000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 325661400000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 341382599000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 341382600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 357110999000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 357111000000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 372832199000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 372832200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 388560599000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 388560600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 404886599000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 404886600000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 420010199000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 420010200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 436336199000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 436336200000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 452064599000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 452064600000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 467785799000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 467785800000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 483514199000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 483514200000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 499235399000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 499235400000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 514963799000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 514963800000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 530684999000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 530685000000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 544591859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 544591860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 562127459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 562127460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 576041459000, tz, 1); + doh.checkDate({tzOffset: 90, tzAbbr: "NDDT"}, 576041460000, tz, 1); + doh.checkDate({tzOffset: 90, tzAbbr: "NDDT"}, 594178259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 594178260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 607491059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 607491060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 625631459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 625631460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 638940659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 638940660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 657081059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 657081060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 670995059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 670995060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 688530659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 688530660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 702444659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 702444660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 719980259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 719980260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 733894259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 733894260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 752034659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 752034660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 765343859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 765343860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 783484259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 783484260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 796793459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 796793460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 814933859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 814933860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 828847859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 828847860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 846383459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 846383460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 860297459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 860297460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 877833059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 877833060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 891747059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 891747060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 909282659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 909282660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 923196659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 923196660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 941337059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 941337060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 954646259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 954646260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 972786659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 972786660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 986095859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 986095860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1004236259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1004236260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1018150259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1018150260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1035685859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1035685860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1049599859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1049599860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1067135459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1067135460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1081049459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1081049460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1099189859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1099189860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1112499059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1112499060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1130639459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1130639460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1143948659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1143948660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1162089059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1162089060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1173583859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1173583860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1194143459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1194143460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1205033459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1205033460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1225593059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1225593060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1236483059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1236483060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1257042659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1257042660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1268537459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1268537460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1289097059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1289097060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1299987059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1299987060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1320546659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1320546660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1331436659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1331436660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1351996259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1351996260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1362886259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1362886260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1383445859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1383445860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1394335859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1394335860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1414895459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1414895460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1425785459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1425785460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1446345059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1446345060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1457839859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1457839860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1478399459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1478399460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1489289459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1489289460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1509849059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1509849060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1520739059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1520739060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1541298659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1541298660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1552188659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1552188660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1572748259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1572748260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1583638259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1583638260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1604197859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1604197860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1615692659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1615692660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1636252259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1636252260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1647142259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1647142260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1667701859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1667701860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1678591859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1678591860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1699151459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1699151460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1710041459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1710041460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1730601059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1730601060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1741491059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1741491060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1762050659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1762050660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1772940659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1772940660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1793500259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1793500260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1804995059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1804995060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1825554659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1825554660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1836444659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1836444660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1857004259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1857004260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1867894259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1867894260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1888453859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1888453860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1899343859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1899343860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1919903459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1919903460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1930793459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1930793460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1951353059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1951353060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1962847859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1962847860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1983407459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1983407460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1994297459000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1994297460000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2014857059000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2014857060000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2025747059000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2025747060000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2046306659000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2046306660000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2057196659000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2057196660000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2077756259000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2077756260000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2088646259000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2088646260000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2109205859000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2109205860000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2120095859000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2120095860000, tz, 1); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 2140655459000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2140655460000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 210, tzAbbr: "NST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 150, tzAbbr: "NDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Kitts.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Kitts.json new file mode 100644 index 0000000..b0c5208 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Kitts.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-St_Kitts", + runTest: function(t){ + var tz = "America/St_Kitts"; + doh.checkDate({tzOffset: 250.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 250.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 250.866666666667, tzAbbr: "LMT"}, -1825098549000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1825098548000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Lucia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Lucia.json new file mode 100644 index 0000000..0f3e54c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Lucia.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-St_Lucia", + runTest: function(t){ + var tz = "America/St_Lucia"; + doh.checkDate({tzOffset: 244, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 244, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 244, tzAbbr: "CMT"}, -1830369361000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1830369360000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Thomas.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Thomas.json new file mode 100644 index 0000000..9cceb0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Thomas.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-St_Thomas", + runTest: function(t){ + var tz = "America/St_Thomas"; + doh.checkDate({tzOffset: 259.733333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 259.733333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 259.733333333333, tzAbbr: "LMT"}, -1846266017000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1846266016000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Vincent.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Vincent.json new file mode 100644 index 0000000..daff3c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-St_Vincent.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-St_Vincent", + runTest: function(t){ + var tz = "America/St_Vincent"; + doh.checkDate({tzOffset: 244.933333333333, tzAbbr: "KMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 244.933333333333, tzAbbr: "KMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 244.933333333333, tzAbbr: "KMT"}, -1830369305000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1830369304000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Swift_Current.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Swift_Current.json new file mode 100644 index 0000000..b0e7c1f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Swift_Current.json @@ -0,0 +1,58 @@ +({ + name: "date.timezone.America-Swift_Current", + runTest: function(t){ + var tz = "America/Swift_Current"; + doh.checkDate({tzOffset: 431.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 431.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 431.333333333333, tzAbbr: "LMT"}, -2030201321000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2030201320000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1632063601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1632063600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1614787201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1614787200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -747241201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -747241200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -732729601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -732729600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -715791601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -715791600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -702489601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -702489600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -684342001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -684342000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -671040001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -671040000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -652892401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -652892400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -639590401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -639590400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -400086001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -400086000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -384364801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -384364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -337186801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -337186800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -321465601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -321465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -305737201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -305737200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -292435201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -292435200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -273682801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -273682800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -260985601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -260985600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 73472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 73472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tegucigalpa.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tegucigalpa.json new file mode 100644 index 0000000..f175a98 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tegucigalpa.json @@ -0,0 +1,26 @@ +({ + name: "date.timezone.America-Tegucigalpa", + runTest: function(t){ + var tz = "America/Tegucigalpa"; + doh.checkDate({tzOffset: 348.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 348.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 348.866666666667, tzAbbr: "LMT"}, -1538503869000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1538503868000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 547019999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 547020000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 559717199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 559717200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 578469599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 578469600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 591166799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 591166800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1146981599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1146981600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1154926799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1154926800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Thule.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Thule.json new file mode 100644 index 0000000..05867fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Thule.json @@ -0,0 +1,202 @@ +({ + name: "date.timezone.America-Thule", + runTest: function(t){ + var tz = "America/Thule"; + doh.checkDate({tzOffset: 275.133333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 275.133333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 275.133333333333, tzAbbr: "LMT"}, -1686079493000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1686079492000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 670399199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 670399200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 686120399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 686120400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 701848799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 701848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 717569999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 717570000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 733903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 733903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 752043599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 752043600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 765352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 765352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 783493199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 783493200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 796802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 796802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 814942799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 814942800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 828856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 828856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 846392399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 846392400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 860306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 860306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 877841999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 877842000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 891755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 891756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 909291599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 909291600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 923205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 923205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 941345999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 941346000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 954655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 954655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 972795599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 972795600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 986104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 986104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1004245199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1004245200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1018159199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1018159200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1035694799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1035694800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1049608799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1049608800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1067144399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1067144400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1081058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1081058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1099198799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1099198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1112507999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1112508000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1130648399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1130648400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1143957599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1143957600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1162097999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1162098000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1173592799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1173592800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1194152399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1194152400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1205042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1205042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1225601999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1225602000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1236491999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1236492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1257051599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1257051600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1268546399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1268546400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1289105999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1289106000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1299995999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1299996000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1320555599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1320555600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1331445599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1331445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1352005199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1352005200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1362895199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1362895200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1383454799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1383454800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1394344799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1394344800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1414904399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1414904400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1425794399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1425794400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1446353999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1446354000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1457848799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1457848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1478408399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1478408400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1489298399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1489298400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1509857999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1509858000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1520747999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1520748000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1541307599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1541307600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1552197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1552197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1572757199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1572757200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1583647199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1583647200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1604206799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1604206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1615701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1615701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1636261199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1636261200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1647151199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1647151200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1667710799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1667710800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1678600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1678600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1699160399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1699160400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1710050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1710050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1730609999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1730610000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1741499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1741500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1762059599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1762059600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1772949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1772949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1793509199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1793509200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1805003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1805004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1825563599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1825563600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1836453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1836453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1857013199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1857013200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1867903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1867903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1888462799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1888462800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1899352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1899352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1919912399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1919912400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1930802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1930802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1951361999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1951362000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1962856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1962856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1983416399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1983416400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1994306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1994306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2014865999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2014866000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2025755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2025756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2046315599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2046315600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2057205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2057205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2077765199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2077765200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2088655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2088655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2109214799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2109214800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2120104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2120104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2140664399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2140664400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Thunder_Bay.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Thunder_Bay.json new file mode 100644 index 0000000..032a3a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Thunder_Bay.json @@ -0,0 +1,288 @@ +({ + name: "date.timezone.America-Thunder_Bay", + runTest: function(t){ + var tz = "America/Thunder_Bay"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1893434401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1893434400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -880218001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -880218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 136364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 136364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 167813999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 167814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tijuana.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tijuana.json new file mode 100644 index 0000000..eb46518 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tijuana.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.America-Tijuana", + runTest: function(t){ + var tz = "America/Tijuana"; + doh.checkDate({tzOffset: 468.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 468.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 468.066666666667, tzAbbr: "LMT"}, -1514736001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1514736000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1451667601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1451667600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1343062801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1343062800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1234803601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1234803600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1222963201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1222963200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1207242001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1207242000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -873820801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -873820800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -761677201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -761677200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -686073601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -686073600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -661539601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -661539600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -495036001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -495036000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -481734001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -481734000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -463586401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -463586400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -450284401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -450284400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -431532001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -431532000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -418230001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -418230000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -400082401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -400082400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -386780401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -386780400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -368632801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -368632800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -355330801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -355330800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -337183201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -337183200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -323881201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -323881200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -305733601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -305733600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -292431601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -292431600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 199274399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 199274400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 215600399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 215600400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 230723999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 230724000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 247049999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 247050000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 262778399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 262778400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 278499599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 278499600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 294227999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 294228000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 309949199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 309949200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 325677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 325677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 341398799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 341398800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 357127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 357127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 372848399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 372848400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 388576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 388576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 404902799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 404902800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 420026399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 420026400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 436352399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 436352400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 452080799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 452080800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 467801999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 467802000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 483530399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 483530400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 499251599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 499251600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 514979999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 514980000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 530701199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 530701200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 544615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 544615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 562150799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 562150800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 576064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 576064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 594205199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 594205200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 607514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 607514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 625654799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 625654800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 638963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 638964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 657104399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 657104400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 671018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 671018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 688553999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 688554000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 702467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 702468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 720003599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 720003600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 733917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 733917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 752057999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 752058000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 765367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 765367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 783507599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 783507600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 796816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 796816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 814957199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 814957200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 828871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 828871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 846406799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 846406800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 860320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 860320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 877856399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 877856400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 891770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 891770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 909305999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 909306000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 923219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 923220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 941360399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 941360400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 954669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 954669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 972809999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 972810000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 986119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 986119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1004259599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1004259600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1018173599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1018173600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1035709199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1035709200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1049623199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1049623200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1067158799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1067158800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1081072799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1081072800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1099213199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1099213200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1112522399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1112522400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1130662799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1130662800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1143971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1143972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1162112399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1162112400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1175421599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1175421600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1193561999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1193562000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1207475999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1207476000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1225011599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1225011600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1238925599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1238925600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1256461199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1256461200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1270375199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1270375200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1288515599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1288515600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1301824799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1301824800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1319965199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1319965200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1333274399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1333274400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1351414799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1351414800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1365328799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1365328800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1382864399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1382864400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1396778399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1396778400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1414313999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1414314000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1428227999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1428228000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1445763599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1445763600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1459677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1459677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1477817999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1477818000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1491127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1491127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1509267599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1509267600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1522576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1522576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1540717199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1540717200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1554631199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1554631200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1572166799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1572166800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1586080799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1586080800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1603616399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1603616400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1617530399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1617530400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1635670799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1635670800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1648979999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1648980000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1667120399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1667120400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1680429599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1680429600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1698569999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1698570000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1712483999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1712484000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1730019599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1730019600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1743933599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1743933600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1761469199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1761469200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1775383199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1775383200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1792918799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1792918800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1806832799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1806832800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1824973199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1824973200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1838282399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1838282400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1856422799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1856422800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1869731999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1869732000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1887872399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1887872400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1901786399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1901786400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1919321999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1919322000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1933235999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1933236000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1950771599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1950771600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1964685599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1964685600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1982825999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1982826000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1996135199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1996135200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2014275599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2014275600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2027584799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2027584800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2045725199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2045725200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2059034399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2059034400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2077174799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2077174800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2091088799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2091088800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2108624399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2108624400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2122538399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2122538400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2140073999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2140074000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Toronto.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Toronto.json new file mode 100644 index 0000000..b1b56b1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Toronto.json @@ -0,0 +1,476 @@ +({ + name: "date.timezone.America-Toronto", + runTest: function(t){ + var tz = "America/Toronto"; + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1632070801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1632070800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1614794401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1614794400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1601753401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1601753400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1583697601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1583697600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1567357201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1567357200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1554667201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1554667200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1534698001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1534698000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1524074401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1524074400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1503248401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1503248400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1492365601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1492365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1471798801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1471798800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1460916001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1460916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1440954001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1440954000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1428861601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1428861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1409504401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1409504400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1397412001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1397412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1378054801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1378054800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1365962401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1365962400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1346605201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1346605200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1333908001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1333908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1315155601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1315155600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1301853601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1301853600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1283706001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1283706000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1270404001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1270404000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1252256401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1252256400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1238954401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1238954400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1220806801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1220806800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1207504801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1207504800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1188752401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1188752400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1176055201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1176055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1157302801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1157302800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1144000801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1144000800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1125853201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1125853200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1112551201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1112551200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1094403601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1094403600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1081101601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1081101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1062954001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1062954000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1049652001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1049652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1031504401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1031504400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1018202401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1018202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1000054801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1000054800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -986752801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -986752800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -968000401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -968000400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -955303201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -955303200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -936550801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -936550800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -880218001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -880218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -747248401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -747248400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -733946401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -733946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -715806001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -715806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -702504001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -702504000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -684356401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -684356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -671054401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -671054400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -652906801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -652906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -634161601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -634161600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -620845201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -620845200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -602704801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -602704800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -589395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -589395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -576093601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -576093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -557946001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -557946000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -544644001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -544644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -526496401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -526496400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -513194401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -513194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -495046801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -495046800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -481744801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -481744800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -463597201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -463597200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -450295201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -450295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -431542801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -431542800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -418240801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -418240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -400093201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -400093200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -384372001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -384372000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -368643601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -368643600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -352922401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -352922400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -337194001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -337194000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -321472801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -321472800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -305744401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -305744400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -289418401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -289418400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -273690001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -273690000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -257968801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -257968800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -242240401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -242240400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -226519201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -226519200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -210790801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -210790800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -195069601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -195069600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -179341201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -179341200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -163620001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -163620000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -147891601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -147891600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -131565601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -131565600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -116442001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -116442000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -100116001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -100116000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -84387601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -84387600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -68666401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -68666400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -52938001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -52938000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -37216801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -37216800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 136364399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 136364400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 167813999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 167814000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tortola.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tortola.json new file mode 100644 index 0000000..6cdec8f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Tortola.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.America-Tortola", + runTest: function(t){ + var tz = "America/Tortola"; + doh.checkDate({tzOffset: 258.466666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 258.466666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 258.466666666667, tzAbbr: "LMT"}, -1846266093000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1846266092000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Vancouver.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Vancouver.json new file mode 100644 index 0000000..2a28172 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Vancouver.json @@ -0,0 +1,390 @@ +({ + name: "date.timezone.America-Vancouver", + runTest: function(t){ + var tz = "America/Vancouver"; + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1632060001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1632060000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1614783601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1614783600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -880207201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -880207200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -765385201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -765385200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -747237601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -747237600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -732726001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -732726000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -715788001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -715788000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -702486001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -702486000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -684338401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -684338400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -671036401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -671036400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -652888801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -652888800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -639586801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -639586800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -620834401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -620834400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -608137201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -608137200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -589384801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -589384800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -576082801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -576082800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -557935201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -557935200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -544633201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -544633200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -526485601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -526485600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -513183601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -513183600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -495036001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -495036000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -481734001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -481734000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -463586401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -463586400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -450284401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -450284400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -431532001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -431532000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -418230001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -418230000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -400082401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -400082400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -386780401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -386780400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -368632801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -368632800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -355330801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -355330800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -337183201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -337183200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -323881201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -323881200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -305733601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -305733600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -292431601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -292431600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -273679201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -273679200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -260982001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -260982000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -242229601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -242229600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -226508401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -226508400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -210780001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -210780000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -195058801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -195058800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -179330401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -179330400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -163609201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -163609200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -147880801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -147880800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -131554801000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -131554800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -116431201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -116431200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -100105201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -100105200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -84376801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -84376800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -68655601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -68655600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -52927201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -52927200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -37206001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -37206000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -21477601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -21477600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -5756401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -5756400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 9971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 9972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 25693199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 25693200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 41421599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 41421600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 57747599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 57747600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 73475999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 73476000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 89197199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 89197200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 104925599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 104925600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 120646799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 120646800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 136375199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 136375200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 152096399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 152096400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 167824799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 167824800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 183545999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 183546000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 199274399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 199274400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 215600399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 215600400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 230723999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 230724000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 247049999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 247050000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 262778399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 262778400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 278499599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 278499600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 294227999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 294228000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 309949199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 309949200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 325677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 325677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 341398799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 341398800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 357127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 357127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 372848399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 372848400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 388576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 388576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 404902799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 404902800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 420026399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 420026400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 436352399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 436352400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 452080799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 452080800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 467801999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 467802000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 483530399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 483530400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 499251599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 499251600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 514979999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 514980000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 530701199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 530701200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 544615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 544615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 562150799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 562150800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 576064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 576064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 594205199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 594205200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 607514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 607514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 625654799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 625654800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 638963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 638964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 657104399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 657104400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 671018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 671018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 688553999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 688554000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 702467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 702468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 720003599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 720003600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 733917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 733917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 752057999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 752058000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 765367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 765367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 783507599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 783507600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 796816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 796816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 814957199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 814957200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 828871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 828871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 846406799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 846406800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 860320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 860320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 877856399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 877856400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 891770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 891770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 909305999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 909306000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 923219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 923220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 941360399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 941360400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 954669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 954669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 972809999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 972810000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 986119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 986119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1004259599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1004259600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1018173599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1018173600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1035709199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1035709200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1049623199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1049623200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1067158799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1067158800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1081072799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1081072800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1099213199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1099213200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1112522399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1112522400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1130662799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1130662800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1143971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1143972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1162112399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1162112400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1173607199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1173607200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1194166799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1194166800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1205056799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1205056800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1225616399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1225616400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1236506399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1236506400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1257065999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1257066000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1268560799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1268560800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1289120399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1289120400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1300010399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1300010400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1320569999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1320570000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1331459999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1331460000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1352019599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1352019600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1362909599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1362909600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1383469199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1383469200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1394359199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1394359200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1414918799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1414918800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1425808799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1425808800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1446368399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1446368400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1457863199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1457863200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1478422799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1478422800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1489312799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1489312800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1509872399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1509872400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1520762399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1520762400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1541321999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1541322000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1552211999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1552212000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1572771599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1572771600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1583661599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1583661600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1604221199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1604221200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1615715999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1615716000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1636275599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1636275600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1647165599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1647165600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1667725199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1667725200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1678615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1678615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1699174799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1699174800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1710064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1710064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1730624399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1730624400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1741514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1741514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1762073999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1762074000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1772963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1772964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1793523599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1793523600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1805018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1805018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1825577999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1825578000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1836467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1836468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1857027599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1857027600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1867917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1867917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1888477199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1888477200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1899367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1899367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1919926799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1919926800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1930816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1930816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1951376399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1951376400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1962871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1962871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1983430799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1983430800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1994320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1994320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2014880399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2014880400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2025770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2025770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2046329999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2046330000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2057219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2057220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2077779599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2077779600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2088669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2088669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2109229199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2109229200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2120119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2120119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2140678799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2140678800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Whitehorse.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Whitehorse.json new file mode 100644 index 0000000..3da89ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Whitehorse.json @@ -0,0 +1,264 @@ +({ + name: "date.timezone.America-Whitehorse", + runTest: function(t){ + var tz = "America/Whitehorse"; + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1632056401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1632056400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1615125601000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1615125600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1596978001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1596978000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -1583164801000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -1583164800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -880203601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YWT"}, -880203600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YPT"}, -765381601000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -765381600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -147884401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "YDDT"}, -147884400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "YDDT"}, -131554801000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -131554800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -110552401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -110552400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 325677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 325677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 341398799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 341398800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 357127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 357127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 372848399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 372848400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 388576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 388576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 404902799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 404902800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 420026399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 420026400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 436352399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 436352400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 452080799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 452080800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 467801999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 467802000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 483530399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 483530400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 499251599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 499251600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 514979999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 514980000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 530701199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 530701200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 544615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 544615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 562150799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 562150800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 576064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 576064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 594205199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 594205200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 607514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 607514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 625654799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 625654800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 638963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 638964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 657104399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 657104400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 671018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 671018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 688553999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 688554000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 702467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 702468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 720003599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 720003600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 733917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 733917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 752057999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 752058000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 765367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 765367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 783507599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 783507600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 796816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 796816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 814957199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 814957200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 828871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 828871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 846406799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 846406800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 860320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 860320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 877856399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 877856400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 891770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 891770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 909305999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 909306000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 923219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 923220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 941360399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 941360400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 954669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 954669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 972809999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 972810000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 986119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 986119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1004259599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1004259600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1018173599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1018173600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1035709199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1035709200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1049623199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1049623200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1067158799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1067158800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1081072799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1081072800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1099213199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1099213200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1112522399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1112522400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1130662799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1130662800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1143971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1143972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1162112399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1162112400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1173607199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1173607200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1194166799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1194166800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1205056799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1205056800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1225616399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1225616400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1236506399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1236506400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1257065999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1257066000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1268560799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1268560800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1289120399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1289120400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1300010399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1300010400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1320569999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1320570000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1331459999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1331460000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1352019599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1352019600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1362909599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1362909600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1383469199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1383469200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1394359199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1394359200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1414918799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1414918800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1425808799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1425808800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1446368399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1446368400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1457863199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1457863200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1478422799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1478422800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1489312799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1489312800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1509872399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1509872400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1520762399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1520762400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1541321999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1541322000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1552211999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1552212000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1572771599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1572771600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1583661599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1583661600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1604221199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1604221200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1615715999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1615716000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1636275599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1636275600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1647165599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1647165600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1667725199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1667725200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1678615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1678615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1699174799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1699174800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1710064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1710064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1730624399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1730624400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1741514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1741514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1762073999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1762074000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1772963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1772964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1793523599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1793523600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1805018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1805018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1825577999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1825578000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1836467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1836468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1857027599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1857027600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1867917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1867917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1888477199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1888477200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1899367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1899367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1919926799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1919926800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1930816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1930816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1951376399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1951376400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1962871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1962871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1983430799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1983430800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1994320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1994320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2014880399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2014880400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2025770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2025770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2046329999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2046330000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2057219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2057220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2077779599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2077779600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2088669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2088669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2109229199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2109229200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2120119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2120119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2140678799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2140678800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Winnipeg.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Winnipeg.json new file mode 100644 index 0000000..e77ab66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Winnipeg.json @@ -0,0 +1,382 @@ +({ + name: "date.timezone.America-Winnipeg", + runTest: function(t){ + var tz = "America/Winnipeg"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1694368801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1694368800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1681671601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1681671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1632067201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1632067200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1614790801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1614790800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1029686401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1029686400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1018198801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1018198800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -746035201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -746035200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -732733201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -732733200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -715795201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -715795200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -702493201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -702493200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -684345601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -684345600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -671043601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -671043600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -652896001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -652896000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -639594001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -639594000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -620755201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -620755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -607626001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -607626000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -589392001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -589392000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -576090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -576090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -557942401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -557942400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -544640401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -544640400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -526492801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -526492800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -513190801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -513190800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -495043201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -495043200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -481741201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -481741200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -463593601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -463593600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -450291601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -450291600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -431539201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -431539200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -418237201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -418237200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -400089601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -400089600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -386787601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -386787600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -368640001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -368640000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -355338001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -355338000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -337190401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -337190400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -321469201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -321469200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -305740801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -305740800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -292438801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -292438800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -210787201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -210787200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -198090001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -198090000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -116438401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -116438400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -100108801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -100108800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -84384001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -84384000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -52934401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -52934400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -37209601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -37209600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -21484801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -21484800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -5760001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -5760000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 9964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 9964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 25689599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 25689600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 41414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 41414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 57743999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 57744000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 73468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 73468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 89193599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 89193600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 104918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 104918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 120643199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 120643200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 136367999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 136368000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152092799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152092800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 167817599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 167817600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183542399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183542400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215596799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215596800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247046399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 247046400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 262771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 262771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 278495999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 278496000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 294220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 294220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 309945599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 309945600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Yakutat.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Yakutat.json new file mode 100644 index 0000000..c9995ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Yakutat.json @@ -0,0 +1,296 @@ +({ + name: "date.timezone.America-Yakutat", + runTest: function(t){ + var tz = "America/Yakutat"; + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -880203601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YWT"}, -880203600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YPT"}, -765381601000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -765381600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -21474001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -21474000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, -5752801000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, -5752800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 9975599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 9975600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 25696799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 25696800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 41425199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 41425200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 57751199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 57751200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 73479599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 73479600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 89200799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 89200800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 104929199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 104929200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 120650399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 120650400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 126701999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 126702000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 152099999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 152100000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 162385199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 162385200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 183549599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 183549600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 199277999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 199278000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 215603999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 215604000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 230727599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 230727600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 247053599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 247053600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 262781999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 262782000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 278503199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 278503200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 294231599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 294231600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 309952799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 309952800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 325681199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 325681200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 341402399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 341402400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 357130799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 357130800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 372851999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 372852000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 388580399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 388580400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 404906399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 404906400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 420029999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 420030000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "YDT"}, 436355999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 436356000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "YST"}, 439030799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 439030800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 452084399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 452084400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 467805599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 467805600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 483533999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 483534000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 499255199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 499255200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 514983599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 514983600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 530704799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 530704800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 544618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 544618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 562154399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 562154400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 576068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 576068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 594208799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 594208800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 607517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 607518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 625658399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 625658400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 638967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 638967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 657107999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 657108000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 671021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 671022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 688557599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 688557600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 702471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 702471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 720007199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 720007200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 733921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 733921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 752061599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 752061600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 765370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 765370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 783511199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 783511200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 796820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 796820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 814960799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 814960800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 828874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 828874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 846410399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 846410400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 860324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 860324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 877859999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 877860000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 891773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 891774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 909309599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 909309600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 923223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 923223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 941363999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 941364000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 954673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 954673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 972813599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 972813600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 986122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 986122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1004263199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1004263200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1018177199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1018177200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1035712799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1035712800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1049626799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1049626800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1067162399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1067162400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1081076399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1081076400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1099216799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1099216800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1112525999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1112526000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1130666399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1130666400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1143975599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1143975600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1162115999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1162116000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1173610799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1173610800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1194170399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1194170400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1205060399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1205060400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1225619999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1225620000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1236509999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1236510000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1257069599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1257069600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1268564399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1268564400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1289123999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1289124000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1300013999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1300014000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1320573599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1320573600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1331463599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1331463600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1352023199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1352023200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1362913199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1362913200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1383472799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1383472800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1394362799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1394362800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1414922399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1414922400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1425812399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1425812400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1446371999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1446372000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1457866799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1457866800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1478426399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1478426400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1489316399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1489316400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1509875999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1509876000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1520765999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1520766000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1541325599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1541325600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1552215599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1552215600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1572775199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1572775200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1583665199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1583665200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1604224799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1604224800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1615719599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1615719600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1636279199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1636279200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1647169199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1647169200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1667728799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1667728800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1678618799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1678618800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1699178399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1699178400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1710068399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1710068400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1730627999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1730628000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1741517999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1741518000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1762077599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1762077600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1772967599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1772967600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1793527199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1793527200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1805021999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1805022000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1825581599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1825581600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1836471599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1836471600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1857031199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1857031200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1867921199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1867921200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1888480799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1888480800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1899370799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1899370800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1919930399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1919930400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1930820399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1930820400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1951379999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1951380000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1962874799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1962874800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1983434399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1983434400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1994324399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1994324400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2014883999000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2014884000000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2025773999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2025774000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2046333599000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2046333600000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2057223599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2057223600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2077783199000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2077783200000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2088673199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2088673200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2109232799000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2109232800000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2120122799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2120122800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 2140682399000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2140682400000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "AKST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 480, tzAbbr: "AKDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Yellowknife.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Yellowknife.json new file mode 100644 index 0000000..09a668c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_America-Yellowknife.json @@ -0,0 +1,256 @@ +({ + name: "date.timezone.America-Yellowknife", + runTest: function(t){ + var tz = "America/Yellowknife"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -1104537601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1104537600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -147891601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "MDDT"}, -147891600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "MDDT"}, -131562001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -131562000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1173603599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1173603600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1194163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1194163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1205053199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1205053200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1236502799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1236502800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1257062399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1257062400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1268557199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1268557200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1289116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1289116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1300006799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1300006800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1320566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1320566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1331456399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1331456400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1352015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1352016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1362905999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1362906000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1383465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1383465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1394355599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1394355600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1425805199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1425805200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1446364799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1446364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1457859599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1457859600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1478419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1478419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1489309199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1489309200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1520758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1520758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1541318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1541318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1552208399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1552208400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1583657999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1583658000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1604217599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1604217600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1615712399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1615712400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1636271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1636272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1647161999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1647162000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1678611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1678611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1699171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1699171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1710061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1710061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1741510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1741510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1762070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1762070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1772960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1772960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1793519999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1793520000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1805014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1805014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1825574399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1825574400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1836464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1836464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1857023999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1857024000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1867913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1867914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1888473599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1888473600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1899363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1899363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919923199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1930813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1930813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1951372799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1951372800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1962867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1962867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1983427199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1983427200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1994317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1994317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014876799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014876800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2025766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2025766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2046326399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2046326400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2057216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2057216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077775999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077776000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2088665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2088666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2109225599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2109225600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2120115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2120115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140675199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140675200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Casey.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Casey.json new file mode 100644 index 0000000..d066c73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Casey.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Antarctica-Casey", + runTest: function(t){ + var tz = "Antarctica/Casey"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -31536001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -31536000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Davis.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Davis.json new file mode 100644 index 0000000..6ee51c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Davis.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Antarctica-Davis", + runTest: function(t){ + var tz = "Antarctica/Davis"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -409190401000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DAVT"}, -409190400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DAVT"}, -163062001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -163062000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -28857601000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DAVT"}, -28857600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DAVT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DAVT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DAVT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "DAVT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-DumontDUrville.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-DumontDUrville.json new file mode 100644 index 0000000..7be9e65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-DumontDUrville.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Antarctica-DumontDUrville", + runTest: function(t){ + var tz = "Antarctica/DumontDUrville"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -725846401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "PMT"}, -725846400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "PMT"}, -566992801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -566992800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -415497601000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "DDUT"}, -415497600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "DDUT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "DDUT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "DDUT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "DDUT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Mawson.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Mawson.json new file mode 100644 index 0000000..4ce3987 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Mawson.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Antarctica-Mawson", + runTest: function(t){ + var tz = "Antarctica/Mawson"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -501206401000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "MAWT"}, -501206400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "MAWT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "MAWT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "MAWT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "MAWT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-McMurdo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-McMurdo.json new file mode 100644 index 0000000..89ce929 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-McMurdo.json @@ -0,0 +1,268 @@ +({ + name: "date.timezone.Antarctica-McMurdo", + runTest: function(t){ + var tz = "Antarctica/McMurdo"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -441849601000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -441849600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 152632799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 152632800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 162309599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 162309600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 183477599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 183477600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 194968799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 194968800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 215531999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 215532000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 226418399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 226418400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 246981599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 246981600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 257867999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 257868000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 278431199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 278431200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 289317599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 289317600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 309880799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 309880800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 320767199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 320767200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 341330399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 341330400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 352216799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 352216800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 372779999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 372780000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 384271199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 384271200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 404834399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 404834400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 415720799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 415720800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 436283999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 436284000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 447170399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 447170400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 467733599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 467733600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 478619999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 478620000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 499183199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 499183200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 510069599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 510069600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 530632799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 530632800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 541519199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 541519200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 562082399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 562082400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 573573599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 573573600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 594136799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 594136800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 605023199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 605023200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 623771999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 623772000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 637682399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 637682400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 655221599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 655221600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 669131999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 669132000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 686671199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 686671200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 700581599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 700581600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 718120799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 718120800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 732635999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 732636000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 749570399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 749570400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 764085599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 764085600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 781019999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 781020000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 795535199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 795535200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 812469599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 812469600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 826984799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 826984800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 844523999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 844524000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 858434399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 858434400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 875973599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 875973600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 889883999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 889884000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 907423199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 907423200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 921938399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 921938400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 938872799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 938872800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 953387999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 953388000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 970322399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 970322400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 984837599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 984837600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1002376799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1002376800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1016287199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1016287200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1033826399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1033826400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1047736799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1047736800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1065275999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1065276000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1079791199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1079791200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1096725599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1096725600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1111240799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1111240800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1128175199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1128175200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1142690399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1142690400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1159624799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1159624800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1174139999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1174140000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1191074399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1191074400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1207403999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1207404000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1222523999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1222524000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1238853599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1238853600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1253973599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1253973600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1270303199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1270303200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1285423199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1285423200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1301752799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1301752800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1316872799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1316872800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1333202399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1333202400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1348927199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1348927200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1365256799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1365256800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1380376799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1380376800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1396706399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1396706400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1411826399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1411826400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1428155999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1428156000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1443275999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1443276000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1459605599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1459605600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1474725599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1474725600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1491055199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1491055200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1506175199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1506175200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1522504799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1522504800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1538229599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1538229600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1554559199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1554559200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1569679199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1569679200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1586008799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1586008800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1601128799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1601128800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1617458399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1617458400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1632578399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1632578400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1648907999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1648908000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1664027999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1664028000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1680357599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1680357600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1695477599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1695477600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1712411999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1712412000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1727531999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1727532000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1743861599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1743861600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1758981599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1758981600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1775311199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1775311200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1790431199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1790431200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1806760799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1806760800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1821880799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1821880800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1838210399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1838210400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1853330399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1853330400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1869659999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1869660000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1885384799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1885384800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1901714399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1901714400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1916834399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1916834400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1933163999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1933164000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1948283999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1948284000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1964613599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1964613600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1979733599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1979733600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1996063199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1996063200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2011183199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2011183200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2027512799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2027512800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2042632799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2042632800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2058962399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2058962400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2074687199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2074687200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2091016799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2091016800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2106136799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2106136800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2122466399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2122466400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2137586399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2137586400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Palmer.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Palmer.json new file mode 100644 index 0000000..08984f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Palmer.json @@ -0,0 +1,262 @@ +({ + name: "date.timezone.Antarctica-Palmer", + runTest: function(t){ + var tz = "Antarctica/Palmer"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -157766401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -157766400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -152658001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -152658000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -132955201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -132955200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -121122001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -121122000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -101419201000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -101419200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -86821201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -86821200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -71092801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -71092800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -54766801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -54766800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -39038401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -39038400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ARST"}, -23317201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -23317200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "ART"}, -7588801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, -7588800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 128141999000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 128142000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "ARST"}, 136605599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 136605600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ART"}, 389069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 389070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 403070399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 403070400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 416372399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 416372400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 434519999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 434520000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 447821999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 447822000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 466574399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 466574400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 479271599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 479271600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 498023999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 498024000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 510721199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 510721200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 529473599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 529473600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 545194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 545194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 560923199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 560923200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 574225199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 574225200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 591767999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 591768000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 605674799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 605674800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 624427199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 624427200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 637729199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 637729200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 653457599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 653457600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 668573999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 668574000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 687326399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 687326400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 700628399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 700628400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 718775999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 718776000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 732077999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 732078000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 750225599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 750225600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 763527599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 763527600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 781675199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 781675200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 794977199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 794977200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 813729599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 813729600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 826426799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 826426800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 845179199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 845179200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 859690799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 859690800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 876628799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 876628800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 889930799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 889930800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 906868799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 906868800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 923194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 923194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 939527999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 939528000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 952829999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 952830000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 971582399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 971582400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 984279599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 984279600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1003031999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1003032000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1015729199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1015729200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1034481599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1034481600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1047178799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1047178800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1065931199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1065931200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1079233199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1079233200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1097380799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1097380800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1110682799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1110682800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1128830399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1128830400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1142132399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1142132400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1160884799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1160884800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1173581999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1173582000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1192334399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1192334400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1205031599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1205031600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1223783999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1223784000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1237085999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1237086000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1255233599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1255233600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1268535599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1268535600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1286683199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1286683200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1299985199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1299985200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1318132799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1318132800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1331434799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1331434800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1350187199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1350187200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1362884399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1362884400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1381636799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1381636800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1394333999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1394334000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1413086399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1413086400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1426388399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1426388400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1444535999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1444536000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1457837999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1457838000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1475985599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1475985600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1489287599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1489287600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1508039999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1508040000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1520737199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1520737200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1539489599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1539489600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1552186799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1552186800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1570939199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1570939200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1584241199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1584241200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1602388799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1602388800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1615690799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1615690800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1633838399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1633838400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1647140399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1647140400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1665287999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1665288000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1678589999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1678590000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1697342399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1697342400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1710039599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1710039600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1728791999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1728792000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1741489199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1741489200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1760241599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1760241600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1773543599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1773543600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1791691199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1791691200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1804993199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1804993200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1823140799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1823140800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1836442799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1836442800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1855195199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1855195200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1867892399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1867892400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1886644799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1886644800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1899341999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1899342000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1918094399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1918094400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1930791599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1930791600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1949543999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1949544000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1962845999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1962846000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1980993599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1980993600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1994295599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1994295600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2012443199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2012443200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2025745199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2025745200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2044497599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2044497600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2057194799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2057194800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2075947199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2075947200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2088644399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2088644400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2107396799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2107396800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2120698799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2120698800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 2138846399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2138846400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "CLST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "CLT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Rothera.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Rothera.json new file mode 100644 index 0000000..0ecee9a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Rothera.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Antarctica-Rothera", + runTest: function(t){ + var tz = "Antarctica/Rothera"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, 218246399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ROTT"}, 218246400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ROTT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ROTT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ROTT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ROTT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Syowa.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Syowa.json new file mode 100644 index 0000000..6115d57 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Syowa.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Antarctica-Syowa", + runTest: function(t){ + var tz = "Antarctica/Syowa"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -407808001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SYOT"}, -407808000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SYOT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SYOT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SYOT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "SYOT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Vostok.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Vostok.json new file mode 100644 index 0000000..bf94dfc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Antarctica-Vostok.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Antarctica-Vostok", + runTest: function(t){ + var tz = "Antarctica/Vostok"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -380073601000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "VOST"}, -380073600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "VOST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "VOST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "VOST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "VOST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aden.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aden.json new file mode 100644 index 0000000..c13bb89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aden.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Asia-Aden", + runTest: function(t){ + var tz = "Asia/Aden"; + doh.checkDate({tzOffset: -180.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -180.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -180.8, tzAbbr: "LMT"}, -631162849000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, -631162848000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Almaty.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Almaty.json new file mode 100644 index 0000000..4c023d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Almaty.json @@ -0,0 +1,108 @@ +({ + name: "date.timezone.Asia-Almaty", + runTest: function(t){ + var tz = "Asia/Almaty"; + doh.checkDate({tzOffset: -307.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -307.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -307.8, tzAbbr: "LMT"}, -1441170469000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ALMT"}, -1441170468000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ALMT"}, -1247547601000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, -1247547600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 354909599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 354909600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 370717199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 370717200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 402253199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 402253200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 417981599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 417981600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 433789199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 433789200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 449603999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 449604000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 465335999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 465336000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 481060799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 481060800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 496785599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 496785600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 512510399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 512510400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 528235199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 528235200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 543959999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 543960000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 559684799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 559684800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 575409599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 575409600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 591134399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 591134400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 606859199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 606859200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 622583999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 622584000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 638308799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 638308800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 654638399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 654638400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 701801999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 701802000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 717523199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 717523200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 733262399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 733262400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 748987199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 748987200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 764711999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 764712000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 780436799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 780436800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 796161599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 796161600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 811886399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 811886400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 828215999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 828216000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 846359999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 846360000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 859665599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 859665600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 877809599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 877809600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 891115199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 891115200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 909259199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 909259200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 922564799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 922564800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 941313599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 941313600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 954014399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 954014400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 972763199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 972763200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 985463999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 985464000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 1004212799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1004212800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1017518399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 1017518400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 1035662399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1035662400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1048967999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 1048968000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 1067111999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1067112000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1080417599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 1080417600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ALMST"}, 1099166399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1099166400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "ALMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Amman.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Amman.json new file mode 100644 index 0000000..0d7dd4b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Amman.json @@ -0,0 +1,250 @@ +({ + name: "date.timezone.Asia-Amman", + runTest: function(t){ + var tz = "Asia/Amman"; + doh.checkDate({tzOffset: -143.733333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -143.733333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -143.733333333333, tzAbbr: "LMT"}, -1230776625000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1230776624000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 108165599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 108165600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 118270799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 118270800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 136591199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 136591200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 149806799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 149806800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 168127199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 168127200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 181342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 181342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 199749599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 199749600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 215643599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 215643600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 231285599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 231285600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 244501199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 244501200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 262735199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 262735200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 275950799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 275950800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 481154399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 481154400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496961999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496962000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512949599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512949600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528670799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528670800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 544399199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 544399200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 560120399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 560120400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575848799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575848800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 592174799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 592174800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 610581599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 610581600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 623624399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 623624400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 641167199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 641167200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 655073999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 655074000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 671839199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 671839200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 685918799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 685918800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 702856799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 702856800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717973199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717973200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733701599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733701600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749422799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749422800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 765151199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 765151200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 779662799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 779662800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 797205599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 797205600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811115999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811116000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828655199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828655200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 843170399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 843170400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 860104799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 860104800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 874619999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 874620000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891554399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891554400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 906069599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 906069600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 930779999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 930780000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 938123999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 938124000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954367199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954367200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 970178399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 970178400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985816799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985816800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1001627999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1001628000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017352799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017352800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1033077599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1033077600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048802399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048802400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1066946399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1066946400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080251999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080252000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1097791199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1097791200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1112306399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1112306400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1128031199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1128031200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143755999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143756000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1161899999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1161900000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1175205599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1175205600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193349599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193349600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206655199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206655200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1225403999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1225404000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238104799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238104800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256853599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256853600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269554399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269554400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288303199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288303200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301608799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301608800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319752799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319752800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1333058399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1333058400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351202399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351202400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364507999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364508000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382651999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382652000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1395957599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1395957600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414706399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427407199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427407200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1446155999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1446156000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459461599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459461600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477605599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477605600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490911199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490911200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509055199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509055200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1522360799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1522360800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540504799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540504800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553810399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553810400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1571954399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1571954400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585259999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585260000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1604008799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1604008800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616709599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616709600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635458399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635458400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648763999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648764000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1666907999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1666908000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1680213599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1680213600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698357599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698357600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711663199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711663200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729807199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729807200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743112799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743112800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761861599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761861600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774562399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774562400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1793311199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1793311200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806011999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806012000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824760799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824760800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1838066399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1838066400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856210399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856210400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869515999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869516000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887659999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887660000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1900965599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1900965600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919109599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919109600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932415199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932415200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1951163999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1951164000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1963864799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1963864800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982613599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982613600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995919199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995919200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014063199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014063200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2027368799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2027368800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045512799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045512800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058818399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058818400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2076962399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2076962400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090267999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090268000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2109016799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2109016800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121717599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121717600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140466399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140466400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Anadyr.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Anadyr.json new file mode 100644 index 0000000..6a6da39 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Anadyr.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Anadyr", + runTest: function(t){ + var tz = "Asia/Anadyr"; + doh.checkDate({tzOffset: -709.933333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -709.933333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -709.933333333333, tzAbbr: "LMT"}, -1441194597000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, -1441194596000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, -1247572801000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAT"}, -1247572800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAT"}, 354884399000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "ANAST"}, 354884400000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "ANAST"}, 370691999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAT"}, 370692000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAT"}, 386420399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 386420400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 402231599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 402231600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 417959999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 417960000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 433767599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 433767600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 449582399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 449582400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 465314399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 465314400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 481039199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 481039200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 496763999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 496764000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 512488799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 512488800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 528213599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 528213600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 543938399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 543938400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 559663199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 559663200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 575387999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 575388000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 591112799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 591112800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 606837599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 606837600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 622562399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 622562400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 638287199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 638287200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 654616799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 654616800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 670341599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAST"}, 670341600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAST"}, 686069999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "ANAT"}, 686070000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "ANAT"}, 695746799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 695746800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 701780399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 701780400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 717501599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 717501600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 733240799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 733240800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 748965599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 748965600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 764690399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 764690400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 780415199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 780415200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 796139999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 796140000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 811864799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 811864800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 828194399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 828194400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 846338399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 846338400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 859643999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 859644000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 877787999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 877788000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 891093599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 891093600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 909237599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 909237600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 922543199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 922543200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 941291999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 941292000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 953992799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 953992800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 972741599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 972741600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 985442399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 985442400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1004191199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1004191200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1017496799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1017496800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1035640799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1035640800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1048946399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1048946400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1067090399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1067090400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1080395999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1080396000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1099144799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1099144800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1111845599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1111845600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1130594399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1130594400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1143295199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1143295200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1162043999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1162044000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1174744799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1174744800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1193493599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1193493600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1206799199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1206799200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1224943199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1224943200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1238248799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1238248800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1256392799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1256392800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1269698399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1269698400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1288447199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1288447200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1301147999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1301148000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1319896799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1319896800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1332597599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1332597600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1351346399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1351346400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1364651999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1364652000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1382795999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1382796000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1396101599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1396101600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1414245599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1414245600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1427551199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1427551200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1445695199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1445695200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1459000799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1459000800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1477749599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1477749600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1490450399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1490450400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1509199199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1509199200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1521899999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1521900000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1540648799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1540648800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1553954399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1553954400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1572098399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1572098400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1585403999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1585404000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1603547999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1603548000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1616853599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1616853600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1635602399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1635602400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1648303199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1648303200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1667051999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1667052000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1679752799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1679752800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1698501599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1698501600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1711807199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1711807200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1729951199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1729951200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1743256799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1743256800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1761400799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1761400800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1774706399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1774706400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1792850399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1792850400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1806155999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1806156000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1824904799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1824904800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1837605599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1837605600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1856354399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1856354400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1869055199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1869055200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1887803999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1887804000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1901109599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1901109600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1919253599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1919253600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1932559199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1932559200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1950703199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1950703200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1964008799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1964008800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1982757599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1982757600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1995458399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1995458400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2014207199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2014207200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2026907999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2026908000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2045656799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2045656800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2058357599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2058357600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2077106399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2077106400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2090411999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2090412000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2108555999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2108556000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2121861599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2121861600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 2140005599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2140005600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "ANAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -780, tzAbbr: "ANAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aqtau.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aqtau.json new file mode 100644 index 0000000..7ab8ed6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aqtau.json @@ -0,0 +1,112 @@ +({ + name: "date.timezone.Asia-Aqtau", + runTest: function(t){ + var tz = "Asia/Aqtau"; + doh.checkDate({tzOffset: -201.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -201.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -201.066666666667, tzAbbr: "LMT"}, -1441164065000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "FORT"}, -1441164064000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "FORT"}, -1247544001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "FORT"}, -1247544000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "FORT"}, -220942801000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, -220942800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 370724399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHET"}, 370724400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHET"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 402256799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 402256800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 417985199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 417985200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 433792799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 433792800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 449607599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 449607600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 481064399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 481064400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 512513999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 512514000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 543963599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 543963600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 575413199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 575413200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 606862799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 606862800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 622587599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 622587600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 638312399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 638312400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SHEST"}, 654641999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 654642000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SHET"}, 692823599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 692823600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 701805599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 701805600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 717526799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 717526800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 733265999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 733266000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 764715599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 764715600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 796165199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 796165200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 811893599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 811893600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 846367199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 846367200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 859672799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 859672800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 877816799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 877816800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 891122399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 891122400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 909266399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 909266400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 922571999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 922572000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 941320799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 941320800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 954021599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 954021600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 972770399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 972770400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 985471199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 985471200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 1004219999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1004220000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1017525599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 1017525600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 1035669599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1035669600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1048975199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 1048975200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 1067119199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1067119200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1080424799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 1080424800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTST"}, 1099173599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1099173600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AQTT"}, 1110830399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1110830400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aqtobe.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aqtobe.json new file mode 100644 index 0000000..e175991 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Aqtobe.json @@ -0,0 +1,110 @@ +({ + name: "date.timezone.Asia-Aqtobe", + runTest: function(t){ + var tz = "Asia/Aqtobe"; + doh.checkDate({tzOffset: -228.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -228.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -228.666666666667, tzAbbr: "LMT"}, -1441165721000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AKTT"}, -1441165720000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AKTT"}, -1247544001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, -1247544000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 354913199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 354913200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 370720799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTT"}, 370720800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTT"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 402256799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 402256800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 417985199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 417985200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 433792799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 433792800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 449607599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 449607600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 481064399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 481064400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 512513999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 512514000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 543963599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 543963600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 575413199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 575413200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 606862799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 606862800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 622587599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 622587600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 638312399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 638312400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AKTST"}, 654641999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 654642000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AKTT"}, 692823599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 692823600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 701805599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 701805600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 717526799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 717526800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 733265999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 733266000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 764715599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 764715600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 796165199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 796165200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 811889999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 811890000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 828219599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 828219600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 846363599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 846363600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 859669199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 859669200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 877813199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 877813200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 891118799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 891118800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 909262799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 909262800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 922568399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 922568400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 941317199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 941317200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 954017999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 954018000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 972766799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 972766800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 985467599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 985467600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 1004216399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1004216400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1017521999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 1017522000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 1035665999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1035666000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1048971599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 1048971600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 1067115599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1067115600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1080421199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 1080421200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "AQTST"}, 1099169999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1099170000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "AQTT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ashgabat.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ashgabat.json new file mode 100644 index 0000000..f7a340e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ashgabat.json @@ -0,0 +1,64 @@ +({ + name: "date.timezone.Asia-Ashgabat", + runTest: function(t){ + var tz = "Asia/Ashgabat"; + doh.checkDate({tzOffset: -233.533333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -233.533333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -233.533333333333, tzAbbr: "LMT"}, -1441166013000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ASHT"}, -1441166012000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ASHT"}, -1247544001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, -1247544000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 354913199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 354913200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 370720799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 370720800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 386449199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 386449200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 402256799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 402256800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 417985199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 417985200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 433792799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 433792800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 449607599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 449607600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 481064399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 481064400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 512513999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 512514000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 543963599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 543963600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 575413199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 575413200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 606862799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 606862800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 622587599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 622587600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 638312399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 638312400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "ASHST"}, 654641999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 654642000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHT"}, 670366799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHST"}, 670366800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ASHST"}, 686095199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ASHT"}, 686095200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ASHT"}, 688507199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TMT"}, 688507200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TMT"}, 695771999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TMT"}, 695772000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "TMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Baghdad.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Baghdad.json new file mode 100644 index 0000000..71864e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Baghdad.json @@ -0,0 +1,118 @@ +({ + name: "date.timezone.Asia-Baghdad", + runTest: function(t){ + var tz = "Asia/Baghdad"; + doh.checkDate({tzOffset: -177.6, tzAbbr: "BMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -177.6, tzAbbr: "BMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -177.6, tzAbbr: "BMT"}, -1641005857000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, -1641005856000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 389048399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 389048400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 417905999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 417906000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 465422399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 465422400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 481150799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 481150800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 496792799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 496792800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 512517599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 512517600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 528242399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 528242400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 543967199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 543967200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 559691999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 559692000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 575416799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 575416800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 591141599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 591141600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 606866399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 606866400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 622591199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 622591200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 654645599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 654645600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 670463999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 670464000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 686275199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 686275200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 702086399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 702086400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 717897599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 717897600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 733622399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 733622400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 749433599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 749433600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 765158399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 765158400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 780969599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 780969600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 796694399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 796694400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 812505599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 812505600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 828316799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 828316800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 844127999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 844128000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 859852799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 859852800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 875663999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 875664000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 891388799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 891388800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 907199999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 907200000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 922924799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 922924800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 938735999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 938736000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 954547199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 954547200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 970358399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 970358400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 986083199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 986083200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1001894399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1001894400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1017619199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1017619200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1033430399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1033430400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1049155199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1049155200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1064966399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1064966400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1080777599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1080777600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1096588799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1096588800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1112313599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1112313600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1128124799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1128124800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1143849599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1143849600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1159660799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1159660800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1175385599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1175385600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ADT"}, 1191196799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1191196800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bahrain.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bahrain.json new file mode 100644 index 0000000..2dc92e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bahrain.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Asia-Bahrain", + runTest: function(t){ + var tz = "Asia/Bahrain"; + doh.checkDate({tzOffset: -202.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -202.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -202.333333333333, tzAbbr: "LMT"}, -1577935341000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, -1577935340000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 76190399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 76190400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Baku.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Baku.json new file mode 100644 index 0000000..edb1679 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Baku.json @@ -0,0 +1,234 @@ +({ + name: "date.timezone.Asia-Baku", + runTest: function(t){ + var tz = "Asia/Baku"; + doh.checkDate({tzOffset: -199.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -199.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -199.4, tzAbbr: "LMT"}, -1441163965000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "BAKT"}, -1441163964000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "BAKT"}, -405140401000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, -405140400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 354916799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 354916800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 370724399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 370724400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 386452799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 386452800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 402260399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 402260400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 417988799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 417988800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 433796399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 433796400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 449611199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 449611200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 465343199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 465343200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 481067999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 481068000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 496792799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 496792800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 512517599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 512517600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 528242399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 528242400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 543967199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 543967200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 559691999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 559692000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 575416799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 575416800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 591141599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 591141600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 606866399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 606866400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 622591199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 622591200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "BAKST"}, 654645599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 654645600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKT"}, 670370399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKST"}, 670370400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "BAKST"}, 683495999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZST"}, 683496000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZST"}, 686098799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AZT"}, 686098800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AZT"}, 701812799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZST"}, 701812800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZST"}, 717533999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 717534000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 859679999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 859680000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 877823999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 877824000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 891129599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 891129600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 909273599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 909273600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 922579199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 922579200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 941327999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 941328000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 954028799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 954028800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 972777599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 972777600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 985478399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 985478400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1004227199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1004227200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1017532799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1017532800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1035676799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1035676800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1048982399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1048982400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1067126399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1067126400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1080431999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1080432000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1099180799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1099180800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1111881599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1111881600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1130630399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1130630400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1143331199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1143331200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1162079999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1162080000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1174780799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1174780800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1193529599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1193529600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1206835199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1206835200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1224979199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1224979200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1238284799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1238284800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1256428799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1256428800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1269734399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1269734400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1288483199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1288483200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1301183999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1301184000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1319932799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1319932800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1332633599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1332633600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1351382399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1351382400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1364687999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1364688000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1382831999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1382832000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1396137599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1396137600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1414281599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1414281600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1427587199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1427587200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1445731199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1445731200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1459036799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1459036800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1477785599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1477785600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1490486399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1490486400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1509235199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1509235200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1521935999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1521936000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1540684799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1540684800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1553990399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1553990400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1572134399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1572134400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1585439999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1585440000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1603583999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1603584000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1616889599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1616889600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1635638399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1635638400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1648339199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1648339200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1667087999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1667088000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1679788799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1679788800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1698537599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1698537600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1711843199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1711843200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1729987199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1729987200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1743292799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1743292800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1761436799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1761436800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1774742399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1774742400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1792886399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1792886400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1806191999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1806192000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1824940799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1824940800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1837641599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1837641600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1856390399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1856390400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1869091199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1869091200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1887839999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1887840000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1901145599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1901145600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1919289599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1919289600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1932595199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1932595200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1950739199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1950739200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1964044799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1964044800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1982793599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1982793600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1995494399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1995494400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2014243199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2014243200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2026943999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2026944000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2045692799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2045692800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2058393599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2058393600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2077142399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2077142400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2090447999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2090448000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2108591999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2108592000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2121897599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2121897600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 2140041599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2140041600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AZT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "AZST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bangkok.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bangkok.json new file mode 100644 index 0000000..6130271 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bangkok.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Asia-Bangkok", + runTest: function(t){ + var tz = "Asia/Bangkok"; + doh.checkDate({tzOffset: -402.066666666667, tzAbbr: "BMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -402.066666666667, tzAbbr: "BMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -402.066666666667, tzAbbr: "BMT"}, -1570084925000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1570084924000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Beirut.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Beirut.json new file mode 100644 index 0000000..7b98a6e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Beirut.json @@ -0,0 +1,292 @@ +({ + name: "date.timezone.Asia-Beirut", + runTest: function(t){ + var tz = "Asia/Beirut"; + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1570413601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1570413600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1552186801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1552186800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1538359201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1538359200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1522551601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1522551600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1507514401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1507514400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1490583601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1490583600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1473645601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1473645600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1460948401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1460948400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -399866401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -399866400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -386650801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -386650800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -368330401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -368330400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -355114801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -355114800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -336794401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -336794400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -323578801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -323578800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -305172001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -305172000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -291956401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -291956400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -273636001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -273636000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -260420401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -260420400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 78011999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 78012000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 86734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 86734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 105055199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 105055200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 118270799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 118270800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 136591199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 136591200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 149806799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 149806800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 168127199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 168127200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 181342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 181342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 199749599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 199749600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 212965199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 212965200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 231285599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 231285600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 244501199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 244501200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 262735199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 262735200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 275950799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 275950800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 452210399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 452210400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 466721999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 466722000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 483746399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 483746400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 498257999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 498258000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 515282399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 515282400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 529793999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 529794000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 546818399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 546818400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 561329999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 561330000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 581119199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 581119200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 592952399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 592952400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 610754399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 610754400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 624488399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 624488400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 641512799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 641512800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 656024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 656024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 673048799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 673048800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 687560399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 687560400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 704671199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 704671200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 718145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 718146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796168799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796168800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 843944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 843944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859672799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859672800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 875393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 875394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891122399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891122400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 906843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 906843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922571999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922572000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941317199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941317200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954021599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954021600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972766799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972766800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985471199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985471200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004216399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004216400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017525599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017525600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035665999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035666000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048975199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048975200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067115599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067115600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080424799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080424800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099169999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099170000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111874399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111874400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130619599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130619600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143323999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143324000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162069199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162069200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174773599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174773600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193518799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193518800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206827999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206828000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224968399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224968400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238277599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238277600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256417999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256418000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269727199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269727200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288472399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288472400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301176799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301176800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319921999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319922000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332626399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332626400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351371599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351371600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364680799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364680800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382821199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382821200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396130399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396130400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414270799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414270800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427579999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427580000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445720399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445720400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459029599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459029600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477774799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477774800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490479199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490479200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509224399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509224400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521928799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521928800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540673999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540674000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553983199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553983200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572123599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572123600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585432799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585432800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603573199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603573200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616882399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616882400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635627599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635627600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648331999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648332000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667077199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667077200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679781599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679781600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698526799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698526800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711835999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711836000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729976399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729976400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743285599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743285600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761425999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761426000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774735199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774735200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792875599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792875600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806184799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806184800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824929999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824930000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837634399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837634400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856379599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856379600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869083999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869084000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887829199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887829200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901138399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901138400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919278799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919278800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932587999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932588000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950728399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950728400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964037599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964037600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982782799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982782800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995487199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995487200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014232399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014232400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026936799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026936800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045681999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045682000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058386399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058386400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077131599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077131600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090440799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090440800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108581199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108581200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121890399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121890400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140030799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140030800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bishkek.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bishkek.json new file mode 100644 index 0000000..4f3ff1d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Bishkek.json @@ -0,0 +1,116 @@ +({ + name: "date.timezone.Asia-Bishkek", + runTest: function(t){ + var tz = "Asia/Bishkek"; + doh.checkDate({tzOffset: -298.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -298.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -298.4, tzAbbr: "LMT"}, -1441169905000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "FRUT"}, -1441169904000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "FRUT"}, -1247547601000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, -1247547600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 354909599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 354909600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 370717199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 370717200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 402253199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 402253200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 417981599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 417981600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 433789199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 433789200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 449603999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 449604000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 465335999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 465336000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 481060799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 481060800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 496785599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 496785600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 512510399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 512510400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 528235199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 528235200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 543959999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 543960000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 559684799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 559684800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 575409599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 575409600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 591134399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 591134400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 606859199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 606859200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 622583999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 622584000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 638308799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 638308800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "FRUST"}, 654638399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 654638400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUT"}, 670363199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUST"}, 670363200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "FRUST"}, 683582399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 683582400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 703018799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 703018800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 717530399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 717530400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 734468399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 734468400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 748979999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 748980000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 765917999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 765918000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 780429599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 780429600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 797367599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 797367600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 811879199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 811879200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 828817199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 828817200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 843933599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 843933600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 859670999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 859671000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 877811399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 877811400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 891120599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 891120600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 909260999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 909261000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 922570199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 922570200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 941315399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 941315400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 954019799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 954019800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 972764999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 972765000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 985469399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 985469400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1004214599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1004214600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1017523799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1017523800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1035664199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1035664200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1048973399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1048973400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1067113799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1067113800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1080422999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1080423000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1099168199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1099168200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KGT"}, 1111872599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1111872600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGST"}, 1123783199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGT"}, 1123783200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KGT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "KGT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Brunei.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Brunei.json new file mode 100644 index 0000000..6b7b558 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Brunei.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Asia-Brunei", + runTest: function(t){ + var tz = "Asia/Brunei"; + doh.checkDate({tzOffset: -459.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -459.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -459.666666666667, tzAbbr: "LMT"}, -1383464381000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "BNT"}, -1383464380000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "BNT"}, -1167636601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BNT"}, -1167636600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BNT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BNT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BNT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "BNT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Choibalsan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Choibalsan.json new file mode 100644 index 0000000..da2f24d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Choibalsan.json @@ -0,0 +1,106 @@ +({ + name: "date.timezone.Asia-Choibalsan", + runTest: function(t){ + var tz = "Asia/Choibalsan"; + doh.checkDate({tzOffset: -458, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -458, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -458, tzAbbr: "LMT"}, -2032933081000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ULAT"}, -2032933080000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ULAT"}, 252435599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 252435600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 417974399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 417974400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 433778399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 433778400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 449593199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 449593200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 465314399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 465314400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 481042799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 481042800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 496763999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 496764000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 512492399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 512492400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 528213599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 528213600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 543941999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 543942000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 559663199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 559663200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 575391599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 575391600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 591112799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 591112800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 606841199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 606841200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 622562399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 622562400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 638290799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 638290800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 654616799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 654616800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 670345199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 670345200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 686066399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 686066400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 701794799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 701794800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 717515999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 717516000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 733244399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 733244400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 748965599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 748965600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 764693999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 764694000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 780415199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 780415200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 796143599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 796143600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 811864799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 811864800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 828197999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 828198000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 843919199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 843919200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 859647599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 859647600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 875368799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 875368800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 891097199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 891097200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 906818399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 906818400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 988390799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 988390800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1001692799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1001692800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1017421199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1017421200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1033142399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1033142400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1048870799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1048870800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1064591999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1064592000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1080320399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1080320400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1096041599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1096041600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1111769999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1111770000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1127491199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1127491200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1143219599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1143219600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "CHOST"}, 1159545599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1159545600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHOT"}, 1206889199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CHOT"}, 1206889200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CHOT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CHOT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CHOT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CHOT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Chongqing.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Chongqing.json new file mode 100644 index 0000000..bb51ded --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Chongqing.json @@ -0,0 +1,40 @@ +({ + name: "date.timezone.Asia-Chongqing", + runTest: function(t){ + var tz = "Asia/Chongqing"; + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "LMT"}, -1325487981000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "LONT"}, -1325487980000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "LONT"}, 325961999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 325962000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 515519999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 515520000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 527007599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 527007600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 545155199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 545155200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 558457199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 558457200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 576604799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 576604800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 589906799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 589906800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 608659199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 608659200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 621961199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 621961200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 640108799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 640108800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 653410799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 653410800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 671558399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 671558400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 684860399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 684860400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Colombo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Colombo.json new file mode 100644 index 0000000..661a9d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Colombo.json @@ -0,0 +1,26 @@ +({ + name: "date.timezone.Asia-Colombo", + runTest: function(t){ + var tz = "Asia/Colombo"; + doh.checkDate({tzOffset: -319.533333333333, tzAbbr: "MMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -319.533333333333, tzAbbr: "MMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -319.533333333333, tzAbbr: "MMT"}, -2019705573000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -2019705572000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -883287001000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "IHST"}, -883287000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "IHST"}, -862639201000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "IST"}, -862639200000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "IST"}, -764051401000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -764051400000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 832962599000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "LKT"}, 832962600000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "LKT"}, 846266399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "LKT"}, 846266400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "LKT"}, 1145039399000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 1145039400000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Damascus.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Damascus.json new file mode 100644 index 0000000..0b0f1f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Damascus.json @@ -0,0 +1,314 @@ +({ + name: "date.timezone.Asia-Damascus", + runTest: function(t){ + var tz = "Asia/Damascus"; + doh.checkDate({tzOffset: -145.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -145.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -145.2, tzAbbr: "LMT"}, -1577931913000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1577931912000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1568592001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1568592000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1554080401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1554080400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1537142401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1537142400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1522630801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1522630800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1505692801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1505692800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1491181201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1491181200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1474243201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1474243200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1459126801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1459126800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -242265601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -242265600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -228877201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -210556801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -210556800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -197427601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -197427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -178934401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -178934400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -165718801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -165718800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -147398401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -147398400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -134269201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -134269200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -116467201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -116467200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -102646801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -102646800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -84326401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -84326400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -71110801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -71110800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -52704001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -52704000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -39488401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -39488400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -21168001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -21168000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -7952401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -7952400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 10367999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 10368000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 23583599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 23583600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 41903999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 41904000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 55119599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 55119600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 73526399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 73526400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 86741999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 86742000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 105062399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 105062400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 118277999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 118278000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 136598399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 136598400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 149813999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 149814000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 168134399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 168134400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 181349999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 181350000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 199756799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 199756800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 212972399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 212972400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 231292799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 231292800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 241916399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 241916400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 262828799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 262828800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 273452399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 273452400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 418694399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 418694400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433810799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433810800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 450316799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 450316800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465433199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465433200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 508895999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 508896000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 529196399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 529196400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 541555199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 541555200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 562633199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 562633200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 574387199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 574387200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 594255599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 594255600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 607305599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 607305600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 623199599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 623199600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638927999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638928000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670456799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670456800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686264399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686264400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 702683999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 702684000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717886799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717886800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733096799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733096800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748904399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748904400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 765151199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 765151200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780958799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780958800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796687199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796687200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 812494799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 812494800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828309599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828309600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 844117199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 844117200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859759199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859759200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 875653199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 875653200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891208799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891208800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 907189199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 907189200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922917599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922917600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 938725199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 938725200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954539999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954540000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 970347599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 970347600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 986075999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 986076000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1001883599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1001883600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017611999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017612000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1033419599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1033419600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1049147999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1049148000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1064955599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1064955600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080770399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080770400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1096577999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1096578000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1112306399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1112306400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1128113999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1128114000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143842399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143842400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1158872399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1158872400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1175205599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1175205600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193950799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193950800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1207259999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1207260000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1225486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1225486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238104799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238104800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1257022799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1257022800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269554399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269554400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288558799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288558800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301003999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301004000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1320094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1320094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1333058399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1333058400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351717199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351717200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364507999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364508000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1383253199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1383253200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1395957599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1395957600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427407199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427407200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1446325199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1446325200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1458856799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1458856800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490911199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490911200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509483599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509483600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1522360799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1522360800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1541019599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1541019600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553810399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553810400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572555599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572555600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585259999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585260000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1604177999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1604178000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616709599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616709600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635713999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635714000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648159199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648159200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667249999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667250000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1680213599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1680213600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698785999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698786000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711663199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711663200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1730408399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1730408400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743112799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743112800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774562399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774562400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1793480399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1793480400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806011999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806012000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1825016399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1825016400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1838066399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1838066400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856638799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856638800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869515999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869516000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1888174799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1888174800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1900965599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1900965600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919710799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919710800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932415199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932415200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1951246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1951246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1963864799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1963864800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982869199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982869200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995314399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995314400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014405199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014405200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2027368799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2027368800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045941199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045941200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058818399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058818400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077477199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077477200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090267999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090268000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2109099599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2109099600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121717599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121717600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140635599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140635600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dhaka.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dhaka.json new file mode 100644 index 0000000..888dccc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dhaka.json @@ -0,0 +1,24 @@ +({ + name: "date.timezone.Asia-Dhaka", + runTest: function(t){ + var tz = "Asia/Dhaka"; + doh.checkDate({tzOffset: -353.333333333333, tzAbbr: "HMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -353.333333333333, tzAbbr: "HMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -353.333333333333, tzAbbr: "HMT"}, -891582801000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -891582800000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -872058601000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -872058600000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -862637401000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -862637400000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -576138601000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DACT"}, -576138600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DACT"}, 38771999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BDT"}, 38772000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BDT"}, 1245430799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "BDST"}, 1245430800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BDST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BDST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BDT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "BDST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dili.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dili.json new file mode 100644 index 0000000..06f172f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dili.json @@ -0,0 +1,22 @@ +({ + name: "date.timezone.Asia-Dili", + runTest: function(t){ + var tz = "Asia/Dili"; + doh.checkDate({tzOffset: -502.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -502.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -502.333333333333, tzAbbr: "LMT"}, -1830414141000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "TLT"}, -1830414140000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "TLT"}, -879152401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -879152400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -766054801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "TLT"}, -766054800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "TLT"}, 199897199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, 199897200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, 969119999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "TLT"}, 969120000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "TLT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "TLT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "TLT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -540, tzAbbr: "TLT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dubai.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dubai.json new file mode 100644 index 0000000..d9bafd4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dubai.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Asia-Dubai", + runTest: function(t){ + var tz = "Asia/Dubai"; + doh.checkDate({tzOffset: -221.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -221.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -221.2, tzAbbr: "LMT"}, -1577936473000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, -1577936472000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dushanbe.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dushanbe.json new file mode 100644 index 0000000..ca39c25 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Dushanbe.json @@ -0,0 +1,60 @@ +({ + name: "date.timezone.Asia-Dushanbe", + runTest: function(t){ + var tz = "Asia/Dushanbe"; + doh.checkDate({tzOffset: -275.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -275.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -275.2, tzAbbr: "LMT"}, -1441168513000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "DUST"}, -1441168512000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "DUST"}, -1247547601000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, -1247547600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 354909599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 354909600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 370717199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 370717200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 402253199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 402253200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 417981599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 417981600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 433789199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 433789200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 449603999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 449604000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 465335999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 465336000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 481060799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 481060800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 496785599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 496785600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 512510399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 512510400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 528235199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 528235200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 543959999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 543960000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 559684799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 559684800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 575409599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 575409600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 591134399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 591134400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 606859199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 606859200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 622583999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 622584000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 638308799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 638308800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "DUSST"}, 654638399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 654638400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUST"}, 670363199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUSST"}, 670363200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "DUSST"}, 684363599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TJT"}, 684363600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TJT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TJT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TJT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "TJT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Gaza.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Gaza.json new file mode 100644 index 0000000..592cada --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Gaza.json @@ -0,0 +1,298 @@ +({ + name: "date.timezone.Asia-Gaza", + runTest: function(t){ + var tz = "Asia/Gaza"; + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -933645601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -933645600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -857358001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -857358000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -844300801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -844300800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -825822001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -825822000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -812685601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -812685600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -794199601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -794199600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -779853601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -779853600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -762656401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -762656400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -748310401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -748310400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EET"}, -731127601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -731127600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -399088801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -399088800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -386650801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -386650800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -368330401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -368330400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -355114801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -355114800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -336790801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -336790800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -323654401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -323654400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -305168401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -305168400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -292032001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -292032000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -273632401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -273632400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -260496001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -260496000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -242096401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -242096400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -228960001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -228960000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -210560401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -210560400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -197424001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -197424000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -178938001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -178938000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -165801601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -165801600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -147402001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -147402000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -134265601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -134265600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -115866001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -115866000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -102643201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -102643200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -84330001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -84330000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -81313201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -81313200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 142379999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 142380000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 150843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 150843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 167176799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 167176800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 178664399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 178664400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 482277599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 482277600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 495579599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 495579600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 516751199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 516751200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 526424399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 526424400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 545435999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 545436000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 558478799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 558478800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 576539999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 576540000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 589237199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 589237200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 609890399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 609890400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 620773199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 620773200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 651617999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 651618000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 669765599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 669765600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 683672399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 683672400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 715726799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 715726800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 733701599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 733701600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 747176399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 747176400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 765151199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 765151200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 778021199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 778021200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 796600799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 796600800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 810075599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 810075600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 820447199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 820447200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828655199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828655200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 843170399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 843170400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 860104799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 860104800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 874619999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 874620000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891554399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891554400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 906069599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 906069600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 924213599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 924213600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 939934799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 939934800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 956267999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 956268000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 971989199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 971989200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 987717599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 987717600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1003438799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1003438800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1019167199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1019167200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1034888399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1034888400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1050616799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1050616800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1066337999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1066338000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1082066399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1082066400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1096581599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1096581600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1113515999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1113516000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1128380399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1128380400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143842399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143842400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1158872399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1158872400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1175378399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1175378400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1189637999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1189638000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1207000799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1207000800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1219964399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1219964400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238104799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238104800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1254092399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1254092400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269554399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269554400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1285541999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1285542000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301003999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301004000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1316991599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1316991600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1333058399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1333058400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1348441199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1348441200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364507999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364508000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1380495599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1380495600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1395957599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1395957600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1411945199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1411945200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427407199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427407200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1443394799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1443394800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1458856799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1458856800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1474844399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1474844400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490911199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490911200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1506293999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1506294000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1522360799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1522360800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1537743599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1537743600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553810399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553810400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1569797999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1569798000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585259999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585260000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1601247599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1601247600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616709599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616709600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1632697199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1632697200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648159199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648159200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1664146799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1664146800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1680213599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1680213600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1695596399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1695596400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711663199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711663200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1727650799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1727650800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743112799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743112800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1759100399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1759100400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774562399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774562400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1790549999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1790550000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806011999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806012000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1821999599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1821999600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1838066399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1838066400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1853449199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1853449200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869515999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869516000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1884898799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1884898800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1900965599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1900965600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1916953199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1916953200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932415199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932415200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1948402799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1948402800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1963864799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1963864800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1979852399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1979852400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995314399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995314400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2011301999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2011302000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2027368799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2027368800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2042751599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2042751600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058818399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058818400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2074201199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2074201200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090267999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090268000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2106255599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2106255600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121717599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121717600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2137705199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2137705200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Harbin.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Harbin.json new file mode 100644 index 0000000..7b3a9d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Harbin.json @@ -0,0 +1,46 @@ +({ + name: "date.timezone.Asia-Harbin", + runTest: function(t){ + var tz = "Asia/Harbin"; + doh.checkDate({tzOffset: -506.733333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -506.733333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -506.733333333333, tzAbbr: "LMT"}, -1325492805000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "CHAT"}, -1325492804000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "CHAT"}, -1194078601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -1194078600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -946800001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHAT"}, -946800000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CHAT"}, -115894801000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "CHAT"}, -115894800000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "CHAT"}, 325956599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 325956600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 515519999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 515520000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 527007599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 527007600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 545155199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 545155200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 558457199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 558457200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 576604799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 576604800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 589906799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 589906800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 608659199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 608659200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 621961199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 621961200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 640108799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 640108800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 653410799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 653410800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 671558399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 671558400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 684860399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 684860400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ho_Chi_Minh.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ho_Chi_Minh.json new file mode 100644 index 0000000..cc42e55 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ho_Chi_Minh.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Asia-Ho_Chi_Minh", + runTest: function(t){ + var tz = "Asia/Ho_Chi_Minh"; + doh.checkDate({tzOffset: -426.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -426.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -426.666666666667, tzAbbr: "LMT"}, -2005974401000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "SMT"}, -2005974400000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "SMT"}, -1855983921000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1855983920000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1819954801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ICT"}, -1819954800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ICT"}, -1220428801000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1220428800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Hong_Kong.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Hong_Kong.json new file mode 100644 index 0000000..0ce8721 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Hong_Kong.json @@ -0,0 +1,150 @@ +({ + name: "date.timezone.Asia-Hong_Kong", + runTest: function(t){ + var tz = "Asia/Hong_Kong"; + doh.checkDate({tzOffset: -456.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -456.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -456.6, tzAbbr: "LMT"}, -2056692997000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -2056692996000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -747981001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -747981000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -728544601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -728544600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -717049801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -717049800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -694503001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -694503000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -683785801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -683785800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -668064601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -668064600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -654755401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -654755400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -636615001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -636615000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -623305801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -623305800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -605165401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -605165400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -591856201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -591856200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -573715801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -573715800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -559801801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -559801800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -542266201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -542266200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -528352201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -528352200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -510211801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -510211800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -498112201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -498112200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -478762201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -478762200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -466662601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -466662600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -446707801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -446707800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -435213001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -435213000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -415258201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -415258200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -403158601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -403158600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -383808601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -383808600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -371709001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -371709000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -352359001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -352359000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -340259401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -340259400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -320909401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -320909400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -308809801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -308809800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -288855001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -288855000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -277360201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -277360200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -257405401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -257405400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -245910601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -245910600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -225955801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -225955800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -213856201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -213856200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -194506201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -194506200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -182406601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -182406600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -163056601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -163056600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -148537801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -148537800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -132816601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -132816600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -117088201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -117088200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -101367001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -101367000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -85638601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -85638600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -69312601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -69312600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -53584201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -53584200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -37863001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -37863000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -22134601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -22134600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, -6413401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, -6413400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 9314999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 9315000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 25036199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 25036200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 40764599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 40764600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 56485799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 56485800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 72214199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 72214200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 88540199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 88540200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 104268599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 104268600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 119989799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 119989800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 135718199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 135718200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 151439399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 151439400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 167167799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 167167800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 182888999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 182889000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 198617399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 198617400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 214338599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 214338600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 230066999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 230067000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 245788199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 245788200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 295385399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 295385400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 309292199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 309292200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 326834999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 326835000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "HKST"}, 340741799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 340741800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "HKT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Hovd.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Hovd.json new file mode 100644 index 0000000..2ac3805 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Hovd.json @@ -0,0 +1,104 @@ +({ + name: "date.timezone.Asia-Hovd", + runTest: function(t){ + var tz = "Asia/Hovd"; + doh.checkDate({tzOffset: -366.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -366.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -366.6, tzAbbr: "LMT"}, -2032927597000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "HOVT"}, -2032927596000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "HOVT"}, 252439199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 252439200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 417977999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 417978000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 433785599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 433785600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 449600399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 449600400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 465321599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 465321600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 481049999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 481050000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 496771199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 496771200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 512499599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 512499600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 528220799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 528220800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 543949199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 543949200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 559670399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 559670400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 575398799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 575398800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 591119999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 591120000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 606848399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 606848400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 622569599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 622569600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 638297999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 638298000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 654623999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 654624000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 670352399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 670352400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 686073599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 686073600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 701801999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 701802000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 717523199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 717523200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 733251599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 733251600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 748972799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 748972800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 764701199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 764701200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 780422399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 780422400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 796150799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 796150800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 811871999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 811872000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 828205199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 828205200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 843926399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 843926400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 859654799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 859654800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 875375999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 875376000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 891104399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 891104400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 906825599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 906825600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 988397999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 988398000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1001699999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1001700000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1017428399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1017428400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1033149599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1033149600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1048877999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1048878000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1064599199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1064599200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1080327599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1080327600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1096048799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1096048800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1111777199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1111777200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1127498399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1127498400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1143226799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1143226800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "HOVST"}, 1159552799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1159552800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "HOVT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Irkutsk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Irkutsk.json new file mode 100644 index 0000000..75855b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Irkutsk.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Irkutsk", + runTest: function(t){ + var tz = "Asia/Irkutsk"; + doh.checkDate({tzOffset: -417.333333333333, tzAbbr: "IMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -417.333333333333, tzAbbr: "IMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -417.333333333333, tzAbbr: "IMT"}, -1575874641000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "IRKT"}, -1575874640000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "IRKT"}, -1247554801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, -1247554800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 354902399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 354902400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 370709999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 370710000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 386438399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 386438400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 402245999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 402246000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 417974399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 417974400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 433781999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 433782000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 449596799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 449596800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 465328799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 465328800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 481053599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 481053600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 496778399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 496778400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 512503199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 512503200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 528227999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 528228000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 543952799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 543952800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 559677599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 559677600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 575402399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 575402400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 591127199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 591127200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 606851999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 606852000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 622576799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 622576800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 638301599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 638301600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 654631199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 654631200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 670355999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKST"}, 670356000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKST"}, 686084399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "IRKT"}, 686084400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "IRKT"}, 695761199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 695761200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 701794799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 701794800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 717515999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 717516000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 733255199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 733255200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 748979999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 748980000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 764704799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 764704800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 780429599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 780429600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 796154399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 796154400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 811879199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 811879200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 828208799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 828208800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 846352799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 846352800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 859658399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 859658400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 877802399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 877802400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 891107999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 891108000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 909251999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 909252000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 922557599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 922557600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 941306399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 941306400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 954007199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 954007200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 972755999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 972756000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 985456799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 985456800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1004205599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1004205600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1017511199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1017511200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1035655199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1035655200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1048960799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1048960800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1067104799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1067104800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1080410399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1080410400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1099159199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1099159200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1111859999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1111860000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1130608799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1130608800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1143309599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1143309600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1162058399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1162058400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1174759199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1174759200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1193507999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1193508000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1206813599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1206813600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1224957599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1224957600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1238263199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1238263200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1256407199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1256407200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1269712799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1269712800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1288461599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1288461600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1301162399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1301162400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1319911199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1319911200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1332611999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1332612000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1351360799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1351360800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1364666399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1364666400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1382810399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1382810400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1396115999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1396116000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1414259999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1414260000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1427565599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1427565600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1445709599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1445709600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1459015199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1459015200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1477763999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1477764000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1490464799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1490464800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1509213599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1509213600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1521914399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1521914400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1540663199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1540663200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1553968799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1553968800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1572112799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1572112800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1585418399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1585418400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1603562399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1603562400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1616867999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1616868000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1635616799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1635616800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1648317599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1648317600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1667066399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1667066400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1679767199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1679767200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1698515999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1698516000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1711821599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1711821600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1729965599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1729965600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1743271199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1743271200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1761415199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1761415200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1774720799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1774720800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1792864799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1792864800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1806170399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1806170400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1824919199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1824919200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1837619999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1837620000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1856368799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1856368800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1869069599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1869069600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1887818399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1887818400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1901123999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1901124000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1919267999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1919268000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1932573599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1932573600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1950717599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1950717600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1964023199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1964023200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1982771999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1982772000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1995472799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1995472800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2014221599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2014221600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2026922399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2026922400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2045671199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2045671200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2058371999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2058372000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2077120799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2077120800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2090426399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2090426400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2108570399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2108570400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2121875999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2121876000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 2140019999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2140020000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "IRKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -540, tzAbbr: "IRKST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jakarta.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jakarta.json new file mode 100644 index 0000000..5f4c8cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jakarta.json @@ -0,0 +1,26 @@ +({ + name: "date.timezone.Asia-Jakarta", + runTest: function(t){ + var tz = "Asia/Jakarta"; + doh.checkDate({tzOffset: -427.2, tzAbbr: "JMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -427.2, tzAbbr: "JMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -427.2, tzAbbr: "JMT"}, -1451719201000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "JAVT"}, -1451719200000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "JAVT"}, -1172906401000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -1172906400000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -876641401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -876641400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -766054801000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -766054800000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -683883001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WIT"}, -683883000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WIT"}, -620812801000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -620812800000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -189415801000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, -189415800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jayapura.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jayapura.json new file mode 100644 index 0000000..191a752 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jayapura.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Asia-Jayapura", + runTest: function(t){ + var tz = "Asia/Jayapura"; + doh.checkDate({tzOffset: -562.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -562.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -562.8, tzAbbr: "LMT"}, -1172913769000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "EIT"}, -1172913768000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "EIT"}, -799491601000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -799491600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -189423001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "EIT"}, -189423000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "EIT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "EIT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "EIT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -540, tzAbbr: "EIT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jerusalem.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jerusalem.json new file mode 100644 index 0000000..46160c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Jerusalem.json @@ -0,0 +1,296 @@ +({ + name: "date.timezone.Asia-Jerusalem", + runTest: function(t){ + var tz = "Asia/Jerusalem"; + doh.checkDate({tzOffset: -140.666666666667, tzAbbr: "JMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -140.666666666667, tzAbbr: "JMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -140.666666666667, tzAbbr: "JMT"}, -1641003641000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -1641003640000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -933645601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -933645600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -857358001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -857358000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -844300801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -844300800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -825822001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -825822000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -812685601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -812685600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -794199601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -794199600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -779853601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -779853600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -762656401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -762656400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -748310401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -748310400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -731127601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -731127600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -681962401000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "IDDT"}, -681962400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "IDDT"}, -673243201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -673243200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -667962001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -667962000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -652327201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -652327200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -636426001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -636426000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -622087201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -622087200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -608947201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -608947200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -591847201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -591847200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -572486401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -572486400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -558576001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -558576000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -542851201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -542851200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -527731201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -527731200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -514425601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -514425600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -490845601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -490845600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -482986801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -482986800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -459475201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -459475200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -451537201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -451537200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -428551201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -428551200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -418262401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -418262400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -400032001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -400032000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, -387428401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, -387428400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 142379999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 142380000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 150843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 150843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 167176799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 167176800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 178664399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 178664400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 482277599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 482277600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 495579599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 495579600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 516751199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 516751200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 526424399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 526424400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 545435999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 545436000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 558478799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 558478800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 576539999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 576540000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 589237199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 589237200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 609890399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 609890400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 620773199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 620773200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 651617999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 651618000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 669765599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 669765600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 683672399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 683672400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 715726799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 715726800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 733701599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 733701600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 747176399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 747176400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 765151199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 765151200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 778021199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 778021200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 796600799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 796600800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 810075599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 810075600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 826840799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 826840800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 842821199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 842821200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 858895199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 858895200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 874184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 874184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 890344799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 890344800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 905029199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 905029200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 923011199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 923011200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 936313199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 936313200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 955670399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 955670400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 970783199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 970783200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 986770799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 986770800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1001282399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1001282400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1017356399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1017356400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1033941599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1033941600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1048805999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1048806000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1065131999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1065132000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1081292399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1081292400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1095803999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1095804000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1112313599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1112313600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1128812399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1128812400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1143763199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1143763200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1159657199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1159657200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1175212799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1175212800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1189897199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1189897200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1206662399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1206662400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1223161199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1223161200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1238111999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1238112000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1254005999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1254006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1269561599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1269561600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1284245999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1284246000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1301615999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1301616000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1317509999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1317510000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1333065599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1333065600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1348354799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1348354800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1364515199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1364515200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1378594799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1378594800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1395964799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1395964800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1411858799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1411858800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1427414399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1427414400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1442703599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1442703600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1459468799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1459468800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1475967599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1475967600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1490918399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1490918400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1506207599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1506207600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1522367999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1522368000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1537052399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1537052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1553817599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1553817600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1570316399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1570316400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1585267199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1585267200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1601161199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1601161200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1616716799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1616716800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1631401199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1631401200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1648771199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1648771200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1664665199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1664665200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1680220799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1680220800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1695509999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1695510000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1711670399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1711670400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1728169199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1728169200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1743119999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1743120000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1759013999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1759014000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1774569599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1774569600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1789858799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1789858800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1806019199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1806019200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1823122799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1823122800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1838073599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1838073600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1853362799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1853362800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1869523199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1869523200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1884207599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1884207600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1900972799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1900972800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1917471599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1917471600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1932422399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1932422400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1947711599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1947711600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1963871999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1963872000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1978556399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1978556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1995926399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1995926400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2011820399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2011820400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2027375999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2027376000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2042060399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2042060400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2058825599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2058825600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2075324399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2075324400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2090275199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2090275200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2106169199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2106169200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2121724799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2121724800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 2136409199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2136409200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "IST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "IDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kabul.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kabul.json new file mode 100644 index 0000000..015db30 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kabul.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Asia-Kabul", + runTest: function(t){ + var tz = "Asia/Kabul"; + doh.checkDate({tzOffset: -240, tzAbbr: "AFT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AFT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AFT"}, -788932801000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "AFT"}, -788932800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "AFT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "AFT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "AFT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -270, tzAbbr: "AFT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kamchatka.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kamchatka.json new file mode 100644 index 0000000..c69b861 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kamchatka.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Kamchatka", + runTest: function(t){ + var tz = "Asia/Kamchatka"; + doh.checkDate({tzOffset: -634.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -634.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -634.6, tzAbbr: "LMT"}, -1487759677000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PETT"}, -1487759676000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PETT"}, -1247569201000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, -1247569200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 354887999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 354888000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 370695599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 370695600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 386423999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 386424000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 402231599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 402231600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 417959999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 417960000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 433767599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 433767600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 449582399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 449582400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 465314399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 465314400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 481039199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 481039200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 496763999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 496764000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 512488799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 512488800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 528213599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 528213600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 543938399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 543938400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 559663199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 559663200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 575387999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 575388000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 591112799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 591112800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 606837599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 606837600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 622562399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 622562400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 638287199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 638287200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 654616799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 654616800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 670341599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETST"}, 670341600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETST"}, 686069999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PETT"}, 686070000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PETT"}, 695746799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 695746800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 701780399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 701780400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 717501599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 717501600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 733240799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 733240800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 748965599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 748965600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 764690399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 764690400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 780415199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 780415200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 796139999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 796140000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 811864799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 811864800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 828194399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 828194400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 846338399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 846338400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 859643999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 859644000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 877787999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 877788000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 891093599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 891093600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 909237599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 909237600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 922543199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 922543200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 941291999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 941292000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 953992799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 953992800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 972741599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 972741600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 985442399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 985442400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1004191199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1004191200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1017496799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1017496800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1035640799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1035640800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1048946399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1048946400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1067090399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1067090400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1080395999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1080396000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1099144799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1099144800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1111845599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1111845600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1130594399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1130594400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1143295199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1143295200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1162043999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1162044000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1174744799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1174744800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1193493599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1193493600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1206799199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1206799200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1224943199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1224943200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1238248799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1238248800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1256392799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1256392800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1269698399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1269698400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1288447199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1288447200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1301147999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1301148000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1319896799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1319896800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1332597599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1332597600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1351346399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1351346400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1364651999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1364652000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1382795999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1382796000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1396101599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1396101600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1414245599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1414245600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1427551199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1427551200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1445695199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1445695200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1459000799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1459000800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1477749599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1477749600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1490450399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1490450400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1509199199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1509199200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1521899999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1521900000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1540648799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1540648800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1553954399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1553954400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1572098399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1572098400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1585403999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1585404000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1603547999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1603548000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1616853599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1616853600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1635602399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1635602400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1648303199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1648303200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1667051999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1667052000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1679752799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1679752800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1698501599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1698501600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1711807199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1711807200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1729951199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1729951200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1743256799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1743256800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1761400799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1761400800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1774706399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1774706400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1792850399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1792850400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1806155999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1806156000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1824904799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1824904800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1837605599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1837605600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1856354399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1856354400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1869055199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1869055200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1887803999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1887804000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1901109599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1901109600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1919253599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1919253600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1932559199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1932559200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1950703199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1950703200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1964008799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1964008800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1982757599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1982757600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1995458399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1995458400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2014207199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2014207200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2026907999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2026908000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2045656799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2045656800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2058357599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2058357600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2077106399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2077106400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2090411999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2090412000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2108555999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2108556000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2121861599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2121861600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 2140005599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2140005600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "PETT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -780, tzAbbr: "PETST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Karachi.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Karachi.json new file mode 100644 index 0000000..7bc28d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Karachi.json @@ -0,0 +1,34 @@ +({ + name: "date.timezone.Asia-Karachi", + runTest: function(t){ + var tz = "Asia/Karachi"; + doh.checkDate({tzOffset: -268.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -268.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -268.2, tzAbbr: "LMT"}, -1988166493000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -1988166492000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -862637401000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "IST"}, -862637400000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "IST"}, -764145001000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -764145000000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -576135001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KART"}, -576135000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KART"}, 38775599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 38775600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 1018119659000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "PKST"}, 1018119660000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "PKST"}, 1033840859000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 1033840860000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 1212260399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "PKST"}, 1212260400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "PKST"}, 1225475999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 1225476000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 1239735599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "PKST"}, 1239735600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "PKST"}, 1257011999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 1257012000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "PKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "PKST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kashgar.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kashgar.json new file mode 100644 index 0000000..06c0010 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kashgar.json @@ -0,0 +1,42 @@ +({ + name: "date.timezone.Asia-Kashgar", + runTest: function(t){ + var tz = "Asia/Kashgar"; + doh.checkDate({tzOffset: -303.933333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -303.933333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -303.933333333333, tzAbbr: "LMT"}, -1325480637000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "KAST"}, -1325480636000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "KAST"}, -946791001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KAST"}, -946791000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KAST"}, 325969199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 325969200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 515519999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 515520000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 527007599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 527007600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 545155199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 545155200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 558457199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 558457200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 576604799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 576604800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 589906799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 589906800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 608659199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 608659200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 621961199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 621961200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 640108799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 640108800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 653410799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 653410800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 671558399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 671558400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 684860399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 684860400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kathmandu.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kathmandu.json new file mode 100644 index 0000000..868b276 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kathmandu.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Asia-Kathmandu", + runTest: function(t){ + var tz = "Asia/Kathmandu"; + doh.checkDate({tzOffset: -341.266666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -341.266666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -341.266666666667, tzAbbr: "LMT"}, -1577943677000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -1577943676000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 504901799000, tz, 1); + doh.checkDate({tzOffset: -345, tzAbbr: "NPT"}, 504901800000, tz, 1); + doh.checkDate({tzOffset: -345, tzAbbr: "NPT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -345, tzAbbr: "NPT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -345, tzAbbr: "NPT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -345, tzAbbr: "NPT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kolkata.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kolkata.json new file mode 100644 index 0000000..faff00a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kolkata.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Asia-Kolkata", + runTest: function(t){ + var tz = "Asia/Kolkata"; + doh.checkDate({tzOffset: -353.333333333333, tzAbbr: "HMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -353.333333333333, tzAbbr: "HMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -353.333333333333, tzAbbr: "HMT"}, -891582801000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -891582800000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -872058601000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -872058600000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -862637401000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "IST"}, -862637400000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "IST"}, -764145001000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -764145000000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Krasnoyarsk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Krasnoyarsk.json new file mode 100644 index 0000000..06d08d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Krasnoyarsk.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Krasnoyarsk", + runTest: function(t){ + var tz = "Asia/Krasnoyarsk"; + doh.checkDate({tzOffset: -371.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -371.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -371.333333333333, tzAbbr: "LMT"}, -1577513481000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KRAT"}, -1577513480000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KRAT"}, -1247551201000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, -1247551200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 354905999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 354906000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 370713599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 370713600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 386441999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 386442000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 402249599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 402249600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 417977999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 417978000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 433785599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 433785600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 449600399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 449600400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 465332399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 465332400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 481057199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 481057200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 496781999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 496782000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 512506799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 512506800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 528231599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 528231600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 543956399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 543956400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 559681199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 559681200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 575405999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 575406000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 591130799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 591130800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 606855599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 606855600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 622580399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 622580400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 638305199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 638305200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 654634799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 654634800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 670359599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAST"}, 670359600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAST"}, 686087999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KRAT"}, 686088000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KRAT"}, 695764799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 695764800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 701798399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 701798400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 717519599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 717519600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 733258799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 733258800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 748983599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 748983600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 764708399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 764708400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 780433199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 780433200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 796157999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 796158000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 811882799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 811882800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 828212399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 828212400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 846356399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 846356400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 859661999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 859662000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 877805999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 877806000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 891111599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 891111600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 909255599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 909255600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 922561199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 922561200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 941309999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 941310000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 954010799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 954010800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 972759599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 972759600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 985460399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 985460400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1004209199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1004209200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1017514799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1017514800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1035658799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1035658800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1048964399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1048964400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1067108399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1067108400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1080413999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1080414000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1099162799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1099162800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1111863599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1111863600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1130612399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1130612400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1143313199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1143313200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1162061999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1162062000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1174762799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1174762800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1193511599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1193511600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1206817199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1206817200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1224961199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1224961200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1238266799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1238266800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1256410799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1256410800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1269716399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1269716400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1288465199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1288465200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1301165999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1301166000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1319914799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1319914800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1332615599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1332615600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1351364399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1351364400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1364669999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1364670000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1382813999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1382814000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1396119599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1396119600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1414263599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1414263600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1427569199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1427569200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1445713199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1445713200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1459018799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1459018800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1477767599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1477767600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1490468399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1490468400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1509217199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1509217200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1521917999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1521918000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1540666799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1540666800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1553972399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1553972400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1572116399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1572116400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1585421999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1585422000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1603565999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1603566000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1616871599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1616871600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1635620399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1635620400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1648321199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1648321200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1667069999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1667070000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1679770799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1679770800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1698519599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1698519600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1711825199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1711825200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1729969199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1729969200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1743274799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1743274800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1761418799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1761418800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1774724399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1774724400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1792868399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1792868400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1806173999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1806174000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1824922799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1824922800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1837623599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1837623600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1856372399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1856372400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1869073199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1869073200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1887821999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1887822000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1901127599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1901127600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1919271599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1919271600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1932577199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1932577200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1950721199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1950721200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1964026799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1964026800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1982775599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1982775600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1995476399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1995476400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2014225199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2014225200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2026925999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2026926000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2045674799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2045674800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2058375599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2058375600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2077124399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2077124400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2090429999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2090430000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2108573999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2108574000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2121879599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2121879600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 2140023599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2140023600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "KRAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "KRAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuala_Lumpur.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuala_Lumpur.json new file mode 100644 index 0000000..2e9f1ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuala_Lumpur.json @@ -0,0 +1,26 @@ +({ + name: "date.timezone.Asia-Kuala_Lumpur", + runTest: function(t){ + var tz = "Asia/Kuala_Lumpur"; + doh.checkDate({tzOffset: -415.416666666667, tzAbbr: "SMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -415.416666666667, tzAbbr: "SMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -415.416666666667, tzAbbr: "SMT"}, -2038200926000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "MALT"}, -2038200925000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "MALT"}, -1167634801000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALST"}, -1167634800000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALST"}, -1073028001000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALT"}, -1073028000000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALT"}, -894180001000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, -894180000000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, -879665401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -879665400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -767005201000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, -767005200000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, 378664199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 378664200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuching.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuching.json new file mode 100644 index 0000000..a1ad3a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuching.json @@ -0,0 +1,50 @@ +({ + name: "date.timezone.Asia-Kuching", + runTest: function(t){ + var tz = "Asia/Kuching"; + doh.checkDate({tzOffset: -441.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -441.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -441.333333333333, tzAbbr: "LMT"}, -1383463281000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "BORT"}, -1383463280000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "BORT"}, -1167636601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -1167636600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -1082448001000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -1082448000000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -1074586801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -1074586800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -1050825601000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -1050825600000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -1042964401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -1042964400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -1019289601000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -1019289600000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -1011428401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -1011428400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -987753601000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -987753600000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -979892401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -979892400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -956217601000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -956217600000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -948356401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -948356400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -924595201000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -924595200000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -916734001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -916734000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -893059201000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -893059200000, tz, 1); + doh.checkDate({tzOffset: -500, tzAbbr: "BORTST"}, -885198001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -885198000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -879667201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -879667200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -767005201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, -767005200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "BORT"}, 378662399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 378662400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "MYT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuwait.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuwait.json new file mode 100644 index 0000000..7a00292 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Kuwait.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Asia-Kuwait", + runTest: function(t){ + var tz = "Asia/Kuwait"; + doh.checkDate({tzOffset: -191.933333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -191.933333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -191.933333333333, tzAbbr: "LMT"}, -631163517000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, -631163516000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Macau.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Macau.json new file mode 100644 index 0000000..7b07360 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Macau.json @@ -0,0 +1,96 @@ +({ + name: "date.timezone.Asia-Macau", + runTest: function(t){ + var tz = "Asia/Macau"; + doh.checkDate({tzOffset: -454.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -454.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -454.333333333333, tzAbbr: "LMT"}, -1830411261000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -1830411260000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -277360201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -277360200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -257405401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -257405400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -245910601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -245910600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -225955801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -225955800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -214473601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -214473600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -194506201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -194506200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -182406601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -182406600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -163056601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -163056600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -150969601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -150969600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -131619601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -131619600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -117088201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -117088200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -101367001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -101367000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -85638601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -85638600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -69312601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -69312600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -53584201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -53584200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -37863001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -37863000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -22134601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -22134600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, -6413401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, -6413400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 9314999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 9315000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 25036199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 25036200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 40764599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 40764600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 56485799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 56485800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 72201599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 72201600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 87922799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 87922800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 103651199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 103651200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 119977199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 119977200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 135705599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 135705600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 151439399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 151439400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 167167799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 167167800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 182888999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 182889000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 198617399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 198617400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 214338599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 214338600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 230066999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 230067000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 245788199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 245788200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 261503999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 261504000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 277225199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 277225200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 292953599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 292953600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 309279599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 309279600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 325007999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 325008000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MOST"}, 340729199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 340729200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "MOT"}, 945619199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 945619200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Magadan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Magadan.json new file mode 100644 index 0000000..e45fb77 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Magadan.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Magadan", + runTest: function(t){ + var tz = "Asia/Magadan"; + doh.checkDate({tzOffset: -603.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -603.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -603.2, tzAbbr: "LMT"}, -1441188193000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "MAGT"}, -1441188192000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "MAGT"}, -1247565601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, -1247565600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 354891599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 354891600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 370699199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 370699200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 386427599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 386427600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 402235199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 402235200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 417963599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 417963600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 433771199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 433771200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 449585999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 449586000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 465317999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 465318000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 481042799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 481042800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 496767599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 496767600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 512492399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 512492400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 528217199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 528217200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 543941999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 543942000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 559666799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 559666800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 575391599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 575391600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 591116399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 591116400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 606841199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 606841200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 622565999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 622566000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 638290799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 638290800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 654620399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 654620400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 670345199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGST"}, 670345200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGST"}, 686073599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "MAGT"}, 686073600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "MAGT"}, 695750399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 695750400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 701783999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 701784000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 717505199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 717505200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 733244399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 733244400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 748969199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 748969200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 764693999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 764694000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 780418799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 780418800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 796143599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 796143600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 811868399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 811868400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 828197999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 828198000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 846341999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 846342000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 859647599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 859647600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 877791599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 877791600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 891097199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 891097200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 909241199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 909241200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 922546799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 922546800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 941295599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 941295600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 953996399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 953996400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 972745199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 972745200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 985445999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 985446000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1004194799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1004194800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1017500399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1017500400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1035644399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1035644400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1048949999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1048950000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1067093999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1067094000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1080399599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1080399600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1099148399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1099148400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1111849199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1111849200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1130597999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1130598000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1143298799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1143298800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1162047599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1162047600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1174748399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1174748400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1193497199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1193497200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1206802799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1206802800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1224946799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1224946800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1238252399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1238252400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1256396399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1256396400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1269701999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1269702000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1288450799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1288450800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1301151599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1301151600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1319900399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1319900400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1332601199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1332601200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1351349999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1351350000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1364655599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1364655600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1382799599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1382799600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1396105199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1396105200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1414249199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1414249200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1427554799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1427554800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1445698799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1445698800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1459004399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1459004400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1477753199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1477753200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1490453999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1490454000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1509202799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1509202800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1521903599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1521903600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1540652399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1540652400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1553957999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1553958000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1572101999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1572102000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1585407599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1585407600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1603551599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1603551600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1616857199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1616857200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1635605999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1635606000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1648306799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1648306800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1667055599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1667055600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1679756399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1679756400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1698505199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1698505200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1711810799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1711810800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1729954799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1729954800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1743260399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1743260400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1761404399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1761404400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1774709999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1774710000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1792853999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1792854000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1806159599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1806159600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1824908399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1824908400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1837609199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1837609200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1856357999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1856358000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1869058799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1869058800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1887807599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1887807600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1901113199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1901113200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1919257199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1919257200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1932562799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1932562800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1950706799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1950706800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1964012399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1964012400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1982761199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1982761200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1995461999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1995462000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2014210799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2014210800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2026911599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2026911600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2045660399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2045660400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2058361199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2058361200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2077109999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2077110000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2090415599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2090415600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2108559599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2108559600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2121865199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2121865200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 2140009199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2140009200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MAGT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "MAGST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Makassar.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Makassar.json new file mode 100644 index 0000000..0887892 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Makassar.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Asia-Makassar", + runTest: function(t){ + var tz = "Asia/Makassar"; + doh.checkDate({tzOffset: -477.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -477.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -477.6, tzAbbr: "LMT"}, -1577951857000, tz, 1); + doh.checkDate({tzOffset: -477.6, tzAbbr: "MMT"}, -1577951856000, tz, 1); + doh.checkDate({tzOffset: -477.6, tzAbbr: "MMT"}, -1172908657000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, -1172908656000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, -880272001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -880272000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -766054801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, -766054800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Manila.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Manila.json new file mode 100644 index 0000000..745fd55 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Manila.json @@ -0,0 +1,28 @@ +({ + name: "date.timezone.Asia-Manila", + runTest: function(t){ + var tz = "Asia/Manila"; + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -1046678401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PHST"}, -1046678400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PHST"}, -1038733201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -1038733200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -873273601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -873273600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -794221201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -794221200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -496224001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PHST"}, -496224000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PHST"}, -489315601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, -489315600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, 259343999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PHST"}, 259344000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PHST"}, 275151599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, 275151600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "PHT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Muscat.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Muscat.json new file mode 100644 index 0000000..72b62bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Muscat.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Asia-Muscat", + runTest: function(t){ + var tz = "Asia/Muscat"; + doh.checkDate({tzOffset: -234.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -234.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -234.333333333333, tzAbbr: "LMT"}, -1577937261000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, -1577937260000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Nicosia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Nicosia.json new file mode 100644 index 0000000..44a0489 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Nicosia.json @@ -0,0 +1,266 @@ +({ + name: "date.timezone.Asia-Nicosia", + runTest: function(t){ + var tz = "Asia/Nicosia"; + doh.checkDate({tzOffset: -133.466666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -133.466666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -133.466666666667, tzAbbr: "LMT"}, -1518920009000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1518920008000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 166571999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 166572000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 182293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 182293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 200959199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 200959200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 213829199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 213829200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 228866399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 228866400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 243982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 243982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 260315999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 260316000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 276123599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 276123600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 291765599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 291765600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 307486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 307486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 323819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 323820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 338936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 338936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 354664799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 354664800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 370385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 370386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 386114399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 386114400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 401835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 401835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 417563999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 417564000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 449013599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 449013600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 481067999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 481068000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512517599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512517600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 543967199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 543967200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575416799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575416800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 606866399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606866400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670370399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670370400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796168799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796168800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 843944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 843944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859672799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859672800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 875393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 875394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891122399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891122400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Novosibirsk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Novosibirsk.json new file mode 100644 index 0000000..779b176 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Novosibirsk.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Asia-Novosibirsk", + runTest: function(t){ + var tz = "Asia/Novosibirsk"; + doh.checkDate({tzOffset: -331.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -331.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -331.666666666667, tzAbbr: "LMT"}, -1579476701000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, -1579476700000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, -1247551201000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, -1247551200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 354905999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 354906000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 370713599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 370713600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 386441999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 386442000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 402249599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 402249600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 417977999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 417978000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 433785599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 433785600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 449600399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 449600400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 465332399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 465332400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 481057199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 481057200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 496781999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 496782000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 512506799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 512506800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 528231599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 528231600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 543956399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 543956400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 559681199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 559681200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 575405999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 575406000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 591130799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 591130800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 606855599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 606855600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 622580399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 622580400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 638305199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 638305200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 654634799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 654634800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 670359599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 670359600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 686087999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 686088000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 695764799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 695764800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 701798399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 701798400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 717519599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 717519600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVT"}, 733258799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 733258800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "NOVST"}, 738086399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 738086400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 748987199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 748987200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 764711999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 764712000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 780436799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 780436800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 796161599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 796161600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 811886399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 811886400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 828215999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 828216000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 846359999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 846360000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 859665599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 859665600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 877809599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 877809600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 891115199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 891115200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 909259199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 909259200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 922564799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 922564800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 941313599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 941313600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 954014399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 954014400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 972763199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 972763200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 985463999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 985464000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1004212799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1004212800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1017518399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1017518400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1035662399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1035662400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1048967999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1048968000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1067111999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1067112000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1080417599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1080417600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1099166399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1099166400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1111867199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1111867200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1130615999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1130616000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1143316799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1143316800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1162065599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1162065600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1174766399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1174766400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1193515199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1193515200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1206820799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1206820800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1224964799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1224964800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1238270399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1238270400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1256414399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1256414400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1269719999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1269720000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1288468799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1288468800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1301169599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1301169600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1319918399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1319918400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1332619199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1332619200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1351367999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1351368000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1364673599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1364673600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1382817599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1382817600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1396123199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1396123200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1414267199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1414267200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1427572799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1427572800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1445716799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1445716800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1459022399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1459022400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1477771199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1477771200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1490471999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1490472000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1509220799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1509220800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1521921599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1521921600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1540670399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1540670400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1553975999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1553976000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1572119999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1572120000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1585425599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1585425600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1603569599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1603569600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1616875199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1616875200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1635623999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1635624000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1648324799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1648324800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1667073599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1667073600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1679774399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1679774400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1698523199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1698523200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1711828799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1711828800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1729972799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1729972800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1743278399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1743278400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1761422399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1761422400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1774727999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1774728000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1792871999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1792872000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1806177599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1806177600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1824926399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1824926400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1837627199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1837627200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1856375999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1856376000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1869076799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1869076800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1887825599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1887825600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1901131199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1901131200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1919275199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1919275200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1932580799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1932580800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1950724799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1950724800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1964030399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1964030400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1982779199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1982779200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1995479999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1995480000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2014228799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2014228800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2026929599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2026929600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2045678399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2045678400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2058379199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2058379200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2077127999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2077128000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2090433599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2090433600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2108577599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2108577600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2121883199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2121883200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 2140027199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2140027200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "NOVT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "NOVST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Omsk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Omsk.json new file mode 100644 index 0000000..b46d34d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Omsk.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Omsk", + runTest: function(t){ + var tz = "Asia/Omsk"; + doh.checkDate({tzOffset: -293.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -293.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -293.6, tzAbbr: "LMT"}, -1582088017000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "OMST"}, -1582088016000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "OMST"}, -1247547601000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, -1247547600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 354909599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 354909600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 370717199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 370717200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 402253199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 402253200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 417981599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 417981600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 433789199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 433789200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 449603999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 449604000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 465335999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 465336000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 481060799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 481060800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 496785599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 496785600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 512510399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 512510400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 528235199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 528235200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 543959999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 543960000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 559684799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 559684800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 575409599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 575409600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 591134399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 591134400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 606859199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 606859200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 622583999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 622584000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 638308799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 638308800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 654638399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 654638400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 670363199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMSST"}, 670363200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMSST"}, 686091599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "OMST"}, 686091600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "OMST"}, 695768399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 695768400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 701801999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 701802000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 717523199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 717523200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 733262399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 733262400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 748987199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 748987200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 764711999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 764712000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 780436799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 780436800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 796161599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 796161600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 811886399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 811886400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 828215999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 828216000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 846359999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 846360000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 859665599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 859665600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 877809599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 877809600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 891115199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 891115200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 909259199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 909259200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 922564799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 922564800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 941313599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 941313600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 954014399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 954014400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 972763199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 972763200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 985463999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 985464000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1004212799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1004212800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1017518399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1017518400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1035662399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1035662400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1048967999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1048968000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1067111999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1067112000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1080417599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1080417600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1099166399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1099166400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1111867199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1111867200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1130615999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1130616000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1143316799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1143316800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1162065599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1162065600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1174766399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1174766400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1193515199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1193515200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1206820799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1206820800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1224964799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1224964800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1238270399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1238270400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1256414399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1256414400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1269719999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1269720000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1288468799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1288468800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1301169599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1301169600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1319918399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1319918400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1332619199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1332619200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1351367999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1351368000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1364673599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1364673600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1382817599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1382817600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1396123199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1396123200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1414267199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1414267200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1427572799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1427572800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1445716799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1445716800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1459022399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1459022400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1477771199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1477771200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1490471999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1490472000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1509220799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1509220800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1521921599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1521921600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1540670399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1540670400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1553975999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1553976000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1572119999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1572120000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1585425599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1585425600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1603569599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1603569600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1616875199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1616875200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1635623999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1635624000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1648324799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1648324800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1667073599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1667073600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1679774399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1679774400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1698523199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1698523200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1711828799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1711828800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1729972799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1729972800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1743278399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1743278400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1761422399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1761422400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1774727999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1774728000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1792871999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1792872000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1806177599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1806177600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1824926399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1824926400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1837627199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1837627200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1856375999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1856376000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1869076799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1869076800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1887825599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1887825600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1901131199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1901131200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1919275199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1919275200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1932580799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1932580800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1950724799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1950724800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1964030399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1964030400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1982779199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1982779200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1995479999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1995480000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2014228799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2014228800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2026929599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2026929600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2045678399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2045678400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2058379199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2058379200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2077127999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2077128000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2090433599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2090433600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2108577599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2108577600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2121883199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2121883200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 2140027199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2140027200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "OMST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "OMSST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Oral.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Oral.json new file mode 100644 index 0000000..ea232fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Oral.json @@ -0,0 +1,112 @@ +({ + name: "date.timezone.Asia-Oral", + runTest: function(t){ + var tz = "Asia/Oral"; + doh.checkDate({tzOffset: -205.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -205.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -205.4, tzAbbr: "LMT"}, -1441164325000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "URAT"}, -1441164324000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "URAT"}, -1247544001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, -1247544000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 354913199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 354913200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 370720799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAT"}, 370720800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAT"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 402256799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 402256800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 417985199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 417985200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 433792799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 433792800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 449607599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 449607600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 481064399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 481064400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 512513999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 512514000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 543963599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 543963600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 575413199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 575413200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URAST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAT"}, 606862799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAST"}, 606862800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAST"}, 622591199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "URAT"}, 622591200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "URAT"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAST"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "URAST"}, 654645599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "URAT"}, 654645600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "URAT"}, 692827199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 692827200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 701809199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 701809200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 717530399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 717530400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 748994399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 748994400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 780443999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 780444000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 796168799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 796168800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 811893599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 811893600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 846367199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 846367200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 859672799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 859672800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 877816799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 877816800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 891122399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 891122400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 909266399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 909266400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 922571999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 922572000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 941320799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 941320800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 954021599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 954021600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 972770399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 972770400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 985471199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 985471200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 1004219999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1004220000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1017525599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 1017525600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 1035669599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1035669600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1048975199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 1048975200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 1067119199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1067119200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1080424799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 1080424800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAST"}, 1099173599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1099173600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "ORAT"}, 1110830399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAT"}, 1110830400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "ORAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Phnom_Penh.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Phnom_Penh.json new file mode 100644 index 0000000..9cb0e16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Phnom_Penh.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Asia-Phnom_Penh", + runTest: function(t){ + var tz = "Asia/Phnom_Penh"; + doh.checkDate({tzOffset: -419.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -419.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -419.666666666667, tzAbbr: "LMT"}, -2005973981000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "SMT"}, -2005973980000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "SMT"}, -1855983921000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1855983920000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1819954801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ICT"}, -1819954800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ICT"}, -1220428801000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1220428800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Pontianak.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Pontianak.json new file mode 100644 index 0000000..88906cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Pontianak.json @@ -0,0 +1,28 @@ +({ + name: "date.timezone.Asia-Pontianak", + runTest: function(t){ + var tz = "Asia/Pontianak"; + doh.checkDate({tzOffset: -437.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -437.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -437.333333333333, tzAbbr: "LMT"}, -1946186241000, tz, 1); + doh.checkDate({tzOffset: -437.333333333333, tzAbbr: "PMT"}, -1946186240000, tz, 1); + doh.checkDate({tzOffset: -437.333333333333, tzAbbr: "PMT"}, -1172906241000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -1172906240000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -881220601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -881220600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -766054801000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -766054800000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -683883001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WIT"}, -683883000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WIT"}, -620812801000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -620812800000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "WIT"}, -189415801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, -189415800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CIT"}, 567964799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 567964800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "WIT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Pyongyang.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Pyongyang.json new file mode 100644 index 0000000..e014498 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Pyongyang.json @@ -0,0 +1,22 @@ +({ + name: "date.timezone.Asia-Pyongyang", + runTest: function(t){ + var tz = "Asia/Pyongyang"; + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -2053931401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -2053931400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -1325494801000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -1325494800000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -1199262601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -1199262600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -498128401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KST"}, -498128400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KST"}, -264931201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -264931200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Qatar.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Qatar.json new file mode 100644 index 0000000..7b2e217 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Qatar.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Asia-Qatar", + runTest: function(t){ + var tz = "Asia/Qatar"; + doh.checkDate({tzOffset: -206.133333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -206.133333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -206.133333333333, tzAbbr: "LMT"}, -1577935569000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, -1577935568000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GST"}, 76190399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 76190400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Qyzylorda.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Qyzylorda.json new file mode 100644 index 0000000..b825f07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Qyzylorda.json @@ -0,0 +1,112 @@ +({ + name: "date.timezone.Asia-Qyzylorda", + runTest: function(t){ + var tz = "Asia/Qyzylorda"; + doh.checkDate({tzOffset: -261.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -261.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -261.866666666667, tzAbbr: "LMT"}, -1441167713000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KIZT"}, -1441167712000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KIZT"}, -1247544001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, -1247544000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 354913199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 354913200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 370720799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZT"}, 370720800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZT"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 402256799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 402256800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 417985199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 417985200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 433792799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 433792800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 449607599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 449607600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 481064399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 481064400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 512513999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 512514000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 543963599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 543963600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 575413199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 575413200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 606862799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 606862800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 622587599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 622587600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 638312399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 638312400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "KIZST"}, 654641999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 654642000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KIZT"}, 692823599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "QYZT"}, 692823600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "QYZT"}, 695768399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 695768400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 701801999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 701802000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 717523199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 717523200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 733262399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 733262400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 748987199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 748987200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 764711999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 764712000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 780436799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 780436800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 796161599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 796161600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 811886399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 811886400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 828215999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 828216000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 846359999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 846360000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 859665599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 859665600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 877809599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 877809600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 891115199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 891115200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 909259199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 909259200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 922564799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 922564800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 941313599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 941313600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 954014399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 954014400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 972763199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 972763200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 985463999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 985464000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 1004212799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1004212800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1017518399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 1017518400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 1035662399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1035662400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1048967999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 1048968000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 1067111999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1067112000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1080417599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 1080417600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "QYZST"}, 1099166399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1099166400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "QYZT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Rangoon.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Rangoon.json new file mode 100644 index 0000000..12fb842 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Rangoon.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Asia-Rangoon", + runTest: function(t){ + var tz = "Asia/Rangoon"; + doh.checkDate({tzOffset: -384.6, tzAbbr: "RMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -384.6, tzAbbr: "RMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -384.6, tzAbbr: "RMT"}, -1577946277000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -1577946276000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "BURT"}, -873268201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -873268200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -778410001000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "MMT"}, -778410000000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "MMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "MMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "MMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -390, tzAbbr: "MMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Riyadh.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Riyadh.json new file mode 100644 index 0000000..6c9f38e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Riyadh.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Asia-Riyadh", + runTest: function(t){ + var tz = "Asia/Riyadh"; + doh.checkDate({tzOffset: -186.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -186.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -186.866666666667, tzAbbr: "LMT"}, -631163213000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, -631163212000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "AST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Sakhalin.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Sakhalin.json new file mode 100644 index 0000000..51668e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Sakhalin.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Asia-Sakhalin", + runTest: function(t){ + var tz = "Asia/Sakhalin"; + doh.checkDate({tzOffset: -570.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -570.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -570.8, tzAbbr: "LMT"}, -2031039049000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CJT"}, -2031039048000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CJT"}, -1009875601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -1009875600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -768560401000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, -768560400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 354891599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 354891600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 370699199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 370699200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 386427599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 386427600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 402235199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 402235200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 417963599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 417963600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 433771199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 433771200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 449585999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 449586000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 465317999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 465318000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 481042799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 481042800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 496767599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 496767600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 512492399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 512492400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 528217199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 528217200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 543941999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 543942000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 559666799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 559666800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 575391599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 575391600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 591116399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 591116400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 606841199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 606841200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 622565999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 622566000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 638290799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 638290800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 654620399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 654620400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 670345199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 670345200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 686073599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 686073600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 695750399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 695750400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 701783999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 701784000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 717505199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 717505200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 733244399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 733244400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 748969199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 748969200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 764693999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 764694000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 780418799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 780418800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 796143599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 796143600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 811868399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 811868400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 828197999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 828198000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "SAKST"}, 846341999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 846342000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKT"}, 859647599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 859647600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 877795199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 877795200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 891100799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 891100800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 909244799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 909244800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 922550399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 922550400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 941299199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 941299200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 953999999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 954000000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 972748799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 972748800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 985449599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 985449600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1004198399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1004198400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1017503999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1017504000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1035647999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1035648000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1048953599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1048953600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1067097599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1067097600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1080403199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1080403200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1099151999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1099152000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1111852799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1111852800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1130601599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1130601600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1143302399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1143302400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1162051199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1162051200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1174751999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1174752000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1193500799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1193500800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1206806399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1206806400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1224950399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1224950400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1238255999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1238256000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1256399999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1256400000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1269705599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1269705600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1288454399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1288454400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1301155199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1301155200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1319903999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1319904000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1332604799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1332604800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1351353599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1351353600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1364659199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1364659200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1382803199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1382803200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1396108799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1396108800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1414252799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1414252800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1427558399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1427558400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1445702399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1445702400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1459007999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1459008000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1477756799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1477756800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1490457599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1490457600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1509206399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1509206400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1521907199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1521907200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1540655999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1540656000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1553961599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1553961600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1572105599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1572105600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1585411199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1585411200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1603555199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1603555200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1616860799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1616860800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1635609599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1635609600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1648310399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1648310400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1667059199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1667059200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1679759999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1679760000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1698508799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1698508800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1711814399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1711814400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1729958399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1729958400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1743263999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1743264000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1761407999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1761408000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1774713599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1774713600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1792857599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1792857600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1806163199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1806163200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1824911999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1824912000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1837612799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1837612800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1856361599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1856361600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1869062399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1869062400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1887811199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1887811200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1901116799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1901116800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1919260799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1919260800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1932566399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1932566400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1950710399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1950710400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1964015999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1964016000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1982764799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1982764800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1995465599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1995465600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2014214399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2014214400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2026915199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2026915200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2045663999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2045664000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2058364799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2058364800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2077113599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2077113600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2090419199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2090419200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2108563199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2108563200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2121868799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2121868800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 2140012799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2140012800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "SAKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -660, tzAbbr: "SAKST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Samarkand.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Samarkand.json new file mode 100644 index 0000000..5e74000 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Samarkand.json @@ -0,0 +1,62 @@ +({ + name: "date.timezone.Asia-Samarkand", + runTest: function(t){ + var tz = "Asia/Samarkand"; + doh.checkDate({tzOffset: -267.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -267.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -267.2, tzAbbr: "LMT"}, -1441168033000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, -1441168032000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, -1247544001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, -1247544000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 354913199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 354913200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 370720799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 370720800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 402256799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 402256800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 417985199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 417985200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 433792799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 433792800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 449607599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 449607600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 481064399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 481064400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 512513999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 512514000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 543963599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 543963600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 575413199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 575413200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 606862799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 606862800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 622587599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 622587600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 638312399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 638312400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 654641999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 654642000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMT"}, 670366799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 670366800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SAMST"}, 683661599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "UZST"}, 683661600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "UZST"}, 686091599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 686091600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Seoul.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Seoul.json new file mode 100644 index 0000000..d95be34 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Seoul.json @@ -0,0 +1,36 @@ +({ + name: "date.timezone.Asia-Seoul", + runTest: function(t){ + var tz = "Asia/Seoul"; + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -2053931401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -2053931400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -1325494801000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -1325494800000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -1199262601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -1199262600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -498128401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KST"}, -498128400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KST"}, -303984001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KDT"}, -303984000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KDT"}, -293533201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KST"}, -293533200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "KST"}, -264931201000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -264931200000, tz, 1); + doh.checkDate({tzOffset: -510, tzAbbr: "KST"}, -39515401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, -39515400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 547570799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "KDT"}, 547570800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "KDT"}, 560872799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 560872800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 579020399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "KDT"}, 579020400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "KDT"}, 592322399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 592322400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -540, tzAbbr: "KST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Shanghai.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Shanghai.json new file mode 100644 index 0000000..7c40aa8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Shanghai.json @@ -0,0 +1,46 @@ +({ + name: "date.timezone.Asia-Shanghai", + runTest: function(t){ + var tz = "Asia/Shanghai"; + doh.checkDate({tzOffset: -485.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -485.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -485.866666666667, tzAbbr: "LMT"}, -1325491553000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -1325491552000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -933494401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -933494400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -923130001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -923130000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -908784001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -908784000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -891594001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -891594000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 515519999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 515520000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 527007599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 527007600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 545155199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 545155200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 558457199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 558457200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 576604799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 576604800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 589906799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 589906800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 608659199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 608659200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 621961199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 621961200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 640108799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 640108800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 653410799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 653410800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 671558399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 671558400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 684860399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 684860400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Singapore.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Singapore.json new file mode 100644 index 0000000..3247527 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Singapore.json @@ -0,0 +1,28 @@ +({ + name: "date.timezone.Asia-Singapore", + runTest: function(t){ + var tz = "Asia/Singapore"; + doh.checkDate({tzOffset: -415.416666666667, tzAbbr: "SMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -415.416666666667, tzAbbr: "SMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -415.416666666667, tzAbbr: "SMT"}, -2038200926000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "MALT"}, -2038200925000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "MALT"}, -1167634801000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALST"}, -1167634800000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALST"}, -1073028001000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALT"}, -1073028000000, tz, 1); + doh.checkDate({tzOffset: -440, tzAbbr: "MALT"}, -894180001000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, -894180000000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, -879665401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -879665400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -767005201000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, -767005200000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "MALT"}, -138785401000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "SGT"}, -138785400000, tz, 1); + doh.checkDate({tzOffset: -450, tzAbbr: "SGT"}, 378664199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "SGT"}, 378664200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "SGT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "SGT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "SGT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "SGT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Taipei.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Taipei.json new file mode 100644 index 0000000..752c57c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Taipei.json @@ -0,0 +1,92 @@ +({ + name: "date.timezone.Asia-Taipei", + runTest: function(t){ + var tz = "Asia/Taipei"; + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -778579201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -778579200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -765363601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -765363600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -747043201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -747043200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -733827601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -733827600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -715507201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -715507200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -702291601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -702291600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -683884801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -683884800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -670669201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -670669200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -652348801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -652348800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -639133201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -639133200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -620812801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -620812800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -607597201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -607597200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -589276801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -589276800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -576061201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -576061200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -562924801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -562924800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -541760401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -541760400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -528710401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -528710400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -510224401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -510224400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -497174401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -497174400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -478688401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -478688400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -465638401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -465638400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -449830801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -449830800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -434016001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -434016000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -418208401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -418208400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -402480001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -402480000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -386672401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -386672400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -370944001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -370944000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -355136401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -355136400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -339408001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -339408000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -323600401000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -323600400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -302515201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -302515200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -291978001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -291978000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -270979201000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -270979200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, -260442001000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, -260442000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 133977599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 133977600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 149785199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 149785200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 165513599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 165513600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 181321199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 181321200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 331142399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 331142400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 339087599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 339087600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tashkent.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tashkent.json new file mode 100644 index 0000000..01951ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tashkent.json @@ -0,0 +1,62 @@ +({ + name: "date.timezone.Asia-Tashkent", + runTest: function(t){ + var tz = "Asia/Tashkent"; + doh.checkDate({tzOffset: -277.2, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -277.2, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -277.2, tzAbbr: "LMT"}, -1441168633000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TAST"}, -1441168632000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TAST"}, -1247547601000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, -1247547600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 354909599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 354909600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 370717199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 370717200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 386445599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 386445600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 402253199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 402253200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 417981599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 417981600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 433789199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 433789200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 449603999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 449604000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 465335999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 465336000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 481060799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 481060800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 496785599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 496785600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 512510399000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 512510400000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 528235199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 528235200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 543959999000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 543960000000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 559684799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 559684800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 575409599000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 575409600000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 591134399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 591134400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 606859199000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 606859200000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 622583999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 622584000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 638308799000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 638308800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "TASST"}, 654638399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 654638400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TAST"}, 670363199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TASST"}, 670363200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "TASST"}, 683661599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "UZST"}, 683661600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "UZST"}, 686091599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 686091600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "UZT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tbilisi.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tbilisi.json new file mode 100644 index 0000000..94c1ba8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tbilisi.json @@ -0,0 +1,114 @@ +({ + name: "date.timezone.Asia-Tbilisi", + runTest: function(t){ + var tz = "Asia/Tbilisi"; + doh.checkDate({tzOffset: -179.266666666667, tzAbbr: "TBMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -179.266666666667, tzAbbr: "TBMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -179.266666666667, tzAbbr: "TBMT"}, -1441162757000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TBIT"}, -1441162756000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TBIT"}, -405140401000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, -405140400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 354916799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 354916800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 370724399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 370724400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 386452799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 386452800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 402260399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 402260400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 417988799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 417988800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 433796399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 433796400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 449611199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 449611200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 465343199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 465343200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 481067999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 481068000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 496792799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 496792800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 512517599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 512517600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 528242399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 528242400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 543967199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 543967200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 559691999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 559692000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 575416799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 575416800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 591141599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 591141600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 606866399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 606866400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 622591199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 622591200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TBIST"}, 654645599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 654645600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIT"}, 670370399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIST"}, 670370400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TBIST"}, 671140799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 671140800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 686098799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 686098800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 701816399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 701816400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 717537599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 717537600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 733265999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 733266000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 748987199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 748987200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 764715599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 764715600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 780436799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 780436800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 796161599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 796161600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 811882799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 811882800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 828215999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 828216000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 877805999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 877806000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 891115199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 891115200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 909255599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 909255600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 922564799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 922564800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 941309999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 941310000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 954014399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 954014400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 972759599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 972759600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 985463999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 985464000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 1004209199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1004209200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1017518399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 1017518400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 1035658799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1035658800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1048967999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 1048968000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 1067108399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1067108400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1080417599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 1080417600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "GEST"}, 1088276399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 1088276400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GEST"}, 1099177199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 1099177200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "GET"}, 1111877999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1111878000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "GET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tehran.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tehran.json new file mode 100644 index 0000000..20dd4db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tehran.json @@ -0,0 +1,212 @@ +({ + name: "date.timezone.Asia-Tehran", + runTest: function(t){ + var tz = "Asia/Tehran"; + doh.checkDate({tzOffset: -205.733333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -205.733333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -205.733333333333, tzAbbr: "LMT"}, -1704165945000, tz, 1); + doh.checkDate({tzOffset: -205.733333333333, tzAbbr: "TMT"}, -1704165944000, tz, 1); + doh.checkDate({tzOffset: -205.733333333333, tzAbbr: "TMT"}, -757394745000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, -757394744000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 247177799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "IRST"}, 247177800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "IRST"}, 259271999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "IRDT"}, 259272000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "IRDT"}, 277757999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "IRST"}, 277758000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "IRST"}, 283982399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 283982400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 290809799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 290809800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 306530999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 306531000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 322432199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 322432200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 338498999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 338499000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 673216199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 673216200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 685481399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 685481400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 701209799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 701209800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 717103799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 717103800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 732745799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 732745800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 748639799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 748639800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 764281799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 764281800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 780175799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 780175800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 795817799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 795817800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 811711799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 811711800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 827353799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 827353800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 843247799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 843247800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 858976199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 858976200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 874870199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 874870200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 890512199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 890512200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 906406199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 906406200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 922048199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 922048200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 937942199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 937942200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 953584199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 953584200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 969478199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 969478200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 985206599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 985206600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1001100599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1001100600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1016742599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1016742600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1032636599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1032636600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1048278599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1048278600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1064172599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1064172600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1079814599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1079814600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1095708599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1095708600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1111436999000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1111437000000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1127330999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1127331000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1206044999000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1206045000000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1221938999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1221939000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1237667399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1237667400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1253561399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1253561400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1269203399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1269203400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1285097399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1285097400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1300739399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1300739400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1316633399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1316633400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1332275399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1332275400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1348169399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1348169400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1363897799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1363897800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1379791799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1379791800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1395433799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1395433800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1411327799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1411327800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1426969799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1426969800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1442863799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1442863800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1458505799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1458505800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1474399799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1474399800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1490128199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1490128200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1506022199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1506022200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1521664199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1521664200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1537558199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1537558200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1553200199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1553200200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1569094199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1569094200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1584736199000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1584736200000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1600630199000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1600630200000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1616358599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1616358600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1632252599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1632252600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1647894599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1647894600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1663788599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1663788600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1679430599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1679430600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1695324599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1695324600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1710966599000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1710966600000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1726860599000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1726860600000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1742588999000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1742589000000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1758482999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1758483000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1774124999000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1774125000000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1790018999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1790019000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1805660999000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1805661000000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1821554999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1821555000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1837196999000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1837197000000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1853090999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1853091000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1868732999000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1868733000000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1884626999000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1884627000000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1900355399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1900355400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1916249399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1916249400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1931891399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1931891400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1947785399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1947785400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1963427399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1963427400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1979321399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1979321400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1994963399000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1994963400000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2010857399000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2010857400000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2026585799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2026585800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2042479799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2042479800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2058121799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2058121800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2074015799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2074015800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2089657799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2089657800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2105551799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2105551800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2121193799000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2121193800000, tz, 1); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 2137087799000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2137087800000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -210, tzAbbr: "IRST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -270, tzAbbr: "IRDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Thimphu.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Thimphu.json new file mode 100644 index 0000000..4089553 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Thimphu.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Asia-Thimphu", + runTest: function(t){ + var tz = "Asia/Thimphu"; + doh.checkDate({tzOffset: -358.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -358.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -358.6, tzAbbr: "LMT"}, -706341517000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, -706341516000, tz, 1); + doh.checkDate({tzOffset: -330, tzAbbr: "IST"}, 560024999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BTT"}, 560025000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BTT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BTT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "BTT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "BTT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tokyo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tokyo.json new file mode 100644 index 0000000..29ee51e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Tokyo.json @@ -0,0 +1,30 @@ +({ + name: "date.timezone.Asia-Tokyo", + runTest: function(t){ + var tz = "Asia/Tokyo"; + doh.checkDate({tzOffset: -540, tzAbbr: "CJT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CJT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CJT"}, -1009875601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -1009875600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -683794801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -683794800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -672393601000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -672393600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -654764401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -654764400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -640944001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -640944000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -620290801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -620290800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -609494401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -609494400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -588841201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -588841200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "JDT"}, -578044801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -578044800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ulaanbaatar.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ulaanbaatar.json new file mode 100644 index 0000000..07eadb2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Ulaanbaatar.json @@ -0,0 +1,104 @@ +({ + name: "date.timezone.Asia-Ulaanbaatar", + runTest: function(t){ + var tz = "Asia/Ulaanbaatar"; + doh.checkDate({tzOffset: -427.533333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -427.533333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -427.533333333333, tzAbbr: "LMT"}, -2032931253000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ULAT"}, -2032931252000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ULAT"}, 252435599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 252435600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 417974399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 417974400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 433781999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 433782000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 449596799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 449596800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 465317999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 465318000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 481046399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 481046400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 496767599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 496767600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 512495999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 512496000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 528217199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 528217200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 543945599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 543945600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 559666799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 559666800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 575395199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 575395200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 591116399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 591116400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 606844799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 606844800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 622565999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 622566000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 638294399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 638294400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 654620399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 654620400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 670348799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 670348800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 686069999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 686070000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 701798399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 701798400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 717519599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 717519600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 733247999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 733248000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 748969199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 748969200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 764697599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 764697600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 780418799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 780418800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 796147199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 796147200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 811868399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 811868400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 828201599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 828201600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 843922799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 843922800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 859651199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 859651200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 875372399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 875372400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 891100799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 891100800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 906821999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 906822000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 988394399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 988394400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1001696399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1001696400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1017424799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1017424800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1033145999000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1033146000000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1048874399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1048874400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1064595599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1064595600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1080323999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1080324000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1096045199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1096045200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1111773599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1111773600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1127494799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1127494800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1143223199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1143223200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "ULAST"}, 1159549199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1159549200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "ULAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Urumqi.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Urumqi.json new file mode 100644 index 0000000..1a955cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Urumqi.json @@ -0,0 +1,40 @@ +({ + name: "date.timezone.Asia-Urumqi", + runTest: function(t){ + var tz = "Asia/Urumqi"; + doh.checkDate({tzOffset: -350.333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -350.333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -350.333333333333, tzAbbr: "LMT"}, -1325483421000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URUT"}, -1325483420000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "URUT"}, 325965599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 325965600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 515519999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 515520000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 527007599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 527007600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 545155199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 545155200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 558457199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 558457200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 576604799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 576604800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 589906799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 589906800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 608659199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 608659200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 621961199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 621961200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 640108799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 640108800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 653410799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 653410800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 671558399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 671558400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "CDT"}, 684860399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 684860400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Vientiane.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Vientiane.json new file mode 100644 index 0000000..db0b772 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Vientiane.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Asia-Vientiane", + runTest: function(t){ + var tz = "Asia/Vientiane"; + doh.checkDate({tzOffset: -410.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -410.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -410.4, tzAbbr: "LMT"}, -2005973425000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "SMT"}, -2005973424000, tz, 1); + doh.checkDate({tzOffset: -426.333333333333, tzAbbr: "SMT"}, -1855983921000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1855983920000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1819954801000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ICT"}, -1819954800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "ICT"}, -1220428801000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, -1220428800000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "ICT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Vladivostok.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Vladivostok.json new file mode 100644 index 0000000..e9bb852 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Vladivostok.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Vladivostok", + runTest: function(t){ + var tz = "Asia/Vladivostok"; + doh.checkDate({tzOffset: -527.733333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -527.733333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -527.733333333333, tzAbbr: "LMT"}, -1487321265000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "VLAT"}, -1487321264000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "VLAT"}, -1247562001000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, -1247562000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 354895199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 354895200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 370702799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 370702800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 386431199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 386431200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 402238799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 402238800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 417967199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 417967200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 433774799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 433774800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 449589599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 449589600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 465321599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 465321600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 481046399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 481046400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 496771199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 496771200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 512495999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 512496000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 528220799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 528220800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 543945599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 543945600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 559670399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 559670400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 575395199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 575395200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 591119999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 591120000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 606844799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 606844800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 622569599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 622569600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 638294399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 638294400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 654623999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 654624000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 670348799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLASST"}, 670348800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLASST"}, 686077199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "VLAST"}, 686077200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "VLAST"}, 695753999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 695754000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 701787599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 701787600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 717508799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 717508800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 733247999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 733248000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 748972799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 748972800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 764697599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 764697600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 780422399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 780422400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 796147199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 796147200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 811871999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 811872000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 828201599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 828201600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 846345599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 846345600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 859651199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 859651200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 877795199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 877795200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 891100799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 891100800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 909244799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 909244800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 922550399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 922550400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 941299199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 941299200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 953999999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 954000000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 972748799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 972748800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 985449599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 985449600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1004198399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1004198400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1017503999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1017504000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1035647999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1035648000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1048953599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1048953600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1067097599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1067097600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1080403199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1080403200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1099151999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1099152000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1111852799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1111852800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1130601599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1130601600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1143302399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1143302400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1162051199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1162051200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1174751999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1174752000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1193500799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1193500800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1206806399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1206806400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1224950399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1224950400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1238255999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1238256000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1256399999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1256400000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1269705599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1269705600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1288454399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1288454400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1301155199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1301155200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1319903999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1319904000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1332604799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1332604800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1351353599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1351353600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1364659199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1364659200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1382803199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1382803200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1396108799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1396108800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1414252799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1414252800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1427558399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1427558400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1445702399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1445702400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1459007999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1459008000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1477756799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1477756800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1490457599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1490457600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1509206399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1509206400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1521907199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1521907200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1540655999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1540656000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1553961599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1553961600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1572105599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1572105600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1585411199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1585411200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1603555199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1603555200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1616860799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1616860800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1635609599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1635609600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1648310399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1648310400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1667059199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1667059200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1679759999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1679760000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1698508799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1698508800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1711814399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1711814400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1729958399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1729958400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1743263999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1743264000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1761407999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1761408000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1774713599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1774713600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1792857599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1792857600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1806163199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1806163200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1824911999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1824912000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1837612799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1837612800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1856361599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1856361600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1869062399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1869062400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1887811199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1887811200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1901116799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1901116800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1919260799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1919260800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1932566399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1932566400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1950710399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1950710400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1964015999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1964016000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1982764799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1982764800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1995465599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1995465600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2014214399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2014214400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2026915199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2026915200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2045663999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2045664000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2058364799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2058364800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2077113599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2077113600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2090419199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2090419200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2108563199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2108563200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2121868799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2121868800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 2140012799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2140012800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "VLAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -660, tzAbbr: "VLAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yakutsk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yakutsk.json new file mode 100644 index 0000000..e8215ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yakutsk.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Yakutsk", + runTest: function(t){ + var tz = "Asia/Yakutsk"; + doh.checkDate({tzOffset: -518.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -518.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -518.666666666667, tzAbbr: "LMT"}, -1579423121000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "YAKT"}, -1579423120000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "YAKT"}, -1247558401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, -1247558400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 354898799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 354898800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 370706399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 370706400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 386434799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 386434800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 402242399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 402242400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 417970799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 417970800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 433778399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 433778400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 449593199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 449593200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 465325199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 465325200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 481049999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 481050000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 496774799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 496774800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 512499599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 512499600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 528224399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 528224400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 543949199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 543949200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 559673999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 559674000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 575398799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 575398800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 591123599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 591123600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 606848399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 606848400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 622573199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 622573200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 638297999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 638298000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 654627599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 654627600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 670352399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKST"}, 670352400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKST"}, 686080799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "YAKT"}, 686080800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "YAKT"}, 695757599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 695757600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 701791199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 701791200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 717512399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 717512400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 733251599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 733251600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 748976399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 748976400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 764701199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 764701200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 780425999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 780426000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 796150799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 796150800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 811875599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 811875600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 828205199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 828205200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 846349199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 846349200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 859654799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 859654800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 877798799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 877798800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 891104399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 891104400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 909248399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 909248400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 922553999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 922554000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 941302799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 941302800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 954003599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 954003600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 972752399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 972752400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 985453199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 985453200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1004201999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1004202000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1017507599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1017507600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1035651599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1035651600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1048957199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1048957200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1067101199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1067101200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1080406799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1080406800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1099155599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1099155600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1111856399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1111856400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1130605199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1130605200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1143305999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1143306000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1162054799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1162054800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1174755599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1174755600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1193504399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1193504400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1206809999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1206810000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1224953999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1224954000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1238259599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1238259600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1256403599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1256403600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1269709199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1269709200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1288457999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1288458000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1301158799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1301158800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1319907599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1319907600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1332608399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1332608400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1351357199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1351357200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1364662799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1364662800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1382806799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1382806800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1396112399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1396112400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1414256399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1414256400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1427561999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1427562000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1445705999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1445706000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1459011599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1459011600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1477760399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1477760400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1490461199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1490461200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1509209999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1509210000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1521910799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1521910800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1540659599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1540659600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1553965199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1553965200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1572109199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1572109200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1585414799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1585414800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1603558799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1603558800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1616864399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1616864400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1635613199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1635613200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1648313999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1648314000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1667062799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1667062800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1679763599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1679763600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1698512399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1698512400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1711817999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1711818000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1729961999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1729962000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1743267599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1743267600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1761411599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1761411600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1774717199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1774717200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1792861199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1792861200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1806166799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1806166800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1824915599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1824915600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1837616399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1837616400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1856365199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1856365200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1869065999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1869066000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1887814799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1887814800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1901120399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1901120400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1919264399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1919264400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1932569999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1932570000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1950713999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1950714000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1964019599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1964019600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1982768399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1982768400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1995469199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1995469200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2014217999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2014218000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2026918799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2026918800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2045667599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2045667600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2058368399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2058368400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2077117199000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2077117200000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2090422799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2090422800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2108566799000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2108566800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2121872399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2121872400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 2140016399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2140016400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "YAKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "YAKST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yekaterinburg.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yekaterinburg.json new file mode 100644 index 0000000..416ef16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yekaterinburg.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Asia-Yekaterinburg", + runTest: function(t){ + var tz = "Asia/Yekaterinburg"; + doh.checkDate({tzOffset: -242.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -242.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -242.4, tzAbbr: "LMT"}, -1592611345000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SVET"}, -1592611344000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SVET"}, -1247544001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, -1247544000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 354913199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 354913200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 370720799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 370720800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 386449199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 386449200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 402256799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 402256800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 417985199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 417985200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 433792799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 433792800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 449607599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 449607600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 465339599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 465339600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 481064399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 481064400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 496789199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 496789200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 512513999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 512514000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 528238799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 528238800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 543963599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 543963600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 559688399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 559688400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 575413199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 575413200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 591137999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 591138000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 606862799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 606862800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 622587599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 622587600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 638312399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 638312400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "SVEST"}, 654641999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 654642000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVET"}, 670366799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVEST"}, 670366800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SVEST"}, 686095199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SVET"}, 686095200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SVET"}, 695771999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 695772000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 701805599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 701805600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 717526799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 717526800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 733265999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 733266000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 764715599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 764715600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 796165199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 796165200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 811889999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 811890000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 828219599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 828219600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 846363599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 846363600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 859669199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 859669200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 877813199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 877813200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 891118799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 891118800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 909262799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 909262800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 922568399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 922568400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 941317199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 941317200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 954017999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 954018000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 972766799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 972766800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 985467599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 985467600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1004216399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1004216400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1017521999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1017522000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1035665999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1035666000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1048971599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1048971600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1067115599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1067115600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1080421199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1080421200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1099169999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1099170000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1111870799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1111870800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1130619599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1130619600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1143320399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1143320400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1162069199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1162069200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1174769999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1174770000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1193518799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1193518800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1206824399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1206824400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1224968399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1224968400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1238273999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1238274000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1256417999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1256418000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1269723599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1269723600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1288472399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1288472400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1301173199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1301173200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1319921999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1319922000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1332622799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1332622800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1351371599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1351371600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1364677199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1364677200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1382821199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1382821200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1396126799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1396126800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1414270799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1414270800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1427576399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1427576400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1445720399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1445720400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1459025999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1459026000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1477774799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1477774800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1490475599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1490475600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1509224399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1509224400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1521925199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1521925200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1540673999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1540674000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1553979599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1553979600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1572123599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1572123600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1585429199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1585429200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1603573199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1603573200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1616878799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1616878800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1635627599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1635627600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1648328399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1648328400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1667077199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1667077200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1679777999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1679778000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1698526799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1698526800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1711832399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1711832400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1729976399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1729976400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1743281999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1743282000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1761425999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1761426000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1774731599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1774731600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1792875599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1792875600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1806181199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1806181200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1824929999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1824930000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1837630799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1837630800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1856379599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1856379600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1869080399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1869080400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1887829199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1887829200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1901134799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1901134800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1919278799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1919278800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1932584399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1932584400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1950728399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1950728400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1964033999000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1964034000000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1982782799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1982782800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1995483599000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1995483600000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2014232399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2014232400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2026933199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2026933200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2045681999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2045682000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2058382799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2058382800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2077131599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2077131600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2090437199000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2090437200000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2108581199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2108581200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2121886799000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2121886800000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 2140030799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2140030800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YEKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "YEKST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yerevan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yerevan.json new file mode 100644 index 0000000..0862c60 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Asia-Yerevan.json @@ -0,0 +1,242 @@ +({ + name: "date.timezone.Asia-Yerevan", + runTest: function(t){ + var tz = "Asia/Yerevan"; + doh.checkDate({tzOffset: -178, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -178, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -178, tzAbbr: "LMT"}, -1441162681000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "YERT"}, -1441162680000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "YERT"}, -405140401000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, -405140400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 354916799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 354916800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 370724399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 370724400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 386452799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 386452800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 402260399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 402260400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 417988799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 417988800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 433796399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 433796400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 449611199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 449611200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 465343199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 465343200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 481067999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 481068000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 496792799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 496792800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 512517599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 512517600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 528242399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 528242400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 543967199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 543967200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 559691999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 559692000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 575416799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 575416800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 591141599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 591141600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 606866399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 606866400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 622591199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 622591200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 638315999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 638316000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "YERST"}, 654645599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 654645600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERT"}, 670370399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERST"}, 670370400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "YERST"}, 685569599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 685569600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 686098799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 686098800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 701812799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 701812800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 717533999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 717534000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 733273199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 733273200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 748997999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 748998000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 764722799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 764722800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 780447599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 780447600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "AMT"}, 796172399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 796172400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMST"}, 811897199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 811897200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 859672799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 859672800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 877816799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 877816800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 891122399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 891122400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 909266399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 909266400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 922571999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 922572000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 941320799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 941320800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 954021599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 954021600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 972770399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 972770400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 985471199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 985471200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1004219999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1004220000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1017525599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1017525600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1035669599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1035669600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1048975199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1048975200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1067119199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1067119200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1080424799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1080424800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1099173599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1099173600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1111874399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1111874400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1130623199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1130623200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1143323999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1143324000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1162072799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1162072800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1174773599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1174773600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1193522399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1193522400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1206827999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1206828000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1224971999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1224972000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1238277599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1238277600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1256421599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1256421600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1269727199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1269727200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1288475999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1288476000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1301176799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1301176800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1319925599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1319925600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1332626399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1332626400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1351375199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1351375200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1364680799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1364680800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1382824799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1382824800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1396130399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1396130400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1414274399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1414274400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1427579999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1427580000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1445723999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1445724000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1459029599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1459029600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1477778399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1477778400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1490479199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1490479200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1509227999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1509228000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1521928799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1521928800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1540677599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1540677600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1553983199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1553983200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1572127199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1572127200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1585432799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1585432800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1603576799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1603576800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1616882399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1616882400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1635631199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1635631200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1648331999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1648332000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1667080799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1667080800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1679781599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1679781600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1698530399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1698530400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1711835999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1711836000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1729979999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1729980000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1743285599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1743285600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1761429599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1761429600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1774735199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1774735200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1792879199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1792879200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1806184799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1806184800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1824933599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1824933600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1837634399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1837634400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1856383199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1856383200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1869083999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1869084000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1887832799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1887832800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1901138399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1901138400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1919282399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1919282400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1932587999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1932588000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1950731999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1950732000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1964037599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1964037600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1982786399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1982786400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1995487199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1995487200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2014235999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2014236000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2026936799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2026936800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2045685599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2045685600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2058386399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2058386400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2077135199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2077135200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2090440799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2090440800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2108584799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2108584800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2121890399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2121890400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 2140034399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2140034400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "AMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "AMST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Azores.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Azores.json new file mode 100644 index 0000000..0dda93a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Azores.json @@ -0,0 +1,452 @@ +({ + name: "date.timezone.Atlantic-Azores", + runTest: function(t){ + var tz = "Atlantic/Azores"; + doh.checkDate({tzOffset: 114.533333333333, tzAbbr: "HMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 114.533333333333, tzAbbr: "HMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 114.533333333333, tzAbbr: "HMT"}, -1849557929000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1849557928000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1689548401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1689548400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1677794401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1677794400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1667430001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1667430000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1647730801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1647730800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1635807601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1635807600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1616194801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1616194800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1604358001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1604358000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1584658801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1584658800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1572735601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1572735600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1553036401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1553036400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1541199601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1541199600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1521500401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1521500400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1442444401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1442444400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1426806001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1426806000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1379286001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1379286000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1364770801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1364770800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1348441201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1348441200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1333321201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1333321200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1316386801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1316386800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1301266801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1301266800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1284332401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1284332400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1269817201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1269817200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1221433201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1221433200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1206918001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1206918000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1191193201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1191193200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1175468401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1175468400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1127689201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1127689200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1111964401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1111964400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1096844401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1096844400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1080514801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1080514800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1063580401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1063580400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1049065201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1049065200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1033340401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1033340400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1017615601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1017615600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -1002495601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -1002495600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -986166001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -986166000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -969231601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -969231600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -950482801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -950482800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -942015601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -942015600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -922662001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -922662000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -906937201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -906937200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -891126001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -891126000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -877302001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -877302000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -873676801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -873676800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -864000001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -864000000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -857948401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -857948400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -845852401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -845852400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -842832001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -842832000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -831340801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -831340800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -825894001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -825894000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -814402801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -814402800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -810777601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -810777600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -799891201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -799891200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -794444401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -794444400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -782953201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -782953200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -779328001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -779328000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOMT"}, -768441601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -768441600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -762994801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -762994800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -749084401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -749084400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -733359601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -733359600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -717624001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -717624000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -701899201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -701899200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -686174401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -686174400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -670449601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -670449600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -654724801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -654724800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -639000001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -639000000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -591825601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -591825600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -575496001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -575496000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -559771201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -559771200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -544046401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -544046400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -528321601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -528321600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -512596801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -512596800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -496872001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -496872000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -481147201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -481147200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -465422401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -465422400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -449697601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -449697600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -433972801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -433972800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -417643201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -417643200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -401918401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -401918400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -386193601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -386193600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -370468801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -370468800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -354744001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -354744000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -339019201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -339019200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -323294401000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -323294400000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -307569601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -307569600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -291844801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -291844800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -276120001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -276120000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -260395201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -260395200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -244670401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -244670400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -228340801000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -228340800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -212616001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -212616000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -196891201000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -196891200000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -181166401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -181166400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -165441601000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -165441600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -149716801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -149716800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOST"}, -133992001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -133992000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "AZOT"}, -118267201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, -118267200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 228272399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 228272400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 307504799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 307504800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 323225999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 323226000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 338954399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 338954400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 354679199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 354679200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 370403999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 370404000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 386128799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 386128800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 401853599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 401853600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 417581999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 417582000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 433303199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 433303200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 449027999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 449028000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 465357599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 465357600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 481082399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 481082400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 496807199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 496807200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 512531999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 512532000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 528256799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 528256800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 543981599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 543981600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 559706399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 559706400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 575431199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 575431200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 591155999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 591156000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 606880799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 606880800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 622605599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 622605600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 638330399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 638330400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 654659999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 654660000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 670384799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 670384800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 686109599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 686109600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 701834399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 701834400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 717559199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 717559200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "AZOT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "AZOST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Bermuda.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Bermuda.json new file mode 100644 index 0000000..913006b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Bermuda.json @@ -0,0 +1,270 @@ +({ + name: "date.timezone.Atlantic-Bermuda", + runTest: function(t){ + var tz = "Atlantic/Bermuda"; + doh.checkDate({tzOffset: 259.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 259.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 259.066666666667, tzAbbr: "LMT"}, -1262281257000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, -1262281256000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 136360799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 136360800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 152081999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 152082000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 167810399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 167810400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 183531599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 183531600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 199259999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 199260000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 215585999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 215586000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 230709599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 230709600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 247035599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 247035600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 262763999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 262764000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 278485199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 278485200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 294213599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 294213600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 309934799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 309934800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 325663199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 325663200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 341384399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 341384400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 357112799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 357112800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 372833999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 372834000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 388562399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 388562400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 404888399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 404888400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 420011999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 420012000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 436337999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 436338000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 452066399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 452066400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 467787599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 467787600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 483515999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 483516000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 499237199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 499237200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 514965599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 514965600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 530686799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 530686800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 544600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 544600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 562136399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 562136400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 576050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 576050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 594190799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 594190800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 607499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 607500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 625640399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 625640400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 638949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 638949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 657089999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 657090000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 671003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 671004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 688539599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 688539600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 702453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 702453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 719989199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 719989200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 733903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 733903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 752043599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 752043600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 765352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 765352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 783493199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 783493200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 796802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 796802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 814942799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 814942800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 828856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 828856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 846392399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 846392400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 860306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 860306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 877841999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 877842000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 891755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 891756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 909291599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 909291600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 923205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 923205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 941345999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 941346000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 954655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 954655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 972795599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 972795600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 986104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 986104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1004245199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1004245200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1018159199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1018159200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1035694799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1035694800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1049608799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1049608800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1067144399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1067144400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1081058399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1081058400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1099198799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1099198800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1112507999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1112508000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1130648399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1130648400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1143957599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1143957600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1162097999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1162098000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1173592799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1173592800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1194152399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1194152400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1205042399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1205042400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1225601999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1225602000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1236491999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1236492000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1257051599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1257051600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1268546399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1268546400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1289105999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1289106000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1299995999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1299996000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1320555599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1320555600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1331445599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1331445600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1352005199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1352005200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1362895199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1362895200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1383454799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1383454800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1394344799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1394344800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1414904399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1414904400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1425794399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1425794400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1446353999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1446354000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1457848799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1457848800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1478408399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1478408400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1489298399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1489298400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1509857999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1509858000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1520747999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1520748000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1541307599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1541307600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1552197599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1552197600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1572757199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1572757200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1583647199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1583647200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1604206799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1604206800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1615701599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1615701600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1636261199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1636261200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1647151199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1647151200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1667710799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1667710800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1678600799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1678600800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1699160399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1699160400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1710050399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1710050400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1730609999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1730610000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1741499999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1741500000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1762059599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1762059600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1772949599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1772949600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1793509199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1793509200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1805003999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1805004000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1825563599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1825563600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1836453599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1836453600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1857013199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1857013200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1867903199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1867903200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1888462799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1888462800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1899352799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1899352800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1919912399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1919912400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1930802399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1930802400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1951361999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1951362000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1962856799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1962856800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1983416399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1983416400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1994306399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1994306400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2014865999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2014866000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2025755999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2025756000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2046315599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2046315600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2057205599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2057205600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2077765199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2077765200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2088655199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2088655200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2109214799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2109214800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2120104799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2120104800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 2140664399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2140664400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "AST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 180, tzAbbr: "ADT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Canary.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Canary.json new file mode 100644 index 0000000..9864c82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Canary.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Atlantic-Canary", + runTest: function(t){ + var tz = "Atlantic/Canary"; + doh.checkDate({tzOffset: 61.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 61.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 61.6, tzAbbr: "LMT"}, -1509663505000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CANT"}, -1509663504000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CANT"}, -733874401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -733874400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 323827199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 323827200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Cape_Verde.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Cape_Verde.json new file mode 100644 index 0000000..5725c9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Cape_Verde.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Atlantic-Cape_Verde", + runTest: function(t){ + var tz = "Atlantic/Cape_Verde"; + doh.checkDate({tzOffset: 94.0666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 94.0666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 94.0666666666667, tzAbbr: "LMT"}, -1988144757000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CVT"}, -1988144756000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CVT"}, -862610401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CVST"}, -862610400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CVST"}, -764118001000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CVT"}, -764118000000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "CVT"}, 186119999000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CVT"}, 186120000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CVT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CVT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "CVT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 60, tzAbbr: "CVT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Faroe.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Faroe.json new file mode 100644 index 0000000..47fdaa0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Faroe.json @@ -0,0 +1,242 @@ +({ + name: "date.timezone.Atlantic-Faroe", + runTest: function(t){ + var tz = "Atlantic/Faroe"; + doh.checkDate({tzOffset: 27.0666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 27.0666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 27.0666666666667, tzAbbr: "LMT"}, -1955748777000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1955748776000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Madeira.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Madeira.json new file mode 100644 index 0000000..4da1c45 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Madeira.json @@ -0,0 +1,452 @@ +({ + name: "date.timezone.Atlantic-Madeira", + runTest: function(t){ + var tz = "Atlantic/Madeira"; + doh.checkDate({tzOffset: 67.6, tzAbbr: "FMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 67.6, tzAbbr: "FMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 67.6, tzAbbr: "FMT"}, -1849560745000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1849560744000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1689552001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1689552000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1677798001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1677798000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1667433601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1667433600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1647734401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1647734400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1635811201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1635811200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1616198401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1616198400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1604361601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1604361600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1584662401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1584662400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1572739201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1572739200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1553040001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1553040000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1541203201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1541203200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1521504001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1521504000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1442448001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1442448000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1426809601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1426809600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1379289601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1379289600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1364774401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1364774400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1348444801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1348444800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1333324801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1333324800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1316390401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1316390400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1301270401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1301270400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1284336001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1284336000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1269820801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1269820800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1221436801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1221436800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1206921601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1206921600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1191196801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1191196800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1175472001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1175472000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1127692801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1127692800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1111968001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1111968000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1096848001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1096848000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1080518401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1080518400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1063584001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1063584000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1049068801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1049068800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1033344001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1033344000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1017619201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1017619200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -1002499201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -1002499200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -986169601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -986169600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -969235201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -969235200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -950486401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -950486400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -942019201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -942019200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -922665601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -922665600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -906940801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -906940800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -891129601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -891129600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -877305601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -877305600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -873680401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -873680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -864003601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -864003600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -857952001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -857952000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -845856001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -845856000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -842835601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -842835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -831344401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -831344400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -825897601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -825897600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -814406401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -814406400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -810781201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -810781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -799894801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -799894800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -794448001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -794448000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -782956801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -782956800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -779331601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -779331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MADMT"}, -768445201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -768445200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -762998401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -762998400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -749088001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -749088000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -733363201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -733363200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -717627601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -717627600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -701902801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -701902800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -686178001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -686178000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -670453201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -670453200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -654728401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -654728400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -639003601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -639003600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -591829201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -591829200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -575499601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -575499600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -559774801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -559774800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -544050001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -544050000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -528325201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -528325200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -512600401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -512600400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -496875601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -496875600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -481150801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -481150800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -465426001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -465426000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -449701201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -449701200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -433976401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -433976400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -417646801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -417646800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -401922001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -401922000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -386197201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -386197200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -370472401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -370472400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -354747601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -354747600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -339022801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -339022800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -323298001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -323298000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -307573201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -307573200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -291848401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -291848400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -276123601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -276123600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -260398801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -260398800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -244674001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -244674000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -228344401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -228344400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -212619601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -212619600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -196894801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -196894800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -181170001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -181170000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -165445201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -165445200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -149720401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -149720400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "MADST"}, -133995601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -133995600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "MADT"}, -118270801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -118270800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 228268799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 228268800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 243993599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 243993600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 260323199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 260323200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 276047999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 276048000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 291772799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 291772800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 323222399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 323222400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 417578399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 417578400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Reykjavik.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Reykjavik.json new file mode 100644 index 0000000..ab3d5a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Reykjavik.json @@ -0,0 +1,140 @@ +({ + name: "date.timezone.Atlantic-Reykjavik", + runTest: function(t){ + var tz = "Atlantic/Reykjavik"; + doh.checkDate({tzOffset: 87.8, tzAbbr: "RMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 87.8, tzAbbr: "RMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 87.8, tzAbbr: "RMT"}, -1956609133000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -1956609132000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -1668211201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -1668211200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -1647212401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -1647212400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -1636675201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -1636675200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -1613430001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -1613430000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -968025601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -968025600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -949615201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -949615200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -942008401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -942008400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -920239201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -920239200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -909957601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -909957600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -888789601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -888789600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -877903201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -877903200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -857944801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -857944800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -846453601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -846453600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -826495201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -826495200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -815004001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -815004000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -795045601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -795045600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -783554401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -783554400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -762991201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -762991200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -752104801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -752104800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -731541601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -731541600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -717631201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -717631200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -700092001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -700092000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -686181601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -686181600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -668642401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -668642400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -654732001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -654732000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -636588001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -636588000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -623282401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -623282400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -605743201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -605743200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -573688801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -573688800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -559778401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -559778400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -542239201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -542239200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -528328801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -528328800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -510789601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -510789600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -496879201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -496879200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -479340001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -479340000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -465429601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -465429600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -447890401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -447890400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -433980001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -433980000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -415836001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -415836000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -401925601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -401925600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -384386401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -384386400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -370476001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -370476000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -352936801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -352936800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -339026401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -339026400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -321487201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -321487200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -307576801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -307576800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -290037601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -290037600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -276127201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -276127200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -258588001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -258588000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -244677601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -244677600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -226533601000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -226533600000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -212623201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -212623200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -195084001000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -195084000000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -181173601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -181173600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -163634401000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -163634400000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -149724001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -149724000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -132184801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -132184800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -118274401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -118274400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -100735201000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -100735200000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -86824801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -86824800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "ISST"}, -68680801000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -68680800000, tz, 1); + doh.checkDate({tzOffset: 60, tzAbbr: "IST"}, -54770401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -54770400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-South_Georgia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-South_Georgia.json new file mode 100644 index 0000000..a84a167 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-South_Georgia.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Atlantic-South_Georgia", + runTest: function(t){ + var tz = "Atlantic/South_Georgia"; + doh.checkDate({tzOffset: 120, tzAbbr: "GST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "GST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "GST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "GST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "GST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 120, tzAbbr: "GST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-St_Helena.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-St_Helena.json new file mode 100644 index 0000000..b32e460 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-St_Helena.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Atlantic-St_Helena", + runTest: function(t){ + var tz = "Atlantic/St_Helena"; + doh.checkDate({tzOffset: 22.8, tzAbbr: "JMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 22.8, tzAbbr: "JMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 22.8, tzAbbr: "JMT"}, -599614633000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -599614632000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Stanley.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Stanley.json new file mode 100644 index 0000000..610184b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Atlantic-Stanley.json @@ -0,0 +1,258 @@ +({ + name: "date.timezone.Atlantic-Stanley", + runTest: function(t){ + var tz = "Atlantic/Stanley"; + doh.checkDate({tzOffset: 231.4, tzAbbr: "SMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 231.4, tzAbbr: "SMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 231.4, tzAbbr: "SMT"}, -1824235717000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -1824235716000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -1018209601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -1018209600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -1003093201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -1003093200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -986760001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -986760000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -971643601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -971643600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -954705601000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -954705600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -939589201000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -939589200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -923256001000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -923256000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -908139601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -908139600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -891806401000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -891806400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -876690001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -876690000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -860356801000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -860356800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, -852066001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, -852066000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 420609599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKT"}, 420609600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKT"}, 433306799000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FKST"}, 433306800000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FKST"}, 452051999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKT"}, 452052000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKT"}, 464151599000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FKST"}, 464151600000, tz, 1); + doh.checkDate({tzOffset: 120, tzAbbr: "FKST"}, 483501599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKT"}, 483501600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKT"}, 495601199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 495601200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 514349999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 514350000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 527054399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 527054400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 545799599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 545799600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 558503999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 558504000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 577249199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 577249200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 589953599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 589953600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 608698799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 608698800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 621403199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 621403200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 640753199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 640753200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 652852799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 652852800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 672202799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 672202800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 684907199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 684907200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 703652399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 703652400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 716356799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 716356800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 735101999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 735102000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 747806399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 747806400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 766551599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 766551600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 779255999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 779256000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 798001199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 798001200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 810705599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 810705600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 830055599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 830055600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 842759999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 842760000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 861505199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 861505200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 874209599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 874209600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 892954799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 892954800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 905659199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 905659200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 924404399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 924404400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 937108799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 937108800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 955853999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 955854000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 968558399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 968558400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 987310799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 987310800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 999410399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 999410400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1019365199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1019365200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1030859999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1030860000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1050814799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1050814800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1062914399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1062914400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1082264399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1082264400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1094363999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1094364000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1113713999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1113714000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1125813599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1125813600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1145163599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1145163600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1157263199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1157263200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1176613199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1176613200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1188712799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1188712800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1208667599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1208667600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1220767199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1220767200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1240117199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1240117200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1252216799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1252216800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1271566799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1271566800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1283666399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1283666400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1303016399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1303016400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1315115999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1315116000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1334465999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1334466000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1346565599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1346565600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1366520399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1366520400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1378015199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1378015200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1397969999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1397970000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1410069599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1410069600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1429419599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1429419600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1441519199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1441519200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1460869199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1460869200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1472968799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1472968800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1492318799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1492318800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1504418399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1504418400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1523768399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1523768400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1535867999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1535868000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1555822799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1555822800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1567317599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1567317600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1587272399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1587272400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1599371999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1599372000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1618721999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1618722000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1630821599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1630821600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1650171599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1650171600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1662271199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1662271200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1681621199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1681621200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1693720799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1693720800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1713675599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1713675600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1725170399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1725170400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1745125199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1745125200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1757224799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1757224800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1776574799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1776574800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1788674399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1788674400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1808024399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1808024400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1820123999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1820124000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1839473999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1839474000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1851573599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1851573600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1870923599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1870923600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1883023199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1883023200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1902977999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1902978000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1914472799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1914472800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1934427599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1934427600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1946527199000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1946527200000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1965877199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1965877200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1977976799000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1977976800000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1997326799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1997326800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2009426399000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2009426400000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2028776399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2028776400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2040875999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2040876000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2060225999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2060226000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2072325599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2072325600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2092280399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2092280400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2104379999000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2104380000000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2123729999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2123730000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 2135829599000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2135829600000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 180, tzAbbr: "FKST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "FKT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Adelaide.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Adelaide.json new file mode 100644 index 0000000..93fb65a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Adelaide.json @@ -0,0 +1,294 @@ +({ + name: "date.timezone.Australia-Adelaide", + runTest: function(t){ + var tz = "Australia/Adelaide"; + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -1672565341000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -1672565340000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -1665390601000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -1665390600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -883639801000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -883639800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -876126601000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -876126600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -860398201000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -860398200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -844677001000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -844677000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -828343801000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -828343800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -813227401000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -813227400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 57688199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 57688200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 67969799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 67969800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 89137799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 89137800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 100024199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 100024200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 120587399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 120587400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 131473799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 131473800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 152036999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 152037000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 162923399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 162923400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 183486599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 183486600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 194977799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 194977800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 215540999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 215541000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 226427399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 226427400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 246990599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 246990600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 257876999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 257877000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 278440199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 278440200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 289326599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 289326600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 309889799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 309889800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 320776199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 320776200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 341339399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 341339400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 352225799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 352225800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 372788999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 372789000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 384280199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 384280200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 404843399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 404843400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 415729799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 415729800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 436292999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 436293000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 447179399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 447179400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 467742599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 467742600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 478628999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 478629000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 499192199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 499192200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 511288199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 511288200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 530036999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 530037000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 542737799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 542737800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 562091399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 562091400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 574792199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 574792200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 594145799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 594145800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 606241799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 606241800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 625595399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 625595400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 637691399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 637691400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 657044999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 657045000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 667931399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 667931400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 688494599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 688494600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 701195399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 701195400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 719944199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 719944200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 731435399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 731435400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 751998599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 751998600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 764094599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 764094600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 783448199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 783448200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 796148999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 796149000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 814897799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 814897800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 828203399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 828203400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 846347399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 846347400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 859652999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 859653000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 877796999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 877797000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 891102599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 891102600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 909246599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 909246600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 922552199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 922552200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 941300999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 941301000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 954001799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 954001800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 972750599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 972750600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 985451399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 985451400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1004200199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1004200200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1017505799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1017505800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1035649799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1035649800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1048955399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1048955400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1067099399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1067099400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1080404999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1080405000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1099153799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1099153800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1111854599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1111854600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1130603399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1130603400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1143908999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1143909000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1162052999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1162053000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1174753799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1174753800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1193502599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1193502600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1207412999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1207413000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1223137799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1223137800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1238862599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1238862600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1254587399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1254587400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1270312199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1270312200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1286036999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1286037000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1301761799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1301761800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1317486599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1317486600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1333211399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1333211400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1349540999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1349541000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1365265799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1365265800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1380990599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1380990600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1396715399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1396715400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1412440199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1412440200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1428164999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1428165000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1443889799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1443889800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1459614599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1459614600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1475339399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1475339400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1491064199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1491064200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1506788999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1506789000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1522513799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1522513800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1538843399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1538843400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1554568199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1554568200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1570292999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1570293000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1586017799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1586017800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1601742599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1601742600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1617467399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1617467400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1633192199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1633192200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1648916999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1648917000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1664641799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1664641800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1680366599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1680366600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1696091399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1696091400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1712420999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1712421000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1728145799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1728145800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1743870599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1743870600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1759595399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1759595400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1775320199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1775320200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1791044999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1791045000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1806769799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1806769800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1822494599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1822494600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1838219399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1838219400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1853944199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1853944200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1869668999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1869669000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1885998599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1885998600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1901723399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1901723400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1917448199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1917448200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1933172999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1933173000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1948897799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1948897800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1964622599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1964622600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1980347399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1980347400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1996072199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1996072200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2011796999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2011797000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2027521799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2027521800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2043246599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2043246600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2058971399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2058971400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2075300999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2075301000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2091025799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2091025800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2106750599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2106750600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2122475399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2122475400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2138200199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2138200200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Brisbane.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Brisbane.json new file mode 100644 index 0000000..31de6fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Brisbane.json @@ -0,0 +1,44 @@ +({ + name: "date.timezone.Australia-Brisbane", + runTest: function(t){ + var tz = "Australia/Brisbane"; + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1672567141000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1672567140000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1665392401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1665392400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -883641601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -883641600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -876128401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -876128400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -860400001000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -860400000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -844678801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -844678800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -828345601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -828345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -813229201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -813229200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 57686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 57686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 67967999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 67968000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 625593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 625593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 636479999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 636480000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 657043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 657043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 667929599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 667929600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 688492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 688492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 699379199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 699379200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Broken_Hill.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Broken_Hill.json new file mode 100644 index 0000000..61fb5d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Broken_Hill.json @@ -0,0 +1,294 @@ +({ + name: "date.timezone.Australia-Broken_Hill", + runTest: function(t){ + var tz = "Australia/Broken_Hill"; + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -1672565341000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -1672565340000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -1665390601000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -1665390600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -883639801000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -883639800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -876126601000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -876126600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -860398201000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -860398200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -844677001000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -844677000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -828343801000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -828343800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -813227401000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -813227400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 57688199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 57688200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 67969799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 67969800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 89137799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 89137800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 100024199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 100024200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 120587399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 120587400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 131473799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 131473800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 152036999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 152037000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 162923399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 162923400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 183486599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 183486600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 194977799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 194977800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 215540999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 215541000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 226427399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 226427400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 246990599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 246990600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 257876999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 257877000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 278440199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 278440200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 289326599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 289326600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 309889799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 309889800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 320776199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 320776200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 341339399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 341339400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 352225799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 352225800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 372788999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 372789000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 386699399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 386699400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 404843399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 404843400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 415729799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 415729800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 436292999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 436293000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 447179399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 447179400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 467742599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 467742600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 478628999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 478629000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 499192199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 499192200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 511288199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 511288200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 530036999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 530037000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 542737799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 542737800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 562091399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 562091400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 574792199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 574792200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 594145799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 594145800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 606241799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 606241800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 625595399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 625595400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 636481799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 636481800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 657044999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 657045000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 667931399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 667931400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 688494599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 688494600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 699380999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 699381000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 719944199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 719944200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 731435399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 731435400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 751998599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 751998600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 762884999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 762885000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 783448199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 783448200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 794334599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 794334600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 814897799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 814897800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 828203399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 828203400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 846347399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 846347400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 859652999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 859653000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 877796999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 877797000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 891102599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 891102600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 909246599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 909246600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 922552199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 922552200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 941300999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 941301000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 954001799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 954001800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 972750599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 972750600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 985451399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 985451400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1004200199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1004200200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1017505799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1017505800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1035649799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1035649800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1048955399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1048955400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1067099399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1067099400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1080404999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1080405000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1099153799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1099153800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1111854599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1111854600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1130603399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1130603400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1143908999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1143909000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1162052999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1162053000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1174753799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1174753800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1193502599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1193502600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1207412999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1207413000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1223137799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1223137800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1238862599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1238862600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1254587399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1254587400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1270312199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1270312200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1286036999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1286037000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1301761799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1301761800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1317486599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1317486600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1333211399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1333211400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1349540999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1349541000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1365265799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1365265800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1380990599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1380990600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1396715399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1396715400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1412440199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1412440200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1428164999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1428165000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1443889799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1443889800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1459614599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1459614600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1475339399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1475339400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1491064199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1491064200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1506788999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1506789000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1522513799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1522513800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1538843399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1538843400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1554568199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1554568200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1570292999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1570293000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1586017799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1586017800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1601742599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1601742600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1617467399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1617467400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1633192199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1633192200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1648916999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1648917000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1664641799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1664641800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1680366599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1680366600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1696091399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1696091400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1712420999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1712421000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1728145799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1728145800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1743870599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1743870600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1759595399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1759595400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1775320199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1775320200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1791044999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1791045000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1806769799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1806769800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1822494599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1822494600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1838219399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1838219400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1853944199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1853944200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1869668999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1869669000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1885998599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1885998600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1901723399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1901723400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1917448199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1917448200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1933172999000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1933173000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1948897799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1948897800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1964622599000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1964622600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1980347399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1980347400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1996072199000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1996072200000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2011796999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2011797000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2027521799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2027521800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2043246599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2043246600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2058971399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2058971400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2075300999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2075301000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2091025799000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2091025800000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2106750599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2106750600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2122475399000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2122475400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2138200199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2138200200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Currie.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Currie.json new file mode 100644 index 0000000..8974bf2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Currie.json @@ -0,0 +1,294 @@ +({ + name: "date.timezone.Australia-Currie", + runTest: function(t){ + var tz = "Australia/Currie"; + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1680508801000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1680508800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1665392401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1665392400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -883641601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -883641600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -876128401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -876128400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -860400001000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -860400000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -844678801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -844678800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -828345601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -828345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -813229201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -813229200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 57686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 57686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 67967999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 67968000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 89135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 89136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 100022399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 100022400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 120585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 120585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 131471999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 131472000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 152035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 152035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 162921599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 162921600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 183484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 183484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 194975999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 194976000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 215539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 215539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 226425599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 226425600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 246988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 246988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 257875199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 257875200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 278438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 278438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 289324799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 289324800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 309887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 309888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 320774399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 320774400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 341337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 341337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 352223999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 352224000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 372787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 372787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 386092799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 386092800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 404841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 404841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 417542399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 417542400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 436291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 436291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 447177599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 447177600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 467740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 467740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 478627199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 478627200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 499190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 499190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 510076799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 510076800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 530035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 530035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 542735999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 542736000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 562089599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 562089600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 574790399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 574790400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 594143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 594144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 606239999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 606240000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 625593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 625593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 637689599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 637689600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 657043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 657043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 670348799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 670348800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 686678399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 686678400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 701798399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 701798400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 718127999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 718128000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 733247999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 733248000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 749577599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 749577600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 764697599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 764697600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 781027199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 781027200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 796147199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 796147200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 812476799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 812476800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 828201599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 828201600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 844531199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 844531200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 859651199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 859651200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 875980799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 875980800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 891100799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 891100800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 907430399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 907430400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 922550399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 922550400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 938879999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 938880000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 953999999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 954000000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 967305599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 967305600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 985449599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 985449600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1002383999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1002384000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1017503999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1017504000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1033833599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1033833600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1048953599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1048953600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1065283199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1065283200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1080403199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1080403200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1096732799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1096732800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1111852799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1111852800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1128182399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1128182400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1143907199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1143907200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1159631999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1159632000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1174751999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1174752000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1191686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1191686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1207411199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1207411200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1223135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1223136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1238860799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1238860800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1254585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1254585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1270310399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1270310400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1286035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1286035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1301759999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1301760000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1317484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1317484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1333209599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1333209600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1349539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1349539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1365263999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1365264000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1380988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1380988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1396713599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1396713600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1412438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1412438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1428163199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1428163200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1443887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1443888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1459612799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1459612800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1475337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1475337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1491062399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1491062400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1506787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1506787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1522511999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1522512000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1538841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1538841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1554566399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1554566400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1570291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1570291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1586015999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1586016000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1601740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1601740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1617465599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1617465600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1633190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1633190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1648915199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1648915200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1664639999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1664640000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1680364799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1680364800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1696089599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1696089600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1712419199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1712419200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1728143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1728144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1743868799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1743868800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1759593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1759593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1775318399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1775318400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1791043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1791043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1806767999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1806768000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1822492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1822492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1838217599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1838217600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1853942399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1853942400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1869667199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1869667200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1885996799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1885996800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1901721599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1901721600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1917446399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1917446400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1933171199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1933171200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1948895999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1948896000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1964620799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1964620800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1980345599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1980345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1996070399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1996070400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2011795199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2011795200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2027519999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2027520000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2043244799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2043244800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2058969599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2058969600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2075299199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2075299200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2091023999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2091024000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2106748799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2106748800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2122473599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2122473600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2138198399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2138198400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Darwin.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Darwin.json new file mode 100644 index 0000000..23470fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Darwin.json @@ -0,0 +1,28 @@ +({ + name: "date.timezone.Australia-Darwin", + runTest: function(t){ + var tz = "Australia/Darwin"; + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -1672565341000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -1672565340000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -1665390601000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -1665390600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -883639801000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -883639800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -876126601000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -876126600000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -860398201000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -860398200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -844677001000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -844677000000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -828343801000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -828343800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "CST"}, -813227401000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, -813227400000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -570, tzAbbr: "CST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Eucla.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Eucla.json new file mode 100644 index 0000000..fac8fe9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Eucla.json @@ -0,0 +1,48 @@ +({ + name: "date.timezone.Australia-Eucla", + runTest: function(t){ + var tz = "Australia/Eucla"; + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -1672562641000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, -1672562640000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, -1665387901000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -1665387900000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -883637101000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, -883637100000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, -876123901000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -876123900000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -860395501000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, -860395500000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, -844674301000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, -844674300000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 152039699000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 152039700000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 162926099000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 162926100000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 436295699000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 436295700000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 447182099000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 447182100000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 690311699000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 690311700000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 699383699000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 699383700000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 1165079699000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 1165079700000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 1174756499000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 1174756500000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 1193505299000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 1193505300000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 1206810899000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 1206810900000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 1224954899000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 1224954900000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 1238260499000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 1238260500000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -585, tzAbbr: "CWST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -525, tzAbbr: "CWST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Hobart.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Hobart.json new file mode 100644 index 0000000..578ca54 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Hobart.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.Australia-Hobart", + runTest: function(t){ + var tz = "Australia/Hobart"; + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1680508801000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1680508800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1665392401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1665392400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -883641601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -883641600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -876128401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -876128400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -860400001000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -860400000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -844678801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -844678800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -828345601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -828345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -813229201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -813229200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -71136001000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -71136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -55411201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -55411200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -37267201000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -37267200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -25776001000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -25776000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -5817601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -5817600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 5673599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 5673600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 25631999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 25632000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 37727999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 37728000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 57686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 57686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 67967999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 67968000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 89135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 89136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 100022399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 100022400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 120585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 120585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 131471999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 131472000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 152035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 152035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 162921599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 162921600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 183484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 183484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 194975999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 194976000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 215539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 215539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 226425599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 226425600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 246988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 246988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 257875199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 257875200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 278438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 278438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 289324799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 289324800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 309887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 309888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 320774399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 320774400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 341337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 341337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 352223999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 352224000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 372787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 372787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 386092799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 386092800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 404841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 404841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 417542399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 417542400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 436291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 436291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 447177599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 447177600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 467740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 467740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 478627199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 478627200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 499190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 499190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 510076799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 510076800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 530035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 530035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 542735999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 542736000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 562089599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 562089600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 574790399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 574790400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 594143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 594144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 606239999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 606240000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 625593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 625593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 637689599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 637689600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 657043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 657043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 670348799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 670348800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 686678399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 686678400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 701798399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 701798400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 718127999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 718128000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 733247999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 733248000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 749577599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 749577600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 764697599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 764697600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 781027199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 781027200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 796147199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 796147200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 812476799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 812476800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 828201599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 828201600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 844531199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 844531200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 859651199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 859651200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 875980799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 875980800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 891100799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 891100800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 907430399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 907430400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 922550399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 922550400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 938879999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 938880000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 953999999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 954000000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 967305599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 967305600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 985449599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 985449600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1002383999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1002384000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1017503999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1017504000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1033833599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1033833600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1048953599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1048953600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1065283199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1065283200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1080403199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1080403200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1096732799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1096732800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1111852799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1111852800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1128182399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1128182400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1143907199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1143907200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1159631999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1159632000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1174751999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1174752000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1191686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1191686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1207411199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1207411200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1223135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1223136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1238860799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1238860800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1254585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1254585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1270310399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1270310400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1286035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1286035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1301759999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1301760000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1317484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1317484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1333209599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1333209600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1349539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1349539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1365263999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1365264000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1380988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1380988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1396713599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1396713600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1412438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1412438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1428163199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1428163200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1443887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1443888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1459612799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1459612800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1475337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1475337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1491062399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1491062400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1506787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1506787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1522511999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1522512000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1538841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1538841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1554566399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1554566400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1570291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1570291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1586015999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1586016000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1601740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1601740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1617465599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1617465600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1633190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1633190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1648915199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1648915200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1664639999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1664640000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1680364799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1680364800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1696089599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1696089600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1712419199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1712419200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1728143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1728144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1743868799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1743868800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1759593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1759593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1775318399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1775318400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1791043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1791043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1806767999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1806768000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1822492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1822492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1838217599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1838217600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1853942399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1853942400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1869667199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1869667200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1885996799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1885996800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1901721599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1901721600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1917446399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1917446400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1933171199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1933171200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1948895999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1948896000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1964620799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1964620800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1980345599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1980345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1996070399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1996070400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2011795199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2011795200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2027519999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2027520000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2043244799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2043244800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2058969599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2058969600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2075299199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2075299200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2091023999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2091024000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2106748799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2106748800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2122473599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2122473600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2138198399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2138198400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Lindeman.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Lindeman.json new file mode 100644 index 0000000..3fd835e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Lindeman.json @@ -0,0 +1,52 @@ +({ + name: "date.timezone.Australia-Lindeman", + runTest: function(t){ + var tz = "Australia/Lindeman"; + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1672567141000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1672567140000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1665392401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1665392400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -883641601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -883641600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -876128401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -876128400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -860400001000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -860400000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -844678801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -844678800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -828345601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -828345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -813229201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -813229200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 57686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 57686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 67967999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 67968000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 625593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 625593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 636479999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 636480000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 657043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 657043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 667929599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 667929600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 688492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 688492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 699379199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 699379200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 719942399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 719942400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 731433599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 731433600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 751996799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 751996800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 762883199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 762883200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Lord_Howe.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Lord_Howe.json new file mode 100644 index 0000000..df40f26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Lord_Howe.json @@ -0,0 +1,240 @@ +({ + name: "date.timezone.Australia-Lord_Howe", + runTest: function(t){ + var tz = "Australia/Lord_Howe"; + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 352216799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 352216800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 372785399000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 372785400000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 384272999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 384273000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 404839799000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 404839800000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 415722599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 415722600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 436289399000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 436289400000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 447172199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 447172200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 467738999000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 467739000000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "LHST"}, 478621799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 478621800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 499188599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 499188600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 511282799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 511282800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 530033399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 530033400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 542732399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 542732400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 562087799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 562087800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 574786799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 574786800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 594142199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 594142200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 606236399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 606236400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 625591799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 625591800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 636476399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 636476400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 657041399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 657041400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 667925999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 667926000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 688490999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 688491000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 699375599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 699375600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 719940599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 719940600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 731429999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 731430000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 751994999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 751995000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 762879599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 762879600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 783444599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 783444600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 794329199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 794329200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 814894199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 814894200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 828197999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 828198000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 846343799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 846343800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 859647599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 859647600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 877793399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 877793400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 891097199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 891097200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 909242999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 909243000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 922546799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 922546800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 941297399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 941297400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 953996399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 953996400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 967303799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 967303800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 985445999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 985446000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1004196599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1004196600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1017500399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1017500400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1035646199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1035646200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1048949999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1048950000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1067095799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1067095800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1080399599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1080399600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1099150199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1099150200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1111849199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1111849200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1130599799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1130599800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1143903599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1143903600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1162049399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1162049400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1174748399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1174748400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1193498999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1193499000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1207407599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1207407600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1223134199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1223134200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1238857199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1238857200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1254583799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1254583800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1270306799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1270306800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1286033399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1286033400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1301756399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1301756400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1317482999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1317483000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1333205999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1333206000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1349537399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1349537400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1365260399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1365260400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1380986999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1380987000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1396709999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1396710000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1412436599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1412436600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1428159599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1428159600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1443886199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1443886200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1459609199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1459609200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1475335799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1475335800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1491058799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1491058800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1506785399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1506785400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1522508399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1522508400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1538839799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1538839800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1554562799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1554562800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1570289399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1570289400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1586012399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1586012400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1601738999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1601739000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1617461999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1617462000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1633188599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1633188600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1648911599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1648911600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1664638199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1664638200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1680361199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1680361200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1696087799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1696087800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1712415599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1712415600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1728142199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1728142200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1743865199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1743865200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1759591799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1759591800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1775314799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1775314800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1791041399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1791041400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1806764399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1806764400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1822490999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1822491000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1838213999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1838214000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1853940599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1853940600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1869663599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1869663600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1885994999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1885995000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1901717999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1901718000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1917444599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1917444600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1933167599000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1933167600000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1948894199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1948894200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1964617199000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1964617200000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1980343799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1980343800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1996066799000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1996066800000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2011793399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2011793400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2027516399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2027516400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2043242999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2043243000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2058965999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2058966000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2075297399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2075297400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2091020399000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2091020400000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2106746999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2106747000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2122469999000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2122470000000, tz, 1); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 2138196599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2138196600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "LHST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -630, tzAbbr: "LHST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Melbourne.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Melbourne.json new file mode 100644 index 0000000..e84ecd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Melbourne.json @@ -0,0 +1,294 @@ +({ + name: "date.timezone.Australia-Melbourne", + runTest: function(t){ + var tz = "Australia/Melbourne"; + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1672567141000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1672567140000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1665392401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1665392400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -883641601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -883641600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -876128401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -876128400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -860400001000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -860400000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -844678801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -844678800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -828345601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -828345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -813229201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -813229200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 57686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 57686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 67967999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 67968000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 89135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 89136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 100022399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 100022400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 120585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 120585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 131471999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 131472000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 152035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 152035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 162921599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 162921600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 183484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 183484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 194975999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 194976000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 215539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 215539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 226425599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 226425600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 246988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 246988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 257875199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 257875200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 278438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 278438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 289324799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 289324800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 309887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 309888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 320774399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 320774400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 341337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 341337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 352223999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 352224000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 372787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 372787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 384278399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 384278400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 404841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 404841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 415727999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 415728000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 436291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 436291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 447177599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 447177600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 467740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 467740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 478627199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 478627200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 499190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 499190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 511286399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 511286400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 530035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 530035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 542735999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 542736000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 561484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 561484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 574790399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 574790400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 594143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 594144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 606239999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 606240000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 625593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 625593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 637689599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 637689600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 657043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 657043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 667929599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 667929600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 688492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 688492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 699379199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 699379200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 719942399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 719942400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 731433599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 731433600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 751996799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 751996800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 762883199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 762883200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 783446399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 783446400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 796147199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 796147200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 814895999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 814896000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 828201599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 828201600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 846345599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 846345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 859651199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 859651200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 877795199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 877795200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 891100799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 891100800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 909244799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 909244800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 922550399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 922550400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 941299199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 941299200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 953999999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 954000000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 967305599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 967305600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 985449599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 985449600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1004198399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1004198400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1017503999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1017504000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1035647999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1035648000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1048953599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1048953600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1067097599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1067097600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1080403199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1080403200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1099151999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1099152000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1111852799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1111852800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1130601599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1130601600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1143907199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1143907200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1162051199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1162051200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1174751999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1174752000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1193500799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1193500800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1207411199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1207411200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1223135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1223136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1238860799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1238860800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1254585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1254585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1270310399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1270310400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1286035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1286035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1301759999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1301760000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1317484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1317484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1333209599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1333209600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1349539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1349539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1365263999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1365264000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1380988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1380988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1396713599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1396713600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1412438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1412438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1428163199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1428163200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1443887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1443888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1459612799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1459612800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1475337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1475337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1491062399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1491062400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1506787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1506787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1522511999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1522512000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1538841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1538841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1554566399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1554566400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1570291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1570291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1586015999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1586016000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1601740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1601740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1617465599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1617465600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1633190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1633190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1648915199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1648915200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1664639999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1664640000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1680364799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1680364800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1696089599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1696089600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1712419199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1712419200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1728143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1728144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1743868799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1743868800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1759593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1759593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1775318399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1775318400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1791043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1791043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1806767999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1806768000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1822492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1822492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1838217599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1838217600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1853942399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1853942400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1869667199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1869667200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1885996799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1885996800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1901721599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1901721600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1917446399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1917446400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1933171199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1933171200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1948895999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1948896000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1964620799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1964620800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1980345599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1980345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1996070399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1996070400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2011795199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2011795200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2027519999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2027520000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2043244799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2043244800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2058969599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2058969600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2075299199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2075299200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2091023999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2091024000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2106748799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2106748800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2122473599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2122473600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2138198399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2138198400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Perth.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Perth.json new file mode 100644 index 0000000..dc9d7ea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Perth.json @@ -0,0 +1,48 @@ +({ + name: "date.timezone.Australia-Perth", + runTest: function(t){ + var tz = "Australia/Perth"; + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -1672559941000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, -1672559940000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, -1665385201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -1665385200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -883634401000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, -883634400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, -876121201000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -876121200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -860392801000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, -860392800000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, -844671601000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, -844671600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 152042399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 152042400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 162928799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 162928800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 436298399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 436298400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 447184799000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 447184800000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 690314399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 690314400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 699386399000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 699386400000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1165082399000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 1165082400000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 1174759199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1174759200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1193507999000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 1193508000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 1206813599000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1206813600000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1224957599000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 1224957600000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 1238263199000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1238263200000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "WST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -480, tzAbbr: "WST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Sydney.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Sydney.json new file mode 100644 index 0000000..c844c65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Australia-Sydney.json @@ -0,0 +1,294 @@ +({ + name: "date.timezone.Australia-Sydney", + runTest: function(t){ + var tz = "Australia/Sydney"; + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1672567141000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1672567140000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -1665392401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -1665392400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -883641601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -883641600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -876128401000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -876128400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -860400001000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -860400000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -844678801000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -844678800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -828345601000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -828345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, -813229201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, -813229200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 57686399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 57686400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 67967999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 67968000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 89135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 89136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 100022399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 100022400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 120585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 120585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 131471999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 131472000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 152035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 152035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 162921599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 162921600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 183484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 183484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 194975999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 194976000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 215539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 215539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 226425599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 226425600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 246988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 246988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 257875199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 257875200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 278438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 278438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 289324799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 289324800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 309887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 309888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 320774399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 320774400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 341337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 341337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 352223999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 352224000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 372787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 372787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 386697599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 386697600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 404841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 404841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 415727999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 415728000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 436291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 436291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 447177599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 447177600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 467740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 467740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 478627199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 478627200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 499190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 499190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 511286399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 511286400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 530035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 530035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 542735999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 542736000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 562089599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 562089600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 574790399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 574790400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 594143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 594144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 606239999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 606240000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 625593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 625593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 636479999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 636480000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 657043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 657043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 667929599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 667929600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 688492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 688492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 699379199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 699379200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 719942399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 719942400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 731433599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 731433600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 751996799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 751996800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 762883199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 762883200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 783446399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 783446400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 794332799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 794332800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 814895999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 814896000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 828201599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 828201600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 846345599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 846345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 859651199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 859651200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 877795199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 877795200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 891100799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 891100800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 909244799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 909244800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 922550399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 922550400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 941299199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 941299200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 953999999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 954000000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 967305599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 967305600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 985449599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 985449600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1004198399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1004198400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1017503999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1017504000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1035647999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1035648000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1048953599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1048953600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1067097599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1067097600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1080403199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1080403200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1099151999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1099152000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1111852799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1111852800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1130601599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1130601600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1143907199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1143907200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1162051199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1162051200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1174751999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1174752000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1193500799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1193500800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1207411199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1207411200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1223135999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1223136000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1238860799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1238860800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1254585599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1254585600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1270310399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1270310400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1286035199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1286035200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1301759999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1301760000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1317484799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1317484800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1333209599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1333209600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1349539199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1349539200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1365263999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1365264000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1380988799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1380988800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1396713599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1396713600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1412438399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1412438400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1428163199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1428163200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1443887999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1443888000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1459612799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1459612800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1475337599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1475337600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1491062399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1491062400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1506787199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1506787200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1522511999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1522512000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1538841599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1538841600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1554566399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1554566400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1570291199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1570291200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1586015999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1586016000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1601740799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1601740800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1617465599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1617465600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1633190399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1633190400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1648915199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1648915200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1664639999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1664640000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1680364799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1680364800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1696089599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1696089600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1712419199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1712419200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1728143999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1728144000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1743868799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1743868800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1759593599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1759593600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1775318399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1775318400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1791043199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1791043200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1806767999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1806768000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1822492799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1822492800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1838217599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1838217600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1853942399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1853942400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1869667199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1869667200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1885996799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1885996800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1901721599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1901721600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1917446399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1917446400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1933171199000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1933171200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1948895999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1948896000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1964620799000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1964620800000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1980345599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1980345600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1996070399000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1996070400000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2011795199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2011795200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2027519999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2027520000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2043244799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2043244800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2058969599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2058969600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2075299199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2075299200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2091023999000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2091024000000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2106748799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2106748800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2122473599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2122473600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 2138198399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2138198400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_CET.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_CET.json new file mode 100644 index 0000000..7e6b0ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_CET.json @@ -0,0 +1,284 @@ +({ + name: "date.timezone.CET", + runTest: function(t){ + var tz = "CET"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -938905201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -938905200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_CST6CDT.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_CST6CDT.json new file mode 100644 index 0000000..251ae56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_CST6CDT.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.CST6CDT", + runTest: function(t){ + var tz = "CST6CDT"; + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1633276801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1633276800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1615136401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1615136400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1601827201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1601827200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -1583686801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -1583686800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -880214401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -880214400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CPT"}, -765392401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -765392400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -84384001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -84384000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -68662801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -68662800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -52934401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -52934400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -37213201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -37213200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -21484801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -21484800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, -5763601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, -5763600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 9964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 9964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 25685999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 25686000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 41414399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 41414400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 57740399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 57740400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 73468799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 73468800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 89189999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 89190000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 104918399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 104918400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 120639599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 120639600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 126691199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 126691200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 152089199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 152089200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 162374399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 162374400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 183538799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 183538800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 199267199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 199267200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 215593199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 215593200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 230716799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 230716800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 247042799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 247042800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 262771199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 262771200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 278492399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 278492400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 294220799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 294220800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 309941999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 309942000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 325670399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 325670400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 341391599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 341391600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 357119999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 357120000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 372841199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 372841200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 388569599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 388569600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 404895599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 404895600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 420019199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 420019200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 436345199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 436345200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 452073599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 452073600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 467794799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 467794800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 483523199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 483523200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 499244399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 499244400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 514972799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 514972800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 530693999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 530694000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 544607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 544608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 562143599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 562143600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 576057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 576057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 594197999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 594198000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 607507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 607507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 625647599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 625647600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 638956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 638956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 657097199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 657097200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 671011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 671011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 688546799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 688546800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 702460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 702460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 719996399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 719996400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 733910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 733910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 752050799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 752050800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 765359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 765360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 783500399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 783500400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 796809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 796809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 814949999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 814950000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 828863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 828864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 846399599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 846399600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 860313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 860313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 877849199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 877849200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 891763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 891763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 909298799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 909298800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 923212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 923212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 941353199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 941353200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 954662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 954662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 972802799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 972802800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 986111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 986112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1004252399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1004252400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1018166399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1018166400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1035701999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1035702000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1049615999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1049616000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1067151599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1067151600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1081065599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1081065600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1099205999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1099206000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1112515199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1112515200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1130655599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1130655600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1143964799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1143964800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1162105199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1162105200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1173599999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1173600000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1194159599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1194159600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1205049599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1205049600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1225609199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1225609200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1236499199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1236499200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1257058799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1257058800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1268553599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1268553600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1289113199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1289113200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1300003199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1300003200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1320562799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1320562800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1331452799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1331452800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1352012399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1352012400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1362902399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1362902400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1383461999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1383462000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1394351999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1394352000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1414911599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1414911600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1425801599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1425801600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1446361199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1446361200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1457855999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1457856000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1478415599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1478415600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1489305599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1489305600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1509865199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1509865200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1520755199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1520755200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1541314799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1541314800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1552204799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1552204800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1572764399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1572764400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1583654399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1583654400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1604213999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1604214000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1615708799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1615708800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1636268399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1636268400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1647158399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1647158400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1667717999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1667718000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1678607999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1678608000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1699167599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1699167600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1710057599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1710057600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1730617199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1730617200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1741507199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1741507200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1762066799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1762066800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1772956799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1772956800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1793516399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1793516400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1805011199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1805011200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1825570799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1825570800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1836460799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1836460800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1857020399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1857020400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1867910399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1867910400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1888469999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1888470000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1899359999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1899360000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1919919599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1919919600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1930809599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1930809600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1951369199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1951369200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1962863999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1962864000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1983423599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1983423600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1994313599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1994313600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2014873199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2014873200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2025763199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2025763200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2046322799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2046322800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2057212799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2057212800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2077772399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2077772400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2088662399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2088662400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2109221999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2109222000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2120111999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2120112000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 2140671599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2140671600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "CST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "CDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EET.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EET.json new file mode 100644 index 0000000..f961eef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EET.json @@ -0,0 +1,256 @@ +({ + name: "date.timezone.EET", + runTest: function(t){ + var tz = "EET"; + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EST.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EST.json new file mode 100644 index 0000000..2d415e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EST.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.EST", + runTest: function(t){ + var tz = "EST"; + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EST5EDT.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EST5EDT.json new file mode 100644 index 0000000..6a5552e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_EST5EDT.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.EST5EDT", + runTest: function(t){ + var tz = "EST5EDT"; + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1633280401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1633280400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1615140001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1615140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1601830801000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1601830800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -1583690401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -1583690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -880218001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -880218000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EPT"}, -765396001000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -765396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -84387601000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -84387600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -68666401000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -68666400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -52938001000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -52938000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -37216801000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -37216800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -21488401000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -21488400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, -5767201000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, -5767200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 9961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 9961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 25682399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 25682400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 41410799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 41410800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 57736799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 57736800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 73465199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 73465200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 89186399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 89186400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 104914799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 104914800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 120635999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 120636000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 126687599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 126687600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 152085599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 152085600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 162370799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 162370800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 183535199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 183535200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 199263599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 199263600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 215589599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 215589600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 230713199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 230713200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 247039199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 247039200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 262767599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 262767600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 278488799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 278488800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 294217199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 294217200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 309938399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 309938400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 325666799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 325666800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 341387999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 341388000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 357116399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 357116400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 372837599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 372837600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 388565999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 388566000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 404891999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 404892000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 420015599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 420015600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 436341599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 436341600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 452069999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 452070000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 467791199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 467791200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 483519599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 483519600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 499240799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 499240800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 514969199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 514969200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 530690399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 530690400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 544604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 544604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 562139999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 562140000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 576053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 576054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 594194399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 594194400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 607503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 607503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 625643999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 625644000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 638953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 638953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 657093599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 657093600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 671007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 671007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 688543199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 688543200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 702457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 702457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 719992799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 719992800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 733906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 733906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 752047199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 752047200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 765356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 765356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 783496799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 783496800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 796805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 796806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 814946399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 814946400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 828860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 828860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 846395999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 846396000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 860309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 860310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 877845599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 877845600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 891759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 891759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 909295199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 909295200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 923209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 923209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 941349599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 941349600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 954658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 954658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 972799199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 972799200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 986108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 986108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1004248799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1004248800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1018162799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1018162800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1035698399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1035698400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1049612399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1049612400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1067147999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1067148000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1081061999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1081062000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1099202399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1099202400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1112511599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1112511600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1130651999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1130652000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1143961199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1143961200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1162101599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1162101600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1173596399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1173596400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1194155999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1194156000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1205045999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1205046000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1225605599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1225605600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1236495599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1236495600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1257055199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1257055200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1268549999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1268550000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1289109599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1289109600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1299999599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1299999600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1320559199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1320559200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1331449199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1331449200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1352008799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1352008800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1362898799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1362898800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1383458399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1383458400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1394348399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1394348400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1414907999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1414908000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1425797999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1425798000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1446357599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1446357600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1457852399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1457852400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1478411999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1478412000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1489301999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1489302000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1509861599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1509861600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1520751599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1520751600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1541311199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1541311200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1552201199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1552201200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1572760799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1572760800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1583650799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1583650800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1604210399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1604210400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1615705199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1615705200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1636264799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1636264800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1647154799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1647154800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1667714399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1667714400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1678604399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1678604400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1699163999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1699164000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1710053999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1710054000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1730613599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1730613600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1741503599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1741503600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1762063199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1762063200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1772953199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1772953200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1793512799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1793512800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1805007599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1805007600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1825567199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1825567200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1836457199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1836457200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1857016799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1857016800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1867906799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1867906800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1888466399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1888466400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1899356399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1899356400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1919915999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1919916000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1930805999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1930806000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1951365599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1951365600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1962860399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1962860400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1983419999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1983420000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1994309999000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1994310000000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2014869599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2014869600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2025759599000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2025759600000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2046319199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2046319200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2057209199000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2057209200000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2077768799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2077768800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2088658799000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2088658800000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2109218399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2109218400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2120108399000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2120108400000, tz, 1); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 2140667999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2140668000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 240, tzAbbr: "EDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Amsterdam.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Amsterdam.json new file mode 100644 index 0000000..eca7f21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Amsterdam.json @@ -0,0 +1,370 @@ +({ + name: "date.timezone.Europe-Amsterdam", + runTest: function(t){ + var tz = "Europe/Amsterdam"; + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1693700373000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1693700372000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1680484773000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1680484772000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1663453173000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1663453172000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1650147573000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1650147572000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1633213173000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1633213172000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1617488373000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1617488372000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1601158773000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1601158772000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1586038773000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1586038772000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1569709173000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1569709172000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1554589173000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1554589172000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1538259573000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1538259572000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1523139573000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1523139572000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1507501173000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1507501172000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1490566773000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1490566772000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1470176373000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1470176372000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1459117173000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1459117172000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1443997173000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1443997172000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1427667573000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1427667572000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1406672373000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1406672372000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1396217973000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1396217972000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1376950773000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1376950772000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1364768373000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1364768372000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1345414773000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1345414772000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1333318773000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1333318772000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1313792373000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1313792372000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1301264373000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1301264372000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1282256373000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1282256372000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1269814773000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1269814772000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1250720373000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1250720372000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1238365173000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1238365172000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1219184373000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1219184372000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1206915573000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1206915572000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1186957173000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1186957172000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1175465973000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1175465972000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1156025973000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1156025972000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1143411573000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1143411572000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1124489973000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1124489972000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1111961973000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1111961972000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1092953973000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1092953972000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1080512373000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1080512372000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1061331573000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1061331572000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1049062773000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1049062772000, tz, 1); + doh.checkDate({tzOffset: -19.5333333333333, tzAbbr: "AMT"}, -1029190773000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1029190772000, tz, 1); + doh.checkDate({tzOffset: -79.5333333333333, tzAbbr: "NST"}, -1025745573000, tz, 1); + doh.checkDate({tzOffset: -80, tzAbbr: "NEST"}, -1025745572000, tz, 1); + doh.checkDate({tzOffset: -80, tzAbbr: "NEST"}, -1017613201000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "NET"}, -1017613200000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "NET"}, -998259601000, tz, 1); + doh.checkDate({tzOffset: -80, tzAbbr: "NEST"}, -998259600000, tz, 1); + doh.checkDate({tzOffset: -80, tzAbbr: "NEST"}, -986163601000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "NET"}, -986163600000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "NET"}, -966723601000, tz, 1); + doh.checkDate({tzOffset: -80, tzAbbr: "NEST"}, -966723600000, tz, 1); + doh.checkDate({tzOffset: -80, tzAbbr: "NEST"}, -954109201000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "NET"}, -954109200000, tz, 1); + doh.checkDate({tzOffset: -20, tzAbbr: "NET"}, -935022001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -935022000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Andorra.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Andorra.json new file mode 100644 index 0000000..74780b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Andorra.json @@ -0,0 +1,226 @@ +({ + name: "date.timezone.Europe-Andorra", + runTest: function(t){ + var tz = "Europe/Andorra"; + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -733881601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733881600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Athens.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Athens.json new file mode 100644 index 0000000..7b48a5b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Athens.json @@ -0,0 +1,286 @@ +({ + name: "date.timezone.Europe-Athens", + runTest: function(t){ + var tz = "Europe/Athens"; + doh.checkDate({tzOffset: -94.8666666666667, tzAbbr: "AMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -94.8666666666667, tzAbbr: "AMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -94.8666666666667, tzAbbr: "AMT"}, -1686101633000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1686101632000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1182996001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1182996000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1178161201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1178161200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -906861601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -906861600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -904878001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -904878000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844477201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844477200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828237601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828237600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812422801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -812422800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -552362401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -552362400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -541652401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -541652400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 166485599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 166485600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 186184799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 186184800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 198028799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 198028800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 213753599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 213753600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 228873599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 228873600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 244079999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 244080000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 260323199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 260323200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 275446799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 275446800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 291797999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 291798000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 307407599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 307407600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 323387999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 323388000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 338936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 338936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Belgrade.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Belgrade.json new file mode 100644 index 0000000..09a183e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Belgrade.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Europe-Belgrade", + runTest: function(t){ + var tz = "Europe/Belgrade"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -905824801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -905824800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -777942001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -777942000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Berlin.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Berlin.json new file mode 100644 index 0000000..6b8a245 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Berlin.json @@ -0,0 +1,296 @@ +({ + name: "date.timezone.Europe-Berlin", + runTest: function(t){ + var tz = "Europe/Berlin"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -938905201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -938905200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -776563201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CEMT"}, -776563200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CEMT"}, -765936001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -765936000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -761180401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -761180400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -748479601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -748479600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733273201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733273200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -717631201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -717631200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -714610801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CEMT"}, -714610800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CEMT"}, -710380801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -710380800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -701910001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -701910000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -684975601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -684975600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -670460401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -670460400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -654130801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -654130800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -639010801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -639010800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Brussels.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Brussels.json new file mode 100644 index 0000000..7e65581 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Brussels.json @@ -0,0 +1,378 @@ +({ + name: "date.timezone.Europe-Brussels", + runTest: function(t){ + var tz = "Europe/Brussels"; + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1740355201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1740355200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693702801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693702800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1613826001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1613826000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1604278801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1604278800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1585530001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1585530000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1574038801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1574038800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1552266001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1552266000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1539997201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1539997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1520557201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1520557200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1507510801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1507510800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1490576401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1490576400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1473642001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1473642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1459126801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1459126800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1444006801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1444006800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1427677201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1427677200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1411952401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1411952400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1396227601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1396227600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1379293201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1379293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1364778001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1364778000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1348448401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1348448400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1333328401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1333328400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1316394001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1316394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1301263201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1301263200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1284328801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1284328800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1269813601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1269813600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1253484001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1253484000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1238364001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1238364000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1221429601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1221429600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1206914401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1206914400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1191189601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1191189600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1175464801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1175464800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1160344801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1160344800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1143410401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1143410400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1127685601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1127685600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1111960801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1111960800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1096840801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1096840800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1080511201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1080511200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1063576801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1063576800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1049061601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1049061600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1033336801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1033336800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1017612001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1017612000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1002492001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1002492000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -986162401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -986162400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -969228001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -969228000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -950479201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -950479200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -934668001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -934668000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -798073201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -798073200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -745455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -745455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733273201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733273200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Bucharest.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Bucharest.json new file mode 100644 index 0000000..7f207b5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Bucharest.json @@ -0,0 +1,282 @@ +({ + name: "date.timezone.Europe-Bucharest", + runTest: function(t){ + var tz = "Europe/Bucharest"; + doh.checkDate({tzOffset: -104.4, tzAbbr: "BMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -104.4, tzAbbr: "BMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -104.4, tzAbbr: "BMT"}, -1213148665000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1213148664000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1187056801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1187056800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1175479201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1175479200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1159754401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1159754400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1144029601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1144029600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1127700001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1127700000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1111975201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1111975200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1096250401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1096250400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1080525601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1080525600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1064800801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1064800800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1049076001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1049076000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1033351201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1033351200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1017626401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1017626400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1001901601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1001901600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -986176801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -986176800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -970452001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -970452000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -954727201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -954727200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 296603999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 296604000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 307486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 307486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 323816399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 323816400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 338939999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 338940000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 354671999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 354672000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 370396799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 370396800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 386121599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 386121600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 401846399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 401846400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 417571199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 417571200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433295999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433296000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 449020799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 449020800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465350399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465350400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 481075199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 481075200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496799999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496800000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512524799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512524800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528249599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528249600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 543974399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 543974400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 559699199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 559699200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575423999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575424000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591148799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591148800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 606873599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606873600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622598399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622598400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638323199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638323200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654652799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654652800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670370399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670370400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686095199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686095200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717544799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717544800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748994399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748994400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796168799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796168800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846363599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846363600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Budapest.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Budapest.json new file mode 100644 index 0000000..5c4e0b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Budapest.json @@ -0,0 +1,316 @@ +({ + name: "date.timezone.Europe-Budapest", + runTest: function(t){ + var tz = "Europe/Budapest"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1633212001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1633212000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1617577201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1617577200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1600466401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1600466400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1587250801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1587250800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1569708001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1569708000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1554332401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1554332400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -906937201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -906937200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -778471201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -778471200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -762487201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -762487200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -749689201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -749689200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733359601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733359600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -717634801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -717634800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -701910001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -701910000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -686185201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -686185200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -670460401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -670460400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -654130801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -654130800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -639010801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -639010800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -621990001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -621990000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -605660401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -605660400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -492656401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -492656400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -481168801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -481168800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -461120401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -461120400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -449632801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -449632800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -428547601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -428547600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -418269601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -418269600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -397094401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -397094400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -386809201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -386809200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323827199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323827200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Chisinau.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Chisinau.json new file mode 100644 index 0000000..c8916a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Chisinau.json @@ -0,0 +1,288 @@ +({ + name: "date.timezone.Europe-Chisinau", + runTest: function(t){ + var tz = "Europe/Chisinau"; + doh.checkDate({tzOffset: -115, tzAbbr: "CMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -115, tzAbbr: "CMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -115, tzAbbr: "CMT"}, -1637114101000, tz, 1); + doh.checkDate({tzOffset: -104.4, tzAbbr: "BMT"}, -1637114100000, tz, 1); + doh.checkDate({tzOffset: -104.4, tzAbbr: "BMT"}, -1213148665000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1213148664000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1187056801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1187056800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1175479201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1175479200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1159754401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1159754400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1144029601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1144029600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1127700001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1127700000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1111975201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1111975200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1096250401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1096250400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1080525601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1080525600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1064800801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1064800800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1049076001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1049076000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1033351201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1033351200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1017626401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1017626400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1001901601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1001901600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -986176801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -986176800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -970452001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -970452000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -954727201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -954727200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -927165601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -927165600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -898138801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -898138800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -800157601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -800157600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 641941199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 641941200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670377599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670377600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796168799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796168800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846363599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846363600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Copenhagen.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Copenhagen.json new file mode 100644 index 0000000..4812c49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Copenhagen.json @@ -0,0 +1,276 @@ +({ + name: "date.timezone.Europe-Copenhagen", + runTest: function(t){ + var tz = "Europe/Copenhagen"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1692496801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1692496800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680490801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680490800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -935110801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -935110800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -769388401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -769388400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -747010801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -747010800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -736383601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -736383600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -715215601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -715215600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -706748401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -706748400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -683161201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -683161200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -675298801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -675298800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Dublin.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Dublin.json new file mode 100644 index 0000000..c9f556a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Dublin.json @@ -0,0 +1,466 @@ +({ + name: "date.timezone.Europe-Dublin", + runTest: function(t){ + var tz = "Europe/Dublin"; + doh.checkDate({tzOffset: 25.35, tzAbbr: "DMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 25.35, tzAbbr: "DMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 25.35, tzAbbr: "DMT"}, -1691962480000, tz, 1); + doh.checkDate({tzOffset: -34.65, tzAbbr: "IST"}, -1691962479000, tz, 1); + doh.checkDate({tzOffset: -34.65, tzAbbr: "IST"}, -1680471280000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1680471279000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1664143201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1664143200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1650146401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1650146400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1633903201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1633903200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1617487201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1617487200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1601848801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1601848800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1586037601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1586037600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1570399201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1570399200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1552168801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1552168800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1538344801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1538344800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1522533601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1522533600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1507500001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1507500000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1490565601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1490565600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1473631201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1473631200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1460930401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1460930400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1442786401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1442786400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1428876001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1428876000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1410732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1410732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1396216801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1396216800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1379282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1379282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1364767201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1364767200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1348437601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1348437600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1333317601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1333317600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1315778401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1315778400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1301263201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1301263200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1284328801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1284328800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1269813601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1269813600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1253484001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1253484000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1238364001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1238364000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1221429601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1221429600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1206914401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1206914400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1189980001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1189980000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1175464801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1175464800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1159135201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1159135200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1143410401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1143410400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1126476001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1126476000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1111960801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1111960800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1095631201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1095631200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1080511201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1080511200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1063576801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1063576800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1049061601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1049061600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1032127201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1032127200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1017612001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1017612000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1001282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -1001282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -986162401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -986162400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -969228001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -969228000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -950479201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -950479200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -733359601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -733359600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -719445601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -719445600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -699490801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -699490800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -684972001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -684972000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -668037601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -668037600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -654732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -654732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -636588001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -636588000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -622072801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -622072800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -605743201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -605743200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -590623201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -590623200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -574293601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -574293600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -558568801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -558568800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -542239201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -542239200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -527119201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -527119200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -512604001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -512604000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -496274401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -496274400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -481154401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -481154400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -464220001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -464220000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -449704801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -449704800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -432165601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -432165600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -417650401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -417650400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -401320801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -401320800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -386200801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -386200800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -369266401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -369266400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -354751201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -354751200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -337816801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -337816800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -323301601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -323301600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -306972001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -306972000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -291852001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -291852000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -276732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -276732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -257983201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -257983200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -245282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -245282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -226533601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -226533600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -213228001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -213228000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -195084001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -195084000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -182383201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -182383200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -163634401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -163634400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -150933601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -150933600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -132184801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -132184800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -119484001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -119484000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -100735201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -100735200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -88034401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -88034400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -68680801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -68680800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -59004001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -59004000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -37242001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, -37242000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 57722399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 57722400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 69818399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 69818400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 89171999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 89172000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 101267999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 101268000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 120621599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 120621600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 132717599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 132717600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 152071199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 152071200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 164167199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 164167200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 183520799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 183520800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 196221599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 196221600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 214970399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 214970400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 227671199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 227671200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 246419999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 246420000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 259120799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 259120800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 278474399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 278474400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 290570399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 290570400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 309923999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 309924000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 322019999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 322020000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 341373599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 341373600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 372819599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 372819600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 404269199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 404269200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 435718799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 435718800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 467773199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 467773200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 499222799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 499222800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 530672399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 530672400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 562121999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 562122000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 593571599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 593571600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 625625999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 625626000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 657075599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 657075600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 688525199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 688525200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 719974799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 719974800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 751424399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 751424400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 782873999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 782874000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 814323599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 814323600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "IST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Gibraltar.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Gibraltar.json new file mode 100644 index 0000000..fb78a2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Gibraltar.json @@ -0,0 +1,406 @@ +({ + name: "date.timezone.Europe-Gibraltar", + runTest: function(t){ + var tz = "Europe/Gibraltar"; + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1691964001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1691964000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1680472801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1680472800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1664143201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1664143200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1650146401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1650146400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1633903201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1633903200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1617487201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1617487200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1601848801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1601848800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1586037601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1586037600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1570399201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1570399200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1552168801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1552168800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1538344801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1538344800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1522533601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1522533600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1507500001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1507500000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1490565601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1490565600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1473631201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1473631200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1460930401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1460930400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1442786401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1442786400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1428876001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1428876000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1410732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1410732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1396216801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1396216800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1379282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1379282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1364767201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1364767200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1348437601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1348437600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1333317601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1333317600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1315778401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1315778400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1301263201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1301263200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1284328801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1284328800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1269813601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1269813600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1253484001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1253484000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1238364001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1238364000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1221429601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1221429600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1206914401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1206914400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1189980001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1189980000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1175464801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1175464800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1159135201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1159135200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1143410401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1143410400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1126476001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1126476000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1111960801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1111960800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1095631201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1095631200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1080511201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1080511200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1063576801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1063576800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1049061601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1049061600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1032127201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1032127200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1017612001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1017612000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1001282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1001282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -986162401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -986162400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -969228001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -969228000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -950479201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -950479200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -904518001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -904518000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -896050801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -896050800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -875487601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -875487600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -864601201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -864601200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -844038001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -844038000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -832546801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -832546800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -812588401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -812588400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -798073201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -798073200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -772066801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -772066800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -764805601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -764805600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -748476001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -748476000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -733356001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -733356000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -719445601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -719445600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -717030001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -717030000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -706748401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -706748400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -699487201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -699487200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -687996001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -687996000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -668037601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -668037600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -654732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -654732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -636588001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -636588000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -622072801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -622072800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -605743201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -605743200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -590623201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -590623200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -574293601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -574293600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -558568801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -558568800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -542239201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -542239200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -527119201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -527119200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -512604001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -512604000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -496274401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -496274400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -481154401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -481154400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -464220001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -464220000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -449704801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -449704800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -432165601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -432165600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -417650401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -417650400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -401320801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -401320800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Helsinki.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Helsinki.json new file mode 100644 index 0000000..6ac34c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Helsinki.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Europe-Helsinki", + runTest: function(t){ + var tz = "Europe/Helsinki"; + doh.checkDate({tzOffset: -99.8666666666667, tzAbbr: "HMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -99.8666666666667, tzAbbr: "HMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -99.8666666666667, tzAbbr: "HMT"}, -1535938793000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1535938792000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -875671201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -875671200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -859863601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -859863600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Istanbul.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Istanbul.json new file mode 100644 index 0000000..ca718cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Istanbul.json @@ -0,0 +1,352 @@ +({ + name: "date.timezone.Europe-Istanbul", + runTest: function(t){ + var tz = "Europe/Istanbul"; + doh.checkDate({tzOffset: -116.933333333333, tzAbbr: "IMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -116.933333333333, tzAbbr: "IMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -116.933333333333, tzAbbr: "IMT"}, -1869875817000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1869875816000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1680490801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1680490800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1570413601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1570413600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1552186801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1552186800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1538359201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1538359200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1522551601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1522551600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1507514401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1507514400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1490583601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1490583600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1440208801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1440208800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1428030001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1428030000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1409709601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1409709600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1396494001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1396494000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -931140001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -931140000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -922762801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -922762800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -917834401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -917834400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -892436401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -892436400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -875844001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -875844000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -857358001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -857358000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -781063201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -781063200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -764737201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -764737200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -744343201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -744343200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -733806001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -733806000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -716436001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -716436000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -701924401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -701924400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -684986401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -684986400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -670474801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -670474800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -654141601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -654141600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -639025201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -639025200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -621828001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -621828000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -606970801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -606970800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -590032801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -590032800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -575434801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -575434800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -235620001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -235620000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -228279601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -228279600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -177732001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -177732000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -165726001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -165726000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 10533599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 10533600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 23835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 23835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 41983199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 41983200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 55285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 55285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 74037599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 74037600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 87339599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 87339600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 107909999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 107910000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 121219199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 121219200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 133919999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 133920000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 152675999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 152676000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 165362399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 165362400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 183502799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 183502800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 202427999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 202428000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 215557199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 215557200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 228866399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 228866400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 245797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 245797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 260315999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 260316000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 277246799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 277246800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 308779199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 308779200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 323827199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 323827200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 340228799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 340228800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 354671999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 354672000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 371678399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 371678400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 386121599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 386121600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 403127999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 403128000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 428446799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 428446800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "TRST"}, 433886399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 433886400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TRT"}, 482792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 482792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496702799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496702800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512524799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512524800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528249599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528249600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 543974399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 543974400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 559699199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 559699200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575423999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575424000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591148799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591148800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 606873599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606873600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622598399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622598400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638323199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638323200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654652799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654652800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686098799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686098800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701823599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701823600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717548399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717548400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733273199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733273200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748997999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748998000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764722799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764722800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780447599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780447600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796172399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796172400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811897199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811897200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828226799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828226800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846370799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846370800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859676399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859676400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877820399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877820400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891125999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891126000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909269999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909270000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922575599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922575600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941324399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941324400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954025199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954025200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972773999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972774000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985474799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985474800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004223599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004223600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017529199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017529200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035673199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035673200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048978799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048978800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067122799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067122800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080428399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080428400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099177199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099177200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111877999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111878000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130626799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130626800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143327599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143327600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162076399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162076400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Kaliningrad.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Kaliningrad.json new file mode 100644 index 0000000..c96c934 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Kaliningrad.json @@ -0,0 +1,272 @@ +({ + name: "date.timezone.Europe-Kaliningrad", + runTest: function(t){ + var tz = "Europe/Kaliningrad"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -938905201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -938905200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -788922001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CET"}, -788922000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CET"}, -778730401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CEST"}, -778730400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "CEST"}, -762663601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CET"}, -762663600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CET"}, -757389601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -757389600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 638319599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 638319600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701816399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701816400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717537599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717537600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733276799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733276800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749001599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749001600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764726399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764726400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780451199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780451200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796175999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796176000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811900799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811900800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828230399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828230400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846374399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846374400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859679999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859680000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877823999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877824000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891129599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891129600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909273599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909273600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922579199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922579200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941327999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941328000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954028799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954028800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972777599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972777600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985478399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985478400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004227199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004227200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017532799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017532800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035676799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035676800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048982399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048982400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067126399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067126400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080431999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080432000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099180799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099180800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111881599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111881600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130630399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130630400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143331199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143331200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162079999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162080000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174780799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174780800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193529599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193529600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206835199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206835200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224979199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224979200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238284799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238284800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256428799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256428800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269734399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269734400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288483199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288483200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301183999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301184000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319932799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319932800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332633599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332633600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351382399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351382400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364687999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364688000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382831999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382832000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396137599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396137600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414281599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414281600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427587199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427587200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445731199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445731200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459036799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459036800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477785599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477785600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490486399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490486400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509235199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509235200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521935999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521936000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540684799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540684800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553990399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553990400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572134399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572134400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585439999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585440000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603583999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603584000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616889599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616889600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635638399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635638400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648339199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648339200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667087999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667088000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679788799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679788800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698537599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698537600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711843199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711843200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729987199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729987200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743292799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743292800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761436799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761436800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774742399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774742400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792886399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792886400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806191999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806192000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824940799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824940800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837641599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837641600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856390399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856390400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869091199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869091200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887839999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887840000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901145599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901145600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919289599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919289600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932595199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932595200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950739199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950739200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964044799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964044800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982793599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982793600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995494399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995494400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014243199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014243200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026943999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026944000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045692799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045692800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058393599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058393600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077142399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077142400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090447999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090448000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108591999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108592000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121897599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121897600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140041599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140041600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Kiev.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Kiev.json new file mode 100644 index 0000000..3160b42 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Kiev.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Europe-Kiev", + runTest: function(t){ + var tz = "Europe/Kiev"; + doh.checkDate({tzOffset: -122.066666666667, tzAbbr: "KMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -122.066666666667, tzAbbr: "KMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -122.066666666667, tzAbbr: "KMT"}, -1441159325000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1441159324000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1247536801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1247536800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -892522801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -892522800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -825382801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -825382800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 646786799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 646786800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Lisbon.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Lisbon.json new file mode 100644 index 0000000..ddb6aca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Lisbon.json @@ -0,0 +1,454 @@ +({ + name: "date.timezone.Europe-Lisbon", + runTest: function(t){ + var tz = "Europe/Lisbon"; + doh.checkDate({tzOffset: 36.5333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 36.5333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 36.5333333333333, tzAbbr: "LMT"}, -1830381809000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1830381808000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1689555601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1689555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1677801601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1677801600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1667437201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1667437200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1647738001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1647738000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1635814801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1635814800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1616202001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1616202000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1604365201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1604365200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1584666001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1584666000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1572742801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1572742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1553043601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1553043600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1541206801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1541206800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1521507601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1521507600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1442451601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1442451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1426813201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1426813200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1379293201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1379293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1364778001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1364778000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1348448401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1348448400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1333328401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1333328400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1316394001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1316394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1301274001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1301274000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1284339601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1284339600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1269824401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1269824400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1221440401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1221440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1206925201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1206925200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1191200401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1191200400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1175475601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1175475600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1127696401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1127696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1111971601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1111971600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1096851601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1096851600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1080522001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1080522000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1063587601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1063587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1049072401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1049072400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1033347601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1033347600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1017622801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1017622800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1002502801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1002502800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -986173201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -986173200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -969238801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -969238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -950490001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -950490000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -942022801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -942022800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -922669201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -922669200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -906944401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -906944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -891133201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -891133200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -877309201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -877309200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -873684001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -873684000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -864007201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -864007200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -857955601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -857955600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -845859601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -845859600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -842839201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -842839200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -831348001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -831348000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -825901201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -825901200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -814410001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -814410000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -810784801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -810784800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -799898401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -799898400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -794451601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -794451600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -782960401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -782960400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -779335201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -779335200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -768448801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -768448800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -763002001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -763002000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -749091601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -749091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -733366801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -733366800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -717631201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -717631200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -701906401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -701906400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -686181601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -686181600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -670456801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -670456800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -654732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -654732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -639007201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -639007200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -591832801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -591832800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -575503201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -575503200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -559778401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -559778400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -544053601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -544053600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -528328801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -528328800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -512604001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -512604000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -496879201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -496879200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -481154401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -481154400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -465429601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -465429600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -449704801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -449704800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -433980001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -433980000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -417650401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -417650400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -401925601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -401925600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -386200801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -386200800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -370476001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -370476000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -354751201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -354751200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -339026401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -339026400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -323301601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -323301600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -307576801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -307576800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -291852001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -291852000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -276127201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -276127200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -260402401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -260402400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -244677601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -244677600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -228348001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -228348000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -212623201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -212623200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -196898401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -196898400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -181173601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -181173600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -165448801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -165448800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -149724001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -149724000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -133999201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -133999200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -118274401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -118274400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 212543999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 212544000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 228268799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 228268800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 243993599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 243993600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 260323199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 260323200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 276047999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 276048000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 291772799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 291772800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 323222399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 323222400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 417578399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 417578400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-London.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-London.json new file mode 100644 index 0000000..e3a050c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-London.json @@ -0,0 +1,494 @@ +({ + name: "date.timezone.Europe-London", + runTest: function(t){ + var tz = "Europe/London"; + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1691964001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1691964000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1680472801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1680472800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1664143201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1664143200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1650146401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1650146400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1633903201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1633903200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1617487201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1617487200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1601848801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1601848800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1586037601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1586037600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1570399201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1570399200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1552168801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1552168800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1538344801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1538344800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1522533601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1522533600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1507500001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1507500000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1490565601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1490565600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1473631201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1473631200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1460930401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1460930400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1442786401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1442786400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1428876001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1428876000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1410732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1410732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1396216801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1396216800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1379282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1379282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1364767201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1364767200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1348437601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1348437600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1333317601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1333317600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1315778401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1315778400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1301263201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1301263200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1284328801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1284328800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1269813601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1269813600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1253484001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1253484000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1238364001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1238364000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1221429601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1221429600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1206914401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1206914400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1189980001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1189980000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1175464801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1175464800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1159135201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1159135200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1143410401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1143410400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1126476001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1126476000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1111960801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1111960800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1095631201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1095631200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1080511201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1080511200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1063576801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1063576800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1049061601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1049061600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1032127201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1032127200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1017612001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1017612000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -1001282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -1001282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -986162401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -986162400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -969228001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -969228000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -950479201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -950479200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -904518001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -904518000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -896050801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -896050800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -875487601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -875487600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -864601201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -864601200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -844038001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -844038000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -832546801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -832546800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -812588401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -812588400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -798073201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -798073200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -772066801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -772066800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -764805601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -764805600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -748476001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -748476000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -733356001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -733356000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -719445601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -719445600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -717030001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -717030000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "BDST"}, -706748401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -706748400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -699487201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -699487200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -687996001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -687996000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -668037601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -668037600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -654732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -654732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -636588001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -636588000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -622072801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -622072800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -605743201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -605743200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -590623201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -590623200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -574293601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -574293600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -558568801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -558568800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -542239201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -542239200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -527119201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -527119200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -512604001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -512604000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -496274401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -496274400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -481154401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -481154400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -464220001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -464220000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -449704801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -449704800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -432165601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -432165600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -417650401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -417650400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -401320801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -401320800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -386200801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -386200800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -369266401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -369266400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -354751201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -354751200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -337816801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -337816800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -323301601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -323301600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -306972001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -306972000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -291852001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -291852000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -276732001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -276732000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -257983201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -257983200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -245282401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -245282400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -226533601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -226533600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -213228001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -213228000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -195084001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -195084000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -182383201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -182383200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -163634401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -163634400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -150933601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -150933600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -132184801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -132184800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -119484001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -119484000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -100735201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -100735200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -88034401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -88034400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -68680801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -68680800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, -59004001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -59004000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -37242001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, -37242000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 57722399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 57722400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 69818399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 69818400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 89171999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 89172000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 101267999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 101268000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 120621599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 120621600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 132717599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 132717600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 152071199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 152071200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 164167199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 164167200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 183520799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 183520800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 196221599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 196221600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 214970399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 214970400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 227671199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 227671200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 246419999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 246420000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 259120799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 259120800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 278474399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 278474400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 290570399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 290570400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 309923999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 309924000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 322019999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 322020000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 341373599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 341373600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 372819599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 372819600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 404269199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 404269200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 435718799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 435718800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 467773199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 467773200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 499222799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 499222800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 530672399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 530672400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 562121999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 562122000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 593571599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 593571600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 625625999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 625626000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 657075599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 657075600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 688525199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 688525200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 719974799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 719974800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 751424399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 751424400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 782873999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 782874000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 814323599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 814323600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "GMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "BST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Luxembourg.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Luxembourg.json new file mode 100644 index 0000000..32f9428 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Luxembourg.json @@ -0,0 +1,378 @@ +({ + name: "date.timezone.Europe-Luxembourg", + runTest: function(t){ + var tz = "Europe/Luxembourg"; + doh.checkDate({tzOffset: -24.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -24.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -24.6, tzAbbr: "LMT"}, -2069713477000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2069713476000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1692496801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1692496800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1662343201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1662343200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650157201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650157200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1612659601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1612659600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1604278801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1604278800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1585519201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1585519200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1574038801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1574038800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1552258801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1552258800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1539997201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1539997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1520550001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1520550000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1507510801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1507510800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1490572801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1490572800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1473642001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1473642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1459119601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1459119600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1444006801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1444006800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1427673601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1427673600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1411866001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1411866000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1396224001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1396224000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1379293201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1379293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1364774401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1364774400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1348448401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1348448400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1333324801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1333324800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1316394001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1316394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1301270401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1301270400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1284339601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1284339600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1269813601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1269813600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1253484001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1253484000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1238364001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1238364000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1221429601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1221429600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1206914401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1206914400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1191189601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1191189600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1175464801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1175464800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1160344801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1160344800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1143410401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1143410400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1127685601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1127685600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1111960801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1111960800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1096840801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1096840800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1080511201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1080511200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1063576801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1063576800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1049061601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1049061600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1033336801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1033336800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1017612001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1017612000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1002492001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1002492000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -986162401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -986162400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -969228001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -969228000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -950479201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -950479200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -935186401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEST"}, -935186400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEST"}, -797986801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -797986800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -745455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -745455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733273201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733273200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Madrid.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Madrid.json new file mode 100644 index 0000000..62ac03f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Madrid.json @@ -0,0 +1,338 @@ +({ + name: "date.timezone.Europe-Madrid", + runTest: function(t){ + var tz = "Europe/Madrid"; + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1661734801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1661734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1648429201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1648429200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1631926801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1631926800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1616893201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1616893200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1601254801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1601254800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1585357201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1585357200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1442451601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1442451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1427677201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1427677200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1379293201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1379293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1364778001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1364778000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1348448401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1348448400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1333328401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1333328400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1316394001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1316394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1301274001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1301274000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1284339601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1284339600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1269824401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1269824400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1029114001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1029114000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1017622801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1017622800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1002848401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1002848400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -986173201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -986173200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -969238801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -969238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -954118801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -954118800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -940208401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -940208400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -873079201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -873079200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -862538401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -862538400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -842839201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -842839200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -828237601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -828237600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -811389601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -811389600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -796010401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -796010400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -779940001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -779940000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -765421201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -765421200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -748490401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -748490400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -733888801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733888800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -652327201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -652327200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -639190801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -639190800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 135122399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 135122400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 150245999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 150246000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 167176799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 167176800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 181695599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 181695600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 196811999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 196812000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 212540399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 212540400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228866399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228866400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243989999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243990000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260402399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260402400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276044399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276044400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Malta.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Malta.json new file mode 100644 index 0000000..a26263f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Malta.json @@ -0,0 +1,348 @@ +({ + name: "date.timezone.Europe-Malta", + runTest: function(t){ + var tz = "Europe/Malta"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1690851601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1690851600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1664758801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1664758800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1649034001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1649034000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1635123601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1635123600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1616979601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1616979600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1604278801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1604278800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1585530001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1585530000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1571014801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1571014800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1555290001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1555290000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -932432401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -932432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766717201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766717200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -750898801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -750898800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733359601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733359600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -719456401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -719456400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -701917201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -701917200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -689209201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -689209200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -670460401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -670460400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -114051601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -114051600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -103168801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -103168800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -81997201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -81997200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -71719201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -71719200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -50547601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -50547600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -40269601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -40269600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -18493201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -18493200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -8215201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -8215200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 12956399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 12956400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 23234399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 23234400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 43801199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 43801200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 54687599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 54687600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 75855599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 75855600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 86738399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 86738400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 102380399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 102380400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 118105199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 118105200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 135730799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 135730800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 148517999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 148518000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 167187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 167187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 180489599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 180489600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 198637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 198637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 211939199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 211939200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 230086799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 230086800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243388799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243388800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 261536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 261536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 274838399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 274838400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 292985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 292986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 306287999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 306288000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323312399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323312400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338342399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338342400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Minsk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Minsk.json new file mode 100644 index 0000000..b844f56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Minsk.json @@ -0,0 +1,252 @@ +({ + name: "date.timezone.Europe-Minsk", + runTest: function(t){ + var tz = "Europe/Minsk"; + doh.checkDate({tzOffset: -110, tzAbbr: "MMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -110, tzAbbr: "MMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -110, tzAbbr: "MMT"}, -1441158601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1441158600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1247536801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1247536800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -899780401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -899780400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -804650401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -804650400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717544799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717544800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733276799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733276800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749001599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749001600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764726399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764726400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780451199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780451200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796175999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796176000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811900799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811900800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828230399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828230400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846374399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846374400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859679999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859680000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877823999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877824000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891129599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891129600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909273599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909273600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922579199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922579200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941327999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941328000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954028799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954028800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972777599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972777600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985478399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985478400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004227199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004227200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017532799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017532800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035676799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035676800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048982399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048982400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067126399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067126400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080431999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080432000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099180799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099180800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111881599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111881600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130630399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130630400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143331199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143331200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162079999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162080000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174780799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174780800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193529599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193529600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206835199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206835200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224979199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224979200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238284799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238284800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256428799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256428800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269734399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269734400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288483199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288483200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301183999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301184000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319932799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319932800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332633599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332633600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351382399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351382400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364687999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364688000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382831999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382832000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396137599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396137600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414281599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414281600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427587199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427587200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445731199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445731200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459036799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459036800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477785599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477785600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490486399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490486400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509235199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509235200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521935999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521936000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540684799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540684800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553990399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553990400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572134399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572134400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585439999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585440000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603583999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603584000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616889599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616889600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635638399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635638400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648339199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648339200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667087999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667088000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679788799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679788800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698537599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698537600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711843199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711843200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729987199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729987200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743292799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743292800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761436799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761436800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774742399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774742400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792886399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792886400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806191999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806192000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824940799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824940800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837641599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837641600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856390399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856390400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869091199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869091200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887839999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887840000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901145599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901145600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919289599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919289600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932595199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932595200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950739199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950739200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964044799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964044800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982793599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982793600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995494399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995494400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014243199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014243200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026943999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026944000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045692799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045692800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058393599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058393600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077142399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077142400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090447999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090448000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108591999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108592000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121897599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121897600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140041599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140041600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Monaco.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Monaco.json new file mode 100644 index 0000000..fcc0726 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Monaco.json @@ -0,0 +1,380 @@ +({ + name: "date.timezone.Europe-Monaco", + runTest: function(t){ + var tz = "Europe/Monaco"; + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -1855958962000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1855958961000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1689814801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1689814800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1680397201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1680397200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1665363601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1665363600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1648342801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1648342800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1635123601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1635123600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1616893201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1616893200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1604278801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1604278800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1585443601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1585443600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1574038801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1574038800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1552266001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1552266000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1539997201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1539997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1520557201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1520557200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1507510801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1507510800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1490576401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1490576400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1470618001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1470618000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1459126801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1459126800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1444006801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1444006800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1427677201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1427677200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1411952401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1411952400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1396227601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1396227600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1379293201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1379293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1364778001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1364778000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1348448401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1348448400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1333328401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1333328400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1316394001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1316394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1301274001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1301274000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1284339601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1284339600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1269824401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1269824400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1253494801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1253494800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1238374801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1238374800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1221440401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1221440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1206925201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1206925200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1191200401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1191200400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1175475601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1175475600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1160355601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1160355600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1143421201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1143421200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1127696401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1127696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1111971601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1111971600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1096851601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1096851600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1080522001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1080522000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1063587601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1063587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1049072401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1049072400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1033347601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1033347600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1017622801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1017622800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1002502801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1002502800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -986173201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -986173200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -969238801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -969238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -950490001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -950490000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -904438801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -904438800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -891136801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -891136800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -877827601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -796266001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -796266000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 196819199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 196819200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 212540399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 212540400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Moscow.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Moscow.json new file mode 100644 index 0000000..13215e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Moscow.json @@ -0,0 +1,270 @@ +({ + name: "date.timezone.Europe-Moscow", + runTest: function(t){ + var tz = "Europe/Moscow"; + doh.checkDate({tzOffset: -150, tzAbbr: "MMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "MMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -150, tzAbbr: "MMT"}, -1688265001000, tz, 1); + doh.checkDate({tzOffset: -150.8, tzAbbr: "MMT"}, -1688265000000, tz, 1); + doh.checkDate({tzOffset: -150.8, tzAbbr: "MMT"}, -1656819049000, tz, 1); + doh.checkDate({tzOffset: -210.8, tzAbbr: "MST"}, -1656819048000, tz, 1); + doh.checkDate({tzOffset: -210.8, tzAbbr: "MST"}, -1641353449000, tz, 1); + doh.checkDate({tzOffset: -150.8, tzAbbr: "MMT"}, -1641353448000, tz, 1); + doh.checkDate({tzOffset: -150.8, tzAbbr: "MMT"}, -1627965049000, tz, 1); + doh.checkDate({tzOffset: -270.8, tzAbbr: "MDST"}, -1627965048000, tz, 1); + doh.checkDate({tzOffset: -270.8, tzAbbr: "MDST"}, -1618716649000, tz, 1); + doh.checkDate({tzOffset: -210.8, tzAbbr: "MST"}, -1618716648000, tz, 1); + doh.checkDate({tzOffset: -210.8, tzAbbr: "MST"}, -1596429049000, tz, 1); + doh.checkDate({tzOffset: -270.8, tzAbbr: "MDST"}, -1596429048000, tz, 1); + doh.checkDate({tzOffset: -270.8, tzAbbr: "MDST"}, -1593829849000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, -1593829848000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, -1589860801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1589860800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1542427201000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, -1542427200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, -1539493201000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MSD"}, -1539493200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MSD"}, -1525323601000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, -1525323600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, -1522728001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1522728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1491188401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1491188400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1247536801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1247536800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 638319599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 638319600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 695779199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 695779200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 701812799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 701812800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 717533999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 717534000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 733273199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 733273200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 748997999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 748998000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 764722799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 764722800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 780447599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 780447600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 796172399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 796172400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 811897199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 811897200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 828226799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 828226800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 846370799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 846370800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 859676399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 859676400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 877820399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 877820400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 891125999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 891126000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 909269999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 909270000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 922575599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 922575600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 941324399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 941324400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 954025199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 954025200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 972773999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 972774000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 985474799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 985474800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1004223599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1004223600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1017529199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1017529200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1035673199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1035673200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1048978799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1048978800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1067122799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1067122800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1080428399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1080428400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1099177199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1099177200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1111877999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1111878000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1130626799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1130626800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1143327599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1143327600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1162076399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1162076400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1174777199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1174777200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1193525999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1193526000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1206831599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1206831600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1224975599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1224975600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1238281199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1238281200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1256425199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1256425200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1269730799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1269730800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1288479599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1288479600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1301180399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1301180400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1319929199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1319929200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1332629999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1332630000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1351378799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1351378800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1364684399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1364684400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1382828399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1382828400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1396133999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1396134000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1414277999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1414278000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1427583599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1427583600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1445727599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1445727600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1459033199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1459033200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1477781999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1477782000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1490482799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1490482800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1509231599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1509231600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1521932399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1521932400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1540681199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1540681200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1553986799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1553986800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1572130799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1572130800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1585436399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1585436400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1603580399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1603580400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1616885999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1616886000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1635634799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1635634800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1648335599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1648335600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1667084399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1667084400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1679785199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1679785200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1698533999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1698534000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1711839599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1711839600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1729983599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1729983600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1743289199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1743289200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1761433199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1761433200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1774738799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1774738800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1792882799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1792882800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1806188399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1806188400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1824937199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1824937200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1837637999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1837638000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1856386799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1856386800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1869087599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1869087600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1887836399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1887836400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1901141999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1901142000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1919285999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1919286000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1932591599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1932591600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1950735599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1950735600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1964041199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1964041200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1982789999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1982790000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1995490799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1995490800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2014239599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2014239600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2026940399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2026940400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2045689199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2045689200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2058389999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2058390000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2077138799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2077138800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2090444399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2090444400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2108588399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2108588400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2121893999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2121894000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 2140037999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2140038000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Oslo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Oslo.json new file mode 100644 index 0000000..552de2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Oslo.json @@ -0,0 +1,292 @@ +({ + name: "date.timezone.Europe-Oslo", + runTest: function(t){ + var tz = "Europe/Oslo"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1691884801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1691884800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680573601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680573600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -927511201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -927511200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -765327601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -765327600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -340844401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -340844400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -324514801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -324514800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -308790001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -308790000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -293065201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -293065200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -277340401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -277340400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -261615601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -261615600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -245890801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -245890800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -230166001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -230166000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -214441201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -214441200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -198716401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -198716400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -182991601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -182991600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -166662001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -166662000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -147913201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -147913200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -135212401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -135212400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Paris.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Paris.json new file mode 100644 index 0000000..a09e6c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Paris.json @@ -0,0 +1,378 @@ +({ + name: "date.timezone.Europe-Paris", + runTest: function(t){ + var tz = "Europe/Paris"; + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -9.35, tzAbbr: "PMT"}, -1855958902000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1855958901000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1689814801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1689814800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1680397201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1680397200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1665363601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1665363600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1648342801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1648342800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1635123601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1635123600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1616893201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1616893200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1604278801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1604278800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1585443601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1585443600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1574038801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1574038800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1552266001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1552266000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1539997201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1539997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1520557201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1520557200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1507510801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1507510800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1490576401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1490576400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1470618001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1470618000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1459126801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1459126800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1444006801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1444006800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1427677201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1427677200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1411952401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1411952400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1396227601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1396227600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1379293201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1379293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1364778001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1364778000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1348448401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1348448400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1333328401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1333328400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1316394001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1316394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1301274001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1301274000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1284339601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1284339600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1269824401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1269824400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1253494801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1253494800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1238374801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1238374800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1221440401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1221440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1206925201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1206925200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1191200401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1191200400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1175475601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1175475600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1160355601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1160355600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1143421201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1143421200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1127696401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1127696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1111971601000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1111971600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1096851601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1096851600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1080522001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1080522000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1063587601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1063587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1049072401000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1049072400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1033347601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1033347600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1017622801000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1017622800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -1002502801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -1002502800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -986173201000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -986173200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -969238801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -969238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -950490001000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -950490000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -942012001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -942012000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -932436001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -932436000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -800071201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -800071200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -796266001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -796266000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "WEMT"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 196819199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 196819200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 212540399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 212540400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Prague.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Prague.json new file mode 100644 index 0000000..bdba42f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Prague.json @@ -0,0 +1,292 @@ +({ + name: "date.timezone.Europe-Prague", + runTest: function(t){ + var tz = "Europe/Prague"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -938905201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -938905200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -798073201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -798073200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -780534001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -780534000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -761180401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -761180400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -746578801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -746578800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733359601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733359600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -716425201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -716425200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -701910001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -701910000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -684975601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -684975600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -670460401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -670460400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -654217201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -654217200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -639010801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -639010800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Riga.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Riga.json new file mode 100644 index 0000000..1c581fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Riga.json @@ -0,0 +1,262 @@ +({ + name: "date.timezone.Europe-Riga", + runTest: function(t){ + var tz = "Europe/Riga"; + doh.checkDate({tzOffset: -96.4, tzAbbr: "RMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -96.4, tzAbbr: "RMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -96.4, tzAbbr: "RMT"}, -1632008185000, tz, 1); + doh.checkDate({tzOffset: -156.4, tzAbbr: "LST"}, -1632008184000, tz, 1); + doh.checkDate({tzOffset: -156.4, tzAbbr: "LST"}, -1618702585000, tz, 1); + doh.checkDate({tzOffset: -96.4, tzAbbr: "RMT"}, -1618702584000, tz, 1); + doh.checkDate({tzOffset: -96.4, tzAbbr: "RMT"}, -1601681785000, tz, 1); + doh.checkDate({tzOffset: -156.4, tzAbbr: "LST"}, -1601681784000, tz, 1); + doh.checkDate({tzOffset: -156.4, tzAbbr: "LST"}, -1597275385000, tz, 1); + doh.checkDate({tzOffset: -96.4, tzAbbr: "RMT"}, -1597275384000, tz, 1); + doh.checkDate({tzOffset: -96.4, tzAbbr: "RMT"}, -1377308185000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1377308184000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -928029601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -928029600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -899521201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -899521200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -795834001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -795834000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622598399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622598400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638323199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638323200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654652799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654652800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670377599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670377600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701827199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701827200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717551999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717552000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733276799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733276800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749001599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749001600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764726399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764726400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780451199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780451200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796175999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796176000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811900799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811900800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828230399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828230400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 843955199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 843955200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Rome.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Rome.json new file mode 100644 index 0000000..b17c070 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Rome.json @@ -0,0 +1,348 @@ +({ + name: "date.timezone.Europe-Rome", + runTest: function(t){ + var tz = "Europe/Rome"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1690851601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1690851600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1664758801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1664758800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1649034001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1649034000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1635123601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1635123600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1616979601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1616979600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1604278801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1604278800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1585530001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1585530000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1571014801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1571014800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1555290001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1555290000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -932432401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -932432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -798080401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -798080400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -766717201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -766717200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -750898801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -750898800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733359601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733359600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -719456401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -719456400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -701917201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -701917200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -689209201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -689209200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -670460401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -670460400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -114051601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -114051600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -103168801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -103168800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -81997201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -81997200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -71719201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -71719200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -50547601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -50547600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -40269601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -40269600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -18493201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -18493200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -8215201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -8215200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 12956399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 12956400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 23234399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 23234400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 43801199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 43801200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 54687599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 54687600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 75855599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 75855600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 86738399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 86738400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 107909999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 107910000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 118187999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 118188000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 138754799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 138754800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 149637599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 149637600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 170809199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 170809200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 181090799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 181090800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 202258799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 202258800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 212540399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 212540400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 233103599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 233103600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243989999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243990000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 265157999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 265158000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276044399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276044400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 296607599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 296607600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307493999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307494000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Samara.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Samara.json new file mode 100644 index 0000000..b7c9cca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Samara.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Europe-Samara", + runTest: function(t){ + var tz = "Europe/Samara"; + doh.checkDate({tzOffset: -200.6, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -200.6, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -200.6, tzAbbr: "LMT"}, -1593825637000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAMT"}, -1593825636000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "SAMT"}, -1247540401000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, -1247540400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, -1102305601000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, -1102305600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 354916799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 354916800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 370724399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 370724400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 386452799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 386452800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 402260399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 402260400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 417988799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 417988800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 433796399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 433796400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 449611199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 449611200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 465343199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 465343200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 481067999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 481068000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 496792799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 496792800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 512517599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 512517600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 528242399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 528242400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 543967199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 543967200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 559691999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 559692000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 575416799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 575416800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "KUYST"}, 591141599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 591141600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYT"}, 606866399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYST"}, 606866400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYST"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYT"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYT"}, 638319599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYST"}, 638319600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "KUYST"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYT"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYT"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYST"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYT"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "KUYT"}, 687916799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 687916800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 701809199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 701809200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 717530399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 717530400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 748994399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 748994400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 780443999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 780444000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 796168799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 796168800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 811893599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 811893600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 846367199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 846367200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 859672799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 859672800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 877816799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 877816800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 891122399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 891122400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 909266399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 909266400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 922571999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 922572000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 941320799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 941320800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 954021599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 954021600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 972770399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 972770400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 985471199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 985471200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1004219999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1004220000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1017525599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1017525600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1035669599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1035669600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1048975199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1048975200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1067119199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1067119200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1080424799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1080424800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1099173599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1099173600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1111874399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1111874400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1130623199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1130623200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1143323999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1143324000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1162072799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1162072800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1174773599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1174773600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1193522399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1193522400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1206827999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1206828000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1224971999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1224972000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1238277599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1238277600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1256421599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1256421600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1269727199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1269727200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1288475999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1288476000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1301176799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1301176800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1319925599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1319925600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1332626399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1332626400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1351375199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1351375200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1364680799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1364680800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1382824799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1382824800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1396130399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1396130400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1414274399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1414274400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1427579999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1427580000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1445723999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1445724000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1459029599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1459029600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1477778399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1477778400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1490479199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1490479200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1509227999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1509228000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1521928799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1521928800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1540677599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1540677600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1553983199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1553983200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1572127199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1572127200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1585432799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1585432800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1603576799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1603576800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1616882399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1616882400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1635631199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1635631200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1648331999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1648332000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1667080799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1667080800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1679781599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1679781600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1698530399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1698530400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1711835999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1711836000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1729979999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1729980000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1743285599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1743285600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1761429599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1761429600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1774735199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1774735200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1792879199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1792879200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1806184799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1806184800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1824933599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1824933600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1837634399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1837634400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1856383199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1856383200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1869083999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1869084000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1887832799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1887832800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1901138399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1901138400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1919282399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1919282400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1932587999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1932588000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1950731999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1950732000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1964037599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1964037600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1982786399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1982786400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1995487199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1995487200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2014235999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2014236000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2026936799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2026936800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2045685599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2045685600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2058386399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2058386400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2077135199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2077135200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2090440799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2090440800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2108584799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2108584800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2121890399000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2121890400000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 2140034399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2140034400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SAMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "SAMST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Simferopol.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Simferopol.json new file mode 100644 index 0000000..5118747 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Simferopol.json @@ -0,0 +1,252 @@ +({ + name: "date.timezone.Europe-Simferopol", + runTest: function(t){ + var tz = "Europe/Simferopol"; + doh.checkDate({tzOffset: -136, tzAbbr: "SMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -136, tzAbbr: "SMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -136, tzAbbr: "SMT"}, -1441160161000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1441160160000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1247536801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1247536800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -888894001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -888894000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -811648801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -811648800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 646786799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 646786800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 767739599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 767739600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 780436799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 780436800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 796165199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 796165200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 811886399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 811886400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 828219599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 828219600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 846374399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 846374400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Sofia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Sofia.json new file mode 100644 index 0000000..3132107 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Sofia.json @@ -0,0 +1,260 @@ +({ + name: "date.timezone.Europe-Sofia", + runTest: function(t){ + var tz = "Europe/Sofia"; + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781048801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -781048800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 291761999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 291762000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 307576799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 307576800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 323816399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 323816400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 339026399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 339026400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 355265999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 355266000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 370393199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 370393200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 386715599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 386715600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 401846399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 401846400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 417571199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 417571200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 433295999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 433296000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 449020799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 449020800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 465350399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 465350400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 481075199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 481075200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 496799999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 496800000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 512524799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 512524800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 528249599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 528249600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 543974399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 543974400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 559699199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 559699200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 575423999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 575424000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 591148799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 591148800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 606873599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606873600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622598399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622598400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638323199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638323200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654652799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654652800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670370399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670370400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796168799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796168800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828223199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828223200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846363599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846363600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Stockholm.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Stockholm.json new file mode 100644 index 0000000..6f36a7c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Stockholm.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Europe-Stockholm", + runTest: function(t){ + var tz = "Europe/Stockholm"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1692496801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1692496800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Tallinn.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Tallinn.json new file mode 100644 index 0000000..6e71150 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Tallinn.json @@ -0,0 +1,256 @@ +({ + name: "date.timezone.Europe-Tallinn", + runTest: function(t){ + var tz = "Europe/Tallinn"; + doh.checkDate({tzOffset: -99, tzAbbr: "TMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -99, tzAbbr: "TMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -99, tzAbbr: "TMT"}, -1638322741000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1638322740000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1593824401000, tz, 1); + doh.checkDate({tzOffset: -99, tzAbbr: "TMT"}, -1593824400000, tz, 1); + doh.checkDate({tzOffset: -99, tzAbbr: "TMT"}, -1535938741000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1535938740000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -927943201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -927943200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -892954801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -892954800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -797652001000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -797652000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 622598399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 622598400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 638323199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 638323200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 654652799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 654652800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670377599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670377600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701827199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701827200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717551999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717552000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733276799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733276800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749001599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749001600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764726399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764726400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780451199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780451200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796175999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796176000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811900799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811900800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828230399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828230400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846374399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846374400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859679999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859680000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877823999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877824000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891129599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891129600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Tirane.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Tirane.json new file mode 100644 index 0000000..3dd7fde --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Tirane.json @@ -0,0 +1,278 @@ +({ + name: "date.timezone.Europe-Tirane", + runTest: function(t){ + var tz = "Europe/Tirane"; + doh.checkDate({tzOffset: -79.3333333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -79.3333333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -79.3333333333333, tzAbbr: "LMT"}, -1767230361000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1767230360000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -932346001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -932346000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -843519601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -843519600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 136853999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 136854000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 149896799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 149896800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 168130799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 168130800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 181432799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 181432800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 199839599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 199839600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 213141599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 213141600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 231893999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 231894000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 244591199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 244591200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 263257199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 263257200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276040799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276040800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 294706799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 294706800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307490399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307490400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 326156399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 326156400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 339458399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 339458400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 357087599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 357087600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370389599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370389600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 389141999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 389142000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 402443999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 402444000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 419468399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 419468400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433807199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433807200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449621999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449622000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Uzhgorod.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Uzhgorod.json new file mode 100644 index 0000000..670b835 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Uzhgorod.json @@ -0,0 +1,250 @@ +({ + name: "date.timezone.Europe-Uzhgorod", + runTest: function(t){ + var tz = "Europe/Uzhgorod"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -938905201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -938905200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -794714401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -794714400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -773456401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -773456400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 646786799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 646786800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670384799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 670384800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vaduz.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vaduz.json new file mode 100644 index 0000000..9176352 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vaduz.json @@ -0,0 +1,240 @@ +({ + name: "date.timezone.Europe-Vaduz", + runTest: function(t){ + var tz = "Europe/Vaduz"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vienna.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vienna.json new file mode 100644 index 0000000..c0bbbd2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vienna.json @@ -0,0 +1,288 @@ +({ + name: "date.timezone.Europe-Vienna", + runTest: function(t){ + var tz = "Europe/Vienna"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1569711601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1569711600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1555801201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1555801200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -938905201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -938905200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -780188401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -780188400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -748479601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -748479600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733359601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733359600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -717634801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -717634800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -701910001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -701910000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -684975601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -684975600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -670460401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -670460400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323823599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323823600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338939999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338940000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vilnius.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vilnius.json new file mode 100644 index 0000000..f39ec98 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Vilnius.json @@ -0,0 +1,250 @@ +({ + name: "date.timezone.Europe-Vilnius", + runTest: function(t){ + var tz = "Europe/Vilnius"; + doh.checkDate({tzOffset: -84, tzAbbr: "WMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -84, tzAbbr: "WMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -84, tzAbbr: "WMT"}, -1672536241000, tz, 1); + doh.checkDate({tzOffset: -95.6, tzAbbr: "KMT"}, -1672536240000, tz, 1); + doh.checkDate({tzOffset: -95.6, tzAbbr: "KMT"}, -1585100137000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1585100136000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1561251601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1561251600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1553565601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1553565600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -928198801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -928198800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -900126001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -900126000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -802144801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -802144800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 638319599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 638319600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686102399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686102400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701827199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701827200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717551999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717552000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733276799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733276800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 749001599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 749001600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764726399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764726400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780451199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780451200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796175999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796176000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811900799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811900800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828230399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828230400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846374399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846374400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859679999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859680000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877823999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877824000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Volgograd.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Volgograd.json new file mode 100644 index 0000000..3b6a5e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Volgograd.json @@ -0,0 +1,246 @@ +({ + name: "date.timezone.Europe-Volgograd", + runTest: function(t){ + var tz = "Europe/Volgograd"; + doh.checkDate({tzOffset: -177.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -177.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -177.666666666667, tzAbbr: "LMT"}, -1577761061000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TSAT"}, -1577761060000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "TSAT"}, -1411873201000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "STAT"}, -1411873200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "STAT"}, -1247540401000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "STAT"}, -1247540400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "STAT"}, -256881601000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, -256881600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 354916799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 354916800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 370724399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 370724400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 386452799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 386452800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 402260399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 402260400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 417988799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 417988800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 433796399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 433796400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 449611199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 449611200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 465343199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 465343200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 481067999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 481068000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 496792799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 496792800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 512517599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 512517600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 528242399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 528242400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 543967199000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 543967200000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 559691999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 559692000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 575416799000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 575416800000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "VOLST"}, 591141599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 591141600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 606866399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 606866400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 638319599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 638319600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLT"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 717533999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 717534000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 733273199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 733273200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 748997999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 748998000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 764722799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 764722800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 780447599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 780447600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 796172399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 796172400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 811897199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 811897200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 828226799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 828226800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 846370799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 846370800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 859676399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 859676400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 877820399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 877820400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 891125999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 891126000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 909269999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 909270000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 922575599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 922575600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 941324399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 941324400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 954025199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 954025200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 972773999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 972774000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 985474799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 985474800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1004223599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1004223600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1017529199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1017529200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1035673199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1035673200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1048978799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1048978800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1067122799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1067122800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1080428399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1080428400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1099177199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1099177200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1111877999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1111878000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1130626799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1130626800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1143327599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1143327600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1162076399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1162076400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1174777199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1174777200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1193525999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1193526000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1206831599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1206831600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1224975599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1224975600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1238281199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1238281200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1256425199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1256425200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1269730799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1269730800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1288479599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1288479600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1301180399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1301180400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1319929199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1319929200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1332629999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1332630000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1351378799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1351378800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1364684399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1364684400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1382828399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1382828400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1396133999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1396134000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1414277999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1414278000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1427583599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1427583600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1445727599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1445727600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1459033199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1459033200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1477781999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1477782000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1490482799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1490482800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1509231599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1509231600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1521932399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1521932400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1540681199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1540681200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1553986799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1553986800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1572130799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1572130800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1585436399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1585436400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1603580399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1603580400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1616885999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1616886000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1635634799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1635634800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1648335599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1648335600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1667084399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1667084400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1679785199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1679785200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1698533999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1698534000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1711839599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1711839600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1729983599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1729983600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1743289199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1743289200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1761433199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1761433200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1774738799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1774738800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1792882799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1792882800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1806188399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1806188400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1824937199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1824937200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1837637999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1837638000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1856386799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1856386800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1869087599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1869087600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1887836399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1887836400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1901141999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1901142000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1919285999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1919286000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1932591599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1932591600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1950735599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1950735600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1964041199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1964041200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1982789999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1982790000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1995490799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1995490800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2014239599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2014239600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2026940399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2026940400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2045689199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2045689200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2058389999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2058390000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2077138799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2077138800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2090444399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2090444400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2108588399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2108588400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2121893999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2121894000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 2140037999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2140038000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "VOLT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "VOLST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Warsaw.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Warsaw.json new file mode 100644 index 0000000..5bc5845 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Warsaw.json @@ -0,0 +1,340 @@ +({ + name: "date.timezone.Europe-Warsaw", + runTest: function(t){ + var tz = "Europe/Warsaw"; + doh.checkDate({tzOffset: -84, tzAbbr: "WMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -84, tzAbbr: "WMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -84, tzAbbr: "WMT"}, -1717032241000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1717032240000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1600473601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1600473600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, -1587168001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1587168000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1501725601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -1501725600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -931734001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -931734000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -796608001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -796608000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -778726801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -778726800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -762660001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -762660000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -748486801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -748486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -733273201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -733273200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -715215601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -715215600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -701910001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -701910000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -684975601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -684975600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -670460401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -670460400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -654130801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -654130800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -639010801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -639010800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -397094401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -397094400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -386812801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -386812800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -371088001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -371088000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -355363201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -355363200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -334195201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -334195200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -323308801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -323308800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -307584001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -307584000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -291859201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -291859200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -271296001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -271296000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -260409601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -260409600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -239846401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -239846400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -228960001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -228960000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -208396801000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -208396800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -197510401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -197510400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -176342401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -176342400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -166060801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -166060800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 228873599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 228873600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 243993599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 243993600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 260323199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 260323200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 276047999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 276048000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 291772799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 291772800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 307497599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 307497600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 323827199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 323827200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 338947199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 338947200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354671999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354672000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370396799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370396800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386121599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386121600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401846399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401846400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417571199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417571200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433295999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433296000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449020799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449020800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465350399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465350400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481075199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481075200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496799999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496800000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512524799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512524800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528249599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528249600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543974399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543974400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559699199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559699200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Zaporozhye.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Zaporozhye.json new file mode 100644 index 0000000..a96bc23 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Zaporozhye.json @@ -0,0 +1,254 @@ +({ + name: "date.timezone.Europe-Zaporozhye", + runTest: function(t){ + var tz = "Europe/Zaporozhye"; + doh.checkDate({tzOffset: -140, tzAbbr: "CUT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -140, tzAbbr: "CUT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -140, tzAbbr: "CUT"}, -1441160401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1441160400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, -1247536801000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -1247536800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -894769201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -894769200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -826419601000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, -826419600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 354920399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 354920400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 370727999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 370728000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 386456399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 386456400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 402263999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 402264000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 417992399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 417992400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 433799999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 433800000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 449614799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 449614800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 465346799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 465346800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 481071599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 481071600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 496796399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 496796400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 512521199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 512521200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 528245999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 528246000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 543970799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 543970800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 559695599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 559695600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 575420399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 575420400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 591145199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 591145200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 606869999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 606870000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 622594799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 622594800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 638319599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 638319600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MSD"}, 654649199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 654649200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "MSK"}, 670373999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 670374000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 686091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 686091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 701819999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 701820000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 717541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 717541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 733269599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 733269600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 748990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 748990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 764719199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 764719200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 780440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 780440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "EET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Zurich.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Zurich.json new file mode 100644 index 0000000..e173c29 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Europe-Zurich.json @@ -0,0 +1,248 @@ +({ + name: "date.timezone.Europe-Zurich", + runTest: function(t){ + var tz = "Europe/Zurich"; + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -904435201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -904435200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -891129601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -891129600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -872985601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -872985600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, -859680001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, -859680000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "CET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "CEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_HST.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_HST.json new file mode 100644 index 0000000..28873aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_HST.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.HST", + runTest: function(t){ + var tz = "HST"; + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Antananarivo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Antananarivo.json new file mode 100644 index 0000000..54e46e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Antananarivo.json @@ -0,0 +1,18 @@ +({ + name: "date.timezone.Indian-Antananarivo", + runTest: function(t){ + var tz = "Indian/Antananarivo"; + doh.checkDate({tzOffset: -190.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -190.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -190.066666666667, tzAbbr: "LMT"}, -1846293005000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1846293004000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -499924801000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "EAST"}, -499924800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "EAST"}, -492062401000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -492062400000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Chagos.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Chagos.json new file mode 100644 index 0000000..46036e3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Chagos.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Indian-Chagos", + runTest: function(t){ + var tz = "Indian/Chagos"; + doh.checkDate({tzOffset: -289.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -289.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -289.666666666667, tzAbbr: "LMT"}, -1988167781000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "IOT"}, -1988167780000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "IOT"}, 820436399000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "IOT"}, 820436400000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "IOT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "IOT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -360, tzAbbr: "IOT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -360, tzAbbr: "IOT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Christmas.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Christmas.json new file mode 100644 index 0000000..71a16e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Christmas.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Indian-Christmas", + runTest: function(t){ + var tz = "Indian/Christmas"; + doh.checkDate({tzOffset: -420, tzAbbr: "CXT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "CXT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "CXT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "CXT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -420, tzAbbr: "CXT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -420, tzAbbr: "CXT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Cocos.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Cocos.json new file mode 100644 index 0000000..efe56ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Cocos.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Indian-Cocos", + runTest: function(t){ + var tz = "Indian/Cocos"; + doh.checkDate({tzOffset: -390, tzAbbr: "CCT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "CCT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "CCT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "CCT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -390, tzAbbr: "CCT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -390, tzAbbr: "CCT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Comoro.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Comoro.json new file mode 100644 index 0000000..b2db7e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Comoro.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Indian-Comoro", + runTest: function(t){ + var tz = "Indian/Comoro"; + doh.checkDate({tzOffset: -173.066666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -173.066666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -173.066666666667, tzAbbr: "LMT"}, -1846291985000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1846291984000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Kerguelen.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Kerguelen.json new file mode 100644 index 0000000..4df789e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Kerguelen.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Indian-Kerguelen", + runTest: function(t){ + var tz = "Indian/Kerguelen"; + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "zzz"}, -631152001000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TFT"}, -631152000000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TFT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TFT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "TFT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "TFT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mahe.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mahe.json new file mode 100644 index 0000000..4f35eed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mahe.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Indian-Mahe", + runTest: function(t){ + var tz = "Indian/Mahe"; + doh.checkDate({tzOffset: -221.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -221.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -221.8, tzAbbr: "LMT"}, -2006653309000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SCT"}, -2006653308000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SCT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SCT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "SCT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "SCT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Maldives.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Maldives.json new file mode 100644 index 0000000..c22f37f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Maldives.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Indian-Maldives", + runTest: function(t){ + var tz = "Indian/Maldives"; + doh.checkDate({tzOffset: -294, tzAbbr: "MMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -294, tzAbbr: "MMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -294, tzAbbr: "MMT"}, -315636841000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MVT"}, -315636840000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MVT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MVT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MVT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -300, tzAbbr: "MVT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mauritius.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mauritius.json new file mode 100644 index 0000000..3f1367c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mauritius.json @@ -0,0 +1,136 @@ +({ + name: "date.timezone.Indian-Mauritius", + runTest: function(t){ + var tz = "Indian/Mauritius"; + doh.checkDate({tzOffset: -230, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -230, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -230, tzAbbr: "LMT"}, -1988164201000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, -1988164200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 403041599000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MUST"}, 403041600000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MUST"}, 417034799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 417034800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1224971999000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MUST"}, 1224972000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1238277599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1238277600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1256421599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1256421600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1269727199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1269727200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1288475999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1288476000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1301176799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1301176800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1319925599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1319925600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1332626399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1332626400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1351375199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1351375200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1364680799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1364680800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1382824799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1382824800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1396130399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1396130400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1414274399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1414274400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1427579999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1427580000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1445723999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1445724000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1459029599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1459029600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1477778399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1477778400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1490479199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1490479200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1509227999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1509228000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1521928799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1521928800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1540677599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1540677600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1553983199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1553983200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1572127199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1572127200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1585432799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1585432800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1603576799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1603576800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1616882399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1616882400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1635631199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1635631200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1648331999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1648332000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1667080799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1667080800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1679781599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1679781600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1698530399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1698530400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1711835999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1711836000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1729979999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1729980000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1743285599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1743285600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1761429599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1761429600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1774735199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1774735200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1792879199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1792879200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1806184799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1806184800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1824933599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1824933600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1837634399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1837634400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1856383199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1856383200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1869083999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1869084000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1887832799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1887832800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1901138399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1901138400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1919282399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1919282400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1932587999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1932588000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1950731999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1950732000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1964037599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1964037600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1982786399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1982786400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 1995487199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1995487200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2014235999000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2014236000000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2026936799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2026936800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2045685599000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2045685600000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2058386399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2058386400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2077135199000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2077135200000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2090440799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2090440800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2108584799000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2108584800000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2121890399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2121890400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 2140034399000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2140034400000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "MUST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -300, tzAbbr: "MUST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "MUT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mayotte.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mayotte.json new file mode 100644 index 0000000..16866ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Mayotte.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Indian-Mayotte", + runTest: function(t){ + var tz = "Indian/Mayotte"; + doh.checkDate({tzOffset: -180.933333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -180.933333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -180.933333333333, tzAbbr: "LMT"}, -1846292457000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, -1846292456000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -180, tzAbbr: "EAT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Reunion.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Reunion.json new file mode 100644 index 0000000..7280f8f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Indian-Reunion.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Indian-Reunion", + runTest: function(t){ + var tz = "Indian/Reunion"; + doh.checkDate({tzOffset: -221.866666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -221.866666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -221.866666666667, tzAbbr: "LMT"}, -1848886913000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "RET"}, -1848886912000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "RET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "RET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -240, tzAbbr: "RET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -240, tzAbbr: "RET"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MET.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MET.json new file mode 100644 index 0000000..f4e5bcd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MET.json @@ -0,0 +1,284 @@ +({ + name: "date.timezone.MET", + runTest: function(t){ + var tz = "MET"; + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -1693706401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -1693706400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -1680483601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -1680483600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -1663455601000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -1663455600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -1650150001000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -1650150000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -1632006001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -1632006000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -1618700401000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -1618700400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -938905201000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -938905200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -857257201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -857257200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -844556401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -844556400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -828226801000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -828226800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -812502001000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -812502000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -796777201000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -796777200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -781052401000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -781052400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, -766623601000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, -766623600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "MET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -120, tzAbbr: "MEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MST.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MST.json new file mode 100644 index 0000000..6eb748c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MST.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.MST", + runTest: function(t){ + var tz = "MST"; + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MST7MDT.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MST7MDT.json new file mode 100644 index 0000000..a63f70f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_MST7MDT.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.MST7MDT", + runTest: function(t){ + var tz = "MST7MDT"; + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1633273201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1633273200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1615132801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1615132800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1601823601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1601823600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -1583683201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -1583683200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -880210801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -880210800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MPT"}, -765388801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -765388800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -84380401000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -84380400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -68659201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -68659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -52930801000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -52930800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -37209601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -37209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -21481201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -21481200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, -5760001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, -5760000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 9968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 9968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 25689599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 25689600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 41417999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 41418000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 57743999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 57744000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 73472399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 73472400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 89193599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 89193600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 104921999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 104922000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 120643199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 120643200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 126694799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 126694800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 152092799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 152092800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 162377999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 162378000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 183542399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 183542400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 199270799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 199270800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 215596799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 215596800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 230720399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 230720400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 247046399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 247046400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 262774799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 262774800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 278495999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 278496000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 294224399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 294224400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 309945599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 309945600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 325673999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 325674000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 341395199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 341395200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 357123599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 357123600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 372844799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 372844800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 388573199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 388573200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 404899199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 404899200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 420022799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 420022800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 436348799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 436348800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 452077199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 452077200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 467798399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 467798400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 483526799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 483526800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 499247999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 499248000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 514976399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 514976400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 530697599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 530697600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 544611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 544611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 562147199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 562147200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 576061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 576061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 594201599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 594201600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 607510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 607510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 625651199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 625651200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 638960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 638960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 657100799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 657100800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 671014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 671014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 688550399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 688550400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 702464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 702464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 719999999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 720000000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 733913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 733914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 752054399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 752054400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 765363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 765363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 783503999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 783504000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 796813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 796813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 814953599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 814953600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 828867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 828867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 846403199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 846403200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 860317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 860317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 877852799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 877852800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 891766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 891766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 909302399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 909302400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 923216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 923216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 941356799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 941356800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 954665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 954666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 972806399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 972806400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 986115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 986115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1004255999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1004256000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1018169999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1018170000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1035705599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1035705600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1049619599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1049619600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1067155199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1067155200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1081069199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1081069200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1099209599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1099209600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1112518799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1112518800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1130659199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1130659200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1143968399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1143968400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1162108799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1162108800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1173603599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1173603600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1194163199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1194163200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1205053199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1205053200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1225612799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1225612800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1236502799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1236502800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1257062399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1257062400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1268557199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1268557200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1289116799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1289116800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1300006799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1300006800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1320566399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1320566400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1331456399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1331456400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1352015999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1352016000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1362905999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1362906000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1383465599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1383465600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1394355599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1394355600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1414915199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1414915200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1425805199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1425805200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1446364799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1446364800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1457859599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1457859600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1478419199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1478419200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1489309199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1489309200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1509868799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1509868800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1520758799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1520758800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1541318399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1541318400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1552208399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1552208400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1572767999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1572768000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1583657999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1583658000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1604217599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1604217600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1615712399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1615712400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1636271999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1636272000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1647161999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1647162000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1667721599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1667721600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1678611599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1678611600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1699171199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1699171200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1710061199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1710061200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1730620799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1730620800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1741510799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1741510800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1762070399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1762070400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1772960399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1772960400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1793519999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1793520000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1805014799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1805014800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1825574399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1825574400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1836464399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1836464400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1857023999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1857024000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1867913999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1867914000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1888473599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1888473600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1899363599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1899363600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1919923199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1919923200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1930813199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1930813200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1951372799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1951372800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1962867599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1962867600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1983427199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1983427200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1994317199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1994317200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2014876799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2014876800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2025766799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2025766800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2046326399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2046326400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2057216399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2057216400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2077775999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2077776000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2088665999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2088666000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2109225599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2109225600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2120115599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2120115600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 2140675199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2140675200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "MST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "MDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_PST8PDT.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_PST8PDT.json new file mode 100644 index 0000000..1db49c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_PST8PDT.json @@ -0,0 +1,310 @@ +({ + name: "date.timezone.PST8PDT", + runTest: function(t){ + var tz = "PST8PDT"; + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1633269601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1633269600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1615129201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1615129200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1601820001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1601820000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -1583679601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -1583679600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -880207201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -880207200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PPT"}, -765385201000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -765385200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -84376801000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -84376800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -68655601000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -68655600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -52927201000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -52927200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -37206001000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -37206000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -21477601000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -21477600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, -5756401000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, -5756400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 9971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 9972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 25693199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 25693200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 41421599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 41421600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 57747599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 57747600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 73475999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 73476000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 89197199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 89197200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 104925599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 104925600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 120646799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 120646800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 126698399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 126698400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 152096399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 152096400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 162381599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 162381600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 183545999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 183546000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 199274399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 199274400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 215600399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 215600400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 230723999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 230724000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 247049999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 247050000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 262778399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 262778400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 278499599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 278499600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 294227999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 294228000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 309949199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 309949200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 325677599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 325677600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 341398799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 341398800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 357127199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 357127200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 372848399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 372848400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 388576799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 388576800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 404902799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 404902800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 420026399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 420026400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 436352399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 436352400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 452080799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 452080800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 467801999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 467802000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 483530399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 483530400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 499251599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 499251600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 514979999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 514980000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 530701199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 530701200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 544615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 544615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 562150799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 562150800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 576064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 576064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 594205199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 594205200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 607514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 607514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 625654799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 625654800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 638963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 638964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 657104399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 657104400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 671018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 671018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 688553999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 688554000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 702467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 702468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 720003599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 720003600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 733917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 733917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 752057999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 752058000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 765367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 765367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 783507599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 783507600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 796816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 796816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 814957199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 814957200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 828871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 828871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 846406799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 846406800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 860320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 860320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 877856399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 877856400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 891770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 891770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 909305999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 909306000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 923219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 923220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 941360399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 941360400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 954669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 954669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 972809999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 972810000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 986119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 986119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1004259599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1004259600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1018173599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1018173600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1035709199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1035709200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1049623199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1049623200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1067158799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1067158800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1081072799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1081072800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1099213199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1099213200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1112522399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1112522400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1130662799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1130662800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1143971999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1143972000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1162112399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1162112400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1173607199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1173607200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1194166799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1194166800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1205056799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1205056800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1225616399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1225616400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1236506399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1236506400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1257065999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1257066000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1268560799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1268560800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1289120399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1289120400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1300010399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1300010400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1320569999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1320570000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1331459999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1331460000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1352019599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1352019600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1362909599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1362909600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1383469199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1383469200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1394359199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1394359200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1414918799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1414918800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1425808799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1425808800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1446368399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1446368400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1457863199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1457863200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1478422799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1478422800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1489312799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1489312800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1509872399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1509872400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1520762399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1520762400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1541321999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1541322000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1552211999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1552212000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1572771599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1572771600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1583661599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1583661600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1604221199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1604221200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1615715999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1615716000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1636275599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1636275600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1647165599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1647165600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1667725199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1667725200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1678615199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1678615200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1699174799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1699174800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1710064799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1710064800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1730624399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1730624400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1741514399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1741514400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1762073999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1762074000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1772963999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1772964000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1793523599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1793523600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1805018399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1805018400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1825577999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1825578000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1836467999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1836468000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1857027599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1857027600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1867917599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1867917600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1888477199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1888477200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1899367199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1899367200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1919926799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1919926800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1930816799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1930816800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1951376399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1951376400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1962871199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1962871200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1983430799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1983430800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1994320799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1994320800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2014880399000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2014880400000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2025770399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2025770400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2046329999000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2046330000000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2057219999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2057220000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2077779599000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2077779600000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2088669599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2088669600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2109229199000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2109229200000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2120119199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2120119200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 2140678799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2140678800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 420, tzAbbr: "PDT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Apia.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Apia.json new file mode 100644 index 0000000..88099f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Apia.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Apia", + runTest: function(t){ + var tz = "Pacific/Apia"; + doh.checkDate({tzOffset: 686.933333333333, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 686.933333333333, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 686.933333333333, tzAbbr: "LMT"}, -1861878785000, tz, 1); + doh.checkDate({tzOffset: 690, tzAbbr: "SAMT"}, -1861878784000, tz, 1); + doh.checkDate({tzOffset: 690, tzAbbr: "SAMT"}, -631110601000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "WST"}, -631110600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "WST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "WST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "WST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 660, tzAbbr: "WST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Auckland.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Auckland.json new file mode 100644 index 0000000..17daded --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Auckland.json @@ -0,0 +1,322 @@ +({ + name: "date.timezone.Pacific-Auckland", + runTest: function(t){ + var tz = "Pacific/Auckland"; + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1330335001000, tz, 1); + doh.checkDate({tzOffset: -750, tzAbbr: "NZST"}, -1330335000000, tz, 1); + doh.checkDate({tzOffset: -750, tzAbbr: "NZST"}, -1320057001000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1320057000000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1300699801000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1300699800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1287396001000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1287396000000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1269250201000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1269250200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1255946401000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1255946400000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1237800601000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1237800600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1224496801000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1224496800000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1206351001000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1206351000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1192442401000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1192442400000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1174901401000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1174901400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1160992801000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1160992800000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1143451801000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1143451800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1125914401000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1125914400000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1112607001000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1112607000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1094464801000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1094464800000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1081157401000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1081157400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1063015201000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1063015200000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1049707801000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1049707800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1031565601000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1031565600000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1018258201000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1018258200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -1000116001000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -1000116000000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -986808601000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -986808600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -968061601000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -968061600000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -955359001000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -955359000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -936612001000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -936612000000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NZMT"}, -923304601000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -923304600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -757425601000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, -757425600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 152632799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 152632800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 162309599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 162309600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 183477599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 183477600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 194968799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 194968800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 215531999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 215532000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 226418399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 226418400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 246981599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 246981600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 257867999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 257868000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 278431199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 278431200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 289317599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 289317600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 309880799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 309880800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 320767199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 320767200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 341330399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 341330400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 352216799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 352216800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 372779999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 372780000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 384271199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 384271200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 404834399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 404834400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 415720799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 415720800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 436283999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 436284000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 447170399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 447170400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 467733599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 467733600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 478619999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 478620000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 499183199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 499183200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 510069599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 510069600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 530632799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 530632800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 541519199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 541519200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 562082399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 562082400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 573573599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 573573600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 594136799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 594136800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 605023199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 605023200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 623771999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 623772000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 637682399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 637682400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 655221599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 655221600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 669131999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 669132000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 686671199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 686671200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 700581599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 700581600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 718120799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 718120800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 732635999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 732636000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 749570399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 749570400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 764085599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 764085600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 781019999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 781020000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 795535199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 795535200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 812469599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 812469600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 826984799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 826984800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 844523999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 844524000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 858434399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 858434400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 875973599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 875973600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 889883999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 889884000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 907423199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 907423200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 921938399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 921938400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 938872799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 938872800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 953387999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 953388000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 970322399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 970322400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 984837599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 984837600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1002376799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1002376800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1016287199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1016287200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1033826399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1033826400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1047736799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1047736800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1065275999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1065276000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1079791199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1079791200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1096725599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1096725600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1111240799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1111240800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1128175199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1128175200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1142690399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1142690400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1159624799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1159624800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1174139999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1174140000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1191074399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1191074400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1207403999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1207404000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1222523999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1222524000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1238853599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1238853600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1253973599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1253973600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1270303199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1270303200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1285423199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1285423200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1301752799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1301752800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1316872799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1316872800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1333202399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1333202400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1348927199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1348927200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1365256799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1365256800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1380376799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1380376800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1396706399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1396706400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1411826399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1411826400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1428155999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1428156000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1443275999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1443276000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1459605599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1459605600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1474725599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1474725600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1491055199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1491055200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1506175199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1506175200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1522504799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1522504800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1538229599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1538229600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1554559199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1554559200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1569679199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1569679200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1586008799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1586008800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1601128799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1601128800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1617458399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1617458400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1632578399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1632578400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1648907999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1648908000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1664027999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1664028000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1680357599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1680357600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1695477599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1695477600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1712411999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1712412000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1727531999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1727532000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1743861599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1743861600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1758981599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1758981600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1775311199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1775311200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1790431199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1790431200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1806760799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1806760800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1821880799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1821880800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1838210399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1838210400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1853330399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1853330400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1869659999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1869660000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1885384799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1885384800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1901714399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1901714400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1916834399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1916834400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1933163999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1933164000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1948283999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1948284000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1964613599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1964613600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1979733599000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1979733600000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1996063199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1996063200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2011183199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2011183200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2027512799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2027512800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2042632799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2042632800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2058962399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2058962400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2074687199000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2074687200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2091016799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2091016800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2106136799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2106136800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2122466399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2122466400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 2137586399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2137586400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "NZDT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "NZST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Chatham.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Chatham.json new file mode 100644 index 0000000..9db6871 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Chatham.json @@ -0,0 +1,268 @@ +({ + name: "date.timezone.Pacific-Chatham", + runTest: function(t){ + var tz = "Pacific/Chatham"; + doh.checkDate({tzOffset: -733.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -733.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -733.8, tzAbbr: "LMT"}, -410271229000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, -410271228000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 152632799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 152632800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 162309599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 162309600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 183477599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 183477600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 194968799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 194968800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 215531999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 215532000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 226418399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 226418400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 246981599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 246981600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 257867999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 257868000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 278431199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 278431200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 289317599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 289317600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 309880799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 309880800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 320767199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 320767200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 341330399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 341330400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 352216799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 352216800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 372779999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 372780000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 384271199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 384271200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 404834399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 404834400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 415720799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 415720800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 436283999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 436284000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 447170399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 447170400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 467733599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 467733600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 478619999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 478620000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 499183199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 499183200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 510069599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 510069600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 530632799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 530632800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 541519199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 541519200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 562082399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 562082400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 573573599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 573573600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 594136799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 594136800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 605023199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 605023200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 623771999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 623772000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 637682399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 637682400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 655221599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 655221600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 669131999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 669132000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 686671199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 686671200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 700581599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 700581600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 718120799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 718120800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 732635999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 732636000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 749570399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 749570400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 764085599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 764085600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 781019999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 781020000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 795535199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 795535200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 812469599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 812469600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 826984799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 826984800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 844523999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 844524000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 858434399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 858434400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 875973599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 875973600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 889883999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 889884000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 907423199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 907423200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 921938399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 921938400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 938872799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 938872800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 953387999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 953388000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 970322399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 970322400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 984837599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 984837600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1002376799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1002376800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1016287199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1016287200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1033826399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1033826400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1047736799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1047736800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1065275999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1065276000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1079791199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1079791200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1096725599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1096725600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1111240799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1111240800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1128175199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1128175200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1142690399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1142690400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1159624799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1159624800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1174139999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1174140000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1191074399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1191074400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1207403999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1207404000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1222523999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1222524000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1238853599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1238853600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1253973599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1253973600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1270303199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1270303200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1285423199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1285423200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1301752799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1301752800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1316872799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1316872800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1333202399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1333202400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1348927199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1348927200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1365256799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1365256800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1380376799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1380376800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1396706399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1396706400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1411826399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1411826400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1428155999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1428156000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1443275999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1443276000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1459605599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1459605600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1474725599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1474725600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1491055199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1491055200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1506175199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1506175200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1522504799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1522504800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1538229599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1538229600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1554559199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1554559200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1569679199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1569679200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1586008799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1586008800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1601128799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1601128800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1617458399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1617458400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1632578399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1632578400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1648907999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1648908000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1664027999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1664028000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1680357599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1680357600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1695477599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1695477600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1712411999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1712412000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1727531999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1727532000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1743861599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1743861600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1758981599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1758981600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1775311199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1775311200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1790431199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1790431200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1806760799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1806760800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1821880799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1821880800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1838210399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1838210400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1853330399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1853330400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1869659999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1869660000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1885384799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1885384800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1901714399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1901714400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1916834399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1916834400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1933163999000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1933164000000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1948283999000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1948284000000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1964613599000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1964613600000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1979733599000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1979733600000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1996063199000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1996063200000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2011183199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2011183200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2027512799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2027512800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2042632799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2042632800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2058962399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2058962400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2074687199000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2074687200000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2091016799000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2091016800000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2106136799000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2106136800000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2122466399000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2122466400000, tz, 1); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 2137586399000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2137586400000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -825, tzAbbr: "CHADT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -765, tzAbbr: "CHAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Easter.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Easter.json new file mode 100644 index 0000000..fb27162 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Easter.json @@ -0,0 +1,298 @@ +({ + name: "date.timezone.Pacific-Easter", + runTest: function(t){ + var tz = "Pacific/Easter"; + doh.checkDate({tzOffset: 437.466666666667, tzAbbr: "EMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 437.466666666667, tzAbbr: "EMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 437.466666666667, tzAbbr: "EMT"}, -1178124153000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, -1178124152000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, -870552001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, -870552000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, -865278001000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, -865278000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, -736376401000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, -736376400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, -36619201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, -36619200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, -23922001000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, -23922000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, -3355201000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, -3355200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 7527599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 7527600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 24465599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 24465600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 37767599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 37767600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 55915199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 55915200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 69217199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 69217200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 87969599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 87969600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 100666799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 100666800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 118209599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 118209600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 132116399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 132116400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 150868799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 150868800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 163565999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 163566000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 182318399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 182318400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 195620399000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 195620400000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 213767999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 213768000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 227069999000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 227070000000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 245217599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 245217600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 258519599000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 258519600000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 277271999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 277272000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 289969199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 289969200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 308721599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 308721600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 321418799000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 321418800000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 340171199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 340171200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 353473199000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 353473200000, tz, 1); + doh.checkDate({tzOffset: 420, tzAbbr: "EAST"}, 371620799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 371620800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EASST"}, 384922799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 384922800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 403070399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 403070400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 416372399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 416372400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 434519999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 434520000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 447821999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 447822000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 466574399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 466574400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 479271599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 479271600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 498023999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 498024000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 510721199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 510721200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 529473599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 529473600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 545194799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 545194800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 560923199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 560923200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 574225199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 574225200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 591767999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 591768000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 605674799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 605674800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 624427199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 624427200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 637729199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 637729200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 653457599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 653457600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 668573999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 668574000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 687326399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 687326400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 700628399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 700628400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 718775999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 718776000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 732077999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 732078000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 750225599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 750225600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 763527599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 763527600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 781675199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 781675200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 794977199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 794977200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 813729599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 813729600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 826426799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 826426800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 845179199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 845179200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 859690799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 859690800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 876628799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 876628800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 889930799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 889930800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 906868799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 906868800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 923194799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 923194800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 939527999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 939528000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 952829999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 952830000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 971582399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 971582400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 984279599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 984279600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1003031999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1003032000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1015729199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1015729200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1034481599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1034481600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1047178799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1047178800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1065931199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1065931200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1079233199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1079233200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1097380799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1097380800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1110682799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1110682800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1128830399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1128830400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1142132399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1142132400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1160884799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1160884800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1173581999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1173582000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1192334399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1192334400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1206845999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1206846000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1223783999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1223784000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1237085999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1237086000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1255233599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1255233600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1268535599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1268535600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1286683199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1286683200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1299985199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1299985200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1318132799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1318132800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1331434799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1331434800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1350187199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1350187200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1362884399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1362884400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1381636799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1381636800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1394333999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1394334000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1413086399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1413086400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1426388399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1426388400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1444535999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1444536000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1457837999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1457838000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1475985599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1475985600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1489287599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1489287600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1508039999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1508040000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1520737199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1520737200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1539489599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1539489600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1552186799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1552186800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1570939199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1570939200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1584241199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1584241200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1602388799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1602388800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1615690799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1615690800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1633838399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1633838400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1647140399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1647140400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1665287999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1665288000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1678589999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1678590000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1697342399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1697342400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1710039599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1710039600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1728791999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1728792000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1741489199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1741489200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1760241599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1760241600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1773543599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1773543600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1791691199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1791691200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1804993199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1804993200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1823140799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1823140800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1836442799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1836442800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1855195199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1855195200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1867892399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1867892400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1886644799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1886644800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1899341999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1899342000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1918094399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1918094400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1930791599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1930791600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1949543999000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1949544000000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1962845999000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1962846000000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1980993599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1980993600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1994295599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1994295600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2012443199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2012443200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2025745199000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2025745200000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2044497599000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2044497600000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2057194799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2057194800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2075947199000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2075947200000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2088644399000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2088644400000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2107396799000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2107396800000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2120698799000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2120698800000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 2138846399000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2138846400000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "EASST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "EAST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Efate.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Efate.json new file mode 100644 index 0000000..ec59079 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Efate.json @@ -0,0 +1,54 @@ +({ + name: "date.timezone.Pacific-Efate", + runTest: function(t){ + var tz = "Pacific/Efate"; + doh.checkDate({tzOffset: -673.266666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -673.266666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -673.266666666667, tzAbbr: "LMT"}, -1829387597000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, -1829387596000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 433256399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 433256400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 448977599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 448977600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 467297999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 467298000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 480427199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 480427200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 496760399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 496760400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 511876799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 511876800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 528209999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 528210000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 543931199000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 543931200000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 559659599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 559659600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 575380799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 575380800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 591109199000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 591109200000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 606830399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 606830400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 622558799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 622558800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 638279999000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 638280000000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 654008399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 654008400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 669729599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 669729600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 686062799000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 686062800000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 696340799000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 696340800000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 719931599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 719931600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "VUST"}, 727790399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 727790400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -660, tzAbbr: "VUT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Enderbury.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Enderbury.json new file mode 100644 index 0000000..d2054d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Enderbury.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Enderbury", + runTest: function(t){ + var tz = "Pacific/Enderbury"; + doh.checkDate({tzOffset: 720, tzAbbr: "PHOT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 720, tzAbbr: "PHOT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 720, tzAbbr: "PHOT"}, 307627199000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "PHOT"}, 307627200000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "PHOT"}, 788957999000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PHOT"}, 788958000000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PHOT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PHOT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "PHOT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -780, tzAbbr: "PHOT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Fakaofo.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Fakaofo.json new file mode 100644 index 0000000..0985d74 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Fakaofo.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Fakaofo", + runTest: function(t){ + var tz = "Pacific/Fakaofo"; + doh.checkDate({tzOffset: 600, tzAbbr: "TKT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TKT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 600, tzAbbr: "TKT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Fiji.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Fiji.json new file mode 100644 index 0000000..d43d153 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Fiji.json @@ -0,0 +1,22 @@ +({ + name: "date.timezone.Pacific-Fiji", + runTest: function(t){ + var tz = "Pacific/Fiji"; + doh.checkDate({tzOffset: -713.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -713.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -713.666666666667, tzAbbr: "LMT"}, -1709985221000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, -1709985220000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 909842399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "FJST"}, 909842400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "FJST"}, 920123999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 920124000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 941896799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "FJST"}, 941896800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "FJST"}, 951573599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 951573600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "FJT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Funafuti.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Funafuti.json new file mode 100644 index 0000000..9e71c12 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Funafuti.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Funafuti", + runTest: function(t){ + var tz = "Pacific/Funafuti"; + doh.checkDate({tzOffset: -720, tzAbbr: "TVT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "TVT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "TVT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "TVT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "TVT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "TVT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Galapagos.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Galapagos.json new file mode 100644 index 0000000..3d86251 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Galapagos.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Galapagos", + runTest: function(t){ + var tz = "Pacific/Galapagos"; + doh.checkDate({tzOffset: 358.4, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 358.4, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 358.4, tzAbbr: "LMT"}, -1230746497000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ECT"}, -1230746496000, tz, 1); + doh.checkDate({tzOffset: 300, tzAbbr: "ECT"}, 504939599000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "GALT"}, 504939600000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "GALT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "GALT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 360, tzAbbr: "GALT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 360, tzAbbr: "GALT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Gambier.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Gambier.json new file mode 100644 index 0000000..2d59976 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Gambier.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Gambier", + runTest: function(t){ + var tz = "Pacific/Gambier"; + doh.checkDate({tzOffset: 539.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 539.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 539.8, tzAbbr: "LMT"}, -1806678013000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "GAMT"}, -1806678012000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "GAMT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "GAMT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 540, tzAbbr: "GAMT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 540, tzAbbr: "GAMT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Guadalcanal.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Guadalcanal.json new file mode 100644 index 0000000..468fd70 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Guadalcanal.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Guadalcanal", + runTest: function(t){ + var tz = "Pacific/Guadalcanal"; + doh.checkDate({tzOffset: -639.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -639.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -639.8, tzAbbr: "LMT"}, -1806748789000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SBT"}, -1806748788000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SBT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SBT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "SBT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -660, tzAbbr: "SBT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Guam.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Guam.json new file mode 100644 index 0000000..abcfd63 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Guam.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Guam", + runTest: function(t){ + var tz = "Pacific/Guam"; + doh.checkDate({tzOffset: -600, tzAbbr: "GST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "GST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "GST"}, 977493599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 977493600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Honolulu.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Honolulu.json new file mode 100644 index 0000000..e9c18f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Honolulu.json @@ -0,0 +1,24 @@ +({ + name: "date.timezone.Pacific-Honolulu", + runTest: function(t){ + var tz = "Pacific/Honolulu"; + doh.checkDate({tzOffset: 630, tzAbbr: "HST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "HST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "HST"}, -1157283001000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "HDT"}, -1157283000000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "HDT"}, -1155472201000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "HST"}, -1155472200000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "HST"}, -880198201000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "HWT"}, -880198200000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "HWT"}, -769395601000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "HPT"}, -769395600000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "HPT"}, -765376201000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "HST"}, -765376200000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "HST"}, -712150201000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, -712150200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Johnston.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Johnston.json new file mode 100644 index 0000000..04e4422 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Johnston.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Johnston", + runTest: function(t){ + var tz = "Pacific/Johnston"; + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 600, tzAbbr: "HST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kiritimati.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kiritimati.json new file mode 100644 index 0000000..cae0196 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kiritimati.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Kiritimati", + runTest: function(t){ + var tz = "Pacific/Kiritimati"; + doh.checkDate({tzOffset: 640, tzAbbr: "LINT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 640, tzAbbr: "LINT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 640, tzAbbr: "LINT"}, 307622399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "LINT"}, 307622400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "LINT"}, 788954399000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "LINT"}, 788954400000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "LINT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "LINT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "LINT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -840, tzAbbr: "LINT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kosrae.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kosrae.json new file mode 100644 index 0000000..0a59d29 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kosrae.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Kosrae", + runTest: function(t){ + var tz = "Pacific/Kosrae"; + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, -7988401000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "KOST"}, -7988400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "KOST"}, 915105599000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, 915105600000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -660, tzAbbr: "KOST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kwajalein.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kwajalein.json new file mode 100644 index 0000000..70a472d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Kwajalein.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Kwajalein", + runTest: function(t){ + var tz = "Pacific/Kwajalein"; + doh.checkDate({tzOffset: -660, tzAbbr: "MHT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MHT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MHT"}, -7988401000, tz, 1); + doh.checkDate({tzOffset: 720, tzAbbr: "KWAT"}, -7988400000, tz, 1); + doh.checkDate({tzOffset: 720, tzAbbr: "KWAT"}, 745847999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 745848000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Majuro.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Majuro.json new file mode 100644 index 0000000..ef5697b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Majuro.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Majuro", + runTest: function(t){ + var tz = "Pacific/Majuro"; + doh.checkDate({tzOffset: -660, tzAbbr: "MHT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MHT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "MHT"}, -7988401000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, -7988400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "MHT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Marquesas.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Marquesas.json new file mode 100644 index 0000000..a3c3aff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Marquesas.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Marquesas", + runTest: function(t){ + var tz = "Pacific/Marquesas"; + doh.checkDate({tzOffset: 558, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 558, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 558, tzAbbr: "LMT"}, -1806676921000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "MART"}, -1806676920000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "MART"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "MART"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "MART"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 570, tzAbbr: "MART"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Midway.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Midway.json new file mode 100644 index 0000000..337e493 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Midway.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Pacific-Midway", + runTest: function(t){ + var tz = "Pacific/Midway"; + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -428504401000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NDT"}, -428504400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "NDT"}, -420645601000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -420645600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -86878801000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -86878800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 439037999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 439038000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Nauru.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Nauru.json new file mode 100644 index 0000000..4fb8ed3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Nauru.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Pacific-Nauru", + runTest: function(t){ + var tz = "Pacific/Nauru"; + doh.checkDate({tzOffset: -667.666666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -667.666666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -667.666666666667, tzAbbr: "LMT"}, -1545131261000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NRT"}, -1545131260000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NRT"}, -877347001000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -877347000000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "JST"}, -800960401000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NRT"}, -800960400000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NRT"}, 294323399000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NRT"}, 294323400000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NRT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NRT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NRT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "NRT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Niue.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Niue.json new file mode 100644 index 0000000..120deae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Niue.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Niue", + runTest: function(t){ + var tz = "Pacific/Niue"; + doh.checkDate({tzOffset: 680, tzAbbr: "NUT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 680, tzAbbr: "NUT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 680, tzAbbr: "NUT"}, -599575201000, tz, 1); + doh.checkDate({tzOffset: 690, tzAbbr: "NUT"}, -599575200000, tz, 1); + doh.checkDate({tzOffset: 690, tzAbbr: "NUT"}, 276089399000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NUT"}, 276089400000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NUT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NUT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NUT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 660, tzAbbr: "NUT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Norfolk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Norfolk.json new file mode 100644 index 0000000..b1e1e37 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Norfolk.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Norfolk", + runTest: function(t){ + var tz = "Pacific/Norfolk"; + doh.checkDate({tzOffset: -672, tzAbbr: "NMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -672, tzAbbr: "NMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -672, tzAbbr: "NMT"}, -599656321000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NFT"}, -599656320000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NFT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NFT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -690, tzAbbr: "NFT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -690, tzAbbr: "NFT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Noumea.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Noumea.json new file mode 100644 index 0000000..8d3026f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Noumea.json @@ -0,0 +1,26 @@ +({ + name: "date.timezone.Pacific-Noumea", + runTest: function(t){ + var tz = "Pacific/Noumea"; + doh.checkDate({tzOffset: -665.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -665.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -665.8, tzAbbr: "LMT"}, -1829387149000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, -1829387148000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 250001999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NCST"}, 250002000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NCST"}, 257342399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 257342400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 281451599000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NCST"}, 281451600000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NCST"}, 288878399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 288878400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 849365999000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NCST"}, 849366000000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "NCST"}, 857228399000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 857228400000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -660, tzAbbr: "NCT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Pago_Pago.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Pago_Pago.json new file mode 100644 index 0000000..a83338f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Pago_Pago.json @@ -0,0 +1,20 @@ +({ + name: "date.timezone.Pacific-Pago_Pago", + runTest: function(t){ + var tz = "Pacific/Pago_Pago"; + doh.checkDate({tzOffset: 682.8, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 682.8, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 682.8, tzAbbr: "LMT"}, -1861879033000, tz, 1); + doh.checkDate({tzOffset: 690, tzAbbr: "SAMT"}, -1861879032000, tz, 1); + doh.checkDate({tzOffset: 690, tzAbbr: "SAMT"}, -631110601000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -631110600000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "NST"}, -86878801000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, -86878800000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "BST"}, 439037999000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 439038000000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 660, tzAbbr: "SST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Palau.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Palau.json new file mode 100644 index 0000000..e4b6b8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Palau.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Palau", + runTest: function(t){ + var tz = "Pacific/Palau"; + doh.checkDate({tzOffset: -540, tzAbbr: "PWT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PWT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PWT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PWT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "PWT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -540, tzAbbr: "PWT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Pitcairn.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Pitcairn.json new file mode 100644 index 0000000..23c2c53 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Pitcairn.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Pitcairn", + runTest: function(t){ + var tz = "Pacific/Pitcairn"; + doh.checkDate({tzOffset: 510, tzAbbr: "PNT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 510, tzAbbr: "PNT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 510, tzAbbr: "PNT"}, 893665799000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 893665800000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 480, tzAbbr: "PST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Ponape.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Ponape.json new file mode 100644 index 0000000..3ba1acc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Ponape.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Ponape", + runTest: function(t){ + var tz = "Pacific/Ponape"; + doh.checkDate({tzOffset: -660, tzAbbr: "PONT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PONT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PONT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PONT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -660, tzAbbr: "PONT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -660, tzAbbr: "PONT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Port_Moresby.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Port_Moresby.json new file mode 100644 index 0000000..00f42f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Port_Moresby.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Port_Moresby", + runTest: function(t){ + var tz = "Pacific/Port_Moresby"; + doh.checkDate({tzOffset: -600, tzAbbr: "PGT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "PGT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "PGT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "PGT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "PGT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "PGT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Rarotonga.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Rarotonga.json new file mode 100644 index 0000000..ca72231 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Rarotonga.json @@ -0,0 +1,64 @@ +({ + name: "date.timezone.Pacific-Rarotonga", + runTest: function(t){ + var tz = "Pacific/Rarotonga"; + doh.checkDate({tzOffset: 630, tzAbbr: "CKT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "CKT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 630, tzAbbr: "CKT"}, 279714599000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 279714600000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 289387799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 289387800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 309952799000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 309952800000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 320837399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 320837400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 341402399000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 341402400000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 352286999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 352287000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 372851999000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 372852000000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 384341399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 384341400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 404906399000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 404906400000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 415790999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 415791000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 436355999000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 436356000000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 447240599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 447240600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 467805599000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 467805600000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 478690199000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 478690200000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 499255199000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 499255200000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 510139799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 510139800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 530704799000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 530704800000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 541589399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 541589400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 562154399000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 562154400000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 573643799000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 573643800000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 594208799000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 594208800000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 605093399000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 605093400000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 625658399000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 625658400000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 636542999000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 636543000000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 657107999000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 657108000000, tz, 1); + doh.checkDate({tzOffset: 570, tzAbbr: "CKHST"}, 667992599000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 667992600000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 600, tzAbbr: "CKT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Saipan.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Saipan.json new file mode 100644 index 0000000..79a2959 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Saipan.json @@ -0,0 +1,16 @@ +({ + name: "date.timezone.Pacific-Saipan", + runTest: function(t){ + var tz = "Pacific/Saipan"; + doh.checkDate({tzOffset: -540, tzAbbr: "MPT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MPT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -540, tzAbbr: "MPT"}, -7981201000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "MPT"}, -7981200000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "MPT"}, 977493599000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 977493600000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "ChST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tahiti.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tahiti.json new file mode 100644 index 0000000..f65e953 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tahiti.json @@ -0,0 +1,14 @@ +({ + name: "date.timezone.Pacific-Tahiti", + runTest: function(t){ + var tz = "Pacific/Tahiti"; + doh.checkDate({tzOffset: 598.266666666667, tzAbbr: "LMT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 598.266666666667, tzAbbr: "LMT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 598.266666666667, tzAbbr: "LMT"}, -1806674505000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TAHT"}, -1806674504000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TAHT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TAHT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 600, tzAbbr: "TAHT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: 600, tzAbbr: "TAHT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tarawa.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tarawa.json new file mode 100644 index 0000000..d998341 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tarawa.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Tarawa", + runTest: function(t){ + var tz = "Pacific/Tarawa"; + doh.checkDate({tzOffset: -720, tzAbbr: "GILT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "GILT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "GILT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "GILT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "GILT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "GILT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tongatapu.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tongatapu.json new file mode 100644 index 0000000..227dd9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Tongatapu.json @@ -0,0 +1,26 @@ +({ + name: "date.timezone.Pacific-Tongatapu", + runTest: function(t){ + var tz = "Pacific/Tongatapu"; + doh.checkDate({tzOffset: -740, tzAbbr: "TOT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -740, tzAbbr: "TOT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -740, tzAbbr: "TOT"}, -915193201000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, -915193200000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 939214799000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "TOST"}, 939214800000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "TOST"}, 953384399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 953384400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 973342799000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "TOST"}, 973342800000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "TOST"}, 980596799000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 980596800000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 1004792399000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "TOST"}, 1004792400000, tz, 1); + doh.checkDate({tzOffset: -840, tzAbbr: "TOST"}, 1012046399000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 1012046400000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -780, tzAbbr: "TOT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Truk.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Truk.json new file mode 100644 index 0000000..5b7c26b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Truk.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Truk", + runTest: function(t){ + var tz = "Pacific/Truk"; + doh.checkDate({tzOffset: -600, tzAbbr: "TRUT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "TRUT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "TRUT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "TRUT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -600, tzAbbr: "TRUT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -600, tzAbbr: "TRUT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Wake.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Wake.json new file mode 100644 index 0000000..71c03f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Wake.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Wake", + runTest: function(t){ + var tz = "Pacific/Wake"; + doh.checkDate({tzOffset: -720, tzAbbr: "WAKT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WAKT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WAKT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WAKT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WAKT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "WAKT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Wallis.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Wallis.json new file mode 100644 index 0000000..341e1cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_Pacific-Wallis.json @@ -0,0 +1,12 @@ +({ + name: "date.timezone.Pacific-Wallis", + runTest: function(t){ + var tz = "Pacific/Wallis"; + doh.checkDate({tzOffset: -720, tzAbbr: "WFT"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WFT"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WFT"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WFT"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: -720, tzAbbr: "WFT"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -720, tzAbbr: "WFT"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_WET.json b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_WET.json new file mode 100644 index 0000000..5edaf49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests/tz_WET.json @@ -0,0 +1,256 @@ +({ + name: "date.timezone.WET", + runTest: function(t){ + var tz = "WET"; + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147483648000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, -2147397248000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 228877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 228877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 243997199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 243997200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 260326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 260326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 276051599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 276051600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 291776399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 291776400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 307501199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 307501200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 323830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 323830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 338950799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 338950800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 354675599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 354675600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 370400399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 370400400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 386125199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 386125200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 401849999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 401850000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 417574799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 417574800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 433299599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 433299600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 449024399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 449024400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 465353999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 465354000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 481078799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 481078800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 496803599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 496803600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 512528399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 512528400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 528253199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 528253200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 543977999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 543978000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 559702799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 559702800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 575427599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 575427600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 591152399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 591152400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 606877199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 606877200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 622601999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 622602000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 638326799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 638326800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 654656399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 654656400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 670381199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 670381200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 686105999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 686106000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 701830799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 701830800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 717555599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 717555600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 733280399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 733280400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 749005199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 749005200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 764729999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 764730000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 780454799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 780454800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 796179599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 796179600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 811904399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 811904400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 828233999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 828234000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 846377999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 846378000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 859683599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 859683600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 877827599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 877827600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 891133199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 891133200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 909277199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 909277200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 922582799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 922582800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 941331599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 941331600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 954032399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 954032400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 972781199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 972781200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 985481999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 985482000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1004230799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1004230800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1017536399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1017536400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1035680399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1035680400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1048985999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1048986000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1067129999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1067130000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1080435599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1080435600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1099184399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1099184400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1111885199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1111885200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1130633999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1130634000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1143334799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1143334800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1162083599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1162083600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1174784399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1174784400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1193533199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1193533200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1206838799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1206838800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1224982799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1224982800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1238288399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1238288400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1256432399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1256432400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1269737999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1269738000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1288486799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1288486800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1301187599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1301187600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1319936399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1319936400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1332637199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1332637200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1351385999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1351386000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1364691599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1364691600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1382835599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1382835600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1396141199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1396141200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1414285199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1414285200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1427590799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1427590800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1445734799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1445734800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1459040399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1459040400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1477789199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1477789200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1490489999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1490490000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1509238799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1509238800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1521939599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1521939600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1540688399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1540688400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1553993999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1553994000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1572137999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1572138000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1585443599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1585443600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1603587599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1603587600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1616893199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1616893200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1635641999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1635642000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1648342799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1648342800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1667091599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1667091600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1679792399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1679792400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1698541199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1698541200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1711846799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1711846800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1729990799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1729990800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1743296399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1743296400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1761440399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1761440400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1774745999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1774746000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1792889999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1792890000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1806195599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1806195600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1824944399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1824944400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1837645199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1837645200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1856393999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1856394000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1869094799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1869094800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1887843599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1887843600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1901149199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1901149200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1919293199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1919293200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1932598799000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1932598800000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1950742799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1950742800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1964048399000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1964048400000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1982797199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1982797200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1995497999000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1995498000000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2014246799000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2014246800000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2026947599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2026947600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2045696399000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2045696400000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2058397199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2058397200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2077145999000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2077146000000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2090451599000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2090451600000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2108595599000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2108595600000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2121901199000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2121901200000, tz, 1); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 2140045199000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2140045200000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147397247000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 2147483647000, tz, 1); + doh.checkDate({tzOffset: 0, tzAbbr: "WET"}, 1231151400000, tz, 0); + doh.checkDate({tzOffset: -60, tzAbbr: "WEST"}, 1246789800000, tz, 0); + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/date/tests/tztests_from_zdump.pl b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests_from_zdump.pl new file mode 100644 index 0000000..19d46f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/tests/tztests_from_zdump.pl @@ -0,0 +1,227 @@ +#!/usr/bin/perl -w + +use strict; + +use lib './lib'; + +use DateTime::TimeZone; +use File::Spec; +use Getopt::Long; +use DateTime; + +my %opts; +GetOptions( 'name:s' => \@{ $opts{name} }, + 'zoneinfo:s' => \$opts{zoneinfo}, + 'zdump:s' => \$opts{zdump}, + 'verbose' => \$opts{verbose}, + 'help' => \$opts{help}, + ); + +if ( $opts{help} ) +{ + print <<'EOF'; + +This script uses the zdump utility to generate comprehensive tests for +time zones. + +Tests are generated as files in the tztests/ directory starting with "tz_". + +By default, it generates tests for all time zones. + +For each time zone name, it checks to see that the zoneinfo directory +has a corresponding file. This is done because zdump will happily +generate garbage output if given a non-existent time zone name. + +Note, if your version of the zoneinfo data is different from that used +to generate the Perl time zone modules then you will almost certainly +end up generating some tests that fail. + +It takes the following arguments: + + --name Only create tests for this zone. + May be given multiple times. + + --zoneinfo The location of your zoneinfo directory. + Defaults to /usr/share/zoneinfo. + + --zdump Path to zdump binary. Default is just 'zdump'. + + --verbose Blab about what it's doing as it does it. + + --help What you are reading + +EOF + + exit; +} + +$opts{zoneinfo} ||= '/usr/share/zoneinfo'; + +die "No zoneinfo directory at $opts{zoneinfo}!\n" unless -d $opts{zoneinfo}; + +$opts{zdump} ||= 'zdump'; + +my $x = 1; +my %months = map { $_ => $x++ } + qw( Jan Feb Mar Apr May Jun + Jul Aug Sep Oct Nov Dec); + +my @pieces = qw( year month day hour minute second ); + +my @names = @{ $opts{name} } ? @{ $opts{name} } : DateTime::TimeZone::all_names(); +foreach my $tz_name (@names) +{ + unless ( -e File::Spec->catfile( $opts{zoneinfo}, split /\//, $tz_name ) ) + { + print "\nNo zoneinfo file for $tz_name - skipping\n" if $opts{verbose}; + next; + } + + print "\nGetting change data for $tz_name\n" if $opts{verbose}; + + my @tests; + my $command = "$opts{zdump} -v $tz_name"; + my @lines = `$command`; + + die qq|Nothing returning from calling "$command". Did you specify a valid zdump binary?\n| + unless @lines; + + foreach my $line (@lines) + { + # This seems to happen on 64-bit systems. + next if $line =~ /= NULL$/; + + my ( $utc_mon_name, $utc_day, $utc_hour, $utc_min, $utc_sec, $utc_year, + $loc_mon_name, $loc_day, $loc_hour, $loc_min, $loc_sec, $loc_year, + $short_name, $is_dst ) = + $line =~ + m/ ^ + \w+(?:\/[\w\/-]+)? # zone name + \s+ + \w\w\w # UTC day name + \s+ + (\w\w\w) # UTC month name + \s+ + (\d+) # UTC day of month + \s+ + (\d\d):(\d\d):(\d\d) # UTC time + \s+ + (\d\d\d\d) # UTC year + \s+ + (?:UTC|GMT) # some systems say one, some the other + \s+ + = + \s+ + \w\w\w # local day name + \s+ + (\w\w\w) # local month name + \s+ + (\d+) # local day of month + \s+ + (\d\d):(\d\d):(\d\d) # local time + \s+ + (\d\d\d\d) # local year + \s+ + (\w+) # local short name + \s+ + isdst=(1|0) + /x; + + unless ($1) + { + warn "Can't parse zump output:\n$line\n"; + next; + } + + my $utc_month = $months{$utc_mon_name}; + my $loc_month = $months{$loc_mon_name}; + + my $dt = DateTime->new( year => 1 * $utc_year, + month => (1 * $utc_month), + day => 1 * $utc_day, + hour => 1 * $utc_hour, + minute => 1 * $utc_min, + second => 1 * $utc_sec, + time_zone => 'UTC', ); + $dt->set_time_zone($tz_name); + # use '1 * ' to make sure everything is treated as numbers, + push @tests, { time_zone => $tz_name, + short_name => $short_name, + epoch => $dt->epoch, + offset => (($dt->offset * -1) / 60), + edge => 1, + } + } + + # Just some fairly-current tests - non-edgecase + my $currDt = DateTime->new( year => 2009, + month => 1, + day => 5, + hour => 10, + minute => 30, + second => 0, + time_zone => 'UTC', ); + $currDt->set_time_zone($tz_name); + push @tests, { time_zone => $tz_name, + short_name => $currDt->time_zone_short_name, + epoch => $currDt->epoch, + offset => (($currDt->offset * -1) / 60), + edge => 0, + }; + $currDt = DateTime->new( year => 2009, + month => 7, + day => 5, + hour => 10, + minute => 30, + second => 0, + time_zone => 'UTC', ); + $currDt->set_time_zone($tz_name); + push @tests, { time_zone => $tz_name, + short_name => $currDt->time_zone_short_name, + epoch => $currDt->epoch, + offset => (($currDt->offset * -1) / 60), + edge => 0, + }; + + + unless (@tests) + { + print "No change data in time_t range for $tz_name - can't create tests\n" if $opts{verbose}; + next; + } + + local *T; + + (my $test_file_name = $tz_name) =~ s,/,-,g; + my $file = File::Spec->catfile( 'tztests', "tz_$test_file_name.json" ); + open T, ">$file" + or die "Cannot write to $file: $!"; + + print "Creating tests for $tz_name in $file\n" if $opts{verbose}; + + my $test_count = scalar @tests * 9; + + my $started = 0; + + foreach my $t (@tests) + { + if (!$started){ + print T <<"EOF"; +({ + name: "date.timezone.$test_file_name", + runTest: function(t){ + var tz = "$tz_name"; +EOF + $started = 1; + } + print T <<"EOF"; + doh.checkDate({tzOffset: $t->{offset}, tzAbbr: "$t->{short_name}"}, $t->{epoch}000, tz, $t->{edge}); +EOF + } + if($started){ + print T <<"EOF"; + } +}) +EOF + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/date/timezone.js b/js/dojo-release-1.7.2-src/dojox/date/timezone.js new file mode 100644 index 0000000..4cdd7dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/timezone.js @@ -0,0 +1,719 @@ +/****************************************************************************** + * Dojo port of fleegix date plugin from + * + * http://js.fleegix.org/plugins/date/date + * + * contributed to Dojo under CLA, with thanks to Matthew Eernisse (mde@fleegix.org) + * and Open Source Applications Foundation + * + * Credits: Ideas included from incomplete JS implementation of Olson + * parser, "XMLDate" by Philippe Goetz (philippe.goetz@wanadoo.fr) + *****************************************************************************/ + +define(["dojo", "dojo/date", "dojo/date/locale", "dojo/_base/array", "dojo/_base/xhr"], + function(dojo, _dd, _ddl){ + + dojo.experimental("dojox.date.timezone"); + dojo.getObject("date.timezone", true, dojox); + + var cfg = dojo.config; + var _zoneFiles = [ "africa", "antarctica", "asia", "australasia", "backward", + "etcetera", "europe", "northamerica", "pacificnew", + "southamerica" ]; + + // Our mins an maxes for years that we care about + var _minYear = 1835, + _maxYear = 2038; + + var _loadedZones = {}, + _zones = {}, + _loadedRanges = {}, + _rules = {}; + + // timezoneFileBasePath: String + // A different location to pull zone files from + var timezoneFileBasePath = cfg.timezoneFileBasePath || + dojo.moduleUrl("dojox.date", "zoneinfo"); + + // loadingScheme: String + // One of "preloadAll", "lazyLoad" (Defaults "lazyLoad") + var loadingScheme = cfg.timezoneLoadingScheme || "preloadAll"; + + // defaultZoneFile: String or String[] + // The default file (or files) to load on startup - other files will + // be lazily-loaded on-demand + var defaultZoneFile = cfg.defaultZoneFile || + ((loadingScheme == "preloadAll") ? _zoneFiles : "northamerica"); + + // Set our olson-zoneinfo content handler + dojo._contentHandlers["olson-zoneinfo"] = function(xhr){ + var str = dojo._contentHandlers["text"](xhr), + s = "", + lines = str.split("\n"), + arr = [], + chunk = "", + zone = null, + rule = null, + ret = {zones: {}, rules: {}}; + + for(var i = 0; i < lines.length; i++){ + var l = lines[i]; + if(l.match(/^\s/)){ + l = "Zone " + zone + l; + } + l = l.split("#")[0]; + if(l.length > 3){ + arr = l.split(/\s+/); + chunk = arr.shift(); + switch(chunk){ + case 'Zone': + zone = arr.shift(); + if(arr[0]){ + // Handle extra commas in the middle of a zone + if(!ret.zones[zone]){ ret.zones[zone] = []; } + ret.zones[zone].push(arr); + } + break; + case 'Rule': + rule = arr.shift(); + if(!ret.rules[rule]){ ret.rules[rule] = []; } + ret.rules[rule].push(arr); + break; + case 'Link': + // No zones for these should already exist + if(ret.zones[arr[1]]){ + throw new Error('Error with Link ' + arr[1]); + } + // Create the link + ret.zones[arr[1]] = arr[0]; + break; + case 'Leap': + break; + default: + // Fail silently + break; + } + } + } + return ret; // Object + }; + + function loadZoneData(/* Object */ data){ + // summary: + // Loads the given data object into the zone database + // + // data: Object + // The data to load - contains "zones" and "rules" parameters + data = data || {}; + _zones = dojo.mixin(_zones, data.zones||{}); + _rules = dojo.mixin(_rules, data.rules||{}); + } + + function loadZoneFile(/* String */ fileName){ + // summary: + // Loads the given URL of the Olson zone information into the + // zone database + // + // fileName: String + // The zoneinfo file name to load + + // TODO: Maybe behave similar to requireLocalization - rather than + // Using dojo.xhrGet? + _loadedZones[fileName] = true; + dojo.xhrGet({ + url: timezoneFileBasePath + "/" + fileName, + sync: true, // Needs to be synchronous so we can return values + handleAs: "olson-zoneinfo", + load: loadZoneData, + error: function(e){ + console.error("Error loading zone file:", e); + throw e; + } + }); + } + + var monthMap = { 'jan': 0, 'feb': 1, 'mar': 2, 'apr': 3,'may': 4, 'jun': 5, + 'jul': 6, 'aug': 7, 'sep': 8, 'oct': 9, 'nov': 10, 'dec': 11 }, + dayMap = {'sun': 0, 'mon': 1, 'tue': 2, 'wed': 3, 'thu': 4, + 'fri': 5, 'sat': 6 }, + regionMap = {'EST': "northamerica", 'MST': "northamerica", + 'HST': "northamerica", 'EST5EDT': "northamerica", + 'CST6CDT': "northamerica", 'MST7MDT': "northamerica", + 'PST8PDT': "northamerica", 'America': "northamerica", + 'Pacific': "australasia", 'Atlantic': "europe", + 'Africa': "africa", 'Indian': "africa", + 'Antarctica': "antarctica", 'Asia': "asia", + 'Australia': "australasia", 'Europe': "europe", + 'WET': "europe", 'CET': "europe", 'MET': "europe", + 'EET': "europe"}, + regionExceptions = {'Pacific/Honolulu':"northamerica", + 'Atlantic/Bermuda':"northamerica", + 'Atlantic/Cape_Verde':"africa", + 'Atlantic/St_Helena':"africa", + 'Indian/Kerguelen':"antarctica", + 'Indian/Chagos':"asia", + 'Indian/Maldives':"asia", + 'Indian/Christmas':"australasia", + 'Indian/Cocos':"australasia", + 'America/Danmarkshavn':"europe", + 'America/Scoresbysund':"europe", + 'America/Godthab':"europe", + 'America/Thule':"europe", + 'Asia/Yekaterinburg':"europe", + 'Asia/Omsk':"europe", + 'Asia/Novosibirsk':"europe", + 'Asia/Krasnoyarsk':"europe", + 'Asia/Irkutsk':"europe", + 'Asia/Yakutsk':"europe", + 'Asia/Vladivostok':"europe", + 'Asia/Sakhalin':"europe", + 'Asia/Magadan':"europe", + 'Asia/Kamchatka':"europe", + 'Asia/Anadyr':"europe", + 'Africa/Ceuta':"europe", + 'America/Argentina/Buenos_Aires':"southamerica", + 'America/Argentina/Cordoba':"southamerica", + 'America/Argentina/Tucuman':"southamerica", + 'America/Argentina/La_Rioja':"southamerica", + 'America/Argentina/San_Juan':"southamerica", + 'America/Argentina/Jujuy':"southamerica", + 'America/Argentina/Catamarca':"southamerica", + 'America/Argentina/Mendoza':"southamerica", + 'America/Argentina/Rio_Gallegos':"southamerica", + 'America/Argentina/Ushuaia':"southamerica", + 'America/Aruba':"southamerica", + 'America/La_Paz':"southamerica", + 'America/Noronha':"southamerica", + 'America/Belem':"southamerica", + 'America/Fortaleza':"southamerica", + 'America/Recife':"southamerica", + 'America/Araguaina':"southamerica", + 'America/Maceio':"southamerica", + 'America/Bahia':"southamerica", + 'America/Sao_Paulo':"southamerica", + 'America/Campo_Grande':"southamerica", + 'America/Cuiaba':"southamerica", + 'America/Porto_Velho':"southamerica", + 'America/Boa_Vista':"southamerica", + 'America/Manaus':"southamerica", + 'America/Eirunepe':"southamerica", + 'America/Rio_Branco':"southamerica", + 'America/Santiago':"southamerica", + 'Pacific/Easter':"southamerica", + 'America/Bogota':"southamerica", + 'America/Curacao':"southamerica", + 'America/Guayaquil':"southamerica", + 'Pacific/Galapagos':"southamerica", + 'Atlantic/Stanley':"southamerica", + 'America/Cayenne':"southamerica", + 'America/Guyana':"southamerica", + 'America/Asuncion':"southamerica", + 'America/Lima':"southamerica", + 'Atlantic/South_Georgia':"southamerica", + 'America/Paramaribo':"southamerica", + 'America/Port_of_Spain':"southamerica", + 'America/Montevideo':"southamerica", + 'America/Caracas':"southamerica"}, + abbrExceptions = { 'US': "S", 'Chatham': "S", 'NZ': "S", 'NT_YK': "S", + 'Edm': "S", 'Salv': "S", 'Canada': "S", 'StJohns': "S", + 'TC': "S", 'Guat': "S", 'Mexico': "S", 'Haiti': "S", + 'Barb': "S", 'Belize': "S", 'CR': "S", 'Moncton': "S", + 'Swift': "S", 'Hond': "S", 'Thule': "S", 'NZAQ': "S", + 'Zion': "S", 'ROK': "S", 'PRC': "S", 'Taiwan': "S", + 'Ghana': "GMT", 'SL': "WAT", 'Chicago': "S", + 'Detroit': "S", 'Vanc': "S", 'Denver': "S", + 'Halifax': "S", 'Cuba': "S", 'Indianapolis': "S", + 'Starke': "S", 'Marengo': "S", 'Pike': "S", + 'Perry': "S", 'Vincennes': "S", 'Pulaski': "S", + 'Louisville': "S", 'CA': "S", 'Nic': "S", + 'Menominee': "S", 'Mont': "S", 'Bahamas': "S", + 'NYC': "S", 'Regina': "S", 'Resolute': "ES", + 'DR': "S", 'Toronto': "S", 'Winn': "S" }; + + function invalidTZError(t) { + throw new Error('Timezone "' + t + + '" is either incorrect, or not loaded in the timezone registry.'); + } + + function getRegionForTimezone(/* String */ tz) { + // summary: + // Returns the Olson region for the given timezone + var ret = regionExceptions[tz]; + if(!ret){ + var reg = tz.split('/')[0]; + ret = regionMap[reg]; + // If there's nothing listed in the main regions for + // this TZ, check the 'backward' links + if(!ret){ + var link = _zones[tz]; + if(typeof link == 'string'){ + return getRegionForTimezone(link); // String + }else{ + // Backward-compat file hasn't loaded yet, try looking in there + if (!_loadedZones.backward) { + // This is for obvious legacy zones (e.g., Iceland) that + // don't even have a prefix like "America/" that look like + // normal zones + loadZoneFile("backward"); + return getRegionForTimezone(tz); // String + }else{ + invalidTZError(tz); + } + } + } + } + return ret; // String + } + + function parseTimeString(/* String */ str) { + // summary: + // Parses the given time string and returns it as an integer array + var pat = /(\d+)(?::0*(\d*))?(?::0*(\d*))?([su])?$/; + var hms = str.match(pat); + if(!hms){ + return null; + } + hms[1] = parseInt(hms[1], 10); + hms[2] = hms[2] ? parseInt(hms[2], 10) : 0; + hms[3] = hms[3] ? parseInt(hms[3], 10) : 0; + return hms; // int[] + } + + function getUTCStamp(/* int */ y, /* int */ m, /* int */ d, /* int */ h, + /* int */ mn, /* int */ s, /* int? */ off){ + // summary: + // Returns the UTC timestamp, adjusted by the given (optional) offset + return Date.UTC(y, m, d, h, mn, s) + ((off||0) * 60 * 1000); + } + + function getMonthNumber(/* String */ m){ + // summary: + // Returns the javascript month number for the given string + return monthMap[m.substr(0, 3).toLowerCase()]; + } + + function getOffsetInMins(/* String */ str){ + // summary: + // Returns the offset value represented by the string, in minutes + var off = parseTimeString(str); + if(off === null){ return 0; } + var adj = str.indexOf('-') === 0 ? -1 : 1; + off = adj * (((off[1] * 60 + off[2]) *60 + off[3]) * 1000); + return -off/60/1000; + } + + function _getRuleStart(/* Rule */ rule, /* int */ year, /* int */ off){ + // summary: + // Returns a date that the rule begins matching in the given year. + var month = getMonthNumber(rule[3]), + day = rule[4], + time = parseTimeString(rule[5]); + if(time[4] == "u"){ + // We are UTC - so there is no offset to use + off = 0; + } + + var d, dtDay, incr; + if(isNaN(day)){ + if(day.substr(0, 4) == "last"){ + // Last day of the month at the desired time of day + day = dayMap[day.substr(4,3).toLowerCase()]; + d = new Date(getUTCStamp(year, month + 1, 1, + time[1] - 24, time[2], time[3], + off)); + dtDay = _dd.add(d, "minute", -off).getUTCDay(); + // Set it to the final day of the correct weekday that month + incr = (day > dtDay) ? (day - dtDay - 7) : (day - dtDay); + if(incr !== 0){ + d = _dd.add(d, "hour", incr * 24); + } + return d; + }else{ + day = dayMap[day.substr(0, 3).toLowerCase()]; + if(day != "undefined"){ + if(rule[4].substr(3, 2) == '>='){ + // The stated date of the month + d = new Date(getUTCStamp(year, month, parseInt(rule[4].substr(5), 10), + time[1], time[2], time[3], off)); + dtDay = _dd.add(d, "minute", -off).getUTCDay(); + // Set to the first correct weekday after the stated date + incr = (day < dtDay) ? (day - dtDay + 7) : (day - dtDay); + if(incr !== 0){ + d = _dd.add(d, "hour", incr * 24); + } + return d; + }else if(day.substr(3, 2) == '<='){ + // The stated date of the month + d = new Date(getUTCStamp(year, month, parseInt(rule[4].substr(5), 10), + time[1], time[2], time[3], off)); + dtDay = _dd.add(d, "minute", -off).getUTCDay(); + // Set to first correct weekday before the stated date + incr = (day > dtDay) ? (day - dtDay - 7) : (day - dtDay); + if(incr !== 0){ + d = _dd.add(d, "hour", incr * 24); + } + return d; + } + } + } + }else{ + // Numeric date + d = new Date(getUTCStamp(year, month, parseInt(day, 10), + time[1], time[2], time[3], off)); + return d; + } + return null; + } + + function _getRulesForYear(/* Zone */ zone, /* int */ year){ + var rules = []; + dojo.forEach(_rules[zone[1]]||[], function(r){ + // Clean up rules as needed + for(var i = 0; i < 2; i++){ + switch(r[i]){ + case "min": + r[i] = _minYear; + break; + case "max": + r[i] = _maxYear; + break; + case "only": + break; + default: + r[i] = parseInt(r[i], 10); + if(isNaN(r[i])){ + throw new Error('Invalid year found on rule'); + } + break; + } + } + if(typeof r[6] == "string"){ + // Change our offset to be an integer + r[6] = getOffsetInMins(r[6]); + } + + // Quick-filter to grab all rules that match my year + if((r[0] <= year && r[1] >= year) || // Matches my y + (r[0] == year && r[1] == "only")){ // Matches my only + rules.push({r: r, d: _getRuleStart(r, year, zone[0])}); + } + }); + return rules; + } + + + function _loadZoneRanges(/* String */ tz, /* Object[] */ zoneList) { + // summary: + // Loads the zone ranges for the given timezone + + var zr = _loadedRanges[tz] = []; + for(var i = 0; i < zoneList.length; i++){ + var z = zoneList[i]; + var r = zr[i] = []; + var prevZone = null; + var prevRange = null; + var prevRules = []; + + // Set up our zone offset to not be a string anymore + if(typeof z[0] == "string"){ + z[0] = getOffsetInMins(z[0]); + } + + if(i === 0){ + // The beginning of zoneinfo time - let's not worry about + // to-the-hour accuracy before Jan 1, 1835 + r[0] = Date.UTC(_minYear,0,1,0,0,0,0); + }else{ + r[0] = zr[i - 1][1]; + prevZone = zoneList[i - 1]; + prevRange = zr[i - 1]; + prevRules = prevRange[2]; + } + + // Load the rules that will be going in to our zone + var startYear = new Date(r[0]).getUTCFullYear(); + var endYear = z[3] ? parseInt(z[3], 10) : _maxYear; + var rlz = []; + var j; + for(j = startYear; j <= endYear; j++){ + rlz = rlz.concat(_getRulesForYear(z, j)); + } + rlz.sort(function(a, b){ + return _dd.compare(a.d, b.d); + }); + var rl; + for(j = 0, rl; (rl = rlz[j]); j++){ + var prevRule = j > 0 ? rlz[j - 1] : null; + if(rl.r[5].indexOf("u") < 0 && rl.r[5].indexOf("s") < 0){ + if(j === 0 && i > 0){ + if(prevRules.length){ + // We have a previous rule - so use it + rl.d = _dd.add(rl.d, "minute", prevRules[prevRules.length - 1].r[6]); + }else if(_dd.compare(new Date(prevRange[1]), rl.d, "date") === 0){ + // No previous rules - but our date is the same as the + // previous zone ended on - so use that. + rl.d = new Date(prevRange[1]); + }else{ + rl.d = _dd.add(rl.d, "minute", getOffsetInMins(prevZone[1])); + } + }else if(j > 0){ + rl.d = _dd.add(rl.d, "minute", prevRule.r[6]); + } + } + } + r[2] = rlz; + + if(!z[3]){ + // The end of zoneinfo time - we'll cross this bridge when we + // get close to Dec 31, 2038 + r[1] = Date.UTC(_maxYear,11,31,23,59,59,999); + }else{ + var year = parseInt(z[3], 10), + month = getMonthNumber(z[4]||"Jan"), + day = parseInt(z[5]||"1", 10), + time = parseTimeString(z[6]||"0"); + var utcStmp = r[1] = getUTCStamp(year, month, day, + time[1], time[2], time[3], + ((time[4] == "u") ? 0 : z[0])); + if(isNaN(utcStmp)){ + utcStmp = r[1] = _getRuleStart([0,0,0,z[4],z[5],z[6]||"0"], + year, ((time[4] == "u") ? 0 : z[0])).getTime(); + } + var matches = dojo.filter(rlz, function(rl, idx){ + var o = idx > 0 ? rlz[idx - 1].r[6] * 60 * 1000 : 0; + return (rl.d.getTime() < utcStmp + o); + }); + if(time[4] != "u" && time[4] != "s"){ + if(matches.length){ + r[1] += matches[matches.length - 1].r[6] * 60 * 1000; + }else{ + r[1] += getOffsetInMins(z[1]) * 60 * 1000; + } + } + } + } + } + + function getZoneInfo(/* String */ dt, /* String */ tz) { + // summary: + // Returns the zone entry from the zoneinfo database for the given date + // and timezone + var t = tz; + var zoneList = _zones[t]; + + // Follow links to get to an actual zone + while(typeof zoneList == "string"){ + t = zoneList; + zoneList = _zones[t]; + } + if(!zoneList){ + // Backward-compat file hasn't loaded yet, try looking in there + if(!_loadedZones.backward){ + // This is for backward entries like "America/Fort_Wayne" that + // getRegionForTimezone *thinks* it has a region file and zone + // for (e.g., America => 'northamerica'), but in reality it's a + // legacy zone we need the backward file for + var parsed = loadZoneFile("backward", true); + return getZoneInfo(dt, tz); //Object + } + invalidTZError(t); + } + + if(!_loadedRanges[tz]){ + _loadZoneRanges(tz, zoneList); + } + var ranges = _loadedRanges[tz]; + var tm = dt.getTime(); + for(var i = 0, r; (r = ranges[i]); i++){ + if(tm >= r[0] && tm < r[1]){ + return {zone: zoneList[i], range: ranges[i], idx: i}; + } + } + throw new Error('No Zone found for "' + tz + '" on ' + dt); + } + + function getRule(/* Date */ dt, /* ZoneInfo */ zoneInfo) { + // summary: + // Returns the latest-matching rule entry from the zoneinfo + // database for the given date and zone + + var lastMatch = -1; + var rules = zoneInfo.range[2]||[]; + var tsp = dt.getTime(); + var zr = zoneInfo.range; + for(var i = 0, r; (r = rules[i]); i++){ + if(tsp >= r.d.getTime()){ + lastMatch = i; + } + } + if(lastMatch >= 0){ + return rules[lastMatch].r; + } + return null; + } + + function getAbbreviation(/* String */ tz, /* Object */ zoneInfo, /* Object */ rule) { + // summary: + // Returns the abbreviation for the given zone and rule + var res; + var zone = zoneInfo.zone; + var base = zone[2]; + if(base.indexOf('%s') > -1){ + var repl; + if(rule){ + repl = rule[7]; + if(repl == "-"){ repl = ""; } + }else if(zone[1] in abbrExceptions){ + repl = abbrExceptions[zone[1]]; + }else{ + if(zoneInfo.idx > 0){ + // Check if our previous zone's base is the same as our + // current in "S" (standard) mode. If so, then use "S" + // for our replacement + var pz = _zones[tz][zoneInfo.idx - 1]; + var pb = pz[2]; + if(pb.indexOf('%s') < 0){ + if(base.replace('%s', "S") == pb){ + repl = "S"; + }else{ + repl = ""; + } + }else{ + repl = ""; + } + }else{ + repl = ""; + } + } + res = base.replace('%s', repl); + }else if(base.indexOf("/") > -1){ + var bs = base.split("/"); + if(rule){ + res = bs[rule[6] === 0 ? 0 : 1]; + }else{ + res = bs[0]; + } + }else{ + res = base; + } + return res; // String + } + +/*===== +dojox.date.timezone = function(){ + // summary: + // mix-in to dojo.date to provide timezones based on + // the Olson timezone data + // + // description: + // mix-in to dojo.date to provide timezones based on + // the Olson timezone data. + // If you pass "timezone" as a parameter to your format options, + // then you get the date formatted (and offset) for that timezone + +//TODOC +}; + +dojox.date.timezone.getTzInfo = function(dt, tz){ + // summary: + // Returns the timezone information for the given date and + // timezone string + // + // dt: Date + // The Date - a "proxyDate" + // + // tz: String + // String representation of the timezone you want to get info + // for date +}; + +dojox.date.timezone.loadZoneData = function(data){ + // summary: + // Loads the given data object into the zone database + // + // data: Object + // The data to load - contains "zones" and "rules" parameters +}; + +dojox.date.timezone.getAllZones = function(){ + // summary: + // Returns an array of zones that have been loaded +}; +=====*/ + dojo.setObject("dojox.date.timezone", { + getTzInfo: function(/* Date */ dt, /* String */ tz){ + // Lazy-load any zones not yet loaded + if(loadingScheme == "lazyLoad"){ + // Get the correct region for the zone + var zoneFile = getRegionForTimezone(tz); + if(!zoneFile){ + throw new Error("Not a valid timezone ID."); + }else{ + if(!_loadedZones[zoneFile]){ + // Get the file and parse it -- use synchronous XHR + loadZoneFile(zoneFile); + } + } + } + var zoneInfo = getZoneInfo(dt, tz); + var off = zoneInfo.zone[0]; + // See if the offset needs adjustment + var rule = getRule(dt, zoneInfo); + if(rule){ + off += rule[6]; + }else{ + if(_rules[zoneInfo.zone[1]] && zoneInfo.idx > 0){ + off += getOffsetInMins(_zones[tz][zoneInfo.idx - 1][1]); + }else{ + off += getOffsetInMins(zoneInfo.zone[1]); + } + } + + var abbr = getAbbreviation(tz, zoneInfo, rule); + return { tzOffset: off, tzAbbr: abbr }; // Object + }, + loadZoneData: function(data){ + loadZoneData(data); + }, + getAllZones: function(){ + var arr = []; + for(var z in _zones){ arr.push(z); } + arr.sort(); + return arr; // String[] + } + }); + + // Now - initialize the stuff that we should have pre-loaded + if(typeof defaultZoneFile == "string" && defaultZoneFile){ + defaultZoneFile = [defaultZoneFile]; + } + if(dojo.isArray(defaultZoneFile)){ + dojo.forEach(defaultZoneFile, loadZoneFile); + } + + // And enhance the default formatting functions + // If you pass "timezone" as a parameter to your format options, + // then you get the date formatted (and offset) for that timezone + var oLocaleFmt = _ddl.format, + oGetZone = _ddl._getZone; + _ddl.format = function(dateObject, options){ + options = options||{}; + if(options.timezone && !options._tzInfo){ + // Store it in our options so we can use it later + options._tzInfo = dojox.date.timezone.getTzInfo(dateObject, options.timezone); + } + if(options._tzInfo){ + // Roll our date to display the correct time according to the + // desired offset + var offset = dateObject.getTimezoneOffset() - options._tzInfo.tzOffset; + dateObject = new Date(dateObject.getTime() + (offset * 60 * 1000)); + } + return oLocaleFmt.call(this, dateObject, options); + }; + _ddl._getZone = function(dateObject, getName, options){ + if(options._tzInfo){ + return getName ? options._tzInfo.tzAbbr : options._tzInfo.tzOffset; + } + return oGetZone.call(this, dateObject, getName, options); + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/LICENSE b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/LICENSE new file mode 100644 index 0000000..211d20a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/LICENSE @@ -0,0 +1,10 @@ +"Olson Database", available for download from ftp://elsie.nci.nih.gov/pub/ + +These comments were included in each file. + +# This file is in the public domain, so clarified as of +# 2009-05-17 by Arthur David Olson. + +# This data is by no means authoritative; if you think you know better, +# go ahead and edit the file (and please send any changes to +# tz@elsie.nci.nih.gov for general use in the future). diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/africa b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/africa new file mode 100644 index 0000000..18e5a28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/africa @@ -0,0 +1,310 @@ +Rule Algeria 1916 only - Jun 14 23:00s 1:00 S +Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 - +Rule Algeria 1917 only - Mar 24 23:00s 1:00 S +Rule Algeria 1918 only - Mar 9 23:00s 1:00 S +Rule Algeria 1919 only - Mar 1 23:00s 1:00 S +Rule Algeria 1920 only - Feb 14 23:00s 1:00 S +Rule Algeria 1920 only - Oct 23 23:00s 0 - +Rule Algeria 1921 only - Mar 14 23:00s 1:00 S +Rule Algeria 1921 only - Jun 21 23:00s 0 - +Rule Algeria 1939 only - Sep 11 23:00s 1:00 S +Rule Algeria 1939 only - Nov 19 1:00 0 - +Rule Algeria 1944 1945 - Apr Mon>=1 2:00 1:00 S +Rule Algeria 1944 only - Oct 8 2:00 0 - +Rule Algeria 1945 only - Sep 16 1:00 0 - +Rule Algeria 1971 only - Apr 25 23:00s 1:00 S +Rule Algeria 1971 only - Sep 26 23:00s 0 - +Rule Algeria 1977 only - May 6 0:00 1:00 S +Rule Algeria 1977 only - Oct 21 0:00 0 - +Rule Algeria 1978 only - Mar 24 1:00 1:00 S +Rule Algeria 1978 only - Sep 22 3:00 0 - +Rule Algeria 1980 only - Apr 25 0:00 1:00 S +Rule Algeria 1980 only - Oct 31 2:00 0 - +Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01 + 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time + 0:00 Algeria WE%sT 1940 Feb 25 2:00 + 1:00 Algeria CE%sT 1946 Oct 7 + 0:00 - WET 1956 Jan 29 + 1:00 - CET 1963 Apr 14 + 0:00 Algeria WE%sT 1977 Oct 21 + 1:00 Algeria CE%sT 1979 Oct 26 + 0:00 Algeria WE%sT 1981 May + 1:00 - CET +Zone Africa/Luanda 0:52:56 - LMT 1892 + 0:52:04 - AOT 1911 May 26 # Angola Time + 1:00 - WAT +Zone Africa/Porto-Novo 0:10:28 - LMT 1912 + 0:00 - GMT 1934 Feb 26 + 1:00 - WAT +Zone Africa/Gaborone 1:43:40 - LMT 1885 + 2:00 - CAT 1943 Sep 19 2:00 + 2:00 1:00 CAST 1944 Mar 19 2:00 + 2:00 - CAT +Zone Africa/Ouagadougou -0:06:04 - LMT 1912 + 0:00 - GMT +Zone Africa/Bujumbura 1:57:28 - LMT 1890 + 2:00 - CAT +Zone Africa/Douala 0:38:48 - LMT 1912 + 1:00 - WAT +Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia + -2:00 - CVT 1942 Sep + -2:00 1:00 CVST 1945 Oct 15 + -2:00 - CVT 1975 Nov 25 2:00 + -1:00 - CVT +Zone Africa/Bangui 1:14:20 - LMT 1912 + 1:00 - WAT +Zone Africa/Ndjamena 1:00:12 - LMT 1912 + 1:00 - WAT 1979 Oct 14 + 1:00 1:00 WAST 1980 Mar 8 + 1:00 - WAT +Zone Indian/Comoro 2:53:04 - LMT 1911 Jul # Moroni, Gran Comoro + 3:00 - EAT +Zone Africa/Kinshasa 1:01:12 - LMT 1897 Nov 9 + 1:00 - WAT +Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9 + 2:00 - CAT +Zone Africa/Brazzaville 1:01:08 - LMT 1912 + 1:00 - WAT +Zone Africa/Abidjan -0:16:08 - LMT 1912 + 0:00 - GMT +Zone Africa/Djibouti 2:52:36 - LMT 1911 Jul + 3:00 - EAT +Rule Egypt 1940 only - Jul 15 0:00 1:00 S +Rule Egypt 1940 only - Oct 1 0:00 0 - +Rule Egypt 1941 only - Apr 15 0:00 1:00 S +Rule Egypt 1941 only - Sep 16 0:00 0 - +Rule Egypt 1942 1944 - Apr 1 0:00 1:00 S +Rule Egypt 1942 only - Oct 27 0:00 0 - +Rule Egypt 1943 1945 - Nov 1 0:00 0 - +Rule Egypt 1945 only - Apr 16 0:00 1:00 S +Rule Egypt 1957 only - May 10 0:00 1:00 S +Rule Egypt 1957 1958 - Oct 1 0:00 0 - +Rule Egypt 1958 only - May 1 0:00 1:00 S +Rule Egypt 1959 1981 - May 1 1:00 1:00 S +Rule Egypt 1959 1965 - Sep 30 3:00 0 - +Rule Egypt 1966 1994 - Oct 1 3:00 0 - +Rule Egypt 1982 only - Jul 25 1:00 1:00 S +Rule Egypt 1983 only - Jul 12 1:00 1:00 S +Rule Egypt 1984 1988 - May 1 1:00 1:00 S +Rule Egypt 1989 only - May 6 1:00 1:00 S +Rule Egypt 1990 1994 - May 1 1:00 1:00 S +Rule Egypt 1995 max - Apr lastFri 0:00s 1:00 S +Rule Egypt 1995 2005 - Sep lastThu 23:00s 0 - +Rule Egypt 2006 only - Sep 21 23:00s 0 - +Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 - +Rule Egypt 2008 only - Aug lastThu 23:00s 0 - +Rule Egypt 2009 max - Sep lastThu 23:00s 0 - +Zone Africa/Cairo 2:05:00 - LMT 1900 Oct + 2:00 Egypt EE%sT +Zone Africa/Malabo 0:35:08 - LMT 1912 + 0:00 - GMT 1963 Dec 15 + 1:00 - WAT +Zone Africa/Asmara 2:35:32 - LMT 1870 + 2:35:32 - AMT 1890 # Asmara Mean Time + 2:35:20 - ADMT 1936 May 5 # Adis Dera MT + 3:00 - EAT +Zone Africa/Addis_Ababa 2:34:48 - LMT 1870 + 2:35:20 - ADMT 1936 May 5 # Adis Dera MT + 3:00 - EAT +Zone Africa/Libreville 0:37:48 - LMT 1912 + 1:00 - WAT +Zone Africa/Banjul -1:06:36 - LMT 1912 + -1:06:36 - BMT 1935 # Banjul Mean Time + -1:00 - WAT 1964 + 0:00 - GMT +Rule Ghana 1936 1942 - Sep 1 0:00 0:20 GHST +Rule Ghana 1936 1942 - Dec 31 0:00 0 GMT +Zone Africa/Accra -0:00:52 - LMT 1918 + 0:00 Ghana %s +Zone Africa/Conakry -0:54:52 - LMT 1912 + 0:00 - GMT 1934 Feb 26 + -1:00 - WAT 1960 + 0:00 - GMT +Zone Africa/Bissau -1:02:20 - LMT 1911 May 26 + -1:00 - WAT 1975 + 0:00 - GMT +Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul + 3:00 - EAT 1930 + 2:30 - BEAT 1940 + 2:44:45 - BEAUT 1960 + 3:00 - EAT +Zone Africa/Maseru 1:50:00 - LMT 1903 Mar + 2:00 - SAST 1943 Sep 19 2:00 + 2:00 1:00 SAST 1944 Mar 19 2:00 + 2:00 - SAST +Zone Africa/Monrovia -0:43:08 - LMT 1882 + -0:43:08 - MMT 1919 Mar # Monrovia Mean Time + -0:44:30 - LRT 1972 May # Liberia Time + 0:00 - GMT +Rule Libya 1951 only - Oct 14 2:00 1:00 S +Rule Libya 1952 only - Jan 1 0:00 0 - +Rule Libya 1953 only - Oct 9 2:00 1:00 S +Rule Libya 1954 only - Jan 1 0:00 0 - +Rule Libya 1955 only - Sep 30 0:00 1:00 S +Rule Libya 1956 only - Jan 1 0:00 0 - +Rule Libya 1982 1984 - Apr 1 0:00 1:00 S +Rule Libya 1982 1985 - Oct 1 0:00 0 - +Rule Libya 1985 only - Apr 6 0:00 1:00 S +Rule Libya 1986 only - Apr 4 0:00 1:00 S +Rule Libya 1986 only - Oct 3 0:00 0 - +Rule Libya 1987 1989 - Apr 1 0:00 1:00 S +Rule Libya 1987 1989 - Oct 1 0:00 0 - +Zone Africa/Tripoli 0:52:44 - LMT 1920 + 1:00 Libya CE%sT 1959 + 2:00 - EET 1982 + 1:00 Libya CE%sT 1990 May 4 + 2:00 - EET 1996 Sep 30 + 1:00 - CET 1997 Apr 4 + 1:00 1:00 CEST 1997 Oct 4 + 2:00 - EET +Zone Indian/Antananarivo 3:10:04 - LMT 1911 Jul + 3:00 - EAT 1954 Feb 27 23:00s + 3:00 1:00 EAST 1954 May 29 23:00s + 3:00 - EAT +Zone Africa/Blantyre 2:20:00 - LMT 1903 Mar + 2:00 - CAT +Zone Africa/Bamako -0:32:00 - LMT 1912 + 0:00 - GMT 1934 Feb 26 + -1:00 - WAT 1960 Jun 20 + 0:00 - GMT +Zone Africa/Nouakchott -1:03:48 - LMT 1912 + 0:00 - GMT 1934 Feb 26 + -1:00 - WAT 1960 Nov 28 + 0:00 - GMT +Rule Mauritius 1982 only - Oct 10 0:00 1:00 S +Rule Mauritius 1983 only - Mar 21 0:00 0 - +Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 S +Rule Mauritius 2009 only - Mar lastSun 2:00 0 - +Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis + 4:00 Mauritius MU%sT # Mauritius Time +Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou + 3:00 - EAT +Rule Morocco 1939 only - Sep 12 0:00 1:00 S +Rule Morocco 1939 only - Nov 19 0:00 0 - +Rule Morocco 1940 only - Feb 25 0:00 1:00 S +Rule Morocco 1945 only - Nov 18 0:00 0 - +Rule Morocco 1950 only - Jun 11 0:00 1:00 S +Rule Morocco 1950 only - Oct 29 0:00 0 - +Rule Morocco 1967 only - Jun 3 12:00 1:00 S +Rule Morocco 1967 only - Oct 1 0:00 0 - +Rule Morocco 1974 only - Jun 24 0:00 1:00 S +Rule Morocco 1974 only - Sep 1 0:00 0 - +Rule Morocco 1976 1977 - May 1 0:00 1:00 S +Rule Morocco 1976 only - Aug 1 0:00 0 - +Rule Morocco 1977 only - Sep 28 0:00 0 - +Rule Morocco 1978 only - Jun 1 0:00 1:00 S +Rule Morocco 1978 only - Aug 4 0:00 0 - +Rule Morocco 2008 only - Jun 1 0:00 1:00 S +Rule Morocco 2008 only - Sep 1 0:00 0 - +Rule Morocco 2009 only - Jun 1 0:00 1:00 S +Rule Morocco 2009 only - Aug 21 0:00 0 - +Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26 + 0:00 Morocco WE%sT 1984 Mar 16 + 1:00 - CET 1986 + 0:00 Morocco WE%sT +Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan + -1:00 - WAT 1976 Apr 14 + 0:00 - WET +Zone Africa/Maputo 2:10:20 - LMT 1903 Mar + 2:00 - CAT +Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S +Rule Namibia 1995 max - Apr Sun>=1 2:00 0 - +Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8 + 1:30 - SWAT 1903 Mar # SW Africa Time + 2:00 - SAST 1942 Sep 20 2:00 + 2:00 1:00 SAST 1943 Mar 21 2:00 + 2:00 - SAST 1990 Mar 21 # independence + 2:00 - CAT 1994 Apr 3 + 1:00 Namibia WA%sT +Zone Africa/Niamey 0:08:28 - LMT 1912 + -1:00 - WAT 1934 Feb 26 + 0:00 - GMT 1960 + 1:00 - WAT +Zone Africa/Lagos 0:13:36 - LMT 1919 Sep + 1:00 - WAT +Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis + 4:00 - RET # Reunion Time +Zone Africa/Kigali 2:00:16 - LMT 1935 Jun + 2:00 - CAT +Zone Atlantic/St_Helena -0:22:48 - LMT 1890 # Jamestown + -0:22:48 - JMT 1951 # Jamestown Mean Time + 0:00 - GMT +Zone Africa/Sao_Tome 0:26:56 - LMT 1884 + -0:36:32 - LMT 1912 # Lisbon Mean Time + 0:00 - GMT +Zone Africa/Dakar -1:09:44 - LMT 1912 + -1:00 - WAT 1941 Jun + 0:00 - GMT +Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria + 4:00 - SCT # Seychelles Time +Rule SL 1935 1942 - Jun 1 0:00 0:40 SLST +Rule SL 1935 1942 - Oct 1 0:00 0 WAT +Rule SL 1957 1962 - Jun 1 0:00 1:00 SLST +Rule SL 1957 1962 - Sep 1 0:00 0 GMT +Zone Africa/Freetown -0:53:00 - LMT 1882 + -0:53:00 - FMT 1913 Jun # Freetown Mean Time + -1:00 SL %s 1957 + 0:00 SL %s +Zone Africa/Mogadishu 3:01:28 - LMT 1893 Nov + 3:00 - EAT 1931 + 2:30 - BEAT 1957 + 3:00 - EAT +Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 - +Rule SA 1943 1944 - Mar Sun>=15 2:00 0 - +Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8 + 1:30 - SAST 1903 Mar + 2:00 SA SAST +Rule Sudan 1970 only - May 1 0:00 1:00 S +Rule Sudan 1970 1985 - Oct 15 0:00 0 - +Rule Sudan 1971 only - Apr 30 0:00 1:00 S +Rule Sudan 1972 1985 - Apr lastSun 0:00 1:00 S +Zone Africa/Khartoum 2:10:08 - LMT 1931 + 2:00 Sudan CA%sT 2000 Jan 15 12:00 + 3:00 - EAT +Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar + 2:00 - SAST +Zone Africa/Dar_es_Salaam 2:37:08 - LMT 1931 + 3:00 - EAT 1948 + 2:44:45 - BEAUT 1961 + 3:00 - EAT +Zone Africa/Lome 0:04:52 - LMT 1893 + 0:00 - GMT +Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S +Rule Tunisia 1939 only - Nov 18 23:00s 0 - +Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S +Rule Tunisia 1941 only - Oct 6 0:00 0 - +Rule Tunisia 1942 only - Mar 9 0:00 1:00 S +Rule Tunisia 1942 only - Nov 2 3:00 0 - +Rule Tunisia 1943 only - Mar 29 2:00 1:00 S +Rule Tunisia 1943 only - Apr 17 2:00 0 - +Rule Tunisia 1943 only - Apr 25 2:00 1:00 S +Rule Tunisia 1943 only - Oct 4 2:00 0 - +Rule Tunisia 1944 1945 - Apr Mon>=1 2:00 1:00 S +Rule Tunisia 1944 only - Oct 8 0:00 0 - +Rule Tunisia 1945 only - Sep 16 0:00 0 - +Rule Tunisia 1977 only - Apr 30 0:00s 1:00 S +Rule Tunisia 1977 only - Sep 24 0:00s 0 - +Rule Tunisia 1978 only - May 1 0:00s 1:00 S +Rule Tunisia 1978 only - Oct 1 0:00s 0 - +Rule Tunisia 1988 only - Jun 1 0:00s 1:00 S +Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 - +Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S +Rule Tunisia 1990 only - May 1 0:00s 1:00 S +Rule Tunisia 2005 only - May 1 0:00s 1:00 S +Rule Tunisia 2005 only - Sep 30 1:00s 0 - +Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S +Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 - +Rule Tunisia 2010 max - Mar lastSun 2:00s 1:00 S +Rule Tunisia 2010 max - Oct lastSun 2:00s 0 - +Zone Africa/Tunis 0:40:44 - LMT 1881 May 12 + 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time + 1:00 Tunisia CE%sT +Zone Africa/Kampala 2:09:40 - LMT 1928 Jul + 3:00 - EAT 1930 + 2:30 - BEAT 1948 + 2:44:45 - BEAUT 1957 + 3:00 - EAT +Zone Africa/Lusaka 1:53:08 - LMT 1903 Mar + 2:00 - CAT +Zone Africa/Harare 2:04:12 - LMT 1903 Mar + 2:00 - CAT diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/antarctica b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/antarctica new file mode 100644 index 0000000..c8f7bff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/antarctica @@ -0,0 +1,68 @@ +Rule RussAQ 1981 1984 - Apr 1 0:00 1:00 S +Rule RussAQ 1981 1983 - Oct 1 0:00 0 - +Rule RussAQ 1984 1991 - Sep lastSun 2:00s 0 - +Rule RussAQ 1985 1991 - Mar lastSun 2:00s 1:00 S +Rule RussAQ 1992 only - Mar lastSat 23:00 1:00 S +Rule RussAQ 1992 only - Sep lastSat 23:00 0 - +Rule RussAQ 1993 max - Mar lastSun 2:00s 1:00 S +Rule RussAQ 1993 1995 - Sep lastSun 2:00s 0 - +Rule RussAQ 1996 max - Oct lastSun 2:00s 0 - +Rule ArgAQ 1964 1966 - Mar 1 0:00 0 - +Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S +Rule ArgAQ 1967 only - Apr 2 0:00 0 - +Rule ArgAQ 1967 1968 - Oct Sun>=1 0:00 1:00 S +Rule ArgAQ 1968 1969 - Apr Sun>=1 0:00 0 - +Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S +Rule ArgAQ 1974 only - May 1 0:00 0 - +Rule ChileAQ 1972 1986 - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1974 1987 - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 1987 only - Apr 12 3:00u 0 - +Rule ChileAQ 1988 1989 - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1988 only - Oct Sun>=1 4:00u 1:00 S +Rule ChileAQ 1989 only - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 1990 only - Mar 18 3:00u 0 - +Rule ChileAQ 1990 only - Sep 16 4:00u 1:00 S +Rule ChileAQ 1991 1996 - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1991 1997 - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 1997 only - Mar 30 3:00u 0 - +Rule ChileAQ 1998 only - Mar Sun>=9 3:00u 0 - +Rule ChileAQ 1998 only - Sep 27 4:00u 1:00 S +Rule ChileAQ 1999 only - Apr 4 3:00u 0 - +Rule ChileAQ 1999 max - Oct Sun>=9 4:00u 1:00 S +Rule ChileAQ 2000 max - Mar Sun>=9 3:00u 0 - +Zone Antarctica/Casey 0 - zzz 1969 + 8:00 - WST # Western (Aus) Standard Time +Zone Antarctica/Davis 0 - zzz 1957 Jan 13 + 7:00 - DAVT 1964 Nov # Davis Time + 0 - zzz 1969 Feb + 7:00 - DAVT +Zone Antarctica/Mawson 0 - zzz 1954 Feb 13 + 6:00 - MAWT # Mawson Time +Zone Indian/Kerguelen 0 - zzz 1950 # Port-aux-Francais + 5:00 - TFT # ISO code TF Time +Zone Antarctica/DumontDUrville 0 - zzz 1947 + 10:00 - PMT 1952 Jan 14 # Port-Martin Time + 0 - zzz 1956 Nov + 10:00 - DDUT # Dumont-d'Urville Time +Zone Antarctica/Syowa 0 - zzz 1957 Jan 29 + 3:00 - SYOT # Syowa Time +Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D +Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D +Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D +Rule NZAQ 1990 2006 - Oct Sun>=1 2:00s 1:00 D +Rule NZAQ 1975 only - Feb 23 2:00s 0 S +Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S +Rule NZAQ 1990 2007 - Mar Sun>=15 2:00s 0 S +Rule NZAQ 2007 max - Sep lastSun 2:00s 1:00 D +Rule NZAQ 2008 max - Apr Sun>=1 2:00s 0 S +Zone Antarctica/Vostok 0 - zzz 1957 Dec 16 + 6:00 - VOST # Vostok time +Zone Antarctica/Rothera 0 - zzz 1976 Dec 1 + -3:00 - ROTT # Rothera time +Zone Antarctica/Palmer 0 - zzz 1965 + -4:00 ArgAQ AR%sT 1969 Oct 5 + -3:00 ArgAQ AR%sT 1982 May + -4:00 ChileAQ CL%sT +Zone Antarctica/McMurdo 0 - zzz 1956 + 12:00 NZAQ NZ%sT +Link Antarctica/McMurdo Antarctica/South_Pole diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/asia b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/asia new file mode 100644 index 0000000..4045327 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/asia @@ -0,0 +1,720 @@ +Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S +Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 - +Rule EUAsia 1996 max - Oct lastSun 1:00u 0 - +Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S +Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 - +Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 - +Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S +Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 - +Rule RussiaAsia 1984 1991 - Sep lastSun 2:00s 0 - +Rule RussiaAsia 1985 1991 - Mar lastSun 2:00s 1:00 S +Rule RussiaAsia 1992 only - Mar lastSat 23:00 1:00 S +Rule RussiaAsia 1992 only - Sep lastSat 23:00 0 - +Rule RussiaAsia 1993 max - Mar lastSun 2:00s 1:00 S +Rule RussiaAsia 1993 1995 - Sep lastSun 2:00s 0 - +Rule RussiaAsia 1996 max - Oct lastSun 2:00s 0 - +Zone Asia/Kabul 4:36:48 - LMT 1890 + 4:00 - AFT 1945 + 4:30 - AFT +Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2 + 3:00 - YERT 1957 Mar # Yerevan Time + 4:00 RussiaAsia YER%sT 1991 Mar 31 2:00s + 3:00 1:00 YERST 1991 Sep 23 # independence + 3:00 RussiaAsia AM%sT 1995 Sep 24 2:00s + 4:00 - AMT 1997 + 4:00 RussiaAsia AM%sT +Rule Azer 1997 max - Mar lastSun 4:00 1:00 S +Rule Azer 1997 max - Oct lastSun 5:00 0 - +Zone Asia/Baku 3:19:24 - LMT 1924 May 2 + 3:00 - BAKT 1957 Mar # Baku Time + 4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s + 3:00 1:00 BAKST 1991 Aug 30 # independence + 3:00 RussiaAsia AZ%sT 1992 Sep lastSat 23:00 + 4:00 - AZT 1996 # Azerbaijan time + 4:00 EUAsia AZ%sT 1997 + 4:00 Azer AZ%sT +Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah + 4:00 - GST 1972 Jun + 3:00 - AST +Zone Asia/Dhaka 6:01:40 - LMT 1890 + 5:53:20 - HMT 1941 Oct # Howrah Mean Time? + 6:30 - BURT 1942 May 15 # Burma Time + 5:30 - IST 1942 Sep + 6:30 - BURT 1951 Sep 30 + 6:00 - DACT 1971 Mar 26 # Dacca Time + 6:00 - BDT 2009 Jun 19 23:00 # Bangladesh Time + 6:00 1:00 BDST 2010 + 6:00 - BDT +Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu + 5:30 - IST 1987 Oct + 6:00 - BTT # Bhutan Time +Zone Indian/Chagos 4:49:40 - LMT 1907 + 5:00 - IOT 1996 # BIOT Time + 6:00 - IOT +Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan + 7:30 - BNT 1933 + 8:00 - BNT +Zone Asia/Rangoon 6:24:40 - LMT 1880 # or Yangon + 6:24:36 - RMT 1920 # Rangoon Mean Time? + 6:30 - BURT 1942 May # Burma Time + 9:00 - JST 1945 May 3 + 6:30 - MMT # Myanmar Time +Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jun 9 + 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT? + 7:00 - ICT 1912 May + 8:00 - ICT 1931 May + 7:00 - ICT +Rule Shang 1940 only - Jun 3 0:00 1:00 D +Rule Shang 1940 1941 - Oct 1 0:00 0 S +Rule Shang 1941 only - Mar 16 0:00 1:00 D +Rule PRC 1986 only - May 4 0:00 1:00 D +Rule PRC 1986 1991 - Sep Sun>=11 0:00 0 S +Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D +Zone Asia/Harbin 8:26:44 - LMT 1928 # or Haerbin + 8:30 - CHAT 1932 Mar # Changbai Time + 8:00 - CST 1940 + 9:00 - CHAT 1966 May + 8:30 - CHAT 1980 May + 8:00 PRC C%sT +Zone Asia/Shanghai 8:05:52 - LMT 1928 + 8:00 Shang C%sT 1949 + 8:00 PRC C%sT +Zone Asia/Chongqing 7:06:20 - LMT 1928 # or Chungking + 7:00 - LONT 1980 May # Long-shu Time + 8:00 PRC C%sT +Zone Asia/Urumqi 5:50:20 - LMT 1928 # or Urumchi + 6:00 - URUT 1980 May # Urumqi Time + 8:00 PRC C%sT +Zone Asia/Kashgar 5:03:56 - LMT 1928 # or Kashi or Kaxgar + 5:30 - KAST 1940 # Kashgar Time + 5:00 - KAST 1980 May + 8:00 PRC C%sT +Rule HK 1946 only - Apr 20 3:30 1:00 S +Rule HK 1946 only - Dec 1 3:30 0 - +Rule HK 1947 only - Apr 13 3:30 1:00 S +Rule HK 1947 only - Dec 30 3:30 0 - +Rule HK 1948 only - May 2 3:30 1:00 S +Rule HK 1948 1952 - Oct lastSun 3:30 0 - +Rule HK 1949 1953 - Apr Sun>=1 3:30 1:00 S +Rule HK 1953 only - Nov 1 3:30 0 - +Rule HK 1954 1964 - Mar Sun>=18 3:30 1:00 S +Rule HK 1954 only - Oct 31 3:30 0 - +Rule HK 1955 1964 - Nov Sun>=1 3:30 0 - +Rule HK 1965 1977 - Apr Sun>=16 3:30 1:00 S +Rule HK 1965 1977 - Oct Sun>=16 3:30 0 - +Rule HK 1979 1980 - May Sun>=8 3:30 1:00 S +Rule HK 1979 1980 - Oct Sun>=16 3:30 0 - +Zone Asia/Hong_Kong 7:36:36 - LMT 1904 Oct 30 + 8:00 HK HK%sT +Rule Taiwan 1945 1951 - May 1 0:00 1:00 D +Rule Taiwan 1945 1951 - Oct 1 0:00 0 S +Rule Taiwan 1952 only - Mar 1 0:00 1:00 D +Rule Taiwan 1952 1954 - Nov 1 0:00 0 S +Rule Taiwan 1953 1959 - Apr 1 0:00 1:00 D +Rule Taiwan 1955 1961 - Oct 1 0:00 0 S +Rule Taiwan 1960 1961 - Jun 1 0:00 1:00 D +Rule Taiwan 1974 1975 - Apr 1 0:00 1:00 D +Rule Taiwan 1974 1975 - Oct 1 0:00 0 S +Rule Taiwan 1980 only - Jun 30 0:00 1:00 D +Rule Taiwan 1980 only - Sep 30 0:00 0 S +Zone Asia/Taipei 8:06:00 - LMT 1896 # or Taibei or T'ai-pei + 8:00 Taiwan C%sT +Rule Macau 1961 1962 - Mar Sun>=16 3:30 1:00 S +Rule Macau 1961 1964 - Nov Sun>=1 3:30 0 - +Rule Macau 1963 only - Mar Sun>=16 0:00 1:00 S +Rule Macau 1964 only - Mar Sun>=16 3:30 1:00 S +Rule Macau 1965 only - Mar Sun>=16 0:00 1:00 S +Rule Macau 1965 only - Oct 31 0:00 0 - +Rule Macau 1966 1971 - Apr Sun>=16 3:30 1:00 S +Rule Macau 1966 1971 - Oct Sun>=16 3:30 0 - +Rule Macau 1972 1974 - Apr Sun>=15 0:00 1:00 S +Rule Macau 1972 1973 - Oct Sun>=15 0:00 0 - +Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 - +Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 S +Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 S +Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 - +Zone Asia/Macau 7:34:20 - LMT 1912 + 8:00 Macau MO%sT 1999 Dec 20 # return to China + 8:00 PRC C%sT +Rule Cyprus 1975 only - Apr 13 0:00 1:00 S +Rule Cyprus 1975 only - Oct 12 0:00 0 - +Rule Cyprus 1976 only - May 15 0:00 1:00 S +Rule Cyprus 1976 only - Oct 11 0:00 0 - +Rule Cyprus 1977 1980 - Apr Sun>=1 0:00 1:00 S +Rule Cyprus 1977 only - Sep 25 0:00 0 - +Rule Cyprus 1978 only - Oct 2 0:00 0 - +Rule Cyprus 1979 1997 - Sep lastSun 0:00 0 - +Rule Cyprus 1981 1998 - Mar lastSun 0:00 1:00 S +Zone Asia/Nicosia 2:13:28 - LMT 1921 Nov 14 + 2:00 Cyprus EE%sT 1998 Sep + 2:00 EUAsia EE%sT +Link Asia/Nicosia Europe/Nicosia +Zone Asia/Tbilisi 2:59:16 - LMT 1880 + 2:59:16 - TBMT 1924 May 2 # Tbilisi Mean Time + 3:00 - TBIT 1957 Mar # Tbilisi Time + 4:00 RussiaAsia TBI%sT 1991 Mar 31 2:00s + 3:00 1:00 TBIST 1991 Apr 9 # independence + 3:00 RussiaAsia GE%sT 1992 # Georgia Time + 3:00 E-EurAsia GE%sT 1994 Sep lastSun + 4:00 E-EurAsia GE%sT 1996 Oct lastSun + 4:00 1:00 GEST 1997 Mar lastSun + 4:00 E-EurAsia GE%sT 2004 Jun 27 + 3:00 RussiaAsia GE%sT 2005 Mar lastSun 2:00 + 4:00 - GET +Zone Asia/Dili 8:22:20 - LMT 1912 + 8:00 - TLT 1942 Feb 21 23:00 # E Timor Time + 9:00 - JST 1945 Sep 23 + 9:00 - TLT 1976 May 3 + 8:00 - CIT 2000 Sep 17 00:00 + 9:00 - TLT +Zone Asia/Kolkata 5:53:28 - LMT 1880 # Kolkata + 5:53:20 - HMT 1941 Oct # Howrah Mean Time? + 6:30 - BURT 1942 May 15 # Burma Time + 5:30 - IST 1942 Sep + 5:30 1:00 IST 1945 Oct 15 + 5:30 - IST +Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10 + 7:07:12 - JMT 1923 Dec 31 23:47:12 # Jakarta + 7:20 - JAVT 1932 Nov # Java Time + 7:30 - WIT 1942 Mar 23 + 9:00 - JST 1945 Sep 23 + 7:30 - WIT 1948 May + 8:00 - WIT 1950 May + 7:30 - WIT 1964 + 7:00 - WIT +Zone Asia/Pontianak 7:17:20 - LMT 1908 May + 7:17:20 - PMT 1932 Nov # Pontianak MT + 7:30 - WIT 1942 Jan 29 + 9:00 - JST 1945 Sep 23 + 7:30 - WIT 1948 May + 8:00 - WIT 1950 May + 7:30 - WIT 1964 + 8:00 - CIT 1988 Jan 1 + 7:00 - WIT +Zone Asia/Makassar 7:57:36 - LMT 1920 + 7:57:36 - MMT 1932 Nov # Macassar MT + 8:00 - CIT 1942 Feb 9 + 9:00 - JST 1945 Sep 23 + 8:00 - CIT +Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov + 9:00 - EIT 1944 Sep 1 + 9:30 - CST 1964 + 9:00 - EIT +Rule Iran 1978 1980 - Mar 21 0:00 1:00 D +Rule Iran 1978 only - Oct 21 0:00 0 S +Rule Iran 1979 only - Sep 19 0:00 0 S +Rule Iran 1980 only - Sep 23 0:00 0 S +Rule Iran 1991 only - May 3 0:00 1:00 D +Rule Iran 1992 1995 - Mar 22 0:00 1:00 D +Rule Iran 1991 1995 - Sep 22 0:00 0 S +Rule Iran 1996 only - Mar 21 0:00 1:00 D +Rule Iran 1996 only - Sep 21 0:00 0 S +Rule Iran 1997 1999 - Mar 22 0:00 1:00 D +Rule Iran 1997 1999 - Sep 22 0:00 0 S +Rule Iran 2000 only - Mar 21 0:00 1:00 D +Rule Iran 2000 only - Sep 21 0:00 0 S +Rule Iran 2001 2003 - Mar 22 0:00 1:00 D +Rule Iran 2001 2003 - Sep 22 0:00 0 S +Rule Iran 2004 only - Mar 21 0:00 1:00 D +Rule Iran 2004 only - Sep 21 0:00 0 S +Rule Iran 2005 only - Mar 22 0:00 1:00 D +Rule Iran 2005 only - Sep 22 0:00 0 S +Rule Iran 2008 only - Mar 21 0:00 1:00 D +Rule Iran 2008 only - Sep 21 0:00 0 S +Rule Iran 2009 2011 - Mar 22 0:00 1:00 D +Rule Iran 2009 2011 - Sep 22 0:00 0 S +Rule Iran 2012 only - Mar 21 0:00 1:00 D +Rule Iran 2012 only - Sep 21 0:00 0 S +Rule Iran 2013 2015 - Mar 22 0:00 1:00 D +Rule Iran 2013 2015 - Sep 22 0:00 0 S +Rule Iran 2016 only - Mar 21 0:00 1:00 D +Rule Iran 2016 only - Sep 21 0:00 0 S +Rule Iran 2017 2019 - Mar 22 0:00 1:00 D +Rule Iran 2017 2019 - Sep 22 0:00 0 S +Rule Iran 2020 only - Mar 21 0:00 1:00 D +Rule Iran 2020 only - Sep 21 0:00 0 S +Rule Iran 2021 2023 - Mar 22 0:00 1:00 D +Rule Iran 2021 2023 - Sep 22 0:00 0 S +Rule Iran 2024 only - Mar 21 0:00 1:00 D +Rule Iran 2024 only - Sep 21 0:00 0 S +Rule Iran 2025 2027 - Mar 22 0:00 1:00 D +Rule Iran 2025 2027 - Sep 22 0:00 0 S +Rule Iran 2028 2029 - Mar 21 0:00 1:00 D +Rule Iran 2028 2029 - Sep 21 0:00 0 S +Rule Iran 2030 2031 - Mar 22 0:00 1:00 D +Rule Iran 2030 2031 - Sep 22 0:00 0 S +Rule Iran 2032 2033 - Mar 21 0:00 1:00 D +Rule Iran 2032 2033 - Sep 21 0:00 0 S +Rule Iran 2034 2035 - Mar 22 0:00 1:00 D +Rule Iran 2034 2035 - Sep 22 0:00 0 S +Rule Iran 2036 2037 - Mar 21 0:00 1:00 D +Rule Iran 2036 2037 - Sep 21 0:00 0 S +Zone Asia/Tehran 3:25:44 - LMT 1916 + 3:25:44 - TMT 1946 # Tehran Mean Time + 3:30 - IRST 1977 Nov + 4:00 Iran IR%sT 1979 + 3:30 Iran IR%sT +Rule Iraq 1982 only - May 1 0:00 1:00 D +Rule Iraq 1982 1984 - Oct 1 0:00 0 S +Rule Iraq 1983 only - Mar 31 0:00 1:00 D +Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D +Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S +Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D +Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 D +Rule Iraq 1991 2007 - Oct 1 3:00s 0 S +Zone Asia/Baghdad 2:57:40 - LMT 1890 + 2:57:36 - BMT 1918 # Baghdad Mean Time? + 3:00 - AST 1982 May + 3:00 Iraq A%sT +Rule Zion 1940 only - Jun 1 0:00 1:00 D +Rule Zion 1942 1944 - Nov 1 0:00 0 S +Rule Zion 1943 only - Apr 1 2:00 1:00 D +Rule Zion 1944 only - Apr 1 0:00 1:00 D +Rule Zion 1945 only - Apr 16 0:00 1:00 D +Rule Zion 1945 only - Nov 1 2:00 0 S +Rule Zion 1946 only - Apr 16 2:00 1:00 D +Rule Zion 1946 only - Nov 1 0:00 0 S +Rule Zion 1948 only - May 23 0:00 2:00 DD +Rule Zion 1948 only - Sep 1 0:00 1:00 D +Rule Zion 1948 1949 - Nov 1 2:00 0 S +Rule Zion 1949 only - May 1 0:00 1:00 D +Rule Zion 1950 only - Apr 16 0:00 1:00 D +Rule Zion 1950 only - Sep 15 3:00 0 S +Rule Zion 1951 only - Apr 1 0:00 1:00 D +Rule Zion 1951 only - Nov 11 3:00 0 S +Rule Zion 1952 only - Apr 20 2:00 1:00 D +Rule Zion 1952 only - Oct 19 3:00 0 S +Rule Zion 1953 only - Apr 12 2:00 1:00 D +Rule Zion 1953 only - Sep 13 3:00 0 S +Rule Zion 1954 only - Jun 13 0:00 1:00 D +Rule Zion 1954 only - Sep 12 0:00 0 S +Rule Zion 1955 only - Jun 11 2:00 1:00 D +Rule Zion 1955 only - Sep 11 0:00 0 S +Rule Zion 1956 only - Jun 3 0:00 1:00 D +Rule Zion 1956 only - Sep 30 3:00 0 S +Rule Zion 1957 only - Apr 29 2:00 1:00 D +Rule Zion 1957 only - Sep 22 0:00 0 S +Rule Zion 1974 only - Jul 7 0:00 1:00 D +Rule Zion 1974 only - Oct 13 0:00 0 S +Rule Zion 1975 only - Apr 20 0:00 1:00 D +Rule Zion 1975 only - Aug 31 0:00 0 S +Rule Zion 1985 only - Apr 14 0:00 1:00 D +Rule Zion 1985 only - Sep 15 0:00 0 S +Rule Zion 1986 only - May 18 0:00 1:00 D +Rule Zion 1986 only - Sep 7 0:00 0 S +Rule Zion 1987 only - Apr 15 0:00 1:00 D +Rule Zion 1987 only - Sep 13 0:00 0 S +Rule Zion 1988 only - Apr 9 0:00 1:00 D +Rule Zion 1988 only - Sep 3 0:00 0 S +Rule Zion 1989 only - Apr 30 0:00 1:00 D +Rule Zion 1989 only - Sep 3 0:00 0 S +Rule Zion 1990 only - Mar 25 0:00 1:00 D +Rule Zion 1990 only - Aug 26 0:00 0 S +Rule Zion 1991 only - Mar 24 0:00 1:00 D +Rule Zion 1991 only - Sep 1 0:00 0 S +Rule Zion 1992 only - Mar 29 0:00 1:00 D +Rule Zion 1992 only - Sep 6 0:00 0 S +Rule Zion 1993 only - Apr 2 0:00 1:00 D +Rule Zion 1993 only - Sep 5 0:00 0 S +Rule Zion 1994 only - Apr 1 0:00 1:00 D +Rule Zion 1994 only - Aug 28 0:00 0 S +Rule Zion 1995 only - Mar 31 0:00 1:00 D +Rule Zion 1995 only - Sep 3 0:00 0 S +Rule Zion 1996 only - Mar 15 0:00 1:00 D +Rule Zion 1996 only - Sep 16 0:00 0 S +Rule Zion 1997 only - Mar 21 0:00 1:00 D +Rule Zion 1997 only - Sep 14 0:00 0 S +Rule Zion 1998 only - Mar 20 0:00 1:00 D +Rule Zion 1998 only - Sep 6 0:00 0 S +Rule Zion 1999 only - Apr 2 2:00 1:00 D +Rule Zion 1999 only - Sep 3 2:00 0 S +Rule Zion 2000 only - Apr 14 2:00 1:00 D +Rule Zion 2000 only - Oct 6 1:00 0 S +Rule Zion 2001 only - Apr 9 1:00 1:00 D +Rule Zion 2001 only - Sep 24 1:00 0 S +Rule Zion 2002 only - Mar 29 1:00 1:00 D +Rule Zion 2002 only - Oct 7 1:00 0 S +Rule Zion 2003 only - Mar 28 1:00 1:00 D +Rule Zion 2003 only - Oct 3 1:00 0 S +Rule Zion 2004 only - Apr 7 1:00 1:00 D +Rule Zion 2004 only - Sep 22 1:00 0 S +Rule Zion 2005 only - Apr 1 2:00 1:00 D +Rule Zion 2005 only - Oct 9 2:00 0 S +Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D +Rule Zion 2006 only - Oct 1 2:00 0 S +Rule Zion 2007 only - Sep 16 2:00 0 S +Rule Zion 2008 only - Oct 5 2:00 0 S +Rule Zion 2009 only - Sep 27 2:00 0 S +Rule Zion 2010 only - Sep 12 2:00 0 S +Rule Zion 2011 only - Apr 1 2:00 1:00 D +Rule Zion 2011 only - Oct 2 2:00 0 S +Rule Zion 2012 2015 - Mar Fri>=26 2:00 1:00 D +Rule Zion 2012 only - Sep 23 2:00 0 S +Rule Zion 2013 only - Sep 8 2:00 0 S +Rule Zion 2014 only - Sep 28 2:00 0 S +Rule Zion 2015 only - Sep 20 2:00 0 S +Rule Zion 2016 only - Apr 1 2:00 1:00 D +Rule Zion 2016 only - Oct 9 2:00 0 S +Rule Zion 2017 2021 - Mar Fri>=26 2:00 1:00 D +Rule Zion 2017 only - Sep 24 2:00 0 S +Rule Zion 2018 only - Sep 16 2:00 0 S +Rule Zion 2019 only - Oct 6 2:00 0 S +Rule Zion 2020 only - Sep 27 2:00 0 S +Rule Zion 2021 only - Sep 12 2:00 0 S +Rule Zion 2022 only - Apr 1 2:00 1:00 D +Rule Zion 2022 only - Oct 2 2:00 0 S +Rule Zion 2023 2032 - Mar Fri>=26 2:00 1:00 D +Rule Zion 2023 only - Sep 24 2:00 0 S +Rule Zion 2024 only - Oct 6 2:00 0 S +Rule Zion 2025 only - Sep 28 2:00 0 S +Rule Zion 2026 only - Sep 20 2:00 0 S +Rule Zion 2027 only - Oct 10 2:00 0 S +Rule Zion 2028 only - Sep 24 2:00 0 S +Rule Zion 2029 only - Sep 16 2:00 0 S +Rule Zion 2030 only - Oct 6 2:00 0 S +Rule Zion 2031 only - Sep 21 2:00 0 S +Rule Zion 2032 only - Sep 12 2:00 0 S +Rule Zion 2033 only - Apr 1 2:00 1:00 D +Rule Zion 2033 only - Oct 2 2:00 0 S +Rule Zion 2034 2037 - Mar Fri>=26 2:00 1:00 D +Rule Zion 2034 only - Sep 17 2:00 0 S +Rule Zion 2035 only - Oct 7 2:00 0 S +Rule Zion 2036 only - Sep 28 2:00 0 S +Rule Zion 2037 only - Sep 13 2:00 0 S +Zone Asia/Jerusalem 2:20:56 - LMT 1880 + 2:20:40 - JMT 1918 # Jerusalem Mean Time? + 2:00 Zion I%sT +Rule Japan 1948 only - May Sun>=1 2:00 1:00 D +Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S +Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D +Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D +Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u + 9:00 - JST 1896 + 9:00 - CJT 1938 + 9:00 Japan J%sT +Rule Jordan 1973 only - Jun 6 0:00 1:00 S +Rule Jordan 1973 1975 - Oct 1 0:00 0 - +Rule Jordan 1974 1977 - May 1 0:00 1:00 S +Rule Jordan 1976 only - Nov 1 0:00 0 - +Rule Jordan 1977 only - Oct 1 0:00 0 - +Rule Jordan 1978 only - Apr 30 0:00 1:00 S +Rule Jordan 1978 only - Sep 30 0:00 0 - +Rule Jordan 1985 only - Apr 1 0:00 1:00 S +Rule Jordan 1985 only - Oct 1 0:00 0 - +Rule Jordan 1986 1988 - Apr Fri>=1 0:00 1:00 S +Rule Jordan 1986 1990 - Oct Fri>=1 0:00 0 - +Rule Jordan 1989 only - May 8 0:00 1:00 S +Rule Jordan 1990 only - Apr 27 0:00 1:00 S +Rule Jordan 1991 only - Apr 17 0:00 1:00 S +Rule Jordan 1991 only - Sep 27 0:00 0 - +Rule Jordan 1992 only - Apr 10 0:00 1:00 S +Rule Jordan 1992 1993 - Oct Fri>=1 0:00 0 - +Rule Jordan 1993 1998 - Apr Fri>=1 0:00 1:00 S +Rule Jordan 1994 only - Sep Fri>=15 0:00 0 - +Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 - +Rule Jordan 1999 only - Jul 1 0:00s 1:00 S +Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 - +Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S +Rule Jordan 2002 max - Mar lastThu 24:00 1:00 S +Rule Jordan 2003 only - Oct 24 0:00s 0 - +Rule Jordan 2004 only - Oct 15 0:00s 0 - +Rule Jordan 2005 only - Sep lastFri 0:00s 0 - +Rule Jordan 2006 max - Oct lastFri 0:00s 0 - +Zone Asia/Amman 2:23:44 - LMT 1931 + 2:00 Jordan EE%sT +Zone Asia/Almaty 5:07:48 - LMT 1924 May 2 # or Alma-Ata + 5:00 - ALMT 1930 Jun 21 # Alma-Ata Time + 6:00 RussiaAsia ALM%sT 1991 + 6:00 - ALMT 1992 + 6:00 RussiaAsia ALM%sT 2005 Mar 15 + 6:00 - ALMT +Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2 + 4:00 - KIZT 1930 Jun 21 # Kizilorda Time + 5:00 - KIZT 1981 Apr 1 + 5:00 1:00 KIZST 1981 Oct 1 + 6:00 - KIZT 1982 Apr 1 + 5:00 RussiaAsia KIZ%sT 1991 + 5:00 - KIZT 1991 Dec 16 # independence + 5:00 - QYZT 1992 Jan 19 2:00 + 6:00 RussiaAsia QYZ%sT 2005 Mar 15 + 6:00 - QYZT +Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2 + 4:00 - AKTT 1930 Jun 21 # Aktyubinsk Time + 5:00 - AKTT 1981 Apr 1 + 5:00 1:00 AKTST 1981 Oct 1 + 6:00 - AKTT 1982 Apr 1 + 5:00 RussiaAsia AKT%sT 1991 + 5:00 - AKTT 1991 Dec 16 # independence + 5:00 RussiaAsia AQT%sT 2005 Mar 15 # Aqtobe Time + 5:00 - AQTT +Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2 + 4:00 - FORT 1930 Jun 21 # Fort Shevchenko T + 5:00 - FORT 1963 + 5:00 - SHET 1981 Oct 1 # Shevchenko Time + 6:00 - SHET 1982 Apr 1 + 5:00 RussiaAsia SHE%sT 1991 + 5:00 - SHET 1991 Dec 16 # independence + 5:00 RussiaAsia AQT%sT 1995 Mar lastSun 2:00 # Aqtau Time + 4:00 RussiaAsia AQT%sT 2005 Mar 15 + 5:00 - AQTT +Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk + 4:00 - URAT 1930 Jun 21 # Ural'sk time + 5:00 - URAT 1981 Apr 1 + 5:00 1:00 URAST 1981 Oct 1 + 6:00 - URAT 1982 Apr 1 + 5:00 RussiaAsia URA%sT 1989 Mar 26 2:00 + 4:00 RussiaAsia URA%sT 1991 + 4:00 - URAT 1991 Dec 16 # independence + 4:00 RussiaAsia ORA%sT 2005 Mar 15 # Oral Time + 5:00 - ORAT +Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 S +Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 - +Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 S +Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 - +Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2 + 5:00 - FRUT 1930 Jun 21 # Frunze Time + 6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s + 5:00 1:00 FRUST 1991 Aug 31 2:00 # independence + 5:00 Kyrgyz KG%sT 2005 Aug 12 # Kyrgyzstan Time + 6:00 - KGT +Rule ROK 1960 only - May 15 0:00 1:00 D +Rule ROK 1960 only - Sep 13 0:00 0 S +Rule ROK 1987 1988 - May Sun>=8 0:00 1:00 D +Rule ROK 1987 1988 - Oct Sun>=8 0:00 0 S +Zone Asia/Seoul 8:27:52 - LMT 1890 + 8:30 - KST 1904 Dec + 9:00 - KST 1928 + 8:30 - KST 1932 + 9:00 - KST 1954 Mar 21 + 8:00 ROK K%sT 1961 Aug 10 + 8:30 - KST 1968 Oct + 9:00 ROK K%sT +Zone Asia/Pyongyang 8:23:00 - LMT 1890 + 8:30 - KST 1904 Dec + 9:00 - KST 1928 + 8:30 - KST 1932 + 9:00 - KST 1954 Mar 21 + 8:00 - KST 1961 Aug 10 + 9:00 - KST +Zone Asia/Kuwait 3:11:56 - LMT 1950 + 3:00 - AST +Zone Asia/Vientiane 6:50:24 - LMT 1906 Jun 9 # or Viangchan + 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT? + 7:00 - ICT 1912 May + 8:00 - ICT 1931 May + 7:00 - ICT +Rule Lebanon 1920 only - Mar 28 0:00 1:00 S +Rule Lebanon 1920 only - Oct 25 0:00 0 - +Rule Lebanon 1921 only - Apr 3 0:00 1:00 S +Rule Lebanon 1921 only - Oct 3 0:00 0 - +Rule Lebanon 1922 only - Mar 26 0:00 1:00 S +Rule Lebanon 1922 only - Oct 8 0:00 0 - +Rule Lebanon 1923 only - Apr 22 0:00 1:00 S +Rule Lebanon 1923 only - Sep 16 0:00 0 - +Rule Lebanon 1957 1961 - May 1 0:00 1:00 S +Rule Lebanon 1957 1961 - Oct 1 0:00 0 - +Rule Lebanon 1972 only - Jun 22 0:00 1:00 S +Rule Lebanon 1972 1977 - Oct 1 0:00 0 - +Rule Lebanon 1973 1977 - May 1 0:00 1:00 S +Rule Lebanon 1978 only - Apr 30 0:00 1:00 S +Rule Lebanon 1978 only - Sep 30 0:00 0 - +Rule Lebanon 1984 1987 - May 1 0:00 1:00 S +Rule Lebanon 1984 1991 - Oct 16 0:00 0 - +Rule Lebanon 1988 only - Jun 1 0:00 1:00 S +Rule Lebanon 1989 only - May 10 0:00 1:00 S +Rule Lebanon 1990 1992 - May 1 0:00 1:00 S +Rule Lebanon 1992 only - Oct 4 0:00 0 - +Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S +Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 - +Rule Lebanon 1999 max - Oct lastSun 0:00 0 - +Zone Asia/Beirut 2:22:00 - LMT 1880 + 2:00 Lebanon EE%sT +Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer +Rule NBorneo 1935 1941 - Dec 14 0:00 0 - +Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1 + 6:55:25 - SMT 1905 Jun 1 # Singapore M.T. + 7:00 - MALT 1933 Jan 1 # Malaya Time + 7:00 0:20 MALST 1936 Jan 1 + 7:20 - MALT 1941 Sep 1 + 7:30 - MALT 1942 Feb 16 + 9:00 - JST 1945 Sep 12 + 7:30 - MALT 1982 Jan 1 + 8:00 - MYT # Malaysia Time +Zone Asia/Kuching 7:21:20 - LMT 1926 Mar + 7:30 - BORT 1933 # Borneo Time + 8:00 NBorneo BOR%sT 1942 Feb 16 + 9:00 - JST 1945 Sep 12 + 8:00 - BORT 1982 Jan 1 + 8:00 - MYT +Zone Indian/Maldives 4:54:00 - LMT 1880 # Male + 4:54:00 - MMT 1960 # Male Mean Time + 5:00 - MVT # Maldives Time +Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S +Rule Mongol 1983 only - Oct 1 0:00 0 - +Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S +Rule Mongol 1984 1998 - Sep lastSun 0:00 0 - +Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S +Rule Mongol 2001 2006 - Sep lastSat 2:00 0 - +Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S +Zone Asia/Hovd 6:06:36 - LMT 1905 Aug + 6:00 - HOVT 1978 # Hovd Time + 7:00 Mongol HOV%sT +Zone Asia/Ulaanbaatar 7:07:32 - LMT 1905 Aug + 7:00 - ULAT 1978 # Ulaanbaatar Time + 8:00 Mongol ULA%sT +Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug + 7:00 - ULAT 1978 + 8:00 - ULAT 1983 Apr + 9:00 Mongol CHO%sT 2008 Mar 31 # Choibalsan Time + 8:00 Mongol CHO%sT +Zone Asia/Kathmandu 5:41:16 - LMT 1920 + 5:30 - IST 1986 + 5:45 - NPT # Nepal Time +Zone Asia/Muscat 3:54:20 - LMT 1920 + 4:00 - GST +Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S +Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 - +Rule Pakistan 2008 only - Jun 1 0:00 1:00 S +Rule Pakistan 2008 only - Nov 1 0:00 0 - +Rule Pakistan 2009 only - Apr 15 0:00 1:00 S +Rule Pakistan 2009 only - Nov 1 0:00 0 - +Zone Asia/Karachi 4:28:12 - LMT 1907 + 5:30 - IST 1942 Sep + 5:30 1:00 IST 1945 Oct 15 + 5:30 - IST 1951 Sep 30 + 5:00 - KART 1971 Mar 26 # Karachi Time + 5:00 Pakistan PK%sT # Pakistan Time +Rule EgyptAsia 1957 only - May 10 0:00 1:00 S +Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 - +Rule EgyptAsia 1958 only - May 1 0:00 1:00 S +Rule EgyptAsia 1959 1967 - May 1 1:00 1:00 S +Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 - +Rule EgyptAsia 1966 only - Oct 1 3:00 0 - +Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S +Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 - +Rule Palestine 2004 only - Oct 1 1:00 0 - +Rule Palestine 2005 only - Oct 4 2:00 0 - +Rule Palestine 2006 2008 - Apr 1 0:00 1:00 S +Rule Palestine 2006 only - Sep 22 0:00 0 - +Rule Palestine 2007 only - Sep Thu>=8 2:00 0 - +Rule Palestine 2008 only - Aug lastFri 2:00 0 - +Rule Palestine 2009 max - Mar lastFri 0:00 1:00 S +Rule Palestine 2009 max - Sep lastMon 2:00 0 - +Zone Asia/Gaza 2:17:52 - LMT 1900 Oct + 2:00 Zion EET 1948 May 15 + 2:00 EgyptAsia EE%sT 1967 Jun 5 + 2:00 Zion I%sT 1996 + 2:00 Jordan EE%sT 1999 + 2:00 Palestine EE%sT +Rule Phil 1936 only - Nov 1 0:00 1:00 S +Rule Phil 1937 only - Feb 1 0:00 0 - +Rule Phil 1954 only - Apr 12 0:00 1:00 S +Rule Phil 1954 only - Jul 1 0:00 0 - +Rule Phil 1978 only - Mar 22 0:00 1:00 S +Rule Phil 1978 only - Sep 21 0:00 0 - +Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31 + 8:04:00 - LMT 1899 May 11 + 8:00 Phil PH%sT 1942 May + 9:00 - JST 1944 Nov + 8:00 Phil PH%sT +Zone Asia/Qatar 3:26:08 - LMT 1920 # Al Dawhah / Doha + 4:00 - GST 1972 Jun + 3:00 - AST +Zone Asia/Riyadh 3:06:52 - LMT 1950 + 3:00 - AST +Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1 + 6:55:25 - SMT 1905 Jun 1 # Singapore M.T. + 7:00 - MALT 1933 Jan 1 # Malaya Time + 7:00 0:20 MALST 1936 Jan 1 + 7:20 - MALT 1941 Sep 1 + 7:30 - MALT 1942 Feb 16 + 9:00 - JST 1945 Sep 12 + 7:30 - MALT 1965 Aug 9 # independence + 7:30 - SGT 1982 Jan 1 # Singapore Time + 8:00 - SGT +Zone Asia/Colombo 5:19:24 - LMT 1880 + 5:19:32 - MMT 1906 # Moratuwa Mean Time + 5:30 - IST 1942 Jan 5 + 5:30 0:30 IHST 1942 Sep + 5:30 1:00 IST 1945 Oct 16 2:00 + 5:30 - IST 1996 May 25 0:00 + 6:30 - LKT 1996 Oct 26 0:30 + 6:00 - LKT 2006 Apr 15 0:30 + 5:30 - IST +Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S +Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 - +Rule Syria 1962 only - Apr 29 2:00 1:00 S +Rule Syria 1962 only - Oct 1 2:00 0 - +Rule Syria 1963 1965 - May 1 2:00 1:00 S +Rule Syria 1963 only - Sep 30 2:00 0 - +Rule Syria 1964 only - Oct 1 2:00 0 - +Rule Syria 1965 only - Sep 30 2:00 0 - +Rule Syria 1966 only - Apr 24 2:00 1:00 S +Rule Syria 1966 1976 - Oct 1 2:00 0 - +Rule Syria 1967 1978 - May 1 2:00 1:00 S +Rule Syria 1977 1978 - Sep 1 2:00 0 - +Rule Syria 1983 1984 - Apr 9 2:00 1:00 S +Rule Syria 1983 1984 - Oct 1 2:00 0 - +Rule Syria 1986 only - Feb 16 2:00 1:00 S +Rule Syria 1986 only - Oct 9 2:00 0 - +Rule Syria 1987 only - Mar 1 2:00 1:00 S +Rule Syria 1987 1988 - Oct 31 2:00 0 - +Rule Syria 1988 only - Mar 15 2:00 1:00 S +Rule Syria 1989 only - Mar 31 2:00 1:00 S +Rule Syria 1989 only - Oct 1 2:00 0 - +Rule Syria 1990 only - Apr 1 2:00 1:00 S +Rule Syria 1990 only - Sep 30 2:00 0 - +Rule Syria 1991 only - Apr 1 0:00 1:00 S +Rule Syria 1991 1992 - Oct 1 0:00 0 - +Rule Syria 1992 only - Apr 8 0:00 1:00 S +Rule Syria 1993 only - Mar 26 0:00 1:00 S +Rule Syria 1993 only - Sep 25 0:00 0 - +Rule Syria 1994 1996 - Apr 1 0:00 1:00 S +Rule Syria 1994 2005 - Oct 1 0:00 0 - +Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S +Rule Syria 1999 2006 - Apr 1 0:00 1:00 S +Rule Syria 2006 only - Sep 22 0:00 0 - +Rule Syria 2007 only - Mar lastFri 0:00 1:00 S +Rule Syria 2007 only - Nov Fri>=1 0:00 0 - +Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S +Rule Syria 2008 max - Nov 1 0:00 0 - +Rule Syria 2009 max - Mar lastFri 0:00 1:00 S +Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq + 2:00 Syria EE%sT +Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2 + 5:00 - DUST 1930 Jun 21 # Dushanbe Time + 6:00 RussiaAsia DUS%sT 1991 Mar 31 2:00s + 5:00 1:00 DUSST 1991 Sep 9 2:00s + 5:00 - TJT # Tajikistan Time +Zone Asia/Bangkok 6:42:04 - LMT 1880 + 6:42:04 - BMT 1920 Apr # Bangkok Mean Time + 7:00 - ICT +Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad + 4:00 - ASHT 1930 Jun 21 # Ashkhabad Time + 5:00 RussiaAsia ASH%sT 1991 Mar 31 2:00 + 4:00 RussiaAsia ASH%sT 1991 Oct 27 # independence + 4:00 RussiaAsia TM%sT 1992 Jan 19 2:00 + 5:00 - TMT +Zone Asia/Dubai 3:41:12 - LMT 1920 + 4:00 - GST +Zone Asia/Samarkand 4:27:12 - LMT 1924 May 2 + 4:00 - SAMT 1930 Jun 21 # Samarkand Time + 5:00 - SAMT 1981 Apr 1 + 5:00 1:00 SAMST 1981 Oct 1 + 6:00 - TAST 1982 Apr 1 # Tashkent Time + 5:00 RussiaAsia SAM%sT 1991 Sep 1 # independence + 5:00 RussiaAsia UZ%sT 1992 + 5:00 - UZT +Zone Asia/Tashkent 4:37:12 - LMT 1924 May 2 + 5:00 - TAST 1930 Jun 21 # Tashkent Time + 6:00 RussiaAsia TAS%sT 1991 Mar 31 2:00 + 5:00 RussiaAsia TAS%sT 1991 Sep 1 # independence + 5:00 RussiaAsia UZ%sT 1992 + 5:00 - UZT +Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jun 9 + 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT? + 7:00 - ICT 1912 May + 8:00 - ICT 1931 May + 7:00 - ICT +Zone Asia/Aden 3:00:48 - LMT 1950 + 3:00 - AST diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/australasia b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/australasia new file mode 100644 index 0000000..1cc398e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/australasia @@ -0,0 +1,299 @@ +Rule Aus 1917 only - Jan 1 0:01 1:00 - +Rule Aus 1917 only - Mar 25 2:00 0 - +Rule Aus 1942 only - Jan 1 2:00 1:00 - +Rule Aus 1942 only - Mar 29 2:00 0 - +Rule Aus 1942 only - Sep 27 2:00 1:00 - +Rule Aus 1943 1944 - Mar lastSun 2:00 0 - +Rule Aus 1943 only - Oct 3 2:00 1:00 - +Zone Australia/Darwin 8:43:20 - LMT 1895 Feb + 9:00 - CST 1899 May + 9:30 Aus CST +Rule AW 1974 only - Oct lastSun 2:00s 1:00 - +Rule AW 1975 only - Mar Sun>=1 2:00s 0 - +Rule AW 1983 only - Oct lastSun 2:00s 1:00 - +Rule AW 1984 only - Mar Sun>=1 2:00s 0 - +Rule AW 1991 only - Nov 17 2:00s 1:00 - +Rule AW 1992 only - Mar Sun>=1 2:00s 0 - +Rule AW 2006 only - Dec 3 2:00s 1:00 - +Rule AW 2007 2009 - Mar lastSun 2:00s 0 - +Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 - +Zone Australia/Perth 7:43:24 - LMT 1895 Dec + 8:00 Aus WST 1943 Jul + 8:00 AW WST +Zone Australia/Eucla 8:35:28 - LMT 1895 Dec + 8:45 Aus CWST 1943 Jul + 8:45 AW CWST +Rule AQ 1971 only - Oct lastSun 2:00s 1:00 - +Rule AQ 1972 only - Feb lastSun 2:00s 0 - +Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 - +Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 - +Rule Holiday 1992 1993 - Oct lastSun 2:00s 1:00 - +Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 - +Zone Australia/Brisbane 10:12:08 - LMT 1895 + 10:00 Aus EST 1971 + 10:00 AQ EST +Zone Australia/Lindeman 9:55:56 - LMT 1895 + 10:00 Aus EST 1971 + 10:00 AQ EST 1992 Jul + 10:00 Holiday EST +Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 - +Rule AS 1986 only - Oct 19 2:00s 1:00 - +Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 - +Rule AS 1972 only - Feb 27 2:00s 0 - +Rule AS 1973 1985 - Mar Sun>=1 2:00s 0 - +Rule AS 1986 1989 - Mar Sun>=15 2:00s 0 - +Rule AS 1990 only - Mar Sun>=18 2:00s 0 - +Rule AS 1991 only - Mar Sun>=1 2:00s 0 - +Rule AS 1992 only - Mar Sun>=18 2:00s 0 - +Rule AS 1993 only - Mar Sun>=1 2:00s 0 - +Rule AS 1994 only - Mar Sun>=18 2:00s 0 - +Rule AS 1995 2005 - Mar lastSun 2:00s 0 - +Rule AS 2006 only - Apr Sun>=1 2:00s 0 - +Rule AS 2007 only - Mar lastSun 2:00s 0 - +Rule AS 2008 max - Apr Sun>=1 2:00s 0 - +Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 - +Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb + 9:00 - CST 1899 May + 9:30 Aus CST 1971 + 9:30 AS CST +Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 - +Rule AT 1968 only - Mar lastSun 2:00s 0 - +Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 - +Rule AT 1969 1971 - Mar Sun>=8 2:00s 0 - +Rule AT 1972 only - Feb lastSun 2:00s 0 - +Rule AT 1973 1981 - Mar Sun>=1 2:00s 0 - +Rule AT 1982 1983 - Mar lastSun 2:00s 0 - +Rule AT 1984 1986 - Mar Sun>=1 2:00s 0 - +Rule AT 1986 only - Oct Sun>=15 2:00s 1:00 - +Rule AT 1987 1990 - Mar Sun>=15 2:00s 0 - +Rule AT 1987 only - Oct Sun>=22 2:00s 1:00 - +Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 - +Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 - +Rule AT 1991 2005 - Mar lastSun 2:00s 0 - +Rule AT 2000 only - Aug lastSun 2:00s 1:00 - +Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 - +Rule AT 2006 only - Apr Sun>=1 2:00s 0 - +Rule AT 2007 only - Mar lastSun 2:00s 0 - +Rule AT 2008 max - Apr Sun>=1 2:00s 0 - +Zone Australia/Hobart 9:49:16 - LMT 1895 Sep + 10:00 - EST 1916 Oct 1 2:00 + 10:00 1:00 EST 1917 Feb + 10:00 Aus EST 1967 + 10:00 AT EST +Zone Australia/Currie 9:35:28 - LMT 1895 Sep + 10:00 - EST 1916 Oct 1 2:00 + 10:00 1:00 EST 1917 Feb + 10:00 Aus EST 1971 Jul + 10:00 AT EST +Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 - +Rule AV 1972 only - Feb lastSun 2:00s 0 - +Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 - +Rule AV 1986 1990 - Mar Sun>=15 2:00s 0 - +Rule AV 1986 1987 - Oct Sun>=15 2:00s 1:00 - +Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 - +Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 - +Rule AV 1995 2005 - Mar lastSun 2:00s 0 - +Rule AV 2000 only - Aug lastSun 2:00s 1:00 - +Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 - +Rule AV 2006 only - Apr Sun>=1 2:00s 0 - +Rule AV 2007 only - Mar lastSun 2:00s 0 - +Rule AV 2008 max - Apr Sun>=1 2:00s 0 - +Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 - +Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb + 10:00 Aus EST 1971 + 10:00 AV EST +Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 - +Rule AN 1972 only - Feb 27 2:00s 0 - +Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 - +Rule AN 1982 only - Apr Sun>=1 2:00s 0 - +Rule AN 1983 1985 - Mar Sun>=1 2:00s 0 - +Rule AN 1986 1989 - Mar Sun>=15 2:00s 0 - +Rule AN 1986 only - Oct 19 2:00s 1:00 - +Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 - +Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 - +Rule AN 1996 2005 - Mar lastSun 2:00s 0 - +Rule AN 2000 only - Aug lastSun 2:00s 1:00 - +Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 - +Rule AN 2006 only - Apr Sun>=1 2:00s 0 - +Rule AN 2007 only - Mar lastSun 2:00s 0 - +Rule AN 2008 max - Apr Sun>=1 2:00s 0 - +Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 - +Zone Australia/Sydney 10:04:52 - LMT 1895 Feb + 10:00 Aus EST 1971 + 10:00 AN EST +Zone Australia/Broken_Hill 9:25:48 - LMT 1895 Feb + 10:00 - EST 1896 Aug 23 + 9:00 - CST 1899 May + 9:30 Aus CST 1971 + 9:30 AN CST 2000 + 9:30 AS CST +Rule LH 1981 1984 - Oct lastSun 2:00 1:00 - +Rule LH 1982 1985 - Mar Sun>=1 2:00 0 - +Rule LH 1985 only - Oct lastSun 2:00 0:30 - +Rule LH 1986 1989 - Mar Sun>=15 2:00 0 - +Rule LH 1986 only - Oct 19 2:00 0:30 - +Rule LH 1987 1999 - Oct lastSun 2:00 0:30 - +Rule LH 1990 1995 - Mar Sun>=1 2:00 0 - +Rule LH 1996 2005 - Mar lastSun 2:00 0 - +Rule LH 2000 only - Aug lastSun 2:00 0:30 - +Rule LH 2001 2007 - Oct lastSun 2:00 0:30 - +Rule LH 2006 only - Apr Sun>=1 2:00 0 - +Rule LH 2007 only - Mar lastSun 2:00 0 - +Rule LH 2008 max - Apr Sun>=1 2:00 0 - +Rule LH 2008 max - Oct Sun>=1 2:00 0:30 - +Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb + 10:00 - EST 1981 Mar + 10:30 LH LHST +Zone Indian/Christmas 7:02:52 - LMT 1895 Feb + 7:00 - CXT # Christmas Island Time +Rule Cook 1978 only - Nov 12 0:00 0:30 HS +Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 - +Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 HS +Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua + -10:30 - CKT 1978 Nov 12 # Cook Is Time + -10:00 Cook CK%sT +Zone Indian/Cocos 6:27:40 - LMT 1900 + 6:30 - CCT # Cocos Islands Time +Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S +Rule Fiji 1999 2000 - Feb lastSun 3:00 0 - +Zone Pacific/Fiji 11:53:40 - LMT 1915 Oct 26 # Suva + 12:00 Fiji FJ%sT # Fiji Time +Zone Pacific/Gambier -8:59:48 - LMT 1912 Oct # Rikitea + -9:00 - GAMT # Gambier Time +Zone Pacific/Marquesas -9:18:00 - LMT 1912 Oct + -9:30 - MART # Marquesas Time +Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete + -10:00 - TAHT # Tahiti Time +Zone Pacific/Guam -14:21:00 - LMT 1844 Dec 31 + 9:39:00 - LMT 1901 # Agana + 10:00 - GST 2000 Dec 23 # Guam + 10:00 - ChST # Chamorro Standard Time +Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki + 12:00 - GILT # Gilbert Is Time +Zone Pacific/Enderbury -11:24:20 - LMT 1901 + -12:00 - PHOT 1979 Oct # Phoenix Is Time + -11:00 - PHOT 1995 + 13:00 - PHOT +Zone Pacific/Kiritimati -10:29:20 - LMT 1901 + -10:40 - LINT 1979 Oct # Line Is Time + -10:00 - LINT 1995 + 14:00 - LINT +Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31 + 9:43:00 - LMT 1901 + 9:00 - MPT 1969 Oct # N Mariana Is Time + 10:00 - MPT 2000 Dec 23 + 10:00 - ChST # Chamorro Standard Time +Zone Pacific/Majuro 11:24:48 - LMT 1901 + 11:00 - MHT 1969 Oct # Marshall Islands Time + 12:00 - MHT +Zone Pacific/Kwajalein 11:09:20 - LMT 1901 + 11:00 - MHT 1969 Oct + -12:00 - KWAT 1993 Aug 20 # Kwajalein Time + 12:00 - MHT +Zone Pacific/Truk 10:07:08 - LMT 1901 + 10:00 - TRUT # Truk Time +Zone Pacific/Ponape 10:32:52 - LMT 1901 # Kolonia + 11:00 - PONT # Ponape Time +Zone Pacific/Kosrae 10:51:56 - LMT 1901 + 11:00 - KOST 1969 Oct # Kosrae Time + 12:00 - KOST 1999 + 11:00 - KOST +Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe + 11:30 - NRT 1942 Mar 15 # Nauru Time + 9:00 - JST 1944 Aug 15 + 11:30 - NRT 1979 May + 12:00 - NRT +Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 S +Rule NC 1978 1979 - Feb 27 0:00 0 - +Rule NC 1996 only - Dec 1 2:00s 1:00 S +Rule NC 1997 only - Mar 2 2:00s 0 - +Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13 + 11:00 NC NC%sT +Rule NZ 1927 only - Nov 6 2:00 1:00 S +Rule NZ 1928 only - Mar 4 2:00 0 M +Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S +Rule NZ 1929 1933 - Mar Sun>=15 2:00 0 M +Rule NZ 1934 1940 - Apr lastSun 2:00 0 M +Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S +Rule NZ 1946 only - Jan 1 0:00 0 S +Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D +Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D +Rule NZ 1975 only - Feb lastSun 2:00s 0 S +Rule Chatham 1975 only - Feb lastSun 2:45s 0 S +Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D +Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D +Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S +Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S +Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D +Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D +Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D +Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 D +Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S +Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 S +Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D +Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 D +Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S +Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 S +Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2 + 11:30 NZ NZ%sT 1946 Jan 1 + 12:00 NZ NZ%sT +Zone Pacific/Chatham 12:13:48 - LMT 1957 Jan 1 + 12:45 Chatham CHA%sT +Zone Pacific/Niue -11:19:40 - LMT 1901 # Alofi + -11:20 - NUT 1951 # Niue Time + -11:30 - NUT 1978 Oct 1 + -11:00 - NUT +Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston + 11:12 - NMT 1951 # Norfolk Mean Time + 11:30 - NFT # Norfolk Time +Zone Pacific/Palau 8:57:56 - LMT 1901 # Koror + 9:00 - PWT # Palau Time +Zone Pacific/Port_Moresby 9:48:40 - LMT 1880 + 9:48:32 - PMMT 1895 # Port Moresby Mean Time + 10:00 - PGT # Papua New Guinea Time +Zone Pacific/Pitcairn -8:40:20 - LMT 1901 # Adamstown + -8:30 - PNT 1998 Apr 27 00:00 + -8:00 - PST # Pitcairn Standard Time +Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5 + -11:22:48 - LMT 1911 + -11:30 - SAMT 1950 # Samoa Time + -11:00 - NST 1967 Apr # N=Nome + -11:00 - BST 1983 Nov 30 # B=Bering + -11:00 - SST # S=Samoa +Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5 + -11:26:56 - LMT 1911 + -11:30 - SAMT 1950 # Samoa Time + -11:00 - WST # Samoa Time +Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct # Honiara + 11:00 - SBT # Solomon Is Time +Zone Pacific/Fakaofo -11:24:56 - LMT 1901 + -10:00 - TKT # Tokelau Time +Rule Tonga 1999 only - Oct 7 2:00s 1:00 S +Rule Tonga 2000 only - Mar 19 2:00s 0 - +Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S +Rule Tonga 2001 2002 - Jan lastSun 2:00 0 - +Zone Pacific/Tongatapu 12:19:20 - LMT 1901 + 12:20 - TOT 1941 # Tonga Time + 13:00 - TOT 1999 + 13:00 Tonga TO%sT +Zone Pacific/Funafuti 11:56:52 - LMT 1901 + 12:00 - TVT # Tuvalu Time +Zone Pacific/Johnston -10:00 - HST +Zone Pacific/Midway -11:49:28 - LMT 1901 + -11:00 - NST 1956 Jun 3 + -11:00 1:00 NDT 1956 Sep 2 + -11:00 - NST 1967 Apr # N=Nome + -11:00 - BST 1983 Nov 30 # B=Bering + -11:00 - SST # S=Samoa +Zone Pacific/Wake 11:06:28 - LMT 1901 + 12:00 - WAKT # Wake Time +Rule Vanuatu 1983 only - Sep 25 0:00 1:00 S +Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 - +Rule Vanuatu 1984 only - Oct 23 0:00 1:00 S +Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S +Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 - +Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S +Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila + 11:00 Vanuatu VU%sT # Vanuatu Time +Zone Pacific/Wallis 12:15:20 - LMT 1901 + 12:00 - WFT # Wallis & Futuna Time diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/backward b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/backward new file mode 100644 index 0000000..f341a7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/backward @@ -0,0 +1,108 @@ +Link Africa/Asmara Africa/Asmera +Link Africa/Bamako Africa/Timbuktu +Link America/Argentina/Catamarca America/Argentina/ComodRivadavia +Link America/Adak America/Atka +Link America/Argentina/Buenos_Aires America/Buenos_Aires +Link America/Argentina/Catamarca America/Catamarca +Link America/Atikokan America/Coral_Harbour +Link America/Argentina/Cordoba America/Cordoba +Link America/Tijuana America/Ensenada +Link America/Indiana/Indianapolis America/Fort_Wayne +Link America/Indiana/Indianapolis America/Indianapolis +Link America/Argentina/Jujuy America/Jujuy +Link America/Indiana/Knox America/Knox_IN +Link America/Kentucky/Louisville America/Louisville +Link America/Argentina/Mendoza America/Mendoza +Link America/Rio_Branco America/Porto_Acre +Link America/Argentina/Cordoba America/Rosario +Link America/St_Thomas America/Virgin +Link Asia/Ashgabat Asia/Ashkhabad +Link Asia/Chongqing Asia/Chungking +Link Asia/Dhaka Asia/Dacca +Link Asia/Kathmandu Asia/Katmandu +Link Asia/Kolkata Asia/Calcutta +Link Asia/Macau Asia/Macao +Link Asia/Jerusalem Asia/Tel_Aviv +Link Asia/Ho_Chi_Minh Asia/Saigon +Link Asia/Thimphu Asia/Thimbu +Link Asia/Makassar Asia/Ujung_Pandang +Link Asia/Ulaanbaatar Asia/Ulan_Bator +Link Atlantic/Faroe Atlantic/Faeroe +Link Europe/Oslo Atlantic/Jan_Mayen +Link Australia/Sydney Australia/ACT +Link Australia/Sydney Australia/Canberra +Link Australia/Lord_Howe Australia/LHI +Link Australia/Sydney Australia/NSW +Link Australia/Darwin Australia/North +Link Australia/Brisbane Australia/Queensland +Link Australia/Adelaide Australia/South +Link Australia/Hobart Australia/Tasmania +Link Australia/Melbourne Australia/Victoria +Link Australia/Perth Australia/West +Link Australia/Broken_Hill Australia/Yancowinna +Link America/Rio_Branco Brazil/Acre +Link America/Noronha Brazil/DeNoronha +Link America/Sao_Paulo Brazil/East +Link America/Manaus Brazil/West +Link America/Halifax Canada/Atlantic +Link America/Winnipeg Canada/Central +Link America/Regina Canada/East-Saskatchewan +Link America/Toronto Canada/Eastern +Link America/Edmonton Canada/Mountain +Link America/St_Johns Canada/Newfoundland +Link America/Vancouver Canada/Pacific +Link America/Regina Canada/Saskatchewan +Link America/Whitehorse Canada/Yukon +Link America/Santiago Chile/Continental +Link Pacific/Easter Chile/EasterIsland +Link America/Havana Cuba +Link Africa/Cairo Egypt +Link Europe/Dublin Eire +Link Europe/London Europe/Belfast +Link Europe/Chisinau Europe/Tiraspol +Link Europe/London GB +Link Europe/London GB-Eire +Link Etc/GMT GMT+0 +Link Etc/GMT GMT-0 +Link Etc/GMT GMT0 +Link Etc/GMT Greenwich +Link Asia/Hong_Kong Hongkong +Link Atlantic/Reykjavik Iceland +Link Asia/Tehran Iran +Link Asia/Jerusalem Israel +Link America/Jamaica Jamaica +Link Asia/Tokyo Japan +Link Pacific/Kwajalein Kwajalein +Link Africa/Tripoli Libya +Link America/Tijuana Mexico/BajaNorte +Link America/Mazatlan Mexico/BajaSur +Link America/Mexico_City Mexico/General +Link Pacific/Auckland NZ +Link Pacific/Chatham NZ-CHAT +Link America/Denver Navajo +Link Asia/Shanghai PRC +Link Pacific/Pago_Pago Pacific/Samoa +Link Pacific/Truk Pacific/Yap +Link Europe/Warsaw Poland +Link Europe/Lisbon Portugal +Link Asia/Taipei ROC +Link Asia/Seoul ROK +Link Asia/Singapore Singapore +Link Europe/Istanbul Turkey +Link Etc/UCT UCT +Link America/Anchorage US/Alaska +Link America/Adak US/Aleutian +Link America/Phoenix US/Arizona +Link America/Chicago US/Central +Link America/Indiana/Indianapolis US/East-Indiana +Link America/New_York US/Eastern +Link Pacific/Honolulu US/Hawaii +Link America/Indiana/Knox US/Indiana-Starke +Link America/Detroit US/Michigan +Link America/Denver US/Mountain +Link America/Los_Angeles US/Pacific +Link Pacific/Pago_Pago US/Samoa +Link Etc/UTC UTC +Link Etc/UTC Universal +Link Europe/Moscow W-SU +Link Etc/UTC Zulu diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/etcetera b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/etcetera new file mode 100644 index 0000000..b459c36 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/etcetera @@ -0,0 +1,36 @@ +Zone Etc/GMT 0 - GMT +Zone Etc/UTC 0 - UTC +Zone Etc/UCT 0 - UCT +Link Etc/GMT GMT +Link Etc/UTC Etc/Universal +Link Etc/UTC Etc/Zulu +Link Etc/GMT Etc/Greenwich +Link Etc/GMT Etc/GMT-0 +Link Etc/GMT Etc/GMT+0 +Link Etc/GMT Etc/GMT0 +Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT +Zone Etc/GMT-13 13 - GMT-13 +Zone Etc/GMT-12 12 - GMT-12 +Zone Etc/GMT-11 11 - GMT-11 +Zone Etc/GMT-10 10 - GMT-10 +Zone Etc/GMT-9 9 - GMT-9 +Zone Etc/GMT-8 8 - GMT-8 +Zone Etc/GMT-7 7 - GMT-7 +Zone Etc/GMT-6 6 - GMT-6 +Zone Etc/GMT-5 5 - GMT-5 +Zone Etc/GMT-4 4 - GMT-4 +Zone Etc/GMT-3 3 - GMT-3 +Zone Etc/GMT-2 2 - GMT-2 +Zone Etc/GMT-1 1 - GMT-1 +Zone Etc/GMT+1 -1 - GMT+1 +Zone Etc/GMT+2 -2 - GMT+2 +Zone Etc/GMT+3 -3 - GMT+3 +Zone Etc/GMT+4 -4 - GMT+4 +Zone Etc/GMT+5 -5 - GMT+5 +Zone Etc/GMT+6 -6 - GMT+6 +Zone Etc/GMT+7 -7 - GMT+7 +Zone Etc/GMT+8 -8 - GMT+8 +Zone Etc/GMT+9 -9 - GMT+9 +Zone Etc/GMT+10 -10 - GMT+10 +Zone Etc/GMT+11 -11 - GMT+11 +Zone Etc/GMT+12 -12 - GMT+12 diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/europe b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/europe new file mode 100644 index 0000000..2e6c61b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/europe @@ -0,0 +1,1045 @@ +Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST +Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT +Rule GB-Eire 1917 only - Apr 8 2:00s 1:00 BST +Rule GB-Eire 1917 only - Sep 17 2:00s 0 GMT +Rule GB-Eire 1918 only - Mar 24 2:00s 1:00 BST +Rule GB-Eire 1918 only - Sep 30 2:00s 0 GMT +Rule GB-Eire 1919 only - Mar 30 2:00s 1:00 BST +Rule GB-Eire 1919 only - Sep 29 2:00s 0 GMT +Rule GB-Eire 1920 only - Mar 28 2:00s 1:00 BST +Rule GB-Eire 1920 only - Oct 25 2:00s 0 GMT +Rule GB-Eire 1921 only - Apr 3 2:00s 1:00 BST +Rule GB-Eire 1921 only - Oct 3 2:00s 0 GMT +Rule GB-Eire 1922 only - Mar 26 2:00s 1:00 BST +Rule GB-Eire 1922 only - Oct 8 2:00s 0 GMT +Rule GB-Eire 1923 only - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1923 1924 - Sep Sun>=16 2:00s 0 GMT +Rule GB-Eire 1924 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1925 1926 - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1925 1938 - Oct Sun>=2 2:00s 0 GMT +Rule GB-Eire 1927 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1928 1929 - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1930 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1931 1932 - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1933 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1934 only - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1935 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1936 1937 - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1938 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1939 only - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1939 only - Nov Sun>=16 2:00s 0 GMT +Rule GB-Eire 1940 only - Feb Sun>=23 2:00s 1:00 BST +Rule GB-Eire 1941 only - May Sun>=2 1:00s 2:00 BDST +Rule GB-Eire 1941 1943 - Aug Sun>=9 1:00s 1:00 BST +Rule GB-Eire 1942 1944 - Apr Sun>=2 1:00s 2:00 BDST +Rule GB-Eire 1944 only - Sep Sun>=16 1:00s 1:00 BST +Rule GB-Eire 1945 only - Apr Mon>=2 1:00s 2:00 BDST +Rule GB-Eire 1945 only - Jul Sun>=9 1:00s 1:00 BST +Rule GB-Eire 1945 1946 - Oct Sun>=2 2:00s 0 GMT +Rule GB-Eire 1946 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1947 only - Mar 16 2:00s 1:00 BST +Rule GB-Eire 1947 only - Apr 13 1:00s 2:00 BDST +Rule GB-Eire 1947 only - Aug 10 1:00s 1:00 BST +Rule GB-Eire 1947 only - Nov 2 2:00s 0 GMT +Rule GB-Eire 1948 only - Mar 14 2:00s 1:00 BST +Rule GB-Eire 1948 only - Oct 31 2:00s 0 GMT +Rule GB-Eire 1949 only - Apr 3 2:00s 1:00 BST +Rule GB-Eire 1949 only - Oct 30 2:00s 0 GMT +Rule GB-Eire 1950 1952 - Apr Sun>=14 2:00s 1:00 BST +Rule GB-Eire 1950 1952 - Oct Sun>=21 2:00s 0 GMT +Rule GB-Eire 1953 only - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1953 1960 - Oct Sun>=2 2:00s 0 GMT +Rule GB-Eire 1954 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1955 1956 - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1957 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1958 1959 - Apr Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1960 only - Apr Sun>=9 2:00s 1:00 BST +Rule GB-Eire 1961 1963 - Mar lastSun 2:00s 1:00 BST +Rule GB-Eire 1961 1968 - Oct Sun>=23 2:00s 0 GMT +Rule GB-Eire 1964 1967 - Mar Sun>=19 2:00s 1:00 BST +Rule GB-Eire 1968 only - Feb 18 2:00s 1:00 BST +Rule GB-Eire 1972 1980 - Mar Sun>=16 2:00s 1:00 BST +Rule GB-Eire 1972 1980 - Oct Sun>=23 2:00s 0 GMT +Rule GB-Eire 1981 1995 - Mar lastSun 1:00u 1:00 BST +Rule GB-Eire 1981 1989 - Oct Sun>=23 1:00u 0 GMT +Rule GB-Eire 1990 1995 - Oct Sun>=22 1:00u 0 GMT +Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s + 0:00 GB-Eire %s 1968 Oct 27 + 1:00 - BST 1971 Oct 31 2:00u + 0:00 GB-Eire %s 1996 + 0:00 EU GMT/BST +Link Europe/London Europe/Jersey +Link Europe/London Europe/Guernsey +Link Europe/London Europe/Isle_of_Man +Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2 + -0:25:21 - DMT 1916 May 21 2:00 + -0:25:21 1:00 IST 1916 Oct 1 2:00s + 0:00 GB-Eire %s 1921 Dec 6 # independence + 0:00 GB-Eire GMT/IST 1940 Feb 25 2:00 + 0:00 1:00 IST 1946 Oct 6 2:00 + 0:00 - GMT 1947 Mar 16 2:00 + 0:00 1:00 IST 1947 Nov 2 2:00 + 0:00 - GMT 1948 Apr 18 2:00 + 0:00 GB-Eire GMT/IST 1968 Oct 27 + 1:00 - IST 1971 Oct 31 2:00u + 0:00 GB-Eire GMT/IST 1996 + 0:00 EU GMT/IST +Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S +Rule EU 1977 only - Sep lastSun 1:00u 0 - +Rule EU 1978 only - Oct 1 1:00u 0 - +Rule EU 1979 1995 - Sep lastSun 1:00u 0 - +Rule EU 1981 max - Mar lastSun 1:00u 1:00 S +Rule EU 1996 max - Oct lastSun 1:00u 0 - +Rule W-Eur 1977 1980 - Apr Sun>=1 1:00s 1:00 S +Rule W-Eur 1977 only - Sep lastSun 1:00s 0 - +Rule W-Eur 1978 only - Oct 1 1:00s 0 - +Rule W-Eur 1979 1995 - Sep lastSun 1:00s 0 - +Rule W-Eur 1981 max - Mar lastSun 1:00s 1:00 S +Rule W-Eur 1996 max - Oct lastSun 1:00s 0 - +Rule C-Eur 1916 only - Apr 30 23:00 1:00 S +Rule C-Eur 1916 only - Oct 1 1:00 0 - +Rule C-Eur 1917 1918 - Apr Mon>=15 2:00s 1:00 S +Rule C-Eur 1917 1918 - Sep Mon>=15 2:00s 0 - +Rule C-Eur 1940 only - Apr 1 2:00s 1:00 S +Rule C-Eur 1942 only - Nov 2 2:00s 0 - +Rule C-Eur 1943 only - Mar 29 2:00s 1:00 S +Rule C-Eur 1943 only - Oct 4 2:00s 0 - +Rule C-Eur 1944 1945 - Apr Mon>=1 2:00s 1:00 S +Rule C-Eur 1944 only - Oct 2 2:00s 0 - +Rule C-Eur 1945 only - Sep 16 2:00s 0 - +Rule C-Eur 1977 1980 - Apr Sun>=1 2:00s 1:00 S +Rule C-Eur 1977 only - Sep lastSun 2:00s 0 - +Rule C-Eur 1978 only - Oct 1 2:00s 0 - +Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 - +Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S +Rule C-Eur 1996 max - Oct lastSun 2:00s 0 - +Rule E-Eur 1977 1980 - Apr Sun>=1 0:00 1:00 S +Rule E-Eur 1977 only - Sep lastSun 0:00 0 - +Rule E-Eur 1978 only - Oct 1 0:00 0 - +Rule E-Eur 1979 1995 - Sep lastSun 0:00 0 - +Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S +Rule E-Eur 1996 max - Oct lastSun 0:00 0 - +Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time +Rule Russia 1917 only - Dec 28 0:00 0 MMT # Moscow Mean Time +Rule Russia 1918 only - May 31 22:00 2:00 MDST # Moscow Double Summer Time +Rule Russia 1918 only - Sep 16 1:00 1:00 MST +Rule Russia 1919 only - May 31 23:00 2:00 MDST +Rule Russia 1919 only - Jul 1 2:00 1:00 S +Rule Russia 1919 only - Aug 16 0:00 0 - +Rule Russia 1921 only - Feb 14 23:00 1:00 S +Rule Russia 1921 only - Mar 20 23:00 2:00 M # Midsummer +Rule Russia 1921 only - Sep 1 0:00 1:00 S +Rule Russia 1921 only - Oct 1 0:00 0 - +Rule Russia 1981 1984 - Apr 1 0:00 1:00 S +Rule Russia 1981 1983 - Oct 1 0:00 0 - +Rule Russia 1984 1991 - Sep lastSun 2:00s 0 - +Rule Russia 1985 1991 - Mar lastSun 2:00s 1:00 S +Rule Russia 1992 only - Mar lastSat 23:00 1:00 S +Rule Russia 1992 only - Sep lastSat 23:00 0 - +Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S +Rule Russia 1993 1995 - Sep lastSun 2:00s 0 - +Rule Russia 1996 max - Oct lastSun 2:00s 0 - +Zone WET 0:00 EU WE%sT +Zone CET 1:00 C-Eur CE%sT +Zone MET 1:00 C-Eur ME%sT +Zone EET 2:00 EU EE%sT +Rule Albania 1940 only - Jun 16 0:00 1:00 S +Rule Albania 1942 only - Nov 2 3:00 0 - +Rule Albania 1943 only - Mar 29 2:00 1:00 S +Rule Albania 1943 only - Apr 10 3:00 0 - +Rule Albania 1974 only - May 4 0:00 1:00 S +Rule Albania 1974 only - Oct 2 0:00 0 - +Rule Albania 1975 only - May 1 0:00 1:00 S +Rule Albania 1975 only - Oct 2 0:00 0 - +Rule Albania 1976 only - May 2 0:00 1:00 S +Rule Albania 1976 only - Oct 3 0:00 0 - +Rule Albania 1977 only - May 8 0:00 1:00 S +Rule Albania 1977 only - Oct 2 0:00 0 - +Rule Albania 1978 only - May 6 0:00 1:00 S +Rule Albania 1978 only - Oct 1 0:00 0 - +Rule Albania 1979 only - May 5 0:00 1:00 S +Rule Albania 1979 only - Sep 30 0:00 0 - +Rule Albania 1980 only - May 3 0:00 1:00 S +Rule Albania 1980 only - Oct 4 0:00 0 - +Rule Albania 1981 only - Apr 26 0:00 1:00 S +Rule Albania 1981 only - Sep 27 0:00 0 - +Rule Albania 1982 only - May 2 0:00 1:00 S +Rule Albania 1982 only - Oct 3 0:00 0 - +Rule Albania 1983 only - Apr 18 0:00 1:00 S +Rule Albania 1983 only - Oct 1 0:00 0 - +Rule Albania 1984 only - Apr 1 0:00 1:00 S +Zone Europe/Tirane 1:19:20 - LMT 1914 + 1:00 - CET 1940 Jun 16 + 1:00 Albania CE%sT 1984 Jul + 1:00 EU CE%sT +Zone Europe/Andorra 0:06:04 - LMT 1901 + 0:00 - WET 1946 Sep 30 + 1:00 - CET 1985 Mar 31 2:00 + 1:00 EU CE%sT +Rule Austria 1920 only - Apr 5 2:00s 1:00 S +Rule Austria 1920 only - Sep 13 2:00s 0 - +Rule Austria 1946 only - Apr 14 2:00s 1:00 S +Rule Austria 1946 1948 - Oct Sun>=1 2:00s 0 - +Rule Austria 1947 only - Apr 6 2:00s 1:00 S +Rule Austria 1948 only - Apr 18 2:00s 1:00 S +Rule Austria 1980 only - Apr 6 0:00 1:00 S +Rule Austria 1980 only - Sep 28 0:00 0 - +Zone Europe/Vienna 1:05:20 - LMT 1893 Apr + 1:00 C-Eur CE%sT 1920 + 1:00 Austria CE%sT 1940 Apr 1 2:00s + 1:00 C-Eur CE%sT 1945 Apr 2 2:00s + 1:00 1:00 CEST 1945 Apr 12 2:00s + 1:00 - CET 1946 + 1:00 Austria CE%sT 1981 + 1:00 EU CE%sT +Zone Europe/Minsk 1:50:16 - LMT 1880 + 1:50 - MMT 1924 May 2 # Minsk Mean Time + 2:00 - EET 1930 Jun 21 + 3:00 - MSK 1941 Jun 28 + 1:00 C-Eur CE%sT 1944 Jul 3 + 3:00 Russia MSK/MSD 1990 + 3:00 - MSK 1991 Mar 31 2:00s + 2:00 1:00 EEST 1991 Sep 29 2:00s + 2:00 - EET 1992 Mar 29 0:00s + 2:00 1:00 EEST 1992 Sep 27 0:00s + 2:00 Russia EE%sT +Rule Belgium 1918 only - Mar 9 0:00s 1:00 S +Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 - +Rule Belgium 1919 only - Mar 1 23:00s 1:00 S +Rule Belgium 1920 only - Feb 14 23:00s 1:00 S +Rule Belgium 1920 only - Oct 23 23:00s 0 - +Rule Belgium 1921 only - Mar 14 23:00s 1:00 S +Rule Belgium 1921 only - Oct 25 23:00s 0 - +Rule Belgium 1922 only - Mar 25 23:00s 1:00 S +Rule Belgium 1922 1927 - Oct Sat>=1 23:00s 0 - +Rule Belgium 1923 only - Apr 21 23:00s 1:00 S +Rule Belgium 1924 only - Mar 29 23:00s 1:00 S +Rule Belgium 1925 only - Apr 4 23:00s 1:00 S +Rule Belgium 1926 only - Apr 17 23:00s 1:00 S +Rule Belgium 1927 only - Apr 9 23:00s 1:00 S +Rule Belgium 1928 only - Apr 14 23:00s 1:00 S +Rule Belgium 1928 1938 - Oct Sun>=2 2:00s 0 - +Rule Belgium 1929 only - Apr 21 2:00s 1:00 S +Rule Belgium 1930 only - Apr 13 2:00s 1:00 S +Rule Belgium 1931 only - Apr 19 2:00s 1:00 S +Rule Belgium 1932 only - Apr 3 2:00s 1:00 S +Rule Belgium 1933 only - Mar 26 2:00s 1:00 S +Rule Belgium 1934 only - Apr 8 2:00s 1:00 S +Rule Belgium 1935 only - Mar 31 2:00s 1:00 S +Rule Belgium 1936 only - Apr 19 2:00s 1:00 S +Rule Belgium 1937 only - Apr 4 2:00s 1:00 S +Rule Belgium 1938 only - Mar 27 2:00s 1:00 S +Rule Belgium 1939 only - Apr 16 2:00s 1:00 S +Rule Belgium 1939 only - Nov 19 2:00s 0 - +Rule Belgium 1940 only - Feb 25 2:00s 1:00 S +Rule Belgium 1944 only - Sep 17 2:00s 0 - +Rule Belgium 1945 only - Apr 2 2:00s 1:00 S +Rule Belgium 1945 only - Sep 16 2:00s 0 - +Rule Belgium 1946 only - May 19 2:00s 1:00 S +Rule Belgium 1946 only - Oct 7 2:00s 0 - +Zone Europe/Brussels 0:17:30 - LMT 1880 + 0:17:30 - BMT 1892 May 1 12:00 # Brussels MT + 0:00 - WET 1914 Nov 8 + 1:00 - CET 1916 May 1 0:00 + 1:00 C-Eur CE%sT 1918 Nov 11 11:00u + 0:00 Belgium WE%sT 1940 May 20 2:00s + 1:00 C-Eur CE%sT 1944 Sep 3 + 1:00 Belgium CE%sT 1977 + 1:00 EU CE%sT +Rule Bulg 1979 only - Mar 31 23:00 1:00 S +Rule Bulg 1979 only - Oct 1 1:00 0 - +Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S +Rule Bulg 1980 only - Sep 29 1:00 0 - +Rule Bulg 1981 only - Sep 27 2:00 0 - +Zone Europe/Sofia 1:33:16 - LMT 1880 + 1:56:56 - IMT 1894 Nov 30 # Istanbul MT? + 2:00 - EET 1942 Nov 2 3:00 + 1:00 C-Eur CE%sT 1945 + 1:00 - CET 1945 Apr 2 3:00 + 2:00 - EET 1979 Mar 31 23:00 + 2:00 Bulg EE%sT 1982 Sep 26 2:00 + 2:00 C-Eur EE%sT 1991 + 2:00 E-Eur EE%sT 1997 + 2:00 EU EE%sT +Rule Czech 1945 only - Apr 8 2:00s 1:00 S +Rule Czech 1945 only - Nov 18 2:00s 0 - +Rule Czech 1946 only - May 6 2:00s 1:00 S +Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 - +Rule Czech 1947 only - Apr 20 2:00s 1:00 S +Rule Czech 1948 only - Apr 18 2:00s 1:00 S +Rule Czech 1949 only - Apr 9 2:00s 1:00 S +Zone Europe/Prague 0:57:44 - LMT 1850 + 0:57:44 - PMT 1891 Oct # Prague Mean Time + 1:00 C-Eur CE%sT 1944 Sep 17 2:00s + 1:00 Czech CE%sT 1979 + 1:00 EU CE%sT +Rule Denmark 1916 only - May 14 23:00 1:00 S +Rule Denmark 1916 only - Sep 30 23:00 0 - +Rule Denmark 1940 only - May 15 0:00 1:00 S +Rule Denmark 1945 only - Apr 2 2:00s 1:00 S +Rule Denmark 1945 only - Aug 15 2:00s 0 - +Rule Denmark 1946 only - May 1 2:00s 1:00 S +Rule Denmark 1946 only - Sep 1 2:00s 0 - +Rule Denmark 1947 only - May 4 2:00s 1:00 S +Rule Denmark 1947 only - Aug 10 2:00s 0 - +Rule Denmark 1948 only - May 9 2:00s 1:00 S +Rule Denmark 1948 only - Aug 8 2:00s 0 - +Zone Europe/Copenhagen 0:50:20 - LMT 1890 + 0:50:20 - CMT 1894 Jan 1 # Copenhagen MT + 1:00 Denmark CE%sT 1942 Nov 2 2:00s + 1:00 C-Eur CE%sT 1945 Apr 2 2:00 + 1:00 Denmark CE%sT 1980 + 1:00 EU CE%sT +Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Torshavn + 0:00 - WET 1981 + 0:00 EU WE%sT +Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D +Rule Thule 1991 1992 - Sep lastSun 2:00 0 S +Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D +Rule Thule 1993 2006 - Oct lastSun 2:00 0 S +Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D +Rule Thule 2007 max - Nov Sun>=1 2:00 0 S +Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28 + -3:00 - WGT 1980 Apr 6 2:00 + -3:00 EU WG%sT 1996 + 0:00 - GMT +Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit + -2:00 - CGT 1980 Apr 6 2:00 + -2:00 C-Eur CG%sT 1981 Mar 29 + -1:00 EU EG%sT +Zone America/Godthab -3:26:56 - LMT 1916 Jul 28 # Nuuk + -3:00 - WGT 1980 Apr 6 2:00 + -3:00 EU WG%sT +Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik air base + -4:00 Thule A%sT +Zone Europe/Tallinn 1:39:00 - LMT 1880 + 1:39:00 - TMT 1918 Feb # Tallinn Mean Time + 1:00 C-Eur CE%sT 1919 Jul + 1:39:00 - TMT 1921 May + 2:00 - EET 1940 Aug 6 + 3:00 - MSK 1941 Sep 15 + 1:00 C-Eur CE%sT 1944 Sep 22 + 3:00 Russia MSK/MSD 1989 Mar 26 2:00s + 2:00 1:00 EEST 1989 Sep 24 2:00s + 2:00 C-Eur EE%sT 1998 Sep 22 + 2:00 EU EE%sT 1999 Nov 1 + 2:00 - EET 2002 Feb 21 + 2:00 EU EE%sT +Rule Finland 1942 only - Apr 3 0:00 1:00 S +Rule Finland 1942 only - Oct 3 0:00 0 - +Zone Europe/Helsinki 1:39:52 - LMT 1878 May 31 + 1:39:52 - HMT 1921 May # Helsinki Mean Time + 2:00 Finland EE%sT 1981 Mar 29 2:00 + 2:00 EU EE%sT +Link Europe/Helsinki Europe/Mariehamn +Rule France 1916 only - Jun 14 23:00s 1:00 S +Rule France 1916 1919 - Oct Sun>=1 23:00s 0 - +Rule France 1917 only - Mar 24 23:00s 1:00 S +Rule France 1918 only - Mar 9 23:00s 1:00 S +Rule France 1919 only - Mar 1 23:00s 1:00 S +Rule France 1920 only - Feb 14 23:00s 1:00 S +Rule France 1920 only - Oct 23 23:00s 0 - +Rule France 1921 only - Mar 14 23:00s 1:00 S +Rule France 1921 only - Oct 25 23:00s 0 - +Rule France 1922 only - Mar 25 23:00s 1:00 S +Rule France 1922 1938 - Oct Sat>=1 23:00s 0 - +Rule France 1923 only - May 26 23:00s 1:00 S +Rule France 1924 only - Mar 29 23:00s 1:00 S +Rule France 1925 only - Apr 4 23:00s 1:00 S +Rule France 1926 only - Apr 17 23:00s 1:00 S +Rule France 1927 only - Apr 9 23:00s 1:00 S +Rule France 1928 only - Apr 14 23:00s 1:00 S +Rule France 1929 only - Apr 20 23:00s 1:00 S +Rule France 1930 only - Apr 12 23:00s 1:00 S +Rule France 1931 only - Apr 18 23:00s 1:00 S +Rule France 1932 only - Apr 2 23:00s 1:00 S +Rule France 1933 only - Mar 25 23:00s 1:00 S +Rule France 1934 only - Apr 7 23:00s 1:00 S +Rule France 1935 only - Mar 30 23:00s 1:00 S +Rule France 1936 only - Apr 18 23:00s 1:00 S +Rule France 1937 only - Apr 3 23:00s 1:00 S +Rule France 1938 only - Mar 26 23:00s 1:00 S +Rule France 1939 only - Apr 15 23:00s 1:00 S +Rule France 1939 only - Nov 18 23:00s 0 - +Rule France 1940 only - Feb 25 2:00 1:00 S +Rule France 1941 only - May 5 0:00 2:00 M # Midsummer +Rule France 1941 only - Oct 6 0:00 1:00 S +Rule France 1942 only - Mar 9 0:00 2:00 M +Rule France 1942 only - Nov 2 3:00 1:00 S +Rule France 1943 only - Mar 29 2:00 2:00 M +Rule France 1943 only - Oct 4 3:00 1:00 S +Rule France 1944 only - Apr 3 2:00 2:00 M +Rule France 1944 only - Oct 8 1:00 1:00 S +Rule France 1945 only - Apr 2 2:00 2:00 M +Rule France 1945 only - Sep 16 3:00 0 - +Rule France 1976 only - Mar 28 1:00 1:00 S +Rule France 1976 only - Sep 26 1:00 0 - +Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01 + 0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT + 0:00 France WE%sT 1940 Jun 14 23:00 + 1:00 C-Eur CE%sT 1944 Aug 25 + 0:00 France WE%sT 1945 Sep 16 3:00 + 1:00 France CE%sT 1977 + 1:00 EU CE%sT +Rule Germany 1946 only - Apr 14 2:00s 1:00 S +Rule Germany 1946 only - Oct 7 2:00s 0 - +Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 - +Rule Germany 1947 only - Apr 6 3:00s 1:00 S +Rule Germany 1947 only - May 11 2:00s 2:00 M +Rule Germany 1947 only - Jun 29 3:00 1:00 S +Rule Germany 1948 only - Apr 18 2:00s 1:00 S +Rule Germany 1949 only - Apr 10 2:00s 1:00 S +Rule SovietZone 1945 only - May 24 2:00 2:00 M # Midsummer +Rule SovietZone 1945 only - Sep 24 3:00 1:00 S +Rule SovietZone 1945 only - Nov 18 2:00s 0 - +Zone Europe/Berlin 0:53:28 - LMT 1893 Apr + 1:00 C-Eur CE%sT 1945 May 24 2:00 + 1:00 SovietZone CE%sT 1946 + 1:00 Germany CE%sT 1980 + 1:00 EU CE%sT +Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s + 0:00 GB-Eire %s 1957 Apr 14 2:00 + 1:00 - CET 1982 + 1:00 EU CE%sT +Rule Greece 1932 only - Jul 7 0:00 1:00 S +Rule Greece 1932 only - Sep 1 0:00 0 - +Rule Greece 1941 only - Apr 7 0:00 1:00 S +Rule Greece 1942 only - Nov 2 3:00 0 - +Rule Greece 1943 only - Mar 30 0:00 1:00 S +Rule Greece 1943 only - Oct 4 0:00 0 - +Rule Greece 1952 only - Jul 1 0:00 1:00 S +Rule Greece 1952 only - Nov 2 0:00 0 - +Rule Greece 1975 only - Apr 12 0:00s 1:00 S +Rule Greece 1975 only - Nov 26 0:00s 0 - +Rule Greece 1976 only - Apr 11 2:00s 1:00 S +Rule Greece 1976 only - Oct 10 2:00s 0 - +Rule Greece 1977 1978 - Apr Sun>=1 2:00s 1:00 S +Rule Greece 1977 only - Sep 26 2:00s 0 - +Rule Greece 1978 only - Sep 24 4:00 0 - +Rule Greece 1979 only - Apr 1 9:00 1:00 S +Rule Greece 1979 only - Sep 29 2:00 0 - +Rule Greece 1980 only - Apr 1 0:00 1:00 S +Rule Greece 1980 only - Sep 28 0:00 0 - +Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14 + 1:34:52 - AMT 1916 Jul 28 0:01 # Athens MT + 2:00 Greece EE%sT 1941 Apr 30 + 1:00 Greece CE%sT 1944 Apr 4 + 2:00 Greece EE%sT 1981 + # Shanks & Pottenger say it switched to C-Eur in 1981; + # go with EU instead, since Greece joined it on Jan 1. + 2:00 EU EE%sT +Rule Hungary 1918 only - Apr 1 3:00 1:00 S +Rule Hungary 1918 only - Sep 29 3:00 0 - +Rule Hungary 1919 only - Apr 15 3:00 1:00 S +Rule Hungary 1919 only - Sep 15 3:00 0 - +Rule Hungary 1920 only - Apr 5 3:00 1:00 S +Rule Hungary 1920 only - Sep 30 3:00 0 - +Rule Hungary 1945 only - May 1 23:00 1:00 S +Rule Hungary 1945 only - Nov 3 0:00 0 - +Rule Hungary 1946 only - Mar 31 2:00s 1:00 S +Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 - +Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S +Rule Hungary 1950 only - Apr 17 2:00s 1:00 S +Rule Hungary 1950 only - Oct 23 2:00s 0 - +Rule Hungary 1954 1955 - May 23 0:00 1:00 S +Rule Hungary 1954 1955 - Oct 3 0:00 0 - +Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S +Rule Hungary 1956 only - Sep lastSun 0:00 0 - +Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S +Rule Hungary 1957 only - Sep lastSun 3:00 0 - +Rule Hungary 1980 only - Apr 6 1:00 1:00 S +Zone Europe/Budapest 1:16:20 - LMT 1890 Oct + 1:00 C-Eur CE%sT 1918 + 1:00 Hungary CE%sT 1941 Apr 6 2:00 + 1:00 C-Eur CE%sT 1945 + 1:00 Hungary CE%sT 1980 Sep 28 2:00s + 1:00 EU CE%sT +Rule Iceland 1917 1918 - Feb 19 23:00 1:00 S +Rule Iceland 1917 only - Oct 21 1:00 0 - +Rule Iceland 1918 only - Nov 16 1:00 0 - +Rule Iceland 1939 only - Apr 29 23:00 1:00 S +Rule Iceland 1939 only - Nov 29 2:00 0 - +Rule Iceland 1940 only - Feb 25 2:00 1:00 S +Rule Iceland 1940 only - Nov 3 2:00 0 - +Rule Iceland 1941 only - Mar 2 1:00s 1:00 S +Rule Iceland 1941 only - Nov 2 1:00s 0 - +Rule Iceland 1942 only - Mar 8 1:00s 1:00 S +Rule Iceland 1942 only - Oct 25 1:00s 0 - +Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 S +Rule Iceland 1943 1948 - Oct Sun>=22 1:00s 0 - +Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 S +Rule Iceland 1949 only - Oct 30 1:00s 0 - +Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 - +Rule Iceland 1967 only - Oct 29 1:00s 0 - +Zone Atlantic/Reykjavik -1:27:24 - LMT 1837 + -1:27:48 - RMT 1908 # Reykjavik Mean Time? + -1:00 Iceland IS%sT 1968 Apr 7 1:00s + 0:00 - GMT +Rule Italy 1916 only - Jun 3 0:00s 1:00 S +Rule Italy 1916 only - Oct 1 0:00s 0 - +Rule Italy 1917 only - Apr 1 0:00s 1:00 S +Rule Italy 1917 only - Sep 30 0:00s 0 - +Rule Italy 1918 only - Mar 10 0:00s 1:00 S +Rule Italy 1918 1919 - Oct Sun>=1 0:00s 0 - +Rule Italy 1919 only - Mar 2 0:00s 1:00 S +Rule Italy 1920 only - Mar 21 0:00s 1:00 S +Rule Italy 1920 only - Sep 19 0:00s 0 - +Rule Italy 1940 only - Jun 15 0:00s 1:00 S +Rule Italy 1944 only - Sep 17 0:00s 0 - +Rule Italy 1945 only - Apr 2 2:00 1:00 S +Rule Italy 1945 only - Sep 15 0:00s 0 - +Rule Italy 1946 only - Mar 17 2:00s 1:00 S +Rule Italy 1946 only - Oct 6 2:00s 0 - +Rule Italy 1947 only - Mar 16 0:00s 1:00 S +Rule Italy 1947 only - Oct 5 0:00s 0 - +Rule Italy 1948 only - Feb 29 2:00s 1:00 S +Rule Italy 1948 only - Oct 3 2:00s 0 - +Rule Italy 1966 1968 - May Sun>=22 0:00 1:00 S +Rule Italy 1966 1969 - Sep Sun>=22 0:00 0 - +Rule Italy 1969 only - Jun 1 0:00 1:00 S +Rule Italy 1970 only - May 31 0:00 1:00 S +Rule Italy 1970 only - Sep lastSun 0:00 0 - +Rule Italy 1971 1972 - May Sun>=22 0:00 1:00 S +Rule Italy 1971 only - Sep lastSun 1:00 0 - +Rule Italy 1972 only - Oct 1 0:00 0 - +Rule Italy 1973 only - Jun 3 0:00 1:00 S +Rule Italy 1973 1974 - Sep lastSun 0:00 0 - +Rule Italy 1974 only - May 26 0:00 1:00 S +Rule Italy 1975 only - Jun 1 0:00s 1:00 S +Rule Italy 1975 1977 - Sep lastSun 0:00s 0 - +Rule Italy 1976 only - May 30 0:00s 1:00 S +Rule Italy 1977 1979 - May Sun>=22 0:00s 1:00 S +Rule Italy 1978 only - Oct 1 0:00s 0 - +Rule Italy 1979 only - Sep 30 0:00s 0 - +Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22 + 0:49:56 - RMT 1893 Nov 1 0:00s # Rome Mean + 1:00 Italy CE%sT 1942 Nov 2 2:00s + 1:00 C-Eur CE%sT 1944 Jul + 1:00 Italy CE%sT 1980 + 1:00 EU CE%sT +Link Europe/Rome Europe/Vatican +Link Europe/Rome Europe/San_Marino +Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S +Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 - +Zone Europe/Riga 1:36:24 - LMT 1880 + 1:36:24 - RMT 1918 Apr 15 2:00 #Riga Mean Time + 1:36:24 1:00 LST 1918 Sep 16 3:00 #Latvian Summer + 1:36:24 - RMT 1919 Apr 1 2:00 + 1:36:24 1:00 LST 1919 May 22 3:00 + 1:36:24 - RMT 1926 May 11 + 2:00 - EET 1940 Aug 5 + 3:00 - MSK 1941 Jul + 1:00 C-Eur CE%sT 1944 Oct 13 + 3:00 Russia MSK/MSD 1989 Mar lastSun 2:00s + 2:00 1:00 EEST 1989 Sep lastSun 2:00s + 2:00 Latvia EE%sT 1997 Jan 21 + 2:00 EU EE%sT 2000 Feb 29 + 2:00 - EET 2001 Jan 2 + 2:00 EU EE%sT +Zone Europe/Vaduz 0:38:04 - LMT 1894 Jun + 1:00 - CET 1981 + 1:00 EU CE%sT +Zone Europe/Vilnius 1:41:16 - LMT 1880 + 1:24:00 - WMT 1917 # Warsaw Mean Time + 1:35:36 - KMT 1919 Oct 10 # Kaunas Mean Time + 1:00 - CET 1920 Jul 12 + 2:00 - EET 1920 Oct 9 + 1:00 - CET 1940 Aug 3 + 3:00 - MSK 1941 Jun 24 + 1:00 C-Eur CE%sT 1944 Aug + 3:00 Russia MSK/MSD 1991 Mar 31 2:00s + 2:00 1:00 EEST 1991 Sep 29 2:00s + 2:00 C-Eur EE%sT 1998 + 2:00 - EET 1998 Mar 29 1:00u + 1:00 EU CE%sT 1999 Oct 31 1:00u + 2:00 - EET 2003 Jan 1 + 2:00 EU EE%sT +Rule Lux 1916 only - May 14 23:00 1:00 S +Rule Lux 1916 only - Oct 1 1:00 0 - +Rule Lux 1917 only - Apr 28 23:00 1:00 S +Rule Lux 1917 only - Sep 17 1:00 0 - +Rule Lux 1918 only - Apr Mon>=15 2:00s 1:00 S +Rule Lux 1918 only - Sep Mon>=15 2:00s 0 - +Rule Lux 1919 only - Mar 1 23:00 1:00 S +Rule Lux 1919 only - Oct 5 3:00 0 - +Rule Lux 1920 only - Feb 14 23:00 1:00 S +Rule Lux 1920 only - Oct 24 2:00 0 - +Rule Lux 1921 only - Mar 14 23:00 1:00 S +Rule Lux 1921 only - Oct 26 2:00 0 - +Rule Lux 1922 only - Mar 25 23:00 1:00 S +Rule Lux 1922 only - Oct Sun>=2 1:00 0 - +Rule Lux 1923 only - Apr 21 23:00 1:00 S +Rule Lux 1923 only - Oct Sun>=2 2:00 0 - +Rule Lux 1924 only - Mar 29 23:00 1:00 S +Rule Lux 1924 1928 - Oct Sun>=2 1:00 0 - +Rule Lux 1925 only - Apr 5 23:00 1:00 S +Rule Lux 1926 only - Apr 17 23:00 1:00 S +Rule Lux 1927 only - Apr 9 23:00 1:00 S +Rule Lux 1928 only - Apr 14 23:00 1:00 S +Rule Lux 1929 only - Apr 20 23:00 1:00 S +Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun + 1:00 Lux CE%sT 1918 Nov 25 + 0:00 Lux WE%sT 1929 Oct 6 2:00s + 0:00 Belgium WE%sT 1940 May 14 3:00 + 1:00 C-Eur WE%sT 1944 Sep 18 3:00 + 1:00 Belgium CE%sT 1977 + 1:00 EU CE%sT +Rule Malta 1973 only - Mar 31 0:00s 1:00 S +Rule Malta 1973 only - Sep 29 0:00s 0 - +Rule Malta 1974 only - Apr 21 0:00s 1:00 S +Rule Malta 1974 only - Sep 16 0:00s 0 - +Rule Malta 1975 1979 - Apr Sun>=15 2:00 1:00 S +Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 - +Rule Malta 1980 only - Mar 31 2:00 1:00 S +Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta + 1:00 Italy CE%sT 1942 Nov 2 2:00s + 1:00 C-Eur CE%sT 1945 Apr 2 2:00s + 1:00 Italy CE%sT 1973 Mar 31 + 1:00 Malta CE%sT 1981 + 1:00 EU CE%sT +Zone Europe/Chisinau 1:55:20 - LMT 1880 + 1:55 - CMT 1918 Feb 15 # Chisinau MT + 1:44:24 - BMT 1931 Jul 24 # Bucharest MT + 2:00 Romania EE%sT 1940 Aug 15 + 2:00 1:00 EEST 1941 Jul 17 + 1:00 C-Eur CE%sT 1944 Aug 24 + 3:00 Russia MSK/MSD 1990 + 3:00 - MSK 1990 May 6 + 2:00 - EET 1991 + 2:00 Russia EE%sT 1992 + 2:00 E-Eur EE%sT 1997 + 2:00 EU EE%sT +Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15 + 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time + 0:00 France WE%sT 1945 Sep 16 3:00 + 1:00 France CE%sT 1977 + 1:00 EU CE%sT +Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time +Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time +Rule Neth 1917 only - Apr 16 2:00s 1:00 NST +Rule Neth 1917 only - Sep 17 2:00s 0 AMT +Rule Neth 1918 1921 - Apr Mon>=1 2:00s 1:00 NST +Rule Neth 1918 1921 - Sep lastMon 2:00s 0 AMT +Rule Neth 1922 only - Mar lastSun 2:00s 1:00 NST +Rule Neth 1922 1936 - Oct Sun>=2 2:00s 0 AMT +Rule Neth 1923 only - Jun Fri>=1 2:00s 1:00 NST +Rule Neth 1924 only - Mar lastSun 2:00s 1:00 NST +Rule Neth 1925 only - Jun Fri>=1 2:00s 1:00 NST +Rule Neth 1926 1931 - May 15 2:00s 1:00 NST +Rule Neth 1932 only - May 22 2:00s 1:00 NST +Rule Neth 1933 1936 - May 15 2:00s 1:00 NST +Rule Neth 1937 only - May 22 2:00s 1:00 NST +Rule Neth 1937 only - Jul 1 0:00 1:00 S +Rule Neth 1937 1939 - Oct Sun>=2 2:00s 0 - +Rule Neth 1938 1939 - May 15 2:00s 1:00 S +Rule Neth 1945 only - Apr 2 2:00s 1:00 S +Rule Neth 1945 only - Sep 16 2:00s 0 - +Zone Europe/Amsterdam 0:19:32 - LMT 1835 + 0:19:32 Neth %s 1937 Jul 1 + 0:20 Neth NE%sT 1940 May 16 0:00 # Dutch Time + 1:00 C-Eur CE%sT 1945 Apr 2 2:00 + 1:00 Neth CE%sT 1977 + 1:00 EU CE%sT +Rule Norway 1916 only - May 22 1:00 1:00 S +Rule Norway 1916 only - Sep 30 0:00 0 - +Rule Norway 1945 only - Apr 2 2:00s 1:00 S +Rule Norway 1945 only - Oct 1 2:00s 0 - +Rule Norway 1959 1964 - Mar Sun>=15 2:00s 1:00 S +Rule Norway 1959 1965 - Sep Sun>=15 2:00s 0 - +Rule Norway 1965 only - Apr 25 2:00s 1:00 S +Zone Europe/Oslo 0:43:00 - LMT 1895 Jan 1 + 1:00 Norway CE%sT 1940 Aug 10 23:00 + 1:00 C-Eur CE%sT 1945 Apr 2 2:00 + 1:00 Norway CE%sT 1980 + 1:00 EU CE%sT +Link Europe/Oslo Arctic/Longyearbyen +Rule Poland 1918 1919 - Sep 16 2:00s 0 - +Rule Poland 1919 only - Apr 15 2:00s 1:00 S +Rule Poland 1944 only - Apr 3 2:00s 1:00 S +Rule Poland 1944 only - Oct 4 2:00 0 - +Rule Poland 1945 only - Apr 29 0:00 1:00 S +Rule Poland 1945 only - Nov 1 0:00 0 - +Rule Poland 1946 only - Apr 14 0:00s 1:00 S +Rule Poland 1946 only - Oct 7 2:00s 0 - +Rule Poland 1947 only - May 4 2:00s 1:00 S +Rule Poland 1947 1949 - Oct Sun>=1 2:00s 0 - +Rule Poland 1948 only - Apr 18 2:00s 1:00 S +Rule Poland 1949 only - Apr 10 2:00s 1:00 S +Rule Poland 1957 only - Jun 2 1:00s 1:00 S +Rule Poland 1957 1958 - Sep lastSun 1:00s 0 - +Rule Poland 1958 only - Mar 30 1:00s 1:00 S +Rule Poland 1959 only - May 31 1:00s 1:00 S +Rule Poland 1959 1961 - Oct Sun>=1 1:00s 0 - +Rule Poland 1960 only - Apr 3 1:00s 1:00 S +Rule Poland 1961 1964 - May lastSun 1:00s 1:00 S +Rule Poland 1962 1964 - Sep lastSun 1:00s 0 - +Zone Europe/Warsaw 1:24:00 - LMT 1880 + 1:24:00 - WMT 1915 Aug 5 # Warsaw Mean Time + 1:00 C-Eur CE%sT 1918 Sep 16 3:00 + 2:00 Poland EE%sT 1922 Jun + 1:00 Poland CE%sT 1940 Jun 23 2:00 + 1:00 C-Eur CE%sT 1944 Oct + 1:00 Poland CE%sT 1977 + 1:00 W-Eur CE%sT 1988 + 1:00 EU CE%sT +Rule Port 1916 only - Jun 17 23:00 1:00 S +Rule Port 1916 only - Nov 1 1:00 0 - +Rule Port 1917 only - Feb 28 23:00s 1:00 S +Rule Port 1917 1921 - Oct 14 23:00s 0 - +Rule Port 1918 only - Mar 1 23:00s 1:00 S +Rule Port 1919 only - Feb 28 23:00s 1:00 S +Rule Port 1920 only - Feb 29 23:00s 1:00 S +Rule Port 1921 only - Feb 28 23:00s 1:00 S +Rule Port 1924 only - Apr 16 23:00s 1:00 S +Rule Port 1924 only - Oct 14 23:00s 0 - +Rule Port 1926 only - Apr 17 23:00s 1:00 S +Rule Port 1926 1929 - Oct Sat>=1 23:00s 0 - +Rule Port 1927 only - Apr 9 23:00s 1:00 S +Rule Port 1928 only - Apr 14 23:00s 1:00 S +Rule Port 1929 only - Apr 20 23:00s 1:00 S +Rule Port 1931 only - Apr 18 23:00s 1:00 S +Rule Port 1931 1932 - Oct Sat>=1 23:00s 0 - +Rule Port 1932 only - Apr 2 23:00s 1:00 S +Rule Port 1934 only - Apr 7 23:00s 1:00 S +Rule Port 1934 1938 - Oct Sat>=1 23:00s 0 - +Rule Port 1935 only - Mar 30 23:00s 1:00 S +Rule Port 1936 only - Apr 18 23:00s 1:00 S +Rule Port 1937 only - Apr 3 23:00s 1:00 S +Rule Port 1938 only - Mar 26 23:00s 1:00 S +Rule Port 1939 only - Apr 15 23:00s 1:00 S +Rule Port 1939 only - Nov 18 23:00s 0 - +Rule Port 1940 only - Feb 24 23:00s 1:00 S +Rule Port 1940 1941 - Oct 5 23:00s 0 - +Rule Port 1941 only - Apr 5 23:00s 1:00 S +Rule Port 1942 1945 - Mar Sat>=8 23:00s 1:00 S +Rule Port 1942 only - Apr 25 22:00s 2:00 M # Midsummer +Rule Port 1942 only - Aug 15 22:00s 1:00 S +Rule Port 1942 1945 - Oct Sat>=24 23:00s 0 - +Rule Port 1943 only - Apr 17 22:00s 2:00 M +Rule Port 1943 1945 - Aug Sat>=25 22:00s 1:00 S +Rule Port 1944 1945 - Apr Sat>=21 22:00s 2:00 M +Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S +Rule Port 1946 only - Oct Sat>=1 23:00s 0 - +Rule Port 1947 1949 - Apr Sun>=1 2:00s 1:00 S +Rule Port 1947 1949 - Oct Sun>=1 2:00s 0 - +Rule Port 1951 1965 - Apr Sun>=1 2:00s 1:00 S +Rule Port 1951 1965 - Oct Sun>=1 2:00s 0 - +Rule Port 1977 only - Mar 27 0:00s 1:00 S +Rule Port 1977 only - Sep 25 0:00s 0 - +Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S +Rule Port 1978 only - Oct 1 0:00s 0 - +Rule Port 1979 1982 - Sep lastSun 1:00s 0 - +Rule Port 1980 only - Mar lastSun 0:00s 1:00 S +Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S +Rule Port 1983 only - Mar lastSun 2:00s 1:00 S +Zone Europe/Lisbon -0:36:32 - LMT 1884 + -0:36:32 - LMT 1912 Jan 1 # Lisbon Mean Time + 0:00 Port WE%sT 1966 Apr 3 2:00 + 1:00 - CET 1976 Sep 26 1:00 + 0:00 Port WE%sT 1983 Sep 25 1:00s + 0:00 W-Eur WE%sT 1992 Sep 27 1:00s + 1:00 EU CE%sT 1996 Mar 31 1:00u + 0:00 EU WE%sT +Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada + -1:54:32 - HMT 1911 May 24 # Horta Mean Time + -2:00 Port AZO%sT 1966 Apr 3 2:00 # Azores Time + -1:00 Port AZO%sT 1983 Sep 25 1:00s + -1:00 W-Eur AZO%sT 1992 Sep 27 1:00s + 0:00 EU WE%sT 1993 Mar 28 1:00u + -1:00 EU AZO%sT +Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal + -1:07:36 - FMT 1911 May 24 # Funchal Mean Time + -1:00 Port MAD%sT 1966 Apr 3 2:00 # Madeira Time + 0:00 Port WE%sT 1983 Sep 25 1:00s + 0:00 EU WE%sT +Rule Romania 1932 only - May 21 0:00s 1:00 S +Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 - +Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S +Rule Romania 1979 only - May 27 0:00 1:00 S +Rule Romania 1979 only - Sep lastSun 0:00 0 - +Rule Romania 1980 only - Apr 5 23:00 1:00 S +Rule Romania 1980 only - Sep lastSun 1:00 0 - +Rule Romania 1991 1993 - Mar lastSun 0:00s 1:00 S +Rule Romania 1991 1993 - Sep lastSun 0:00s 0 - +Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct + 1:44:24 - BMT 1931 Jul 24 # Bucharest MT + 2:00 Romania EE%sT 1981 Mar 29 2:00s + 2:00 C-Eur EE%sT 1991 + 2:00 Romania EE%sT 1994 + 2:00 E-Eur EE%sT 1997 + 2:00 EU EE%sT +Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr + 1:00 C-Eur CE%sT 1945 + 2:00 Poland CE%sT 1946 + 3:00 Russia MSK/MSD 1991 Mar 31 2:00s + 2:00 Russia EE%sT +Zone Europe/Moscow 2:30:20 - LMT 1880 + 2:30 - MMT 1916 Jul 3 # Moscow Mean Time + 2:30:48 Russia %s 1919 Jul 1 2:00 + 3:00 Russia MSK/MSD 1922 Oct + 2:00 - EET 1930 Jun 21 + 3:00 Russia MSK/MSD 1991 Mar 31 2:00s + 2:00 Russia EE%sT 1992 Jan 19 2:00s + 3:00 Russia MSK/MSD +Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3 + 3:00 - TSAT 1925 Apr 6 # Tsaritsyn Time + 3:00 - STAT 1930 Jun 21 # Stalingrad Time + 4:00 - STAT 1961 Nov 11 + 4:00 Russia VOL%sT 1989 Mar 26 2:00s # Volgograd T + 3:00 Russia VOL%sT 1991 Mar 31 2:00s + 4:00 - VOLT 1992 Mar 29 2:00s + 3:00 Russia VOL%sT +Zone Europe/Samara 3:20:36 - LMT 1919 Jul 1 2:00 + 3:00 - SAMT 1930 Jun 21 + 4:00 - SAMT 1935 Jan 27 + 4:00 Russia KUY%sT 1989 Mar 26 2:00s # Kuybyshev + 3:00 Russia KUY%sT 1991 Mar 31 2:00s + 2:00 Russia KUY%sT 1991 Sep 29 2:00s + 3:00 - KUYT 1991 Oct 20 3:00 + 4:00 Russia SAM%sT # Samara Time +Zone Asia/Yekaterinburg 4:02:24 - LMT 1919 Jul 15 4:00 + 4:00 - SVET 1930 Jun 21 # Sverdlovsk Time + 5:00 Russia SVE%sT 1991 Mar 31 2:00s + 4:00 Russia SVE%sT 1992 Jan 19 2:00s + 5:00 Russia YEK%sT # Yekaterinburg Time +Zone Asia/Omsk 4:53:36 - LMT 1919 Nov 14 + 5:00 - OMST 1930 Jun 21 # Omsk TIme + 6:00 Russia OMS%sT 1991 Mar 31 2:00s + 5:00 Russia OMS%sT 1992 Jan 19 2:00s + 6:00 Russia OMS%sT +Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00 + 6:00 - NOVT 1930 Jun 21 # Novosibirsk Time + 7:00 Russia NOV%sT 1991 Mar 31 2:00s + 6:00 Russia NOV%sT 1992 Jan 19 2:00s + 7:00 Russia NOV%sT 1993 May 23 # say Shanks & P. + 6:00 Russia NOV%sT +Zone Asia/Krasnoyarsk 6:11:20 - LMT 1920 Jan 6 + 6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time + 7:00 Russia KRA%sT 1991 Mar 31 2:00s + 6:00 Russia KRA%sT 1992 Jan 19 2:00s + 7:00 Russia KRA%sT +Zone Asia/Irkutsk 6:57:20 - LMT 1880 + 6:57:20 - IMT 1920 Jan 25 # Irkutsk Mean Time + 7:00 - IRKT 1930 Jun 21 # Irkutsk Time + 8:00 Russia IRK%sT 1991 Mar 31 2:00s + 7:00 Russia IRK%sT 1992 Jan 19 2:00s + 8:00 Russia IRK%sT +Zone Asia/Yakutsk 8:38:40 - LMT 1919 Dec 15 + 8:00 - YAKT 1930 Jun 21 # Yakutsk Time + 9:00 Russia YAK%sT 1991 Mar 31 2:00s + 8:00 Russia YAK%sT 1992 Jan 19 2:00s + 9:00 Russia YAK%sT +Zone Asia/Vladivostok 8:47:44 - LMT 1922 Nov 15 + 9:00 - VLAT 1930 Jun 21 # Vladivostok Time + 10:00 Russia VLA%sT 1991 Mar 31 2:00s + 9:00 Russia VLA%sST 1992 Jan 19 2:00s + 10:00 Russia VLA%sT +Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23 + 9:00 - CJT 1938 + 9:00 - JST 1945 Aug 25 + 11:00 Russia SAK%sT 1991 Mar 31 2:00s # Sakhalin T. + 10:00 Russia SAK%sT 1992 Jan 19 2:00s + 11:00 Russia SAK%sT 1997 Mar lastSun 2:00s + 10:00 Russia SAK%sT +Zone Asia/Magadan 10:03:12 - LMT 1924 May 2 + 10:00 - MAGT 1930 Jun 21 # Magadan Time + 11:00 Russia MAG%sT 1991 Mar 31 2:00s + 10:00 Russia MAG%sT 1992 Jan 19 2:00s + 11:00 Russia MAG%sT +Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10 + 11:00 - PETT 1930 Jun 21 # P-K Time + 12:00 Russia PET%sT 1991 Mar 31 2:00s + 11:00 Russia PET%sT 1992 Jan 19 2:00s + 12:00 Russia PET%sT +Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2 + 12:00 - ANAT 1930 Jun 21 # Anadyr Time + 13:00 Russia ANA%sT 1982 Apr 1 0:00s + 12:00 Russia ANA%sT 1991 Mar 31 2:00s + 11:00 Russia ANA%sT 1992 Jan 19 2:00s + 12:00 Russia ANA%sT +Zone Europe/Belgrade 1:22:00 - LMT 1884 + 1:00 - CET 1941 Apr 18 23:00 + 1:00 C-Eur CE%sT 1945 + 1:00 - CET 1945 May 8 2:00s + 1:00 1:00 CEST 1945 Sep 16 2:00s + 1:00 - CET 1982 Nov 27 + 1:00 EU CE%sT +Link Europe/Belgrade Europe/Ljubljana # Slovenia +Link Europe/Belgrade Europe/Podgorica # Montenegro +Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina +Link Europe/Belgrade Europe/Skopje # Macedonia +Link Europe/Belgrade Europe/Zagreb # Croatia +Link Europe/Prague Europe/Bratislava +Rule Spain 1917 only - May 5 23:00s 1:00 S +Rule Spain 1917 1919 - Oct 6 23:00s 0 - +Rule Spain 1918 only - Apr 15 23:00s 1:00 S +Rule Spain 1919 only - Apr 5 23:00s 1:00 S +Rule Spain 1924 only - Apr 16 23:00s 1:00 S +Rule Spain 1924 only - Oct 4 23:00s 0 - +Rule Spain 1926 only - Apr 17 23:00s 1:00 S +Rule Spain 1926 1929 - Oct Sat>=1 23:00s 0 - +Rule Spain 1927 only - Apr 9 23:00s 1:00 S +Rule Spain 1928 only - Apr 14 23:00s 1:00 S +Rule Spain 1929 only - Apr 20 23:00s 1:00 S +Rule Spain 1937 only - May 22 23:00s 1:00 S +Rule Spain 1937 1939 - Oct Sat>=1 23:00s 0 - +Rule Spain 1938 only - Mar 22 23:00s 1:00 S +Rule Spain 1939 only - Apr 15 23:00s 1:00 S +Rule Spain 1940 only - Mar 16 23:00s 1:00 S +Rule Spain 1942 only - May 2 22:00s 2:00 M # Midsummer +Rule Spain 1942 only - Sep 1 22:00s 1:00 S +Rule Spain 1943 1946 - Apr Sat>=13 22:00s 2:00 M +Rule Spain 1943 only - Oct 3 22:00s 1:00 S +Rule Spain 1944 only - Oct 10 22:00s 1:00 S +Rule Spain 1945 only - Sep 30 1:00 1:00 S +Rule Spain 1946 only - Sep 30 0:00 0 - +Rule Spain 1949 only - Apr 30 23:00 1:00 S +Rule Spain 1949 only - Sep 30 1:00 0 - +Rule Spain 1974 1975 - Apr Sat>=13 23:00 1:00 S +Rule Spain 1974 1975 - Oct Sun>=1 1:00 0 - +Rule Spain 1976 only - Mar 27 23:00 1:00 S +Rule Spain 1976 1977 - Sep lastSun 1:00 0 - +Rule Spain 1977 1978 - Apr 2 23:00 1:00 S +Rule Spain 1978 only - Oct 1 1:00 0 - +Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S +Rule SpainAfrica 1967 only - Oct 1 0:00 0 - +Rule SpainAfrica 1974 only - Jun 24 0:00 1:00 S +Rule SpainAfrica 1974 only - Sep 1 0:00 0 - +Rule SpainAfrica 1976 1977 - May 1 0:00 1:00 S +Rule SpainAfrica 1976 only - Aug 1 0:00 0 - +Rule SpainAfrica 1977 only - Sep 28 0:00 0 - +Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S +Rule SpainAfrica 1978 only - Aug 4 0:00 0 - +Zone Europe/Madrid -0:14:44 - LMT 1901 Jan 1 0:00s + 0:00 Spain WE%sT 1946 Sep 30 + 1:00 Spain CE%sT 1979 + 1:00 EU CE%sT +Zone Africa/Ceuta -0:21:16 - LMT 1901 + 0:00 - WET 1918 May 6 23:00 + 0:00 1:00 WEST 1918 Oct 7 23:00 + 0:00 - WET 1924 + 0:00 Spain WE%sT 1929 + 0:00 SpainAfrica WE%sT 1984 Mar 16 + 1:00 - CET 1986 + 1:00 EU CE%sT +Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C. + -1:00 - CANT 1946 Sep 30 1:00 # Canaries Time + 0:00 - WET 1980 Apr 6 0:00s + 0:00 1:00 WEST 1980 Sep 28 0:00s + 0:00 EU WE%sT +Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1 + 1:00:14 - SET 1900 Jan 1 # Swedish Time + 1:00 - CET 1916 May 14 23:00 + 1:00 1:00 CEST 1916 Oct 1 01:00 + 1:00 - CET 1980 + 1:00 EU CE%sT +Rule Swiss 1941 1942 - May Mon>=1 1:00 1:00 S +Rule Swiss 1941 1942 - Oct Mon>=1 2:00 0 - +Zone Europe/Zurich 0:34:08 - LMT 1848 Sep 12 + 0:29:44 - BMT 1894 Jun # Bern Mean Time + 1:00 Swiss CE%sT 1981 + 1:00 EU CE%sT +Rule Turkey 1916 only - May 1 0:00 1:00 S +Rule Turkey 1916 only - Oct 1 0:00 0 - +Rule Turkey 1920 only - Mar 28 0:00 1:00 S +Rule Turkey 1920 only - Oct 25 0:00 0 - +Rule Turkey 1921 only - Apr 3 0:00 1:00 S +Rule Turkey 1921 only - Oct 3 0:00 0 - +Rule Turkey 1922 only - Mar 26 0:00 1:00 S +Rule Turkey 1922 only - Oct 8 0:00 0 - +Rule Turkey 1924 only - May 13 0:00 1:00 S +Rule Turkey 1924 1925 - Oct 1 0:00 0 - +Rule Turkey 1925 only - May 1 0:00 1:00 S +Rule Turkey 1940 only - Jun 30 0:00 1:00 S +Rule Turkey 1940 only - Oct 5 0:00 0 - +Rule Turkey 1940 only - Dec 1 0:00 1:00 S +Rule Turkey 1941 only - Sep 21 0:00 0 - +Rule Turkey 1942 only - Apr 1 0:00 1:00 S +Rule Turkey 1942 only - Nov 1 0:00 0 - +Rule Turkey 1945 only - Apr 2 0:00 1:00 S +Rule Turkey 1945 only - Oct 8 0:00 0 - +Rule Turkey 1946 only - Jun 1 0:00 1:00 S +Rule Turkey 1946 only - Oct 1 0:00 0 - +Rule Turkey 1947 1948 - Apr Sun>=16 0:00 1:00 S +Rule Turkey 1947 1950 - Oct Sun>=2 0:00 0 - +Rule Turkey 1949 only - Apr 10 0:00 1:00 S +Rule Turkey 1950 only - Apr 19 0:00 1:00 S +Rule Turkey 1951 only - Apr 22 0:00 1:00 S +Rule Turkey 1951 only - Oct 8 0:00 0 - +Rule Turkey 1962 only - Jul 15 0:00 1:00 S +Rule Turkey 1962 only - Oct 8 0:00 0 - +Rule Turkey 1964 only - May 15 0:00 1:00 S +Rule Turkey 1964 only - Oct 1 0:00 0 - +Rule Turkey 1970 1972 - May Sun>=2 0:00 1:00 S +Rule Turkey 1970 1972 - Oct Sun>=2 0:00 0 - +Rule Turkey 1973 only - Jun 3 1:00 1:00 S +Rule Turkey 1973 only - Nov 4 3:00 0 - +Rule Turkey 1974 only - Mar 31 2:00 1:00 S +Rule Turkey 1974 only - Nov 3 5:00 0 - +Rule Turkey 1975 only - Mar 30 0:00 1:00 S +Rule Turkey 1975 1976 - Oct lastSun 0:00 0 - +Rule Turkey 1976 only - Jun 1 0:00 1:00 S +Rule Turkey 1977 1978 - Apr Sun>=1 0:00 1:00 S +Rule Turkey 1977 only - Oct 16 0:00 0 - +Rule Turkey 1979 1980 - Apr Sun>=1 3:00 1:00 S +Rule Turkey 1979 1982 - Oct Mon>=11 0:00 0 - +Rule Turkey 1981 1982 - Mar lastSun 3:00 1:00 S +Rule Turkey 1983 only - Jul 31 0:00 1:00 S +Rule Turkey 1983 only - Oct 2 0:00 0 - +Rule Turkey 1985 only - Apr 20 0:00 1:00 S +Rule Turkey 1985 only - Sep 28 0:00 0 - +Rule Turkey 1986 1990 - Mar lastSun 2:00s 1:00 S +Rule Turkey 1986 1990 - Sep lastSun 2:00s 0 - +Rule Turkey 1991 2006 - Mar lastSun 1:00s 1:00 S +Rule Turkey 1991 1995 - Sep lastSun 1:00s 0 - +Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 - +Zone Europe/Istanbul 1:55:52 - LMT 1880 + 1:56:56 - IMT 1910 Oct # Istanbul Mean Time? + 2:00 Turkey EE%sT 1978 Oct 15 + 3:00 Turkey TR%sT 1985 Apr 20 # Turkey Time + 2:00 Turkey EE%sT 2007 + 2:00 EU EE%sT +Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents. +Zone Europe/Kiev 2:02:04 - LMT 1880 + 2:02:04 - KMT 1924 May 2 # Kiev Mean Time + 2:00 - EET 1930 Jun 21 + 3:00 - MSK 1941 Sep 20 + 1:00 C-Eur CE%sT 1943 Nov 6 + 3:00 Russia MSK/MSD 1990 + 3:00 - MSK 1990 Jul 1 2:00 + 2:00 - EET 1992 + 2:00 E-Eur EE%sT 1995 + 2:00 EU EE%sT +Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct + 1:00 - CET 1940 + 1:00 C-Eur CE%sT 1944 Oct + 1:00 1:00 CEST 1944 Oct 26 + 1:00 - CET 1945 Jun 29 + 3:00 Russia MSK/MSD 1990 + 3:00 - MSK 1990 Jul 1 2:00 + 1:00 - CET 1991 Mar 31 3:00 + 2:00 - EET 1992 + 2:00 E-Eur EE%sT 1995 + 2:00 EU EE%sT +Zone Europe/Zaporozhye 2:20:40 - LMT 1880 + 2:20 - CUT 1924 May 2 # Central Ukraine T + 2:00 - EET 1930 Jun 21 + 3:00 - MSK 1941 Aug 25 + 1:00 C-Eur CE%sT 1943 Oct 25 + 3:00 Russia MSK/MSD 1991 Mar 31 2:00 + 2:00 E-Eur EE%sT 1995 + 2:00 EU EE%sT +Zone Europe/Simferopol 2:16:24 - LMT 1880 + 2:16 - SMT 1924 May 2 # Simferopol Mean T + 2:00 - EET 1930 Jun 21 + 3:00 - MSK 1941 Nov + 1:00 C-Eur CE%sT 1944 Apr 13 + 3:00 Russia MSK/MSD 1990 + 3:00 - MSK 1990 Jul 1 2:00 + 2:00 - EET 1992 + 2:00 E-Eur EE%sT 1994 May + 3:00 E-Eur MSK/MSD 1996 Mar 31 3:00s + 3:00 1:00 MSD 1996 Oct 27 3:00s + 3:00 Russia MSK/MSD 1997 + 3:00 - MSK 1997 Mar lastSun 1:00u + 2:00 EU EE%sT diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/northamerica b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/northamerica new file mode 100644 index 0000000..fe60abb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/northamerica @@ -0,0 +1,895 @@ +Rule US 1918 1919 - Mar lastSun 2:00 1:00 D +Rule US 1918 1919 - Oct lastSun 2:00 0 S +Rule US 1942 only - Feb 9 2:00 1:00 W # War +Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule US 1945 only - Sep 30 2:00 0 S +Rule US 1967 2006 - Oct lastSun 2:00 0 S +Rule US 1967 1973 - Apr lastSun 2:00 1:00 D +Rule US 1974 only - Jan 6 2:00 1:00 D +Rule US 1975 only - Feb 23 2:00 1:00 D +Rule US 1976 1986 - Apr lastSun 2:00 1:00 D +Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D +Rule US 2007 max - Mar Sun>=8 2:00 1:00 D +Rule US 2007 max - Nov Sun>=1 2:00 0 S +Zone EST -5:00 - EST +Zone MST -7:00 - MST +Zone HST -10:00 - HST +Zone EST5EDT -5:00 US E%sT +Zone CST6CDT -6:00 US C%sT +Zone MST7MDT -7:00 US M%sT +Zone PST8PDT -8:00 US P%sT +Rule NYC 1920 only - Mar lastSun 2:00 1:00 D +Rule NYC 1920 only - Oct lastSun 2:00 0 S +Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D +Rule NYC 1921 1954 - Sep lastSun 2:00 0 S +Rule NYC 1955 1966 - Oct lastSun 2:00 0 S +Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58 + -5:00 US E%sT 1920 + -5:00 NYC E%sT 1942 + -5:00 US E%sT 1946 + -5:00 NYC E%sT 1967 + -5:00 US E%sT +Rule Chicago 1920 only - Jun 13 2:00 1:00 D +Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S +Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D +Rule Chicago 1922 1966 - Apr lastSun 2:00 1:00 D +Rule Chicago 1922 1954 - Sep lastSun 2:00 0 S +Rule Chicago 1955 1966 - Oct lastSun 2:00 0 S +Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:09:24 + -6:00 US C%sT 1920 + -6:00 Chicago C%sT 1936 Mar 1 2:00 + -5:00 - EST 1936 Nov 15 2:00 + -6:00 Chicago C%sT 1942 + -6:00 US C%sT 1946 + -6:00 Chicago C%sT 1967 + -6:00 US C%sT +Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:14:48 + -7:00 US M%sT 1992 Oct 25 02:00 + -6:00 US C%sT +Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21 + -7:00 US M%sT 2003 Oct 26 02:00 + -6:00 US C%sT +Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D +Rule Denver 1920 only - Oct lastSun 2:00 0 S +Rule Denver 1921 only - May 22 2:00 0 S +Rule Denver 1965 1966 - Apr lastSun 2:00 1:00 D +Rule Denver 1965 1966 - Oct lastSun 2:00 0 S +Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04 + -7:00 US M%sT 1920 + -7:00 Denver M%sT 1942 + -7:00 US M%sT 1946 + -7:00 Denver M%sT 1967 + -7:00 US M%sT +Rule CA 1948 only - Mar 14 2:00 1:00 D +Rule CA 1949 only - Jan 1 2:00 0 S +Rule CA 1950 1966 - Apr lastSun 2:00 1:00 D +Rule CA 1950 1961 - Sep lastSun 2:00 0 S +Rule CA 1962 1966 - Oct lastSun 2:00 0 S +Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02 + -8:00 US P%sT 1946 + -8:00 CA P%sT 1967 + -8:00 US P%sT +Zone America/Juneau 15:02:19 - LMT 1867 Oct 18 + -8:57:41 - LMT 1900 Aug 20 12:00 + -8:00 - PST 1942 + -8:00 US P%sT 1946 + -8:00 - PST 1969 + -8:00 US P%sT 1983 Oct 30 2:00 + -9:00 US Y%sT 1983 Nov 30 + -9:00 US AK%sT +Zone America/Yakutat 14:41:05 - LMT 1867 Oct 18 + -9:18:55 - LMT 1900 Aug 20 12:00 + -9:00 - YST 1942 + -9:00 US Y%sT 1946 + -9:00 - YST 1969 + -9:00 US Y%sT 1983 Nov 30 + -9:00 US AK%sT +Zone America/Anchorage 14:00:24 - LMT 1867 Oct 18 + -9:59:36 - LMT 1900 Aug 20 12:00 + -10:00 - CAT 1942 + -10:00 US CAT/CAWT 1945 Aug 14 23:00u + -10:00 US CAT/CAPT 1946 # Peace + -10:00 - CAT 1967 Apr + -10:00 - AHST 1969 + -10:00 US AH%sT 1983 Oct 30 2:00 + -9:00 US Y%sT 1983 Nov 30 + -9:00 US AK%sT +Zone America/Nome 12:58:21 - LMT 1867 Oct 18 + -11:01:38 - LMT 1900 Aug 20 12:00 + -11:00 - NST 1942 + -11:00 US N%sT 1946 + -11:00 - NST 1967 Apr + -11:00 - BST 1969 + -11:00 US B%sT 1983 Oct 30 2:00 + -9:00 US Y%sT 1983 Nov 30 + -9:00 US AK%sT +Zone America/Adak 12:13:21 - LMT 1867 Oct 18 + -11:46:38 - LMT 1900 Aug 20 12:00 + -11:00 - NST 1942 + -11:00 US N%sT 1946 + -11:00 - NST 1967 Apr + -11:00 - BST 1969 + -11:00 US B%sT 1983 Oct 30 2:00 + -10:00 US AH%sT 1983 Nov 30 + -10:00 US HA%sT +Zone Pacific/Honolulu -10:31:26 - LMT 1900 Jan 1 12:00 + -10:30 - HST 1933 Apr 30 2:00 + -10:30 1:00 HDT 1933 May 21 2:00 + -10:30 US H%sT 1947 Jun 8 2:00 + -10:00 - HST +Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 11:31:42 + -7:00 US M%sT 1944 Jan 1 00:01 + -7:00 - MST 1944 Apr 1 00:01 + -7:00 US M%sT 1944 Oct 1 00:01 + -7:00 - MST 1967 + -7:00 US M%sT 1968 Mar 21 + -7:00 - MST +Link America/Denver America/Shiprock +Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11 + -8:00 US P%sT 1923 May 13 2:00 + -7:00 US M%sT 1974 + -7:00 - MST 1974 Feb 3 2:00 + -7:00 US M%sT +Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D +Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S +Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D +Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22 + -6:00 US C%sT 1920 + -6:00 Indianapolis C%sT 1942 + -6:00 US C%sT 1946 + -6:00 Indianapolis C%sT 1955 Apr 24 2:00 + -5:00 - EST 1957 Sep 29 2:00 + -6:00 - CST 1958 Apr 27 2:00 + -5:00 - EST 1969 + -5:00 US E%sT 1971 + -5:00 - EST 2006 + -5:00 US E%sT +Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D +Rule Marengo 1951 only - Sep lastSun 2:00 0 S +Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D +Rule Marengo 1954 1960 - Sep lastSun 2:00 0 S +Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:14:37 + -6:00 US C%sT 1951 + -6:00 Marengo C%sT 1961 Apr 30 2:00 + -5:00 - EST 1969 + -5:00 US E%sT 1974 Jan 6 2:00 + -6:00 1:00 CDT 1974 Oct 27 2:00 + -5:00 US E%sT 1976 + -5:00 - EST 2006 + -5:00 US E%sT +Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D +Rule Vincennes 1946 only - Sep lastSun 2:00 0 S +Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D +Rule Vincennes 1953 1959 - Sep lastSun 2:00 0 S +Rule Vincennes 1955 only - May 1 0:00 1:00 D +Rule Vincennes 1956 1963 - Apr lastSun 2:00 1:00 D +Rule Vincennes 1960 only - Oct lastSun 2:00 0 S +Rule Vincennes 1961 only - Sep lastSun 2:00 0 S +Rule Vincennes 1962 1963 - Oct lastSun 2:00 0 S +Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53 + -6:00 US C%sT 1946 + -6:00 Vincennes C%sT 1964 Apr 26 2:00 + -5:00 - EST 1969 + -5:00 US E%sT 1971 + -5:00 - EST 2006 Apr 2 2:00 + -6:00 US C%sT 2007 Nov 4 2:00 + -5:00 US E%sT +Rule Perry 1946 only - Apr lastSun 2:00 1:00 D +Rule Perry 1946 only - Sep lastSun 2:00 0 S +Rule Perry 1953 1954 - Apr lastSun 2:00 1:00 D +Rule Perry 1953 1959 - Sep lastSun 2:00 0 S +Rule Perry 1955 only - May 1 0:00 1:00 D +Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D +Rule Perry 1960 only - Oct lastSun 2:00 0 S +Rule Perry 1961 only - Sep lastSun 2:00 0 S +Rule Perry 1962 1963 - Oct lastSun 2:00 0 S +Zone America/Indiana/Tell_City -5:47:03 - LMT 1883 Nov 18 12:12:57 + -6:00 US C%sT 1946 + -6:00 Perry C%sT 1964 Apr 26 2:00 + -5:00 - EST 1969 + -5:00 US E%sT 1971 + -5:00 - EST 2006 Apr 2 2:00 + -6:00 US C%sT +Rule Pike 1955 only - May 1 0:00 1:00 D +Rule Pike 1955 1960 - Sep lastSun 2:00 0 S +Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D +Rule Pike 1961 1964 - Oct lastSun 2:00 0 S +Zone America/Indiana/Petersburg -5:49:07 - LMT 1883 Nov 18 12:10:53 + -6:00 US C%sT 1955 + -6:00 Pike C%sT 1965 Apr 25 2:00 + -5:00 - EST 1966 Oct 30 2:00 + -6:00 US C%sT 1977 Oct 30 2:00 + -5:00 - EST 2006 Apr 2 2:00 + -6:00 US C%sT 2007 Nov 4 2:00 + -5:00 US E%sT +Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D +Rule Starke 1947 1954 - Sep lastSun 2:00 0 S +Rule Starke 1955 1956 - Oct lastSun 2:00 0 S +Rule Starke 1957 1958 - Sep lastSun 2:00 0 S +Rule Starke 1959 1961 - Oct lastSun 2:00 0 S +Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:13:30 + -6:00 US C%sT 1947 + -6:00 Starke C%sT 1962 Apr 29 2:00 + -5:00 - EST 1963 Oct 27 2:00 + -6:00 US C%sT 1991 Oct 27 2:00 + -5:00 - EST 2006 Apr 2 2:00 + -6:00 US C%sT +Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D +Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S +Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S +Rule Pulaski 1957 1960 - Sep lastSun 2:00 0 S +Zone America/Indiana/Winamac -5:46:25 - LMT 1883 Nov 18 12:13:35 + -6:00 US C%sT 1946 + -6:00 Pulaski C%sT 1961 Apr 30 2:00 + -5:00 - EST 1969 + -5:00 US E%sT 1971 + -5:00 - EST 2006 Apr 2 2:00 + -6:00 US C%sT 2007 Mar 11 2:00 + -5:00 US E%sT +Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44 + -6:00 US C%sT 1954 Apr 25 2:00 + -5:00 - EST 1969 + -5:00 US E%sT 1973 + -5:00 - EST 2006 + -5:00 US E%sT +Rule Louisville 1921 only - May 1 2:00 1:00 D +Rule Louisville 1921 only - Sep 1 2:00 0 S +Rule Louisville 1941 1961 - Apr lastSun 2:00 1:00 D +Rule Louisville 1941 only - Sep lastSun 2:00 0 S +Rule Louisville 1946 only - Jun 2 2:00 0 S +Rule Louisville 1950 1955 - Sep lastSun 2:00 0 S +Rule Louisville 1956 1960 - Oct lastSun 2:00 0 S +Zone America/Kentucky/Louisville -5:43:02 - LMT 1883 Nov 18 12:16:58 + -6:00 US C%sT 1921 + -6:00 Louisville C%sT 1942 + -6:00 US C%sT 1946 + -6:00 Louisville C%sT 1961 Jul 23 2:00 + -5:00 - EST 1968 + -5:00 US E%sT 1974 Jan 6 2:00 + -6:00 1:00 CDT 1974 Oct 27 2:00 + -5:00 US E%sT +Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:20:36 + -6:00 US C%sT 1946 + -6:00 - CST 1968 + -6:00 US C%sT 2000 Oct 29 2:00 + -5:00 US E%sT +Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D +Rule Detroit 1948 only - Sep lastSun 2:00 0 S +Rule Detroit 1967 only - Jun 14 2:00 1:00 D +Rule Detroit 1967 only - Oct lastSun 2:00 0 S +Zone America/Detroit -5:32:11 - LMT 1905 + -6:00 - CST 1915 May 15 2:00 + -5:00 - EST 1942 + -5:00 US E%sT 1946 + -5:00 Detroit E%sT 1973 + -5:00 US E%sT 1975 + -5:00 - EST 1975 Apr 27 2:00 + -5:00 US E%sT +Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D +Rule Menominee 1946 only - Sep lastSun 2:00 0 S +Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D +Rule Menominee 1966 only - Oct lastSun 2:00 0 S +Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00 + -6:00 US C%sT 1946 + -6:00 Menominee C%sT 1969 Apr 27 2:00 + -5:00 - EST 1973 Apr 29 2:00 + -6:00 US C%sT +Rule Canada 1918 only - Apr 14 2:00 1:00 D +Rule Canada 1918 only - Oct 31 2:00 0 S +Rule Canada 1942 only - Feb 9 2:00 1:00 W # War +Rule Canada 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule Canada 1945 only - Sep 30 2:00 0 S +Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D +Rule Canada 1974 2006 - Oct lastSun 2:00 0 S +Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D +Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D +Rule Canada 2007 max - Nov Sun>=1 2:00 0 S +Rule StJohns 1917 only - Apr 8 2:00 1:00 D +Rule StJohns 1917 only - Sep 17 2:00 0 S +Rule StJohns 1919 only - May 5 23:00 1:00 D +Rule StJohns 1919 only - Aug 12 23:00 0 S +Rule StJohns 1920 1935 - May Sun>=1 23:00 1:00 D +Rule StJohns 1920 1935 - Oct lastSun 23:00 0 S +Rule StJohns 1936 1941 - May Mon>=9 0:00 1:00 D +Rule StJohns 1936 1941 - Oct Mon>=2 0:00 0 S +Rule StJohns 1946 1950 - May Sun>=8 2:00 1:00 D +Rule StJohns 1946 1950 - Oct Sun>=2 2:00 0 S +Rule StJohns 1951 1986 - Apr lastSun 2:00 1:00 D +Rule StJohns 1951 1959 - Sep lastSun 2:00 0 S +Rule StJohns 1960 1986 - Oct lastSun 2:00 0 S +Rule StJohns 1987 only - Apr Sun>=1 0:01 1:00 D +Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S +Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD +Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D +Rule StJohns 2007 max - Mar Sun>=8 0:01 1:00 D +Rule StJohns 2007 max - Nov Sun>=1 0:01 0 S +Zone America/St_Johns -3:30:52 - LMT 1884 + -3:30:52 StJohns N%sT 1918 + -3:30:52 Canada N%sT 1919 + -3:30:52 StJohns N%sT 1935 Mar 30 + -3:30 StJohns N%sT 1942 May 11 + -3:30 Canada N%sT 1946 + -3:30 StJohns N%sT +Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay + -3:30:52 - NST 1918 + -3:30:52 Canada N%sT 1919 + -3:30:52 - NST 1935 Mar 30 + -3:30 - NST 1936 + -3:30 StJohns N%sT 1942 May 11 + -3:30 Canada N%sT 1946 + -3:30 StJohns N%sT 1966 Mar 15 2:00 + -4:00 StJohns A%sT +Rule Halifax 1916 only - Apr 1 0:00 1:00 D +Rule Halifax 1916 only - Oct 1 0:00 0 S +Rule Halifax 1920 only - May 9 0:00 1:00 D +Rule Halifax 1920 only - Aug 29 0:00 0 S +Rule Halifax 1921 only - May 6 0:00 1:00 D +Rule Halifax 1921 1922 - Sep 5 0:00 0 S +Rule Halifax 1922 only - Apr 30 0:00 1:00 D +Rule Halifax 1923 1925 - May Sun>=1 0:00 1:00 D +Rule Halifax 1923 only - Sep 4 0:00 0 S +Rule Halifax 1924 only - Sep 15 0:00 0 S +Rule Halifax 1925 only - Sep 28 0:00 0 S +Rule Halifax 1926 only - May 16 0:00 1:00 D +Rule Halifax 1926 only - Sep 13 0:00 0 S +Rule Halifax 1927 only - May 1 0:00 1:00 D +Rule Halifax 1927 only - Sep 26 0:00 0 S +Rule Halifax 1928 1931 - May Sun>=8 0:00 1:00 D +Rule Halifax 1928 only - Sep 9 0:00 0 S +Rule Halifax 1929 only - Sep 3 0:00 0 S +Rule Halifax 1930 only - Sep 15 0:00 0 S +Rule Halifax 1931 1932 - Sep Mon>=24 0:00 0 S +Rule Halifax 1932 only - May 1 0:00 1:00 D +Rule Halifax 1933 only - Apr 30 0:00 1:00 D +Rule Halifax 1933 only - Oct 2 0:00 0 S +Rule Halifax 1934 only - May 20 0:00 1:00 D +Rule Halifax 1934 only - Sep 16 0:00 0 S +Rule Halifax 1935 only - Jun 2 0:00 1:00 D +Rule Halifax 1935 only - Sep 30 0:00 0 S +Rule Halifax 1936 only - Jun 1 0:00 1:00 D +Rule Halifax 1936 only - Sep 14 0:00 0 S +Rule Halifax 1937 1938 - May Sun>=1 0:00 1:00 D +Rule Halifax 1937 1941 - Sep Mon>=24 0:00 0 S +Rule Halifax 1939 only - May 28 0:00 1:00 D +Rule Halifax 1940 1941 - May Sun>=1 0:00 1:00 D +Rule Halifax 1946 1949 - Apr lastSun 2:00 1:00 D +Rule Halifax 1946 1949 - Sep lastSun 2:00 0 S +Rule Halifax 1951 1954 - Apr lastSun 2:00 1:00 D +Rule Halifax 1951 1954 - Sep lastSun 2:00 0 S +Rule Halifax 1956 1959 - Apr lastSun 2:00 1:00 D +Rule Halifax 1956 1959 - Sep lastSun 2:00 0 S +Rule Halifax 1962 1973 - Apr lastSun 2:00 1:00 D +Rule Halifax 1962 1973 - Oct lastSun 2:00 0 S +Zone America/Halifax -4:14:24 - LMT 1902 Jun 15 + -4:00 Halifax A%sT 1918 + -4:00 Canada A%sT 1919 + -4:00 Halifax A%sT 1942 Feb 9 2:00s + -4:00 Canada A%sT 1946 + -4:00 Halifax A%sT 1974 + -4:00 Canada A%sT +Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15 + -4:00 Canada A%sT 1953 + -4:00 Halifax A%sT 1954 + -4:00 - AST 1972 + -4:00 Halifax A%sT 1974 + -4:00 Canada A%sT +Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D +Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S +Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D +Rule Moncton 1936 1938 - Sep Sun>=1 1:00 0 S +Rule Moncton 1939 only - May 27 1:00 1:00 D +Rule Moncton 1939 1941 - Sep Sat>=21 1:00 0 S +Rule Moncton 1940 only - May 19 1:00 1:00 D +Rule Moncton 1941 only - May 4 1:00 1:00 D +Rule Moncton 1946 1972 - Apr lastSun 2:00 1:00 D +Rule Moncton 1946 1956 - Sep lastSun 2:00 0 S +Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S +Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D +Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S +Zone America/Moncton -4:19:08 - LMT 1883 Dec 9 + -5:00 - EST 1902 Jun 15 + -4:00 Canada A%sT 1933 + -4:00 Moncton A%sT 1942 + -4:00 Canada A%sT 1946 + -4:00 Moncton A%sT 1973 + -4:00 Canada A%sT 1993 + -4:00 Moncton A%sT 2007 + -4:00 Canada A%sT +Rule Mont 1917 only - Mar 25 2:00 1:00 D +Rule Mont 1917 only - Apr 24 0:00 0 S +Rule Mont 1919 only - Mar 31 2:30 1:00 D +Rule Mont 1919 only - Oct 25 2:30 0 S +Rule Mont 1920 only - May 2 2:30 1:00 D +Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S +Rule Mont 1921 only - May 1 2:00 1:00 D +Rule Mont 1922 only - Apr 30 2:00 1:00 D +Rule Mont 1924 only - May 17 2:00 1:00 D +Rule Mont 1924 1926 - Sep lastSun 2:30 0 S +Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D +Rule Mont 1927 only - May 1 0:00 1:00 D +Rule Mont 1927 1932 - Sep lastSun 0:00 0 S +Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D +Rule Mont 1932 only - May 1 0:00 1:00 D +Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D +Rule Mont 1933 only - Oct 1 0:00 0 S +Rule Mont 1934 1939 - Sep lastSun 0:00 0 S +Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D +Rule Mont 1945 1948 - Sep lastSun 2:00 0 S +Rule Mont 1949 1950 - Oct lastSun 2:00 0 S +Rule Mont 1951 1956 - Sep lastSun 2:00 0 S +Rule Mont 1957 1973 - Oct lastSun 2:00 0 S +Zone America/Blanc-Sablon -3:48:28 - LMT 1884 + -4:00 Canada A%sT 1970 + -4:00 - AST +Zone America/Montreal -4:54:16 - LMT 1884 + -5:00 Mont E%sT 1918 + -5:00 Canada E%sT 1919 + -5:00 Mont E%sT 1942 Feb 9 2:00s + -5:00 Canada E%sT 1946 + -5:00 Mont E%sT 1974 + -5:00 Canada E%sT +Rule Toronto 1919 only - Mar 30 23:30 1:00 D +Rule Toronto 1919 only - Oct 26 0:00 0 S +Rule Toronto 1920 only - May 2 2:00 1:00 D +Rule Toronto 1920 only - Sep 26 0:00 0 S +Rule Toronto 1921 only - May 15 2:00 1:00 D +Rule Toronto 1921 only - Sep 15 2:00 0 S +Rule Toronto 1922 1923 - May Sun>=8 2:00 1:00 D +Rule Toronto 1922 1926 - Sep Sun>=15 2:00 0 S +Rule Toronto 1924 1927 - May Sun>=1 2:00 1:00 D +Rule Toronto 1927 1932 - Sep lastSun 2:00 0 S +Rule Toronto 1928 1931 - Apr lastSun 2:00 1:00 D +Rule Toronto 1932 only - May 1 2:00 1:00 D +Rule Toronto 1933 1940 - Apr lastSun 2:00 1:00 D +Rule Toronto 1933 only - Oct 1 2:00 0 S +Rule Toronto 1934 1939 - Sep lastSun 2:00 0 S +Rule Toronto 1945 1946 - Sep lastSun 2:00 0 S +Rule Toronto 1946 only - Apr lastSun 2:00 1:00 D +Rule Toronto 1947 1949 - Apr lastSun 0:00 1:00 D +Rule Toronto 1947 1948 - Sep lastSun 0:00 0 S +Rule Toronto 1949 only - Nov lastSun 0:00 0 S +Rule Toronto 1950 1973 - Apr lastSun 2:00 1:00 D +Rule Toronto 1950 only - Nov lastSun 2:00 0 S +Rule Toronto 1951 1956 - Sep lastSun 2:00 0 S +Rule Toronto 1957 1973 - Oct lastSun 2:00 0 S +Zone America/Toronto -5:17:32 - LMT 1895 + -5:00 Canada E%sT 1919 + -5:00 Toronto E%sT 1942 Feb 9 2:00s + -5:00 Canada E%sT 1946 + -5:00 Toronto E%sT 1974 + -5:00 Canada E%sT +Zone America/Thunder_Bay -5:57:00 - LMT 1895 + -6:00 - CST 1910 + -5:00 - EST 1942 + -5:00 Canada E%sT 1970 + -5:00 Mont E%sT 1973 + -5:00 - EST 1974 + -5:00 Canada E%sT +Zone America/Nipigon -5:53:04 - LMT 1895 + -5:00 Canada E%sT 1940 Sep 29 + -5:00 1:00 EDT 1942 Feb 9 2:00s + -5:00 Canada E%sT +Zone America/Rainy_River -6:18:16 - LMT 1895 + -6:00 Canada C%sT 1940 Sep 29 + -6:00 1:00 CDT 1942 Feb 9 2:00s + -6:00 Canada C%sT +Zone America/Atikokan -6:06:28 - LMT 1895 + -6:00 Canada C%sT 1940 Sep 29 + -6:00 1:00 CDT 1942 Feb 9 2:00s + -6:00 Canada C%sT 1945 Sep 30 2:00 + -5:00 - EST +Rule Winn 1916 only - Apr 23 0:00 1:00 D +Rule Winn 1916 only - Sep 17 0:00 0 S +Rule Winn 1918 only - Apr 14 2:00 1:00 D +Rule Winn 1918 only - Oct 31 2:00 0 S +Rule Winn 1937 only - May 16 2:00 1:00 D +Rule Winn 1937 only - Sep 26 2:00 0 S +Rule Winn 1942 only - Feb 9 2:00 1:00 W # War +Rule Winn 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule Winn 1945 only - Sep lastSun 2:00 0 S +Rule Winn 1946 only - May 12 2:00 1:00 D +Rule Winn 1946 only - Oct 13 2:00 0 S +Rule Winn 1947 1949 - Apr lastSun 2:00 1:00 D +Rule Winn 1947 1949 - Sep lastSun 2:00 0 S +Rule Winn 1950 only - May 1 2:00 1:00 D +Rule Winn 1950 only - Sep 30 2:00 0 S +Rule Winn 1951 1960 - Apr lastSun 2:00 1:00 D +Rule Winn 1951 1958 - Sep lastSun 2:00 0 S +Rule Winn 1959 only - Oct lastSun 2:00 0 S +Rule Winn 1960 only - Sep lastSun 2:00 0 S +Rule Winn 1963 only - Apr lastSun 2:00 1:00 D +Rule Winn 1963 only - Sep 22 2:00 0 S +Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D +Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S +Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D +Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16 + -6:00 Winn C%sT 2006 + -6:00 Canada C%sT +Rule Regina 1918 only - Apr 14 2:00 1:00 D +Rule Regina 1918 only - Oct 31 2:00 0 S +Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D +Rule Regina 1930 1934 - Oct Sun>=1 0:00 0 S +Rule Regina 1937 1941 - Apr Sun>=8 0:00 1:00 D +Rule Regina 1937 only - Oct Sun>=8 0:00 0 S +Rule Regina 1938 only - Oct Sun>=1 0:00 0 S +Rule Regina 1939 1941 - Oct Sun>=8 0:00 0 S +Rule Regina 1942 only - Feb 9 2:00 1:00 W # War +Rule Regina 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule Regina 1945 only - Sep lastSun 2:00 0 S +Rule Regina 1946 only - Apr Sun>=8 2:00 1:00 D +Rule Regina 1946 only - Oct Sun>=8 2:00 0 S +Rule Regina 1947 1957 - Apr lastSun 2:00 1:00 D +Rule Regina 1947 1957 - Sep lastSun 2:00 0 S +Rule Regina 1959 only - Apr lastSun 2:00 1:00 D +Rule Regina 1959 only - Oct lastSun 2:00 0 S +Rule Swift 1957 only - Apr lastSun 2:00 1:00 D +Rule Swift 1957 only - Oct lastSun 2:00 0 S +Rule Swift 1959 1961 - Apr lastSun 2:00 1:00 D +Rule Swift 1959 only - Oct lastSun 2:00 0 S +Rule Swift 1960 1961 - Sep lastSun 2:00 0 S +Zone America/Regina -6:58:36 - LMT 1905 Sep + -7:00 Regina M%sT 1960 Apr lastSun 2:00 + -6:00 - CST +Zone America/Swift_Current -7:11:20 - LMT 1905 Sep + -7:00 Canada M%sT 1946 Apr lastSun 2:00 + -7:00 Regina M%sT 1950 + -7:00 Swift M%sT 1972 Apr lastSun 2:00 + -6:00 - CST +Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D +Rule Edm 1918 only - Oct 31 2:00 0 S +Rule Edm 1919 only - May 27 2:00 0 S +Rule Edm 1920 1923 - Apr lastSun 2:00 1:00 D +Rule Edm 1920 only - Oct lastSun 2:00 0 S +Rule Edm 1921 1923 - Sep lastSun 2:00 0 S +Rule Edm 1942 only - Feb 9 2:00 1:00 W # War +Rule Edm 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule Edm 1945 only - Sep lastSun 2:00 0 S +Rule Edm 1947 only - Apr lastSun 2:00 1:00 D +Rule Edm 1947 only - Sep lastSun 2:00 0 S +Rule Edm 1967 only - Apr lastSun 2:00 1:00 D +Rule Edm 1967 only - Oct lastSun 2:00 0 S +Rule Edm 1969 only - Apr lastSun 2:00 1:00 D +Rule Edm 1969 only - Oct lastSun 2:00 0 S +Rule Edm 1972 1986 - Apr lastSun 2:00 1:00 D +Rule Edm 1972 2006 - Oct lastSun 2:00 0 S +Zone America/Edmonton -7:33:52 - LMT 1906 Sep + -7:00 Edm M%sT 1987 + -7:00 Canada M%sT +Rule Vanc 1918 only - Apr 14 2:00 1:00 D +Rule Vanc 1918 only - Oct 31 2:00 0 S +Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War +Rule Vanc 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule Vanc 1945 only - Sep 30 2:00 0 S +Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D +Rule Vanc 1946 only - Oct 13 2:00 0 S +Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S +Rule Vanc 1962 2006 - Oct lastSun 2:00 0 S +Zone America/Vancouver -8:12:28 - LMT 1884 + -8:00 Vanc P%sT 1987 + -8:00 Canada P%sT +Zone America/Dawson_Creek -8:00:56 - LMT 1884 + -8:00 Canada P%sT 1947 + -8:00 Vanc P%sT 1972 Aug 30 2:00 + -7:00 - MST +Rule NT_YK 1918 only - Apr 14 2:00 1:00 D +Rule NT_YK 1918 only - Oct 27 2:00 0 S +Rule NT_YK 1919 only - May 25 2:00 1:00 D +Rule NT_YK 1919 only - Nov 1 0:00 0 S +Rule NT_YK 1942 only - Feb 9 2:00 1:00 W # War +Rule NT_YK 1945 only - Aug 14 23:00u 1:00 P # Peace +Rule NT_YK 1945 only - Sep 30 2:00 0 S +Rule NT_YK 1965 only - Apr lastSun 0:00 2:00 DD +Rule NT_YK 1965 only - Oct lastSun 2:00 0 S +Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D +Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S +Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D +Zone America/Pangnirtung 0 - zzz 1921 # trading post est. + -4:00 NT_YK A%sT 1995 Apr Sun>=1 2:00 + -5:00 Canada E%sT 1999 Oct 31 2:00 + -6:00 Canada C%sT 2000 Oct 29 2:00 + -5:00 Canada E%sT +Zone America/Iqaluit 0 - zzz 1942 Aug # Frobisher Bay est. + -5:00 NT_YK E%sT 1999 Oct 31 2:00 + -6:00 Canada C%sT 2000 Oct 29 2:00 + -5:00 Canada E%sT +Rule Resolute 2006 max - Nov Sun>=1 2:00 0 ES +Rule Resolute 2007 max - Mar Sun>=8 2:00 0 CD +Zone America/Resolute 0 - zzz 1947 Aug 31 # Resolute founded + -6:00 NT_YK C%sT 2000 Oct 29 2:00 + -5:00 - EST 2001 Apr 1 3:00 + -6:00 Canada C%sT 2006 Oct 29 2:00 + -5:00 Resolute %sT +Zone America/Rankin_Inlet 0 - zzz 1957 # Rankin Inlet founded + -6:00 NT_YK C%sT 2000 Oct 29 2:00 + -5:00 - EST 2001 Apr 1 3:00 + -6:00 Canada C%sT +Zone America/Cambridge_Bay 0 - zzz 1920 # trading post est.? + -7:00 NT_YK M%sT 1999 Oct 31 2:00 + -6:00 Canada C%sT 2000 Oct 29 2:00 + -5:00 - EST 2000 Nov 5 0:00 + -6:00 - CST 2001 Apr 1 3:00 + -7:00 Canada M%sT +Zone America/Yellowknife 0 - zzz 1935 # Yellowknife founded? + -7:00 NT_YK M%sT 1980 + -7:00 Canada M%sT +Zone America/Inuvik 0 - zzz 1953 # Inuvik founded + -8:00 NT_YK P%sT 1979 Apr lastSun 2:00 + -7:00 NT_YK M%sT 1980 + -7:00 Canada M%sT +Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20 + -9:00 NT_YK Y%sT 1966 Jul 1 2:00 + -8:00 NT_YK P%sT 1980 + -8:00 Canada P%sT +Zone America/Dawson -9:17:40 - LMT 1900 Aug 20 + -9:00 NT_YK Y%sT 1973 Oct 28 0:00 + -8:00 NT_YK P%sT 1980 + -8:00 Canada P%sT +Rule Mexico 1939 only - Feb 5 0:00 1:00 D +Rule Mexico 1939 only - Jun 25 0:00 0 S +Rule Mexico 1940 only - Dec 9 0:00 1:00 D +Rule Mexico 1941 only - Apr 1 0:00 0 S +Rule Mexico 1943 only - Dec 16 0:00 1:00 W # War +Rule Mexico 1944 only - May 1 0:00 0 S +Rule Mexico 1950 only - Feb 12 0:00 1:00 D +Rule Mexico 1950 only - Jul 30 0:00 0 S +Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D +Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S +Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D +Rule Mexico 2001 only - Sep lastSun 2:00 0 S +Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D +Rule Mexico 2002 max - Oct lastSun 2:00 0 S +Zone America/Cancun -5:47:04 - LMT 1922 Jan 1 0:12:56 + -6:00 - CST 1981 Dec 23 + -5:00 Mexico E%sT 1998 Aug 2 2:00 + -6:00 Mexico C%sT +Zone America/Merida -5:58:28 - LMT 1922 Jan 1 0:01:32 + -6:00 - CST 1981 Dec 23 + -5:00 - EST 1982 Dec 2 + -6:00 Mexico C%sT +Zone America/Monterrey -6:41:16 - LMT 1921 Dec 31 23:18:44 + -6:00 - CST 1988 + -6:00 US C%sT 1989 + -6:00 Mexico C%sT +Zone America/Mexico_City -6:36:36 - LMT 1922 Jan 1 0:23:24 + -7:00 - MST 1927 Jun 10 23:00 + -6:00 - CST 1930 Nov 15 + -7:00 - MST 1931 May 1 23:00 + -6:00 - CST 1931 Oct + -7:00 - MST 1932 Apr 1 + -6:00 Mexico C%sT 2001 Sep 30 02:00 + -6:00 - CST 2002 Feb 20 + -6:00 Mexico C%sT +Zone America/Chihuahua -7:04:20 - LMT 1921 Dec 31 23:55:40 + -7:00 - MST 1927 Jun 10 23:00 + -6:00 - CST 1930 Nov 15 + -7:00 - MST 1931 May 1 23:00 + -6:00 - CST 1931 Oct + -7:00 - MST 1932 Apr 1 + -6:00 - CST 1996 + -6:00 Mexico C%sT 1998 + -6:00 - CST 1998 Apr Sun>=1 3:00 + -7:00 Mexico M%sT +Zone America/Hermosillo -7:23:52 - LMT 1921 Dec 31 23:36:08 + -7:00 - MST 1927 Jun 10 23:00 + -6:00 - CST 1930 Nov 15 + -7:00 - MST 1931 May 1 23:00 + -6:00 - CST 1931 Oct + -7:00 - MST 1932 Apr 1 + -6:00 - CST 1942 Apr 24 + -7:00 - MST 1949 Jan 14 + -8:00 - PST 1970 + -7:00 Mexico M%sT 1999 + -7:00 - MST +Zone America/Mazatlan -7:05:40 - LMT 1921 Dec 31 23:54:20 + -7:00 - MST 1927 Jun 10 23:00 + -6:00 - CST 1930 Nov 15 + -7:00 - MST 1931 May 1 23:00 + -6:00 - CST 1931 Oct + -7:00 - MST 1932 Apr 1 + -6:00 - CST 1942 Apr 24 + -7:00 - MST 1949 Jan 14 + -8:00 - PST 1970 + -7:00 Mexico M%sT +Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56 + -7:00 - MST 1924 + -8:00 - PST 1927 Jun 10 23:00 + -7:00 - MST 1930 Nov 15 + -8:00 - PST 1931 Apr 1 + -8:00 1:00 PDT 1931 Sep 30 + -8:00 - PST 1942 Apr 24 + -8:00 1:00 PWT 1945 Aug 14 23:00u + -8:00 1:00 PPT 1945 Nov 12 # Peace + -8:00 - PST 1948 Apr 5 + -8:00 1:00 PDT 1949 Jan 14 + -8:00 - PST 1954 + -8:00 CA P%sT 1961 + -8:00 - PST 1976 + -8:00 US P%sT 1996 + -8:00 Mexico P%sT 2001 + -8:00 US P%sT 2002 Feb 20 + -8:00 Mexico P%sT +Zone America/Anguilla -4:12:16 - LMT 1912 Mar 2 + -4:00 - AST +Zone America/Antigua -4:07:12 - LMT 1912 Mar 2 + -5:00 - EST 1951 + -4:00 - AST +Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S +Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D +Zone America/Nassau -5:09:24 - LMT 1912 Mar 2 + -5:00 Bahamas E%sT 1976 + -5:00 US E%sT +Rule Barb 1977 only - Jun 12 2:00 1:00 D +Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S +Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D +Rule Barb 1979 only - Sep 30 2:00 0 S +Rule Barb 1980 only - Sep 25 2:00 0 S +Zone America/Barbados -3:58:28 - LMT 1924 # Bridgetown + -3:58:28 - BMT 1932 # Bridgetown Mean Time + -4:00 Barb A%sT +Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 HD +Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 S +Rule Belize 1973 only - Dec 5 0:00 1:00 D +Rule Belize 1974 only - Feb 9 0:00 0 S +Rule Belize 1982 only - Dec 18 0:00 1:00 D +Rule Belize 1983 only - Feb 12 0:00 0 S +Zone America/Belize -5:52:48 - LMT 1912 Apr + -6:00 Belize C%sT +Zone Atlantic/Bermuda -4:19:04 - LMT 1930 Jan 1 2:00 # Hamilton + -4:00 - AST 1974 Apr 28 2:00 + -4:00 Bahamas A%sT 1976 + -4:00 US A%sT +Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown + -5:07:12 - KMT 1912 Feb # Kingston Mean Time + -5:00 - EST +Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D +Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S +Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D +Rule CR 1991 only - Jul 1 0:00 0 S +Rule CR 1992 only - Mar 15 0:00 0 S +Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose + -5:36:20 - SJMT 1921 Jan 15 # San Jose Mean Time + -6:00 CR C%sT +Rule Cuba 1928 only - Jun 10 0:00 1:00 D +Rule Cuba 1928 only - Oct 10 0:00 0 S +Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D +Rule Cuba 1940 1942 - Sep Sun>=1 0:00 0 S +Rule Cuba 1945 1946 - Jun Sun>=1 0:00 1:00 D +Rule Cuba 1945 1946 - Sep Sun>=1 0:00 0 S +Rule Cuba 1965 only - Jun 1 0:00 1:00 D +Rule Cuba 1965 only - Sep 30 0:00 0 S +Rule Cuba 1966 only - May 29 0:00 1:00 D +Rule Cuba 1966 only - Oct 2 0:00 0 S +Rule Cuba 1967 only - Apr 8 0:00 1:00 D +Rule Cuba 1967 1968 - Sep Sun>=8 0:00 0 S +Rule Cuba 1968 only - Apr 14 0:00 1:00 D +Rule Cuba 1969 1977 - Apr lastSun 0:00 1:00 D +Rule Cuba 1969 1971 - Oct lastSun 0:00 0 S +Rule Cuba 1972 1974 - Oct 8 0:00 0 S +Rule Cuba 1975 1977 - Oct lastSun 0:00 0 S +Rule Cuba 1978 only - May 7 0:00 1:00 D +Rule Cuba 1978 1990 - Oct Sun>=8 0:00 0 S +Rule Cuba 1979 1980 - Mar Sun>=15 0:00 1:00 D +Rule Cuba 1981 1985 - May Sun>=5 0:00 1:00 D +Rule Cuba 1986 1989 - Mar Sun>=14 0:00 1:00 D +Rule Cuba 1990 1997 - Apr Sun>=1 0:00 1:00 D +Rule Cuba 1991 1995 - Oct Sun>=8 0:00s 0 S +Rule Cuba 1996 only - Oct 6 0:00s 0 S +Rule Cuba 1997 only - Oct 12 0:00s 0 S +Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D +Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S +Rule Cuba 2000 2004 - Apr Sun>=1 0:00s 1:00 D +Rule Cuba 2006 max - Oct lastSun 0:00s 0 S +Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D +Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D +Rule Cuba 2009 max - Mar Sun>=8 0:00s 1:00 D +Zone America/Havana -5:29:28 - LMT 1890 + -5:29:36 - HMT 1925 Jul 19 12:00 # Havana MT + -5:00 Cuba C%sT +Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau + -4:00 - AST +Rule DR 1966 only - Oct 30 0:00 1:00 D +Rule DR 1967 only - Feb 28 0:00 0 S +Rule DR 1969 1973 - Oct lastSun 0:00 0:30 HD +Rule DR 1970 only - Feb 21 0:00 0 S +Rule DR 1971 only - Jan 20 0:00 0 S +Rule DR 1972 1974 - Jan 21 0:00 0 S +Zone America/Santo_Domingo -4:39:36 - LMT 1890 + -4:40 - SDMT 1933 Apr 1 12:00 # S. Dom. MT + -5:00 DR E%sT 1974 Oct 27 + -4:00 - AST 2000 Oct 29 02:00 + -5:00 US E%sT 2000 Dec 3 01:00 + -4:00 - AST +Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D +Rule Salv 1987 1988 - Sep lastSun 0:00 0 S +Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador + -6:00 Salv C%sT +Zone America/Grenada -4:07:00 - LMT 1911 Jul # St George's + -4:00 - AST +Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre + -4:00 - AST +Link America/Guadeloupe America/St_Barthelemy +Link America/Guadeloupe America/Marigot +Rule Guat 1973 only - Nov 25 0:00 1:00 D +Rule Guat 1974 only - Feb 24 0:00 0 S +Rule Guat 1983 only - May 21 0:00 1:00 D +Rule Guat 1983 only - Sep 22 0:00 0 S +Rule Guat 1991 only - Mar 23 0:00 1:00 D +Rule Guat 1991 only - Sep 7 0:00 0 S +Rule Guat 2006 only - Apr 30 0:00 1:00 D +Rule Guat 2006 only - Oct 1 0:00 0 S +Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5 + -6:00 Guat C%sT +Rule Haiti 1983 only - May 8 0:00 1:00 D +Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D +Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S +Rule Haiti 1988 1997 - Apr Sun>=1 1:00s 1:00 D +Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S +Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D +Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S +Zone America/Port-au-Prince -4:49:20 - LMT 1890 + -4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT + -5:00 Haiti E%sT +Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D +Rule Hond 1987 1988 - Sep lastSun 0:00 0 S +Rule Hond 2006 only - May Sun>=1 0:00 1:00 D +Rule Hond 2006 only - Aug Mon>=1 0:00 0 S +Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr + -6:00 Hond C%sT +Zone America/Jamaica -5:07:12 - LMT 1890 # Kingston + -5:07:12 - KMT 1912 Feb # Kingston Mean Time + -5:00 - EST 1974 Apr 28 2:00 + -5:00 US E%sT 1984 + -5:00 - EST +Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France + -4:04:20 - FFMT 1911 May # Fort-de-France MT + -4:00 - AST 1980 Apr 6 + -4:00 1:00 ADT 1980 Sep 28 + -4:00 - AST +Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill + -4:00 - AST +Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D +Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S +Rule Nic 2005 only - Apr 10 0:00 1:00 D +Rule Nic 2005 only - Oct Sun>=1 0:00 0 S +Rule Nic 2006 only - Apr 30 2:00 1:00 D +Rule Nic 2006 only - Oct Sun>=1 1:00 0 S +Zone America/Managua -5:45:08 - LMT 1890 + -5:45:12 - MMT 1934 Jun 23 # Managua Mean Time? + -6:00 - CST 1973 May + -5:00 - EST 1975 Feb 16 + -6:00 Nic C%sT 1992 Jan 1 4:00 + -5:00 - EST 1992 Sep 24 + -6:00 - CST 1993 + -5:00 - EST 1997 + -6:00 Nic C%sT +Zone America/Panama -5:18:08 - LMT 1890 + -5:19:36 - CMT 1908 Apr 22 # Colon Mean Time + -5:00 - EST +Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan + -4:00 - AST 1942 May 3 + -4:00 US A%sT 1946 + -4:00 - AST +Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre + -4:00 - AST +Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries + -4:04:00 - CMT 1912 # Castries Mean Time + -4:00 - AST +Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre + -4:00 - AST 1980 May + -3:00 - PMST 1987 # Pierre & Miquelon Time + -3:00 Canada PM%sT +Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown + -4:04:56 - KMT 1912 # Kingstown Mean Time + -4:00 - AST +Rule TC 1979 1986 - Apr lastSun 2:00 1:00 D +Rule TC 1979 2006 - Oct lastSun 2:00 0 S +Rule TC 1987 2006 - Apr Sun>=1 2:00 1:00 D +Rule TC 2007 max - Mar Sun>=8 2:00 1:00 D +Rule TC 2007 max - Nov Sun>=1 2:00 0 S +Zone America/Grand_Turk -4:44:32 - LMT 1890 + -5:07:12 - KMT 1912 Feb # Kingston Mean Time + -5:00 TC E%sT +Zone America/Tortola -4:18:28 - LMT 1911 Jul # Road Town + -4:00 - AST +Zone America/St_Thomas -4:19:44 - LMT 1911 Jul # Charlotte Amalie + -4:00 - AST diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/pacificnew b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/pacificnew new file mode 100644 index 0000000..5a2988f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/pacificnew @@ -0,0 +1 @@ +Link America/Los_Angeles US/Pacific-New ## diff --git a/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/southamerica b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/southamerica new file mode 100644 index 0000000..c0db4af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/date/zoneinfo/southamerica @@ -0,0 +1,501 @@ +Rule Arg 1930 only - Dec 1 0:00 1:00 S +Rule Arg 1931 only - Apr 1 0:00 0 - +Rule Arg 1931 only - Oct 15 0:00 1:00 S +Rule Arg 1932 1940 - Mar 1 0:00 0 - +Rule Arg 1932 1939 - Nov 1 0:00 1:00 S +Rule Arg 1940 only - Jul 1 0:00 1:00 S +Rule Arg 1941 only - Jun 15 0:00 0 - +Rule Arg 1941 only - Oct 15 0:00 1:00 S +Rule Arg 1943 only - Aug 1 0:00 0 - +Rule Arg 1943 only - Oct 15 0:00 1:00 S +Rule Arg 1946 only - Mar 1 0:00 0 - +Rule Arg 1946 only - Oct 1 0:00 1:00 S +Rule Arg 1963 only - Oct 1 0:00 0 - +Rule Arg 1963 only - Dec 15 0:00 1:00 S +Rule Arg 1964 1966 - Mar 1 0:00 0 - +Rule Arg 1964 1966 - Oct 15 0:00 1:00 S +Rule Arg 1967 only - Apr 2 0:00 0 - +Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 S +Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 - +Rule Arg 1974 only - Jan 23 0:00 1:00 S +Rule Arg 1974 only - May 1 0:00 0 - +Rule Arg 1988 only - Dec 1 0:00 1:00 S +Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 - +Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S +Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 S +Rule Arg 2000 only - Mar 3 0:00 0 - +Rule Arg 2007 only - Dec 30 0:00 1:00 S +Rule Arg 2008 max - Mar Sun>=15 0:00 0 - +Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S + +Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May # Cordoba Mean Time + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 Arg AR%sT +Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 3 + -4:00 - WART 1991 Oct 20 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 Arg AR%sT +Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 3 + -4:00 - WART 1991 Oct 20 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 3 + -4:00 - WART 1991 Oct 20 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 Jun 1 + -4:00 - WART 2004 Jun 13 + -3:00 Arg AR%sT +Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 1 + -4:00 - WART 1991 May 7 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 Jun 1 + -4:00 - WART 2004 Jun 20 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 1 + -4:00 - WART 1991 May 7 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 May 31 + -4:00 - WART 2004 Jul 25 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1990 Mar 4 + -4:00 - WART 1990 Oct 28 + -4:00 1:00 WARST 1991 Mar 17 + -4:00 - WART 1991 Oct 6 + -3:00 1:00 ARST 1992 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1991 Mar 3 + -4:00 - WART 1991 Oct 20 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 Jun 1 + -4:00 - WART 2004 Jun 20 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1990 Mar 4 + -4:00 - WART 1990 Oct 15 + -4:00 1:00 WARST 1991 Mar 1 + -4:00 - WART 1991 Oct 15 + -4:00 1:00 WARST 1992 Mar 1 + -4:00 - WART 1992 Oct 18 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 May 23 + -4:00 - WART 2004 Sep 26 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1990 + -3:00 1:00 ARST 1990 Mar 14 + -4:00 - WART 1990 Oct 15 + -4:00 1:00 WARST 1991 Mar 1 + -4:00 - WART 1991 Jun 1 + -3:00 - ART 1999 Oct 3 + -4:00 1:00 WARST 2000 Mar 3 + -3:00 - ART 2004 May 31 + -4:00 - WART 2004 Jul 25 + -3:00 Arg AR%sT 2008 Jan 21 + -3:00 - ART 2009 Mar 15 + -4:00 Arg WAR%sT +Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May # Cordoba Mean Time + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 Jun 1 + -4:00 - WART 2004 Jun 20 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31 + -4:16:48 - CMT 1920 May # Cordoba Mean Time + -4:00 - ART 1930 Dec + -4:00 Arg AR%sT 1969 Oct 5 + -3:00 Arg AR%sT 1999 Oct 3 + -4:00 Arg AR%sT 2000 Mar 3 + -3:00 - ART 2004 May 30 + -4:00 - WART 2004 Jun 20 + -3:00 Arg AR%sT 2008 Oct 18 + -3:00 - ART +Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad + -4:30 - ANT 1965 # Netherlands Antilles Time + -4:00 - AST +Zone America/La_Paz -4:32:36 - LMT 1890 + -4:32:36 - CMT 1931 Oct 15 # Calamarca MT + -4:32:36 1:00 BOST 1932 Mar 21 # Bolivia ST + -4:00 - BOT # Bolivia Time +Rule Brazil 1931 only - Oct 3 11:00 1:00 S +Rule Brazil 1932 1933 - Apr 1 0:00 0 - +Rule Brazil 1932 only - Oct 3 0:00 1:00 S +Rule Brazil 1949 1952 - Dec 1 0:00 1:00 S +Rule Brazil 1950 only - Apr 16 1:00 0 - +Rule Brazil 1951 1952 - Apr 1 0:00 0 - +Rule Brazil 1953 only - Mar 1 0:00 0 - +Rule Brazil 1963 only - Dec 9 0:00 1:00 S +Rule Brazil 1964 only - Mar 1 0:00 0 - +Rule Brazil 1965 only - Jan 31 0:00 1:00 S +Rule Brazil 1965 only - Mar 31 0:00 0 - +Rule Brazil 1965 only - Dec 1 0:00 1:00 S +Rule Brazil 1966 1968 - Mar 1 0:00 0 - +Rule Brazil 1966 1967 - Nov 1 0:00 1:00 S +Rule Brazil 1985 only - Nov 2 0:00 1:00 S +Rule Brazil 1986 only - Mar 15 0:00 0 - +Rule Brazil 1986 only - Oct 25 0:00 1:00 S +Rule Brazil 1987 only - Feb 14 0:00 0 - +Rule Brazil 1987 only - Oct 25 0:00 1:00 S +Rule Brazil 1988 only - Feb 7 0:00 0 - +Rule Brazil 1988 only - Oct 16 0:00 1:00 S +Rule Brazil 1989 only - Jan 29 0:00 0 - +Rule Brazil 1989 only - Oct 15 0:00 1:00 S +Rule Brazil 1990 only - Feb 11 0:00 0 - +Rule Brazil 1990 only - Oct 21 0:00 1:00 S +Rule Brazil 1991 only - Feb 17 0:00 0 - +Rule Brazil 1991 only - Oct 20 0:00 1:00 S +Rule Brazil 1992 only - Feb 9 0:00 0 - +Rule Brazil 1992 only - Oct 25 0:00 1:00 S +Rule Brazil 1993 only - Jan 31 0:00 0 - +Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 S +Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 - +Rule Brazil 1996 only - Feb 11 0:00 0 - +Rule Brazil 1996 only - Oct 6 0:00 1:00 S +Rule Brazil 1997 only - Feb 16 0:00 0 - +Rule Brazil 1997 only - Oct 6 0:00 1:00 S +Rule Brazil 1998 only - Mar 1 0:00 0 - +Rule Brazil 1998 only - Oct 11 0:00 1:00 S +Rule Brazil 1999 only - Feb 21 0:00 0 - +Rule Brazil 1999 only - Oct 3 0:00 1:00 S +Rule Brazil 2000 only - Feb 27 0:00 0 - +Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S +Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 - +Rule Brazil 2002 only - Nov 3 0:00 1:00 S +Rule Brazil 2003 only - Oct 19 0:00 1:00 S +Rule Brazil 2004 only - Nov 2 0:00 1:00 S +Rule Brazil 2005 only - Oct 16 0:00 1:00 S +Rule Brazil 2006 only - Nov 5 0:00 1:00 S +Rule Brazil 2007 only - Feb 25 0:00 0 - +Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 S +Rule Brazil 2008 max - Oct Sun>=15 0:00 1:00 S +Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 - +Rule Brazil 2012 only - Feb Sun>=22 0:00 0 - +Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 - +Rule Brazil 2015 only - Feb Sun>=22 0:00 0 - +Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 - +Rule Brazil 2023 only - Feb Sun>=22 0:00 0 - +Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 - +Rule Brazil 2026 only - Feb Sun>=22 0:00 0 - +Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 - +Rule Brazil 2034 only - Feb Sun>=22 0:00 0 - +Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 - +Rule Brazil 2037 only - Feb Sun>=22 0:00 0 - +Rule Brazil 2038 max - Feb Sun>=15 0:00 0 - +Zone America/Noronha -2:09:40 - LMT 1914 + -2:00 Brazil FN%sT 1990 Sep 17 + -2:00 - FNT 1999 Sep 30 + -2:00 Brazil FN%sT 2000 Oct 15 + -2:00 - FNT 2001 Sep 13 + -2:00 Brazil FN%sT 2002 Oct 1 + -2:00 - FNT +Zone America/Belem -3:13:56 - LMT 1914 + -3:00 Brazil BR%sT 1988 Sep 12 + -3:00 - BRT +Zone America/Santarem -3:38:48 - LMT 1914 + -4:00 Brazil AM%sT 1988 Sep 12 + -4:00 - AMT 2008 Jun 24 00:00 + -3:00 - BRT +Zone America/Fortaleza -2:34:00 - LMT 1914 + -3:00 Brazil BR%sT 1990 Sep 17 + -3:00 - BRT 1999 Sep 30 + -3:00 Brazil BR%sT 2000 Oct 22 + -3:00 - BRT 2001 Sep 13 + -3:00 Brazil BR%sT 2002 Oct 1 + -3:00 - BRT +Zone America/Recife -2:19:36 - LMT 1914 + -3:00 Brazil BR%sT 1990 Sep 17 + -3:00 - BRT 1999 Sep 30 + -3:00 Brazil BR%sT 2000 Oct 15 + -3:00 - BRT 2001 Sep 13 + -3:00 Brazil BR%sT 2002 Oct 1 + -3:00 - BRT +Zone America/Araguaina -3:12:48 - LMT 1914 + -3:00 Brazil BR%sT 1990 Sep 17 + -3:00 - BRT 1995 Sep 14 + -3:00 Brazil BR%sT 2003 Sep 24 + -3:00 - BRT +Zone America/Maceio -2:22:52 - LMT 1914 + -3:00 Brazil BR%sT 1990 Sep 17 + -3:00 - BRT 1995 Oct 13 + -3:00 Brazil BR%sT 1996 Sep 4 + -3:00 - BRT 1999 Sep 30 + -3:00 Brazil BR%sT 2000 Oct 22 + -3:00 - BRT 2001 Sep 13 + -3:00 Brazil BR%sT 2002 Oct 1 + -3:00 - BRT +Zone America/Bahia -2:34:04 - LMT 1914 + -3:00 Brazil BR%sT 2003 Sep 24 + -3:00 - BRT +Zone America/Sao_Paulo -3:06:28 - LMT 1914 + -3:00 Brazil BR%sT 1963 Oct 23 00:00 + -3:00 1:00 BRST 1964 + -3:00 Brazil BR%sT +Zone America/Campo_Grande -3:38:28 - LMT 1914 + -4:00 Brazil AM%sT +Zone America/Cuiaba -3:44:20 - LMT 1914 + -4:00 Brazil AM%sT 2003 Sep 24 + -4:00 - AMT 2004 Oct 1 + -4:00 Brazil AM%sT +Zone America/Porto_Velho -4:15:36 - LMT 1914 + -4:00 Brazil AM%sT 1988 Sep 12 + -4:00 - AMT +Zone America/Boa_Vista -4:02:40 - LMT 1914 + -4:00 Brazil AM%sT 1988 Sep 12 + -4:00 - AMT 1999 Sep 30 + -4:00 Brazil AM%sT 2000 Oct 15 + -4:00 - AMT +Zone America/Manaus -4:00:04 - LMT 1914 + -4:00 Brazil AM%sT 1988 Sep 12 + -4:00 - AMT 1993 Sep 28 + -4:00 Brazil AM%sT 1994 Sep 22 + -4:00 - AMT +Zone America/Eirunepe -4:39:28 - LMT 1914 + -5:00 Brazil AC%sT 1988 Sep 12 + -5:00 - ACT 1993 Sep 28 + -5:00 Brazil AC%sT 1994 Sep 22 + -5:00 - ACT 2008 Jun 24 00:00 + -4:00 - AMT +Zone America/Rio_Branco -4:31:12 - LMT 1914 + -5:00 Brazil AC%sT 1988 Sep 12 + -5:00 - ACT 2008 Jun 24 00:00 + -4:00 - AMT +Rule Chile 1927 1932 - Sep 1 0:00 1:00 S +Rule Chile 1928 1932 - Apr 1 0:00 0 - +Rule Chile 1942 only - Jun 1 4:00u 0 - +Rule Chile 1942 only - Aug 1 5:00u 1:00 S +Rule Chile 1946 only - Jul 15 4:00u 1:00 S +Rule Chile 1946 only - Sep 1 3:00u 0:00 - +Rule Chile 1947 only - Apr 1 4:00u 0 - +Rule Chile 1968 only - Nov 3 4:00u 1:00 S +Rule Chile 1969 only - Mar 30 3:00u 0 - +Rule Chile 1969 only - Nov 23 4:00u 1:00 S +Rule Chile 1970 only - Mar 29 3:00u 0 - +Rule Chile 1971 only - Mar 14 3:00u 0 - +Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 - +Rule Chile 1973 only - Sep 30 4:00u 1:00 S +Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1987 only - Apr 12 3:00u 0 - +Rule Chile 1988 1989 - Mar Sun>=9 3:00u 0 - +Rule Chile 1988 only - Oct Sun>=1 4:00u 1:00 S +Rule Chile 1989 only - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1990 only - Mar 18 3:00u 0 - +Rule Chile 1990 only - Sep 16 4:00u 1:00 S +Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 - +Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S +Rule Chile 1997 only - Mar 30 3:00u 0 - +Rule Chile 1998 only - Mar Sun>=9 3:00u 0 - +Rule Chile 1998 only - Sep 27 4:00u 1:00 S +Rule Chile 1999 only - Apr 4 3:00u 0 - +Rule Chile 1999 max - Oct Sun>=9 4:00u 1:00 S +Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 - +Rule Chile 2008 only - Mar 30 3:00u 0 - +Rule Chile 2009 max - Mar Sun>=9 3:00u 0 - +Zone America/Santiago -4:42:46 - LMT 1890 + -4:42:46 - SMT 1910 # Santiago Mean Time + -5:00 - CLT 1916 Jul 1 # Chile Time + -4:42:46 - SMT 1918 Sep 1 # Santiago Mean Time + -4:00 - CLT 1919 Jul 1 # Chile Time + -4:42:46 - SMT 1927 Sep 1 # Santiago Mean Time + -5:00 Chile CL%sT 1947 May 22 # Chile Time + -4:00 Chile CL%sT +Zone Pacific/Easter -7:17:44 - LMT 1890 + -7:17:28 - EMT 1932 Sep # Easter Mean Time + -7:00 Chile EAS%sT 1982 Mar 13 21:00 # Easter I Time + -6:00 Chile EAS%sT +Rule CO 1992 only - May 3 0:00 1:00 S +Rule CO 1993 only - Apr 4 0:00 0 - +Zone America/Bogota -4:56:20 - LMT 1884 Mar 13 + -4:56:20 - BMT 1914 Nov 23 # Bogota Mean Time + -5:00 CO CO%sT # Colombia Time +Zone America/Curacao -4:35:44 - LMT 1912 Feb 12 # Willemstad + -4:30 - ANT 1965 # Netherlands Antilles Time + -4:00 - AST +Zone America/Guayaquil -5:19:20 - LMT 1890 + -5:14:00 - QMT 1931 # Quito Mean Time + -5:00 - ECT # Ecuador Time +Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno + -5:00 - ECT 1986 + -6:00 - GALT # Galapagos Time +Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 S +Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 - +Rule Falk 1939 only - Oct 1 0:00 1:00 S +Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 S +Rule Falk 1943 only - Jan 1 0:00 0 - +Rule Falk 1983 only - Sep lastSun 0:00 1:00 S +Rule Falk 1984 1985 - Apr lastSun 0:00 0 - +Rule Falk 1984 only - Sep 16 0:00 1:00 S +Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S +Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 - +Rule Falk 2001 max - Apr Sun>=15 2:00 0 - +Rule Falk 2001 max - Sep Sun>=1 2:00 1:00 S +Zone Atlantic/Stanley -3:51:24 - LMT 1890 + -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time + -4:00 Falk FK%sT 1983 May # Falkland Is Time + -3:00 Falk FK%sT 1985 Sep 15 + -4:00 Falk FK%sT +Zone America/Cayenne -3:29:20 - LMT 1911 Jul + -4:00 - GFT 1967 Oct # French Guiana Time + -3:00 - GFT +Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown + -3:45 - GBGT 1966 May 26 # Br Guiana Time + -3:45 - GYT 1975 Jul 31 # Guyana Time + -3:00 - GYT 1991 + -4:00 - GYT +Rule Para 1975 1988 - Oct 1 0:00 1:00 S +Rule Para 1975 1978 - Mar 1 0:00 0 - +Rule Para 1979 1991 - Apr 1 0:00 0 - +Rule Para 1989 only - Oct 22 0:00 1:00 S +Rule Para 1990 only - Oct 1 0:00 1:00 S +Rule Para 1991 only - Oct 6 0:00 1:00 S +Rule Para 1992 only - Mar 1 0:00 0 - +Rule Para 1992 only - Oct 5 0:00 1:00 S +Rule Para 1993 only - Mar 31 0:00 0 - +Rule Para 1993 1995 - Oct 1 0:00 1:00 S +Rule Para 1994 1995 - Feb lastSun 0:00 0 - +Rule Para 1996 only - Mar 1 0:00 0 - +Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S +Rule Para 1997 only - Feb lastSun 0:00 0 - +Rule Para 1998 2001 - Mar Sun>=1 0:00 0 - +Rule Para 2002 2004 - Apr Sun>=1 0:00 0 - +Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S +Rule Para 2004 max - Oct Sun>=15 0:00 1:00 S +Rule Para 2005 max - Mar Sun>=8 0:00 0 - +Zone America/Asuncion -3:50:40 - LMT 1890 + -3:50:40 - AMT 1931 Oct 10 # Asuncion Mean Time + -4:00 - PYT 1972 Oct # Paraguay Time + -3:00 - PYT 1974 Apr + -4:00 Para PY%sT +Rule Peru 1938 only - Jan 1 0:00 1:00 S +Rule Peru 1938 only - Apr 1 0:00 0 - +Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 S +Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 - +Rule Peru 1986 1987 - Jan 1 0:00 1:00 S +Rule Peru 1986 1987 - Apr 1 0:00 0 - +Rule Peru 1990 only - Jan 1 0:00 1:00 S +Rule Peru 1990 only - Apr 1 0:00 0 - +Rule Peru 1994 only - Jan 1 0:00 1:00 S +Rule Peru 1994 only - Apr 1 0:00 0 - +Zone America/Lima -5:08:12 - LMT 1890 + -5:08:36 - LMT 1908 Jul 28 # Lima Mean Time? + -5:00 Peru PE%sT # Peru Time +Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken + -2:00 - GST # South Georgia Time +Zone America/Paramaribo -3:40:40 - LMT 1911 + -3:40:52 - PMT 1935 # Paramaribo Mean Time + -3:40:36 - PMT 1945 Oct # The capital moved? + -3:30 - NEGT 1975 Nov 20 # Dutch Guiana Time + -3:30 - SRT 1984 Oct # Suriname Time + -3:00 - SRT +Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2 + -4:00 - AST +Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS +Rule Uruguay 1924 1926 - Apr 1 0:00 0 - +Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS +Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS +Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 - +Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS +Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 - +Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS +Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS +Rule Uruguay 1942 only - Jan 1 0:00 0 - +Rule Uruguay 1942 only - Dec 14 0:00 1:00 S +Rule Uruguay 1943 only - Mar 14 0:00 0 - +Rule Uruguay 1959 only - May 24 0:00 1:00 S +Rule Uruguay 1959 only - Nov 15 0:00 0 - +Rule Uruguay 1960 only - Jan 17 0:00 1:00 S +Rule Uruguay 1960 only - Mar 6 0:00 0 - +Rule Uruguay 1965 1967 - Apr Sun>=1 0:00 1:00 S +Rule Uruguay 1965 only - Sep 26 0:00 0 - +Rule Uruguay 1966 1967 - Oct 31 0:00 0 - +Rule Uruguay 1968 1970 - May 27 0:00 0:30 HS +Rule Uruguay 1968 1970 - Dec 2 0:00 0 - +Rule Uruguay 1972 only - Apr 24 0:00 1:00 S +Rule Uruguay 1972 only - Aug 15 0:00 0 - +Rule Uruguay 1974 only - Mar 10 0:00 0:30 HS +Rule Uruguay 1974 only - Dec 22 0:00 1:00 S +Rule Uruguay 1976 only - Oct 1 0:00 0 - +Rule Uruguay 1977 only - Dec 4 0:00 1:00 S +Rule Uruguay 1978 only - Apr 1 0:00 0 - +Rule Uruguay 1979 only - Oct 1 0:00 1:00 S +Rule Uruguay 1980 only - May 1 0:00 0 - +Rule Uruguay 1987 only - Dec 14 0:00 1:00 S +Rule Uruguay 1988 only - Mar 14 0:00 0 - +Rule Uruguay 1988 only - Dec 11 0:00 1:00 S +Rule Uruguay 1989 only - Mar 12 0:00 0 - +Rule Uruguay 1989 only - Oct 29 0:00 1:00 S +Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 - +Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S +Rule Uruguay 1992 only - Oct 18 0:00 1:00 S +Rule Uruguay 1993 only - Feb 28 0:00 0 - +Rule Uruguay 2004 only - Sep 19 0:00 1:00 S +Rule Uruguay 2005 only - Mar 27 2:00 0 - +Rule Uruguay 2005 only - Oct 9 2:00 1:00 S +Rule Uruguay 2006 only - Mar 12 2:00 0 - +Rule Uruguay 2006 max - Oct Sun>=1 2:00 1:00 S +Rule Uruguay 2007 max - Mar Sun>=8 2:00 0 - +Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28 + -3:44:44 - MMT 1920 May 1 # Montevideo MT + -3:30 Uruguay UY%sT 1942 Dec 14 # Uruguay Time + -3:00 Uruguay UY%sT +Zone America/Caracas -4:27:44 - LMT 1890 + -4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time? + -4:30 - VET 1965 # Venezuela Time + -4:00 - VET 2007 Dec 9 03:00 + -4:30 - VET diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/BoundingBoxController.js b/js/dojo-release-1.7.2-src/dojox/dnd/BoundingBoxController.js new file mode 100644 index 0000000..574655c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dnd/BoundingBoxController.js @@ -0,0 +1,139 @@ +define(["dojo", "dojox"], function(dojo, dojox) { + + return dojo.declare('dojox.dnd.BoundingBoxController', null, { + + // summary: Allows the user draw bounding boxes around nodes on the page. + // Publishes to the "/dojox/dnd/bounding" topic to tell the selector to check + // to see whether any dnd items fall within the coordinates of the bounding box + + // x,y start and end coordinates for the bounding box + _startX: null, + _startY: null, + _endX: null, + _endY: null, + + constructor: function(sources, domNode) { + // summary: + // Sets mouse handlers for the document to capture when a user + // is trying to draw a bounding box. + // sources: Array: + // an array of dojox.dnd.Selectors which need to be aware of + // the positioning of the bounding box. + // domNode: String|DomNode: + // the DOM node or id which represents the bounding box on the page. + this.events = [ + dojo.connect(dojo.doc, 'onmousedown', this, '_onMouseDown'), + dojo.connect(dojo.doc, 'onmouseup', this, '_onMouseUp'), + // cancel text selection and text dragging + //dojo.connect(dojo.doc, "ondragstart", dojo.stopEvent), + //dojo.connect(dojo.doc, "onselectstart", dojo.stopEvent), + // when a user is scrolling using a scrollbar, don't draw the bounding box. + dojo.connect(dojo.doc, 'onscroll', this, '_finishSelecting') + ]; + // set up a subscription so the client can easily cancel a user drawing a bounding box. + this.subscriptions = [ + dojo.subscribe('/dojox/bounding/cancel', this, '_finishSelecting') + ]; + dojo.forEach(sources, function(item) { + // listen for "/dojox/dnd/bounding" events eminating from the bounding box. + // for each of the dojox.dnd.selectors passed in args. + if (item.selectByBBox) { + this.subscriptions.push(dojo.subscribe('/dojox/dnd/bounding', item, 'selectByBBox')); + } + }, this); + this.domNode = dojo.byId(domNode); + dojo.style(this.domNode, { + position: 'absolute', + display: 'none' + }); + }, + + destroy: function() { + // summary: + // prepares this object to be garbage-collected + dojo.forEach(this.events, dojo.disconnect); + dojo.forEach(this.subscriptions, dojo.unsubscribe); + this.domNode = null; + }, + + shouldStartDrawingBox: function(evt) { + // summary: Override-able by the client as an extra check to ensure that a bounding + // box should begin to be drawn. If the client has any preconditions to when a + // bounding box should be drawn, they should be included in this method. + // evt: Object: the mouse event which caused this callback to fire. + return true; + }, + + boundingBoxIsViable: function(evt) { + // summary: Override-able by the client as an extra check to ensure that a bounding + // box is viable. In some instances, it might not make sense that + // a mouse down -> mouse move -> mouse up interaction represents a bounding box. + // For example, if a dialog is open the client might want to suppress a bounding + // box. This function could be used by the client to ensure that a bounding box is only + // drawn on the document when certain conditions are met. + // evt: Object: the mouse event which caused this callback to fire. + return true; + }, + + _onMouseDown: function(evt) { + // summary: Executed when the user mouses down on the document. Resets the + // this._startX and this._startY member variables. + // evt: Object: the mouse event which caused this callback to fire. + if (this.shouldStartDrawingBox(evt) && dojo.mouseButtons.isLeft(evt)) { + if (this._startX == null) { + this._startX = evt.clientX; + this._startY = evt.clientY; + } + this.events.push( + dojo.connect(dojo.doc, 'onmousemove', this, '_onMouseMove') + ); + } + }, + + _onMouseMove: function(evt) { + // summary: Executed when the user moves the mouse over the document. Delegates to + // this._drawBoundingBox if the user is trying to draw a bounding box. + // whether the user was drawing a bounding box and publishes to the + // "/dojox/dnd/bounding" topic if the user is finished drawing their bounding box. + // evt: Object: the mouse event which caused this callback to fire. + this._endX = evt.clientX; + this._endY = evt.clientY; + this._drawBoundingBox(); + }, + + _onMouseUp: function(evt) { + // summary: Executed when the users mouses up on the document. Checks to see + // whether the user was drawing a bounding box and publishes to the + // "/dojox/dnd/bounding" topic if the user is finished drawing their bounding box. + // evt: Object: the mouse event which caused this callback to fire. + if (this._endX !== null && this.boundingBoxIsViable(evt)) { + // the user has moused up ... tell the selector to check to see whether + // any nodes within the bounding box need to be selected. + dojo.publish('/dojox/dnd/bounding', [this._startX, this._startY, this._endX, this._endY]); + } + this._finishSelecting(); + }, + + _finishSelecting: function() { + // summary: hide the bounding box and reset for the next time around + if (this._startX !== null) { + dojo.disconnect(this.events.pop()); + dojo.style(this.domNode, 'display', 'none'); + this._startX = null; + this._endX = null; + } + }, + + _drawBoundingBox: function() { + // summary: draws the bounding box over the document. + dojo.style(this.domNode, { + left: Math.min(this._startX, this._endX) + 'px', + top: Math.min(this._startY, this._endY) + 'px', + width: Math.abs(this._startX - this._endX) + 'px', + height: Math.abs(this._startY - this._endY) + 'px', + display: '' + }); + } + } + ); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/README b/js/dojo-release-1.7.2-src/dojox/dnd/README new file mode 100644 index 0000000..3e19a0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dnd/README @@ -0,0 +1,22 @@ +------------------------------------------------------------------------------- +dojox.dnd Simple extensions to dojo.dnd. +------------------------------------------------------------------------------- +Version 1.0 +Release date: 2/1/2010 +------------------------------------------------------------------------------- +Project state: beta +------------------------------------------------------------------------------- +Credits + +Sean O' Shea +Arech +Eugene Lazutkin +------------------------------------------------------------------------------- +Project description + +Extending and augmenting dojo.dnd, a clearing house for future dojo.dnd +additions. +------------------------------------------------------------------------------- +Dependencies + + require Dojo Core diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/Selector.js b/js/dojo-release-1.7.2-src/dojox/dnd/Selector.js new file mode 100644 index 0000000..2eaa7b7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dnd/Selector.js @@ -0,0 +1,210 @@ +define(["dojo", "dojox", "dojo/dnd/Selector"], function(dojo, dojox) { + + return dojo.declare('dojox.dnd.Selector', dojo.dnd.Selector, { + + conservative: true, + + isSelected: function(node) { + // summary: + // checks if node is selected + // node: String|DomNode: + // Node to check (id or DOM Node) + var id = dojo.isString(node) ? node : node.id, + item = this.getItem(id); + return item && this.selected[id]; // Boolean + }, + + selectNode: function(node, add) { + // summary: + // selects a node + // node: String|DomNode: + // Node to select (id or DOM Node) + // add: Boolean?: + // If true, node is added to selection, otherwise current + // selection is removed, and node will be the only selection. + if (!add) { + this.selectNone(); + } + var id = dojo.isString(node) ? node : node.id, + item = this.getItem(id); + if (item) { + this._removeAnchor(); + this.anchor = dojo.byId(node); + this._addItemClass(this.anchor, 'Anchor'); + this.selection[id] = 1; + this._addItemClass(this.anchor, 'Selected'); + } + return this; // self + }, + + deselectNode: function(node) { + // summary: + // deselects a node + // node: String|DomNode: + // Node to deselect (id or DOM Node) + var id = dojo.isString(node) ? node : node.id, + item = this.getItem(id); + if (item && this.selection[id]) { + if (this.anchor === dojo.byId(node)) { + this._removeAnchor(); + } + delete this.selection[id]; + this._removeItemClass(this.anchor, 'Selected'); + } + return this; // self + }, + + selectByBBox: function(left, top, right, bottom, add) { + // summary: + // selects nodes by bounding box + // left: Number: + // Left coordinate of the bounding box + // top: Number: + // Top coordinate of the bounding box + // right: Number: + // Right coordinate of the bounding box + // bottom: Number: + // Bottom coordinate of the bounding box + // add: Boolean?: + // If true, node is added to selection, otherwise current + // selection is removed, and node will be the only selection. + + // user has drawn a bounding box ... time to see whether any dom nodes + // in this container satisfy the bounding box range. + if (!add) { + this.selectNone(); + } + this.forInItems(function(data, id) { + var node = dojo.byId(id); + if (node && this._isBoundedByBox(node, left, top, right, bottom)) { + this.selectNode(id, true); + } + }, this); + return this; // self + }, + + _isBoundedByBox: function(node, left, top, right, bottom) { + // summary: + // figures out whether certain coodinates bound a particular + // dom node. + // node: String|DomNode: + // Node to check (id or DOM Node) + // left: Number: + // Left coordinate of the bounding box + // top: Number: + // Top coordinate of the bounding box + // right: Number: + // Right coordinate of the bounding box + // bottom: Number: + // Bottom coordinate of the bounding box + return this.conservative ? this._conservativeBBLogic(node, left, top, right, bottom) : this._liberalBBLogic(node, left, top, right, bottom); + }, + + shift: function(toNext, add) { + // summary: + // shifts the currently selected dnd item forwards and backwards. + // One possible use would be to allow a user select different + // dnd items using the right and left keys. + // toNext: Boolean: + // If true, we select the next node, otherwise the previous one. + // add: Boolean?: + // If true, add to selection, otherwise current selection is + // removed before adding any nodes. + var selectedNodes = this.getSelectedNodes(); + if (selectedNodes && selectedNodes.length) { + // only delegate to selectNode if at least one node is selected. + // If multiple nodes are selected assume that we go with + // the last selected node. + this.selectNode(this._getNodeId(selectedNodes[selectedNodes.length - 1].id, toNext), add); + } + }, + + _getNodeId: function(nodeId, toNext) { + // summary: + // finds a next/previous node in relation to nodeId + // nodeId: String: + // the id of the node to use as the base node + // toNext: Boolean: + // If true, we select the next node, otherwise the previous one. + var allNodes = this.getAllNodes(), newId = nodeId; + for (var i = 0, l = allNodes.length; i < l; ++i) { + if (allNodes[i].id == nodeId) { + // have a match ... make sure we don't go outside + var j = Math.min(l - 1, Math.max(0, i + (toNext ? 1 : -1))); + if (i != j) { + // we should be fine to go with the id the user has requested. + newId = allNodes[j].id; + } + break; + } + } + // if we don't get a match, the newId defaults to the currently selected node + return newId; + }, + + _conservativeBBLogic: function(node, left, top, right, bottom) { + // summary: + // logic which determines whether a node is bounded by the + // left,top,right,bottom parameters. This function returns true + // only if the coordinates of the node parameter are fully + // encompassed by the box determined by the left, top, right, bottom parameters. + var c = dojo.coords(node), t; + // normalize input + if (left > right) { + t = left; + left = right; + right = t; + } + if (top > bottom) { + t = top; + top = bottom; + bottom = t; + } + return c.x >= left && c.x + c.w <= right && c.y >= top && c.y + c.h <= bottom; // Boolean + }, + + _liberalBBLogic: function(node, left, top, right, bottom) { + // summary: + // logic which determines whether a node is bounded by the + // left,top,right,bottom parameters. Allows for the case where + // any section of the box determined by the left,top,right,bottom parameters + // overlapping the coordinates of the node parameter constitutes a true + // return value + var c = dojo.position(node), xBounded, yBounded, tlx, tly, brx, bry, leftGreater = false, bottomGreater = false, + nodeTlx = c.x, nodeTly = c.y, nodeBrx = c.x + c.w, nodeBry = c.y + c.h; + // tlx, tly represents the x,y coordinates for the top left of the bounding box + // brx, bry represents the x,y coordinates for the bottom right of the bounding box + // nodeTlx, nodeTly represents the x,y coordinates for the top left of the dom node + // nodeBrx, nodeBry represents the x,y coordinates for the bottom right of the dom node + if (left < right) { + tlx = left; + tly = top; + } else { + leftGreater = true; + tlx = right; + tly = bottom; + } + if (top < bottom) { + bottomGreater = true; + brx = right; + bry = bottom; + } else { + brx = left; + bry = top; + tlx = right; + tly = bottom; + } + if (leftGreater && bottomGreater) { + // accommodate for the case where the user is drawing from top down and from right to left. + brx = left; + bry = bottom; + tlx = right; + tly = top; + } + xBounded = (nodeTlx >= tlx || nodeBrx <= brx) && (tlx <= nodeBrx && brx >= nodeTlx) || (nodeTlx <= tlx && nodeBrx >= brx); + yBounded = (tly <= nodeBry && bry >= nodeTly) || (nodeBry >= bry && nodeTly <= bry); + return xBounded && yBounded; // Boolean + } + } + ); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/tests/robot/test_selector.html b/js/dojo-release-1.7.2-src/dojox/dnd/tests/robot/test_selector.html new file mode 100644 index 0000000..e69de29 diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/dnd/tests/runTests.html new file mode 100644 index 0000000..dbfc116 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dnd/tests/runTests.html @@ -0,0 +1,10 @@ + + + + dojox.dnd Unit Test Runner + + + + Redirecting to D.O.H runner. + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/tests/testAll.js b/js/dojo-release-1.7.2-src/dojox/dnd/tests/testAll.js new file mode 100644 index 0000000..cf8da6c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dnd/tests/testAll.js @@ -0,0 +1,8 @@ +dojo.provide('dojox.dnd.tests.testAll'); + +try { + doh.registerUrl('dojox.dnd.tests.selector', dojo.moduleUrl('dojox.dnd.tests', 'test_selector.html')); + doh.registerUrl('dojox.dnd.tests.boundingbox', dojo.moduleUrl('dojox.dnd.tests', 'test_boundingBoxController.html')); +}catch (e) { + doh.debug(e); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/tests/test_boundingBoxController.html b/js/dojo-release-1.7.2-src/dojox/dnd/tests/test_boundingBoxController.html new file mode 100644 index 0000000..7a2ea77 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dnd/tests/test_boundingBoxController.html @@ -0,0 +1,79 @@ + + + + dojox dnd BoundingBoxController + + + + + + +

                            Dojox DnD BoundingBoxController test

                            +
                            +
                            Blonde on Blonde
                            +
                            Highway 61 Revisited
                            +
                            Blood on the Tracks
                            +
                            +
                            + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dnd/tests/test_selector.html b/js/dojo-release-1.7.2-src/dojox/dnd/tests/test_selector.html new file mode 100644 index 0000000..6ee2341 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dnd/tests/test_selector.html @@ -0,0 +1,76 @@ + + + + Dojox DnD selector test + + + + + + +

                            Dojox DnD selector test

                            +

                            Use the up/down arrows to iterate through the list after selecting one.

                            +
                            +
                            Blonde on Blonde
                            +
                            Highway 61 Revisited
                            +
                            Blood on the Tracks
                            +
                            + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dojox.profile.js b/js/dojo-release-1.7.2-src/dojox/dojox.profile.js new file mode 100644 index 0000000..dab25e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dojox.profile.js @@ -0,0 +1,68 @@ +var profile = (function(){ + var testResourceRe = /\/tests\//, + + copyOnly = function(filename, mid){ + var list = { + "dojox/dojox.profile":1, + "dojox/package.json":1, + "dojox/mobile/themes/common/compile":1 + }; + return (mid in list) || /^dojox\/resources\//.test(mid) || /(png|jpg|jpeg|gif|tiff)$/.test(filename); + }, + + excludes = [ + "secure", + "cometd", + "data/(demos|ItemExplorer|StoreExplorer|restListener)", + "drawing", + "editor/plugins/(ResizeTableColumn|SpellCheck)", + "embed/(IE)", + "flash", + "gantt", + "help", + "image/(Gallery|SlideShow|ThumbnailPicker)", + "jq", + "jsonPath", + "lang/(aspect|async|docs|observable|oo|typed|functional/(binrec|curry|linrec|listcomp|multirec|numrec|tailrec|util|zip))", + "layout/(BorderContainer|dnd|ext-dijit)", + "mobile/app/", + "rails", + "robot", + "socket/Reconnect", + "storage", + "sql", + "widget/(AnalogGauge|AutoRotator|BarGauge|Calendar|CalendarFx|CalendarViews|DataPresentation|DocTester|DynamicTooltip|FeedPortlet|FilePicker|FisheyeList|gauge|Iterator|Loader|Pager|Portlet|RollingList|Rotator|rotator|SortList|UpgradeBar)", + "wire", + "xmpp" + ], + + excludesRe = new RegExp(("^dojox/(" + excludes.join("|") + ")").replace(/\//, "\\/")), + + usesDojoProvideEtAl = function(mid){ + return excludesRe.test(mid); + }; + + return { + resourceTags:{ + test: function(filename, mid){ + return testResourceRe.test(mid); + }, + + copyOnly: function(filename, mid){ + return copyOnly(filename, mid); + }, + + amd: function(filename, mid){ + return !testResourceRe.test(mid) && !copyOnly(filename, mid) && !usesDojoProvideEtAl(mid) && /\.js$/.test(filename); + }, + + miniExclude: function(filename, mid){ + return 0; + } + }, + + trees:[ + [".", ".", /(\/\.)|(~$)/] + ] + }; +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/drawing.js b/js/dojo-release-1.7.2-src/dojox/drawing.js new file mode 100644 index 0000000..af74383 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing.js @@ -0,0 +1,2 @@ +dojo.provide("dojox.drawing"); +dojo.require("dojox.drawing._base"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/Drawing.js b/js/dojo-release-1.7.2-src/dojox/drawing/Drawing.js new file mode 100755 index 0000000..f812a63 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/Drawing.js @@ -0,0 +1,562 @@ +dojo.provide("dojox.drawing.Drawing"); + +(function(){ + + var _plugsInitialized = false; + + dojo.declare("dojox.drawing.Drawing", [], { + // summary: + // Drawing is a project that sits on top of DojoX GFX and uses SVG and + // VML vector graphics to draw and display. + // description: + // Drawing is similar to DojoX Sketch, but is designed to be more versatile + // extendable and customizable. + // Drawing currently only initiates from HTML although it's technically not + // a Dijit to keep the file size light. But if Dijit is available, Drawing + // will register itself with it and can be accessed dijit.byId('myDrawing') + // + // NOTES: + // Although not Drawing and Toolbar, all other objects are created with a custom + // declare. See dojox.drawing.util.oo + // + //The files are laid out as such: + // - Drawing + // The master class. More than one instance of a Drawing can be placed + // on a page at one time (although this has not yet been tested). Plugins + // can be added in markup. + // - Toolbar + // Like Drawing, Toolbar is a psudeo Dijit that does not need Dijit. It is + // optional. It can be oriented horizontal or vertical by placing one of + // those params in the class (at least one is required). Plugins + // can be added in markup. A drawingId is required to point toolbar to + // the drawing. + // - defaults + // Contains the default styles and dimensions for Stencils. An individual + // Stencil can be changed by calling stencil.att({color obj}); To change + // all styles, a custom defaults file should be used. + // -Stencils + // Drawing uses a concept of 'Stencils' to avoid confusion between a + // Dojox Shape and a Drawing Shape. The classes in the 'stencils' package + // are display only, they are not used for actually drawing (see 'tools'). + // This package contains _Base from which stencils inherit most of their + // methods.(Path and Image are display only and not found in Tools) + // - Tools + // The Tools package contains Stencils that are attached to mouse events + // and can be used for drawing. Items in this package can also be selected + // and modified. + // - Tools / Custom + // Holds tools that do not directly extend Stencil base classes and often + // have very custom code. + // - Library (not implemented) + // The Library package, which is not yet implemented, will be the place to + // hold stencils that have very specific data points that result in a picture. + // Flag-like-banners, fancy borders, or other complex shapes would go here. + // - Annotations + // Annotations 'decorate' and attach to other Stencils, such as a 'Label' + // that can show text on a stencil, or an 'Angle' that shows while dragging + // or modifying a Vector, or an Arrow head that is attached to the beginning + // or end of a line. + // - Manager + // Contains classes that control functionality of a Drawing. + // - Plugins + // Contains optional classes that are 'plugged into' a Drawing. There are two + // types: 'drawing' plugins that modify the canvas, and 'tools' which would + // show in the toolbar. + // - Util + // A collection of common tasks. + // + // example: + // |
                            + // |
                            + // + // example: + // |
                            + // |
                            Line
                            + // |
                            Rect
                            + // |
                            Ellipse
                            + // |
                            Statement
                            + // |
                            Equation
                            + // |
                            Pan
                            + // |
                            Zoom
                            + // |
                            + // + // + // ready: Boolean + // Whether or not the canvas has been created and Stencils can be added + ready:false, + // mode: [optional] String + // Changes the functionality of the drawing + mode: "", + // width: Number + // Width of the canvas + width:0, + // + // height: Number + // Height of the canvas + height:0, + // + // defaults : Object + // Optional replacements for native defaults. + // plugins: Object + // Key values of plugins that apply to canvas. + // + constructor: function(/* Object */props, /* HTMLNode */node){ + // summary: + // Drawing is not a Dijit. This is the master method. + // NOTE: + // props is always null since this is not a real widget + // Will change when Drawing can be created programmatically. + // + var def = dojo.attr(node, "defaults"); + if(def){ + dojox.drawing.defaults = dojo.getObject(def); + } + this.defaults = dojox.drawing.defaults; + + this.id = node.id; + dojox.drawing.register(this, "drawing"); + this.mode = (props.mode || dojo.attr(node, "mode") || "").toLowerCase(); + var box = dojo.contentBox(node); + this.width = box.w; + this.height = box.h; + this.util = dojox.drawing.util.common; + this.util.register(this); // So Toolbar can find this Drawing DEPRECATED + this.keys = dojox.drawing.manager.keys; + this.mouse = new dojox.drawing.manager.Mouse({util:this.util, keys:this.keys, id:this.mode=="ui"?"MUI":"mse"}); + this.mouse.setEventMode(this.mode); + + this.tools = {}; + this.stencilTypes = {}; + this.stencilTypeMap = {}; + this.srcRefNode = node; // need this? + this.domNode = node; + if(props.plugins){ + this.plugins = eval(props.plugins); + }else{ + this.plugins = []; + } + + this.widgetId = this.id; + dojo.attr(this.domNode, "widgetId", this.widgetId); + // If Dijit is available in the page, register with it + if(dijit && dijit.registry){ + dijit.registry.add(this); + console.log("using dijit") + }else{ + // else fake dijit.byId + // FIXME: This seems pretty hacky. + // Maybe should just encourage jsId + dijit.registry = { + objs:{}, + add:function(obj){ + this.objs[obj.id] = obj; + } + }; + dijit.byId = function(id){ + return dijit.registry.objs[id]; + }; + dijit.registry.add(this); + } + + var stencils = dojox.drawing.getRegistered("stencil"); + for(var nm in stencils){ + this.registerTool(stencils[nm].name); + } + var tools = dojox.drawing.getRegistered("tool"); + for(nm in tools){ + this.registerTool(tools[nm].name); + } + var plugs = dojox.drawing.getRegistered("plugin"); + for(nm in plugs){ + this.registerTool(plugs[nm].name); + } + this._createCanvas(); + + }, + + _createCanvas: function(){ + console.info("drawing create canvas..."); + this.canvas = new dojox.drawing.manager.Canvas({ + srcRefNode:this.domNode, + util:this.util, + mouse:this.mouse, + callback: dojo.hitch(this, "onSurfaceReady") + }); + this.initPlugins(); + }, + + resize: function(/* Object */box){ + // summary: + // Resizes the canvas. + // If within a ContentPane this will get called automatically. + // Can also be called directly. + // + box && dojo.style(this.domNode, { + width:box.w+"px", + height:box.h+"px" + }); + if(!this.canvas){ + this._createCanvas(); + }else if(box){ + this.canvas.resize(box.w, box.h); + } + }, + + startup: function(){ + //console.info("drawing startup") + }, + + getShapeProps: function(/* Object */data, mode){ + // summary: + // The common objects that are mixed into + // a new Stencil. Mostly internal, but could be used. + // + var surface = data.stencilType; + var ui = this.mode=="ui" || mode=="ui"; + return dojo.mixin({ + container: ui && !surface ? this.canvas.overlay.createGroup() : this.canvas.surface.createGroup(), + util:this.util, + keys:this.keys, + mouse:this.mouse, + drawing:this, + drawingType: ui && !surface ? "ui" : "stencil", + style:this.defaults.copy() + }, data || {}); + }, + + addPlugin: function(/* Object */plugin){ + // summary: + // Add a toolbar plugin object to plugins array + // to be parsed + this.plugins.push(plugin); + if(this.canvas.surfaceReady){ + this.initPlugins(); + } + }, + + initPlugins: function(){ + // summary: + // Called from Toolbar after a plugin has been loaded + // The call to this coming from toobar is a bit funky as the timing + // of IE for canvas load is different than other browsers + if(!this.canvas || !this.canvas.surfaceReady){ + var c = dojo.connect(this, "onSurfaceReady", this, function(){ + dojo.disconnect(c); + this.initPlugins(); + }); + return; + } + dojo.forEach(this.plugins, function(p, i){ + var props = dojo.mixin({ + util:this.util, + keys:this.keys, + mouse:this.mouse, + drawing:this, + stencils:this.stencils, + anchors:this.anchors, + canvas:this.canvas + }, p.options || {}); + //console.log('drawing.plugin:::', p.name, props) + this.registerTool(p.name, dojo.getObject(p.name)); + try{ + this.plugins[i] = new this.tools[p.name](props); + }catch(e){ + console.error("Failed to initilaize plugin: " +p.name + ". Did you require it?"); + } + }, this); + this.plugins = []; + _plugsInitialized = true; + // In IE, because the timing is different we have to get the + // canvas position after everything has drawn. *sigh* + this.mouse.setCanvas(); + }, + + onSurfaceReady: function(){ + // summary: + // Event that to which can be connected. + // Fired when the canvas is ready and can be drawn to. + // + this.ready = true; + //console.info("Surface ready") + this.mouse.init(this.canvas.domNode); + this.undo = new dojox.drawing.manager.Undo({keys:this.keys}); + this.anchors = new dojox.drawing.manager.Anchors({drawing:this, mouse:this.mouse, undo:this.undo, util:this.util}); + if(this.mode == "ui"){ + this.uiStencils = new dojox.drawing.manager.StencilUI({canvas:this.canvas, surface:this.canvas.surface, mouse:this.mouse, keys:this.keys}); + }else{ + this.stencils = new dojox.drawing.manager.Stencil({canvas:this.canvas, surface:this.canvas.surface, mouse:this.mouse, undo:this.undo, keys:this.keys, anchors:this.anchors}); + this.uiStencils = new dojox.drawing.manager.StencilUI({canvas:this.canvas, surface:this.canvas.surface, mouse:this.mouse, keys:this.keys}); + } + if(dojox.gfx.renderer=="silverlight"){ + try{ + new dojox.drawing.plugins.drawing.Silverlight({util:this.util, mouse:this.mouse, stencils:this.stencils, anchors:this.anchors, canvas:this.canvas}); + }catch(e){ + throw new Error("Attempted to install the Silverlight plugin, but it was not found."); + } + } + dojo.forEach(this.plugins, function(p){ + p.onSurfaceReady && p.onSurfaceReady(); + }); + + }, + + addUI: function(/* String */type, /* Object */options){ + // summary: + // Use this method to programmatically add Stencils that display on + // the canvas. + // FIXME: Currently only supports Stencils that have been registered, + // which is items in the toolbar, and the additional Stencils at the + // end of onSurfaceReady. This covers all Stencils, but you can't + // use 'display only' Stencils for Line, Rect, and Ellipse. + // arguments: + // type: String + // The final name of the tool, lower case: 'image', 'line', 'textBlock' + // options: + // type: Object + // The parameters used to draw the object. See stencil._Base and each + // tool for specific parameters of teh data or points objects. + // + if(!this.ready){ + var c = dojo.connect(this, "onSurfaceReady", this, function(){ + dojo.disconnect(c); + this.addUI(type, options); + }); + return false; + } + if(options && !options.data && !options.points){ + options = {data:options} + } + if(!this.stencilTypes[type]){ + if(type != "tooltip"){ + console.warn("Not registered:", type); + } + return null; + } + var s = this.uiStencils.register( new this.stencilTypes[type](this.getShapeProps(options, "ui"))); + return s; + }, + + + addStencil: function(/* String */type, /* Object */options){ + // summary: + // Use this method to programmatically add Stencils that display on + // the canvas. + // FIXME: Currently only supports Stencils that have been registered, + // which is items in the toolbar, and the additional Stencils at the + // end of onSurfaceReady. This covers all Stencils, but you can't + // use 'display only' Stencils for Line, Rect, and Ellipse. + // arguments: + // type: String + // The final name of the tool, lower case: 'image', 'line', 'textBlock' + // options: + // type: Object + // The parameters used to draw the object. See stencil._Base and each + // tool for specific parameters of teh data or points objects. + // + if(!this.ready){ + var c = dojo.connect(this, "onSurfaceReady", this, function(){ + dojo.disconnect(c); + this.addStencil(type, options); + }); + return false; + } + if(options && !options.data && !options.points){ + options = {data:options} + } + var s = this.stencils.register( new this.stencilTypes[type](this.getShapeProps(options))); + // need this or not? + //s.connect(s, "destroy", this, "onDeleteStencil"); + this.currentStencil && this.currentStencil.moveToFront(); + return s; + }, + + removeStencil: function(/* Object */stencil){ + // summary: + // Use this method to programmatically remove Stencils from the canvas. + // arguments: + // Stencil: Object + // The Stencil to be removed + // + this.stencils.unregister(stencil); + stencil.destroy(); + }, + + removeAll: function(){ + // summary: + // Deletes all Stencils on the canvas. + this.stencils.removeAll(); + }, + + selectAll: function(){ + // summary: + // Selects all stencils + this.stencils.selectAll(); + }, + + toSelected: function(/*String*/func /*[args, ...]*/){ + // summary: + // Call a function within all selected Stencils + // like attr() + // example: + // | myDrawing.toSelected('attr', {x:10}) + // + this.stencils.toSelected.apply(this.stencils, arguments); + }, + + exporter: function(){ + // summary: + // Collects all Stencil data and returns an + // Array of objects. + console.log("this.stencils", this.stencils); + return this.stencils.exporter(); //Array + }, + + importer: function(/* Array */objects){ + // summary: + // Handles an Array of stencil data and imports the objects + // to the drawing. + dojo.forEach(objects, function(m){ + this.addStencil(m.type, m); + }, this); + }, + + changeDefaults: function(/*Object*/newStyle,/*boolean*/value){ + // summary: + // Change the defaults so that all Stencils from this + // point on will use the newly changed style. + // arguments: + // newStyle: Object + // An object that represents one of the objects in + // drawing.style that will be mixed in. Not all + // properties are necessary. Only one object may + // be changed at a time. The object boolean parameter + // is not required and if not set objects will automatically + // be changed. + // Changing non-objects like angleSnap requires value + // to be true. + // example: + // | myDrawing.changeDefaults({ + // | norm:{ + // | fill:"#0000ff", + // | width:5, + // | color:"#ffff00" + // | } + // | }); + // + //console.log("----->>> changeDefault: ",newStyle, " value?: ",value); + if(value!=undefined && value){ + for(var nm in newStyle){ + this.defaults[nm] = newStyle[nm]; + } + }else{ + for(var nm in newStyle){ + for(var n in newStyle[nm]){ + //console.log(" copy", nm, n, " to: ", newStyle[nm][n]); + this.defaults[nm][n] = newStyle[nm][n]; + } + } + } + + if(this.currentStencil!=undefined && (!this.currentStencil.created || this.defaults.clickMode)){ + this.unSetTool(); + this.setTool(this.currentType); + } + }, + + onRenderStencil: function(/* Object */stencil){ + // summary: + // Event that fires when a stencil is drawn. Does not fire from + // 'addStencil'. + // + //console.info("--------------------------------------dojox.drawing.onRenderStencil:", stencil.id); + + this.stencils.register(stencil); + this.unSetTool(); + if(!this.defaults.clickMode){ + this.setTool(this.currentType); + }else{ + this.defaults.clickable = true; + } + }, + + onDeleteStencil: function(/* Object */stencil){ + // summary: + // Event fired from a stencil that has destroyed itself + // will also be called when it is removed by "removeStencil" + // or stencils.onDelete. + // + this.stencils.unregister(stencil); + }, + + registerTool: function(/* String */type){ + // summary: + // Registers a tool that can be accessed. Internal. + if(this.tools[type]){ return; } + var constr = dojo.getObject(type); + //console.log("constr:", type) + this.tools[type] = constr; + var abbr = this.util.abbr(type); + this.stencilTypes[abbr] = constr; + this.stencilTypeMap[abbr] = type; + }, + + getConstructor: function(/*String*/abbr){ + // summary: + // Returns a Stencil constructor base on + // abbreviation + return this.stencilTypes[abbr]; + }, + + setTool: function(/* String */type){ + // summary: + // Sets up a new class to be used to draw. Called from Toolbar, + // and this class... after a tool is used a new one of the same + // type is initialized. Could be called externally. + // + if(this.mode=="ui"){ return; } + if(!this.canvas || !this.canvas.surface){ + var c = dojo.connect(this, "onSurfaceReady", this, function(){ + dojo.disconnect(c); + this.setTool(type); + }); + return; + } + if(this.currentStencil){ + this.unSetTool(); + } + + this.currentType = this.tools[type] ? type : this.stencilTypeMap[type]; + //console.log("new tool arg:", type, "curr:", this.currentType, "mode:", this.mode, "tools:", this.tools) + + try{ + this.currentStencil = new this.tools[this.currentType]({container:this.canvas.surface.createGroup(), util:this.util, mouse:this.mouse, keys:this.keys}); + console.log("new tool is:", this.currentStencil.id, this.currentStencil); + if(this.defaults.clickMode){ this.defaults.clickable = false; } + this.currentStencil.connect(this.currentStencil, "onRender", this, "onRenderStencil"); + this.currentStencil.connect(this.currentStencil, "destroy", this, "onDeleteStencil"); + }catch(e){ + console.error("dojox.drawing.setTool Error:", e); + console.error(this.currentType + " is not a constructor: ", this.tools[this.currentType]); + //console.trace(); + } + }, + + set: function(name, value){ + // summary: + // Drawing registers as a widget and needs to support + // widget's api. + console.info("Attempting to set ",name," to: ",value,". Set currently not fully supported in Drawing"); + }, + + unSetTool: function(){ + // summary: + // Destroys current tool + if(!this.currentStencil.created){ + this.currentStencil.destroy(); + } + + } + }); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/README b/js/dojo-release-1.7.2-src/dojox/drawing/README new file mode 100644 index 0000000..e14f3a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/README @@ -0,0 +1,36 @@ +------------------------------------------------------------------------------- +Drawing +------------------------------------------------------------------------------- +Version 0.1 +Release date: August 22, 2009 +------------------------------------------------------------------------------- +Project state: alpha + The code is very well tested with relatively few bugs. But it is also in a + state where APIs and methods can still change. +------------------------------------------------------------------------------- +Project author + Mike Wilcox anm8tr AT yahoo.com +------------------------------------------------------------------------------- +Project description + +Drawing is a project that sits on top of DojoX GFX and uses SVG and VML vector +graphics to draw and display. +------------------------------------------------------------------------------- +Dependencies: + +dojo.gfx +------------------------------------------------------------------------------- +Documentation + +http://dojotoolkit.org/reference-guide/dojox/drawing.html +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/dojo/dojox/trunk/drawing.js +http://svn.dojotoolkit.org/dojo/dojox/trunk/drawing/* + +Install into the following directory structure: +/dojox/drawing/ + +...which should be at the same level as your Dojo checkout. diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/_base.js b/js/dojo-release-1.7.2-src/dojox/drawing/_base.js new file mode 100644 index 0000000..0056158 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/_base.js @@ -0,0 +1,36 @@ +dojo.provide("dojox.drawing._base"); +dojo.experimental("dojox.drawing"); + +dojo.require("dojox.drawing.manager._registry"); +dojo.require("dojox.gfx"); +dojo.require("dojox.drawing.Drawing"); +dojo.require("dojox.drawing.util.oo"); +dojo.require("dojox.drawing.util.common"); +dojo.require("dojox.drawing.util.typeset"); +dojo.require("dojox.drawing.defaults"); +dojo.require("dojox.drawing.manager.Canvas"); + +// interactive managers +dojo.require("dojox.drawing.manager.Undo"); +dojo.require("dojox.drawing.manager.keys"); +dojo.require("dojox.drawing.manager.Mouse"); +dojo.require("dojox.drawing.manager.Stencil"); +dojo.require("dojox.drawing.manager.StencilUI"); // plugin? or as a require? good here? in toolbar? +dojo.require("dojox.drawing.manager.Anchors"); + +// standard stencils +dojo.require("dojox.drawing.stencil._Base"); +dojo.require("dojox.drawing.stencil.Line"); +dojo.require("dojox.drawing.stencil.Rect"); +dojo.require("dojox.drawing.stencil.Ellipse"); +dojo.require("dojox.drawing.stencil.Path"); +dojo.require("dojox.drawing.stencil.Text"); +dojo.require("dojox.drawing.stencil.Image"); + +// annotations are built within stencil/_Base.js +// would like to optionally include them, but for +// now it's mandatory. +dojo.require("dojox.drawing.annotations.Label"); +dojo.require("dojox.drawing.annotations.Angle"); +dojo.require("dojox.drawing.annotations.Arrow"); +dojo.require("dojox.drawing.annotations.BoxShadow"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/annotations/Angle.js b/js/dojo-release-1.7.2-src/dojox/drawing/annotations/Angle.js new file mode 100755 index 0000000..d80c22d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/annotations/Angle.js @@ -0,0 +1,104 @@ +dojo.provide("dojox.drawing.annotations.Angle"); + +dojox.drawing.annotations.Angle = dojox.drawing.util.oo.declare( + // summary: + // When initiated, an HTML box will hover near the Stencil, + // displaying it's angle while drawn or modified. Currently + // only works with Vector, Line, Arrow, and Axes. + // description: + // Annotation is positioned with dojox.drawing.util.positioning.angle + // That method should be overwritten for custom placement. + // Called internally. To initiaize: + // TODO: currently always on + // + function(/*Object*/options){ + // arguments: + // options: Object + // One key value: the stencil that called this. + // + this.stencil = options.stencil; + this.util = options.stencil.util; + this.mouse = options.stencil.mouse; + + this.stencil.connectMult([ + ["onDrag", this, "showAngle"], + ["onUp", this, "hideAngle"], + ["onTransformBegin", this, "showAngle"], + ["onTransform", this, "showAngle"], + ["onTransformEnd", this, "hideAngle"] + ]); + }, + { + type:"dojox.drawing.tools.custom", + angle:0, + + showAngle: function(){ + // summary: + // Called to display angle + // + if(!this.stencil.selected && this.stencil.created){ return; } + if(this.stencil.getRadius() < this.stencil.minimumSize){ + this.hideAngle(); + return; + } + var node = this.getAngleNode(); + var d = this.stencil.pointsToData(); + var pt = dojox.drawing.util.positioning.angle({x:d.x1,y:d.y1},{x:d.x2,y:d.y2}); + var sc = this.mouse.scrollOffset(); + var mx = this.stencil.getTransform(); + var dx = mx.dx / this.mouse.zoom; + var dy = mx.dy / this.mouse.zoom; + pt.x /= this.mouse.zoom; + pt.y /= this.mouse.zoom; + + // adding _offX & _offY since this is HTML + // and we are from the page corner, not + // the canvas corner + var x = this.stencil._offX + pt.x - sc.left + dx; + var y = this.stencil._offY + pt.y - sc.top + dy; + dojo.style(node, { + left: x + "px", + top: y + "px", + align:pt.align + }); + + var angle=this.stencil.getAngle(); + if(this.stencil.style.zAxis && this.stencil.shortType=="vector"){ + node.innerHTML = this.stencil.data.cosphi > 0 ? "out of" : "into"; + }else if(this.stencil.shortType=="line"){ + node.innerHTML = this.stencil.style.zAxis?"out of":Math.ceil(angle%180); + }else{ + node.innerHTML = Math.ceil(angle); + } + }, + + getAngleNode: function(){ + // summary: + // Gets or creates HTMLNode used for display + if(!this._angleNode){ + this._angleNode = dojo.create("span", null, dojo.body()); + dojo.addClass(this._angleNode, "textAnnotation"); + dojo.style(this._angleNode, "opacity", 1); + } + return this._angleNode; //HTMLNode + }, + + hideAngle: function(){ + // summary: + // Turns display off. + // + if(this._angleNode && dojo.style(this._angleNode, "opacity")>0.9){ + + dojo.fadeOut({node:this._angleNode, + duration:500, + onEnd: function(node){ + dojo.destroy(node); + } + }).play(); + this._angleNode = null; + } + + } + } + +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/annotations/Arrow.js b/js/dojo-release-1.7.2-src/dojox/drawing/annotations/Arrow.js new file mode 100755 index 0000000..877be7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/annotations/Arrow.js @@ -0,0 +1,71 @@ +dojo.provide("dojox.drawing.annotations.Arrow"); +dojo.require("dojox.drawing.stencil.Path"); + +dojox.drawing.annotations.Arrow = dojox.drawing.util.oo.declare( + // summary: + // An annotation called internally to put an arrowhead + // on ether end of a Line. Initiated in Arrow (and Vector) + // with the optional params: arrowStart and arrowEnd. Both + // default true for Axes. + // + dojox.drawing.stencil.Path, + function(/* dojox.__stencilArgs */options){ + // arguments: See stencil._Base + this.stencil.connectMult([ + [this.stencil, "select", this, "select"], + [this.stencil, "deselect", this, "deselect"], + [this.stencil, "render", this, "render"], + [this.stencil, "onDelete", this, "destroy"] + ]); + + this.connect("onBeforeRender", this, function(){ + var o = this.stencil.points[this.idx1]; + var c = this.stencil.points[this.idx2]; + if(this.stencil.getRadius() >= this.minimumSize){ + this.points = this.arrowHead(c.x, c.y, o.x, o.y, this.style); + }else{ + this.points = []; + } + }); + + }, + { + idx1:0, + idx2:1, + + subShape:true, + minimumSize:30, + //annotation:true, NOT! + + arrowHead: function(x1, y1, x2, y2, style){ + // summary: + // Creates data used to draw arrow head. + // + var obj = { + start:{ + x:x1, + y:y1 + }, + x:x2, + y:y2 + } + var angle = this.util.angle(obj); + + var lineLength = this.util.length(obj); + var al = style.arrows.length; + var aw = style.arrows.width/2; + if(lineLength
                            + // See: + // Drawing.changeDefaults + // + // Determines whether in draw or edit mode (whether stencils + // are clickable. If clickMode is false, the original + // functionality of silently switching between select modes + // is enabled. If clickMode is true, it allows powerpoint- + // like functionality. Clickable is used by powerpoint to + // distinguish when things can be selected and when they can't + clickMode:true, + clickable:true, + + // current: Object + // current will point to either null or selected + current:null, + // currentHit: Object + // currentHit will point to either hitNorm or hitSelected + currentHit:null, + + // angleSnap: Number + // Line, arrows, vector and axes will all snap to this angle on mouse up + // shown angle also reflects the snap + // currently cannot accept less than 1 degree + angleSnap:1, + + // zAxis: Boolean + // If true, draw current object in z-direction. + // zAxisEnabled: Boolean + // If true, render axes with Z-axis included, allow objects drawn in z-direction. + // If false the z-axis button will not show up. + zAxis: false, + zAxisEnabled: true, + zAngle: 225, + + // renderHitLines: Boolean + // If true, renders a second, larger layer for lines to make + // them more easily clickable. + renderHitLines: true, + // + // renderHitLayer: + // If true, renders a second layer for each Stencil, one + // acting as a 'hit' object for a wider mouse-click area. + // It also doubles as a hilight. If true, overrides + // renderHitLines setting. + renderHitLayer:true, + + // labelSameColor: + // If true, the label text color will be the same as the + // Stencil's line color. + labelSameColor:false, + + // + useSelectedStyle: true, + + norm:{ + // summary: + // Normal style of all shapes + // will get overridden by + // above andes styles + width:1, + color:"#000000", + style:"Solid", + cap:"round", // square, butt, round + fill:"#CCCCCC" + }, + + selected:{ + // summary: + // Selected style of all shapes + // styles not shown will used from + // norm + width:6, + color:"#00FF00" + }, + + highlighted:{ + // summary: + // Highlighted style of all shapes + // NOT CURRENTLY BEING USED + width:6, + color:"#FF00FF", + style:"Solid", + cap:"round", + fill:"#E11EBB" + }, + + disabled:{ + // summary: + // Disabled or "locked" or "fade" style of all shapes + width:1, + color:"#666666", + style:"solid", + cap:"round", + fill:"#cccccc" + }, + + // "hit" refers to the hidden object below the shape + // that is usually larger than the object to give a + // larger 'target' to click upon. These hit objects + // double as highlights. + // + hitNorm:{ + // summary: + // Normal style of a hit area + width:6, + color:{r:0, g:255, b:255, a:0}, + style:"Solid", + cap:"round", + fill:{r:255, g:255, b:255, a:0} + }, + hitSelected:{ + // summary: + // Selected style of a hit area + width:6, + color:"#FF9900", + style:"Solid", + cap:"round", + fill:{r:255, g:255, b:255, a:0} + }, + hitHighlighted:{ + // summary: + // Highlighted style of a hit area + width:6, + color:"#FFFF00", + style:"Solid", + cap:"round", + fill:{r:255, g:255, b:255, a:0} + }, + + + anchors:{ + // summary: + // Style for the anchor resize-points + size:10, + width:2, + color:"#999", + style:"solid", + fill:"#fff", + cap:"square", + minSize:10, + marginZero:5 // not really an anchor prop + }, + arrows:{ + // summary: + // Size of arrows on vectors. + // length is in pixels + // width is actually an angle + // but is close to pixels in size + length:30, + width:16 + }, + text:{ + // summary: + // Style of text + minWidth:100, + deleteEmptyCreate:true, + deleteEmptyModify:true, + pad:3, + size:"18px", + family:"sans-serif", + weight:"normal", + color:"#000000" + }, + textDisabled:{ + // summary: + // Style of disabled text + size:"18px", + family:"sans-serif", + weight:"normal", + color:"#cccccc" + }, + + textMode:{ + // summary: + // These styles apply to the containing + // text box (edit mode), and not the text itself + create:{ + width:2, + style:"dotted", + color:"#666666", + fill:null + }, + edit:{ + width:1, + style:"dashed", + color:"#666", + fill:null + } + + }, + + button:{ + norm:{ + "color": "#cccccc", + "fill": { + type:"linear", + x1:0, x2:0, y1:0, y2:100, + colors:[ + {offset:.5, color:"#ffffff"}, + {offset:1, color:"#e5e5e5"} + ] + } + }, + over:{ + "fill": { + type:"linear", + x1:0, x2:0, y1:0, y2:100, + colors:[{offset:.5, color:"#ffffff"}, {offset:1, color:"#e1eaf5"}] + }, + "color": "#92a0b3" + }, + down:{ + "fill": { + type:"linear", + x1:0, x2:0, y1:0, y2:100, + colors:[{offset:0, color:"#e1eaf5"}, {offset:1, color:"#ffffff"}] + }, + "color": "#92a0b3" + }, + selected:{ + "fill": { + type:"linear", + x1:0, x2:0, y1:0, y2:100, + colors:[{offset:0, color:"#97b4bf"}, {offset:1, color:"#c8dae1"}] + }, + "color": "#92a0b3" + }, + icon:{ + norm:{ + fill:null, + color:"#92a0b3" + }, + selected:{ + fill:"#ffffff", + color:"#92a0b3" + } + } + }, + + copy: function(){ + // summary + // Each shape gets its own copy + // of these styles so that instances + // do not change each other's styles + // + var cpy = function(obj){ + if(typeof(obj)!="object" || obj===null || obj===undefined){ + return obj; + } + var o; + if(obj.push){ + o = []; + for(var i=0; i + "beta": 946, //beta, U+03B2 ISOgrk3 --> + "gamma": 947, //gamma, U+03B3 ISOgrk3 --> + "delta": 948, //delta, U+03B4 ISOgrk3 --> + "epsilon": 949, //epsilon, U+03B5 ISOgrk3 --> + "zeta": 950, //zeta, U+03B6 ISOgrk3 --> + "eta": 951, //eta, U+03B7 ISOgrk3 --> + "theta": 952, //theta, U+03B8 ISOgrk3 --> + "iota": 953, //iota, U+03B9 ISOgrk3 --> + "kappa": 954, //kappa, U+03BA ISOgrk3 --> + "lambda": 955, //lambda, U+03BB ISOgrk3 --> + "mu": 956, //mu, U+03BC ISOgrk3 --> + "nu": 957, //nu, U+03BD ISOgrk3 --> + "xi": 958, //xi, U+03BE ISOgrk3 --> + "omicron": 959, //omicron, U+03BF NEW --> + "pi": 960, //pi, U+03C0 ISOgrk3 --> + "rho": 961, //rho, U+03C1 ISOgrk3 --> + "sigmaf": 962, //final sigma, U+03C2 ISOgrk3 --> + "sigma": 963, //sigma, U+03C3 ISOgrk3 --> + "tau": 964, //tau, U+03C4 ISOgrk3 --> + "upsilon": 965, //upsilon, U+03C5 ISOgrk3 --> + "phi": 966, //phi, U+03C6 ISOgrk3 --> + "chi": 967, //chi, U+03C7 ISOgrk3 --> + "psi": 968, //psi, U+03C8 ISOgrk3 --> + "omega": 969, //omega, U+03C9 ISOgrk3 --> + "thetasym": 977, //theta symbol, U+03D1 NEW --> + "upsih": 978, // upsilon with hook symbol, U+03D2 NEW --> + "piv": 982, // greek pi symbol, U+03D6 ISOgrk3 --> + "Alpha": 913, // alpha, U+0391 --> + "Beta": 914, // beta, U+0392 --> + "Gamma": 915, //gamma, U+0393 ISOgrk3 --> + "Delta": 916, //delta, U+0394 ISOgrk3 --> + "Epsilon": 917, //epsilon, U+0395 --> + "Zeta": 918, //zeta, U+0396 --> + "Eta": 919, //eta, U+0397 --> + "Theta": 920, //theta, U+0398 ISOgrk3 --> + "Iota": 921, //iota, U+0399 --> + "Kappa": 922, //kappa, U+039A --> + "Lambda": 923, //lambda, U+039B ISOgrk3 --> + "Mu": 924, //mu, U+039C --> + "Nu": 925, //nu, U+039D --> + "Xi": 926, //xi, U+039E ISOgrk3 --> + "Omicron": 927, //omicron, U+039F --> + "Pi": 928, //pi, U+03A0 ISOgrk3 --> + "Rho": 929, //rho, U+03A1 --> + "Sigma": 931, //sigma, U+03A3 ISOgrk3 --> + "Tau": 932, //tau, U+03A4 --> + "Upsilon": 933, //upsilon, U+03A5 ISOgrk3 --> + "Phi": 934, //phi, U+03A6 ISOgrk3 --> + "Chi": 935, //chi, U+03A7 --> + "Psi": 936, //psi, U+03A8 ISOgrk3 --> + "Omega": 937 //omega, U+03A9 ISOgrk3 --> +}; + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/library/icons.js b/js/dojo-release-1.7.2-src/dojox/drawing/library/icons.js new file mode 100644 index 0000000..ea73d08 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/library/icons.js @@ -0,0 +1,161 @@ +dojo.provide("dojox.drawing.library.icons"); + +dojox.drawing.library.icons = { + // summary: + // A collection of icon Stencils for use with the buttons in the ui/Toolbar. + // description: + // Each icon name coresponds to a Stencil or a Plugin. One can be inserted + // into a button by adding the property: 'icon', which points to one of + // these Stencil objects. + line:{ + type:"line", + borderWidth:1, + x1:20, + y1:20, + x2:80, + y2:80 + }, + ellipse:{ + type:"ellipse", + borderWidth:1, + cx:50, + cy:50, + rx:35, + ry:20 + }, + rect:{ + type:"rect", + borderWidth:1, + x:10, + y:30, + width:80, + height:40 + }, + triangle:{ + type:"path", + borderWidth:1, + closePath:true, + points:[{x:50, y:10}, {x:10, y:90}, {x:90, y:90}] + }, + path:{ + type:"path", + borderWidth:0, + closePath:true, + points:[ { x:20, y:80 }, { x:26, y:20 }, { x:80, y:32 }, { x:32, y:50 }, { x:56, y:62 } ] + }, + arrow:{ + type:"path", + borderWidth:1, + closePath:false, + points:[ { x:20, y:20 }, { x:80, y:80 }, { t:'M', x:74, y:56 }, { x:80, y:80 }, { x:56, y:74 } ] + }, + textBlock:{ + type:"path", + borderWidth:0, + closePath:true, + points:[ { x:20, y:20 }, { x:80, y:20 }, { x:80, y:38 }, { x:80, y:38 }, { x:74, y:32 }, { x:68, y:26 }, { x:56, y:20 }, { x:56, y:68 }, { x:56, y:74 }, { x:62, y:80 }, { x:68, y:80 }, { x:68, y:80 }, { x:32, y:80 }, { x:32, y:80 }, { x:38, y:80 }, { x:44, y:74 }, { x:44, y:68 }, { x:44, y:20 }, { x:32, y:26 }, { x:26, y:32 }, { x:20, y:38 }, { x:20, y:38 } ] + }, + + equation:{ + type:"path", + borderWidth:2, + closePath:false, + points:[ {x:20, y:60 }, { x:80, y:60 }, {t:'M', x:20, y:40 }, { x:80, y:40 } ] + }, + + axes:{ + type:"path", + borderWidth:1, + closePath:false, + points:[ { x:20, y:32 }, { x:26, y:20 }, { x:32, y:32 }, { t:'M', x:26, y:20 }, { x:26, y:74 }, { x:80, y:74 }, { t:'M', x:68, y:68 }, { x:80, y:74 }, { x:68, y:80 } ] + }, + vector:{ + type:"path", + borderWidth:1, + closePath:false, + points:[ { x:20, y:80 }, { x:80, y:20 }, { t:'M', x:62, y:26 }, { x:80, y:20 }, { x:73, y:40 }, { t:'M', x:56, y:56 }, { x:62, y:68 }, { x:62, y:74 } ] + }, + pan:{ + type:"path", + borderWidth:1, + closePath:true, + points:[ { x:38, y:80 }, { x:26, y:68 }, { x:20, y:50 }, { x:26, y:44 }, { x:26, y:44 }, { x:38, y:56 }, { x:32, y:32 }, { x:32, y:26 }, { x:38, y:26 }, { x:44, y:44 }, { x:44, y:20 }, { x:50, y:20 }, { x:56, y:20 }, { x:56, y:44 }, { x:56, y:26 }, { x:62, y:26 }, { x:68, y:26 }, { x:68, y:50 }, { x:68, y:32 }, { x:74, y:32 }, { x:80, y:38 }, { x:80, y:50 }, { x:74, y:68 }, { x:68, y:80 } ] + }, + + plus:{ + type:"path", + borderWidth:3, + closePath:false, + points:[ { x:50, y:20 }, { x:50, y:80 }, { t:"M", x:20, y:50 }, { x:80, y:50 } ] + }, + zoomIn:{ + type:"path", + borderWidth:3, + closePath:false, + points:[ { x:50, y:20 }, { x:50, y:80 }, { t:"M", x:20, y:50 }, { x:80, y:50 } ] + }, + zoomOut:{ + type:"path", + borderWidth:3, + closePath:false, + points:[ {x:20, y:50 }, { x:80, y:50 } ] + }, + zoom100:{ + type:"text", + text:"100%" + }, + iconize:{ + type:"path", + borderWidth:0, + closePath:true, + points: + +[ +{ x:20, y:38 }, +{ x:32, y:26 }, +{ x:44, y:26 }, +{ x:56, y:38 }, +{ x:56, y:50 }, +{ x:44, y:62 }, +{ x:32, y:62 }, +{ x:20, y:56 }, +{ t:'Z' }, +{ t:'M', x:38, y:44 }, +{ x:68, y:44 }, +{ x:68, y:80 }, +{ x:38, y:80 }, +{ t:'Z' }, +{ t:'M', x:56, y:62 }, +{ x:68, y:20 }, +{ x:80, y:62 } +] + + }, + pencil:{ + type:"path", + borderWidth:0, + closePath:true, + points: + +[ +{ x:20, y:80 }, +{ x:26, y:68 }, +{ x:68, y:20 }, +{ x:80, y:20 }, +{ x:80, y:32 }, +{ x:38, y:74 }, +{ t:'Z' }, +{ t:'M', x:62, y:32 }, +{ x:68, y:26 }, +{ x:74, y:26 }, +{ x:74, y:32 }, +{ x:68, y:38 }, +{ x:68, y:32 }, +{ t:'Z' }, +{ t:'M', x:56, y:38 }, +{ x:62, y:38 }, +{ x:32, y:68 }, +{ x:32, y:68 } +] + } +}; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/Anchors.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Anchors.js new file mode 100755 index 0000000..ef5ae39 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Anchors.js @@ -0,0 +1,464 @@ +dojo.provide("dojox.drawing.manager.Anchors"); + +dojox.drawing.manager.Anchors = dojox.drawing.util.oo.declare( + // summary: + // Creates and manages the anchor points that are attached to + // (usually) the corners of a Stencil. + // description: + // Used internally, but there are some things that should be known: + // Anchors attach to a Stencil's 'points' (See stencil.points) + // To not display an anchor on a certain point, add noAnchor:true + // to the point. + + function(/* dojox.__stencilArgs */options){ + // arguments: See stencil._Base + this.mouse = options.mouse; + this.undo = options.undo; + this.util = options.util; + this.drawing = options.drawing; + this.items = {}; + }, + { + onAddAnchor: function(/*Anchor*/anchor){ + // summary: + // Event fires when anchor is created + }, + + + onReset: function(/*Stencil*/stencil){ + // summary: + // Event fires when an anchor's reset method is called + // + // a desperate hack in order to get the anchor point to reset. + // FIXME: Is this still used? I think its item.deselect();item.select(); + var st = this.util.byId("drawing").stencils; + st.onDeselect(stencil); + st.onSelect(stencil); + }, + + onRenderStencil: function(){ + // summary: + // Event fires when an anchor calls a Stencil's render method + // + for(var nm in this.items){ + dojo.forEach(this.items[nm].anchors, function(a){ + a.shape.moveToFront(); + }); + } + }, + + onTransformPoint: function(/*Anchor*/anchor){ + // summary: + // Event fired on anchor drag + // + // If anchors are a "group", it's corresponding anchor + // is set. All anchors then moved to front. + var anchors = this.items[anchor.stencil.id].anchors; + var item = this.items[anchor.stencil.id].item; + var pts = []; + dojo.forEach(anchors, function(a, i){ + + + if(anchor.id == a.id || anchor.stencil.anchorType!="group"){ + // nothing + }else{ + if(anchor.org.y == a.org.y){ + a.setPoint({ + dx: 0, + dy: anchor.shape.getTransform().dy - a.shape.getTransform().dy + }); + }else if(anchor.org.x == a.org.x){ + a.setPoint({ + dx: anchor.shape.getTransform().dx - a.shape.getTransform().dx, + dy: 0 + }); + } + a.shape.moveToFront(); + } + + var mx = a.shape.getTransform(); + pts.push({x:mx.dx + a.org.x, y:mx.dy+ a.org.y}); + + if(a.point.t){ + pts[pts.length-1].t = a.point.t; + } + + }, this); + item.setPoints(pts); + item.onTransform(anchor); + this.onRenderStencil(); + }, + + onAnchorUp: function(/*Anchor*/anchor){ + // summary: + // Event fired on anchor mouseup + }, + + onAnchorDown: function(/*Anchor*/anchor){ + // summary: + // Event fired on anchor mousedown + }, + + onAnchorDrag: function(/*Anchor*/anchor){ + // summary: + // Event fired when anchor is moved + }, + + onChangeStyle: function(/*Object*/stencil){ + // summary: + // if the Stencil changes color while were's selected + // this moves the anchors to the back. Fix it. + + for(var nm in this.items){ + dojo.forEach(this.items[nm].anchors, function(a){ + a.shape.moveToFront(); + }); + } + }, + + add: function(/*Stencil*/item){ + // summary: + // Creates anchor points on a Stencil, based on the + // Stencil's points. + // + this.items[item.id] = { + item:item, + anchors:[] + }; + if(item.anchorType=="none"){ return; } + var pts = item.points; + dojo.forEach(pts, function(p, i){ + if(p.noAnchor){ return; } + if(i==0 || i == item.points.length-1){ + console.log("ITEM TYPE:", item.type, item.shortType); + } + var a = new dojox.drawing.manager.Anchor({stencil:item, point:p, pointIdx:i, mouse:this.mouse, util:this.util}); + this.items[item.id]._cons = [ + dojo.connect(a, "onRenderStencil", this, "onRenderStencil"), + dojo.connect(a, "reset", this, "onReset"), + dojo.connect(a, "onAnchorUp", this, "onAnchorUp"), + dojo.connect(a, "onAnchorDown", this, "onAnchorDown"), + dojo.connect(a, "onAnchorDrag", this, "onAnchorDrag"), + dojo.connect(a, "onTransformPoint", this, "onTransformPoint"), + // FIXME: this will fire for each anchor. yech. + dojo.connect(item, "onChangeStyle", this, "onChangeStyle") + ]; + + this.items[item.id].anchors.push(a); + this.onAddAnchor(a); + }, this); + + if(item.shortType=="path"){ + // check if we have a double-point of a closed-curve-path + var f = pts[0], l = pts[pts.length-1], a = this.items[item.id].anchors; + if(f.x ==l.x && f.y==l.y){ + console.warn("LINK ANVHROS", a[0], a[a.length-1]); + a[0].linkedAnchor = a[a.length-1]; + a[a.length-1].linkedAnchor = a[0]; + } + } + + if(item.anchorType=="group"){ + dojo.forEach(this.items[item.id].anchors, function(anchor){ + dojo.forEach(this.items[item.id].anchors, function(a){ + if(anchor.id != a.id){ + if(anchor.org.y == a.org.y){ + anchor.x_anchor = a; + }else if(anchor.org.x == a.org.x){ + anchor.y_anchor = a; + } + } + },this); + },this); + + } + }, + + remove: function(/*Stencil*/item){ + // summary: + // Destroys the anchor points for a Stencil. + // + if(!this.items[item.id]){ + return; + } + dojo.forEach(this.items[item.id].anchors, function(a){ + a.destroy(); + }); + dojo.forEach(this.items[item.id]._cons, dojo.disconnect, dojo); + this.items[item.id].anchors = null; + delete this.items[item.id]; + } + } +); + +dojox.drawing.manager.Anchor = dojox.drawing.util.oo.declare( + // summary: + // An anchor point that is attached to (usually) one of the + // corners of a Stencil. + // Used internally. + function(/* Object */options){ + // summary: + // constructor. + // arguments: + // dojox.__stencilArgs plus some additional + // data, like which point this is (pointIdx) + // + this.defaults = dojox.drawing.defaults.copy(); + this.mouse = options.mouse; + this.point = options.point; + this.pointIdx = options.pointIdx; + this.util = options.util; + this.id = options.id || this.util.uid("anchor"); + this.org = dojo.mixin({}, this.point); + this.stencil = options.stencil; + if(this.stencil.anchorPositionCheck){ + this.anchorPositionCheck = dojo.hitch(this.stencil, this.stencil.anchorPositionCheck); + } + if(this.stencil.anchorConstrain){ + this.anchorConstrain = dojo.hitch(this.stencil, this.stencil.anchorConstrain); + } + this._zCon = dojo.connect(this.mouse, "setZoom", this, "render"); + this.render(); + this.connectMouse(); + }, + { + y_anchor:null, + x_anchor:null, + render: function(){ + // summary: + // Creates the anchor point. Unlike most render methods + // in Drawing, this is only called once. + // + this.shape && this.shape.removeShape(); + var d = this.defaults.anchors, + z = this.mouse.zoom, + b = d.width * z, + s = d.size * z, + p = s/2, + line = { + width:b, + style:d.style, + color:d.color, + cap:d.cap + }; + + + var _r = { + x: this.point.x-p, + y: this.point.y-p, + width: s, + height: s + }; + this.shape = this.stencil.container.createRect(_r) + .setStroke(line) + .setFill(d.fill); + + this.shape.setTransform({dx:0, dy:0}); + this.util.attr(this, "drawingType", "anchor"); + this.util.attr(this, "id", this.id); + }, + onRenderStencil: function(/*Anchor*/anchor){ + // summary: + // Event fires when an anchor calls a Stencil's render method + }, + onTransformPoint: function(/*Anchor*/anchor){ + // summary: + // Event fires when an anchor changes the points of a Stencil + }, + onAnchorDown: function(/*Mouse.EventObject*/obj){ + // summary: + // Event fires for mousedown on anchor + this.selected = obj.id == this.id; + }, + onAnchorUp: function(/*Mouse.EventObject*/obj){ + // summary: + // Event fires for mouseup on anchor + this.selected = false; + this.stencil.onTransformEnd(this); + }, + + onAnchorDrag: function(/*Mouse.EventObject*/obj){ + // summary: + // Event fires for on dragging of an anchor + if(this.selected){ + // mx is the original transform from when the anchor + // was created. It does not change + var mx = this.shape.getTransform(); + + var pmx = this.shape.getParent().getParent().getTransform(); + + var marginZero = this.defaults.anchors.marginZero; + + var orgx = pmx.dx + this.org.x, + orgy = pmx.dy + this.org.y, + x = obj.x - orgx, + y = obj.y - orgy, + s = this.defaults.anchors.minSize; + + var conL, conR, conT, conB; + + var chk = this.anchorPositionCheck(x, y, this); + if(chk.x<0){ + console.warn("X<0 Shift"); + while(this.anchorPositionCheck(x, y, this).x<0){ + this.shape.getParent().getParent().applyTransform({dx:2, dy:0}); + } + } + if(chk.y<0){ + console.warn("Y<0 Shift"); + while(this.anchorPositionCheck(x, y, this).y<0){ + this.shape.getParent().getParent().applyTransform({dx:0, dy:2}); + } + } + + if(this.y_anchor){ + // prevent y overlap of opposite anchor + if(this.org.y > this.y_anchor.org.y){ + // bottom anchor + + conT = this.y_anchor.point.y + s - this.org.y; + conB = Infinity; + + if(y < conT){ + // overlapping other anchor + y = conT; + } + + + }else{ + // top anchor + + conT = -orgy + marginZero; + conB = this.y_anchor.point.y - s - this.org.y; + + if(y < conT){ + // less than zero + y = conT; + }else if(y > conB){ + // overlapping other anchor + y = conB; + } + } + }else{ + // Lines - check for zero + conT = -orgy + marginZero; + if(y < conT){ + // less than zero + y = conT; + } + } + + + + + if(this.x_anchor){ + // prevent x overlap of opposite anchor + + if(this.org.x>this.x_anchor.org.x){ + // right anchor + + conL = this.x_anchor.point.x + s - this.org.x; + conR = Infinity; + + if(x < conL){ + // overlapping other anchor + x = conL; + } + + }else{ + // left anchor + + conL = -orgx + marginZero; + conR = this.x_anchor.point.x - s - this.org.x; + + if(x < conL){ + x = conL; + }else if(x > conR){ + // overlapping other anchor + x = conR; + } + } + }else{ + // Lines check for zero + conL = -orgx + marginZero; + if(x < conL){ + x = conL; + } + } + //Constrains anchor point, returns null if not overwritten by stencil + var constrained = this.anchorConstrain(x, y); + if(constrained != null){ + x=constrained.x; + y=constrained.y; + } + + this.shape.setTransform({ + dx:x, + dy:y + }); + if(this.linkedAnchor){ + // first and last points of a closed-curve-path + this.linkedAnchor.shape.setTransform({ + dx:x, + dy:y + }); + } + this.onTransformPoint(this); + } + }, + + anchorConstrain: function(/* Number */x,/* Number */ y){ + // summary: + // To be over written by tool! + // Add an anchorConstrain method to the tool + // and it will automatically overwrite this stub. + // Should return a constrained x & y value. + return null; + }, + + anchorPositionCheck: function(/* Number */x,/* Number */ y, /* Anchor */anchor){ + // summary: + // To be over written by tool! + // Add a anchorPositionCheck method to the tool + // and it will automatically overwrite this stub. + // Should return x and y coords. Success is both + // being greater than zero, fail is if one or both + // are less than zero. + return {x:1, y:1}; + }, + + setPoint: function(mx){ + // summary: + // Internal. Sets the Stencil's point + this.shape.applyTransform(mx); + }, + + connectMouse: function(){ + // summary: + // Internal. Connects anchor to manager.mouse + this._mouseHandle = this.mouse.register(this); + }, + + disconnectMouse: function(){ + // summary: + // Internal. Disconnects anchor to manager.mouse + this.mouse.unregister(this._mouseHandle); + }, + + reset: function(stencil){ + // summary: + // Called (usually) from a Stencil when that Stencil + // needed to make modifications to the position of the + // point. Basically used when teh anchor causes a + // less than zero condition. + }, + + destroy: function(){ + // summary: + // Destroys anchor. + dojo.disconnect(this._zCon); + this.disconnectMouse(); + this.shape.removeShape(); + } + } +); diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/Canvas.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Canvas.js new file mode 100755 index 0000000..47df302 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Canvas.js @@ -0,0 +1,161 @@ +dojo.provide("dojox.drawing.manager.Canvas"); + +(function(){ + + dojox.drawing.manager.Canvas = dojox.drawing.util.oo.declare( + // summary: + // Creates a dojox.gfx.surface to be used for Drawing. Note that + // The 'surface' that Drawing uses is actually a dojox.gfx.group. + // This allows for more versatility. + // + // Called internally from a dojox.Drawing. + // + // Note: Surface creation is asynchrous. Connect to + // onSurfaceReady in Drawing. + // + function(/*Object*/options){ + dojo.mixin(this, options); + + var dim = dojo.contentBox(this.srcRefNode); + this.height = this.parentHeight = dim.h; + this.width = this.parentWidth = dim.w; + this.domNode = dojo.create("div", {id:"canvasNode"}, this.srcRefNode); + dojo.style(this.domNode, { + width:this.width, + height:"auto" + }); + + dojo.setSelectable(this.domNode, false); + + this.id = this.id || this.util.uid("surface"); + + console.info("create canvas"); + this.gfxSurface = dojox.gfx.createSurface(this.domNode, this.width, this.height); + this.gfxSurface.whenLoaded(this, function(){ + setTimeout(dojo.hitch(this, function(){ + this.surfaceReady = true; + if(dojo.isIE){ + //this.gfxSurface.rawNode.parentNode.id = this.id; + }else if(dojox.gfx.renderer == "silverlight"){ + this.id = this.domNode.firstChild.id + }else{ + //this.gfxSurface.rawNode.id = this.id; + } + + this.underlay = this.gfxSurface.createGroup(); + this.surface = this.gfxSurface.createGroup(); + this.overlay = this.gfxSurface.createGroup(); + this.surface.setTransform({dx:0, dy:0,xx:1,yy:1}); + + this.gfxSurface.getDimensions = dojo.hitch(this.gfxSurface, "getDimensions"); + if(options.callback){ + options.callback(this.domNode); + } + }),500); + }); + this._mouseHandle = this.mouse.register(this); + }, + { + // zoom: [readonly] Number + // The amount the canvas is zoomed + zoom:1, + + useScrollbars: true, + baseClass:"drawingCanvas", + + resize: function(width, height){ + // summary: + // Method used to change size of canvas. Potentially + // called from a container like ContentPane. May be + // called directly. + // + this.parentWidth = width; + this.parentHeight = height; + this.setDimensions(width, height); + }, + + setDimensions: function(width, height, scrollx, scrolly){ + // summary: + // Internal. Changes canvas size and sets scroll position. + // Do not call this, use resize(). + // + // changing the size of the surface and setting scroll + // if items are off screen + var sw = this.getScrollWidth(); //+ 10; + this.width = Math.max(width, this.parentWidth); + this.height = Math.max(height, this.parentHeight); + + if(this.height>this.parentHeight){ + this.width -= sw; + } + if(this.width>this.parentWidth){ + this.height -= sw; + } + + this.mouse.resize(this.width,this.height); + this.gfxSurface.setDimensions(this.width, this.height); + + + this.domNode.parentNode.scrollTop = scrolly || 0; + this.domNode.parentNode.scrollLeft = scrollx || 0; + + + if(this.useScrollbars){ + //console.info("Set Canvas Scroll", (this.height > this.parentHeight), this.height, this.parentHeight) + dojo.style(this.domNode.parentNode, { + overflowY: this.height > this.parentHeight ? "scroll" : "hidden", + overflowX: this.width > this.parentWidth ? "scroll" : "hidden" + }); + }else{ + dojo.style(this.domNode.parentNode, { + overflowY: "hidden", + overflowX: "hidden" + }); + } + }, + + + setZoom: function(zoom){ + // summary: + // Internal. Zooms canvas in and out. + this.zoom = zoom; + this.surface.setTransform({xx:zoom, yy:zoom}); + this.setDimensions(this.width*zoom, this.height*zoom) + }, + + onScroll: function(){ + // summary: + // Event fires on scroll.NOT IMPLEMENTED + }, + + getScrollOffset: function(){ + // summary: + // Get the scroll position of the canvas + return { + top:this.domNode.parentNode.scrollTop, + left:this.domNode.parentNode.scrollLeft + }; // Object + }, + + getScrollWidth: function(){ + // summary: + // Special method used to detect the width (and height) + // of the browser scrollbars. Becomes memoized. + // + var p = dojo.create('div'); + p.innerHTML = '
                            '; + var div = p.firstChild; + dojo.body().appendChild(div); + var noscroll = dojo.contentBox(div).h; + dojo.style(div, "overflow", "scroll"); + var scrollWidth = noscroll - dojo.contentBox(div).h; + dojo.destroy(div); + this.getScrollWidth = function(){ + return scrollWidth; + }; + return scrollWidth; // Object + } + } + ); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/Mouse.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Mouse.js new file mode 100755 index 0000000..1e91eef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Mouse.js @@ -0,0 +1,514 @@ +dojo.provide("dojox.drawing.manager.Mouse"); + +dojox.drawing.manager.Mouse = dojox.drawing.util.oo.declare( + // summary: + // Master object (instance) that tracks mouse + // events. A new instance is created for each + // Drawing object. + // description: + // You could connect to any method or event in this + // class, but it is designed to have the object + // 'registered'. All objects with the current event + // will be called directly. + // + // Custom events are used often. In addition to + // standard events onDown, onUp, onDrag, etc, if + // a certain object is clicked upon (or dragged, etc), + // that object's drawingType will create the custom event, + // such as onAnchorDown, or onStencilDown. + // + function(/* Object */options){ + this.util = options.util; + this.keys = options.keys; + this.id = options.id || this.util.uid("mouse"); + this.currentNodeId = ""; + this.registered = {}; + }, + + { + // doublClickSpeed: Number + // Milliseconds between clicks to + // register as for onDoubleClick + doublClickSpeed:400, + + // private properties + + _lastx:0, + _lasty:0, + __reg:0, + _downOnCanvas:false, + +/*===== +CustomEventMethod: function(){ + // summary: + // The custom event method that an Object that has + // registered with manager.Mouse can receive. + // Can contain any or all of the following methods + // and they will be called as mouse events. All events + // will be sent a EventObject event object. + // NOTE: + // Events happen anywhere in the document unless + // otherwise noted. + // + // onMove + // Fires on mousemove when mouse is up + // onDown + // Fires on mousedown *on the canvas* + // onDrag + // Fires on mousemove when mouse is down + // onUp + // Fires on mouseup, anywhere in the document + // onStencilDown + // Fired on mousedown on a Stencil + // onStencilDrag + // Fired when mouse moves and mose is down on a Stencil + // onStencilUp + // Fired on mouseup off of a Stencil + // on[Custom]Up|Down|Move + // Custom events can bet set and fired by setting a + // different drawingType on a Stencil, or by calling + // setEventMode(customEventName) +}, +EventObject: function(){ + // summary: + // The custom event object that is sent to registered objects + // and their respective methods. + // NOTE: Most event objects are the same with the exception + // of the onDown events, which have fewer. + // + // All event properties included onDown: + // + // id: String + // Id of the focused object + // pageX: Number + // The X coordinate of the mouse from the left side of + // the document. + // pageY: Number + // The Y coordinate of the mouse from the top of + // the document. + // x: Number + // The X coordinate of the mouse from the left side + // of the canvas + // y: Number + // The Y coordinate of the mouse from the top + // of the canvas + // + // These event properties are *not* in onDown: + // + // last: Object + // The x and y coordinates of the last mousemove + // relative to the canvas + // move: Object + // The x and y amounts the mouse moved since the last event + // orgX: Number + // The left side of the canvas from the side of the document + // orgY: Number + // The top of the canvas from the top of the document + // scroll: Object + // The 'top' and 'left' scroll amounts of the canvas. + // start: Object + // The x and y coordinates of the mousedown event + // withinCanvas: Boolean + // Whether the event happened within the Canvas or not + +}, +=====*/ + + init: function(/* HTMLNode*/node){ + // summary: + // Internal. Initializes mouse. + // + this.container = node; + this.setCanvas(); + var c; + var _isDown = false; + dojo.connect(this.container, "rightclick", this, function(evt){ + console.warn("RIGHTCLICK") + }); + + dojo.connect(document.body, "mousedown", this, function(evt){ + //evt.preventDefault(); + //dojo.stopEvent(evt); + }); + + dojo.connect(this.container, "mousedown", this, function(evt){ + this.down(evt); + // Right click shouldn't trigger drag + if(evt.button != dojo.mouseButtons.RIGHT){ + _isDown = true; + c = dojo.connect(document, "mousemove", this, "drag"); + } + }); + dojo.connect(document, "mouseup", this, function(evt){ + dojo.disconnect(c); + _isDown = false; + this.up(evt); + }); + dojo.connect(document, "mousemove", this, function(evt){ + if(!_isDown){ + this.move(evt); + } + }); + dojo.connect(this.keys, "onEsc", this, function(evt){ + this._dragged = false; + }); + }, + + setCanvas: function(){ + // summary: + // Internal. Sets canvas position + var pos = dojo.coords(this.container.parentNode); + this.origin = dojo.clone(pos); + }, + + scrollOffset: function(){ + // summary: + // Gets scroll offset of canvas + return { + top:this.container.parentNode.scrollTop, + left:this.container.parentNode.scrollLeft + }; // Object + }, + + resize: function(width,height){ + if(this.origin){ + this.origin.w=width; + this.origin.h=height; + } + }, + + register: function(/* Object*/scope){ + // summary: + // All objects (Stencils) should register here if they + // use mouse events. When registering, the object will + // be called if it has that method. + // argument: + // The object to be called + // Returns: handle + // Keep the handle to be used for disconnection. + // See: CustomEventMethod and EventObject + // + var handle = scope.id || "reg_"+(this.__reg++); + if(!this.registered[handle]){ this.registered[handle] = scope; } + return handle; // String + }, + unregister: function(handle){ + // summary: + // Disconnects object. Mouse events are no longer + // called for it. + if(!this.registered[handle]){ return; } + delete this.registered[handle]; + }, + + _broadcastEvent:function(strEvt, obj){ + // summary: + // Fire events to all registered objects. + // + //console.log("mouse.broadcast:", strEvt, obj) + for(var nm in this.registered){ + if(this.registered[nm][strEvt]) this.registered[nm][strEvt](obj); + } + }, + + onDown: function(obj){ + // summary: + // Create on[xx]Down event and send to broadcaster. + // Could be connected to. + //console.info("onDown:", this.eventName("down")) + this._broadcastEvent(this.eventName("down"), obj); + }, + + onDrag: function(obj){ + // summary: + // Create on[xx]Drag event and send to broadcaster. + // Could be connected to. + // + var nm = this.eventName("drag"); + if(this._selected && nm == "onDrag"){ + nm = "onStencilDrag" + } + this._broadcastEvent(nm, obj); + }, + + onMove: function(obj){ + // summary: + // Create onMove event and send to broadcaster. + // Could be connected to. + // Note: onMove never uses a custom event + // Note: onMove is currently not enabled in the app. + // + this._broadcastEvent("onMove", obj); + }, + + overName: function(obj,evt){ + var nm = obj.id.split("."); + evt = evt.charAt(0).toUpperCase() + evt.substring(1); + if(nm[0] == "dojox" && (dojox.drawing.defaults.clickable || !dojox.drawing.defaults.clickMode)){ + return "onStencil"+evt; + }else{ + return "on"+evt; + } + + }, + + onOver: function(obj){ + // summary: + // + this._broadcastEvent(this.overName(obj,"over"), obj); + }, + + onOut: function(obj){ + // summary: + // + this._broadcastEvent(this.overName(obj,"out"), obj); + }, + + onUp: function(obj){ + // summary: + // Create on[xx]Up event and send to broadcaster. + // Could be connected to. + // + // blocking first click-off (deselect), largely for TextBlock + // TODO: should have param to make this optional? + var nm = this.eventName("up"); + + if(nm == "onStencilUp"){ + this._selected = true; + }else if(this._selected && nm == "onUp"){ ////////////////////////////////////////// + nm = "onStencilUp"; + this._selected = false; + } + + console.info("Up Event:", this.id, nm, "id:", obj.id); + this._broadcastEvent(nm, obj); + + // Silverlight double-click handled in Silverlight class + if(dojox.gfx.renderer == "silverlight"){ return; } + + // Check Double Click + // If a double click is detected, the onDoubleClick event fires, + // but does not replace the normal event. They both fire. + this._clickTime = new Date().getTime(); + if(this._lastClickTime){ + if(this._clickTime-this._lastClickTime=0 && y>=0 && x<=o.w && y<=o.h; + x*= this.zoom; + y*= this.zoom; + + o.startx = x; + o.starty = y; + this._lastx = x; + this._lasty = y; + + this.drawingType = this.util.attr(evt, "drawingType") || ""; + var id = this._getId(evt); + //console.log("DOWN:", this.id, id, withinCanvas); + //console.log("this.drawingType:", this.drawingType); + + if(evt.button == dojo.mouseButtons.RIGHT && this.id == "mse"){ + //Allow right click events to bubble for context menus + }else{ + evt.preventDefault(); + dojo.stopEvent(evt); + } + this.onDown({ + mid:this.id, + x:x, + y:y, + pageX:dim.x, + pageY:dim.y, + withinCanvas:withinCanvas, + id:id + }); + + }, + over: function(obj){ + // summary: + // Internal. + // + this.onOver(obj); + }, + out: function(obj){ + // summary: + // Internal. + // + this.onOut(obj); + }, + move: function(evt){ + // summary: + // Internal. + // + var obj = this.create(evt); + if(this.id=="MUI"){ + //console.log("obj.id:", obj.id, "was:", this.currentNodeId) + } + if(obj.id != this.currentNodeId){ + // TODO: I wonder if an ID is good enough + // that would avoid the mixin + var outObj = {}; + for(var nm in obj){ + outObj[nm] = obj[nm]; + } + outObj.id = this.currentNodeId; + this.currentNodeId && this.out(outObj); + obj.id && this.over(obj); + this.currentNodeId = obj.id; + } + this.onMove(obj); + }, + drag: function(evt){ + // summary: + // Internal. Create onDrag event + this.onDrag(this.create(evt, true)); + }, + create: function(evt, squelchErrors){ + // summary: + // Internal. Create EventObject + // + var sc = this.scrollOffset(); + var dim = this._getXY(evt); + + var pagex = dim.x; + var pagey = dim.y; + + var o = this.origin; + var x = dim.x - o.x + sc.left; + var y = dim.y - o.y + sc.top; + + var withinCanvas = x>=0 && y>=0 && x<=o.w && y<=o.h; + x*= this.zoom; + y*= this.zoom; + + var id = withinCanvas ? this._getId(evt, squelchErrors) : ""; + var ret = { + mid:this.id, + x:x, + y:y, + pageX:dim.x, + pageY:dim.y, + page:{ + x:dim.x, + y:dim.y + }, + orgX:o.x, + orgY:o.y, + last:{ + x: this._lastx, + y: this._lasty + }, + start:{ + x: this.origin.startx, //+ sc.left, + y: this.origin.starty //+ sc.top + }, + move:{ + x:pagex - this._lastpagex, + y:pagey - this._lastpagey + }, + scroll:sc, + id:id, + withinCanvas:withinCanvas + }; + + //console.warn("MSE LAST:", x-this._lastx, y-this._lasty) + this._lastx = x; + this._lasty = y; + this._lastpagex = pagex; + this._lastpagey = pagey; + dojo.stopEvent(evt); + return ret; //Object + }, + _getId: function(evt, squelchErrors){ + // summary: + // Internal. Gets ID of focused node. + return this.util.attr(evt, "id", null, squelchErrors); // String + }, + _getXY: function(evt){ + // summary: + // Internal. Gets mouse coords to page. + return {x:evt.pageX, y:evt.pageY}; // Object + }, + + setCursor: function(cursor,/* HTMLNode*/node){ + // summary: + // Sets the cursor for a given node. If no + // node is specified the containing node is used. + if(!node){ + dojo.style(this.container, "cursor", cursor); + }else{ + dojo.style(node, "cursor", cursor); + } + } + } +); diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/Stencil.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Stencil.js new file mode 100755 index 0000000..f8a59c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Stencil.js @@ -0,0 +1,640 @@ +dojo.provide("dojox.drawing.manager.Stencil"); + +(function(){ + var surface, surfaceNode; + dojox.drawing.manager.Stencil = dojox.drawing.util.oo.declare( + // summary: + // The main class for tracking Stencils that are cretaed, added, + // selected, or deleted. Also handles selections, multiple + // selections, adding and removing from selections, and dragging + // selections. It's this class that triggers the anchors to + // appear on a Stencil and whther there are anchor on a multiple + // select or not (currently not) + // + function(options){ + // + // TODO: mixin props + // + surface = options.surface; + this.canvas = options.canvas; + + this.defaults = dojox.drawing.defaults.copy(); + this.undo = options.undo; + this.mouse = options.mouse; + this.keys = options.keys; + this.anchors = options.anchors; + this.stencils = {}; + this.selectedStencils = {}; + this._mouseHandle = this.mouse.register(this); + + dojo.connect(this.keys, "onArrow", this, "onArrow"); + dojo.connect(this.keys, "onEsc", this, "deselect"); + dojo.connect(this.keys, "onDelete", this, "onDelete"); + + }, + { + _dragBegun: false, + _wasDragged:false, + _secondClick:false, + _isBusy:false, + + setRecentStencil: function(stencil){ + // summary: + // Keeps track of the most recent stencil interacted + // with, whether created or selected. + this.recent = stencil; + }, + + getRecentStencil: function(){ + // summary: + // Returns the stencil most recently interacted + // with whether it's last created or last selected + return this.recent; + }, + + register: function(/*Object*/stencil){ + // summary: + // Key method for adding Stencils. Stencils + // can be added to the canvas without adding + // them to this, but they won't have selection + // or drag ability. + // + console.log("Selection.register ::::::", stencil.id); + if(stencil.isText && !stencil.editMode && stencil.deleteEmptyCreate && !stencil.getText()){ + // created empty text field + // defaults say to delete + console.warn("EMPTY CREATE DELETE", stencil); + stencil.destroy(); + return false; + } + + this.stencils[stencil.id] = stencil; + this.setRecentStencil(stencil); + + if(stencil.execText){ + if(stencil._text && !stencil.editMode){ + console.log("select text"); + this.selectItem(stencil); + } + stencil.connect("execText", this, function(){ + if(stencil.isText && stencil.deleteEmptyModify && !stencil.getText()){ + console.warn("EMPTY MOD DELETE", stencil); + // text deleted + // defaults say to delete + this.deleteItem(stencil); + }else if(stencil.selectOnExec){ + this.selectItem(stencil); + } + }); + } + + stencil.connect("deselect", this, function(){ + if(!this._isBusy && this.isSelected(stencil)){ + // called from within stencil. do action. + this.deselectItem(stencil); + } + }); + + stencil.connect("select", this, function(){ + if(!this._isBusy && !this.isSelected(stencil)){ + // called from within stencil. do action. + this.selectItem(stencil); + } + }); + + return stencil; + }, + unregister: function(/*Object*/stencil){ + // summary: + // Method for removing Stencils from the manager. + // This doesn't delete them, only removes them from + // the list. + // + console.log("Selection.unregister ::::::", stencil.id, "sel:", stencil.selected); + if(stencil){ + stencil.selected && this.onDeselect(stencil); + delete this.stencils[stencil.id]; + } + }, + + onArrow: function(/*Key Event*/evt){ + // summary: + // Moves selection based on keyboard arrow keys + // + // FIXME: Check constraints + if(this.hasSelected()){ + this.saveThrottledState(); + this.group.applyTransform({dx:evt.x, dy: evt.y}); + } + }, + + _throttleVrl:null, + _throttle: false, + throttleTime:400, + _lastmxx:-1, + _lastmxy:-1, + saveMoveState: function(){ + // summary: + // Internal. Used for the prototype undo stack. + // Saves selection position. + // + var mx = this.group.getTransform(); + if(mx.dx == this._lastmxx && mx.dy == this._lastmxy){ return; } + this._lastmxx = mx.dx; + this._lastmxy = mx.dy; + //console.warn("SAVE MOVE!", mx.dx, mx.dy); + this.undo.add({ + before:dojo.hitch(this.group, "setTransform", mx) + }); + }, + + saveThrottledState: function(){ + // summary: + // Internal. Used for the prototype undo stack. + // Prevents an undo point on every mouse move. + // Only does a point when the mouse hesitates. + // + clearTimeout(this._throttleVrl); + clearInterval(this._throttleVrl); + this._throttleVrl = setTimeout(dojo.hitch(this, function(){ + this._throttle = false; + this.saveMoveState(); + }), this.throttleTime); + if(this._throttle){ return; } + this._throttle = true; + + this.saveMoveState(); + + }, + unDelete: function(/*Array*/stencils){ + // summary: + // Undeletes a stencil. Used in undo stack. + // + console.log("unDelete:", stencils); + for(var s in stencils){ + stencils[s].render(); + this.onSelect(stencils[s]); + } + }, + onDelete: function(/*Boolean*/noundo){ + // summary: + // Event fired on deletion of a stencil + // + console.log("Stencil onDelete", noundo); + if(noundo!==true){ + this.undo.add({ + before:dojo.hitch(this, "unDelete", this.selectedStencils), + after:dojo.hitch(this, "onDelete", true) + }); + } + this.withSelected(function(m){ + this.anchors.remove(m); + var id = m.id; + console.log("delete:", m); + m.destroy(); + delete this.stencils[id]; + }); + this.selectedStencils = {}; + }, + + deleteItem: function(/*Object*/stencil){ + // summary: + // Deletes a stencil. + // NOTE: supports limited undo. + // + // manipulating the selection to fire onDelete properly + if(this.hasSelected()){ + // there is a selection + var sids = []; + for(var m in this.selectedStencils){ + if(this.selectedStencils.id == stencil.id){ + if(this.hasSelected()==1){ + // the deleting stencil is the only one selected + this.onDelete(); + return; + } + }else{ + sids.push(this.selectedStencils.id); + } + } + // remove selection, delete, restore selection + this.deselect(); + this.selectItem(stencil); + this.onDelete(); + dojo.forEach(sids, function(id){ + this.selectItem(id); + }, this); + }else{ + // there is not a selection. select it, delete it + this.selectItem(stencil); + // now delete selection + this.onDelete(); + } + }, + + removeAll: function(){ + // summary: + // Deletes all Stencils on the canvas. + + this.selectAll(); + this._isBusy = true; + this.onDelete(); + this.stencils = {}; + this._isBusy = false; + }, + + setSelectionGroup: function(){ + // summary: + // Internal. Creates a new selection group + // used to hold selected stencils. + // + this.withSelected(function(m){ + this.onDeselect(m, true); + }); + + if(this.group){ + surface.remove(this.group); + this.group.removeShape(); + } + this.group = surface.createGroup(); + this.group.setTransform({dx:0, dy: 0}); + + this.withSelected(function(m){ + this.group.add(m.container); + m.select(); + }); + }, + + setConstraint: function(){ + // summary: + // Internal. Gets all selected stencils' coordinates + // and determines how far left and up the selection + // can go without going below zero + // + var t = Infinity, l = Infinity; + this.withSelected(function(m){ + var o = m.getBounds(); + t = Math.min(o.y1, t); + l = Math.min(o.x1, l); + }); + this.constrain = {l:-l, t:-t}; + }, + + + + onDeselect: function(stencil, keepObject){ + // summary: + // Event fired on deselection of a stencil + // + if(!keepObject){ + delete this.selectedStencils[stencil.id]; + } + //console.log('onDeselect, keep:', keepObject, "stencil:", stencil.type) + + this.anchors.remove(stencil); + + surface.add(stencil.container); + stencil.selected && stencil.deselect(); + stencil.applyTransform(this.group.getTransform()); + }, + + deselectItem: function(/*Object*/stencil){ + // summary: + // Deselect passed stencil + // + // note: just keeping with standardized methods + this.onDeselect(stencil); + }, + + deselect: function(){ // all stencils + // summary: + // Deselect all stencils + // + this.withSelected(function(m){ + this.onDeselect(m); + }); + this._dragBegun = false; + this._wasDragged = false; + }, + + onSelect: function(/*Object*/stencil){ + // summary: + // Event fired on selection of a stencil + // + //console.log("stencil.onSelect", stencil); + if(!stencil){ + console.error("null stencil is not selected:", this.stencils) + } + if(this.selectedStencils[stencil.id]){ return; } + this.selectedStencils[stencil.id] = stencil; + this.group.add(stencil.container); + stencil.select(); + if(this.hasSelected()==1){ + this.anchors.add(stencil, this.group); + } + }, + + selectAll: function(){ + // summary: + // Selects all items + this._isBusy = true; + for(var m in this.stencils){ + //if(!this.stencils[m].selected){ + this.selectItem(m); + //} + } + this._isBusy = false; + }, + + selectItem: function(/*String|Object*/ idOrItem){ + // summary: + // Method used to select a stencil. + // + var id = typeof(idOrItem)=="string" ? idOrItem : idOrItem.id; + var stencil = this.stencils[id]; + this.setSelectionGroup(); + this.onSelect(stencil); + this.group.moveToFront(); + this.setConstraint(); + }, + + onLabelDoubleClick: function(/*EventObject*/obj){ + // summary: + // Event to connect a textbox to + // for label edits + console.info("mgr.onLabelDoubleClick:", obj); + if(this.selectedStencils[obj.id]){ + this.deselect(); + } + }, + + onStencilDoubleClick: function(/*EventObject*/obj){ + // summary: + // Event fired on the double-click of a stencil + // + console.info("mgr.onStencilDoubleClick:", obj); + if(this.selectedStencils[obj.id]){ + if(this.selectedStencils[obj.id].edit){ + console.info("Mgr Stencil Edit -> ", this.selectedStencils[obj.id]); + var m = this.selectedStencils[obj.id]; + // deselect must happen first to set the transform + // then edit knows where to set the text box + m.editMode = true; + this.deselect(); + m.edit(); + } + } + + }, + + onAnchorUp: function(){ + // summary: + // Event fire on mouseup off of an anchor point + this.setConstraint(); + }, + + onStencilDown: function(/*EventObject*/obj, evt){ + // summary: + // Event fired on mousedown on a stencil + // + console.info(" >>> onStencilDown:", obj.id, this.keys.meta); + if(!this.stencils[obj.id]){ return; } + this.setRecentStencil(this.stencils[obj.id]); + this._isBusy = true; + + + if(this.selectedStencils[obj.id] && this.keys.meta){ + if(dojo.isMac && this.keys.cmmd){ + // block context menu + + } + console.log(" shift remove"); + this.onDeselect(this.selectedStencils[obj.id]); + if(this.hasSelected()==1){ + this.withSelected(function(m){ + this.anchors.add(m, this.group); + }); + } + this.group.moveToFront(); + this.setConstraint(); + return; + + }else if(this.selectedStencils[obj.id]){ + console.log(" clicked on selected"); + // clicking on same selected item(s) + // RESET OFFSETS + var mx = this.group.getTransform(); + this._offx = obj.x - mx.dx; + this._offy = obj.y - mx.dy; + return; + + }else if(!this.keys.meta){ + + console.log(" deselect all"); + this.deselect(); + + }else{ + // meta-key add + //console.log("reset sel and add stencil") + } + console.log(" add stencil to selection"); + // add a stencil + this.selectItem(obj.id); + + mx = this.group.getTransform(); + this._offx = obj.x - mx.dx; + this._offy = obj.y - mx.dx; + + this.orgx = obj.x; + this.orgy = obj.y; + + this._isBusy = false; + + // TODO: + // dojo.style(surfaceNode, "cursor", "pointer"); + + // TODO: + this.undo.add({ + before:function(){ + + }, + after: function(){ + + } + }); + }, + + onLabelDown: function(/*EventObject*/obj, evt){ + // summary: + // Event fired on mousedown of a stencil's label + // Because it's an annotation the id will be the + // master stencil. + //console.info("===============>>>Label click: ",obj, " evt: ",evt); + this.onStencilDown(obj,evt); + }, + + onStencilUp: function(/*EventObject*/obj){ + // summary: + // Event fired on mouseup off of a stencil + // + }, + + onLabelUp: function(/*EventObject*/obj){ + this.onStencilUp(obj); + }, + + onStencilDrag: function(/*EventObject*/obj){ + // summary: + // Event fired on every mousemove of a stencil drag + // + if(!this._dragBegun){ + // bug, in FF anyway - first mouse move shows x=0 + // the 'else' fixes it + this.onBeginDrag(obj); + this._dragBegun = true; + }else{ + this.saveThrottledState(); + + var x = obj.x - obj.last.x, + y = obj.y - obj.last.y, + c = this.constrain, + mz = this.defaults.anchors.marginZero; + + + x = obj.x - this._offx; + y = obj.y - this._offy; + + if(x < c.l + mz){ + x = c.l + mz; + } + if(y < c.t + mz){ + y = c.t + mz; + } + + this.group.setTransform({ + dx: x, + dy: y + }); + + + } + }, + + onLabelDrag: function(/*EventObject*/obj){ + this.onStencilDrag(obj); + }, + + onDragEnd: function(/*EventObject*/obj){ + // summary: + // Event fired at the end of a stencil drag + // + this._dragBegun = false; + }, + onBeginDrag: function(/*EventObject*/obj){ + // summary: + // Event fired at the beginning of a stencil drag + // + this._wasDragged = true; + }, + + onDown: function(/*EventObject*/obj){ + // summary: + // Event fired on mousedown on the canvas + // + this.deselect(); + }, + + + onStencilOver: function(obj){ + // summary: + // This changes the cursor when hovering over + // a selectable stencil. + //console.log("OVER") + dojo.style(obj.id, "cursor", "move"); + }, + + onStencilOut: function(obj){ + // summary: + // This restores the cursor. + //console.log("OUT") + dojo.style(obj.id, "cursor", "crosshair"); + }, + + exporter: function(){ + // summary: + // Collects all Stencil data and returns an + // Array of objects. + var items = []; + for(var m in this.stencils){ + this.stencils[m].enabled && items.push(this.stencils[m].exporter()); + } + return items; // Array + }, + + listStencils: function(){ + return this.stencils; + }, + + toSelected: function(/*String*/func){ + // summary: + // Convenience function calls function *within* + // all selected stencils + var args = Array.prototype.slice.call(arguments).splice(1); + for(var m in this.selectedStencils){ + var item = this.selectedStencils[m]; + item[func].apply(item, args); + } + }, + + withSelected: function(/*Function*/func){ + // summary: + // Convenience function calls function on + // all selected stencils + var f = dojo.hitch(this, func); + for(var m in this.selectedStencils){ + f(this.selectedStencils[m]); + } + }, + + withUnselected: function(/*Function*/func){ + // summary: + // Convenience function calls function on + // all stencils that are not selected + var f = dojo.hitch(this, func); + for(var m in this.stencils){ + !this.stencils[m].selected && f(this.stencils[m]); + } + }, + + withStencils: function(/*Function*/func){ + // summary: + // Convenience function calls function on + // all stencils + var f = dojo.hitch(this, func); + for(var m in this.stencils){ + f(this.stencils[m]); + } + }, + + hasSelected: function(){ + // summary: + // Returns number of selected (generally used + // as truthy or falsey) + // + // FIXME: should be areSelected? + var ln = 0; + for(var m in this.selectedStencils){ ln++; } + return ln; // Number + }, + + isSelected: function(/*Object*/stencil){ + // summary: + // Returns if passed stencil is selected or not + // based on internal collection, not on stencil + // boolean + return !!this.selectedStencils[stencil.id]; // Boolean + } + } + + ); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/StencilUI.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/StencilUI.js new file mode 100644 index 0000000..70e6932 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/StencilUI.js @@ -0,0 +1,65 @@ +dojo.provide("dojox.drawing.manager.StencilUI"); + +(function(){ + var surface, surfaceNode; + dojox.drawing.manager.StencilUI = dojox.drawing.util.oo.declare( + // summary: + // Used for handling Stencils as UI components. + // description: + // Replaces manager.Stencil. Handles basic UI mouse + // events like onmouseover. Does not handle selections + // or support delete, etc. + // + function(options){ + // + // TODO: mixin props + // + surface = options.surface; + this.canvas = options.canvas; + + this.defaults = dojox.drawing.defaults.copy(); + this.mouse = options.mouse; + this.keys = options.keys; + this._mouseHandle = this.mouse.register(this); + this.stencils = {}; + }, + { + register: function(/*Object*/stencil){ + this.stencils[stencil.id] = stencil; + return stencil; + }, + onUiDown: function(/*EventObject*/obj){ + // summary: + // Event fired on mousedown on a stencil + // + if(!this._isStencil(obj)){ return; } + this.stencils[obj.id].onDown(obj); + }, + onUiUp: function(/*EventObject*/obj){ + // summary: + // Event fired on mousedown on a stencil + // + if(!this._isStencil(obj)){ return; } + this.stencils[obj.id].onUp(obj); + }, + onOver: function(/*EventObject*/obj){ + // summary: + // Event fired on mousedown on a stencil + // + if(!this._isStencil(obj)){ return; } + this.stencils[obj.id].onOver(obj); + }, + onOut: function(/*EventObject*/obj){ + // summary: + // Event fired on mousedown on a stencil + // + if(!this._isStencil(obj)){ return; } + this.stencils[obj.id].onOut(obj); + }, + _isStencil: function(/*EventObject*/obj){ + return !!obj.id && !!this.stencils[obj.id] && this.stencils[obj.id].type == "drawing.library.UI.Button"; + } + } + ); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/Undo.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Undo.js new file mode 100755 index 0000000..917381a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/Undo.js @@ -0,0 +1,57 @@ +dojo.provide("dojox.drawing.manager.Undo"); + +dojox.drawing.manager.Undo = dojox.drawing.util.oo.declare( + // summary + // Handles the Undo in drawing. + // NOTE: Only partially implemented!!! There is very + // little actual undo functionality! + // + function(options){ + this.keys = options.keys; + this.undostack = []; + this.redostack = []; + dojo.connect(this.keys, "onKeyDown", this, "onKeyDown"); + }, + { + onKeyDown: function(evt){ + if(!evt.cmmd){ return; } + + if(evt.keyCode==90 && !evt.shift){ + this.undo(); + }else if((evt.keyCode == 90 && evt.shift) || evt.keyCode==89){ + this.redo(); + } + + }, + add: function(stack){ + //console.log("undo add", stack) + stack.args = dojo.mixin({}, stack.args); + this.undostack.push(stack); + }, + apply: function(scope, method, args){ + dojo.hitch(scope, method)(args); + }, + undo: function(){ + + var o = this.undostack.pop(); + console.log("undo!", o); + if(!o){ return; } + + o.before(); + + this.redostack.push(o); + }, + redo: function(){ + console.log("redo!"); + var o = this.redostack.pop(); + if(!o){ return; } + if(o.after){ + o.after(); + }else{ + o.before(); ///?????? + } + + this.undostack.push(o); + } + } +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/_registry.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/_registry.js new file mode 100644 index 0000000..29fad89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/_registry.js @@ -0,0 +1,31 @@ +dojo.provide("dojox.drawing.manager._registry"); + +(function(){ + + var _registered = { + tool:{}, + stencil:{}, + drawing:{}, + plugin:{}, + button:{} + }; + + dojox.drawing.register = function(item, type){ + if(type=="drawing"){ + _registered.drawing[item.id] = item; + }else if(type=="tool"){ + _registered.tool[item.name] = item; + }else if(type=="stencil"){ + _registered.stencil[item.name] = item; + }else if(type=="plugin"){ + _registered.plugin[item.name] = item; + }else if(type=="button"){ + _registered.button[item.toolType] = item; + } + }; + + dojox.drawing.getRegistered = function(type, id){ + return id ? _registered[type][id] : _registered[type]; + } + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/manager/keys.js b/js/dojo-release-1.7.2-src/dojox/drawing/manager/keys.js new file mode 100755 index 0000000..6fb5837 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/manager/keys.js @@ -0,0 +1,264 @@ +dojo.provide("dojox.drawing.manager.keys"); + +(function(){ + + // Ref: isEdit allows events to happen in Drawing, like TextBlocks + var isEdit = false; + + // Ref: enabled = false allows inputs outside of drawing to function + var enabled = true; + + var alphabet = "abcdefghijklmnopqrstuvwxyz"; + + dojox.drawing.manager.keys = { + // summary: + // A singleton, master object that detects + // keyboard keys and events + // Connect to it like: + // dojo.connect(this.keys, "onEnter", ....); + // + // arrowIncrement:Number + // The amount, in pixels, a selected Stencil will + // move on an arrow key event + arrowIncrement:1, + // + // arrowShiftIncrement: Number + // The amount, in pixels, a selected Stencil will + // move on an arrow key + SHIFT event + arrowShiftIncrement:10, + // + // shift: [readonly] Boolean + // Indicates whether the Shift key is currently pressed + shift:false, + // + // ctrl: [readonly] Boolean + // Indicates whether the Control key is currently pressed + ctrl:false, + // + // alt: [readonly] Boolean + // Indicates whether the Alt or Option key is currently pressed + alt:false, + // + // cmmd: [readonly] Boolean + // Indicates whether the Apple Command key is currently pressed + cmmd:false, // apple key + // + // meta: [readonly] Boolean + // Indicates whether any 'meta' key is currently pressed: + // shift || ctrl || cmmd || alt + meta:false, // any meta key + + onDelete: function(/* Event */evt){ + // summary: + // Event fires when Delete key is released + }, + onEsc: function(/* Event */evt){ + // summary: + // Event fires when ESC key is released + }, + onEnter: function(/* Event */evt){ + // summary: + // Event fires when Enter key is released + }, + onArrow: function(/* Event */evt){ + // summary: + // Event fires when an Arrow key is released + // You will have to further check if evt.keyCode + // is 37,38,39, or 40 + }, + onKeyDown: function(/* Event */evt){ + // summary: + // Event fires when any key is pressed + }, + onKeyUp: function(/* Event */evt){ + // summary: + // Event fires when any key is released + }, + + listeners:[], + register: function(options){ + // summary: + // Register an object and callback to be notified + // of events. + // NOTE: Not really used in code, but should work. + // See manager.mouse for similar usage + // + var _handle = dojox.drawing.util.common.uid("listener"); + this.listeners.push({ + handle:_handle, + scope: options.scope || window, + callback:options.callback, + keyCode:options.keyCode + }); + }, + + _getLetter: function(evt){ + if(!evt.meta && evt.keyCode>=65 && evt.keyCode<=90){ + return alphabet.charAt(evt.keyCode-65); + } + return null; + }, + + _mixin: function(evt){ + // summary: + // Internal. Mixes in key events. + evt.meta = this.meta; + evt.shift = this.shift; + evt.alt = this.alt; + evt.cmmd = this.cmmd; + evt.letter = this._getLetter(evt); + return evt; + }, + + editMode: function(_isedit){ + // summary: + // Relinquishes control of events to another portion + // of Drawing; namely the TextBlock. + isEdit = _isedit; + }, + + enable: function(_enabled){ + // summary: + // Enables or disables key events, to relinquish + // control to something outside of Drawing; input + // fields for example. + // You may need to call this directly if you are + // using textareas or contenteditables. + // NOTE: See scanForFields + enabled = _enabled; + }, + + scanForFields: function(){ + // summary: + // Scans the document for inputs + // and calls this automatically. However you may need + // to call this if you create inputs after the fact. + // + if(this._fieldCons){ + dojo.forEach(this._fieldCons, dojo.disconnect, dojo); + } + this._fieldCons = []; + dojo.query("input").forEach(function(n){ + var a = dojo.connect(n, "focus", this, function(evt){ + this.enable(false); + }); + var b = dojo.connect(n, "blur", this, function(evt){ + this.enable(true); + }); + this._fieldCons.push(a); + this._fieldCons.push(b); + }, this); + + }, + + init: function(){ + // summary: + // Initialize the keys object + // + // a little extra time is needed in some browsers + setTimeout(dojo.hitch(this, "scanForFields"), 500); + + dojo.connect(document, "blur", this, function(evt){ + // when command tabbing to another application, the key "sticks" + // this clears any key used for such activity + this.meta = this.shift = this.ctrl = this.cmmd = this.alt = false; + }); + + dojo.connect(document, "keydown", this, function(evt){ + if(!enabled){ return; } + if(evt.keyCode==16){ + this.shift = true; + } + if(evt.keyCode==17){ + this.ctrl = true; + } + if(evt.keyCode==18){ + this.alt = true; + } + if(evt.keyCode==224){ + this.cmmd = true; + } + + this.meta = this.shift || this.ctrl || this.cmmd || this.alt; + + if(!isEdit){ + this.onKeyDown(this._mixin(evt)); + if(evt.keyCode==8 || evt.keyCode==46){ + dojo.stopEvent(evt); + } + } + }); + dojo.connect(document, "keyup", this, function(evt){ + if(!enabled){ return; } + //console.log("KEY UP:", evt.keyCode); + var _stop = false; + if(evt.keyCode==16){ + this.shift = false; + } + if(evt.keyCode==17){ + this.ctrl = false; + } + if(evt.keyCode==18){ + this.alt = false; + } + if(evt.keyCode==224){ + this.cmmd = false; + } + + this.meta = this.shift || this.ctrl || this.cmmd || this.alt; + + !isEdit && this.onKeyUp(this._mixin(evt)); + + if(evt.keyCode==13){ + console.warn("KEY ENTER"); + this.onEnter(evt); + _stop = true; + } + if(evt.keyCode==27){ + this.onEsc(evt); + _stop = true; + } + if(evt.keyCode==8 || evt.keyCode==46){ + this.onDelete(evt); + _stop = true; + } + + if(_stop && !isEdit){ + dojo.stopEvent(evt); + } + }); + + dojo.connect(document, "keypress", this, function(evt){ + if(!enabled){ return; } + var inc = this.shift ? this.arrowIncrement*this.arrowShiftIncrement : this.arrowIncrement; + + var x =0, y =0; + if(evt.keyCode==32 && !isEdit){ //space + dojo.stopEvent(evt); + } + if(evt.keyCode==37){ //left + x = -inc; + } + if(evt.keyCode==38){ //up + y = -inc; + } + if(evt.keyCode==39){ //right + x = inc; + } + if(evt.keyCode==40){ //down + y = inc; + } + if(x || y){ + evt.x = x; + evt.y = y; + evt.shift = this.shift; + if(!isEdit){ + this.onArrow(evt); + dojo.stopEvent(evt); + } + } + }); + } + }; + dojo.addOnLoad(dojox.drawing.manager.keys, "init"); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/plugins/_Plugin.js b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/_Plugin.js new file mode 100755 index 0000000..2fc6425 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/_Plugin.js @@ -0,0 +1,39 @@ +dojo.provide("dojox.drawing.plugins._Plugin"); + +dojox.drawing.plugins._Plugin = dojox.drawing.util.oo.declare( + // summary: + // Base class for plugins. + // description: + // When creating a plugin, use this class as the + // base to ensure full functionality. + function(options){ + this._cons = []; + dojo.mixin(this, options); + if(this.button && this.onClick){ + this.connect(this.button, "onClick", this, "onClick") + } + }, + { + util:null, + keys:null, + mouse:null, + drawing:null, + stencils:null, + anchors:null, + canvas:null, + node:null, + button:null,//gfx button + type:"dojox.drawing.plugins._Plugin", + connect: function(){ + this._cons.push(dojo.connect.apply(dojo, arguments)); + }, + disconnect: function(/*handle | Array*/handles){ + // summary: + // Removes connections based on passed + // handles arguments + if(!handles){ return }; + if(!dojo.isArray(handles)){ handles=[handles]; } + dojo.forEach(handles, dojo.disconnect, dojo); + } + } +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/plugins/drawing/GreekPalette.js b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/drawing/GreekPalette.js new file mode 100644 index 0000000..0e7ec95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/drawing/GreekPalette.js @@ -0,0 +1,336 @@ +dojo.provide("dojox.drawing.plugins.drawing.GreekPalette"); + +dojo.require("dojox.drawing.library.greek"); +dojo.require("dijit.focus"); +dojo.require("dijit._Widget"); +dojo.require("dijit._TemplatedMixin"); +dojo.require("dijit._PaletteMixin"); +dojo.require("dojo.i18n"); + +dojo.requireLocalization("dojox.editor.plugins", "latinEntities"); + +dojo.declare("dojox.drawing.plugins.drawing.GreekPalette", + [dijit._Widget, dijit._TemplatedMixin, dijit._PaletteMixin], + { + // summary: + // This plugin uses the palette dijit in order to give tips for + // non-english (mostly greek for now) letters. + // + // IMPORTANT! Because it is a full blown dijit it is NOT loaded + // like the other plugins. INSTEAD currently it is instantiated + // in markup. TextBlock LOOKS FOR IT by ID - "greekPalette" + // and if it finds it does the necessary initialization/connections. + // description: + // Grid showing all available entity options which the + // user can pick from. The library loaded for use by the picker + // is found in dojox.drawing.library.greek. Adding characters + // there will automatically add them to the palette. + // + // This works as a popup and as such its onChange and onCancel + // close it. TextBlock manages it, since it's what uses the assist + // so it calls show (all actual popup management happens here). + // In order to activate the plugin require it and then include the + // markup in the example: + // + // example: + // | + // |
                            + + postMixInProperties: function(){ + // Convert hash of entities into two-dimensional rows/columns table (array of arrays) + var choices = dojox.drawing.library.greek; + var numChoices = 0; + var entityKey; + for(entityKey in choices){numChoices++;} + var choicesPerRow = Math.floor(Math.sqrt(numChoices)); + var numRows = choicesPerRow; + var currChoiceIdx = 0; + var rows = []; + var row = []; + for(entityKey in choices){ + currChoiceIdx++; + row.push(entityKey); + if(currChoiceIdx % numRows === 0){ + rows.push(row); + row = []; + } + } + if(row.length > 0){ + rows.push(row); + } + this._palette = rows; + }, + + show: function(obj){ + dojo.mixin(obj, {popup: this}); + dijit.popup.open(obj); + }, + + onChange: function(val){ + var textBlock = this._textBlock; + dijit.popup.hide(this); + textBlock.insertText(this._pushChangeTo,val); + textBlock._dropMode = false; + }, + + onCancel: function(/*Boolean*/ closeAll){ + // summary: + // attach point for notification about when the user cancels the current menu + dijit.popup.hide(this); + this._textBlock._dropMode = false; + }, + + // templateString: String + // The template of this widget. Using dojoxEntityPalette classes + // in order to allow easy transfer of css + templateString: '
                            \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
                            \n' + + ' \n' + + ' \n' + + '
                            \n' + + '
                            \n'+ + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
                            Type:
                            \n' + + '
                            \n' + + '
                            ', + + + baseClass: "dojoxEntityPalette", + + // showPreview: [public] Boolean + // Whether the preview pane will be displayed, to show details about the selected entity. + showPreview: true, + + dyeClass: 'dojox.drawing.plugins.Greeks', + + // domNodeClass [protected] String + paletteClass: 'editorLatinEntityPalette', + + cellClass: "dojoxEntityPaletteCell", + + buildRendering: function(){ + this.inherited(arguments); + + var i18n = dojo.i18n.getLocalization("dojox.editor.plugins", "latinEntities"); + + this._preparePalette( + this._palette, + i18n + ); + + var cells = dojo.query(".dojoxEntityPaletteCell", this.gridNode); + dojo.forEach(cells, function(cellNode){ + this.connect(cellNode, "onmouseenter", "_onCellMouseEnter"); + }, this); + }, + + _onCellMouseEnter: function(e){ + // summary: + // Simple function to handle updating the display at the bottom of + // the palette. + // e: + // The event. + // tags: + // private + if(this.showPreview){ + this._displayDetails(e.target); + } + }, + + _onCellClick: function(/*Event*/ evt){ + // summary: + // Handler for click, enter key & space key. Selects the cell. + // evt: + // The event. + // tags: + // private + var target = evt.type == "click" ? evt.currentTarget : this._currentFocus, + value = this._getDye(target).getValue(); + + // First focus the clicked cell, and then send onChange() notification. + // onChange() (via _setValueAttr) must be after the focus call, because + // it may trigger a refocus to somewhere else (like the Editor content area), and that + // second focus should win. + // Use setTimeout because IE doesn't like changing focus inside of an event handler. + this._setCurrent(target); + setTimeout(dojo.hitch(this, function(){ + dijit.focus(target); + this._setValueAttr(value, true); + })); + + // workaround bug where hover class is not removed on popup because the popup is + // closed and then there's no onblur event on the cell + dojo.removeClass(target, "dijitPaletteCellHover"); + + dojo.stopEvent(evt); + }, + + postCreate: function(){ + this.inherited(arguments); + + if(!this.showPreview){ + dojo.style(this.previewNode,"display","none"); + } + dijit.popup.moveOffScreen(this); + }, + + _setCurrent: function(/*DOMNode*/ node){ + // summary: + // Sets which node is the focused cell. + // description: + // At any point in time there's exactly one + // cell with tabIndex != -1. If focus is inside the palette then + // focus is on that cell. + // + // After calling this method, arrow key handlers and mouse click handlers + // should focus the cell in a setTimeout(). + // tags: + // protected + if("_currentFocus" in this){ + // Remove tabIndex on old cell + dojo.attr(this._currentFocus, "tabIndex", "-1"); + dojo.removeClass(this._currentFocus,"dojoxEntityPaletteCellHover"); + } + + // Set tabIndex of new cell + this._currentFocus = node; + if(node){ + dojo.attr(node, "tabIndex", this.tabIndex); + dojo.addClass(this._currentFocus,"dojoxEntityPaletteCellHover"); + } + if(this.showPreview){ + this._displayDetails(node); + } + }, + + _displayDetails: function(/*DOMNode*/ cell){ + // summary: + // Display the details of the currently focused entity in the preview pane + var dye = this._getDye(cell); + if(dye){ + var ehtml = dye.getValue(); + var ename = dye._alias; + //console.warn("Greek help: ",dye._alias); + this.previewNode.innerHTML=ehtml; + }else{ + this.previewNode.innerHTML=""; + this.descNode.innerHTML=""; + } + }, + + _preparePalette: function(choices, titles) { + // summary: + // Subclass must call _preparePalette() from postCreate(), passing in the tooltip + // for each cell + // choices: String[][] + // id's for each cell of the palette, used to create Dye JS object for each cell + // titles: String[] + // Localized tooltip for each cell + + this._cells = []; + var url = this._blankGif; + + var dyeClassObj = dojo.getObject(this.dyeClass); + + for(var row=0; row < choices.length; row++){ + var rowNode = dojo.create("tr", {tabIndex: "-1"}, this.gridNode); + for(var col=0; col < choices[row].length; col++){ + var value = choices[row][col]; + if(value){ + var cellObject = new dyeClassObj(value); + + var cellNode = dojo.create("td", { + "class": this.cellClass, + tabIndex: "-1", + title: titles[value] + }); + + // prepare cell inner structure + cellObject.fillCell(cellNode, url); + + this.connect(cellNode, "ondijitclick", "_onCellClick"); + this._trackMouseState(cellNode, this.cellClass); + + dojo.place(cellNode, rowNode); + + cellNode.index = this._cells.length; + + // save cell info into _cells + this._cells.push({node:cellNode, dye:cellObject}); + } + } + } + this._xDim = choices[0].length; + this._yDim = choices.length; + + }, + + _navigateByArrow: function(evt){ + // summary: + // This is a departure from the dijit, the textBlock needs + // navigation without losing focus, this allows that + // increment: + // How much the key is navigated. + // tags: + // private + var keyIncrementMap = { + 38: -this._xDim, + // The down key the index is increase by the x dimension. + 40: this._xDim, + // Right and left move the index by 1. + 39: this.isLeftToRight() ? 1 : -1, + 37: this.isLeftToRight() ? -1 : 1 + }; + + var increment = keyIncrementMap[evt.keyCode]; + var newFocusIndex = this._currentFocus.index + increment; + if(newFocusIndex < this._cells.length && newFocusIndex > -1){ + var focusNode = this._cells[newFocusIndex].node; + this._setCurrent(focusNode); + } + } +}); + +dojo.declare("dojox.drawing.plugins.Greeks", + null, +{ + // summary: + // Represents a character. + // Initialized using an alias for the character (like cent) rather + // than with the character itself. + + constructor: function(/*String*/ alias){ + // summary: + // Construct JS object representing an entity (associated w/a cell + // in the palette) + // value: String + // alias name: 'cent', 'pound' .. + this._alias = alias; + }, + + getValue: function(){ + // summary: + // Returns HTML representing the character, like & + // + return this._alias; + }, + + fillCell: function(/*DOMNode*/ cell){ + // Deal with entities that have keys which are reserved words. + cell.innerHTML = "&"+this._alias+";"; + } +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/plugins/drawing/Grid.js b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/drawing/Grid.js new file mode 100755 index 0000000..24b730e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/drawing/Grid.js @@ -0,0 +1,98 @@ +dojo.provide("dojox.drawing.plugins.drawing.Grid"); +dojo.require("dojox.drawing.plugins._Plugin"); + +dojox.drawing.plugins.drawing.Grid = dojox.drawing.util.oo.declare( + // summary: + // Plugin that displays a grid on the Drawing canvas. + // example: + // |
                            + // |
                            + // + dojox.drawing.plugins._Plugin, + function(options){ + if(options.gap){ + this.major = options.gap; + } + this.majorColor = options.majorColor || this.majorColor; + this.minorColor = options.minorColor || this.minorColor; + + this.setGrid(); + dojo.connect(this.canvas, "setZoom", this, "setZoom"); + }, + { + type:"dojox.drawing.plugins.drawing.Grid", + // + // gap: Number + // How far apart to set the grid lines + gap:100, + major:100, + minor:0, + // + // majorColor: String + // Major lines color + majorColor: "#00ffff", + // + // minorColor: String + // Minor lines color + minorColor: "#d7ffff", + // + // zoom: [readonly] Number + // The current zoom of the grid + zoom:1, + + setZoom: function(zoom){ + // summary: + // Set's the zoom of the canvas + this.zoom = zoom; + this.setGrid(); + }, + setGrid: function(options){ + // summary: + // Renders grid + // + // TODO: major minor lines + // minors dont show on zoom out + // draw minors first + // + var mjr = Math.floor(this.major * this.zoom); + var mnr = this.minor ? Math.floor(this.minor * this.zoom) : mjr; + + this.grid && this.grid.removeShape(); + + var x1,x2,y1,y2,i,clr,len; + var s = this.canvas.underlay.createGroup(); + var w = 2000;//this.canvas.width; + var h = 1000;//this.canvas.height; + var b = 1; + var mj = this.majorColor; + var mn = this.minorColor; + + var createGridLine = function(x1,y1,x2,y2, c){ + s.createLine({x1: x1, y1: y1, x2: x2, y2: y2}).setStroke({style: "Solid", width: b, cap: "round", color:c}); + }; + + // horz + for(i=1,len = h/mnr; i > > id:", id, "drawingType:", this.drawingType, "evt:", evt) + + this.onDown(obj); + + this._clickTime = new Date().getTime(); + if(this._lastClickTime){ + if(this._clickTime-this._lastClickTime + // |
                            Line
                            + // |
                            Pan
                            + // |
                            + // + dojox.drawing.plugins._Plugin, + function(options){ + this.domNode = options.node; + var _scrollTimeout; + this.toolbar = options.scope; + this.connect(this.toolbar, "onToolClick", this, function(){ + this.onSetPan(false) + }); + this.connect(this.keys, "onKeyUp", this, "onKeyUp"); + this.connect(this.keys, "onKeyDown", this, "onKeyDown"); + this.connect(this.keys, "onArrow", this, "onArrow"); + this.connect(this.anchors, "onAnchorUp", this, "checkBounds"); + this.connect(this.stencils, "register", this, "checkBounds"); + this.connect(this.canvas, "resize", this, "checkBounds"); + this.connect(this.canvas, "setZoom", this, "checkBounds"); + this.connect(this.canvas, "onScroll", this, function(){ + if(this._blockScroll){ + this._blockScroll = false; + return; + } + _scrollTimeout && clearTimeout(_scrollTimeout); + _scrollTimeout = setTimeout(dojo.hitch(this, "checkBounds"), 200); + }); + this._mouseHandle = this.mouse.register(this); + // This HAS to be called after setting initial objects or things get screwy. + //this.checkBounds(); + + },{ + selected:false, + keyScroll:false, + type:"dojox.drawing.plugins.tools.Pan", + + onPanUp: function(obj){ + if(obj.id == this.button.id){ + this.onSetPan(false); + } + }, + + onKeyUp: function(evt){ + switch(evt.keyCode){ + case 32: + this.onSetPan(false); + break; + case 39: case 37: case 38: case 40: + clearInterval(this._timer); + break; + } + }, + + onKeyDown: function(evt){ + if(evt.keyCode == 32){ + this.onSetPan(true); + } + }, + + interval: 20, + + onArrow: function(evt){ + if(this._timer){ clearInterval(this._timer); } + this._timer = setInterval(dojo.hitch(this,function(evt){ + this.canvas.domNode.parentNode.scrollLeft += evt.x*10; + this.canvas.domNode.parentNode.scrollTop += evt.y*10; + },evt), this.interval); + }, + + onSetPan: function(/*Boolean | Event*/ bool){ + if(bool === true || bool === false){ + this.selected = !bool; + } + console.log('ON SET PAN:', this.selected) + if(this.selected){ + this.selected = false; + this.button.deselect(); + }else{ + this.selected = true; + this.button.select(); + } + this.mouse.setEventMode(this.selected ? "pan" : ""); + }, + + onPanDrag: function(obj){ + var x = obj.x - obj.last.x; + var y = obj.y - obj.last.y; + this.canvas.domNode.parentNode.scrollTop -= obj.move.y; + this.canvas.domNode.parentNode.scrollLeft -= obj.move.x; + this.canvas.onScroll(); + }, + + onUp: function(obj){ + if(obj.withinCanvas){ + this.keyScroll = true; + }else{ + this.keyScroll = false; + } + }, + + onStencilUp: function(obj){ + // this gets called even on click-off because of the + // issues with TextBlock deselection + this.checkBounds(); + }, + onStencilDrag: function(obj){ + // this gets called even on click-off because of the + // issues with TextBlock deselection + //this.checkBounds(); + }, + + checkBounds: function(){ + + //watch("CHECK BOUNDS DISABLED", true); return; + + + // summary: + // Scans all items on the canvas and checks if they are out of + // bounds. If so, a scroll bar (in Canvas) is shown. If the position + // is left or top, the canvas is scrolled all items are relocated + // the distance of the scroll. Ideally, it should look as if the + // items do not move. + + // logging stuff here so it can be turned on and off. This method is + // very high maintenance. + var log = function(){ + //console.log.apply(console, arguments); + } + var warn = function(){ + //console.warn.apply(console, arguments); + } + //console.clear(); + //console.time("check bounds"); + + // initialize a shot-tin of vars + var t=Infinity, r=-Infinity, b=-10000, l=10000, + sx=0, sy=0, dy=0, dx=0, + mx = this.stencils.group ? this.stencils.group.getTransform() : {dx:0, dy:0}, + sc = this.mouse.scrollOffset(), + // scY, scX: the scrollbar creates the need for extra dimension + scY = sc.left ? 10 : 0, + scX = sc.top ? 10 : 0, + // ch, cw: the current size of the canvas + ch = this.canvas.height, + cw = this.canvas.width, + z = this.canvas.zoom, + // pch, pcw: the normal size of the canvas (not scrolled) + // these could change if the container resizes. + pch = this.canvas.parentHeight, + pcw = this.canvas.parentWidth; + + + this.stencils.withSelected(function(m){ + var o = m.getBounds(); + warn("SEL BOUNDS:", o); + t = Math.min(o.y1 + mx.dy, t); + r = Math.max(o.x2 + mx.dx, r); + b = Math.max(o.y2 + mx.dy, b); + l = Math.min(o.x1 + mx.dx, l); + }); + + this.stencils.withUnselected(function(m){ + var o = m.getBounds(); + warn("UN BOUNDS:", o); + t = Math.min(o.y1, t); + r = Math.max(o.x2, r); + b = Math.max(o.y2, b); + l = Math.min(o.x1, l); + log("----------- B:", b, o.y2) + }); + + b *= z; + var xscroll = 0, yscroll = 0; + log("Bottom test", "b:", b, "z:", z, "ch:", ch, "pch:", pch, "top:", sc.top, "sy:", sy, "mx.dy:", mx.dy); + if(b > pch || sc.top ){ + log("*bottom scroll*"); + // item off bottom + ch = Math.max(b, pch + sc.top); + sy = sc.top; + xscroll += this.canvas.getScrollWidth(); + }else if(!sy && ch>pch){ + log("*bottom remove*"); + // item moved from bottom + ch = pch; + } + + r *= z; + if(r > pcw || sc.left){ + //log("*right scroll*"); + // item off right + cw = Math.max(r, pcw + sc.left); + sx = sc.left; + yscroll += this.canvas.getScrollWidth(); + }else if(!sx && cw>pcw){ + //log("*right remove*"); + // item moved from right + cw = pcw; + } + + // add extra space for scrollbars + // double it to give some breathing room + cw += xscroll*2; + ch += yscroll*2; + + this._blockScroll = true; + + // selected items are not transformed. The selection itself is + // and the items are on de-select + this.stencils.group && this.stencils.group.applyTransform({dx:dx, dy:dy}); + + // non-selected items are transformed + this.stencils.withUnselected(function(m){ + m.transformPoints({dx:dx, dy:dy}); + }); + + this.canvas.setDimensions(cw, ch, sx, sy); + + //console.timeEnd("check bounds"); + } + } +); + +dojox.drawing.plugins.tools.Pan.setup = { + name:"dojox.drawing.plugins.tools.Pan", + tooltip:"Pan Tool", + iconClass:"iconPan", + button:false +}; + +dojox.drawing.register(dojox.drawing.plugins.tools.Pan.setup, "plugin"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/plugins/tools/Zoom.js b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/tools/Zoom.js new file mode 100755 index 0000000..de85f9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/plugins/tools/Zoom.js @@ -0,0 +1,125 @@ +dojo.provide("dojox.drawing.plugins.tools.Zoom"); +dojo.require("dojox.drawing.plugins._Plugin"); + +(function(){ + // + // zoomInc: Float + // The amount of zoom that will occur upon each click. + var zoomInc = Math.pow(2.0,0.25), + // + // maxZoom: Number + // The maximum the canvas can be zoomed in. 10 = 1000% + maxZoom = 10, + // + // minZoom: Float + // The most the canvas can be zoomed out. .1 = 10% + minZoom = 0.1, + // + // zoomFactor: [readonly] Float + // The current zoom amount + zoomFactor = 1, + + dt = dojox.drawing.plugins.tools; + + dt.ZoomIn = dojox.drawing.util.oo.declare( + // summary: + // A plugin that allows for zooming the canvas in and out. An + // action-tool is added to the toolbar with plus, minus and 100% + // buttons. + // + function(options){ + // mix in private vars + + }, + {} + ); + + + dt.ZoomIn = dojox.drawing.util.oo.declare( + // summary: + dojox.drawing.plugins._Plugin, + function(options){ + + }, + { + type:"dojox.drawing.plugins.tools.ZoomIn", + onZoomIn: function(){ + // summary: + // Handles zoom in. + // + zoomFactor *= zoomInc; + zoomFactor = Math.min(zoomFactor, maxZoom); + this.canvas.setZoom(zoomFactor); + this.mouse.setZoom(zoomFactor); + }, + onClick: function(){ + this.onZoomIn(); + } + } + ); + + dt.Zoom100 = dojox.drawing.util.oo.declare( + // summary: + dojox.drawing.plugins._Plugin, + function(options){ + + }, + { + type:"dojox.drawing.plugins.tools.Zoom100", + onZoom100: function(){ + // summary: + // Zooms to 100% + // + zoomFactor = 1; + this.canvas.setZoom(zoomFactor); + this.mouse.setZoom(zoomFactor); + }, + onClick: function(){ + this.onZoom100(); + } + } + ); + + dt.ZoomOut = dojox.drawing.util.oo.declare( + // summary: + dojox.drawing.plugins._Plugin, + function(options){ + + }, + { + type:"dojox.drawing.plugins.tools.ZoomOut", + onZoomOut: function(){ + // summary: + // Handles zoom out. + // + zoomFactor /= zoomInc; + zoomFactor = Math.max(zoomFactor, minZoom); + this.canvas.setZoom(zoomFactor); + this.mouse.setZoom(zoomFactor); + }, + onClick: function(){ + this.onZoomOut(); + } + } + ); + + + dt.ZoomIn.setup = { + name:"dojox.drawing.plugins.tools.ZoomIn", + tooltip:"Zoom In" + }; + dojox.drawing.register(dt.ZoomIn.setup, "plugin"); + + dt.Zoom100.setup = { + name:"dojox.drawing.plugins.tools.Zoom100", + tooltip:"Zoom to 100%" + }; + dojox.drawing.register(dt.Zoom100.setup, "plugin"); + + dt.ZoomOut.setup = { + name:"dojox.drawing.plugins.tools.ZoomOut", + tooltip:"Zoom In" + }; + dojox.drawing.register(dt.ZoomOut.setup, "plugin"); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/resources/CrazyTruck.jpg b/js/dojo-release-1.7.2-src/dojox/drawing/resources/CrazyTruck.jpg new file mode 100644 index 0000000..bc270ec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/drawing/resources/CrazyTruck.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/resources/GreekPalette.css b/js/dojo-release-1.7.2-src/dojox/drawing/resources/GreekPalette.css new file mode 100644 index 0000000..b1bb5e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/resources/GreekPalette.css @@ -0,0 +1,57 @@ +/* + This is directly from @import "../plugins/resources/css/InsertEntity.css"; + It's here because certain details may change over time. The classes + remain the same so applying the original will be easy in case of change. +*/ + +.dojoxEntityPalette { + /* outer node of the dropdown */ + border: 1px solid #999; + background: #fff; + -moz-border-radius: 3pt; +} + +.dojoxEntityPaletteCell { + /* individual cell of the drop down */ + border: 1px dotted gray; + width: 20px; /* todo: don't hardcode width/height; it's neither necessary nor a11y safe */ + line-height: 18px; + overflow: hidden; + z-index: 10; + text-align: center; +} + +.dojoxEntityPaletteCell:hover, .dojoxEntityPaletteCell:active, .dojoxEntityPaletteCell:focus { + width: 18px; + line-height: 16px; + overflow: hidden; + cursor: default; + border:1px dashed #000; + outline:1px dashed #dedede; +} + + +.dojoxEntityPalettePreviewTable { + table-layout: auto; + font-size: 1em; + width: 100%; +} + +.dojoxEntityPalettePreviewHeader { + font-size: .8em; + padding: 3px 3px 3px 3px; +} + +.dojoxEntityPalettePreviewDetailEntity { + font-size: .8em; + font-weight: bold; +} + +.dojoxEntityPalettePreviewDetail { + font-size: .8em; + padding: 3px 3px 3px 3px; +} + +.dijit_a11y .dojoxEntityPaletteCell { + background-color:transparent !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/resources/drawing.css b/js/dojo-release-1.7.2-src/dojox/drawing/resources/drawing.css new file mode 100755 index 0000000..9df91b4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/resources/drawing.css @@ -0,0 +1,41 @@ +html, body{ + width:100%; + height:100%; + font-family:sans-serif; +} + +.textAnnotation{ + position:absolute; + border:1px solid #ccc; + background-color:#ffff00; + color:#0000ff; + padding:3px; + font-family:sans-serif; + font-size:12px; + margin-top:-10px; + z-index:501; +} + +#conEdit{ + border:0; + /*background:#ccc; + border:1px solid #ff0000; + outline:none;*/ + padding:3px; + margin:0; +} + +.drawingTooltip{ + font-family:sans-serif; + font-family:sans-serif; + font-weight:normal; + padding:5px; +} +.drawingTipTitle{ + font-size:12px; + font-weight:bold; +} +.drawingTipDesc{ + font-size:11px; + padding-left:10px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/resources/images/tool_icons.png b/js/dojo-release-1.7.2-src/dojox/drawing/resources/images/tool_icons.png new file mode 100755 index 0000000..74eaee9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/drawing/resources/images/tool_icons.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/resources/images/tool_sprites.png b/js/dojo-release-1.7.2-src/dojox/drawing/resources/images/tool_sprites.png new file mode 100644 index 0000000..d80bd4d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/drawing/resources/images/tool_sprites.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/resources/toolbar.css b/js/dojo-release-1.7.2-src/dojox/drawing/resources/toolbar.css new file mode 100755 index 0000000..c33a790 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/resources/toolbar.css @@ -0,0 +1,225 @@ +/* + FIXME: + IE refuses to honor the class targeting here, combining vertical and horizontal + currently vertical has precidence, horizontal will screw up +*/ +.horizontal.drawingToolbar{ + position:relative; + width:auto; + height:32px; + padding:5px; + left:5px; +} +.vertical.drawingToolbar{ + width:32px; + padding:5px; + position:absolute; + left:5px; + margin-top:5px; + background:#fff; +} + +.drawingToolbar .drawingButton{ + position:relative; + padding:0; + width:32px; + height:32px; + background-image:url("images/tool_sprites.png"); + background-position:0px 0px; + border:0; + cursor:pointer; +} + +.horizontal.drawingToolbar .drawingButton{ + float:left; + margin-right:5px; +} + +.dj_ie6 .drawingToolbar .drawingButton { + + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='images/tool_sprites.png'); +} +.vertical.drawingToolbar .drawingButton{ + margin-bottom:5px; + margin-right:0px; +} + +.drawingToolbar .drawingButton.hover{ + background-position:-32px 0px; +} +.drawingToolbar .drawingButton.active{ + background-position:-64px 0px; +} +.drawingToolbar .drawingButton.selected{ + background-position:-96px 0px; +} +.drawingToolbar .drawingButton.selected:hover{} + +.drawingToolbar.vertical{} + + + +.drawingToolbar .drawingButton .icon{ + background-image:url("images/tool_icons.png"); + width:32px; + height:64px; + position:absolute; + left:0px; + top:0px; + margin:0; + padding:0; + clip: rect(0px 32px 32px 0px); +} + + +.drawingToolbar .drawingButton.selected .icon{ + /* + background-position-y is not supported in Firefox + The workaround is to shift the icon with 'top' + and hide a portion of it with 'clip' + */ + top:-32px; + clip: rect(32px 32px 64px 0px); +} + + +.drawingToolbar .drawingButton .icon.iconLine{ + background-position:-64px 0px; +} +.drawingToolbar .drawingButton .icon.iconRect{ + background-position: 0px 0px; +} +.drawingToolbar .drawingButton .icon.iconEllipse{ + background-position:-32px 0px; +} +.drawingToolbar .drawingButton .icon.iconText{ + background-position:-224px 0px; +} +.drawingToolbar .drawingButton .icon.iconArrow{ + background-position:-96px 0px; +} +.drawingToolbar .drawingButton .icon.iconVector{ + background-position:-128px 0px; +} +.drawingToolbar .drawingButton .icon.iconAxes{ + background-position:-160px 0px; +} +.drawingToolbar .drawingButton .icon.iconPan{ + background-position:-192px 0px; +} +.drawingToolbar .drawingButton .icon.iconEq{ + background-position:-351px 0px; +} + +.dj_ie6 .drawingToolbar .drawingButton .icon { + + filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='images/tool_icons.png'); +} + + + +/* Combo button - a button that is connected (beg middle end) */ + +/* Vertical*/ +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboTop{ + background-position:-128px 0px; + margin:0; + margin-top:10px; + border-bottom:1px solid #d6d6d6; +} +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboTop.hover{ + background-position:-160px 0px; +} +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboTop.active{ + background-position:-192px 0px; +} + + +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboMid{ + background-position:-384px 0px; + border-style:solid; + border-width:1px; + border-color:#fff #cccccc #d6d6d6 #cccccc; + height:24px; + width:30px; + margin:0; +} +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboMid.hover, +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboMid.hover{ + background-position:-416px 0px; +} +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboMid.active, +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboMid.active{ + background-position:-448px 0px; +} + + +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboBot{ + background-position:-256px 0px; + border-top:1px solid #fff; + margin:0; +} +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboBot.hover{ + background-position:-288px 0px; +} +.drawingToolbar.vertical .toolCombo .drawingButton.toolComboBot.active{ + background-position:-320px 0px; +} + + +/* Horizontal +FIXME: Horizontal alignment needs tweaking +*/ +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboTop{ + background-position:-512px 0px; + margin:0; + margin-left:10px; + border:0px; + border-right:1px solid #d6d6d6; + +} +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboTop.hover{ + background-position:-544px 0px; +} +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboTop.active{ + background-position:-576px 0px; +} + + +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboMid{ + background-position:-384px 0px; + border-style:solid; + border-width:1px; + border-color:#cccccc #d6d6d6 #cccccc #fff; + height:30px; + width:31px; + margin:0; +} + +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboBot{ + background-position:-640px 0px; + border-left:1px solid #fff; + margin:0; + margin-top:-1px; + margin-right:-1px; +} +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboBot.hover{ + background-position:-673px 0px; +} +.drawingToolbar.horizontal .toolCombo .drawingButton.toolComboBot.active{ + background-position:-704px 0px; +} + + +.drawingToolbar .drawingButton .icon.iconZoomIn{ + background-position:-256px 0px; +} +.drawingToolbar .drawingButton .icon.iconZoom100{ + background-position:-320px -4px; +} +.drawingToolbar .drawingButton .icon.iconZoomOut{ + background-position:-288px 0px; +} + + + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Ellipse.js b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Ellipse.js new file mode 100755 index 0000000..f831b24 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Ellipse.js @@ -0,0 +1,100 @@ +dojo.provide("dojox.drawing.stencil.Ellipse"); + +/*===== +__StencilData = { + // summary: + // the data used to create the dojox.gfx Shape + // + + // cx: Number + // Center point x + cx:0, + // cy: Number + // Center point y + cy:0, + // rx: Number + // Horizontal radius + rx:0, + // ry: Number + // Vertical radius + ry:0 +} +=====*/ + +dojox.drawing.stencil.Ellipse = dojox.drawing.util.oo.declare( + // summary: + // Creates a dojox.gfx Ellipse based on data or points provided. + // + dojox.drawing.stencil._Base, + function(options){ + // summary: + // constructor + }, + { + + type:"dojox.drawing.stencil.Ellipse", + anchorType: "group", + baseRender:true, + dataToPoints: function(/*Object*/o){ + //summary: + // Converts data to points. + o = o || this.data; + var x = o.cx - o.rx, + y = o.cy - o.ry, + w = o.rx*2, + h = o.ry*2 + this.points = [ + {x:x, y:y}, // TL + {x:x+w, y:y}, // TR + {x:x+w, y:y+h}, // BR + {x:x, y:y+h} // BL + ]; + return this.points; //Array + }, + + pointsToData: function(/*Array*/p){ + // summary: + // Converts points to data + p = p || this.points; + var s = p[0]; + var e = p[2]; + this.data = { + cx: s.x + (e.x - s.x)/2, + cy: s.y + (e.y - s.y)/2, + rx: (e.x - s.x)*.5, + ry: (e.y - s.y)*.5 + }; + return this.data; //Object + + }, + + _create: function(/*String*/shp, /*__StencilData*/d, /*Object*/sty){ + // summary: + // Creates a dojox.gfx.shape based on passed arguments. + // Can be called many times by implementation to create + // multiple shapes in one stencil. + // + this.remove(this[shp]); + this[shp] = this.container.createEllipse(d) + .setStroke(sty) + .setFill(sty.fill); + this._setNodeAtts(this[shp]); + }, + + render: function(){ + // summary: + // Renders the 'hit' object (the shape used for an expanded + // hit area and for highlighting) and the'shape' (the actual + // display object). + // + this.onBeforeRender(this); + this.renderHit && this._create("hit", this.data, this.style.currentHit); + this._create("shape", this.data, this.style.current); + } + + } +); + +dojox.drawing.register({ + name:"dojox.drawing.stencil.Ellipse" +}, "stencil"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Image.js b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Image.js new file mode 100755 index 0000000..fdc13d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Image.js @@ -0,0 +1,155 @@ +dojo.provide("dojox.drawing.stencil.Image"); + + +dojox.drawing.stencil.Image = dojox.drawing.util.oo.declare( + // summary: + // Creates an dojox.gfx Image based on the data + // provided. + // + dojox.drawing.stencil._Base, + function(options){ + // summary: + // constructor + }, + { + type:"dojox.drawing.stencil.Image", + anchorType: "group", + baseRender:true, + +/*===== +StencilData: { + // summary: + // The data used to create the dojox.gfx Shape + // x: Number + // Left point x + // y: Number + // Top point y + // width: ? Number + // Optional width of Image. If not provided, it is obtained + // height: ? Number + // Optional height of Image. If not provided, it is obtained + // src: String + // The location of the source image +}, + +StencilPoints: [ + // summary: + // An Array of dojox.__StencilPoint objects that describe the Stencil + // 0: Object + // Top left point + // 1: Object + // Top right point + // 2: Object + // Bottom right point + // 3: Object + // Bottom left point +], +=====*/ + + dataToPoints: function(/*Object*/o){ + //summary: + // Converts data to points. + o = o || this.data; + this.points = [ + {x:o.x, y:o.y}, // TL + {x:o.x + o.width, y:o.y}, // TR + {x:o.x + o.width, y:o.y + o.height}, // BR + {x:o.x, y:o.y + o.height} // BL + ]; + return this.points; + }, + + pointsToData: function(/*Array*/p){ + // summary: + // Converts points to data + p = p || this.points; + var s = p[0]; + var e = p[2]; + this.data = { + x: s.x, + y: s.y, + width: e.x-s.x, + height: e.y-s.y, + src: this.src || this.data.src + }; + return this.data; + + }, + + _createHilite: function(){ + // summary: + // Create the hit and highlight area + // for the Image. + this.remove(this.hit); + this.hit = this.container.createRect(this.data) + .setStroke(this.style.current) + .setFill(this.style.current.fill); + this._setNodeAtts(this.hit); + }, + _create: function(/*String*/shp, /*StencilData*/d, /*Object*/sty){ + // summary: + // Creates a dojox.gfx.shape based on passed arguments. + // Can be called many times by implementation to create + // multiple shapes in one stencil. + // + this.remove(this[shp]); + var s = this.container.getParent(); + this[shp] = s.createImage(d) + this.container.add(this[shp]); + this._setNodeAtts(this[shp]); + }, + + render: function(dbg){ + // summary: + // Renders the 'hit' object (the shape used for an expanded + // hit area and for highlighting) and the'shape' (the actual + // display object). Image is slightly different than other + // implementations. Instead of calling render twice, it calls + // _createHilite for the 'hit' + // + if(this.data.width == "auto" || isNaN(this.data.width)){ + this.getImageSize(true); + console.warn("Image size not provided. Acquiring...") + return; + } + this.onBeforeRender(this); + this.renderHit && this._createHilite(); + this._create("shape", this.data, this.style.current); + }, + getImageSize: function(render){ + // summary: + // Internal. If no image size is passed in with the data + // create a dom node, insert and image, gets its dimensions + // record them - then destroy everything. + // + if(this._gettingSize){ return; } // IE gets it twice (will need to mod if src changes) + this._gettingSize = true; + var img = dojo.create("img", {src:this.data.src}, dojo.body()); + var err = dojo.connect(img, "error", this, function(){ + dojo.disconnect(c); + dojo.disconnect(err); + console.error("Error loading image:", this.data.src) + console.warn("Error image:", this.data) + + }); + var c = dojo.connect(img, "load", this, function(){ + var dim = dojo.marginBox(img); + this.setData({ + x:this.data.x, + y:this.data.y, + src:this.data.src, + width:dim.w, + height:dim.h + }); + dojo.disconnect(c); + dojo.destroy(img); + render && this.render(true); + }); + } + } +); + + +dojox.drawing.register({ + name:"dojox.drawing.stencil.Image" +}, "stencil"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Line.js b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Line.js new file mode 100755 index 0000000..32e5d1d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Line.js @@ -0,0 +1,118 @@ +dojo.provide("dojox.drawing.stencil.Line"); + +dojox.drawing.stencil.Line = dojox.drawing.util.oo.declare( + // summary: + // Creates a dojox.gfx Line based on data or points provided. + // + dojox.drawing.stencil._Base, + function(options){ + // summary: + // constructor + }, + { + type:"dojox.drawing.stencil.Line", + anchorType: "single", + baseRender:true, + +/*===== +StencilData: { + // summary: + // The data used to create the dojox.gfx Shape + // x1: Number + // First point x + // y1: Number + // First point y + // x2: Number + // Second point x + // y2: Number + // Second point y + + // ALTERNATIVE: + + // x: Number + // First point x + // y: Number + // First point y + // angle: Number + // angle of line + // radius: Number + // length of line +}, + +StencilPoints: [ + // summary: + // An Array of dojox.__StencilPoint objects that describe the Stencil + // 0: Object + // First point + // 1: Object + // Second point +], +=====*/ + + dataToPoints: function(o){ + //summary: + // Converts data to points. + o = o || this.data; + if(o.radius || o.angle){ + // instead of using x1,x2,y1,y1, + // it's been set as x,y,angle,radius + + var pt = this.util.pointOnCircle(o.x,o.y,o.radius,o.angle); + //console.log(" ---- pts:", pt.x, pt.y); + this.data = o = { + x1:o.x, + y1:o.y, + x2:pt.x, + y2:pt.y + } + + } + this.points = [ + {x:o.x1, y:o.y1}, + {x:o.x2, y:o.y2} + ]; + return this.points; + }, + pointsToData: function(p){ + // summary: + // Converts points to data + p = p || this.points; + this.data = { + x1: p[0].x, + y1: p[0].y, + x2: p[1].x, + y2: p[1].y + }; + return this.data; + }, + + _create: function(/*String*/shp, /*StencilData*/d, /*Object*/sty){ + // summary: + // Creates a dojox.gfx.shape based on passed arguments. + // Can be called many times by implementation to create + // multiple shapes in one stencil. + // + this.remove(this[shp]); + this[shp] = this.container.createLine(d) + .setStroke(sty); + this._setNodeAtts(this[shp]); + }, + + render: function(){ + // summary: + // Renders the 'hit' object (the shape used for an expanded + // hit area and for highlighting) and the'shape' (the actual + // display object). + // + this.onBeforeRender(this); + this.renderHit && this._create("hit", this.data, this.style.currentHit); + this._create("shape", this.data, this.style.current); + + } + + } +); + +dojox.drawing.register({ + name:"dojox.drawing.stencil.Line" +}, "stencil"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Path.js b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Path.js new file mode 100755 index 0000000..3542c90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Path.js @@ -0,0 +1,169 @@ +dojo.provide("dojox.drawing.stencil.Path"); + + +dojox.drawing.stencil.Path = dojox.drawing.util.oo.declare( + // summary: + // Creates a dojox.gfx Path based on points provided. + // + dojox.drawing.stencil._Base, + function(options){ + dojo.disconnect(this._postRenderCon); + }, + { + type:"dojox.drawing.stencil.Path", + closePath: true, + baseRender:true, + closeRadius:10, + closeColor:{r:255,g:255,b:0,a:.5}, + +/*===== +StencilData: { + // NOT SUPPORTED FOR PATH +}, + +StencilPoints: [ + // summary: + // An Array of StencilPoint objects that describe the Stencil + // 0: Object + // First point + // [1, 2, 3...] more points +], +=====*/ + + _create: function(/*String*/shp, /*Object*/sty){ + // summary: + // Creates a dojox.gfx.shape based on passed arguments. + // Can be called many times by implementation to create + // multiple shapes in one stencil. + // + this.remove(this[shp]); + if(!this.points.length){ return; } + + if(dojox.gfx.renderer=="svg"){ + // NOTE: + // In order to avoid the Safari d="" errors, + // we'll need to build a string and set that. + var strAr = []; + dojo.forEach(this.points, function(o, i){ + if(!o.skip){ + if(i==0){ + strAr.push("M " + o.x +" "+ o.y); + }else{ + var cmd = (o.t || "") + " "; + if(o.x===undefined){// Z + undefined works here, but checking anyway + strAr.push(cmd); + }else{ + strAr.push(cmd + o.x +" "+ o.y); + } + } + } + }, this); + if(this.closePath){ + strAr.push("Z"); + } + + this.stringPath = strAr.join(" "); + + this[shp] = this.container.createPath(strAr.join(" ")).setStroke(sty); + this.closePath && this[shp].setFill(sty.fill); + + }else{ + // Leaving this code for VML. It seems slightly faster but times vary. + this[shp] = this.container.createPath({}).setStroke(sty); + + this.closePath && this[shp].setFill(sty.fill); + + dojo.forEach(this.points, function(o, i){ + if(!o.skip){ + if(i==0 || o.t=="M"){ + this[shp].moveTo(o.x, o.y); + }else if(o.t=="Z"){ + this.closePath && this[shp].closePath(); + }else{ + this[shp].lineTo(o.x, o.y); + } + } + }, this); + + this.closePath && this[shp].closePath(); + } + + this._setNodeAtts(this[shp]); + }, + + render: function(){ + // summary: + // Renders the 'hit' object (the shape used for an expanded + // hit area and for highlighting) and the'shape' (the actual + // display object). + // + this.onBeforeRender(this); + this.renderHit && this._create("hit", this.style.currentHit); + this._create("shape", this.style.current); + //console.log("path render") + + + //console.log("---------------------rend hit", this.renderHit, this.id) + }, + getBounds: function(/* ? Boolean*/absolute){ + // summary: + // Overwriting _Base.getBounds. Not sure how absolute should + // work for a path. + var minx = 10000, miny = 10000, maxx = 0, maxy = 0; + dojo.forEach(this.points, function(p){ + if(p.x!==undefined && !isNaN(p.x)){ + minx = Math.min(minx, p.x); + miny = Math.min(miny, p.y); + maxx = Math.max(maxx, p.x); + maxy = Math.max(maxy, p.y); + } + }); + + return { + x1:minx, + y1:miny, + x2:maxx, + y2:maxy, + x:minx, + y:miny, + w:maxx-minx, + h:maxy-miny + }; + }, + + checkClosePoint: function(/*Object*/firstPt, /*Object*/currPt, /*Boolean*/remove){ + // summary: + // Checks if points are close enough to indicate that + // path should be close. Provides a visual cue. + // description: + // Not actually used in stencil.path - this is used for + // drawable tools that extend it. Note that those tools + // need to remove the shape created: this.closeGuide, or + // add arg: remove + // + var dist = this.util.distance(firstPt.x, firstPt.y, currPt.x, currPt.y); + if(this.points.length>1){ + if(dist this.closeRadius && this.closeGuide){ + this.remove(this.closeGuide); + this.closeGuide = null; + } + } + // return if we are within close distance + return dist < this.closeRadius; // Boolean + } + } +); + +dojox.drawing.register({ + name:"dojox.drawing.stencil.Path" +}, "stencil"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Rect.js b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Rect.js new file mode 100755 index 0000000..79e29af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Rect.js @@ -0,0 +1,82 @@ +dojo.provide("dojox.drawing.stencil.Rect"); + + +dojox.drawing.stencil.Rect = dojox.drawing.util.oo.declare( + // summary: + // Creates a dojox.gfx rectangle based on data or points provided. + // + dojox.drawing.stencil._Base, + function(options){ + // summary: + // constructor + if(this.points.length){ + //this.render(); + } + }, + { + type:"dojox.drawing.stencil.Rect", + anchorType: "group", + baseRender:true, + + dataToPoints: function(/*Object*/d){ + //summary: + // Converts data to points. + d = d || this.data; + this.points = [ + {x:d.x, y:d.y}, // TL + {x:d.x + d.width, y:d.y}, // TR + {x:d.x + d.width, y:d.y + d.height}, // BR + {x:d.x, y:d.y + d.height} // BL + ]; + return this.points; + }, + + pointsToData: function(/*Array*/p){ + // summary: + // Converts points to data + p = p || this.points; + var s = p[0]; + var e = p[2]; + this.data = { + x: s.x, + y: s.y, + width: e.x-s.x, + height: e.y-s.y, + r:this.data.r || 0 + }; + return this.data; + + }, + + _create: function(/*String*/shp, /*StencilData*/d, /*Object*/sty){ + // summary: + // Creates a dojox.gfx.shape based on passed arguments. + // Can be called many times by implementation to create + // multiple shapes in one stencil. + // + //console.log("render rect", d) + //console.log("rect sty:", sty) + this.remove(this[shp]); + this[shp] = this.container.createRect(d) + .setStroke(sty) + .setFill(sty.fill); + + this._setNodeAtts(this[shp]); + }, + + render: function(){ + // summary: + // Renders the 'hit' object (the shape used for an expanded + // hit area and for highlighting) and the'shape' (the actual + // display object). + // + this.onBeforeRender(this); + this.renderHit && this._create("hit", this.data, this.style.currentHit); + this._create("shape", this.data, this.style.current); + } + } +); + +dojox.drawing.register({ + name:"dojox.drawing.stencil.Rect" +}, "stencil"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Text.js b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Text.js new file mode 100755 index 0000000..cdbfbf9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/stencil/Text.js @@ -0,0 +1,228 @@ +dojo.provide("dojox.drawing.stencil.Text"); + +dojox.drawing.stencil.Text = dojox.drawing.util.oo.declare( + // summary: + // Creates a dojox.gfx Text (SVG or VML) based on data provided. + // description: + // There are two text classes. TextBlock extends this one and + // adds editable functionality, discovers text width etc. + // This class displays text only. There is no line wrapping. + // Multiple lines can be acheived by inserting \n linebreaks + // in the text. + // + dojox.drawing.stencil._Base, + function(options){ + // summary: + // constructor. + }, + { + type:"dojox.drawing.stencil.Text", + anchorType:"none", + baseRender:true, + + // align: String + // Text horizontal alignment. + // Options: start, middle, end + align:"start", + // + // valign:String + // Text vertical alignment + // Options: top, middle, bottom (FIXME: bottom not supported) + valign:"top", + // + // _lineHeight: [readonly] Number + // The height of each line of text. Based on style information + // and font size. + _lineHeight:1, + +/*===== +StencilData: { + // summary: + // The data used to create the dojox.gfx Text + // x: Number + // Left point x + // y: Number + // Top point y + // width: ? Number + // Optional width of Text. Not required but reccommended. + // for auto-sizing, use TextBlock + // height: ? Number + // Optional height of Text. If not provided, _lineHeight is used. + // text: String + // The string content. If not provided, may auto-delete depending on defaults. +}, + +StencilPoints: [ + // summary: + // An Array of dojox.__StencilPoint objects that describe the Stencil + // 0: Object + // Top left point + // 1: Object + // Top right point + // 2: Object + // Bottom right point + // 3: Object + // Bottom left point +], +=====*/ + + typesetter: function(text){ + // summary: + // Register raw text, returning typeset form. + // Uses function dojox.drawing.stencil.Text.typeset + // for typesetting, if it exists. + // + if(dojox.drawing.util.typeset){ + this._rawText = text; + return dojox.drawing.util.typeset.convertLaTeX(text); + } + return text; + }, + + setText: function(text){ + // summary: + // Setter for text. + // + // Only apply typesetting to objects that the user can modify. + // Else, it is assumed that typesetting is done elsewhere. + if(this.enabled){ + text = this.typesetter(text); + } + // This only has an effect if text is null or this.created is false. + this._text = text; + + this._textArray = []; + this.created && this.render(text); + }, + + getText: function(){ + // summary: + // Getter for text. + // + return this._rawText || this._text; + }, + + dataToPoints: function(/*Object*/o){ + //summary: + // Converts data to points. + o = o || this.data; + var w = o.width =="auto" ? 1 : o.width; + var h = o.height || this._lineHeight; + this.points = [ + {x:o.x, y:o.y}, // TL + {x:o.x + w, y:o.y}, // TR + {x:o.x + w, y:o.y + h}, // BR + {x:o.x, y:o.y + h} // BL + ]; + return this.points; + }, + pointsToData: function(/*Array*/p){ + // summary: + // Converts points to data + p = p || this.points; + var s = p[0]; + var e = p[2]; + this.data = { + x: s.x, + y: s.y, + width: e.x-s.x, + height: e.y-s.y + }; + return this.data; + }, + + render: function(/* String*/text){ + // summary: + // Renders the 'hit' object (the shape used for an expanded + // hit area and for highlighting) and the'shape' (the actual + // display object). Text is slightly different than other + // implementations. Instead of calling render twice, it calls + // _createHilite for the 'hit' + // arguments: + // text String + // Changes text if sent. Be sure to use the setText and + // not to call this directly. + // + this.remove(this.shape, this.hit); + //console.log("text render, outline:", !this.annotation, this.renderHit, (!this.annotation && this.renderHit)) + !this.annotation && this.renderHit && this._renderOutline(); + if(text!=undefined){ + this._text = text; + this._textArray = this._text.split("\n"); + } + + var d = this.pointsToData(); + var h = this._lineHeight; + var x = d.x + this.style.text.pad*2; + var y = d.y + this._lineHeight - (this.textSize*.4); + if(this.valign=="middle"){ + y -= h/2; + } + this.shape = this.container.createGroup(); + + /*console.log(" render ", this.type, this.id) + console.log(" render Y:", d.y, "textSize:", this.textSize, "LH:", this._lineHeight) + console.log(" render text:", y, " ... ", this._text, "enabled:", this.enabled); + console.log(" render text:", this.style.currentText); + */ + dojo.forEach(this._textArray, function(txt, i){ + var tb = this.shape.createText({x: x, y: y+(h*i), text: unescape(txt), align: this.align}) + .setFont(this.style.currentText) + .setFill(this.style.currentText.color); + + this._setNodeAtts(tb); + + }, this); + + this._setNodeAtts(this.shape); + + }, + _renderOutline: function(){ + // summary: + // Create the hit and highlight area + // for the Text. + // + if(this.annotation){ return; } + var d = this.pointsToData(); + + if(this.align=="middle"){ + d.x -= d.width/2 - this.style.text.pad * 2; + }else if(this.align=="start"){ + d.x += this.style.text.pad; + }else if(this.align=="end"){ + d.x -= d.width - this.style.text.pad * 3; + } + + if(this.valign=="middle"){ + d.y -= (this._lineHeight )/2 - this.style.text.pad; + } + + this.hit = this.container.createRect(d) + .setStroke(this.style.currentHit) + .setFill(this.style.currentHit.fill); + //.setFill("#ffff00"); + + this._setNodeAtts(this.hit); + this.hit.moveToBack(); + }, + makeFit: function(text, w){ + var span = dojo.create('span', {innerHTML:text, id:"foo"}, document.body); + var sz = 1; + dojo.style(span, "fontSize", sz+"px"); + var cnt = 30; + while(dojo.marginBox(span).w>>> ", this.type, "points", options.points) + if(options.data && options.data.closePath===false){ + this.closePath = false; + } + this.setPoints(options.points); + this.connect(this, "render", this, "onRender", true); + this.baseRender && this.enabled && this.render(); + options.label && this.setLabel(options.label); + options.shadow && this.addShadow(options.shadow); + + }else if(options.data){ + //console.log("___________Base.constr", this.type, "options data", options.data) + options.data.width = options.data.width ? options.data.width : this.style.text.minWidth; + options.data.height = options.data.height ? options.data.height : this._lineHeight; + this.setData(options.data); + this.connect(this, "render", this, "onRender", true); + this.baseRender && this.enabled && this.render(options.data.text); + this.baseRender && options.label && this.setLabel(options.label); + this.baseRender && options.shadow && this.addShadow(options.shadow); + + }else if(this.draws){ + //console.log("_____________Base.constr", this.type, "draws") + this.points = []; + this.data = {}; + this.connectMouse(); + this._postRenderCon = dojo.connect(this, "render", this, "_onPostRender"); + } + if(this.showAngle){ + this.angleLabel = new dojox.drawing.annotations.Angle({stencil:this}); + } + + if(!this.enabled){ + this.disable(); + this.moveToBack(); + // some things render some don't... + this.render(options.data.text); + } + + }, + { + + // type: String + // The type of Stencil this is. Should be overridden + // by extending classes. + // FIXME: should this be declaredClass? + type:"dojox.drawing.stencil", + // + // minimumSize: Number + // The minimum size allowed for a render. If the size + // is less, the shape is destroyed. + minimumSize:10, + // + // enabled [readonly] Boolean + // Whether the Stencil is enabled or not. + enabled:true, + + + drawingType:"stencil", + + //points:[], + + setData: function(/*StencilData*/data){ + // summary: + // Setter for Stencil data; also converts + // data to points. See individual Stencils + // for specific data properties. + this.data = data; + this.points = this.dataToPoints(); + }, + + setPoints: function(/*StencilPoints*/points){ + // summary: + // Setter for Stencil points; also converts + // points to data. See individual Stencils + // for specific points properties. + this.points = points; + // Path doesn't do data + if(this.pointsToData){ + this.data = this.pointsToData(); + } + }, + + onDelete: function(/* Stencil */ stencil){ + // summary: + // Stub - fires before this is destroyed + console.info("onDelete", this.id); + }, + + onBeforeRender: function(/*Object*/ stencil){ + // summary: + // Stub - Fires before render occurs. + }, + + onModify: function(/*Object*/stencil){ + // summary: + // Stub - fires on change of any property, + // including style properties + + }, + + onChangeData: function(/*Object*/ stencil){ + // summary: + // Stub - fires on change of dimensional + // properties or a text change + }, + + onChangeText: function(value){ // value or 'this' ? + // summary: + // Stub - fires on change of text in a + // TextBlock tool only + }, + + onRender: function(/*Object*/ stencil){ + // summary: + // Stub - Fires on creation. + // Drawing connects to this (once!) to be + // notified of drag completion. But only if it + // was registered as a Tool. Creating Stencil in and of + // itself does not register it. + // + // This should fire + // at the *end* of creation (not during drag) + // + // FIXME: + // This should probably be onCreate. It should + // only fire once. But the mechanism for determining + // this is more complicated than it sounds. + // + this._postRenderCon = dojo.connect(this, "render", this, "_onPostRender"); + this.created = true; + this.disconnectMouse(); + + // for Silverlight + if(this.shape){ + this.shape.superClass = this; + }else{ + this.container.superClass = this; + } + this._setNodeAtts(this); + //console.warn("ONRENDER", this.id, this) + }, + + onChangeStyle: function(/*Object*/stencil){ + // summary: + // Fires when styles of shape has changed + // + this._isBeingModified = true; // need this to prevent onRender + if(!this.enabled){ + this.style.current = this.style.disabled; + this.style.currentText = this.style.textDisabled; + this.style.currentHit = this.style.hitNorm; + + }else{ + this.style.current = this.style.norm; + this.style.currentHit = this.style.hitNorm; + this.style.currentText = this.style.text; + } + + if(this.selected){ + if(this.useSelectedStyle){ + this.style.current = this.style.selected; + this.style.currentText = this.textSelected; + } + this.style.currentHit = this.style.hitSelected; + + }else if(this.highlighted){ + //this.style.current = this.style.highlighted; + this.style.currentHit = this.style.hitHighlighted; + //this.style.currentText = this.style.textHighlighted; + } + + // NOTE: Can't just change props like setStroke + // because Silverlight throws error + this.render(); + }, + + animate: function(options, create){ + console.warn("ANIMATE..........................") + var d = options.d || options.duration || 1000; + var ms = options.ms || 20; + var ease = options.ease || dojo.fx.easing.linear; + var steps = options.steps; + var ts = new Date().getTime(); + var w = 100; + var cnt = 0; + var isArray = true; + var sp, ep; + + if(dojo.isArray(options.start)){ + sp = options.start; + ep = options.end; + + }else if(dojo.isObject(options.start)){ + sp = options.start; + ep = options.end; + isArray = false; + }else{ + + console.warn("No data provided to animate") + } + + var v = setInterval(dojo.hitch(this, function(){ + var t = new Date().getTime() - ts; + var p = ease(1-t/d); + if(t > d || cnt++ > 100){ + clearInterval(v); + return; + } + + if(isArray){ + var pnts = []; + dojo.forEach(sp, function(pt, i){ + + var o = { + x: (ep[i].x-sp[i].x)*p + sp[i].x, + y: (ep[i].y-sp[i].y)*p + sp[i].y + }; + pnts.push(o); + }); + this.setPoints(pnts); + this.render(); + + }else{ + + var o = {}; + for(var nm in sp){ + o[nm] = (ep[nm] - sp[nm]) * p + sp[nm]; + } + + this.attr(o); + + } + //console.dir(pnts) + + + //this.attr("height", w); + ////console.log("W:", w) + //w += 5; + + }), ms); + }, + + attr: function(/*String | Object*/key, /* ? String | Number */value){ + // summary + // Changes properties in the style or disabled styles, + // depending on whether the object is enabled. + // Also can be used to change most position and size props. + + // NOTE: JUST A SETTTER!! TODO! + + // WARNING: + // Not doing any Stencil-type checking here. Setting a height + // on a line or an angle on a rectangle will just not render. + + // FIXME + // 'width' attr is used for line width. How to change the width of a stencil? + var n = this.enabled?this.style.norm:this.style.disabled; + var t = this.enabled?this.style.text:this.style.textDisabled; + var ts = this.textSelected || {}, + o, + nm, + width, + styleWas = dojo.toJson(n), + textWas = dojo.toJson(t); + + var coords = { + x:true, + y:true, + r:true, + height:true, + width:true, + radius:true, + angle:true + }; + var propChange = false; + if(typeof(key)!="object"){ + o = {}; + o[key] = value; + }else{ + // prevent changing actual data + o = dojo.clone(key); + } + + if(o.width){ + // using width for size, + // borderWidth should be used + // for line thickness + width = o.width; + delete o.width; + } + + for(nm in o){ + if(nm in n){ n[nm] = o[nm]; } + if(nm in t){ t[nm] = o[nm]; } + if(nm in ts){ ts[nm] = o[nm]; } + + if(nm in coords){ + coords[nm] = o[nm]; + propChange = true; + if(nm == "radius" && o.angle===undefined){ + o.angle = coords.angle = this.getAngle(); + }else if(nm == "angle" && o.radius===undefined){ + o.radius = coords.radius = this.getRadius(); + } + + } + if(nm == "text"){ + this.setText(o.text); + } + if(nm == "label"){ + this.setLabel(o.label); + } + } + if(o.borderWidth!==undefined){ + n.width = o.borderWidth; + } + + if(this.useSelectedStyle){ + // using the orginal selected style copy as + // a reference map of what props to copy + for(nm in this.style.norm){ + if(this.selCopy[nm]===undefined){ + this.style.selected[nm] = this.style.norm[nm]; + } + } + this.textSelected.color = this.style.selected.color; + + } + + if(!this.created){ + return; + } + + // basic transform + if(o.x!==undefined || o.y!==undefined){ + var box = this.getBounds(true); + var mx = { dx:0, dy:0 }; + for(nm in o){ + if(nm=="x" || nm =="y" || nm =="r"){ + mx["d"+nm] = o[nm] - box[nm]; + } + } + this.transformPoints(mx); + } + + + var p = this.points; + if(o.angle!==undefined){ + this.dataToPoints({ + x:this.data.x1, + y:this.data.y1, + angle:o.angle, + radius:o.radius + }); + + } else if(width!==undefined){ + p[1].x = p[2].x = p[0].x + width; + this.pointsToData(p); + } + + if(o.height!==undefined && o.angle===undefined){ + console.log("Doing P2D-2"); + p[2].y = p[3].y = p[0].y + o.height; + this.pointsToData(p); + } + + if(o.r!==undefined){ + this.data.r = Math.max(0, o.r); + } + + //console.dir(this.data); + if(propChange || textWas!=dojo.toJson(t) || styleWas != dojo.toJson(n)){ + // to trigger the render + // other events will be called post render + this.onChangeStyle(this); + } + o.width = width; + + if(o.cosphi!=undefined){ + !this.data? this.data = {cosphi:o.cosphi} : this.data.cosphi = o.cosphi; + this.style.zAxis = o.cosphi!=0 ? true : false; + } + }, + + exporter: function(){ + // summary: + // Exports Stencil data + // + var type = this.type.substring(this.type.lastIndexOf(".")+1).charAt(0).toLowerCase() + + this.type.substring(this.type.lastIndexOf(".")+2); + var o = dojo.clone(this.style.norm); + o.borderWidth = o.width; + delete o.width; + if(type=="path"){ + o.points = this.points; + }else{ + o = dojo.mixin(o, this.data); + } + o.type = type; + if(this.isText){ + o.text = this.getText(); + o = dojo.mixin(o, this.style.text); + delete o.minWidth; + delete o.deleteEmptyCreate; + delete o.deleteEmptyModify; + } + var lbl = this.getLabel(); + if(lbl){ + o.label = lbl; + } + return o; + }, + + + // TODO: + // Makes these all called by att() + // Should points and data be? + // + disable: function(){ + // summary: + // Disables Stencil so it is not selectable. + // Changes the color to the disabled style. + this.enabled = false; + this.renderHit = false; + this.onChangeStyle(this); + }, + + enable: function(){ + // summary: + // Enables Stencil so it is not selectable (if + // it was selectable to begin with). Changes the + // color to the current style. + this.enabled = true; + this.renderHit = true; + this.onChangeStyle(this); + }, + + select: function(){ + // summary: + // Called when the Stencil is selected. + // NOTE: Calling this will not select the Stencil + // calling this just sets the style to the 'selected' + // theme. 'manager.Stencil' should be used for selecting + // Stencils. + // + this.selected = true; + this.onChangeStyle(this); + }, + + deselect: function(/*Boolean*/useDelay){ + // summary: + // Called when the Stencil is deselected. + // NOTE: Calling this will not deselect the Stencil + // calling this just sets the style to the current + // theme. 'manager.Stencil' should be used for selecting + // and deselecting Stencils. + // + // arguments: + // useDelay: Boolean + // Adds slight delay before the style is set. + // + // should not have to render here because the deselection + // re-renders after the transform + // but... oh well. + if(useDelay){ + setTimeout(dojo.hitch(this, function(){ + this.selected = false; + this.onChangeStyle(this); + }),200); + }else{ + this.selected = false; + this.onChangeStyle(this); + } + }, + _toggleSelected: function(){ + if(!this.selected){ return; } + this.deselect(); + setTimeout(dojo.hitch(this, "select"), 0); + }, + + highlight: function(){ + // summary: + // Changes style to the highlight theme. + this.highlighted = true; + this.onChangeStyle(this); + }, + + unhighlight: function(){ + // summary: + // Changes style to the current theme. + this.highlighted = false; + this.onChangeStyle(this); + }, + + moveToFront: function(){ + // summary: + // Moves Stencil to the front of all other items + // on the canvas. + this.container && this.container.moveToFront(); + }, + + moveToBack: function(){ + // summary: + // Moves Stencil to the back of all other items + // on the canvas. + this.container && this.container.moveToBack(); + }, + + onTransformBegin: function(/* ? manager.Anchor */anchor){ + // summary: + // Fired at the start of a transform. This would be + // an anchor drag or a selection. + // + this._isBeingModified = true; + }, + + onTransformEnd: function(/* manager.Anchor */anchor){ + // summary: + // Called from anchor point up mouse up + this._isBeingModified = false; + this.onModify(this); + }, + + onTransform: function(/* ? manager.Anchor */anchor){ + // summary: + // Called from anchor point mouse drag + // also called from plugins.Pan.checkBounds + if(!this._isBeingModified){ + this.onTransformBegin(); + } + // this is not needed for anchor moves, but it + // is for stencil move: + this.setPoints(this.points); + this.render(); + }, + + transformPoints: function(mx){ + // summary: + // Moves object to a new X Y location + // mx is additive. So mx.dx=1 will move the stencil + // 1 pixel to the right from wherever it was. + // + // An attempt is made to prevent < 0 errors, but + // this won't work on all shapes (like Axes) + // + if(!mx.dx && !mx.dy){ + // no change + return; + } + var backup = dojo.clone(this.points), abort = false; + dojo.forEach(this.points, function(o){ + o.x += mx.dx; + o.y += mx.dy; + if(o.x 180, -90 -> 270 + angle<0 ? angle = 360 + angle : angle; + return angle; + }, + getRadius: function(){ + // summary: + // Gets radius (length) of Stencil + // NOTE: Only works for Lines, Arrows and Vectors + // (not for Ellipse, Axes has its own version) + // + var box = this.getBounds(true); + var line = {start:{x:box.x1, y:box.y1}, x:box.x2, y:box.y2}; + return this.util.length(line); + }, + getBounds: function(/* ? Boolean*/absolute){ + // summary: + // Returns the coordinates of the Stencil. This is often + // different than the data or the points. + // arguments: + // absolute: Boolean + // Keeps lines from flipping (see note). + // + // NOTE: Won't work for paths or annotations (labels, Axes, arrow tips) + // They should overwrite. + // NOTE: Primarily used for checking for if shape is off + // canvas. Therefore Lines could get flipped. Use absolute + // to prevent this. + // + var p = this.points, x1, y1, x2, y2; + if(p.length==2){ + if(absolute){ + x1 = p[0].x; + y1 = p[0].y; + x2 = p[1].x; + y2 = p[1].y + }else{ + x1 = p[0].x < p[1].x ? p[0].x : p[1].x; + y1 = p[0].y < p[1].y ? p[0].y : p[1].y; + x2 = p[0].x < p[1].x ? p[1].x : p[0].x; + y2 = p[0].y < p[1].y ? p[1].y : p[0].y; + } + return { + x1:x1, + y1:y1, + x2:x2, + y2:y2, + x:x1, + y:y1, + w:x2-x1, + h:y2-y1 + }; // Object + }else{ + return { + x1:p[0].x, + y1:p[0].y, + x2:p[2].x, + y2:p[2].y, + x:p[0].x, + y:p[0].y, + w:p[2].x - p[0].x, + h:p[2].y - p[0].y + }; // Object + } + }, + + + preventNegativePos: function(){ + // summary: + // Internal. Prevent item from being drawn/rendered less + // than zero on the X or Y. + // + // if being modified anchors will prevent less than zero. + if(this._isBeingModified){ return; } + // FIXME: why is this sometimes empty? + if(!this.points || !this.points.length){ return; } + + if(this.type=="dojox.drawing.tools.custom.Axes"){ + // this scenario moves all points if < 0 + var minY = this.marginZero, minX = this.marginZero; + dojo.forEach(this.points, function(p){ minY = Math.min(p.y, minY); }); + dojo.forEach(this.points, function(p){ minX = Math.min(p.x, minX); }); + + if(minY : this.editMode:", this.editMode) + this.onChangeData(this); + this._prevData = dojo.clone(this.data); + + }else if(!this._prevData && (!this.isText || this.getText())){ + //console.info("_Base no prevData.........................."); + this._prevData = dojo.clone(this.data); + + } + + }, + + _setNodeAtts: function(shape){ + // summary: + // Internal. Sets the rawNode attribute. (Or in Silverlight + // an "object attribute". "stencil" is + // used by the application to determine if + // something is selectable or not. This also + // sets the mouse custom events like: + // "onStencilUp". To disable the selectability, + // make the att "", which causes a standard + // mouse event. + // Labels are special and used to select master stencils. + var att = this.enabled && (!this.annotation || this.drawingType=="label") ? this.drawingType : ""; + this.util.attr(shape, "drawingType", att); + }, + + + destroy: function(){ + // summary: + // Destroys this Stencil + // Note: + // Can connect to this, but it's better to + // connect to onDelete + // + // prevent loops: + if(this.destroyed){ return; } + if(this.data || this.points && this.points.length){ + this.onDelete(this); + } + + this.disconnectMouse(); + this.disconnect(this._cons); + dojo.disconnect(this._postRenderCon); + this.remove(this.shape, this.hit); + this.destroyed = true; + }, + + remove: function(/*Shape...*/){ + // summary: + // Removes shape(s), typically before a re-render + // No args defaults to this.shape + // Pass in multiple args to remove multiple shapes + // + // FIXME: Use an Array of all shapes + // + var a = arguments; + if(!a.length){ + if(!this.shape){ return; } + a = [this.shape]; + } + for(var i=0;i1){ + // arguments are the connect params + this._cons.push(this.connect.apply(this, arguments)); + }else if(dojo.isArray(arguments[0][0])){ + // an array of arrays of params + dojo.forEach(arguments[0], function(ar){ + this._cons.push(this.connect.apply(this, ar)); + }, this); + }else{ + //one array of params + this._cons.push(this.connect.apply(this, arguments[0])); + } + + }, + + // TODO: connect to a Shape event from outside class + connect: function(o, e, s, m, /* Boolean*/once){ + // summary: + // Convenience method for quick connects + // See comments below for possiblities + // functions can be strings + // once: + // If true, the connection happens only + // once then disconnects. Five args are required + // for this functionality. + // + var c; + if(typeof(o)!="object"){ + if(s){ + // ** function object function ** + m = s; s = e; e=o; o = this; + }else{ + // ** function function ** + m = e; e = o; o = s = this; + } + }else if(!m){ + // ** object function function ** + m = s; s = this; + }else if(once){ + // ** object function object function Boolean ** + c = dojo.connect(o, e, function(evt){ + dojo.hitch(s, m)(evt); + dojo.disconnect(c); + }); + this._cons.push(c); + return c; + }else{ + // ** object function object function ** + } + c = dojo.connect(o, e, s, m); + this._cons.push(c); + return c; + }, + + disconnect: function(/*handle | Array*/handles){ + // summary: + // Removes connections based on passed + // handles arguments + if(!handles){ return } + if(!dojo.isArray(handles)){ handles=[handles]; } + dojo.forEach(handles, dojo.disconnect, dojo); + }, + + connectMouse: function(){ + // summary: + // Internal. Registers this Stencil to receive + // mouse events. + this._mouseHandle = this.mouse.register(this); + }, + disconnectMouse: function(){ + // summary: + // Internal. Unregisters this Stencil from receiving + // mouse events. + this.mouse.unregister(this._mouseHandle); + }, + + // Should be overwritten by sub class: + render: function(){ + // summary: + // This Stencil's render description. Often + // calls 'sub render' methods. + }, + //renderOutline: function(){}, + dataToPoints: function(/*Object*/data){ + // summary: + // Converts data to points. + }, + pointsToData: function(/*Array*/points){ + // summary: + // Converts points to data + }, + onDown: function(/*EventObject*/obj){ + // summary: + // Mouse event, fired on mousedown on canvas + // + // by default, object is ready to accept data + // turn this off for dragging or onRender will + // keep firing and register the shape + // NOTE: Not needed for all stencils. Axes needs it. + this._downOnCanvas = true; + dojo.disconnect(this._postRenderCon); + this._postRenderCon = null; + }, + onMove: function(/*EventObject*/obj){ + // summary: + // Mouse event, fired on mousemove while mouse + // is not down. + // NOTE: Not currently implemented + }, + onDrag: function(/*EventObject*/obj){ + // summary: + // Mouse event, fired on mousemove while mouse + // is down on canvas + }, + onUp: function(/*EventObject*/obj){ + // summary: + // Mouse event, fired on mouseup + } + } +); + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tests/drawing.html b/js/dojo-release-1.7.2-src/dojox/drawing/tests/drawing.html new file mode 100755 index 0000000..e190525 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tests/drawing.html @@ -0,0 +1,186 @@ + + + Drawing Test + + + + + + + + +

                            Drawing Test

                            +
                            +
                            +
                            +
                            Line
                            +
                            Rect
                            +
                            Ellipse
                            +
                            Path
                            +
                            Text
                            +
                            Arrow
                            +
                            Vector
                            +
                            Axes
                            +
                            Pan
                            +
                            Zoom
                            + +
                            + +
                            + +
                            +
                            + +
                            +
                            + + + + +     + + + +
                            +
                            + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_drawing.html b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_drawing.html new file mode 100644 index 0000000..0297378 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_drawing.html @@ -0,0 +1,160 @@ + + + Drawing GFX Toolbar Test + + + + + + + + +

                            Drawing Test

                            +
                            +
                            +
                            +
                            +
                            + +
                            + + + + +     + + + +
                            +
                            + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_drawing_toolbar.html b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_drawing_toolbar.html new file mode 100644 index 0000000..c53f356 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_drawing_toolbar.html @@ -0,0 +1,105 @@ + + + Drawing Test + + + + + + + + +

                            Drawing Test

                            +
                            +
                            + +
                            + +
                            +
                            +
                            + +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_paths.html b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_paths.html new file mode 100644 index 0000000..65acf96 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_paths.html @@ -0,0 +1,119 @@ + + + Drawing Paths Test + + + + + + + + +

                            Drawing Paths Test

                            +
                            +
                            + + +
                            + +
                            +
                            +
                            + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_shadows.html b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_shadows.html new file mode 100644 index 0000000..a9b8e9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tests/test_shadows.html @@ -0,0 +1,99 @@ + + + Drawing GFX Toolbar Test + + + + + + + + + + + +

                            Drawing Test

                            +
                            +
                            + + + + +
                            +
                            +
                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tools/Arrow.js b/js/dojo-release-1.7.2-src/dojox/drawing/tools/Arrow.js new file mode 100755 index 0000000..c874f75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tools/Arrow.js @@ -0,0 +1,83 @@ +dojo.provide("dojox.drawing.tools.Arrow"); + +dojox.drawing.tools.Arrow = dojox.drawing.util.oo.declare( + // summary: + // Extends stencil.Line and adds an arrow head + // to the end and or start. + // + dojox.drawing.tools.Line, + function(options){ + // summary: constructor + if(this.arrowStart){ + this.begArrow = new dojox.drawing.annotations.Arrow({stencil:this, idx1:0, idx2:1}); + } + if(this.arrowEnd){ + this.endArrow = new dojox.drawing.annotations.Arrow({stencil:this, idx1:1, idx2:0}); + } + if(this.points.length){ + // This is protecting against cases when there are no points + // not sure how that would ever happen + // Render & label here instead of in base because of Arrow annotation + this.render(); + options.label && this.setLabel(options.label); + } + }, + { + draws:true, + type:"dojox.drawing.tools.Arrow", + baseRender:false, + + // arrowStart: Boolean + // Whether or not to place an arrow on start. + arrowStart:false, + // + // arrowEnd: Boolean + // Whether or not to place an arrow on end. + arrowEnd:true, + + labelPosition: function(){ + // summary: + // The custom position used for the label + // + var d = this.data; + var pt = dojox.drawing.util.positioning.label({x:d.x1,y:d.y1},{x:d.x2,y:d.y2}); + return { + x:pt.x, + y:pt.y + } + }, + + onUp: function(/*EventObject*/obj){ + // summary: See stencil._Base.onUp + // + if(this.created || !this.shape){ return; } + + // if too small, need to reset + var p = this.points; + var len = this.util.distance(p[0].x,p[0].y,p[1].x,p[1].y); + if(lenx1 ? ((x2-x1)/2) : ((x1-x2)/-2); + var dy = y2>y1 ? ((y2-y1)/2) : ((y1-y2)/-2); + x1 -= dx; + x2 -= dx; + y1 -= dy; + y2 -= dy; + } + + this.setPoints([ + {x:x1, y:y1}, + {x:x2, y:y2} + ]); + this.render(); + }, + + onUp: function(/*EventObject*/obj){ + // summary: See stencil._Base.onUp + // + if(this.created || !this._downOnCanvas){ return; } + this._downOnCanvas = false; + //Default shape on single click + if(!this.shape){ + var s = obj.start, e = this.minimumSize*4; + this.setPoints([ + {x:s.x, y:s.y+e}, + {x:s.x, y:s.y} + ]); + this.render(); + + }else{ + // if too small, need to reset + + if(this.getRadius()2 && this.closeRadius>this.util.distance(obj.x, obj.y, this.closePoint.x, this.closePoint.y)){ + this.onCompletePath(true); + + }else { + var p = { + x:obj.x, + y:obj.y + }; + this.oddEvenClicks++; + if(this.currentPathMode != this.pathMode){ + if(this.pathMode=="Q"){ + p.t = "Q"; + this.oddEvenClicks = 0; + }else if(this.pathMode=="L"){ + p.t = "L"; + }else if(this.pathMode=="M"){ + p.t = "M"; + this.closePoint = {x:obj.x, y:obj.y}; + } + this.currentPathMode = this.pathMode; + } + + + this.points.push(p); + if(this.points.length>1){ + this.remove(this.guide); + this.render(); + } + + } + + //console.log(this.stringPath); + }, + createGuide: function(obj){ + if(!this.points.length){ return; } + var realPoints = [].concat(this.points); + + var pt = { + x:obj.x, + y:obj.y + }; + if(this.currentPathMode=="Q" && this.oddEvenClicks % 2){ + // On a Q curve, every other click needs to be a + // straight line - the inbetween Q coords don't render + pt.t = "L"; // this is not permanent + } + + this.points.push(pt); + + this.render(); + this.points = realPoints; + + + var dist = this.util.distance(obj.x, obj.y, this.closePoint.x, this.closePoint.y); + if(this.points.length>1){ + if(distthis.closeRadius && this.closeGuide){ + this.remove(this.closeGuide); + this.closeGuide = null; + } + } + + }, + + onMove: function(obj){ + if(!this._started){ return; } + this.createGuide(obj); + }, + onDrag: function(obj){ + if(!this._started){ return; } + this.createGuide(obj); + } + } +); + +dojox.drawing.tools.Path.setup = { + // summary: See Base ToolsSetup + // + name:"dojox.drawing.tools.Path", + tooltip:"Path Tool", + iconClass:"iconLine" +}; + +dojox.drawing.register(dojox.drawing.tools.Path.setup, "tool"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tools/Pencil.js b/js/dojo-release-1.7.2-src/dojox/drawing/tools/Pencil.js new file mode 100644 index 0000000..ba1efae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tools/Pencil.js @@ -0,0 +1,83 @@ +dojo.provide("dojox.drawing.tools.Pencil"); + +dojox.drawing.tools.Pencil = dojox.drawing.util.oo.declare( + // summary: + // Class for a drawable, continous Path + // + dojox.drawing.stencil.Path, + function(){ + // summary: constructor + this._started = false; + }, + { + draws:true, + // minDist: Number + // The distance the mouse must travel before rendering + // a path segment. Lower number is a higher definition + // path but more points. + minDist: 15, // how to make this more dynamic? Settable? + + onDown: function(obj){ + this._started = true; + var p = { + x:obj.x, + y:obj.y + }; + this.points = [p]; + this.lastPoint = p; + this.revertRenderHit = this.renderHit; + this.renderHit = false; + this.closePath = false; + }, + + onDrag: function(obj){ + if( + !this._started + || this.minDist > this.util.distance(obj.x, obj.y, this.lastPoint.x, this.lastPoint.y) + ){ return; } + + var p = { + x:obj.x, + y:obj.y + }; + this.points.push(p); + this.render(); + this.checkClosePoint(this.points[0], obj); + this.lastPoint = p; + }, + + onUp: function(obj){ + if(!this._started){ return; } + if(!this.points || this.points.length<2){ + this._started = false; + this.points = []; + return; + } + var box = this.getBounds(); + if(box.wRectangle Tool
                            ' + + 'SHIFT - constrain to square', + iconClass:"iconRect" +}; +dojox.drawing.register(dojox.drawing.tools.Rect.setup, "tool"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tools/TextBlock.js b/js/dojo-release-1.7.2-src/dojox/drawing/tools/TextBlock.js new file mode 100755 index 0000000..e4ee99b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tools/TextBlock.js @@ -0,0 +1,803 @@ +dojo.provide("dojox.drawing.tools.TextBlock"); +dojo.require("dojox.drawing.stencil.Text"); + +(function(){ + var conEdit; + dojo.addOnLoad(function(){ + // In order to use VML in IE, it's necessary to remove the + // DOCTYPE. But this has the side effect that causes a bug + // where contenteditable divs cannot be made dynamically. + // The solution is to include one in the main document + // that can be appended and removed as necessary: + //
                            + // + // console.log("Removing conedit"); + conEdit = dojo.byId("conEdit"); + if(!conEdit){ + console.error("A contenteditable div is missing from the main document. See 'dojox.drawing.tools.TextBlock'") + }else{ + conEdit.parentNode.removeChild(conEdit); + } + }); + + dojox.drawing.tools.TextBlock = dojox.drawing.util.oo.declare( + // summary: + // A tool to create text fields on a canvas. + // description: + // Extends stencil.Text by adding an HTML layer that + // can be dragged out to a certain size, and accept + // a text entry. Will wrap text to the width of the + // html field. + // When created programmtically, use 'auto' to shrink + // the width to the size of the text. Use line breaks + // ( \n ) to create new lines. + // + // TODO - disable zoom while showing? + // + // FIXME: + // Handles width: auto, align:middle, etc. but for + // display only, edit is out of whack + // + dojox.drawing.stencil.Text, + function(options){ + // summary: constructor + // + if(options.data){ + var d = options.data; + var text = d.text ? this.typesetter(d.text) : d.text; + var w = !d.width ? this.style.text.minWidth : d.width=="auto" ? "auto" : Math.max(d.width, this.style.text.minWidth); + var h = this._lineHeight; + + if(text && w=="auto"){ + var o = this.measureText(this.cleanText(text, false), w); + w = o.w; + h = o.h; + }else{ + // w = this.style.text.minWidth; + this._text = ""; + } + + this.points = [ + {x:d.x, y:d.y}, + {x:d.x+w, y:d.y}, + {x:d.x+w, y:d.y+h}, + {x:d.x, y:d.y+h} + ]; + + if(d.showEmpty || text){ + this.editMode = true; + + + dojo.disconnect(this._postRenderCon); + this._postRenderCon = null; + this.connect(this, "render", this, "onRender", true); + + if(d.showEmpty){ + this._text = text || ""; + this.edit(); + }else if(text && d.editMode){ + this._text = ""; + this.edit(); + }else if(text){ + this.render(text); + } + setTimeout(dojo.hitch(this, function(){ + this.editMode = false; + }),100) + + }else{ + // Why make it if it won't render... + this.render(); + } + + }else{ + this.connectMouse(); + this._postRenderCon = dojo.connect(this, "render", this, "_onPostRender"); + } + //console.log("TextBlock:", this.id) + }, + { + draws:true, + baseRender:false, + type:"dojox.drawing.tools.TextBlock", + _caretStart: 0, + _caretEnd: 0, + _blockExec: false, + +/*===== +StencilData: { + // summary: + // The data used to create the dojox.gfx Text + // x: Number + // Left point x + // y: Number + // Top point y + // width: ? Number|String + // Optional width of Text. Not required but reccommended. + // for auto-sizing, use 'auto' + // height: ? Number + // Optional height of Text. If not provided, _lineHeight is used. + // text: String + // The string content. If not provided, may auto-delete depending on defaults. +}, +=====*/ + + // selectOnExec: Boolean + // Whether the Stencil is selected when the text field + // is executed or not + selectOnExec:true, + // + // showEmpty: Boolean + // If true and there is no text in the data, the TextBlock + // Is displayed and focused and awaits input. + showEmpty: false, + + onDrag: function(/*EventObject*/obj){ + // summary: See stencil._Base.onDrag + // + if(!this.parentNode){ + this.showParent(obj); + } + var s = this._startdrag, e = obj.page; + this._box.left = (s.x < e.x ? s.x : e.x); + this._box.top = s.y; + this._box.width = (s.x < e.x ? e.x-s.x : s.x-e.x) + this.style.text.pad; + + dojo.style(this.parentNode, this._box.toPx()); + }, + + onUp: function(/*EventObject*/obj){ + // summary: See stencil._Base.onUp + // + + if(!this._downOnCanvas){ return; } + this._downOnCanvas = false; + + var c = dojo.connect(this, "render", this, function(){ + dojo.disconnect(c); + this.onRender(this); + + }); + this.editMode = true; + this.showParent(obj); + this.created = true; + this.createTextField(); + this.connectTextField(); + }, + + showParent: function(/*EventObject*/obj){ + // summary: + // Internal. Builds the parent node for the + // contenteditable HTML node. + // + if(this.parentNode){ return; } + var x = obj.pageX || 10; + var y = obj.pageY || 10; + this.parentNode = dojo.doc.createElement("div"); + this.parentNode.id = this.id; + var d = this.style.textMode.create; + this._box = { + left:x, + top:y, + width:obj.width || 1, + height:obj.height && obj.height>8 ? obj.height : this._lineHeight, + border:d.width+"px "+d.style+" "+d.color, + position:"absolute", + zIndex:500, + toPx: function(){ + var o = {}; + for(var nm in this){ + o[nm] = typeof(this[nm])=="number" && nm!="zIndex" ? this[nm] + "px" : this[nm]; + } + return o; + } + }; + + dojo.style(this.parentNode, this._box); + + document.body.appendChild(this.parentNode); + }, + createTextField: function(/*String*/txt){ + // summary: + // Internal. Inserts the contenteditable HTML node + // into its parent node, and styles it. + // + // style parent + var d = this.style.textMode.edit; + this._box.border = d.width+"px "+d.style+" "+d.color; + this._box.height = "auto"; + this._box.width = Math.max(this._box.width, this.style.text.minWidth*this.mouse.zoom); + dojo.style(this.parentNode, this._box.toPx()); + // style input + this.parentNode.appendChild(conEdit); + dojo.style(conEdit, { + height: txt ? "auto" : this._lineHeight+"px", + fontSize:(this.textSize/this.mouse.zoom)+"px", + fontFamily:this.style.text.family + }); + // FIXME: + // In Safari, if the txt ends with '&' it gets stripped + conEdit.innerHTML = txt || ""; + + return conEdit; //HTMLNode + }, + connectTextField: function(){ + // summary: + // Internal. Creates the connections to the + // contenteditable HTML node. + // + if(this._textConnected){ return; } // good ol' IE and its double events + // FIXME: + // Ouch-getting greekPalette by id. At the minimum this should + // be from the plugin manager + var greekPalette = dijit.byId("greekPalette"); + var greekHelp = greekPalette==undefined ? false : true; + if(greekHelp){ + //set it up + dojo.mixin(greekPalette,{ + _pushChangeTo: conEdit, + _textBlock: this + }); + }; + + this._textConnected = true; + this._dropMode = false; + this.mouse.setEventMode("TEXT"); + this.keys.editMode(true); + var kc1, kc2, kc3, kc4, self = this, _autoSet = false, + exec = function(){ + if(self._dropMode){ return; } + dojo.forEach([kc1,kc2,kc3,kc4], function(c){ + dojo.disconnect(c) + }); + self._textConnected = false; + self.keys.editMode(false); + self.mouse.setEventMode(); + self.execText(); + }; + + kc1 = dojo.connect(conEdit, "keyup", this, function(evt){ + // if text is empty, we need a height so the field's height + // doesn't collapse + if(dojo.trim(conEdit.innerHTML) && !_autoSet){ + dojo.style(conEdit, "height", "auto"); _autoSet = true; + }else if(dojo.trim(conEdit.innerHTML).length<2 && _autoSet){ + dojo.style(conEdit, "height", this._lineHeight+"px"); _autoSet = false; + } + + if(!this._blockExec){ + if(evt.keyCode==13 || evt.keyCode==27){ + dojo.stopEvent(evt); + exec(); + } + } else { + if(evt.keyCode==dojo.keys.SPACE){ + dojo.stopEvent(evt); + greekHelp && greekPalette.onCancel(); + } + } + }); + kc2 = dojo.connect(conEdit, "keydown", this, function(evt){ + if(evt.keyCode==13 || evt.keyCode==27){ // TODO: make escape an option + dojo.stopEvent(evt); + } + // if backslash, user is inputting a special character + // This gives popup help. + if(evt.keyCode==220){ + if(!greekHelp){ + console.info("For greek letter assistance instantiate: dojox.drawing.plugins.drawing.GreekPalette"); + return; + } + dojo.stopEvent(evt); + this.getSelection(conEdit); + // Differences in how browsers handle events made it necessary + // to stop the evt and add the backslash here. + this.insertText(conEdit,"\\"); + this._dropMode = true; + this._blockExec = true; + greekPalette.show({ + around:this.parentNode, + orient:{'BL':'TL'} + }); + } + if(!this._dropMode){ + this._blockExec = false; + } else { + // Controls for when we have a character helper and it's active + switch(evt.keyCode){ + case dojo.keys.UP_ARROW: + case dojo.keys.DOWN_ARROW: + case dojo.keys.LEFT_ARROW: + case dojo.keys.RIGHT_ARROW: + dojo.stopEvent(evt); + greekPalette._navigateByArrow(evt); + break; + case dojo.keys.ENTER: + dojo.stopEvent(evt); + greekPalette._onCellClick(evt); + break; + case dojo.keys.BACKSPACE: + case dojo.keys.DELETE: + dojo.stopEvent(evt); + greekPalette.onCancel(); + break; + } + } + + }); + + kc3 = dojo.connect(document, "mouseup", this, function(evt){ + // note: _onAnchor means an anchor has been clicked upon + if(!this._onAnchor && evt.target.id != "conEdit"){ + dojo.stopEvent(evt); + exec(); + }else if(evt.target.id == "conEdit" && conEdit.innerHTML == ""){ + // wonky stuff happens when you click on the + // field when its empty. + conEdit.blur(); + setTimeout(function(){ + conEdit.focus(); + },200) + } + }); + + this.createAnchors(); + + kc4 = dojo.connect(this.mouse, "setZoom", this, function(evt){ + exec(); + }); + + + conEdit.focus(); + + this.onDown = function(){}; + this.onDrag = function(){}; + + setTimeout(dojo.hitch(this, function(){ + // once again for Silverlight: + conEdit.focus(); + + // this is a pretty odd chunk of code here. + // specifcally need to overwrite old onUp + // however, this still gets called. its + // not disconnecting. + this.onUp = function(){ + if(!self._onAnchor && this.parentNode){ + self.disconnectMouse(); + exec(); + self.onUp = function(){} + } + } + }), 500); + }, + + + execText: function(){ + // summary: + // Internal. Method fired when text is executed, + // via mouse-click-off, ESC key or Enter key. + // + var d = dojo.marginBox(this.parentNode); + var w = Math.max(d.w, this.style.text.minWidth); + + var txt = this.cleanText(conEdit.innerHTML, true); + conEdit.innerHTML = ""; + conEdit.blur(); + this.destroyAnchors(); + + // need to convert characters before measuring width. + txt = this.typesetter(txt); + + var o = this.measureText(txt, w); + var sc = this.mouse.scrollOffset(); + var org = this.mouse.origin; + + var x = this._box.left + sc.left - org.x; + var y = this._box.top + sc.top - org.y; + + x *= this.mouse.zoom; + y *= this.mouse.zoom; + w *= this.mouse.zoom; + o.h *= this.mouse.zoom; + + + this.points = [ + {x:x, y:y}, + {x:x+w, y:y}, + {x:x+w, y:y+o.h}, + {x:x, y:y+o.h} + ]; + this.editMode = false; + + + console.log("EXEC TEXT::::", this._postRenderCon); + + if(!o.text){ + this._text = ""; + this._textArray = []; + } + // Only for Combo objects (vectors, rectangle, or ellipse). + this.render(o.text); + this.onChangeText(this.getText()); + }, + + edit: function(){ + // summary: + // Internal? + // Method used to instantiate the contenteditable HTML node. + // + this.editMode = true; + var text = this.getText() || ""; + console.log("EDIT TEXT:",text, " ",text.replace("/n", " ")); + // NOTE: no mouse obj + if(this.parentNode || !this.points){ return; } + var d = this.pointsToData(); + + var sc = this.mouse.scrollOffset(); + var org = this.mouse.origin; + + var obj = { + pageX: (d.x ) / this.mouse.zoom - sc.left + org.x, + pageY: (d.y ) / this.mouse.zoom- sc.top + org.y, + width:d.width / this.mouse.zoom, + height:d.height / this.mouse.zoom + }; + + this.remove(this.shape, this.hit); + this.showParent(obj); + this.createTextField(text.replace("/n", " ")); + this.connectTextField(); + if(text){ + //setTimeout(dojo.hitch(this, function(){ + this.setSelection(conEdit, "end"); + //}), 500) + } + }, + cleanText: function(/*String*/txt, /*Boolean*/removeBreaks){ + // summary: + // Cleans text. Strings HTML chars and double spaces + // and optionally removes line breaks. + var replaceHtmlCodes = function(str){ + var chars = { + "<":"<", + ">":">", + "&":"&" + }; + for(var nm in chars){ + str = str.replace(new RegExp(nm, "gi"), chars[nm]) + } + return str + }; + + if(removeBreaks){ + dojo.forEach(['
                            ', '
                            ', '
                            ', '\\n', '\\r'], function(br){ + txt = txt.replace(new RegExp(br, 'gi'), " "); + }); + } + txt = txt.replace(/ /g, " "); + txt = replaceHtmlCodes(txt); + txt = dojo.trim(txt); + // remove double spaces, since SVG doesn't show them anyway + txt = txt.replace(/\s{2,}/g, " "); + return txt; //String + }, + + measureText: function(/* String */ str, /* ? Number */width){ + // summary: + // Mechanism for measuring text. + // SVG nor VML have a way of determining the width or + // height of a block of text. This method creates an + // HTML text block and those measurements are used for + // displaying the SVG/VML text. + // arguments: + // str: String + // The text to display and measure. + // width: [optional] Number + // If the width is not provided, it will be assumed + // that the text is one line and the width will be + // measured and the _lineHeight used for th height. + // If width is provided, word-wrap is assumed, and + // line breaks will be inserted into the text at each + // point where a word wraps in the HTML. The height is + // then measured. + // + var r = "()|(\\n)|(\\r)"; + this.showParent({width:width || "auto", height:"auto"}); + this.createTextField(str); + var txt = ""; + var el = conEdit; + el.innerHTML = "X"; + var h = dojo.marginBox(el).h; + + el.innerHTML = str; + + if(!width || new RegExp(r, "gi").test(str)){ + // has line breaks in text + txt = str.replace(new RegExp(r, "gi"), "\n"); + el.innerHTML = str.replace(new RegExp(r, "gi"), "
                            "); + + }else if(dojo.marginBox(el).h == h){ + // one line + txt = str; + + }else{ + // text wraps + var ar = str.split(" "); + var strAr = [[]]; + var line = 0; + el.innerHTML = ""; + while(ar.length){ + var word = ar.shift(); + el.innerHTML += word+" "; //urk, always an extra space + if(dojo.marginBox(el).h > h){ + line++; + strAr[line] = []; + el.innerHTML = word+" "; + } + strAr[line].push(word) + } + + dojo.forEach(strAr, function(ar, i){ + strAr[i] = ar.join(" "); + }); + txt = strAr.join("\n"); + + // get the resultant height + el.innerHTML = txt.replace("\n", "
                            "); + + } + + var dim = dojo.marginBox(el); + + conEdit.parentNode.removeChild(conEdit); + dojo.destroy(this.parentNode); + this.parentNode = null; + + return {h:dim.h, w:dim.w, text:txt}; //Object + }, + + _downOnCanvas:false, + onDown: function(/*EventObject*/obj){ + // summary: See stencil._Base.onDown + // + this._startdrag = { + x: obj.pageX, + y: obj.pageY + }; + dojo.disconnect(this._postRenderCon); + this._postRenderCon = null; + this._downOnCanvas = true; + }, + + createAnchors: function(){ + // summary: + // Internal. Creates HTML nodes at each corner + // of the contenteditable div. These nodes are + // draggable and will resize the div horizontally. + // + this._anchors = {}; + var self = this; + var d = this.style.anchors, + b = d.width, + w = d.size-b*2, + h = d.size-b*2, + p = (d.size)/2*-1 + "px"; + + var s = { + position:"absolute", + width:w+"px", + height:h+"px", + backgroundColor:d.fill, + border:b+"px " + d.style + " "+d.color + }; + if(dojo.isIE){ + s.paddingLeft = w + "px"; + s.fontSize = w + "px" + } + var ss = [ + {top: p, left:p}, + {top:p, right:p}, + {bottom:p, right:p}, + {bottom:p,left:p} + ]; + for(var i=0;i<4;i++){ + var isLeft = (i==0) || (i==3); + var id = this.util.uid(isLeft ? "left_anchor" : "right_anchor"); + + var a = dojo.create("div", {id:id}, this.parentNode); + dojo.style(a, dojo.mixin(dojo.clone(s), ss[i])); + + var md, mm, mu; + var md = dojo.connect(a, "mousedown", this, function(evt){ + isLeft = evt.target.id.indexOf("left")>-1; + self._onAnchor = true; + var orgX = evt.pageX; + var orgW = this._box.width; + dojo.stopEvent(evt); + + + mm = dojo.connect(document, "mousemove", this, function(evt){ + var x = evt.pageX; + if(isLeft){ + this._box.left = x; + this._box.width = orgW + orgX - x; + }else{ + this._box.width = x + orgW - orgX; + } + dojo.style(this.parentNode, this._box.toPx()); + }); + + mu = dojo.connect(document, "mouseup", this, function(evt){ + orgX = this._box.left; + orgW = this._box.width; + dojo.disconnect(mm); + dojo.disconnect(mu); + self._onAnchor = false; + conEdit.focus(); + dojo.stopEvent(evt); + }); + }); + + this._anchors[id] = { + a:a, + cons:[md] + } + } + }, + + destroyAnchors: function(){ + // summary: + // Internal. Destroys HTML anchors. + for(var n in this._anchors){ + dojo.forEach(this._anchors[n].con, dojo.disconnect, dojo); + dojo.destroy(this._anchors[n].a); + }; + }, + + setSavedCaret: function(val){ + // summary: + // Internal, called when caret needs to + // be moved into position after text is added + this._caretStart = this._caretEnd = val; + }, + + getSavedCaret: function(){ + return {start: this._caretStart, end: this._caretEnd} + }, + + insertText: function(node,val){ + // summary: + // Uses saved caret position to insert text + // into position and place caret at the end of + // insertion + // + var t, text = node.innerHTML; + var caret = this.getSavedCaret(); + + text = text.replace(/ /g, " "); + t = text.substr(0,caret.start) + val + text.substr(caret.end); + t = this.cleanText(t,true); + this.setSavedCaret(Math.min(t.length,(caret.end + val.length))); + node.innerHTML = t; + this.setSelection(node,"stored"); + }, + + getSelection: function(node){ + // summary: + // This gets and stores the caret position + // in the contentEditable div (conEdit). + // NOTE: Doesn't work with html nodes inside + // the div. + // + var start, end; + if(dojo.doc.selection){ + //debugger; + var r = dojo.doc.selection.createRange(); + var rs = dojo.body().createTextRange(); + rs.moveToElementText(node); + var re = rs.duplicate(); + rs.moveToBookmark(r.getBookmark()); + re.setEndPoint('EndToStart', rs); + start = this._caretStart = re.text.length; + end = this._caretEnd = re.text.length+r.text.length; + console.warn("Caret start: ",start," end: ",end," length: ",re.text.length," text: ",re.text); + } else { + this._caretStart = dojo.global.getSelection().getRangeAt(node).startOffset; + this._caretEnd = dojo.global.getSelection().getRangeAt(node).endOffset; + console.log("Caret start: ", this._caretStart," end: ", this._caretEnd); + } + }, + + setSelection: function(node, what){ + // summary: + // Used for placing the cursor during edits and character help. + // Takes the values: end, beg, start, all or any numerical value + // (in which case the number will constitute the caret position) + // + console.warn("setSelection:"); + if(dojo.doc.selection){ // IE + //debugger; + var rs = dojo.body().createTextRange(); + rs.moveToElementText(node); + + switch(what){ + case "end": + rs.collapse(false); + break; + case "beg" || "start": + rs.collapse(); + break; + case "all": + rs.collapse(); + rs.moveStart("character", 0); + rs.moveEnd("character",node.text.length); + break; + case "stored": + rs.collapse(); + var dif = this._caretStart-this._caretEnd; + //console.log("start: ",this._caretStart, " end: ",this._caretEnd," dif: ",dif); + rs.moveStart("character",this._caretStart); + rs.moveEnd("character",dif); + break; + }; + rs.select(); + + }else{ + var getAllChildren = function(node, children){ + children = children || []; + for(var i=0;i this.zAxis.minimumSize ? this.zAxis.setPoints(p) : false; + this.zAxis.cosphi = 1; + }, + + createLabels: function(){ + // summary: + // Creates the label for each axis. + // + // NOTE: Not passing style into text because it's changing it + var props = {align:"middle", valign:"middle", util:this.util, annotation:true, container:this.container, mouse:this.mouse, stencil:this}; + this.labelX = new dojox.drawing.annotations.Label(dojo.mixin(props,{ + labelPosition:this.setLabelX + })); + this.labelY = new dojox.drawing.annotations.Label(dojo.mixin(props,{ + labelPosition:this.setLabelY + })); + if(this.style.zAxisEnabled){ + this.labelZ = new dojox.drawing.annotations.Label(dojo.mixin(props,{ + labelPosition:this.setLabelZ + })); + } + + }, + + setLabelX: function(){ + // summary: + // Custom placement for x-axis label + // + var ax = this.points[0]; + var c = this.points[1]; + + var dist = 40; + var offdist = 20; + var pt, px, py, pt2; + + pt = this.util.lineSub(c.x, c.y, ax.x, ax.y, dist); + px = pt.x + (pt.y -ax.y); + py = pt.y + (ax.x - pt.x); + pt2 = this.util.lineSub(pt.x, pt.y, px, py, (dist-offdist)); + + return { + x: pt2.x, + y: pt2.y, + width:20 + }; + }, + setLabelY: function(){ + // summary: + // Custom placement for y-axis label + // + var c = this.points[1]; + var ay = this.points[2]; + + var dist = 40; + var offdist = 20; + var pt, px, py, pt2; + pt = this.util.lineSub(c.x, c.y, ay.x, ay.y, dist); + px = pt.x + (ay.y - pt.y); + py = pt.y + (pt.x - ay.x); + pt2 = this.util.lineSub(pt.x, pt.y, px, py, (dist-offdist)); + return { + x: pt2.x, + y: pt2.y, + width:20 + }; + }, + setLabelZ: function(){ + // summary: + // Custom placement for z-axis label + // + var c = this.points[1]; + var z = this.points[3]; + + var dist = 40; + var offdist = 20; + var pt, px, py, pt2; + pt = this.util.lineSub(c.x, c.y, z.x, z.y, dist); + px = pt.x + (pt.y - z.y); + py = pt.y + (z.x - pt.x); + pt2 = this.util.lineSub(pt.x, pt.y, px, py, (dist-offdist)); + + return { + x:pt2.x, + y:pt2.y, + width:20 + } + }, + setLabel: function(/* ? String*/value){ + // summary: + // Set the text of the labels. The text would be + // broken up into the two labels. + // arguments: + // value: [optional] String + // If no argument is passed, defaults to two labels + // 'x' and 'y'. If an argument is passed, that + // text will be split on the word 'and' to determine + // the two labels. + // + if(this._labelsCreated){ return; } + !this.labelX && this.createLabels(); + var x = "x"; + var y = "y"; + var z = "z"; + if(value){ + // match first "and" or "&" and trim whitespace. + // Non-greedy matches are not supported in older + // browsers such as Netscape Navigator 4 or + // Microsoft Internet Explorer 5.0. + if(this.labelZ){ + var lbls = value.match(/(.*?)(and|&)(.*?)(and|&)(.*)/i); + if(lbls.length>4){ + x = lbls[1].replace(/^\s+/,"").replace(/\s+$/,""); + y = lbls[3].replace(/^\s+/,"").replace(/\s+$/,""); + z = lbls[5].replace(/^\s+/,"").replace(/\s+$/,""); + } + }else{ + var lbls = value.match(/(.*?)(and|&)(.*)/i); + if(lbls.length>2){ + x = lbls[1].replace(/^\s+/,"").replace(/\s+$/,""); + y = lbls[3].replace(/^\s+/,"").replace(/\s+$/,""); + } + } + } + this.labelX.setLabel(x); + this.labelY.setLabel(y); + if(this.labelZ){ + this.labelZ.setLabel(z); + } + this._labelsCreated = true; + }, + getLabel: function(){ + // summary: + // Getter for the labels. returns an object. + // + if(!this.labelX){ return null; } + return { + x:this.labelX.getText(), + y:this.labelY.getText(), + z:this.labelZ?this.labelZ.getText():null + }; // Object + }, + + anchorPositionCheck: function(/*Number*/x, /*Number*/y, /*manager.Anchor*/anchor){ + // summary: + // Gets called from anchor to check if its current + // position is ok. If not, its x or y transform will + // be changed until this passes. + // + var pm = this.container.getParent().getTransform(); + var am = anchor.shape.getTransform(); + + // the xaxis point has changed and is not yet set as a point + // - but the center should be good (except for the transform). + // Now check the yaxis point. + + var p = this.points; + var o = {x:am.dx+anchor.org.x+pm.dx, y:am.dy+anchor.org.y+pm.dy}; + var c = {x:p[1].x+pm.dx, y:p[1].y+pm.dy}; + var ox = c.x - (c.y - o.y); + var oy = c.y - (o.x - c.x); + + return {x:ox, y:oy}; + + }, + + onTransformBegin: function(/*manager.Anchor*/anchor){ + // summary: + // Overwrites _Base.onTransformBegin + // + // called from anchor point up mouse down + this._isBeingModified = true; + }, + + onTransformEnd: function(/*manager.Anchor*/anchor){ + // summary: + // Overwrites _Base.onTransformEnd + // + // Gets called on anchor mouseup + // also gets called by checkBounds - we don't want that. + if(!anchor){ return; } + + // tell anchor to go to prev point if wrong + // called from anchor point up mouse up + + this._isBeingModified = false; + //this.deselect(); + this._toggleSelected(); + console.log("before:", Math.ceil(this.points[1].x), " x ", Math.ceil(this.points[1].y)) + + var o = this.points[0]; + var c = this.points[1]; + var obj = {start:{x:c.x,y:c.y},x:o.x, y:o.y}; + var pt = this.util.constrainAngle(obj, 0, 89); + var zpt = this.style.zAxisEnabled ? this.zPoint(obj) : null; + + if(pt.x==o.x && pt.y == o.y){ + // we're within the constraint, so now we snap + pt = this.util.snapAngle(obj, this.angleSnap/180); + + obj.x = pt.x; + obj.y = pt.y; + var ox = obj.start.x - (obj.start.y - obj.y); + var oy = obj.start.y - (obj.x - obj.start.x); + + if(ox<0 || oy<0){ + console.warn("AXES ERROR LESS THAN ZERO - ABORT"); + return; + } + this.points = [{x:obj.x, y:obj.y}, {x:obj.start.x, y:obj.start.y, noAnchor:true}]; + this.points.push({x:ox, y:oy, noAnchor:true}); + if(zpt){ this.points.push(zpt);} + this.setPoints(this.points); + + //this.select(); + this.onModify(this); + return; + } + + // we're outside of the constraint. Set to the low or high. + this.points[0].x = pt.x + this.points[0].y = pt.y; + o = this.points[0]; + + var ox = c.x - (c.y - o.y); + var oy = c.y - (o.x - c.x); + + this.points[2] = {x:ox, y:oy, noAnchor:true}; + if(zpt){ this.points.push(zpt); } + this.setPoints(this.points); + + // reset handles render + //anchor.reset(this); + + this.labelX.setLabel(); + this.labelY.setLabel(); + if(this.labelZ){ + this.labelZ.setLabel(); + } + + //this.select(); + this.onModify(this); + + }, + + getBounds: function(/*Boolean*/absolute){ + // summary: + // Custom getBounds overwrites _Base.getBounds + // + var px = this.points[0], + pc = this.points[1], + py = this.points[2]; + if(this.style.zAxisEnabled){ var pz = this.points[3]; } + + if(absolute){ + var bounds = { + x:pc.x, + y:pc.y, + x1:pc.x, + y1:pc.y, + x2:px.x, + y2:px.y, + x3:py.x, + y3:py.y + }; + if(this.style.zAxisEnabled){ + bounds.x4 = pz.x; + bounds.y4 = pz.y; + } + return bounds; + } + + var x1 = this.style.zAxisEnabled ? (py.x < pz.x ? py.x : pz.x) : py.x; + y1 = py.y < px.y ? py.y : px.y, + x2 = px.x, + y2 = this.style.zAxisEnabled ? pz.y : pc.y; + + return { + x1:x1, + y1:y1, + x2:x2, + y2:y2, + x:x1, + y:y1, + w:x2-x1, + h:y2-y1 + }; + }, + + _postSetPoints: function(/*Array*/pts){ + // summary: + // Because Axes only has one anchor, + // we substitute a special setPoints method + // + this.points[0] = pts[0]; + if(this.pointsToData){ + this.data = this.pointsToData(); + } + }, + + onTransform: function(/*Number*/anchor){ + // summary: + // Overwrites _Base.onTransform + // + // the xaxis point has changed - the center will not. + // need to find the yaxis point. + var o = this.points[0]; + var c = this.points[1]; + var ox = c.x - (c.y - o.y); + var oy = c.y - (o.x - c.x); + + // 'noAnchor' on a point indicates an anchor should + // not be rendered. This is the Y point being set. + this.points[2] = {x:ox, y:oy, noAnchor:true}; + if(this.style.zAxisEnabled){ + this.points[3] = this.zPoint({start:{x:c.x, y:c.y}, x:o.x, y:o.y}); + } + this.setPoints(this.points); + if(!this._isBeingModified){ + this.onTransformBegin(); + } + this.render(); + }, + + pointsToData: function(){ + //summary: + // Converts points to data. + var p = this.points; + var d = { + x1:p[1].x, + y1:p[1].y, + x2:p[0].x, + y2:p[0].y, + x3:p[2].x, + y3:p[2].y + } + if(this.style.zAxisEnabled){ + d.x4 = p[3].x; + d.y4 = p[3].y; + d.cosphi = 1; + } + return d; + + }, + + getRadius: function(){ + //summary: + // Possibility of z-axis makes bounds unreliable. + // Use these points instead. + var p = this.points; + var line = {start:{x:p[1].x, y:p[1].y}, x:p[0].x, y:p[0].y}; + return this.util.length(line); + }, + + dataToPoints: function(/* ? Object*/o){ + //summary: + // Converts data to points. + o = o || this.data; + if(o.radius || o.angle){ + // instead of using x1,x2,y1,y1, + // it's been set as x,y,angle,radius + var pt = this.util.pointOnCircle(o.x,o.y,o.radius,o.angle), zpt; + var ox = o.x - (o.y - pt.y); + var oy = o.y - (pt.x - o.x); + if((o.cosphi && o.cosphi==1) || this.style.zAxisEnabled){ + this.style.zAxisEnabled = true; + zpt = this.util.pointOnCircle(o.x, o.y, o.radius*this.zScale, this.style.zAngle); + } + this.data = o = { + x1:o.x, + y1:o.y, + x2:pt.x, + y2:pt.y, + x3:ox, + y3:oy + } + if(this.style.zAxisEnabled){ + this.data.x4 = o.x4 = zpt.x; + this.data.y4 = o.y4 = zpt.y; + this.data.cosphi = 1; + } + + } + this.points = [ + {x:o.x2, y:o.y2}, + {x:o.x1, y:o.y1, noAnchor:true}, + {x:o.x3, y:o.y3, noAnchor:true} + ]; + if(this.style.zAxisEnabled){ this.points.push({x:o.x4, y:o.y4, skip:true, noAnchor:true}); } + return this.points; + }, + + onDrag: function(/*EventObject*/obj){ + // summary: See stencil._Base.onDrag + // + var pt = this.util.constrainAngle(obj, 0, 89); + obj.x = pt.x; + obj.y = pt.y; + var ox = obj.start.x - (obj.start.y - obj.y); + var oy = obj.start.y - (obj.x - obj.start.x); + + if(ox<0 || oy<0){ + return; + } + this.points = [{x:obj.x, y:obj.y}, {x:obj.start.x, y:obj.start.y, noAnchor:true}]; + + this.points.push({x:ox, y:oy, noAnchor:true}); + if(this.style.zAxisEnabled){ + var zpt = this.zPoint(obj); + this.points.push(zpt); + } + this.render(); + }, + + onUp: function(/*EventObject*/obj){ + // summary: See stencil._Base.onUp + // + if(!this._downOnCanvas){ return; } + this._downOnCanvas = false; + var p = this.points; + if(!p.length){ + var s = obj.start, d = 100; + this.points = [ + {x:s.x+d, y:s.y+d}, + {x:s.x, y:s.y+d, noAnchor:true}, + {x:s.x, y:s.y, noAnchor:true} + ]; + if(this.style.zAxisEnabled){ + var zpt = this.zPoint({start:{x:s.x, y:s.y+d}, x:s.x+d, y:s.y+d}); + this.points.push(zpt); + } + this.setPoints = this._postSetPoints; + this.pointsToData(); + this.render(); + this.onRender(this); + return; + } + + var len = this.util.distance(p[1].x ,p[1].y ,p[0].x ,p[0].y ); + if(!p || !p.length){ + return; + }else if(len < this.minimumSize){ + this.remove(this.shape, this.hit); + this.xArrow.remove(this.xArrow.shape, this.xArrow.hit); + this.yArrow.remove(this.yArrow.shape, this.yArrow.hit); + if(this.zArrow){ + this.zArrow.remove(this.zArrow.shape, this.zArrow.hit); + } + return; + } + + var o = p[0]; + var c = p[1]; + obj = {start:{x:c.x,y:c.y},x:o.x,y:o.y}; + var pt = this.util.snapAngle(obj, this.angleSnap/180); + obj.x = pt.x; + obj.y = pt.y; + var ox = obj.start.x - (obj.start.y - obj.y); + var oy = obj.start.y - (obj.x - obj.start.x); + + if(ox<0 || oy<0){ + return; + } + this.points = [{x:obj.x, y:obj.y}, {x:obj.start.x, y:obj.start.y, noAnchor:true}]; + + this.points.push({x:ox, y:oy, noAnchor:true}); + if(this.style.zAxisEnabled){ this.points.push(this.zPoint(obj)); } + this.onRender(this); + this.setPoints = this._postSetPoints; + } + } +); + +dojox.drawing.tools.custom.Axes.setup = { + // summary: See stencil._Base ToolsSetup + // + name:"dojox.drawing.tools.custom.Axes", + tooltip:"Axes Tool", + iconClass:"iconAxes" +}; +dojox.drawing.register(dojox.drawing.tools.custom.Axes.setup, "tool"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tools/custom/Equation.js b/js/dojo-release-1.7.2-src/dojox/drawing/tools/custom/Equation.js new file mode 100644 index 0000000..5cd3a20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tools/custom/Equation.js @@ -0,0 +1,26 @@ +dojo.provide("dojox.drawing.tools.custom.Equation"); +dojo.require("dojox.drawing.tools.TextBlock"); + +dojox.drawing.tools.custom.Equation = dojox.drawing.util.oo.declare( + // summary: + // Essentially the same as the TextBlock tool, but + // allows for a different icon and tooltip title. + // + dojox.drawing.tools.TextBlock, + function(options){ + + }, + { + customType:"equation" + } + +); + +dojox.drawing.tools.custom.Equation.setup = { + // summary: See stencil._Base ToolsSetup + // + name:"dojox.drawing.tools.custom.Equation", + tooltip:"Equation Tool", + iconClass:"iconEq" +}; +dojox.drawing.register(dojox.drawing.tools.custom.Equation.setup, "tool"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/tools/custom/Vector.js b/js/dojo-release-1.7.2-src/dojox/drawing/tools/custom/Vector.js new file mode 100755 index 0000000..65ab116 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/tools/custom/Vector.js @@ -0,0 +1,388 @@ +dojo.provide("dojox.drawing.tools.custom.Vector"); +dojo.require("dojox.drawing.tools.Arrow"); +dojo.require("dojox.drawing.util.positioning"); + +dojox.drawing.tools.custom.Vector = dojox.drawing.util.oo.declare( + // summary: + // Creates a Vector Stencil. + // description: + // Generally the same as an arrow, except that the arrow + // head is only at the end. There is additionaly functionality + // to allow for a 'zero vector' - one with no length. + // + // + dojox.drawing.tools.Arrow, + function(options){ + this.minimumSize = this.style.arrows.length; + this.addShadow({size:3, mult:2}); + }, + { + draws:true, + type:"dojox.drawing.tools.custom.Vector", + minimumSize:30, + showAngle:true, + + + + changeAxis: function(cosphi){ + // summary: + // Converts a vector to and from the z axis. + // If passed a cosphi value that is used to set + // the axis, otherwise it is the opp of what it is. + cosphi = cosphi!==undefined?cosphi:this.style.zAxis? 0 : 1; + if(cosphi == 0){ + this.style.zAxis = false; + this.data.cosphi = 0; + }else{ + this.style.zAxis = true; + var p = this.points; + var pt = this.zPoint(); + this.setPoints([ + {x:p[0].x, y:p[0].y}, + {x:pt.x, y:pt.y} + ]); + } + this.render(); + }, + + _createZeroVector: function(shp, d, sty){ + // summary: + // Special creation function for the zero-vector shape + // + var s = shp=="hit" ? this.minimumSize : this.minimumSize/6; + var f = shp=="hit" ? sty.fill : null; + d = { + cx:this.data.x1, + cy:this.data.y1, + rx:s, + ry:s + }; + + this.remove(this[shp]); + this[shp] = this.container.createEllipse(d) + .setStroke(sty) + .setFill(f); + this.util.attr(this[shp], "drawingType", "stencil"); + }, + + _create: function(/*String*/shp, /*StencilData*/d, /*Object*/sty){ + // summary: + // Creates a dojox.gfx.shape based on passed arguments. + // Can be called many times by implementation to create + // multiple shapes in one stencil. + // + this.remove(this[shp]); + this[shp] = this.container.createLine(d) + .setStroke(sty); + this._setNodeAtts(this[shp]); + }, + + onDrag: function(/*EventObject*/obj){ + // summary: See stencil._Base.onDrag + // + if(this.created){ return; } + + var x1 = obj.start.x, + y1 = obj.start.y, + x2 = obj.x, + y2 = obj.y; + + if(this.keys.shift && !this.style.zAxis){ + var pt = this.util.snapAngle(obj, 45/180); + x2 = pt.x; + y2 = pt.y; + } + + if(this.keys.alt){ + // FIXME: + // should double the length of the line + // FIXME: + // if alt dragging past ZERO it seems to work + // but select/deselect shows bugs + var dx = x2>x1 ? ((x2-x1)/2) : ((x1-x2)/-2); + var dy = y2>y1 ? ((y2-y1)/2) : ((y1-y2)/-2); + x1 -= dx; + x2 -= dx; + y1 -= dy; + y2 -= dy; + } + + if(this.style.zAxis){ + var pts = this.zPoint(obj); + x2 = pts.x; + y2 = pts.y; + } + + this.setPoints([ + {x:x1, y:y1}, + {x:x2, y:y2} + ]); + this.render(); + }, + + onTransform: function(/* ? manager.Anchor */anchor){ + // summary: + // Called from anchor point mouse drag + // also called from plugins.Pan.checkBounds + if(!this._isBeingModified){ + this.onTransformBegin(); + } + // this is not needed for anchor moves, but it + // is for stencil move: + + this.setPoints(this.points); + this.render(); + }, + + anchorConstrain: function(x, y){ + // summary: + // Called from anchor point mouse drag + if(!this.style.zAxis){ return null; } + var radians = this.style.zAngle*Math.PI/180; + //Constrain to angle + var test = x<0 ? x>-y : x<-y; + var dx = test ? x : -y/Math.tan(radians); + var dy = !test ? y : -Math.tan(radians)*x; + return {x:dx, y:dy} + }, + + zPoint: function(obj){ + // summary: + // Takes any point and converts it to + // be on the z-axis. + if(obj===undefined){ + if(!this.points[0]){ return null; }; + var d = this.pointsToData(); + obj = { + start:{ + x:d.x1, + y:d.y1 + }, + x:d.x2, + y:d.y2 + }; + } + var radius = this.util.length(obj); + var angle = this.util.angle(obj); + angle<0 ? angle = 360 + angle : angle; + + angle = angle > 135 && angle < 315 ? this.style.zAngle : this.util.oppAngle(this.style.zAngle); + + return this.util.pointOnCircle(obj.start.x, obj.start.y, radius, angle); + }, + + pointsToData: function(p){ + // summary: + // Converts points to data + p = p || this.points; + var cosphi = 0; + var obj = {start:{x:p[0].x, y:p[0].y}, x:p[1].x, y:p[1].y}; + if(this.style.zAxis && (this.util.length(obj)>this.minimumSize)){ + + var angle = this.util.angle(obj); + angle<0 ? angle = 360 + angle : angle; + cosphi = angle > 135 && angle < 315 ? 1 : -1; + } + this.data = { + x1: p[0].x, + y1: p[0].y, + x2: p[1].x, + y2: p[1].y, + cosphi: cosphi + }; + return this.data; + }, + + dataToPoints: function(o){ + //summary: + // Converts data to points. + o = o || this.data; + if(o.radius || o.angle){ + // instead of using x1,x2,y1,y1, + // it's been set as x,y,angle,radius + var cosphi = 0; + var pt = this.util.pointOnCircle(o.x,o.y,o.radius,o.angle); + if(this.style.zAxis || (o.cosphi && o.cosphi!=0)){ + this.style.zAxis = true; + cosphi = o.angle > 135 && o.angle < 315 ? 1 : -1; + } + //console.log(" ---- pts:", pt.x, pt.y); + this.data = o = { + x1:o.x, + y1:o.y, + x2:pt.x, + y2:pt.y, + cosphi:cosphi + } + + } + this.points = [ + {x:o.x1, y:o.y1}, + {x:o.x2, y:o.y2} + ]; + return this.points; + }, + + render: function(){ + // summary: + // Renders the 'hit' object (the shape used for an expanded + // hit area and for highlighting) and the'shape' (the actual + // display object). Additionally checks if Vector should be + // drawn as an arrow or a circle (zero-length) + // + this.onBeforeRender(this); + if(this.getRadius() >= this.minimumSize){ + this._create("hit", this.data, this.style.currentHit); + this._create("shape", this.data, this.style.current); + + }else{ + this.data.cosphi = 0; + this._createZeroVector("hit", this.data, this.style.currentHit); + this._createZeroVector("shape", this.data, this.style.current); + } + }, + onUp: function(/*EventObject*/obj){ + // summary: See stencil._Base.onUp + // + if(this.created || !this._downOnCanvas){ return; } + this._downOnCanvas = false; + //Default vector for single click + if(!this.shape){ + var d = 100; + obj.start.x = this.style.zAxis ? obj.start.x + d : obj.start.x; + obj.y = obj.y+d; + this.setPoints([ + {x:obj.start.x, y:obj.start.y}, + {x:obj.x, y:obj.y} + ]); + this.render(); + } + + // When within minimum size this sets zero vector length to zero + if(this.getRadius()
                            + // + // + constructor: function(props, node){ + //console.warn("GFX Toolbar:", props, node) + this.util = dojox.drawing.util.common; + + // no mixin. painful. + if(props.drawing){ + // programmatic + this.toolDrawing = props.drawing; + this.drawing = this.toolDrawing; + this.width = this.toolDrawing.width; + this.height = this.toolDrawing.height; + this.strSelected = props.selected; + this.strTools = props.tools; + this.strPlugs = props.plugs; + this._mixprops(["padding", "margin", "size", "radius"], props); + this.addBack(); + this.orient = props.orient ? props.orient : false; + }else{ + // markup + var box = dojo.marginBox(node); + this.width = box.w; + this.height = box.h; + this.strSelected = dojo.attr(node, "selected"); + this.strTools = dojo.attr(node, "tools"); + this.strPlugs = dojo.attr(node, "plugs"); + this._mixprops(["padding", "margin", "size", "radius"], node); + this.toolDrawing = new dojox.drawing.Drawing({mode:"ui"}, node); + this.orient = dojo.attr(node, "orient"); + } + + this.horizontal = this.orient ? this.orient == "H" : this.width > this.height; + console.log("this.hor: ",this.horizontal," orient: ",this.orient); + if(this.toolDrawing.ready){ + this.makeButtons(); + if(!this.strSelected && this.drawing.defaults.clickMode){ this.drawing.mouse.setCursor('default'); }; + }else{ + var c = dojo.connect(this.toolDrawing, "onSurfaceReady", this, function(){ + //console.log("TB built") + dojo.disconnect(c); + this.drawing = dojox.drawing.getRegistered("drawing", dojo.attr(node, "drawingId")); // + this.makeButtons(); + if(!this.strSelected && this.drawing.defaults.clickMode){ + var c = dojo.connect(this.drawing, "onSurfaceReady", this, function(){ + dojo.disconnect(c); + this.drawing.mouse.setCursor('default'); + }); + } + }); + } + + }, + + // padding:Number + // The amount of spce between the top and left of the toolbar and the buttons. + padding:10, + // margin: Number + // The space between each button. + margin:5, + // size: Number + // The width and height of the button + size:30, + // radius: Number + // The size of the button's rounded corner + radius:3, + // + // toolPlugGap: number + // The distnce between the tool buttons and plug buttons + toolPlugGap:20, + + // strSlelected | selected: String + // The button that should be selected at startup. + strSelected:"", + // strTools | tools: String + // A comma delineated list of the Stencil-tools to include in the Toolbar. + // If "all" is used, all registered tools are included. + strTools:"", + // strPlugs | plugs: String + // A comma delineated list of the plugins to include in the Toolbar. + // If "all" is used, all registered plugins are included. + strPlugs:"", + + makeButtons: function(){ + // summary: + // Internal. create buttons. + this.buttons = []; + this.plugins = []; + + var x = this.padding, y = this.padding, w = this.size, h = this.size, r = this.radius, g = this.margin, + sym = dojox.drawing.library.icons, + s = {place:"BR", size:2, mult:4}; + + if(this.strTools){ + var toolAr = []; + var tools = dojox.drawing.getRegistered("tool"); + var toolMap = {}; + for(var nm in tools){ + var tool = this.util.abbr(nm); + toolMap[tool] = tools[nm]; + if(this.strTools=="all"){ + toolAr.push(tool); + var details = dojox.drawing.getRegistered("tool",nm); + if(details.secondary){ + toolAr.push(details.secondary.name); + } + } + } + if(this.strTools!="all"){ + var toolTmp = this.strTools.split(","); + dojo.forEach(toolTmp, function(tool){ + tool = dojo.trim(tool); + toolAr.push(tool); + var details = dojox.drawing.getRegistered("tool",toolMap[tool].name); + if(details.secondary){ + toolAr.push(details.secondary.name); + } + }, this); + //dojo.map(toolAr, function(t){ return dojo.trim(t); }); + } + + dojo.forEach(toolAr, function(t){ + t = dojo.trim(t); + var secondary = false; + if(t.indexOf("Secondary")>-1){ + var prim = t.substring(0,t.indexOf("Secondary")); + var sec = dojox.drawing.getRegistered("tool",toolMap[prim].name).secondary; + var label = sec.label; + this[t] = sec.funct; + if(sec.setup){ dojo.hitch(this, sec.setup)(); }; + var btn = this.toolDrawing.addUI("button", {data:{x:x, y:y, width:w, height:h/2, r:r}, toolType:t, secondary:true, text:label, shadow:s, scope:this, callback:this[t]}); + if(sec.postSetup){ dojo.hitch(this, sec.postSetup, btn)(); }; + secondary = true; + } else { + var btn = this.toolDrawing.addUI("button", {data:{x:x, y:y, width:w, height:h, r:r}, toolType:t, icon:sym[t], shadow:s, scope:this, callback:"onToolClick"}); + } + dojox.drawing.register(btn, "button"); + this.buttons.push(btn); + if(this.strSelected==t){ + btn.select(); + this.selected = btn; + this.drawing.setTool(btn.toolType); + } + if(this.horizontal){ + x += h + g; + }else{ + var space = secondary ? h/2 + g : h + g; + y += space; + } + }, this); + } + + if(this.horizontal){ + x += this.toolPlugGap; + }else{ + y += this.toolPlugGap; + } + + if(this.strPlugs){ + var plugAr = []; + var plugs = dojox.drawing.getRegistered("plugin"); + var plugMap = {}; + for(var nm in plugs){ + var abbr = this.util.abbr(nm); + plugMap[abbr] = plugs[nm]; + if(this.strPlugs=="all"){ plugAr.push(abbr); } + } + if(this.strPlugs!="all"){ + plugAr = this.strPlugs.split(","); + dojo.map(plugAr, function(p){ return dojo.trim(p); }); + } + + dojo.forEach(plugAr, function(p){ + var t = dojo.trim(p); + //console.log(" plugin:", p); + if(plugMap[p].button != false){ + var btn = this.toolDrawing.addUI("button", {data:{x:x, y:y, width:w, height:h, r:r}, toolType:t, icon:sym[t], shadow:s, scope:this, callback:"onPlugClick"}); + dojox.drawing.register(btn, "button"); + this.plugins.push(btn); + + if(this.horizontal){ + x += h + g; + }else{ + y += h + g; + } + } + + var addPlug = {} + plugMap[p].button == false ? addPlug = {name:this.drawing.stencilTypeMap[p]} : addPlug = {name:this.drawing.stencilTypeMap[p], options:{button:btn}}; + this.drawing.addPlugin(addPlug); + }, this); + } + + dojo.connect(this.drawing, "onRenderStencil", this, "onRenderStencil"); + }, + + onRenderStencil: function(/* Object */stencil){ + // summary: + // Stencil render event. + if(this.drawing.defaults.clickMode){ + this.drawing.mouse.setCursor("default"); + this.selected && this.selected.deselect(); + this.selected = null; + } + + }, + + addTool: function(){ + // TODO: add button here + }, + + addPlugin: function(){ + // TODO: add button here + }, + + addBack: function(){ + // summary: + // Internal. Adds the back, behind the toolbar. + this.toolDrawing.addUI("rect", {data:{x:0, y:0, width:this.width, height:this.size + (this.padding*2), fill:"#ffffff", borderWidth:0}}); + }, + + onToolClick: function(/*Object*/button){ + // summary: + // Tool click event. May be connected to. + // + if(this.drawing.defaults.clickMode){ this.drawing.mouse.setCursor("crosshair"); } + dojo.forEach(this.buttons, function(b){ + if(b.id==button.id){ + b.select(); + this.selected = b; + this.drawing.setTool(button.toolType) + }else{ + if(!b.secondary){ b.deselect(); } + } + },this) + }, + + onPlugClick: function(/*Object*/button){ + // summary: + // Plugin click event. May be connected to. + }, + + _mixprops: function(/*Array*/props, /*Object | Node*/objNode){ + // summary: + // Internally used for mixing in props from an object or + // from a dom node. + dojo.forEach(props, function(p){ + this[p] = objNode.tagName + ? dojo.attr(objNode, p)===null ? this[p] : dojo.attr(objNode, p) + : objNode[p]===undefined ? this[p] : objNode[p]; + }, this); + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/ui/Tooltip.js b/js/dojo-release-1.7.2-src/dojox/drawing/ui/Tooltip.js new file mode 100644 index 0000000..a565945 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/ui/Tooltip.js @@ -0,0 +1,115 @@ +dojo.provide("dojox.drawing.ui.Tooltip"); +dojo.require("dojox.drawing.plugins._Plugin"); + + +(function(){ + + // summary: + // Used for UI tooltips. Buttons in the toolbar. + // This file is not complete. + // + var master = null; + var MasterC = dojox.drawing.util.oo.declare( + + dojox.drawing.plugins._Plugin, + function(options){ + this.createDom(); + }, + { + show: function(button, text){ + this.domNode.innerHTML = text; + + var dx = 30; + var px = button.data.x + button.data.width; + var py = button.data.y + button.data.height; + var x = px + this.mouse.origin.x + dx; + var y = py + this.mouse.origin.y + dx; + + dojo.style(this.domNode, { + display: "inline", + left:x +"px", + top:y+"px" + }); + + var box = dojo.marginBox(this.domNode); + + this.createShape(x-this.mouse.origin.x, y-this.mouse.origin.y, box.w, box.h); + }, + + + createShape: function(x,y,w,h){ + this.balloon && this.balloon.destroy(); + var r = 5, x2 = x+w, y2 = y+h, points = []; + var add = function(){ + for(var i=0;i + // |
                            Line
                            + // |
                            Pan
                            + // |
                            + // + dojox.drawing.plugins._Plugin, + function(options){ + + this.domNode = options.node; + var _scrollTimeout; + dojo.connect(this.domNode, "click", this, "onSetPan"); + dojo.connect(this.keys, "onKeyUp", this, "onKeyUp"); + dojo.connect(this.keys, "onKeyDown", this, "onKeyDown"); + dojo.connect(this.anchors, "onAnchorUp", this, "checkBounds"); + dojo.connect(this.stencils, "register", this, "checkBounds"); + dojo.connect(this.canvas, "resize", this, "checkBounds"); + dojo.connect(this.canvas, "setZoom", this, "checkBounds"); + dojo.connect(this.canvas, "onScroll", this, function(){ + if(this._blockScroll){ + this._blockScroll = false; + return; + } + _scrollTimeout && clearTimeout(_scrollTimeout); + _scrollTimeout = setTimeout(dojo.hitch(this, "checkBounds"), 200); + }); + this._mouseHandle = this.mouse.register(this); + // This HAS to be called after setting initial objects or things get screwy. + //this.checkBounds(); + },{ + selected:false, + type:"dojox.drawing.ui.dom.Pan", + + onKeyUp: function(evt){ + if(evt.keyCode == 32){ + this.onSetPan(false); + } + }, + + onKeyDown: function(evt){ + if(evt.keyCode == 32){ + this.onSetPan(true); + } + }, + + onSetPan: function(/*Boolean | Event*/ bool){ + if(bool === true || bool === false){ + this.selected = !bool; + } + if(this.selected){ + this.selected = false; + dojo.removeClass(this.domNode, "selected"); + }else{ + this.selected = true; + dojo.addClass(this.domNode, "selected"); + } + this.mouse.setEventMode(this.selected ? "pan" : ""); + }, + + onPanDrag: function(obj){ + var x = obj.x - obj.last.x; + var y = obj.y - obj.last.y; + this.canvas.domNode.parentNode.scrollTop -= obj.move.y; + this.canvas.domNode.parentNode.scrollLeft -= obj.move.x; + this.canvas.onScroll(); + }, + + onStencilUp: function(obj){ + // this gets called even on click-off because of the + // issues with TextBlock deselection + this.checkBounds(); + }, + onStencilDrag: function(obj){ + // this gets called even on click-off because of the + // issues with TextBlock deselection + //this.checkBounds(); + }, + + checkBounds: function(){ + + //watch("CHECK BOUNDS DISABLED", true); return; + + + // summary: + // Scans all items on the canvas and checks if they are out of + // bounds. If so, a scroll bar (in Canvas) is shown. If the position + // is left or top, the canvas is scrolled all items are relocated + // the distance of the scroll. Ideally, it should look as if the + // items do not move. + + // logging stuff here so it can be turned on and off. This method is + // very high maintenance. + var log = function(){ + ///console.log.apply(console, arguments); + }; + var warn = function(){ + //console.warn.apply(console, arguments); + }; + //console.clear(); + //console.time("check bounds"); + var t=Infinity, r=-Infinity, b=-Infinity, l=Infinity, + sx=0, sy=0, dy=0, dx=0, + mx = this.stencils.group ? this.stencils.group.getTransform() : {dx:0, dy:0}, + sc = this.mouse.scrollOffset(), + // scY, scX: the scrollbar creates the need for extra dimension + scY = sc.left ? 10 : 0, + scX = sc.top ? 10 : 0, + // ch, cw: the current size of the canvas + ch = this.canvas.height, + cw = this.canvas.width, + z = this.canvas.zoom, + // pch, pcw: the normal size of the canvas (not scrolled) + // these could change if the container resizes. + pch = this.canvas.parentHeight, + pcw = this.canvas.parentWidth; + + + this.stencils.withSelected(function(m){ + var o = m.getBounds(); + warn("SEL BOUNDS:", o); + t = Math.min(o.y1 + mx.dy, t); + r = Math.max(o.x2 + mx.dx, r); + b = Math.max(o.y2 + mx.dy, b); + l = Math.min(o.x1 + mx.dx, l); + }); + + this.stencils.withUnselected(function(m){ + var o = m.getBounds(); + warn("UN BOUNDS:", o); + t = Math.min(o.y1, t); + r = Math.max(o.x2, r); + b = Math.max(o.y2, b); + l = Math.min(o.x1, l); + }); + + b *= z; + var xscroll = 0, yscroll = 0; + log("Bottom test", "b:", b, "z:", z, "ch:", ch, "pch:", pch, "top:", sc.top, "sy:", sy); + if(b > pch || sc.top ){ + log("*bottom scroll*"); + // item off bottom + ch = Math.max(b, pch + sc.top); + sy = sc.top; + xscroll += this.canvas.getScrollWidth(); + }else if(!sy && ch>pch){ + log("*bottom remove*"); + // item moved from bottom + ch = pch; + } + + r *= z; + if(r > pcw || sc.left){ + //log("*right scroll*"); + // item off right + cw = Math.max(r, pcw + sc.left); + sx = sc.left; + yscroll += this.canvas.getScrollWidth(); + }else if(!sx && cw>pcw){ + //log("*right remove*"); + // item moved from right + cw = pcw; + } + + // add extra space for scrollbars + // double it to give some breathing room + cw += xscroll*2; + ch += yscroll*2; + + this._blockScroll = true; + + // selected items are not transformed. The selection itself is + // and the items are on de-select + this.stencils.group && this.stencils.group.applyTransform({dx:dx, dy:dy}); + + // non-selected items are transformed + this.stencils.withUnselected(function(m){ + m.transformPoints({dx:dx, dy:dy}); + }); + + this.canvas.setDimensions(cw, ch, sx, sy); + + //console.timeEnd("check bounds"); + } + } +); + +dojox.drawing.ui.dom.Pan.setup = { + name:"dojox.drawing.ui.dom.Pan", + tooltip:"Pan Tool", + iconClass:"iconPan" +}; + +dojox.drawing.register(dojox.drawing.ui.dom.Pan.setup, "plugin"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/ui/dom/Toolbar.js b/js/dojo-release-1.7.2-src/dojox/drawing/ui/dom/Toolbar.js new file mode 100644 index 0000000..8331619 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/ui/dom/Toolbar.js @@ -0,0 +1,207 @@ +dojo.provide("dojox.drawing.ui.dom.Toolbar"); +dojo.deprecated("dojox.drawing.ui.dom.Toolbar", "It may not even make it to the 1.4 release.", 1.4); + +(function(){ + + dojo.declare("dojox.drawing.ui.dom.Toolbar", [], { + // NOTE: + // dojox.drawing.Toolbar is DEPRECATED. + // The intention never was to use HTML as buttons for a Drawing. + // This was implemented in order to finish the project for which + // Drawing was developed. + // Instead use: drawing/ui/Toolbar.js + // + // summary: + // Creates a Toolbar to be used with a DojoX Drawing. + // description: + // Currently works in markup only. A class is required with + // either horizontal or vertical as a class (IE prevented using + // either as a default). Assign an attribute of 'drawingId' with + // the id of the DojoX Drawing to which this is assigned. + // The node children will be assigned as the Tools in the toolbar. + // Plugins can also be assigned. + // The Toolbar is largely self contained and has no real public + // methods or events. the Drawing object should be used. + // + // example: + // |
                            + // |
                            Line
                            + // |
                            Rect
                            + // |
                            Zoom
                            + // |
                            + // + // TODO: Toolbar works in markup only. Need programmatic. + // NOTE: There are plans to make the toolbar out of dojox.gfx vectors. + // This may change the APIs in the future. + // + // baseClass:String + // The CSS style to apply to the toolbar node + baseClass:"drawingToolbar", + // buttonClass:String + // The CSS style to apply to each button node + buttonClass:"drawingButton", + // iconClass:String + // The CSS style to apply to each button icon node + iconClass:"icon", + // + constructor: function(props, node){ + // props is null from markup + dojo.addOnLoad(this, function(){ + this.domNode = dojo.byId(node); + dojo.addClass(this.domNode, this.baseClass); + this.parse(); + }); + }, + + createIcon: function(/*HTMLNode*/node, /* ? Function*/constr){ + // summary: + // Internal. Creates an icon node for each button. + // arguments: + // node: HTMLNode + // The button node. + // constr: [optional] Function + // Optional. If not supplied, an icon is not created. + // Information for each icon is derived from + // the ToolsSetup object defined at the end + // of each tool. See: stencil._Base + // + var setup = constr && constr.setup ? constr.setup : {}; + if(setup.iconClass){ + var icon = setup.iconClass ? setup.iconClass : "iconNone"; + var tip = setup.tooltip ? setup.tooltip : "Tool"; + + var iNode = dojo.create("div", {title:tip}, node); + dojo.addClass(iNode, this.iconClass); + dojo.addClass(iNode, icon); + + dojo.connect(node, "mouseup", function(evt){ + dojo.stopEvent(evt); + dojo.removeClass(node, "active"); + }); + dojo.connect(node, "mouseover", function(evt){ + dojo.stopEvent(evt); + dojo.addClass(node, "hover"); + }); + dojo.connect(node, "mousedown", this, function(evt){ + dojo.stopEvent(evt); + dojo.addClass(node, "active"); + }); + + dojo.connect(node, "mouseout", this, function(evt){ + dojo.stopEvent(evt); + dojo.removeClass(node, "hover"); + }); + } + }, + + createTool: function(/*HTMLNode*/node){ + // summary: + // Creates a button on the Toolbar that is + // a Tool, not a Plugin. Tools draw Stencils, + // Plugins do actions. + // arguments: + // node: HTMLNode + // The button node. + // + node.innerHTML = ""; + var type = dojo.attr(node, "tool"); + this.toolNodes[type] = node; + dojo.attr(node, "tabIndex", 1); + var constr = dojo.getObject(type); + + this.createIcon(node, constr); + + this.drawing.registerTool(type, constr); + dojo.connect(node, "mouseup", this, function(evt){ + dojo.stopEvent(evt); + dojo.removeClass(node, "active"); + this.onClick(type); + }); + dojo.connect(node, "mouseover", function(evt){ + dojo.stopEvent(evt); + dojo.addClass(node, "hover"); + }); + dojo.connect(node, "mousedown", this, function(evt){ + dojo.stopEvent(evt); + dojo.addClass(node, "active"); + }); + + dojo.connect(node, "mouseout", this, function(evt){ + dojo.stopEvent(evt); + dojo.removeClass(node, "hover"); + }); + }, + + parse: function(){ + // summary: + // Initializing method that reads the dom node and its + // children for tools and plugins. + // + var drawingId = dojo.attr(this.domNode, "drawingId"); + this.drawing = dojox.drawing.util.common.byId(drawingId); + !this.drawing && console.error("Drawing not found based on 'drawingId' in Toolbar. "); + this.toolNodes = {}; + var _sel; + dojo.query(">", this.domNode).forEach(function(node, i){ + node.className = this.buttonClass; + var tool = dojo.attr(node, "tool"); + var action = dojo.attr(node, "action"); + var plugin = dojo.attr(node, "plugin"); + if(tool){ + if(i==0 || dojo.attr(node, "selected")=="true"){ + _sel = tool; + } + this.createTool(node); + + }else if(plugin){ + + + + + var p = {name:plugin, options:{}}, + opt = dojo.attr(node, "options"); + if(opt){ + p.options = eval("("+opt+")"); + } + p.options.node = node; + node.innerHTML = ""; + this.drawing.addPlugin(p); + + + + + + this.createIcon(node, dojo.getObject(dojo.attr(node, "plugin"))); + } + + }, this); + this.drawing.initPlugins(); + dojo.connect(this.drawing, "setTool", this, "onSetTool"); + this.drawing.setTool(_sel); + }, + onClick: function(/*String*/type){ + // summary: + // Event fired from clicking a Tool, not a PLugin. + // Plugin clicks are handled within the plugin's class. + // arguments: + // type: Fully qualified name of class. ex: + // dojox.drawing.tools.Ellipse + // + this.drawing.setTool(type); + }, + onSetTool: function(/*String*/type){ + // summary: + // handles buttons clicks and selects or deselects + for(var n in this.toolNodes){ + if(n == type){ + dojo.addClass(this.toolNodes[type], "selected"); + this.toolNodes[type].blur(); + }else{ + dojo.removeClass(this.toolNodes[n], "selected"); + } + + } + } + }); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/ui/dom/Zoom.js b/js/dojo-release-1.7.2-src/dojox/drawing/ui/dom/Zoom.js new file mode 100644 index 0000000..1a64272 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/ui/dom/Zoom.js @@ -0,0 +1,129 @@ +dojo.provide("dojox.drawing.ui.dom.Zoom"); +dojo.require("dojox.drawing.plugins._Plugin"); + +dojox.drawing.ui.dom.Zoom = dojox.drawing.util.oo.declare( + // NOTE: + // dojox.drawing.ui.dom.Zoom is DEPRECATED. + // This was a temporary DOM solution. Use the non-dom + // tools for Toobar and Plugins. + // + // summary: + // A plugin that allows for zooming the canvas in and out. An + // action-tool is added to the toolbar with plus, minus and 100% + // buttons. + // example: + // |
                            + // |
                            Line
                            + // |
                            Zoom
                            + // |
                            + // + dojox.drawing.plugins._Plugin, + function(options){ + var cls = options.node.className; + var txt = options.node.innerHTML; + this.domNode = dojo.create("div", {id:"btnZoom", "class":"toolCombo"}, options.node, "replace"); + + this.makeButton("ZoomIn", this.topClass); + this.makeButton("Zoom100", this.midClass); + this.makeButton("ZoomOut", this.botClass); + + }, + { + type:"dojox.drawing.ui.dom.Zoom", + // + // zoomInc: Float + // The amount of zoom that will occur upon each click. + zoomInc:.1, + // + // maxZoom: Number + // The maximum the canvas can be zoomed in. 10 = 1000% + maxZoom:10, + // + // minZoom: Float + // The most the canvas can be zoomed out. .1 = 10% + minZoom:.1, + // + // zoomFactor: [readonly] Float + // The current zoom amount + zoomFactor:1, + // + // baseClass: String + // The CSS class added to the Toolbar buttons + baseClass:"drawingButton", + // + // topClass: String + // The CSS class added to the top (or left) Toolbar button + topClass:"toolComboTop", + // + // midClass: String + // The CSS class added to the middle Toolbar button + midClass:"toolComboMid", + // + // botClass: String + // The CSS class added to the bottom (or right) Toolbar button + botClass:"toolComboBot", + // + makeButton: function(name, cls){ + // summary: + // Internal. Creates one of the buttons in the zoom-button set. + // + var node = dojo.create("div", {id:"btn"+name, "class":this.baseClass+" "+cls, + innerHTML:'
                            '}, this.domNode); + + dojo.connect(document, "mouseup", function(evt){ + dojo.stopEvent(evt); + dojo.removeClass(node, "active"); + }); + dojo.connect(node, "mouseup", this, function(evt){ + dojo.stopEvent(evt); + dojo.removeClass(node, "active"); + this["on"+name](); // this is what calls the methods below + }); + dojo.connect(node, "mouseover", function(evt){ + dojo.stopEvent(evt); + dojo.addClass(node, "hover"); + }); + dojo.connect(node, "mousedown", this, function(evt){ + dojo.stopEvent(evt); + dojo.addClass(node, "active"); + }); + + dojo.connect(node, "mouseout", this, function(evt){ + dojo.stopEvent(evt); + dojo.removeClass(node, "hover"); + }); + + }, + + onZoomIn: function(/*Mouse Event*/evt){ + // summary: + // Handles zoom in. + // + this.zoomFactor += this.zoomInc; + this.zoomFactor = Math.min(this.zoomFactor, this.maxZoom); + this.canvas.setZoom(this.zoomFactor); + this.mouse.setZoom(this.zoomFactor); + }, + onZoom100: function(/*Mouse Event*/evt){ + // summary: + // Zooms to 100% + // + this.zoomFactor = 1; + this.canvas.setZoom(this.zoomFactor); + this.mouse.setZoom(this.zoomFactor); + }, + onZoomOut: function(/*Mouse Event*/evt){ + // summary: + // Handles zoom out. + // + this.zoomFactor -= this.zoomInc; + this.zoomFactor = Math.max(this.zoomFactor, this.minZoom); + this.canvas.setZoom(this.zoomFactor); + this.mouse.setZoom(this.zoomFactor); + } + } +); + + +//dojox.drawing.register(dojox.drawing.plugins.tools.Pan, "plugin"); + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/util/common.js b/js/dojo-release-1.7.2-src/dojox/drawing/util/common.js new file mode 100755 index 0000000..30706c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/util/common.js @@ -0,0 +1,280 @@ +dojo.provide("dojox.drawing.util.common"); +dojo.require("dojox.math.round"); + +(function(){ + + var uidMap = {}; + var start = 0; + dojox.drawing.util.common = { + // summary: + // A collection of common methods used for DojoX Drawing. + // This singleton is accessible in most Drawing classes + // as this.util + // + // NOTE: + // A lot of functions use a EventObject + // as an argument. An attempt was made to accept + // either that object or a list of numbers. That wasn't + // finished (it didn't work well in all cases) but is + // likely to happen in the future. + // In cases where you are not sending a Mouse object, + // form your argument like so: + // var obj = { + // start:{ + // x:Number, // start x + // y:Number // start y + // }, + // x: Number, // end x + // y:Number // end y + // } + // + // + radToDeg: function(/*Numer*/n){ + // summary: + // Convert the passed number to degrees. + return (n*180)/Math.PI; // Number + }, + + degToRad: function(/*Numer*/n){ + // summary: + // Convert the passed number to radians. + return (n*Math.PI)/180; // Number + }, + + angle: function(/*EventObject*/obj, /* ? Float */snap){ + // summary: + // Return angle based on mouse object + // arguments: + // obj: EventObject + // Manager.Mouse event. + // snap: Float + // Returns nearest angle within snap limits + // + //obj = this.argsToObj.apply(this, arguments); + if(snap){ + snap = snap/180; + var radians = this.radians(obj), + seg = Math.PI * snap, + rnd = dojox.math.round(radians/seg), + new_radian = rnd*seg; + return dojox.math.round(this.radToDeg(new_radian)); // Whole Number + + }else{ + return this.radToDeg(this.radians(obj)); // Float + } + }, + + oppAngle: function(/*Angle*/ang){ + (ang+=180) > 360 ? ang = ang - 360 : ang; + return ang; + }, + + radians: function(/*EventObject*/o){ + // summary: + // Return the radians derived from the coordinates + // in the Mouse object. + // + //var o = this.argsToObj.apply(this, arguments); + return Math.atan2(o.start.y-o.y,o.x-o.start.x); + }, + + length: function(/*EventObject*/o){ + // summary: + // Return the length derived from the coordinates + // in the Mouse object. + // + return Math.sqrt(Math.pow(o.start.x-o.x, 2)+Math.pow(o.start.y-o.y, 2)); + }, + + lineSub: function(/*Number*/x1, /*Number*/y1, /*Number*/x2, /*Number*/y2, /*Number*/amt){ + // summary: + // Subtract an amount from a line + // description: + // x1,y1,x2,y2 represents the Line. 'amt' represents the amount + // to subtract from it. + // + var len = this.distance(this.argsToObj.apply(this, arguments)); + len = len < amt ? amt : len; + var pc = (len-amt)/len; + var x = x1 - (x1-x2) * pc; + var y = y1 - (y1-y2) * pc; + return {x:x, y:y}; // Object + }, + + argsToObj: function(){ + // summary: + // Attempts to determine in a Mouse Object + // was passed or indiviual numbers. Returns + // an object. + // + var a = arguments; + if(a.length < 4){ return a[0]; } + return { + start:{ + x:a[0], + y:a[1] + }, + x:a[2], + y:a[3]//, + //snap:a[4] + }; // Object + }, + + distance: function(/*EventObject or x1,y1,x2,y2*/){ + // summary: + // Return the length derived from the coordinates + // in the Mouse object. Different from util.length + // in that this always returns an absolute value. + // + var o = this.argsToObj.apply(this, arguments); + return Math.abs(Math.sqrt(Math.pow(o.start.x-o.x, 2)+Math.pow(o.start.y-o.y, 2))); // Number + }, + + slope:function(/*Object*/p1, /*Object*/p2){ + // summary: + // Given two poits of a line, returns the slope. + if(!(p1.x-p2.x)){ return 0; } + return ((p1.y-p2.y)/(p1.x-p2.x)); // Number + }, + + pointOnCircle: function(/*Number*/cx, /*Number*/cy, /*Number*/radius, /*Number*/angle){ + // summary: + // A *very* helpful method. If you know the center + // (or starting) point, length and angle, find the + // x,y point at the end of that line. + // + var radians = angle * Math.PI / 180.0; + var x = radius * Math.cos(radians); + var y = radius * Math.sin(radians); + return { + x:cx+x, + y:cy-y + }; // Object + }, + + constrainAngle: function(/*EventObject*/obj, /*Number*/min, /*Number*/max){ + // summary: + // Ensures the angle in the Mouse Object is within the + // min and max limits. If not one of those limits is used. + // Returns an x,y point for the angle used. + // + var angle = this.angle(obj); + if(angle >= min && angle <= max){ + return obj; // Object + } + var radius = this.length(obj); + var new_angle = angle > max ? max : min - angle < 100 ? min : max; + return this.pointOnCircle(obj.start.x,obj.start.y,radius, new_angle); // Object + }, + + snapAngle: function(/*EventObject*/obj, /*Float*/ca){ + // summary: + // Snaps a line to the nearest angle + // obj: Mouse object (see dojox.drawing.Mouse) + // ca: Fractional amount to snap to + // A decimal number fraction of a half circle + // .5 would snap to 90 degrees + // .25 would snap to 45 degrees + // .125 would snap to 22.5 degrees, etc. + // + var radians = this.radians(obj), + radius = this.length(obj), + seg = Math.PI * ca, + rnd = Math.round(radians/seg), + new_radian = rnd*seg, + new_angle = this.radToDeg(new_radian), + pt = this.pointOnCircle(obj.start.x,obj.start.y,radius,new_angle); + return pt; // Object + }, + + // helpers + idSetStart: function(num){ + start=num; + }, + + uid: function(/* ? String */str){ + // summary: + // Creates a unique ID. + // arguments: + // str: String + // If provided, kept in a map, incremented + // and used in the id. Otherwise 'shape' is used. + // + str = str || "shape"; + uidMap[str] = uidMap[str]===undefined ? start : uidMap[str] + 1; + return str + uidMap[str]; // String + }, + + abbr: function(type){ + // summary: + // Converts a namespace (typically a tool or a stencil) into + // an abbreviation + return type.substring(type.lastIndexOf(".")+1).charAt(0).toLowerCase() + + type.substring(type.lastIndexOf(".")+2); + }, + mixin: function(o1, o2){ + // TODO: make faster + //return dojo.mixin(dojo.clone(o1), dojo.clone(o2)); + }, + + objects:{}, //private? + register: function(/*Object*/obj){ + // summary: + // Since util is the only Singleton in Drawing (besides + // keys) it is used to help connect the Drawing object + // the Toolbar. Since multiple drawings can be on one + // page, this function serves a little more use than + // on first apearance. + this.objects[obj.id] = obj; + }, + byId: function(/*String*/id){ + // summary: + // Get an object that was registered with util.register + // + return this.objects[id]; + }, + attr: function(/* Object */ elem, /* property */ prop, /* ? value */ value, squelchErrors){ + // summary: + // Helper function to attach attributes to SVG and VML raw nodes. + // + + if(!elem){ return false; } + try{ + + // util is a crappy check, but we need to tell the diff + // between a Drawing shape and a GFX shape + if(elem.shape && elem.util){ + elem = elem.shape; + } + + if(!value && prop=="id" && elem.target){ + + var n = elem.target; + while(!dojo.attr(n, "id")){ + n = n.parentNode; + } + return dojo.attr(n, "id"); + } + + if(elem.rawNode || elem.target){ + var args = Array.prototype.slice.call(arguments); + args[0] = elem.rawNode || elem.target; + return dojo.attr.apply(dojo, args); + } + return dojo.attr(elem, "id"); + + + + }catch(e){ + if(!squelchErrors){ + // For debugging only. These errors actually cause errors in IE's console + //console.error("BAD ATTR: prop:", prop, "el:", elem) + //console.error(e) + //console.trace(); + } + return false; + } + } + }; + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/util/oo.js b/js/dojo-release-1.7.2-src/dojox/drawing/util/oo.js new file mode 100755 index 0000000..c0303b9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/util/oo.js @@ -0,0 +1,122 @@ +dojo.provide("dojox.drawing.util.oo"); + +// TODO: +// allow a declare without a mixin + +dojox.drawing.util.oo = { + // summary: + // Inheritance utilities used in DojoX Drawing + // description: + // Inheritance utilities used in DojoX Drawing. + // There were designed in a effort to make Drawing as + // fast as possible - especially in a case where thousands + // of objects are being loaded. Drawing declare performs + // about 3 times faster than Dojo declare and 2 times + // faster than Dojox declare. This is not to say Drawing + // declare is wthout limitations. It doesn't have the same + // syntatic sugar and extensibility of the other two. You + // can't inhert methods. It won't work with Dijit. But it + // is simple and effective. + // + declare: function(){ + // summary: + // Creates a constructor Function from a + // Function, and collection of methods, and + // more Functions that are extended. + // description: + // Similar in look and feel to Dojo declare as + // far as order and number of arguments, although + // constructed a little closer to prototypical + // inheritance. All arguments passed into the + // constructor are passed into all sub constructors. + // arguments: + // Function, [Object|Function....] + // The first argument is always the base + // constructor. The last argument is always + // an object of methods (or empty object) to + // be mixed in (in the future would like to + // make that object optional). Remaining + // arguments are other constructors mixed in + // using extend() (See below). + // example: + // | MyFunction = dojox.drawing.util.oo.declare( + // | MyOtherFunction, + // | YetAnotherFunction, + // | function(options){ + // | // This is my constructor. It will fire last. + // | // The other constructors will fire before this. + // | }, + // | { + // | customType:"equation", // mixed in property + // | doThing: function(){ // mixed in method + // | + // | } + // | } + // | ); + // | + // | var f = new MyFunction(); + // + var f, o, ext=0, a = arguments; + + if(a.length<2){ console.error("drawing.util.oo.declare; not enough arguments")} + if(a.length==2){ + f = a[0]; o = a[1]; + }else{ + a = Array.prototype.slice.call(arguments); + o = a.pop(); + f = a.pop(); + ext = 1; + } + for(var n in o){ + f.prototype[n] = o[n]; + } + if(ext){ + a.unshift(f); + f = this.extend.apply(this, a); + } + return f; // Function + }, + extend: function(){ + // summary: + // Extends constructors to inherit from other + // constructors . + // description: + // Typically not used by itself - it's used as + // part of declare(). Could be used by itself + // however, to mix together two or more + // constructors. + // arguments: + // Function, [ Function...] + // Any number of arguments, all must be + // function constructors. The first is + // considered the base object and its + // constructor will fire first. + // example: + // | var A = function(){}; + // | var B = function(){}; + // | var C = function(){}; + // | var D = dojox.drawing.util.oo.extend(A, B, C); + // | var e = new D(); + // + var a = arguments, sub = a[0]; + if(a.length<2){ console.error("drawing.util.oo.extend; not enough arguments")} + var f = function (){ + for(var i=1;istart.y && end.x>start.x || end.ystart.y ? "end" : "start"; + // box vertical aligned from middle + y += end.x > start.x ? 0.5*textYOffset : -0.5*textYOffset; + + return { x:x, y:y, align:align}; // Object + } + +})(); + + + diff --git a/js/dojo-release-1.7.2-src/dojox/drawing/util/typeset.js b/js/dojo-release-1.7.2-src/dojox/drawing/util/typeset.js new file mode 100644 index 0000000..c1bd6e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/drawing/util/typeset.js @@ -0,0 +1,67 @@ +dojo.provide("dojox.drawing.util.typeset"); +dojo.require("dojox.drawing.library.greek"); +// Summary: +// Singleton used for converting characters and typsetting. Required by _base. +// +// Description: +// Eventually, this is supposed to turn input strings of mathematical +// expressions into typeset expressions that can be displayed on the +// canvas. For now, we just generate Greek letters based on LaTeX style +// entity codes. + +(function(){ + + var greeks = dojox.drawing.library.greek; + + dojox.drawing.util.typeset = { + + convertHTML: function(inText){ + if(inText){ + return inText.replace(/&([^;]+);/g,function(match,code){ + if(code.charAt(0)=='#'){ + //coerce remainder of string to int + var number=+code.substr(1); + if(!isNaN(number)){ + return String.fromCharCode(number); + } + }else if(greeks[code]){ + return String.fromCharCode(greeks[code]); + } + // This is generally for server code, so there + // is no point bothering the user in the case of an error. + console.warn("no HTML conversion for ",match); + return match; + }); + } + return inText; + }, + + convertLaTeX: function(inText){ + // console.log("***** convertLaTeX for ",inText); + if(inText){ + return inText.replace(/\\([a-zA-Z]+)/g,function(match,word){ + if(greeks[word]){ + return String.fromCharCode(greeks[word]); + }else if(word.substr(0,2)=="mu"){ + // special handling for \mu since it is + // a unit prefix for micro. + return String.fromCharCode(greeks["mu"])+word.substr(2); + }else if(word.substr(0,5)=="theta"){ + // special handling for \theta since it is + // a standard prefix for angle associated with a vector. + return String.fromCharCode(greeks["theta"])+word.substr(5); + }else if(word.substr(0,3)=="phi"){ + // special handling for \phi since it is + // a standard prefix for angle associated with a z-axis vector. + return String.fromCharCode(greeks["phi"])+word.substr(3); + } + console.log("no match for ",match," in ",inText); + console.log("Need user-friendly error handling here!"); + }).replace(/\\\\/g,'\\'); + } + return inText; + } + + }; + +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/dtl.js b/js/dojo-release-1.7.2-src/dojox/dtl.js new file mode 100644 index 0000000..d58d4cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl.js @@ -0,0 +1,3 @@ +define(["./dtl/_base"], function(dxdtl){ + return dxdtl; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/Context.js b/js/dojo-release-1.7.2-src/dojox/dtl/Context.js new file mode 100644 index 0000000..88a27c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/Context.js @@ -0,0 +1,88 @@ +define([ + "dojo/_base/lang", + "./_base" +], function(lang,dd){ + /*===== + dd = dojox.dtl; + =====*/ + + /*===== + dd.Context = function(dict){ + // summary: Represents a runtime context used by DTL templates. + } + + =====*/ + dd.Context = lang.extend(function(dict){ + this._this = {}; + dd._Context.call(this, dict); + }, dd._Context.prototype, + { + getKeys: function(){ + // summary: Returns the set of keys exported by this context. + var keys = []; + for(var key in this){ + if(this.hasOwnProperty(key) && key != "_this"){ + keys.push(key); + } + } + return keys; + }, + extend: function(/*dojox.dtl.Context|Object*/ obj){ + // summary: Returns a clone of this context object, with the items from the + // passed objecct mixed in. + return lang.delegate(this, obj); + }, + filter: function(/*dojox.dtl.Context|Object|String...*/ filter){ + // summary: Returns a clone of this context, only containing the items + // defined in the filter. + var context = new dd.Context(); + var keys = []; + var i, arg; + if(filter instanceof dd.Context){ + keys = filter.getKeys(); + }else if(typeof filter == "object"){ + for(var key in filter){ + keys.push(key); + } + }else{ + for(i = 0; arg = arguments[i]; i++){ + if(typeof arg == "string"){ + keys.push(arg); + } + } + } + + for(i = 0, key; key = keys[i]; i++){ + context[key] = this[key]; + } + + return context; + }, + setThis: function(/*Object*/ _this){ + // summary: Sets the object on which to perform operations. + // _this: the this ref. + this._this = _this; + }, + getThis: function(){ + // summary: Gets the object on which to perform operations. + return this._this; + }, + hasKey: function(/*String*/key){ + // summary: Indicates whether the specified key is defined on this context. + // key: The key to look up. + if(this._getter){ + var got = this._getter(key); + if(typeof got != "undefined"){ + return true; + } + } + + if(typeof this[key] != "undefined"){ + return true; + } + + return false; + } +}); +return dojox.dtl.Context; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/DomInline.js b/js/dojo-release-1.7.2-src/dojox/dtl/DomInline.js new file mode 100644 index 0000000..e41bc58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/DomInline.js @@ -0,0 +1,43 @@ +define([ + "dojo/_base/lang", + "./dom", + "./_base", + "dijit/_WidgetBase" +], function(lang,ddd,dd,Widget){ + /*===== + dd = dojox.dtl; + Widget = dijit._WidgetBase; + =====*/ + dd.DomInline = lang.extend(function(args, node){ + this.create(args, node); + }, + Widget.prototype, + { + context: null, + render: function(/*dojox.dtl.Context?*/ context){ + this.context = context || this.context; + this.postMixInProperties(); + var root = this.template.render(this.context).getRootNode(); + if(root != this.containerNode){ + this.containerNode.parentNode.replaceChild(root, this.containerNode); + this.containerNode = root; + } + }, + declaredClass: "dojox.dtl.Inline", + buildRendering: function(){ + var div = this.domNode = document.createElement("div"); + this.containerNode = div.appendChild(document.createElement("div")); + var node = this.srcNodeRef; + if(node.parentNode){ + node.parentNode.replaceChild(div, node); + } + + this.template = new dojox.dtl.DomTemplate(lang.trim(node.text), true); + this.render(); + }, + postMixInProperties: function(){ + this.context = (this.context.get === dojox.dtl._Context.prototype.get) ? this.context : new dojox.dtl.Context(this.context); + } + }); + return dojox.dtl.DomInline; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/Inline.js b/js/dojo-release-1.7.2-src/dojox/dtl/Inline.js new file mode 100644 index 0000000..4d36d20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/Inline.js @@ -0,0 +1,40 @@ +define([ + "dojo/_base/lang", + "./_base", + "dijit/_WidgetBase", + "dojo/query" // dojo.query +], function(lang,dd,Widget,Query){ + /*===== + Widget = dijit._WidgetBase; + Query = dojo.query; + dd = dojox.dtl; + =====*/ + dd.Inline = lang.extend(function(args, node){ + this.create(args, node); + }, + Widget.prototype, + { + context: null, + render: function(/*Object|dojox.dtl.Context?*/ context){ + this.context = context || this.context; + this.postMixInProperties(); + Query("*", this.domNode).orphan(); + this.domNode.innerHTML = this.template.render(this.context); + }, + declaredClass: "dojox.dtl.Inline", + buildRendering: function(){ + var div = this.domNode = document.createElement("div"); + var node = this.srcNodeRef; + if(node.parentNode){ + node.parentNode.replaceChild(div, node); + } + + this.template = new dd.Template(lang.trim(node.text), true); + this.render(); + }, + postMixInProperties: function(){ + this.context = (this.context.get === dd._Context.prototype.get) ? this.context : new dd._Context(this.context); + } + }); + return dojox.dtl.Inline; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/README b/js/dojo-release-1.7.2-src/dojox/dtl/README new file mode 100644 index 0000000..54dd4f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/README @@ -0,0 +1,207 @@ +------------------------------------------------------------------------------- +DojoX Django Template Language +------------------------------------------------------------------------------- +Version 0.0 +Release date: 09/20/2007 +------------------------------------------------------------------------------- +Project state: experimental/feature incomplete +------------------------------------------------------------------------------- +Project authors + Neil Roberts (pottedmeat@dojotoolkit.org) +------------------------------------------------------------------------------- +Project description + +The Django Template language uses a system of templates that can be compiled +once and rendered indefinitely afterwards. It uses a simple system of tags +and filters. + +This is a 1:1 match with the Django Template Language as outlined in +http://www.djangoproject.com/documentation/templates/. All applicable tags and +filters have been implemented (see below), along with new filters and tags as +necessary (see below). + +The Django Template Language is intended within Django to only handle text. +Our implementation is able to handle HTML in addition to text. Actually, the +text and HTML portions of dojox.dtl are two separate layers, the HTML layer +sits on top of the text layer (base). It's also been implemented in such a way +that you have little to fear when moving your code from Django to dojox.dtl. +Your existing templates should work, and will benefit from the massive +performance gain of being able to manipulate nodes, rather than having to do +clunky innerHTML swaps you would have to do with a text-only system. It also +allows for new HTML-centric abilities, outlined below. + +Despite having two levels of complexity, if you write your tags correctly, they +will work in both environments. +------------------------------------------------------------------------------- +Dependencies + +Base: +dojox.string.Builder + +Date filters and tags: +dojox.date.php + +Widget: +dijit._Widget +dijit._Container +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/dtl.js +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/dtl/* + +Install into the following directory structure: +/dojox/dtl/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- +What's Been Done + +Note: HTML Unit Tests should only be around for the oddities of HTML, tag/filter +code is the same for each environment with minor exceptions. Cloning of all tags +should be tested inside a for loop. + +| Implemented | Tag | Text Unit Test | HTML Unit Test | +| X | block | X | | +| X | comment | X | | +| X | cycle | X | | +| X | debug | X | | +| X | extends | X | | +| X | filter | X | | +| X | firstof | X | | +| X | for | X | | +| X | if | X | | +| X | ifchanged | X | X | +| X | ifequal | X | | +| X | ifnotequal | X | | +| X | include | X | X | +| X | load | X | | +| X | now | X | | +| X | regroup | X | | +| X | spaceless | X | X | +| X | ssi | X | X | +| X | templatetag | X | | +| N/A | url | | | +| X | widthratio | X | | +| X | with | X | | + +| Implemented | Filter | Text Unit Test | HTML Unit Test | +| X | add | X | | +| X | addslashes | X | | +| X | capfirst | X | | +| X | center | X | | +| X | cut | X | | +| X | date | X | | +| X | default | X | | +| X | default_if_none | X | | +| X | dictsort | X | | +| X | dictsort_reversed | X | | +| X | divisibleby | X | | +| X | escape | X | | +| X | filesizeformat | X | | +| X | first | X | | +| X | fix_ampersands | X | | +| X | floatformat | X | | +| X | get_digit | X | | +| X | iriencode | X | | +| X | join | X | | +| X | length | X | | +| X | length_is | X | | +| X | linebreaks | X | | +| X | linebreaksbr | X | | +| X | linenumbers | X | | +| X | ljust | X | | +| X | lower | X | | +| X | make_list | X | | +| X | phone2numeric | X | | +| X | pluralize | X | | +| X | pprint | X | | +| X | random | X | | +| X | removetags | X | | +| X | rjust | X | | +| X | slice | X | | +| X | slugify | X | | +| X | stringformat | X | | +| X | striptags | X | | +| X | time | X | | +| X | timesince | X | | +| X | timeuntil | X | | +| X | title | X | | +| X | truncatewords | X | | +| X | truncatewords_html | X | | +| X | unordered_list | X | | +| X | upper | X | | +| X | urlencode | X | | +| X | urlize | X | | +| X | urlizetrunc | X | | +| X | wordcount | X | | +| X | wordwrap | X | | +| X | yesno | X | | +------------------------------------------------------------------------------- +HTML-Specific Additions +------------------------------------------------------------------------------- +{%extends "shared:templates/template.html" %} + +When using the {% extends %} tag, we don't always want to replace the parent +node in DOM. For example, if we have a list view and a detail view, but both +share the same base template, we want it to share the parent template. This +basically means that the same nodes will be used in the parent for both views. + +To use this, simply add "shared:" to the beginning of the specified template. +------------------------------------------------------------------------------- + + +Some browsers treat comment nodes as full fledged nodes. If performance is +important to you, you can wrap your markup in comments. The comments will be +automatically stripped for browsers that cannot support this. +------------------------------------------------------------------------------- +Attribute Tags + +If a tag name begins with "attr:" then it will be able to inject an object +into the parsed template. (See dojox.dtl.tag.event.EventNode) + +onclick/onmouseover/etc attributes work by attaching to the rendering object. + +tstyle attribute allows for styles to be changed dynamically. Use them just +like a "style" attribute. + +attach attribute attaches the node to the rendering object. +------------------------------------------------------------------------------- +New Context Functions + +setThis() and getThis() returns the object "in charge" of the current rendering. +This is used so that we can attach events. + +mixin() and filter() clone the current context, and either add to or reduce +the keys in the context. +------------------------------------------------------------------------------- +Buffers + +Both the base and HTML versions of dojox.dtl use buffers. The base version uses +dojox.string.Builder and the HTML version uses dojox.dtl.DomBuffer. + +The HTML buffer has several calls important to rendering: + +setParent/getParent/concat/remove: + +setParent and concat are used in order to render our HTML. As we move through +the parsed template, different nodes change the parent or add on to the +current parent. getParent is useful in things like the attribute tags, since +they can use getParent to find the node that they're an attribute on. remove is +used during unrendering. + +setAttribute: + +Sets an attribute on the current parent +------------------------------------------------------------------------------- +Tags Need clone/unrender Functions. + +One of the biggest challenges of getting dojox.dtl to work in an HTML +environment was logic blocks. Nodes and objects inside a for loop need to be +cloned, they can't simply be re-rendered, especially if they involve a Node. +Also, in the case of an if/else block, we need to be able to not just render +one of the blocks, but also unrender the second. + +This is really simple code, a good example is the dojox.dtl.DomNode +object. Each function in this object is only one line long. \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/_DomTemplated.js b/js/dojo-release-1.7.2-src/dojox/dtl/_DomTemplated.js new file mode 100644 index 0000000..bdc4c94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/_DomTemplated.js @@ -0,0 +1,99 @@ +define([ + "dojo/dom-construct", + ".", + "./contrib/dijit", + "./render/dom", + "dojo/cache", + "dijit/_TemplatedMixin" + ], function(domConstruct,dtl,ddcd,ddrd,cache,TemplatedMixin){ + /*===== + dtl = dojox.dtl; + cache = dojo.cache; + TemplatedMixin = dijit._TemplatedMixin + =====*/ + dtl._DomTemplated = function(){}; + dtl._DomTemplated.prototype = { + _dijitTemplateCompat: false, + buildRendering: function(){ + // summary: + // Construct the UI for this widget, setting this.domNode. + + //render needs a domNode to work with + this.domNode = this.srcNodeRef; + + if(!this._render){ + var old = ddcd.widgetsInTemplate; + ddcd.widgetsInTemplate = this.widgetsInTemplate; + this.template = this.template || this._getCachedTemplate(this.templatePath, this.templateString); + this._render = new ddrd.Render(this.domNode, this.template); + ddcd.widgetsInTemplate = old; + } + + var context = this._getContext(); + if(!this._created){ + delete context._getter; + } + this.render(context); + + this.domNode = this.template.getRootNode(); + if(this.srcNodeRef && this.srcNodeRef.parentNode){ + domConstruct.destroy(this.srcNodeRef); + delete this.srcNodeRef; + } + }, + setTemplate: function(/*String|dojo._Url*/ template, /*dojox.dtl.Context?*/ context){ + // summary: + // Quickly switch between templated by location + // template: The new template. + // context: + // The runtime context. + if(dojox.dtl.text._isTemplate(template)){ + this.template = this._getCachedTemplate(null, template); + }else{ + this.template = this._getCachedTemplate(template); + } + this.render(context); + }, + render: function(/*dojox.dtl.Context?*/ context, /*dojox.dtl.DomTemplate?*/ tpl){ + // summary: + // Renders this template. + // context: + // The runtime context. + // tpl: + // The template to render. Optional. + if(tpl){ + this.template = tpl; + } + this._render.render(this._getContext(context), this.template); + }, + _getContext: function(context){ + if(!(context instanceof dojox.dtl.Context)){ + context = false; + } + context = context || new dojox.dtl.Context(this); + context.setThis(this); + return context; + }, + _getCachedTemplate: function(templatePath, templateString){ + if(!this._templates){ + this._templates = {}; + } + if(!templateString){ + templateString = cache(templatePath, {sanitize: true}); + } + var key = templateString; + var tmplts = this._templates; + if(tmplts[key]){ + return tmplts[key]; + } + return (tmplts[key] = new dojox.dtl.DomTemplate( + TemplatedMixin.getCachedTemplate( + templateString, + true + ) + )); + } + }; + return dojox.dtl._DomTemplated; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/_Templated.js b/js/dojo-release-1.7.2-src/dojox/dtl/_Templated.js new file mode 100644 index 0000000..a39749b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/_Templated.js @@ -0,0 +1,147 @@ +define([ + "dojo/_base/declare", + "./_base", + "dijit/_TemplatedMixin", + "dojo/dom-construct", + "dojo/cache", + "dojo/_base/array", + "dojo/string", + "dojo/parser", + "dijit/_base/manager" +], function(declare,dd,TemplatedMixin, domConstruct,Cache,Array,dString,Parser,dijitMgr){ + /*===== + Cache = dojo.cache; + dString = dojo.string; + Parser = dojo.parser; + TemplatedMixin = dijit._TemplatedMixin; + dd = dojox.dtl; + =====*/ + return declare("dojox.dtl._Templated", TemplatedMixin, { + // summary: The base-class for DTL-templated widgets. + + _dijitTemplateCompat: false, + buildRendering: function(){ + // summary: The method overrides dijit._TemplatedMixin.startup. + var node; + + if(this.domNode && !this._template){ + return; + } + + if(!this._template){ + var t = this.getCachedTemplate( + this.templatePath, + this.templateString, + this._skipNodeCache + ); + if(t instanceof dd.Template) { + this._template = t; + }else{ + node = t; + } + } + if(!node){ + var context = new dd._Context(this); + if(!this._created){ + delete context._getter; + } + var nodes = domConstruct.toDom( + this._template.render(context) + ); + // TODO: is it really necessary to look for the first node? + if(nodes.nodeType !== 1 && nodes.nodeType !== 3){ + // nodes.nodeType === 11 + // the node is a document fragment + for(var i = 0, l = nodes.childNodes.length; i < l; ++i){ + node = nodes.childNodes[i]; + if(node.nodeType == 1){ + break; + } + } + }else{ + // the node is an element or a text + node = nodes; + } + } + this._attachTemplateNodes(node, function(n,p){ + return n.getAttribute(p); + }); + if(this.widgetsInTemplate){ + //Make sure dojoType is used for parsing widgets in template. + //The Parser.query could be changed from multiversion support. + var parser = Parser, qry, attr; + if(parser._query != "[dojoType]"){ + qry = parser._query; + attr = parser._attrName; + parser._query = "[dojoType]"; + parser._attrName = "dojoType"; + } + + //Store widgets that we need to start at a later point in time + var cw = (this._startupWidgets = Parser.parse(node, { + noStart: !this._earlyTemplatedStartup, + inherited: {dir: this.dir, lang: this.lang} + })); + + //Restore the query. + if(qry){ + parser._query = qry; + parser._attrName = attr; + } + + this._supportingWidgets = dijitMgr.findWidgets(node); + + this._attachTemplateNodes(cw, function(n,p){ + return n[p]; + }); + } + + if(this.domNode){ + domConstruct.place(node, this.domNode, "before"); + this.destroyDescendants(); + domConstruct.destroy(this.domNode); + } + this.domNode = node; + + this._fillContent(this.srcNodeRef); + }, + _templateCache: {}, + getCachedTemplate: function(templatePath, templateString, alwaysUseString){ + // summary: + // Layer for dijit._Templated.getCachedTemplate + var tmplts = this._templateCache; + var key = templateString || templatePath; + if(tmplts[key]){ + return tmplts[key]; + } + + templateString = dString.trim(templateString || Cache(templatePath, {sanitize: true})); + + if( this._dijitTemplateCompat && + (alwaysUseString || templateString.match(/\$\{([^\}]+)\}/g)) + ){ + templateString = this._stringRepl(templateString); + } + + // If we always use a string, or find no variables, just store it as a node + if(alwaysUseString || !templateString.match(/\{[{%]([^\}]+)[%}]\}/g)){ + return tmplts[key] = domConstruct.toDom(templateString); + }else{ + return tmplts[key] = new dd.Template(templateString); + } + }, + render: function(){ + // summary: Renders the widget. + this.buildRendering(); + }, + startup: function(){ + // summary: The method overrides dijit._TemplatedMixin.startup. + Array.forEach(this._startupWidgets, function(w){ + if(w && !w._started && w.startup){ + w.startup(); + } + }); + this.inherited(arguments); + } + }); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/_base.js b/js/dojo-release-1.7.2-src/dojox/dtl/_base.js new file mode 100644 index 0000000..c509f53 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/_base.js @@ -0,0 +1,765 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojox/string/tokenize", + "dojo/_base/json", + "dojo/dom", + "dojo/_base/xhr", + "dojox/string/Builder", + "dojo/_base/Deferred"], + function(kernel, lang, Tokenize, json, dom, xhr, StringBuilder, deferred){ + /*===== + Tokenize = dojox.string.tokenize; + StringBuilder = dojox.string.Builder; + =====*/ + kernel.experimental("dojox.dtl"); + var dd = lang.getObject("dojox.dtl", true); + dd._base = {}; + /*===== + dd = dojox.dtl; + =====*/ + + dd.TOKEN_BLOCK = -1; + dd.TOKEN_VAR = -2; + dd.TOKEN_COMMENT = -3; + dd.TOKEN_TEXT = 3; + + /*===== + dd._Context = function(dict){ + // summary: Pass one of these when rendering a template to tell the template what values to use. + } + =====*/ + dd._Context = lang.extend(function(dict){ + // summary: Pass one of these when rendering a template to tell the template what values to use. + if(dict){ + lang._mixin(this, dict); + if(dict.get){ + // Preserve passed getter and restore prototype get + this._getter = dict.get; + delete this.get; + } + } + }, + { + push: function(){ + var last = this; + var context = lang.delegate(this); + context.pop = function(){ return last; } + return context; + }, + pop: function(){ + throw new Error("pop() called on empty Context"); + }, + get: function(key, otherwise){ + var n = this._normalize; + + if(this._getter){ + var got = this._getter(key); + if(got !== undefined){ + return n(got); + } + } + + if(this[key] !== undefined){ + return n(this[key]); + } + + return otherwise; + }, + _normalize: function(value){ + if(value instanceof Date){ + value.year = value.getFullYear(); + value.month = value.getMonth() + 1; + value.day = value.getDate(); + value.date = value.year + "-" + ("0" + value.month).slice(-2) + "-" + ("0" + value.day).slice(-2); + value.hour = value.getHours(); + value.minute = value.getMinutes(); + value.second = value.getSeconds(); + value.microsecond = value.getMilliseconds(); + } + return value; + }, + update: function(dict){ + var context = this.push(); + if(dict){ + lang._mixin(this, dict); + } + return context; + } + }); + + var smart_split_re = /("(?:[^"\\]*(?:\\.[^"\\]*)*)"|'(?:[^'\\]*(?:\\.[^'\\]*)*)'|[^\s]+)/g; + var split_re = /\s+/g; + var split = function(/*String|RegExp?*/ splitter, /*Integer?*/ limit){ + splitter = splitter || split_re; + if(!(splitter instanceof RegExp)){ + splitter = new RegExp(splitter, "g"); + } + if(!splitter.global){ + throw new Error("You must use a globally flagged RegExp with split " + splitter); + } + splitter.exec(""); // Reset the global + + var part, parts = [], lastIndex = 0, i = 0; + while((part = splitter.exec(this))){ + parts.push(this.slice(lastIndex, splitter.lastIndex - part[0].length)); + lastIndex = splitter.lastIndex; + if(limit && (++i > limit - 1)){ + break; + } + } + parts.push(this.slice(lastIndex)); + return parts; + } + + dd.Token = function(token_type, contents){ + this.token_type = token_type; + this.contents = new String(lang.trim(contents)); + this.contents.split = split; + this.split = function(){ + return String.prototype.split.apply(this.contents, arguments); + } + } + dd.Token.prototype.split_contents = function(/*Integer?*/ limit){ + var bit, bits = [], i = 0; + limit = limit || 999; + while(i++ < limit && (bit = smart_split_re.exec(this.contents))){ + bit = bit[0]; + if(bit.charAt(0) == '"' && bit.slice(-1) == '"'){ + bits.push('"' + bit.slice(1, -1).replace('\\"', '"').replace('\\\\', '\\') + '"'); + }else if(bit.charAt(0) == "'" && bit.slice(-1) == "'"){ + bits.push("'" + bit.slice(1, -1).replace("\\'", "'").replace('\\\\', '\\') + "'"); + }else{ + bits.push(bit); + } + } + return bits; + } + + var ddt = dd.text = { + _get: function(module, name, errorless){ + // summary: Used to find both tags and filters + var params = dd.register.get(module, name.toLowerCase(), errorless); + if(!params){ + if(!errorless){ + throw new Error("No tag found for " + name); + } + return null; + } + + var fn = params[1]; + var deps = params[2]; + + var parts; + if(fn.indexOf(":") != -1){ + parts = fn.split(":"); + fn = parts.pop(); + } + +// FIXME: THIS DESIGN DOES NOT WORK WITH ASYNC LOADERS! + var mod = deps; + if (/\./.test(deps)) { + deps = deps.replace(/\./g, "/"); + } + require([deps], function(){}); + + var parent = lang.getObject(mod); + + return parent[fn || name] || parent[name + "_"] || parent[fn + "_"]; + }, + getTag: function(name, errorless){ + return ddt._get("tag", name, errorless); + }, + getFilter: function(name, errorless){ + return ddt._get("filter", name, errorless); + }, + getTemplate: function(file){ + return new dd.Template(ddt.getTemplateString(file)); + }, + getTemplateString: function(file){ + return xhr._getText(file.toString()) || ""; + }, + _resolveLazy: function(location, sync, json){ + if(sync){ + if(json){ + return json.fromJson(xhr._getText(location)) || {}; + }else{ + return dd.text.getTemplateString(location); + } + }else{ + return xhr.get({ + handleAs: json ? "json" : "text", + url: location + }); + } + }, + _resolveTemplateArg: function(arg, sync){ + if(ddt._isTemplate(arg)){ + if(!sync){ + var d = new deferred(); + d.callback(arg); + return d; + } + return arg; + } + return ddt._resolveLazy(arg, sync); + }, + _isTemplate: function(arg){ + return (arg === undefined) || (typeof arg == "string" && (arg.match(/^\s*[<{]/) || arg.indexOf(" ") != -1)); + }, + _resolveContextArg: function(arg, sync){ + if(arg.constructor == Object){ + if(!sync){ + var d = new deferred; + d.callback(arg); + return d; + } + return arg; + } + return ddt._resolveLazy(arg, sync, true); + }, + _re: /(?:\{\{\s*(.+?)\s*\}\}|\{%\s*(load\s*)?(.+?)\s*%\})/g, + tokenize: function(str){ + return Tokenize(str, ddt._re, ddt._parseDelims); + }, + _parseDelims: function(varr, load, tag){ + if(varr){ + return [dd.TOKEN_VAR, varr]; + }else if(load){ + var parts = lang.trim(tag).split(/\s+/g); + for(var i = 0, part; part = parts[i]; i++){ + if (/\./.test(part)){ + part = part.replace(/\./g,"/"); + } + require([part]); + } + }else{ + return [dd.TOKEN_BLOCK, tag]; + } + } + } + + /*===== + dd.Template = function(template, isString){ + // summary: + // The base class for text-based templates. + // template: String|dojo._Url + // The string or location of the string to + // use as a template + // isString: Boolean + // Indicates whether the template is a string or a url. + }; + dd.Template.prototype.update= function(node, context){ + // summary: + // Updates this template according to the given context. + // node: DOMNode|String|dojo.NodeList + // A node reference or set of nodes + // context: dojo._Url|String|Object + // The context object or location + } + dd.Template.prototype.render= function(context, buffer){ + // summary: + // Renders this template. + // context: Object + // The runtime context. + // buffer: StringBuilder? + // A string buffer. + } + + =====*/ + dd.Template = lang.extend(function(/*String|dojo._Url*/ template, /*Boolean*/ isString){ + // template: + // The string or location of the string to + // use as a template + var str = isString ? template : ddt._resolveTemplateArg(template, true) || ""; + var tokens = ddt.tokenize(str); + var parser = new dd._Parser(tokens); + this.nodelist = parser.parse(); + }, + { + update: function(node, context){ + // summary: + // Updates this template according to the given context. + // node: DOMNode|String|dojo.NodeList + // A node reference or set of nodes + // context: dojo._Url|String|Object + // The context object or location + return ddt._resolveContextArg(context).addCallback(this, function(contextObject){ + var content = this.render(new dd._Context(contextObject)); + if(node.forEach){ + node.forEach(function(item){ + item.innerHTML = content; + }); + }else{ + dom.byId(node).innerHTML = content; + } + return this; + }); + }, + render: function(context, /*concatenatable?*/ buffer){ + buffer = buffer || this.getBuffer(); + context = context || new dd._Context({}); + return this.nodelist.render(context, buffer) + ""; + }, + getBuffer: function(){ + return new StringBuilder(); + } + }); + + var qfRe = /\{\{\s*(.+?)\s*\}\}/g; + dd.quickFilter = function(str){ + if(!str){ + return new dd._NodeList(); + } + + if(str.indexOf("{%") == -1){ + return new dd._QuickNodeList(Tokenize(str, qfRe, function(token){ + return new dd._Filter(token); + })); + } + } + + dd._QuickNodeList = lang.extend(function(contents){ + this.contents = contents; + }, + { + render: function(context, buffer){ + for(var i = 0, l = this.contents.length; i < l; i++){ + if(this.contents[i].resolve){ + buffer = buffer.concat(this.contents[i].resolve(context)); + }else{ + buffer = buffer.concat(this.contents[i]); + } + } + return buffer; + }, + dummyRender: function(context){ return this.render(context, dd.Template.prototype.getBuffer()).toString(); }, + clone: function(buffer){ return this; } + }); + + dd._Filter = lang.extend(function(token){ + // summary: Uses a string to find (and manipulate) a variable + if(!token) throw new Error("Filter must be called with variable name"); + this.contents = token; + + var cache = this._cache[token]; + if(cache){ + this.key = cache[0]; + this.filters = cache[1]; + }else{ + this.filters = []; + Tokenize(token, this._re, this._tokenize, this); + this._cache[token] = [this.key, this.filters]; + } + }, + { + _cache: {}, + _re: /(?:^_\("([^\\"]*(?:\\.[^\\"])*)"\)|^"([^\\"]*(?:\\.[^\\"]*)*)"|^([a-zA-Z0-9_.]+)|\|(\w+)(?::(?:_\("([^\\"]*(?:\\.[^\\"])*)"\)|"([^\\"]*(?:\\.[^\\"]*)*)"|([a-zA-Z0-9_.]+)|'([^\\']*(?:\\.[^\\']*)*)'))?|^'([^\\']*(?:\\.[^\\']*)*)')/g, + _values: { + 0: '"', // _("text") + 1: '"', // "text" + 2: "", // variable + 8: '"' // 'text' + }, + _args: { + 4: '"', // :_("text") + 5: '"', // :"text" + 6: "", // :variable + 7: "'"// :'text' + }, + _tokenize: function(){ + var pos, arg; + + for(var i = 0, has = []; i < arguments.length; i++){ + has[i] = (arguments[i] !== undefined && typeof arguments[i] == "string" && arguments[i]); + } + + if(!this.key){ + for(pos in this._values){ + if(has[pos]){ + this.key = this._values[pos] + arguments[pos] + this._values[pos]; + break; + } + } + }else{ + for(pos in this._args){ + if(has[pos]){ + var value = arguments[pos]; + if(this._args[pos] == "'"){ + value = value.replace(/\\'/g, "'"); + }else if(this._args[pos] == '"'){ + value = value.replace(/\\"/g, '"'); + } + arg = [!this._args[pos], value]; + break; + } + } + // Get a named filter + var fn = ddt.getFilter(arguments[3]); + if(!lang.isFunction(fn)) throw new Error(arguments[3] + " is not registered as a filter"); + this.filters.push([fn, arg]); + } + }, + getExpression: function(){ + return this.contents; + }, + resolve: function(context){ + if(this.key === undefined){ + return ""; + } + + var str = this.resolvePath(this.key, context); + + for(var i = 0, filter; filter = this.filters[i]; i++){ + // Each filter has the function in [0], a boolean in [1][0] of whether it's a variable or a string + // and [1][1] is either the variable name of the string content. + if(filter[1]){ + if(filter[1][0]){ + str = filter[0](str, this.resolvePath(filter[1][1], context)); + }else{ + str = filter[0](str, filter[1][1]); + } + }else{ + str = filter[0](str); + } + } + + return str; + }, + resolvePath: function(path, context){ + var current, parts; + var first = path.charAt(0); + var last = path.slice(-1); + if(!isNaN(parseInt(first))){ + current = (path.indexOf(".") == -1) ? parseInt(path) : parseFloat(path); + }else if(first == '"' && first == last){ + current = path.slice(1, -1); + }else{ + if(path == "true"){ return true; } + if(path == "false"){ return false; } + if(path == "null" || path == "None"){ return null; } + parts = path.split("."); + current = context.get(parts[0]); + + if(lang.isFunction(current)){ + var self = context.getThis && context.getThis(); + if(current.alters_data){ + current = ""; + }else if(self){ + current = current.call(self); + }else{ + current = ""; + } + } + + for(var i = 1; i < parts.length; i++){ + var part = parts[i]; + if(current){ + var base = current; + if(lang.isObject(current) && part == "items" && current[part] === undefined){ + var items = []; + for(var key in current){ + items.push([key, current[key]]); + } + current = items; + continue; + } + + if(current.get && lang.isFunction(current.get) && current.get.safe){ + current = current.get(part); + }else if(current[part] === undefined){ + current = current[part]; + break; + }else{ + current = current[part]; + } + + if(lang.isFunction(current)){ + if(current.alters_data){ + current = ""; + }else{ + current = current.call(base); + } + }else if(current instanceof Date){ + current = dd._Context.prototype._normalize(current); + } + }else{ + return ""; + } + } + } + return current; + } + }); + + dd._TextNode = dd._Node = lang.extend(function(/*Object*/ obj){ + // summary: Basic catch-all node + this.contents = obj; + }, + { + set: function(data){ + this.contents = data; + return this; + }, + render: function(context, buffer){ + // summary: Adds content onto the buffer + return buffer.concat(this.contents); + }, + isEmpty: function(){ + return !lang.trim(this.contents); + }, + clone: function(){ return this; } + }); + + dd._NodeList = lang.extend(function(/*Node[]*/ nodes){ + // summary: Allows us to render a group of nodes + this.contents = nodes || []; + this.last = ""; + }, + { + push: function(node){ + // summary: Add a new node to the list + this.contents.push(node); + return this; + }, + concat: function(nodes){ + this.contents = this.contents.concat(nodes); + return this; + }, + render: function(context, buffer){ + // summary: Adds all content onto the buffer + for(var i = 0; i < this.contents.length; i++){ + buffer = this.contents[i].render(context, buffer); + if(!buffer) throw new Error("Template must return buffer"); + } + return buffer; + }, + dummyRender: function(context){ + return this.render(context, dd.Template.prototype.getBuffer()).toString(); + }, + unrender: function(){ return arguments[1]; }, + clone: function(){ return this; }, + rtrim: function(){ + while(1){ + i = this.contents.length - 1; + if(this.contents[i] instanceof dd._TextNode && this.contents[i].isEmpty()){ + this.contents.pop(); + }else{ + break; + } + } + + return this; + } + }); + + dd._VarNode = lang.extend(function(str){ + // summary: A node to be processed as a variable + this.contents = new dd._Filter(str); + }, + { + render: function(context, buffer){ + var str = this.contents.resolve(context); + if(!str.safe){ + str = dd._base.escape("" + str); + } + return buffer.concat(str); + } + }); + + dd._noOpNode = new function(){ + // summary: Adds a no-op node. Useful in custom tags + this.render = this.unrender = function(){ return arguments[1]; } + this.clone = function(){ return this; } + } + + dd._Parser = lang.extend(function(tokens){ + // summary: Parser used during initialization and for tag groups. + this.contents = tokens; + }, + { + i: 0, + parse: function(/*Array?*/ stop_at){ + // summary: Turns tokens into nodes + // description: Steps into tags are they're found. Blocks use the parse object + // to find their closing tag (the stop_at array). stop_at is inclusive, it + // returns the node that matched. + var terminators = {}, token; + stop_at = stop_at || []; + for(var i = 0; i < stop_at.length; i++){ + terminators[stop_at[i]] = true; + } + + var nodelist = new dd._NodeList(); + while(this.i < this.contents.length){ + token = this.contents[this.i++]; + if(typeof token == "string"){ + nodelist.push(new dd._TextNode(token)); + }else{ + var type = token[0]; + var text = token[1]; + if(type == dd.TOKEN_VAR){ + nodelist.push(new dd._VarNode(text)); + }else if(type == dd.TOKEN_BLOCK){ + if(terminators[text]){ + --this.i; + return nodelist; + } + var cmd = text.split(/\s+/g); + if(cmd.length){ + cmd = cmd[0]; + var fn = ddt.getTag(cmd); + if(fn){ + nodelist.push(fn(this, new dd.Token(type, text))); + } + } + } + } + } + + if(stop_at.length){ + throw new Error("Could not find closing tag(s): " + stop_at.toString()); + } + + this.contents.length = 0; + return nodelist; + }, + next_token: function(){ + // summary: Returns the next token in the list. + var token = this.contents[this.i++]; + return new dd.Token(token[0], token[1]); + }, + delete_first_token: function(){ + this.i++; + }, + skip_past: function(endtag){ + while(this.i < this.contents.length){ + var token = this.contents[this.i++]; + if(token[0] == dd.TOKEN_BLOCK && token[1] == endtag){ + return; + } + } + throw new Error("Unclosed tag found when looking for " + endtag); + }, + create_variable_node: function(expr){ + return new dd._VarNode(expr); + }, + create_text_node: function(expr){ + return new dd._TextNode(expr || ""); + }, + getTemplate: function(file){ + return new dd.Template(file); + } + }); + + dd.register = { + _registry: { + attributes: [], + tags: [], + filters: [] + }, + get: function(/*String*/ module, /*String*/ name){ + var registry = dd.register._registry[module + "s"]; + for(var i = 0, entry; entry = registry[i]; i++){ + if(typeof entry[0] == "string"){ + if(entry[0] == name){ + return entry; + } + }else if(name.match(entry[0])){ + return entry; + } + } + }, + getAttributeTags: function(){ + var tags = []; + var registry = dd.register._registry.attributes; + for(var i = 0, entry; entry = registry[i]; i++){ + if(entry.length == 3){ + tags.push(entry); + }else{ + var fn = lang.getObject(entry[1]); + if(fn && lang.isFunction(fn)){ + entry.push(fn); + tags.push(entry); + } + } + } + return tags; + }, + _any: function(type, base, locations){ + for(var path in locations){ + for(var i = 0, fn; fn = locations[path][i]; i++){ + var key = fn; + if(lang.isArray(fn)){ + key = fn[0]; + fn = fn[1]; + } + if(typeof key == "string"){ + if(key.substr(0, 5) == "attr:"){ + var attr = fn; + if(attr.substr(0, 5) == "attr:"){ + attr = attr.slice(5); + } + dd.register._registry.attributes.push([attr.toLowerCase(), base + "." + path + "." + attr]); + } + key = key.toLowerCase() + } + dd.register._registry[type].push([ + key, + fn, + base + "." + path + ]); + } + } + }, + tags: function(/*String*/ base, /*Object*/ locations){ + dd.register._any("tags", base, locations); + }, + filters: function(/*String*/ base, /*Object*/ locations){ + dd.register._any("filters", base, locations); + } + } + + var escapeamp = /&/g; + var escapelt = //g; + var escapeqt = /'/g; + var escapedblqt = /"/g; + dd._base.escape = function(value){ + // summary: Escapes a string's HTML + return dd.mark_safe(value.replace(escapeamp, '&').replace(escapelt, '<').replace(escapegt, '>').replace(escapedblqt, '"').replace(escapeqt, ''')); + } + + dd._base.safe = function(value){ + if(typeof value == "string"){ + value = new String(value); + } + if(typeof value == "object"){ + value.safe = true; + } + return value; + } + dd.mark_safe = dd._base.safe; + + dd.register.tags("dojox.dtl.tag", { + "date": ["now"], + "logic": ["if", "for", "ifequal", "ifnotequal"], + "loader": ["extends", "block", "include", "load", "ssi"], + "misc": ["comment", "debug", "filter", "firstof", "spaceless", "templatetag", "widthratio", "with"], + "loop": ["cycle", "ifchanged", "regroup"] + }); + dd.register.filters("dojox.dtl.filter", { + "dates": ["date", "time", "timesince", "timeuntil"], + "htmlstrings": ["linebreaks", "linebreaksbr", "removetags", "striptags"], + "integers": ["add", "get_digit"], + "lists": ["dictsort", "dictsortreversed", "first", "join", "length", "length_is", "random", "slice", "unordered_list"], + "logic": ["default", "default_if_none", "divisibleby", "yesno"], + "misc": ["filesizeformat", "pluralize", "phone2numeric", "pprint"], + "strings": ["addslashes", "capfirst", "center", "cut", "fix_ampersands", "floatformat", "iriencode", "linenumbers", "ljust", "lower", "make_list", "rjust", "slugify", "stringformat", "title", "truncatewords", "truncatewords_html", "upper", "urlencode", "urlize", "urlizetrunc", "wordcount", "wordwrap"] + }); + dd.register.filters("dojox.dtl", { + "_base": ["escape", "safe"] + }); + return dd; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/contrib/data.js b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/data.js new file mode 100644 index 0000000..7be2653 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/data.js @@ -0,0 +1,164 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "../_base", + "dojo/_base/array" +], function(kernel,lang,dd,array){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.contrib.data", true); + + var ddcd = dd.contrib.data; + var first = true; + + ddcd._BoundItem = lang.extend(function(item, store){ + this.item = item; + this.store = store; + }, + { + get: function(key){ + var store = this.store; + var item = this.item; + + if(key == "getLabel"){ + return store.getLabel(item); + }else if(key == "getAttributes"){ + return store.getAttributes(item); + }else if(key == "getIdentity"){ + if(store.getIdentity){ + return store.getIdentity(item); + } + return "Store has no identity API"; + }else{ + if(!store.hasAttribute(item, key)){ + if(key.slice(-1) == "s"){ + if(first){ + first = false; + kernel.deprecated("You no longer need an extra s to call getValues, it can be figured out automatically"); + } + key = key.slice(0, -1); + } + if(!store.hasAttribute(item, key)){ + return; + } + } + + var values = store.getValues(item, key); + if(!values){ + return; + } + if(!lang.isArray(values)){ + return new ddcd._BoundItem(values, store); + } + + values = array.map(values, function(value){ + if(lang.isObject(value) && store.isItem(value)){ + return new ddcd._BoundItem(value, store); + } + return value; + }); + values.get = ddcd._get; + return values; + } + } + }); + ddcd._BoundItem.prototype.get.safe = true; + + ddcd.BindDataNode = lang.extend(function(items, query, store, alias){ + this.items = items && new dd._Filter(items); + this.query = query && new dd._Filter(query); + this.store = new dd._Filter(store); + this.alias = alias; + }, + { + render: function(context, buffer){ + var items = this.items && this.items.resolve(context); + var query = this.query && this.query.resolve(context); + var store = this.store.resolve(context); + if(!store || !store.getFeatures){ + throw new Error("data_bind didn't receive a store"); + } + + if(query){ + var sync = false; + + store.fetch({ + query: query, + sync: true, + scope: this, + onComplete: function(it){ + sync = true; + items = it; + } + }); + + if(!sync){ + throw new Error("The bind_data tag only works with a query if the store executed synchronously"); + } + } + + var list = []; + + if(items){ + for(var i = 0, item; item = items[i]; i++){ + list.push(new ddcd._BoundItem(item, store)); + } + } + + context[this.alias] = list; + return buffer; + }, + unrender: function(context, buffer){ + return buffer; + }, + clone: function(){ + return this; + } + }); + + lang.mixin(ddcd, { + _get: function(key){ + if(this.length){ + return (this[0] instanceof ddcd._BoundItem) ? this[0].get(key) : this[0][key]; + } + }, + bind_data: function(parser, token){ + // summary: Turns a list of data store items into DTL compatible items + // example: + // `contextItems` and `contextStore` should be an item list + // and a data store that get assigned to `newVariable` + // + // | {% bind_data contextItems to contextStore as newVariable %} + var parts = token.contents.split(); + + if(parts[2] != 'to' || parts[4] != 'as' || !parts[5]){ + throw new Error("data_bind expects the format: 'data_bind items to store as varName'"); + } + + return new ddcd.BindDataNode(parts[1], null, parts[3], parts[5]); + }, + bind_query: function(parser, token){ + // summary: Queries a data store and makes the returned items DTL compatible + // example: + // You can only use this with data stores that work in a synchronous + // way (meaning that `onComplete` is fired during the `fetch` call). + // A `sync` flag is sent to the fetch call so that stores that usually + // work asynchronously make themselves syncrhonous if possible. + // | {% bind_query contextQuery to contextStore as newVariable %} + var parts = token.contents.split(); + + if(parts[2] != 'to' || parts[4] != 'as' || !parts[5]){ + throw new Error("data_bind expects the format: 'bind_query query to store as varName'"); + } + + return new ddcd.BindDataNode(null, parts[1], parts[3], parts[5]); + } + }); + ddcd._get.safe = true; + + dd.register.tags("dojox.dtl.contrib", { + "data": ["bind_data", "bind_query"] + }); + return dojox.dtl.contrib.data; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/contrib/dijit.js b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/dijit.js new file mode 100644 index 0000000..0d33a33 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/dijit.js @@ -0,0 +1,233 @@ +define([ + "dojo/_base/lang", + "dojo/_base/connect", + "dojo/_base/array", + "dojo/query", + "../_base", + "../dom", + "dojo/parser", + "dojo/_base/sniff" +], function(lang,connect,array,Query,dd,dxdom,Parser,has){ + /*===== + Query = dojo.query; + Parser = dojo.parser; + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.contrib.dijit", true); + var ddcd = dd.contrib.dijit; + ddcd.AttachNode = lang.extend(function(keys, object){ + this._keys = keys; + this._object = object; + }, + { + render: function(context, buffer){ + if(!this._rendered){ + this._rendered = true; + for(var i = 0, key; key = this._keys[i]; i++){ + context.getThis()[key] = this._object || buffer.getParent(); + } + } + return buffer; + }, + unrender: function(context, buffer){ + if(this._rendered){ + this._rendered = false; + for(var i = 0, key; key = this._keys[i]; i++){ + if(context.getThis()[key] === (this._object || buffer.getParent())){ + delete context.getThis()[key]; + } + } + } + return buffer; + }, + clone: function(buffer){ + return new this.constructor(this._keys, this._object); + } + }); + + ddcd.EventNode = lang.extend(function(command, obj){ + this._command = command; + + var type, events = command.split(/\s*,\s*/); + var trim = lang.trim; + var types = []; + var fns = []; + while(type = events.pop()){ + if(type){ + var fn = null; + if(type.indexOf(":") != -1){ + // oh, if only JS had tuple assignment + var funcNameArr = type.split(":"); + type = trim(funcNameArr[0]); + fn = trim(funcNameArr.slice(1).join(":")); + }else{ + type = trim(type); + } + if(!fn){ + fn = type; + } + types.push(type); + fns.push(fn); + } + } + + this._types = types; + this._fns = fns; + this._object = obj; + this._rendered = []; + }, + { + // _clear: Boolean + // Make sure we kill the actual tags (onclick problems, etc) + _clear: false, + render: function(context, buffer){ + for(var i = 0, type; type = this._types[i]; i++){ + if(!this._clear && !this._object){ + buffer.getParent()[type] = null; + } + var fn = this._fns[i]; + var args; + if(fn.indexOf(" ") != -1){ + if(this._rendered[i]){ + connect.disconnect(this._rendered[i]); + this._rendered[i] = false; + } + args = array.map(fn.split(" ").slice(1), function(item){ + return new dd._Filter(item).resolve(context); + }); + fn = fn.split(" ", 2)[0]; + } + if(!this._rendered[i]){ + if(!this._object){ + this._rendered[i] = buffer.addEvent(context, type, fn, args); + }else{ + this._rendered[i] = connect.connect(this._object, type, context.getThis(), fn); + } + } + } + this._clear = true; + + return buffer; + }, + unrender: function(context, buffer){ + while(this._rendered.length){ + connect.disconnect(this._rendered.pop()); + } + return buffer; + }, + clone: function(){ + return new this.constructor(this._command, this._object); + } + }); + + function cloneNode(n1){ + var n2 = n1.cloneNode(true); + if(has("ie")){ + Query("script", n2).forEach("item.text = this[index].text;", Query("script", n1)); + } + return n2; + } + + ddcd.DojoTypeNode = lang.extend(function(node, parsed){ + this._node = node; + this._parsed = parsed; + + var events = node.getAttribute("dojoAttachEvent") || node.getAttribute("data-dojo-attach-event"); + if(events){ + this._events = new ddcd.EventNode(lang.trim(events)); + } + var attach = node.getAttribute("dojoAttachPoint") || node.getAttribute("data-dojo-attach-point"); + if(attach){ + this._attach = new ddcd.AttachNode(lang.trim(attach).split(/\s*,\s*/)); + } + + if(!parsed){ + this._dijit = Parser.instantiate([cloneNode(node)])[0]; + }else{ + node = cloneNode(node); + var old = ddcd.widgetsInTemplate; + ddcd.widgetsInTemplate = false; + this._template = new dd.DomTemplate(node); + ddcd.widgetsInTemplate = old; + } + }, + { + render: function(context, buffer){ + if(this._parsed){ + var _buffer = new dd.DomBuffer(); + this._template.render(context, _buffer); + var root = cloneNode(_buffer.getRootNode()); + var div = document.createElement("div"); + div.appendChild(root); + var rendered = div.innerHTML; + div.removeChild(root); + if(rendered != this._rendered){ + this._rendered = rendered; + if(this._dijit){ + this._dijit.destroyRecursive(); + } + this._dijit = Parser.instantiate([root])[0]; + } + } + + var node = this._dijit.domNode; + + if(this._events){ + this._events._object = this._dijit; + this._events.render(context, buffer); + } + if(this._attach){ + this._attach._object = this._dijit; + this._attach.render(context, buffer); + } + + return buffer.concat(node); + }, + unrender: function(context, buffer){ + return buffer.remove(this._dijit.domNode); + }, + clone: function(){ + return new this.constructor(this._node, this._parsed); + } + }); + + lang.mixin(ddcd, { + widgetsInTemplate: true, + dojoAttachPoint: function(parser, token){ + return new ddcd.AttachNode(token.contents.slice(token.contents.indexOf("data-") !== -1 ? 23 : 16).split(/\s*,\s*/)); + }, + dojoAttachEvent: function(parser, token){ + return new ddcd.EventNode(token.contents.slice(token.contents.indexOf("data-") !== -1 ? 23 : 16)); + }, + dojoType: function(parser, token){ + var parsed = false; + if(token.contents.slice(-7) == " parsed"){ + parsed = true; + } + var contents = token.contents.indexOf("data-") !== -1 ? token.contents.slice(15) : token.contents.slice(9); + var dojoType = parsed ? contents.slice(0, -7) : contents.toString(); + + if(ddcd.widgetsInTemplate){ + var node = parser.swallowNode(); + node.setAttribute("data-dojo-type", dojoType); + return new ddcd.DojoTypeNode(node, parsed); + } + + return new dd.AttributeNode("data-dojo-type", dojoType); + }, + on: function(parser, token){ + // summary: Associates an event type to a function (on the current widget) by name + var parts = token.contents.split(); + return new ddcd.EventNode(parts[0] + ":" + parts.slice(1).join(" ")); + } + }); + ddcd["data-dojo-type"] = ddcd.dojoType; + ddcd["data-dojo-attach-point"] = ddcd.dojoAttachPoint; + ddcd["data-dojo-attach-event"] = ddcd.dojoAttachEvent; + + + dd.register.tags("dojox.dtl.contrib", { + "dijit": ["attr:dojoType", "attr:data-dojo-type", "attr:dojoAttachPoint", "attr:data-dojo-attach-point", ["attr:attach", "dojoAttachPoint"], ["attr:attach", "data-dojo-attach-point"], "attr:dojoAttachEvent", "attr:data-dojo-attach-event", [/(attr:)?on(click|key(up))/i, "on"]] + }); + return dojox.dtl.contrib.dijit; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/contrib/dom.js b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/dom.js new file mode 100644 index 0000000..d657f28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/dom.js @@ -0,0 +1,176 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/connect", + "dojo/dom-style", + "dojo/dom-construct", + "../_base", + "../dom" +], function(kernel,lang,connect,domStyle,domConstruct,dd,dddom){ + /*===== + dd = dojox.dtl; + =====*/ + var ddch = lang.getObject("dojox.dtl.contrib.dom", true); + + var simple = {render: function(){ return this.contents; }}; + + ddch.StyleNode = lang.extend(function(styles){ + this.contents = {}; + this._current = {}; + this._styles = styles; + for(var key in styles){ + if(styles[key].indexOf("{{") != -1){ + var node = new dd.Template(styles[key]); + }else{ + var node = lang.delegate(simple); + node.contents = styles[key]; + } + this.contents[key] = node; + } + }, + { + render: function(context, buffer){ + for(var key in this.contents){ + var value = this.contents[key].render(context); + if(this._current[key] != value){ + domStyle.set(buffer.getParent(), key, this._current[key] = value); + } + } + return buffer; + }, + unrender: function(context, buffer){ + this._current = {}; + return buffer; + }, + clone: function(buffer){ + return new this.constructor(this._styles); + } + }); + + ddch.BufferNode = lang.extend(function(nodelist, options){ + this.nodelist = nodelist; + this.options = options; + }, + { + _swap: function(type, node){ + if(!this.swapped && this.parent.parentNode){ + if(type == "node"){ + if((node.nodeType == 3 && !this.options.text) || (node.nodeType == 1 && !this.options.node)){ + return; + } + }else if(type == "class"){ + if(type != "class"){ + return; + } + } + + this.onAddNode && connect.disconnect(this.onAddNode); + this.onRemoveNode && connect.disconnect(this.onRemoveNode); + this.onChangeAttribute && connect.disconnect(this.onChangeAttribute); + this.onChangeData && connect.disconnect(this.onChangeData); + + this.swapped = this.parent.cloneNode(true); + this.parent.parentNode.replaceChild(this.swapped, this.parent); + } + }, + render: function(context, buffer){ + this.parent = buffer.getParent(); + if(this.options.node){ + this.onAddNode = connect.connect(buffer, "onAddNode", lang.hitch(this, "_swap", "node")); + this.onRemoveNode = connect.connect(buffer, "onRemoveNode", lang.hitch(this, "_swap", "node")); + } + if(this.options.text){ + this.onChangeData = connect.connect(buffer, "onChangeData", lang.hitch(this, "_swap", "node")); + } + if(this.options["class"]){ + this.onChangeAttribute = connect.connect(buffer, "onChangeAttribute", lang.hitch(this, "_swap", "class")); + } + + buffer = this.nodelist.render(context, buffer); + + if(this.swapped){ + this.swapped.parentNode.replaceChild(this.parent, this.swapped); + domConstruct.destroy(this.swapped); + }else{ + this.onAddNode && connect.disconnect(this.onAddNode); + this.onRemoveNode && connect.disconnect(this.onRemoveNode); + this.onChangeAttribute && connect.disconnect(this.onChangeAttribute); + this.onChangeData && connect.disconnect(this.onChangeData); + } + + delete this.parent; + delete this.swapped; + return buffer; + }, + unrender: function(context, buffer){ + return this.nodelist.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this.nodelist.clone(buffer), this.options); + } + }); + + lang.mixin(ddch, { + buffer: function(parser, token){ + // summary: + // Buffer large DOM manipulations during re-render. + // description: + // When using DomTemplate, wrap any content + // that you expect to change often during + // re-rendering. It will then remove its parent + // from the main document while it re-renders that + // section of code. It will only remove it from + // the main document if a mainpulation of somes sort + // happens. ie It won't swap out if it diesn't have to. + // example: + // By default, it considers only node addition/removal + // to be "changing" + // + // | {% buffer %}{% for item in items %}
                          • {{ item }}
                          • {% endfor %}{% endbuffer %} + // example: + // You can explicitly declare options: + // + // * node: Watch node removal/addition + // * class: Watch for a classname to be changed + // * text: Watch for any text to be changed + // + // | {% buffer node class %}{% for item in items %}
                          • {{ item }}
                          • {% endfor %}{% endbuffer %} + var parts = token.contents.split().slice(1); + var options = {}; + var found = false; + for(var i = parts.length; i--;){ + found = true; + options[parts[i]] = true; + } + if(!found){ + options.node = true; + } + var nodelist = parser.parse(["endbuffer"]); + parser.next_token(); + return new ddch.BufferNode(nodelist, options); + }, + html: function(parser, token){ + kernel.deprecated("{% html someVariable %}", "Use {{ someVariable|safe }} instead"); + return parser.create_variable_node(token.contents.slice(5) + "|safe"); + }, + style_: function(parser, token){ + var styles = {}; + token = token.contents.replace(/^style\s+/, ""); + var rules = token.split(/\s*;\s*/g); + for(var i = 0, rule; rule = rules[i]; i++){ + var parts = rule.split(/\s*:\s*/g); + var key = parts[0]; + var value = lang.trim(parts[1]); + if(value){ + styles[key] = value; + } + } + return new ddch.StyleNode(styles); + } + }); + + dd.register.tags("dojox.dtl.contrib", { + "dom": ["html", "attr:style", "buffer"] + }); + return dojox.dtl.contrib.dom; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/contrib/objects.js b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/objects.js new file mode 100644 index 0000000..56e7a7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/contrib/objects.js @@ -0,0 +1,20 @@ +define([ + "dojo/_base/lang", + "../_base" +], function(lang,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.contrib.objects", true); + + lang.mixin(dd.contrib.objects, { + key: function(value, arg){ + return value[arg]; + } + }); + + dd.register.filters("dojox.dtl.contrib", { + "objects": ["key"] + }); + return dojox.dtl.contrib.objects; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Animation.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Animation.html new file mode 100644 index 0000000..f4b43ee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Animation.html @@ -0,0 +1,45 @@ + + + Testing dojox.dtl using animation to change attributes + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Animation_amd.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Animation_amd.html new file mode 100644 index 0000000..def5ecd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Animation_amd.html @@ -0,0 +1,53 @@ + + + Testing dojox.dtl using animation to change attributes + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Blog.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Blog.html new file mode 100644 index 0000000..5f244b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Blog.html @@ -0,0 +1,95 @@ + + + Testing dojox.dtl using a blog example + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Data.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Data.html new file mode 100644 index 0000000..d84ff26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Data.html @@ -0,0 +1,59 @@ + + + Demo using the dojo.data bind_data tag + + + + +

                            Also see demo_Tree.html for an alternative way to use data stores.

                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Dijitless.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Dijitless.html new file mode 100644 index 0000000..e902ef6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Dijitless.html @@ -0,0 +1,50 @@ + + + Demo using dojox.dtl._DomTemplated without Dijit + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_DomTemplated.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_DomTemplated.html new file mode 100644 index 0000000..2e418e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_DomTemplated.html @@ -0,0 +1,44 @@ + + + Demo using dojox.dtl._DomTemplated + + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_DomTemplated_amd.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_DomTemplated_amd.html new file mode 100644 index 0000000..8d681fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_DomTemplated_amd.html @@ -0,0 +1,50 @@ + + + Demo using dojox.dtl._DomTemplated + + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Events.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Events.html new file mode 100644 index 0000000..ec181b9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Events.html @@ -0,0 +1,46 @@ + + + Demo using dojox.dtl._Templated + + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Inline.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Inline.html new file mode 100644 index 0000000..7c16ea3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Inline.html @@ -0,0 +1,51 @@ + + + Demo using dojox.dtl._DomTemplated inline in DOM + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_NodeList.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_NodeList.html new file mode 100644 index 0000000..d1ab0a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_NodeList.html @@ -0,0 +1,37 @@ + + + Demo using dojox.dtl._Templated + + + + +
                            +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_NodeList_amd.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_NodeList_amd.html new file mode 100644 index 0000000..840d444 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_NodeList_amd.html @@ -0,0 +1,42 @@ + + + Demo using dojox.dtl._Templated + + + + +
                            +
                            +
                            +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Table.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Table.html new file mode 100644 index 0000000..f1aa911 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Table.html @@ -0,0 +1,4073 @@ + + + Demo to show a massive nested for loop to render a table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            IndexNumericTextCurrencyDate
                            0158.9Bill$22.442008-12-28
                            1690.4Joe$3.032009-07-03
                            2843Bob$11.142010-09-30
                            357.8Matt$70.642009-12-16
                            4494.6Mark$9.132010-05-11
                            5766.3Tom$55.342008-03-10
                            6699.3Jake$26.242008-11-26
                            7487.8Greg$72.942010-06-23
                            8786.2Adam$34.642008-09-19
                            9188.6Steve$6.332009-01-01
                            10898.4George$22.242009-09-18
                            11222.2John$91.242009-10-23
                            12707.9Phil$75.542010-02-28
                            13585.5Jack$81.342009-03-24
                            14213.8Paul$30.742009-07-08
                            15968.5Rob$7.332008-02-06
                            1639.3Walt$77.342008-12-05
                            17335.7Nathan$26.142008-01-27
                            18127.6Dan$4.732009-03-03
                            19365.3Jeff$23.542009-05-15
                            20692.9Bill$13.342010-01-26
                            21244.9Joe$35.642009-10-16
                            22827Bob$6.332009-01-06
                            23519.6Matt$64.942008-06-03
                            24917.8Mark$86.342009-05-24
                            25407.1Tom$83.142009-08-17
                            26449.3Jake$87.042008-11-27
                            27753.5Greg$20.642009-09-25
                            28787Adam$33.442009-11-18
                            29166.9Steve$69.942010-08-17
                            30609.6George$39.242011-01-18
                            31274John$63.642009-01-02
                            32850.3Phil$46.342009-03-17
                            33181.4Jack$98.342008-02-04
                            34325.3Paul$90.142010-10-30
                            35776.3Rob$30.842010-04-17
                            36300.8Walt$75.742009-11-18
                            37598Nathan$51.042010-07-15
                            38155.6Dan$29.742008-06-04
                            39759.8Jeff$46.442010-08-21
                            40599.2Bill$7.432008-09-16
                            41571.9Joe$34.842010-09-23
                            42900.3Bob$19.842009-01-09
                            43292.2Matt$37.942008-12-21
                            44333Mark$70.542008-08-28
                            45236.4Tom$48.142009-08-19
                            46970.9Jake$78.242008-11-10
                            47575.8Greg$37.942010-06-24
                            48386.7Adam$53.542008-04-02
                            49531.1Steve$29.542009-09-21
                            50374.3George$89.442009-12-15
                            51609.1John$46.642011-01-22
                            52480.3Phil$36.642008-07-07
                            53814.8Jack$65.842009-09-19
                            54132.2Paul$99.142008-10-12
                            55350.1Rob$22.842010-04-22
                            56875.7Walt$19.842009-08-12
                            57158.1Nathan$77.442010-10-25
                            58950.9Dan$16.142009-05-05
                            5941.1Jeff$69.242010-04-11
                            60595.4Bill$6.632009-12-09
                            61223.4Joe$67.542008-03-30
                            62199.2Bob$15.642009-05-28
                            63372.8Matt$97.042008-04-28
                            64925.7Mark$10.242008-04-17
                            65183.1Tom$45.342009-01-05
                            66921.2Jake$32.842009-08-23
                            67440.8Greg$48.642008-12-04
                            68339.8Adam$43.742009-06-08
                            69773.7Steve$47.842008-06-17
                            70502.3George$7.332008-09-01
                            71124.8John$29.742010-10-22
                            72213Phil$49.642008-02-18
                            73667.3Jack$86.942008-01-14
                            74779.8Paul$79.442008-05-12
                            75883.3Rob$97.742009-10-17
                            76214.4Walt$89.942010-11-01
                            77743.7Nathan$33.942009-03-16
                            7847Dan$67.942010-08-04
                            79511Jeff$45.342008-12-08
                            80666.7Bill$95.542009-03-03
                            81888.5Joe$8.032010-02-09
                            82785.4Bob$29.342008-07-06
                            83837.7Matt$96.042008-02-05
                            84860.2Mark$74.042010-08-12
                            85985Tom$62.342010-07-17
                            86562.3Jake$83.742010-03-21
                            87467.6Greg$58.142008-02-16
                            88859Adam$62.842010-04-12
                            89687.5Steve$13.942008-07-17
                            90993.9George$80.542008-05-26
                            91373.8John$69.442008-08-26
                            9250.4Phil$47.942009-07-30
                            93222.8Jack$31.742009-06-14
                            94263.9Paul$17.742008-08-16
                            9599.2Rob$16.242010-08-07
                            96911.8Walt$72.442010-01-31
                            97623Nathan$19.242008-10-03
                            98673.4Dan$5.032010-09-29
                            99402.8Jeff$73.842008-01-06
                            100584.8Bill$73.242010-07-26
                            101721.7Joe$10.642009-08-06
                            102938.1Bob$15.642011-02-11
                            103447.1Matt$37.942008-12-12
                            104915.9Mark$64.342009-07-05
                            105124.2Tom$74.242010-01-08
                            106955.3Jake$65.342009-02-23
                            107623.6Greg$27.642009-10-02
                            108872.6Adam$95.042009-11-30
                            109749.4Steve$35.342009-01-30
                            110764.7George$93.742008-03-26
                            111585.4John$65.942008-07-26
                            11299.8Phil$59.742009-01-23
                            11393.2Jack$4.432010-04-06
                            114403.3Paul$96.042009-02-16
                            115890.2Rob$8.432008-04-23
                            116538.9Walt$3.932010-05-19
                            117911.6Nathan$66.342008-02-02
                            118475.9Dan$53.542011-02-05
                            11990.7Jeff$28.542009-01-16
                            120443.3Bill$5.032008-11-05
                            121527.7Joe$63.542010-12-07
                            122717.7Bob$73.542009-08-28
                            12363.5Matt$82.842009-10-18
                            124788Mark$23.142009-09-02
                            125155Tom$12.142009-12-08
                            126263.6Jake$66.042010-01-22
                            12725.6Greg$57.242008-12-28
                            12863.9Adam$4.732010-09-09
                            12952Steve$13.842008-06-03
                            130392.5George$58.142008-07-31
                            131670.3John$10.942010-08-04
                            132607Phil$82.742009-10-01
                            133140.7Jack$89.042009-03-16
                            134718.3Paul$67.842009-12-08
                            135255.9Rob$83.342010-04-27
                            136877.6Walt$9.732009-03-29
                            137538.6Nathan$12.242011-01-20
                            138862.5Dan$18.642008-01-13
                            139721.9Jeff$23.842008-06-21
                            140866.2Bill$63.042010-04-25
                            14159.9Joe$30.142010-08-29
                            142888.4Bob$90.842010-02-09
                            143451.5Matt$4.832009-10-05
                            144842.2Mark$76.742008-09-27
                            145463.9Tom$2.232008-03-18
                            146206.6Jake$90.042008-07-08
                            147609.3Greg$43.842008-11-26
                            148583.6Adam$30.142009-06-29
                            149605.2Steve$2.332010-03-31
                            150764.8George$88.942009-01-27
                            151505.6John$94.942010-01-10
                            152355.4Phil$83.742009-09-25
                            15331.9Jack$28.842009-11-20
                            154598.4Paul$13.142009-02-23
                            155842.9Rob$59.442009-03-20
                            156920.5Walt$80.142008-11-24
                            15794.5Nathan$41.042010-04-16
                            158390.6Dan$99.442008-01-28
                            159872.6Jeff$59.942008-02-23
                            160592.3Bill$36.442010-12-18
                            161942.4Joe$86.942010-10-19
                            162593Bob$22.442010-04-13
                            163151.1Matt$25.642008-01-11
                            164757.4Mark$85.542008-06-10
                            165130Tom$69.842010-04-29
                            166525Jake$61.842009-09-10
                            167819.8Greg$71.342010-12-29
                            168552.9Adam$10.342010-12-22
                            169586.8Steve$97.542009-09-13
                            170643.5George$56.842010-11-08
                            171588.9John$51.042010-06-10
                            172482.9Phil$10.342007-12-25
                            173213.9Jack$25.442008-10-17
                            174233.2Paul$1.132008-05-01
                            175383Rob$14.242010-07-18
                            176127.1Walt$66.742009-05-01
                            177672.2Nathan$48.642008-06-03
                            178627.4Dan$3.932008-09-30
                            179576.3Jeff$62.642008-09-01
                            180124.1Bill$26.942010-06-20
                            18135.3Joe$85.842008-11-30
                            182815.7Bob$34.142009-03-30
                            183820.6Matt$55.542010-01-18
                            18481.8Mark$78.842010-01-31
                            185197.5Tom$17.142010-07-14
                            18610.8Jake$29.842009-06-23
                            187442Greg$97.042011-01-06
                            188585.7Adam$59.742007-12-21
                            189832.2Steve$17.442009-12-14
                            19054.3George$29.842010-10-22
                            191844John$33.342010-05-10
                            192143.9Phil$14.942008-04-07
                            193546.8Jack$96.942010-01-09
                            194203.8Paul$5.132009-05-09
                            195872.3Rob$24.842009-11-22
                            196682.3Walt$25.942010-11-02
                            197158.7Nathan$70.142010-09-28
                            198121.2Dan$28.742009-06-19
                            199122.6Jeff$11.942010-01-06
                            200749.8Bill$17.342010-12-17
                            201646.1Joe$1.732008-11-05
                            202400.4Bob$16.142009-04-26
                            203495.5Matt$70.842009-03-21
                            204145.3Mark$91.242009-05-19
                            205582.9Tom$78.442010-03-02
                            206191.3Jake$46.642010-12-27
                            20797.5Greg$62.542010-01-15
                            208973.7Adam$74.642010-12-13
                            209447.2Steve$86.842008-02-27
                            21094.3George$61.842008-09-15
                            21139John$26.442008-10-04
                            212316.7Phil$66.542009-04-09
                            213743Jack$16.042008-05-05
                            214138.4Paul$30.542008-01-24
                            215584.7Rob$88.842010-07-19
                            216279.3Walt$7.932008-11-08
                            217233Nathan$17.742010-11-01
                            218887.8Dan$15.042010-01-11
                            219829.3Jeff$59.842009-08-12
                            220889.7Bill$69.242008-05-27
                            221123.3Joe$73.142009-03-29
                            222373.9Bob$4.732008-03-06
                            223785.6Matt$79.042008-09-07
                            224904.9Mark$92.942009-08-26
                            225935.8Tom$51.342009-04-19
                            226750.5Jake$79.342009-07-19
                            22731.2Greg$2.532010-02-09
                            228936.7Adam$91.342010-08-02
                            229588Steve$74.242009-04-23
                            230107.7George$63.242008-05-01
                            231245.7John$75.542010-08-25
                            232647.8Phil$12.942010-10-19
                            233714.6Jack$91.542010-02-18
                            234941.3Paul$82.042009-11-28
                            235473.3Rob$75.542008-05-13
                            236893.4Walt$50.642010-11-17
                            237392.7Nathan$53.742010-12-16
                            23868.8Dan$47.442010-09-06
                            239895.2Jeff$6.132009-11-12
                            240319.1Bill$16.942008-09-12
                            241434.7Joe$41.542011-02-04
                            242281.1Bob$6.332008-05-02
                            243174.8Matt$77.742008-01-24
                            244859Mark$71.842010-08-30
                            245471.8Tom$19.142009-11-19
                            246597.9Jake$8.532008-04-26
                            247516.5Greg$47.842010-01-08
                            248460.6Adam$54.642008-05-08
                            249317.8Steve$44.142008-07-18
                            250917.4George$76.042009-01-30
                            251149.1John$19.542010-05-25
                            252136.1Phil$47.642010-08-05
                            253252.2Jack$65.142009-11-20
                            254283Paul$51.042008-12-29
                            255133.3Rob$98.242009-08-08
                            256739Walt$57.942009-11-14
                            257850.4Nathan$9.632008-03-19
                            258498.6Dan$55.642009-12-11
                            259620.3Jeff$87.442008-03-04
                            260803.4Bill$79.142010-08-01
                            261155.5Joe$94.042008-01-13
                            262922.3Bob$7.632009-07-17
                            263751.6Matt$32.942008-06-07
                            264357.9Mark$61.142010-01-18
                            265682.4Tom$74.542009-12-28
                            266198.4Jake$48.442008-08-28
                            267799.1Greg$33.442008-12-17
                            268877.4Adam$83.342010-09-21
                            269501.7Steve$45.342010-04-28
                            270567.4George$25.642009-08-30
                            271393.4John$41.142009-06-22
                            272414.4Phil$33.442009-09-18
                            273911.4Jack$8.532010-10-03
                            27459.2Paul$44.342009-07-10
                            275716.7Rob$12.642008-09-18
                            276355.7Walt$32.442010-04-01
                            277573.9Nathan$12.342008-02-20
                            278887.7Dan$0.032010-10-10
                            279757.8Jeff$50.242009-01-15
                            280501.7Bill$6.932009-11-07
                            28136.9Joe$46.342007-12-27
                            282512.4Bob$87.742009-01-16
                            28364.3Matt$78.842009-04-25
                            284944.6Mark$84.742010-09-20
                            285436.3Tom$56.442011-02-12
                            286672.6Jake$92.042008-12-21
                            287392.6Greg$49.442009-05-13
                            288446.5Adam$38.142009-05-13
                            289333Steve$13.942010-12-15
                            290672.1George$64.142008-01-02
                            291267.3John$67.842009-06-21
                            292273.9Phil$19.042009-01-29
                            293614.3Jack$25.442008-05-29
                            29440Paul$19.942011-02-04
                            295908.8Rob$63.542009-09-17
                            296903.1Walt$30.842009-06-17
                            297221.2Nathan$70.042011-01-09
                            298662.1Dan$14.742009-01-23
                            299103.2Jeff$47.942009-07-03
                            30046.2Bill$15.242008-05-13
                            30158.3Joe$41.942010-07-06
                            302533Bob$69.342011-02-10
                            303884.6Matt$30.742008-09-30
                            30424.5Mark$34.742009-05-18
                            30511.7Tom$25.642008-03-22
                            306563Jake$15.942009-03-12
                            30734.1Greg$38.042008-03-30
                            308998.8Adam$4.232008-09-16
                            309344.7Steve$14.542010-03-25
                            310829.5George$19.142010-09-16
                            311955John$24.942008-11-12
                            312758Phil$78.342011-01-23
                            313750.8Jack$66.742008-11-11
                            314997.8Paul$69.142009-12-18
                            315443.5Rob$70.342010-10-10
                            316524Walt$26.642008-02-09
                            317912Nathan$30.042009-04-24
                            3181000Dan$29.942009-06-11
                            319234.5Jeff$64.342009-11-26
                            320948.4Bill$47.342010-07-05
                            321813.7Joe$42.842008-02-18
                            32297.7Bob$18.642010-08-11
                            32374.3Matt$93.742009-07-22
                            324357.7Mark$93.442008-07-29
                            325988Tom$37.842010-10-21
                            326873.8Jake$90.242008-06-24
                            327918.3Greg$81.442009-06-06
                            328342.7Adam$81.442010-05-18
                            329809Steve$4.832009-03-31
                            330420.4George$99.742010-09-30
                            331223John$81.042008-12-06
                            332275Phil$90.842009-07-09
                            333109.5Jack$98.242009-04-27
                            334610.9Paul$34.042009-02-10
                            335803.7Rob$32.842010-04-23
                            336699.6Walt$20.142009-12-30
                            337861.4Nathan$12.042009-05-28
                            338323.4Dan$46.242008-10-25
                            33984.3Jeff$27.142008-12-19
                            340488.6Bill$69.242008-12-15
                            341365.7Joe$91.542008-05-10
                            342670.8Bob$19.042008-01-24
                            343161.5Matt$29.942008-01-03
                            344588.8Mark$91.042009-01-30
                            345950.3Tom$71.442010-02-13
                            346689.5Jake$41.342010-10-04
                            347330.4Greg$27.442007-12-20
                            348785Adam$59.842009-06-07
                            34953.2Steve$68.242010-04-17
                            350369.6George$17.142009-04-25
                            351682.4John$53.642009-01-17
                            352805.3Phil$20.742009-08-24
                            353836Jack$36.942010-08-05
                            354848.6Paul$95.742010-04-23
                            355201Rob$90.742009-05-26
                            356880.9Walt$59.742010-09-16
                            357762.2Nathan$92.742008-05-29
                            358763.1Dan$71.242010-04-21
                            359226.4Jeff$76.542009-04-18
                            360960.8Bill$13.542009-11-02
                            361386.9Joe$81.742008-05-14
                            362727.6Bob$62.342009-01-08
                            363257.8Matt$45.942010-03-11
                            36487Mark$30.742010-01-20
                            365826Tom$50.842009-10-05
                            366278.6Jake$38.942008-06-25
                            367144.2Greg$15.142008-04-02
                            368284.2Adam$91.442010-07-05
                            36922Steve$14.142009-10-07
                            370441.8George$10.142010-03-12
                            37132.2John$48.842009-08-13
                            372158.8Phil$21.642008-06-02
                            373492.4Jack$47.342009-11-14
                            374194.4Paul$56.042010-11-05
                            375853.5Rob$38.642009-04-14
                            376420Walt$66.542010-07-09
                            377583.4Nathan$80.942010-12-30
                            378674Dan$9.332010-09-22
                            379476.8Jeff$11.542008-01-01
                            38044.9Bill$55.742008-04-27
                            381748Joe$58.942009-11-13
                            382268.4Bob$74.842010-07-21
                            383411.3Matt$24.042008-11-18
                            38412.8Mark$43.442010-08-29
                            385921.3Tom$28.842008-09-18
                            386337.8Jake$70.842010-10-27
                            387143.3Greg$29.142010-03-20
                            38899.8Adam$96.542010-07-06
                            389970.4Steve$44.242010-11-16
                            390981.5George$48.742009-06-21
                            39193.8John$23.442008-03-02
                            392694.2Phil$50.342010-07-16
                            393510.3Jack$91.442008-02-17
                            394799.7Paul$92.742009-07-04
                            395649.5Rob$84.842010-06-02
                            396885.6Walt$18.642009-06-28
                            397786.6Nathan$32.942010-05-31
                            398496.7Dan$42.942010-04-21
                            399299.9Jeff$39.942008-07-13
                            400218.1Bill$38.142010-01-27
                            401693.2Joe$47.442010-10-26
                            402757.2Bob$16.942009-03-29
                            403568.9Matt$67.942008-12-20
                            404620.5Mark$47.842008-09-26
                            405106.4Tom$12.842008-04-04
                            406880.1Jake$1.332008-11-05
                            407361.5Greg$80.042009-11-20
                            408133.8Adam$29.742008-01-29
                            409871.1Steve$59.642009-05-05
                            41050George$81.542010-07-20
                            411715.4John$50.842008-11-18
                            412615.3Phil$26.542009-06-01
                            41318.1Jack$83.442008-05-25
                            414335Paul$45.442009-11-30
                            415578.7Rob$56.042010-04-27
                            416670.5Walt$44.042010-05-12
                            417948.2Nathan$80.242009-09-23
                            418554.8Dan$93.642010-09-01
                            419590.3Jeff$80.742009-05-22
                            42024.8Bill$85.742008-10-19
                            421839.9Joe$57.242010-05-29
                            422129.3Bob$18.742008-01-29
                            423587.2Matt$20.542010-09-20
                            424723.7Mark$54.042008-12-27
                            425338.5Tom$11.942010-10-07
                            42681Jake$78.942008-12-28
                            427836.9Greg$73.842008-05-13
                            428392.7Adam$29.242008-02-29
                            429245Steve$88.342010-09-19
                            430693.7George$90.742010-04-06
                            431956.8John$74.742008-11-27
                            432727.5Phil$87.742009-07-02
                            433763Jack$46.442010-02-24
                            434632Paul$18.742008-09-10
                            435955.1Rob$52.642009-01-26
                            436838.7Walt$60.742008-05-27
                            437162.7Nathan$44.442010-09-27
                            438288.6Dan$83.642008-06-30
                            439350.1Jeff$8.132008-02-15
                            440218.4Bill$77.542010-12-31
                            441943.2Joe$73.142010-03-14
                            442240Bob$45.942009-10-22
                            443724Matt$22.242008-02-09
                            444413.3Mark$85.442008-09-13
                            445642.8Tom$80.942010-05-14
                            446991.3Jake$64.842009-02-13
                            447129.2Greg$81.042010-07-11
                            4484.6Adam$9.932010-01-02
                            449172.2Steve$44.942010-04-06
                            450222.3George$66.742009-07-19
                            451179.7John$61.042008-09-11
                            452884.3Phil$85.042010-02-24
                            453465.3Jack$57.442010-11-08
                            454510Paul$98.742010-05-22
                            455741.8Rob$63.042009-10-13
                            456499.2Walt$62.142008-08-31
                            457863.3Nathan$75.042008-01-24
                            458670.7Dan$75.542008-05-17
                            459314.2Jeff$92.742009-10-19
                            46038.7Bill$14.942008-09-28
                            461537.8Joe$32.942010-09-05
                            462768.2Bob$21.342010-03-15
                            463457.5Matt$67.942008-11-07
                            464368.5Mark$18.942008-10-23
                            465133.3Tom$93.042010-10-22
                            466706.9Jake$43.042009-08-10
                            467927.9Greg$29.342008-10-25
                            468959.1Adam$96.342008-01-16
                            46988.8Steve$27.842010-12-24
                            470667.2George$31.642008-04-13
                            471912.6John$85.442009-04-29
                            472768.1Phil$62.242010-01-01
                            473473.8Jack$8.032008-12-25
                            474753.4Paul$44.842009-07-31
                            47520.3Rob$58.142009-05-11
                            476917.3Walt$28.842010-09-20
                            477435.6Nathan$21.642008-06-24
                            478704.3Dan$17.542008-05-12
                            479728.1Jeff$26.442009-03-29
                            480678.9Bill$93.142010-03-30
                            481779.1Joe$84.342009-10-12
                            482208.3Bob$61.142008-07-31
                            483850.8Matt$8.532008-10-31
                            484171.8Mark$83.842010-04-03
                            485681.4Tom$85.942008-12-04
                            486121.1Jake$77.642009-11-02
                            487990.2Greg$21.142010-07-10
                            488152Adam$91.642011-01-28
                            489277Steve$64.442008-09-28
                            490679.5George$32.342008-07-10
                            491398John$10.242008-01-10
                            492970.4Phil$31.042009-12-18
                            493164.7Jack$16.142010-03-26
                            494438.5Paul$33.242009-09-20
                            495160.2Rob$1.432009-04-10
                            496463Walt$13.542008-07-24
                            49753.9Nathan$12.542009-03-26
                            498860.6Dan$27.742008-12-18
                            499842.2Jeff$55.442011-01-02
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Templated.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Templated.html new file mode 100644 index 0000000..b37af58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Templated.html @@ -0,0 +1,36 @@ + + + Demo using dojox.dtl._Templated + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Templated_amd.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Templated_amd.html new file mode 100644 index 0000000..7235aac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Templated_amd.html @@ -0,0 +1,42 @@ + + + Demo using dojox.dtl._Templated + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Tree.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Tree.html new file mode 100644 index 0000000..897ce8a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/demo_Tree.html @@ -0,0 +1,48 @@ + + + Demo to show recursion in DTL + + + + +
                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_1.json b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_1.json new file mode 100644 index 0000000..9c7dd9f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_1.json @@ -0,0 +1 @@ +{"teaser":"I'd be able to write a lot faster.","body":"I think I wouldn't be able to think.","date":1189125242601,"author":"jim"} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_3.json b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_3.json new file mode 100644 index 0000000..7c0a937 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_3.json @@ -0,0 +1 @@ +{"teaser":"There was SO much sand","body":"I tried to walk so fast that I wouldn't leave foot prints.","date":1190245842601,"author":"jim"} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_list.json b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_list.json new file mode 100644 index 0000000..40f14a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_blog_list.json @@ -0,0 +1 @@ +{"blog_list":{"3":{"title":"My Trip to the Beach"},"1":{"title":"If I Were a Robot"}}} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_page_about.json b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_page_about.json new file mode 100644 index 0000000..05ddb9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/blog/get_page_about.json @@ -0,0 +1 @@ +{"title":"About Jim","body":"

                            Jim is an avid golfer, enjoys long walks on the beach, and eating hot pockets

                            When he's not scalding his mouth, you'll find him throwing rocks at pigeons.

                            "} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/fruit.json b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/fruit.json new file mode 100644 index 0000000..e7a0bf8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/fruit.json @@ -0,0 +1 @@ +{ items: ["apple", "banana", "pear"] } \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/morefruit.json b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/morefruit.json new file mode 100644 index 0000000..6a8beea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/json/morefruit.json @@ -0,0 +1 @@ +{ items: ["pineapple", "orange", "tomato"] } \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/animation.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/animation.html new file mode 100644 index 0000000..d37908b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/animation.html @@ -0,0 +1,5 @@ +{% load dojox.dtl.contrib.dijit dojox.dtl.contrib.dom %} +
                            +
                             
                            +
                             
                            +
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_base.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_base.html new file mode 100644 index 0000000..cc5d150 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_base.html @@ -0,0 +1,11 @@ +{% load dojox.dtl.contrib.dom %} +
                            +

                            + + + + +
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_detail.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_detail.html new file mode 100644 index 0000000..2b6146d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_detail.html @@ -0,0 +1,10 @@ + + + +
                            +

                            +
                            posted on by
                            +

                            +

                            +
                            + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_list.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_list.html new file mode 100644 index 0000000..a686a4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_list.html @@ -0,0 +1,9 @@ + +{% load dojox.dtl.contrib.dijit %} + +
                              + +
                            • {{ blog.title }}
                            • + +
                            + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_page.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_page.html new file mode 100644 index 0000000..63ef126 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/blog_page.html @@ -0,0 +1,7 @@ + +{% load dojox.dtl.contrib.dom %} + +
                            + +
                            + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/gallery.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/gallery.html new file mode 100644 index 0000000..5c9cdb8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/gallery.html @@ -0,0 +1,16 @@ +{% load dojox.dtl.contrib.data %} +{% bind_data items to store as flickr %} +
                            + Type a tag and press enter: + + + {% for item in flickr %}{% endfor %} + + + + + +
                            + {% if selected %}{% endif %} +
                            +
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/nodelist.html b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/nodelist.html new file mode 100644 index 0000000..ddf7def --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/demos/templates/nodelist.html @@ -0,0 +1,5 @@ +
                            +
                              + {% for item in items %}
                            • {{ item }}
                            • {% endfor %} +
                            +
                            \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/dom.js b/js/dojo-release-1.7.2-src/dojox/dtl/dom.js new file mode 100755 index 0000000..6124f28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/dom.js @@ -0,0 +1,1049 @@ +define([ + "dojo/_base/lang", + "./_base", + "dojox/string/tokenize", + "./Context", + "dojo/dom", + "dojo/dom-construct", + "dojo/_base/html", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/sniff" +], function(lang,dd,Tokenize,context,dom,domconstruct,html,array,connect,has){ + /*===== + Tokenize = dojox.string.tokenize; + dd = dojox.dtl; + =====*/ + dd.BOOLS = {checked: 1, disabled: 1, readonly: 1}; + dd.TOKEN_CHANGE = -11; + dd.TOKEN_ATTR = -12; + dd.TOKEN_CUSTOM = -13; + dd.TOKEN_NODE = 1; + + var ddt = dd.text; + var ddh = dd.dom = { + _attributes: {}, + _uppers: {}, + _re4: /^function anonymous\(\)\s*{\s*(.*)\s*}$/, + _reTrim: /(?:^[\n\s]*(\{%)?\s*|\s*(%\})?[\n\s]*$)/g, + _reSplit: /\s*%\}[\n\s]*\{%\s*/g, + getTemplate: function(text){ + if(typeof this._commentable == "undefined"){ + // Check to see if the browser can handle comments + this._commentable = false; + var div = document.createElement("div"), comment = "Test comment handling, and long comments, using comments whenever possible."; + div.innerHTML = ""; + if(div.childNodes.length && div.firstChild.nodeType == 8 && div.firstChild.data == comment){ + this._commentable = true; + } + } + + if(!this._commentable){ + // Strip comments + text = text.replace(//g, "$1"); + } + + if(has("ie")){ + text = text.replace(/\b(checked|disabled|readonly|style)="/g, 't$1="'); + } + text = text.replace(/\bstyle="/g, 'tstyle="'); + + var match; + var table = has("webkit"); + var pairs = [ // Format: [enable, parent, allowed children (first for nesting), nestings] + [true, "select", "option"], + [table, "tr", "td|th"], + [table, "thead", "tr", "th"], + [table, "tbody", "tr", "td"], + [table, "table", "tbody|thead|tr", "tr", "td"] + ]; + var replacements = []; + // Some tags can't contain text. So we wrap the text in tags that they can have. + for(var i = 0, pair; pair = pairs[i]; i++){ + if(!pair[0]){ + continue; + } + if(text.indexOf("<" + pair[1]) != -1){ + var selectRe = new RegExp("<" + pair[1] + "(?:.|\n)*?>((?:.|\n)+?)", "ig"); + tagLoop: while(match = selectRe.exec(text)){ + // Do it like this to make sure we don't double-wrap + var inners = pair[2].split("|"); + var innerRe = []; + for(var j = 0, inner; inner = inners[j]; j++){ + innerRe.push("<" + inner + "(?:.|\n)*?>(?:.|\n)*?"); + } + var tags = []; + var tokens = Tokenize(match[1], new RegExp("(" + innerRe.join("|") + ")", "ig"), function(data){ + var tag = /<(\w+)/.exec(data)[1]; + if(!tags[tag]){ + tags[tag] = true; + tags.push(tag); + } + return {data: data}; + }); + if(tags.length){ + var tag = (tags.length == 1) ? tags[0] : pair[2].split("|")[0]; + + var replace = []; + for(var j = 0, jl = tokens.length; j < jl; j++) { + var token = tokens[j]; + if(lang.isObject(token)){ + replace.push(token.data); + }else{ + var stripped = token.replace(this._reTrim, ""); + if(!stripped){ continue; } + token = stripped.split(this._reSplit); + for(var k = 0, kl = token.length; k < kl; k++){ + var replacement = ""; + for(var p = 2, pl = pair.length; p < pl; p++){ + if(p == 2){ + replacement += "<" + tag + ' dtlinstruction="{% ' + token[k].replace('"', '\\"') + ' %}">'; + }else if(tag == pair[p]) { + continue; + }else{ + replacement += "<" + pair[p] + ">"; + } + } + replacement += "DTL"; + for(var p = pair.length - 1; p > 1; p--){ + if(p == 2){ + replacement += ""; + }else if(tag == pair[p]) { + continue; + }else{ + replacement += ""; + } + } + replace.push("\xFF" + replacements.length); + replacements.push(replacement); + } + } + } + text = text.replace(match[1], replace.join("")); + } + } + } + } + + for(var i = replacements.length; i--;){ + text = text.replace("\xFF" + i, replacements[i]); + } + + var re = /\b([a-zA-Z_:][a-zA-Z0-9_\-\.:]*)=['"]/g; + while(match = re.exec(text)){ + var lower = match[1].toLowerCase(); + if(lower == "dtlinstruction"){ continue; } + if(lower != match[1]){ + this._uppers[lower] = match[1]; + } + this._attributes[lower] = true; + } + var div = document.createElement("div"); + div.innerHTML = text; + var output = {nodes: []}; + while(div.childNodes.length){ + output.nodes.push(div.removeChild(div.childNodes[0])) + } + + return output; + }, + tokenize: function(/*Node*/ nodes){ + var tokens = []; + + for(var i = 0, node; node = nodes[i++];){ + if(node.nodeType != 1){ + this.__tokenize(node, tokens); + }else{ + this._tokenize(node, tokens); + } + } + + return tokens; + }, + _swallowed: [], + _tokenize: function(/*Node*/ node, /*Array*/ tokens){ + var first = false; + var swallowed = this._swallowed; + var i, j, tag, child; + + if(!tokens.first){ + // Try to efficiently associate tags that use an attribute to + // remove the node from DOM (eg dojoType) so that we can efficiently + // locate them later in the tokenizing. + first = tokens.first = true; + var tags = dd.register.getAttributeTags(); + for(i = 0; tag = tags[i]; i++){ + try{ + (tag[2])({ swallowNode: function(){ throw 1; }}, new dd.Token(dd.TOKEN_ATTR, "")); + }catch(e){ + swallowed.push(tag); + } + } + } + + for(i = 0; tag = swallowed[i]; i++){ + var text = node.getAttribute(tag[0]); + if(text){ + var swallowed = false; + var custom = (tag[2])({ swallowNode: function(){ swallowed = true; return node; }}, new dd.Token(dd.TOKEN_ATTR, tag[0] + " " + text)); + if(swallowed){ + if(node.parentNode && node.parentNode.removeChild){ + node.parentNode.removeChild(node); + } + tokens.push([dd.TOKEN_CUSTOM, custom]); + return; + } + } + } + + var children = []; + if(has("ie") && node.tagName == "SCRIPT"){ + children.push({ + nodeType: 3, + data: node.text + }); + node.text = ""; + }else{ + for(i = 0; child = node.childNodes[i]; i++){ + children.push(child); + } + } + + tokens.push([dd.TOKEN_NODE, node]); + + var change = false; + if(children.length){ + // Only do a change request if we need to + tokens.push([dd.TOKEN_CHANGE, node]); + change = true; + } + + for(var key in this._attributes){ + var clear = false; + + var value = ""; + if(key == "class"){ + value = node.className || value; + }else if(key == "for"){ + value = node.htmlFor || value; + }else if(key == "value" && node.value == node.innerHTML){ + // Sometimes .value is set the same as the contents of the item (button) + continue; + }else if(node.getAttribute){ + value = node.getAttribute(key, 2) || value; + if(key == "href" || key == "src"){ + if(has("ie")){ + var hash = location.href.lastIndexOf(location.hash); + var href = location.href.substring(0, hash).split("/"); + href.pop(); + href = href.join("/") + "/"; + if(value.indexOf(href) == 0){ + value = value.replace(href, ""); + } + value = decodeURIComponent(value); + } + }else if(key == "tstyle"){ + clear = key; // Placeholder because we can't use style + key = "style"; + }else if(dd.BOOLS[key.slice(1)] && lang.trim(value)){ + key = key.slice(1); + }else if(this._uppers[key] && lang.trim(value)){ + clear = this._uppers[key]; // Replaced by lowercase + } + } + + if(clear){ + // Clear out values that are different than will + // be used in plugins + node.setAttribute(clear, ""); + node.removeAttribute(clear); + } + + if(typeof value == "function"){ + value = value.toString().replace(this._re4, "$1"); + } + + if(!change){ + // Only do a change request if we need to + tokens.push([dd.TOKEN_CHANGE, node]); + change = true; + } + + // We'll have to resolve attributes during parsing (some ref plugins) + + tokens.push([dd.TOKEN_ATTR, node, key, value]); + } + + for(i = 0, child; child = children[i]; i++){ + if(child.nodeType == 1){ + var instruction = child.getAttribute("dtlinstruction"); + if(instruction){ + child.parentNode.removeChild(child); + child = { + nodeType: 8, + data: instruction + }; + } + } + this.__tokenize(child, tokens); + } + + if(!first && node.parentNode && node.parentNode.tagName){ + if(change){ + tokens.push([dd.TOKEN_CHANGE, node, true]); + } + tokens.push([dd.TOKEN_CHANGE, node.parentNode]); + node.parentNode.removeChild(node); + }else{ + // If this node is parentless, it's a base node, so we have to "up" change to itself + // and note that it's a top-level to watch for errors + tokens.push([dd.TOKEN_CHANGE, node, true, true]); + } + }, + __tokenize: function(child, tokens){ + var data = child.data; + switch(child.nodeType){ + case 1: + this._tokenize(child, tokens); + return; + case 3: + if(data.match(/[^\s\n]/) && (data.indexOf("{{") != -1 || data.indexOf("{%") != -1)){ + var texts = ddt.tokenize(data); + for(var j = 0, text; text = texts[j]; j++){ + if(typeof text == "string"){ + tokens.push([dd.TOKEN_TEXT, text]); + }else{ + tokens.push(text); + } + } + }else{ + tokens.push([child.nodeType, child]); + } + if(child.parentNode) child.parentNode.removeChild(child); + return; + case 8: + if(data.indexOf("{%") == 0){ + var text = lang.trim(data.slice(2, -2)); + if(text.substr(0, 5) == "load "){ + var parts = lang.trim(text).split(/\s+/g); + for(var i = 1, part; part = parts[i]; i++){ + if (/\./.test(part)){ + part = part.replace(/\./g,"/"); + } + require([part]); + } + } + tokens.push([dd.TOKEN_BLOCK, text]); + } + if(data.indexOf("{{") == 0){ + tokens.push([dd.TOKEN_VAR, lang.trim(data.slice(2, -2))]); + } + if(child.parentNode) child.parentNode.removeChild(child); + return; + } + } + }; + + dd.DomTemplate = lang.extend(function(/*String|DOMNode|dojo._Url*/ obj){ + // summary: The template class for DOM templating. + if(!obj.nodes){ + var node = dom.byId(obj); + if(node && node.nodeType == 1){ + array.forEach(["class", "src", "href", "name", "value"], function(item){ + ddh._attributes[item] = true; + }); + obj = { + nodes: [node] + }; + }else{ + if(typeof obj == "object"){ + obj = ddt.getTemplateString(obj); + } + obj = ddh.getTemplate(obj); + } + } + + var tokens = ddh.tokenize(obj.nodes); + if(dd.tests){ + this.tokens = tokens.slice(0); + } + + var parser = new dd._DomParser(tokens); + this.nodelist = parser.parse(); + }, + { + _count: 0, + _re: /\bdojo:([a-zA-Z0-9_]+)\b/g, + setClass: function(/*String*/str){ + // summary: Sets the specified class name on the root node. + this.getRootNode().className = str; + }, + getRootNode: function(){ + // summary: Returns the template root node. + return this.buffer.rootNode; + }, + getBuffer: function(){ + // summary: Returns a new buffer. + return new dd.DomBuffer(); + }, + render: function(/*dojox.dtl.Context?*/context, /*concatenable?*/buffer){ + // summary: Renders this template. + buffer = this.buffer = buffer || this.getBuffer(); + this.rootNode = null; + var output = this.nodelist.render(context || new dd.Context({}), buffer); + for(var i = 0, node; node = buffer._cache[i]; i++){ + if(node._cache){ + node._cache.length = 0; + } + } + return output; + }, + unrender: function(context, buffer){ + return this.nodelist.unrender(context, buffer); + } + }); + + dd.DomBuffer = lang.extend(function(/*Node*/ parent){ + // summary: Allows the manipulation of DOM + // description: + // Use this to append a child, change the parent, or + // change the attribute of the current node. + this._parent = parent; + this._cache = []; + }, + { + concat: function(/*DOMNode*/ node){ + var parent = this._parent; + if(parent && node.parentNode && node.parentNode === parent && !parent._dirty){ + return this; + } + + if(node.nodeType == 1 && !this.rootNode){ + this.rootNode = node || true; + return this; + } + + if(!parent){ + if(node.nodeType == 3 && lang.trim(node.data)){ + throw new Error("Text should not exist outside of the root node in template"); + } + return this; + } + if(this._closed){ + if(node.nodeType == 3 && !lang.trim(node.data)){ + return this; + }else{ + throw new Error("Content should not exist outside of the root node in template"); + } + } + if(parent._dirty){ + if(node._drawn && node.parentNode == parent){ + var caches = parent._cache; + if(caches){ + for(var i = 0, cache; cache = caches[i]; i++){ + this.onAddNode && this.onAddNode(cache); + parent.insertBefore(cache, node); + this.onAddNodeComplete && this.onAddNodeComplete(cache); + } + caches.length = 0; + } + } + parent._dirty = false; + } + if(!parent._cache){ + parent._cache = []; + this._cache.push(parent); + } + parent._dirty = true; + parent._cache.push(node); + return this; + }, + remove: function(/*String|DomNode*/obj){ + if(typeof obj == "string"){ + if(this._parent){ + this._parent.removeAttribute(obj); + } + }else{ + if(obj.nodeType == 1 && !this.getRootNode() && !this._removed){ + this._removed = true; + return this; + } + if(obj.parentNode){ + this.onRemoveNode && this.onRemoveNode(obj); + if(obj.parentNode){ + obj.parentNode.removeChild(obj); + } + } + } + return this; + }, + setAttribute: function(key, value){ + var old = html.attr(this._parent, key); + if(this.onChangeAttribute && old != value){ + this.onChangeAttribute(this._parent, key, old, value); + } + if(key == "style"){ + //console.log(value); + this._parent.style.cssText = value; + }else{ + html.attr(this._parent, key, value); + //console.log(this._parent, key, value); + if(key == "value"){ + this._parent.setAttribute(key, value); + } + } + return this; + }, + addEvent: function(context, type, fn, /*Array|Function*/ args){ + if(!context.getThis()){ throw new Error("You must use Context.setObject(instance)"); } + this.onAddEvent && this.onAddEvent(this.getParent(), type, fn); + var resolved = fn; + if(lang.isArray(args)){ + resolved = function(e){ + this[fn].apply(this, [e].concat(args)); + } + } + return connect.connect(this.getParent(), type, context.getThis(), resolved); + }, + setParent: function(node, /*Boolean?*/ up, /*Boolean?*/ root){ + if(!this._parent) this._parent = this._first = node; + + if(up && root && node === this._first){ + this._closed = true; + } + + if(up){ + var parent = this._parent; + var script = ""; + var ie = has("ie") && parent.tagName == "SCRIPT"; + if(ie){ + parent.text = ""; + } + if(parent._dirty){ + var caches = parent._cache; + var select = (parent.tagName == "SELECT" && !parent.options.length); + for(var i = 0, cache; cache = caches[i]; i++){ + if(cache !== parent){ + this.onAddNode && this.onAddNode(cache); + if(ie){ + script += cache.data; + }else{ + parent.appendChild(cache); + if(select && cache.defaultSelected && i){ + select = i; + } + } + this.onAddNodeComplete && this.onAddNodeComplete(cache); + } + } + if(select){ + parent.options.selectedIndex = (typeof select == "number") ? select : 0; + } + caches.length = 0; + parent._dirty = false; + } + if(ie){ + parent.text = script; + } + } + + this._parent = node; + this.onSetParent && this.onSetParent(node, up, root); + return this; + }, + getParent: function(){ + return this._parent; + }, + getRootNode: function(){ + return this.rootNode; + } + /*===== + , + onSetParent: function(node, up){ + // summary: Stub called when setParent is used. + }, + onAddNode: function(node){ + // summary: Stub called before new nodes are added + }, + onAddNodeComplete: function(node){ + // summary: Stub called after new nodes are added + }, + onRemoveNode: function(node){ + // summary: Stub called when nodes are removed + }, + onChangeAttribute: function(node, attribute, old, updated){ + // summary: Stub called when an attribute is changed + }, + onChangeData: function(node, old, updated){ + // summary: Stub called when a data in a node is changed + }, + onClone: function(from, to){ + // summary: Stub called when a node is duplicated + // from: DOMNode + // to: DOMNode + }, + onAddEvent: function(node, type, description){ + // summary: Stub to call when you're adding an event + // node: DOMNode + // type: String + // description: String + } + =====*/ + }); + + dd._DomNode = lang.extend(function(node){ + // summary: Places a node into DOM + this.contents = node; + }, + { + render: function(context, buffer){ + this._rendered = true; + return buffer.concat(this.contents); + }, + unrender: function(context, buffer){ + if(!this._rendered){ + return buffer; + } + this._rendered = false; + return buffer.remove(this.contents); + }, + clone: function(buffer){ + return new this.constructor(this.contents); + } + }); + + dd._DomNodeList = lang.extend(function(/*Node[]*/ nodes){ + // summary: A list of any DOM-specific node objects + // description: + // Any object that's used in the constructor or added + // through the push function much implement the + // render, unrender, and clone functions. + this.contents = nodes || []; + }, + { + push: function(node){ + this.contents.push(node); + }, + unshift: function(node){ + this.contents.unshift(node); + }, + render: function(context, buffer, /*Node*/ instance){ + buffer = buffer || dd.DomTemplate.prototype.getBuffer(); + + if(instance){ + var parent = buffer.getParent(); + } + for(var i = 0; i < this.contents.length; i++){ + buffer = this.contents[i].render(context, buffer); + if(!buffer) throw new Error("Template node render functions must return their buffer"); + } + if(parent){ + buffer.setParent(parent); + } + return buffer; + }, + dummyRender: function(context, buffer, asNode){ + // summary: A really expensive way of checking to see how a rendering will look. + // Used in the ifchanged tag + var div = document.createElement("div"); + + var parent = buffer.getParent(); + var old = parent._clone; + // Tell the clone system to attach itself to our new div + parent._clone = div; + var nodelist = this.clone(buffer, div); + if(old){ + // Restore state if there was a previous clone + parent._clone = old; + }else{ + // Remove if there was no clone + parent._clone = null; + } + + buffer = dd.DomTemplate.prototype.getBuffer(); + nodelist.unshift(new dd.ChangeNode(div)); + nodelist.unshift(new dd._DomNode(div)); + nodelist.push(new dd.ChangeNode(div, true)); + nodelist.render(context, buffer); + + if(asNode){ + return buffer.getRootNode(); + } + + var html = div.innerHTML; + return (has("ie")) ? domconstruct.replace(/\s*_(dirty|clone)="[^"]*"/g, "") : html; + }, + unrender: function(context, buffer, instance){ + if(instance){ + var parent = buffer.getParent(); + } + for(var i = 0; i < this.contents.length; i++){ + buffer = this.contents[i].unrender(context, buffer); + if(!buffer) throw new Error("Template node render functions must return their buffer"); + } + if(parent){ + buffer.setParent(parent); + } + return buffer; + }, + clone: function(buffer){ + // summary: + // Used to create an identical copy of a NodeList, useful for things like the for tag. + var parent = buffer.getParent(); + var contents = this.contents; + var nodelist = new dd._DomNodeList(); + var cloned = []; + for(var i = 0; i < contents.length; i++){ + var clone = contents[i].clone(buffer); + if(clone instanceof dd.ChangeNode || clone instanceof dd._DomNode){ + var item = clone.contents._clone; + if(item){ + clone.contents = item; + }else if(parent != clone.contents && clone instanceof dd._DomNode){ + var node = clone.contents; + clone.contents = clone.contents.cloneNode(false); + buffer.onClone && buffer.onClone(node, clone.contents); + cloned.push(node); + node._clone = clone.contents; + } + } + nodelist.push(clone); + } + + for(var i = 0, clone; clone = cloned[i]; i++){ + clone._clone = null; + } + + return nodelist; + }, + rtrim: function(){ + while(1){ + var i = this.contents.length - 1; + if(this.contents[i] instanceof dd._DomTextNode && this.contents[i].isEmpty()){ + this.contents.pop(); + }else{ + break; + } + } + + return this; + } + }); + + dd._DomVarNode = lang.extend(function(str){ + // summary: A node to be processed as a variable + // description: + // Will render an object that supports the render function + // and the getRootNode function + this.contents = new dd._Filter(str); + }, + { + render: function(context, buffer){ + var str = this.contents.resolve(context); + + // What type of rendering? + var type = "text"; + if(str){ + if(str.render && str.getRootNode){ + type = "injection"; + }else if(str.safe){ + if(str.nodeType){ + type = "node"; + }else if(str.toString){ + str = str.toString(); + type = "html"; + } + } + } + + // Has the typed changed? + if(this._type && type != this._type){ + this.unrender(context, buffer); + } + this._type = type; + + // Now render + switch(type){ + case "text": + this._rendered = true; + this._txt = this._txt || document.createTextNode(str); + if(this._txt.data != str){ + var old = this._txt.data; + this._txt.data = str; + buffer.onChangeData && buffer.onChangeData(this._txt, old, this._txt.data); + } + return buffer.concat(this._txt); + case "injection": + var root = str.getRootNode(); + + if(this._rendered && root != this._root){ + buffer = this.unrender(context, buffer); + } + this._root = root; + + var injected = this._injected = new dd._DomNodeList(); + injected.push(new dd.ChangeNode(buffer.getParent())); + injected.push(new dd._DomNode(root)); + injected.push(str); + injected.push(new dd.ChangeNode(buffer.getParent())); + this._rendered = true; + + return injected.render(context, buffer); + case "node": + this._rendered = true; + if(this._node && this._node != str && this._node.parentNode && this._node.parentNode === buffer.getParent()){ + this._node.parentNode.removeChild(this._node); + } + this._node = str; + return buffer.concat(str); + case "html": + if(this._rendered && this._src != str){ + buffer = this.unrender(context, buffer); + } + this._src = str; + + // This can get reset in the above tag + if(!this._rendered){ + this._rendered = true; + this._html = this._html || []; + var div = (this._div = this._div || document.createElement("div")); + div.innerHTML = str; + var children = div.childNodes; + while(children.length){ + var removed = div.removeChild(children[0]); + this._html.push(removed); + buffer = buffer.concat(removed); + } + } + + return buffer; + default: + return buffer; + } + }, + unrender: function(context, buffer){ + if(!this._rendered){ + return buffer; + } + this._rendered = false; + + // Unrender injected nodes + switch(this._type){ + case "text": + return buffer.remove(this._txt); + case "injection": + return this._injection.unrender(context, buffer); + case "node": + if(this._node.parentNode === buffer.getParent()){ + return buffer.remove(this._node); + } + return buffer; + case "html": + for(var i = 0, l = this._html.length; i < l; i++){ + buffer = buffer.remove(this._html[i]); + } + return buffer; + default: + return buffer; + } + }, + clone: function(){ + return new this.constructor(this.contents.getExpression()); + } + }); + + dd.ChangeNode = lang.extend(function(node, /*Boolean?*/ up, /*Bookean*/ root){ + // summary: Changes the parent during render/unrender + this.contents = node; + this.up = up; + this.root = root; + }, + { + render: function(context, buffer){ + return buffer.setParent(this.contents, this.up, this.root); + }, + unrender: function(context, buffer){ + if(!buffer.getParent()){ + return buffer; + } + return buffer.setParent(this.contents); + }, + clone: function(){ + return new this.constructor(this.contents, this.up, this.root); + } + }); + + dd.AttributeNode = lang.extend(function(key, value){ + // summary: Works on attributes + this.key = key; + this.value = value; + this.contents = value; + if(this._pool[value]){ + this.nodelist = this._pool[value]; + }else{ + if(!(this.nodelist = dd.quickFilter(value))){ + this.nodelist = (new dd.Template(value, true)).nodelist; + } + this._pool[value] = this.nodelist; + } + + this.contents = ""; + }, + { + _pool: {}, + render: function(context, buffer){ + var key = this.key; + var value = this.nodelist.dummyRender(context); + if(dd.BOOLS[key]){ + value = !(value == "false" || value == "undefined" || !value); + } + if(value !== this.contents){ + this.contents = value; + return buffer.setAttribute(key, value); + } + return buffer; + }, + unrender: function(context, buffer){ + this.contents = ""; + return buffer.remove(this.key); + }, + clone: function(buffer){ + return new this.constructor(this.key, this.value); + } + }); + + dd._DomTextNode = lang.extend(function(str){ + // summary: Adds a straight text node without any processing + this.contents = document.createTextNode(str); + this.upcoming = str; + }, + { + set: function(data){ + this.upcoming = data; + return this; + }, + render: function(context, buffer){ + if(this.contents.data != this.upcoming){ + var old = this.contents.data; + this.contents.data = this.upcoming; + buffer.onChangeData && buffer.onChangeData(this.contents, old, this.upcoming); + } + return buffer.concat(this.contents); + }, + unrender: function(context, buffer){ + return buffer.remove(this.contents); + }, + isEmpty: function(){ + return !lang.trim(this.contents.data); + }, + clone: function(){ + return new this.constructor(this.contents.data); + } + }); + + dd._DomParser = lang.extend(function(tokens){ + // summary: Turn a simple array into a set of objects + // description: + // This is also used by all tags to move through + // the list of nodes. + this.contents = tokens; + }, + { + i: 0, + parse: function(/*Array?*/ stop_at){ + var terminators = {}; + var tokens = this.contents; + if(!stop_at){ + stop_at = []; + } + for(var i = 0; i < stop_at.length; i++){ + terminators[stop_at[i]] = true; + } + var nodelist = new dd._DomNodeList(); + while(this.i < tokens.length){ + var token = tokens[this.i++]; + var type = token[0]; + var value = token[1]; + if(type == dd.TOKEN_CUSTOM){ + nodelist.push(value); + }else if(type == dd.TOKEN_CHANGE){ + var changeNode = new dd.ChangeNode(value, token[2], token[3]); + value[changeNode.attr] = changeNode; + nodelist.push(changeNode); + }else if(type == dd.TOKEN_ATTR){ + var fn = ddt.getTag("attr:" + token[2], true); + if(fn && token[3]){ + if (token[3].indexOf("{%") != -1 || token[3].indexOf("{{") != -1) { + value.setAttribute(token[2], ""); + } + nodelist.push(fn(null, new dd.Token(type, token[2] + " " + token[3]))); + }else if(lang.isString(token[3])){ + if(token[2] == "style" || token[3].indexOf("{%") != -1 || token[3].indexOf("{{") != -1){ + nodelist.push(new dd.AttributeNode(token[2], token[3])); + }else if(lang.trim(token[3])){ + try{ + html.attr(value, token[2], token[3]); + }catch(e){} + } + } + }else if(type == dd.TOKEN_NODE){ + var fn = ddt.getTag("node:" + value.tagName.toLowerCase(), true); + if(fn){ + // TODO: We need to move this to tokenization so that it's before the + // node and the parser can be passed here instead of null + nodelist.push(fn(null, new dd.Token(type, value), value.tagName.toLowerCase())); + } + nodelist.push(new dd._DomNode(value)); + }else if(type == dd.TOKEN_VAR){ + nodelist.push(new dd._DomVarNode(value)); + }else if(type == dd.TOKEN_TEXT){ + nodelist.push(new dd._DomTextNode(value.data || value)); + }else if(type == dd.TOKEN_BLOCK){ + if(terminators[value]){ + --this.i; + return nodelist; + } + var cmd = value.split(/\s+/g); + if(cmd.length){ + cmd = cmd[0]; + var fn = ddt.getTag(cmd); + if(typeof fn != "function"){ + throw new Error("Function not found for " + cmd); + } + var tpl = fn(this, new dd.Token(type, value)); + if(tpl){ + nodelist.push(tpl); + } + } + } + } + + if(stop_at.length){ + throw new Error("Could not find closing tag(s): " + stop_at.toString()); + } + + return nodelist; + }, + next_token: function(){ + // summary: Returns the next token in the list. + var token = this.contents[this.i++]; + return new dd.Token(token[0], token[1]); + }, + delete_first_token: function(){ + this.i++; + }, + skip_past: function(endtag){ + return dd._Parser.prototype.skip_past.call(this, endtag); + }, + create_variable_node: function(expr){ + return new dd._DomVarNode(expr); + }, + create_text_node: function(expr){ + return new dd._DomTextNode(expr || ""); + }, + getTemplate: function(/*String*/ loc){ + return new dd.DomTemplate(ddh.getTemplate(loc)); + } + }); + return dojox.dtl.dom; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/ext-dojo/NodeList.js b/js/dojo-release-1.7.2-src/dojox/dtl/ext-dojo/NodeList.js new file mode 100755 index 0000000..99ffbce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/ext-dojo/NodeList.js @@ -0,0 +1,40 @@ +define([ + "dojo/_base/lang", + "dojo/_base/NodeList", + "../_base" +], function(lang,Nodelist,dd){ + /*===== + Nodelist = dojo.Nodelist; + dd = dojox.dtl; + =====*/ + + var nl = lang.getObject("dojox.dtl.ext-dojo.NodeList", true); + + lang.extend(Nodelist, { + dtl: function(template, context){ + // summary: Renders the specified template in each of the Nodelist entries. + // template: dojox.dtl.__StringArgs|String + // The template string or location + // context: dojox.dtl.__ObjectArgs|Object + // The context object or location + var d = dd, self = this; + + var render = function(template, context){ + var content = template.render(new d._Context(context)); + self.forEach(function(node){ + node.innerHTML = content; + }); + } + + d.text._resolveTemplateArg(template).addCallback(function(templateString){ + template = new d.Template(templateString); + d.text._resolveContextArg(context).addCallback(function(context){ + render(template, context); + }); + }); + + return this; + } + }); + return nl; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/filter/dates.js b/js/dojo-release-1.7.2-src/dojox/dtl/filter/dates.js new file mode 100644 index 0000000..6d34fa4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/filter/dates.js @@ -0,0 +1,67 @@ +define([ + "dojo/_base/lang", + "../_base", + "../utils/date" +], function(lang,dd,ddud){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.filter.dates", true); + + var ddfd = dd.filter.dates; + lang.mixin(ddfd, { + _toDate: function(value){ + if(value instanceof Date){ + return value; + } + value = new Date(value); + if(value.getTime() == new Date(0).getTime()){ + return ""; + } + return value; + }, + date: function(value, arg){ + // summary: Formats a date according to the given format + value = ddfd._toDate(value); + if(!value){ + return ""; + } + arg = arg || "N j, Y"; + return ddud.format(value, arg); + }, + time: function(value, arg){ + // summary: Formats a time according to the given format + value = ddfd._toDate(value); + if(!value){ + return ""; + } + arg = arg || "P"; + return ddud.format(value, arg); + }, + timesince: function(value, arg){ + // summary: Formats a date as the time since that date (i.e. "4 days, 6 hours") + value = ddfd._toDate(value); + if(!value){ + return ""; + } + var timesince = ddud.timesince; + if(arg){ + return timesince(arg, value); + } + return timesince(value); + }, + timeuntil: function(value, arg){ + // summary: Formats a date as the time until that date (i.e. "4 days, 6 hours") + value = ddfd._toDate(value); + if(!value){ + return ""; + } + var timesince = ddud.timesince; + if(arg){ + return timesince(arg, value); + } + return timesince(new Date(), value); + } + }); + return dojox.dtl.filter.dates; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/filter/htmlstrings.js b/js/dojo-release-1.7.2-src/dojox/dtl/filter/htmlstrings.js new file mode 100644 index 0000000..7dd9f1e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/filter/htmlstrings.js @@ -0,0 +1,52 @@ +define([ + "dojo/_base/lang", + "../_base" +], function(lang,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.filter.htmlstrings", true); + + lang.mixin(dd.filter.htmlstrings, { + _linebreaksrn: /(\r\n|\n\r)/g, + _linebreaksn: /\n{2,}/g, + _linebreakss: /(^\s+|\s+$)/g, + _linebreaksbr: /\n/g, + _removetagsfind: /[a-z0-9]+/g, + _striptags: /<[^>]*?>/g, + linebreaks: function(value){ + // summary: Converts newlines into

                            and
                            s + var output = []; + var dh = dd.filter.htmlstrings; + value = value.replace(dh._linebreaksrn, "\n"); + var parts = value.split(dh._linebreaksn); + for(var i = 0; i < parts.length; i++){ + var part = parts[i].replace(dh._linebreakss, "").replace(dh._linebreaksbr, "
                            "); + output.push("

                            " + part + "

                            "); + } + + return output.join("\n\n"); + }, + linebreaksbr: function(value){ + // summary: Converts newlines into
                            s + var dh = dd.filter.htmlstrings; + return value.replace(dh._linebreaksrn, "\n").replace(dh._linebreaksbr, "
                            "); + }, + removetags: function(value, arg){ + // summary: Removes a space separated list of [X]HTML tags from the output" + var dh = dd.filter.htmlstrings; + var tags = []; + var group; + while(group = dh._removetagsfind.exec(arg)){ + tags.push(group[0]); + } + tags = "(" + tags.join("|") + ")"; + return value.replace(new RegExp("]*>", "gi"), ""); + }, + striptags: function(value){ + // summary: Strips all [X]HTML tags + return value.replace(dojox.dtl.filter.htmlstrings._striptags, ""); + } + }); + return dojox.dtl.filter.htmlstrings; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/filter/integers.js b/js/dojo-release-1.7.2-src/dojox/dtl/filter/integers.js new file mode 100644 index 0000000..92a6265 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/filter/integers.js @@ -0,0 +1,37 @@ +define([ + "dojo/_base/lang", + "../_base" +], function(lang,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.filter.integers", true); + + lang.mixin(dd.filter.integers, { + add: function(value, arg){ + value = parseInt(value, 10); + arg = parseInt(arg, 10); + return isNaN(arg) ? value : value + arg; + }, + get_digit: function(value, arg){ + // summary: + // Given a whole number, returns the 1-based requested digit of it + // desciprtion: + // 1 is the right-most digit, 2 is the second-right-most digit, etc. Returns the + // original value for invalid input (if input or argument is not an integer, + // or if argument is less than 1). Otherwise, output is always an integer. + value = parseInt(value, 10); + arg = parseInt(arg, 10) - 1; + if(arg >= 0){ + value += ""; + if(arg < value.length){ + value = parseInt(value.charAt(arg), 10); + }else{ + value = 0; + } + } + return (isNaN(value) ? 0 : value); + } + }); + return dojox.dtl.filter.integers; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/filter/lists.js b/js/dojo-release-1.7.2-src/dojox/dtl/filter/lists.js new file mode 100644 index 0000000..a55b26e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/filter/lists.js @@ -0,0 +1,144 @@ +define([ + "dojo/_base/lang", + "../_base" +], function(lang,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.filter.lists", true); + + lang.mixin(dd.filter.lists, { + _dictsort: function(a, b){ + if(a[0] == b[0]){ + return 0; + } + return (a[0] < b[0]) ? -1 : 1; + }, + dictsort: function(value, arg){ + // summary: Takes a list of dicts, returns that list sorted by the property given in the argument. + if(!arg){ + return value; + } + + var i, item, items = []; + if(!lang.isArray(value)){ + var obj = value, value = []; + for(var key in obj){ + value.push(obj[key]); + } + } + for(i = 0; i < value.length; i++){ + items.push([new dojox.dtl._Filter('var.' + arg).resolve(new dojox.dtl._Context({ 'var' : value[i]})), value[i]]); + } + items.sort(dojox.dtl.filter.lists._dictsort); + var output = []; + for(i = 0; item = items[i]; i++){ + output.push(item[1]); + } + return output; + }, + dictsortreversed: function(value, arg){ + // summary: Takes a list of dicts, returns that list sorted in reverse order by the property given in the argument. + if(!arg) return value; + + var dictsort = dojox.dtl.filter.lists.dictsort(value, arg); + return dictsort.reverse(); + }, + first: function(value){ + // summary: Returns the first item in a list + return (value.length) ? value[0] : ""; + }, + join: function(value, arg){ + // summary: Joins a list with a string, like Python's ``str.join(list)`` + // description: + // Django throws a compile error, but JS can't do arg checks + // so we're left with run time errors, which aren't wise for something + // as trivial here as an empty arg. + return value.join(arg || ","); + }, + length: function(value){ + // summary: Returns the length of the value - useful for lists + return (isNaN(value.length)) ? (value + "").length : value.length; + }, + length_is: function(value, arg){ + // summary: Returns a boolean of whether the value's length is the argument + return value.length == parseInt(arg); + }, + random: function(value){ + // summary: Returns a random item from the list + return value[Math.floor(Math.random() * value.length)]; + }, + slice: function(value, arg){ + // summary: Returns a slice of the list. + // description: + // Uses the same syntax as Python's list slicing; see + // http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice + // for an introduction. + // Also uses the optional third value to denote every X item. + arg = arg || ""; + var parts = arg.split(":"); + var bits = []; + for(var i = 0; i < parts.length; i++){ + if(!parts[i].length){ + bits.push(null); + }else{ + bits.push(parseInt(parts[i])); + } + } + + if(bits[0] === null){ + bits[0] = 0; + } + if(bits[0] < 0){ + bits[0] = value.length + bits[0]; + } + if(bits.length < 2 || bits[1] === null){ + bits[1] = value.length; + } + if(bits[1] < 0){ + bits[1] = value.length + bits[1]; + } + + return value.slice(bits[0], bits[1]); + }, + _unordered_list: function(value, tabs){ + var ddl = dojox.dtl.filter.lists; + var i, indent = ""; + for(i = 0; i < tabs; i++){ + indent += "\t"; + } + if(value[1] && value[1].length){ + var recurse = []; + for(i = 0; i < value[1].length; i++){ + recurse.push(ddl._unordered_list(value[1][i], tabs + 1)) + } + return indent + "
                          • " + value[0] + "\n" + indent + "
                              \n" + recurse.join("\n") + "\n" + indent + "
                            \n" + indent + "
                          • "; + }else{ + return indent + "
                          • " + value[0] + "
                          • "; + } + }, + unordered_list: function(value){ + // summary: + // Recursively takes a self-nested list and returns an HTML unordered list -- + // WITHOUT opening and closing
                              tags. + // description: + // The list is assumed to be in the proper format. For example, if ``var`` contains + // ``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``, + // then ``{{ var|unordered_list }}`` would return:: + // + // |
                            • States + // |
                                + // |
                              • Kansas + // |
                                  + // |
                                • Lawrence
                                • + // |
                                • Topeka
                                • + // |
                                + // |
                              • + // |
                              • Illinois
                              • + // |
                              + // |
                            • + return dojox.dtl.filter.lists._unordered_list(value, 1); + } + }); + return dojox.dtl.filter.lists; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/filter/logic.js b/js/dojo-release-1.7.2-src/dojox/dtl/filter/logic.js new file mode 100644 index 0000000..94cf950 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/filter/logic.js @@ -0,0 +1,45 @@ +define([ + "dojo/_base/lang", + "../_base" +], function(lang,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.filter.logic", true); + + lang.mixin(dd.filter.logic, { + default_: function(value, arg){ + // summary: If value is unavailable, use given default + return value || arg || ""; + }, + default_if_none: function(value, arg){ + // summary: If value is null, use given default + return (value === null) ? arg || "" : value || ""; + }, + divisibleby: function(value, arg){ + // summary: Returns true if the value is devisible by the argument" + return (parseInt(value, 10) % parseInt(arg, 10)) === 0; + }, + _yesno: /\s*,\s*/g, + yesno: function(value, arg){ + // summary: + // arg being a comma-delimited string, value of true/false/none + // chooses the appropriate item from the string + if(!arg){ + arg = 'yes,no,maybe'; + } + var parts = arg.split(dojox.dtl.filter.logic._yesno); + if(parts.length < 2){ + return value; + } + if(value){ + return parts[0]; + } + if((!value && value !== null) || parts.length < 3){ + return parts[1]; + } + return parts[2]; + } + }); + return dojox.dtl.filter.logic; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/filter/misc.js b/js/dojo-release-1.7.2-src/dojox/dtl/filter/misc.js new file mode 100644 index 0000000..3c8d0e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/filter/misc.js @@ -0,0 +1,65 @@ +define([ + "dojo/_base/lang", + "dojo/_base/json", // dojo.toJson + "../_base" +], function(lang,json,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.filter.misc", true); + + lang.mixin(dd.filter.misc, { + filesizeformat: function(value){ + // summary: Format the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB, 102bytes, etc). + value = parseFloat(value); + if(value < 1024){ + return (value == 1) ? value + " byte" : value + " bytes"; + }else if(value < 1024 * 1024){ + return (value / 1024).toFixed(1) + " KB"; + }else if(value < 1024 * 1024 * 1024){ + return (value / 1024 / 1024).toFixed(1) + " MB"; + } + return (value / 1024 / 1024 / 1024).toFixed(1) + " GB"; + }, + pluralize: function(value, arg){ + // summary: + // Returns a plural suffix if the value is not 1, for '1 vote' vs. '2 votes' + // description: + // By default, 's' is used as a suffix; if an argument is provided, that string + // is used instead. If the provided argument contains a comma, the text before + // the comma is used for the singular case. + arg = arg || 's'; + if(arg.indexOf(",") == -1){ + arg = "," + arg; + } + var parts = arg.split(","); + if(parts.length > 2){ + return ""; + } + var singular = parts[0]; + var plural = parts[1]; + + if(parseInt(value, 10) != 1){ + return plural; + } + return singular; + }, + _phone2numeric: { a: 2, b: 2, c: 2, d: 3, e: 3, f: 3, g: 4, h: 4, i: 4, j: 5, k: 5, l: 5, m: 6, n: 6, o: 6, p: 7, r: 7, s: 7, t: 8, u: 8, v: 8, w: 9, x: 9, y: 9 }, + phone2numeric: function(value){ + // summary: Takes a phone number and converts it in to its numerical equivalent + var dm = dd.filter.misc; + value = value + ""; + var output = ""; + for(var i = 0; i < value.length; i++){ + var chr = value.charAt(i).toLowerCase(); + (dm._phone2numeric[chr]) ? output += dm._phone2numeric[chr] : output += value.charAt(i); + } + return output; + }, + pprint: function(value){ + // summary: A wrapper around toJson unless something better comes along + return json.toJson(value); + } + }); + return dojox.dtl.filter.misc; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/filter/strings.js b/js/dojo-release-1.7.2-src/dojox/dtl/filter/strings.js new file mode 100644 index 0000000..205869c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/filter/strings.js @@ -0,0 +1,336 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dojox/string/tokenize", + "dojox/string/sprintf", + "../filter/htmlstrings", + "../_base" +], function(lang,array,Tokenize,Sprintf,htmlstrings,dd){ + /*===== + dd = dojox.dtl; + Tokenize = dojox.string.tokenize; + Sprintf = dojox.string.sprintf; + =====*/ + lang.getObject("dojox.dtl.filter.strings", true); + + lang.mixin(dd.filter.strings, { + _urlquote: function(/*String*/ url, /*String?*/ safe){ + if(!safe){ + safe = "/"; + } + return Tokenize(url, /([^\w-_.])/g, function(token){ + if(safe.indexOf(token) == -1){ + if(token == " "){ + return "+"; + }else{ + return "%" + token.charCodeAt(0).toString(16).toUpperCase(); + } + } + return token; + }).join(""); + }, + addslashes: function(value){ + // summary: Adds slashes - useful for passing strings to JavaScript, for example. + return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/'/g, "\\'"); + }, + capfirst: function(value){ + // summary: Capitalizes the first character of the value + value = "" + value; + return value.charAt(0).toUpperCase() + value.substring(1); + }, + center: function(value, arg){ + // summary: Centers the value in a field of a given width + arg = arg || value.length; + value = value + ""; + var diff = arg - value.length; + if(diff % 2){ + value = value + " "; + diff -= 1; + } + for(var i = 0; i < diff; i += 2){ + value = " " + value + " "; + } + return value; + }, + cut: function(value, arg){ + // summary: Removes all values of arg from the given string + arg = arg + "" || ""; + value = value + ""; + return value.replace(new RegExp(arg, "g"), ""); + }, + _fix_ampersands: /&(?!(\w+|#\d+);)/g, + fix_ampersands: function(value){ + // summary: Replaces ampersands with ``&`` entities + return value.replace(dojox.dtl.filter.strings._fix_ampersands, "&"); + }, + floatformat: function(value, arg){ + // summary: Format a number according to arg + // description: + // If called without an argument, displays a floating point + // number as 34.2 -- but only if there's a point to be displayed. + // With a positive numeric argument, it displays that many decimal places + // always. + // With a negative numeric argument, it will display that many decimal + // places -- but only if there's places to be displayed. + arg = parseInt(arg || -1, 10); + value = parseFloat(value); + var m = value - value.toFixed(0); + if(!m && arg < 0){ + return value.toFixed(); + } + value = value.toFixed(Math.abs(arg)); + return (arg < 0) ? parseFloat(value) + "" : value; + }, + iriencode: function(value){ + return dojox.dtl.filter.strings._urlquote(value, "/#%[]=:;$&()+,!"); + }, + linenumbers: function(value){ + // summary: Displays text with line numbers + var df = dojox.dtl.filter; + var lines = value.split("\n"); + var output = []; + var width = (lines.length + "").length; + for(var i = 0, line; i < lines.length; i++){ + line = lines[i]; + output.push(df.strings.ljust(i + 1, width) + ". " + dojox.dtl._base.escape(line)); + } + return output.join("\n"); + }, + ljust: function(value, arg){ + value = value + ""; + arg = parseInt(arg, 10); + while(value.length < arg){ + value = value + " "; + } + return value; + }, + lower: function(value){ + // summary: Converts a string into all lowercase + return (value + "").toLowerCase(); + }, + make_list: function(value){ + // summary: + // Returns the value turned into a list. For an integer, it's a list of + // digits. For a string, it's a list of characters. + var output = []; + if(typeof value == "number"){ + value = value + ""; + } + if(value.charAt){ + for(var i = 0; i < value.length; i++){ + output.push(value.charAt(i)); + } + return output; + } + if(typeof value == "object"){ + for(var key in value){ + output.push(value[key]); + } + return output; + } + return []; + }, + rjust: function(value, arg){ + value = value + ""; + arg = parseInt(arg, 10); + while(value.length < arg){ + value = " " + value; + } + return value; + }, + slugify: function(value){ + // summary: Converts to lowercase, removes + // non-alpha chars and converts spaces to hyphens + value = value.replace(/[^\w\s-]/g, "").toLowerCase(); + return value.replace(/[\-\s]+/g, "-"); + }, + _strings: {}, + stringformat: function(value, arg){ + // summary: + // Formats the variable according to the argument, a string formatting specifier. + // This specifier uses Python string formating syntax, with the exception that + // the leading "%" is dropped. + arg = "" + arg; + var strings = dojox.dtl.filter.strings._strings; + if(!strings[arg]){ + strings[arg] = new Sprintf.Formatter("%" + arg); + } + return strings[arg].format(value); + }, + title: function(value){ + // summary: Converts a string into titlecase + var last, title = ""; + for(var i = 0, current; i < value.length; i++){ + current = value.charAt(i); + if(last == " " || last == "\n" || last == "\t" || !last){ + title += current.toUpperCase(); + }else{ + title += current.toLowerCase(); + } + last = current; + } + return title; + }, + _truncatewords: /[ \n\r\t]/, + truncatewords: function(value, arg){ + // summary: Truncates a string after a certain number of words + // arg: Integer + // Number of words to truncate after + arg = parseInt(arg, 10); + if(!arg){ + return value; + } + + for(var i = 0, j = value.length, count = 0, current, last; i < value.length; i++){ + current = value.charAt(i); + if(dojox.dtl.filter.strings._truncatewords.test(last)){ + if(!dojox.dtl.filter.strings._truncatewords.test(current)){ + ++count; + if(count == arg){ + return value.substring(0, j + 1); + } + } + }else if(!dojox.dtl.filter.strings._truncatewords.test(current)){ + j = i; + } + last = current; + } + return value; + }, + _truncate_words: /(&.*?;|<.*?>|(\w[\w\-]*))/g, + _truncate_tag: /<(\/)?([^ ]+?)(?: (\/)| .*?)?>/, + _truncate_singlets: { br: true, col: true, link: true, base: true, img: true, param: true, area: true, hr: true, input: true }, + truncatewords_html: function(value, arg){ + arg = parseInt(arg, 10); + + if(arg <= 0){ + return ""; + } + + var strings = dojox.dtl.filter.strings; + var words = 0; + var open = []; + + var output = Tokenize(value, strings._truncate_words, function(all, word){ + if(word){ + // It's an actual non-HTML word + ++words; + if(words < arg){ + return word; + }else if(words == arg){ + return word + " ..."; + } + } + // Check for tag + var tag = all.match(strings._truncate_tag); + if(!tag || words >= arg){ + // Don't worry about non tags or tags after our truncate point + return; + } + var closing = tag[1]; + var tagname = tag[2].toLowerCase(); + var selfclosing = tag[3]; + if(closing || strings._truncate_singlets[tagname]){ + }else if(closing){ + var i = array.indexOf(open, tagname); + if(i != -1){ + open = open.slice(i + 1); + } + }else{ + open.unshift(tagname); + } + return all; + }).join(""); + + output = output.replace(/\s+$/g, ""); + + for(var i = 0, tag; tag = open[i]; i++){ + output += ""; + } + + return output; + }, + upper: function(value){ + return value.toUpperCase(); + }, + urlencode: function(value){ + return dojox.dtl.filter.strings._urlquote(value); + }, + _urlize: /^((?:[(>]|<)*)(.*?)((?:[.,)>\n]|>)*)$/, + _urlize2: /^\S+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+$/, + urlize: function(value){ + return dojox.dtl.filter.strings.urlizetrunc(value); + }, + urlizetrunc: function(value, arg){ + arg = parseInt(arg); + return Tokenize(value, /(\S+)/g, function(word){ + var matches = dojox.dtl.filter.strings._urlize.exec(word); + if(!matches){ + return word; + } + var lead = matches[1]; + var middle = matches[2]; + var trail = matches[3]; + + var startsWww = middle.indexOf("www.") == 0; + var hasAt = middle.indexOf("@") != -1; + var hasColon = middle.indexOf(":") != -1; + var startsHttp = middle.indexOf("http://") == 0; + var startsHttps = middle.indexOf("https://") == 0; + var firstAlpha = /[a-zA-Z0-9]/.test(middle.charAt(0)); + var last4 = middle.substring(middle.length - 4); + + var trimmed = middle; + if(arg > 3){ + trimmed = trimmed.substring(0, arg - 3) + "..."; + } + + if(startsWww || (!hasAt && !startsHttp && middle.length && firstAlpha && (last4 == ".org" || last4 == ".net" || last4 == ".com"))){ + return '' + trimmed + ''; + }else if(startsHttp || startsHttps){ + return '' + trimmed + ''; + }else if(hasAt && !startsWww && !hasColon && dojox.dtl.filter.strings._urlize2.test(middle)){ + return '' + middle + ''; + } + return word; + }).join(""); + }, + wordcount: function(value){ + value = lang.trim(value); + if(!value){ return 0; } + return value.split(/\s+/g).length; + }, + wordwrap: function(value, arg){ + arg = parseInt(arg); + // summary: Wraps words at specified line length + var output = []; + var parts = value.split(/\s+/g); + if(parts.length){ + var word = parts.shift(); + output.push(word); + var pos = word.length - word.lastIndexOf("\n") - 1; + for(var i = 0; i < parts.length; i++){ + word = parts[i]; + if(word.indexOf("\n") != -1){ + var lines = word.split(/\n/g); + }else{ + var lines = [word]; + } + pos += lines[0].length + 1; + if(arg && pos > arg){ + output.push("\n"); + pos = lines[lines.length - 1].length; + }else{ + output.push(" "); + if(lines.length > 1){ + pos = lines[lines.length - 1].length; + } + } + output.push(word); + } + } + return output.join(""); + } + }); + return dojox.dtl.filter.strings; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/render/dom.js b/js/dojo-release-1.7.2-src/dojox/dtl/render/dom.js new file mode 100644 index 0000000..583d884 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/render/dom.js @@ -0,0 +1,42 @@ +define([ + "dojo/_base/lang", + "dojo/dom", + "../Context", + "../dom", + "../_base" +], function(lang,dom,ddc,dddom,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.render.dom", true); + + dd.render.dom.Render = function(/*DOMNode?*/ attachPoint, /*dojox.dtl.DomTemplate?*/ tpl){ + this._tpl = tpl; + this.domNode = dom.byId(attachPoint); + } + lang.extend(dd.render.dom.Render, { + setAttachPoint: function(/*Node*/ node){ + this.domNode = node; + }, + render: function(/*Object*/ context, /*dojox.dtl.DomTemplate?*/ tpl, /*dojox.dtl.DomBuffer?*/ buffer){ + if(!this.domNode){ + throw new Error("You cannot use the Render object without specifying where you want to render it"); + } + + this._tpl = tpl = tpl || this._tpl; + buffer = buffer || tpl.getBuffer(); + context = context || new ddc(); + + var frag = tpl.render(context, buffer).getParent(); + if(!frag){ + throw new Error("Rendered template does not have a root node"); + } + + if(this.domNode !== frag){ + this.domNode.parentNode.replaceChild(frag, this.domNode); + this.domNode = frag; + } + } + }); + return dojox.dtl.render.dom; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/render/html.js b/js/dojo-release-1.7.2-src/dojox/dtl/render/html.js new file mode 100644 index 0000000..55963f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/render/html.js @@ -0,0 +1,13 @@ +define([ + "dojo/_base/lang", + "../render/dom", + "../_base" +], function(lang,ddrd,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.render.html", true); + + dd.render.html.Render = ddrd.Render; + return dojox.dtl.render.html; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tag/date.js b/js/dojo-release-1.7.2-src/dojox/dtl/tag/date.js new file mode 100644 index 0000000..f41ed8a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tag/date.js @@ -0,0 +1,38 @@ +define([ + "dojo/_base/lang", + "../_base", + "../utils/date" +], function(lang,dd,ddud){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.tag.date", true); + + dojox.dtl.tag.date.NowNode = function(format, node){ + this._format = format; + this.format = new ddud.DateFormat(format); + this.contents = node; + } + lang.extend(dd.tag.date.NowNode, { + render: function(context, buffer){ + this.contents.set(this.format.format(new Date())); + return this.contents.render(context, buffer); + }, + unrender: function(context, buffer){ + return this.contents.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this._format, this.contents.clone(buffer)); + } + }); + + dojox.dtl.tag.date.now = function(parser, token){ + // Split by either :" or :' + var parts = token.split_contents(); + if(parts.length != 2){ + throw new Error("'now' statement takes one argument"); + } + return new dojox.dtl.tag.date.NowNode(parts[1].slice(1, -1), parser.create_text_node()); + }; + return dojox.dtl.tag.date; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tag/loader.js b/js/dojo-release-1.7.2-src/dojox/dtl/tag/loader.js new file mode 100644 index 0000000..4d16aee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tag/loader.js @@ -0,0 +1,303 @@ +define([ + "dojo/_base/lang", + "../_base", + "dojo/_base/array", + "dojo/_base/connect" +], function(lang,dd,array,connect){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.tag.loader", true); + + var ddtl = dd.tag.loader; + + ddtl.BlockNode = lang.extend(function(name, nodelist){ + this.name = name; + this.nodelist = nodelist; // Can be overridden + }, + { + "super": function(){ + if(this.parent){ + var html = this.parent.nodelist.dummyRender(this.context, null, true); + if(typeof html == "string"){ + html = new String(html); + } + html.safe = true; + return html; + } + return ''; + }, + render: function(context, buffer){ + var name = this.name; + var nodelist = this.nodelist; + var parent; + if(buffer.blocks){ + var block = buffer.blocks[name]; + if(block){ + parent = block.parent; + nodelist = block.nodelist; + block.used = true; + } + } + + this.rendered = nodelist; + + context = context.push(); + this.context = context; + this.parent = null; + if(nodelist != this.nodelist){ + this.parent = this; + } + context.block = this; + + if(buffer.getParent){ + var bufferParent = buffer.getParent(); + var setParent = connect.connect(buffer, "onSetParent", function(node, up, root){ + if(up && root){ + buffer.setParent(bufferParent); + } + }); + } + buffer = nodelist.render(context, buffer, this); + setParent && connect.disconnect(setParent); + context = context.pop(); + return buffer; + }, + unrender: function(context, buffer){ + return this.rendered.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this.name, this.nodelist.clone(buffer)); + }, + toString: function(){ return "dojox.dtl.tag.loader.BlockNode"; } + }); + + ddtl.ExtendsNode = lang.extend(function(getTemplate, nodelist, shared, parent, key){ + this.getTemplate = getTemplate; + this.nodelist = nodelist; + this.shared = shared; + this.parent = parent; + this.key = key; + }, + { + parents: {}, + getParent: function(context){ + var parent = this.parent; + if(!parent){ + var string; + parent = this.parent = context.get(this.key, false); + if(!parent){ + throw new Error("extends tag used a variable that did not resolve"); + } + if(typeof parent == "object"){ + var url = parent.url || parent.templatePath; + if(parent.shared){ + this.shared = true; + } + if(url){ + parent = this.parent = url.toString(); + }else if(parent.templateString){ + // Allow the builder's string interning to work + string = parent.templateString; + parent = this.parent = " "; + }else{ + parent = this.parent = this.parent.toString(); + } + } + if(parent && parent.indexOf("shared:") === 0){ + this.shared = true; + parent = this.parent = parent.substring(7, parent.length); + } + } + if(!parent){ + throw new Error("Invalid template name in 'extends' tag."); + } + if(parent.render){ + return parent; + } + if(this.parents[parent]){ + return this.parents[parent]; + } + this.parent = this.getTemplate(string || dojox.dtl.text.getTemplateString(parent)); + if(this.shared){ + this.parents[parent] = this.parent; + } + return this.parent; + }, + render: function(context, buffer){ + var parent = this.getParent(context); + + parent.blocks = parent.blocks || {}; + buffer.blocks = buffer.blocks || {}; + + for(var i = 0, node; node = this.nodelist.contents[i]; i++){ + if(node instanceof dojox.dtl.tag.loader.BlockNode){ + var old = parent.blocks[node.name]; + if(old && old.nodelist != node.nodelist){ + // In a shared template, the individual blocks might change + buffer = old.nodelist.unrender(context, buffer); + } + parent.blocks[node.name] = buffer.blocks[node.name] = { + shared: this.shared, + nodelist: node.nodelist, + used: false + } + } + } + + this.rendered = parent; + return parent.nodelist.render(context, buffer, this); + }, + unrender: function(context, buffer){ + return this.rendered.unrender(context, buffer, this); + }, + toString: function(){ return "dojox.dtl.block.ExtendsNode"; } + }); + + ddtl.IncludeNode = lang.extend(function(path, constant, getTemplate, text, parsed){ + this._path = path; + this.constant = constant; + this.path = (constant) ? path : new dd._Filter(path); + this.getTemplate = getTemplate; + this.text = text; + this.parsed = (arguments.length == 5) ? parsed : true; + }, + { + _cache: [{}, {}], + render: function(context, buffer){ + var location = ((this.constant) ? this.path : this.path.resolve(context)).toString(); + var parsed = Number(this.parsed); + var dirty = false; + if(location != this.last){ + dirty = true; + if(this.last){ + buffer = this.unrender(context, buffer); + } + this.last = location; + } + + var cache = this._cache[parsed]; + + if(parsed){ + if(!cache[location]){ + cache[location] = dd.text._resolveTemplateArg(location, true); + } + if(dirty){ + var template = this.getTemplate(cache[location]); + this.rendered = template.nodelist; + } + return this.rendered.render(context, buffer, this); + }else{ + if(this.text instanceof dd._TextNode){ + if(dirty){ + this.rendered = this.text; + this.rendered.set(dd.text._resolveTemplateArg(location, true)); + } + return this.rendered.render(context, buffer); + }else{ + if(!cache[location]){ + var nodelist = []; + var div = document.createElement("div"); + div.innerHTML = dd.text._resolveTemplateArg(location, true); + var children = div.childNodes; + while(children.length){ + var removed = div.removeChild(children[0]); + nodelist.push(removed); + } + cache[location] = nodelist; + } + if(dirty){ + this.nodelist = []; + var exists = true; + for(var i = 0, child; child = cache[location][i]; i++){ + this.nodelist.push(child.cloneNode(true)); + } + } + for(var i = 0, node; node = this.nodelist[i]; i++){ + buffer = buffer.concat(node); + } + } + } + return buffer; + }, + unrender: function(context, buffer){ + if(this.rendered){ + buffer = this.rendered.unrender(context, buffer); + } + if(this.nodelist){ + for(var i = 0, node; node = this.nodelist[i]; i++){ + buffer = buffer.remove(node); + } + } + return buffer; + }, + clone: function(buffer){ + return new this.constructor(this._path, this.constant, this.getTemplate, this.text.clone(buffer), this.parsed); + } + }); + + lang.mixin(ddtl, { + block: function(parser, token){ + var parts = token.contents.split(); + var name = parts[1]; + + parser._blocks = parser._blocks || {}; + parser._blocks[name] = parser._blocks[name] || []; + parser._blocks[name].push(name); + + var nodelist = parser.parse(["endblock", "endblock " + name]).rtrim(); + parser.next_token(); + return new dojox.dtl.tag.loader.BlockNode(name, nodelist); + }, + extends_: function(parser, token){ + var parts = token.contents.split(); + var shared = false; + var parent = null; + var key = null; + if(parts[1].charAt(0) == '"' || parts[1].charAt(0) == "'"){ + parent = parts[1].substring(1, parts[1].length - 1); + }else{ + key = parts[1]; + } + if(parent && parent.indexOf("shared:") == 0){ + shared = true; + parent = parent.substring(7, parent.length); + } + var nodelist = parser.parse(); + return new dojox.dtl.tag.loader.ExtendsNode(parser.getTemplate, nodelist, shared, parent, key); + }, + include: function(parser, token){ + var parts = token.contents.split(); + if(parts.length != 2){ + throw new Error(parts[0] + " tag takes one argument: the name of the template to be included"); + } + var path = parts[1]; + var constant = false; + if((path.charAt(0) == '"' || path.slice(-1) == "'") && path.charAt(0) == path.slice(-1)){ + path = path.slice(1, -1); + constant = true; + } + return new ddtl.IncludeNode(path, constant, parser.getTemplate, parser.create_text_node()); + }, + ssi: function(parser, token){ + // We're going to treat things a little differently here. + // First of all, this tag is *not* portable, so I'm not + // concerned about it being a "drop in" replacement. + + // Instead, we'll just replicate the include tag, but with that + // optional "parsed" parameter. + var parts = token.contents.split(); + var parsed = false; + if(parts.length == 3){ + parsed = (parts.pop() == "parsed"); + if(!parsed){ + throw new Error("Second (optional) argument to ssi tag must be 'parsed'"); + } + } + var node = ddtl.include(parser, new dd.Token(token.token_type, parts.join(" "))); + node.parsed = parsed; + return node; + } + }); + return dojox.dtl.tag.loader; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tag/logic.js b/js/dojo-release-1.7.2-src/dojox/dtl/tag/logic.js new file mode 100644 index 0000000..b085f57 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tag/logic.js @@ -0,0 +1,280 @@ +define([ + "dojo/_base/lang", + "../_base" +], function(lang, dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.tag.logic", true); + + var ddt = dd.text; + var ddtl = dd.tag.logic; + + ddtl.IfNode = lang.extend(function(bools, trues, falses, type){ + this.bools = bools; + this.trues = trues; + this.falses = falses; + this.type = type; + }, + { + render: function(context, buffer){ + var i, bool, ifnot, filter, value; + if(this.type == "or"){ + for(i = 0; bool = this.bools[i]; i++){ + ifnot = bool[0]; + filter = bool[1]; + value = filter.resolve(context); + if((value && !ifnot) || (ifnot && !value)){ + if(this.falses){ + buffer = this.falses.unrender(context, buffer); + } + return (this.trues) ? this.trues.render(context, buffer, this) : buffer; + } + } + if(this.trues){ + buffer = this.trues.unrender(context, buffer); + } + return (this.falses) ? this.falses.render(context, buffer, this) : buffer; + }else{ + for(i = 0; bool = this.bools[i]; i++){ + ifnot = bool[0]; + filter = bool[1]; + value = filter.resolve(context); + // If we ever encounter a false value + if(value == ifnot){ + if(this.trues){ + buffer = this.trues.unrender(context, buffer); + } + return (this.falses) ? this.falses.render(context, buffer, this) : buffer; + } + } + if(this.falses){ + buffer = this.falses.unrender(context, buffer); + } + return (this.trues) ? this.trues.render(context, buffer, this) : buffer; + } + return buffer; + }, + unrender: function(context, buffer){ + buffer = (this.trues) ? this.trues.unrender(context, buffer) : buffer; + buffer = (this.falses) ? this.falses.unrender(context, buffer) : buffer; + return buffer; + }, + clone: function(buffer){ + var trues = (this.trues) ? this.trues.clone(buffer) : null; + var falses = (this.falses) ? this.falses.clone(buffer) : null; + return new this.constructor(this.bools, trues, falses, this.type); + } + }); + + ddtl.IfEqualNode = lang.extend(function(var1, var2, trues, falses, negate){ + this.var1 = new dd._Filter(var1); + this.var2 = new dd._Filter(var2); + this.trues = trues; + this.falses = falses; + this.negate = negate; + }, + { + render: function(context, buffer){ + var var1 = this.var1.resolve(context); + var var2 = this.var2.resolve(context); + var1 = (typeof var1 != "undefined") ? var1 : ""; + var2 = (typeof var1 != "undefined") ? var2 : ""; + if((this.negate && var1 != var2) || (!this.negate && var1 == var2)){ + if(this.falses){ + buffer = this.falses.unrender(context, buffer, this); + } + return (this.trues) ? this.trues.render(context, buffer, this) : buffer; + } + if(this.trues){ + buffer = this.trues.unrender(context, buffer, this); + } + return (this.falses) ? this.falses.render(context, buffer, this) : buffer; + }, + unrender: function(context, buffer){ + return ddtl.IfNode.prototype.unrender.call(this, context, buffer); + }, + clone: function(buffer){ + var trues = this.trues ? this.trues.clone(buffer) : null; + var falses = this.falses ? this.falses.clone(buffer) : null; + return new this.constructor(this.var1.getExpression(), this.var2.getExpression(), trues, falses, this.negate); + } + }); + + ddtl.ForNode = lang.extend(function(assign, loop, reversed, nodelist){ + this.assign = assign; + this.loop = new dd._Filter(loop); + this.reversed = reversed; + this.nodelist = nodelist; + this.pool = []; + }, + { + render: function(context, buffer){ + var i, j, k; + var dirty = false; + var assign = this.assign; + + for(k = 0; k < assign.length; k++){ + if(typeof context[assign[k]] != "undefined"){ + dirty = true; + context = context.push(); + break; + } + } + if(!dirty && context.forloop){ + dirty = true; + context = context.push(); + } + + var items = this.loop.resolve(context) || []; + for(i = items.length; i < this.pool.length; i++){ + this.pool[i].unrender(context, buffer, this); + } + if(this.reversed){ + items = items.slice(0).reverse(); + } + + var isObject = lang.isObject(items) && !lang.isArrayLike(items); + var arred = []; + if(isObject){ + for(var key in items){ + arred.push(items[key]); + } + }else{ + arred = items; + } + + var forloop = context.forloop = { + parentloop: context.get("forloop", {}) + }; + var j = 0; + for(i = 0; i < arred.length; i++){ + var item = arred[i]; + + forloop.counter0 = j; + forloop.counter = j + 1; + forloop.revcounter0 = arred.length - j - 1; + forloop.revcounter = arred.length - j; + forloop.first = !j; + forloop.last = (j == arred.length - 1); + + if(assign.length > 1 && lang.isArrayLike(item)){ + if(!dirty){ + dirty = true; + context = context.push(); + } + var zipped = {}; + for(k = 0; k < item.length && k < assign.length; k++){ + zipped[assign[k]] = item[k]; + } + lang.mixin(context, zipped); + }else{ + context[assign[0]] = item; + } + + if(j + 1 > this.pool.length){ + this.pool.push(this.nodelist.clone(buffer)); + } + buffer = this.pool[j++].render(context, buffer, this); + } + + delete context.forloop; + if(dirty){ + context = context.pop(); + }else{ + for(k = 0; k < assign.length; k++){ + delete context[assign[k]]; + } + } + return buffer; + }, + unrender: function(context, buffer){ + for(var i = 0, pool; pool = this.pool[i]; i++){ + buffer = pool.unrender(context, buffer); + } + return buffer; + }, + clone: function(buffer){ + return new this.constructor(this.assign, this.loop.getExpression(), this.reversed, this.nodelist.clone(buffer)); + } + }); + + lang.mixin(ddtl, { + if_: function(parser, token){ + var i, part, type, bools = [], parts = token.contents.split(); + parts.shift(); + token = parts.join(" "); + parts = token.split(" and "); + if(parts.length == 1){ + type = "or"; + parts = token.split(" or "); + }else{ + type = "and"; + for(i = 0; i < parts.length; i++){ + if(parts[i].indexOf(" or ") != -1){ + // Note, since we split by and, this is the only place we need to error check + throw new Error("'if' tags can't mix 'and' and 'or'"); + } + } + } + for(i = 0; part = parts[i]; i++){ + var not = false; + if(part.indexOf("not ") == 0){ + part = part.slice(4); + not = true; + } + bools.push([not, new dd._Filter(part)]); + } + var trues = parser.parse(["else", "endif"]); + var falses = false; + var token = parser.next_token(); + if(token.contents == "else"){ + falses = parser.parse(["endif"]); + parser.next_token(); + } + return new ddtl.IfNode(bools, trues, falses, type); + }, + _ifequal: function(parser, token, negate){ + var parts = token.split_contents(); + if(parts.length != 3){ + throw new Error(parts[0] + " takes two arguments"); + } + var end = 'end' + parts[0]; + var trues = parser.parse(["else", end]); + var falses = false; + var token = parser.next_token(); + if(token.contents == "else"){ + falses = parser.parse([end]); + parser.next_token(); + } + return new ddtl.IfEqualNode(parts[1], parts[2], trues, falses, negate); + }, + ifequal: function(parser, token){ + return ddtl._ifequal(parser, token); + }, + ifnotequal: function(parser, token){ + return ddtl._ifequal(parser, token, true); + }, + for_: function(parser, token){ + var parts = token.contents.split(); + if(parts.length < 4){ + throw new Error("'for' statements should have at least four words: " + token.contents); + } + var reversed = parts[parts.length - 1] == "reversed"; + var index = (reversed) ? -3 : -2; + if(parts[parts.length + index] != "in"){ + throw new Error("'for' tag received an invalid argument: " + token.contents); + } + var loopvars = parts.slice(1, index).join(" ").split(/ *, */); + for(var i = 0; i < loopvars.length; i++){ + if(!loopvars[i] || loopvars[i].indexOf(" ") != -1){ + throw new Error("'for' tag received an invalid argument: " + token.contents); + } + } + var nodelist = parser.parse(["endfor"]); + parser.next_token(); + return new ddtl.ForNode(loopvars, parts[parts.length + index + 1], reversed, nodelist); + } + }); + return dojox.dtl.tag.logic; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tag/loop.js b/js/dojo-release-1.7.2-src/dojox/dtl/tag/loop.js new file mode 100644 index 0000000..717df7a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tag/loop.js @@ -0,0 +1,201 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/json", + "../_base", + "dojox/string/tokenize" +], function(lang,array,json,dd,Tokenize){ + /*===== + Tokenize = dojox.string.tokenize; + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.tag.loop", true); + + var ddtl = dd.tag.loop; + + ddtl.CycleNode = lang.extend(function(cyclevars, name, text, shared){ + this.cyclevars = cyclevars; + this.name = name; + this.contents = text; + this.shared = shared || {counter: -1, map: {}}; + }, + { + render: function(context, buffer){ + if(context.forloop && !context.forloop.counter0){ + this.shared.counter = -1; + } + + ++this.shared.counter; + var value = this.cyclevars[this.shared.counter % this.cyclevars.length]; + + var map = this.shared.map; + if(!map[value]){ + map[value] = new dd._Filter(value); + } + value = map[value].resolve(context, buffer); + + if(this.name){ + context[this.name] = value; + } + this.contents.set(value); + return this.contents.render(context, buffer); + }, + unrender: function(context, buffer){ + return this.contents.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this.cyclevars, this.name, this.contents.clone(buffer), this.shared); + } + }); + + ddtl.IfChangedNode = lang.extend(function(nodes, vars, shared){ + this.nodes = nodes; + this._vars = vars; + this.shared = shared || {last: null, counter: 0}; + this.vars = array.map(vars, function(item){ + return new dojox.dtl._Filter(item); + }); + }, { + render: function(context, buffer){ + if(context.forloop){ + if(context.forloop.counter <= this.shared.counter){ + this.shared.last = null; + } + this.shared.counter = context.forloop.counter; + } + + var change; + if(this.vars.length){ + change = json.toJson(array.map(this.vars, function(item){ + return item.resolve(context); + })); + }else{ + change = this.nodes.dummyRender(context, buffer); + } + + if(change != this.shared.last){ + var firstloop = (this.shared.last === null); + this.shared.last = change; + context = context.push(); + context.ifchanged = {firstloop: firstloop}; + buffer = this.nodes.render(context, buffer); + context = context.pop(); + }else{ + buffer = this.nodes.unrender(context, buffer); + } + return buffer; + }, + unrender: function(context, buffer){ + return this.nodes.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this.nodes.clone(buffer), this._vars, this.shared); + } + }); + + ddtl.RegroupNode = lang.extend(function(expression, key, alias){ + this._expression = expression; + this.expression = new dd._Filter(expression); + this.key = key; + this.alias = alias; + }, + { + _push: function(container, grouper, stack){ + if(stack.length){ + container.push({ grouper: grouper, list: stack }); + } + }, + render: function(context, buffer){ + context[this.alias] = []; + var list = this.expression.resolve(context); + if(list){ + var last = null; + var stack = []; + for(var i = 0; i < list.length; i++){ + var id = list[i][this.key]; + if(last !== id){ + this._push(context[this.alias], last, stack); + last = id; + stack = [list[i]]; + }else{ + stack.push(list[i]); + } + } + this._push(context[this.alias], last, stack); + } + return buffer; + }, + unrender: function(context, buffer){ + return buffer; + }, + clone: function(context, buffer){ + return this; + } + }); + + lang.mixin(ddtl, { + cycle: function(parser, token){ + // summary: Cycle among the given strings each time this tag is encountered + var args = token.split_contents(); + + if(args.length < 2){ + throw new Error("'cycle' tag requires at least two arguments"); + } + + if(args[1].indexOf(",") != -1){ + var vars = args[1].split(","); + args = [args[0]]; + for(var i = 0; i < vars.length; i++){ + args.push('"' + vars[i] + '"'); + } + } + + if(args.length == 2){ + var name = args[args.length - 1]; + + if(!parser._namedCycleNodes){ + throw new Error("No named cycles in template: '" + name + "' is not defined"); + } + if(!parser._namedCycleNodes[name]){ + throw new Error("Named cycle '" + name + "' does not exist"); + } + + return parser._namedCycleNodes[name]; + } + + if(args.length > 4 && args[args.length - 2] == "as"){ + var name = args[args.length - 1]; + + var node = new ddtl.CycleNode(args.slice(1, args.length - 2), name, parser.create_text_node()); + + if(!parser._namedCycleNodes){ + parser._namedCycleNodes = {}; + } + parser._namedCycleNodes[name] = node; + }else{ + node = new ddtl.CycleNode(args.slice(1), null, parser.create_text_node()); + } + + return node; + }, + ifchanged: function(parser, token){ + var parts = token.contents.split(); + var nodes = parser.parse(["endifchanged"]); + parser.delete_first_token(); + return new ddtl.IfChangedNode(nodes, parts.slice(1)); + }, + regroup: function(parser, token){ + var tokens = Tokenize(token.contents, /(\s+)/g, function(spaces){ + return spaces; + }); + if(tokens.length < 11 || tokens[tokens.length - 3] != "as" || tokens[tokens.length - 7] != "by"){ + throw new Error("Expected the format: regroup list by key as newList"); + } + var expression = tokens.slice(2, -8).join(""); + var key = tokens[tokens.length - 5]; + var alias = tokens[tokens.length - 1]; + return new ddtl.RegroupNode(expression, key, alias); + } + }); + return dojox.dtl.tag.loop; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tag/misc.js b/js/dojo-release-1.7.2-src/dojox/dtl/tag/misc.js new file mode 100644 index 0000000..9b4c8b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tag/misc.js @@ -0,0 +1,293 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/connect", + "../_base" +], function(lang,array,connect,dd){ + /*===== + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.tag.misc", true); + + var ddtm = dd.tag.misc; + + ddtm.DebugNode = lang.extend(function(text){ + this.text = text; + }, + { + render: function(context, buffer){ + var keys = context.getKeys(); + var debug = []; + var only = {}; + for(var i = 0, key; key = keys[i]; i++){ + only[key] = context[key]; + debug += "[" + key + ": " + typeof context[key] + "]\n"; + } + console.debug(only); + return this.text.set(debug).render(context, buffer, this); + }, + unrender: function(context, buffer){ + return buffer; + }, + clone: function(buffer){ + return new this.constructor(this.text.clone(buffer)); + }, + toString: function(){ return "ddtm.DebugNode"; } + }); + + ddtm.FilterNode = lang.extend(function(varnode, nodelist){ + this._varnode = varnode; + this._nodelist = nodelist; + }, + { + render: function(context, buffer){ + // Doing this in HTML requires a different buffer with a fake root node + var output = this._nodelist.render(context, new dojox.string.Builder()); + context = context.update({ "var": output.toString() }); + var filtered = this._varnode.render(context, buffer); + context = context.pop(); + return buffer; + }, + unrender: function(context, buffer){ + return buffer; + }, + clone: function(buffer){ + return new this.constructor(this._expression, this._nodelist.clone(buffer)); + } + }); + + ddtm.FirstOfNode = lang.extend(function(vars, text){ + this._vars = vars; + this.vars = array.map(vars, function(item){ + return new dojox.dtl._Filter(item); + }); + this.contents = text; + }, + { + render: function(context, buffer){ + for(var i = 0, item; item = this.vars[i]; i++){ + var resolved = item.resolve(context); + if(typeof resolved != "undefined"){ + if(resolved === null){ + resolved = "null"; + } + this.contents.set(resolved); + return this.contents.render(context, buffer); + } + } + return this.contents.unrender(context, buffer); + }, + unrender: function(context, buffer){ + return this.contents.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this._vars, this.contents.clone(buffer)); + } + }); + + ddtm.SpacelessNode = lang.extend(function(nodelist, text){ + this.nodelist = nodelist; + this.contents = text; + }, + { + render: function(context, buffer){ + if(buffer.getParent){ + // Unfortunately, we have to branch here + var watch = [ + connect.connect(buffer, "onAddNodeComplete", this, "_watch"), + connect.connect(buffer, "onSetParent", this, "_watchParent") + ]; + buffer = this.nodelist.render(context, buffer); + connect.disconnect(watch[0]); + connect.disconnect(watch[1]); + }else{ + var value = this.nodelist.dummyRender(context); + this.contents.set(value.replace(/>\s+<')); + buffer = this.contents.render(context, buffer); + } + return buffer; + }, + unrender: function(context, buffer){ + return this.nodelist.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this.nodelist.clone(buffer), this.contents.clone(buffer)); + }, + _isEmpty: function(node){ + return (node.nodeType == 3 && !node.data.match(/[^\s\n]/)); + }, + _watch: function(node){ + if(this._isEmpty(node)){ + var remove = false; + if(node.parentNode.firstChild == node){ + node.parentNode.removeChild(node); + } + }else{ + var children = node.parentNode.childNodes; + if(node.nodeType == 1 && children.length > 2){ + for(var i = 2, child; child = children[i]; i++){ + if(children[i - 2].nodeType == 1 && this._isEmpty(children[i - 1])){ + node.parentNode.removeChild(children[i - 1]); + return; + } + } + } + } + }, + _watchParent: function(node){ + var children = node.childNodes; + if(children.length){ + while(node.childNodes.length){ + var last = node.childNodes[node.childNodes.length - 1]; + if(!this._isEmpty(last)){ + return; + } + node.removeChild(last); + } + } + } + }); + + ddtm.TemplateTagNode = lang.extend(function(tag, text){ + this.tag = tag; + this.contents = text; + }, + { + mapping: { + openblock: "{%", + closeblock: "%}", + openvariable: "{{", + closevariable: "}}", + openbrace: "{", + closebrace: "}", + opencomment: "{#", + closecomment: "#}" + }, + render: function(context, buffer){ + this.contents.set(this.mapping[this.tag]); + return this.contents.render(context, buffer); + }, + unrender: function(context, buffer){ + return this.contents.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this.tag, this.contents.clone(buffer)); + } + }); + + ddtm.WidthRatioNode = lang.extend(function(current, max, width, text){ + this.current = new dd._Filter(current); + this.max = new dd._Filter(max); + this.width = width; + this.contents = text; + }, + { + render: function(context, buffer){ + var current = +this.current.resolve(context); + var max = +this.max.resolve(context); + if(typeof current != "number" || typeof max != "number" || !max){ + this.contents.set(""); + }else{ + this.contents.set("" + Math.round((current / max) * this.width)); + } + return this.contents.render(context, buffer); + }, + unrender: function(context, buffer){ + return this.contents.unrender(context, buffer); + }, + clone: function(buffer){ + return new this.constructor(this.current.getExpression(), this.max.getExpression(), this.width, this.contents.clone(buffer)); + } + }); + + ddtm.WithNode = lang.extend(function(target, alias, nodelist){ + this.target = new dd._Filter(target); + this.alias = alias; + this.nodelist = nodelist; + }, + { + render: function(context, buffer){ + var target = this.target.resolve(context); + context = context.push(); + context[this.alias] = target; + buffer = this.nodelist.render(context, buffer); + context = context.pop(); + return buffer; + }, + unrender: function(context, buffer){ + return buffer; + }, + clone: function(buffer){ + return new this.constructor(this.target.getExpression(), this.alias, this.nodelist.clone(buffer)); + } + }); + + lang.mixin(ddtm, { + comment: function(parser, token){ + // summary: Ignore everything between {% comment %} and {% endcomment %} + parser.skip_past("endcomment"); + return dd._noOpNode; + }, + debug: function(parser, token){ + // summary: Output the current context, maybe add more stuff later. + return new ddtm.DebugNode(parser.create_text_node()); + }, + filter: function(parser, token){ + // summary: Filter the contents of the blog through variable filters. + var rest = token.contents.split(null, 1)[1]; + var varnode = parser.create_variable_node("var|" + rest); + var nodelist = parser.parse(["endfilter"]); + parser.next_token(); + return new ddtm.FilterNode(varnode, nodelist); + }, + firstof: function(parser, token){ + var parts = token.split_contents().slice(1); + if(!parts.length){ + throw new Error("'firstof' statement requires at least one argument"); + } + return new ddtm.FirstOfNode(parts, parser.create_text_node()); + }, + spaceless: function(parser, token){ + var nodelist = parser.parse(["endspaceless"]); + parser.delete_first_token(); + return new ddtm.SpacelessNode(nodelist, parser.create_text_node()); + }, + templatetag: function(parser, token){ + var parts = token.contents.split(); + if(parts.length != 2){ + throw new Error("'templatetag' statement takes one argument"); + } + var tag = parts[1]; + var mapping = ddtm.TemplateTagNode.prototype.mapping; + if(!mapping[tag]){ + var keys = []; + for(var key in mapping){ + keys.push(key); + } + throw new Error("Invalid templatetag argument: '" + tag + "'. Must be one of: " + keys.join(", ")); + } + return new ddtm.TemplateTagNode(tag, parser.create_text_node()); + }, + widthratio: function(parser, token){ + var parts = token.contents.split(); + if(parts.length != 4){ + throw new Error("widthratio takes three arguments"); + } + var width = +parts[3]; + if(typeof width != "number"){ + throw new Error("widthratio final argument must be an integer"); + } + return new ddtm.WidthRatioNode(parts[1], parts[2], width, parser.create_text_node()); + }, + with_: function(parser, token){ + var parts = token.split_contents(); + if(parts.length != 4 || parts[2] != "as"){ + throw new Error("do_width expected format as 'with value as name'"); + } + var nodelist = parser.parse(["endwith"]); + parser.next_token(); + return new ddtm.WithNode(parts[1], parts[3], nodelist); + } + }); + return dojox.dtl.tag.misc; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/context.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/context.js new file mode 100644 index 0000000..bd72daa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/context.js @@ -0,0 +1,84 @@ +dojo.provide("dojox.dtl.tests.context"); + +dojo.require("dojox.dtl"); +dojo.require("dojox.dtl.Context"); + +doh.register("dojox.dtl.context", + [ + function test_context_creation(t){ + var context = new dojox.dtl.Context({ foo: "foo", bar: "bar" }); + t.is("foo", context.foo); + t.is("bar", context.bar); + }, + function test_context_push(t){ + var context = new dojox.dtl.Context({ foo: "foo", bar: "bar" }); + context = context.push(); + var found = false; + for(var key in context){ + if(key == "foo" || key == "bar"){ + found = true; + } + } + t.t(found); + }, + function test_context_getter(t){ + var context = new dojox.dtl.Context({foo: "foo", bar: "bar", get: function(key){ return key + "TEST"; }}); + var tpl = new dojox.dtl.Template("{{ foo }}-{{ bar }}"); + t.is("fooTEST-barTEST", tpl.render(context)); + }, + function test_context_pop(t){ + var context = new dojox.dtl.Context({ foo: "foo", bar: "bar" }); + context = context.push(); + t.f(context.hasOwnProperty("foo")); + t.f(context.hasOwnProperty("bar")); + context = context.pop(); + t.is("foo", context.foo); + t.is("bar", context.bar); + }, + function test_context_overpop(t){ + var context = new dojox.dtl.Context(); + try{ + context = context.pop(); + t.t(false); + }catch(e){ + t.is("pop() called on empty Context", e.message); + } + }, + function test_context_filter(t){ + var context = new dojox.dtl.Context({ foo: "one", bar: "two", baz: "three" }); + var filtered = context.filter("foo", "bar"); + t.is(filtered.foo, "one"); + t.is(filtered.bar, "two"); + t.f(filtered.baz); + + filtered = context.filter({ bar: true, baz: true }); + t.f(filtered.foo); + t.is(filtered.bar, "two"); + t.is(filtered.baz, "three"); + + filtered = context.filter(new dojox.dtl.Context({ foo: true, baz: true })); + t.is(filtered.foo, "one"); + t.f(filtered.bar); + t.is(filtered.baz, "three"); + }, + function test_context_extend(t){ + var context = new dojox.dtl.Context({ foo: "one" }); + var extended = context.extend({ bar: "two", baz: "three" }); + t.is(extended.foo, "one"); + t.is(extended.bar, "two"); + t.is(extended.baz, "three"); + + extended = context.extend({ barr: "two", bazz: "three" }); + t.is(extended.foo, "one"); + t.f(extended.bar); + t.f(extended.baz); + t.is(extended.barr, "two"); + t.is(extended.bazz, "three"); + + t.f(context.bar) + t.f(context.baz); + t.f(context.barr); + t.f(context.bazz); + } + ] +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/demo_Templated_Jaxer.html b/js/dojo-release-1.7.2-src/dojox/dtl/tests/demo_Templated_Jaxer.html new file mode 100644 index 0000000..f0f0a46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/demo_Templated_Jaxer.html @@ -0,0 +1,87 @@ + + + Demo using dojox.dtl._Templated + + + + + +

                              Using Dojo's Django Template language on Jaxer

                              +
                              + Aptana's Jaxer is server side JavaScript (SSJS) server. With some modifications to + a web page, Dojo can be run on the server. With Dojo running on the server, you can + utilize the Dojo's Django Template library rendering engine to do templating within + Jaxer. The latest build of Dojo includes some patches to properly work with Jaxer, + so you need a build of Dojo later than 2/18/08 to work with Jaxer. Next, the + following modifications to your page are needed to run Jaxer: +
                                +
                              • + You must explicitly set the base url of the Dojo library. Jaxer does not provide + the ability for Dojo to auto-detect the base url as it can in other environments. + Therefore you must declare the base url with the djConfig global variable: +
                                +<script runat="server">
                                +djConfig = {baseUrl:"/dojo/", // use the base path of dojo here
                                +			usePlainJson: true, parseOnLoad: true};
                                +</script>
                                +					
                                +
                              • +
                              • + Next, you must add the runat attribute with a value of "server" to all of the script + tags that you want executed on the server. Your script tags should look like: +
                                +<script runat="server" type="text/javascript" src="../../../dojo/dojo.js"></script>
                                +					
                                +
                              • +
                              • + Last, you must dojo.require("dojo.jaxer") with a script tag. This should immediately + follow the declaration of dojo.js: +
                                +<script runat="server" type="text/javascript" src="../../../dojo/dojo.js"></script>
                                +<script runat="server" type="text/javascript">dojo.require("dojo.jaxer");</script>
                                +					
                                +
                              • +
                              +
                              +

                              + Once this is done, Dojo should load in Jaxer, and you can utilize the library capabilities of + Dojo. In particular, you can now use DTL renderer as you would on + the browser. If you are running this in Jaxer, below should be a working demonstration of + a template that is rendered on the server. +

                              +
                              +

                              + It is important to note that Jaxer is not capable of transferring the programmaticaly set + event handlers for widgets, it can only send the static HTML to the browser. This means + you can use DTL as a templating engine to create HTML on the server, but Dojo client side widgets + are still necessary if you want to use interactive widgets on the browser. +

                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/buffer.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/buffer.js new file mode 100644 index 0000000..29c6809 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/buffer.js @@ -0,0 +1,31 @@ +dojo.provide("dojox.dtl.tests.dom.buffer"); + +dojo.require("dojox.dtl.dom"); +dojo.require("dojox.dtl.Context"); +dojo.require("dojox.dtl.tests.dom.util"); + +doh.register("dojox.dtl.dom.buffer", + [ + function test_insertion_order_text(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + first: false, + last: false + }); + + var template = new dd.DomTemplate("
                              {% if first %}first{% endif %}middle{% if last %}last{% endif %}
                              "); + t.is("
                              middle
                              ", dd.tests.dom.util.render(template, context)); + + context.first = true; + t.is("
                              firstmiddle
                              ", dd.tests.dom.util.render(template, context)); + + context.first = false; + context.last = true; + t.is("
                              middlelast
                              ", dd.tests.dom.util.render(template, context)); + + context.first = true; + t.is("
                              firstmiddlelast
                              ", dd.tests.dom.util.render(template, context)); + } + ] +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/tag.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/tag.js new file mode 100644 index 0000000..2b915a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/tag.js @@ -0,0 +1,325 @@ +dojo.provide("dojox.dtl.tests.dom.tag"); + +dojo.require("dojox.dtl.dom"); +dojo.require("dojox.dtl.Context"); +dojo.require("dojox.dtl.tests.dom.util"); +dojo.require("dojo._base.sniff"); + +doh.register("dojox.dtl.dom.tag", + [ + function test_errors(t){ + var dd = dojox.dtl; + var template; + + // No root node after rendering + var found = false; + try { + template = new dd.DomTemplate('No div'); + dd.tests.dom.util.render(template); + }catch(e){ + t.is("Text should not exist outside of the root node in template", e.message); + found = true; + } + t.t(found); + + var context = new dojox.dtl.Context({test: "Pocket"}); + found = false; + try { + template = new dd.DomTemplate('{{ test }}'); + dd.tests.dom.util.render(template, context); + }catch(e){ + t.is("Text should not exist outside of the root node in template", e.message); + found = true; + } + t.t(found); + + template = new dd.DomTemplate('
                              extra content'); + found = false; + try { + dd.tests.dom.util.render(template); + }catch(e){ + t.is("Content should not exist outside of the root node in template", e.message); + found = true; + } + t.t(found); + + // More than one top-level node (except for blocks) + template = new dd.DomTemplate('
                              '); + found = false; + try { + dd.tests.dom.util.render(template); + }catch(e){ + t.is("Content should not exist outside of the root node in template", e.message); + found = true; + } + t.t(found); + + // Logic block rules out any root node + template = new dd.DomTemplate('{% if missing %}
                              {% endif %}'); + found = false; + try { + dd.tests.dom.util.render(template); + }catch(e){ + t.is("Rendered template does not have a root node", e.message); + found = true; + } + t.t(found); + }, + function test_tag_attributes(){ + var dd = dojox.dtl; + + var template = new dd.DomTemplate('
                              {% for item in items %}{{item.param}}{% endfor %}
                              '); + var context = new dd.Context({ + items: [ + { + name: "apple", + param: "appleparam" + }, + { + name: "banana", + param: "bananaparam" + }, + { + name: "orange", + param: "orangeparam" + } + ] + }); + doh.is('', dd.tests.dom.util.render(template, context)); + }, + function test_tag_extend(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + base: dojo.moduleUrl("dojox.dtl.tests.templates", "base.html") + }); + + var template = new dd.DomTemplate("{% extends base %}{% block base %}

                              1

                              2

                              • 2a
                              • 2b
                              • 2c

                              3

                              • 3a
                              • 3b
                              • 3c

                              4

                              • 4a
                              • 4b
                              • 4c

                              5

                              {% endblock %}"); + t.is("
                              BaseBefore

                              1

                              2

                              • 2a
                              • 2b
                              • 2c

                              3

                              • 3a
                              • 3b
                              • 3c

                              4

                              • 4a
                              • 4b
                              • 4c

                              5

                              BaseAfter
                              ", dd.tests.dom.util.render(template, context)); + }, + function test_tag_for(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + items: ["apple", "banana", "lemon"] + }); + var template = new dd.DomTemplate('
                                {% for item in items %}
                              • {{ item }}
                              • {% endfor %}
                              '); + + t.is('
                              • apple
                              • banana
                              • lemon
                              ', dd.tests.dom.util.render(template, context)); + + // The line break is there to make sure our regex works + template = new dd.DomTemplate('
                              '); + + t.is('
                              ', dd.tests.dom.util.render(template, context)); + }, + function test_tag_if(t){ + var dd = dojox.dtl; + + var context = new dd.Context({key: true}); + var template = new dd.DomTemplate('{% if key %}
                              has key
                              {% else %}
                              no key
                              {% endif %}'); + t.is("
                              has key
                              ", dd.tests.dom.util.render(template, context)); + context.key = false; + t.is("
                              no key
                              ", dd.tests.dom.util.render(template, context)); + }, + function test_tag_ifchanged(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + year: 2008, + days: [ + new Date(2008, 0, 12), + new Date(2008, 0, 28), + new Date(2008, 1, 1), + new Date(2008, 1, 1), + new Date(2008, 1, 1) + ] + }); + + var template = new dd.DomTemplate("

                              Archive for {{ year }}

                              "+ +"{% for date in days %}"+ +'{% ifchanged %}

                              Month:

                              {{ date|date:"F" }}

                              {% endifchanged %}'+ +'{{ date|date:\'j\' }}'+ +"{% endfor %}
                              "); + + t.is('

                              Archive for 2008

                              '+ +'

                              Month:

                              January

                              '+ +'12'+ +'28'+ +'

                              Month:

                              February

                              '+ +'1'+ +'1'+ +'1
                              ', dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate('
                              {% for date in days %}'+ +'{% ifchanged date.date %} {{ date.date }} {% endifchanged %}'+ +'{% ifchanged date.hour date.date %}'+ +'{{ date.hour }}'+ +'{% endifchanged %}'+ +'{% endfor %}
                              '); + t.is('
                              2008-01-12 0 2008-01-28 0 2008-02-01 0
                              ', dd.tests.dom.util.render(template, context)); + }, + function test_tag_ifequal(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + items: [ + { name: "apple", color: "red" }, + { name: "banana", color: "yellow" }, + { name: "pear", color: "green" }, + { name: "kiwi", color: "brown" } + ], + edit_item: "banana" + }); + + var template = new dd.DomTemplate("
                                {% for item in items %}
                              • {{ item.name }}
                              • {% endfor %}
                              "); + t.is('
                              • apple
                              • banana
                              • pear
                              • kiwi
                              ', dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate("
                                {% for item in items %}
                              • {{ item.name }}

                                {{ item.color }}

                              • {% endfor %}
                              "); + t.is('
                              • apple

                                red

                              • banana

                                yellow

                              • pear

                                green

                              • kiwi

                                brown

                              ', dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate("
                                {% for item in items %}
                              • {% ifequal item.name edit_item %}
                                {% else %}{{ item.name }}

                                {{ item.color }}

                                {% endifequal %}
                              • {% endfor %}
                              "); + t.is('
                              • apple

                                red


                              • pear

                                green

                              • kiwi

                                brown

                              ', dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate("
                                {% for item in items %}
                              • {% ifequal item.name edit_item %}

                                {% else %}
                                {{ item.name }}

                                {{ item.color }}

                                {% endifequal %}
                              • {% endfor %}
                              "); + t.is('
                              • apple

                                red


                              • pear

                                green

                              • kiwi

                                brown

                              ', dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate("
                                {% for item in items %}{% ifequal item.name edit_item %}

                              • {% else %}
                              • {{ item.name }}

                                {{ item.color }}

                              • {% endifequal %}{% endfor %}
                              "); + t.is('
                              • apple

                                red


                              • pear

                                green

                              • kiwi

                                brown

                              ', dd.tests.dom.util.render(template, context)); + }, + function test_tag_include(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + hello: dojo.moduleUrl("dojox.dtl.tests.templates", "hello.html"), + person: "Bob", + people: ["Charles", "Ralph", "Julia"] + }); + + var template = new dd.DomTemplate("
                              {% include hello %}
                              "); + t.is("
                              Hello, Bob
                              ", dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate('
                              {% include "../../dojox/dtl/tests/templates/hello.html" %}
                              '); + t.is("
                              Hello, Bob
                              ", dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate('
                              {% for person in people %}
                              {% include hello %}
                              {% endfor %}
                              '); + t.is('
                              Hello, Charles
                              Hello, Ralph
                              Hello, Julia
                              ', dd.tests.dom.util.render(template, context)); + }, + function test_tag_spaceless(t){ + var dd = dojox.dtl; + + var template = new dd.DomTemplate("{% spaceless %}
                                \n
                              • Hot
                              • \n\n
                              • Pocket
                              • \n
                              {% endspaceless %}"); + t.is("
                              • Hot
                              • Pocket
                              ", dd.tests.dom.util.render(template)); + }, + function test_tag_ssi(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + hello: dojo.moduleUrl("dojox.dtl.tests.templates", "hello.html"), + person: "Bob", + people: ["Charles", "Ralph", "Julia"] + }); + + var template = new dd.DomTemplate("
                              {% ssi hello parsed %}
                              "); + t.is("
                              Hello, Bob
                              ", dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate("
                              {% ssi hello %}
                              "); + t.is("
                              Hello, {{ person }}
                              ", dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate('
                              {% ssi "../../dojox/dtl/tests/templates/hello.html" parsed %}
                              '); + t.is("
                              Hello, Bob
                              ", dd.tests.dom.util.render(template, context)); + + template = new dd.DomTemplate('
                              {% for person in people %}{% ssi hello parsed %} {% endfor %}
                              '); + t.is("
                              Hello, Charles Hello, Ralph Hello, Julia
                              ", dd.tests.dom.util.render(template, context)); + }, + function test_tag_comment(t){ + var dd = dojox.dtl; + + var context = new dd.Context({}); + + var template = new dd.DomTemplate("
                              abc{% comment %}{% endif %}
                              {% ssi hello parsed %}
                              {% for item in items %}{% endcomment %}xyz
                              "); + t.is("
                              abcxyz
                              ", dd.tests.dom.util.render(template, context)); + }, + function test_annoying_nesting(){ + // In Safari: table/tr, tr/th, tr/td, thead/tr, tbody/tr + var dd = dojox.dtl; + + var context = new dd.Context({items: ["apple", "banana", "orange"]}); + + // All: select/option + var template = new dd.DomTemplate("
                              "); + doh.is("
                              ", dd.tests.dom.util.render(template, context)); + + // Safari: table/tr + template = new dd.DomTemplate('
                              {% for fruit in items %}{% endfor %}
                              Fruit
                              {{ fruit }}
                              '); + doh.is('
                              Fruit
                              apple
                              banana
                              orange
                              ', dd.tests.dom.util.render(template, context)); + + // Safari: tbody/tr + template = new dd.DomTemplate('
                              {% for fruit in items %}{% endfor %}
                              Fruit
                              {{ fruit }}
                              '); + doh.is('
                              Fruit
                              apple
                              banana
                              orange
                              ', dd.tests.dom.util.render(template, context)); + + // Safari: tr/th + template = new dd.DomTemplate("
                              {% for item in items %}{% ifequal item 'apple' %}{% endifequal %}{% endfor %}
                              ====={{ item }}
                              "); + doh.is("
                              =====applebananaorange
                              ", dd.tests.dom.util.render(template, context)); + + // Safari: tr/th + template = new dd.DomTemplate("
                              {% for item in items %}{% ifequal item 'apple' %}{% endifequal %}{% endfor %}
                              ====={{ item }}
                              "); + doh.is("
                              =====applebananaorange
                              ", dd.tests.dom.util.render(template, context)); + + var old = dojo.isWebKit; + dojo.isWebKit = true; + // Force WebKit because linebreaks work differently when nesting is parsed + template = new dd.DomTemplate('
                              \n\n\n{% for fruit in items %}\n\n{% endfor %}\n
                              NameCount
                              {{ fruit }}{{ fruit }}
                              '); + doh.is('
                              NameCount
                              appleapple
                              bananabanana
                              orangeorange
                              ', dd.tests.dom.util.render(template, context)); + dojo.isWebKit = old; + }, + function test_custom_attributes(){ + var dd = dojox.dtl; + + var context = new dd.Context({frag: {start: 10, stop: 20}}); + + var template = new dd.DomTemplate('
                              abc
                              '); + doh.is('
                              abc
                              ', dd.tests.dom.util.render(template, context)); + }, + function test_emptiness(){ + var dd = dojox.dtl; + + var context = new dd.Context({}); + var template = new dd.DomTemplate('
                              {% if data %}{% else %}

                              Please select a file using the left panel.

                              {% endif %}
                              '); + doh.is('

                              Please select a file using the left panel.

                              ', dd.tests.dom.util.render(template, context)); + + context.data = true; + doh.is('
                              ', dd.tests.dom.util.render(template, context)); + }, + function test_bools(){ + // checked, disabled, readonly + var dd = dojox.dtl; + + var context = new dd.Context({checked: false}); + var template = new dd.DomTemplate('
                              '); + doh.is('
                              ', dd.tests.dom.util.render(template, context)); + }, + function test_mixedCase(){ + var dd = dojox.dtl; + + var context = new dd.Context(); + var template = new dd.DomTemplate('
                              content
                              '); + doh.is('
                              content
                              ', dd.tests.dom.util.render(template, context)); + }, + function test_tabindex_lowercase(){ + var dd = dojox.dtl; + + var context = new dd.Context(); + var template = new dd.DomTemplate('
                              '); + //the following should not throw errors + dd.tests.dom.util.render(template, context); + }, + function test_tabIndex(){ + var dd = dojox.dtl; + + var context = new dd.Context(); + var template = new dd.DomTemplate('
                              '); + //the following should not throw errors in IE + dd.tests.dom.util.render(template, context); + } + ] +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/util.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/util.js new file mode 100644 index 0000000..b156dae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/dom/util.js @@ -0,0 +1,157 @@ +dojo.provide("dojox.dtl.tests.dom.util"); + +dojo.require("dojox.dtl.dom"); +dojo.require("dojox.dtl.render.dom"); +dojo.require("dojox.string.Builder"); + +dojox.dtl.DomBuffer.prototype.onClone = function(from, to){ + var clones = this._clones = this._clones || []; + + for(var i = 0, group; group = clones[i]; i++){ + for(var j = 0, item; item = group[j]; j++){ + if(item === from){ + group.push(to); + return + }else if(item === to){ + group.push(from); + return; + } + } + } + + clones.push([from, to]); +} +dojox.dtl.DomBuffer.prototype.onAddEvent = function(node, type, description){ + var events = this._events = this._events || []; + + var found = false; + for(var i = 0, evt; evt = events[i]; i++){ + if(evt[0] === node){ + found = true; + evt[1] = type; + evt[2] = description; + } + } + + if(!found){ + events.push([node, type, description]); + } +} + +dojox.dtl.tests.dom.util.render = function(/*DomTemplate*/ template, /*Context*/ context) { + try { + var div = document.createElement("div"); + dojo.style(div, "visibility", "hidden"); + var attach = document.createElement("div"); + div.appendChild(attach); + dojo.body().appendChild(div); + + var buffer = template.getBuffer(); + var canvas = new dojox.dtl.render.dom.Render(attach, template); + canvas.render(context, template, buffer); + var clones = buffer._clones; + var events = buffer._events; + + var first = dojox.dtl.tests.dom.util.serialize(canvas.domNode, template.tokens, clones, events).toString(); + + buffer = template.getBuffer(); + buffer._clones = clones; + buffer._events = events; + canvas.render(context, template, buffer); + + var second = dojox.dtl.tests.dom.util.serialize(canvas.domNode, template.tokens, clones, events).toString(); + + doh.is("Compare re-render: " + first, "Compare re-render: " + second); + return first; + } + catch(e){ + throw e; + }finally{ + div.parentNode.removeChild(div); + } +} + +dojox.dtl.tests.dom.util.serialize = function(node, tokens, clones, events, output) { + var types = dojox.dtl.dom.types; + clones = clones || []; + events = events || []; + + if (node.nodeType == 3) { + output.append(node.nodeValue); + }else{ + var name = node.nodeName.toLowerCase(); + if(!name){ return; } + + if (!output) { + output = new dojox.string.Builder(); + } + output.append("<").append(name); + + var found = {}; + var attributes = dojo.filter(tokens, function(item){ + return item[0] == dojox.dtl.TOKEN_ATTR && dojo.isString(item[3]) && dojo.trim(item[3]); + }); + attributes = dojo.map(attributes, "return item[2];"); + attributes = dojo.filter(attributes, function(attribute){ + if(!found[attribute]){ + return found[attribute] = true; + } + }); + + for(var i = 0, attribute; attribute = attributes[i]; i++){ + var value = ""; + if(attribute == "class"){ + value = node.className || value; + }else if(attribute == "for"){ + value = node.htmlFor || value; + }else{ + var bools = {checked: 1, disabled: 1, readonly: 1}; + if(bools[attribute] && typeof node[attribute] == "boolean"){ + value = dojo.attr(node, attribute) ? "true" : "false"; + }else{ + value = node.getAttribute(attribute, 2) || value; + } + if(node.tagName == "TEXTAREA" && (attribute == "type" || attribute == "value")){ + continue; + } + if(node.tagName == "INPUT" && attribute == "type" && value == "text"){ + continue; + } + if(dojo.isIE && (attribute == "href" || attribute == "src")){ + var hash = location.href.lastIndexOf(location.hash); + var href = location.href.substring(0, hash).split("/"); + href.pop(); + href = href.join("/") + "/"; + if(value.indexOf(href) == 0){ + value = value.replace(href, ""); + } + value = decodeURIComponent(value); + } + } + if(value !== ""){ + output.append(" ").append(attribute).append('="').append(value.replace(/"/g, '\\"')).append('"'); + } + } + + // Deal with events + if(events){ + for(var i = 0, evt; evt = events[i]; i++){ + if(evt[0] === node){ + output.append(" ").append(evt[1]).append('="').append(evt[2]).append('"'); + } + } + } + + if(!node.childNodes.length){ + output.append("/>"); + }else{ + output.append(">"); + dojo.forEach(node.childNodes, function(node){ + dojox.dtl.tests.dom.util.serialize(node, tokens, clones, events, output); + }); + output.append(""); + } + + return output; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/module.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/module.js new file mode 100644 index 0000000..f91da1c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/module.js @@ -0,0 +1,11 @@ +dojo.provide("dojox.dtl.tests.module"); + +try{ + dojo.require("dojox.dtl.tests.text.filter"); + dojo.require("dojox.dtl.tests.text.tag"); + dojo.require("dojox.dtl.tests.dom.tag"); + dojo.require("dojox.dtl.tests.dom.buffer"); + dojo.require("dojox.dtl.tests.context"); +}catch(e){ + doh.debug(e); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/dtl/tests/runTests.html new file mode 100644 index 0000000..32338f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox Djanto Template Language D.O.H. Unit Test Runner + + + Redirecting to D.O.H runner. + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/base.html b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/base.html new file mode 100644 index 0000000..30b731b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/base.html @@ -0,0 +1 @@ +
                              BaseBefore{% block base %}foo{% endblock %}BaseAfter
                              \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/hello.html b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/hello.html new file mode 100644 index 0000000..18e4c1a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/hello.html @@ -0,0 +1 @@ +Hello, {{ person }} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/pocket.html b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/pocket.html new file mode 100644 index 0000000..f78c520 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/pocket.html @@ -0,0 +1 @@ +{% block pocket %}Hot{% endblock %} Pocket \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/pocket2.html b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/pocket2.html new file mode 100755 index 0000000..547f9a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/templates/pocket2.html @@ -0,0 +1 @@ +{% for item in items %}({% block pocket %}Hot{% endblock %}) {% endfor %}Pocket \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/filter.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/filter.js new file mode 100644 index 0000000..1887efe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/filter.js @@ -0,0 +1,736 @@ +dojo.provide("dojox.dtl.tests.text.filter"); + +dojo.require("dojox.dtl"); +dojo.require("dojox.dtl.Context"); +dojo.require("dojox.dtl.utils.date"); +dojo.require("dojox.date.php"); +dojo.require("dojox.string.sprintf"); + +// If you update something here, update it in the HTML tests +doh.register("dojox.dtl.text.filter", + [ + function test_filter_add(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ four: 4 }); + tpl = new dd.Template('{{ four|add:"6" }}'); + t.is("10", tpl.render(context)); + context.four = "4"; + t.is("10", tpl.render(context)); + tpl = new dd.Template('{{ four|add:"six" }}'); + t.is("4", tpl.render(context)); + tpl = new dd.Template('{{ four|add:"6.6" }}'); + t.is("10", tpl.render(context)); + }, + function test_filter_addslashes(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ unslashed: "Test back slashes \\, double quotes \" and single quotes '" }) + var tpl = new dd.Template('{{ unslashed|addslashes|safe }}'); + t.is("Test back slashes \\\\, double quotes \\\" and single quotes \\'", tpl.render(context)); + }, + function test_filter_capfirst(t){ + var dd = dojox.dtl; + + var tpl = new dd.Template('{{ uncapped|capfirst }}'); + t.is("Cap", tpl.render(new dd.Context({ uncapped: "cap" }))); + }, + function test_filter_center(t){ + var dd = dojox.dtl; + + var context = new dd.Context(); + var tpl = new dd.Template('{{ narrow|center }}'); + context.narrow = "even"; + t.is("even", tpl.render(context)); + context.narrow = "odd"; + t.is("odd", tpl.render(context)); + tpl = new dd.Template('{{ narrow|center:"5" }}'); + context.narrow = "even"; + t.is("even ", tpl.render(context)); + context.narrow = "odd"; + t.is(" odd ", tpl.render(context)); + tpl = new dd.Template('{{ narrow|center:"6" }}'); + context.narrow = "even"; + t.is(" even ", tpl.render(context)); + context.narrow = "odd"; + t.is(" odd ", tpl.render(context)); + tpl = new dd.Template('{{ narrow|center:"12" }}'); + context.narrow = "even"; + t.is(" even ", tpl.render(context)); + context.narrow = "odd"; + t.is(" odd ", tpl.render(context)); + }, + function test_filter_cut(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ uncut: "Apples and oranges" }); + var tpl = new dd.Template('{{ uncut|cut }}'); + t.is("Apples and oranges", tpl.render(context)); + tpl = new dd.Template('{{ uncut|cut:"A" }}'); + t.is("pples and oranges", tpl.render(context)); + tpl = new dd.Template('{{ uncut|cut:" " }}'); + t.is("Applesandoranges", tpl.render(context)); + tpl = new dd.Template('{{ uncut|cut:"e" }}'); + t.is("Appls and orangs", tpl.render(context)); + }, + function test_filter_date(t){ + var dd = dojox.dtl; + var context = new dd.Context({ now: new Date(2007, 0, 1), then: new Date(2007, 1, 1) }); + + var tpl = new dd.Template('{{ now|date }}'); + t.is(dojox.dtl.utils.date.format(context.now, "N j, Y"), tpl.render(context)); + + context.then = new Date(2007, 0, 1); + tpl = new dd.Template('{{ now|date:"d" }}'); + t.is("01", tpl.render(context)); + + tpl = new dd.Template('{{ now|date:"D" }}'); + t.is("Mon", tpl.render(context)); + + tpl = new dd.Template('{{ now|date:"j" }}'); + t.is("1", tpl.render(context)); + + tpl = new dd.Template('{{ now|date:"l" }}'); + t.is("Monday", tpl.render(context)); + + tpl = new dd.Template('{{ now|date:"N" }}'); + t.is("Jan.", tpl.render(context)); + + tpl = new dd.Template('{{ now|date:"S" }}'); + t.is("st", tpl.render(context)); + context.now.setDate(2); + t.is("nd", tpl.render(context)); + context.now.setDate(3); + t.is("rd", tpl.render(context)); + context.now.setDate(4); + t.is("th", tpl.render(context)); + context.now.setDate(5); + t.is("th", tpl.render(context)); + context.now.setDate(6); + t.is("th", tpl.render(context)); + context.now.setDate(7); + t.is("th", tpl.render(context)); + context.now.setDate(8); + t.is("th", tpl.render(context)); + context.now.setDate(9); + t.is("th", tpl.render(context)); + context.now.setDate(10); + t.is("th", tpl.render(context)); + context.now.setDate(11); + t.is("th", tpl.render(context)); + context.now.setDate(12); + t.is("th", tpl.render(context)); + context.now.setDate(13); + t.is("th", tpl.render(context)); + context.now.setDate(14); + t.is("th", tpl.render(context)); + context.now.setDate(15); + t.is("th", tpl.render(context)); + context.now.setDate(16); + t.is("th", tpl.render(context)); + context.now.setDate(17); + t.is("th", tpl.render(context)); + context.now.setDate(18); + t.is("th", tpl.render(context)); + context.now.setDate(19); + t.is("th", tpl.render(context)); + context.now.setDate(20); + t.is("th", tpl.render(context)); + context.now.setDate(21); + t.is("st", tpl.render(context)); + context.now.setDate(22); + t.is("nd", tpl.render(context)); + context.now.setDate(23); + t.is("rd", tpl.render(context)); + context.now.setDate(24); + t.is("th", tpl.render(context)); + context.now.setDate(25); + t.is("th", tpl.render(context)); + context.now.setDate(26); + t.is("th", tpl.render(context)); + context.now.setDate(27); + t.is("th", tpl.render(context)); + context.now.setDate(28); + t.is("th", tpl.render(context)); + context.now.setDate(29); + t.is("th", tpl.render(context)); + context.now.setDate(30); + t.is("th", tpl.render(context)); + context.now.setDate(31); + t.is("st", tpl.render(context)); + context.now.setDate(1); + + tpl = new dd.Template('{{ now|date:"w" }}'); + t.is("1", tpl.render(context)); + + tpl = new dd.Template('{{ now|date:"z" }}'); + t.is("0", tpl.render(context)); + + tpl = new dd.Template('{{ now|date:"W" }}'); + t.is("1", tpl.render(context)); + }, + function test_filter_default(t){ + var dd = dojox.dtl; + + var context = new dd.Context(); + tpl = new dd.Template('{{ empty|default }}'); + t.is("", tpl.render(context)); + tpl = new dd.Template('{{ empty|default:"full" }}'); + t.is("full", tpl.render(context)); + context.empty = "not empty"; + t.is("not empty", tpl.render(context)); + }, + function test_filter_default_if_none(t){ + var dd = dojox.dtl; + + var context = new dd.Context(); + tpl = new dd.Template('{{ empty|default_if_none }}'); + t.is("", tpl.render(context)); + tpl = new dd.Template('{{ empty|default_if_none:"full" }}'); + t.is("", tpl.render(context)); + context.empty = null; + t.is("full", tpl.render(context)); + context.empty = "not empty"; + t.is("not empty", tpl.render(context)); + }, + function test_filter_dictsort(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + fruit: [ + { name: "lemons", toString: function(){ return this.name; } }, + { name: "apples", toString: function(){ return this.name; } }, + { name: "grapes", toString: function(){ return this.name; } } + ] + }); + tpl = new dd.Template('{{ fruit|dictsort|join:"|" }}'); + t.is("lemons|apples|grapes", tpl.render(context)); + tpl = new dd.Template('{{ fruit|dictsort:"name"|join:"|" }}'); + t.is("apples|grapes|lemons", tpl.render(context)); + }, + function test_filter_dictsort_reversed(t){ + var dd = dojox.dtl; + + context = new dd.Context({ + fruit: [ + { name: "lemons", toString: function(){ return this.name; } }, + { name: "apples", toString: function(){ return this.name; } }, + { name: "grapes", toString: function(){ return this.name; } } + ] + }); + tpl = new dd.Template('{{ fruit|dictsortreversed:"name"|join:"|" }}'); + t.is("lemons|grapes|apples", tpl.render(context)); + }, + function test_filter_divisibleby(t){ + var dd = dojox.dtl; + + context = new dd.Context(); + tpl = new dd.Template('{{ 4|divisibleby:"2" }}'); + t.is("true", tpl.render(context)); + context = new dd.Context({ number: 4 }); + tpl = new dd.Template('{{ number|divisibleby:3 }}'); + t.is("false", tpl.render(context)); + }, + function test_filter_escape(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ unescaped: "Try & cover the \"major\" 'situations' at once" }); + tpl = new dd.Template('{{ unescaped|escape }}'); + t.is("Try & cover <all> the "major" 'situations' at once", tpl.render(context)); + }, + function test_filter_filesizeformat(t){ + var dd = dojox.dtl; + + var tpl = new dd.Template('{{ 1|filesizeformat }}'); + t.is("1 byte", tpl.render()); + tpl = new dd.Template('{{ 512|filesizeformat }}'); + t.is("512 bytes", tpl.render()); + tpl = new dd.Template('{{ 1024|filesizeformat }}'); + t.is("1.0 KB", tpl.render()); + tpl = new dd.Template('{{ 2048|filesizeformat }}'); + t.is("2.0 KB", tpl.render()); + tpl = new dd.Template('{{ 1048576|filesizeformat }}'); + t.is("1.0 MB", tpl.render()); + tpl = new dd.Template('{{ 1073741824|filesizeformat }}'); + t.is("1.0 GB", tpl.render()); + }, + function test_filter_first(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + fruit: [ + { name: "lemons", toString: function(){ return this.name; } }, + { name: "apples", toString: function(){ return this.name; } }, + { name: "grapes", toString: function(){ return this.name; } } + ] + }); + tpl = new dd.Template('{{ fruit|first }}'); + t.is("lemons", tpl.render(context)); + }, + function test_filter_fix_ampersands(t){ + var dd = dojox.dtl; + + var tpl = new dd.Template('{{ "One & Two"|fix_ampersands|safe }}'); + t.is("One & Two", tpl.render()); + }, + function test_filter_floatformat(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ num1: 34.23234, num2: 34.00000 }); + var tpl = new dd.Template('{{ num1|floatformat }}'); + t.is("34.2", tpl.render(context)); + tpl = new dd.Template('{{ num2|floatformat }}'); + t.is("34", tpl.render(context)); + tpl = new dd.Template('{{ num1|floatformat:3 }}'); + t.is("34.232", tpl.render(context)); + tpl = new dd.Template('{{ num2|floatformat:3 }}'); + t.is("34.000", tpl.render(context)); + tpl = new dd.Template('{{ num1|floatformat:-3 }}'); + t.is("34.2", tpl.render(context)); + tpl = new dd.Template('{{ num2|floatformat:-3 }}'); + t.is("34", tpl.render(context)); + }, + function test_filter_get_digit(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ pi: 314159265 }); + var tpl = new dd.Template('{{ pi|get_digit:1 }}'); + t.is("3", tpl.render(context)); + tpl = new dd.Template('{{ pi|get_digit:"2" }}'); + t.is("1", tpl.render(context)); + tpl = new dd.Template('{{ pi|get_digit:0 }}'); + t.is("314159265", tpl.render(context)); + tpl = new dd.Template('{{ "nada"|get_digit:1 }}'); + t.is("0", tpl.render(context)); + }, + function test_filter_iriencode(t){ + var dd = dojox.dtl; + + var tpl = new dd.Template('{{ "http://homepage.com/~user"|urlencode|iriencode }}'); + t.is("http%3A//homepage.com/%7Euser", tpl.render()); + tpl = new dd.Template('{{ "pottedmeat@dojotoolkit.org"|iriencode }}'); + t.is("pottedmeat%40dojotoolkit.org", tpl.render()); + }, + function test_filter_join(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ items: ["foo", "bar", "baz" ]}); + var tpl = new dd.Template("{{ items|join }}"); + t.is("foo,bar,baz", tpl.render(context)); + + tpl = new dd.Template('{{ items|join:"mustard" }}'); + t.is("foomustardbarmustardbaz", tpl.render(context)); + }, + function test_filter_length(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + fruit: [ + { name: "lemons", toString: function(){ return this.name; } }, + { name: "apples", toString: function(){ return this.name; } }, + { name: "grapes", toString: function(){ return this.name; } } + ] + }); + tpl = new dd.Template('{{ fruit|length }}'); + t.is("3", tpl.render(context)); + tpl = new dd.Template('{{ fruit|first|length }}'); + t.is("6", tpl.render(context)); + }, + function test_filter_length_is(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + fruit: [ + { name: "lemons", toString: function(){ return this.name; } }, + { name: "apples", toString: function(){ return this.name; } }, + { name: "grapes", toString: function(){ return this.name; } } + ] + }); + tpl = new dd.Template('{{ fruit|length_is:"3" }}'); + t.is("true", tpl.render(context)); + tpl = new dd.Template('{{ fruit|length_is:"4" }}'); + t.is("false", tpl.render(context)); + }, + function test_filter_linebreaks(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ unbroken: "This is just\r\n\n\ra bunch\nof text\n\n\nand such" }); + tpl = new dd.Template('{{ unbroken|linebreaks|safe }}'); + t.is("

                              This is just

                              \n\n

                              a bunch
                              of text

                              \n\n

                              and such

                              ", tpl.render(context)); + }, + function test_filter_linebreaksbr(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ unbroken: "This is just\r\n\n\ra bunch\nof text\n\n\nand such" }); + tpl = new dd.Template('{{ unbroken|linebreaksbr|safe }}'); + t.is("This is just

                              a bunch
                              of text


                              and such", tpl.render(context)); + }, + function test_filter_linenumbers(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ lines: "One\nTwo\nThree\nFour\n" }); + var tpl = new dd.Template('{{ lines|linenumbers }}'); + t.is("1. One\n2. Two\n3. Three\n4. Four\n5. ", tpl.render(context)); + }, + function test_filter_ljust(t){ + var dd = dojox.dtl; + + var context = new dd.Context(); + var tpl = new dd.Template('{{ narrow|ljust }}'); + context.narrow = "even"; + t.is("even", tpl.render(context)); + context.narrow = "odd"; + t.is("odd", tpl.render(context)); + tpl = new dd.Template('{{ narrow|ljust:"5" }}'); + context.narrow = "even"; + t.is("even ", tpl.render(context)); + context.narrow = "odd"; + t.is("odd ", tpl.render(context)); + tpl = new dd.Template('{{ narrow|ljust:"6" }}'); + context.narrow = "even"; + t.is("even ", tpl.render(context)); + context.narrow = "odd"; + t.is("odd ", tpl.render(context)); + tpl = new dd.Template('{{ narrow|ljust:"12" }}'); + context.narrow = "even"; + t.is("even ", tpl.render(context)); + context.narrow = "odd"; + t.is("odd ", tpl.render(context)); + }, + function test_filter_lower(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ mixed: "MiXeD" }); + var tpl = new dd.Template('{{ mixed|lower }}'); + t.is("mixed", tpl.render(context)); + }, + function test_filter_make_list(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ word: "foo", number: 314159265, arr: ["first", "second"], obj: {first: "first", second: "second"} }); + var tpl = new dd.Template('{{ word|make_list|join:"|" }} {{ number|make_list|join:"|" }} {{ arr|make_list|join:"|" }} {{ obj|make_list|join:"|" }}'); + t.is("f|o|o 3|1|4|1|5|9|2|6|5 first|second first|second", tpl.render(context)); + }, + function test_filter_phone2numeric(t){ + var dd = dojox.dtl; + + tpl = new dd.Template('{{ "1-800-pottedmeat"|phone2numeric }}'); + t.is("1-800-7688336328", tpl.render()); + }, + function test_filter_pluralize(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ animals: ["bear", "cougar", "aardvark"] }); + var tpl = new dd.Template('{{ animals|length }} animal{{ animals|length|pluralize }}'); + t.is("3 animals", tpl.render(context)); + context.animals = ["bear"]; + t.is("1 animal", tpl.render(context)); + context = new dd.Context({ fairies: ["tinkerbell", "Andy Dick" ]}); + tpl = new dd.Template('{{ fairies|length }} fair{{ fairies|length|pluralize:"y,ies" }}'); + t.is("2 fairies", tpl.render(context)); + context.fairies.pop(); + t.is("1 fairy", tpl.render(context)); + }, + function test_filter_pprint(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ animals: ["bear", "cougar", "aardvark"] }); + tpl = new dd.Template("{{ animals|pprint|safe }}"); + t.is('["bear","cougar","aardvark"]', tpl.render(context)); + }, + function test_filter_random(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + fruit: [ + { name: "lemons", toString: function(){ return this.name; } }, + { name: "apples", toString: function(){ return this.name; } }, + { name: "grapes", toString: function(){ return this.name; } } + ] + }); + tpl = new dd.Template('{{ fruit|random }}'); + result = tpl.render(context); + t.t(result == "lemons" || result == "apples" || result == "grapes"); + var different = false; + for(var i = 0; i < 10; i++){ + // Check to see if it changes + if(result != tpl.render(context) && result == "lemons" || result == "apples" || result == "grapes"){ + different = true; + break; + } + } + t.t(different); + }, + function test_filter_removetags(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ tagged: "I'm gonna do something with the filter" }); + tpl = new dd.Template('{{ tagged|removetags:"script "|safe }}'); + t.is("I'm gonna do something evil with the filter", tpl.render(context)); + }, + function test_filter_rjust(t){ + var dd = dojox.dtl; + + var context = new dd.Context(); + var tpl = new dd.Template('{{ narrow|rjust }}'); + context.narrow = "even"; + t.is("even", tpl.render(context)); + context.narrow = "odd"; + t.is("odd", tpl.render(context)); + tpl = new dd.Template('{{ narrow|rjust:"5" }}'); + context.narrow = "even"; + t.is(" even", tpl.render(context)); + context.narrow = "odd"; + t.is(" odd", tpl.render(context)); + tpl = new dd.Template('{{ narrow|rjust:"6" }}'); + context.narrow = "even"; + t.is(" even", tpl.render(context)); + context.narrow = "odd"; + t.is(" odd", tpl.render(context)); + tpl = new dd.Template('{{ narrow|rjust:"12" }}'); + context.narrow = "even"; + t.is(" even", tpl.render(context)); + context.narrow = "odd"; + t.is(" odd", tpl.render(context)); + }, + function test_filter_slice(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + fruit: [ + { name: "lemons", toString: function(){ return this.name; } }, + { name: "apples", toString: function(){ return this.name; } }, + { name: "grapes", toString: function(){ return this.name; } } + ] + }); + tpl = new dd.Template('{{ fruit|slice:":1"|join:"|" }}'); + t.is("lemons", tpl.render(context)); + tpl = new dd.Template('{{ fruit|slice:"1"|join:"|" }}'); + t.is("apples|grapes", tpl.render(context)); + tpl = new dd.Template('{{ fruit|slice:"1:3"|join:"|" }}'); + t.is("apples|grapes", tpl.render(context)); + tpl = new dd.Template('{{ fruit|slice:""|join:"|" }}'); + t.is("lemons|apples|grapes", tpl.render(context)); + tpl = new dd.Template('{{ fruit|slice:"-1"|join:"|" }}'); + t.is("grapes", tpl.render(context)); + tpl = new dd.Template('{{ fruit|slice:":-1"|join:"|" }}'); + t.is("lemons|apples", tpl.render(context)); + tpl = new dd.Template('{{ fruit|slice:"-2:-1"|join:"|" }}'); + t.is("apples", tpl.render(context)); + }, + function test_filter_slugify(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ unslugged: "Apples and oranges()"}); + tpl = new dd.Template('{{ unslugged|slugify }}'); + t.is("apples-and-oranges", tpl.render(context)); + }, + function test_filter_stringformat(t){ + var dd = dojox.dtl; + + var tpl = new dd.Template('{{ 42|stringformat:"7.3f" }}'); + t.is(" 42.000", tpl.render()); + }, + function test_filter_striptags(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ tagged: "I'm gonna do something with the filter" }); + tpl = new dd.Template('{{ tagged|striptags|safe }}'); + t.is("I'm gonna do something evil with the filter", tpl.render(context)); + }, + function test_filter_time(t){ + var dd = dojox.dtl; + var context = new dd.Context({ now: new Date(2007, 0, 1) }); + + tpl = new dd.Template('{{ now|time }}'); + t.is(dojox.dtl.utils.date.format(context.now, "P"), tpl.render(context)); + }, + function test_filter_timesince(t){ + var dd = dojox.dtl; + var context = new dd.Context({ now: new Date(2007, 0, 1), then: new Date(2007, 1, 1) }); + + tpl = new dd.Template('{{ now|timesince:then }}'); + t.is("1 month", tpl.render(context)); + context.then = new Date(2007, 0, 5); + t.is("4 days", tpl.render(context)); + context.then = new Date(2007, 0, 17); + t.is("2 weeks", tpl.render(context)); + context.then = new Date(2008, 1, 1); + t.is("1 year", tpl.render(context)); + }, + function test_filter_timeuntil(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ now: new Date(2007, 0, 1), then: new Date(2007, 1, 1) }); + var tpl = new dd.Template('{{ now|timeuntil:then }}'); + t.is("1 month", tpl.render(context)); + context.then = new Date(2007, 0, 5); + t.is("4 days", tpl.render(context)); + context.then = new Date(2007, 0, 17); + t.is("2 weeks", tpl.render(context)); + context.then = new Date(2008, 1, 1); + t.is("1 year", tpl.render(context)); + }, + function test_filter_title(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ name: "potted meat" }); + var tpl = new dd.Template("{{ name|title|safe }}"); + t.is("Potted Meat", tpl.render(context)); + + context.name = "What's going on?"; + t.is("What's Going On?", tpl.render(context)); + + context.name = "use\nline\nbREAKs\tand tabs"; + t.is("Use\nLine\nBreaks\tAnd Tabs", tpl.render(context)); + }, + function test_filter_truncatewords(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ word: "potted meat writes a lot of tests" }); + var tpl = new dd.Template("{{ word|truncatewords }}"); + t.is(context.word, tpl.render(context)); + + tpl = new dd.Template('{{ word|truncatewords:"1" }}'); + t.is("potted", tpl.render(context)); + + tpl = new dd.Template('{{ word|truncatewords:"2" }}'); + t.is("potted meat", tpl.render(context)); + + tpl = new dd.Template('{{ word|truncatewords:20" }}'); + t.is(context.word, tpl.render(context)); + + context.word = "potted \nmeat \nwrites a lot of tests"; + tpl = new dd.Template('{{ word|truncatewords:"3" }}'); + t.is("potted \nmeat \nwrites", tpl.render(context)); + }, + function test_filter_truncatewords_html(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + body: "Test a string that ends inside a tag with different args", + size: 2 + }) + var tpl = new dd.Template('{{ body|truncatewords_html:size|safe }}'); + t.is("Test a ...", tpl.render(context)); + context.size = 4; + t.is("Test a string that ...", tpl.render(context)); + context.size = 6; + t.is("Test a string that ends inside ...", tpl.render(context)); + }, + function test_filter_unordered_list(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ states: ["States", [["Kansas", [["Lawrence", []], ["Topeka", []]]], ["Illinois", []]]] }); + tpl = new dd.Template('{{ states|unordered_list|safe }}'); + t.is("\t
                            • States\n\t
                                \n\t\t
                              • Kansas\n\t\t
                                  \n\t\t\t
                                • Lawrence
                                • \n\t\t\t
                                • Topeka
                                • \n\t\t
                                \n\t\t
                              • \n\t\t
                              • Illinois
                              • \n\t
                              \n\t
                            • ", tpl.render(context)); + }, + function test_filter_upper(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ mixed: "MiXeD" }); + var tpl = new dd.Template('{{ mixed|upper }}'); + t.is("MIXED", tpl.render(context)); + }, + function test_filter_urlencode(t){ + var dd = dojox.dtl; + + var tpl = new dd.Template('{{ "http://homepage.com/~user"|urlencode }}'); + t.is("http%3A//homepage.com/%7Euser", tpl.render()); + }, + function test_filter_urlize(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + body: "My favorite websites are www.televisionwithoutpity.com, http://daringfireball.net and you can email me at pottedmeat@sitepen.com" + }); + var tpl = new dd.Template("{{ body|urlize|safe }}"); + t.is('My favorite websites are www.televisionwithoutpity.com http://daringfireball.net and you can email me at pottedmeat@sitepen.com', tpl.render(context)); + }, + function test_filter_urlizetrunc(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + body: "My favorite websites are www.televisionwithoutpity.com, http://daringfireball.net and you can email me at pottedmeat@sitepen.com" + }); + var tpl = new dd.Template("{{ body|urlizetrunc|safe }}"); + t.is('My favorite websites are www.televisionwithoutpity.com http://daringfireball.net and you can email me at pottedmeat@sitepen.com', tpl.render(context)); + tpl = new dd.Template('{{ body|urlizetrunc:"2"|safe }}'); + t.is('My favorite websites are www.televisionwithoutpity.com http://daringfireball.net and you can email me at pottedmeat@sitepen.com', tpl.render(context)); + tpl = new dd.Template('{{ body|urlizetrunc:"10"|safe }}'); + t.is('My favorite websites are www.tel... http://... and you can email me at pottedmeat@sitepen.com', tpl.render(context)); + }, + function test_filter_wordcount(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + food: "Hot Pocket" + }); + var tpl = new dd.Template("{{ food|wordcount }}"); + t.is("2", tpl.render(context)); + context.food = ""; + t.is("0", tpl.render(context)); + context.food = "A nice barbecue, maybe a little grilled veggies, some cole slaw."; + t.is("11", tpl.render(context)); + }, + function test_filter_wordwrap(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + body: "shrimp gumbo, shrimp pie, shrimp scampi, shrimp stew, fried shrimp, baked shrimp, shrimp o grotten, grilled shrimp, shrimp on a stick, shrimp salad, shrimp pop overs, shrimp cake, shrimp legs, shrimp stuffed eggs, shrimp cre oll, shrimp soup, creamed shrimp on toast, shrimp crapes, shrimply good crescent rolls, shrimp pizza, scalloped shrimp, boiled shrimp, shrimp cocktail" + }); + var tpl = new dd.Template("{{ body|wordwrap }}"); + t.is(context.body, tpl.render(context)); + tpl = new dd.Template("{{ body|wordwrap:width }}"); + context.width = 10; + t.is("shrimp\ngumbo,\nshrimp\npie,\nshrimp\nscampi,\nshrimp\nstew,\nfried\nshrimp,\nbaked\nshrimp,\nshrimp o\ngrotten,\ngrilled\nshrimp,\nshrimp on\na stick,\nshrimp\nsalad,\nshrimp pop\novers,\nshrimp\ncake,\nshrimp\nlegs,\nshrimp\nstuffed\neggs,\nshrimp cre\noll,\nshrimp\nsoup,\ncreamed\nshrimp on\ntoast,\nshrimp\ncrapes,\nshrimply\ngood\ncrescent\nrolls,\nshrimp\npizza,\nscalloped\nshrimp,\nboiled\nshrimp,\nshrimp\ncocktail", tpl.render(context)); + tpl = new dd.Template('{{ body|wordwrap:"80" }}'); + t.is("shrimp gumbo, shrimp pie, shrimp scampi, shrimp stew, fried shrimp, baked\nshrimp, shrimp o grotten, grilled shrimp, shrimp on a stick, shrimp salad,\nshrimp pop overs, shrimp cake, shrimp legs, shrimp stuffed eggs, shrimp cre oll,\nshrimp soup, creamed shrimp on toast, shrimp crapes, shrimply good crescent\nrolls, shrimp pizza, scalloped shrimp, boiled shrimp, shrimp cocktail", tpl.render(context)); + }, + function test_filter_yesno(t){ + var dd = dojox.dtl; + + var context = new dd.Context(); + tpl = new dd.Template('{{ true|yesno }}'); + t.is("yes", tpl.render(context)); + context = new dd.Context({ test: "value" }); + tpl = new dd.Template('{{ test|yesno }}'); + t.is("yes", tpl.render(context)); + tpl = new dd.Template('{{ false|yesno }}'); + t.is("no", tpl.render(context)); + tpl = new dd.Template('{{ null|yesno }}'); + t.is("maybe", tpl.render(context)); + tpl = new dd.Template('{{ true|yesno:"bling,whack,soso" }}'); + t.is("bling", tpl.render(context)); + context = new dd.Context({ test: "value" }); + tpl = new dd.Template('{{ test|yesno:"bling,whack,soso" }}'); + t.is("bling", tpl.render(context)); + tpl = new dd.Template('{{ false|yesno:"bling,whack,soso" }}'); + t.is("whack", tpl.render(context)); + tpl = new dd.Template('{{ null|yesno:"bling,whack,soso" }}'); + t.is("soso", tpl.render(context)); + tpl = new dd.Template('{{ null|yesno:"bling,whack" }}'); + t.is("whack", tpl.render(context)); + }, + function test_filter_contrib_key(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + headers: ["action", "type"], + items: [ + { + action: "eat", + type: "apple" + }, + { + action: "mash", + type: "banana" + } + ] + }); + + var tpl = new dd.Template("{% load dojox.dtl.contrib.objects %}
                                {% for item in items %}
                                • {% for header in headers %}
                                • {{ header }}: {{ item|key:header }}
                                • {% endfor %}
                              • {% endfor %}
                              "); + t.is('
                                • action: eat
                                • type: apple
                                • action: mash
                                • type: banana
                              ', tpl.render(context)); + } + ] +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/load.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/load.js new file mode 100644 index 0000000..06dd9da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/load.js @@ -0,0 +1,2 @@ +dojo.provide("dojox.dtl.tests.text.load"); +// Test for the {% load %} tag \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/tag.js b/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/tag.js new file mode 100644 index 0000000..3ec4496 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/tests/text/tag.js @@ -0,0 +1,490 @@ +dojo.provide("dojox.dtl.tests.text.tag"); + +dojo.require("dojox.dtl"); +dojo.require("dojox.dtl.Context"); + +doh.register("dojox.dtl.text.tag", + [ + function test_tag_block_and_extends(t){ + var dd = dojox.dtl; + + // Simple (messy) string-based extension + var template = new dd.Template('{% extends "../../dojox/dtl/tests/templates/pocket.html" %}{% block pocket %}Simple{% endblock %}'); + t.is("Simple Pocket", template.render()); + + // Variable replacement + var context = new dd.Context({ + parent: "../../dojox/dtl/tests/templates/pocket.html" + }) + template = new dd.Template('{% extends parent %}{% block pocket %}Variabled{% endblock %}'); + t.is("Variabled Pocket", template.render(context)); + + // Nicer dojo.moduleUrl and variable based extension + context.parent = dojo.moduleUrl("dojox.dtl.tests.templates", "pocket.html"); + template = new dd.Template('{% extends parent %}{% block pocket %}Slightly More Advanced{% endblock %}'); + t.is("Slightly More Advanced Pocket", template.render(context)); + + // dojo.moduleUrl with support for more variables. + // This is important for HTML templates where the "shared" flag will be important. + context.parent = { + url: dojo.moduleUrl("dojox.dtl.tests.templates", "pocket.html") + } + template = new dd.Template('{% extends parent %}{% block pocket %}Super{% endblock %}'); + t.is("Super Pocket", template.render(context)); + }, + function test_tag_block(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + parent: dojo.moduleUrl("dojox.dtl.tests.templates", "pocket2.html"), + items: ["apple", "banana", "lemon" ] + }); + + var template = new dd.Template("{% extends parent %}{% block pocket %}My {{ item }}{% endblock %}"); + t.is("(My apple) (My banana) (My lemon) Pocket", template.render(context)); + }, + function test_tag_block_super(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + parent: dojo.moduleUrl("dojox.dtl.tests.templates", "pocket2.html"), + items: ["apple", "banana", "lemon" ] + }); + + var template = new dd.Template("{% extends parent %}{% block pocket %}My {{ item }} {{ block.super }}{% endblock %}"); + t.is("(My apple Hot) (My banana Hot) (My lemon Hot) Pocket", template.render(context)); + }, + function test_tag_comment(t){ + var dd = dojox.dtl; + + var template = new dd.Template('Hot{% comment %}Make me disappear{% endcomment %} Pocket'); + t.is("Hot Pocket", template.render()); + + var found = false; + try{ + template = new dd.Template('Hot{% comment %}Make me disappear Pocket'); + }catch(e){ + t.is("Unclosed tag found when looking for endcomment", e.message); + found = true; + } + t.t(found); + }, + function test_tag_cycle(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + items: ["apple", "banana", "lemon"], + unplugged: "Torrey" + }); + var template = new dd.Template("{% for item in items %}{% cycle 'Hot' 'Diarrhea' unplugged 'Extra' %} Pocket. {% endfor %}"); + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. ", template.render(context)); + // Make sure that it doesn't break on re-render + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. ", template.render(context)); + + // Test repeating the loop + context.items.push("guava", "mango", "pineapple"); + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. Extra Pocket. Hot Pocket. Diarrhea Pocket. ", template.render(context)); + + // Repeat the above tests for the old style + // ======================================== + context.items = context.items.slice(0, 3); + template = new dd.Template("{% for item in items %}{% cycle Hot,Diarrhea,Torrey,Extra %} Pocket. {% endfor %}"); + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. ", template.render(context)); + // Make sure that it doesn't break on re-render + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. ", template.render(context)); + + // Test repeating the loop + context.items.push("guava", "mango", "pineapple"); + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. Extra Pocket. Hot Pocket. Diarrhea Pocket. ", template.render(context)); + + // Now test outside of the for loop + // ================================ + context = new dojox.dtl.Context({ unplugged: "Torrey" }); + template = new dd.Template("{% cycle 'Hot' 'Diarrhea' unplugged 'Extra' as steakum %} Pocket. {% cycle steakum %} Pocket. {% cycle steakum %} Pocket."); + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket.", template.render(context)); + + template = new dd.Template("{% cycle 'Hot' 'Diarrhea' unplugged 'Extra' as steakum %} Pocket. {% cycle steakum %} Pocket. {% cycle steakum %} Pocket. {% cycle steakum %} Pocket. {% cycle steakum %} Pocket. {% cycle steakum %} Pocket."); + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. Extra Pocket. Hot Pocket. Diarrhea Pocket.", template.render(context)); +//t.t(false) + // Test for nested objects + context.items = { + list: ["apple", "banana", "lemon"] + }; + template = new dd.Template("{% for item in items.list %}{% cycle 'Hot' 'Diarrhea' unplugged 'Extra' %} Pocket. {% endfor %}"); + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. ", template.render(context)); + // Make sure that it doesn't break on re-render + t.is("Hot Pocket. Diarrhea Pocket. Torrey Pocket. ", template.render(context)); + }, + function test_tag_debug(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + items: ["apple", "banana", "lemon"], + unplugged: "Torrey" + }); + var template = new dd.Template("{% debug %}"); + t.is('[items: object]\n[unplugged: string]\n', template.render(context)); + }, + function test_tag_filter(t){ + var dd = dojox.dtl; + + var template = new dd.Template('{% filter lower|center:"15" %}Hot Pocket{% endfilter %}'); + t.is(" hot pocket ", template.render()); + }, + function test_tag_firstof(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + found: "unicorn" + }); + + var template = new dd.Template("{% firstof one two three four found %}"); + t.is("unicorn", template.render(context)); + + context.four = null; + t.is("null", template.render(context)); + + context.three = false; + t.is("false", template.render(context)); + }, + function test_tag_for(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + items: ["apple", "banana", "lemon"] + }); + var template = new dd.Template("{% for item in items %}
                            • {{ item }}
                            • {% endfor %}"); + t.is("
                            • apple
                            • banana
                            • lemon
                            • ", template.render(context)); + + template = new dd.Template("{% for item in items reversed %}
                            • {{ item }}
                            • {% endfor %}"); + t.is("
                            • lemon
                            • banana
                            • apple
                            • ", template.render(context)); + + context.items = { + apple: "Red Delicious", + banana: "Cavendish", + lemon: "Citrus" + }; + template = new dd.Template("{% for key, value in items.items %}
                            • {{ value }} {{ key|title }}
                            • {% endfor %}"); + t.is("
                            • Red Delicious Apple
                            • Cavendish Banana
                            • Citrus Lemon
                            • ", template.render(context)); + + // The same thing above, but using "zipped" sets + context.items = [ + ["apple", "Red Delicious", 1.99], + ["banana", "Cavendish", 0.49], + ["lemon", "Citrus", 0.29] + ]; + template = new dd.Template("{% for fruit, type, price in items %}
                            • {{ type }} {{ fruit|title }} costs ${{ price}}
                            • {% endfor %}"); + t.is("
                            • Red Delicious Apple costs $1.99
                            • Cavendish Banana costs $0.49
                            • Citrus Lemon costs $0.29
                            • ", template.render(context)); + + template = new dd.Template("{% for fruit, type, price in items reversed %}
                            • {{ type }} {{ fruit|title }} costs ${{ price}}
                            • {% endfor %}"); + t.is("
                            • Citrus Lemon costs $0.29
                            • Cavendish Banana costs $0.49
                            • Red Delicious Apple costs $1.99
                            • ", template.render(context)); + + // Now to create some errors + var found = false; + try { + template = new dd.Template("{% for item initems %}
                            • {{ item }}
                            • {% endfor %}"); + }catch(e){ + found = true; + t.is("'for' statements should have at least four words: for item initems", e.message); + } + t.t(found); + + found = false; + try { + template = new dd.Template("{% for item ni items %}
                            • {{ item }}
                            • {% endfor %}"); + }catch(e){ + found = true; + t.is("'for' tag received an invalid argument: for item ni items", e.message); + } + t.t(found); + + found = false; + try { + template = new dd.Template("{% for my item in items %}
                            • {{ item }}
                            • {% endfor %}"); + }catch(e){ + found = true; + t.is("'for' tag received an invalid argument: for my item in items", e.message); + } + t.t(found); + }, + function test_tag_if(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + jokes: { + hot_pockets: true, + unicycles: true, + bacon: true + } + }); + var template = new dd.Template("Comedian is {% if jokes.hot_pockets and jokes.unicycles and jokes.bacon %}funny{% else %}not funny{% endif %}"); + t.is("Comedian is funny", template.render(context)); + + context.jokes.unicycles = false; + t.is("Comedian is not funny", template.render(context)); + + context.comedians = { + hedberg: true, + gaffigan: true, + cook: true + }; + template = new dd.Template("Show will be {% if comedians.hedberg or comedians.gaffigan %}worth seeing{% else %}not worth seeing{% endif %}"); + t.is("Show will be worth seeing", template.render(context)); + + // NOTE: "and" is implied by nesting. eg {% if sunny %}{% if windy %}It's Sunny and Windy{% endif %}{% endif %} + // Not mixing ands and ors allows for MUCH faster rendering + template = new dd.Template("Show will {% if comedians.hedberg or comedians.gaffigan %}{% if comedians.cook %}not {% endif %}be worth seeing{% else %}not be worth seeing{% endif %}"); + t.is("Show will not be worth seeing", template.render(context)); + + context.comedians.cook = false; + t.is("Show will be worth seeing", template.render(context)); + + template = new dd.Template("Show will be {% if comedians.hedberg and comedians.gaffigan and not comedians.cook %}AWESOME{% else %}almost awesome{% endif %}"); + t.is("Show will be AWESOME", template.render(context)); + + context.comedians.cook = true; + t.is("Show will be almost awesome", template.render(context)); + + // Now we test for errors. + var found = false; + try { + template = new dd.Template("Show will be {% if comedians.hedberg or comedians.gaffigan and not comedians.cook %}worth seeing{% else %}not worth seeing{% endif %}"); + }catch(e){ + found = true; + t.is("'if' tags can't mix 'and' and 'or'", e.message); + } + t.t(found); + }, + function test_tag_ifchanged(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + year: 2008, + days: [ + new Date(2008, 0, 12), + new Date(2008, 0, 28), + new Date(2008, 1, 1), + new Date(2008, 1, 1), + new Date(2008, 1, 1) + ] + }); + + var template = new dd.Template("

                              Archive for {{ year }}

                              "+ +"{% for date in days %}"+ +'{% ifchanged %}

                              {{ date|date:"F" }}

                              {% endifchanged %}'+ +'{{ date|date:\'j\' }}'+ +"{% endfor %}"); + t.is('

                              Archive for 2008

                              '+ +'

                              January

                              '+ +'12'+ +'28'+ +'

                              February

                              '+ +'1'+ +'1'+ +'1', template.render(context)); + + template = new dd.Template('{% for date in days %}'+ +'{% ifchanged date.date %} {{ date.date }} {% endifchanged %}'+ +'{% ifchanged date.hour date.date %}'+ +'{{ date.hour }}'+ +'{% endifchanged %}'+ +'{% endfor %}'); + t.is(' 2008-01-12 0 2008-01-28 0 2008-02-01 0', template.render(context)); + }, + function test_tag_ifequal(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + user: { + id: 314 + }, + comment: { + user_id: 314 + } + }); + + var template = new dd.Template("{% ifequal user.id comment.user_id %}You posted this{% endifequal %}"); + t.is("You posted this", template.render(context)); + + context.user.id = 313; + t.is("", template.render(context)); + + // Errors + var found = false; + try { + template = new dd.Template("{% ifequal user.id %}You posted this{% endifequal %}"); + }catch(e){ + found = true; + t.is("ifequal takes two arguments", e.message); + } + t.t(found); + + found = false; + try { + template = new dd.Template("{% ifequal user.id comment.user_id %}You posted this{% endif %}"); + }catch(e){ + found = true; + t.is("No tag found for endif", e.message); + } + t.t(found); + + template = new dd.Template('{% ifequal empty "" %}empty{% endifequal %}'); + doh.is('empty', template.render()); + }, + function test_tag_ifnotequal(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + favorite: "hedberg", + comedian: "cook" + }); + + var template = new dd.Template("{% ifnotequal favorite comedian %}Not your favorite{% else %}Your favorite{% endifnotequal %}"); + t.is("Not your favorite", template.render(context)); + + context.comedian = "hedberg"; + t.is("Your favorite", template.render(context)); + }, + function test_tag_include(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + hello: dojo.moduleUrl("dojox.dtl.tests.templates", "hello.html"), + person: "Bob", + people: ["Charles", "Ralph", "Julia"] + }); + + var template = new dd.Template("{% include hello %}"); + t.is("Hello, Bob", template.render(context)); + + template = new dd.Template('{% include "../../dojox/dtl/tests/templates/hello.html" %}'); + t.is("Hello, Bob", template.render(context)); + + template = new dd.Template('{% for person in people %}{% include hello %} {% endfor %}'); + t.is("Hello, Charles Hello, Ralph Hello, Julia ", template.render(context)); + }, + function test_tag_load(t){ + t.f(dojox.dtl.tests.text.load); + new dojox.dtl.Template("{% load dojox.dtl.tests.text.load %}"); + t.t(dojox.dtl.tests.text.load); + }, + function test_tag_now(t){ + var dd = dojox.dtl; + + var template = new dd.Template('It is {% now "jS F Y H:i" %}'); + t.t(template.render().match(/^It is \d{1,2}[a-z]{2} [A-Z][a-z]+ [0-9]{4,} \d{2}:\d{2}$/)); + + template = new dd.Template('It is the {% now "jS \\o\\f F" %}'); + t.t(template.render().match(/^It is the \d{1,2}[a-z]{2} of [A-Z][a-z]+$/)); + + template = new dd.Template("It is the {% now 'jS \\o\\f F' %}"); + t.t(template.render().match(/^It is the \d{1,2}[a-z]{2} of [A-Z][a-z]+$/)); + + var found = false; + try{ + template = new dd.Template("It is the {% now 'jS \\o\\f F %}"); + }catch(e){ + found = true; + t.is("'now' statement takes one argument", e.message); + } + t.t(found); + + found = false; + try{ + template = new dd.Template('It is the {% now "jS \\o\\f F %}'); + }catch(e){ + found = true; + t.is("'now' statement takes one argument", e.message); + } + t.t(found); + }, + function test_tag_regroup(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + people: [ + { firstName: "Bill", lastName: "Clinton", gender: "Male" }, + { firstName: "Margaret", lastName: "Thatcher", gender: "Female" }, + { firstName: "Path", lastName: "Smith", gender: "Unkown" }, + { firstName: "Condoleezza", lastName: "Rice", gender: "Female" }, + { firstName: "George", lastName: "Bush", gender: "Male" } + ] + }); + + var template = new dd.Template("{% regroup people|dictsort:'gender' by gender as grouped %}
                                {% for group in grouped %}
                              • {{ group.grouper }}
                                  {% for item in group.list %}
                                • {{ item.firstName }} {{ item.lastName }}
                                • {% endfor %}
                              • {% endfor %}
                              "); + t.t(template.render(context).match(new RegExp("^
                              • Female
                                • (Condoleezza Rice|Margaret Thatcher)
                                • (Condoleezza Rice|Margaret Thatcher)
                              • Male
                                • (Bill Clinton|George Bush)
                                • (Bill Clinton|George Bush)
                              • Unkown
                                • Path Smith
                              $"))); + }, + function test_tag_spaceless(t){ + var dd = dojox.dtl; + + var template = new dd.Template("{% spaceless %}
                                \n
                              • Hot
                              • \n\n
                              • Pocket
                              • \n
                              {% endspaceless %}"); + t.is("
                              • Hot
                              • Pocket
                              ", template.render()); + }, + function test_tag_ssi(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + hello: dojo.moduleUrl("dojox.dtl.tests.templates", "hello.html"), + person: "Bob", + people: ["Charles", "Ralph", "Julia"] + }); + + var template = new dd.Template("{% ssi hello parsed %}"); + t.is("Hello, Bob", template.render(context)); + + template = new dd.Template("{% ssi hello %}"); + t.is("Hello, {{ person }}", template.render(context)); + + template = new dd.Template('{% ssi "../../dojox/dtl/tests/templates/hello.html" parsed %}'); + t.is("Hello, Bob", template.render(context)); + + template = new dd.Template('{% for person in people %}{% ssi hello parsed %} {% endfor %}'); + t.is("Hello, Charles Hello, Ralph Hello, Julia ", template.render(context)); + }, + function test_tag_templatetag(t){ + var dd = dojox.dtl; + + var template = new dd.Template("{% templatetag openblock %}"); + t.is("{%", template.render()); + template = new dd.Template("{% templatetag closeblock %}"); + t.is("%}", template.render()); + template = new dd.Template("{% templatetag openvariable %}"); + t.is("{{", template.render()); + template = new dd.Template("{% templatetag closevariable %}"); + t.is("}}", template.render()); + template = new dd.Template("{% templatetag openbrace %}"); + t.is("{", template.render()); + template = new dd.Template("{% templatetag closebrace %}"); + t.is("}", template.render()); + template = new dd.Template("{% templatetag opencomment %}"); + t.is("{#", template.render()); + template = new dd.Template("{% templatetag closecomment %}"); + t.is("#}", template.render()); + }, + function test_tag_widthratio(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + this_value: 175, + max_value: 200 + }); + + var template = new dd.Template(''); + t.is('', template.render(context)); + }, + function test_tag_with(t){ + var dd = dojox.dtl; + + var context = new dd.Context({ + person: { + someSqlMethod: function(){ + return 4815162342; + } + } + }); + + var template = new dd.Template('{% with person.someSqlMethod as total %}{{ total }} object{{ total|pluralize }}{% endwith %}') + t.is("4815162342 objects", template.render(context)); + } + ] +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/dtl/utils/date.js b/js/dojo-release-1.7.2-src/dojox/dtl/utils/date.js new file mode 100644 index 0000000..6046185 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/dtl/utils/date.js @@ -0,0 +1,79 @@ +define([ + "dojo/_base/lang", + "dojox/date/php", + "../_base" +], function(lang,ddp,dd){ + /*===== + ddp = dojox.data.php; + dd = dojox.dtl; + =====*/ + lang.getObject("dojox.dtl.utils.date", true); + + dd.utils.date.DateFormat = ddp.DateFormat; + lang.extend(dd.utils.date.DateFormat, ddp.DateFormat.prototype, { + f: function(){ + // summary: + // Time, in 12-hour hours and minutes, with minutes left off if they're zero. + // description: + // Examples: '1', '1:30', '2:05', '2' + // Proprietary extension. + return (!this.date.getMinutes()) ? this.g() : this.g() + ":" + this.i(); + }, + N: function(){ + // summary: Month abbreviation in Associated Press style. Proprietary extension. + return dojox.dtl.utils.date._months_ap[this.date.getMonth()]; + }, + P: function(){ + // summary: + // Time, in 12-hour hours, minutes and 'a.m.'/'p.m.', with minutes left off + // if they're zero and the strings 'midnight' and 'noon' if appropriate. + // description: + // Examples: '1 a.m.', '1:30 p.m.', 'midnight', 'noon', '12:30 p.m.' + // Proprietary extension. + if(!this.date.getMinutes() && !this.date.getHours()){ + return 'midnight'; + } + if(!this.date.getMinutes() && this.date.getHours() == 12){ + return 'noon'; + } + return this.f() + " " + this.a(); + } + }); + + lang.mixin(dojox.dtl.utils.date, { + format: function(/*Date*/ date, /*String*/ format){ + var df = new dojox.dtl.utils.date.DateFormat(format); + return df.format(date); + }, + timesince: function(d, now){ + // summary: + // Takes two datetime objects and returns the time between then and now + // as a nicely formatted string, e.g "10 minutes" + // description: + // Adapted from http://blog.natbat.co.uk/archive/2003/Jun/14/time_since + if(!(d instanceof Date)){ + d = new Date(d.year, d.month, d.day); + } + if(!now){ + now = new Date(); + } + + var delta = Math.abs(now.getTime() - d.getTime()); + for(var i = 0, chunk; chunk = dojox.dtl.utils.date._chunks[i]; i++){ + var count = Math.floor(delta / chunk[0]); + if(count) break; + } + return count + " " + chunk[1](count); + }, + _chunks: [ + [60 * 60 * 24 * 365 * 1000, function(n){ return (n == 1) ? 'year' : 'years'; }], + [60 * 60 * 24 * 30 * 1000, function(n){ return (n == 1) ? 'month' : 'months'; }], + [60 * 60 * 24 * 7 * 1000, function(n){ return (n == 1) ? 'week' : 'weeks'; }], + [60 * 60 * 24 * 1000, function(n){ return (n == 1) ? 'day' : 'days'; }], + [60 * 60 * 1000, function(n){ return (n == 1) ? 'hour' : 'hours'; }], + [60 * 1000, function(n){ return (n == 1) ? 'minute' : 'minutes'; }] + ], + _months_ap: ["Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."] + }); + return dojox.dtl.utils.date; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/README b/js/dojo-release-1.7.2-src/dojox/editor/README new file mode 100644 index 0000000..251c9ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/README @@ -0,0 +1,369 @@ +------------------------------------------------------------------------------- +dojox.editor +------------------------------------------------------------------------------- +Version 0.9 +Release date: 9/14/2009 +------------------------------------------------------------------------------- +Project state: +experimental, beta, stable +------------------------------------------------------------------------------- +Credits + Mike Wilcox - Author + Jared Jurkiewicz - Author (PrettyPrint, PageBreak, ShowBlockNodes, + Preview, Save, ToolbarLineBreak, InsertEntity, + NormalizeIndentOutdent, Breadcrumb, FindReplace, + CollapsibleToolbar, Blockquote, PasteFromWord, InsertAnchor, + TextColor, NormalizeStyle, StatusBar, SafePaste) + Dustin Machi - Technical Assistance + David Schwartz and Gu Yi He (IBM) - Contributed enhancements to the + look and feel of FindReplace, as well as behavioral + improvements. + Eldon (IBM, CCLA) - LocalImage, AutoUrlLink, TablePluginsColorCell - + dojox.widget.ColorPicker, ResizeTableColumn, AutoSave, SpellCheck + +------------------------------------------------------------------------------- +Project description + +Space for extensions and additional plugins for dijit.Editor. The project +currently contains the following plugins: + +dojox.editor.plugins.TablePlugins: + Status: Experimental. + The Table Plugins provide a mechanism for editing tables withing the + dijit.Editor. This plugin is experimental and does not work correctly + in all dojo supported browsers. + +dojox.editor.plugins.UploadImage: + Status: Experimental. + The UploadImage plugin makes use of the dojox upload widgets to provide + a mechanism to upload images to your server for use in the editor. + +dojox.editor.plugins.PrettyPrint: + Status: Supported (stable). + The PrettyPrint plugin provides a mechanism by which the output from + editor.getValue()/editor.attr("value") is nicely formatted. Optional + format parameters are how many spaces to indent by (default is tab), + the maximum text line length (not including indent), and what + characters in text strings should be encoded to their &; + representation. + +dojox.editor.plugins.PageBreak: + Status: Supported (stable). + A simple plugin that allows you to insert 'page breaks' into the doc + being edited. These page break styles will then cause the document + to break to another page when printed. + +dojox.editor.plugins.ShowBlockNodes: + Status: Supported (stable). + A simple plugin that allows you to toggle on and off a CSS 'view' of + how the page is laid out in terms of the block nodes used for its + formatting. + +dojox.editor.plugins.Save: + Status: Supported (beta). + A simple plugin that allows you to POST the content of the editor back + to a URL. + +dojox.editor.plugins.Preview: + Status: Supported (beta). + A simple plugin that allows you to display the content of the editor + in a new window and apply a set of styles to it so you can see how + content will look with various styles applied. It is likely this + plugin will still evolve a bit. + +dojox.editor.plugins.ToolbarLineBreak: + Status: Supported (stable). + An extremely simple plugin that allows you to 'linebreak' the dijit toolbar so that really long + toolbars for editor (lots of plugins enabled), can be broken up into multiple rows. + +dojox.editor.plugins.InsertEntity: + Status: Experimental (unsupported). + A plugin that enables the ability to insert HTML/XML entity characters + into a page. These are often called 'symbols'. The set it provides are the + basic latin (8859) set and a portion of greek symbols common to mathematics. + It has been marked experimental as it is likely this plugin will evolve a bit. + +dojox.editor.plugins.NormalizeIndentOutdent: + Status: Experimental (unsupported). + A plugin that normalizes the behavior of indent/outdent to use margin styles instead + of
                              tags. Also fixes indent/outdent of lists to work properly. This is new + and has been tested, but not extensively. Therefore it is currently classed as experimental. + +dojox.editor.plugins.Breadcrumb: + Status: Experimental (unsupported). + A plugin that adds a breadcrumb toolbar to the bottom of the editor. Useful for seeing + where you aren and what operations you can perform. This is new and has been tested, but not + extensively. Therefore it is currently classed as experimental. + +dojox.editor.plugins.FindReplace: + Status: Experimental (unsupported). + A plugin that adds a togglable Find/Replace toolbar to the editor. Useful for searching + and replacing text strings in the editor content. Only works on FF, IE, and WebKit. No Opera + support. This is new and has been tested, but not extensively. Therefore it is currently + classed as experimental. + +dojox.editor.plugins.CollapsibleToolbar: + Status: Supported (Stable). + A plugin that modified the header node of the editor so that it is 'collapsible'. Meaning that + it can be closed (reduced), and reopened. Useful for increasing editor real-estate. + +dojox.editor.plugins.Blockquote: + Status: Supported (Stable). + A plugin that puts a button on the toolbar that allows users to select text for a semantic + 'blockquote' tag-wrap action. It toggles on and off during state changes to determine if + the current section is contained within a blockquote. + +dojox.editor.plugins.PasteFromWord: + Status: Beta (unsupported). + A plugin that puts a button that opens a dialog to paste in content from Word and similar + programs like wordpad. It will then filter out extraneous and bad html from the content + before injecting it into the RTE. Experimental as the filter list may not be complete yet. + Feedback is welcome and appreciated. Filters will be updated based on it. + +dojox.editor.plugins.InsertAnchor: + Status: Stable (supported). + A plugin that allows anchor points to be inserted into the document being edited. + The anchors are styled in the doc to make them easily visible/editable in the document. + +dojox.editor.plugins.TextColor: + Status: Experimental (unsupported). + A plugin that makes use of the dojox.widget.ColorPicker widget in lieu of the + dijit.ColorPalette. + +dojox.editor.plugins.NormalizeStyle: + Status: Experimental (unsupported). + A plugin that tries to normalize the output from the editor as either CSS styled or semantic (, , etc) + style. + +dojox.editor.plugins.StatusBar: + Status: Experimental (unsupported). + A plugin that adds a status bar and an optional resize handle to the footer of the editor. + +dojox.editor.plugins.LocalImage + Status: Beta + A plugin that adds local image upload and edit capability to the editor. + +dojox.editor.plugins.AutoUrlLink + Status: Experimental (Unsupported) + A plugin that adds auto url link creation capability as a headless plugin to the editor + +dojox.editor.plugins.ResizeColumnPlugin + Status: Experimental (Unsupported) + A plugin that adds column resize to the editor table plugins. + +dojox.editor.plugins.AutoSave + Status: Experimental (Unsupported) + A plugin that provides 'auto-save' capablity, eg, post back to some url at an interval. + +dojox.editor.plugins.SpellCheck + Status: Experimental (Unsupported) + A plugin that provides server-side spell-check support. + + +dojox.editor.plugins.SafePaste + Status: Beta (Supported) + A plugin that provides a safer paste function to the editor. It strips out script tags, + tries to fix up odd input from Word, Wordpad, etc. Very similar to PasteFromWord except that + it takes complete control of paste in dijit.Editor instead of being an alternate paste icon. + +------------------------------------------------------------------------------- +Dependencies: + +dijit +dojox.form +dojox.html.format +dojox.widget.ColorPicker +dojox.layout.ResizeHandle + +------------------------------------------------------------------------------- +Documentation + +The plugins directory contains extensions which work with dijit.Editor. + +See also: + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/TablePlugins.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/PrettyPrint.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/PageBreak.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/ShowBlockNodes.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/Preview.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/Save.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/ToolbarLineBreak.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/InsertEntity.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/NormalizeIndentOutdent.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/Breadcrumb.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/FindReplace.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/CollapsibleToolbar.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/Blockquote.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/PasteFromWord.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/InsertAnchor.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/TextColor.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/NormalizeStyle.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/StatusBar.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/LocalImage.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/AutoUrlLink.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/ResizeTableColumn.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/AutoSave.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/SpellCheck.html + http://dojotoolkit.org/reference-guide/dojox/editor/plugins/SafePaste.html +.html + +------------------------------------------------------------------------------- +Plugin Installation instructions + +Get dojo and dijit from svn. Include the Editor and plugins in your page: + +dojo.require("dijit.Editor"); + +For the TablePlugins: + dojo.require("dojox.editor.plugins.TablePlugins"); + and CSS: + + +For the UploadImage plugin: + dojo.require("dojox.editor.plugins.UploadImage"); + and CSS: + + + +For the PrettyPrint plugin: + dojo.require("dojox.editor.plugins.PrettyPrint"); + and CSS: + No CSS required. + +For the PageBreak plugin: + dojo.require("dojox.editor.plugins.PageBreak"); + and CSS: + + +For the ShowBlockNodes plugin: + dojo.require("dojox.editor.plugins.ShowBockNodes"); + and CSS: + + +For the Preview plugin: + dojo.require("dojox.editor.plugins.Preview"); + and CSS: + + +For the Save plugin: + dojo.require("dojox.editor.plugins.Save"); + and CSS: + + +For the ToolbarLineBreak plugin: + dojo.require("dojox.editor.plugins.ToolbarLineBreak"); + and CSS: + No CSS required. + +For the InsertEntity plugin: + dojo.require("dojox.editor.plugins.InsertEntity"); + and CSS: + + +For the NormalizeIndentOutdent plugin: + dojo.require("dojox.editor.plugins.NormalizeIndentOutdent"); + and CSS: + No CSS required. + +For the Breadcrumb plugin: + dojo.require("dojox.editor.plugins.Breadcrumb"); + and CSS: + + +For the FindReplace plugin: + dojo.require("dojox.editor.plugins.FindReplace"); + and CSS: + + +For the CollapsibleToolbar plugin: + dojo.require("dojox.editor.plugins.CollapsibleToolbar"); + and CSS: + + +For the Blockquote plugin: + dojo.require("dojox.editor.plugins.Blockquote"); + and CSS: + + +For the PasteFromWord plugin: + dojo.require("dojox.editor.plugins.PasteFromWord"); + and CSS: + + +For the InsertAnchor plugin: + dojo.require("dojox.editor.plugins.InsertAnchor"); + and CSS: + + +For the TextColor plugin: + dojo.require("dojox.editor.plugins.TextColor"); + and CSS: + + +For the NormalizeStyle plugin: + dojo.require("dojox.editor.plugins.NormalizeStyle"); + and CSS: + No CSS required. + +For the StatusBar plugin: + dojo.require("dojox.editor.plugins.StatusBar"); + and CSS: + + +For the LocalImage plugin: + dojo.require("dojox.editor.plugins.LocalImage"); + and CSS: + + +For the AutoUrlLink plugin: + dojo.require("dojox.editor.plugins.AutoUrlLink"); + and CSS: + No CSS required. + +For the ResizeTableColumn plugin: + dojo.require("dojox.editor.plugins.ResizeTableColumn"); + and CSS: + No CSS required in addition to the table plugins css. + +For the AutoSave plugin: + dojo.require("dojox.editor.plugins.AutoSave"); + and CSS: + + +For the SpellCheck plugin: + dojo.require("dojox.editor.plugins.SpellCheck"); + and CSS: + + +For the SafePaste plugin: + dojo.require("dojox.editor.plugins.SafePaste"); + and CSS: + + +See tests for examples: + dojox/editor/tests/editorTablePlugs.html + dojox/editor/tests/editorUploadPlug.html + dojox/editor/tests/editorPrettyPrint.html + dojox/editor/tests/editorPageBreak.html + dojox/editor/tests/editorShowBlockNodes.html + dojox/editor/tests/editorPreview.html + dojox/editor/tests/editorSave.html + dojox/editor/tests/editorToolbarLineBreak.html + dojox/editor/tests/editorInsertEntity.html + dojox/editor/tests/editorNormalizeIndentOutdent.html + dojox/editor/tests/editorBreadcrumb.html + dojox/editor/tests/editorFindReplace.html + dojox/editor/tests/editorCollapsibleToolbar.html + dojox/editor/tests/editorBlockquote.html + dojox/editor/tests/editorPasteFromWord.html + dojox/editor/tests/editorInsertAnchor.html + dojox/editor/tests/editorTextColor.html + dojox/editor/tests/editorNormalizeStyle.html + dojox/editor/tests/editorStatusBar.html + dojox/editor/tests/editorLocalImage.html + dojox/editor/tests/editorAutoUrlLink.html + dojox/editor/tests/editorResizeTableColumn.html + dojox/editor/tests/editorAutoSave.html + dojox/editor/tests/editorSpellCheck.html + dojox/editor/tests/editorSafePaste.html + dojox/editor/tests/testPluginsAll.html diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/AutoSave.js new file mode 100644 index 0000000..2ac43f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/AutoSave.js @@ -0,0 +1,435 @@ +define([ + "dojo", + "dijit", // _scopeName + "dojox", + "dijit/_base/manager", // getUniqueId() + "dijit/_base/popup", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_WidgetsInTemplateMixin", + "dijit/Dialog", + "dijit/MenuItem", + "dijit/Menu", + "dijit/form/Button", + "dijit/form/ComboButton", + "dijit/form/ComboBox", + "dijit/form/_TextBoxMixin", // selectInputText() + "dijit/form/TextBox", + "dijit/TooltipDialog", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/date/locale", + "dojo/i18n", + "dojo/string", + "dojox/editor/plugins/Save", + "dojo/i18n!dojox/editor/plugins/nls/AutoSave" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.AutoSave"); + +dojo.declare("dojox.editor.plugins._AutoSaveSettingDialog", [dijit._Widget, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin], { + + // dialogTitle [public] String + // The tile of the Auto-Save setting dialog + dialogTitle: "", + + // dialogDescription [public] String + // The description of the Auto-Save setting dialog + dialogDescription: "", + + // paramName [public] String + // The name of the parameter (Auto-Save Interval) + paramName: "", + + // paramLabel [public] String + // Minute + paramLabel: "", + + // btnOk [public] String + // The label of the OK button + btnOk: "", + + // btnCancel [public] String + // The label of the Cancel button + btnCancel: "", + + widgetsInTemplate: true, + + templateString: + "" + + "
                              " + + "
                              ${dialogDescription}
                              " + + "
                              ${paramName}
                              " + + "
                              " + + "" + + "" + + "
                              " + + "
                              " + + "" + + "" + + "
                              " + + "
                              " + + "
                              ", + + postMixInProperties: function(){ + this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_")); + this.dialogId = this.id + "_dialog"; + this.textBoxId = this.id + "_textBox"; + }, + + show: function(){ + // summary: + // Display the setting dialog. If the internal interval value is "" + // set it to zero + // tags: + // public + if(this._value == ""){ + this._value = 0; + this.intBox.set("value", 0); + }else{ + this.intBox.set("value", this._value); + } + this.dialog.show(); + dijit.selectInputText(this.intBox.focusNode); + }, + + hide: function(){ + // summray: + // Hide the setting dialog. + // tags: + // public + this.dialog.hide(); + }, + + onOk: function(){ + // summary: + // Handle the OK event and close the dialog. + // tags: + // public + this.dialog.hide(); + }, + + onCancel: function(){ + // summary: + // Handle the Cancel event and close the dialog. + // tags: + // public + this.dialog.hide(); + }, + + _onKeyDown: function(evt){ + // summary: + // Handle the keydown event + // tags: + // private + if(evt.keyCode == dojo.keys.ENTER){ + this.onOk(); + } + }, + + _onChange: function(/*String*/ val){ + // summary: + // Check if the value is between 1 - 999. + // tags: + // public + if(this._isValidValue(val)){ + this._value = val; + }else{ + this.intBox.set("value", this._value); + } + }, + + _setValueAttr: function(/*String*/ val){ + // summary: + // Set the value attribute if it is acceptable + // val: + // The invertal value + // tags: + // private + if(this._isValidValue(val)){ + this._value = val; + } + }, + + _getValueAttr: function(){ + // summary: + // Get the interval value + // tags: + // protected + return this._value; + }, + + _isValidValue: function(/*String*/ val){ + // summary: + // Check if this value between 1- 999 + // tags: + // private + var regExp = /^\d{0,3}$/, + _v = String(val); + return Boolean(_v.match ? _v.match(regExp) : ""); + } +}); + +dojo.declare("dojox.editor.plugins.AutoSave", dojox.editor.plugins.Save, { + // summary: + // This plugin provides the auto save capability to the editor. The + // plugin saves the content of the editor in interval. When + // the save action is performed, the document in the editor frame + // will be posted to the URL provided, or none, if none provided. + + // url [public] String + // The URL to POST the content back to. Used by the save function. + url: "", + + // logErrors [public] boolean + // Boolean flag to indicate that the default action for save and + // error handlers is to just log to console. Default is true. + logResults: true, + + // interval [public] Number + // The interval to perform the save action. + interval: 0, + + // _iconClassPrefix [private] String + // This prefix of the CSS class + _iconClassPrefix: "dijitEditorIconAutoSave", + + // _MIN [private const] Number + // Default 1 minute + _MIN: 60000, + + _setIntervalAttr: function(val){ + // summary: + // Set the interval value. + // Delay the boundary check to _isValidValue of the dialog class + // val: + // The interval value. + // tags: + // private + this.interval = val; + }, + + _getIntervalAttr: function(){ + // summary: + // Get the interval value + // tags: + // private + return this._interval; + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. No toggle button for + // this plugin. And start to save the content of the editor in + // interval + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._strings = dojo.i18n.getLocalization("dojox.editor.plugins", "AutoSave"); + this._initButton(); + + this._saveSettingDialog = new dojox.editor.plugins._AutoSaveSettingDialog({ + "dialogTitle": this._strings["saveSettingdialogTitle"], + "dialogDescription": this._strings["saveSettingdialogDescription"], + "paramName": this._strings["saveSettingdialogParamName"], + "paramLabel": this._strings["saveSettingdialogParamLabel"], + "btnOk": this._strings["saveSettingdialogButtonOk"], + "btnCancel": this._strings["saveSettingdialogButtonCancel"] + }); + this.connect(this._saveSettingDialog, "onOk", "_onDialogOk"); + + var pd = (this._promDialog = new dijit.TooltipDialog()); + pd.startup(); + pd.set("content", ""); + }, + + _initButton: function(){ + var menu = new dijit.Menu({ + style: "display: none" + }), + menuItemSave = new dijit.MenuItem({ + iconClass: this._iconClassPrefix + "Default " + this._iconClassPrefix, + label: this._strings["saveLabel"] + }), + menuItemAutoSave = (this._menuItemAutoSave = new dijit.MenuItem({ + iconClass: this._iconClassPrefix + "Setting " + this._iconClassPrefix, + label: this._strings["saveSettingLabelOn"] + })); + + menu.addChild(menuItemSave); + menu.addChild(menuItemAutoSave); + this.button = new dijit.form.ComboButton({ + label: this._strings["saveLabel"], + iconClass: this._iconClassPrefix + "Default " + this._iconClassPrefix, + showLabel: false, + dropDown: menu + }); + + this.connect(this.button, "onClick", "_save"); + this.connect(menuItemSave, "onClick", "_save"); + this._menuItemAutoSaveClickHandler = dojo.connect(menuItemAutoSave, "onClick", this, "_showAutSaveSettingDialog"); + }, + + _showAutSaveSettingDialog: function(){ + // summary: + // Show the setting dialog + // tags: + // private + var dialog = this._saveSettingDialog; + dialog.set("value", this.interval); + dialog.show(); + }, + + _onDialogOk: function(){ + // summary: + // If the interval is set (larger than 0), enable auto-save. + // tags: + // private + var interval = (this.interval = this._saveSettingDialog.get("value") * this._MIN); + if(interval > 0){ + this._setSaveInterval(interval); + // Change the menu "Set Auto-Save Interval..." to "Turn off Auto-Save" + // Connect it to another handler that terminates the auto-save. + dojo.disconnect(this._menuItemAutoSaveClickHandler); + this._menuItemAutoSave.set("label", this._strings["saveSettingLabelOff"]); + this._menuItemAutoSaveClickHandler = dojo.connect(this._menuItemAutoSave, "onClick", this, "_onStopClick"); + // Change the icon of the main button to auto-save style + this.button.set("iconClass", this._iconClassPrefix + "Setting " + this._iconClassPrefix); + } + }, + + _onStopClick: function(){ + // summary: + // Stop auto-save + // tags: + // private + this._clearSaveInterval(); + // Change the menu "Turn off Auto-Save" to "Set Auto-Save Interval...". + // Connect it to another handler that show the setting dialog. + dojo.disconnect(this._menuItemAutoSaveClickHandler); + this._menuItemAutoSave.set("label", this._strings["saveSettingLabelOn"]); + this._menuItemAutoSaveClickHandler = dojo.connect(this._menuItemAutoSave, "onClick", this, "_showAutSaveSettingDialog"); + // Change the icon of the main button + this.button.set("iconClass", this._iconClassPrefix + "Default " + this._iconClassPrefix); + }, + + _setSaveInterval: function(/*Number*/ interval){ + // summary: + // Function to trigger saving of the editor document + // tags: + // private + if(interval <= 0){ + return; + } + this._clearSaveInterval(); + this._intervalHandler = setInterval(dojo.hitch(this, function(){ + if(!this._isWorking && !this.get("disabled")){ + // If the plugin is not disabled (ViewSource, etc.) + // and not working. Do saving! + this._isWorking = true; + this._save(); + } + }), interval); + }, + + _clearSaveInterval: function(){ + if(this._intervalHandler){ + clearInterval(this._intervalHandler); + this._intervalHandler = null; + } + }, + + onSuccess: function(resp, ioargs){ + // summary: + // User over-ridable save success function for editor content. + // resp: + // The response from the server, if any, in text format. + // tags: + // public + this.button.set("disabled", false); + // Show the successful message + this._promDialog.set("content", dojo.string.substitute( + this._strings["saveMessageSuccess"], {"0": dojo.date.locale.format(new Date(), {selector: "time"})})); + dijit.popup.open({popup: this._promDialog, around: this.button.domNode}); + this._promDialogTimeout = setTimeout(dojo.hitch(this, function(){ + clearTimeout(this._promDialogTimeout); + this._promDialogTimeout = null; + dijit.popup.close(this._promDialog); + }), 3000); + this._isWorking = false; + if(this.logResults){ + console.log(resp); + } + }, + + onError: function(error, ioargs){ + // summary: + // User over-ridable save success function for editor content. + // resp: + // The response from the server, if any, in text format. + // tags: + // public + this.button.set("disabled", false); + // Show the failure message + this._promDialog.set("content", dojo.string.substitute( + this._strings["saveMessageFail"], {"0": dojo.date.locale.format(new Date(), {selector: "time"})})); + dijit.popup.open({popup: this._promDialog, around: this.button.domNode}); + this._promDialogTimeout = setTimeout(dojo.hitch(this, function(){ + clearTimeout(this._promDialogTimeout); + this._promDialogTimeout = null; + dijit.popup.close(this._promDialog); + }), 3000); + this._isWorking = false; + if(this.logResults){ + console.log(error); + } + }, + + destroy: function(){ + // summary: + // Cleanup of our plugin. + this.inherited(arguments); + + this._menuItemAutoSave = null; + + if(this._promDialogTimeout){ + clearTimeout(this._promDialogTimeout); + this._promDialogTimeout = null; + dijit.popup.close(this._promDialog); + } + + this._clearSaveInterval(); + + if(this._saveSettingDialog){ + this._saveSettingDialog.destroyRecursive(); + this._destroyRecursive = null; + } + + if(this._menuItemAutoSaveClickHandler){ + dojo.disconnect(this._menuItemAutoSaveClickHandler); + this._menuItemAutoSaveClickHandler = null; + } + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name == "autosave"){ + o.plugin = new dojox.editor.plugins.AutoSave({ + url: ("url" in o.args) ? o.args.url : "", + logResults: ("logResults" in o.args) ? o.args.logResults : true, + interval: ("interval" in o.args) ? o.args.interval : 5 + }); + } +}); + +return dojox.editor.plugins.AutoSave; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/AutoUrlLink.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/AutoUrlLink.js new file mode 100644 index 0000000..7df79a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/AutoUrlLink.js @@ -0,0 +1,234 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/range", + "dijit/_editor/selection", + "dijit/_editor/_Plugin", + "dijit/form/Button", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/string" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.AutoUrlLink", [dijit._editor._Plugin], { + //summary: + // This plugin can recognize a URL like string + // (such as http://www.website.com) and turn it into + // a hyperlink that points to that URL. + + // _template [private] String + // The link template + _template: "${url}", + + setEditor: function(/*dijit.Editor*/ editor){ + // summary: + // Called by the editor it belongs to. + // editor: + // The editor it belongs to. + this.editor = editor; + if(!dojo.isIE){ + // IE will recognize URL as a link automatically + // No need to re-invent the wheel. + dojo.some(editor._plugins, function(plugin){ + // Need to detect which enter key mode it is now + if(plugin.isInstanceOf(dijit._editor.plugins.EnterKeyHandling)){ + this.blockNodeForEnter = plugin.blockNodeForEnter; + return true; + } + return false; + }, this); + this.connect(editor, "onKeyPress", "_keyPress"); + this.connect(editor, "onClick", "_recognize"); + this.connect(editor, "onBlur", "_recognize"); + } + }, + + _keyPress: function(evt){ + // summary: + // Handle the keypress event and dispatch it to the target handler + // evt: + // The keypress event object. + // tags: + // protected + var ks = dojo.keys, v = 118, V = 86, + kc = evt.keyCode, cc = evt.charCode; + if(cc == ks.SPACE || (evt.ctrlKey && (cc == v || cc == V))){ + setTimeout(dojo.hitch(this, "_recognize"), 0); + }else if(kc == ks.ENTER){ + // Handle the enter event after EnterKeyHandling finishes its job + setTimeout(dojo.hitch(this, function(){ + this._recognize({enter: true}); + }), 0); + }else{ + // _saved: The previous dom node when the cursor is at a new dom node. + // When we click elsewhere, the previous dom node + // should be examed to see if there is any URL need to be activated + this._saved = this.editor.window.getSelection().anchorNode; + } + }, + + _recognize: function(args){ + // summary: + // Recognize the URL like strings and turn them into a link + // tags: + // private + var template = this._template, + isEnter = args ? args.enter : false, + ed = this.editor, + selection = ed.window.getSelection(); + if(selection){ + var node = isEnter ? this._findLastEditingNode(selection.anchorNode) : + (this._saved || selection.anchorNode), + bm = this._saved = selection.anchorNode, + bmOff = selection.anchorOffset; + + if(node.nodeType == 3 && !this._inLink(node)){ + var linked = false, result = this._findUrls(node, bm, bmOff), + range = ed.document.createRange(), + item, cost = 0, isSameNode = (bm == node); + + item = result.shift(); + while(item){ + // Covert a URL to a link. + range.setStart(node, item.start); + range.setEnd(node, item.end); + selection.removeAllRanges(); + selection.addRange(range); + ed.execCommand("insertHTML", dojo.string.substitute(template, {url: range.toString()})); + cost += item.end; + item = result.shift(); + linked = true; + } + + // If bm and node are the some dom node, caculate the actual bookmark offset + // If the position of the cursor is modified (turned into a link, etc.), no + // need to recover the cursor position + if(isSameNode && (bmOff = bmOff - cost) <= 0){ return; } + + // We didn't update anything, so don't collapse selections. + if(!linked) { return ; } + try{ + // Try to recover the cursor position + range.setStart(bm, 0); + range.setEnd(bm, bmOff); + selection.removeAllRanges(); + selection.addRange(range); + dojo.withGlobal(ed.window, "collapse", dijit._editor.selection, []); + }catch(e){} + } + } + }, + + _inLink: function(/*DomNode*/ node){ + // summary: + // Check if the node is already embraced within a ... tag. + // node: + // The node to be examed. + // tags: + // private + var editNode = this.editor.editNode, + result = false, tagName; + + node = node.parentNode; + while(node && node !== editNode){ + tagName = node.tagName ? node.tagName.toLowerCase() : ""; + if(tagName == "a"){ + result = true; + break; + } + node = node.parentNode; + } + return result; + }, + + _findLastEditingNode: function(/*DomNode*/ node){ + // summary: + // Find the last node that was edited so that we can + // get the last edited text. + // node: + // The current node that the cursor is at. + // tags: + // private + var blockTagNames = dijit.range.BlockTagNames, + editNode = this.editor.editNode, blockNode; + + if(!node){ return node; } + if(this.blockNodeForEnter == "BR" && + (!(blockNode = dijit.range.getBlockAncestor(node, null, editNode).blockNode) || + blockNode.tagName.toUpperCase() != "LI")){ + while((node = node.previousSibling) && node.nodeType != 3){} + }else{ + // EnterKeyHandling is under "DIV" or "P" mode or + // it's in a LI element. Find the last editing block + if((blockNode || (blockNode = dijit.range.getBlockAncestor(node, null, editNode).blockNode)) && + blockNode.tagName.toUpperCase() == "LI"){ + node = blockNode; + }else{ + node = dijit.range.getBlockAncestor(node, null, editNode).blockNode; + } + // Find the last editing text node + while((node = node.previousSibling) && !(node.tagName && node.tagName.match(blockTagNames))){} + if(node){ + node = node.lastChild; + while(node){ + if(node.nodeType == 3 && dojo.trim(node.nodeValue) != ""){ + break; + }else if(node.nodeType == 1){ + node = node.lastChild; + }else{ + node = node.previousSibling; + } + } + } + } + return node; + }, + + _findUrls: function(/*DomNode*/ node, /*DomNode*/ bm, /*Number*/ bmOff){ + // summary: + // Find the occurrace of the URL strings. + // FF, Chrome && Safri have a behavior that when insertHTML is executed, + // the orignal referrence to the text node will be the text node next to + // the inserted anchor automatically. So we have to re-caculate the index of + // the following URL occurrence. + // value: + // A text to be scanned. + // tags: + // private + var pattern = /(http|https|ftp):\/\/[^\s]+/ig, + list = [], baseIndex = 0, + value = node.nodeValue, result, ch; + + if(node === bm && bmOff < value.length){ + // Break the text so that it may not grab extra words. + // Such as if you type: + // foo http://foo.com|bar (And | is where you press enter). + // It will grab the bar word as part of the link. That's annoying/bad. + // Also it prevents recognizing the text after the cursor. + value = value.substr(0, bmOff); + } + + while((result = pattern.exec(value)) != null){ + if(result.index == 0 || (ch = value.charAt(result.index - 1)) == " " || ch == "\xA0"){ + list.push({start: result.index - baseIndex, end: result.index + result[0].length - baseIndex}); + baseIndex = result.index + result[0].length; + } + } + + return list; + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "autourllink"){ + o.plugin = new dojox.editor.plugins.AutoUrlLink(); + } +}); + +return dojox.editor.plugins.AutoUrlLink; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Blockquote.js new file mode 100755 index 0000000..456e9a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Blockquote.js @@ -0,0 +1,523 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/range", + "dijit/_editor/selection", + "dijit/_editor/_Plugin", + "dijit/form/ToggleButton", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/Blockquote" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.Blockquote",dijit._editor._Plugin,{ + // summary: + // This plugin provides Blockquote cabability to the editor. + // window/tab + + // iconClassPrefix: [const] String + // The CSS class name for the button node icon. + iconClassPrefix: "dijitAdditionalEditorIcon", + + _initButton: function(){ + // summary: + // Over-ride for creation of the preview button. + this._nlsResources = dojo.i18n.getLocalization("dojox.editor.plugins", "Blockquote"); + this.button = new dijit.form.ToggleButton({ + label: this._nlsResources["blockquote"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "Blockquote", + tabIndex: "-1", + onClick: dojo.hitch(this, "_toggleQuote") + }); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + this.connect(this.editor, "onNormalizedDisplayChanged", "updateState"); + // We need the custom undo code since we manipulate the dom + // outside of the browser natives and only customUndo really handles + // that. It will incur a performance hit, but should hopefully be + // relatively small. + editor.customUndo = true; + }, + + _toggleQuote: function(arg){ + // summary: + // Function to trigger previewing of the editor document + // tags: + // private + try{ + var ed = this.editor; + ed.focus(); + + var quoteIt = this.button.get("checked"); + var sel = dijit.range.getSelection(ed.window); + var range, elem, start, end; + if(sel && sel.rangeCount > 0){ + range = sel.getRangeAt(0); + } + if(range){ + ed.beginEditing(); + if(quoteIt){ + // Lets see what we've got as a selection... + var bq, tag; + if(range.startContainer === range.endContainer){ + // No selection, just cursor point, we need to see if we're + // in an indentable block, or similar. + if(this._isRootInline(range.startContainer)){ + // Text at the 'root' of the document, so we need to gather all of it., + + // First, we need to find the toplevel inline element that is rooted + // to the document 'editNode' + start = range.startContainer; + while(start && start.parentNode !== ed.editNode){ + start = start.parentNode; + } + // Now we need to walk up its siblings and look for the first one in the rooting + // that isn't inline or text, as we want to grab all of that for indent. + while(start && start.previousSibling && ( + this._isTextElement(start) || + (start.nodeType === 1 && + this._isInlineFormat(this._getTagName(start)) + ))){ + start = start.previousSibling; + } + if(start && start.nodeType === 1 && + !this._isInlineFormat(this._getTagName(start))){ + // Adjust slightly, we're one node too far back in this case. + start = start.nextSibling; + } + + // Okay, we have a configured start, lets grab everything following it that's + // inline and make it part of the blockquote! + if(start){ + bq = ed.document.createElement("blockquote"); + dojo.place(bq, start, "after"); + bq.appendChild(start); + end = bq.nextSibling; + while(end && ( + this._isTextElement(end) || + (end.nodeType === 1 && + this._isInlineFormat(this._getTagName(end))) + )){ + // Add it. + bq.appendChild(end); + end = bq.nextSibling; + } + } + }else{ + // Figure out what to do when not root inline.... + var node = range.startContainer; + while ((this._isTextElement(node) || + this._isInlineFormat(this._getTagName(node)) + || this._getTagName(node) === "li") && + node !== ed.editNode && node !== ed.document.body){ + node = node.parentNode; + } + if(node !== ed.editNode && node !== node.ownerDocument.documentElement){ + bq = ed.document.createElement("blockquote"); + dojo.place(bq, node, "after"); + bq.appendChild(node); + } + } + if(bq){ + dojo.withGlobal(ed.window, + "selectElementChildren", dijit._editor.selection, [bq]); + dojo.withGlobal(ed.window, + "collapse", dijit._editor.selection, [true]); + } + }else{ + var curNode; + // multi-node select. We need to scan over them. + // Find the two containing nodes at start and end. + // then move the end one node past. Then ... lets see + // what we can blockquote! + start = range.startContainer; + end = range.endContainer; + // Find the non-text nodes. + + while(start && this._isTextElement(start) && start.parentNode !== ed.editNode){ + start = start.parentNode; + } + + // Try to find the end node. We have to check the selection junk + curNode = start; + while(curNode.nextSibling && dojo.withGlobal(ed.window, + "inSelection", dijit._editor.selection, [curNode])){ + curNode = curNode.nextSibling; + } + end = curNode; + if(end === ed.editNode || end === ed.document.body){ + // Unable to determine real selection end, so just make it + // a single node indent of start + all following inline styles, if + // present, then just exit. + bq = ed.document.createElement("blockquote"); + dojo.place(bq, start, "after"); + tag = this._getTagName(start); + if(this._isTextElement(start) || this._isInlineFormat(tag)){ + // inline element or textnode + // Find and move all inline tags following the one we inserted also into the + // blockquote so we don't split up content funny. + var next = start; + while(next && ( + this._isTextElement(next) || + (next.nodeType === 1 && + this._isInlineFormat(this._getTagName(next))))){ + bq.appendChild(next); + next = bq.nextSibling; + } + }else{ + bq.appendChild(start); + } + return; + } + + // Has a definite end somewhere, so lets try to blockquote up to it. + // requires looking at the selections and in some cases, moving nodes + // into separate blockquotes. + end = end.nextSibling; + curNode = start; + while(curNode && curNode !== end){ + if(curNode.nodeType === 1){ + tag = this._getTagName(curNode); + if(tag !== "br"){ + if(!window.getSelection){ + // IE sometimes inserts blank P tags, which we want to skip + // as they end up blockquoted, which messes up layout. + if(tag === "p" && this._isEmpty(curNode)){ + curNode = curNode.nextSibling; + continue; + } + } + if(this._isInlineFormat(tag)){ + // inline tag. + if(!bq){ + bq = ed.document.createElement("blockquote"); + dojo.place(bq, curNode, "after"); + bq.appendChild(curNode); + }else{ + bq.appendChild(curNode); + } + curNode = bq; + }else{ + if(bq){ + if(this._isEmpty(bq)){ + bq.parentNode.removeChild(bq); + } + } + bq = ed.document.createElement("blockquote"); + dojo.place(bq, curNode, "after"); + bq.appendChild(curNode); + curNode = bq; + } + } + }else if(this._isTextElement(curNode)){ + if(!bq){ + bq = ed.document.createElement("blockquote"); + dojo.place(bq, curNode, "after"); + bq.appendChild(curNode); + }else{ + bq.appendChild(curNode); + } + curNode = bq; + } + curNode = curNode.nextSibling; + } + // Okay, check the last bq, remove it if no content. + if(bq){ + if(this._isEmpty(bq)){ + bq.parentNode.removeChild(bq); + }else{ + dojo.withGlobal(ed.window, + "selectElementChildren", dijit._editor.selection, [bq]); + dojo.withGlobal(ed.window, + "collapse", dijit._editor.selection, [true]); + } + bq = null; + } + } + }else{ + var found = false; + if(range.startContainer === range.endContainer){ + elem = range.endContainer; + // Okay, now see if we can find one of the formatting types we're in. + while(elem && elem !== ed.editNode && elem !== ed.document.body){ + var tg = elem.tagName?elem.tagName.toLowerCase():""; + if(tg === "blockquote"){ + found = true; + break; + } + elem = elem.parentNode; + } + if(found){ + var lastChild; + while(elem.firstChild){ + lastChild = elem.firstChild; + dojo.place(lastChild, elem, "before"); + } + elem.parentNode.removeChild(elem); + if(lastChild){ + dojo.withGlobal(ed.window, + "selectElementChildren", dijit._editor.selection, [lastChild]); + dojo.withGlobal(ed.window, + "collapse", dijit._editor.selection, [true]); + } + } + }else{ + // Multi-select! Gotta find all the blockquotes contained within the selection area. + start = range.startContainer; + end = range.endContainer; + while(start && this._isTextElement(start) && start.parentNode !== ed.editNode){ + start = start.parentNode; + } + var selectedNodes = []; + var cNode = start; + while(cNode && cNode.nextSibling && dojo.withGlobal(ed.window, + "inSelection", dijit._editor.selection, [cNode])){ + if(cNode.parentNode && this._getTagName(cNode.parentNode) === "blockquote"){ + cNode = cNode.parentNode; + } + selectedNodes.push(cNode); + cNode = cNode.nextSibling; + } + + // Find all the blocknodes now that we know the selection area. + var bnNodes = this._findBlockQuotes(selectedNodes); + while(bnNodes.length){ + var bn = bnNodes.pop(); + if(bn.parentNode){ + // Make sure we haven't seen this before and removed it. + while(bn.firstChild){ + dojo.place(bn.firstChild, bn, "before"); + } + bn.parentNode.removeChild(bn); + } + } + } + } + ed.endEditing(); + } + ed.onNormalizedDisplayChanged(); + }catch(e){ /* Squelch */ } + }, + + updateState: function(){ + // summary: + // Overrides _Plugin.updateState(). This controls whether or not the current + // cursor position should toggle on the quote button or not. + // tags: + // protected + var ed = this.editor; + var disabled = this.get("disabled"); + + if(!ed || !ed.isLoaded){ return; } + if(this.button){ + this.button.set("disabled", disabled); + if(disabled){ + return; + } + + // Some browsers (WebKit) doesn't actually get the tag info right. + // So ... lets check it manually. + var elem; + var found = false; + + // Try to find the ansestor element (and see if it is blockquote) + var sel = dijit.range.getSelection(ed.window); + if(sel && sel.rangeCount > 0){ + var range = sel.getRangeAt(0); + if(range){ + elem = range.endContainer; + } + } + // Okay, now see if we can find one of the formatting types we're in. + while(elem && elem !== ed.editNode && elem !== ed.document){ + var tg = elem.tagName?elem.tagName.toLowerCase():""; + if(tg === "blockquote"){ + found = true; + break; + } + elem = elem.parentNode; + } + // toggle whether or not the current selection is blockquoted. + this.button.set("checked", found); + } + }, + + _findBlockQuotes: function(nodeList){ + // summary: + // function to find a ll the blocknode elements in a collection of + // nodes + // nodeList: + // The list of nodes. + // tags: + // private + var bnList = []; + if(nodeList){ + var i; + for(i = 0; i < nodeList.length; i++){ + var node = nodeList[i]; + if(node.nodeType === 1){ + if(this._getTagName(node) === "blockquote"){ + bnList.push(node); + } + if(node.childNodes && node.childNodes.length > 0){ + bnList = bnList.concat(this._findBlockQuotes(node.childNodes)); + } + } + } + } + return bnList; + }, + + /*****************************************************************/ + /* Functions borrowed from NormalizeIndentOutdent */ + /*****************************************************************/ + + _getTagName: function(node){ + // summary: + // Internal function to get the tag name of an element + // if any. + // node: + // The node to look at. + // tags: + // private + var tag = ""; + if(node && node.nodeType === 1){ + tag = node.tagName?node.tagName.toLowerCase():""; + } + return tag; + }, + + _isRootInline: function(node){ + // summary: + // This functions tests whether an indicated node is in root as inline + // or rooted inline elements in the page. + // node: + // The node to start at. + // tags: + // private + var ed = this.editor; + if(this._isTextElement(node) && node.parentNode === ed.editNode){ + return true; + }else if(node.nodeType === 1 && this._isInlineFormat(node) && node.parentNode === ed.editNode){ + return true; + }else if(this._isTextElement(node) && this._isInlineFormat(this._getTagName(node.parentNode))){ + node = node.parentNode; + while(node && node !== ed.editNode && this._isInlineFormat(this._getTagName(node))){ + node = node.parentNode; + } + if(node === ed.editNode){ + return true; + } + } + return false; + }, + + _isTextElement: function(node){ + // summary: + // Helper function to check for text nodes. + // node: + // The node to check. + // tags: + // private + if(node && node.nodeType === 3 || node.nodeType === 4){ + return true; + } + return false; + }, + + _isEmpty: function(node){ + // summary: + // Internal function to determine if a node is 'empty' + // Eg, contains only blank text. Used to determine if + // an empty list element should be removed or not. + // node: + // The node to check. + // tags: + // private + if(node.childNodes){ + var empty = true; + var i; + for(i = 0; i < node.childNodes.length; i++){ + var n = node.childNodes[i]; + if(n.nodeType === 1){ + if(this._getTagName(n) === "p"){ + if(!dojo.trim(n.innerHTML)){ + continue; + } + } + empty = false; + break; + }else if(this._isTextElement(n)){ + // Check for empty text. + var nv = dojo.trim(n.nodeValue); + if(nv && nv !==" " && nv !== "\u00A0"){ + empty = false; + break; + } + }else{ + empty = false; + break; + } + } + return empty; + }else{ + return true; + } + }, + + _isInlineFormat: function(tag){ + // summary: + // Function to determine if the current tag is an inline + // element that does formatting, as we don't want to + // break/indent around it, as it can screw up text. + // tag: + // The tag to examine + // tags: + // private + switch(tag){ + case "a": + case "b": + case "strong": + case "s": + case "strike": + case "i": + case "u": + case "em": + case "sup": + case "sub": + case "span": + case "font": + case "big": + case "cite": + case "q": + case "img": + case "small": + return true; + default: + return false; + } + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "blockquote"){ + o.plugin = new dojox.editor.plugins.Blockquote({}); + } +}); + +return dojox.editor.plugins.Blockquote; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Breadcrumb.js new file mode 100755 index 0000000..a16f32c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Breadcrumb.js @@ -0,0 +1,362 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/Toolbar", + "dijit/Menu", + "dijit/MenuItem", + "dijit/MenuSeparator", + "dijit/_editor/range", + "dijit/_editor/selection", + "dijit/_editor/_Plugin", + "dijit/form/Button", + "dijit/form/ComboButton", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/string", + "dojo/i18n!dojox/editor/plugins/nls/Breadcrumb" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.Breadcrumb"); + +dojo.declare("dojox.editor.plugins._BreadcrumbMenuTitle",[dijit._Widget, dijit._TemplatedMixin, dijit._Contained],{ + // summary: + // SImple internal, non-clickable, menu entry to act as a menu title bar. + templateString: "", + + menuTitle: "", + + postCreate: function(){ + dojo.setSelectable(this.domNode, false); + var label = this.id+"_text"; + this.domNode.setAttribute("aria-labelledby", label); + }, + + _setMenuTitleAttr: function(str){ + this.title.innerHTML = str; + }, + _getMenuTitleAttr: function(str){ + return this.title.innerHTML; + } +}); + + +dojo.declare("dojox.editor.plugins.Breadcrumb",dijit._editor._Plugin,{ + // summary: + // This plugin provides Breadcrumb cabability to the editor. When + // As you move around the editor, it updates with your current indention + // depth. + + // _menu: [private] + // The popup menu that is displayed. + _menu: null, + + // breadcrumbBar: [protected] + // The toolbar containing the breadcrumb. + breadcrumbBar: null, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._buttons = []; + this.breadcrumbBar = new dijit.Toolbar(); + + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "Breadcrumb"); + this._titleTemplate = strings.nodeActions; + + dojo.place(this.breadcrumbBar.domNode, editor.footer); + this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + this._menu = new dijit.Menu({}); + dojo.addClass(this.breadcrumbBar.domNode, "dojoxEditorBreadcrumbArrow"); + var self = this; + var body = new dijit.form.ComboButton({ + showLabel: true, + label: "body", + _selNode: editor.editNode, + dropDown: this._menu, + onClick: dojo.hitch(this, function(){ + this._menuTarget = editor.editNode; + this._selectContents(); + }) + }); + + // Build the menu + this._menuTitle = new dojox.editor.plugins._BreadcrumbMenuTitle({menuTitle: strings.nodeActions}); + this._selCMenu = new dijit.MenuItem({label: strings.selectContents, onClick: dojo.hitch(this, this._selectContents)}); + this._delCMenu = new dijit.MenuItem({label: strings.deleteContents, onClick: dojo.hitch(this, this._deleteContents)}); + this._selEMenu = new dijit.MenuItem({label: strings.selectElement, onClick: dojo.hitch(this, this._selectElement)}); + this._delEMenu = new dijit.MenuItem({label: strings.deleteElement, onClick: dojo.hitch(this, this._deleteElement)}); + this._moveSMenu = new dijit.MenuItem({label: strings.moveStart, onClick: dojo.hitch(this, this._moveCToStart)}); + this._moveEMenu = new dijit.MenuItem({label: strings.moveEnd, onClick: dojo.hitch(this, this._moveCToEnd)}); + + this._menu.addChild(this._menuTitle); + this._menu.addChild(this._selCMenu); + this._menu.addChild(this._delCMenu); + this._menu.addChild(new dijit.MenuSeparator({})); + this._menu.addChild(this._selEMenu); + this._menu.addChild(this._delEMenu); + this._menu.addChild(new dijit.MenuSeparator({})); + this._menu.addChild(this._moveSMenu); + this._menu.addChild(this._moveEMenu); + + body._ddConnect = dojo.connect(body, "openDropDown", dojo.hitch(this, function(){ + this._menuTarget = body._selNode; + this._menuTitle.set("menuTitle", dojo.string.substitute(this._titleTemplate,{ + "nodeName": "<body>" + })); + this._selEMenu.set("disabled", true); + this._delEMenu.set("disabled", true); + this._selCMenu.set("disabled", false); + this._delCMenu.set("disabled", false); + this._moveSMenu.set("disabled", false); + this._moveEMenu.set("disabled", false); + })); + this.breadcrumbBar.addChild(body); + this.connect(this.editor, "onNormalizedDisplayChanged", "updateState"); + })); + this.breadcrumbBar.startup(); + if(dojo.isIE){ + // Sometimes IE will mess up layout and needs to be poked. + setTimeout(dojo.hitch(this, function(){this.breadcrumbBar.domNode.className = this.breadcrumbBar.domNode.className;}), 100); + } + }, + + _selectContents: function(){ + // summary: + // Internal function for selecting the contents of a node. + this.editor.focus(); + if(this._menuTarget){ + var nodeName = this._menuTarget.tagName.toLowerCase(); + switch(nodeName){ + case 'br': + case 'hr': + case 'img': + case 'input': + case 'base': + case 'meta': + case 'area': + case 'basefont': + break; + default: + try{ + dojo.withGlobal(this.editor.window, + "collapse", dijit._editor.selection, [null]); + dojo.withGlobal(this.editor.window, + "selectElementChildren", dijit._editor.selection, [this._menuTarget]); + this.editor.onDisplayChanged(); + }catch(e){/*squelch*/} + } + } + }, + + _deleteContents: function(){ + // summary: + // Internal function for selecting the contents of a node. + if(this._menuTarget){ + this.editor.beginEditing(); + this._selectContents(); + dojo.withGlobal(this.editor.window, + "remove", dijit._editor.selection, [this._menuTarget]); + this.editor.endEditing(); + this._updateBreadcrumb(); + this.editor.onDisplayChanged(); + } + }, + + _selectElement: function(){ + // summary: + // Internal function for selecting the contents of a node. + this.editor.focus(); + if(this._menuTarget){ + dojo.withGlobal(this.editor.window, + "collapse", dijit._editor.selection, [null]); + dojo.withGlobal(this.editor.window, + "selectElement", dijit._editor.selection, [this._menuTarget]); + this.editor.onDisplayChanged(); + + } + }, + + _deleteElement: function(){ + // summary: + // Internal function for selecting the contents of a node. + if(this._menuTarget){ + this.editor.beginEditing(); + this._selectElement(); + dojo.withGlobal(this.editor.window, + "remove", dijit._editor.selection, [this._menuTarget]); + this.editor.endEditing(); + this._updateBreadcrumb(); + this.editor.onDisplayChanged(); + } + }, + + _moveCToStart: function(){ + // summary: + // Internal function for selecting the contents of a node. + this.editor.focus(); + if(this._menuTarget){ + this._selectContents(); + dojo.withGlobal(this.editor.window, + "collapse", dijit._editor.selection, [true]); + } + }, + + _moveCToEnd: function(){ + // summary: + // Internal function for selecting the contents of a node. + this.editor.focus(); + if(this._menuTarget){ + this._selectContents(); + dojo.withGlobal(this.editor.window, + "collapse", dijit._editor.selection, [false]); + } + }, + + _updateBreadcrumb: function(){ + // summary: + // Function to trigger updating of the breadcrumb + // tags: + // private + var ed = this.editor; + if(ed.window){ + var sel = dijit.range.getSelection(ed.window); + if(sel && sel.rangeCount > 0){ + var range = sel.getRangeAt(0); + + // Check the getSelectedElement call. Needed when dealing with img tags. + var node = dojo.withGlobal(ed.window, + "getSelectedElement", dijit._editor.selection) || range.startContainer; + //var node = range.startContainer; + var bcList = []; + + // Make sure we get a selection within the editor document, + // have seen cases on IE where this wasn't true. + if(node && node.ownerDocument === ed.document){ + while(node && node !== ed.editNode && node != ed.document.body && node != ed.document){ + if(node.nodeType === 1){ + bcList.push({type: node.tagName.toLowerCase(), node: node}); + } + node = node.parentNode; + } + bcList = bcList.reverse(); + + while(this._buttons.length){ + var db = this._buttons.pop(); + dojo.disconnect(db._ddConnect); + this.breadcrumbBar.removeChild(db); + } + this._buttons = []; + + var i; + var self = this; + for(i = 0; i < bcList.length; i++){ + var bc = bcList[i]; + var b = new dijit.form.ComboButton({ + showLabel: true, + label: bc.type, + _selNode: bc.node, + dropDown: this._menu, + onClick: function(){ + self._menuTarget = this._selNode; + self._selectContents(); + } + }); + b._ddConnect = dojo.connect(b, "openDropDown", dojo.hitch(b, function(){ + self._menuTarget = this._selNode; + var nodeName = self._menuTarget.tagName.toLowerCase(); + var title = dojo.string.substitute(self._titleTemplate,{ + "nodeName": "<" + nodeName + ">" + }); + self._menuTitle.set("menuTitle", title); + switch(nodeName){ + case 'br': + case 'hr': + case 'img': + case 'input': + case 'base': + case 'meta': + case 'area': + case 'basefont': + self._selCMenu.set("disabled", true); + self._delCMenu.set("disabled", true); + self._moveSMenu.set("disabled", true); + self._moveEMenu.set("disabled", true); + self._selEMenu.set("disabled", false); + self._delEMenu.set("disabled", false); + break; + default: + self._selCMenu.set("disabled", false); + self._delCMenu.set("disabled", false); + self._selEMenu.set("disabled", false); + self._delEMenu.set("disabled", false); + self._moveSMenu.set("disabled", false); + self._moveEMenu.set("disabled", false); + } + })); + this._buttons.push(b); + this.breadcrumbBar.addChild(b); + } + if(dojo.isIE){ + // Prod it to fix layout. + this.breadcrumbBar.domNode.className = this.breadcrumbBar.domNode.className; + } + + } + } + } + }, + + updateState: function(){ + // summary: + // Over-ride of updateState to hide the toolbar when the iframe is not visible. + // Also triggers the breadcrumb update. + if(dojo.style(this.editor.iframe, "display") === "none" || this.get("disabled")){ + dojo.style(this.breadcrumbBar.domNode, "display", "none"); + }else{ + if(dojo.style(this.breadcrumbBar.domNode, "display") === "none"){ + dojo.style(this.breadcrumbBar.domNode, "display", "block"); + } + this._updateBreadcrumb(); + + // Some themes do padding, so we have to resize again after display. + var size = dojo.marginBox(this.editor.domNode); + this.editor.resize({h: size.h}); + } + }, + + destroy: function(){ + // summary: + // Over-ride to clean up the breadcrumb toolbar. + if(this.breadcrumbBar){ + this.breadcrumbBar.destroyRecursive(); + this.breadcrumbBar = null; + } + if(this._menu){ + this._menu.destroyRecursive(); + delete this._menu; + } + this._buttons = null; + delete this.editor.breadcrumbBar; + this.inherited(arguments); + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "breadcrumb"){ + o.plugin = new dojox.editor.plugins.Breadcrumb({}); + } +}); + +return dojox.editor.plugins.Breadcrumb; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/CollapsibleToolbar.js new file mode 100644 index 0000000..de45e75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/CollapsibleToolbar.js @@ -0,0 +1,185 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_editor/_Plugin", + "dijit/form/Button", + "dijit/focus", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/CollapsibleToolbar" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins._CollapsibleToolbarButton", [dijit._Widget, dijit._TemplatedMixin], { + // summary: + // Simple internal widget for representing a clickable button for expand/collapse + // with A11Y support. + // tags: + // private + templateString: "
                              ${text}
                              ", + + + // title [public] String + // The text to read by a screen reader that gets button focus. + title: "", + + // buttonClass [public] String + // The classname to apply to the expand/collapse button. + buttonClass: "", + + // text [public] String + // The text to use as expand/collapse in A11Y mode. + text: "", + + // textClass [public] String + // The classname to apply to the expand/collapse text. + textClass: "", + + onClick: function(e){ + // summary: + // Simple synthetic event to listen for dijit click events (mouse or keyboard) + } +}); + + +dojo.declare("dojox.editor.plugins.CollapsibleToolbar",dijit._editor._Plugin,{ + // summary: + // This plugin provides a weappable toolbar container to allow expand/collapse + // of the editor toolbars. This plugin should be registered first in most cases to + // avoid conflicts in toolbar construction. + + // _myWidgets: [private] array + // Container for widgets I allocate that will need to be destroyed. + _myWidgets: null, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._constructContainer(); + }, + + _constructContainer: function(){ + // summary: + // Internal function to construct a wrapper for the toolbar/header that allows + // it to expand and collapse. It effectively builds a containing table, + // which handles the layout nicely and gets BIDI support by default. + // tags: + // private + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "CollapsibleToolbar"); + this._myWidgets = []; + + // Build the containers. + var container = dojo.create("table", {style: { width: "100%" }, tabindex: -1, "class": "dojoxCollapsibleToolbarContainer"}); + var tbody = dojo.create("tbody", {tabindex: -1}, container); + var row = dojo.create("tr", {tabindex: -1}, tbody); + var openTd = dojo.create("td", {"class": "dojoxCollapsibleToolbarControl", tabindex: -1}, row); + var closeTd = dojo.create("td", {"class": "dojoxCollapsibleToolbarControl", tabindex: -1}, row); + var menuTd = dojo.create("td", {style: { width: "100%" }, tabindex: -1}, row); + var m = dojo.create("span", {style: { width: "100%" }, tabindex: -1}, menuTd); + + var collapseButton = new dojox.editor.plugins._CollapsibleToolbarButton({ + buttonClass: "dojoxCollapsibleToolbarCollapse", + title: strings.collapse, + text: "-", + textClass: "dojoxCollapsibleToolbarCollapseText" + }); + dojo.place(collapseButton.domNode, openTd); + var expandButton = new dojox.editor.plugins._CollapsibleToolbarButton({ + buttonClass: "dojoxCollapsibleToolbarExpand", + title: strings.expand, + text: "+", + textClass: "dojoxCollapsibleToolbarExpandText" + }); + dojo.place(expandButton.domNode, closeTd); + + this._myWidgets.push(collapseButton); + this._myWidgets.push(expandButton); + + // Attach everything in now. + dojo.style(closeTd, "display", "none"); + dojo.place(container, this.editor.toolbar.domNode, "after"); + dojo.place(this.editor.toolbar.domNode, m); + + this.openTd = openTd; + this.closeTd = closeTd; + this.menu = m; + + // Establish the events to handle open/close. + this.connect(collapseButton, "onClick", "_onClose"); + this.connect(expandButton, "onClick", "_onOpen"); + }, + + _onClose: function(e){ + // summary: + // Internal function for handling a click event that will close the toolbar. + // e: + // The click event. + // tags: + // private + if(e){ dojo.stopEvent(e); } + var size = dojo.marginBox(this.editor.domNode); + dojo.style(this.openTd, "display", "none"); + dojo.style(this.closeTd, "display", ""); + dojo.style(this.menu, "display", "none"); + this.editor.resize({h: size.h}); + // work around IE rendering glitch in a11y mode. + if(dojo.isIE){ + this.editor.header.className = this.editor.header.className; + this.editor.footer.className = this.editor.footer.className; + } + dijit.focus(this.closeTd.firstChild); + }, + + _onOpen: function(e) { + // summary: + // Internal function for handling a click event that will open the toolbar. + // e: + // The click event. + // tags: + // private + if(e){ dojo.stopEvent(e); } + var size = dojo.marginBox(this.editor.domNode); + dojo.style(this.closeTd, "display", "none"); + dojo.style(this.openTd, "display", ""); + dojo.style(this.menu, "display", ""); + this.editor.resize({h: size.h}); + // work around IE rendering glitch in a11y mode. + if(dojo.isIE){ + this.editor.header.className = this.editor.header.className; + this.editor.footer.className = this.editor.footer.className; + } + dijit.focus(this.openTd.firstChild); + }, + + destroy: function(){ + // summary: + // Over-ride of destroy method for cleanup. + this.inherited(arguments); + if(this._myWidgets){ + while(this._myWidgets.length){ + this._myWidgets.pop().destroy(); + } + delete this._myWidgets; + } + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "collapsibletoolbar"){ + o.plugin = new dojox.editor.plugins.CollapsibleToolbar({}); + } +}); + +return dojox.editor.plugins.CollapsibleToolbar; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/EntityPalette.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/EntityPalette.js new file mode 100755 index 0000000..54f14e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/EntityPalette.js @@ -0,0 +1,231 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_PaletteMixin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/latinEntities" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.EntityPalette"); + +dojo.declare("dojox.editor.plugins.EntityPalette", + [dijit._Widget, dijit._TemplatedMixin, dijit._PaletteMixin], + { + // summary: + // A keyboard accessible HTML entity-picking widget (for inserting symbol characters) + // description: + // Grid showing various entities, so the user can pick a certain entity. + // Can be used standalone, or as a popup. + // + // example: + // |
                              + // + // example: + // | var picker = new dojox.editor.plugins.EntityPalette({ },srcNode); + // | picker.startup(); + + // templateString: [protected] String + // The basic template used to render the palette. + // Should generally be over-ridden to define different classes. + templateString: '
                              \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
                              \n' + + ' \n' + + ' \n' + + '
                              \n' + + '
                              \n'+ + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
                              PreviewCodeNameDescription
                              \n' + + '
                              \n' + + '
                              ', + + + baseClass: "dojoxEntityPalette", + + // showPreview: [public] Boolean + // Whether the preview pane will be displayed, to show details about the selected entity. + showPreview: true, + + // showCode: [public] boolean + // Show the character code for the entity. + showCode: false, + + // showentityName: [public] boolean + // Show the entity name for the entity. + showEntityName: false, + + // palette: [public] String + // The symbol pallete to display. The only current one is 'latin'. + palette: "latin", + + dyeClass: 'dojox.editor.plugins.LatinEntity', + + // domNodeClass [protected] String + paletteClass: 'editorLatinEntityPalette', + + cellClass: "dojoxEntityPaletteCell", + + postMixInProperties: function(){ + // Convert hash of entities into two-dimensional rows/columns table (array of arrays) + var choices = dojo.i18n.getLocalization("dojox.editor.plugins", "latinEntities"); + var numChoices = 0; + var entityKey; + for(entityKey in choices){numChoices++;} + var choicesPerRow = Math.floor(Math.sqrt(numChoices)); + var numRows = choicesPerRow; + var currChoiceIdx = 0; + var rows = []; + var row = []; + for(entityKey in choices){ + currChoiceIdx++; + row.push(entityKey); + if(currChoiceIdx % numRows === 0){ + rows.push(row); + row = []; + } + } + if(row.length > 0){ + rows.push(row); + } + this._palette = rows; + }, + + buildRendering: function(){ + // Instantiate the template, which makes a skeleton table which we'll insert the entities + this.inherited(arguments); + + var i18n = dojo.i18n.getLocalization("dojox.editor.plugins", "latinEntities"); + + this._preparePalette( + this._palette, + i18n + ); + + var cells = dojo.query(".dojoxEntityPaletteCell", this.gridNode); + dojo.forEach(cells, function(cellNode){ + this.connect(cellNode, "onmouseenter", "_onCellMouseEnter"); + }, this); + }, + + _onCellMouseEnter: function(e){ + // summary: + // Simple function to handle updating the display at the bottom of + // the palette. + // e: + // The event. + // tags: + // private + this._displayDetails(e.target); + }, + + postCreate: function(){ + this.inherited(arguments); + + // Show the code and entity name (if enabled to do so.) + dojo.style(this.codeHeader, "display", this.showCode?"":"none"); + dojo.style(this.codeNode, "display", this.showCode?"":"none"); + dojo.style(this.entityHeader, "display", this.showEntityName?"":"none"); + dojo.style(this.entityNode, "display", this.showEntityName?"":"none"); + + if(!this.showPreview){ + dojo.style(this.previewNode,"display","none"); + } + }, + + _setCurrent: function(/*DOMNode*/ node){ + // summary: + // Called when a entity is hovered or focused. + // description: + // Removes highlight of the old entity, and highlights + // the new entity. + // tags: + // protected + this.inherited(arguments); + if(this.showPreview){ + this._displayDetails(node); + } + }, + + _displayDetails: function(/*DOMNode*/ cell){ + // summary: + // Display the details of the currently focused entity in the preview pane + var dye = this._getDye(cell); + if(dye){ + var ehtml = dye.getValue(); + var ename = dye._alias; + this.previewNode.innerHTML=ehtml; + this.codeNode.innerHTML="&#"+parseInt(ehtml.charCodeAt(0), 10)+";"; + this.entityNode.innerHTML="&"+ename+";"; + var i18n = dojo.i18n.getLocalization("dojox.editor.plugins", "latinEntities"); + this.descNode.innerHTML=i18n[ename].replace("\n", "
                              "); + + }else{ + this.previewNode.innerHTML=""; + this.codeNode.innerHTML=""; + this.entityNode.innerHTML=""; + this.descNode.innerHTML=""; + } + } +}); + +dojo.declare("dojox.editor.plugins.LatinEntity", + null, + { + // summary: + // Represents a character. + // Initialized using an alias for the character (like cent) rather + // than with the character itself. + + constructor: function(/*String*/ alias){ + // summary: + // Construct JS object representing an entity (associated w/a cell + // in the palette) + // value: String + // alias name: 'cent', 'pound' .. + + this._alias = alias; + }, + + getValue: function(){ + // summary: + // Returns HTML representing the character, like & + // + return "&" + this._alias + ";"; + }, + + fillCell: function(/*DOMNode*/ cell){ + // Deal with entities that have keys which are reserved words. + cell.innerHTML = this.getValue(); + } +}); + +return dojox.editor.plugins.EntityPalette; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/FindReplace.js new file mode 100755 index 0000000..1352952 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/FindReplace.js @@ -0,0 +1,852 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_base/manager", // getUniqueId + "dijit/_base/popup", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_KeyNavContainer", + "dijit/_WidgetsInTemplateMixin", + "dijit/TooltipDialog", + "dijit/Toolbar", + "dijit/form/CheckBox", + "dijit/form/_TextBoxMixin", // selectInputText + "dijit/form/TextBox", + "dijit/_editor/_Plugin", + "dijit/form/Button", + "dijit/form/DropDownButton", + "dijit/form/ToggleButton", + "dojox/editor/plugins/ToolbarLineBreak", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/string", + "dojo/i18n!dojox/editor/plugins/nls/FindReplace" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.FindReplace"); + +dojo.declare("dojox.editor.plugins._FindReplaceCloseBox", [dijit._Widget, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin], { + // summary: + // Base class for widgets that contains a button labeled X + // to close the tool bar. + + btnId: "", + widget: null, + widgetsInTemplate: true, + + templateString: + "" + + "" + + "", + + postMixInProperties: function(){ + // Set some substitution variables used in the template + this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_")); + this.btnId = this.id + "_close"; + this.inherited(arguments); + }, + startup: function(){ + this.connect(this.button, "onClick", "onClick"); + }, + onClick: function(){ + } +}); + + +dojo.declare("dojox.editor.plugins._FindReplaceTextBox", + [dijit._Widget, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin],{ + // summary: + // Base class for widgets that contains a label (like "Font:") + // and a TextBox to pick a value. + // Used as Toolbar entry. + + // textId: [public] String + // The id of the enhanced textbox + textId: "", + + // label: [public] String + // The label of the enhanced textbox + label: "", + + // tooltip: [public] String + // The tooltip of the enhanced textbox when the mouse is hovering on it + toolTip: "", + widget: null, + widgetsInTemplate: true, + + templateString: + "" + + "" + + "" + + "", + + postMixInProperties: function(){ + // Set some substitution variables used in the template + this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_")); + this.textId = this.id + "_text"; + + this.inherited(arguments); + }, + + postCreate: function(){ + this.textBox.set("value", ""); + this.disabled = this.textBox.get("disabled"); + this.connect(this.textBox, "onChange", "onChange"); + dojo.attr(this.textBox.textbox, "formnovalidate", "true"); + }, + + _setValueAttr: function(/*String*/ value){ + //If the value is not a permitted value, just set empty string to prevent showing the warning icon + this.value = value; + this.textBox.set("value", value); + }, + + focus: function(){ + this.textBox.focus(); + }, + + _setDisabledAttr: function(/*Boolean*/ value){ + // summary: + // Over-ride for the textbox's 'disabled' attribute so that it can be + // disabled programmatically. + // value: + // The boolean value to indicate if the textbox should be disabled or not + // tags: + // private + this.disabled = value; + this.textBox.set("disabled", value); + }, + + onChange: function(/*String*/ val){ + // summary: + // Stub function for change events on the box. + // tags: + // public + this.value= val; + }, + + _onKeyPress: function(/*Event*/ evt){ + // summary: + // Handle the arrow key events + // evt: + // Event object passed to this handler + // tags: + // private + var start = 0; + var end = 0; + + // If CTRL, ALT or SHIFT is not held on + if(evt.target && !evt.ctrlKey && !evt.altKey && !evt.shiftKey){ + if(evt.keyCode == dojo.keys.LEFT_ARROW){ + start = evt.target.selectionStart; + end = evt.target.selectionEnd; + if(start < end){ + dijit.selectInputText(evt.target, start, start); + dojo.stopEvent(evt); + } + }else if(evt.keyCode == dojo.keys.RIGHT_ARROW){ + start = evt.target.selectionStart; + end = evt.target.selectionEnd; + if(start < end){ + dijit.selectInputText(evt.target, end, end); + dojo.stopEvent(evt); + } + } + } + } +}); + + +dojo.declare("dojox.editor.plugins._FindReplaceCheckBox", + [dijit._Widget, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin],{ + // summary: + // Base class for widgets that contains a label (like "Match case: ") + // and a checkbox to indicate if it is checked or not. + // Used as Toolbar entry. + + // checkId: [public] String + // The id of the enhanced checkbox + checkId: "", + + // label: [public] String + // The label of the enhanced checkbox + label: "", + + // tooltip: [public] String + // The tooltip of the enhanced checkbox when the mouse is hovering it + tooltip: "", + + widget: null, + widgetsInTemplate: true, + + templateString: + "" + + "" + + "" + + "", + + postMixInProperties: function(){ + // Set some substitution variables used in the template + this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_")); + this.checkId = this.id + "_check"; + this.inherited(arguments); + }, + + postCreate: function(){ + this.checkBox.set("checked", false); + this.disabled = this.checkBox.get("disabled"); + this.checkBox.isFocusable = function(){ return false; }; + }, + + _setValueAttr: function(/*Boolean*/ value){ + // summary: + // Passthrough for checkbox. + // tags: + // private + this.checkBox.set('value', value); + }, + + _getValueAttr: function(){ + // summary: + // Passthrough for checkbox. + // tags: + // private + return this.checkBox.get('value'); + }, + + focus: function(){ + // summary: + // Handle the focus event when this widget gets focused + // tags: + // private + this.checkBox.focus(); + }, + + _setDisabledAttr: function(/*Boolean*/ value){ + // summary: + // Over-ride for the button's 'disabled' attribute so that it can be + // disabled programmatically. + // value: + // The flag that indicates if the checkbox is disabled or not. + // tags: + // private + this.disabled = value; + this.checkBox.set("disabled", value); + } +}); + + +dojo.declare("dojox.editor.plugins._FindReplaceToolbar", dijit.Toolbar, { + // summary: + // A toolbar that derived from dijit.Toolbar, which + // eliminates some unnecessary event response such as LEFT_ARROW pressing + // and click bubbling. + + postCreate: function(){ + this.connectKeyNavHandlers([], []); // Prevent arrow key navigation + this.connect(this.containerNode, "onclick", "_onToolbarEvent"); + this.connect(this.containerNode, "onkeydown", "_onToolbarEvent"); + dojo.addClass(this.domNode, "dijitToolbar"); + }, + + addChild: function(/*dijit._Widget*/ widget, /*int?*/ insertIndex){ + // summary: + // Add a child to our _Container and prevent the default + // arrow key navigation function. This function may bring in + // side effect + dijit._KeyNavContainer.superclass.addChild.apply(this, arguments); + }, + + _onToolbarEvent: function(/*Event*/ evt){ + // Editor may have special treatment to some events, so stop the bubbling. + // evt: + // The Event object + // tages: + // private + evt.stopPropagation(); + } +}); + +dojo.declare("dojox.editor.plugins.FindReplace",[dijit._editor._Plugin],{ + // summary: + // This plugin provides a Find/Replace cabability for the editor. + // Note that this plugin is NOT supported on Opera currently, as opera + // does not implement a window.find or equiv function. + + // buttonClass: [protected] + // Define the class of button the editor uses. + buttonClass: dijit.form.ToggleButton, + + // iconClassPrefix: [const] String + // The CSS class name for the button node is formed from `iconClassPrefix` and `command` + iconClassPrefix: "dijitEditorIconsFindReplace", + + // editor: [protected] + // The editor this plugin belongs to + editor: null, + + // button: [protected] + // The toggle button + button: null, + + // _frToolbar: [private] + // The toolbar that contain all the entries and buttons + _frToolbar: null, + + // _closeBox: [private] + // The close button of the F/R toolbar + _closeBox: null, + + // _findField: [private] + // The Find field of the F/R toolbar + _findField: null, + + // _replaceField: [private] + // The Replace field of the F/R toolbar + _replaceField: null, + + // _findButton: [private] + // The Find button of the F/R toolbar + _findButton: null, + + // _replaceButton: [private] + // The Replace button of the F/R toolbar + _replaceButton: null, + + // _replaceAllButton: [private] + // The ReplaceAll button of the F/R toolbar + _replaceAllButton: null, + + // _caseSensitive: [private] + // The case sensitive checkbox + _caseSensitive: null, + + // _backwards: [private] + // The backwards checkbox + _backwards: null, + + // _promDialog: [private] + // The prompt message box that shows the user some messages + // such as the end of a search, the end of a replacement, etc. + _promDialog: null, + _promDialogTimeout: null, + + // _strings: [private] + // The array that contains globalized strings + _strings: null, + + _initButton: function(){ + // summary: + // Over-ride for creation of the resize button. + this._strings = dojo.i18n.getLocalization("dojox.editor.plugins", "FindReplace"); + this.button = new dijit.form.ToggleButton({ + label: this._strings["findReplace"], + showLabel: false, + iconClass: this.iconClassPrefix + " dijitEditorIconFindString", + tabIndex: "-1", + onChange: dojo.hitch(this, "_toggleFindReplace") + }); + if(dojo.isOpera){ + // Not currently supported on Opera! + this.button.set("disabled", true); + } + //Link up so that if the toggle is disabled, then the view of Find/Replace is closed. + this.connect(this.button, "set", dojo.hitch(this, function(attr, val){ + if(attr === "disabled"){ + this._toggleFindReplace((!val && this._displayed), true, true); + } + })); + }, + + setEditor: function(editor){ + // summary: + // This is a callback handler that set a reference to the editor this plugin + // hosts in + this.editor = editor; + this._initButton(); + }, + + toggle: function(){ + // summary: + // Function to allow programmatic toggling of the find toolbar. + // tags: + // public + this.button.set("checked", !this.button.get("checked")); + }, + + _toggleFindReplace: function(/*Boolean*/ show, /*Boolean?*/ ignoreState, /*Boolean?*/ buttonDisabled){ + // summary: + // Function to toggle whether or not find/replace is displayed. + // show: + // Indicate if the toolbar is shown or not + // ignoreState: + // Indicate if the status should be ignored or not + // blurEditor: + // Indicate if the focus should be removed from the editor or not + // tags: + // private + var size = dojo.marginBox(this.editor.domNode); + if(show && !dojo.isOpera){ + dojo.style(this._frToolbar.domNode, "display", "block"); + // Auto populate the Find field + this._populateFindField(); + if(!ignoreState){ + this._displayed = true; + } + }else{ + dojo.style(this._frToolbar.domNode, "display", "none"); + if(!ignoreState){ + this._displayed = false; + } + + // If the toggle button is disabled, it is most likely that + // another plugin such as ViewSource disables it. + // So we do not need to focus the text area of the editor to + // prevent the editor from an invalid status. + // Please refer to dijit._editor.plugins.ViewSource for more details. + if(!buttonDisabled){ + this.editor.focus(); + } + } + + // Resize the editor. + this.editor.resize({h: size.h}); + }, + + _populateFindField: function(){ + // summary: + // Populate the Find field with selected text when dialog initially displayed. + // Auto-select text in Find field after it is populated. + // If nothing selected, restore previous entry from the same session. + // tags: + // private + var ed = this.editor; + var win = ed.window; + var selectedTxt = dojo.withGlobal(ed.window, "getSelectedText", dijit._editor.selection, [null]); + if(this._findField && this._findField.textBox){ + if(selectedTxt){ + this._findField.textBox.set("value", selectedTxt); + } + this._findField.textBox.focus(); + dijit.selectInputText(this._findField.textBox.focusNode); + } + }, + + setToolbar: function(/*dijit.Toolbar*/ toolbar){ + // summary: + // Over-ride so that find/replace toolbar is appended after the current toolbar. + // toolbar: + // The current toolbar of the editor + // tags: + // public + this.inherited(arguments); + if(!dojo.isOpera){ + var _tb = (this._frToolbar = new dojox.editor.plugins._FindReplaceToolbar()); + dojo.style(_tb.domNode, "display", "none"); + dojo.place(_tb.domNode, toolbar.domNode, "after"); + _tb.startup(); + + // IE6 will put the close box in a new line when its style is "float: right". + // So place the close box ahead of the other fields, which makes it align with + // the other components. + this._closeBox = new dojox.editor.plugins._FindReplaceCloseBox(); + _tb.addChild(this._closeBox); + + // Define the search/replace fields. + this._findField = new dojox.editor.plugins._FindReplaceTextBox( + {label: this._strings["findLabel"], tooltip: this._strings["findTooltip"]}); + _tb.addChild(this._findField); + + this._replaceField = new dojox.editor.plugins._FindReplaceTextBox( + {label: this._strings["replaceLabel"], tooltip: this._strings["replaceTooltip"]}); + _tb.addChild(this._replaceField); + + // Define the Find/Replace/ReplaceAll buttons. + _tb.addChild(new dojox.editor.plugins.ToolbarLineBreak()); + + this._findButton = new dijit.form.Button({label: this._strings["findButton"], showLabel: true, + iconClass: this.iconClassPrefix + " dijitEditorIconFind"}); + this._findButton.titleNode.title = this._strings["findButtonTooltip"]; + _tb.addChild(this._findButton); + + this._replaceButton = new dijit.form.Button({label: this._strings["replaceButton"], showLabel: true, + iconClass: this.iconClassPrefix + " dijitEditorIconReplace"}); + this._replaceButton.titleNode.title = this._strings["replaceButtonTooltip"]; + _tb.addChild(this._replaceButton); + + this._replaceAllButton = new dijit.form.Button({label: this._strings["replaceAllButton"], showLabel: true, + iconClass: this.iconClassPrefix + " dijitEditorIconReplaceAll"}); + this._replaceAllButton.titleNode.title = this._strings["replaceAllButtonTooltip"]; + _tb.addChild(this._replaceAllButton); + + // Define the option checkboxes. + this._caseSensitive = new dojox.editor.plugins._FindReplaceCheckBox( + {label: this._strings["matchCase"], tooltip: this._strings["matchCaseTooltip"]}); + _tb.addChild(this._caseSensitive); + + this._backwards = new dojox.editor.plugins._FindReplaceCheckBox( + {label: this._strings["backwards"], tooltip: this._strings["backwardsTooltip"]}); + _tb.addChild(this._backwards); + + // Set initial states, buttons should be disabled unless content is + // present in the fields. + this._findButton.set("disabled", true); + this._replaceButton.set("disabled", true); + this._replaceAllButton.set("disabled", true); + + // Connect the event to the status of the items + this.connect(this._findField, "onChange", "_checkButtons"); + this.connect(this._findField, "onKeyDown", "_onFindKeyDown"); + this.connect(this._replaceField, "onKeyDown", "_onReplaceKeyDown"); + + // Connect up the actual search events. + this.connect(this._findButton, "onClick", "_find"); + this.connect(this._replaceButton, "onClick", "_replace"); + this.connect(this._replaceAllButton, "onClick", "_replaceAll"); + + // Connect up the close event + this.connect(this._closeBox, "onClick", "toggle"); + + // Prompt for the message + this._promDialog = new dijit.TooltipDialog(); + this._promDialog.startup(); + this._promDialog.set("content", ""); + } + }, + + _checkButtons: function(){ + // summary: + // Ensure that all the buttons are in a correct status + // when certain events are fired. + var fText = this._findField.get("value"); + + if(fText){ + // Only enable if find text is not empty or just blank/spaces. + this._findButton.set("disabled", false); + this._replaceButton.set("disabled", false); + this._replaceAllButton.set("disabled", false); + }else{ + this._findButton.set("disabled", true); + this._replaceButton.set("disabled", true); + this._replaceAllButton.set("disabled", true); + } + }, + + _onFindKeyDown: function(evt){ + if(evt.keyCode == dojo.keys.ENTER){ + // Perform the default search action + this._find(); + dojo.stopEvent(evt); + } + }, + + _onReplaceKeyDown: function(evt){ + if(evt.keyCode == dojo.keys.ENTER){ + // Perform the default replace action + if(!this._replace()) this._replace(); + dojo.stopEvent(evt); + } + }, + + _find: function(/*Boolean?*/ showMessage){ + // summary: + // This function invokes a find on the editor document with the noted options for + // find. + // showMessage: + // Indicated whether the tooltip is shown or not when the search reaches the end + // tags: + // private. + // returns: + // Boolean indicating if the content was found or not. + var txt = this._findField.get("value") || ""; + if(txt){ + var caseSensitive = this._caseSensitive.get("value"); + var backwards = this._backwards.get("value"); + var isFound = this._findText(txt, caseSensitive, backwards); + if(!isFound && showMessage){ + this._promDialog.set("content", dojo.string.substitute( + this._strings["eofDialogText"], {"0": this._strings["eofDialogTextFind"]})); + dijit.popup.open({popup: this._promDialog, around: this._findButton.domNode}); + this._promDialogTimeout = setTimeout(dojo.hitch(this, function(){ + clearTimeout(this._promDialogTimeout); + this._promDialogTimeout = null; + dijit.popup.close(this._promDialog); + }), 3000); + setTimeout(dojo.hitch(this, function(){ + this.editor.focus(); + }), 0); + } + return isFound; + } + + return false; + }, + + _replace: function(/*Boolean?*/ showMessage){ + // summary: + // This function invokes a replace on the editor document with the noted options for replace + // showMessage: + // Indicate if the prompt message is shown or not when the replacement + // reaches the end + // tags: + // private + // returns: + // Boolean indicating if the content was replaced or not. + var isReplaced = false; + var ed = this.editor; + ed.focus(); + var txt = this._findField.get("value") || ""; + var repTxt = this._replaceField.get("value") || ""; + + if(txt){ + var caseSensitive = this._caseSensitive.get("value"); + // Check if it is forced to be forwards or backwards + var backwards = this._backwards.get("value"); + + //Replace the current selected text if it matches the pattern + var selected = dojo.withGlobal(ed.window, "getSelectedText", dijit._editor.selection, [null]); + // Handle checking/replacing current selection. For some reason on Moz + // leading whitespace is trimmed, so we have to trim it down on this check + // or we don't always replace. Moz bug! + if(dojo.isMoz){ + txt = dojo.trim(txt); + selected = dojo.trim(selected); + } + + var regExp = this._filterRegexp(txt, !caseSensitive); + if(selected && regExp.test(selected)){ + ed.execCommand("inserthtml", repTxt); + isReplaced = true; + + if(backwards){ + // Move to the beginning of the replaced text + // to avoid the infinite recursive replace + this._findText(repTxt, caseSensitive, backwards); + dojo.withGlobal(ed.window, "collapse", dijit._editor.selection, [true]); + } + } + + if(!this._find(false) && showMessage){ // Find the next + this._promDialog.set("content", dojo.string.substitute( + this._strings["eofDialogText"], {"0": this._strings["eofDialogTextReplace"]})); + dijit.popup.open({popup: this._promDialog, around: this._replaceButton.domNode}); + this._promDialogTimeout = setTimeout(dojo.hitch(this, function(){ + clearTimeout(this._promDialogTimeout); + this._promDialogTimeout = null; + dijit.popup.close(this._promDialog); + }), 3000); + setTimeout(dojo.hitch(this, function(){ + this.editor.focus(); + }), 0); + } + return isReplaced; + } + return null; + }, + + _replaceAll: function(/*Boolean?*/ showMessage){ + // summary: + // This function replaces all the matched content on the editor document + // with the noted options for replace + // showMessage: + // Indicate if the prompt message is shown or not when the action is done. + // tags: + // private + var replaced = 0; + var backwards = this._backwards.get("value"); + + if(backwards){ + this.editor.placeCursorAtEnd(); + }else{ + this.editor.placeCursorAtStart(); + } + + // The _replace will return false if the current selection deos not match + // the searched text. So try the first attempt so that the selection + // is always the searched text if there is one that matches + if(this._replace(false)) { replaced++; } + // Do the replace via timeouts to avoid locking the browser up for a lot of replaces. + var loopBody = dojo.hitch(this, function(){ + if(this._replace(false)){ + replaced++; + setTimeout(loopBody, 10); + }else{ + if(showMessage){ + this._promDialog.set("content", dojo.string.substitute( + this._strings["replaceDialogText"], {"0": "" + replaced})); + dijit.popup.open({ + popup: this._promDialog, + around: this._replaceAllButton.domNode + }); + this._promDialogTimeout = setTimeout(dojo.hitch(this, function(){ + clearTimeout(this._promDialogTimeout); + this._promDialogTimeout = null; + dijit.popup.close(this._promDialog); + }), 3000); + setTimeout(dojo.hitch(this, function(){ + this._findField.focus(); + this._findField.textBox.focusNode.select(); + }), 0); + } + } + }); + loopBody(); + }, + + _findText: function(/*String*/ txt, /*Boolean*/ caseSensitive, /*Boolean*/ backwards){ + // summary: + // This function invokes a find with specific options + // txt: String + // The text to locate in the document. + // caseSensitive: Boolean + // Whether or ot to search case-sensitively. + // backwards: Boolean + // Whether or not to search backwards in the document. + // tags: + // private. + // returns: + // Boolean indicating if the content was found or not. + var ed = this.editor; + var win = ed.window; + var found = false; + if(txt){ + if(win.find){ + found = win.find(txt, caseSensitive, backwards, false, false, false, false); + }else{ + var doc = ed.document; + if(doc.selection){ + /* IE */ + // Focus to restore position/selection, + // then shift to search from current position. + this.editor.focus(); + var txtRg = doc.body.createTextRange(); + var curPos = doc.selection?doc.selection.createRange():null; + if(curPos){ + if(backwards){ + txtRg.setEndPoint("EndToStart", curPos); + }else{ + txtRg.setEndPoint("StartToEnd", curPos); + } + } + var flags = caseSensitive?4:0; + if(backwards){ + flags = flags | 1; + } + //flags = flags | + found = txtRg.findText(txt,txtRg.text.length,flags); + if(found){ + txtRg.select(); + } + } + } + } + return found; + }, + + _filterRegexp: function(/*String*/ pattern, /*Boolean*/ ignoreCase){ + // summary: + // Helper function to convert a simple pattern to a regular expression for matching. + // description: + // Returns a regular expression object that conforms to the defined conversion rules. + // For example: + // ca* -> /^ca.*$/ + // *ca* -> /^.*ca.*$/ + // *c\*a* -> /^.*c\*a.*$/ + // *c\*a?* -> /^.*c\*a..*$/ + // and so on. + // + // pattern: string + // A simple matching pattern to convert that follows basic rules: + // * Means match anything, so ca* means match anything starting with ca + // ? Means match single character. So, b?b will match to bob and bab, and so on. + // \ is an escape character. So for example, \* means do not treat * as a match, but literal character *. + // To use a \ as a character in the string, it must be escaped. So in the pattern it should be + // represented by \\ to be treated as an ordinary \ character instead of an escape. + // + // ignoreCase: + // An optional flag to indicate if the pattern matching should be treated as case-sensitive or not when comparing + // By default, it is assumed case sensitive. + // tags: + // private + var rxp = ""; + var c = null; + for(var i = 0; i < pattern.length; i++){ + c = pattern.charAt(i); + switch(c){ + case '\\': + rxp += c; + i++; + rxp += pattern.charAt(i); + break; + case '$': + case '^': + case '/': + case '+': + case '.': + case '|': + case '(': + case ')': + case '{': + case '}': + case '[': + case ']': + rxp += "\\"; //fallthrough + default: + rxp += c; + } + } + rxp = "^" + rxp + "$"; + if(ignoreCase){ + return new RegExp(rxp,"mi"); //RegExp + }else{ + return new RegExp(rxp,"m"); //RegExp + } + + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + destroy: function(){ + // summary: + // Cleanup of our custom toolbar. + this.inherited(arguments); + if(this._promDialogTimeout){ + clearTimeout(this._promDialogTimeout); + this._promDialogTimeout = null; + dijit.popup.close(this._promDialog); + } + if(this._frToolbar){ + this._frToolbar.destroyRecursive(); + this._frToolbar = null; + } + if(this._promDialog){ + this._promDialog.destroyRecursive(); + this._promDialog = null; + } + } +}); + + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "findreplace"){ + o.plugin = new dojox.editor.plugins.FindReplace({}); + } +}); + +return dojox.editor.plugins.FindReplace; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/InsertAnchor.js new file mode 100755 index 0000000..55a81b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/InsertAnchor.js @@ -0,0 +1,452 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_base/manager", // TODO: change to dijit/registry, and change dijit.byId to registry.byId + "dijit/_editor/range", + "dijit/_Templated", + "dijit/TooltipDialog", + "dijit/form/ValidationTextBox", + "dijit/form/Select", + "dijit/form/Button", + "dijit/form/DropDownButton", + "dijit/_editor/range", + "dijit/_editor/selection", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/string", + "dojox/editor/plugins/ToolbarLineBreak", + "dojo/i18n!dojox/editor/plugins/nls/InsertAnchor", + "dojo/i18n!dijit/nls/common" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.InsertAnchor", dijit._editor._Plugin, { + // summary: + // This plugin provides the basis for an insert anchor dialog for the + // dijit.Editor + // + // description: + // The command provided by this plugin is: + // * insertAnchor + + // htmlTemplate: [protected] String + // String used for templating the HTML to insert at the desired point. + htmlTemplate: "${textInput}", + + // iconClassPrefix: [const] String + // The CSS class name for the button node icon. + iconClassPrefix: "dijitAdditionalEditorIcon", + + // linkDialogTemplate: [private] String + // Template for contents of TooltipDialog to pick URL + _template: [ + "", + "
                              ", + "", + "", + "", + "
                              ", + "", + "", + "", + "
                              ", + "", + "", + "
                              " + ].join(""), + + _initButton: function(){ + // Override _Plugin._initButton() to initialize DropDownButton and TooltipDialog. + var _this = this; + var messages = dojo.i18n.getLocalization("dojox.editor.plugins", "InsertAnchor", this.lang); + + // Build the dropdown dialog we'll use for the button + var dropDown = (this.dropDown = new dijit.TooltipDialog({ + title: messages["title"], + execute: dojo.hitch(this, "setValue"), + onOpen: function(){ + _this._onOpenDialog(); + dijit.TooltipDialog.prototype.onOpen.apply(this, arguments); + }, + onCancel: function(){ + setTimeout(dojo.hitch(_this, "_onCloseDialog"),0); + } + })); + + this.button = new dijit.form.DropDownButton({ + label: messages["insertAnchor"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "InsertAnchor", + tabIndex: "-1", + dropDown: this.dropDown + }); + + messages.id = dijit.getUniqueId(this.editor.id); + this._uniqueId = messages.id; + + this.dropDown.set('content', dropDown.title + + "
                              " + + dojo.string.substitute(this._template, messages)); + + dropDown.startup(); + this._anchorInput = dijit.byId(this._uniqueId + "_anchorInput"); + this._textInput = dijit.byId(this._uniqueId + "_textInput"); + this._setButton = dijit.byId(this._uniqueId + "_setButton"); + this.connect(dijit.byId(this._uniqueId + "_cancelButton"), "onClick", function(){ + this.dropDown.onCancel(); + }); + + if(this._anchorInput){ + this.connect(this._anchorInput, "onChange", "_checkInput"); + } + if(this._textInput){ + this.connect(this._anchorInput, "onChange", "_checkInput"); + } + + //Register some filters to handle setting/removing the class tags on anchors. + this.editor.contentDomPreFilters.push(dojo.hitch(this, this._preDomFilter)); + this.editor.contentDomPostFilters.push(dojo.hitch(this, this._postDomFilter)); + this._setup(); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + }, + + _checkInput: function(){ + // summary: + // Function to check the input to the dialog is valid + // and enable/disable set button + // tags: + // private + var disable = true; + if(this._anchorInput.isValid()){ + disable = false; + } + this._setButton.set("disabled", disable); + }, + + _setup: function(){ + // summary: + // Over-ridable function that connects tag specific events. + this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + this.connect(this.editor.editNode, "ondblclick", this._onDblClick); + setTimeout(dojo.hitch(this, function() { + this._applyStyles(); + }), 100); + })); + }, + + getAnchorStyle: function(){ + // summary: + // Over-ridable function for getting the style to apply to the anchor. + // The default is a dashed border with an anchor symbol. + // tags: + // public + var style = "@media screen {\n" + + "\t.dijitEditorPluginInsertAnchorStyle {\n" + + "\t\tbackground-image: url({MODURL}/images/anchor.gif);\n" + + "\t\tbackground-repeat: no-repeat;\n" + + "\t\tbackground-position: top left;\n" + + "\t\tborder-width: 1px;\n" + + "\t\tborder-style: dashed;\n" + + "\t\tborder-color: #D0D0D0;\n" + + "\t\tpadding-left: 20px;\n" + + "\t}\n" + + "}\n"; + + //Finally associate in the image locations based off the module url. + var modurl = dojo.moduleUrl(dojox._scopeName, "editor/plugins/resources").toString(); + if(!(modurl.match(/^https?:\/\//i)) && + !(modurl.match(/^file:\/\//i))){ + // We have to root it to the page location on webkit for some nutball reason. + // Probably has to do with how iframe was loaded. + var bUrl; + if(modurl.charAt(0) === "/"){ + //Absolute path on the server, so lets handle... + var proto = dojo.doc.location.protocol; + var hostn = dojo.doc.location.host; + bUrl = proto + "//" + hostn; + }else{ + bUrl = this._calcBaseUrl(dojo.global.location.href); + } + if(bUrl[bUrl.length - 1] !== "/" && modurl.charAt(0) !== "/"){ + bUrl += "/"; + } + modurl = bUrl + modurl; + } + return style.replace(/\{MODURL\}/gi, modurl); + }, + + _applyStyles: function(){ + // summary: + // Function to apply a style to inserted anchor tags so that + // they are obviously anchors. + if(!this._styled){ + try{ + //Attempt to inject our specialized style rules for doing this. + this._styled = true; + var doc = this.editor.document; + var style = this.getAnchorStyle(); + if(!dojo.isIE){ + var sNode = doc.createElement("style"); + sNode.appendChild(doc.createTextNode(style)); + doc.getElementsByTagName("head")[0].appendChild(sNode); + }else{ + var ss = doc.createStyleSheet(""); + ss.cssText = style; + } + }catch(e){ /* Squelch */ } + } + }, + + _calcBaseUrl: function(fullUrl) { + // summary: + // Internal function used to figure out the full root url (no relatives) + // for loading images in the styles in the iframe. + // fullUrl: String + // The full url to tear down to the base. + // tags: + // private + var baseUrl = null; + if (fullUrl !== null) { + // Check to see if we need to strip off any query parameters from the Url. + var index = fullUrl.indexOf("?"); + if (index != -1) { + fullUrl = fullUrl.substring(0,index); + } + + // Now we need to trim if necessary. If it ends in /, then we don't + // have a filename to trim off so we can return. + index = fullUrl.lastIndexOf("/"); + if (index > 0 && index < fullUrl.length) { + baseUrl = fullUrl.substring(0,index); + }else{ + baseUrl = fullUrl; + } + } + return baseUrl; //String + }, + + _checkValues: function(args){ + // summary: + // Function to check the values in args and 'fix' them up as needed. + // args: Object + // Content being set. + // tags: + // protected + if(args){ + if(args.anchorInput){ + args.anchorInput = args.anchorInput.replace(/"/g, """); + } + if(!args.textInput){ + // WebKit doesn't work with double-click select unless there's + // a space in the anchor text, so put a in the case of + // empty desc. + args.textInput = " "; + } + } + return args; + }, + + setValue: function(args){ + // summary: + // Callback from the dialog when user presses "set" button. + // tags: + // private + this._onCloseDialog(); + if(!this.editor.window.getSelection){ + // IE check without using user agent string. + var sel = dijit.range.getSelection(this.editor.window); + var range = sel.getRangeAt(0); + var a = range.endContainer; + if(a.nodeType === 3){ + // Text node, may be the link contents, so check parent. + // This plugin doesn't really support nested HTML elements + // in the link, it assumes all link content is text. + a = a.parentNode; + } + if(a && (a.nodeName && a.nodeName.toLowerCase() !== "a")){ + // Stll nothing, one last thing to try on IE, as it might be 'img' + // and thus considered a control. + a = dojo.withGlobal(this.editor.window, + "getSelectedElement", dijit._editor.selection, ["a"]); + } + if(a && (a.nodeName && a.nodeName.toLowerCase() === "a")){ + // Okay, we do have a match. IE, for some reason, sometimes pastes before + // instead of removing the targetted paste-over element, so we unlink the + // old one first. If we do not the tag remains, but it has no content, + // so isn't readily visible (but is wrong for the action). + if(this.editor.queryCommandEnabled("unlink")){ + // Select all the link childent, then unlink. The following insert will + // then replace the selected text. + dojo.withGlobal(this.editor.window, + "selectElementChildren", dijit._editor.selection, [a]); + this.editor.execCommand("unlink"); + } + } + } + // make sure values are properly escaped, etc. + args = this._checkValues(args); + this.editor.execCommand('inserthtml', + dojo.string.substitute(this.htmlTemplate, args)); + }, + + _onCloseDialog: function(){ + // summary: + // Handler for close event on the dialog + this.editor.focus(); + }, + + _getCurrentValues: function(a){ + // summary: + // Over-ride for getting the values to set in the dropdown. + // a: + // The anchor/link to process for data for the dropdown. + // tags: + // protected + var anchor, text; + if(a && a.tagName.toLowerCase() === "a" && dojo.attr(a, "name")){ + anchor = dojo.attr(a, "name"); + text = a.textContent || a.innerText; + dojo.withGlobal(this.editor.window, "selectElement", dijit._editor.selection, [a, true]); + }else{ + text = dojo.withGlobal(this.editor.window, dijit._editor.selection.getSelectedText); + } + return {anchorInput: anchor || '', textInput: text || ''}; //Object; + }, + + _onOpenDialog: function(){ + // summary: + // Handler for when the dialog is opened. + // If the caret is currently in a URL then populate the URL's info into the dialog. + var a; + if(!this.editor.window.getSelection){ + // IE is difficult to select the element in, using the range unified + // API seems to work reasonably well. + var sel = dijit.range.getSelection(this.editor.window); + var range = sel.getRangeAt(0); + a = range.endContainer; + if(a.nodeType === 3){ + // Text node, may be the link contents, so check parent. + // This plugin doesn't really support nested HTML elements + // in the link, it assumes all link content is text. + a = a.parentNode; + } + if(a && (a.nodeName && a.nodeName.toLowerCase() !== "a")){ + // Stll nothing, one last thing to try on IE, as it might be 'img' + // and thus considered a control. + a = dojo.withGlobal(this.editor.window, + "getSelectedElement", dijit._editor.selection, ["a"]); + } + }else{ + a = dojo.withGlobal(this.editor.window, + "getAncestorElement", dijit._editor.selection, ["a"]); + } + this.dropDown.reset(); + this._setButton.set("disabled", true); + this.dropDown.set("value", this._getCurrentValues(a)); + }, + + _onDblClick: function(e){ + // summary: + // Function to define a behavior on double clicks on the element + // type this dialog edits to select it and pop up the editor + // dialog. + // e: Object + // The double-click event. + // tags: + // protected. + if(e && e.target){ + var t = e.target; + var tg = t.tagName? t.tagName.toLowerCase() : ""; + if(tg === "a" && dojo.attr(t, "name")){ + this.editor.onDisplayChanged(); + dojo.withGlobal(this.editor.window, + "selectElement", + dijit._editor.selection, [t]); + setTimeout(dojo.hitch(this, function(){ + // Focus shift outside the event handler. + // IE doesn't like focus changes in event handles. + this.button.set("disabled", false); + this.button.openDropDown(); + if(this.button.dropDown.focus){ + this.button.dropDown.focus(); + } + }), 10); + } + } + }, + + _preDomFilter: function(node){ + // summary: + // A filter to identify the 'a' tags and if they're anchors, + // apply the right style to them. + // node: + // The node to search from. + // tags: + // private + var ed = this.editor; + dojo.withGlobal(ed.window, function(){ + dojo.query("a", ed.editNode).forEach(function(a){ + if(dojo.attr(a, "name") && !dojo.attr(a, "href")){ + if(!dojo.hasClass(a,"dijitEditorPluginInsertAnchorStyle")){ + dojo.addClass(a, "dijitEditorPluginInsertAnchorStyle"); + } + } + }); + }); + }, + + _postDomFilter: function(node){ + // summary: + // A filter to identify the 'a' tags and if they're anchors, + // remove the class style that shows up in the editor from + // them. + // node: + // The node to search from. + // tags: + // private + var ed = this.editor; + dojo.withGlobal(ed.window, function(){ + dojo.query("a", node).forEach(function(a){ + if(dojo.attr(a, "name") && !dojo.attr(a, "href")){ + if(dojo.hasClass(a,"dijitEditorPluginInsertAnchorStyle")){ + dojo.removeClass(a, "dijitEditorPluginInsertAnchorStyle"); + } + } + }); + }); + return node; + } +}); + + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name; + if(name) { name = name.toLowerCase(); } + if(name === "insertanchor"){ + o.plugin = new dojox.editor.plugins.InsertAnchor(); + } +}); + +return dojox.editor.plugins.InsertAnchor; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/InsertEntity.js new file mode 100755 index 0000000..0b9cb8c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/InsertEntity.js @@ -0,0 +1,106 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/TooltipDialog", + "dijit/_editor/_Plugin", + "dijit/form/DropDownButton", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojox/html/entities", + "dojox/editor/plugins/EntityPalette", + "dojo/i18n!dojox/editor/plugins/nls/InsertEntity" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.InsertEntity",dijit._editor._Plugin,{ + // summary: + // This plugin allows the user to select from standard Symbols (HTML Entities) + // to insert at the current cursor position. It binds to the key pattern: + // ctrl-shift-s for opening the insert symbol dropdown. + // + // description: + // The commands provided by this plugin are: + // * insertEntity - inserts the selected HTML entity character + + // iconClassPrefix: [const] String + // The CSS class name for the button node is formed from `iconClassPrefix` and `command` + iconClassPrefix: "dijitAdditionalEditorIcon", + + _initButton: function(){ + // summary: + // Over-ride for creation of the save button. + this.dropDown = new dojox.editor.plugins.EntityPalette({showCode: this.showCode, showEntityName: this.showEntityName}); + this.connect(this.dropDown, "onChange", function(entity){ + this.button.closeDropDown(); + this.editor.focus(); + this.editor.execCommand("inserthtml",entity); + }); + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "InsertEntity"); + this.button = new dijit.form.DropDownButton({ + label: strings["insertEntity"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "InsertEntity", + tabIndex: "-1", + dropDown: this.dropDown + }); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + + this.editor.addKeyHandler("s", true, true, dojo.hitch(this, function(){ + this.button.openDropDown(); + this.dropDown.focus(); + })); + + editor.contentPreFilters.push(this._preFilterEntities); + editor.contentPostFilters.push(this._postFilterEntities); + }, + + _preFilterEntities: function(s/*String content passed in*/){ + // summary: + // A function to filter out entity characters into their UTF-8 character form + // displayed in the editor. It gets registered with the preFilters + // of the editor. + // tags: + // private. + return dojox.html.entities.decode(s, dojox.html.entities.latin); + }, + + _postFilterEntities: function(s/*String content passed in*/){ + // summary: + // A function to filter out entity characters into encoded form so they + // are properly displayed in the editor. It gets registered with the + // postFilters of the editor. + // tags: + // private. + return dojox.html.entities.encode(s, dojox.html.entities.latin); + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name? o.args.name.toLowerCase() : ""; + if(name === "insertentity"){ + o.plugin = new dojox.editor.plugins.InsertEntity({ + showCode: ("showCode" in o.args)?o.args.showCode:false, + showEntityName: ("showEntityName" in o.args)?o.args.showEntityName:false + }); + } +}); + +return dojox.editor.plugins.InsertEntity; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/LocalImage.js new file mode 100644 index 0000000..05a7651 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/LocalImage.js @@ -0,0 +1,351 @@ +define([ + "dojo",//FIXME + "dijit",//FIXME + "dijit/registry", + "dijit/_base/popup", + "dijit/_editor/_Plugin", + "dijit/_editor/plugins/LinkDialog", + "dijit/TooltipDialog", + "dijit/form/_TextBoxMixin", + "dijit/form/Button", + "dijit/form/ValidationTextBox", + "dijit/form/DropDownButton", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/sniff", + "dojox/form/FileUploader", //FIXME: deprecated. Use Uploader instead + "dojo/i18n!dojox/editor/plugins/nls/LocalImage" +], function(dojo, dijit, registry, popup, _Plugin, LinkDialog, TooltipDialog, + _TextBoxMixin, Button, ValidationTextBox, DropDownButton, + connect, declare, has, FileUploader, messages) { + +var LocalImage = dojo.declare("dojox.editor.plugins.LocalImage", LinkDialog.ImgLinkDialog, { + // summary: + // This plugin provides an enhanced image link dialog that + // not only insert the online images, but upload the local image files onto + // to server then insert them as well. + // Dependencies: + // This plugin depends on dojox.form.FileUploader to upload the images on the local driver. + // Do the regression test whenever FileUploader is upgraded. + + // uploadable [public] Boolean + // Indicate whether the user can upload a local image file onto the server. + // If it is set to true, the Browse button will be available. + uploadable: false, + + // uploadUrl [public] String + // The url targeted for uploading. Both absolute and relative URLs are OK. + uploadUrl: "", + + // baseImageUrl [public] String + // The prefix of the image url on the server. + // For example, an image is uploaded and stored at the following location + // http://www.myhost.com/images/uploads/test.jpg. + // When the image is uploaded, the server returns "uploads/test.jpg" as the + // relative path. So the baseImageUrl should be set to "http://www.myhost.com/images/" + // so that the client can retrieve the image from the server. + // If the image file is located on the same domain as that of the current web page, + // baseImageUrl can be a relative path. For example: + // baseImageUrl = images/ + // and the server returns uploads/test.jpg + // The complete URL of the image file is images/upload/test.jpg + baseImageUrl: "", + + // fileMask [public] String + // Specify the types of images that are allowed to be uploaded. + // Note that the type checking on server is also very important! + fileMask: "*.jpg;*.jpeg;*.gif;*.png;*.bmp", + + // urlRegExp [protected] String + // Used to validate if the input is a valid image URL. + urlRegExp: "", + + // htmlFieldName [private] htmlFieldName + htmlFieldName:"uploadedfile", + + // _isLocalFile [private] Boolean + // Indicate if a local file is to be uploaded to the server + // If false, the text of _urlInput field is regarded as the + // URL of the online image + _isLocalFile: false, + + // _messages [private] Array + // Contains i18n strings. + _messages: "", + + // _cssPrefix [private] String + // The prefix of the CSS style + _cssPrefix: "dijitEditorEilDialog", + + // _closable [private] Boolean + // Indicate if the tooltip dialog can be closed. Used to workaround Safari 5 bug + // where the file dialog doesn't pop up in modal until after the first click. + _closable: true, + + // linkDialogTemplate [protected] String + // Over-ride for template since this is an enhanced image dialog. + linkDialogTemplate: [ + "
                              ", //
                              breaks the dialog in IE6 + "
                              ${prePopuTextUrl}${prePopuTextBrowse}
                              ", + "
                              ", + "", + "
                              ", + "", + "", + "
                              ${browse}
                              ", + "
                              ", + "", + "
                              ", + "", + "
                              ", + "", + "
                              ", + "", + "
                              " + ].join(""), + + _initButton: function(){ + // summary: + // Override _Plugin._initButton() to initialize DropDownButton and TooltipDialog. + // tags: + // protected + var _this = this; + this._messages = messages; + this.tag = "img"; + var dropDown = (this.dropDown = new TooltipDialog({ + title: messages[this.command + "Title"], + onOpen: function(){ + _this._initialFileUploader(); + _this._onOpenDialog(); + TooltipDialog.prototype.onOpen.apply(this, arguments); + setTimeout(function(){ + // Auto-select the text if it is not empty + _TextBoxMixin.selectInputText(_this._urlInput.textbox); + _this._urlInput.isLoadComplete = true; + }, 0); + }, + onClose: function(){ + dojo.disconnect(_this.blurHandler); + _this.blurHandler = null; + this.onHide(); + }, + onCancel: function(){ + setTimeout(dojo.hitch(_this, "_onCloseDialog"),0); + } + })); + + var label = this.getLabel(this.command), + className = this.iconClassPrefix + " " + this.iconClassPrefix + this.command.charAt(0).toUpperCase() + this.command.substr(1), + props = dojo.mixin({ + label: label, + showLabel: false, + iconClass: className, + dropDown: this.dropDown, + tabIndex: "-1" + }, this.params || {}); + + if(!has('ie')){ + // Workaround for Non-IE problem: + // Safari 5: After the select-file dialog opens, the first time the user clicks anywhere (even on that dialog) + // it's treated like a plain click on the page, and the tooltip dialog closes + // FF & Chrome: the select-file dialog does not block the execution of JS + props.closeDropDown = function(/*Boolean*/ focus){ + if(_this._closable){ + if(this._opened){ + popup.close(this.dropDown); + if(focus){ this.focus(); } + this._opened = false; + this.state = ""; + } + } + setTimeout(function(){ _this._closable = true; }, 10); + }; + } + + this.button = new DropDownButton(props); + + // Generate the RegExp of the ValidationTextBox from fileMask + // *.jpg;*.png => /.*\.jpg|.*\.JPG|.*\.png|.*\.PNG/ + var masks = this.fileMask.split(";"), + temp = ""; + dojo.forEach(masks, function(m){ + m = m.replace(/\./, "\\.").replace(/\*/g, ".*"); + temp += "|" + m + "|" + m.toUpperCase(); + }); + messages.urlRegExp = this.urlRegExp = temp.substring(1); + + if(!this.uploadable){ + messages.prePopuTextBrowse = "."; + } + + messages.id = registry.getUniqueId(this.editor.id); + messages.uploadable = this.uploadable ? "inline" : "none"; + this._uniqueId = messages.id; + this._setContent("
                              " + dropDown.title + "
                              " + + dojo.string.substitute(this.linkDialogTemplate, messages)); + dropDown.startup(); + + var urlInput = (this._urlInput = registry.byId(this._uniqueId + "_urlInput")); + this._textInput = registry.byId(this._uniqueId + "_textInput"); + this._setButton = registry.byId(this._uniqueId + "_setButton"); + + if(urlInput){ + var pt = ValidationTextBox.prototype; + urlInput = dojo.mixin(urlInput, { + // Indicate if the widget is ready to validate the input text + isLoadComplete: false, + isValid: function(isFocused){ + if(this.isLoadComplete){ + return pt.isValid.apply(this, arguments); + }else{ + return this.get("value").length > 0; + } + }, + reset: function(){ + this.isLoadComplete = false; + pt.reset.apply(this, arguments); + } + }); + + this.connect(urlInput, "onKeyDown", "_cancelFileUpload"); + this.connect(urlInput, "onChange", "_checkAndFixInput"); + } + if(this._setButton){ + this.connect(this._setButton, "onClick", "_checkAndSetValue"); + } + this._connectTagEvents(); + }, + + _initialFileUploader: function(){ + // summary: + // Initialize the FileUploader and connect up its events + // tags: + // private + var fup = null, + _this = this, + widgetId = _this._uniqueId, + fUpId = widgetId + "_browse", + urlInput = _this._urlInput; + + if(_this.uploadable && !_this._fileUploader){ + fup = _this._fileUploader = new FileUploader({ + force: "html", // Noticed that SWF may cause browsers to crash sometimes + uploadUrl: _this.uploadUrl, + htmlFieldName: _this.htmlFieldName, + uploadOnChange: false, + selectMultipleFiles: false, + showProgress: true + }, fUpId); + + // TooltipDialog will call reset on all the widgets contained within it. + // Have FileUploader be responsive to this call. + fup.reset = function(){ + _this._isLocalFile = false; + fup._resetHTML(); + }; + + _this.connect(fup, "onClick", function(){ + urlInput.validate(false); + if(!has('ie')){ + // Firefox, Chrome and Safari have a strange behavior: + // When the File Upload dialog is open, the browse div (FileUploader) will lose its focus + // and triggers onBlur event. This event will cause the whole tooltip dialog + // to be closed when the File Upload dialog is open. The popup dialog should hang up + // the js execution rather than triggering an event. IE does not have such a problem. + _this._closable = false; + } + }); + + + _this.connect(fup, "onChange", function(data){ + _this._isLocalFile = true; + urlInput.set("value", data[0].name); //Single selection + urlInput.focus(); + }); + + _this.connect(fup, "onComplete", function(data){ + var urlPrefix = _this.baseImageUrl; + urlPrefix = urlPrefix && urlPrefix.charAt(urlPrefix.length - 1) == "/" ? urlPrefix : urlPrefix + "/"; + urlInput.set("value", urlPrefix + data[0].file); //Single selection + _this._isLocalFile = false; + _this._setDialogStatus(true); + _this.setValue(_this.dropDown.get("value")); + }); + + _this.connect(fup, "onError", function(evtObject){ + // summary: + // Fires on errors + console.log("Error occurred when uploading image file!"); + _this._setDialogStatus(true); + }); + } + }, + + _checkAndFixInput: function(){ + // summray: + // Over-ride the original method + this._setButton.set("disabled", !this._isValid()); + }, + + _isValid: function(){ + // summray: + // Invalid cases: URL is not ended with the suffix listed + return this._urlInput.isValid(); + }, + + _cancelFileUpload: function(){ + this._fileUploader.reset(); + this._isLocalFile = false; + }, + + _checkAndSetValue: function(){ + // summray: + // Determine if a local file is to be uploaded. + // If a local file is to be uploaded, do not close the dialog + // until the file uploading is finished. Else, insert the image directly into the editor. + // tags: + // private + if(this._fileUploader && this._isLocalFile){ + this._setDialogStatus(false); + this._fileUploader.upload(); + }else{ + this.setValue(this.dropDown.get("value")); + } + }, + + _setDialogStatus: function(/*Boolean*/ value){ + this._urlInput.set("disabled", !value); + this._textInput.set("disabled", !value); + this._setButton.set("disabled", !value); + }, + + destroy: function(){ + // summary: + // Cleanup of the plugin. + this.inherited(arguments); + if(this._fileUploader){ + this._fileUploader.destroy(); + delete this._fileUploader; + } + } +}); + +// Register this plugin. +_Plugin.registry["LocalImage"] = function(args){ + return new LocalImage({ + command: "insertImage", + uploadable: ("uploadable" in args) ? args.uploadable : false, + uploadUrl: ("uploadable" in args && "uploadUrl" in args) ? args.uploadUrl : "", + htmlFieldName: ("uploadable" in args && "htmlFieldName" in args) ? args.htmlFieldName : "uploadedfile", + baseImageUrl: ("uploadable" in args && "baseImageUrl" in args) ? args.baseImageUrl : "", + fileMask: ("fileMask" in args) ? args.fileMask : "*.jpg;*.jpeg;*.gif;*.png;*.bmp" + }); +}; + +return LocalImage; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/NormalizeIndentOutdent.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/NormalizeIndentOutdent.js new file mode 100755 index 0000000..62a8baa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/NormalizeIndentOutdent.js @@ -0,0 +1,881 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/range", + "dijit/_editor/selection", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.NormalizeIndentOutdent",dijit._editor._Plugin,{ + // summary: + // This plugin provides improved indent and outdent handling to + // the editor. It tries to generate valid HTML, as well as be + // consistent about how it indents and outdents lists and blocks/elements. + + // indentBy: [public] number + // The amount to indent by. Valid values are 1+. This is combined with + // the indentUnits parameter to determine how much to indent or outdent + // by for regular text. It does not affect lists. + indentBy: 40, + + // indentUnits: [public] String + // The units to apply to the indent amount. Usually 'px', but can also + // be em. + indentUnits: "px", + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + + // Register out indent handler via the builtin over-ride mechanism. + editor._indentImpl = dojo.hitch(this, this._indentImpl); + editor._outdentImpl = dojo.hitch(this, this._outdentImpl); + + // Take over the query command enabled function, we want to prevent + // indent of first items in a list, etc. + if(!editor._indentoutdent_queryCommandEnabled){ + editor._indentoutdent_queryCommandEnabled = editor.queryCommandEnabled; + } + editor.queryCommandEnabled = dojo.hitch(this, this._queryCommandEnabled); + + // We need the custom undo code since we manipulate the dom + // outside of the browser natives and only customUndo really handles + // that. It will incur a performance hit, but should hopefully be + // relatively small. + editor.customUndo = true; + }, + + _queryCommandEnabled: function(command){ + // summary: + // An over-ride for the editor's query command enabled, + // so that we can prevent indents, etc, on bad elements + // or positions (like first element in a list). + // command: + // The command passed in to check enablement. + // tags: + // private + var c = command.toLowerCase(); + var ed, sel, range, node, tag, prevNode; + var style = "marginLeft"; + if(!this._isLtr()){ + style = "marginRight"; + } + if(c === "indent"){ + ed = this.editor; + sel = dijit.range.getSelection(ed.window); + if(sel && sel.rangeCount > 0){ + range = sel.getRangeAt(0); + node = range.startContainer; + + // Check for li nodes first, we handle them a certain way. + while(node && node !== ed.document && node !== ed.editNode){ + tag = this._getTagName(node); + if(tag === "li"){ + + prevNode = node.previousSibling; + while(prevNode && prevNode.nodeType !== 1){ + prevNode = prevNode.previousSibling; + } + if(prevNode && this._getTagName(prevNode) === "li"){ + return true; + }else{ + // First item, disallow + return false; + } + }else if(this._isIndentableElement(tag)){ + return true; + } + node = node.parentNode; + } + if(this._isRootInline(range.startContainer)){ + return true; + } + } + }else if(c === "outdent"){ + ed = this.editor; + sel = dijit.range.getSelection(ed.window); + if(sel && sel.rangeCount > 0){ + range = sel.getRangeAt(0); + node = range.startContainer; + // Check for li nodes first, we handle them a certain way. + while(node && node !== ed.document && node !== ed.editNode){ + tag = this._getTagName(node); + if(tag === "li"){ + // Standard list, we can ask the browser. + return this.editor._indentoutdent_queryCommandEnabled(command); + }else if(this._isIndentableElement(tag)){ + // Block, we need to handle the indent check. + var cIndent = node.style?node.style[style]:""; + if(cIndent){ + cIndent = this._convertIndent(cIndent); + if(cIndent/this.indentBy >= 1){ + return true; + } + } + return false; + } + node = node.parentNode; + } + if(this._isRootInline(range.startContainer)){ + return false; + } + } + }else{ + return this.editor._indentoutdent_queryCommandEnabled(command); + } + return false; + }, + + _indentImpl: function(/*String*/ html) { + // summary: + // Improved implementation of indent, generates correct indent for + // ul/ol + var ed = this.editor; + + var sel = dijit.range.getSelection(ed.window); + if(sel && sel.rangeCount > 0){ + var range = sel.getRangeAt(0); + var node = range.startContainer; + var tag, start, end, div; + + + if(range.startContainer === range.endContainer){ + // No selection, just cursor point, we need to see if we're + // in an indentable block, or similar. + if(this._isRootInline(range.startContainer)){ + // Text at the 'root' of the document, + // we'll try to indent it and all inline selements around it + // as they are visually a single line. + + // First, we need to find the toplevel inline element that is rooted + // to the document 'editNode' + start = range.startContainer; + while(start && start.parentNode !== ed.editNode){ + start = start.parentNode; + } + + // Now we need to walk up its siblings and look for the first one in the rooting + // that isn't inline or text, as we want to grab all of that for indent. + while(start && start.previousSibling && ( + this._isTextElement(start) || + (start.nodeType === 1 && this._isInlineFormat(this._getTagName(start)) + ))){ + start = start.previousSibling; + } + if(start && start.nodeType === 1 && !this._isInlineFormat(this._getTagName(start))){ + // Adjust slightly, we're one node too far back in this case. + start = start.nextSibling; + } + + // Okay, we have a configured start, lets grab everything following it that's + // inline and make it an indentable block! + if(start){ + div = ed.document.createElement("div"); + dojo.place(div, start, "after"); + div.appendChild(start); + end = div.nextSibling; + while(end && ( + this._isTextElement(end) || + (end.nodeType === 1 && + this._isInlineFormat(this._getTagName(end))) + )){ + // Add it. + div.appendChild(end); + end = div.nextSibling; + } + this._indentElement(div); + dojo.withGlobal(ed.window, + "selectElementChildren", dijit._editor.selection, [div]); + dojo.withGlobal(ed.window, + "collapse", dijit._editor.selection, [true]); + } + }else{ + while(node && node !== ed.document && node !== ed.editNode){ + tag = this._getTagName(node); + if(tag === "li"){ + this._indentList(node); + return; + }else if(this._isIndentableElement(tag)){ + this._indentElement(node); + return; + } + node = node.parentNode; + } + } + }else{ + var curNode; + // multi-node select. We need to scan over them. + // Find the two containing nodes at start and end. + // then move the end one node past. Then ... lets see + // what we can indent! + start = range.startContainer; + end = range.endContainer; + // Find the non-text nodes. + + while(start && this._isTextElement(start) && start.parentNode !== ed.editNode){ + start = start.parentNode; + } + while(end && this._isTextElement(end) && end.parentNode !== ed.editNode){ + end = end.parentNode; + } + if(end === ed.editNode || end === ed.document.body){ + // Okay, selection end is somewhere after start, we need to find the last node + // that is safely in the range. + curNode = start; + while(curNode.nextSibling && + dojo.withGlobal(ed.window, "inSelection", dijit._editor.selection, [curNode])){ + curNode = curNode.nextSibling; + } + end = curNode; + if(end === ed.editNode || end === ed.document.body){ + // Unable to determine real selection end, so just make it + // a single node indent of start + all following inline styles, if + // present, then just exit. + tag = this._getTagName(start); + if(tag === "li"){ + this._indentList(start); + }else if(this._isIndentableElement(tag)){ + this._indentElement(start); + }else if(this._isTextElement(start) || + this._isInlineFormat(tag)){ + // inline element or textnode, So we want to indent it somehow + div = ed.document.createElement("div"); + dojo.place(div, start, "after"); + + // Find and move all inline tags following the one we inserted also into the + // div so we don't split up content funny. + var next = start; + while(next && ( + this._isTextElement(next) || + (next.nodeType === 1 && + this._isInlineFormat(this._getTagName(next))))){ + div.appendChild(next); + next = div.nextSibling; + } + this._indentElement(div); + } + return; + } + } + + // Has a definite end somewhere, so lets try to indent up to it. + // requires looking at the selections and in some cases, moving nodes + // into indentable blocks. + end = end.nextSibling; + curNode = start; + while(curNode && curNode !== end){ + if(curNode.nodeType === 1){ + tag = this._getTagName(curNode); + if(dojo.isIE){ + // IE sometimes inserts blank P tags, which we want to skip + // as they end up indented, which messes up layout. + if(tag === "p" && this._isEmpty(curNode)){ + curNode = curNode.nextSibling; + continue; + } + } + if(tag === "li"){ + if(div){ + if(this._isEmpty(div)){ + div.parentNode.removeChild(div); + }else{ + this._indentElement(div); + } + div = null; + } + this._indentList(curNode); + }else if(!this._isInlineFormat(tag) && this._isIndentableElement(tag)){ + if(div){ + if(this._isEmpty(div)){ + div.parentNode.removeChild(div); + }else{ + this._indentElement(div); + } + div = null; + } + curNode = this._indentElement(curNode); + }else if(this._isInlineFormat(tag)){ + // inline tag. + if(!div){ + div = ed.document.createElement("div"); + dojo.place(div, curNode, "after"); + div.appendChild(curNode); + curNode = div; + }else{ + div.appendChild(curNode); + curNode = div; + } + } + }else if(this._isTextElement(curNode)){ + if(!div){ + div = ed.document.createElement("div"); + dojo.place(div, curNode, "after"); + div.appendChild(curNode); + curNode = div; + }else{ + div.appendChild(curNode); + curNode = div; + } + } + curNode = curNode.nextSibling; + } + // Okay, indent everything we merged if we haven't yet.. + if(div){ + if(this._isEmpty(div)){ + div.parentNode.removeChild(div); + }else{ + this._indentElement(div); + } + div = null; + } + } + } + }, + + _indentElement: function(node){ + // summary: + // Function to indent a block type tag. + // node: + // The node who's content to indent. + // tags: + // private + var style = "marginLeft"; + if(!this._isLtr()){ + style = "marginRight"; + } + var tag = this._getTagName(node); + if(tag === "ul" || tag === "ol"){ + // Lists indent funny, so lets wrap them in a div + // and indent the div instead. + var div = this.editor.document.createElement("div"); + dojo.place(div, node, "after"); + div.appendChild(node); + node = div; + } + var cIndent = node.style?node.style[style]:""; + if(cIndent){ + cIndent = this._convertIndent(cIndent); + cIndent = (parseInt(cIndent, 10) + this.indentBy) + this.indentUnits; + }else{ + cIndent = this.indentBy + this.indentUnits; + } + dojo.style(node, style, cIndent); + return node; //Return the node that was indented. + }, + + _outdentElement: function(node){ + // summary: + // Function to outdent a block type tag. + // node: + // The node who's content to outdent. + // tags: + // private + var style = "marginLeft"; + if(!this._isLtr()){ + style = "marginRight"; + } + var cIndent = node.style?node.style[style]:""; + if(cIndent){ + cIndent = this._convertIndent(cIndent); + if(cIndent - this.indentBy > 0){ + cIndent = (parseInt(cIndent, 10) - this.indentBy) + this.indentUnits; + }else{ + cIndent = ""; + } + dojo.style(node, style, cIndent); + } + }, + + _outdentImpl: function(/*String*/ html) { + // summary: + // Improved implementation of outdent, generates correct indent for + // ul/ol and other elements. + // tags: + // private + var ed = this.editor; + var sel = dijit.range.getSelection(ed.window); + if(sel && sel.rangeCount > 0){ + var range = sel.getRangeAt(0); + var node = range.startContainer; + var tag; + + if(range.startContainer === range.endContainer){ + // Check for li nodes first, we handle them a certain way. + while(node && node !== ed.document && node !== ed.editNode){ + tag = this._getTagName(node); + if(tag === "li"){ + return this._outdentList(node); + }else if(this._isIndentableElement(tag)){ + return this._outdentElement(node); + } + node = node.parentNode; + } + ed.document.execCommand("outdent", false, html); + }else{ + // multi-node select. We need to scan over them. + // Find the two containing nodes at start and end. + // then move the end one node past. Then ... lets see + // what we can outdent! + var start = range.startContainer; + var end = range.endContainer; + // Find the non-text nodes. + while(start && start.nodeType === 3){ + start = start.parentNode; + } + while(end && end.nodeType === 3){ + end = end.parentNode; + } + end = end.nextSibling; + var curNode = start; + while(curNode && curNode !== end){ + if(curNode.nodeType === 1){ + tag = this._getTagName(curNode); + if(tag === "li"){ + this._outdentList(curNode); + }else if(this._isIndentableElement(tag)){ + this._outdentElement(curNode); + } + + } + curNode = curNode.nextSibling; + } + } + } + return null; + }, + + + _indentList: function(listItem){ + // summary: + // Internal function to handle indenting a list element. + // listItem: + // The list item to indent. + // tags: + // private + var ed = this.editor; + var newList, li; + var listContainer = listItem.parentNode; + var prevTag = listItem.previousSibling; + + // Ignore text, we want elements. + while(prevTag && prevTag.nodeType !== 1){ + prevTag = prevTag.previousSibling; + } + var type = null; + var tg = this._getTagName(listContainer); + + // Try to determine what kind of list item is here to indent. + if(tg === "ol"){ + type = "ol"; + }else if(tg === "ul"){ + type = "ul"; + } + + // Only indent list items actually in a list. + // Bail out if the list is malformed somehow. + if(type){ + // There is a previous node in the list, so we want to append a new list + // element after it that contains a new list of the content to indent it. + if(prevTag && prevTag.tagName.toLowerCase() == "li"){ + // Lets see if we can merge this into another (Eg, + // does the sibling li contain an embedded list already of + // the same type? if so, we move into that one. + var embList; + if(prevTag.childNodes){ + var i; + for(i = 0; i < prevTag.childNodes.length; i++){ + var n = prevTag.childNodes[i]; + if(n.nodeType === 3){ + if(dojo.trim(n.nodeValue)){ + if(embList){ + // Non-empty text after list, exit, can't embed. + break; + } + } + }else if(n.nodeType === 1 && !embList){ + // See if this is a list container. + if(type === n.tagName.toLowerCase()){ + embList = n; + } + }else{ + // Other node present, break, can't embed. + break; + } + } + } + if(embList){ + // We found a list to merge to, so merge. + embList.appendChild(listItem); + }else{ + // Nope, wasn't an embedded list container, + // So lets just create a new one. + newList = ed.document.createElement(type); + dojo.style(newList, { + paddingTop: "0px", + paddingBottom: "0px" + }); + li = ed.document.createElement("li"); + dojo.style(li, { + listStyleImage: "none", + listStyleType: "none" + }); + prevTag.appendChild(newList); + newList.appendChild(listItem); + } + + // Move cursor. + dojo.withGlobal(ed.window, + "selectElementChildren", dijit._editor.selection, [listItem]); + dojo.withGlobal(ed.window, + "collapse", dijit._editor.selection, [true]); + } + } + }, + + _outdentList: function(listItem){ + // summary: + // Internal function to handle outdenting a list element. + // listItem: + // The list item to outdent. + // tags: + // private + var ed = this.editor; + var list = listItem.parentNode; + var type = null; + var tg = list.tagName ? list.tagName.toLowerCase() : ""; + var li; + + // Try to determine what kind of list contains the item. + if(tg === "ol"){ + type = "ol"; + }else if(tg === "ul"){ + type = "ul"; + } + + // Check to see if it is a nested list, as outdenting is handled differently. + var listParent = list.parentNode; + var lpTg = this._getTagName(listParent); + + // We're in a list, so we need to outdent this specially. + // Check for welformed and malformed lists (
                                  U/ul> type stuff). + if(lpTg === "li" || lpTg === "ol" || lpTg === "ul"){ + if(lpTg === "ol" || lpTg === "ul"){ + // Okay, we need to fix this up, this is invalid html, + // So try to combine this into a previous element before + // de do a shuffle of the nodes, to build an HTML compliant + // list. + var prevListLi = list.previousSibling; + while(prevListLi && (prevListLi.nodeType !== 1 || + (prevListLi.nodeType === 1 && + this._getTagName(prevListLi) !== "li")) + ){ + prevListLi = prevListLi.previousSibling; + } + if(prevListLi){ + // Move this list up into the previous li + // to fix malformation. + prevListLi.appendChild(list); + listParent = prevListLi; + }else{ + li = listItem; + var firstItem = listItem; + while(li.previousSibling){ + li = li.previousSibling; + if(li.nodeType === 1 && this._getTagName(li) === "li"){ + firstItem = li; + } + } + + if(firstItem !== listItem){ + dojo.place(firstItem, list, "before"); + firstItem.appendChild(list); + listParent = firstItem; + }else{ + // No previous list item in a malformed list + // ... so create one and move into that. + li = ed.document.createElement("li"); + dojo.place(li, list, "before"); + li.appendChild(list); + listParent = li; + } + dojo.style(list, { + paddingTop: "0px", + paddingBottom: "0px" + }); + } + } + + // find the previous node, if any, + // non-text. + var prevLi = listItem.previousSibling; + while(prevLi && prevLi.nodeType !== 1){ + prevLi = prevLi.previousSibling; + } + var nextLi = listItem.nextSibling; + while(nextLi && nextLi.nodeType !== 1){ + nextLi = nextLi.nextSibling; + } + + if(!prevLi){ + // Top item in a nested list, so just move it out + // and then shuffle the remaining indented list into it. + dojo.place(listItem, listParent, "after"); + listItem.appendChild(list); + }else if(!nextLi){ + // Last item in a nested list, shuffle it out after + // the nsted list only. + dojo.place(listItem, listParent, "after"); + }else{ + // Item is in the middle of an embedded list, so we + // have to split it. + + // Move all the items following current list item into + // a list after it. + var newList = ed.document.createElement(type); + dojo.style(newList, { + paddingTop: "0px", + paddingBottom: "0px" + }); + listItem.appendChild(newList); + while(listItem.nextSibling){ + newList.appendChild(listItem.nextSibling); + } + + // Okay, now place the list item after the + // current list parent (li). + dojo.place(listItem, listParent, "after"); + } + + // Clean up any empty lists left behind. + if(list && this._isEmpty(list)){ + list.parentNode.removeChild(list); + } + if(listParent && this._isEmpty(listParent)){ + listParent.parentNode.removeChild(listParent); + } + + // Move our cursor to the list item we moved. + dojo.withGlobal(ed.window, + "selectElementChildren", dijit._editor.selection, [listItem]); + dojo.withGlobal(ed.window, + "collapse", dijit._editor.selection, [true]); + }else{ + // Not in a nested list, so we can just defer to the + // browser and hope it outdents right. + ed.document.execCommand("outdent", false, null); + } + }, + + _isEmpty: function(node){ + // summary: + // Internal function to determine if a node is 'empty' + // Eg, contains only blank text. Used to determine if + // an empty list element should be removed or not. + // node: + // The node to check. + // tags: + // private + if(node.childNodes){ + var empty = true; + var i; + for(i = 0; i < node.childNodes.length; i++){ + var n = node.childNodes[i]; + if(n.nodeType === 1){ + if(this._getTagName(n) === "p"){ + if(!dojo.trim(n.innerHTML)){ + continue; + } + } + empty = false; + break; + }else if(this._isTextElement(n)){ + // Check for empty text. + var nv = dojo.trim(n.nodeValue); + if(nv && nv !==" " && nv !== "\u00A0"){ + empty = false; + break; + } + }else{ + empty = false; + break; + } + } + return empty; + }else{ + return true; + } + }, + + _isIndentableElement: function(tag){ + // summary: + // Internal function to detect what element types + // are indent-controllable by us. + // tag: + // The tag to check + // tags: + // private + switch(tag){ + case "p": + case "div": + case "h1": + case "h2": + case "h3": + case "center": + case "table": + case "ul": + case "ol": + return true; + default: + return false; + } + }, + + _convertIndent: function(indent){ + // summary: + // Function to convert the current indent style to + // the units we're using by some heuristic. + // indent: + // The indent amount to convert. + // tags: + // private + var pxPerEm = 12; + indent = indent + ""; + indent = indent.toLowerCase(); + var curUnit = (indent.indexOf("px") > 0) ? "px" : (indent.indexOf("em") > 0) ? "em" : "px"; + indent = indent.replace(/(px;?|em;?)/gi, ""); + if(curUnit === "px"){ + if(this.indentUnits === "em"){ + indent = Math.ceil(indent/pxPerEm); + } + }else{ + if(this.indentUnits === "px"){ + indent = indent * pxPerEm; + } + } + return indent; + }, + + _isLtr: function(){ + // summary: + // Function to detect if the editor body is in RTL or LTR. + // tags: + // private + var editDoc = this.editor.document.body; + return dojo.withGlobal(this.editor.window, function(){ + var cs = dojo.getComputedStyle(editDoc); + return cs ? cs.direction == "ltr" : true; + }); + }, + + _isInlineFormat: function(tag){ + // summary: + // Function to determine if the current tag is an inline + // element that does formatting, as we don't want to + // break/indent around it, as it can screw up text. + // tag: + // The tag to examine + // tags: + // private + switch(tag){ + case "a": + case "b": + case "strong": + case "s": + case "strike": + case "i": + case "u": + case "em": + case "sup": + case "sub": + case "span": + case "font": + case "big": + case "cite": + case "q": + case "img": + case "small": + return true; + default: + return false; + } + }, + + _getTagName: function(node){ + // summary: + // Internal function to get the tag name of an element + // if any. + // node: + // The node to look at. + // tags: + // private + var tag = ""; + if(node && node.nodeType === 1){ + tag = node.tagName?node.tagName.toLowerCase():""; + } + return tag; + }, + + _isRootInline: function(node){ + // summary: + // This functions tests whether an indicated node is in root as inline + // or rooted inline elements in the page. + // node: + // The node to start at. + // tags: + // private + var ed = this.editor; + if(this._isTextElement(node) && node.parentNode === ed.editNode){ + return true; + }else if(node.nodeType === 1 && this._isInlineFormat(node) && node.parentNode === ed.editNode){ + return true; + }else if(this._isTextElement(node) && this._isInlineFormat(this._getTagName(node.parentNode))){ + node = node.parentNode; + while(node && node !== ed.editNode && this._isInlineFormat(this._getTagName(node))){ + node = node.parentNode; + } + if(node === ed.editNode){ + return true; + } + } + return false; + }, + + _isTextElement: function(node){ + // summary: + // Helper function to check for text nodes. + // node: + // The node to check. + // tags: + // private + if(node && node.nodeType === 3 || node.nodeType === 4){ + return true; + } + return false; + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "normalizeindentoutdent"){ + o.plugin = new dojox.editor.plugins.NormalizeIndentOutdent({ + indentBy: ("indentBy" in o.args) ? + (o.args.indentBy > 0 ? o.args.indentBy : 40) : + 40, + indentUnits: ("indentUnits" in o.args) ? + (o.args.indentUnits.toLowerCase() == "em"? "em" : "px") : + "px" + }); + } +}); + +return dojox.editor.plugins.NormalizeIndentOutdent; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/NormalizeStyle.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/NormalizeStyle.js new file mode 100755 index 0000000..8f1b8c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/NormalizeStyle.js @@ -0,0 +1,558 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/html", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.NormalizeStyle",dijit._editor._Plugin,{ + // summary: + // This plugin provides NormalizeStyle cabability to the editor. It is + // a headless plugin that tries to normalize how content is styled when + // it comes out of th editor ('b' or css). It also auto-converts + // incoming content to the proper one expected by the browser as well so + // that the native styling buttons work. + + // mode [public] String + // A String variable indicating if it should use semantic tags 'b', 'i', etc, or + // CSS styling. The default is semantic. + mode: "semantic", + + // condenseSpans [public] Boolean + // A boolean variable indicating if it should try to condense + // 'span''span''span' styles when in css mode + // The default is true, it will try to combine where it can. + condenseSpans: true, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + editor.customUndo = true; + + if(this.mode === "semantic"){ + this.editor.contentDomPostFilters.push(dojo.hitch(this, this._convertToSemantic)); + }else if(this.mode === "css"){ + this.editor.contentDomPostFilters.push(dojo.hitch(this, this._convertToCss)); + } + + // Pre DOM filters are usually based on what browser, as they all use different ways to + // apply styles with actions and modify them. + if(dojo.isIE){ + // IE still uses semantic tags most of the time, so convert to that. + this.editor.contentDomPreFilters.push(dojo.hitch(this, this._convertToSemantic)); + this._browserFilter = this._convertToSemantic; + }else if(dojo.isWebKit){ + this.editor.contentDomPreFilters.push(dojo.hitch(this, this._convertToCss)); + this._browserFilter = this._convertToCss; + }else if(dojo.isMoz){ + //Editor currently forces Moz into semantic mode, so we need to match. Ideally + //editor could get rid of that and just use CSS mode, which would work cleaner + //That's why this is split out, to make it easy to change later. + this.editor.contentDomPreFilters.push(dojo.hitch(this, this._convertToSemantic)); + this._browserFilter = this._convertToSemantic; + }else{ + this.editor.contentDomPreFilters.push(dojo.hitch(this, this._convertToSemantic)); + this._browserFilter = this._convertToSemantic; + } + + // Set up the inserthtml impl over-ride. This catches semi-paste events and + // tries to normalize them too. + if(this.editor._inserthtmlImpl){ + this.editor._oldInsertHtmlImpl = this.editor._inserthtmlImpl; + } + this.editor._inserthtmlImpl = dojo.hitch(this, this._inserthtmlImpl); + }, + + _convertToSemantic: function(node){ + // summary: + // A function to convert the HTML structure of 'node' into + // semantic tags where possible. + // node: DOMNode + // The node to process. + // tags: + // private + if(node){ + var w = this.editor.window; + var self = this; + var convertNode = function(cNode){ + if(cNode.nodeType == 1){ + if(cNode.id !== "dijitEditorBody"){ + var style = cNode.style; + var tag = cNode.tagName?cNode.tagName.toLowerCase():""; + var sTag; + if(style && tag != "table" && tag != "ul" && tag != "ol"){ + // Avoid wrapper blocks that have specific underlying structure, as injecting + // spans/etc there is invalid. + // Lets check and convert certain node/style types. + var fw = style.fontWeight? style.fontWeight.toLowerCase() : ""; + var fs = style.fontStyle? style.fontStyle.toLowerCase() : ""; + var td = style.textDecoration? style.textDecoration.toLowerCase() : ""; + var s = style.fontSize?style.fontSize.toLowerCase() : ""; + var bc = style.backgroundColor?style.backgroundColor.toLowerCase() : ""; + var c = style.color?style.color.toLowerCase() : ""; + + var wrapNodes = function(wrap, pNode){ + if(wrap){ + while(pNode.firstChild){ + wrap.appendChild(pNode.firstChild); + } + if(tag == "span" && !pNode.style.cssText){ + // A styler tag with nothing extra in it, so lets remove it. + dojo.place(wrap, pNode, "before"); + pNode.parentNode.removeChild(pNode); + pNode = wrap; + }else{ + pNode.appendChild(wrap); + } + } + return pNode; + }; + switch(fw){ + case "bold": + case "bolder": + case "700": + case "800": + case "900": + sTag = dojo.withGlobal(w, "create", dojo, ["b", {}] ); + cNode.style.fontWeight = ""; + break; + } + cNode = wrapNodes(sTag, cNode); + sTag = null; + if(fs == "italic"){ + sTag = dojo.withGlobal(w, "create", dojo, ["i", {}] ); + cNode.style.fontStyle = ""; + } + cNode = wrapNodes(sTag, cNode); + sTag = null; + if(td){ + var da = td.split(" "); + var count = 0; + dojo.forEach(da, function(s){ + switch(s){ + case "underline": + sTag = dojo.withGlobal(w, "create", dojo, ["u", {}] ); + break; + case "line-through": + sTag = dojo.withGlobal(w, "create", dojo, ["strike", {}] ); + break; + } + count++; + if(count == da.length){ + // Last one, clear the decor and see if we can span strip on wrap. + cNode.style.textDecoration = ""; + } + cNode = wrapNodes(sTag, cNode); + sTag = null; + }); + + } + if(s){ + var sizeMap = { + "xx-small": 1, + "x-small": 2, + "small": 3, + "medium": 4, + "large": 5, + "x-large": 6, + "xx-large": 7, + "-webkit-xxx-large": 7 + }; + + // Convert point or px size to size + // to something roughly mappable. + if(s.indexOf("pt") > 0){ + s = s.substring(0,s.indexOf("pt")); + s = parseInt(s); + if(s < 5){ + s = "xx-small"; + }else if(s < 10){ + s = "x-small"; + }else if(s < 15){ + s = "small"; + }else if(s < 20){ + s = "medium"; + }else if(s < 25){ + s = "large"; + }else if(s < 30){ + s = "x-large"; + }else if(s > 30){ + s = "xx-large"; + } + }else if(s.indexOf("px") > 0){ + s = s.substring(0,s.indexOf("px")); + s = parseInt(s); + if(s < 5){ + s = "xx-small"; + }else if(s < 10){ + s = "x-small"; + }else if(s < 15){ + s = "small"; + }else if(s < 20){ + s = "medium"; + }else if(s < 25){ + s = "large"; + }else if(s < 30){ + s = "x-large"; + }else if(s > 30){ + s = "xx-large"; + } + } + var size = sizeMap[s]; + if(!size){ + size = 3; + } + sTag = dojo.withGlobal(w, "create", dojo, ["font", {size: size}] ); + cNode.style.fontSize = ""; + } + cNode = wrapNodes(sTag, cNode); + sTag = null; + if(bc && tag !== "font" && self._isInline(tag)){ + // IE doesn't like non-font background color crud. + // Also, don't move it in if the background color is set on a block style node, + // as it won't color properly once put on inline font. + bc = new dojo.Color(bc).toHex(); + sTag = dojo.withGlobal(w, "create", dojo, ["font", {style: {backgroundColor: bc}}] ); + cNode.style.backgroundColor = ""; + } + if(c && tag !== "font"){ + // IE doesn't like non-font background color crud. + c = new dojo.Color(c).toHex(); + sTag = dojo.withGlobal(w, "create", dojo, ["font", {color: c}] ); + cNode.style.color = ""; + } + cNode = wrapNodes(sTag, cNode); + sTag = null; + } + } + if(cNode.childNodes){ + // Clone it, since we may alter its position + var nodes = []; + dojo.forEach(cNode.childNodes, function(n){ nodes.push(n);}); + dojo.forEach(nodes, convertNode); + } + } + return cNode; + }; + return this._normalizeTags(convertNode(node)); + } + return node; + }, + + _normalizeTags: function(node){ + // summary: + // A function to handle normalizing certain tag types contained under 'node' + // node: + // The node to search from. + // tags: + // Protected. + var w = this.editor.window; + var nodes = dojo.withGlobal(w, function() { + return dojo.query("em,s,strong", node); + }); + if(nodes && nodes.length){ + dojo.forEach(nodes, function(n){ + if(n){ + var tag = n.tagName?n.tagName.toLowerCase():""; + var tTag; + switch(tag){ + case "s": + tTag = "strike"; + break; + case "em": + tTag = "i"; + break; + case "strong": + tTag = "b"; + break; + } + if(tTag){ + var nNode = dojo.withGlobal(w, "create", dojo, [tTag, null, n, "before"] ); + while(n.firstChild){ + nNode.appendChild(n.firstChild); + } + n.parentNode.removeChild(n); + } + } + }); + } + return node; + }, + + _convertToCss: function(node){ + // summary: + // A function to convert the HTML structure of 'node' into + // css span styles around text instead of semantic tags. + // Note: It does not do compression of spans together. + // node: DOMNode + // The node to process + // tags: + // private + if(node){ + var w = this.editor.window; + var convertNode = function(cNode) { + if(cNode.nodeType == 1){ + if(cNode.id !== "dijitEditorBody"){ + var tag = cNode.tagName?cNode.tagName.toLowerCase():""; + if(tag){ + var span; + switch(tag){ + case "b": + case "strong": // Mainly IE + span = dojo.withGlobal(w, "create", dojo, ["span", {style: {"fontWeight": "bold"}}] ); + break; + case "i": + case "em": // Mainly IE + span = dojo.withGlobal(w, "create", dojo, ["span", {style: {"fontStyle": "italic"}}] ); + break; + case "u": + span = dojo.withGlobal(w, "create", dojo, ["span", {style: {"textDecoration": "underline"}}] ); + break; + case "strike": + case "s": // Mainly WebKit. + span = dojo.withGlobal(w, "create", dojo, ["span", {style: {"textDecoration": "line-through"}}] ); + break; + case "font": // Try to deal with colors + var styles = {}; + if(dojo.attr(cNode, "color")){ + styles.color = dojo.attr(cNode, "color"); + } + if(dojo.attr(cNode, "face")){ + styles.fontFace = dojo.attr(cNode, "face"); + } + if(cNode.style && cNode.style.backgroundColor){ + styles.backgroundColor = cNode.style.backgroundColor; + } + if(cNode.style && cNode.style.color){ + styles.color = cNode.style.color; + } + var sizeMap = { + 1: "xx-small", + 2: "x-small", + 3: "small", + 4: "medium", + 5: "large", + 6: "x-large", + 7: "xx-large" + }; + if(dojo.attr(cNode, "size")){ + styles.fontSize = sizeMap[dojo.attr(cNode, "size")]; + } + span = dojo.withGlobal(w, "create", dojo, ["span", {style: styles}] ); + break; + } + if(span){ + while(cNode.firstChild){ + span.appendChild(cNode.firstChild); + } + dojo.place(span, cNode, "before"); + cNode.parentNode.removeChild(cNode); + cNode = span; + } + } + } + if(cNode.childNodes){ + // Clone it, since we may alter its position + var nodes = []; + dojo.forEach(cNode.childNodes, function(n){ nodes.push(n);}); + dojo.forEach(nodes, convertNode); + } + } + return cNode; + }; + node = convertNode(node); + if(this.condenseSpans){ + this._condenseSpans(node); + } + } + return node; + }, + + _condenseSpans: function(node){ + // summary: + // Method to condense spans if you end up with multi-wrapping from + // from converting b, i, u, to span nodes. + // node: + // The node (and its children), to process. + // tags: + // private + var compressSpans = function(node){ + // Okay, span with no class or id and it has styles. + // So, merge the styles, then collapse. Merge requires determining + // all the common/different styles and anything that overlaps the style, + // but a different value can't be merged. + var genStyleMap = function(styleText){ + var m; + if(styleText){ + m = {}; + var styles = styleText.toLowerCase().split(";"); + dojo.forEach(styles, function(s){ + if(s){ + var ss = s.split(":"); + var key = ss[0] ? dojo.trim(ss[0]): ""; + var val = ss[1] ? dojo.trim(ss[1]): ""; + if(key && val){ + var i; + var nKey = ""; + for(i = 0; i < key.length; i++){ + var ch = key.charAt(i); + if(ch == "-"){ + i++; + ch = key.charAt(i); + nKey += ch.toUpperCase(); + }else{ + nKey += ch; + } + } + m[nKey] = val; + } + } + }); + } + return m; + }; + if(node && node.nodeType == 1){ + var tag = node.tagName? node.tagName.toLowerCase() : ""; + if(tag === "span" && node.childNodes && node.childNodes.length === 1){ + // Okay, a possibly compressible span + var c = node.firstChild; + while(c && c.nodeType == 1 && c.tagName && c.tagName.toLowerCase() == "span"){ + if(!dojo.attr(c, "class") && !dojo.attr(c, "id") && c.style){ + var s1 = genStyleMap(node.style.cssText); + var s2 = genStyleMap(c.style.cssText); + if(s1 && s2){ + // Maps, so lets see if we can combine them. + var combinedMap = {}; + var i; + for(i in s1){ + if(!s1[i] || !s2[i] || s1[i] == s2[i]){ + combinedMap[i] = s1[i]; + delete s2[i]; + }else if(s1[i] != s2[i]){ + // Collision, cannot merge. + // IE does not handle combined underline strikethrough text + // decorations on a single span. + if(i == "textDecoration"){ + combinedMap[i] = s1[i] + " " + s2[i]; + delete s2[i]; + }else{ + combinedMap = null; + } + break; + }else{ + combinedMap = null; + break; + } + } + if(combinedMap){ + for(i in s2){ + combinedMap[i] = s2[i]; + } + dojo.style(node, combinedMap); + while(c.firstChild){ + node.appendChild(c.firstChild); + } + var t = c.nextSibling; + c.parentNode.removeChild(c); + c = t; + }else{ + c = c.nextSibling; + } + }else{ + c = c.nextSibling; + } + }else{ + c = c.nextSibling; + } + } + } + } + if(node.childNodes && node.childNodes.length){ + dojo.forEach(node.childNodes, compressSpans); + } + }; + compressSpans(node); + }, + + _isInline: function(tag){ + // summary: + // Function to determine if the current tag is an inline + // element that does formatting, as we don't want to + // try to combine inlines with divs on styles. + // tag: + // The tag to examine + // tags: + // private + switch(tag){ + case "a": + case "b": + case "strong": + case "s": + case "strike": + case "i": + case "u": + case "em": + case "sup": + case "sub": + case "span": + case "font": + case "big": + case "cite": + case "q": + case "img": + case "small": + return true; + default: + return false; + } + }, + + _inserthtmlImpl: function(html){ + // summary: + // Function to trap and over-ride the editor inserthtml implementation + // to try and filter it to match the editor's internal styling mode. + // Helpful for plugins like PasteFromWord, in that it extra-filters + // and normalizes the input if it can. + // html: + // The HTML string to insert. + // tags: + // private + if(html){ + var div = this.editor.document.createElement("div"); + div.innerHTML = html; + div = this._browserFilter(div); + html = dijit._editor.getChildrenHtml(div); + div.innerHTML = ""; + + // Call the over-ride, or if not available, just execute it. + if(this.editor._oldInsertHtmlImpl){ + return this.editor._oldInsertHtmlImpl(html); + }else{ + return this.editor.execCommand("inserthtml", html); + } + } + return false; + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "normalizestyle"){ + o.plugin = new dojox.editor.plugins.NormalizeStyle({ + mode: ("mode" in o.args)?o.args.mode:"semantic", + condenseSpans: ("condenseSpans" in o.args)?o.args.condenseSpans:true + }); + } +}); + +return dojox.editor.plugins.NormalizeStyle; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/PageBreak.js new file mode 100755 index 0000000..59cafbe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/PageBreak.js @@ -0,0 +1,174 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/form/Button", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/PageBreak" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.PageBreak",dijit._editor._Plugin,{ + // summary: + // This plugin provides a simple CSS page break plugin that + // lets you insert browser pring recognizable page breaks in + // the document. + // This plugin registers the hotkey command: CTRL-SHIFT-ENTER + + // useDefaultCommand [protected] + // Over-ride indicating that the command processing is done all by this plugin. + useDefaultCommand: false, + + // iconClassPrefix: [const] String + // The CSS class name for the button node is formed from + // `iconClassPrefix` and `command` + iconClassPrefix: "dijitAdditionalEditorIcon", + + // _unbreakableNodes: [private] Array + // The nodes that should not allow page breaks to be inserted into them. + _unbreakableNodes: ["li", "ul", "ol"], + + // _pbContent: [private] String + // The markup used for the pagebreak insert. + _pbContent: "
                                  ", + + _initButton: function(){ + // summary: + // Over-ride for creation of the resize button. + var ed = this.editor; + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "PageBreak"); + this.button = new dijit.form.Button({ + label: strings["pageBreak"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "PageBreak", + tabIndex: "-1", + onClick: dojo.hitch(this, "_insertPageBreak") + }); + ed.onLoadDeferred.addCallback( + dojo.hitch(this, function(){ + //Register our hotkey to CTRL-SHIFT-ENTER. + ed.addKeyHandler(dojo.keys.ENTER, true, true, dojo.hitch(this, this._insertPageBreak)); + if(dojo.isWebKit || dojo.isOpera){ + // Webkit and Opera based browsers don't generate keypress events when ctrl and shift are + // held then enter is pressed. Odd, that. + this.connect(this.editor, "onKeyDown", dojo.hitch(this, function(e){ + if((e.keyCode === dojo.keys.ENTER) && e.ctrlKey && e.shiftKey){ + this._insertPageBreak(); + } + })); + } + }) + ); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + }, + + _style: function(){ + // summary: + // Internal function for inserting dynamic css. This was originally + // in an editor.onLoadDeferred, but I ran into issues in Chrome with + // the tag being ignored. Having it done at insert worked better. + // tags: + // private + if(!this._styled){ + this._styled = true; + var doc = this.editor.document; + var style = ".dijitEditorPageBreak {\n" + + "\tborder-top-style: solid;\n" + + "\tborder-top-width: 3px;\n" + + "\tborder-top-color: #585858;\n" + + "\tborder-bottom-style: solid;\n" + + "\tborder-bottom-width: 1px;\n" + + "\tborder-bottom-color: #585858;\n" + + "\tborder-left-style: solid;\n" + + "\tborder-left-width: 1px;\n" + + "\tborder-left-color: #585858;\n" + + "\tborder-right-style: solid;\n" + + "\tborder-right-width: 1px;\n" + + "\tborder-right-color: #585858;\n" + + "\tcolor: #A4A4A4;\n" + + "\tbackground-color: #A4A4A4;\n" + + "\theight: 10px;\n"+ + "\tpage-break-after: always;\n" + + "\tpadding: 0px 0px 0px 0px;\n" + + "}\n\n" + + "@media print {\n" + + "\t.dijitEditorPageBreak { page-break-after: always; " + + "background-color: rgba(0,0,0,0); color: rgba(0,0,0,0); " + + "border: 0px none rgba(0,0,0,0); display: hidden; " + + "width: 0px; height: 0px;}\n" + + "}"; + + if(!dojo.isIE){ + var sNode = doc.createElement("style"); + sNode.appendChild(doc.createTextNode(style)); + doc.getElementsByTagName("head")[0].appendChild(sNode); + }else{ + var ss = doc.createStyleSheet(""); + ss.cssText = style; + } + } + }, + + _insertPageBreak: function(){ + // summary: + // Function to insert a CSS page break at the current point in the document + // tags: + // private + try{ + if(!this._styled){ this._style(); } + //this.editor.focus(); + if(this._allowBreak()){ + this.editor.execCommand("inserthtml", this._pbContent); + } + }catch(e){ + console.warn(e); + } + }, + + _allowBreak: function(){ + // summary: + // Internal function to see if we should allow a page break at the document + // location. + // tags: + // private + var ed = this.editor; + var doc = ed.document; + var node = ed._sCall("getSelectedElement", null) || ed._sCall("getParentElement", null); + while(node && node !== doc.body && node !== doc.html){ + if(ed._sCall("isTag", [node, this._unbreakableNodes])){ + return false; + } + node = node.parentNode; + } + return true; + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "pagebreak"){ + o.plugin = new dojox.editor.plugins.PageBreak({}); + } +}); + +return dojox.editor.plugins.PageBreak; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/PasteFromWord.js new file mode 100755 index 0000000..e3af559 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/PasteFromWord.js @@ -0,0 +1,223 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_base/manager", + "dijit/_editor/_Plugin", + "dijit/_editor/RichText", + "dijit/form/Button", + "dijit/Dialog", + "dojox/html/format", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/string", + "dojo/i18n!dojox/editor/plugins/nls/PasteFromWord" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.PasteFromWord",dijit._editor._Plugin,{ + // summary: + // This plugin provides PasteFromWord cabability to the editor. When + // clicked, a dialog opens with a spartan RichText instance to paste + // word content into via the keyboard commands. The contents are + // then filtered to remove word style classes and other meta-junk + // that tends to cause issues. + + // iconClassPrefix: [const] String + // The CSS class name for the button node is formed from `iconClassPrefix` + // and `command` + iconClassPrefix: "dijitAdditionalEditorIcon", + + // width: [public] String + // The width to use for the rich text area in the copy/pate dialog, in px. Default is 400px. + width: "400px", + + // height: [public] String + // The height to use for the rich text area in the copy/pate dialog, in px. Default is 300px. + height: "300px", + + _template: ["
                                  ", + "
                                  ${instructions}
                                  ", + "
                                  ", + "", + "", + "", + "", + "", + "", + "
                                  ", + "", + " ", + "", + "
                                  ", + "
                                  "].join(""), + + // _filters: [protected] Array + // The filters is an array of regular expressions to try and strip out a lot + // of style data MS Word likes to insert when pasting into a contentEditable. + // Prettymuch all of it is junk and not good html. The hander is a place to put a function + // for match handling. In most cases, it just handles it as empty string. But the option is + // there for more complex handling. + _filters: [ + // Meta tags, link tags, and prefixed tags + {regexp: /(]*\s*>)|(<\s*link\s* href="file:[^>]*\s*>)|(<\/?\s*\w+:[^>]*\s*>)/gi, handler: ""}, + // Style tags + {regexp: /(?:]*)>([\s\S]*?)<\/style>|]*rel=['"]?stylesheet)([^>]*?href=(['"])([^>]*?)\4[^>\/]*)\/?>)/gi, handler: ""}, + // MS class tags and comment tags. + {regexp: /(class="Mso[^"]*")|()/gi, handler: ""}, + // blank p tags + {regexp: /(]*>\s*(\ |\u00A0)*\s*<\/p[^>]*>)|(]*>\s*]*>\s*(\ |\u00A0)*\s*<\/\s*font\s*>\s<\/p[^>]*>)/ig, handler: ""}, + // Strip out styles containing mso defs and margins, as likely added in IE and are not good to have as it mangles presentation. + {regexp: /(style="[^"]*mso-[^;][^"]*")|(style="margin:\s*[^;"]*;")/gi, handler: ""}, + // Scripts (if any) + {regexp: /(<\s*script[^>]*>((.|\s)*?)<\\?\/\s*script\s*>)|(<\s*script\b([^<>]|\s)*>?)|(<[^>]*=(\s|)*[("|')]javascript:[^$1][(\s|.)]*[$1][^>]*>)/ig, handler: ""} + ], + + _initButton: function(){ + this._filters = this._filters.slice(0); + + // summary: + // Over-ride for creation of the save button. + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "PasteFromWord"); + this.button = new dijit.form.Button({ + label: strings["pasteFromWord"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "PasteFromWord", + tabIndex: "-1", + onClick: dojo.hitch(this, "_openDialog") + }); + + this._uId = dijit.getUniqueId(this.editor.id); + + strings.uId = this._uId; + strings.width = this.width || "400px"; + strings.height = this.height || "300px"; + + this._dialog = new dijit.Dialog({title: strings["pasteFromWord"]}).placeAt(dojo.body()); + this._dialog.set("content", dojo.string.substitute(this._template, strings)); + + // Make it translucent so we can fade in the window when the RTE is created. + // the RTE has to be created 'visible, and this is a ncie trick to make the creation + // 'pretty'. + dojo.style(dojo.byId(this._uId + "_rte"), "opacity", 0.001); + + // Link up the action buttons to perform the insert or cleanup. + this.connect(dijit.byId(this._uId + "_paste"), "onClick", "_paste"); + this.connect(dijit.byId(this._uId + "_cancel"), "onClick", "_cancel"); + this.connect(this._dialog, "onHide", "_clearDialog"); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + }, + + _openDialog: function(){ + // summary: + // Function to trigger opening the copy dialog. + // tags: + // private + this._dialog.show(); + if(!this._rte){ + // RTE hasn't been created yet, so we need to create it now that the + // dialog is showing up. + setTimeout(dojo.hitch(this, function() { + this._rte = new dijit._editor.RichText({height: this.height || "300px"}, this._uId + "_rte"); + this._rte.onLoadDeferred.addCallback(dojo.hitch(this, function() { + dojo.animateProperty({ + node: this._rte.domNode, properties: { opacity: { start: 0.001, end: 1.0 } } + }).play(); + })); + }), 100); + } + }, + + _paste: function(){ + // summary: + // Function to handle setting the contents of the copy from dialog + // into the editor. + // tags: + // private + + // Gather the content and try to format it a bit (makes regexp cleanup simpler). + // It also normalizes tag names and styles, so regexps are the same across browsers. + var content = dojox.html.format.prettyPrint(this._rte.get("value")); + + //Close up the dialog and clear old content. + this._dialog.hide(); + + // Apply all the filters to remove MS specific injected text. + var i; + for(i = 0; i < this._filters.length; i++){ + var filter = this._filters[i]; + content = content.replace(filter.regexp, filter.handler); + } + + // Format it again to make sure it is reasonably formatted as + // the regexp applies will have likely chewed up the formatting. + content = dojox.html.format.prettyPrint(content); + + // Paste it in. + this.editor.execCommand("inserthtml", content); + }, + + _cancel: function(){ + // summary: + // Function to handle cancelling setting the contents of the + // copy from dialog into the editor. + // tags: + // private + this._dialog.hide(); + }, + + _clearDialog: function(){ + // summary: + // simple function to cleat the contents when hide is calledon dialog + // copy from dialog into the editor. + // tags: + // private + this._rte.set("value", ""); + }, + + destroy: function(){ + // sunnary: + // Cleanup function + // tags: + // public + if(this._rte){ + this._rte.destroy(); + } + if(this._dialog){ + this._dialog.destroyRecursive(); + } + delete this._dialog; + delete this._rte; + this.inherited(arguments); + } + +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "pastefromword"){ + o.plugin = new dojox.editor.plugins.PasteFromWord({ + width: ("width" in o.args)?o.args.width:"400px", + height: ("height" in o.args)?o.args.width:"300px" + }); + } +}); + +return dojox.editor.plugins.PasteFromWord; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/PrettyPrint.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/PrettyPrint.js new file mode 100755 index 0000000..9acc489 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/PrettyPrint.js @@ -0,0 +1,107 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojox/html/format" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.PrettyPrint",dijit._editor._Plugin,{ + // summary: + // This plugin provides a mechanism by which to 'beautify HTML' + // generated by the editor. It is by no means perfect. + + // indentBy [public] Integer + // The indentBy property configures if the plugin should use a + // set number of spaces for indent (between 1-5), or just tab. + // The default value is -1, which means tab. + indentBy: -1, + + // lineLength [public] Integer + // The lineLength property configures if the plugin should break up long + // text lines into N lines of 'lineLength' length. This parameter does not + // take into account indention depth, only text line length. The default is -1 + // which means unlimited line length. + lineLength: -1, + + // useDefaultCommand [protected] + // Over-ride indicating that the command processing is done all by this plugin. + useDefaultCommand: false, + + // map [public] Array + // An array of arrays that define out entity character to encoding mappings. + // see the dojox.html.entities definitions for more details. The default is + // HTML + cent, pound, yen, ellipsis, copyright, registered trademark. + entityMap: null, + + // xhtml: [public] boolean + // Flag to denote that the PrettyPrint plugin try to generate XHTML compliant + // markup. + + _initButton: function(){ + // summary: + // Over-ride for creation of the resize button. + delete this.command; + }, + + setToolbar: function(toolbar){ + // summary: + // Over-ride to do nothing. + // We don't want to append a button, we take over getValue. + }, + + setEditor: function(editor){ + // summary: + // Over-ride to take over getValue of editor so that + // we can 'pretty' the output. + this.inherited(arguments); + var self = this; + this.editor.onLoadDeferred.addCallback(function(){ + self.editor._prettyprint_getValue = self.editor.getValue; + self.editor.getValue = function(){ + var val = self.editor._prettyprint_getValue(arguments); + return dojox.html.format.prettyPrint(val, self.indentBy, self.lineLength, self.entityMap, self.xhtml); + }; + + // The following are implemented as 'performance' functions. Don't prettyprint + // content on internal state changes, just on calls to actually get values. + self.editor._prettyprint_endEditing = self.editor._endEditing; + self.editor._prettyprint_onBlur = self.editor._onBlur; + self.editor._endEditing = function(ignore_caret){ + var v = self.editor._prettyprint_getValue(true); + self.editor._undoedSteps=[];//clear undoed steps + self.editor._steps.push({text: v, bookmark: self.editor._getBookmark()}); + } + self.editor._onBlur = function(e){ + this.inherited("_onBlur", arguments); + var _c=self.editor._prettyprint_getValue(true); + if(_c!=self.editor.savedContent){ + self.editor.onChange(_c); + self.editor.savedContent=_c; + } + } + }); + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "prettyprint"){ + o.plugin = new dojox.editor.plugins.PrettyPrint({ + indentBy: ("indentBy" in o.args)?o.args.indentBy:-1, + lineLength: ("lineLength" in o.args)?o.args.lineLength:-1, + entityMap: ("entityMap" in o.args)?o.args.entityMap:dojox.html.entities.html.concat([ + ["\u00A2","cent"],["\u00A3","pound"],["\u20AC","euro"], + ["\u00A5","yen"],["\u00A9","copy"],["\u00A7","sect"], + ["\u2026","hellip"],["\u00AE","reg"] + ]), + xhtml: ("xhtml" in o.args)?o.args.xhtml:false + }); + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Preview.js new file mode 100755 index 0000000..ef200ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Preview.js @@ -0,0 +1,107 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/form/Button", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/Preview" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.Preview",dijit._editor._Plugin,{ + // summary: + // This plugin provides Preview cabability to the editor. When + // clicked, the document in the editor frame will displayed in a separate + // window/tab + + // useDefaultCommand [protected] + // Over-ride indicating that the command processing is done all by this plugin. + useDefaultCommand: false, + + // styles: [public] String + // A string of CSS styles to apply to the previewed content, if any. + styles: "", + + // stylesheets: [public] Array + // An array of stylesheets to import into the preview, if any. + stylesheets: null, + + // iconClassPrefix: [const] String + // The CSS class name for the button node icon. + iconClassPrefix: "dijitAdditionalEditorIcon", + + _initButton: function(){ + // summary: + // Over-ride for creation of the preview button. + this._nlsResources = dojo.i18n.getLocalization("dojox.editor.plugins", "Preview"); + this.button = new dijit.form.Button({ + label: this._nlsResources["preview"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "Preview", + tabIndex: "-1", + onClick: dojo.hitch(this, "_preview") + }); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + _preview: function(){ + // summary: + // Function to trigger previewing of the editor document + // tags: + // private + try{ + var content = this.editor.get("value"); + var head = "\t\t\n"; + var i; + // Apply the stylesheets, then apply the styles. + if(this.stylesheets){ + for(i = 0; i < this.stylesheets.length; i++){ + head += "\t\t\n"; + } + } + if(this.styles){ + head += ("\t\t\n"); + } + content = "\n\t\n" + head + "\t\n\t\n" + content + "\n\t\n"; + var win = window.open("javascript: ''", this._nlsResources["preview"], "status=1,menubar=0,location=0,toolbar=0"); + win.document.open(); + win.document.write(content); + win.document.close(); + + }catch(e){ + console.warn(e); + } + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "preview"){ + o.plugin = new dojox.editor.plugins.Preview({ + styles: ("styles" in o.args)?o.args.styles:"", + stylesheets: ("stylesheets" in o.args)? o.args.stylesheets:null + }); + } +}); + +return dojox.editor.plugins.Preview; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/ResizeTableColumn.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/ResizeTableColumn.js new file mode 100644 index 0000000..0079243 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/ResizeTableColumn.js @@ -0,0 +1,290 @@ +dojo.provide("dojox.editor.plugins.ResizeTableColumn"); + +dojo.require("dojox.editor.plugins.TablePlugins"); + +dojo.declare("dojox.editor.plugins.ResizeTableColumn", dojox.editor.plugins.TablePlugins, { + + constructor: function(){ + // summary: + // Because IE will ignore the cursor style when the editMode of the document is on, + // we need to create a div within the outer document to mimic the behavior of drag&drop + this.isLtr = this.dir ? (this.dir == "ltr") : dojo._isBodyLtr(); + this.ruleDiv = dojo.create("div", + {style: "top: -10000px; z-index: 10001"}, + dojo.body(), "last"); + }, + + setEditor: function(editor){ + // summary: + // Handle the drag&drop events + // editor: + // The editor which this plugin belongs to + // tags: + // protected + var ruleDiv = this.ruleDiv; + + this.editor = editor; + this.editor.customUndo = true; + this.onEditorLoaded(); + + // The content of the editor is loaded asynchronously, so the function + // should be called when it is loaded. + editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + this.connect(this.editor.editNode, "onmousemove", function(evt){ + var editorCoords = dojo.coords(editor.iframe, true), + ex = editorCoords.x, cx = evt.clientX; + + if(!this.isDragging){ + // If it is just a movement, put the div at the edge of the + // target cell so that when the cursor hover on it, it will + // change to the col-resize style. + var obj = evt.target; + + if(obj.tagName && obj.tagName.toLowerCase() == "td"){ + var objCoords = dojo.coords(obj), ox = objCoords.x, ow = objCoords.w, + pos = ex + objCoords.x - 2; + if(this.isLtr){ + ruleDiv.headerColumn = true; + if(!isBoundary(obj, "first") || cx > ox + ow / 2){ + pos += ow; + ruleDiv.headerColumn = false; + } + }else{ + ruleDiv.headerColumn = false; + if(isBoundary(obj, "first") && cx > ox + ow / 2){ + pos += ow; + ruleDiv.headerColumn = true; + } + } + dojo.style(ruleDiv, { + position: "absolute", + cursor: "col-resize", + display: "block", + width: "4px", + backgroundColor: "transparent", + top: editorCoords.y + objCoords.y + "px", + left: pos + "px", + height: objCoords.h + "px" + }); + this.activeCell = obj; + }else{ + dojo.style(ruleDiv, {display: "none", top: "-10000px"}); + } + }else{ + // Begin to drag&drop + var activeCell = this.activeCell, + activeCoords = dojo.coords(activeCell), ax = activeCoords.x, aw = activeCoords.w, + sibling = nextSibling(activeCell), siblingCoords, sx, sw, + containerCoords = dojo.coords(getTable(activeCell).parentNode), + ctx = containerCoords.x, ctw = containerCoords.w; + + if(sibling){ + siblingCoords = dojo.coords(sibling); + sx = siblingCoords.x; + sw = siblingCoords.w; + } + + // The leading and trailing columns can only be sized to the extent of the containing div. + if(this.isLtr && + ((ruleDiv.headerColumn && sibling && ctx < cx && cx < ax + aw) || + ((!sibling && ax < cx && cx < ctx + ctw) || (sibling && ax < cx && cx < sx + sw))) || + !this.isLtr && + ((ruleDiv.headerColumn && sibling && ctx > cx && cx > ax) || + ((!sibling && ax + aw > cx && cx > ctx) || (sibling && ax + aw > cx && cx > sx)))){ + dojo.style(ruleDiv, {left: ex + cx + "px"}); + } + } + }); + + this.connect(ruleDiv, "onmousedown", function(evt){ + var editorCoords = dojo.coords(editor.iframe, true), + tableCoords = dojo.coords(getTable(this.activeCell)); + + this.isDragging = true; + dojo.style(editor.editNode, {cursor: "col-resize"}); + dojo.style(ruleDiv, { + width: "1px", + left: evt.clientX + "px", + top: editorCoords.y + tableCoords.y + "px", + height: tableCoords.h + "px", + backgroundColor: "#777" + }); + }); + + this.connect(ruleDiv, "onmouseup", function(evt){ + var activeCell = this.activeCell, + activeCoords = dojo.coords(activeCell), aw = activeCoords.w, ax = activeCoords.x, + sibling = nextSibling(activeCell), siblingCoords, sx, sw, + editorCoords = dojo.coords(editor.iframe), ex = editorCoords.x, + table = getTable(activeCell), tableCoords = dojo.coords(table), + cs = table.getAttribute("cellspacing"), + cx = evt.clientX, + headerCell = getHeaderCell(activeCell), headerSibling, + newWidth, newSiblingWidth; + + if(!cs || (cs = parseInt(cs, 10)) < 0){ cs = 2; } + + if(sibling){ + siblingCoords = dojo.coords(sibling); + sx = siblingCoords.x; + sw = siblingCoords.w; + headerSibling = getHeaderCell(sibling); + } + + // The delta width is either taken from or added to the adjacent column on the trailing edge. + // Sizing the rightmost or leftmost columns affects only those columns. + if(this.isLtr){ + if(ruleDiv.headerColumn){ + newWidth = ex + ax + aw - cx; + }else{ + newWidth = cx - ex - ax; + if(sibling) { newSiblingWidth = ex + sx + sw - cx - cs; } + } + }else{ + if(ruleDiv.headerColumn){ + newWidth = cx - ex - ax; + }else{ + newWidth = ex + ax + aw - cx; + if(sibling) { newSiblingWidth = cx - ex - sx - cs; } + } + } + + this.isDragging = false; + marginBox(headerCell, newWidth); + if(sibling){ + if(!ruleDiv.headerColumn){ + marginBox(headerSibling, newSiblingWidth); + } + } + if(ruleDiv.headerColumn && isBoundary(activeCell, "first") || isBoundary(activeCell, "last")){ + dojo.marginBox(table, {w: tableCoords.w + newWidth - aw}); + } + // Do it again to consolidate the result, + // because maybe the cell cannot be so narrow as you specified. + marginBox(headerCell, dojo.coords(activeCell).w); + if(sibling){ + marginBox(headerSibling, dojo.coords(sibling).w); + } + dojo.style(editor.editNode, {cursor: "auto"}); + dojo.style(ruleDiv, {display: "none", top: "-10000px"}); + this.activeCell = null; + }); + })); + + function isBoundary(/*DomNode*/ n, /*String*/ b){ + // summary: + // Check if the current cell is in the first column or + // in the last column. + // n: + // The node of a table cell + // b: + // Indicate if the cell node is compared with the first coluln + // or the last column + var nodes = dojo.withGlobal(editor.window, "query", dojo, ["> td", n.parentNode]); + switch(b){ + case "first": + return nodes[0] == n; + case "last": + return nodes[nodes.length - 1] == n; + default: + return false; + } + } + + function nextSibling(/*DomNode*/ node){ + // summary: + // Get the next cell in row + // node: + // The table cell + node = node.nextSibling + while(node){ + if(node.tagName && node.tagName.toLowerCase() == "td"){ + break; + } + node = node.nextSibling + } + return node; + } + + function getTable(/*DomNode*/ t){ + // summary: + // Get the table that this cell belongs to. + // t: + // The table cell + while((t = t.parentNode) && t.tagName.toLowerCase() != "table"){} + return t; + } + + function getHeaderCell(/*DomNode*/ t){ + // summary: + // Get the table cell in the first row that shares the same + // column with the node t. + // t: + // The node of the table cell + var tds = dojo.withGlobal(editor.window, "query", dojo, ["td", getTable(t)]), + len = tds.length; + for(var i = 0; i < len; i++){ + if(dojo.coords(tds[i]).x == dojo.coords(t).x){ + return tds[i]; + } + } + return null; + } + + function marginBox(/*DomNode*/ node, /*Number*/ width){ + // summary: + // In IE, if the border width of the td is not specified in table, the default value is 1px, + // though it is marked "medium". + // node: + // The node to be set width + // width: + // The new width of the node + if(dojo.isIE){ + var s = node.currentStyle, + bl = px(node, s.borderLeftWidth), br = px(node, s.borderRightWidth), + pl = px(node, s.paddingLeft), pr = px(node, s.paddingRight); + + node.style.width = width - bl - br - pl - pr; + }else{ + dojo.marginBox(node, {w: width}); + } + + function px(element, avalue){ + if(!avalue){ return 0; } + if(avalue == "medium"){ return 1; } + // style values can be floats, client code may + // want to round this value for integer pixels. + if(avalue.slice && avalue.slice(-2) == 'px'){ return parseFloat(avalue); } + with(element){ + var sLeft = style.left; + var rsLeft = runtimeStyle.left; + runtimeStyle.left = currentStyle.left; + try{ + // 'avalue' may be incompatible with style.left, which can cause IE to throw + // this has been observed for border widths using "thin", "medium", "thick" constants + // those particular constants could be trapped by a lookup + // but perhaps there are more + style.left = avalue; + avalue = style.pixelLeft; + }catch(e){ + avalue = 0; + } + style.left = sLeft; + runtimeStyle.left = rsLeft; + } + return avalue; + } + } + } +}); + +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + // make first character lower case + if(o.args && o.args.command){ + var cmd = o.args.command.charAt(0).toLowerCase() + o.args.command.substring(1, o.args.command.length); + if(cmd == "resizeTableColumn"){ + o.plugin = new dojox.editor.plugins.ResizeTableColumn({commandName: cmd}); + } + } +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/SafePaste.js new file mode 100644 index 0000000..231ac3f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/SafePaste.js @@ -0,0 +1,115 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/Dialog", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/string", + "dojox/editor/plugins/PasteFromWord", + "dojo/i18n!dojox/editor/plugins/nls/SafePaste", + "dojo/i18n!dijit/nls/common", + "dojo/i18n!dijit/_editor/nls/commands" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.SafePaste", [dojox.editor.plugins.PasteFromWord],{ + // summary: + // This plugin extends from the PasteFromWord plugin and provides + // 'safe pasting', meaning that it will not allow keyboard/menu pasting + // into the dijit editor. It still runs all of the word cleanup code, + // including script strippers. If you use this plugin, you don't need to + // use the 'PasteFromWord Plugin' + + _initButton: function(){ + // summary: + // Over-ride the editor paste controls + + // Create instance local copy. + this._filters = this._filters.slice(0); + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "SafePaste"); + dojo.mixin(strings, dojo.i18n.getLocalization("dijit", "common")); + strings.cancel = strings.buttonCancel; + dojo.mixin(strings, dojo.i18n.getLocalization("dijit._editor", "commands")); + + this._uId = dijit.getUniqueId(this.editor.id); + + strings.uId = this._uId; + strings.width = this.width || "400px"; + strings.height = this.height || "300px"; + + this._dialog = new dijit.Dialog({title: strings["paste"]}).placeAt(dojo.body()); + this._dialog.set("content", dojo.string.substitute(this._template, strings)); + + // Make it translucent so we can fade in the window when the RTE is created. + // the RTE has to be created 'visible, and this is a ncie trick to make the creation + // 'pretty'. + dojo.style(dojo.byId(this._uId + "_rte"), "opacity", 0.001); + + // Link up the action buttons to perform the insert or cleanup. + this.connect(dijit.byId(this._uId + "_paste"), "onClick", "_paste"); + this.connect(dijit.byId(this._uId + "_cancel"), "onClick", "_cancel"); + this.connect(this._dialog, "onHide", "_clearDialog"); + + // Create regular expressions for sripping out user-specified tags and register + // them with the filters. + dojo.forEach(this.stripTags, function(tag){ + var tagName = tag + ""; + var rxStartTag = new RegExp("<\\s*" + tagName + "[^>]*>", "igm"); + var rxEndTag = new RegExp("<\\\\?\\/\\s*" + tagName + "\\s*>", "igm"); + this._filters.push({regexp: + rxStartTag, + handler: "" + }); + this._filters.push({regexp: + rxEndTag, + handler: "" + }); + }, this); + }, + + updateState: function(){ + // summary: + // Overrides _Plugin.updateState(). + // tags: + // protected + // Do nothing. + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + var spFunc = dojo.hitch(this, function(e){ + if(e){ + dojo.stopEvent(e); + } + this._openDialog(); + return true; + }); + this.connect(this.editor.editNode, "onpaste", spFunc); + this.editor._pasteImpl = spFunc; + })); + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "safepaste"){ + o.plugin = new dojox.editor.plugins.SafePaste({ + width: (o.args.hasOwnProperty("width"))?o.args.width:"400px", + height: (o.args.hasOwnProperty("height"))?o.args.width:"300px", + stripTags: (o.args.hasOwnProperty("stripTags"))?o.args.stripTags:null + }); + } +}); + +return dojox.editor.plugins.SafePaste; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Save.js new file mode 100755 index 0000000..e012fdb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Save.js @@ -0,0 +1,144 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/form/Button", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/Save" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.Save",dijit._editor._Plugin,{ + // summary: + // This plugin provides Save cabability to the editor. When + // clicked, the document in the editor frame will be osted to the URL + // provided, or none, if none provided. Users who desire a different save + // function can extend this plugin (via dojo.extend) and over-ride the + // save method while save is in process, the save button is disabled. + + // iconClassPrefix: [const] String + // The CSS class name for the button node is formed from `iconClassPrefix` + // and `command` + iconClassPrefix: "dijitAdditionalEditorIcon", + + // url [public] String + // The URL to POST the content back to. Used by the save function. + url: "", + + // logErrors [public] boolean + // Boolean flag to indicate that the default action for save and + // error handlers is to just log to console. Default is true. + logResults: true, + + _initButton: function(){ + // summary: + // Over-ride for creation of the save button. + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "Save"); + this.button = new dijit.form.Button({ + label: strings["save"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "Save", + tabIndex: "-1", + onClick: dojo.hitch(this, "_save") + }); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + }, + + _save: function(){ + // summary: + // Function to trigger saving of the editor document + // tags: + // private + var content = this.editor.get("value"); + this.save(content); + }, + + save: function(content){ + // summary: + // User over-ridable save function for the editor content. + // Please note that the service URL provided should do content + // filtering of the posted content to avoid XSS injection via + // the data from the editor. + // tags: + // public + + // Set the default header to post as a body of text/html. + var headers = { + "Content-Type": "text/html" + }; + if(this.url){ + var postArgs = { + url: this.url, + postData: content, + headers: headers, + handleAs: "text" + }; + this.button.set("disabled", true); + var deferred = dojo.xhrPost(postArgs); + deferred.addCallback(dojo.hitch(this, this.onSuccess)); + deferred.addErrback(dojo.hitch(this, this.onError)); + }else{ + console.log("No URL provided, no post-back of content: " + content); + } + }, + + onSuccess: function(resp, ioargs){ + // summary: + // User over-ridable save success function for editor content. + // Be sure to call this.inherited(arguments) if over-riding this method. + // resp: + // The response from the server, if any, in text format. + // tags: + // public + this.button.set("disabled", false); + if(this.logResults){ + console.log(resp); + } + }, + + onError: function(error, ioargs){ + // summary: + // User over-ridable save success function for editor content. + // Be sure to call this.inherited(arguments) if over-riding this method. + // resp: + // The response from the server, if any, in text format. + // tags: + // public + this.button.set("disabled", false); + if(this.logResults){ + console.log(error); + } + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "save"){ + o.plugin = new dojox.editor.plugins.Save({ + url: ("url" in o.args)?o.args.url:"", + logResults: ("logResults" in o.args)?o.args.logResults:true + }); + } +}); + +return dojox.editor.plugins.Save; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/ShowBlockNodes.js new file mode 100755 index 0000000..f1c74cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/ShowBlockNodes.js @@ -0,0 +1,187 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/_Plugin", + "dijit/form/Button", + "dijit/form/ToggleButton", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/ShowBlockNodes" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.ShowBlockNodes",dijit._editor._Plugin,{ + // summary: + // This plugin provides ShowBlockNodes cabability to the editor. When + // clicked, the document in the editor will apply a class to specific + // block nodes to make them visible in the layout. This info is not + // exposed/extracted when the editor value is obtained, it is purely for help + // while working on the page. + + // useDefaultCommand [protected] boolean + // Over-ride indicating that the command processing is done all by this plugin. + useDefaultCommand: false, + + // iconClassPrefix: [const] String + // The CSS class name for the button node is formed from `iconClassPrefix` and `command` + iconClassPrefix: "dijitAdditionalEditorIcon", + + // _styled [private] boolean + // Flag indicating the document has had the style updates applied. + _styled: false, + + _initButton: function(){ + // summary: + // Over-ride for creation of the preview button. + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "ShowBlockNodes"); + this.button = new dijit.form.ToggleButton({ + label: strings["showBlockNodes"], + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "ShowBlockNodes", + tabIndex: "-1", + onChange: dojo.hitch(this, "_showBlocks") + }); + this.editor.addKeyHandler(dojo.keys.F9, true, true, dojo.hitch(this, this.toggle)); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + }, + + toggle: function(){ + // summary: + // Function to allow programmatic toggling of the view. + this.button.set("checked", !this.button.get("checked")); + }, + + _showBlocks: function(show){ + // summary: + // Function to trigger printing of the editor document + // tags: + // private + var doc = this.editor.document; + if(!this._styled){ + try{ + //Attempt to inject our specialized style rules for doing this. + this._styled = true; + + var style = ""; + var blocks = ["div", "p", "ul", "ol", "table", "h1", + "h2", "h3", "h4", "h5", "h6", "pre", "dir", "center", + "blockquote", "form", "fieldset", "address", "object", + "pre", "hr", "ins", "noscript", "li", "map", "button", + "dd", "dt"]; + + var template = "@media screen {\n" + + "\t.editorShowBlocks {TAG} {\n" + + "\t\tbackground-image: url({MODURL}/images/blockelems/{TAG}.gif);\n" + + "\t\tbackground-repeat: no-repeat;\n" + + "\t\tbackground-position: top left;\n" + + "\t\tborder-width: 1px;\n" + + "\t\tborder-style: dashed;\n" + + "\t\tborder-color: #D0D0D0;\n" + + "\t\tpadding-top: 15px;\n" + + "\t\tpadding-left: 15px;\n" + + "\t}\n" + + "}\n"; + + dojo.forEach(blocks, function(tag){ + style += template.replace(/\{TAG\}/gi, tag); + }); + + //Finally associate in the image locations based off the module url. + var modurl = dojo.moduleUrl(dojox._scopeName, "editor/plugins/resources").toString(); + if(!(modurl.match(/^https?:\/\//i)) && + !(modurl.match(/^file:\/\//i))){ + // We have to root it to the page location on webkit for some nutball reason. + // Probably has to do with how iframe was loaded. + var bUrl; + if(modurl.charAt(0) === "/"){ + //Absolute path on the server, so lets handle... + var proto = dojo.doc.location.protocol; + var hostn = dojo.doc.location.host; + bUrl = proto + "//" + hostn; + }else{ + bUrl = this._calcBaseUrl(dojo.global.location.href); + } + if(bUrl[bUrl.length - 1] !== "/" && modurl.charAt(0) !== "/"){ + bUrl += "/"; + } + modurl = bUrl + modurl; + } + // Update all the urls. + style = style.replace(/\{MODURL\}/gi, modurl); + if(!dojo.isIE){ + var sNode = doc.createElement("style"); + sNode.appendChild(doc.createTextNode(style)); + doc.getElementsByTagName("head")[0].appendChild(sNode); + }else{ + var ss = doc.createStyleSheet(""); + ss.cssText = style; + } + }catch(e){ + console.warn(e); + } + } + + // Apply/remove the classes based on state. + if(show){ + dojo.addClass(this.editor.editNode, "editorShowBlocks"); + }else{ + dojo.removeClass(this.editor.editNode, "editorShowBlocks"); + } + }, + + _calcBaseUrl: function(fullUrl) { + // summary: + // Internal function used to figure out the full root url (no relatives) + // for loading images in the styles in the iframe. + // fullUrl: String + // The full url to tear down to the base. + // tags: + // private + var baseUrl = null; + if (fullUrl !== null) { + // Check to see if we need to strip off any query parameters from the Url. + var index = fullUrl.indexOf("?"); + if (index != -1) { + fullUrl = fullUrl.substring(0,index); + } + + // Now we need to trim if necessary. If it ends in /, then we don't + // have a filename to trim off so we can return. + index = fullUrl.lastIndexOf("/"); + if (index > 0 && index < fullUrl.length) { + baseUrl = fullUrl.substring(0,index); + }else{ + baseUrl = fullUrl; + } + } + return baseUrl; //String + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "showblocknodes"){ + o.plugin = new dojox.editor.plugins.ShowBlockNodes(); + } +}); + +return dojox.editor.plugins.ShowBlockNodes; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Smiley.js new file mode 100644 index 0000000..7e5183b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/Smiley.js @@ -0,0 +1,155 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/_Plugin", + "dijit/form/DropDownButton", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojox/editor/plugins/_SmileyPalette", + "dojox/html/format", + "dojo/i18n!dojox/editor/plugins/nls/Smiley" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.Smiley"); + +dojo.declare("dojox.editor.plugins.Smiley", dijit._editor._Plugin, { + // summary: + // This plugin allows the user to select from emoticons or "smileys" + // to insert at the current cursor position. + // + // description: + // The commands provided by this plugin are: + // * smiley - inserts the selected emoticon + + // iconClassPrefix: [const] String + // The CSS class name for the button node is formed from `iconClassPrefix` and `command` + iconClassPrefix: "dijitAdditionalEditorIcon", + + // a marker for emoticon wrap like [:-)] for regexp convienent + // when a message which contains an emoticon stored in a database or view source, this marker include also + // but when user enter an emoticon by key board, user don't need to enter this marker. + // also emoticon definition character set can not contains this marker + emoticonMarker: '[]', + + emoticonImageClass: 'dojoEditorEmoticon', + + _initButton: function(){ + // summary: + // + this.dropDown = new dojox.editor.plugins._SmileyPalette(); + this.connect(this.dropDown, "onChange", function(ascii){ + this.button.closeDropDown(); + this.editor.focus(); + // + ascii = this.emoticonMarker.charAt(0) + ascii + this.emoticonMarker.charAt(1); + this.editor.execCommand("inserthtml", ascii); + }); + this.i18n = dojo.i18n.getLocalization("dojox.editor.plugins", "Smiley"); + this.button = new dijit.form.DropDownButton({ + label: this.i18n.smiley, + showLabel: false, + iconClass: this.iconClassPrefix + " " + this.iconClassPrefix + "Smiley", + tabIndex: "-1", + dropDown: this.dropDown + }); + this.emoticonImageRegexp = new RegExp("class=(\"|\')" + this.emoticonImageClass + "(\"|\')"); + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this._initButton(); + this.editor.contentPreFilters.push(dojo.hitch(this, this._preFilterEntities)); + this.editor.contentPostFilters.push(dojo.hitch(this, this._postFilterEntities)); + + if(dojo.isFF){ + // This is a workaround for a really odd Firefox bug with + // leaving behind phantom cursors when deleting smiley images. + // See: #13299 + var deleteHandler = dojo.hitch(this, function(){ + var editor = this.editor; + // have to use timers here because the event has to happen + // (bubble), then we can poke the dom. + setTimeout(function(){ + if(editor.editNode){ + dojo.style(editor.editNode, "opacity", "0.99"); + // Allow it to apply, then undo it to trigger cleanup of those + // phantoms. + setTimeout(function(){if(editor.editNode) { dojo.style(editor.editNode, "opacity", "");} }, 0); + } + }, 0); + return true; + }) + this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + this.editor.addKeyHandler(dojo.keys.DELETE, false, false, deleteHandler); + this.editor.addKeyHandler(dojo.keys.BACKSPACE, false, false, deleteHandler); + })); + } + }, + + _preFilterEntities: function(/*String content passed in*/ value){ + // summary: + // A function to filter out emoticons into their UTF-8 character form + // displayed in the editor. It gets registered with the preFilters + // of the editor. + // tags: + // private. + // + // + return value.replace(/\[([^\]]*)\]/g, dojo.hitch(this, this._decode)); + }, + + _postFilterEntities: function(/*String content passed in*/ value){ + // summary: + // A function to filter out emoticons into encoded form so they + // are properly displayed in the editor. It gets registered with the + // postFilters of the editor. + // tags: + // private. + return value.replace(/]*>/gi, dojo.hitch(this, this._encode)); + }, + + _decode: function(str, ascii){ + // summary: + // Pre-filter for editor to convert strings like [:-)] into an of the corresponding smiley + var emoticon = dojox.editor.plugins.Emoticon.fromAscii(ascii); + return emoticon ? emoticon.imgHtml(this.emoticonImageClass) : str; + }, + + _encode: function(str){ + // summary: + // Post-filter for editor to convert nodes of smileys into strings like [:-)] + + // Each node has an alt tag with it's ascii representation, so just use that. + // TODO: wouldn't this be easier as a postDomFilter ? + if(str.search(this.emoticonImageRegexp) > -1){ + return this.emoticonMarker.charAt(0) + str.replace(/(]*)alt="([^"]*)"([^>]*>)/, "$2") + this.emoticonMarker.charAt(1); + } + else{ + return str; + } + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + if(o.args.name === "smiley"){ + o.plugin = new dojox.editor.plugins.Smiley(); + } +}); + +return dojox.editor.plugins.Smiley; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/SpellCheck.js new file mode 100644 index 0000000..7c6923c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/SpellCheck.js @@ -0,0 +1,1408 @@ +dojo.provide("dojox.editor.plugins.SpellCheck"); + +dojo.require("dijit._base.popup"); +dojo.require("dijit._Widget"); +dojo.require("dijit._Templated"); +dojo.require("dijit.form.TextBox"); +dojo.require("dijit.form.DropDownButton"); +dojo.require("dijit.TooltipDialog"); +dojo.require("dijit.form.MultiSelect"); +dojo.require("dojo.io.script"); +dojo.require("dijit.Menu"); + +dojo.requireLocalization("dojox.editor.plugins", "SpellCheck"); + +dojo.experimental("dojox.editor.plugins.SpellCheck"); + +dojo.declare("dojox.editor.plugins._spellCheckControl", [dijit._Widget, dijit._Templated], { + // summary: + // The widget that is used for the UI of the batch spelling check + + widgetsInTemplate: true, + + templateString: + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "
                                  " + + "
                                  " + + "" + + "" + + "" + + "
                                  " + + "
                                  ", + + /*************************************************************************/ + /** Framework Methods **/ + /*************************************************************************/ + constructor: function(){ + // Indicate if the textbox ignores the text change event of the textbox + this.ignoreChange = false; + // Indicate if the text of the textbox is changed or not + this.isChanged = false; + // Indicate if the dialog is open or not + this.isOpen = false; + // Indicate if the dialog can be closed + this.closable = true; + }, + + postMixInProperties: function(){ + this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_")); + this.textId = this.id + "_textBox"; + this.selectId = this.id + "_select"; + }, + + postCreate: function(){ + var select = this.suggestionSelect; + + // Customize multi-select to single select + dojo.removeAttr(select.domNode, "multiple"); + select.addItems = function(/*Array*/ items){ + // summary: + // Add items to the select widget + // items: + // An array of items be added to the select + // tags: + // public + var _this = this; + var o = null; + if(items && items.length > 0){ + dojo.forEach(items, function(item, i){ + o = dojo.create("option", {innerHTML: item, value: item}, _this.domNode); + if(i == 0){ + o.selected = true; + } + }); + } + }; + select.removeItems = function(){ + // summary: + // Remove all the items within the select widget + // tags: + // public + dojo.empty(this.domNode); + }; + + select.deselectAll = function(){ + // summary: + // De-select all the selected items + // tags: + // public + this.containerNode.selectedIndex = -1; + }; + + // Connect up all the controls with their event handler + this.connect(this, "onKeyPress", "_cancel"); + this.connect(this.unfoundTextBox, "onKeyPress", "_enter"); + this.connect(this.unfoundTextBox, "onChange", "_unfoundTextBoxChange"); + this.connect(this.suggestionSelect, "onKeyPress", "_enter"); + this.connect(this.skipButton, "onClick", "onSkip"); + this.connect(this.skipAllButton, "onClick", "onSkipAll"); + this.connect(this.toDicButton, "onClick", "onAddToDic"); + this.connect(this.replaceButton, "onClick", "onReplace"); + this.connect(this.replaceAllButton, "onClick", "onReplaceAll"); + this.connect(this.cancelButton, "onClick", "onCancel"); + }, + + /*************************************************************************/ + /** Public Methods **/ + /*************************************************************************/ + + onSkip: function(){ + // Stub for the click event of the skip button. + }, + + onSkipAll: function(){ + // Stub for the click event of the skipAll button. + }, + + onAddToDic: function(){ + // Stub for the click event of the toDic button. + }, + + onReplace: function(){ + // Stub for the click event of the replace button. + }, + + onReplaceAll: function(){ + // Stub for the click event of the replaceAll button. + }, + + onCancel: function(){ + // Stub for the click event of the cancel button. + }, + + onEnter: function(){ + // Stub for the enter event of the unFound textbox. + }, + + focus: function(){ + // summary: + // Set the focus of the control + // tags: + // public + this.unfoundTextBox.focus(); + }, + + /*************************************************************************/ + /** Private Methods **/ + /*************************************************************************/ + + _cancel: function(/*Event*/ evt){ + // summary: + // Handle the cancel event + // evt: + // The event object + // tags: + // private + if(evt.keyCode == dojo.keys.ESCAPE){ + this.onCancel(); + dojo.stopEvent(evt); + } + }, + + _enter: function(/*Event*/ evt){ + // summary: + // Handle the enter event + // evt: + // The event object + // tags: + // private + if(evt.keyCode == dojo.keys.ENTER){ + this.onEnter(); + dojo.stopEvent(evt); + } + }, + + _unfoundTextBoxChange: function(){ + // summary: + // Indicate that the Not Found textbox is changed or not + // tags: + // private + var id = this.textId + "_label"; + if(!this.ignoreChange){ + dojo.byId(id).innerHTML = this["replaceWith"]; + this.isChanged = true; + this.suggestionSelect.deselectAll(); + }else{ + dojo.byId(id).innerHTML = this["unfound"]; + } + }, + + _setUnfoundWordAttr: function(/*String*/ value){ + // summary: + // Set the value of the Not Found textbox + // value: + // The value of the Not Found textbox + // tags: + // private + value = value || ""; + this.unfoundTextBox.set("value", value); + }, + + _getUnfoundWordAttr: function(){ + // summary: + // Get the value of the Not Found textbox + // tags: + // private + return this.unfoundTextBox.get("value"); + }, + + _setSuggestionListAttr: function(/*Array*/ values){ + // summary: + // Set the items of the suggestion list + // values: + // The list of the suggestion items + // tags: + // private + var select = this.suggestionSelect; + values = values || []; + select.removeItems(); + select.addItems(values); + }, + + _getSelectedWordAttr: function(){ + // summary: + // Get the suggested word. + // If the select box is selected, the value is the selected item's value, + // else the value the the textbox's value + // tags: + // private + var selected = this.suggestionSelect.getSelected(); + if(selected && selected.length > 0){ + return selected[0].value; + }else{ + return this.unfoundTextBox.get("value"); + } + }, + + _setDisabledAttr: function(/*Boolean*/ disabled){ + // summary: + // Enable/disable the control + // tags: + // private + this.skipButton.set("disabled", disabled); + this.skipAllButton.set("disabled", disabled); + this.toDicButton.set("disabled", disabled); + this.replaceButton.set("disabled", disabled); + this.replaceAllButton.set("disabled", disabled); + }, + + _setInProgressAttr: function(/*Boolean*/ show){ + // summary: + // Set the visibility of the progress icon + // tags: + // private + var id = this.id + "_progressIcon", + cmd = show ? "removeClass" : "addClass"; + dojo[cmd](id, "hidden"); + } +}); + +dojo.declare("dojox.editor.plugins._SpellCheckScriptMultiPart", null, { + // summary: + // It is a base network service component. It transfers text to a remote service port + // with cross domain ability enabled. It can split text into specified pieces and send + // them out one by one so that it can handle the case when the service has a limitation of + // the capability. + // The encoding is UTF-8. + + // ACTION [public const] String + // Actions for the server-side piece to take + ACTION_QUERY: "query", + ACTION_UPDATE: "update", + + // callbackHandle [public] String + // The callback name of JSONP + callbackHandle: "callback", + + // maxBufferLength [public] Number + // The max number of charactors that send to the service at one time. + maxBufferLength: 100, + + // delimiter [public] String + // A token that is used to identify the end of a word (a complete unit). It prevents the service from + // cutting a single word into two parts. For example: + // "Dojo toolkit is a ajax framework. It helps the developers buid their web applications." + // Without the delimiter, the sentence might be split into the follow pieces which is absolutely + // not the result we want. + // "Dojo toolkit is a ajax fram", "ework It helps the developers bu", "id their web applications" + // Having " " as the delimiter, we get the following correct pieces. + // "Dojo toolkit is a ajax framework", " It helps the developers buid", " their web applications" + delimiter: " ", + + // label [public] String + // The leading label of the JSON response. The service will return the result like this: + // {response: [ + // { + // text: "teest", + // suggestion: ["test","treat"] + // } + // ]} + label: "response", + + // _timeout [private] Number + // Set JSONP timeout period + _timeout: 30000, + SEC: 1000, + + constructor: function(){ + // The URL of the target service + this.serviceEndPoint = ""; + // The queue that holds all the xhr request + this._queue = []; + // Indicate if the component is still working. For example, waiting for collecting all + // the responses from the service + this.isWorking = false; + // The extra command passed to the service + this.exArgs = null; + // The counter that indicate if all the responses are collected to + // assemble the final result. + this._counter = 0; + }, + + send: function(/*String*/ content, /*String?*/ action){ + // summary: + // Send the content to the service port with the specified action + // content: + // The text to be sent + // action: + // The action the service should take. Current support actions are + // ACTION_QUERY and ACTION_UPDATE + // tags: + // public + var _this = this, + dt = this.delimiter, + mbl = this.maxBufferLength, + label = this.label, + serviceEndPoint = this.serviceEndPoint, + callbackParamName = this.callbackHandle, + comms = this.exArgs, + timeout = this._timeout, + l = 0, r = 0; + + // Temparary list that holds the result returns from the service, which will be + // assembled into a completed one. + if(!this._result) { + this._result = []; + } + + action = action || this.ACTION_QUERY; + + var batchSend = function(){ + var plan = []; + var plannedSize = 0; + if(content && content.length > 0){ + _this.isWorking = true; + var len = content.length; + do{ + l = r + 1; + if((r += mbl) > len){ + r = len; + }else{ + // If there is no delimiter (emplty string), leave the right boundary where it is. + // Else extend the right boundary to the first occurance of the delimiter if + // it doesn't meet the end of the content. + while(dt && content.charAt(r) != dt && r <= len){ + r++; + } + } + // Record the information of the text slices + plan.push({l: l, r: r}); + plannedSize++; + }while(r < len); + + dojo.forEach(plan, function(item, index){ + var jsonpArgs = { + url: serviceEndPoint, + action: action, + timeout: timeout, + callbackParamName: callbackParamName, + handle: function(response, ioArgs){ + if(++_this._counter <= this.size && !(response instanceof Error) && + response[label] && dojo.isArray(response[label])){ + // Collect the results + var offset = this.offset; + dojo.forEach(response[label], function(item){ + item.offset += offset; + }); + // Put the packages in order + _this._result[this.number]= response[label]; + } + if(_this._counter == this.size){ + _this._finalizeCollection(this.action); + _this.isWorking = false; + if(_this._queue.length > 0){ + // Call the next request waiting in queue + (_this._queue.shift())(); + } + } + } + }; + jsonpArgs.content = comms ? dojo.mixin(comms, {action: action, content: content.substring(item.l - 1, item.r)}): + {action: action, content: content.substring(item.l - 1, item.r)}; + jsonpArgs.size = plannedSize; + jsonpArgs.number = index; // The index of the current package + jsonpArgs.offset = item.l - 1; + dojo.io.script.get(jsonpArgs); + }); + } + }; + + if(!_this.isWorking){ + batchSend(); + }else{ + _this._queue.push(batchSend); + } + }, + + _finalizeCollection: function(action){ + // summary: + // Assemble the responses into one result. + // action: + // The action token + // tags: + // private + var result = this._result, + len = result.length; + // Turn the result into a one-dimensional array + for(var i = 0; i < len; i++){ + var temp = result.shift(); + result = result.concat(temp); + } + if(action == this.ACTION_QUERY){ + this.onLoad(result); + } + this._counter = 0; + this._result = []; + }, + + onLoad: function(/*String*/ data){ + // Stub method for a sucessful call + }, + + setWaitingTime: function(/*Number*/ seconds){ + this._timeout = seconds * this.SEC; + } +}); + +dojo.declare("dojox.editor.plugins.SpellCheck", [dijit._editor._Plugin], { + // summary: + // This plugin provides a spelling check cabability for the editor. + + // url [public] String + // The url of the spelling check service + url: "", + + // bufferLength [public] Number + // The max length of each XHR request. It is used to divide the large + // text into pieces so that the server-side piece can hold. + bufferLength: 100, + + // interactive [public] Boolean + // Indicate if the interactive spelling check is enabled + interactive: false, + + // timeout [public] Number + // The minutes to waiting for the response. The default value is 30 seconds. + timeout: 30, + + // button [protected] dijit.form.DropDownButton + // The button displayed on the editor's toolbar + button: null, + + // _editor [private] dijit.Editor + // The reference to the editor the plug-in belongs to. + _editor: null, + + // exArgs [private] Object + // The object that holds all the parametes passed into the constructor + exArgs: null, + + // _cursorSpan [private] String + // The span that holds the current position of the cursor + _cursorSpan: + "", + + // _cursorSelector [private] String + // The CSS selector of the cursor span + _cursorSelector: + "cursorPlaceHolder", + + // _incorrectWordsSpan [private] String + // The wrapper that marks the incorrect words + _incorrectWordsSpan: + "${text}", + + // _ignoredIncorrectStyle [private] Object + // The style of the ignored incorrect words + _ignoredIncorrectStyle: + {"cursor": "inherit", "borderBottom": "none", "backgroundColor": "transparent"}, + + // _normalIncorrectStyle [private] Object + // The style of the marked incorrect words. + _normalIncorrectStyle: + {"cursor": "pointer", "borderBottom": "1px dotted red", "backgroundColor": "yellow"}, + + // _highlightedIncorrectStyle [private] Object + // The style of the highlighted incorrect words + _highlightedIncorrectStyle: + {"borderBottom": "1px dotted red", "backgroundColor": "#b3b3ff"}, + + // _selector [private] String + // An empty CSS class that identifies the incorrect words + _selector: "incorrectWordPlaceHolder", + + // _maxItemNumber [private] Number + // The max number of the suggestion list items + _maxItemNumber: 3, + + /*************************************************************************/ + /** Framework Methods **/ + /*************************************************************************/ + + constructor: function(){ + // A list that holds all the spans that contains the incorrect words + // It is used to select/replace the specified word. + this._spanList = []; + // The cache that stores all the words. It looks like the following + // { + // "word": [], + // "wrd": ["word", "world"] + // } + this._cache = {}; + // Indicate if this plugin is enabled or not + this._enabled = true; + // The index of the _spanList + this._iterator = 0; + }, + + setEditor: function(/*dijit.Editor*/ editor){ + this._editor = editor; + this._initButton(); + this._setNetwork(); + this._connectUp(); + }, + + /*************************************************************************/ + /** Private Methods **/ + /*************************************************************************/ + + _initButton: function(){ + // summary: + // Initialize the button displayed on the editor's toolbar + // tags: + // private + var _this = this, + strings = (this._strings = dojo.i18n.getLocalization("dojox.editor.plugins", "SpellCheck")), + dialogPane = (this._dialog = new dijit.TooltipDialog()); + + dialogPane.set("content", (this._dialogContent = new dojox.editor.plugins._spellCheckControl({ + unfound: strings["unfound"], + skip: strings["skip"], + skipAll: strings["skipAll"], + toDic: strings["toDic"], + suggestions: strings["suggestions"], + replaceWith: strings["replaceWith"], + replace: strings["replace"], + replaceAll: strings["replaceAll"], + cancel: strings["cancel"] + }))); + + this.button = new dijit.form.DropDownButton({ + label: strings["widgetLabel"], + showLabel: false, + iconClass: "dijitEditorSpellCheckIcon", + dropDown: dialogPane, + id: dijit.getUniqueId(this.declaredClass.replace(/\./g,"_")) + "_dialogPane", + closeDropDown: function(focus){ + // Determine if the dialog can be closed + if(_this._dialogContent.closable){ + _this._dialogContent.isOpen = false; + if(dojo.isIE){ + var pos = _this._iterator, + list = _this._spanList; + if(pos < list.length && pos >=0 ){ + dojo.style(list[pos], _this._normalIncorrectStyle); + } + } + if(this._opened){ + dijit.popup.close(this.dropDown); + if(focus){ this.focus(); } + this._opened = false; + this.state = ""; + } + } + } + }); + _this._dialogContent.isOpen = false; + + dialogPane.domNode.setAttribute("aria-label", this._strings["widgetLabel"]); + }, + + _setNetwork: function(){ + // summary: + // Set up the underlying network service + // tags: + // private + var comms = this.exArgs; + + if(!this._service){ + var service = (this._service = new dojox.editor.plugins._SpellCheckScriptMultiPart()); + service.serviceEndPoint = this.url; + service.maxBufferLength = this.bufferLength; + service.setWaitingTime(this.timeout); + // Pass the other arguments directly to the service + if(comms){ + delete comms.name; + delete comms.url; + delete comms.interactive; + delete comms.timeout; + service.exArgs = comms; + } + } + }, + + _connectUp: function(){ + // summary: + // Connect up all the events with their event handlers + // tags: + // private + var editor = this._editor, + cont = this._dialogContent; + + this.connect(this.button, "set", "_disabled"); + this.connect(this._service, "onLoad", "_loadData"); + this.connect(this._dialog, "onOpen", "_openDialog"); + this.connect(editor, "onKeyPress", "_keyPress"); + this.connect(editor, "onLoad", "_submitContent"); + this.connect(cont, "onSkip", "_skip"); + this.connect(cont, "onSkipAll", "_skipAll"); + this.connect(cont, "onAddToDic", "_add"); + this.connect(cont, "onReplace", "_replace"); + this.connect(cont, "onReplaceAll", "_replaceAll"); + this.connect(cont, "onCancel", "_cancel"); + this.connect(cont, "onEnter", "_enter"); + + editor.contentPostFilters.push(this._spellCheckFilter); // Register the filter + dojo.publish(dijit._scopeName + ".Editor.plugin.SpellCheck.getParser", [this]); // Get the language parser + if(!this.parser){ + console.error("Can not get the word parser!"); + } + }, + + /*************************************************************************/ + /** Event Handlers **/ + /*************************************************************************/ + + _disabled: function(name, disabled){ + // summary: + // When the plugin is disabled (the button is disabled), reset all to their initial status. + // If the interactive mode is on, check the content once it is enabled. + // name: + // Command name + // disabled: + // Command argument + // tags: + // private + if(name == "disabled"){ + if(disabled){ + this._iterator = 0; + this._spanList = []; + }else if(this.interactive && !disabled && this._service){ + this._submitContent(true); + } + this._enabled = !disabled; + } + }, + + _keyPress: function(evt){ + // summary: + // The handler of the onKeyPress event of the editor + // tags: + // private + if(this.interactive){ + var v = 118, V = 86, + cc = evt.charCode; + if(!evt.altKey && cc == dojo.keys.SPACE){ + this._submitContent(); + }else if((evt.ctrlKey && (cc == v || cc == V)) || (!evt.ctrlKey && evt.charCode)){ + this._submitContent(true); + } + } + }, + + _loadData: function(/*Array*/ data){ + // summary: + // Apply the query result to the content + // data: + // The result of the query + // tags: + // private + var cache = this._cache, + html = this._editor.get("value"), + cont = this._dialogContent; + + this._iterator = 0; + + // Update the local cache + dojo.forEach(data, function(d){ + cache[d.text] = d.suggestion; + cache[d.text].correct = false; + }); + + if(this._enabled){ + // Mark incorrect words + cont.closable = false; + this._markIncorrectWords(html, cache); + cont.closable = true; + + if(this._dialogContent.isOpen){ + this._iterator = -1; + this._skip(); + } + } + }, + + _openDialog: function(){ + // summary: + // The handler of the onOpen event + var cont = this._dialogContent; + + // Clear dialog content and disable it first + cont.ignoreChange = true; + cont.set("unfoundWord", ""); + cont.set("suggestionList", null); + cont.set("disabled", true); + cont.set("inProgress", true); + + cont.isOpen = true; // Indicate that the dialog is open + cont.closable = false; + + this._submitContent(); + + cont.closable = true; + }, + + _skip: function(/*Event?*/ evt, /*Boolean?*/ noUpdate){ + // summary: + // Ignore this word and move to the next unignored one. + // evt: + // The event object + // noUpdate: + // Indicate whether to update the status of the span list or not + // tags: + // private + var cont = this._dialogContent, + list = this._spanList || [], + len = list.length, + iter = this._iterator; + + cont.closable = false; + cont.isChanged = false; + cont.ignoreChange = true; + + // Skip the current word + if(!noUpdate && iter >= 0 && iter < len){ + this._skipWord(iter); + } + + // Move to the next + while(++iter < len && list[iter].edited == true){ /* do nothing */} + if(iter < len){ + this._iterator = iter; + this._populateDialog(iter); + this._selectWord(iter); + }else{ + // Reaches the end of the list + this._iterator = -1; + cont.set("unfoundWord", this._strings["msg"]); + cont.set("suggestionList", null); + cont.set("disabled", true); + cont.set("inProgress", false); + } + + setTimeout(function(){ + // When moving the focus out of the iframe in WebKit browsers, we + // need to focus something else first. So the textbox + // can be focused correctly. + if(dojo.isWebKit) { cont.skipButton.focus(); } + cont.focus(); + cont.ignoreChange = false; + cont.closable = true; + }, 0); + }, + + _skipAll: function(){ + // summary: + // Ignore all the same words + // tags: + // private + this._dialogContent.closable = false; + this._skipWordAll(this._iterator); + this._skip(); + }, + + _add: function(){ + // summary: + // Add the unrecognized word into the dictionary + // tags: + // private + var cont = this._dialogContent; + + cont.closable = false; + cont.isOpen = true; + this._addWord(this._iterator, cont.get("unfoundWord")); + this._skip(); + }, + + _replace: function(){ + // summary: + // Replace the incorrect word with the selected one, + // or the one the user types in the textbox + // tags: + // private + var cont = this._dialogContent, + iter = this._iterator, + targetWord = cont.get("selectedWord"); + + cont.closable = false; + this._replaceWord(iter, targetWord); + this._skip(null, true); + }, + + _replaceAll: function(){ + // summary: + // Replace all the words with the same text + // tags: + // private + var cont = this._dialogContent, + list = this._spanList, + len = list.length, + word = list[this._iterator].innerHTML.toLowerCase(), + targetWord = cont.get("selectedWord"); + + cont.closable = false; + for(var iter = 0; iter < len; iter++){ + // If this word is not ignored and is the same as the source word, + // replace it. + if(list[iter].innerHTML.toLowerCase() == word){ + this._replaceWord(iter, targetWord); + } + } + + this._skip(null, true); + }, + + _cancel: function(){ + // summary: + // Cancel this check action + // tags: + // private + this._dialogContent.closable = true; + this._editor.focus(); + }, + + _enter: function(){ + // summary: + // Handle the ENTER event + // tags: + // private + if(this._dialogContent.isChanged){ + this._replace(); + }else{ + this._skip(); + } + }, + + /*************************************************************************/ + /** Utils **/ + /*************************************************************************/ + + _query: function(/*String*/ html){ + // summary: + // Send the query text to the service. The query text is a string of words + // separated by space. + // html: + // The html value of the editor + // tags: + // private + var service = this._service, + cache = this._cache, + words = this.parser.parseIntoWords(this._html2Text(html)) || []; + var content = []; + dojo.forEach(words, function(word){ + word = word.toLowerCase(); + if(!cache[word]){ + // New word that need to be send to the server side for check + cache[word] = []; + cache[word].correct = true; + content.push(word); + } + }); + if(content.length > 0){ + service.send(content.join(" ")); + }else if(!service.isWorking){ + this._loadData([]); + } + }, + + _html2Text: function(html){ + // summary: + // Substitute the tag with white charactors so that the server + // can easily process the text. For example: + // "
                                  Hello, world!" ==> + // " Hello, world! " + // html: + // The html code + // tags: + // private + var text = [], + isTag = false, + len = html ? html.length : 0; + + for(var i = 0; i < len; i++){ + if(html.charAt(i) == "<"){ isTag = true; } + if(isTag == true){ + text.push(" "); + }else{ + text.push(html.charAt(i)); + } + if(html.charAt(i) == ">"){ isTag = false; } + + } + return text.join(""); + }, + + _getBookmark: function(/*String*/ eValue){ + // summary: + // Get the cursor position. It is the index of the characters + // where the cursor is. + // eValue: + // The html value of the editor + // tags: + // private + var ed = this._editor, + cp = this._cursorSpan; + ed.execCommand("inserthtml", cp); + var nv = ed.get("value"), + index = nv.indexOf(cp), + i = -1; + while(++i < index && eValue.charAt(i) == nv.charAt(i)){ /* do nothing */} + return i; + }, + + _moveToBookmark: function(){ + // summary: + // Move to the position when the cursor was. + // tags: + // private + var ed = this._editor, + cps = dojo.withGlobal(ed.window, "query", dojo, ["." + this._cursorSelector]), + cursorSpan = cps && cps[0]; + // Find the cursor place holder + if(cursorSpan){ + ed._sCall("selectElement", [cursorSpan]); + ed._sCall("collapse", [true]); + var parent = cursorSpan.parentNode; + if(parent){ parent.removeChild(cursorSpan); } + } + }, + + _submitContent: function(/*Boolean?*/ delay){ + // summary: + // Functions to submit the content of the editor + // delay: + // Indicate if the action is taken immediately or not + // tags: + // private + if(delay){ + var _this = this, + interval = 3000; + if(this._delayHandler){ + clearTimeout(this._delayHandler); + this._delayHandler = null; + } + setTimeout(function(){ _this._query(_this._editor.get("value")); }, interval); + }else{ + this._query(this._editor.get("value")); + } + }, + + _populateDialog: function(index){ + // summary: + // Populate the content of the dailog + // index: + // The idex of the span list + // tags: + // private + var list = this._spanList, + cache = this._cache, + cont = this._dialogContent; + + cont.set("disabled", false); + if(index < list.length && list.length > 0){ + var word = list[index].innerHTML; + cont.set("unfoundWord", word); + cont.set("suggestionList", cache[word.toLowerCase()]); + cont.set("inProgress", false); + } + }, + + _markIncorrectWords: function(/*String*/ html, /*Object*/ cache){ + // summary: + // Mark the incorrect words and set up menus if available + // html: + // The html value of the editor + // cache: + // The local word cache + // tags: + // private + var _this = this, + parser = this.parser, + editor = this._editor, + spanString = this._incorrectWordsSpan, + nstyle = this._normalIncorrectStyle, + selector = this._selector, + words = parser.parseIntoWords(this._html2Text(html).toLowerCase()), + indices = parser.getIndices(), + bookmark = this._cursorSpan, + bmpos = this._getBookmark(html), + spanOffset = "".length, + bmMarked = false, + cArray = html.split(""), + spanList = null; + + // Mark the incorrect words and cursor position + for(var i = words.length - 1; i >= 0; i--){ + var word = words[i]; + if(cache[word] && !cache[word].correct){ + var offset = indices[i], + len = words[i].length, + end = offset + len; + if(end <= bmpos && !bmMarked){ + cArray.splice(bmpos, 0, bookmark); + bmMarked = true; + } + cArray.splice(offset, len, dojo.string.substitute(spanString, {text: html.substring(offset, end)})); + if(offset < bmpos && bmpos < end && !bmMarked){ + var tmp = cArray[offset].split(""); + tmp.splice(spanOffset + bmpos - offset, 0, bookmark); + cArray[offset] = tmp.join(""); + bmMarked = true; + } + } + } + if(!bmMarked){ + cArray.splice(bmpos, 0, bookmark); + bmMarked = true; + } + + editor.set("value", cArray.join("")); + editor._cursorToStart = false; // HACK! But really necessary here. + + this._moveToBookmark(); + + // Get the incorrect words + spanList = this._spanList = dojo.withGlobal(editor.window, "query", dojo, ["." + this._selector]); + dojo.forEach(spanList, function(span, i){ span.id = selector + i; }); + + // Set them to the incorrect word style + if(!this.interactive){ delete nstyle.cursor; } + spanList.style(nstyle); + + if(this.interactive){ + // Build the context menu + if(_this._contextMenu){ + _this._contextMenu.uninitialize(); + _this._contextMenu = null; + } + _this._contextMenu = new dijit.Menu({ + targetNodeIds: [editor.iframe], + + bindDomNode: function(/*String|DomNode*/ node){ + // summary: + // Attach menu to given node + node = dojo.byId(node); + + var cn; // Connect node + + // Support context menus on iframes. Rather than binding to the iframe itself we need + // to bind to the node inside the iframe. + var iframe, win; + if(node.tagName.toLowerCase() == "iframe"){ + iframe = node; + win = this._iframeContentWindow(iframe); + cn = dojo.withGlobal(win, dojo.body); + }else{ + + // To capture these events at the top level, attach to , not . + // Otherwise right-click context menu just doesn't work. + cn = (node == dojo.body() ? dojo.doc.documentElement : node); + } + + + // "binding" is the object to track our connection to the node (ie, the parameter to bindDomNode()) + var binding = { + node: node, + iframe: iframe + }; + + // Save info about binding in _bindings[], and make node itself record index(+1) into + // _bindings[] array. Prefix w/_dijitMenu to avoid setting an attribute that may + // start with a number, which fails on FF/safari. + dojo.attr(node, "_dijitMenu" + this.id, this._bindings.push(binding)); + + // Setup the connections to monitor click etc., unless we are connecting to an iframe which hasn't finished + // loading yet, in which case we need to wait for the onload event first, and then connect + // On linux Shift-F10 produces the oncontextmenu event, but on Windows it doesn't, so + // we need to monitor keyboard events in addition to the oncontextmenu event. + var doConnects = dojo.hitch(this, function(cn){ + return [ + // TODO: when leftClickToOpen is true then shouldn't space/enter key trigger the menu, + // rather than shift-F10? + dojo.connect(cn, this.leftClickToOpen ? "onclick" : "oncontextmenu", this, function(evt){ + var target = evt.target, + strings = _this._strings; + // Schedule context menu to be opened unless it's already been scheduled from onkeydown handler + if(dojo.hasClass(target, selector) && !target.edited){ // Click on the incorrect word + dojo.stopEvent(evt); + + // Build the on-demand menu items + var maxNumber = _this._maxItemNumber, + id = target.id, + index = id.substring(selector.length), + suggestions = cache[target.innerHTML.toLowerCase()], + slen = suggestions.length; + + // Add the suggested words menu items + this.destroyDescendants(); + if(slen == 0){ + this.addChild(new dijit.MenuItem({ + label: strings["iMsg"], + disabled: true + })); + }else{ + for(var i = 0 ; i < maxNumber && i < slen; i++){ + this.addChild(new dijit.MenuItem({ + label: suggestions[i], + onClick: (function(){ + var idx = index, txt = suggestions[i]; + return function(){ + _this._replaceWord(idx, txt); + editor.focus(); + }; + })() + })); + } + } + + //Add the other action menu items + this.addChild(new dijit.MenuSeparator()); + this.addChild(new dijit.MenuItem({ + label: strings["iSkip"], + onClick: function(){ + _this._skipWord(index); + editor.focus(); + } + })); + this.addChild(new dijit.MenuItem({ + label: strings["iSkipAll"], + onClick: function(){ + _this._skipWordAll(index); + editor.focus(); + } + })); + this.addChild(new dijit.MenuSeparator()); + this.addChild(new dijit.MenuItem({ + label: strings["toDic"], + onClick: function(){ + _this._addWord(index); + editor.focus(); + } + })); + + this._scheduleOpen(target, iframe, {x: evt.pageX, y: evt.pageY}); + } + }), + dojo.connect(cn, "onkeydown", this, function(evt){ + if(evt.shiftKey && evt.keyCode == dojo.keys.F10){ + dojo.stopEvent(evt); + this._scheduleOpen(evt.target, iframe); // no coords - open near target node + } + }) + ]; + }); + binding.connects = cn ? doConnects(cn) : []; + + if(iframe){ + // Setup handler to [re]bind to the iframe when the contents are initially loaded, + // and every time the contents change. + // Need to do this b/c we are actually binding to the iframe's node. + // Note: can't use dojo.connect(), see #9609. + + binding.onloadHandler = dojo.hitch(this, function(){ + // want to remove old connections, but IE throws exceptions when trying to + // access the node because it's already gone, or at least in a state of limbo + + var win = this._iframeContentWindow(iframe); + cn = dojo.withGlobal(win, dojo.body); + binding.connects = doConnects(cn); + }); + if(iframe.addEventListener){ + iframe.addEventListener("load", binding.onloadHandler, false); + }else{ + iframe.attachEvent("onload", binding.onloadHandler); + } + } + } + }); + } + }, + + _selectWord: function(index){ + // summary: + // Select the incorrect word. Move to it and highlight it + // index: + // The index of the span list + // tags: + // private + var list = this._spanList, + win = this._editor.window; + + if(index < list.length && list.length > 0){ + dojo.withGlobal(win, "selectElement", dijit._editor.selection, [list[index]]); + dojo.withGlobal(win, "collapse", dijit._editor.selection, [true]); + this._findText(list[index].innerHTML, false, false); + if(dojo.isIE){ + // Because the selection in the iframe will be lost when the outer window get the + // focus, we need to mimic the highlight ourselves. + dojo.style(list[index], this._highlightedIncorrectStyle); + } + } + }, + + _replaceWord: function(index, text){ + // summary: + // Replace the word at the given index with the text + // index: + // The index of the span list + // text: + // The text to be replaced with + // tags: + // private + var list = this._spanList; + + list[index].innerHTML = text; + dojo.style(list[index], this._ignoredIncorrectStyle); + list[index].edited = true; + }, + + _skipWord: function(index){ + // summary: + // Skip the word at the index + // index: + // The index of the span list + // tags: + // private + var list = this._spanList; + + dojo.style(list[index], this._ignoredIncorrectStyle); + this._cache[list[index].innerHTML.toLowerCase()].correct = true; + list[index].edited = true; + }, + + _skipWordAll: function(index, /*String?*/word){ + // summary: + // Skip the all the word that have the same text as the word at the index + // or the given word + // index: + // The index of the span list + // word: + // If this argument is given, skip all the words that have the same text + // as the word + // tags: + // private + var list = this._spanList, + len = list.length; + word = word || list[index].innerHTML.toLowerCase(); + + for(var i = 0; i < len; i++){ + if(!list[i].edited && list[i].innerHTML.toLowerCase() == word){ + this._skipWord(i); + } + } + }, + + _addWord: function(index, /*String?*/word){ + // summary: + // Add the word at the index to the dictionary + // index: + // The index of the span list + // word: + // If this argument is given, add the word to the dictionary and + // skip all the words like it + // tags: + // private + var service = this._service; + service.send(word || this._spanList[index].innerHTML.toLowerCase(), service.ACTION_UPDATE); + this._skipWordAll(index, word); + }, + + _findText: function(/*String*/ txt, /*Boolean*/ caseSensitive, /*Boolean*/ backwards){ + // summary: + // This function invokes a find with specific options + // txt: String + // The text to locate in the document. + // caseSensitive: Boolean + // Whether or ot to search case-sensitively. + // backwards: Boolean + // Whether or not to search backwards in the document. + // tags: + // private. + // returns: + // Boolean indicating if the content was found or not. + var ed = this._editor, + win = ed.window, + found = false; + if(txt){ + if(win.find){ + found = win.find(txt, caseSensitive, backwards, false, false, false, false); + }else{ + var doc = ed.document; + if(doc.selection){ + /* IE */ + // Focus to restore position/selection, + // then shift to search from current position. + this._editor.focus(); + var txtRg = doc.body.createTextRange(); + var curPos = doc.selection?doc.selection.createRange():null; + if(curPos){ + if(backwards){ + txtRg.setEndPoint("EndToStart", curPos); + }else{ + txtRg.setEndPoint("StartToEnd", curPos); + } + } + var flags = caseSensitive?4:0; + if(backwards){ + flags = flags | 1; + } + //flags = flags | + found = txtRg.findText(txt,txtRg.text.length,flags); + if(found){ + txtRg.select(); + } + } + } + } + return found; + }, + + _spellCheckFilter: function(/*String*/ value){ + // summary: + // Filter out the incorrect word style so that the value of the edtior + // won't include the spans that wrap around the incorrect words + // value: + // The html value of the editor + // tags: + // private + var regText = /(.*?)<\/span>/g; + return value.replace(regText, "$1"); + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "spellcheck"){ + o.plugin = new dojox.editor.plugins.SpellCheck({ + url: ("url" in o.args) ? o.args.url : "", + interactive: ("interactive" in o.args) ? o.args.interactive : false, + bufferLength: ("bufferLength" in o.args) ? o.args.bufferLength: 100, + timeout: ("timeout" in o.args) ? o.args.timeout : 30, + exArgs: o.args + }); + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/StatusBar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/StatusBar.js new file mode 100755 index 0000000..ea93133 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/StatusBar.js @@ -0,0 +1,180 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojox/layout/ResizeHandle" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.StatusBar"); +dojo.declare("dojox.editor.plugins._StatusBar", [dijit._Widget, dijit._TemplatedMixin],{ + // templateString: String + // Template for the widget. Currently using table to get the alignment behavior and + // bordering I wanted. Would prefer not to use table, though. + templateString: '
                                  ' + + ''+ + '' + + '' + + '
                                   
                                  '+ + '', + + _getValueAttr: function(){ + // summary: + // Over-ride to get the value of the status bar from the widget. + // tags: + // Protected + return this.barContent.innerHTML; + }, + + _setValueAttr: function(str){ + // summary: + // Over-ride to set the value of the status bar from the widget. + // If no value is set, it is replaced with a non-blocking space. + // str: String + // The string to set as the status bar content. + // tags: + // protected + if(str){ + str = dojo.trim(str); + if(!str){ + str = " "; + } + }else{ + str = " "; + } + this.barContent.innerHTML = str; + } +}); + +dojo.declare("dojox.editor.plugins.StatusBar",dijit._editor._Plugin,{ + // summary: + // This plugin provides StatusBar cabability to the editor. + // Basically a footer bar where status can be published. It also + // puts a resize handle on the status bar, allowing you to resize the + // editor via mouse. + + // statusBar: [protected] + // The status bar and resizer. + statusBar: null, + + // resizer: [public] Boolean + // Flag indicating that a resizer should be shown or not. Default is true. + // There are cases (such as using center pane border container to autoresize the editor + // That a resizer is not valued. + resizer: true, + + setEditor: function(editor){ + // summary: + // Over-ride for the setting of the editor. + // editor: Object + // The editor to configure for this plugin to use. + this.editor = editor; + this.statusBar = new dojox.editor.plugins._StatusBar(); + if(this.resizer){ + this.resizeHandle = new dojox.layout.ResizeHandle({targetId: this.editor, activeResize: true}, this.statusBar.handle); + this.resizeHandle.startup(); + }else{ + dojo.style(this.statusBar.handle.parentNode, "display", "none"); + } + var pos = null; + if(editor.footer.lastChild){ + pos = "after"; + } + dojo.place(this.statusBar.domNode, editor.footer.lastChild || editor.footer, pos); + this.statusBar.startup(); + this.editor.statusBar = this; + + // Register a pub-sub event to listen for status bar messages, in addition to being available off + // the editor as a property 'statusBar' + this._msgListener = dojo.subscribe(this.editor.id + "_statusBar", dojo.hitch(this, this._setValueAttr)); + }, + + _getValueAttr: function(){ + // summary: + // Over-ride to get the value of the status bar from the widget. + // tags: + // protected + return this.statusBar.get("value"); + }, + + _setValueAttr: function(str){ + // summary: + // Over-ride to set the value of the status bar from the widget. + // If no value is set, it is replaced with a non-blocking space. + // str: String + // The String value to set in the bar. + // tags: + // protected + this.statusBar.set("value", str); + }, + + set: function(attr, val){ + // summary: + // Quick and dirty implementation of 'set' pattern + // attr: + // The attribute to set. + // val: + // The value to set it to. + if(attr){ + var fName = "_set" + attr.charAt(0).toUpperCase() + attr.substring(1, attr.length) + "Attr"; + if(dojo.isFunction(this[fName])){ + this[fName](val); + }else{ + this[attr] = val; + } + } + }, + + get: function(attr){ + // summary: + // Quick and dirty implementation of 'get' pattern + // attr: + // The attribute to get. + if(attr){ + var fName = "_get" + attr.charAt(0).toUpperCase() + attr.substring(1, attr.length) + "Attr"; + var f = this[fName]; + if(dojo.isFunction(f)){ + return this[fName](); + }else{ + return this[attr]; + } + } + return null; + }, + + destroy: function(){ + // summary: + // Over-ride to clean up the breadcrumb toolbar. + if(this.statusBar){ + this.statusBar.destroy(); + delete this.statusBar; + } + if(this.resizeHandle){ + this.resizeHandle.destroy(); + delete this.resizeHandle; + } + if(this._msgListener){ + dojo.unsubscribe(this._msgListener); + delete this._msgListener; + } + delete this.editor.statusBar; + } +}); + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "statusbar"){ + var resizer = ("resizer" in o.args)?o.args.resizer:true; + o.plugin = new dojox.editor.plugins.StatusBar({resizer: resizer}); + } +}); + +return dojox.editor.plugins.StatusBar; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/TablePlugins.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/TablePlugins.js new file mode 100644 index 0000000..0743d75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/TablePlugins.js @@ -0,0 +1,1223 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_base/popup", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_WidgetsInTemplateMixin", + "dijit/Menu", + "dijit/MenuItem", + "dijit/MenuSeparator", + "dijit/TooltipDialog", + "dijit/form/Button", + "dijit/form/DropDownButton", + "dijit/Dialog", + "dijit/form/TextBox", + "dijit/form/FilteringSelect", + "dijit/popup", + "dijit/_editor/_Plugin", + "dijit/_editor/range", + "dijit/_editor/selection", + "dijit/ColorPalette", + "dojox/widget/ColorPicker", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/TableDialog" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.TablePlugins"); + +// summary: +// A series of plugins that give the Editor the ability to create and edit +// HTML tables. See the end of this document for all avaiable plugins +// and dojox/editorPlugins/tests/editorTablePlugs.html for an example +// +// example: +// |
                                  +// | Editor text is here +// |
                                  +// +// TODO: +// Currently not supporting merging or splitting cells +// +// FIXME: Undo is very buggy, and therefore unimeplented in all browsers +// except IE - which itself has only been lightly tested. +// +// FIXME: Selecting multiple table cells in Firefox looks to be impossible. +// This affect the 'colorTableCell' plugin. Cells can still be +// colored individually or in rows. + +dojo.declare("dojox.editor.plugins._TableHandler", dijit._editor._Plugin,{ + // summary: + // A global object that handles common tasks for all the plugins. Since + // there are several plugins that are all calling common methods, it's preferable + // that they call a centralized location that either has a set variable or a + // timeout to only repeat code-heavy calls when necessary. + // + tablesConnected:false, + currentlyAvailable: false, + alwaysAvailable:false, + availableCurrentlySet:false, + initialized:false, + tableData: null, + shiftKeyDown:false, + editorDomNode: null, + undoEnabled: true, //Using custom undo for all browsers. + refCount: 0, + + doMixins: function(){ + + dojo.mixin(this.editor,{ + getAncestorElement: function(tagName){ + return dojo.withGlobal(this.window, "getAncestorElement",dijit._editor.selection, [tagName]); + }, + hasAncestorElement: function(tagName){ + return dojo.withGlobal(this.window, "hasAncestorElement",dijit._editor.selection, [tagName]); + }, + selectElement: function(elem){ + dojo.withGlobal(this.window, "selectElement",dijit._editor.selection, [elem]); + }, + byId: function(id){ + return dojo.withGlobal(this.window, "byId", dojo, [id]); + }, + query: function(arg, scope, returnFirstOnly){ + // this shortcut is dubious - not sure scoping is necessary + var ar = dojo.withGlobal(this.window, "query", dojo, [arg, scope]); + return (returnFirstOnly) ? ar[0] : ar; + } + }); + + }, + initialize: function(editor){ + // summary: + // Initialize the global handler upon a plugin's first instance of setEditor + // + + // All plugins will attempt initialization. We only need to do so once. + // But keep track so that it is cleaned up when all usage of it for an editor has + // been removed. + this.refCount++; + + // Turn on custom undo for all. + editor.customUndo = true; + + if(this.initialized){ return; } + + this.initialized = true; + this.editor = editor; + + this.editor._tablePluginHandler = this; + + //Editor loads async, can't assume doc is ready yet. So, use the deferred of the + //editor to init at the right time. + editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + this.editorDomNode = this.editor.editNode || this.editor.iframe.document.body.firstChild; + + // RichText should have a mouseup connection to recognize drag-selections + // Example would be selecting multiple table cells + this._myListeners = []; + this._myListeners.push(dojo.connect(this.editorDomNode , "mouseup", this.editor, "onClick")); + this._myListeners.push(dojo.connect(this.editor, "onDisplayChanged", this, "checkAvailable")); + this._myListeners.push(dojo.connect(this.editor, "onBlur", this, "checkAvailable")); + this.doMixins(); + this.connectDraggable(); + })); + }, + + getTableInfo: function(forceNewData){ + // summary: + // Gets the table in focus + // Collects info on the table - see return params + // + if(forceNewData){ this._tempStoreTableData(false); } + if(this.tableData){ + // tableData is set for a short amount of time, so that all + // plugins get the same return without doing the method over + //console.log("returning current tableData:", this.tableData); + return this.tableData; + } + var tr, trs, td, tds, tbl, cols, tdIndex, trIndex; + + td = this.editor.getAncestorElement("td"); + if(td){ tr = td.parentNode; } + + tbl = this.editor.getAncestorElement("table"); + //console.log("td:", td);console.log("tr:", tr);console.log("tbl:", tbl) + + tds = dojo.query("td", tbl); + tds.forEach(function(d, i){ + if(td==d){tdIndex = i;} + }); + trs = dojo.query("tr", tbl); + trs.forEach(function(r, i){ + if(tr==r){trIndex = i;} + }); + cols = tds.length/trs.length; + var o = { + tbl:tbl, // focused table + td:td, // focused TD + tr:tr, // focused TR + trs:trs, // rows + tds:tds, // cells + rows:trs.length,// row amount + cols:cols, // column amount + tdIndex:tdIndex,// index of focused cell + trIndex:trIndex, // index of focused row + colIndex:tdIndex%cols + }; + //console.log("NEW tableData:",o); + this.tableData = o; + this._tempStoreTableData(500); + return this.tableData; + }, + + connectDraggable: function(){ + // summary: + // Detects drag-n-drop in the editor (could probably be moved to there) + // Currently only checks if item dragged was a TABLE, and removes its align attr + // DOES NOT WORK IN FF - it could - but FF's drag detection is a monster + // + if(!dojo.isIE){ + //console.warn("Drag and Drop is currently only detectable in IE."); + return; + } + + // IE ONLY + this.editorDomNode.ondragstart = dojo.hitch(this, "onDragStart"); + this.editorDomNode.ondragend = dojo.hitch(this, "onDragEnd"); + + //NOTES: + // FF _ Able to detect the drag-over object (the editor.domNode) + // Not able to detect an item's ondrag() event + // Don't know why - I actually got it working when there was an error + // Something to do with different documents or windows I'm sure + // + //console.log("connectDraggable", tbl); + /*tbl.ondragstart=dojo.hitch(this, "onDragStart"); + + tbl.addEventListener("dragstart", dojo.hitch(this, "onDragStart"), false); + tbl.addEventListener("drag", dojo.hitch(this, "onDragStart2"), false); + tbl.addEventListener("dragend", dojo.hitch(this, "onDragStart3"), false); + + dojo.withGlobal(this.editor.window, "selectElement",dijit._editor.selection, [tbl]); + + tbl.ondragstart = function(){ + //console.log("ondragstart"); + }; + tbl.ondrag = function(){ + alert("drag") + //console.log("ondrag"); + */ + }, + onDragStart: function(){ + var e = window.event; + if(!e.srcElement.id){ + e.srcElement.id = "tbl_"+(new Date().getTime()); + } + //console.log("onDragStart", e.srcElement.id); + }, + onDragEnd: function(){ + // summary: + // Detects that an object has been dragged into place + // Currently, this code is only used for when a table is dragged + // and clears the "align" attribute, so that the table will look + // to be more in the place that the user expected. + // TODO: This code can be used for other things, most + // notably UNDO, which currently is not quite usable. + // This code could also find itself in the Editor code when it is + // complete. + + //console.log("onDragEnd"); + var e = window.event; + var node = e.srcElement; + var id = node.id; + var win = this.editor.window; + //console.log("NODE:", node.tagName, node.id, dojo.attr(node, "align")); + + // clearing a table's align attr + // TODO: when ondrag becomes more robust, this code block + // should move to its own method + if(node.tagName.toLowerCase()=="table"){ + setTimeout(function(){ + var node = dojo.withGlobal(win, "byId", dojo, [id]); + dojo.removeAttr(node, "align"); + //console.log("set", node.tagName, dojo.attr(node, "align")) + }, 100); + } + }, + checkAvailable: function(){ + // summary: + // For table plugs + // Checking if a table or part of a table has focus so that + // Plugs can change their status + // + if(this.availableCurrentlySet){ + // availableCurrentlySet is set for a short amount of time, so that all + // plugins get the same return without doing the method over + //console.log("availableCurrentlySet:", this.availableCurrentlySet, "currentlyAvailable:", this.currentlyAvailable) + return this.currentlyAvailable; + } + //console.log("G - checkAvailable..."); + + if(!this.editor) { + //console.log("editor not ready") + return false; + } + if(this.alwaysAvailable) { + //console.log(" return always available") + return true; + } + + // Only return available if the editor is focused. + this.currentlyAvailable = this.editor.focused ? this.editor.hasAncestorElement("table") : false; + + if(this.currentlyAvailable){ + this.connectTableKeys(); + }else{ + this.disconnectTableKeys(); + } + + this._tempAvailability(500); + + dojo.publish(this.editor.id + "_tablePlugins", [ this.currentlyAvailable ]); + return this.currentlyAvailable; + }, + + _prepareTable: function(tbl){ + // For IE's sake, we are adding IDs to the TDs if none is there + // We go ahead and use it for other code for convenience + // + var tds = this.editor.query("td", tbl); + console.log("prep:", tds, tbl); + if(!tds[0].id){ + tds.forEach(function(td, i){ + if(!td.id){ + td.id = "tdid"+i+this.getTimeStamp(); + } + }, this); + } + return tds; + }, + + getTimeStamp: function(){ + return new Date().getTime(); // Fixed the bug that this method always returns the same timestamp +// return Math.floor(new Date().getTime() * 0.00000001); + }, + + _tempStoreTableData: function(type){ + // caching or clearing table data, depending on the arg + // + if(type===true){ + //store indefinitely + }else if(type===false){ + // clear object + this.tableData = null; + }else if(type===undefined){ + console.warn("_tempStoreTableData must be passed an argument"); + }else{ + // type is a number/ms + setTimeout(dojo.hitch(this, function(){ + this.tableData = null; + }), type); + } + }, + + _tempAvailability: function(type){ + // caching or clearing availability, depending on the arg + if(type===true){ + //store indefinitely + this.availableCurrentlySet = true; + }else if(type===false){ + // clear object + this.availableCurrentlySet = false; + }else if(type===undefined){ + console.warn("_tempAvailability must be passed an argument"); + }else{ + // type is a number/ms + this.availableCurrentlySet = true; + setTimeout(dojo.hitch(this, function(){ + this.availableCurrentlySet = false; + }), type); + } + + }, + + connectTableKeys: function(){ + // summary: + // When a table is in focus, start detecting keys + // Mainly checking for the TAB key so user can tab + // through a table (blocking the browser's desire to + // tab away from teh editor completely) + if(this.tablesConnected){ return; } + this.tablesConnected = true; + var node = (this.editor.iframe) ? this.editor.document : this.editor.editNode; + this.cnKeyDn = dojo.connect(node, "onkeydown", this, "onKeyDown"); + this.cnKeyUp = dojo.connect(node, "onkeyup", this, "onKeyUp"); + this._myListeners.push(dojo.connect(node, "onkeypress", this, "onKeyUp")); + }, + + disconnectTableKeys: function(){ + //console.log("disconnect") + dojo.disconnect(this.cnKeyDn); + dojo.disconnect(this.cnKeyUp); + this.tablesConnected = false; + }, + + onKeyDown: function(evt){ + var key = evt.keyCode; + //console.log(" -> DOWN:", key); + if(key == 16){ this.shiftKeyDown = true;} + if(key == 9) { + var o = this.getTableInfo(); + //console.log("TAB ", o.tdIndex, o); + // modifying the o.tdIndex in the tableData directly, because we may save it + // FIXME: tabTo is a global + o.tdIndex = (this.shiftKeyDown) ? o.tdIndex-1 : tabTo = o.tdIndex+1; + if(o.tdIndex>=0 && o.tdIndex UP:", key) + if(key == 16){ this.shiftKeyDown = false;} + if(key == 37 || key == 38 || key == 39 || key == 40 ){ + // user can arrow or tab out of table - need to recheck + this.onDisplayChanged(); + } + if(key == 9 && this.stopEvent){ dojo.stopEvent(evt);} + }, + + onDisplayChanged: function(){ + //console.log("onDisplayChanged") + this.currentlyAvailable = false; + this._tempStoreTableData(false); + this._tempAvailability(false); + this.checkAvailable(); + }, + + uninitialize: function(editor){ + // summary: + // Function to handle cleaning up of connects + // and such. It only finally destroys everything once + // all 'references' to it have gone. As in all plugins + // that called init on it destroyed their refs in their + // cleanup calls. + // editor: + // The editor to detach from. + if(this.editor == editor){ + this.refCount--; + if(!this.refCount && this.initialized){ + if(this.tablesConnected){ + this.disconnectTableKeys(); + } + this.initialized = false; + dojo.forEach(this._myListeners, function(l){ + dojo.disconnect(l); + }); + delete this._myListeners; + delete this.editor._tablePluginHandler; + delete this.editor; + } + this.inherited(arguments); + } + } +}); + +dojo.declare("dojox.editor.plugins.TablePlugins", + dijit._editor._Plugin, + { + //summary: + // A collection of Plugins for inserting and modifying tables in the Editor + // See end of this document for all avaiable plugs + // and dojox/editorPlugins/tests/editorTablePlugs.html for an example + // + // NOT IMPLEMENTED: Not handling cell merge, span or split + // + + iconClassPrefix: "editorIcon", + useDefaultCommand: false, + buttonClass: dijit.form.Button, + commandName:"", + label:"", + alwaysAvailable:false, + undoEnabled:true, + + onDisplayChanged: function(withinTable){ + // subscribed to from the global object's publish method + // + //console.log("onDisplayChanged", this.commandName); + if(!this.alwaysAvailable){ + this.available = withinTable; + this.button.set('disabled', !this.available); + } + }, + + setEditor: function(editor){ + this.editor = editor; + this.editor.customUndo = true; + this.inherited(arguments); + this._availableTopic = dojo.subscribe(this.editor.id + "_tablePlugins", this, "onDisplayChanged"); + this.onEditorLoaded(); + }, + onEditorLoaded: function(){ + if(!this.editor._tablePluginHandler){ + // Create it and init it off the editor. This + // will create the _tablePluginHandler reference on + // the dijit.Editor instance. This avoids a global. + var tablePluginHandler = new dojox.editor.plugins._TableHandler(); + tablePluginHandler.initialize(this.editor); + }else{ + this.editor._tablePluginHandler.initialize(this.editor); + } + }, + + selectTable: function(){ + // selects table that is in focus + var o = this.getTableInfo(); + if(o && o.tbl){ + dojo.withGlobal(this.editor.window, "selectElement",dijit._editor.selection, [o.tbl]); + } + }, + + _initButton: function(){ + this.command = this.commandName; + + this.label = this.editor.commands[this.command] = this._makeTitle(this.command); + this.inherited(arguments); + delete this.command; + + this.connect(this.button, "onClick", "modTable"); + + this.onDisplayChanged(false); + }, + + modTable: function(cmd, args){ + // summary: + // Where each plugin performs its action + // Note: not using execCommand. In spite of their presence in the + // Editor as query-able plugins, I was not able to find any evidence + // that they are supported (especially in NOT IE). If they are + // supported in other browsers, it may help with the undo problem. + // + this.begEdit(); + var o = this.getTableInfo(); + var sw = (dojo.isString(cmd))?cmd : this.commandName; + var r, c, i; + var adjustColWidth = false; + //console.log("modTable:", sw) + + if(dojo.isIE){ + // IE can lose selections on focus changes, so focus back + // in order to restore it. + this.editor.focus(); + } + switch(sw){ + case "insertTableRowBefore": + r = o.tbl.insertRow(o.trIndex); + for(i=0;imike

                                  "); + this.editor.setValue(this.valBeforeUndo); + this.editor.replaceValue(afterUndo); + } + + this.editor.onDisplayChanged(); + } + }, + + makeColumnsEven: function(){ + //summary: + // After changing column amount, change widths to + // keep columns even + // + // the timeout helps prevent an occasional snafu + setTimeout(dojo.hitch(this, function(){ + var o = this.getTableInfo(true); + var w = Math.floor(100/o.cols); + o.tds.forEach(function(d){ + dojo.attr(d, "width", w+"%"); + }); + }), 10); + }, + + getTableInfo: function(forceNewData){ + // summary: + // Gets the table in focus + // Collects info on the table - see return params + // + return this.editor._tablePluginHandler.getTableInfo(forceNewData); + }, + _makeTitle: function(str){ + // Parses the commandName into a Title + // based on camelCase + var ns = []; + dojo.forEach(str, function(c, i){ + if(c.charCodeAt(0)<91 && i>0 && ns[i-1].charCodeAt(0)!=32){ + ns.push(" "); + } + if(i===0){ c = c.toUpperCase();} + ns.push(c); + }); + return ns.join(""); + }, + + + + getSelectedCells: function(){ + // summary: + // Gets the selected cells from the passed table + // Returns: array of TDs or empty array + var cells = []; + var tbl = this.getTableInfo().tbl; + this.editor._tablePluginHandler._prepareTable(tbl); + var e = this.editor; + + // Lets do this the way IE originally was (Looking up ids). Walking the selection + // is inconsistent in the browsers (and painful), so going by ids is simpler. + var text = dojo.withGlobal(e.window, "getSelectedHtml",dijit._editor.selection, [null]); + var str = text.match(/id="*\w*"*/g); + dojo.forEach(str, function(a){ + var id = a.substring(3, a.length); + if(id.charAt(0) == "\"" && id.charAt(id.length - 1) == "\""){ + id = id.substring(1, id.length - 1); + } + var node = e.byId(id); + if(node && node.tagName.toLowerCase() == "td"){ + cells.push(node); + } + }, this); + + if(!cells.length){ + //May just be in a cell (cursor point, or selection in a cell), so look upwards. + //for a cell container. + var sel = dijit.range.getSelection(e.window); + if(sel.rangeCount){ + var r = sel.getRangeAt(0); + var node = r.startContainer; + while(node && node != e.editNode && node != e.document){ + if(node.nodeType === 1){ + var tg = node.tagName ? node.tagName.toLowerCase() : ""; + if(tg === "td"){ + return [node]; + } + } + node = node.parentNode; + } + } + } + return cells; + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + if(this.button){ + if((this.available || this.alwaysAvailable) && !this.get("disabled")){ + this.button.set("disabled",false); + }else{ + this.button.set("disabled",true); + } + } + }, + + destroy: function(){ + // summary: + // Over-ridden destroy to do some cleanup. + this.inherited(arguments); + dojo.unsubscribe(this._availableTopic); + + // Disconnect the editor from the handler + // to clean up refs. Moved to using a per-editor + // 'handler' to avoid collisions on the old global. + this.editor._tablePluginHandler.uninitialize(this.editor); + } + + } +); + +dojo.declare("dojox.editor.plugins.TableContextMenu", + dojox.editor.plugins.TablePlugins, + { + constructor: function(){ + // summary: + // Initialize certain plugins + // + this.connect(this, "setEditor", function(editor){ + editor.onLoadDeferred.addCallback(dojo.hitch(this, function() { + this._createContextMenu(); + })); + this.button.domNode.style.display = "none"; + }); + }, + + destroy: function(){ + // summary: + // Over-ride to do menu cleanup. + if(this.menu){ + this.menu.destroyRecursive(); + delete this.menu; + } + this.inherited(arguments); + }, + + + _initButton: function(){ + this.inherited(arguments); + if(this.commandName=="tableContextMenu"){ this.button.domNode.display = "none";} + }, + + _createContextMenu: function(){ + // summary + // Building context menu for right-click shortcuts within a table + // + + var pMenu = new dijit.Menu({targetNodeIds:[this.editor.iframe]}); + var messages = dojo.i18n.getLocalization("dojox.editor.plugins", "TableDialog", this.lang); + pMenu.addChild(new dijit.MenuItem({label: messages.selectTableLabel, onClick: dojo.hitch(this, "selectTable")})); + pMenu.addChild(new dijit.MenuSeparator()); + + pMenu.addChild(new dijit.MenuItem({label: messages.insertTableRowBeforeLabel, onClick: dojo.hitch(this, "modTable", "insertTableRowBefore" )})); + pMenu.addChild(new dijit.MenuItem({label: messages.insertTableRowAfterLabel, onClick: dojo.hitch(this, "modTable", "insertTableRowAfter" )})); + pMenu.addChild(new dijit.MenuItem({label: messages.insertTableColumnBeforeLabel, onClick: dojo.hitch(this, "modTable", "insertTableColumnBefore" )})); + pMenu.addChild(new dijit.MenuItem({label: messages.insertTableColumnAfterLabel, onClick: dojo.hitch(this, "modTable", "insertTableColumnAfter" )})); + pMenu.addChild(new dijit.MenuSeparator()); + pMenu.addChild(new dijit.MenuItem({label: messages.deleteTableRowLabel, onClick: dojo.hitch(this, "modTable", "deleteTableRow" )})); + pMenu.addChild(new dijit.MenuItem({label: messages.deleteTableColumnLabel, onClick: dojo.hitch(this, "modTable", "deleteTableColumn" )})); + + this.menu = pMenu; + } +}); + +dojo.declare("dojox.editor.plugins.InsertTable", + dojox.editor.plugins.TablePlugins, + { + alwaysAvailable: true, + + modTable: function(){ + var w = new dojox.editor.plugins.EditorTableDialog({}); + w.show(); + var c = dojo.connect(w, "onBuildTable", this, function(obj){ + dojo.disconnect(c); + + var res = this.editor.execCommand('inserthtml', obj.htmlText); + + // commenting this line, due to msg below + //var td = this.editor.query("td", this.editor.byId(obj.id)); + + //HMMMM.... This throws a security error now. didn't used to. + //this.editor.selectElement(td); + }); + } +}); + +dojo.declare("dojox.editor.plugins.ModifyTable", + dojox.editor.plugins.TablePlugins, + { + modTable: function(){ + if (!this.editor._tablePluginHandler.checkAvailable()) {return;} + var o = this.getTableInfo(); + //console.log("LAUNCH DIALOG"); + var w = new dojox.editor.plugins.EditorModifyTableDialog({table:o.tbl}); + w.show(); + this.connect(w, "onSetTable", function(color){ + // uhm... not sure whats going on here... + var o = this.getTableInfo(); + //console.log("set color:", color); + dojo.attr(o.td, "bgcolor", color); + }); + } +}); + +dojo.declare("dojox.editor.plugins._CellColorDropDown", [dijit._Widget, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin], { + // summary: + // A smple widget that uses/creates a dropdown with a dojox.widget.ColorPicker. Also provides + // passthroughs to the value of the color picker and convenient hook points. + // tags: + // private + + // templateString: String + // The template used to create the ColorPicker. + templateString: + "
                                  " + + "
                                  " + + "
                                  " + + "
                                  " + + "" + + " " + + "" + + "
                                  " + + "
                                  " + + "
                                  ", + + // widgetsInTemplate: Boolean + // Flag denoting widgets are contained in the template. + widgetsInTemplate: true, + + constructor: function(){ + // summary: + // Constructor over-ride so that the translated strings are mixsed in so + // the template fills out. + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "TableDialog"); + dojo.mixin(this, strings); + }, + + startup: function(){ + // summary: + // Over-ride of startup to do the basic connect setups and such. + if(!this._started){ + this.inherited(arguments); + this.connect(this._setButton, "onClick", function(){ + this.onChange(this.get("value")); + }); + this.connect(this._cancelButton, "onClick", function(){ + dijit.popup.close(this.dialog); + this.onCancel(); + }); + // Fully statred, so go ahead and remove the hide. + dojo.style(this.domNode, "display", "block"); + } + }, + + _setValueAttr: function(value, priorityChange){ + // summary: + // Passthrough function for the color picker value. + // value: String + // The value to set in the color picker + // priorityChange: + // Value to indicate whether or not to trigger an onChange event. + this._colorPicker.set("value", value, priorityChange); + }, + + _getValueAttr: function(){ + // summary: + // Passthrough function for the color picker value. + return this._colorPicker.get("value"); + }, + + setColor: function(/*String*/ color){ + this._colorPicker.setColor(color, false); + }, + + onChange: function(value){ + // summary: + // Hook point to get the value when the color picker value is selected. + // value: String + // The value from the color picker. + }, + + onCancel: function(){ + // summary: + // Hook point to get when the dialog is canceled. + } +}); + +dojo.declare("dojox.editor.plugins.ColorTableCell", dojox.editor.plugins.TablePlugins, { + constructor: function(){ + // summary: + // Initialize ColorTableCell plugin + this.closable = true; + this.buttonClass = dijit.form.DropDownButton; + var picker = new dojox.editor.plugins._CellColorDropDown(); + dojo.body().appendChild(picker.domNode); + picker.startup(); + this.dropDown = picker.dialog; + this.connect(picker, "onChange", function(color){ + this.modTable(null, color); + this.editor.focus(); + }); + this.connect(picker, "onCancel", function(color){ + this.editor.focus(); + }); + this.connect(picker.dialog, "onOpen", function(){ + var o = this.getTableInfo(), + tds = this.getSelectedCells(o.tbl); + if(tds && tds.length > 0){ + var t = tds[0] == this.lastObject ? tds[0] : tds[tds.length - 1], + color; + while(t && ((color = dojo.style(t, "backgroundColor")) == "transparent" || color.indexOf("rgba") == 0)){ + t = t.parentNode; + } + color = dojo.style(t, "backgroundColor"); + if(color != "transparent" && color.indexOf("rgba") != 0){ + picker.setColor(color); + } + } + }); + this.connect(this, "setEditor", function(editor){ + editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){ + this.connect(this.editor.editNode, "onmouseup", function(evt){ + this.lastObject = evt.target; + }); + })); + }); + }, + + _initButton: function(){ + this.command = this.commandName; + + this.label = this.editor.commands[this.command] = this._makeTitle(this.command); + this.inherited(arguments); + delete this.command; + + this.onDisplayChanged(false); + }, + + modTable: function(cmd, args){ + // summary + // Where each plugin performs its action + // Note: not using execCommand. In spite of their presence in the + // Editor as query-able plugins, I was not able to find any evidence + // that they are supported (especially in NOT IE). If they are + // supported in other browsers, it may help with the undo problem. + // + this.begEdit(); + var o = this.getTableInfo(); + // The one plugin that really needs use of the very verbose + // getSelectedCells() + var tds = this.getSelectedCells(o.tbl); + //console.debug("SELECTED CELLS ", tds , " FOR ", o); + dojo.forEach(tds, function(td){ + dojo.style(td, "backgroundColor", args); + }); + this.endEdit(); + } +}); + +dojo.declare("dojox.editor.plugins.EditorTableDialog", [dijit.Dialog, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin], { + // summary: + // Dialog box with options for table creation + + baseClass:"EditorTableDialog", + + templateString: dojo.cache("dojox.editor.plugins", "resources/insertTable.html"), + + postMixInProperties: function(){ + var messages = dojo.i18n.getLocalization("dojox.editor.plugins", "TableDialog", this.lang); + dojo.mixin(this, messages); + this.inherited(arguments); + }, + + postCreate: function(){ + dojo.addClass(this.domNode, this.baseClass); //FIXME - why isn't Dialog accepting the baseClass? + this.inherited(arguments); + }, + + onInsert: function(){ + console.log("insert"); + + var rows = this.selectRow.get("value") || 1, + cols = this.selectCol.get("value") || 1, + width = this.selectWidth.get("value"), + widthType = this.selectWidthType.get("value"), + border = this.selectBorder.get("value"), + pad = this.selectPad.get("value"), + space = this.selectSpace.get("value"), + _id = "tbl_"+(new Date().getTime()), + t = '
                                  \n'; + + for(var r=0;r \n'; + } + t += '\t\n'; + } + t += '

                                  '; + + //console.log(t); + this.onBuildTable({htmlText:t, id:_id}); + var cl = dojo.connect(this, "onHide", function(){ + dojo.disconnect(cl); + var self = this; + setTimeout(function(){ + self.destroyRecursive(); + }, 10); + }); + this.hide(); + }, + + onCancel: function(){ + // summary: + // Function to clean up memory so that the dialog is destroyed + // when closed. + var c = dojo.connect(this, "onHide", function(){ + dojo.disconnect(c); + var self = this; + setTimeout(function(){ + self.destroyRecursive(); + }, 10); + }); + }, + + onBuildTable: function(tableText){ + //stub + } +}); + +dojo.declare("dojox.editor.plugins.EditorModifyTableDialog", [dijit.Dialog, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin], { + + // summary: + // Dialog box with options for editing a table + // + + baseClass:"EditorTableDialog", + + table:null, //html table to be modified + tableAtts:{}, + templateString: dojo.cache("dojox.editor.plugins", "resources/modifyTable.html"), + + postMixInProperties: function(){ + var messages = dojo.i18n.getLocalization("dojox.editor.plugins", "TableDialog", this.lang); + dojo.mixin(this, messages); + this.inherited(arguments); + }, + + postCreate: function(){ + dojo.addClass(this.domNode, this.baseClass); //FIXME - why isn't Dialog accepting the baseClass? + this.inherited(arguments); + this._cleanupWidgets = []; + var w1 = new dijit.ColorPalette({}); + this.connect(w1, "onChange", function(color){ + dijit.popup.close(w1); + this.setBrdColor(color); + }); + this.connect(w1, "onBlur", function(){ + dijit.popup.close(w1); + }); + this.connect(this.borderCol, "click", function(){ + dijit.popup.open({popup:w1, around:this.borderCol}); + w1.focus(); + }); + var w2 = new dijit.ColorPalette({}); + this.connect(w2, "onChange", function(color){ + dijit.popup.close(w2); + this.setBkColor(color); + }); + this.connect(w2, "onBlur", function(){ + dijit.popup.close(w2); + }); + this.connect(this.backgroundCol, "click", function(){ + dijit.popup.open({popup:w2, around:this.backgroundCol}); + w2.focus(); + }); + this._cleanupWidgets.push(w1); + this._cleanupWidgets.push(w2); + + this.setBrdColor(dojo.attr(this.table, "bordercolor")); + this.setBkColor(dojo.attr(this.table, "bgcolor")); + var w = dojo.attr(this.table, "width"); + if(!w){ + w = this.table.style.width; + } + var p = "pixels"; + if(dojo.isString(w) && w.indexOf("%")>-1){ + p = "percent"; + w = w.replace(/%/, ""); + } + + if(w){ + this.selectWidth.set("value", w); + this.selectWidthType.set("value", p); + }else{ + this.selectWidth.set("value", ""); + this.selectWidthType.set("value", "percent"); + } + + this.selectBorder.set("value", dojo.attr(this.table, "border")); + this.selectPad.set("value", dojo.attr(this.table, "cellPadding")); + this.selectSpace.set("value", dojo.attr(this.table, "cellSpacing")); + this.selectAlign.set("value", dojo.attr(this.table, "align")); + }, + + setBrdColor: function(color){ + this.brdColor = color; + dojo.style(this.borderCol, "backgroundColor", color); + }, + + setBkColor: function(color){ + this.bkColor = color; + dojo.style(this.backgroundCol, "backgroundColor", color); + }, + onSet: function(){ + dojo.attr(this.table, "borderColor", this.brdColor); + dojo.attr(this.table, "bgColor", this.bkColor); + if(this.selectWidth.get("value")){ + // Just in case, remove it from style since we're setting it as a table attribute. + dojo.style(this.table, "width", ""); + dojo.attr(this.table, "width", (this.selectWidth.get("value") + ((this.selectWidthType.get("value")=="pixels")?"":"%") )); + } + dojo.attr(this.table, "border", this.selectBorder.get("value")); + dojo.attr(this.table, "cellPadding", this.selectPad.get("value")); + dojo.attr(this.table, "cellSpacing", this.selectSpace.get("value")); + dojo.attr(this.table, "align", this.selectAlign.get("value")); + var c = dojo.connect(this, "onHide", function(){ + dojo.disconnect(c); + var self = this; + setTimeout(function(){ + self.destroyRecursive(); + }, 10); + }); + this.hide(); + }, + + onCancel: function(){ + // summary: + // Function to clean up memory so that the dialog is destroyed + // when closed. + var c = dojo.connect(this, "onHide", function(){ + dojo.disconnect(c); + var self = this; + setTimeout(function(){ + self.destroyRecursive(); + }, 10); + }); + }, + + onSetTable: function(tableText){ + //stub + }, + + destroy: function(){ + // summary: + // Cleanup function. + this.inherited(arguments); + dojo.forEach(this._cleanupWidgets, function(w){ + if(w && w.destroy){ + w.destroy(); + } + }); + delete this._cleanupWidgets; + } +}); + +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + // make first character lower case + if(o.args && o.args.command){ + var cmd = o.args.command.charAt(0).toLowerCase()+o.args.command.substring(1,o.args.command.length); + + switch(cmd){ + case "insertTableRowBefore": + case "insertTableRowAfter": + case "insertTableColumnBefore": + case "insertTableColumnAfter": + case "deleteTableRow": + case "deleteTableColumn": + o.plugin = new dojox.editor.plugins.TablePlugins({commandName: cmd}); + break; + + case "colorTableCell": + o.plugin = new dojox.editor.plugins.ColorTableCell({commandName: cmd}); + break; + + case "modifyTable": + o.plugin = new dojox.editor.plugins.ModifyTable({commandName: cmd}); + break; + + case "insertTable": + o.plugin = new dojox.editor.plugins.InsertTable({commandName: cmd}); + break; + + case "tableContextMenu": + o.plugin = new dojox.editor.plugins.TableContextMenu({commandName: cmd}); + break; + } + } +}); + +return dojox.editor.plugins.TablePlugins; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/TextColor.js new file mode 100755 index 0000000..1ebc8e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/TextColor.js @@ -0,0 +1,209 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_base/popup", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_WidgetsInTemplateMixin", + "dijit/TooltipDialog", + "dijit/form/Button", + "dijit/form/DropDownButton", + "dijit/_editor/_Plugin", + "dojox/widget/ColorPicker", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/TextColor" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.TextColor"); +dojo.declare("dojox.editor.plugins._TextColorDropDown", [dijit._Widget, dijit._TemplatedMixin, dijit._WidgetsInTemplateMixin], { + // summary: + // A smple widget that uses/creates a dropdown with a dojox.widget.ColorPicker. Also provides + // passthroughs to the value of the color picker and convenient hook points. + // tags: + // private + + // templateString: String + // The template used to create the ColorPicker. + templateString: "
                                  " + + "
                                  " + + "
                                  " + + "
                                  " + + "
                                  " + + "" + + " " + + "" + + "
                                  " + + "
                                  " + + "
                                  ", + + // widgetsInTemplate: Boolean + // Flag denoting widgets are contained in the template. + widgetsInTemplate: true, + + constructor: function(){ + // summary: + // Constructor over-ride so that the translated strings are mixsed in so + // the template fills out. + var strings = dojo.i18n.getLocalization("dojox.editor.plugins", "TextColor"); + dojo.mixin(this, strings); + }, + + startup: function(){ + // summary: + // Over-ride of startup to do the basic connect setups and such. + if(!this._started){ + this.inherited(arguments); + this.connect(this._setButton, "onClick", dojo.hitch(this, function(){ + this.onChange(this.get("value")); + })); + this.connect(this._cancelButton, "onClick", dojo.hitch(this, function(){ + dijit.popup.close(this.dialog); + this.onCancel(); + })); + // Fully statred, so go ahead and remove the hide. + dojo.style(this.domNode, "display", "block"); + } + }, + + _setValueAttr: function(value, priorityChange){ + // summary: + // Passthrough function for the color picker value. + // value: String + // The value to set in the color picker + // priorityChange: + // Value to indicate whether or not to trigger an onChange event. + this._colorPicker.set("value", value, priorityChange); + }, + + _getValueAttr: function(){ + // summary: + // Passthrough function for the color picker value. + return this._colorPicker.get("value"); + }, + + onChange: function(value){ + // summary: + // Hook point to get the value when the color picker value is selected. + // value: String + // The value from the color picker. + }, + + onCancel: function(){ + // summary: + // Hook point to get when the dialog is canceled. + } +}); + + +dojo.declare("dojox.editor.plugins.TextColor", dijit._editor._Plugin, { + // summary: + // This plugin provides dropdown color pickers for setting text color and background color + // and makes use of the nicer-looking (though not entirely accessible), dojox.widget.ColorPicker. + // + // description: + // The commands provided by this plugin are: + // * foreColor - sets the text color + // * hiliteColor - sets the background color + + // Override _Plugin.buttonClass to use DropDownButton (with ColorPalette) to control this plugin + buttonClass: dijit.form.DropDownButton, + + // useDefaultCommand: Boolean + // False as we do not use the default editor command/click behavior. + useDefaultCommand: false, + + constructor: function(){ + this._picker = new dojox.editor.plugins._TextColorDropDown(); + dojo.body().appendChild(this._picker.domNode); + this._picker.startup(); + this.dropDown = this._picker.dialog; + this.connect(this._picker, "onChange", function(color){ + this.editor.execCommand(this.command, color); + }); + this.connect(this._picker, "onCancel", function(){ + this.editor.focus(); + }); + }, + + updateState: function(){ + // summary: + // Overrides _Plugin.updateState(). This updates the ColorPalette + // to show the color of the currently selected text. + // tags: + // protected + var _e = this.editor; + var _c = this.command; + if(!_e || !_e.isLoaded || !_c.length){ + return; + } + + var disabled = this.get("disabled"); + + var value; + if(this.button){ + this.button.set("disabled", disabled); + if(disabled){ + return; + } + try{ + value = _e.queryCommandValue(_c)|| ""; + }catch(e){ + //Firefox may throw error above if the editor is just loaded, ignore it + value = ""; + } + } + + if(value == ""){ + value = "#000000"; + } + if(value == "transparent"){ + value = "#ffffff"; + } + + if(typeof value == "string"){ + //if RGB value, convert to hex value + if(value.indexOf("rgb")> -1){ + value = dojo.colorFromRgb(value).toHex(); + } + }else{ //it's an integer(IE returns an MS access #) + value =((value & 0x0000ff)<< 16)|(value & 0x00ff00)|((value & 0xff0000)>>> 16); + value = value.toString(16); + value = "#000000".slice(0, 7 - value.length)+ value; + + } + + if(value !== this._picker.get('value')){ + this._picker.set('value', value, false); + } + }, + + destroy: function(){ + // summary: + // Over-ride cleanup function. + this.inherited(arguments); + this._picker.destroyRecursive(); + delete this._picker; + } +}); + +// Register this plugin. Uses the same name as the dijit one, so you +// use one or the other, not both. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin", null, function(o){ + if(o.plugin){ + return; + } + switch(o.args.name){ + case "foreColor": + case "hiliteColor": + o.plugin = new dojox.editor.plugins.TextColor({ + command: o.args.name + }); + } +}); + +return dojox.editor.plugins.TextColor; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/ToolbarLineBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/ToolbarLineBreak.js new file mode 100755 index 0000000..8c47c62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/ToolbarLineBreak.js @@ -0,0 +1,46 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare" +], function(dojo, dijit, dojox) { + +dojo.declare("dojox.editor.plugins.ToolbarLineBreak", + [ dijit._Widget, dijit._TemplatedMixin ], + { + // summary: + // A 'line break' between two `dijit.Toolbar` items so that very + // long toolbars can be organized a bit. + templateString: "
                                  ", + postCreate: function(){ dojo.setSelectable(this.domNode, false); }, + isFocusable: function(){ + // summary: + // This widget isn't focusable, so pass along that fact. + // tags: + // protected + return false; + } +}); + + +// Register this plugin. +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + var name = o.args.name.toLowerCase(); + if(name === "||" || name === "toolbarlinebreak"){ + o.plugin = new dijit._editor._Plugin({ + button: new dojox.editor.plugins.ToolbarLineBreak(), + setEditor: function(editor){ + this.editor = editor; + } + }); + } +}); + +return dojox.editor.plugins.ToolbarLineBreak; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/UploadImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/UploadImage.js new file mode 100644 index 0000000..0fc294e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/UploadImage.js @@ -0,0 +1,113 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_editor/_Plugin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojox/form/FileUploader", + "dijit/_editor/_Plugin" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins.UploadImage"); + +dojo.declare("dojox.editor.plugins.UploadImage", + dijit._editor._Plugin, + { + //summary: + // Adds an icon to the Editor toolbar that when clicked, opens a system dialog + // Although the toolbar icon is a tiny "image" the uploader could be used for + // any file type + + tempImageUrl: "", + iconClassPrefix: "editorIcon", + useDefaultCommand: false, + uploadUrl: "", + button:null, + label:"Upload", + + setToolbar: function(toolbar){ + this.button.destroy(); + this.createFileInput(); + toolbar.addChild(this.button); + }, + _initButton: function(){ + this.command = "uploadImage"; + this.editor.commands[this.command] = "Upload Image"; + this.inherited("_initButton", arguments); + delete this.command; + }, + + updateState: function(){ + // summary: + // Over-ride for button state control for disabled to work. + this.button.set("disabled", this.get("disabled")); + }, + + createFileInput: function(){ + var node = dojo.create('span', {innerHTML:"."}, document.body) + dojo.style(node, { + width:"40px", + height:"20px", + paddingLeft:"8px", + paddingRight:"8px" + }) + this.button = new dojox.form.FileUploader({ + isDebug:true, + //force:"html", + uploadUrl:this.uploadUrl, + uploadOnChange:true, + selectMultipleFiles:false, + baseClass:"dojoxEditorUploadNorm", + hoverClass:"dojoxEditorUploadHover", + activeClass:"dojoxEditorUploadActive", + disabledClass:"dojoxEditorUploadDisabled" + }, node); + this.connect(this.button, "onChange", "insertTempImage"); + this.connect(this.button, "onComplete", "onComplete"); + }, + + onComplete: function(data,ioArgs,widgetRef){ + data = data[0]; + // Image is ready to insert + var tmpImgNode = dojo.withGlobal(this.editor.window, "byId", dojo, [this.currentImageId]); + var file; + // download path is mainly used so we can access a PHP script + // not relative to this file. The server *should* return a qualified path. + if(this.downloadPath){ + file = this.downloadPath+data.name + }else{ + file = data.file; + } + + tmpImgNode.src = file; + dojo.attr(tmpImgNode,'_djrealurl',file); + + if(data.width){ + tmpImgNode.width = data.width; + tmpImgNode.height = data.height; + } + }, + + insertTempImage: function(){ + // inserting a "busy" image to show something is hapening + // during upload and download of the image. + this.currentImageId = "img_"+(new Date().getTime()); + var iTxt = ''; + this.editor.execCommand('inserthtml', iTxt); + } + + } +); + +dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){ + if(o.plugin){ return; } + switch(o.args.name){ + case "uploadImage": + o.plugin = new dojox.editor.plugins.UploadImage({url: o.args.url}); + } +}); + +return dojox.editor.plugins.UploadImage; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/_SmileyPalette.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/_SmileyPalette.js new file mode 100644 index 0000000..070cee7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/_SmileyPalette.js @@ -0,0 +1,149 @@ +define([ + "dojo", + "dijit", + "dojox", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_PaletteMixin", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/i18n", + "dojo/i18n!dojox/editor/plugins/nls/Smiley" +], function(dojo, dijit, dojox) { + +dojo.experimental("dojox.editor.plugins._SmileyPalette"); + +dojo.declare("dojox.editor.plugins._SmileyPalette", + [dijit._Widget, dijit._TemplatedMixin, dijit._PaletteMixin], + { + // summary: + // A keyboard accessible emoticon-picking widget (for inserting smiley characters) + // description: + // Grid showing various emoticons. + // Can be used standalone, or as a popup. + // + // example: + // |
                                  + // + // example: + // | var picker = new dojox.editor.plugins._SmileyPalette({ },srcNode); + // | picker.startup(); + + // The template of this widget. + templateString: + '
                                  ', + + baseClass: "dijitEditorSmileyPalette", + + _palette: [ + ["smile", "laughing", "wink", "grin"], + ["cool", "angry", "half", "eyebrow"], + ["frown", "shy", "goofy", "oops"], + ["tongue", "idea", "angel", "happy"], + ["yes", "no", "crying", ""] + ], + + dyeClass: 'dojox.editor.plugins.Emoticon', + + buildRendering: function(){ + // Instantiate the template, which makes a skeleton into which we'll insert a bunch of + // nodes + this.inherited(arguments); + + var i18n = dojo.i18n.getLocalization("dojox.editor.plugins", "Smiley"); + + // Generate hash from emoticon standard name (like "smile") to translation + var emoticonI18n = {}; + for(var name in i18n){ + if(name.substr(0,8) == "emoticon"){ + emoticonI18n[name.substr(8).toLowerCase()] = i18n[name]; + } + } + this._preparePalette( + this._palette, + emoticonI18n + ); + } +}); + +dojo.declare("dojox.editor.plugins.Emoticon", + null, + { + // summary: + // JS Object representing an emoticon + + constructor: function(/*String*/ id){ + // summary: + // Create emoticon object from an id (like "smile") + // value: String + // alias name 'smile', 'cool' .. + this.id = id; + }, + + getValue: function(){ + // summary: + // Returns a emoticon string in ascii representation, ex: :-) + return dojox.editor.plugins.Emoticon.ascii[this.id]; + }, + + imgHtml: function(/*String*/ clazz){ + // summary: + // Return the HTML string for an node that shows this smiley + var eId = "emoticon" + this.id.substr(0,1).toUpperCase() + this.id.substr(1), + src = dojo.moduleUrl("dojox.editor.plugins", "resources/emoticons/" + eId + ".gif"), + label = dojo.i18n.getLocalization("dojox.editor.plugins", "Smiley")[eId], + html = ['\"',']; + return html.join(""); + }, + + fillCell: function(/*DOMNode*/cell, /*String*/ blankGif){ + dojo.place(this.imgHtml("dijitPaletteImg"), cell); + } +}); + +dojox.editor.plugins.Emoticon.ascii = { + smile: ":-)", + laughing: "lol", + wink: ";-)", + grin: ":-D", + cool: "8-)", + angry: ":-@", + half: ":-/", + eyebrow: "/:)", + frown: ":-(", + shy: ":-$", + goofy: ":-S", + oops: ":-O", + tongue: ":-P", + idea: "(i)", + yes: "(y)", + no: "(n)", + angel: "0:-)", + crying: ":'(", + happy: "=)" +}; + +dojox.editor.plugins.Emoticon.fromAscii = function(/*String*/str){ + // summary: + // Factory to create Emoticon object based on string like ":-)" rather than id like "smile" + var ascii = dojox.editor.plugins.Emoticon.ascii; + for(var i in ascii){ + if(str == ascii[i]){ + return new dojox.editor.plugins.Emoticon(i); + } + } + return null; +}; + +return dojox.editor.plugins._SmileyPalette; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/_SpellCheckParser.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/_SpellCheckParser.js new file mode 100644 index 0000000..4dfd975 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/_SpellCheckParser.js @@ -0,0 +1,68 @@ +define([ + "dojo", + "dojox", + "dojo/_base/connect", + "dojo/_base/declare" +], function(dojo, dojox) { + +dojo.declare("dojox.editor.plugins._SpellCheckParser", null, { + lang: "english", + + parseIntoWords: function(/*String*/ text){ + // summary: + // Parse the text into words + // text: + // Plain text without html tags + // tags: + // public + // returns: + // Array holding all the words + function isCharExt(c){ + var ch = c.charCodeAt(0); + return 48 <= ch && ch <= 57 || 65 <= ch && ch <= 90 || 97 <= ch && ch <= 122; + } + var words = this.words = [], + indices = this.indices = [], + index = 0, + length = text && text.length, + start = 0; + + while(index < length){ + var ch; + // Skip the white charactor and need to treat HTML entity respectively + while(index < length && !isCharExt(ch = text.charAt(index)) && ch != "&"){ index++; } + if(ch == "&"){ // An HTML entity, skip it + while(++index < length && (ch = text.charAt(index)) != ";" && isCharExt(ch)){} + }else{ // A word + start = index; + while(++index < length && isCharExt(text.charAt(index))){} + if(start < length){ + words.push(text.substring(start, index)); + indices.push(start); + } + } + } + + return words; + }, + + getIndices: function(){ + // summary: + // Get the indices of the words. They are in one-to-one correspondence + // tags: + // public + // returns: + // Index array + return this.indices; + } +}); + +// Register this parser in the SpellCheck plugin. +dojo.subscribe(dijit._scopeName + ".Editor.plugin.SpellCheck.getParser", null, function(sp){ + if(sp.parser){ return; } + sp.parser = new dojox.editor.plugins._SpellCheckParser(); +}); + +return dojox.editor.plugins._SpellCheckParser; + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/AutoSave.js new file mode 100644 index 0000000..35706b9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/AutoSave.js @@ -0,0 +1,48 @@ +define({ root: +//begin v1.x content +({ + "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}" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Blockquote.js new file mode 100755 index 0000000..6459f62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Blockquote.js @@ -0,0 +1,38 @@ +define({ root: +//begin v1.x content +({ + "blockquote": "Blockquote" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Breadcrumb.js new file mode 100755 index 0000000..2a58313 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Breadcrumb.js @@ -0,0 +1,44 @@ +define({ root: +//begin v1.x content +({ + "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" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/CollapsibleToolbar.js new file mode 100755 index 0000000..ebfdb3d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/CollapsibleToolbar.js @@ -0,0 +1,39 @@ +define({ root: +//begin v1.x content +({ + "collapse": "Collapse Editor Toolbar", + "expand": "Expand Editor Toolbar" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/FindReplace.js new file mode 100755 index 0000000..7584948 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/FindReplace.js @@ -0,0 +1,56 @@ +define({ root: +//begin v1.x content +({ + "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" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/InsertAnchor.js new file mode 100755 index 0000000..12eabe8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/InsertAnchor.js @@ -0,0 +1,43 @@ +define({ root: +//begin v1.x content +({ + insertAnchor: "Insert Anchor", + title: "Anchor Properties", + anchor: "Name:", + text: "Description:", + set: "Set", + cancel: "Cancel" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/InsertEntity.js new file mode 100755 index 0000000..7c70ee0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/InsertEntity.js @@ -0,0 +1,38 @@ +define({ root: +//begin v1.x content +({ + insertEntity: "Insert Symbol" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/LocalImage.js new file mode 100644 index 0000000..646901b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/LocalImage.js @@ -0,0 +1,45 @@ +define({ root: +//begin v1.x content +({ + 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." +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/PageBreak.js new file mode 100755 index 0000000..ebfbe39 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/PageBreak.js @@ -0,0 +1,38 @@ +define({ root: +//begin v1.x content +({ + "pageBreak": "Page Break" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/PasteFromWord.js new file mode 100755 index 0000000..da39440 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/PasteFromWord.js @@ -0,0 +1,40 @@ +define({ root: +//begin v1.x content +({ + "pasteFromWord": "Paste From Word", + "paste": "Paste", + "cancel": "Cancel", + "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." +}), +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Preview.js new file mode 100755 index 0000000..82752e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Preview.js @@ -0,0 +1,38 @@ +define({ root: +//begin v1.x content +({ + "preview": "Preview" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/SafePaste.js new file mode 100644 index 0000000..876836c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/SafePaste.js @@ -0,0 +1,35 @@ +define({ root: +//begin v1.x content +({ + "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." +}) +//end v1.x content +, +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Save.js new file mode 100755 index 0000000..2284a04 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Save.js @@ -0,0 +1,38 @@ +define({ root: +//begin v1.x content +({ + "save": "Save" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ShowBlockNodes.js new file mode 100755 index 0000000..0508a4d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ShowBlockNodes.js @@ -0,0 +1,38 @@ +define({ root: +//begin v1.x content +({ + "showBlockNodes": "Show HTML Block Elements" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Smiley.js new file mode 100644 index 0000000..c2a4cfb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/Smiley.js @@ -0,0 +1,57 @@ +define({ root: +//begin v1.x content +({ + 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" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/SpellCheck.js new file mode 100644 index 0000000..b0ce6c0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/SpellCheck.js @@ -0,0 +1,51 @@ +define({ root: +//begin v1.x content +({ + 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" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/TableDialog.js new file mode 100644 index 0000000..0a23cf1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/TableDialog.js @@ -0,0 +1,66 @@ +define({ root: +//begin v1.x content +({ + 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", // translated elsewhere? + 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" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"az": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/TextColor.js new file mode 100755 index 0000000..d1672d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/TextColor.js @@ -0,0 +1,39 @@ +define({ root: +//begin v1.x content +({ + "setButtonText": "Set", + "cancelButtonText": "Cancel" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/AutoSave.js new file mode 100644 index 0000000..ce79d42 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "حفظ", + "saveSettingLabelOn": "تحديد الفترة الزمنية للحفظ الآلي...", + "saveSettingLabelOff": "ايقاف الحفظ الآلي", + "saveSettingdialogTitle": "حفظ آلي", + "saveSettingdialogDescription": "تحديد الفترة الزمنية للحفظ الآلي", + "saveSettingdialogParamName": "الفترة الزمنية للحفظ الآلي", + "saveSettingdialogParamLabel": "دقيقة", + "saveSettingdialogButtonOk": "تحديد الفترة الزمنية", + "saveSettingdialogButtonCancel": "الغاء", + "saveMessageSuccess": "تم الحفظ في ${0}", + "saveMessageFail": "فشل في الحفظ في ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Blockquote.js new file mode 100644 index 0000000..c708330 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "علامة تنصيص الفقرة" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Breadcrumb.js new file mode 100644 index 0000000..c4b7513 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} تصرفات", + "selectContents": "تحديد المحتويات", + "selectElement": "تحديد عنصر", + "deleteElement": "حذف عنصر", + "deleteContents": "حذف محتويات", + "moveStart": "نقل المؤشر للبداية", + "moveEnd": "نقل المؤشر للنهاية" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/CollapsibleToolbar.js new file mode 100644 index 0000000..de9d828 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "طي خط أدوات المحرر", + "expand": "توسيع خط أدوات المحرر" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/FindReplace.js new file mode 100644 index 0000000..4ecdb29 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "ايجاد:", + "findTooltip": "ادخال نص لايجاد", + "replaceLabel": "استبدال بالآتي:", + "replaceTooltip": "ادخال نص للاستبدال مع", + "findReplace": "ايجاد واستبدال", + "matchCase": "مطابقة حالة الحروف", + "matchCaseTooltip": "مطابقة حالة الحروف", + "backwards": "الى الوراء", + "backwardsTooltip": "البحث الى الوراء عن نص", + "replaceAllButton": "استبدال كل", + "replaceAllButtonTooltip": "استبدال كل النص", + "findButton": "ايجاد", + "findButtonTooltip": "ايجاد النص", + "replaceButton": "استبدال", + "replaceButtonTooltip": "استبدال النص", + "replaceDialogText": "التكرارات ${0} المستبدلة.", + "eofDialogText": "آخر تكرار ${0}", + "eofDialogTextFind": "موجودة", + "eofDialogTextReplace": "مستبدل" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/InsertAnchor.js new file mode 100644 index 0000000..acaa18a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "ادراج نقطة التثبيت", + title: "خصائص نقطة التثبيت", + anchor: "الاسم:", + text: "الوصف:", + set: "تحديد", + cancel: "الغاء" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/InsertEntity.js new file mode 100644 index 0000000..4b3cbc1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "ادراج رمز" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/LocalImage.js new file mode 100644 index 0000000..147ef33 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "ادراج صورة", + url: "صورة", + browse: "استعراض...", + text: "الوصف", + set: "‏ادراج‏", + invalidMessage: "نوع ملف صور غير صحيح", + prePopuTextUrl: "ادخل عنوان URL لصورة", + prePopuTextBrowse: " أو تصفح الى ملف محلي." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/PageBreak.js new file mode 100644 index 0000000..2d11a5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "فاصل الصفحات" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/PasteFromWord.js new file mode 100644 index 0000000..7a19b66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "لصق من Word", + "paste": "لصق", + "cancel": "الغاء", + "instructions": "لصق المحتويات من Word الى مربع النص بأسفل. بمجرد أن تكون راضيا عن المحتوى المراد ادراجه، اضغط على اختيار لصق. للتوقف عن ادراج النص، اضغط اختيار الغاء." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Preview.js new file mode 100644 index 0000000..717daa3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "معاينة" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Save.js new file mode 100644 index 0000000..f193609 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "حفظ" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/ShowBlockNodes.js new file mode 100644 index 0000000..43a4968 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "عرض عناصر كتلة HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Smiley.js new file mode 100644 index 0000000..aac1581 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/Smiley.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + smiley: "ادراج شكل متحرك", + emoticonSmile: "ابتسامة", + emoticonLaughing: "ضاحك", + emoticonWink: "غمزة", + emoticonGrin: "تكشير", + emoticonCool: "حسنا", + emoticonAngry: "غضبان", + emoticonHalf: "نصف", + emoticonEyebrow: "حاجب", + emoticonFrown: "عبوس", + emoticonShy: "خجول", + emoticonGoofy: "أبله", + emoticonOops: "عفوا", + emoticonTongue: "لسان", + emoticonIdea: "فكرة", + emoticonYes: "نعم", + emoticonNo: "لا", + emoticonAngel: "ملاك", + emoticonCrying: "يبكي" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/SpellCheck.js new file mode 100644 index 0000000..7c1cc84 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "فحص هجاء دفعي", + unfound: "غير موجودة", + skip: "تخطي", + skipAll: "تخطي كل", + toDic: "اضافة الى القاموس", + suggestions: "اقتراحات", + replace: "استبدال", + replaceWith: "استبدال مع", + replaceAll: "استبدال كل", + cancel: "الغاء", + msg: "لا يوجد أخطاء في الهجاء", + iSkip: "تخطي هذا", + iSkipAll: "تخطي كل المماثل لهذا", + iMsg: "لا توجد اقتراحات للهجاء" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/TableDialog.js new file mode 100644 index 0000000..dd64023 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "‏ادراج جدول‏", + modifyTableTitle: "تعديل جدول", + rows: "الصفوف:", + columns: "الأعمدة:", + align: "محاذاة:", + cellPadding: "ملء الخانة:", + cellSpacing: "تباعد الخانة:", + tableWidth: "عرض الجدول:", + backgroundColor: "لون الخلفية:", + borderColor: "لون الحدود:", + borderThickness: "سمك الحدود", + percent: "نسبة مئوية", + pixels: "عنصر صورة", + "default": "المفترض", + left: "لليسار", + center: "توسيط", + right: "لليمين", + buttonSet: "تحديد", // translated elsewhere? + buttonInsert: "‏ادراج‏", + buttonCancel: "الغاء", + + selectTableLabel: "تحديد جدول", + insertTableRowBeforeLabel: "اضافة صف قبل", + insertTableRowAfterLabel: "اضافة صف بعد", + insertTableColumnBeforeLabel: "اضافة عمود قبل", + insertTableColumnAfterLabel: "اضافة عمود بعد", + deleteTableRowLabel: "حذف صف", + deleteTableColumnLabel: "حذف عمود" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/TextColor.js new file mode 100644 index 0000000..9acb9d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "تحديد", + "cancelButtonText": "الغاء" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/latinEntities.js new file mode 100644 index 0000000..6072590 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ar/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"علامة تعجب معكوسة", + cent:"علامة السنت", + pound:"علامة الجنيه", + curren:"علامة العملة", + yen:"علامة نعم\nعلامة nyuan", + brvbar:"خط مكسور\nخط أفقي مكسور", + sect:"علامة القسم", + uml:"تقسيم\nتباعد التقسيم", + copy:"علامة حقوق النشر", + ordf:"مؤشر ترتيبي أنثوي", + laquo:"علامة تنصيص بزاوية مزدوجة تشير الى اليسار\nعلامة تنصيص تشير الى اليسار ", + not:"ليست علامة", + shy:"وصلة قصيرة لينة\nوصلة قصيرة تقديرية", + reg:"علامة مسجلة\nعلامة تجارية مسجلة", + macr:"علامة المد\nتباعد علامة المد\nكتابة فوق السطر\nكتابة فوق سطر APL", + deg:"علامة الدرجة", + plusmn:"علامة زائد-ناقص\nعلامة زائد-أو-ناقص", + sup2:"رمز علوي اثنان\nعدد الرمز العلوي اثنان\nمربع", + sup3:"رمز علوي ثلاثة\nعدد الرمز العلوي ثلاثة\nمكعب", + acute:"علامة النطق الحادة\nتباعد الحادة", + micro:"علامة الصغر المتناهي", + para:"علامة الفقرة\nعلامة الفقرة", + middot:"النقطة الوسطى\nفاصلة جورجية\nنقطة وسطى يونانية", + cedil:"علامة السديلة\nتباعد علامة السديلة", + sup1:"رمز علوي واحد\nعدد رمز علوي واحد", + ordm:"مؤشر ترتيبي مذكر", + raquo:"علامة تنصيص بزاوية مزدوجة تشير الى اليمين\nعلامة تنصيص تشير الى اليمين ", + frac14:"جزء عام ربع واحد\nجزء ربع واحد", + frac12:"جزء عام نصف واحد\nجزء نصف واحد", + frac34:"جزء عام ثلاثة أرباع\nجزء ثلاثة أرباع", + iquest:"علامة استفهام معكوسة\nعلامة استفهام متحولة", + Agrave:"حرف لاتيني كبير A مع حفر\nحرف لاتيني كبير A حفر", + Aacute:"حرف لاتيني كبير A حاد", + Acirc:"حرف لاتيني كبير A مع علامة صوتية", + Atilde:"حرف لاتيني كبير A مع علامة التلدة", + Auml:"حرف لاتيني كبير A مع علامة حرف العلة", + Aring:"حرف لاتيني كبير A مع حلقة فوقه\nحرف لاتيني كبير A حلقة", + AElig:"حرف لاتيني كبير AE\nحرف لاتيني كبير مع الحرف المزدوج AE", + Ccedil:"حرف لاتيني كبير C مع علامة السديلة", + Egrave:"حرف لاتيني كبير E مع حفر", + Eacute:"حرف لاتيني كبير E حاد", + Ecirc:"حرف لاتيني كبير E مع علامة صوتية", + Euml:"حرف لاتيني كبير E مع علامة حرف العلة", + Igrave:"حرف لاتيني كبير I مع حفر", + Iacute:"حرف لاتيني كبير I حاد", + Icirc:"حرف لاتيني كبير I مع علامة صوتية", + Iuml:"حرف لاتيني كبير I مع علامة حرف العلة", + ETH:"حرف لاتيني كبير ETH", + Ntilde:"حرف لاتيني كبير N مع علامة التلدة", + Ograve:"حرف لاتيني كبير O مع حفر", + Oacute:"حرف لاتيني كبير O حاد", + Ocirc:"حرف لاتيني كبير O مع علامة صوتية", + Otilde:"حرف لاتيني كبير O مع علامة التلدة", + Ouml:"حرف لاتيني كبير O مع علامة حرف العلة", + times:"علامة الضرب", + Oslash:"حرف لاتيني كبير O مع حركة منتظمة متكررة\nحرف لاتيني كبير O شرطة مائلة", + Ugrave:"حرف لاتيني كبير U مع حفر", + Uacute:"حرف لاتيني كبير U حاد", + Ucirc:"حرف لاتيني كبير U مع علامة صوتية", + Uuml:"حرف لاتيني كبير U مع علامة حرف العلة", + Yacute:"حرف لاتيني كبير Y حاد", + THORN:"حرف لاتيني كبير THORN", + szlig:"حرف لاتيني صغير حاد s\ness-zed", + agrave:"حرف لاتيني صغير a مع حفر\nحرف لاتيني صغير a حفر", + aacute:"حرف لاتيني صغير a حاد", + acirc:"حرف لاتيني صغير a مع علامة صوتية", + atilde:"حرف لاتيني صغير a مع علامة التلدة", + auml:"حرف لاتيني صغير a مع علامة حرف العلة", + aring:"حرف لاتيني صغير a مع حلقة فوقه\nحرف لاتيني صغير a حلقة", + aelig:"حرف لاتيني صغير ae\nحرف لاتيني صغير مزدوج ae", + ccedil:"حرف لاتيني صغير c مع علامة السديلة", + egrave:"حرف لاتيني صغير e مع حفر", + eacute:"حرف لاتيني صغير e حاد", + ecirc:"حرف لاتيني صغير e مع علامة صوتية", + euml:"حرف لاتيني صغير e مع علامة حرف العلة", + igrave:"حرف لاتيني صغير i مع حفر", + iacute:"حرف لاتيني صغير i حاد", + icirc:"حرف لاتيني صغير i مع علامة صوتية", + iuml:"حرف لاتيني صغير i مع علامة حرف العلة", + eth:"حرف لاتيني صغير eth", + ntilde:"حرف لاتيني صغير n مع علامة التلدة", + ograve:"حرف لاتيني صغير o مع حفر", + oacute:"حرف لاتيني صغير o حاد", + ocirc:"حرف لاتيني صغير o مع علامة صوتية", + otilde:"حرف لاتيني صغير o مع علامة التلدة", + ouml:"حرف لاتيني صغير o مع علامة حرف العلة", + divide:"علامة القسمة", + oslash:"حرف لاتيني صغير o مع حركة منتظمة متكررة\nحرف لاتيني صغير o شرطة مائلة", + ugrave:"حرف لاتيني صغير u مع حفر", + uacute:"حرف لاتيني صغير u حاد", + ucirc:"حرف لاتيني صغير u مع علامة صوتية", + uuml:"حرف لاتيني صغير u مع علامة حرف العلة", + yacute:"حرف لاتيني صغير y حاد", + thorn:"حرف لاتيني صغير طنان", + yuml:"حرف لاتيني صغير y مع علامة حرف العلة", + +// Greek Characters and Symbols + fnof:"حرف لاتيني صغير f مع التواء\nوظيفة\nفلورين", + Alpha:"حرف يوناني كبير الفا", + Beta:"حرف يوناني كبير beta", + Gamma:"حرف يوناني كبير جاما", + Delta:"حرف يوناني كبير دلتا", + Epsilon:"حرف يوناني كبير epsilon", + Zeta:"حرف يوناني كبير zeta", + Eta:"حرف يوناني كبير eta", + Theta:"حرف يوناني كبير theta", + Iota:"حرف يوناني كبير iota", + Kappa:"حرف يوناني كبير kappa", + Lambda:"حرف يوناني كبير lambda", + Mu:"حرف يوناني كبير mu", + Nu:"حرف يوناني كبير nu", + Xi:"حرف يوناني كبير xi", + Omicron:"حرف يوناني كبير omicron", + Pi:"حرف يوناني كبير pi", + Rho:"حرف يوناني كبير rho", + Sigma:"حرف يوناني كبير sigma", + Tau:"حرف يوناني كبير tau", + Upsilon:"حرف يوناني كبير upsilon", + Phi:"حرف يوناني كبير phi", + Chi:"حرف يوناني كبير chi", + Psi:"حرف يوناني كبير psi", + Omega:"حرف يوناني كبير omega", + alpha:"حرف يوناني صغير الفا", + beta:"حرف يوناني صغير beta", + gamma:"حرف يوناني صغير gamma", + delta:"حرف يوناني صغير delta", + epsilon:"حرف يوناني صغير epsilon", + zeta:"حرف يوناني صغير zeta", + eta:"حرف يوناني صغير eta", + theta:"حرف يوناني صغير theta", + iota:"حرف يوناني صغير iota", + kappa:"حرف يوناني صغير kappa", + lambda:"حرف يوناني صغير lambda", + mu:"حرف يوناني صغير mu", + nu:"حرف يوناني صغير nu", + xi:"حرف يوناني صغير xi", + omicron:"حرف يوناني صغير omicron", + pi:"حرف يوناني صغير pi", + rho:"حرف يوناني صغير rho", + sigmaf:"حرف يوناني صغير final النهائي", + sigma:"حرف يوناني صغير sigma", + tau:"حرف يوناني صغير tau", + upsilon:"حرف يوناني صغير upsilon", + phi:"حرف يوناني صغير phi", + chi:"حرف يوناني صغير chi", + psi:"حرف يوناني صغير psi", + omega:"حرف يوناني صغير omega", + thetasym:"حرف يوناني صغير رمز theta", + upsih:"upsilon يوناني مع رمز الالتواء", + piv:"رمز pi اليوناني", + bull:"نقطة\nدائرة سوداء صغيرة", + hellip:"علامة حذف أفقية\nافتتاحية بثلاث نقاط", + prime:"أولي\nدقائق\nقدم", + Prime:"أولي مزدوج\nثواني\nبوصات", + oline:"كتابة فوق سطر\nتباعد شطب السطر", + frasl:"شرطة مائلة لجزء", + weierp:"حرف كبير P للنص\nتحديد الطاقة\nWeierstrass p", + image:"حرف كبير أسود I\nجزء تخيلي", + real:"حرف كبير أسود R\nرمز الجزء الحقيقي", + trade:"علامة تجارية", + alefsym:"رمز alef\nما وراء المحدود الأساسي الأول", + larr:"سهم متجه لليسار", + uarr:"سهم متجه لأعلى", + rarr:"سهم متجه لليمين", + darr:"سهم متجه لأسفل", + harr:"سهم يسار يمين", + crarr:"سهم متجه لأسفل مع الاتجاه لليسار بزاوية\nارجاع النقل", + lArr:"سهم مزدوج متجه لليسار", + uArr:"سهم مزدوج متجه لأعلى", + rArr:"سهم مزدوج متجه لليمين", + dArr:"سهم مزدوج متجه لأسفل", + hArr:"سهم مزدوج يسار يمين", + forall:"للكل", + part:"الفارق الجزئي", + exist:"يوجد هناك", + empty:"مجموعة خالية\nمجموعة صفرية\nالقطر", + nabla:"nabla\nاختلاف عكسي", + isin:"عنصر من", + notin:"ليس عنصر من", + ni:"يتضمن كعضو", + prod:"منتج n-ary\nعلامة المنتج", + sum:"جمع n-ary", + minus:"علامة الطرح", + lowast:"معامل علامة النجمة", + radic:"الجذر التربيعي\nعلامة الجذر", + prop:"تناسبي الى", + infin:"لا نهائي", + ang:"زاوية", + and:"منطقي و\nعلامة قبعة معكوسة", + or:"منطقي أو\nمخروطي", + cap:"نقطة تقاطع\ncap", + cup:"اتحاد\nكأس","int":"صحيح", + there4:"لذلك", + sim:"معامل علامة التلدة\nيتغير مع\nمماثل مع", + cong:"تقريبا مساو الى", + asymp:"تقريبا يساوي\nمقارب الى", + ne:"لا يساوي", + equiv:"مماثل الى", + le:"أقل من أو يساوي", + ge:"أكبر من أو يساوي", + sub:"فرعية من", + sup:"مجاميع من", + nsub:"ليس فرعية من", + sube:"فرعية من أو تساوي", + supe:"مجاميع من أو تساوي", + oplus:"علامة زائد في دائرة\nمجموع مباشر", + otimes:"أضعاف في دائرة\nمنتج nvector", + perp:"تثبيت لأعلى\nمتعامد على\nعمودي", + sdot:"معامل النقطة", + lceil:"حد أعلى يسار\nAPL upstile", + rceil:"حد أعلى يمين", + lfloor:"الطابق الأيسر\nAPL downstile", + rfloor:"الطابق الأيمن", + lang:"قوس مربع يشير الى اليسار", + rang:"قوس مربع يشير الى اليمين", + loz:"المعين", + spades:"بدلة بستوني أسود", + clubs:"بدلة نادي سوداء\nshamrock", + hearts:"بدلة قلب أسود\nvalentine", + diams:"بدلة شكل معين سوداء", + OElig:"حرف لاتيني كبير مزدوج OE", + oelig:"حرف لاتيني صغير مزدوج oe", + Scaron:"حرف لاتيني كبير S مع علامة قبعة معكوسة", + scaron:"حرف لاتيني صغير s مع علامة قبعة معكوسة", + Yuml:"حرف لاتيني كبير Y مع علامة حرف العلة", + circ:"نبرة علامة صوتية حرف تعديل", + tilde:"علامة التلدة صغيرة", + ensp:"مساحة en", + emsp:"مساحة em", + thinsp:"مساحة رفيعة", + zwnj:"عرض صفر غير مرتبط", + zwj:"عرض صفر مرتبط", + lrm:"علامة يسار الى يمين", + rlm:"علامة يمين الى يسار", + ndash:"شرطة en", + mdash:"شرطة em", + lsquo:"علامة تنصيص يسار منفردة", + rsquo:"علامة تنصيص يمين منفردة", + sbquo:"علامة تنصيص low-9 منفردة", + ldquo:"علامة تنصيص يسار مزدوجة", + rdquo:"علامة تنصيص يمين مزدوجة", + bdquo:"علامة تنصيص low-9 مزدوجة", + dagger:"خنجرية", + Dagger:"خنجرية مزدوجة", + permil:"علامة بالألف", + lsaquo:"علامة تنصيص زاوية منفردة تشير الى اليسار", + rsaquo:"علامة تنصيص زاوية منفردة تشير الى اليمين", + euro:"علامة اليورو" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/az/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/az/TableDialog.js new file mode 100644 index 0000000..84bcec2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/az/TableDialog.js @@ -0,0 +1,31 @@ +define( +({ + "buttonSet" : "Yönəlt", + "insertTableTitle" : "Cədvəl əlavə et", + "insertTableRowAfterLabel" : "Sətirin sonuna əlavə et", + "center" : "orta", + "deleteTableColumnLabel" : "Sütunu Sil", + "right" : "sağ", + "insertTableColumnBeforeLabel" : "Sütunu əvvəlinə əlavə et", + "tableWidth" : "Cədvəl Genişliyi", + "buttonInsert" : "Əlavə et", + "buttonCancel" : "Ləğv et", + "default" : "varsayılan", + "align" : "Doğrult:", + "insertTableRowBeforeLabel" : "Sətiri əvvəlinə əlavə et", + "cellSpacing" : "Hücrə Aralığı:", + "pixels" : "piksel", + "selectTableLabel" : "Cədvəl Seç", + "rows" : "Sətirlər:", + "modifyTableTitle" : "Cədvəli Dəyişdir", + "cellPadding" : "Hücrə Doldurmaq:", + "deleteTableRowLabel" : "Sətiri Sil", + "backgroundColor" : "Arxa Plan Rəngi:", + "insertTableColumnAfterLabel" : "Sütunu Arxasına əlavə et", + "left" : "sol", + "borderThickness" : "Çərçivə Qalınlığı", + "columns" : "Sütunlar:", + "percent" : "faiz", + "borderColor" : "Çərçivə Rəngi: " +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/AutoSave.js new file mode 100644 index 0000000..92dd5ea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Desa", + "saveSettingLabelOn": "Estableix l'interval per desar automàticament...", + "saveSettingLabelOff": "Deshabilita el desat automàtic", + "saveSettingdialogTitle": "Desat automàtic", + "saveSettingdialogDescription": "Especifiqueu l'interval de desat automàtic", + "saveSettingdialogParamName": "Interval de desat automàtic", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Estableix l'interval", + "saveSettingdialogButtonCancel": "Cancel·la", + "saveMessageSuccess": "Desat a les ${0}", + "saveMessageFail": "No s'ha pogut desar a les ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Breadcrumb.js new file mode 100644 index 0000000..2e34c2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} - Accions", + "selectContents": "Selecciona contingut", + "selectElement": "Selecciona element", + "deleteElement": "Suprimeix element", + "deleteContents": "Suprimeix contingut", + "moveStart": "Mou el cursor a l'inici", + "moveEnd": "Mou el cursor al final" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/CollapsibleToolbar.js new file mode 100644 index 0000000..e5bd268 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Redueix la barra d'eines de l'editor", + "expand": "Expandeix la barra d'eines de l'editor" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/FindReplace.js new file mode 100644 index 0000000..6a7bb4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Cerca:", + "findTooltip": "Especifiqueu el text que voleu trobar", + "replaceLabel": "Substitueix per:", + "replaceTooltip": "Especifiqueu el text amb què el voleu substituir", + "findReplace": "Cerca i substitueix", + "matchCase": "Coincidència de majúscules i minúscules", + "matchCaseTooltip": "Coincidència de majúscules i minúscules", + "backwards": "Cap enrere", + "backwardsTooltip": "Cerca text cap enrere", + "replaceAllButton": "Substitueix tot", + "replaceAllButtonTooltip": "Substitueix tot el text", + "findButton": "Cerca", + "findButtonTooltip": "Troba el text", + "replaceButton": "Substitueix", + "replaceButtonTooltip": "Substitueix el text", + "replaceDialogText": "S'han substituït ${0} aparicions.", + "eofDialogText": "Darrera aparició ${0}", + "eofDialogTextFind": "trobat", + "eofDialogTextReplace": "substituït" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/InsertAnchor.js new file mode 100644 index 0000000..86704f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Insereix una àncora", + title: "Propietats de l'àncora", + anchor: "Nom:", + text: "Descripció:", + set: "Defineix", + cancel: "Cancel·la" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/InsertEntity.js new file mode 100644 index 0000000..e96234b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Insereix símbol" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/LocalImage.js new file mode 100644 index 0000000..fdc1957 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Insereix imatge", + url: "Imatge", + browse: "Navega...", + text: "Descripció", + set: "Insereix", + invalidMessage: "Tipus de fitxer d\'imatge no vàlid", + prePopuTextUrl: "Especifiqueu un URL d\'imatge", + prePopuTextBrowse: " o navegueu fins un fitxer local." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/PageBreak.js new file mode 100644 index 0000000..d7c2e36 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Salt de pàgina" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/PasteFromWord.js new file mode 100644 index 0000000..3ddc705 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Enganxa des de Word", + "paste": "Enganxa", + "cancel": "Cancel·la", + "instructions": "Enganxa el contingut de Word al quadre de text següent. Un cop esteu satisfets amb el contingut que voleu inserir, feu clic al botó Enganxa. Per cancel·lar la inserció de text, feu clic al botó Cancel·la." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Preview.js new file mode 100644 index 0000000..1049be0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Visualització prèvia" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/SafePaste.js new file mode 100644 index 0000000..4f4db12 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "L'acció d'enganxar dades directament està inhabilitada. Enganxeu el contingut d'aquest diàleg amb el teclat del navegador estàndard o amb els controls d'enganxament del menú. Quan estigueu satisfet amb el contingut que cal inserir, premeu el botó per enganxar-lo. Per avortar la inserció de contingut, premeu el botó per cancel·lar." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Save.js new file mode 100644 index 0000000..1fb2c0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Desa" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/ShowBlockNodes.js new file mode 100644 index 0000000..cd7e8fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Mostra elements de bloc HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Smiley.js new file mode 100644 index 0000000..4205666 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Insereix emoticona", + emoticonSmile: "somriure", + emoticonLaughing: "rient", + emoticonWink: "ullet", + emoticonGrin: "gran somriure", + emoticonCool: "guai", + emoticonAngry: "enfadat", + emoticonHalf: "meitat", + emoticonEyebrow: "cella", + emoticonFrown: "espantat", + emoticonShy: "avergonyit", + emoticonGoofy: "babau", + emoticonOops: "ep", + emoticonTongue: "llengua", + emoticonIdea: "idea", + emoticonYes: "sí", + emoticonNo: "no", + emoticonAngel: "àngel", + emoticonCrying: "plorant", + emoticonHappy: "content" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/SpellCheck.js new file mode 100644 index 0000000..c438188 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Correcció ortogràfica per lots", + unfound: "No trobat", + skip: "Salta", + skipAll: "Salta tot", + toDic: "Afegeix al diccionari", + suggestions: "Suggeriments", + replace: "Substitueix", + replaceWith: "Substitueix per", + replaceAll: "Substitueix tot", + cancel: "Cancel·la", + msg: "No s'ha trobat cap error ortogràfic", + iSkip: "Saltar aquest", + iSkipAll: "Saltar tots els que són com aquest", + iMsg: "No hi ha suggeriments ortogràfics" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/TableDialog.js new file mode 100644 index 0000000..eb55edb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Insereix taula", + modifyTableTitle: "Modifica taula", + rows: "Files:", + columns: "Columnes:", + align: "Alinea:", + cellPadding: "Emplenat de cel·la:", + cellSpacing: "Espaiat de cel·la:", + tableWidth: "Amplada de taula:", + backgroundColor: "Color de fons:", + borderColor: "Color del contorn", + borderThickness: "Gruix del contorn", + percent: "percentatge", + pixels: "píxels", + "default": "default", + left: "esquerra", + center: "centrat", + right: "dreta", + buttonSet: "Defineix", // translated elsewhere? + buttonInsert: "Insereix", + buttonCancel: "Cancel·la", + + selectTableLabel: "Selecciona taula", + insertTableRowBeforeLabel: "Afegeix fila abans", + insertTableRowAfterLabel: "Afegeix fila després", + insertTableColumnBeforeLabel: "Afegeix columna abans", + insertTableColumnAfterLabel: "Afegeix columna després", + deleteTableRowLabel: "Suprimeix fila", + deleteTableColumnLabel: "Suprimeix columna" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/TextColor.js new file mode 100644 index 0000000..ded7693 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Defineix", + "cancelButtonText": "Cancel·la" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/latinEntities.js new file mode 100644 index 0000000..a39d4e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ca/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"signe d'exclamació obert", + cent:"signe de cèntims", + pound:"signe de lliura", + curren:"signe de moneda", + yen:"signe de ien\nsigne de iuan", + brvbar:"barra partida\nbarra vertical partida", + sect:"signe de secció", + uml:"dièresi\ndièresi d'espai", + copy:"signe de copyright", + ordf:"indicador ordinal femení", + laquo:"cometes llatines apuntant cap a l'esquerra\ncometes llatines cap a l'esquerra", + not:"signe de negació", + shy:"guió tou\nguió opcional", + reg:"signe de registrat\nsigne de marca comercial registrada", + macr:"macron\nmacron d'espaiat\nsobre-ratllat\nguió alt", + deg:"signe de graus", + plusmn:"signe de més-menys\nsigne de més-o-menys", + sup2:"dos en superíndex\nnúmero dos en superíndex\nal quadrat", + sup3:"tres en superíndex\nnúmero tres en superíndex\nal cub", + acute:"accent agut\nespaiat agut", + micro:"signe de micro", + para:"signe de paràgrafn\nsigne de canvi de paràgraf", + middot:"punt volat\ncoma georgiana\npunt volat grec", + cedil:"ce trencada\nespai de ce trencada", + sup1:"ú en superíndex\nnúmero ú en superíndex", + ordm:"indicador d'ordinal masculí", + raquo:"cometes llatines apuntant cap a la dreta\ncometes llatines cap a la dreta", + frac14:"fracció vulgar d'un quart\nfracció d'un quart", + frac12:"fracció vulgar de meitat\nfracció d'un mig", + frac34:"fracció vulgar de tres quarts\nfracció de tres quarts", + iquest:"signe d'interrogació obert\ninterrogació oberta", + Agrave:"lletra llatina A majúscula amb accent greu\nA majúscula amb accent greu", + Aacute:"lletra llatina A majúscula amb accent agut\nA majúscula amb accent agut", + Acirc:"lletra llatina A majúscula amb circumflex\nA majúscula amb circumflex", + Atilde:"lletra llatina A majúscula amb titlla", + Auml:"lletra llatina A majúscula amb dièresi", + Aring:"lletra llatina A majúscula amb anell al damunt\nA majúscula amb anell", + AElig:"lletra llatina AE majúscula\n Lligatura llatina AE majúscula", + Ccedil:"lletra llatina C trencada majúscula", + Egrave:"lletra llatina E majúscula amb accent greu", + Eacute:"lletra llatina E majúscula amb accent agut", + Ecirc:"lletra llatina E majúscula amb circumflex", + Euml:"lletra llatina E majúscula amb dièresi", + Igrave:"lletra llatina I majúscula amb accent greu", + Iacute:"lletra llatina I majúscula amb accent agut", + Icirc:"lletra llatina I majúscula amb circumflex", + Iuml:"lletra llatina I majúscula amb dièresi", + ETH:"lletra llatina ETH majúscula", + Ntilde:"lletra llatina N majúscula amb titlla\nlletra enye majúscula", + Ograve:"lletra llatina O majúscula amb accent greu", + Oacute:"lletra llatina O majúscula amb accent agut", + Ocirc:"lletra llatina O majúscula amb circumflex", + Otilde:"lletra llatina O majúscula amb titlla", + Ouml:"lletra llatina O majúscula amb dièresi", + times:"signe de multiplicació", + Oslash:"lletra llatina O majúscula amb traçat\nO majúscula amb barra inclinada", + Ugrave:"lletra llatina U majúscula amb accent greu", + Uacute:"lletra llatina U majúscula amb accent agut", + Ucirc:"lletra llatina U majúscula amb circumflex", + Uuml:"lletra llatina U majúscula amb dièresi", + Yacute:"lletra llatina Y majúscula amb accent agut", + THORN:"lletra llatina THORN majúscula", + szlig:"lletra llatina s fina\nesze alemanya", + agrave:"Lletra llatina a minúscula amb accent greu\na minúscula amb accent greu", + aacute:"lletra llatina a minúscula amb accent agut", + acirc:"lletra llatina a minúscula amb circumflex", + atilde:"lletra llatina a minúscula amb titlla", + auml:"lletra llatina a minúscula amb dièresi", + aring:"Lletra llatina a minúscula amb anell\na minúscula amb anell", + aelig:"lletra llatina AE minúscula\n Lligatura llatina AE minúscula", + ccedil:"lletra llatina c trencada minúscula", + egrave:"lletra llatina e minúscula amb accent greu", + eacute:"lletra llatina e minúscula amb accent agut", + ecirc:"lletra llatina e minúscula amb circumflex", + euml:"lletra llatina e minúscula amb dièresi", + igrave:"lletra llatina i minúscula amb accent greu", + iacute:"lletra llatina i minúscula amb accent agut", + icirc:"lletra llatina i minúscula amb circumflex", + iuml:"lletra llatina i minúscula amb dièresi", + eth:"lletra llatina eth minúscula", + ntilde:"lletra llatina n minúscula amb titlla\nlletra enye minúscula", + ograve:"lletra llatina o minúscula amb accent greu", + oacute:"lletra llatina o minúscula amb accent agut", + ocirc:"lletra llatina o minúscula amb circumflex", + otilde:"lletra llatina o minúscula amb titlla", + ouml:"lletra llatina o minúscula amb dièresi", + divide:"signe de divisió", + oslash:"lletra llatina o minúscula amb traçat\no minúscula amb barra inclinada", + ugrave:"lletra llatina u minúscula amb accent greu", + uacute:"lletra llatina u minúscula amb accent agut", + ucirc:"lletra llatina u minúscula amb circumflex", + uuml:"lletra llatina u minúscula amb dièresi", + yacute:"lletra llatina y minúscula amb accent agut", + thorn:"lletra llatina thorn minúscula", + yuml:"lletra llatina y minúscula amb dièresi", + +// Greek Characters and Symbols + fnof:"lletra llatina f minúscula amb ganxet\nfunció\nflorí", + Alpha:"lletra grega alfa majúscula", + Beta:"lletra grega beta majúscula", + Gamma:"lletra grega gamma majúscula", + Delta:"lletra grega delta majúscula", + Epsilon:"lletra grega epsilon majúscula", + Zeta:"lletra grega zeta majúscula", + Eta:"lletra grega eta majúscula", + Theta:"lletra grega theta majúscula", + Iota:"lletra grega iota majúscula", + Kappa:"lletra grega kappa majúscula", + Lambda:"lletra grega lambda majúscula", + Mu:"lletra grega mu majúscula", + Nu:"lletra grega nu majúscula", + Xi:"lletra grega xi majúscula", + Omicron:"lletra grega omicron majúscula", + Pi:"lletra grega pi majúscula", + Rho:"lletra grega rho majúscula", + Sigma:"lletra grega sigma majúscula", + Tau:"lletra grega tau majúscula", + Upsilon:"lletra grega upsilon majúscula", + Phi:"lletra grega phi majúscula", + Chi:"lletra grega chi majúscula", + Psi:"lletra grega psi majúscula", + Omega:"lletra grega omega majúscula", + alpha:"lletra grega alfa minúscula", + beta:"lletra grega beta minúscula", + gamma:"lletra grega gamma minúscula", + delta:"lletra grega delta minúscula", + epsilon:"lletra grega epsilon minúscula", + zeta:"lletra grega zeta minúscula", + eta:"lletra grega eta minúscula", + theta:"lletra grega theta minúscula", + iota:"lletra grega iota minúscula", + kappa:"lletra grega kappa minúscula", + lambda:"lletra grega lambda minúscula", + mu:"lletra grega mu minúscula", + nu:"lletra grega nu minúscula", + xi:"lletra grega xi minúscula", + omicron:"lletra grega omicron minúscula", + pi:"lletra grega pi minúscula", + rho:"lletra grega rho minúscula", + sigmaf:"lletra grega sigma final minúscula", + sigma:"lletra grega sigma minúscula", + tau:"lletra grega tau minúscula", + upsilon:"lletra grega upsilon minúscula", + phi:"lletra grega phi minúscula", + chi:"lletra grega chi minúscula", + psi:"lletra grega psi minúscula", + omega:"lletra grega omega minúscula", + thetasym:"símbol de lletra grega theta minúscula", + upsih:"símbol de lletra grega upsilon amb ganxet", + piv:"símbol grec de pi", + bull:"vinyeta\npetit cercle negre", + hellip:"el·lipsi horitzontal\nguia de tres punts", + prime:"prima\nminuts\npeus", + Prime:"doble prima\nsegons\npolzades", + oline:"sobre-ratllat\nespai de guió alt", + frasl:"barra de fracció", + weierp:"lletra P majúscula de script\nconjunt de potència\np de Weierstrass", + image:"I majúscula negra\npart imaginària", + real:"R majúscula negra\nsímbol de part real", + trade:"signe de marca registrada", + alefsym:"símbol d'alef\nprimer cardinal transfinit", + larr:"fletxa cap a l'esquerra", + uarr:"fletxa cap amunt", + rarr:"fletxa cap a la dreta", + darr:"fletxa cap avall", + harr:"fletxa a esquerra i dreta", + crarr:"fletxa cap avall amb cantonada a l'esquerra\nretorn de carro", + lArr:"doble fletxa cap a l'esquerra", + uArr:"doble fletxa cap amunt", + rArr:"doble fletxa cap a la dreta", + dArr:"doble fletxa cap avall", + hArr:"doble fletxa a esquerra i dreta", + forall:"per a tot", + part:"diferencial parcial", + exist:"existeix", + empty:"conjunt buit\nconjunt nul\ndiàmetre", + nabla:"nabla\ndiferència cap enrere", + isin:"és element de", + notin:"no és element de", + ni:"conté com a membre", + prod:"producte n-ari\nsigne de producte", + sum:"sumatori n-ari", + minus:"signe menys", + lowast:"operador asterisc", + radic:"arrel quadrada\nsigne de radical", + prop:"proporcional a", + infin:"infinit", + ang:"angle", + and:"i lògic\nfalca", + or:"o lògica\nvall", + cap:"intersecció\nbarret", + cup:"unió\ncopa","int":"integral", + there4:"per tant", + sim:"operador de titlla\nvaria amb\nsemblant a", + cong:"aproximadament igual que", + asymp:"gairebé igual que\nasintòtic amb", + ne:"no igual que", + equiv:"idèntic a", + le:"menor o igual que", + ge:"major o igual que", + sub:"sots-conjunt de", + sup:"super-conjunt de", + nsub:"no és un sots-conjunt de", + sube:"sots-conjunt de o igual que", + supe:"super-conjunt de o igual que", + oplus:"més encerclat\nsuma directa", + otimes:"multiplicació encerclada\nproducte de vectors", + perp:"clau aixecat\nortogonal a\nperpendicular", + sdot:"operador de punt", + lceil:"sostre esquerre\nAPL amunt", + rceil:"sostre dret", + lfloor:"terra esquerre\nAPL avall", + rfloor:"terra dret", + lang:"claudàtor angular apuntant a l'esquerra", + rang:"claudàtor angular apuntant a la dreta", + loz:"rombe", + spades:"pal de piques negre", + clubs:"pal de trèbols negre\ntrèbol", + hearts:"pal de cors negre\nsant valentí", + diams:"pal de diamants negre", + OElig:"lligatura llatina OE majúscula", + oelig:"lligatura llatina oe minúscula", + Scaron:"lletra llatina S majúscula amb circumflex invertit", + scaron:"lletra llatina s minúscula amb circumflex invertit", + Yuml:"lletra llatina Y majúscula amb dièresi", + circ:"modificador de lletra d'accent circumflex", + tilde:"titlla petita", + ensp:"espai en", + emsp:"espai em", + thinsp:"espai prim", + zwnj:"no-unió d'ample zero", + zwj:"unió d'ample zero", + lrm:"marca d'esquerra-a-dreta", + rlm:"marca de dreta-a-esquerra", + ndash:"guió en", + mdash:"guió em", + lsquo:"marca de citació senzilla esquerra", + rsquo:"marca de citació senzilla dreta", + sbquo:"marca de citació de 9-baix senzilla", + ldquo:"marca de citació doble esquerra", + rdquo:"marca de citació doble dreta", + bdquo:"marca de citació de 9-baix doble", + dagger:"daga", + Dagger:"doble daga", + permil:"signe de tant per mil", + lsaquo:"marca de citació en angle senzilla esquerra", + rsaquo:"marca de citació en angle senzilla dreta", + euro:"signe de l'euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/AutoSave.js new file mode 100644 index 0000000..38710b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Uložit", + "saveSettingLabelOn": "Nastavit interval pro automatické uložení", + "saveSettingLabelOff": "Vypnout automatické uložení", + "saveSettingdialogTitle": "Automatické uložení", + "saveSettingdialogDescription": "Určit interval pro automatické uložení", + "saveSettingdialogParamName": "Interval pro automatické uložení", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Nastavit interval", + "saveSettingdialogButtonCancel": "Storno", + "saveMessageSuccess": "Uloženo v ${0}", + "saveMessageFail": "Selhalo uložení v ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Blockquote.js new file mode 100644 index 0000000..671219c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Citace v bloku" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Breadcrumb.js new file mode 100644 index 0000000..d05a639 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Akce uzlu ${nodeName}", + "selectContents": "Vybrat obsah", + "selectElement": "Vybrat prvek", + "deleteElement": "Odstranit prvek", + "deleteContents": "Odstranit obsah", + "moveStart": "Přesunout ukazatel na začátek", + "moveEnd": "Přesunout ukazatel na konec" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/CollapsibleToolbar.js new file mode 100644 index 0000000..0ee257b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Sbalit panel nástrojů editoru", + "expand": "Rozbalit panel nástrojů editoru" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/FindReplace.js new file mode 100644 index 0000000..2689f4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "Najít:", + "findTooltip": "Zadejte hledaný text.", + "replaceLabel": "Nahrazující řetězec:", + "replaceTooltip": "Zadejte text pro nahrazení.", + "findReplace": "Najít a nahradit", + "matchCase": "S rozlišením velkých a malých písmen", + "matchCaseTooltip": "S rozlišením velkých a malých písmen", + "backwards": "V opačném směru", + "backwardsTooltip": "Hledat text v opačném směru", + "replaceAllButton": "Nahradit vše", + "replaceAllButtonTooltip": "Nahradit všechen text", + "findButton": "Najít", + "findButtonTooltip": "Najít text", + "replaceButton": "Nahradit", + "replaceButtonTooltip": "Nahradit text", + "replaceDialogText": "Počet nahrazených výskytů: ${0}.", + "eofDialogText": "Poslední výskyt ${0}", + "eofDialogTextFind": "byl nalezen", + "eofDialogTextReplace": "byl nahrazen" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/InsertAnchor.js new file mode 100644 index 0000000..86cc6ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Vložit kotvu", + title: "Vlastnosti kotvy", + anchor: "Název:", + text: "Popis:", + set: "Nastavit", + cancel: "Storno" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/InsertEntity.js new file mode 100644 index 0000000..b291fdd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Vložit symbol" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/LocalImage.js new file mode 100644 index 0000000..a5e34e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Vložit obrázek", + url: "Obrázek", + browse: "Procházet...", + text: "Popis", + set: "Vložit", + invalidMessage: "Neplatný typ souboru obrázku", + prePopuTextUrl: "Zadejte adresu URL obrázku", + prePopuTextBrowse: " nebo vyhledejte lokální soubor." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/PageBreak.js new file mode 100644 index 0000000..f83f61f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Zalomení stránky" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/PasteFromWord.js new file mode 100644 index 0000000..6f743dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Vložit z aplikace Word", + "paste": "Vložit", + "cancel": "Storno", + "instructions": "Vložte obsah z aplikace Word do zobrazeného textového pole. Jakmile jste s vkládaným obsahem spokojeni, stiskněte tlačítko Vložit. Pomocí tlačítka Storno vkládání zrušíte." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Preview.js new file mode 100644 index 0000000..987a780 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Náhled" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/SafePaste.js new file mode 100644 index 0000000..4583c20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Přímé vložení je zakázáno. Vložte obsah do tohoto dialogového okna pomocí standardní klávesové zkratky nebo nabídky prohlížeče. Jakmile jste s vkládaným obsahem spokojeni, stiskněte tlačítko Vložit. Pomocí tlačítka Storno vkládání zrušíte." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Save.js new file mode 100644 index 0000000..dc8988a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Uložit" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/ShowBlockNodes.js new file mode 100644 index 0000000..85093c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Zobrazit prvky bloku kódu HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Smiley.js new file mode 100644 index 0000000..045e968 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Vložit emotikonu", + emoticonSmile: "úsměv", + emoticonLaughing: "smích", + emoticonWink: "mrknutí", + emoticonGrin: "úšklebek", + emoticonCool: "skvělé", + emoticonAngry: "hněv", + emoticonHalf: "polovina", + emoticonEyebrow: "obočí", + emoticonFrown: "zamračení", + emoticonShy: "stud", + emoticonGoofy: "potrhlost", + emoticonOops: "ouha", + emoticonTongue: "jazyk", + emoticonIdea: "nápad", + emoticonYes: "ano", + emoticonNo: "ne", + emoticonAngel: "anděl", + emoticonCrying: "pláč", + emoticonHappy: "veselý" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/SpellCheck.js new file mode 100644 index 0000000..e07ef93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Dávková kontrola pravopisu", + unfound: "Nenalezeno", + skip: "Přeskočit", + skipAll: "Přeskočit vše", + toDic: "Přidat do slovníku", + suggestions: "Návrhy", + replace: "Nahradit", + replaceWith: "Text pro nahrazení", + replaceAll: "Nahradit vše", + cancel: "Storno", + msg: "Nebyly nalezeny žádné chyby pravopisu.", + iSkip: "Přeskočit tento výskyt", + iSkipAll: "Přeskočit všechny podobné výskyty", + iMsg: "Žádné návrhy pravopisu" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/TableDialog.js new file mode 100644 index 0000000..3d9a484 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Vložit tabulku", + modifyTableTitle: "Upravit tabulku", + rows: "Řádky:", + columns: "Sloupce:", + align: "Zarovnat:", + cellPadding: "Okraj buňky:", + cellSpacing: "Odstup buněk:", + tableWidth: "Šířka tabulky:", + backgroundColor: "Barva pozadí:", + borderColor: "Barva ohraničení:", + borderThickness: "TloušťkaOhraničení", + percent: "procent", + pixels: "pixelů", + "default": "výchozí", + left: "vlevo", + center: "střed", + right: "vpravo", + buttonSet: "Nastavit", // translated elsewhere? + buttonInsert: "Vložit", + buttonCancel: "Storno", + + selectTableLabel: "Vybrat tabulku", + insertTableRowBeforeLabel: "Přidat řádek před", + insertTableRowAfterLabel: "Přidat řádek za", + insertTableColumnBeforeLabel: "Přidat sloupec před", + insertTableColumnAfterLabel: "Přidat sloupec za", + deleteTableRowLabel: "Odstranit řádek", + deleteTableColumnLabel: "Odstranit sloupec" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/TextColor.js new file mode 100644 index 0000000..7cfd1e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Nastavit", + "cancelButtonText": "Storno" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/latinEntities.js new file mode 100644 index 0000000..962063e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/cs/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"obrácený vykřičník", + cent:"znak cent", + pound:"znak libra", + curren:"znak měna", + yen:"znak yen\nznak yuan", + brvbar:"přerušená čára\npřerušená svislá čára", + sect:"znak paragraf", + uml:"vodorovná dvojtečka\npřehláska", + copy:"znak copyright", + ordf:"indikátor ženského rodu", + laquo:"dvojitá levá šipka", + not:"znak negace", + shy:"spojovník\nrozdělovník", + reg:"znak registrováno\nznak registrovaná ochranná známka", + macr:"nadtržítko", + deg:"znak stupeň", + plusmn:"znak plus-minus\nznak plus nebo minus", + sup2:"2, horní index\ndruhá mocnina\nplošná míra", + sup3:"3, horní index\ntřetí mocnina\nkrychlová míra", + acute:"čárka nahoře", + micro:"znak mikro", + para:"znak konec odstavce", + middot:"tečka uprostřed", + cedil:"cedilla\nspodní háček", + sup1:"1, horní index", + ordm:"indikátor mužského rodu", + raquo:"dvojitá pravá šipka", + frac14:"jednoduchý zlomek jedna čtvrtina\nzlomek jedna čtvrtina", + frac12:"jednoduchý zlomek jedna polovina\nzlomek jedna polovina", + frac34:"jednoduchý zlomek tři čtvrtiny\nzlomek tři čtvrtiny", + iquest:"obrácený otazník\notočený otazník", + Agrave:"velké písmeno A s obrácenou čárkou", + Aacute:"velké písmeno A s čárkou", + Acirc:"velké písmeno A se stříškou", + Atilde:"velké písmeno A s vlnovkou", + Auml:"velké písmeno A s přehláskou", + Aring:"velké písmeno A s kroužkem nahoře", + AElig:"velké písmeno AE\nslitek AE, velký", + Ccedil:"velké písmeno C se spodním háčkem", + Egrave:"velké písmeno E s obrácenou čárkou", + Eacute:"velké písmeno E s čárkou", + Ecirc:"velké písmeno E se stříškou", + Euml:"velké písmeno E s přehláskou", + Igrave:"velké písmeno I s obrácenou čárkou", + Iacute:"velké písmeno I s čárkou", + Icirc:"velké písmeno I se stříškou", + Iuml:"velké písmeno I s přehláskou", + ETH:"velké písmeno ETH", + Ntilde:"velké písmeno N s vlnovkou", + Ograve:"velké písmeno O s obrácenou čárkou", + Oacute:"velké písmeno O s čárkou", + Ocirc:"velké písmeno O se stříškou", + Otilde:"velké písmeno O s vlnovkou", + Ouml:"velké písmeno O s přehláskou", + times:"znak násobení", + Oslash:"velké písmeno O s přeškrtnutím", + Ugrave:"velké písmeno U s obrácenou čárkou", + Uacute:"velké písmeno U s čárkou", + Ucirc:"velké písmeno U se stříškou", + Uuml:"velké písmeno U s přehláskou", + Yacute:"velké písmeno Y s čárkou", + THORN:"velké písmeno THORN", + szlig:"malé písmeno ostré s", + agrave:"malé písmeno a s obrácenou čárkou", + aacute:"malé písmeno a s čárkou", + acirc:"malé písmeno a se stříškou", + atilde:"malé písmeno a s vlnovkou", + auml:"malé písmeno a s přehláskou", + aring:"malé písmeno a s kroužkem nahoře", + aelig:"malé písmeno ae\nslitek ae, malý", + ccedil:"malé písmeno c se spodním háčkem", + egrave:"malé písmeno e s obrácenou čárkou", + eacute:"malé písmeno e s čárkou", + ecirc:"malé písmeno e se stříškou", + euml:"malé písmeno e s přehláskou", + igrave:"malé písmeno i s obrácenou čárkou", + iacute:"malé písmeno i s čárkou", + icirc:"malé písmeno i se stříškou", + iuml:"malé písmeno i s přehláskou", + eth:"malé písmeno eth", + ntilde:"malé písmeno n s vlnovkou", + ograve:"malé písmeno o s obrácenou čárkou", + oacute:"malé písmeno o s čárkou", + ocirc:"malé písmeno o se stříškou", + otilde:"malé písmeno o s vlnovkou", + ouml:"malé písmeno o s přehláskou", + divide:"znak dělení", + oslash:"malé písmeno o s přeškrtnutím", + ugrave:"malé písmeno u s obrácenou čárkou", + uacute:"malé písmeno u s čárkou", + ucirc:"malé písmeno u se stříškou", + uuml:"malé písmeno u s přehláskou", + yacute:"malé písmeno y s čárkou", + thorn:"malé písmeno thorn", + yuml:"malé písmeno y s přehláskou", + +// Greek Characters and Symbols + fnof:"malé písmeno f se zahnutým háčkem\nfunkce\nflorin", + Alpha:"velké řecké písmeno alfa", + Beta:"velké řecké písmeno beta", + Gamma:"velké řecké písmeno gama", + Delta:"velké řecké písmeno delta", + Epsilon:"velké řecké písmeno epsilon", + Zeta:"velké řecké písmeno zéta", + Eta:"velké řecké písmeno éta", + Theta:"velké řecké písmeno théta", + Iota:"velké řecké písmeno jóta", + Kappa:"velké řecké písmeno kappa", + Lambda:"velké řecké písmeno lambda", + Mu:"velké řecké písmeno mí", + Nu:"velké řecké písmeno ný", + Xi:"velké řecké písmeno ksí", + Omicron:"velké řecké písmeno omikrón", + Pi:"velké řecké písmeno pí", + Rho:"velké řecké písmeno ró", + Sigma:"velké řecké písmeno sigma", + Tau:"velké řecké písmeno tau", + Upsilon:"velké řecké písmeno ypsilon", + Phi:"velké řecké písmeno fí", + Chi:"velké řecké písmeno chí", + Psi:"velké řecké písmeno psí", + Omega:"velké řecké písmeno ómega", + alpha:"malé řecké písmeno alfa", + beta:"malé řecké písmeno beta", + gamma:"malé řecké písmeno gama", + delta:"malé řecké písmeno delta", + epsilon:"malé řecké písmeno epsilon", + zeta:"malé řecké písmeno zéta", + eta:"malé řecké písmeno éta", + theta:"malé řecké písmeno théta", + iota:"malé řecké písmeno jóta", + kappa:"malé řecké písmeno kappa", + lambda:"malé řecké písmeno lambda", + mu:"malé řecké písmeno mí", + nu:"malé řecké písmeno ný", + xi:"malé řecké písmeno ksí", + omicron:"malé řecké písmeno omikrón", + pi:"malé řecké písmeno pí", + rho:"malé řecké písmeno ró", + sigmaf:"malé řecké písmeno koncové sigma", + sigma:"malé řecké písmeno sigma", + tau:"malé řecké písmeno tau", + upsilon:"malé řecké písmeno ypsilon", + phi:"malé řecké písmeno fí", + chi:"malé řecké písmeno chí", + psi:"malé řecké písmeno psí", + omega:"malé řecké písmeno ómega", + thetasym:"symbol malého řeckého písmena théta", + upsih:"symbol řeckého písmena ypsilon se zahnutým háčkem", + piv:"řecký symbol pí", + bull:"odrážka\nmalý černý kroužek", + hellip:"vodorovná výpustka\ntři tečky", + prime:"čárka nahoře\nminuty\nstopy", + Prime:"dvojitá čárka nahoře\nsekundy\npalce", + oline:"nadtržítko\npruh", + frasl:"lomítko u zlomků", + weierp:"stylizované velké písmeno P\npotenční množina\nWeierstrassovo písmeno p", + image:"velké písmeno I, švabach\nimaginární část", + real:"velké písmeno R, švabach\nsymbol reálné části", + trade:"znak ochranná známka", + alefsym:"symbol alef\nprvní transfinitní kardinál", + larr:"šipka doleva", + uarr:"šipka nahoru", + rarr:"šipka doprava", + darr:"šipka dolů", + harr:"šipka doleva a doprava", + crarr:"šipka dolů zahnutá doleva\nnávrat vozíku, konec řádku", + lArr:"dvojitá šipka doleva", + uArr:"dvojitá šipka nahoru", + rArr:"dvojitá šipka doprava", + dArr:"dvojitá šipka dolů", + hArr:"dvojitá šipka doleva a doprava", + forall:"pro všechny", + part:"parciální diferenciál", + exist:"existuje", + empty:"prázdná množina\nnulová množina\nprůměr", + nabla:"nabla\nzpětná diference", + isin:"prvek množiny", + notin:"není prvkem množiny", + ni:"obsahuje jako člena", + prod:"n-ární součin\nznak součin", + sum:"n-ární součet", + minus:"znak minus", + lowast:"operátor hvězdička", + radic:"druhá odmocnina", + prop:"úměrné", + infin:"nekonečno", + ang:"úhel", + and:"logický operátor a\nklín s hrotem nahoru", + or:"logický operátor nebo\nklín s hrotem dolů", + cap:"průnik\noblouk vypouklý nahoru", + cup:"sjednocení\noblouk vypouklý dolů","int":"integrál", + there4:"a proto", + sim:"operátor tilda\nzměna podle\npodobné", + cong:"přibližně rovno", + asymp:"téměř rovno\nasymptotické k", + ne:"není rovno", + equiv:"shodné s", + le:"menší než nebo rovno", + ge:"větší než nebo rovno", + sub:"podmnožina", + sup:"nadmnožina", + nsub:"není podmnožinou", + sube:"podmnožina nebo shodné s", + supe:"nadmnožina nebo shodné s", + oplus:"znak plus v kroužku\npřímý součet", + otimes:"znak násobení v kroužku\nvektorový součin", + perp:"kolmice\nortogonální k\nkolmé na", + sdot:"operátor tečka", + lceil:"levá horní celá část", + rceil:"pravá horní celá část", + lfloor:"levá dolní celá část", + rfloor:"pravá dolní celá část", + lang:"levá lomená závorka", + rang:"pravá lomená závorka", + loz:"kosočtverec", + spades:"piky", + clubs:"kříže\ntrojlístek", + hearts:"srdce\nvalentýn", + diams:"káry", + OElig:"slitek OE, velký", + oelig:"slitek oe, malý", + Scaron:"velké písmeno S s háčkem", + scaron:"malé písmeno s s háčkem", + Yuml:"velké písmeno Y s přehláskou", + circ:"stříška, modifikátor písmen", + tilde:"malá vlnovka", + ensp:"úzká mezera", + emsp:"široká mezera", + thinsp:"zúžená mezera", + zwnj:"zákaz spojení, nulová šířka", + zwj:"spojení, nulová šířka", + lrm:"značka směru zleva doprava", + rlm:"značka směru zprava doleva", + ndash:"krátká pomlčka", + mdash:"dlouhá pomlčka", + lsquo:"levý apostrof", + rsquo:"pravý apostrof", + sbquo:"dolní apostrof", + ldquo:"levé uvozovky", + rdquo:"pravé uvozovky", + bdquo:"dolní uvozovky", + dagger:"křížek", + Dagger:"dvojitý křížek", + permil:"znak promile", + lsaquo:"levá šipka", + rsaquo:"pravá šipka", + euro:"znak euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/AutoSave.js new file mode 100644 index 0000000..f4eaf08 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Gem", + "saveSettingLabelOn": "Angiv interval for automatisk lagring...", + "saveSettingLabelOff": "Deaktivér automatisk lagring", + "saveSettingdialogTitle": "Gem automatisk", + "saveSettingdialogDescription": "Angiv interval for automatisk lagring", + "saveSettingdialogParamName": "Interval for automatisk lagring", + "saveSettingdialogParamLabel": "min.", + "saveSettingdialogButtonOk": "Angiv interval", + "saveSettingdialogButtonCancel": "Annullér", + "saveMessageSuccess": "Gemt i ${0}", + "saveMessageFail": "Ikke gemt i ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Blockquote.js new file mode 100644 index 0000000..c49cea9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Citat" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Breadcrumb.js new file mode 100644 index 0000000..385943f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} - handlinger", + "selectContents": "Vælg indhold", + "selectElement": "Vælg element", + "deleteElement": "Slet element", + "deleteContents": "Slet indhold", + "moveStart": "Flyt markør til start", + "moveEnd": "Flyt markør til slut" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/CollapsibleToolbar.js new file mode 100644 index 0000000..c066bad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Skjul editorværktøjslinje", + "expand": "Udvid editorværktøjslinje" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/FindReplace.js new file mode 100644 index 0000000..93d833d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Søg efter:", + "findTooltip": "Indtast tekst, der skal søges efter", + "replaceLabel": "Erstat med:", + "replaceTooltip": "Indtast tekst, der skal erstattes med", + "findReplace": "Søg og erstat", + "matchCase": "Store/små bogstaver", + "matchCaseTooltip": "Store/små bogstaver", + "backwards": "Tilbage", + "backwardsTooltip": "Søg baglæns efter tekst", + "replaceAllButton": "Erstat alle", + "replaceAllButtonTooltip": "Erstat alle forekomster i teksten", + "findButton": "Søg", + "findButtonTooltip": "Find teksten", + "replaceButton": "Erstat", + "replaceButtonTooltip": "Erstat teksten", + "replaceDialogText": "Erstattet ${0} forekomster.", + "eofDialogText": "Sidste forekomst ${0}", + "eofDialogTextFind": "fundet", + "eofDialogTextReplace": "erstattet" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/InsertAnchor.js new file mode 100644 index 0000000..a8fdeae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Indsæt anker", + title: "Ankeregenskaber", + anchor: "Navn:", + text: "Beskrivelse:", + set: "Definér", + cancel: "Annullér" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/InsertEntity.js new file mode 100644 index 0000000..07be1cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Indsæt symbol" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/LocalImage.js new file mode 100644 index 0000000..50a5933 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Indsæt billede", + url: "Billede", + browse: "Gennemse...", + text: "Beskrivelse", + set: "Indsæt", + invalidMessage: "Ugyldig billedfiltype", + prePopuTextUrl: "Angiv en billed-URL", + prePopuTextBrowse: " eller søg efter en lokal fil." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/PageBreak.js new file mode 100644 index 0000000..a4dd6e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Sideskift" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/PasteFromWord.js new file mode 100644 index 0000000..8859661 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Sæt ind fra Word", + "paste": "Sæt ind", + "cancel": "Annullér", + "instructions": "Indsæt indholdet fra Word i tekstfeltet nedenfor. Klik på knappen Sæt ind, når du er tilfreds med indholdet. Klik på knappen Annullér for at annullere indsættelse af tekst." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Preview.js new file mode 100644 index 0000000..45e3968 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Eksempel" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/SafePaste.js new file mode 100644 index 0000000..04eae99 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Direkte indsættelse er deaktiveret. Indsæt indholdet i denne dialog ved hjælp af browserens standardtaster eller menupunkter til indsættelse. Klik på knappen Indsæt, når du er tilfreds med indholdet. Tryk på knappen Annullér for at fortryde indsættelsen." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Save.js new file mode 100644 index 0000000..802b706 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Gem" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/ShowBlockNodes.js new file mode 100644 index 0000000..34da4af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Vis HTML-blokelementer" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Smiley.js new file mode 100644 index 0000000..4ad8191 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Indsæt humørikon", + emoticonSmile: "smil", + emoticonLaughing: "ler", + emoticonWink: "blink", + emoticonGrin: "grin", + emoticonCool: "sej", + emoticonAngry: "vred", + emoticonHalf: "halv", + emoticonEyebrow: "øjenbryn", + emoticonFrown: "rynker panden", + emoticonShy: "genert", + emoticonGoofy: "skør", + emoticonOops: "ups", + emoticonTongue: "tungen ud", + emoticonIdea: "idé", + emoticonYes: "ja", + emoticonNo: "nej", + emoticonAngel: "engel", + emoticonCrying: "græder", + emoticonHappy: "glad" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/SpellCheck.js new file mode 100644 index 0000000..4c0f4f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Bundtvis stavekontrol", + unfound: "Ikke fundet", + skip: "Spring over", + skipAll: "Spring alle over", + toDic: "Tilføj til ordbog", + suggestions: "Forslag", + replace: "Erstat", + replaceWith: "Erstat med", + replaceAll: "Erstat alle", + cancel: "Annullér", + msg: "Ingen stavefejl fundet", + iSkip: "Spring dette over", + iSkipAll: "Spring alle disse over", + iMsg: "Ingen forslag til stavning" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/TableDialog.js new file mode 100644 index 0000000..65c699c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Indsæt tabel", + modifyTableTitle: "Revidér tabel", + rows: "Rækker:", + columns: "Kolonner:", + align: "Justér:", + cellPadding: "Cellemargen:", + cellSpacing: "Celleafstand:", + tableWidth: "Tabelbredde:", + backgroundColor: "Baggrundsfarve:", + borderColor: "Kantfarve:", + borderThickness: "Kanttykkelse", + percent: "procent", + pixels: "pixel", + "default": "standard", + left: "venstre", + center: "centreret", + right: "højre", + buttonSet: "Definér", // translated elsewhere? + buttonInsert: "Indsæt", + buttonCancel: "Annullér", + + selectTableLabel: "Markér tabel", + insertTableRowBeforeLabel: "Tilføj række før", + insertTableRowAfterLabel: "Tilføj række efter", + insertTableColumnBeforeLabel: "Tilføj kolonne før", + insertTableColumnAfterLabel: "Tilføj kolonne efter", + deleteTableRowLabel: "Slet række", + deleteTableColumnLabel: "Slet kolonne" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/TextColor.js new file mode 100644 index 0000000..dbdfb23 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Definér", + "cancelButtonText": "Annullér" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/latinEntities.js new file mode 100644 index 0000000..d512430 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/da/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + 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", + AElig:"Latin capital letter AE\nLatin capital ligature AE", + Ccedil:"Latin capital letter C with cedilla", + Egrave:"Latin capital letter E with grave", + Eacute:"Latin capital letter E with acute", + Ecirc:"Latin capital letter E with circumflex", + Euml:"Latin capital letter E with diaeresis", + Igrave:"Latin capital letter I with grave", + Iacute:"Latin capital letter I with acute", + Icirc:"Latin capital letter I with circumflex", + Iuml:"Latin capital letter I with diaeresis", + ETH:"Latin capital letter ETH", + Ntilde:"Latin capital letter N with tilde", + Ograve:"Latin capital letter O with grave", + Oacute:"Latin capital letter O with acute", + Ocirc:"Latin capital letter O with circumflex", + Otilde:"Latin capital letter O with tilde", + Ouml:"Latin capital letter O with diaeresis", + times:"multiplication sign", + Oslash:"Latin capital letter O with stroke\nLatin capital letter O slash", + Ugrave:"Latin capital letter U with grave", + Uacute:"Latin capital letter U with acute", + Ucirc:"Latin capital letter U with circumflex", + Uuml:"Latin capital letter U with diaeresis", + Yacute:"Latin capital letter Y with acute", + THORN:"Latin capital letter THORN", + szlig:"Latin small letter sharp s\ness-zed", + agrave:"Latin small letter a with grave\nLatin small letter a grave", + aacute:"Latin small letter a with acute", + acirc:"Latin small letter a with circumflex", + atilde:"Latin small letter a with tilde", + auml:"Latin small letter a with diaeresis", + aring:"Latin small letter a with ring above\nLatin small letter a ring", + aelig:"Latin small letter ae\nLatin small ligature ae", + ccedil:"Latin small letter c with cedilla", + egrave:"Latin small letter e with grave", + eacute:"Latin small letter e with acute", + ecirc:"Latin small letter e with circumflex", + euml:"Latin small letter e with diaeresis", + igrave:"Latin small letter i with grave", + iacute:"Latin small letter i with acute", + icirc:"Latin small letter i with circumflex", + iuml:"Latin small letter i with diaeresis", + eth:"Latin small letter eth", + ntilde:"Latin small letter n with tilde", + ograve:"Latin small letter o with grave", + oacute:"Latin small letter o with acute", + ocirc:"Latin small letter o with circumflex", + otilde:"Latin small letter o with tilde", + ouml:"Latin small letter o with diaeresis", + divide:"division sign", + oslash:"Latin small letter o with stroke\nLatin small letter o slash", + ugrave:"Latin small letter u with grave", + uacute:"Latin small letter u with acute", + ucirc:"Latin small letter u with circumflex", + uuml:"Latin small letter u with diaeresis", + yacute:"Latin small letter y with acute", + thorn:"Latin small letter thorn", + yuml:"Latin small letter y with diaeresis", + +// Greek Characters and Symbols + fnof:"Latin small f with hook\nfunction\nflorin", + Alpha:"Greek capital letter alpha", + Beta:"Greek capital letter beta", + Gamma:"Greek capital letter gamma", + Delta:"Greek capital letter delta", + Epsilon:"Greek capital letter epsilon", + Zeta:"Greek capital letter zeta", + Eta:"Greek capital letter eta", + Theta:"Greek capital letter theta", + Iota:"Greek capital letter iota", + Kappa:"Greek capital letter kappa", + Lambda:"Greek capital letter lambda", + Mu:"Greek capital letter mu", + Nu:"Greek capital letter nu", + Xi:"Greek capital letter xi", + Omicron:"Greek capital letter omicron", + Pi:"Greek capital letter pi", + Rho:"Greek capital letter rho", + Sigma:"Greek capital letter sigma", + Tau:"Greek capital letter tau", + Upsilon:"Greek capital letter upsilon", + Phi:"Greek capital letter phi", + Chi:"Greek capital letter chi", + Psi:"Greek capital letter psi", + Omega:"Greek capital letter omega", + alpha:"Greek small letter alpha", + beta:"Greek small letter beta", + gamma:"Greek small letter gamma", + delta:"Greek small letter delta", + epsilon:"Greek small letter epsilon", + zeta:"Greek small letter zeta", + eta:"Greek small letter eta", + theta:"Greek small letter theta", + iota:"Greek small letter iota", + kappa:"Greek small letter kappa", + lambda:"Greek small letter lambda", + mu:"Greek small letter mu", + nu:"Greek small letter nu", + xi:"Greek small letter xi", + omicron:"Greek small letter omicron", + pi:"Greek small letter pi", + rho:"Greek small letter rho", + sigmaf:"Greek small letter final sigma", + sigma:"Greek small letter sigma", + tau:"Greek small letter tau", + upsilon:"Greek small letter upsilon", + phi:"Greek small letter phi", + chi:"Greek small letter chi", + psi:"Greek small letter psi", + omega:"Greek small letter omega", + thetasym:"Greek small letter theta symbol", + upsih:"Greek upsilon with hook symbol", + piv:"Greek pi symbol", + bull:"bullet\nblack small circle", + hellip:"horizontal ellipsis\nthree dot leader", + prime:"prime\nminutes\nfeet", + Prime:"double prime\nseconds\ninches", + oline:"overline\nspacing overscore", + frasl:"fraction slash", + weierp:"script capital P\npower set\nWeierstrass p", + image:"blackletter capital I\nimaginary part", + real:"blackletter capital R\nreal part symbol", + trade:"trade mark sign", + alefsym:"alef symbol\nfirst transfinite cardinal", + larr:"leftwards arrow", + uarr:"upwards arrow", + rarr:"rightwards arrow", + darr:"downwards arrow", + harr:"left right arrow", + crarr:"downwards arrow with corner leftwards\ncarriage return", + lArr:"leftwards double arrow", + uArr:"upwards double arrow", + rArr:"rightwards double arrow", + dArr:"downwards double arrow", + hArr:"left right double arrow", + forall:"for all", + part:"partial differential", + exist:"there exists", + empty:"empty set\nnull set\ndiameter", + nabla:"nabla\nbackward difference", + isin:"element of", + notin:"not an element of", + ni:"contains as member", + prod:"n-ary product\nproduct sign", + sum:"n-ary sumation", + minus:"minus sign", + lowast:"asterisk operator", + radic:"square root\nradical sign", + prop:"proportional to", + infin:"infinity", + ang:"angle", + and:"logical and\nwedge", + or:"logical or\nvee", + cap:"intersection\ncap", + cup:"union\ncup","int":"integral", + there4:"therefore", + sim:"tilde operator\nvaries with\nsimilar to", + cong:"approximately equal to", + asymp:"almost equal to\nasymptotic to", + 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" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/AutoSave.js new file mode 100644 index 0000000..c1f0946 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Speichern", + "saveSettingLabelOn": "Intervall für automatisches Speichern festlegen", + "saveSettingLabelOff": "Automatisches Speichern inaktivieren", + "saveSettingdialogTitle": "Automatisch speichern", + "saveSettingdialogDescription": "Intervall für automatisches Speichern angeben", + "saveSettingdialogParamName": "Intervall für automatisches Speichern", + "saveSettingdialogParamLabel": "Min.", + "saveSettingdialogButtonOk": "Intervall festlegen", + "saveSettingdialogButtonCancel": "Abbrechen", + "saveMessageSuccess": "Gespeichert um ${0}", + "saveMessageFail": "Konnte nicht um ${0} gespeichert werden" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Blockquote.js new file mode 100644 index 0000000..7b05205 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockzitat" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Breadcrumb.js new file mode 100644 index 0000000..872947a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Aktionen für ${nodeName}", + "selectContents": "Inhalt auswählen", + "selectElement": "Element auswählen", + "deleteElement": "Element löschen", + "deleteContents": "Inhalt löschen", + "moveStart": "Cursor an Anfang verschieben", + "moveEnd": "Cursor an Ende verschieben" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/CollapsibleToolbar.js new file mode 100644 index 0000000..1b29f90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Editor-Symbolleiste ausblenden", + "expand": "Editor-Symbolleiste einblenden" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/FindReplace.js new file mode 100644 index 0000000..cf8cf8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Suchbegriff:", + "findTooltip": "Text zum Suchen eingeben", + "replaceLabel": "Ersetzen durch:", + "replaceTooltip": "Text zum Ersetzen eingeben", + "findReplace": "Suchen/Ersetzen", + "matchCase": "Groß- und Kleinschreibung abgleichen", + "matchCaseTooltip": "Groß- und Kleinschreibung abgleichen", + "backwards": "Zurück", + "backwardsTooltip": "Rückwärts nach Text suchen", + "replaceAllButton": "Global ersetzen", + "replaceAllButtonTooltip": "Gesamten Text ersetzen", + "findButton": "Suchen", + "findButtonTooltip": "Text suchen", + "replaceButton": "Ersetzen", + "replaceButtonTooltip": "Text ersetzen", + "replaceDialogText": "Es wurden ${0} Vorkommen ersetzt.", + "eofDialogText": "Letztes Vorkommen ${0}", + "eofDialogTextFind": "gefunden", + "eofDialogTextReplace": "ersetzt" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/InsertAnchor.js new file mode 100644 index 0000000..72c1a42 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Anker einfügen", + title: "Eigenschaften des Ankers", + anchor: "Name:", + text: "Beschreibung:", + set: "Festlegen", + cancel: "Abbrechen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/InsertEntity.js new file mode 100644 index 0000000..b50e564 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Symbol einfügen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/LocalImage.js new file mode 100644 index 0000000..0c6a60c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Grafik einfügen", + url: "Grafik", + browse: "Durchsuchen...", + text: "Beschreibung", + set: "Einfügen", + invalidMessage: "Ungültiger Grafikdateityp", + prePopuTextUrl: "Geben Sie eine gültige Grafik-URL ein", + prePopuTextBrowse: "oder blättern Sie zu einer lokalen Datei." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/PageBreak.js new file mode 100644 index 0000000..26ca51d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Seitenumbruch" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/PasteFromWord.js new file mode 100644 index 0000000..7578607 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Aus Word einfügen", + "paste": "Einfügen", + "cancel": "Abbrechen", + "instructions": "Fügt den Inhalt aus Word in das Textfeld unten ein. Wenn Sie mit dem einzufügenden Inhalt zufrieden sind, klicken Sie auf die Schaltfläche zum Einfügen. Um das Einfügen von Text abzubrechen, klicken Sie auf die Schaltfläche zum Abbrechen. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Preview.js new file mode 100644 index 0000000..19c89b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Vorschau" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/SafePaste.js new file mode 100644 index 0000000..17b1a74 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Direktes Einfügen ist inaktiviert. Fügen Sie Inhalte in diesen Dialog mithilfe der Standardsteuerelemente ein, die im Browser über die Tastatur oder über die Menüs zum Einfügen zur Verfügung stehen. Wenn der einzufügende Inhalt korrekt ist, drücken Sie die Einfügetaste. Zum Abbrechen der Einfügeoperation drücken Sie die Abbruchtaste." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Save.js new file mode 100644 index 0000000..f635309 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Speichern" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/ShowBlockNodes.js new file mode 100644 index 0000000..1c684b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "HTML-Blockelemente anzeigen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Smiley.js new file mode 100644 index 0000000..226cf64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Emoticon einfügen", + emoticonSmile: "Lächeln", + emoticonLaughing: "Lachen", + emoticonWink: "Augenzwinkern", + emoticonGrin: "Grinsen", + emoticonCool: "Cool", + emoticonAngry: "Zornig", + emoticonHalf: "Halb", + emoticonEyebrow: "Hochgezogene Augenbraue", + emoticonFrown: "Stirnrunzeln", + emoticonShy: "Schüchtern", + emoticonGoofy: "Albern", + emoticonOops: "Hoppla", + emoticonTongue: "Zunge", + emoticonIdea: "Idee", + emoticonYes: "Ja", + emoticonNo: "Nein", + emoticonAngel: "Engel", + emoticonCrying: "Weinen", + emoticonHappy: "Fröhlich" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/SpellCheck.js new file mode 100644 index 0000000..5f504a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Batchrechtschreibprüfung", + unfound: "Nicht gefunden", + skip: "Überspringen", + skipAll: "Alle überspringen", + toDic: "Zum Wörterbuch hinzufügen", + suggestions: "Vorschläge", + replace: "Ersetzen", + replaceWith: "Ersetzen durch", + replaceAll: "Global ersetzen", + cancel: "Abbrechen", + msg: "Keine Rechtschreibfehler gefunden", + iSkip: "Diesen Fund überspringen", + iSkipAll: "Alle entsprechenden Funde überspringen", + iMsg: "Keine Rechtschreibvorschläge" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/TableDialog.js new file mode 100644 index 0000000..a4284d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Tabelle einfügen", + modifyTableTitle: "Tabelle ändern", + rows: "Zeilen:", + columns: "Spalten:", + align: "Ausrichten:", + cellPadding: "Zellenrandbreite:", + cellSpacing: "Zellenabstand:", + tableWidth: "Tabellenbreite:", + backgroundColor: "Hintergrundfarbe:", + borderColor: "Randfarbe:", + borderThickness: "Randbreite", + percent: "Prozent", + pixels: "Pixel", + "default": "Standard", + left: "Links", + center: "Mitte", + right: "Rechts", + buttonSet: "Festlegen", // translated elsewhere? + buttonInsert: "Einfügen", + buttonCancel: "Abbrechen", + + selectTableLabel: "Tabelle auswählen", + insertTableRowBeforeLabel: "Zeile oberhalb einfügen", + insertTableRowAfterLabel: "Zeile unterhalb einfügen", + insertTableColumnBeforeLabel: "Spalte oberhalb einfügen", + insertTableColumnAfterLabel: "Spalte unterhalb einfügen", + deleteTableRowLabel: "Zeile löschen", + deleteTableColumnLabel: "Spalte löschen" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/TextColor.js new file mode 100644 index 0000000..f2c42d6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Festlegen", + "cancelButtonText": "Abbrechen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/latinEntities.js new file mode 100644 index 0000000..8a963ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/de/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"Umgekehrtes Ausrufezeichen", + cent:"Cent-Zeichen", + pound:"Nummernzeichen", + curren:"Währungssymbol", + yen:"Yen-Zeichen\Nyuan-Zeichen", + brvbar:"Unterbrochener Balken\nUnterbrochener vertikaler Balken", + sect:"Abschnittszeichen", + uml:"Trema\nLeerzeichen mit Trema", + copy:"Copyrightzeichen", + ordf:"Weibliches Ordinalzeichen", + laquo:"Doppelte, winklige Anführungszeichen, die nach links weisen\linke französische Anführungszeichen", + not:"Nicht-Zeichen", + shy:"Veränderlicher Silbentrennstrich\nbedingter Trennstrich", + reg:"Registrierte Handelsmarke\nregistriertes Markenzeichen", + macr:"Makron\nLeerzeichen mit Makron\nÜberstrich\nQuerstrich über 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ännliches Ordinalzeichen", + raquo:"Doppelte, winklige Anführungszeichen, die nach rechts weisen\nRechtes französisches Anführungszeichen", + 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ßes A mit Gravis\nGroßbuchstabe A mit Gravis", + Aacute:"Großbuchstabe A mit Akut", + Acirc:"Großbuchstabe A mit Zirkumflex", + Atilde:"Großbuchstabe A mit Tilde", + Auml:"Großbuchstabe A mit Trema", + Aring:"Großes A mit Ring darüber\nLateinischer Großbuchstabe A mit Ring darüber", + AElig:"Großes AE\nLigatur aus Großbuchstaben A und E", + Ccedil:"Großbuchstabe C mit Cedilla", + Egrave:"Großbuchstabe E mit Gravis", + Eacute:"Großbuchstabe E mit Akut", + Ecirc:"Großbuchstabe E mit Zirkumflex", + Euml:"Großbuchstabe E mit Trema", + Igrave:"Großbuchstabe I mit Gravis", + Iacute:"Großbuchstabe I mit Akut", + Icirc:"Großbuchstabe I mit Zirkumflex", + Iuml:"Großbuchstabe I mit Trema", + ETH:"Großes ETH", + Ntilde:"Großbuchstabe N mit Tilde", + Ograve:"Großbuchstabe O mit Gravis", + Oacute:"Großbuchstabe O mit Akut", + Ocirc:"Großbuchstabe O mit Zirkumflex", + Otilde:"Lateinischer Großbuchstabe O mit Tilde", + Ouml:"Lateinischer Großbuchstabe O mit Trema", + times:"Multiplikationszeichen", + Oslash:"Großes O mit Schrägstrich\nGroßer dänisch-norwegischer Umlaut ö", + Ugrave:"Großbuchstabe U mit Gravis", + Uacute:"Großbuchstabe U mit Akut", + Ucirc:"Großbuchstabe U mit Zirkumflex", + Uuml:"Großbuchstabe U mit Trema", + Yacute:"Großbuchstabe Y mit Akut", + THORN:"Großes THORN", + szlig:"Scharfes s\nEsszett", + agrave:"Kleines a mit Gravis\nKleinbuchstabe a mit Gravis", + aacute:"Kleinbuchstabe a mit Aktut", + acirc:"Kleinbuchstabe a mit Zirkumflex", + atilde:"Kleinbuchstabe a mit Tilde", + auml:"Kleinbuchstabe a mit Trema", + aring:"Kleines a mit Ring darüber\nKleinbuchstabe a mit Ring", + aelig:"Kleines ae\nLigatur aus Kleinbuchstaben a und e", + ccedil:"Kleinbuchstabe c mit Cedilla", + egrave:"Kleinbuchstabe e mit Gravis", + eacute:"Kleinbuchstabe e mit Aktut", + ecirc:"Kleinbuchstabe e mit Zirkumflex", + euml:"Kleinbuchstabe e mit Trema", + igrave:"Kleinbuchstabe i mit Gravis", + iacute:"Kleinbuchstabe i mit Aktut", + icirc:"Kleinbuchstabe i mit Zirkumflex", + iuml:"Kleinbuchstabe i mit Trema", + eth:"Kleines eth", + ntilde:"Kleinbuchstabe n mit Tilde", + ograve:"Kleinbuchstabe o mit Gravis", + oacute:"Kleinbuchstabe o mit Aktut", + ocirc:"Kleinbuchstabe o mit Zirkumflex", + otilde:"Kleinbuchstabe o mit Tilde", + ouml:"Kleinbuchstabe o mit Gravis", + divide:"Divisionszeichen", + oslash:"Kleines o mit Schrägstrich\nKleiner dänisch-norwegischer Umlaut ö", + ugrave:"Kleinbuchstabe u mit Gravis", + uacute:"Kleinbuchstabe u mit Aktut", + ucirc:"Kleinbuchstabe u mit Zirkumflex", + uuml:"Kleinbuchstabe u mit Trema", + yacute:"Kleinbuchstabe y mit Aktut", + thorn:"Kleines thorn", + yuml:"Kleinbuchstabe y mit Trema", + +// Greek Characters and Symbols + fnof:"Kleines mit Haken\nFunction\nFlorin", + Alpha:"Griechischer Großbuchstabe Alpha", + Beta:"Griechischer Großbuchstabe Beta", + Gamma:"Griechischer Großbuchstabe Gamma", + Delta:"Griechischer Großbuchstabe Delta", + Epsilon:"Griechischer Großbuchstabe Epsilon", + Zeta:"Griechischer Großbuchstabe Zeta", + Eta:"Griechischer Großbuchstabe Eta", + Theta:"Griechischer Großbuchstabe Theta", + Iota:"Griechischer Großbuchstabe Iota", + Kappa:"Griechischer Großbuchstabe Kappa", + Lambda:"Griechischer Großbuchstabe Lambda", + Mu:"Griechischer Großbuchstabe My", + Nu:"Griechischer Großbuchstabe Ny", + Xi:"Griechischer Großbuchstabe Xi", + Omicron:"Griechischer Großbuchstabe Omicron", + Pi:"Griechischer Großbuchstabe Pi", + Rho:"Griechischer Großbuchstabe Rho", + Sigma:"Griechischer Großbuchstabe Sigma", + Tau:"Griechischer Großbuchstabe Tau", + Upsilon:"Griechischer Großbuchstabe Upsilon", + Phi:"Griechischer Großbuchstabe Phi", + Chi:"Griechischer Großbuchstabe Chi", + Psi:"Griechischer Großbuchstabe Psi", + Omega:"Griechischer Großbuchstabe Omega", + alpha:"Griechischer Kleinbuchstabe Alpha", + beta:"Griechischer Kleinbuchstabe Beta", + gamma:"Griechischer Kleinbuchstabe Gamma", + delta:"Griechischer Kleinbuchstabe Delta", + epsilon:"Griechischer Kleinbuchstabe Epsilon", + zeta:"Griechischer Kleinbuchstabe Zeta", + eta:"Griechischer Kleinbuchstabe Eta", + theta:"Griechischer Kleinbuchstabe Theta", + iota:"Griechischer Kleinbuchstabe Iota", + kappa:"Griechischer Kleinbuchstabe Kappa", + lambda:"Griechischer Kleinbuchstabe Lambda", + mu:"Griechischer Kleinbuchstabe My", + nu:"Griechischer Kleinbuchstabe Ny", + xi:"Griechischer Kleinbuchstabe Xi", + omicron:"Griechischer Kleinbuchstabe Omicron", + pi:"Griechischer Kleinbuchstabe Pi", + rho:"Griechischer Kleinbuchstabe Rho", + sigmaf:"Griechischer Kleinbuchstabe Sigma am Wortende", + sigma:"Griechischer Kleinbuchstabe Sigma", + tau:"Griechischer Kleinbuchstabe Tau", + upsilon:"Griechischer Kleinbuchstabe Upsilon", + phi:"Griechischer Kleinbuchstabe Phi", + chi:"Griechischer Kleinbuchstabe Chi", + psi:"Griechischer Kleinbuchstabe Psi", + omega:"Griechischer Kleinbuchstabe Omega", + thetasym:"Griechischer Kleinbuchstabe Theta (Symbol)", + upsih:"Griechisches Upsilon mit Haken", + piv:"Griechisches Pi-Symbol", + bull:"Rundes Aufzählungszeichen\nSchwarzer kleiner Kreis", + hellip:"Auslassung\nDrei kleine Punkte", + prime:"Prime\nMinuten\nFuß", + Prime:"Doppelter Prime\nSekunden\nZoll", + oline:"Hochgestellter Querstrich\nLeerzeichen mit Oberstrich", + frasl:"Schrägstrich für Bruch", + weierp:"Kleines p in Schreibschrift\nPotenz\nWeierstrass'sche Ellipsen-Funktion", + image:"Großes I in Frakturschrift\nImaginärteil", + real:"Großes R in Frakturschrift\nRealteilsymbol", + trade:"Markenzeichen", + alefsym:"Alef-Symbol\nerste Transfinite Kardinalzahl", + larr:"Linkspfeil", + uarr:"Aufwärtspfeil", + rarr:"Rechtspfeil", + darr:"Abwärtspfeil", + harr:"Links-Rechts-Pfeil", + crarr:"Abwärtspfeil, der nach links abknickt\nZeilenumbruch", + lArr:"Doppelter Linkspfeil", + uArr:"Doppelter Aufwärtspfeil", + rArr:"Doppelter Rechtspfeil", + dArr:"Doppelter Abwärtspfeil", + hArr:"Doppelter Rechts-Links-Pfeil", + forall:"Für alle", + part:"Partielle Differenzialgleichung", + exist:"Es existiert", + empty:"Leermenge\nNullmenge\nDurchmesser", + nabla:"Nabla\nAbsteigende Differenz", + isin:"Element von", + notin:"Kein Element von", + ni:"Enthält als Member", + prod:"unäres Produkt\nProduktzeichen", + sum:"unäre Summation", + minus:"Minuszeichen", + lowast:"Sternoperator", + radic:"Quadratwurzel\nWurzelzeichen", + prop:"proportional zu", + infin:"Unendlich", + ang:"Winkel", + and:"Logisches Und\nKeil", + or:"Logisches Oder\nv-förmig", + cap:"Schnittpunkt\nHütchen", + cup:"Vereinigungsmenge\nCup","int":"Integral", + there4:"Deshalb", + sim:"Tilde (Operator)\nvariiert mit\nähnlich wie", + cong:"Etwa gleich mit", + asymp:"Ungefähr gleich mit\nasymptotisch", + ne:"Nicht gleich mit", + equiv:"Identisch mit", + le:"Kleiner-gleich", + ge:"Größer-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ßbuchstaben O und E", + oelig:"Ligatur aus Kleinbuchstaben o und e", + Scaron:"Großbuchstabe S mit Caron", + scaron:"Kleinbuchstabe s mit Caron", + Yuml:"Großbuchstabe 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änge des Buchstabens n", + mdash:"Gedankenstrich von der Länge des Buchstabens m", + lsquo:"Linkes einfaches Anführungszeichen", + rsquo:"Rechtes einfaches Anführungszeichen", + sbquo:"Einfaches, gekrümmtes Anführungszeichen unten", + ldquo:"Linkes doppeltes Anführungszeichen", + rdquo:"Rechtes doppeltes Anführungszeichen", + bdquo:"Doppeltes, gekrümmtes Anführungszeichen unten", + dagger:"Kreuzzeichen", + Dagger:"Doppelkreuzzeichen", + permil:"Promillezeichen", + lsaquo:"Einfaches linkes Anführungszeichen", + rsaquo:"Einfaches rechtes Anführungszeichen", + euro:"Euro-Zeichen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/AutoSave.js new file mode 100644 index 0000000..855c06f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Αποθήκευση", + "saveSettingLabelOn": "Ορισμός διαστήματος αυτόματης αποθήκευσης...", + "saveSettingLabelOff": "Απενεργοποίηση αυτόματης αποθήκευσης", + "saveSettingdialogTitle": "Αυτόματη αποθήκευση", + "saveSettingdialogDescription": "Ορισμός διαστήματος αυτόματης αποθήκευσης", + "saveSettingdialogParamName": "Διάστημα αυτόματης αποθήκευσης", + "saveSettingdialogParamLabel": "λεπτά", + "saveSettingdialogButtonOk": "Ορισμός διαστήματος", + "saveSettingdialogButtonCancel": "Ακύρωση", + "saveMessageSuccess": "Αποθηκεύτηκε στις ${0}", + "saveMessageFail": "Απέτυχε η αποθήκευση στις ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Blockquote.js new file mode 100644 index 0000000..a36e467 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Ενότητα παράθεσης" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Breadcrumb.js new file mode 100644 index 0000000..754271f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} - Ενέργειες", + "selectContents": "Επιλογή περιεχομένων", + "selectElement": "Επιλογή στοιχείου", + "deleteElement": "Διαγραφή στοιχείου", + "deleteContents": "Διαγραφή περιεχομένων", + "moveStart": "Μετακίνηση δρομέα στην αρχή", + "moveEnd": "Μετακίνηση δρομέα στο τέλος" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/CollapsibleToolbar.js new file mode 100644 index 0000000..e2dfb45 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Σύμπτυξη γραμμής εργαλείων λειτουργίας επεξεργασίας", + "expand": "Ανάπτυξη γραμμής εργαλείων λειτουργίας επεξεργασίας" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/FindReplace.js new file mode 100644 index 0000000..a5fd0f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Εύρεση:", + "findTooltip": "Καταχωρήστε το κείμενο που θέλετε να εντοπίσετε", + "replaceLabel": "Αντικατάσταση με:", + "replaceTooltip": "Καταχωρήστε το κείμενο με το οποίο θέλετε να αντικαταστήσετε το αναζητούμενο κείμενο", + "findReplace": "Εύρεση και αντικατάσταση", + "matchCase": "Διάκριση πεζών/κεφαλαίων", + "matchCaseTooltip": "Διάκριση πεζών/κεφαλαίων", + "backwards": "Προς τα πίσω", + "backwardsTooltip": "Αναζήτηση κειμένου προς τα πίσω", + "replaceAllButton": "Αντικατάσταση όλων", + "replaceAllButtonTooltip": "Αντικατάσταση όλου του κειμένου", + "findButton": "Εύρεση", + "findButtonTooltip": "Εύρεση του κειμένου", + "replaceButton": "Αντικατάσταση", + "replaceButtonTooltip": "Αντικατάσταση του κειμένου", + "replaceDialogText": "Αντικαταστάθηκαν ${0} εμφανίσεις.", + "eofDialogText": "Τελευταία εμφάνιση: ${0}", + "eofDialogTextFind": "εντοπίστηκε", + "eofDialogTextReplace": "αντικαταστάθηκε" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/InsertAnchor.js new file mode 100644 index 0000000..f506414 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Εισαγωγή αγκίστρωσης", + title: "Ιδιότητες αγκίστρωσης", + anchor: "Όνομα:", + text: "Περιγραφή:", + set: "Ορισμός", + cancel: "Ακύρωση" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/InsertEntity.js new file mode 100644 index 0000000..8a130fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Εισαγωγή συμβόλου" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/LocalImage.js new file mode 100644 index 0000000..a0404da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Εισαγωγή εικόνας", + url: "Εικόνα", + browse: "Αναζήτηση...", + text: "Περιγραφή", + set: "Εισαγωγή", + invalidMessage: "Μη έγκυρο είδος αρχείου εικόνας", + prePopuTextUrl: "Καταχωρήστε τη διεύθυνση URL μιας εικόνας", + prePopuTextBrowse: " ή επιλέξτε ένα τοπικό αρχείο." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/PageBreak.js new file mode 100644 index 0000000..56e2990 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Αλλαγή σελίδας" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/PasteFromWord.js new file mode 100644 index 0000000..f8d32be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Επικόλληση από το Word", + "paste": "Επικόλληση", + "cancel": "Ακύρωση", + "instructions": "Επικολλήστε το περιεχόμενο από το Word στο παρακάτω πλαίσιο. Όταν το κείμενο για εισαγωγή είναι σωστό, πατήστε το κουμπί Επικόλληση. Για να ακυρώσετε την εισαγωγή κειμένου, πατήστε το κουμπί Ακύρωση." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Preview.js new file mode 100644 index 0000000..eb9b7b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Προεπισκόπηση" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/SafePaste.js new file mode 100644 index 0000000..68cdaf8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Η δυνατότητα άμεσης επικόλλησης έχει απενεργοποιηθεί. Επικολλήστε το περιεχόμενο σε αυτό το παράθυρο χρησιμοποιώντας τους καθιερωμένους συνδυασμούς πλήκτρων ή επιλογές μενού του προγράμματος πλοήγησης. Όταν το κείμενο για εισαγωγή είναι σωστό, πατήστε το κουμπί Επικόλληση. Για να ακυρώσετε την εισαγωγή περιεχομένου, πατήστε το κουμπί Ακύρωση." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Save.js new file mode 100644 index 0000000..9ec635a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Αποθήκευση" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/ShowBlockNodes.js new file mode 100644 index 0000000..ca7a605 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Εμφάνιση στοιχείων ενότητας HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Smiley.js new file mode 100644 index 0000000..53bd0ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Εισαγωγή εικονιδίου συναισθήματος", + emoticonSmile: "Χαμόγελο", + emoticonLaughing: "Γέλιο", + emoticonWink: "Κλείσιμο ματιού", + emoticonGrin: "Πλατύ χαμόγελο", + emoticonCool: "Άνετος", + emoticonAngry: "Θυμωμένος", + emoticonHalf: "Μισό", + emoticonEyebrow: "Σηκωμένο φρύδι", + emoticonFrown: "Συνοφρυωμένος", + emoticonShy: "Ντροπαλός", + emoticonGoofy: "Χαζόφατσα", + emoticonOops: "Έκπληξη", + emoticonTongue: "Κοροϊδία", + emoticonIdea: "Ιδέα", + emoticonYes: "Ναι", + emoticonNo: "Όχι", + emoticonAngel: "Αγγελούδι", + emoticonCrying: "Κλάμα", + emoticonHappy: "Ευτυχία" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/SpellCheck.js new file mode 100644 index 0000000..4753341 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Συνολικός ορθογραφικός έλεγχος", + unfound: "Δεν εντοπίστηκε", + skip: "Παράλειψη", + skipAll: "Παράλειψη όλων", + toDic: "Προσθήκη στο λεξικό", + suggestions: "Προτάσεις", + replace: "Αντικατάσταση", + replaceWith: "Αντικατάσταση με", + replaceAll: "Αντικατάσταση όλων", + cancel: "Ακύρωση", + msg: "Δεν βρέθηκαν ορθογραφικά λάθη", + iSkip: "Παράλειψη τρέχοντος", + iSkipAll: "Παράλειψη όλων των όμοιων", + iMsg: "Δεν υπάρχουν προτάσεις ορθογραφίας" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/TableDialog.js new file mode 100644 index 0000000..5e95d11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Εισαγωγή πίνακα", + modifyTableTitle: "Τροποποίηση πίνακα", + rows: "Γραμμές:", + columns: "Στήλες:", + align: "Στοίχιση:", + cellPadding: "Περιθώριο κελιών:", + cellSpacing: "Απόσταση κελιών", + tableWidth: "Πλάτος πίνακα:", + backgroundColor: "Χρώμα φόντου:", + borderColor: "Χρώμα περιγράμματος:", + borderThickness: "Πάχος περιγράμματος", + percent: "ποσοστό", + pixels: "εικονοστοιχεία", + "default": "προεπιλογή", + left: "αριστερά", + center: "κέντρο", + right: "δεξιά", + buttonSet: "Ορισμός", // translated elsewhere? + buttonInsert: "Εισαγωγή", + buttonCancel: "Ακύρωση", + + selectTableLabel: "Επιλογή πίνακα", + insertTableRowBeforeLabel: "Προσθήκη γραμμής πριν", + insertTableRowAfterLabel: "Προσθήκη γραμμής μετά", + insertTableColumnBeforeLabel: "Προσθήκη στήλης πριν", + insertTableColumnAfterLabel: "Προσθήκη στήλης μετά", + deleteTableRowLabel: "Διαγραφή γραμμής", + deleteTableColumnLabel: "Διαγραφή στήλης" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/TextColor.js new file mode 100644 index 0000000..db99be9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Ορισμός", + "cancelButtonText": "Ακύρωση" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/latinEntities.js new file mode 100644 index 0000000..94c0f21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/el/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"Αντεστραμμένο θαυμαστικό", + cent:"Σύμβολο λεπτού δολαρίου (σεντ)", + pound:"Σύμβολο λίρας", + curren:"Σύμβολο νομίσματος", + yen:"Σύμβολο γιεν\Σύμβολο γιουάν", + brvbar:"Διακεκομμένη κάθετος", + sect:"Σύμβολο εδαφίου/παραγράφου", + uml:"Διαλυτικά", + copy:"Σύμβολο copyright", + ordf:"Δείκτης τακτικού αριθμητικού θηλυκού γένους", + laquo:"Αριστερά ελληνικά εισαγωγικά", + not:"Σύμβολο 'δεν είναι'", + shy:"Προαιρετικό ενωτικό", + reg:"Σύμβολο σήματος κατατεθέντος", + macr:"Σύμβολο μακρού", + deg:"Σύμβολο βαθμού/μοίρας", + plusmn:"Σύμβολο συν-πλην", + sup2:"Εκθέτης 2", + sup3:"Εκθέτης 3", + acute:"Οξεία", + micro:"Σύμβολο 'μίκρο'", + para:"Σύμβολο παραγράφου", + middot:"Τελεία διαχωρισμού\nΕλληνική άνω τελεία", + cedil:"Σημείο υπόστιξης", + sup1:"Εκθέτης 1", + ordm:"Δείκτης τακτικού αριθμητικού αρσενικού γένους", + raquo:"Δεξιά ελληνικά εισαγωγικά", + frac14:"Κλάσμα ενός τετάρτου", + frac12:"Κλάσμα ενός δευτέρου", + frac34:"Κλάσμα τριών τετάρτων", + iquest:"Αντεστραμμένο λατινικό ερωτηματικό", + Agrave:"Κεφαλαίο λατινικό γράμμα Α με βαρεία", + Aacute:"Κεφαλαίο λατινικό γράμμα Α με οξεία", + Acirc:"Κεφαλαίο λατινικό γράμμα Α με περισπωμένη circumflex", + Atilde:"Κεφαλαίο λατινικό γράμμα Α με περισπωμένη tilde", + Auml:"Κεφαλαίο λατινικό γράμμα Α με διαλυτικά", + Aring:"Κεφαλαίο λατινικό γράμμα Α με δακτύλιο", + AElig:"Κεφαλαίο λατινικό δίψηφο AE", + Ccedil:"Κεφαλαίο λατινικό γράμμα C με υπόστιξη", + Egrave:"Κεφαλαίο λατινικό γράμμα E με βαρεία", + Eacute:"Κεφαλαίο λατινικό γράμμα E με οξεία", + Ecirc:"Κεφαλαίο λατινικό γράμμα E με περισπωμένη circumflex", + Euml:"Κεφαλαίο λατινικό γράμμα E με διαλυτικά", + Igrave:"Κεφαλαίο λατινικό γράμμα I με βαρεία", + Iacute:"Κεφαλαίο λατινικό γράμμα I με οξεία", + Icirc:"Κεφαλαίο λατινικό γράμμα I με περισπωμένη circumflex", + Iuml:"Κεφαλαίο λατινικό γράμμα I με διαλυτικά", + ETH:"Κεφαλαίο λατινικό γράμμα ETH", + Ntilde:"Κεφαλαίο λατινικό γράμμα N με περισπωμένη tilde", + Ograve:"Κεφαλαίο λατινικό γράμμα O με βαρεία", + Oacute:"Κεφαλαίο λατινικό γράμμα O με οξεία", + Ocirc:"Κεφαλαίο λατινικό γράμμα O με περισπωμένη circumflex", + Otilde:"Κεφαλαίο λατινικό γράμμα O με περισπωμένη tilde", + Ouml:"Κεφαλαίο λατινικό γράμμα O με διαλυτικά", + times:"Σύμβολο πολλαπλασιασμού", + Oslash:"Κεφαλαίο λατινικό γράμμα O με κάθετο", + Ugrave:"Κεφαλαίο λατινικό γράμμα U με βαρεία", + Uacute:"Κεφαλαίο λατινικό γράμμα U με οξεία", + Ucirc:"Κεφαλαίο λατινικό γράμμα U με περισπωμένη circumflex", + Uuml:"Κεφαλαίο λατινικό γράμμα U με διαλυτικά", + Yacute:"Κεφαλαίο λατινικό γράμμα Y με οξεία", + THORN:"Κεφαλαίο λατινικό γράμμα THORN", + szlig:"Πεζό λατινικό γράμμα ες-τσετ", + agrave:"Πεζό λατινικό γράμμα a με βαρεία", + aacute:"Πεζό λατινικό γράμμα a με οξεία", + acirc:"Πεζό λατινικό γράμμα a με περισπωμένη circumflex", + atilde:"Πεζό λατινικό γράμμα a με περισπωμένη tilde", + auml:"Πεζό λατινικό γράμμα a με διαλυτικά", + aring:"Πεζό λατινικό γράμμα a με δακτύλιο", + aelig:"Πεζό λατινικό δίψηφο ae", + ccedil:"Πεζό λατινικό γράμμα c με υπόστιξη", + egrave:"Πεζό λατινικό γράμμα e με βαρεία", + eacute:"Πεζό λατινικό γράμμα e με οξεία", + ecirc:"Πεζό λατινικό γράμμα e με περισπωμένη circumflex", + euml:"Πεζό λατινικό γράμμα e με διαλυτικά", + igrave:"Πεζό λατινικό γράμμα i με βαρεία", + iacute:"Πεζό λατινικό γράμμα i με οξεία", + icirc:"Πεζό λατινικό γράμμα i με περισπωμένη circumflex", + iuml:"Πεζό λατινικό γράμμα i με διαλυτικά", + eth:"Πεζό λατινικό γράμμα eth", + ntilde:"Πεζό λατινικό γράμμα n με περισπωμένη tilde", + ograve:"Πεζό λατινικό γράμμα o με βαρεία", + oacute:"Πεζό λατινικό γράμμα o με οξεία", + ocirc:"Πεζό λατινικό γράμμα o με περισπωμένη circumflex", + otilde:"Πεζό λατινικό γράμμα o με περισπωμένη tilde", + ouml:"Πεζό λατινικό γράμμα o με διακριτικά", + divide:"Σύμβολο διαίρεσης", + oslash:"Πεζό λατινικό γράμμα o με κάθετο", + ugrave:"Πεζό λατινικό γράμμα u με βαρεία", + uacute:"Πεζό λατινικό γράμμα u με οξεία", + ucirc:"Πεζό λατινικό γράμμα u με περισπωμένη circumflex", + uuml:"Πεζό λατινικό γράμμα u με διαλυτικά", + yacute:"Πεζό λατινικό γράμμα y με οξεία", + thorn:"Πεζό λατινικό γράμμα thorn", + yuml:"Πεζό λατινικό γράμμα y με διαλυτικά", + +// Greek Characters and Symbols + fnof:"Πεζό λατινικό γράμμα f με άγκιστρο\nΣύμβολο συνάρτησης", + Alpha:"Κεφαλαίο ελληνικό γράμμα Α", + Beta:"Κεφαλαίο ελληνικό γράμμα Β", + Gamma:"Κεφαλαίο ελληνικό γράμμα Γ", + Delta:"Κεφαλαίο ελληνικό γράμμα Δ", + Epsilon:"Κεφαλαίο ελληνικό γράμμα Ε", + Zeta:"Κεφαλαίο ελληνικό γράμμα Ζ", + Eta:"Κεφαλαίο ελληνικό γράμμα Η", + Theta:"Κεφαλαίο ελληνικό γράμμα Θ", + Iota:"Κεφαλαίο ελληνικό γράμμα Ι", + Kappa:"Κεφαλαίο ελληνικό γράμμα Κ", + Lambda:"Κεφαλαίο ελληνικό γράμμα Λ", + Mu:"Κεφαλαίο ελληνικό γράμμα Μ", + Nu:"Κεφαλαίο ελληνικό γράμμα Ν", + Xi:"Κεφαλαίο ελληνικό γράμμα Ξ", + Omicron:"Κεφαλαίο ελληνικό γράμμα Ο", + Pi:"Κεφαλαίο ελληνικό γράμμα Π", + Rho:"Κεφαλαίο ελληνικό γράμμα Ρ", + Sigma:"Κεφαλαίο ελληνικό γράμμα Σ", + Tau:"Κεφαλαίο ελληνικό γράμμα Τ", + Upsilon:"Κεφαλαίο ελληνικό γράμμα Υ", + Phi:"Κεφαλαίο ελληνικό γράμμα Φ", + Chi:"Κεφαλαίο ελληνικό γράμμα Χ", + Psi:"Κεφαλαίο ελληνικό γράμμα Ψ", + Omega:"Κεφαλαίο ελληνικό γράμμα Ω", + alpha:"Πεζό ελληνικό γράμμα α", + beta:"Πεζό ελληνικό γράμμα β", + gamma:"Πεζό ελληνικό γράμμα γ", + delta:"Πεζό ελληνικό γράμμα δ", + epsilon:"Πεζό ελληνικό γράμμα ε", + zeta:"Πεζό ελληνικό γράμμα ζ", + eta:"Πεζό ελληνικό γράμμα η", + theta:"Πεζό ελληνικό γράμμα θ", + iota:"Πεζό ελληνικό γράμμα ι", + kappa:"Πεζό ελληνικό γράμμα κ", + lambda:"Πεζό ελληνικό γράμμα λ", + mu:"Πεζό ελληνικό γράμμα μ", + nu:"Πεζό ελληνικό γράμμα ν", + xi:"Πεζό ελληνικό γράμμα ξ", + omicron:"Πεζό ελληνικό γράμμα ο", + pi:"Πεζό ελληνικό γράμμα π", + rho:"Πεζό ελληνικό γράμμα ρ", + sigmaf:"Πεζό ελληνικό γράμμα ς", + sigma:"Πεζό ελληνικό γράμμα σ", + tau:"Πεζό ελληνικό γράμμα τ", + upsilon:"Πεζό ελληνικό γράμμα υ", + phi:"Πεζό ελληνικό γράμμα φ", + chi:"Πεζό ελληνικό γράμμα χ", + psi:"Πεζό ελληνικό γράμμα ψ", + omega:"Πεζό ελληνικό γράμμα ω", + thetasym:"Σύμβολο θ (Πεζό ελληνικό γράμμα θήτα)", + upsih:"Σύμβολο Υ (Ελληνικό γράμμα ύψιλον με άγκριστρο)", + piv:"Σύμβολο π (Ελληνικό γράμμα πι)", + bull:"Κουκίδα\nΜικρός μαύρος κύκλος", + hellip:"Αποσιωπητικά\nΟριζόντια έλλειψη", + prime:"Τόνος\nΛεπτά\nΠόδια", + Prime:"Διπλός τόνος\nΔευτερόλεπτα\nΊντσες", + oline:"Άνω γραμμή", + frasl:"Κάθετος κλάσματος", + weierp:"Καλλιγραφικό κεφαλαίο P\nΔυναμοσύνολο\np-συνάρτηση του Weierstrass", + image:"Κεφαλαίο I γοτθικού στυλ (black-letter)\nΣύμβολο φανταστικού μέρους", + real:"Κεφαλαίο R γοτθικού στυλ (black-letter)\nΣύμβολο πραγματικού μέρους", + trade:"Σύμβολο εμπορικού σήματος", + alefsym:"Σύμβολο αλέφ (alef)\nΠρώτος υπερπεπερασμένος αριθμός", + larr:"Βέλος προς τα αριστερά", + uarr:"Βέλος προς τα πάνω", + rarr:"Βέλος προς τα δεξιά", + darr:"Βέλος προς τα κάτω", + harr:"Βέλος δύο κατευθύνσεων (αριστερά και δεξιά)", + crarr:"Βέλος προς τα κάτω με γωνία προς τα αριστερά", + lArr:"Διπλό βέλος προς τα αριστερά", + uArr:"Διπλό βέλος προς τα πάνω", + rArr:"Διπλό βέλος προς τα δεξιά", + dArr:"Διπλό βέλος προς τα κάτω", + hArr:"Διπλό βέλος δύο κατευθύνσεων (αριστερά και δεξιά)", + forall:"Σύμβολο 'για κάθε'", + part:"Σύμβολο μερικού διαφορικού", + exist:"Σύμβολο 'υπάρχει'", + empty:"Κενό σύνολο\nΣύνολο null\nΔιάμετρος", + nabla:"Ανάδελτα\nΤελεστής nabla", + isin:"Σύμβολο 'ανήκει'", + notin:"Σύμβολο 'δεν ανήκει'", + ni:"Σύμβολο 'περιλαμβάνει ως μέλος'", + prod:"Γινόμενο", + sum:"Άθροισμα", + minus:"Σύμβολο πλην", + lowast:"Αστερίσκος", + radic:"Τετραγωνική ρίζα", + prop:"Σύμβολο αναλογίας", + infin:"Άπειρο", + ang:"Γωνία", + and:"Λογικό ΚΑΙ (AND)", + or:"Λογικό Ή (OR)", + cap:"Τομή", + cup:"Ένωση","int":"Ολοκλήρωμα", + there4:"Σύμβολο 'συνεπώς'", + sim:"Σύμβολο σχέσεως ισοδυναμίας", + cong:"Περίπου ίσο με", + asymp:"Σχεδόν ίσο με", + ne:"Όχι ίσο με", + equiv:"Ταυτόσημο με", + le:"Μικρότερο από ή ίσο με", + ge:"Μεγαλύτερο από ή ίσο με", + sub:"Υποσύνολο του", + sup:"Υπερσύνολο του", + nsub:"Σύμβολο 'δεν είναι υποσύνολο του'", + sube:"Υποσύνολο του ή ίσο με", + supe:"Υπερσύνολο του ή ίσο με", + oplus:"Κυκλωμένο συν\nΆμεσο άθροισμα", + otimes:"Κυκλωμένο επί\nΔιανυσματικό γινόμενο", + perp:"Ορθογώνιο προς\nΚάθετο", + sdot:"Τελεστής κουκίδας", + lceil:"Αριστερή οροφή", + rceil:"Δεξιά οροφή", + lfloor:"Αριστερό δάπεδο", + rfloor:"Δεξιό δάπεδο", + lang:"Αριστερή γωνιακή παρένθεση", + rang:"Δεξιά γωνιακή παρένθεση", + loz:"Ρόμβος", + spades:"Μπαστούνι μαύρο", + clubs:"Σπαθί μαύρο", + hearts:"Κούπα (μαύρο χρώμα)", + diams:"Καρό (μαύρο χρώμα)", + OElig:"Κεφαλαίο λατινικό δίψηφο OE", + oelig:"Πεζό λατινικό δίψηφο oe", + Scaron:"Κεφαλαίο λατινικό γράμμα S με caron", + scaron:"Πεζό λατινικό γράμμα s με caron", + Yuml:"Κεφαλαίο λατινικό γράμμα Y με διαλυτικά", + circ:"Περισπωμένη circumflex (τροποποιητικό γράμματος)", + tilde:"Μικρή περισπωμένη", + ensp:"Κενό διάστημα πλάτους παύλας", + emsp:"Κενό διάστημα πλάτους διπλής παύλας", + thinsp:"Λεπτό κενό διάστημα", + zwnj:"Διαχωριστικό μηδενικού πλάτους", + zwj:"Ενωτικό μηδενικού πλάτους", + lrm:"Σημείο ένδειξης κατεύθυνσης από τα αριστερά προς τα δεξιά", + rlm:"Σημείο ένδειξης κατεύθυνσης από τα δεξιά προς τα αριστερά", + ndash:"Παύλα", + mdash:"Μεγάλη παύλα", + lsquo:"Αριστερό μονό εισαγωγικό", + rsquo:"Δεξιό μονό εισαγωγικό", + sbquo:"Μονό κάτω εισαγωγικό (σχήματος 9)", + ldquo:"Αριστερό διπλό εισαγωγικό", + rdquo:"Δεξιό διπλό εισαγωγικό", + bdquo:"Διπλό κάτω εισαγωγικό (σχήματος 9)", + dagger:"Σταυρός", + Dagger:"Διπλός σταυρός", + permil:"Σύμβολο 'τοις χιλίοις'", + lsaquo:"Αριστερό μονό ελληνικό εισαγωγικό", + rsaquo:"Δεξιό μονό ελληνικό εισαγωγικό", + euro:"Σύμβολο ευρώ" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/AutoSave.js new file mode 100644 index 0000000..2f43e97 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Guardar", + "saveSettingLabelOn": "Definir intervalo de guardado automático...", + "saveSettingLabelOff": "Desactivar guardado automático", + "saveSettingdialogTitle": "Guardado automático", + "saveSettingdialogDescription": "Especificar intervalo de guardado automático", + "saveSettingdialogParamName": "Intervalo de guardado automático", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Definir intervalo", + "saveSettingdialogButtonCancel": "Cancelar", + "saveMessageSuccess": "Guardado a las ${0}", + "saveMessageFail": "No se ha podido guardar a las ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Blockquote.js new file mode 100644 index 0000000..3179f23 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Cita en bloque" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Breadcrumb.js new file mode 100644 index 0000000..5a31f80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Acciones de ${nodeName}", + "selectContents": "Seleccionar contenido", + "selectElement": "Seleccionar elemento", + "deleteElement": "Suprimir elemento", + "deleteContents": "Suprimir contenido", + "moveStart": "Mover cursor al inicio", + "moveEnd": "Mover cursor al final" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/CollapsibleToolbar.js new file mode 100644 index 0000000..ef6701d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Contraer barra de herramientas del editor", + "expand": "Expandir barra de herramientas del editor" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/FindReplace.js new file mode 100644 index 0000000..16b6dff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "Buscar:", + "findTooltip": "Especifique el texto que desee buscar", + "replaceLabel": "Sustituir por:", + "replaceTooltip": "Especifique el texto por el que se debe sustituir", + "findReplace": "Conmutar Buscar/Sustituir", + "matchCase": "Coincidir mayúsculas y minúsculas", + "matchCaseTooltip": "Coincidir mayúsculas y minúsculas", + "backwards": "Hacia atrás", + "backwardsTooltip": "Buscar texto hacia atrás", + "replaceAllButton": "Sustituir todo", + "replaceAllButtonTooltip": "Sustituir todo el texto", + "findButton": "Buscar", + "findButtonTooltip": "Buscar el texto", + "replaceButton": "Sustituir", + "replaceButtonTooltip": "Sustituir el texto", + "replaceDialogText": "Se han sustituido ${0} apariciones.", + "eofDialogText": "Última aparición ${0}", + "eofDialogTextFind": "encontrado", + "eofDialogTextReplace": "sustituido" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/InsertAnchor.js new file mode 100644 index 0000000..52be2ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Insertar ancla", + title: "Propiedades del ancla", + anchor: "Nombre:", + text: "Descripción:", + set: "Establecer", + cancel: "Cancelar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/InsertEntity.js new file mode 100644 index 0000000..44e4452 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Insertar símbolo" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/LocalImage.js new file mode 100644 index 0000000..314e5f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Insertar imagen", + url: "Imagen", + browse: "Examinar...", + text: "Descripción", + set: "Insertar", + invalidMessage: "Tipo de archivo de imagen no válido", + prePopuTextUrl: "Especifique un URL de imagen", + prePopuTextBrowse: " o seleccione un archivo local." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/PageBreak.js new file mode 100644 index 0000000..3522235 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Salto de página" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/PasteFromWord.js new file mode 100644 index 0000000..3ccd13c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Pegar desde Word", + "paste": "Pegar", + "cancel": "Cancelar", + "instructions": "Pegue el contenido de Word en el siguiente recuadro de texto. Cuando esté satisfecho con el contenido que se debe insertar, pulse el botón pegar. Para abortar la inserción de texto, pulse el botón cancelar." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Preview.js new file mode 100644 index 0000000..d2aca5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Previsualización" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/SafePaste.js new file mode 100644 index 0000000..a3e3991 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "El pegado directo está inhabilitado. Pegue el contenido en este diálogo utilizando los controles de pegado del menú o del teclado de navegador estándar. Cuando esté satisfecho con el contenido que se debe insertar, pulse el botón Pegar. Para abortar la inserción de contenido, pulse el botón Cancelar." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Save.js new file mode 100644 index 0000000..4e8a379 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Guardar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/ShowBlockNodes.js new file mode 100644 index 0000000..c4a40fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Mostrar elementos de bloque HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Smiley.js new file mode 100644 index 0000000..ac56e83 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Insertar emoticono", + emoticonSmile: "sonrisa", + emoticonLaughing: "risa", + emoticonWink: "guiño", + emoticonGrin: "carcajada", + emoticonCool: "guay", + emoticonAngry: "enfadado", + emoticonHalf: "escéptico", + emoticonEyebrow: "ceja levantada", + emoticonFrown: "ceño fruncido", + emoticonShy: "tímido", + emoticonGoofy: "patoso", + emoticonOops: "lo siento", + emoticonTongue: "burlón", + emoticonIdea: "idea", + emoticonYes: "sí", + emoticonNo: "no", + emoticonAngel: "ángel", + emoticonCrying: "llorando", + emoticonHappy: "feliz" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/SpellCheck.js new file mode 100644 index 0000000..6225d0c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Corrector ortográfico por lotes", + unfound: "No encontrado", + skip: "Saltar", + skipAll: "Saltar todo", + toDic: "Añadir al diccionario", + suggestions: "Sugerencias", + replace: "Sustituir", + replaceWith: "Sustituir por", + replaceAll: "Sustituir todo", + cancel: "Cancelar", + msg: "No se han encontrado errores ortográficos", + iSkip: "Saltar esto", + iSkipAll: "Saltar todos los casos como este", + iMsg: "No hay sugerencias de ortografía" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/TableDialog.js new file mode 100644 index 0000000..5d9087a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/TableDialog.js @@ -0,0 +1,36 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Insertar tabla", + modifyTableTitle: "Modificar tabla", + rows: "Filas:", + columns: "Columnas:", + align: "Alinear:", + cellPadding: "Relleno de celda:", + cellSpacing: "Espaciado de celda:", + tableWidth: "Ancho de tabla:", + backgroundColor: "Color de fondo:", + borderColor: "Color de borde:", + borderThickness: "Ancho de borde", + percent: "por ciento", + pixels: "píxeles", + "default": "default", + left: "izquierda", + center: "centro", + right: "derecha", + buttonSet: "Establecer", // translated elsewhere? + buttonInsert: "Insertar", + buttonCancel: "Cancelar", + + selectTableLabel: "Seleccionar tabla", + insertTableRowBeforeLabel: "Añadir fila antes", + insertTableRowAfterLabel: "Añadir fila después", + insertTableColumnBeforeLabel: "Añadir columna antes", + insertTableColumnAfterLabel: "Añadir columna después", + deleteTableRowLabel: "Suprimir fila", + deleteTableColumnLabel: "Suprimir columna" +}) + + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/TextColor.js new file mode 100644 index 0000000..cad4ae2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Establecer", + "cancelButtonText": "Cancelar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/latinEntities.js new file mode 100644 index 0000000..7cce9a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/es/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"signo de exclamación inicial", + cent:"símbolo de centavos", + pound:"símbolo libra esterlina", + curren:"símbolo monetario", + yen:"símbolo del yen\nsímbolo de yuan", + brvbar:"barra dividida\nbarra vertical dividida", + sect:"signo de sección", + uml:"diéresis\ndiéresis de espaciado", + copy:"símbolo de copyright", + ordf:"indicador de ordinal femenino", + laquo:"comillas dobles en ángulo a la izquierda", + not:"signo de negación", + shy:"signo de guión corto", + reg:"símbolo de registrado\nsímbolo de marca registrada", + macr:"macrón\ndiacrítico largo\nlínea superior\nbarra superior APL", + deg:"signo de grados", + plusmn:"signo de más-menos\nsigno de más o menos", + sup2:"superíndice dos\nsuperíndice de dígito dos\nelevado al cuadrado", + sup3:"superíndice tres\nsuperíndice de dígito tres\nelevado al cubo", + acute:"acento agudo\nagudo de espaciado", + micro:"signo de micro", + para:"signo de párrafo", + middot:"punto medio\ncoma georgiana\npunto medio griego", + cedil:"cedilla\ncedilla de espaciado", + sup1:"superíndice uno\nsuperíndice de dígito uno", + ordm:"indicador de ordinal masculino", + raquo:"comillas dobles en ángulo a la derecha", + frac14:"fracción de cuarto vulgar\nfracción de cuarto", + frac12:"fracción de medio vulgar\nfracción de medio", + frac34:"fracción de tres cuartos vulgar\nfracción de tres cuartos", + iquest:"signo de interrogación inicial\nsigno de apertura de interrogación", + Agrave:"letra A latina mayúscula con acento grave\nletra A latina mayúscula grave", + Aacute:"letra A latina mayúscula con acento agudo", + Acirc:"letra A latina mayúscula con acento circunflejo", + Atilde:"letra A latina mayúscula con virgulilla\nletra A latina mayúscula con tilde", + Auml:"letra A latina mayúscula con diéresis", + Aring:"letra A latina mayúscula con anillo encima\nletra A latina mayúscula con anillo", + AElig:"diptongo AE latinas mayúsculas\nligadura de AE latinas mayúsculas", + Ccedil:"letra C latina mayúscula con cedilla", + Egrave:"letra E latina mayúscula con acento grave", + Eacute:"letra E latina mayúscula con acento agudo", + Ecirc:"letra E latina mayúscula con acento circunflejo", + Euml:"letra E latina mayúscula con acento diéresis", + Igrave:"letra I latina mayúscula con acento grave", + Iacute:"letra I latina mayúscula con acento agudo", + Icirc:"letra I latina mayúscula con acento circunflejo", + Iuml:"letra I latina mayúscula con diéresis", + ETH:"letra ETH latina mayúscula", + Ntilde:"letra N latina mayúscula con virgulilla\nletra N latina mayúscula con tilde\nletra Ñ latina mayúscula", + Ograve:"letra O latina mayúscula con acento grave", + Oacute:"letra O latina mayúscula con acento agudo", + Ocirc:"letra O latina mayúscula con acento circunflejo", + Otilde:"letra O latina mayúscula con virgulilla\nletra O latina mayúscula con tilde", + Ouml:"letra O latina mayúscula con diéresis", + times:"signo de multiplicación", + Oslash:"letra O latina mayúscula con barra\nletra O latina mayúscula con barra inclinada", + Ugrave:"letra U latina mayúscula con acento grave", + Uacute:"letra U latina mayúscula con acento agudo", + Ucirc:"letra U latina mayúscula con acento circunflejo", + Uuml:"letra U latina mayúscula con diéresis", + Yacute:"letra Y latina mayúscula con acento agudo", + THORN:"letra THORN latina mayúscula", + szlig:"letra s fuerte latina minúscula\nEszet", + agrave:"letra a latina minúscula con acento grave\nletra a latina minúscula grave", + aacute:"letra a latina minúscula con acento agudo", + acirc:"letra a latina minúscula con acento circunflejo", + atilde:"letra a latina minúscula con virgulilla\nletra a latina minúscula con tilde", + auml:"letra a latina minúscula con diéresis", + aring:"letra a latina minúscula con anillo encima\nletra a latina minúscula con anillo", + aelig:"Diptongo ae latinas minúsculas\nligadura de ae latinas minúsculas", + ccedil:"letra c latina minúscula con cedilla", + egrave:"letra e latina minúscula con acento grave", + eacute:"letra e latina minúscula con acento agudo", + ecirc:"letra e latina minúscula con acento circunflejo", + euml:"letra e latina minúscula con diéresis", + igrave:"letra i latina minúscula con acento grave", + iacute:"letra i latina minúscula con acento agudo", + icirc:"letra i latina minúscula con acento circunflejo", + iuml:"letra i latina minúscula con diéresis", + eth:"letra eth latina minúscula", + ntilde:"letra n latina minúscula con virgulilla\nletra n latina minúscula con tilde", + ograve:"letra o latina minúscula con acento grave", + oacute:"letra o latina minúscula con acento agudo", + ocirc:"letra o latina minúscula con acento circunflejo", + otilde:"letra o latina minúscula con virgulilla\nletra o latina minúscula con tilde", + ouml:"letra o latina minúscula con diéresis", + divide:"signo de división", + oslash:"letra o latina minúscula con barra\nletra o latina minúscula con barra inclinada", + ugrave:"letra u latina minúscula con acento grave", + uacute:"letra u latina minúscula con acento agudo", + ucirc:"letra u latina minúscula con acento circunflejo", + uuml:"letra u latina minúscula con diéresis", + yacute:"letra y latina minúscula con acento agudo", + thorn:"letra thorn latina minúscula", + yuml:"letra y latina minúscula con diéresis", + +// Greek Characters and Symbols + fnof:"letra f latina minúscula con gancho\nfunción\nflorín", + Alpha:"letra alpha griega mayúscula", + Beta:"letra beta griega mayúscula", + Gamma:"letra gamma griega mayúscula", + Delta:"letra delta griega mayúscula", + Epsilon:"letra épsilon griega mayúscula", + Zeta:"letra zeta griega mayúscula", + Eta:"letra eta griega mayúscula", + Theta:"letra theta griega mayúscula", + Iota:"letra iota griega mayúscula", + Kappa:"letra kappa griega mayúscula", + Lambda:"letra lambda griega mayúscula", + Mu:"letra mu griega mayúscula", + Nu:"letra nu griega mayúscula", + Xi:"letra xi griega mayúscula", + Omicron:"letra ómicron griega mayúscula", + Pi:"letra pi griega mayúscula", + Rho:"letra rho griega mayúscula", + Sigma:"letra sigma griega mayúscula", + Tau:"letra tau griega mayúscula", + Upsilon:"letra ípsilon griega mayúscula", + Phi:"letra phi griega mayúscula", + Chi:"letra chi griega mayúscula", + Psi:"letra psi griega mayúscula", + Omega:"letra omega griega mayúscula", + alpha:"letra alpha griega minúscula", + beta:"letra beta griega minúscula", + gamma:"letra gamma griega minúscula", + delta:"letra delta griega minúscula", + epsilon:"letra épsilon griega minúscula", + zeta:"letra zeta griega minúscula", + eta:"letra eta griega minúscula", + theta:"letra theta griega minúscula", + iota:"letra iota griega minúscula", + kappa:"letra kappa griega minúscula", + lambda:"letra lambda griega minúscula", + mu:"letra mu griega minúscula", + nu:"letra nu griega minúscula", + xi:"letra xi griega minúscula", + omicron:"letra ómicron griega minúscula", + pi:"letra pi griega minúscula", + rho:"letra rho griega minúscula", + sigmaf:"letra sigma final griega minúscula", + sigma:"letra sigma griega minúscula", + tau:"letra tau griega minúscula", + upsilon:"letra ípsilon griega minúscula", + phi:"letra phi griega minúscula", + chi:"letra chi griega minúscula", + psi:"letra psi griega minúscula", + omega:"letra omega griega minúscula", + thetasym:"símbolo de letra theta griega minúscula", + upsih:"símbolo de letra ípsilon griega con gancho", + piv:"símbolo pi griego", + bull:"viñeta\ncírculo negro pequeño", + hellip:"puntos suspensivos", + prime:"símbolo primo\nminutos\npies", + Prime:"símbolo primo doble\nsegundos\npulgadas", + oline:"sobrelínea\nsobre la letra", + frasl:"barra de fracción", + weierp:"letra P mayúscula cursiva", + image:"letra I mayúscula\nnúmeros imaginarios", + real:"letra R mayúscula\nnúmeros reales", + trade:"símbolo de marca registrada", + alefsym:"símbolo alef\nprimer número transfinito", + larr:"flecha a la izquierda", + uarr:"flecha hacia arriba", + rarr:"flecha a la derecha", + darr:"flecha hacia abajo", + harr:"flecha izquierda-derecha", + crarr:"flecha esquinada abajo a la izquierda\nretorno de carro", + lArr:"doble flecha a la izquierda", + uArr:"doble flecha hacia arriba", + rArr:"doble flecha a la derecha", + dArr:"doble flecha hacia abajo", + hArr:"doble flecha izquierda-derecha", + forall:"para todo", + part:"derivada parcial", + exist:"existe", + empty:"conjunto vacío\nconjunto nulo\ndiámetro", + nabla:"nabla\ngradiente", + isin:"pertenece", + notin:"no pertenece", + ni:"está incluido", + prod:"productoria\nmultiplicatoria", + sum:"sumatoria", + minus:"signo menos", + lowast:"operador asterisco", + radic:"raíz cuadrada\nsigno radical", + prop:"proporcional", + infin:"infinito", + ang:"ángulo", + and:"y lógico\ncuña", + or:"o lógico\nuve", + cap:"intersección\nconjuntos", + cup:"unión\nconjuntos","int":"integral", + there4:"por lo tanto", + sim:"operador de tilde\nno lógico\nparecido a", + cong:"aproximadamente igual a", + asymp:"parecido\ncasi igual a", + ne:"no igual a", + equiv:"idéntico a", + le:"menor o igual que", + ge:"mayor o igual que", + sub:"subconjunto de", + sup:"superconjunto de", + nsub:"no un subconjunto de", + sube:"subconjunto de o igual a", + supe:"superconjunto de o igual a", + oplus:"más en círculo\nsuma directa", + otimes:"cruz en círculo\nproducto vectorial", + perp:"ortogonal a\nperpendicular", + sdot:"operador punto", + lceil:"parte superior de corchete abierto", + rceil:"parte superior de corchete cerrado", + lfloor:"parte inferior de corchete abierto", + rfloor:"parte inferior de corchete abierto", + lang:"corchete angular hacia la izquierda", + rang:"corchete angular hacia la derecha", + loz:"rombo", + spades:"palo de picas", + clubs:"palo de tréboles", + hearts:"palo de corazones", + diams:"palo de diamantes", + OElig:"ligadura de OE latinas mayúsculas", + oelig:"ligadura de oe latinas minúsculas", + Scaron:"letra S latina mayúscula con anticircunflejo", + scaron:"letra s latina minúscula con anticircunflejo", + Yuml:"letra Y latina mayúscula con diéresis", + circ:"acento circunflejo", + tilde:"tilde pequeña", + ensp:"espacio", + emsp:"espacio largo", + thinsp:"espacio estrecho", + zwnj:"separador de anchura cero", + zwj:"conector de anchura cero", + lrm:"marca de izquierda a derecha", + rlm:"marca de derecha a izquierda", + ndash:"guión", + mdash:"guión largo", + lsquo:"comilla simple abierta", + rsquo:"comilla simple cerrada", + sbquo:"comilla simple inferior", + ldquo:"comillas dobles abiertas", + rdquo:"comillas dobles cerradas", + bdquo:"comillas dobles inferiores", + dagger:"daga", + Dagger:"daga doble", + permil:"signo de por mil", + lsaquo:"comilla simple angular abierta", + rsaquo:"comilla simple angular cerrada", + euro:"signo del euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/AutoSave.js new file mode 100644 index 0000000..c2949c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Tallenna", + "saveSettingLabelOn": "Aseta automaattisen tallennuksen väli...", + "saveSettingLabelOff": "Ota automaattinen tallennus pois käytöstä", + "saveSettingdialogTitle": "Automaattinen tallennus", + "saveSettingdialogDescription": "Määritä automaattisen tallennuksen väli", + "saveSettingdialogParamName": "Automaattisen tallennuksen väli", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Aseta väli", + "saveSettingdialogButtonCancel": "Peruuta", + "saveMessageSuccess": "Tallennusaika ${0}", + "saveMessageFail": "Tallennus epäonnistui ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Blockquote.js new file mode 100644 index 0000000..757ba92 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Sitaatti" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Breadcrumb.js new file mode 100644 index 0000000..b43fa7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} - Toiminnot", + "selectContents": "Valitse sisältö", + "selectElement": "Valitse elementti", + "deleteElement": "Poista elementti", + "deleteContents": "Poista sisältö", + "moveStart": "Siirrä kohdistin alkuun", + "moveEnd": "Siirrä kohdistin loppuun" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/CollapsibleToolbar.js new file mode 100644 index 0000000..f1fe530 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Pienennä muokkausohjelman työkalurivi", + "expand": "Laajenna muokkausohjelman työkalurivi" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/FindReplace.js new file mode 100644 index 0000000..c8af94c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Etsi:", + "findTooltip": "Anna etsittävä teksti", + "replaceLabel": "Korvaava:", + "replaceTooltip": "Anna korvaava teksti", + "findReplace": "Etsi ja korvaa", + "matchCase": "Sama kirjainkoko", + "matchCaseTooltip": "Sama kirjainkoko", + "backwards": "Taaksepäin", + "backwardsTooltip": "Etsi tekstiä taaksepäin", + "replaceAllButton": "Korvaa kaikki", + "replaceAllButtonTooltip": "Korvaa kaikki teksti", + "findButton": "Etsi", + "findButtonTooltip": "Etsi teksti", + "replaceButton": "Korvaa", + "replaceButtonTooltip": "Korvaa teksti", + "replaceDialogText": "Korvattu ${0} esiintymää.", + "eofDialogText": "Viimeinen esiintymä ${0}", + "eofDialogTextFind": "löytynyt", + "eofDialogTextReplace": "korvattu" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/InsertAnchor.js new file mode 100644 index 0000000..7e25d59 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Lisää ankkuri", + title: "Ankkurin ominaisuudet", + anchor: "Nimi:", + text: "Kuvaus:", + set: "Aseta", + cancel: "Peruuta" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/InsertEntity.js new file mode 100644 index 0000000..35863a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Lisää symboli" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/LocalImage.js new file mode 100644 index 0000000..d6e5b5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Lisää kuva", + url: "Kuva", + browse: "Selaa...", + text: "Kuvaus", + set: "Lisää", + invalidMessage: "Virheellinen kuvatiedoston laji", + prePopuTextUrl: "Anna kuvan URL-osoite", + prePopuTextBrowse: " tai selaa paikalliseen tiedostoon." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/PageBreak.js new file mode 100644 index 0000000..3b0e71e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Sivunvaihto" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/PasteFromWord.js new file mode 100644 index 0000000..d7fdadd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Liitä Word-ohjelmasta", + "paste": "Liitä", + "cancel": "Peruuta", + "instructions": "Liitä sisältö Word-tiedostosta alla olevaan tekstikenttään. Kun lisättävä sisältö on mielestäsi valmis, napsauta Liitä-painiketta. Voit peruuttaa lisäyksen napsauttamalla Peruuta-painiketta." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Preview.js new file mode 100644 index 0000000..20dec44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Esikatselu" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/SafePaste.js new file mode 100644 index 0000000..19b79aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Suora liittäminen ei ole käytössä. Liitä sisältö tähän valintaikkunaan käyttämällä tavallisia selaimen pikanäppäimiä tai valikon vaihtoehtoja. Kun lisättävä sisältö on mielestäsi valmis, napsauta Liitä-painiketta. Voit peruuttaa lisäyksen napsauttamalla Peruuta-painiketta." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Save.js new file mode 100644 index 0000000..2ba78f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Tallenna" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/ShowBlockNodes.js new file mode 100644 index 0000000..bfb3bc9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Näytä HTML-lohkoelementit" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Smiley.js new file mode 100644 index 0000000..13b2802 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Lisää hymiö", + emoticonSmile: "hymyillä", + emoticonLaughing: "nauraa", + emoticonWink: "iskeä silmää", + emoticonGrin: "virnistää", + emoticonCool: "viileä hymy", + emoticonAngry: "vihainen", + emoticonHalf: "puolikas", + emoticonEyebrow: "ihmetellä", + emoticonFrown: "irvistää", + emoticonShy: "ujo", + emoticonGoofy: "hölmö", + emoticonOops: "hups", + emoticonTongue: "näyttää kieltä", + emoticonIdea: "idea", + emoticonYes: "kyllä", + emoticonNo: "ei", + emoticonAngel: "enkeli", + emoticonCrying: "itkeä", + emoticonHappy: "iloinen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/SpellCheck.js new file mode 100644 index 0000000..0eb9833 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Eräoikoluku", + unfound: "Ei löydy", + skip: "Ohita", + skipAll: "Ohita kaikki", + toDic: "Lisää sanastoon", + suggestions: "Ehdotukset", + replace: "Korvaa", + replaceWith: "Korvaava", + replaceAll: "Korvaa kaikki", + cancel: "Peruuta", + msg: "Kirjoitusvirheitä ei löytynyt", + iSkip: "Ohita tämä", + iSkipAll: "Ohita kaikki samanlaiset", + iMsg: "Ei oikeinkirjoitusehdotuksia" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/TableDialog.js new file mode 100644 index 0000000..80eb46f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Lisää taulukko", + modifyTableTitle: "Muokkaa taulukkoa", + rows: "Rivit:", + columns: "Sarakkeet:", + align: "Tasaus:", + cellPadding: "Solun täyttö:", + cellSpacing: "Solujen väli:", + tableWidth: "Taulukon leveys:", + backgroundColor: "Taustaväri:", + borderColor: "Kehyksen väri:", + borderThickness: "Kehyksen paksuus", + percent: "prosenttia", + pixels: "kuvapistettä", + "default": "oletus", + left: "vasen", + center: "keskitetty", + right: "oikea", + buttonSet: "Aseta", // translated elsewhere? + buttonInsert: "Lisää", + buttonCancel: "Peruuta", + + selectTableLabel: "Valitse taulukko", + insertTableRowBeforeLabel: "Lisää rivi ennen", + insertTableRowAfterLabel: "Lisää rivi jälkeen", + insertTableColumnBeforeLabel: "Lisää sarake ennen", + insertTableColumnAfterLabel: "Lisää sarake jälkeen", + deleteTableRowLabel: "Poista rivi", + deleteTableColumnLabel: "Poista sarake" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/TextColor.js new file mode 100644 index 0000000..1ac9697 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Aseta", + "cancelButtonText": "Peruuta" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/latinEntities.js new file mode 100644 index 0000000..462ce1d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fi/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"ylösalainen huutomerkki", + cent:"sentin merkki", + pound:"punnan merkki", + curren:"valuuttamerkki", + yen:"jenin merkki\nyuanin merkki", + brvbar:"katkopystyviiva", + sect:"pykälämerkki", + uml:"treema\ntilaa vievä treema", + copy:"tekijänoikeusmerkki", + ordf:"feminiinisen järjestysluvun merkki", + laquo:"vasemmalle osoittava kaksinkertainen kulmalainausmerkki\nvasemmalle osoittava kulmalainausmerkki", + not:"negaation merkki\nei-merkki", + shy:"ehdollinen tavuviiva\npehmeä tavuviiva\ntavutusvihje", + reg:"rekisteröidyn tavaramerkin merkki\nrekisteröity tavaramerkki -merkki", + macr:"macron\nviiva-aksentti\npituusmerkki\npäällekkäisviiva", + deg:"astemerkki", + plusmn:"plus-miinus-merkki\nplus- tai miinusmerkki", + sup2:"yläindeksi kaksi\nneliö\ntoinen potenssi", + sup3:"yläindeksi kolme\nkuutio\nkolmas potenssi", + acute:"akuutti\nakuuttiaksentti", + micro:"mikro-merkki", + para:"kappaleen merkki\nkappalemerkki", + middot:"keskipiste\nrivinkeskinen piste\ngeorgialainen pilkku\nkreikkalainen keskipiste", + cedil:"sedilji\ntilaa vievä sedilji\ncedilla", + sup1:"yläindeksi yksi", + ordm:"maskuliinisen järjestysluvun merkki", + raquo:"oikealle osoittava kaksinkertainen kulmalainausmerkki\noikealle osoittava kulmalainausmerkki", + frac14:"neljäsosan merkki\nneljäsosa", + frac12:"puolikkaan merkki\npuolikas", + frac34:"kolmen neljäsosan merkki\nkolme neljäsosaa", + iquest:"ylösalainen kysymysmerkki", + Agrave:"iso A ja gravis\nversaali A ja gravis", + Aacute:"iso A ja akuutti\niso A ja akuuttiaksentti\nversaali A ja akuutti", + Acirc:"iso A ja sirkumfleksi\nversaali A ja sirkumfleksi", + Atilde:"iso A ja tilde\nversaali A ja tilde\niso A ja aaltoviiva\nversaali A ja aaltoviiva", + Auml:"iso Ä\nversaali Ä", + Aring:"iso Å\nversaali Å\niso ruotsalainen o\nversaali ruotsalainen o", + AElig:"iso AE\nversaali AE\niso ligatuuri AE\nversaaliligatuuri AE\niso tanskalainen ä\nversaali tanskalainen ä", + Ccedil:"iso C ja sedilji\nversaali C ja sedilji", + Egrave:"iso E ja gravis\nversaali E ja gravis", + Eacute:"iso E ja akuutti\niso E ja akuuttiaksentti\nversaali E ja akuutti", + Ecirc:"iso E ja sirkumfleksi\nversaali E ja sirkumfleksi", + Euml:"iso E ja treema\nversaali E ja treema", + Igrave:"iso I ja gravis\nversaali I ja gravis", + Iacute:"iso I ja akuutti\niso I ja akuuttiaksentti\nversaali I ja akuutti", + Icirc:"iso I ja sirkumfleksi\nversaali I ja sirkumfleksi", + Iuml:"iso I ja treema\nversaali I ja treema", + ETH:"iso eth\nversaali eth", + Ntilde:"iso N ja tilde\nversaali N ja tilde\niso N ja aaltoviiva\nversaali N ja aaltoviiva", + Ograve:"iso O ja gravis\nversaali O ja gravis", + Oacute:"iso O ja akuutti\niso O ja akuuttiaksentti\nversaali O ja akuutti", + Ocirc:"iso O ja sirkumfleksi\nversaali O ja sirkumfleksi", + Otilde:"iso O ja tilde\nversaali O ja tilde\niso O ja aaltoviiva\nversaali O ja aaltoviiva", + Ouml:"iso O ja treema\nversaali O ja treema", + times:"kertomerkki", + Oslash:"iso tanskalainen ö\nversaali tanskalainen ö\niso O ja vinoviiva\nversaali O ja vinoviiva\niso O, jossa on poikkiviiva\nversaali O, jossa on poikkiviiva", + Ugrave:"iso U ja gravis\nversaali U ja gravis", + Uacute:"iso U ja akuutti\niso U ja akuuttiaksentti\nversaali U ja akuutti", + Ucirc:"iso U ja sirkumfleksi\nversaali U ja sirkumfleksi", + Uuml:"iso U ja treema\nversaali U ja treema\niso saksalainen y\nversaali saksalainen y", + Yacute:"iso Y ja akuutti\niso Y ja akuuttiaksentti\nversaali Y ja akuutti", + THORN:"iso thorn\nversaali thorn", + szlig:"pieni kaksois-s\ngemena kaksois-s\npieni saksalainen kaksois-s\ngemena saksalainen kaksois-s", + agrave:"pieni a ja gravis\ngemena a ja gravis", + aacute:"pieni a ja akuutti\ngemena a ja akuutti\npieni a ja akuuttiaksentti", + acirc:"pieni a ja sirkumfleksi\ngemena a ja sirkumfleksi", + atilde:"pieni a ja tilde\ngemena a ja tilde\npieni a ja aaltoviiva\ngemena a ja aaltoviiva", + auml:"pieni ä\ngemena ä", + aring:"pieni å\ngemena å\npieni ruotsalainen o\ngemena ruotsalainen o", + aelig:"pieni ae\ngemena ae\npieni ligatuuri ae\ngemenaligatuuri ae\npieni tanskalainen ä\ngemena tanskalainen ä", + ccedil:"pieni c ja sedilji\ngemena c ja sedilji", + egrave:"pieni e ja gravis\ngemena e ja gravis", + eacute:"pieni e ja akuutti\ngemena e ja akuutti\npieni e ja akuuttiaksentti", + ecirc:"pieni e ja sirkumfleksi\ngemena e ja sirkumfleksi", + euml:"pieni e ja treema\ngemena e ja treema", + igrave:"pieni i ja gravis\ngemena e ja gravis", + iacute:"pieni i ja akuutti\ngemena i ja akuutti\npieni i ja akuuttiaksentti", + icirc:"pieni i ja sirkumfleksi\ngemena i ja sirkumfleksi", + iuml:"pieni i ja treema\ngemena i ja treema", + eth:"pieni eth\ngemena eth", + ntilde:"pieni n ja tilde\ngemena n ja tilde\npieni n ja aaltoviiva\ngemena n ja aaltoviiva", + ograve:"pieni o ja gravis\ngemena o ja gravis", + oacute:"pieni o ja akuutti\ngemena o ja akuutti\npieni o ja akuuttiaksentti", + ocirc:"pieni o ja sirkumfleksi\ngemena o ja sirkumfleksi", + otilde:"pieni o ja tilde\ngemena o ja tilde\npieni o ja aaltoviiva\ngemena o ja aaltoviiva", + ouml:"pieni ö\ngemena ö", + divide:"jakomerkki", + oslash:"pieni tanskalainen ö\ngemena tanskalainen ö\npieni o ja vinoviiva\ngemena o ja vinoviiva\npieni o, jossa on poikkiviiva\ngemena o, jossa on poikkiviiva", + ugrave:"pieni u ja gravis\ngemena u ja gravis", + uacute:"pieni u ja akuutti\ngemena u ja akuutti\npieni u ja akuuttiaksentti", + ucirc:"pieni u ja sirkumfleksi\ngemena u ja sirkumfleksi", + uuml:"pieni u ja treema\ngemena u ja treema\npieni saksalainen y\ngemena saksalainen y", + yacute:"pieni y ja akuutti\ngemena y ja akuutti\npieni y ja akuuttiaksentti", + thorn:"pieni thorn\ngemena thorn", + yuml:"pieni y ja treema\ngemena y ja treema", + +// Greek Characters and Symbols + fnof:"pieni f, jossa koukku\ngemena f, jossa koukku\nfunktio\nguldeni", + Alpha:"iso alfa\nversaali alfa", + Beta:"iso beeta\nversaali beeta", + Gamma:"iso gamma\nversaali gamma", + Delta:"iso delta\nversaali delta", + Epsilon:"iso epsilon\nversaali epsilon", + Zeta:"iso zeeta\nversaali zeeta", + Eta:"iso eeta\nversaali eeta", + Theta:"iso theeta\nversaali theeta", + Iota:"iso ioota\nversaali ioota", + Kappa:"iso kappa\nversaali kappa", + Lambda:"iso lambda\nversaali lambda", + Mu:"iso myy\nversaali myy", + Nu:"iso nyy\nversaali nyy", + Xi:"iso ksii\nversaali ksii", + Omicron:"iso omikron\nversaali omikron", + Pi:"iso pii\nversaali pii", + Rho:"iso rhoo\nversaali rhoo", + Sigma:"iso sigma\nversaali sigma", + Tau:"iso tau\nversaali tau", + Upsilon:"iso ypsilon\nversaali ypsilon", + Phi:"iso fii\nversaali fii", + Chi:"iso khii\nversaali khii", + Psi:"iso psii\nversaali psii", + Omega:"iso oomega\nversaali oomega", + alpha:"pieni alfa\ngemena alfa", + beta:"pieni beeta\ngemena beeta", + gamma:"pieni gamma\ngemena gamma", + delta:"pieni delta\ngemena delta", + epsilon:"pieni epsilon\ngemena epsilon", + zeta:"pieni zeeta\ngemena zeeta", + eta:"pieni eeta\ngemena eeta", + theta:"pieni theeta\ngemena theeta", + iota:"pieni ioota\ngemena ioota", + kappa:"pieni kappa\ngemena kappa", + lambda:"pieni lambda\ngemena lambda", + mu:"pieni myy\ngemena myy", + nu:"pieni nyy\ngemena nyy", + xi:"pieni ksii\ngemena ksii", + omicron:"pieni omikron\ngemena omikron", + pi:"pieni pii\ngemena pii", + rho:"pieni rhoo\ngemena rhoo", + sigmaf:"pieni sananloppuinen sigma\ngemena sananloppuinen sigma", + sigma:"pieni sigma\ngemena sigma", + tau:"pieni tau\ngemena tau", + upsilon:"pieni ypsilon\ngemena ypsilon", + phi:"pieni fii\ngemena fii", + chi:"pieni khii\ngemena khii", + psi:"pieni psii\ngemena psii", + omega:"pieni oomega\ngemena oomega", + thetasym:"pieni theeta\ngemena theeta", + upsih:"ypsilon, jossa koukku", + piv:"pii-merkki", + bull:"luetelmamerkki\nluetelmapallo\npieni musta ympyrä", + hellip:"kolme pistettä\nkolme pistettä vaakasuunnassa\nellipsi", + prime:"yläpuolinen indeksointipilkku\nindeksointipilkku\nminuutit\njalat", + Prime:"kaksinkertainen yläpuolinen indeksointipilkku\nsekunnit\ntuumat", + oline:"yläviiva", + frasl:"murtoluvun vinoviiva\nmurtolukuviiva", + weierp:"iso kaunokirjoitus-P\npotenssijoukko\nWeierstrassin p", + image:"goottilainen iso I\ngoottilainen versaali I\nimaginaarinen osa", + real:"goottilainen iso R\ngoottilainen versaali R\nreaaliosa", + trade:"tavaramerkki\ntavaramerkin merkki", + alefsym:"alef-merkki\nalef\nensimmäinen transfiniittinen kardinaali", + larr:"vasen nuoli\nnuoli vasemmalle", + uarr:"ylänuoli\nnuoli ylös\nylöspäin osoittava nuoli", + rarr:"oikea nuoli\nnuoli oikealle", + darr:"alanuoli\nnuoli alas\nalaspäin osoittava nuoli", + harr:"nuoli vasemmalle ja oikealle", + crarr:"rivinvaihtomerkki", + lArr:"kaksoisnuoli vasemmalle", + uArr:"kaksoisnuoli ylös", + rArr:"kaksoisnuoli oikealle", + dArr:"kaksoisnuoli alas", + hArr:"kaksoisnuoli vasemmalle ja oikealle", + forall:"kaikkikvanttori\nuniversaalikvanttori", + part:"osittaisderivaatta", + exist:"olemassaolokvanttori", + empty:"tyhjä joukko\nhalkaisija", + nabla:"nabla\ngradientti", + isin:"joukkoon kuulumisen merkki", + notin:"joukkoon kuulumattomuuden merkki", + ni:"käänteinen joukkoon kuulumisen merkki", + prod:"tulo\ntulon merkki", + sum:"summa", + minus:"miinusmerkki", + lowast:"tähti\nasteriski", + radic:"neliöjuuri\njuurimerkki", + prop:"verrannollinen", + infin:"ääretön\näärettömän merkki", + ang:"kulma", + and:"looginen ja-merkki", + or:"looginen tai-merkki", + cap:"leikkauksen merkki\nleikkaus", + cup:"yhdisteen merkki\nyhdiste\nunioni","int":"integraalimerkki\nintegraali", + there4:"loogisen seuraamuksen merkki\njoten\nsiis", + sim:"tildeoperaattori\nlikiarvo", + cong:"suunnilleen yhtä suuri kuin -merkki", + asymp:"likimain yhtä suuri kuin -merkki\nasymptoottinen", + ne:"eri suuri kuin -merkki\nerisuuruusmerkki", + equiv:"identtisesti yhtä suuri kuin -merkki", + le:"pienempi tai yhtä suuri kuin -merkki", + ge:"suurempi tai yhtä suuri kuin -merkki", + sub:"osajoukon merkki", + sup:"ylijoukon merkki", + nsub:"osajoukkosuhteen negaation merkki", + sube:"osajoukkosuhteen tai yhtäläisyyden merkki", + supe:"ylijoukkosuhteen tai yhtäläisyyden merkki", + oplus:"ympyrässä oleva plusmerkki\nsuora summa", + otimes:"ympyrässä oleva kertomerkki\nvektoritulo\nristitulo", + perp:"kohtisuoruusmerkki", + sdot:"pisteoperaattori", + lceil:"vasen kattosymboli", + rceil:"oikea kattosymboli", + lfloor:"vasen lattiasymboli", + rfloor:"oikea lattiasymboli", + lang:"vasemmalle osoittava kulmasulje", + rang:"oikealle osoittava kulmasulje", + loz:"vinoneliö\nnelikovero", + spades:"musta korttipakan pata", + clubs:"musta korttipakan risti\napila", + hearts:"musta korttipakan hertta\nsydän", + diams:"musta korttipakan ruutu", + OElig:"iso ligatuuri OE\nversaaliligatuuri OE", + oelig:"pieni ligatuuri oe\ngemenaligatuuri oe", + Scaron:"iso hattu-S\nversaali hattu-S", + scaron:"pieni hattu-s\ngemena hattu-s", + Yuml:"iso Y ja treema\nversaali Y ja treema", + circ:"tarkkeenomainen sirkumfleksi", + tilde:"pieni tilde", + ensp:"n-väli\nn-kirjaimen levyinen väli", + emsp:"m-väli\nm-kirjaimen levyinen väli", + thinsp:"kapea väli", + zwnj:"leveydetön erottava merkki", + zwj:"leveydetön yhdistävä merkki", + lrm:"vasemmalta oikealle -merkki", + rlm:"oikealta vasemmalle -merkki", + ndash:"n-viiva\nlyhyt ajatusviiva", + mdash:"m-viiva\npitkä ajatusviiva", + lsquo:"ylösalainen puolilainausmerkki", + rsquo:"puolilainausmerkki", + sbquo:"rivinalinen puolilainausmerkki", + ldquo:"ylösalainen kokolainausmerkki", + rdquo:"kokolainausmerkki", + bdquo:"rivinalinen kokolainausmerkki", + dagger:"risti", + Dagger:"kaksoisristi", + permil:"promillemerkki", + lsaquo:"vasemmalle osoittava kulmapuolilainausmerkki", + rsaquo:"oikealle osoittava kulmapuolilainausmerkki", + euro:"euron merkki" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/AutoSave.js new file mode 100644 index 0000000..dc8fac1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Enregistrer", + "saveSettingLabelOn": "Définir l'intervalle d'enregistrement automatique...", + "saveSettingLabelOff": "Désactiver l'enregistrement automatique", + "saveSettingdialogTitle": "Enregistrement automatique", + "saveSettingdialogDescription": "Spécifiez l'intervalle d'enregistrement automatique", + "saveSettingdialogParamName": "Intervalle d'enregistrement automatique", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Définir l'intervalle", + "saveSettingdialogButtonCancel": "Annuler", + "saveMessageSuccess": "Enregistré à ${0}", + "saveMessageFail": "Echec de l'enregistrement à ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Blockquote.js new file mode 100644 index 0000000..8e0ecb1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Bloc de citation" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Breadcrumb.js new file mode 100644 index 0000000..3e4b0b1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Actions ${nodeName}", + "selectContents": "Sélection de contenus", + "selectElement": "Sélection d'un élément", + "deleteElement": "Suppression d'un élément", + "deleteContents": "Suppression de contenus", + "moveStart": "Déplacer le curseur vers le début", + "moveEnd": "Déplacer le curseur vers la fin" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/CollapsibleToolbar.js new file mode 100644 index 0000000..9e24571 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Réduire la barre d'outils de l'éditeur", + "expand": "Développer la barre d'outils de l'éditeur" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/FindReplace.js new file mode 100644 index 0000000..63e56d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "Rechercher :", + "findTooltip": "Entrez le texte à 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ère", + "backwardsTooltip": "Recherchez le texte vers l'arrière", + "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ée(s)", + "eofDialogText": "Dernière occurrence ${0}", + "eofDialogTextFind": "trouvé", + "eofDialogTextReplace": "remplacé" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/InsertAnchor.js new file mode 100644 index 0000000..7ba6b6b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Insérer un point d'ancrage", + title: "Propriétés du point d'ancrage", + anchor: "Nom :", + text: "Description :", + set: "Définir", + cancel: "Annuler" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/InsertEntity.js new file mode 100644 index 0000000..ffea02a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Insertion d'un symbole" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/LocalImage.js new file mode 100644 index 0000000..64c3fe5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Insérer une image", + url: "Image", + browse: "Parcourir...", + text: "Description", + set: "Insérer", + invalidMessage: "Type de fichier image non valide", + prePopuTextUrl: "Entrez une URL d'image", + prePopuTextBrowse: " ou sélectionnez un fichier local." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/PageBreak.js new file mode 100644 index 0000000..8290b8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Saut de page" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/PasteFromWord.js new file mode 100644 index 0000000..2a0d546 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Coller depuis Word", + "paste": "Coller", + "cancel": "Annuler", + "instructions": "Collez le contenu Word dans la zone de texte ci-dessous. Quand le contenu à insérer vous convient, appuyez sur le bouton Coller. Pour annuler l'insertion du texte, utilisez le bouton Annuler." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Preview.js new file mode 100644 index 0000000..cf58ce8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Aperçu" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/SafePaste.js new file mode 100644 index 0000000..c194e20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "La fonction directe Coller est désactivée. Collez le contenu dans la boîte de dialogue à l'aide des commandes du clavier de navigateur standard ou de l'option coller dans le menu. Quand le contenu à insérer vous convient, appuyez sur le bouton Coller. Pour annuler l'insertion du contenu, utilisez le bouton Annuler." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Save.js new file mode 100644 index 0000000..564c5a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Sauvegarder" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/ShowBlockNodes.js new file mode 100644 index 0000000..38f3a4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Affichage des éléments de bloc HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Smiley.js new file mode 100644 index 0000000..107705c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Insérer une émoticône", + emoticonSmile: "sourire", + emoticonLaughing: "rire", + emoticonWink: "clin d'oeil", + emoticonGrin: "sourire large", + emoticonCool: "calme", + emoticonAngry: "colère", + emoticonHalf: "demi", + emoticonEyebrow: "sourcils", + emoticonFrown: "froncement de sourcils", + emoticonShy: "timide", + emoticonGoofy: "dingo", + emoticonOops: "oops", + emoticonTongue: "langue", + emoticonIdea: "idée", + emoticonYes: "oui", + emoticonNo: "non", + emoticonAngel: "ange", + emoticonCrying: "pleurs", + emoticonHappy: "sourire" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/SpellCheck.js new file mode 100644 index 0000000..83b586e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Vérification 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ée", + iSkip: "Ignorer une fois", + iSkipAll: "Ignorer chaque fois", + iMsg: "Aucune suggestion orthographique" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/TableDialog.js new file mode 100644 index 0000000..f096094 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/TableDialog.js @@ -0,0 +1,35 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Insérer 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ère-plan :", + borderColor: "Couleur des bordures :", + borderThickness: "Epaisseur des bordures", + percent: "pourcentage", + pixels: "pixels", + "default": "par défaut", + left: "aligné à gauche", + center: "centré", + right: "aligné à droite", + buttonSet: "Définir", // translated elsewhere? + buttonInsert: "Insérer", + buttonCancel: "Annuler", + + selectTableLabel: "Sélectionner une table", + insertTableRowBeforeLabel: "Ajouter une ligne avant", + insertTableRowAfterLabel: "Ajouter une ligne après", + insertTableColumnBeforeLabel: "Ajouter une colonne avant", + insertTableColumnAfterLabel: "Ajouter une colonne après", + deleteTableRowLabel: "Supprimer la ligne", + deleteTableColumnLabel: "Supprimer la colonne" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/TextColor.js new file mode 100644 index 0000000..82d0e41 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Définir", + "cancelButtonText": "Annuler" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/latinEntities.js new file mode 100644 index 0000000..905a581 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/fr/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"point d'exclamation inversé", + 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éma\ntréma d'espacement", + copy:"signe de droit d'auteur", + ordf:"indicateur ordinal féminin", + laquo:"guillemets fermants", + not:"signe non", + shy:"trait d'union conditionnel\ntiret conditionnel", + reg:"signe enregistré\nmarque commerciale enregistrée", + macr:"macron\nmacron d'espacement\nligne supérieure\nbarre supérieure APL", + deg:"signe degré", + plusmn:"signe plus-moins\nsigne plus-ou-moins", + sup2:"exposant deux\npuissance deux\ncarré", + sup3:"exposant trois\npuissance trois\ncube", + acute:"accent aigu\naccent aigu d'espacement", + micro:"signe micro", + para:"symbole de paragraphe", + middot:"point médian\nvirgule géorgiennea\npoint médian grec", + cedil:"cédille\ncédille 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é\npoint d'interrogation retourné", + 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éma", + 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édille", + 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éma", + 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éma", + 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éma", + times:"signe multiplication", + Oslash:"Latin - O majuscule barré\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éma", + 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éma", + 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édille", + 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éma", + 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éma", + 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éma", + divide:"signe division", + oslash:"Latin - o minuscule barré\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éma", + yacute:"Latin - y minuscule avec accent aigu", + thorn:"Latin - thorn minuscule", + yuml:"Latin - y minuscule avec tréma", + +// Greek Characters and Symbols + 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é\nbarre supérieure 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éelle", + trade:"signe de marque commerciale", + alefsym:"symbole alef\npremier cardinal transfini", + larr:"flèche vers la gauche", + uarr:"flèche vers le haut", + rarr:"flèche vers la droite", + darr:"flèche vers le bas", + harr:"flèche vers la gauche et la droite", + crarr:"flèche vers le bas avec coin vers la gauche\nretour chariot", + lArr:"flèche double vers la gauche", + uArr:"flèche double vers le haut", + rArr:"flèche double vers la droite", + dArr:"flèche double vers le bas", + hArr:"flèche double vers la gauche", + forall:"pour tous", + part:"différentiel partiel", + exist:"il existe", + empty:"ensemble vide\nensemble null\ndiamètre", + nabla:"nabla\ndifférence arrière", + isin:"élément de", + notin:"non élément de", + ni:"contient comme membre", + prod:"produit n-aire\nsigne produit", + sum:"somme n-aire", + minus:"signe moins", + lowast:"astérisque", + radic:"racine carrée\nsigne radical", + prop:"proportionnel à", + infin:"infinité", + ang:"angle", + and:"et logique\nwedge", + or:"ou logique\nvee", + cap:"intersection\ncap", + cup:"union\ncup","int":"intégrale", + there4:"donc", + sim:"tilde\nvarie en fonction de\nsimilaire à", + cong:"approximativement égal à", + asymp:"presque égal à\nasymptotique à", + ne:"différente de", + equiv:"identique à", + le:"inférieur ou égal à", + ge:"supérieur ou égal à", + sub:"sous-ensemble de", + sup:"sur-ensemble de", + nsub:"non sous-ensemble de", + sube:"sous-ensemble de ou égal à", + supe:"sur-ensemble de ou égal à", + oplus:"plus entouré\nsomme directe", + otimes:"signe multiplié entouré\nproduit vectoriel", + perp:"orthogonal à\nperpendiculaire", + sdot:"point", + lceil:"plafond à gauche\nmontant APL", + rceil:"plafond à droite", + lfloor:"plancher à gauche\ndescendant APL", + rfloor:"plancher à droite", + lang:"chevron vers la gauche", + rang:"chevron vers la droite", + loz:"losange", + spades:"pic noir", + clubs:"trèfle 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éma", + 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 à droite", + rlm:"marque de droite à 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èle", + Dagger:"double obèle", + permil:"signe pour-mille", + lsaquo:"guillemet simple orienté vers la gauche", + rsaquo:"guillemet simple orienté vers la droite", + euro:"signe euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/AutoSave.js new file mode 100644 index 0000000..a2f6363 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "שמירה", + "saveSettingLabelOn": "הגדרת מרווח שמירה אוטומטית...‏", + "saveSettingLabelOff": "השבתת שמירה אוטומטית", + "saveSettingdialogTitle": "שמירה אוטומטית", + "saveSettingdialogDescription": "ציינו מרווח שמירה אוטומטית ", + "saveSettingdialogParamName": "מרווח שמירה אוטומטית ", + "saveSettingdialogParamLabel": "דות", + "saveSettingdialogButtonOk": "הגדרת מרווח ", + "saveSettingdialogButtonCancel": "ביטול", + "saveMessageSuccess": "נשמר ${0}", + "saveMessageFail": "כשל בשמירה ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Blockquote.js new file mode 100644 index 0000000..ae3d5f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "ציטוט" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Breadcrumb.js new file mode 100644 index 0000000..3f8f245 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "פעולות ${nodeName} ", + "selectContents": "בחירת תוכן ", + "selectElement": "בחירת מרכיב ", + "deleteElement": "מחיקת מרכיב ", + "deleteContents": "מחיקת תוכן ", + "moveStart": "העברת הסמן להתחלה ", + "moveEnd": "העברת הסמן לסוף " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/CollapsibleToolbar.js new file mode 100644 index 0000000..cb2a641 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "כיווץ סרגל הכלים של העורך ", + "expand": "הרחבת סרגל הכלים של העורך" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/FindReplace.js new file mode 100644 index 0000000..d0c1fae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "חיפוש: ", + "findTooltip": "ציינו תמליל לחיפוש", + "replaceLabel": "החלפה עם: ", + "replaceTooltip": "ציינו תמליל להחלפה", + "findReplace": "חיפוש והחלפה ", + "matchCase": "התאמת רישיות ", + "matchCaseTooltip": "התאמת רישיות", + "backwards": "אחורה ", + "backwardsTooltip": "חיפוש תמליל אחורה ", + "replaceAllButton": "החלפת הכל ", + "replaceAllButtonTooltip": "החלפת כל התמליל ", + "findButton": "חיפוש", + "findButtonTooltip": "חיפוש התמליל", + "replaceButton": "החלפה ", + "replaceButtonTooltip": "החלפת התמליל", + "replaceDialogText": "הוחלפו ${0} מופעים ", + "eofDialogText": "המופע האחרון ${0}", + "eofDialogTextFind": "נמצאו", + "eofDialogTextReplace": "הוחלפו " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/InsertAnchor.js new file mode 100644 index 0000000..33ba4c0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "הוספת עוגן ", + title: "תכונות עוגן ", + anchor: "שם:", + text: "תיאור:", + set: "הגדרה", + cancel: "ביטול" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/InsertEntity.js new file mode 100644 index 0000000..2a8dbf9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "הוספת סמל " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/LocalImage.js new file mode 100644 index 0000000..7c0b981 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "הוספת תמונה", + url: "תמונה", + browse: "עיון...‏ ", + text: "תיאור ", + set: "הוספה", + invalidMessage: "סוג קובץ תמונה לא חוקי", + prePopuTextUrl: "ציינו URL של תמונה", + prePopuTextBrowse: " או נווטו לקובץ מקומי. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/PageBreak.js new file mode 100644 index 0000000..83fe084 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "מעבר עמוד" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/PasteFromWord.js new file mode 100644 index 0000000..bb5d05a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "הדבקה מתוך Word", + "paste": "הדבקה", + "cancel": "ביטול", + "instructions": "הדביקו את התוכן מתוך Word לתוך תיבת התמליל למטה. לאחר שתהיו מרוצים מהתוכן להוספה, לחצו על לחצן ההדבקה. כדי לבטל את הוספת התמליל, לחצו על לחצן הביטול. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Preview.js new file mode 100644 index 0000000..e332bea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "תצוגה מקדימה" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Save.js new file mode 100644 index 0000000..946c8ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "שמירה" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/ShowBlockNodes.js new file mode 100644 index 0000000..cc6439e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "הצגת מרכיבי Block של HTML " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Smiley.js new file mode 100644 index 0000000..11bad8f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/Smiley.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + smiley: "הוספת רגשון", + emoticonSmile: "חיוך", + emoticonLaughing: "צחוק ", + emoticonWink: "קריצה", + emoticonGrin: "גיחוך", + emoticonCool: "מגניב", + emoticonAngry: "כועס ", + emoticonHalf: "חצי ", + emoticonEyebrow: "גבה", + emoticonFrown: "קימוט מצח", + emoticonShy: "ביישן", + emoticonGoofy: "דבילי", + emoticonOops: "אופס ", + emoticonTongue: "לשון ", + emoticonIdea: "רעיון", + emoticonYes: "כן", + emoticonNo: "לא", + emoticonAngel: "מלאך ", + emoticonCrying: "בוכה" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/SpellCheck.js new file mode 100644 index 0000000..50b5c9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "בדיקת איות באצווה ", + unfound: "לא נמצא ", + skip: "דילוג", + skipAll: "דילוג על הכל", + toDic: "הוספה למילון", + suggestions: "הצעות ", + replace: "החלפה ", + replaceWith: "החלפה בערך ", + replaceAll: "החלפת הכל", + cancel: "ביטול", + msg: "לא נמצאו שגיאות איות ", + iSkip: "דילוג על ערך זה ", + iSkipAll: "דילוג על כל הערכים הדומים לערך זה ", + iMsg: "אין הצעות איות " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/TableDialog.js new file mode 100644 index 0000000..8cb38c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "הוספת טבלה", + modifyTableTitle: "שינוי טבלה", + rows: "שורות:", + columns: "עמודות:", + align: "יישור:", + cellPadding: "ריפוד תאים:", + cellSpacing: "ריווח תאים:", + tableWidth: "רוחב טבלה:‏", + backgroundColor: "צבע רקע:", + borderColor: "צבע גבול:", + borderThickness: "עובי גבול", + percent: "אחוזים", + pixels: "פיקסלים", + "default": "ברירת מחדל", + left: "ימין", + center: "מרכז", + right: "שמאל", + buttonSet: "הגדרה", // translated elsewhere? + buttonInsert: "הוספה", + buttonCancel: "ביטול", + + selectTableLabel: "בחירת טבלה", + insertTableRowBeforeLabel: "הוספת שורה לפני", + insertTableRowAfterLabel: "הוספת שורה אחרי", + insertTableColumnBeforeLabel: "הוספת עמודה לפני", + insertTableColumnAfterLabel: "הוספת עמודה אחרי", + deleteTableRowLabel: "מחיקת שורה", + deleteTableColumnLabel: "מחיקת עמודה" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/TextColor.js new file mode 100644 index 0000000..912de00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "הגדרה", + "cancelButtonText": "ביטול" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/latinEntities.js new file mode 100644 index 0000000..cc1257c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/he/latinEntities.js @@ -0,0 +1,260 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + 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", + AElig:"Latin capital letter AE\nLatin capital ligature AE", + Ccedil:"Latin capital letter C with cedilla", + Egrave:"Latin capital letter E with grave", + Eacute:"Latin capital letter E with acute", + Ecirc:"Latin capital letter E with circumflex", + Euml:"Latin capital letter E with diaeresis", + Igrave:"Latin capital letter I with grave", + Iacute:"Latin capital letter I with acute", + Icirc:"Latin capital letter I with circumflex", + Iuml:"Latin capital letter I with diaeresis", + ETH:"Latin capital letter ETH", + Ntilde:"Latin capital letter N with tilde", + Ograve:"Latin capital letter O with grave", + Oacute:"Latin capital letter O with acute", + Ocirc:"Latin capital letter O with circumflex", + Otilde:"Latin capital letter O with tilde", + Ouml:"Latin capital letter O with diaeresis", + times:"multiplication sign", + Oslash:"Latin capital letter O with stroke\nLatin capital letter O slash", + Ugrave:"Latin capital letter U with grave", + Uacute:"Latin capital letter U with acute", + Ucirc:"Latin capital letter U with circumflex", + Uuml:"Latin capital letter U with diaeresis", + Yacute:"Latin capital letter Y with acute", + THORN:"Latin capital letter THORN", + szlig:"Latin small letter sharp s\ness-zed", + agrave:"Latin small letter a with grave\nLatin small letter a grave", + aacute:"Latin small letter a with acute", + acirc:"Latin small letter a with circumflex", + atilde:"Latin small letter a with tilde", + auml:"Latin small letter a with diaeresis", + aring:"Latin small letter a with ring above\nLatin small letter a ring", + aelig:"Latin small letter ae\nLatin small ligature ae", + ccedil:"Latin small letter c with cedilla", + egrave:"Latin small letter e with grave", + eacute:"Latin small letter e with acute", + ecirc:"Latin small letter e with circumflex", + euml:"Latin small letter e with diaeresis", + igrave:"Latin small letter i with grave", + iacute:"Latin small letter i with acute", + icirc:"Latin small letter i with circumflex", + iuml:"Latin small letter i with diaeresis", + eth:"Latin small letter eth", + ntilde:"Latin small letter n with tilde", + ograve:"Latin small letter o with grave", + oacute:"Latin small letter o with acute", + ocirc:"Latin small letter o with circumflex", + otilde:"Latin small letter o with tilde", + ouml:"Latin small letter o with diaeresis", + divide:"division sign", + oslash:"Latin small letter o with stroke\nLatin small letter o slash", + ugrave:"Latin small letter u with grave", + uacute:"Latin small letter u with acute", + ucirc:"Latin small letter u with circumflex", + uuml:"Latin small letter u with diaeresis", + yacute:"Latin small letter y with acute", + thorn:"Latin small letter thorn", + yuml:"Latin small letter y with diaeresis", + +// Greek Characters and Symbols + fnof:"Latin small f with hook\nfunction\nflorin", + Alpha:"Greek capital letter alpha", + Beta:"Greek capital letter beta", + Gamma:"Greek capital letter gamma", + Delta:"Greek capital letter delta", + Epsilon:"Greek capital letter epsilon", + Zeta:"Greek capital letter zeta", + Eta:"Greek capital letter eta", + Theta:"Greek capital letter theta", + Iota:"Greek capital letter iota", + Kappa:"Greek capital letter kappa", + Lambda:"Greek capital letter lambda", + Mu:"Greek capital letter mu", + Nu:"Greek capital letter nu", + Xi:"Greek capital letter xi", + Omicron:"Greek capital letter omicron", + Pi:"Greek capital letter pi", + Rho:"Greek capital letter rho", + Sigma:"Greek capital letter sigma", + Tau:"Greek capital letter tau", + Upsilon:"Greek capital letter upsilon", + Phi:"Greek capital letter phi", + Chi:"Greek capital letter chi", + Psi:"Greek capital letter psi", + Omega:"Greek capital letter omega", + alpha:"Greek small letter alpha", + beta:"Greek small letter beta", + gamma:"Greek small letter gamma", + delta:"Greek small letter delta", + epsilon:"Greek small letter epsilon", + zeta:"Greek small letter zeta", + eta:"Greek small letter eta", + theta:"Greek small letter theta", + iota:"Greek small letter iota", + kappa:"Greek small letter kappa", + lambda:"Greek small letter lambda", + mu:"Greek small letter mu", + nu:"Greek small letter nu", + xi:"Greek small letter xi", + omicron:"Greek small letter omicron", + pi:"Greek small letter pi", + rho:"Greek small letter rho", + sigmaf:"Greek small letter final sigma", + sigma:"Greek small letter sigma", + tau:"Greek small letter tau", + upsilon:"Greek small letter upsilon", + phi:"Greek small letter phi", + chi:"Greek small letter chi", + psi:"Greek small letter psi", + omega:"Greek small letter omega", + thetasym:"Greek small letter theta symbol", + upsih:"Greek upsilon with hook symbol", + piv:"Greek pi symbol", + bull:"bullet\nblack small circle", + hellip:"horizontal ellipsis\nthree dot leader", + prime:"prime\nminutes\nfeet", + Prime:"double prime\nseconds\ninches", + oline:"overline\nspacing overscore", + frasl:"fraction slash", + weierp:"script capital P\npower set\nWeierstrass p", + image:"blackletter capital I\nimaginary part", + real:"blackletter capital R\nreal part symbol", + trade:"trade mark sign", + alefsym:"alef symbol\nfirst transfinite cardinal", + larr:"leftwards arrow", + uarr:"upwards arrow", + rarr:"rightwards arrow", + darr:"downwards arrow", + harr:"left right arrow", + crarr:"downwards arrow with corner leftwards\ncarriage return", + lArr:"leftwards double arrow", + uArr:"upwards double arrow", + rArr:"rightwards double arrow", + dArr:"downwards double arrow", + hArr:"left right double arrow", + forall:"for all", + part:"partial differential", + exist:"there exists", + empty:"empty set\nnull set\ndiameter", + nabla:"nabla\nbackward difference", + isin:"element of", + notin:"not an element of", + ni:"contains as member", + prod:"n-ary product\nproduct sign", + sum:"n-ary sumation", + minus:"minus sign", + lowast:"asterisk operator", + radic:"square root\nradical sign", + prop:"proportional to", + infin:"infinity", + ang:"angle", + and:"logical and\nwedge", + or:"logical or\nvee", + cap:"intersection\ncap", + cup:"union\ncup","int":"integral", + there4:"therefore", + sim:"tilde operator\nvaries with\nsimilar to", + cong:"approximately equal to", + asymp:"almost equal to\nasymptotic to", + 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" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/AutoSave.js new file mode 100644 index 0000000..cac5a56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/AutoSave.js @@ -0,0 +1,15 @@ +define( +({ + "saveLabel": "Spremi", + "saveSettingLabelOn": "Postavi interval automatskog spremanja...", + "saveSettingLabelOff": "Isključi automatsko spremanje", + "saveSettingdialogTitle": "Automatsko spremanje", + "saveSettingdialogDescription": "Navedi interval automatskog spremanja", + "saveSettingdialogParamName": "Interval automatskog spremanja", + "saveSettingdialogParamLabel": "minimum", + "saveSettingdialogButtonOk": "Postavi interval", + "saveSettingdialogButtonCancel": "Opoziv", + "saveMessageSuccess": "Spremljeno na ${0}", + "saveMessageFail": "Neuspješno spremanje na ${0}" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Blockquote.js new file mode 100644 index 0000000..4de9332 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Blockquote.js @@ -0,0 +1,5 @@ +define( +({ + "blockquote": "Dugi citat" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Breadcrumb.js new file mode 100644 index 0000000..fdd6f20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Breadcrumb.js @@ -0,0 +1,11 @@ +define( +({ + "nodeActions": "${nodeName} Akcije", + "selectContents": "Izaberi sadržaj", + "selectElement": "Izaberi elemente", + "deleteElement": "Izbriši element", + "deleteContents": "Izbriši sadržaj", + "moveStart": "Pomakni pokazivač na početak", + "moveEnd": "Pomakni pokazivač na kraj" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/CollapsibleToolbar.js new file mode 100644 index 0000000..295f9ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/CollapsibleToolbar.js @@ -0,0 +1,6 @@ +define( +({ + "collapse": "Spusti traku s alatima editora", + "expand": "Proširi traku s alatima editora" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/FindReplace.js new file mode 100644 index 0000000..53b4187 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/FindReplace.js @@ -0,0 +1,23 @@ +define( +({ + "findLabel": "Traži:", + "findTooltip": "Unesi tekst pretrage", + "replaceLabel": "Zamijeni s:", + "replaceTooltip": "Unesi tekst za zamjenu", + "findReplace": "Traži i zamijeni", + "matchCase": "Usporedi velika/mala slova", + "matchCaseTooltip": "Usporedi velika/mala slova", + "backwards": "Natrag", + "backwardsTooltip": "Pretraži tekst u prethodnim koracima", + "replaceAllButton": "Zamijeni sve", + "replaceAllButtonTooltip": "Zamijeni cijeli tekst", + "findButton": "Traži", + "findButtonTooltip": "Traži tekst", + "replaceButton": "Zamijeni", + "replaceButtonTooltip": "Zamijeni tekst", + "replaceDialogText": "Zamijenjeno ${0} pojavljivanja.", + "eofDialogText": "Zadnje pojavljivanje ${0}", + "eofDialogTextFind": "nađeno", + "eofDialogTextReplace": "zamijenjeno" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/InsertAnchor.js new file mode 100644 index 0000000..5c60ce1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/InsertAnchor.js @@ -0,0 +1,10 @@ +define( +({ + insertAnchor: "Umetni sidro", + title: "Svojstva sidra", + anchor: "Naziv:", + text: "Opis:", + set: "Postavi", + cancel: "Opoziv" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/InsertEntity.js new file mode 100644 index 0000000..761d408 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/InsertEntity.js @@ -0,0 +1,5 @@ +define( +({ + insertEntity: "Umetni simbol" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/LocalImage.js new file mode 100644 index 0000000..49e6fa0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/LocalImage.js @@ -0,0 +1,12 @@ +define( +({ + insertImageTitle: "Umetni sliku", + url: "Slika ", + browse: "Pregledaj...", + text: "Opis", + set: "Umetni", + invalidMessage: "Pogrešan tip slikovne datoteke", + prePopuTextUrl: "Unesite URL slike", + prePopuTextBrowse: " ili pregledajte mjesnu datoteku." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/PageBreak.js new file mode 100644 index 0000000..b4f4a8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/PageBreak.js @@ -0,0 +1,5 @@ +define( +({ + "pageBreak": "Prijelom stranice" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/PasteFromWord.js new file mode 100644 index 0000000..6e1add5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/PasteFromWord.js @@ -0,0 +1,8 @@ +define( +({ + "pasteFromWord": "Zalijepi iz Worda", + "paste": "Zalijepi", + "cancel": "Opoziv", + "instructions": "Zalijepite sadržaj iz Worda u donji tekstni okvir. Kada ste zadovoljni sa sadržajem za umetanje, pritisnite tipku Zalijepi. Za prekid umetanja teksta, pritisnite tipku Opoziv." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Preview.js new file mode 100644 index 0000000..6a6ce16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Preview.js @@ -0,0 +1,5 @@ +define( +({ + "preview": "Pregled" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/SafePaste.js new file mode 100644 index 0000000..817bf8d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Izravno lijepljenje je onemogućeno. Molimo zalijepite sadržaj u ovom dijaloškom okviru pomoću kontrola za lijepljenje na tipkovnici ili izborniku standardnog preglednika. Kada ste zadovoljni sa sadržajem za umetanje, pritisnite tipku Zalijepi. Za prekid umetanja sadržaja, pritisnite tipku Opoziv." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Save.js new file mode 100644 index 0000000..de69158 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Save.js @@ -0,0 +1,5 @@ +define( +({ + "save": "Spremi" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/ShowBlockNodes.js new file mode 100644 index 0000000..17fe691 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/ShowBlockNodes.js @@ -0,0 +1,5 @@ +define( +({ + "showBlockNodes": "Prikaži elemente HTML bloka" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Smiley.js new file mode 100644 index 0000000..e992c36 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/Smiley.js @@ -0,0 +1,24 @@ +define( +({ + smiley: "Umetni emotikon", + emoticonSmile: "smiješak", + emoticonLaughing: "smijanje", + emoticonWink: "namigivanje", + emoticonGrin: "cerenje", + emoticonCool: "staložen", + emoticonAngry: "ljut", + emoticonHalf: "indiferentan", + emoticonEyebrow: "namigivanje", + emoticonFrown: "namršten", + emoticonShy: "stidljiv", + emoticonGoofy: "budalast", + emoticonOops: "ups", + emoticonTongue: "plaženje jezika", + emoticonIdea: "ideja", + emoticonYes: "da", + emoticonNo: "ne", + emoticonAngel: "anđeo", + emoticonCrying: "plakanje", + emoticonHappy: "sretan" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/SpellCheck.js new file mode 100644 index 0000000..6eeb49a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/SpellCheck.js @@ -0,0 +1,18 @@ +define( +({ + widgetLabel: "Provjera pravopisa paketa", + unfound: "Nije nađeno", + skip: "Preskoči", + skipAll: "Preskoči sve", + toDic: "Dodaj u rječnik", + suggestions: "Prijedlozi", + replace: "Zamijeni", + replaceWith: "Zamijeni s", + replaceAll: "Zamijeni sve", + cancel: "Opoziv", + msg: "Nisu nađene pogreške u pisanju", + iSkip: "Preskoči ovo", + iSkipAll: "Preskoči sve poput ovog", + iMsg: "Nema prijedloga pravopisa" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/TableDialog.js new file mode 100644 index 0000000..b5c833a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/TableDialog.js @@ -0,0 +1,31 @@ +define( +({ + insertTableTitle: "Umetni tablicu", + modifyTableTitle: "Promijeni tablicu", + rows: "Redovi:", + columns: "Stupci:", + align: "Poravnaj:", + cellPadding: "Punjenje ćelije:", + cellSpacing: "Prored ćelije:", + tableWidth: "Širina tablice:", + backgroundColor: "Boja pozadine:", + borderColor: "Boja obruba:", + borderThickness: "Debljina obruba:", + percent: "postotak", + pixels: "pikseli", + "default": "zadano", + left: "lijevo", + center: "sredina", + right: "desno", + buttonSet: "Postavi", // translated elsewhere? + buttonInsert: "Umetni", + buttonCancel: "Opoziv", + selectTableLabel: "Označi tablicu", + insertTableRowBeforeLabel: "Dodaj redak prije", + insertTableRowAfterLabel: "Dodaj redak nakon", + insertTableColumnBeforeLabel: "Dodaj stupac prije", + insertTableColumnAfterLabel: "Dodaj stupac nakon", + deleteTableRowLabel: "Izbriši redak", + deleteTableColumnLabel: "Izbriši stupac" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/TextColor.js new file mode 100644 index 0000000..8893b7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/TextColor.js @@ -0,0 +1,6 @@ +define( +({ + "setButtonText": "Postavi", + "cancelButtonText": "Opoziv" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/latinEntities.js new file mode 100644 index 0000000..e4a9a81 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hr/latinEntities.js @@ -0,0 +1,257 @@ +define( +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"obrnuti uskličnik", + cent:"znak centa", + pound:"znak funte", + curren:"znak valute", + yen:"znak yena\nznak yuana", + brvbar:"isprekidana crta\nisprekidana okomita crta", + sect:"znak odlomka", + uml:"dijareza\nprored dijareze", + copy:"znak autorskog prava", + ordf:"indikator rednog broja ženskog roda", + laquo:"navodnik okrenut prema lijevo s dvostrukom strelicom\nnavodnik sa strelicama okrenutim prema lijevo", + not:"znak ne", + shy:"meka crtica\ndiskrecijska crtica", + reg:"znak za registrirano\nznak za registrirani zaštitni znak", + macr:"makron\nprored makrona\nnadvučeno\nAPL crta iznad", + deg:"znak stupnja", + plusmn:"znak plus-minus\nplus-ili-minus znak", + sup2:"superskript dva\nsuperskript broj dva\nkvadriran", + sup3:"superskript tri\nsuperskript broj tri\nkuban", + acute:"jednostruki navodnik\nprored jednostrukog navodnika", + micro:"znak mikro", + para:"znak odlomka\nznak paragrafa", + middot:"srednja točka\ngeorgijanski zarez\ngrčka srednja točka", + cedil:"sedija\nprored sedije", + sup1:"superskript jedan\nsuperskript broj jedan", + ordm:"indikator rednog broja muškog roda", + raquo:"navodnik okrenut prema desno s dvostrukom strelicom\nnavodnik sa strelicama okrenutim prema desno", + frac14:"prost razlomak jedne četvrtine\nrazlomak jedna četvrtina", + frac12:"prost razlomak jedne polovine\nrazlomak jedna polovina", + frac34:"prost razlomak tri četvrtine\nrazlomak tri četvrtine", + iquest:"preokrenuti upitnik\nokrenut upitnik", + Agrave:"Latinsko veliko slovo A s grav akcentom\nLatinsko veliko slovo A grav", + Aacute:"Latinsko veliko slovo A s akutnim akcentom", + Acirc:"Latinsko veliko slovo A sa cirkumfleksom", + Atilde:"Latinsko veliko slovo A s tildom", + Auml:"Latinsko veliko slovo A s dijarezom", + Aring:"Latinsko veliko slovo A s prstenom iznad\nLatinsko veliko slovo A prsten iznad", + AElig:"Latinsko veliko slovo AE\nLatinsko veliko spojeno slovo AE", + Ccedil:"Latinsko veliko slovo C sa sedijom", + Egrave:"Latinsko veliko slovo E s grav akcentom", + Eacute:"Latinsko veliko slovo E s akutnim akcentom", + Ecirc:"Latinsko veliko slovo E sa cirkumfleksom", + Euml:"Latinsko veliko slovo E s dijarezom", + Igrave:"Latinsko veliko slovo I s grav akcentom", + Iacute:"Latinsko veliko slovo I s akutnim akcentom", + Icirc:"Latinsko veliko slovo I sa cirkumfleksom", + Iuml:"Latinsko veliko slovo I s dijarezom", + ETH:"Latinsko veliko slovo ETH", + Ntilde:"Latinsko veliko slovo N s tildom", + Ograve:"Latinsko veliko slovo O s grav akcentom", + Oacute:"Latinsko veliko slovo O s akutnim akcentom", + Ocirc:"Latinsko veliko slovo O sa cirkumfleksom", + Otilde:"Latinsko veliko slovo O s tildom", + Ouml:"Latinsko veliko slovo O s dijarezom", + times:"znak množenja", + Oslash:"Latinsko veliko slovo O s kosom crtom\nLatinsko veliko slovo O kosa crta", + Ugrave:"Latinsko veliko slovo U s grav akcentom", + Uacute:"Latinsko veliko slovo U s akutnim akcentom", + Ucirc:"Latinsko veliko slovo U sa cirkumfleksom", + Uuml:"Latinsko veliko slovo U s dijarezom", + Yacute:"Latinsko veliko slovo Y s akutnim akcentom", + THORN:"Latinsko veliko slovo THORN", + szlig:"Latinsko malo slovo oštro s\ness-zed", + agrave:"Latinsko malo slovo a s grav akcentom\nLatinsko malo slovo a grav akcent", + aacute:"Latinsko malo slovo a s akutnim akcentom", + acirc:"Latinsko malo slovo a sa cirkumfleksom", + atilde:"Latinsko malo slovo a s tildom", + auml:"Latinsko malo slovo a s dijarezom", + aring:"Latinsko malo slovo a s prstenom iznad\nLatinsko malo slovo a prsten iznad", + aelig:"Latinsko malo slovo ae\nLatinsko malo spojeno slovo ae", + ccedil:"Latinsko malo slovo c sa sedijom", + egrave:"Latinsko malo slovo e s grav akcentom", + eacute:"Latinsko malo slovo e s akutnim akcentom", + ecirc:"Latinsko malo slovo e sa cirkumfleksom", + euml:"Latinsko malo slovo e s dijarezom", + igrave:"Latinsko malo slovo i s grav akcentom", + iacute:"Latinsko malo slovo i s akutnim akcentom", + icirc:"Latinsko malo slovo i sa cirkumfleksom", + iuml:"Latinsko malo slovo i s dijarezom", + eth:"Latinsko malo slovo eth", + ntilde:"Latinsko malo slovo n s tildom", + ograve:"Latinsko malo slovo o s grav akcentom", + oacute:"Latinsko malo slovo o s akutnim akcentom", + ocirc:"Latinsko malo slovo o sa cirkumfleksom", + otilde:"Latinsko malo slovo o s tildom", + ouml:"Latinsko malo slovo o s dijarezom", + divide:"znak dijeljenja", + oslash:"Latinsko malo slovo o s kosom crtom\nLatinsko malo slovo o kosa crta", + ugrave:"Latinsko malo slovo u s grav akcentom", + uacute:"Latinsko malo slovo u s akutnim akcentom", + ucirc:"Latinsko malo slovo u sa cirkumfleksom", + uuml:"Latinsko malo slovo u s dijarezom", + yacute:"Latinsko malo slovo y s akutnim akcentom", + thorn:"Latinsko malo slovo thorn", + yuml:"Latinsko malo slovo y s dijarezom", +// Greek Characters and Symbols + fnof:"Latinsko malo f s kvačicom\nfunkcija\nflorin", + Alpha:"Grčko veliko slovo alfa", + Beta:"Grčko veliko slovo beta", + Gamma:"Grčko veliko slovo gama", + Delta:"Grčko veliko slovo delta", + Epsilon:"Grčko veliko slovo epsilon", + Zeta:"Grčko veliko slovo zeta", + Eta:"Grčko veliko slovo eta", + Theta:"Grčko veliko slovo theta", + Iota:"Grčko veliko slovo jota", + Kappa:"Grčko veliko slovo kapa", + Lambda:"Grčko veliko slovo lambda", + Mu:"Grčko veliko slovo mi", + Nu:"Grčko veliko slovo ni", + Xi:"Grčko veliko slovo ksi", + Omicron:"Grčko veliko slovo omikron", + Pi:"Grčko veliko slovo pi", + Rho:"Grčko veliko slovo ro", + Sigma:"Grčko veliko slovo sigma", + Tau:"Grčko veliko slovo tau", + Upsilon:"Grčko veliko slovo ipsilon", + Phi:"Grčko veliko slovo fi", + Chi:"Grčko veliko slovo hi", + Psi:"Grčko veliko slovo psi", + Omega:"Grčko veliko slovo omega", + alpha:"Grčko malo slovo alfa", + beta:"Grčko malo slovo beta", + gamma:"Grčko malo slovo gama", + delta:"Grčko malo slovo delta", + epsilon:"Grčko malo slovo epsilon", + zeta:"Grčko malo slovo zeta", + eta:"Grčko malo slovo eta", + theta:"Grčko malo slovo theta", + iota:"Grčko malo slovo jota", + kappa:"Grčko malo slovo kapa", + lambda:"Grčko malo slovo lambda", + mu:"Grčko malo slovo mi", + nu:"Grčko malo slovo ni", + xi:"Grčko malo slovo ksi", + omicron:"Grčko malo slovo omikron", + pi:"Grčko malo slovo pi", + rho:"Grčko malo slovo ro", + sigmaf:"Grčko malo slovo zadnje sigma", + sigma:"Grčko malo slovo sigma", + tau:"Grčko malo slovo tau", + upsilon:"Grčko malo slovo ipsilon", + phi:"Grčko malo slovo fi", + chi:"Grčko malo slovo hi", + psi:"Grčko malo slovo psi", + omega:"Grčko malo slovo omega", + thetasym:"Grčko malo slovo simbol theta", + upsih:"Grčki ipsilon sa simbolom kvačice", + piv:"Grčki simbol pi", + bull:"grafička oznaka\ncrni mali krug", + hellip:"vodoravne tri točkice\ntri točkice", + prime:"prost\nminute\nstopalo", + Prime:"dvostruko prost\nsekunde\ninči", + oline:"nadvučeno\nprored crtice iznad", + frasl:"kosa crta razlomka", + weierp:"skriptno veliko slovo P\nnadskup\nWeierstrass p", + image:"veliko slovo I gotskog pisma\nzamišljeni dio", + real:"veliko slovo R gotskog pisma\nsimbol stvarnog dijela", + trade:"znak zaštitnog znaka", + alefsym:"simbol alef\nprvi transfinitni prost broj", + larr:"strelica ulijevo", + uarr:"strelica prema gore", + rarr:"strelica udesno", + darr:"strelica prema dolje", + harr:"strelica lijevo desno", + crarr:"strelica prema dolje s lijevim kutom\noznaka kraja reda", + lArr:"dvostruka strelica ulijevo", + uArr:"dvostruka strelica prema gore", + rArr:"dvostruka strelica udesno", + dArr:"dvostruka strelica prema dolje", + hArr:"dvostruka strelica lijevo desno", + forall:"za sve", + part:"djelomični diferencijal", + exist:"tamo postoji", + empty:"prazan skup\nnull skup\ndijametar", + nabla:"nabla\npovratna razlika", + isin:"element od", + notin:"nije element od", + ni:"sadrži kao član", + prod:"n-ski proizvod\nsnak proizvoda", + sum:"n-ski zbroj", + minus:"znak minusa", + lowast:"operator zvjezdica", + radic:"kvadratni korijen\nznak korijena", + prop:"proporcionalan s", + infin:"beskonačno", + ang:"kut", + and:"logički i\nukliješten", + or:"logički ili\nv", + cap:"presjek\nkapa", + cup:"unija\nkup","int":"integral", + there4:"prema tome", + sim:"operator tilda\nmijenja se s\nsličan", + cong:"približno jednako", + asymp:"pretežno jednako\nasimptotski", + ne:"nije jednako", + equiv:"identično", + le:"manje ili jednako", + ge:"veće ili jednako", + sub:"podskup", + sup:"nadskup", + nsub:"nije podskup", + sube:"podskup ili jednak", + supe:"nadskup oli jednak", + oplus:"zaokruženi plus\nizravna suma", + otimes:"zaokružen znak umnoška\numnožak vektora", + perp:"čvao prema gore\nortogonalan\nvertikalan", + sdot:"operator točka", + lceil:"lijevi stropni\nAPL lijevi stropni", + rceil:"desni stropni", + lfloor:"lijevi podni\nAPL lijevi podni", + rfloor:"desni podni", + lang:"uglata zagrada ulijevo", + rang:"uglata zagrada udesno", + loz:"dijamant", + spades:"boja crni pik", + clubs:"boja crni tref\ndjetelina", + hearts:"boja crni herc\nsrce", + diams:"boja crni karo", + OElig:"Latinsko veliko spojeno slovo OE", + oelig:"Latinsko malo spojeno slovo oe", + Scaron:"Latinsko veliko slovo S s invertiranim cirkumfleksom", + scaron:"Latinsko malo slovo s s invertiranim cirkumfleksom", + Yuml:"Latinsko veliko slovo Y s dijarezom", + circ:"cirkumfleks akcent slova modifikatora", + tilde:"mala tilda", + ensp:"en prostor", + emsp:"em prostor", + thinsp:"tanak prostor", + zwnj:"ne-sastavljač nulte širine", + zwj:"sastavljač nulte širine", + lrm:"oznaka lijevo-desno", + rlm:"oznaka desno-lijevo", + ndash:"en crtica", + mdash:"em crtica", + lsquo:"lijevi jednostruki navodnik", + rsquo:"desni jednostruki navodnik", + sbquo:"jednostruki navodnik oblika male devetke", + ldquo:"lijevi dvostruki navodnik", + rdquo:"desni dvostruki navodnik", + bdquo:"dvostruki navodnik oblika male devetke", + dagger:"kama", + Dagger:"dvostruka kama", + permil:"znak milje", + lsaquo:"jednostruki navodnik ulijevo", + rsaquo:"jednostruki navodnik udesno", + euro:"znak eura" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/AutoSave.js new file mode 100644 index 0000000..820d04c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Mentés", + "saveSettingLabelOn": "Automatikus mentés időközének beállítása...", + "saveSettingLabelOff": "Automatikus mentés kikapcsolása", + "saveSettingdialogTitle": "Automatikus mentés", + "saveSettingdialogDescription": "Automatikus mentés időközének megadása", + "saveSettingdialogParamName": "Automatikus mentés időköze", + "saveSettingdialogParamLabel": "perc", + "saveSettingdialogButtonOk": "Időköz beállítása", + "saveSettingdialogButtonCancel": "Mégse", + "saveMessageSuccess": "Mentés: ${0}", + "saveMessageFail": "Sikertelen mentés: ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Blockquote.js new file mode 100644 index 0000000..a6b3111 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Idézet" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Breadcrumb.js new file mode 100644 index 0000000..fc306ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} műveletek", + "selectContents": "Tartalom kiválasztása", + "selectElement": "Elem kiválasztása", + "deleteElement": "Elem törlése", + "deleteContents": "Tartalom törlése", + "moveStart": "Kurzor mozgatása az elejére", + "moveEnd": "Kurzor mozgatása a végére" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/CollapsibleToolbar.js new file mode 100644 index 0000000..7f84883 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Szerkesztő eszköztár összezárása", + "expand": "Szerkesztő eszköztár kibontása" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/FindReplace.js new file mode 100644 index 0000000..c146db0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Keresés:", + "findTooltip": "Adja meg a keresett szöveget", + "replaceLabel": "Csere:", + "replaceTooltip": "Adja meg a cseréhez az új szöveget", + "findReplace": "Keresés és csere", + "matchCase": "Kis-nagybetűk egyeznek", + "matchCaseTooltip": "Kis-nagybetűk egyeznek", + "backwards": "Visszafelé", + "backwardsTooltip": "Szöveg keresése visszafelé", + "replaceAllButton": "Mindent lecserél", + "replaceAllButtonTooltip": "Minden szöveg cseréje", + "findButton": "Keresés", + "findButtonTooltip": "Szöveg keresése", + "replaceButton": "Csere", + "replaceButtonTooltip": "Szöveg cseréje", + "replaceDialogText": "${0} előfordulás cseréje megtörtént.", + "eofDialogText": "Legutóbbi előfordulás: ${0}", + "eofDialogTextFind": "találat", + "eofDialogTextReplace": "cserélve" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/InsertAnchor.js new file mode 100644 index 0000000..242fe0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Horgony beszúrása", + title: "Horgony tulajdonságai", + anchor: "Név:", + text: "Leírás:", + set: "Beállítás", + cancel: "Mégse" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/InsertEntity.js new file mode 100644 index 0000000..8744bbd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Szimbólum beszúrása" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/LocalImage.js new file mode 100644 index 0000000..4e0f2cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Kép beszúrása", + url: "Kép", + browse: "Tallózás...", + text: "Leírás", + set: "Beszúrás", + invalidMessage: "Érvénytelen képfájltípus", + prePopuTextUrl: "Adja meg a kép URL címét", + prePopuTextBrowse: " vagy tallózással válasszon ki egy helyi fájlt." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/PageBreak.js new file mode 100644 index 0000000..12b4b38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Oldaltörés" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/PasteFromWord.js new file mode 100644 index 0000000..a515fec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Beillesztés Word alkalmazásból", + "paste": "Beillesztés", + "cancel": "Mégse", + "instructions": "Illessze be a Word alkalmazás tartalmát az alábbi szövegmezőbe. Ha elégedett a beszúrandó tartalommal, akkor nyomja meg a beillesztés gombot. Szöveg beszúrásának megszakításához nyomja meg a mégse gombot." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Preview.js new file mode 100644 index 0000000..0d05ae2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Előzetes" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/SafePaste.js new file mode 100644 index 0000000..9203412 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "A közvetlen beillesztés le van tiltva. A böngésző szokványos beillesztési billentyűkombinációjával vagy menüparancsával illessze be a tartalmat ebbe a párbeszédpanelbe. Ha a beilleszteni kívánt tartalom megfelelő, kattintson a beillesztési gombra. A tartalom beillesztésének megszakításához kattintson a Mégse gombra." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Save.js new file mode 100644 index 0000000..07a7ffc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Mentés" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/ShowBlockNodes.js new file mode 100644 index 0000000..2f1d299 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "HTML blokk elemek megjelenítése" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Smiley.js new file mode 100644 index 0000000..cff7a2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Hangulatjel beszúrása", + emoticonSmile: "mosoly", + emoticonLaughing: "nevetés", + emoticonWink: "kacsintás", + emoticonGrin: "vigyor", + emoticonCool: "laza", + emoticonAngry: "mérges", + emoticonHalf: "fél", + emoticonEyebrow: "szemöldök", + emoticonFrown: "rosszallás", + emoticonShy: "szégyenlős", + emoticonGoofy: "ostoba", + emoticonOops: "hoppá", + emoticonTongue: "nyelv", + emoticonIdea: "ötlet", + emoticonYes: "igen", + emoticonNo: "nem", + emoticonAngel: "angyal", + emoticonCrying: "sírás", + emoticonHappy: "boldog" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/SpellCheck.js new file mode 100644 index 0000000..bd1d7ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Kötegelt helyesírás-ellenőrzés", + unfound: "Nem található", + skip: "Kihagyja", + skipAll: "Mindet kihagyja", + toDic: "Hozzáadás a szótárhoz", + suggestions: "Javaslatok", + replace: "Csere", + replaceWith: "Csere erre", + replaceAll: "Mindent lecserél", + cancel: "Mégse", + msg: "Nem található helyesírási hiba", + iSkip: "Ezt kihagyja", + iSkipAll: "Összes hasonlót kihagyja", + iMsg: "Nincsenek helyesírási javaslatok" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/TableDialog.js new file mode 100644 index 0000000..d736041 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Táblázat beszúrása", + modifyTableTitle: "Táblázat módosítása", + rows: "Sorok:", + columns: "Oszlopok:", + align: "Igazítás:", + cellPadding: "Cellakitöltés:", + cellSpacing: "Cella térköz:", + tableWidth: "Táblázat szélessége:", + backgroundColor: "Háttérszín:", + borderColor: "Szegélyszín:", + borderThickness: "Szegély vastagsága", + percent: "százalék", + pixels: "képpont", + "default": "alapértelmezett", + left: "balra", + center: "középre", + right: "jobbra", + buttonSet: "Beállítás", // translated elsewhere? + buttonInsert: "Beszúrás", + buttonCancel: "Mégse", + + selectTableLabel: "Táblázat kijelölése", + insertTableRowBeforeLabel: "Sor hozzáadása előtte", + insertTableRowAfterLabel: "Sor hozzáadása utána", + insertTableColumnBeforeLabel: "Oszlop hozzáadása előtte", + insertTableColumnAfterLabel: "Oszlop hozzáadása utána", + deleteTableRowLabel: "Sor törlése", + deleteTableColumnLabel: "Oszlop törlése" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/TextColor.js new file mode 100644 index 0000000..9e7f122 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Beállítás", + "cancelButtonText": "Mégse" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/latinEntities.js new file mode 100644 index 0000000..536051c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/hu/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"fordított felkiáltójel", + cent:"cent jel", + pound:"font jel", + curren:"pénznem jel", + yen:"jen jel\nyuan jel", + brvbar:"megszakított vonal\nmegszakított függőleges vonal", + sect:"paragrafusjel", + uml:"dupla ékezet\numlaut", + copy:"copyright jel", + ordf:"nőnemű sorszámnév jelzése a felső indexben", + laquo:"balra mutató dupla hegyes idézőjel\nbalra mutató belső idézőjel", + not:"nem jel", + shy:"lágy kötőjel\nfeltételes kötőjel", + reg:"védjegy jel\nbejegyzett védjegy jel", + macr:"föléhúzás jel\nAPL felülhúzás", + deg:"fok jel", + plusmn:"plus-mínusz jel\nplusz-vagy-mínusz jel", + sup2:"2 felső indexben\nfelső indexbe írt kettes számjegy\nnégyzetre emelés", + sup3:"3 felső indexben\nfelső indexbe írt hármas számjegy\nköbre emelés", + acute:"hegyes ékezet\nkalapos ékezet", + micro:"mikro jel", + para:"sorvége jel\nbekezdés jel", + middot:"középső pont\nGregorián vessző\nGörög középső pont", + cedil:"cedill\nbalra hajló alsó hurok", + sup1:"1 a felső indexben\nfelső indexbe írt egyes számjegy", + ordm:"hímnemű sorszámnév jelzése a felső indexben", + raquo:"jobbra mutató dupla hegyes idézőjel\njobbra mutató belső idézőjel", + frac14:"közönséges egynegyed tört\nnegyed", + frac12:"közönséges fél tört\nfél", + frac34:"közönséges háromnegyed tört\nháromnegyed", + iquest:"fordított kérdőjel\nmegfordított kérdőjel", + Agrave:"Latin nagy A betű tompa ékezettel\nTompa ékezetes latin nagy A betű", + Aacute:"Latin nagy A betű éles ékezettel", + Acirc:"Latin kalapos nagy A betű", + Atilde:"Latin hullámvonalas nagy A betű", + Auml:"Latin kétpontos nagy A betű", + Aring:"Latin nagy A betű felül körrel\nLatin nagy A betű felső körrel", + AElig:"Latin nagy AE\nLatin nagy AE ikerbetű", + Ccedil:"Latin nagy C betű cedillel", + Egrave:"Latin nagy E betű tompa ékezettel", + Eacute:"Latin nagy E betű éles ékezettel", + Ecirc:"Latin kalapos nagy E betű", + Euml:"Latin kétpontos nagy E betű", + Igrave:"Latin nagy I betű tompa ékezettel", + Iacute:"Latin nagy I betű éles ékezettel", + Icirc:"Latin kalapos nagy I betű", + Iuml:"Latin kétpontos nagy I betű", + ETH:"Latin nagy ETH betű", + Ntilde:"Latin hullámvonalas nagy N betű", + Ograve:"Latin nagy O betű tompa ékezettel", + Oacute:"Latin nagy O betű éles ékezettel", + Ocirc:"Latin kalapos nagy O betű", + Otilde:"Latin hullámvonalas nagy O betű", + Ouml:"Latin kétpontos nagy O betű", + times:"szorzásjel", + Oslash:"Latin áthúzott nagy O betű\nLatin nagy O betű osztásjellel", + Ugrave:"Latin nagy U betű tompa ékezettel", + Uacute:"Latin nagy U betű éles ékezettel", + Ucirc:"Latin kalapos nagy U betű", + Uuml:"Latin kétpontos nagy U betű", + Yacute:"Latin nagy Y betű éles ékezettel", + THORN:"Latin nagy THORN betű", + szlig:"Latin kis sharfes s\neszett", + agrave:"Latin kis a betű tompa ékezettel\nTompa ékezetes latin kis a betű", + aacute:"Latin kis a betű éles ékezettel", + acirc:"Latin kalapos kis a betű", + atilde:"Latin hullámvonalas kis a betű", + auml:"Latin kétpontos kis a betű", + aring:"Latin kis a betű felül körrel\nLatin kis a betű felső körrel", + aelig:"Latin kis ae betű\nLatin kis ae ikerbetű", + ccedil:"Latin kis c betű cedillel", + egrave:"Latin kis e betű tompa ékezettel", + eacute:"Latin kis e betű éles ékezettel", + ecirc:"Latin kalapos kis e betű", + euml:"Latin kétpontos kis e betű", + igrave:"Latin kis i betű tompa ékezettel", + iacute:"Latin kis i betű éles ékezettel", + icirc:"Latin kalapos kis i betű", + iuml:"Latin kétpontos kis i betű", + eth:"Latin kis eth betű", + ntilde:"Latin hullámvonalas kis n betű", + ograve:"Latin kis o betű tompa ékezettel", + oacute:"Latin kis o betű éles ékezettel", + ocirc:"Latin kalapos kis o betű", + otilde:"Latin hullámvonalas kis o betű", + ouml:"Latin kétpontos kis o betű", + divide:"osztásjel", + oslash:"Latin áthúzott kis o betű\nLatin kis o betű osztásjellel", + ugrave:"Latin kis u betű tompa ékezettel", + uacute:"Latin kis u betű éles ékezettel", + ucirc:"Latin kalapos kis u betű", + uuml:"Latin kétpontos kis u betű", + yacute:"Latin kis y éles ékezettel", + thorn:"Latin kis thorn betű", + yuml:"Latin kétpontos kis y", + +// Greek Characters and Symbols + fnof:"Latin kis f horoggal\nfüggvény\nforint", + Alpha:"Görög nagy alfa betű", + Beta:"Görög nagy béta betű", + Gamma:"Görög nagy gamma betű", + Delta:"Görög nagy delta betű", + Epsilon:"Görög nagy epszilon betű", + Zeta:"Görög nagy dzéta betű", + Eta:"Görög nagy éta betű", + Theta:"Görög nagy théta betű", + Iota:"Görög nagy iota betű", + Kappa:"Görög nagy kappa betű", + Lambda:"Görög nagy lambda betű", + Mu:"Görög nagy mű betű", + Nu:"Görög nagy nű betű", + Xi:"Görög nagy kszí betű", + Omicron:"Görög nagy omikron betű", + Pi:"Görög nagy pi betű", + Rho:"Görög nagy ró betű", + Sigma:"Görög nagy szigma betű", + Tau:"Görög nagy tau betű", + Upsilon:"Görög nagy üpszilon betű", + Phi:"Görög nagy fí betű", + Chi:"Görög nagy khí betű", + Psi:"Görög nagy pszí betű", + Omega:"Görög nagy ómega betű", + alpha:"Görög kis alfa betű", + beta:"Görög kis béta betű", + gamma:"Görög kis gamma betű", + delta:"Görög kis delta betű", + epsilon:"Görög kis epszilon betű", + zeta:"Görög kis dzéta betű", + eta:"Görög kis éta betű", + theta:"Görög kis théta betű", + iota:"Görög kis ióta betű", + kappa:"Görög kis kappa betű", + lambda:"Görög kis lambda betű", + mu:"Görög kis mű betű", + nu:"Görög kis nű betű", + xi:"Görög kis kszí betű", + omicron:"Görög kis omikron betű", + pi:"Görög kis pí betű", + rho:"Görög kis ró betű", + sigmaf:"Görög kis szigma betű utolsó helyen", + sigma:"Görög kis szigma betű", + tau:"Görög kis taú betű", + upsilon:"Görög kis üpszilon betű", + phi:"Görög kis fí betű", + chi:"Görög kis khí betű", + psi:"Görög kis pszí betű", + omega:"Görög kis ómega betű", + thetasym:"Görög kis théta betű szimbólum", + upsih:"Görög üpszilon horog szimbólummal", + piv:"Görög pí szimbólum", + bull:"pont felsorolásjel\nkis fekete kör", + hellip:"vízszintes hármaspont\nbevezető hármas pont", + prime:"szimpla egyenes idézőjel\nperc\nláb", + Prime:"dupla egyenes idézőjel\nmásodperc\nhüvelyk", + oline:"felső vonal\nfelülvonás", + frasl:"tört osztásjel", + weierp:"írott nagy P\nhatványhalmaz\nWeierstrass p", + image:"megtört nagy I\nképzetes (imaginárius) rész", + real:"megtört nagy R\nvalós rész szimbólum", + trade:"védjegy jel", + alefsym:"alef szimbólum\nelső transzfinit pozitív egész szám", + larr:"balra mutató nyíl", + uarr:"felfelé mutató nyíl", + rarr:"jobbra mutató nyíl", + darr:"lefelé mutató nyíl", + harr:"balra-jobbra mutató nyíl", + crarr:"lefelé mutató nyíl bal oldalon sarokkal\nsoremelés", + lArr:"balra mutató dupla nyíl", + uArr:"felfelé mutató dupla nyíl", + rArr:"jobbra mutató dupla nyíl", + dArr:"lefelé mutató dupla nyíl", + hArr:"balra-jobbra mutató dupla nyíl", + forall:"minden\nfordított nagy A betű", + part:"részleges differenciál", + exist:"létezik", + empty:"üres halmaz\nnull halmaz\nátmérő", + nabla:"nabla\nfordított különbség", + isin:"eleme", + notin:"nem eleme", + ni:"tagként tartalmazza", + prod:"n-tagú Descartes szorzat\nszorzatjel", + sum:"n-tagú összegzés", + minus:"mínusz jel", + lowast:"csillag operátor", + radic:"négyzetgyök\nnégyzetgyök jel", + prop:"arányos", + infin:"végtelen", + ang:"szög", + and:"logikai és\nék", + or:"logikai vagy\nv-alak", + cap:"metszet", + cup:"unió","int":"integrál", + there4:"ezért", + sim:"hullám operátor\nváltakozik\nhasonló", + cong:"megközelítőleg egyenlő", + asymp:"majdnem egyenlő\naszimptotikus", + ne:"nem egyenlő", + equiv:"azonos", + le:"kisebb vagy egyenlő", + ge:"nagyobb vagy egyenlő", + sub:"részhalmaza", + sup:"bővített halmaza", + nsub:"nem részhalmaza", + sube:"részhalmaza vagy egyenlő", + supe:"bővített halmaza vagy egyenlő", + oplus:"bekarikázott plusz jel\nközvetlen összeg", + otimes:"bekarikázott x\nvektor szorzat", + perp:"merőleges\nortogonális", + sdot:"pont operátor", + lceil:"bal szögletes zárójel felső sarok\nAPL felső keret", + rceil:"jobb szögletes zárójel felső sarok", + lfloor:"bal szögletes zárójel alsó sarok\nAPL alsó keret", + rfloor:"jobb szögletes zárójel alsó sarok", + lang:"balra mutató hegyes zárójel", + rang:"jobbra mutató hegyes zárójel", + loz:"rombusz", + spades:"fekete pikk kártyajel", + clubs:"fekete treff kártyjel\nlóhere", + hearts:"fekete kör kártyajel\nszívalak", + diams:"fekete káró káryajel", + OElig:"Latin nagy OE ikerbetű", + oelig:"Latin kis oe ikerbetű", + Scaron:"Latin nagy S betű csónakkal", + scaron:"Latin kis s betű csónakkal", + Yuml:"Latin kétpontos nagy Y betű", + circ:"betűt módosító kalap ékezet", + tilde:"kis hullám", + ensp:"n szóköz", + emsp:"m szóköz", + thinsp:"szűk szóköz", + zwnj:"törhető üres jel", + zwj:"nem törhető üres jel", + lrm:"balról jobbra jel", + rlm:"jobbról balra jel", + ndash:"n kötőjel", + mdash:"m kötőjel", + lsquo:"bal szimpla idézőjel", + rsquo:"jobb szimpla idézőjel", + sbquo:"alsó 9-es szimpla idézőjel", + ldquo:"bal dupla idézőjel", + rdquo:"jobb dupla idézőjel", + bdquo:"alsó 9-es dupla idézőjel", + dagger:"kereszt", + Dagger:"dupla kereszt", + permil:"ezrelékjel", + lsaquo:"szimpla balra mutató hegyes idézőjel", + rsaquo:"szimpla jobbra mutató hegyes idézőjel", + euro:"euro jel" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/AutoSave.js new file mode 100644 index 0000000..dcc1292 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "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" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Breadcrumb.js new file mode 100644 index 0000000..862df3f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Azioni ${nodeName}", + "selectContents": "Seleziona contenuto", + "selectElement": "Seleziona elemento", + "deleteElement": "Elimina elemento", + "deleteContents": "Elimina contenuto", + "moveStart": "Sposta il cursore per iniziare", + "moveEnd": "Sposta il cursore per terminare" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/CollapsibleToolbar.js new file mode 100644 index 0000000..5daf5c6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Comprimi la barra degli strumenti dell'editor", + "expand": "Espandi la barra degli strumenti dell'editor" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/FindReplace.js new file mode 100644 index 0000000..4d1320c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Trova:", + "findTooltip": "Immettere il testo da trovare", + "replaceLabel": "Sostituisci con:", + "replaceTooltip": "Immettere il testo sostitutivo", + "findReplace": "Trova e sostituisci", + "matchCase": "Maiuscole/minuscole", + "matchCaseTooltip": "Maiuscole/minuscole", + "backwards": "Indietro", + "backwardsTooltip": "Cerca testo indietro", + "replaceAllButton": "Sostituisci tutto", + "replaceAllButtonTooltip": "Sostituisci tutto il testo", + "findButton": "Trova", + "findButtonTooltip": "Trova il testo", + "replaceButton": "Sostituisci", + "replaceButtonTooltip": "Sostituisci il testo", + "replaceDialogText": "${0} ricorrenze sostituite.", + "eofDialogText": "Ultima ricorrenza ${0}", + "eofDialogTextFind": "trovato", + "eofDialogTextReplace": "sostituito" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/InsertAnchor.js new file mode 100644 index 0000000..ac095b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Inserisci ancoraggio", + title: "Proprietà ancoraggio", + anchor: "Nome:", + text: "Descrizione:", + set: "Imposta", + cancel: "Annulla" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/InsertEntity.js new file mode 100644 index 0000000..32e3afc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Inserisci simbolo" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/LocalImage.js new file mode 100644 index 0000000..664bf37 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Inserisci immagine", + url: "Immagine", + browse: "Sfoglia...", + text: "Descrizione", + set: "Inserisci", + invalidMessage: "Tipo di file immagine non valido", + prePopuTextUrl: "Immettere un URL immagine", + prePopuTextBrowse: " o individuare un file locale." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/PageBreak.js new file mode 100644 index 0000000..277463f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Interruzione di pagina" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/PasteFromWord.js new file mode 100644 index 0000000..0aff219 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Incolla da Word", + "paste": "Incolla", + "cancel": "Annulla", + "instructions": "Incolla il contenuto da Word nella casella di testo sottostante. Al termine dell'inserimento del contenuto, premere il pulsante Incolla. Per annullare l'inserimento del testo, premere il pulsante Annulla." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Preview.js new file mode 100644 index 0000000..6415dfd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Anteprima" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/SafePaste.js new file mode 100644 index 0000000..f697476 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Non è possibile incollare direttamente. Incollare i contenuti in questa finestra di dialogo utilizzando i controlli standard da menu o da tastiera del browser. Quando si è deciso quali contenuti inserire, fare clic sul pulsante incolla. Per interrompere l'inserimento dei contenuti premere il pulsante annulla." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Save.js new file mode 100644 index 0000000..dd9f6aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Salva" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/ShowBlockNodes.js new file mode 100644 index 0000000..42dfb82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Mostra elementi blocco HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Smiley.js new file mode 100644 index 0000000..b73a8a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Inserisci emoticon", + emoticonSmile: "sorriso", + emoticonLaughing: "risata", + emoticonWink: "occhiolino", + emoticonGrin: "ghigno", + emoticonCool: "figo", + emoticonAngry: "arrabbiato", + emoticonHalf: "metà", + emoticonEyebrow: "sopracciglia", + emoticonFrown: "triste", + emoticonShy: "timido", + emoticonGoofy: "sciocco", + emoticonOops: "ops", + emoticonTongue: "linguaccia", + emoticonIdea: "idea", + emoticonYes: "yes", + emoticonNo: "no", + emoticonAngel: "angelo", + emoticonCrying: "in lacrime", + emoticonHappy: "felice" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/SpellCheck.js new file mode 100644 index 0000000..b37311d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Controllo ortografico batch", + unfound: "Non trovato", + skip: "Ignora", + skipAll: "Ignora tutto", + toDic: "Aggiungi al dizionario", + suggestions: "Suggerimenti", + replace: "Sostituisci", + replaceWith: "Sostituisci con", + replaceAll: "Sostituisci tutto", + cancel: "Annulla", + msg: "Nessun errore di ortografia trovato", + iSkip: "Ignora", + iSkipAll: "Ignora tutto", + iMsg: "Nessun suggerimento ortografico" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/TableDialog.js new file mode 100644 index 0000000..42859cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/TableDialog.js @@ -0,0 +1,36 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Inserisci tabella", + modifyTableTitle: "Modifica tabella", + rows: "Righe:", + columns: "Colonne:", + align: "Allinea:", + cellPadding: "Padding celle:", + cellSpacing: "Spaziatura celle:", + tableWidth: "Larghezza tabelle:", + backgroundColor: "Colore di sfondo:", + borderColor: "Colore bordi:", + borderThickness: "Spessore bordi", + percent: "percentuale", + pixels: "pixel", + "default": "predefinito", + left: "sinistra", + center: "centro", + right: "destra", + buttonSet: "Imposta", // translated elsewhere? + 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" +}) + + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/TextColor.js new file mode 100644 index 0000000..1b9c6d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Imposta", + "cancelButtonText": "Annulla" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/latinEntities.js new file mode 100644 index 0000000..1737571 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/it/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"punto esclamativo capovolto", + cent:"simbolo del centesimo", + pound:"simbolo della sterlina", + curren:"simbolo di valuta", + yen:"simbolo dello yen\nsimbolo dello yuan", + brvbar:"barra interrotta\nbarra verticale interrotta", + sect:"simbolo di sezione", + uml:"dieresi\ndieresi con spazio", + copy:"simbolo del copyright", + ordf:"indicatore ordinale femminile", + laquo:"virgolette doppie angolari indicanti a sinistra\nguillemet indicante a sinistra", + not:"simbolo di negazione", + shy:"trattino debole\ntrattino discrezionale", + reg:"simbolo di registrazione\nsimbolo di marchio registrato", + macr:"macron\nmacron con spaziatura\nlinea orizzontale superiore\nbarra sovrapposta APL", + deg:"simbolo dei gradi", + plusmn:"segno più-meno\nsegno più 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:"simbolo pilcrow\nsimbolo di paragrafo", + middot:"punto in mezzo\nvirgola georgiana\npunto centrale greco", + cedil:"cediglia\ncediglia con spazio", + sup1:"esponente uno\nnumero uno in esponente", + ordm:"indicatore ordinale maschile", + raquo:"virgolette doppie angolari indicanti a destra\n guillemet indicante a destra", + frac14:"frazione semplice un quarto\nfrazione un quarto", + frac12:"frazione semplice un mezzo\nfrazione un mezzo", + frac34:"frazione semplice tre quarti\nfrazione tre quarti", + iquest:"punto interrogativo invertito\npunto interrogativo rovesciato", + Agrave:"lettera latina A maiuscola con accento grave\nlettera latina A maiuscola grave", + Aacute:"lettera latina A maiuscola con accento acuto", + Acirc:"lettera latina A maiuscola con accento circonflesso", + Atilde:"lettera latina A maiuscola con tilde", + Auml:"lettera latina A maiuscola con dieresi", + Aring:"lettera latina A maiuscola con sormontata da anello\nlettera latina A maiuscola anellata", + AElig:"lettera latina AE maiuscola\nlegatura latina maiuscola AE", + Ccedil:"lettera latina C maiuscola con cediglia", + Egrave:"lettera latina E maiuscola con accento grave", + Eacute:"lettera latina E maiuscola con accento acuto", + Ecirc:"lettera latina E maiuscola con accento circonflesso", + Euml:"lettera latina E maiuscola con dieresi", + Igrave:"lettera latina I maiuscola con accento grave", + Iacute:"lettera latina I maiuscola con accento acuto", + Icirc:"lettera latina I maiuscola con accento circonflesso", + Iuml:"lettera latina I maiuscola con dieresi", + ETH:"lettera latina ETH maiuscola", + Ntilde:"lettera latina N maiuscola con tilde", + Ograve:"lettera latina O maiuscola con accento grave", + Oacute:"lettera latina O maiuscola con accento acuto", + Ocirc:"lettera latina O maiuscola con accento circonflesso", + Otilde:"lettera latina O maiuscola con tilde", + Ouml:"lettera latina O maiuscola con dieresi", + times:"segno di moltiplicazione", + Oslash:"lettera latina O maiuscola con barra obliqua\nlettera latina O maiuscola barrata", + Ugrave:"lettera latina U maiuscola con accento grave", + Uacute:"lettera latina U maiuscola con accento acuto", + Ucirc:"lettera latina U maiuscola con accento circonflesso", + Uuml:"lettera latina U maiuscola con dieresi", + Yacute:"lettera latina Y maiuscola con accento acuto", + THORN:"lettera latina THORN maiuscola", + szlig:"lettera latina s minuscola sonora\nesse-zeta", + agrave:"lettera latina a minuscola con accento grave\nlettera latina a minuscola grave", + aacute:"lettera latina a minuscola con accento acuto", + acirc:"lettera latina a minuscola con accento circonflesso", + atilde:"lettera latina a minuscola con tilde", + auml:"lettera latina a minuscola con dieresi", + aring:"lettera latina a minuscola sormontata da anello\nlettera latina a minuscola anellata", + aelig:"lettera latina ae minuscola\nlegatura latina minuscola ae", + ccedil:"lettera latina c minuscola con cediglia", + egrave:"lettera latina e minuscola con accento grave", + eacute:"lettera latina e minuscola con accento acuto", + ecirc:"lettera latina e minuscola con accento circonflesso", + euml:"lettera latina e minuscola con dieresi", + igrave:"lettera latina i minuscola con accento grave", + iacute:"lettera latina i minuscola con accento acuto", + icirc:"lettera latina i minuscola con accento circonflesso", + iuml:"lettera latina i minuscola con dieresi", + eth:"lettera latina eth minuscola", + ntilde:"lettera latina n minuscola con tilde", + ograve:"lettera latina o minuscola con accento grave", + oacute:"lettera latina o minuscola con accento acuto", + ocirc:"lettera latina o minuscola con accento circonflesso", + otilde:"lettera latina o minuscola con tilde", + ouml:"lettera latina o minuscola con dieresi", + divide:"segno di divisione", + oslash:"lettera latina o minuscola con barra obliqua\nlettera latina o minuscola barrata", + ugrave:"lettera latina u minuscola con accento grave", + uacute:"lettera latina u minuscola con accento acuto", + ucirc:"lettera latina u minuscola con accento circonflesso", + uuml:"lettera latina u minuscola con dieresi", + yacute:"lettera latina y minuscola con accento acuto", + thorn:"lettera latina thorn minuscola", + yuml:"lettera latina y minuscola con dieresi", + +// Greek Characters and Symbols + fnof:"f latina minuscola con uncino\nfunzione\nfiorino", + Alpha:"lettera greca maiuscola alpha", + Beta:"lettera greca maiuscola beta", + Gamma:"lettera greca maiuscola gamma", + Delta:"lettera greca maiuscola delta", + Epsilon:"lettera greca maiuscola epsilon", + Zeta:"lettera greca maiuscola zeta", + Eta:"lettera greca maiuscola eta", + Theta:"lettera greca maiuscola theta", + Iota:"lettera greca maiuscola iota", + Kappa:"lettera greca maiuscola kappa", + Lambda:"lettera greca maiuscola lambda", + Mu:"lettera greca maiuscola mu", + Nu:"lettera greca maiuscola nu", + Xi:"lettera greca maiuscola xi", + Omicron:"lettera greca maiuscola omicron", + Pi:"lettera greca maiuscola pi", + Rho:"lettera greca maiuscola rho", + Sigma:"lettera greca maiuscola sigma", + Tau:"lettera greca maiuscola tau", + Upsilon:"lettera greca maiuscola upsilon", + Phi:"lettera greca maiuscola phi", + Chi:"lettera greca maiuscola chi", + Psi:"lettera greca maiuscola psi", + Omega:"lettera greca maiuscola omega", + alpha:"lettera greca maiuscola alpha", + beta:"lettera greca minuscola beta", + gamma:"lettera greca minuscola gamma", + delta:"lettera greca minuscola delta", + epsilon:"lettera greca minuscola epsilon", + zeta:"lettera greca minuscola zeta", + eta:"lettera greca minuscola eta", + theta:"lettera greca minuscola theta", + iota:"lettera greca minuscola iota", + kappa:"lettera greca minuscola kappa", + lambda:"lettera greca minuscola lambda", + mu:"lettera greca minuscola mu", + nu:"lettera greca minuscola nu", + xi:"lettera greca minuscola xi", + omicron:"lettera greca minuscola omicron", + pi:"lettera greca minuscola pi", + rho:"lettera greca minuscola rho", + sigmaf:"lettera greca minuscola sigma finale", + sigma:"lettera greca minuscola sigma", + tau:"lettera greca minuscola tau", + upsilon:"lettera greca minuscola upsilon", + phi:"lettera greca minuscola phi", + chi:"lettera greca minuscola chi", + psi:"lettera greca minuscola psi", + omega:"lettera greca minuscola omega", + thetasym:"simbolo della lettera greca minuscola theta", + upsih:"simbolo della upsilon greca con uncino", + piv:"simbolo di pi greco", + bull:"pallino\npiccolo cerchio nero", + hellip:"puntini di sospensione\ntre puntini di guida", + prime:"apice\nminuti\npiedi", + Prime:"doppio apice\nsecondi\npollici", + oline:"linea sopra\noverscore con spazio", + frasl:"barra obliqua di frazione", + weierp:"P maiuscola scritta a mano\ninsieme potenza\np di Weierstrass", + 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 a sinistra\nritorno a capo", + lArr:"doppia freccia verso sinistra", + uArr:"doppia freccia verso l'alto", + rArr:"doppia freccia verso destra", + dArr:"doppia freccia verso il basso", + hArr:"doppia freccia sinistra destra", + forall:"per tutti", + part:"differenziale parziale", + exist:"esiste", + empty:"insieme vuoto\ninsieme nullo\ndiametro", + nabla:"nabla\ndifferenza retrograda", + isin:"elemento di", + notin:"non un elemento di", + ni:"contiene come membro", + prod:"prodotto n-ario\nsegno di prodotto", + sum:"sommatoria n-aria", + minus:"segno meno", + lowast:"operatore asterisco", + radic:"radice quadrata\nsegno di radice", + prop:"proporzionale a", + infin:"infinito", + ang:"angolo", + and:"and logico\ncuneo", + or:"o logico\nvi", + cap:"intersezione\nberretto", + cup:"unione\ncoppa","int":"integrale", + there4:"pertanto", + sim:"operatore tilde\nvaria con\nsimile a", + cong:"approssimativamente uguale a", + asymp:"quasi uguale a\nasintotico a", + ne:"non uguale a", + equiv:"identico a", + le:"minore di o uguale a", + ge:"maggiore di o uguale a", + sub:"sottoinsieme di", + sup:"sovrainsieme di", + nsub:"non un sottoinsieme di", + sube:"sottoinsieme di o uguale a", + supe:"sovrainsieme di o uguale a", + oplus:"più cerchiato\nsomma diretta", + otimes:"per cerchiato\nprodotto vettoriale", + perp:"puntina in su\nortogonale a\nperpendicolare", + sdot:"operatore punto", + lceil:"soffitto sinistro\ngradino in su APL", + rceil:"soffitto destro", + lfloor:"pavimento sinistro\ngradino in giù APL", + rfloor:"pavimento destro", + lang:"parentesi angolare sinistra", + rang:"parentesi angolare destra", + loz:"losanga", + spades:"seme di picche nero", + clubs:"seme di fiori nero\ntrifoglio", + hearts:"seme di cuori nero\ninnamorato", + diams:"seme di quadri nero", + OElig:"legatura latina OE maiuscola", + oelig:"legatura latina oe minuscola", + Scaron:"lettera latina S maiuscola con caron", + scaron:"lettera latina s minuscola con caron", + Yuml:"lettera latina Y maiuscola con dieresi", + circ:"lettera modificatrice accento circonflesso", + tilde:"tilde piccola", + ensp:"spazio en", + emsp:"spazio em", + thinsp:"spazio finissimo", + zwnj:"non-congiuntore di larghezza zero", + zwj:"congiuntore di larghezza zero", + lrm:"segno da-sinistra-a-destra", + rlm:"segno da-destra-a-sinistra", + ndash:"trattino en", + mdash:"trattino em", + lsquo:"virgoletta sinistra singola", + rsquo:"virgoletta destra singola", + sbquo:"virgoletta singola in basso a destra", + ldquo:"virgolette doppie sinistre", + rdquo:"virgolette doppie destre", + bdquo:"virgolette doppie in basso a destra", + dagger:"croce latina", + Dagger:"croce latina doppia", + permil:"segno di per mille", + lsaquo:"virgoletta angolare singola rivolta a sinistra", + rsaquo:"virgoletta angolare singola rivolta a destra", + euro:"simbolo dell'euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/AutoSave.js new file mode 100644 index 0000000..c259643 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/AutoSave.js @@ -0,0 +1,17 @@ +define( +//begin v1.x content +({ + "saveLabel": "保存", + "saveSettingLabelOn": "自動保存間隔の設定...", + "saveSettingLabelOff": "自動保存をオフにする", + "saveSettingdialogTitle": "自動保存", + "saveSettingdialogDescription": "自動保存間隔の指定", + "saveSettingdialogParamName": "自動保存間隔", + "saveSettingdialogParamLabel": "分", + "saveSettingdialogButtonOk": "間隔の設定", + "saveSettingdialogButtonCancel": "キャンセル", + "saveMessageSuccess": "${0} に保存されました", + "saveMessageFail": "${0} に保存に失敗しました" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Blockquote.js new file mode 100644 index 0000000..afe5edb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Blockquote.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "blockquote": "引用" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Breadcrumb.js new file mode 100644 index 0000000..f2a80ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} アクション", + "selectContents": "内容の選択", + "selectElement": "要素の選択", + "deleteElement": "要素の削除", + "deleteContents": "内容の削除", + "moveStart": "開始するためにカーソルを移動", + "moveEnd": "終了するためにカーソルを移動" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/CollapsibleToolbar.js new file mode 100644 index 0000000..59fc19a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/CollapsibleToolbar.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "collapse": "エディターのツールバーを省略", + "expand": "エディターのツールバーを展開" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/FindReplace.js new file mode 100644 index 0000000..ec7332c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "検索内容:", + "findTooltip": "検索するテキストを入力", + "replaceLabel": "次で置換:", + "replaceTooltip": "置換するテキストを入力", + "findReplace": "検索/置換の切り替え", + "matchCase": "大/小文字の区別", + "matchCaseTooltip": "大/小文字を区別", + "backwards": "後方", + "backwardsTooltip": "テキストを後方検索", + "replaceAllButton": "すべてを置換", + "replaceAllButtonTooltip": "テキストすべてを置換", + "findButton": "検索", + "findButtonTooltip": "テキストを検索", + "replaceButton": "置換", + "replaceButtonTooltip": "テキストを置換", + "replaceDialogText": "${0} 個のオカレンスを置換しました。", + "eofDialogText": "最後のオカレンス ${0}", + "eofDialogTextFind": "見つかりました", + "eofDialogTextReplace": "置換されました" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/InsertAnchor.js new file mode 100644 index 0000000..8ad3b62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/InsertAnchor.js @@ -0,0 +1,12 @@ +define( +//begin v1.x content +({ + insertAnchor: "アンカーの挿入", + title: "アンカー・プロパティー", + anchor: "名前:", + text: "説明:", + set: "設定", + cancel: "キャンセル" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/InsertEntity.js new file mode 100644 index 0000000..9907681 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "記号の挿入" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/LocalImage.js new file mode 100644 index 0000000..2f3cfb2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/LocalImage.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + insertImageTitle: "イメージの挿入", + url: "イメージ", + browse: "参照...", + text: "説明", + set: "挿入", + invalidMessage: "無効なイメージ・ファイル・タイプです", + prePopuTextUrl: "イメージ URL を入力するか、", + prePopuTextBrowse: "ローカル・ファイルを参照してください。" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/PageBreak.js new file mode 100644 index 0000000..44e5b61 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "改ページ" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/PasteFromWord.js new file mode 100644 index 0000000..ec21e28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/PasteFromWord.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Word からの貼り付け", + "paste": "貼り付け", + "cancel": "キャンセル", + "instructions": "Word のコンテンツを以下のテキスト・ボックスに貼り付けてください。挿入するコンテンツを確認したら、貼り付けボタンを押します。テキストの挿入を中止するには、キャンセル・ボタンを押します。" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Preview.js new file mode 100644 index 0000000..b1121a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "プレビュー" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/SafePaste.js new file mode 100644 index 0000000..19deedf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "直接貼り付けはできません。ブラウザーのキーボードまたはメニューによる標準制御を使用して、コンテンツをこのダイアログに貼り付けでください。コンテンツを確認して問題がなければ、貼り付けボタンを押してコンテンツを挿入してください。挿入しない場合は、キャンセル・ボタンを押してください。" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Save.js new file mode 100644 index 0000000..16e07aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "保存" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/ShowBlockNodes.js new file mode 100644 index 0000000..cdf1cfa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "HTML ブロック要素の表示" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Smiley.js new file mode 100644 index 0000000..ea92ec0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "顔文字の挿入", + emoticonSmile: "微笑", + emoticonLaughing: "笑い", + emoticonWink: "ウィンク", + emoticonGrin: "笑顔", + emoticonCool: "無愛想", + emoticonAngry: "怒り", + emoticonHalf: "半分", + emoticonEyebrow: "眉毛", + emoticonFrown: "眉をひそめる", + emoticonShy: "はにかんだ", + emoticonGoofy: "おろかな", + emoticonOops: "おっと", + emoticonTongue: "舌を出す", + emoticonIdea: "アイデア", + emoticonYes: "はい", + emoticonNo: "いいえ", + emoticonAngel: "エンジェル", + emoticonCrying: "泣く", + emoticonHappy: "幸せ" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/SpellCheck.js new file mode 100644 index 0000000..b87055a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/SpellCheck.js @@ -0,0 +1,20 @@ +define( +//begin v1.x content +({ + widgetLabel: "一括スペル・チェック", + unfound: "見つかりません", + skip: "スキップ", + skipAll: "すべてをスキップ", + toDic: "辞書に追加", + suggestions: "修正候補", + replace: "置換", + replaceWith: "置き換え", + replaceAll: "すべてを置換", + cancel: "キャンセル", + msg: "ミススペルはありません", + iSkip: "これをスキップ", + iSkipAll: "これと類似のものをスキップ", + iMsg: "スペルの修正候補はありません" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/TableDialog.js new file mode 100644 index 0000000..4be4c85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/TableDialog.js @@ -0,0 +1,35 @@ +define( +//begin v1.x content +({ + insertTableTitle: "テーブルの挿入", + modifyTableTitle: "テーブルの変更", + rows: "行:", + columns: "列:", + align: "位置合わせ:", + cellPadding: "セル余白:", + cellSpacing: "セル間隔:", + tableWidth: "テーブル幅:", + backgroundColor: "背景色:", + borderColor: "ボーダーの色:", + borderThickness: "ボーダーの太さ", + percent: "パーセント", + pixels: "ピクセル", + "default": "デフォルト", + left: "左", + center: "中央", + right: "右", + buttonSet: "設定", // translated elsewhere? + buttonInsert: "挿入", + buttonCancel: "キャンセル", + + selectTableLabel: "テーブルの選択", + insertTableRowBeforeLabel: "前に行を追加", + insertTableRowAfterLabel: "後ろに行を追加", + insertTableColumnBeforeLabel: "前に列を追加", + insertTableColumnAfterLabel: "後ろに列を追加", + deleteTableRowLabel: "行の削除", + deleteTableColumnLabel: "列の削除" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/TextColor.js new file mode 100644 index 0000000..df114fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/TextColor.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "setButtonText": "設定", + "cancelButtonText": "キャンセル" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/latinEntities.js new file mode 100644 index 0000000..579c710 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ja/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"逆感嘆符", + cent:"セント記号", + pound:"ポンド記号", + curren:"通貨記号", + yen:"円記号\n元記号", + brvbar:"破線バー\n破線垂直バー", + sect:"セクション記号", + uml:"分音符号\n間隔分音符号", + copy:"著作権記号", + ordf:"女性序数標識", + laquo:"左二重角引用符\n左ギュメ", + not:"否定記号", + shy:"ソフト・ハイフン\n任意ハイフン", + reg:"登録記号\n登録商標", + macr:"長音記号\n間隔長音記号\n上線\nAPL 上線", + deg:"角度記号", + plusmn:"正符号\n正または負符号", + sup2:"上付き文字 2\n上付き文字数字 2\n平方", + sup3:"上付き文字 3\n上付き文字数字 3\n立方", + acute:"揚音アクセント\n間隔揚音", + micro:"マイクロ記号", + para:"段落記号\n段落記号", + middot:"中間ドット\nグルジア語のコンマ\nギリシャ語の中間ドット", + cedil:"セディーユ\n間隔セディーユ", + sup1:"上付き文字 1\n上付き文字数字 1", + ordm:"男性序数標識", + raquo:"右二重角引用符\n右ギュメ", + frac14:"分数の 4 分の 1\n分数の 4 分の 1", + frac12:"分数の 2 分の 1\n分数の 2 分の 1", + frac34:"分数の 4 分の 3\n分数の 4 分の 3", + iquest:"逆疑問符\n反転疑問符", + Agrave:"ラテン語の抑音付き大文字 A\nラテン語の抑音付き大文字 A", + Aacute:"ラテン語の揚音付き大文字 A", + Acirc:"ラテン語の曲折アクセント記号付き大文字 A", + Atilde:"ラテン語の波形記号付き大文字 A", + Auml:"ラテン語の分音符号付き大文字 A", + Aring:"ラテン語の上リング付き大文字 A\nラテン語のリング付き大文字 A", + AElig:"ラテン語の大文字 AE\nラテン語の大文字の合字 AE", + Ccedil:"ラテン語のセディーユ付き大文字 C", + Egrave:"ラテン語の抑音付き大文字 E", + Eacute:"ラテン語の揚音付き大文字 E", + Ecirc:"ラテン語の曲折アクセント記号付き大文字 E", + Euml:"ラテン語の分音符号付き大文字 E", + Igrave:"ラテン語の抑音付き大文字 I", + Iacute:"ラテン語の揚音付き大文字 I", + Icirc:"ラテン語の曲折アクセント記号付き大文字 I", + Iuml:"ラテン語の分音符号付き大文字 I", + ETH:"ラテン語の大文字 ETH", + Ntilde:"ラテン語の波形記号付き大文字 N", + Ograve:"ラテン語の抑音付き大文字 O", + Oacute:"ラテン語の揚音付き大文字 O", + Ocirc:"ラテン語の曲折アクセント記号付き大文字 O", + Otilde:"ラテン語の波形記号付き大文字 O", + Ouml:"ラテン語の分音符号付き大文字 O", + times:"乗算記号", + Oslash:"ラテン語の斜線付き大文字 O\nラテン語のスラッシュ付き大文字 O", + Ugrave:"ラテン語の抑音付き大文字 U", + Uacute:"ラテン語の揚音付き大文字 U", + Ucirc:"ラテン語の曲折アクセント記号付き大文字 U", + Uuml:"ラテン語の分音符号付き大文字 U", + Yacute:"ラテン語の揚音付き大文字 Y", + THORN:"ラテン語の大文字 THORN", + szlig:"ラテン語の小文字のシャープ s\n s 字形", + agrave:"ラテン語の抑音付き小文字 a\nラテン語の抑音付き小文字 a", + aacute:"ラテン語の揚音付き小文字 a", + acirc:"ラテン語の曲折アクセント記号付き小文字 a", + atilde:"ラテン語の波形記号付き小文字 a", + auml:"ラテン語の分音符号付き小文字 a", + aring:"ラテン語の上リング付き小文字 a\nラテン語のリング付き小文字 a", + aelig:"ラテン語の小文字 ae\nラテン語の小文字の合字 ae", + ccedil:"ラテン語のセディーユ付き小文字 c", + egrave:"ラテン語の抑音付き小文字 e", + eacute:"ラテン語の揚音付き小文字 e", + ecirc:"ラテン語の曲折アクセント記号付き小文字 e", + euml:"ラテン語の分音符号付き小文字 e", + igrave:"ラテン語の抑音付き小文字 i", + iacute:"ラテン語の揚音付き小文字 i", + icirc:"ラテン語の曲折アクセント記号付き小文字 i", + iuml:"ラテン語の分音符号付き小文字 i", + eth:"ラテン語の小文字 eth", + ntilde:"ラテン語の波形記号付き小文字 n", + ograve:"ラテン語の抑音付き小文字 o", + oacute:"ラテン語の揚音付き小文字 o", + ocirc:"ラテン語の曲折アクセント記号付き小文字 o", + otilde:"ラテン語の波形記号付き小文字 o", + ouml:"ラテン語の分音符号付き小文字 o", + divide:"除算記号", + oslash:"ラテン語の斜線付き小文字 o\nラテン語のスラッシュ付き小文字 o", + ugrave:"ラテン語の抑音付き小文字 u", + uacute:"ラテン語の揚音付き小文字 u", + ucirc:"ラテン語の曲折アクセント記号付き小文字 u", + uuml:"ラテン語の分音符号付き小文字 u", + yacute:"ラテン語の揚音付き小文字 y", + thorn:"ラテン語の小文字 thorn", + yuml:"ラテン語の分音符号付き小文字 y", + +// Greek Characters and Symbols + fnof:"ラテン語のフック付き小文字 f\n関数\nフロリン", + Alpha:"ギリシャ語の大文字アルファ", + Beta:"ギリシャ語の大文字ベータ", + Gamma:"ギリシャ語の大文字ガンマ", + Delta:"ギリシャ語の大文字デルタ", + Epsilon:"ギリシャ語の大文字イプシロン", + Zeta:"ギリシャ語の大文字ゼータ", + Eta:"ギリシャ語の大文字イータ", + Theta:"ギリシャ語の大文字シータ", + Iota:"ギリシャ語の大文字イオタ", + Kappa:"ギリシャ語の大文字カッパ", + Lambda:"ギリシャ語の大文字ラムダ", + Mu:"ギリシャ語の大文字ミュー", + Nu:"ギリシャ語の大文字ニュー", + Xi:"ギリシャ語の大文字クシー", + Omicron:"ギリシャ語の大文字オミクロン", + Pi:"ギリシャ語の大文字パイ", + Rho:"ギリシャ語の大文字ロー", + Sigma:"ギリシャ語の大文字シグマ", + Tau:"ギリシャ語の大文字タウ", + Upsilon:"ギリシャ語の大文字ユプシロン", + Phi:"ギリシャ語の大文字ファイ", + Chi:"ギリシャ語の大文字カイ", + Psi:"ギリシャ語の大文字プシー", + Omega:"ギリシャ語の大文字オメガ", + alpha:"ギリシャ語の小文字アルファ", + beta:"ギリシャ語の小文字ベータ", + gamma:"ギリシャ語の小文字ガンマ", + delta:"ギリシャ語の小文字デルタ", + epsilon:"ギリシャ語の小文字イプシロン", + zeta:"ギリシャ語の小文字ゼータ", + eta:"ギリシャ語の小文字イータ", + theta:"ギリシャ語の小文字シータ", + iota:"ギリシャ語の小文字イオタ", + kappa:"ギリシャ語の小文字カッパ", + lambda:"ギリシャ語の小文字ラムダ", + mu:"ギリシャ語の小文字ミュー", + nu:"ギリシャ語の小文字ニュー", + xi:"ギリシャ語の小文字クシー", + omicron:"ギリシャ語の小文字オミクロン", + pi:"ギリシャ語の小文字パイ", + rho:"ギリシャ語の小文字ロー", + sigmaf:"ギリシャ語の小文字ファイナルシグマ", + sigma:"ギリシャ語の小文字シグマ", + tau:"ギリシャ語の小文字タウ", + upsilon:"ギリシャ語の小文字ユプシロン", + phi:"ギリシャ語の小文字ファイ", + chi:"ギリシャ語の小文字カイ", + psi:"ギリシャ語の小文字プシー", + omega:"ギリシャ語の小文字オメガ", + thetasym:"ギリシャ語の小文字シータ記号", + upsih:"ギリシャ語のフック記号付きユプシロン", + piv:"ギリシャ語のパイ記号", + bull:"黒丸\n黒い小さな円", + hellip:"水平省略符号\n3 つのドット・リーダー", + prime:"プライム記号\n分\nフィート", + Prime:"二重プライム記号\n秒\nインチ", + oline:"上線\n間隔上線", + frasl:"分数のスラッシュ", + weierp:"添え字の大文字 P\n累乗集合\nWeierstrass p", + image:"ドイツ字体の大文字 I\n虚数部", + real:"ドイツ字体の大文字 R\n実数部記号", + trade:"商標", + alefsym:"アレフ記号\n1 番目の超限基数", + larr:"左矢印", + uarr:"上矢印", + rarr:"右矢印", + darr:"下矢印", + harr:"左右矢印", + crarr:"角が左向きの下矢印\復帰", + lArr:"左二重矢印", + uArr:"上二重矢印", + rArr:"右二重矢印", + dArr:"下二重矢印", + hArr:"左右二重矢印", + forall:"すべてについて", + part:"偏微分", + exist:"存在", + empty:"空集合\nヌル集合\n直径", + nabla:"ナブラ\n後方の差分", + isin:"右辺の要素である", + notin:"右辺の要素でない", + ni:"メンバーとして含まれる", + prod:"n 乗\n積符号", + sum:"n 回加算", + minus:"減算記号", + lowast:"アスタリスク演算子", + radic:"平方根\nルート記号", + prop:"比例", + infin:"無限", + ang:"角度", + and:"論理積\nくさび形", + or:"論理和\nV 字形", + cap:"集合の積\nキャップ形", + cup:"和集合\カップ形","int":"積分", + there4:"したがって", + sim:"チルド演算子\n多様性\n類似性", + cong:"おおよそ等しい", + asymp:"ほぼ等しい\n漸近", + ne:"等しくない", + equiv:"同一", + le:"小さいか等しい", + ge:"大きいか等しい", + sub:"左辺は右辺の部分集合", + sup:"左辺は右辺を包含する", + nsub:"部分集合でない", + sube:"部分集合または等しい", + supe:"包含集合または等しい", + oplus:"ベクトル和\n直和", + otimes:"ベクトル積\nベクトル積", + perp:"直角\n直交\n垂直", + sdot:"ドット演算子", + lceil:"左上限\nAPL 上限", + rceil:"右上限", + lfloor:"左下限\nAPL 下限", + rfloor:"右下限", + lang:"左角括弧", + rang:"右角括弧", + loz:"ひし形", + spades:"トランプの黒のスペードの組", + clubs:"トランプの黒のクラブの組\nシャムロック", + hearts:"トランプの黒のハートの組\nバレンタイン", + diams:"トランプの黒のダイヤモンドの組", + OElig:"ラテン語の大文字の合字 OE", + oelig:"ラテン語の小文字の合字 oe", + Scaron:"ラテン語のキャロン付き大文字 S", + scaron:"ラテン語のキャロン付き小文字 s", + Yuml:"ラテン語の分音符号付き大文字 Y", + circ:"修飾文字の曲折アクセント記号アクセント", + tilde:"小文字の波形記号", + ensp:"en スペース", + emsp:"em スペース", + thinsp:"薄いスペース", + zwnj:"結合なしで幅ゼロ", + zwj:"結合ありで幅ゼロ", + lrm:"左から右へのマーク", + rlm:"右から左へのマーク", + ndash:"en ダッシュ", + mdash:"em ダッシュ", + lsquo:"左単一引用符", + rsquo:"右単一引用符", + sbquo:"単一下付き右引用符", + ldquo:"左二重引用符", + rdquo:"右二重引用符", + bdquo:"二重下付き右引用符", + dagger:"剣標", + Dagger:"二重剣標", + permil:"パーミル記号", + lsaquo:"単一左角引用符", + rsaquo:"単一右角引用符", + euro:"ユーロ記号" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/AutoSave.js new file mode 100644 index 0000000..15c8ff3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Сақтау", + "saveSettingLabelOn": "Автосақтау аралығын орнату...", + "saveSettingLabelOff": "Автосақтауды өшіру", + "saveSettingdialogTitle": "Автосақтау", + "saveSettingdialogDescription": "Автосақтау аралығын көрсету", + "saveSettingdialogParamName": "Автосақтау аралығы", + "saveSettingdialogParamLabel": "мин", + "saveSettingdialogButtonOk": "Аралықты орнату", + "saveSettingdialogButtonCancel": "Болдырмау", + "saveMessageSuccess": "${0} сақталды", + "saveMessageFail": "${0} сақталмады" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Breadcrumb.js new file mode 100644 index 0000000..2f05e88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} Әрекеттер", + "selectContents": "Мазмұнын таңдау", + "selectElement": "Элементті таңдау", + "deleteElement": "Элементті жою", + "deleteContents": "Мазмұнын жою", + "moveStart": "Жүгіргіні басына жылжыту", + "moveEnd": "Жүгіргіні аяғына жылжыту" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/CollapsibleToolbar.js new file mode 100644 index 0000000..a17abb2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Өңдегіш құралдар тақтасын тасалау", + "expand": "Өңдегіш құралдар тақтасын шығарып алу" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/FindReplace.js new file mode 100644 index 0000000..6392848 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Табу:", + "findTooltip": "Табылатын мәтінді енгізу", + "replaceLabel": "Келесімен ауыстыру:", + "replaceTooltip": "Ауыстырылатын мәтінді енгізу", + "findReplace": "Табу және ауыстыру", + "matchCase": "Үлкен-кішілігін ескеріп", + "matchCaseTooltip": "Үлкен-кішілігін ескеріп", + "backwards": "Артқа қарай", + "backwardsTooltip": "Мәтінді табу үшін артқа қарай іздеу", + "replaceAllButton": "Барлығын ауыстыру", + "replaceAllButtonTooltip": "Барлық мәтінді ауыстыру", + "findButton": "Табу", + "findButtonTooltip": "Мәтінді табу", + "replaceButton": "Ауыстыру", + "replaceButtonTooltip": "Мәтінді ауыстыру", + "replaceDialogText": "${0} дана ауыстырылды.", + "eofDialogText": "Соңғы дана: ${0}", + "eofDialogTextFind": "табылды", + "eofDialogTextReplace": "ауыстырылды" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/InsertAnchor.js new file mode 100644 index 0000000..f6d2654 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Бетбелгі кірістіру", + title: "Бетбелгі сипаттары", + anchor: "Аты:", + text: "Сипаттама:", + set: "Орнату", + cancel: "Болдырмау" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/InsertEntity.js new file mode 100644 index 0000000..5b424c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Нышанды кірістіру" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/LocalImage.js new file mode 100644 index 0000000..d4ac2ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Сурет кірістіру", + url: "Кескін", + browse: "Шолу...", + text: "Сипаттама", + set: "Кірістіру", + invalidMessage: "Кескін файлының түрі дұрыс емес", + prePopuTextUrl: "Кескіннің URL мекен-жайын енгізіңіз", + prePopuTextBrowse: " немесе жергілікті файлға өтіңіз." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/PageBreak.js new file mode 100644 index 0000000..ecbcd75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Бет үзілімі" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/PasteFromWord.js new file mode 100644 index 0000000..745ce31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Word бағдарламасынан қою", + "paste": "Қою", + "cancel": "Болдырмау", + "instructions": "Мазмұнды Word бағдарламасынан төмендегі мәтін ұясына қойыңыз. Кірістірілетін мазмұн дұрыс болса, қою түймешігін басыңыз. Мәтінді кірістіруді доғару үшін болдырмау түймешігін басыңыз." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Preview.js new file mode 100644 index 0000000..35b9025 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Алдын ала қарау" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/SafePaste.js new file mode 100644 index 0000000..3531325 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Тікелей қою ажыратылды. Стандартты шолғыш пернетақтасын немесе мәзір қоюдың басқару элементтерін пайдаланып, мазмұнды осы тілқатысу терезесіне қойыңыз. Кірістірілетіен мазмұнмен қанағаттансаңыз, қою түймешігін басыңыз. Мазмұн қоюды тоқтатқыңыз келсе, болдырмау түймешігін басыңыз." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Save.js new file mode 100644 index 0000000..347c126 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Сақтау" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/ShowBlockNodes.js new file mode 100644 index 0000000..958a69d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "HTML блогы элементтерін көрсету" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Smiley.js new file mode 100644 index 0000000..c84a840 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Эмограмма енгізу", + emoticonSmile: "күлімсіреу", + emoticonLaughing: "күлу", + emoticonWink: "көз қысу", + emoticonGrin: "ақситу", + emoticonCool: "салқын", + emoticonAngry: "ашулы", + emoticonHalf: "жарты", + emoticonEyebrow: "қас", + emoticonFrown: "қабағы түйілу", + emoticonShy: "ұялшақ", + emoticonGoofy: "ақымақ", + emoticonOops: "ой", + emoticonTongue: "тіл", + emoticonIdea: "ой", + emoticonYes: "иә", + emoticonNo: "ешбір", + emoticonAngel: "періште", + emoticonCrying: "жылау", + emoticonHappy: "бақыт" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/SpellCheck.js new file mode 100644 index 0000000..b063e6f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Бума емлесін тексеру", + unfound: "Табылмады", + skip: "Өткізіп жіберу", + skipAll: "Барлығын өткізіп жіберу", + toDic: "Сөздікке қосу", + suggestions: "Ұсыныстар", + replace: "Ауыстыру", + replaceWith: "Келесімен ауыстыру", + replaceAll: "Барлығын ауыстыру", + cancel: "Болдырмау", + msg: "Қате жазылған сөздер табылмады", + iSkip: "Бұны өткізіп жіберу", + iSkipAll: "Осы сияқты барлығын өткізіп жіберу", + iMsg: "Емле ұсыныстары жоқ" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/TableDialog.js new file mode 100644 index 0000000..5ee0d74 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/TableDialog.js @@ -0,0 +1,36 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Кесте кірістіру", + modifyTableTitle: "Кестені өзгерту", + rows: "Жолдар:", + columns: "Бағандар:", + align: "Туралау:", + cellPadding: "Ұяшық өрісі:", + cellSpacing: "Ұяшық аралығы:", + tableWidth: "Кесте ені:", + backgroundColor: "Өң түсі:", + borderColor: "Жиек түсі:", + borderThickness: "Жиек қалыңдығы", + percent: "пайыз", + pixels: "нүктелер", + "default": "әдепкі", + left: "сол жақ", + center: "ортасы", + right: "оң жақ", + buttonSet: "Орнату", // translated elsewhere? + buttonInsert: "Кірістіру", + buttonCancel: "Болдырмау", + + selectTableLabel: "Кестені таңдау", + insertTableRowBeforeLabel: "Жолды алдына қосу", + insertTableRowAfterLabel: "Жолды артына қосу", + insertTableColumnBeforeLabel: "Бағанды алдына қосу", + insertTableColumnAfterLabel: "Бағанды артына қосу", + deleteTableRowLabel: "Жолды жою", + deleteTableColumnLabel: "Бағанды жою" +}) + + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/TextColor.js new file mode 100644 index 0000000..1328e29 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Орнату", + "cancelButtonText": "Болдырмау" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/latinEntities.js new file mode 100644 index 0000000..600f9b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/kk/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"аударылған леп белгісі", + cent:"цент белгісі", + pound:"фунт белгісі", + curren:"ақша белгісі", + yen:"йен белгісі\nюань белгісі", + brvbar:"үзілген сызық\nүзілген тік сызық", + sect:"бөлім белгісі", + uml:"диэреза\nаралық диэрезасы", + copy:"авторлық құқық белгісі", + ordf:"реттік көрсеткіш", + laquo:"сол жақты көрсететін қос бұрышты тырнақша\nсол жақты көрсететін кайра", + not:"not белгісі", + shy:"тасымалдау белгісі\nеркін тасымалдау", + reg:"тіркелген белгісі\nтіркелген сауда белгісінің белгісі", + macr:"созылыңқы белгісі\nаралық созылыңқы белгісі\noсызылған\nүстін сызу", + deg:"градус белгісі", + plusmn:"қосу-алу белгісі\nқосу-немесе-алу белгісі", + sup2:"жол үсті екі\nжол үсті сан екі\nшаршы", + sup3:"жол үсті үш\nжол үсті сан үш\nтекше", + acute:"диакритика белгісі\nаралық диакритика белгісі", + micro:"шағын белгісі", + para:"pilcrow белгісі\nеже белгісі", + middot:"ортаңғы нүкте\nГрузиялық нүктесі\nГрек ортаңғы нүктесі", + cedil:"седиль\nаралық седиль", + sup1:"жол үсті бір\nжол үсті сан бір", + ordm:"реттік көрсеткіш", + raquo:"оң жақты көрсететін қос бұрышты тырнақша\nоң жақты көрсететін кайра", + frac14:"жай бөлшек бір ширек\nбөлшек бір ширек", + frac12:"жай бөлшек бір жарым\nбөлшек бір жарым", + frac34:"жай бөлшек үш ширек\nбөлшек үш ширек", + iquest:"аударылған сұрақ белгісі\nбұрылған сұрақ белгісі", + Agrave:"Екпін түсетін латын A бас әрпі\nЕкпін түсетін латын A бас әрпі", + Aacute:"Диакритика белгісі бар латын A бас әрпі", + Acirc:"Циркумфлекс белгісі бар латын A бас әрпі", + Atilde:"Тильда белгісі бар латын A бас әрпі", + Auml:"Диэреза белгісі бар латын A бас әрпі", + Aring:"Үстінде сақина бар латын A бас әрпі\nСақина бар латын A бас әрпі", + AElig:"Латын AE бас әрпі\nЛатын AE бас әріп лигатурасы", + Ccedil:"Седиль белгісі бар латын С бас әрпі", + Egrave:"Екпін түсетін латын E бас әрпі", + Eacute:"Диакритика белгісі бар латын E бас әрпі", + Ecirc:"Циркумфлекс белгісі бар латын E бас әрпі", + Euml:"Диэреза белгісі бар латын E бас әрпі", + Igrave:"Екпін түсетін латын I бас әрпі", + Iacute:"Диакритика белгісі бар латын I бас әрпі", + Icirc:"Циркумфлекс белгісі бар латын I бас әрпі", + Iuml:"Диэреза белгісі бар латын I бас әрпі", + ETH:"Латын ETH бас әрпі", + Ntilde:"Тильда белгісі бар латын N бас әрпі", + Ograve:"Екпін түсетін латын O бас әрпі", + Oacute:"Диакритика белгісі бар латын O бас әрпі", + Ocirc:"Циркумфлекс белгісі бар латын O бас әрпі", + Otilde:"Тильда белгісі бар латын O бас әрпі", + Ouml:"Диэреза белгісі бар латын O бас әрпі", + times:"көбейту белгісі", + Oslash:"Қиғаш сызықпен латын O бас әрпі\nҚиғаш сызықпен латын O бас әрпі", + Ugrave:"Екпін түсетін латын U бас әрпі", + Uacute:"Диакритика белгісі бар латын U бас әрпі", + Ucirc:"Циркумфлекс белгісі бар латын U бас әрпі", + Uuml:"Диэреза белгісі бар латын U бас әрпі", + Yacute:"Диакритика белгісі бар латын Y бас әрпі", + THORN:"Латын THORN бас әрпі", + szlig:"Латын sharp s\ness-zed кіші әрпі", + agrave:"Екпін түсетін латын кіші әрпі\nЕкпін түсетін латын кіші әрпі", + aacute:"Диакритика белгісі бар латын кіші әрпі", + acirc:"Циркумфлекс белгісі бар латын кіші әрпі", + atilde:"Тильда белгісі бар латын кіші әрпі", + auml:"Диэреза белгісі бар латын кіші әрпі", + aring:"Үстінде сақина бар латын кіші әрпі\nСақина бар латын кіші әрпі", + aelig:"Латын ae кіші әрпі\nЛатын ae кіші лигатурасы", + ccedil:"Седиль белгісі бар латын c кіші әрпі", + egrave:"Екпін түсетін латын e кіші әрпі", + eacute:"Диакритика белгісі бар латын e кіші әрпі", + ecirc:"Циркумфлекс белгісі бар латын e кіші әрпі", + euml:"Диэреза белгісі бар латын e кіші әрпі", + igrave:"Екпін түсетін латын i кіші әрпі", + iacute:"Диакритика белгісі бар латын i кіші әрпі", + icirc:"Циркумфлекс белгісі бар латын i кіші әрпі", + iuml:"Диэреза белгісі бар латын i кіші әрпі", + eth:"Латын eth кіші әрпі", + ntilde:"Тильда белгісі бар латын n кіші әрпі", + ograve:"Екпін түсетін латын o кіші әрпі", + oacute:"Диакритика белгісі бар латын o кіші әрпі", + ocirc:"Циркумфлекс белгісі бар латын o кіші әрпі", + otilde:"Тильда белгісі бар латын o кіші әрпі", + ouml:"Диэреза белгісі бар латын o кіші әрпі", + divide:"бөлу белгісі", + oslash:"Қиғаш сызықпен латын o кіші әрпі\nҚиғаш сызықпен латын o кіші әрпі", + ugrave:"Екпін түсетін латын u кіші әрпі", + uacute:"Диакритика белгісі бар латын u кіші әрпі", + ucirc:"Циркумфлекс белгісі бар латын u кіші әрпі", + uuml:"Диэреза белгісі бар латын u кіші әрпі", + yacute:"Диакритика белгісі бар латын y кіші әрпі", + thorn:"Латын thorn кіші әрпі", + yuml:"Диэреза белгісі бар латын y кіші әрпі", + +// Greek Characters and Symbols + fnof:"Тырнақшаға алынған латын f кіші әрпі\nфункция\nфлорин", + Alpha:"Грек альфа бас әрпі", + Beta:"Грек бета бас әрпі", + Gamma:"Грек гамма бас әрпі", + Delta:"Грек дельта бас әрпі", + Epsilon:"Грек эпсилон бас әрпі", + Zeta:"Грек зета бас әрпі", + Eta:"Грек эта бас әрпі", + Theta:"Грек тэта бас әрпі", + Iota:"Грек йота бас әрпі", + Kappa:"Грек каппа бас әрпі", + Lambda:"Грек ламбда бас әрпі", + Mu:"Грек му бас әрпі", + Nu:"Грек ну бас әрпі", + Xi:"Грек кси бас әрпі", + Omicron:"Грек омикрон бас әрпі", + Pi:"Грек пи бас әрпі", + Rho:"Грек ро бас әрпі", + Sigma:"Грек сигма бас әрпі", + Tau:"Грек тау бас әрпі", + Upsilon:"Грек ипсилон бас әрпі", + Phi:"Грек фи бас әрпі", + Chi:"Грек хи бас әрпі", + Psi:"Грек пси бас әрпі", + Omega:"Грек омега бас әрпі", + alpha:"Грек альфа кіші әрпі", + beta:"Грек бета кіші әрпі", + gamma:"Грек гамма кіші әрпі", + delta:"Грек дельта кіші әрпі", + epsilon:"Грек эпсилон кіші әрпі", + zeta:"Грек зета кіші әрпі", + eta:"Грек эта кіші әрпі", + theta:"Грек тэта кіші әрпі", + iota:"Грек йота кіші әрпі", + kappa:"Грек каппа кіші әрпі", + lambda:"Грек ламбда кіші әрпі", + mu:"Грек му кіші әрпі", + nu:"Грек ну кіші әрпі", + xi:"Грек кси кіші әрпі", + omicron:"Грек омикрон кіші әрпі", + pi:"Грек пи кіші әрпі", + rho:"Грек ро кіші әрпі", + sigmaf:"Грек соңғы сигма кіші әрпі", + sigma:"Грек сигма кіші әрпі", + tau:"Грек тау кіші әрпі", + upsilon:"Грек упсилон кіші әрпі", + phi:"Грек фи кіші әрпі", + chi:"Грек хи кіші әрпі", + psi:"Грек пси кіші әрпі", + omega:"Грек омега кіші әрпі", + thetasym:"Грек кіші әрпі тэта нышаны", + upsih:"Ілмек нышанымен грек упсилоны", + piv:"Грек пи нышаны", + bull:"байрақша\nқара кіші дөңгелек", + hellip:"көлденең эллипсис\nүш нүкте толтырғышы", + prime:"прим\nминут\nфут", + Prime:"қос прим\nсекунд\nдюйм", + oline:"үстінен сызу\nаралық сызу", + frasl:"бөлшек қиғаш сызығы", + weierp:"сценарийдің P бас әрпі\nдәреже көптігі\nВейерштрасс p", + image:"ескі I бас әрпі\nжорымал бөлік", + real:"ескі R бас әрпі\nнақты бөлік нышаны", + trade:"сауда белгісінің белгісі", + alefsym:"alef нышаны\nбірінші шексіз кардинал саны", + larr:"солға қарай көрсеткі", + uarr:"жоғары қарай көрсеткі", + rarr:"оңға қарай көрсеткі", + darr:"төменге қарай көрсеткі", + harr:"солдан оңға қарай көрсеткі", + crarr:"бұрышы солға қарайтын төменге қарай көрсеткі\nкаретканы қайтару", + lArr:"солға қарай қос көрсеткі", + uArr:"жоғары қарай қос көрсеткі", + rArr:"оңға қарай қос көрсеткі", + dArr:"төменге қарай қос көрсеткі", + hArr:"солдан оңға қарай қос көрсеткі", + forall:"барлығына", + part:"жартылай дифференциал", + exist:"бар", + empty:"бос жиын\nбос жиын\nдиаметр", + nabla:"набла\nсолға қарай айырмашылық", + isin:"элементі", + notin:"элементі емес", + ni:"құрамында мүше ретінде", + prod:"n-ary өнімі\nөнім белгісі", + sum:"n-ary қосу", + minus:"алу белгісі", + lowast:"жұлдызша амалдағышы", + radic:"квадрат түбір\nтүбір белгісі", + prop:"пропорционалды", + infin:"шексіздік", + ang:"бұрыш", + and:"логикалық және\nүшбұрыш призма", + or:"логикалық немесе\nүшбұрыш", + cap:"қиылысу\nконус", + cup:"байланыс\nбіріктіру белгісі","int":"интеграл", + there4:"сондықтан", + sim:"тильда амалдағышы\nөзгеріп отырады\nұқсас", + cong:"шамамен тең", + asymp:"тең дерлік\nасимптотикалық", + ne:"тең емес", + equiv:"бірдей", + le:"аздау немесе тең", + ge:"үлкендеу немесе тең", + sub:"ішкі жиыны", + sup:"көптігі", + nsub:"ішкі жиыны емес", + sube:"ішкі жиыны немесе тең", + supe:"көптігі немесе тең", + oplus:"дөңгелектелген плюс\nтікелей сома", + otimes:"дөңгелектелген уақыттар\nвектор көбейтіндісі", + perp:"жоғары түймесі\nтік бұрышты\nперпендикулярлық", + sdot:"нүкте амалдағышы", + lceil:"сол жақ шегі\nAPL жоғарғы деңгейі", + rceil:"оң жақ шегі", + lfloor:"сол жақ төменгі деңгейі\nAPL төменгі деңгейі", + rfloor:"оң жақ төменгі деңгейі", + lang:"сол жақты көрсететін бұрыштық жақша", + rang:"оң жақты көрсететін бұрыштық жақша", + loz:"ромб", + spades:"қара қалақ дестесі", + clubs:"қара клуб дестесі\nүшқұлақ", + hearts:"қара жүрек дестесі\nвалентин", + diams:"қара алмас дестесі", + OElig:"Латын OE бас әріп лигатурасы", + oelig:"Латын oe кіші әріп лигатурасы", + Scaron:"Кароны бар латын S бас әрпі", + scaron:"Кароны бар латын s кіші әрпі", + Yuml:"Диэреза белгісі бар латын Y бас әрпі", + circ:"түрлендіргіш әрпі циркумфлекс екпіні", + tilde:"кіші тильда", + ensp:"эн аралығы", + emsp:"ең үлкен аралық", + thinsp:"тар аралық", + zwnj:"ені нөл біріктіргіш емес", + zwj:"ені нөл біріктіргіш", + lrm:"солдан оңға қарай белгісі", + rlm:"оңнан солға қарай белгісі", + ndash:"қысқа тире", + mdash:"ұзын тире", + lsquo:"сол жақ бір тырнақша", + rsquo:"оң жақ бір тырнақша", + sbquo:"бір төмен-9 тырнақша", + ldquo:"сол жақ қос тырнақша", + rdquo:"оң жақ қос тырнақша", + bdquo:"қос төмен-9 тырнақша", + dagger:"сілтеме белгісі", + Dagger:"қос сілтеме белгісі", + permil:"промилле белгісі", + lsaquo:"бір сол жақты көрсететін бұрыштық тырнақша", + rsaquo:"бір оң жақты көрсететін бұрыштық тырнақша", + euro:"еуро белгісі" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/AutoSave.js new file mode 100644 index 0000000..5b4e120 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "저장", + "saveSettingLabelOn": "자동 저장 간격 설정...", + "saveSettingLabelOff": "자동 저장 끄기", + "saveSettingdialogTitle": "자동 저장", + "saveSettingdialogDescription": "자동 저장 간격 지정", + "saveSettingdialogParamName": "자동 저장 간격", + "saveSettingdialogParamLabel": "최소", + "saveSettingdialogButtonOk": "간격 설정", + "saveSettingdialogButtonCancel": "취소", + "saveMessageSuccess": "${0}에 저장됨", + "saveMessageFail": "${0}에 저장 실패" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Breadcrumb.js new file mode 100755 index 0000000..51badb5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} 조치", + "selectContents": "컨텐츠 선택", + "selectElement": "요소 선택", + "deleteElement": "요소 삭제", + "deleteContents": "컨텐츠 삭제", + "moveStart": "커서를 이동하여 시작", + "moveEnd": "커서를 이동하여 종료" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/CollapsibleToolbar.js new file mode 100644 index 0000000..93b51c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "편집기 도구 모음 접기", + "expand": "편집기 도구 모음 펼치기" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/FindReplace.js new file mode 100755 index 0000000..1d59185 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "찾기:", + "findTooltip": "찾을 텍스트 입력", + "replaceLabel": "바꿀 대상:", + "replaceTooltip": "대체할 텍스트 입력", + "findReplace": "찾기 및 바꾸기", + "matchCase": "대소문자 구분", + "matchCaseTooltip": "대소문자 구분", + "backwards": "뒤로", + "backwardsTooltip": "텍스트 역방향 검색", + "replaceAllButton": "모두 바꾸기", + "replaceAllButtonTooltip": "텍스트 모두 바꾸기", + "findButton": "찾기", + "findButtonTooltip": "텍스트 찾기", + "replaceButton": "바꾸기", + "replaceButtonTooltip": "텍스트 바꾸기", + "replaceDialogText": "${0}개를 대체했습니다.", + "eofDialogText": "마지막 발생 ${0}", + "eofDialogTextFind": "찾음", + "eofDialogTextReplace": "대체됨" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/InsertAnchor.js new file mode 100644 index 0000000..6c5a5b1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "기준 위치 삽입", + title: "기준 위치 특성", + anchor: "이름:", + text: "설명:", + set: "설정", + cancel: "취소" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/InsertEntity.js new file mode 100755 index 0000000..4e59b4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "기호 삽입" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/LocalImage.js new file mode 100644 index 0000000..6711b28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "이미지 삽입", + url: "이미지", + browse: "찾아보기...", + text: "설명", + set: "삽입", + invalidMessage: "올바르지 않은 이미지 파일 유형", + prePopuTextUrl: "이미지 URL 입력", + prePopuTextBrowse: "또는 로컬 파일 찾아보기" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/PageBreak.js new file mode 100755 index 0000000..c79a3a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "페이지 나누기" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/PasteFromWord.js new file mode 100644 index 0000000..8ee9e7e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "단어에서 붙여넣기", + "paste": "붙여넣기", + "cancel": "취소", + "instructions": "단어에서 아래 텍스트 상자로 컨텐츠를 붙여 넣으십시오. 삽입할 컨텐츠가 준비되면 붙여넣기 단추를 누르십시오. 텍스트 삽입을 중단하려면 취소 단추를 누르십시오. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Preview.js new file mode 100755 index 0000000..6ceb255 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "미리보기" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/SafePaste.js new file mode 100644 index 0000000..8b82a42 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "직접 붙여넣기는 사용할 수 없습니다. 표준 브라우저 키보드 또는 메뉴 붙여넣기 컨트롤을 사용하여 이 대화 상자의 컨텐츠를 붙여 넣으십시오. 삽입할 컨텐츠가 준비되면 붙여넣기 단추를 누르십시오. 컨텐츠 삽입을 중단하려면 취소 단추를 누르십시오." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Save.js new file mode 100755 index 0000000..ba3095b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "저장" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/ShowBlockNodes.js new file mode 100755 index 0000000..7f4f76f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "HTML 블록 요소 표시" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Smiley.js new file mode 100644 index 0000000..c72b291 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/Smiley.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + smiley: "이모티콘 삽입", + emoticonSmile: "미소", + emoticonLaughing: "하하", + emoticonWink: "윙크", + emoticonGrin: "씨익", + emoticonCool: "멋진", + emoticonAngry: "화남", + emoticonHalf: "고민 중", + emoticonEyebrow: "글쎄", + emoticonFrown: "불만", + emoticonShy: "부끄러움", + emoticonGoofy: "바보", + emoticonOops: "어머나", + emoticonTongue: "메롱", + emoticonIdea: "아이디어", + emoticonYes: "예", + emoticonNo: "아니오", + emoticonAngel: "천사", + emoticonCrying: "울음", + emoticonHappy: "기쁜" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/SpellCheck.js new file mode 100644 index 0000000..3ef51df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "맞춤법 검사 일괄처리", + unfound: "찾을 수 없음", + skip: "건너뛰기", + skipAll: "모두 건너뛰기", + toDic: "사전에 추가", + suggestions: "제안", + replace: "바꾸기", + replaceWith: "다음으로 바꾸기", + replaceAll: "모두 바꾸기", + cancel: "취소", + msg: "맞춤법 오류 없음", + iSkip: "이 항목 건너뛰기", + iSkipAll: "다음과 같이 모두 건너뛰기", + iMsg: "맞춤법 제안 없음" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/TableDialog.js new file mode 100644 index 0000000..37f53f0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "테이블 삽입", + modifyTableTitle: "테이블 수정", + rows: "행:", + columns: "열:", + align: "맞추기:", + cellPadding: "셀 채우기:", + cellSpacing: "셀 간격:", + tableWidth: "테이블 너비:", + backgroundColor: "배경색:", + borderColor: "테두리 색:", + borderThickness: "테두리 굵기", + percent: "백분율", + pixels: "픽셀", + "default": "기본값", + left: "왼쪽", + center: "가운데", + right: "오른쪽", + buttonSet: "설정", // translated elsewhere? + buttonInsert: "삽입", + buttonCancel: "취소", + + selectTableLabel: "테이블 선택", + insertTableRowBeforeLabel: "사전 행 추가", + insertTableRowAfterLabel: "사후 행 추가", + insertTableColumnBeforeLabel: "사전 열 추가", + insertTableColumnAfterLabel: "사후 열 추가", + deleteTableRowLabel: "행 삭제", + deleteTableColumnLabel: "열 삭제" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/TextColor.js new file mode 100644 index 0000000..f4113e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "설정", + "cancelButtonText": "취소" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/latinEntities.js new file mode 100644 index 0000000..7f81478 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ko/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"거꾸로 느낌표", + cent:"센트 기호", + pound:"파운드 기호", + curren:"통화 기호", + yen:"엔화 기호\n엔화 기호", + brvbar:"수직 바\n수직 바", + sect:"섹션 기호", + uml:"두점 표시\n두점 표시", + copy:"저작권", + ordf:"줄 위의 소문자 a", + laquo:"이중 꺾어 열음\n이중 꺾어 열음", + not:"not 기호", + shy:"부드러운 하이픈\n부드러운 하이픈", + reg:"등록 상표 기호\n등록 상표 기호", + macr:"장음 기호\n장음 기호\n장음 기호\n장음 기호", + deg:"도 기호", + plusmn:"플러스 마이너스\n플러스 마이너스", + sup2:"위첨자 2\n위첨자 2\n위첨자 2", + sup3:"위첨자 3\n위첨자 3\n위첨자 3", + acute:"양음 액센트\n양음 액센트", + micro:"마이크로 기호", + para:"문단 기호\n문단 기호", + middot:"중앙 점\n중앙 점\n중앙 점", + cedil:"갈고리형 부호\n갈고리형 부호", + sup1:"위첨자 1\n위첨자 1", + ordm:"줄 위의 작은 원", + raquo:"이중 꺾어 닫음\n이중 꺾어 닫음", + frac14:"사분의 일\n사분의 일", + frac12:"이분의 일\n이분의 일", + frac34:"사분의 삼\n사분의 삼", + iquest:"거꾸로 물음표\n거꾸로 물음표", + Agrave:"라틴대문자 A 위 역액센트\n라틴대문자 A 위 역액센트", + Aacute:"라틴대문자 A 위 액센트", + Acirc:"라틴대문자 A 위 꺾음 표시", + Atilde:"라틴대문자 A 위 물결 표시", + Auml:"라틴대문자 A 위 두점 표시", + Aring:"라틴대문자 A 위 원 표시\n라틴대문자 A 위 원 표시", + AElig:"라틴대문자 AE\n라틴대문자 AE", + Ccedil:"라틴대문자 C 갈고리형 부호", + Egrave:"라틴대문자 E 위 역액센트", + Eacute:"라틴대문자 E 위 액센트", + Ecirc:"라틴대문자 E 위 꺾음 표시", + Euml:"라틴대문자 E 위 두점 표시", + Igrave:"라틴대문자 I 위 역액센트", + Iacute:"라틴대문자 I 위 액센트", + Icirc:"라틴대문자 I 위 꺾음 표시", + Iuml:"라틴대문자 I 위 두점 표시", + ETH:"라틴대문자 ETH", + Ntilde:"라틴대문자 N 위 물결 표시", + Ograve:"라틴대문자 O 위 역액센트", + Oacute:"라틴대문자 O 위 액센트", + Ocirc:"라틴대문자 O 위 꺾음 표시", + Otilde:"라틴대문자 O 위 물결 표시", + Ouml:"라틴대문자 O 위 두점 표시", + times:"곱셈 기호", + Oslash:"라틴대문자 O 슬래시 첨부", + Ugrave:"라틴대문자 U 위 역액센트", + Uacute:"라틴대문자 U 위 액센트", + Ucirc:"라틴대문자 U 위 꺾음 표시", + Uuml:"라틴대문자 U 위 두점 표시", + Yacute:"라틴대문자 Y 위 액센트", + THORN:"라틴대문자 THORN", + szlig:"라틴소문자 sharp\n라틴소문자 sharp", + agrave:"라틴소문자 a 위 역액센트\n라틴소문자 a 위 역액센트", + aacute:"라틴소문자 a 위 액센트", + acirc:"라틴소문자 a 위 꺾음 표시", + atilde:"라틴소문자 a 위 물결 표시", + auml:"라틴소문자 a 위 두점 표시", + aring:"라틴소문자 a 위 원 표시\n라틴소문자 a 위 원 표시", + aelig:"라틴소문자 ae\n라틴소문자 ae", + ccedil:"라틴소문자 c 갈고리형 부호", + egrave:"라틴소문자 e 위 역액센트", + eacute:"라틴소문자 e 위 액센트", + ecirc:"라틴소문자 e 위 꺾음 표시", + euml:"라틴소문자 e 위 두점 표시", + igrave:"라틴소문자 i 위 역액센트", + iacute:"라틴소문자 i 액센트", + icirc:"라틴소문자 i 위 꺾음 표시", + iuml:"라틴소문자 i 위 두점 표시", + eth:"라틴소문자 eth", + ntilde:"라틴소문자 n 위 물결 표시", + ograve:"라틴소문자 o 위 역액센트", + oacute:"라틴소문자 o 위 액센트", + ocirc:"라틴소문자 o 위 꺾음 표시", + otilde:"라틴소문자 o 위 물결 표시", + ouml:"라틴소문자 o 위 두점 표시", + divide:"나눗셈 기호", + oslash:"라틴소문자 o 슬래시 첨부\n라틴소문자 o 슬래시 첨부", + ugrave:"라틴소문자 u 위 역액센트", + uacute:"라틴소문자 u 위 액센트", + ucirc:"라틴소문자 u 위 꺾음 표시", + uuml:"라틴소문자 u 위 두점 표시", + yacute:"라틴소문자 y 위 액센트", + thorn:"라틴소문자 thorn", + yuml:"라틴소문자 y 위 두점 표시", + +// Greek Characters and Symbols + fnof:"라틴소문자 f에 고리 첨부\n라틴소문자 f에 고리 첨부\n라틴소문자 f에 고리 첨부", + Alpha:"그리스대문자 alpha", + Beta:"그리스대문자 beta", + Gamma:"그리스대문자 gamma", + Delta:"그리스대문자 delta", + Epsilon:"그리스대문자 epsilon", + Zeta:"그리스대문자 zeta", + Eta:"그리스대문자 eta", + Theta:"그리스대문자 theta", + Iota:"그리스대문자 iota", + Kappa:"그리스대문자 kappa", + Lambda:"그리스대문자 lambda", + Mu:"그리스대문자 mu", + Nu:"그리스대문자 nu", + Xi:"그리스대문자 xi", + Omicron:"그리스대문자 omicron", + Pi:"그리스대문자 pi", + Rho:"그리스대문자 rho", + Sigma:"그리스대문자 sigma", + Tau:"그리스대문자 tau", + Upsilon:"그리스대문자 upsilon", + Phi:"그리스대문자 phi", + Chi:"그리스대문자 chi", + Psi:"그리스대문자 psi", + Omega:"그리스대문자 omega", + alpha:"그리스소문자 alpha", + beta:"그리스소문자 beta", + gamma:"그리스소문자 gamma", + delta:"그리스소문자 delta", + epsilon:"그리스소문자 epsilon", + zeta:"그리스소문자 zeta", + eta:"그리스소문자 eta", + theta:"그리스소문자 theta", + iota:"그리스소문자 iota", + kappa:"그리스소문자 kappa", + lambda:"그리스소문자 lambda", + mu:"그리스소문자 mu", + nu:"그리스소문자 nu", + xi:"그리스소문자 xi", + omicron:"그리스소문자 omicron", + pi:"그리스소문자 pi", + rho:"그리스소문자 rho", + sigmaf:"그리스소문자 final sigma", + sigma:"그리스소문자 sigma", + tau:"그리스소문자 tau", + upsilon:"그리스소문자 upsilon", + phi:"그리스소문자 phi", + chi:"그리스소문자 chi", + psi:"그리스소문자 psi", + omega:"그리스소문자 omega", + thetasym:"그리스소문자 theta symbol", + upsih:"그리스 upsilon에 고리 기호", + piv:"그리스 pi symbol", + bull:"검은 원\n검은 원", + hellip:"수평 세 점\n수평 세 점", + prime:"프라임\n분\n피트", + Prime:"이중 프라임\n초\n인치", + oline:"윗 줄\n윗 줄", + frasl:"분수 사선", + weierp:"script 대문자 P\nscript 대문자 P\nscript 대문자 P", + image:"검정 글자 대문자 I\n검정 글자 대문자 I", + real:"검정 글자 대문자 R\n검정 글자 대문자 R", + trade:"TM(trade mark) 기호", + alefsym:"alef 기호\nalef 기호", + larr:"왼쪽 화살표", + uarr:"위쪽 화살표", + rarr:"오른쪽 화살표", + darr:"아래쪽 화살표", + harr:"좌우 화살표", + crarr:"캐리지 리턴\n캐리지 리턴]", + lArr:"왼쪽 이중 화살표", + uArr:"위쪽 이중 화살표", + rArr:"오른쪽 이중 화살표", + dArr:"아래쪽 이중 화살표", + hArr:"좌우 이중 화살표", + forall:"거꾸로 A", + part:"부분적으로 다름", + exist:"존재", + empty:"없음\n널\n직경", + nabla:"역 삼각형\n역 삼각형", + isin:"..의 요소", + notin:"..의 요소가 아님", + ni:"멤버로 포함", + prod:"n-ary product\n결과 기호", + sum:"n-ary 합", + minus:"마이너스 기호", + lowast:"별표 연산자", + radic:"제곱근 기호\n근호", + prop:"비례", + infin:"무한대", + ang:"각도", + and:"논리적 and\nwedge", + or:"논리적 or\nvee", + cap:"inter 항목\n모자", + cup:"유니온\n컵","int":"인티그랄", + there4:"따라서", + sim:"물결 표시\n물결 표시\n유사함", + cong:"대략 같다", + asymp:"거의 같다\n거의 같다", + ne:"같지 않다", + equiv:"합동, 같다", + le:"적거나 같다", + ge:"크거나 같다", + sub:"부분 집합", + sup:"상위 집합", + nsub:"부분 집합이 아님", + sube:"부분 집합이거나 같다", + supe:"상위 집합이거나 같다", + oplus:"circled plus\ndirect sum", + otimes:"circled times\nvector product", + perp:"수직\n수직\n수직", + sdot:"도트 연산자", + lceil:"왼쪽 씰링\nAPL 업스타일", + rceil:"오른쪽 씰링", + lfloor:"왼쪽 플로어\nAPL 다운스타일", + rfloor:"오른쪽 플로어", + lang:"왼쪽 열린 각도", + rang:"오른쪽 열린 각도", + loz:"마름모", + spades:"블랙 스페이드", + clubs:"블랙 크로버\n블랙 크로버", + hearts:"블랙 하트\n블랙 하트", + diams:"블랙 다이아몬드", + OElig:"라틴대문자 ligature OE", + oelig:"라틴소문자 ligature oe", + Scaron:"라틴대문자 S 위 v 표 ", + scaron:"라틴소문자 s 위 v 표", + Yuml:"라틴대문자 Y 위 두점 표시", + circ:"위 꺾기", + tilde:"소문자 위 물결 표시", + ensp:"en 공간", + emsp:"em 공간", + thinsp:"씬 공간", + zwnj:"제로 너비 비조이너", + zwj:"제로 너비 조이너", + lrm:"왼쪽에서 오른쪽으로 표시", + rlm:"오른쪽에서 왼쪽으로 표시", + ndash:"en 대시 ", + mdash:"em 대시", + lsquo:"왼쪽 단일 따옴표", + rsquo:"오른쪽 단일 따옴표", + sbquo:"단일 바닥 따옴표", + ldquo:"왼쪽 이중 따옴표", + rdquo:"오른쪽 이중 따옴표", + bdquo:"이중 바닥 따옴표", + dagger:"dagger", + Dagger:"이중 dagger", + permil:"퍼밀 기호", + lsaquo:"단일 왼쪽으로 각 따옴", + rsaquo:"단일 오른쪽으로 각 따옴", + euro:"euro 기호" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/latinEntities.js new file mode 100644 index 0000000..a95ac2e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/latinEntities.js @@ -0,0 +1,291 @@ +define({ root: +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + 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", + AElig:"Latin capital letter AE\nLatin capital ligature AE", + Ccedil:"Latin capital letter C with cedilla", + Egrave:"Latin capital letter E with grave", + Eacute:"Latin capital letter E with acute", + Ecirc:"Latin capital letter E with circumflex", + Euml:"Latin capital letter E with diaeresis", + Igrave:"Latin capital letter I with grave", + Iacute:"Latin capital letter I with acute", + Icirc:"Latin capital letter I with circumflex", + Iuml:"Latin capital letter I with diaeresis", + ETH:"Latin capital letter ETH", + Ntilde:"Latin capital letter N with tilde", + Ograve:"Latin capital letter O with grave", + Oacute:"Latin capital letter O with acute", + Ocirc:"Latin capital letter O with circumflex", + Otilde:"Latin capital letter O with tilde", + Ouml:"Latin capital letter O with diaeresis", + times:"multiplication sign", + Oslash:"Latin capital letter O with stroke\nLatin capital letter O slash", + Ugrave:"Latin capital letter U with grave", + Uacute:"Latin capital letter U with acute", + Ucirc:"Latin capital letter U with circumflex", + Uuml:"Latin capital letter U with diaeresis", + Yacute:"Latin capital letter Y with acute", + THORN:"Latin capital letter THORN", + szlig:"Latin small letter sharp s\ness-zed", + agrave:"Latin small letter a with grave\nLatin small letter a grave", + aacute:"Latin small letter a with acute", + acirc:"Latin small letter a with circumflex", + atilde:"Latin small letter a with tilde", + auml:"Latin small letter a with diaeresis", + aring:"Latin small letter a with ring above\nLatin small letter a ring", + aelig:"Latin small letter ae\nLatin small ligature ae", + ccedil:"Latin small letter c with cedilla", + egrave:"Latin small letter e with grave", + eacute:"Latin small letter e with acute", + ecirc:"Latin small letter e with circumflex", + euml:"Latin small letter e with diaeresis", + igrave:"Latin small letter i with grave", + iacute:"Latin small letter i with acute", + icirc:"Latin small letter i with circumflex", + iuml:"Latin small letter i with diaeresis", + eth:"Latin small letter eth", + ntilde:"Latin small letter n with tilde", + ograve:"Latin small letter o with grave", + oacute:"Latin small letter o with acute", + ocirc:"Latin small letter o with circumflex", + otilde:"Latin small letter o with tilde", + ouml:"Latin small letter o with diaeresis", + divide:"division sign", + oslash:"Latin small letter o with stroke\nLatin small letter o slash", + ugrave:"Latin small letter u with grave", + uacute:"Latin small letter u with acute", + ucirc:"Latin small letter u with circumflex", + uuml:"Latin small letter u with diaeresis", + yacute:"Latin small letter y with acute", + thorn:"Latin small letter thorn", + yuml:"Latin small letter y with diaeresis", + +// Greek Characters and Symbols + fnof:"Latin small f with hook\nfunction\nflorin", + Alpha:"Greek capital letter alpha", + Beta:"Greek capital letter beta", + Gamma:"Greek capital letter gamma", + Delta:"Greek capital letter delta", + Epsilon:"Greek capital letter epsilon", + Zeta:"Greek capital letter zeta", + Eta:"Greek capital letter eta", + Theta:"Greek capital letter theta", + Iota:"Greek capital letter iota", + Kappa:"Greek capital letter kappa", + Lambda:"Greek capital letter lambda", + Mu:"Greek capital letter mu", + Nu:"Greek capital letter nu", + Xi:"Greek capital letter xi", + Omicron:"Greek capital letter omicron", + Pi:"Greek capital letter pi", + Rho:"Greek capital letter rho", + Sigma:"Greek capital letter sigma", + Tau:"Greek capital letter tau", + Upsilon:"Greek capital letter upsilon", + Phi:"Greek capital letter phi", + Chi:"Greek capital letter chi", + Psi:"Greek capital letter psi", + Omega:"Greek capital letter omega", + alpha:"Greek small letter alpha", + beta:"Greek small letter beta", + gamma:"Greek small letter gamma", + delta:"Greek small letter delta", + epsilon:"Greek small letter epsilon", + zeta:"Greek small letter zeta", + eta:"Greek small letter eta", + theta:"Greek small letter theta", + iota:"Greek small letter iota", + kappa:"Greek small letter kappa", + lambda:"Greek small letter lambda", + mu:"Greek small letter mu", + nu:"Greek small letter nu", + xi:"Greek small letter xi", + omicron:"Greek small letter omicron", + pi:"Greek small letter pi", + rho:"Greek small letter rho", + sigmaf:"Greek small letter final sigma", + sigma:"Greek small letter sigma", + tau:"Greek small letter tau", + upsilon:"Greek small letter upsilon", + phi:"Greek small letter phi", + chi:"Greek small letter chi", + psi:"Greek small letter psi", + omega:"Greek small letter omega", + thetasym:"Greek small letter theta symbol", + upsih:"Greek upsilon with hook symbol", + piv:"Greek pi symbol", + bull:"bullet\nblack small circle", + hellip:"horizontal ellipsis\nthree dot leader", + prime:"prime\nminutes\nfeet", + Prime:"double prime\nseconds\ninches", + oline:"overline\nspacing overscore", + frasl:"fraction slash", + weierp:"script capital P\npower set\nWeierstrass p", + image:"blackletter capital I\nimaginary part", + real:"blackletter capital R\nreal part symbol", + trade:"trade mark sign", + alefsym:"alef symbol\nfirst transfinite cardinal", + larr:"leftwards arrow", + uarr:"upwards arrow", + rarr:"rightwards arrow", + darr:"downwards arrow", + harr:"left right arrow", + crarr:"downwards arrow with corner leftwards\ncarriage return", + lArr:"leftwards double arrow", + uArr:"upwards double arrow", + rArr:"rightwards double arrow", + dArr:"downwards double arrow", + hArr:"left right double arrow", + forall:"for all", + part:"partial differential", + exist:"there exists", + empty:"empty set\nnull set\ndiameter", + nabla:"nabla\nbackward difference", + isin:"element of", + notin:"not an element of", + ni:"contains as member", + prod:"n-ary product\nproduct sign", + sum:"n-ary sumation", + minus:"minus sign", + lowast:"asterisk operator", + radic:"square root\nradical sign", + prop:"proportional to", + infin:"infinity", + ang:"angle", + and:"logical and\nwedge", + or:"logical or\nvee", + cap:"intersection\ncap", + cup:"union\ncup","int":"integral", + there4:"therefore", + sim:"tilde operator\nvaries with\nsimilar to", + cong:"approximately equal to", + asymp:"almost equal to\nasymptotic to", + 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" +}) +, +//end v1.x content +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pt-pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"he": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true, +"ar": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/AutoSave.js new file mode 100644 index 0000000..87dfccc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/AutoSave.js @@ -0,0 +1,17 @@ +define( +//begin v1.x content +({ + "saveLabel": "Lagre", + "saveSettingLabelOn": "Angi intervall for automatisk lagring...", + "saveSettingLabelOff": "Slå av automatisk lagring", + "saveSettingdialogTitle": "Automatisk lagring", + "saveSettingdialogDescription": "Definer intervall for automatisk lagring", + "saveSettingdialogParamName": "Intervall for automatisk lagring", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Angi intervall", + "saveSettingdialogButtonCancel": "Avbryt", + "saveMessageSuccess": "Lagret klokken ${0}", + "saveMessageFail": "Mislykket lagring klokken ${0}" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Blockquote.js new file mode 100644 index 0000000..87e18cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Blockquote.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "blockquote": "Blokksitat" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Breadcrumb.js new file mode 100644 index 0000000..1f2b107 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Breadcrumb.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} Handlinger", + "selectContents": "Velg innhold", + "selectElement": "Velg element", + "deleteElement": "Slett element", + "deleteContents": "Slett innhold", + "moveStart": "Flytt markør til start", + "moveEnd": "Flytt markør til slutt" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/CollapsibleToolbar.js new file mode 100644 index 0000000..6c5adf6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/CollapsibleToolbar.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "collapse": "Komprimer verktøylinje for redigeringsprogram", + "expand": "Utvid verktøylinje for redigeringsprogram" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/FindReplace.js new file mode 100644 index 0000000..6d09123 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "Søk:", + "findTooltip": "Skriv inn teksten du vil søke etter", + "replaceLabel": "Erstatt med:", + "replaceTooltip": "Skriv inn teksten du vil erstatte med", + "findReplace": "Søk og erstatt", + "matchCase": "Skill mellom store og små bokstaver", + "matchCaseTooltip": "Skill mellom store og små bokstaver", + "backwards": "Bakover", + "backwardsTooltip": "Søk bakover etter tekst", + "replaceAllButton": "Erstatt alle", + "replaceAllButtonTooltip": "Erstatt all tekst", + "findButton": "Søk", + "findButtonTooltip": "Søk etter teksten", + "replaceButton": "Erstatt", + "replaceButtonTooltip": "Erstatt teksten", + "replaceDialogText": "Erstattet ${0} forekomster.", + "eofDialogText": "Siste forekomst ${0}", + "eofDialogTextFind": "funnet", + "eofDialogTextReplace": "erstattet" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/InsertAnchor.js new file mode 100644 index 0000000..b03c87f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/InsertAnchor.js @@ -0,0 +1,12 @@ +define( +//begin v1.x content +({ + insertAnchor: "Sett inn anker", + title: "Ankeregenskaper", + anchor: "Navn:", + text: "Beskrivelse:", + set: "Definer", + cancel: "Avbryt" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/InsertEntity.js new file mode 100644 index 0000000..371a8e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/InsertEntity.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + insertEntity: "Sett inn symbol" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/LocalImage.js new file mode 100644 index 0000000..65d116d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/LocalImage.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Sett inn bilde", + url: "Bilde", + browse: "Bla gjennom...", + text: "Beskrivelse", + set: "Sett inn", + invalidMessage: "Ugyldig bildefiltype", + prePopuTextUrl: "Angi en bilde-URL", + prePopuTextBrowse: " eller bla gjennom til en lokal fil." +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/PageBreak.js new file mode 100644 index 0000000..87355c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/PageBreak.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "pageBreak": "Sideskift" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/PasteFromWord.js new file mode 100644 index 0000000..5e11b2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/PasteFromWord.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Lim inn fra Word", + "paste": "Lim inn", + "cancel": "Avbryt", + "instructions": "Lim inn innhold fra Word til tekstboksen nedenfor. Når du er fornøyd med innholdet du skal sette inn, trykker du på innlimingsknappen. Hvis du vil avbryte innsettingen av teksten, trykker du på avbruddsknappen." +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Preview.js new file mode 100644 index 0000000..3572550 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Preview.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "preview": "Forhåndsvis" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/SafePaste.js new file mode 100644 index 0000000..8e8034c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Direkte innliming er deaktivert. Lim inn innhold i denne dialogboksen ved hjelp av standard innlimingstaster eller -menyvalg i nettleseren. Når du er fornøyd med innholdet du skal sette inn, trykker du på innlimingsknappen. Hvis du vil avbryte innsettingen av innholdet, trykker du på avbruddsknappen." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Save.js new file mode 100644 index 0000000..f6af5ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Save.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "save": "Lagre" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/ShowBlockNodes.js new file mode 100644 index 0000000..86bc92a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/ShowBlockNodes.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Vis HTML-blokkelementer" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Smiley.js new file mode 100644 index 0000000..b96df2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/Smiley.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + smiley: "Sett inn uttrykksikon", + emoticonSmile: "smil", + emoticonLaughing: "latter", + emoticonWink: "blunk", + emoticonGrin: "glis", + emoticonCool: "kul", + emoticonAngry: "sint", + emoticonHalf: "halv", + emoticonEyebrow: "øyebryn", + emoticonFrown: "streng", + emoticonShy: "sjenert", + emoticonGoofy: "tåpelig", + emoticonOops: "ops", + emoticonTongue: "tunge", + emoticonIdea: "ide", + emoticonYes: "ja", + emoticonNo: "nei", + emoticonAngel: "engel", + emoticonCrying: "gråt", + emoticonHappy: "glad" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/SpellCheck.js new file mode 100644 index 0000000..b074bab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/SpellCheck.js @@ -0,0 +1,20 @@ +define( +//begin v1.x content +({ + widgetLabel: "Satsvis stavekontroll", + unfound: "Ikke funnet", + skip: "Hopp over", + skipAll: "Hopp over alle", + toDic: "Legg til i ordliste", + suggestions: "Forslag", + replace: "Erstatt", + replaceWith: "Erstatt med", + replaceAll: "Erstatt alle", + cancel: "Avbryt", + msg: "Ingen stavefeil funnet", + iSkip: "Hopp over dette", + iSkipAll: "Hopp over alle slike", + iMsg: "Ingen staveforslag" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/TableDialog.js new file mode 100644 index 0000000..9d4adbe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Sett inn tabell", + modifyTableTitle: "Endre tabell", + rows: "Rader:", + columns: "Kolonner:", + align: "Juster:", + cellPadding: "Celleutfylling:", + cellSpacing: "Celleavstand:", + tableWidth: "Tabellbredde:", + backgroundColor: "Bakgrunnsfarge:", + borderColor: "Kantlinjefarge:", + borderThickness: "Kanttykkelse", + percent: "prosent", + pixels: "piksler", + "default": "standard", + left: "venstre", + center: "midtstill", + right: "høyre", + buttonSet: "Definer", // translated elsewhere? + buttonInsert: "Sett inn", + buttonCancel: "Avbryt", + + selectTableLabel: "Velg tabell", + insertTableRowBeforeLabel: "Legg til rad foran", + insertTableRowAfterLabel: "Legg til rad etter", + insertTableColumnBeforeLabel: "Legg til kolonne foran", + insertTableColumnAfterLabel: "Legg til kolonne etter", + deleteTableRowLabel: "Slett rad", + deleteTableColumnLabel: "Slett kolonne" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/TextColor.js new file mode 100644 index 0000000..ef90e55 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/TextColor.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "setButtonText": "Definer", + "cancelButtonText": "Avbryt" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/latinEntities.js new file mode 100644 index 0000000..a9ea4ec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nb/latinEntities.js @@ -0,0 +1,260 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"invertert utropstegn", + cent:"cent-tegn", + pound:"pund-tegn", + curren:"valutategn", + yen:"yen-tegn\nyuan-tegn", + brvbar:"brutt strek\nbrutt loddrett strek", + sect:"seksjonstegn", + uml:"dieresis", + copy:"opphavsrettstegn", + ordf:"feminin ordenstallsindikator", + laquo:"venstre doble anførselstegn", + not:"ikke-tegn", + shy:"myk bindestrek", + reg:"registrert-tegn\nregistrert varemerke-tegn", + macr:"makron\nmellomromsmakron\noverstrek\nAPL-overstrek", + deg:"gradtegn", + plusmn:"pluss-minus-tegn\npluss-eller-minus-tegn", + sup2:"hevet skrift to\nhevet skrift tall to\nkvadrat", + sup3:"hevet skrift tre\nhevet skrift tall tre\nkubikk", + acute:"akuttegn\nmellomromsakuttegn", + micro:"mikro-tegn", + para:"avsnittstegn", + middot:"midtprikk\nGeorgisk komma\ngresk midtprikk", + cedil:"cedille\nmellomromscedille", + sup1:"hevet skrift en\nhevet skrift tall en", + ordm:"maskulin ordenstallsindikator", + raquo:"høyre doble anførselstegn", + frac14:"brøk en kvart", + frac12:"brøk en halv", + frac34:"brøk tre kvart", + iquest:"invertert spørsmålstegn\nsnudd spørsmålstegn", + Agrave:"Stor bokstav A med aksent grave\nStor bokstav A grave", + Aacute:"Stor bokstav A med aigu", + Acirc:"Stor bokstav A med circumfleks", + Atilde:"Stor bokstav A med tilde", + Auml:"Stor bokstav A med dieresis", + Aring:"Stor bokstav A med ring\nStor bokstav A ring", + AElig:"Stor bokstav AE\nStor bokstav sammenbundet AE", + Ccedil:"Stor bokstav C med cedille", + Egrave:"Stor bokstav E med grave", + Eacute:"Stor bokstav E med aigu", + Ecirc:"Stor bokstav E med circumfleks", + Euml:"Stor bokstav E med diaeresis", + Igrave:"Stor bokstav I med grave", + Iacute:"Stor bokstav I med aigu", + Icirc:"Stor bokstav I med circumflex", + Iuml:"Stor bokstav I med dieresis", + ETH:"Stor bokstav ETH", + Ntilde:"Stor bokstav N med tilde", + Ograve:"Stor bokstav O med grave", + Oacute:"Stor bokstav O med aigu", + Ocirc:"Stor bokstav O med circumfleks", + Otilde:"Stor bokstav O med tilde", + Ouml:"Stor bokstav O med dieresis", + times:"multiplikasjonstegn", + Oslash:"Stor bokstav O med strek\nStor bokstav O skråstrek", + Ugrave:"Stor bokstav U med grave", + Uacute:"Stor bokstav U med aigu", + Ucirc:"Stor bokstav U med circumflex", + Uuml:"Stor bokstav U med dieresis", + Yacute:"Stor bokstav Y med aigu", + THORN:"Stor bokstav THORN", + szlig:"liten bokstav dobbelt-s\neszett", + agrave:"Liten bokstav a med aksent grave\nLiten bokstav a grave", + aacute:"Liten bokstav a med aigu", + acirc:"Liten bokstav a med circumfleks", + atilde:"Liten bokstav a med tilde", + auml:"Liten bokstav a med dieresis", + aring:"Liten bokstav a med aksent grave\nLiten bokstav a ring", + aelig:"Liten bokstav ae\nLiten bokstav sammenbundet AE", + ccedil:"Liten bokstav c med cedille", + egrave:"Liten bokstav e med grave", + eacute:"Liten bokstav e med aigu", + ecirc:"Liten bokstav e med circumflex", + euml:"Liten bokstav e med dieresis", + igrave:"Liten bokstav i med grave", + iacute:"Liten bokstav i med aigu", + icirc:"Liten bokstav i med circumflex", + iuml:"Liten bokstav i med dieresis", + eth:"Liten bokstav eth", + ntilde:"Liten bokstav n med tilde", + ograve:"Liten bokstav o med grave", + oacute:"Liten bokstav o med aigu", + ocirc:"Liten bokstav o med circumflex", + otilde:"Liten bokstav o med tilde", + ouml:"Liten bokstav o med dieresis", + divide:"divisjonstegn", + oslash:"Liten bokstav o med strek\nLiten bokstav o skråstrek", + ugrave:"Liten bokstav u med grave", + uacute:"Liten bokstav u med aigu", + ucirc:"Liten bokstav u med circumfleks", + uuml:"Liten bokstav u med dieresis", + yacute:"Liten bokstav y med aigu", + thorn:"Liten bokstav thorn", + yuml:"Liten bokstav y med dieresis", + +// Greek Characters and Symbols + fnof:"Liten bokstav f med krok\nfunksjon\nflorin", + Alpha:"Gresk stor bokstav alfa", + Beta:"Gresk stor bokstav beta", + Gamma:"Gresk stor bokstav gamma", + Delta:"Gresk stor bokstav delta", + Epsilon:"Gresk stor bokstav epsilon", + Zeta:"Gresk stor bokstav zeta", + Eta:"Gresk stor bokstav eta", + Theta:"Gresk stor bokstav theta", + Iota:"Gresk stor bokstav iota", + Kappa:"Gresk stor bokstav kappa", + Lambda:"Gresk stor bokstav lambda", + Mu:"Gresk stor bokstav my", + Nu:"Gresk stor bokstav ny", + Xi:"Gresk stor bokstav ksi", + Omicron:"Gresk stor bokstav omikron", + Pi:"Gresk stor bokstav pi", + Rho:"Gresk stor bokstav rho", + Sigma:"Gresk stor bokstav sigma", + Tau:"Gresk stor bokstav tau", + Upsilon:"Gresk stor bokstav ypsilon", + Phi:"Gresk stor bokstav phi", + Chi:"Gresk stor bokstav khi", + Psi:"Gresk stor bokstav psi", + Omega:"Gresk stor bokstav omega", + alpha:"Gresk liten bokstav alfa", + beta:"Gresk liten bokstav beta", + gamma:"Gresk liten bokstav gamma", + delta:"Gresk liten bokstav delta", + epsilon:"Gresk liten bokstav epsilon", + zeta:"Gresk liten bokstav zeta", + eta:"Gresk liten bokstav eta", + theta:"Gresk liten bokstav theta", + iota:"Gresk liten bokstav iota", + kappa:"Gresk liten bokstav kappa", + lambda:"Gresk liten bokstav lambda", + mu:"Gresk liten bokstav my", + nu:"Gresk liten bokstav ny", + xi:"Gresk liten bokstav ksi", + omicron:"Gresk liten bokstav omikron", + pi:"Gresk liten bokstav pi", + rho:"Gresk liten bokstav rho", + sigmaf:"Gresk liten bokstav sluttform sigma", + sigma:"Gresk liten bokstav sigma", + tau:"Gresk liten bokstav tau", + upsilon:"Gresk liten bokstav ypsilon", + phi:"Gresk liten bokstav phi", + chi:"Gresk liten bokstav khi", + psi:"Gresk liten bokstav psi", + omega:"Gresk liten bokstav omega", + thetasym:"Gresk liten bokstav theta-symbol", + upsih:"Gresk ypsilon med krok-symbol", + piv:"Gresk pi-symbol", + bull:"punkt\nliten svart sirkel", + hellip:"vannrett ellipse\ntre prikker", + prime:"prim\nminutter\nfot", + Prime:"dobbelt prim\nsekunder\ntommer", + oline:"overstrek\nmellomromsoverstrek", + frasl:"brøkskråstrek", + weierp:"script capital P\npower set\nWeierstrass p", + image:"blackletter capital I\nimaginary part", + real:"blackletter capital R\nreal part symbol", + trade:"varemerketegn", + alefsym:"alef symbol\nfirst transfinite cardinal", + larr:"venstrepil", + uarr:"opp-pil", + rarr:"høyrepil", + darr:"nedpil", + harr:"venstre-høyre-pil", + crarr:"nedpil med hjørne mot venstre\nretur", + lArr:"dobbeltpil mot venstre", + uArr:"dobbeltpil oppover", + rArr:"dobbeltpil mot høyre", + dArr:"dobbeltpil nedover", + hArr:"dobbeltpil venstre-høyre", + forall:"for alle", + part:"partiell differensial", + exist:"det finnes", + empty:"tomt sett\nnullsett\ndiameter", + nabla:"nabla\nbakoverdifferanse", + isin:"element av", + notin:"ikke et element av", + ni:"contains as member", + prod:"n-ært produkt\nprodukttegn", + sum:"n-ær summering", + minus:"minustegn", + lowast:"stjerneoperator", + radic:"kvadratrot\nradikaltegn", + prop:"proporsjonalt med", + infin:"uendelighet", + ang:"vinkel", + and:"logisk og\nkile", + or:"logisk eller\nv", + cap:"snitt\nbue", + cup:"union\nkopp","int":"integral", + there4:"derfor", + sim:"tilde-operator\nvarierer med\nlikner på", + cong:"omtrent lik", + asymp:"nesten lik\nasymptotisk med", + ne:"ikke lik", + equiv:"identisk med", + le:"mindre enn eller lik", + ge:"større enn eller lik", + sub:"delsett av", + sup:"overordnet sett av", + nsub:"ikke delsett av", + sube:"delsett av eller lik", + supe:"overordnet sett av eller lik", + oplus:"pluss med sirkel\ndirekte 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:"Stor bokstav ligatur OE", + oelig:"Liten bokstav ligatur 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:"liten tilde", + ensp:"en-mellomrom", + emsp:"em-mellomrom", + thinsp:"tynt mellomrom", + zwnj:"zero width non-joiner", + zwj:"zero width joiner", + lrm:"left-to-right mark", + rlm:"right-to-left mark", + ndash:"en-strek", + mdash:"em-strek", + lsquo:"venstre enkelt anførselstegn", + rsquo:"høyre enkelt anførselstegn", + sbquo:"single low-9 quotation mark", + ldquo:"venstre dobbelt anførselstegn", + rdquo:"høyre dobbelt anførselstegn", + bdquo:"double low-9 quotation mark", + dagger:"dolk", + Dagger:"dobbelt dolk", + permil:"per mille sign", + lsaquo:"single left-pointing angle quotation mark", + rsaquo:"single right-pointing angle quotation mark", + euro:"euro-tegn" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/AutoSave.js new file mode 100644 index 0000000..e4f458c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "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 op ${0}", + "saveMessageFail": "Opslaan mislukt op ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Breadcrumb.js new file mode 100644 index 0000000..252cf2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "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" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/CollapsibleToolbar.js new file mode 100644 index 0000000..8cbb506 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Editor-werkbalk samenvouwen", + "expand": "Editor-werkbalk uitvouwen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/FindReplace.js new file mode 100644 index 0000000..d3c2a38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "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" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/InsertAnchor.js new file mode 100644 index 0000000..71e26f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Anker invoegen", + title: "Ankereigenschappen", + anchor: "Naam:", + text: "Beschrijving:", + set: "Instellen", + cancel: "Annuleren" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/InsertEntity.js new file mode 100644 index 0000000..65fd62b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Symbool invoegen" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/LocalImage.js new file mode 100644 index 0000000..d115c23 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + 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." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/PageBreak.js new file mode 100644 index 0000000..a454a4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Paginaeinde" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/PasteFromWord.js new file mode 100644 index 0000000..dab82ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Plakken vanuit Word", + "paste": "Plakken", + "cancel": "Annuleren", + "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." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Preview.js new file mode 100644 index 0000000..1b5c179 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Preview" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/SafePaste.js new file mode 100644 index 0000000..adbc3e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Rechtstreeks plakken is uitgeschakeld. Plak de inhoud in dit dialoogvenster met behulp van de standaardtoetsen van de browser of via menuopties. Klik als u klaar bent op de knop Plakken. Kies Annuleren als u de invoeging van inhoud wilt afbreken." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Save.js new file mode 100644 index 0000000..472d7ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Opslaan" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/ShowBlockNodes.js new file mode 100644 index 0000000..e319e83 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "HTML-blokelementen afbeelden" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Smiley.js new file mode 100644 index 0000000..847d98e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + 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: "vrolijk" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/SpellCheck.js new file mode 100644 index 0000000..931667e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + 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" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/TableDialog.js new file mode 100644 index 0000000..88c0d7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Tabel invoegen", + modifyTableTitle: "Tabel wijzigen", + rows: "Rijen", + columns: "Kolommen", + align: "Uitlijnen", + cellPadding: "Celopvulling:", + cellSpacing: "Celspatiëring:", + tableWidth: "Tabelbreedte:", + backgroundColor: "Achtergrondkleur:", + borderColor: "Randkleur", + borderThickness: "Randdikte", + percent: "percent", + pixels: "pixels", + "default": "standaard", + left: "links", + center: "gecentreerd", + right: "rechts", + buttonSet: "Instellen", // translated elsewhere? + 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" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/TextColor.js new file mode 100644 index 0000000..33fda27 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Instellen", + "cancelButtonText": "Annuleren" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/latinEntities.js new file mode 100644 index 0000000..7a3b45f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/nl/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + 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", + +// Greek Characters and Symbols + fnof:"cursieve f\nfunctie\ngulden", + Alpha:"Griekse hoofdletter alpha", + Beta:"Griekse hoofdletter bèta", + Gamma:"Griekse hoofdletter gamma", + Delta:"Griekse hoofdletter delta", + Epsilon:"Griekse hoofdletter epsilon", + Zeta:"Griekse hoofdletter zèta", + Eta:"Griekse hoofdletter èta", + Theta:"Griekse hoofdletter thèta", + 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èta", + gamma:"Griekse kleine letter gamma", + delta:"Griekse kleine letter delta", + epsilon:"Griekse kleine letter epsilon", + zeta:"Griekse kleine letter zèta", + eta:"Griekse kleine letter èta", + theta:"Griekse kleine letter thèta", + 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èta (2e vorm)", + upsih:"Griekse letter ypsilon met haakje", + piv:"Griekse letter pi (2e vorm)", + bull:"opsommingsteken\naandachtspunt", + hellip:"beletselteken\weglatingsteken", + 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ëel 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ële differentiaal", + exist:"er bestaat", + empty:"lege verzameling\nnulverzameling\ndiameter", + nabla:"nabla\ngradiënt", + 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" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/AutoSave.js new file mode 100644 index 0000000..bce25dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Zapisz", + "saveSettingLabelOn": "Ustaw odstęp czasu automatycznego zapisywania...", + "saveSettingLabelOff": "Wyłącz automatyczne zapisywanie", + "saveSettingdialogTitle": "Automatyczne zapisywanie", + "saveSettingdialogDescription": "Określ odstęp czasu automatycznego zapisywania", + "saveSettingdialogParamName": "Odstęp czasu automatycznego zapisywania", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Ustaw odstęp czasu", + "saveSettingdialogButtonCancel": "Anuluj", + "saveMessageSuccess": "Zapisano: ${0}", + "saveMessageFail": "Zapisanie nie powiodło się: ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Blockquote.js new file mode 100644 index 0000000..ef57d5d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Cytat blokowy" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Breadcrumb.js new file mode 100644 index 0000000..c4114bc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} - działania", + "selectContents": "Zaznacz treść", + "selectElement": "Zaznacz element", + "deleteElement": "Usuń element", + "deleteContents": "Usuń treść", + "moveStart": "Przenieś kursor na początek", + "moveEnd": "Przenieś kursor na koniec" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/CollapsibleToolbar.js new file mode 100644 index 0000000..0a9b0e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Zwiń pasek narzędzi edytora", + "expand": "Rozwiń pasek narzędzi edytora" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/FindReplace.js new file mode 100644 index 0000000..ffa9499 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Znajdź:", + "findTooltip": "Wprowadź szukany tekst", + "replaceLabel": "Zastąp przez:", + "replaceTooltip": "Wprowadź tekst zastępujący", + "findReplace": "Znajdź i zastąp", + "matchCase": "Uwzględnij wielkość liter", + "matchCaseTooltip": "Uwzględnij wielkość liter", + "backwards": "Do tyłu", + "backwardsTooltip": "Wyszukaj tekst wstecz", + "replaceAllButton": "Zastąp wszystkie", + "replaceAllButtonTooltip": "Zastąp cały tekst", + "findButton": "Znajdź", + "findButtonTooltip": "Znajdź tekst", + "replaceButton": "Zastąp", + "replaceButtonTooltip": "Zastąp tekst", + "replaceDialogText": "Zastąpione wystąpienia: ${0}.", + "eofDialogText": "Ostatnie wystąpienie: ${0}", + "eofDialogTextFind": "znaleziono", + "eofDialogTextReplace": "zastąpiono" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/InsertAnchor.js new file mode 100644 index 0000000..844652f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Wstaw zakotwiczenie", + title: "Właściwości zakotwiczenia", + anchor: "Nazwa:", + text: "Opis:", + set: "Ustaw", + cancel: "Anuluj" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/InsertEntity.js new file mode 100644 index 0000000..ffba573 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Wstaw symbol" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/LocalImage.js new file mode 100644 index 0000000..8f53eb0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Wstaw obraz", + url: "Obraz", + browse: "Przeglądaj...", + text: "Opis", + set: "Wstaw", + invalidMessage: "Niepoprawny typ pliku graficznego", + prePopuTextUrl: "Wprowadź adres URL obrazu", + prePopuTextBrowse: " lub wskaż plik lokalny. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/PageBreak.js new file mode 100644 index 0000000..3c34f1b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Podział strony" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/PasteFromWord.js new file mode 100644 index 0000000..c283aac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Wklej z programu Word", + "paste": "Wklej", + "cancel": "Anuluj", + "instructions": "Wklej tekst z programu Word do poniższego pola tekstowego. Po uzyskaniu odpowiedniej treści do wstawienia kliknij przycisk Wklej. Aby przerwać wstawianie tekstu, kliknij przycisk Anuluj. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Preview.js new file mode 100644 index 0000000..46d51a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Podgląd" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/SafePaste.js new file mode 100644 index 0000000..9280fb0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Wklejanie bezpośrednie jest wyłączone. Wklej treść do tego okna dialogowego za pomocą standardowych skrótów klawiszowych przeglądarki lub opcji Wklej w menu. Po uzyskaniu odpowiedniej treści do wstawienia kliknij przycisk Wklej. Aby przerwać wstawianie treści, kliknij przycisk Anuluj." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Save.js new file mode 100644 index 0000000..73389c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Zapisz" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/ShowBlockNodes.js new file mode 100644 index 0000000..cbb67d6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Pokaż elementy bloków HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Smiley.js new file mode 100644 index 0000000..4aa54a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Wstaw emotikon", + emoticonSmile: "uśmiech", + emoticonLaughing: "śmiech", + emoticonWink: "mrugnięcie", + emoticonGrin: "szeroki uśmiech", + emoticonCool: "cwaniak", + emoticonAngry: "złość", + emoticonHalf: "niesmak", + emoticonEyebrow: "uniesienie brwi", + emoticonFrown: "niezadowolenie", + emoticonShy: "nieśmiałość", + emoticonGoofy: "niezdarność", + emoticonOops: "ups", + emoticonTongue: "pokazywanie języka", + emoticonIdea: "pomysł", + emoticonYes: "Tak", + emoticonNo: "Nie", + emoticonAngel: "anioł", + emoticonCrying: "płacz", + emoticonHappy: "radość" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/SpellCheck.js new file mode 100644 index 0000000..39dcfab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Wsadowe sprawdzanie pisowni", + unfound: "Nie znaleziono", + skip: "Pomiń", + skipAll: "Pomiń wszystko", + toDic: "Dodaj do słownika", + suggestions: "Propozycje", + replace: "Zastąp", + replaceWith: "Zastąp przez", + replaceAll: "Zastąp wszystko", + cancel: "Anuluj", + msg: "Nie znaleziono błędów pisowni", + iSkip: "Pomiń tę pozycję", + iSkipAll: "Pomiń wszystkie pozycje podobne do tej", + iMsg: "Brak propozycji pisowni" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/TableDialog.js new file mode 100644 index 0000000..85af1c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Wstawianie tabeli", + modifyTableTitle: "Modyfikowanie tabeli", + rows: "Wiersze:", + columns: "Kolumny:", + align: "Wyrównanie:", + cellPadding: "Dopełnianie komórek:", + cellSpacing: "Odstępy między komórkami:", + tableWidth: "Szerokość tabeli:", + backgroundColor: "Kolor tła:", + borderColor: "Kolor ramki:", + borderThickness: "Grubość ramki", + percent: "procent", + pixels: "piksle", + "default": "domyślna", + left: "lewa strona", + center: "środek", + right: "prawa strona", + buttonSet: "Ustaw", // translated elsewhere? + buttonInsert: "Wstaw", + buttonCancel: "Anuluj", + + selectTableLabel: "Wybierz tabelę", + insertTableRowBeforeLabel: "Dodaj wiersz przed", + insertTableRowAfterLabel: "Dodaj wiersz po", + insertTableColumnBeforeLabel: "Dodaj kolumnę przed", + insertTableColumnAfterLabel: "Dodaj kolumnę po", + deleteTableRowLabel: "Usuń wiersz", + deleteTableColumnLabel: "Usuń kolumnę" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/TextColor.js new file mode 100644 index 0000000..a73aa0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Ustaw", + "cancelButtonText": "Anuluj" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/latinEntities.js new file mode 100644 index 0000000..92bd804 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pl/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"odwrócony wykrzyknik", + cent:"znak centa", + pound:"znak funta", + curren:"znak waluty", + yen:"znak jena\nznak yuana", + brvbar:"przerwana kreska\nprzerwana pionowa kreska", + sect:"znak sekcji", + uml:"diereza\ndiereza rozdzielająca", + copy:"znak praw autorskich", + ordf:"znak liczby rodzaju żeńskiego", + laquo:"lewy cudzysłów trójkątny\nlewy guillemet", + not:"znak negacji", + shy:"łącznik miękki\nłącznik opcjonalny", + reg:"symbol zastrzeżenia\nsymbol zastrzeżonego znaku towarowego", + macr:"makron\nmakron rozdzielający\nnadkreślenie\nkreska górna APL", + deg:"znak stopni", + plusmn:"znak plus-minus\nznak zakresu wartości przybliżonej", + sup2:"indeks górny dwa\ncyfra dwa w indeksie górnym\nkwadrat", + sup3:"indeks górny trzy\ncyfra trzy w indeksie górnym\nsześcian", + acute:"akcent ostry\nodstęp ostry", + micro:"znak mikro", + para:"znak pilcrow\nznak akapitu", + middot:"kropka środkowa\ngruziński przecinek\ngrecka kropka środkowa", + cedil:"cedilla\nodstęp cedilla", + sup1:"indeks górny jeden\ncyfra jeden w indeksie górnym", + ordm:"znak liczby rodzaju męskiego", + raquo:"prawy cudzysłów trójkątny\nprawy guillemet", + frac14:"znak ułamka jedna czwarta\nułamek jedna czwarta", + frac12:"znak ułamka jedna druga\nułamek jedna druga", + frac34:"znak ułamka trzy czwarte\nułamek trzy czwarte", + iquest:"odwrócony znak zapytania\nodwrotny znak zapytania", + Agrave:"łacińska wielka litera A z symbolem gravis\nłacińska wielka litera A z akcentem ciężkim", + Aacute:"łacińska wielka litera A z akcentem ostrym", + Acirc:"łacińska wielka litera A z daszkiem", + Atilde:"łacińska wielka litera A z tyldą", + Auml:"łacińska wielka litera A z diarezą", + Aring:"łacińska wielka litera A z pierścieniem powyżej\nłacińska wielka litera A z pierścieniem", + AElig:"łacińska wielka litera AE\nłacińska ligatura wielkich liter AE", + Ccedil:"łacińska wielka litera C z cedillą", + Egrave:"łacińska wielka litera E z akcentem ciężkim", + Eacute:"łacińska wielka litera E z akcentem ostrym", + Ecirc:"łacińska wielka litera E z daszkiem", + Euml:"łacińska wielka litera E z diarezą", + Igrave:"łacińska wielka litera I z akcentem ciężkim", + Iacute:"łacińska wielka litera I z akcentem ostrym", + Icirc:"łacińska wielka litera I z daszkiem", + Iuml:"łacińska wielka litera I z diarezą", + ETH:"łacińska wielka litera ETH", + Ntilde:"łacińska wielka litera N z tyldą", + Ograve:"łacińska wielka litera O z akcentem ciężkim", + Oacute:"łacińska wielka litera O z akcentem ostrym", + Ocirc:"łacińska wielka litera O z daszkiem", + Otilde:"łacińska wielka litera O z tyldą", + Ouml:"łacińska wielka litera O z diarezą", + times:"znak mnożenia", + Oslash:"łacińska wielka litera O z przekreśleniem\nłacińska wielka litera O z ukośnikiem", + Ugrave:"łacińska wielka litera U z akcentem ciężkim", + Uacute:"łacińska wielka litera U z akcentem ostrym", + Ucirc:"łacińska wielka litera U z daszkiem", + Uuml:"łacińska wielka litera U z diarezą", + Yacute:"łacińska wielka litera Y z akcentem ostrym", + THORN:"łacińska wielka litera THORN", + szlig:"łacińska mała litera ostre s\ness-zed", + agrave:"łacińska mała litera a z symbolem gravis\nłacińska mała litera a z akcentem ciężkim", + aacute:"łacińska mała litera a z akcentem ostrym", + acirc:"łacińska mała litera a z daszkiem", + atilde:"łacińska mała litera a z tyldą", + auml:"łacińska mała litera a z diarezą", + aring:"łacińska mała litera a z pierścieniem powyżej\nłacińska mała litera a z pierścieniem", + aelig:"łacińska mała litera ae\nłacińska ligatura małych liter ae", + ccedil:"łacińska mała litera c z cedillą", + egrave:"łacińska mała litera e z akcentem ciężkim", + eacute:"łacińska mała litera e z akcentem ostrym", + ecirc:"łacińska mała litera e z daszkiem", + euml:"łacińska mała litera e z diarezą", + igrave:"łacińska mała litera i z akcentem ciężkim", + iacute:"łacińska mała litera i z akcentem ostrym", + icirc:"łacińska mała litera i z daszkiem", + iuml:"łacińska mała litera i z diarezą", + eth:"łacińska mała litera eth", + ntilde:"łacińska mała litera n z tyldą", + ograve:"łacińska mała litera o z akcentem ciężkim", + oacute:"łacińska mała litera o z akcentem ostrym", + ocirc:"łacińska mała litera o z daszkiem", + otilde:"łacińska mała litera o z tyldą", + ouml:"łacińska mała litera o z diarezą", + divide:"znak dzielenia", + oslash:"łacińska mała litera o z przekreśleniem\nłacińska mała litera o z ukośnikiem", + ugrave:"łacińska mała litera u z akcentem ciężkim", + uacute:"łacińska mała litera u z akcentem ostrym", + ucirc:"łacińska mała litera u z daszkiem", + uuml:"łacińska mała litera u z diarezą", + yacute:"łacińska mała litera y z akcentem ostrym", + thorn:"łacińska mała litera thorn", + yuml:"łacińska mała litera y z diarezą", + +// Greek Characters and Symbols + fnof:"łacińska mała litera f z haczykiem\nfunkcja\nfloren", + Alpha:"grecka wielka litera alfa", + Beta:"grecka wielka litera beta", + Gamma:"grecka wielka litera gamma", + Delta:"grecka wielka litera delta", + Epsilon:"grecka wielka litera epsilon", + Zeta:"grecka wielka litera dzeta", + Eta:"grecka wielka litera eta", + Theta:"grecka wielka litera theta", + Iota:"grecka wielka litera jota", + Kappa:"grecka wielka litera kappa", + Lambda:"grecka wielka litera lambda", + Mu:"grecka wielka litera my", + Nu:"grecka wielka litera ni", + Xi:"grecka wielka litera ksi", + Omicron:"grecka wielka litera omikron", + Pi:"grecka wielka litera pi", + Rho:"grecka wielka litera rho", + Sigma:"grecka wielka litera sigma", + Tau:"grecka wielka litera tau", + Upsilon:"grecka wielka litera ipsylon", + Phi:"grecka wielka litera phi", + Chi:"grecka wielka litera chi", + Psi:"grecka wielka litera psi", + Omega:"grecka wielka litera omega", + alpha:"grecka wielka litera alfa", + beta:"grecka mała litera beta", + gamma:"grecka mała litera gamma", + delta:"grecka mała litera delta", + epsilon:"grecka mała litera epsilon", + zeta:"grecka mała litera dzeta", + eta:"grecka mała litera eta", + theta:"grecka mała litera theta", + iota:"grecka mała litera jota", + kappa:"grecka mała litera kappa", + lambda:"grecka mała litera lambda", + mu:"grecka mała litera my", + nu:"grecka mała litera ni", + xi:"grecka mała litera ksi", + omicron:"grecka mała litera omikron", + pi:"grecka mała litera phi", + rho:"grecka mała litera rho", + sigmaf:"grecka mała litera końcowa sigma", + sigma:"grecka mała litera sigma", + tau:"grecka mała litera tau", + upsilon:"grecka mała litera ipsylon", + phi:"grecka mała litera phi", + chi:"grecka mała litera chi", + psi:"grecka mała litera psi", + omega:"grecka mała litera omega", + thetasym:"grecka mała litera theta (symbol)", + upsih:"grecka litera ipsylon z symbolem haczyka", + piv:"grecki symbol pi", + bull:"znacznik podpunktu\nmałe czarne kółko", + hellip:"wielokropek\ntrzy kropki", + prime:"prim\nminuty\nstopy", + Prime:"bis\nsekundy\ncale", + oline:"nadkreślenie\nnadkreślenie tworzące odstęp", + frasl:"kreska ułamkowa", + weierp:"odręcznie pisana wielka litera P\nzbiór potęgowy\nP Weierstrassa", + image:"gotycka wielka litera I\nczęść urojona liczby zespolonej", + real:"gotycka wielka litera R\nsymbol części rzeczywistej liczby zespolonej", + trade:"symbol znaku zastrzeżonego", + alefsym:"znak alef\npoczątkowa liczba porządkowa", + larr:"strzałka w lewo", + uarr:"strzałka w górę", + rarr:"strzałka w prawo", + darr:"strzałka w dół", + harr:"strzałka w lewo i w prawo", + crarr:"strzałka w dół z rogiem w lewo\npowrót karetki", + lArr:"podwójna strzałka w lewo", + uArr:"podwójna strzałka w górę", + rArr:"podwójna strzałka w prawo", + dArr:"podwójna strzałka w dół", + hArr:"podwójna strzałka w lewo i w prawo", + forall:"dla każdego", + part:"pochodna cząstkowa", + exist:"istnieje", + empty:"zbiór pusty\nzbiór miary zero\nśrednica", + nabla:"nabla\nkoneksja", + isin:"należy do", + notin:"nie należy do", + ni:"zawiera", + prod:"iloczyn n elementów\nznak iloczynu", + sum:"suma n elementów", + minus:"znak minus", + lowast:"operator gwiazdka", + radic:"pierwiastek kwadratowy\nznak pierwiastka", + prop:"proporcjonalnie do", + infin:"nieskończoność", + ang:"kąt", + and:"iloczyn logiczny\nklin", + or:"suma logiczna\nlitera v", + cap:"część wspólna zbiorów\nczepek", + cup:"suma zbiorów\nfiliżanka","int":"całka", + there4:"dlatego", + sim:"operator tylda\nzmienia się w granicach\nokoło", + cong:"równa się w przybliżeniu", + asymp:"prawie równa się\nasymptotyczne do", + ne:"nie równa się", + equiv:"takie same jak", + le:"mniejsze niż lub równe", + ge:"większe niż lub równe", + sub:"jest podzbiorem", + sup:"jest nadzbiorem", + nsub:"nie jest podzbiorem", + sube:"jest podzbiorem lub równa się", + supe:"jest nadzbiorem lub równa się", + oplus:"znak plus w okręgu\nsuma bezpośrednia", + otimes:"znak mnożenia w okręgu\niloczyn wektorów", + perp:"odwrócona litera T\nprostopadłe do\nprostopadłe", + sdot:"operator kropka", + lceil:"lewy sufit\nhaczyk górny APL", + rceil:"prawy sufit", + lfloor:"lewa podłoga\nhaczyk dolny APL", + rfloor:"prawa podłoga", + lang:"lewy nawias trójkątny", + rang:"prawy nawias trójkątny", + loz:"romb", + spades:"symbol pik", + clubs:"symbol trefl\nkoniczyna", + hearts:"symbol kier\nserce", + diams:"symbol karo", + OElig:"łacińska ligatura wielkich liter OE", + oelig:"łacińska ligatura małych liter oe", + Scaron:"łacińska wielka litera S z daszkiem odwróconym", + scaron:"łacińska mała litera s z daszkiem odwróconym", + Yuml:"łacińska wielka litera Y z diarezą", + circ:"modyfikator litery - akcent w formie daszka", + tilde:"mała tylda", + ensp:"spacja średnia", + emsp:"spacja długa", + thinsp:"spacja krótka", + zwnj:"symbol rozdzielający o zerowej szerokości", + zwj:"łącznik o zerowej szerokości", + lrm:"znacznik zapisu od lewej do prawej", + rlm:"znacznik zapisu od prawej do lewej", + ndash:"półpauza", + mdash:"pauza", + lsquo:"lewy pojedynczy cudzysłów", + rsquo:"prawy pojedynczy cudzysłów", + sbquo:"pojedynczy cudzysłów dolny", + ldquo:"lewy podwójny cudzysłów", + rdquo:"prawy podwójny cudzysłów", + bdquo:"podwójny cudzysłów dolny", + dagger:"krzyżyk", + Dagger:"podwójny krzyżyk", + permil:"promile", + lsaquo:"pojedynczy lewy cudzysłów trójkątny", + rsaquo:"pojedynczy prawy cudzysłów trójkątny", + euro:"znak euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/AutoSave.js new file mode 100644 index 0000000..0d85628 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Guardar", + "saveSettingLabelOn": "Definir intervalo de gravação automática...", + "saveSettingLabelOff": "Desactivar gravação automática", + "saveSettingdialogTitle": "Gravação automática", + "saveSettingdialogDescription": "Especificar intervalo de gravação automática", + "saveSettingdialogParamName": "Intervalo de gravação automática", + "saveSettingdialogParamLabel": "mín.", + "saveSettingdialogButtonOk": "Definir intervalo", + "saveSettingdialogButtonCancel": "Cancelar", + "saveMessageSuccess": "Guardado às ${0}", + "saveMessageFail": "Falha ao guardar às ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Breadcrumb.js new file mode 100644 index 0000000..e3ebb20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Acções de ${nodeName}", + "selectContents": "Seleccionar conteúdo", + "selectElement": "Seleccionar elemento", + "deleteElement": "Eliminar elemento", + "deleteContents": "Eliminar conteúdo", + "moveStart": "Mover cursor para o início", + "moveEnd": "Mover cursor para o fim" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/CollapsibleToolbar.js new file mode 100644 index 0000000..73deb07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Contrair barra de ferramentas do editor", + "expand": "Expandir barra de ferramentas do editor" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/FindReplace.js new file mode 100644 index 0000000..6ebf27f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Localizar:", + "findTooltip": "Introduzir texto a localizar", + "replaceLabel": "Substituir por:", + "replaceTooltip": "Introduzir texto de substituição", + "findReplace": "Localizar e substituir", + "matchCase": "Correspondência de maiúsculas/minúsculas", + "matchCaseTooltip": "Correspondência de maiúsculas/minúsculas", + "backwards": "Para trás", + "backwardsTooltip": "Procura de texto para trás", + "replaceAllButton": "Substituir tudo", + "replaceAllButtonTooltip": "Substituir todo o texto", + "findButton": "Localizar", + "findButtonTooltip": "Localizar o texto", + "replaceButton": "Substituir", + "replaceButtonTooltip": "Substituir o texto", + "replaceDialogText": "Foram substituídas ${0} ocorrências.", + "eofDialogText": "Última ocorrência ${0}", + "eofDialogTextFind": "localizado", + "eofDialogTextReplace": "substituído" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/InsertAnchor.js new file mode 100644 index 0000000..39f7c2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Inserir âncora", + title: "Propriedades da âncora", + anchor: "Nome:", + text: "Descrição:", + set: "Definir", + cancel: "Cancelar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/InsertEntity.js new file mode 100644 index 0000000..628bd32 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Inserir símbolo" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/LocalImage.js new file mode 100644 index 0000000..8b2a3de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Inserir imagem", + url: "Imagem", + browse: "Pesquisar...", + text: "Descrição", + set: "Inserir", + invalidMessage: "Tipo de ficheiro de imagem não válido", + prePopuTextUrl: "Introduzir um URL de imagem", + prePopuTextBrowse: " ou navegar até um ficheiro local." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/PageBreak.js new file mode 100644 index 0000000..191d70e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Quebra de página" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/PasteFromWord.js new file mode 100644 index 0000000..ef129c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Colar do Word", + "paste": "Colar", + "cancel": "Cancelar", + "instructions": "Cole o conteúdo do Word na caixa de texto abaixo. Após estar satisfeito com o conteúdo a inserir, prima o botão de colagem. Para cancelar a inserção de texto, prima o botão de cancelamento." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Preview.js new file mode 100644 index 0000000..e9f7e64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Pré-visualizar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Save.js new file mode 100644 index 0000000..4e8a379 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Guardar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/ShowBlockNodes.js new file mode 100644 index 0000000..2a30351 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Mostrar elementos do bloco HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Smiley.js new file mode 100644 index 0000000..978713e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/Smiley.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + smiley: "Inserir ícone emotivo", + emoticonSmile: "sorriso", + emoticonLaughing: "riso", + emoticonWink: "piscadela", + emoticonGrin: "gargalhada", + emoticonCool: "com estilo", + emoticonAngry: "zangado", + emoticonHalf: "céptico", + emoticonEyebrow: "desconfiado", + emoticonFrown: "triste", + emoticonShy: "tímido", + emoticonGoofy: "engraçado", + emoticonOops: "ups", + emoticonTongue: "língua de fora", + emoticonIdea: "ideia", + emoticonYes: "sim", + emoticonNo: "não", + emoticonAngel: "anjo", + emoticonCrying: "a chorar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/SpellCheck.js new file mode 100644 index 0000000..39a3ecc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Verificação ortográfica por grupo", + unfound: "Não localizado", + skip: "Ignorar", + skipAll: "Ignorar tudo", + toDic: "Adicionar ao dicionário", + suggestions: "Sugestões", + replace: "Substituir", + replaceWith: "Substituir por", + replaceAll: "Substituir tudo", + cancel: "Cancelar", + msg: "Não forem encontrados erros ortográficos", + iSkip: "Ignorar isto", + iSkipAll: "Ignorar semelhantes", + iMsg: "Sem sugestões de ortografia" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/TableDialog.js new file mode 100644 index 0000000..072b0f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Inserir tabela", + modifyTableTitle: "Modificar tabela", + rows: "Linhas:", + columns: "Colunas:", + align: "Alinhar:", + cellPadding: "Preenchimento de células:", + cellSpacing: "Espaçamento de células:", + tableWidth: "Largura da tabela:", + backgroundColor: "Cor de segundo plano:", + borderColor: "Cor do contorno:", + borderThickness: "Espessura do contorno", + percent: "percentagem", + pixels: "píxeis", + "default": "predefinição", + left: "esquerda", + center: "centro", + right: "direita", + buttonSet: "Definir", // translated elsewhere? + buttonInsert: "Inserir", + buttonCancel: "Cancelar", + + selectTableLabel: "Seleccionar tabela", + insertTableRowBeforeLabel: "Adicionar linha antes", + insertTableRowAfterLabel: "Adicionar linha depois", + insertTableColumnBeforeLabel: "Adicionar coluna antes", + insertTableColumnAfterLabel: "Adicionar coluna depois", + deleteTableRowLabel: "Eliminar linha", + deleteTableColumnLabel: "Eliminar coluna" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/TextColor.js new file mode 100644 index 0000000..d839c4b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Definir", + "cancelButtonText": "Cancelar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/latinEntities.js new file mode 100644 index 0000000..afd76ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt-pt/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"ponto de exclamação invertido", + cent:"símbolo de cêntimo", + pound:"símbolo de libra", + curren:"símbolo monetário", + yen:"símbolo do iene\nsímbolo do yuan", + brvbar:"barra quebrada\nbarra vertical quebrada", + sect:"símbolo de secção", + uml:"trema\ntrema de espaço", + copy:"símbolo de direitos de autor", + ordf:"indicador ordinal feminino", + laquo:"aspas esquerdas em ângulo\naspas esquerdas", + not:"sinal de negação", + shy:"hífen virtual\nhífen discricionário", + reg:"símbolo de marca registada\nsímbolo de marca comercial registada", + macr:"mácron\nmácron de espaço\nlinha sobreposta\nbarra superior de APL", + deg:"sinal de graus", + plusmn:"sinal de adição-subtracção\nsinal de adição ou subtracção", + sup2:"expoente dois\nexpoente algarismo dois\nao quadrado", + sup3:"expoente três\nexpoente algarismo três\nao cubo", + acute:"acento agudo\nacento agudo de espaço", + micro:"sinal de micro", + para:"sinal de parágrafo\nsímbolo de parágrafo", + middot:"ponto central\nvírgula georgina\nGrego - Ponto central", + cedil:"cedilha\ncedilha de espaço", + sup1:"expoente um\nexpoente algarismo um", + ordm:"indicador ordinal masculino", + raquo:"aspas direitas em ângulo\naspas direitas", + frac14:"fracção comum - um quarto\nfracção - um quarto", + frac12:"fracção comum - um meio\nfracção - um meio", + frac34:"fracção comum - três quartos\nfracção - três quartos", + iquest:"ponto de interrogação invertido", + Agrave:"Latim - Letra maiúscula A com acento grave\nLatim - Letra maiúscula A grave", + Aacute:"Latim - Letra maiúscula A com acento agudo", + Acirc:"Latim - Letra maiúscula A com acento circumflexo", + Atilde:"Latim - Letra maiúscula A com til", + Auml:"Latim - Letra maiúscula A com trema", + Aring:"Latim - Letra maiúscula A com círculo por cima\nLatim - Letra maiúscula A com círculo", + AElig:"Latim - Letras maiúsculas AE\nLatim - Letras maiúsculas ligadas AE", + Ccedil:"Latim - Letra maiúscula C com cedilha", + Egrave:"Latim - Letra maiúscula E com acento grave", + Eacute:"Latim - Letra maiúscula E com acento agudo", + Ecirc:"Latim - Letra maiúscula E com acento circunflexo", + Euml:"Latim - Letra maiúscula E com trema", + Igrave:"Latim - Letra maiúscula I com acento grave", + Iacute:"Latim - Letra maiúscula I com acento agudo", + Icirc:"Latim - Letra maiúscula I com acento circunflexo", + Iuml:"Latim - Letra maiúscula I com trema", + ETH:"Latim - Letra maiúscula islandesa ETH", + Ntilde:"Latim - Letra maiúscula N com til", + Ograve:"Latim - Letra maiúscula O com acento grave", + Oacute:"Latim - Letra maiúscula O com acento agudo", + Ocirc:"Latim - Letra maiúscula O com acento circunflexo", + Otilde:"Latim - Letra maiúscula O com til", + Ouml:"Latim - Letra maiúscula O com trema", + times:"sinal de multiplicação", + Oslash:"Latim - Letra maiúscula O cortada por um traço\nLatim - Letra maiúscula O cortada", + Ugrave:"Latim - Letra maiúscula U com acento grave", + Uacute:"Latim - Letra maiúscula U com acento agudo", + Ucirc:"Latim - Letra maiúscula U com acento circunflexo", + Uuml:"Latim - Letra maiúscula U com trema", + Yacute:"Latim - Letra maiúscula Y com acento agudo", + THORN:"Latim - Letra maiúscula islandesa THORN", + szlig:"Latim - Letra minúscula beta\ness-zett alemão", + agrave:"Latim - Letra minúscula a com acento grave\nLatim - Letra minúscula a grave", + aacute:"Latim - Letra minúscula a com acento agudo", + acirc:"Latim - Letra minúscula a com acento circunflexo", + atilde:"Latim - Letra minúscula a com til", + auml:"Latim - Letra minúscula a com trema", + aring:"Latim - Letra minúscula a com círculo por cima\nLatim - Letra minúscula a com círculo", + aelig:"Latim - Letras minúsculas ae\nLatim - Letras minúsculas ligadas ae", + ccedil:"Latim - Letra minúscula c com cedilha", + egrave:"Latim - Letra minúscula e com acento grave", + eacute:"Latim - Letra minúscula e com acento agudo", + ecirc:"Latim - Letra minúscula e com acento circunflexo", + euml:"Latim - Letra minúscula e com trema", + igrave:"Latim - Letra minúscula i com acento grave", + iacute:"Latim - Letra minúscula i com acento agudo", + icirc:"Latim - Letra minúscula i com acento circunflexo", + iuml:"Latim - Letra minúscula i com trema", + eth:"Latim - Letra minúscula islandesa eth", + ntilde:"Latim - Letra minúscula n com til", + ograve:"Latim - Letra minúscula o com acento grave", + oacute:"Latim - Letra minúscula o com acento agudo", + ocirc:"Latim - Letra minúscula o com acento circunflexo", + otilde:"Latim - Letra minúscula o com til", + ouml:"Latim - Letra minúscula o com trema", + divide:"sinal de divisão", + oslash:"Latim - Letra minúscula o cortada por um traço\nLatim - Letra minúscula o cortada", + ugrave:"Latim - Letra minúscula u com acento grave", + uacute:"Latim - Letra minúscula u com acento agudo", + ucirc:"Latim - Letra minúscula u com acento circunflexo", + uuml:"Latim - Letra minúscula u com trema", + yacute:"Latim - Letra minúscula y com acento agudo", + thorn:"Latim - Letra minúscula islandesa thorn", + yuml:"Latim - Letra minúscula y com trema", + +// Greek Characters and Symbols + fnof:"Latim - Letra minúscula f com gancho\nfunção\nflorim", + Alpha:"Grego - Letra maiúscula alfa", + Beta:"Grego - Letra maiúscula beta", + Gamma:"Grego - Letra maiúscula gama", + Delta:"Grego - Letra maiúscula delta", + Epsilon:"Grego - Letra maiúscula épsilon", + Zeta:"Grego - Letra maiúscula zeta", + Eta:"Grego - Letra maiúscula eta", + Theta:"Grego - Letra maiúscula teta", + Iota:"Grego - Letra maiúscula iota", + Kappa:"Grego - Letra maiúscula capa", + Lambda:"Grego - Letra maiúscula lambda", + Mu:"Grego - Letra maiúscula mi", + Nu:"Grego - Letra maiúscula ni", + Xi:"Grego - Letra maiúscula csi", + Omicron:"Grego - Letra maiúscula ómicron", + Pi:"Grego - Letra maiúscula pi", + Rho:"Grego - Letra maiúscula ró", + Sigma:"Grego - Letra maiúscula sigma", + Tau:"Grego - Letra maiúscula tau", + Upsilon:"Grego - Letra maiúscula ípsilon", + Phi:"Grego - Letra maiúscula fi", + Chi:"Grego - Letra maiúscula qui", + Psi:"Grego - Letra maiúscula psi", + Omega:"Grego - Letra maiúscula ómega", + alpha:"Grego - Letra minúscula alfa", + beta:"Grego - Letra minúscula beta", + gamma:"Grego - Letra minúscula gama", + delta:"Grego - Letra minúscula delta", + epsilon:"Grego - Letra minúscula épsilon", + zeta:"Grego - Letra minúscula zeta", + eta:"Grego - Letra minúscula eta", + theta:"Grego - Letra minúscula teta", + iota:"Grego - Letra minúscula iota", + kappa:"Grego - Letra minúscula capa", + lambda:"Grego - Letra minúscula lambda", + mu:"Grego - Letra minúscula mi", + nu:"Grego - Letra minúscula ni", + xi:"Grego - Letra minúscula csi", + omicron:" Grego - Letra minúscula ómicron", + pi:"Grego - Letra minúscula pi", + rho:"Grego - Letra minúscula ró", + sigmaf:" Grego - Letra minúscula sigma final", + sigma:"Grego - Letra minúscula sigma", + tau:"Grego - Letra minúscula tau", + upsilon:"Grego - Letra minúscula ípsilon", + phi:"Grego - Letra minúscula fi", + chi:"Grego - Letra minúscula qui", + psi:" Grego - Letra minúscula psi", + omega:"Grego - Letra minúscula ómega", + thetasym:"Grego - Símbolo da letra minúscula teta", + upsih:"Grego - Ípsilon com símbolo do gancho", + piv:"Grego - Símbolo pi", + bull:"marca\ncírculo pequeno preto", + hellip:"reticências horizontais\ntrês pontos de seguimento", + prime:"apóstrofo\nminutos\npés", + Prime:"apóstrofo duplo\nsegundos\npolegadas", + oline:"linha sobreposta\nlinha sobreposta de espaço", + frasl:"barra de fracção", + weierp:"letra maiúscula P cursiva\nconjunto potência\np de Weierstrass", + image:"letra maiúscula I carregada\nparte imaginária", + real:"letra maiúscula R carregada\nsímbolo da parte real", + trade:"símbolo de marca comercial", + alefsym:"símbolo de elif\nprimeiro cardinal transfinito", + larr:"seta para a esquerda", + uarr:"seta para cima", + rarr:"seta para a direita", + darr:"seta para baixo", + harr:"seta para a esquerda e para a direita", + crarr:"seta para baixo em ângulo recto para a esquerda\nsímbolo de retorno", + lArr:"seta dupla para a esquerda", + uArr:"seta dupla para cima", + rArr:"seta dupla para a direita", + dArr:"seta dupla para baixo", + hArr:"Seta dupla para a esquerda e para a direita", + forall:"para todos", + part:"diferencial parcial", + exist:"existe", + empty:"conjunto vazio\nconjunto nulo\ndiâmetro", + nabla:"nabla\ngradiente", + isin:"pertence a", + notin:"não pertence a", + ni:"contém como membro", + prod:"produto n-ário\nsinal de produto", + sum:"somatório n-ário", + minus:"sinal de subtracção", + lowast:"operador asterisco", + radic:"raiz quadrada\nsinal de radical", + prop:"proporcional a", + infin:"infinito", + ang:"ângulo", + and:"E lógico\ncunha", + or:"OU lógico\nv", + cap:"intersecção\n cap", + cup:"união\n cup","int":"integral", + there4:"para isso", + sim:"operador til\nvaria\nsemelhante a", + cong:"aproximadamente igual a", + asymp:"quase igual a\nassimptótico a", + ne:"não igual a", + equiv:"idêntico a", + le:"menor ou igual a", + ge:"maior ou igual a", + sub:"está contido", + sup:"contém", + nsub:"não está contido em", + sube:"está contido ou igual a", + supe:"contém ou igual a", + oplus:"adição dentro de um círculo\nsoma directa", + otimes:"multiplicação dentro de um círculo\nproduto vectorial", + perp:"tacha em cima\nortogonal a\nperpendicular", + sdot:"operador de ponto", + lceil:"limite superior à esquerda\nAPL upstile", + rceil:"limite superior à direita", + lfloor:"limite inferior à esquerda\nAPL downstile", + rfloor:"limite inferior à direita", + lang:"parêntese esquerdo em ângulo", + rang:"parêntese direito em ângulo", + loz:"losango", + spades:"naipe preto de espadas", + clubs:"naipe preto de paus\ntrevo", + hearts:"naipe preto de copas\ncoração", + diams:"naipe preto de ouros", + OElig:"Latim - Letras maiúsculas ligadas OE", + oelig:"Latim - Letras minúsculas ligadas oe", + Scaron:"Latim - Letra maiúscula S com cáron", + scaron:"Latim - Letra minúscula s com cáron", + Yuml:"Latim - Letra maiúscula Y com trema", + circ:"modificadores - acento circunflexo", + tilde:"til pequeno", + ensp:"espaço simples", + emsp:"espaço duplo", + thinsp:"espaço fino", + zwnj:"não separador de largura nula", + zwj:"separador de largura nula", + lrm:"marca da esquerda para a direita", + rlm:"marca da direita para a esquerda", + ndash:"traço", + mdash:"travessão", + lsquo:"plica esquerda", + rsquo:"plica direita", + sbquo:"plica curva inferior", + ldquo:"aspas esquerdas", + rdquo:"aspas direitas", + bdquo:"aspas curvas inferiores", + dagger:"óbelo", + Dagger:"óbelo duplo", + permil:"sinal de por mil", + lsaquo:"plica esquerda em ângulo", + rsaquo:"plica direita em ângulo", + euro:"símbolo do euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/AutoSave.js new file mode 100644 index 0000000..7b2d8ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/AutoSave.js @@ -0,0 +1,17 @@ +define( +//begin v1.x content +({ + "saveLabel": "Salvar", + "saveSettingLabelOn": "Configurar Intervalo de Salvamento Automático...", + "saveSettingLabelOff": "Desativar Salvamento Automático", + "saveSettingdialogTitle": "Salvamento Automático", + "saveSettingdialogDescription": "Especificar Intervalo de Salvamento Automático", + "saveSettingdialogParamName": "Intervalo de Salvamento Automático", + "saveSettingdialogParamLabel": "mín.", + "saveSettingdialogButtonOk": "Configurar Intervalo", + "saveSettingdialogButtonCancel": "Cancelar", + "saveMessageSuccess": "Salvo em ${0}", + "saveMessageFail": "Falha ao salvar em ${0}" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Blockquote.js new file mode 100644 index 0000000..95bdcda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Blockquote.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "blockquote": "Citação de Bloco" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Breadcrumb.js new file mode 100644 index 0000000..77f163c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} Ações", + "selectContents": "Selecionar Conteúdo", + "selectElement": "Selecionar Elemento", + "deleteElement": "Excluir Elemento", + "deleteContents": "Excluir Conteúdo", + "moveStart": "Mover Cursor para o Início", + "moveEnd": "Mover Cursor para o Final" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/CollapsibleToolbar.js new file mode 100644 index 0000000..6ba443d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/CollapsibleToolbar.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "collapse": "Reduzir Barra de Ferramentas do Editor", + "expand": "Expandir Barra de Ferramentas do Editor" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/FindReplace.js new file mode 100644 index 0000000..a0c1ee1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "Localizar:", + "findTooltip": "Inserir texto a ser localizado", + "replaceLabel": "Substituir por:", + "replaceTooltip": "Inserir texto a ser substituído por", + "findReplace": "Localizar e Substituir", + "matchCase": "Coincidir maiúscula/minúscula", + "matchCaseTooltip": "Coincidir maiúscula/minúscula", + "backwards": "Retroceder", + "backwardsTooltip": "Procurar texto para trás", + "replaceAllButton": "Substituir Todos", + "replaceAllButtonTooltip": "Substituir todo o texto", + "findButton": "Localizar", + "findButtonTooltip": "Localizar o texto", + "replaceButton": "Substituir", + "replaceButtonTooltip": "Substituir o texto", + "replaceDialogText": "${0} ocorrências substituídas.", + "eofDialogText": "Última ocorrência ${0}", + "eofDialogTextFind": "localizado", + "eofDialogTextReplace": "substituído" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/InsertAnchor.js new file mode 100644 index 0000000..1ba2a9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/InsertAnchor.js @@ -0,0 +1,12 @@ +define( +//begin v1.x content +({ + insertAnchor: "Inserir Âncora", + title: "Propriedades de Âncora", + anchor: "Nome:", + text: "Descrição:", + set: "Definir", + cancel: "Cancelar" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/InsertEntity.js new file mode 100644 index 0000000..ca43b94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Inserir Símbolo" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/LocalImage.js new file mode 100644 index 0000000..99002d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/LocalImage.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Inserir imagem", + url: "Imagem", + browse: "Procurar...", + text: "Descrição", + set: "Inserir", + invalidMessage: "Tipo de arquivo de imagem inválido", + prePopuTextUrl: "Insira uma URL de imagem", + prePopuTextBrowse: " ou navegue até um arquivo local." +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/PageBreak.js new file mode 100644 index 0000000..d03057a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Quebra de Página" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/PasteFromWord.js new file mode 100644 index 0000000..bb52185 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/PasteFromWord.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Colar do Word", + "paste": "Colar", + "cancel": "Cancelar", + "instructions": "Cole o conteúdo do Word na caixa de texto a seguir. Quando estiver satisfeito com o conteúdo a ser inserido, pressione o botão para colar. Para interromper a inserção de texto, pressione o botão para cancelar." +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Preview.js new file mode 100644 index 0000000..189d65b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Visualização" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/SafePaste.js new file mode 100644 index 0000000..13fd51a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "A colagem direta está desativada. Cole o conteúdo neste diálogo usando o teclado de navegador padrão ou os controles de colagem do menu. Quando estiver satisfeito com o conteúdo a ser inserido, pressione o botão colar. Para interromper a inserção de conteúdo, pressione o botão cancelar." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Save.js new file mode 100644 index 0000000..f1be7b1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Salvar" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/ShowBlockNodes.js new file mode 100644 index 0000000..2eb0e15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Mostrar Elementos de Bloco HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Smiley.js new file mode 100644 index 0000000..73d191c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/Smiley.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + smiley: "Inserir Emoticon", + emoticonSmile: "sorriso", + emoticonLaughing: "gargalhando", + emoticonWink: "piscando", + emoticonGrin: "sorriso largo", + emoticonCool: "legal", + emoticonAngry: "bravo", + emoticonHalf: "confuso", + emoticonEyebrow: "sarcástico", + emoticonFrown: "sobrancelhas franzidas", + emoticonShy: "envergonhado", + emoticonGoofy: "tonto", + emoticonOops: "surpreso", + emoticonTongue: "mostrando a língua", + emoticonIdea: "ideia", + emoticonYes: "sim", + emoticonNo: "não", + emoticonAngel: "angelical", + emoticonCrying: "chorando", + emoticonHappy: "feliz" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/SpellCheck.js new file mode 100644 index 0000000..d9cb6bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/SpellCheck.js @@ -0,0 +1,20 @@ +define( +//begin v1.x content +({ + widgetLabel: "Verificação Ortográfica em Lote", + unfound: "Não localizado", + skip: "Ignorar", + skipAll: "Ignorar Todos", + toDic: "Incluir no dicionário", + suggestions: "Sugestões", + replace: "Substituir", + replaceWith: "Substituir por", + replaceAll: "Substituir Todos", + cancel: "Cancelar", + msg: "Nenhum erro de ortografia encontrado", + iSkip: "Ignorar isto", + iSkipAll: "Ignorar todos iguais a este", + iMsg: "Nenhuma sugestão de ortografia" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/TableDialog.js new file mode 100644 index 0000000..79a046b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/TableDialog.js @@ -0,0 +1,35 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Inserir Tabela", + modifyTableTitle: "Modificar Tabela", + rows: "Linhas:", + columns: "Colunas:", + align: "Alinhar:", + cellPadding: "Preenchimento de Célula:", + cellSpacing: "Espaçamento de Célula:", + tableWidth: "Largura da Tabela:", + backgroundColor: "Cor do Plano de Fundo:", + borderColor: "Cor da Borda:", + borderThickness: "Grossura da Borda", + percent: "percentual", + pixels: "pixels", + "default": "default", + left: "esquerda", + center: "centro", + right: "direita", + buttonSet: "Configurar", // translated elsewhere? + buttonInsert: "Inserir", + buttonCancel: "Cancelar", + + selectTableLabel: "Selecionar Tabela", + insertTableRowBeforeLabel: "Incluir Linha Antes", + insertTableRowAfterLabel: "Incluir Linha Depois", + insertTableColumnBeforeLabel: "Incluir Coluna Antes", + insertTableColumnAfterLabel: "Incluir Coluna Depois", + deleteTableRowLabel: "Excluir Linha", + deleteTableColumnLabel: "Excluir Coluna" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/TextColor.js new file mode 100644 index 0000000..ee47cc4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/TextColor.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "setButtonText": "Definir", + "cancelButtonText": "Cancelar" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/latinEntities.js new file mode 100644 index 0000000..2ef279c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/pt/latinEntities.js @@ -0,0 +1,260 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"ponto de exclamação invertido", + cent:"símbolo de centavo", + pound:"símbolo de libra", + curren:"símbolo de moeda", + yen:"símbolo de iene\símbolo de yuan", + brvbar:"barra interrompida\nbarra vertical de interrompida", + sect:"símbolo de seção", + uml:"trema\ntrema de espaçamento", + copy:"símbolo de copyright", + ordf:"indicador ordinal feminino", + laquo:"aspas latinas duplas de encerramento\nsímbolo de citação esquerdo", + not:"nenhum símbolo", + shy:"hífen reformatável\nhífen discricionário", + reg:"símbolo de marca registrada\nsímbolo de marca comercial registrada", + macr:"macron\nmacron de espaçamento\nlinha sobreposta\nbarra superior de APL", + deg:"símbolo de grau", + plusmn:"símbolo de mais e menos\nsímbolo de mais ou menos", + sup2:"dois sobrescrito\ndígito dois sobrescrito\nraiz quadrada", + sup3:"três sobrescrito\ndígito três sobrescrito\nraiz cúbica", + acute:"acento agudo\nacento agudo para espaçamento", + micro:"símbolo de micro", + para:"símbolo pé-de-mosca\nsímbolo de parágrafo", + middot:"ponto mediano\nvírgula georgiana\nponto mediano grego", + cedil:"cedilha\ncedilha para espaçamento", + sup1:"um sobrescrito\ndígito um sobrescrito", + ordm:"indicador ordinal masculino", + raquo:"aspas latinas duplas de abertura\nsímbolo de citação direito", + frac14:"fração de um quarto\nfração de um quarto", + frac12:"fração de um meio\nfração de um meio", + frac34:"fração de três quartos\nfração de três quartos", + iquest:"ponto de interrogação invertido\nponto de interrogação invertido", + Agrave:"Letra latina maiúscula A com acento grave\nletra latina maiúscula A com acento grave", + Aacute:"Letra latina maiúscula A com acento agudo", + Acirc:"Letra latina maiúscula A com acento circunflexo", + Atilde:"Letra latina maiúscula A com til", + Auml:"Letra latina maiúscula A com trema", + Aring:"Letra latina maiúscula A com círculo em cima\nLetra latina maiúscula A com círculo", + AElig:"Letra latina maiúscula AE\nLetra latina maiúscula AE", + Ccedil:"Letra latina maiúscula C com cedilha", + Egrave:"Letra latina maiúscula E com acento grave", + Eacute:"Letra latina maiúscula E com acento agudo", + Ecirc:"Letra latina maiúscula E com acento circunflexo", + Euml:"Letra latina maiúscula E com trema", + Igrave:"Letra latina maiúscula I com acento grave", + Iacute:"Letra latina maiúscula I com acento agudo", + Icirc:"Letra latina maiúscula I com acento circunflexo", + Iuml:"Letra latina maiúscula I com trema", + ETH:"Letra latina maiúscula ETH", + Ntilde:"Letra latina maiúscula N com til", + Ograve:"Letra latina maiúscula O com acento grave", + Oacute:"Letra latina maiúscula O com acento agudo", + Ocirc:"Letra latina maiúscula O com acento circunflexo", + Otilde:"Letra latina maiúscula O com til", + Ouml:"Letra latina maiúscula O com trema", + times:"símbolo de multiplicação", + Oslash:"Letra latina maiúscula O traçada\nLetra latina maiúscula O cortada com barra", + Ugrave:"Letra latina maiúscula U com acento grave", + Uacute:"Letra latina maiúscula U com acento agudo", + Ucirc:"Letra latina maiúscula U com acento circunflexo", + Uuml:"Letra latina maiúscula U com trema", + Yacute:"Letra latina maiúscula Y com acento agudo", + THORN:"Letra latina maiúscula THORN", + szlig:"Letra latina minúscula scharfes S\ness-zed", + agrave:"Letra latina minúscula a com acento grave\nletra latina minúscula a com acento grave", + aacute:"Letra latina minúscula a com acento agudo", + acirc:"Letra latina minúscula a com acento circunflexo", + atilde:"Letra latina minúscula a com til", + auml:"Letra latina minúscula a com trema", + aring:"Letra latina minúscula a com círculo em cima\nLetra latina minúscula a com círculo", + aelig:"Letra latina minúscula ae\nLetra latina minúscula ae contraída", + ccedil:"Letra latina minúscula c com cedilha", + egrave:"Letra latina minúscula e com acento grave", + eacute:"Letra latina minúscula e com acento agudo", + ecirc:"Letra latina minúscula e com acento circunflexo", + euml:"Letra latina minúscula e com trema", + igrave:"Letra latina minúscula i com acento grave", + iacute:"Letra latina minúscula i com acento agudo", + icirc:"Letra latina minúscula i com acento circunflexo", + iuml:"Letra latina minúscula i com trema", + eth:"Letra latina minúscula eth", + ntilde:"Letra latina minúscula n com til", + ograve:"Letra latina minúscula o com acento grave", + oacute:"Letra latina minúscula o com acento agudo", + ocirc:"Letra latina minúscula o com acento circunflexo", + otilde:"Letra latina minúscula o com til", + ouml:"Letra latina minúscula o com trema", + divide:"símbolo de divisão", + oslash:"Letra latina minúscula o traçada\nLetra latina minúscula o cortada com barra", + ugrave:"Letra latina minúscula u com acento grave", + uacute:"Letra latina minúscula u com acento agudo", + ucirc:"Letra latina minúscula u com acento circunflexo", + uuml:"Letra latina minúscula u com trema", + yacute:"Letra latina minúscula y com acento agudo", + thorn:"Letra latina minúscula thorn", + yuml:"Letra latina minúscula y com trema", + +// Greek Characters and Symbols + fnof:"Letra latina minúscula f com gancho\nfunção\nflorim", + Alpha:"Letra grega maiúscula alfa", + Beta:"Letra grega maiúscula beta", + Gamma:"Letra grega maiúscula gama", + Delta:"Letra grega maiúscula delta", + Epsilon:"Letra grega maiúscula épsilon", + Zeta:"Letra grega maiúscula zeta", + Eta:"Letra grega maiúscula eta", + Theta:"Letra grega maiúscula teta", + Iota:"Letra grega maiúscula iota", + Kappa:"Letra grega maiúscula capa", + Lambda:"Letra grega maiúscula lambda", + Mu:"Letra grega maiúscula miu", + Nu:"Letra grega maiúscula nu", + Xi:"Letra grega maiúscula ksi", + Omicron:"Letra grega maiúscula ómicron", + Pi:"Letra grega maiúscula pi", + Rho:"Letra grega maiúscula rô", + Sigma:"Letra grega maiúscula sigma", + Tau:"Letra grega maiúscula tau", + Upsilon:"Letra grega maiúscula upsilon", + Phi:"Letra grega maiúscula fi", + Chi:"Letra grega maiúscula chi", + Psi:"Letra grega maiúscula psi", + Omega:"Letra grega maiúscula ômega", + alpha:"Letra grega minúscula alfa", + beta:"Letra grega minúscula beta", + gamma:"Letra grega minúscula gama", + delta:"Letra grega minúscula delta", + epsilon:"Letra grega minúscula épsilon", + zeta:"Letra grega minúscula zeta", + eta:"Letra grega minúscula eta", + theta:"Letra grega minúscula teta", + iota:"Letra grega minúscula iota", + kappa:"Letra grega minúscula capa", + lambda:"Letra grega minúscula lambda", + mu:"Letra grega minúscula miu", + nu:"Letra grega minúscula nu", + xi:"Letra grega minúscula ksi", + omicron:"Letra grega minúscula ómicron", + pi:"Letra grega minúscula pi", + rho:"Letra grega minúscula rô", + sigmaf:"Letra grega minúscula sigma final", + sigma:"Letra grega minúscula sigma", + tau:"Letra grega minúscula tau", + upsilon:"Letra grega minúscula upsilon", + phi:"Letra grega minúscula fi", + chi:"Letra grega minúscula chi", + psi:"Letra grega minúscula psi", + omega:"Letra grega minúscula ômega", + thetasym:"Símbolo da letra grega minúscula teta", + upsih:"Símbolo da letra grega upsilon com gancho", + piv:"Símbolo grego pi", + bull:"marcador\npequeno círculo preto", + hellip:"reticências horizontais\ntrês pontos", + prime:"linha simples\nminutos\npés", + Prime:"linha dupla\nsegundos\npolegadas", + oline:"linha sobreposta\nlinha superior para espaçamento", + frasl:"barra de fração", + weierp:"P maiúsculo cursivo\npotência\np de Weierstrass", + image:"letra I maiúscula gótica\nparte imaginária", + real:"letra R maiúscula gótica\nsímbolo da parte real", + trade:"símbolo de marca registrada", + alefsym:"símbolo alef\nprimeiro cardinal transfinito", + larr:"seta para esquerda", + uarr:"seta para cima", + rarr:"seta para direita", + darr:"seta para baixo", + harr:"seta para esquerda e direita", + crarr:"seta para baixo com curva para esquerda\nretorno de texto", + lArr:"seta dupla para esquerda", + uArr:"seta dupla para cima", + rArr:"seta dupla para direita", + dArr:"seta dupla para baixo", + hArr:"seta dupla para esquerda e direita", + forall:"para todos", + part:"diferença parcial", + exist:"existe pelo menos", + empty:"conjunto vazio\nconjunto nulo\ndiâmetro", + nabla:"nabla\ngradiente", + isin:"pertence a", + notin:"não pertence a", + ni:"contém", + prod:"produto de n elementos\nsímbolo de produto", + sum:"somatório de n elementos", + minus:"sinal de menos", + lowast:"asterisco", + radic:"raiz quadrada\nsímbolo de radical", + prop:"proporcional a", + infin:"infinito", + ang:"ângulo", + and:"'e' lógico\nwedge", + or:"'ou' lógico\nvee", + cap:"intersecção\nintersecção", + cup:"união\nreunião","int":"integral", + there4:"para isso", + sim:"operador til\nvaria com\nigual a", + cong:"aproximadamente igual a", + asymp:"quase igual a\nassintótico a", + ne:"diferente de", + equiv:"idêntico a", + le:"menor ou igual a", + ge:"maior ou igual a", + sub:"está contido em", + sup:"contém", + nsub:"não está contido em", + sube:"está contido ou é igual a", + supe:"contém ou é igual a", + oplus:"círculo mais\nsoma direta", + otimes:"símbolo de vezes circulado\nproduto dos vetores", + perp:"up tack\nortogonal a\nperpendicular", + sdot:"ponto de multiplicação", + lceil:"chave em L com o canto voltado para cima à esquerda\nAPL com o canto voltado para cima", + rceil:"chave em L com o canto voltado para cima à direita", + lfloor:"chave em L com o canto voltado para baixo à esquerda\nAPL com o canto voltado para baixo", + rfloor:"chave em L com o canto voltado para baixo à direita", + lang:"sinal de maior e menor para esquerda", + rang:"sinal de maior e menor para direita", + loz:"losango", + spades:"símbolo de espadas", + clubs:"símbolo de paus\ntrevo", + hearts:"coração negro\nsímbolo de copas", + diams:"diamante negro", + OElig:"Ligação latina maiúscula OE", + oelig:"Ligação latina minúscula oe", + Scaron:"Letra latina maiúscula S com caron", + scaron:"Letra latina minúscula s com caron", + Yuml:"Letra latina maiúscula Y com trema", + circ:"Acento circunflexo", + tilde:"til pequeno", + ensp:"espaço simples", + emsp:"espaço duplo", + thinsp:"espaço estreito", + zwnj:"separador de largura zero", + zwj:"conector de largura zero", + lrm:"marca da esquerda para a direita", + rlm:"marca da direita para a esquerda", + ndash:"traço", + mdash:"travessão", + lsquo:"aspas simples à esquerda", + rsquo:"aspas simples à direita", + sbquo:"aspas simples inferior à direita", + ldquo:"aspas duplas inferior à esquerda", + rdquo:"aspas duplas à direita", + bdquo:"aspas duplas inferiores à direita", + dagger:"cruz", + Dagger:"cruz dupla", + permil:"símbolo por mil", + lsaquo:"aspa latina de encerramento", + rsaquo:"aspa latina de abertura", + euro:"símbolo de euro" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/AutoSave.js new file mode 100644 index 0000000..80fdf56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Salvare", + "saveSettingLabelOn": "Setare interval auto-salvare...", + "saveSettingLabelOff": "Oprire auto-salvare", + "saveSettingdialogTitle": "Auto-salvare", + "saveSettingdialogDescription": "Specificare interval auto-salvare", + "saveSettingdialogParamName": "Interval auto-salvare", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Setare interval", + "saveSettingdialogButtonCancel": "Anulare", + "saveMessageSuccess": "Salvat la ${0}", + "saveMessageFail": "A eşuat să salveze la${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Breadcrumb.js new file mode 100644 index 0000000..fe945b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Acţiuni ${nodeName}", + "selectContents": "Selectare conţinut", + "selectElement": "Selectare element", + "deleteElement": "Ştergere element", + "deleteContents": "Ştergere conţinut", + "moveStart": "Mutare cursor la început", + "moveEnd": "Mutare cursor la sfârşit" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/CollapsibleToolbar.js new file mode 100644 index 0000000..e9a06a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Restrângere bară de unelte Editor", + "expand": "Expandare bară de unelte Editor" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/FindReplace.js new file mode 100644 index 0000000..bcea70b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Găsire:", + "findTooltip": "Introduceţi textul de găsit", + "replaceLabel": "Înlocuire cu:", + "replaceTooltip": "Introduceţi textul cu care se înlocuieşte", + "findReplace": "Găsire şi înlocuire", + "matchCase": "Potrivire majuscule", + "matchCaseTooltip": "Potrivire majuscule", + "backwards": "Înapoi", + "backwardsTooltip": "Căutaţi înapoi pentru text", + "replaceAllButton": "Înlocuire toate", + "replaceAllButtonTooltip": "Înlocuiţi tot textul", + "findButton": "Găsire", + "findButtonTooltip": "Găsiţi textul", + "replaceButton": "Înlocuire", + "replaceButtonTooltip": "Înlocuiţi textul", + "replaceDialogText": "Au fost înlocuite ${0} apariţii.", + "eofDialogText": "Ultima apariţie ${0}", + "eofDialogTextFind": "găsită", + "eofDialogTextReplace": "înlocuită" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/InsertAnchor.js new file mode 100644 index 0000000..2525185 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Inserare ancoră", + title: "Proprietăţi ancoră", + anchor: "Nume:", + text: "Descriere:", + set: "Setare", + cancel: "Anulare" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/InsertEntity.js new file mode 100644 index 0000000..b2cbe02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Inserare simbol" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/LocalImage.js new file mode 100644 index 0000000..3c55be0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Inserare imagine", + url: "Imagine", + browse: "Răsfoire...", + text: "Descriere", + set: "Inserare", + invalidMessage: "Tip de fişier imagine nevalid", + prePopuTextUrl: "Introduceţi un URL de imagine", + prePopuTextBrowse: "sau răsfoiţi la un fişier local." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/PageBreak.js new file mode 100644 index 0000000..a61ffbf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Întrerupere pagină" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/PasteFromWord.js new file mode 100644 index 0000000..04ec6b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Lipire din Word", + "paste": "Lipire", + "cancel": "Anulare", + "instructions": "Lipiţi conţinut din Word în caeta de text de mai jos. După ce sunteţi mulţumit de conţinutul de inserat, apăsaţi butonul Lipire. Pentru a renunţa la inserarea textului, apăsaţi butonul Anulare." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Preview.js new file mode 100644 index 0000000..ab110ab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Previzualizare" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/SafePaste.js new file mode 100644 index 0000000..92215f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Lipirea directă este dezactivată. Vă rugăm lipiţi conţinutul în acest dialog folosind controalele standard de tastatură sau meniu pentru lipire. " +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Save.js new file mode 100644 index 0000000..43190f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Salvare" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/ShowBlockNodes.js new file mode 100644 index 0000000..ea7f475 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Afişare bloc elemente HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Smiley.js new file mode 100644 index 0000000..20b1f32 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Inserare emoticoane", + emoticonSmile: "zâmbet", + emoticonLaughing: "râs", + emoticonWink: "face cu ochiul", + emoticonGrin: "rânjet", + emoticonCool: "calm", + emoticonAngry: "furios", + emoticonHalf: "jumătate", + emoticonEyebrow: "sprânceană", + emoticonFrown: "posac", + emoticonShy: "timid", + emoticonGoofy: "tont", + emoticonOops: "vai", + emoticonTongue: "limbă", + emoticonIdea: "idee", + emoticonYes: "da", + emoticonNo: "nu", + emoticonAngel: "înger", + emoticonCrying: "plâns", + emoticonHappy: "fericit" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/SpellCheck.js new file mode 100644 index 0000000..3d1245d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Verificare ortografică lot", + unfound: "Nu a fost găsit", + skip: "Salt", + skipAll: "Salt toate", + toDic: "Adăugare la dicţionar", + suggestions: "Sugestii", + replace: "Înlocuire", + replaceWith: "Înlocuire cu", + replaceAll: "Înlocuire toate", + cancel: "Anulare", + msg: "Nicio greşeală de verificare ortografică nu a fost găsită.", + iSkip: "Salt peste acesta", + iSkipAll: "Salt peste toate acestea", + iMsg: "Nicio sugestie de verificare ortografică" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/TableDialog.js new file mode 100644 index 0000000..1c26f55 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/TableDialog.js @@ -0,0 +1,36 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Inserare tabel", + modifyTableTitle: "Modificare tabel", + rows: "Rânduri:", + columns: "Coloane:", + align: "Aliniere:", + cellPadding: "Padding celulă:", + cellSpacing: "Spaţiere celulă:", + tableWidth: "Lăţime tabelă:", + backgroundColor: "Culoare de fundal:", + borderColor: "Coloare de bordură:", + borderThickness: "Grosime de bordură:", + percent: "procent", + pixels: "pixeli", + "default": "implicit", + left: "stânga", + center: "centru", + right: "dreapta", + buttonSet: "Setare", // translated elsewhere? + buttonInsert: "Inserare", + buttonCancel: "Anulare", + + selectTableLabel: "Selectare tabelă", + insertTableRowBeforeLabel: "Adăugare rând înainte", + insertTableRowAfterLabel: "Adăugare rând după", + insertTableColumnBeforeLabel: "Adăugare coloană înainte", + insertTableColumnAfterLabel: "Adăugare coloană după", + deleteTableRowLabel: "Ştergere rând", + deleteTableColumnLabel: "Ştergere coloană" +}) + + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/TextColor.js new file mode 100644 index 0000000..c31e4c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Setare", + "cancelButtonText": "Anulare" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/latinEntities.js new file mode 100644 index 0000000..0d0b654 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ro/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"semnul exclamării inversat", + cent:"semnul cent", + pound:"semnul liră sterlină", + curren:"semnul monedă", + yen:"semnul yen\nsemnul nyuan", + brvbar:"bară ruptă\nbară verticală ruptă", + sect:"semn secţiune", + uml:"tremă\ntremă de spaţiere", + copy:"semnul copyright", + ordf:"indicator ordinal feminin", + laquo:"ghilimele unghi dublu arătând spre stânga\nghilimele arătând spre stânga", + not:"semn nu", + shy:"liniuţă de despărţire soft\nliniuţă de despărţire discreţionară", + reg:"semn de înregistrare\nsemn de marcă înregistrată", + macr:"macron\nmacron de spaţiere\nlinie deasupra\nAPL linie deasupra", + deg:"semn de grade", + plusmn:"semn plus-minus\nsemn plus-sau-minus", + sup2:"scriere indice superior doi\nscriere indice superior cifră doi\npătrat", + sup3:"scriere indice superior trei\nscriere indice superior cifră trei\ncub", + acute:"accent acut\nspaţiere acută", + micro:"semn micro", + para:"semn pilcrow\nsemn paragraf", + middot:"punct de mijloc\nvirgulă georgiană\npunct de mijloc grec", + cedil:"sedila\nsedila de spaţiere", + sup1:"scriere indice superior unu\nscriere indice superior cifră unu", + ordm:"indicator ordinal masculin", + raquo:"ghilimele unghi dublu arătând spre dreapta\nghilimele arătând spre dreapta", + frac14:"fracţie ordinară un sfert\nfracţie un sfert", + frac12:"fracţie ordinară o jumătate\nfracţie o jumătate", + frac34:"fracţie ordinară trei sferturi\nfracţie trei sferturi", + iquest:"semn de întrebare inversat\nsemn de întrebare răsturnat", + Agrave:"Literă mare latină A cu accent grav\nLiteră mare latină A grav", + Aacute:"Literă mare latină A cu accent acut", + Acirc:"Literă mare latină A cu circumflex", + Atilde:"Literă mare latină A cu tilda", + Auml:"Literă mare latină A cu tremă", + Aring:"Literă mare latină A cu inel deasupra\nLiteră mare latină A cu inel", + AElig:"Literă mare latină AE\nLigatură mare latină AE", + Ccedil:"Literă mare latină C cu sedilă", + Egrave:"Literă mare latină E cu accent grav", + Eacute:"Literă mare latină E cu accent acut", + Ecirc:"Literă mare latină E cu circumflex", + Euml:"Literă mare latină E cu tremă", + Igrave:"Literă mare latină I cu accent grav", + Iacute:"Literă mare latină I cu accent acut", + Icirc:"Literă mare latină I cu circumflex", + Iuml:"Literă mare latină I cu tremă", + ETH:"Literă mare latină ETH", + Ntilde:"Literă mare latină N cu tilda", + Ograve:"Literă mare latină O cu accent grav", + Oacute:"Literă mare latină O cu accent acut", + Ocirc:"Literă mare latină O cu circumflex", + Otilde:"Literă mare latină O cu tilda", + Ouml:"Literă mare latină O cu tremă", + times:"semn de înmulţire", + Oslash:"Literă latină majusculă O cu linie de taiere\nLiteră latină majusculă O cu o linie oblică", + Ugrave:"Literă mare latină U cu accent grav", + Uacute:"Literă mare latină U cu accent acut", + Ucirc:"Literă mare latină U cu circumflex", + Uuml:"Literă mare latină U cu tremă", + Yacute:"Literă mare latină Y cu accent acut", + THORN:"Literă mare latină THORN", + szlig:"Literă latină mică s diez\ness-zed", + agrave:"Literă latină mică a cu accent grav\nLiteră latină mică a grav", + aacute:"Literă latină mică a cu accent acut", + acirc:"Literă latină mică a cu circumflex", + atilde:"Literă latină mică a cu tilda", + auml:"Literă latină mică a cu tremă", + aring:"Literă latină mică a cu inel deasupra\nLiteră latină mică a cu inel", + aelig:"Literă latină mică ae\nLigatură latină mică ae", + ccedil:"Literă latină mică c cu sedilă", + egrave:"Literă latină mică e cu accent grav", + eacute:"Literă latină mică e cu accent acut", + ecirc:"Literă latină mică e cu circumflex", + euml:"Literă latină mică e cu tremă", + igrave:"Literă latină mică i cu accent grav", + iacute:"Literă latină mică i cu accent acut", + icirc:"Literă latină mică i cu circumflex", + iuml:"Literă latină mică i cu tremă", + eth:"Literă latină mică eth", + ntilde:"Literă latină mică n cu tilda", + ograve:"Literă latină mică o cu accent grav", + oacute:"Literă latină mică o cu accent acut", + ocirc:"Literă latină mică o cu circumflex", + otilde:"Literă latină mică o cu tilda", + ouml:"Literă latină mică o cu tremă", + divide:"semn împărţire", + oslash:"Literă latină mică o cu linie de taiere\nLiteră latină mică o cu o linie oblică", + ugrave:"Literă latină mică u cu accent grav", + uacute:"Literă latină mică u cu accent acut", + ucirc:"Literă latină mică u cu circumflex", + uuml:"Literă latină mică u cu tremă", + yacute:"Literă latină mică y cu accent acut", + thorn:"Literă latină mică thorn", + yuml:"Literă latină mică y cu tremă", + +// Greek Characters and Symbols + fnof:"Literă latină mică f cu cârlig\nfuncţie\nflorin", + Alpha:"Literă greacă mare alfa", + Beta:"Literă greacă mare beta", + Gamma:"Literă greacă mare gamma", + Delta:"Literă greacă mare delta", + Epsilon:"Literă greacă mare epsilon", + Zeta:"Literă greacă mare zeta", + Eta:"Literă greacă mare eta", + Theta:"Literă greacă mare theta", + Iota:"Literă greacă mare iota", + Kappa:"Literă greacă mare kappa", + Lambda:"Literă greacă mare lambda", + Mu:"Literă greacă mare miu", + Nu:"Literă greacă mare niu", + Xi:"Literă greacă mare xi", + Omicron:"Literă greacă mare omicron", + Pi:"Literă greacă mare pi", + Rho:"Literă greacă mare rho", + Sigma:"Literă greacă mare sigma", + Tau:"Literă greacă mare tau", + Upsilon:"Literă greacă mare upsilon", + Phi:"Literă greacă mare phi", + Chi:"Literă greacă mare chi", + Psi:"Literă greacă mare psi", + Omega:"Literă greacă mare omega", + alpha:"Literă greacă mică alfa", + beta:"Literă greacă mică beta", + gamma:"Literă greacă mică gamma", + delta:"Literă greacă mică delta", + epsilon:"Literă greacă mică epsilon", + zeta:"Literă greacă mică zeta", + eta:"Literă greacă mică eta", + theta:"Literă greacă mică theta", + iota:"Literă greacă mică iota", + kappa:"Literă greacă mică kappa", + lambda:"Literă greacă mică lambda", + mu:"Literă greacă mică miu", + nu:"Literă greacă mică niu", + xi:"Literă greacă mică xi", + omicron:"Literă greacă mică omicron", + pi:"Literă greacă mică pi", + rho:"Literă greacă mică rho", + sigmaf:"Literă greacă mică sigma final", + sigma:"Literă greacă mică sigma", + tau:"Literă greacă mică tau", + upsilon:"Literă greacă mică upsilon", + phi:"Literă greacă mică phi", + chi:"Literă greacă mică chi", + psi:"Literă greacă mică psi", + omega:"Literă greacă mică omega", + thetasym:"Literă greacă mică simbol theta", + upsih:"Simbolul grec upsilon cu cârlig", + piv:"Simbolul grec pi", + bull:"bullet\ncerc mic negru", + hellip:"elipse orizontale\ntrei puncte precursoare", + prime:"prim\nminute\npicioare", + Prime:"prim dublu\nsecunde\nţoli", + oline:"linie deasupra\nlinie de spaţiere deasupra", + frasl:"linie fracţie", + weierp:"script capital P\nputere\np Weierstrass", + image:"I majusculă înnegrită\nparte imaginară", + real:"R majusculă înnegrită\nsimbol parte reală", + trade:"semn marcă înregistrată", + alefsym:"simbol alef\nprimul cardinal transfinit", + larr:"săgeată spre stânga", + uarr:"săgeata în sus", + rarr:"săgeată spre dreapta", + darr:"săgeata în jos", + harr:"săgeata stânga dreapta", + crarr:"săgeata în jos cu colţ spre stânga", + lArr:"săgeata dublă spre stânga", + uArr:"săgeata dublă în sus", + rArr:"săgeata dublă spre dreapta", + dArr:"săgeata dublă în jos", + hArr:"săgeata dublă stânga dreapta", + forall:"pentru toate", + part:"diferenţiale parţiale", + exist:"Există", + empty:"set gol\nset null\ndiametru", + nabla:"nabla\ndiferenţa înapoi", + isin:"element al", + notin:"nu este un element al", + ni:"conţine ca membru", + prod:"n produs\nsemnul produs", + sum:"n suma", + minus:"semnul minus", + lowast:"operatorul asterisk", + radic:"rădăcină pătrată\nsemnul radical", + prop:"proporţional cu", + infin:"infinit", + ang:"unghi", + and:"şi logic\npană", + or:"sau logic\nV", + cap:"intersecţie\ncăciulă", + cup:"reuniune\ncupă","int":"integral", + there4:"de aceea", + sim:"operator tilda\nvariază cu\nsimilar cu", + cong:"aproximativ egal cu", + asymp:"aproape egal cu\nasimptotic la", + ne:"nu este egal cu", + equiv:"identic cu", + le:"mai mic sau egal cu", + ge:"mai mare sau egal cu", + sub:"subset al", + sup:"superset al", + nsub:"nu este un subset al", + sube:"subset al sau egal cu", + supe:"superset al sau egal cu", + oplus:"plus încercuit\nsumă directă", + otimes:"multiplicator încercuit\nprodus vectorial", + perp:"up tack\northogonal to\nperpendicular", + sdot:"operator punct", + lceil:"plafon stânga\nAPL upstile", + rceil:"plafon dreapta", + lfloor:"podea stânga\nAPL downstile", + rfloor:"podea dreapta", + lang:"paranteză unghiulară spre stânga", + rang:"paranteză unghiulară spre dreapta", + loz:"romb", + spades:"treflă neagră", + clubs:"pică neagră\nshamrock", + hearts:"inimă neagră\nvalentine", + diams:"romb negru", + OElig:"Ligatură mare latină OE", + oelig:"Ligatură mică latină oe", + Scaron:"Literă mare latină S cu caron", + scaron:"Literă mică latină s cu caron", + Yuml:"Literă mare latină Y cu tremă", + circ:"accent circumflex modificator de literă", + tilde:"tilda mică", + ensp:"spaţiu en", + emsp:"spaţiu em", + thinsp:"spaţiu îngust", + zwnj:"zero fără unificator", + zwj:"zero cu unificator", + lrm:"semn stânga spre dreapta", + rlm:"semn dreapta spre stânga", + ndash:"linie en", + mdash:"linie em", + lsquo:"ghilimele simple stânga", + rsquo:"ghilimele simple dreapta", + sbquo:"single low-9 semn de citare", + ldquo:"ghilimele duble stânga", + rdquo:"ghilimele duble dreapta", + bdquo:"double low-9 semn de citare", + dagger:"cruce", + Dagger:"cruce dublă", + permil:"semn per mie", + lsaquo:"ghilimele singure unghiulare spre stânga", + rsaquo:"ghilimele singure unghiulare spre dreapta", + euro:"semn euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/AutoSave.js new file mode 100644 index 0000000..3a4ff60 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Сохранить", + "saveSettingLabelOn": "Задать интервал автосохранения...", + "saveSettingLabelOff": "Выключить автосохранение", + "saveSettingdialogTitle": "Автосохранение", + "saveSettingdialogDescription": "Укажите интервал автосохранения", + "saveSettingdialogParamName": "Интервал автосохранения", + "saveSettingdialogParamLabel": "мин", + "saveSettingdialogButtonOk": "Задать интервал", + "saveSettingdialogButtonCancel": "Отменить", + "saveMessageSuccess": "Сохранено ${0}", + "saveMessageFail": "Не удалось сохранить ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Blockquote.js new file mode 100644 index 0000000..4e4fb24 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Блок цитат" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Breadcrumb.js new file mode 100644 index 0000000..e8eab41 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName}: действия", + "selectContents": "Выбрать содержимое", + "selectElement": "Выбрать элемент", + "deleteElement": "Удалить элемент", + "deleteContents": "Удалить содержимое", + "moveStart": "Поместить курсор в начало", + "moveEnd": "Поместить курсор в конец" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/CollapsibleToolbar.js new file mode 100644 index 0000000..ac38dcd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Свернуть панель редактирования", + "expand": "Развернуть панель редактирования" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/FindReplace.js new file mode 100644 index 0000000..c9f07d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Найти:", + "findTooltip": "Введите текст для поиска", + "replaceLabel": "Заменить на:", + "replaceTooltip": "Введите текст для замены", + "findReplace": "Найти и заменить", + "matchCase": "С учетом регистра", + "matchCaseTooltip": "С учетом регистра", + "backwards": "Назад", + "backwardsTooltip": "Поиск текста в обратном направлении", + "replaceAllButton": "Заменить все", + "replaceAllButtonTooltip": "Заменить весь текст", + "findButton": "Найти", + "findButtonTooltip": "Найти текст", + "replaceButton": "Заменить", + "replaceButtonTooltip": "Заменить текст", + "replaceDialogText": "Заменено ${0} вхождений.", + "eofDialogText": "Последнее вхождение ${0}", + "eofDialogTextFind": "найдено", + "eofDialogTextReplace": "заменено" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/InsertAnchor.js new file mode 100644 index 0000000..af7049d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Вставить метку", + title: "Свойства метки", + anchor: "Имя:", + text: "Описание:", + set: "Задать", + cancel: "Отменить" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/InsertEntity.js new file mode 100644 index 0000000..7b84bd7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Вставить символ" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/LocalImage.js new file mode 100644 index 0000000..0cd3b4a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Вставить изображение", + url: "Изображение", + browse: "Обзор...", + text: "Описание", + set: "Вставить", + invalidMessage: "Недопустимый тип файла изображения", + prePopuTextUrl: "Введите URL изображения", + prePopuTextBrowse: " или выберите локальный файл." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/PageBreak.js new file mode 100644 index 0000000..db902d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Разделитель страниц" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/PasteFromWord.js new file mode 100644 index 0000000..0516494 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Вставить из Word", + "paste": "Вставить", + "cancel": "Отменить", + "instructions": "Вставить содержимое из Word в текстовое поле ниже. Когда выберите содержимое для вставки, нажмите кнопку Вставить. Для отмены вставки текста нажмите кнопку Отмена." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Preview.js new file mode 100644 index 0000000..9a6d321 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Предварительный просмотр" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/SafePaste.js new file mode 100644 index 0000000..84575b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Прямая вставка отключена. Вставьте содержимое в этот диалог при помощи стандартной клавиатуры браузера или управляющих команд вставки в меню. Когда выберите содержимое для вставки, нажмите кнопку Вставить. Для отмены вставки содержимого нажмите кнопку Отмена." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Save.js new file mode 100644 index 0000000..7b6387b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Сохранить" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/ShowBlockNodes.js new file mode 100644 index 0000000..ce18788 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Показать элементы блока HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Smiley.js new file mode 100644 index 0000000..f32aa59 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Вставить значок настроения", + emoticonSmile: "улыбка", + emoticonLaughing: "смех", + emoticonWink: "подмигивание", + emoticonGrin: "усмешка", + emoticonCool: "здорово", + emoticonAngry: "злость", + emoticonHalf: "половина", + emoticonEyebrow: "удивление", + emoticonFrown: "хмурый вид", + emoticonShy: "застенчивость", + emoticonGoofy: "глупый", + emoticonOops: "уупс", + emoticonTongue: "насмешка", + emoticonIdea: "есть идея", + emoticonYes: "да", + emoticonNo: "нет", + emoticonAngel: "ангел", + emoticonCrying: "плачь", + emoticonHappy: "счастлив" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/SpellCheck.js new file mode 100644 index 0000000..a95cfa9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Проверка орфографии", + unfound: "Не найдено", + skip: "Пропустить", + skipAll: "Пропустить все", + toDic: "Добавить в словарь", + suggestions: "Варианты", + replace: "Заменить", + replaceWith: "Заменить на", + replaceAll: "Заменить все", + cancel: "Отменить", + msg: "Ошибок не найдено", + iSkip: "Пропустить это", + iSkipAll: "Пропусть все схожие", + iMsg: "Нет вариантов написания" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/TableDialog.js new file mode 100644 index 0000000..d43894e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Вставить таблицу", + modifyTableTitle: "Изменить таблицу", + rows: "Строк:", + columns: "Столбцов:", + align: "Выровнять:", + cellPadding: "Отступ внутри ячеек:", + cellSpacing: "Расстояние между ячейками:", + tableWidth: "Ширина таблицы:", + backgroundColor: "Цвет фона:", + borderColor: "Цвет рамки:", + borderThickness: "Толщина рамки", + percent: "процентов", + pixels: "пикселов", + "default": "по умолчанию", + left: "по левому краю", + center: "по центру", + right: "по правому краю", + buttonSet: "Задать", // translated elsewhere? + buttonInsert: "Вставить", + buttonCancel: "Отмена", + + selectTableLabel: "Выбрать таблицу", + insertTableRowBeforeLabel: "Добавить строку перед", + insertTableRowAfterLabel: "Добавить строку после", + insertTableColumnBeforeLabel: "Добавить столбец перед", + insertTableColumnAfterLabel: "Добавить столбец после", + deleteTableRowLabel: "Удалить строку", + deleteTableColumnLabel: "Удалить столбец" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/TextColor.js new file mode 100644 index 0000000..2404dbf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Задать", + "cancelButtonText": "Отменить" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/latinEntities.js new file mode 100644 index 0000000..94ccd07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/ru/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"инвертированный восклицательный знак", + cent:"символ цента", + pound:"символ фунта стерлингов", + curren:"символ денежной единицы", + yen:"символ иены\nсимвол юаня", + brvbar:"прерывистая черта\nвертикальная прерывистая черта", + sect:"символ раздела", + uml:"трема\nтрема с интервалом", + copy:"символ авторских прав", + ordf:"индикатор женского рода", + laquo:"левые двойный угловые кавычки\nлевые кавычки", + not:"знак отрицания", + shy:"мягкий перенос\nвозможный перенос", + reg:"символ Зарегистрирован\nсимвол зарегистрированного товарного знака", + macr:"знак долготы\nзнак долготы с интервалом\nверхняя черта\nнадчеркивание APL", + deg:"символ градусов", + plusmn:"символ плюс-минус\nсимвол плюса или минуса", + sup2:"верхний индекс два\nверхний индекс с цифрой два\nвозведение в квадрат", + sup3:"верхний индекс три\nверхний индекс с цифрой три\nвозведение в куб", + acute:"знак акут\nакут с интервалом", + micro:"знак микро", + para:"символ абзаца\nсимвол параграфа", + middot:"средняя точка\nзапятая в грузинском\nсредняя точка в греческом", + cedil:"седиль\nседиль с интервалом", + sup1:"верхний индекс один\nверхний индекс с цифрой один", + ordm:"индикатор мужского рода", + raquo:"правая двойная угловая кавычка\nправая кавычка", + frac14:"дробь одна четвертая\nодна четверть", + frac12:"дробь одна вторая\nодна вторая", + frac34:"дробь три четверти\nтри четверти", + iquest:"инвертированный знак вопроса\nперевернутый знак вопроса", + Agrave:"латинская прописная буква A с грависом", + Aacute:"латинская прописная буква A с акутом", + Acirc:"латинская прописная буква A с циркумфлексом", + Atilde:"латинская прописная буква A с тильдой", + Auml:"латинская прописная буква A с тремой", + Aring:"латинская прописная буква A с кружком сверху\nлатинская прописная буква A с кружком", + AElig:"латинская прописная буква AE\nлатинская прописная лигатура AE", + Ccedil:"латинская прописная буква C с седилью", + Egrave:"латинская прописная буква E с грависом", + Eacute:"латинская прописная буква E с акутом", + Ecirc:"латинская прописная буква E с циркумфлексом", + Euml:"латинская прописная буква E с тремой", + Igrave:"латинская прописная буква I с грависом", + Iacute:"латинская прописная буква I с акутом", + Icirc:"латинская прописная буква I с циркумфлексом", + Iuml:"латинская прописная буква I с тремой", + ETH:"латинская прописная буква ETH", + Ntilde:"латинская прописная буква N с тильдой", + Ograve:"латинская прописная буква O с грависом", + Oacute:"латинская прописная буква O с акутом", + Ocirc:"латинская прописная буква O с циркумфлексом", + Otilde:"латинская прописная буква O с тильдой", + Ouml:"латинская прописная буква O с тремой", + times:"знак умножения", + Oslash:"латинская прописная буква O перечеркнутая\nлатинская прописная буква O с вертикальной чертой", + Ugrave:"латинская прописная буква U с грависом", + Uacute:"латинская прописная буква U с акутом", + Ucirc:"латинская прописная буква U с циркумфлексом", + Uuml:"латинская прописная буква U с тремой", + Yacute:"латинская прописная буква Y с акутом", + THORN:"латинская прописная буква THORN", + szlig:"латинская строчная заостренная s\nэсцэт", + agrave:"латинская строчная буква a с грависом\nлатинская строчная a с грависом", + aacute:"латинская строчная буква a с акутом", + acirc:"латинская строчная буква a с циркумфлексом", + atilde:"латинская строчная буква a с тильдой", + auml:"латинская строчная буква a с тремой", + aring:"латинская строчная буква a с кружком сверху\nлатинская строчная a с кружком", + aelig:"латинская строчная буква ae\nлатинская строчная лигатура ae", + ccedil:"латинская строчная буква c с седилью", + egrave:"латинская строчная буква e с грависом", + eacute:"латинская строчная буква e с акутом", + ecirc:"латинская строчная буква e с циркумфлексом", + euml:"латинская строчная буква e с тремой", + igrave:"латинская строчная буква i с грависом", + iacute:"латинская строчная буква i с акутом", + icirc:"латинская строчная буква i с циркумфлексом", + iuml:"латинская строчная буква i с тремой", + eth:"латинская строчная буква eth", + ntilde:"латинская строчная буква n с тильдой", + ograve:"латинская строчная буква o с грависом", + oacute:"латинская строчная буква o с акутом", + ocirc:"латинская строчная буква o с циркумфлексом", + otilde:"латинская строчная буква o с тильдой", + ouml:"латинская строчная буква o с тремой", + divide:"знак деления", + oslash:"латинская строчная буква o перечеркнутая\nлатинская строчная буква o с вертикальной чертой", + ugrave:"латинская строчная буква u с грависом", + uacute:"латинская строчная буква u с акутом", + ucirc:"латинская строчная буква u с циркумфлексом", + uuml:"латинская строчная буква u с тремой", + yacute:"латинская строчная буква y с акутом", + thorn:"латинская строчная буква thorn", + yuml:"латинская строчная буква y с тремой", + +// Greek Characters and Symbols + fnof:"латинская строчная буква f с хвостиком\nфункция\nфлорин", + Alpha:"греческая прописная буква альфа", + Beta:"греческая прописная буква бета", + Gamma:"греческая прописная буква гамма", + Delta:"греческая прописная буква дельта", + Epsilon:"греческая прописная буква эпсилон", + Zeta:"греческая прописная буква дзета", + Eta:"греческая прописная буква эта", + Theta:"греческая прописная буква тета", + Iota:"греческая прописная буква йота", + Kappa:"греческая прописная буква каппа", + Lambda:"греческая прописная буква лямбда", + Mu:"греческая прописная буква мю", + Nu:"греческая прописная буква ню", + Xi:"греческая прописная буква кси", + Omicron:"греческая прописная буква омикрон", + Pi:"греческая прописная буква пи", + Rho:"греческая прописная буква ро", + Sigma:"греческая прописная буква сигма", + Tau:"греческая прописная буква тау", + Upsilon:"греческая прописная буква ипсилон", + Phi:"греческая прописная буква фи", + Chi:"греческая прописная буква хи", + Psi:"греческая прописная буква пси", + Omega:"греческая прописная буква омега", + alpha:"греческая строчная буква альфа", + beta:"греческая строчная буква бета", + gamma:"греческая строчная буква гамма", + delta:"греческая строчная буква дельта", + epsilon:"греческая строчная буква эпсилон", + zeta:"греческая строчная буква дзета", + eta:"греческая строчная буква эта", + theta:"греческая строчная буква тета", + iota:"греческая строчная буква йота", + kappa:"греческая строчная буква каппа", + lambda:"греческая строчная буква лямбда", + mu:"греческая строчная буква мю", + nu:"греческая строчная буква ню", + xi:"греческая строчная буква хи", + omicron:"греческая строчная буква омикрон", + pi:"греческая строчная буква пи", + rho:"греческая строчная буква ро", + sigmaf:"греческая строчная конечная сигма", + sigma:"греческая строчная буква сигма", + tau:"греческая строчная буква тау", + upsilon:"греческая строчная буква ипсилон", + phi:"греческая строчная буква фи", + chi:"греческая строчная буква хи", + psi:"греческая строчная буква пси", + omega:"греческая строчная буква омега", + thetasym:"греческая символьная тета", + upsih:"греческий ипсилон с хвостиком", + piv:"греческая символьная пи", + bull:"маркер списка\nчерный маленький кружок", + hellip:"многоточие\nтри точки", + prime:"штрих\nминуты\nфуты", + Prime:"двойной штрих\nсекунды\nдюймы", + oline:"верхняя черта\nнадчеркивание с интервалом", + frasl:"косая черта", + weierp:"рукописная прописная P\nстепенное множество\nфункции Вейерштрасса", + image:"черная прописная I\nмнимая часть", + real:"черная прописная R\nвещественная часть", + trade:"символ товарного знака", + alefsym:"буква Алеф\nкардинальное число", + larr:"стрелка влево", + uarr:"стрелка вверх", + rarr:"стрелка вправо", + darr:"стрелка вниз", + harr:"стрелка влево-вправо", + crarr:"стрелка вниз с углом вправо\nвозврат каретки", + lArr:"двойная стрелка влево", + uArr:"двойная стрелка вверх", + rArr:"двойная стрелка вправо", + dArr:"двойная стрелка вниз", + hArr:"двойная стрелка влево-вправо", + forall:"для всех", + part:"частичный дифференциал", + exist:"существует", + empty:"пустой набор\nпустое множество\nдиаметр", + nabla:"оператор набла\nразностное отношение назад", + isin:"является элементом", + notin:"не является элементом", + ni:"содержит в качестве элемента", + prod:"n-арное произведение\nсимвол произведения", + sum:"n-арное суммирование", + minus:"знак минуса", + lowast:"оператор звездочка", + radic:"квадратный корень\nзнак корня", + prop:"пропорционально", + infin:"бесконечность", + ang:"угол", + and:"логическое И\nклин вверх", + or:"логическое ИЛИ\nклин вниз", + cap:"пересечение\nшапочка", + cup:"объединение\nчашечка","int":"интеграл", + there4:"следовательно", + sim:"оператор тильда\nизменяться с\nподобно", + cong:"приблизительно равно", + asymp:"почти равно\nасимптотично", + ne:"не равно", + equiv:"идентично", + le:"меньше или равно", + ge:"больше или равно", + sub:"подмножество", + sup:"включает в себя", + nsub:"не является подмножеством", + sube:"является подмножеством или эквивалентно", + supe:"включает в себя или эквивалентно", + oplus:"плюс в круге\nпрямая сумма", + otimes:"умножение в круге\nвекторное произведение", + perp:"перевернутый гвоздь\nортогонально к\nперпендикулярно", + sdot:"оператор точка", + lceil:"левая скобка округления вверх\nAPL upstile", + rceil:"правая скобка округления вверх", + lfloor:"левая скобка округления вниз\nAPL downstile", + rfloor:"правая скобка округления вниз", + lang:"левая угловая скобка", + rang:"правая угловая скобка", + loz:"ромб", + spades:"пики", + clubs:"крести\nтрилистник", + hearts:"червы\nвалентинка", + diams:"бубны", + OElig:"латинская прописная лигатура OE", + oelig:"латинская строчная лигатура oe", + Scaron:"латинская прописная буква S с галочкой", + scaron:"латинская строчная буква s с галочкой", + Yuml:"латинская прописная буква Y с тремой", + circ:"надстрочный знак циркумфлекс", + tilde:"малая тильда", + ensp:"пробел длины N", + emsp:"пробел длины M", + thinsp:"узкий пробел", + zwnj:"разделитель нулевой ширины", + zwj:"соединитель нулевой ширины", + lrm:"знак слева-направо", + rlm:"знак справа-налево", + ndash:"тире длины N", + mdash:"тире длины M", + lsquo:"левая одинарная кавычка", + rsquo:"правая одинарная кавычка", + sbquo:"одиночная нижняя кавычка", + ldquo:"левая двойная кавычка", + rdquo:"правая двойная кавычка", + bdquo:"двойная нижняя кавычка", + dagger:"крест", + Dagger:"двойной крест", + permil:"знак промилле", + lsaquo:"одинарная левая угловая кавычка", + rsaquo:"одинарная правая угловая кавычка", + euro:"символ евро" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/AutoSave.js new file mode 100644 index 0000000..fb98ddc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Uložiť", + "saveSettingLabelOn": "Nastaviť interval automatického ukladania...", + "saveSettingLabelOff": "Vypnúť automatické ukladanie", + "saveSettingdialogTitle": "Automatické ukladanie", + "saveSettingdialogDescription": "Zadajte interval automatického ukladania", + "saveSettingdialogParamName": "Interval automatického ukladania", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Nastaviť interval", + "saveSettingdialogButtonCancel": "Zrušiť", + "saveMessageSuccess": "Uložené o ${0}", + "saveMessageFail": "Zlyhalo ukladanie o ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Blockquote.js new file mode 100644 index 0000000..e54a9ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockquote" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Breadcrumb.js new file mode 100644 index 0000000..8024961 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Akcie pre ${nodeName}", + "selectContents": "Vybrať obsah", + "selectElement": "Vybrať element", + "deleteElement": "Vymazať element", + "deleteContents": "Vymazať obsah", + "moveStart": "Presunúť kurzor na začiatok", + "moveEnd": "Presunúť kurzor na koniec" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/CollapsibleToolbar.js new file mode 100644 index 0000000..f33361f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Zvinúť lištu nástrojov editora", + "expand": "Rozvinúť lištu nástrojov editora" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/FindReplace.js new file mode 100644 index 0000000..eb17817 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Hľadať:", + "findTooltip": "Zadajte text na nájdenie", + "replaceLabel": "Nahradiť s:", + "replaceTooltip": "Zadajte text na nahradenie", + "findReplace": "Hľadať a nahradiť", + "matchCase": "Rozlišovať veľkosť písmen", + "matchCaseTooltip": "Rozlišovať veľkosť písmen", + "backwards": "Dozadu", + "backwardsTooltip": "Hľadať text dozadu", + "replaceAllButton": "Nahradiť všetko", + "replaceAllButtonTooltip": "Nahradiť všetok text", + "findButton": "Hľadať", + "findButtonTooltip": "Hľadať text", + "replaceButton": "Nahradiť", + "replaceButtonTooltip": "Nahradiť text", + "replaceDialogText": "Nahradilo sa ${0} výskytov.", + "eofDialogText": "Posledný výskyt ${0}", + "eofDialogTextFind": "nájdený", + "eofDialogTextReplace": "nahradený" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/InsertAnchor.js new file mode 100644 index 0000000..c0e7fd1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Vložiť kotvu", + title: "Vlastnosti kotvy", + anchor: "Názov:", + text: "Opis:", + set: "Nastaviť", + cancel: "Zrušiť" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/InsertEntity.js new file mode 100644 index 0000000..21b78e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Vložiť symbol" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/LocalImage.js new file mode 100644 index 0000000..ead9996 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Vložiť obrázok", + url: "Obrázok", + browse: "Prehľadať...", + text: "Opis", + set: "Vložiť", + invalidMessage: "Neplatný typ súboru obrázka", + prePopuTextUrl: "Zadajte adresu URL", + prePopuTextBrowse: "alebo nájdite lokálny súbor." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/PageBreak.js new file mode 100644 index 0000000..cd8ab7f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Zlom strany" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/PasteFromWord.js new file mode 100644 index 0000000..7f55f02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Prilepiť z aplikácie Word", + "paste": "Prilepiť", + "cancel": "Zrušiť", + "instructions": "Prilepte obsah z aplikácie Word do textového okienka dole. Keď ste spokojný s obsahom na vloženie, stlačte tlačidlo prilepenia. Ak chcete zrušiť vkladanie textu, stlačte tlačidlo zrušenia." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Preview.js new file mode 100644 index 0000000..5d71a73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Náhľad" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/SafePaste.js new file mode 100644 index 0000000..91b2ea6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Priame prilepenie je zakázané. Prilepte obsah do tohto dialógového okna s použitím štandardných klávesnicových alebo ponukových ovládacích prvkov prehliadača. Keď budete spokojný s vloženým obsahom, stlačte tlačidlo Prilepiť. Ak chcete zrušiť vkladanie obsahu, kliknite na tlačidlo Zrušiť." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Save.js new file mode 100644 index 0000000..c7f6f70 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Uložiť" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/ShowBlockNodes.js new file mode 100644 index 0000000..6501004 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Zobraziť elementy blokov HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Smiley.js new file mode 100644 index 0000000..a5064f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Vložiť emotikon", + emoticonSmile: "úsmev", + emoticonLaughing: "smiech", + emoticonWink: "žmurknutie", + emoticonGrin: "úškľabok", + emoticonCool: "super", + emoticonAngry: "nahnevaný", + emoticonHalf: "polovica", + emoticonEyebrow: "zdvihnuté obočie", + emoticonFrown: "zamračený", + emoticonShy: "hanblivý", + emoticonGoofy: "pojašený", + emoticonOops: "ups", + emoticonTongue: "jazyk", + emoticonIdea: "nápad", + emoticonYes: "áno", + emoticonNo: "nie", + emoticonAngel: "anjel", + emoticonCrying: "plač", + emoticonHappy: "šťastný" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/SpellCheck.js new file mode 100644 index 0000000..95e66a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Dávková kontrola pravopisu", + unfound: "Nenašlo sa", + skip: "Preskočiť", + skipAll: "Preskočiť všetko", + toDic: "Pridať do slovníka", + suggestions: "Návrhy", + replace: "Nahradiť", + replaceWith: "Nahradiť s", + replaceAll: "Nahradiť všetko", + cancel: "Zrušiť", + msg: "Nenašli sa žiadne chyby", + iSkip: "Preskočiť toto", + iSkipAll: "Preskočiť všetky podobné", + iMsg: "Žiadne návrhy na hláskovanie" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/TableDialog.js new file mode 100644 index 0000000..6931c85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/TableDialog.js @@ -0,0 +1,36 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Vložiť tabuľku", + modifyTableTitle: "Upraviť tabuľku", + rows: "Riadky:", + columns: "Stĺpce:", + align: "Zarovnanie:", + cellPadding: "Výplň buniek:", + cellSpacing: "Rozstup buniek:", + tableWidth: "Šírka tabuľky:", + backgroundColor: "Farba pozadia:", + borderColor: "Farba rámika:", + borderThickness: "Hrúbka rámika:", + percent: "percent", + pixels: "pixlov", + "default": "predvolené", + left: "vľavo", + center: "stred", + right: "vpravo", + buttonSet: "Nastaviť", // translated elsewhere? + buttonInsert: "Vložiť", + buttonCancel: "Zrušiť", + + selectTableLabel: "Vybrať tabuľku", + insertTableRowBeforeLabel: "Pridať riadok pred", + insertTableRowAfterLabel: "Pridať riadok za", + insertTableColumnBeforeLabel: "Pridať stĺpec pred", + insertTableColumnAfterLabel: "Pridať stĺpec za", + deleteTableRowLabel: "Vymazať riadok", + deleteTableColumnLabel: "Vymazať stĺpec" +}) + + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/TextColor.js new file mode 100644 index 0000000..168f651 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Nastaviť", + "cancelButtonText": "Zrušiť" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/latinEntities.js new file mode 100644 index 0000000..c239e9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sk/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"invertovaný výkričník", + cent:"znak centu", + pound:"znak libry", + curren:"znak meny", + yen:"znak yen\nznak yuan", + brvbar:"prerušovaná čiara\nprerušovaná zvislá čiara", + sect:"znak paragraf", + uml:"znak prehláskovania", + copy:"znak copyright", + ordf:"ordinálny indikátor, ženský", + laquo:"znak dvojitej šípky vľavo\nukazovateľ vľavo", + not:"znak nie", + shy:"voľná pomlčka", + reg:"znak registrácie\nznačka registrovanej ochrannej známky", + macr:"vodorovná čiarka", + deg:"znak stupeň", + plusmn:"znak plus-mínus\nznak plus alebo mínus", + sup2:"horný index dva\nna druhú", + sup3:"horný index tri\nna tretiu", + acute:"dĺžeň", + micro:"znak mikro", + para:"znak odseku", + middot:"stredová bodka\ngregoriánska čiarka\ngrécka stredová bodka", + cedil:"cedilla\nspodný háčik", + sup1:"horný index jedna", + ordm:"ordinálny indikátor, mužský", + raquo:"znak dvojitej šípky vpravo\nukazovateľ vpravo", + frac14:"jedna štvrtina", + frac12:"jedna polovica", + frac34:"tri štvrtiny", + iquest:"invertovaný otáznik\notočený otáznik", + Agrave:"veľké latinské písmeno A s opačným dĺžňom", + Aacute:"veľké latinské písmeno A s dĺžňom", + Acirc:"veľké latinské písmeno A so strieškou", + Atilde:"veľké latinské písmeno A s tildou", + Auml:"veľké latinské písmeno A prehlasované", + Aring:"veľké latinské písmeno A s krúžkom", + AElig:"veľké latinské písmeno AE", + Ccedil:"veľké latinské písmeno C so spodným háčikom", + Egrave:"veľké latinské písmeno E s opačným dĺžňom", + Eacute:"veľké latinské písmeno E s dĺžňom", + Ecirc:"veľké latinské písmeno E so strieškou", + Euml:"veľké latinské písmeno E prehlasované", + Igrave:"veľké latinské písmeno I s opačným dĺžňom", + Iacute:"veľké latinské písmeno I s dĺžňom", + Icirc:"veľké latinské písmeno I so strieškou", + Iuml:"veľké latinské písmeno I prehlasované", + ETH:"veľké latinské písmeno ETH", + Ntilde:"veľké latinské písmeno N s tildou", + Ograve:"veľké latinské písmeno O s opačným dĺžňom", + Oacute:"veľké latinské písmeno O s dĺžňom", + Ocirc:"veľké latinské písmeno O so strieškou", + Otilde:"veľké latinské písmeno O s tildou", + Ouml:"veľké latinské písmeno O prehlasované", + times:"znak násobenia", + Oslash:"veľké latinské písmeno O s prečiarknutím", + Ugrave:"veľké latinské písmeno U s opačným dĺžňom", + Uacute:"veľké latinské písmeno U s dĺžňom", + Ucirc:"veľké latinské písmeno U so strieškou", + Uuml:"veľké latinské písmeno U prehlasované", + Yacute:"veľké latinské písmeno Y s dĺžňom", + THORN:"veľké latinské písmeno THORN", + szlig:"malé latinské písmeno ostré s", + agrave:"malé latinské písmeno a s opačným dĺžňom", + aacute:"malé latinské písmeno a s dĺžňom", + acirc:"malé latinské písmeno a so strieškou", + atilde:"malé latinské písmeno a s tildou", + auml:"malé latinské písmeno a prehlasované", + aring:"malé latinské písmeno a s krúžkom", + aelig:"malé latinské písmeno ae", + ccedil:"malé latinské písmeno c so spodným háčikom", + egrave:"malé latinské písmeno e s opačným dĺžňom", + eacute:"malé latinské písmeno e s dĺžňom", + ecirc:"malé latinské písmeno e so strieškou", + euml:"malé latinské písmeno e prehlasované", + igrave:"malé latinské písmeno i s opačným dĺžňom", + iacute:"malé latinské písmeno i s dĺžňom", + icirc:"malé latinské písmeno i so strieškou", + iuml:"malé latinské písmeno i prehlasované", + eth:"malé latinské písmeno eth", + ntilde:"malé latinské písmeno n s tildou", + ograve:"malé latinské písmeno o s opačným dĺžňom", + oacute:"malé latinské písmeno o s dĺžňom", + ocirc:"malé latinské písmeno o so strieškou", + otilde:"malé latinské písmeno o s tildou", + ouml:"malé latinské písmeno o prehlasované", + divide:"znak delenia", + oslash:"malé latinské písmeno o s prečiarknutím", + ugrave:"malé latinské písmeno u s opačným dĺžňom", + uacute:"malé latinské písmeno u s dĺžňom", + ucirc:"malé latinské písmeno u so strieškou", + uuml:"malé latinské písmeno u prehlasované", + yacute:"malé latinské písmeno y s dĺžňom", + thorn:"malé latinské písmeno thorn", + yuml:"malé latinské písmeno y prehlasované", + +// Greek Characters and Symbols + fnof:"malé latinské písmeno f s háčikom", + Alpha:"veľké grécke písmeno alfa", + Beta:"veľké grécke písmeno beta", + Gamma:"veľké grécke písmeno gama", + Delta:"veľké grécke písmeno delta", + Epsilon:"veľké grécke písmeno epsilon", + Zeta:"veľké grécke písmeno zéta", + Eta:"veľké grécke písmeno éta", + Theta:"veľké grécke písmeno téta", + Iota:"veľké grécke písmeno jota", + Kappa:"veľké grécke písmeno kapa", + Lambda:"veľké grécke písmeno lambda", + Mu:"veľké grécke písmeno mí", + Nu:"veľké grécke písmeno ní", + Xi:"veľké grécke písmeno ksí", + Omicron:"veľké grécke písmeno omikron", + Pi:"veľké grécke písmeno pí", + Rho:"veľké grécke písmeno ró", + Sigma:"veľké grécke písmeno sigma", + Tau:"veľké grécke písmeno tau", + Upsilon:"veľké grécke písmeno ypsilon", + Phi:"veľké grécke písmeno fí", + Chi:"veľké grécke písmeno chí", + Psi:"veľké grécke písmeno psí", + Omega:"veľké grécke písmeno omega", + alpha:"malé grécke písmeno alfa", + beta:"malé grécke písmeno beta", + gamma:"malé grécke písmeno gama", + delta:"malé grécke písmeno delta", + epsilon:"malé grécke písmeno epsilon", + zeta:"malé grécke písmeno zéta", + eta:"malé grécke písmeno éta", + theta:"malé grécke písmeno téta", + iota:"malé grécke písmeno jota", + kappa:"malé grécke písmeno kapa", + lambda:"malé grécke písmeno lambda", + mu:"malé grécke písmeno mí", + nu:"malé grécke písmeno ní", + xi:"malé grécke písmeno ksí", + omicron:"malé grécke písmeno omikron", + pi:"malé grécke písmeno pí", + rho:"malé grécke písmeno ró", + sigmaf:"malé grécke písmeno sigma (koncové)", + sigma:"malé grécke písmeno sigma", + tau:"malé grécke písmeno tau", + upsilon:"malé grécke písmeno ypsilon", + phi:"malé grécke písmeno fí", + chi:"malé grécke písmeno chí", + psi:"malé grécke písmeno psí", + omega:"malé grécke písmeno omega", + thetasym:"malé grécke písmeno téta", + upsih:"grécky znak ypsilon s háčikom", + piv:"grécky symbol pí", + bull:"odrážka\nmalý čierny krúžok", + hellip:"tri body vodorovne", + prime:"minúty\nstopa", + Prime:"sekundy\npalce", + oline:"čiara nad riadkom", + frasl:"lomka", + weierp:"veľké písané písmeno P\nmocninný rad", + image:"gotické veľké písmeno I\nimaginárna časť", + real:"gotické veľké písmeno R\nreálna časť", + trade:"znak ochrannej známky", + alefsym:"symbol alef", + larr:"šípka doľava", + uarr:"šípka nahor", + rarr:"šípka doprava", + darr:"šípka nadol", + harr:"šípka vľavo-vpravo", + crarr:"lomená šípka nadol doľava\nnávrat vozíka", + lArr:"dvojitá šípka doľava", + uArr:"dvojitá šípka nahor", + rArr:"dvojitá šípka doprava", + dArr:"dvojitá šípka nadol", + hArr:"dvojitá šípka vľavo-vpravo", + forall:"pre všetky", + part:"čiastočný rozdiel", + exist:"existuje", + empty:"prázdna množina\npriemer", + nabla:"nabla\nopačný rozdiel", + isin:"prvok z", + notin:"nie je prvok z", + ni:"obsahuje ako člen", + prod:"n-árny súčin\nznak súčinu", + sum:"n-árny súčet", + minus:"znak mínus", + lowast:"operátor hviezdička", + radic:"druhá odmocnina", + prop:"proporcionálne k", + infin:"nekonečno", + ang:"uhol", + and:"logické a", + or:"logické alebo", + cap:"prienik", + cup:"zjednotenie","int":"integrál", + there4:"preto", + sim:"operátor tilda\nmení sa\npodobné", + cong:"približne rovné", + asymp:"takmer rovné\nasymptotický k", + ne:"nerovný", + equiv:"identický", + le:"menší ako alebo rovný", + ge:"väčší ako alebo rovný", + sub:"podmnožina", + sup:"nadmnožina", + nsub:"nie podmnožina", + sube:"podmnožina alebo rovné", + supe:"nadmnožina alebo rovné", + oplus:"plus v krúžku\npriamy súčet", + otimes:"krát v krúžku\nvektorový súčin", + perp:"otočený klinček\nortogonálny\nkolmý", + sdot:"operátor bodka", + lceil:"ľavý strop", + rceil:"pravý strop", + lfloor:"ľavá podlaha", + rfloor:"pravá podlaha", + lang:"hranatá zátvorka smerujúca doľava", + rang:"hranatá zátvorka smerujúca doprava", + loz:"kosoštvorec", + spades:"čierny znak pikovej karty", + clubs:"čierny znak krížovej karty", + hearts:"čierny znak guľovej karty", + diams:"čierny znak károvej karty", + OElig:"veľká latinská ligatúra OE", + oelig:"malá latinská ligatúra oe", + Scaron:"veľké latinské písmeno S s mäkčeňom", + scaron:"malé latinské písmeno s s mäkčeňom", + Yuml:"veľké latinské písmeno Y prehlasované", + circ:"znak striešky", + tilde:"malá tilda", + ensp:"krátka medzera", + emsp:"dlhá medzera", + thinsp:"tenká medzera", + zwnj:"nespojovač nulovej dĺžky", + zwj:"spojovač nulovej dĺžky", + lrm:"značka zľava-doprava", + rlm:"značka sprava-doľava", + ndash:"pomlčka", + mdash:"dlhá pomlčka", + lsquo:"jednoduchá ľavá úvodzovka", + rsquo:"jednoduchá pravá úvodzovka", + sbquo:"jednoduchá dolná ľavá úvodzovka", + ldquo:"dvojitá ľavá úvodzovka", + rdquo:"dvojitá pravá úvodzovka", + bdquo:"dvojitá dolná ľavá úvodzovka", + dagger:"krížik", + Dagger:"dvojitý krížik", + permil:"znak promile", + lsaquo:"jednoduchý ľavý ukazovateľ", + rsaquo:"jednoduchý pravý ukazovateľ", + euro:"znak euro" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/AutoSave.js new file mode 100644 index 0000000..587f02b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Shrani", + "saveSettingLabelOn": "Nastavi interval za samodejno shranjevanje ... ", + "saveSettingLabelOff": "Izključi samodejno shranjevanje ", + "saveSettingdialogTitle": "Samodejno shranjevanje ", + "saveSettingdialogDescription": "Podaj interval za samodejno shranjevanje ", + "saveSettingdialogParamName": "Interval za samodejno shranjevanje ", + "saveSettingdialogParamLabel": "min", + "saveSettingdialogButtonOk": "Nastavi interval", + "saveSettingdialogButtonCancel": "Prekliči", + "saveMessageSuccess": "Shranjeno ob ${0}", + "saveMessageFail": "Shranjevanje ob ${0} ni uspelo " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Blockquote.js new file mode 100644 index 0000000..e514eed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blokovno besedilo" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Breadcrumb.js new file mode 100644 index 0000000..c1e4209 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "Dejanja ${nodeName} ", + "selectContents": "Izberi vsebine ", + "selectElement": "Izberi element ", + "deleteElement": "Izbriši element ", + "deleteContents": "Izbriši vsebine ", + "moveStart": "Pomakni kazalko na začetek ", + "moveEnd": "Pomakni kazalko na konec " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/CollapsibleToolbar.js new file mode 100644 index 0000000..9828391 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Strni orodno vrstico urejevalnika ", + "expand": "Razširi orodno vrstico urejevalnika " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/FindReplace.js new file mode 100644 index 0000000..b7689f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Najdi:", + "findTooltip": "Vnesite besedilo za iskanje", + "replaceLabel": "Zamenjaj z: ", + "replaceTooltip": "Vnesite besedilo za zamenjavo ", + "findReplace": "Najdi in zamenjaj", + "matchCase": "Razlikuj velike in male črke", + "matchCaseTooltip": "Razlikuj velike in male črke", + "backwards": "Nazaj", + "backwardsTooltip": "Vzvratno iskanje besedila ", + "replaceAllButton": "Zamenjaj vse", + "replaceAllButtonTooltip": "Zamenjaj celotno besedilo ", + "findButton": "Najdi", + "findButtonTooltip": "Najdi besedilo ", + "replaceButton": "Zamenjaj ", + "replaceButtonTooltip": "Zamenjaj besedilo ", + "replaceDialogText": "Zamenjanih ${0} pojavitev. ", + "eofDialogText": "Zadnja pojavitev ${0}", + "eofDialogTextFind": "najdeno ", + "eofDialogTextReplace": "zamenjano " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/InsertAnchor.js new file mode 100644 index 0000000..611ba89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Vstavi sidro", + title: "Lastnosti sidra", + anchor: "Ime:", + text: "Opis:", + set: "Nastavi", + cancel: "Prekliči" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/InsertEntity.js new file mode 100644 index 0000000..457cb07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Vstavi simbol " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/LocalImage.js new file mode 100644 index 0000000..7a3bbb0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Vstavi sliko", + url: "Slika ", + browse: "Prebrskaj ... ", + text: "Opis ", + set: "Vstavi ", + invalidMessage: "Neveljavna vrsta slikovne datoteke ", + prePopuTextUrl: "Vnesite URL slike", + prePopuTextBrowse: " ali prebrskajte in izberite lokalno datoteko. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/PageBreak.js new file mode 100644 index 0000000..3ec86ee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Prelom strani" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/PasteFromWord.js new file mode 100644 index 0000000..559d58d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Prilepi iz programa Word", + "paste": "Prilepi", + "cancel": "Prekliči", + "instructions": "Vsebino iz programa Word prilepite v spodnje besedilno polje. Ko ste zadovoljni z vstavljeno vsebino, pritisnite gumb Vstavi. Če želite prenehati z vstavljanjem vsebine, pritisnite gumb Prekliči. " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Preview.js new file mode 100644 index 0000000..5e56aa5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Predogled " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/SafePaste.js new file mode 100644 index 0000000..93e8a52 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Neposredno lepljenje je onemogočeno. Vsebino prilepite v to pogovorno okno s standardno tipkovnico brskalnika ali krmilnimi elementi menija za lepljenje. Ko ste zadovoljni z vsebino, ki jo želite vstaviti, pritisnite gumb za lepljenje. Če želite preklicati vstavljanje vsebine, pritisnite gumb za preklic." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Save.js new file mode 100644 index 0000000..d9d9cc6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Shrani" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/ShowBlockNodes.js new file mode 100644 index 0000000..9ac93ea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Pokaži elemente blokade HTML-ja " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Smiley.js new file mode 100644 index 0000000..80b9abb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Vstavi čustveni simbol", + emoticonSmile: "smeško", + emoticonLaughing: "smeško z odprtimi usti", + emoticonWink: "smeško pomežikne", + emoticonGrin: "smeško se nasmehne do ušes", + emoticonCool: "smeško je frajer", + emoticonAngry: "smeško je jezen", + emoticonHalf: "smeško se mršči", + emoticonEyebrow: "smeško dviga obrv", + emoticonFrown: "smeško ni zadovoljen", + emoticonShy: "smeško je v zadregi", + emoticonGoofy: "smeško se pači", + emoticonOops: "smeško ga je polomil", + emoticonTongue: "smeško kaže jezik", + emoticonIdea: "ideja", + emoticonYes: "smeško prikimava", + emoticonNo: "smeško odkimava", + emoticonAngel: "smeško je angelček", + emoticonCrying: "smeško joka", + emoticonHappy: "smeško je vesel" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/SpellCheck.js new file mode 100644 index 0000000..1ab8dc4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Paketno preverjanje črkovanja ", + unfound: "Ni najdeno ", + skip: "Preskoči", + skipAll: "Preskoči vse", + toDic: "Dodaj v slovar ", + suggestions: "Predlogi ", + replace: "Zamenjaj ", + replaceWith: "Zamenjaj z", + replaceAll: "Zamenjaj vse", + cancel: "Prekliči", + msg: "Najdenih ni bilo nobenih napačnih črkovanj ", + iSkip: "Preskoči to ", + iSkipAll: "Preskoči vse vnose, kot je ta ", + iMsg: "Ni predlogov za črkovanje " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/TableDialog.js new file mode 100644 index 0000000..de09528 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/TableDialog.js @@ -0,0 +1,36 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Vstavi tabelo", + modifyTableTitle: "Spremeni tabelo", + rows: "Vrstice:", + columns: "Stolpci:", + align: "Poravnaj:", + cellPadding: "Polnjenje celic:", + cellSpacing: "Razmik med celicami:", + tableWidth: "Širina tabele:", + backgroundColor: "Barva ozadja:", + borderColor: "Barva obrobe:", + borderThickness: "Debelina obrobe", + percent: "odstotkov", + pixels: "pikslov", + "default": "privzeto", + left: "levo", + center: "na sredini", + right: "desno", + buttonSet: "Nastavi", // translated elsewhere? + buttonInsert: "Vstavi", + buttonCancel: "Prekliči", + + selectTableLabel: "Izberi tabelo", + insertTableRowBeforeLabel: "Dodaj vrstico pred", + insertTableRowAfterLabel: "Dodaj vrstico za", + insertTableColumnBeforeLabel: "Dodaj stolpec pred", + insertTableColumnAfterLabel: "Dodaj stolpec za", + deleteTableRowLabel: "Izbriši vrstico", + deleteTableColumnLabel: "Izbriši stolpec" +}) + + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/TextColor.js new file mode 100644 index 0000000..bc53cc6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Nastavi", + "cancelButtonText": "Prekliči" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/latinEntities.js new file mode 100644 index 0000000..cc653df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sl/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"obrnjen klicaj ", + cent:"znak za cent ", + pound:"znak za funt ", + curren:"znak za valuto ", + yen:"znak za jen\njuan ", + brvbar:"prekinjena črta\nprekinjena navpična črta ", + sect:"znak za odsek ", + uml:"diareza\ndiareza z razmikom ", + copy:"znak za avtorske pravice ", + ordf:"ženski ordinalni indikator ", + laquo:"dvojni narekovaj, ki kaže v levo smer ", + not:"znak za ne ", + shy:"pogojni deljaj ", + reg:"znak za registrirano\nznak za registrirano blagovno znamko ", + macr:"ravni preglas ", + deg:"znak za stopinje ", + plusmn:"znak plus-minus\nznak plus ali minus ", + sup2:"nadpisana dve\nnadpisana števka dve\nna kvadrat ", + sup3:"nadpisana tri\nnadpisana števka tri\nna kub ", + acute:"ostrivec ", + micro:"znak za mikro", + para:"znak za paragraf", + middot:"pika na sredini\nGeorgian comma\nGrška pika na sredini ", + cedil:"cedila ", + sup1:"nadpisana ena\nnadpisana števka ena ", + ordm:"moški ordinalni indikator ", + raquo:"dvojni narekovaj, ki kaže v desno smer ", + frac14:"pravi ulomek ena četrtina ", + frac12:"pravi ulomek ena polovica ", + frac34:"pravi ulomek tri četrtine ", + iquest:"obrnjen vprašaj ", + Agrave:"Latinska velika črka A s krativcem ", + Aacute:"Latinska velika črka A z ostrivcem ", + Acirc:"Latinska velika črka A s cirkumfleksom ", + Atilde:"Latinska velika črka A s tildo ", + Auml:"Latinska velika črka A z diarezo ", + Aring:"Latinska velika črka A s krogcem na vrhu ", + AElig:"Latinska velika črka AE ", + Ccedil:"Latinska velika črka C s cedilo ", + Egrave:"Latinska velika črka E s krativcem ", + Eacute:"Latinska velika črka E z ostrivcem ", + Ecirc:"Latinska velika črka E s cirkumfleksom ", + Euml:"Latinska velika črka E z diarezo ", + Igrave:"Latinska velika črka I s krativcem ", + Iacute:"Latinska velika črka I z ostrivcem ", + Icirc:"Latinska velika črka I s cirkumfleksom ", + Iuml:"Latinska velika črka I z diarezo ", + ETH:"Latinska velika črka ETH ", + Ntilde:"Latinska velika črka N s tildo ", + Ograve:"Latinska velika črka O s krativcem ", + Oacute:"Latinska velika črka O z ostrivcem ", + Ocirc:"Latinska velika črka O s cirkumfleksom ", + Otilde:"Latinska velika črka O s tildo ", + Ouml:"Latinska velika črka O z diarezo ", + times:"znak za množenje ", + Oslash:"Poševno prečrtana latinska velika črka O ", + Ugrave:"Latinska velika črka U s krativcem ", + Uacute:"Latinska velika črka U z ostrivcem ", + Ucirc:"Latinska velika črka U s cirkumfleksom ", + Uuml:"Latinska velika črka U z diarezo ", + Yacute:"Latinska velika črka Y z ostrivcem ", + THORN:"Latinska velika črka THORN ", + szlig:"Latinska majhna črka ostri s ", + agrave:"Latinska majhna črka a s krativcem ", + aacute:"Latinska majhna črka a z ostrivcem ", + acirc:"Latinska majhna črka a s cirkumfleksom ", + atilde:"Latinska majhna črka a s tildo ", + auml:"Latinska majhna črka a z diarezo ", + aring:"Latinska majhna črka a s krogcem na vrhu ", + aelig:"Latinska majhna črka ae ", + ccedil:"Latinska majhna črka c s cedilo ", + egrave:"Latinska majhna črka e s krativcem ", + eacute:"Latinska majhna črka e z ostrivcem ", + ecirc:"Latinska majhna črka e s cirkumfleksom ", + euml:"Latinska majhna črka e z diarezo ", + igrave:"Latinska majhna črka i s krativcem ", + iacute:"Latinska majhna črka i z ostrivcem ", + icirc:"Latinska majhna črka i s cirkumfleksom ", + iuml:"Latinska majhna črka i z diarezo ", + eth:"Latinska majhna črka eth ", + ntilde:"Latinska majhna črka n s tildo ", + ograve:"Latinska majhna črka o s krativcem ", + oacute:"Latinska majhna črka o z ostrivcem ", + ocirc:"Latinska majhna črka o s cirkumfleksom ", + otilde:"Latinska majhna črka o s tildo ", + ouml:"Latinska majhna črka o z diarezo ", + divide:"znak za deljenje ", + oslash:"Poševno prečrtana latinska majhna črka o ", + ugrave:"Latinska majhna črka u s krativcem ", + uacute:"Latinska majhna črka u z ostrivcem ", + ucirc:"Latinska majhna črka u s cirkumfleksom ", + uuml:"Latinska majhna črka u z diarezo ", + yacute:"Latinska majhna črka y z ostrivcem ", + thorn:"Latinska majhna črka thorn ", + yuml:"Latinska majhna črka y z diarezo ", + +// Greek Characters and Symbols + fnof:"Zavita latinska majhna črka f\nfunkcija ", + Alpha:"Grška velika črka alfa ", + Beta:"Grška velika črka beta ", + Gamma:"Grška velika črka gama ", + Delta:"Grška velika črka delta ", + Epsilon:"Grška velika črka epsilon ", + Zeta:"Grška velika črka zeta ", + Eta:"Grška velika črka eta ", + Theta:"Grška velika črka theta ", + Iota:"Grška velika črka jota ", + Kappa:"Grška velika črka kapa ", + Lambda:"Grška velika črka lambda ", + Mu:"Grška velika črka mu ", + Nu:"Grška velika črka nu ", + Xi:"Grška velika črka ksi ", + Omicron:"Grška velika črka omikron ", + Pi:"Grška velika črka pi ", + Rho:"Grška velika črka ro ", + Sigma:"Grška velika črka sigma ", + Tau:"Grška velika črka tau ", + Upsilon:"Grška velika črka ipsilon ", + Phi:"Grška velika črka fi ", + Chi:"Grška velika črka hi ", + Psi:"Grška velika črka psi ", + Omega:"Grška velika črka omega ", + alpha:"Grška majhna črka alfa ", + beta:"Grška majhna črka beta ", + gamma:"Grška majhna črka gama ", + delta:"Grška majhna črka delta ", + epsilon:"Grška majhna črka epsilon ", + zeta:"Grška majhna črka zeta ", + eta:"Grška majhna črka eta ", + theta:"Grška majhna črka theta ", + iota:"Grška majhna črka iota ", + kappa:"Grška majhna črka kapa ", + lambda:"Grška majhna črka lambda ", + mu:"Grška majhna črka mu ", + nu:"Grška majhna črka nu ", + xi:"Grška majhna črka ksi ", + omicron:"Grška majhna črka omikron ", + pi:"Grška majhna črka pi ", + rho:"Grška majhna črka ro ", + sigmaf:"Grška majhna črka končna sigma ", + sigma:"Grška majhna črka sigma ", + tau:"Grška majhna črka tau ", + upsilon:"Grška majhna črka ipsilon ", + phi:"Grška majhna črka fi ", + chi:"Grška majhna črka hi ", + psi:"Grška majhna črka psi ", + omega:"Grška majhna črka omega ", + thetasym:"Simbol majhne grške črke theta ", + upsih:"Grški zaviti simbol ipsilon ", + piv:"Grški simbol pi ", + bull:"oznaka\nmajhen črn krog ", + hellip:"tripičje ", + prime:"apostrof\nminute\nčevlji ", + Prime:"dvojni apostrof\nsekunde\npalci", + oline:"nadčrtaj ", + frasl:"poševnica ulomka ", + weierp:"potenčna množica\nWierstrassov p ", + image:"Gotska velika črka I\nimaginarni del ", + real:"Gotska velika črka R\nrealni del ", + trade:"znak za blagovno znamko ", + alefsym:"simbol alef\nprvo transfinitno kardinalno število ", + larr:"puščica levo ", + uarr:"puščica navzgor ", + rarr:"puščica desno ", + darr:"puščica navzdol ", + harr:"puščica levo navzgor ", + crarr:"puščica navzdol s kotom na levi strani\nzačetek vrstice ", + lArr:"dvojna puščica levo ", + uArr:"dvojna puščica navzgor ", + rArr:"dvojna puščica desno ", + dArr:"dvojna puščica navzdol ", + hArr:"dvojna puščica levo-desno ", + forall:"za vse ", + part:"delni diferencial ", + exist:"obstaja ", + empty:"prazna množica ", + nabla:"nabla ", + isin:"je element ", + notin:"ni element ", + ni:"vsebuje kot člana ", + prod:"n-kratni produkt ", + sum:"n-kratna vsota ", + minus:"znak za minus ", + lowast:"operator zvezdice ", + radic:"kvadratni koren ", + prop:"proporcialno z ", + infin:"neskončnost ", + ang:"kot ", + and:"logični in ", + or:"logični ali ", + cap:"presek ", + cup:"unija ","int":"integral ", + there4:"zato ", + sim:"operator tilda\nje podobno\nvarira z ", + cong:"je približno enako kot ", + asymp:"je skoraj enako kot\nasimptotsko glede na ", + ne:"ni enako ", + equiv:"je identično ", + le:"je manjše ali enako kot ", + ge:"je večje ali enako kot ", + sub:"je podmnožica ", + sup:"je nadmnožica ", + nsub:"ni podmnožnica ", + sube:"podmnožica ali enako ", + supe:"nadmnožica ali enako ", + oplus:"obkrožen plus\nneposredna svota ", + otimes:"obrkrožen krat\nvektorski produkt ", + perp:"žebljiček, obrnjen navzgor\npravokoten glede na ", + sdot:"operator pika ", + lceil:"levi zgornji kot ", + rceil:"desni zgornji kot ", + lfloor:"levi spodnji kot ", + rfloor:"desni spodnji kot ", + lang:"lomljeni oklepaj, ki kaže v levo ", + rang:"lomljeni oklepaj, ki kaže v desno ", + loz:"romb ", + spades:"črni pik ", + clubs:"črni križ\ndetelja ", + hearts:"črno srce\nvalentinovo ", + diams:"črni karo ", + OElig:"Latinska velika ligatura OE ", + oelig:"Latinska majhna ligatura oe ", + Scaron:"Latinska velika črka S s strešico ", + scaron:"Latinska majhna črka s s strešico ", + Yuml:"Latinska velika črka Y z diarezo ", + circ:"znak za cirkumfleks ", + tilde:"mala tilda ", + ensp:"presledek ", + emsp:"dolgi presledek ", + thinsp:"kratki presledek ", + zwnj:"razdruževalnik z nično širino ", + zwj:"združevalnik z nično širino ", + lrm:"oznaka od leve proti desni ", + rlm:"oznaka od desne proti levi ", + ndash:"pomišljaj", + mdash:"dolgi pomišljaj ", + lsquo:"levi opuščaj ", + rsquo:"desni opuščaj ", + sbquo:"enojni spodnji narekovaj ", + ldquo:"levi dvojni narekovaj ", + rdquo:"desni dvojni narekovaj ", + bdquo:"dvojni spodnji narekovaj ", + dagger:"križec ", + Dagger:"dvojni križec ", + permil:"znak 'na miljo' ", + lsaquo:"enojni kotni narekovaj, ki kaže v levo ", + rsaquo:"enojni kotni narekovaj, ki kaže v desno ", + euro:"znak za evro " +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/AutoSave.js new file mode 100644 index 0000000..03ee67a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Spara", + "saveSettingLabelOn": "Ange intervall för automatiskt sparande...", + "saveSettingLabelOff": "Avaktivera automatiskt sparande", + "saveSettingdialogTitle": "Spara automatiskt", + "saveSettingdialogDescription": "Ange intervall för automatiskt sparande", + "saveSettingdialogParamName": "Intervall för automatiskt sparande", + "saveSettingdialogParamLabel": "min.", + "saveSettingdialogButtonOk": "Ange intervall", + "saveSettingdialogButtonCancel": "Avbryt", + "saveMessageSuccess": "Sparades ${0}", + "saveMessageFail": "Kunde inte sparas ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Blockquote.js new file mode 100644 index 0000000..5a289b1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Blockcitat" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Breadcrumb.js new file mode 100644 index 0000000..7097e34 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName}-åtgärder", + "selectContents": "Välj innehåll", + "selectElement": "Välj element", + "deleteElement": "Ta bort element", + "deleteContents": "Ta bort innehåll", + "moveStart": "Flytta markören till början", + "moveEnd": "Flytta markören till slutet" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/CollapsibleToolbar.js new file mode 100644 index 0000000..bc430cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Komprimera redigerarverktygsfältet", + "expand": "Expandera redigerarverktygsfältet" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/FindReplace.js new file mode 100644 index 0000000..c7652e3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Sök:", + "findTooltip": "Ange den text du vill söka efter", + "replaceLabel": "Ersätt med:", + "replaceTooltip": "Ange den text du vill ersätta med", + "findReplace": "Sök och ersätt", + "matchCase": "Matcha skiftläge", + "matchCaseTooltip": "Matcha skiftläge", + "backwards": "Bakåt", + "backwardsTooltip": "Sök bakåt efter text", + "replaceAllButton": "Ersätt alla", + "replaceAllButtonTooltip": "Ersätt all text", + "findButton": "Sök", + "findButtonTooltip": "Sök efter texten", + "replaceButton": "Ersätt", + "replaceButtonTooltip": "Ersätt texten", + "replaceDialogText": "${0} förekomster ersattes.", + "eofDialogText": "Senaste förekomst${0}", + "eofDialogTextFind": "hittades", + "eofDialogTextReplace": "ersattes" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/InsertAnchor.js new file mode 100644 index 0000000..72d2c11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Infoga ankare", + title: "Egenskaper för ankare", + anchor: "Namn:", + text: "Beskrivning:", + set: "Ange", + cancel: "Avbryt" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/InsertEntity.js new file mode 100644 index 0000000..b38cc7c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Infoga symbol" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/LocalImage.js new file mode 100644 index 0000000..2cef853 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Infoga bild", + url: "Bild", + browse: "Bläddra...", + text: "Beskrivning", + set: "Infoga", + invalidMessage: "Ogiltigt bildfilformat", + prePopuTextUrl: "Ange en bild-URL-adress", + prePopuTextBrowse: " eller bläddra efter en lokal fil." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/PageBreak.js new file mode 100644 index 0000000..2f3b090 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Sidbrytning" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/PasteFromWord.js new file mode 100644 index 0000000..2d6e21e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Klistra in från Word", + "paste": "Klistra in", + "cancel": "Avbryt", + "instructions": "Klistra in innehållet från Word i textfältet nedan. När du är klar klickar du på Klistra in. Om du vill avbryta klickar du på Avbryt." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Preview.js new file mode 100644 index 0000000..44b726c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Förhandsgranska" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/SafePaste.js new file mode 100644 index 0000000..33746ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Direkt inklistring är avaktiverat. Klistra in innehållet i det här fönstret med standardtangentkommandon eller inklistringsfunktionen på menyn. När du har valt innehåller klickar du på Klistra in. Avbryt om du inte vill klistra in innehållet. " +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Save.js new file mode 100644 index 0000000..1702fdf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Spara" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/ShowBlockNodes.js new file mode 100644 index 0000000..fc22bb3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "Visa HTML-blockelement" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Smiley.js new file mode 100644 index 0000000..debc09f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "Infoga känslolägesikon", + emoticonSmile: "ler", + emoticonLaughing: "skrattar", + emoticonWink: "blinkar med ena ögat", + emoticonGrin: "ler stort", + emoticonCool: "cool", + emoticonAngry: "arg", + emoticonHalf: "halvt leende", + emoticonEyebrow: "lyfter på ena ögonbrynet", + emoticonFrown: "rynkar pannan", + emoticonShy: "blyg", + emoticonGoofy: "knasig", + emoticonOops: "hoppsan", + emoticonTongue: "räcker ut tungan", + emoticonIdea: "idé", + emoticonYes: "ja", + emoticonNo: "nej", + emoticonAngel: "ängel", + emoticonCrying: "gråter", + emoticonHappy: "glad" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/SpellCheck.js new file mode 100644 index 0000000..d23fc4d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Kontrollera stavning", + unfound: "Hittades inte", + skip: "Hoppa över", + skipAll: "Hoppa över alla", + toDic: "Lägg till i ordlistan", + suggestions: "Förslag", + replace: "Ersätt", + replaceWith: "Ersätt med", + replaceAll: "Ersätt alla", + cancel: "Avbryt", + msg: "Inga stavfel hittades", + iSkip: "Hoppa över", + iSkipAll: "Hoppa över alla liknande", + iMsg: "Inga stavningsförslag" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/TableDialog.js new file mode 100644 index 0000000..416c634 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Infoga tabell", + modifyTableTitle: "Ändra tabell", + rows: "Rader:", + columns: "Kolumner:", + align: "Justera:", + cellPadding: "Cellutfyllnad:", + cellSpacing: "Cellavstånd:", + tableWidth: "Tabellbredd:", + backgroundColor: "Bakgrundsfärg:", + borderColor: "Ramfärg:", + borderThickness: "Ramtjocklek", + percent: "%", + pixels: "bildpunkter", + "default": "standard", + left: "vänsterjustera", + center: "centrera", + right: "högerjustera", + buttonSet: "Ange", // translated elsewhere? + buttonInsert: "Infoga", + buttonCancel: "Avbryt", + + selectTableLabel: "Välj tabell", + insertTableRowBeforeLabel: "Lägg till rad före", + insertTableRowAfterLabel: "Lägg till rad efter", + insertTableColumnBeforeLabel: "Lägg till kolumn före", + insertTableColumnAfterLabel: "Lägg till kolumn efter", + deleteTableRowLabel: "Ta bort rad", + deleteTableColumnLabel: "Ta bort kolumn" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/TextColor.js new file mode 100644 index 0000000..3d43fe5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Ange", + "cancelButtonText": "Avbryt" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/latinEntities.js new file mode 100644 index 0000000..9e7933d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/sv/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"omvänt utropstecken", + cent:"centtecken", + pound:"pundtecken", + curren:"valutatecken", + yen:"yentecken\nyuantecken", + brvbar:"brutet lodrätt streck", + sect:"avsnittstecken", + uml:"trema", + copy:"copyrighttecken", + ordf:"indikator för feminint ordningstal", + laquo:"dubbelt vänstercitattecken", + not:"inte-tecken", + shy:"mjukt blanksteg", + reg:"registrerat varumärke-tecken", + macr:"makron", + deg:"gradtecken", + plusmn:"plus/minus-tecken\nplus/minus-tecken", + sup2:"upphöjd tvåa\nkvadrat", + sup3:"upphöjd trea\nkubik", + acute:"akut accent", + micro:"mikrotecken", + para:"alinea\nstycketecken", + middot:"halvhög punkt", + cedil:"cedilj", + sup1:"upphöjd etta", + ordm:"indikator för maskulint ordningstal", + raquo:"dubbelt högercitattecken", + frac14:"en fjärdedel", + frac12:"en halv", + frac34:"tre fjärdedelar", + iquest:"omvänt frågetecken", + Agrave:"versalt latinskt a med grav accent", + Aacute:"versalt latinskt a med akut accent", + Acirc:"versalt latinskt a med cirkumflex", + Atilde:"versalt latinskt a med tilde", + Auml:"versalt latinskt a med trema", + Aring:"versalt latinskt a med ring", + AElig:"versal latinsk ae-ligatur", + Ccedil:"versalt latinskt c med cedilj", + Egrave:"versalt latinskt e med grav accent", + Eacute:"versalt latinskt e med akut accent", + Ecirc:"versalt latinskt e med cirkumflex", + Euml:"versalt latinskt e med trema", + Igrave:"versalt latinskt i med grav accent", + Iacute:"versalt latinskt i med akut accent", + Icirc:"versalt latinskt i med cirkumflex", + Iuml:"versalt latinskt i med trema", + ETH:"versalt latinskt eth", + Ntilde:"versalt latinskt n med tilde", + Ograve:"versalt latinskt o med grav accent", + Oacute:"versalt latinskt o med akut accent", + Ocirc:"versalt latinskt o med cirkumflex", + Otilde:"versalt latinskt o med tilde", + Ouml:"versalt latinskt o med trema", + times:"multiplikationstecken", + Oslash:"versalt latinskt o med streck", + Ugrave:"versalt latinskt u med grav accent", + Uacute:"versalt latinskt u med akut accent", + Ucirc:"versalt latinskt u med cirkumflex", + Uuml:"versalt latinskt u med trema", + Yacute:"versalt latinskt y med akut accent", + THORN:"versalt latinskt thorn", + szlig:"gement latinskt dubbel-s\nß", + agrave:"gement latinskt a med grav accent", + aacute:"gement latinskt a med akut accent", + acirc:"gement latinskt a med cirkumflex", + atilde:"gement latinskt a med tilde", + auml:"gement latinskt a med trema", + aring:"gement latinskt a med ring", + aelig:"gemen latinsk ae-ligatur", + ccedil:"gement latinskt c med cedilj", + egrave:"gement latinskt e med grav accent", + eacute:"gement latinskt e med akut accent", + ecirc:"gement latinskt e med cirkumflex", + euml:"gement latinskt e med trema", + igrave:"gement latinskt i med grav accent", + iacute:"gement latinskt i med akut accent", + icirc:"gement latinskt i med cirkumflex", + iuml:"gement latinskt i med trema", + eth:"gement latinskt eth", + ntilde:"gement latinskt n med tilde", + ograve:"gement latinskt o med grav accent", + oacute:"gement latinskt o med akut accent", + ocirc:"gement latinskt o med cirkumflex", + otilde:"gement latinskt o med tilde", + ouml:"gement latinskt o med trema", + divide:"divisionstecken", + oslash:"gement latinskt o med streck", + ugrave:"gement latinskt u med grav accent", + uacute:"gement latinskt u med akut accent", + ucirc:"gement latinskt u med cirkumflex", + uuml:"gement latinskt u med trema", + yacute:"gement latinskt y med akut accent", + thorn:"gement latinskt thorn", + yuml:"gement latinskt y med trema", + +// Greek Characters and Symbols + fnof:"gement latinskt f med krok\nfunktion\nflorin", + Alpha:"versalt grekiskt alfa", + Beta:"versalt grekiskt beta", + Gamma:"versalt grekiskt gamma", + Delta:"versalt grekiskt delta", + Epsilon:"versalt grekiskt epsilon", + Zeta:"versalt grekiskt zeta", + Eta:"versalt grekiskt eta", + Theta:"versalt grekiskt theta", + Iota:"versalt grekiskt iota", + Kappa:"versalt grekiskt kappa", + Lambda:"versalt grekiskt lambda", + Mu:"versalt grekiskt my", + Nu:"versalt grekiskt ny", + Xi:"versalt grekiskt xi", + Omicron:"versalt grekiskt omikron", + Pi:"versalt grekiskt pi", + Rho:"versalt grekiskt rho", + Sigma:"versalt grekiskt sigma", + Tau:"versalt grekiskt tau", + Upsilon:"versalt grekiskt ypsilon", + Phi:"versalt grekiskt fi", + Chi:"versalt grekiskt chi", + Psi:"versalt grekiskt psi", + Omega:"versalt grekiskt omega", + alpha:"gement grekiskt alfa", + beta:"gement grekiskt beta", + gamma:"gement grekiskt gamma", + delta:"gement grekiskt delta", + epsilon:"gement grekiskt epsilon", + zeta:"gement grekiskt zeta", + eta:"gement grekiskt eta", + theta:"gement grekiskt theta", + iota:"gement grekiskt iota", + kappa:"gement grekiskt kappa", + lambda:"gement grekiskt lambda", + mu:"gement grekiskt my", + nu:"gement grekiskt ny", + xi:"gement grekiskt xi", + omicron:"gement grekiskt omikron", + pi:"gement grekiskt pi", + rho:"gement grekiskt rho", + sigmaf:"gement grekiskt slutligt sigma", + sigma:"gement grekiskt sigma", + tau:"gement grekiskt tau", + upsilon:"gement grekiskt ypsilon", + phi:"gement grekiskt fi", + chi:"gement grekiskt chi", + psi:"gement grekiskt psi", + omega:"gement grekiskt omega", + thetasym:"gement grekiskt theta", + upsih:"grekiskt ypsilon med krok", + piv:"grekisk pi-symbol", + bull:"punkt\nliten smart cirkel", + hellip:"ellips\ntre punkter", + prime:"primtecken\nminuter\nfot", + Prime:"dubbelt primtecken\nsekunder\ntum", + oline:"överstrykning\navståndsöverstrykning", + frasl:"bråkstreck", + weierp:"versalt skript-P\nexponentuppsättning\nweierstrass-p", + image:"versalt I\nimaginärdelssymbol", + real:"versalt R\nrealdelssymbol", + trade:"varumärkessymbol", + alefsym:"alefsymbol", + larr:"vänsterpil", + uarr:"uppåtpil", + rarr:"högerpil", + darr:"nedåtpil", + harr:"vänster/höger-pil", + crarr:"nedåtpil ned vänstergående hörn\nradbrytning", + lArr:"vänsterdubbelpil", + uArr:"uppåtdubbelpil", + rArr:"högerdubbelpil", + dArr:"nedåtdubbelpil", + hArr:"vänster/höger-dubbelpil", + forall:"för alla", + part:"partiell differential", + exist:"det finns", + empty:"tom uppsättning\nnull-uppsättning\ndiameter", + nabla:"nabla\nbakåtdifferens", + isin:"element av", + notin:"inte element av", + ni:"innehåller som medlem", + prod:"n-unär produkt\nprodukttecken", + sum:"n-unär summering", + minus:"minustecken", + lowast:"asteriskoperator", + radic:"kvadratrot", + prop:"proportionellt mot", + infin:"oändligheten", + ang:"vinkel", + and:"logiskt och", + or:"logiskt eller", + cap:"skärning", + cup:"union","int":"integral", + there4:"därför", + sim:"tildeoperator\nvarierar med\nliknar", + cong:"ungefär lika med", + asymp:"nästan lika med\nasymptotiskt med", + ne:"inte lika med", + equiv:"identiskt med", + le:"mindre än eller lika med", + ge:"större än eller lika med", + sub:"delmängd av", + sup:"överordnad mängd till", + nsub:"inte delmängd av", + sube:"delmängd av eller lika med", + supe:"överordnad mängd till eller lika med", + oplus:"plustecken i cirkel\ndirektsumma", + otimes:"multiplikationstecken i cirkel\nvektorprodukt", + perp:"uppåt\nortogonal mot\nvinkelrät", + sdot:"punktoperator", + lceil:"vänstertak", + rceil:"högertak", + lfloor:"vänstergolv", + rfloor:"högergolv", + lang:"vänstervinkelhakparentes", + rang:"högervinkelhakparentes", + loz:"romb", + spades:"svart spader", + clubs:"svart klöver\ntreklöver", + hearts:"svart hjärter", + diams:"svart ruter", + OElig:"versal latinsk oe-ligatur", + oelig:"gemen latinsk oe-ligatur", + Scaron:"versalt latinskt s med karon", + scaron:"gement latinskt s med karon", + Yuml:"versalt latinskt y med trema", + circ:"modifieringscirkumflex", + tilde:"litet tilde", + ensp:"halvfyrkantsblanksteg", + emsp:"fyrkantsblanksteg", + thinsp:"tunt blanksteg", + zwnj:"mjukt hårfint blanksteg", + zwj:"hårt hårfint blanksteg", + lrm:"vänster-till-höger-märke", + rlm:"höger-till-vänster-märke", + ndash:"tankstreck", + mdash:"långt tankstreck", + lsquo:"enkelt vänstercitattecken", + rsquo:"enkelt högercitattecken", + sbquo:"enkelt underkantscitattecken", + ldquo:"dubbelt vänstercitattecken", + rdquo:"dubbelt högercitattecken", + bdquo:"dubbelt underkantscitattecken", + dagger:"kors", + Dagger:"dubbelkors", + permil:"promille", + lsaquo:"enkel vänstervinkelparentes", + rsaquo:"enkel högervinkelparentes", + euro:"eurotecken" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/AutoSave.js new file mode 100644 index 0000000..436a367 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "บันทึก", + "saveSettingLabelOn": "ตั้งช่วงเวลาบันทึกอัตโนมัติ...", + "saveSettingLabelOff": "ปิดบันทึกอัตโนมัติ", + "saveSettingdialogTitle": "บันทึกอัตโนมัติ", + "saveSettingdialogDescription": "ระบุช่วงเวลาบันทึกอัตโนมัติ", + "saveSettingdialogParamName": "ช่วงเวลาบันทึกอัตโนมัติ", + "saveSettingdialogParamLabel": "นาที", + "saveSettingdialogButtonOk": "ตั้งช่วงเวลา", + "saveSettingdialogButtonCancel": "ยกเลิก", + "saveMessageSuccess": "ถูกบันทึกเมื่อ ${0}", + "saveMessageFail": "ล้มเหลวในการบันทึกเมื่อ ${0}" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Blockquote.js new file mode 100644 index 0000000..0081f58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "บล็อกคำพูด" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Breadcrumb.js new file mode 100644 index 0000000..98300cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} แอ็คชัน", + "selectContents": "เลือกเนื้อหา", + "selectElement": "เลือกอิลิเมนต์", + "deleteElement": "ลบอิลิเมนต์", + "deleteContents": "ลบเนื้อหา", + "moveStart": "ย้ายเคอร์เซอร์ไปยังจุดเริ่มต้น", + "moveEnd": "ย้ายเคอร์เซอร์ไปยังจุดสิ้นสุด" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/CollapsibleToolbar.js new file mode 100644 index 0000000..c29a1e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "ยุบรวมแถบเครื่องมือตัวแก้ไข", + "expand": "ขยายแถบเครื่องมือตัวแก้ไข" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/FindReplace.js new file mode 100644 index 0000000..39ce585 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "ค้นหา:", + "findTooltip": "ป้อนข้อความเพื่อหา", + "replaceLabel": "แทนที่ด้วย:", + "replaceTooltip": "ป้อนข้อความเพื่อแทนที่ด้วย", + "findReplace": "ค้นหาและแทนที่", + "matchCase": "ตรงตามตัวพิมพ์ใหญ่เล็ก", + "matchCaseTooltip": "ตรงตามตัวพิมพ์ใหญ่เล็ก", + "backwards": "ย้อนกลับ", + "backwardsTooltip": "ค้นหาย้อนกับเพื่อหาข้อความ", + "replaceAllButton": "แทนที่ทั้งหมด", + "replaceAllButtonTooltip": "แทนที่ข้อความทั้งหมด", + "findButton": "ค้นหา", + "findButtonTooltip": "หาข้อความ", + "replaceButton": "แทนที่", + "replaceButtonTooltip": "แทนที่ข้อความ", + "replaceDialogText": "แทนที่ ${0} ที่เกิดขึ้น", + "eofDialogText": "การเกิดขึ้นล่าสุด ${0}", + "eofDialogTextFind": "หาพบ", + "eofDialogTextReplace": "ถูกแทนที่" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/InsertAnchor.js new file mode 100644 index 0000000..5f439de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "แทรกจุดยึด", + title: "คุณสมบัติจุดยึด", + anchor: "ชื่อ:", + text: "รายละเอียด", + set: "ตั้งค่า", + cancel: "ยกเลิก" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/InsertEntity.js new file mode 100644 index 0000000..f702bfe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "แทรกสัญลักษณ์" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/LocalImage.js new file mode 100644 index 0000000..cb5199d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "แทรกรูปภาพ", + url: "รูปภาพ", + browse: "เรียกดู...", + text: "รายละเอียด", + set: "แทรก", + invalidMessage: "ชนิดของไฟล์รูปภาพไม่ถูกต้อง", + prePopuTextUrl: "ป้อน URL ของรูปภาพ", + prePopuTextBrowse: " หรือเรียกดูโลคัลไฟล์" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/PageBreak.js new file mode 100644 index 0000000..2aedf25 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "เส้นกั้นหน้า" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/PasteFromWord.js new file mode 100644 index 0000000..8dde0e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "วางจาก Word", + "paste": "วาง", + "cancel": "ยกเลิก", + "instructions": "วางเนื้อหาจาก Word ลงในกล่องข้อความข้างล่าง เมื่อคุณพอใจกับเนื้อหาที่แทรกแล้วให้กดปุ่ม วาง เมื่อต้องการยกเลิกการเรียงลำดับข้อความให้กดปุ่ม ยกเลิก" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Preview.js new file mode 100644 index 0000000..a879e19 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "แสดงตัวอย่าง" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/SafePaste.js new file mode 100644 index 0000000..742bde0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "การแปะโดยตรงถูกปิดใช้งาน. โปรดแปะเนื้อหาในไดอะล็อกนี้โดยใช้คีบอร์ดเบราว์เซอร์พื้นฐานหรือการควบคุมเมนูการแปะ เมื่อคุณพอใจกับเนื้อหาที่จะแทรก กดปุ่มแปะ ในการที่จะยกเลิกการแทรกเนื้อหา กดปุ่มยกเลิก" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Save.js new file mode 100644 index 0000000..4f22ac6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "บันทึก" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/ShowBlockNodes.js new file mode 100644 index 0000000..1e20d9a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "แสดงอิลิเมนต์บล็อก HTML" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Smiley.js new file mode 100644 index 0000000..df827d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "แทรกไอคอนแสดงอารมณ์", + emoticonSmile: "ยิ้ม", + emoticonLaughing: "หัวเราะ", + emoticonWink: "ขยิบตา", + emoticonGrin: "ยิ้มกว้าง", + emoticonCool: "เจ๋ง", + emoticonAngry: "โกรธ", + emoticonHalf: "ครึ่งซีก", + emoticonEyebrow: "คิ้ว", + emoticonFrown: "หน้าบึ้ง", + emoticonShy: "อาย", + emoticonGoofy: "โง่", + emoticonOops: "oops", + emoticonTongue: "แลบลิ้น", + emoticonIdea: "ความคิด", + emoticonYes: "ใช่", + emoticonNo: "ไม่ใช่", + emoticonAngel: "โมโห", + emoticonCrying: "ร้องไห้", + emoticonHappy: "มีความสุข" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/SpellCheck.js new file mode 100644 index 0000000..83cc92f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "ตรวจสอบการสะกดคำแบบแบตช์", + unfound: "ไม่พบ", + skip: "ข้าม", + skipAll: "ข้ามทั้งหมด", + toDic: "เพิ่งลงในพจนานุกรม", + suggestions: "การแนะนำ", + replace: "แทนที่", + replaceWith: "แทนที่ด้วย", + replaceAll: "แทนที่ทั้งหมด", + cancel: "Cancel", + msg: "ไม่พบคำที่สะกดผิด", + iSkip: "ข้ามนี้", + iSkipAll: "ข้ามที่เหมือนนี้", + iMsg: "ไม่มีการแนะนำการสะกด" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/TableDialog.js new file mode 100644 index 0000000..4491e10 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "แทรกตาราง", + modifyTableTitle: "ปรับเปลี่ยนไขตาราง", + rows: "แถว:", + columns: "คอลัมน์:", + align: "จัดตำแหน่ง:", + cellPadding: "ส่วนเสริมเซลล์:", + cellSpacing: "ระยะห่างเซลล์:", + tableWidth: "ความกว้างของตาราง:", + backgroundColor: "สีพื้นหลัง:", + borderColor: "สีเส้นขอบ:", + borderThickness: "ความหนาเส้นขอบ", + percent: "เปอร์เซ็นต์", + pixels: "พิกเซล", + "default": "ดีฟอลต์", + left: "ซ้าย", + center: "กึ่งกลาง", + right: "ขวา", + buttonSet: "ตั้งค่า", // translated elsewhere? + buttonInsert: "แทรก", + buttonCancel: "ยกเลิก", + + selectTableLabel: "เลือกตาราง", + insertTableRowBeforeLabel: "เพิ่มแถวก่อน", + insertTableRowAfterLabel: "เพิ่มแถวหลัง", + insertTableColumnBeforeLabel: "เพิ่มคอลัมน์ก่อน", + insertTableColumnAfterLabel: "เพิ่มคอลัมน์หลัง", + deleteTableRowLabel: "ลบแถว", + deleteTableColumnLabel: "ลบคอลัมน์" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/TextColor.js new file mode 100644 index 0000000..50de4f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "เซ็ต", + "cancelButtonText": "ยกเลิก" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/latinEntities.js new file mode 100644 index 0000000..b1ea2c6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/th/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"เครื่องหมายอัศเจรีย์กลับหัว", + cent:"เครื่องหมาย เซ็นต์", + pound:"เครื่องหมายปอนด์", + curren:"เครื่องหมายสกุลเงิน", + yen:"เครื่องหมาย เยน\เครื่องหมาย หยวน", + brvbar:"แถบแยก\nแถบแยกแนวตั้ง", + sect:"เครื่องหมายแบ่งส่วน", + uml:"ไดเอเรซิส\nช่องว่างของไดเอเรซิส", + copy:"เครื่องหมายลิขสิทธิ์", + ordf:"ตังบ่งชี้ลำดับของผู้หญิง", + laquo:"เครื่องหมายคำพูดที่ชี้ไปทางซ้าย\nguillemet ที่ชี้ไปทางซ้าย", + not:"ลัญญลักษณ์ น็อท", + shy:"ซิร์ฟไฮเฟน\nไฮเฟนการตัดสินใจ", + reg:"ลัญญลักษณ์การจดทะเบียน\nลัญญลักษณ์เครื่องหมายการค้าจดทะเบียน", + macr:"ไมครอน\nช่องว่างของไมครอน\noverline\nAPL overbar", + deg:"สัญญลักษณ์องศา", + plusmn:"เครื่องหมายบวก-ลบ\nเครื่องหมายบวก-หรือ-ลบ", + sup2:"ตัวยกสอง\nตัวยกหลักสอง\nยกกำลังสอง", + sup3:"ตัวยกสาม\nตัวยกหลักสาม\ncubed", + acute:"acute accent\nช่องว่างของอคิวท์", + micro:"เครื่องหมายไมโคร", + para:"เครื่องหมาย pilcrow\nเครื่องหมายย่อหน้า", + middot:"จุดกึ่งกลาง\nคอมม่า Georgian\nจุดกึ่งกลางภาษากรีซ", + cedil:"ซีดิลลา\nช่องว่างของซีดิลลา", + sup1:"ตัวยกหนึ่ง\nตัวยกหลักหนึ่ง", + ordm:"ตังบ่งชี้ลำดับของผู้ชาย", + raquo:"เครื่องหมายคำพูดที่ชี้ไปทางขวา\nguillemet ที่ชี้ไปทางขวา", + frac14:"เศษหนึ่งส่วนสี่แบบหยาบๆ\nเศษหนึ่งส่วนสี่", + frac12:"เศษหนึ่งส่วนสองแบบหยาบๆ\nเศษหนึ่งส่วนสอง", + frac34:"เศษสามส่วนสี่แบบหยาบๆ\nเศษสามส่วนสี่", + iquest:"เครื่องหมายคำถามกลับหัว\nเครื่อหมายคำถามกลับหัว", + Agrave:"อักษร A ตัวใหญ่ภาษาละติน A ที่มีเครื่องหมายกราฟ\nอักษร A ตัวใหญ่ภาษาละตินที่มีเครื่องหมายกราฟ", + Aacute:"อักษรละติน A ตัวใหญ่ พร้อมเครื่องหมายอคิวท์", + Acirc:"อักษรละติน A ตัวใหญ่ที่มีเครื่องหมายเซอร์คัมเฟลกซ์ ", + Atilde:"อักษรละติน A ตัวใหญ่ที่มีเครื่องหมายทิลเดอ", + Auml:"อักษรละติน A ตัวใหญ่ที่มีเครื่องหมายไดเอเรซิส", + Aring:"อักษรละติน A ตัวใหญ่ที่มีเครื่องหมายวงแหวนด้านบน\nอักษรละติน A ตัวใหญ่ที่มีเครื่องหมายวงแหวน", + AElig:"อักษรละติน AE ตัวใหญ่\nอักษรละติน AE ตัวใหญ่ที่ติดกัน", + Ccedil:"อักษรละติน C ตัวใหญ่ที่มีเครื่องหมายซีดิลลา", + Egrave:"อักษรละติน E ตัวใหญ่ที่มีเครื่องหมายกราฟ", + Eacute:"อักษรละติน E ตัวใหญ่ที่มีเครื่องหมายอคิวท์", + Ecirc:"อักษรละติน E ตัวใหญ่ที่มีเครื่องหมายเซอร์คัมเฟลกซ์", + Euml:"อักษรละติน E ตัวใหญ่ที่มีเครื่องหมายไดเอเรซิส", + Igrave:"อักษรละติน I ตัวใหญ่ที่มีเครื่องหมายกราฟ", + Iacute:"อักษรละติน I ตัวใหญ่ที่มีเครื่องหมายอคิวท์", + Icirc:"อักษรละติน I ตัวใหญ่ที่มีเครื่องหมายเซอร์คัมเฟลกซ์", + Iuml:"อักษรละติน I ตัวใหญ่ที่มีเครื่องหมายไดเอเรซิส", + ETH:"อักษรละติน ETH ตัวใหญ่", + Ntilde:"อักษรละติน N ตัวใหญ่ที่มีเครื่องหมายทิลเดอ", + Ograve:"อักษรละติน O ตัวใหญ่ที่มีเครื่องหมายกราฟ", + Oacute:"อักษรละติน O ตัวใหญ่ที่มีเครื่องหมายอคิวท์", + Ocirc:"อักษรละติน O ตัวใหญ่ที่มีเครื่องหมายเซอร์คัมเฟลก", + Otilde:"อักษรละติน O ตัวใหญ่ที่มีเครื่องหมายทิลเดอ", + Ouml:"อักษรละติน O ตัวใหญ่ที่มีเครื่องหมายไดเอเรซิส", + times:"เครื่องหมายคูณ", + Oslash:"อักษรละติน O ตัวใหญ่ที่มีเครื่องหมายแลช\nกษรละติน O ตัวใหญ่ที่มีเครื่องหมายสแลช", + Ugrave:"อักษรละติน U ตัวใหญ่ที่มีเครื่องหมายกราฟ", + Uacute:"อักษรละติน U ตัวใหญ่ที่มีเครื่องหมายอคิวท์", + Ucirc:"อักษรละติน U ตัวใหญ่ที่มีเครื่องหมายเซอร์คัมเฟลกซ์", + Uuml:"อักษรละติน U ตัวใหญ่ที่มีเครื่องหมายไดเอเรซิส", + Yacute:"อักษรละติน Y ตัวใหญ่ที่มีเครื่องหมายอคิวท์", + THORN:"อักษรละติน THORN ตัวใหญ่", + szlig:"อักษร sharp s ตัวเล็กภาษาละติน\ness-zed", + agrave:"อักษร a ตัวเล็กภาษาละตินที่มีเครื่องหมายกราฟ\nอักษร a ตัวล็กภาษาละตินที่มีเครื่องหมายกราฟ", + aacute:"อักษร a ตัวเล็กภาษาละตินที่มีเครื่องหมายอคิวท์", + acirc:"อักษร a ตัวเล็กภาษาละตินที่มีเครื่องหมายเซอร์คัมเฟลกซ์", + atilde:"อักษร a ตัวเล็กภาษาละตินที่มีเครื่องหมายทิลเดอ", + auml:"อักษร a ตัวเล็กภาษาละตินที่มีเครื่องหมายไดเอเรซิส", + aring:"อักษร a ตัวเล็กภาษาละตินที่มีวงแหวนข้างบน\nอักษร a ตัวล็กภาษาละตินที่มีวงแหวน", + aelig:"อักษร ae ตัวเล็กภาษาละติน\nอักษร ae ตัวเล็กภาษาละตินที่ติดกัน", + ccedil:"อักษร c ตัวเล็กภาษาละตินที่มีเครื่องหมายซีดิลลา", + egrave:"อักษร c ตัวเล็กภาษาละตินที่มีเครื่องหมายกราฟ", + eacute:"อักษร c ตัวเล็กภาษาละตินที่มีเครื่องหมายอคิวท์", + ecirc:"อักษร e ตัวเล็กภาษาละตินที่มีเครื่องหมายเซอร์คัมเฟลก", + euml:"อักษร e ตัวเล็กภาษาละตินที่มีเครื่องหมายไดเอเรซิส", + igrave:"อักษร i ตัวเล็กภาษาละตินที่มีเครื่องหมายกราฟ", + iacute:"อักษร i ตัวเล็กภาษาละตินที่มีเครื่องหมายอคิวท์", + icirc:"อักษร i ตัวเล็กภาษาละตินที่มีเครื่องหมายเซอร์คัมเฟลกซ์", + iuml:"อักษร i ตัวเล็กภาษาละตินที่มีเครื่องหมายไดเอเรซิส", + eth:"อักษร eth ตัวเล็กภาษาละติน", + ntilde:"อักษร n ตัวเล็กภาษาละตินที่มีเครื่องหมายทิลเดอ", + ograve:"อักษร o ตัวเล็กภาษาละตินที่มีเครื่องหมายกราฟ", + oacute:"อักษร o ตัวเล็กภาษาละตินที่มีเครื่องหมายอคิวท์", + ocirc:"อักษร o ตัวเล็กภาษาละตินที่มีเครื่องหมายเซอร์คัมเฟลกซ์", + otilde:"อักษร o ตัวเล็กภาษาละตินที่มีเครื่องหมายทิลเดอ", + ouml:"อักษร o ตัวเล็กภาษาละตินที่มีเครื่องหมายไดเอเรซิส", + divide:"เครื่องหมายหาร", + oslash:"อักษรละติน o ตัวเล็กที่มีเครื่องหมายแลช\nอักษรละติน o ตัวเล็กที่มีเครื่องหมายสแลช", + ugrave:"อักษร u ตัวเล็กภาษาละตินที่มีเครื่องหมายกราฟ", + uacute:"อักษร u ตัวเล็กภาษาละตินที่มีเครื่องหมายอคิวท์", + ucirc:"อักษร u ตัวเล็กภาษาละตินที่มีเครื่องหมายเซอร์คัมเฟลกซ์", + uuml:"อักษร u ตัวเล็กภาษาละตินที่มีเครื่องหมายไดเอเรซิส", + yacute:"อักษร y ตัวเล็กภาษาละตินที่มีเครื่องหมายอคิวท์", + thorn:"อักษร thorn ตัวเล็กภาษาละติน", + yuml:"อักษร y ตัวเล็กภาษาละตินที่มีเครื่องหมายไดเอเรซิส", + +// Greek Characters and Symbols + fnof:"อักษร f ตัวเล็กภาษาละตินที่มีห่วง\nฟังก์ชัน\nflorin", + Alpha:"อักษรอัลฟาตัวใหญ่ภาษากรีซ", + Beta:"อักษรเบตาตัวใหญ่ภาษากรีซ", + Gamma:"อักษรแกมม่าตัวใหญ่ภาษากรีซ", + Delta:"อักษรเดลตาตัวใหญ่ภาษากรีซ", + Epsilon:"อักษรเอปซีลอนตัวใหญ่ภาษากรีซ", + Zeta:"อักษรซีตาตัวใหญ่ภาษากรีซ", + Eta:"อักษรอีตาตัวใหญ่ภาษากรีซ", + Theta:"อักษรทีตาตัวใหญ่ภาษากรีซ", + Iota:"อักษรไอโอตาตัวใหญ่ภาษากรีซ", + Kappa:"อักษรแคปปาตัวใหญ่ภาษากรีซ", + Lambda:"อักษรแลมดาตัวใหญ่ภาษากรีซ", + Mu:"อักษร mu ตัวใหญ่ภาษากรีซ", + Nu:"อักษร nu ตัวใหญ่ภาษากรีซ", + Xi:"อักษร xi ตัวใหญ่ภาษากรีซ", + Omicron:"อักษรโอไมครอนตัวใหญ่ภาษากรีซ", + Pi:"อักษร pi ตัวใหญ่ภาษากรีซ", + Rho:"อักษร rho ตัวใหญ่ภาษากรีซ", + Sigma:"อักษรซิกมาตัวใหญ่ภาษากรีซ", + Tau:"อักษร tau ตัวใหญ่ภาษากรีซ", + Upsilon:"อักษรอิปไซลอนตัวใหญ่ภาษากรีซ", + Phi:"อักษร phi ตัวใหญ่ภาษากรีซ", + Chi:"อักษร chi ตัวใหญ่ภาษากรีซ", + Psi:"อักษร psi ตัวใหญ่ภาษากรีซ", + Omega:"อักษรโอเมกาตัวใหญ่ภาษากรีซ", + alpha:"อักษรอัลฟาตัวเล็กภาษากรีซ", + beta:"อักษรเบตาตัวเล็กภาษากรีซ", + gamma:"อักษรแกมม่าตัวเล็กภาษากรีซ", + delta:"อักษรเดลตาตัวเล็กภาษากรีซ", + epsilon:"อักษรเอปซิลอนตัวเล็กภาษากรีซ", + zeta:"อักษรซีตาตัวเล็กภาษากรีซ", + eta:"อักษรอีตาตัวเล็กภาษากรีซ", + theta:"อักษรทีตาตัวเล็กภาษากรีซ", + iota:"อักษรไอโอตาตัวเล็กภาษากรีซ", + kappa:"อักษรแคปปาตัวเล็กภาษากรีซ", + lambda:"อักษรแลมดาตัวเล็กภาษากรีซ", + mu:"อักษร mu ตัวเล็กภาษากรีซ", + nu:"อักษร nu ตัวเล็กภาษากรีซ", + xi:"อักษร xi ตัวเล็กภาษากรีซ", + omicron:"อักษรโอไมครอนตัวเล็กภาษากรีซ", + pi:"อักษร pi ตัวเล็กภาษากรีซ", + rho:"อักษร rho ตัวเล็กภาษากรีซ", + sigmaf:"อักษรซิกมาสุดท้ายตัวเล็กภาษากรีซ", + sigma:"อักษรซิกมาตัวเล็กภาษากรีซ", + tau:"อักษร tau ตัวเล็กภาษากรีซ", + upsilon:"อักษรอิปไซลอนตัวเล็กภาษากรีซ", + phi:"อักษร phi ตัวเล็กภาษากรีซ", + chi:"อักษร chi ตัวเล็กภาษากรีซ", + psi:"อักษร psi ตัวเล็กภาษากรีซ", + omega:"อักษรโอเมกาตัวเล็กภาษากรีซ", + thetasym:"อักษรสัญญลักษณ์ทีตาตัวเล็กภาษากรีซ", + upsih:"อักษรอิปไซลอนภาษากริซที่มีสัญญลักษณ์ห่วง", + piv:"สัญญลักษณ์ pi ภาษากรีซ", + bull:"จุดนำ\nวงกลมสีดำเล็กๆ", + hellip:"จุดแนวนอน\nจุดนำสามจุด", + prime:"เครื่องหมายไพร์ม\nนาที\nฟุต", + Prime:"เครื่องหมายดับเบิลไพร์ม\nวินาที\nนิ้ว", + oline:"overline\nช่องว่าง overscore", + frasl:"สแลชเศษส่วน", + weierp:"สคริปต์ P ตัวใหญ่\npower set\nWeierstrass p", + image:"ตัวอักษร I สีดำตัวใหญ่\nส่วนสมมุติ", + real:"ตัวอักษร R สีดำตัวใหญ่\nสัญญลักษณ์ส่วนที่แท้จริง", + trade:"สัญญลักษณ์เครื่องหมายการค้า", + alefsym:"สัญญลักษณ์ alef\nfirst transfinite cardinal", + larr:"ลูกศรชี้ไปทางซ้าย", + uarr:"ลูกศรชี้ขึ้นบน", + rarr:"ลูกศรชี้ไปทางขวา", + darr:"ลูกศรชี้ลง", + harr:"ลูกศรซ้ายขวา", + crarr:"ลูกศรชี้ลงที่มีมุมไปทางซ้าย\ncarriage return", + lArr:"ลูกศรสองตัวชี้ไปทางซ้าย", + uArr:"ลูกศรสองตัวที่ชี้ไปข้างบน", + rArr:"ลูกศรสองตัวชี้ไปทางขวา", + dArr:"ลูกศรสองตัวที่ชี้ไปด้านล่าง", + hArr:"ลูกศรสองตัวที่ชี้ไปซ้ายขวา", + forall:"สำหรับทั้งหมด", + part:"แตกต่างบางส่วน", + exist:"ที่มีอยู่", + empty:"เซ็ตว่าง\nเซ็ต null\nเส้นผ่าศูนย์กลาง", + nabla:"nabla\nความแตกต่างไปข้างหลัง", + isin:"อิลิเมนต์ของ", + notin:"ไม่ใช่อิลิเมนต์ของ", + ni:"รวมเป็นสมาชิก", + prod:"ผลิตภัณฑ์ n-ary\เครื่องหมายผลิตภัณฑ์", + sum:"n-ary sumation", + minus:"เครื่องหมายลบ", + lowast:"โอเปอเรเตอร์เครื่องหมายดอกจัน", + radic:"สแควร์รูท\nเครื่องหมายราก", + prop:"เป็นสัดส่วนกับ", + infin:"อนันต์", + ang:"มุม", + and:"โลจิคัลและ\nwedge", + or:"โลจิคัล หรือ\nvee", + cap:"อินเตอร์เซกชัน\ncap", + cup:"ยูเนียน\ncup","int":"อินทีกรัล", + there4:"ดังนั้น", + sim:"โอเปอเรเตอร์ดิลเดอ\nแตกต่างกับ\nเหมือนกับ", + cong:"ประมาณเท่ากับ", + asymp:"เกือบเท่ากับ\nasymptotic to", + ne:"ไม่เท่ากับ", + equiv:"เหมือนกับ", + le:"น้อยกว่าหรือเท่ากับ", + ge:"มากกว่าหรือเท่ากับ", + sub:"เซ็ตย่อยของ", + sup:"ซุปเปอร์เซ็ตของ", + nsub:"ไม่ใช่เซ็ตย่อยของ", + sube:"เซ็ตย่อยของหรือเท่ากับ", + supe:"ซุปเปอร์เซ็ตของหรือเท่ากับ", + oplus:"เครื่องหมายวงกลม\nผลรวมโดยตรง", + otimes:"วงกลมครั้ง\nผลิตภัณฑ์เวคเตอร์", + perp:"up tack\northogonal to\nperpendicular", + sdot:"โอเปอเรเตอร์จุด", + lceil:"เพดานด้านซ้าย\nAPL upstile", + rceil:"เพดานด้านขวา", + lfloor:"พื้นด้านซ้าย\nAPL downstile", + rfloor:"พื้นด้านซ้าย", + lang:"วงเล็บซ้าย", + rang:"วงเล็บขวา", + loz:"lozenge", + spades:"black spade suit", + clubs:"black club suit\nshamrock", + hearts:"black heart suit\nvalentine", + diams:"black diamond suit", + OElig:"อักษรละติน OE ตัวใหญ่", + oelig:"อักษร oe ตัวเล็กติดกันภาษาละติน", + Scaron:"อักษรละติน S ตัวใหญ่ที่มีเครื่องหมายคารอน", + scaron:"อักษรละติน s ตัวเล็กที่มีเครื่องหมายคารอน", + Yuml:"อักษรละติน Y ตัวใหญ่ที่มีเครื่องหมายไดเอเรซิส", + circ:"ตัวแก้ไขตัวอักษรเซอร์คัมเฟลกซ์", + tilde:"ทิลเดอตัวเล็ก", + ensp:"ช่องว่าง en", + emsp:"ช่องว่าง em", + thinsp:"ช่องว่างแบบบาง", + zwnj:"ไม่ใช่ตัวรวมที่ความกว้างเป็นศูนย์", + zwj:"ตัวรวมที่ความกว้างเป็นศูนย์", + lrm:"มาร์กซ้ายไปขวา", + rlm:"มาร์กขวาไปซ้าย", + ndash:"แดช en", + mdash:"แดช em", + lsquo:"เครื่องหมายคำพูดเดี่ยวด้านซ้าย", + rsquo:"เครื่องหมายคำพูดเดี่ยวด้านขวา", + sbquo:"เครื่องหมายคำพูด low-9 เดี่ยว", + ldquo:"เครื่องหมายคำพูดคู่ด้านซ้าย", + rdquo:"เครื่องหมายคำพูดคู่ด้านขวา", + bdquo:"เครื่องหมายคำพูด low-9 คู่", + dagger:"dagger", + Dagger:"dagger คู่", + permil:"เครื่องหมาย per mille", + lsaquo:"เครื่องหมายคำพูดเดี่ยวที่ชี้ไปด้านซ้าย", + rsaquo:"เครื่องหมายคำพูดเดี่ยวที่ชี้ไปด้านขวา", + euro:"เครื่องหมายยูโร" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/AutoSave.js new file mode 100644 index 0000000..7cb0275 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/AutoSave.js @@ -0,0 +1,18 @@ +define( +//begin v1.x content +({ + "saveLabel": "Kaydet", + "saveSettingLabelOn": "Otomatik Kaydetme Aralığını Ayarla...", + "saveSettingLabelOff": "Otomatik Kaydetmeyi Kapat", + "saveSettingdialogTitle": "Otomatik Kaydet", + "saveSettingdialogDescription": "Otomatik Kaydetme Aralığını Belirt", + "saveSettingdialogParamName": "Otomatik Kaydetme Aralığı", + "saveSettingdialogParamLabel": "dak", + "saveSettingdialogButtonOk": "Aralığı Ayarla", + "saveSettingdialogButtonCancel": "İptal", + "saveMessageSuccess": "${0} konumuna kaydedildi", + "saveMessageFail": "${0} konumuna kaydedilemedi" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Blockquote.js new file mode 100644 index 0000000..d399017 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Blockquote.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "blockquote": "Öbek" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Breadcrumb.js new file mode 100644 index 0000000..ff18e96 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} Eylemleri", + "selectContents": "İçindekileri seç", + "selectElement": "Öğeyi seç", + "deleteElement": "Öğeyi sil", + "deleteContents": "İçindekileri sil", + "moveStart": "İmleci başa taşı", + "moveEnd": "İmleci sona taşı" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/CollapsibleToolbar.js new file mode 100644 index 0000000..4d75416 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/CollapsibleToolbar.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "collapse": "Düzenleyici Araç Çubuğunu Daralt", + "expand": "Düzenleyici Araç Çubuğunu Genişlet" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/FindReplace.js new file mode 100644 index 0000000..8087970 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/FindReplace.js @@ -0,0 +1,26 @@ +define( +//begin v1.x content +({ + "findLabel": "Bul:", + "findTooltip": "Bulunacak metni girin", + "replaceLabel": "Değiştir:", + "replaceTooltip": "Değiştirilecek metni girin", + "findReplace": "Bul ve Değiştir", + "matchCase": "Büyük/küçük harf eşleştir", + "matchCaseTooltip": "Büyük/küçük harf eşleştir", + "backwards": "Geri", + "backwardsTooltip": "Metni geriye doğru ara", + "replaceAllButton": "Tümünü Değiştir", + "replaceAllButtonTooltip": "Tüm metni değiştir", + "findButton": "Bul", + "findButtonTooltip": "Metni bul", + "replaceButton": "Değiştir", + "replaceButtonTooltip": "Metni değiştir", + "replaceDialogText": "${0} tekrar değiştirildi.", + "eofDialogText": "Son tekrar ${0}", + "eofDialogTextFind": "bulundu", + "eofDialogTextReplace": "değiştirildi" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/InsertAnchor.js new file mode 100644 index 0000000..9db6349 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/InsertAnchor.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + insertAnchor: "Tutturucu Ekle", + title: "Tutturucu Özellikleri", + anchor: "Ad:", + text: "Açıklama:", + set: "Ayarla", + cancel: "İptal" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/InsertEntity.js new file mode 100644 index 0000000..96fab89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "Simge Ekle" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/LocalImage.js new file mode 100644 index 0000000..82817e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/LocalImage.js @@ -0,0 +1,15 @@ +define( +//begin v1.x content +({ + insertImageTitle: "Resim Ekle", + url: "Resim", + browse: "Göz at...", + text: "Açıklama", + set: "Ekle", + invalidMessage: "Geçersiz resim dosyası tipi", + prePopuTextUrl: "Bir resim URL'si girin", + prePopuTextBrowse: " ya da yerel bir dosyaya göz atın." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/PageBreak.js new file mode 100644 index 0000000..db593fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "Sayfa Sonu" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/PasteFromWord.js new file mode 100644 index 0000000..de1463e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/PasteFromWord.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "Word'den Kopyala", + "paste": "Yapıştır", + "cancel": "İptal", + "instructions": "İçeriği Word'den aşağıdaki metin kutusuna yapıştırın. Eklediğiniz içerikten memnunsanız, Yapıştır düğmesini tıklatın. Metin eklemeyi durdurmak için İptal düğmesini tıklatın." +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Preview.js new file mode 100644 index 0000000..0fd1c66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "Önizleme" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/SafePaste.js new file mode 100644 index 0000000..8f290cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "Doğrudan kopyalama geçersiz kılındı. Lütfen bu iletişim kutusundaki içeriği standart tarayıcı klavyesini ya da menüde yer alan yapıştırma seçeneklerini kullanarak yapıştırın. Eklenecek içeriğe karar verdikten sonra yapıştır düğmesine basın. İçeriği eklemeyi durdurmak için iptal düğmesine basın." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Save.js new file mode 100644 index 0000000..5e9d22c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "Kaydet" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/ShowBlockNodes.js new file mode 100644 index 0000000..61f6eaf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "HTML Bloğu Öğelerini Göster" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Smiley.js new file mode 100644 index 0000000..6944bd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "İfade Ekle", + emoticonSmile: "gülümseme", + emoticonLaughing: "kahkaha", + emoticonWink: "göz kırpma", + emoticonGrin: "sırıtma", + emoticonCool: "havalı", + emoticonAngry: "kızgın", + emoticonHalf: "kafası karışık ifade", + emoticonEyebrow: "kaşı kalkık ifade", + emoticonFrown: "kaşı çatık ifade", + emoticonShy: "utangaç", + emoticonGoofy: "ağzı açık ifade", + emoticonOops: "şaşıran ifade", + emoticonTongue: "dil çıkaran ifade", + emoticonIdea: "aklına bir fikir gelmiş", + emoticonYes: "evet", + emoticonNo: "hayır", + emoticonAngel: "melek", + emoticonCrying: "ağlayan ifade", + emoticonHappy: "mutlu ifade" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/SpellCheck.js new file mode 100644 index 0000000..13a61fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/SpellCheck.js @@ -0,0 +1,21 @@ +define( +//begin v1.x content +({ + widgetLabel: "Toplu Yazım Denetimi", + unfound: "Bulunamadı", + skip: "Atla", + skipAll: "Tümünü Atla", + toDic: "Sözlüğe ekle", + suggestions: "Öneriler", + replace: "Değiştir", + replaceWith: "Şununla Değiştir", + replaceAll: "Tümünü Değiştir", + cancel: "İptal", + msg: "Yazım hatası bulunamadı", + iSkip: "Bunu atla", + iSkipAll: "Buna benzeyenlerin tümünü atla", + iMsg: "Yazım önerisi yok" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/TableDialog.js new file mode 100644 index 0000000..cc2b99f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/TableDialog.js @@ -0,0 +1,34 @@ +define( +//begin v1.x content +({ + insertTableTitle: "Tablo Ekle", + modifyTableTitle: "Tabloyu Değiştir", + rows: "Satırlar:", + columns: "Sütunlar:", + align: "Hizala:", + cellPadding: "Hücre Doldurma:", + cellSpacing: "Hücre Aralığı:", + tableWidth: "Tablo Genişliği", + backgroundColor: "Arka Plan Rengi:", + borderColor: "Kenarlık Rengi:", + borderThickness: "Kenarlık Kalınlığı", + percent: "yüzde", + pixels: "piksel", + "default": "varsayılan", + left: "sol", + center: "orta", + right: "sağ", + buttonSet: "Ayarla", // translated elsewhere? + buttonInsert: "Ekle", + buttonCancel: "İptal", + + selectTableLabel: "Tablo Seç", + insertTableRowBeforeLabel: "Satırı Önüne Ekle", + insertTableRowAfterLabel: "Satırı Arkasına Ekle", + insertTableColumnBeforeLabel: "Sütunu Önüne Ekle", + insertTableColumnAfterLabel: "Sütunu Arkasına Ekle", + deleteTableRowLabel: "Satırı Sil", + deleteTableColumnLabel: "Sütunu Sil" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/TextColor.js new file mode 100644 index 0000000..9f6b1c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/TextColor.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + "setButtonText": "Ayarla", + "cancelButtonText": "İptal" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/latinEntities.js new file mode 100644 index 0000000..f773e61 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/tr/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"ters ünlem işareti", + cent:"sent işareti", + pound:"sterlin işareti", + curren:"döviz işareti", + yen:"yen işareti\nyuan işareti", + brvbar:"kesik çubuk\nkesik çubuk", + sect:"bölüm işareti", + uml:"umlaut işareti\naralıklı umlaut işareti", + copy:"telif hakkı işareti", + ordf:"dişi sıra göstergesi", + laquo:"sol açılı çift tırnak işareti\nleft pointing guillemet", + not:"değil işareti", + shy:"koşullu kesme işareti\nisteğe bağlı kesme işareti", + reg:"tescil işareti\ntescilli ticari marka işareti", + macr:"uzatma işareti\naralıklı uzatma işareti\nüst çizgi\nAPL üstçizgisi", + deg:"derece işareti", + plusmn:"artı-eksi işareti\nartı-veya-eksi işareti", + sup2:"üst simge iki\nüst simge iki rakamı\nkare işareti", + sup3:"üst simge üç\nüst simge üç rakamı\nküp işareti", + acute:"tiz aksan işareti\naralıklı aksan", + micro:"mikro işareti", + para:"pilcrow işareti\nparagraf işareti", + middot:"orta nokta\nGeorgian comma\nGreek middle dot", + cedil:"çengel\naralıklı çengel", + sup1:"üst simge bir\nüst simge bir rakamı", + ordm:"erkek sıra göstergesi", + raquo:"sağ açılı çift tırnak işareti\nright pointing guillemet", + frac14:"dörtte birlik bayağı kesir\ndörtte birlik kesir", + frac12:"bir bölü ikilik bayağı kesir\nbir bölü ikilik kesir", + frac34:"dörtte üçlük bayağı kesir\ndörtte üçlük kesir", + iquest:"ters soru işareti\ndönmüş soru işareti", + Agrave:"Aksan imiyle Latince büyük harf A\nLatince büyük harf A aksanlı", + Aacute:"Vurgu imiyle Latince büyük harf A", + Acirc:"İnceltme imiyle Latince büyük harf A", + Atilde:"Tilde imiyle Latince büyük harf A", + Auml:"Umlaut imiyle Latince büyük harf A", + Aring:"Üstte halka imiyle Latince büyük harf A\nLatince büyük harf A halkalı", + AElig:"Latince büyük harf AE\nLatin büyük birleştirmeli yazım AE", + Ccedil:"Çengel imiyle Latince büyük harf C", + Egrave:"Aksan imiyle Latince büyük harf E", + Eacute:"Vurgu imiyle Latince büyük harf E", + Ecirc:"İnceltme imiyle Latince büyük harf E", + Euml:"Umlaut imiyle Latince büyük harf E", + Igrave:"Aksan imiyle Latince büyük harf I", + Iacute:"Vurgu imiyle Latince büyük harf I", + Icirc:"İnceltme imiyle Latince büyük harf I", + Iuml:"Umlaut imiyle Latince büyük harf I", + ETH:"Latince büyük harf ETH", + Ntilde:"Tilde imiyle Latince büyük harf N", + Ograve:"Aksan imiyle Latince büyük harf O", + Oacute:"Vurgu imiyle Latince büyük harf O", + Ocirc:"İnceltme imiyle Latince büyük harf O", + Otilde:"Tilde imiyle Latince büyük harf O", + Ouml:"Umlaut imiyle Latince büyük harf O", + times:"çarpma işareti", + Oslash:"Bölü işaretiyle Latince büyük harf O\ntaksim işaretiyle Latince büyük harf O", + Ugrave:"Aksan imiyle Latince büyük harf U", + Uacute:"Vurgu imiyle Latince büyük harf U", + Ucirc:"İnceltme imiyle Latince büyük harf U", + Uuml:"Umlaut işaretiyle Latince büyük harf U", + Yacute:"Vurgu imiyle Latince büyük harf Y", + THORN:"Latince büyük harf THORN", + szlig:"Latince küçük harf sert s\ness-zed", + agrave:"Aksan imiyle Latince küçük harf a\nLatince küçük harf a aksanlı", + aacute:"Vurgu imiyle Latince küçük harf a", + acirc:"İnceltme imiyle Latince küçük harf a", + atilde:"Tilde imiyle Latince küçük harf a", + auml:"Umlaut imiyle Latince küçük harf a", + aring:"Üstte halka imiyle Latince küçük harf a\nLatince küçük harf a halkalı", + aelig:"Latince küçük harf ae\nLatince küçük birleştirmeli yazım ae", + ccedil:"Çengel imiyle Latince küçük harf c", + egrave:"Aksan imiyle Latince küçük harf e", + eacute:"Vurgu imiyle Latince küçük harf e", + ecirc:"İnceltme imiyle Latince küçük harf e", + euml:"Umlaut imiyle Latince küçük harf e", + igrave:"Aksan imiyle Latince küçük harf i", + iacute:"Vurgu imiyle Latince küçük harf i", + icirc:"İnceltme imiyle Latince küçük harf i", + iuml:"Umlaut imiyle Latince küçük harf i", + eth:"Latince küçük harf eth", + ntilde:"Tilde imiyle Latince küçük harf n", + ograve:"Aksan imiyle Latince küçük harf o", + oacute:"Vurgu imiyle Latince küçük harf o", + ocirc:"İnceltme imiyle Latince küçük harf o", + otilde:"Tilde imiyle Latince küçük harf o", + ouml:"Umlaut imiyle Latince küçük harf o", + divide:"bölü işareti", + oslash:"Bölü işaretiyle Latince küçük harf o\ntaksim işaretiyle Latince küçük harf o", + ugrave:"Aksan imiyle Latice küçük harf u", + uacute:"Vurgu imiyle Latince küçük harf u", + ucirc:"İnceltme imiyle Latince küçük harf u", + uuml:"Umlaut imiyle Latince küçük harf u", + yacute:"Vurgu imiyle Latince küçük harf y", + thorn:"Latince küçük harf thorn", + yuml:"Umlaut imiyle Latince küçük harf y", + +// Greek Characters and Symbols + fnof:"Kanca imiyle Latince küçük f\nfonksiyon\nflorin", + Alpha:"Yunanca büyük harf alpha", + Beta:"Yunanca büyük harf beta", + Gamma:"Yunanca büyük harf gamma", + Delta:"Yunanca büyük harf delta", + Epsilon:"Yunanca büyük harf epsilon", + Zeta:"Yunanca büyük harf zeta", + Eta:"Yunanca büyük harf eta", + Theta:"Yunanca büyük harf theta", + Iota:"Yunanca büyük harf iota", + Kappa:"Yunanca büyük harf kappa", + Lambda:"Yunanca büyük harf lambda", + Mu:"Yunanca büyük harf mu", + Nu:"Yunanca büyük harf nu", + Xi:"Yunanca büyük harf xi", + Omicron:"Yunanca büyük harf omicron", + Pi:"Yunanca büyük harf pi", + Rho:"Yunanca büyük harf rho", + Sigma:"Yunanca büyük harf sigma", + Tau:"Yunanca büyük harf tau", + Upsilon:"Yunanca büyük harf upsilon", + Phi:"Yunanca büyük harf phi", + Chi:"Yunanca büyük harf chi", + Psi:"Yunanca büyük harf psi", + Omega:"Yunanca büyük harf omega", + alpha:"Yunanca küçük harf alpha", + beta:"Yunanca küçük harf beta", + gamma:"Yunanca küçük harf gamma", + delta:"Yunanca küçük harf delta", + epsilon:"Yunanca küçük harf epsilon", + zeta:"Yunanca küçük harf zeta", + eta:"Yunanca küçük harf eta", + theta:"Yunanca küçük harf theta", + iota:"Yunanca küçük harf iota", + kappa:"Yunanca küçük harf kappa", + lambda:"Yunanca küçük harf lambda", + mu:"Yunanca küçük harf mu", + nu:"Yunanca küçük harf nu", + xi:"Yunanca küçük harf xi", + omicron:"Yunanca küçük harf omicron", + pi:"Yunanca küçük harf pi", + rho:"Yunanca küçük harf rho", + sigmaf:"Yunanca küçük harf final", + sigma:"Yunanca küçük harf final", + tau:"Yunanca küçük harf tau", + upsilon:"Yunanca küçük harf final", + phi:"Yunanca küçük harf phi", + chi:"Yunanca küçük harf final", + psi:"Yunanca küçük harf psi", + omega:"Yunanca küçük harf final", + thetasym:"Yunanca küçük harf theta", + upsih:"Kanca işaretiyle Yunanca upsilon", + piv:"Yunanca pi işareti", + bull:"madde imi\nsiyah küçük daire", + hellip:"yanyana üç nokta\nüç nokta", + prime:"üssü\ndakika\nfit", + Prime:"üssü iki\nsaniye\ninç", + oline:"üstçizgi\naralıklı üstçizgi", + frasl:"bölme işaretli kesir", + weierp:"el yazısı büyük harf P\nkuvvet kümesi\nWeierstrass p", + image:"Gotik büyük harf I\nsanal kısım", + real:"Gotik büyük harf R\ngerçek kısım işareti", + trade:"ticari marka işareti", + alefsym:"alef işareti\nbirinci sonsuz sayma sayısı", + larr:"sol ok işareti", + uarr:"yukarı ok işareti", + rarr:"sağ ol işareti", + darr:"aşağı ok işareti", + harr:"sol sağ ok", + crarr:"sola dönen aşağı ok\nsatır başı karakteri", + lArr:"sola çift ok", + uArr:"yukarı çift ok", + rArr:"sağa çift ok", + dArr:"aşağı çift ok", + hArr:"sola sağa çift ok", + forall:"for all", + part:"kısmi türev", + exist:"vardır", + empty:"boş küme\nboş küme\nçap", + nabla:"nabla\ngeriye doğru fark", + isin:"elemanıdır", + notin:"elemanı değildir", + ni:"kapsar", + prod:"n-ary çarpım\çarpım işareti", + sum:"n-ary toplamı", + minus:"eksi işareti", + lowast:"asterisk işleci", + radic:"kare kök\nkök işareti", + prop:"orantılı", + infin:"sonsuzluk", + ang:"açı", + and:"mantıklı ve\nwedge", + or:"mantıklı veya\nvee", + cap:"arakesit\ncap", + cup:"birleşim\ncup","int":"integral", + there4:"bu nedenle", + sim:"tilde işleci\ndeğişir\nbenzer", + cong:"yaklaşık olarak eşit", + asymp:"neredeyse eşit\nkavuşmaz", + ne:"eşit değil", + equiv:"aynı", + le:"daha küçük ya da eşit", + ge:"daha büyük ya da eşit", + sub:"alt kümesi", + sup:"üst kümesi", + nsub:"alt kümesi değil", + sube:"alt kümesi ya da eşit", + supe:"üst kümesi ya da eşit", + oplus:"daire içinde artı\ndolaysız toplam", + otimes:"daire içinde çarpı\nvektörel çarpım", + perp:"up tack\ndik\ndikey", + sdot:"nokta işleci", + lceil:"left ceiling\nAPL upstile", + rceil:"right ceiling", + lfloor:"left floor\nAPL downstile", + rfloor:"right floor", + lang:"sol açılı ayraç", + rang:"sağ açılı ayraç", + loz:"baklava biçimi", + spades:"siyah maça işareti", + clubs:"siyah sinek işareti\nyonca", + hearts:"siyah kupa işareti\nkalp", + diams:"siyah karo işareti", + OElig:"Latince büyük birleşik harf OE", + oelig:"Latince küçük birleşik harf oe", + Scaron:"Karon imiyle Latince büyük harf S", + scaron:"Karon imiyle Latince küçük harf s", + Yuml:"Umlaut imiyle Latince büyük harf Y", + circ:"niteleyici harf inceltme vurgusu", + tilde:"küçük tilde", + ensp:"kısa boşluk", + emsp:"uzun boşluk", + thinsp:"ince boşluk", + zwnj:"sıfır genişlik ayırıcı", + zwj:"sıfır genişlik birleştirici", + lrm:"soldan sağa işareti", + rlm:"sağdan sola işareti", + ndash:"tire", + mdash:"uzun tire", + lsquo:"sol tek tırnak işareti", + rsquo:"sağ tek tırnak işareti", + sbquo:"9 biçimli alçak tek tırnak işareti", + ldquo:"sol çift tırnak işareti", + rdquo:"sağ çift tırnak işareti", + bdquo:"9 biçimli alçak çift tırnak işareti", + dagger:"kama", + Dagger:"çift kama", + permil:"binde işareti", + lsaquo:"sol açılı tek tırnak işareti", + rsaquo:"sağ açılı tek tırnak işareti", + euro:"euro işareti" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/AutoSave.js new file mode 100644 index 0000000..e75b06e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/AutoSave.js @@ -0,0 +1,17 @@ +define( +//begin v1.x content +({ + "saveLabel": "儲存", + "saveSettingLabelOn": "設定自動儲存間隔...", + "saveSettingLabelOff": "關閉自動儲存", + "saveSettingdialogTitle": "自動儲存", + "saveSettingdialogDescription": "指定自動儲存間隔", + "saveSettingdialogParamName": "自動儲存間隔", + "saveSettingdialogParamLabel": "分鐘", + "saveSettingdialogButtonOk": "設定間隔", + "saveSettingdialogButtonCancel": "取消", + "saveMessageSuccess": "已儲存於 ${0}", + "saveMessageFail": "無法儲存於 ${0}" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Blockquote.js new file mode 100644 index 0000000..dbcb9de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Blockquote.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "blockquote": "區塊引文" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Breadcrumb.js new file mode 100644 index 0000000..6e06911 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} 動作", + "selectContents": "選取內容", + "selectElement": "選取元素", + "deleteElement": "刪除元素", + "deleteContents": "刪除內容", + "moveStart": "將游標移到開頭", + "moveEnd": "將游標移到末尾" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/CollapsibleToolbar.js new file mode 100644 index 0000000..935372a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/CollapsibleToolbar.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "collapse": "收合編輯器工具列", + "expand": "展開編輯器工具列" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/FindReplace.js new file mode 100644 index 0000000..414b189 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "尋找:", + "findTooltip": "輸入要尋找的文字", + "replaceLabel": "取代為:", + "replaceTooltip": "輸入要取代的文字", + "findReplace": "尋找/取代", + "matchCase": "大小寫相符", + "matchCaseTooltip": "大小寫相符", + "backwards": "向後", + "backwardsTooltip": "往回搜尋文字", + "replaceAllButton": "全部取代", + "replaceAllButtonTooltip": "取代所有文字", + "findButton": "尋找", + "findButtonTooltip": "尋找文字", + "replaceButton": "取代", + "replaceButtonTooltip": "取代文字", + "replaceDialogText": "取代了 ${0} 項。", + "eofDialogText": "前次出現 ${0}", + "eofDialogTextFind": "找到", + "eofDialogTextReplace": "已取代" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/InsertAnchor.js new file mode 100644 index 0000000..460b5bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/InsertAnchor.js @@ -0,0 +1,12 @@ +define( +//begin v1.x content +({ + insertAnchor: "插入錨點", + title: "錨點內容", + anchor: "名稱:", + text: "說明:", + set: "設定", + cancel: "取消" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/InsertEntity.js new file mode 100644 index 0000000..a8872ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "插入符號" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/LocalImage.js new file mode 100644 index 0000000..4d1da04 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/LocalImage.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + insertImageTitle: "插入影像", + url: "影像", + browse: "瀏覽...", + text: "說明", + set: "插入", + invalidMessage: "影像檔類型無效", + prePopuTextUrl: "輸入影像 URL", + prePopuTextBrowse: " 或瀏覽本端檔案。" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/PageBreak.js new file mode 100644 index 0000000..b966ada --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "分頁" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/PasteFromWord.js new file mode 100644 index 0000000..3d10208 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/PasteFromWord.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "從 Word 貼上", + "paste": "貼上", + "cancel": "取消", + "instructions": "將 Word 中的內容貼入下方的文字框。在滿意要插入的內容之後,請按貼上按鈕。若要中斷插入文字,請按取消按鈕。" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Preview.js new file mode 100644 index 0000000..1ce6596 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "預覽" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/SafePaste.js new file mode 100644 index 0000000..4708bc1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "已停用直接貼上。請使用標準瀏覽器鍵盤或功能表貼上控制,將內容貼上至此對話框中。一旦您滿意要插入的內容,按下貼上按鈕。若要中斷插入內容,按下取消按鈕。" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Save.js new file mode 100644 index 0000000..a75928d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "儲存" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/ShowBlockNodes.js new file mode 100644 index 0000000..0ff24a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "顯示 HTML 區塊元素" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Smiley.js new file mode 100644 index 0000000..5e5bda4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "插入表情符號", + emoticonSmile: "微笑", + emoticonLaughing: "大笑", + emoticonWink: "眨眼", + emoticonGrin: "露齒而笑", + emoticonCool: "酷", + emoticonAngry: "生氣", + emoticonHalf: "左右為難", + emoticonEyebrow: "揚眉", + emoticonFrown: "皺眉", + emoticonShy: "羞怯", + emoticonGoofy: "傻了", + emoticonOops: "哎喲", + emoticonTongue: "吐舌頭", + emoticonIdea: "思考", + emoticonYes: "對", + emoticonNo: "不對", + emoticonAngel: "守護神", + emoticonCrying: "哭泣", + emoticonHappy: "歡樂派對" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/SpellCheck.js new file mode 100644 index 0000000..8f8dab3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/SpellCheck.js @@ -0,0 +1,20 @@ +define( +//begin v1.x content +({ + widgetLabel: "批次拼字檢查", + unfound: "找不到", + skip: "跳過", + skipAll: "全部跳過", + toDic: "新增至字典", + suggestions: "建議", + replace: "取代", + replaceWith: "取代為", + replaceAll: "全部取代", + cancel: "取消", + msg: "找不到拼錯", + iSkip: "跳過此項", + iSkipAll: "跳過所有如此項的項目", + iMsg: "沒有拼字建議" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/TableDialog.js new file mode 100644 index 0000000..c582b14 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/TableDialog.js @@ -0,0 +1,35 @@ +define( +//begin v1.x content +({ + insertTableTitle: "插入表格", + modifyTableTitle: "修改表格", + rows: "列:", + columns: "欄:", + align: "對齊:", + cellPadding: "資料格行距:", + cellSpacing: "資料格間距:", + tableWidth: "表格寬度:", + backgroundColor: "背景顏色:", + borderColor: "邊框顏色:", + borderThickness: "邊框寬度", + percent: "百分比", + pixels: "像素", + "default": "預設值", + left: "靠左", + center: "置中", + right: "靠右", + buttonSet: "設定", // translated elsewhere? + buttonInsert: "插入", + buttonCancel: "取消", + + selectTableLabel: "選取表格", + insertTableRowBeforeLabel: "在前面新增一個列", + insertTableRowAfterLabel: "在後面新增一個列", + insertTableColumnBeforeLabel: "在前面新增一個直欄", + insertTableColumnAfterLabel: "在後面新增一個直欄", + deleteTableRowLabel: "刪除列", + deleteTableColumnLabel: "刪除欄" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/TextColor.js new file mode 100644 index 0000000..041235a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/TextColor.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "setButtonText": "設定", + "cancelButtonText": "取消" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/latinEntities.js new file mode 100644 index 0000000..9700299 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh-tw/latinEntities.js @@ -0,0 +1,261 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"倒感歎號", + cent:"英分", + pound:"英鎊", + curren:"貨幣符號", + yen:"日圓符號\n人民幣符號", + brvbar:"斷開的豎線\n斷開的垂直線", + sect:"小節符號", + uml:"分音符號\n元音分音", + copy:"著作權符號", + ordf:"陰性序數指示符", + laquo:"左尖雙角引號\n左尖雙引號", + not:"非符號", + shy:"軟連字號\n自由選定的連字號", + reg:"已註冊符號\n註冊商標符號", + macr:"長音符\n間隔長音符\n上線\nAPL 上線", + deg:"度號", + plusmn:"加減符號\n正負號", + sup2:"上標 2\n上標數字 2\n平方", + sup3:"上標 3\n上標數字 3\n立方", + acute:"揚音符\n揚音符", + micro:"µ 符號", + para:"¶ 符號\n段落符號", + middot:"中點號\n中心點\n希臘中點", + cedil:"軟音符號\n間距軟音符號", + sup1:"上標 1\n上標數字 1", + ordm:"陽性序數指示符", + raquo:"右尖雙角引號\n右尖雙引號", + frac14:"普通分數四分之一\n分數四分之一", + frac12:"普通分數二分之一\n分數二分之一", + frac34:"普通分數四分之三\n分數四分之三", + iquest:"顛倒的問號\n倒轉的問號", + Agrave:"帶抑音符的拉丁文大寫字母 A\n帶抑音符的拉丁文大寫字母 A", + Aacute:"帶揚音符的拉丁文大寫字母 A", + Acirc:"帶抑揚音符的拉丁文大寫字母 A", + Atilde:"帶顎化符的拉丁文大寫字母 A", + Auml:"帶分音符的拉丁文大寫字母 A", + Aring:"帶上圓圈的拉丁文大寫字母 A\n帶上圓圈的拉丁文大寫字母 A", + AElig:"拉丁文大寫字母 AE\n拉丁文大寫連字 AE", + Ccedil:"帶軟音符號的拉丁文大寫字母 C", + Egrave:"帶抑音符的拉丁文大寫字母 E", + Eacute:"帶揚音符的拉丁文大寫字母 E", + Ecirc:"帶抑揚音符的拉丁文大寫字母 E", + Euml:"帶分音符的拉丁文大寫字母 E", + Igrave:"帶抑音符的拉丁文大寫字母 I", + Iacute:"帶揚音符的拉丁文大寫字母 I", + Icirc:"帶抑揚音符的拉丁文大寫字母 I", + Iuml:"帶分音符的拉丁文大寫字母 I", + ETH:"拉丁文大寫字母 ETH", + Ntilde:"帶顎化符的拉丁文大寫字母 N", + Ograve:"帶抑音符的拉丁文大寫字母 O", + Oacute:"帶揚音符的拉丁文大寫字母 O", + Ocirc:"帶抑揚音符的拉丁文大寫字母 O", + Otilde:"帶顎化符的拉丁文大寫字母O", + Ouml:"帶分音符的拉丁文大寫字母 O", + times:"乘號", + Oslash:"帶斜線的拉丁文大寫字母 O\n帶斜線的大寫字母 O", + Ugrave:"帶抑音符的拉丁文大寫字母 U", + Uacute:"帶揚音符的拉丁文大寫字母 U", + Ucirc:"帶抑揚音符的拉丁文大寫字母 U", + Uuml:"帶分音符的拉丁文大寫字母 U", + Yacute:"帶揚音符的拉丁文大寫字母 Y", + THORN:"拉丁文大寫字母 THORN", + szlig:"拉丁文小寫字母 sharp s\ness-zed", + agrave:"帶抑音符的拉丁文小寫字母 a\n帶抑音符的拉丁文小寫字母 a", + aacute:"帶揚音符的拉丁文小寫字母 a", + acirc:"帶抑揚音符的拉丁文小寫字母 a", + atilde:"帶顎化符的拉丁文小寫字母 a", + auml:"帶分音符的拉丁文小寫字母 a", + aring:"帶上圓圈的拉丁文 a\n帶上圓圈的拉丁文 a", + aelig:"拉丁文小寫字母 ae\n拉丁文小寫連字 ae", + ccedil:"帶軟音符號的拉丁文小寫字母 c", + egrave:"帶抑音符的拉丁文小寫字母 e", + eacute:"帶揚音符的拉丁文小寫字母 e", + ecirc:"帶抑揚音符的拉丁文小寫字母 e", + euml:"帶分音符的拉丁文小寫字母 e", + igrave:"帶抑音符的拉丁文小寫字母 i", + iacute:"帶揚音符的拉丁文小寫字母 i", + icirc:"帶抑揚音符的拉丁文小寫字母 i", + iuml:"帶分音符的拉丁文小寫字母 i", + eth:"拉丁文小寫字母 eth", + ntilde:"帶顎化符的拉丁文小寫字母 n", + ograve:"帶抑音符的拉丁文小寫字母 o", + oacute:"帶揚音符的拉丁文小寫字母 o", + ocirc:"帶抑揚音符的拉丁文小寫字母 o", + otilde:"帶顎化符的拉丁文小寫字母 o", + ouml:"帶分音符的拉丁文小寫字母 o", + divide:"除號", + oslash:"帶斜線的拉丁文小寫字母 O\n帶斜線的小寫字母 o", + ugrave:"帶抑音符的拉丁文小寫字母 u", + uacute:"帶揚音符的拉丁文小寫字母 u", + ucirc:"帶抑揚音符的拉丁文小寫字母 u", + uuml:"帶分音符的拉丁文小寫字母 u", + yacute:"帶揚音符的拉丁文小寫字母 y", + thorn:"拉丁文小寫字母 thorn", + yuml:"帶分音符的拉丁文小寫字母 y", + +// Greek Characters and Symbols + fnof:"帶短畫的拉丁文小寫 f\n函數\n弗洛林幣", + Alpha:"希臘文大寫字母 Α", + Beta:"希臘文大寫字母 Β", + Gamma:"希臘文大寫字母 Γ", + Delta:"希臘文大寫字母 Δ", + Epsilon:"希臘文大寫字母 Ε", + Zeta:"希臘文大寫字母 Ζ", + Eta:"希臘文大寫字母 Η", + Theta:"希臘文大寫字母 Θ", + Iota:"希臘文大寫字母 Ι", + Kappa:"希臘文大寫字母 Κ", + Lambda:"希臘文大寫字母 Λ", + Mu:"希臘文大寫字母 Μ", + Nu:"希臘文大寫字母 Ν", + Xi:"希臘文大寫字母 Ξ", + Omicron:"希臘文大寫字母 Ο", + Pi:"希臘文大寫字母 Π", + Rho:"希臘文大寫字母 Ρ", + Sigma:"希臘文大寫字母 Σ", + Tau:"希臘文大寫字母 Τ", + Upsilon:"希臘文大寫字母 Υ", + Phi:"希臘文大寫字母 Φ", + Chi:"希臘文大寫字母 Χ", + Psi:"希臘文大寫字母 Ψ", + Omega:"希臘文大寫字母 Ω", + alpha:"希臘文小寫字母 α", + beta:"希臘文小寫字母 β", + gamma:"希臘文小寫字母 γ", + delta:"希臘文小寫字母 δ", + epsilon:"希臘文小寫字母 ε", + zeta:"希臘文小寫字母 ζ", + eta:"希臘文小寫字母 η", + theta:"希臘文小寫字母 θ", + iota:"希臘文小寫字母 ι", + kappa:"希臘文小寫字母 κ", + lambda:"希臘文小寫字母 λ", + mu:"希臘文小寫字母 μ", + nu:"希臘文小寫字母 ν", + xi:"希臘文小寫字母 ξ", + omicron:"希臘文小寫字母 ο", + pi:"希臘文小寫字母 π", + rho:"希臘文小寫字母 ρ", + sigmaf:"希臘文小寫字母 final sigma", + sigma:"希臘文小寫字母 σ", + tau:"希臘文小寫字母 τ", + upsilon:"希臘文小寫字母 υ", + phi:"希臘文小寫字母 φ", + chi:"希臘文小寫字母 χ", + psi:"希臘文小寫字母 ψ", + omega:"希臘文小寫字母 ω", + thetasym:"希臘文小寫字母 theta 符號", + upsih:"帶鉤的希臘文 upsilon 符號", + piv:"希臘文 pi 符號", + bull:"項目符號\n黑色小圓圈", + hellip:"水平省略號\n三個點開頭", + prime:"撇號\n分鐘\n英呎", + Prime:"雙撇號\n秒\n英吋", + oline:"上線\n間隔上線", + frasl:"分數斜線", + weierp:"Script 大寫 P\n冪集\nWeierstrass p", + image:"黑色大寫字母 I\n虛數部分", + real:"黑色大寫字母 R\n實數部分符號", + trade:"商標符號", + alefsym:"alef 符號\n第一個超窮基數", + larr:"向左箭頭", + uarr:"向上箭頭", + rarr:"向右箭頭", + darr:"向下箭頭", + harr:"左右箭頭", + crarr:"有向左轉的角的向下箭頭\n換行符號", + lArr:"向左雙箭頭", + uArr:"向上雙箭頭", + rArr:"向右雙箭頭", + dArr:"向下雙箭頭", + hArr:"左右雙箭頭", + forall:"全部", + part:"偏微分", + exist:"存在", + empty:"空集\n空集\n直徑", + nabla:"倒三角算子\n反向差分", + isin:"屬於", + notin:"不屬於", + ni:"包含", + prod:"n 元積\n積符號", + sum:"n 元和", + minus:"減號", + lowast:"星號運算子", + radic:"平方根\n根號", + prop:"成比例", + infin:"無限", + ang:"角符號", + and:"邏輯 AND\n楔形符號", + or:"邏輯 OR\nV 形符號", + cap:"交集\n蓋狀", + cup:"併集\n杯狀","int":"整數的", + there4:"因此", + sim:"波狀符號運算子\n偏離\n近似", + cong:"約等於", + asymp:"幾乎等於\n近似於", + ne:"不等於", + equiv:"完全相等", + le:"小於或等於", + ge:"大於或等於", + sub:"子集", + sup:"超集", + nsub:"非子集", + sube:"子集或等於", + supe:"超集或等於", + oplus:"帶圓圈的加號\n直和", + otimes:"帶圓圈的乘號\n向量積", + perp:"向上的釘子\n垂直於\n垂線", + sdot:"點運算子", + lceil:"左上限\nAPL 頂", + rceil:"右上限", + lfloor:"左下限\nAPL 底", + rfloor:"右下限", + lang:"左角括弧", + rang:"右角括弧", + loz:"菱形", + spades:"黑色黑桃", + clubs:"黑色梅花\n三葉草", + hearts:"黑色紅桃\n心形", + diams:"黑色方塊", + OElig:"拉丁文大寫連字 OE", + oelig:"拉丁文小寫連字 oe", + Scaron:"帶倒折音的拉丁文大寫字母 S", + scaron:"帶倒折音的拉丁文小寫字母 s", + Yuml:"帶分音符的拉丁文大寫字母 Y", + circ:"修飾元字母抑揚音符", + tilde:"小波狀符號", + ensp:"短破折號間距", + emsp:"長破折號間距", + thinsp:"薄間距", + zwnj:"零寬非連字符", + zwj:"零寬連字符", + lrm:"從左到右標記", + rlm:"從右到左標記", + ndash:"短破折號", + mdash:"長破折號", + lsquo:"左單引號", + rsquo:"右單引號", + sbquo:"9 形下標單引號", + ldquo:"左雙引號", + rdquo:"右雙引號", + bdquo:"9 形下標雙引號", + dagger:"單劍註釋符號", + Dagger:"雙劍註釋符號", + permil:"千分號", + lsaquo:"左尖單角引號", + rsaquo:"右尖單角引號", + euro:"歐元符號" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/AutoSave.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/AutoSave.js new file mode 100644 index 0000000..4664acc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/AutoSave.js @@ -0,0 +1,17 @@ +define( +//begin v1.x content +({ + "saveLabel": "保存", + "saveSettingLabelOn": "设置自动保存时间间隔...", + "saveSettingLabelOff": "关闭自动保存", + "saveSettingdialogTitle": "自动保存", + "saveSettingdialogDescription": "指定自动保存时间间隔", + "saveSettingdialogParamName": "自动保存时间间隔", + "saveSettingdialogParamLabel": "分钟", + "saveSettingdialogButtonOk": "设置时间间隔", + "saveSettingdialogButtonCancel": "取消", + "saveMessageSuccess": "已保存到 ${0}", + "saveMessageFail": "未能保存到 ${0}" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Blockquote.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Blockquote.js new file mode 100644 index 0000000..af2721d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Blockquote.js @@ -0,0 +1,7 @@ +define( +//begin v1.x content +({ + "blockquote": "块引用" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Breadcrumb.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Breadcrumb.js new file mode 100644 index 0000000..2033c28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Breadcrumb.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + "nodeActions": "${nodeName} 操作", + "selectContents": "选择内容", + "selectElement": "选择元素", + "deleteElement": "删除元素", + "deleteContents": "删除内容", + "moveStart": "将光标移至开头", + "moveEnd": "将光标移至结尾" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/CollapsibleToolbar.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/CollapsibleToolbar.js new file mode 100644 index 0000000..12f1985 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/CollapsibleToolbar.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "collapse": "折叠编辑器工具栏", + "expand": "展开编辑器工具栏" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/FindReplace.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/FindReplace.js new file mode 100644 index 0000000..a4b4b3e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/FindReplace.js @@ -0,0 +1,25 @@ +define( +//begin v1.x content +({ + "findLabel": "查找:", + "findTooltip": "输入要查找的文本", + "replaceLabel": "替换为:", + "replaceTooltip": "输入要替换成的文本", + "findReplace": "查找和替换", + "matchCase": "匹配大小写", + "matchCaseTooltip": "匹配大小写", + "backwards": "向后", + "backwardsTooltip": "向后搜索文本", + "replaceAllButton": "全部替换", + "replaceAllButtonTooltip": "替换所有文本", + "findButton": "查找", + "findButtonTooltip": "查找文本", + "replaceButton": "替换", + "replaceButtonTooltip": "替换文本", + "replaceDialogText": "已替换 ${0} 个匹配项", + "eofDialogText": "最后一个匹配项 ${0}", + "eofDialogTextFind": "已找到", + "eofDialogTextReplace": "已替换" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/InsertAnchor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/InsertAnchor.js new file mode 100644 index 0000000..3bf2c10 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/InsertAnchor.js @@ -0,0 +1,12 @@ +define( +//begin v1.x content +({ + insertAnchor: "插入锚点", + title: "锚点属性", + anchor: "名称:", + text: "描述:", + set: "设置", + cancel: "取消" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/InsertEntity.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/InsertEntity.js new file mode 100644 index 0000000..17b7d6f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/InsertEntity.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + insertEntity: "插入符号" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/LocalImage.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/LocalImage.js new file mode 100644 index 0000000..1370436 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/LocalImage.js @@ -0,0 +1,14 @@ +define( +//begin v1.x content +({ + insertImageTitle: "插入图像", + url: "图像", + browse: "浏览...", + text: "描述", + set: "插入", + invalidMessage: "无效的图像文件类型", + prePopuTextUrl: "输入图像 URL", + prePopuTextBrowse: "或浏览本地文件。" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/PageBreak.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/PageBreak.js new file mode 100644 index 0000000..c809089 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/PageBreak.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "pageBreak": "换页符" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/PasteFromWord.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/PasteFromWord.js new file mode 100644 index 0000000..19d4ceb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/PasteFromWord.js @@ -0,0 +1,10 @@ +define( +//begin v1.x content +({ + "pasteFromWord": "从 Word 中粘贴", + "paste": "粘贴", + "cancel": "取消", + "instructions": "将内容从 Word 粘贴到以下文本框。如果对插入的内容满意,请按“粘贴”按钮。要停止插入文本,请按“取消”按钮。" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Preview.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Preview.js new file mode 100644 index 0000000..01155de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Preview.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "preview": "预览" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/SafePaste.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/SafePaste.js new file mode 100644 index 0000000..406edb8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/SafePaste.js @@ -0,0 +1,5 @@ +define( +({ + "instructions": "禁用了直接粘贴。请使用标准浏览器键盘或菜单粘贴控件在此对话框中粘贴内容。一旦您满意要插入的内容,请按“粘贴”按钮。要中止插入内容,请按“取消”按钮。" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Save.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Save.js new file mode 100644 index 0000000..16e07aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Save.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "save": "保存" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/ShowBlockNodes.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/ShowBlockNodes.js new file mode 100644 index 0000000..da43a4d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/ShowBlockNodes.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "showBlockNodes": "显示 HTML 块元素" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Smiley.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Smiley.js new file mode 100644 index 0000000..6278b11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/Smiley.js @@ -0,0 +1,27 @@ +define( +//begin v1.x content +({ + smiley: "插入表情图标", + emoticonSmile: "微笑", + emoticonLaughing: "大笑", + emoticonWink: "眨眼", + emoticonGrin: "咧着嘴笑", + emoticonCool: "酷", + emoticonAngry: "愤怒", + emoticonHalf: "左右为难", + emoticonEyebrow: "挑眉", + emoticonFrown: "皱眉", + emoticonShy: "害羞", + emoticonGoofy: "傻了", + emoticonOops: "oops", + emoticonTongue: "吐舌", + emoticonIdea: "思考", + emoticonYes: "点头", + emoticonNo: "摇头", + emoticonAngel: "天使", + emoticonCrying: "哭泣", + emoticonHappy: "高兴" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/SpellCheck.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/SpellCheck.js new file mode 100644 index 0000000..1fcd97c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/SpellCheck.js @@ -0,0 +1,20 @@ +define( +//begin v1.x content +({ + widgetLabel: "批处理拼写检查", + unfound: "未找到", + skip: "跳过", + skipAll: "全部跳过", + toDic: "添加到字典", + suggestions: "建议", + replace: "替换", + replaceWith: "替换为", + replaceAll: "全部替换", + cancel: "取消", + msg: "未找到拼写错误", + iSkip: "跳过此处", + iSkipAll: "跳过所有与此处相同的地方", + iMsg: "没有拼写建议" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/TableDialog.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/TableDialog.js new file mode 100644 index 0000000..a15f0ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/TableDialog.js @@ -0,0 +1,35 @@ +define( +//begin v1.x content +({ + insertTableTitle: "插入表", + modifyTableTitle: "修改表", + rows: "行:", + columns: "列:", + align: "对齐:", + cellPadding: "单元格边距:", + cellSpacing: "单元格间距:", + tableWidth: "表宽度:", + backgroundColor: "背景色:", + borderColor: "边框色:", + borderThickness: "边框厚度", + percent: "百分比", + pixels: "像素", + "default": "缺省值", + left: "左边对齐", + center: "中间对齐", + right: "右边对齐", + buttonSet: "设置", // translated elsewhere? + buttonInsert: "插入", + buttonCancel: "取消", + + selectTableLabel: "选择表", + insertTableRowBeforeLabel: "在之前添加行", + insertTableRowAfterLabel: "在之后添加行", + insertTableColumnBeforeLabel: "在之前添加列", + insertTableColumnAfterLabel: "在之后添加列", + deleteTableRowLabel: "删除行", + deleteTableColumnLabel: "删除列" +}) + +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/TextColor.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/TextColor.js new file mode 100644 index 0000000..ba86ce9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/TextColor.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "setButtonText": "设置", + "cancelButtonText": "取消" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/latinEntities.js b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/latinEntities.js new file mode 100644 index 0000000..3570a48 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/nls/zh/latinEntities.js @@ -0,0 +1,260 @@ +define( +//begin v1.x content +({ + /* These are already handled in the default RTE + amp:"ampersand",lt:"less-than sign", + gt:"greater-than sign", + nbsp:"no-break space\nnon-breaking space", + quot:"quote", + */ + iexcl:"反感叹号", + cent:"分币符号", + pound:"英镑符号", + curren:"货币符号", + yen:"日元符号/人民币符号", + brvbar:"横向虚线\n纵向虚线", + sect:"小节符号", + uml:"分音符\n间隔分音符", + copy:"版权符号", + ordf:"阴性序数指示符", + laquo:"左双尖括号\n左双尖括号", + not:"非符号", + shy:"软连字符\n自由选定连字符", + reg:"注册符号\n注册商标符号", + macr:"长音符号\n间隔长音符号\n破折号\nAPL 破折号", + deg:"度符号", + plusmn:"正负号\n正号或负号", + sup2:"上标 2\n上标数字 2\n平方", + sup3:"上标 3\n上标数字 3\n立方", + acute:"锐音符\n间隔锐音符", + micro:"μ 符号", + para:"段落符号\n段落符号", + middot:"中心点\n乔治逗号\n希腊中心点", + cedil:"软音符\n间隔软音符", + sup1:"上标 1\n上标数字 1", + ordm:"阳性序数指示符", + raquo:"右双尖括号\n右双尖括号", + frac14:"普通四分之一\n四分之一", + frac12:"普通二分之一\n二分之一", + frac34:"普通四分之三\n四分之三", + iquest:"倒问号\n倒问号", + Agrave:"带重音符的拉丁大写字母 A\n带重音符的拉丁大写字母 A", + Aacute:"带锐音符的拉丁大写字母 A", + Acirc:"带抑扬符的拉丁大写字母 A", + Atilde:"带颚化音的拉丁大写字母 A", + Auml:"带分音符的拉丁大写字母 A", + Aring:"带上圆圈的拉丁大写字母 A\n带圆圈的拉丁大写字母 A", + AElig:"拉丁大写字母 AE\n拉丁大写连字 AE", + Ccedil:"带软音符的拉丁大写字母 C", + Egrave:"带重音符的拉丁大写字母 E", + Eacute:"带锐音符的拉丁大写字母 E", + Ecirc:"带抑扬符的拉丁大写字母 E", + Euml:"带分音符的拉丁大写字母 E", + Igrave:"带重音符的拉丁大写字母 I", + Iacute:"带锐音符的拉丁大写字母 I", + Icirc:"带抑扬符的拉丁大写字母 I", + Iuml:"带分音符的拉丁大写字母 I", + ETH:"拉丁大写字母 ETH", + Ntilde:"带颚化音的拉丁大写字母 N", + Ograve:"带重音符的拉丁大写字母 O", + Oacute:"带锐音符的拉丁大写字母 O", + Ocirc:"带抑扬符的拉丁大写字母 O", + Otilde:"带颚化音的拉丁大写字母 O", + Ouml:"带分音符的拉丁大写字母 O", + times:"乘号", + Oslash:"带竖线的拉丁大写字母 O\n带斜杠的拉丁大写字母 O", + Ugrave:"带重音符的拉丁大写字母 U", + Uacute:"带锐音符的拉丁大写字母 U", + Ucirc:"带抑扬符的拉丁大写字母 U", + Uuml:"带分音符的拉丁大写字母 U", + Yacute:"带锐音符的拉丁大写字母 Y", + THORN:"拉丁大写字母 THORN", + szlig:"拉丁小写字母 sharp s\ness-zed", + agrave:"带重音符的拉丁小写字母 a\n带重音符的拉丁小写字母 a", + aacute:"带锐音符的拉丁小写字母 a", + acirc:"带抑扬符的拉丁小写字母 a", + atilde:"带颚化音的拉丁小写字母 a", + auml:"带分音符的拉丁小写字母 a", + aring:"带上圆圈的拉丁小写字母 a\n带圆圈的拉丁小写字母 a", + aelig:"拉丁小写字母 ae\n拉丁小写连字 ae", + ccedil:"带软音符的拉丁小写字母 c", + egrave:"带重音符的拉丁小写字母 e", + eacute:"带锐音符的拉丁小写字母 e", + ecirc:"带抑扬符的拉丁小写字母 e", + euml:"带分音符的拉丁小写字母 e", + igrave:"带重音符的拉丁小写字母 i", + iacute:"带锐音符的拉丁小写字母 i", + icirc:"带抑扬符的拉丁小写字母 i", + iuml:"带分音符的拉丁小写字母 i", + eth:"拉丁小写字母 eth", + ntilde:"带颚化音的拉丁小写字母 n", + ograve:"带重音符的拉丁小写字母 o", + oacute:"带锐音符的拉丁小写字母 o", + ocirc:"带抑扬符的拉丁小写字母 o", + otilde:"带颚化音的拉丁小写字母 o", + ouml:"带分音符的拉丁小写字母 o", + divide:"除号", + oslash:"带竖线的拉丁小写字母 o\n带斜杠的拉丁小写字母 o", + ugrave:"带重音符的拉丁小写字母 u", + uacute:"带锐音符的拉丁小写字母 u", + ucirc:"带抑扬符的拉丁小写字母 u", + uuml:"带分音符的拉丁小写字母 u", + yacute:"带锐音符的拉丁小写字母 y", + thorn:"拉丁小写字母 thorn", + yuml:"带分音符的拉丁小写字母 y", + +// Greek Characters and Symbols + fnof:"带挂钩符号的拉丁小写 f\n分数\nflorin", + Alpha:"希腊大写字母 alpha", + Beta:"希腊大写字母 beta", + Gamma:"希腊大写字母 gamma", + Delta:"希腊大写字母 delta", + Epsilon:"希腊大写字母 epsilon", + Zeta:"希腊大写字母 zeta", + Eta:"希腊大写字母 eta", + Theta:"希腊大写字母 theta", + Iota:"希腊大写字母 iota", + Kappa:"希腊大写字母 kappa", + Lambda:"希腊大写字母 lambda", + Mu:"希腊大写字母 mu", + Nu:"希腊大写字母 nu", + Xi:"希腊大写字母 xi", + Omicron:"希腊大写字母 omicron", + Pi:"希腊大写字母 pi", + Rho:"希腊大写字母 rho", + Sigma:"希腊大写字母 sigma", + Tau:"希腊大写字母 tau", + Upsilon:"希腊大写字母 upsilon", + Phi:"希腊大写字母 phi", + Chi:"希腊大写字母 chi", + Psi:"希腊大写字母 psi", + Omega:"希腊大写字母 omega", + alpha:"希腊小写字母 alpha", + beta:"希腊小写字母 beta", + gamma:"希腊小写字母 gamma", + delta:"希腊小写字母 delta", + epsilon:"希腊小写字母 epsilon", + zeta:"希腊小写字母 zeta", + eta:"希腊小写字母 eta", + theta:"希腊小写字母 theta", + iota:"希腊小写字母 iota", + kappa:"希腊小写字母 kappa", + lambda:"希腊小写字母 lambda", + mu:"希腊小写字母 mu", + nu:"希腊小写字母 nu", + xi:"希腊小写字母 xi", + omicron:"希腊小写字母 omicron", + pi:"希腊小写字母 pi", + rho:"希腊小写字母 rho", + sigmaf:"希腊小写字母 final sigma", + sigma:"希腊小写字母 sigma", + tau:"希腊小写字母 tau", + upsilon:"希腊小写字母 upsilon", + phi:"希腊小写字母 phi", + chi:"希腊小写字母 chi", + psi:"希腊小写字母 psi", + omega:"希腊小写字母 omega", + thetasym:"希腊小写字母 theta 符号", + upsih:"带挂钩符号的希腊字母 upsilon", + piv:"希腊 pi 符号", + bull:"子弹符号\n黑色小圆圈", + hellip:"水平省略号\n三个点组成的标题", + prime:"分钟符号\n分钟\n尺", + Prime:"秒符号\n秒\n寸", + oline:"顶线\n间隔顶线", + frasl:"分数斜杠", + weierp:"脚本大写 P\n幂集\nWeierstrass p", + image:"黑色大写字母 I\n虚部符号", + real:"黑色大写字母 R\n实部符号", + trade:"商标符号", + alefsym:"alef 符号\n第一个超限基数", + larr:"向左箭头", + uarr:"向上箭头", + rarr:"向右箭头", + darr:"向下箭头", + harr:"向左上箭头", + crarr:"回车符\n回车符", + lArr:"向左双箭头", + uArr:"向上双箭头", + rArr:"向右双箭头", + dArr:"向下双箭头", + hArr:"左右向双箭头", + forall:"全部", + part:"部分差分", + exist:"存在", + empty:"空集\n空集\n直径", + nabla:"劈形算符\n后向差分", + isin:"...的元素", + notin:"不是...的元素", + ni:"作为成员包含", + prod:"N 元积\n积符号", + sum:"N 元和", + minus:"负号", + lowast:"星号运算符", + radic:"平方根\n根号", + prop:"成比例", + infin:"无限", + ang:"角度", + and:"逻辑和\n尖三角形", + or:"逻辑或\n V 字形", + cap:"交集\n盖状", + cup:"并集n\n杯状","int":"整数", + there4:"因此", + sim:"颚化音运算符\n偏离\n相似", + cong:"约等于", + asymp:"几乎等于\n渐近", + ne:"不等于", + equiv:"完全相等", + le:"小于或等于", + ge:"大于或等于", + sub:"...的子集", + sup:"...的超集", + nsub:"不是...的子集", + sube:"...的子集或等于", + supe:"...的超集或等于", + oplus:"带圆圈的加号\n异或", + otimes:"带圆圈的乘号\n向量积", + perp:"倒 T\n正交于\n垂直", + sdot:"点运算符", + lceil:"left ceiling\nAPL upstile", + rceil:"right ceiling", + lfloor:"left floor\nAPL downstile", + rfloor:"right floor", + lang:"左尖括号", + rang:"右尖括号", + loz:"菱形", + spades:"黑色桃形", + clubs:"黑色梅花形\n三叶草", + hearts:"黑色心形\n心形", + diams:"黑色菱形", + OElig:"拉丁大写连字 OE", + oelig:"拉丁小写连字 oe", + Scaron:"带倒折音的拉丁大写字母 S", + scaron:"带倒折音的拉丁小写字母 s", + Yuml:"带分音符的拉丁大写字母 Y", + circ:"修饰符字母抑扬符重音符", + tilde:"小颚化音符号", + ensp:"单倍间距", + emsp:"双倍间距", + thinsp:"窄空格", + zwnj:"零宽度非连字符", + zwj:"零宽度连字符", + lrm:"从左向右标记", + rlm:"从右向左标记", + ndash:"短破折号", + mdash:"长破折号", + lsquo:"左单引号", + rsquo:"右单引号", + sbquo:"低单引号", + ldquo:"左双引号", + rdquo:"右双引号", + bdquo:"低双引号", + dagger:"剑号", + Dagger:"双剑号", + permil:"千分率符号", + lsaquo:"左尖括号", + rsaquo:"右尖括号", + euro:"欧元符号" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/AutoSave.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/AutoSave.css new file mode 100644 index 0000000..8bfada2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/AutoSave.css @@ -0,0 +1,48 @@ +.dijitEditorIconAutoSave { + background-image: url(../icons/autoSave.png); + background-repeat: no-repeat; + width: 18px; + height: 18px; +} + +.dijitEditorIconAutoSaveDefault { + background-position: -18px 0px; +} + +.dijitDisabled .dijitEditorIconAutoSaveDefault { + background-position: -54px 0px; +} + +.dijitEditorIconAutoSaveSetting { + background-position: 0px 0px; +} + +.dijitEditorAutoSaveSettingDialog { + width: 21em; +} + +.dijitEditorAutoSaveSettingInputArea { + margin-top: 0.3em; + margin-left: 2em; +} + +.dijitEditorAutoSaveSettingInputArea .textBox { + width: 2em; +} + +.dijitEditorAutoSaveSettingInputArea .boxLabel { + margin: 0em 0em 0em 0.3em; +} + +.dijitEditorAutoSaveSettingButtonArea { + text-align: right; + margin: 0.3em 0em 0em 0em; +} + +.lucid .dijitEditorAutoSaveSettingDialog { + width: 22em; +} + +.lucid .dijitEditorAutoSaveSettingInputArea .textBox { + width: 2.5em; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Blockquote.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Blockquote.css new file mode 100755 index 0000000..5913042 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Blockquote.css @@ -0,0 +1,17 @@ +.dijitAdditionalEditorIconBlockquote { + background-image: url(../icons/blockquote.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconBlockquote { + background-image: url(../icons/blockquoteDisabled.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Breadcrumb.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Breadcrumb.css new file mode 100755 index 0000000..7b687be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Breadcrumb.css @@ -0,0 +1,13 @@ +.dojoxEditorBreadcrumbArrow .dijitDownArrowButton { + width: 10px; +} + +.dojoxEditorBreadcrumbArrow .dijitArrowButtonInner { + background-image: url(../icons/breadcrumbDown.gif); + background-repeat: no-repeat; + background-position: center center; + width: 8px; + height: 8px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/CollapsibleToolbar.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/CollapsibleToolbar.css new file mode 100644 index 0000000..fa9e40c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/CollapsibleToolbar.css @@ -0,0 +1,173 @@ +.dojoxCollapsibleToolbarContainer { + border-collapse: collapse; + padding: 0px; + margin: 0px; + border-style: none; +} + +.dojoxCollapsibleToolbarCollapse { + cursor: pointer; +} + +.dojoxCollapsibleToolbarExpand { + cursor: pointer; +} + +.claro .dojoxCollapsibleToolbarCollapse { + background-image: url(../images/claro/collapse.gif); + background-repeat: no-repeat; + background-position: center center; + width: 12px; + height: 12px; +} + +.claro .dojoxCollapsibleToolbarExpand { + background-image: url(../images/claro/expand.gif); + background-repeat: no-repeat; + background-position: center center; + width: 12px; + height: 12px; +} + +.claro .dojoxCollapsibleToolbarContainer { + background-color: #F1F1F1; +} + +.claro .dojoxCollapsibleToolbarControl { + vertical-align: top; + border-bottom: 1px solid #ccc; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; + margin-bottom: 1px; +} + + +.tundra .dojoxCollapsibleToolbarCollapse { + background-image: url(../images/tundra/collapse.gif); + background-repeat: no-repeat; + background-position: center center; + width: 12px; + height: 12px; +} + +.tundra .dojoxCollapsibleToolbarExpand { + background-image: url(../images/tundra/expand.gif); + background-repeat: no-repeat; + background-position: center center; + width: 12px; + height: 12px; +} + +.tundra .dojoxCollapsibleToolbarContainer { + background-image: url(../images/tundra/sidebar.gif); + background-repeat: repeat-x; + background-position: top left; + background-color: #CCCCCC; +} + +.tundra .dojoxCollapsibleToolbarControl { + vertical-align: top; + border-bottom: 1px solid #ccc; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; +} + +.soria .dojoxCollapsibleToolbarCollapse { + background-image: url(../images/soria/collapse.gif); + background-repeat: no-repeat; + background-position: center center; + width: 12px; + height: 12px; +} + +.soria .dojoxCollapsibleToolbarExpand { + background-image: url(../images/soria/expand.gif); + background-repeat: no-repeat; + background-position: center center; + width: 12px; + height: 12px; +} + +.soria .dojoxCollapsibleToolbarContainer { + background-image: url(../images/soria/sidebar.gif); + background-repeat: repeat-x; + background-position: top left; + background-color: #CCCCCC; +} + +.soria .dojoxCollapsibleToolbarControl { + vertical-align: top; + border-bottom: 1px solid #ccc; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; +} + +.nihilo .dojoxCollapsibleToolbarCollapse { + background-image: url(../images/nihilo/collapse.gif); + background-repeat: no-repeat; + background-position: center center; + width: 12px; + height: 12px; +} + +.nihilo .dojoxCollapsibleToolbarExpand { + background-image: url(../images/nihilo/expand.gif); + background-repeat: no-repeat; + background-position: top left; + width: 12px; + height: 12px; +} + +.nihilo .dojoxCollapsibleToolbarContainer { + background-image: url(../images/nihilo/sidebar.gif); + background-repeat: repeat-x; + background-position: top left; + background-color: #CCCCCC; +} + +.nihilo .dojoxCollapsibleToolbarControl { + vertical-align: top; + border-bottom: 1px solid #ccc; + border-left: 1px solid #ccc; + border-right: 1px solid #ccc; +} + +.dijit_a11y .dojoxCollapsibleToolbarCollapse { + border-style: outset; + border-width: 3px; + border-color: black; + width: 1.5em; + height: 100%; + text-align: center; + vertical-align: middle; +} + +.dijit_a11y .dojoxCollapsibleToolbarExpand { + border-style: outset; + border-width: 3px; + border-color: black; + width: 1.5em; + height: 100%; + text-align: center; + vertical-align: middle; +} + +.dojoxCollapsibleToolbarCollapseText { + display: none; +} + +.dojoxCollapsibleToolbarExpandText { + display: none; +} + +.dijit_a11y .dojoxCollapsibleToolbarCollapseText { + display: inline; + padding: 3px; + font-weight: bold; +} + +.dijit_a11y .dojoxCollapsibleToolbarExpandText { + display: inline; + padding: 3px; + font-weight: bold; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/FindReplace.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/FindReplace.css new file mode 100755 index 0000000..7e74456 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/FindReplace.css @@ -0,0 +1,72 @@ +.dijitEditorIconsFindReplace { + background-image: url('../icons/editorIconsFindReplaceEnabled.png'); + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} + +.dijitDisabled .dijitEditorIconsFindReplace { + background-image: url('../icons/editorIconsFindReplaceDisabled.png'); + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} + +.dijitEditorIconFindString { background-position: 0px; } + +.dijitEditorIconFind { background-position: -18px; } + +.dijitEditorIconReplace { background-position: -36px; } + +.dijitEditorIconReplaceAll { background-position: -54px; } + +.dijitEditorFindReplaceCheckBox { + padding-left: 10px; + padding-right: 10px; + text-align: center; +} + +.dijitEditorFindReplaceTextBox { + padding-top: 3px; + padding-bottom: 3px; + padding-right: 5px; +} + +.dijitEditorFindReplaceTextBox .focusTextBox { + width: 13em; +} + +.tundra .dijitEditorIconsFindReplaceClose { + background-image: url('../icons/tundra/close.gif'); + background-repeat: no-repeat; + width: 18px; + height: 18px; + background-position: center; +} + +.soria .dijitEditorIconsFindReplaceClose { + background-image: url('../icons/soria/close.gif'); + background-repeat: no-repeat; + width: 18px; + height: 18px; + background-position: center; +} + +.nihilo .dijitEditorIconsFindReplaceClose { + background-image: url('../icons/nihilo/close.gif'); + background-repeat: no-repeat; + width: 18px; + height: 18px; + background-position: center; +} + +.claro .dijitEditorIconsFindReplaceClose { + background-image: url('../icons/claro/close.gif'); + background-repeat: no-repeat; + width: 18px; + height: 18px; + background-position: center; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/InsertAnchor.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/InsertAnchor.css new file mode 100755 index 0000000..3f0dda5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/InsertAnchor.css @@ -0,0 +1,17 @@ +.dijitAdditionalEditorIconInsertAnchor { + background-image: url(../icons/anchor.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconInsertAnchor { + background-image: url(../icons/anchorDisabled.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/InsertEntity.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/InsertEntity.css new file mode 100755 index 0000000..403dcc5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/InsertEntity.css @@ -0,0 +1,69 @@ +.dijitAdditionalEditorIconInsertEntity { + /* icon in toolbar for this plugin */ + background-image: url(../icons/insertEntity.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconInsertEntity { + /* icon in toolbar for this plugin, when the plugin is disabled */ + background-image: url(../icons/insertEntityDisabled.gif); +} + +.dojoxEntityPalette { + /* outer node of the dropdown */ + border: 1px solid #999; + background: #fff; + -moz-border-radius: 3pt; +} + +.dojoxEntityPaletteCell { + /* individual cell of the drop down */ + border: 1px dotted gray; + width: 20px; /* todo: don't hardcode width/height; it's neither necessary nor a11y safe */ + line-height: 18px; + overflow: hidden; + z-index: 10; + text-align: center; +} + +.dojoxEntityPaletteCell:hover, .dojoxEntityPaletteCell:active, .dojoxEntityPaletteCell:focus { + width: 18px; + line-height: 16px; + overflow: hidden; + cursor: default; + border:1px dashed #000; + outline:1px dashed #dedede; +} + + +.dojoxEntityPalettePreviewTable { + table-layout: auto; + font-size: 1em; + width: 100%; +} + +.dojoxEntityPalettePreviewHeader { + font-size: .8em; + padding: 3px 3px 3px 3px; +} + +.dojoxEntityPalettePreviewDetailEntity { + font-size: 3em; + font-weight: bold; + width: 1em; + text-align: center; +} + +.dojoxEntityPalettePreviewDetail { + font-size: 1em; + vertical-align: middle; + font-weight: bold; + padding: 3px 3px 3px 3px; +} + +.dijit_a11y .dojoxEntityPaletteCell { + background-color:transparent !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/LocalImage.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/LocalImage.css new file mode 100644 index 0000000..3b308af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/LocalImage.css @@ -0,0 +1,13 @@ +.dijitEditorEilDialogTitle { + font-weight: bold; + margin-bottom: 0.6em; +} + +.dijitEditorEilDialogDescription { + white-space: normal; + margin: 0em 0em 0.3em 0em; +} + +.dijitEditorEilDialogField{ + width: 20em; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/PageBreak.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/PageBreak.css new file mode 100755 index 0000000..193b93b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/PageBreak.css @@ -0,0 +1,17 @@ +.dijitAdditionalEditorIconPageBreak { + background-image: url(../icons/pageBreak.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconPageBreak { + background-image: url(../icons/pageBreakDisabled.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/PasteFromWord.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/PasteFromWord.css new file mode 100755 index 0000000..96622e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/PasteFromWord.css @@ -0,0 +1,30 @@ +.dijitAdditionalEditorIconPasteFromWord { + background-image: url(../icons/pasteFromWord.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconPasteFromWord { + background-image: url(../icons/pasteFromWordDisabled.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.tundra .dijitPasteFromWordEmbeddedRTE .dijitEditor, +.nihilo .dijitPasteFromWordEmbeddedRTE .dijitEditor { + border-color: #BFBFBF; + border-style: solid; + border-width: 1px; +} + +.soria .dijitPasteFromWordEmbeddedRTE .dijitEditor { + border-color: #CCCCCC; + border-style: solid; + border-width: 1px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Preview.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Preview.css new file mode 100755 index 0000000..920f8d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Preview.css @@ -0,0 +1,17 @@ +.dijitAdditionalEditorIconPreview { + background-image: url(../icons/preview.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconPreview { + background-image: url(../icons/previewDisabled.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/SafePaste.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/SafePaste.css new file mode 100644 index 0000000..c43d405 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/SafePaste.css @@ -0,0 +1,3 @@ +@import "PasteFromWord.css"; + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Save.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Save.css new file mode 100755 index 0000000..e22b0f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Save.css @@ -0,0 +1,17 @@ +.dijitAdditionalEditorIconSave { + background-image: url(../icons/save.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconSave { + background-image: url(../icons/saveDisabled.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/ShowBlockNodes.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/ShowBlockNodes.css new file mode 100755 index 0000000..48d139c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/ShowBlockNodes.css @@ -0,0 +1,17 @@ +.dijitAdditionalEditorIconShowBlockNodes { + background-image: url(../icons/showBlockNodes.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitDisabled .dijitAdditionalEditorIconShowBlockNodes { + background-image: url(../icons/showBlockNodesDisabled.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Smiley.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Smiley.css new file mode 100644 index 0000000..0aa19ab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/Smiley.css @@ -0,0 +1,39 @@ +.dijitAdditionalEditorIconSmiley { + /* Toolbar icon for Smiley plugin */ + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; + background-image: url(../icons/smiley.gif); +} + +.dijitDisabled .dijitAdditionalEditorIconSmiley { + /* Toolbar icon for disabled Smiley plugin */ + background-image: url(../icons/smileyDisabled.gif); +} + +.dijitEditorSmileyPalette { + border: 1px solid black; + background: white; + overflow: hidden; + overflow-x: hidden; + overflow-y: hidden; +} + +.dijitEditorSmileyPalette .dijitPaletteCell { + height: 23px; + width: 27px; +} + +.dijitEditorSmileyPalette .dijitPaletteImg { + border: none; + height: 20px; + width: 20px; + padding: 2px 2px; +} + +.dijitEditorSmileyPalette .dijitPaletteCellHover .dijitPaletteImg { + border: 1px solid black; + padding: 1px 1px; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/SpellCheck.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/SpellCheck.css new file mode 100644 index 0000000..434b579 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/SpellCheck.css @@ -0,0 +1,51 @@ +.dijitEditorSpellCheckIcon { + background-image: url(../icons/spellcheck.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} + +.dijitEditorSpellCheckBusyIcon { + background-image: url(../images/checking.gif); + background-repeat: no-repeat; + background-position: center center; + display: inline-block; + zoom: 1; + *display: inline; + width: 16px; + height: 16px; + margin: 0em 0.5em 0em 0.5em; +} + +.dijitEditorSpellCheckTable .dijitEditorSpellCheckBox { + width: 15em; +} + +.dijitEditorSpellCheckTable .listHeight { + height: 5em; +} + +.dijitEditorSpellCheckTable, +.dijitEditorSpellCheckTable td { + border: none; + border-width: 0px; + vertical-align: top; +} + +.dijitEditorSpellCheckTable .alignBottom { + vertical-align: bottom; +} + +.dijitEditorSpellCheckTable .blockButton, +.dijitEditorSpellCheckTable .dijitButtonNode { + display: block; +} + +.dijitEditorSpellCheckTable .topMargin { + margin-top: 0.56em; +} + +.dijitEditorSpellCheckTable .hidden { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/StatusBar.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/StatusBar.css new file mode 100755 index 0000000..fd6414c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/StatusBar.css @@ -0,0 +1,75 @@ +@import "../../../../layout/resources/ResizeHandle.css"; + +.dojoxEditorStatusBar { + overflow: hidden; + vertical-align: bottom; + padding: 2px; +} + +.dojoxEditorStatusBar table { + width: 100%; +} + +.dojoxEditorStatusBar .dojoxResizeHandle { + position: static; + padding: 0px; + vertical-align: bottom; +} + +.dojoxEditorStatusBar .dojoxEditorStatusBarText{ + height: 1.5em; + vertical-align: middle; + width: 100%; + overflow: hidden; +} + +.claro .dojoxEditorStatusBar { + background-color: #F1F1F1; +} + +.claro .dojoxEditorStatusBar .dojoxEditorStatusBarText{ + border-style: solid; + border-width: 1px; + border-color: #B5BCC7; + +} + +.tundra .dojoxEditorStatusBar { + background-color: #EAEAEA; +} + +.tundra .dojoxEditorStatusBar .dojoxEditorStatusBarText{ + border-style: solid; + border-width: 1px; + border-color: #CCCCCC; + +} + +.nihilo .dojoxEditorStatusBar { + border-style: solid; + background-color: #FFFFFF; + border-width: 1px; + border-color: #CCCCCC; +} + +.nihilo .dojoxEditorStatusBar .dojoxEditorStatusBarText { + border-style: solid; + border-width: 1px; + border-color: #CCCCCC; + +} + +.soria .dojoxEditorStatusBar { + border-style: solid; + background-color: #BDD6F0; + border-width: 1px; + border-color: #698FB3; +} + +.soria .dojoxEditorStatusBar .dojoxEditorStatusBarText { + border-style: solid; + border-width: 1px; + border-color: #698FB3; + +} + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/TextColor.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/TextColor.css new file mode 100644 index 0000000..196b1e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/css/TextColor.css @@ -0,0 +1,7 @@ +@import "../../../../widget/ColorPicker/ColorPicker.css"; + +.dojoxEditorColorPicker { + overflow: hidden; + overflow-x: hidden; + overflow-y: hidden; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/editorPlugins.css b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/editorPlugins.css new file mode 100644 index 0000000..db2c08a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/editorPlugins.css @@ -0,0 +1,174 @@ +/* Editor Table Dialog */ +.EditorTableDialog{ + +} +.EditorTableDialog .etdTable{ + border:none; + table-layout:fixed; + border-collapse:collapse; +} +.EditorTableDialog .etdTable td{ + border:#CCCCCC 0px solid; + padding:5px; +} +.EditorTableDialog .etdTable td.inner{ + padding:0px; +} +.EditorTableDialog .dijitTextBox{ + width:50px; + padding-left:3px; +} +.EditorTableDialog .dijitComboBox{ + width:85px; + padding-left:5px; +} +.EditorTableDialog label{ + float:right; + margin:0; + margin-right:5px; +} +.EditorTableDialog .cellpad{ + background:url(images/cellpad.png) no-repeat 5px; +} +.EditorTableDialog .cellspace{ + background:url(images/cellspace.png) no-repeat 5px; +} +.dialogButtonContainer{ + text-align:right; + margin-top:10px; + cursor:pointer; +} + +.colorSwatchBtn{ + display:block; + border:#666666 2px solid; + background-color:#CCCCCC; + width:16px; + height:16px; + cursor:pointer; +} +.colorSwatchBtn:hover{ + border:#0099FF 2px solid; +} +.colorSwatchBtn div{ + background-color:#CCCCCC; + width:16px; + height:16px; + cursor:pointer; +} + +/* Editor Buttons */ +.editorIcon{ + background-image:url(images/tableIcons.png); + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} +.editorIconUploadImage{ + background:url(images/uploadImageIcon.gif) no-repeat 0px 4px; +} + +.editorIconInsertTable{ + background-position:0px 0px; } +.dijitDisabled .editorIconInsertTable{ + background-position:-162px 0px; } +.editorIconInsertTableRowBefore{ + background-position:-36px 0px; } +.dijitDisabled .editorIconInsertTableRowBefore{ + background-position:-198px 0px; } + +.editorIconInsertTableRowAfter{ + background-position:-54px 0px; } +.dijitDisabled .editorIconInsertTableRowAfter{ + background-position:-216px 0px; } + +.editorIconInsertTableColumnBefore{ + background-position:-72px 0px; } +.dijitDisabled .editorIconInsertTableColumnBefore{ + background-position:-234px 0px; } + +.editorIconInsertTableColumnAfter{ + background-position:-90px 0px; } +.dijitDisabled .editorIconInsertTableColumnAfter{ + background-position:-252px 0px; } + +.editorIconDeleteTableRow{ + background-position:-108px 0px; } +.dijitDisabled .editorIconDeleteTableRow{ + background-position:-270px 0px; } + +.editorIconDeleteTableColumn{ + background-position:-126px 0px; } +.dijitDisabled .editorIconDeleteTableColumn{ + background-position:-288px 0px; } + +.editorIconColorTableCell{ + background-position:-144px 0px; } +.dijitDisabled .editorIconColorTableCell{ + background-position:-306px 0px; } + +.editorIconModifyTable{ + background-position:-18px 0px; } +.dijitDisabled .editorIconModifyTable{ + background-position:-180px 0px; } + + + + +.RichTextEditable .dijitTextBox, +.RichTextEditable .dijitComboBox, +.RichTextEditable .dijitSpinner { + width: 5em; +} + +.dojoxDropDownSelect { + background:#FFFFFF url(images/dropBk.png) repeat-x scroll left top; + border: 1px solid; + border-top-color:#cccccc; + border-right-color:#cccccc; + border-left-color:#999999; + border-bottom-color:#ffffff; +} +.dojoxDropDownSelect.dojoxDropDownSelectHover{ + background-image:url(images/dropBkOver.png); +} +.dojoxDropDownSelect button{ + line-height:16px; + height:16px; + width:100px; + text-align:left; + color:#8397b9; +} + +.dijitButtonNode .dijitArrowButtonInner{ + /* fixing the dijit drop arrows - can't figure why this broke */ + background:url(../../../../dijit/themes/tundra/images/spriteArrows.png) no-repeat left top; + width:7px; +} + +.dojoxEditorUploadNorm{ + font-family:Arial; + font-size:12px; + + + vertical-align: middle; + + margin:0; + line-height:normal; + text-align:center; + white-space: nowrap; + + cursor: pointer; + background: #ccc url("images/uploadImageIcon.gif") no-repeat 2px 2px; +} + +.dojoxEditorUploadHover{ + background: #ccc url("images/uploadImageIcon.gif") no-repeat 2px 0px; +} +.dojoxEditorUploadActive{ + background: #ccc url("images/uploadImageIcon.gif") no-repeat 2px 4px; +} +.dojoxEditorUploadDisabled{ + background: #ccc url("images/uploadImageIcon.gif") no-repeat 2px 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonAngel.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonAngel.gif new file mode 100644 index 0000000..8841b9b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonAngel.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonAngry.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonAngry.gif new file mode 100644 index 0000000..8290ee0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonAngry.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonCool.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonCool.gif new file mode 100644 index 0000000..3583c92 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonCool.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonCrying.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonCrying.gif new file mode 100644 index 0000000..9e9c6ac Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonCrying.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonEyebrow.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonEyebrow.gif new file mode 100644 index 0000000..bb150ef Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonEyebrow.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonFrown.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonFrown.gif new file mode 100644 index 0000000..a47c099 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonFrown.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonGoofy.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonGoofy.gif new file mode 100644 index 0000000..8b4d860 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonGoofy.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonGrin.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonGrin.gif new file mode 100644 index 0000000..692a201 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonGrin.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonHalf.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonHalf.gif new file mode 100644 index 0000000..2d7e10a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonHalf.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonHappy.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonHappy.gif new file mode 100644 index 0000000..dc8f87f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonHappy.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonIdea.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonIdea.gif new file mode 100644 index 0000000..11af180 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonIdea.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonLaughing.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonLaughing.gif new file mode 100644 index 0000000..23192d4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonLaughing.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonNo.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonNo.gif new file mode 100644 index 0000000..03170df Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonNo.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonOops.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonOops.gif new file mode 100644 index 0000000..38bd4a0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonOops.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonShy.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonShy.gif new file mode 100644 index 0000000..de0ccf6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonShy.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonSmile.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonSmile.gif new file mode 100644 index 0000000..d5b73a6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonSmile.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonTongue.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonTongue.gif new file mode 100644 index 0000000..e578c6a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonTongue.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonWink.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonWink.gif new file mode 100644 index 0000000..8e262ae Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonWink.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonYes.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonYes.gif new file mode 100644 index 0000000..9473c7f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/emoticons/emoticonYes.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/anchor.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/anchor.gif new file mode 100755 index 0000000..f58992d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/anchor.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/anchorDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/anchorDisabled.gif new file mode 100755 index 0000000..54e17b9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/anchorDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/autoSave.png b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/autoSave.png new file mode 100644 index 0000000..c23796f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/autoSave.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/blockquote.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/blockquote.gif new file mode 100755 index 0000000..ec472c7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/blockquote.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/blockquoteDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/blockquoteDisabled.gif new file mode 100755 index 0000000..0c5886d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/blockquoteDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/breadcrumbDown.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/breadcrumbDown.gif new file mode 100755 index 0000000..782efe7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/breadcrumbDown.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/claro/close.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/claro/close.gif new file mode 100755 index 0000000..7e792db Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/claro/close.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/editorIconsFindReplaceDisabled.png b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/editorIconsFindReplaceDisabled.png new file mode 100644 index 0000000..c92ec86 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/editorIconsFindReplaceDisabled.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/editorIconsFindReplaceEnabled.png b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/editorIconsFindReplaceEnabled.png new file mode 100644 index 0000000..e28c71b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/editorIconsFindReplaceEnabled.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/insertEntity.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/insertEntity.gif new file mode 100755 index 0000000..5eb8584 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/insertEntity.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/insertEntityDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/insertEntityDisabled.gif new file mode 100755 index 0000000..f019818 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/insertEntityDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/nihilo/close.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/nihilo/close.gif new file mode 100755 index 0000000..285952a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/nihilo/close.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pageBreak.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pageBreak.gif new file mode 100755 index 0000000..1cc4317 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pageBreak.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pageBreakDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pageBreakDisabled.gif new file mode 100755 index 0000000..511fa06 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pageBreakDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pasteFromWord.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pasteFromWord.gif new file mode 100755 index 0000000..f9df2a5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pasteFromWord.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pasteFromWordDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pasteFromWordDisabled.gif new file mode 100755 index 0000000..bbe7de6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/pasteFromWordDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/preview.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/preview.gif new file mode 100755 index 0000000..ef30288 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/preview.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/previewDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/previewDisabled.gif new file mode 100755 index 0000000..b7f223b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/previewDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/save.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/save.gif new file mode 100755 index 0000000..499dd0c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/save.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/saveDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/saveDisabled.gif new file mode 100755 index 0000000..ad505a9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/saveDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/showBlockNodes.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/showBlockNodes.gif new file mode 100755 index 0000000..4c58ae2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/showBlockNodes.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/showBlockNodesDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/showBlockNodesDisabled.gif new file mode 100755 index 0000000..f8bc7c6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/showBlockNodesDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/smiley.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/smiley.gif new file mode 100644 index 0000000..d5b73a6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/smiley.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/smileyDisabled.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/smileyDisabled.gif new file mode 100644 index 0000000..e56ff0f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/smileyDisabled.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/soria/close.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/soria/close.gif new file mode 100755 index 0000000..f019ae0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/soria/close.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/spellcheck.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/spellcheck.gif new file mode 100755 index 0000000..b0bba18 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/spellcheck.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/tundra/close.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/tundra/close.gif new file mode 100755 index 0000000..2cb0ee1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/icons/tundra/close.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/anchor.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/anchor.gif new file mode 100755 index 0000000..f58992d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/anchor.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/address.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/address.gif new file mode 100755 index 0000000..5f94757 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/address.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/blockquote.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/blockquote.gif new file mode 100755 index 0000000..8eff804 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/blockquote.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/button.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/button.gif new file mode 100755 index 0000000..a95518d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/button.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/center.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/center.gif new file mode 100755 index 0000000..de55735 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/center.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/dd.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/dd.gif new file mode 100755 index 0000000..5a87895 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/dd.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/del.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/del.gif new file mode 100755 index 0000000..f2b647d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/del.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/div.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/div.gif new file mode 100755 index 0000000..3ad71ca Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/div.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/dt.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/dt.gif new file mode 100755 index 0000000..61145c1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/dt.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/fieldset.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/fieldset.gif new file mode 100755 index 0000000..350d1f5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/fieldset.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/form.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/form.gif new file mode 100755 index 0000000..b7a26ce Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/form.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h1.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h1.gif new file mode 100755 index 0000000..3accd14 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h1.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h2.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h2.gif new file mode 100755 index 0000000..fed7623 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h2.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h3.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h3.gif new file mode 100755 index 0000000..d2e8437 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h3.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h4.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h4.gif new file mode 100755 index 0000000..cf806b9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h4.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h5.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h5.gif new file mode 100755 index 0000000..00c7c66 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h5.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h6.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h6.gif new file mode 100755 index 0000000..91c7e12 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/h6.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/hr.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/hr.gif new file mode 100755 index 0000000..1475618 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/hr.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/iframe.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/iframe.gif new file mode 100755 index 0000000..a1e9502 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/iframe.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ins.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ins.gif new file mode 100755 index 0000000..a55290e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ins.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/li.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/li.gif new file mode 100755 index 0000000..9d4a964 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/li.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/map.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/map.gif new file mode 100755 index 0000000..d704664 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/map.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/noscript.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/noscript.gif new file mode 100755 index 0000000..2096c70 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/noscript.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/object.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/object.gif new file mode 100755 index 0000000..2376db0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/object.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ol.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ol.gif new file mode 100755 index 0000000..923b227 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ol.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/p.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/p.gif new file mode 100755 index 0000000..7e1cf81 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/p.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/pre.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/pre.gif new file mode 100755 index 0000000..caeaa51 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/pre.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/script.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/script.gif new file mode 100755 index 0000000..1a4e71d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/script.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/table.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/table.gif new file mode 100755 index 0000000..33fc14d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/table.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ul.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ul.gif new file mode 100755 index 0000000..88a3917 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/blockelems/ul.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/busy.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/busy.gif new file mode 100644 index 0000000..7519974 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/busy.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/cellpad.png b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/cellpad.png new file mode 100644 index 0000000..e8d1b9b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/cellpad.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/cellspace.png b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/cellspace.png new file mode 100644 index 0000000..d080221 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/cellspace.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/claro/collapse.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/claro/collapse.gif new file mode 100755 index 0000000..c18c53b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/claro/collapse.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/claro/expand.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/claro/expand.gif new file mode 100755 index 0000000..56c5698 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/claro/expand.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/collapse.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/collapse.gif new file mode 100755 index 0000000..c18c53b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/collapse.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/expand.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/expand.gif new file mode 100755 index 0000000..56c5698 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/expand.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/sidebar.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/sidebar.gif new file mode 100755 index 0000000..68a5986 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/nihilo/sidebar.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/collapse.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/collapse.gif new file mode 100755 index 0000000..c18c53b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/collapse.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/expand.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/expand.gif new file mode 100755 index 0000000..56c5698 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/expand.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/sidebar.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/sidebar.gif new file mode 100755 index 0000000..f4dd076 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/soria/sidebar.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tableIcons.png b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tableIcons.png new file mode 100644 index 0000000..fb00763 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tableIcons.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tableIcons_rtl.png b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tableIcons_rtl.png new file mode 100644 index 0000000..d78152f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tableIcons_rtl.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/collapse.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/collapse.gif new file mode 100755 index 0000000..c18c53b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/collapse.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/expand.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/expand.gif new file mode 100755 index 0000000..56c5698 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/expand.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/sidebar.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/sidebar.gif new file mode 100755 index 0000000..11fb540 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/tundra/sidebar.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/uploadImageIcon.gif b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/uploadImageIcon.gif new file mode 100644 index 0000000..83ed316 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/images/uploadImageIcon.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/insertTable.html b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/insertTable.html new file mode 100644 index 0000000..da5e9a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/insertTable.html @@ -0,0 +1,48 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/modifyTable.html b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/modifyTable.html new file mode 100644 index 0000000..35232a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/plugins/resources/modifyTable.html @@ -0,0 +1,58 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/PorterStemmer.php.disabled b/js/dojo-release-1.7.2-src/dojox/editor/tests/PorterStemmer.php.disabled new file mode 100644 index 0000000..86a820d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/PorterStemmer.php.disabled @@ -0,0 +1,474 @@ + 0) && self::replaceLetter(3,"ee"); + return; + } + if ((self::matchLetter("ed"))&&(self::stemContainVowel(2))){ + self::replaceLetter(2,""); + self::step1b2(); + return; + } + if ((self::matchLetter("ing"))&&(self::stemContainVowel(3))){ + self::replaceLetter(3,""); + self::step1b2(); + } + } + + /** + * step 1b2 + */ + private static function step1b2(){ + (self::matchLetter("at")) && self::replaceLetter(2, "ate"); + (self::matchLetter("bl")) && self::replaceLetter(2, "ble"); + (self::matchLetter("iz")) && self::replaceLetter(2, "ize"); + + if (self::stemEndWithCC(0) && !(self::stemEndWithLetter(0,'l') || self::stemEndWithLetter(0,'s') || self::stemEndWithLetter(0,'z'))){ + self::$word = substr(self::$word, 0 ,-1); + } else if ((self::getStemM(0) == 1) && self::stemEndWithCVC(0)){ + self::$word = self::$word."e"; + } + } + + /** + * step 1c + */ + private static function step1c(){ + (self::matchLetter("y")) && (self::stemContainVowel(1)) && self::replaceLetter(1,"i"); + } + + /** + * step 2 + */ + private static function step2(){ + switch (substr(self::$word, -2, 1)){ + case 'a' : + if(self::matchLetter("ational")){ + (self::getStemM(7)>0) && self::replaceLetter(7,"tion"); + break; + } else if (self::matchLetter("tional")){ + (self::getStemM(6)>0) && self::replaceLetter(6,"tion"); + break; + } + break; + case 'c' : + if(self::matchLetter("enci")){ + (self::getStemM(4)>0)&& self::replaceLetter(4,"ence"); + break; + } else if (self::matchLetter("anci")){ + (self::getStemM(4)>0) && self::replaceLetter(4,"ance"); + break; + } + break; + case 'e' : + if(self::matchLetter("izer")){ + (self::getStemM(4)>0) && self::replaceLetter(4,"ize"); + break; + } + break; + case 'g' : + if(self::matchLetter("logi")){ + (self::getStemM(4)>0) && self::replaceLetter(4,"log"); + break; + } + break; + case 'l' : + if(self::matchLetter("bli")){ + (self::getStemM(3)>0) && self::replaceLetter(3,"ble"); + break; + } else if (self::matchLetter("alli")){ + (self::getStemM(4)>0) && self::replaceLetter(4,"al"); + break; + } else if (self::matchLetter("entli")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"ent"); + break; + } else if (self::matchLetter("eli")){ + (self::getStemM(3)>0) && self::replaceLetter(3,"e"); + break; + } else if (self::matchLetter("ousli")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"ous"); + break; + } + break; + case 'o': + if(self::matchLetter("ization")){ + (self::getStemM(7)>0) && self::replaceLetter(7,"ize"); + break; + } else if (self::matchLetter("ation")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"ate"); + break; + } else if (self::matchLetter("ator")){ + (self::getStemM(4)>0) && self::replaceLetter(4,"ate"); + break; + } + break; + case 's': + if(self::matchLetter("alism")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"al"); + break; + } else if (self::matchLetter("iveness")){ + (self::getStemM(7)>0) && self::replaceLetter(7,"ive"); + break; + } else if (self::matchLetter("fulness")){ + (self::getStemM(7)>0) && self::replaceLetter(7,"ful"); + break; + } else if (self::matchLetter("ousness")){ + (self::getStemM(7)>0) && self::replaceLetter(7,"ous"); + break; + } + break; + case 't': + if(self::matchLetter("aliti")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"al"); + break; + } else if (self::matchLetter("iviti")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"ive"); + break; + } else if (self::matchLetter("biliti")){ + (self::getStemM(6)>0) && self::replaceLetter(6,"ble"); + break; + } + break; + } + } + + /** + * step 3 + */ + private static function step3(){ + switch (substr(self::$word, -1, 1)){ + case 'e' : + if(self::matchLetter("icate")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"ic"); + break; + } else if (self::matchLetter("ative")){ + (self::getStemM(5)>0) && self::replaceLetter(5,""); + break; + } else if (self::matchLetter("alize")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"al"); + break; + } + break; + case 'i' : + if(self::matchLetter("iciti")){ + (self::getStemM(5)>0) && self::replaceLetter(5,"ic"); + break; + } + break; + case 'l' : + if(self::matchLetter("ical")){ + (self::getStemM(4)>0) && self::replaceLetter(4,"ic"); + break; + } else if (self::matchLetter("ful")){ + (self::getStemM(3)>0) && self::replaceLetter(3,""); + break; + } + break; + case 's' : + if(self::matchLetter("ness")){ + (self::getStemM(4)>0) && self::replaceLetter(4,""); + break; + } + break; + } + + } + + /** + * step 4 + */ + private static function step4(){ + switch (substr(self::$word, -2, 1)){ + case 'a' : + if(self::matchLetter("al")){ + (self::getStemM(2)>1) && self::replaceLetter(2,""); + break; + } + break; + case 'c' : + if(self::matchLetter("ance")){ + (self::getStemM(4)>1) && self::replaceLetter(4,""); + break; + } else if (self::matchLetter("ence")){ + (self::getStemM(4)>1) && self::replaceLetter(4,""); + break; + } + break; + case 'e' : + if(self::matchLetter("er")){ + (self::getStemM(2)>1) && self::replaceLetter(2,""); + break; + } + break; + case 'i' : + if(self::matchLetter("ic")){ + (self::getStemM(2)>1) && self::replaceLetter(2,""); + break; + } + case 'l' : + if(self::matchLetter("able")){ + (self::getStemM(4)>1) && self::replaceLetter(4,""); + break; + } else if (self::matchLetter("ible")){ + (self::getStemM(4)>1) && self::replaceLetter(4,""); + break; + } + break; + case 'n' : + if(self::matchLetter("ant")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } else if (self::matchLetter("ement")){ + (self::getStemM(5)>1) && self::replaceLetter(5,""); + break; + } else if (self::matchLetter("ment")){ + (self::getStemM(4)>1) && self::replaceLetter(4,""); + break; + } else if (self::matchLetter("ent")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } + break; + case 'o' : + if(self::matchLetter("sion")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } else if (self::matchLetter("tion")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } else if (self::matchLetter("ou")){ + (self::getStemM(2)>1) && self::replaceLetter(2,""); + break; + } + break; + case 's' : + if(self::matchLetter("ism")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } + break; + case 't' : + if(self::matchLetter("ate")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } else if (self::matchLetter("iti")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } + break; + case 'u' : + if(self::matchLetter("ous")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } + break; + case 'v' : + if(self::matchLetter("ive")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } + break; + case 'z' : + if(self::matchLetter("ize")){ + (self::getStemM(3)>1) && self::replaceLetter(3,""); + break; + } + break; + } + } + + /** + * step 5 + */ + private static function step5(){ + if (self::matchLetter("e")){ + if (self::getStemM(1)>1){ + self::replaceLetter(1,""); + }else if ((self::getStemM(1)==1) && !self::stemEndWithCVC(1)){ + self::replaceLetter(1,""); + } + } + if (((self::matchLetter("dd"))||(self::matchLetter("ll")))&&(self::getStemM(0)>1)){ + self::$word = substr(self::$word, 0 ,-1); + } + } + + /** + * check whether the suffix of the word matches $strOld + * @param (string) $strOld String to check + * @return (bool) Result + */ + private static function matchLetter($strOld){ + return (substr(self::$word, -strlen($strOld)) == $strOld); + } + + /** + * replace the last ($offset) letters with $strNew + * @param (int) $offset offset intiger + * @param (string) $strNew String to replace with + */ + private static function replaceLetter($offset, $strNew){ + self::$word = self::getSubString($offset).$strNew; + } + + /** + * get the substring without the last ($offset) letters + * @param (int) $offset offset intiger + * @return (bool) Result + */ + private static function getSubString($offset){ + return ($offset) ? substr(self::$word, 0, -$offset) : (self::$word); + } + + /** + * get M of the substring without the last ($offset) letters + * @param (int) $offset offset intiger + * @return (bool) Result + */ + private static function getStemM($offset){ + $stem = self::getSubString($offset); + preg_match_all(PorterStemmer::$regexVC, $stem, $matched); + return sizeOf($matched[1]); + } + + /** + * check whether the last letters of the substring + * without the last ($offset) letters matches $chLetter + * @param (int) $offset offset intiger + * @param (string) $Letter String to check + * @return (bool) Result + */ + private static function stemEndWithLetter($offset, $Letter){ + $stem = self::getSubString($offset); + return (substr($stem, -1 ,1) == $Letter); + } + + /** + * check whether the substring without the last ($offset) letters + * contains a vowel + * @param (int) $offset offset intiger + * @return (bool) Result + */ + private static function stemContainVowel($offset){ + $stem = self::getSubString($offset); + return preg_match(self::$regexVowel, $stem); + } + + /** + * check whether the last letters of the substring + * without the last ($offset) letters matches double Consonant + * @param (int) $offset offset intiger + * @return (bool) Result + */ + private static function stemEndWithCC($offset){ + $stem = self::getSubString($offset); + $temp1 = substr($stem, -1, 1); + $temp2 = substr($stem, -2, 1); + return (($temp1==$temp2) && (preg_match(self::$regexConsonant, $temp1))); + } + + /** + * check whether the last letters of the substring + * without the last ($offset) letters matches CVC + * @param (int) $offset offset intiger + * @return (bool) Result + */ + private static function stemEndWithCVC($offset){ + $stem = self::getSubString($offset); + $temp = substr($stem, -3, 3); + return (preg_match(self::$regexCVC, $temp)); + } + + } + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/dummySave.php b/js/dojo-release-1.7.2-src/dojox/editor/tests/dummySave.php new file mode 100644 index 0000000..2fd23ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/dummySave.php @@ -0,0 +1,5 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorAutoSave.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorAutoSave.html new file mode 100644 index 0000000..507fd3e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorAutoSave.html @@ -0,0 +1,172 @@ + + + + Editor Auto Save Test + + + + + + + + + + + +
                                  +

                                  Editor + Save Plugin

                                  + +

                                  This is an example editor with Save enabled.

                                  + The AutoSave plugin is a non-visual 'helper' plugin. When enabled, it allows a quick way to POST back content to a + server. The target URL for the default implementation uses xhrPost, and as such, it must POST back to the same + domain that served the page that instantiated the editor. Users can extend this plugin to alter its save behavior, such + as use a different posting mechanism, or provide custom onSuccess and onError handlers. +
                                  +
                                  + Note: For nicely formatted HTML, consider also including the dojox.editor.plugins.PrettyPrint plugin to + 'clean up' the content the editor returns. +
                                  +
                                  + Note: This test makes use of PHP to simulate a back end service, so run it from a PHP enabled server! + Otherwise it may report errors. +
                                  +
                                  +
                                  + This instance is created from a div with an extra plugin, 'AutoSave' loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  +

                                  Auto-Save with interval 10 minutes

                                  +
                                  + This instance is created from a div with an extra plugin, 'AutoSave' loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorAutoUrlLink.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorAutoUrlLink.html new file mode 100644 index 0000000..cdbe2c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorAutoUrlLink.html @@ -0,0 +1,208 @@ + + + + Editor AutoUrlLink Test + + + + + + + + + + + +
                                  +

                                  Editor + AutoUrlLink Plugin

                                  + +

                                  This is an example editor with AutoUrlLink enabled.

                                  + The AutoUrlLink plugin allows you recognize a URL as a link when you are typing. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'AutoUrlLink' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  +
                                  The Dojo Toolkit
                                  +
                                  + + + + + + + + + +
                                  Test Cell 1Test Cell 2
                                  Test Cell 3Test Cell 4
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +
                                  +
                                  +

                                  Editor with BlockNodeForEnter = P

                                  +
                                  + This instance is created from a div with an extra plugin, 'AutoUrlLink' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  +
                                  The Dojo Toolkit
                                  +
                                  + + + + + + + + + +
                                  Test Cell 1Test Cell 2
                                  Test Cell 3Test Cell 4
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +
                                  +
                                  +

                                  Editor with BlockNodeForEnter = DIV

                                  +
                                  + This instance is created from a div with an extra plugin, 'AutoUrlLink' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  +
                                  The Dojo Toolkit
                                  +
                                  + + + + + + + + + +
                                  Test Cell 1Test Cell 2
                                  Test Cell 3Test Cell 4
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorBlockquote.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorBlockquote.html new file mode 100755 index 0000000..00f4155 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorBlockquote.html @@ -0,0 +1,118 @@ + + + + Editor Blockquote Test + + + + + + + + +
                                  +

                                  Editor + Blockquote Plugin

                                  + +

                                  This is an example editor with Blockquote enabled.

                                  + The Blockquote plugin allows you to select a chunk of text and 'blockquote' it. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'Blockquote' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  +
                                  The Dojo Toolkit
                                  +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorBreadcrumb.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorBreadcrumb.html new file mode 100644 index 0000000..e1c7c65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorBreadcrumb.html @@ -0,0 +1,120 @@ + + + + Editor Breadcrumb Test + + + + + + + + +
                                  +

                                  Editor + Breadcrumb Plugin

                                  + +

                                  This is an example editor with Breadcrumb enabled.

                                  + The Breadcrumb plugin adds a footer toolbar to the editor that shows the current node point you're at + in the editor. You can also use it to select the contents, the entire element, and do operations like + delete contents or element, and position cursor in element. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'Breadcrumb' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorCollapsibleToolbar.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorCollapsibleToolbar.html new file mode 100755 index 0000000..943cad2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorCollapsibleToolbar.html @@ -0,0 +1,131 @@ + + + + Editor CollapsibleToolbar Test + + + + + + + + +
                                  +

                                  Editor + CollapsibleToolbar Plugin

                                  + +

                                  This is an example editor with CollapsibleToolbar enabled.

                                  + The CollapsibleToolbar plugin allows the toolbar above to be collapsed out of view and expanded back in. +
                                  + +
                                  + This instance is created from a div with an extra toolbar plugin, 'CollapsibleToolbar', loaded. + The plugin allows the toolbar above to be collapsed out of view and expanded back in. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorFindReplace.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorFindReplace.html new file mode 100755 index 0000000..a8f9992 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorFindReplace.html @@ -0,0 +1,122 @@ + + + + Editor FindReplace Test + + + + + + + + +
                                  +

                                  Editor + FindReplace Plugin

                                  + +

                                  This is an example editor with FindReplace enabled.

                                  + The FindReplace plugin adds a togglable toolbar to the editor that allows search/replace of text in the editor. + This plugin only supports IE, FF, and WebKit. Opera will not function. This is an experimental plugin. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'FindReplace' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorInsertAnchor.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorInsertAnchor.html new file mode 100755 index 0000000..7a93d8c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorInsertAnchor.html @@ -0,0 +1,119 @@ + + + + Editor InsertAnchor Test + + + + + + + + +
                                  +

                                  Editor + InsertAnchor Plugin

                                  + +

                                  This is an example editor with InsertAnchor enabled.

                                  + The InsertAnchor plugin allows you create in-page 'anchors' for linking. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'InsertAnchor' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  +
                                  The Dojo Toolkit
                                  +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorInsertEntity.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorInsertEntity.html new file mode 100755 index 0000000..15b6aaf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorInsertEntity.html @@ -0,0 +1,170 @@ + + + + Editor InsertEntity Test + + + + + + + + +
                                  +

                                  Editor + InsertEntity Plugin

                                  + + +

                                  This is an example editor with InsertEntity enabled.

                                  + The InsertEntity plugin allows you to insert HTML/XML entity characters into the page +
                                  +
                                  + Note: The InsertEntity is hotkey enabled to CTRL-SHIFT-S as well as being button driven. + +
                                  + This instance is created from a div with an extra plugin, 'InsertEntity' loaded. It also has View Source and PrettyPrint + enabled to make it easier to see the inserted entities. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + +

                                  This is an example editor with InsertEntity enabled and showing the code and entity names

                                  + The InsertEntity plugin allows you to insert HTML/XML entity characters into the page +
                                  +
                                  + Note: The InsertEntity is hotkey enabled to CTRL-SHIFT-S as well as being button driven. + +
                                  + This instance is created from a div with an extra plugin, 'InsertEntity' loaded. It also has View Source and PrettyPrint + enabled to make it easier to see the inserted entities. The show code and show entity names is also enabled, so they + should appear in the entity picker. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorLocalImage.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorLocalImage.html new file mode 100644 index 0000000..2fa384c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorLocalImage.html @@ -0,0 +1,61 @@ + + + + Editor Test: Local Image Insert Dialog Plugin + + + + + + + + +

                                  Editor + Insert Image with file uploading

                                  +
                                  +
                                  +
                                    +
                                  1. The LocalImagePluginplugin is an 'example' style plugin that shows how to insert + image tags.
                                  2. +
                                  3. You need a php server to test this plugin. Please enable dojox\form\tests\cLOG.php and + dojox\form\tests\UploadFile.php first.
                                  4. +
                                  +
                                  + +
                                  +
                                  +
                                  Sample Image
                                  +
                                  +
                                  +
                                  +
                                  +

                                  Editor + Insert Image without file uploading

                                  +
                                  +
                                  +
                                    +
                                  1. The LocalImagePlugin is an 'example' style plugin that shows how to insert + image tags.
                                  2. +
                                  +
                                  + +
                                  +
                                  +
                                  Sample Image
                                  +
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorNormalizeIndentOutdent.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorNormalizeIndentOutdent.html new file mode 100755 index 0000000..4fa637d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorNormalizeIndentOutdent.html @@ -0,0 +1,120 @@ + + + + Editor NormalizeIndentOutdent Test + + + + + + + + +
                                  +

                                  Editor + NormalizeIndentOutdent Plugin

                                  + +

                                  This is an example editor with NormalizeIndentOutdent enabled.

                                  + The NormalizeIndentOutdent plugin tries to improve the behavior of indent and outdent, and make it generate + sane HTML output. The default browser behaviors usually do not generate valid HTML when indenting and + outdenting lists. This tries to correct for that, as well as improve general handling of text indents. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'NormalizeIndentOutdent' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorNormalizeStyle.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorNormalizeStyle.html new file mode 100755 index 0000000..77e84df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorNormalizeStyle.html @@ -0,0 +1,163 @@ + + + + Editor dojox NormalizeStyle Test + + + + + + + + +
                                  +

                                  Editor + NormalizeStyle Plugin

                                  + +

                                  This is an example editor with the dojox NormalizeStyle plugin enabled.

                                  + The NormalizeStyle plugin's role is to try and force the editor output to be either CSS + style based (style="" spans), or semantic tag based (b, i, u, strike, etc). This is user configurable. + Internally in the editor window, it tries to use the format that works the best for the browser. +
                                  +
                                  +
                                  +

                                  NormalizeStyle with semantic mode enabled

                                  +
                                  + This instance is created from a div with an extra plugin, 'NormalizeStyle' loaded in semantic mode +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +

                                  NormalizeStyle with css mode enabled

                                  +
                                  + This instance is created from a div with an extra plugin, 'NormalizeStyle' loaded in CSS mode. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPageBreak.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPageBreak.html new file mode 100755 index 0000000..1f553fa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPageBreak.html @@ -0,0 +1,99 @@ + + + + Editor PageBreak Test + + + + + + + + +
                                  +

                                  Editor + PageBreak Plugin

                                  + +

                                  This is an example editor with PageBreak enabled.

                                  + The PageBreak plugin allows you to insert pagebreak divs into the document that will cause the editor + contents to break to a new page while printing. This can be useful in certain cases, particularly when combined + with a Print plugin for editor. +
                                  +
                                  + Note: The PageBreak is hotkey enabled to CTRL-SHIFT-ENTER as well as being button driven. + Also, be aware that PageBreak is disabled for certain elements, such as UL, OL, and LI elements, as breaking there + tends to look odd. + +
                                  + This instance is created from a div with an extra plugin, 'PageBreak' loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPasteFromWord.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPasteFromWord.html new file mode 100755 index 0000000..08ac086 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPasteFromWord.html @@ -0,0 +1,98 @@ + + + + Editor PasteFromWord Test + + + + + + + + +
                                  +

                                  Editor + PasteFromWord Plugin

                                  + +

                                  This is an example editor with PasteFromWord enabled.

                                  + The PasteFromWord plugin is a special dialog that allows you to paste in content from WordPad and Microsoft word and it will filter out extraneous tags and other items to make the content closer to standard HTML before inserting it. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'PasteFromWord' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPrettyPrint.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPrettyPrint.html new file mode 100755 index 0000000..33dce66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPrettyPrint.html @@ -0,0 +1,327 @@ + + + + Editor Pretty Print Test + + + + + + + + +
                                  +

                                  Editor + PrettyPrint Plugin

                                  +
                                  +
                                  +

                                  This is an example editor with PrettyPrint enabled and the default settings for indent, entity character mapping, and line length

                                  +
                                  + This instance is created from a div with an extra plugin, 'PrettyPrint' loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + +
                                  +
                                  +

                                  This is an example editor with PrettyPrint enabled and indent set to three spaces

                                  +
                                  + This instance is created from a div with an extra plugin, 'PrettyPrint' loaded. + It also has indent set to three spaces. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + +
                                  +
                                  +

                                  This is an example editor with PrettyPrint enabled, indent set to three spaces, and max text line length at 60 characters

                                  +
                                  + This instance is created from a div with an extra plugin, 'PrettyPrint' loaded. + It also has indent set to three spaces and text line length fixed at 60 characters (not including the indent). +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + +
                                  +
                                  +

                                  This is an example editor with PrettyPrint enabled, indent set to three spaces, and max text line length at 60 characters

                                  +
                                  + This instance is created from a div with an extra plugin, 'PrettyPrint' loaded. + It also has indent set to three spaces and text line length fixed at 60 characters (not including the indent). + The output has also been configured to try to be XHTML compliant. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPreview.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPreview.html new file mode 100755 index 0000000..991d340 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorPreview.html @@ -0,0 +1,249 @@ + + + + Editor Preview Test + + + + + + + + +
                                  +

                                  Editor + Preview Plugin

                                  + +

                                  These are example editors with Preview enabled

                                  + The Preview plugin is a visual 'helper' plugin. When clicked, it opens a new window with the contents of the editor + plus any denoted stylesheets and/or styles applied to the page. This is useful for when you are editing content + that will be displayed with styles different from what the editor applies. When you click preview, a new window will open + with the styled content. The styles chosen are not necessarily pretty, just something to make it very obvious styles are being applied. +
                                  +
                                  + +

                                  Preview styled with inline styles

                                  +
                                  + This instance is created from a div with an extra plugin, 'Preview', loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  +
                                  +
                                  +

                                  Preview styled with external stylesheet

                                  +
                                  + This instance is created from a div with an extra plugin, 'Preview', loaded and is styled in preview via external stylesheets. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  +
                                  +
                                  +

                                  Preview styled with external stylesheet and defined styles

                                  +
                                  + This instance is created from a div with an extra plugin, 'Preview', loaded and is styled in preview via an external stylesheet as well as inline styles. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorResizeTableColumn.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorResizeTableColumn.html new file mode 100644 index 0000000..128f230 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorResizeTableColumn.html @@ -0,0 +1,84 @@ + + + + + Editor Resize Table Column + + + + + + + + + + + + + + + +
                                  +
                                  + Dojo Rocks with a fox in socks. Red socks. In a box. +

                                  + + + + + + + + + + + + + + + + +
                                     
                                     
                                    Text
                                  +
                                  +
                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSafePaste.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSafePaste.html new file mode 100644 index 0000000..31b6efc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSafePaste.html @@ -0,0 +1,105 @@ + + + + Editor SafePaste Test + + + + + + + + +
                                  +

                                  Editor + SafePaste Plugin

                                  + +

                                  This is an example editor with SafePaste enabled.

                                  + The SafePaste plugin an extension of PasteFromWord that uses a special dialog that allows you to paste in content from + WordPad and Microsoft word, or content that contains script tags and other odd items and it will filter out extraneous + tags, scripts, and other items to make the content closer to standard HTML and safer for a web document before inserting it. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'PasteFromWord' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + +

                                  SafePaste with bold, ul, ol, li, and center tag stripping.

                                  + Copy the content from the above editor and paste it down here, it will strip the b, center, and the ul/li/ol tags (the ones specified in stripTags) +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSave.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSave.html new file mode 100644 index 0000000..6f3aa6c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSave.html @@ -0,0 +1,104 @@ + + + + Editor Save Test + + + + + + + + +
                                  +

                                  Editor + Save Plugin

                                  + +

                                  This is an example editor with Save enabled.

                                  + The Save plugin is a non-visual 'helper' plugin. When enabled, it allows a quick way to POST back content to a + server. The target URL for the default implementation uses xhrPost, and as such, it must POST back to the same + domain that served the page that instantiated the editor. Users can extend this plugin to alter its save behavior, such + as use a different posting mechanism, or provide custom onSuccess and onError handlers. +
                                  +
                                  + Note: For nicely formatted HTML, consider also including the dojox.editor.plugins.PrettyPrint plugin to + 'clean up' the content the editor returns. +
                                  +
                                  + Note: This test makes use of PHP to simulate a back end service, so run it from a PHP enabled server! + Otherwise it may report errors. +
                                  +
                                  +
                                  + This instance is created from a div with an extra plugin, 'Save' loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorShowBlockNodes.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorShowBlockNodes.html new file mode 100755 index 0000000..5c441f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorShowBlockNodes.html @@ -0,0 +1,97 @@ + + + + Editor ShowBlockNodes Test + + + + + + + + +
                                  +

                                  Editor + ShowBlockNodes Plugin

                                  + +

                                  This is an example editor with ShowBlockNodes enabled.

                                  + The ShowBlockNodes plugin is a visual 'helper' plugin. When toggled on, it will show you in the editor window where all + the block nodes are ant their contents. This can be vauluable in checking the layout, as content may be nested under nodes + you didn't expect. +
                                  +
                                  + Note: The ShowBlockNodes is hotkey enabled to CTRL-SHIFT-F9 as well as being button driven. + +
                                  + This instance is created from a div with an extra plugin, 'ShowBlockNodes' loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSmileyPlugin.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSmileyPlugin.html new file mode 100644 index 0000000..dd106e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSmileyPlugin.html @@ -0,0 +1,92 @@ + + + + Editor Smiley Test + + + + + + + +
                                  +

                                  Editor + Smiley Plugin

                                  +
                                  +

                                  + This editor is created with the 'smiley' plugin and 'viewsource' plugin. + Viewsource should convert the smiley images into ascii text, and vice-versa (on returning from view source to normal editing mode). + Also, the smiley plugin should be disabled while in view source mode. +

                                  +
                                  +
                                  [:-)] Smiley Plugin is Ready !!!  [:-)]
                                  +
                                  +
                                    +
                                  • + emoticonSmile: "[:-)]", +
                                  • +
                                  • + emoticonLaughing: "[lol]", +
                                  • +
                                  • + emoticonWink: "[;-)]", +
                                  • +
                                  • + emoticonGrin: "[:-D]", +
                                  • +
                                  • + emoticonCool: "[8-)]", +
                                  • +
                                  • + emoticonAngry: "[:-@]", +
                                  • +
                                  • + emoticonHalf: "[:-/]", +
                                  • +
                                  • + emoticonEyebrow: "[/:)]", +
                                  • +
                                  • + emoticonFrown: "[:-(]", +
                                  • +
                                  • + emoticonShy: "[:-$]", +
                                  • +
                                  • + emoticonGoofy: "[:-S]", +
                                  • +
                                  • + emoticonOops: "[:-O]", +
                                  • +
                                  • + emoticonTongue: "[:-P]", +
                                  • +
                                  • + emoticonIdea: "[(i)]", +
                                  • +
                                  • + emoticonYes: "[(y)]", +
                                  • +
                                  • + emoticonNo: "[(n)]", +
                                  • +
                                  • + emoticonAngel: "[0:-)]", +
                                  • +
                                  • + emoticonCrying: "[:'(]" +
                                  • +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSpellCheck.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSpellCheck.html new file mode 100644 index 0000000..3edb42e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorSpellCheck.html @@ -0,0 +1,82 @@ + + + + + Editor Test: Spell Check Plugin + + + + + + + + + + + +

                                  Editor + Batch/Interactive SpellCheck

                                  +
                                  +
                                  +
                                    +
                                  1. The is a demo to show how to use the Spell Check plugin.
                                  2. +
                                  3. You need a php server to test this plugin. Please enable dojox\editor\plugins\tests\spellcheck.php and dojox\editor\plugins\tests\PorterStemmer.php first.
                                  4. +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +I am errir. Thi is wrng. +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +Thi is the end of the txt. +
                                  +
                                  + +
                                  +
                                  +
                                  Sample Image
                                  +
                                  +
                                  +
                                  +

                                  Another Instance

                                  +
                                  +
                                  +Don’t spend hours reinventing the wheel, use Dojo’s widget system Dijit for commonly used form widgets like calendars, input validation and more. +
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorStatusBar.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorStatusBar.html new file mode 100755 index 0000000..ba1fe8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorStatusBar.html @@ -0,0 +1,232 @@ + + + + Editor StatusBar Test + + + + + + + + +
                                  +

                                  Editor + StatusBar Plugin

                                  + +

                                  This is an example editor with Breadcrumb and StatusBar enabled.

                                  + The status bar shows messages posted to a topic (editor.id + _statusBar), or by directly setting the status bar value. + It also has a resize handle enabled. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'StatusBar' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + + + +

                                  This is an example editor with Breadcrumb and StatusBar enabled with resize disabled.

                                  + The status bar shows messages posted to a topic (editor.id + _statusBar), or by directly setting the status bar value. + It also has the resize handle disabled. +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'StatusBar' loaded. +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two +
                                      +
                                    1. + Three +
                                    2. +
                                    +
                                  +
                                  +

                                  Malformed list #1

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                      +
                                    • List Item Three
                                    • +
                                    • List Item Four
                                    • +
                                    • List Item Five
                                    • +
                                    +
                                  +

                                  Malformed list #2

                                  +
                                    +
                                      +
                                    • List Item one
                                    • +
                                    • List Item two
                                    • +
                                    • List Item three
                                    • +
                                    +
                                  • List Item four
                                  • +
                                  • List Item five
                                  • +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorTablePlugs.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorTablePlugs.html new file mode 100644 index 0000000..130b56d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorTablePlugs.html @@ -0,0 +1,94 @@ + + + + + Editor Table Plugins + + + + + + + + + + + + + + + +
                                  +
                                  + Dojo Rocks with a fox in socks. Red socks. In a box. +

                                  + + + + + + + + + + + + + + + + +
                                     
                                     
                                    Text
                                  +
                                  +
                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorTextColor.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorTextColor.html new file mode 100755 index 0000000..9b3f215 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorTextColor.html @@ -0,0 +1,97 @@ + + + + Editor dojox TextColor Test + + + + + + + + +
                                  +

                                  Editor + TextColor Plugin

                                  + +

                                  This is an example editor with the dojox TextColor plugin enabled.

                                  + The TextColor plugin is similar to dijit._editor.plugins.TextColor in that it provides menus for selecting the color of + text as well as the background color of text. It also will show you the current colors when you are inside a word/selection + based on what the browser claims they are. This version uses the dojox.widget.ColorPicker in lieu of the dijit.ColorPalette. +
                                  +
                                  + Note: The dojox.widget.ColorPicker is not A11Y (accessibility) compliant. +
                                  +
                                  +
                                  + This instance is created from a div with an extra plugin, 'Save' loaded. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorToolbarLineBreak.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorToolbarLineBreak.html new file mode 100755 index 0000000..df99482 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorToolbarLineBreak.html @@ -0,0 +1,95 @@ + + + + Editor ToolbarLineBreak Test + + + + + + + + +
                                  +

                                  Editor + ToolbarLineBreak Plugin

                                  + +

                                  This is an example editor with ToolbarLineBreak enabled.

                                  + The ToolbarLineBreak plugin is a plugin that lets you split the editor toolbar into multiple 'lines' so that long toolbars + can be grouped via reasonable breaks in the buttons
                                  +
                                  + +
                                  + This instance is created from a div with an extra plugin, 'ToolbarLineBreak' loaded, along with several optional plugins for font options. +
                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                    +
                                  1. One
                                  2. +
                                  3. Two
                                  4. +
                                  +
                                  +
                                  +

                                  A bunch of Lorum Ipsum Text:

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  Centered Text
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/editorUploadPlug.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorUploadPlug.html new file mode 100644 index 0000000..c89b8a9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/editorUploadPlug.html @@ -0,0 +1,69 @@ + + + + +Editor File Upload Plugin + + + + + + + + + + + +
                                  +
                                  +

                                  Click the upload icon to open a system dialog. Note that this will need to call a server script for the upload to work.

                                  +

                                  + Test Disclaimers:
                                  + A PHP test file is being used for server code.
                                  + Folder permissions will need to be set to system level for uploads to work on your local system.
                                  + The code uses the GD library (to get image sizes), that sometimes is not pre-installed in a standard PHP build.
                                  +

                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/module.js b/js/dojo-release-1.7.2-src/dojox/editor/tests/module.js new file mode 100644 index 0000000..d02818e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/module.js @@ -0,0 +1,15 @@ +dojo.provide("dojox.editor.tests.module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + + // Base editor functionality + doh.registerUrl("dojox.editor.tests.robot.Editor_Smiley", dojo.moduleUrl("dojox","editor/tests/robot/Editor_Smiley.html"+userArgs), 99999999); + + +}catch(e){ + doh.debug(e); +} + + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/robot/Editor_Smiley.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/robot/Editor_Smiley.html new file mode 100644 index 0000000..93276be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/robot/Editor_Smiley.html @@ -0,0 +1,60 @@ + + + + doh.robot Editor Smiley Plugin Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/runTests.html new file mode 100644 index 0000000..e85585f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/sample.jpg b/js/dojo-release-1.7.2-src/dojox/editor/tests/sample.jpg new file mode 100644 index 0000000..53422b3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/editor/tests/sample.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/spellCheck.php.disabled b/js/dojo-release-1.7.2-src/dojox/editor/tests/spellCheck.php.disabled new file mode 100644 index 0000000..24cbebe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/spellCheck.php.disabled @@ -0,0 +1,152 @@ +] + // The word list to be checked + private $_words; + + // $_dic [Array] + // The array that mimic the dictionary. It can be more + // sophisticated. However, this is only a demo. + private $_dic; + + // SIMI [Number] + // The threshold of the similarity + const SIMI = 0.6; + + public function __construct(){ + $this->_dic = explode("\n", file_get_contents($this->fileName)); + } + + public function setLanguage($lang){ + $this->_lang = $lang; + } + + public function setEncoding($encoding){ + $this->_encoding = $encoding; + } + + public function setWords($words){ + $this->_words = $words; + } + + public function add($word){ + $handle = fopen($this->fileName, 'a'); + fwrite($handle, "$word\n"); + fclose($handle); + return "{response:[]}"; + } + + public function check(){ + // summary: + // Check the spelling and return a HTML page with a JSON string like + // {response: [ + // { + // text :"teest", + // suggestion:["test","treat"] + // } + // ]} + if($this->_lang == "EN"){ + $len = count($this->_words); + for($i = 0; $i < $len; $i++){ + $this->_words[$i]->suggestion = $this->lookup($this->_words[$i]->text); + } + $temp = array(); + for($i = 0; $i < $len; $i++){ + if($this->_words[$i]->suggestion !== NULL){ + array_push($temp, $this->_words[$i]); + } + } + return "{response:" . json_encode($temp). "}"; + }else{ + // This is only a demo, so keep the text as-is + // if the encoding is not UTF-8 or the language is + // not English + return "{response:[]}"; // No spelling error found + } + } + + private function lookup($word){ + // summary: + // Look for the given word. If it is not found, a suggestion list + // will be returned, else an empty list will be returned. + $len = count($this->_dic); + $lst = array(); + for($i = 0; $i < $len; $i++){ + if($word == $this->_dic[$i] || PorterStemmer::getStem($word) == $this->_dic[$i]){ + return NULL; + }else{ + // Compare the two words to get the similarity. + $num = $this->_lcs($word, $this->_dic[$i]); + if($num / strlen($word) > self::SIMI && $num / strlen($this->_dic[$i]) > self::SIMI){ + array_push($lst, $this->_dic[$i]); + } + } + } + return $lst; + } + + private function _lcs($word1, $word2){ + // summary: + // Longest Common Subsequence + /* $f[$i][$j] = max(f[$i-1][$j-1] + same($i, $j), f[$i-1][$j], f[$i][$j-1];*/ + $len1 = strlen($word1); + $len2 = strlen($word2); + for($i = 0; $i <= $len1; $i++){ $f[$i][0] = 0; } + for($j = 0; $j <= $len2; $j++){ $f[0][$j] = 0; } + for($i = 1; $i <= $len1; $i++){ + for($j = 1; $j <= $len2; $j++){ + $f[$i][$j] = max($f[$i - 1][$j - 1] + ($word1[$i - 1] == $word2[$j - 1] ? 1 : 0), + max($f[$i - 1][$j], $f[$i][$j - 1])); + } + } + return $f[$i - 1][$j - 1]; + } + } + + function text2Words($text){ + $result = array(); + $words = explode (" ", $text); + $len = count($words); + for($i = 0; $i < $len; $i++){ + $word = new Word(); + $word->text = $words[$i]; + array_push($result, $word); + } + return $result; + } + + header('Content-Type: text/html; charset=UTF-8'); + + $sourceText = array_key_exists("content", $_REQUEST) ? $_REQUEST["content"] : ""; + $lang = array_key_exists("lang", $_REQUEST) ? $_REQUEST["lang"] : "EN"; + $action = array_key_exists("action", $_REQUEST) ? $_REQUEST["action"] : "query"; + $callback = array_key_exists("callback", $_REQUEST) ? $_REQUEST["callback"] : "callback"; + + $dic = new SpellDic(); + $dic->setLanguage($lang); + if($action == "query"){ + $dic->setWords(text2Words(trim($sourceText))); + echo "$callback(" . $dic->check() . ");"; // JSONP Specification + }else if ($action == "update"){ + echo "$callback(" . $dic->add($sourceText) . ");"; + } +?> diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/testBodySheet.css b/js/dojo-release-1.7.2-src/dojox/editor/tests/testBodySheet.css new file mode 100755 index 0000000..d000767 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/testBodySheet.css @@ -0,0 +1,4 @@ +body { + background-color: #657383; + color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/testContentSheet.css b/js/dojo-release-1.7.2-src/dojox/editor/tests/testContentSheet.css new file mode 100755 index 0000000..2dd6083 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/testContentSheet.css @@ -0,0 +1,20 @@ +p { + background-color: #606070; + border-style: inset; + border-width: 1px; border-color: #5F5A59; + padding: 5px 5px 5px 5px; +} + +center { + background-color: #800517; + font-weight: bold; + font-style: italic; + border-style: outset; + border-width: 1px; + border-color: #800010 +} + +h3 { + border-style: outset; + border-width: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/testPluginsAll.html b/js/dojo-release-1.7.2-src/dojox/editor/tests/testPluginsAll.html new file mode 100644 index 0000000..b28a314 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/testPluginsAll.html @@ -0,0 +1,221 @@ + + + + Editor with all plugins enabled (more or less) + + + + + + + + +
                                  +
                                  +
                                  Editor with Claro Theme and Most Plugins Enabled.
                                  +
                                  +
                                  +
                                  +

                                  Lists:

                                  +
                                    +
                                  • List Item One
                                  • +
                                  • List Item Two +
                                      +
                                    • Sub Item One
                                    • +
                                    +
                                  • +
                                  • List Item Three
                                  • +
                                  • List Item Four
                                  • +
                                  +
                                    +
                                  1. List Item One
                                  2. +
                                  3. List Item Two
                                  4. +
                                  5. List Item Three
                                  6. +
                                  7. List Item Four
                                  8. +
                                  +

                                  Links:

                                  + The Dojo Toolkit +
                                  + Example E-Mail: johndoe@example.com +
                                  + Example Anchor: Anchor +
                                  +
                                  +

                                  Images:

                                  +
                                  + The Dojo Toolkit +
                                  +
                                  +
                                  +

                                  Tables:

                                  + + + + + + + + + + + +
                                  Cell OneCell Two
                                  Cell ThreeCell Four
                                  +
                                  +
                                  +

                                  Text:

                                  +

                                  Normal Text

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  Styled Text

                                  +

                                  + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget turpis nunc. + Praesent ut metus ac mi gravida lobortis vel quis nulla. Sed elementum elit eget + ante viverra consectetur. Praesent pulvinar faucibus risus in pulvinar. Sed auctor, + dui sed suscipit semper, metus sapien feugiat urna, et auctor nisi est quis purus. + Aliquam eu tortor eu ante venenatis pellentesque nec sed massa. Nulla feugiat, nunc + ac aliquet elementum, lacus odio dictum nisl, vel molestie neque tellus eget nibh. + Curabitur et eros quam, non consectetur erat. Class aptent taciti sociosqu ad litora + torquent per conubia nostra, per inceptos himenaeos. Quisque luctus imperdiet felis, + a mollis sapien scelerisque ut. Quisque dui neque, vulputate eu consectetur et, fermentum + id est. Nulla euismod lorem at massa aliquam at cursus mi fermentum. Quisque rhoncus + ornare pharetra. Cras vestibulum convallis nisl, eget ultrices sem porta eget. Duis + in dolor id nibh volutpat sodales. Nullam eleifend, sapien accumsan convallis tincidunt, + justo mi pellentesque dolor, in suscipit dolor quam ac ligula. +

                                  +

                                  Indented Text

                                  +

                                  + Ut molestie facilisis nisi sed consequat. Nunc in turpis quam, vel elementum lectus. + Suspendisse vel consequat augue. Praesent id orci orci. Praesent est tortor, consequat + eu posuere nec, volutpat ac diam. Cras pretium quam non diam dictum tincidunt. Mauris + aliquet lacinia odio vitae elementum. Nam rutrum semper metus, in consectetur lectus + aliquam a. Maecenas pharetra nibh nec leo consequat vitae rhoncus nibh volutpat. + Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus + mus. Sed at odio turpis, sit amet molestie nisl. Curabitur in ligula id tortor feugiat + semper. Vestibulum id nunc magna, eu lacinia nibh. Ut congue adipiscing dictum. +

                                  +

                                  Blockquoted Text

                                  +
                                  +

                                  + Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia + nostra, per inceptos himenaeos. Phasellus in orci purus, sed aliquet quam. Aenean + ultrices tincidunt augue, in feugiat massa dignissim in. Nunc a dolor eu mi fringilla + laoreet. Praesent lacinia mi eu sapien imperdiet dignissim. Praesent a pellentesque + est. Sed augue eros, porttitor nec consequat bibendum, mattis lobortis diam. Sed + at massa ante. In volutpat ultrices mattis. Vestibulum tempus pretium risus quis + aliquet. Donec non ante vitae orci euismod eleifend. Aliquam at metus quis turpis + pharetra porta. Sed dignissim risus in erat aliquam et posuere nulla molestie. Nunc + iaculis lectus eget augue sollicitudin gravida ac non nisl. Vivamus bibendum gravida + vehicula. Aliquam vitae mi ligula. Nulla at augue velit, vitae ultricies libero. + Proin at lorem turpis. +

                                  +
                                  +
                                  Centered Text
                                  +
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/editor/tests/wordlist.txt b/js/dojo-release-1.7.2-src/dojox/editor/tests/wordlist.txt new file mode 100644 index 0000000..131800a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/editor/tests/wordlist.txt @@ -0,0 +1,1619 @@ +a +able +about +above +accept +accident +accuse +acid +across +act +activist +activity +actor +ad. +add +administration +admit +adult +advise +affect +afraid +after +again +against +age +agency +aggression +ago +agree +agreement +agriculture +aid +aim +air +airplane +airport +album +alcohol +alive +all +ally +almost +alone +along +already +also +although +always +ambassador +amend +ammunition +among +amount +an +anarchy +ancestor +ancient +and +anger +animal +anniversary +announce +another +another +answer +any +apologize +appeal +appear +appoint +approve +archeology +are +area +argue +arms +army +around +arrest +arrive +art +artillery +as +ash +ask +asked +asking +assist +astronaut +astronomy +asylum +at +atmosphere +atom +attach +attack +attempt +attend +automobile +autumn +average +avoid +awake +award +away +B +baby +back +bacteria +bad +balance +ball +balloon +ballot +ban +bank +bar +barrier +base +battle +be +beat +beauty +because +become +bed +before +begin +behind +being +believe +bell +belong +below +best +betray +better +between +big +bill +biology +bird +birth +bite +black +blame +blanket +bleed +blind +block +blood +blow +blue +boat +body +boil +bomb +bombs +bone +book +book, +border +borders +born +borrow +both +bottle +bottom +bottom +bought +box +boy +boycott +brain +brave +bread +break +breathe +bridge +brief +bright +bring +broadcast +brother +brown +budget +build +building +bullet +burn +burst +bury +bus +business +busy +but +buy +by +C +cabinet +call +calm +camera +camp +campaign +can +cancel +cancer +candidate +cannot +capital +capitalism +capture +car +care +careful +carefully +carry +case +cat +catch +cause +caused +ceasefire +celebrate +cell +center +century +ceremony +chairman +champion +chance +change +charge +charge +chase +cheat +cheer +chemicals +chemistry +chief +child +children +choose +chromosome +circle +citizen +city +civil +civilian +claim +clash +clean +clear +clergy +climate +climb +clock +close +cloth +clothes +cloud +coal +coalition +coast +coffee +cold +collect +college +colony +color +colored +combine +come +command +comment +committee +committee +common +communicate +communicating +community +company +compare +compete +complete +complex +compound +compromise +computer +concern +condemn +condition +conference +confirm +conflict +congratulate +Congress +conj. +connect +conservative +consider +constitution +contain +container +continent +continue +continuing +control +convention +cook +cool +cooperate +copy +corn +correct +cost +cotton +count +country +country, +court +cover +cow +crash +create +creature +credit +crew +crime +criminal +crisis +criticize +crops +cross +crowd +crush +cry +culture +cure +curfew +current +custom +customs +cut +D +dam +damage +dance +danger +dark +date +daughter +day +dead +deaf +deal +debate +debt +decide +declare +decrease +deep +defeat +defend +deficit +define +degree +delay +delegate +demand +democracy +demonstrate +demonstrated +denounce +dense +deny +depend +deplore +deploy +depression +describe +desert +design +desire +destroy +detail +develop +develops +device +dictator +die +diet +different +difficult +dig +dinner +diplomat +diplomatic +direct +direction +dirt +dis +disappear +disarm +discover +discuss +disease +dishonored +dismiss +dispute +dissident +distance +dive +divide +do +doctor +document +dog +dollar +door +down +dream +drink +drive +drop +drown +drug +dry +during +dust +duty +E +each +early +earn +earth +earthquake +earth's +ease +east +easy +eat +ecology +economy +edge +education +effect +effort +efforts +egg +either +elect +electricity +electron +electronic +element +embassy +emergency +emotion +emotions +employ +empty +end +enemy +energy +enforce +engine +engineer +enjoy +enough +enter +environment +enzyme +equal +equipment +escape +especially +establish +estimate +ethnic +evaporate +even +event +events +ever +every +evidence +evil +exact +examine +example +excellent +except +exchange +excuse +execute +exercise +exile +exist +expand +expect +expel +experience +experiment +expert +explain +explode +explore +export +express +extend +extra +extreme +extremist +F +face +fact +factory +facts +fail +fair +fall +false, +family +famous +far +farm +fast +fat +father +fear +feared +federal +feed +feel +feet +female +fence +fertile +fetus +few +field +fierce +fight +fill +film +final +financial +find +fine +finish +fire +fireworks +firm +first +fish +fission +fit +fix +flag +flat +flee +float +flood +floor +flow +flower +fluid +fly +fog +follow +food +fool +foot +for +force +force +force +forced +foreign +foreign +forest +forget +forgive +form +formed +former +forms +forward +free +freedom +freeze +fresh +friend +frighten +from +front +fruit +fuel +fuel +full +fun +funeral +fusion +future +G +gain +game +gas +gases +gather +general +genes +genetic +gentle +get +gets +gift +girl +give +glass +go +goal +god +gold +good +goods +govern +government +grain +granddaughter +grandfather +grandmother +grandson +grass +gravity +gray +great +green +grind +ground +group +grow +grown +guarantee +guard +guerrilla +guide +guilty +gun +H +had +hair +half +halt +hang +happen +happens +happy +hard +harm +harmless +harvest +hat +hate +have +having +he +head +headquarters +heal +health +hear +heart +heat +heat, +heavy +helicopter +help +here +hero +hide +high +highest +hijack +hill +history +hit +hold +hole +holiday +holy +home +honest +honor +hope +horrible +horse +hospital +hostage +hostile +hot +hotel +hour +house +how +however +huge +human +humor +hunger +hunt +hurry +hurt +husband +I +ice +idea +identify +if +illegal +image +imagine +immediate +import +important +imports +improve +in +in +incident +incite +include +increase +independent +independent +individual +industrial +industry +infect +inflation +influence +inform +information +inject +injure +injury +innocent +insane +insect +inspect +instead +instrument +instrument +insult +intelligence +intelligent +intense +interest +interfere +international +intervene +intestines +invade +invent +invest +investigate +investments +invite +involve +iron +is +island +issue +it +J +jail +jewel +job +join +joint +joke +judge +jump +jury +just +K +keep +kick +kidnap +kidney +kill +kilometers +kind +kiss +knife +know +knowledge +known +knows +L +labor +laboratory +lack +lake +land +language +large +laser +last +late +laugh +launch +law +lead +leak +learn +leave +left +legal +legislature +lend +less +let +letter +level +liberal +lie +life +lift +light +lightning +like +limit +line +link +links +liquid +list +listen +literature +little +live +liver +load +loan +local +lonely +long +look +lose +lost +loud +love +low +loyal +luck +lung +M +machine +magazine +magnet +mail +main +major +majority +make +male +man +manufacture +many +map +march +mark +market +marry +mass +mate +material +mathematics +matter +may +mayor +meal +mean +measure +meat +media +medicine +medicine +meet +melt +member +member +memorial +memory +mental +mercy +message +message +metal +meters +method +microscope +middle +militant +military +milk +mind +mine +mineral +minister +minor +minority +minute +miss +missile +missing +mistake +mistakes +mix +mob +model +moderate +modern +molecule +money +money, +month +moon +moral +more +morning +most +mother +motion +mountain +mourn +move +movement +moves +movie +movie +much +murder +music +must +mystery +N +n. +name +narrow +nation +native +natural +nature +navy +near +necessary +need +negotiate +neither +nerve +neutral +never +new +news +next +nice +night +no +noise +nominate +noon +normal +north +not +not +note +nothing +now +nowhere +nuclear +nucleic +nucleus +number +nutrient +O +obey +object +observe +occupy +ocean +oceans +of +of +off +offensive +offer +office +officer +official +often +oil +old +on +once +one +only +onto +open +operate +opinion +oppose +opposite +oppress +or +or +orbit +order +organ +organism +organization +organize +ORGANS +other +others +others, +our +oust +out +over +overthrow +owe +own +P +pain +paint +pan +paper +parachute +parade +pardon +parent +parliament +part +particle +party +pass +passenger +passengers +passport +past +path +patient +pay +peace +people +percent +perfect +perform +period +permanent +permit +permitted +person +physical +physics +picture +pictures +piece +pig +pilot +pipe +place +plan +planet +plant +plants +plastic +play +please +plenty +plot +poem +point +poison +police +policy +politics +pollute +poor +popular +population +port +position +possess +possible +post +postpone +pour +power +power +praise +pray +pregnant +prep. +preparation +present +presented +president +president +press +pressure +prevent +price +prison +private +prize +pro +pro. +probably +problem +process +produce +profession +professor +profit +program +progress +project +proof +propaganda +property +propose +prostate +protect +proteins +protest +prove +provide +public +publication +publish +pull +pump +punish +purchase +pure +purpose +push +put +Q +quality +question +quick +quiet +R +race +radar +radiation +radio +radio +raid +railroad +rain +raise +rare +rate +re +reach +reached +react +read +ready +ready +real +realistic +reason +reasonable +rebel +receive +recent +recession +recognize +record +recover +recovered +red +reduce +reform +refugee +refuse +regret +reject +related +relations +release +religion +religion, +remain +remains +remember +remembered +remove +repair +repeat +report +report +represent +representation +representative +repress +request +require +rescue +research +resign +resist +resolution +resource +responsibility +responsible +rest +restrain +restrict +result +retire +return +revolt +rice +rich +ride +right +riot +rise +risk +river +road +rob +robot +rock +rocket +roll +room +root +rope +rough +round +rub +rubber +ruin +rule +run +S +same +saw +science +self +selling +sending +separate +separated +services +should +side +signal +similar +so +soil +soldier +some +somebody +someone +something +space +speak +special +speech +speed +spend +spill +spirit +split +sport +sports +spread +spring +spy +square +stab +stand +star +stars +start +starve +state +States +station +statue +statues +stay +steal +steam +steel +step +stepping +stick +still +stomach +stone +stop +store +storm +story +stove +straight +strange +street +stretch +strike +strong +structure +struggle +studied +study +studying +stupid +subject +submarine +substance +substitute +subversion +succeed +such +sudden +suffer +sugar +suggest +summer +sun +supervise +supply +support +suppose +suppress +sure +surface +surplus +surplus. +surprise +surrender +surround +survive +suspect +suspend +swallow +swear +sweet +swim +sympathy +system +T +table +take +talk +tall +tank +target +taste +tax +tea +teach +teacher +team +tear +tears +technical +technology +telephone +telescope +television +tell +temperature +temporary +tense +term +terrible +territory +terror +terrorist +test +than +thank +that +the +theater +them +then +theory +there +these +they +thick +thin +thing +think +third +this +threaten +through +throw +tie +time +tired +tissue +to +to +today +together +together +together, +tomorrow +tonight +too +tool +top +torture +total +touch +toward +town +trade +tradition +traffic +tragic +train +transport +transportation +trap +travel +treason +treasure +treat +treatment +treaty +tree +trial +tribe +trick +trip +troops +trouble +truce +truck +trust +try +tube +turn +two +U +un +under +understand +understanding +unite +universe +university +unless +until +up +urge +urgent +us +use +used +usual +usually +uterus +V +v. +valley +value +vegetable +vegetables +vehicle +version +very +veto +vicious +victim +victory +village +violate +violence +virus +visit +voice +volcano +vote +voters +W +wages +wait +walk +wall +want +wanted +war +warm +warm +warn +was +wash +waste +watch +water +waterway +wave +way +we +weak +wealth +weapon +wear +weather +week +weigh +welcome +well +west +wet +what +wheat +wheel +when +where +where +which +while +White +who +whole +why +wide +wife +wild +will +willing +willingness +win +wind +window +winter +wire +wise +wish +with +withdraw +without +woman +wonder +wonderful +wood +word +WORDS +work +world +worry +worse +worse +worth +wound +wreck +wreckage +write +wrong +x-rays +Y +year +yellow +yes +yesterday +yet +you +young +Z +zero +zoo +weest +tee st +spell +page +demo +show +check +plugin +php +server +enable +editor +feature +asynchronous +communication +browser +done +javascript +provide +changed +i'm +Terry +student +ibm +am +google +microsoft +soon +hp diff --git a/js/dojo-release-1.7.2-src/dojox/embed/Flash.js b/js/dojo-release-1.7.2-src/dojox/embed/Flash.js new file mode 100644 index 0000000..3527bb3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/embed/Flash.js @@ -0,0 +1,506 @@ +define(["dojo"], function(dojo) { + + /******************************************************* + dojox.embed.Flash + + Base functionality to insert a flash movie into + a document on the fly. + + Usage: + var movie=new dojox.embed.Flash({ args }, containerNode); + ******************************************************/ + + dojo.getObject("embed", true, dojox); + + var fMarkup, fVersion; + var minimumVersion = 9; // anything below this will throw an error (may overwrite) + var keyBase = "dojox-embed-flash-", keyCount=0; + var _baseKwArgs = { + expressInstall: false, + width: 320, + height: 240, + swLiveConnect: "true", + allowScriptAccess: "sameDomain", + allowNetworking:"all", + style: null, + redirect: null + }; + + function prep(kwArgs){ + kwArgs = dojo.delegate(_baseKwArgs, kwArgs); + + if(!("path" in kwArgs)){ + console.error("dojox.embed.Flash(ctor):: no path reference to a Flash movie was provided."); + return null; + } + + if(!("id" in kwArgs)){ + kwArgs.id = (keyBase + keyCount++); + } + return kwArgs; + } + + if(dojo.isIE){ + fMarkup = function(kwArgs){ + kwArgs = prep(kwArgs); + if(!kwArgs){ return null; } + + var p; + var path = kwArgs.path; + if(kwArgs.vars){ + var a = []; + for(p in kwArgs.vars){ + a.push(p + '=' + kwArgs.vars[p]); + } + kwArgs.params.FlashVars = a.join("&"); + delete kwArgs.vars; + } + var s = '' + + ''; + if(kwArgs.params){ + for(p in kwArgs.params){ + s += ''; + } + } + s += ''; + return { id: kwArgs.id, markup: s }; + }; + + fVersion = (function(){ + var testVersion = 10, testObj = null; + while(!testObj && testVersion > 7){ + try { + testObj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + testVersion--); + }catch(e){ } + } + if(testObj){ + var v = testObj.GetVariable("$version").split(" ")[1].split(","); + return { + major: (v[0]!=null) ? parseInt(v[0]) : 0, + minor: (v[1]!=null) ? parseInt(v[1]) : 0, + rev: (v[2]!=null) ? parseInt(v[2]) : 0 + }; + } + return { major: 0, minor: 0, rev: 0 }; + })(); + + // attach some cleanup for IE, thanks to deconcept :) + dojo.addOnUnload(function(){ + var dummy = function(){}; + var objs = dojo.query("object"). + reverse(). + style("display", "none"). + forEach(function(i){ + for(var p in i){ + if((p != "FlashVars") && dojo.isFunction(i[p])){ + try{ + i[p] = dummy; + }catch(e){} + } + } + }); + }); + + } else { + // *** Sane browsers branch ****************************************************************** + fMarkup = function(kwArgs){ + kwArgs = prep(kwArgs); + if(!kwArgs){ return null; } + + var p; + var path = kwArgs.path; + if(kwArgs.vars){ + var a = []; + for(p in kwArgs.vars){ + a.push(p + '=' + kwArgs.vars[p]); + } + kwArgs.params.flashVars = a.join("&"); + delete kwArgs.vars; + } + var s = '-1){ + throw new Error("dojox.embed.Flash can't be run directly from a file. To instatiate the required SWF correctly it must be run from a server, like localHost."); + } + + // available: Number + // If there is a flash player available, and if so what version. + this.available = dojox.embed.Flash.available; + + // minimumVersion: Number + // The minimum version of Flash required to run this movie. + this.minimumVersion = kwArgs.minimumVersion || minimumVersion; + + // id: String + // The id of the DOMNode to be used for this movie. Can be used with dojo.byId to get a reference. + this.id = null; + + // movie: FlashObject + // A reference to the movie itself. + this.movie = null; + + // domNode: DOMNode + // A reference to the DOMNode that contains this movie. + this.domNode = null; + if(node){ + node = dojo.byId(node); + } + // setTimeout Fixes #8743 - creating double SWFs + // also allows time for code to attach to onError + setTimeout(dojo.hitch(this, function(){ + if(kwArgs.expressInstall || this.available && this.available >= this.minimumVersion){ + if(kwArgs && node){ + this.init(kwArgs, node); + }else{ + this.onError("embed.Flash was not provided with the proper arguments."); + } + }else{ + if(!this.available){ + this.onError("Flash is not installed."); + }else{ + this.onError("Flash version detected: "+this.available+" is out of date. Minimum required: "+this.minimumVersion); + } + } + }), 100); + }; + + dojo.extend(dojox.embed.Flash, { + onReady: function(/*HTMLObject*/ movie){ + // summary: + // Stub function for you to attach to when the movie reference is first + // pushed into the document. + }, + onLoad: function(/*HTMLObject*/ movie){ + // summary: + // Stub function for you to attach to when the movie has finished downloading + // and is ready to be manipulated. + }, + onError: function(msg){ + + }, + _onload: function(){ + // summary: + // Internal. Cleans up before calling onLoad. + clearInterval(this._poller); + delete this._poller; + delete this._pollCount; + delete this._pollMax; + this.onLoad(this.movie); + }, + init: function(/*dojox.embed.__flashArgs*/ kwArgs, /*DOMNode?*/ node){ + // summary + // Initialize (i.e. place and load) the movie based on kwArgs. + this.destroy(); // ensure we are clean first. + node = dojo.byId(node || this.domNode); + if(!node){ throw new Error("dojox.embed.Flash: no domNode reference has been passed."); } + + // vars to help determine load status + var p = 0, testLoaded=false; + this._poller = null; this._pollCount = 0; this._pollMax = 15; this.pollTime = 100; + + if(dojox.embed.Flash.initialized){ + + this.id = dojox.embed.Flash.place(kwArgs, node); + this.domNode = node; + + setTimeout(dojo.hitch(this, function(){ + this.movie = this.byId(this.id, kwArgs.doc); + this.onReady(this.movie); + + this._poller = setInterval(dojo.hitch(this, function(){ + + // catch errors if not quite ready. + try{ + p = this.movie.PercentLoaded(); + }catch(e){ + console.warn("this.movie.PercentLoaded() failed", e, this.movie); + } + + if(p == 100){ + // if percent = 100, movie is fully loaded and we're communicating + this._onload(); + + }else if(p==0 && this._pollCount++ > this._pollMax){ + // after several attempts, we're not past zero. + clearInterval(this._poller); + throw new Error("Building SWF failed."); + } + }), this.pollTime); + }), 1); + } + }, + _destroy: function(){ + // summary + // Kill the movie and reset all the properties of this object. + try{ + this.domNode.removeChild(this.movie); + }catch(e){} + this.id = this.movie = this.domNode = null; + }, + destroy: function(){ + // summary + // Public interface for destroying all the properties in this object. + // Will also clean all proxied methods. + if(!this.movie){ return; } + + // remove any proxy functions + var test = dojo.delegate({ + id: true, + movie: true, + domNode: true, + onReady: true, + onLoad: true + }); + for(var p in this){ + if(!test[p]){ + delete this[p]; + } + } + + // poll the movie + if(this._poller){ + // wait until onLoad to destroy + dojo.connect(this, "onLoad", this, "_destroy"); + } else { + this._destroy(); + } + }, + byId: function (movieName, doc){ + // summary: + // Gets Flash movie by id. + // description: + // Probably includes methods for outdated + // browsers, but this should catch all cases. + // arguments: + // movieName: String + // The name of the SWF + // doc: Object + // The document, if not current window + // (not fully supported) + // example: + // | var movie = dojox.embed.Flash.byId("myId"); + // + doc = doc || document; + if(doc.embeds[movieName]){ + return doc.embeds[movieName]; + } + if(doc[movieName]){ + return doc[movieName]; + } + if(window[movieName]){ + return window[movieName]; + } + if(document[movieName]){ + return document[movieName]; + } + return null; + } + }); + + // expose information through the constructor function itself. + dojo.mixin(dojox.embed.Flash, { + // summary: + // A singleton object used internally to get information + // about the Flash player available in a browser, and + // as the factory for generating and placing markup in a + // document. + // + // minSupported: Number + // The minimum supported version of the Flash Player, defaults to 8. + // available: Number + // Used as both a detection (i.e. if(dojox.embed.Flash.available){ }) + // and as a variable holding the major version of the player installed. + // supported: Boolean + // Whether or not the Flash Player installed is supported by dojox.embed. + // version: Object + // The version of the installed Flash Player; takes the form of + // { major, minor, rev }. To get the major version, you'd do this: + // var v=dojox.embed.Flash.version.major; + // initialized: Boolean + // Whether or not the Flash engine is available for use. + // onInitialize: Function + // A stub you can connect to if you are looking to fire code when the + // engine becomes available. A note: DO NOT use this event to + // place a movie in a document; it will usually fire before DOMContentLoaded + // is fired, and you will get an error. Use dojo.addOnLoad instead. + minSupported : 8, + available: fVersion.major, + supported: (fVersion.major >= fVersion.required), + minimumRequired: fVersion.required, + version: fVersion, + initialized: false, + onInitialize: function(){ + dojox.embed.Flash.initialized = true; + }, + __ie_markup__: function(kwArgs){ + return fMarkup(kwArgs); + }, + proxy: function(/*dojox.embed.Flash*/ obj, /*Array|String*/ methods){ + // summary: + // Create the set of passed methods on the dojox.embed.Flash object + // so that you can call that object directly, as opposed to having to + // delve into the internal movie to do this. Intended to make working + // with Flash movies that use ExternalInterface much easier to use. + // + // example: + // Create "setMessage" and "getMessage" methods on foo. + // | var foo = new dojox.embed.Flash(args, someNode); + // | dojo.connect(foo, "onLoad", dojo.hitch(foo, function(){ + // | dojox.embed.Flash.proxy(this, [ "setMessage", "getMessage" ]); + // | this.setMessage("dojox.embed.Flash.proxy is pretty cool..."); + // | console.log(this.getMessage()); + // | })); + dojo.forEach((dojo.isArray(methods) ? methods : [ methods ]), function(item){ + this[item] = dojo.hitch(this, function(){ + return (function(){ + return eval(this.movie.CallFunction( + '' + + '' + + dojo.map(arguments, function(item){ + // FIXME: + // investigate if __flash__toXML will + // accept direct application via map() + // (e.g., does it ignore args past the + // first? or does it blow up?) + return __flash__toXML(item); + }).join("") + + '' + + '' + )); + }).apply(this, arguments||[]); + }); + }, obj); + } + }); + + dojox.embed.Flash.place = function(kwArgs, node){ + var o = fMarkup(kwArgs); + node = dojo.byId(node); + if(!node){ + node = dojo.doc.createElement("div"); + node.id = o.id+"-container"; + dojo.body().appendChild(node); + } + if(o){ + node.innerHTML = o.markup; + return o.id; + } + return null; + } + dojox.embed.Flash.onInitialize(); + + return dojox.embed.Flash; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/embed/Object.js b/js/dojo-release-1.7.2-src/dojox/embed/Object.js new file mode 100644 index 0000000..b361f93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/embed/Object.js @@ -0,0 +1,109 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", // dojo.declare + "dojo/dom-geometry", + "dijit/_Widget", + "./Flash", + "./Quicktime" +], function (dojo, declare, domGeometry, _Widget, Flash, Quicktime) { +dojo.experimental("dojox.embed.Object"); + +return dojo.declare("dojox.embed.Object", _Widget, { + // summary: + // A widget you can use to embed either a Flash or Quicktime + // movie. + // + // example: + // From markup: + // |
                                  + // + // example: + // Programmatic: + // | var mov=new dojox.embed.Object({ + // | src: "path/to/movie.swf" + // | }, node); + // + // width: Number? + // The width of the movie. If not provided, the width of this.domNode is used. + // height: Number? + // The height of the movie. If not provided, the height of this.domNode is used. + // src: String + // The URL of the movie to embed. + // movie: HTMLEmbed + // The eventual reference to the movie embedded. If you are looking to script + // control over the movie, you'd access it this way. + // params: Object + // A property bag that is created postCreate. Any additional attributes you + // define on your domNode will be collected and placed into this, which will + // then be passed to the movie constructor. + // reFlash: RegExp + // Expression used on the src property to determine if this is Flash or Quicktime. + // reQtMovie: RegExp + // Expression used on the src property to determine if this is Flash or Quicktime. + // reQtAudio: RegExp + // Expression used on the src property to determine if this is Flash or Quicktime. + + width: 0, + height: 0, + src: "", + movie: null, + params: null, + + reFlash: /\.swf|\.flv/gi, + reQtMovie: /\.3gp|\.avi|\.m4v|\.mov|\.mp4|\.mpg|\.mpeg|\.qt/gi, + reQtAudio:/\.aiff|\.aif|\.m4a|\.m4b|\.m4p|\.midi|\.mid|\.mp3|\.mpa|\.wav/gi, + + postCreate: function(){ + // summary + // Constructs the movie and places it in the document. + if(!this.width || !this.height){ + // get the width and height from the domNode + var box=domGeometry.getMarginBox(this.domNode); + this.width=box.w, this.height=box.h; + } + + // the default embed constructor. + var em=Flash; + + // figure out what kind of movie this is. + if(this.src.match(this.reQtMovie) || this.src.match(this.reQtAudio)){ + em=Quicktime; + } + + // loop through any attributes and set up our params object. + if(!this.params){ + this.params={}; + if(this.domNode.hasAttributes()){ + // ignore list + var ignore = { + dojoType: "", + width: "", + height: "", + "class": "", + style: "", + id: "", + src: "" + }; + + var attrs=this.domNode.attributes; + for(var i=0, l=attrs.length; i' + + ''; + for(var p in kwArgs.params||{}){ + s += ''; + } + s += ''; + return { id: kwArgs.id, markup: s }; + } + } else { + installed = (function(){ + for(var i=0, p=navigator.plugins, l=p.length; i-1){ + return true; + } + } + return false; + })(); + + qtMarkup = function(kwArgs){ + if(!installed){ return { id: null, markup: getQTMarkup }; } + + kwArgs = prep(kwArgs); + if(!kwArgs){ return null; } + var s = '' + + o.markup + + '
                                  '); + } + getVer(); + }else if(has("ie") && installed){ + // we already know if IE has QuickTime installed, but we need this to seem like a callback. + setTimeout(function(){ + embed.Quicktime.onInitialize(); + }, 10); + } + + return embed.Quicktime; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/embed/README b/js/dojo-release-1.7.2-src/dojox/embed/README new file mode 100644 index 0000000..1f5cb00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/embed/README @@ -0,0 +1,44 @@ +------------------------------------------------------------------------------- +dojox.embed +------------------------------------------------------------------------------- +Version 0.1 +Release date: 4/7/2008 +------------------------------------------------------------------------------- +Project state: +beta +------------------------------------------------------------------------------- +Credits + Tom Trenka (ttrenka AT gmail.com) +------------------------------------------------------------------------------- +Project description + +A move/port of what was in dojox.av._base; the nominal purpose is to provide +easy ways of including external objects that would normally require the use +of either an OBJECT or an EMBED tag. + +The following constructors are considered beta (working tests and docs) as of +2008-06-04: + +dojox.embed.Flash +dojox.embed.FlashProxy +dojox.embed.Quicktime +dojox.embed.Object (a Dijit that can load anything there is an embed for here) +------------------------------------------------------------------------------- +Dependencies: + +dojox.embed has no dependencies, other than the Dojo base. +------------------------------------------------------------------------------- +Documentation + +TBD +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/dojox/trunk/embed/* + +Install into the following directory structure: +/dojox/embed/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/embed/flashVars.js b/js/dojo-release-1.7.2-src/dojox/embed/flashVars.js new file mode 100644 index 0000000..798b5e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/embed/flashVars.js @@ -0,0 +1,60 @@ +define(['dojo'],function(dojo){ + +dojo.getObject("dojox.embed", true); +dojo.deprecated("dojox.embed.flashVars", "Will be removed in 2.0", "2.0"); + +dojox.embed.flashVars = { + // summary + // Handles flashvar serialization + // Converting complex objects into a simple, clear string that can be appended + // to the swf as a query: myMovie.swf?flashvars=foo. + // Note this needs to work with the SWF, which must know what variables to expect. + // Therefore this is something of an "internal" class - unless you know how to + // modify or create SWFs. + // + // description: + // JSON could be done, but Deft does not yet have a JSON parser, and quotes are + // very problematic since Flash cannot use eval(); JSON parsing was successful + // when it was fully escaped, but that made it very large anyway. flashvar + // serialization at most is 200% larger than JSON. + // + // See: + // Deft/common/flashVars.as + // + serialize: function(/* String */n, /*Object*/o){ + // summary: + // Key method. Serializes an object. + // n:String + // The name for the object, such as: "button" + // o:Object + // The object to serialize + // + var esc = function(val){ + // have to encode certain characters that indicate an object + if(typeof val=="string"){ + val = val.replace(/;/g,"_sc_"); + val = val.replace(/\./g,"_pr_"); + val = val.replace(/\:/g,"_cl_"); + //val = escape(val); + } + return val; + }; + var df = dojox.embed.flashVars.serialize; + var txt = ""; + if(dojo.isArray(o)){ + for(var i=0;i + + dojox.embed.Flash Detection Test + + + + + + +

                                  Dojo.embed.Flash detection tests.

                                  +

                                  + This page is testing the base Flash movie generator. +

                                  +
                                  +

                                  Installed Flash version: .

                                  +
                                  + A movie will be inserted here on load. +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/embed/tests/object.html b/js/dojo-release-1.7.2-src/dojox/embed/tests/object.html new file mode 100644 index 0000000..a04e49c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/embed/tests/object.html @@ -0,0 +1,29 @@ + + + dojox.embed.Object Test + + + + + + +

                                  dojox.embed.Object

                                  +

                                  + This is a test for the embedder widget. +

                                  +
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/embed/tests/quicktime.html b/js/dojo-release-1.7.2-src/dojox/embed/tests/quicktime.html new file mode 100644 index 0000000..8888127 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/embed/tests/quicktime.html @@ -0,0 +1,46 @@ + + + dojo.embed.QuickTime Detection Test + + + + + + +

                                  DojoX A/V: QuickTime detection tests.

                                  + +

                                  This page is testing the base QuickTime movie generator. See the Firebug log for details.

                                  + +

                                  Installed QuickTime version:

                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/embed/tests/resources/TestFlash.swf b/js/dojo-release-1.7.2-src/dojox/embed/tests/resources/TestFlash.swf new file mode 100644 index 0000000..cfd3f8d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/embed/tests/resources/TestFlash.swf differ diff --git a/js/dojo-release-1.7.2-src/dojox/embed/tests/resources/hfp.swf b/js/dojo-release-1.7.2-src/dojox/embed/tests/resources/hfp.swf new file mode 100644 index 0000000..b878f69 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/embed/tests/resources/hfp.swf differ diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/LICENSE b/js/dojo-release-1.7.2-src/dojox/encoding/LICENSE new file mode 100644 index 0000000..f0a4be5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/LICENSE @@ -0,0 +1,14 @@ +License Disclaimer: + +All contents of this directory are Copyright (c) the Dojo Foundation, with the +following exceptions: +------------------------------------------------------------------------------- + +MD5.js, SHA1.js: + * Copyright 1998-2005, Paul Johnstone + Distributed under the terms of the BSD License + +SimpleAES.js + * Original version by Chris Veness (CLA signed with permission + given under the terms of the BSD license) + http://www.movable-type.co.uk/scripts/aes.html diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/README b/js/dojo-release-1.7.2-src/dojox/encoding/README new file mode 100644 index 0000000..b1b80d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/README @@ -0,0 +1,35 @@ +------------------------------------------------------------------------------- +DojoX Encoding +------------------------------------------------------------------------------- +Version 0.1.0 +Release date: 7/30/2007 +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Eugene Lazutkin + Tom Trenka +------------------------------------------------------------------------------- +Project description + +DojoX Encoding provides a set of routines for common encoding algorithms. +------------------------------------------------------------------------------- +Dependencies: + +Encoding only depends on the Dojo Core. +------------------------------------------------------------------------------- +Documentation + +See the API documentation for details. +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/src/dojox/trunk/encoding/* + +Install into the following directory structure: +/dojox/encoding/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/_base.js b/js/dojo-release-1.7.2-src/dojox/encoding/_base.js new file mode 100644 index 0000000..c9dc0a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/_base.js @@ -0,0 +1,3 @@ +define(['dojo/_base/lang'], function(lang){ + return lang.getObject("dojox.encoding._base", true); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/ascii85.js b/js/dojo-release-1.7.2-src/dojox/encoding/ascii85.js new file mode 100644 index 0000000..4594cde --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/ascii85.js @@ -0,0 +1,65 @@ +define(["dojo/_base/lang"], function(lang) { + + var ascii85 = lang.getObject("dojox.encoding.ascii85", true); + /*===== + ascii85 = dojox.encoding.ascii85; + =====*/ + + var c = function(input, length, result){ + var i, j, n, b = [0, 0, 0, 0, 0]; + for(i = 0; i < length; i += 4){ + n = ((input[i] * 256 + input[i+1]) * 256 + input[i+2]) * 256 + input[i+3]; + if(!n){ + result.push("z"); + }else{ + for(j = 0; j < 5; b[j++] = n % 85 + 33, n = Math.floor(n / 85)); + } + result.push(String.fromCharCode(b[4], b[3], b[2], b[1], b[0])); + } + }; + + ascii85.encode = function(input){ + // summary: encodes input data in ascii85 string + // input: Array: an array of numbers (0-255) to encode + var result = [], reminder = input.length % 4, length = input.length - reminder; + c(input, length, result); + if(reminder){ + var t = input.slice(length); + while(t.length < 4){ t.push(0); } + c(t, 4, result); + var x = result.pop(); + if(x == "z"){ x = "!!!!!"; } + result.push(x.substr(0, reminder + 1)); + } + return result.join(""); // String + }; + + ascii85.decode = function(input){ + // summary: decodes the input string back to array of numbers + // input: String: the input string to decode + var n = input.length, r = [], b = [0, 0, 0, 0, 0], i, j, t, x, y, d; + for(i = 0; i < n; ++i){ + if(input.charAt(i) == "z"){ + r.push(0, 0, 0, 0); + continue; + } + for(j = 0; j < 5; ++j){ b[j] = input.charCodeAt(i + j) - 33; } + d = n - i; + if(d < 5){ + for(j = d; j < 4; b[++j] = 0); + b[d] = 85; + } + t = (((b[0] * 85 + b[1]) * 85 + b[2]) * 85 + b[3]) * 85 + b[4]; + x = t & 255; + t >>>= 8; + y = t & 255; + t >>>= 8; + r.push(t >>> 8, t & 255, y, x); + for(j = d; j < 5; ++j, r.pop()); + i += 4; + } + return r; + }; + + return ascii85; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/base64.js b/js/dojo-release-1.7.2-src/dojox/encoding/base64.js new file mode 100644 index 0000000..ddf0e2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/base64.js @@ -0,0 +1,67 @@ +define(["dojo/_base/lang"], function(lang) { + + var base64 = lang.getObject("dojox.encoding.base64", true); + /*===== + base64 = dojox.encoding.base64; + =====*/ + + var p="="; + var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + base64.encode=function(/* byte[] */ba){ + // summary + // Encode an array of bytes as a base64-encoded string + var s=[], l=ba.length; + var rm=l%3; + var x=l-rm; + for (var i=0; i>>18)&0x3f)); + s.push(tab.charAt((t>>>12)&0x3f)); + s.push(tab.charAt((t>>>6)&0x3f)); + s.push(tab.charAt(t&0x3f)); + } + // deal with trailers, based on patch from Peter Wood. + switch(rm){ + case 2:{ + var t=ba[i++]<<16|ba[i++]<<8; + s.push(tab.charAt((t>>>18)&0x3f)); + s.push(tab.charAt((t>>>12)&0x3f)); + s.push(tab.charAt((t>>>6)&0x3f)); + s.push(p); + break; + } + case 1:{ + var t=ba[i++]<<16; + s.push(tab.charAt((t>>>18)&0x3f)); + s.push(tab.charAt((t>>>12)&0x3f)); + s.push(p); + s.push(p); + break; + } + } + return s.join(""); // string + }; + + base64.decode=function(/* string */str){ + // summary + // Convert a base64-encoded string to an array of bytes + var s=str.split(""), out=[]; + var l=s.length; + while(s[--l]==p){ } // strip off trailing padding + for (var i=0; i>>16)&0xff); + out.push((t>>>8)&0xff); + out.push(t&0xff); + } + // strip off any null bytes + while(out[out.length-1]==0){ out.pop(); } + return out; // byte[] + }; + + return base64; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/bits.js b/js/dojo-release-1.7.2-src/dojox/encoding/bits.js new file mode 100644 index 0000000..e5df2e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/bits.js @@ -0,0 +1,74 @@ +define([ + "dojo/_base/lang" // dojo.extend +], function(lang) { + var bits = lang.getObject("dojox.encoding.bits", true); + /*===== + bits = dojox.encoding.bits; + =====*/ + + bits.OutputStream = function(){ + this.reset(); + }; + + lang.extend(bits.OutputStream, { + reset: function(){ + this.buffer = []; + this.accumulator = 0; + this.available = 8; + }, + putBits: function(value, width){ + while(width){ + var w = Math.min(width, this.available); + var v = (w <= width ? value >>> (width - w) : value) << (this.available - w); + this.accumulator |= v & (255 >>> (8 - this.available)); + this.available -= w; + if(!this.available){ + this.buffer.push(this.accumulator); + this.accumulator = 0; + this.available = 8; + } + width -= w; + } + }, + getWidth: function(){ + return this.buffer.length * 8 + (8 - this.available); + }, + getBuffer: function(){ + var b = this.buffer; + if(this.available < 8){ b.push(this.accumulator & (255 << this.available)); } + this.reset(); + return b; + } + }); + + bits.InputStream = function(buffer, width){ + this.buffer = buffer; + this.width = width; + this.bbyte = this.bit = 0; + }; + + lang.extend(bits.InputStream, { + getBits: function(width){ + var r = 0; + while(width){ + var w = Math.min(width, 8 - this.bit); + var v = this.buffer[this.bbyte] >>> (8 - this.bit - w); + r <<= w; + r |= v & ~(~0 << w); + this.bit += w; + if(this.bit == 8){ + ++this.bbyte; + this.bit = 0; + } + width -= w; + } + return r; + }, + getWidth: function(){ + return this.width - this.bbyte * 8 - this.bit; + } + }); + + + return bits; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/compression/lzw.js b/js/dojo-release-1.7.2-src/dojox/encoding/compression/lzw.js new file mode 100644 index 0000000..374f6b9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/compression/lzw.js @@ -0,0 +1,95 @@ +define([ + "dojo/_base/lang", // dojo.extend + "../bits" +], function(lang, bits) { + + var lzw = lang.getObject("dojox.encoding.compression.lzw", true); + /*===== + lzw = dojox.encoding.compression.lzw; + =====*/ + + var _bits = function(x){ + var w = 1; + for(var v = 2; x >= v; v <<= 1, ++w); + return w; + }; + + lzw.Encoder = function(n){ + this.size = n; + this.init(); + }; + + lang.extend(lzw.Encoder, { + init: function(){ + this.dict = {}; + for(var i = 0; i < this.size; ++i){ + this.dict[String.fromCharCode(i)] = i; + } + this.width = _bits(this.code = this.size); + this.p = ""; + }, + encode: function(value, stream){ + var c = String.fromCharCode(value), p = this.p + c, r = 0; + // if already in the dictionary + if(p in this.dict){ + this.p = p; + return r; + } + stream.putBits(this.dict[this.p], this.width); + // if we need to increase the code length + if((this.code & (this.code + 1)) == 0){ + stream.putBits(this.code++, r = this.width++); + } + // add new string + this.dict[p] = this.code++; + this.p = c; + return r + this.width; + }, + flush: function(stream){ + if(this.p.length == 0){ + return 0; + } + stream.putBits(this.dict[this.p], this.width); + this.p = ""; + return this.width; + } + }); + + lzw.Decoder = function(n){ + this.size = n; + this.init(); + }; + + lang.extend(lzw.Decoder, { + init: function(){ + this.codes = new Array(this.size); + for(var i = 0; i < this.size; ++i){ + this.codes[i] = String.fromCharCode(i); + } + this.width = _bits(this.size); + this.p = -1; + }, + decode: function(stream){ + var c = stream.getBits(this.width), v; + if(c < this.codes.length){ + v = this.codes[c]; + if(this.p >= 0){ + this.codes.push(this.codes[this.p] + v.substr(0, 1)); + } + }else{ + if((c & (c + 1)) == 0){ + this.codes.push(""); + ++this.width; + return ""; + } + var x = this.codes[this.p]; + v = x + x.substr(0, 1); + this.codes.push(v); + } + this.p = c; + return v; + } + }); + + return lzw; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/compression/splay.js b/js/dojo-release-1.7.2-src/dojox/encoding/compression/splay.js new file mode 100644 index 0000000..f59140f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/compression/splay.js @@ -0,0 +1,70 @@ +define([ + "dojo/_base/lang", // dojo.extend + "../bits" +], function(lang, bits) { + var compression = lang.getObject("dojox.encoding.compression", true); + /*===== + compression = dojox.encoding.compression; + =====*/ + + compression.Splay = function(n){ + this.up = new Array(2 * n + 1); + this.left = new Array(n); + this.right = new Array(n); + this.reset(); + }; + + lang.extend(compression.Splay, { + reset: function(){ + for(var i = 1; i < this.up.length; this.up[i] = Math.floor((i - 1) / 2), ++i); + for(var i = 0; i < this.left.length; this.left[i] = 2 * i + 1, this.right[i] = 2 * i + 2, ++i); + }, + splay: function(i){ + var a = i + this.left.length; + do{ + var c = this.up[a]; + if(c){ // root + // rotated pair + var d = this.up[c]; + // swap descendants + var b = this.left[d]; + if(c == b){ + b = this.right[d]; + this.right[d] = a; + } else { + this.left[d] = a; + } + this[a == this.left[c] ? "left" : "right"][c] = b; + this.up[a] = d; + this.up[b] = c; + a = d; + }else{ + a = c; + } + }while(a); // root + }, + encode: function(value, stream){ + var s = [], a = value + this.left.length; + do{ + s.push(this.right[this.up[a]] == a); + a = this.up[a]; + }while(a); // root + this.splay(value); + var l = s.length; + while(s.length){ stream.putBits(s.pop() ? 1 : 0, 1); } + return l; + }, + decode: function(stream){ + var a = 0; // root; + do{ + a = this[stream.getBits(1) ? "right" : "left"][a]; + }while(a < this.left.length); + a -= this.left.length; + this.splay(a); + return a; + } + }); + + + return compression.Splay; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/crypto/Blowfish.js b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/Blowfish.js new file mode 100644 index 0000000..2af5986 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/Blowfish.js @@ -0,0 +1,486 @@ +define([ + "dojo/_base/lang", // dojo.isString + "dojo/_base/array", // dojo.map + "../base64", + "./_base" +], function(lang, arrayUtil, base64, crypto){ + /*===== + crypto = dojox.encoding.crypto; + =====*/ + +/* Blowfish + * Created based on the C# implementation by Marcus Hahn (http://www.hotpixel.net/) + * Unsigned math based on Paul Johnstone and Peter Wood patches. + * 2005-12-08 + */ +crypto.Blowfish = new function(){ + // summary + // Object for doing Blowfish encryption/decryption. + var POW2=Math.pow(2,2); + var POW3=Math.pow(2,3); + var POW4=Math.pow(2,4); + var POW8=Math.pow(2,8); + var POW16=Math.pow(2,16); + var POW24=Math.pow(2,24); + var iv=null; // CBC mode initialization vector + var boxes={ + p:[ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b + ], + s0:[ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a + ], + s1:[ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7 + ], + s2:[ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0 + ], + s3:[ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6 + ] + } +//////////////////////////////////////////////////////////////////////////// +// fixes based on patch submitted by Peter Wood (#5791) + function add(x,y){ + return (((x>>0x10)+(y>>0x10)+(((x&0xffff)+(y&0xffff))>>0x10))<<0x10)|(((x&0xffff)+(y&0xffff))&0xffff); + } + function xor(x,y){ + return (((x>>0x10)^(y>>0x10))<<0x10)|(((x&0xffff)^(y&0xffff))&0xffff); + } + + function $(v, box){ + var d=box.s3[v&0xff]; v>>=8; + var c=box.s2[v&0xff]; v>>=8; + var b=box.s1[v&0xff]; v>>=8; + var a=box.s0[v&0xff]; + + var r = (((a>>0x10)+(b>>0x10)+(((a&0xffff)+(b&0xffff))>>0x10))<<0x10)|(((a&0xffff)+(b&0xffff))&0xffff); + r = (((r>>0x10)^(c>>0x10))<<0x10)|(((r&0xffff)^(c&0xffff))&0xffff); + return (((r>>0x10)+(d>>0x10)+(((r&0xffff)+(d&0xffff))>>0x10))<<0x10)|(((r&0xffff)+(d&0xffff))&0xffff); + } +//////////////////////////////////////////////////////////////////////////// + function eb(o, box){ + // TODO: see if this can't be made more efficient + var l=o.left; + var r=o.right; + l=xor(l,box.p[0]); + r=xor(r,xor($(l,box),box.p[1])); + l=xor(l,xor($(r,box),box.p[2])); + r=xor(r,xor($(l,box),box.p[3])); + l=xor(l,xor($(r,box),box.p[4])); + r=xor(r,xor($(l,box),box.p[5])); + l=xor(l,xor($(r,box),box.p[6])); + r=xor(r,xor($(l,box),box.p[7])); + l=xor(l,xor($(r,box),box.p[8])); + r=xor(r,xor($(l,box),box.p[9])); + l=xor(l,xor($(r,box),box.p[10])); + r=xor(r,xor($(l,box),box.p[11])); + l=xor(l,xor($(r,box),box.p[12])); + r=xor(r,xor($(l,box),box.p[13])); + l=xor(l,xor($(r,box),box.p[14])); + r=xor(r,xor($(l,box),box.p[15])); + l=xor(l,xor($(r,box),box.p[16])); + o.right=l; + o.left=xor(r,box.p[17]); + } + + function db(o, box){ + var l=o.left; + var r=o.right; + l=xor(l,box.p[17]); + r=xor(r,xor($(l,box),box.p[16])); + l=xor(l,xor($(r,box),box.p[15])); + r=xor(r,xor($(l,box),box.p[14])); + l=xor(l,xor($(r,box),box.p[13])); + r=xor(r,xor($(l,box),box.p[12])); + l=xor(l,xor($(r,box),box.p[11])); + r=xor(r,xor($(l,box),box.p[10])); + l=xor(l,xor($(r,box),box.p[9])); + r=xor(r,xor($(l,box),box.p[8])); + l=xor(l,xor($(r,box),box.p[7])); + r=xor(r,xor($(l,box),box.p[6])); + l=xor(l,xor($(r,box),box.p[5])); + r=xor(r,xor($(l,box),box.p[4])); + l=xor(l,xor($(r,box),box.p[3])); + r=xor(r,xor($(l,box),box.p[2])); + l=xor(l,xor($(r,box),box.p[1])); + o.right=l; + o.left=xor(r,box.p[0]); + } + + // Note that we aren't caching contexts here; it might take a little longer + // but we should be more secure this way. + function init(key){ + var k=key; + if(lang.isString(k)){ + k = arrayUtil.map(k.split(""), function(item){ + return item.charCodeAt(0) & 0xff; + }); + } + + // init the boxes + var pos=0, data=0, res={ left:0, right:0 }, i, j, l; + var box = { + p: arrayUtil.map(boxes.p.slice(0), function(item){ + var l=k.length, j; + for(j=0; j<4; j++){ data=(data*POW8)|k[pos++ % l]; } + return (((item>>0x10)^(data>>0x10))<<0x10)|(((item&0xffff)^(data&0xffff))&0xffff); + }), + s0:boxes.s0.slice(0), + s1:boxes.s1.slice(0), + s2:boxes.s2.slice(0), + s3:boxes.s3.slice(0) + }; + + // encrypt p and the s boxes + for(i=0, l=box.p.length; i> 3, pos=0, o={}, isCBC=(mode==crypto.cipherModes.CBC); + var vector={left:iv.left||null, right:iv.right||null}; + for(var i=0; i>0x10)^(vector.left>>0x10))<<0x10)|(((o.left&0xffff)^(vector.left&0xffff))&0xffff); + o.right=(((o.right>>0x10)^(vector.right>>0x10))<<0x10)|(((o.right&0xffff)^(vector.right&0xffff))&0xffff); + } + + eb(o, bx); // encrypt the block + + if(isCBC){ + vector.left=o.left; + vector.right=o.right; + } + + cipher.push((o.left>>24)&0xff); + cipher.push((o.left>>16)&0xff); + cipher.push((o.left>>8)&0xff); + cipher.push(o.left&0xff); + cipher.push((o.right>>24)&0xff); + cipher.push((o.right>>16)&0xff); + cipher.push((o.right>>8)&0xff); + cipher.push(o.right&0xff); + pos+=8; + } + + switch(out){ + case crypto.outputTypes.Hex:{ + return arrayUtil.map(cipher, function(item){ + return (item<=0xf?'0':'')+item.toString(16); + }).join(""); // string + } + case crypto.outputTypes.String:{ + return cipher.join(""); // string + } + case crypto.outputTypes.Raw:{ + return cipher; // array + } + default:{ + return base64.encode(cipher); // string + } + } + }; + + this.decrypt = function(/* string */ciphertext, /* string */key, /* object? */ao){ + // summary + // decrypts ciphertext using key; allows specification of how ciphertext is encoded via ao. + var ip=crypto.outputTypes.Base64; + var mode=crypto.cipherModes.ECB; + if (ao){ + if (ao.outputType) ip=ao.outputType; + if (ao.cipherMode) mode=ao.cipherMode; + } + var bx = init(key); + var pt=[]; + + var c=null; + switch(ip){ + case crypto.outputTypes.Hex:{ + c = []; + for(var i=0, l=ciphertext.length-1; i> 3, pos=0, o={}, isCBC=(mode==crypto.cipherModes.CBC); + var vector={left:iv.left||null, right:iv.right||null}; + for(var i=0; i>0x10)^(vector.left>>0x10))<<0x10)|(((o.left&0xffff)^(vector.left&0xffff))&0xffff); + o.right=(((o.right>>0x10)^(vector.right>>0x10))<<0x10)|(((o.right&0xffff)^(vector.right&0xffff))&0xffff); + vector.left=left; + vector.right=right; + } + + pt.push((o.left>>24)&0xff); + pt.push((o.left>>16)&0xff); + pt.push((o.left>>8)&0xff); + pt.push(o.left&0xff); + pt.push((o.right>>24)&0xff); + pt.push((o.right>>16)&0xff); + pt.push((o.right>>8)&0xff); + pt.push(o.right&0xff); + pos+=8; + } + + // check for padding, and remove. + if(pt[pt.length-1]==pt[pt.length-2]||pt[pt.length-1]==0x01){ + var n=pt[pt.length-1]; + pt.splice(pt.length-n, n); + } + + // convert to string + return arrayUtil.map(pt, function(item){ + return String.fromCharCode(item); + }).join(""); // string + }; + + this.setIV("0000000000000000", crypto.outputTypes.Hex); +}(); + + +return crypto.Blowfish; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/crypto/RSAKey-ext.js b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/RSAKey-ext.js new file mode 100644 index 0000000..b029d91 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/RSAKey-ext.js @@ -0,0 +1,122 @@ +define([ + "dojo/_base/kernel", // dojo.experimental + "dojo/_base/lang", // dojo.extend + "./RSAKey", + "../../math/BigInteger-ext" +], function(kernel, lang, RSAKey, BigInteger) { + + kernel.experimental("dojox.encoding.crypto.RSAKey-ext"); + + // Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext + function pkcs1unpad2(d, n){ + var b = d.toByteArray(); + for(var i = 0, len = b.length; i < len && !b[i]; ++i); + if(b.length - i !== n - 1 || b[i] !== 2){ + return null; + } + for(++i; b[i];){ + if(++i >= len){ + return null; + } + } + var ret = ""; + while(++i < len){ + ret += String.fromCharCode(b[i]); + } + return ret; + } + + lang.extend(RSAKey, { + setPrivate: function(N, E, D){ + // summary: + // Set the private key fields N, e, d and CRT params from hex strings + if(N && E && N.length && E.length){ + this.n = new BigInteger(N, 16); + this.e = parseInt(E, 16); + this.d = new BigInteger(D, 16); + }else{ + throw new Error("Invalid RSA private key"); + } + }, + setPrivateEx: function(N, E, D, P, Q, DP, DQ, C) { + // summary: + // Set the private key fields N, e, d and CRT params from hex strings + if(N && E && N.length && E.length){ + this.n = new BigInteger(N, 16); + this.e = parseInt(E, 16); + this.d = new BigInteger(D, 16); + this.p = new BigInteger(P, 16); + this.q = new BigInteger(Q, 16); + this.dmp1 = new BigInteger(DP, 16); + this.dmq1 = new BigInteger(DQ, 16); + this.coeff = new BigInteger(C, 16); + }else{ + throw new Error("Invalid RSA private key"); + } + }, + generate: function(B, E){ + // summary: + // Generate a new random private key B bits long, using public expt E + var rng = this.rngf(), qs = B >> 1; + this.e = parseInt(E, 16); + var ee = new BigInteger(E, 16); + for(;;) { + for(;;) { + this.p = new BigInteger(B - qs, 1, rng); + if(!this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) && this.p.isProbablePrime(10)){ + break; + } + } + for(;;) { + this.q = new BigInteger(qs, 1, rng); + if(!this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) && this.q.isProbablePrime(10)){ + break; + } + } + if(this.p.compareTo(this.q) <= 0) { + var t = this.p; + this.p = this.q; + this.q = t; + } + var p1 = this.p.subtract(BigInteger.ONE); + var q1 = this.q.subtract(BigInteger.ONE); + var phi = p1.multiply(q1); + if(!phi.gcd(ee).compareTo(BigInteger.ONE)) { + this.n = this.p.multiply(this.q); + this.d = ee.modInverse(phi); + this.dmp1 = this.d.mod(p1); + this.dmq1 = this.d.mod(q1); + this.coeff = this.q.modInverse(this.p); + break; + } + } + rng.destroy(); + }, + + decrypt: function(ctext){ + // summary: + // Return the PKCS#1 RSA decryption of "ctext". + // ctext: String: + // an even-length hex string + // returns: a plain string. + var c = new BigInteger(ctext, 16), m; + if(!this.p || !this.q){ + m = c.modPow(this.d, this.n); + }else{ + // TODO: re-calculate any missing CRT params + var cp = c.mod(this.p).modPow(this.dmp1, this.p), + cq = c.mod(this.q).modPow(this.dmq1, this.q); + while(cp.compareTo(cq) < 0){ + cp = cp.add(this.p); + } + m = cp.subtract(cq).multiply(this.coeff).mod(this.p).multiply(this.q).add(cq); + } + if(!m){ + return null; + } + return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3); + } + }); + + return RSAKey; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/crypto/RSAKey.js b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/RSAKey.js new file mode 100644 index 0000000..2bf5459 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/RSAKey.js @@ -0,0 +1,74 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "../../math/BigInteger", + "../../math/random/Simple" +], function(kernel, declare, BigInteger, Simple) { + + kernel.experimental("dojox.encoding.crypto.RSAKey"); + +// Copyright (c) 2005 Tom Wu +// All Rights Reserved. +// See "LICENSE-BigInteger" in dojox.math for details. + + var defaultRngf = function(){ return new Simple(); }; + + // PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint + function pkcs1pad2(s, n, rngf) { + if(n < s.length + 11) { + throw new Error("Message too long for RSA"); + } + var ba = new Array(n); + var i = s.length; + while(i && n) ba[--n] = s.charCodeAt(--i); + ba[--n] = 0; + var rng = rngf(); + var x = [0]; + while(n > 2) { // random non-zero pad + x[0] = 0; + while(x[0] == 0) rng.nextBytes(x); + ba[--n] = x[0]; + } + ba[--n] = 2; + ba[--n] = 0; + rng.destroy(); + return new BigInteger(ba); + } + + return declare("dojox.encoding.crypto.RSAKey", null, { + constructor: function(rngf){ + // summary: + // "empty" RSA key constructor + // rndf: Function?: + // function that returns an instance of a random number generator + // (see dojox.math.random for details) + this.rngf = rngf || defaultRngf; + this.e = 0; + this.n = this.d = this.p = this.q = this.dmp1 = this.dmq1 = this.coeff = null; + }, + + setPublic: function(N, E){ + // summary: + // Set the public key fields N and e from hex strings + if(N && E && N.length && E.length) { + this.n = new BigInteger(N, 16); + this.e = parseInt(E, 16); + }else{ + throw new Error("Invalid RSA public key"); + } + }, + + encrypt: function(text){ + var m = pkcs1pad2(text, (this.n.bitLength() + 7) >> 3, this.rngf); + if(!m){ + return null; + } + var c = m.modPowInt(this.e, this.n); + if(!c){ + return null; + } + var h = c.toString(16); + return h.length % 2 ? "0" + h : h; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/crypto/SimpleAES.js b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/SimpleAES.js new file mode 100644 index 0000000..35ce3e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/crypto/SimpleAES.js @@ -0,0 +1,338 @@ +define(["../base64", "./_base"], + function(base64, crypto){ + + /*===== + crypto = dojox.encoding.crypto; + =====*/ + + // Sbox is pre-computed multiplicative inverse in GF(2^8) used in SubBytes and KeyExpansion [5.1.1] + var Sbox = [0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76, + 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0, + 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15, + 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75, + 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84, + 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf, + 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8, + 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2, + 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73, + 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb, + 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79, + 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08, + 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a, + 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e, + 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf, + 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16]; + + // Rcon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [5.2] + var Rcon = [ [0x00, 0x00, 0x00, 0x00], + [0x01, 0x00, 0x00, 0x00], + [0x02, 0x00, 0x00, 0x00], + [0x04, 0x00, 0x00, 0x00], + [0x08, 0x00, 0x00, 0x00], + [0x10, 0x00, 0x00, 0x00], + [0x20, 0x00, 0x00, 0x00], + [0x40, 0x00, 0x00, 0x00], + [0x80, 0x00, 0x00, 0x00], + [0x1b, 0x00, 0x00, 0x00], + [0x36, 0x00, 0x00, 0x00] ]; + + /* + * AES Cipher function: encrypt 'input' with Rijndael algorithm + * + * takes byte-array 'input' (16 bytes) + * 2D byte-array key schedule 'w' (Nr+1 x Nb bytes) + * + * applies Nr rounds (10/12/14) using key schedule w for 'add round key' stage + * + * returns byte-array encrypted value (16 bytes) + */ + function Cipher(input, w) { // main Cipher function [5.1] + var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES) + var Nr = w.length/Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys + + var state = [[],[],[],[]]; // initialise 4xNb byte-array 'state' with input [3.4] + for (var i=0; i<4*Nb; i++) state[i%4][Math.floor(i/4)] = input[i]; + + state = AddRoundKey(state, w, 0, Nb); + + for (var round=1; round 6 && i%Nk == 4) { + temp = SubWord(temp); + } + for (var t=0; t<4; t++) w[i][t] = w[i-Nk][t] ^ temp[t]; + } + + return w; + } + + function SubWord(w) { // apply SBox to 4-byte word w + for (var i=0; i<4; i++) w[i] = Sbox[w[i]]; + return w; + } + + function RotWord(w) { // rotate 4-byte word w left by one byte + w[4] = w[0]; + for (var i=0; i<4; i++) w[i] = w[i+1]; + return w; + } + + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + + /* + * Use AES to encrypt 'plaintext' with 'password' using 'nBits' key, in 'Counter' mode of operation + * - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf + * for each block + * - outputblock = cipher(counter, key) + * - cipherblock = plaintext xor outputblock + */ + function AESEncryptCtr(plaintext, password, nBits) { + if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys + + // for this example script, generate the key by applying Cipher to 1st 16/24/32 chars of password; + // for real-world applications, a more secure approach would be to hash the password e.g. with SHA-1 + var nBytes = nBits/8; // no bytes in key + var pwBytes = new Array(nBytes); + for (var i=0; i>> i*8) & 0xff; + for (var i=0; i<4; i++) counterBlock[i+4] = (nonce/0x100000000 >>> i*8) & 0xff; + + // generate key schedule - an expansion of the key into distinct Key Rounds for each round + var keySchedule = KeyExpansion(key); + + var blockCount = Math.ceil(plaintext.length/blockSize); + var ciphertext = new Array(blockCount); // ciphertext as array of strings + + for (var b=0; b>> c*8) & 0xff; + for (var c=0; c<4; c++) counterBlock[15-c-4] = (b/0x100000000 >>> c*8) + + var cipherCntr = Cipher(counterBlock, keySchedule); // -- encrypt counter block -- + + // calculate length of final block: + var blockLength = b>> c*8) & 0xff; + for (var c=0; c<4; c++) counterBlock[15-c-4] = ((b/0x100000000-1) >>> c*8) & 0xff; + + var cipherCntr = Cipher(counterBlock, keySchedule); // encrypt counter block + + //ciphertext[b] = ciphertext[b]; //unescCtrlChars(ciphertext[b]); + + var pt = ''; + var tmp = stringToHex(ciphertext[b]); + for (var i=0; i>>(32-c)); } + function C(q,a,b,x,s,t){ return dxd.addWords(R(dxd.addWords(dxd.addWords(a, q), dxd.addWords(x, t)), s), b); } + function FF(a,b,c,d,x,s,t){ return C((b&c)|((~b)&d),a,b,x,s,t); } + function GG(a,b,c,d,x,s,t){ return C((b&d)|(c&(~d)),a,b,x,s,t); } + function HH(a,b,c,d,x,s,t){ return C(b^c^d,a,b,x,s,t); } + function II(a,b,c,d,x,s,t){ return C(c^(b|(~d)),a,b,x,s,t); } + + // the core MD5 rounds method + function core(x,len){ + x[len>>5]|=0x80<<((len)%32); + x[(((len+64)>>>9)<<4)+14]=len; + var a= 1732584193; + var b=-271733879; + var c=-1732584194; + var d= 271733878; + for(var i=0; i16){ + wa=core(wa, key.length*chrsz); + } + var l=[], r=[]; + for(var i=0; i<16; i++){ + l[i]=wa[i]^0x36363636; + r[i]=wa[i]^0x5c5c5c5c; + } + var h=core(l.concat(dxd.stringToWord(data)), 512+data.length*chrsz); + return core(r.concat(h), 640); + } + + // public function + dxd.MD5=function(/* string */data, /* dojox.encoding.digests.outputTypes? */outputType){ + // summary + // computes the digest of data, and returns the result according to type outputType + var out=outputType || dxd.outputTypes.Base64; + var wa=core(dxd.stringToWord(data), data.length*chrsz); + switch(out){ + case dxd.outputTypes.Raw:{ + return wa; // word[] + } + case dxd.outputTypes.Hex:{ + return dxd.wordToHex(wa); // string + } + case dxd.outputTypes.String:{ + return dxd.wordToString(wa); // string + } + default:{ + return dxd.wordToBase64(wa); // string + } + } + }; + + // make this private, for later use with a generic HMAC calculator. + dxd.MD5._hmac=function(/* string */data, /* string */key, /* dojox.encoding.digests.outputTypes? */outputType){ + // summary + // computes the digest of data, and returns the result according to type outputType + var out=outputType || dxd.outputTypes.Base64; + var wa=hmac(data, key); + switch(out){ + case dxd.outputTypes.Raw:{ + return wa; // word[] + } + case dxd.outputTypes.Hex:{ + return dxd.wordToHex(wa); // string + } + case dxd.outputTypes.String:{ + return dxd.wordToString(wa); // string + } + default:{ + return dxd.wordToBase64(wa); // string + } + } + }; + + return dxd.MD5; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/digests/SHA1.js b/js/dojo-release-1.7.2-src/dojox/encoding/digests/SHA1.js new file mode 100644 index 0000000..fa18d8a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/digests/SHA1.js @@ -0,0 +1,154 @@ +define(["./_base"], function(dxd) { + + /*===== + dxd = dojox.encoding.digests; + =====*/ + +/* + * A port of Paul Johnstone's SHA1 implementation + * + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + * + * Dojo port by Tom Trenka + */ + + var chrsz=8, // change to 16 for unicode. + mask=(1<>>(32-c)); } + function FT(t,b,c,d){ + if(t<20){ return (b&c)|((~b)&d); } + if(t<40){ return b^c^d; } + if(t<60){ return (b&c)|(b&d)|(c&d); } + return b^c^d; + } + function KT(t){ return (t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514; } + + function core(x,len){ + x[len>>5]|=0x80<<(24-len%32); + x[((len+64>>9)<<4)+15]=len; + + var w=new Array(80), a=1732584193, b=-271733879, c=-1732584194, d=271733878, e=-1009589776; + for(var i=0; i16){ wa=core(wa, key.length*chrsz); } + + var ipad=new Array(16), opad=new Array(16); + for(var i=0;i<16;i++){ + ipad[i]=wa[i]^0x36363636; + opad[i]=wa[i]^0x5c5c5c5c; + } + + var hash=core(ipad.concat(toWord(data)),512+data.length*chrsz); + return core(opad.concat(hash), 512+160); + } + + function toWord(s){ + var wa=[]; + for(var i=0, l=s.length*chrsz; i>5]|=(s.charCodeAt(i/chrsz)&mask)<<(32-chrsz-i%32); + } + return wa; // word[] + } + + function toHex(wa){ + // slightly different than the common one. + var h="0123456789abcdef", s=[]; + for(var i=0, l=wa.length*4; i>2]>>((3-i%4)*8+4))&0xF), h.charAt((wa[i>>2]>>((3-i%4)*8))&0xF)); + } + return s.join(""); // string + } + + function _toString(wa){ + var s=[]; + for(var i=0, l=wa.length*32; i>5]>>>(32-chrsz-i%32))&mask)); + } + return s.join(""); // string + } + + function toBase64(/* word[] */wa){ + // summary: + // convert an array of words to base64 encoding, should be more efficient + // than using dojox.encoding.base64 + var p="=", tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s=[]; + for(var i=0, l=wa.length*4; i>2]>>8*(3-i%4))&0xFF)<<16)|(((wa[i+1>>2]>>8*(3-(i+1)%4))&0xFF)<<8)|((wa[i+2>>2]>>8*(3-(i+2)%4))&0xFF); + for(var j=0; j<4; j++){ + if(i*8+j*6>wa.length*32){ + s.push(p); + } else { + s.push(tab.charAt((t>>6*(3-j))&0x3F)); + } + } + } + return s.join(""); // string + }; + + // public function + dxd.SHA1=function(/* String */data, /* dojox.encoding.digests.outputTypes? */outputType){ + // summary: + // Computes the SHA1 digest of the data, and returns the result according to output type. + var out=outputType||dxd.outputTypes.Base64; + var wa=core(toWord(data), data.length*chrsz); + switch(out){ + case dxd.outputTypes.Raw:{ + return wa; // word[] + } + case dxd.outputTypes.Hex:{ + return toHex(wa); // string + } + case dxd.outputTypes.String:{ + return _toString(wa); // string + } + default:{ + return toBase64(wa); // string + } + } + } + + // make this private, for later use with a generic HMAC calculator. + dxd.SHA1._hmac=function(/* string */data, /* string */key, /* dojox.encoding.digests.outputTypes? */outputType){ + // summary: + // computes the digest of data, and returns the result according to type outputType + var out=outputType || dxd.outputTypes.Base64; + var wa=hmac(data, key); + switch(out){ + case dxd.outputTypes.Raw:{ + return wa; // word[] + } + case dxd.outputTypes.Hex:{ + return toHex(wa); // string + } + case dxd.outputTypes.String:{ + return _toString(wa); // string + } + default:{ + return toBase64(wa); // string + } + } + }; + + return dxd.SHA1; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/digests/_base.js b/js/dojo-release-1.7.2-src/dojox/encoding/digests/_base.js new file mode 100644 index 0000000..1850636 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/digests/_base.js @@ -0,0 +1,78 @@ +define(["dojo/_base/lang"], function(lang){ + var d = lang.getObject("dojox.encoding.digests", true); + /*===== + d = dojox.encoding.digests; + =====*/ + + //TODO: see if it makes sense to meld this into one with the + // crypto base enums + d.outputTypes={ + // summary: + // Enumeration for input and output encodings. + Base64:0, Hex:1, String:2, Raw:3 + }; + + // word-based addition + d.addWords=function(/* word */a, /* word */b){ + // summary: + // add a pair of words together with rollover + var l=(a&0xFFFF)+(b&0xFFFF); + var m=(a>>16)+(b>>16)+(l>>16); + return (m<<16)|(l&0xFFFF); // word + }; + + // word-based conversion method, for efficiency sake; + // most digests operate on words, and this should be faster + // than the encoding version (which works on bytes). + var chrsz=8; // 16 for Unicode + var mask=(1<>5]|=(s.charCodeAt(i/chrsz)&mask)<<(i%32); + } + return wa; // word[] + }; + + d.wordToString=function(/* word[] */wa){ + // summary: + // convert an array of words to a string + var s=[]; + for(var i=0, l=wa.length*32; i>5]>>>(i%32))&mask)); + } + return s.join(""); // string + } + + d.wordToHex=function(/* word[] */wa){ + // summary: + // convert an array of words to a hex tab + var h="0123456789abcdef", s=[]; + for(var i=0, l=wa.length*4; i>2]>>((i%4)*8+4))&0xF)+h.charAt((wa[i>>2]>>((i%4)*8))&0xF)); + } + return s.join(""); // string + } + d.wordToBase64=function(/* word[] */wa){ + // summary: + // convert an array of words to base64 encoding, should be more efficient + // than using dojox.encoding.base64 + var p="=", tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s=[]; + for(var i=0, l=wa.length*4; i>2]>>8*(i%4))&0xFF)<<16)|(((wa[i+1>>2]>>8*((i+1)%4))&0xFF)<<8)|((wa[i+2>>2]>>8*((i+2)%4))&0xFF); + for(var j=0; j<4; j++){ + if(i*8+j*6>wa.length*32){ + s.push(p); + } else { + s.push(tab.charAt((t>>6*(3-j))&0x3F)); + } + } + } + return s.join(""); // string + }; + + return d; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/easy64.js b/js/dojo-release-1.7.2-src/dojox/encoding/easy64.js new file mode 100644 index 0000000..d891d75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/easy64.js @@ -0,0 +1,51 @@ +define(["dojo/_base/lang"], function(lang) { + var easy64 = lang.getObject("dojox.encoding.easy64", true); + /*===== + easy64 = dojox.encoding.easy64; + =====*/ + + var c = function(input, length, result){ + for(var i = 0; i < length; i += 3){ + result.push( + String.fromCharCode((input[i] >>> 2) + 33), + String.fromCharCode(((input[i] & 3) << 4) + (input[i + 1] >>> 4) + 33), + String.fromCharCode(((input[i + 1] & 15) << 2) + (input[i + 2] >>> 6) + 33), + String.fromCharCode((input[i + 2] & 63) + 33) + ); + } + }; + + easy64.encode = function(input){ + // summary: encodes input data in easy64 string + // input: Array: an array of numbers (0-255) to encode + var result = [], reminder = input.length % 3, length = input.length - reminder; + c(input, length, result); + if(reminder){ + var t = input.slice(length); + while(t.length < 3){ t.push(0); } + c(t, 3, result); + for(var i = 3; i > reminder; result.pop(), --i); + } + return result.join(""); // String + }; + + easy64.decode = function(input){ + // summary: decodes the input string back to array of numbers + // input: String: the input string to decode + var n = input.length, r = [], b = [0, 0, 0, 0], i, j, d; + for(i = 0; i < n; i += 4){ + for(j = 0; j < 4; ++j){ b[j] = input.charCodeAt(i + j) - 33; } + d = n - i; + for(j = d; j < 4; b[++j] = 0); + r.push( + (b[0] << 2) + (b[1] >>> 4), + ((b[1] & 15) << 4) + (b[2] >>> 2), + ((b[2] & 3) << 6) + b[3] + ); + for(j = d; j < 4; ++j, r.pop()); + } + return r; + }; + + return easy64; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/ascii85.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/ascii85.js new file mode 100644 index 0000000..2e09961 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/ascii85.js @@ -0,0 +1,27 @@ +define(['doh', '../ascii85'], function(doh, dca){ + var msg1 = "The rain in Spain falls mainly on the plain."; + var msg2 = "The rain in Spain falls mainly on the plain.1"; + var msg3 = "The rain in Spain falls mainly on the plain.ab"; + var msg4 = "The rain in Spain falls mainly on the plain.!@#"; + + var s2b = function(s){ + var b = []; + for(var i = 0; i < s.length; ++i){ + b.push(s.charCodeAt(i)); + } + return b; + }; + + var b2s = function(b){ + var s = []; + dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); }); + return s.join(""); + }; + + doh.register("dojox.encoding.tests.ascii85", [ + function testMsg1(t){ t.assertEqual(msg1, b2s(dca.decode(dca.encode(s2b(msg1))))); }, + function testMsg2(t){ t.assertEqual(msg2, b2s(dca.decode(dca.encode(s2b(msg2))))); }, + function testMsg3(t){ t.assertEqual(msg3, b2s(dca.decode(dca.encode(s2b(msg3))))); }, + function testMsg4(t){ t.assertEqual(msg4, b2s(dca.decode(dca.encode(s2b(msg4))))); } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/bits.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/bits.js new file mode 100644 index 0000000..f1ef686 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/bits.js @@ -0,0 +1,66 @@ +define(['doh', '../bits'], function(doh, dcb){ + var msg1 = "The rain in Spain falls mainly on the plain."; + var msg2 = "The rain in Spain falls mainly on the plain.1"; + var msg3 = "The rain in Spain falls mainly on the plain.ab"; + var msg4 = "The rain in Spain falls mainly on the plain.!@#"; + + var s2b = function(s){ + var b = []; + for(var i = 0; i < s.length; ++i){ + b.push(s.charCodeAt(i)); + } + return b; + }; + + var b2s = function(b){ + var s = []; + dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); }); + return s.join(""); + }; + + var testOut = function(msg){ + var a = new dcb.OutputStream(); + for(var i = 0; i < msg.length; ++i){ + var v = msg.charCodeAt(i); + var j = Math.floor(Math.random() * 7) + 1; + a.putBits(v >>> (8 - j), j); + a.putBits(v, 8 - j); + } + return b2s(a.getBuffer()); + }; + + var testIn = function(msg){ + var a = new dcb.InputStream(s2b(msg), msg.length * 8); + var r = []; + for(var i = 0; i < msg.length; ++i){ + var j = Math.floor(Math.random() * 7) + 1; + r.push((a.getBits(j) << (8 - j)) | a.getBits(8 - j)); + } + return b2s(r); + }; + + var test = function(msg){ + var a = new dcb.InputStream(s2b(msg), msg.length * 8); + var o = new dcb.OutputStream(); + while(a.getWidth() > 0){ + var w = Math.min(a.getWidth(), 3); + o.putBits(a.getBits(w), w); + } + return b2s(o.getBuffer()); + }; + + doh.register("dojox.encoding.tests.bits", [ + function testBitsOut1(t){ t.assertEqual(msg1, testOut(msg1)); }, + function testBitsOut2(t){ t.assertEqual(msg2, testOut(msg2)); }, + function testBitsOut3(t){ t.assertEqual(msg3, testOut(msg3)); }, + function testBitsOut4(t){ t.assertEqual(msg4, testOut(msg4)); }, + function testBitsIn1(t){ t.assertEqual(msg1, testIn(msg1)); }, + function testBitsIn2(t){ t.assertEqual(msg2, testIn(msg2)); }, + function testBitsIn3(t){ t.assertEqual(msg3, testIn(msg3)); }, + function testBitsIn4(t){ t.assertEqual(msg4, testIn(msg4)); }, + function testBits1(t){ t.assertEqual(msg1, test(msg1)); }, + function testBits2(t){ t.assertEqual(msg2, test(msg2)); }, + function testBits3(t){ t.assertEqual(msg3, test(msg3)); }, + function testBits4(t){ t.assertEqual(msg4, test(msg4)); } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/_base.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/_base.js new file mode 100644 index 0000000..7f756d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/_base.js @@ -0,0 +1 @@ +define(['./splay', './lzw'], {}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors.js new file mode 100755 index 0000000..fb7b0bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors.js @@ -0,0 +1,152 @@ +dojo.provide("dojox.encoding.tests.compression.colors"); + +// all CSS3 colors +dojox.encoding.tests.compression.colors = { +aliceblue: [240,248,255], +antiquewhite: [250,235,215], +aqua: [0,255,255], +aquamarine: [127,255,212], +azure: [240,255,255], +beige: [245,245,220], +bisque: [255,228,196], +black: [0,0,0], +blanchedalmond: [255,235,205], +blue: [0,0,255], +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], +fuchsia: [255,0,255], +gainsboro: [220,220,220], +ghostwhite: [248,248,255], +gold: [255,215,0], +goldenrod: [218,165,32], +gray: [128,128,128], +green: [0,128,0], +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], +lime: [0,255,0], +limegreen: [50,205,50], +linen: [250,240,230], +magenta: [255,0,255], +maroon: [128,0,0], +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], +navy: [0,0,128], +oldlace: [253,245,230], +olive: [128,128,0], +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], +purple: [128,0,128], +red: [255,0,0], +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], +silver: [192,192,192], +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], +teal: [0,128,128], +thistle: [216,191,216], +tomato: [255,99,71], +turquoise: [64,224,208], +violet: [238,130,238], +wheat: [245,222,179], +white: [255,255,255], +whitesmoke: [245,245,245], +yellow: [255,255,0], +yellowgreen: [154,205,50] +}; diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors2.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors2.html new file mode 100755 index 0000000..24bb9fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors2.html @@ -0,0 +1,104 @@ + + + Compress colors + + + + + + +

                                  Compress colors

                                  +

                                  +
                                  No status yet.
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors2.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors2.js new file mode 100755 index 0000000..effb87b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors2.js @@ -0,0 +1,60 @@ +dojo.provide("dojox.encoding.tests.compression.colors2"); + +// all CSS3 colors +dojox.encoding.tests.compression.colors2 = {}; + +(function(){ + var n = "!mi-='%@Md%8;F\"=E5(:$@nHf!(;HYAOL),#XJKa#UHDMYQ0@q6C8='JBa#m1`YRS;3_\\P=@.(bN\\!)0d:Nar*Fo]]G`\\[X7Cb@r#pc;D3!k*8^\"bS8DAYbu'J5[`7Fh5S1e8`@1^N\"n8R:+ZQt]Ab.S>NP-jkO\"N$oQpbVbYtZl1&rSs%_;'!e8\"ij:*R!%9&P.+o0%cF&0F<\"eWn+rm!a<(02!d\\-J\\O@`K![IaPrqh6H4S!U7CU!\"5jICR2\\X?!FilaO:$aE\"G1NIfMJ<.)1d;?OH9VU%LiGhi9=d?$EjW!BM0)1mGfg@\"os1\\E*A>+>YdjUK:P>T'7tj.UQ?<89]$:\\Li]GF*H8o*Z,o]Q_E]tq?C^%'^cfU9B9sH-^t.-R;J6P9!buNg*%$9#>Y'*n;MPc7=>*]sb&NmgKSZcd2nWt6I@SX7agi3!0)M'T3O@@/>W+I:H9?@A7tjT8':(9PG\\m@_T8Ws\\\".VLCkg7IYKZ7M3.XQqX$4V`bEQF?<#jJ>#4Z#6:ZeYffa.W#0CW3@s2*ESkiD6hN#EAhXBm5F%&U_=k*tFq@rYS/!:$=M9epZ<`=HN:X\"!CRI(`>iqTRe(S@A\"&0!Dib&)1p9P)$NZb^e+i_UHHq\\_8AYC+oiIMLj_TW=u'3Nn?c=#_6Z^s/;EY/3Z(cZ\"CaOq6g>>I+;'H>Nh`>\"-3NDnX+!(g67=pRcf38l7XNQ:_FJ,l2V)C@@A;H1dN#\\$n75qg6-:\".KQkn!?a7e\"J7C0p3Pn`]hKrG_4WG*5qo\\tH,20o2QOZljnj_lZ&C6!.u8Qu:_L$8$4.[V@`&A0J,fQL"; + var c = "nG*%[ldl.:s*t'unGiO]p\"]T._uKc;s6Io0!<7p,ih\\+ShRJ>JStLT5!7GR&s*mjUQ0nVHgtWT+!<<'!!/gi8Mn\"KLWMuisA,rU.WP,cVMZAZ8CG5^H!1>UdMZs7$&&[*;i\\9)sSDs7#O?N99:!s7#]/quHcnc)oX\\n:6&Is8VrldaQ[oORA4Ze'n?*_>g0S+L8#&cMDa@RV#^Na!8;DCmc^[I^5QAOBh4WT.i9#OiJH#TL]T8+>C#Ot='Dd6\"oV>kIMc]rOm\\!H0^qda@cKf4Kc#A2pE.F&MqYC3lIn#$sd^4r5J:Q:ef`,GO5iC#WK'r>>= 8; y = t & 255; t >>>= 8; + r.push(t >>> 8, t & 255, y, x); + } + return r; + }; + var B = function(f){ this.f = f; this.y = this.t = 0; }; + B.prototype.g = function(b){ + var r = 0; + while(b){ + var w = Math.min(b, 8 - this.t), v = this.f[this.y] >>> (8 - this.t - w); + r <<= w; r |= v & ~(~0 << w); + if((this.t += w) == 8){ ++this.y; this.t = 0; } + b -= w; + } + return r; + }; + var D = function(n, w){ + this.c = new Array(n); this.w = w; this.p = -1; + for(var i = 0; i < n; ++i){ this.c[i] = [i + 97]; } + }; + D.prototype.d = function(s){ + var c = s.g(this.w), v; + if(c < this.c.length){ + v = this.c[c]; + if(this.p >= 0){ + this.c.push(this.c[this.p].concat(v[0])); + } + }else{ + this.c.push([]); + ++this.w; + return []; + } + this.p = c; + return v; + }; + var i = new B(a(n)), d = new D(27, 5), t = []; + while(t.length < 1455){ + var v = d.d(i); + dojo.forEach(v, function(x){ t.push(x); }); + } + var n2 = dojo.map(t, function(x){ return String.fromCharCode(x); }).join("").split("{"); + i = a(c); + for(var j = 0, k = 0; j < n2.length; ++j){ + dojox.encoding.tests.compression.colors2[n2[j]] = [i[k++], i[k++], i[k++]]; + } + +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors3.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors3.html new file mode 100755 index 0000000..482c75d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors3.html @@ -0,0 +1,104 @@ + + + Compress colors + + + + + + +

                                  Compress colors

                                  +

                                  +
                                  No status yet.
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors3.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors3.js new file mode 100755 index 0000000..33dd282 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/colors3.js @@ -0,0 +1,49 @@ +dojo.provide("dojox.encoding.tests.compression.colors3"); + +// all CSS3 colors +dojox.encoding.tests.compression.colors3 = {}; + +(function(){ + var n = "!N!C@\",5%;!.4)1D7()4E!K!FS-!2).Q:52E`!B\"!;!)*+I!M!#&'E+9%(#!T9Q=.\"TE5F'6%$B91H/)DCQW=^&G#QY>:\"!!?*#D.57Z.]5**+0]/!G!!,X=/%2O'%1U&#W9%%86_BQU3#!N.!DA-%F>X'#9;6\"%+EK)X#A+A;+-+\"G\"T$76:L1;)'+?ENA1%L+C\\O+U+\"Q!+#,E+.E1H-[VA#\"5%O\\X)BS:%V2&2#,3I0NWE%F7?L8U!U\\\\B3C_GZ?P3N]A3\\]$)%TUK$E9EL6ZA`T%IFY$Q?/3;=Q)$QE#AQ\\11$&M!'$$XK!T?2%C7QU\"110A#/#:'U=C!7,\"=*!+BQ)%AG[)W&#CFBG\"A!/1E!5/$AU\"A/$J:*E+LQ77;%M6H/XD,H1'!)#U=&K1\"&R02U'$H5*[%Y+$3;/1'#\"-XQV8C(/GABVQQW+RS5U3QE!V<6[=YS@!0=1!:Z=93M$7W\":3;!Z0!GJM'\"QGAJ*=3(C&5I=0,6AP6H4+=:M:B)CO-D?]<,2^H-`7SEB(B5N5%Z9P!8BM`FK@D!9*!ZQ]]/D1SF[%RG.D+HO(8QI.BK.RS*/C#/GJOTUU/WSTX19$R[$T#'P&L\"]V03\\_Y5_UH!?/!;\"J>YHO%8S_`2]/H`T_'%?B4?AX!.:^X!Z9E0A!!S\"5M\"A:2^?AA2R*9;!.!!&1!!E:AN)7'16,AM\"+\"Y'D0.'*Q=.%!S)!'*S)@5*$7D*9H@#U710\"MUG4,)Z'!F-%15E\"\"J!#+$A0':>#G?1%8G#29I31U:2H\"I:3AK4C&C;ZY\"J[C]HG6!3&*4K!!AP9:IA#T2\"'A%-+9]WWJ*MU3I\"MWY\")$79\"*]QZ@:[ZZ#^43G=Q;!P)E%QN3RZQ4!Y.KP\"J_8\\B/3RD#S6+YB]*&!3M6A+#2Q'9M-&DI!!"; + var c = "]0D`_OP8!0``@``5]0``^@8=`_4%!!!!`_P.!!$`CCPCJ3IKXLC(8Z[A@`]!UGE?`X^1:*8N``D=X\"1]!0``!!#,!)O,O)9,K;GJ!'1!K;GJP<>LCQ#,67MP`YQ!G4,-CQ!![::[D\\S03$W,,U^0,U^0!-\\2F!$4`R34!,``;7FJ;7FJ(J$`MC)C``LQ)IMC`Q$`X.T=_0D``^=!WK5AA)#!!)!!L@]PA)#!]0`Q`WGUT6R=3Q##```Q]/;-ZO<[``$V@0Q!``L.L>DG])#!Y0``_PL3U^04E/[1U^04`\\<\"`[\"[),+KB]\\[>YC:>YC:M-4?```A!0]!-MUS_P$G`Q$`A!!!:MWK!!$.OF84EX$<0,.R?WDO!0K;3.(-RR7&'2FQ^@`[`_4B`_3V`^[N!!#!`@8GA)!!;YYD`[5!`U5!WH$7\\OCKG0O9L_\\OWX#4`_`6`^KZT95``]$,X;$>M/$GA!#!`Q!!P)_017HBCU54_I\"S^+2A,IN8``8OI&)NQ-$!B]\\L;FL.=)#1=)#1``L[!0^`2I+UUL3-!)#!W,`9`W.(1/$1\\I,O^>[T````^@8V``]!GMUS!!!!"; + var B = function(f){ var t = this; t.f = f; t.y = t.t = 0; t.x = f.charCodeAt(0) - 33; }; + B.prototype.g = function(b){ + var r = 0, t = this; + while(b){ + var w = Math.min(b, 6 - t.t), v = t.x >>> (6 - t.t - w); + r <<= w; r |= v & ~(~0 << w); + if((t.t += w) == 6){ t.x = t.f.charCodeAt(++t.y) - 33; t.t = 0; } + b -= w; + } + return r; + }; + var D = function(n, w){ + this.c = new Array(n); this.w = w; this.p = -1; + for(var i = 0; i < n; ++i){ this.c[i] = [i + 97]; } + }; + D.prototype.d = function(s){ + var c = s.g(this.w), t = this, v; + if(c < t.c.length){ + v = t.c[c]; + if(t.p >= 0){ + t.c.push(t.c[t.p].concat(v[0])); + } + }else{ + t.c.push([]); + ++t.w; + return []; + } + t.p = c; + return v; + }; + var i = new B(n), d = new D(27, 5), t = []; + while(t.length < 1455){ + var v = d.d(i); + dojo.forEach(v, function(x){ t.push(x); }); + } + var n2 = dojo.map(t, function(x){ return String.fromCharCode(x); }).join("").split("{"); + i = new B(c); + for(var j = 0; j < n2.length; ++j){ + dojox.encoding.tests.compression.colors3[n2[j]] = [i.g(8), i.g(8), i.g(8)]; + } +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/lzw.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/lzw.js new file mode 100644 index 0000000..636e3eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/lzw.js @@ -0,0 +1,45 @@ +define(['doh', '../../compression/lzw', '../../bits'], function(doh, dcl, dcb){ + var msg1 = "The rain in Spain falls mainly on the plain."; + var msg2 = "The rain in Spain falls mainly on the plain.1"; + var msg3 = "The rain in Spain falls mainly on the plain.ab"; + var msg4 = "The rain in Spain falls mainly on the plain.!@#"; + + var s2b = function(s){ + var b = []; + for(var i = 0; i < s.length; ++i){ + b.push(s.charCodeAt(i)); + } + return b; + }; + + var b2s = function(b){ + var s = []; + dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); }); + return s.join(""); + }; + + var encode = function(msg){ + var x = new dcb.OutputStream(), encoder = new dcl.Encoder(128); + dojo.forEach(s2b(msg), function(v){ encoder.encode(v, x); }); + encoder.flush(x); + console.debug("bits =", x.getWidth()); + return x.getBuffer(); + }; + + var decode = function(n, buf){ + var x = new dcb.InputStream(buf, buf.length * 8), decoder = new dcl.Decoder(128), t = [], w = 0; + while(w < n){ + var v = decoder.decode(x); + t.push(v); + w += v.length; + } + return t.join(""); + }; + + doh.register("dojox.encoding.tests.compression.lzw", [ + function testLzwMsg1(t){ t.assertEqual(msg1, decode(msg1.length, encode(msg1))); }, + function testLzwMsg2(t){ t.assertEqual(msg2, decode(msg2.length, encode(msg2))); }, + function testLzwMsg3(t){ t.assertEqual(msg3, decode(msg3.length, encode(msg3))); }, + function testLzwMsg4(t){ t.assertEqual(msg4, decode(msg4.length, encode(msg4))); } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/runTests.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/runTests.html new file mode 100755 index 0000000..4a24eef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/runTests.html @@ -0,0 +1,9 @@ + + + DojoX Compression Unit Test Runner + + + +

                                  Redirecting to D.O.H runner.

                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/splay.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/splay.js new file mode 100644 index 0000000..59826c0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/splay.js @@ -0,0 +1,40 @@ +define(['doh', '../../compression/splay', '../../bits'], function(doh, Splay, dcb){ + var msg1 = "The rain in Spain falls mainly on the plain."; + var msg2 = "The rain in Spain falls mainly on the plain.1"; + var msg3 = "The rain in Spain falls mainly on the plain.ab"; + var msg4 = "The rain in Spain falls mainly on the plain.!@#"; + + var s2b = function(s){ + var b = []; + for(var i = 0; i < s.length; ++i){ + b.push(s.charCodeAt(i)); + } + return b; + }; + + var b2s = function(b){ + var s = []; + dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); }); + return s.join(""); + }; + + var encode = function(msg){ + var x = new dcb.OutputStream(), encoder = new Splay(256); + dojo.forEach(s2b(msg), function(v){ encoder.encode(v, x); }); + console.debug("bits =", x.getWidth()); + return x.getBuffer(); + }; + + var decode = function(n, buf){ + var x = new dcb.InputStream(buf, buf.length * 8), decoder = new Splay(256), t = []; + for(var i = 0; i < n; ++i){ t.push(decoder.decode(x)); } + return b2s(t); + }; + + doh.register("dojox.encoding.tests.compression.splay", [ + function testSplayMsg1(t){ t.assertEqual(msg1, decode(msg1.length, encode(msg1))); }, + function testSplayMsg2(t){ t.assertEqual(msg2, decode(msg2.length, encode(msg2))); }, + function testSplayMsg3(t){ t.assertEqual(msg3, decode(msg3.length, encode(msg3))); }, + function testSplayMsg4(t){ t.assertEqual(msg4, decode(msg4.length, encode(msg4))); } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/test.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/test.html new file mode 100755 index 0000000..8f07c59 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/test.html @@ -0,0 +1,61 @@ + + + Test colors + + + + + + + +

                                  Test colors

                                  +

                                  +
                                  No status yet.
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/vq.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/vq.html new file mode 100755 index 0000000..7805bd4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/compression/vq.html @@ -0,0 +1,185 @@ + + + Compress colors using VQ + + + + + + +

                                  Compress colors using VQ

                                  +

                                  Select desirable number of clusters:  

                                  +
                                  No status yet.
                                  +
                                  No results yet.
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/Blowfish.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/Blowfish.js new file mode 100644 index 0000000..47b6f46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/Blowfish.js @@ -0,0 +1,27 @@ +define(['doh', '../../crypto/Blowfish'], function(doh, Blowfish){ + var message="The rain in Spain falls mainly on the plain."; + var key="foobar"; + var base64Encrypted="WI5J5BPPVBuiTniVcl7KlIyNMmCosmKTU6a/ueyQuoUXyC5dERzwwdzfFsiU4vBw"; + + tests.register("dojox.encoding.crypto.tests.Blowfish", [ + function testEncrypt(t){ + var dt=new Date(); + t.assertEqual(base64Encrypted, Blowfish.encrypt(message, key)); + doh.debug("testEncrypt: ", new Date()-dt, "ms."); + }, + function testDecrypt(t){ + var dt=new Date(); + t.assertEqual(message, Blowfish.decrypt(base64Encrypted, key)); + doh.debug("testDecrypt: ", new Date()-dt, "ms."); + }, + function testShortMessage(t){ + var msg="pass"; + var pwd="foobar"; + var dt=new Date(); + var enc=Blowfish.encrypt(msg, pwd); + var dec=Blowfish.decrypt(enc, pwd); + t.assertEqual(dec, msg); + doh.debug("testShortMessage: ", new Date()-dt, "ms."); + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/RSA.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/RSA.js new file mode 100644 index 0000000..066f23d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/RSA.js @@ -0,0 +1,166 @@ +define(['doh', '../../crypto/RSAKey', '../../../math/random/Secure', '../../../math/random/prng4', '../../crypto/RSAKey-ext'], function(doh, RSAKey, Secure, prng4){ + var message = "The rain in Spain falls mainly on the plain.", + + sec = function(){ return new Secure(prng4); }, + + keys = { + "512e3": { + N: "BC86E3DC782C446EE756B874ACECF2A115E613021EAF1ED5EF295BEC2BED899D" + + "26FE2EC896BF9DE84FE381AF67A7B7CBB48D85235E72AB595ABF8FE840D5F8DB", + E: "3", + D: "7daf4292fac82d9f44e47af87348a1c0b9440cac1474bf394a1b929d729e5bbc" + + "f402f29a9300e11b478c091f7e5dacd3f8edae2effe3164d7e0eeada87ee817b", + P: "ef3fc61e21867a900e01ee4b1ba69f5403274ed27656da03ed88d7902cce693f", + Q: "c9b9fcc298b7d1af568f85b50e749539bc01b10a68472fe1302058104821cd65", + DMP1: "9f7fd9696baefc6009569edcbd19bf8d576f89e1a439e6ad4905e50ac8899b7f", + DMQ1: "867bfdd7107a8bca39b503ce09a30e267d567606f02f7540cac03ab5856bde43", + COEFF: "412d6b551d93ee1bd7dccafc63d7a6d031fc66035ecc630ddf75f949a378cd9d" + }, + + "512f4": { + N: "C4E3F7212602E1E396C0B6623CF11D26204ACE3E7D26685E037AD2507DCE82FC" + + "28F2D5F8A67FC3AFAB89A6D818D1F4C28CFA548418BD9F8E7426789A67E73E41", + E: "10001", + D: "7cd1745aec69096129b1f42da52ac9eae0afebbe0bc2ec89253598dcf454960e" + + "3e5e4ec9f8c87202b986601dd167253ee3fb3fa047e14f1dfd5ccd37e931b29d", + P: "f0e4dd1eac5622bd3932860fc749bbc48662edabdf3d2826059acc0251ac0d3b", + Q: "d13cb38fbcd06ee9bca330b4000b3dae5dae12b27e5173e4d888c325cda61ab3", + DMP1: "b3d5571197fc31b0eb6b4153b425e24c033b054d22b9c8282254fe69d8c8c593", + DMQ1: "968ffe89e50d7b72585a79b65cfdb9c1da0963cceb56c3759e57334de5a0ac3f", + COEFF: "d9bc4f420e93adad9f007d0e5744c2fe051c9ed9d3c9b65f439a18e13d6e3908" + }, + + "1024e3": { + N: "ABC30681295774F7CECA691EC17F4E762DA6DE70F198EAEE3CCE3A435FC006B9" + + "71DC24E55904F1D2705758C041C2B0B18E8BFAE2C9CD96B50082D7D8C7342CBA" + + "B7F6E0622DA53B8B56DBDB24174F00173263CFECAE604795CDA2A037BC3A69B7" + + "C0090AA2DE1568998BCD6D70CC2E0574755B9F7986AE01CE8714A26144279CDB", + E: "3", + D: "728204561b8fa34fdf319b69d654def973c4944b4bbb47497dded1823fd559d0" + + "f692c34390adf68c4ae4e5d5812c75cbb45d51ec86890f2355ac8fe5da22c87b" + + "62449e2aa754422bc43d3ca32efa866227ad58178e7803897d074f1312740aa7" + + "61cfc7ed753bb829d7a2ab091289d1676809bfd61276b43bb3a395714f167beb", + P: "e200731c6e934a0fdc1d5ce5f66d08ba9478280f46e9cbed777029dd4811a7cd" + + "4aa66ad8365c5aa67b06b97e54ee8fec03adb2134f7359a427c7ffc468ef0231", + Q: "c28f8005c4138e39d462a3495a6a2dc96267a3ba11c2765a1aa77fbdd87ab1ef" + + "62aaf3e677df79b44d52b364db70bb6d559f4da51b8899d0d1d74272e496e0cb", + DMP1: "96aaf76849b786b53d68e8994ef35b270da5700a2f4687f3a4f5713e300bc533" + + "87199c90243d91c452047ba98df45ff2ad1e76b78a4ce66d6fdaaa82f09f56cb", + DMQ1: "81b50003d80d097be2ec6cdb919c1e86419a6d26b681a43c11c4ffd3e5a7214a" + + "41c74d444fea5122de3722433cf5d248e3bf8918bd05bbe08be4d6f7430f4087", + COEFF: "a318fb95d3b10d6cfb0096fc3a3173377cf0952bf5d50fd3ccf678dd636ca1a1" + + "aeed8da416c8fba4395b00dc3e22823d1b2add8a4e1222d562af11bd6c78ad94" + }, + + "1024f4": { + N: "a5261939975948bb7a58dffe5ff54e65f0498f9175f5a09288810b8975871e99" + + "af3b5dd94057b0fc07535f5f97444504fa35169d461d0d30cf0192e307727c06" + + "5168c788771c561a9400fb49175e9e6aa4e23fe11af69e9412dd23b0cb6684c4" + + "c2429bce139e848ab26d0829073351f4acd36074eafd036a5eb83359d2a698d3", + E: "10001", + D: "8e9912f6d3645894e8d38cb58c0db81ff516cf4c7e5a14c7f1eddb1459d2cded" + + "4d8d293fc97aee6aefb861859c8b6a3d1dfe710463e1f9ddc72048c09751971c" + + "4a580aa51eb523357a3cc48d31cfad1d4a165066ed92d4748fb6571211da5cb1" + + "4bc11b6e2df7c1a559e6d5ac1cd5c94703a22891464fba23d0d965086277a161", + P: "d090ce58a92c75233a6486cb0a9209bf3583b64f540c76f5294bb97d285eed33" + + "aec220bde14b2417951178ac152ceab6da7090905b478195498b352048f15e7d", + Q: "cab575dc652bb66df15a0359609d51d1db184750c00c6698b90ef3465c996551" + + "03edbf0d54c56aec0ce3c4d22592338092a126a0cc49f65a4a30d222b411e58f", + DMP1: "1a24bca8e273df2f0e47c199bbf678604e7df7215480c77c8db39f49b000ce2c" + + "f7500038acfff5433b7d582a01f1826e6f4d42e1c57f5e1fef7b12aabc59fd25", + DMQ1: "3d06982efbbe47339e1f6d36b1216b8a741d410b0c662f54f7118b27b9a4ec9d" + + "914337eb39841d8666f3034408cf94f5b62f11c402fc994fe15a05493150d9fd", + COEFF: "3a3e731acd8960b7ff9eb81a7ff93bd1cfa74cbd56987db58b4594fb09c09084" + + "db1734c8143f98b602b981aaa9243ca28deb69b5b280ee8dcee0fd2625e53250" + } + }; + + function roundTrip(text, key, rngf){ + var rsa = rngf ? new RSAKey(rngf) : new RSAKey(); + rsa.setPublic(key.N, key.E); + var encoded = rsa.encrypt(text); + rsa.setPrivateEx(key.N, key.E, key.D, key.P, key.Q, key.DMP1, key.DMQ1, key.COEFF); + var decoded = rsa.decrypt(encoded); + return decoded; + } + + function generateKey(len, e, rngf){ + var rsa = rngf ? new RSAKey(rngf) : new RSAKey(); + rsa.generate(len, e); + return { + N: rsa.n.toString(), + E: rsa.e.toString(), + D: rsa.d.toString(), + P: rsa.p.toString(), + Q: rsa.q.toString(), + DMP1: rsa.dmp1.toString(), + DMQ1: rsa.dmq1.toString(), + COEFF: rsa.coeff.toString() + }; + } + + tests.register("dojox.encoding.crypto.tests.RSA", [ + // simple round-trip + function testSimple_RoundTrip1(t){ + t.is(message, roundTrip(message, keys["512e3"])); + }, + function testSimple_RoundTrip2(t){ + t.is(message, roundTrip(message, keys["512f4"])); + }, + function testSimple_RoundTrip3(t){ + t.is(message, roundTrip(message, keys["1024e3"])); + }, + function testSimple_RoundTrip4(t){ + t.is(message, roundTrip(message, keys["1024f4"])); + }, + // secure round-trip + function testSecure_RoundTrip1(t){ + t.is(message, roundTrip(message, keys["512e3"], sec)); + }, + function testSecure_RoundTrip2(t){ + t.is(message, roundTrip(message, keys["512f4"], sec)); + }, + function testSecure_RoundTrip3(t){ + t.is(message, roundTrip(message, keys["1024e3"], sec)); + }, + function testSecure_RoundTrip4(t){ + t.is(message, roundTrip(message, keys["1024f4"], sec)); + } +/* + // generate a key + round-trip using simple rng + function testSimple_GenRT_512e3(t){ + var key = generateKey(512, "3"); + t.is(message, roundTrip(message, key)); + }, + function testSimple_GenRT_512f4(t){ + var key = generateKey(512, "10001"); + t.is(message, roundTrip(message, key)); + }, + function testSimple_GenRT_1024e3(t){ + var key = generateKey(1024, "3"); + t.is(message, roundTrip(message, key)); + }, + function testSimple_GenRT_1024f4(t){ + var key = generateKey(1024, "10001"); + t.is(message, roundTrip(message, key)); + }, + // generate a key + round-trip using secure rng + function testSecure_GenRT_512e3(t){ + var key = generateKey(512, "3", sec); + t.is(message, roundTrip(message, key, sec)); + }, + function testSecure_GenRT_512f4(t){ + var key = generateKey(512, "10001", sec); + t.is(message, roundTrip(message, key, sec)); + }, + function testSecure_GenRT_1024e3(t){ + var key = generateKey(1024, "3", sec); + t.is(message, roundTrip(message, key, sec)); + }, + function testSecure_GenRT_1024f4(t){ + var key = generateKey(1024, "10001", sec); + t.is(message, roundTrip(message, key, sec)); + } +*/ + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/SimpleAES.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/SimpleAES.js new file mode 100644 index 0000000..b97cb1d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/SimpleAES.js @@ -0,0 +1,16 @@ +define(['doh', '../../crypto/SimpleAES'], function(doh, SimpleAES){ + var message="The rain in Spain falls mainly on the plain."; + var key="foo-bar-baz"; + var enc = null; + + tests.register("dojox.encoding.crypto.tests.SimpleAES", [ + function testAES(t){ + var dt = new Date(); + enc = SimpleAES.encrypt(message, key); + doh.debug("Encrypt: ", new Date()-dt, "ms."); + var dt2 = new Date(); + t.assertEqual(message, SimpleAES.decrypt(enc, key)); + doh.debug("Decrypt: ", new Date()-dt2, "ms."); + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/_base.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/_base.js new file mode 100644 index 0000000..838cd16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/_base.js @@ -0,0 +1 @@ +define(['./Blowfish', './SimpleAES', './RSA'], {}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/runTests.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/runTests.html new file mode 100644 index 0000000..31e54ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/crypto/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox.wire Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/MD5.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/MD5.js new file mode 100644 index 0000000..95b4a85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/MD5.js @@ -0,0 +1,18 @@ +define(['doh', '../../digests/_base', '../../digests/MD5'], function(doh, ded, MD5){ + var message="The rain in Spain falls mainly on the plain."; + var base64="OUhxbVZ1Mtmu4zx9LzS5cA=="; + var hex="3948716d567532d9aee33c7d2f34b970"; + var s="9HqmVu2\xD9\xAE\xE3<}/4\xB9p"; + + doh.register("dojox.encoding.tests.digests.MD5", [ + function testBase64Compute(t){ + t.assertEqual(base64, MD5(message)); + }, + function testHexCompute(t){ + t.assertEqual(hex, MD5(message, ded.outputTypes.Hex)); + }, + function testStringCompute(t){ + t.assertEqual(s, MD5(message, ded.outputTypes.String)); + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/SHA1.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/SHA1.js new file mode 100644 index 0000000..0b38763 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/SHA1.js @@ -0,0 +1,18 @@ +define(['doh', '../../digests/_base', '../../digests/SHA1'], function(doh, ded, SHA1){ + var message="abc"; + var base64="qZk+NkcGgWq6PiVxeFDCbJzQ2J0="; + var hex="a9993e364706816aba3e25717850c26c9cd0d89d"; + var s="\251\231\76\66\107\6\201\152\272\76\45\161\170\120\302\154\234\320\330\235"; + + doh.register("dojox.encoding.tests.digests.SHA1", [ + function testBase64Compute(t){ + t.assertEqual(base64, SHA1(message)); + }, + function testHexCompute(t){ + t.assertEqual(hex, SHA1(message, ded.outputTypes.Hex)); + }, + function testStringCompute(t){ + t.assertEqual(s, SHA1(message, ded.outputTypes.String)); + } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/_base.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/_base.js new file mode 100644 index 0000000..652c6db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/_base.js @@ -0,0 +1 @@ +define(['./MD5', './SHA1'], {}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/runTests.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/runTests.html new file mode 100644 index 0000000..6c41e6e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/digests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox.wire Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/easy64.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/easy64.js new file mode 100644 index 0000000..b3058c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/easy64.js @@ -0,0 +1,27 @@ +define(['doh', '../easy64'], function(doh, dce){ + var msg1 = "The rain in Spain falls mainly on the plain."; + var msg2 = "The rain in Spain falls mainly on the plain.1"; + var msg3 = "The rain in Spain falls mainly on the plain.ab"; + var msg4 = "The rain in Spain falls mainly on the plain.!@#"; + + var s2b = function(s){ + var b = []; + for(var i = 0; i < s.length; ++i){ + b.push(s.charCodeAt(i)); + } + return b; + }; + + var b2s = function(b){ + var s = []; + dojo.forEach(b, function(c){ s.push(String.fromCharCode(c)); }); + return s.join(""); + }; + + doh.register("dojox.encoding.tests.easy64", [ + function testEasyMsg1(t){ t.assertEqual(msg1, b2s(dce.decode(dce.encode(s2b(msg1))))); }, + function testEasyMsg2(t){ t.assertEqual(msg2, b2s(dce.decode(dce.encode(s2b(msg2))))); }, + function testEasyMsg3(t){ t.assertEqual(msg3, b2s(dce.decode(dce.encode(s2b(msg3))))); }, + function testEasyMsg4(t){ t.assertEqual(msg4, b2s(dce.decode(dce.encode(s2b(msg4))))); } + ]); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/encoding.js b/js/dojo-release-1.7.2-src/dojox/encoding/tests/encoding.js new file mode 100644 index 0000000..413d612 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/encoding.js @@ -0,0 +1 @@ +define(['./ascii85', './easy64', './bits'], {}); diff --git a/js/dojo-release-1.7.2-src/dojox/encoding/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/encoding/tests/runTests.html new file mode 100644 index 0000000..1200378 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/encoding/tests/runTests.html @@ -0,0 +1,9 @@ + + + DojoX Compression Unit Test Runner + + + +

                                  Redirecting to D.O.H runner.

                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/flash.js b/js/dojo-release-1.7.2-src/dojox/flash.js new file mode 100644 index 0000000..84657ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash.js @@ -0,0 +1,2 @@ +dojo.provide("dojox.flash"); +dojo.require("dojox.flash._base"); diff --git a/js/dojo-release-1.7.2-src/dojox/flash/DojoExternalInterface.as b/js/dojo-release-1.7.2-src/dojox/flash/DojoExternalInterface.as new file mode 100644 index 0000000..37fa6da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/DojoExternalInterface.as @@ -0,0 +1,177 @@ +/** + A wrapper around Flash 8's ExternalInterface; this is needed + because ExternalInterface has a number of serialization bugs that we + need to correct for. + + @author Brad Neuberg +*/ + +import flash.external.ExternalInterface; + +class DojoExternalInterface{ + public static var available:Boolean; + public static var dojoPath = ""; + + public static function initialize(){ + //trace("DojoExternalInterface.initialize"); + + // extract the dojo base path + DojoExternalInterface.dojoPath = DojoExternalInterface.getDojoPath(); + + // see if we need to do an express install + var install:ExpressInstall = new ExpressInstall(); + if(install.needsUpdate){ + install.init(); + } + + // set whether communication is available + DojoExternalInterface.available = ExternalInterface.available; + + // make sure we can play nice in XD settings + System.security.allowDomain(unescape(_root.xdomain)); + } + + /** Called when we are finished adding methods through addCallback. */ + public static function done(){ + //trace("done"); + DojoExternalInterface.call("dojox.flash.loaded"); + } + + public static function addCallback(methodName:String, instance:Object, + method:Function):Boolean{ + //trace("addCallback"); + ExternalInterface.addCallback(methodName, instance, function(){ + instance = (instance) ? instance : null; + var params = []; + if(arguments && arguments.length){ + for(var i = 0; i < arguments.length; i++){ + params[i] = DojoExternalInterface.decodeData(arguments[i]); + } + } + + var results = method.apply(instance, params); + results = DojoExternalInterface.encodeData(results); + + return results; + }); + + // tell JavaScript about DojoExternalInterface new method so we can create a proxy + ExternalInterface.call("dojox.flash.comm._addExternalInterfaceCallback", + methodName); + + return true; + } + + public static function call(methodName:String):Void{ + // we might have any number of optional arguments, so we have to + // pass them in dynamically; strip out the results callback + var parameters = new Array(); + for(var i = 0; i < arguments.length; i++){ + parameters.push(arguments[i]); + } + + // FIXME: Should we be encoding or decoding the data to get + // around Flash's serialization bugs? + + var results = ExternalInterface.call.apply(ExternalInterface, parameters); + + return results; + } + + /** + Called by Flash to indicate to JavaScript that we are ready to have + our Flash functions called. Calling loaded() + will fire the dojox.flash.loaded() event, so that JavaScript can know that + Flash has finished loading and adding its callbacks, and can begin to + interact with the Flash file. + */ + public static function loaded(){ + DojoExternalInterface.call("dojox.flash.loaded"); + } + + /** + Utility trace implementation that prints out to console.debug. + */ + public static function trace(msg){ + DojoExternalInterface.call("console.debug", "FLASH: " + msg); + } + + private static function decodeData(data):String{ + if(!data || typeof data != "string"){ + return data; + } + + // JAC: Using unicode character 0001 to store instead of Unicode null + // which causes trouble + data = replaceStr(data, "&custom_null;", "\u0001"); + + // we have to use custom encodings for certain characters when passing + // them over; for example, passing a backslash over as //// from JavaScript + // to Flash doesn't work + data = replaceStr(data, "&custom_backslash;", "\\"); + + return data; + } + + private static function encodeData(data):String{ + if(!data || typeof data != "string"){ + return data; + } + + // double encode all entity values, or they will be mis-decoded + // by Flash when returned + data = replaceStr(data, "&", "&"); + + // certain XMLish characters break Flash's wire serialization for + // ExternalInterface; encode these into a custom encoding, rather than + // the standard entity encoding, because otherwise we won't be able to + // differentiate between our own encoding and any entity characters + // that are being used in the string itself + data = replaceStr(data, '<', '&custom_lt;'); + data = replaceStr(data, '>', '&custom_gt;'); + + // needed for IE + data = replaceStr(data, '\\', '&custom_backslash;'); + data = replaceStr(data, "\u0001", "&custom_null;"); + + // encode control characters and JavaScript delimiters + data = replaceStr(data, "\n", "\\n"); + data = replaceStr(data, "\r", "\\r"); + data = replaceStr(data, "\f", "\\f"); + data = replaceStr(data, "'", "\\'"); + data = replaceStr(data, '"', '\"'); + + return data; + } + + /** + Flash ActionScript has no String.replace method or support for + Regular Expressions! We roll our own very simple one. + */ + public static function replaceStr(inputStr:String, replaceThis:String, + withThis:String):String{ + var splitStr = inputStr.split(replaceThis); + if(!splitStr){ + return inputStr; + } + + inputStr = splitStr.join(withThis); + return inputStr; + } + + private static function getDojoPath(){ + var url = _root._url; + var start = url.indexOf("baseUrl=") + "baseUrl=".length; + var path = url.substring(start); + var end = path.indexOf("&"); + if(end != -1){ + path = path.substring(0, end); + } + + // some browsers append a junk string at the end: '%20'%20quality= + if(path.indexOf("'%20'%20quality=") != -1){ + path = path.substring(0, path.indexOf("'%20'%20quality=")); + } + return unescape(path); + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/flash/ExpressInstall.as b/js/dojo-release-1.7.2-src/dojox/flash/ExpressInstall.as new file mode 100644 index 0000000..a4e9bdb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/ExpressInstall.as @@ -0,0 +1,71 @@ +/** + * Based on the expressinstall.as class created by Geoff Stearns as part + * of the FlashObject library. + * + * Use this file to invoke the Macromedia Flash Player Express Install functionality + * This file is intended for use with the FlashObject embed script. You can download FlashObject + * and this file at the following URL: http://blog.deconcept.com/flashobject/ + * + * Usage: + * var ExpressInstall = new ExpressInstall(); + * + * // test to see if install is needed: + * if (ExpressInstall.needsUpdate) { // returns true if update is needed + * ExpressInstall.init(); // starts the update + * } + * + * NOTE: Your Flash movie must be at least 214px by 137px in order to use ExpressInstall. + * + */ + +class ExpressInstall{ + public var needsUpdate:Boolean; + private var updater:MovieClip; + private var hold:MovieClip; + + public function ExpressInstall(){ + // does the user need to update? + this.needsUpdate = (_root.MMplayerType == undefined) ? false : true; + } + + public function init():Void{ + this.loadUpdater(); + } + + public function loadUpdater():Void{ + System.security.allowDomain("fpdownload.macromedia.com"); + + // hope that nothing is at a depth of 10000000, you can change this depth if needed, but you want + // it to be on top of your content if you have any stuff on the first frame + this.updater = _root.createEmptyMovieClip("expressInstallHolder", 10000000); + + // register the callback so we know if they cancel or there is an error + var _self = this; + this.updater.installStatus = _self.onInstallStatus; + this.hold = this.updater.createEmptyMovieClip("hold", 1); + + // can't use movieClipLoader because it has to work in 6.0.65 + this.updater.onEnterFrame = function():Void { + if(typeof this.hold.startUpdate == 'function'){ + _self.initUpdater(); + this.onEnterFrame = null; + } + } + + var cacheBuster:Number = Math.random(); + + this.hold.loadMovie("http://fpdownload.macromedia.com/pub/flashplayer/" + +"update/current/swf/autoUpdater.swf?"+ cacheBuster); + } + + private function initUpdater():Void{ + this.hold.redirectURL = _root.MMredirectURL; + this.hold.MMplayerType = _root.MMplayerType; + this.hold.MMdoctitle = _root.MMdoctitle; + this.hold.startUpdate(); + } + + public function onInstallStatus(msg):Void{ + getURL("javascript:dojox.flash.install._onInstallStatus('"+msg+"')"); + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/flash/README b/js/dojo-release-1.7.2-src/dojox/flash/README new file mode 100644 index 0000000..bf01cba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/README @@ -0,0 +1,31 @@ +------------------------------------------------------------------------------- +dojox.flash +------------------------------------------------------------------------------- +Version 0.5 +Release date: 2008-03-10 +------------------------------------------------------------------------------- +Project state: experimental +------------------------------------------------------------------------------- +Project authors + Brad Neuberg (BradNeuberg@dojotoolkit.org) + Alex Russell (alex@dojotoolkit.org, only handled minor porting issues) +------------------------------------------------------------------------------- +Project description + +Infrastructure for high-performance Flash/JS communication +------------------------------------------------------------------------------- +Dependencies: + +MTASC for creating builds +------------------------------------------------------------------------------- +Documentation + +TODOC +------------------------------------------------------------------------------- +Installation instructions + +Not intended as a stand-alone module. +------------------------------------------------------------------------------- +Additional Notes + +TODOC diff --git a/js/dojo-release-1.7.2-src/dojox/flash/_base.js b/js/dojo-release-1.7.2-src/dojox/flash/_base.js new file mode 100644 index 0000000..ec65c3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/_base.js @@ -0,0 +1,761 @@ +dojo.provide("dojox.flash._base"); +dojo.experimental("dojox.flash"); + +// for dojo.window.getBox(), needed by dojox.flash.Embed.center() +dojo.require("dojo.window"); + +dojox.flash = function(){ + // summary: + // Utilities to embed and communicate with the Flash player from Javascript + // + // description: + // The goal of dojox.flash is to make it easy to extend Flash's capabilities + // into an Ajax/DHTML environment. + // + // dojox.flash provides an easy object for interacting with the Flash plugin. + // This object provides methods to determine the current version of the Flash + // plugin (dojox.flash.info); write out the necessary markup to + // dynamically insert a Flash object into the page (dojox.flash.Embed; and + // do dynamic installation and upgrading of the current Flash plugin in + // use (dojox.flash.Install). If you want to call methods on the Flash object + // embedded into the page it is your responsibility to use Flash's ExternalInterface + // API and get a reference to the Flash object yourself. + // + // To use dojox.flash, you must first wait until Flash is finished loading + // and initializing before you attempt communication or interaction. + // To know when Flash is finished use dojo.connect: + // + //| dojo.connect(dojox.flash, "loaded", myInstance, "myCallback"); + // + // Then, while the page is still loading provide the file name: + // + //| dojox.flash.setSwf(dojo.moduleUrl("dojox", "_storage/storage.swf")); + // + // If no SWF files are specified, then Flash is not initialized. + // + // Your Flash must use Flash's ExternalInterface to expose Flash methods and + // to call JavaScript. + // + // setSwf can take an optional 'visible' attribute to control whether + // the Flash object is visible or not on the page; the default is visible: + // + //| dojox.flash.setSwf(dojo.moduleUrl("dojox", "_storage/storage.swf"), + // false); + // + // Once finished, you can query Flash version information: + // + //| dojox.flash.info.version + // + // Or can communicate with Flash methods that were exposed: + // + //| var f = dojox.flash.get(); + //| var results = f.sayHello("Some Message"); + // + // Your Flash files should use DojoExternalInterface.as to register methods; + // this file wraps Flash's normal ExternalInterface but correct various + // serialization bugs that ExternalInterface has. + // + // Note that dojox.flash is not meant to be a generic Flash embedding + // mechanism; it is as generic as necessary to make Dojo Storage's + // Flash Storage Provider as clean and modular as possible. If you want + // a generic Flash embed mechanism see [SWFObject](http://blog.deconcept.com/swfobject/). + // + // Notes: + // Note that dojox.flash can currently only work with one Flash object + // on the page; it does not yet support multiple Flash objects on + // the same page. + // + // Your code can detect whether the Flash player is installing or having + // its version revved in two ways. First, if dojox.flash detects that + // Flash installation needs to occur, it sets dojox.flash.info.installing + // to true. Second, you can detect if installation is necessary with the + // following callback: + // + //| dojo.connect(dojox.flash, "installing", myInstance, "myCallback"); + // + // You can use this callback to delay further actions that might need Flash; + // when installation is finished the full page will be refreshed and the + // user will be placed back on your page with Flash installed. + // + // ------------------- + // Todo/Known Issues + // ------------------- + // + // * On Internet Explorer, after doing a basic install, the page is + // not refreshed or does not detect that Flash is now available. The way + // to fix this is to create a custom small Flash file that is pointed to + // during installation; when it is finished loading, it does a callback + // that says that Flash installation is complete on IE, and we can proceed + // to initialize the dojox.flash subsystem. + // * Things aren't super tested for sending complex objects to Flash + // methods, since Dojo Storage only needs strings + // + // Author- Brad Neuberg, http://codinginparadise.org +} + +dojox.flash = { + ready: false, + url: null, + + _visible: true, + _loadedListeners: [], + _installingListeners: [], + + setSwf: function(/* String */ url, /* boolean? */ visible){ + // summary: Sets the SWF files and versions we are using. + // url: String + // The URL to this Flash file. + // visible: boolean? + // Whether the Flash file is visible or not. If it is not visible we hide + // it off the screen. This defaults to true (i.e. the Flash file is + // visible). + this.url = url; + + this._visible = true; + if(visible !== null && visible !== undefined){ + this._visible = visible; + } + + // initialize ourselves + this._initialize(); + }, + + addLoadedListener: function(/* Function */ listener){ + // summary: + // Adds a listener to know when Flash is finished loading. + // Useful if you don't want a dependency on dojo.event. + // listener: Function + // A function that will be called when Flash is done loading. + + this._loadedListeners.push(listener); + }, + + addInstallingListener: function(/* Function */ listener){ + // summary: + // Adds a listener to know if Flash is being installed. + // Useful if you don't want a dependency on dojo.event. + // listener: Function + // A function that will be called if Flash is being + // installed + + this._installingListeners.push(listener); + }, + + loaded: function(){ + // summary: Called back when the Flash subsystem is finished loading. + // description: + // A callback when the Flash subsystem is finished loading and can be + // worked with. To be notified when Flash is finished loading, add a + // loaded listener: + // + // dojox.flash.addLoadedListener(loadedListener); + + dojox.flash.ready = true; + if(dojox.flash._loadedListeners.length){ // FIXME: redundant if? use forEach? + for(var i = 0;i < dojox.flash._loadedListeners.length; i++){ + dojox.flash._loadedListeners[i].call(null); + } + } + }, + + installing: function(){ + // summary: Called if Flash is being installed. + // description: + // A callback to know if Flash is currently being installed or + // having its version revved. To be notified if Flash is installing, connect + // your callback to this method using the following: + // + // dojo.event.connect(dojox.flash, "installing", myInstance, "myCallback"); + + if(dojox.flash._installingListeners.length){ // FIXME: redundant if? use forEach? + for(var i = 0; i < dojox.flash._installingListeners.length; i++){ + dojox.flash._installingListeners[i].call(null); + } + } + }, + + // Initializes dojox.flash. + _initialize: function(){ + //console.debug("dojox.flash._initialize"); + // see if we need to rev or install Flash on this platform + var installer = new dojox.flash.Install(); + dojox.flash.installer = installer; + + if(installer.needed()){ + installer.install(); + }else{ + // write the flash object into the page + dojox.flash.obj = new dojox.flash.Embed(this._visible); + dojox.flash.obj.write(); + + // setup the communicator + dojox.flash.comm = new dojox.flash.Communicator(); + } + } +}; + + +dojox.flash.Info = function(){ + // summary: A class that helps us determine whether Flash is available. + // description: + // A class that helps us determine whether Flash is available, + // it's major and minor versions, and what Flash version features should + // be used for Flash/JavaScript communication. Parts of this code + // are adapted from the automatic Flash plugin detection code autogenerated + // by the Macromedia Flash 8 authoring environment. + // + // An instance of this class can be accessed on dojox.flash.info after + // the page is finished loading. + + this._detectVersion(); +} + +dojox.flash.Info.prototype = { + // version: String + // The full version string, such as "8r22". + version: -1, + + // versionMajor, versionMinor, versionRevision: String + // The major, minor, and revisions of the plugin. For example, if the + // plugin is 8r22, then the major version is 8, the minor version is 0, + // and the revision is 22. + versionMajor: -1, + versionMinor: -1, + versionRevision: -1, + + // capable: Boolean + // Whether this platform has Flash already installed. + capable: false, + + // installing: Boolean + // Set if we are in the middle of a Flash installation session. + installing: false, + + isVersionOrAbove: function( + /* int */ reqMajorVer, + /* int */ reqMinorVer, + /* int */ reqVer){ /* Boolean */ + // summary: + // Asserts that this environment has the given major, minor, and revision + // numbers for the Flash player. + // description: + // Asserts that this environment has the given major, minor, and revision + // numbers for the Flash player. + // + // Example- To test for Flash Player 7r14: + // + // dojox.flash.info.isVersionOrAbove(7, 0, 14) + // returns: + // Returns true if the player is equal + // or above the given version, false otherwise. + + // make the revision a decimal (i.e. transform revision 14 into + // 0.14 + reqVer = parseFloat("." + reqVer); + + if(this.versionMajor >= reqMajorVer && this.versionMinor >= reqMinorVer + && this.versionRevision >= reqVer){ + return true; + }else{ + return false; + } + }, + + _detectVersion: function(){ + var versionStr; + + // loop backwards through the versions until we find the newest version + for(var testVersion = 25; testVersion > 0; testVersion--){ + if(dojo.isIE){ + var axo; + try{ + if(testVersion > 6){ + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + + testVersion); + }else{ + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + } + if(typeof axo == "object"){ + if(testVersion == 6){ + axo.AllowScriptAccess = "always"; + } + versionStr = axo.GetVariable("$version"); + } + }catch(e){ + continue; + } + }else{ + versionStr = this._JSFlashInfo(testVersion); + } + + if(versionStr == -1 ){ + this.capable = false; + return; + }else if(versionStr != 0){ + var versionArray; + if(dojo.isIE){ + var tempArray = versionStr.split(" "); + var tempString = tempArray[1]; + versionArray = tempString.split(","); + }else{ + versionArray = versionStr.split("."); + } + + this.versionMajor = versionArray[0]; + this.versionMinor = versionArray[1]; + this.versionRevision = versionArray[2]; + + // 7.0r24 == 7.24 + var versionString = this.versionMajor + "." + this.versionRevision; + this.version = parseFloat(versionString); + + this.capable = true; + + break; + } + } + }, + + // JavaScript helper required to detect Flash Player PlugIn version + // information. Internet Explorer uses a corresponding Visual Basic + // version to interact with the Flash ActiveX control. + _JSFlashInfo: function(testVersion){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + if(navigator.plugins != null && navigator.plugins.length > 0){ + if(navigator.plugins["Shockwave Flash 2.0"] || + navigator.plugins["Shockwave Flash"]){ + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var tempArrayMinor = (descArray[3] || descArray[4]).split("r"); + var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; + var version = versionMajor + "." + versionMinor + "." + versionRevision; + + return version; + } + } + + return -1; + } +}; + +dojox.flash.Embed = function(visible){ + // summary: A class that is used to write out the Flash object into the page. + // description: + // Writes out the necessary tags to embed a Flash file into the page. Note that + // these tags are written out as the page is loaded using document.write, so + // you must call this class before the page has finished loading. + + this._visible = visible; +} + +dojox.flash.Embed.prototype = { + // width: int + // The width of this Flash applet. The default is the minimal width + // necessary to show the Flash settings dialog. Current value is + // 215 pixels. + width: 215, + + // height: int + // The height of this Flash applet. The default is the minimal height + // necessary to show the Flash settings dialog. Current value is + // 138 pixels. + height: 138, + + // id: String + // The id of the Flash object. Current value is 'flashObject'. + id: "flashObject", + + // Controls whether this is a visible Flash applet or not. + _visible: true, + + protocol: function(){ + switch(window.location.protocol){ + case "https:": + return "https"; + break; + default: + return "http"; + break; + } + }, + + write: function(/* Boolean? */ doExpressInstall){ + // summary: Writes the Flash into the page. + // description: + // This must be called before the page + // is finished loading. + // doExpressInstall: Boolean + // Whether to write out Express Install + // information. Optional value; defaults to false. + + // figure out the SWF file to get and how to write out the correct HTML + // for this Flash version + var objectHTML; + var swfloc = dojox.flash.url; + var swflocObject = swfloc; + var swflocEmbed = swfloc; + var dojoUrl = dojo.baseUrl; + var xdomainBase = document.location.protocol + '//' + document.location.host; + if(doExpressInstall){ + // the location to redirect to after installing + var redirectURL = escape(window.location); + document.title = document.title.slice(0, 47) + " - Flash Player Installation"; + var docTitle = escape(document.title); + swflocObject += "?MMredirectURL=" + redirectURL + + "&MMplayerType=ActiveX" + + "&MMdoctitle=" + docTitle + + "&baseUrl=" + escape(dojoUrl) + + "&xdomain=" + escape(xdomainBase); + swflocEmbed += "?MMredirectURL=" + redirectURL + + "&MMplayerType=PlugIn" + + "&baseUrl=" + escape(dojoUrl) + + "&xdomain=" + escape(xdomainBase); + }else{ + // IE/Flash has an evil bug that shows up some time: if we load the + // Flash and it isn't in the cache, ExternalInterface works fine -- + // however, the second time when its loaded from the cache a timing + // bug can keep ExternalInterface from working. The trick below + // simply invalidates the Flash object in the cache all the time to + // keep it loading fresh. -- Brad Neuberg + swflocObject += "?cachebust=" + new Date().getTime(); + swflocObject += "&baseUrl=" + escape(dojoUrl); + swflocObject += "&xdomain=" + escape(xdomainBase); + } + + if(swflocEmbed.indexOf("?") == -1){ + swflocEmbed += '?baseUrl='+escape(dojoUrl); + }else{ + swflocEmbed += '&baseUrl='+escape(dojoUrl); + } + swflocEmbed += '&xdomain='+escape(xdomainBase); + + objectHTML = + '\n ' + + '\n ' + + '\n ' + + '\n ' + + '\n ' + + '\n' + + '\n'; + + // using same mechanism on all browsers now to write out + // Flash object into page + + // document.write no longer works correctly due to Eolas patent workaround + // in IE; nothing happens (i.e. object doesn't go into page if we use it) + dojo.connect(dojo, "loaded", dojo.hitch(this, function(){ + // Prevent putting duplicate SWFs onto the page + var containerId = this.id + "Container"; + if(dojo.byId(containerId)){ + return; + } + + var div = document.createElement("div"); + div.id = this.id + "Container"; + + div.style.width = this.width + "px"; + div.style.height = this.height + "px"; + if(!this._visible){ + div.style.position = "absolute"; + div.style.zIndex = "10000"; + div.style.top = "-1000px"; + } + + div.innerHTML = objectHTML; + + var body = document.getElementsByTagName("body"); + if(!body || !body.length){ + throw new Error("No body tag for this page"); + } + body = body[0]; + body.appendChild(div); + })); + }, + + get: function(){ /* Object */ + // summary: Gets the Flash object DOM node. + + if(dojo.isIE || dojo.isWebKit){ + //TODO: should this really be the else? + return dojo.byId(this.id); + }else{ + // different IDs on OBJECT and EMBED tags or + // else Firefox will return wrong one and + // communication won't work; + // also, document.getElementById() returns a + // plugin but ExternalInterface calls don't + // work on it so we have to use + // document[id] instead + return document[this.id + "Embed"]; + } + }, + + setVisible: function(/* Boolean */ visible){ + //console.debug("setVisible, visible="+visible); + + // summary: Sets the visibility of this Flash object. + var container = dojo.byId(this.id + "Container"); + if(visible){ + container.style.position = "absolute"; // IE -- Brad Neuberg + container.style.visibility = "visible"; + }else{ + container.style.position = "absolute"; + container.style.y = "-1000px"; + container.style.visibility = "hidden"; + } + }, + + center: function(){ + // summary: Centers the flash applet on the page. + + var elementWidth = this.width; + var elementHeight = this.height; + + var viewport = dojo.window.getBox(); + + // compute the centered position + var x = viewport.l + (viewport.w - elementWidth) / 2; + var y = viewport.t + (viewport.h - elementHeight) / 2; + + // set the centered position + var container = dojo.byId(this.id + "Container"); + container.style.top = y + "px"; + container.style.left = x + "px"; + } +}; + + +dojox.flash.Communicator = function(){ + // summary: + // A class that is used to communicate between Flash and JavaScript. + // description: + // This class helps mediate Flash and JavaScript communication. Internally + // it uses Flash 8's ExternalInterface API, but adds functionality to fix + // various encoding bugs that ExternalInterface has. +} + +dojox.flash.Communicator.prototype = { + // Registers the existence of a Flash method that we can call with + // JavaScript, using Flash 8's ExternalInterface. + _addExternalInterfaceCallback: function(methodName){ + //console.debug("addExternalInterfaceCallback, methodName="+methodName); + var wrapperCall = dojo.hitch(this, function(){ + // some browsers don't like us changing values in the 'arguments' array, so + // make a fresh copy of it + var methodArgs = new Array(arguments.length); + for(var i = 0; i < arguments.length; i++){ + methodArgs[i] = this._encodeData(arguments[i]); + } + + var results = this._execFlash(methodName, methodArgs); + results = this._decodeData(results); + + return results; + }); + + this[methodName] = wrapperCall; + }, + + // Encodes our data to get around ExternalInterface bugs that are still + // present even in Flash 9. + _encodeData: function(data){ + //console.debug("encodeData, data=", data); + if(!data || typeof data != "string"){ + return data; + } + + // transforming \ into \\ doesn't work; just use a custom encoding + data = data.replace("\\", "&custom_backslash;"); + + // also use custom encoding for the null character to avoid problems + data = data.replace(/\0/g, "&custom_null;"); + + return data; + }, + + // Decodes our data to get around ExternalInterface bugs that are still + // present even in Flash 9. + _decodeData: function(data){ + //console.debug("decodeData, data=", data); + // wierdly enough, Flash sometimes returns the result as an + // 'object' that is actually an array, rather than as a String; + // detect this by looking for a length property; for IE + // we also make sure that we aren't dealing with a typeof string + // since string objects have length property there + if(data && data.length && typeof data != "string"){ + data = data[0]; + } + + if(!data || typeof data != "string"){ + return data; + } + + // needed for IE; \0 is the NULL character + data = data.replace(/\&custom_null\;/g, "\0"); + + // certain XMLish characters break Flash's wire serialization for + // ExternalInterface; these are encoded on the + // DojoExternalInterface side into a custom encoding, rather than + // the standard entity encoding, because otherwise we won't be able to + // differentiate between our own encoding and any entity characters + // that are being used in the string itself + data = data.replace(/\&custom_lt\;/g, "<") + .replace(/\&custom_gt\;/g, ">") + .replace(/\&custom_backslash\;/g, '\\'); + + return data; + }, + + // Executes a Flash method; called from the JavaScript wrapper proxy we + // create on dojox.flash.comm. + _execFlash: function(methodName, methodArgs){ + //console.debug("execFlash, methodName="+methodName+", methodArgs=", methodArgs); + var plugin = dojox.flash.obj.get(); + methodArgs = (methodArgs) ? methodArgs : []; + + // encode arguments that are strings + for(var i = 0; i < methodArgs; i++){ + if(typeof methodArgs[i] == "string"){ + methodArgs[i] = this._encodeData(methodArgs[i]); + } + } + + // we use this gnarly hack below instead of + // plugin[methodName] for two reasons: + // 1) plugin[methodName] has no call() method, which + // means we can't pass in multiple arguments dynamically + // to a Flash method -- we can only have one + // 2) On IE plugin[methodName] returns undefined -- + // plugin[methodName] used to work on IE when we + // used document.write but doesn't now that + // we use dynamic DOM insertion of the Flash object + // -- Brad Neuberg + var flashExec = function(){ + return eval(plugin.CallFunction( + "" + + __flash__argumentsToXML(methodArgs, 0) + + "")); + }; + var results = flashExec.call(methodArgs); + + if(typeof results == "string"){ + results = this._decodeData(results); + } + + return results; + } +} + +// FIXME: dojo.declare()-ify this + +// TODO: I did not test the Install code when I refactored Dojo Flash from 0.4 to +// 1.0, so am not sure if it works. If Flash is not present I now prefer +// that Gears is installed instead of Flash because GearsStorageProvider is +// much easier to work with than Flash's hacky ExternalInteface. +// -- Brad Neuberg +dojox.flash.Install = function(){ + // summary: Helps install Flash plugin if needed. + // description: + // Figures out the best way to automatically install the Flash plugin + // for this browser and platform. Also determines if installation or + // revving of the current plugin is needed on this platform. +} + +dojox.flash.Install.prototype = { + needed: function(){ /* Boolean */ + // summary: + // Determines if installation or revving of the current plugin is + // needed. + + // do we even have flash? + if(!dojox.flash.info.capable){ + return true; + } + + // Must have ExternalInterface which came in Flash 8 + if(!dojox.flash.info.isVersionOrAbove(8, 0, 0)){ + return true; + } + + // otherwise we don't need installation + return false; + }, + + install: function(){ + // summary: Performs installation or revving of the Flash plugin. + var installObj; + + // indicate that we are installing + dojox.flash.info.installing = true; + dojox.flash.installing(); + + if(dojox.flash.info.capable == false){ // we have no Flash at all + // write out a simple Flash object to force the browser to prompt + // the user to install things + installObj = new dojox.flash.Embed(false); + installObj.write(); // write out HTML for Flash + }else if(dojox.flash.info.isVersionOrAbove(6, 0, 65)){ // Express Install + installObj = new dojox.flash.Embed(false); + installObj.write(true); // write out HTML for Flash 8 version+ + installObj.setVisible(true); + installObj.center(); + }else{ // older Flash install than version 6r65 + alert("This content requires a more recent version of the Macromedia " + +" Flash Player."); + window.location.href = + dojox.flash.Embed.protocol() + + "://www.macromedia.com/go/getflashplayer"; + } + }, + + // Called when the Express Install is either finished, failed, or was + // rejected by the user. + _onInstallStatus: function(msg){ + if (msg == "Download.Complete"){ + // Installation is complete. + dojox.flash._initialize(); + }else if(msg == "Download.Cancelled"){ + alert("This content requires a more recent version of the Macromedia " + +" Flash Player."); + window.location.href = dojox.flash.Embed.protocol() + + "://www.macromedia.com/go/getflashplayer"; + }else if (msg == "Download.Failed"){ + // The end user failed to download the installer due to a network failure + alert("There was an error downloading the Flash Player update. " + + "Please try again later, or visit macromedia.com to download " + + "the latest version of the Flash plugin."); + } + } +} + +// find out if Flash is installed +dojox.flash.info = new dojox.flash.Info(); + +// vim:ts=4:noet:tw=0: diff --git a/js/dojo-release-1.7.2-src/dojox/flash/tests/TestFlash.as b/js/dojo-release-1.7.2-src/dojox/flash/tests/TestFlash.as new file mode 100644 index 0000000..80e7cd2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/tests/TestFlash.as @@ -0,0 +1,42 @@ +import DojoExternalInterface; +import ExpressInstall; + +class TestFlash{ + private var message:String; + + public function TestFlash(){ + } + + public static function main(){ + //getURL("javascript:alert('main')"); + trace("main"); + DojoExternalInterface.initialize(); + + var test = new TestFlash(); + DojoExternalInterface.addCallback("setMessage", test, test.setMessage); + DojoExternalInterface.addCallback("getMessage", test, test.getMessage); + DojoExternalInterface.addCallback("multipleValues", test, test.multipleValues); + DojoExternalInterface.addCallback("setMessageSlice", test, test.setMessageSlice); + + DojoExternalInterface.done(); + } + + public function setMessage(message:String):Number{ + this.message = message; + return message.length; + } + + public function setMessageSlice(message:String, start:Number, end:Number):Number{ + this.message = message.slice(start,end); + return message.length; + } + + public function getMessage():String{ + return this.message; + } + + public function multipleValues(key:String, value:String, + namespace:String):String{ + return namespace + key + value; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/flash/tests/TestFlash.swf b/js/dojo-release-1.7.2-src/dojox/flash/tests/TestFlash.swf new file mode 100644 index 0000000..3499180 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/flash/tests/TestFlash.swf differ diff --git a/js/dojo-release-1.7.2-src/dojox/flash/tests/buildFlashTest.sh b/js/dojo-release-1.7.2-src/dojox/flash/tests/buildFlashTest.sh new file mode 100755 index 0000000..a73d20c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/tests/buildFlashTest.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# TODO: FIXME: Get rid of this and hook it into Dojo's general build script +# You must have mtasc to run this +mtasc -trace DojoExternalInterface.trace -main -cp .. -swf TestFlash.swf -version 8 -header 215:138:10 TestFlash.as \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/flash/tests/test_flash.html b/js/dojo-release-1.7.2-src/dojox/flash/tests/test_flash.html new file mode 100644 index 0000000..f220a37 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/tests/test_flash.html @@ -0,0 +1,15 @@ + + + + + + + + +

                                  Test Dojox Flash

                                  + +

                                  For detailed test output see Firebug console (if Firefox). + This test should be run on Firefox, Internet Explorer, and Safari + to confirm that Dojox Flash is working correctly.

                                  + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/flash/tests/test_flash.js b/js/dojo-release-1.7.2-src/dojox/flash/tests/test_flash.js new file mode 100644 index 0000000..299fb51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/flash/tests/test_flash.js @@ -0,0 +1,191 @@ +// TODO: FIXME: Refactor this to use D.O.H. instead of its own assertions + +dojo.require("dojox.flash"); + +var flashLoaded = false; +var pageLoaded = false; +var testXML = testBook = null; + +function flashReady(){ + console.debug("flashReady"); + if (flashLoaded) { + return; // prevent double loads + } + + flashLoaded = true; + + if(isReady()){ + run(); + } +} + +function pageReady(){ + console.debug("pageReady"); + if (pageLoaded) { + return; // prevent double loads + } + + pageLoaded = true; + + loadResources(); + + if(isReady()){ + run(); + } +} + +function isReady(){ + return testXML && testBook && pageLoaded && flashLoaded; +} + +function loadResources(){ + console.debug("Trying to load resources"); + + var d = dojo.xhrGet({ + url: "../../storage/tests/resources/testXML.xml", + handleAs: "text" + }); + + d.addCallback(function(results){ + console.debug("testXML loaded"); + testXML = results; + if(isReady()){ + run(); + } + }); + + d.addErrback(function(error){ + console.debug("Unable to load testXML.xml: " + error); + }); + + d = dojo.xhrGet({ + url: "../../storage/tests/resources/testBook.txt", + handleAs: "text" + }); + + d.addCallback(function(results){ + console.debug("testBook loaded"); + testBook = results; + if(isReady()){ + run(); + } + }); + + d.addErrback(function(error){ + console.debug("Unable to load testXML.xml: " + error); + }); +} + +function run(){ + console.debug("run"); + try{ + var correct, actual; + + console.debug("Setting simple message..."); + correct = "hello world"; + dojox.flash.comm.setMessage(correct); + actual = dojox.flash.comm.getMessage(); + assert(correct, actual, "Setting/getting simple message did not work"); + chop(correct); + + console.debug("Setting message with evil characters..."); + // our correct and actual values get tricky when we have double back + // slashes; do a trick so that they can be compared easier + var doubleSlash = "\\"; + doubleSlash = doubleSlash.charAt(0); + correct = "hello world\n\n\nasdfasdf!@#$@#%^[]{}&" + doubleSlash + + "
                                  $%^&%^&*^&()<><><>,./;\0\r\f\'][`~=\"+-]\\0MORE!\n\rLESS"; + var putSize = dojox.flash.comm.setMessage(correct); + assert(putSize, correct.length, "Failed putting. Correct length = " + + correct.length + ", Flash length = " + putSize); + dojox.flash.comm.setMessage(correct); + actual = dojox.flash.comm.getMessage(); + assert(correct, actual, "Setting/getting message with evil characters did not work"); + chop(correct); + + console.debug("Setting testXML..."); + correct = testXML; + dojox.flash.comm.setMessage(correct); + actual = dojox.flash.comm.getMessage(); + assert(correct, actual, "Setting/getting testXML did not work"); + chop(correct); + + console.debug("Setting testBook(~300K)..."); + correct = testBook; + dojox.flash.comm.setMessage(correct); + actual = dojox.flash.comm.getMessage(); + assert(correct, actual, "Setting/getting testBook did not work"); + + console.debug("Setting testBook 3 times (~900K)..."); + correct = testBook + testBook + testBook; + dojox.flash.comm.setMessage(correct); + actual = dojox.flash.comm.getMessage(); + assert(correct, actual, "Setting/getting testBook X 3 did not work"); + + console.debug("Setting JSON..."); + var obj = {type: "car", color: "red", model: "Ford", year: "2008", + features: ["A/C", "automatic", "4-wheel drive"]}; + correct = dojo.toJson(obj, true); + dojox.flash.comm.setMessage(correct); + actual = dojox.flash.comm.getMessage(); + assert(correct, actual, "Setting/getting JSON did not work"); + chop(correct); + + console.debug("Calling method that takes multiple values..."); + actual = dojox.flash.comm.multipleValues("key", "value", "namespace"); + assert("namespacekeyvalue", actual, "Setting/getting multiple values did not work"); + + var allPassed = document.createElement("p"); + allPassed.style.backgroundColor = "green"; + allPassed.style.color = "white"; + allPassed.style.fontSize = "24pt"; + allPassed.appendChild(document.createTextNode("All tests passed")); + var body = document.getElementsByTagName("body")[0]; + body.appendChild(allPassed); + }catch(e){ + console.debug(e.message || e); + } +} + +function chop(testString){ + console.debug("chopping '" + testString + "'"); + for(var i = 0; i < Math.min(testString.length, 100); i++){ + //console.debug("index = " + i); + testSlice(testString, 0, i+1); + } +} + +function testSlice( testString, from, to){ + var putSize = dojox.flash.comm.setMessageSlice( testString, from, to); + var actual = dojox.flash.comm.getMessage(); + var correct = testString.slice(from, to); + + var msg = "Put a string with " + testString.length + + " chars, but it got with " + putSize + " chars in the Flash layer"; + assert(putSize, testString.length, msg); + + msg = "I got '" + actual + "' instead of '" + correct +"'"; + assert(correct, actual, msg); +} + +function assert(correct, actual, msg){ + //alert("correct="+correct+",\n\nactual="+actual); + if(correct != actual){ + var failed = document.createElement("p"); + failed.style.backgroundColor = "red"; + failed.style.color = "white"; + failed.style.fontSize = "24pt"; + failed.appendChild(document.createTextNode("Test failed: " + msg)); + var body = document.getElementsByTagName("body")[0]; + body.appendChild(failed); + + throw new Error("ASSERTION FAILED: " + msg); + }else{ + //console.debug("Assertion passed"); + } +} + +console.debug("adding listeners..."); +dojox.flash.addLoadedListener(flashReady); +dojox.flash.setSwf("TestFlash.swf", false); +dojo.connect(dojo, "loaded", pageReady); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/BusyButton.js b/js/dojo-release-1.7.2-src/dojox/form/BusyButton.js new file mode 100644 index 0000000..356da26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/BusyButton.js @@ -0,0 +1,134 @@ +define([ + "dojo/_base/lang", + "dojo/dom-attr", + "dojo/dom-class", + "dijit/form/Button", + "dijit/form/DropDownButton", + "dijit/form/ComboButton", + "dojo/i18n", + "dojo/i18n!dijit/nls/loading", + "dojo/_base/declare" +], function(lang, domAttr, domClass, Button, DropDownButton, ComboButton, i18n, nlsLoading, declare){ + /*===== + Button = dijit.form.Button; + DropDownButton = dijit.form.DropDownButton; + ComboButton = dijit.form.ComboButton; + =====*/ +var _BusyButtonMixin = declare("dojox.form._BusyButtonMixin", null, { + + isBusy: false, + busyLabel: "", // text while button is busy + timeout: null, // timeout, should be controlled by xhr call + useIcon: true, // use a busy icon + + postMixInProperties: function(){ + this.inherited(arguments); + if(!this.busyLabel){ + this.busyLabel = i18n.getLocalization("dijit", "loading", this.lang).loadingState; + } + }, + + postCreate: function(){ + // summary: + // stores initial label and timeout for reference + this.inherited(arguments); + this._label = this.containerNode.innerHTML; + this._initTimeout = this.timeout; + + // for initial busy buttons + if(this.isBusy){ + this.makeBusy(); + } + }, + + makeBusy: function(){ + // summary: + // sets state from idle to busy + this.isBusy = true; + this.set("disabled", true); + + this.setLabel(this.busyLabel, this.timeout); + }, + + cancel: function(){ + // summary: + // if no timeout is set or for other reason the user can put the button back + // to being idle + this.set("disabled", false); + this.isBusy = false; + this.setLabel(this._label); + if(this._timeout){ clearTimeout(this._timeout); } + this.timeout = this._initTimeout; + }, + + resetTimeout: function(/*Int*/ timeout){ + // summary: + // to reset existing timeout and setting a new timeout + if(this._timeout){ + clearTimeout(this._timeout); + } + + // new timeout + if(timeout){ + this._timeout = setTimeout(lang.hitch(this, function(){ + this.cancel(); + }), timeout); + }else if(timeout == undefined || timeout === 0){ + this.cancel(); + } + }, + + setLabel: function(/*String*/ content, /*Int*/ timeout){ + // summary: + // setting a label and optional timeout of the labels state + + // this.inherited(arguments); FIXME: throws an Unknown runtime error + + // Begin IE hack + // summary: reset the label (text) of the button; takes an HTML string + this.label = content; + // remove children + while(this.containerNode.firstChild){ + this.containerNode.removeChild(this.containerNode.firstChild); + } + this.containerNode.innerHTML = this.label; + + if(this.showLabel == false && !domAttr.get(this.domNode, "title")){ + this.titleNode.title=lang.trim(this.containerNode.innerText || this.containerNode.textContent || ''); + } + // End IE hack + + // setting timeout + if(timeout){ + this.resetTimeout(timeout); + }else{ + this.timeout = null; + } + + // create optional busy image + if(this.useIcon && this.isBusy){ + var node = new Image(); + node.src = this._blankGif; + domAttr.set(node, "id", this.id+"_icon"); + domClass.add(node, "dojoxBusyButtonIcon"); + this.containerNode.appendChild(node); + } + }, + + _onClick: function(e){ + // summary: + // on button click the button state gets changed + + // only do something if button is not busy + if(!this.isBusy){ + this.inherited(arguments); // calls onClick() + this.makeBusy(); + } + } +}); + +var BusyButton = declare("dojox.form.BusyButton", [Button, _BusyButtonMixin], {}); +declare("dojox.form.BusyComboButton", [ComboButton, _BusyButtonMixin], {}); +declare("dojox.form.BusyDropDownButton", [DropDownButton, _BusyButtonMixin], {}); +return BusyButton; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/CheckedMultiSelect.js new file mode 100644 index 0000000..ae1ea0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/CheckedMultiSelect.js @@ -0,0 +1,552 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/event", + "dojo/dom-geometry", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/i18n", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_WidgetsInTemplateMixin", + "dijit/registry", + "dijit/Menu", + "dijit/MenuItem", + "dijit/Tooltip", + "dijit/form/_FormSelectWidget", + "dijit/form/ComboButton", + "dojo/text!dojox/form/resources/_CheckedMultiSelectMenuItem.html", + "dojo/text!dojox/form/resources/_CheckedMultiSelectItem.html", + "dojo/text!dojox/form/resources/CheckedMultiSelect.html", + "dojo/i18n!dojox/form/nls/CheckedMultiSelect", + "dijit/form/CheckBox" // template +], function(declare, lang, array, event, domGeometry, domClass, domConstruct, i18n, Widget, TemplatedMixin, WidgetsInTemplateMixin, registry, Menu, MenuItem, Tooltip, FormSelectWidget, ComboButton, CheckedMultiSelectMenuItem, CheckedMultiSelectItem, CheckedMultiSelect, nlsCheckedMultiSelect){ + + // module: + // dojox/form/CheckedMultiSelect + // summary: + // Extends the core dojox.form.CheckedMultiSelect to provide a "checkbox" selector + // + + /*===== + Widget = dijit._Widget; + TemplatedMixin = dijit._TemplatedMixin; + WidgetsInTemplateMixin = dijit._WidgetsInTemplateMixin; + Menu = dijit.Menu; + MenuItem = dijit.MenuItem; + FormSelectWidget = dijit.form._FormSelectWidget; + =====*/ +var formCheckedMultiSelectItem = declare("dojox.form._CheckedMultiSelectItem", [Widget, TemplatedMixin, WidgetsInTemplateMixin], { + // summary: + // The individual items for a CheckedMultiSelect + + templateString: CheckedMultiSelectItem, + + baseClass: "dojoxMultiSelectItem", + + // option: dojox.form.__SelectOption + // The option that is associated with this item + option: null, + parent: null, + + // disabled: boolean + // Whether or not this widget is disabled + disabled: false, + + // readOnly: boolean + // Whether or not this widget is readOnly + readOnly: false, + + postMixInProperties: function(){ + // summary: + // Set the appropriate _subClass value - based on if we are multi- + // or single-select + this._type = this.parent.multiple ? + {type: "checkbox", baseClass: "dijitCheckBox"} : + {type: "radio", baseClass: "dijitRadio"}; + this.disabled = this.option.disabled = this.option.disabled||false; + this.inherited(arguments); + }, + + postCreate: function(){ + // summary: + // Set innerHTML here - since the template gets messed up sometimes + // with rich text + this.inherited(arguments); + this.labelNode.innerHTML = this.option.label; + }, + + _changeBox: function(){ + // summary: + // Called to force the select to match the state of the check box + // (only on click of the checkbox) Radio-based calls _setValueAttr + // instead. + if(this.get("disabled") || this.get("readOnly")){ return; } + if(this.parent.multiple){ + this.option.selected = this.checkBox.get('value') && true; + }else{ + this.parent.set('value', this.option.value); + } + // fire the parent's change + this.parent._updateSelection(); + + // refocus the parent + this.parent.focus(); + }, + + _onClick: function(e){ + // summary: + // Sets the click state (passes through to the check box) + if(this.get("disabled") || this.get("readOnly")){ + event.stop(e); + }else{ + this.checkBox._onClick(e); + } + }, + + _updateBox: function(){ + // summary: + // Called to force the box to match the state of the select + this.checkBox.set('value', this.option.selected); + }, + + _setDisabledAttr: function(value){ + // summary: + // Disables (or enables) all the children as well + this.disabled = value||this.option.disabled; + this.checkBox.set("disabled", this.disabled); + domClass.toggle(this.domNode, "dojoxMultiSelectDisabled", this.disabled); + }, + + _setReadOnlyAttr: function(value){ + // summary: + // Sets read only (or unsets) all the children as well + this.checkBox.set("readOnly", value); + this.readOnly = value; + } +}); + +var formCheckedMultiSelectMenu = declare("dojox.form._CheckedMultiSelectMenu", Menu, { + // summary: + // An internally-used menu for dropdown that allows us a vertical scrollbar + multiple: false, + + // summary: + // An internally-used menu for dropdown that allows us a vertical scrollbar + buildRendering: function(){ + // summary: + // Stub in our own changes, so that our domNode is not a table + // otherwise, we won't respond correctly to heights/overflows + this.inherited(arguments); + var o = (this.menuTableNode = this.domNode), + n = (this.domNode = domConstruct.create("div", {style: {overflowX: "hidden", overflowY: "scroll"}})); + if(o.parentNode){ + o.parentNode.replaceChild(n, o); + } + domClass.remove(o, "dijitMenuTable"); + n.className = o.className + " dojoxCheckedMultiSelectMenu"; + o.className = "dijitReset dijitMenuTable"; + o.setAttribute("role", "listbox"); + n.setAttribute("role", "presentation"); + n.appendChild(o); + }, + + resize: function(/*Object*/ mb){ + // summary: + // Overridden so that we are able to handle resizing our + // internal widget. Note that this is not a "full" resize + // implementation - it only works correctly if you pass it a + // marginBox. + // + // mb: Object + // The margin box to set this dropdown to. + if(mb){ + domGeometry.setMarginBox(this.domNode, mb); + if("w" in mb){ + // We've explicitly set the wrapper
                                  's width, so set width to match. + // 100% is safer than a pixel value because there may be a scroll bar with + // browser/OS specific width. + this.menuTableNode.style.width = "100%"; + } + } + }, + + onClose: function(){ + this.inherited(arguments); + if(this.menuTableNode){ + // Erase possible width: 100% setting from _SelectMenu.resize(). + // Leaving it would interfere with the next openDropDown() call, which + // queries the natural size of the drop down. + this.menuTableNode.style.width = ""; + } + }, + + onItemClick: function(/*dijit._Widget*/ item, /*Event*/ evt){ + // summary: + // Handle clicks on an item. + // tags: + // private + // this can't be done in _onFocus since the _onFocus events occurs asynchronously + if(typeof this.isShowingNow == 'undefined'){ // non-popup menu + this._markActive(); + } + + this.focusChild(item); + + if(item.disabled || item.readOnly){ return false; } + + if(!this.multiple){ + // before calling user defined handler, close hierarchy of menus + // and restore focus to place it was when menu was opened + this.onExecute(); + } + // user defined handler for click + item.onClick(evt); + } +}); + +var formCheckedMultiSelectMenuItem = declare("dojox.form._CheckedMultiSelectMenuItem", MenuItem, { + // summary: + // A checkbox-like menu item for toggling on and off + + templateString: CheckedMultiSelectMenuItem, + + // option: dojox.form.__SelectOption + // The option that is associated with this item + option: null, + + // reference of dojox.form._CheckedMultiSelectMenu + parent: null, + + // icon of the checkbox/radio button + _iconClass: "", + + postMixInProperties: function(){ + // summary: + // Set the appropriate _subClass value - based on if we are multi- + // or single-select + if(this.parent.multiple){ + this._iconClass = "dojoxCheckedMultiSelectMenuCheckBoxItemIcon"; + this._type = {type: "checkbox"}; + }else{ + this._iconClass = ""; + this._type = {type: "hidden"}; + } + this.disabled = this.option.disabled; + this.checked = this.option.selected; + this.label = this.option.label; + this.readOnly = this.option.readOnly; + this.inherited(arguments); + }, + + onChange: function(/*Boolean*/ checked){ + // summary: + // User defined function to handle check/uncheck events + // tags: + // callback + }, + + _updateBox: function(){ + // summary: + // Called to force the box to match the state of the select + domClass.toggle(this.domNode, "dojoxCheckedMultiSelectMenuItemChecked", !!this.option.selected); + this.domNode.setAttribute("aria-checked", this.option.selected); + this.inputNode.checked = this.option.selected; + if(!this.parent.multiple){ + domClass.toggle(this.domNode, "dijitSelectSelectedOption", !!this.option.selected); + } + }, + + _onClick: function(/*Event*/ e){ + // summary: + // Clicking this item just toggles its state + // tags: + // private + if(!this.disabled && !this.readOnly){ + if(this.parent.multiple){ + this.option.selected = !this.option.selected; + this.parent.onChange(); + this.onChange(this.option.selected); + }else{ + if(!this.option.selected){ + array.forEach(this.parent.getChildren(), function(item){ + item.option.selected = false; + }); + this.option.selected = true; + this.parent.onChange(); + this.onChange(this.option.selected); + } + } + } + this.inherited(arguments); + } +}); + +var formCheckedMultiSelect = declare("dojox.form.CheckedMultiSelect", FormSelectWidget, { + // summary: + // Extends the core dijit MultiSelect to provide a "checkbox" selector + + templateString: CheckedMultiSelect, + + baseClass: "dojoxCheckedMultiSelect", + + // required: Boolean + // User is required to check at least one item. + required: false, + + // invalidMessage: String + // The message to display if value is invalid. + invalidMessage: "$_unset_$", + + // _message: String + // Currently displayed message + _message: "", + + // dropDown: Boolean + // Drop down version or not + dropDown: false, + + // labelText: String + // Label of the drop down button + labelText: "", + + // tooltipPosition: String[] + // See description of `Tooltip.defaultPosition` for details on this parameter. + tooltipPosition: [], + + setStore: function(store, selectedValue, fetchArgs){ + // summary: + // If there is any items selected in the store, the value + // of the widget will be set to the values of these items. + this.inherited(arguments); + var setSelectedItems = function(items){ + var value = array.map(items, function(item){ return item.value[0]; }); + if(value.length){ + this.set("value", value); + } + }; + this.store.fetch({query:{selected: true}, onComplete: setSelectedItems, scope: this}); + }, + + postMixInProperties: function(){ + this.inherited(arguments); + this._nlsResources = i18n.getLocalization("dojox.form", "CheckedMultiSelect", this.lang); + if(this.invalidMessage == "$_unset_$"){ this.invalidMessage = this._nlsResources.invalidMessage; } + }, + + _fillContent: function(){ + // summary: + // Set the value to be the first, or the selected index + this.inherited(arguments); + + // set value from selected option + if(this.options.length && !this.value && this.srcNodeRef){ + var si = this.srcNodeRef.selectedIndex || 0; // || 0 needed for when srcNodeRef is not a SELECT + this.value = this.options[si >= 0 ? si : 0].value; + } + if(this.dropDown){ + domClass.toggle(this.selectNode, "dojoxCheckedMultiSelectHidden"); + this.dropDownMenu = new formCheckedMultiSelectMenu({ + id: this.id + "_menu", + style: "display: none;", + multiple: this.multiple, + onChange: lang.hitch(this, "_updateSelection") + }); + } + }, + + startup: function(){ + // summary: + // Set the value to be the first, or the selected index + this.inherited(arguments); + if(this.dropDown){ + this.dropDownButton = new ComboButton({ + label: this.labelText, + dropDown: this.dropDownMenu, + baseClass: "dojoxCheckedMultiSelectButton", + maxHeight: this.maxHeight + }, this.comboButtonNode); + } + }, + + _onMouseDown: function(e){ + // summary: + // Cancels the mousedown event to prevent others from stealing + // focus + event.stop(e); + }, + + validator: function(){ + // summary: + // Overridable function used to validate that an item is selected if required = + // true. + // tags: + // protected + if(!this.required){ return true; } + return array.some(this.getOptions(), function(opt){ + return opt.selected && opt.value != null && opt.value.toString().length != 0; + }); + }, + + validate: function(isFocused){ + Tooltip.hide(this.domNode); + var isValid = this.isValid(isFocused); + if(!isValid){ this.displayMessage(this.invalidMessage); } + return isValid; + }, + + isValid: function(/*Boolean*/ isFocused){ + // summary: + // Tests if the required items are selected. + // Can override with your own routine in a subclass. + // tags: + // protected + return this.validator(); + }, + + getErrorMessage: function(/*Boolean*/ isFocused){ + // summary: + // Return an error message to show if appropriate + // tags: + // protected + return this.invalidMessage; + }, + + displayMessage: function(/*String*/ message){ + // summary: + // Overridable method to display validation errors/hints. + // By default uses a tooltip. + // tags: + // extension + Tooltip.hide(this.domNode); + if(message){ + Tooltip.show(message, this.domNode, this.tooltipPosition); + } + }, + + onAfterAddOptionItem: function(item, option){ + // summary: + // a function that can be connected to in order to receive a + // notification that an item as been added to this dijit. + }, + + _addOptionItem: function(/* dojox.form.__SelectOption */ option){ + var item; + if(this.dropDown){ + item = new formCheckedMultiSelectMenuItem({ + option: option, + parent: this.dropDownMenu + }); + this.dropDownMenu.addChild(item); + }else{ + item = new formCheckedMultiSelectItem({ + option: option, + parent: this + }); + this.wrapperDiv.appendChild(item.domNode); + } + this.onAfterAddOptionItem(item, option); + }, + + _refreshState: function(){ + // summary: + // Validate if selection changes. + this.validate(this.focused); + }, + + onChange: function(newValue){ + // summary: + // Validate if selection changes. + this._refreshState(); + }, + + reset: function(){ + // summary: Overridden so that the state will be cleared. + this.inherited(arguments); + Tooltip.hide(this.domNode); + }, + + _updateSelection: function(){ + this.inherited(arguments); + this._handleOnChange(this.value); + array.forEach(this._getChildren(), function(item){ + item._updateBox(); + }); + if(this.dropDown && this.dropDownButton){ + var i = 0, label = ""; + array.forEach(this.options, function(option){ + if(option.selected){ + i++; + label = option.label; + } + }); + this.dropDownButton.set("label", this.multiple ? + lang.replace(this._nlsResources.multiSelectLabelText, {num: i}) : + label); + } + }, + + _getChildren: function(){ + if(this.dropDown){ + return this.dropDownMenu.getChildren(); + }else{ + return array.map(this.wrapperDiv.childNodes, function(n){ + return registry.byNode(n); + }); + } + }, + + invertSelection: function(onChange){ + // summary: Invert the selection + // onChange: Boolean + // If null, onChange is not fired. + if(this.multiple){ + array.forEach(this.options, function(i){ + i.selected = !i.selected; + }); + this._updateSelection(); + } + }, + + _setDisabledAttr: function(value){ + // summary: + // Disable (or enable) all the children as well + this.inherited(arguments); + if(this.dropDown){ + this.dropDownButton.set("disabled", value); + } + array.forEach(this._getChildren(), function(node){ + if(node && node.set){ + node.set("disabled", value); + } + }); + }, + + _setReadOnlyAttr: function(value){ + // summary: + // Sets read only (or unsets) all the children as well + this.inherited(arguments); + if("readOnly" in this.attributeMap){ + this._attrToDom("readOnly", value); + } + this.readOnly = value; + array.forEach(this._getChildren(), function(node){ + if(node && node.set){ + node.set("readOnly", value); + } + }); + }, + + uninitialize: function(){ + Tooltip.hide(this.domNode); + // Make sure these children are destroyed + array.forEach(this._getChildren(), function(child){ + child.destroyRecursive(); + }); + this.inherited(arguments); + } +}); + +return formCheckedMultiSelect; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/DateTextBox.js b/js/dojo-release-1.7.2-src/dojox/form/DateTextBox.js new file mode 100644 index 0000000..b222209 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/DateTextBox.js @@ -0,0 +1,195 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/dom-style", + "dojox/widget/Calendar", + "dojox/widget/CalendarViews", + "dijit/form/_DateTimeTextBox", + "dijit/form/TextBox", + "dojo/_base/declare" +], function(kernel, lang, domStyle, Calendar, CalendarViews, _DateTimeTextBox, TextBox, declare){ +kernel.experimental("dojox.form.DateTextBox"); + + /*===== + _DateTimeTextBox = dijit.form._DateTimeTextBox; + =====*/ +var DateTextBox = declare( "dojox.form.DateTextBox", _DateTimeTextBox, + { + // summary: + // A validating, serializable, range-bound date text box with a popup calendar + + // popupClass: String + // The popup widget to use. In this case, a calendar with Day, Month and Year views. + popupClass: "dojox.widget.Calendar", + _selector: "date", + + openDropDown: function(){ + this.inherited(arguments); + domStyle.set(this.dropDown.domNode.parentNode, "position", "absolute"); + } + } +); + + +declare( "dojox.form.DayTextBox", DateTextBox, + { + // summary: + // A validating, serializable, range-bound date text box with a popup calendar that contains just months. + + // popupClass: String + // The popup widget to use. In this case, a calendar with just a Month view. + popupClass: "dojox.widget.DailyCalendar", + + parse: function(displayVal){ + return displayVal; + }, + + format: function(value){ + return value.getDate ? value.getDate() : value; + }, + validator: function(value){ + var num = Number(value); + var isInt = /(^-?\d\d*$)/.test(String(value)); + return value == "" || value == null || (isInt && num >= 1 && num <= 31); + }, + + _setValueAttr: function(value, priorityChange, formattedValue){ + if(value){ + if(value.getDate){ + value = value.getDate(); + } + } + TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue); + }, + + openDropDown: function(){ + this.inherited(arguments); + + this.dropDown.onValueSelected = lang.hitch(this, function(value){ + this.focus(); // focus the textbox before the popup closes to avoid reopening the popup + setTimeout(lang.hitch(this, "closeDropDown"), 1); // allow focus time to take + + TextBox.prototype._setValueAttr.call(this, String(value.getDate()), true, String(value.getDate())); + }); + } + } +); + +declare( "dojox.form.MonthTextBox", DateTextBox, + { + // summary: + // A validating, serializable, range-bound date text box with a popup calendar that contains only years + + // popupClass: String + // The popup widget to use. In this case, a calendar with just a Year view. + popupClass: "dojox.widget.MonthlyCalendar", + + selector: "date", + + postMixInProperties: function(){ + this.inherited(arguments); + this.constraints.datePattern = "MM"; + }, + + format: function(value){ + if(!value && value !== 0){ + return 1; + } + if(value.getMonth){ + return value.getMonth() + 1; + } + return Number(value) + 1; + }, + + parse: function(value, constraints){ + return Number(value) - 1; + }, + + serialize: function(value, constraints){ + return String(value); + }, + + validator: function(value){ + var num = Number(value); + var isInt = /(^-?\d\d*$)/.test(String(value)); + return value == "" || value == null || (isInt && num >= 1 && num <= 12); + }, + + _setValueAttr: function(value, priorityChange, formattedValue){ + if(value){ + if(value.getMonth){ + value = value.getMonth(); + } + } + TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue); + }, + + openDropDown: function(){ + this.inherited(arguments); + + this.dropDown.onValueSelected = lang.hitch(this, function(value){ + this.focus(); // focus the textbox before the popup closes to avoid reopening the popup + setTimeout(lang.hitch(this, "closeDropDown"), 1); // allow focus time to take + TextBox.prototype._setValueAttr.call(this, value, true, value); + }); + } + } +); + + +declare( "dojox.form.YearTextBox", DateTextBox, + { + // summary: + // A validating, serializable, range-bound date text box with a popup calendar that contains only years + + popupClass: "dojox.widget.YearlyCalendar", + + format: function(value){ + //console.log('Year format ' + value); + if(typeof value == "string"){ + return value; + } + else if(value.getFullYear){ + return value.getFullYear(); + } + return value; + }, + + validator: function(value){ + return value == "" || value == null || /(^-?\d\d*$)/.test(String(value)); + }, + + _setValueAttr: function(value, priorityChange, formattedValue){ + if(value){ + if(value.getFullYear){ + value = value.getFullYear(); + } + } + TextBox.prototype._setValueAttr.call(this, value, priorityChange, formattedValue); + }, + + openDropDown: function(){ + this.inherited(arguments); + //console.log('yearly openDropDown and value = ' + this.get('value')); + + this.dropDown.onValueSelected = lang.hitch(this, function(value){ + this.focus(); // focus the textbox before the popup closes to avoid reopening the popup + setTimeout(lang.hitch(this, "closeDropDown"), 1); // allow focus time to take + TextBox.prototype._setValueAttr.call(this,value, true, value); + }); + }, + + parse: function(/*String*/value, /*dojo.date.locale.__FormatOptions*/constraints){ + return value || (this._isEmpty(value) ? null : undefined); // Date + }, + + filter: function(val){ + if(val && val.getFullYear){ + return val.getFullYear().toString(); + } + return this.inherited(arguments); + } + } +); +return DateTextBox; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/DropDownSelect.js b/js/dojo-release-1.7.2-src/dojox/form/DropDownSelect.js new file mode 100644 index 0000000..a4a3107 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/DropDownSelect.js @@ -0,0 +1,10 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dijit/form/Select" +], function(kernel, lang, Select){ + kernel.deprecated("dojox.form.DropDownSelect", "Use Select instead", "2.0"); + + lang.setObject("dojox.form.DropDownSelect", Select); + return Select; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/DropDownStack.js b/js/dojo-release-1.7.2-src/dojox/form/DropDownStack.js new file mode 100644 index 0000000..dabf2e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/DropDownStack.js @@ -0,0 +1,14 @@ +define([ + "dijit/form/Select", + "./_SelectStackMixin", + "dojo/_base/declare" +], function(Select, _SelectStackMixin, declare){ + /*===== + Select = dijit.form.Select; + _SelectStackMixin = dojox.form._SelectStackMixin; + =====*/ + return declare("dojox.form.DropDownStack", [ Select, _SelectStackMixin ], { + // summary: A dropdown-based select stack. + + }); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/FileInput.js b/js/dojo-release-1.7.2-src/dojox/form/FileInput.js new file mode 100644 index 0000000..eabecf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/FileInput.js @@ -0,0 +1,92 @@ +define([ + "dojo/_base/declare", + "dojo/_base/kernel", + "dojo/_base/fx", + "dojo/dom-attr", + "dojo/dom-class", + "dojo/text!./resources/FileInput.html", + "dijit/form/_FormWidget", + "dijit/_Templated" +], +function(declare, kernel, fx, domAttr, domClass, template, FormWidget, Templated){ +kernel.experimental("dojox.form.FileInput"); + + /*===== + FormWidget = dijit.form._FormWidget; + =====*/ +declare("dojox.form.FileInput", FormWidget, + { + // summary: A styled input type="file" + // + // description: A input type="file" form widget, with a button for uploading to be styled via css, + // a cancel button to clear selection, and FormWidget mixin to provide standard dijit.form.Form + // support (FIXME: maybe not fully implemented) + + // label: String + // the title text of the "Browse" button + label: "Browse ...", + + // cancelText: String + // the title of the "Cancel" button + cancelText: "Cancel", + + // name: String + // ugh, this should be pulled from this.domNode + name: "uploadFile", + + templateString: template, + + startup: function(){ + // summary: listen for changes on our real file input + this._listener = this.connect(this.fileInput,"onchange","_matchValue"); + this._keyListener = this.connect(this.fileInput,"onkeyup","_matchValue"); + }, + + //get rid of the this.connect in _FormWidget.postCreate to allow IE to show + //the file picker dialog properly + postCreate: function(){}, + + _matchValue: function(){ + // summary: set the content of the upper input based on the semi-hidden file input + this.inputNode.value = this.fileInput.value; + if(this.inputNode.value){ + this.cancelNode.style.visibility = "visible"; + fx.fadeIn({ node: this.cancelNode, duration:275 }).play(); + } + }, + + setLabel: function(/* String */label,/* String? */cssClass){ + // summary: method to allow use to change button label + this.titleNode.innerHTML = label; + }, + + reset: function(/* Event */e){ + // summary: on click of cancel button, since we can't clear the input because of + // security reasons, we destroy it, and add a new one in it's place. + this.disconnect(this._listener); + this.disconnect(this._keyListener); + if(this.fileInput){ + this.domNode.removeChild(this.fileInput); + } + fx.fadeOut({ node: this.cancelNode, duration:275 }).play(); + + // should we use cloneNode()? can we? + this.fileInput = document.createElement('input'); + // domAttr.set(this.fileInput,{ + // "type":"file", "id":this.id, "name": this.name + //}); + this.fileInput.setAttribute("type","file"); + this.fileInput.setAttribute("id", this.id); + this.fileInput.setAttribute("name", this.name); + domClass.add(this.fileInput,"dijitFileInputReal"); + this.domNode.appendChild(this.fileInput); + + this._keyListener = this.connect(this.fileInput, "onkeyup", "_matchValue"); + this._listener = this.connect(this.fileInput, "onchange", "_matchValue"); + this.inputNode.value = ""; + } + +}); + +return dojox.form.FileInput; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/FileInputAuto.js b/js/dojo-release-1.7.2-src/dojox/form/FileInputAuto.js new file mode 100644 index 0000000..923de2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/FileInputAuto.js @@ -0,0 +1,221 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/fx", + "dojo/_base/window", + "dojo/dom-style", + "dojo/_base/sniff", + "dojo/text!./resources/FileInputAuto.html", + "dojox/form/FileInput", + "dojo/io/iframe" +], +function(declare, lang, fx, win, domStyle, has, template, FileInput, ioIframe){ + + /*===== + FileInput = dojox.form.FileInput; + =====*/ +var FileInputAuto = declare("dojox.form.FileInputAuto", FileInput, + { + // summary: An extension on FileInput providing background upload progress + // + // description: An extended version of FileInput - when the user focuses away from the input + // the selected file is posted via ioIframe to the url. example implementation + // comes with PHP solution for handling upload, and returning required data. + // + // notes: the return data from the io.iframe is used to populate the input element with + // data regarding the results. it will be a JSON object, like: + // + // results = { size: "1024", filename: "file.txt" } + // + // all the parameters allowed to FileInput apply + + // url: String + // the URL where our background FileUpload will be sent + url: "", + + // blurDelay: Integer + // time in ms before an un-focused widget will wait before uploading the file to the url="" specified + // default: 2 seconds + blurDelay: 2000, + + // duration: Integer + // The time in ms to use as the generic timing mechanism for the animations + // set to 1 or 0 for "immediate respose" + duration: 500, + + // uploadMessage: String + // + // FIXME: i18n somehow? + uploadMessage: "Uploading ...", + + // triggerEvent: String + // Event which triggers the upload. Defaults to onblur, sending the file selected + // 'blurDelay' milliseconds after losing focus. Set to "onchange" with a low blurDelay + // to send files immediately after uploading. + triggerEvent: "onblur", + + _sent: false, + + // small template changes, new attachpoint: overlay + templateString: template, + + onBeforeSend: function(){ + // summary: Called immediately before a FileInput sends it's file via io.iframe.send. + // The return of this function is passed as the `content` member in the io.iframe IOArgs + // object. + return {}; + }, + + startup: function(){ + // summary: add our extra blur listeners + this._blurListener = this.connect(this.fileInput, this.triggerEvent, "_onBlur"); + this._focusListener = this.connect(this.fileInput, "onfocus", "_onFocus"); + this.inherited(arguments); + }, + + _onFocus: function(){ + // summary: clear the upload timer + if(this._blurTimer){ clearTimeout(this._blurTimer); } + }, + + _onBlur: function(){ + // summary: start the upload timer + if(this._blurTimer){ clearTimeout(this._blurTimer); } + if(!this._sent){ + this._blurTimer = setTimeout(lang.hitch(this,"_sendFile"),this.blurDelay); + } + }, + + setMessage: function(/*String*/title){ + // summary: set the text of the progressbar + + // innerHTML throws errors in IE! so use DOM manipulation instead + //this.overlay.innerHTML = title; + this.overlay.removeChild(this.overlay.firstChild); + this.overlay.appendChild(document.createTextNode(title)); + }, + + _sendFile: function(/* Event */e){ + // summary: triggers the chain of events needed to upload a file in the background. + if(this._sent || this._sending || !this.fileInput.value){ return; } + + this._sending = true; + + domStyle.set(this.fakeNodeHolder,"display","none"); + domStyle.set(this.overlay,{ + opacity:0, + display:"block" + }); + + this.setMessage(this.uploadMessage); + + fx.fadeIn({ node: this.overlay, duration:this.duration }).play(); + + var _newForm; + if(has('ie') < 9 || (has('ie') && has('quirks'))){ + // just to reiterate, IE is a steaming pile of code. + _newForm = document.createElement(''); + _newForm.encoding = "multipart/form-data"; + + }else{ + // this is how all other sane browsers do it + _newForm = document.createElement('form'); + _newForm.setAttribute("enctype","multipart/form-data"); + } + _newForm.appendChild(this.fileInput); + win.body().appendChild(_newForm); + + ioIframe.send({ + url: this.url, + form: _newForm, + handleAs: "json", + handle: lang.hitch(this,"_handleSend"), + content: this.onBeforeSend() + }); + }, + + _handleSend: function(data,ioArgs){ + // summary: The callback to toggle the progressbar, and fire the user-defined callback + + // innerHTML throws errors in IE! so use DOM manipulation instead + this.overlay.removeChild(this.overlay.firstChild); + + this._sent = true; + this._sending = false; + domStyle.set(this.overlay,{ + opacity:0, + border:"none", + background:"none" + }); + + this.overlay.style.backgroundImage = "none"; + this.fileInput.style.display = "none"; + this.fakeNodeHolder.style.display = "none"; + fx.fadeIn({ node:this.overlay, duration:this.duration }).play(250); + + this.disconnect(this._blurListener); + this.disconnect(this._focusListener); + + //remove the form used to send the request + win.body().removeChild(ioArgs.args.form); + this.fileInput = null; + + this.onComplete(data,ioArgs,this); + }, + + reset: function(e){ + // summary: accomodate our extra focusListeners + if(this._blurTimer){ clearTimeout(this._blurTimer); } + + this.disconnect(this._blurListener); + this.disconnect(this._focusListener); + + this.overlay.style.display = "none"; + this.fakeNodeHolder.style.display = ""; + this.inherited(arguments); + this._sent = false; + this._sending = false; + this._blurListener = this.connect(this.fileInput, this.triggerEvent,"_onBlur"); + this._focusListener = this.connect(this.fileInput,"onfocus","_onFocus"); + }, + + onComplete: function(data,ioArgs,widgetRef){ + // summary: stub function fired when an upload has finished. + // data: the raw data found in the first [TEXTAREA] tag of the post url + // ioArgs: the Deferred data being passed from the handle: callback + // widgetRef: this widget pointer, so you can set this.overlay to a completed/error message easily + } +}); + +declare("dojox.form.FileInputBlind", FileInputAuto, + { + // summary: An extended version of dojox.form.FileInputAuto + // that does not display an input node, but rather only a button + // and otherwise behaves just like FileInputAuto + + startup: function(){ + // summary: hide our fileInput input field + this.inherited(arguments); + this._off = domStyle.get(this.inputNode,"width"); + this.inputNode.style.display = "none"; + this._fixPosition(); + }, + + _fixPosition: function(){ + // summary: in this case, set the button under where the visible button is + if(has('ie')){ + domStyle.set(this.fileInput,"width","1px"); + }else{ + domStyle.set(this.fileInput,"left","-"+(this._off)+"px"); + } + }, + + reset: function(e){ + // summary: onclick, we need to reposition our newly created input type="file" + this.inherited(arguments); + this._fixPosition(); + } +}); + +return FileInputAuto; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/FileInputBlind.js b/js/dojo-release-1.7.2-src/dojox/form/FileInputBlind.js new file mode 100644 index 0000000..fd814cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/FileInputBlind.js @@ -0,0 +1,9 @@ +define([ + "dojo/_base/lang", + "dojox/form/FileInputAuto" +], function(lang, FileInputAuto){ +// FIXME: break out code in 2.0. Leave this stub in place until then. Leave FileInputBlind code in Auto.js for +// backwards compatibility. + lang.setObject("dojox.form.FileInputBlind", FileInputAuto); + return FileInputAuto; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/FilePickerTextBox.js b/js/dojo-release-1.7.2-src/dojox/form/FilePickerTextBox.js new file mode 100644 index 0000000..7c7fec2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/FilePickerTextBox.js @@ -0,0 +1,328 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/event", + "dojo/window", + "dijit/focus", + "dijit/registry", + "dijit/form/_TextBoxMixin", + "dijit/form/ValidationTextBox", + "dijit/_HasDropDown", + "dojox/widget/FilePicker", + "dojo/text!./resources/FilePickerTextBox.html", + "dojo/_base/declare", + "dojo/keys" // keys +], function(lang, array, event, windowUtils, focus, registry, _TextBoxMixin, ValidationTextBox, _HasDropDown, FilePicker, template, declare, keys){ + + /*===== + ValidationTextBox = dijit.form.ValidationTextBox; + _HasDropDown = dijit._HasDropDown; + =====*/ +return declare( "dojox.form.FilePickerTextBox", [ValidationTextBox, _HasDropDown], + { + // summary: + // A validating text box tied to a file picker popup + + baseClass: "dojoxFilePickerTextBox", + + templateString: template, + + // searchDelay: Integer + // Delay in milliseconds between when user types something and we start + // searching based on that value + searchDelay: 500, + + // valueItem: item + // The item, in our store, of the directory relating to our value + valueItem: null, + + // numPanes: number + // The number of panes to display in our box (if we don't have any + // minPaneWidth specified by our constraints) + numPanes: 2.25, + + postMixInProperties: function(){ + this.inherited(arguments); + this.dropDown = new FilePicker(this.constraints); + }, + + postCreate: function(){ + this.inherited(arguments); + // Make our connections we want + this.connect(this.dropDown, "onChange", this._onWidgetChange); + this.connect(this.focusNode, "onblur", "_focusBlur"); + this.connect(this.focusNode, "onfocus", "_focusFocus"); + this.connect(this.focusNode, "ondblclick", function(){ + _TextBoxMixin.selectInputText(this.focusNode); + }); + }, + + _setValueAttr: function(/*string*/value, priorityChange, fromWidget){ + // summary: sets the value of this widget + if(!this._searchInProgress){ + this.inherited(arguments); + value = value || ""; + var tVal = this.dropDown.get("pathValue") || ""; + if(value !== tVal){ + this._skip = true; + var fx = lang.hitch(this, "_setBlurValue"); + this.dropDown._setPathValueAttr(value, !fromWidget, + this._settingBlurValue ? fx : null); + } + } + }, + + _onWidgetChange: function(/*item*/item){ + // summary: called when the path gets changed in the dropdown + if(!item && this.focusNode.value){ + this._hasValidPath = false; + this.focusNode.value = ""; + }else{ + this.valueItem = item; + var value = this.dropDown._getPathValueAttr(item); + if(value){ + this._hasValidPath = true; + } + if(!this._skip){ + this._setValueAttr(value, undefined, true); + } + delete this._skip; + } + this.validate(); + }, + + startup: function(){ + if(!this.dropDown._started){ + this.dropDown.startup(); + } + this.inherited(arguments); + }, + + openDropDown: function(){ + // set width to 0 so that it will resize automatically + this.dropDown.domNode.style.width="0px"; + if(!("minPaneWidth" in (this.constraints||{}))){ + this.dropDown.set("minPaneWidth", (this.domNode.offsetWidth / this.numPanes)); + } + this.inherited(arguments); + }, + + toggleDropDown: function(){ + this.inherited(arguments); + // Make sure our display is up-to-date with our value + if(this._opened){ + this.dropDown.set("pathValue", this.get("value")); + } + }, + + _focusBlur: function(/*Event*/ e){ + // summary: called when the focus node gets blurred + if(e.explicitOriginalTarget == this.focusNode && !this._allowBlur){ + window.setTimeout(lang.hitch(this, function(){ + if(!this._allowBlur){ + this.focus(); + } + }), 1); + }else if(this._menuFocus){ + this.dropDown._updateClass(this._menuFocus, "Item", {"Hover": false}); + delete this._menuFocus; + } + }, + + _focusFocus: function(/*Event*/ e){ + // summary: called when the focus node gets focus + if(this._menuFocus){ + this.dropDown._updateClass(this._menuFocus, "Item", {"Hover": false}); + } + delete this._menuFocus; + var focusNode = focus.curNode; + if(focusNode){ + focusNode = registry.byNode(focusNode); + if(focusNode){ + this._menuFocus = focusNode.domNode; + } + } + if(this._menuFocus){ + this.dropDown._updateClass(this._menuFocus, "Item", {"Hover": true}); + } + delete this._allowBlur; + }, + + _onBlur: function(){ + // summary: called when focus is shifted away from this widget + this._allowBlur = true; + delete this.dropDown._savedFocus; + this.inherited(arguments); + }, + + _setBlurValue: function(){ + // summary: sets the value of the widget once focus has left + if(this.dropDown && !this._settingBlurValue){ + this._settingBlurValue = true; + this.set("value", this.focusNode.value); + }else{ + delete this._settingBlurValue; + this.inherited(arguments); + } + }, + + parse: function(/* String */ value, /* Object */ constraints){ + // summary: + // Function to convert a formatted string to a value - we use + // it to verify that it *really* is a valid value + if(this._hasValidPath || this._hasSelection){ + return value; + } + var dd = this.dropDown, topDir = dd.topDir, sep = dd.pathSeparator; + var ddVal = dd.get("pathValue"); + var norm = function(v){ + if(topDir.length && v.indexOf(topDir) === 0){ + v = v.substring(topDir.length); + } + if(sep && v[v.length - 1] == sep){ + v = v.substring(0, v.length - 1); + } + return v; + }; + ddVal = norm(ddVal); + var val = norm(value); + if(val == ddVal){ + return value; + } + return undefined; + }, + + _startSearchFromInput: function(){ + // summary: kicks off a search based off the current text value of the widget + var dd = this.dropDown, fn = this.focusNode; + var val = fn.value, oVal = val, topDir = dd.topDir; + if(this._hasSelection){ + _TextBoxMixin.selectInputText(fn, oVal.length); + } + this._hasSelection = false; + if(topDir.length && val.indexOf(topDir) === 0){ + val = val.substring(topDir.length); + } + var dirs = val.split(dd.pathSeparator); + var setFromChain = lang.hitch(this, function(idx){ + var dir = dirs[idx]; + var child = dd.getChildren()[idx]; + var conn; + this._searchInProgress = true; + var _cleanup = lang.hitch(this, function(){ + delete this._searchInProgress; + }); + if((dir || child) && !this._opened){ + this.toggleDropDown(); + } + if(dir && child){ + var fx = lang.hitch(this, function(){ + if(conn){ + this.disconnect(conn); + } + delete conn; + var children = child._menu.getChildren(); + var exact = array.filter(children, function(i){ + return i.label == dir; + })[0]; + var first = array.filter(children, function(i){ + return (i.label.indexOf(dir) === 0); + })[0]; + if(exact && + ((dirs.length > idx + 1 && exact.children) || + (!exact.children))){ + idx++; + child._menu.onItemClick(exact, {type: "internal", + stopPropagation: function(){}, + preventDefault: function(){}}); + if(dirs[idx]){ + setFromChain(idx); + }else{ + _cleanup(); + } + }else{ + child._setSelected(null); + if(first && dirs.length === idx + 1){ + dd._setInProgress = true; + dd._removeAfter(child); + delete dd._setInProgress; + var targetString = first.label; + if(first.children){ + targetString += dd.pathSeparator; + } + targetString = targetString.substring(dir.length); + window.setTimeout(function(){ + windowUtils.scrollIntoView(first.domNode); + }, 1); + fn.value = oVal + targetString; + _TextBoxMixin.selectInputText(fn, oVal.length); + this._hasSelection = true; + try{first.focusNode.focus();}catch(e){} + }else{ + if(this._menuFocus){ + this.dropDown._updateClass(this._menuFocus, "Item", {"Hover": false, "Focus": false}); + } + delete this._menuFocus; + } + _cleanup(); + } + }); + if(!child.isLoaded){ + conn = this.connect(child, "onLoad", fx); + }else{ + fx(); + } + }else{ + if(child){ + child._setSelected(null); + dd._setInProgress = true; + dd._removeAfter(child); + delete dd._setInProgress; + } + _cleanup(); + } + }); + setFromChain(0); + }, + + _onKey: function(/*Event*/ e){ + // summary: callback when the user presses a key on menu popup node + if(this.disabled || this.readOnly){ return; } + var c = e.charOrCode; + if(c==keys.DOWN_ARROW){ + this._allowBlur = true; + } + if(c==keys.ENTER && this._opened){ + this.dropDown.onExecute(); + _TextBoxMixin.selectInputText(this.focusNode, this.focusNode.value.length); + this._hasSelection = false; + event.stop(e); + return; + } + if((c==keys.RIGHT_ARROW || c==keys.LEFT_ARROW || c==keys.TAB) && this._hasSelection){ + this._startSearchFromInput(); + event.stop(e); + return; + } + this.inherited(arguments); + var doSearch = false; + if((c==keys.BACKSPACE || c==keys.DELETE) && this._hasSelection){ + this._hasSelection = false; + }else if(c==keys.BACKSPACE || c==keys.DELETE || c==" "){ + doSearch = true; + }else{ + doSearch = e.keyChar !== ""; + } + if(this._searchTimer){ + window.clearTimeout(this._searchTimer); + } + delete this._searchTimer; + if(doSearch){ + this._hasValidPath = false; + this._hasSelection = false; + this._searchTimer = window.setTimeout(lang.hitch(this, "_startSearchFromInput"), this.searchDelay + 1); + } + } + } +); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/FileUploader.js b/js/dojo-release-1.7.2-src/dojox/form/FileUploader.js new file mode 100644 index 0000000..c75e5ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/FileUploader.js @@ -0,0 +1,1444 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/window", + "dojo/_base/sniff", + "dojo/query", + "dojo/dom-style", + "dojo/dom-geometry", + "dojo/dom-attr", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-form", + "dojo/_base/config", + "dijit/_base/manager", + "dojo/io/iframe", + "dojo/_base/Color", + "dojo/_base/unload", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_Contained", + "dojox/embed/Flash", + "dojox/embed/flashVars", + "dojox/html/styles" +],function(kernel, declare, lang, array, connect, win, has, query, domStyle, domGeometry, domAttr, domClass, domConstruct, domForm, config, manager, ioIframe, Color, unloadUtils, Widget, TemplatedMixin, Contained, embedFlash, embedFlashVars, htmlStyles){ + +kernel.deprecated("dojox.form.FileUploader", "Use dojox.form.Uploader", "2.0"); + + // Usage Notes: + // To center text vertically, use vertical-align:middle; + // which emulates a boxModel button. Using line-height to center text + // can cause height problems in IE6 + + + /*===== + Widget = dijit._Widget; + TemplatedMixin = dijit._TemplatedMixin; + Contained = dijit._Contained; + =====*/ +declare("dojox.form.FileUploader", [Widget, TemplatedMixin, Contained], { + // version: + // 1.5 (deprecated) + // summary: + // Handles File Uploading to a server (PHP script included for testing) + // + // FileUploader is now a WIDGET. You do not have to pass a button + // in. Passing a button is still supported until version 1.5 to maintain + // backwards compatibility, but it is not reccomended. Just create your + // uploader like any other widget. + // + // description: + // If the correct version of Flash Player is available (> 9.0) , a SWF + // is used. If Flash Player is not installed or is outdated, a typical + // html fileInput is used. This process can be overridden with + // force:"flash" or force:"html". + // + // FileUploader works with Flash 10. + // + // The button styles are now recreated in Flash, so there is no longer + // using an invisible Flash movie with wmode=transparent. This way the Flash button + // is actually placed inline with the DOM, not floating above it and constantly + // resetting its position. The "Windows Firefox clickable bug" should be fixed (and + // hopefully some Linux problems). + // + // The HTML button is created in a new way and it is now inline as is the + // FLash button. Styling is much easier and more versatile. + // + // Dependencies: + // FileUploader no longer uses FileInput.css. It now uses FileUploader.css + // See requires for JavaScript dependencies. + // + // NEW FEATURES - + // There are a ton of features and fixes in this version. + // Disabled: Can be toggled with widget.attr("disable", true|false) + // Submit: A convenience method has been added for if the uploader is in a form. + // Instead of submitting the form, call uploader.submit(theForm), and the + // Uploader will handle all of the form values and post the data. + // Selected List: If passing the ID of a container, the Uploaders will populate it + // with the selected files. + // Deleting Files: You can now delete pending files. + // Progress Built in: showProgress:true will change the button to a progress + // bar on upload. + // Progress Attach: Passing progressWidgetId will tell the Uploader of a progress + // widget. If the Progress widget is initially hidden, it will change to + // visible and then restored after upload. + // A11Y: The Flash button can be accessed with the TAB key. (The HTML cannot due + // to browser limtations) + // Deferred Uploading: (Flash only) throttles the upload to one file at a time + // + // + // CDN USERS - + // FileUpload now works with the CDN but with limitations. The SWF must + // be from the same domain as the HTML page. 'swfPath' has been exposed + // so that you may link to that file (could of course be the same SWF in + // dojox resource folder). The SWF will *NOT* work from the + // CDN server. This would require a special XML file that would allow + // access to your server, and the logistics to that is impossible. + // + // LIMITATIONS + // - This is not designed to be a part of a form, it contains its own. (See submit()) + // - Currently does not in a Dialog box or a Tab where it is not initially visible, + // - The default style inherits font sizes - but a parent container should have a font size + // set somewhere of the results could be inconsistent. + // + // OPERA USERS - + // It works better than the 1.3 version. fileInputs apperantly can't have opacity + // set to zero. The Flash uploader works but files are auto-uploaded. Must be a + // flashVar problem. + // + // Safari Bug note: + // The bug is in the way Safari handles the connection: + // https://bugs.webkit.org/show_bug.cgi?id=5760 + // I added this to the virtual host in the Apache conf file, and now it + // works like a charm: + // BrowserMatch Safari nokeepalive + // + swfPath: config.uploaderPath || require.toUrl("dojox/form/resources/fileuploader.swf"), + + + templateString:'
                                  ', + + // uploadUrl: String + // The url targeted for upload. An absolute URL is preferred. Relative URLs are + // changed to absolute. + uploadUrl: "", + // + // isDebug: Boolean + // If true, outputs traces from the SWF to console. What exactly gets passed + // is very relative, and depends upon what traces have been left in the DEFT SWF. + isDebug:false, + // + // devMode: Boolean. + // Re-implemented. devMode increases the logging, adding style tracing from the SWF. + devMode:false, + // + // id: String + // The object id, just like any other widget in Dojo. However, this id + // is also used as a reference for the SWF + // id: "", + // + // baseClass: String + // The name of the class that will style the button in a "normal" state. + // If baseClass is not defined, 'class' will be used. + // NOTE: By default the uploader will be styled like a dijit buttons and + // adhere to the the themes. Tundra, Soria, and Nihilo are supported. + // You can cascade the existing style by using 'class' or 'style'. If you + // overwrite baseClass, you should overwrite the remaing state classes + // that follow) as well. + baseClass:"dojoxUploaderNorm", + // + // hoverClass: String + // The name of the class that will style the button in a "hover" state. A specific + // class should be made to do this. Do not rely on a target like button:hover{...} + hoverClass:"dojoxUploaderHover", + // + // activeClass: String + // The name of the class that will style the button in a "press" state. A specific + // class should be made to do this. Do not rely on a target like button:active{...} + activeClass:"dojoxUploaderActive", + // + // disabledClass: String + // The name of the class that will style the button when its disabled. + disabledClass:"dojoxUploaderDisabled", + // + // force: String + // Use "flash" to always use Flash (and hopefully force the user to download the plugin + // if they don't have it). Use "html" to always use the HTML uploader. An empty string + // (default) will check for the right version of Flash and use HTML if not available. + force:"", + // + // uploaderType: [readonly] String + // Internal. What type of uploader is being used: "flash" or "html" + uploaderType:"", + // + // flashObject: [readonly] dojox.embed.Flash + // The object that creates the SWF embed object. Mostly Internal. + flashObject: null, + // + // flashMovie: [readonly] Function + // The SWF. Mostly Internal. + flashMovie: null, + // + // insideNode: [readonly] HTMLNode + // The div that holds the SWF and form/fileInput + insideNode: null, + // + // deferredUploading: Number (1 - X) + // (Flash only) throttles the upload to a certain amount of files at a time. + // By default, Flash uploads file one at a time to the server, but in parallel. + // Firefox will try to queue all files at once, leading to problems. Set this + // to the amount to upload in parallel at a time. + // Generally, 1 should work fine, but you can experiment with queuing more than + // one at a time. + // This is of course ignored if selectMultipleFiles equals false. + deferredUploading:1, + // + // fileListId: String + // The id of a dom node to be used as a container for the pending file list. + fileListId:"", + // + // uploadOnChange: Boolean + // If true, uploads imediately after a file has been selected. If false, + // waits for upload() to be called. + uploadOnChange: false, + // + // selectMultipleFiles: Boolean + // If true and flash mode, multiple files may be selected from the dialog. + // If html mode, files are not uploaded until upload() is called. The references + // to each file is incremented:uploadedfile0, uploadedfile1, uploadedfile2... etc. + selectMultipleFiles: true, + // + // htmlFieldName: String + // The name of the field of the fileInput that the server is expecting + htmlFieldName:"uploadedfile", + // + // flashFieldName: String + // The name of the field of the flash uploaded files that the server is expecting + flashFieldName:"flashUploadFiles", + // + // fileMask: Array[ Array[Description, FileTypes], Array[...]...] + // (an array, or an array of arrays) + // Restrict file selection to certain file types + // Empty array defaults to "All Files" + // example: + // fileMask = ["Images", "*.jpg;*.jpeg;*.gif;*.png"] + // or + // fileMask = [ + // ["Jpeg File", "*.jpg;*.jpeg"], + // ["GIF File", "*.gif"], + // ["PNG File", "*.png"], + // ["All Images", "*.jpg;*.jpeg;*.gif;*.png"], + // ] + // NOTE: MacType is not supported, as it does not work very well. + // fileMask will work on a Mac, but differently than + // Windows. + fileMask: null, + // + // minFlashVersion: Number + // The minimum of version of Flash player to target. 0 would always install Flash, 100 + // would never install it. The Flash Player has supported multiple uploads since + // version 8, so it could go as low as that safely. + minFlashVersion:9, + // + // tabIndex: Number|String + // The tab order in the DOM. Only supported by Flash. HTML Uploaders have security + // protection to prevent you from tabbing to the uploader. Stupid. + tabIndex:-1, + // + // showProgress: Boolean + // If true, the button changes to a progress bar during upload. + showProgress:false, + // + // progressMessage: String + // The message shown while the button is changed to a progress bar + progressMessage:"Loading", + // + // progressBackgroundUrl: String|Uri + // The background image to use for the button-progress + progressBackgroundUrl:require.toUrl("dijit/themes/tundra/images/buttonActive.png"), + // + // progressBackgroundColor: String|Number + // The background color to use for the button-progress + progressBackgroundColor:"#ededed", + // + // progressWidgetId:String + // The widget id of a Dijit Progress bar. The Uploader will bind to it and update it + // automatically. + progressWidgetId:"", + // + // skipServerCheck: Boolean + // If true, will not verify that the server was sent the correct format. + // This can be safely set to true. The purpose of the server side check + // is mainly to show the dev if they've implemented the different returns + // correctly. + skipServerCheck:false, + // + // serverTimeout:Number (milliseconds) + // The amount of time given to the uploaded file + // to wait for a server response. After this amount + // of time, the onComplete is fired but with a 'server timeout' + // error in the returned item. + serverTimeout: 5000, + + + log: function(){ + // summary: + // Due to the excessive logging necessary to make this code happen, + // It's easier to turn it on and off here in one place. + // Also helpful if there are multiple uploaders on one page. + if(this.isDebug){ + console["log"](Array.prototype.slice.call(arguments).join(" ")); + } + }, + + constructor: function(){ + this._subs = []; + }, + + postMixInProperties: function(){ + // internal stuff: + this.fileList = []; + this._cons = []; + this.fileMask = this.fileMask || []; + this.fileInputs = []; + this.fileCount = 0; + this.flashReady = false; + this._disabled = false; + this.force = this.force.toLowerCase(); // Pete FTW. + this.uploaderType = ((embedFlash.available >= this.minFlashVersion || this.force=="flash") && this.force != "html") ? "flash" : "html"; + this.deferredUploading = this.deferredUploading===true ? 1 : this.deferredUploading; + + this._refNode = this.srcNodeRef; + + this.getButtonStyle(); + }, + + startup: function(){ + }, + + postCreate: function(){ + this.inherited(arguments); + + // internal stuff: + this.setButtonStyle(); + var createMethod; + if(this.uploaderType == "flash"){ + createMethod = "createFlashUploader"; + }else{ + this.uploaderType = "html"; + createMethod = "createHtmlUploader"; + + } + + this[createMethod](); + + if(this.fileListId){ + this.connect(dom.byId(this.fileListId), "click", function(evt){ + var p = evt.target.parentNode.parentNode.parentNode; // in a table + if(p.id && p.id.indexOf("file_")>-1){ + this.removeFile(p.id.split("file_")[1]); + } + }); + } + + // cleaning up solves memory leak issues in the HTML version + unloadUtils.addOnUnload(this, this.destroy); + }, + + getHiddenNode: function(/*DomNode*/ node){ + // summary: + // Internal. + // If a parent node is styled as display:none, + // returns that node. This node will be temporarilly + // changed to display:block. Note if the node is in + // a widget that has an onShow event, this is + // overridden. + // + if(!node){ return null; } + var hidden = null; + var p = node.parentNode; + while(p && p.tagName.toLowerCase() != "body"){ + var d = domStyle.get(p, "display"); + if(d == "none"){ + hidden = p; + break; + } + p = p.parentNode; + } + return hidden; + }, + + getButtonStyle: function(){ + // summary: + // Internal. + // Get necessary style information from srcRefNode and + // assigned styles + // + + + // TODO: + // To call this from postCreate.... + // could do the style stuff initially, but if hidden they will be bad sizes + // could then redo the sizes + // alt is to create a genuine button and copy THAT instead of how doing now + + var refNode = this.srcNodeRef; + this._hiddenNode = this.getHiddenNode(refNode); + if(this._hiddenNode){ + domStyle.set(this._hiddenNode, "display", "block"); + } + + if(!refNode && this.button && this.button.domNode){ + // backwards compat for a Dijit button + var isDijitButton = true; + var cls = this.button.domNode.className + " dijitButtonNode"; + var txt = this.getText(query(".dijitButtonText", this.button.domNode)[0]); + var domTxt = ''; + refNode = domConstruct.place(domTxt, this.button.domNode, "after"); /// Pete doesn't like this? + this.srcNodeRef = refNode; + this.button.destroy(); + + this.baseClass = "dijitButton"; + this.hoverClass = "dijitButtonHover"; + this.pressClass = "dijitButtonActive"; + this.disabledClass = "dijitButtonDisabled"; + + }else if(!this.srcNodeRef && this.button){ + refNode = this.button; + } + + if(domAttr.get(refNode, "class")){ + this.baseClass += " " + domAttr.get(refNode, "class"); + } + domAttr.set(refNode, "class", this.baseClass); + + + this.norm = this.getStyle(refNode); + this.width = this.norm.w; + this.height = this.norm.h; + + if(this.uploaderType == "flash"){ + + this.over = this.getTempNodeStyle(refNode, this.baseClass+" "+this.hoverClass, isDijitButton); + this.down = this.getTempNodeStyle(refNode, this.baseClass+" "+this.activeClass, isDijitButton); + this.dsbl = this.getTempNodeStyle(refNode, this.baseClass+" "+this.disabledClass, isDijitButton); + + this.fhtml = { + cn:this.getText(refNode), + nr:this.norm, + ov:this.over, + dn:this.down, + ds:this.dsbl + }; + }else{ + this.fhtml = { + cn:this.getText(refNode), + nr:this.norm + } + if(this.norm.va == "middle"){ + this.norm.lh = this.norm.h; + } + } + + if(this.devMode){ + this.log("classes - base:", this.baseClass, " hover:", this.hoverClass, "active:", this.activeClass); + this.log("fhtml:", this.fhtml) + this.log("norm:", this.norm) + this.log("over:", this.over) + this.log("down:", this.down) + + } + }, + + setButtonStyle: function(){ + // summary: + // Internal. + // Set up internal dom nodes for button construction. + // + domStyle.set(this.domNode, { + width:this.fhtml.nr.w+"px", + height:(this.fhtml.nr.h)+"px", + padding:"0px", + lineHeight: "normal", + position:"relative" + }); + if(this.uploaderType == "html" && this.norm.va == "middle"){ + domStyle.set(this.domNode, "lineHeight", this.norm.lh + "px"); + } + if(this.showProgress){ + this.progTextNode.innerHTML = this.progressMessage; + domStyle.set(this.progTextNode, { + width:this.fhtml.nr.w+"px", + height:(this.fhtml.nr.h+0)+"px", + padding:"0px", + margin:"0px", + left:"0px", + lineHeight:(this.fhtml.nr.h+0)+"px", + position:"absolute" + }); + domStyle.set(this.progNode, { + width:this.fhtml.nr.w+"px", + height:(this.fhtml.nr.h+0)+"px", + padding:"0px", + margin:"0px", + left:"0px", + position:"absolute", + display:"none", + backgroundImage:"url("+this.progressBackgroundUrl+")", + backgroundPosition:"bottom", + backgroundRepeat:"repeat-x", + backgroundColor:this.progressBackgroundColor + }); + }else{ + domConstruct.destroy(this.progNode); + } + domStyle.set(this.insideNode,{ + position:"absolute", + top:"0px", + left:"0px", + display:"" + }); + domClass.add(this.domNode, this.srcNodeRef.className); + if(this.fhtml.nr.d.indexOf("inline")>-1){ + domClass.add(this.domNode, "dijitInline"); + } + + try{ + this.insideNode.innerHTML = this.fhtml.cn; + }catch(e){ + // You have got to be kidding me. IE does us he favor of checking that + // we aren't inserting the improper type of content with innerHTML into + // an inline element. Alert us with an "Unknown Runtime Error". You can't + // MAKE this stuff up. + // + if(this.uploaderType == "flash"){ + this.insideNode = this.insideNode.parentNode.removeChild(this.insideNode); + win.body().appendChild(this.insideNode); + this.insideNode.innerHTML = this.fhtml.cn; + var c = connect.connect(this, "onReady", this, function(){ connect.disconnect(c); + this.insideNode = this.insideNode.parentNode.removeChild(this.insideNode); + this.domNode.appendChild(this.insideNode); + }); + }else{ + this.insideNode.appendChild(document.createTextNode(this.fhtml.cn)); + } + } + if(this._hiddenNode){ + domStyle.set(this._hiddenNode, "display", "none"); + } + }, + + + /************************* + * Public Events * + *************************/ + + // The following events are inherited from _Widget and still may be connected: + // onClick + // onMouseUp + // onMouseDown + // onMouseOver + // onMouseOut + + onChange: function(dataArray){ + // summary: + // stub to connect + // Fires when files are selected + // Event is an array of last files selected + }, + + onProgress: function(dataArray){ + // summary: + // Stub to connect + // Fires as progress returns from SWF + // Event is an array of all files uploading + // Can be connected to for HTML uploader, + // but will not return anything. + }, + + onComplete: function(dataArray){ + // summary: + // stub to connect + // Fires when all files have uploaded + // Event is an array of all files + }, + + onCancel: function(){ + // summary: + // Stub to connect + // Fires when dialog box has been closed + // without a file selection + }, + + onError: function(/* Object or String */evtObject){ + // summary: + // Fires on errors + // + //FIXME: Unsure of a standard form for receiving errors + }, + + onReady: function(/* dojox.form.FileUploader */ uploader){ + // summary: + // Stub - Fired when embedFlash has created the + // Flash object, but it has not necessarilly finished + // downloading, and is ready to be communicated with. + }, + + onLoad: function(/* dojox.form.FileUploader */ uploader){ + // summary: + // Stub - SWF has been downloaded 100%. + }, + + /************************* + * Public Methods * + *************************/ + submit: function(/* form node ? */form){ + // summary: + // If FileUploader is in a form, and other data should be sent + // along with the files, use this instead of form submit. + // + var data = form ? domForm.toObject(form) : null; + this.upload(data); + return false; // Boolean + }, + upload: function(/*Object ? */data){ + // summary: + // When called, begins file upload + // data: Object + // postData to be sent to server + // + if(!this.fileList.length){ + return false; + } + if(!this.uploadUrl){ + console.warn("uploadUrl not provided. Aborting."); + return false; + } + if(!this.showProgress){ + this.set("disabled", true); + } + + if(this.progressWidgetId){ + + var node = manager.byId(this.progressWidgetId).domNode; + if(domStyle.get(node, "display") == "none"){ + this.restoreProgDisplay = "none"; + domStyle.set(node, "display", "block"); + } + if(domStyle.get(node, "visibility") == "hidden"){ + this.restoreProgDisplay = "hidden"; + domStyle.set(node, "visibility", "visible"); + } + } + + if(data && !data.target){ + this.postData = data; + } + this.log("upload type:", this.uploaderType, " - postData:", this.postData); + + for(var i = 0; i < this.fileList.length; i++){ + var f = this.fileList[i]; + f.bytesLoaded = 0; + f.bytesTotal = f.size || 100000; + f.percent = 0; + } + if(this.uploaderType == "flash"){ + this.uploadFlash(); + }else{ + this.uploadHTML(); + } + // prevent form submit + return false; + }, + removeFile: function(/*String*/name, /*Boolean*/noListEdit){ + // summary: + // Removes a file from the pending file list. + // Removes pending data from the Flash movie + // and fileInputes from the HTML uploader. + // If a file container node is bound, the file + // will also be removed. + // name:String + // The name of the file to be removed. Typically the file name, + // such as: picture01.png + // noListEdit:Boolean + // Internal. If true don't remove files from list. + // + var i; + for(i = 0; i < this.fileList.length; i++){ + if(this.fileList[i].name == name){ + if(!noListEdit){ // if onComplete, don't do this + this.fileList.splice(i,1); + } + break; + } + } + if(this.uploaderType == "flash"){ + this.flashMovie.removeFile(name); + }else if(!noListEdit){ + domConstruct.destroy(this.fileInputs[i]); + this.fileInputs.splice(i,1); + this._renumberInputs(); + } + if(this.fileListId){ + domConstruct.destroy("file_"+name); + } + }, + + destroy: function(){ + // summary: + // Destroys uploader button + if(this.uploaderType == "flash" && !this.flashMovie){ + this._cons.push(connect.connect(this, "onLoad", this, "destroy")); + return; + } + array.forEach(this._subs, connect.unsubscribe, dojo); + array.forEach(this._cons, connect.disconnect, dojo); + if(this.scrollConnect){ + connect.disconnect(this.scrollConnect); + } + if(this.uploaderType == "flash"){ + this.flashObject.destroy(); + delete this.flashObject; + }else{ + domConstruct.destroy(this._fileInput); + domConstruct.destroy(this._formNode); + } + this.inherited(arguments); + }, + + /************************* + * Private Events * + *************************/ + _displayProgress: function(/*Boolean or Number */display){ + // summary: + // Shows and updates the built-in progress bar. + // + if(display === true){ + if(this.uploaderType == "flash"){ + domStyle.set(this.insideNode,"top", "-2500px"); + }else{ + domStyle.set(this.insideNode,"display", "none"); + } + domStyle.set(this.progNode,"display",""); + }else if(display === false){ + domStyle.set(this.insideNode,{ + display: "", + top: "0" + }); + domStyle.set(this.progNode,"display","none"); + }else{ + var w = display * this.fhtml.nr.w; + domStyle.set(this.progNode, "width", w + "px"); + } + }, + _animateProgress: function(){ + // summary: + // Internal. Animated the built-in progress bar + this._displayProgress(true); + var _uploadDone = false; + var c = connect.connect(this, "_complete", function(){ + connect.disconnect(c); + _uploadDone = true; + }); + var w = 0; + var interval = setInterval(lang.hitch(this, function(){ + w+=5; + if(w>this.fhtml.nr.w){ + w = 0; + _uploadDone = true; + } + this._displayProgress(w/this.fhtml.nr.w); + + if(_uploadDone){ + clearInterval(interval); + setTimeout(lang.hitch(this, function(){ + this._displayProgress(false); + }), 500); + } + + }),50); + }, + + _error: function(evt){ + //var type = evtObject.type ? evtObject.type.toUpperCase() : "ERROR"; + //var msg = evtObject.msg ? evtObject.msg : evtObject; + if(typeof(evt)=="string"){ + evt = new Error(evt); + } + this.onError(evt); + }, + + _addToFileList: function(){ + // summary: + // Internal only. If there is a file list, adds a file to it. + // If you need to use a function such as this, connect to + // onChange and update outside of this widget. + // + if(this.fileListId){ + var str = ''; + array.forEach(this.fileList, function(d){ + // have to use tables because of IE. Grumble. + str += '
                                  '+d.name+''+(d.size ? Math.ceil(d.size*.001) +"kb" : "")+'
                                  ' + }, this); + dom.byId(this.fileListId).innerHTML = str; + } + }, + + _change: function(dataArray){ + // summary: + // Internal. Updates uploader selection + if(has("ie")){ + //IE6 uses the entire path in the name, which isn't terrible, but much different + // than everything else + array.forEach(dataArray, function(f){ + f.name = f.name.split("\\")[f.name.split("\\").length-1]; + }); + } + if(this.selectMultipleFiles){ + this.fileList = this.fileList.concat(dataArray); + }else{ + if(this.fileList[0]){ + this.removeFile(this.fileList[0].name, true); + } + this.fileList = dataArray; + } + this._addToFileList(); + this.onChange(dataArray); + if(this.uploadOnChange){ + if(this.uploaderType == "html"){ + this._buildFileInput(); + } + this.upload(); + }else if(this.uploaderType == "html" && this.selectMultipleFiles){ + this._buildFileInput(); + this._connectInput(); + } + }, + + _complete: function(dataArray){ + // summary: + // Internal. Handles tasks after files have finished uploading + // + dataArray = lang.isArray(dataArray) ? dataArray : [dataArray]; + + // Yes. Yes I do have to do three loops here. ugh. + // + // Check if one of the files had an error + array.forEach(dataArray, function(f){ + if(f.ERROR){ this._error(f.ERROR); } + }, this); + + // Have to be set them all too 100%, because + // onProgress does not always fire + array.forEach(this.fileList, function(f){ + f.bytesLoaded = 1; + f.bytesTotal = 1; + f.percent = 100; + this._progress(f); + }, this); + // we're done. remove files. + array.forEach(this.fileList, function(f){ + this.removeFile(f.name, true); + }, this); + + this.onComplete(dataArray); + + this.fileList = []; + this._resetHTML(); + this.set("disabled", false); + + + if(this.restoreProgDisplay){ + // using timeout so prog shows on screen for at least a short time + setTimeout(lang.hitch(this, function(){ + domStyle.set(manager.byId(this.progressWidgetId).domNode, + this.restoreProgDisplay == "none" ? "display" : "visibility", + this.restoreProgDisplay + ); + }), 500); + } + + }, + + _progress: function(dataObject){ + // summary: + // Internal. Calculate progress + var total = 0; + var loaded = 0; + for(var i = 0; i < this.fileList.length; i++){ + var f = this.fileList[i]; + if(f.name == dataObject.name){ + f.bytesLoaded = dataObject.bytesLoaded; + f.bytesTotal = dataObject.bytesTotal; + f.percent = Math.ceil(f.bytesLoaded / f.bytesTotal * 100); + this.log(f.name, "percent:", f.percent) + } + loaded += Math.ceil(.001 * f.bytesLoaded); + total += Math.ceil(.001 * f.bytesTotal); + } + var percent = Math.ceil(loaded / total * 100); + if(this.progressWidgetId){ + manager.byId(this.progressWidgetId).update({progress:percent+"%"}); + } + if(this.showProgress){ + this._displayProgress(percent * .01); + } + this.onProgress(this.fileList); + + }, + _getDisabledAttr: function(){ + // summary: + // Internal. To get disabled use: widget.get("disabled"); + return this._disabled; + }, + + _setDisabledAttr: function(disabled){ + // summary: + // Internal. To set disabled use: widget.set("disabled", true | false); + if(this._disabled == disabled){ return; } + + if(this.uploaderType == "flash"){ + if(!this.flashReady){ + var _fc = connect.connect(this, "onLoad", this, function(){ + connect.disconnect(_fc); + this._setDisabledAttr(disabled); + }); + return; + } + this._disabled = disabled; + this.flashMovie.doDisable(disabled); + }else{ + this._disabled = disabled; + domStyle.set(this._fileInput, "display", this._disabled ? "none" : ""); + } + domClass.toggle(this.domNode, this.disabledClass, disabled); + }, + + _onFlashBlur: function(){ + // summary: + // Internal. Detects when Flash movies reliquishes focus. + // We have to find all the tabIndexes in the doc and figure + // out whom to give focus to next. + this.flashMovie.blur(); + if(!this.nextFocusObject && this.tabIndex){ + var nodes = query("[tabIndex]"); + for(var i = 0; i= Number(this.tabIndex)+1){ + this.nextFocusObject = nodes[i]; + break; + } + } + } + this.nextFocusObject.focus(); + }, + _disconnect: function(){ + // summary: + // Internal. Disconnects fileInput in favor of new one. + array.forEach(this._cons, connect.disconnect, dojo); + }, + + /************************* + * HTML * + *************************/ + uploadHTML: function(){ + // summary: + // Internal. You could use this, but you should use upload() or submit(); + // which can also handle the post data. + // + // NOTE on deferredUploading: + // This is not enabled for HTML. Workaround would be to force + // singleFile uploads. + // TODO: + // Investigate removing fileInputs and resending form + // multiple times adding each fileInput + // + if(this.selectMultipleFiles){ + domConstruct.destroy(this._fileInput); + } + this._setHtmlPostData(); + if(this.showProgress){ + this._animateProgress(); + } + var dfd = ioIframe.send({ + url: this.uploadUrl.toString(), + form: this._formNode, + handleAs: "json", + error: lang.hitch(this, function(err){ + this._error("HTML Upload Error:" + err.message); + }), + load: lang.hitch(this, function(data, ioArgs, widgetRef){ + this._complete(data); + }) + }); + }, + + createHtmlUploader: function(){ + // summary: + // Internal. Fires of methods to build HTML Uploader. + this._buildForm(); + this._setFormStyle(); + this._buildFileInput(); + this._connectInput(); + this._styleContent(); + domStyle.set(this.insideNode, "visibility", "visible"); + this.onReady(); + }, + + _connectInput: function(){ + // summary: + // Internal. HTML Uploader connections. These get disconnected + // after upload or if multi upload. + this._disconnect(); + this._cons.push(connect.connect(this._fileInput, "mouseover", this, function(evt){ + domClass.add(this.domNode, this.hoverClass); + this.onMouseOver(evt); + })); + this._cons.push(connect.connect(this._fileInput, "mouseout", this, function(evt){ + setTimeout(lang.hitch(this, function(){ + domClass.remove(this.domNode, this.activeClass); + domClass.remove(this.domNode, this.hoverClass); + this.onMouseOut(evt); + this._checkHtmlCancel("off"); + }), 0); + })); + this._cons.push(connect.connect(this._fileInput, "mousedown", this, function(evt){ + domClass.add(this.domNode, this.activeClass); + domClass.remove(this.domNode, this.hoverClass); + this.onMouseDown(evt); + })); + this._cons.push(connect.connect(this._fileInput, "mouseup", this, function(evt){ + domClass.remove(this.domNode, this.activeClass); + this.onMouseUp(evt); + this.onClick(evt); + this._checkHtmlCancel("up"); + })); + this._cons.push(connect.connect(this._fileInput, "change", this, function(){ + this._checkHtmlCancel("change"); + this._change([{ + name: this._fileInput.value, + type: "", + size: 0 + }]); + })); + if(this.tabIndex>=0){ + domAttr.set(this.domNode, "tabIndex", this.tabIndex); + } + }, + + _checkHtmlCancel: function(mouseType){ + // summary: + // Internal. Check if the dialog was opened and canceled without file selection. + if(mouseType == "change"){ + this.dialogIsOpen = false; + } + if(mouseType == "up"){ + this.dialogIsOpen = true; + } + if(mouseType == "off"){ + if(this.dialogIsOpen){ + this.onCancel(); + } + this.dialogIsOpen = false; + } + }, + + _styleContent: function(){ + // summary: + // Internal.Apply style to node + var o = this.fhtml.nr; + + domStyle.set(this.insideNode, { + width:o.w+"px", + height:o.va == "middle"?o.h+"px":"auto", + textAlign:o.ta, + paddingTop:o.p[0]+"px", + paddingRight:o.p[1]+"px", + paddingBottom:o.p[2]+"px", + paddingLeft:o.p[3]+"px" + }); + + try{ + domStyle.set(this.insideNode, "lineHeight", "inherit"); + }catch(e){ + // There are certain cases where IE refuses to set lineHeight. + // For the life of me I cannot figure out the combination of + // styles that IE doesn't like. Steaming... Pile... + } + + }, + _resetHTML: function(){ + // summary: + // Internal. After upload, this is called to clear the form and build a new + // fileInput. + if(this.uploaderType == "html" && this._formNode){ + this.fileInputs = []; + query("*", this._formNode).forEach(function(n){ + domConstruct.destroy(n); + }); + this.fileCount = 0; + this._buildFileInput(); + this._connectInput(); + } + }, + _buildForm: function(){ + // summary: + // Build the form that holds the fileInput + // + + if(this._formNode){ return; } + + if(has("ie") < 9 || (has("ie") && has("quirks"))){ + this._formNode = document.createElement(''); + this._formNode.encoding = "multipart/form-data"; + this._formNode.id = manager.getUniqueId("FileUploaderForm"); // needed for dynamic style + this.domNode.appendChild(this._formNode); + }else{ + this._formNode = domConstruct.create('form', { + enctype:"multipart/form-data", + method:"post", + id:manager.getUniqueId("FileUploaderForm") + }, this.domNode); + } + }, + + _buildFileInput: function(){ + // summary: + // Build the fileInput field + // + if(this._fileInput){ + this._disconnect(); + // FIXME: + // Just hiding it which works, but we lose + // reference to it and can't remove it from + // the upload list. + this._fileInput.id = this._fileInput.id + this.fileCount; + domStyle.set(this._fileInput, "display", "none"); + } + this._fileInput = document.createElement('input'); + this.fileInputs.push(this._fileInput); + // server will need to know this variable: + var nm = this.htmlFieldName; + var _id = this.id; + if(this.selectMultipleFiles){ + nm += this.fileCount; + _id += this.fileCount; + this.fileCount++; + } + + domAttr.set(this._fileInput, { + id:this.id, + name:nm, + type:"file" + }); + + domClass.add(this._fileInput, "dijitFileInputReal"); + this._formNode.appendChild(this._fileInput); + var real = domGeometry.getMarginBox(this._fileInput); + domStyle.set(this._fileInput, { + position:"relative", + left:(this.fhtml.nr.w - real.w) + "px", + opacity:0 + }); + }, + + _renumberInputs: function(){ + if(!this.selectMultipleFiles){ return; } + var nm; + this.fileCount = 0; + array.forEach(this.fileInputs, function(inp){ + nm = this.htmlFieldName + this.fileCount; + this.fileCount++; + domAttr.set(inp, "name", nm); + }, this); + }, + + _setFormStyle: function(){ + // summary: + // Apply a dynamic style to the form and input + var size = Math.max(2, Math.max(Math.ceil(this.fhtml.nr.w / 60), Math.ceil(this.fhtml.nr.h / 15))); + // Now create a style associated with the form ID + htmlStyles.insertCssRule("#" + this._formNode.id + " input", "font-size:" + size + "em"); + domStyle.set(this.domNode, { + overflow:"hidden", + position:"relative" + }); + domStyle.set(this.insideNode, "position", "absolute"); + }, + + _setHtmlPostData: function(){ + // summary: + // Internal.Apply postData to hidden fields in form + if(this.postData){ + for(var nm in this.postData){ + domConstruct.create("input", { + type: "hidden", + name: nm, + value: this.postData[nm] + }, this._formNode); + } + } + }, + + /************************* + * FLASH * + *************************/ + uploadFlash: function(){ + // summary: + // Internal. You should use upload() or submit(); + try{ + if(this.showProgress){ + this._displayProgress(true); + var c = connect.connect(this, "_complete", this, function(){ + connect.disconnect(c); + this._displayProgress(false); + }); + } + + var o = {}; + for(var nm in this.postData){ + o[nm] = this.postData[nm]; + } + this.flashMovie.doUpload(o); + + }catch(err){ + this._error("FileUploader - Sorry, the SWF failed to initialize." + err); + } + }, + + createFlashUploader: function(){ + // summary: + // Internal. Creates Flash Uploader + this.uploadUrl = this.uploadUrl.toString(); + if(this.uploadUrl){ + if(this.uploadUrl.toLowerCase().indexOf("http")<0 && this.uploadUrl.indexOf("/")!=0){ + // Appears to be a relative path. Attempt to + // convert it to absolute, so it will better + //target the SWF. + // + var loc = window.location.href.split("/"); + loc.pop(); + loc = loc.join("/")+"/"; + this.uploadUrl = loc+this.uploadUrl; + this.log("SWF Fixed - Relative loc:", loc, " abs loc:", this.uploadUrl); + }else{ + this.log("SWF URL unmodified:", this.uploadUrl) + } + }else{ + console.warn("Warning: no uploadUrl provided."); + } + + var w = this.fhtml.nr.w; + var h = this.fhtml.nr.h; + + var args = { + expressInstall:true, + path: this.swfPath.uri || this.swfPath, + width: w, + height: h, + allowScriptAccess:"always", + allowNetworking:"all", + vars: { + uploadDataFieldName: this.flashFieldName, + uploadUrl: this.uploadUrl, + uploadOnSelect: this.uploadOnChange, + deferredUploading:this.deferredUploading || 0, + selectMultipleFiles: this.selectMultipleFiles, + id: this.id, + isDebug: this.isDebug, + devMode:this.devMode, + flashButton:embedFlashVars.serialize("fh", this.fhtml), + fileMask:embedFlashVars.serialize("fm", this.fileMask), + noReturnCheck: this.skipServerCheck, + serverTimeout:this.serverTimeout + }, + params: { + scale:"noscale", + wmode:"opaque", + allowScriptAccess:"always", + allowNetworking:"all" + } + + }; + + this.flashObject = new embedFlash(args, this.insideNode); + this.flashObject.onError = lang.hitch(function(msg){ + this._error("Flash Error: " + msg); + }); + this.flashObject.onReady = lang.hitch(this, function(){ + domStyle.set(this.insideNode, "visibility", "visible"); + this.log("FileUploader flash object ready"); + this.onReady(this); + }); + this.flashObject.onLoad = lang.hitch(this, function(mov){ + this.flashMovie = mov; + this.flashReady = true; + + this.onLoad(this); + }); + this._connectFlash(); + + }, + + _connectFlash: function(){ + // summary: + // Subscribing to published topics coming from the + // Flash uploader. + // description: + // Sacrificing some readbilty for compactness. this.id + // will be on the beginning of the topic, so more than + // one uploader can be on a page and can have unique calls. + // + this._doSub("/filesSelected", "_change"); + this._doSub("/filesUploaded", "_complete"); + this._doSub("/filesProgress", "_progress"); + this._doSub("/filesError", "_error"); + this._doSub("/filesCanceled", "onCancel"); + this._doSub("/stageBlur", "_onFlashBlur"); + this._doSub("/up", "onMouseUp"); + this._doSub("/down", "onMouseDown"); + this._doSub("/over", "onMouseOver"); + this._doSub("/out", "onMouseOut"); + + this.connect(this.domNode, "focus", function(){ + // TODO: some kind of indicator that the Flash button + // is in focus + this.flashMovie.focus(); + this.flashMovie.doFocus(); + }); + if(this.tabIndex>=0){ + domAttr.set(this.domNode, "tabIndex", this.tabIndex); + } + }, + + _doSub: function(subStr, funcStr){ + // summary: + // Internal. Shortcut for subscribes to Flash movie + this._subs.push(connect.subscribe(this.id + subStr, this, funcStr)); + }, + + /************************************* + * DOM INSPECTION METHODS * + *************************************/ + + urlencode: function(url){ + // Using symbols in place of URL chars that will break in Flash serialization. + if(!url || url == "none"){ + return false; + } + return url.replace(/:/g,"||").replace(/\./g,"^^").replace("url(", "").replace(")","").replace(/'/g,"").replace(/"/g,""); + }, + + isButton: function(node){ + // testing if button for styling purposes + var tn = node.tagName.toLowerCase(); + return tn == "button" || tn == "input"; + }, + + getTextStyle: function(node){ + // getting font info + var o = {}; + o.ff = domStyle.get(node, "fontFamily"); + if(o.ff){ + o.ff = o.ff.replace(", ", ","); // remove spaces. IE in Flash no likee + o.ff = o.ff.replace(/\"|\'/g, ""); + o.ff = o.ff == "sans-serif" ? "Arial" : o.ff; // Flash doesn't know what sans-serif is + o.fw = domStyle.get(node, "fontWeight"); + o.fi = domStyle.get(node, "fontStyle"); + o.fs = parseInt(domStyle.get(node, "fontSize"), 10); + if(domStyle.get(node, "fontSize").indexOf("%") > -1){ + // IE doesn't convert % to px. For god sakes. + var n = node; + while(n.tagName){ + if(domStyle.get(n, "fontSize").indexOf("%") == -1){ + o.fs = parseInt(domStyle.get(n, "fontSize"), 10); + break; + } + if(n.tagName.toLowerCase()=="body"){ + // if everyting is %, the the font size is 16px * the % + o.fs = 16 * .01 * parseInt(domStyle.get(n, "fontSize"), 10); + } + n = n.parentNode; + } + } + o.fc = new Color(domStyle.get(node, "color")).toHex(); + o.fc = parseInt(o.fc.substring(1,Infinity),16); + } + o.lh = domStyle.get(node, "lineHeight"); + o.ta = domStyle.get(node, "textAlign"); + o.ta = o.ta == "start" || !o.ta ? "left" : o.ta; + o.va = this.isButton(node) ? "middle" : o.lh == o.h ? "middle" : domStyle.get(node, "verticalAlign"); + return o; + }, + + getText: function(node){ + // Get the text of the button. It's possible to use HTML in the Flash Button, + // but the results are not spectacular. + var cn = lang.trim(node.innerHTML); + if(cn.indexOf("<") >- 1){ + cn = escape(cn); + } + return cn; + }, + + getStyle: function(node){ + // getting the style of a node. Using very abbreviated characters which the + // Flash movie understands. + var o = {}; + var dim = domGeometry.getContentBox(node); + var pad = domGeometry.getPadExtents(node); + o.p = [pad.t, pad.w-pad.l, pad.h-pad.t, pad.l]; + o.w = dim.w + pad.w; + o.h = dim.h + pad.h; + o.d = domStyle.get(node, "display"); + var clr = new Color(domStyle.get(node, "backgroundColor")); + // if no color, Safari sets #000000 and alpha=0 since we don't support alpha, + // it makes black - make it white + o.bc = clr.a == 0 ? "#ffffff" : clr.toHex(); + o.bc = parseInt(o.bc.substring(1,Infinity),16); + var url = this.urlencode(domStyle.get(node, "backgroundImage")); + if(url){ + o.bi = { + url:url, + rp:domStyle.get(node, "backgroundRepeat"), + pos: escape(domStyle.get(node, "backgroundPosition")) + }; + if(!o.bi.pos){ + // IE does Xpx and Ypx, not "X% Y%" + var rx = domStyle.get(node, "backgroundPositionX"); + var ry = domStyle.get(node, "backgroundPositionY"); + rx = (rx == "left") ? "0%" : (rx == "right") ? "100%" : rx; + ry = (ry == "top") ? "0%" : (ry == "bottom") ? "100%" : ry; + o.bi.pos = escape(rx+" "+ry); + } + } + return lang.mixin(o, this.getTextStyle(node)); + }, + + getTempNodeStyle: function(node, _class, isDijitButton){ + // This sets up a temp node to get the style of the hover, active, and disabled states + var temp, style; + if(isDijitButton){ + // backwards compat until dojo 1.5 + temp = domConstruct.place("<"+node.tagName+">"+node.innerHTML+"", node.parentNode); //+" "+_class+" + var first = temp.firstChild; + domClass.add(first, node.className); + domClass.add(temp, _class); + style = this.getStyle(first); + }else{ + temp = domConstruct.place("<"+node.tagName+">"+node.innerHTML+"", node.parentNode); + domClass.add(temp, node.className); + domClass.add(temp, _class); + temp.id = node.id; + style = this.getStyle(temp); + } + // dev note: comment out this line to see what the + // button states look like to the FileUploader + domConstruct.destroy(temp); + return style; + } +}); +return dojox.form.FileUploader; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/ListInput.js b/js/dojo-release-1.7.2-src/dojox/form/ListInput.js new file mode 100755 index 0000000..a9c8332 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/ListInput.js @@ -0,0 +1,1016 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/json", + "dojo/_base/fx", + "dojo/_base/window", + "dojo/_base/connect", + "dojo/dom-class", + "dojo/dom-style", + "dojo/dom-construct", + "dojo/dom-geometry", + "dojo/keys", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/form/_FormValueWidget", + "dijit/form/ValidationTextBox", + "dijit/InlineEditBox", + "dojo/i18n!dijit/nls/common", + "dojo/_base/declare" +], function(kernel, lang, array, jsonUtil, fx, win, connect, domClass, domStyle, domConstruct, domGeometry, keys, Widget, TemplatedMixin, FormValueWidget, ValidationTextBox, InlineEditBox, i18nCommon, declare){ +kernel.experimental("dojox.form.ListInput"); + + /*===== + Widget = dijit._Widget; + Templated = dijit._TemplatedMixin; + FormValueWidget = dijit.form._FormValueWidget; + ValidationTextBox = dijit.form.ValidationTextBox; + =====*/ +var ListInput = declare("dojox.form.ListInput", [FormValueWidget], + { + // summary: + // An automatic list maker + // description: + // you can add value to list with add method. + // you can only remove by clicking close button + + constructor: function(){ + this._items = []; + + + if(!lang.isArray(this.delimiter)){ + this.delimiter=[this.delimiter]; + } + var r="("+this.delimiter.join("|")+")?"; + this.regExp="^"+this.regExp+r+"$"; + }, + + // inputClass: String + // Class which will be used to create the input box. You can implements yours. + // It must be a widget, focusNode or domNode must have "onkeydown" event + // It must have .attr("value") to get value + // It also must impement an (or more) handler for the "onChange" method + inputClass: "dojox.form._ListInputInputBox", + + // inputHandler: String || Array + // The widget will connect on all handler to check input value + // You can use comma separated list + inputHandler: "onChange", + + // inputProperties: String || Object + // Properties used to create input box + // If String, it must be a valid JSON + inputProperties: { + minWidth:50 + }, + + // submitOnlyValidValue: Boolean + // If true, only valid value will be submited with form + submitOnlyValidValue:true, + + // useOnBlur: Boolean + // If true, onBlur event do a validate (like pressing ENTER) + useOnBlur:true, + + // readOnlyInput: Boolean + // if false, the list will be editable + // Can only be set when instanciate + readOnlyInput: false, + + // maxItems: Int + // Specify max item the list can have + // null = infiny + maxItems: null, + + // showCloseButtonWhenValid: Boolean + // if true, a close button will be added on valid item + showCloseButtonWhenValid: true, + + // showCloseButtonWhenInvalid: Boolean + // if true, a close button will be added on invalid item + showCloseButtonWhenInvalid: true, + + // regExp: [extension protected] String + // regular expression string used to validate the input + // Do not specify both regExp and regExpGen + regExp: ".*", //"[a-zA-Z.-_]+@[a-zA-Z.-_]+.[a-zA-Z]+", + + // delimiter: String || Array + // delimiter for the string. Every match will be splitted + // The string can contain only one delimiter + delimiter: ",", + + // constraints: ValidationTextBox.__Constraints + // user-defined object needed to pass parameters to the validator functions + constraints: {}, + + baseClass:"dojoxListInput", + + type: "select", + + value: "", + + templateString: "
                                  ", + + // useAnim: Boolean + // If true, then item will use an anime to show hide itself + useAnim: true, + + // duration: Integer + // Animation duration + duration: 500, + + // easingIn: function + // function used to easing on fadeIn end + easingIn: null, + + // easingOut: function + // function used to easing on fadeOut end + easingOut: null, + + // readOnlyItem: Boolean + // If true, items can be edited + // Can only be set when instanciate + readOnlyItem: false, + + // useArrowForEdit: Boolean + // If true, arraow left and right can be used for editing + // Can only be set when instanciate + useArrowForEdit: true, + + // _items: Array + // Array of widget. + // Contain all reference to _ListInputInputItem + _items: null, + + // _lastAddedItem: Widget + // Contain a reference to the last created item + _lastAddedItem: null, + + // _currentItem: Widget + // Widget currently in edition + _currentItem: null, + + // _input: Widget + // Widget use for input box + _input: null, + + // _count: Int + // Count items + _count: 0, + + postCreate: function(){ + // summary: + // If closeButton is used, add a class + this.inherited(arguments); + this._createInputBox(); + }, + + _setReadOnlyInputAttr: function(/*Boolean*/value){ + // summary: + // Change status and if needed, create the inputbox + // tags: + // private + if(!this._started){ return this._createInputBox(); } + this.readOnlyInput = value; + this._createInputBox(); + }, + + _setReadOnlyItemAttr: function(/*Boolean*/value){ + // summary: + // set read only items + // tags: + // private + if(!this._started){ return; } + for(var i in this._items){ + this._items[i].set("readOnlyItem", value); + } + }, + + _createInputBox: function(){ + // summary: + // Create the input box + // tags: + // private + domClass.toggle(this._inputNode, "dijitHidden", this.readOnlyInput); + if(this.readOnlyInput){ return; } + if(this._input){ return; } + + if(this.inputHandler === null){ + console.warn("you must add some handler to connect to input field"); + return false; + } + if(lang.isString(this.inputHandler)){ + this.inputHandler = this.inputHandler.split(","); + } + if(lang.isString(this.inputProperties)){ + this.inputProperties = jsonUtil.fromJson(this.inputProperties); + } + + + var input = lang.getObject(this.inputClass, false); + + this.inputProperties.regExp = this.regExpGen(this.constraints); + + this._input = new input(this.inputProperties); + this._input.startup(); + this._inputNode.appendChild(this._input.domNode); + array.forEach(this.inputHandler, function(handler){ + this.connect(this._input,lang.trim(handler),"_onHandler"); + },this); + + this.connect(this._input, "onKeyDown", "_inputOnKeyDown"); + this.connect(this._input, "onBlur", "_inputOnBlur"); + }, + + compare: function(/*Array*/val1,/*Array*/val2){ + // summary: + // Compare 2 values (as returned by attr('value') for this widget). + // tags: + // protected + val1 = val1.join(","); + val2 = val2.join(","); + if(val1 > val2){ + return 1; + }else if(val1 < val2){ + return -1; + }else{ + return 0; + } + }, + + add: function(/*String || Array*/values){ + // summary: + // Create new list element + if(this._count>=this.maxItems && this.maxItems !== null){return;} + this._lastValueReported = this._getValues(); + + if(!lang.isArray(values)){ + values = [values]; + } + + for(var i in values){ + var value=values[i]; + if(value === "" || typeof value != "string"){ + continue; + } + this._count++; + var re = new RegExp(this.regExpGen(this.constraints)); + + this._lastAddedItem = new _ListInputInputItem({ + "index" : this._items.length, + readOnlyItem : this.readOnlyItem, + value : value, + regExp: this.regExpGen(this.constraints) + }); + this._lastAddedItem.startup(); + + this._testItem(this._lastAddedItem,value); + + this._lastAddedItem.onClose = lang.hitch(this,"_onItemClose",this._lastAddedItem); + this._lastAddedItem.onChange = lang.hitch(this,"_onItemChange",this._lastAddedItem); + this._lastAddedItem.onEdit = lang.hitch(this,"_onItemEdit",this._lastAddedItem); + this._lastAddedItem.onKeyDown = lang.hitch(this,"_onItemKeyDown",this._lastAddedItem); + + if(this.useAnim){ + domStyle.set(this._lastAddedItem.domNode, {opacity:0, display:""}); + } + + this._placeItem(this._lastAddedItem.domNode); + + if(this.useAnim){ + var anim = fx.fadeIn({ + node : this._lastAddedItem.domNode, + duration : this.duration, + easing : this.easingIn + }).play(); + } + + this._items[this._lastAddedItem.index] = this._lastAddedItem; + + if(this._onChangeActive && this.intermediateChanges){ this.onChange(value); } + + if(this._count>=this.maxItems && this.maxItems !== null){ + break; + } + } + + this._updateValues(); + if(this._lastValueReported.length==0){ + this._lastValueReported = this.value; + } + + if(!this.readOnlyInput){ + this._input.set("value", ""); + } + + if(this._onChangeActive){ this.onChange(this.value); } + + this._setReadOnlyWhenMaxItemsReached(); + }, + + _setReadOnlyWhenMaxItemsReached: function(){ + // summary: + // set input to readonly when max is reached + // tags: + // private + this.set("readOnlyInput",(this._count>=this.maxItems && this.maxItems !== null)); + }, + + _setSelectNode: function(){ + // summary: + // put all item in the select (for a submit) + // tags: + // private + this._selectNode.options.length = 0; + + var values=this.submitOnlyValidValue?this.get("MatchedValue"):this.value; + + if(!lang.isArray(values)){ + return; + } + array.forEach(values,function(item){ + this._selectNode.options[this._selectNode.options.length]=new Option(item,item,true,true); + },this); + }, + + _placeItem: function(/*domNode*/node){ + // summary: + // Place item in the list + // tags: + // private + domConstruct.place(node,this._inputNode,"before"); + }, + + _getCursorPos: function(/*domNode*/node){ + // summary: + // get current cursor pos + // tags: + // private + if(typeof node.selectionStart != 'undefined'){ + return node.selectionStart; + } + + // IE Support + try{ node.focus(); }catch(e){} + var range = node.createTextRange(); + range.moveToBookmark(win.doc.selection.createRange().getBookmark()); + range.moveEnd('character', node.value.length); + try{ + return node.value.length - range.text.length; + }finally{ range=null; } + }, + + _onItemClose: function(/*dijit._Widget*/ item){ + // summary: + // Destroy a list element when close button is clicked + // tags: + // private + if(this.disabled){ return; } + + if(this.useAnim){ + var anim = fx.fadeOut({ + node : item.domNode, + duration : this.duration, + easing : this.easingOut, + onEnd : lang.hitch(this, "_destroyItem", item) + }).play(); + }else{ + this._destroyItem(item); + } + }, + + _onItemKeyDown: function(/*dijit._Widget*/ item, /*Event*/ e){ + // summary: + // Call when item get a keypress + // tags: + // private + if(this.readOnlyItem || !this.useArrowForEdit){ return; } + + if(e.keyCode == keys.LEFT_ARROW && this._getCursorPos(e.target)==0){ + this._editBefore(item); + }else if(e.keyCode == keys.RIGHT_ARROW && this._getCursorPos(e.target)==e.target.value.length){ + this._editAfter(item); + } + }, + + _editBefore: function(/*widget*/item){ + // summary: + // move trough items + // tags: + // private + this._currentItem = this._getPreviousItem(item); + if(this._currentItem !== null){ + this._currentItem.edit(); + } + }, + _editAfter: function(/*widget*/item){ + // summary: + // move trough items + // tags: + // private + this._currentItem = this._getNextItem(item); + if(this._currentItem !== null){ + this._currentItem.edit(); + } + + if(!this.readOnlyInput){ + if(this._currentItem === null){ + //no more item ? + //so edit input (if available) + this._focusInput(); + } + } + }, + + _onItemChange: function(/*dijit._Widget*/ item, /*String*/ value){ + // summary: + // Call when item value change + // tags: + // private + + value = value || item.get("value"); + + //revalidate content + this._testItem(item,value); + + //update value + this._updateValues(); + }, + + _onItemEdit: function(/*dijit._Widget*/ item){ + // summary: + // Call when item is edited + // tags: + // private + domClass.remove(item.domNode,["dijitError", this.baseClass + "Match", this.baseClass + "Mismatch"]); + }, + + _testItem: function(/*Object*/item,/*String*/value){ + // summary: + // Change class of item (match, mismatch) + // tags: + // private + var re = new RegExp(this.regExpGen(this.constraints)); + var match = ('' + value).match(re); + + domClass.remove(item.domNode, this.baseClass + (!match ? "Match" : "Mismatch")); + domClass.add(item.domNode, this.baseClass + (match ? "Match" : "Mismatch")); + domClass.toggle(item.domNode, "dijitError", !match); + + if((this.showCloseButtonWhenValid && match) || + (this.showCloseButtonWhenInvalid && !match)){ + domClass.add(item.domNode,this.baseClass+"Closable"); + }else { + domClass.remove(item.domNode,this.baseClass+"Closable"); + } + }, + + _getValueAttr: function(){ + // summary: + // get all value in then list and return an array + // tags: + // private + return this.value; + }, + + _setValueAttr: function(/*Array || String*/ newValue){ + // summary: + // Hook so attr('value', value) works. + // description: + // Sets the value of the widget. + // If the value has changed, then fire onChange event, unless priorityChange + // is specified as null (or false?) + this._destroyAllItems(); + + this.add(this._parseValue(newValue)); + }, + + _parseValue: function(/*String*/newValue){ + // summary: + // search for delemiters and split if needed + // tags: + // private + if(typeof newValue == "string"){ + if(lang.isString(this.delimiter)){ + this.delimiter = [this.delimiter]; + } + var re = new RegExp("^.*("+this.delimiter.join("|")+").*"); + if(newValue.match(re)){ + re = new RegExp(this.delimiter.join("|")); + return newValue.split(re); + } + } + return newValue; + }, + + regExpGen: function(/*ValidationTextBox.__Constraints*/constraints){ + // summary: + // Overridable function used to generate regExp when dependent on constraints. + // Do not specify both regExp and regExpGen. + // tags: + // extension protected + return this.regExp; // String + }, + + _setDisabledAttr: function(/*Boolean*/ value){ + // summary: + // also enable/disable editable items + // tags: + // private + if(!this.readOnlyItem){ + for(var i in this._items){ + this._items[i].set("disabled", value); + } + } + + if(!this.readOnlyInput){ + this._input.set("disabled", value); + } + this.inherited(arguments); + }, + + _onHandler: function(/*String*/value){ + // summary: + // When handlers of input are fired, this method check input value and (if needed) modify it + // tags: + // private + var parsedValue = this._parseValue(value); + if(lang.isArray(parsedValue)){ + this.add(parsedValue); + } + }, + + _onClick: function(/*event*/e){ + // summary: + // give focus to inputbox + // tags: + // private + this._focusInput(); + }, + + _focusInput: function(){ + // summary: + // give focus to input + // tags: + // private + if(!this.readOnlyInput && this._input.focus){ + this._input.focus(); + } + }, + + _inputOnKeyDown: function(/*event*/e){ + // summary: + // Used to add keybord interactivity + // tags: + // private + this._currentItem = null; + var val = this._input.get("value"); + + if(e.keyCode == keys.BACKSPACE && val == "" && this.get("lastItem")){ + this._destroyItem(this.get("lastItem")); + }else if(e.keyCode == keys.ENTER && val != ""){ + this.add(val); + }else if(e.keyCode == keys.LEFT_ARROW && this._getCursorPos(this._input.focusNode) == 0 && + !this.readOnlyItem && this.useArrowForEdit){ + this._editBefore(); + } + }, + + _inputOnBlur: function(){ + // summary: + // Remove focus class and act like pressing ENTER key + // tags: + // private + var val = this._input.get('value'); + if(this.useOnBlur && val != ""){ + this.add(val); + } + }, + + _getMatchedValueAttr: function(){ + // summary: + // get value that match regexp in then list and return an array + // tags: + // private + return this._getValues(lang.hitch(this,this._matchValidator)); + }, + + _getMismatchedValueAttr: function(){ + // summary: + // get value that mismatch regexp in then list and return an array + // tags: + // private + return this._getValues(lang.hitch(this,this._mismatchValidator)); + }, + + _getValues: function(/*function*/validator){ + // summary: + // return values with comparator constraint + // tags: + // private + var value = []; + validator = validator||this._nullValidator; + for(var i in this._items){ + var item = this._items[i]; + if(item === null){ + continue; + } + var itemValue = item.get("value"); + if(validator(itemValue)){ + value.push(itemValue); + } + } + return value; + }, + + _nullValidator: function(/*String*/itemValue){ + // summary: + // return true or false + // tags: + // private + return true; + }, + _matchValidator: function(/*String*/itemValue){ + // summary: + // return true or false + // tags: + // private + var re = new RegExp(this.regExpGen(this.constraints)); + return itemValue.match(re); + }, + _mismatchValidator: function(/*String*/itemValue){ + // summary: + // return true or false + // tags: + // private + var re = new RegExp(this.regExpGen(this.constraints)); + return !(itemValue.match(re)); + }, + + _getLastItemAttr: function(){ + // summary: + // return the last item in list + // tags: + // private + return this._getSomeItem(); + }, + _getSomeItem: function(/*dijit._Widget*/ item,/*String*/ position){ + // summary: + // return the item before the one in params + // tags: + // private + item=item||false; + position=position||"last"; + + var lastItem = null; + var stop=-1; + for(var i in this._items){ + if(this._items[i] === null){ continue; } + + if(position=="before" && this._items[i] === item){ + break; + } + + lastItem = this._items[i]; + + if(position=="first" ||stop==0){ + stop=1; + break; + } + if(position=="after" && this._items[i] === item){ + stop=0; + } + } + if(position=="after" && stop==0){ + lastItem = null; + } + return lastItem; + }, + _getPreviousItem: function(/*dijit._Widget*/ item){ + // summary: + // return the item before the one in params + // tags: + // private + return this._getSomeItem(item,"before"); + }, + _getNextItem: function(/*dijit._Widget*/ item){ + // summary: + // return the item before the one in params + // tags: + // private + return this._getSomeItem(item,"after"); + }, + + _destroyItem: function(/*dijit._Widget*/ item, /*Boolean?*/ updateValue){ + // summary: + // destroy an item + // tags: + // private + this._items[item.index] = null; + item.destroy(); + this._count--; + if(updateValue!==false){ + this._updateValues(); + this._setReadOnlyWhenMaxItemsReached(); + } + }, + + _updateValues: function(){ + // summary: + // update this.value and the select node + // tags: + // private + this.value = this._getValues(); + this._setSelectNode(); + }, + + _destroyAllItems: function(){ + // summary: + // destroy all items + // tags: + // private + for(var i in this._items){ + if(this._items[i]==null){ continue; } + this._destroyItem(this._items[i],false); + } + this._items = []; + this._count = 0; + this.value = null; + this._setSelectNode(); + this._setReadOnlyWhenMaxItemsReached(); + }, + + destroy: function(){ + // summary: + // Destroy all widget + this._destroyAllItems(); + this._lastAddedItem = null; + + if(!this._input){ + this._input.destroy(); + } + + this.inherited(arguments); + } +}); + +var _ListInputInputItem = declare("dojox.form._ListInputInputItem", [Widget, TemplatedMixin], + { + // summary: + // Item created by ListInputInput when delimiter is found + // description: + // Simple
                                • with close button added to ListInputInput when delimiter is found + + templateString: "
                                • ", + + // closeButtonNode: domNode + // ref to the close button node + closeButtonNode: null, + + // readOnlyItem: Boolean + // if true, item is editable + readOnlyItem: true, + + baseClass:"dojoxListInputItem", + + // value: String + // value of item + value: "", + + // regExp: [extension protected] String + // regular expression string used to validate the input + // Do not specify both regExp and regExpGen + regExp: ".*", + + // _editBox: Widget + // inline edit box + _editBox: null, + + // _handleKeyDown: handle + // handle for the keyDown connect + _handleKeyDown: null, + + attributeMap: { + value: { node: "labelNode", type: "innerHTML" } + }, + + postMixInProperties: function(){ + var _nlsResources = i18nCommon; + lang.mixin(this, _nlsResources); + this.inherited(arguments); + }, + + postCreate: function(){ + // summary: + // Create the close button if needed + this.inherited(arguments); + + this.closeButtonNode = domConstruct.create("span",{ + "class" : "dijitButtonNode dijitDialogCloseIcon", + title : this.itemClose, + onclick: lang.hitch(this, "onClose"), + onmouseenter: lang.hitch(this, "_onCloseEnter"), + onmouseleave: lang.hitch(this, "_onCloseLeave") + }, this.domNode); + + domConstruct.create("span",{ + "class" : "closeText", + title : this.itemClose, + innerHTML : "x" + }, this.closeButtonNode); + }, + + startup: function(){ + // summary: + // add the edit box + this.inherited(arguments); + this._createInlineEditBox(); + }, + + _setReadOnlyItemAttr: function(/*Boolean*/value){ + // summary: + // change the readonly state + // tags: + // private + this.readOnlyItem = value; + if(!value){ + this._createInlineEditBox(); + }else if(this._editBox){ + this._editBox.set("disabled", true); + } + }, + + _createInlineEditBox: function(){ + // summary: + // create the inline editbox if needed + // tags: + // private + if(this.readOnlyItem){ return; } + if(!this._started){ return; } + if(this._editBox){ + this._editBox.set("disabled",false); + return; + } + this._editBox = new InlineEditBox({ + value:this.value, + editor: "dijit.form.ValidationTextBox", + editorParams:{ + regExp:this.regExp + } + },this.labelNode); + this.connect(this._editBox,"edit","_onEdit"); + this.connect(this._editBox,"onChange","_onCloseEdit"); + this.connect(this._editBox,"onCancel","_onCloseEdit"); + }, + + edit: function(){ + // summary: + // enter inline editbox in edit mode + if(!this.readOnlyItem){ + this._editBox.edit(); + } + }, + + _onCloseEdit: function(/*String*/value){ + // summary: + // call when inline editor close himself + // tags: + // private + domClass.remove(this.closeButtonNode,this.baseClass + "Edited"); + connect.disconnect(this._handleKeyDown); + this.onChange(value); + }, + + _onEdit: function(){ + // summary: + // call when inline editor start editing + // tags: + // private + domClass.add(this.closeButtonNode,this.baseClass + "Edited"); + this._handleKeyDown = connect.connect(this._editBox.editWidget,"_onKeyPress",this,"onKeyDown"); + this.onEdit(); + }, + + _setDisabledAttr: function(/*Boolean*/value){ + // summary: + // disable inline edit box + // tags: + // private + if(!this.readOnlyItem){ + this._editBox.set("disabled", value); + } + }, + + _getValueAttr: function(){ + // summary: + // return value + // tags: + // private + return (!this.readOnlyItem && this._started ? this._editBox.get("value") : this.value); + }, + + destroy: function(){ + // summary: + // Destroy the inline editbox + if(this._editBox){ + this._editBox.destroy(); + } + this.inherited(arguments); + }, + + _onCloseEnter: function(){ + // summary: + // Called when user hovers over close icon + // tags: + // private + domClass.add(this.closeButtonNode, "dijitDialogCloseIcon-hover"); + }, + + _onCloseLeave: function(){ + // summary: + // Called when user stops hovering over close icon + // tags: + // private + domClass.remove(this.closeButtonNode, "dijitDialogCloseIcon-hover"); + }, + + onClose: function(){ + // summary: + // callback when close button is clicked + }, + + onEdit: function(){ + // summary: + // callback when widget come in edition + }, + + onClick: function(){ + // summary: + // callback when widget is click + }, + + onChange: function(/*String*/value){ + // summary: + // callback when widget change its content + }, + + + onKeyDown: function(/*String*/value){ + // summary: + // callback when widget get a KeyDown + } +}); +var _ListInputInputBox = declare("dojox.form._ListInputInputBox", [ValidationTextBox], + { + // summary: + // auto-sized text box + // description: + // Auto sized textbox based on dijit.form.TextBox + + // minWidth: Integer + // Min width of the input box + minWidth:50, + + // intermediateChanges: Boolean + // Fires onChange for each value change or only on demand + // Force to true in order to get onChanged called + intermediateChanges:true, + + // regExp: [extension protected] String + // regular expression string used to validate the input + // Do not specify both regExp and regExpGen + regExp: ".*", + + // _sizer: DomNode + // Used to get size of textbox content + _sizer:null, + + onChange: function(/*string*/value){ + // summary: + // compute content width + this.inherited(arguments); + if(this._sizer === null){ + this._sizer = domConstruct.create("div",{ + style : { + position : "absolute", + left : "-10000px", + top : "-10000px" + } + },win.body()); + } + this._sizer.innerHTML = value; + var w = domGeometry.getContentBox(this._sizer).w + this.minWidth; + domGeometry.setContentSize(this.domNode,{ w : w }); + }, + + destroy: function(){ + // summary: + // destroy the widget + domConstruct.destroy(this._sizer); + this.inherited(arguments); + } +}); +return ListInput; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/Manager.js b/js/dojo-release-1.7.2-src/dojox/form/Manager.js new file mode 100644 index 0000000..f8c92c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/Manager.js @@ -0,0 +1,54 @@ +define([ + "dijit/_Widget", + "dijit/_TemplatedMixin", + "./manager/_Mixin", + "./manager/_NodeMixin", + "./manager/_FormMixin", + "./manager/_ValueMixin", + "./manager/_EnableMixin", + "./manager/_DisplayMixin", + "./manager/_ClassMixin", + "dojo/_base/declare" +], function(_Widget, _TemplatedMixin, _Mixin, _NodeMixin, _FormMixin, _ValueMixin, _EnableMixin, _DisplayMixin, _ClassMixin, declare){ + + /*===== + _Widget = dijit._Widget; + _Mixin = dojox.form.manager._Mixin; + _NodeMixin = dojox.form.manager._NodeMixin; + _FormMixin = dojox.form.manager._FormMixin; + _ValueMixin = dojox.form.manager._ValueMixin; + _EnableMixin = dojox.form.manager._EnableMixin; + _DisplayMixin = dojox.form.manager._DisplayMixin; + _ClassMixin = dojox.form.manager._ClassMixin; + =====*/ +return declare("dojox.form.Manager", [ _Widget, _Mixin, _NodeMixin, _FormMixin, _ValueMixin, _EnableMixin, _DisplayMixin, _ClassMixin ], { + // summary: + // The widget to orchestrate dynamic forms. + // description: + // This widget hosts dojox.form.manager mixins. + // See _Mixin for more info. + + buildRendering: function(){ + var node = (this.domNode = this.srcNodeRef); + if(!this.containerNode){ + // all widgets with descendants must set containerNode + this.containerNode = node; + } + this.inherited(arguments); + this._attachPoints = []; + this._attachEvents = []; + _TemplatedMixin.prototype._attachTemplateNodes.call(this, node, function(n, p){ return n.getAttribute(p); }); + }, + + destroyRendering: function(preserveDom){ + // ctm: calling _TemplatedMixin + if(!this.__ctm){ + // avoid recursive call from _TemplatedMixin + this.__ctm = true; + _TemplatedMixin.prototype.destroyRendering.apply(this, arguments); + delete this.__ctm; + this.inherited(arguments); + } + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/MultiComboBox.js b/js/dojo-release-1.7.2-src/dojox/form/MultiComboBox.js new file mode 100644 index 0000000..cf79756 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/MultiComboBox.js @@ -0,0 +1,65 @@ +define([ + "dojo/_base/kernel", + "dijit/form/ValidationTextBox", + "dijit/form/ComboBoxMixin", + "dojo/_base/declare" +], function(kernel, ValidationTextBox, ComboBoxMixin, declare){ +kernel.experimental("dojox.form.MultiComboBox"); + + /*===== + ValidationTextBox = dijit.form.ValidationTextBox; + ComboBoxMixin = dijit.form.ComboBoxMixin; + =====*/ +return declare("dojox.form.MultiComboBox", [ValidationTextBox, ComboBoxMixin],{ + // summary: + // A ComboBox that accepts multiple inputs on a single line + + // delimiter: String + // The character to use to separate items in the ComboBox input + delimiter: ",", + + _previousMatches: false, + + _setValueAttr: function(value){ + if(this.delimiter && value.length != 0){ + value = value+this.delimiter+" "; + arguments[0] = this._addPreviousMatches(value); + } + this.inherited(arguments); + }, + + _addPreviousMatches: function(/* String */text){ + if(this._previousMatches){ + if(!text.match(new RegExp("^"+this._previousMatches))){ + text = this._previousMatches+text; + } + text = this._cleanupDelimiters(text); + } + return text; // String + }, + + _cleanupDelimiters: function(/* String */text){ + if(this.delimiter){ + text = text.replace(new RegExp(" +"), " "); + text = text.replace(new RegExp("^ *"+this.delimiter+"* *"), ""); + text = text.replace(new RegExp(this.delimiter+" *"+this.delimiter), this.delimiter); + } + return text; + }, + + _autoCompleteText: function(/* String */text){ + arguments[0] = this._addPreviousMatches(text); + this.inherited(arguments); + }, + + _startSearch: function(/* String */text){ + text = this._cleanupDelimiters(text); + var re = new RegExp("^.*"+this.delimiter+" *"); + + if((this._previousMatches = text.match(re))){ + arguments[0] = text.replace(re, ""); + } + this.inherited(arguments); + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/PasswordValidator.js new file mode 100644 index 0000000..06d2b73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/PasswordValidator.js @@ -0,0 +1,322 @@ +define([ + "dojo/_base/array", + "dojo/_base/lang", + "dojo/dom-attr", + "dojo/i18n", + "dojo/query", + "dojo/keys", + "dijit/form/_FormValueWidget", + "dijit/form/ValidationTextBox", + "dojo/text!./resources/PasswordValidator.html", + "dojo/i18n!./nls/PasswordValidator", + "dojo/_base/declare" +], function(array, lang, domAttr, i18n, query, keys, FormValueWidget, ValidationTextBox, template, formNlsPasswordValidator, declare){ + + /*===== + FormValueWidget = dijit.form._FormValueWidget; + ValidationTextBox = dijit.form.ValidationTextBox; + =====*/ +var _ChildTextBox = declare("dojox.form._ChildTextBox", ValidationTextBox, { + // summary: + // A class that is shared between all our children - extends + // ValidationTextBox and provides some shared functionality + // + // containerWidget: widget + // Our parent (the PasswordValidator) + containerWidget: null, + + // type: string + // Don't override this - we are all "password" types + type: "password", + + reset: function(){ + // summary: + // Force-set to empty string (we don't save passwords EVER)...and + // since _OldPWBox overrides _setValueAttr to check for empty string, + // call our parent class directly (not this.inherited()) + ValidationTextBox.prototype._setValueAttr.call(this, "", true); + this._hasBeenBlurred = false; + }, + + postCreate: function(){ + // summary: + // We want to remove the "name" attribute from our focus node if + // we don't have one set - this prevents all our extra values + // from being posted on submit + this.inherited(arguments); + if(!this.name){ + domAttr.remove(this.focusNode, "name"); + } + this.connect(this.focusNode, "onkeypress", "_onChildKeyPress"); + }, + + _onChildKeyPress: function(e){ + // Check if we pressed - if so, set our blur value so that + // the parent widget will be updated correctly. + if(e && e.keyCode == keys.ENTER){ + this._setBlurValue(); + } + } +}); + + + +var _OldPWBox = declare("dojox.form._OldPWBox", _ChildTextBox, { + // summary: + // A class representing our "old password" box. + // + // _isPWValid: boolean + // Whether or not the password is valid + _isPWValid: false, + + _setValueAttr: function(/* anything */ newVal, /* boolean? */ priority){ + // summary: + // Updates _isPWValid if this isn't our initial update by calling + // our PasswordValidator's pwCheck function + if(newVal === ""){ + newVal = _OldPWBox.superclass.attr.call(this, "value"); + } + if(priority !== null){ + // Priority is passed in as null, explicitly when this is an + // update (not initially set). We want to check our password now. + this._isPWValid = this.containerWidget.pwCheck(newVal); + } + this.inherited(arguments); + // Trigger the containerWidget to recheck its value, if needed + this.containerWidget._childValueAttr(this.containerWidget._inputWidgets[1].get("value")); + }, + + isValid: function(/* boolean */ isFocused){ + // Take into account the isPWValid setting + return this.inherited("isValid", arguments) && this._isPWValid; + }, + + _update: function(/* event */ e){ + // Only call validate() if we've been blurred or else we get popups + // too early. + if(this._hasBeenBlurred){ this.validate(true); } + this._onMouse(e); + }, + + _getValueAttr: function(){ + if(this.containerWidget._started && this.containerWidget.isValid()){ + return this.inherited(arguments); + } + return ""; + }, + + _setBlurValue: function(){ + // TextBox._setBlurValue calls this._setValueAttr(this.get('value'), ...) + // Because we are overridding _getValueAttr to return "" when the containerWidget + // is not valid, TextBox._setBlurValue will cause OldPWBox's value to be set to "" + // + // So, we directly call ValidationTextBox._getValueAttr to bypass our _getValueAttr + var value = ValidationTextBox.prototype._getValueAttr.call(this); + this._setValueAttr(value, (this.isValid ? this.isValid() : true)); + } +}); + + +var _NewPWBox = declare("dojox.form._NewPWBox", _ChildTextBox, { + // summary: + // A class representing our new password textbox + + // required: boolean + // Whether or not this widget is required (default: true) + required: true, + + onChange: function(){ + // summary: + // Validates our verify box - to make sure that a change to me is + // reflected there + this.containerWidget._inputWidgets[2].validate(false); + this.inherited(arguments); + } +}); + +var _VerifyPWBox = declare("dojox.form._VerifyPWBox", _ChildTextBox, { + // summary: + // A class representing our verify textbox + + isValid: function(isFocused){ + // summary: + // Validates that we match the "real" password + return this.inherited("isValid", arguments) && + (this.get("value") == this.containerWidget._inputWidgets[1].get("value")); + } +}); + +return declare("dojox.form.PasswordValidator", FormValueWidget, { + // summary: + // A password validation widget that simplifies the "old/new/verify" + // style of requesting passwords. You will probably want to override + // this class and implement your own pwCheck function. + + // required: boolean + // Whether or not it is required for form submission + required: true, + + // inputWidgets: TextBox[] + // An array of text boxes that are our components + _inputWidgets: null, + + // oldName: string? + // The name to send our old password as (when form is posted) + oldName: "", + + templateString: template, + + _hasBeenBlurred: false, + + isValid: function(/* boolean */ isFocused){ + // summary: we are valid if ALL our children are valid + return array.every(this._inputWidgets, function(i){ + if(i && i._setStateClass){ i._setStateClass(); } + return (!i || i.isValid()); + }); + }, + + validate: function(/* boolean */ isFocused){ + // summary: Validating this widget validates all our children + return array.every(array.map(this._inputWidgets, function(i){ + if(i && i.validate){ + i._hasBeenBlurred = (i._hasBeenBlurred || this._hasBeenBlurred); + return i.validate(); + } + return true; + }, this), function(item){ return item; }); + }, + + reset: function(){ + // summary: Resetting this widget resets all our children + this._hasBeenBlurred = false; + array.forEach(this._inputWidgets, function(i){ + if(i && i.reset){ i.reset(); } + }, this); + }, + + _createSubWidgets: function(){ + // summary: + // Turns the inputs inside this widget into "real" validation + // widgets - and sets up the needed connections. + var widgets = this._inputWidgets, + msg = i18n.getLocalization("dojox.form", "PasswordValidator", this.lang); + array.forEach(widgets, function(i, idx){ + if(i){ + var p = {containerWidget: this}, c; + if(idx === 0){ + p.name = this.oldName; + p.invalidMessage = msg.badPasswordMessage; + c = _OldPWBox; + }else if(idx === 1){ + p.required = this.required; + c = _NewPWBox; + }else if(idx === 2){ + p.invalidMessage = msg.nomatchMessage; + c = _VerifyPWBox; + } + widgets[idx] = new c(p, i); + } + }, this); + }, + + pwCheck: function(/* string */ password){ + // summary: + // Overridable function for validation of the old password box. + // + // This function is called and passed the old password. Return + // true if it's OK to continue, and false if it is not. + // + // IMPORTANT SECURITY NOTE: Do NOT EVER EVER EVER check this in + // HTML or JavaScript!!! + // + // You will probably want to override this function to callback + // to a server to verify the password (the callback will need to + // be syncronous) - and it's probably a good idea to validate + // it again on form submission before actually doing + // anything destructive - that's why the "oldName" value + // is available. + // + // And don't just fetch the password from the server + // either :) Send the test password (probably hashed, for + // security) and return from the server a status instead. + // + // Again - DON'T BE INSECURE!!! Security is left as an exercise + // for the reader :) + return false; + }, + + postCreate: function(){ + // summary: + // Sets up the correct widgets. You *MUST* specify one child + // text box (a simple HTML element) with pwType="new" + // *and* one child text box with pwType="verify". You *MAY* + // specify a third child text box with pwType="old" in order to + // prompt the user to enter in their old password before the + // widget returns that it is valid. + + this.inherited(arguments); + + // Turn my inputs into the correct stuff.... + var widgets = this._inputWidgets = []; + array.forEach(["old","new","verify"], function(i){ + widgets.push(query("input[pwType=" + i + "]", this.containerNode)[0]); + }, this); + if(!widgets[1] || !widgets[2]){ + throw new Error("Need at least pwType=\"new\" and pwType=\"verify\""); + } + if(this.oldName && !widgets[0]){ + throw new Error("Need to specify pwType=\"old\" if using oldName"); + } + this.containerNode = this.domNode; + this._createSubWidgets(); + this.connect(this._inputWidgets[1], "_setValueAttr", "_childValueAttr"); + this.connect(this._inputWidgets[2], "_setValueAttr", "_childValueAttr"); + }, + + _childValueAttr: function(v){ + this.set("value", this.isValid() ? v : ""); + }, + + _setDisabledAttr: function(value){ + this.inherited(arguments); + array.forEach(this._inputWidgets, function(i){ + if(i && i.set){ i.set("disabled", value);} + }); + }, + + _setRequiredAttribute: function(value){ + this.required = value; + domAttr.set(this.focusNode, "required", value); + this.focusNode.setAttribute("aria-required", value); + this._refreshState(); + array.forEach(this._inputWidgets, function(i){ + if(i && i.set){ i.set("required", value);} + }); + }, + + _setValueAttr: function(v){ + this.inherited(arguments); + domAttr.set(this.focusNode, "value", v); + }, + + _getValueAttr: function(){ + // Make sure we don't return undefined.... maybe should do conversion in _setValueAttr() instead? + return this.value||""; + }, + + focus: function(){ + // summary: + // places focus on the first invalid input widget - if all + // input widgets are valid, the first widget is focused. + var f = false; + array.forEach(this._inputWidgets, function(i){ + if(i && !i.isValid() && !f){ + i.focus(); + f = true; + } + }); + if(!f){ this._inputWidgets[1].focus(); } + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/README b/js/dojo-release-1.7.2-src/dojox/form/README new file mode 100644 index 0000000..462ca5b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/README @@ -0,0 +1,73 @@ +------------------------------------------------------------------------------- +dojox.form Collection +------------------------------------------------------------------------------- +Version 1.0 +Release date: 02/26/2008 +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Nathan Toone (toonetown) + Peter Higgins (dante) + Wolfram Kriesing (wolfram) + Mike Wilcox (mwilcox) +------------------------------------------------------------------------------- +Project description + + This is a collection of additional widgets that can be used in forms. +------------------------------------------------------------------------------- +Dependencies: + + Depends on dojo core and dijit + + dojo.form.FileUploader depends on dojox.embed, and uses Flash movies created + in the deft project using Flex OSS 3. You do not need any of the deft code; + compiled movies are included with dojox.form in the resources folder. + If you want to modify the actual movies, you can look in the deft project + (under the package deft.av). +------------------------------------------------------------------------------- +Documentation + +------------------------------------------------------------------------------- +Installation instructions + + Install into /dojox/form +------------------------------------------------------------------------------- +Additional Notes (Brief widget list): + + * CheckedMultiSelect - an extension to dijit.form.MultiSelect which + uses check boxes instead of ctrl-click + + * DropDownSelect - an extension to dijit.form.DropDownButton which is + meant to mirror the html
                                    ${stars}
                                  ' + + '
                                  '; + // The value-attribute is used to "read" the value for processing in the widget class + var starTpl = '
                                • '; + var rendered = ""; + for(var i = 0; i < this.numStars; i++){ + rendered += string.substitute(starTpl, {value:i+1}); + } + this.templateString = string.substitute(tpl, {stars:rendered}); + }, + + postCreate: function(){ + this.inherited(arguments); + this._renderStars(this.value); + }, + + _onMouse: function(evt){ + if(this.hovering){ + var hoverValue = +domAttr.get(evt.target, "value"); + this.onMouseOver(evt, hoverValue); + this._renderStars(hoverValue, true); + }else{ + this._renderStars(this.value); + } + }, + + _renderStars: function(value, hover){ + // summary: Render the stars depending on the value. + query(".dojoxRatingStar", this.domNode).forEach(function(star, i){ + if(i + 1 > value){ + domClass.remove(star, "dojoxRatingStarHover"); + domClass.remove(star, "dojoxRatingStarChecked"); + }else{ + domClass.remove(star, "dojoxRatingStar" + (hover ? "Checked" : "Hover")); + domClass.add(star, "dojoxRatingStar" + (hover ? "Hover" : "Checked")); + } + }); + }, + + onStarClick:function(/* Event */evt){ + // summary: Connect on this method to get noticed when a star was clicked. + // example: connect(widget, "onStarClick", function(event){ ... }) + var newVal = +domAttr.get(evt.target, "value"); + this.setAttribute("value", newVal == this.value ? 0 : newVal); + this._renderStars(this.value); + this.onChange(this.value); // Do I have to call this by hand? + }, + + onMouseOver: function(/*evt, value*/){ + // summary: Connect here, the value is passed to this function as the second parameter! + }, + + setAttribute: function(/*String*/key, /**/value){ + // summary: When calling setAttribute("value", 4), set the value and render the stars accordingly. + this.set(key, value); + if(key=="value"){ + this._renderStars(this.value); + this.onChange(this.value); // Do I really have to call this by hand? :-( + } + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/TimeSpinner.js b/js/dojo-release-1.7.2-src/dojox/form/TimeSpinner.js new file mode 100644 index 0000000..72d44b7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/TimeSpinner.js @@ -0,0 +1,61 @@ +define([ + "dojo/_base/lang", + "dojo/_base/event", + "dijit/form/_Spinner", + "dojo/keys", + "dojo/date", + "dojo/date/locale", + "dojo/date/stamp", + "dojo/_base/declare" +], function(lang, event, Spinner, keys, dateUtil, dateLocale, dateStamp, declare){ + /*===== + Spinner = dijit.form._Spinner; + =====*/ +return declare( "dojox.form.TimeSpinner", Spinner, +{ + // summary: Time Spinner + // description: This widget is the same as a normal NumberSpinner, but for the time component of a date object instead + + required: false, + + adjust: function(/* Object */ val, /*Number*/ delta){ + return dateUtil.add(val, "minute", delta) + }, + + //FIXME should we allow for constraints in this widget? + isValid: function(){return true;}, + + smallDelta: 5, + + largeDelta: 30, + + timeoutChangeRate: 0.50, + + parse: function(time, locale){ + return dateLocale.parse(time, {selector:"time", formatLength:"short"}); + }, + + format: function(time, locale){ + if(lang.isString(time)){ return time; } + return dateLocale.format(time, {selector:"time", formatLength:"short"}); + }, + + serialize: dateStamp.toISOString, + + value: "12:00 AM", + + _onKeyPress: function(e){ + if((e.charOrCode == keys.HOME || e.charOrCode == keys.END) && !(e.ctrlKey || e.altKey || e.metaKey) + && typeof this.get('value') != 'undefined' /* gibberish, so HOME and END are default editing keys*/){ + var value = this.constraints[(e.charOrCode == keys.HOME ? "min" : "max")]; + if(value){ + this._setValueAttr(value,true); + } + // eat home or end key whether we change the value or not + event.stop(e); + } + } + + +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/TriStateCheckBox.js b/js/dojo-release-1.7.2-src/dojox/form/TriStateCheckBox.js new file mode 100644 index 0000000..54a88ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/TriStateCheckBox.js @@ -0,0 +1,243 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/event", + "dojo/query", + "dojo/dom-attr", + "dojo/text!./resources/TriStateCheckBox.html", + "dijit/form/ToggleButton" +], function(kernel, declare, array, event, query, domAttr, template, ToggleButton){ +// module: +// dojox/form/TriStateCheckBox +// summary: +// Checkbox with three states +// + + /*===== + ToggleButton = dijit.form.ToggleButton; + =====*/ +return declare("dojox.form.TriStateCheckBox", ToggleButton, + { + // summary: + // Checkbox with three states + + templateString: template, + + baseClass: "dojoxTriStateCheckBox", + + // type: [private] String + // type attribute on node. + // Overrides `dijit.form.Button.type`. Users should not change this value. + type: "checkbox", + + /*===== + // states: Array + // States of TriStateCheckBox. + // The value of This.checked should be one of these three states. + states: [false, true, "mixed"], + =====*/ + + /*===== + // _stateLabels: Object + // These characters are used to replace the image to show + // current state of TriStateCheckBox in high contrast mode. + _stateLabels: { + "False": '', + "True": '√', + "Mixed": '≡' + }, + =====*/ + + /*===== + // stateValues: Object + // The values of the TriStateCheckBox in corresponding states. + stateValues: { + "False": "off", + "True": "on", + "Mixed": "mixed" + }, + =====*/ + + // _currentState: Integer + // The current state of the TriStateCheckBox + _currentState: 0, + + // _stateType: String + // The current state type of the TriStateCheckBox + // Could be "False", "True" or "Mixed" + _stateType: "False", + + // readOnly: Boolean + // Should this widget respond to user input? + // In markup, this is specified as "readOnly". + // Similar to disabled except readOnly form values are submitted. + readOnly: false, + + constructor: function(){ + // summary: + // Runs on widget initialization to setup arrays etc. + // tags: + // private + this.states = [false, true, "mixed"]; + this._stateLabels = { + "False": '', + "True": '√', + "Mixed": '≡' + }; + this.stateValues = { + "False": "off", + "True": "on", + "Mixed": "mixed" + }; + }, + + // Override behavior from Button, since we don't have an iconNode + _setIconClassAttr: null, + + _setCheckedAttr: function(/*String|Boolean*/ checked, /*Boolean?*/ priorityChange){ + // summary: + // Handler for checked = attribute to constructor, and also calls to + // set('checked', val). + // checked: + // true, false or 'mixed' + // description: + // Controls the state of the TriStateCheckBox. Set this.checked, + // this._currentState, value attribute of the + // according to the value of 'checked'. + this._set("checked", checked); + this._currentState = array.indexOf(this.states, checked); + this._stateType = this._getStateType(checked); + domAttr.set(this.focusNode || this.domNode, "checked", checked); + domAttr.set(this.focusNode, "value", this.stateValues[this._stateType]); + (this.focusNode || this.domNode).setAttribute("aria-checked", checked); + this._handleOnChange(checked, priorityChange); + }, + + setChecked: function(/*String|Boolean*/ checked){ + // summary: + // Deprecated. Use set('checked', true/false) instead. + kernel.deprecated("setChecked("+checked+") is deprecated. Use set('checked',"+checked+") instead.", "", "2.0"); + this.set('checked', checked); + }, + + _setReadOnlyAttr: function(/*Boolean*/ value){ + this._set("readOnly", value); + domAttr.set(this.focusNode, "readOnly", value); + this.focusNode.setAttribute("aria-readonly", value); + }, + + _setValueAttr: function(/*String|Boolean*/ newValue, /*Boolean*/ priorityChange){ + // summary: + // Handler for value = attribute to constructor, and also calls to + // set('value', val). + // description: + // During initialization, just saves as attribute to the . + // + // After initialization, + // when passed a boolean or the string 'mixed', controls the state of the + // TriStateCheckBox. + // If passed a string except 'mixed', changes the value attribute of the + // TriStateCheckBox. Sets the state of the TriStateCheckBox to checked. + if(typeof newValue == "string" && (array.indexOf(this.states, newValue) < 0)){ + if(newValue == ""){ + newValue = "on"; + } + this.stateValues["True"] = newValue; + newValue = true; + } + if(this._created){ + this._currentState = array.indexOf(this.states, newValue); + this.set('checked', newValue, priorityChange); + domAttr.set(this.focusNode, "value", this.stateValues[this._stateType]); + } + }, + + _setValuesAttr: function(/*Array*/ newValues){ + // summary: + // Handler for values = attribute to constructor, and also calls to + // set('values', val). + // newValues: + // If the length of newValues is 1, it will replace the value of + // the TriStateCheckBox in true state. Otherwise, the values of + // the TriStateCheckBox in true state and 'mixed' state will be + // replaced by the first two values in newValues. + // description: + // Change the value of the TriStateCheckBox in 'mixed' and true states. + this.stateValues["True"] = newValues[0] ? newValues[0] : this.stateValues["True"]; + this.stateValues["Mixed"] = newValues[1] ? newValues[1] : this.stateValues["False"]; + }, + + _getValueAttr: function(){ + // summary: + // Hook so get('value') works. + // description: + // Returns value according to current state of the TriStateCheckBox. + return this.stateValues[this._stateType]; + }, + + startup: function(){ + this.set("checked", this.params.checked || this.states[this._currentState]); + domAttr.set(this.stateLabelNode, 'innerHTML', this._stateLabels[this._stateType]); + this.inherited(arguments); + }, + + _fillContent: function(/*DomNode*/ source){ + // Override Button::_fillContent() since it doesn't make sense for CheckBox, + // since CheckBox doesn't even have a container + }, + + reset: function(){ + this._hasBeenBlurred = false; + this.stateValues = { + "False" : "off", + "True" : "on", + "Mixed" : "mixed" + }; + this.set('checked', this.params.checked || this.states[0]); + }, + + _onFocus: function(){ + if(this.id){ + query("label[for='"+this.id+"']").addClass("dijitFocusedLabel"); + } + this.inherited(arguments); + }, + + _onBlur: function(){ + if(this.id){ + query("label[for='"+this.id+"']").removeClass("dijitFocusedLabel"); + } + this.inherited(arguments); + }, + + _onClick: function(/*Event*/ e){ + // summary: + // Internal function to handle click actions - need to check + // readOnly and disabled + if(this.readOnly || this.disabled){ + event.stop(e); + return false; + } + if(this._currentState >= this.states.length - 1){ + this._currentState = 0; + }else{ + this._currentState++; + } + this.set("checked", this.states[this._currentState]); + domAttr.set(this.stateLabelNode, 'innerHTML', this._stateLabels[this._stateType]); + return this.onClick(e); // user click actions + }, + + _getStateType: function(/*String|Boolean*/ state){ + // summary: + // Internal function to return the type of a certain state + // false: False + // true: True + // "mixed": Mixed + return state ? (state == "mixed" ? "Mixed" : "True") : "False"; + } + } +); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/Uploader.js new file mode 100644 index 0000000..d458223 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/Uploader.js @@ -0,0 +1,389 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/window", + "dojo/dom-style", + "dojo/dom-geometry", + "dojo/dom-attr", + "dojo/dom-construct", + "dojo/dom-form", + "dijit", + "dijit/form/Button", + "dojox/form/uploader/Base", + "dojo/i18n!./nls/Uploader", + "dojo/text!./resources/Uploader.html" +],function(kernel, declare, lang, array, connect, win, domStyle, domGeometry, domAttr, domConstruct, domForm, dijit, Button, uploader, res, template){ + + kernel.experimental("dojox.form.Uploader"); + // + // TODO: + // i18n + // label via innerHTML + // Doc and or test what can be extended. + // Doc custom file events + // Use new FileReader() for thumbnails + // flashFieldName should default to Flash + // get('value'); and set warning + // Make it so URL can change (current set to Flash on build) + // + + /*===== + uploader = dojox.form.uploader.Base; + WidgetsInTemplateMixin = dijit._WidgetsInTemplateMixin; + =====*/ +declare("dojox.form.Uploader", [uploader, Button], { + // + // Version: 1.6 + // + // summary: + // A widget that creates a stylable file-input button, with optional multi-file selection, + // using only HTML elements. Non-HTML5 browsers have fallback options of Flash or an iframe. + // + // description: + // A bare-bones, stylable file-input button, with optional multi-file selection. The list + // of files is not displayed, that is for you to handle by connecting to the onChange + // event, or use the dojox.form.uploader.FileList. + // + // Uploader without plugins does not have any ability to upload - it is for use in forms + // where you handle the upload either by a standard POST or with Ajax using an iFrame. This + // class is for convenience of multiple files only. No progress events are available. + // + // If the browser supports a file-input with the "multiple" attribute, that will be used. + // If the browser does not support "multiple" (ergo, IE) multiple inputs are used, + // one for each selection. + // + // + // uploadOnSelect: Boolean + // If true, uploads imediately after a file has been selected. If false, + // waits for upload() to be called. + uploadOnSelect:false, + // tabIndex: Number|String + // The tab order in the DOM. + tabIndex:0, + // multiple: Boolean + // If true and flash mode, multiple files may be selected from the dialog. + multiple:false, + // + // label: String + // The text used in the button that when clicked, opens a system Browse Dialog. + label:res.label, + // + // url: String + // The url targeted for upload. An absolute URL is preferred. Relative URLs are + // changed to absolute. + url:"", + // + // name: String + // The name attribute needs to end with square brackets: [] as this is the standard way + // of handling an attribute "array". This requires a slightly different technique on the + // server. + name:"uploadedfile", + // + // flashFieldName: String + // If set, this will be the name of the field of the flash uploaded files that the server + // is expecting. If not set, "Flash" is appended to the "name" property. + flashFieldName:"", + // + // uploadType: String [readonly] + // The type of uploader being used. As an alternative to determining the upload type on the + // server based on the fieldName, this property could be sent to the server to help + // determine what type of parsing should be used. + uploadType:"form", + // + // showInput: String [const] + // Position to show an input which shows selected filename(s). Possible + // values are "before", "after", which specifies where the input should + // be placed with reference to the containerNode which contains the + // label). By default, this is empty string (no such input will be + // shown). Specify showInput="before" to mimic the look&feel of a + // native file input element. + showInput: "", + + _nameIndex:0, + + templateString: template, + + baseClass: 'dijitUploader '+Button.prototype.baseClass, + + postMixInProperties: function(){ + this._inputs = []; + this._cons = []; + this.inherited(arguments); + }, + buildRendering: function(){ + console.warn("buildRendering", this.id) + this.inherited(arguments); + domStyle.set(this.domNode, { + overflow:"hidden", + position:"relative" + }); + this._buildDisplay(); + //change the button node not occupy tabIndex: the real file input + //will have tabIndex set + domAttr.set(this.titleNode, 'tabIndex', -1); + }, + _buildDisplay: function(){ + if(this.showInput){ + this.displayInput = dojo.create('input', { + 'class':'dijitUploadDisplayInput', + 'tabIndex':-1, 'autocomplete':'off'}, + this.containerNode, this.showInput); + //schedule the attachpoint to be cleaned up on destroy + this._attachPoints.push('displayInput'); + this.connect(this,'onChange', function(files){ + var i=0,l=files.length, f, r=[]; + while((f=files[i++])){ + if(f && f.name){ + r.push(f.name); + } + } + this.displayInput.value = r.join(', '); + }); + this.connect(this,'reset', function(){ + this.displayInput.value = ''; + }); + } + }, + + startup: function(){ + if(this._buildInitialized){ + return; + } + this._buildInitialized = true; + this._getButtonStyle(this.domNode); + this._setButtonStyle(); + this.inherited(arguments); + }, + + /************************* + * Public Events * + *************************/ + + onChange: function(/* Array */fileArray){ + // summary: + // stub to connect + // Fires when files are selected + // Event is an array of last files selected + }, + + onBegin: function(/* Array */dataArray){ + // summary: + // Fires when upload begins + }, + + onProgress: function(/* Object */customEvent){ + // summary: + // Stub to connect + // Fires on upload progress. Event is a normalized object of common properties + // from HTML5 uploaders and the Flash uploader. Will not fire for IFrame. + // customEvent: + // bytesLoaded: Number + // Amount of bytes uploaded so far of entire payload (all files) + // bytesTotal: Number + // Amount of bytes of entire payload (all files) + // type: String + // Type of event (progress or load) + // timeStamp: Number + // Timestamp of when event occurred + }, + + onComplete: function(/* Object */customEvent){ + // summary: + // stub to connect + // Fires when all files have uploaded + // Event is an array of all files + this.reset(); + }, + + onCancel: function(){ + // summary: + // Stub to connect + // Fires when dialog box has been closed + // without a file selection + }, + + onAbort: function(){ + // summary: + // Stub to connect + // Fires when upload in progress was canceled + }, + + onError: function(/* Object or String */evtObject){ + // summary: + // Fires on errors + // + //FIXME: Unsure of a standard form of error events + }, + + /************************* + * Public Methods * + *************************/ + + upload: function(/*Object ? */formData){ + // summary: + // When called, begins file upload. Only supported with plugins. + }, + + submit: function(/* form Node ? */form){ + // summary: + // If Uploader is in a form, and other data should be sent along with the files, use + // this instead of form submit. + form = !!form ? form.tagName ? form : this.getForm() : this.getForm(); + var data = domForm.toObject(form); + this.upload(data); + }, + + reset: function(){ + // summary + // Resets entire input, clearing all files. + // NOTE: + // Removing individual files is not yet supported, because the HTML5 uploaders can't + // be edited. + // TODO: + // Add this ability by effectively, not uploading them + // + delete this._files; + this._disconnectButton(); + array.forEach(this._inputs, domConstruct.destroy, dojo); + this._inputs = []; + this._nameIndex = 0; + this._createInput(); + }, + + getFileList: function(){ + // summary: + // Returns a list of selected files. + // + var fileArray = []; + if(this.supports("multiple")){ + array.forEach(this._files, function(f, i){ + fileArray.push({ + index:i, + name:f.name, + size:f.size, + type:f.type + }); + }, this); + }else{ + array.forEach(this._inputs, function(n, i){ + if(n.value){ + fileArray.push({ + index:i, + name:n.value.substring(n.value.lastIndexOf("\\")+1), + size:0, + type:n.value.substring(n.value.lastIndexOf(".")+1) + }); + } + }, this); + + } + return fileArray; // Array + }, + + /********************************************* + * Private Property. Get off my lawn. * + *********************************************/ + + _getValueAttr: function(){ + // summary: + // Internal. To get disabled use: uploader.get("disabled"); + return this.getFileList(); + }, + + _setValueAttr: function(disabled){ + console.error("Uploader value is read only"); + }, + + _setDisabledAttr: function(disabled){ + // summary: + // Internal. To set disabled use: uploader.set("disabled", true); + if(this._disabled == disabled){ return; } + this.inherited(arguments); + domStyle.set(this.inputNode, "display", disabled ? "none" : ""); + }, + + _getButtonStyle: function(node){ + this.btnSize = {w:domStyle.get(node,'width'), h:domStyle.get(node,'height')}; + }, + + _setButtonStyle: function(){ + this.inputNodeFontSize = Math.max(2, Math.max(Math.ceil(this.btnSize.w / 60), Math.ceil(this.btnSize.h / 15))); + this._createInput(); + }, + + _createInput: function(){ + if(this._inputs.length){ + domStyle.set(this.inputNode, { + top:"500px" + }); + this._disconnectButton(); + this._nameIndex++; + } + + var name; + if(this.supports("multiple")){ + // FF3.5+, WebKit + name = this.name+"s[]"; + }else{ + // <=IE8 + name = this.name + (this.multiple ? this._nameIndex : ""); + } + // reset focusNode to the inputNode, so when the button is clicked, + // the focus is properly moved to the input element + this.focusNode = this.inputNode = domConstruct.create("input", {type:"file", name:name}, this.domNode, "first"); + if(this.supports("multiple") && this.multiple){ + domAttr.set(this.inputNode, "multiple", true); + } + this._inputs.push(this.inputNode); + + domStyle.set(this.inputNode, { + position:"absolute", + fontSize:this.inputNodeFontSize+"em", + top:"-3px", + right:"-3px", + opacity:0 + }); + this._connectButton(); + }, + + _connectButton: function(){ + this._cons.push(connect.connect(this.inputNode, "change", this, function(evt){ + this._files = this.inputNode.files; + this.onChange(this.getFileList(evt)); + if(!this.supports("multiple") && this.multiple) this._createInput(); + })); + + if(this.tabIndex > -1){ + this.inputNode.tabIndex = this.tabIndex; + + this._cons.push(connect.connect(this.inputNode, "focus", this, function(){ + this.titleNode.style.outline= "1px dashed #ccc"; + })); + this._cons.push(connect.connect(this.inputNode, "blur", this, function(){ + this.titleNode.style.outline = ""; + })); + } + }, + + _disconnectButton: function(){ + array.forEach(this._cons, connect.disconnect); + this._cons.splice(0,this._cons.length); + } +}); + + dojox.form.UploaderOrg = dojox.form.Uploader; + var extensions = [dojox.form.UploaderOrg]; + dojox.form.addUploaderPlugin = function(plug){ + // summary: + // Handle Uploader plugins. When the dojox.form.addUploaderPlugin() function is called, + // the dojox.form.Uploader is recreated using the new plugin (mixin). + // + extensions.push(plug); + declare("dojox.form.Uploader", extensions, {}); + } + + return dojox.form.Uploader; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/_FormSelectWidget.js b/js/dojo-release-1.7.2-src/dojox/form/_FormSelectWidget.js new file mode 100644 index 0000000..8ac7e4c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/_FormSelectWidget.js @@ -0,0 +1,10 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dijit/form/_FormSelectWidget" +], function(kernel, lang, _FormSelectWidget){ + kernel.deprecated("dojox.form._FormSelectWidget", "Use dijit.form._FormSelectWidget instead", "2.0"); + + lang.setObject("dojox.form._FormSelectWidget", _FormSelectWidget); + return _FormSelectWidget; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/_HasDropDown.js b/js/dojo-release-1.7.2-src/dojox/form/_HasDropDown.js new file mode 100644 index 0000000..252e65e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/_HasDropDown.js @@ -0,0 +1,10 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dijit/_HasDropDown" +], function(kernel, _HasDropDown){ + kernel.deprecated("dojox.form._HasDropDown", "Use dijit._HasDropDown instead", "2.0"); + + lang.setObject("dojox.form._HasDropDown", _HasDropDown); + return _HasDropDown; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/_SelectStackMixin.js b/js/dojo-release-1.7.2-src/dojox/form/_SelectStackMixin.js new file mode 100644 index 0000000..5818a31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/_SelectStackMixin.js @@ -0,0 +1,221 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dijit/_base/manager", + "dojo/_base/connect", + "dojo/_base/declare" +], function(lang, array, manager, connect, declare){ + +return declare("dojox.form._SelectStackMixin", null, { + // summary: + // Mix this class in to a dijit.form._FormSelectWidget in order to + // provide support for "selectable" multiforms. The widget is pointed + // to a dijit.layout.StackContainer and will handle displaying and + // submitting the values of only the appropriate pane. + // + // The options for this widget will be automatically set - based on + // the panes that are in the stack container. The "title" attribute of + // the pane will be used for the display of the option. The "id" attribute + // of the pane will be used as the value of the option. In order to + // avoid running into unique ID constraint issues, a stackPrefix mechanism + // is provided. + + // stackId: string + // The id of the stack that this widget is supposed to control + stackId: "", + + // stackPrefix: string + // A prefix to remove from our stack pane ids when setting our options. + // This exists so that we won't run into unique ID constraints. For + // example, if stackPrefix is set to "foo_", and there are three panes + // in our stack with ids of "foo_a", "foo_b", and "foo_c", then the values + // of the options created for the stack controller widget will be "a", + // "b", and "c". This allows you to have multiple select stack widgets + // with the same values - without having to have the panes require the + // same ids. + stackPrefix: "", + + _paneIdFromOption: function(/*String*/ oVal){ + // summary: Gets the pane ID given an option value + return (this.stackPrefix || "") + oVal; // String + }, + + _optionValFromPane: function(/*String*/ id){ + // summary: Gets the option value given a pane ID + var sp = this.stackPrefix; + if(sp && id.indexOf(sp) === 0){ + return id.substring(sp.length); // String + } + return id; // String + }, + + _togglePane: function(/*dijit._Widget*/ pane, /*Boolean*/ shown){ + // summary: called when a pane is either shown or hidden (so that + // we can toggle the widgets on it) + + if(pane._shown != undefined && pane._shown == shown){ return; } + var widgets = array.filter(pane.getDescendants(), "return item.name;"); + if(!shown){ + // We are hiding - save the current state and then disable them + savedStates = {}; + array.forEach(widgets, function(w){ + savedStates[w.id] = w.disabled; + w.set("disabled", true); + }); + pane._savedStates = savedStates; + }else{ + // We are showing - restore our saved states + var savedStates = pane._savedStates||{}; + array.forEach(widgets, function(w){ + var state = savedStates[w.id]; + if(state == undefined){ + state = false; + } + w.set("disabled", state); + }); + delete pane._savedStates; + } + pane._shown = shown; + }, + + _connectTitle: function(/*dijit._Widget*/ pane, /*String*/ value){ + var fx = lang.hitch(this, function(title){ + this.updateOption({value: value, label: title}); + }); + if(pane._setTitleAttr){ + this.connect(pane, "_setTitleAttr", fx); + }else{ + this.connect(pane, "attr", function(attr, val){ + if(attr == "title" && arguments.length > 1){ + fx(val); + } + }); + } + }, + + onAddChild: function(/*dijit._Widget*/ pane, /*Integer?*/ insertIndex){ + // summary: Called when the stack container adds a new pane + if(!this._panes[pane.id]){ + this._panes[pane.id] = pane; + var v = this._optionValFromPane(pane.id); + this.addOption({value: v, label: pane.title}); + this._connectTitle(pane, v); + } + if(!pane.onShow || !pane.onHide || pane._shown == undefined){ + pane.onShow = lang.hitch(this, "_togglePane", pane, true); + pane.onHide = lang.hitch(this, "_togglePane", pane, false); + pane.onHide(); + } + }, + + _setValueAttr: function(v){ + if("_savedValue" in this){ + return; + } + this.inherited(arguments); + }, + attr: function(/*String|Object*/name, /*Object?*/value){ + if(name == "value" && arguments.length == 2 && "_savedValue" in this){ + this._savedValue = value; + } + return this.inherited(arguments); + }, + + onRemoveChild: function(/*dijit._Widget*/ pane){ + // summary: Called when the stack container removes a pane + if(this._panes[pane.id]){ + delete this._panes[pane.id]; + this.removeOption(this._optionValFromPane(pane.id)); + } + }, + + onSelectChild: function(/*dijit._Widget*/ pane){ + // summary: Called when the stack container selects a new pane + this._setValueAttr(this._optionValFromPane(pane.id)); + }, + + onStartup: function(/*Object*/ info){ + // summary: Called when the stack container is started up + var selPane = info.selected; + this.addOption(array.filter(array.map(info.children, function(c){ + var v = this._optionValFromPane(c.id); + this._connectTitle(c, v); + var toAdd = null; + if(!this._panes[c.id]){ + this._panes[c.id] = c; + toAdd = {value: v, label: c.title}; + } + if(!c.onShow || !c.onHide || c._shown == undefined){ + c.onShow = lang.hitch(this, "_togglePane", c, true); + c.onHide = lang.hitch(this, "_togglePane", c, false); + c.onHide(); + } + if("_savedValue" in this && v === this._savedValue){ + selPane = c; + } + return toAdd; + }, this), function(i){ return i;})); + var _this = this; + var fx = function(){ + // This stuff needs to be run after we show our child, if + // the stack is going to show a different child than is + // selected - see trac #9396 + delete _this._savedValue; + _this.onSelectChild(selPane); + if(!selPane._shown){ + _this._togglePane(selPane, true); + } + }; + if(selPane !== info.selected){ + var stack = manager.byId(this.stackId); + var c = this.connect(stack, "_showChild", function(sel){ + this.disconnect(c); + fx(); + }); + }else{ + fx(); + } + }, + + postMixInProperties: function(){ + this._savedValue = this.value; + this.inherited(arguments); + this.connect(this, "onChange", "_handleSelfOnChange"); + }, + + postCreate: function(){ + this.inherited(arguments); + this._panes = {}; + this._subscriptions = [ + connect.subscribe(this.stackId + "-startup", this, "onStartup"), + connect.subscribe(this.stackId + "-addChild", this, "onAddChild"), + connect.subscribe(this.stackId + "-removeChild", this, "onRemoveChild"), + connect.subscribe(this.stackId + "-selectChild", this, "onSelectChild") + ]; + var stack = manager.byId(this.stackId); + if(stack && stack._started){ + // If we have a stack, and it's already started, call our onStartup now + this.onStartup({children: stack.getChildren(), selected: stack.selectedChildWidget}); + } + }, + + destroy: function(){ + array.forEach(this._subscriptions, connect.unsubscribe); + delete this._panes; // Fixes memory leak in IE + this.inherited("destroy", arguments); + }, + + _handleSelfOnChange: function(/*String*/ val){ + // summary: Called when form select widget's value has changed + var pane = this._panes[this._paneIdFromOption(val)]; + if(pane){ + var s = manager.byId(this.stackId); + if(pane == s.selectedChildWidget){ + s._transition(pane); + }else{ + s.selectChild(pane); + } + } + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/manager/_ClassMixin.js b/js/dojo-release-1.7.2-src/dojox/form/manager/_ClassMixin.js new file mode 100644 index 0000000..e1c2236 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/manager/_ClassMixin.js @@ -0,0 +1,72 @@ +define([ + "dojo/_base/lang", + "dojo/_base/kernel", + "dojo/dom-class", + "./_Mixin", + "dojo/_base/declare" +], function(lang, dojo, domClass, _Mixin, declare){ + var fm = lang.getObject("dojox.form.manager", true), + aa = fm.actionAdapter, + ia = fm.inspectorAdapter; + + return declare("dojox.form.manager._ClassMixin", null, { + // summary: + // Form manager's mixin for testing/assigning/removing + // classes of controlled elements. + // description: + // This mixin provides unified way to check/add/remove a class + // of controlled elements. + // It should be used together with dojox.form.manager.Mixin. + + gatherClassState: function(className, names){ + // summary: + // Gather the presence of a certain class in all controlled elements. + // className: String: + // The class name to test for. + // names: Object?: + // If it is an array, it is a list of names to be processed. + // If it is an object, dictionary keys are names to be processed. + // If it is omitted, all known form elements are to be processed. + + var result = this.inspect(ia(function(name, node){ + return domClass.contains(node, className); + }), names); + + return result; // Object + }, + + addClass: function(className, names){ + // summary: + // Add a class to nodes according to the supplied set of names + // className: String: + // Class name to add. + // names: Object?: + // If it is an array, it is a list of names to be processed. + // If it is an object, dictionary keys are names to be processed. + // If it is omitted, all known form elements are to be processed. + + this.inspect(aa(function(name, node){ + domClass.add(node, className); + }), names); + + return this; // self + }, + + removeClass: function(className, names){ + // summary: + // Remove a class from nodes according to the supplied set of names + // className: String: + // Class name to remove. + // names: Object?: + // If it is an array, it is a list of names to be processed. + // If it is an object, dictionary keys are names to be processed. + // If it is omitted, all known form elements are to be processed. + + this.inspect(aa(function(name, node){ + domClass.remove(node, className); + }), names); + + return this; // self + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/manager/_DisplayMixin.js b/js/dojo-release-1.7.2-src/dojox/form/manager/_DisplayMixin.js new file mode 100644 index 0000000..748ed6d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/manager/_DisplayMixin.js @@ -0,0 +1,65 @@ +define([ + "dojo/_base/kernel", + "dojo/dom-style", + "dojo/_base/declare" +], function(dojo, domStyle, declare){ +return declare("dojox.form.manager._DisplayMixin", null, { + // summary: + // Form manager's mixin for controlling show/hide state of + // controlled elements (defined by dojoAttachPoint attributes). + // description: + // This mixin provides unified show/hide functionality for + // controlled elements (indicated by dojoAttachPoint attribute). + // Essentially it provides a way to change "style.display" + // parameter of controlled nodes. + // It should be used together with dojox.form.manager.Mixin. + + gatherDisplayState: function(names){ + // summary: + // Gather display state of all attached elements and return as a dictionary. + // names: Object?: + // If it is an array, it is a list of names to be processed. + // If it is an object, dictionary keys are names to be processed. + // If it is omitted, all known attach point nodes are to be processed. + + var result = this.inspectAttachedPoints(function(name, node){ + return domStyle.get(node, "display") != "none"; + }, names); + + return result; // Object + }, + + show: function(state, defaultState){ + // summary: + // Show attached nodes according to the supplied state object. + // state: Object?: + // Optional. If a name-value dictionary, the value is true + // to show and false to hide. If an array, all names in the + // array will be set to defaultState. If omitted, all form + // elements will be set to defaultState. + // defaultState: Boolean?: + // The default state (true, if omitted). + + if(arguments.length < 2){ + defaultState = true; + } + + this.inspectAttachedPoints(function(name, node, value){ + domStyle.set(node, "display", value ? "" : "none"); + }, state, defaultState); + + return this; // self + }, + + hide: function(state){ + // summary: + // Hide attached nodes according to the supplied state object. + // state: Object?: + // Optional. If a name-value dictionary, the value is true + // to show and false to hide. If an array, all names in the + // array will be hidden. If omitted, all form elements + // will be hidden. + return this.show(state, false); // self + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/manager/_EnableMixin.js b/js/dojo-release-1.7.2-src/dojox/form/manager/_EnableMixin.js new file mode 100644 index 0000000..8308cbf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/manager/_EnableMixin.js @@ -0,0 +1,83 @@ +define([ + "dojo/_base/lang", + "dojo/_base/kernel", + "dojo/dom-attr", + "./_Mixin", + "dojo/_base/declare" +], function(lang, dojo, domAttr, _Mixin, declare){ + var fm = lang.getObject("dojox.form.manager", true), + aa = fm.actionAdapter, + ia = fm.inspectorAdapter; + + return declare("dojox.form.manager._EnableMixin", null, { + // summary: + // Form manager's mixin for controlling enable/disable state of + // form elements. + // description: + // This mixin provides unified enable/disable functionality for + // form widgets and form elements. It should be used together + // with dojox.form.manager.Mixin. + + gatherEnableState: function(names){ + // summary: + // Gather enable state of all form elements and return as a dictionary. + // names: Object?: + // If it is an array, it is a list of names to be processed. + // If it is an object, dictionary keys are names to be processed. + // If it is omitted, all known form elements are to be processed. + + var result = this.inspectFormWidgets(ia(function(name, widget){ + return !widget.get("disabled"); + }), names); + + if(this.inspectFormNodes){ + lang.mixin(result, this.inspectFormNodes(ia(function(name, node){ + return !domAttr.get(node, "disabled"); + }), names)); + } + + return result; // Object + }, + + enable: function(state, defaultState){ + // summary: + // Enable form controls according to the supplied state object. + // state: Object?: + // Optional. If a name-value dictionary, the value is true + // to enable and false to disable. If an array, all names in the + // array will be set to defaultState. If omitted, all form + // elements will be set to defaultState. + // defaultState: Boolean: + // The default state (true, if omitted). + + if(arguments.length < 2 || defaultState === undefined){ + defaultState = true; + } + + this.inspectFormWidgets(aa(function(name, widget, value){ + widget.set("disabled", !value); + }), state, defaultState); + + if(this.inspectFormNodes){ + this.inspectFormNodes(aa(function(name, node, value){ + domAttr.set(node, "disabled", !value); + }), state, defaultState); + } + + return this; // self + }, + + disable: function(state){ + // summary: + // Disable form controls according to the supplied state object + // returning the previous state. + // state: Object?: + // Optional. If a name-value dictionary, the value is true + // to enable and false to disable. If an array, all names in the + // array will be disabled. If omitted, disables all. + var oldState = this.gatherEnableState(); + this.enable(state, false); + return oldState; // Object + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/manager/_FormMixin.js b/js/dojo-release-1.7.2-src/dojox/form/manager/_FormMixin.js new file mode 100644 index 0000000..5b876f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/manager/_FormMixin.js @@ -0,0 +1,155 @@ +define([ + "dojo/_base/lang", + "dojo/_base/kernel", + "dojo/_base/event", + "dojo/window", + "./_Mixin", + "dojo/_base/declare" +], function(lang, dojo, event, windowUtils, _Mixin, declare){ + var fm = lang.getObject("dojox.form.manager", true), + aa = fm.actionAdapter; + + return declare("dojox.form.manager._FormMixin", null, { + // summary: + // Form manager's mixin for form-specific functionality. + // description: + // This mixin adds automated "onreset", and "onsubmit" event processing + // if we are based on a form node, defines onReset(), onSubmit(), + // reset(), submit(), and isValid() methods like dijit.form.Form. + // It should be used together with dojox.form.manager.Mixin. + + // HTML attributes (if we are based on the form element) + name: "", + action: "", + method: "", + encType: "", + "accept-charset": "", + accept: "", + target: "", + + startup: function(){ + this.isForm = this.domNode.tagName.toLowerCase() == "form"; + if(this.isForm){ + this.connect(this.domNode, "onreset", "_onReset"); + this.connect(this.domNode, "onsubmit", "_onSubmit"); + } + this.inherited(arguments); + }, + + // form-specific functionality + + _onReset: function(evt){ + // NOTE: this function is taken from dijit.formForm, it works only + // for form-based managers. + + // create fake event so we can know if preventDefault() is called + var faux = { + returnValue: true, // the IE way + preventDefault: function(){ // not IE + this.returnValue = false; + }, + stopPropagation: function(){}, currentTarget: evt.currentTarget, target: evt.target + }; + // if return value is not exactly false, and haven't called preventDefault(), then reset + if(!(this.onReset(faux) === false) && faux.returnValue){ + this.reset(); + } + event.stop(evt); + return false; + }, + + onReset: function(){ + // summary: + // Callback when user resets the form. This method is intended + // to be over-ridden. When the `reset` method is called + // programmatically, the return value from `onReset` is used + // to compute whether or not resetting should proceed + return true; // Boolean + }, + + reset: function(){ + // summary: + // Resets form widget values. + this.inspectFormWidgets(aa(function(_, widget){ + if(widget.reset){ + widget.reset(); + } + })); + if(this.isForm){ + this.domNode.reset(); + } + return this; + }, + + _onSubmit: function(evt){ + // NOTE: this function is taken from dijit.formForm, it works only + // for form-based managers. + + if(this.onSubmit(evt) === false){ // only exactly false stops submit + event.stop(evt); + } + }, + + onSubmit: function(){ + // summary: + // Callback when user submits the form. This method is + // intended to be over-ridden, but by default it checks and + // returns the validity of form elements. When the `submit` + // method is called programmatically, the return value from + // `onSubmit` is used to compute whether or not submission + // should proceed + + return this.isValid(); // Boolean + }, + + submit: function(){ + // summary: + // programmatically submit form if and only if the `onSubmit` returns true + if(this.isForm){ + if(!(this.onSubmit() === false)){ + this.domNode.submit(); + } + } + }, + + isValid: function(){ + // summary: + // Make sure that every widget that has a validator function returns true. + for(var name in this.formWidgets){ + var stop = false; + aa(function(_, widget){ + if(!widget.get("disabled") && widget.isValid && !widget.isValid()){ + stop = true; + } + }).call(this, null, this.formWidgets[name].widget); + if(stop){ + return false; + } + } + return true; + }, + validate: function(){ + var isValid = true, + formWidgets = this.formWidgets, + didFocus = false, name; + + for(name in formWidgets){ + aa(function(_, widget){ + // Need to set this so that "required" widgets get their + // state set. + widget._hasBeenBlurred = true; + var valid = widget.disabled || !widget.validate || widget.validate(); + if(!valid && !didFocus){ + // Set focus of the first non-valid widget + windowUtils.scrollIntoView(widget.containerNode || widget.domNode); + widget.focus(); + didFocus = true; + } + isValid = isValid && valid; + }).call(this, null, formWidgets[name].widget); + } + + return isValid; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/manager/_Mixin.js b/js/dojo-release-1.7.2-src/dojox/form/manager/_Mixin.js new file mode 100644 index 0000000..a75aa7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/manager/_Mixin.js @@ -0,0 +1,497 @@ +define([ + "dojo/_base/window", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/dom-attr", + "dojo/dom-class", + "dijit/_base/manager", + "dijit/_Widget", + "dijit/form/_FormWidget", + "dijit/form/Button", + "dijit/form/CheckBox", + "dojo/_base/declare" +], function(win, lang, array, connect, domAttr, domClass, manager, Widget, FormWidget, Button, CheckBox, declare){ + // XXX: This class is loading a bunch of extra widgets just to perform isInstanceOf operations, + // which is wasteful + + var fm = lang.getObject("dojox.form.manager", true), + + aa = fm.actionAdapter = function(action){ + // summary: + // Adapter that automates application of actions to arrays. + // action: Function: + // Function that takes three parameters: a name, an object + // (usually node or widget), and a value. This action will + // be applied to all elements of array. + return function(name, elems, value){ + if(lang.isArray(elems)){ + array.forEach(elems, function(elem){ + action.call(this, name, elem, value); + }, this); + }else{ + action.apply(this, arguments); + } + }; + }, + + ia = fm.inspectorAdapter = function(inspector){ + // summary: + // Adapter that applies an inspector only to the first item of the array. + // inspector: Function: + // Function that takes three parameters: a name, an object + // (usually node or widget), and a value. + return function(name, elem, value){ + return inspector.call(this, name, lang.isArray(elem) ? elem[0] : elem, value); + }; + }, + + skipNames = {domNode: 1, containerNode: 1, srcNodeRef: 1, bgIframe: 1}, + + keys = fm._keys = function(o){ + // similar to dojox.lang.functional.keys + var list = [], key; + for(key in o){ + if(o.hasOwnProperty(key)){ + list.push(key); + } + } + return list; + }, + + registerWidget = function(widget){ + var name = widget.get("name"); + if(name && widget instanceof FormWidget){ + if(name in this.formWidgets){ + var a = this.formWidgets[name].widget; + if(lang.isArray(a)){ + a.push(widget); + }else{ + this.formWidgets[name].widget = [a, widget]; + } + }else{ + this.formWidgets[name] = {widget: widget, connections: []}; + } + }else{ + name = null; + } + return name; + }, + + getObserversFromWidget = function(name){ + var observers = {}; + aa(function(_, w){ + var o = w.get("observer"); + if(o && typeof o == "string"){ + array.forEach(o.split(","), function(o){ + o = lang.trim(o); + if(o && lang.isFunction(this[o])){ + observers[o] = 1; + } + }, this); + } + }).call(this, null, this.formWidgets[name].widget); + return keys(observers); + }, + + connectWidget = function(name, observers){ + var t = this.formWidgets[name], w = t.widget, c = t.connections; + if(c.length){ + array.forEach(c, connect.disconnect); + c = t.connections = []; + } + if(lang.isArray(w)){ + // radio buttons + array.forEach(w, function(w){ + array.forEach(observers, function(o){ + c.push(connect.connect(w, "onChange", this, function(evt){ + // TODO: for some reason for radio button widgets + // w.checked != w.focusNode.checked when value changes. + // We test the underlying value to be 100% sure. + if(this.watching && domAttr.get(w.focusNode, "checked")){ + this[o](w.get("value"), name, w, evt); + } + })); + }, this); + }, this); + }else{ + // the rest + // the next line is a crude workaround for Button that fires onClick instead of onChange + var eventName = w.isInstanceOf(Button) ? + "onClick" : "onChange"; + array.forEach(observers, function(o){ + c.push(connect.connect(w, eventName, this, function(evt){ + if(this.watching){ + this[o](w.get("value"), name, w, evt); + } + })); + }, this); + } + }; + + var _Mixin = declare("dojox.form.manager._Mixin", null, { + // summary: + // Mixin to orchestrate dynamic forms. + // description: + // This mixin provideas a foundation for an enhanced form + // functionality: unified access to individual form elements, + // unified "onchange" event processing, general event + // processing, I/O orchestration, and common form-related + // functionality. See additional mixins in dojox.form.manager + // namespace. + + watching: true, + + startup: function(){ + // summary: + // Called after all the widgets have been instantiated and their + // dom nodes have been inserted somewhere under win.doc.body. + + if(this._started){ return; } + + this.formWidgets = {}; + this.formNodes = {}; + this.registerWidgetDescendants(this); + + this.inherited(arguments); + }, + + destroy: function(){ + // summary: + // Called when the widget is being destroyed + + for(var name in this.formWidgets){ + array.forEach(this.formWidgets[name].connections, connect.disconnect); + } + this.formWidgets = {}; + + this.inherited(arguments); + }, + + // register/unregister widgets and nodes + + registerWidget: function(widget){ + // summary: + // Register a widget with the form manager + // widget: String|Node|dijit.form._FormWidget: + // A widget, or its widgetId, or its DOM node + // returns: Object: + // Returns self + if(typeof widget == "string"){ + widget = manager.byId(widget); + }else if(widget.tagName && widget.cloneNode){ + widget = manager.byNode(widget); + } + var name = registerWidget.call(this, widget); + if(name){ + connectWidget.call(this, name, getObserversFromWidget.call(this, name)); + } + return this; + }, + + unregisterWidget: function(name){ + // summary: + // Removes the widget by name from internal tables unregistering + // connected observers + // name: String: + // Name of the to unregister + // returns: Object: + // Returns self + if(name in this.formWidgets){ + array.forEach(this.formWidgets[name].connections, this.disconnect, this); + delete this.formWidgets[name]; + } + return this; + }, + + registerWidgetDescendants: function(widget){ + // summary: + // Register widget's descendants with the form manager + // widget: String|Node|dijit._Widget: + // A widget, or its widgetId, or its DOM node + // returns: Object: + // Returns self + + // convert to widget, if required + if(typeof widget == "string"){ + widget = manager.byId(widget); + }else if(widget.tagName && widget.cloneNode){ + widget = manager.byNode(widget); + } + + // build the map of widgets + var widgets = array.map(widget.getDescendants(), registerWidget, this); + + // process observers for widgets + array.forEach(widgets, function(name){ + if(name){ + connectWidget.call(this, name, getObserversFromWidget.call(this, name)); + } + }, this); + + // do the same with nodes, if available + return this.registerNodeDescendants ? + this.registerNodeDescendants(widget.domNode) : this; + }, + + unregisterWidgetDescendants: function(widget){ + // summary: + // Unregister widget's descendants with the form manager + // widget: String|Node|dijit._Widget: + // A widget, or its widgetId, or its DOM node + // returns: Object: + // Returns self + + // convert to widget, if required + if(typeof widget == "string"){ + widget = manager.byId(widget); + }else if(widget.tagName && widget.cloneNode){ + widget = manager.byNode(widget); + } + + // unregister widgets by names + array.forEach( + array.map( + widget.getDescendants(), + function(w){ + return w instanceof FormWidget && w.get("name") || null; + } + ), + function(name){ + if(name){ + this.unregisterNode(name); + } + }, + this + ); + + // do the same with nodes, if available + return this.unregisterNodeDescendants ? + this.unregisterNodeDescendants(widget.domNode) : this; + }, + + // value accessors + + formWidgetValue: function(elem, value){ + // summary: + // Set or get a form widget by name. + // elem: String|Object|Array: + // Form element's name, widget object, or array or radio widgets. + // value: Object?: + // Optional. The value to set. + // returns: Object: + // For a getter it returns the value, for a setter it returns + // self. If the elem is not valid, null will be returned. + + var isSetter = arguments.length == 2 && value !== undefined, result; + + if(typeof elem == "string"){ + elem = this.formWidgets[elem]; + if(elem){ + elem = elem.widget; + } + } + + if(!elem){ + return null; // Object + } + + if(lang.isArray(elem)){ + // input/radio array of widgets + if(isSetter){ + array.forEach(elem, function(widget){ + widget.set("checked", false, !this.watching); + }); + array.forEach(elem, function(widget){ + widget.set("checked", widget.value === value, !this.watching); + }); + return this; // self + } + // getter + array.some(elem, function(widget){ + // TODO: for some reason for radio button widgets + // w.checked != w.focusNode.checked when value changes. + // We test the underlying value to be 100% sure. + if(domAttr.get(widget.focusNode, "checked")){ + //if(widget.get("checked")){ + result = widget; + return true; + } + return false; + }); + return result ? result.get("value") : ""; // String + } + + // checkbox widget is a special case :-( + if(elem.isInstanceOf && elem.isInstanceOf(CheckBox)){ + if(isSetter){ + elem.set("value", Boolean(value), !this.watching); + return this; // self + } + return Boolean(elem.get("value")); // Object + } + + // all other elements + if(isSetter){ + elem.set("value", value, !this.watching); + return this; // self + } + return elem.get("value"); // Object + }, + + formPointValue: function(elem, value){ + // summary: + // Set or get a node context by name (using dojoAttachPoint). + // elem: String|Object|Array: + // A node. + // value: Object?: + // Optional. The value to set. + // returns: Object: + // For a getter it returns the value, for a setter it returns + // self. If the elem is not valid, null will be returned. + + if(elem && typeof elem == "string"){ + elem = this[elem]; + } + + if(!elem || !elem.tagName || !elem.cloneNode){ + return null; // Object + } + + if(!domClass.contains(elem, "dojoFormValue")){ + // accessing the value of the attached point not marked with CSS class 'dojoFormValue' + return null; + } + + if(arguments.length == 2 && value !== undefined){ + // setter + elem.innerHTML = value; + return this; // self + } + // getter + return elem.innerHTML; // String + }, + + // inspectors + + inspectFormWidgets: function(inspector, state, defaultValue){ + // summary: + // Run an inspector function on controlled widgets returning a result object. + // inspector: Function: + // A function to be called on a widget. Takes three arguments: a name, a widget object + // or an array of widget objects, and a supplied value. Runs in the context of + // the form manager. Returns a value that will be collected and returned as a state. + // state: Object?: + // Optional. If a name-value dictionary --- only listed names will be processed. + // If an array, all names in the array will be processed with defaultValue. + // If omitted or null, all widgets will be processed with defaultValue. + // defaultValue: Object?: + // Optional. The default state (true, if omitted). + + var name, result = {}; + + if(state){ + if(lang.isArray(state)){ + array.forEach(state, function(name){ + if(name in this.formWidgets){ + result[name] = inspector.call(this, name, this.formWidgets[name].widget, defaultValue); + } + }, this); + }else{ + for(name in state){ + if(name in this.formWidgets){ + result[name] = inspector.call(this, name, this.formWidgets[name].widget, state[name]); + } + } + } + }else{ + for(name in this.formWidgets){ + result[name] = inspector.call(this, name, this.formWidgets[name].widget, defaultValue); + } + } + + return result; // Object + }, + + inspectAttachedPoints: function(inspector, state, defaultValue){ + // summary: + // Run an inspector function on "dojoAttachPoint" nodes returning a result object. + // inspector: Function: + // A function to be called on a node. Takes three arguments: a name, a node or + // an array of nodes, and a supplied value. Runs in the context of the form manager. + // Returns a value that will be collected and returned as a state. + // state: Object?: + // Optional. If a name-value dictionary --- only listed names will be processed. + // If an array, all names in the array will be processed with defaultValue. + // If omitted or null, all attached point nodes will be processed with defaultValue. + // defaultValue: Object?: + // Optional. The default state (true, if omitted). + + var name, result = {}; + + if(state){ + if(lang.isArray(state)){ + array.forEach(state, function(name){ + var elem = this[name]; + if(elem && elem.tagName && elem.cloneNode){ + result[name] = inspector.call(this, name, elem, defaultValue); + } + }, this); + }else{ + for(name in state){ + var elem = this[name]; + if(elem && elem.tagName && elem.cloneNode){ + result[name] = inspector.call(this, name, elem, state[name]); + } + } + } + }else{ + for(name in this){ + if(!(name in skipNames)){ + var elem = this[name]; + if(elem && elem.tagName && elem.cloneNode){ + result[name] = inspector.call(this, name, elem, defaultValue); + } + } + } + } + + return result; // Object + }, + + inspect: function(inspector, state, defaultValue){ + // summary: + // Run an inspector function on controlled elements returning a result object. + // inspector: Function: + // A function to be called on a widget, form element, and an attached node. + // Takes three arguments: a name, a node (domNode in the case of widget) or + // an array of such objects, and a supplied value. Runs in the context of + // the form manager. Returns a value that will be collected and returned as a state. + // state: Object?: + // Optional. If a name-value dictionary --- only listed names will be processed. + // If an array, all names in the array will be processed with defaultValue. + // If omitted or null, all controlled elements will be processed with defaultValue. + // defaultValue: Object?: + // Optional. The default state (true, if omitted). + + var result = this.inspectFormWidgets(function(name, widget, value){ + if(lang.isArray(widget)){ + return inspector.call(this, name, array.map(widget, function(w){ return w.domNode; }), value); + } + return inspector.call(this, name, widget.domNode, value); + }, state, defaultValue); + if(this.inspectFormNodes){ + lang.mixin(result, this.inspectFormNodes(inspector, state, defaultValue)); + } + return lang.mixin(result, this.inspectAttachedPoints(inspector, state, defaultValue)); // Object + } + }); + +// These arguments can be specified for widgets which are used in forms. +// Since any widget can be specified as sub widgets, mix it into the base +// widget class. (This is a hack, but it's effective.) +lang.extend(Widget, { + observer: "" +}); +return _Mixin; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/manager/_NodeMixin.js b/js/dojo-release-1.7.2-src/dojox/form/manager/_NodeMixin.js new file mode 100644 index 0000000..643a562 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/manager/_NodeMixin.js @@ -0,0 +1,368 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/dom", + "dojo/dom-attr", + "dojo/query", + "./_Mixin", + "dijit/form/_FormWidget", + "dijit/_base/manager", + "dojo/_base/declare" +], function(lang, array, connect, dom, domAttr, query, _Mixin, _FormWidget, manager, declare){ + var fm = lang.getObject("dojox.form.manager", true), + aa = fm.actionAdapter, + keys = fm._keys, + + ce = fm.changeEvent = function(node){ + // summary: + // Function that returns a valid "onchange" event for a given form node. + // node: Node: + // Form node. + + var eventName = "onclick"; + switch(node.tagName.toLowerCase()){ + case "textarea": + eventName = "onkeyup"; + break; + case "select": + eventName = "onchange"; + break; + case "input": + switch(node.type.toLowerCase()){ + case "text": + case "password": + eventName = "onkeyup"; + break; + } + break; + // button, input/button, input/checkbox, input/radio, + // input/file, input/image, input/submit, input/reset + // use "onclick" (the default) + } + return eventName; // String + }, + + registerNode = function(node, groupNode){ + var name = domAttr.get(node, "name"); + groupNode = groupNode || this.domNode; + if(name && !(name in this.formWidgets)){ + // verify that it is not part of any widget + for(var n = node; n && n !== groupNode; n = n.parentNode){ + if(domAttr.get(n, "widgetId") && manager.byNode(n).isInstanceOf(_FormWidget)){ + // this is a child of some widget --- bail out + return null; + } + } + // register the node + if(node.tagName.toLowerCase() == "input" && node.type.toLowerCase() == "radio"){ + var a = this.formNodes[name]; + a = a && a.node; + if(a && lang.isArray(a)){ + a.push(node); + }else{ + this.formNodes[name] = {node: [node], connections: []}; + } + }else{ + this.formNodes[name] = {node: node, connections: []}; + } + }else{ + name = null; + } + return name; + }, + + getObserversFromNode = function(name){ + var observers = {}; + aa(function(_, n){ + var o = domAttr.get(n, "observer"); + if(o && typeof o == "string"){ + array.forEach(o.split(","), function(o){ + o = lang.trim(o); + if(o && lang.isFunction(this[o])){ + observers[o] = 1; + } + }, this); + } + }).call(this, null, this.formNodes[name].node); + return keys(observers); + }, + + connectNode = function(name, observers){ + var t = this.formNodes[name], c = t.connections; + if(c.length){ + array.forEach(c, connect.disconnect); + c = t.connections = []; + } + aa(function(_, n){ + // the next line is a crude workaround for Button that fires onClick instead of onChange + var eventName = ce(n); + array.forEach(observers, function(o){ + c.push(connect.connect(n, eventName, this, function(evt){ + if(this.watching){ + this[o](this.formNodeValue(name), name, n, evt); + } + })); + }, this); + }).call(this, null, t.node); + }; + + return declare("dojox.form.manager._NodeMixin", null, { + // summary: + // Mixin to orchestrate dynamic forms (works with DOM nodes). + // description: + // This mixin provideas a foundation for an enhanced form + // functionality: unified access to individual form elements, + // unified "onchange" event processing, and general event + // processing. It complements dojox.form.manager._Mixin + // extending the functionality to DOM nodes. + + destroy: function(){ + // summary: + // Called when the widget is being destroyed + + for(var name in this.formNodes){ + array.forEach(this.formNodes[name].connections, connect.disconnect); + } + this.formNodes = {}; + + this.inherited(arguments); + }, + + // register/unregister widgets and nodes + + registerNode: function(node){ + // summary: + // Register a node with the form manager + // node: String|Node: + // A node, or its id + // returns: Object: + // Returns self + if(typeof node == "string"){ + node = dom.byId(node); + } + var name = registerNode.call(this, node); + if(name){ + connectNode.call(this, name, getObserversFromNode.call(this, name)); + } + return this; + }, + + unregisterNode: function(name){ + // summary: + // Removes the node by name from internal tables unregistering + // connected observers + // name: String: + // Name of the to unregister + // returns: Object: + // Returns self + if(name in this.formNodes){ + array.forEach(this.formNodes[name].connections, this.disconnect, this); + delete this.formNodes[name]; + } + return this; + }, + + registerNodeDescendants: function(node){ + // summary: + // Register node's descendants (form nodes) with the form manager + // node: String|Node: + // A widget, or its widgetId, or its DOM node + // returns: Object: + // Returns self + + if(typeof node == "string"){ + node = dom.byId(node); + } + + query("input, select, textarea, button", node). + map(function(n){ + return registerNode.call(this, n, node); + }, this). + forEach(function(name){ + if(name){ + connectNode.call(this, name, getObserversFromNode.call(this, name)); + } + }, this); + + return this; + }, + + unregisterNodeDescendants: function(node){ + // summary: + // Unregister node's descendants (form nodes) with the form manager + // node: String|Node: + // A widget, or its widgetId, or its DOM node + // returns: Object: + // Returns self + + if(typeof node == "string"){ + node = dom.byId(node); + } + + query("input, select, textarea, button", node). + map(function(n){ return domAttr.get(node, "name") || null; }). + forEach(function(name){ + if(name){ + this.unregisterNode(name); + } + }, this); + + return this; + }, + + // value accessors + + formNodeValue: function(elem, value){ + // summary: + // Set or get a form element by name. + // elem: String|Node|Array: + // Form element's name, DOM node, or array or radio nodes. + // value: Object?: + // Optional. The value to set. + // returns: Object: + // For a getter it returns the value, for a setter it returns + // self. If the elem is not valid, null will be returned. + + var isSetter = arguments.length == 2 && value !== undefined, result; + + if(typeof elem == "string"){ + elem = this.formNodes[elem]; + if(elem){ + elem = elem.node; + } + } + + if(!elem){ + return null; // Object + } + + if(lang.isArray(elem)){ + // input/radio array + if(isSetter){ + array.forEach(elem, function(node){ + node.checked = ""; + }); + array.forEach(elem, function(node){ + node.checked = node.value === value ? "checked" : ""; + }); + return this; // self + } + // getter + array.some(elem, function(node){ + if(node.checked){ + result = node; + return true; + } + return false; + }); + return result ? result.value : ""; // String + } + // all other elements + switch(elem.tagName.toLowerCase()){ + case "select": + if(elem.multiple){ + // multiple is allowed + if(isSetter){ + if(lang.isArray(value)){ + var dict = {}; + array.forEach(value, function(v){ + dict[v] = 1; + }); + query("> option", elem).forEach(function(opt){ + opt.selected = opt.value in dict; + }); + return this; // self + } + // singular property + query("> option", elem).forEach(function(opt){ + opt.selected = opt.value === value; + }); + return this; // self + } + // getter + var result = query("> option", elem).filter(function(opt){ + return opt.selected; + }).map(function(opt){ + return opt.value; + }); + return result.length == 1 ? result[0] : result; // Object + } + // singular + if(isSetter){ + query("> option", elem).forEach(function(opt){ + opt.selected = opt.value === value; + }); + return this; // self + } + // getter + return elem.value || ""; // String + case "button": + if(isSetter){ + elem.innerHTML = "" + value; + return this; + } + // getter + return elem.innerHTML; + case "input": + if(elem.type.toLowerCase() == "checkbox"){ + // input/checkbox element + if(isSetter){ + elem.checked = value ? "checked" : ""; + return this; + } + // getter + return Boolean(elem.checked); + } + } + // the rest of inputs + if(isSetter){ + elem.value = "" + value; + return this; + } + // getter + return elem.value; + }, + + // inspectors + + inspectFormNodes: function(inspector, state, defaultValue){ + // summary: + // Run an inspector function on controlled form elements returning a result object. + // inspector: Function: + // A function to be called on a form element. Takes three arguments: a name, a node or + // an array of nodes, and a supplied value. Runs in the context of the form manager. + // Returns a value that will be collected and returned as a state. + // state: Object?: + // Optional. If a name-value dictionary --- only listed names will be processed. + // If an array, all names in the array will be processed with defaultValue. + // If omitted or null, all form elements will be processed with defaultValue. + // defaultValue: Object?: + // Optional. The default state (true, if omitted). + + var name, result = {}; + + if(state){ + if(lang.isArray(state)){ + array.forEach(state, function(name){ + if(name in this.formNodes){ + result[name] = inspector.call(this, name, this.formNodes[name].node, defaultValue); + } + }, this); + }else{ + for(name in state){ + if(name in this.formNodes){ + result[name] = inspector.call(this, name, this.formNodes[name].node, state[name]); + } + } + } + }else{ + for(name in this.formNodes){ + result[name] = inspector.call(this, name, this.formNodes[name].node, defaultValue); + } + } + + return result; // Object + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/manager/_ValueMixin.js b/js/dojo-release-1.7.2-src/dojox/form/manager/_ValueMixin.js new file mode 100644 index 0000000..3ce0062 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/manager/_ValueMixin.js @@ -0,0 +1,81 @@ +define([ + "dojo/_base/lang", + "dojo/_base/kernel", + "dojo/_base/declare" +], function(lang, dojo, declare){ +return declare("dojox.form.manager._ValueMixin", null, { + // summary: + // Form manager's mixin for getting/setting form values in the unified manner. + // description: + // This mixin adds unified access to form widgets and form elements + // in terms of name-value regardless of the underlying type of + // an element. It should be used together with dojox.form.manager.Mixin. + + elementValue: function(name, value){ + // summary: + // Set or get a form widget/element or an attached point node by name. + // name: String: + // The name. + // value: Object?: + // Optional. The value to set. + + if(name in this.formWidgets){ + return this.formWidgetValue(name, value); // Object + } + + if(this.formNodes && name in this.formNodes){ + return this.formNodeValue(name, value); // Object + } + + return this.formPointValue(name, value); // Object + }, + + gatherFormValues: function(names){ + // summary: + // Collect form values. + // names: Object?: + // If it is an array, it is a list of names of form elements to be collected. + // If it is an object, dictionary keys are names to be collected. + // If it is omitted, all known form elements are to be collected. + + var result = this.inspectFormWidgets(function(name){ + return this.formWidgetValue(name); + }, names); + + if(this.inspectFormNodes){ + lang.mixin(result, this.inspectFormNodes(function(name){ + return this.formNodeValue(name); + }, names)); + } + + lang.mixin(result, this.inspectAttachedPoints(function(name){ + return this.formPointValue(name); + }, names)); + + return result; // Object + }, + + setFormValues: function(values){ + // summary: + // Set values to form elements + // values: Object: + // A dictionary of key-value pairs. + if(values){ + this.inspectFormWidgets(function(name, widget, value){ + this.formWidgetValue(name, value); + }, values); + + if(this.inspectFormNodes){ + this.inspectFormNodes(function(name, node, value){ + this.formNodeValue(name, value); + }, values); + } + + this.inspectAttachedPoints(function(name, node, value){ + this.formPointValue(name, value); + }, values); + } + return this; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/CheckedMultiSelect.js new file mode 100644 index 0000000..d395164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/CheckedMultiSelect.js @@ -0,0 +1,36 @@ +define({ root: +//begin v1.x content +({ + invalidMessage: "At least one item must be selected.", + multiSelectLabelText: "{num} item(s) selected" +}) +//end v1.x content +, +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/PasswordValidator.js new file mode 100644 index 0000000..2832e0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/PasswordValidator.js @@ -0,0 +1,40 @@ +define({ root: +//begin v1.x content +({ + nomatchMessage: "Passwords do not match.", + badPasswordMessage: "Invalid Password." +}) +//end v1.x content +, +"ar": true, +"az": true, +"ca": true, +"cs": true, +"da": true, +"de": true, +"el": true, +"es": true, +"fi": true, +"fr": true, +"he": true, +"hu": true, +"hr": true, +"it": true, +"ja": true, +"kk": true, +"ko": true, +"nb": true, +"nl": true, +"pl": true, +"pt-pt": true, +"pt": true, +"ro": true, +"ru": true, +"sk": true, +"sl": true, +"sv": true, +"th": true, +"tr": true, +"zh": true, +"zh-tw": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/Uploader.js new file mode 100644 index 0000000..8f1aab7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/Uploader.js @@ -0,0 +1,35 @@ +define({ root: +//begin v1.x content +({ + label: "Select Files..." +}) +//end v1.x content +, +"zh": true, +"zh-tw": true, +"tr": true, +"th": true, +"sv": true, +"sl": true, +"sk": true, +"ru": true, +"ro": true, +"pt": true, +"pl": true, +"nl": true, +"nb": true, +"ko": true, +"kk": true, +"ja": true, +"it": true, +"hu": true, +"hr": true, +"fr": true, +"fi": true, +"es": true, +"el": true, +"de": true, +"da": true, +"cs": true, +"ca": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ar/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ar/PasswordValidator.js new file mode 100644 index 0000000..092a83f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ar/PasswordValidator.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + nomatchMessage: "كلمات السرية غير مطابقة.", + badPasswordMessage: "كلمة سرية غير صحيحة." +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/az/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/az/PasswordValidator.js new file mode 100644 index 0000000..31a42d3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/az/PasswordValidator.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + "badPasswordMessage" : "Səhv şifrə.", + "nomatchMessage" : "Şifrələr eyni deyil." +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ca/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ca/CheckedMultiSelect.js new file mode 100644 index 0000000..2a11e1e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ca/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Cal seleccionar, com a mínim, un element.", + multiSelectLabelText: "{num} element(s) seleccionat(s)" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ca/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ca/PasswordValidator.js new file mode 100644 index 0000000..aa58ea8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ca/PasswordValidator.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Les contrasenyes no coincideixen", + badPasswordMessage: "La contrasenya no és correcta" +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ca/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ca/Uploader.js new file mode 100644 index 0000000..3a208d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ca/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Selecciona fitxers..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/cs/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/cs/CheckedMultiSelect.js new file mode 100644 index 0000000..a57cfe4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/cs/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Je třeba vybrat alespoň jednu položku.", + multiSelectLabelText: "Počet vybraných položek: {num}" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/cs/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/cs/PasswordValidator.js new file mode 100644 index 0000000..d07f32e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/cs/PasswordValidator.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Hesla se neshodují.", + badPasswordMessage: "Neplatné heslo." +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/cs/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/cs/Uploader.js new file mode 100644 index 0000000..3ddb79c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/cs/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Vybrat soubory..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/da/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/da/CheckedMultiSelect.js new file mode 100644 index 0000000..8579662 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/da/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Du skal vælge mindst ét element.", + multiSelectLabelText: "{num} element(er) valgt" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/da/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/da/PasswordValidator.js new file mode 100644 index 0000000..fbe94c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/da/PasswordValidator.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Adgangskoderne stemmer ikke overens.", + badPasswordMessage: "Ugyldig adgangskode." +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/da/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/da/Uploader.js new file mode 100644 index 0000000..d44df19 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/da/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Vælg filer..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/de/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/de/CheckedMultiSelect.js new file mode 100644 index 0000000..ce8e895 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/de/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Es muss mindestens ein Element ausgewählt werden.", + multiSelectLabelText: "{num} Element(e) ausgewählt" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/de/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/de/PasswordValidator.js new file mode 100644 index 0000000..eb2bf65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/de/PasswordValidator.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Die Kennwörter stimmen nicht überein.", + badPasswordMessage: "Ungültiges Kennwort." +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/de/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/de/Uploader.js new file mode 100644 index 0000000..4319bbd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/de/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Dateien auswählen..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/el/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/el/CheckedMultiSelect.js new file mode 100644 index 0000000..7dced3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/el/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Πρέπει να επιλέξετε τουλάχιστον ένα στοιχείο.", + multiSelectLabelText: "Επιλέχθηκε(-αν) {num} στοιχείο(-α)" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/el/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/el/PasswordValidator.js new file mode 100644 index 0000000..e89a600 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/el/PasswordValidator.js @@ -0,0 +1,8 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Οι κωδικοί πρόσβασης δεν συμφωνούν.", + badPasswordMessage: "Μη έγκυρος κωδικός πρόσβασης." +}) +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/el/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/el/Uploader.js new file mode 100644 index 0000000..b2494e3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/el/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Επιλογή αρχείων..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/es/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/es/CheckedMultiSelect.js new file mode 100644 index 0000000..6ecbad1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/es/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Se debe seleccionar al menos un elemento.", + multiSelectLabelText: "{num} elemento(s) seleccionado(s)" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/es/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/es/PasswordValidator.js new file mode 100644 index 0000000..1ca3989 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/es/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Las contraseñas no coinciden.", + badPasswordMessage: "Contraseña no válida." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/es/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/es/Uploader.js new file mode 100644 index 0000000..d21e647 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/es/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Seleccionar archivos..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/fi/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/fi/CheckedMultiSelect.js new file mode 100644 index 0000000..2c98859 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/fi/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Ainakin yksi kohde on valittava.", + multiSelectLabelText: "{num} kohde(tta) valittu" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/fi/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/fi/PasswordValidator.js new file mode 100644 index 0000000..28e3e1b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/fi/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Salasanat eivät täsmää.", + badPasswordMessage: "Salasana ei kelpaa." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/fi/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/fi/Uploader.js new file mode 100644 index 0000000..ae10ca3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/fi/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Valitse tiedostot..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/fr/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/fr/CheckedMultiSelect.js new file mode 100644 index 0000000..0d12fb8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/fr/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Au moins un des éléments doit être sélectionné.", + multiSelectLabelText: "{num} élément(s) sélectionné(s)" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/fr/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/fr/PasswordValidator.js new file mode 100644 index 0000000..c454136 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/fr/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Les mots de passe ne correspondent pas.", + badPasswordMessage: "Mot de passe incorrect." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/fr/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/fr/Uploader.js new file mode 100644 index 0000000..2660f79 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/fr/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Sélectionner les fichiers..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/he/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/he/PasswordValidator.js new file mode 100644 index 0000000..7f142bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/he/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "הסיסמאות אינן זהות.", + badPasswordMessage: "סיסמה לא חוקית." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/hr/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/hr/CheckedMultiSelect.js new file mode 100644 index 0000000..6cad133 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/hr/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Mora biti izabrana najmanje jedna stavka.", + multiSelectLabelText: "{num} stavki je izabrano" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/hr/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/hr/PasswordValidator.js new file mode 100644 index 0000000..b6e7dd6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/hr/PasswordValidator.js @@ -0,0 +1,6 @@ +define( +({ + nomatchMessage: "Lozinke se ne podudaraju.", + badPasswordMessage: "Neispravna lozinka." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/hr/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/hr/Uploader.js new file mode 100644 index 0000000..c7f5a33 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/hr/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Izaberite datoteke..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/hu/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/hu/CheckedMultiSelect.js new file mode 100644 index 0000000..ae24ee4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/hu/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Legalább egy tételt ki kell választani.", + multiSelectLabelText: "{num} elem van kiválasztva" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/hu/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/hu/PasswordValidator.js new file mode 100644 index 0000000..3a14fe8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/hu/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "A jelszavak nem egyeznek.", + badPasswordMessage: "Érvénytelen jelszó." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/hu/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/hu/Uploader.js new file mode 100644 index 0000000..ad218cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/hu/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Fájlok kiválasztása..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/it/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/it/CheckedMultiSelect.js new file mode 100644 index 0000000..1d50e02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/it/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "È necessario selezionare almeno un elemento.", + multiSelectLabelText: "{num} elementi selezionati" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/it/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/it/PasswordValidator.js new file mode 100644 index 0000000..9f16917 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/it/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Le password non corrispondono.", + badPasswordMessage: "Password non valida." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/it/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/it/Uploader.js new file mode 100644 index 0000000..810e2ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/it/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Seleziona file..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ja/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ja/CheckedMultiSelect.js new file mode 100644 index 0000000..9c0fe52 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ja/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "少なくとも 1 つの項目を選択しなければなりません。", + multiSelectLabelText: "{num} 個の項目が選択されています" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ja/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ja/PasswordValidator.js new file mode 100644 index 0000000..6656b20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ja/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "パスワードが一致しません。", + badPasswordMessage: "無効なパスワードです。" +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ja/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ja/Uploader.js new file mode 100644 index 0000000..91799e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ja/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "ファイルの選択..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/kk/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/kk/CheckedMultiSelect.js new file mode 100644 index 0000000..5f15b89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/kk/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Кемінде бір элемент таңдалуы керек.", + multiSelectLabelText: "{num} элемент(тер)і таңдалды" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/kk/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/kk/PasswordValidator.js new file mode 100644 index 0000000..88eecd5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/kk/PasswordValidator.js @@ -0,0 +1,5 @@ +({ + nomatchMessage: "Құпия сөздер сәйкес емес.", + badPasswordMessage: "Құпия сөз дұрыс емес." +}) + diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/kk/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/kk/Uploader.js new file mode 100644 index 0000000..7954701 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/kk/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Файлдарды таңдау..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ko/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ko/CheckedMultiSelect.js new file mode 100644 index 0000000..a94d8a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ko/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "최소한 한 가지 항목을 선택해야 합니다.", + multiSelectLabelText: "{num} 항목이 선택되었습니다." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ko/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ko/PasswordValidator.js new file mode 100644 index 0000000..4c3b48f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ko/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "비밀번호가 일치하지 않습니다.", + badPasswordMessage: "올바르지 않은 비밀번호" +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ko/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ko/Uploader.js new file mode 100644 index 0000000..08dd92d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ko/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "파일 선택..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/nb/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/nb/CheckedMultiSelect.js new file mode 100644 index 0000000..27dd69d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/nb/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Du må velge minst ett element.", + multiSelectLabelText: "{num} element(er) valgt" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/nb/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/nb/PasswordValidator.js new file mode 100644 index 0000000..74d430e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/nb/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Passordene samsvarer ikke.", + badPasswordMessage: "Ugyldig passord." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/nb/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/nb/Uploader.js new file mode 100644 index 0000000..bc3b9b7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/nb/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Velg filer..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/nl/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/nl/CheckedMultiSelect.js new file mode 100644 index 0000000..c2130bc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/nl/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Er moet te minste één item worden geselecteerd.", + multiSelectLabelText: "{num} item(s) geselecteerd" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/nl/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/nl/PasswordValidator.js new file mode 100644 index 0000000..bce234d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/nl/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Wachtwoorden komen niet overeen.", + badPasswordMessage: "Ongeldig wachtwoord." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/nl/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/nl/Uploader.js new file mode 100644 index 0000000..c90e9af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/nl/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Bestanden selecteren..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/pl/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/pl/CheckedMultiSelect.js new file mode 100644 index 0000000..76cf9c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/pl/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Należy wybrać co najmniej jeden element.", + multiSelectLabelText: "Wybrano elementów: {num}" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/pl/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/pl/PasswordValidator.js new file mode 100644 index 0000000..b392c66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/pl/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Hasła nie są zgodne.", + badPasswordMessage: "Niepoprawne hasło." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/pl/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/pl/Uploader.js new file mode 100644 index 0000000..0ff4320 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/pl/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Wybierz pliki..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/pt-pt/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/pt-pt/PasswordValidator.js new file mode 100644 index 0000000..a19eda6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/pt-pt/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "As palavras-passe não correspondem.", + badPasswordMessage: "Palavra-passe não válida." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/pt/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/pt/CheckedMultiSelect.js new file mode 100644 index 0000000..2f55328 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/pt/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Ao menos um item deve ser selecionado.", + multiSelectLabelText: "{num} item(ns) selecionado(s)" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/pt/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/pt/PasswordValidator.js new file mode 100644 index 0000000..24c906f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/pt/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "As senhas não correspondem.", + badPasswordMessage: "Senha Inválida." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/pt/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/pt/Uploader.js new file mode 100644 index 0000000..81636e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/pt/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Selecione Arquivos..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ro/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ro/CheckedMultiSelect.js new file mode 100644 index 0000000..4f14e24 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ro/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Trebuie să selectaţi cel puţin un articol.", + multiSelectLabelText: "{num} articole selectate" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ro/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ro/PasswordValidator.js new file mode 100644 index 0000000..368974a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ro/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Parolele nu se potrivesc. ", + badPasswordMessage: "Parola nu este validă. " +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ro/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ro/Uploader.js new file mode 100644 index 0000000..4597c95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ro/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Selectare fişiere..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ru/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ru/CheckedMultiSelect.js new file mode 100644 index 0000000..9f0cd97 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ru/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Необходимо выбрать, как минимум, один элемент.", + multiSelectLabelText: "Выбрано элементов: {num}" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ru/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ru/PasswordValidator.js new file mode 100644 index 0000000..a6b98c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ru/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Пароли не совпадают.", + badPasswordMessage: "Неправильный пароль." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/ru/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/ru/Uploader.js new file mode 100644 index 0000000..c3a6a34 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/ru/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Выберите файлы..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sk/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sk/CheckedMultiSelect.js new file mode 100644 index 0000000..d794e7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sk/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Musíte vybrať aspoň jednu položku.", + multiSelectLabelText: "Vybraté položky: {num}" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sk/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sk/PasswordValidator.js new file mode 100644 index 0000000..785294d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sk/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Heslá sa nezhodujú.", + badPasswordMessage: "Neplatné heslo." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sk/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sk/Uploader.js new file mode 100644 index 0000000..ef95d52 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sk/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Vybrať súbory..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sl/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sl/CheckedMultiSelect.js new file mode 100644 index 0000000..c881343 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sl/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Izbrati morate vsaj eno postavko.", + multiSelectLabelText: "Število izbranih postavk: {num}" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sl/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sl/PasswordValidator.js new file mode 100644 index 0000000..679b4f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sl/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Gesli se ne ujemata.", + badPasswordMessage: "Neveljavno geslo." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sl/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sl/Uploader.js new file mode 100644 index 0000000..0df9fd7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sl/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Izberite datoteke ..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sv/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sv/CheckedMultiSelect.js new file mode 100644 index 0000000..7dafe78 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sv/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "Du måste välja minst ett objekt.", + multiSelectLabelText: "{num} objekt har valts" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sv/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sv/PasswordValidator.js new file mode 100644 index 0000000..3983071 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sv/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Lösenorden stämmer inte överens.", + badPasswordMessage: "Ogiltigt lösenord." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/sv/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/sv/Uploader.js new file mode 100644 index 0000000..ff954ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/sv/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Välj filer..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/th/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/th/CheckedMultiSelect.js new file mode 100644 index 0000000..cdc2746 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/th/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "อย่างน้อยหนึ่งรายการต้องถูกเลือก", + multiSelectLabelText: "{num} รายการถูกเลือก" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/th/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/th/PasswordValidator.js new file mode 100644 index 0000000..771fca4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/th/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "รหัสผ่านไม่ตรงกัน", + badPasswordMessage: "รหัสผ่านไม่ถูกต้อง" +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/th/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/th/Uploader.js new file mode 100644 index 0000000..4553f3e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/th/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "เลือกไฟล์..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/tr/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/tr/CheckedMultiSelect.js new file mode 100644 index 0000000..d336184 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/tr/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "En az bir öğe seçilmiş olmalı.", + multiSelectLabelText: "{num} öğe seçildi" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/tr/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/tr/PasswordValidator.js new file mode 100644 index 0000000..e0c73d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/tr/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "Parolalar eşleşmiyor.", + badPasswordMessage: "Geçersiz Parola." +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/tr/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/tr/Uploader.js new file mode 100644 index 0000000..1ce96dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/tr/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "Dosyaları Seç..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/CheckedMultiSelect.js new file mode 100644 index 0000000..3611f7a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "至少必須選取一個項目。", + multiSelectLabelText: "已選取 {num} 項目" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/PasswordValidator.js new file mode 100644 index 0000000..42e1440 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "密碼不符合。", + badPasswordMessage: "無效的密碼。" +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/Uploader.js new file mode 100644 index 0000000..c640408 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/zh-tw/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "選取檔案..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/zh/CheckedMultiSelect.js b/js/dojo-release-1.7.2-src/dojox/form/nls/zh/CheckedMultiSelect.js new file mode 100644 index 0000000..34c2aba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/zh/CheckedMultiSelect.js @@ -0,0 +1,6 @@ +define( +({ + invalidMessage: "必须至少选择一项。", + multiSelectLabelText: "选择了 {num} 个项" +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/zh/PasswordValidator.js b/js/dojo-release-1.7.2-src/dojox/form/nls/zh/PasswordValidator.js new file mode 100644 index 0000000..e15b442 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/zh/PasswordValidator.js @@ -0,0 +1,9 @@ +define( +//begin v1.x content +({ + nomatchMessage: "密码不匹配。", + badPasswordMessage: "密码无效。" +}) + +//end v1.x content +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/nls/zh/Uploader.js b/js/dojo-release-1.7.2-src/dojox/form/nls/zh/Uploader.js new file mode 100644 index 0000000..0b5b527 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/nls/zh/Uploader.js @@ -0,0 +1,5 @@ +define( +({ + label: "选择文件..." +}) +); diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/BusyButton.css b/js/dojo-release-1.7.2-src/dojox/form/resources/BusyButton.css new file mode 100644 index 0000000..c4be3ee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/BusyButton.css @@ -0,0 +1,13 @@ +/* +**---------------------------------------------------------------------------- +** BusyButton +**---------------------------------------------------------------------------- +*/ +.dojoxBusyButtonIcon { + width: 10px; + height: 10px; + vertical-align: middle; + margin-left: 4px; + background-image: url('images/loading_wheel.gif'); + background-repeat: no-repeat; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/CheckedMultiSelect.css b/js/dojo-release-1.7.2-src/dojox/form/resources/CheckedMultiSelect.css new file mode 100644 index 0000000..8037ee1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/CheckedMultiSelect.css @@ -0,0 +1,278 @@ +/* +**---------------------------------------------------------------------------- +** CheckedMultiSelect +**---------------------------------------------------------------------------- +*/ + +.dojoxCheckedMultiSelectHidden{ + display: none; +} + +.dojoxCheckedMultiSelect .dojoxCheckedMultiSelectWrapper { + border: solid black 1px; + margin: 1px 0; + overflow: scroll; + overflow-y: scroll; + overflow-x: hidden; + height: 100px; +} + +.dj_ie .dojoxCheckedMultiSelectWrapper, +.dj_webkit .dojoxCheckedMultiSelectWrapper { + /* So that the scroll bar doesn't cover stuff up */ + padding-right: 15px; +} + +.dojoxMultiSelectItem { + cursor: default; + padding: 0.1em 0.2em; + white-space: nowrap; +} + +.dojoxCheckedMultiSelectItem { + white-space: nowrap; + padding:.1em .2em; + cursor:default; +} + +.dojoxCheckedMultiSelectDisabled *, +.dojoxCheckedMultiSelectReadOnly * { + color:gray !important; +} + +.dojoxCheckedMultiSelectItemLabel { + margin-left: .2em; +} + +.dojoxCheckedMultiSelect .dojoxCheckedMultiSelectWrapper { + margin: 0em 0.1em; +} + +.dojoxCheckedMultiSelectCheckBoxInput { + opacity: 0.01; +} + +.dj_ie .dojoxCheckedMultiSelectCheckBoxInput { + filter: alpha(opacity=0); + width: 15px; + height: 16px; +} + +.dijit_a11y .dojoxCheckedMultiSelectCheckBoxInput { + opacity: 1; + filter: none; +} + +.dojoxCheckedMultiSelectMenu td.dijitMenuArrowCell { + display: none; +} + +.dojoxCheckedMultiSelectMenu td.dijitMenuItemLabel { + position: static; + padding: 2px; +} + +/* +**---------------------------------------------------------------------------- +** Tundra theme (make look similar to text box) +**---------------------------------------------------------------------------- +*/ +.tundra .dojoxCheckedMultiSelect .dojoxCheckedMultiSelectWrapper { + background:#fff url("../../../dijit/themes/tundra/images/validationInputBg.png") repeat-x top left; + #background:#fff url('../../../dijit/themes/tundra/images/validationInputBg.gif') repeat-x top left; + border:1px solid #b3b3b3; + line-height: normal; +} + +.tundra .dojoxCheckedMultiSelectFocused .dojoxCheckedMultiSelectWrapper { + /* input field when focused (ie: typing affects it) */ + border-color:#406b9b; +} + +/* +**---------------------------------------------------------------------------- +** Soria theme (make look similar to text box) +**---------------------------------------------------------------------------- +*/ +.soria .dojoxCheckedMultiSelect .dojoxCheckedMultiSelectWrapper { + background:#fff url("../../../dijit/themes/soria/images/validationInputBg.png") repeat-x top left; + #background:#fff url('../../../dijit/themes/soria/images/validationInputBg.gif') repeat-x top left; + border:1px solid #8ba0bd; + line-height: normal; +} + +.soria .dojoxCheckedMultiSelectFocused .dojoxCheckedMultiSelectWrapper { + /* input field when focused (ie: typing affects it) */ + border-color:#406b9b; +} + +/* +**---------------------------------------------------------------------------- +** Nihilo theme (make look similar to text box) +**---------------------------------------------------------------------------- +*/ +.nihilo .dojoxCheckedMultiSelect .dojoxCheckedMultiSelectWrapper { + background:#fff url("../../../dijit/themes/nihilo/images/validationInputBg.png") repeat-x top left; + #background:#fff url('../../../dijit/themes/nihilo/images/validationInputBg.gif') repeat-x top left; + border:1px solid #d3d3d3; + line-height: normal; +} + +.nihilo .dojoxCheckedMultiSelectFocused .dojoxCheckedMultiSelectWrapper { + /* input field when focused (ie: typing affects it) */ + border-color:#b3b3b3; +} + +/* +**---------------------------------------------------------------------------- +** Claro theme (make look similar to text box) +**---------------------------------------------------------------------------- +*/ +.claro .dojoxCheckedMultiSelect .dojoxCheckedMultiSelectWrapper { + border: 1px solid #b5bcc7; + background-color: #f7fcff; + line-height: normal; + -webkit-transition-property:background-color, border; + -webkit-transition-duration:.35s; +} + +.claro .dojoxCheckedMultiSelectHover .dojoxCheckedMultiSelectWrapper { + border-color: #769dc0; + background-color: #e9f4fe; + background-image: url('../../../dijit/themes/claro/form/images/textBox_back.png'); + background-repeat: repeat-x; + -webkit-transition-duration:.25s; +} + +.claro .dojoxCheckedMultiSelectFocused .dojoxCheckedMultiSelectWrapper { + border: 1px solid #769dc0; + -webkit-transition-duration:.1s; +} + +.claro .dojoxCheckedMultiSelectMenuCheckBoxItemIcon { + background-image: url('../../../dijit/themes/claro/form/images/checkboxRadioButtonStates.png'); + background-repeat: no-repeat; + background-position: -15px; + width: 15px; + height: 16px; +} + +.claro .dojoxCheckedMultiSelectMenuRadioItemIcon { + background-image: url('../../../dijit/themes/claro/form/images/checkboxRadioButtonStates.png'); + background-repeat: no-repeat; + background-position: -105px; + width: 15px; + height: 16px; +} + +.dj_ie6 .claro .dojoxCheckedMultiSelectMenuItemIcon { + background-image: url('../../../dijit/themes/claro/form/images/checkboxRadioButtonStates.png'); +} + +.claro .dojoxCheckedMultiSelectMenuItemChecked .dojoxCheckedMultiSelectMenuCheckBoxItemIcon { + background-position: 0; +} + +.claro .dojoxCheckedMultiSelectMenuItemChecked .dojoxCheckedMultiSelectMenuRadioItemIcon { + background-position: -90px; +} + +/* Drop down button */ +.claro .dojoxCheckedMultiSelect .dojoxCheckedMultiSelectButton .dijitButtonText { + padding: 2px; +} + +/* normal status */ +.claro .dojoxCheckedMultiSelectButton { + border: 1px solid #b5bcc7; + background-color: #ffffff; + border-collapse: separate; +} + +.claro .dojoxCheckedMultiSelect .dijitButtonNode { + border: 0 solid #b5bcc7; + border-width: 0 0 0 0; +} + +.dj_ie6 .claro .dojoxCheckedMultiSelectButton, .dj_ie6 .claro .dojoxCheckedMultiSelect .dojoxCheckedMultiSelectButton .dijitButtonNode { + background-image: none; +} + +.claro .dojoxCheckedMultiSelectButton .dijitButtonContents { + border: 0 solid #b5bcc7; + border-right-width: 1px; +} + +.claro .dojoxCheckedMultiSelectButton .dijitArrowButton { + padding: 0; + border: 1px solid #ffffff; + border-top: none; + background-color: #efefef; + background-image: url("../../../dijit/themes/claro/form/images/formHighlight.png"); + background-repeat: repeat-x; +} + +.claro .dojoxCheckedMultiSelectButton .dijitArrowButton .dijitArrowButtonInner { + background-image: url("../../../dijit/themes/claro/form/images/commonFormArrows.png"); + background-position: -35px; + background-repeat: no-repeat; + width: 16px; + height: 16px; +} + +/* hover status */ +.claro .dojoxCheckedMultiSelectButtonHover { + border: 1px solid #769dc0; + background-color: #e9f4fe; + background-image: url('../../../dijit/themes/claro/form/images/textBox_back.png'); + background-repeat: repeat-x; +} + +.claro .dojoxCheckedMultiSelectButtonHover .dijitButtonContents { + border-color: #769dc0; +} + +.claro .dojoxCheckedMultiSelectButtonHover .dijitArrowButton { + background-color: #abd6ff; +} + +.claro .dojoxCheckedMultiSelectButtonHover .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px ; +} + +/* focused status */ +.claro .dojoxCheckedMultiSelectButtonFocused { + border: 1px solid #769dc0; +} + +.claro .dojoxCheckedMultiSelectButtonFocused .dijitButtonContents { + border-color: #769dc0; +} + +.claro .dojoxCheckedMultiSelectButtonFocused .dijitArrowButton { + background-color: #7dbefa; + background-position: 0 -177px; + border: none; + padding: 0 1px; +} + +.claro .dojoxCheckedMultiSelectButtonFocused .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px; + margin-bottom: 1px; +} + +/* disable status */ +.claro .dojoxCheckedMultiSelectButtonDisabled { + border: 1px solid #d3d3d3; + background-color: #efefef; + background-image: none; + color: #818181; +} + +.claro .dojoxCheckedMultiSelectButtonDisabled .dijitArrowButton { + background-color: #efefef; +} + +.claro .dojoxCheckedMultiSelectButtonDisabled .dijitArrowButton .dijitArrowButtonInner { + background-position: 0; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/CheckedMultiSelect.html b/js/dojo-release-1.7.2-src/dojox/form/resources/CheckedMultiSelect.html new file mode 100644 index 0000000..5e31a21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/CheckedMultiSelect.html @@ -0,0 +1,8 @@ +
                                  \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/FileInput.css b/js/dojo-release-1.7.2-src/dojox/form/resources/FileInput.css new file mode 100644 index 0000000..a807bc0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/FileInput.css @@ -0,0 +1,128 @@ +.dijitFileInput { + position:relative; + height:1.3em; + /*padding:2px;*/ +} + +.dijitFileInputReal { + position:absolute; + z-index:2; + filter:alpha(opacity:0); + opacity:0; + cursor:pointer; +} +.dijitFileInputRealBlind { + right:0; +} +.dijitFileInputReal:hover { cursor:pointer; } + +.dijitFileInputButton, +.dijitFileInputText { + border:1px solid #333; + padding:2px 12px 2px 12px; + cursor:pointer; +} + +.dijitFileInputButton { + z-index:3; + visibility:hidden; +} +.dijitFakeInput { position:absolute; top:0; left:0; z-index:1; white-space: nowrap; } + +.dijitProgressOverlay { + display:none; + width:250px; + height:1em; + position:absolute; + top:0; left:0; + border:1px solid #333; + background:#cad2de url('../../../dijit/themes/tundra/images/dijitProgressBarAnim.gif') repeat-x top left; + padding:2px; +} + +/* tundra */ +.tundra .dijitProgressOverlay { + border:1px solid #84a3d1; + background-color:#cad2de; +} +.tundra .dijitFakeInput input { + /*font-size: inherit;*/ + padding: 0; + background:#fff url("../../../dijit/themes/tundra/images/validationInputBg.png") repeat-x top left; + border:1px solid #9b9b9b; + line-height: normal; +} +.tundra .dijitFileInputButton, +.tundra .dijitFileInputText { + border:1px solid #9b9b9b; + padding:0px 12px 0px 12px; /* .3em .4em .2em .4em; */ + background:#e9e9e9 url("../../../dijit/themes/tundra/images/buttonEnabled.png") repeat-x top; +} + +/* Soria */ +.soria .dijitProgressOverlay { + border:1px solid #8BA0BD; + background-color:#cad2de; +} +.soria .dijitFakeInput input { + border:1px solid #8BA0BD; + background:#fff url("../../../dijit/themes/soria/images/validationInputBg.png") repeat-x top left; + line-height:normal; + background-position:0 -30px; + padding:0.2em 0.3em; +} +.soria .dijitFileInputButton, +.soria .dijitFileInputText { + border:1px solid #8BA0BD; + padding:2px 12px 2px 12px; + background:#b7cdee url('../../../dijit/themes/soria/images/buttonEnabled.png') repeat-x; +} + +/* Nihilo */ +.nihilo .dijitProgressOverlay { + border:1px solid #DEDEDE; + background-color:#cad2de; +} +.nihilo .dijitFakeInput input { + border:1px solid #DEDEDE; + background:#fff url("../../../dijit/themes/nihilo/images/validationInputBg.png") repeat-x top left; + line-height:normal; + background-position:0 -30px; + padding:0.2em 0.3em; +} +.nihilo .dijitFileInputButton, +.nihilo .dijitFileInputText { + border:1px solid #DEDEDE; + padding:2px 12px 2px 12px; + background:#b7cdee url('../../../dijit/themes/nihilo/images/buttonEnabled.png') repeat-x; +} + +/* Claro */ +.claro .dijitProgressOverlay { + border:1px solid #769dc0; + background-color:#769dc0; +} +.claro .dijitFakeInput input { + border: 1px solid #bcc8dd; + background-color: #fff; + background-repeat: repeat-x; + background-position: top left; + background-image:url("../../../dijit/themes/claro/form/images/textBox_back.png"); + line-height:normal; + padding:0.2em 0.3em; +} + +.claro .dijitFileInputButton, +.claro .dijitFileInputText { + background-image: url("../../../dijit/themes/claro/form/images/button_back_full.png"); + background-position: center top; + background-repeat: repeat-x; + background-color: #cde3f6; + border: 1px solid #799ab7; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + box-shadow:0px 1px 1px rgba(0,0,0,0.2); + -webkit-box-shadow:0px 1px 1px rgba(0,0,0,0.2); + -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.2); +} diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/FileInput.html b/js/dojo-release-1.7.2-src/dojox/form/resources/FileInput.html new file mode 100644 index 0000000..4ffd120 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/FileInput.html @@ -0,0 +1,9 @@ +
                                  + +
                                  + +
                                  ${label}
                                  +
                                  ${cancelText}
                                  +
                                  +
                                  diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/FileInputAuto.html b/js/dojo-release-1.7.2-src/dojox/form/resources/FileInputAuto.html new file mode 100644 index 0000000..12b2148 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/FileInputAuto.html @@ -0,0 +1,9 @@ +
                                  + +
                                  + +
                                  ${label}
                                  +
                                  ${cancelText}
                                  +
                                  +
                                   
                                  +
                                  diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/FilePickerTextBox.css b/js/dojo-release-1.7.2-src/dojox/form/resources/FilePickerTextBox.css new file mode 100644 index 0000000..a2d13d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/FilePickerTextBox.css @@ -0,0 +1,272 @@ +@import url("../../widget/FilePicker/FilePicker.css"); + +.dojoxFilePickerTextBox{ + width: 30em; + vertical-align: middle; +} +.dojoxFilePickerTextBox input:focus{ + outline: none; +} +.dojoxFilePickerTextBoxFocused{ + outline: auto 5px -webkit-focus-ring-color; +} +.dojoxFilePickerTextBox INPUT{ + border-left: solid black 1px; + display:inline; + position:static !important; + border:0 !important; + margin:0 !important; + vertical-align:top !important; + visibility:visible !important; + background-color:transparent !important; + background-image:none !important; + width:100% !important; +} +.dijitRtl .dojoxFilePickerTextBox .dijitInputField { + border-right-width:1px !important; + border-left-width:0 !important; +} + +/* Tundra stylings */ +.tundra .dojoxFilePickerTextBoxDisabled * +{ + cursor: not-allowed !important; +} +.tundra .dojoxFilePickerTextBox { + font-family: sans-serif; + font-size: 100%; +} +.tundra .dojoxFilePickerTextBox { + background:#fff url("../../../dijit/themes/tundra/images/validationInputBg.png") repeat-x top left; + #background:#fff url('../../../dijit/themes/tundra/images/validationInputBg.gif') repeat-x top left; + border:1px solid #b3b3b3; + line-height: normal; +} +.tundra .dojoxFilePickerTextBoxDisabled { + color: gray; +} +.dj_webkit .tundra .dojoxFilePickerTextBoxDisabled { + color: #eee; +} +.tundra .dojoxFilePickerTextBox .dijitInputField { + padding: 1px 0; +} +.tundra .dojoxFilePickerTextBox .dijitButtonNode { + padding: 1px 0.2em; +} +.tundra .dojoxFilePickerTextBox .dijitButtonNode{ + border-color: #9b9b9b; + border-width: 0px 0px 0px 1px; + border-style: solid; +} +.tundra .dojoxFilePickerTextBoxFocused { + border-color:#406b9b; +} +.tundra .dojoxFilePickerTextBoxFocused .dijitButtonNode { + border-left-color:#366dba; +} +.dijitRtl .tundra .dojoxFilePickerTextBox .dijitButtonNode{ + border-color: #9b9b9b; + border-width: 0px 1px 0px 0px; +} +.tundra .dojoxFilePickerTextBoxDisabled { + border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5; + background:#e4e4e4 url("../../../dijit/themes/tundra/images/buttonDisabled.png") top repeat-x; +} +.tundra .dojoxFilePickerTextBoxHover .dijitDownArrowButton { + border-color: #a5beda; + border-bottom-color:#5c7590; + color:#000; + background:#fcfdff url("../../../dijit/themes/tundra/images/buttonHover.png") repeat-x bottom; +} +.tundra .dojoxFilePickerTextBoxActive .dijitDownArrowButton { + border-color:#366dba; + background: #ededed url("../../../dijit/themes/tundra/images/buttonActive.png") bottom repeat-x; +} +.tundra .dojoxFilePickerTextBox .dijitArrowButton .dijitArrowButtonInner { + background-image: url("images/tundraFolderSprite.gif"); + background-repeat: no-repeat; + background-attachment: scroll; + background-position: left center; + height: auto; + width: 16px; + font-size: 100%; + font-size: inherit; +} +.tundra .dojoxFilePickerTextBox .dojoxHasDropDownOpen .dijitArrowButtonInner { + background-position: -16px; +} + +.tundra .dojoxFilePickerTextBoxError { + background-color:#f9f7ba; + background-image:none; +} +.dj_ie6 .tundra .dojoxFilePickerTextBoxError INPUT { + background-color:#f9f7ba !important; +} +.tundra .dojoxFilePickerTextBoxErrorFocused { + background-color:#f9f999; + background-image:none; +} +.dj_ie6 .tundra .dojoxFilePickerTextBoxErrorFocused INPUT { + background-color:#f9f999 !important; +} + +/* nihilo theme */ +.nihilo .dojoxFilePickerTextBoxDisabled * +{ + cursor: not-allowed !important; +} +.nihilo .dojoxFilePickerTextBox{ + margin: 0em 0.1em; +} +.nihilo .dojoxFilePickerTextBox { + background:#fff url("../../../dijit/themes/nihilo/images/validationInputBg.png") repeat-x top left; + #background:#fff url('../../../dijit/themes/nihilo/images/validationInputBg.gif') repeat-x top left; + border:1px solid #d3d3d3; + line-height: normal; +} +.nihilo .dojoxFilePickerTextBox .dijitButtonNode { + padding: 0 0.2em; +} +.nihilo .dojoxFilePickerTextBox .dijitButtonNode{ + border-color: #d3d3d3; + border-left: 1px solid #d3d3d3; +} +.nihilo .dojoxFilePickerTextBoxDisabled { + color: gray; +} +.dj_safari .nihilo .dojoxFilePickerTextBoxDisabled { + color: #eee; +} +.nihilo .dojoxFilePickerTextBoxFocused { + border-color:#b3b3b3; +} +.nihilo .dojoxFilePickerTextBoxFocused .dijitButtonNode, { + border-left-color:#d3d3d3; +} +.dijitRtl .nihilo .dojoxFilePickerTextBox .dijitButtonNode { + border-color: #8ba0bd; + border-left: 0px solid #8ba0bd; + border-right: 1px solid #8ba0bd; +} +.nihilo .dojoxFilePickerTextBoxDisabled { + border-color: #dedede; + background:#fafafa url("../../../dijit/themes/nihilo/images/buttonDisabled.png") top repeat-x; + opacity: 0.60; +} +.nihilo .dojoxFilePickerTextBoxHover .dijitDownArrowButton { + color:#000; + background:#fcfcfc url("../../../dijit/themes/nihilo/images/buttonHover.png") repeat-x top left; +} +.nihilo .dojoxFilePickerTextBoxActive .dijitDownArrowButton { + border-color:#dedede; + background: #f5f5f5 url("../../../dijit/themes/nihilo/images/buttonActive.png") top left repeat-x; +} +.dijitRtl .nihilo .dojoxFilePickerTextBox .dijitButtonNode { + border-width: 0px 0px 0px 1px; +} +.nihilo .dojoxFilePickerTextBox .dijitArrowButton .dijitArrowButtonInner { + background:url("images/nihiloFolderSprite.gif") no-repeat left center; + width: 16px; +} +.nihilo .dojoxFilePickerTextBox .dojoxHasDropDownOpen .dijitArrowButtonInner { + background-position: -16px; +} +.nihilo .dojoxFilePickerTextBoxError { + border-color:#b3b3b3; + background-color:#f9f7ba; + background-image:none; +} +.dj_ie6 .nihilo .dojoxFilePickerTextBoxError INPUT { + background-color:#f9f7ba !important; +} + +.nihilo .dojoxFilePickerTextBoxErrorFocused { + background-color:#ff6; + background-image:none; +} +.dj_ie6 .nihilo .dojoxFilePickerTextBoxErrorFocused INPUT { + background-color:#ff6 !important; +} + +/* soria theme */ +.soria .dojoxFilePickerTextBoxDisabled * +{ + cursor: not-allowed !important; +} +.soria .dojoxFilePickerTextBox{ + margin: 0em 0.1em; +} +.soria .dojoxFilePickerTextBox { + background:#fff url("../../../dijit/themes/soria/images/validationInputBg.png") repeat-x top left; + #background:#fff url('../../../dijit/themes/soria/images/validationInputBg.gif') repeat-x top left; + border:1px solid #8ba0bd; + line-height: normal; +} +.soria .dojoxFilePickerTextBoxDisabled{ + color: gray; +} +.dj_safari .soria .dojoxFilePickerTextBoxDisabled{ + color: #eee; +} +.soria .dojoxFilePickerTextBox .dijitButtonNode { + padding: 0 0.2em; +} +.soria .dojoxFilePickerTextBox .dijitButtonNode{ + border-color: #8ba0bd; + border-left: 1px solid #8ba0bd; +} +.soria .dojoxFilePickerTextBoxFocused { + border-color:#406b9b; +} +.soria .dojoxFilePickerTextBoxFocused .dijitButtonNode { + border-left-color:#8ba0bd; +} +.dijitRtl .soria .dojoxFilePickerTextBox .dijitButtonNode{ + border-color: #8ba0bd; + border-left: 0px solid #8ba0bd; + border-right: 1px solid #8ba0bd; +} +.soria .dojoxFilePickerTextBox .dijitButtonNode { + border-width: 0px 0px 0px 1px; +} +.soria .dojoxFilePickerTextBoxDisabled{ + border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd; + background:#c3d3e5 url("../../../dijit/themes/soria/buttonDisabled.png") top repeat-x; + opacity: 0.60; /* Safari, Opera and Mozilla */ +} +.soria .dojoxFilePickerTextBoxHover .dijitDownArrowButton{ + color:#000; + background:#acc5e2 url("../../../dijit/themes/soria/images/buttonHover.png") repeat-x top left; +} +.soria .dojoxFilePickerTextBoxActive .dijitDownArrowButton { + border-color:#657c9c; + background: #91b4e5 url("../../../dijit/themes/soria/images/buttonActive.png") top left repeat-x; +} +.dijitRtl .soria .dojoxFilePickerTextBox .dijitButtonNode { + border-width: 0px 0px 0px 1px; +} +.soria .dojoxFilePickerTextBox .dijitArrowButton .dijitArrowButtonInner { + background:url("images/soriaFolderSprite.gif") no-repeat left center; + width: 16px; +} +.soria .dojoxFilePickerTextBox .dojoxHasDropDownOpen .dijitArrowButtonInner { + background-position: -16px; +} +.soria .dojoxFilePickerTextBoxError { + border-color:#f3d118; + background-color:#f9f7ba; + background-image:none; +} +.dj_ie6 .soria .dojoxFilePickerTextBoxError INPUT { + background-color:#f9f7ba !important; +} + +.soria .dojoxFilePickerTextBoxErrorFocused { + background-color:#ff6; + background-image:none; +} +.dj_ie6 .soria .dojoxFilePickerTextBoxErrorFocused INPUT { + background-color:#ff6 !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/FilePickerTextBox.html b/js/dojo-release-1.7.2-src/dojox/form/resources/FilePickerTextBox.html new file mode 100644 index 0000000..207dbd4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/FilePickerTextBox.html @@ -0,0 +1,18 @@ +

                                  Χ
                                  diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/FileUploader.css b/js/dojo-release-1.7.2-src/dojox/form/resources/FileUploader.css new file mode 100644 index 0000000..2d268b4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/FileUploader.css @@ -0,0 +1,144 @@ +.dojoxUploaderNorm{ + font-family:Myriad,Helvetica,Tahoma,Arial,clean,sans-serif; + font-size:12px; + border: 1px solid #c0c0c0; + border-bottom: 1px solid #9b9b9b; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #fff url("../../../dijit/themes/tundra/images/buttonEnabled.png") repeat-x bottom left; + + vertical-align: middle; + + margin:0; + line-height:normal; + text-align:center; + white-space: nowrap; + + cursor: pointer; +} + +.uploaderInsideNode{ + visibility:hidden; +} +.dojoxUploaderHover{ + border-color: #a5beda; + border-bottom-color:#5c7590; + color:#243C5F; + background:#fcfdff url("../../../dijit/themes/tundra/images/buttonHover.png") repeat-x bottom; +} +.dojoxUploaderActive{ + border-color:#366dba; + background: #ededed url("../../../dijit/themes/tundra/images/buttonActive.png") bottom repeat-x; +} +.dojoxUploaderDisabled{ + color: #7F7F7F; + border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5; + background:#e4e4e4 url("../../../dijit/themes/tundra/images/buttonDisabled.png") top repeat-x; +} + + +.soria .dojoxUploaderNorm { + border: 1px solid #8ba0bd; + border-bottom:1px solid #657c9c; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #bcd5f0 url("../../../dijit/themes/soria/images/buttonEnabled.png") repeat-x top left; +} +.soria .dojoxUploaderHover{ + color:#243C5F; + background:#acc5e2 url("../../../dijit/themes/soria/images/buttonHover.png") repeat-x top left !important; +} +.soria .dojoxUploaderActive{ + border-color:#657c9c; + background: #91b4e5 url("../../../dijit/themes/soria/images/buttonActive.png") top left repeat-x !important; +} +.soria .dojoxUploaderDisabled{ + border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd; + background:#c3d3e5 url("../../../dijit/themes/soria/images/buttonDisabled.png") top repeat-x !important; + opacity: 0.60; +} + + +.nihilo .dojoxUploaderNorm { + border:1px solid #dedede; + border-bottom:1px solid #dedede; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #fff url("../../../dijit/themes/nihilo/images/buttonEnabled.png") repeat-x top left; +} +.nihilo .dojoxUploaderHover{ + color:#243C5F; + background:#fcfcfc url("../../../dijit/themes/nihilo/images/buttonHover.png") repeat-x top left !important; +} +.nihilo .dojoxUploaderActive{ + border-color:#dedede; + background: #f5f5f5 url("../../../dijit/themes/nihilo/images/buttonActive.png") top left repeat-x !important; +} +.nihilo .dojoxUploaderDisabled{ + border-color: #dedede; + background:#fafafa url("../../../dijit/themes/nihilo/images/buttonDisabled.png") top repeat-x !important; + opacity: 0.60; +} + +.fileToUpload, +.fileToUploadClose, +.fileToUploadName, +.fileToUploadSize{ + height:18px; + line-height:18px; +} + +.fileToUpload{ + font-size:12px; + font-family:sans-serif; + padding:2px; + margin:0px; + width:100%; +} +.fileToUploadName{ + text-align:left; + width:auto !important; +} +.fileToUploadSize{ + width:30px !important; + text-align:right; +} +.dj_ie .fileToUploadSize{ + padding-right:20px; +} +.fileToUploadClose{ + background:url(../../../dijit/themes/tundra/images/tabClose.png) no-repeat 2px center; + width:18px !important; + cursor:pointer; +} +.fileToUploadClose:hover{ + background:url(../../../dijit/themes/tundra/images/tabCloseHover.png) no-repeat 2px center; +} + + +.thumb{ + height:50px; + padding:3px; + border:1px solid #ccc; + margin-bottom:3px; +} +.thumbPic{ + width:50px; + height:50px; + text-align:center; + line-height:50px; + background-color:#000; + float:left; +} +.thumbPic img{ + line-height:50px; + margin:auto auto; + display:block; +} +.thumbText{ + float:left; + margin-left:5px; + font-size:10px; +} +.dj_ie object{ + /* When clicking on the object inspector in Firebug Lite, IE + sets display:none on (flash) objects. Amazing!! */ + display:block !important; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/HorizontalRangeSlider.html b/js/dojo-release-1.7.2-src/dojox/form/resources/HorizontalRangeSlider.html new file mode 100644 index 0000000..6aafba0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/HorizontalRangeSlider.html @@ -0,0 +1,39 @@ +
                                  diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/ListInput.css b/js/dojo-release-1.7.2-src/dojox/form/resources/ListInput.css new file mode 100755 index 0000000..5f4a83b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/ListInput.css @@ -0,0 +1,76 @@ +.dojoxListInput { + border:1px solid #ccc; + background-color:#efefef; + height:auto !important; + max-height:60px; + min-height:20px; + overflow:auto; + position:relative +} +.dojoxListInput ul { + margin:0; + padding:0 +} +.dijitDialogCloseIcon { + display:none; +} +.dojoxListInputClosable .dijitDialogCloseIcon{ + display:inline +} +.dojoxListInputClosable { + padding-right:18px !important +} +.dojoxListInputItem { + float:left; + list-style-type:none; + margin:1px 5px 1px 1px; + padding:0 +} +.dojoxListInputItem .closeText { + display:none; + position:absolute; +} +.dojoxListInputItem .dijitDialogCloseIcon{ + right:auto !important; + border:0 !important; + padding:0!important; +} +.dojoxListInputMatch { + border :1px solid #5EB55E; + background-color:#efffef +} +.dojoxListInputMismatch { + border :1px solid #B55E5E; + background-color:#ffefef +} +.dojoxListInput.dojoxListInputFocused { + border:1px solid #000; + border-right:1px solid #ccc; + border-bottom:1px solid #ccc; + background-color:#fff +} +.dojoxListInputNode { + cursor:text; +} +.dojoxListInput .dijitTextBox { + background:#efefef !important; + + border:0 !important; +} +.dojoxListInputFocused .dijitTextBox { + background: #fff !important; + border:0 !important; +} +.dojoxListInputItem .dijitTextBox { + width:auto !important; + border:0 !important; +} +.dojoxListInputNode { + float:none; +} +.dojoxListInputItemEdited{ + display:none !important +} +.dojoxListInputItem .dijitInline{ + display:inline !important +} diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/PasswordValidator.html b/js/dojo-release-1.7.2-src/dojox/form/resources/PasswordValidator.html new file mode 100644 index 0000000..80a55ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/PasswordValidator.html @@ -0,0 +1,3 @@ +
                                  + +
                                  \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/RangeSlider.css b/js/dojo-release-1.7.2-src/dojox/form/resources/RangeSlider.css new file mode 100644 index 0000000..5914467 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/RangeSlider.css @@ -0,0 +1,30 @@ +.dojoxRangeSlider .dijitSliderLeftBumper, .dojoxRangeSlider .dijitSliderBottomBumper { + background:#FFFFFF !important; +} + +.dojoxRangeSliderBarContainer { + position:relative; +} + +.dojoxRangeSlider .dijitSliderProgressBarV { + position:relative !important; +} + +.dojoxRangeSlider .dijitSliderProgressBar { + overflow:hidden; + cursor:pointer; + /* background:yellow !important; */ +} + +.dojoxRangeSlider .dijitSliderProgressBarV { + position:absolute !important; + border-width: 0px; +} + +.dojoxRangeSlider .dijitSliderImageHandleH { + left: -50%; +} +.dijitSlider .dojoxRangeSliderBarContainer .dijitSliderProgressBarH, +.dojoxRangeSlider .dijitSliderMoveableH { + right:auto !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/Rating.css b/js/dojo-release-1.7.2-src/dojox/form/resources/Rating.css new file mode 100644 index 0000000..1f2054f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/Rating.css @@ -0,0 +1,24 @@ +.dojoxRating ul { + padding:0; + margin:0; +} + +.dojoxRatingStar { + display:inline-block; + background-image:url(images/rating_empty.gif); + background-position:left center; + position:relative; + height:15px; + width:15px; + float:left; +} + +.dojoxRatingStarChecked { + background-image:url(images/rating_full.gif); +} + +.dojoxRatingStarHover { + background-image:url(images/rating_full.gif); + opacity:.5; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/RecieveFile.php b/js/dojo-release-1.7.2-src/dojox/form/resources/RecieveFile.php new file mode 100644 index 0000000..aca541f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/RecieveFile.php @@ -0,0 +1,37 @@ + "success", + 'name' => $name, + 'request' => $_REQUEST, + 'postvars' => $_POST, + 'details' => $_FILES, + // and some static subarray just to see + 'foo' => array('foo'=>"bar") + ); + +}else{ + $ar = array( + 'status' => "failed", + 'details' => "" + ); +} + +// yeah, seems you have to wrap iframeIO stuff in textareas? +$foo = $json->encode($ar); +?> + diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/TriStateCheckBox.css b/js/dojo-release-1.7.2-src/dojox/form/resources/TriStateCheckBox.css new file mode 100644 index 0000000..237f4bf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/TriStateCheckBox.css @@ -0,0 +1,137 @@ +/* TriStateCheckBox + * + * Styling TriStateCheckBox mainly includes: + * + * 1. Containers + * .dojoxTriStateCheckBox|.dojoxTriStateCheckBoxIcon - for border, padding, width|height and background image + * + * 2. Checked state + * .dojoxTriStateCheckBoxChecked - for checked background-color|image + * .dojoxTriStateCheckBoxMixed - for mixed background-color|image + * + * 3. Hover state + * .dojoxTriStateCheckBoxHover|.dojoxTriStateCheckBoxCheckedHover|.dojoxTriStateCheckBoxMixedHover - for background image + * + * 4. Disabled state + * .dojoxTriStateCheckBoxDisabled|.dojoxTriStateCheckBoxCheckedDisabled|.dojoxTriStateCheckBoxMixedDisabled - for background image + */ +.claro .dijitToggleButton .dojoxTriStateCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.png'); +} +.dj_ie6 .claro .dijitToggleButton .dojoxTriStateCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.gif'); +} +.claro .dojoxTriStateCheckBox, .claro .dojoxTriStateCheckBoxIcon { + background-image: url('images/tristatecheckboxStates.png'); + /* checkbox sprite image */ + + background-repeat: no-repeat; + width: 15px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} +.dj_ie6 .claro .dojoxTriStateCheckBox, .dj_ie6 .claro .dojoxTriStateCheckBoxIcon { + background-image: url('images/tristatecheckboxStates.png'); + /* checkbox sprite image */ + +} +.claro .dojoxTriStateCheckBox{ + /* unchecked */ + + background-position: -15px; +} +.claro .dojoxTriStateCheckBoxChecked{ + /* checked */ + + background-position: 0px; +} +.claro .dojoxTriStateCheckBoxMixed { + /* mixed */ + + background-position: -30px; +} +.claro .dojoxTriStateCheckBoxDisabled { + /* disabled and unchecked */ + + background-position: -105px; +} +.claro .dojoxTriStateCheckBoxCheckedDisabled { + /* disabled and checked */ + + background-position: -90px; +} +.claro .dojoxTriStateCheckBoxMixedDisabled { + /* disabled and mixed */ + + background-position: -120px; +} +.claro .dojoxTriStateCheckBoxHover { + /* hovering over and unchecked */ + + background-position: -60px; +} +.claro .dojoxTriStateCheckBoxCheckedHover { + /* hovering over and checked */ + + background-position: -45px; +} +.claro .dojoxTriStateCheckBoxMixedHover { + /* hovering over and mixed */ + + background-position: -75px; +} + +.dijit_a11y .dojoxTriStateCheckBoxHover .dojoxTriStateCheckBoxInner, +.dijit_a11y .dojoxTriStateCheckBoxFocused .dojoxTriStateCheckBoxInner{ + /* focused or hovering over */ + border: dashed; +} + +.dijit_a11y .dojoxTriStateCheckBoxHover .dojoxTriStateCheckBoxInner, +.dijit_a11y .dojoxTriStateCheckBoxFocused .dojoxTriStateCheckBoxInner{ + /* focused or hovering over */ + border: solid; +} + +.dijit_a11y .dojoxTriStateCheckBoxDisabled .dojoxTriStateCheckBoxInner{ + /* focused or hovering over */ + opacity: 0.5; +} + +.dj_ie .dijit_a11y .dojoxTriStateCheckBoxDisabled .dojoxTriStateCheckBoxInner{ + /* disabled */ +} + + +.dojoxTriStateCheckBoxInner{ + /* inner text */ + + visibility: hidden; + display: none; + position: absolute; + text-align: center; +} + +.dijit_a11y .dojoxTriStateCheckBoxInner{ + /* inner text */ + + visibility: visible; + display: block; +} + +.dojoxTriStateCheckBoxInput { + /* place the actual input on top, but all-but-invisible */ + opacity: 0.01; + padding: 0; + margin: 0, + border: 0; + width: 15px; + height: 16px; + background-position:center center; + background-repeat:no-repeat; +} + +.dj_ie .dojoxTriStateCheckBoxInput { + filter: alpha(opacity=0); +} diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/TriStateCheckBox.html b/js/dojo-release-1.7.2-src/dojox/form/resources/TriStateCheckBox.html new file mode 100644 index 0000000..5605128 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/TriStateCheckBox.html @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/Uploader.html b/js/dojo-release-1.7.2-src/dojox/form/resources/Uploader.html new file mode 100644 index 0000000..449b2a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/Uploader.html @@ -0,0 +1,18 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/UploaderFileList.css b/js/dojo-release-1.7.2-src/dojox/form/resources/UploaderFileList.css new file mode 100644 index 0000000..b2a9c98 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/UploaderFileList.css @@ -0,0 +1,53 @@ +.dojoxUploaderFileList{ + border:1px solid #ccc; + min-height:50px; +} +.dojoxUploaderFileListTable{ + width:100%; + border-collapse:collapse; + margin-top:5px; +} +.dojoxUploaderFileListHeader th{ + background-color:#eee; + padding:3px; +} +.dojoxUploaderFileListRow{ + +} +.dojoxUploaderIndex{ + width:20px; +} +.dojoxUploaderIcon{ + width:50px; +} +.dojoxUploaderFileName{ + +} +.dojoxUploaderSize{ + width:70px; +} +.dojoxUploaderFileListContent{ + width:100%; +} +.dojoxUploaderFileListProgress{ + border:1px solid #666; + height:15px; + position:relative; + background:#fff; + overflow:hidden; +} +.dojoxUploaderFileListPercentText{ + position:absolute; + right:3px; + top:3px; + font-size:10px; + text-align:right; +} +.dojoxUploaderFileListProgressBar{ + position:absolute; + top:0px; + left:0px; + height:15px; + width:0%; + background:#bfe1fd; +} diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/VerticalRangeSlider.html b/js/dojo-release-1.7.2-src/dojox/form/resources/VerticalRangeSlider.html new file mode 100644 index 0000000..55b0d22 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/VerticalRangeSlider.html @@ -0,0 +1,49 @@ +
                                  diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/_CheckedMultiSelectItem.html b/js/dojo-release-1.7.2-src/dojox/form/resources/_CheckedMultiSelectItem.html new file mode 100644 index 0000000..709b450 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/_CheckedMultiSelectItem.html @@ -0,0 +1,5 @@ +
                                  diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/_CheckedMultiSelectMenuItem.html b/js/dojo-release-1.7.2-src/dojox/form/resources/_CheckedMultiSelectMenuItem.html new file mode 100644 index 0000000..23a5064 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/resources/_CheckedMultiSelectMenuItem.html @@ -0,0 +1,10 @@ +
                                    \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/fileuploader.swf b/js/dojo-release-1.7.2-src/dojox/form/resources/fileuploader.swf new file mode 100644 index 0000000..f774e17 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/fileuploader.swf differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/images/loading_wheel.gif b/js/dojo-release-1.7.2-src/dojox/form/resources/images/loading_wheel.gif new file mode 100644 index 0000000..901a7e3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/images/loading_wheel.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/images/nihiloFolderSprite.gif b/js/dojo-release-1.7.2-src/dojox/form/resources/images/nihiloFolderSprite.gif new file mode 100644 index 0000000..0034b54 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/images/nihiloFolderSprite.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/images/rating_empty.gif b/js/dojo-release-1.7.2-src/dojox/form/resources/images/rating_empty.gif new file mode 100644 index 0000000..8662c43 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/images/rating_empty.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/images/rating_full.gif b/js/dojo-release-1.7.2-src/dojox/form/resources/images/rating_full.gif new file mode 100644 index 0000000..6fe24bf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/images/rating_full.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/images/soriaFolderSprite.gif b/js/dojo-release-1.7.2-src/dojox/form/resources/images/soriaFolderSprite.gif new file mode 100644 index 0000000..19e35c1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/images/soriaFolderSprite.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/images/tristatecheckboxStates.png b/js/dojo-release-1.7.2-src/dojox/form/resources/images/tristatecheckboxStates.png new file mode 100644 index 0000000..dde030f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/images/tristatecheckboxStates.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/images/tundraFolderSprite.gif b/js/dojo-release-1.7.2-src/dojox/form/resources/images/tundraFolderSprite.gif new file mode 100644 index 0000000..6cf8c09 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/images/tundraFolderSprite.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/resources/uploader.swf b/js/dojo-release-1.7.2-src/dojox/form/resources/uploader.swf new file mode 100644 index 0000000..78233e4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/resources/uploader.swf differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/UploadFile.php.disabled b/js/dojo-release-1.7.2-src/dojox/form/tests/UploadFile.php.disabled new file mode 100644 index 0000000..6f981f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/UploadFile.php.disabled @@ -0,0 +1,315 @@ +clear(); + if($isArray){ + $log->printr($txt); + }else{ + $log->write($txt); + } + + //echo "$txt
                                  "; +} +function getImageType($filename){ + return strtolower(substr(strrchr($filename,"."),1)); +} +trace("---------------------------------------------------------"); + +// +// +// EDIT ME: According to your local directory structure. +// NOTE: Folders must have write permissions +// +$upload_path = "../tests/uploads/"; // where image will be uploaded, relative to this file +$download_path = "../tests/uploads/"; // same folder as above, but relative to the HTML file + +// +// NOTE: maintain this path for JSON services +// +require("../../../dojo/tests/resources/JSON.php"); +$json = new Services_JSON(); + +// +// Determine if this is a Flash upload, or an HTML upload +// +// + +// First combine relavant postVars +$postdata = array(); +$htmldata = array(); +$data = ""; +trace("POSTDATA: " . count($_FILES) . " FILES"); +foreach ($_POST as $nm => $val) { + $data .= $nm ."=" . $val . ","; // string for flash + $postdata[$nm] = $val; // array for html +} + +trace($postdata, true); + +foreach ($_FILES as $nm => $val) { + trace(" file: ".$nm ."=" . $val); +} + +foreach ($_GET as $nm => $val) { + trace($nm ."=" . $val); +} + +$fieldName = "flashUploadFiles";//Filedata"; + +if( isset($_FILES[$fieldName]) || isset($_FILES['uploadedfileFlash'])){ + // + // If the data passed has $fieldName, then it's Flash. + // NOTE: "Filedata" is the default fieldname, but we're using a custom fieldname. + // The SWF passes one file at a time to the server, so the files come across looking + // very much like a single HTML file. The SWF remembers the data and returns it to + // Dojo as an array when all are complete. + // + trace("returnFlashdata...."); + + trace(""); + trace("ID:"); + + trace("Flash POST:"); + trace($_POST, true); + + + $returnFlashdata = true; //for dev + + if( isset($_FILES[$fieldName])){ + // backwards compat - FileUploader + trace("FILES:"); + trace($_FILES[$fieldName], true); + $m = move_uploaded_file($_FILES[$fieldName]['tmp_name'], $upload_path . $_FILES[$fieldName]['name']); + $name = $_FILES[$fieldName]['name']; + + }else{ + // New fieldname - Uploader + trace("FILES:"); + trace($_FILES['uploadedfileFlash'], true); + $m = move_uploaded_file($_FILES['uploadedfileFlash']['tmp_name'], $upload_path . $_FILES['uploadedfileFlash']['name']); + $name = $_FILES['uploadedfileFlash']['name']; + + } + + $file = $upload_path . $name; + try{ + list($width, $height) = getimagesize($file); + } catch(Exception $e){ + $width=0; + $height=0; + } + $type = getImageType($file); + trace("file: " . $file ." ".$type." ".$width); + // Flash gets a string back: + + //exit; + + $data .='file='.$file.',name='.$name.',width='.$width.',height='.$height.',type='.$type; + if($returnFlashdata){ + trace("returnFlashdata:\n======================="); + trace($data); + trace("======================="); + // echo sends data to Flash: + echo($data); + // return is just to stop the script: + return; + } + +}elseif( isset($_FILES['uploadedfile0']) ){ + // + // Multiple files have been passed from HTML + // + $cnt = 0; + trace("HTML multiple POST:"); + trace($postdata, true); + + $_post = $htmldata; + $htmldata = array(); + + while(isset($_FILES['uploadedfile'.$cnt])){ + trace("HTML multiple POST"); + $moved = move_uploaded_file($_FILES['uploadedfile'.$cnt]['tmp_name'], $upload_path . $_FILES['uploadedfile'.$cnt]['name']); + trace("moved:" . $moved ." ". $_FILES['uploadedfile'.$cnt]['name']); + if($moved){ + $name = $_FILES['uploadedfile'.$cnt]['name']; + $file = $upload_path . $name; + $type = getImageType($file); + try{ + list($width, $height) = getimagesize($file); + } catch(Exception $e){ + $width=0; + $height=0; + } + trace("file: " . $file ); + + $_post['file'] = $file; + $_post['name'] = $name; + $_post['width'] = $width; + $_post['height'] = $height; + $_post['type'] = $type; + $_post['size'] = filesize($file); + $_post['additionalParams'] = $postdata; + trace($_post, true); + + $htmldata[$cnt] = $_post; + + }elseif(strlen($_FILES['uploadedfile'.$cnt]['name'])){ + $htmldata[$cnt] = array("ERROR" => "File could not be moved: ".$_FILES['uploadedfile'.$cnt]['name']); + } + $cnt++; + } + trace("HTML multiple POST done:"); + foreach($htmldata as $key => $value){ + trace($value, true); + } + +}elseif( isset($_POST['uploadedfiles']) ){ + trace("HTML5 multi file input... CAN'T ACCESS THIS OBJECT! (POST[uploadedfiles])"); + trace(count($_POST['uploadedfiles'])." "); + + +}elseif( isset($_FILES['uploadedfiles']) ){ + // + // If the data passed has 'uploadedfiles' (plural), then it's an HTML5 multi file input. + // + $cnt = 0; + trace("HTML5 multi file input"); + //trace($_FILES, true); + //print_r($_FILES); + $_post = $postdata; + trace("POST DATA:::"); + trace($_post, true); + $htmldata = array(); + $len = count($_FILES['uploadedfiles']['name']); + // + // Ugh. The array passed from HTML to PHP is fugly. + // + + //print_r($_FILES['uploadedfiles']); + + for($i=0;$i<$len;$i++){ + $moved = move_uploaded_file($_FILES['uploadedfiles']['tmp_name'][$i], $upload_path . $_FILES['uploadedfiles']['name'][$i]); + trace("moved:" . $moved ." ". $_FILES['uploadedfiles']['name'][$i]); + if($moved){ + $name = $_FILES['uploadedfiles']['name'][$i]; + $file = $upload_path . $name; + $type = getImageType($file); + try{ + list($width, $height) = getimagesize($file); + } catch(Exception $e){ + error_log("NO EL MOVEO: " . $name); + $width=0; + $height=0; + $_post['filesInError'] = $name; + } + + if(!$width){ + $_post['filesInError'] = $name; + $width=0; + $height=0; + } + trace("file: " . $file ." size: " . $width." ".$height); + + $_post['file'] = $file; + $_post['name'] = $name; + $_post['width'] = $width; + $_post['height'] = $height; + $_post['type'] = $type; + $_post['size'] = filesize($file); + //$_post['additionalParams'] = $postdata; + //trace($_post, true); + + $htmldata[$cnt] = $_post; + + }elseif(strlen($_FILES['uploadedfiles']['name'][$i])){ + $htmldata[$cnt] = array("ERROR" => "File could not be moved: ".$_FILES['uploadedfiles']['name'][$i]); + } + $cnt++; + } + + $data = $json->encode($htmldata); + trace($data); + print $data; + return $data; + +}elseif( isset($_FILES['uploadedfile']) ){ + // + // If the data passed has 'uploadedfile', then it's HTML. + // There may be better ways to check this, but this *is* just a test file. + // + $m = move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $upload_path . $_FILES['uploadedfile']['name']); + + + + trace("HTML single POST:"); + trace($postdata, true); + + $name = $_FILES['uploadedfile']['name']; + $file = $upload_path . $name; + $type = getImageType($file); + try{ + list($width, $height) = getimagesize($file); + } catch(Exception $e){ + $width=0; + $height=0; + } + trace("file: " . $file ); + + $htmldata['file'] = $file; + $htmldata['name'] = $name; + $htmldata['width'] = $width; + $htmldata['height'] = $height; + $htmldata['type'] = $type; + $htmldata['size'] = filesize($file); + $htmldata['additionalParams'] = $postdata; + + +}elseif(isset($_GET['rmFiles'])){ + trace("DELETING FILES" . $_GET['rmFiles']); + $rmFiles = explode(";", $_GET['rmFiles']); + foreach($rmFiles as $f){ + if($f && file_exists($f)){ + trace("deleted:" . $f. ":" .unlink($f)); + } + } + +}else{ + trace("IMROPER DATA SENT... $_FILES:"); + trace($_FILES); + $htmldata = array("ERROR" => "Improper data sent - no files found"); +} + +//HTML gets a json array back: +$data = $json->encode($htmldata); +trace("Json Data Returned:"); +trace($data); +// in a text field: +?> + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/_tags.json b/js/dojo-release-1.7.2-src/dojox/form/tests/_tags.json new file mode 100644 index 0000000..421031a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/_tags.json @@ -0,0 +1,100 @@ +{identifier:"tag", +items: [ + {tag: "accounting"}, + {tag: "attorney"}, + {tag: "atv"}, + {tag: "backcountry"}, + {tag: "bakery"}, + {tag: "bandb"}, + {tag: "bank"}, + {tag: "bar"}, + {tag: "bicycle"}, + {tag: "cabin"}, + {tag: "cabinoutside"}, + {tag: "camp"}, + {tag: "campoutside"}, + {tag: "catering"}, + {tag: "chamber"}, + {tag: "church"}, + {tag: "city"}, + {tag: "classes"}, + {tag: "coffeehouse"}, + {tag: "condo"}, + {tag: "condooutside"}, + {tag: "conference"}, + {tag: "county"}, + {tag: "crosscountryski"}, + {tag: "dentist"}, + {tag: "dining"}, + {tag: "fishing"}, + {tag: "gallery"}, + {tag: "general"}, + {tag: "golf"}, + {tag: "graphicart"}, + {tag: "grocery"}, + {tag: "guideservice"}, + {tag: "hair"}, + {tag: "health"}, + {tag: "home"}, + {tag: "homeoutside"}, + {tag: "horse"}, + {tag: "hotel"}, + {tag: "hoteloutside"}, + {tag: "hotsprings"}, + {tag: "hotspringspool"}, + {tag: "hunting"}, + {tag: "iceclimbing"}, + {tag: "iceskating"}, + {tag: "inspection"}, + {tag: "insurance"}, + {tag: "internet"}, + {tag: "jeeping"}, + {tag: "jewelry"}, + {tag: "live"}, + {tag: "liveentertainment"}, + {tag: "lodging"}, + {tag: "manicure"}, + {tag: "manufacturing"}, + {tag: "maps"}, + {tag: "massage"}, + {tag: "menu:aboutouray"}, + {tag: "menu:recreation"}, + {tag: "minetour"}, + {tag: "mining"}, + {tag: "mountaineering"}, + {tag: "museum"}, + {tag: "nonprofit"}, + {tag: "offroad"}, + {tag: "online"}, + {tag: "ouraymuseum"}, + {tag: "park"}, + {tag: "performingarts"}, + {tag: "pet"}, + {tag: "pharmacy"}, + {tag: "photographer"}, + {tag: "photography"}, + {tag: "printing"}, + {tag: "publishing"}, + {tag: "rafting"}, + {tag: "railroad"}, + {tag: "realestate"}, + {tag: "recreation"}, + {tag: "rentals"}, + {tag: "retail"}, + {tag: "rockclimbing"}, + {tag: "rv"}, + {tag: "rvoutside"}, + {tag: "school"}, + {tag: "shop"}, + {tag: "skirentals"}, + {tag: "snowmobiling"}, + {tag: "spa"}, + {tag: "summer"}, + {tag: "tours"}, + {tag: "trails"}, + {tag: "utility"}, + {tag: "waterfall"}, + {tag: "wedding"}, + {tag: "weddingplanner"}, + {tag: "winter"} +]} diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/cLOG.php.disabled b/js/dojo-release-1.7.2-src/dojox/form/tests/cLOG.php.disabled new file mode 100644 index 0000000..6a9a217 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/cLOG.php.disabled @@ -0,0 +1,54 @@ +boolTimestamp = $boolTimestamp; + $this->logfile = $filename; + } + function write($txt){ + if($this->boolTimestamp){ + $dt = date("y.m.d G.i.s"); + $txt = "[". $dt ."]: ".$txt; + } + $fh = fopen($this->logfile, "a"); + if(is_array($txt)){ + //$txt = "::::::::".$txt; + $ar = $txt; + $txt = "Array:::::\n"; + foreach($ar as $key => $value){ + $txt += $key."=".$value."\n"; + } + } + fwrite($fh, $txt."\n"); + fclose($fh); + } + function clear(){ + $fh = fopen($this->logfile, "w"); + fwrite($fh, ""); + fclose($fh); + } + function newline(){ + $fh = fopen($this->logfile, "a"); + fwrite($fh, "\n\n"); + fclose($fh); + } + function printr($ar){ + $txt = ""; + foreach ($ar as $nm => $val) { + $txt .= " ".$nm ." = " . $val . "\n"; + } + $this->write($txt); + } +} +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/attach.png b/js/dojo-release-1.7.2-src/dojox/form/tests/images/attach.png new file mode 100644 index 0000000..7fc4811 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/attach.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad.jpg b/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad.jpg new file mode 100644 index 0000000..52cf2af Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad_down.jpg b/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad_down.jpg new file mode 100644 index 0000000..7bcec94 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad_down.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad_over.jpg b/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad_over.jpg new file mode 100644 index 0000000..7626ce1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/grad_over.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/rating_empty.gif b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rating_empty.gif new file mode 100644 index 0000000..dc6ecd8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rating_empty.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/rating_full.gif b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rating_full.gif new file mode 100644 index 0000000..2e816a8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rating_full.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtnSprite.png b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtnSprite.png new file mode 100644 index 0000000..432e592 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtnSprite.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_down.png b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_down.png new file mode 100644 index 0000000..1f2f28b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_down.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_norm.png b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_norm.png new file mode 100644 index 0000000..0be88a9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_norm.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_over.png b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_over.png new file mode 100644 index 0000000..f6084c1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/form/tests/images/rndBtn_over.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_BusyButton.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_BusyButton.html new file mode 100644 index 0000000..3b7757f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_BusyButton.html @@ -0,0 +1,110 @@ + + + + BusyButton Test + + + + + + + + + + + + +

                                  Test: dojox.form.BusyButton

                                  +

                                  + Normal busy button, 5000 miliseconds timeout
                                  + +

                                  + +

                                  + Busy button, no timeout, custom label
                                  + +

                                  +

                                  + Busy button, no initial timeout, changing state and setting timeout on button press
                                  + +

                                  +

                                  + Busy button, initially busy with 10 sec timeout
                                  + +

                                  +

                                  + Combo and DropDown Buttons (5000 ms timeout)
                                  + + +

                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelect.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelect.html new file mode 100644 index 0000000..b479532 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelect.html @@ -0,0 +1,346 @@ + + + + + dojox.form.CheckedMultiSelect + + + + + + + + + + + + + +

                                  Test: dojox.form.CheckedMultiSelect

                                  + +

                                  Check Boxes

                                  + + + +
                                  +

                                  Radio Buttons

                                  + + + +
                                  +

                                  Store-based

                                  + + +
                                  +

                                  Validation

                                  + + +
                                  + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelectDropDown.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelectDropDown.html new file mode 100644 index 0000000..5cef268 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelectDropDown.html @@ -0,0 +1,200 @@ + + + + dojox.form.CheckedMultiSelect + + + + + + + + +

                                  Test: dojox.form.CheckedMultiSelect

                                  +

                                  Non-dojo select (for comparison)

                                  + +
                                  +

                                  Multi-select

                                  + + + + + + + + + + + + + + + + +
                                  + + + + + +
                                  + + + +
                                  + + + + +
                                  + + + Read-Store-based +
                                  +

                                  Validation

                                  + + +

                                  Output values in console

                                  + +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelectNonDropDown.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelectNonDropDown.html new file mode 100644 index 0000000..646f900 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_CheckedMultiSelectNonDropDown.html @@ -0,0 +1,205 @@ + + + + dojox.form.CheckedMultiSelect + + + + + + + + +

                                  Test: dojox.form.CheckedMultiSelect

                                  +

                                  Non-dojo select (for comparison)

                                  + +
                                  +

                                  Multi-select

                                  + + + + + + + + + + + + + + + + +
                                  + + + + + +
                                  + + + +
                                  + + + + +
                                  + + + Read-Store-based +
                                  +

                                  Validation

                                  + + +

                                  Output values in console

                                  + +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_DateTextBox.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_DateTextBox.html new file mode 100644 index 0000000..2187d17 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_DateTextBox.html @@ -0,0 +1,187 @@ + + + + Test DateTextBox Widget + + + + + + + + + + + + + + + + + +

                                  Test DateTextBox Widget

                                  + +
                                  +
                                  + + DateTextBox class, no attributes +
                                  +
                                  + + onChange: +
                                  + +
                                  + Day Only + + onChange: +
                                  +
                                  + Month Only + + onChange: +
                                  + +
                                  + Year Only + + onChange: +
                                  +
                                  + + DateTextBox class, + Attributes: required="true", trim="true", constraints={min:'2004-01-01',max:'2006-12-31',formatLength:'long'}. Works for leap years +
                                  +
                                  + + onChange: + + +
                                  +
                                  + + DateTextBox class, + Attributes: lang="en-us", required="true", constraints={min:'2004-01-01',max:'2006-12-31'}. Works for leap years +
                                  +
                                  + +
                                  +
                                  + + DateTextBox class, + Attributes: lang="de-de", constraints={min:2004-01-01, max:2006-12-31}. Works for leap years +
                                  +
                                  + +
                                  + +
                                  + + Date, overriding pattern with dd-MM-yyyy +
                                  +
                                  + +
                                  + + + + + +
                                  + +
                                  +
                                  + From: + To: +
                                  + +
                                  + + + +
                                  + +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileInput.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileInput.html new file mode 100644 index 0000000..ef1890f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileInput.html @@ -0,0 +1,125 @@ + + + + dojox.form.FileInput | The Dojo Toolkit + + + + + + + +

                                  dojox FileInput widget:

                                  +

                                  This is a prototype of a dojo input type="file" with a FormWidget mixin, to be styled to match tundra and soria themes

                                  +

                                  The API is up for discussion, nor is it known to drop into forms and "just work" yet

                                  +

                                  FileInputAuto API is up for discussion, as well, though by use of the url="" attrib, you can basically + do all your file-processing server side, and just use the filename sent that remains in the form input

                                  +

                                  There are two parts. dojo.require("dojox.form.FileInput") for just the base class, or dojo.require("dojox.form.FileInputAuto"); + to provide the Auto Uploading widget (on blur), and the Blind Auto Upload widget.

                                  +

                                  Both themes are defined in the FileInput.css file, as well as basic styling needed to run

                                  + +

                                  A standard file input:

                                  + + +

                                  The default dojox.form.FileInput:

                                  +

                                  + +

                                  + +

                                  default dojox.form.FileInput, tundra:

                                  +

                                  + +

                                  + +

                                  dojox.form.FileInputAuto, soria theme:

                                  +

                                  + +

                                  + +

                                  dojox.form.FileInputAuto, claro theme:

                                  +

                                  + +

                                  + +

                                  another one, tundra theme (with callback)

                                  +

                                  + +

                                  + +

                                  dojox.form.FileInputAuto - tundra theme (with callback) - and onchange triggerEvent

                                  +

                                  + +

                                  + + +

                                  a blind auto upload widget, tundra:

                                  +

                                  + +

                                  + +

                                  dojox.form.FileInputBlind - soria

                                  +

                                  + +

                                  + +

                                  dynamic, tundra, dojox.form.FileInputAuto:

                                  + +

                                  +
                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_FilePickerTextBox.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FilePickerTextBox.html new file mode 100644 index 0000000..3f2e71d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FilePickerTextBox.html @@ -0,0 +1,50 @@ + + + + + File Picker Demo + + + + + + + + + + + + + + + + + + + +

                                  + Demo: File Picker text box widget using dojox.data.FileStore +

                                  +

                                  The picker below uses the dojox.data.FileStore and a PHP implementation for the serverside to browse the dojo tree hierarchy in a lazy-load fashion.

                                  +

                                  This demo must be run from a web-server with PHP support enabled. Without PHP support, this demo cannot function.

                                  +
                                  +
                                  +
                                  +
                                  + +
                                  + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploader.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploader.html new file mode 100644 index 0000000..341a842 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploader.html @@ -0,0 +1,275 @@ + + + + dojox.form.FileUploader + + + + + + + +

                                  + NOTE: This test does upload, + but the server scripts are renamed to tests/UploadFile.php.disabled and + tests/cLOG.php.disabled to prevent security attacks on hosted servers. + You should rename these files (removing .disabled) in your local copy to conduct tests. +

                                  + + + + + + +
                                  + +
                                  +

                                  + dojox.form.FileUploader - FileInputFlash Test +
                                  Flash Mode - +

                                  +
                                  Emulate No Flash Plugin
                                  +
                                  Switch to Multi-File mode
                                  +
                                  Switch to Single-File mode
                                  + +

                                  The following is an example of FileUploader trigger FileInputFlash act's with the same APIs as FileInputOverlay, so you can build your own file input. For the file to actually upload, you'll need to have PHP enabled.

                                  +

                                  Multiple-file mode. You may choose multiple files from the System Dialog.

                                  +

                                  Single-file mode. You may choose only one from the System Dialog.

                                  +
                                  + +
                                  +

                                  + dojox.form.FileUploader - Degraded to FileInputOverlay +
                                  HTML Mode - +

                                  +
                                  Normal Flash Plugin Mode
                                  +
                                  Switch to Multi-File mode
                                  +
                                  Switch to Single-File mode
                                  + +

                                  The following is an example of the user not having the Flash plugin installed, and the FileUploader degrading to the FileInputOverlay, except in Opera, which does not support the HTML file input overlay.

                                  +

                                  Multiple-file mode. You may upload multiple files by adding files to the upload list, one at a time.

                                  +

                                  Single-file mode. You may choose only one from the System Dialog.

                                  +
                                  + + + Select Images... + + Choose from these types: + + + +
                                  Upload
                                  + +
                                  Uploaded Files:
                                  + + + +
                                  Remove Files
                                  + +
                                   
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderCSS.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderCSS.html new file mode 100644 index 0000000..39a5144 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderCSS.html @@ -0,0 +1,246 @@ + + + + FileUploader CSS Test + + + + + + + + + +

                                  FileUploader CSS Test

                                  +

                                  + All the buttons on this page are either Flash or HTML uploaders. They all should open a + file-browse dialog, but otherwise the uploading is non-functional. This page is for testing + rendering and layout. This takes a while to render in IE, but it's not a real-world test. + NOTE: This test opens a Browse Dialog, but does not upload. +

                                  + +
                                  + Testing default, markup (don't use a DIV unless you style it, the width is not controlled by default) +
                                  + + + +
                                  + Testing float right and left, and using style="" to override class. The buttons should cascade properly when resizing + the window. +
                                  +
                                  + + + + +
                                  + +
                                  + Text wrapping - FileUploader does not support text wrapping natively, it needs some CSS massaging to make it happen. +
                                  + + + +
                                  + Testing Dijit Button for backward compatibility. Use of a dijit button is + deprecated and will be removed in 1.5. On the right is the Flash Upload button and on the left a + Dijit button for comparison. Note there is a bug getting the hover font style correct. +
                                  + + + +
                                  Testing top-center
                                  +
                                  Flash Top
                                  + +
                                  Testing bottom-center with 20px bottom padding
                                  +
                                  Flash Bottom
                                  + +
                                  Testing centered text, wide border and a left margin
                                  +
                                  Flash Center
                                  + +
                                  Testing left align
                                  + + +
                                  + Testing background images for HTML and Flash buttons. "GFX" uses three + different images, "SPRITE" uses one sprited image with the background-position changed. The + uploader doesn't support icons (you can use html in the Flash button, but it's not very good) so + this example uses backgrounds with icons in them, and the text shifted with a 55px left padding. + All of these buttons are inline. +
                                  + + + + + + + + + + +
                                  +
                                  +

                                  + Testing in a + scrolling pane. Also testing + . + Because we are no longer using an invisible Flash movie using wmode=transparent. + The Windows Firefox clickable bug should be fixed (and hopefully some Linux + problems). +

                                  +
                                  +
                                  +
                                  + Testing a +
                                  + +
                                  + in a scrolling pane. This is really just to see if IE blows up on this as well as the + inline test (it does). IE is not liking using innerHTML in a scrolling pane. This should + still work however - the button is built outside of the pane and inserted (as well as + the previous inline test). This will cause a slower render time. +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderDialog.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderDialog.html new file mode 100644 index 0000000..ac73caa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderDialog.html @@ -0,0 +1,122 @@ + + + + FileUploader Dialog Test + + + + + + + + + + + + + + +

                                  FileUploader Dialog Test

                                  +

                                  + Tests that FileUploader will load in a dialog box. Its detecting that an ancestor is + a dialog and if so makes it display="block" while it gets measurements, then changes it + back. It then connects to the dialog's onShow and is built at that time. + NOTE: This test opens a Browse Dialog, but does not upload. +

                                  +
                                  + +
                                  + + + +
                                  +
                                  Submit
                                  + + + +
                                  +
                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderForm.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderForm.html new file mode 100644 index 0000000..3b6069c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderForm.html @@ -0,0 +1,299 @@ + + + + Test dojox.form.FileUploader - Form + + + + + + + +

                                  FileUploader Widget Form Test

                                  +

                                  + NOTE: This test does upload, + but the server scripts are renamed to tests/UploadFile.php.disabled and + tests/cLOG.php.disabled to prevent security attacks on hosted servers. + You should rename these files (removing .disabled) in your local copy to conduct tests. +

                                  +

                                  Both forms on this page are the same except one is for testing the Flash Uploader and one + is for the HTML Uploader. The following features are being tested:

                                  +
                                    +
                                  • Disabled: The Uploaders are disabled unless the Group field is populated.
                                  • +
                                  • Submit: The Submit buttons actually submit to the uploaders, and they post the data.
                                  • +
                                  • Post Data: Post data is tested. The field data should be in the thumbnails.
                                  • +
                                  • Selected List: If passing the ID of a container, the Uploaders will populate it with + the selected files.
                                  • +
                                  • Deleting Files: You can now delete pending files.
                                  • +
                                  • Progress Built in: showProgress:true will change the button to a progress bar on upload.
                                  • +
                                  • Progress Attach: Passing progressWidgetId will tell the Uploader of a progress widget. + If the Progress widget is initially hidden, it will change to visible and then restored after + upload.
                                  • +
                                  • A11Y: The Flash button can be accessed with the TAB key. (The HTML cannot due to browser + limtations)
                                  • +
                                  + + + + + +
                                  +
                                  + +
                                  + +
                                  + +
                                  + +
                                  +
                                  Flash Select Files
                                  + +
                                  +
                                  +
                                  +
                                  +
                                  + +
                                  + +
                                  + +
                                  + +
                                  +
                                  HTML Select Files
                                  + +
                                  +
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderTabs.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderTabs.html new file mode 100644 index 0000000..50020fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_FileUploaderTabs.html @@ -0,0 +1,148 @@ + + + + FileUploader TabContainer Test + + + + + + + + + + + + + + +

                                  FileUploader TabContainer Test

                                  +

                                  + Testing that FileUploader works in Tabs initially shown and initially hidden. + See important node below +

                                  + +
                                  +
                                  + + +
                                  +
                                  + + +
                                  +
                                  +
                                  +
                                  + +
                                  + + +
                                  + +

                                  + NOTE: This test shows FileUploader successfully being created in TabContainers, BUT + there is a serious limitation in the Flash version for Firefox and Safari. When a node in those browsers is hidden + (or essentially repainted which can mean other style applications) the SWF is reloaded. This means that if you browse + for a file but don't upload upload it, change the tab and return, the files will no longer be in the FileUploader. + This problem can be seen when tabbing between Tab 1 and Tab 2 and observing the console logs and you will see the + SWF reinitializes. This problem does not exist in Internet Explorer. The HTML version of the Uploader should also + work fine. +

                                  + This test also shows work around for the problem. View source of this test and see that in Tab 3, the FileUploader + is in a seperate div floating over the TabContainer. When Tab #3 is shown and hidden, the div is moved off and on screen. +

                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_ListInput.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_ListInput.html new file mode 100755 index 0000000..41f42c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_ListInput.html @@ -0,0 +1,189 @@ + + + + + + + test ListInput + + + + + + +

                                  ListInput

                                  + + +
                                  + Enter some element in the list.
                                  + Separate them by comma or just press enter +
                                  + +

                                  Actions

                                  + Disable + Enable + Undo + Reset + Add an item + Add 3 items + See all values in firebug + See validated values in firebug + See unvalidated values in firebug + +

                                  Demos

                                  +
                                  +
                                  +

                                  With inputbox and editable items

                                  + +
                                  + note : you can move between all editable area with left and right arrow.
                                  + This feature can be desactivated +
                                  + +
                                  +
                                  +
                                  +

                                  Without inputbox and with editable items

                                  + +
                                  + note : you can move between all editable area with left and right arrow
                                  + This feature can be desactivated +
                                  + +
                                  +
                                  +
                                  +

                                  Without initial value

                                  +
                                  +
                                  +
                                  +

                                  With inputbox and without editable items

                                  +
                                  +
                                  +
                                  +

                                  Without inputbox and without editable items

                                  +
                                  +
                                  +
                                  +

                                  With validation

                                  +
                                  + note : enter only digits +
                                  +
                                  +
                                  +
                                  +

                                  With custom separator

                                  +
                                  + note : you can use semi-colon for separate item
                                  + You also can use an array of separators +
                                  +
                                  +
                                  +
                                  +

                                  With a submit form

                                  +
                                  + note : after submit, see url +
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  +

                                  With a submit form - submit only validated value

                                  +
                                  + note : after submit, see url
                                  + enter only digits +
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  +

                                  With a max number of items

                                  +
                                  + note : you can only add 3 items +
                                  +
                                  +
                                  +
                                  +

                                  Without close button

                                  +
                                  + note : you can specify if you want close button :
                                  + - only on validated value
                                  + - only on unvalidated value
                                  + - never
                                  + - always
                                  +
                                  +
                                  +
                                  +
                                  +

                                  Without anim

                                  +
                                  +
                                  +
                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_Manager1.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_Manager1.html new file mode 100644 index 0000000..e080fe4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_Manager1.html @@ -0,0 +1,215 @@ + + + + dojox.form.Manager (test #1) + + + + + + + +
                                  +
                                  + + + + + + +
                                  NameValue
                                  +
                                  +
                                  +
                                  +
                                  + HTML form elements +
                                  + +   +
                                  +
                                  + +   +   + +   +
                                  +
                                  + +   +
                                  +
                                  + +   +
                                  +
                                  + +   +
                                  +
                                  + +   +
                                  +
                                  +
                                  + +
                                  +
                                  +   +   +   + +
                                  +
                                  +
                                  + Dijit form widgets +
                                  + +   +
                                  +
                                  + +   +   + +   +
                                  +
                                  + +   +
                                  +
                                  + +   +
                                  +
                                  + +   +
                                  +
                                  +
                                  + +
                                  +
                                  +   +   +   + +
                                  +
                                  + + + +
                                  +
                                  +
                                  + +

                                  + +   +
                                  + +   +
                                  + +   +
                                  + +   +

                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_MultiComboBox.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_MultiComboBox.html new file mode 100644 index 0000000..cda0244 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_MultiComboBox.html @@ -0,0 +1,71 @@ + + + + Multi-input ComboBox widget + + + + + + +

                                  dojox.form.MultiComboBox

                                  +

                                  + This widget is an extension to ComboBox to allow "tag" style input using a datastore. Start typing + into the box, and your options will be presented. The default delimiter is a comma, which can be over-ridden + by the delimiter="" attrbute. +

                                  + +
                                  + +

                                  Default:

                                  + + +

                                  Alternate delimiter (:)

                                  + + +

                                  From code:

                                  +
                                  + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_PasswordValidator.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_PasswordValidator.html new file mode 100644 index 0000000..df2d88c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_PasswordValidator.html @@ -0,0 +1,247 @@ + + + + + + + + +

                                  Test: dojox.form.PasswordValidator

                                  +

                                  Automated test

                                  +

                                  No old password

                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +

                                  Old password (hard-coded to "oldpw2") - not passed to getValues

                                  +
                                  +
                                  + +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +

                                  Old password (hard-coded to "oldpw3") - passed to getValues

                                  +
                                  +
                                  + +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +

                                  In Table, Old password (hard-coded to "oldpw4") - not passed to getValues

                                  +
                                  +
                                  + + + + + + + + + + + + + + +
                                  +
                                  +
                                  +
                                  +

                                  In Table, Old password (hard-coded to "oldpw5") - passed to getValues

                                  +
                                  +
                                  + + + + + + + + + + + + + + +
                                  +
                                  +
                                  +
                                  +

                                  No old password, not required

                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_RangeSlider.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_RangeSlider.html new file mode 100644 index 0000000..5d8dfc9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_RangeSlider.html @@ -0,0 +1,102 @@ + + + + Dojox RangeSlider Test + + + + + + + + + +

                                  Dojox RangeSlider test

                                  + Just try to drag the slider endpoints and the bar in the middle. You can also use the bumper and the arrows on the left and right to manipulate the range. It's also possible to tab through the slider parts and move the handlers or bar with left/right/up/down-button. +

                                  Horizontal slider

                                  +
                                  +
                                    +
                                    +
                                    + Horizontal Slider Min Value:
                                    + Horizontal Slider Max Value:
                                    + + + +

                                    A customized horizontal slider

                                    +
                                    + + +

                                    Vertical slider

                                    +
                                    +
                                      +
                                    1. 0
                                    2. +
                                    3. 100
                                    4. +
                                    +
                                    +
                                    +
                                      +
                                      +

                                      + Vertical Slider Max Value:
                                      + Vertical Slider Min Value:
                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_Rating.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_Rating.html new file mode 100644 index 0000000..abe75a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_Rating.html @@ -0,0 +1,105 @@ + + + + Dojox Rating Test + + + + + + + + +

                                      Dojox Rating test

                                      + +

                                      default usage:

                                      + The attribute "numStars" is not given, so the default 3 stars are shown.
                                      + + The value is: 0 +

                                      + +

                                      5 stars:

                                      + The attribute "numStars" is given and set to 5, the initial value is 3.
                                      + +

                                      + +

                                      Customized, "my big stars":

                                      + The stars are bigger, and styled this way that there is space around each. + When hovering the background color is changed too. All this is achieved via CSS, see top of this file. +
                                      + The attribute "numStars" is set to 10, so we see ten stars. +
                                      + + + + +

                                      + The value is: 0 +
                                      + The mouse is over: 0 +
                                      + +

                                      Spacing

                                      + Surrounded by text to see that it really takes all it's space + Surrounded by text to see that it really takes all it's space + Surrounded by text to see that it really takes all it's space + Surrounded by text to see that it really takes all it's space + Surrounded by text to see that it really takes all it's space
                                      + Surrounded by text to see that it really takes all it's space + Surrounded by text to see that it really takes all it's space + Surrounded by text to see that it really takes all it's space + Surrounded by text to see that it really takes all it's space +

                                      + +

                                      Inside a dojo form

                                      + +
                                      + +

                                      +
                                      +

                                      + +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_SelectStack.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_SelectStack.html new file mode 100644 index 0000000..211ab5d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_SelectStack.html @@ -0,0 +1,129 @@ + + + + + + + +

                                      Test: dojox.form.SelectStack

                                      +
                                      +

                                      DropDown-based Select

                                      + + +
                                      +

                                      Radio-based Select

                                      + +
                                      +
                                      + Options for "First": +
                                      +
                                      + Options for "Second":
                                      + More Options for "Second": +
                                      +
                                      +
                                      +

                                      *Two* controllers

                                      +
                                      +
                                      +
                                      + Options for "First": +
                                      +
                                      + Options for "Second":
                                      + More Options for "Second": +
                                      +
                                      +
                                      +
                                      + +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_TimeSpinner.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_TimeSpinner.html new file mode 100644 index 0000000..7e8f8e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_TimeSpinner.html @@ -0,0 +1,61 @@ + + + + Dojo Spinner Widget Test + + + + + + + + + +

                                      Dojox TimeSpinner Test

                                      + Try typing values, and use the up/down arrow keys and/or the arrow push + buttons to spin +
                                      +
                                      +

                                      time spinner

                                      +
                                      + +
                                      + +
                                      + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_TriStateCheckbox.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_TriStateCheckbox.html new file mode 100644 index 0000000..5cc8880 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_TriStateCheckbox.html @@ -0,0 +1,135 @@ + + + + + TriStateCheckBox Widget Demo + + + + + + + + +

                                      Dojox TriStateCheckBoxes Test

                                      +

                                      + Here are some triStateCheckBoxes. Try clicking, and hovering, tabbing, and using the space bar to select: +

                                      + +
                                      + + +
                                      + + + +
                                      + + + "onChange" handler displays attribute 'checked': [] + +
                                      + + +
                                      + + +
                                      + + + +
                                      + + +
                                      + + + + + + + "onChange" handler displays 'value': [] +
                                      + + + "onChange" handler displays 'value': [] +
                                      + + +
                                      + + +
                                      + + +
                                      +
                                      + actual submitted values: + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_Uploader.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_Uploader.html new file mode 100644 index 0000000..f621a4d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_Uploader.html @@ -0,0 +1,183 @@ + + + + Test dojox.form.Uploader + + + + + + + + + + + + +

                                      Test dojox.form.Uploader

                                      +

                                      + NOTE: This test does upload, + but the server scripts are renamed to tests/UploadFile.php.disabled and + tests/cLOG.php.disabled to prevent security attacks on hosted servers. + You should rename these files (removing .disabled) in your local copy to conduct tests. +

                                      +

                                      + The Flash plugin will use a SWF to upload in non-HTML5 browsers. All other browsers will use the HTML5 plugin, + unless force="flash" is used, then Flash will be used in all browsers. force="flash" + is provided because Flash has some features that HTML5 does not yet have. But it is still not + recommended because of the many problems that Firefox and Webkit have with the Flash plugin. +

                                      +

                                      When HTML5 plugin is in use, drag & drop of files to the fieldset is supported.

                                      + + + + + + +
                                      +
                                      +
                                      + Block Browse Button Form Post Test + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + Inline Browse Button Form Post Test + inline control
                                      Browse
                                      + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/test_UploaderAll.html b/js/dojo-release-1.7.2-src/dojox/form/tests/test_UploaderAll.html new file mode 100644 index 0000000..beb4f8d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/test_UploaderAll.html @@ -0,0 +1,217 @@ + + + + Test dojox.form.UploaderHTML5 + + + + + + + + + + + + + + + +

                                      Test dojox.form.Uploader Flash

                                      +

                                      + NOTE: This test does upload, + but the server scripts are renamed to tests/UploadFile.php.disabled and + tests/cLOG.php.disabled to prevent security attacks on hosted servers. + You should rename these files (removing .disabled) in your local copy to conduct tests. +

                                      +

                                      + The Uploader with no plugins is in "Form" mode. This mode will not do an Ajax upload. + Only form POSTs will work and they will navigate to the UploadFile.php page. +

                                      +

                                      + The HTML5 Uploder plugin does not support IE. HTML5 is more of a base class for IFrame or + Flash, or used in cases where IE is not a requirement. This test case is for development purposes. +

                                      +

                                      + The IFrame plugin will use the IFrame to upload in IE. All other browsers will use the HTML5 plugin + unless force="iframe" is used. + When using this plugin, be sure your form use the attribute: enctype="multipart/form-data" +

                                      +

                                      + The Flash plugin will use a SWF to upload in non-HTML5 browsers. All other browsers will use the HTML5 plugin, + unless force="flash" is used, then Flash will be used in all browsers. force="flash" + is provided because Flash has some features that HTML5 does not yet have. But it is still not + recommended because of the many problems that Firefox and Webkit have with the Flash plugin. +

                                      +

                                      + Form + HTML5 + IFrame + Flash +

                                      + + + + + +
                                      +
                                      +
                                      + Form Post Test + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/form/tests/uploads/README b/js/dojo-release-1.7.2-src/dojox/form/tests/uploads/README new file mode 100644 index 0000000..3d752af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/tests/uploads/README @@ -0,0 +1,11 @@ +------------------------------------------------------------------------------- +This folder is used for dojox.form.FileUploader tests + I had resisted adding an empty folder to the SVN, but I'm sure + I was not the only one frustrated by the FileUploader dumping + images into the resources folder and making a mess. Now at least + they will be in one place. I did want to put this in "tests". but + that folder is not included in downloads and could break some things. + + Mike Wilcox +------------------------------------------------------------------------------- + diff --git a/js/dojo-release-1.7.2-src/dojox/form/uploader/Base.js b/js/dojo-release-1.7.2-src/dojox/form/uploader/Base.js new file mode 100644 index 0000000..53f81a9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/uploader/Base.js @@ -0,0 +1,125 @@ +define([ + "dojo/dom-form", + "dojo/dom-style", + "dojo/dom-construct", + "dojo/dom-attr", + "dojo/has", + "dojo/_base/declare", + "dojo/_base/event", + "dijit/_Widget", + "dijit/_TemplatedMixin", + "dijit/_WidgetsInTemplateMixin" +],function(domForm, domStyle, domConstruct, domAttr, has, declare, event, Widget, TemplatedMixin, WidgetsInTemplateMixin){ + +has.add('FormData', function(){return !!window.FormData;}); +has.add('xhr-sendAsBinary', function(){var xhr=window.XMLHttpRequest && new window.XMLHttpRequest(); return xhr && !!xhr.sendAsBinary;}); +has.add('file-multiple', function(){return !!({'true':1,'false':1}[domAttr.get(document.createElement('input',{type:"file"}), 'multiple')]);}); + + /*===== + Widget = dijit._Widget; + TemplatedMixin = dijit._TemplatedMixin; + WidgetsInTemplateMixin = dijit._WidgetsInTemplateMixin; + =====*/ +return declare("dojox.form.uploader.Base", [Widget, TemplatedMixin, WidgetsInTemplateMixin], { + // + // Version: 1.6 + // + // summary: + // The Base class used for dojox.form.Uploader and dojox.form.uploader.FileList. + // + // description: + // Should not be used as a standalone. To be mixed in with other classes. + // + + getForm: function(){ + // summary: + // Finds the parent form of the Uploader, if it exists. + // + if(!this.form){ + var n = this.domNode; + while(n && n.tagName && n !== document.body){ + if(n.tagName.toLowerCase() == "form"){ + this.form = n; + break; + } + n = n.parentNode; + } + } + return this.form // Node; + }, + + getUrl: function(){ + // summary: + // Finds the URL to upload to, whether it be the action in the parent form, this.url or + // this.uploadUrl + // + if(this.uploadUrl) this.url = this.uploadUrl; + if(this.url) return this.url; + if(this.getForm()) this.url = this.form.action; + return this.url; // String + }, + + + connectForm: function(){ + // summary: + // Internal. Connects to form if there is one. + // + this.url = this.getUrl(); + if(!this._fcon && !!this.getForm()){ + this._fcon = true; + this.connect(this.form, "onsubmit", function(evt){ + event.stop(evt); + this.submit(this.form); + }); + } + }, + + supports: function(what){ + // summary: + // Does feature testing for uploader capabilities. (No browser sniffing - yay) + // + switch(what){ + case "multiple": + if(this.force == "flash" || this.force == "iframe") return false; + return has("file-multiple"); + case "FormData": + return has(what); + case "sendAsBinary": + return has("xhr-sendAsBinary"); + } + return false; // Boolean + }, + getMimeType: function(){ + // summary: + // Returns the mime type that should be used in an HTML5 upload form. Return result + // may change as the current use is very generic. + // + return "application/octet-stream"; //image/gif + }, + getFileType: function(/* String */name){ + // summary: + // Gets the extension of a file + return name.substring(name.lastIndexOf(".")+1).toUpperCase(); // String + }, + convertBytes: function(bytes){ + // summary: + // Converts bytes. Returns an object with all conversions. The "value" property is + // considered the most likely desired result. + // + var kb = Math.round(bytes/1024*100000)/100000; + var mb = Math.round(bytes/1048576*100000)/100000; + var gb = Math.round(bytes/1073741824*100000)/100000; + var value = bytes; + if(kb>1) value = kb.toFixed(1)+" kb"; + if(mb>1) value = mb.toFixed(1)+" mb"; + if(gb>1) value = gb.toFixed(1)+" gb"; + return { + kb:kb, + mb:mb, + gb:gb, + bytes:bytes, + value: value + }; // Object + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/uploader/FileList.js b/js/dojo-release-1.7.2-src/dojox/form/uploader/FileList.js new file mode 100644 index 0000000..1b4fcf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/uploader/FileList.js @@ -0,0 +1,201 @@ +define([ + "dojo/_base/fx", + "dojo/dom-style", + "dojo/dom-class", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dijit/_base/manager", + "dojox/form/uploader/Base" +],function(fx, domStyle, domClass, declare, lang, array, manager, formUploaderBase){ + + /*===== + formUploaderBase = dojox.form.uploader.Base; + =====*/ +return declare("dojox.form.uploader.FileList", [formUploaderBase], { + // + // Version: 1.6 + // + // summary: + // A simple widget that provides a list of the files currently selected by + // dojox.form.Uploader + // + // description: + // There is a required CSS file: resources/UploaderFileList.css. + // This is a very simple widget, and not beautifully styled. It is here mainly for test + // cases, but could very easily be used, extended, modified, or copied. + // + // uploaderId: String + // The id of the dojox.form.Uploader to connect to. + uploaderId:"", + // uploader: dojox.form.Uploader + // The dojox.form.Uploader to connect to. Use either this property of unploaderId. This + // property is populated if uploaderId is used. + // + uploader:null, + // headerIndex: String + // The label for the index column. + // + headerIndex:"#", + // headerType: String + // The label for the file type column. + // + headerType:"Type", + // headerFilename: String + // The label for the file name column. + // + headerFilename:"File Name", + // headerFilesize: String + // The label for the file size column. + // + headerFilesize:"Size", + + _upCheckCnt:0, + rowAmt:0, + + templateString: '
                                      ' + + '
                                      0%
                                      ' + + ''+ + ''+ + ''+ + ''+ + '
                                      ${headerIndex}${headerType}${headerFilename}${headerFilesize}
                                      '+ + '
                                      ' + , + + postCreate: function(){ + this.setUploader(); + this.hideProgress(); + }, + + reset: function(){ + // summary: + // Clears all rows of items. Happens automatically if Uploader is reset, but you + // could call this directly. + // + for(var i=0;i4){ + console.warn("uploader not found for ID ", this.uploaderId); + return; + } + if(this.uploader){ + this.connect(this.uploader, "onChange", "_onUploaderChange"); + this.connect(this.uploader, "reset", "reset"); + this.connect(this.uploader, "onBegin", function(){ + this.showProgress(true); + }); + this.connect(this.uploader, "onProgress", "_progress"); + this.connect(this.uploader, "onComplete", function(){ + setTimeout(lang.hitch(this, function(){ + this.hideProgress(true); + }), 1250); + }); + if(!(this._fileSizeAvail = {'html5':1,'flash':1}[this.uploader.uploadType])){ + //if uploadType is neither html5 nor flash, file size is not available + //hide the size header + this.sizeHeader.style.display="none"; + } + }else{ + this._upCheckCnt++; + setTimeout(lang.hitch(this, "setUploader"), 250); + } + }, + + hideProgress: function(/* Boolean */animate){ + var o = animate ? { + ani:true, + endDisp:"none", + beg:15, + end:0 + } : { + endDisp:"none", + ani:false + }; + this._hideShowProgress(o); + }, + + showProgress: function(/* Boolean */animate){ + var o = animate ? { + ani:true, + endDisp:"block", + beg:0, + end:15 + } : { + endDisp:"block", + ani:false + }; + this._hideShowProgress(o); + }, + + _progress: function(/* Object */ customEvent){ + this.percentTextNode.innerHTML = customEvent.percent; + domStyle.set(this.percentBarNode, "width", customEvent.percent); + }, + + _hideShowProgress: function(o){ + var node = this.progressNode; + var onEnd = function(){ + domStyle.set(node, "display", o.endDisp); + } + if(o.ani){ + domStyle.set(node, "display", "block"); + fx.animateProperty({ + node: node, + properties:{ + height:{ + start:o.beg, + end:o.end, + units:"px" + } + }, + onEnd:onEnd + }).play(); + }else{ + onEnd(); + } + }, + + _onUploaderChange: function(fileArray){ + this.reset(); + array.forEach(fileArray, function(f, i){ + this._addRow(i+1, this.getFileType(f.name), f.name, f.size); + }, this) + }, + + _addRow: function(index, type, name, size){ + + var c, r = this.listNode.insertRow(-1); + c = r.insertCell(-1); + domClass.add(c, "dojoxUploaderIndex"); + c.innerHTML = index; + + c = r.insertCell(-1); + domClass.add(c, "dojoxUploaderIcon"); + c.innerHTML = type; + + c = r.insertCell(-1); + domClass.add(c, "dojoxUploaderFileName"); + c.innerHTML = name; + if(this._fileSizeAvail){ + c = r.insertCell(-1); + domClass.add(c, "dojoxUploaderSize"); + c.innerHTML = this.convertBytes(size).value; + } + + this.rowAmt++; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/Flash.js b/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/Flash.js new file mode 100644 index 0000000..4b31aff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/Flash.js @@ -0,0 +1,306 @@ +define([ + "dojo/dom-form", + "dojo/dom-style", + "dojo/dom-construct", + "dojo/dom-attr", + "dojo/_base/declare", + "dojo/_base/config", + "dojo/_base/connect", + "dojo/_base/lang", + "dojo/_base/array", + "dojox/form/uploader/plugins/HTML5", + "dojox/embed/Flash" +],function(domForm, domStyle, domConstruct, domAttr, declare, config, connect, lang, array, formUploaderPluginsHTML5, embedFlash){ + + +var pluginsFlash = declare("dojox.form.uploader.plugins.Flash", [], { + // + // Version: 1.6 + // + // summary: + // A plugin for dojox.form.Uploader that utilizes a Flash SWF for handling to upload in IE. + // All other browsers will use the HTML5 plugin, unless force="flash" is used, then Flash + // will be used in all browsers. force="flash" is provided because Flash has some features + // that HTML5 does not yet have. But it is still not recommended because of the many problems + // that Firefox and Webkit have with the Flash plugin. + // + // description: + // Inherits all properties from dojox.form.Uploader and formUploaderPluginsHTML5. + // All properties and methods listed here are specific to the Flash plugin only. + // + // swfPath:String + // Path to SWF. Can be overwritten or provided in djConfig. + swfPath:config.uploaderPath || require.toUrl("dojox/form/resources/uploader.swf"), + // + // skipServerCheck: Boolean + // If true, will not verify that the server was sent the correct format. + // This can be safely set to true. The purpose of the server side check + // is mainly to show the dev if they've implemented the different returns + // correctly. + skipServerCheck:true, + // + // serverTimeout:Number (milliseconds) + // The amount of time given to the uploaded file + // to wait for a server response. After this amount + // of time, the onComplete is fired but with a 'server timeout' + // error in the returned item. + serverTimeout: 2000, + // + // isDebug: Boolean + // If true, outputs traces from the SWF to console. What exactly gets passed + // is very relative, and depends upon what traces have been left in the DEFT SWF. + isDebug:false, + // + // devMode: Boolean. + // Re-implemented. devMode increases the logging, adding style tracing from the SWF. + devMode:false, + // + // deferredUploading: Number (1 - X) + // (Flash only) throttles the upload to a certain amount of files at a time. + // By default, Flash uploads file one at a time to the server, but in parallel. + // Firefox will try to queue all files at once, leading to problems. Set this + // to the amount to upload in parallel at a time. + // Generally, 1 should work fine, but you can experiment with queuing more than + // one at a time. + // This is of course ignored if selectMultipleFiles equals false. + deferredUploading:0, + // + // force: String + // Use "flash" to always use Flash (and hopefully force the user to download the plugin + // if they don't have it). + force:"", + + postMixInProperties: function(){ + if(!this.supports("multiple")){ + // Flash will only be used in IE6-8 unless force="flash" + this.uploadType = "flash"; + this._files = []; + this._fileMap = {}; + this._createInput = this._createFlashUploader; + this.getFileList = this.getFlashFileList; + this.reset = this.flashReset; + this.upload = this.uploadFlash; + this.fieldname = "flashUploadFiles"; ///////////////////// this.name + } + this.inherited(arguments); + }, + + /************************* + * Public Events * + *************************/ + + onReady: function(/* dojox.form.FileUploader */ uploader){ + // summary: + // Stub - Fired when embedFlash has created the + // Flash object, but it has not necessarilly finished + // downloading, and is ready to be communicated with. + }, + + onLoad: function(/* dojox.form.FileUploader */ uploader){ + // summary: + // Stub - SWF has been downloaded 100%. + }, + + onFileChange: function(fileArray){ + // summary: + // Stub - Flash-specific event. Fires on each selection of files + // and only provides the files selected on that event - not all files + // selected, as with HTML5 + }, + + onFileProgress: function(fileArray){ + // summary: + // Stub - Flash-specific event. Fires on progress of upload + // and only provides a file-specific event + }, + + + /************************* + * Public Methods * + *************************/ + + getFlashFileList: function(){ + // summary: + // Returns list of currently selected files + return this._files; // Array + }, + + flashReset: function(){ + this.flashMovie.reset(); + this._files = []; + }, + + /************************* + * Private Methods * + *************************/ + + uploadFlash: function(/*Object ? */formData){ + // summary: + // Uploads selected files. Alias "upload()" should be used instead. + // tags: + // private + this.onBegin(this.getFileList()); + this.flashMovie.doUpload(formData); + }, + + _change: function(fileArray){ + this._files = this._files.concat(fileArray); + array.forEach(fileArray, function(f){ + f.bytesLoaded = 0; + f.bytesTotal = f.size; + this._fileMap[f.name+"_"+f.size] = f; + }, this); + this.onChange(this._files); + this.onFileChange(fileArray); + }, + _complete: function(fileArray){ + var o = this._getCustomEvent(); + o.type = "load"; + this.onComplete(fileArray); + }, + _progress: function(f){ + this._fileMap[f.name+"_"+f.bytesTotal].bytesLoaded = f.bytesLoaded; + var o = this._getCustomEvent(); + this.onFileProgress(f); + this.onProgress(o); + }, + _error: function(err){ + this.onError(err); + }, + _onFlashBlur: function(fileArray){ + //console.log("UploaderFlash._onFlashBlur"); + }, + + _getCustomEvent: function(){ + var o = { + bytesLoaded:0, + bytesTotal:0, + type:"progress", + timeStamp:new Date().getTime() + }; + + + for(var nm in this._fileMap){ + o.bytesTotal += this._fileMap[nm].bytesTotal; + o.bytesLoaded += this._fileMap[nm].bytesLoaded; + } + o.decimal = o.bytesLoaded / o.bytesTotal; + o.percent = Math.ceil((o.bytesLoaded / o.bytesTotal)*100)+"%"; + return o; // Object + }, + + _connectFlash: function(){ + // summary: + // Subscribing to published topics coming from the + // Flash uploader. + // description: + // Sacrificing some readbilty for compactness. this.id + // will be on the beginning of the topic, so more than + // one uploader can be on a page and can have unique calls. + // + + this._subs = []; + this._cons = []; + + var doSub = lang.hitch(this, function(s, funcStr){ + this._subs.push(connect.subscribe(this.id + s, this, funcStr)); + }); + + doSub("/filesSelected", "_change"); + doSub("/filesUploaded", "_complete"); + doSub("/filesProgress", "_progress"); + doSub("/filesError", "_error"); + doSub("/filesCanceled", "onCancel"); + doSub("/stageBlur", "_onFlashBlur"); + + this.connect(this.domNode, "focus", function(){ + // TODO: some kind of indicator that the Flash button + // is in focus + this.flashMovie.focus(); + this.flashMovie.doFocus(); + }); + if(this.tabIndex>=0){ + domAttr.set(this.domNode, "tabIndex", this.tabIndex); + } + }, + _createFlashUploader: function(){ + // summary: + // Internal. Creates Flash Uploader + // + var url = this.getUrl(); + if(url){ + if(url.toLowerCase().indexOf("http")<0 && url.indexOf("/")!=0){ + // Appears to be a relative path. Attempt to + // convert it to absolute, so it will better + //target the SWF. + // + var loc = window.location.href.split("/"); + loc.pop(); + loc = loc.join("/")+"/"; + url = loc+url; + } + }else{ + console.warn("Warning: no uploadUrl provided."); + } + + this.inputNode = domConstruct.create("div", {className:"dojoxFlashNode"}, this.domNode, "first"); + domStyle.set(this.inputNode, { + position:"absolute", + top:"-2px", + width:this.btnSize.w+"px", + height:this.btnSize.h+"px", + opacity:0 + }); + + var w = this.btnSize.w; + var h = this.btnSize.h; + + var args = { + expressInstall:true, + path: (this.swfPath.uri || this.swfPath) + "?cb_" + (new Date().getTime()), + width: w, + height: h, + allowScriptAccess:"always", + allowNetworking:"all", + vars: { + uploadDataFieldName: this.flashFieldName || this.name+"Flash", + uploadUrl: url, + uploadOnSelect: this.uploadOnSelect, + deferredUploading:this.deferredUploading || 0, + selectMultipleFiles: this.multiple, + id: this.id, + isDebug: this.isDebug, + noReturnCheck: this.skipServerCheck, + serverTimeout:this.serverTimeout + }, + params: { + scale:"noscale", + wmode:"transparent", + wmode:"opaque", + allowScriptAccess:"always", + allowNetworking:"all" + } + + }; + + this.flashObject = new embedFlash(args, this.inputNode); + this.flashObject.onError = lang.hitch(function(msg){ + console.error("Flash Error: " + msg); + }); + this.flashObject.onReady = lang.hitch(this, function(){ + this.onReady(this); + }); + this.flashObject.onLoad = lang.hitch(this, function(mov){ + this.flashMovie = mov; + this.flashReady = true; + + this.onLoad(this); + }); + this._connectFlash(); + } +}); +dojox.form.addUploaderPlugin(pluginsFlash); + + +return pluginsFlash; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/HTML5.js b/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/HTML5.js new file mode 100644 index 0000000..fb06cbc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/HTML5.js @@ -0,0 +1,240 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dojo" +],function(declare, lang, array, dojo){ + +var pluginsHTML5 = declare("dojox.form.uploader.plugins.HTML5", [], { + // + // Version: 1.6 + // + // summary: + // A plugin for dojox.form.Uploader that adds HTML5 multiple-file upload capabilities and + // progress events. + // + // description: + // Add this plugin to have HTML5 capabilities in the Uploader. Note that it does not add + // these capabilities to browsers that don't support them. For IE or older browsers, add + // additional plugins: IFrame or Flash. + // + errMsg:"Error uploading files. Try checking permissions", + + // Overwrites "form" and could possibly be overwritten again by iframe or flash plugin. + uploadType:"html5", + + postCreate: function(){ + this.connectForm(); + this.inherited(arguments); + if(this.uploadOnSelect){ + this.connect(this, "onChange", function(data){ + this.upload(data[0]); + }); + } + }, + + _drop: function(e){ + dojo.stopEvent(e); + var dt = e.dataTransfer; + this._files = dt.files; + this.onChange(this.getFileList()); + }, + /************************* + * Public Methods * + *************************/ + + upload: function(/*Object ? */formData){ + // summary: + // See: dojox.form.Uploader.upload + // + this.onBegin(this.getFileList()); + if(this.supports("FormData")){ + this.uploadWithFormData(formData); + }else if(this.supports("sendAsBinary")){ + this.sendAsBinary(formData); + } + }, + + addDropTarget: function(node, /*Boolean?*/onlyConnectDrop){ + // summary: + // Add a dom node which will act as the drop target area so user + // can drop files to this node. + // description: + // If onlyConnectDrop is true, dragenter/dragover/dragleave events + // won't be connected to dojo.stopEvent, and they need to be + // canceled by user code to allow DnD files to happen. + // This API is only available in HTML5 plugin (only HTML5 allows + // DnD files). + if(!onlyConnectDrop){ + this.connect(node, 'dragenter', dojo.stopEvent); + this.connect(node, 'dragover', dojo.stopEvent); + this.connect(node, 'dragleave', dojo.stopEvent); + } + this.connect(node, 'drop', '_drop'); + }, + + sendAsBinary: function(/* Object */data){ + // summary: + // Used primarily in FF < 4.0. Sends files and form object as binary data, written to + // still enable use of $_FILES in PHP (or equivalent). + // tags: + // private + // + if(!this.getUrl()){ + console.error("No upload url found.", this); return; + } + + // The date/number doesn't matter but amount of dashes do. The actual boundary + // will have two more dashes than this one which is used in the header. + var boundary = "---------------------------" + (new Date).getTime(); + var xhr = this.createXhr(); + + xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary); + + // finally send the request as binary data + // still accessed as $_FILES + var msg = this._buildRequestBody(data, boundary); + if(!msg){ + this.onError(this.errMsg); + }else{ + console.log("msg:", msg) + console.log("xhr:", xhr) + + xhr.sendAsBinary(msg); + } + }, + uploadWithFormData: function(/* Object */data){ + // summary + // Used with WebKit and Firefox 4+ + // Upload files using the much friendlier FormData browser object. + // tags: + // private + // + if(!this.getUrl()){ + console.error("No upload url found.", this); return; + } + var fd = new FormData(); + array.forEach(this._files, function(f, i){ + fd.append(this.name+"s[]", f); + }, this); + + if(data){ + for(var nm in data){ + fd.append(nm, data[nm]); + } + } + + var xhr = this.createXhr(); + xhr.send(fd); + }, + + _xhrProgress: function(evt){ + if(evt.lengthComputable){ + var o = { + bytesLoaded:evt.loaded, + bytesTotal:evt.total, + type:evt.type, + timeStamp:evt.timeStamp + }; + if(evt.type == "load"){ + // 100% + o.percent = "100%", + o.decimal = 1; + }else{ + o.decimal = evt.loaded / evt.total; + o.percent = Math.ceil((evt.loaded / evt.total)*100)+"%"; + } + this.onProgress(o); + } + }, + + createXhr: function(){ + var xhr = new XMLHttpRequest(); + var timer; + xhr.upload.addEventListener("progress", lang.hitch(this, "_xhrProgress"), false); + xhr.addEventListener("load", lang.hitch(this, "_xhrProgress"), false); + xhr.addEventListener("error", lang.hitch(this, function(evt){ + this.onError(evt); + clearInterval(timer); + }), false); + xhr.addEventListener("abort", lang.hitch(this, function(evt){ + this.onAbort(evt); + clearInterval(timer); + }), false); + xhr.onreadystatechange = lang.hitch(this, function(){ + if(xhr.readyState === 4){ +// console.info("COMPLETE") + clearInterval(timer); + this.onComplete(JSON.parse(xhr.responseText.replace(/^\{\}&&/,''))); + } + }); + xhr.open("POST", this.getUrl()); + + timer = setInterval(lang.hitch(this, function(){ + try{ + if(typeof(xhr.statusText)){} // accessing this error throws an error. Awesomeness. + }catch(e){ + //this.onError("Error uploading file."); // not always an error. + clearInterval(timer); + } + }),250); + + return xhr; + }, + + _buildRequestBody : function(data, boundary){ + var EOL = "\r\n"; + var part = ""; + boundary = "--" + boundary; + + var filesInError = [], files = this._files; + array.forEach(files, function(f, i){ + var fieldName = this.name+"s[]";//+i; + var fileName = f.fileName; + var binary; + + try{ + binary = f.getAsBinary() + EOL; + part += boundary + EOL; + part += 'Content-Disposition: form-data; '; + part += 'name="' + fieldName + '"; '; + part += 'filename="'+ fileName + '"' + EOL; + part += "Content-Type: " + this.getMimeType() + EOL + EOL; + part += binary; + }catch(e){ + filesInError.push({index:i, name:fileName}); + } + }, this); + + if(filesInError.length){ + if(filesInError.length >= files.length){ + // all files were bad. Nothing to upload. + this.onError({ + message:this.errMsg, + filesInError:filesInError + }); + part = false; + } + } + + if(!part) return false; + + if(data){ + for(var nm in data){ + part += boundary + EOL; + part += 'Content-Disposition: form-data; '; + part += 'name="' + nm + '"' + EOL + EOL; + part += data[nm] + EOL; + } + } + + + part += boundary + "--" + EOL; + return part; + } + +}); +dojox.form.addUploaderPlugin(pluginsHTML5); + +return pluginsHTML5; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/IFrame.js b/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/IFrame.js new file mode 100644 index 0000000..9937e68 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/form/uploader/plugins/IFrame.js @@ -0,0 +1,78 @@ +define([ + "dojo/dom-construct", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/io/iframe", + "dojox/form/uploader/plugins/HTML5" +],function(domConstruct, declare, lang, array, ioIframe, formUploaderPluginsHTML5){ + + +var pluginsIFrame = declare("dojox.form.uploader.plugins.IFrame", [], { + // + // Version: 1.6 + // + // summary: + // A plugin for dojox.form.Uploader that adds Ajax upload capabilities. + // + // description: + // Only supported by IE, due to the specifc iFrame hack used. The + // formUploaderPluginsHTML5 plugin should be used along with this to add HTML5 + // capabilities to browsers that support them. Progress events are not supported. + // Inherits all properties from dojox.form.Uploader and formUploaderPluginsHTML5. + // + + force:"", + + postMixInProperties: function(){ + this.inherited(arguments); + if(!this.supports("multiple") || this.force =="iframe"){ + this.uploadType = "iframe"; + this.upload = this.uploadIFrame; + } + }, + + uploadIFrame: function(data){ + // summary: + // Internal. You could use this, but you should use upload() or submit(); + // which can also handle the post data. + // + var form, destroyAfter = false; + if(!this.getForm()){ + //enctype can't be changed once a form element is created + form = domConstruct.place('
                                      ', this.domNode); + array.forEach(this._inputs, function(n, i){ + if(n.value) form.appendChild(n); + }, this); + destroyAfter = true; + }else{ + form = this.form; + } + + var url = this.getUrl(); + + var dfd = ioIframe.send({ + url: url, + form: form, + handleAs: "json", + content: data, + error: lang.hitch(this, function(err){ + if(destroyAfter){ domConstruct.destroy(form); } + this.onError(err); + }), + load: lang.hitch(this, function(data, ioArgs, widgetRef){ + if(destroyAfter){ domConstruct.destroy(form); } + if(data["ERROR"] || data["error"]){ + this.onError(data); + }else{ + this.onComplete(data); + } + }) + }); + } +}); + +dojox.form.addUploaderPlugin(pluginsIFrame); + +return pluginsIFrame; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx.js b/js/dojo-release-1.7.2-src/dojox/fx.js new file mode 100644 index 0000000..c3e3863 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx.js @@ -0,0 +1,3 @@ +define(["./fx/_base"], function(DojoxFx){ + return DojoxFx; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/README b/js/dojo-release-1.7.2-src/dojox/fx/README new file mode 100644 index 0000000..edc8891 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/README @@ -0,0 +1,75 @@ +------------------------------------------------------------------------------- +dojox.fx +------------------------------------------------------------------------------- +Version 1.0.0 +Release date: 10/31/2007 +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Peter Higgins (dante) + Jonathan Bond-Caron (jbondc@gmail.com) + Shane O'Sullivan (shaneosullivan1@gmail.com) + Bryan Forbes (bforbes) + Nicola Rizzo (nic) + +------------------------------------------------------------------------------- +Project description + + dojox.fx provides a class of animation effects to use, and + other animation and Effects additions to dojo base. + +------------------------------------------------------------------------------- +Dependencies: + + dojox.fx requires dojo (core) and the dojo.fx package + dojox.fx.easing is deprecated, and exists in dojo.fx.easing. + dojox.fx.flip requires dojo.fx + dojox.fx.scroll requires dojox.fx._core and dojo.fx + +------------------------------------------------------------------------------- +Documentation + + existing API surface: + + dojox.fx._base: + - dojox.fx.crossFade - crossfade two nodes easily + - dojox.fx.sizeTo - size a node about it's center to a new width/height + - dojox.fx.slideBy - slide a node by a t,l offset + - dojox.fx.highlight - animates the background color of a node, and returns + it to the color it was. + + (all use standard Animation properties, like duration, easing, node, etc) + + dojox.fx._core: + - dojox.fx._Line - a multi-dimensional _Line implementation, backwards compatible with + dojo._Line ... you might could safely do something akin to + dojo._Line = dojox.fx._Line; + and enable this for all dojo Animations? + + dojox.fx.style: - experimental CSS animation via class definitions + - dojox.fx.addClass - animate the effects of applying a class to a node + - dojox.fx.removeClass - " " " " removing a class from a node + - dojox.fx.toggleClass - wrapper for addClass/removeClass + + dojox.fx.ext-dojo.NodeList - extensions to dojo.NodeList-fx wrapping the + relevant dojox.fx animations into dojo.NodeList + + dojox.fx.Shadow - Class to add drop shadows to a node + + dojox.fx.flip - a Module providing pseudo-3d flip animations for nodes. + Currently experimental. + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/dojo/dojox/trunk/fx.js +http://svn.dojotoolkit.org/dojo/dojox/trunk/fx/* + +Install into the following directory structure: +/dojox/fx/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/fx/Shadow.js b/js/dojo-release-1.7.2-src/dojox/fx/Shadow.js new file mode 100644 index 0000000..2e5cea7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/Shadow.js @@ -0,0 +1,146 @@ +define(["dojo/_base/kernel", "dojo/_base/query" ,"dojo/_base/lang", "dojo/_base/declare", "dojo/_base/sniff", + "dojo/dom-construct", "dojo/dom-class", "dojo/dom-geometry", "dojo/_base/fx", "dojo/fx", "dijit/_Widget", + "dojo/NodeList-fx"], + function(kernel, query, lang, declare, has, domConstruct, domClass, domGeom, baseFx, coreFx, Widget, NodeListFx){ +kernel.experimental("dojox.fx.Shadow"); +declare("dojox.fx.Shadow", Widget,{ + // summary: Adds a drop-shadow to a node. + // + // example: + // | // add drop shadows to all nodes with class="hasShadow" + // | dojo.query(".hasShadow").forEach(function(n){ + // | var foo = new dojox.fx.Shadow({ node: n }); + // | foo.startup(); + // | }); + // + // shadowPng: String + // Base location for drop-shadow images + shadowPng: kernel.moduleUrl("dojox.fx", "resources/shadow"), + + // shadowThickness: Integer + // How wide (in px) to make the shadow + shadowThickness: 7, + + // shadowOffset: Integer + // How deep to make the shadow appear to be + shadowOffset: 3, + + // opacity: Float + // Overall opacity of the shadow + opacity: 0.75, + + // animate: Boolean + // A toggle to disable animated transitions + animate: false, + + // node: DomNode + // The node we will be applying this shadow to + node: null, + + startup: function(){ + // summary: Initializes the shadow. + + this.inherited(arguments); + this.node.style.position = "relative"; + // make all the pieces of the shadow, and position/size them as much + // as possible (but a lot of the coordinates are set in sizeShadow + this.pieces={}; + var x1 = -1 * this.shadowThickness; + var y0 = this.shadowOffset; + var y1 = this.shadowOffset + this.shadowThickness; + this._makePiece("tl", "top", y0, "left", x1); + this._makePiece("l", "top", y1, "left", x1, "scale"); + this._makePiece("tr", "top", y0, "left", 0); + this._makePiece("r", "top", y1, "left", 0, "scale"); + this._makePiece("bl", "top", 0, "left", x1); + this._makePiece("b", "top", 0, "left", 0, "crop"); + this._makePiece("br", "top", 0, "left", 0); + + this.nodeList = query(".shadowPiece",this.node); + + this.setOpacity(this.opacity); + this.resize(); + }, + + _makePiece: function(name, vertAttach, vertCoord, horzAttach, horzCoord, sizing){ + // summary: append a shadow pieces to the node, and position it + var img; + var url = this.shadowPng + name.toUpperCase() + ".png"; + if(has("ie") < 7){ + img = domConstruct.create("div"); + img.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+url+"'"+ + (sizing?", sizingMethod='"+sizing+"'":"") + ")"; + }else{ + img = domConstruct.create("img", { src:url }); + } + + img.style.position="absolute"; + img.style[vertAttach]=vertCoord+"px"; + img.style[horzAttach]=horzCoord+"px"; + img.style.width=this.shadowThickness+"px"; + img.style.height=this.shadowThickness+"px"; + domClass.add(img,"shadowPiece"); + this.pieces[name]=img; + this.node.appendChild(img); + + }, + + setOpacity: function(/* Float */n,/* Object? */animArgs){ + // summary: set the opacity of the underlay + // note: does not work in IE? FIXME. + if(has("ie")){ return; } + if(!animArgs){ animArgs = {}; } + if(this.animate){ + var _anims = []; + this.nodeList.forEach(function(node){ + _anims.push(baseFx._fade(lang.mixin(animArgs,{ node: node, end: n }))); + }); + coreFx.combine(_anims).play(); + }else{ + this.nodeList.style("opacity",n); + } + + }, + + setDisabled: function(/* Boolean */disabled){ + // summary: enable / disable the shadow + if(disabled){ + if(this.disabled){ return; } + if(this.animate){ this.nodeList.fadeOut().play(); + }else{ this.nodeList.style("visibility","hidden"); } + this.disabled = true; + }else{ + if(!this.disabled){ return; } + if(this.animate){ this.nodeList.fadeIn().play(); + }else{ this.nodeList.style("visibility","visible"); } + this.disabled = false; + } + }, + + resize: function(/* dojox.fx._arg.ShadowResizeArgs */args){ + // summary: Resizes the shadow based on width and height. + var x; var y; + if(args){ x = args.x; y = args.y; + }else{ + var co = domGeom.position(this.node); + x = co.w; y = co.h; + } + var sideHeight = y - (this.shadowOffset+this.shadowThickness); + if (sideHeight < 0) { sideHeight = 0; } + if (y < 1) { y = 1; } + if (x < 1) { x = 1; } + with(this.pieces){ + l.style.height = sideHeight+"px"; + r.style.height = sideHeight+"px"; + b.style.width = x+"px"; + bl.style.top = y+"px"; + b.style.top = y+"px"; + br.style.top = y+"px"; + tr.style.left = x+"px"; + r.style.left = x+"px"; + br.style.left = x+"px"; + } + } + }); + return dojox.fx.Shadow; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/Timeline.js b/js/dojo-release-1.7.2-src/dojox/fx/Timeline.js new file mode 100644 index 0000000..2956a46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/Timeline.js @@ -0,0 +1,212 @@ +define(["dojo/_base/lang","dojo/fx/easing","dojo/_base/fx","dojo/dom","./_base","dojo/_base/connect", + "dojo/_base/html", "dojo/_base/array","dojo/_base/Color"], + function(lang, easingUtil, baseFx, dom, dojoxFx, connectUtil, htmlUtil, arrayUtil, Color){ + +dojoxFx.animateTimeline = function(/* Object */options, /* DomNode|String */node){ + // options: Object + // The paramters passed to the timeline animation. Includes: + // keys: Array + // An array of objects, with style properties and values. + // duration: + // Duration of the animation in milliseconds. + // Defaults to 1000. + // node: DomNode + // The DomNode or id to be animated. + // + // summary: + // An add-on to dojo.fx that provides the ability to create + // a complex property animation based on an array of "keyframes". + // description: + // The Timeline is a replacement for the default dojo._Line. + // Instead of _Line.getValue returning a float between 0-1, + // _Timeline.getValue returns an object with all properties and + // their current values. + // A property does not have to appear in every keyframe. + // As in the example below, "height" is transitioned from the first + // keyframe to the third. "width" is transitioned from the first + // to the second to the third. + // Each keyframe can accept the following custom properties: + // step: String + // The start, finish or percentage that this keyframe represents. + // Allowed parameters are: + // 0%-100% + // from (same as 0%, used to conform with the Webkit animation spec) + // to (same as 100%, used to conform with the Webkit animation spec) + // ease: String + // The string name of a dojo.fx.easing ease. Defaults to "linear". Use + // the suffix name of the ease, like: "quadIn", not: "dojo.fx.quadIn". + // + // example: + // | var keys = [ + // | { + // | step:"0px", + // | ease:"quadInOut", + // | width:"50px", + // | height:"50px", + // | },{ + // | step:"25%", + // | width:"190px" + // | },{ + // | step:"100%", + // | width:"10px", + // | height:"200px", + // | } + // | ]; + // | ani = dojox.fx.animateTimeline({keys:keys, duration:2000}, "myDiv").play(); + // + var _curve = new Timeline(options.keys); + var ani = baseFx.animateProperty({ + node:dom.byId(node || options.node), + duration:options.duration || 1000, + properties:_curve._properties, + // don't change! This easing is for the timeline, + // not individual properties + easing:easingUtil.linear, + onAnimate: function(v){ + //console.log(" ani:", v); + } + }); + connectUtil.connect(ani, "onEnd", function(node){ + // Setting the final style. Hiccups in the browser + // can cause the animation to lose track. This ensures + // that it finishes in the proper location. + var sty = ani.curve.getValue(ani.reversed ? 0 : 1); + htmlUtil.style(node, sty); + }); + connectUtil.connect(ani, "beforeBegin", function(){ + // remove default curve and replace it with Timeline + if(ani.curve){ delete ani.curve; } + ani.curve = _curve; + _curve.ani = ani; + }) + return ani; // dojo.Animation +} + +var Timeline = function(/* Array */keys){ + // summary: + // The dojox.fx._Timeline object from which an instance + // is created + // tags: + // private + this.keys = lang.isArray(keys) ? this.flatten(keys) : keys; +} + +Timeline.prototype.flatten = function(keys){ + // summary: + // An internally used function that converts the keyframes + // as used in the example above into a series of key values + // which is what is used in the animation parsing. + var getPercent = function(str, idx){ + if(str == "from"){ return 0; } + if(str == "to"){ return 1; } + if(str === undefined){ + return idx==0 ? 0 : idx / (keys.length - 1) + } + return parseInt(str, 10) * .01 + } + var p = {}, o = {}; + arrayUtil.forEach(keys, function(k, i){ + var step = getPercent(k.step, i); + var ease = easingUtil[k.ease] || easingUtil.linear; + + for(var nm in k){ + if(nm == "step" || nm == "ease" || nm == "from" || nm == "to"){ continue; } + if(!o[nm]){ + o[nm] = { + steps:[], + values:[], + eases:[], + ease:ease + }; + p[nm] = {}; + if(!/#/.test(k[nm])){ + p[nm].units = o[nm].units = /\D{1,}/.exec(k[nm]).join(""); + }else{ + p[nm].units = o[nm].units = "isColor"; + } + } + + o[nm].eases.push(easingUtil[k.ease || "linear"]); + + o[nm].steps.push(step); + if(p[nm].units == "isColor"){ + o[nm].values.push(new Color(k[nm])); + }else{ + o[nm].values.push(parseInt(/\d{1,}/.exec(k[nm]).join(""))); + } + + if(p[nm].start === undefined){ + p[nm].start = o[nm].values[o[nm].values.length-1]; + }else{ + p[nm].end = o[nm].values[o[nm].values.length-1] + } + } + }); + + + this._properties = p; + return o; // Object + +} + +Timeline.prototype.getValue = function(/*float*/ p){ + // summary: + // Replaces the native getValue in dojo.fx.Animation. + // Returns an object with all propeties used in the animation + // and the property's current value + p = this.ani._reversed ? 1-p : p; + var o = {}, self = this; + + var getProp = function(nm, i){ + return self._properties[nm].units!="isColor" ? + self.keys[nm].values[i] + self._properties[nm].units : + self.keys[nm].values[i].toCss(); + } + + for(var nm in this.keys){ + var k = this.keys[nm]; + for(var i=0; i step){ + + if(next && p < k.steps[i+1]){ + // inbetween steps + var end = k.values[i+1]; + var beg = k.values[i]; + + var seg = (1 / (ns - step)) * (p - step); + seg = ease(seg); + + if(beg instanceof Color){ + o[nm] = Color.blendColors(beg, end, seg).toCss(false); + }else{ + var df = end - beg; + o[nm] = beg + seg * df + this._properties[nm].units; + } + break; + + }else{ + // completed keys before 100% + o[nm] = getProp(nm, i); + } + + }else if((next && !this.ani._reversed) || (!next && this.ani._reversed)){ + o[nm] = getProp(nm, i); + } + } + } + return o; // Object +}; +dojoxFx._Timeline = Timeline; +return dojoxFx; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/_arg.js b/js/dojo-release-1.7.2-src/dojox/fx/_arg.js new file mode 100644 index 0000000..021dbcb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/_arg.js @@ -0,0 +1,25 @@ +define(["dojo/_base/lang"],function(lang){ +var fxArg = lang.getObject("dojox.fx._arg",true); +fxArg.StyleArgs = function(/*Object*/ args){ + // summary: + // The node and CSS class to use for style manipulations. + // node: DOMNode + // The node to manipulate + // cssClass: String + // The class to use during the manipulation + this.node = args.node; + this.cssClass = args.cssClass; +} + +fxArg.ShadowResizeArgs = function(/*Object*/ args){ + // summary: + // The odd way to document object parameters. + // x: Integer + // the width to set + // y: Integer + // the height to set + this.x = args.x; + this.y = args.y; +} +return fxArg; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/fx/_base.js b/js/dojo-release-1.7.2-src/dojox/fx/_base.js new file mode 100644 index 0000000..75c4d2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/_base.js @@ -0,0 +1,319 @@ +define(["dojo/_base/array","dojo/_base/lang", "dojo/_base/fx", "dojo/fx", "dojo/dom", "dojo/dom-style", + "dojo/dom-geometry", "dojo/_base/connect", "dojo/_base/html"], + function(arrayUtil, lang, baseFx, coreFx, dom, domStyle, domGeom, connectUtil, htmlUtil){ +// summary: Experimental and extended Animations beyond Dojo Core / Base functionality. +// Provides advanced Lines, Animations, and convenience aliases. +var dojoxFx = lang.getObject("dojox.fx", true); +/* +lang.mixin(dojox.fx, { + + // anim: Function + // Alias of `dojo.anim` - the shorthand `dojo.animateProperty` with auto-play + anim: dojo.fx.anim, + + // animateProperty: Function + // Alias of `dojo.animateProperty` - animate any CSS property + animateProperty: dojox.fx.animateProperty, + + // fadeTo: Function + // Fade an element from an opacity to an opacity. + // Omit `start:` property to detect. `end:` property is required. + // Ultimately an alias to `dojo._fade` + fadeTo: dojo._fade, + + // fadeIn: Function + // Alias of `dojo.fadeIn` - Fade a node in. + fadeIn: dojo.fadeIn, + + // fadeOut: Function + // Alias of `dojo.fadeOut` - Fades a node out. + fadeOut: dojo.fadeOut, + + // combine: Function + // Alias of `dojo.fx.combine` - Run an array of animations in parallel + combine: dojo.fx.combine, + + // chain: Function + // Alias of `dojo.fx.chain` - Run an array of animations in sequence + chain: dojo.fx.chain, + + // slideTo: Function + // Alias of `dojo.fx.slideTo` - Slide a node to a defined top/left coordinate + slideTo: dojo.fx.slideTo, + + // wipeIn: Function + // Alias of `dojo.fx.wipeIn` - Wipe a node to visible + wipeIn: dojo.fx.wipeIn, + + // wipeOut: Function + // Alias of `dojo.fx.wipeOut` - Wipe a node to non-visible + wipeOut: dojo.fx.wipeOut + +}); +*/ + +dojoxFx.sizeTo = function(/* Object */args){ + // summary: + // Creates an animation that will size a node + // + // description: + // Returns an animation that will size the target node + // defined in args Object about it's center to + // a width and height defined by (args.width, args.height), + // supporting an optional method: chain||combine mixin + // (defaults to chain). + // + // - works best on absolutely or relatively positioned elements + // + // example: + // | // size #myNode to 400px x 200px over 1 second + // | dojo.fx.sizeTo({ + // | node:'myNode', + // | duration: 1000, + // | width: 400, + // | height: 200, + // | method: "combine" + // | }).play(); + // + + var node = args.node = dom.byId(args.node), + abs = "absolute"; + + var method = args.method || "chain"; + if(!args.duration){ args.duration = 500; } // default duration needed + if(method == "chain"){ args.duration = Math.floor(args.duration / 2); } + + var top, newTop, left, newLeft, width, height = null; + + var init = (function(n){ + return function(){ + var cs = domStyle.getComputedStyle(n), + pos = cs.position, + w = cs.width, + h = cs.height + ; + + top = (pos == abs ? n.offsetTop : parseInt(cs.top) || 0); + left = (pos == abs ? n.offsetLeft : parseInt(cs.left) || 0); + width = (w == "auto" ? 0 : parseInt(w)); + height = (h == "auto" ? 0 : parseInt(h)); + + newLeft = left - Math.floor((args.width - width) / 2); + newTop = top - Math.floor((args.height - height) / 2); + + if(pos != abs && pos != 'relative'){ + var ret = domStyle.coords(n, true); + top = ret.y; + left = ret.x; + n.style.position = abs; + n.style.top = top + "px"; + n.style.left = left + "px"; + } + } + })(node); + + var anim1 = baseFx.animateProperty(lang.mixin({ + properties: { + height: function(){ + init(); + return { end: args.height || 0, start: height }; + }, + top: function(){ + return { start: top, end: newTop }; + } + } + }, args)); + var anim2 = baseFx.animateProperty(lang.mixin({ + properties: { + width: function(){ + return { start: width, end: args.width || 0 } + }, + left: function(){ + return { start: left, end: newLeft } + } + } + }, args)); + + var anim = coreFx[(args.method == "combine" ? "combine" : "chain")]([anim1, anim2]); + return anim; // dojo.Animation + +}; + +dojoxFx.slideBy = function(/* Object */args){ + // summary: + // Returns an animation to slide a node by a defined offset. + // + // description: + // Returns an animation that will slide a node (args.node) from it's + // current position to it's current posision plus the numbers defined + // in args.top and args.left. standard dojo.fx mixin's apply. + // + // example: + // | // slide domNode 50px down, and 22px left + // | dojox.fx.slideBy({ + // | node: domNode, duration:400, + // | top: 50, left: -22 + // | }).play(); + + var node = args.node = dom.byId(args.node), + top, left; + + var init = (function(n){ + return function(){ + var cs = domStyle.getComputedStyle(n); + var pos = cs.position; + top = (pos == 'absolute' ? n.offsetTop : parseInt(cs.top) || 0); + left = (pos == 'absolute' ? n.offsetLeft : parseInt(cs.left) || 0); + if(pos != 'absolute' && pos != 'relative'){ + var ret = domGeom.coords(n, true); + top = ret.y; + left = ret.x; + n.style.position = "absolute"; + n.style.top = top + "px"; + n.style.left = left + "px"; + } + } + })(node); + init(); + + var _anim = baseFx.animateProperty(lang.mixin({ + properties: { + // FIXME: is there a way to update the _Line after creation? + // null start values allow chaining to work, animateProperty will + // determine them for us (except in ie6? -- ugh) + top: top + (args.top || 0), + left: left + (args.left || 0) + } + }, args)); + connectUtil.connect(_anim, "beforeBegin", _anim, init); + return _anim; // dojo.Animation +}; + +dojoxFx.crossFade = function(/* Object */args){ + // summary: + // Returns an animation cross fading two element simultaneously + // + // args: + // args.nodes: Array - two element array of domNodes, or id's + // + // all other standard animation args mixins apply. args.node ignored. + // + + // simple check for which node is visible, maybe too simple? + var node1 = args.nodes[0] = dom.byId(args.nodes[0]), + op1 = htmlUtil.style(node1,"opacity"), + node2 = args.nodes[1] = dom.byId(args.nodes[1]), + op2 = htmlUtil.style(node2, "opacity") + ; + + var _anim = coreFx.combine([ + baseFx[(op1 == 0 ? "fadeIn" : "fadeOut")](lang.mixin({ + node: node1 + },args)), + baseFx[(op1 == 0 ? "fadeOut" : "fadeIn")](lang.mixin({ + node: node2 + },args)) + ]); + return _anim; // dojo.Animation +}; + +dojoxFx.highlight = function(/*Object*/ args){ + // summary: + // Highlight a node + // + // description: + // Returns an animation that sets the node background to args.color + // then gradually fades back the original node background color + // + // example: + // | dojox.fx.highlight({ node:"foo" }).play(); + + var node = args.node = dom.byId(args.node); + + args.duration = args.duration || 400; + + // Assign default color light yellow + var startColor = args.color || '#ffff99', + endColor = htmlUtil.style(node, "backgroundColor") + ; + + // safari "fix" + // safari reports rgba(0, 0, 0, 0) (black) as transparent color, while + // other browsers return "transparent", rendered as white by default by + // dojo.Color; now dojo.Color maps "transparent" to + // djConfig.transparentColor ([r, g, b]), if present; so we can use + // the color behind the effect node + if(endColor == "rgba(0, 0, 0, 0)"){ + endColor = "transparent"; + } + + var anim = baseFx.animateProperty(lang.mixin({ + properties: { + backgroundColor: { start: startColor, end: endColor } + } + }, args)); + + if(endColor == "transparent"){ + connectUtil.connect(anim, "onEnd", anim, function(){ + node.style.backgroundColor = endColor; + }); + } + + return anim; // dojo.Animation +}; + + +dojoxFx.wipeTo = function(/*Object*/ args){ + // summary: + // Animate a node wiping to a specific width or height + // + // description: + // Returns an animation that will expand the + // node defined in 'args' object from it's current to + // the height or width value given by the args object. + // + // default to height:, so leave height null and specify width: + // to wipeTo a width. note: this may be deprecated by a + // + // Note that the final value should not include + // units and should be an integer. Thus a valid args object + // would look something like this: + // + // | dojox.fx.wipeTo({ node: "nodeId", height: 200 }).play(); + // + // Node must have no margin/border/padding, so put another + // node inside your target node for additional styling. + + args.node = dom.byId(args.node); + var node = args.node, s = node.style; + + var dir = (args.width ? "width" : "height"), + endVal = args[dir], + props = {} + ; + + props[dir] = { + // wrapped in functions so we wait till the last second to query (in case value has changed) + start: function(){ + // start at current [computed] height, but use 1px rather than 0 + // because 0 causes IE to display the whole panel + s.overflow = "hidden"; + if(s.visibility == "hidden" || s.display == "none"){ + s[dir] = "1px"; + s.display = ""; + s.visibility = ""; + return 1; + }else{ + var now = htmlUtil.style(node,dir); + return Math.max(now, 1); + } + }, + end: endVal + }; + + var anim = baseFx.animateProperty(lang.mixin({ properties: props }, args)); + return anim; // dojo.Animation +}; + +return dojoxFx; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/_core.js b/js/dojo-release-1.7.2-src/dojox/fx/_core.js new file mode 100644 index 0000000..8224868 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/_core.js @@ -0,0 +1,62 @@ +define(["dojo/_base/lang", "dojo/_base/array","./_base"], + function(lang, arrayUtil, dojoxFx){ + /*===== var dojox.fx._Line = line =====*/ + var line = function(start, end){ + // summary: a custom _Line to accomodate multi-dimensional values + // + // description: + // a normal dojo._Line is the curve, and does Line(start,end) + // for propertyAnimation. as we make more complicatied animations, we realize + // some properties can have 2, or 4 values relevant (x,y) or (t,l,r,b) for example + // + // this function provides support for those Lines, and is ported directly from 0.4 + // this is a lot of extra code for something so seldom used, so we'll put it here as + // and optional core addition. you can create a new line, and use it during onAnimate + // as you see fit. + // + // start: Integer|Array + // An Integer (or an Array of integers) to use as a starting point + // end: Integer|Array + // An Integer (or an Array of integers) to use as an ending point + // + // example: see dojox.fx.smoothScroll + // + // example: + // | // this is 10 .. 100 and 50 .. 500 + // | var curve = new dojox.fx._Line([10,50],[100,500]); + // | // dojo.Animation.onAnimate is called at every step of the animation + // | // to define current values. this _Line returns an array + // | // at each step. arguments[0] and [1] in this example. + // + this.start = start; + this.end = end; + + var isArray = lang.isArray(start), + d = (isArray ? [] : end - start); + + if(isArray){ + // multi-dimensional branch + arrayUtil.forEach(this.start, function(s, i){ + d[i] = this.end[i] - s; + }, this); + + this.getValue = function(/*float*/ n){ + var res = []; + arrayUtil.forEach(this.start, function(s, i){ + res[i] = (d[i] * n) + s; + }, this); + return res; // Array + } + }else{ + // single value branch, document here for both branches: + this.getValue = function(/*float*/ n){ + // summary: Returns the point on the line, or an array of points + // n: a floating point number greater than 0 and less than 1 + // returns: Mixed + return (d * n) + this.start; // Decimal + } + } + }; + dojoxFx._Line = line; // COMPAT + return line; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/easing.js b/js/dojo-release-1.7.2-src/dojox/fx/easing.js new file mode 100644 index 0000000..44c665c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/easing.js @@ -0,0 +1,13 @@ +define(["dojo/_base/lang", "dojo/_base/kernel", "dojo/fx/easing"], + function(lang,kernel,easing){ + kernel.deprecated("dojox.fx.easing","Upgraded to Core, use dojo.fx.easing instead","2.0"); + var fxExt = lang.getObject("dojox.fx",true); + fxExt.easing = easing; +/*===== + dojox.fx.easing = { + // summary: + // An Alias to `dojo.fx.easing`. Moved to Core in Dojo 1.2. + }; +=====*/ + return easing; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/NodeList-style.js b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/NodeList-style.js new file mode 100644 index 0000000..29190d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/NodeList-style.js @@ -0,0 +1,61 @@ +define(["dojo/_base/lang", "dojo/_base/NodeList","dojo/NodeList-fx", "dojo/fx", "../style"], + function(lang, NodeList, NodeListFx, coreFx, styleX){ +// summary: +// Core extensions to `dojo.NodeList` providing additional fx to `dojo.NodeList-fx` +// from `dojox.fx.style` +// +// description: +// A Package to extend dojo base NodeList with fx provided by the `dojox.fx` project. +// These are experimental animations, in an experimental + + +lang.extend( NodeList, { + + addClassFx: function(cssClass, args){ + // summary: + // Animate the effects of adding a class to all nodes in this list. + // see `dojox.fx.addClass` + // + // tags: FX, NodeList + // + // example: + // | // fade all elements with class "bar" to to 50% opacity + // | dojo.query(".bar").addClassFx("bar").play(); + + return coreFx.combine(this.map(function(n){ // dojo.Animation + return styleX.addClass(n, cssClass, args); + })); + }, + + removeClassFx: function(cssClass, args){ + // summary: + // Animate the effect of removing a class to all nodes in this list. + // see `dojox.fx.removeClass` + // + // tags: FX, NodeList + // + // example: + // | dojo.query(".box").removeClassFx("bar").play(); + + return coreFx.combine(this.map(function(n){ // dojo.Animation + return styleX.removeClass(n, cssClass, args); + })); + }, + + toggleClassFx: function(cssClass, force, args){ + // summary: + // Animate the effect of adding or removing a class to all nodes in this list. + // see `dojox.fx.toggleClass` + // + // tags: FX, NodeList + // + // example: + // | dojo.query(".box").toggleClass("bar").play(); + + return coreFx.combine(this.map(function(n){ // dojo.Animation + return styleX.toggleClass(n, cssClass, force, args); + })); + } +}); +return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/NodeList.js b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/NodeList.js new file mode 100644 index 0000000..ff27eb7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/NodeList.js @@ -0,0 +1,62 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/fx", "dojox/fx","dojo/NodeList-fx"], + function(kernel, lang, baseFx, CoreFx, NodeList){ +kernel.experimental("dojox.fx.ext-dojo.NodeList"); +// summary: Core extensions to dojo.NodeList providing addtional fx to dojo.NodeList-fx +// description: +// A Package to extend dojo base NodeList with fx provided by the dojox.fx project. +// These are experimental animations, in an experimental + +lang.extend(NodeList, { + + sizeTo: function(args){ + // summary: + // size all elements of this NodeList. Returns an instance of dojo.Animation + // example: + // | // size all divs with class "blah" + // | dojo.query("div.blah").sizeTo({ + // | width:50, + // | height:50 + // | }).play(); + return this._anim(CoreFx, "sizeTo", args); // dojo.Animation + }, + + slideBy: function(args){ + // summary: + // slide all elements of this NodeList. Returns an instance of dojo.Animation + // + // example: + // | // slide all tables with class "blah" 10 px + // | dojo.query("table.blah").slideBy({ top:10, left:10 }).play(); + return this._anim(CoreFx, "slideBy", args); // dojo.Animation + }, + + highlight: function(args){ + // summary: + // highlight all elements of the node list. + // Returns an instance of dojo.Animation + // example: + // | // highlight all links with class "foo" + // | dojo.query("a.foo").hightlight().play(); + return this._anim(CoreFx, "highlight", args); // dojo.Animation + }, + + fadeTo: function(args){ + // summary: + // fade all elements of the node list to a specified opacity + // example: + // | // fade all elements with class "bar" to to 50% opacity + // | dojo.query(".bar").fadeTo({ end: 0.5 }).play(); + return this._anim(baseFx,"_fade",args); + }, + + wipeTo: function(args){ + // summary: + // Wipe all elements of the NodeList to a specified width: or height: + // example: + // | dojo.query(".box").wipeTo({ width: 300px }).play(); + return this._anim(CoreFx, "wipeTo", args); + } + +}); +return NodeList; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/complex.js b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/complex.js new file mode 100644 index 0000000..b529624 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/complex.js @@ -0,0 +1,169 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/array","dojo/_base/declare", "dojo/_base/connect", + "dojo/_base/Color", "dojo/_base/fx", "dojo/fx"], + function(dojo, lang, arrayUtil, declare, connectUtil, Color, baseFx, coreFx){ + lang.getObject("dojox.fx.ext-dojo.complex", true); + + var da = baseFx.animateProperty; + dojo.animateProperty = baseFx.animateProperty = function(options){ + // summary: + // An extension of dojo.animateProperty which adds functionality + // that animates a "complex property". The primary example is the + // clip style: rect(10px 30px 10px 50px). + // Note this can also be used with (and is actually intended for) + // CSS3 properties, such as transform: + // transform: rotate(10deg) translateX(0px) + // + // description: + // The standard animation doesn't know what to do with something like + // rect(...). This class identifies complex properties by they being a + // string and having parenthesis. If so, that property is made into a + // dojox.fx._Complex object and the getValue() is obtained from + // there. + // + // example: + // | var ani = dojo.animateProperty({ + // | node:dojo.byId("myDiv"), + // | duration:600, + // | properties:{ + // | clip:{start:'rect(0px 50px 50px 0px)', end:'rect(10px 30px 30px 10px)'} + // | } + // | }).play(); + // + var d = dojo; + var ani = da(options); + + connectUtil.connect(ani, "beforeBegin", function(){ + // dojo.Animate original still invokes and still + // works. We're appending this functionality to + // modify targeted properties. + ani.curve.getValue = function(r){ + // Overwriting dojo.Animate's curve.getValue + // This is mostly duplicate code, except it looks + // for an instance of dojox.fx._Complex. + var ret = {}; + for(var p in this._properties){ + var prop = this._properties[p], + start = prop.start; + if(start instanceof d.Color){ + ret[p] = d.blendColors(start, prop.end, r, prop.tempColor).toCss(); + }else if(start instanceof dojox.fx._Complex){ + ret[p] = start.getValue(r); + }else if(!d.isArray(start)){ + ret[p] = ((prop.end - start) * r) + start + (p != "opacity" ? prop.units || "px" : 0); + } + } + return ret; + }; + + // this.properties has already been set, as has this.curve._properties. + // We're fixing the props in curve which will have NaN attributes from + // our string property. + var pm = {}; + for(var p in this.properties){ + var o = this.properties[p]; + if(typeof(o.start) == "string" && /\(/.test(o.start)){ + this.curve._properties[p].start = new dojox.fx._Complex(o); + } + } + + }); + return ani; // dojo.Animation + } + + return declare("dojox.fx._Complex", null, { + // summary: + // A class that takes a complex property such as + // clip style: rect(10px 30px 10px 50px), and breaks it + // into seperate animatable units. The object has a getValue() + // that will return a string with the modified units. + // + PROP: /\([\w|,|+|\-|#|\.|\s]*\)/g, + constructor: function(options){ + var beg = options.start.match(this.PROP); + var end = options.end.match(this.PROP); + + var begProps = arrayUtil.map(beg, this.getProps, this); + var endProps = arrayUtil.map(end, this.getProps, this); + + this._properties = {}; + this.strProp = options.start; + arrayUtil.forEach(begProps, function(prop, i){ + arrayUtil.forEach(prop, function(p, j){ + this.strProp = this.strProp.replace(p, "PROP_"+i+""+j); + this._properties["PROP_"+i+""+j] = this.makePropObject(p, endProps[i][j]) + },this); + },this); + }, + + getValue: function(/*Float*/r){ + // summary: + // Returns a string with teh same integrity as the + // original star and end, but with the modified units. + var str = this.strProp, u; + for(var nm in this._properties){ + var v, o = this._properties[nm]; + if(o.units == "isColor"){ + v = Color.blendColors(o.beg, o.end, r).toCss(false); + u = ""; + }else{ + v = ((o.end - o.beg) * r) + o.beg; + u = o.units; + } + str = str.replace(nm, v + u); + } + + return str; // String + }, + + makePropObject: function(/* String */beg, /* String */end){ + // summary: + // Returns an object that stores the numeric value and + // units of the beggining and ending properties. + // + var b = this.getNumAndUnits(beg); + var e = this.getNumAndUnits(end); + return { + beg:b.num, + end:e.num, + units:b.units + }; // Object + }, + + getProps: function(/* String */str){ + // summary: + // Helper function that splits a stringified set of properties + // into individual units. + // + str = str.substring(1, str.length-1); + var s; + if(/,/.test(str)){ + str = str.replace(/\s/g, ""); + s = str.split(","); + }else{ + str = str.replace(/\s{2,}/g, " "); + s = str.split(" "); + } + return s; // String + }, + getNumAndUnits: function(prop){ + // summary: + // Helper function that returns the numeric verion of the string + // property (or dojo.Color object) and the unit in which it was + // defined. + // + if(!prop){ return {}; } + if(/#/.test(prop)){ + return { + num: new Color(prop), + units:"isColor" + }; // Object + } + var o = { + num:parseFloat(/-*[\d\.\d|\d]{1,}/.exec(prop).join("")) + }; + o.units = /[a-z]{1,}/.exec(prop);//.join(""); + o.units = o.units && o.units.length ? o.units.join("") : ""; + return o; // Object + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/reverse.js b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/reverse.js new file mode 100644 index 0000000..413d59e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/ext-dojo/reverse.js @@ -0,0 +1,103 @@ +define(["dojo/_base/fx", + "dojo/fx", + "dojo/_base/lang", + "dojo/fx/easing", + "dojox/fx"], + function(baseFx, coreFx, lang, easingUtil, dojoxFx){ // +/*===== var dojox.fx.ext-dojo.=====*/ +var reverseApi = { + // summary: + // A dojo.Animation extension that enables an easy reversal. + // description: + // To use, simply require dojox.fx.ext-dojo.reverse and a reverse() + // method will be added to all dojo.Animations. + // It can be used at any time during the animation. It does not + // need to be called when it ends. It also reverses the easing - + // if dojo.fx.easing.quadIn is used, dojo.fx.easing.quadOut will + // be used when animating backwards. + // + _reversed: false, + reverse: function(/*Boolean*/keepPaused, /*Function ? */reverseEase){ + // summary: + // The key method added to an animation to enable reversal. + // keepPaused: Boolean + // By default, calling reverse() will play the animation if + // it was paused. Pass in true to keep it paused (will have + // no effect if reverse is called while animation is playing). + // reverseEase: Function + // A function to use for the reverse easing. This allows for + // the possibility of custom eases that are not in the dojo.fx + // library. + // + var playing = this.status() == "playing"; + this.pause(); + this._reversed = !this._reversed; + var d = this.duration, + sofar = d * this._percent, + togo = d - sofar, + curr = new Date().valueOf(), + cp = this.curve._properties, + p = this.properties, + nm + ; + this._endTime = curr + sofar; + this._startTime = curr - togo; + + if(playing){ + this.gotoPercent(togo / d) + } + for(nm in p){ + var tmp = p[nm].start; + p[nm].start = cp[nm].start = p[nm].end; + p[nm].end = cp[nm].end = tmp; + } + + if(this._reversed){ + if(!this.rEase){ + this.fEase = this.easing; + if(reverseEase){ + this.rEase = reverseEase; + }else{ + // loop through dojo.fx.easing to find the matching ease + var de = easingUtil, found, eName; + for(nm in de){ + if(this.easing == de[nm]){ + // get ease's name + found = nm; break; + } + } + + if(found){ + // find ease's opposite + if(/InOut/.test(nm) || !/In|Out/i.test(nm)){ + this.rEase = this.easing; + }else if(/In/.test(nm)){ + eName = nm.replace("In", "Out"); + }else{ + eName = nm.replace("Out", "In"); + } + if(eName){ + this.rEase = easingUtil[eName]; + } + }else{ + // default ease, and other's like linear do not have an opposite + console.info("ease function to reverse not found"); + this.rEase = this.easing; + } + } + + } + this.easing = this.rEase; + }else{ + this.easing = this.fEase; + } + if(!keepPaused && this.status() != "playing"){ + this.play(); + } + + return this; + } +}; +lang.extend( baseFx.Animation, reverseApi); +return baseFx.Animation; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/fx/flip.js b/js/dojo-release-1.7.2-src/dojox/fx/flip.js new file mode 100644 index 0000000..305df99 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/flip.js @@ -0,0 +1,517 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/html", + "dojo/dom", + "dojo/dom-construct", + "dojo/dom-geometry", + "dojo/_base/connect", + "dojo/_base/Color", + "dojo/_base/sniff", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/_base/fx", + "dojo/fx", + "./_base" +], function(kernel, htmlUtil, dom, domConstruct, domGeom, connectUtil, Color, has, lang, winUtil, baseFx, coreFx, fxExt) { +//kernel,lang->(sniff,array,has),sniff,unload,window + + kernel.experimental("dojox.fx.flip"); + // because ShrinkSafe will eat this up: + var borderConst = "border", + widthConst = "Width", + heightConst = "Height", + topConst = "Top", + rightConst = "Right", + leftConst = "Left", + bottomConst = "Bottom" + ; + + fxExt.flip = function(/*Object*/ args){ + // summary: Animate a node flipping following a specific direction + // + // description: + // Returns an animation that will flip the + // node around a central axis: + // if args.dir is "left" or "right" --> y axis + // if args.dir is "top" or "bottom" --> x axis + // + // This effect is obtained using a border distorsion applied to a helper node. + // + // The user can specify three background colors for the helper node: + // darkColor: the darkest color reached during the animation + // lightColor: the brightest color + // endColor: the final backgroundColor for the node + // + // depth: Float + // 0 <= depth <= 1 overrides the computed "depth" + // (0: min distorsion, 1: max distorsion) + // + // whichAnim: String + // "first" : the first half animation + // "last" : the second one + // "both" (default) : both + // + // axis: String + // "center" (default) : the node is flipped around his center + // "shortside" : the node is flipped around his "short" (in perspective) side + // "longside" : the node is flipped around his "long" (in perspective) side + // "cube" : the node flips around the central axis of the cube + // + // shift: Integer + // node translation, perpendicular to the rotation axis + // + // example: + // | var anim = dojox.fx.flip({ + // | node: dojo.byId("nodeId"), + // | dir: "top", + // | darkColor: "#555555", + // | lightColor: "#dddddd", + // | endColor: "#666666", + // | depth: .5, + // | shift: 50, + // | duration:300 + // | }); + + var helperNode = domConstruct.create("div"), + node = args.node = dom.byId(args.node), + s = node.style, + dims = null, + hs = null, + pn = null, + lightColor = args.lightColor || "#dddddd", + darkColor = args.darkColor || "#555555", + bgColor = htmlUtil.style(node, "backgroundColor"), + endColor = args.endColor || bgColor, + staticProps = {}, + anims = [], + duration = args.duration ? args.duration / 2 : 250, + dir = args.dir || "left", + pConst = .9, + transparentColor = "transparent", + whichAnim = args.whichAnim, + axis = args.axis || "center", + depth = args.depth + ; + // IE6 workaround: IE6 doesn't support transparent borders + var convertColor = function(color){ + return ((new Color(color)).toHex() === "#000000") ? "#000001" : color; + }; + + if(has("ie") < 7){ + endColor = convertColor(endColor); + lightColor = convertColor(lightColor); + darkColor = convertColor(darkColor); + bgColor = convertColor(bgColor); + transparentColor = "black"; + helperNode.style.filter = "chroma(color='#000000')"; + } + + var init = (function(n){ + return function(){ + var ret = htmlUtil.coords(n, true); + dims = { + top: ret.y, + left: ret.x, + width: ret.w, + height: ret.h + }; + } + })(node); + init(); + // helperNode initialization + hs = { + position: "absolute", + top: dims["top"] + "px", + left: dims["left"] + "px", + height: "0", + width: "0", + zIndex: args.zIndex || (s.zIndex || 0), + border: "0 solid " + transparentColor, + fontSize: "0", + visibility: "hidden" + }; + var props = [ {}, + { + top: dims["top"], + left: dims["left"] + } + ]; + var dynProperties = { + left: [leftConst, rightConst, topConst, bottomConst, widthConst, heightConst, "end" + heightConst + "Min", leftConst, "end" + heightConst + "Max"], + right: [rightConst, leftConst, topConst, bottomConst, widthConst, heightConst, "end" + heightConst + "Min", leftConst, "end" + heightConst + "Max"], + top: [topConst, bottomConst, leftConst, rightConst, heightConst, widthConst, "end" + widthConst + "Min", topConst, "end" + widthConst + "Max"], + bottom: [bottomConst, topConst, leftConst, rightConst, heightConst, widthConst, "end" + widthConst + "Min", topConst, "end" + widthConst + "Max"] + }; + // property names + pn = dynProperties[dir]; + + // .4 <= pConst <= .9 + if(typeof depth != "undefined"){ + depth = Math.max(0, Math.min(1, depth)) / 2; + pConst = .4 + (.5 - depth); + }else{ + pConst = Math.min(.9, Math.max(.4, dims[pn[5].toLowerCase()] / dims[pn[4].toLowerCase()])); + } + var p0 = props[0]; + for(var i = 4; i < 6; i++){ + if(axis == "center" || axis == "cube"){ // find a better name for "cube" + dims["end" + pn[i] + "Min"] = dims[pn[i].toLowerCase()] * pConst; + dims["end" + pn[i] + "Max"] = dims[pn[i].toLowerCase()] / pConst; + }else if(axis == "shortside"){ + dims["end" + pn[i] + "Min"] = dims[pn[i].toLowerCase()]; + dims["end" + pn[i] + "Max"] = dims[pn[i].toLowerCase()] / pConst; + }else if(axis == "longside"){ + dims["end" + pn[i] + "Min"] = dims[pn[i].toLowerCase()] * pConst; + dims["end" + pn[i] + "Max"] = dims[pn[i].toLowerCase()]; + } + } + if(axis == "center"){ + p0[pn[2].toLowerCase()] = dims[pn[2].toLowerCase()] - (dims[pn[8]] - dims[pn[6]]) / 4; + }else if(axis == "shortside"){ + p0[pn[2].toLowerCase()] = dims[pn[2].toLowerCase()] - (dims[pn[8]] - dims[pn[6]]) / 2; + } + + staticProps[pn[5].toLowerCase()] = dims[pn[5].toLowerCase()] + "px"; + staticProps[pn[4].toLowerCase()] = "0"; + staticProps[borderConst + pn[1] + widthConst] = dims[pn[4].toLowerCase()] + "px"; + staticProps[borderConst + pn[1] + "Color"] = bgColor; + + p0[borderConst + pn[1] + widthConst] = 0; + p0[borderConst + pn[1] + "Color"] = darkColor; + p0[borderConst + pn[2] + widthConst] = p0[borderConst + pn[3] + widthConst] = axis != "cube" + ? (dims["end" + pn[5] + "Max"] - dims["end" + pn[5] + "Min"]) / 2 + : dims[pn[6]] / 2 + ; + p0[pn[7].toLowerCase()] = dims[pn[7].toLowerCase()] + dims[pn[4].toLowerCase()] / 2 + (args.shift || 0); + p0[pn[5].toLowerCase()] = dims[pn[6]]; + + var p1 = props[1]; + p1[borderConst + pn[0] + "Color"] = { start: lightColor, end: endColor }; + p1[borderConst + pn[0] + widthConst] = dims[pn[4].toLowerCase()]; + p1[borderConst + pn[2] + widthConst] = 0; + p1[borderConst + pn[3] + widthConst] = 0; + p1[pn[5].toLowerCase()] = { start: dims[pn[6]], end: dims[pn[5].toLowerCase()] }; + + lang.mixin(hs, staticProps); + htmlUtil.style(helperNode, hs); + winUtil.body().appendChild(helperNode); + + var finalize = function(){ +// helperNode.parentNode.removeChild(helperNode); + domConstruct.destroy(helperNode); + // fixes a flicker when the animation ends + s.backgroundColor = endColor; + s.visibility = "visible"; + }; + if(whichAnim == "last"){ + for(i in p0){ + p0[i] = { start: p0[i] }; + } + p0[borderConst + pn[1] + "Color"] = { start: darkColor, end: endColor }; + p1 = p0; + } + if(!whichAnim || whichAnim == "first"){ + anims.push(baseFx.animateProperty({ + node: helperNode, + duration: duration, + properties: p0 + })); + } + if(!whichAnim || whichAnim == "last"){ + anims.push(baseFx.animateProperty({ + node: helperNode, + duration: duration, + properties: p1, + onEnd: finalize + })); + } + + // hide the original node + connectUtil.connect(anims[0], "play", function(){ + helperNode.style.visibility = "visible"; + s.visibility = "hidden"; + }); + + return coreFx.chain(anims); // dojo.Animation + + } + + fxExt.flipCube = function(/*Object*/ args){ + // summary: An extension to `dojox.fx.flip` providing a more 3d-like rotation + // + // description: + // An extension to `dojox.fx.flip` providing a more 3d-like rotation. + // Behaves the same as `dojox.fx.flip`, using the same attributes and + // other standard `dojo.Animation` properties. + // + // example: + // See `dojox.fx.flip` + var anims = [], + mb = domGeom.getMarginBox(args.node), + shiftX = mb.w / 2, + shiftY = mb.h / 2, + dims = { + top: { + pName: "height", + args:[ + { + whichAnim: "first", + dir: "top", + shift: -shiftY + }, + { + whichAnim: "last", + dir: "bottom", + shift: shiftY + } + ] + }, + right: { + pName: "width", + args:[ + { + whichAnim: "first", + dir: "right", + shift: shiftX + }, + { + whichAnim: "last", + dir: "left", + shift: -shiftX + } + ] + }, + bottom: { + pName: "height", + args:[ + { + whichAnim: "first", + dir: "bottom", + shift: shiftY + }, + { + whichAnim: "last", + dir: "top", + shift: -shiftY + } + ] + }, + left: { + pName: "width", + args:[ + { + whichAnim: "first", + dir: "left", + shift: -shiftX + }, + { + whichAnim: "last", + dir: "right", + shift: shiftX + } + ] + } + } + ; + var d = dims[args.dir || "left"], + p = d.args + ; + args.duration = args.duration ? args.duration * 2 : 500; + args.depth = .8; + args.axis = "cube"; + for(var i = p.length - 1; i >= 0; i--){ + lang.mixin(args, p[i]); + anims.push(fxExt.flip(args)); + } + return coreFx.combine(anims); + }; + + fxExt.flipPage = function(/*Object*/ args){ + // summary: An extension to `dojox.fx.flip` providing a page flip like animation. + // + // description: + // An extension to `dojox.fx.flip` providing a page flip effect. + // Behaves the same as `dojox.fx.flip`, using the same attributes and + // other standard `dojo.Animation` properties. + // + // example: + // See `dojox.fx.flip` + var n = args.node, + coords = htmlUtil.coords(n, true), + x = coords.x, + y = coords.y, + w = coords.w, + h = coords.h, + bgColor = htmlUtil.style(n, "backgroundColor"), + lightColor = args.lightColor || "#dddddd", + darkColor = args.darkColor, + helperNode = domConstruct.create("div"), + anims = [], + hn = [], + dir = args.dir || "right", + pn = { + left: ["left", "right", "x", "w"], + top: ["top", "bottom", "y", "h"], + right: ["left", "left", "x", "w"], + bottom: ["top", "top", "y", "h"] + }, + shiftMultiplier = { + right: [1, -1], + left: [-1, 1], + top: [-1, 1], + bottom: [1, -1] + } + ; + htmlUtil.style(helperNode, { + position: "absolute", + width : w + "px", + height : h + "px", + top : y + "px", + left : x + "px", + visibility: "hidden" + }); + var hs = []; + for(var i = 0; i < 2; i++){ + var r = i % 2, + d = r ? pn[dir][1] : dir, + wa = r ? "last" : "first", + endColor = r ? bgColor : lightColor, + startColor = r ? endColor : args.startColor || n.style.backgroundColor + ; + hn[i] = lang.clone(helperNode); + var finalize = function(x){ + return function(){ + domConstruct.destroy(hn[x]); + } + }(i) + ; + winUtil.body().appendChild(hn[i]); + hs[i] = { + backgroundColor: r ? startColor : bgColor + }; + + hs[i][pn[dir][0]] = coords[pn[dir][2]] + shiftMultiplier[dir][0] * i * coords[pn[dir][3]] + "px"; + htmlUtil.style(hn[i], hs[i]); + anims.push(dojox.fx.flip({ + node: hn[i], + dir: d, + axis: "shortside", + depth: args.depth, + duration: args.duration / 2, + shift: shiftMultiplier[dir][i] * coords[pn[dir][3]] / 2, + darkColor: darkColor, + lightColor: lightColor, + whichAnim: wa, + endColor: endColor + })); + connectUtil.connect(anims[i], "onEnd", finalize); + } + return coreFx.chain(anims); + }; + + + fxExt.flipGrid = function(/*Object*/ args){ + // summary: An extension to `dojox.fx.flip` providing a decomposition in rows * cols flipping elements + // + // description: + // An extension to `dojox.fx.flip` providing a page flip effect. + // Behaves the same as `dojox.fx.flip`, using the same attributes and + // other standard `dojo.Animation` properties and + // + // cols: Integer columns + // rows: Integer rows + // + // duration: the single flip duration + // + // example: + // See `dojox.fx.flip` + var rows = args.rows || 4, + cols = args.cols || 4, + anims = [], + helperNode = domConstruct.create("div"), + n = args.node, + coords = htmlUtil.coords(n, true), + x = coords.x, + y = coords.y, + nw = coords.w, + nh = coords.h, + w = coords.w / cols, + h = coords.h / rows, + cAnims = [] + ; + htmlUtil.style(helperNode, { + position: "absolute", + width: w + "px", + height: h + "px", + backgroundColor: htmlUtil.style(n, "backgroundColor") + }); + for(var i = 0; i < rows; i++){ + var r = i % 2, + d = r ? "right" : "left", + signum = r ? 1 : -1 + ; + // cloning + var cn = lang.clone(n); + htmlUtil.style(cn, { + position: "absolute", + width: nw + "px", + height: nh + "px", + top: y + "px", + left: x + "px", + clip: "rect(" + i * h + "px," + nw + "px," + nh + "px,0)" + }); + winUtil.body().appendChild(cn); + anims[i] = []; + for(var j = 0; j < cols; j++){ + var hn = lang.clone(helperNode), + l = r ? j : cols - (j + 1) + ; + var adjustClip = function(xn, yCounter, xCounter){ + return function(){ + if(!(yCounter % 2)){ + htmlUtil.style(xn, { + clip: "rect(" + yCounter * h + "px," + (nw - (xCounter + 1) * w ) + "px," + ((yCounter + 1) * h) + "px,0px)" + }); + }else{ + htmlUtil.style(xn, { + clip: "rect(" + yCounter * h + "px," + nw + "px," + ((yCounter + 1) * h) + "px," + ((xCounter + 1) * w) + "px)" + }); + } + } + }(cn, i, j); + winUtil.body().appendChild(hn); + htmlUtil.style(hn, { + left: x + l * w + "px", + top: y + i * h + "px", + visibility: "hidden" + }); + var a = dojox.fx.flipPage({ + node: hn, + dir: d, + duration: args.duration || 900, + shift: signum * w/2, + depth: .2, + darkColor: args.darkColor, + lightColor: args.lightColor, + startColor: args.startColor || args.node.style.backgroundColor + }), + removeHelper = function(xn){ + return function(){ + domConstruct.destroy(xn); + } + }(hn) + ; + connectUtil.connect(a, "play", this, adjustClip); + connectUtil.connect(a, "play", this, removeHelper); + anims[i].push(a); + } + cAnims.push(coreFx.chain(anims[i])); + + } + connectUtil.connect(cAnims[0], "play", function(){ + htmlUtil.style(n, {visibility: "hidden"}); + }); + return coreFx.combine(cAnims); + }; + return fxExt; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowB.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowB.png new file mode 100644 index 0000000..0da8a2a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowB.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowBL.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowBL.png new file mode 100644 index 0000000..4926283 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowBL.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowBR.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowBR.png new file mode 100644 index 0000000..ee704df Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowBR.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowL.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowL.png new file mode 100644 index 0000000..67ebc2e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowL.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowR.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowR.png new file mode 100644 index 0000000..8d0c99d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowR.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowT.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowT.png new file mode 100644 index 0000000..ea99436 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowT.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowTL.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowTL.png new file mode 100644 index 0000000..388742a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowTL.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowTR.png b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowTR.png new file mode 100644 index 0000000..c9d4f04 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/resources/shadowTR.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/scroll.js b/js/dojo-release-1.7.2-src/dojox/fx/scroll.js new file mode 100644 index 0000000..4ad1110 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/scroll.js @@ -0,0 +1,43 @@ +define(["dojo/_base/kernel","dojo/_base/lang", "dojo/_base/fx", "dojox/fx/_base","dojox/fx/_core","dojo/dom-geometry","dojo/_base/sniff"], + function (kernel, lang, baseFx, fxExt, Line, domGeom, has){ + kernel.experimental("dojox.fx.scroll"); + var fx = lang.getObject("dojox.fx",true); + fxExt.smoothScroll = function(/* Object */args){ + // summary: Returns an animation that will smooth-scroll to a node + // description: This implementation support either horizontal or vertical scroll, as well as + // both. In addition, element in iframe can be scrolled to correctly. + // offset: {x: int, y: int} this will be added to the target position + // duration: Duration of the animation in milliseconds. + // win: a node or window object to scroll + + if(!args.target){ args.target = domGeom.position(args.node); } + + var isWindow = lang[(has("ie") ? "isObject" : "isFunction")](args["win"].scrollTo), + delta = { x: args.target.x, y: args.target.y } + ; + if(!isWindow){ + var winPos = domGeom.position(args.win); + delta.x -= winPos.x; + delta.y -= winPos.y; + } + var _anim = (isWindow) ? + (function(val){ + args.win.scrollTo(val[0],val[1]); + }) : + (function(val){ + args.win.scrollLeft = val[0]; + args.win.scrollTop = val[1]; + }); + var anim = new baseFx.Animation(lang.mixin({ + beforeBegin: function(){ + if(this.curve){ delete this.curve; } + var current = isWindow ? dojo._docScroll() : {x: args.win.scrollLeft, y: args.win.scrollTop}; + anim.curve = new Line([current.x,current.y],[current.x + delta.x, current.y + delta.y]); + }, + onAnimate: _anim + },args)); + return anim; // dojo.Animation + }; + fx.smoothScroll = fxExt.smoothScroll; + return fxExt.smoothScroll; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/fx/split.js b/js/dojo-release-1.7.2-src/dojox/fx/split.js new file mode 100644 index 0000000..ef93a1d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/split.js @@ -0,0 +1,662 @@ +define(["dojo/_base/lang", "dojo/dom", "dojo/_base/window", "dojo/_base/html", "dojo/dom-geometry", + "dojo/dom-construct", "dojo/dom-attr", "dojo/_base/fx", "dojo/fx", "./_base", "dojo/fx/easing", "dojo/_base/connect"], + function(lang, dom, winUtil, htmlUtil, domGeom, domConstruct, domAttr, baseFx, coreFx, fxExt, easingUtil, connectUtil){ +var dojoxFx = lang.getObject("dojox.fx"); +lang.mixin(dojoxFx,{ + _split: function(/*Object*/ args){ + // summary: Split a node into rectangular pieces and animate them. + // + // description: + // Returns an animation that will split the node into a grid + // of pieces that move independently. + // + // args: + // args.crop: Boolean - If true, pieces will only be visible inside node's boundries + // args.rows: Integer - The number of horizontal pieces (default is 3) + // args.columns: Integer - The number of vertical pieces (default is 3) + // args.pieceAnimation: Function(piece, x, y, coords) - Returns either the dojo.Animation + // or an array of dojo.Animation objects for the piece at location (x, y) in the node's grid; + // coords is the result of dojo.coords(args.node, true); + + args.rows = args.rows || 3; + args.columns = args.columns || 3; + args.duration = args.duration || 1000; + + var node = args.node = dom.byId(args.node), + parentNode = node.parentNode, + pNode = parentNode, + body = winUtil.body(), + _pos = "position" + ; + + while(pNode && pNode != body && htmlUtil.style(pNode, _pos) == "static"){ + pNode = pNode.parentNode; + } + + var pCoords = pNode != body ? domGeom.position(pNode, true) : { x: 0, y: 0 }, + coords = domGeom.position(node, true), + nodeHeight = htmlUtil.style(node, "height"), + nodeWidth = htmlUtil.style(node, "width"), + hBorder = htmlUtil.style(node, "borderLeftWidth") + htmlUtil.style(node, "borderRightWidth"), + vBorder = htmlUtil.style(node, "borderTopWidth") + htmlUtil.style(node, "borderBottomWidth"), + pieceHeight = Math.ceil(nodeHeight / args.rows), + pieceWidth = Math.ceil(nodeWidth / args.columns), + container = domConstruct.create(node.tagName, { + style: { + position: "absolute", + padding: 0, + margin: 0, + border:"none", + top: coords.y - pCoords.y + "px", + left: coords.x - pCoords.x + "px", + height: nodeHeight + vBorder + "px", + width: nodeWidth + hBorder + "px", + background: "none", + overflow: args.crop ? "hidden" : "visible", + zIndex: htmlUtil.style(node, "zIndex") + } + }, node, "after"), + animations = [], + pieceHelper = domConstruct.create(node.tagName, { + style: { + position: "absolute", + border: "none", + padding: 0, + margin: 0, + height: pieceHeight + hBorder + "px", + width: pieceWidth + vBorder + "px", + overflow: "hidden" + } + }); + + // Create the pieces and their animations + for(var y = 0, ly = args.rows; y < ly; y++){ + for(var x = 0, lx = args.columns; x < lx; x++){ + // Create the piece + var piece = lang.clone(pieceHelper), + pieceContents = lang.clone(node), + pTop = y * pieceHeight, + pLeft = x * pieceWidth + ; + + // IE hack + pieceContents.style.filter = ""; + + // removing the id attribute from the cloned nodes + domAttr.remove(pieceContents, "id"); + + htmlUtil.style(piece, { + border: "none", + overflow: "hidden", + top: pTop + "px", + left: pLeft + "px" + }); + htmlUtil.style(pieceContents, { + position: "static", + opacity: "1", + marginTop: -pTop + "px", + marginLeft: -pLeft + "px" + }); + piece.appendChild(pieceContents); + container.appendChild(piece); + + var pieceAnimation = args.pieceAnimation(piece, x, y, coords); + if(lang.isArray(pieceAnimation)){ + // if pieceAnimation is an array, append its elements + animations = animations.concat(pieceAnimation); + }else{ + // otherwise, append it + animations.push(pieceAnimation); + } + } + } + var anim = coreFx.combine(animations); + connectUtil.connect(anim, "onEnd", anim, function(){ + container.parentNode.removeChild(container); + }); + if(args.onPlay){ + connectUtil.connect(anim, "onPlay", anim, args.onPlay); + } + if(args.onEnd){ + connectUtil.connect(anim, "onEnd", anim, args.onEnd); + } + return anim; // dojo.Animation + }, + + explode: function(/*Object*/ args){ + // summary: Explode a node into rectangular pieces + // + // description: + // Returns an animation that will split the node into a grid + // of pieces that fly away from the center. + // + // args: + // args.rows: Integer - The number of horizontal pieces (default is 3) + // args.columns: Integer - The number of vertical pieces (default is 3) + // args.random: Float - If set, pieces fly to random distances, for random durations, + // and in slightly random directions. The value defines how much + // randomness is introduced. + // args.distance: Float - Multiplier for the distance the pieces fly (even when random) + // args.fade: Boolean - If true, pieces fade out while in motion (default is true) + // args.fadeEasing: Function - If args.fade is true, the fade animations use this easing function + // args.unhide: Boolean - If true, the animation is reversed + // args.sync: Boolean - If args.unhide is true, all the pieces converge at the same time + // (default is true) + + var node = args.node = dom.byId(args.node); + args.rows = args.rows || 3; + args.columns = args.columns || 3; + args.distance = args.distance || 1; + args.duration = args.duration || 1000; + args.random = args.random || 0; + if(!args.fade){ + args.fade = true; + } + if(typeof args.sync == "undefined"){ + args.sync = true; + } + args.random = Math.abs(args.random); + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, x, y, coords){ + var pieceHeight = coords.h / args.rows, + pieceWidth = coords.w / args.columns, + distance = args.distance * 2, + duration = args.duration, + ps = piece.style, + startTop = parseInt(ps.top), + startLeft = parseInt(ps.left), + delay = 0, + randomX = 0, + randomY = 0; + + if(args.random){ + var seed = (Math.random() * args.random) + Math.max(1 - args.random, 0); + distance *= seed; + duration *= seed; + // To syncronize, give each piece an appropriate delay so they end together + delay = ((args.unhide && args.sync) || (!args.unhide && !args.sync)) ? (args.duration - duration) : 0; + // Slightly randomize the direction of each piece + randomX = Math.random() - 0.5; + randomY = Math.random() - 0.5; + } + + var distanceY = ((coords.h - pieceHeight) / 2 - pieceHeight * y), + distanceX = ((coords.w - pieceWidth) / 2 - pieceWidth * x), + distanceXY = Math.sqrt(Math.pow(distanceX, 2) + Math.pow(distanceY, 2)), + endTop = parseInt(startTop - distanceY * distance + distanceXY * randomY), + endLeft = parseInt(startLeft - distanceX * distance + distanceXY * randomX) + ; + + // Create the animation objects for the piece + // These are separate anim objects so they can have different curves + var pieceSlide = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || (args.unhide ? easingUtil.sinOut : easingUtil.circOut)), + beforeBegin: (args.unhide ? function(){ + if(args.fade){ + htmlUtil.style(piece, { opacity: "0"}); + } + ps.top = endTop + "px"; + ps.left = endLeft + "px"; + } : undefined), + properties: { + top: (args.unhide ? { start: endTop, end: startTop } : { start: startTop, end: endTop }), + left: (args.unhide ? { start: endLeft, end: startLeft } : { start: startLeft, end: endLeft }) + } + }); + if(args.fade){ + var pieceFade = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.fadeEasing || easingUtil.quadOut), + properties: { + opacity: (args.unhide ? { start: "0", end: "1" } : { start: "1", end: "0" }) + } + }); + + // return both animations as an array + return (args.unhide ? [pieceFade, pieceSlide] : [pieceSlide, pieceFade]); + }else{ + // Otherwise return only the slide animation + return pieceSlide; + } + }; + + var anim = dojoxFx._split(args); + if(args.unhide){ + connectUtil.connect(anim, "onEnd", null, function(){ + htmlUtil.style(node, {opacity: "1" }); + }); + }else{ + connectUtil.connect(anim, "onPlay", null, function(){ + htmlUtil.style(node, { opacity: "0" }); + }); + } + return anim; // dojo.Animation + }, + + converge: function(/*Object*/ args){ + args.unhide = true; + return dojoxFx.explode(args); + }, + + disintegrate: function(/*Object*/ args){ + // summary: Split a node into rectangular pieces and let them fall + // + // description: + // Returns an animation that will split the node into a grid + // of pieces that drop. + // + // args: + // args.rows: Integer - The number of horizontal pieces (default is 5) + // args.columns: Integer - The number of vertical pieces (default is 5) + // args.interval: Float - The number of milliseconds between each piece's animation + // args.distance: Float - The number of the node's heights to drop (default is 1.5) + // args.fade: Boolean - If true, pieces fade out while in motion (default is true) + // args.random: Float - If set, pieces fall in random order. The value defines how much + // randomness is introduced. + // args.reverseOrder: Boolean - If true, pieces animate in reversed order + // args.unhide: Boolean - If true, the peices fall from above and land in place + var node = args.node = dom.byId(args.node); + + args.rows = args.rows || 5; + args.columns = args.columns || 5; + args.duration = args.duration || 1500; + args.interval = args.interval || args.duration / (args.rows + args.columns * 2); + args.distance = args.distance || 1.5; + args.random = args.random || 0; + if(typeof args.fade == "undefined"){ + args.fade = true; + } + + var random = Math.abs(args.random), + duration = args.duration - (args.rows + args.columns) * args.interval; + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, x, y, coords){ + + var randomDelay = Math.random() * (args.rows + args.columns) * args.interval, + ps = piece.style, + + // If distance is negative, start from the top right instead of bottom left + uniformDelay = (args.reverseOrder || args.distance < 0) ? + ((x + y) * args.interval) : + (((args.rows + args.columns) - (x + y)) * args.interval), + delay = randomDelay * random + Math.max(1 - random, 0) * uniformDelay, + // Create the animation object for the piece + properties = {} + ; + if(args.unhide){ + properties.top = { + start: (parseInt(ps.top) - coords.h * args.distance), + end: parseInt(ps.top) + }; + if(args.fade){ + properties.opacity = {start: "0", end: "1"}; + } + }else{ + properties.top = {end: (parseInt(ps.top) + coords.h * args.distance)}; + if(args.fade){ + properties.opacity = {end: "0"}; + } + } + var pieceAnimation = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || (args.unhide ? easingUtil.sinIn : easingUtil.circIn)), + properties: properties, + beforeBegin: (args.unhide ? function(){ + if(args.fade){ + htmlUtil.style(piece, { opacity: "0" }); + } + ps.top = properties.top.start + "px"; + } : undefined) + }); + + return pieceAnimation; + }; + + var anim = dojoxFx._split(args); + if(args.unhide){ + connectUtil.connect(anim, "onEnd", anim, function(){ + htmlUtil.style(node, { opacity: "1" }); + }); + }else{ + connectUtil.connect(anim, "onPlay", anim, function(){ + htmlUtil.style(node, { opacity: "0" }); + }); + } + return anim; // dojo.Animation + }, + + build: function(/*Object*/ args){ + args.unhide = true; + return dojoxFx.disintegrate(args); + }, + + shear: function(/*Object*/ args){ + // summary: Split a node into rectangular pieces and slide them in alternating directions + // + // description: + // Returns an animation that will split the node into a grid + // of pieces that slide in alternating directions. + // + // args: + // args.rows: Integer - The number of horizontal pieces (default is 6) + // args.columns: Integer - The number of vertical pieces (default is 6) + // args.interval: Float - The number of milliseconds between each piece's animation (default is 0) + // args.distance: Float - The multiple of the node's dimensions to slide (default is 1) + // args.fade: Boolean - If true, pieces fade out while in motion (default is true) + // args.random: Float - If true, pieces have a random delay. The value defines how much + // randomness is introduced + // args.reverseOrder: Boolean - If true, pieces animate in reversed order + // args.unhide: Boolean - If true, the animation is reversed + + var node = args.node = dom.byId(args.node); + + args.rows = args.rows || 6; + args.columns = args.columns || 6; + args.duration = args.duration || 1000; + args.interval = args.interval || 0; + args.distance = args.distance || 1; + args.random = args.random || 0; + if(typeof(args.fade) == "undefined"){ + args.fade = true; + } + var random = Math.abs(args.random), + duration = (args.duration - (args.rows + args.columns) * Math.abs(args.interval)) + ; + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, x, y, coords){ + + // Since x an y start at 0, the opposite is true... + var colIsOdd = !(x % 2), + rowIsOdd = !(y % 2), + randomDelay = Math.random() * duration, + uniformDelay = (args.reverseOrder) ? + (((args.rows + args.columns) - (x + y)) * args.interval) : + ((x + y) * args.interval), + delay = randomDelay * random + Math.max(1 - random, 0) * uniformDelay, + properties = {}, + ps = piece.style + ; + + if(args.fade){ + properties.opacity = (args.unhide ? { start: "0", end: "1" } : { end: "0" }); + } + + // If we have only rows or columns, ignore the other dimension + if(args.columns == 1){ + colIsOdd = rowIsOdd; + }else if(args.rows == 1){ + rowIsOdd = !colIsOdd; + } + + // Determine the piece's direction + var left = parseInt(ps.left), + top = parseInt(ps.top), + distanceX = args.distance*coords.w, + distanceY = args.distance*coords.h + ; + if(args.unhide){ + if(colIsOdd == rowIsOdd){ + properties.left = colIsOdd ? {start: (left - distanceX), end: left} : {start: (left + distanceX), end: left}; + }else{ + properties.top = colIsOdd ? {start: (top + distanceY), end: top} : {start: (top - distanceY), end: top}; + } + }else{ + if(colIsOdd == rowIsOdd){ + properties.left = colIsOdd ? {end: (left - distanceX)} : {end: (left + distanceX)}; + }else{ + properties.top = colIsOdd ? {end: (top + distanceY)} : {end: (top - distanceY)}; + } + } + + // Create the animation object for the piece + var pieceAnimation = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || easingUtil.sinInOut), + properties: properties, + beforeBegin: (args.unhide ? function(){ + if(args.fade){ + ps.opacity = "0"; + } + if(colIsOdd == rowIsOdd){ + ps.left = properties.left.start + "px"; + }else{ + ps.top = properties.top.start + "px"; + } + } : undefined) + }); + + return pieceAnimation; + }; + + var anim = dojoxFx._split(args); + if(args.unhide){ + connectUtil.connect(anim, "onEnd", anim, function(){ + htmlUtil.style(node, { opacity: "1" }); + }); + }else{ + connectUtil.connect(anim, "onPlay", anim, function(){ + htmlUtil.style(node, { opacity: "0" }); + }); + } + return anim; // dojo.Animation + }, + + unShear: function(/*Object*/ args){ + args.unhide = true; + return dojoxFx.shear(args); + }, + + pinwheel: function(/*Object*/ args){ + // summary: Split a node into rectangular pieces and wipe them in alternating directions + // + // description: + // Returns an animation that will split the node into a grid + // of pieces that wipe in alternating directions. + // + // args: + // args.rows: Integer - The number of horizontal pieces (default is 4) + // args.columns: Integer - The number of vertical pieces (default is 4) + // args.interval: Float - The number of milliseconds between each piece's animation (default is 0) + // args.distance: Float - The percentage of the piece's dimensions the piece should wipe + // args.fade: Boolean - If true, pieces fade out while in motion (default is true) + // args.random: Float - If true, pieces have a random delay. The value defines how much + // randomness is introduced. + // args.unhide: Boolean - If true, the animation is reversed + + var node = args.node = dom.byId(args.node); + + args.rows = args.rows || 4; + args.columns = args.columns || 4; + args.duration = args.duration || 1000; + args.interval = args.interval || 0; + args.distance = args.distance || 1; + args.random = args.random || 0; + if(typeof args.fade == "undefined"){ + args.fade = true; + } + var duration = (args.duration - (args.rows + args.columns) * Math.abs(args.interval)); + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, x, y, coords){ + var pieceHeight = coords.h / args.rows, + pieceWidth = coords.w / args.columns, + + // because x an y start at 0, the opposite is true... + colIsOdd = !(x % 2), + rowIsOdd = !(y % 2), + + randomDelay = Math.random() * duration, + uniformDelay = (args.interval < 0) ? + (((args.rows + args.columns) - (x + y)) * args.interval * -1) : + ((x + y) * args.interval), + delay = randomDelay * args.random + Math.max(1 - args.random, 0) * uniformDelay, + properties = {}, + ps = piece.style + ; + + if(args.fade){ + properties.opacity = (args.unhide ? {start: 0, end: 1} : {end:0}); + } + + // If we have only rows or columns, ignore the other dimension + if(args.columns == 1){ + colIsOdd = !rowIsOdd; + }else if(args.rows == 1){ + rowIsOdd = colIsOdd; + } + + // Determine the piece's direction + var left = parseInt(ps.left), + top = parseInt(ps.top) + ; + if(colIsOdd){ + if(rowIsOdd){ + properties.top = args.unhide ? + { start: top + pieceHeight * args.distance, end: top} : + { start: top, end: top + pieceHeight * args.distance} ; + }else{ + properties.left = args.unhide ? + { start: left + pieceWidth * args.distance, end: left } : + { start: left, end: left + pieceWidth * args.distance } ; + } + } + if(colIsOdd != rowIsOdd){ + properties.width = args.unhide ? + { start: pieceWidth * (1 - args.distance), end: pieceWidth } : + { start: pieceWidth, end: pieceWidth * (1 - args.distance) } ; + }else{ + properties.height = args.unhide ? + { start: pieceHeight * (1 - args.distance), end: pieceHeight } : + { start: pieceHeight, end: pieceHeight * (1 - args.distance) } ; + } + + // Create the animation object for the piece + var pieceAnimation = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || easingUtil.sinInOut), + properties: properties, + beforeBegin: (args.unhide ? function(){ + if(args.fade){ + htmlUtil.style(piece, "opacity", 0); + } + if(colIsOdd){ + if(rowIsOdd){ + ps.top = (top + pieceHeight * (1 - args.distance)) + "px"; + }else{ + ps.left = (left + pieceWidth * (1 - args.distance)) + "px"; + } + }else{ + ps.left = left + "px"; + ps.top = top + "px"; + } + if(colIsOdd != rowIsOdd){ + ps.width = (pieceWidth * (1 - args.distance)) + "px"; + }else{ + ps.height = (pieceHeight * (1 - args.distance)) + "px"; + } + } : undefined) + }); + + return pieceAnimation; + }; + + var anim = dojoxFx._split(args); + if(args.unhide){ + connectUtil.connect(anim, "onEnd", anim, function(){ + htmlUtil.style(node, { opacity: "1" }); + }); + }else{ + connectUtil.connect(anim, "play", anim, function(){ + htmlUtil.style(node, { opacity: "0" }); + }); + } + return anim; // dojo.Animation + }, + + unPinwheel: function(/*Object*/ args){ + args.unhide = true; + return dojoxFx.pinwheel(args); // dojo.Animation + }, + + blockFadeOut: function(/*Object*/ args){ + // summary: Split a node into rectangular pieces and fade them + // + // description: + // Returns an animation that will split the node into a grid + // of pieces that fade in or out. + // + // args: + // args.rows: Integer - The number of horizontal pieces (default is 5) + // args.columns: Integer - The number of vertical pieces (default is 5) + // args.interval: Float - The number of milliseconds between each piece's animation (default is 0) + // args.random: Float - If true, pieces have a random delay. The value defines how much + // randomness is introduced + // args.reverseOrder: Boolean - If true, pieces animate in reversed order + // args.unhide: Boolean - If true, the animation is reversed + + var node = args.node = dom.byId(args.node); + + args.rows = args.rows || 5; + args.columns = args.columns || 5; + args.duration = args.duration || 1000; + args.interval = args.interval || args.duration / (args.rows + args.columns * 2); + args.random = args.random || 0; + var random = Math.abs(args.random), + duration = args.duration - (args.rows + args.columns) * args.interval + ; + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, x, y, coords){ + var randomDelay = Math.random() * args.duration, + uniformDelay = (args.reverseOrder) ? + (((args.rows + args.columns) - (x + y)) * Math.abs(args.interval)) : + ((x + y) * args.interval), + delay = randomDelay * random + Math.max(1 - random, 0) * uniformDelay, + // Create the animation object for the piece + pieceAnimation = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || easingUtil.sinInOut), + properties: { + opacity: (args.unhide ? {start: "0", end: "1"} : {start: "1", end: "0"}) + }, + beforeBegin: (args.unhide ? function(){ htmlUtil.style(piece, { opacity: "0" });} : function(){ piece.style.filter = ""; }) + }); + + return pieceAnimation; + }; + var anim = dojoxFx._split(args); + if(args.unhide){ + connectUtil.connect(anim, "onEnd", anim, function(){ + htmlUtil.style(node, { opacity: "1" }); + }); + }else{ + connectUtil.connect(anim, "onPlay", anim, function(){ + htmlUtil.style(node, { opacity: "0" }); + }); + } + return anim; // dojo.Animation + }, + + blockFadeIn: function(/*Object*/ args){ + args.unhide = true; + return dojoxFx.blockFadeOut(args); // dojo.Animation + } +}); +return fxExt; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/fx/style.js b/js/dojo-release-1.7.2-src/dojox/fx/style.js new file mode 100644 index 0000000..ab6edfc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/style.js @@ -0,0 +1,236 @@ +define(["dojo/_base/kernel","dojo/_base/lang","dojo/_base/fx","dojo/fx","./_base","dojo/_base/array","dojo/dom","dojo/dom-style","dojo/dom-class", + "dojo/_base/connect"], + function(dojo,lang,baseFx,coreFx,dojoxFx,arrayUtil,dom,domStyle,domClass,connectUtil){ + dojo.experimental("dojox.fx.style"); +// summary: +// dojox.fx CSS Class Animations: +// +// description: +// a set of functions to animate properties based on +// normalized CSS class definitions. +// +// provides: addClass, removeClass, and toggleClass +// + + + var _getStyleSnapshot = function(/* Object */cache){ + // summary: + // uses a dojo.getComputedStyle(node) cache reference and + // iterates through the 'documented/supported animate-able' + // properties. + // + // returns: Array + // an array of raw, calculcated values (no keys), to be normalized/compared + // elsewhere + return arrayUtil.map(dojoxFx._allowedProperties, function(style){ + return cache[style]; // String + }); // Array + }; + + var _getCalculatedStyleChanges = function(node, cssClass, addClass){ + // summary: Calculate the difference in style properties between two states + // description: + // calculate and normalize(?) the differences between two states + // of a node (args.node) by quickly adding or removing a class, and + // iterateing over the results of dojox.fx._getStyleSnapshot() + // + // addClass: + // true to calculate what adding a class would do, + // false to calculate what removing the class would do + + node = dom.byId(node); + var cs = domStyle.getComputedStyle(node); + + // take our snapShots + var _before = _getStyleSnapshot(cs); + dojo[(addClass ? "addClass" : "removeClass")](node, cssClass); + var _after = _getStyleSnapshot(cs); + dojo[(addClass ? "removeClass" : "addClass")](node, cssClass); + + var calculated = {}, i = 0; + arrayUtil.forEach(dojoxFx._allowedProperties, function(prop){ + if(_before[i] != _after[i]){ + // FIXME: the static units: px is not good, either. need to parse unit from computed style? + calculated[prop] = parseInt(_after[i]) /* start: parseInt(_before[i]), units: 'px' */ ; + } + i++; + }); + return calculated; + }; + + var styleFx = { // Augment dojox.fx for compat + + addClass: function(node, cssClass, args){ + // summary: + // Animate the effects of adding a class to a node + // + // description: + // Creates an animation that will animate + // the properties of a node to the properties + // defined in a standard CSS .class definition. + // (calculating the differences itself) + // + // node: String|DomNode + // A String ID or DomNode referce to animate + // + // cssClass: String + // The CSS class name to add to the node + // + // args: Object? + // Additional optional `dojo.animateProperty` arguments, such as + // duration, easing and so on. + // + // example: + // | + // | .bar { line-height: 12px; } + // | .foo { line-height: 40px; } + // |
                                      + // | Multi
                                      line
                                      text + // |
                                      + // | + // | // animate to line-height:40px + // | dojo.fx.addClass("test", "foo").play(); + // + node = dom.byId(node); + + var pushClass = (function(n){ + // summary: onEnd we want to add the class to the node + // (as dojo.addClass naturally would) in case our + // class parsing misses anything the browser would + // otherwise interpret. this may cause some flicker, + // and will only apply the class so children can inherit + // after the animation is done (potentially more flicker) + return function(){ + domClass.add(n, cssClass); + n.style.cssText = _beforeStyle; + } + })(node); + + // _getCalculatedStleChanges is the core of our style/class animations + var mixedProperties = _getCalculatedStyleChanges(node, cssClass, true); + var _beforeStyle = node.style.cssText; + var _anim = baseFx.animateProperty(lang.mixin({ + node: node, + properties: mixedProperties + }, args)); + connectUtil.connect(_anim, "onEnd", _anim, pushClass); + return _anim; // dojo.Animation + }, + + removeClass: function(node, cssClass, args){ + // summary: Animate the effects of removing a class from a node + // description: + // Creates an animation that will animate the properties of a + // node (args.node) to the properties calculated after removing + // a standard CSS className from a that node. + // + // calls dojo.removeClass(args.cssClass) onEnd of animation + // + // standard dojo.Animation object rules apply. + // + // example: + // | // animate the removal of "foo" from a node with id="bar" + // | dojox.fx.removeClass("bar", "foo").play() + + node = dom.byId(node); + + var pullClass = (function(n){ + // summary: onEnd we want to remove the class from the node + // (as dojo.removeClass naturally would) in case our class + // parsing misses anything the browser would otherwise + // interpret. this may cause some flicker, and will only + // apply the class so children can inherit after the + // animation is done (potentially more flicker) + // + return function(){ + domClass.remove(n, cssClass); + n.style.cssText = _beforeStyle; + } + })(node); + + var mixedProperties = _getCalculatedStyleChanges(node, cssClass); + var _beforeStyle = node.style.cssText; + var _anim = baseFx.animateProperty(lang.mixin({ + node: node, + properties: mixedProperties + }, args)); + connectUtil.connect(_anim, "onEnd", _anim, pullClass); + return _anim; // dojo.Animation + }, + + toggleClass: function(node, cssClass, condition, args){ + // summary: + // Animate the effects of Toggling a class on a Node + // + // description: + // creates an animation that will animate the effect of + // toggling a class on or off of a node. + // Adds a class to node if not present, or removes if present. + // Pass a boolean condition if you want to explicitly add or remove. + // + // node: String|DomNode + // The domNode (or string of the id) to toggle + // cssClass: String + // String of the classname to add to the node + // condition: Boolean? + // If passed, true means to add the class, false means to remove. + // args: Object? + // Additional `dojo.Animation` args to pass along. + // + // example: + // | // add the class "sampleClass" to a node id="theNode" + // | dojox.fx.toggleClass("theNode","sampleClass",true).play(); + // example: + // | // toggle the class "sampleClass" on the node id="theNode" + // | dojox.fx.toggleClass("theNode","sampleClass").play(); + + if(typeof condition == "undefined"){ + condition = !domClass.contains(node, cssClass); + } + return dojoxFx[(condition ? "addClass" : "removeClass")](node, cssClass, args); // dojo.Animation + }, + + _allowedProperties: [ + // summary: Our pseudo map of properties we will check for. + // description: + // it should be much more intuitive. a way to normalize and + // "predict" intent, or even something more clever ... + // open to suggestions. + + // no-brainers: + "width", + "height", + // only if position = absolute || relative? + "left", "top", // "right", "bottom", + // these need to be filtered through dojo.colors? + // "background", // normalize to: + /* "backgroundImage", */ + // "backgroundPosition", // FIXME: to be effective, this needs "#px #px"? + "backgroundColor", + + "color", + + // "border", + //"borderBottomColor", + "borderBottomWidth", + //"borderTopColor", + "borderTopWidth", + //"borderLeftColor", + "borderLeftWidth", + //"borderRightColor", + "borderRightWidth", + + // "padding", // normalize to: + "paddingLeft", "paddingRight", "paddingTop", "paddingBottom", + // "margin", // normalize to: + "marginLeft", "marginTop", "marginRight", "marginBottom", + + // unit import/delicate?: + "lineHeight", + "letterSpacing", + "fontSize" + ] + }; + lang.mixin(dojoxFx,styleFx); + return styleFx; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/_animation.css b/js/dojo-release-1.7.2-src/dojox/fx/tests/_animation.css new file mode 100644 index 0000000..7819142 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/_animation.css @@ -0,0 +1,113 @@ +.testBox { + border:1px solid #333; + width:75px; + height:75px; +} +.absolutely { position:absolute; + top:0; left:0; +} +.floating { + float:left; +} +.wide { + width:200px; +} +.tall { + height:200px; +} +.tiny { + width:3px; + height:3px; +} + + +.black { + color:#fff; + background-color:#000; +} + +.white { + color:#666; + background-color:#fff; +} + +.green { + color:#000; + background-color:#eef; +} +.red { + color:#fff; + background-color:#ffe; +} +.blue { + color:#000; + background-color:#fef !important; +} + +/* font sizes */ +.baseFont { + line-height:14px; + font:12px Arial,sans-serif; + letter-spacing:0.1em; +} + +.spacedVertical { + line-height:42px; +} +.spacedHorizontal { + letter-spacing:0.42em; +} +.fontSizeTest { + font:20px Arial,sans-serif; +} + +/* margins */ +.bigMargin { + margin:30px; +} +.noMargin { + margin:0; +} +.mediumMargin { + margin:15px; +} +.bigMarginLeft { + margin-left:150px; +} + +/* padding */ +.padded { + padding:3px; +} +.noPadding { + padding:0; +} +.topPadding { + padding-top:50px; +} +.bigPadding { + padding:30px; +} + +/* positioning */ + +.offsetSome { + top:50px; + left:75px; +} + +.topLeft { + top:0; + left:0; +} +.bottomRight { + bottom:0; + right:0; +} + +.bothAxis { + top:10px; + left:10px; + right:10px; + bottom:10px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/_base.js b/js/dojo-release-1.7.2-src/dojox/fx/tests/_base.js new file mode 100644 index 0000000..4fb9963 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/_base.js @@ -0,0 +1,63 @@ +dojo.provide("dojox.fx.tests._base"); + +dojo.require("dojox.fx._core"); +dojo.require("dojox.fx"); + +tests.register("dojox.fx.tests._base", [ + + function simpleLineTest(t){ + + var line = new dojox.fx._Line( + [0, 100], + [100, 0] + ); + + var first = line.getValue(0); + t.assertEqual(first[0], 0); + t.assertEqual(first[1], 100); + + var mid = line.getValue(0.5); + t.assertEqual(mid[0], 50); + t.assertEqual(mid[1], 50); + + var end = line.getValue(1); + t.assertEqual(end[0], 100); + t.assertEqual(end[1], 0); + + }, + + function singleLineTest(t){ + + var line = new dojox.fx._Line(0,100); + t.assertEqual(line.getValue(0), 0); + t.assertEqual(line.getValue(0.5), 50); + t.assertEqual(line.getValue(1), 100); + + }, + + function multiDimensionalTest(t){ + + var startSet = [5, 10, 15, 20, 25, 30, 35]; + var endSet = [35, 30, 25, 20, 15, 10, 5]; + + var line = new dojox.fx._Line(startSet, endSet); + + var start = line.getValue(0); + var mid = line.getValue(0.5); + var end = line.getValue(1); + + t.assertEqual(start.length, 7); + t.assertEqual(end.length, 7); + + t.assertEqual(startSet[0], start[0]); + t.assertEqual(startSet[1], start[1]); + t.assertEqual(startSet[5], start[5]); + + var expectedMid = 20; + dojo.forEach(line.getValue(0.5), function(val, i){ + t.assertEqual(expectedMid, val) + }); + + } + +]); diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/example_Line.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_Line.html new file mode 100644 index 0000000..0e2ba25 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_Line.html @@ -0,0 +1,80 @@ + + + + using a dojo._Line and dojo.Animation + + + + + + +

                                      an "animateProperty" for dojox.gfx

                                      +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/example_backgroundPosition.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_backgroundPosition.html new file mode 100644 index 0000000..45dd5c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_backgroundPosition.html @@ -0,0 +1,57 @@ + + + + Animated background position example | The Dojo Toolkit + + + + + + + +

                                      dojo.Animation test:

                                      + +
                                      Test
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/example_dojoAnimations.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_dojoAnimations.html new file mode 100644 index 0000000..c8cf6e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_dojoAnimations.html @@ -0,0 +1,440 @@ + + + + + skeleton page | The Dojo Toolkit + + + + + + + + + +
                                      + +

                                      Dojo FX: base animations

                                      + + + + + + + +
                                      +
                                      +
                                       
                                      +
                                      +
                                      + + +

                                      Animate CSS Properties:

                                      + + + + + + + +
                                      +
                                      +

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Nam facilisis enim. Pellentesque in elit et lacus euismod dignissim. + Aliquam dolor pede, convallis eget, dictum a, blandit ac, urna. + Pellentesque sed nunc ut justo volutpat egestas. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. + In erat. +

                                      +
                                      +
                                      + +

                                      dojo.fx - Core animations

                                      + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + +

                                      dojo.query FX

                                      + + + + + + + + + + + +
                                      +
                                        +
                                      • odd row
                                      • +
                                      • even row
                                      • +
                                      • odd row
                                      • +
                                      • even row
                                      • +
                                      • odd row
                                      • +
                                      • even row
                                      • +
                                      • odd row
                                      • +
                                      • even row
                                      • +
                                      • odd row
                                      • +
                                      +
                                      +

                                      (FisheyeLite makes this easy. be creative:)

                                      +
                                        +
                                      • odd row
                                      • +
                                      • even row
                                      • +
                                      • odd row
                                      • +
                                      • even row
                                      • +
                                      • odd row
                                      • +
                                      • with id
                                      • +
                                      • odd row
                                      • +
                                      +

                                      +
                                      +
                                      + +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/example_easingChart2D.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_easingChart2D.html new file mode 100644 index 0000000..45f03cf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/example_easingChart2D.html @@ -0,0 +1,147 @@ + + + + visualising dojo.Animation.easing via dojox.charting + + + + + + + + + + + + + +

                                      dojo.fx.easing

                                      + +

                                      this chart shows time (x axis) vs. position (y axis) for a movement from 0px to 30px modified by easing functions

                                      + + + +
                                      +
                                      +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/images/averycutedog.jpg b/js/dojo-release-1.7.2-src/dojox/fx/tests/images/averycutedog.jpg new file mode 100755 index 0000000..335855e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/tests/images/averycutedog.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/images/dot.png b/js/dojo-release-1.7.2-src/dojox/fx/tests/images/dot.png new file mode 100755 index 0000000..1287a73 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/tests/images/dot.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/images/longBg.png b/js/dojo-release-1.7.2-src/dojox/fx/tests/images/longBg.png new file mode 100755 index 0000000..f89d23a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/fx/tests/images/longBg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/runTests.html new file mode 100644 index 0000000..ad812f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/runTests.html @@ -0,0 +1,10 @@ + + + + Dojox.wire Unit Test Runner + + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Nodelist-fx.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Nodelist-fx.html new file mode 100644 index 0000000..573860b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Nodelist-fx.html @@ -0,0 +1,282 @@ + + + + dojo.NodeList-fx and dojox.fx.ext-dojo.Nodelist | fx add-ons to dojo.query() + + + + + + + +

                                      NodeList and dojo.query "magic"

                                      + +
                                      +

                                      stuff going on:

                                      +
                                        +
                                      • watch the startup cycle
                                      • +
                                      • click col 6
                                      • +
                                      • click top right box
                                      • +
                                      • hover to highlight() node
                                      • +
                                      +
                                      + +
                                      +

                                      custom query:

                                      +
                                      +

                                      + dojo.query(""); +
                                      (dojo:)
                                      + +
                                      + + +
                                      + + +
                                      + + +
                                      + + + (x: 0, y:0)
                                      + +
                                      (dojox:)
                                      + + +
                                      + + +
                                      + + +
                                      + + +
                                      + +

                                      + + + + +
                                      +
                                      + +
                                      +
                                      1
                                      +
                                      2
                                      +
                                      3
                                      +
                                      4
                                      +
                                      5
                                      +
                                      6
                                      +
                                      7
                                      + +
                                      2
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      3
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      4
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + +
                                      + HTML AFTER +
                                      + +

                                      classes available to play with:

                                      + +
                                      	.testBox
                                      +	.noIdHere
                                      +	each row: .rowOne .rowTwo .rowThree .rowFour
                                      +	each col: .iOne .iTwo .. iSeven
                                      +	#randomNode, #node9, #node7, #aNode, #node1, #node2, #node4, #node6
                                      + +

                                      the dojo.query() isn't limited to the testDiv, it parses the body. try: dojo.query("fieldset") and slideBy animation

                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Shadow.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Shadow.html new file mode 100644 index 0000000..b20bbac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Shadow.html @@ -0,0 +1,93 @@ + + + + dojox.fx.Shadow - Drop Shadows for DomNodes | The Dojo Toolkit + + + + + + + +

                                      dojox.fx.Shadow tests

                                      + +
                                      +

                                      with margin:

                                      +

                                      Lorem

                                      + +

                                      with padding:

                                      +

                                      Lorem

                                      + +

                                      no padding:

                                      +

                                      Lorem

                                      + +

                                      position:absolute

                                      +

                                      Lorem

                                      + +
                                      +
                                      + + +

                                      + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Timeline.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Timeline.html new file mode 100644 index 0000000..0c55eaf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_Timeline.html @@ -0,0 +1,173 @@ + + + + Test dojox.fx.Timeline + + + + + + +

                                      Test Timeline

                                      +

                                      + This is a test for the dojo.Animation extension, dojox.fx.Timeline. + This works by replacing dojo._Line with dojox.fx._Timeline. The keyframes + are an array of object properties. Properties can skip steps, so width will still + transition if it is in key #1 and key #5. +

                                      +

                                      + This is reversable as well, using dojox.fx.ext-dojo.reverse. Note the Reverse button. +

                                      + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      Dojo
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_animateClass.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_animateClass.html new file mode 100644 index 0000000..025a5c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_animateClass.html @@ -0,0 +1,217 @@ + + + + dojox.fx.style - animatated CSS functions | The Dojo Toolkit + + + + + + + + + +

                                      dojox.fx.style tests

                                      + +

                                      + dojox.fx.style provides a few methods to animate the changes that would occur + when adding or removing a class from a domNode. +

                                      +
                                        +
                                      • dojox.fx.addClass(node, className, animargs); // Returns dojo.Animation
                                      • +
                                      • dojox.fx.removeClass(node, className, animargs); // Returns dojo.Animation
                                      • +
                                      • dojox.fx.toggleClass(node, className, force, animargs)
                                      • +
                                      + + + + + + + +

                                      testing sizes

                                      + + + + + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + +

                                      testing position

                                      +

                                      This is a div position:relative with a position:absolute div inside. testing various t/l/b/r combos. + normal css inheritance rules apply, so setting .foo .bar if .foo was defined last in the css text, .bar + will take precedent. the below position test shows the results of this: +

                                      + + + + + +
                                      +
                                      +
                                      + + + + + +

                                      Some properties + cannot be modified (fontFace, and so on), so to ensure the results at the end + of the animation are applied correctly and fully, the class name is set on the node + via dojo.add/removeClass(). +

                                      + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_complex.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_complex.html new file mode 100644 index 0000000..33b5a45 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_complex.html @@ -0,0 +1,87 @@ + + + + Test dojox.fx.ext-dojo.complex + + + + + +

                                      Test dojox.fx.ext-dojo.complex

                                      +

                                      + The dojox.fx.ext-dojo.complex class is an extension of dojo.animateProperty which adds functionality + that animates a "complex property". The primary example is the + clip style: rect(10px 30px 10px 50px). +

                                      +

                                      + Frankly, the clip style is not very useful nor exciting. But the dojox.fx.ext-dojo.complex class + will animate any property contained within parenthesis. So it can also be used with (and is actually intended for) + CSS3 properties, such as transform: + transform: rotate(10deg) translateX(0px) + or even gradients (it would only affect the properties within the color-stops): + background-image: -webkit-gradient(linear, right top, left top, color-stop(0, #ff0000),color-stop(1.0, #0000FF)); +

                                      +

                                      + A few notes on the clip:rect() property. IE only accepts no commas - Firefox & Safari accepts both. So.... don't use commas! + Also, the node must be set to position:absolute to work. +

                                      +
                                      +
                                      +

                                      + Dojo saves you time, performs better, and scales to meet your needs. + It's the toolkit that experienced designers and developers turn to for building great experiences. +

                                      + Dojo is a set of integrated libraries that accelerate development from simple pages to the most sophisticated web applications. + Great resources are available to help you take advantage of all that power. +

                                      + Dojo Campus hosts the official documentation wiki, short how-to articles, and a rich set of examples + to help you leverage the power and depth of Dojo. +

                                      +
                                      +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_crossFade.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_crossFade.html new file mode 100644 index 0000000..330a34a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_crossFade.html @@ -0,0 +1,145 @@ + + + + dojox.fx - animation sets to use! + + + + + + + +

                                      dojox.fx.crossFade test

                                      + + +

                                      a simple demonstration of two nodes fading simultaneously

                                      +
                                      + +
                                      + +
                                      box2
                                      +
                                      +
                                      +
                                      + +

                                      two nodes with position:relative in a container with position:absolute, crossfading together.

                                      + +
                                      +
                                      + +
                                      box two
                                      +
                                      +
                                      +
                                      + +

                                      simple looping crossfade

                                      + +
                                      +
                                      +
                                      box one
                                      + +
                                      +
                                      +
                                      + + + +

                                      that's all, folks...

                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_easing.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_easing.html new file mode 100644 index 0000000..b96e94d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_easing.html @@ -0,0 +1,130 @@ + + + + dojox.fx.easing functions: + + + + + + + +

                                      dojox.fx.easing function tests:

                                      + + (click block to play animation, or here to do all three) + +
                                      dojo.fx.easing.easeIn
                                      +

                                      +
                                      dojo.fx.easing.easeOut
                                      +

                                      +
                                      dojo.fx.easing.linear
                                      +

                                      +
                                      dojo default easing
                                      + +

                                      + dojo.fx.easing is stand-alone, and does not require the dojox.fx base files. to see a chart + of these functions see example_easingChart2D.html +

                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_flip.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_flip.html new file mode 100644 index 0000000..f626500 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_flip.html @@ -0,0 +1,530 @@ + + + + dojox.fx.flip | experimental fx add-ons for the Dojo Toolkit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      dojox.fx.flip test
                                      +
                                      + dojox.fx.flip +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + controls +
                                      +
                                      +
                                      +
                                      +
                                      dojox.fx.flip test - half flip
                                      + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      dojox.fx.flipCube test
                                      +
                                      + dojox.fx.flipCube +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + controls +
                                      +
                                      +
                                      +
                                      +
                                      dojox.fx.flipGrid test
                                      +
                                      + dojox.fx.flipGrid +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      dojox.fx.flipPage test
                                      + + + + + + + +
                                      +
                                      + +
                                      + Nel mezzo del cammin di nostra vita + mi ritrovai per una selva oscura + ché la diritta via era smarrita. + Ahi quanto a dir qual era è cosa dura + esta selva selvaggia e aspra e forte + che nel pensier rinova la paura! + Tant'è amara che poco è più morte; + ma per trattar del ben ch'i' vi trovai, + dirò de l'altre cose ch'i' v'ho scorte. + Io non so ben ridir com'i' v'intrai, + tant'era pien di sonno a quel punto + che la verace via abbandonai. + Ma poi ch'i' fui al piè d'un colle giunto, + là dove terminava quella valle + che m'avea di paura il cor compunto, + guardai in alto, e vidi le sue spalle + vestite già de' raggi del pianeta + che mena dritto altrui per ogne calle. + Allor fu la paura un poco queta + che nel lago del cor m'era durata + la notte ch'i' passai con tanta pieta. + E come quei che con lena affannata + uscito fuor del pelago a la riva + si volge a l'acqua perigliosa e guata, + così l'animo mio, ch'ancor fuggiva, +
                                      +
                                      +
                                      +
                                      + +
                                      + si volse a retro a rimirar lo passo + che non lasciò già mai persona viva. + Poi ch'èi posato un poco il corpo lasso, + ripresi via per la piaggia diserta, + sì che 'l piè fermo sempre era 'l più basso. + Ed ecco, quasi al cominciar de l'erta, + una lonza leggera e presta molto, + che di pel macolato era coverta; + e non mi si partia dinanzi al volto, + anzi 'mpediva tanto il mio cammino, + ch'i' fui per ritornar più volte vòlto. + Temp'era dal principio del mattino, + e 'l sol montava 'n sù con quelle stelle + ch'eran con lui quando l'amor divino + mosse di prima quelle cose belle; + sì ch'a bene sperar m'era cagione + di quella fiera a la gaetta pelle + l'ora del tempo e la dolce stagione; + ma non sì che paura non mi desse + la vista che m'apparve d'un leone. + Questi parea che contra me venisse + con la test'alta e con rabbiosa fame, + sì che parea che l'aere ne tremesse. +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_highlight.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_highlight.html new file mode 100644 index 0000000..1d5947e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_highlight.html @@ -0,0 +1,45 @@ + + + + dojox.fx.highlight + + + + + + +

                                      dojox.fx.highlight tests

                                      + +
                                      +

                                      This is the default highlight

                                      +
                                      + +
                                      +

                                      BRING ATTENTION HERE!

                                      +
                                      + +
                                      +

                                      Highlight me

                                      +
                                      + + test #1 (default) +
                                      + test #2 (default - play twice) +
                                      + test #3 +
                                      + test #4 +
                                      + highlight via dojo.query + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_reverse.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_reverse.html new file mode 100644 index 0000000..941e455 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_reverse.html @@ -0,0 +1,100 @@ + + + + Test dojox.fx.ext-dojo.reverse + + + + + + +

                                      Test dojo.fx.reverse

                                      +

                                      + This is a test for the dojo.Animation extension, dojox.fx.ext-dojo.reverse. + To use, simply require dojox.fx.ext-dojo.reverse and a reverse() method + will be added to all dojo.Animations. +

                                      +

                                      + dojox.fx.ext-dojo.reverse can be used at any time during the animation. It does not + need to be called when it ends. It also reverses the easing — if dojo.fx.easing.quadIn + is used, dojo.fx.easing.quadOut will be used when animating backwards. +

                                      + +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_scroll.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_scroll.html new file mode 100644 index 0000000..a04e799 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_scroll.html @@ -0,0 +1,97 @@ + + + + dojox.fx.scroll + + + + + + + + +

                                      dojox.fx.scroll tests

                                      + +

                                      YOU FOUND ME!

                                      +

                                      neat.

                                      +
                                      + +

                                      dojox.fx.scroll provides:

                                      +
                                        +
                                      • dojox.fx.smoothScroll()
                                      • +
                                      +

                                      + which will create and return a dojo.Animation to scroll + a window to a desired offset. (or a node that has overflow:auto/hidden, if you pass the domNode as the win: argument) +

                                      + + +

                                      getScroll

                                      +

                                      + Scroll top: 0
                                      + Scroll left: 0 +

                                      + + + +
                                      + +
                                      + +
                                      + +

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      + + +

                                      getElementsByClass

                                      + +

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      + +

                                      ContainsAny

                                      + +

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi.Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitaerisus.

                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_sizeTo.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_sizeTo.html new file mode 100644 index 0000000..2b7b19a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_sizeTo.html @@ -0,0 +1,170 @@ + + + + dojox.fx.sizeTo | experimental fx add-ons for the Dojo Toolkit + + + + + + +

                                      dojox.fx.sizeTo test

                                      + +

                                      quick sizeTo API overview:

                                      + +
                                      +		dojox.fx.sizeTo({
                                      +				// basic requirements:
                                      +				node: "aDomNodeId", // or a domNode reference
                                      +				width: 200, // measured in px
                                      +				height: 200, // measured in px
                                      +				method: "chain" // is default, or "combine"
                                      +		});
                                      +		
                                      +

                                      + little test blocks (works in FF/win/mac + ie6) dojo.query() test +

                                      + +
                                      +
                                      + mouse down / mouse up +
                                      +
                                      + hover / exit +
                                      + +
                                      + all of em' +
                                      +
                                      +
                                      + + (click the box labeled "all of em'" again to reset all nodes) + + HTML AFTER +
                                      + +
                                      +
                                      This box moves when clicked to test parameter caching +
                                      +
                                      + +

                                      That's all, Folks!

                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_slideBy.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_slideBy.html new file mode 100644 index 0000000..a1a1960 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_slideBy.html @@ -0,0 +1,75 @@ + + + + dojox.fx - animation sets to use! + + + + + + + +

                                      dojox.fx.slideBy test

                                      + + top: 50, left:50 + top:-50, left:50 + top:-50, left:-50 + top:50, left:-50 + dojo.query() + chainTest + +
                                      + lorem. ipsum. +
                                      + +
                                      + +
                                      +
                                      a
                                      b
                                      c
                                      +
                                      + + + HTML AFTER +
                                      + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_split.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_split.html new file mode 100644 index 0000000..a631478 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_split.html @@ -0,0 +1,442 @@ + + + + Gruppler's Effect Demos + + + + + + + + + + +

                                      dojox.fx.split

                                      + Each effect is highly configurable. Here is a general list of the options available in each effect: +
                                        +
                                      • The number of rows and columns in which to split the element
                                      • +
                                      • The distance the pieces travel (as a multiple of the element's respective dimensions)
                                      • +
                                      • Whether or not to fade the pieces in/out
                                      • +
                                      • How much the effect should be randomized (a percentage)
                                      • +
                                      • Whether or not the pieces should appear outside the element's boundries
                                      • +
                                      +

                                      + Just click each box to play its animation! +

                                      +
                                      +
                                        +
                                      • BlockFadeOut,
                                        BlockFadeIn uniformly +
                                        + + rows: 1
                                        + columns: 10 +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • BlockFadeOut,
                                        BlockFadeIn randomly +
                                        + + random: 0.25
                                        + reverseOrder: true +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Disintegrate, Build
                                        uniformly (cropped) +
                                        + + distance: 1
                                        + crop: true
                                        + fade: false +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Disintegrate, Build
                                        randomly +
                                        + + random: 0.5
                                        + distance: 2.5 +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Explode, Converge
                                        uniformly (cropped) +
                                        + + rows: 2
                                        + columns: 2
                                        + distance: 0.75
                                        + fade: false
                                        + crop: true
                                        + (custom easing) +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Explode, Converge
                                        randomly +
                                        + + rows: 5
                                        + columns: 5
                                        + distance: 1.5
                                        + duration: 1500
                                        + random: 0.75 +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Shear, UnShear
                                        rows (cropped) +
                                        + + interval: 50
                                        + distance: 0.95
                                        + rows: 10
                                        + columns: 1
                                        + fade: false
                                        + crop: true
                                        + reverseOrder: true +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Shear, UnShear
                                        rows and columns +
                                        + + random: 1 +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Pinwheel, UnPinwheel
                                        uniformly +
                                        + + fade: false +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Pinwheel, UnPinwheel
                                        randomly +
                                        + + random: 1
                                        + rows: 5
                                        + columns: 5 +

                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_text.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_text.html new file mode 100644 index 0000000..ee161cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_text.html @@ -0,0 +1,373 @@ + + + + dojox.fx Text Effect Tests | The Dojo Toolkit + + + + + + + + + + +

                                      dojox.fx.text

                                      + +
                                      + + + +
                                      + +
                                      + +

                                      + The following effects are very similar to the previous; rather than separating an element into + rectangular blocks, these separate the text inside the element into either words or characters, preserving any HTML. +

                                      + + Each effect is highly configurable. Here is a general list of the options available in each effect: +
                                        +
                                      • Whether or not the text should be split into words rather than characers
                                      • +
                                      • Text to use instead of the element's innerHTML
                                      • +
                                      • The distance the pieces travel (as a multiple of the element's respective dimensions)
                                      • +
                                      • Whether or not to fade the pieces in/out
                                      • +
                                      • How much the effect should be randomized (a percentage)
                                      • +
                                      • Whether or not the pieces should appear outside the element's boundries
                                      • +
                                      +

                                      + Just click each block of text to play its animation!
                                      + (Some of these are very cpu-hungry) +

                                      +
                                      +
                                        +
                                      • BlockFadeOut,
                                        BlockFadeIn uniformly
                                        (by word) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • BlockFadeOut,
                                        BlockFadeIn randomly
                                        (by character) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Disintegrate, Build
                                        uniformly
                                        (by word, cropped) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Disintegrate, Build
                                        randomly
                                        (by character) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Explode, Converge
                                        uniformly
                                        (by character) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Explode, Converge
                                        randomly
                                        (by word) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Backspace, Type
                                        uniformly
                                        (by duration, fixed) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      • Backspace, Type
                                        randomly
                                        (by interval) +
                                        +

                                        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi nibh. Maecenas metus nisi, tempus sed.

                                        +
                                        +
                                      • +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_transform.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_transform.html new file mode 100644 index 0000000..8cea1c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_transform.html @@ -0,0 +1,210 @@ + + + + Test dojox.fx.ext-dojo.complex (fx using transform) + + + +

                                      Test dojox.fx.ext-dojo.complex using css3 transforms

                                      +
                                      +
                                      +
                                      rotate - click me!
                                      + + dojo.animateProperty({ + node:"rotate", + duration: 1000, + properties:{ + transform:{start:'rotate(0deg)', end:'rotate(360deg)'} + } + }).play(); + +
                                      +
                                      +
                                      +
                                      skewX - click me!
                                      + + dojo.animateProperty({ + node:"skewX", + duration: 1000, + properties:{ + transform:{start:'skewX(0deg)', end:'skewX(20deg)'} + } + }).play(); + +
                                      +
                                      +
                                      skewY - click me!
                                      + + dojo.animateProperty({ + node:"skewY", + duration: 1000, + properties:{ + transform:{start:'skewY(0deg)', end:'skewY(10deg)'} + } + }).play(); + +
                                      +
                                      +
                                      skew - click me!
                                      + + dojo.animateProperty({ + node:"skew", + duration: 1000, + properties:{ + transform:{start:'skew(0deg,0deg)', end:'skew(20deg,10deg)'} + } + }).play(); + +
                                      +
                                      +
                                      scaleX - click me!
                                      + + dojo.animateProperty({ + node: "scaleX", + properties:{ + transform:{start:'scaleX(1)', end:'scaleX(2)'} + } + }).play() + +
                                      +
                                      +
                                      scaleY - click me!
                                      + + dojo.animateProperty({ + node: "scaleY", + properties:{ + transform:{start:'scaleY(1)', end:'scaleY(.5)'} + } + }).play() + +
                                      +
                                      +
                                      scale - click me!
                                      + + dojo.animateProperty({ + node: "scaleY", + properties:{ + transform:{start:'scale(1,1)', end:'scale(2,.5)'} + } + }).play() + +
                                      + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/tests/test_wipeTo.html b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_wipeTo.html new file mode 100644 index 0000000..109edb8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/tests/test_wipeTo.html @@ -0,0 +1,108 @@ + + + + dojox.fx.wipeTo | experimental fx add-ons for the Dojo Toolkit + + + + + + +

                                      dojox.fx.wipeTo test

                                      + +

                                      quick sizeTo API overview:

                                      + +
                                      +		dojox.fx.wipeTo({
                                      +				// basic requirements:
                                      +				node: "aDomNodeId", // or a domNode reference		 
                                      +				width: 200 // measured in px
                                      +				// height: 200 // measured in px (only one at a time, see sizeTo)		  
                                      +		});
                                      +		
                                      + +

                                      Some test boxes: (id="box1,box2,box3" etc ...)

                                      + + + + + + + +
                                      + I am some small text +
                                      + +
                                      + I am some small text +
                                      + +
                                      + I am some small text +
                                      + + +
                                      + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/fx/text.js b/js/dojo-release-1.7.2-src/dojox/fx/text.js new file mode 100644 index 0000000..2079441 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/fx/text.js @@ -0,0 +1,462 @@ +define(["dojo/_base/lang", "./_base", "dojo/_base/fx", "dojo/fx","dojo/fx/easing", "dojo/dom", "dojo/dom-style", "dojo/_base/html", "dojo/_base/connect"], +function(lang, dojoxFx, baseFx, coreFx, easingLib, dom, domStyle, htmlLib, connectUtil ){ +var textFx = lang.getObject("dojox.fx.text", true); +textFx._split = function(/*Object*/ args){ + // summary: Split a block of text into words or letters + // + // description: + // Returns an animation that will split the node into a grid + // of pieces that move independently. + // + // NOTE: + // In some rendering engines, the text will appear to "jump" from its initial position + // when the animation begins. To work around this bug, enclose the node's text in a

                                      or

                                      . + // + // args: + // args.crop: Boolean - If true, pieces will be positioned relatively rather than absolutely + // args.text: String - Text to place inside the node (otherwise node.innerHTML is used) + // args.words: Boolean - If true, the text will be split into words rather than characters + // args.pieceAnimation: Function(piece, pieceCoords, nodeCoords, number, numPieces) + // - Returns either the dojo.Animation or an array of dojo.Animation objects for the piece; + // pieceCoords is the result of dojo.coords(piece, true); + // nodeCoords is the result of dojo.coords(args.node, true); + // number is the piece's position in the array of pieces, and numPieces is the array.length + + var node = args.node = dom.byId(args.node), + s = node.style, + cs = domStyle.getComputedStyle(node), + nodeCoords = htmlLib.coords(node, true); + + args.duration = args.duration || 1000; + args.words = args.words || false; + + var originalHTML = (args.text && typeof(args.text) == "string") ? args.text : node.innerHTML, + originalHeight = s.height, + originalWidth = s.width, + animations = []; + + domStyle.set(node, { + height: cs.height, + width: cs.width + }); + + // The following regular expression courtesy of Phil Haack + // http://haacked.com/archive/2004/10/25/usingregularexpressionstomatchhtml.aspx + var tagReg = /(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)/g; + + // Translation: /(HTML tag plus spaces)|(word/letter without '<' plus spaces)/g + var reg = (args.words ? + /(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)\s*|([^\s<]+\s*)/g : + /(<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)\s*|([^\s<]\s*)/g + ); + + // Split the text into pieces + var pieces = (typeof args.text == "string") ? args.text.match(reg) : node.innerHTML.match(reg); + var html = ""; + var numPieces = 0; + var number = 0; + for(var i = 0; i < pieces.length; i++){ + var piece = pieces[i]; + if(!piece.match(tagReg)){ + html += "" + piece + ""; + numPieces++; + }else{ + html += piece; + } + } + node.innerHTML = html; + + // Find the newly-created spans and create their animations + function animatePieces(piece){ + var next = piece.nextSibling; + if(piece.tagName == "SPAN" && piece.childNodes.length == 1 && piece.firstChild.nodeType == 3){ + var pieceCoords = htmlLib.coords(piece, true); + number++; + domStyle.set(piece, { + padding: 0, + margin: 0, + top: (args.crop ? "0px" : pieceCoords.t + "px"), + left: (args.crop ? "0px" : pieceCoords.l + "px"), + display: "inline" + }); + var pieceAnimation = args.pieceAnimation(piece, pieceCoords, nodeCoords, number, numPieces); + if(lang.isArray(pieceAnimation)){ + // if pieceAnimation is an array, append its elements + animations = animations.concat(pieceAnimation); + }else{ + // otherwise, append it + animations[animations.length] = pieceAnimation; + } + }else if(piece.firstChild){ + animatePieces(piece.firstChild); + } + + if(next){ + animatePieces(next); + } + } + + animatePieces(node.firstChild); + var anim = coreFx.combine(animations); + connectUtil.connect(anim, "onEnd", anim, function(){ + node.innerHTML = originalHTML; + domStyle.set(node, { + height: originalHeight, + width: originalWidth + }); + }); + if(args.onPlay){ + connectUtil.connect(anim, "onPlay", anim, args.onPlay); + } + if(args.onEnd){ + connectUtil.connect(anim, "onEnd", anim, args.onEnd); + } + return anim; // dojo.Animation +}; + +textFx.explode = function(/*Object*/ args){ + // summary: Explode a block of text into words or letters + // + // description: + // Returns an animation that will split the text into a spans + // of words or characters that fly away from the center. + // + // args: + // args.crop: Boolean - If true, pieces will be positioned relatively rather than absolutely + // args.words: Boolean - If true, text will be split into words rather than characters + // args.random: Float - If set, pieces fly to random distances, for random durations, + // and in slightly random directions. The value defines how much + // randomness is introduced. + // args.distance: Float - Multiplier for the distance the pieces fly (even when random) + // args.fade: Boolean - If true, pieces fade out while in motion (default is true) + // args.fadeEasing: Function - If args.fade is true, the fade animations use this easing function + // args.unhide: Boolean - If true, the animation is reversed + // args.sync: Boolean - If args.unhide is true, all the pieces converge at the same time + // (default is true) + + var node = args.node = dom.byId(args.node); + var s = node.style; + + args.distance = args.distance || 1; + args.duration = args.duration || 1000; + args.random = args.random || 0; + if(typeof(args.fade) == "undefined"){ + args.fade = true; + } + if(typeof(args.sync) == "undefined"){ + args.sync = true; + } + args.random = Math.abs(args.random); + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, pieceCoords, coords, number, numPieces){ + var pieceHeight = pieceCoords.h; + var pieceWidth = pieceCoords.w; + var distance = args.distance * 2; + var duration = args.duration; + var startTop = parseFloat(piece.style.top); + var startLeft = parseFloat(piece.style.left); + var delay = 0; + var randomX = 0; + var randomY = 0; + if(args.random){ + var seed = (Math.random() * args.random) + Math.max(1 - args.random, 0); + distance *= seed; + duration *= seed; + // To syncronize, give each piece an appropriate delay so they end together + delay = ((args.unhide && args.sync) || (!args.unhide && !args.sync)) ? (args.duration - duration) : 0; + + // Slightly randomize the direction of each piece + randomX = Math.random() - 0.5; + randomY = Math.random() - 0.5; + } + var distanceY = ((coords.h - pieceHeight) / 2 - (pieceCoords.y - coords.y)); + var distanceX = ((coords.w - pieceWidth) / 2 - (pieceCoords.x - coords.x)); + var distanceXY = Math.sqrt(Math.pow(distanceX, 2) + Math.pow(distanceY, 2)); + var endTop = startTop - distanceY * distance + distanceXY * randomY; + var endLeft = startLeft - distanceX * distance + distanceXY * randomX; + + // Create the animation objects for the piece + // These are separate anim objects so they can have different curves + var pieceSlide = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || (args.unhide ? easingLib.sinOut : easingLib.circOut)), + beforeBegin: (args.unhide ? function(){ + if(args.fade){ + //piece.style.opacity = 0; + domStyle.set(piece,"opacity", 0); + } + piece.style.position = args.crop ? "relative" : "absolute"; + piece.style.top = endTop + "px"; + piece.style.left = endLeft + "px"; + } : function(){piece.style.position = args.crop ? "relative" : "absolute";}), + properties: { + top: (args.unhide ? { start: endTop, end: startTop } : { start: startTop, end: endTop }), + left: (args.unhide ? { start: endLeft, end: startLeft } : { start: startLeft, end: endLeft }) + } + }); + + if(args.fade){ + var pieceFade = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.fadeEasing || easingLib.quadOut), + properties: { + opacity: (args.unhide ? {start: 0, end: 1} : {end: 0}) + } + }); + + // return both animations as an array + return (args.unhide ? [pieceFade, pieceSlide] : [pieceSlide, pieceFade]); + }else{ + // Otherwise return only the slide animation + return pieceSlide; + } + }; + + var anim = textFx._split(args); + return anim; // dojo.Animation +}; + +textFx.converge = function(/*Object*/ args){ + args.unhide = true; + return textFx.explode(args); +}; + +textFx.disintegrate = function(/*Object*/ args){ + // summary: Split a block of text into words or letters and let them fall + // + // description: + // Returns an animation that will split the text into spans of words + // or characters that drop. + // + // args: + // args.crop: Boolean - If true, pieces will be positioned relatively rather than absolutely + // args.words: Boolean - If true, text will be split into words rather than characters + // args.interval: Float - The number of milliseconds between each piece's animation + // args.distance: Float - The number of the node's heights to drop (default is 1.5) + // args.fade: Boolean - If true, pieces fade out while in motion (default is true) + // args.random: Float - If set, pieces fall in random order. The value defines how much + // randomness is introduced + // args.reverseOrder: Boolean - If true, pieces animate in reversed order + // args.unhide: Boolean - If true, the peices fall from above and land in place + + var node = args.node = dom.byId(args.node); + var s = node.style; + + args.duration = args.duration || 1500; + args.distance = args.distance || 1.5; + args.random = args.random || 0; + if(!args.fade){ + args.fade = true; + } + var random = Math.abs(args.random); + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, pieceCoords, coords, number, numPieces){ + var pieceHeight = pieceCoords.h; + var pieceWidth = pieceCoords.w; + + var interval = args.interval || (args.duration / (1.5 * numPieces)); + var duration = (args.duration - numPieces * interval); + + var randomDelay = Math.random() * numPieces * interval; + // If distance is negative, start from the top right instead of bottom left + var uniformDelay = (args.reverseOrder || args.distance < 0) ? + (number * interval) : ((numPieces - number) * interval); + var delay = randomDelay * random + Math.max(1 - random, 0) * uniformDelay; + + // Create the animation object for the piece + var properties = {}; + if(args.unhide){ + properties.top = { + start: (parseFloat(piece.style.top) - coords.h * args.distance), + end: parseFloat(piece.style.top) + }; + if(args.fade){ + properties.opacity = {start: 0, end: 1}; + } + }else{ + properties.top = {end: (parseFloat(piece.style.top) + coords.h * args.distance)}; + if(args.fade){ + properties.opacity = {end: 0}; + } + } + var pieceAnimation = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || (args.unhide ? easingLib.sinIn : easingLib.circIn)), + properties: properties, + beforeBegin: (args.unhide ? function(){ + if(args.fade){ + // piece.style.opacity = 0; + domStyle.set(piece, "opacity", 0); + } + piece.style.position = args.crop ? "relative" : "absolute"; + piece.style.top = properties.top.start + "px"; + } : function(){ piece.style.position = args.crop ? "relative" : "absolute";}) + }); + + return pieceAnimation; + }; + + var anim = textFx._split(args); + return anim; // dojo.Animation +}; + +textFx.build = function(/*Object*/ args){ + args.unhide = true; + return textFx.disintegrate(args); +}; + +textFx.blockFadeOut = function(/*Object*/ args){ + // summary: Split a block of text into words or letters and fade them + // + // description: + // Returns an animation that will split the text into spans of words + // or characters that fade in or out. + // + // args: + // args.words: Boolean - If true, text will be split into words rather than characters + // args.interval: Float - The number of milliseconds between each piece's animation (default is 0) + // args.random: Float - If true, pieces have a random delay. The value defines how much + // randomness is introduced + // args.reverseOrder: Boolean - If true, pieces animate in reversed order + // args.unhide: Boolean - If true, the animation is reversed + + var node = args.node = dom.byId(args.node);; + var s = node.style; + + args.duration = args.duration || 1000; + args.random = args.random || 0; + var random = Math.abs(args.random); + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, pieceCoords, coords, number, numPieces){ + var interval = args.interval || (args.duration / (1.5 * numPieces)); + var duration = (args.duration - numPieces * interval); + + var randomDelay = Math.random() * numPieces * interval; + // If interval or random is negative, start from the bottom instead of top + var uniformDelay = (args.reverseOrder) ? + ((numPieces - number) * interval) : (number * interval); + var delay = randomDelay * random + Math.max(1 - random, 0) * uniformDelay; + + // Create the animation object for the piece + var pieceAnimation = baseFx.animateProperty({ + node: piece, + duration: duration, + delay: delay, + easing: (args.easing || easingLib.sinInOut), + properties: { + opacity: (args.unhide ? {start: 0, end: 1} : {end:0}) + }, + beforeBegin: (args.unhide ? function(){ domStyle.set(piece,"opacity",0); } : undefined) + }); + + return pieceAnimation; + }; + + var anim = textFx._split(args); + return anim; // dojo.Animation +}; + +textFx.blockFadeIn = function(/*Object*/ args){ + args.unhide = true; + return textFx.blockFadeOut(args); +}; + +textFx.backspace = function(/*Object*/ args){ + // summary: Split a block of text into words or letters and backspace them in sequence + // + // description: + // Returns an animation that will split the text into spans of words + // or characters that appear as if they were being backspaced (or typed) in real-time. + // + // args: + // args.interval: Float - The number of milliseconds between each piece's animation + // (default is determined by text length and args.duration); + // args.wordDelay: Integer - The number of milliseconds between each word + // (only effective when args.unhide = true) + // args.fixed: Boolean - If true, only style.opacity changes; otherwise, style.display + // changes between none and inline, adding realism (default = false) + // args.random: Float - If true, pieces have a random delay. The value defines how much + // randomness is introduced (only effective when args.unhide = true) + // args.unhide: Boolean - If true, the animation is reversed + + var node = args.node = dom.byId(args.node); + var s = node.style; + + args.words = false; + args.duration = args.duration || 2000; + args.random = args.random || 0; + var random = Math.abs(args.random); + var delay = 10; + + // Returns the animation object for each piece + args.pieceAnimation = function(piece, pieceCoords, coords, number, numPieces){ + var interval = args.interval || (args.duration / (1.5 * numPieces)), + text = ("textContent" in piece) ? piece.textContent : piece.innerText, + whitespace = text.match(/\s/g); + + if(typeof(args.wordDelay) == "undefined"){ + args.wordDelay = interval * 2; + } + + if(!args.unhide){ + delay = (numPieces - number - 1) * interval; + } + + var beforeBegin, onEnd; + + if(args.fixed){ + if(args.unhide){ + var beforeBegin = function(){ domStyle.set(piece,"opacity",0); }; + } + }else{ + if(args.unhide){ + var beforeBegin = function(){piece.style.display = "none";}; + var onEnd = function(){piece.style.display = "inline";}; + }else{ + var onEnd = function(){piece.style.display = "none";}; + } + } + + // Create the animation object for the piece + var pieceAnimation = baseFx.animateProperty({ + node: piece, + duration: 1, + delay: delay, + easing: (args.easing || easingLib.sinInOut), + properties: { + opacity: (args.unhide ? {start: 0, end: 1} : {end:0}) + }, + beforeBegin: beforeBegin, + onEnd: onEnd + }); + + if(args.unhide){ + var randomDelay = Math.random() * text.length * interval; + var wordDelay = randomDelay * random / 2 + Math.max(1 - random / 2, 0) * args.wordDelay; + + delay += randomDelay * random + Math.max(1 - random, 0) * interval * text.length + + (wordDelay * (whitespace && text.lastIndexOf(whitespace[whitespace.length-1]) == text.length - 1)); + } + + return pieceAnimation; + }; + + var anim = textFx._split(args); + return anim; // dojo.Animation +}; + +textFx.type = function(/*Object*/ args){ + args.unhide = true; + return textFx.backspace(args); +}; +return textFx; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/GanttChart.js b/js/dojo-release-1.7.2-src/dojox/gantt/GanttChart.js new file mode 100644 index 0000000..cff3fd6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/GanttChart.js @@ -0,0 +1,1265 @@ +dojo.provide("dojox.gantt.GanttChart"); + +dojo.require("dijit.Tooltip"); +dojo.require("dojox.gantt.GanttProjectItem"); +dojo.require("dojox.gantt.GanttResourceItem"); +dojo.require("dojox.gantt.TabMenu"); +dojo.require("dojo.date.locale"); + +(function(){ + dojo.declare("dojox.gantt.GanttChart", null, { + constructor: function(configuration, node){ + this.resourceChartHeight = configuration.resourceChartHeight !== undefined ? configuration.resourceChartHeight : false; + this.withResource = configuration.withResource !== undefined ? configuration.withResource : true; + this.correctError = configuration.autoCorrectError !== undefined ? configuration.autoCorrectError : false; + this.isShowConMenu = this.isContentEditable = !configuration.readOnly; + this.withTaskId = configuration.withTaskId !== undefined ? configuration.withTaskId : !configuration.readOnly; + this.animation = configuration.animation !== undefined ? configuration.animation : true; + this.saveProgramPath = configuration.saveProgramPath || "saveGanttData.php"; + this.dataFilePath = configuration.dataFilePath || "gantt_default.json"; + this.contentHeight = configuration.height || 400; + this.contentWidth = configuration.width || 600; + this.content = dojo.byId(node); + this.scrollBarWidth = 18; + this.panelTimeHeight = 102; + this.maxWidthPanelNames = 150; + this.maxWidthTaskNames = 150; + this.minWorkLength = 8; + this.heightTaskItem = 12; + this.heightTaskItemExtra = 11; + this.pixelsPerDay = 24;//px + this.hsPerDay = 8; + this.pixelsPerWorkHour = this.pixelsPerDay / this.hsPerDay;//px + this.pixelsPerHour = this.pixelsPerDay / 24;//px + this.countDays = 0; + this.totalDays = 0; + this.startDate = null; + this.initialPos = 0; + + this.contentDataHeight = 0; + this.panelTimeExpandDelta = 20; + + this.divTimeInfo = null; + this.panelNames = null; + this.panelTime = null; + this.contentData = null; + this.tabMenu = null; + + this.project = []; + this.arrProjects = []; + + this.xmlLoader = null; + this.isMoving = false; + this.isResizing = false; + this.animationNodes = []; + this.scale = 1; + this.tempDayInPixels = 0; + this.resource = null; + this.months = dojo.date.locale.getNames("months", "wide"); + this._events = []; + }, + getProject: function(id){ + return dojo.filter(this.arrProjects, function(proj){ + return proj.project.id == id; + }, this)[0]; + }, + checkPosPreviousTask: function(predTask, task){ + var widthPred = this.getWidthOnDuration(predTask.duration); + var posPred = this.getPosOnDate(predTask.startTime); + var posChild = this.getPosOnDate(task.startTime); + if((widthPred + posPred) > posChild){ + return false; + } + return true; + }, + correctPosPreviousTask: function(predTask, ctask, ctaskObj){ + var newDate = new Date(predTask.startTime); + newDate.setHours(newDate.getHours() + (predTask.duration / this.hsPerDay * 24)) + if(newDate.getHours() > 0){ + newDate.setHours(0); + newDate.setDate(newDate.getDate() + 1); + } + ctaskObj ? (ctaskObj.setStartTime(newDate, true)) : (ctask.startTime = newDate); + if(ctask.parentTask){ + if(!this.checkPosParentTask(ctask.parentTask, ctask)){ + var newDate2 = new Date(ctask.parentTask.startTime); + newDate2.setHours(newDate2.getHours() + (ctask.parentTask.duration / this.hsPerDay * 24)) + ctask.duration = parseInt((parseInt((newDate2 - ctask.startTime) / (1000 * 60 * 60))) * this.hsPerDay / 24); + } + } + }, + correctPosParentTask: function(parentTask, ctask){ + if(!ctask.previousTask){ + if(parentTask.startTime > ctask.startTime){ + ctask.startTime = new Date(parentTask.startTime); + } + if(!this.checkPosParentTask(parentTask, ctask)){ + ctask.duration = parentTask.duration; + } + }else{ + this.correctPosPreviousTask(ctask.previousTask, ctask); + } + }, + checkPosParentTaskInTree: function(parentTask){ + var exception = false; + for(var i = 0; i < parentTask.cldTasks.length; i++){ + var pcTask = parentTask.cldTasks[i]; + if(!this.checkPosParentTask(parentTask, pcTask)){ + if(!this.correctError){ + return true; + }else{ + this.correctPosParentTask(parentTask, pcTask); + } + } + if(parentTask.startTime > pcTask.startTime){ + if(!this.correctError){ + return true; + }else{ + this.correctPosParentTask(parentTask, pcTask); + } + } + if(pcTask.cldTasks.length > 0){ + exception = this.checkPosParentTaskInTree(pcTask); + } + } + return exception; + }, + setPreviousTask: function(project){ + var exception = false; + for(var i = 0; i < project.parentTasks.length; i++){ + var ppTask = project.parentTasks[i]; + if(ppTask.previousTaskId){ + ppTask.previousTask = project.getTaskById(ppTask.previousTaskId); + if(!ppTask.previousTask){ + if(!this.correctError){ + return true; + } + } + ppTask.previousTask.cldPreTasks.push(ppTask); + } + if(ppTask.previousTask){ + if(!this.checkPosPreviousTask(ppTask.previousTask, ppTask)){ + if(!this.correctError){ + return true; + }else{ + this.correctPosPreviousTask(ppTask.previousTask, ppTask); + } + } + } + exception = this.setPreviousTaskInTree(ppTask); + } + return exception; + }, + setPreviousTaskInTree: function(parentTask){ + var exception = false; + for(var i = 0; i < parentTask.cldTasks.length; i++){ + var pcTask = parentTask.cldTasks[i]; + if(pcTask.previousTaskId){ + pcTask.previousTask = parentTask.project.getTaskById(pcTask.previousTaskId); + if(!pcTask.previousTask){ + if(!this.correctError){ + return true; + } + } + if(!this.checkPosPreviousTask(pcTask.previousTask, pcTask)){ + if(!this.correctError){ + return true; + }else{ + this.correctPosPreviousTask(pcTask.previousTask, pcTask); + } + } + pcTask.previousTask.cldPreTasks.push(pcTask); + } + + if(pcTask.cldTasks.length > 0){ + exception = this.setPreviousTaskInTree(pcTask); + } + } + return exception; + }, + checkPosParentTask: function(parentTask, task){ + var widthParent = this.getWidthOnDuration(parentTask.duration); + var posParent = this.getPosOnDate(parentTask.startTime); + var posChild = this.getPosOnDate(task.startTime); + var widthChild = this.getWidthOnDuration(task.duration); + return (widthParent + posParent) >= (posChild + widthChild); + }, + addProject: function(projectItem){ + this.project.push(projectItem); + }, + deleteProject: function(id){ + var project = this.getProject(id); + if(project){ + if(project.arrTasks.length > 0){ + while(project.arrTasks.length > 0){ + project.deleteChildTask(project.arrTasks[0]); + } + } + var rowHeight = this.heightTaskItemExtra + this.heightTaskItem; + project.nextProject && project.shiftNextProject(project, -rowHeight); //rowHeight: 23 + this.project = dojo.filter(this.project, function(proj){ + return proj.id != project.project.id; + }, this); + if((project.previousProject) && (project.nextProject)){ + var previousProject = project.previousProject; + previousProject.nextProject = project.nextProject; + } + if((project.previousProject) && !(project.nextProject)){ + var previousProject = project.previousProject; + previousProject.nextProject = null; + } + if(!(project.previousProject) && (project.nextProject)){ + var nextProject = project.nextProject; + nextProject.previousProject = null; + } + for(var i = 0; i < this.arrProjects.length; i++){ + if(this.arrProjects[i].project.id == id){ + this.arrProjects.splice(i, 1); + } + } + project.projectItem[0].parentNode.removeChild(project.projectItem[0]); + project.descrProject.parentNode.removeChild(project.descrProject); + project.projectNameItem.parentNode.removeChild(project.projectNameItem); + this.contentDataHeight -= this.heightTaskItemExtra + this.heightTaskItem; + if(this.project.length == 0){ + var d = new Date(this.startDate); + var t = new Date(d.setDate(d.getDate() + 1)); + var pi = new dojox.gantt.GanttProjectItem({ + id: 1, + name: "New Project", + startDate: t + }); + this.project.push(pi); + var project = new dojox.gantt.GanttProjectControl(this, pi); + project.create(); + this.arrProjects.push(project); + this.contentDataHeight += this.heightTaskItemExtra + this.heightTaskItem; + } + this.checkPosition(); + } + }, + insertProject: function(id, name, startDate){ + if(this.startDate >= startDate){ + return false; + } + if(this.getProject(id)){ + return false; + } + this.checkHeighPanelTasks(); + var project = new dojox.gantt.GanttProjectItem({ + id: id, + name: name, + startDate: startDate + }); + this.project.push(project); + var _project = new dojox.gantt.GanttProjectControl(this, project); + for(var i = 0; i < this.arrProjects.length; i++){ + var curProject = this.arrProjects[i], + preProject = this.arrProjects[i-1], + nextProject = this.arrProjects[i+1]; + if(startDate < curProject.project.startDate){ + this.arrProjects.splice(i, 0, _project); + if(i > 0){ + _project.previousProject = preProject; + preProject.nextProject = _project; + } + if(i + 1 <= this.arrProjects.length){ + _project.nextProject = nextProject; + nextProject.previousProject = _project; + var rowHeight = this.heightTaskItem + this.heightTaskItemExtra; + _project.shiftNextProject(_project, rowHeight); + } + _project.create(); + _project.hideDescrProject(); + this.checkPosition(); + return _project; + } + } + if(this.arrProjects.length > 0){ + this.arrProjects[this.arrProjects.length - 1].nextProject = _project; + _project.previousProject = this.arrProjects[this.arrProjects.length - 1]; + } + this.arrProjects.push(_project); + _project.create(); + _project.hideDescrProject(); + this.checkPosition(); + return _project; + }, + openTree: function(parentTask){ + var lastParentTask = this.getLastCloseParent(parentTask); + this.openNode(lastParentTask); + parentTask.taskItem.id != lastParentTask.taskItem.id && this.openTree(parentTask); + }, + openNode: function(parentTask){ + if(!parentTask.isExpanded){ + dojo.removeClass(parentTask.cTaskNameItem[2], "ganttImageTreeExpand"); + dojo.addClass(parentTask.cTaskNameItem[2], "ganttImageTreeCollapse"); + parentTask.isExpanded = true; + parentTask.shiftCurrentTasks(parentTask, parentTask.hideTasksHeight); + parentTask.showChildTasks(parentTask, parentTask.isExpanded); + parentTask.hideTasksHeight = 0; + } + }, + getLastCloseParent: function(task){ + if(task.parentTask){ + if((!task.parentTask.isExpanded) || + (task.parentTask.cTaskNameItem[2].style.display == "none")){ + return this.getLastCloseParent(task.parentTask); + }else{ + return task; + } + }else{ + return task; + } + }, + getProjectItemById: function(id){ + return dojo.filter(this.project, function(proj){ + return proj.id == id; + }, this)[0]; + }, + clearAll: function(){ + this.contentDataHeight = 0; + this.startDate = null; + this.clearData(); + this.clearItems(); + this.clearEvents(); + }, + clearEvents: function(){ + dojo.forEach(this._events, dojo.disconnect); + this._events = []; + }, + clearData: function(){ + this.project = []; + this.arrProjects = []; + }, + clearItems: function(){ + this.contentData.removeChild(this.contentData.firstChild); + this.contentData.appendChild(this.createPanelTasks()); + this.panelNames.removeChild(this.panelNames.firstChild); + this.panelNames.appendChild(this.createPanelNamesTasks()); + this.panelTime.removeChild(this.panelTime.firstChild); + }, + buildUIContent: function(){ + this.project.sort(this.sortProjStartDate); + this.startDate = this.getStartDate(); + this.panelTime.appendChild(this.createPanelTime()); + for(var i = 0; i < this.project.length; i++){ + var proj = this.project[i]; + for(var k = 0; k < proj.parentTasks.length; k++){ + var ppTask = proj.parentTasks[k]; + if(ppTask.startTime){ + this.setStartTimeChild(ppTask); + }else{ + return; + } + if(this.setPreviousTask(proj)){ + return; + } + } + for(var k = 0; k < proj.parentTasks.length; k++){ + var ppTask = proj.parentTasks[k]; + if(ppTask.startTime < proj.startDate){ + return; + } + if(this.checkPosParentTaskInTree(ppTask)) return; + } + this.sortTasksByStartTime(proj); + } + + for(var i = 0; i < this.project.length; i++){ + var proj = this.project[i]; + var project = new dojox.gantt.GanttProjectControl(this, proj); + if(this.arrProjects.length > 0){ + var previousProject = this.arrProjects[this.arrProjects.length - 1]; + project.previousProject = previousProject; + previousProject.nextProject = project; + } + project.create(); + this.checkHeighPanelTasks(); + this.arrProjects.push(project); + this.createTasks(project); + } + this.resource && this.resource.reConstruct(); + this.postLoadData(); + this.postBindEvents(); + }, + loadJSONData: function(filename){ + var _this = this; + _this.dataFilePath = filename || _this.dataFilePath; + dojo.xhrGet({ + url: _this.dataFilePath, + sync: true, + load: function(text, ioArgs){ + _this.loadJSONString(text); + _this.buildUIContent(); + alert("Successfully! Loaded data from: " + _this.dataFilePath); + }, + error: function(err, ioArgs){ + alert("Failed! Load error: " + _this.dataFilePath); + } + }); + }, + loadJSONString: function(content){ + //load data + if(!content){ return; } + this.clearAll(); + var jsonObj = dojo.fromJson(content); + + var items = jsonObj.items; + dojo.forEach(items, function(pItem){ + var startDate = pItem.startdate.split("-"); + var project = new dojox.gantt.GanttProjectItem({ + id: pItem.id, + name: pItem.name, + startDate: new Date(startDate[0], (parseInt(startDate[1]) - 1), startDate[2]) + }); + var tItems = pItem.tasks; + dojo.forEach(tItems, function(tItem){ + var id = tItem.id, + name = tItem.name, + starttime = tItem.starttime.split("-"); + duration = tItem.duration, + percentage = tItem.percentage, + previousTaskId = tItem.previousTaskId, + taskOwner = tItem.taskOwner; + + var task = new dojox.gantt.GanttTaskItem({ + id: id, + name: name, + startTime: new Date(starttime[0], (parseInt(starttime[1]) - 1), starttime[2]), + duration: duration, + percentage: percentage, + previousTaskId: previousTaskId, + taskOwner: taskOwner + }); + var ctItems = tItem.children; + if(ctItems.length != 0){ + this.buildChildTasksData(task, ctItems); + } + project.addTask(task); + }, this); + this.addProject(project); + }, this); + }, + buildChildTasksData: function(parentTask, childTaskItems){ + childTaskItems && dojo.forEach(childTaskItems, function(ctItem){ + var id = ctItem.id, + name = ctItem.name, + starttime = ctItem.starttime.split("-"), + duration = ctItem.duration, + percentage = ctItem.percentage, + previousTaskId = ctItem.previousTaskId, + taskOwner = ctItem.taskOwner; + + var task = new dojox.gantt.GanttTaskItem({ + id: id, + name: name, + startTime: new Date(starttime[0], (parseInt(starttime[1]) - 1), starttime[2]), + duration: duration, + percentage: percentage, + previousTaskId: previousTaskId, + taskOwner: taskOwner + }); + task.parentTask = parentTask; + parentTask.addChildTask(task); + + var ctItems = ctItem.children; + if(ctItems.length != 0){ + this.buildChildTasksData(task, ctItems); + } + }, this); + }, + getJSONData: function(){ + var jsonObj = {identifier: 'id', items: []}; + dojo.forEach(this.project, function(proj){ + var project = { + id: proj.id, + name: proj.name, + startdate: proj.startDate.getFullYear() + '-' + (proj.startDate.getMonth() + 1) + '-' + proj.startDate.getDate(), + tasks: [] + }; + jsonObj.items.push(project); + dojo.forEach(proj.parentTasks, function(pTask){ + var task = { + id: pTask.id, + name: pTask.name, + starttime: pTask.startTime.getFullYear() + '-' + (pTask.startTime.getMonth() + 1) + '-' + pTask.startTime.getDate(), + duration: pTask.duration, + percentage: pTask.percentage, + previousTaskId: (pTask.previousTaskId || ''), + taskOwner: (pTask.taskOwner || ''), + children: this.getChildTasksData(pTask.cldTasks) + }; + project.tasks.push(task); + }, this); + }, this); + return jsonObj; + }, + getChildTasksData: function(childTasks){ + var cTaskObj = []; + childTasks && childTasks.length > 0 && dojo.forEach(childTasks, function(childTask){ + var ctask = { + id: childTask.id, + name: childTask.name, + starttime: childTask.startTime.getFullYear() + '-' + (childTask.startTime.getMonth() + 1) + '-' + childTask.startTime.getDate(), + duration: childTask.duration, + percentage: childTask.percentage, + previousTaskId: (childTask.previousTaskId || ''), + taskOwner: (childTask.taskOwner || ''), + children: this.getChildTasksData(childTask.cldTasks) + }; + cTaskObj.push(ctask); + }, this); + return cTaskObj; + }, + saveJSONData: function(fileName){ + var _this = this; + _this.dataFilePath = (fileName && dojo.trim(fileName).length > 0) ? fileName : this.dataFilePath; + try { + var td = dojo.xhrPost({ + url: _this.saveProgramPath, + content: {filename: _this.dataFilePath, data: dojo.toJson(_this.getJSONData())}, + handle: function(res, ioArgs){ + if((dojo._isDocumentOk(ioArgs.xhr))|| + (ioArgs.xhr.status == 405) + ){ + alert("Successfully! Saved data to " + _this.dataFilePath); + }else{ + alert("Failed! Saved error"); + } + } + }); + } catch (e){ + alert("exception: " + e.message); + } + }, + sortTaskStartTime: function(a, b){ + return a.startTime < b.startTime ? -1 : (a.startTime > b.startTime ? 1 : 0); + }, + sortProjStartDate: function(a, b){ + return a.startDate < b.startDate ? -1 : (a.startDate > b.startDate ? 1 : 0); + }, + setStartTimeChild: function(parentTask){ + dojo.forEach(parentTask.cldTasks, function(pcTask){ + if(!pcTask.startTime){ + pcTask.startTime = parentTask.startTime; + } + if(pcTask.cldTasks.length != 0){ + this.setStartTimeChild(pcTask); + } + }, this); + }, + createPanelTasks: function(){ + var panelTask = dojo.create("div", { + className: "ganttTaskPanel" + }); + dojo.style(panelTask, { + height: (this.contentHeight - this.panelTimeHeight - this.scrollBarWidth) + "px" + }); + return panelTask; + }, + refreshParams: function(pixelsPerDay){ + this.pixelsPerDay = pixelsPerDay; + this.pixelsPerWorkHour = this.pixelsPerDay / this.hsPerDay; + this.pixelsPerHour = this.pixelsPerDay / 24; + }, + createPanelNamesTasksHeader: function(){ + var _this = this; + var panelHeader = dojo.create("div", {className: "ganttPanelHeader"}); + var tblHeader = dojo.create("table", { + cellPadding: "0px", + border: "0px", + cellSpacing: "0px", + bgColor: "#FFFFFF", + className: "ganttToolbar" + }, panelHeader); + var firstRow = tblHeader.insertRow(tblHeader.rows.length); + var secondRow = tblHeader.insertRow(tblHeader.rows.length); + var thirdRow = tblHeader.insertRow(tblHeader.rows.length); + var forthRow = tblHeader.insertRow(tblHeader.rows.length); + var zoomIn = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttToolbarZoomIn" + }, firstRow); + var zoomInFn = dojo.hitch(this, function(){ + if(this.scale * 2 > 5){return;} + this.scale = this.scale * 2; + this.switchTeleMicroView(this.pixelsPerDay * this.scale); + }); + dojo.disconnect(this.zoomInClickEvent); + this.zoomInClickEvent = dojo.connect(zoomIn, "onclick", this, zoomInFn); + //a11y support + dojo.disconnect(this.zoomInKeyEvent); + this.zoomInKeyEvent = dojo.connect(zoomIn, "onkeydown", this, function(e){ + if(e.keyCode != dojo.keys.ENTER){return;} + zoomInFn(); + }); + dojo.attr(zoomIn, "tabIndex", 0); + var zoomOut = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttToolbarZoomOut" + }, firstRow); + var zoomOutFn = dojo.hitch(this, function(){ + if(this.scale * 0.5 < 0.2){return;} + this.scale = this.scale * 0.5; + this.switchTeleMicroView(this.pixelsPerDay * this.scale); + }); + dojo.disconnect(this.zoomOutClickEvent); + this.zoomOutClickEvent = dojo.connect(zoomOut, "onclick", this, zoomOutFn); + //a11y support + dojo.disconnect(this.zoomOutKeyEvent); + this.zoomOutKeyEvent = dojo.connect(zoomOut, "onkeydown", this, function(e){ + if(e.keyCode != dojo.keys.ENTER){return;} + zoomOutFn(); + }); + dojo.attr(zoomOut, "tabIndex", 0); + var micro = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttToolbarMicro" + }, secondRow); + dojo.disconnect(this.microClickEvent); + this.microClickEvent = dojo.connect(micro, "onclick", this, dojo.hitch(this, this.refresh, this.animation?15:1, 0, 2)); + //a11y support + dojo.disconnect(this.microKeyEvent); + this.microKeyEvent = dojo.connect(micro, "onkeydown", this, function(e){ + if(e.keyCode != dojo.keys.ENTER){return;} + micro.blur(); + this.refresh(this.animation?15:1, 0, 2); + }); + dojo.attr(micro, "tabIndex", 0); + var tele = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttToolbarTele" + }, secondRow); + dojo.disconnect(this.teleClickEvent); + this.teleClickEvent = dojo.connect(tele, "onclick", this, dojo.hitch(this, this.refresh, this.animation?15:1, 0, 0.5)); + //a11y support + dojo.disconnect(this.teleKeyEvent); + this.teleKeyEvent = dojo.connect(tele, "onkeydown", this, function(e){ + if(e.keyCode != dojo.keys.ENTER){return;} + tele.blur(); + this.refresh(this.animation?15:1, 0, 0.5); + }); + dojo.attr(tele, "tabIndex", 0); + var save = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttToolbarSave" + }, thirdRow); + dojo.disconnect(this.saveClickEvent); + this.saveClickEvent = dojo.connect(save, "onclick", this, dojo.hitch(this, this.saveJSONData, "")); + //a11y support + dojo.disconnect(this.saveKeyEvent); + this.saveKeyEvent = dojo.connect(save, "onkeydown", this, function(e){ + if(e.keyCode != dojo.keys.ENTER){return;} + this.saveJSONData(""); + }); + dojo.attr(save, "tabIndex", 0); + var load = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttToolbarLoad" + }, thirdRow); + dojo.disconnect(this.loadClickEvent); + this.loadClickEvent = dojo.connect(load, "onclick", this, dojo.hitch(this, this.loadJSONData, "")); + //a11y support + dojo.disconnect(this.loadKeyEvent); + this.loadKeyEvent = dojo.connect(load, "onkeydown", this, function(e){ + if(e.keyCode != dojo.keys.ENTER){return;} + this.loadJSONData(""); + }); + dojo.attr(load, "tabIndex", 0); + //action popup description + var actions = [zoomIn, zoomOut, micro, tele, save, load], + titles = ["Enlarge timeline", "Shrink timeline", "Zoom in time zone(microscope view)", "Zoom out time zone(telescope view)", + "Save gantt data to json file", "Load gantt data from json file"]; + dojo.forEach(actions, function(action, i){ + var title = titles[i]; + var tooltipShow = function(){ + dojo.addClass(action, "ganttToolbarActionHover"); + dijit.showTooltip(title, action, ["above", "below"]); + }; + action.onmouseover = tooltipShow; + //a11y support + action.onfocus = tooltipShow; + var tooltipHide = function(){ + dojo.removeClass(action, "ganttToolbarActionHover"); + action && dijit.hideTooltip(action); + }; + action.onmouseout = tooltipHide; + action.onblur = tooltipHide; + }, this); + return panelHeader; + }, + createPanelNamesTasks: function(){ + var panelNameTask = dojo.create("div", { + innerHTML: " ", + className: "ganttPanelNames" + }); + dojo.style(panelNameTask, { + height: (this.contentHeight - this.panelTimeHeight - this.scrollBarWidth) + "px", + width: this.maxWidthPanelNames + "px" + }); + return panelNameTask; + }, + createPanelTime: function(){ + var panelTime = dojo.create("div", {className: "ganttPanelTime"}); + var tblTime = dojo.create("table", { + cellPadding: "0px", + border: "0px", + cellSpacing: "0px", + bgColor: "#FFFFFF", + className: "ganttTblTime" + }, panelTime); + this.totalDays = this.countDays; + //year + var newYearRow = tblTime.insertRow(tblTime.rows.length), newYear = oldYear = new Date(this.startDate).getFullYear(), ycount = 0; + for(var i = 0; i < this.countDays; i++, ycount++){ + var date = new Date(this.startDate); + date.setDate(date.getDate() + i); + newYear = date.getFullYear(); + if(newYear != oldYear){ + this.addYearInPanelTime(newYearRow, ycount, oldYear); + ycount = 0; + oldYear = newYear; + } + } + this.addYearInPanelTime(newYearRow, ycount, newYear); + dojo.style(newYearRow, "display", "none"); + //month + var newMonthRow = tblTime.insertRow(tblTime.rows.length), newMonth = oldMonth = new Date(this.startDate).getMonth(), mcount = 0, lastYear = 1970; + for(var i = 0; i < this.countDays; i++, mcount++){ + var date = new Date(this.startDate); + date.setDate(date.getDate() + i); + newMonth = date.getMonth(); + lastYear = date.getFullYear(); + if(newMonth != oldMonth){ + this.addMonthInPanelTime(newMonthRow, mcount, oldMonth, lastYear); + mcount = 0; + oldMonth = newMonth; + } + } + this.addMonthInPanelTime(newMonthRow, mcount, newMonth, lastYear); + //week + var newWeekRow = tblTime.insertRow(tblTime.rows.length), newWeek = oldWeek = dojo.date.locale._getWeekOfYear(new Date(this.startDate)), mcount = 0; + for(var i = 0; i < this.countDays; i++, mcount++){ + var date = new Date(this.startDate); + date.setDate(date.getDate() + i); + newWeek = dojo.date.locale._getWeekOfYear(date); + if(newWeek != oldWeek){ + this.addWeekInPanelTime(newWeekRow, mcount, oldWeek); + mcount = 0; + oldWeek = newWeek; + } + } + this.addWeekInPanelTime(newWeekRow, mcount, newWeek); + //day + var newDayRow = tblTime.insertRow(tblTime.rows.length); + for(var i = 0; i < this.countDays; i++){ + this.addDayInPanelTime(newDayRow); + } + //hour + var newHourRow = tblTime.insertRow(tblTime.rows.length); + for(var i = 0; i < this.countDays; i++){ + this.addHourInPanelTime(newHourRow); + } + dojo.style(newHourRow, "display", "none"); + return panelTime; + }, + adjustPanelTime: function(width){ + var maxEndPos = dojo.map(this.arrProjects, function(project){ + return (parseInt(project.projectItem[0].style.left) + parseInt(project.projectItem[0].firstChild.style.width) + + project.descrProject.offsetWidth + this.panelTimeExpandDelta); + }, this).sort(function(a,b){return b-a})[0]; + if(this.maxTaskEndPos != maxEndPos){ + //reset panel time + var prows = this.panelTime.firstChild.firstChild.rows; + for(var i = 0; i <= 4; i++){//prows.length + this.removeCell(prows[i]); + }; + var countDays = Math.round((maxEndPos+this.panelTimeExpandDelta) / this.pixelsPerDay); + this.totalDays = countDays; + //year + var newYear = oldYear = new Date(this.startDate).getFullYear(), ycount = 0; + for(var i = 0; i < countDays; i++, ycount++){ + var date = new Date(this.startDate); + date.setDate(date.getDate() + i); + newYear = date.getFullYear(); + if(newYear != oldYear){ + this.addYearInPanelTime(prows[0], ycount, oldYear); + ycount = 0; + oldYear = newYear; + } + } + this.addYearInPanelTime(prows[0], ycount, newYear); + //month + var newMonth = oldMonth = new Date(this.startDate).getMonth(), mcount = 0, lastYear = 1970; + for(var i = 0; i < countDays; i++, mcount++){ + var date = new Date(this.startDate); + date.setDate(date.getDate() + i); + newMonth = date.getMonth(); + lastYear = date.getFullYear(); + if(newMonth != oldMonth){ + this.addMonthInPanelTime(prows[1], mcount, oldMonth, lastYear); + mcount = 0; + oldMonth = newMonth; + } + } + this.addMonthInPanelTime(prows[1], mcount, newMonth, lastYear); + //week + var newWeek = oldWeek = dojo.date.locale._getWeekOfYear(new Date(this.startDate)), mcount = 0; + for(var i = 0; i < countDays; i++, mcount++){ + var date = new Date(this.startDate); + date.setDate(date.getDate() + i); + newWeek = dojo.date.locale._getWeekOfYear(date); + if(newWeek != oldWeek){ + this.addWeekInPanelTime(prows[2], mcount, oldWeek); + mcount = 0; + oldWeek = newWeek; + } + } + this.addWeekInPanelTime(prows[2], mcount, newWeek); + //day + for(var i = 0; i < countDays; i++){ + this.addDayInPanelTime(prows[3]); + } + //hour + for(var i = 0; i < countDays; i++){ + this.addHourInPanelTime(prows[4]); + } + this.panelTime.firstChild.firstChild.style.width = this.pixelsPerDay * (prows[3].cells.length) + "px"; + this.contentData.firstChild.style.width = this.pixelsPerDay * (prows[3].cells.length) + "px"; + this.maxTaskEndPos = maxEndPos; + } + }, + addYearInPanelTime: function(row, count, year){ + var data = "Year " + year; + var newCell = dojo.create("td", { + colSpan: count, + align: "center", + vAlign: "middle", + className: "ganttYearNumber", + innerHTML: this.pixelsPerDay * count > 20 ? data : "", + innerHTMLData: data + }, row); + dojo.style(newCell, "width", (this.pixelsPerDay * count) + "px"); + }, + addMonthInPanelTime: function(row, count, month, year){ + var data = this.months[month] + (year ? " of " + year : ""); + var newCell = dojo.create("td", { + colSpan: count, + align: "center", + vAlign: "middle", + className: "ganttMonthNumber", + innerHTML: this.pixelsPerDay * count > 30 ? data : "", + innerHTMLData: data + }, row); + dojo.style(newCell, "width", (this.pixelsPerDay * count) + "px"); + }, + addWeekInPanelTime: function(row, count, week){ + var data = "Week " + week; + var newCell = dojo.create("td", { + colSpan: count, + align: "center", + vAlign: "middle", + className: "ganttWeekNumber", + innerHTML: this.pixelsPerDay * count > 20 ? data : "", + innerHTMLData: data + }, row); + dojo.style(newCell, "width", (this.pixelsPerDay * count) + "px"); + }, + addDayInPanelTime: function(row){ + var date = new Date(this.startDate); + date.setDate(date.getDate() + parseInt(row.cells.length)); + var newCell = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttDayNumber", + innerHTML: this.pixelsPerDay > 20 ? date.getDate() : "", + innerHTMLData: String(date.getDate()), + data: row.cells.length + }, row); + dojo.style(newCell, "width", this.pixelsPerDay + "px"); + (date.getDay() >= 5) && dojo.addClass(newCell, "ganttDayNumberWeekend"); + this._events.push( + dojo.connect(newCell, "onmouseover", this, function(event){ + var dayTime = event.target || event.srcElement; + var date = new Date(this.startDate.getTime()); + date.setDate(date.getDate() + parseInt(dojo.attr(dayTime, "data"))); + dijit.showTooltip(date.getFullYear() + "." + (date.getMonth() + 1) + "." + date.getDate(), newCell, ["above", "below"]); + }) + ); + this._events.push( + dojo.connect(newCell, "onmouseout", this, function(event){ + var dayTime = event.target || event.srcElement; + dayTime && dijit.hideTooltip(dayTime); + }) + ); + }, + addHourInPanelTime: function(row){ + var newCell = dojo.create("td", { + align: "center", + vAlign: "middle", + className: "ganttHourNumber", + data: row.cells.length + }, row); + dojo.style(newCell, "width", this.pixelsPerDay + "px"); + + var hourTable = dojo.create("table", { + cellPadding: "0", + cellSpacing: "0" + }, newCell); + var newRow = hourTable.insertRow(hourTable.rows.length); + for(var i = 0; i < this.hsPerDay; i++){ + var hourTD = dojo.create("td", { + className: "ganttHourClass" + }, newRow); + dojo.style(hourTD, "width", (this.pixelsPerDay / this.hsPerDay) + "px"); + dojo.attr(hourTD, "innerHTMLData", String(9 + i)); + if(this.pixelsPerDay / this.hsPerDay > 5){ + dojo.attr(hourTD, "innerHTML", String(9 + i)); + } + dojo.addClass(hourTD, i <= 3?"ganttHourNumberAM":"ganttHourNumberPM"); + } + }, + incHeightPanelTasks: function(height){ + var containerTasks = this.contentData.firstChild; + containerTasks.style.height = parseInt(containerTasks.style.height) + height + "px"; + }, + incHeightPanelNames: function(height){ + var containerNames = this.panelNames.firstChild; + containerNames.style.height = parseInt(containerNames.style.height) + height + "px"; + }, + checkPosition: function(){ + dojo.forEach(this.arrProjects, function(project){ + dojo.forEach(project.arrTasks, function(task){ + task.checkPosition(); + }, this); + }, this); + }, + checkHeighPanelTasks: function(){ + this.contentDataHeight += this.heightTaskItemExtra + this.heightTaskItem; + if((parseInt(this.contentData.firstChild.style.height) <= this.contentDataHeight)){ + this.incHeightPanelTasks(this.heightTaskItem + this.heightTaskItemExtra); + this.incHeightPanelNames(this.heightTaskItem + this.heightTaskItemExtra); + } + }, + sortTasksByStartTime: function(project){ + project.parentTasks.sort(this.sortTaskStartTime); + for(var i = 0; i < project.parentTasks.length; i++){ + project.parentTasks[i] = this.sortChildTasks(project.parentTasks[i]); + } + }, + sortChildTasks: function(parenttask){ + parenttask.cldTasks.sort(this.sortTaskStartTime); + for(var i = 0; i < parenttask.cldTasks.length; i++){ + if(parenttask.cldTasks[i].cldTasks.length > 0) this.sortChildTasks(parenttask.cldTasks[i]); + } + return parenttask; + }, + refresh: function(count, current, multi){ + //return if no task items + if(this.arrProjects.length <= 0){return;} + if(this.arrProjects[0].arrTasks.length <= 0){return;} + //Show panel of names + if(!count || current > count){ + this.refreshController(); + if(this.resource){ + this.resource.refresh(); + } + this.tempDayInPixels = 0; + this.panelNameHeadersCover && dojo.style(this.panelNameHeadersCover, "display", "none"); + return; + } + if(this.tempDayInPixels == 0){ + this.tempDayInPixels = this.pixelsPerDay; + } + this.panelNameHeadersCover && dojo.style(this.panelNameHeadersCover, "display", ""); + var dip = this.tempDayInPixels + this.tempDayInPixels * (multi - 1) * Math.pow((current / count), 2); + this.refreshParams(dip); + dojo.forEach(this.arrProjects, function(project){ + dojo.forEach(project.arrTasks, function(task){ + task.refresh(); + }, this); + project.refresh(); + }, this); + setTimeout(dojo.hitch(this, function(){ + this.refresh(count, ++current, multi); + }), 15); + }, + switchTeleMicroView: function(dip){ + var plChild = this.panelTime.firstChild.firstChild; + for(var i = 0; i < 5; i++){//0:Y 1:M 2:W 3:D 4:H + if(dip > 40){ + dojo.style(plChild.rows[i], "display", (i==0||i==1)?"none":""); + }else if(dip < 20){ + dojo.style(plChild.rows[i], "display", (i==2||i==4)?"none":""); + }else{ + dojo.style(plChild.rows[i], "display", (i==0||i==4)?"none":""); + } + } + }, + refreshController: function(){ + this.contentData.firstChild.style.width = Math.max(1200, this.pixelsPerDay * this.totalDays) + "px"; + this.panelTime.firstChild.style.width = this.pixelsPerDay * this.totalDays + "px"; + this.panelTime.firstChild.firstChild.style.width = this.pixelsPerDay * this.totalDays + "px"; + this.switchTeleMicroView(this.pixelsPerDay); + dojo.forEach(this.panelTime.firstChild.firstChild.rows, function(row){ + dojo.forEach(row.childNodes, function(td){ + var cs = parseInt(dojo.attr(td, "colSpan") || 1); + var idata = dojo.trim(dojo.attr(td, "innerHTMLData")||""); + if(idata.length > 0){ + dojo.attr(td, "innerHTML", this.pixelsPerDay * cs < 20 ? "" : idata); + }else{ + dojo.forEach(td.firstChild.rows[0].childNodes, function(td){ + var sdata = dojo.trim(dojo.attr(td, "innerHTMLData")||""); + dojo.attr(td, "innerHTML", this.pixelsPerDay / this.hsPerDay > 10 ? sdata : ""); + }, this); + } + if(cs == 1){ + dojo.style(td, "width", (this.pixelsPerDay*cs) + "px"); + if(idata.length <= 0){ + dojo.forEach(td.firstChild.rows[0].childNodes, function(td){ + dojo.style(td, "width", (this.pixelsPerDay*cs / this.hsPerDay) + "px"); + }, this); + } + } + }, this); + }, this); + }, + init: function(){ + this.startDate = this.getStartDate(); + dojo.style(this.content, { + width: this.contentWidth + "px", + height: this.contentHeight + "px" + }); + //create Table + this.tableControl = dojo.create("table", { + cellPadding: "0", + cellSpacing: "0", + className: "ganttTabelControl" + }); + var newRowTblControl = this.tableControl.insertRow(this.tableControl.rows.length); + //Add to content Table + this.content.appendChild(this.tableControl); + this.countDays = this.getCountDays(); + //Creation panel of time + this.panelTime = dojo.create("div", {className: "ganttPanelTimeContainer"}); + dojo.style(this.panelTime, "height", this.panelTimeHeight + "px"); + this.panelTime.appendChild(this.createPanelTime()); + //Creation panel contentData + this.contentData = dojo.create("div", {className: "ganttContentDataContainer"}); + dojo.style(this.contentData, "height", (this.contentHeight - this.panelTimeHeight) + "px"); + this.contentData.appendChild(this.createPanelTasks()); + //Creation panel of names + var newCellTblControl = dojo.create("td", { + vAlign: "top" + }); + //Creation panel of task header + this.panelNameHeaders = dojo.create("div", {className: "ganttPanelNameHeaders"}, newCellTblControl); + dojo.style(this.panelNameHeaders, { + height: this.panelTimeHeight + "px", + width: this.maxWidthPanelNames + "px" + }); + this.panelNameHeaders.appendChild(this.createPanelNamesTasksHeader()); + this.panelNames = dojo.create("div", {className: "ganttPanelNamesContainer"}, newCellTblControl); + this.panelNames.appendChild(this.createPanelNamesTasks()); + newRowTblControl.appendChild(newCellTblControl); + //add to control contentData and dataTime + newCellTblControl = dojo.create("td", { + vAlign: "top" + }); + var divCell = dojo.create("div", {className: "ganttDivCell"}); + divCell.appendChild(this.panelTime); + divCell.appendChild(this.contentData); + newCellTblControl.appendChild(divCell); + newRowTblControl.appendChild(newCellTblControl); + //Show panel of names + dojo.style(this.panelNames, "height", (this.contentHeight - this.panelTimeHeight - this.scrollBarWidth) + "px"); + dojo.style(this.panelNames, "width", this.maxWidthPanelNames + "px"); + dojo.style(this.contentData, "width", (this.contentWidth - this.maxWidthPanelNames) + "px"); + dojo.style(this.contentData.firstChild, "width", this.pixelsPerDay * this.countDays + "px"); + dojo.style(this.panelTime, "width", (this.contentWidth - this.maxWidthPanelNames - this.scrollBarWidth) + "px"); + dojo.style(this.panelTime.firstChild, "width", this.pixelsPerDay * this.countDays + "px"); + if(this.isShowConMenu){ + this.tabMenu = new dojox.gantt.TabMenu(this); + } + var _this = this; + this.contentData.onscroll = function(){ + _this.panelTime.scrollLeft = this.scrollLeft; + if(_this.panelNames){ + _this.panelNames.scrollTop = this.scrollTop; + if(_this.isShowConMenu){ + _this.tabMenu.hide(); + } + } + if(_this.resource){ + _this.resource.contentData.scrollLeft = this.scrollLeft; + } + } + this.project.sort(this.sortProjStartDate); + for(var i = 0; i < this.project.length; i++){ + var proj = this.project[i]; + for(var k = 0; k < proj.parentTasks.length; k++){ + var ppTask = proj.parentTasks[k]; + if(!ppTask.startTime){ + ppTask.startTime = proj.startDate; + } + this.setStartTimeChild(ppTask); + if(this.setPreviousTask(proj)){ + return; + } + } + for(var k = 0; k < proj.parentTasks.length; k++){ + var ppTask = proj.parentTasks[k]; + if(ppTask.startTime < proj.startDate){ + if(!this.correctError){ + return; + }else{ + ppTask.startTime = proj.startDate; + } + } + if(this.checkPosParentTaskInTree(ppTask)){ + return; + } + } + this.sortTasksByStartTime(proj); + } + for(var i = 0; i < this.project.length; i++){ + //creation project + var proj = this.project[i]; + var project = new dojox.gantt.GanttProjectControl(this, proj); + if(this.arrProjects.length > 0){ + var previousProject = this.arrProjects[this.arrProjects.length - 1]; + project.previousProject = previousProject; + previousProject.nextProject = project; + } + project.create(); + this.checkHeighPanelTasks(); + this.arrProjects.push(project); + this.createTasks(project); + } + if(this.withResource){ + this.resource = new dojox.gantt.GanttResourceItem(this); + this.resource.create(); + } + this.postLoadData(); + this.postBindEvents(); + return this; + }, + postLoadData: function(){ + dojo.forEach(this.arrProjects, function(project){ + dojo.forEach(project.arrTasks, function(task){ + task.postLoadData(); + }, this); + project.postLoadData(); + }, this); + //toolbar cover div + var cpos = dojo.coords(this.panelNameHeaders); + if(!this.panelNameHeadersCover){ + this.panelNameHeadersCover = dojo.create("div", {className: "ganttHeaderCover"}, this.panelNameHeaders.parentNode); + dojo.style(this.panelNameHeadersCover, { + left: cpos.l+"px", + top: cpos.t+"px", + height: cpos.h+"px", + width: cpos.w+"px", + display: "none" + }); + } + }, + postBindEvents: function(){ + //highlight row + var pos = dojo.position(this.tableControl, true); + !dojo.isIE && this._events.push( + dojo.connect(this.tableControl, "onmousemove", this, function(event){ + var elem = event.srcElement || event.target; + if(elem == this.panelNames.firstChild || elem == this.contentData.firstChild){ + //23: this.heightTaskItem + this.heightTaskItemExtra + var rowHeight = this.heightTaskItem + this.heightTaskItemExtra; + var hlTop = parseInt(event.layerY / rowHeight) * rowHeight + this.panelTimeHeight - this.contentData.scrollTop; + if(hlTop != this.oldHLTop && hlTop < (pos.h - 50)){ + if(this.highLightDiv){ + dojo.style(this.highLightDiv, "top", (pos.y + hlTop) + "px"); + }else{ + this.highLightDiv = dojo.create("div", { + className: "ganttRowHighlight" + }, dojo.body()); + dojo.style(this.highLightDiv, { + top: (pos.y + hlTop) + "px", + left: pos.x + "px", + width: (pos.w - 20) + "px", + height: rowHeight + "px" + }); + } + } + this.oldHLTop = hlTop; + } + }) + ); + //TODO: other event bindings + }, + getStartDate: function(){ + dojo.forEach(this.project, function(proj){ + if(this.startDate){ + if(proj.startDate < this.startDate){ + this.startDate = new Date(proj.startDate); + } + }else{ + this.startDate = new Date(proj.startDate); + } + }, this); + this.initialPos = 24 * this.pixelsPerHour; + return this.startDate ? new Date(this.startDate.setHours(this.startDate.getHours() - 24)) : new Date(); + }, + getCountDays: function(){ + return parseInt((this.contentWidth - this.maxWidthPanelNames) / (this.pixelsPerHour * 24)); + }, + createTasks: function(project){ + dojo.forEach(project.project.parentTasks, function(pppTask, i){ + if(i > 0){ + project.project.parentTasks[i - 1].nextParentTask = pppTask; + pppTask.previousParentTask = project.project.parentTasks[i - 1]; + } + var task = new dojox.gantt.GanttTaskControl(pppTask, project, this); + project.arrTasks.push(task); + task.create(); + this.checkHeighPanelTasks(); + if(pppTask.cldTasks.length > 0){ + this.createChildItemControls(pppTask.cldTasks, project); + } + }, this); + }, + createChildItemControls: function(arrChildTasks, project){ + arrChildTasks && dojo.forEach(arrChildTasks, function(cTask, i){ + if(i > 0){ + cTask.previousChildTask = arrChildTasks[i - 1]; + arrChildTasks[i - 1].nextChildTask = cTask; + } + var task = new dojox.gantt.GanttTaskControl(cTask, project, this); + task.create(); + this.checkHeighPanelTasks(); + if(cTask.cldTasks.length > 0){ + this.createChildItemControls(cTask.cldTasks, project); + } + }, this); + }, + getPosOnDate: function(startTime){ + return (startTime - this.startDate) / (60 * 60 * 1000) * this.pixelsPerHour; + }, + getWidthOnDuration: function(duration){ + return Math.round(this.pixelsPerWorkHour * duration); + }, + getLastChildTask: function(task){ + return task.childTask.length > 0 ? this.getLastChildTask(task.childTask[task.childTask.length - 1]) : task; + }, + removeCell: function(row){ + while(row.cells[0]){ + row.deleteCell(row.cells[0]); + } + } + }); +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/GanttProjectItem.js b/js/dojo-release-1.7.2-src/dojox/gantt/GanttProjectItem.js new file mode 100644 index 0000000..531b613 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/GanttProjectItem.js @@ -0,0 +1,968 @@ +dojo.provide("dojox.gantt.GanttProjectItem"); + +dojo.require("dojox.gantt.GanttTaskItem"); +dojo.require("dojo.date.locale"); +dojo.require("dijit.focus"); // dijit.focus() + +dojo.declare("dojox.gantt.GanttProjectControl", null, { + constructor: function(ganttChart, projectItem){ + this.project = projectItem; + this.ganttChart = ganttChart; + this.descrProject = null; + this.projectItem = null; + this.projectNameItem = null; + this.posY = 0; + this.posX = 0; + this.nextProject = null; + this.previousProject = null; + this.arrTasks = []; + this.percentage = 0; + this.duration = 0; + }, + checkWidthProjectNameItem: function(){ + if(this.projectNameItem.offsetWidth + this.projectNameItem.offsetLeft > this.ganttChart.maxWidthTaskNames){ + var width = this.projectNameItem.offsetWidth + this.projectNameItem.offsetLeft - this.ganttChart.maxWidthTaskNames; + var countChar = Math.round(width / (this.projectNameItem.offsetWidth / this.projectNameItem.firstChild.length)); + var pName = this.project.name.substring(0, this.projectNameItem.firstChild.length - countChar - 3); + pName += "..."; + this.projectNameItem.innerHTML = pName; + } + }, + refreshProjectItem: function(projectItem){ + this.percentage = this.getPercentCompleted(); + dojo.style(projectItem, { + "left": this.posX + "px", + "width": this.duration * this.ganttChart.pixelsPerWorkHour + "px" + }); + var tblProjectItem = projectItem.firstChild; + var width = this.duration * this.ganttChart.pixelsPerWorkHour; + tblProjectItem.width = ((width == 0) ? 1 : width) + "px"; + tblProjectItem.style.width = ((width == 0) ? 1 : width) + "px"; + var rowprojectItem = tblProjectItem.rows[0]; + if(this.percentage != -1){ + if(this.percentage != 0){ + var cellprojectItem = rowprojectItem.firstChild; + cellprojectItem.width = this.percentage + "%"; + var imageProgress = cellprojectItem.firstChild; + dojo.style(imageProgress, { + width: (!this.duration ? 1 : (this.percentage * this.duration * this.ganttChart.pixelsPerWorkHour / 100)) + "px", + height: this.ganttChart.heightTaskItem + "px" + }) + } + if(this.percentage != 100){ + var cellprojectItem = rowprojectItem.lastChild; + cellprojectItem.width = (100 - this.percentage) + "%"; + var imageProgress = cellprojectItem.firstChild; + dojo.style(imageProgress, { + width: (!this.duration ? 1 : ((100 - this.percentage) * this.duration * this.ganttChart.pixelsPerWorkHour / 100)) + "px", + height: this.ganttChart.heightTaskItem + "px" + }) + } + }else{ + var cellprojectItem = rowprojectItem.firstChild; + cellprojectItem.width = "1px"; + var imageProgress = cellprojectItem.firstChild; + dojo.style(imageProgress, { + width: "1px", + height: this.ganttChart.heightTaskItem + "px" + }) + } + var divTaskInfo = projectItem.lastChild; + var tblTaskInfo = divTaskInfo.firstChild; + dojo.style(tblTaskInfo, { + height: this.ganttChart.heightTaskItem + "px", + width: (!this.duration ? 1 : (this.duration * this.ganttChart.pixelsPerWorkHour)) + "px" + }); + var rowTaskInfo = tblTaskInfo.rows[0]; + var cellTaskInfo = rowTaskInfo.firstChild; + cellTaskInfo.height = this.ganttChart.heightTaskItem + "px"; + if(this.project.parentTasks.length == 0){ + projectItem.style.display = "none"; + } + return projectItem; + }, + refreshDescrProject: function(divDesc){ + var posX = (this.posX + this.duration * this.ganttChart.pixelsPerWorkHour + 10); + dojo.style(divDesc, { + "left": posX + "px" + }); + if(this.project.parentTasks.length == 0){ + this.descrProject.style.visibility = 'hidden'; + } + return divDesc; + }, + postLoadData: function(){ + //TODO e.g. project relative info... + }, + refresh: function(){ + var containerTasks = this.ganttChart.contentData.firstChild; + this.posX = (this.project.startDate - this.ganttChart.startDate) / (60 * 60 * 1000) * this.ganttChart.pixelsPerHour; + this.refreshProjectItem(this.projectItem[0]); + this.refreshDescrProject(this.projectItem[0].nextSibling); + return this; + }, + create: function(){ + var containerTasks = this.ganttChart.contentData.firstChild; + this.posX = (this.project.startDate - this.ganttChart.startDate) / (60 * 60 * 1000) * this.ganttChart.pixelsPerHour; + if(this.previousProject){ + if(this.previousProject.arrTasks.length > 0){ + var lastChildTask = this.ganttChart.getLastChildTask(this.previousProject.arrTasks[this.previousProject.arrTasks.length - 1]); + this.posY = parseInt(lastChildTask.cTaskItem[0].style.top) + this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + }else{ + this.posY = parseInt(this.previousProject.projectItem[0].style.top) + this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + } + }else{ + this.posY = 6; + } + var containerNames = this.ganttChart.panelNames.firstChild; + this.projectNameItem = this.createProjectNameItem(); + containerNames.appendChild(this.projectNameItem); + this.checkWidthProjectNameItem(); + this.projectItem = [this.createProjectItem(), []]; + containerTasks.appendChild(this.projectItem[0]); + containerTasks.appendChild(this.createDescrProject()); + this.adjustPanelTime(); + }, + getTaskById: function(id){ + for(var i = 0; i < this.arrTasks.length; i++){ + var aTask = this.arrTasks[i]; + var task = this.searchTaskInTree(aTask, id); + if(task){ + return task; + } + } + return null; + }, + searchTaskInTree: function(task, id){ + if(task.taskItem.id == id){ + return task; + }else{ + for(var i = 0; i < task.childTask.length; i++){ + var cTask = task.childTask[i]; + if(cTask.taskItem.id == id){ + return cTask; + }else{ + if(cTask.childTask.length > 0){ + var cTask = this.searchTaskInTree(cTask, id); + if(cTask){ + return cTask; + } + } + } + } + } + return null; + }, + shiftProjectItem: function(){ + var posItemL = null; + var posItemR = null; + var posProjectItemL = parseInt(this.projectItem[0].style.left); + var posProjectItemR = parseInt(this.projectItem[0].firstChild.style.width) + parseInt(this.projectItem[0].style.left); + var widthProjectItem = parseInt(this.projectItem[0].firstChild.style.width); + for(var i = 0; i < this.arrTasks.length; i++){ + var aTask = this.arrTasks[i]; + var tmpPosItemL = parseInt(aTask.cTaskItem[0].style.left); + var tmpPosItemR = parseInt(aTask.cTaskItem[0].style.left) + parseInt(aTask.cTaskItem[0].firstChild.firstChild.width); + if(!posItemL){ + posItemL = tmpPosItemL; + } + if(!posItemR){ + posItemR = tmpPosItemR; + } + if(posItemL > tmpPosItemL){ + posItemL = tmpPosItemL; + } + if(posItemR < tmpPosItemR){ + posItemR = tmpPosItemR; + } + } + if(posItemL != posProjectItemL){ + this.project.startDate = new Date(this.ganttChart.startDate); + this.project.startDate.setHours(this.project.startDate.getHours() + (posItemL / this.ganttChart.pixelsPerHour)); + } + this.projectItem[0].style.left = posItemL + "px"; + this.resizeProjectItem(posItemR - posItemL); + this.duration = Math.round(parseInt(this.projectItem[0].firstChild.width) / (this.ganttChart.pixelsPerWorkHour)); + this.shiftDescrProject(); + this.adjustPanelTime(); + }, + adjustPanelTime: function(){ + var projectItem = this.projectItem[0]; + var width = parseInt(projectItem.style.left) + parseInt(projectItem.firstChild.style.width) + this.ganttChart.panelTimeExpandDelta; + width += this.descrProject.offsetWidth; + this.ganttChart.adjustPanelTime(width); + }, + resizeProjectItem: function(width){ + var percentage = this.percentage, + pItem = this.projectItem[0]; + if(percentage > 0 && percentage < 100){ + pItem.firstChild.style.width = width + "px"; + pItem.firstChild.width = width + "px"; + pItem.style.width = width + "px"; + var firstRow = pItem.firstChild.rows[0]; + firstRow.cells[0].firstChild.style.width = Math.round(width * percentage / 100) + "px"; + firstRow.cells[0].firstChild.style.height = this.ganttChart.heightTaskItem + "px"; + firstRow.cells[1].firstChild.style.width = Math.round(width * (100 - percentage) / 100) + "px"; + firstRow.cells[1].firstChild.style.height = this.ganttChart.heightTaskItem + "px"; + pItem.lastChild.firstChild.width = width + "px"; + }else if(percentage == 0 || percentage == 100){ + pItem.firstChild.style.width = width + "px"; + pItem.firstChild.width = width + "px"; + pItem.style.width = width + "px"; + var firstRow = pItem.firstChild.rows[0]; + firstRow.cells[0].firstChild.style.width = width + "px"; + firstRow.cells[0].firstChild.style.height = this.ganttChart.heightTaskItem + "px"; + pItem.lastChild.firstChild.width = width + "px"; + } + }, + shiftDescrProject: function(){ + var posX = (parseInt(this.projectItem[0].style.left) + this.duration * this.ganttChart.pixelsPerWorkHour + 10); + this.descrProject.style.left = posX + "px"; + this.descrProject.innerHTML = this.getDescStr(); + }, + showDescrProject: function(){ + var posX = (parseInt(this.projectItem[0].style.left) + this.duration * this.ganttChart.pixelsPerWorkHour + 10); + this.descrProject.style.left = posX + "px"; + this.descrProject.style.visibility = 'visible'; + this.descrProject.innerHTML = this.getDescStr(); + }, + hideDescrProject: function(){ + this.descrProject.style.visibility = 'hidden'; + }, + getDescStr: function(){ + return this.duration/this.ganttChart.hsPerDay + " days, " + this.duration + " hours"; + }, + createDescrProject: function(){ + var posX = (this.posX + this.duration * this.ganttChart.pixelsPerWorkHour + 10); + var divDesc = dojo.create("div", { + innerHTML: this.getDescStr(), + className: "ganttDescProject" + }); + dojo.style(divDesc, { + left: posX + "px", + top: this.posY + "px" + }); + this.descrProject = divDesc; + if(this.project.parentTasks.length == 0){ + this.descrProject.style.visibility = 'hidden'; + } + return divDesc; + }, + createProjectItem: function(){ + this.percentage = this.getPercentCompleted(); + this.duration = this.getDuration(); + var projectItem = dojo.create("div", { + id: this.project.id, + className: "ganttProjectItem" + }); + dojo.style(projectItem, { + left: this.posX + "px", + top: this.posY + "px", + width: this.duration * this.ganttChart.pixelsPerWorkHour + "px" + }); + var tblProjectItem = dojo.create("table", { + cellPadding: "0", + cellSpacing: "0", + className: "ganttTblProjectItem" + }, projectItem); + var width = this.duration * this.ganttChart.pixelsPerWorkHour; + tblProjectItem.width = ((width == 0) ? 1 : width) + "px"; + tblProjectItem.style.width = ((width == 0) ? 1 : width) + "px"; + + var rowprojectItem = tblProjectItem.insertRow(tblProjectItem.rows.length); + if(this.percentage != -1){ + if(this.percentage != 0){ + var cellprojectItem = dojo.create("td", { + width: this.percentage + "%" + }, rowprojectItem); + cellprojectItem.style.lineHeight = "1px"; + var imageProgress = dojo.create("div", { + className: "ganttImageProgressFilled" + }, cellprojectItem); + dojo.style(imageProgress, { + width: (this.percentage * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + if(this.percentage != 100){ + var cellprojectItem = dojo.create("td", { + width: (100 - this.percentage) + "%" + }, rowprojectItem); + cellprojectItem.style.lineHeight = "1px"; + var imageProgress = dojo.create("div", { + className: "ganttImageProgressBg" + }, cellprojectItem); + dojo.style(imageProgress, { + width: ((100 - this.percentage) * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + }else{ + var cellprojectItem = dojo.create("td", { + width: "1px" + }, rowprojectItem); + cellprojectItem.style.lineHeight = "1px"; + var imageProgress = dojo.create("div", { + className: "ganttImageProgressBg" + }, cellprojectItem); + dojo.style(imageProgress, { + width: "1px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + var divTaskInfo = dojo.create("div", {className: "ganttDivTaskInfo"}); + var tblTaskInfo = dojo.create("table", { + cellPadding: "0", + cellSpacing: "0", + height: this.ganttChart.heightTaskItem + "px", + width: ((this.duration * this.ganttChart.pixelsPerWorkHour == 0) ? 1 : this.duration * this.ganttChart.pixelsPerWorkHour) + "px" + }, divTaskInfo); + var rowTaskInfo = tblTaskInfo.insertRow(0); + var cellTaskInfo = dojo.create("td", { + align: "center", + vAlign: "top", + height: this.ganttChart.heightTaskItem + "px", + className: "ganttMoveInfo" + }, rowTaskInfo); + projectItem.appendChild(divTaskInfo); + if(this.project.parentTasks.length == 0){ + projectItem.style.display = "none"; + } + return projectItem; + }, + createProjectNameItem: function(){ + var divName = dojo.create("div", { + className: "ganttProjectNameItem", + innerHTML: this.project.name, + title: this.project.name + }); + dojo.style(divName, { + left: "5px", + top: this.posY + "px" + }); + dojo.attr(divName, "tabIndex", 0); + if(this.ganttChart.isShowConMenu){ + this.ganttChart._events.push( + dojo.connect(divName, "onmouseover", this, function(event){ + dojo.addClass(divName, "ganttProjectNameItemHover"); + clearTimeout(this.ganttChart.menuTimer); + this.ganttChart.tabMenu.clear(); + this.ganttChart.tabMenu.show(event.target, this); + }) + ); + this.ganttChart._events.push( + dojo.connect(divName, "onkeydown", this, function(event){ + if(event.keyCode == dojo.keys.ENTER){ + this.ganttChart.tabMenu.clear(); + this.ganttChart.tabMenu.show(event.target, this); + } + if(this.ganttChart.tabMenu.isShow && (event.keyCode == dojo.keys.LEFT_ARROW || event.keyCode == dojo.keys.RIGHT_ARROW)){ + dijit.focus(this.ganttChart.tabMenu.menuPanel.firstChild.rows[0].cells[0]); + } + if(this.ganttChart.tabMenu.isShow && event.keyCode == dojo.keys.ESCAPE){ + this.ganttChart.tabMenu.hide(); + } + }) + ); + this.ganttChart._events.push( + dojo.connect(divName, "onmouseout", this, function(){ + dojo.removeClass(divName, "ganttProjectNameItemHover"); + clearTimeout(this.ganttChart.menuTimer); + this.ganttChart.menuTimer = setTimeout(dojo.hitch(this, function(){ + this.ganttChart.tabMenu.hide(); + }), 200); + }) + ); + this.ganttChart._events.push( + dojo.connect(this.ganttChart.tabMenu.menuPanel, "onmouseover", this, function(){ + clearTimeout(this.ganttChart.menuTimer); + }) + ); + this.ganttChart._events.push( + dojo.connect(this.ganttChart.tabMenu.menuPanel, "onkeydown", this, function(event){ + if(this.ganttChart.tabMenu.isShow && event.keyCode == dojo.keys.ESCAPE){ + this.ganttChart.tabMenu.hide(); + } + }) + ); + this.ganttChart._events.push( + dojo.connect(this.ganttChart.tabMenu.menuPanel, "onmouseout", this, function(){ + clearTimeout(this.ganttChart.menuTimer); + this.ganttChart.menuTimer = setTimeout(dojo.hitch(this, function(){ + this.ganttChart.tabMenu.hide(); + }), 200); + }) + ); + } + return divName; + }, + getPercentCompleted: function(){ + var sum = 0, percentage = 0; + dojo.forEach(this.project.parentTasks, function(ppTask){ + sum += parseInt(ppTask.percentage); + }, this); + if(this.project.parentTasks.length != 0){ + return percentage = Math.round(sum / this.project.parentTasks.length); + }else{ + return percentage = -1; + } + }, + getDuration: function(){ + var duration = 0, tmpDuration = 0; + if(this.project.parentTasks.length > 0){ + dojo.forEach(this.project.parentTasks, function(ppTask){ + tmpDuration = ppTask.duration * 24 / this.ganttChart.hsPerDay + (ppTask.startTime - this.ganttChart.startDate) / (60 * 60 * 1000); + if(tmpDuration > duration){ + duration = tmpDuration; + } + }, this); + return ((duration - this.posX) / 24) * this.ganttChart.hsPerDay; + }else{ + return 0; + } + }, + deleteTask: function(id){ + var task = this.getTaskById(id); + if(task){ + this.deleteChildTask(task); + this.ganttChart.checkPosition(); + } + }, + setName: function(name){ + if(name){ + this.project.name = name; + this.projectNameItem.innerHTML = name; + this.projectNameItem.title = name; + this.checkWidthProjectNameItem(); + + this.descrProject.innerHTML = this.getDescStr(); + this.adjustPanelTime(); + } + }, + setPercentCompleted: function(percentage){ + percentage = parseInt(percentage); + if(isNaN(percentage) || percentage > 100 || percentage < 0){ + return false; + } + var prow = this.projectItem[0].firstChild.rows[0], + rc0 = prow.cells[0], rc1 = prow.cells[1]; + if((percentage > 0) && (percentage < 100) && (this.percentage > 0) && (this.percentage < 100)){ + rc0.width = parseInt(percentage) + "%"; + rc0.firstChild.style.width = (percentage * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px"; + rc1.width = (100 - parseInt(percentage)) + "%"; + rc1.firstChild.style.width = ((100 - percentage) * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px"; + }else if(((percentage == 0) || (percentage == 100)) && (this.percentage > 0) && (this.percentage < 100)){ + if(percentage == 0){ + rc0.parentNode.removeChild(rc0); + rc1.width = 100 + "%"; + rc1.firstChild.style.width = this.duration * this.ganttChart.pixelsPerWorkHour + "px"; + }else if(percentage == 100){ + rc1.parentNode.removeChild(rc1); + rc0.width = 100 + "%"; + rc0.firstChild.style.width = this.duration * this.ganttChart.pixelsPerWorkHour + "px"; + } + }else if(((percentage == 0) || (percentage == 100)) && ((this.percentage == 0) || (this.percentage == 100))){ + if((percentage == 0) && (this.percentage == 100)){ + dojo.removeClass(rc0.firstChild, "ganttImageProgressFilled"); + dojo.addClass(rc0.firstChild, "ganttImageProgressBg"); + }else if((percentage == 100) && (this.percentage == 0)){ + dojo.removeClass(rc0.firstChild, "ganttImageProgressBg"); + dojo.addClass(rc0.firstChild, "ganttImageProgressFilled"); + } + }else if(((percentage > 0) || (percentage < 100)) && ((this.percentage == 0) || (this.percentage == 100))){ + rc0.parentNode.removeChild(rc0); + var cellprojectItem = dojo.create("td", { + width: percentage + "%" + }, prow); + cellprojectItem.style.lineHeight = "1px"; + var imageProgress = dojo.create("div", { + className: "ganttImageProgressFilled" + }, cellprojectItem); + dojo.style(imageProgress, { + width: (percentage * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + cellprojectItem = dojo.create("td", { + width: (100 - percentage) + "%" + }, prow); + cellprojectItem.style.lineHeight = "1px"; + imageProgress = dojo.create("div", { + className: "ganttImageProgressBg" + }, cellprojectItem); + dojo.style(imageProgress, { + width: ((100 - percentage) * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + }else if(this.percentage == -1){ + if(percentage == 100){ + dojo.removeClass(rc0.firstChild, "ganttImageProgressBg"); + dojo.addClass(rc0.firstChild, "ganttImageProgressFilled"); + }else if(percentage < 100 && percentage > 0){ + rc0.parentNode.removeChild(rc0); + var cellprojectItem = dojo.create("td", { + width: percentage + "%" + }, prow); + cellprojectItem.style.lineHeight = "1px"; + imageProgress = dojo.create("div", { + className: "ganttImageProgressFilled" + }, cellprojectItem); + dojo.style(imageProgress, { + width: (percentage * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + cellprojectItem = dojo.create("td", { + width: (100 - percentage) + "%" + }, prow); + cellprojectItem.style.lineHeight = "1px"; + imageProgress = dojo.create("div", { + className: "ganttImageProgressBg" + }, cellprojectItem); + dojo.style(imageProgress, { + width: ((100 - percentage) * this.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + } + this.percentage = percentage; + this.descrProject.innerHTML = this.getDescStr(); + return true; + }, + deleteChildTask: function(task){ + if(task){ + var tItem0 = task.cTaskItem[0], tNameItem0 = task.cTaskNameItem[0], + tItem1 = task.cTaskItem[1], tNameItem1 = task.cTaskNameItem[1], + tItem2 = task.cTaskItem[2], tNameItem2 = task.cTaskNameItem[2]; + if(tItem0.style.display == "none"){ + this.ganttChart.openTree(task.parentTask); + } + //delete of connecting lines + if(task.childPredTask.length > 0){ + for(var i = 0; i < task.childPredTask.length; i++){ + var cpTask = task.childPredTask[i]; + for(var t = 0; t < cpTask.cTaskItem[1].length; t++){ + cpTask.cTaskItem[1][t].parentNode.removeChild(cpTask.cTaskItem[1][t]); + } + cpTask.cTaskItem[1] = []; + cpTask.predTask = null; + } + } + //delete child task + if(task.childTask.length > 0){ + while(task.childTask.length > 0){ + this.deleteChildTask(task.childTask[0]); + } + } + //shift tasks + var rowHeight = this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + if(tItem0.style.display != "none"){ + task.shiftCurrentTasks(task, -rowHeight); + } + //delete object task + this.project.deleteTask(task.taskItem.id); + //delete div and connecting lines from contentData + if(tItem0){ + tItem0.parentNode.removeChild(tItem0); + } + task.descrTask.parentNode.removeChild(task.descrTask); + if(tItem1.length > 0){ + for(var j = 0; j < tItem1.length; j++){ + tItem1[j].parentNode.removeChild(tItem1[j]); + } + } + //delete div and connecting lines from panelName + if(tNameItem0){ + tNameItem0.parentNode.removeChild(tNameItem0); + } + if(task.cTaskNameItem[1]){ + for(var j = 0; j < tNameItem1.length; j++){ + tNameItem1[j].parentNode.removeChild(tNameItem1[j]); + } + } + if(tNameItem2 && tNameItem2.parentNode){ + tNameItem2.parentNode.removeChild(tNameItem2); + } + if(task.taskIdentifier){ + task.taskIdentifier.parentNode.removeChild(task.taskIdentifier); + task.taskIdentifier = null; + } + //delete object task + if(task.parentTask){ + if(task.previousChildTask){ + if(task.nextChildTask){ + task.previousChildTask.nextChildTask = task.nextChildTask; + }else{ + task.previousChildTask.nextChildTask = null; + } + } + var parentTask = task.parentTask; + for(var i = 0; i < parentTask.childTask.length; i++){ + if(parentTask.childTask[i].taskItem.id == task.taskItem.id){ + parentTask.childTask[i] = null; + parentTask.childTask.splice(i, 1); + break; + } + } + if(parentTask.childTask.length == 0){ + if(parentTask.cTaskNameItem[2]){ + parentTask.cTaskNameItem[2].parentNode.removeChild(parentTask.cTaskNameItem[2]); + parentTask.cTaskNameItem[2] = null; + } + } + }else{ + if(task.previousParentTask){ + if(task.nextParentTask){ + task.previousParentTask.nextParentTask = task.nextParentTask; + }else{ + task.previousParentTask.nextParentTask = null; + } + } + var project = task.project; + for(var i = 0; i < project.arrTasks.length; i++){ + if(project.arrTasks[i].taskItem.id == task.taskItem.id){ + project.arrTasks.splice(i, 1); + } + } + } + if(task.predTask){ + var predTask = task.predTask; + for(var i = 0; i < predTask.childPredTask.length; i++){ + if(predTask.childPredTask[i].taskItem.id == task.taskItem.id){ + predTask.childPredTask[i] = null; + predTask.childPredTask.splice(i, 1); + } + } + } + if(task.project.arrTasks.length != 0){ + task.project.shiftProjectItem(); + }else{ + task.project.projectItem[0].style.display = "none"; + this.hideDescrProject(); + } + this.ganttChart.contentDataHeight -= this.ganttChart.heightTaskItemExtra + this.ganttChart.heightTaskItem; + } + }, + + insertTask: function(id, name, startTime, duration, percentage, previousTaskId, taskOwner, parentTaskId){ + var task = null; + var _task = null; + if(this.project.getTaskById(id)){ + return false; + } + if((!duration) || (duration < this.ganttChart.minWorkLength)){ + duration = this.ganttChart.minWorkLength; + } + if((!name) || (name == "")){ + name = id; + } + if((!percentage) || (percentage == "")){ + percentage = 0; + + }else{ + percentage = parseInt(percentage); + if(percentage < 0 || percentage > 100){ + return false; + } + } + var sortRequired = false; + if((parentTaskId) && (parentTaskId != "")){ + var parentTask = this.project.getTaskById(parentTaskId); + if(!parentTask){ + return false; + } + startTime = startTime || parentTask.startTime; + if(startTime < parentTask.startTime){ + return false; + } + task = new dojox.gantt.GanttTaskItem({ + id: id, + name: name, + startTime: startTime, + duration: duration, + percentage: percentage, + previousTaskId: previousTaskId, + taskOwner: taskOwner + }); + if(!this.ganttChart.checkPosParentTask(parentTask, task)){ + return false; + } + task.parentTask = parentTask; + var _parentTask = this.getTaskById(parentTask.id); + var isHide = false; + if(_parentTask.cTaskItem[0].style.display == "none"){ + isHide = true; + }else if(_parentTask.cTaskNameItem[2]){ + if(!_parentTask.isExpanded){ + isHide = true; + } + } + if(isHide){ + if(_parentTask.childTask.length == 0){ + this.ganttChart.openTree(_parentTask.parentTask); + }else{ + this.ganttChart.openTree(_parentTask); + } + } + if(previousTaskId != ""){ + var predTask = this.project.getTaskById(previousTaskId); + if(!predTask){ + return false; + } + if(predTask.parentTask){ + if(predTask.parentTask.id != task.parentTask.id){ + return false; + } + }else{ + return false; + } + if(!this.ganttChart.checkPosPreviousTask(predTask, task)){ + this.ganttChart.correctPosPreviousTask(predTask, task); + } + task.previousTask = predTask; + } + var isAdd = false; + if(sortRequired) for(var i = 0; i < parentTask.cldTasks.length; i++){ + if(task.startTime < parentTask.cldTasks[i].startTime){ + parentTask.cldTasks.splice(i, 0, task); + if(i > 0){ + parentTask.cldTasks[i - 1].nextChildTask = parentTask.cldTasks[i]; + parentTask.cldTasks[i].previousChildTask = parentTask.cldTasks[i - 1]; + } + if(parentTask.cldTasks[i + 1]){ + parentTask.cldTasks[i + 1].previousChildTask = parentTask.cldTasks[i]; + parentTask.cldTasks[i].nextChildTask = parentTask.cldTasks[i + 1]; + } + isAdd = true; + break; + } + } + if(!isAdd){ + if(parentTask.cldTasks.length > 0){ + parentTask.cldTasks[parentTask.cldTasks.length - 1].nextChildTask = task; + task.previousChildTask = parentTask.cldTasks[parentTask.cldTasks.length - 1]; + } + parentTask.cldTasks.push(task); + } + if(parentTask.cldTasks.length == 1){ + var treeImg = _parentTask.createTreeImg(); + _parentTask.cTaskNameItem[2] = treeImg; + } + _task = new dojox.gantt.GanttTaskControl(task, this, this.ganttChart); + _task.create(); + if(task.nextChildTask) _task.nextChildTask = _task.project.getTaskById(task.nextChildTask.id); + _task.adjustPanelTime(); + var rowHeight = this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + _task.shiftCurrentTasks(_task, rowHeight);//23 + }else{ + startTime = startTime || this.project.startDate; + task = new dojox.gantt.GanttTaskItem({ + id: id, + name: name, + startTime: startTime, + duration: duration, + percentage: percentage, + previousTaskId: previousTaskId, + taskOwner: taskOwner + }); + if(task.startTime <= this.ganttChart.startDate){ + return false; + } + if(previousTaskId != ""){ + var predTask = this.project.getTaskById(previousTaskId); + if(!predTask){ + return false; + } + if(!this.ganttChart.checkPosPreviousTask(predTask, task)){ + this.ganttChart.correctPosPreviousTask(predTask, task); + } + if(predTask.parentTask){ + return false; + } + task.previousTask = predTask; + } + var isAdd = false; + if(sortRequired){ + for(var i = 0; i < this.project.parentTasks.length; i++){ + var ppTask = this.project.parentTasks[i]; + if(startTime < ppTask.startTime){ + this.project.parentTasks.splice(i, 0, task); + if(i > 0){ + this.project.parentTasks[i - 1].nextParentTask = task; + task.previousParentTask = this.project.parentTasks[i - 1]; + } + if(this.project.parentTasks[i + 1]){ + this.project.parentTasks[i + 1].previousParentTask = task; + task.nextParentTask = this.project.parentTasks[i + 1]; + } + isAdd = true; + break; + } + } + } + if(!isAdd){ + if(this.project.parentTasks.length > 0){ + this.project.parentTasks[this.project.parentTasks.length - 1].nextParentTask = task; + task.previousParentTask = this.project.parentTasks[this.project.parentTasks.length - 1]; + } + this.project.parentTasks.push(task); + } + _task = new dojox.gantt.GanttTaskControl(task, this, this.ganttChart); + _task.create(); + if(task.nextParentTask) _task.nextParentTask = _task.project.getTaskById(task.nextParentTask.id); + _task.adjustPanelTime(); + this.arrTasks.push(_task); + var rowHeight = this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + _task.shiftCurrentTasks(_task, rowHeight); + this.projectItem[0].style.display = "inline"; + this.setPercentCompleted(this.getPercentCompleted()); + this.shiftProjectItem(); + this.showDescrProject(); + } + this.ganttChart.checkHeighPanelTasks(); + this.ganttChart.checkPosition(); + return _task; + }, + shiftNextProject: function(project, height){ + if(project.nextProject){ + project.nextProject.shiftProject(height); + this.shiftNextProject(project.nextProject, height); + } + }, + shiftProject: function(height){ + this.posY = this.posY + height; + this.projectItem[0].style.top = parseInt(this.projectItem[0].style.top) + height + "px"; + this.descrProject.style.top = parseInt(this.descrProject.style.top) + height + "px"; + this.projectNameItem.style.top = parseInt(this.projectNameItem.style.top) + height + "px"; + if(this.arrTasks.length > 0){ + this.shiftNextParentTask(this.arrTasks[0], height); + } + }, + shiftTask: function(task, height){ + task.posY = task.posY + height; + var tNameItem0 = task.cTaskNameItem[0], tNameItem1 = task.cTaskNameItem[1], tNameItem2 = task.cTaskNameItem[2], + tItem0 = task.cTaskItem[0], tItem1 = task.cTaskItem[1], tItem2 = task.cTaskItem[2]; + tNameItem0.style.top = parseInt(tNameItem0.style.top) + height + "px"; + if(tNameItem2){ + tNameItem2.style.top = parseInt(tNameItem2.style.top) + height + "px"; + } + if(task.parentTask){ + tNameItem1[0].style.top = parseInt(tNameItem1[0].style.top) + height + "px"; + tNameItem1[1].style.top = parseInt(tNameItem1[1].style.top) + height + "px"; + } + task.cTaskItem[0].style.top = parseInt(task.cTaskItem[0].style.top) + height + "px"; + task.descrTask.style.top = parseInt(task.descrTask.style.top) + height + "px"; + if(tItem1[0]){ + tItem1[0].style.top = parseInt(tItem1[0].style.top) + height + "px"; + tItem1[1].style.top = parseInt(tItem1[1].style.top) + height + "px"; + tItem1[2].style.top = parseInt(tItem1[2].style.top) + height + "px"; + } + }, + shiftNextParentTask: function(task, height){ + this.shiftTask(task, height); + this.shiftChildTasks(task, height); + if(task.nextParentTask){ + this.shiftNextParentTask(task.nextParentTask, height); + } + }, + shiftChildTasks: function(task, height){ + dojo.forEach(task.childTask, function(cTask){ + this.shiftTask(cTask, height); + if(cTask.childTask.length > 0){ + this.shiftChildTasks(cTask, height); + } + }, this); + } +}); + + +dojo.declare("dojox.gantt.GanttProjectItem", null, { + constructor: function(configuration){ + //id is required + this.id = configuration.id; + this.name = configuration.name || this.id; + this.startDate = configuration.startDate || new Date(); + this.parentTasks = []; + }, + getTaskById: function(id){ + for(var i = 0; i < this.parentTasks.length; i++){ + var pTask = this.parentTasks[i]; + var task = this.getTaskByIdInTree(pTask, id); + if(task){ + return task; + } + } + return null; + }, + getTaskByIdInTree: function(parentTask, id){ + if(parentTask.id == id){ + return parentTask; + }else{ + for(var i = 0; i < parentTask.cldTasks.length; i++){ + var pcTask = parentTask.cldTasks[i]; + if(pcTask.id == id){ + return pcTask; + } + if(pcTask.cldTasks.length > 0){ + if(pcTask.cldTasks.length > 0){ + var cTask = this.getTaskByIdInTree(pcTask, id); + if(cTask){ + return cTask; + } + } + } + } + } + return null; + }, + addTask: function(task){ + this.parentTasks.push(task); + task.setProject(this); + }, + deleteTask: function(id){ + var task = this.getTaskById(id); + if(!task){return;} + if(!task.parentTask){ + for(var i = 0; i < this.parentTasks.length; i++){ + var pTask = this.parentTasks[i]; + if(pTask.id == id){ + if(pTask.nextParentTask){ + if(pTask.previousParentTask){ + pTask.previousParentTask.nextParentTask = pTask.nextParentTask; + pTask.nextParentTask.previousParentTask = pTask.previousParentTask; + }else{ + pTask.nextParentTask.previousParentTask = null; + } + }else{ + if(pTask.previousParentTask){ + pTask.previousParentTask.nextParentTask = null; + } + } + pTask = null; + this.parentTasks.splice(i, 1); + break; + } + } + }else{ + var parentTask = task.parentTask; + for(var i = 0; i < parentTask.cldTasks.length; i++){ + var pcTask = parentTask.cldTasks[i]; + if(pcTask.id == id){ + if(pcTask.nextChildTask){ + if(pcTask.previousChildTask){ + pcTask.previousChildTask.nextChildTask = pcTask.nextChildTask; + pcTask.nextChildTask.previousChildTask = pcTask.previousChildTask; + }else{ + pcTask.nextChildTask.previousChildTask = null; + } + }else{ + if(pcTask.previousChildTask){ + pcTask.previousChildTask.nextChildTask = null; + } + } + pcTask = null; + parentTask.cldTasks.splice(i, 1); + break; + } + } + } + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/GanttResourceItem.js b/js/dojo-release-1.7.2-src/dojox/gantt/GanttResourceItem.js new file mode 100644 index 0000000..fe10720 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/GanttResourceItem.js @@ -0,0 +1,457 @@ +dojo.provide("dojox.gantt.GanttResourceItem"); + +dojo.require("dojo.date.locale"); + +dojo.declare("dojox.gantt.GanttResourceItem", null, { + constructor: function(ganttchart){ + this.ganttChart = ganttchart; + this.ownerItem = []; + this.ownerNameItem = []; + this.ownerTaskNodeMapping = {}; + this.ownerTaskNodeMapping_time = {}; + this.resourceInfo = {}; + this.ownerTimeConsume = {}; + }, + clearAll: function(){ + this.clearData(); + this.clearItems(); + }, + clearData: function(){ + this.ownerItem = []; + this.ownerNameItem = []; + this.ownerTaskNodeMapping = {}; + this.ownerTaskNodeMapping_time = {}; + this.resourceInfo = {}; + this.ownerTimeConsume = {}; + }, + clearItems: function(){ + if(this.content.firstChild){ + dojo.destroy(this.content.firstChild); + } + }, + buildResource: function(){ + var resourceInfo = {}; + dojo.forEach(this.ganttChart.arrProjects, function(project){ + dojo.forEach(project.arrTasks, function(task){ + task.buildResourceInfo(resourceInfo); + }, this); + }, this); + return resourceInfo; + }, + buildOwnerTimeConsume: function(){ + var ownerTimeConsume = {}; + for(var owner in this.resourceInfo){ + var tasks = this.resourceInfo[owner]; + //combine time zone (startTime - this.startDate) / (60 * 60 * 1000) * this.pixelsPerHour; + var timeZoom = {}; + for(var i = 0; i < tasks.length; i++){ + var task = tasks[i]; + var startTime = task.taskItem.startTime.getTime(), dur = task.taskItem.duration * 24 * 60 * 60 * 1000 / this.ganttChart.hsPerDay; + timeZoom.min = timeZoom.min ? Math.min(timeZoom.min, startTime) : startTime; + timeZoom.max = timeZoom.max ? Math.max(timeZoom.max, (startTime + dur)) : (startTime + dur); + } + timeZoom.dur = (timeZoom.max - timeZoom.min) * this.ganttChart.hsPerDay / (24 * 60 * 60 * 1000); + timeZoom.min = new Date(timeZoom.min); + timeZoom.max = new Date(timeZoom.max); + ownerTimeConsume[owner] = timeZoom; + } + return ownerTimeConsume; + }, + refresh: function(){ + this.ownerTimeConsume = this.buildOwnerTimeConsume(); + //resize outer div + this.contentData.firstChild.style.width = Math.max(1200, this.ganttChart.pixelsPerDay * this.ganttChart.totalDays) + "px"; + for(var owner in this.resourceInfo){ + this.refreshOwnerEntry(owner); + } + }, + reConstruct: function(){ + this.clearAll(); + this.resourceInfo = this.buildResource(); + this.ownerTimeConsume = this.buildOwnerTimeConsume(); + this.tableControl = dojo.create("table", { + cellPadding: "0", + cellSpacing: "0", + className: "ganttResourceTableControl" + }); + var newRowTblControl = this.tableControl.insertRow(this.tableControl.rows.length); + //Add to content Table + this.contentHeight = this.content.offsetHeight; + this.contentWidth = this.content.offsetWidth; + this.content.appendChild(this.tableControl); + //Creation panel contentData + this.contentData = dojo.create("div", {className: "ganttResourceContentDataContainer"}); + this.contentData.appendChild(this.createPanelOwners()); + dojo.style(this.contentData, "height", (this.contentHeight - this.ganttChart.panelTimeHeight) + "px"); + //Creation panel of names + var newCellTblControl = dojo.create("td", { + vAlign: "top" + }); + this.panelNames = dojo.create("div", {className: "ganttResourcePanelNames"}); + this.panelNames.appendChild(this.createPanelNamesOwners()); + newCellTblControl.appendChild(this.panelNames); + newRowTblControl.appendChild(newCellTblControl); + //add to control contentData and contentDataTime + newCellTblControl = dojo.create("td", { + vAlign: "top" + }); + var divCell = dojo.create("div", {className: "ganttResourceDivCell"}); + divCell.appendChild(this.contentData); + newCellTblControl.appendChild(divCell); + newRowTblControl.appendChild(newCellTblControl); + //Show panel of names + dojo.style(this.panelNames, { + height: (this.contentHeight - this.ganttChart.panelTimeHeight - this.ganttChart.scrollBarWidth) + "px", + width: this.ganttChart.maxWidthPanelNames + "px" + }); + this.contentData.style.width = (this.contentWidth - this.ganttChart.maxWidthPanelNames) + "px"; + this.contentData.firstChild.style.width = this.ganttChart.pixelsPerDay * (this.ganttChart.panelTime.firstChild.firstChild.rows[3].cells.length) + "px"; + var _this = this; + this.contentData.onscroll = function(){ + if(_this.panelNames){ + _this.panelNames.scrollTop = this.scrollTop; + } + } + this.contentData.scrollLeft = this.ganttChart.contentData.scrollLeft; + for(var owner in this.resourceInfo){ + this.createOwnerEntry(owner); + } + this.postAdjustment(); + }, + create: function(){ + var resourceHeader = dojo.create("div", { + innerHTML: "Resource Chart:", + className: "ganttResourceHeader" + }, this.ganttChart.content, "after"); + dojo.style(resourceHeader, "width", this.ganttChart.contentWidth + "px"); + var content = dojo.create("div", {className: "ganttResourceContent"}, resourceHeader, "after"); + dojo.style(content, { + width: this.ganttChart.contentWidth + "px", + height: (this.ganttChart.resourceChartHeight || (this.ganttChart.contentHeight * 0.8)) + "px" + }); + this.content = content || this.content; + //create Table + this.reConstruct(); + }, + postAdjustment: function(){ + //contentData height + this.contentData.firstChild.style.height = (this.ownerItem.length * 23) + "px"; + this.panelNames.firstChild.style.height = (this.ownerItem.length * 23) + "px"; + }, + + refreshOwnerEntry: function(owner){ + this.refreshOwnerItem(owner); + dojo.forEach(this.resourceInfo[owner], function(task, i){ + var item = this.ownerTaskNodeMapping[owner].tasks[i][0]; + this.refreshDetailedTaskEntry(owner, item, task); + }, this); + }, + createOwnerEntry: function(owner){ + var containerOwner = this.contentData.firstChild; + var previousOwner = this.ownerItem[this.ownerItem.length - 1]; + this.ownerTaskNodeMapping[owner] = {}; + this.ownerTaskNodeMapping[owner][owner] = []; + //create nodes + var pos = dojo.position(containerOwner); + //creation arrTasks + var posY = (previousOwner ? parseInt(previousOwner.style.top) : (6 - 23)) + this.ganttChart.heightTaskItem + 11; + //creation task item + var oItem = this.createOwnerItem(owner, posY); + containerOwner.appendChild(oItem); + this.ownerItem.push(oItem); + this.ownerTaskNodeMapping[owner][owner].push(oItem); + if(this.panelNames){ + var oNameItem = this.createOwnerNameItem(owner, posY); + this.panelNames.firstChild.appendChild(oNameItem); + this.ownerNameItem.push(oNameItem); + this.ownerTaskNodeMapping[owner][owner].push(oNameItem); + } + var currentOwnerNode = this.ownerItem[this.ownerNameItem.length - 1], + currentOwnerNameNode = this.ownerNameItem[this.ownerNameItem.length - 1]; + //adjust nodes + if(this.panelNames){ + this.checkWidthTaskNameItem(currentOwnerNameNode); + var treeImg = this.createTreeImg(currentOwnerNameNode); + this.panelNames.firstChild.appendChild(treeImg); + this.ownerTaskNodeMapping[owner][owner].push(treeImg); + } + this.ownerTaskNodeMapping[owner]["taskCount"] = this.resourceInfo[owner].length; + this.ownerTaskNodeMapping[owner]["isOpen"] = false; + this.ownerTaskNodeMapping[owner]["tasks"] = []; + dojo.forEach(this.resourceInfo[owner], function(task){ + this.ownerTaskNodeMapping[owner]["tasks"].push(this.createDetailedTaskEntry(owner, currentOwnerNameNode, task)); + }, this); + return this; + }, + createOwnerNameItem: function(owner, posY){ + var ownerName = dojo.create("div", { + id: owner, + title: owner, + innerHTML: owner, + className: "ganttOwnerNameItem" + }); + dojo.style(ownerName, "top", posY + "px"); + return ownerName; + }, + refreshOwnerItem: function(owner){ + var item = this.ownerTaskNodeMapping[owner][owner][0], + start = this.ownerTimeConsume[owner].min, end = this.ownerTimeConsume[owner].max, dur = this.ownerTimeConsume[owner].dur, + posX = this.ganttChart.getPosOnDate(start); // should be task start date + item.style.left = posX + "px"; + item.style.width = dur * this.ganttChart.pixelsPerWorkHour + "px"; + dojo.forEach(this.resourceInfo[owner], function(task, i){ + var tposX = this.ganttChart.getPosOnDate(task.taskItem.startTime); // should be task start date + dojo.style(item.childNodes[i], { + left: (tposX - posX) + "px", + width: task.taskItem.duration * this.ganttChart.pixelsPerWorkHour + "px" + }); + }, this); + }, + createOwnerItem: function(owner, posY){ + var start = this.ownerTimeConsume[owner].min, end = this.ownerTimeConsume[owner].max, dur = this.ownerTimeConsume[owner].dur; + var posX = this.ganttChart.getPosOnDate(start); // should be task start date + var ownerControl = dojo.create("div", { + id: owner, + owner: true, + className: "ganttOwnerBar" + }); + dojo.style(ownerControl, { + left: posX + "px", + top: posY + "px", + width: dur * this.ganttChart.pixelsPerWorkHour + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + dojo.forEach(this.resourceInfo[owner], function(task){ + var ownerTaskItem = dojo.create("div", { + id: owner, + className: "ganttOwnerTaskBar" + }, ownerControl); + var tposX = this.ganttChart.getPosOnDate(task.taskItem.startTime); // should be task start date + dojo.style(ownerTaskItem, { + left: (tposX - posX) + "px", + width: task.taskItem.duration * this.ganttChart.pixelsPerWorkHour + "px", // should be task duration + height: this.ganttChart.heightTaskItem + "px" + }); + }, this); + return ownerControl; + }, + refreshDetailedTaskEntry: function(owner, item, task){ + this.refreshTaskItem(item, task); + }, + createDetailedTaskEntry: function(owner, parentNode, task){ + var taskItems = []; + var containerTasks = this.contentData.firstChild; + var posY = parseInt(parentNode.style.top); + + //creation task item + var taskItem = this.createTaskItem(task, posY); + taskItem.style.display = "none"; + containerTasks.appendChild(taskItem); + this.ownerItem.push(taskItem); + taskItems.push(taskItem); + if(this.panelNames){ + var taskNameItem = this.createTaskNameItem(task.taskItem.name, posY); + this.panelNames.firstChild.appendChild(taskNameItem); + taskNameItem.style.display = "none"; + this.ownerNameItem.push(taskNameItem); + taskItems.push(taskNameItem); + } + if(this.panelNames){ + this.ownerNameItem[this.ownerNameItem.length - 1].style.left = dojo.style(parentNode, "left") + 15 + "px"; + var arrConnectingLinesNames = this.createConnectingLinesPN(parentNode, this.ownerNameItem[this.ownerNameItem.length - 1]); + dojo.forEach(arrConnectingLinesNames, function(lineName){ + lineName.style.display = "none"; + }, this); + taskItems.push({ + "v": arrConnectingLinesNames[0], + "h": arrConnectingLinesNames[1] + }); + this.checkWidthTaskNameItem(this.ownerNameItem[this.ownerNameItem.length - 1]); + } + return taskItems; + }, + createTaskNameItem: function(owner, posY){ + var taskNameItem = dojo.create("div", { + id: owner, + className: "ganttTaskNameItem", + title: owner, + innerHTML: owner + }); + dojo.style(taskNameItem, "top", posY + "px"); + return taskNameItem; + }, + refreshTaskItem: function(item, task){ + var posX = this.ganttChart.getPosOnDate(task.taskItem.startTime); // should be task start date + dojo.style(item, { + left: posX + "px", + width: task.taskItem.duration * this.ganttChart.pixelsPerWorkHour + "px" + }); + }, + createTaskItem: function(task, posY){ + var posX = this.ganttChart.getPosOnDate(task.taskItem.startTime); // should be task start date + var itemControl = dojo.create("div", { + id: task.taskItem.name, + className: "ganttTaskBar" + }); + dojo.style(itemControl, { + left: posX + "px", + top: posY + "px", + width: task.taskItem.duration * this.ganttChart.pixelsPerWorkHour + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + return itemControl; + }, + createConnectingLinesPN: function(parentNode, currentNode){ + var arrConnectingLinesNames = []; + var lineVerticalLeft = dojo.create("div", { + innerHTML: " ", + className: "ganttResourceLineVerticalLeft" + }, this.panelNames.firstChild); + lineVerticalLeft.cNode = currentNode; + lineVerticalLeft.pNode = parentNode; + var LineHorizontalLeft = dojo.create("div", { + noShade: true, + color: "#000", + className: "ganttResourceLineHorizontalLeft" + }, this.panelNames.firstChild); + LineHorizontalLeft.cNode = currentNode; + LineHorizontalLeft.pNode = parentNode; + this.panelNames.firstChild.appendChild(LineHorizontalLeft); + arrConnectingLinesNames.push(lineVerticalLeft); + arrConnectingLinesNames.push(LineHorizontalLeft); + return arrConnectingLinesNames; + }, + createTreeImg: function(ownerNameItem){ + var treeImg = dojo.create("div", { + id: ownerNameItem.id, + className: "ganttImageTreeExpand" + }); + dojo.attr(treeImg, "tabIndex", 0); + var currentItem = this.ownerTaskNodeMapping[ownerNameItem.id]; + dojo.forEach(["onclick", "onkeydown"], function(e){ + this.ganttChart._events.push( + dojo.connect(treeImg, e, this, function(evt){ + var reachTarget = false, owner, ownerItem; + if(e == "onkeydown" && evt.keyCode != dojo.keys.ENTER){ return; } + //TODO: perhaps the following conditional can be collapsed? Duplicate code. + if(currentItem.isOpen){ + dojo.removeClass(treeImg, "ganttImageTreeCollapse"); + dojo.addClass(treeImg, "ganttImageTreeExpand"); + currentItem.isOpen = false; + //collapse + for(owner in this.ownerTaskNodeMapping){ + ownerItem = this.ownerTaskNodeMapping[owner]; + if(reachTarget){ + dojo.forEach(ownerItem[owner], function(tItem){ + dojo.style(tItem, "top", dojo.style(tItem, "top") - currentItem.taskCount * 23 + "px"); + }); + dojo.forEach(ownerItem.tasks, function(tItems){ + dojo.forEach(tItems, function(tItem){ + var item = !tItem.v && !tItem.h ? [tItem] : [tItem.v, tItem.h]; + dojo.forEach(item, function(t){ + dojo.style(t, "top", dojo.style(t, "top") - currentItem.taskCount * 23 + "px"); + }); + }); + }); + }else{ + if(owner == ownerNameItem.id){ + reachTarget = true; + dojo.forEach(ownerItem.tasks, function(tItems, i){ + dojo.forEach(tItems, function(tItem){ + this.styleOwnerItem(tItem, ownerItem[owner][0], "none", 0); + }, this); + }, this); + } + } + } + }else{ + dojo.removeClass(treeImg, "ganttImageTreeExpand"); + dojo.addClass(treeImg, "ganttImageTreeCollapse"); + currentItem.isOpen = true; + //expand + for(owner in this.ownerTaskNodeMapping){ + ownerItem = this.ownerTaskNodeMapping[owner]; + if(reachTarget){ + dojo.forEach(ownerItem[owner], function(tItem){ + dojo.style(tItem, "top", dojo.style(tItem, "top") + currentItem.taskCount * 23 + "px"); + }); + dojo.forEach(ownerItem.tasks, function(tItems){ + dojo.forEach(tItems, function(tItem){ + var item = !tItem.v && !tItem.h ? [tItem] : [tItem.v, tItem.h]; + dojo.forEach(item, function(t){ + dojo.style(t, "top", dojo.style(t, "top") + currentItem.taskCount * 23 + "px"); + }); + }); + }); + }else{ + if(owner == ownerNameItem.id){ + reachTarget = true; + dojo.forEach(ownerItem.tasks, function(tItems, i){ + dojo.forEach(tItems, function(tItem){ + this.styleOwnerItem(tItem, ownerItem[owner][0], "inline", (i + 1) * 23); + }, this); + }, this); + } + } + } + } + }) + ); + }, this); + dojo.addClass(treeImg, "ganttResourceTreeImage"); + dojo.style(treeImg, { + left: (dojo.style(ownerNameItem, "left") - 12) + "px", + top: (dojo.style(ownerNameItem, "top") + 3) + "px" + }); + return treeImg; + }, + styleOwnerItem: function(tItem, owner, displayType, topOffset){ + if(tItem.v || tItem.h){ + dojo.style(tItem.v, { + height: Math.max(1, (tItem.v.cNode.offsetTop - tItem.v.pNode.offsetTop)) + "px", + top: (tItem.v.pNode.offsetTop + 5) + "px", + left: (tItem.v.pNode.offsetLeft - 9) + "px", + display: displayType + }); + dojo.style(tItem.h, { + width: Math.max(1, (tItem.h.cNode.offsetLeft - tItem.h.pNode.offsetLeft + 4)) + "px", + top: (tItem.h.cNode.offsetTop + 5) + "px", + left: (tItem.h.pNode.offsetLeft - 9) + "px", + display: displayType + }); + }else{ + dojo.style(tItem, { + display: displayType, + top: parseInt(owner.style.top) + topOffset + "px" + }); + } + }, + checkWidthTaskNameItem: function(taskNameItem){ + if(taskNameItem && taskNameItem.offsetWidth + taskNameItem.offsetLeft > this.ganttChart.maxWidthPanelNames){ + var width = taskNameItem.offsetWidth + taskNameItem.offsetLeft - this.ganttChart.maxWidthPanelNames, + countChar = Math.round(width / (taskNameItem.offsetWidth / taskNameItem.firstChild.length)), + tName = taskNameItem.id.substring(0, taskNameItem.firstChild.length - countChar - 3); + taskNameItem.innerHTML = tName + "..."; + } + }, + createPanelOwners: function(){ + var panelOwner = dojo.create("div", { + className: "ganttOwnerPanel" + }); + dojo.style(panelOwner, { + height: (this.contentHeight - this.ganttChart.panelTimeHeight - this.ganttChart.scrollBarWidth) + "px" + }); + return panelOwner; + }, + createPanelNamesOwners: function(){ + var panelNameOwner = dojo.create("div", { + innerHTML: " ", + className: "ganttResourcePanelNamesOwners" + }); + dojo.style(panelNameOwner, { + height: (this.contentHeight - this.ganttChart.panelTimeHeight - this.ganttChart.scrollBarWidth) + "px", + width: this.ganttChart.maxWidthPanelNames + "px" + }); + return panelNameOwner; + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/GanttTaskItem.js b/js/dojo-release-1.7.2-src/dojox/gantt/GanttTaskItem.js new file mode 100644 index 0000000..2bdac85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/GanttTaskItem.js @@ -0,0 +1,1358 @@ +dojo.provide("dojox.gantt.GanttTaskItem"); + +dojo.require("dojo.date.locale"); +dojo.require("dijit.focus"); // dijit.focus() + +dojo.declare("dojox.gantt.GanttTaskControl", null, { + constructor: function(taskInfo, project, chart){ + this.ganttChart = chart; + this.project = project; + this.taskItem = taskInfo; + //control variables + this.checkMove = false; + this.checkResize = false; + this.moveChild = false; + this.maxPosXMove = -1; + this.minPosXMove = -1; + this.maxWidthResize = -1; + this.minWidthResize = -1; + this.posX = 0; + this.posY = 0; + this.mouseX = 0; + this.taskItemWidth = 0; + this.isHide = false; + this.hideTasksHeight = 0; + this.isExpanded = true; + this.descrTask = null; + this.cTaskItem = null; + this.cTaskNameItem = null; + this.parentTask = null; + this.predTask = null; + this.childTask = []; + this.childPredTask = []; + this.nextChildTask = null; + this.previousChildTask = null; + this.nextParentTask = null; + this.previousParentTask = null; + }, + createConnectingLinesPN: function(){ + var arrConnectingLinesNames = []; + var lineVerticalLeft = dojo.create("div", { + innerHTML: " ", + className: "ganttTaskLineVerticalLeft" + }, this.ganttChart.panelNames.firstChild); + var cTaskName = this.cTaskNameItem[0], pcTaskName = this.parentTask.cTaskNameItem[0]; + dojo.style(lineVerticalLeft, { + height: (cTaskName.offsetTop - pcTaskName.offsetTop) + "px", + top: (pcTaskName.offsetTop + 5) + "px", + left: (pcTaskName.offsetLeft - 9) + "px" + }); + var LineHorizontalLeft = dojo.create("div", { + noShade: true, + color: "#000000", + className: "ganttTaskLineHorizontalLeft" + }, this.ganttChart.panelNames.firstChild); + dojo.style(LineHorizontalLeft, { + left: (pcTaskName.offsetLeft - 9) + "px", + top: (cTaskName.offsetTop + 5) + "px", + height: "1px", + width: (cTaskName.offsetLeft - pcTaskName.offsetLeft + 4) + "px" + }); + arrConnectingLinesNames.push(lineVerticalLeft); + arrConnectingLinesNames.push(LineHorizontalLeft); + return arrConnectingLinesNames; + }, + createConnectingLinesDS: function(){ + var contentData = this.ganttChart.contentData.firstChild; + var arrLines = []; + var arrowImg = new Image(); + var arrowImg = dojo.create("div", { + className: "ganttImageArrow" + }); + //vertical line + var lineVerticalRight = document.createElement("div"); + //horizontal line + var lineHorizontal = document.createElement("div"); + var posXPreviousTask = dojo.style(this.predTask.cTaskItem[0], "left"); + var posYPreviousTask = dojo.style(this.predTask.cTaskItem[0], "top"); + var posXChildTask = dojo.style(this.cTaskItem[0], "left"); + var posYChildTask = this.posY + 2; + //width task item + var widthChildTask = parseInt(this.predTask.cTaskItem[0].firstChild.firstChild.width); + var widthPreviousTask = parseInt(this.predTask.cTaskItem[0].firstChild.firstChild.width); + if(posYPreviousTask < posYChildTask){ + dojo.addClass(lineVerticalRight, "ganttTaskLineVerticalRight"); + dojo.style(lineVerticalRight, { + height: (posYChildTask - this.ganttChart.heightTaskItem / 2 - posYPreviousTask - 3) + "px", + width: "1px", + left: (posXPreviousTask + widthPreviousTask - 20) + "px", + top: (posYPreviousTask + this.ganttChart.heightTaskItem) + "px" + }); + dojo.addClass(lineHorizontal, "ganttTaskLineHorizontal"); + dojo.style(lineHorizontal, { + width: (15 + (posXChildTask - (widthPreviousTask + posXPreviousTask))) + "px", + left: (posXPreviousTask + widthPreviousTask - 20) + "px", + top: (posYChildTask + 2) + "px" + }); + dojo.addClass(arrowImg, "ganttTaskArrowImg"); + dojo.style(arrowImg, { + left: (posXChildTask - 7) + "px", + top: (posYChildTask - 1) + "px" + }); + }else{ + dojo.addClass(lineVerticalRight, "ganttTaskLineVerticalRightPlus"); + dojo.style(lineVerticalRight, { + height: (posYPreviousTask + 2 - posYChildTask) + "px", + width: "1px", + left: (posXPreviousTask + widthPreviousTask - 20) + "px", + top: (posYChildTask + 2) + "px" + }); + dojo.addClass(lineHorizontal, "ganttTaskLineHorizontalPlus"); + dojo.style(lineHorizontal, { + width: (15 + (posXChildTask - (widthPreviousTask + posXPreviousTask))) + "px", + left: (posXPreviousTask + widthPreviousTask - 20) + "px", + top: (posYChildTask + 2) + "px" + }); + dojo.addClass(arrowImg, "ganttTaskArrowImgPlus"); + dojo.style(arrowImg, { + left: (posXChildTask - 7) + "px", + top: (posYChildTask - 1) + "px" + }); + } + contentData.appendChild(lineVerticalRight); + contentData.appendChild(lineHorizontal); + contentData.appendChild(arrowImg); + arrLines.push(lineVerticalRight); + arrLines.push(arrowImg); + arrLines.push(lineHorizontal); + return arrLines; + }, + showChildTasks: function(task, isOpen){ + if(isOpen){ + for(var i = 0; i < task.childTask.length; i++){ + var cTask = task.childTask[i], + cTaskItem0 = cTask.cTaskItem[0], cTaskName0 = cTask.cTaskNameItem[0], + cTaskItem1 = cTask.cTaskItem[1], cTaskName1 = cTask.cTaskNameItem[1], + cTaskItem2 = cTask.cTaskItem[2], cTaskName2 = cTask.cTaskNameItem[2]; + if(cTaskItem0.style.display == "none"){ + cTaskItem0.style.display = "inline"; + cTaskName0.style.display = "inline"; + cTask.showDescTask(); + task.isHide = false; + if(cTaskName2){ + cTaskName2.style.display = "inline"; + isOpen = cTask.isExpanded; + } + for(var k = 0; k < cTaskItem1.length; k++){ + cTaskItem1[k].style.display = "inline"; + } + for(var k = 0; k < cTaskName1.length; k++){ + cTaskName1[k].style.display = "inline"; + } + (cTask.taskIdentifier) && (cTask.taskIdentifier.style.display = "inline"); + this.hideTasksHeight += this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + if(cTask.childTask.length > 0){ + this.showChildTasks(cTask, isOpen); + } + } + } + } + }, + hideChildTasks: function(task){ + for(var i = 0; i < task.childTask.length; i++){ + var cTask = task.childTask[i], + cTaskItem0 = cTask.cTaskItem[0], cTaskName0 = cTask.cTaskNameItem[0], + cTaskItem1 = cTask.cTaskItem[1], cTaskName1 = cTask.cTaskNameItem[1], + cTaskItem2 = cTask.cTaskItem[2], cTaskName2 = cTask.cTaskNameItem[2]; + if(cTaskItem0.style.display != "none"){ + cTaskItem0.style.display = "none"; + cTaskName0.style.display = "none"; + cTask.hideDescTask(); + task.isHide = true; + if(cTaskName2){ + cTaskName2.style.display = "none"; + } + for(var k = 0; k < cTaskItem1.length; k++){ + cTaskItem1[k].style.display = "none"; + } + for(var k = 0; k < cTaskName1.length; k++){ + cTaskName1[k].style.display = "none"; + } + (cTask.taskIdentifier) && (cTask.taskIdentifier.style.display = "none"); + this.hideTasksHeight += (this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra); + if(cTask.childTask.length > 0){ + this.hideChildTasks(cTask); + } + } + } + }, + shiftCurrentTasks: function(task, height){ + this.shiftNextTask(this, height); + task.project.shiftNextProject(task.project, height); + }, + shiftTask: function(task, height){ + task.posY = task.posY + height; + var taskItem0 = task.cTaskItem[0], taskName0 = task.cTaskNameItem[0], + taskItem1 = task.cTaskItem[1], taskName1 = task.cTaskNameItem[1], + taskItem2 = task.cTaskItem[2], taskName2 = task.cTaskNameItem[2]; + taskName0.style.top = parseInt(taskName0.style.top) + height + "px"; + if(taskName2){ + taskName2.style.top = parseInt(taskName2.style.top) + height + "px"; + } + if(task.parentTask){ + if(parseInt(this.cTaskNameItem[0].style.top) > parseInt(task.parentTask.cTaskNameItem[0].style.top) && + (taskName1[0].style.display != "none")){ + taskName1[0].style.height = parseInt(taskName1[0].style.height) + height + "px"; + }else{ + taskName1[0].style.top = parseInt(taskName1[0].style.top) + height + "px"; + } + taskName1[1].style.top = parseInt(taskName1[1].style.top) + height + "px"; + } + taskItem0.style.top = parseInt(taskItem0.style.top) + height + "px"; + task.descrTask.style.top = parseInt(task.descrTask.style.top) + height + "px"; + if(task.predTask){ + if(((parseInt(this.cTaskItem[0].style.top) > parseInt(task.predTask.cTaskItem[0].style.top)) || + (this.cTaskItem[0].id == task.predTask.taskItem.id)) && + taskItem1[0].style.display != "none"){ + taskItem1[0].style.height = parseInt(taskItem1[0].style.height) + height + "px"; + }else{ + taskItem1[0].style.top = parseInt(taskItem1[0].style.top) + height + "px"; + } + taskItem1[1].style.top = parseInt(taskItem1[1].style.top) + height + "px"; + taskItem1[2].style.top = parseInt(taskItem1[2].style.top) + height + "px"; + } + }, + shiftNextTask: function(task, height){ + if(task.nextChildTask){ + this.shiftTask(task.nextChildTask, height); + this.shiftChildTask(task.nextChildTask, height); + this.shiftNextTask(task.nextChildTask, height); + }else if(task.parentTask){ + this.shiftNextTask(task.parentTask, height); + }else if(task.nextParentTask){ + this.shiftTask(task.nextParentTask, height); + this.shiftChildTask(task.nextParentTask, height); + this.shiftNextTask(task.nextParentTask, height); + } + }, + shiftChildTask: function(task, height){ + dojo.forEach(task.childTask, function(cTask){ + this.shiftTask(cTask, height); + if(cTask.childTask.length > 0){ + this.shiftChildTask(cTask, height); + } + }, this); + }, + endMove: function(){ + var cTask0 = this.cTaskItem[0]; + var width = dojo.style(cTask0, "left") - this.posX; + var startTime = this.getDateOnPosition(dojo.style(cTask0, "left")); + startTime = this.checkPos(startTime); + if(this.checkMove){ + width = this.ganttChart.getPosOnDate(startTime) - this.posX; + this.moveCurrentTaskItem(width, this.moveChild); + this.project.shiftProjectItem(); + } + this.checkMove = false; + this.posX = 0; + this.maxPosXMove = -1; + this.minPosXMove = -1; + cTask0.childNodes[1].firstChild.rows[0].cells[0].innerHTML = ""; + this.adjustPanelTime(); + if(this.ganttChart.resource){ + this.ganttChart.resource.refresh(); + } + }, + checkPos: function(startTime){ + var cTask0 = this.cTaskItem[0]; + var h = startTime.getHours(); + if(h >= 12){ + startTime.setDate(startTime.getDate() + 1); + startTime.setHours(0); + if((parseInt(cTask0.firstChild.firstChild.width) + this.ganttChart.getPosOnDate(startTime) > this.maxPosXMove) && (this.maxPosXMove != -1)){ + startTime.setDate(startTime.getDate() - 1); + startTime.setHours(0); + } + }else if((h < 12) && (h != 0)){ + startTime.setHours(0); + if((this.ganttChart.getPosOnDate(startTime) < this.minPosXMove)){ + startTime.setDate(startTime.getDate() + 1); + } + } + cTask0.style.left = this.ganttChart.getPosOnDate(startTime) + "px"; + return startTime; + }, + getMaxPosPredChildTaskItem: function(){ + var posPredChildTaskItem = 0; + var nextPosPredChildTaskItem = 0; + for(var i = 0; i < this.childPredTask.length; i++){ + nextPosPredChildTaskItem = this.getMaxPosPredChildTaskItemInTree(this.childPredTask[i]); + if(nextPosPredChildTaskItem > posPredChildTaskItem){ + posPredChildTaskItem = nextPosPredChildTaskItem; + } + } + return posPredChildTaskItem; + }, + getMaxPosPredChildTaskItemInTree: function(task){ + var cTask0 = task.cTaskItem[0]; + var currentPos = parseInt(cTask0.firstChild.firstChild.width) + dojo.style(cTask0, "left"); + var posPredChildTaskItem = 0; + var nextPosPredChildTaskItem = 0; + dojo.forEach(task.childPredTask, function(cpTask){ + nextPosPredChildTaskItem = this.getMaxPosPredChildTaskItemInTree(cpTask); + if(nextPosPredChildTaskItem > posPredChildTaskItem){ + posPredChildTaskItem = nextPosPredChildTaskItem; + } + }, this); + return posPredChildTaskItem > currentPos ? posPredChildTaskItem : currentPos; + }, + moveCurrentTaskItem: function(width, moveChild){ + var taskItem = this.cTaskItem[0]; + this.taskItem.startTime = new Date(this.ganttChart.startDate); + this.taskItem.startTime.setHours(this.taskItem.startTime.getHours() + (parseInt(taskItem.style.left) / this.ganttChart.pixelsPerHour)); + this.showDescTask(); + var cTask1 = this.cTaskItem[1]; + if(cTask1.length > 0){ + cTask1[2].style.width = parseInt(cTask1[2].style.width) + width + "px"; + cTask1[1].style.left = parseInt(cTask1[1].style.left) + width + "px"; + } + dojo.forEach(this.childTask, function(cTask){ + if(!cTask.predTask){ + this.moveChildTaskItems(cTask, width, moveChild); + } + }, this); + dojo.forEach(this.childPredTask, function(cpTask){ + this.moveChildTaskItems(cpTask, width, moveChild); + }, this); + }, + moveChildTaskItems: function(task, width, moveChild){ + var taskItem = task.cTaskItem[0]; + if(moveChild){ + taskItem.style.left = parseInt(taskItem.style.left) + width + "px"; + task.adjustPanelTime(); + task.taskItem.startTime = new Date(this.ganttChart.startDate); + task.taskItem.startTime.setHours(task.taskItem.startTime.getHours() + (parseInt(taskItem.style.left) / this.ganttChart.pixelsPerHour)); + var ctItem = task.cTaskItem[1]; + dojo.forEach(ctItem, function(item){ + item.style.left = parseInt(item.style.left) + width + "px"; + }, this); + dojo.forEach(task.childTask, function(cTask){ + if(!cTask.predTask){ + this.moveChildTaskItems(cTask, width, moveChild); + } + }, this); + dojo.forEach(task.childPredTask, function(cpTask){ + this.moveChildTaskItems(cpTask, width, moveChild); + }, this); + }else{ + var ctItem = task.cTaskItem[1]; + if(ctItem.length > 0){ + var item0 = ctItem[0], item2 = ctItem[2]; + item2.style.left = parseInt(item2.style.left) + width + "px"; + item2.style.width = parseInt(item2.style.width) - width + "px"; + item0.style.left = parseInt(item0.style.left) + width + "px"; + } + } + task.moveDescTask(); + }, + adjustPanelTime: function(){ + var taskItem = this.cTaskItem[0]; + var width = parseInt(taskItem.style.left) + parseInt(taskItem.firstChild.firstChild.width) + this.ganttChart.panelTimeExpandDelta; + width += this.descrTask.offsetWidth; + this.ganttChart.adjustPanelTime(width); + }, + getDateOnPosition: function(position){ + var date = new Date(this.ganttChart.startDate); + date.setHours(date.getHours() + (position / this.ganttChart.pixelsPerHour)); + return date; + }, + moveItem: function(event){ + var pageX = event.screenX; + var posTaskItem = (this.posX + (pageX - this.mouseX)); + var widthTaskItem = parseInt(this.cTaskItem[0].childNodes[0].firstChild.width); + var posTaskItemR = posTaskItem + widthTaskItem; + if(this.checkMove){ + if(((this.minPosXMove <= posTaskItem)) && + ((posTaskItemR <= this.maxPosXMove) || (this.maxPosXMove == -1))){ + this.moveTaskItem(posTaskItem); + } + } + }, + moveTaskItem: function(posX){ + var cTask = this.cTaskItem[0]; + cTask.style.left = posX + "px"; + cTask.childNodes[1].firstChild.rows[0].cells[0].innerHTML = this.getDateOnPosition(posX).getDate() + '.' + (this.getDateOnPosition(posX).getMonth() + 1) + '.' + this.getDateOnPosition(posX).getUTCFullYear(); + }, + resizeItem: function(event){ + if(this.checkResize){ + var taskItem = this.cTaskItem[0]; + var mouseX = event.screenX; + var width = (mouseX - this.mouseX); + var widthTaskItem = this.taskItemWidth + (mouseX - this.mouseX); + if(widthTaskItem >= this.taskItemWidth){ + if((widthTaskItem <= this.maxWidthResize) || (this.maxWidthResize == -1)){ + this.resizeTaskItem(widthTaskItem); + }else if((this.maxWidthResize != -1) && (widthTaskItem > this.maxWidthResize)){ + this.resizeTaskItem(this.maxWidthResize); + } + }else if(widthTaskItem <= this.taskItemWidth){ + if(widthTaskItem >= this.minWidthResize){ + this.resizeTaskItem(widthTaskItem); + }else if(widthTaskItem < this.minWidthResize){ + this.resizeTaskItem(this.minWidthResize); + } + } + } + }, + resizeTaskItem: function(width){ + var taskItem = this.cTaskItem[0]; + var countHours = Math.round(width / this.ganttChart.pixelsPerWorkHour); + var trow = taskItem.childNodes[0].firstChild.rows[0], + rc0 = trow.cells[0], rc1 = trow.cells[1]; + rc0 && (rc0.firstChild.style.width = parseInt(rc0.width) * width / 100 + "px"); + rc1 && (rc1.firstChild.style.width = parseInt(rc1.width) * width / 100 + "px"); + taskItem.childNodes[0].firstChild.width = width + "px"; + taskItem.childNodes[1].firstChild.width = width + "px"; + //resize info + this.cTaskItem[0].childNodes[1].firstChild.rows[0].cells[0].innerHTML = countHours; + var tcNode2 = taskItem.childNodes[2]; + tcNode2.childNodes[0].style.width = width + "px"; + tcNode2.childNodes[1].style.left = width - 10 + "px"; + }, + endResizeItem: function(){ + var taskItem = this.cTaskItem[0]; + if((this.taskItemWidth != parseInt(taskItem.childNodes[0].firstChild.width))){ + var posXL = taskItem.offsetLeft; + var posXR = taskItem.offsetLeft + parseInt(taskItem.childNodes[0].firstChild.width); + var countHours = Math.round((posXR - posXL) / this.ganttChart.pixelsPerWorkHour); + this.taskItem.duration = countHours; + if(this.childPredTask.length > 0){ + for(var j = 0; j < this.childPredTask.length; j++){ + var cpctItem = this.childPredTask[j].cTaskItem[1], + item0 = cpctItem[0], item2 = cpctItem[2], tcNode0 = taskItem.childNodes[0]; + item2.style.width = parseInt(item2.style.width) - (parseInt(tcNode0.firstChild.width) - this.taskItemWidth) + "px"; + item2.style.left = parseInt(item2.style.left) + (parseInt(tcNode0.firstChild.width) - this.taskItemWidth) + "px"; + item0.style.left = parseInt(item0.style.left) + (parseInt(tcNode0.firstChild.width) - this.taskItemWidth) + "px"; + } + } + } + this.cTaskItem[0].childNodes[1].firstChild.rows[0].cells[0].innerHTML = ""; + this.checkResize = false; + this.taskItemWidth = 0; + this.mouseX = 0; + this.showDescTask(); + this.project.shiftProjectItem(); + this.adjustPanelTime(); + if(this.ganttChart.resource){ + this.ganttChart.resource.refresh(); + } + }, + startMove: function(event){ + this.moveChild = event.ctrlKey; + this.mouseX = event.screenX; + this.getMoveInfo(); + this.checkMove = true; + this.hideDescTask(); + }, + showDescTask: function(){ + var posX = (parseInt(this.cTaskItem[0].style.left) + this.taskItem.duration * this.ganttChart.pixelsPerWorkHour + 10); + this.descrTask.style.left = posX + "px"; + this.descrTask.innerHTML = this.objKeyToStr(this.getTaskOwner()); + this.descrTask.style.visibility = 'visible'; + }, + hideDescTask: function(){ + dojo.style(this.descrTask, "visibility", "hidden"); + }, + buildResourceInfo: function(resourceInfo){ + if(this.childTask && this.childTask.length > 0){ + for(var i = 0; i < this.childTask.length; i++){ + var cTask = this.childTask[i]; + cTask.buildResourceInfo(resourceInfo); + } + } + if(dojo.trim(this.taskItem.taskOwner).length > 0){ + var owners = this.taskItem.taskOwner.split(";"); + for(var i = 0; i < owners.length; i++){ + var o = owners[i]; + if(dojo.trim(o).length <= 0){ + continue; + } + resourceInfo[o] ? (resourceInfo[o].push(this)) : (resourceInfo[o] = [this]); + } + } + }, + objKeyToStr: function(obj, delm){ + var returnStr = ""; + delm = delm || " "; + if(obj){ + for(var key in obj){ + returnStr += delm + key; + } + } + return returnStr; + }, + getTaskOwner: function(){ + var tOwner = {}; + if(dojo.trim(this.taskItem.taskOwner).length > 0){ + var owners = this.taskItem.taskOwner.split(";"); + for(var i = 0; i < owners.length; i++){ + var o = owners[i]; + tOwner[o] = 1; + } + } + dojo.forEach(this.childTask, function(ctask){ + dojo.mixin(tOwner, ctask.getTaskOwner()); + }, this); + return tOwner; + }, + moveDescTask: function(){ + var posX = (parseInt(this.cTaskItem[0].style.left) + this.taskItem.duration * this.ganttChart.pixelsPerWorkHour + 10); + this.descrTask.style.left = posX + "px"; + }, + getMoveInfo: function(){ + this.posX = parseInt(this.cTaskItem[0].style.left); + var widthTaskItem = parseInt(this.cTaskItem[0].childNodes[0].firstChild.width); + var posParentTaskItem = !this.parentTask ? 0 : parseInt(this.parentTask.cTaskItem[0].style.left); + var posPredTaskItem = !this.predTask ? 0 : parseInt(this.predTask.cTaskItem[0].style.left) + parseInt(this.predTask.cTaskItem[0].childNodes[0].firstChild.width); + var widthParentTaskItem = !this.parentTask ? 0 : parseInt(this.parentTask.cTaskItem[0].childNodes[0].firstChild.width); + + var childPredPosX = 0; + var childParentPosX = 0; + var childParentPosXR = 0; + if(this.childPredTask.length > 0){ + var posChildTaskItem = null; + dojo.forEach(this.childPredTask, function(cpTask){ + if((!posChildTaskItem) || ((posChildTaskItem) && (posChildTaskItem > parseInt(cpTask.cTaskItem[0].style.left)))){ + posChildTaskItem = parseInt(cpTask.cTaskItem[0].style.left); + } + }, this); + childPredPosX = posChildTaskItem; + } + if(this.childTask.length > 0){ + var posChildTaskItemR = null; + dojo.forEach(this.childTask, function(cTask){ + if((!posChildTaskItemR) || ((posChildTaskItemR) && (posChildTaskItemR > (parseInt(cTask.cTaskItem[0].style.left))))){ + posChildTaskItemR = parseInt(cTask.cTaskItem[0].style.left); + } + }, this); + childParentPosXR = posChildTaskItemR; + var posChildTaskItem = null; + dojo.forEach(this.childTask, function(cTask){ + if((!posChildTaskItem) || ((posChildTaskItem) + && (posChildTaskItem < (parseInt(cTask.cTaskItem[0].style.left) + parseInt(cTask.cTaskItem[0].firstChild.firstChild.width))))){ + posChildTaskItem = parseInt(cTask.cTaskItem[0].style.left) + parseInt(cTask.cTaskItem[0].firstChild.firstChild.width); + } + }, this); + childParentPosX = posChildTaskItem; + } + if(!this.moveChild){ + if(this.childPredTask.length > 0){ + if(this.maxPosXMove < childPredPosX) this.maxPosXMove = childPredPosX; + } + if(this.childTask.length > 0){ + if((this.childPredTask.length > 0) && (this.maxPosXMove - widthTaskItem) > childParentPosXR){ + this.maxPosXMove = this.maxPosXMove - ((this.maxPosXMove - widthTaskItem) - childParentPosXR); + } + if(!(this.childPredTask.length > 0)){ + this.maxPosXMove = childParentPosXR + widthTaskItem; + } + this.minPosXMove = (childParentPosX - widthTaskItem); + } + if(posParentTaskItem > 0){ + if((!(this.childPredTask.length > 0)) && (this.childTask.length > 0)){ + if(this.maxPosXMove > posParentTaskItem + widthParentTaskItem){ + this.maxPosXMove = posParentTaskItem + widthParentTaskItem; + } + } + if(this.minPosXMove <= posParentTaskItem){ + this.minPosXMove = posParentTaskItem; + } + if((!(this.childTask.length > 0)) && (!(this.childPredTask.length > 0))){ + this.maxPosXMove = posParentTaskItem + widthParentTaskItem; + }else if((!(this.childTask.length > 0)) && (this.childPredTask.length > 0)){ + if((posParentTaskItem + widthParentTaskItem) > posPredTaskItem){ + this.maxPosXMove = childPredPosX; + } + } + } + if(posPredTaskItem > 0){ + if(this.minPosXMove <= posPredTaskItem){ + this.minPosXMove = posPredTaskItem; + } + } + if((posPredTaskItem == 0) && (posParentTaskItem == 0)){ + if(this.minPosXMove <= this.ganttChart.initialPos){ + this.minPosXMove = this.ganttChart.initialPos; + } + } + }else{ + if((posParentTaskItem > 0) && (posPredTaskItem == 0)){ + this.minPosXMove = posParentTaskItem; + this.maxPosXMove = posParentTaskItem + widthParentTaskItem; + }else if((posParentTaskItem == 0) && (posPredTaskItem == 0)){ + this.minPosXMove = this.ganttChart.initialPos; + this.maxPosXMove = -1; + }else if((posParentTaskItem > 0) && (posPredTaskItem > 0)){ + this.minPosXMove = posPredTaskItem; + this.maxPosXMove = posParentTaskItem + widthParentTaskItem; + }else if((posParentTaskItem == 0) && (posPredTaskItem > 0)){ + this.minPosXMove = posPredTaskItem; + this.maxPosXMove = -1; + } + if((this.parentTask) && (this.childPredTask.length > 0)){ + var posChildTaskItem = this.getMaxPosPredChildTaskItem(this); + var posParentTaskItem = parseInt(this.parentTask.cTaskItem[0].style.left) + parseInt(this.parentTask.cTaskItem[0].firstChild.firstChild.width); + this.maxPosXMove = this.posX + widthTaskItem + posParentTaskItem - posChildTaskItem; + } + } + }, + startResize: function(event){ + this.mouseX = event.screenX; + this.getResizeInfo(); + this.hideDescTask(); + this.checkResize = true; + this.taskItemWidth = parseInt(this.cTaskItem[0].firstChild.firstChild.width); + }, + getResizeInfo: function(){ + var cTask = this.cTaskItem[0]; + var posParentTaskItem = !this.parentTask ? 0 : parseInt(this.parentTask.cTaskItem[0].style.left); + var widthParentTaskItem = !this.parentTask ? 0 : parseInt(this.parentTask.cTaskItem[0].childNodes[0].firstChild.width); + var posTaskItem = parseInt(cTask.style.left); + var childPredPosX = 0; + var childParentPosX = 0; + if(this.childPredTask.length > 0){ + var posChildTaskItem = null; + dojo.forEach(this.childPredTask, function(cpTask){ + if((!posChildTaskItem) || ((posChildTaskItem) && (posChildTaskItem > parseInt(cpTask.cTaskItem[0].style.left)))){ + posChildTaskItem = parseInt(cpTask.cTaskItem[0].style.left); + } + }, this); + childPredPosX = posChildTaskItem; + } + if(this.childTask.length > 0){ + var posChildTaskItem = null; + dojo.forEach(this.childTask, function(cTask){ + if((!posChildTaskItem) || ((posChildTaskItem) && (posChildTaskItem < (parseInt(cTask.cTaskItem[0].style.left) + parseInt(cTask.cTaskItem[0].firstChild.firstChild.width))))){ + posChildTaskItem = parseInt(cTask.cTaskItem[0].style.left) + parseInt(cTask.cTaskItem[0].firstChild.firstChild.width); + } + }, this); + childParentPosX = posChildTaskItem; + } + this.minWidthResize = this.ganttChart.pixelsPerDay; + if(this.childTask.length > 0){ + this.minWidthResize = childParentPosX - posTaskItem; + } + if((this.childPredTask.length > 0) && (!this.parentTask)){ + this.maxWidthResize = childPredPosX - posTaskItem; + }else if((this.childPredTask.length > 0) && (this.parentTask)){ + var w1 = posParentTaskItem + widthParentTaskItem - posTaskItem; + var w2 = childPredPosX - posTaskItem; + this.maxWidthResize = Math.min(w1, w2); + }else if((this.childPredTask.length == 0) && (this.parentTask)){ + this.maxWidthResize = posParentTaskItem + widthParentTaskItem - posTaskItem; + } + }, + createTaskItem: function(){ + this.posX = this.ganttChart.getPosOnDate(this.taskItem.startTime); + var itemControl = dojo.create("div", { + id: this.taskItem.id, + className: "ganttTaskItemControl" + }); + dojo.style(itemControl, { + left: this.posX + "px", + top: this.posY + "px" + }); + var divTaskItem = dojo.create("div", {className: "ganttTaskDivTaskItem"}, itemControl); + var tblTaskItem = dojo.create("table", { + cellPadding: "0", + cellSpacing: "0", + width: this.taskItem.duration * this.ganttChart.pixelsPerWorkHour + "px", + className: "ganttTaskTblTaskItem" + }, divTaskItem); + var rowTblTask = tblTaskItem.insertRow(tblTaskItem.rows.length); + if(this.taskItem.percentage != 0){ + var cellTblTask = dojo.create("td", { + height: this.ganttChart.heightTaskItem + "px", + width: this.taskItem.percentage + "%" + }, rowTblTask); + cellTblTask.style.lineHeight = "1px"; + var imageProgress = dojo.create("div", { + className: "ganttImageTaskProgressFilled" + }, cellTblTask); + dojo.style(imageProgress, { + width: (this.taskItem.percentage * this.taskItem.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + if(this.taskItem.percentage != 100){ + var cellTblTask = dojo.create("td", { + height: this.ganttChart.heightTaskItem + "px", + width: (100 - this.taskItem.percentage) + "%" + }, rowTblTask); + cellTblTask.style.lineHeight = "1px"; + var imageProgressFill = dojo.create("div", { + className: "ganttImageTaskProgressBg" + }, cellTblTask); + dojo.style(imageProgressFill, { + width: ((100 - this.taskItem.percentage) * this.taskItem.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + if(this.ganttChart.isContentEditable){ + var divTaskInfo = dojo.create("div", {className: "ganttTaskDivTaskInfo"}, itemControl); + var tblTaskInfo = dojo.create("table", { + cellPadding: "0", + cellSpacing: "0", + height: this.ganttChart.heightTaskItem + "px", + width: this.taskItem.duration * this.ganttChart.pixelsPerWorkHour + "px" + }, divTaskInfo); + var rowTaskInfo = tblTaskInfo.insertRow(0); + var cellTaskInfo = dojo.create("td", { + align: "center", + vAlign: "top", + height: this.ganttChart.heightTaskItem + "px", + className: "ganttMoveInfo" + }, rowTaskInfo); + var divTaskName = dojo.create("div", {className: "ganttTaskDivTaskName"}, itemControl); + var divMove = dojo.create("div", {}, divTaskName); + dojo.create("input", { + className: "ganttTaskDivMoveInput", + type: "text" + }, divMove); + dojo.isIE && dojo.style(divMove, { + background: "#000000", + filter: "alpha(opacity=0)" + }); + dojo.style(divMove, { + height: this.ganttChart.heightTaskItem + "px", + width: this.taskItem.duration * this.ganttChart.pixelsPerWorkHour + "px" + }); + //Creation resize area + var divResize = dojo.create("div", {className: "ganttTaskDivResize"}, divTaskName); + dojo.create("input", { + className: "ganttTaskDivResizeInput", + type: "text" + }, divResize); + dojo.style(divResize, { + left: (this.taskItem.duration * this.ganttChart.pixelsPerWorkHour - 10) + "px", + height: this.ganttChart.heightTaskItem + "px", + width: "10px" + }); + this.ganttChart._events.push( + dojo.connect(divMove, "onmousedown", this, function(event){ + //start move + this.moveMoveConn = dojo.connect(document, "onmousemove", this, function(e){ + this.checkMove && this.moveItem(e); + }); + this.moveUpConn = dojo.connect(document, "onmouseup", this, function(e){ + if(this.checkMove){ + this.endMove(); + this.ganttChart.isMoving = false; + document.body.releaseCapture && document.body.releaseCapture(); + dojo.disconnect(this.moveMoveConn); + dojo.disconnect(this.moveUpConn); + } + }); + this.startMove(event); + this.ganttChart.isMoving = true; + document.body.setCapture && document.body.setCapture(false); + }) + ); + this.ganttChart._events.push( + dojo.connect(divMove, "onmouseover", this, function(event){ + event.target && (event.target.style.cursor = "move"); + }) + ); + this.ganttChart._events.push( + dojo.connect(divMove, "onmouseout", this, function(event){ + event.target.style.cursor = ""; + }) + ); + this.ganttChart._events.push( + dojo.connect(divResize, "onmousedown", this, function(event){ + //start resize + this.resizeMoveConn = dojo.connect(document, "onmousemove", this, function(e){ + this.checkResize && this.resizeItem(e); + }); + this.resizeUpConn = dojo.connect(document, "onmouseup", this, function(e){ + if(this.checkResize){ + this.endResizeItem(); + this.ganttChart.isResizing = false; + document.body.releaseCapture && document.body.releaseCapture(); + dojo.disconnect(this.resizeMoveConn); + dojo.disconnect(this.resizeUpConn); + } + }); + this.startResize(event); + this.ganttChart.isResizing = true; + document.body.setCapture && document.body.setCapture(false); + }) + ); + this.ganttChart._events.push( + dojo.connect(divResize, "onmouseover", this, function(event){ + (!this.ganttChart.isMoving) && (!this.ganttChart.isResizing) && event.target && (event.target.style.cursor = "e-resize"); + }) + ); + this.ganttChart._events.push( + dojo.connect(divResize, "onmouseout", this, function(event){ + !this.checkResize && event.target && (event.target.style.cursor = ""); + }) + ); + } + return itemControl; + }, + createTaskNameItem: function(){ + var divName = dojo.create("div", { + id: this.taskItem.id, + className: "ganttTaskTaskNameItem", + title: this.taskItem.name + ", id: " + this.taskItem.id + " ", + innerHTML: this.taskItem.name + }); + dojo.style(divName, "top", this.posY + "px"); + dojo.attr(divName, "tabIndex", 0); + if(this.ganttChart.isShowConMenu){ + this.ganttChart._events.push( + dojo.connect(divName, "onmouseover", this, function(event){ + dojo.addClass(divName, "ganttTaskTaskNameItemHover"); + clearTimeout(this.ganttChart.menuTimer); + this.ganttChart.tabMenu.clear(); + this.ganttChart.tabMenu.show(event.target, this); + }) + ); + this.ganttChart._events.push( + dojo.connect(divName, "onkeydown", this, function(event){ + if(event.keyCode == dojo.keys.ENTER){ + this.ganttChart.tabMenu.clear(); + this.ganttChart.tabMenu.show(event.target, this); + } + if(this.ganttChart.tabMenu.isShow && (event.keyCode == dojo.keys.LEFT_ARROW || event.keyCode == dojo.keys.RIGHT_ARROW)){ + dijit.focus(this.ganttChart.tabMenu.menuPanel.firstChild.rows[0].cells[0]); + } + if(this.ganttChart.tabMenu.isShow && event.keyCode == dojo.keys.ESCAPE){ + this.ganttChart.tabMenu.hide(); + } + }) + ); + this.ganttChart._events.push( + dojo.connect(divName, "onmouseout", this, function(){ + dojo.removeClass(divName, "ganttTaskTaskNameItemHover"); + clearTimeout(this.ganttChart.menuTimer); + this.ganttChart.menuTimer = setTimeout(dojo.hitch(this, function(){ + this.ganttChart.tabMenu.hide(); + }), 200); + }) + ); + this.ganttChart._events.push( + dojo.connect(this.ganttChart.tabMenu.menuPanel, "onmouseover", this, function(){ + clearTimeout(this.ganttChart.menuTimer); + }) + ); + this.ganttChart._events.push( + dojo.connect(this.ganttChart.tabMenu.menuPanel, "onkeydown", this, function(event){ + if(this.ganttChart.tabMenu.isShow && event.keyCode == dojo.keys.ESCAPE){ + this.ganttChart.tabMenu.hide(); + } + }) + ); + this.ganttChart._events.push( + dojo.connect(this.ganttChart.tabMenu.menuPanel, "onmouseout", this, function(){ + clearTimeout(this.ganttChart.menuTimer); + this.ganttChart.menuTimer = setTimeout(dojo.hitch(this, function(){ + this.ganttChart.tabMenu.hide(); + }), 200); + }) + ); + } + return divName; + }, + createTaskDescItem: function(){ + var posX = (this.posX + this.taskItem.duration * this.ganttChart.pixelsPerWorkHour + 10); + var divDesc = dojo.create("div", { + innerHTML: this.objKeyToStr(this.getTaskOwner()), + className: "ganttTaskDescTask" + }); + dojo.style(divDesc, { + left: posX + "px", + top: this.posY + "px" + }); + return this.descrTask = divDesc; + }, + checkWidthTaskNameItem: function(){ + if(this.cTaskNameItem[0].offsetWidth + this.cTaskNameItem[0].offsetLeft > this.ganttChart.maxWidthTaskNames){ + var width = this.cTaskNameItem[0].offsetWidth + this.cTaskNameItem[0].offsetLeft - this.ganttChart.maxWidthTaskNames; + var countChar = Math.round(width / (this.cTaskNameItem[0].offsetWidth / this.cTaskNameItem[0].firstChild.length)); + var tName = this.taskItem.name.substring(0, this.cTaskNameItem[0].firstChild.length - countChar - 3); + tName += "..."; + this.cTaskNameItem[0].innerHTML = tName; + } + }, + refreshTaskItem: function(itemControl){ + this.posX = this.ganttChart.getPosOnDate(this.taskItem.startTime); + dojo.style(itemControl, { + "left": this.posX + "px" + }); + var divTaskItem = itemControl.childNodes[0]; + var tblTaskItem = divTaskItem.firstChild; + tblTaskItem.width = (!this.taskItem.duration ? 1 : this.taskItem.duration * this.ganttChart.pixelsPerWorkHour) + "px"; + var rowTblTask = tblTaskItem.rows[0]; + if(this.taskItem.percentage != 0){ + var cellTblTask = rowTblTask.firstChild; + cellTblTask.height = this.ganttChart.heightTaskItem + "px"; + cellTblTask.width = this.taskItem.percentage + "%"; + cellTblTask.style.lineHeight = "1px"; + var imageProgress = cellTblTask.firstChild; + dojo.style(imageProgress, { + width: (!this.taskItem.duration ? 1 : (this.taskItem.percentage * this.taskItem.duration * this.ganttChart.pixelsPerWorkHour / 100)) + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + if(this.taskItem.percentage != 100){ + var cellTblTask = rowTblTask.lastChild; + cellTblTask.height = this.ganttChart.heightTaskItem + "px"; + cellTblTask.width = (100 - this.taskItem.percentage) + "%"; + cellTblTask.style.lineHeight = "1px"; + var imageProgressFill = cellTblTask.firstChild; + dojo.style(imageProgressFill, { + width: (!this.taskItem.duration ? 1 : ((100 - this.taskItem.percentage) * this.taskItem.duration * this.ganttChart.pixelsPerWorkHour / 100)) + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + if(this.ganttChart.isContentEditable){ + var divTaskInfo = itemControl.childNodes[1]; + var tblTaskInfo = divTaskInfo.firstChild; + tblTaskInfo.height = this.ganttChart.heightTaskItem + "px"; + tblTaskInfo.width = (!this.taskItem.duration ? 1 : (this.taskItem.duration * this.ganttChart.pixelsPerWorkHour)) + "px"; + var rowTaskInfo = tblTaskInfo.rows[0]; + var cellTaskInfo = rowTaskInfo.firstChild; + cellTaskInfo.height = this.ganttChart.heightTaskItem + "px"; + var divTaskName = itemControl.childNodes[2]; + var divMove = divTaskName.firstChild; + divMove.style.height = this.ganttChart.heightTaskItem + "px"; + divMove.style.width = (!this.taskItem.duration ? 1 : (this.taskItem.duration * this.ganttChart.pixelsPerWorkHour)) + "px"; + //Creation resize area + var divResize = divTaskName.lastChild; + dojo.style(divResize, { + "left": (this.taskItem.duration * this.ganttChart.pixelsPerWorkHour - 10) + "px" + }); + divResize.style.height = this.ganttChart.heightTaskItem + "px"; + divResize.style.width = "10px"; + } + return itemControl; + }, + refreshTaskDesc: function(divDesc){ + var posX = (this.posX + this.taskItem.duration * this.ganttChart.pixelsPerWorkHour + 10); + dojo.style(divDesc, { + "left": posX + "px" + }); + return divDesc; + }, + refreshConnectingLinesDS: function(arrLines){ + var arrowImg = arrLines[1]; + var lineVerticalRight = arrLines[0]; + //horizontal line + var lineHorizontal = arrLines[2]; + var posXPreviousTask = dojo.style(this.predTask.cTaskItem[0], "left"); + var posYPreviousTask = dojo.style(this.predTask.cTaskItem[0], "top"); + var posXChildTask = dojo.style(this.cTaskItem[0], "left"); + var posYChildTask = this.posY + 2; + //width task item + var widthChildTask = parseInt(this.predTask.cTaskItem[0].firstChild.firstChild.width); + var widthPreviousTask = parseInt(this.predTask.cTaskItem[0].firstChild.firstChild.width); + if(posYPreviousTask < posYChildTask){ + dojo.style(lineVerticalRight, { + "height": (posYChildTask - this.ganttChart.heightTaskItem / 2 - posYPreviousTask - 3) + "px", + "left": (posXPreviousTask + widthPreviousTask - 20) + "px" + }); + dojo.style(lineHorizontal, { + "width": (15 + (posXChildTask - (widthPreviousTask + posXPreviousTask))) + "px", + "left": (posXPreviousTask + widthPreviousTask - 20) + "px" + }); + + dojo.style(arrowImg, { + "left": (posXChildTask - 7) + "px" + }); + }else{ + dojo.style(lineVerticalRight, { + "height": (posYPreviousTask + 2 - posYChildTask) + "px", + "left": (posXPreviousTask + widthPreviousTask - 20) + "px" + }); + dojo.style(lineHorizontal, { + "width": (15 + (posXChildTask - (widthPreviousTask + posXPreviousTask))) + "px", + "left": (posXPreviousTask + widthPreviousTask - 20) + "px" + }); + dojo.style(arrowImg, { + "left": (posXChildTask - 7) + "px" + }); + } + return arrLines; + }, + postLoadData: function(){ + //TODO e.g. task relative info... + }, + refresh: function(){ + if(this.childTask && this.childTask.length > 0){ + dojo.forEach(this.childTask, function(cTask){ + cTask.refresh(); + }, this); + } + //creation task item + this.refreshTaskItem(this.cTaskItem[0]); + this.refreshTaskDesc(this.cTaskItem[0].nextSibling); + //Create Connecting Lines + var arrConnectingLines = []; + if(this.taskItem.previousTask && this.predTask){ + this.refreshConnectingLinesDS(this.cTaskItem[1]); + } + return this; + }, + create: function(){ + var containerTasks = this.ganttChart.contentData.firstChild; + var containerNames = this.ganttChart.panelNames.firstChild; + var previousTask = this.taskItem.previousTask; + var parentTask = this.taskItem.parentTask; + var isCParentTask = (this.taskItem.cldTasks.length > 0) ? true : false; + this.cTaskItem = []; + this.cTaskNameItem = []; + //creation arrTasks + if(!parentTask){ + if(this.taskItem.previousParentTask){ + this.previousParentTask = this.project.getTaskById(this.taskItem.previousParentTask.id); + var lastChildTask = this.ganttChart.getLastChildTask(this.previousParentTask); + this.posY = parseInt(lastChildTask.cTaskItem[0].style.top) + + this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + this.previousParentTask.nextParentTask = this; + }else{ + this.posY = parseInt(this.project.projectItem[0].style.top) + + this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + } + } + if(parentTask){ + var task = this.project.getTaskById(this.taskItem.parentTask.id); + this.parentTask = task; + + if(this.taskItem.previousChildTask){ + this.previousChildTask = this.project.getTaskById(this.taskItem.previousChildTask.id); + var lastChildTask = this.ganttChart.getLastChildTask(this.previousChildTask); + this.posY = dojo.style(lastChildTask.cTaskItem[0], "top") + + this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + this.previousChildTask.nextChildTask = this; + }else{ + this.posY = dojo.style(task.cTaskItem[0], "top") + + this.ganttChart.heightTaskItem + this.ganttChart.heightTaskItemExtra; + } + task.childTask.push(this); + } + if(previousTask){ + var task = this.project.getTaskById(previousTask.id); + this.predTask = task; + task.childPredTask.push(this); + } + //creation task item + this.cTaskItem.push(this.createTaskItem()); + containerTasks.appendChild(this.cTaskItem[0]); + if(this.ganttChart.panelNames){ + this.cTaskNameItem.push(this.createTaskNameItem()); + this.ganttChart.panelNames.firstChild.appendChild(this.cTaskNameItem[0]); + } + containerTasks.appendChild(this.createTaskDescItem()); + //Create Connecting Lines + var arrConnectingLines = []; + if(previousTask){ + arrConnectingLines = this.createConnectingLinesDS(); + } + this.cTaskItem.push(arrConnectingLines); + if(this.ganttChart.panelNames){ + //Create Connecting Lines + var arrConnectingLinesNames = []; + if(parentTask){ + this.cTaskNameItem[0].style.left = dojo.style(this.parentTask.cTaskNameItem[0], "left") + 15 + "px"; + arrConnectingLinesNames = this.createConnectingLinesPN(); + } + this.checkWidthTaskNameItem(); + //Identifier + this.checkPosition(); + var treeImg = null; + if(isCParentTask){ + treeImg = this.createTreeImg(); + } + this.cTaskNameItem.push(arrConnectingLinesNames); + this.cTaskNameItem.push(treeImg); + } + this.adjustPanelTime(); + return this; + }, + checkPosition: function(){ + //task name position: check Task Identifier + if(!this.ganttChart.withTaskId){ + return; + } + var pos = dojo.coords(this.cTaskNameItem[0], true); + if(this.taskIdentifier){ + if(this.childTask && this.childTask.length > 0){ + dojo.forEach(this.childTask, function(cTask){ + cTask.checkPosition(); + }, this); + } + dojo.style(this.taskIdentifier, { + "left": (pos.l + pos.w + 4) + "px", + "top": (pos.t - 1) + "px" + }); + }else{ + this.taskIdentifier = dojo.create("div", { + id: "TaskId_" + this.taskItem.id, + className: "ganttTaskIdentifier", + title: this.taskItem.id, + innerHTML: this.taskItem.id + }, this.cTaskNameItem[0].parentNode); + dojo.style(this.taskIdentifier, { + left: (pos.l + pos.w + 4) + "px", + top: (pos.t - 1) + "px" + }); + } + }, + createTreeImg: function(){ + var treeImg = dojo.create("div", { + id: this.taskItem.id, + className: "ganttImageTreeCollapse" + }); + dojo.attr(treeImg, "tabIndex", 0); + dojo.forEach(["onclick", "onkeydown"], function(e){ + this.ganttChart._events.push( + dojo.connect(treeImg, e, this, function(evt){ + if(e == "onkeydown" && evt.keyCode != dojo.keys.ENTER){ return; } + if(this.isExpanded){ + dojo.removeClass(treeImg, "ganttImageTreeCollapse"); + dojo.addClass(treeImg, "ganttImageTreeExpand"); + this.isExpanded = false; + this.hideChildTasks(this); + this.shiftCurrentTasks(this, -this.hideTasksHeight); + this.ganttChart.checkPosition(); + }else{ + dojo.removeClass(treeImg, "ganttImageTreeExpand"); + dojo.addClass(treeImg, "ganttImageTreeCollapse"); + this.isExpanded = true; + this.shiftCurrentTasks(this, this.hideTasksHeight); + this.showChildTasks(this, true); + this.hideTasksHeight = 0; + this.ganttChart.checkPosition(); + } + }) + ); + }, this); + this.ganttChart.panelNames.firstChild.appendChild(treeImg); + dojo.addClass(treeImg, "ganttTaskTreeImage"); + dojo.style(treeImg, { + left: (dojo.style(this.cTaskNameItem[0], "left") - 12) + "px", + top: (dojo.style(this.cTaskNameItem[0], "top") + 3) + "px" + }); + return treeImg; + }, + setPreviousTask: function(previousTaskId){ + if(previousTaskId == ""){ + this.clearPredTask(); + }else{ + var task = this.taskItem; + if(task.id == previousTaskId){ + return false; + } + var predTaskObj = this.project.getTaskById(previousTaskId); + if(!predTaskObj){ + return false; + } + var predTask = predTaskObj.taskItem; + var a1 = predTask.parentTask == null, a2 = task.parentTask == null; + if(a1 && !a2 || !a1 && a2 || !a1 && !a2 && (predTask.parentTask.id != task.parentTask.id)){ + return false; + } + //check time + var startTime = task.startTime.getTime(), + pest = predTask.startTime.getTime(), + pdur = predTask.duration * 24 * 60 * 60 * 1000 / predTaskObj.ganttChart.hsPerDay; + if((pest+pdur) > startTime){ + return false; + } + // remove current connection + this.clearPredTask(); + if(!this.ganttChart.checkPosPreviousTask(predTask, task)){ + this.ganttChart.correctPosPreviousTask(predTask, task, this); + } + task.previousTaskId = previousTaskId; + task.previousTask = predTask; + this.predTask = predTaskObj; + predTaskObj.childPredTask.push(this); + this.cTaskItem[1] = this.createConnectingLinesDS(); + } + return true; + }, + clearPredTask: function(){ + if(this.predTask){ + var ch = this.predTask.childPredTask; + for(var i = 0; i < ch.length; i++){ + if(ch[i] == this){ + ch.splice(i, 1); + break; + } + } + for(var i = 0; i < this.cTaskItem[1].length; i++){ + this.cTaskItem[1][i].parentNode.removeChild(this.cTaskItem[1][i]); + } + this.cTaskItem[1] = []; + this.taskItem.previousTaskId = null; + this.taskItem.previousTask = null; + this.predTask = null; + } + }, + setStartTime: function(startTime, shiftChild){ + this.moveChild = shiftChild; + this.getMoveInfo(); + var pos = this.ganttChart.getPosOnDate(startTime); + if((parseInt(this.cTaskItem[0].firstChild.firstChild.width) + pos > this.maxPosXMove) && (this.maxPosXMove != -1)){ + this.maxPosXMove = -1; + this.minPosXMove = -1; + return false; + } + if(pos < this.minPosXMove){ + this.maxPosXMove = -1; + this.minPosXMove = -1; + return false; + } + this.cTaskItem[0].style.left = pos; + var width = pos - this.posX; + this.moveCurrentTaskItem(width, shiftChild); + this.project.shiftProjectItem(); + this.descrTask.innerHTML = this.objKeyToStr(this.getTaskOwner()); + this.adjustPanelTime(); + this.posX = 0; + this.maxPosXMove = -1; + this.minPosXMove = -1; + return true; + }, + setDuration: function(duration){ + this.getResizeInfo(); + var width = this.ganttChart.getWidthOnDuration(duration); + if((width > this.maxWidthResize) && (this.maxWidthResize != -1)){ + return false; + }else if(width < this.minWidthResize){ + return false; + }else{ + this.taskItemWidth = parseInt(this.cTaskItem[0].firstChild.firstChild.width); + this.resizeTaskItem(width); + this.endResizeItem(); + this.descrTask.innerHTML = this.objKeyToStr(this.getTaskOwner()); + return true; + } + }, + setTaskOwner: function(owner){ + owner = (owner == null || owner == undefined) ? "" : owner; + this.taskItem.taskOwner = owner; + this.descrTask.innerHTML = this.objKeyToStr(this.getTaskOwner()); + return true; + }, + setPercentCompleted: function(percentage){ + percentage = parseInt(percentage); + if(isNaN(percentage) || percentage > 100 || percentage < 0){ + return false; + } + var trow = this.cTaskItem[0].childNodes[0].firstChild.rows[0], + rc0 = trow.cells[0], rc1 = trow.cells[1]; + if((percentage != 0) && (percentage != 100)){ + if((this.taskItem.percentage != 0) && (this.taskItem.percentage != 100)){ + rc0.width = percentage + "%"; + rc1.width = 100 - percentage + "%"; + }else if((this.taskItem.percentage == 0) || (this.taskItem.percentage == 100)){ + rc0.parentNode.removeChild(rc0); + var cellTblTask = dojo.create("td", { + height: this.ganttChart.heightTaskItem + "px", + width: percentage + "%" + }, trow); + cellTblTask.style.lineHeight = "1px"; + var imageProgressFill = dojo.create("div", { + className: "ganttImageTaskProgressFilled" + }, cellTblTask); + dojo.style(imageProgressFill, { + width: (percentage * this.taskItem.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + + cellTblTask = dojo.create("td", { + height: this.ganttChart.heightTaskItem + "px", + width: (100 - percentage) + "%" + }, trow); + cellTblTask.style.lineHeight = "1px"; + imageProgressFill = dojo.create("div", { + className: "ganttImageTaskProgressBg" + }, cellTblTask); + dojo.style(imageProgressFill, { + width: ((100 - percentage) * this.taskItem.duration * this.ganttChart.pixelsPerWorkHour) / 100 + "px", + height: this.ganttChart.heightTaskItem + "px" + }); + } + }else if(percentage == 0){ + if((this.taskItem.percentage != 0) && (this.taskItem.percentage != 100)){ + rc0.parentNode.removeChild(rc0); + rc1.width = 100 + "%"; + }else{ + dojo.removeClass(rc0.firstChild, "ganttImageTaskProgressFilled"); + dojo.addClass(rc0.firstChild, "ganttImageTaskProgressBg"); + } + }else if(percentage == 100){ + if((this.taskItem.percentage != 0) && (this.taskItem.percentage != 100)){ + rc1.parentNode.removeChild(rc1); + rc0.width = 100 + "%"; + }else{ + dojo.removeClass(rc0.firstChild, "ganttImageTaskProgressBg"); + dojo.addClass(rc0.firstChild, "ganttImageTaskProgressFilled"); + } + } + this.taskItem.percentage = percentage; + this.taskItemWidth = parseInt(this.cTaskItem[0].firstChild.firstChild.width); + this.resizeTaskItem(this.taskItemWidth); + this.endResizeItem(); + this.descrTask.innerHTML = this.objKeyToStr(this.getTaskOwner()); + return true; + }, + setName: function(name){ + if(name){ + this.taskItem.name = name; + this.cTaskNameItem[0].innerHTML = name; + this.cTaskNameItem[0].title = name; + this.checkWidthTaskNameItem(); + this.checkPosition(); + this.descrTask.innerHTML = this.objKeyToStr(this.getTaskOwner()); + this.adjustPanelTime(); + } + } +}); + +dojo.declare("dojox.gantt.GanttTaskItem", null, { + constructor: function(configuration){ + //id is required + this.id = configuration.id; + this.name = configuration.name || this.id; + this.startTime = configuration.startTime || new Date(); + this.duration = configuration.duration || 8; + this.percentage = configuration.percentage || 0; + this.previousTaskId = configuration.previousTaskId || ""; + this.taskOwner = configuration.taskOwner || ""; + this.cldTasks = []; + this.cldPreTasks = []; + this.parentTask = null; + this.previousTask = null; + this.project = null; + this.nextChildTask = null; + this.previousChildTask = null; + this.nextParentTask = null; + this.previousParentTask = null; + }, + addChildTask: function(task){ + this.cldTasks.push(task); + task.parentTask = this; + }, + setProject: function(project){ + this.project = project; + for(var j = 0; j < this.cldTasks.length; j++){ + this.cldTasks[j].setProject(project); + } + } +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/TabMenu.js b/js/dojo-release-1.7.2-src/dojox/gantt/TabMenu.js new file mode 100644 index 0000000..ad91843 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/TabMenu.js @@ -0,0 +1,573 @@ +dojo.provide("dojox.gantt.TabMenu"); + +dojo.require("dijit.dijit"); +dojo.require("dijit.Menu"); +dojo.require("dijit.Dialog"); +dojo.require("dijit.form.NumberSpinner"); +dojo.require("dijit.form.Button"); +dojo.require("dijit.form.CheckBox"); +dojo.require("dijit.form.DateTextBox"); +dojo.require("dijit.form.TimeTextBox"); +dojo.require("dojo.date.locale"); + +dojo.require("dijit.form.Form"); +dojo.require("dojo.parser"); + +(function(){ + dojo.declare("dojox.gantt.TabMenu", null, { + constructor: function(chart){ + this.ganttChart = chart; + this.menuPanel = null; + this.paneContentArea = null; + this.paneActionBar = null; + this.tabPanelDlg = null; + this.tabPanelDlgId = null; + this.arrTabs = []; + this.isShow = false; + this.buildContent(); + }, + buildContent: function(){ + this.createMenuPanel(); + this.createTabPanel(); + + //tasks customization + var taskSucAdd = this.createTab(11, "Add Successor Task", "t", true, this); + taskSucAdd.addItem(1, "Id", "id", true); + taskSucAdd.addItem(2, "Name", "name"); + taskSucAdd.addItem(3, "Start Time", "startTime"); + taskSucAdd.addItem(4, "Duration (hours)", "duration"); + taskSucAdd.addItem(5, "Percent Complete (%)", "percentage"); + taskSucAdd.addItem(6, "Task Assignee", "taskOwner"); + taskSucAdd.addAction("addSuccessorTaskAction"); + + var taskChildAdd = this.createTab(10, "Add Child Task", "t", true, this); + taskChildAdd.addItem(1, "Id", "id", true); + taskChildAdd.addItem(2, "Name", "name"); + taskChildAdd.addItem(3, "Start Time", "startTime"); + taskChildAdd.addItem(4, "Duration (hours)", "duration"); + taskChildAdd.addItem(5, "Percent Complete (%)", "percentage"); + taskChildAdd.addItem(6, "Task Assignee", "taskOwner"); + taskChildAdd.addAction("addChildTaskAction"); + + var taskDuration = this.createTab(4, "Set Duration(hours)", "t", true, this, true); + taskDuration.addItem(1, "Duration (hours)", "duration", true); + taskDuration.addAction("durationUpdateAction"); + + var taskCP = this.createTab(5, "Set Complete Percentage (%)", "t", true, this, true); + taskCP.addItem(1, "Percent Complete (%)", "percentage", true); + taskCP.addAction("cpUpdateAction"); + + var taskOwner = this.createTab(20, "Set Owner", "t", true, this, true); + taskOwner.addItem(1, "Task Assignee", "taskOwner", true); + taskOwner.addAction("ownerUpdateAction"); + + var taskPrevious = this.createTab(13, "Set Previous Task", "t", true, this); + taskPrevious.addItem(1, "Previous Task Id", "previousTaskId", true); + taskPrevious.addAction("ptUpdateAction"); + + var taskRename = this.createTab(1, "Rename Task", "t", true, this, true); + taskRename.addItem(1, "New Name", "name", true); + taskRename.addAction("renameTaskAction"); + + var taskDelete = this.createTab(2, "Delete Task", "t", true, this); + taskDelete.addAction("deleteAction"); + + //projects customization + var projectAdd = this.createTab(12, "Add New Project", "p", false, this); + projectAdd.addItem(1, "Id", "id", true); + projectAdd.addItem(2, "Name", "name", true); + projectAdd.addItem(3, "Start Date", "startDate", true); + projectAdd.addAction("addProjectAction"); + + var projectCP = this.createTab(8, "Set Complete Percentage (%)", "p", true, this, true); + projectCP.addItem(1, "Percent Complete (%)", "percentage", true); + projectCP.addAction("cpProjectAction"); + + var projectRename = this.createTab(6, "Rename Project", "p", true, this, true); + projectRename.addItem(1, "New Name", "name", true); + projectRename.addAction("renameProjectAction"); + + var projectDelete = this.createTab(7, "Delete Project", "p", true, this); + projectDelete.addAction("deleteProjectAction"); + + //task relative + var projectTaskAdd = this.createTab(9, "Add New Task", "p", true, this); + projectTaskAdd.addItem(1, "Id", "id", true); + projectTaskAdd.addItem(2, "Name", "name"); + projectTaskAdd.addItem(3, "Start Time", "startTime"); + projectTaskAdd.addItem(4, "Duration (hours)", "duration"); + projectTaskAdd.addItem(5, "Percent Complete (%)", "percentage"); + projectTaskAdd.addItem(6, "Task Assignee", "taskOwner"); + projectTaskAdd.addItem(7, "Parent Task Id", "parentTaskId"); + projectTaskAdd.addItem(8, "Previous Task Id", "previousTaskId"); + projectTaskAdd.addAction("addTaskAction"); + }, + createMenuPanel: function(){ + this.menuPanel = dojo.create("div", { + innerHTML: "
                                      ", + className: "ganttMenuPanel" + }, this.ganttChart.content); + dojo.addClass(this.menuPanel.firstChild, "ganttContextMenu"); + this.menuPanel.firstChild.cellPadding = 0; + this.menuPanel.firstChild.cellSpacing = 0; + }, + createTabPanel: function(){ + this.tabPanelDlg = dijit.byId(this.tabPanelDlgId) || + new dijit.Dialog({ + title: "Settings" + }); + this.tabPanelDlgId = this.tabPanelDlg.id; + this.tabPanelDlg.closeButtonNode.style.display = "none"; + var tabPanel = this.tabPanelDlg.containerNode; + this.paneContentArea = dojo.create("div", {className: "dijitDialogPaneContentArea"}, tabPanel); + this.paneActionBar = dojo.create("div", {className: "dijitDialogPaneActionBar"}, tabPanel); + this.paneContentArea.innerHTML = "
                                      "; + var headerCell = this.paneContentArea.firstChild.rows[0].cells[0]; + headerCell.colSpan = 2; + headerCell.innerHTML = "Description: "; + dojo.addClass(headerCell, "ganttDialogContentHeader"); + var contentCell = this.paneContentArea.firstChild.rows[1].cells[0]; + contentCell.innerHTML = "
                                      "; + dojo.addClass(contentCell.firstChild, "ganttDialogContentCell"); + contentCell.align = "center"; + this.ok = new dijit.form.Button({label: "OK"}); + this.cancel = new dijit.form.Button({label: "Cancel"}); + this.paneActionBar.appendChild(this.ok.domNode); + this.paneActionBar.appendChild(this.cancel.domNode); + }, + addItemMenuPanel: function(tab){ + var row = this.menuPanel.firstChild.insertRow(this.menuPanel.firstChild.rows.length); + var cell = dojo.create("td", { + className: "ganttContextMenuItem", + innerHTML: tab.Description + }); + dojo.attr(cell, "tabIndex", 0); + this.ganttChart._events.push( + dojo.connect(cell, "onclick", this, function(){ + try{ + this.hide(); + tab.show(); + }catch(e){ + console.log("dialog open exception: " + e.message); + } + }) + ); + this.ganttChart._events.push( + dojo.connect(cell, "onkeydown", this, function(e){ + if(e.keyCode != dojo.keys.ENTER){return;} + try{ + this.hide(); + tab.show(); + }catch(e){ + console.log("dialog open exception: " + e.message); + } + }) + ); + this.ganttChart._events.push( + dojo.connect(cell, "onmouseover", this, function(){ + dojo.addClass(cell, "ganttContextMenuItemHover"); + }) + ); + this.ganttChart._events.push( + dojo.connect(cell, "onmouseout", this, function(){ + dojo.removeClass(cell, "ganttContextMenuItemHover"); + }) + ); + row.appendChild(cell); + }, + show: function(elem, object){ + if(object.constructor == dojox.gantt.GanttTaskControl){ + dojo.forEach(this.arrTabs, function(tab){ + if(tab.type == "t"){ + tab.object = object; + this.addItemMenuPanel(tab); + } + }, this); + }else if(object.constructor == dojox.gantt.GanttProjectControl){ + dojo.forEach(this.arrTabs, function(tab){ + if(tab.type == "p"){ + tab.object = object; + this.addItemMenuPanel(tab); + } + }, this); + } + this.isShow = true; + dojo.style(this.menuPanel, { + zIndex: 15, + visibility: "visible" + }); + //make sure menu box inside gantt's bounding box + var menuBox = dojo.position(this.menuPanel, true), + bBox = dojo.position(this.ganttChart.content, true), + pos = dojo.coords(elem, true); + if((pos.y + menuBox.h) > (bBox.y + bBox.h + 50)){ + this.menuPanel.style.top = pos.y - menuBox.h + pos.h + "px"; + }else{ + this.menuPanel.style.top = pos.y + "px"; + } + if(dojo._isBodyLtr()){ + this.menuPanel.style.left = pos.x + pos.w + 5 + "px"; + }else{ + this.menuPanel.style.left = pos.x - menuBox.w - 5 + "px"; + } + }, + hide: function(){ + this.isShow = false; + this.menuPanel.style.visibility = "hidden"; + }, + clear: function(){ + this.menuPanel.removeChild(this.menuPanel.firstChild); + this.menuPanel.innerHTML = "
                                      "; + dojo.addClass(this.menuPanel.firstChild, "ganttContextMenu"); + this.menuPanel.firstChild.cellPadding = 0; + this.menuPanel.firstChild.cellSpacing = 0; + }, + createTab: function(id, desc, type, showOInfo, menu, withDefaultValue){ + var tab = new dojox.gantt.contextMenuTab(id, desc, type, showOInfo, menu, withDefaultValue); + this.arrTabs.push(tab); + return tab; + } + }); + + dojo.declare("dojox.gantt.contextMenuTab", null, { + constructor: function(id, description, type, showOInfo, tabMenu, withDefaultValue){ + this.id = id; + this.arrItems = []; + this.TabItemContainer = null; + this.Description = description; + this.tabMenu = tabMenu; + this.type = type; + this.object = null; + this.showObjectInfo = showOInfo; + this.withDefaultValue = withDefaultValue; + }, + preValueValidation: function(items){ + for(var i = 0; i < items.length; i++){ + var item = items[i]; + //TODO add more validation for Id, Name, ..... + if(item.required && !item.control.textbox.value){ + return false; + } + } + return true; + }, + encodeDate: function(date){ + return date.getFullYear() + "." + (date.getMonth() + 1) + "." + date.getDate(); + }, + decodeDate: function(dateStr){ + var arr = dateStr.split("."); + return (arr.length < 3) ? "" : (new Date(arr[0], parseInt(arr[1]) - 1, arr[2])); + }, + renameTaskAction: function(){ + var name = this.arrItems[0].control.textbox.value; + if(dojo.trim(name).length <= 0){ + return; + } + if(!this.preValueValidation(this.arrItems)){ + return; + } + this.object.setName(name); + this.hide(); + }, + deleteAction: function(){ + if(!this.preValueValidation(this.arrItems)){ + return; + } + this.object.project.deleteTask(this.object.taskItem.id); + this.hide(); + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.reConstruct(); + }, + durationUpdateAction: function(){ + var d = this.arrItems[0].control.textbox.value; + if(!this.preValueValidation(this.arrItems)){ + return; + } + if(this.object.setDuration(d)){ + this.hide(); + }else{ + alert("Duration out of Range"); + return; + } + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.refresh(); + }, + cpUpdateAction: function(){ + var p = this.arrItems[0].control.textbox.value; + if(!this.preValueValidation(this.arrItems)){ + return; + } + if(this.object.setPercentCompleted(p)){ + this.hide(); + }else{ + alert("Complete Percentage out of Range"); + return; + } + }, + ownerUpdateAction: function(){ + var to = this.arrItems[0].control.textbox.value; + if(!this.preValueValidation(this.arrItems)){ + return; + } + if(this.object.setTaskOwner(to)){ + this.hide(); + }else{ + alert("Task owner not Valid"); + return; + } + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.reConstruct(); + }, + ptUpdateAction: function(){ + var p = this.arrItems[0].control.textbox.value; + if(!this.preValueValidation(this.arrItems)){ + return; + } + if(this.object.setPreviousTask(p)){ + this.hide(); + }else{ + alert("Please verify the Previous Task (" + p + ") and adjust its Time Range"); + return; + } + }, + renameProjectAction: function(){ + var name = this.arrItems[0].control.textbox.value; + if(dojo.trim(name).length <= 0){ + return; + } + if(!this.preValueValidation(this.arrItems)){ + return; + } + this.object.setName(name); + this.hide(); + }, + deleteProjectAction: function(){ + if(!this.preValueValidation(this.arrItems)){ + return; + } + this.object.ganttChart.deleteProject(this.object.project.id); + this.hide(); + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.reConstruct(); + }, + cpProjectAction: function(){ + var p = this.arrItems[0].control.textbox.value; + if(!this.preValueValidation(this.arrItems)){ + return; + } + if(this.object.setPercentCompleted(p)){ + this.hide(); + }else{ + alert("Percentage not Acceptable"); + return; + } + }, + addTaskAction: function(){ + if(!this.preValueValidation(this.arrItems)){ + return; + } + var id = this.arrItems[0].control.textbox.value, + name = this.arrItems[1].control.textbox.value, + startTime = this.decodeDate(this.arrItems[2].control.textbox.value), + duration = this.arrItems[3].control.textbox.value, + pc = this.arrItems[4].control.textbox.value, + owner = this.arrItems[5].control.textbox.value, + parentTaskId = this.arrItems[6].control.textbox.value, + predTaskId = this.arrItems[7].control.textbox.value; + if(dojo.trim(id).length <= 0){ + return; + } + if(this.object.insertTask(id, name, startTime, duration, pc, predTaskId, owner, parentTaskId)){ + this.hide(); + }else{ + alert("Please adjust your Customization"); + return; + } + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.reConstruct(); + }, + addSuccessorTaskAction: function(){ + if(!this.preValueValidation(this.arrItems)){ + return; + } + var pr = this.object.project, + id = this.arrItems[0].control.textbox.value, + name = this.arrItems[1].control.textbox.value, + startTime = this.decodeDate(this.arrItems[2].control.textbox.value), + duration = this.arrItems[3].control.textbox.value, + pc = this.arrItems[4].control.textbox.value, + owner = this.arrItems[5].control.textbox.value; + if(dojo.trim(id).length <= 0){ + return; + } + var parentTaskId = !this.object.parentTask ? "" : this.object.parentTask.taskItem.id; + var predTaskId = this.object.taskItem.id; + if(pr.insertTask(id, name, startTime, duration, pc, predTaskId, owner, parentTaskId)){ + this.hide(); + }else{ + alert("Please adjust your Customization"); + return; + } + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.reConstruct(); + }, + addChildTaskAction: function(){ + if(!this.preValueValidation(this.arrItems)){ + return; + } + var pr = this.object.project, + id = this.arrItems[0].control.textbox.value, + name = this.arrItems[1].control.textbox.value, + startTime = this.decodeDate(this.arrItems[2].control.textbox.value), + duration = this.arrItems[3].control.textbox.value, + pc = this.arrItems[4].control.textbox.value, + owner = this.arrItems[5].control.textbox.value, + parentTaskId = this.object.taskItem.id, + predTaskId = ""; + if(dojo.trim(id).length <= 0){ + return; + } + if(pr.insertTask(id, name, startTime, duration, pc, predTaskId, owner, parentTaskId)){ + this.hide(); + }else{ + alert("Please adjust your Customization"); + return; + } + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.reConstruct(); + }, + addProjectAction: function(){ + if(!this.preValueValidation(this.arrItems)){ + return; + } + var id = this.arrItems[0].control.textbox.value, + namePr = this.arrItems[1].control.textbox.value, + startDatePr = this.decodeDate(this.arrItems[2].control.textbox.value); + if(dojo.trim(id).length <= 0 || dojo.trim(namePr).length <= 0){ + return; + } + if(this.tabMenu.ganttChart.insertProject(id, namePr, startDatePr)){ + this.hide(); + }else{ + alert("Please adjust your Customization"); + return; + } + this.tabMenu.ganttChart.resource && this.tabMenu.ganttChart.resource.reConstruct(); + }, + + addAction: function(handler){ + this.actionFunc = this[handler]; + }, + addItem: function(id, name, key, required){ + var inputControl; + if(key == "startTime" || key == "startDate"){ + inputControl = new dijit.form.DateTextBox({type:"text", constraints:{datePattern:"yyyy.M.d", strict:true}}); + }else if(key == "percentage"){ + inputControl = new dijit.form.NumberSpinner({ constraints:{ max:100, min:0 }}); + }else if(key == "duration"){ + inputControl = new dijit.form.NumberSpinner({ constraints:{ min:0 }}); + }else{ + inputControl = new dijit.form.TextBox(); + } + this.arrItems.push({ + id: id, + name: name, + control: inputControl, + tab: this, + key: key, + required: required + }); + }, + show: function(){ + this.tabMenu.tabPanelDlg = this.tabMenu.tabPanelDlg || dijit.byId(this.tabMenu.tabPanelDlgId) || + new dijit.Dialog({ + title: "Settings" + }); + try{ + this.tabMenu.tabPanelDlg.show(); + }catch(e){ + console.log("dialog show exception: " + e.message); + return; + } + this.tabMenu.tabPanelDlg.titleNode.innerHTML = this.Description; + var content = this.tabMenu.paneContentArea.firstChild.rows[1].cells[0].firstChild, + action = this.tabMenu.paneActionBar; + var cell, cellValue, row = null; + + if(this.showObjectInfo){ + if(this.object){ + if(this.object.constructor == dojox.gantt.GanttTaskControl){ + this.insertData(content, "Id", this.object.taskItem.id); + this.insertData(content, "Name", this.object.taskItem.name); + this.insertData(content, "Start Time", this.encodeDate(this.object.taskItem.startTime)); + this.insertData(content, "Duration (hours)", this.object.taskItem.duration + " hours"); + this.insertData(content, "Percent Complete (%)", this.object.taskItem.percentage + "%"); + this.insertData(content, "Task Assignee", this.object.taskItem.taskOwner); + this.insertData(content, "Previous Task Id", this.object.taskItem.previousTaskId); + }else{ + this.insertData(content, "Id", this.object.project.id); + this.insertData(content, "Name", this.object.project.name); + this.insertData(content, "Start date", this.encodeDate(this.object.project.startDate)); + } + } + } + //separator + row = content.insertRow(content.rows.length); + cell = row.insertCell(row.cells.length); + cell.colSpan = 2; + cell.innerHTML = "
                                      "; + //input section header + row = content.insertRow(content.rows.length); + cell = row.insertCell(row.cells.length); + cell.colSpan = 2; + dojo.addClass(cell, "ganttMenuDialogInputCellHeader"); + cell.innerHTML = "Customization: " + this.Description; + //input details + dojo.forEach(this.arrItems, function(item){ + row = content.insertRow(content.rows.length); + cell = row.insertCell(row.cells.length); + dojo.addClass(cell, "ganttMenuDialogInputCell"); + cellValue = row.insertCell(row.cells.length); + dojo.addClass(cellValue, "ganttMenuDialogInputCellValue"); + cell.innerHTML = item.name; + cellValue.appendChild(item.control.domNode); + //initialize default value + if(this.withDefaultValue && this.object){ + if(this.object.constructor == dojox.gantt.GanttTaskControl){ + if(item.key == "startTime"){ + item.control.textbox.value = this.encodeDate(this.object.taskItem.startTime); + }else{ + item.control.textbox.value = item.key ? this.object.taskItem[item.key] : ""; + } + }else{ + if(item.key == "startDate"){ + item.control.textbox.value = this.encodeDate(this.object.project.startDate); + }else{ + item.control.textbox.value = item.key ? (this.object.project[item.key] || this.object[item.key] || "") : ""; + } + } + }else{ + //HTML5 placeholder property + item.control.textbox.placeholder = item.required ? "---required---" : "---optional---"; + } + }, this); + this.tabMenu.ok.onClick = dojo.hitch(this, this.actionFunc); + this.tabMenu.cancel.onClick = dojo.hitch(this, this.hide); + }, + hide: function(){ + try{ + this.tabMenu.tabPanelDlg.hide(); + }catch(e){ + console.log("dialog show exception: " + e.message); + this.tabMenu.tabPanelDlg.destroy(); + } + var cell = this.tabMenu.paneContentArea.firstChild.rows[1].cells[0]; + cell.firstChild.parentNode.removeChild(cell.firstChild); + cell.innerHTML = "
                                      "; + dojo.addClass(cell.firstChild, "ganttDialogContentCell"); + }, + insertData: function(content, name, value){ + var cell, cellValue, row = null; + row = content.insertRow(content.rows.length); + cell = row.insertCell(row.cells.length); + dojo.addClass(cell, "ganttMenuDialogDescCell"); + cell.innerHTML = name; + cellValue = row.insertCell(row.cells.length); + dojo.addClass(cellValue, "ganttMenuDialogDescCellValue"); + cellValue.innerHTML = value; + } + }); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/gantt.css b/js/dojo-release-1.7.2-src/dojox/gantt/resources/gantt.css new file mode 100644 index 0000000..0f17a2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/resources/gantt.css @@ -0,0 +1,575 @@ +.ganttToolbarZoomIn { + background-image: url("images/zoomIn.png"); + background-repeat: no-repeat; + height: 30px; + width: 30px; + padding: 2px; +} +.ganttToolbarZoomOut { + background-image: url("images/zoomOut.png"); + background-repeat: no-repeat; + height: 30px; + width: 30px; + padding: 2px; +} +.ganttToolbarMicro { + background-image: url("images/zoomInTime.png"); + background-repeat: no-repeat; + height: 30px; + width: 30px; + padding: 2px; +} +.ganttToolbarTele { + background-image: url("images/zoomOutTime.png"); + background-repeat: no-repeat; + height: 30px; + width: 30px; + padding: 2px; +} +.ganttToolbarSave { + background-image: url("images/save.png"); + background-repeat: no-repeat; + height: 30px; + width: 30px; + padding: 2px; +} +.ganttToolbarLoad { + background-image: url("images/load.png"); + background-repeat: no-repeat; + height: 30px; + width: 30px; + padding: 2px; +} +.ganttToolbarActionHover{ + border: 2px solid blue; + padding: 0px; +} +.ganttToolbar { + cursor: pointer; +} +.ganttPanelHeader{ + position: relative; +} +.ganttPanelNameHeaders{ + position: relative; + overflow: hidden; +} +.ganttPanelNamesContainer{ + position: relative; + overflow: hidden; + border-left: #f1f3f1 1px solid; + border-bottom: #f1f3f1 1px solid; +} +.ganttPanelNames{ + position: relative; + overflow: hidden; + border-left: #f1f3f1 1px solid; + border-bottom: #f1f3f1 1px solid; + background: url("images/bg.png") repeat scroll 0 0 transparent; +} +.ganttPanelTime{ + position: relative; +} +.ganttPanelTimeContainer{ + position: relative; + overflow: hidden; + direction: ltr; +} +.ganttContentDataContainer{ + position: relative; + overflow: scroll; + border-left: #f1f3f1 1px solid; + direction: ltr; +} +.ganttDivCell{ + position: relative; +} +.ganttMoveInfo { + font-family: Tahoma, Arial; + font-size: 10px; + color: #006600; + white-space: nowrap; +} +.ganttDescProject { + font-family: Tahoma, Arial; + font-size: 10px; + color: #3B3B3B; + cursor: default; + white-space: nowrap; + z-index: 6; + position: absolute; +} +.ganttProjectNameItem{ + cursor:pointer; + color: #003366; + font-weight: bold; + font-size: 12px; + font-family: Tahoma, Arial; + white-space:nowrap; + height:15px; + z-index:6; + position: absolute; +} +.ganttProjectNameItemHover{ + border-top: 1px solid black; + border-bottom: 1px solid black; +} +.ganttProjectItem{ + z-index: 6; + position: absolute; +} +.ganttTblProjectItem{ + border: solid 1px #555555; +} +.ganttDivTaskInfo{ + text-align: center; + z-index: 7; + position: absolute; + left: 0px; + top: 0px; +} +.ganttTblTime { + background-color: transparent; + cursor: pointer; + margin-top: 0px; +} +.ganttHourNumber { + font-size: 7px; + color: #858585; + border: 1px solid transparent; + border-top: 1px solid #DBECFF; + height: 30px; +} +.ganttHourClass { + text-align: center; + padding: 5px 2px; + height: 20px; +} +.ganttHourNumberAM { + background: url("images/am.png") repeat scroll 0 0 transparent; +} +.ganttHourNumberPM { + background: url("images/pm.png") repeat scroll 0 0 transparent; +} +.ganttDayNumber { + font-family: Tahoma, Arial; + font-weight: bold; + font-size: 9px; + color: #858585; + border: 1px solid transparent; + border-top: 1px solid #DBECFF; + height: 30px; +} +.ganttDayNumberWeekend { + background: url("images/bg.png") repeat scroll 0 0 transparent; +} +.ganttWeekNumber { + font-family: Tahoma, Arial; + font-weight: bold; + font-size: 9px; + color: #858585; + border: 1px solid transparent; + border-top: 1px solid #DBECFF; + border-right: 1px solid #DBECFF; + height:30px; +} +.ganttMonthNumber { + font-family: Tahoma, Arial; + font-weight: bold; + font-size: 9px; + color: #858585; + border: 1px solid transparent; + border-top: 1px solid #DBECFF; + border-right: 1px solid #DBECFF; + height: 30px; +} +.ganttYearNumber { + font-family: Tahoma, Arial; + font-weight: bold; + font-size: 9px; + color: #858585; + border: 1px solid transparent; + border-top: 1px solid #DBECFF; + border-right: 1px solid #DBECFF; + height: 30px; +} +.ganttTabelControl{ + width: 100%; + position: relative; +} +.ganttContextMenu { + z-index: 10; + width: 200px; + cursor: pointer; + font-family: Tahoma, Arial; + font-size: 12px; + border: 1px solid #b5bcc7; + margin: 0px; + padding: 0px; + background-color: #fff; + background-repeat: repeat-x; + border-collapse: separate; + border-spacing: 0 0; +} +.ganttContextMenuItem { + background-image: url("images/menuHighlight.png"); + background-position:0px -40px; + background-repeat:repeat-x; + padding: 3px 10px 4px; + height:18px; +} +.ganttContextMenuItemHover { + border:solid 1px #769dc0; + padding: 2px 9px 3px; + background-color: #9dcfff; + background-position:0px 0px; + color:#000; +} +.ganttMenuDialogDescCell{ + width:150px; + padding: 3px; + border-bottom: 1px solid gray; + text-align: center; +} +.ganttMenuDialogDescCellValue{ + width:150px; + padding: 3px; + border-bottom: 1px solid gray; + text-align: center; +} +.ganttMenuDialogInputCellHeader{ + font-size:12px; + font-family:Tahoma,Arial; + font-weight: bold; + padding: 10px 3px 5px; +} +.ganttMenuDialogInputCell{ + padding: 3px; +} +.ganttMenuDialogInputCellValue{ + padding: 3px; +} +.ganttHeaderCover { + z-index: 999; + position: absolute; +} +.ganttResourceHeader { + font-family: Tahoma, Arial; + background: url("images/resourceHeader.png") repeat scroll 0 0 transparent; + color: black; + padding: 3px 0px 0px 6px; + height: 25px; + font-weight: bold; + position:relative; +} +.ganttResourceContent{ + position:relative; +} +.ganttTaskNameItem { + font-family: Tahoma, Arial; + font-size: 11px; + font-weight: bold; + color: #7D7D7D; + white-space:nowrap; + height:15px; + z-index:1; + position: absolute; + left:20px; +} +.ganttMenuPanel{ + visibility:hidden; + z-index:10; + position:absolute; +} +.ganttDialogContentCell{ + width:300px; + font-size:11px; + font-family:Tahoma,Arial; +} +.ganttDialogContentHeader{ + font-size:12px; + font-family:Tahoma,Arial; + font-weight: bold; +} +.ganttOwnerNameItem { + font-family: Tahoma, Arial; + font-size: 11px; + font-weight: bold; + color: black; + cursor:pointer; + white-space:nowrap; + height:15px; + z-index:1; + position: absolute; + left:20px; +} +.ganttTaskBar { + background: url("images/taskBar.png") repeat scroll 0 0 transparent; + -moz-border-radius: 10px; + z-index:1; + position:absolute; +} +.ganttOwnerBar { + z-index:1; + position:absolute; +} +.ganttOwnerTaskBar { + background: url("images/ownerBar.png") repeat scroll 0 0 transparent; + border-top: solid 1px black; + border-bottom: solid 1px black; + position:absolute; + top:0px; +} +.ganttRowHighlight { + background: url("images/rowHighlight.png") repeat scroll 0 0 transparent; + position: absolute; + z-index: 1; +} +.ganttTaskPanel { + background: url("images/bg.png") repeat scroll 0 0 transparent; + overflow: hidden; + position:relative; +} +.ganttOwnerPanel { + overflow: hidden; + position:relative; + background: url("images/resourceBg.png") repeat scroll 0 0 transparent; +} +.ganttContent { + margin: 15px 63px 0; +} +.ganttTaskLineVerticalLeft{ + border-width: 0px 0px 0px 1px; + border-style: dotted; + border-color: #86A3BE; + margin: 0px; + padding: 0px; + z-index:10; + position: absolute; +} +.ganttTaskLineHorizontalLeft{ + position: absolute; + border-width: 1px 0px 0px 0px; + font-size: 1px; + border-style: dotted; + border-color: #86A3BE; + margin: 0px; + padding: 0px; + z-index:10; +} +.ganttTaskLineVerticalRight{ + border-width: 0px 0px 0px 1px; + border-style: solid; + border-color: #4A8F43; + margin: 0px; + padding: 0px; + z-index:6; + font-size: 1px; + position: absolute; +} +.ganttTaskLineHorizontal{ + height:1px; + border-color: #4A8F43; + border-style: solid; + border-width: 1px 0px 0px 0px; + margin: 0px; + padding: 0px; + z-index:6; + position: absolute; +} +.ganttTaskArrowImg{ + z-index:6; + margin: 0px; + padding: 0px; + width:7px; + height:14px; + position: absolute; +} +.ganttTaskLineVerticalRightPlus{ + border-width: 0px 0px 0px 1px; + border-style: solid; + border-color: #519145; + margin: 0px; + padding: 0px; + z-index:6; + font-size: 1px; + position: absolute; +} +.ganttTaskLineHorizontalPlus{ + height:1px; + border-color: #519145; + border-style: solid; + border-width: 1px 0px 0px 0px; + margin: 0px; + padding: 0px; + z-index:6; + position: absolute; +} +.ganttTaskArrowImgPlus{ + z-index:6; + margin: 0px; + padding: 0px; + width:7px; + height:14px; + position: absolute; +} +.ganttTaskItemControl{ + z-index:6; + position:absolute; +} +.ganttTaskDivTaskItem{ + z-index:6; + position: absolute; + left:0px; + top:0px; +} +.ganttTaskTblTaskItem{ + border: solid 1px #5FF55F; +} +.ganttTaskDivTaskInfo{ + text-align:center; + font-size:9px; + z-index:7; + position: absolute; + left:0px; + top:0px; +} +.ganttTaskDivTaskName{ + z-index:7; + position: absolute; + left:0px; + top:0px; +} +.ganttTaskDivMoveInput{ + visibility:hidden; + width:1px; + height:1px; +} +.ganttTaskDivResizeInput{ + visibility:hidden; + width:1px; + height:1px; +} +.ganttTaskDivResize{ + z-index:10; + position: absolute; + top:0px; +} +.ganttTaskTaskNameItem{ + font-family: Tahoma, Arial; + cursor:pointer; + white-space:nowrap; + height:15px; + z-index:6; + position: absolute; + left:20px; +} +.ganttTaskTaskNameItemHover{ + border-top: 1px solid black; + border-bottom: 1px solid black; +} +.ganttTaskDescTask { + font-family: Tahoma, Arial; + font-size: 10px; + color: #008000; + cursor: default; + white-space: nowrap; + z-index:6; + position:absolute; +} +.ganttTaskIdentifier{ + color:#7D7D7D; + font-family:Tahoma,Arial; + font-size:11px; + font-weight:bold; + border: solid 1px #7D7D7D; + -moz-border-radius: 20px; + -khtml-border-radius: 20px; + -webkit-border-radius: 20px; + border-radius: 20px; + padding: 0px 3px; + cursor:pointer; + white-space:nowrap; + height:14px; + z-index:6; + position:absolute; +} +.ganttTaskTreeImage{ + cursor: pointer; + z-index:12; + position: absolute; +} + +.ganttResourceTableControl{ + width: 100%; + position: relative; +} +.ganttResourceContentDataContainer{ + position:relative; + overflow:scroll; + border-left:#f1f3f1 1px solid; + direction: ltr; +} +.ganttResourcePanelNames{ + position:relative; + overflow:hidden; + border-left:#f1f3f1 1px solid; + border-bottom:#f1f3f1 1px solid; +} +.ganttResourceDivCell{ + position: relative; +} +.ganttResourceLineVerticalLeft{ + border-width: 0px 0px 0px 1px; + border-style: dotted; + border-color: #86A3BE; + margin: 0px; + padding: 0px; + z-index:10; + position: absolute; +} +.ganttResourceLineHorizontalLeft{ + z-index:10; + height:1px; + position: absolute; + border-width: 1px 0px 0px 0px; + font-size: 1px; + border-style: dotted; + border-color: #86A3BE; + margin: 0px; + padding: 0px; +} +.ganttResourceTreeImage{ + cursor: pointer; + z-index:12; + position: absolute; +} +.ganttResourcePanelNamesOwners{ + position:relative; + background: url("images/resourceBg.png") repeat scroll 0 0 transparent; +} +.ganttImageProgressFilled{ + background: url("images/projProgressFilled.png") repeat scroll 0 0 transparent; +} +.ganttImageProgressBg{ + background: url("images/projProgressBg.png") repeat scroll 0 0 transparent; +} +.ganttImageTaskProgressFilled{ + background: url("images/taskProgressFilled.png") repeat scroll 0 0 transparent; +} +.ganttImageTaskProgressBg{ + background: url("images/taskProgressBg.png") repeat scroll 0 0 transparent; +} +.ganttImageTreeCollapse{ + background: url("images/collapse.png") no-repeat scroll 0 0 transparent; + height: 9px; + width: 9px; +} +.ganttImageTreeExpand{ + background: url("images/expand.png") no-repeat scroll 0 0 transparent; + height: 9px; + width: 9px; +} +.ganttImageArrow{ + background: url("images/taskArrow.gif") no-repeat scroll 0 0 transparent; +} diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/am.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/am.png new file mode 100644 index 0000000..94b127e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/am.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/arrow.gif b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/arrow.gif new file mode 100644 index 0000000..3bd0863 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/arrow.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/bg.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/bg.png new file mode 100644 index 0000000..a6cd044 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/collapse.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/collapse.png new file mode 100644 index 0000000..1ae0697 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/collapse.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/expand.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/expand.png new file mode 100644 index 0000000..14a4f6d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/expand.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/load.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/load.png new file mode 100644 index 0000000..df33667 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/load.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/menuHighlight.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/menuHighlight.png new file mode 100644 index 0000000..22328a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/menuHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/minus.gif b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/minus.gif new file mode 100644 index 0000000..470c673 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/minus.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/ownerBar.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/ownerBar.png new file mode 100644 index 0000000..da9aa60 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/ownerBar.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/parentnode_bg.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/parentnode_bg.png new file mode 100644 index 0000000..e58367b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/parentnode_bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/parentnode_filled.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/parentnode_filled.png new file mode 100644 index 0000000..d2bba7b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/parentnode_filled.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/plus.gif b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/plus.gif new file mode 100644 index 0000000..ff22238 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/plus.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/pm.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/pm.png new file mode 100644 index 0000000..0e01327 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/pm.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/progress_bg.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/progress_bg.png new file mode 100644 index 0000000..69205da Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/progress_bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/progress_filled.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/progress_filled.png new file mode 100644 index 0000000..6f2c1c7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/progress_filled.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/projProgressBg.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/projProgressBg.png new file mode 100644 index 0000000..e58367b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/projProgressBg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/projProgressFilled.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/projProgressFilled.png new file mode 100644 index 0000000..d2bba7b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/projProgressFilled.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rbg.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rbg.png new file mode 100644 index 0000000..71f7daa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rbg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/resourceBg.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/resourceBg.png new file mode 100644 index 0000000..71f7daa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/resourceBg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/resourceHeader.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/resourceHeader.png new file mode 100644 index 0000000..b6f7c6a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/resourceHeader.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rheader.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rheader.png new file mode 100644 index 0000000..b6f7c6a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rheader.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rowHighlight.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rowHighlight.png new file mode 100644 index 0000000..3dd4e94 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/rowHighlight.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/save.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/save.png new file mode 100644 index 0000000..0527fc5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/save.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskArrow.gif b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskArrow.gif new file mode 100644 index 0000000..3bd0863 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskArrow.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskBar.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskBar.png new file mode 100644 index 0000000..e5245d2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskBar.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskProgressBg.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskProgressBg.png new file mode 100644 index 0000000..69205da Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskProgressBg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskProgressFilled.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskProgressFilled.png new file mode 100644 index 0000000..6f2c1c7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/taskProgressFilled.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomin.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomin.png new file mode 100644 index 0000000..254c5cb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomin.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomintime.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomintime.png new file mode 100644 index 0000000..459346a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomintime.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomout.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomout.png new file mode 100644 index 0000000..dfc2dc0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomout.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomouttime.png b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomouttime.png new file mode 100644 index 0000000..beea687 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gantt/resources/images/zoomouttime.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/tests/saveGanttData.php b/js/dojo-release-1.7.2-src/dojox/gantt/tests/saveGanttData.php new file mode 100644 index 0000000..ce77663 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/tests/saveGanttData.php @@ -0,0 +1,8 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/gantt/tests/test_Gantt.html b/js/dojo-release-1.7.2-src/dojox/gantt/tests/test_Gantt.html new file mode 100644 index 0000000..2934cb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gantt/tests/test_Gantt.html @@ -0,0 +1,155 @@ + + + + Gantt Chart + + + + + + + + + +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/AnalogArcIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogArcIndicator.js new file mode 100644 index 0000000..5979f15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogArcIndicator.js @@ -0,0 +1,92 @@ +define(["dojo/_base/declare","dojo/_base/lang","dojo/_base/connect","dojo/_base/fx","./AnalogIndicatorBase"], +function(declare, lang, connect, fx, AnalogIndicatorBase) { + +/*===== + AnalogIndicatorBase = dojox.gauges.AnalogIndicatorBase; +=====*/ + +return declare("dojox.gauges.AnalogArcIndicator",[AnalogIndicatorBase],{ + + // summary: + // An indicator for the AnalogGauge that draws a segment of arc. + // The segment of arc starts at the start angle of the gauge and ends at the + // angle that corresponds to the value of the indicator. + + _createArc: function(val){ + + // Creating the Arc Path string manually. This is instead of creating new dojox.gfx.Path object + // each time since we really just need the Path string (to use with setShape) and we don't want to + // have to redo the connects, etc. + if(this.shape){ + var startAngle = this._gauge._mod360(this._gauge.startAngle); + var a = this._gauge._getRadians(this._gauge._getAngle(val)); + var sa = this._gauge._getRadians(startAngle); + + if (this._gauge.orientation == 'cclockwise'){ + var tmp = a; + a = sa; + sa = tmp; + } + + var arange; + var big = 0; + if (sa<=a) + arange = a-sa; + else + arange = 2*Math.PI+a-sa; + if(arange>Math.PI){big=1;} + + var cosa = Math.cos(a); + var sina = Math.sin(a); + var cossa = Math.cos(sa); + var sinsa = Math.sin(sa); + var off = this.offset + this.width; + var p = ['M']; + p.push(this._gauge.cx+this.offset*sinsa); + p.push(this._gauge.cy-this.offset*cossa); + p.push('A', this.offset, this.offset, 0, big, 1); + p.push(this._gauge.cx+this.offset*sina); + p.push(this._gauge.cy-this.offset*cosa); + p.push('L'); + p.push(this._gauge.cx+off*sina); + p.push(this._gauge.cy-off*cosa); + p.push('A', off, off, 0, big, 0); + p.push(this._gauge.cx+off*sinsa); + p.push(this._gauge.cy-off*cossa); + p.push('z'); + this.shape.setShape(p.join(' ')); + this.currentValue = val; + } + }, + draw: function(group, /*Boolean?*/ dontAnimate){ + // summary: + // Override of dojox.gauges._Indicator.draw + var v = this.value; + if(v < this._gauge.min){v = this._gauge.min;} + if(v > this._gauge.max){v = this._gauge.max;} + if(this.shape){ + if(dontAnimate){ + this._createArc(v); + }else{ + var anim = new fx.Animation({curve: [this.currentValue, v], duration: this.duration, easing: this.easing}); + connect.connect(anim, "onAnimate", lang.hitch(this, this._createArc)); + anim.play(); + } + }else{ + var color = this.color ? this.color : 'black'; + var strokeColor = this.strokeColor ? this.strokeColor : color; + var stroke = {color: strokeColor, width: 1}; + if(this.color.type && !this.strokeColor){ + stroke.color = this.color.colors[0].color; + } + this.shape = group.createPath().setStroke(stroke).setFill(color); + this._createArc(v); + this.shape.connect("onmouseover", this, this.handleMouseOver); + this.shape.connect("onmouseout", this, this.handleMouseOut); + this.shape.connect("onmousedown", this, this.handleMouseDown); + this.shape.connect("touchstart", this, this.handleTouchStart); + } + } +}); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/AnalogArrowIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogArrowIndicator.js new file mode 100644 index 0000000..08c186e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogArrowIndicator.js @@ -0,0 +1,52 @@ +define(["dojo/_base/declare","./AnalogIndicatorBase"], +function(declare, AnalogIndicatorBase) { + +/*===== + AnalogIndicatorBase = dojox.gauges.AnalogIndicatorBase; +=====*/ + +return declare("dojox.gauges.AnalogArrowIndicator", [AnalogIndicatorBase],{ + + // summary: + // An indicator for the AnalogGauge that draws an arrow. The arrow is drawn on the angle that corresponds + // to the value of the indicator. + + _getShapes: function(group){ + // summary: + // Override of dojox.gauges.AnalogLineIndicator._getShapes + if(!this._gauge){ + return null; + } + var color = this.color ? this.color : 'black'; + var strokeColor = this.strokeColor ? this.strokeColor : color; + var stroke = { color: strokeColor, width: 1}; + if (this.color.type && !this.strokeColor){ + stroke.color = this.color.colors[0].color; + } + + var x = Math.floor(this.width/2); + var head = this.width * 5; + var odd = (this.width & 1); + var shapes = []; + var points = [{x:-x, y:0}, + {x:-x, y:-this.length+head}, + {x:-2*x, y:-this.length+head}, + {x:0, y:-this.length}, + {x:2*x+odd,y:-this.length+head}, + {x:x+odd, y:-this.length+head}, + {x:x+odd, y:0}, + {x:-x, y:0}]; + shapes[0] = group.createPolyline(points) + .setStroke(stroke) + .setFill(color); + shapes[1] = group.createLine({ x1:-x, y1: 0, x2: -x, y2:-this.length+head }) + .setStroke({color: this.highlight}); + shapes[2] = group.createLine({ x1:-x-3, y1: -this.length+head, x2: 0, y2:-this.length }) + .setStroke({color: this.highlight}); + shapes[3] = group.createCircle({cx: 0, cy: 0, r: this.width}) + .setStroke(stroke) + .setFill(color); + return shapes; + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/AnalogCircleIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogCircleIndicator.js new file mode 100644 index 0000000..5e0891f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogCircleIndicator.js @@ -0,0 +1,35 @@ +define(["dojo/_base/declare","./AnalogIndicatorBase"], + function(declare, AnalogIndicatorBase) { + +/*===== + AnalogIndicatorBase = dojox.gauges.AnalogIndicatorBase; +=====*/ + +return declare("dojox.gauges.AnalogCircleIndicator", [AnalogIndicatorBase], { + // summary: + // An indicator for the AnalogGauge that draws a circle. The center of the circle is positioned + // on the circular gauge according to the value of the indicator. The circle has for radius the + // length of the indicator. This indicator is mainly used to draw round ticks for the scale. + + + _getShapes: function(group){ + // summary: + // Override of dojox.gauges.AnalogLineIndicator._getShapes + var color = this.color ? this.color : 'black'; + var strokeColor = this.strokeColor ? this.strokeColor : color; + var stroke = { + color: strokeColor, + width: 1 + }; + if (this.color.type && !this.strokeColor){ + stroke.color = this.color.colors[0].color; + } + + return [group.createCircle({ + cx: 0, + cy: -this.offset, + r: this.length + }).setFill(color).setStroke(stroke)]; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/AnalogGauge.js b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogGauge.js new file mode 100644 index 0000000..64dae44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogGauge.js @@ -0,0 +1,368 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/array","dojo/_base/lang","dojo/_base/html","dojo/_base/event", + "dojox/gfx", "./_Gauge","./AnalogLineIndicator", "dojo/dom-geometry"], + function(dojo, declare, arr, lang, html, event, + gfx, Gauge, AnalogLineIndicator, domGeometry) { + +/*===== + Gauge = dojox.gauges._Gauge; +=====*/ + +return declare("dojox.gauges.AnalogGauge",Gauge,{ + // summary: + // a gauge built using the dojox.gfx package. + // + // description: + // using dojo.gfx (and thus either SVG or VML based on what is supported), this widget + // builds a gauge component, used to display numerical data in a familiar format + // + // example: + // | + // | + // |
                                      + // |
                                      + + // startAngle: Number + // angle (in degrees) for start of gauge (default is -90) + startAngle: -90, + + // endAngle: Number + // angle (in degrees) for end of gauge (default is 90) + endAngle: 90, + + // cx: Number + // center of gauge x coordinate (default is gauge width / 2) + cx: 0, + + // cy: Number + // center of gauge x coordinate (default is gauge height / 2) + cy: 0, + + // radius: Number + // radius of gauge (default is smaller of cx-25 or cy-25) + radius: 0, + + // orientation: String + // The orientation of the gauge. The value can be 'clockwise' or 'cclockwise' (default is 'clockwise') + orientation: "clockwise", + + // _defaultIndicator: dojox.gauges._Indicator + // override of dojox.gauges._Gauge._defaultIndicator + _defaultIndicator: AnalogLineIndicator, + + startup: function(){ + // handle settings from HTML by making sure all the options are + // converted correctly to numbers and that we calculate defaults + // for cx, cy and radius + // also connects mouse handling events + + if(this.getChildren){ + arr.forEach(this.getChildren(), function(child){ child.startup(); }); + } + + this.startAngle = Number(this.startAngle); + this.endAngle = Number(this.endAngle); + + this.cx = Number(this.cx); + if(!this.cx){this.cx = this.width/2;} + this.cy = Number(this.cy); + if(!this.cy){this.cy = this.height/2;} + this.radius = Number(this.radius); + if(!this.radius){this.radius = Math.min(this.cx,this.cy) - 25;} + + + this.inherited(arguments); + }, + + _getAngle: function(/*Number*/value){ + // summary: + // This is a helper function used to determine the angle that represents + // a given value on the gauge + // value: Number + // A value to be converted to an angle for this gauge. + + var v = Number(value); + var angle; + if (value == null || isNaN(v) || v <= this.min) + angle = this._mod360(this.startAngle); + else + if (v >= this.max) + angle = this._mod360(this.endAngle); + else { + var startAngle = this._mod360(this.startAngle); + var relativeValue = (v - this.min); + if (this.orientation != 'clockwise') + relativeValue = -relativeValue; + + angle = this._mod360(startAngle + this._getAngleRange() * relativeValue / Math.abs(this.min - this.max)); + } + + return angle; + }, + + _getValueForAngle: function(/*Number*/angle){ + // summary: + // This is a helper function used to determine the value represented by a + // given angle on the gauge + // angle: Number + // A angle to be converted to a value for this gauge. + var startAngle = this._mod360(this.startAngle); + var endAngle = this._mod360(this.endAngle); + + if (!this._angleInRange(angle)){ + + var min1 = this._mod360(startAngle - angle); + var min2 = 360 - min1; + var max1 = this._mod360(endAngle - angle); + var max2 = 360 - max1; + if (Math.min(min1, min2) < Math.min(max1, max2)) + return this.min; + else + return this.max; + } + else { + var range = Math.abs(this.max - this.min); + var relativeAngle = this._mod360(this.orientation == 'clockwise' ? + (angle - startAngle): (-angle + startAngle)); + return this.min + range * relativeAngle / this._getAngleRange(); + } + }, + + _getAngleRange: function(){ + // summary: + // This is a helper function that returns the angle range + // from startAngle to endAngle according to orientation. + var range; + var startAngle = this._mod360(this.startAngle); + var endAngle = this._mod360(this.endAngle); + if (startAngle == endAngle) + return 360; + if (this.orientation == 'clockwise'){ + if (endAngle < startAngle) + range = 360 - (startAngle - endAngle); + else + range = endAngle - startAngle; + } + else { + if (endAngle < startAngle) + range = startAngle - endAngle; + else + range = 360 - (endAngle - startAngle); + } + return range; + }, + + _angleInRange: function(value){ + // summary: + // Test if the angle value is in the startAngle/endAngle range + var startAngle = this._mod360(this.startAngle); + var endAngle = this._mod360(this.endAngle); + if (startAngle == endAngle) + return true; + value = this._mod360(value); + if (this.orientation == "clockwise"){ + if (startAngle < endAngle) + return value >= startAngle && value <= endAngle; + else + return !(value > endAngle && value < startAngle); + } + else { + if (startAngle < endAngle) + return !(value > startAngle && value < endAngle); + else + return value >= endAngle && value <= startAngle; + } + }, + + _isScaleCircular: function(){ + // summary: + // internal method to check if the scale is fully circular + return (this._mod360(this.startAngle) == this._mod360(this.endAngle)); + }, + + _mod360:function(v){ + // summary: + // returns the angle between 0 and 360; + while (v>360) v = v - 360; + while (v<0) v = v + 360; + return v; + }, + + _getRadians: function(/*Number*/angle){ + // summary: + // This is a helper function than converts degrees to radians + // angle: Number + // An angle, in degrees, to be converted to radians. + return angle*Math.PI/180; + }, + + _getDegrees: function(/*Number*/radians){ + // summary: + // This is a helper function that converts radians to degrees + // radians: Number + // An angle, in radians, to be converted to degrees. + return radians*180/Math.PI; + }, + + + drawRange: function(/*dojox.gfx.Group*/ group, /*Object*/range){ + // summary: + // This function is used to draw (or redraw) a range + // description: + // Draws a range (colored area on the background of the gauge) + // based on the given arguments. + // group: + // The GFX group where the range must be drawn. + // range: + // A range is a dojox.gauges.Range or an object + // with similar parameters (low, high, hover, etc.). + var path; + if(range.shape){ + range.shape.parent.remove(range.shape); + range.shape = null; + } + var a1, a2; + if((range.low == this.min) && (range.high == this.max) && ((this._mod360(this.endAngle) == this._mod360(this.startAngle)))){ + path = group.createCircle({cx: this.cx, cy: this.cy, r: this.radius}); + }else{ + + + a1 = this._getRadians(this._getAngle(range.low)); + a2 = this._getRadians(this._getAngle(range.high)); + if (this.orientation == 'cclockwise') + { + var a = a2; + a2 = a1; + a1 = a; + } + + var x1=this.cx+this.radius*Math.sin(a1), + y1=this.cy-this.radius*Math.cos(a1), + x2=this.cx+this.radius*Math.sin(a2), + y2=this.cy-this.radius*Math.cos(a2), + big=0 + ; + + var arange; + if (a1<=a2) + arange = a2-a1; + else + arange = 2*Math.PI-a1+a2; + if(arange>Math.PI){big=1;} + + path = group.createPath(); + if(range.size){ + path.moveTo(this.cx+(this.radius-range.size)*Math.sin(a1), + this.cy-(this.radius-range.size)*Math.cos(a1)); + }else{ + path.moveTo(this.cx,this.cy); + } + path.lineTo(x1,y1); + path.arcTo(this.radius,this.radius,0,big,1,x2,y2); + if(range.size){ + path.lineTo(this.cx+(this.radius-range.size)*Math.sin(a2), + this.cy-(this.radius-range.size)*Math.cos(a2)); + path.arcTo((this.radius-range.size),(this.radius-range.size),0,big,0, + this.cx+(this.radius-range.size)*Math.sin(a1), + this.cy-(this.radius-range.size)*Math.cos(a1)); + } + path.closePath(); + } + + if(lang.isArray(range.color) || lang.isString(range.color)){ + path.setStroke({color: range.color}); + path.setFill(range.color); + }else if(range.color.type){ + // Color is a gradient + a1 = this._getRadians(this._getAngle(range.low)); + a2 = this._getRadians(this._getAngle(range.high)); + range.color.x1 = this.cx+(this.radius*Math.sin(a1))/2; + range.color.x2 = this.cx+(this.radius*Math.sin(a2))/2; + range.color.y1 = this.cy-(this.radius*Math.cos(a1))/2; + range.color.y2 = this.cy-(this.radius*Math.cos(a2))/2; + path.setFill(range.color); + path.setStroke({color: range.color.colors[0].color}); + }else if (gfx.svg){ + // We've defined a style rather than an explicit color + path.setStroke({color: "green"}); // Arbitrary color, just have to indicate + path.setFill("green"); // that we want it filled + path.getEventSource().setAttribute("class", range.color.style); + } + + path.connect("onmouseover", lang.hitch(this, this._handleMouseOverRange, range)); + path.connect("onmouseout", lang.hitch(this, this._handleMouseOutRange, range)); + + range.shape = path; + }, + + getRangeUnderMouse: function(/*Object*/e){ + // summary: + // Determines which range the mouse is currently over + // e: Object + // The event object as received by the mouse handling functions below. + var range = null, + pos = domGeometry.getContentBox(this.gaugeContent), + x = e.clientX - pos.x, + y = e.clientY - pos.y, + r = Math.sqrt((y - this.cy)*(y - this.cy) + (x - this.cx)*(x - this.cx)) + ; + if(r < this.radius){ + var angle = this._getDegrees(Math.atan2(y - this.cy, x - this.cx) + Math.PI/2), + //if(angle > this.endAngle){angle = angle - 360;} + value = this._getValueForAngle(angle) + ; + if(this._rangeData){ + for(var i=0; (i= value)){ + range = this._rangeData[i]; + } + } + } + } + return range; + }, + + _dragIndicator: function(/*Object*/ widget, /*Object*/ e){ + // summary: + // Handles the dragging of an indicator to the event position, including moving/re-drawing + // get angle for mouse position + this._dragIndicatorAt(widget, e.pageX, e.pageY); + event.stop(e); + }, + + _dragIndicatorAt: function(/*Object*/ widget, x,y){ + // summary: + // Handles the dragging of an indicator to a specific position, including moving/re-drawing + // get angle for mouse position + var pos = domGeometry.position(widget.gaugeContent, true), + xf = x - pos.x, + yf = y - pos.y, + angle = widget._getDegrees(Math.atan2(yf - widget.cy, xf - widget.cx) + Math.PI/2); + + // get value and restrict to our min/max + var value = widget._getValueForAngle(angle); + value = Math.min(Math.max(value, widget.min), widget.max); + // update the indicator + widget._drag.value = widget._drag.currentValue = value; + // callback + widget._drag.onDragMove(widget._drag); + // rotate indicator + widget._drag.draw(this._indicatorsGroup, true); + widget._drag.valueChanged(); + } + +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/AnalogIndicatorBase.js b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogIndicatorBase.js new file mode 100644 index 0000000..63c40c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogIndicatorBase.js @@ -0,0 +1,200 @@ +define(["dojo/_base/lang","dojo/_base/declare","dojo/_base/connect","dojo/_base/fx","dojox/gfx","./_Indicator"], + function(lang, declare, connect, fx, gfx, Indicator) { + +/*===== + Indicator = dojox.gauges._indicator; +=====*/ + +return declare("dojox.gauges.AnalogIndicatorBase",[Indicator],{ + // summary: + // An abstract base class for indicators that can be used in an AnalogGauge. + // + + draw: function(/*dojox.gfx.Group*/ group, /*Boolean?*/ dontAnimate){ + // summary: + // Override of dojox.gauges._Indicator.draw + // group: dojox.gfx.Group + // The GFX group when the indicator must be drawn + // dontAnimate: Boolean + // Indicates if the drawing should not be animated (vs. the default of doing an animation) + if(this.shape){ + this._move(dontAnimate); + }else{ + if(this.text){ + this.text.parent.remove(this.text); + this.text = null; + } + var a = this._gauge._getAngle(Math.min(Math.max(this.value, this._gauge.min), this._gauge.max)); + + this.color = this.color || '#000000'; + this.length = this.length || this._gauge.radius; + this.width = this.width || 1; + this.offset = this.offset || 0; + this.highlight = this.highlight || '#D0D0D0'; + + var shapes = this._getShapes(group, this._gauge, this); + + if (shapes){ + if (shapes.length > 1){ + this.shape = group.createGroup(); + for (var s = 0; s < shapes.length; s++){ + this.shape.add(shapes[s]); + } + } + else + this.shape = shapes[0]; + + this.shape.setTransform([{ + dx: this._gauge.cx, + dy: this._gauge.cy + }, gfx.matrix.rotateg(a)]); + + this.shape.connect("onmouseover", this, this.handleMouseOver); + this.shape.connect("onmouseout", this, this.handleMouseOut); + this.shape.connect("onmousedown", this, this.handleMouseDown); + this.shape.connect("touchstart", this, this.handleTouchStart); +} + if(this.label){ + var direction = this.direction; + if (!direction) direction = 'outside'; + + var len; + if (direction == 'inside') + len=-this.length+this.offset - 5; + else + len=this.length+this.offset + 5; + + var rad=this._gauge._getRadians(90-a); + this._layoutLabel(group, this.label+'', this._gauge.cx, this._gauge.cy,len ,rad , direction); + + } + this.currentValue = this.value; + } + }, + + _layoutLabel:function(group, txt, ox, oy, lrad, angle, labelPlacement){ + // summary: + // Places the label on the side of the tick. + + var font = this.font ? this.font : gfx.defaultFont; + + var box = gfx._base._getTextBox(txt, + { + font: gfx.makeFontString(gfx.makeParameters(gfx.defaultFont,font)) + }); + + var tw = box.w; + var fz = font.size; + var th = gfx.normalizedLength(fz); + + var tfx = ox + Math.cos(angle) * lrad - tw / 2; + var tfy = oy - Math.sin(angle) * lrad - th / 2; + var side; + + var intersections = []; + + // Intersection with top segment + side = tfx; + var ipx = side; + var ipy = -Math.tan(angle) * side + oy + Math.tan(angle) * ox; + // Verify if intersection is on segment + if (ipy >= tfy && ipy <= tfy + th) + intersections.push({ + x: ipx, + y: ipy + }); + + // Intersection with bottom segment + side = tfx + tw; + ipx = side; + ipy = -Math.tan(angle) * side + oy + Math.tan(angle) * ox; + // Verify if intersection is on segment + if (ipy >= tfy && ipy <= tfy + th) intersections.push({ + x: ipx, + y: ipy + }); + + // Intersection with left segment + side = tfy; + ipx = -1 / Math.tan(angle) * side + ox + 1 / Math.tan(angle) * oy; + ipy = side; + // Verify if intersection is on segment + if (ipx >= tfx && ipx <= tfx + tw) + intersections.push({ + x: ipx, + y: ipy + }); + + // Intersection with right segment + side = tfy + th; + ipx = -1 / Math.tan(angle) * side + ox + 1 / Math.tan(angle) * oy; + ipy = side; + // Verify if intersection is on segment + if (ipx >= tfx && ipx <= tfx + tw) + intersections.push({ + x: ipx, + y: ipy + }); + + var dif; + if (labelPlacement == "inside"){ + for (var it = 0; it < intersections.length; it++){ + var ip = intersections[it]; + dif = this._distance(ip.x, ip.y, ox, oy) - lrad; + if (dif >= 0){ + // Place reference intersection point on reference circle + tfx = ox + Math.cos(angle) * (lrad - dif) - tw / 2; + tfy = oy - Math.sin(angle) * (lrad - dif) - th / 2; + break; + } + } + } + else // "outside" placement + { + for (it = 0; it < intersections.length; it++){ + ip = intersections[it]; + dif = this._distance(ip.x, ip.y, ox, oy) - lrad; + if (dif <= 0){ + // Place reference intersection point on reference circle + tfx = ox + Math.cos(angle) * (lrad - dif) - tw / 2; + tfy = oy - Math.sin(angle) * (lrad - dif) - th / 2; + + break; + } + } + } + // since the size computed by getTextBox is too big, + // to lower the problem, we align this to the middle and + // place at the middle of the computed size. + this.text = this._gauge.drawText(group, txt, tfx + tw / 2, tfy + th, 'middle', this.color, this.font); + }, + + _distance: function(x1,y1,x2,y2){ + return Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); + }, + + _move: function(/*Boolean?*/ dontAnimate){ + // summary: + // dontAnimate: Boolean + // Indicates if the drawing should not be animated (vs. the default of doing an animation) + var v = Math.min(Math.max(this.value, this._gauge.min), this._gauge.max), + c = this.currentValue + ; + if(dontAnimate){ + var angle = this._gauge._getAngle(v); + this.shape.setTransform([{dx:this._gauge.cx,dy:this._gauge.cy}, gfx.matrix.rotateg(angle)]); + this.currentValue = v; + }else{ + if(c!=v){ + var anim = new fx.Animation({curve: [c, v], duration: this.duration, easing: this.easing}); + connect.connect(anim, "onAnimate", lang.hitch(this, function(step){ + this.shape.setTransform([{dx:this._gauge.cx,dy:this._gauge.cy}, gfx.matrix.rotateg(this._gauge._getAngle(step))]); + + this.currentValue = step; + })); + anim.play(); + } + } + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/AnalogLineIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogLineIndicator.js new file mode 100644 index 0000000..6a259bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogLineIndicator.js @@ -0,0 +1,29 @@ +define(["dojo/_base/declare","./AnalogIndicatorBase"], + function(declare, AnalogIndicatorBase) { + +/*===== + AnalogIndicatorBase = dojox.gauges.AnalogIndicatorBase; +=====*/ + +return declare("dojox.gauges.AnalogLineIndicator", [AnalogIndicatorBase], { + // summary: + // An indicator for the AnalogGauge that draws a segment of line that has for length the length of the indicator + // and that starts at an offset from the center of the gauge. The line is drawn on the angle that corresponds + // to the value of the indicator. + + _getShapes: function(/*dojox.gfx.Group*/ group){ + // summary: + // Private function for generating the shapes for this indicator. An indicator that behaves the + // same might override this one and simply replace the shapes (such as ArrowIndicator). + var direction = this.direction; + var length = this.length; + if (direction == 'inside') + length = - length; + + return [group.createLine({x1: 0, y1: -this.offset, x2: 0, y2: -length-this.offset}) + .setStroke({color: this.color, width: this.width})]; + } + +}); + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/AnalogNeedleIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogNeedleIndicator.js new file mode 100644 index 0000000..68c984b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/AnalogNeedleIndicator.js @@ -0,0 +1,46 @@ +define(["dojo/_base/declare","./AnalogIndicatorBase"], + function(declare, AnalogIndicatorBase) { + +/*===== + AnalogIndicatorBase = dojox.gauges.AnalogIndicatorBase; +=====*/ + +return declare("dojox.gauges.AnalogNeedleIndicator", [AnalogIndicatorBase], { + // summary: + // An indicator for the AnalogGauge that draws a needle. The needle is drawn on the angle that corresponds + // to the value of the indicator. + + _getShapes: function(group){ + // summary: + // Override of dojox.gauges.AnalogLineIndicator._getShapes + if(!this._gauge){ + return null; + } + var x = Math.floor(this.width/2); + var shapes = []; + + var color = this.color ? this.color : 'black'; + var strokeColor = this.strokeColor ? this.strokeColor : color; + var strokeWidth = this.strokeWidth ? this.strokeWidth : 1; + + var stroke = { + color: strokeColor, + width: strokeWidth + }; + + if (color.type && !this.strokeColor){ + stroke.color = color.colors[0].color; + } + + var xy = (Math.sqrt(2) * (x)); + shapes[0] = group.createPath() + .setStroke(stroke).setFill(color) + .moveTo(xy, -xy).arcTo((2*x), (2*x), 0, 0, 0, -xy, -xy) + .lineTo(0, -this.length).closePath(); + shapes[1] = group.createCircle({cx: 0, cy: 0, r: this.width}) + .setStroke(stroke) + .setFill(color); + return shapes; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/BarCircleIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/BarCircleIndicator.js new file mode 100644 index 0000000..370ba31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/BarCircleIndicator.js @@ -0,0 +1,45 @@ +define(["dojo/_base/declare","dojox/gfx","./BarLineIndicator"], + function(declare, gfx, BarLineIndicator) { + +/*===== + BarLineIndicator = dojox.gauges.BarLineIndicator; +=====*/ + +return declare("dojox.gauges.BarCircleIndicator", [BarLineIndicator], { + // summary: + // An indicator for the BarGauge that draws a circle at a position that corresponds to the + // indicator value. This indicator is mainly used to draw round ticks for the scale. + + _getShapes: function(group){ + // summary: + // Override of dojox.gauges.BarLineIndicator._getShapes + var color = this.color ? this.color : 'black'; + var strokeColor = this.strokeColor ? this.strokeColor : color; + var stroke = { + color: strokeColor, + width: 1 + }; + if (this.color.type && !this.strokeColor){ + stroke.color = this.color.colors[0].color; + } + var y = this._gauge.dataY + this.offset + this.length / 2; + var v = this.value; + if (v < this._gauge.min){ + v = this._gauge.min; + } + if (v > this._gauge.max){ + v = this._gauge.max; + } + var pos = this._gauge._getPosition(v); + + var shapes = [group.createCircle({ + cx: 0, + cy: y, + r: this.length / 2 + }).setFill(color).setStroke(stroke)]; + + shapes[0].setTransform(gfx.matrix.translate(pos, 0)); + return shapes; + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/BarGauge.js b/js/dojo-release-1.7.2-src/dojox/gauges/BarGauge.js new file mode 100644 index 0000000..d3c3caa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/BarGauge.js @@ -0,0 +1,180 @@ +define(["dojo/_base/declare","dojo/_base/lang","dojo/_base/array","dojo/_base/html","dojo/_base/event","dojox/gfx", + "./_Gauge","./BarLineIndicator", "dojo/dom-geometry"], + function(declare, lang, arr, html, event, gfx, Gauge, BarLineIndicator, domGeometry) { + +/*===== + Gauge = dojox.gauges._Gauge; +=====*/ + +return declare("dojox.gauges.BarGauge", Gauge, { + // summary: + // a bar graph built using the dojox.gfx package. + // + // description: + // using dojo.gfx (and thus either SVG or VML based on what is supported), this widget + // builds a bar graph component, used to display numerical data in a familiar format. + // + // usage: + // + // ... + //
                                      + //
                                      + + // dataX: Number + // x position of data area (default 5) + dataX: 5, + + // dataY: Number + // y position of data area (default 5) + dataY: 5, + + // dataWidth: Number + // width of data area (default is bar graph width - 10) + dataWidth: 0, + + // dataHeight: Number + // height of data area (default is bar graph width - 10) + dataHeight: 0, + + // _defaultIndicator: Object + // override of dojox.gauges._Gauge._defaultIndicator + _defaultIndicator: BarLineIndicator, + + startup: function(){ + // handle settings from HTML by making sure all the options are + // converted correctly to numbers + // + // also connects mouse handling events + + if(this.getChildren){ + arr.forEach(this.getChildren(), function(child){ child.startup(); }); + } + + if(!this.dataWidth){this.dataWidth = this.gaugeWidth - 10;} + if(!this.dataHeight){this.dataHeight = this.gaugeHeight - 10;} + + this.inherited(arguments); + }, + + _getPosition: function(/*Number*/value){ + // summary: + // This is a helper function used to determine the position that represents + // a given value on the bar graph + // value: Number + // A value to be converted to a position for this bar graph. + + return this.dataX + Math.floor((value - this.min)/(this.max - this.min)*this.dataWidth); + }, + + _getValueForPosition: function(/*Number*/pos){ + // summary: + // This is a helper function used to determine the value represented by + // a position on the bar graph + // pos: Number + // A position to be converted to a value. + return (pos - this.dataX)*(this.max - this.min)/this.dataWidth + this.min; + }, + + drawRange: function(/*dojox.gfx.Group*/ group, /*Object*/range){ + // summary: + // This function is used to draw (or redraw) a range + // description: + // Draws a range (colored area on the background of the gauge) + // based on the given arguments. + // group: + // The GFX group where the range must be drawn. + // range: + // A range is either a dojox.gauges.Range or an object + // with similar parameters (low, high, hover, etc.). + if(range.shape){ + range.shape.parent.remove(range.shape); + range.shape = null; + } + + var x1 = this._getPosition(range.low); + var x2 = this._getPosition(range.high); + var path = group.createRect({ + x: x1, + y: this.dataY, + width: x2 - x1, + height: this.dataHeight + }); + if(lang.isArray(range.color) || lang.isString(range.color)){ + path.setStroke({color: range.color}); + path.setFill(range.color); + }else if(range.color.type){ + // Color is a gradient + var y = this.dataY + this.dataHeight/2; + range.color.x1 = x1; + range.color.x2 = x2; + range.color.y1 = y; + range.color.y2 = y; + path.setFill(range.color); + path.setStroke({color: range.color.colors[0].color}); + }else if (gfx.svg){ + // We've defined a style rather than an explicit color + path.setStroke({color: "green"}); // Arbitrary color, just have to indicate + path.setFill("green"); // that we want it filled + path.getEventSource().setAttribute("class", range.color.style); + } + + path.connect("onmouseover", lang.hitch(this, this._handleMouseOverRange, range)); + path.connect("onmouseout", lang.hitch(this, this._handleMouseOutRange, range)); + + range.shape = path; + }, + + getRangeUnderMouse: function(/*Object*/e){ + // summary: + // Determines which range the mouse is currently over + // e: Object + // The event object as received by the mouse handling functions below. + var range = null; + var pos = domGeometry.getContentBox(this.gaugeContent); + var x = e.clientX - pos.x; + var value = this._getValueForPosition(x); + if(this._rangeData){ + for(var i=0; (i= value)){ + range = this._rangeData[i]; + } + } + } + return range; + }, + + _dragIndicator: function(/*Object*/widget, /*Object*/ e){ + // summary: + // Handles the dragging of an indicator to the event position, including moving/re-drawing + // get angle for mouse position + this._dragIndicatorAt(widget, e.pageX, e.pageY); + event.stop(e); + }, + + _dragIndicatorAt: function(/*Object*/ widget, x, y){ + + // summary: + // Handles the dragging of an indicator, including moving/re-drawing + // get new value based on mouse position + var pos = domGeometry.position(widget.gaugeContent, true); + var xl = x - pos.x; + var value = widget._getValueForPosition(xl); + if(value < widget.min){value = widget.min;} + if(value > widget.max){value = widget.max;} + // update the indicator + widget._drag.value = value; + // callback + widget._drag.onDragMove(widget._drag); + // redraw/move indicator(s) + widget._drag.draw(this._indicatorsGroup, true); + widget._drag.valueChanged(); + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/BarIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/BarIndicator.js new file mode 100644 index 0000000..d62a447 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/BarIndicator.js @@ -0,0 +1,79 @@ +define(["dojo/_base/declare","dojo/_base/fx","dojo/_base/connect","dojo/_base/lang","./BarLineIndicator"], +function(declare, fx, connect, lang, BarLineIndicator) { + +/*===== + BarLineIndicator = dojox.gauges.BarLineIndicator; +=====*/ + +return declare("dojox.gauges.BarIndicator",[BarLineIndicator],{ + + // summary: + // An indicator for the BarGauge that draws a bar corresponding to the indicator value. + + _getShapes: function(group){ + // summary: + // Override of dojox.gauges.BarLineIndicator._getShapes + if(!this._gauge){ + return null; + } + var v = this.value; + if(v < this._gauge.min){v = this._gauge.min;} + if(v > this._gauge.max){v = this._gauge.max;} + var pos = this._gauge._getPosition(v); + if(pos == this.dataX){pos = this.dataX+1;} + var y = this._gauge.dataY + Math.floor((this._gauge.dataHeight - this.width)/2) + this.offset; + + var shapes = []; + shapes[0] = group.createRect({x:this._gauge.dataX, y:y, width:pos - this._gauge.dataX, height:this.width}); + shapes[0].setStroke({color: this.color}); + shapes[0].setFill(this.color); + shapes[1] = group.createLine({ x1:this._gauge.dataX, y1:y, x2:pos, y2:y }); + shapes[1].setStroke({color: this.highlight}); + if(this.highlight2){ + y--; + shapes[2] = group.createLine({ x1:this._gauge.dataX, y1:y, x2:pos, y2:y }); + shapes[2].setStroke({color: this.highlight2}); + } + + return shapes; + }, + _createShapes: function(val){ + // summary: + // Creates a shallow copy of the current shapes while adjusting for the new value + for(var i in this.shape.children){ + i = this.shape.children[i]; + var newShape = {}; + for(var j in i){ + newShape[j] = i[j]; + } + if(i.shape.type == "line"){ + newShape.shape.x2 = val+newShape.shape.x1; + }else if(i.shape.type == "rect"){ + newShape.width = val; + } + i.setShape(newShape); + } + }, + _move: function(/*Boolean?*/ dontAnimate){ + // summary: + // Override of dojox.gauges.BarLineIndicator._move to resize the bar (rather than moving it) + + var c; + var v = this.value ; + if(v < this.min){v = this.min;} + if(v > this.max){v = this.max;} + c = this._gauge._getPosition(this.currentValue); + this.currentValue = v; + v = this._gauge._getPosition(v)-this._gauge.dataX; + if(dontAnimate){ + this._createShapes(v); + }else{ + if(c!=v){ + var anim = new fx.Animation({curve: [c, v], duration: this.duration, easing: this.easing}); + connect.connect(anim, "onAnimate", lang.hitch(this, this._createShapes)); + anim.play(); + } + } + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/BarLineIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/BarLineIndicator.js new file mode 100644 index 0000000..43aa6b0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/BarLineIndicator.js @@ -0,0 +1,133 @@ +define(["dojo/_base/declare","dojo/_base/fx","dojo/_base/connect","dojo/_base/lang", "dojox/gfx", "./_Indicator"], + function(declare, fx, connect, lang, gfx, Indicator) { + +/*===== + Indicator = dojox.gauges._Indicator; +=====*/ + +return declare("dojox.gauges.BarLineIndicator",[Indicator],{ + + // summary: + // An indicator for the BarGauge that draws a segment a line corresponding to the indicator value. + + width: 1, + _getShapes: function(/*dojox.gfx.Group*/ group){ + // summary: + // Private function for generating the shapes for this indicator. An indicator that behaves the + // same might override this one and simply replace the shapes (such as BarIndicator). + if(!this._gauge){ + return null; + } + var v = this.value; + if(v < this._gauge.min){v = this._gauge.min;} + if(v > this._gauge.max){v = this._gauge.max;} + var pos = this._gauge._getPosition(v); + var shapes = []; + if(this.width > 1){ + shapes[0] = group.createRect({ + x:0, + y:this._gauge.dataY + this.offset, + width:this.width, + height:this.length + }); + shapes[0].setStroke({color: this.color}); + shapes[0].setFill(this.color); + shapes[0].setTransform(gfx.matrix.translate(pos,0)); + }else{ + shapes[0] = group.createLine({ + x1:0, + y1:this._gauge.dataY + this.offset, + x2:0, + y2:this._gauge.dataY + this.offset + this.length + }); + shapes[0].setStroke({color: this.color}); + shapes[0].setTransform(gfx.matrix.translate(pos,0)); + } + return shapes; + }, + draw: function(/*dojox.gfx.Group*/group, /*Boolean?*/ dontAnimate){ + // summary: + // Override of dojox.gauges._Indicator.draw + // dontAnimate: Boolean + // Indicates if the drawing should not be animated (vs. the default of doing an animation) + var i; + if (this.shape){ + this._move(dontAnimate); + }else{ + if (this.shape){ + this.shape.parent.remove(this.shape); + this.shape = null; + } + if (this.text){ + this.text.parent.remove(this.text); + this.text = null; + } + + this.color = this.color || '#000000'; + this.length = this.length || this._gauge.dataHeight; + this.width = this.width || 3; + this.offset = this.offset || 0; + this.highlight = this.highlight || '#4D4D4D'; + this.highlight2 = this.highlight2 || '#A3A3A3'; + + var shapes = this._getShapes(group, this._gauge, this); + + if (shapes.length > 1){ + this.shape = group.createGroup(); + for (var s = 0; s < shapes.length; s++){ + this.shape.add(shapes[s]); + } + } else this.shape = shapes[0]; + + if (this.label){ + var v = this.value; + if (v < this._gauge.min){ + v = this._gauge.min; + } + if (v > this._gauge.max){ + v = this._gauge.max; + } + var pos = this._gauge._getPosition(v); + + if (this.direction == 'inside'){ + var font = this.font ? this.font : gfx.defaultFont; + var fz = font.size; + var th = gfx.normalizedLength(fz); + + this.text = this._gauge.drawText(group, '' + this.label, pos, this._gauge.dataY + this.offset + this.length + 5 + th, 'middle', this.color, this.font); + } else this.text = this._gauge.drawText(group, '' + this.label, pos, this._gauge.dataY + this.offset - 5, 'middle', this.color, this.font); + } + + this.shape.connect("onmouseover", this, this.handleMouseOver); + this.shape.connect("onmouseout", this, this.handleMouseOut); + this.shape.connect("onmousedown", this, this.handleMouseDown); + this.shape.connect("touchstart", this, this.handleTouchStart); + this.currentValue = this.value; + } + }, + + _move: function(/*Boolean?*/ dontAnimate){ + // summary: + // Moves this indicator (since it's already been drawn once) + // dontAnimate: Boolean + // Indicates if the drawing should not be animated (vs. the default of doing an animation) + var v = this.value ; + if(v < this._gauge.min){v = this._gauge.min;} + if(v > this._gauge.max){v = this._gauge.max;} + var c = this._gauge._getPosition(this.currentValue); + this.currentValue = v; + v = this._gauge._getPosition(v); + + if(dontAnimate || (c==v)){ + this.shape.setTransform(gfx.matrix.translate(v,0)); + }else{ + var anim = new fx.Animation({curve: [c, v], duration: this.duration, easing: this.easing}); + connect.connect(anim, "onAnimate", lang.hitch(this, function(jump){ + if (this.shape) + this.shape.setTransform(gfx.matrix.translate(jump,0)); + })); + anim.play(); + } + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGauge.js b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGauge.js new file mode 100644 index 0000000..dc9fc7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGauge.js @@ -0,0 +1,236 @@ +define(["dojo/_base/declare","dojo/_base/Color","./GlossyCircularGaugeBase"], + function(declare, Color, GlossyCircularGaugeBase) { + +/*===== + GlossyCircularGaugeBase = dojox.gauges.GlossyCircularGaugeBase; +=====*/ + +return declare("dojox.gauges.GlossyCircularGauge", [GlossyCircularGaugeBase], { + // summary: + // Represents a circular gauge with a glossy appearance. + // + // example: + // |
                                      + // |
                                      + + _designWidth : 376.25, + _designHeight : 382.5, + _designCx : 187.19173, + _designCy : 187.81589, + _designTextIndicatorX : 187.19173, + _designTextIndicatorY : 267.81589, + + + constructor: function(){ + // summary: + // Creates a new GlossyCircularGauge. + this.startAngle= -135; + this.endAngle= 135; + this.min = 0; + this.max = 100; + }, + + drawBackground: function(group){ + // summary: + // Draws the background of the gauge. + // group: dojox.gfx.Group + // The GFX group where the background must be drawn + + var scale = Math.min((this.width / this._designWidth), (this.height / this._designHeight)); + var transform = { + xx: scale, + xy: 0, + yx: 0, + yy: scale, + dx: (-161) * scale + (this.width - scale * this._designWidth) / 2, + dy: (-263.5) * scale + (this.height - scale * this._designHeight) / 2 + + }; + + var lighterColor1 = Color.blendColors(new Color(this.color), new Color('white'), 0.4 ); + var lighterColor2 = Color.blendColors(new Color(this.color), new Color('white'), 0.8 ); + + + if (this._gaugeBackground){ + this._gaugeBackground.setTransform(transform); + return; + } + this._gaugeBackground = group.createGroup(); + this._gaugeBackground.setTransform(transform); + + this._gaugeBackground.createPath({ + path: "M0 0 C0.028 -82.393 -66.741 -149.207 -149.134 -149.235 C-231.526 -149.264 -298.341 -82.494 -298.369 -0.101 L-298.369 0 C-298.397 82.393 -231.627 149.207 -149.235 149.235 C-66.843 149.264 -0.028 82.494 0 0.102 L0 0 Z" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: 535.09494, + dy: 452.53442 + }).setFill(this.color); + + this._gaugeBackground.createPath({ + path: "M451.354 450.434 C451.382 374.317 389.698 312.593 313.581 312.566 C237.464 312.54 175.739 374.224 175.713 450.341 L175.713 450.434 C175.688 526.551 237.372 588.275 313.487 588.302 C389.604 588.327 451.329 526.644 451.354 450.527 L451.354 450.434 Z" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: -43.30358, + dy: 1015.57642 + }).setFill({ + type: "linear", + x1: 175.688, + y1: 312.54001, + x2: 175.688, + y2: 422.85482, + colors: [ + {offset: 0, color: lighterColor1}, + {offset: 1, color: this.color} + ] + }); + + this._gaugeBackground.createPath({ + path: "M451.321 453.375 C449.778 528.175 388.655 588.327 313.491 588.302 C238.359 588.276 177.295 528.135 175.753 453.377 C217.829 442.046 266.246 464.646 315.36 464.646 C364.489 464.646 409.364 442.041 451.321 453.375" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: -43.30358, + dy: 1015.57642 + }).setFill({ + type: "linear", + x1: 175.75301, + y1: 442.04099, + x2: 175.75301, + y2: 588.32703, + colors: [ + {offset: 0, color: this.color}, + {offset: 1, color: lighterColor2} + ] + }); + + this._gaugeBackground.createPath({ + path: "M0 0 C-1.543 74.8 -62.666 134.952 -137.83 134.927 C-212.962 134.901 -274.026 74.76 -275.568 0.002 C-233.492 -11.329 -185.075 11.271 -135.961 11.271 C-86.832 11.271 -41.957 -11.334 0 0" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: 520.84441, + dy: 448.85767 + }).setFill([255,255,255,0.12157]); + + }, + + drawForeground: function(group){ + // summary: + // Draws the foreground of the gauge. + // group: dojox.gfx.Group + // The GFX group where the foreground must be drawn + + var scale = Math.min((this.width / this._designWidth), (this.height / this._designHeight)); + var transform = { + xx: scale, + xy: 0, + yx: 0, + yy: scale, + dx: (-160) * scale + (this.width - scale * this._designWidth) / 2, + dy: (-263.5) * scale + (this.height - scale * this._designHeight) / 2 + }; + + var lighterColor1 = Color.blendColors(new Color(this.color), new Color('white'), 0.4 ); + var lighterColor2 = Color.blendColors(new Color(this.color), new Color('white'), 0.8 ); + + if (this._foreground){ + this._foreground.setTransform(transform); + return; + } + this._foreground = group.createGroup(); + this._foreground.setTransform(transform); + + var group1 = this._foreground.createGroup(); + group1.setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: -43.30358, + dy: 1015.57642 + }); + group1.createPath({ + path: "M0 0 C0.004 -12.579 -10.189 -22.779 -22.768 -22.784 C-35.349 -22.788 -45.549 -12.594 -45.553 -0.016 L-45.553 0 C-45.558 12.579 -35.363 22.779 -22.783 22.784 C-10.205 22.788 -0.004 12.594 0 0.015 L0 0 Z" + }).setTransform({ + xx: 1, + xy: 0, + yx: 0, + yy: 1, + dx: 336.31049, + dy: 451.43359 + }).setFill(this.color); + + group1.createPath({ + path: "M333.443 451.434 C333.446 440.438 324.537 431.523 313.541 431.519 C302.546 431.515 293.63 440.425 293.626 451.42 L293.626 451.434 C293.622 462.429 302.532 471.345 313.527 471.349 C324.523 471.353 333.439 462.442 333.443 451.447 L333.443 451.434 Z" + }).setFill({ + type: "linear", + x1: 293.62201, + y1: 431.51501, + x2: 293.62201, + y2: 451.43401, + colors: [ + {offset: 0, color: lighterColor1}, + {offset: 1, color: this.color} + ] + }); + + group1.createPath({ + path: "M333.438 451.858 C333.215 462.663 324.386 471.353 313.528 471.349 C302.675 471.345 293.854 462.658 293.632 451.858 C299.709 450.222 306.702 453.486 313.799 453.486 C320.895 453.486 327.377 450.221 333.438 451.858" + }).setFill({ + type: "linear", + x1: 293.63199, + y1: 450.22101, + x2: 293.63199, + y2: 471.353, + colors: [ + {offset: 0, color: this.color}, + {offset: 1, color: lighterColor2} + ] + }); + + group1.createPath({ + path: "M0 0 C-0.223 10.805 -9.052 19.494 -19.909 19.49 C-30.763 19.486 -39.583 10.799 -39.806 0 C-33.729 -1.636 -26.735 1.628 -19.639 1.628 C-12.543 1.628 -6.061 -1.638 0 0" + }).setTransform({ + xx: 1, + xy: 0, + yx: 0, + yy: 1, + dx: 333.4375, + dy: 451.8584 + }).setFill([255,255,255,0.12157]); + + } + +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGaugeBase.js b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGaugeBase.js new file mode 100644 index 0000000..ba066de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGaugeBase.js @@ -0,0 +1,540 @@ +define(["dojo/_base/declare","dojo/_base/lang","dojo/_base/connect","dojox/gfx","./AnalogGauge","./AnalogCircleIndicator","./TextIndicator","./GlossyCircularGaugeNeedle"], +function(declare, lang, connect, gfx, AnalogGauge, AnalogCircleIndicator, TextIndicator, GlossyCircularGaugeNeedle) { +/*===== + AnalogGauge = dojox.gauges.AnalogGauge; +=====*/ +return declare("dojox.gauges.GlossyCircularGaugeBase", [AnalogGauge], { + // summary: + // The base class for GlossyCircularGauge and GlossySemiCircularGauge. + + + //_defaultIndicator : _Indicator + // the type of default indicator to create + _defaultIndicator: AnalogCircleIndicator, + + // _needle: dojox.gauges.GlossyCircularGaugeNeedle + // the needle of this circular gauge + _needle: null, + + // _textIndicator: dojox.gauges.TextIndicator + // the text displaying the gauge's value + _textIndicator: null, + + _textIndicatorAdded: false, + + // _range: Object + // the range of this gauge + _range: null, + + // value: Number + // The value of the gauge. + value: 0, + + // color: String + // The main color of the gauge. + color: 'black', + + // needleColor: Color + // The main color of the needle. + needleColor: '#c4c4c4', + + // textIndicatorFont: String + // The font of the text indicator + textIndicatorFont: "normal normal normal 20pt serif", + + // textIndicatorVisible: Boolean + // Indicates if the text indicator is visible + textIndicatorVisible: true, + + // textIndicatorColor: Color + // The color of the text indicator + textIndicatorColor: '#c4c4c4', + + // _majorTicksOffset: Number + // Distance, at design, from gauge's center to major ticks + _majorTicksOffset: 130, + + // majorTicksInterval: Number + // Interval between major ticks + majorTicksInterval: 10, + + // _majorTicksLength: Number + // Major tick size, at design + _majorTicksLength: 5, + + // majorTicksColor: Color + // Color of major tick marks + majorTicksColor: '#c4c4c4', + + // majorTicksLabelPlacement: String + // Placement of major tick labels + majorTicksLabelPlacement: 'inside', + + // _minorTicksOffset: Number + // Distance, at design, from gauge's center to minor ticks + _minorTicksOffset: 130, + + // minorTicksInterval: Number + // Interval between minor ticks + minorTicksInterval: 5, + + // _minorTicksLength: Number + // Minor tick size, at design + _minorTicksLength: 3, + + // minorTicksColor: Color + // Color of minor tick marks + minorTicksColor: '#c4c4c4', + + // noChange: Boolean + // Indicates if the gauge reacts to touch events + noChange: false, + + // title: String + // The title displayed in the needle's tooltip + title: "", + + // font: Object + // The font of the gauge + font: "normal normal normal 10pt serif", + + // scalePrecision: Number + // The precision for the formatting of numbers in the scale (default is 0) + scalePrecision: 0, + + // textIndicatorPrecision: Number + // The precision for the formatting of numbers in the text indicator (default is 0) + textIndicatorPrecision: 0, + + _font: null, + + + constructor: function(){ + this.startAngle = -135; + this.endAngle = 135; + this.min = 0; + this.max = 100; + }, + + startup: function(){ + // summary: + // Overrides AnalogGauge.startup + this.inherited(arguments); + + //just in case someone calls the startup twice. + + if (this._needle) return; + + var scale = Math.min((this.width / this._designWidth), (this.height / this._designHeight)); + this.cx = scale * this._designCx + (this.width - scale * this._designWidth) / 2; + this.cy = scale * this._designCy + (this.height - scale * this._designHeight) / 2; + + this._range = { + low: this.min ? this.min : 0, + high: this.max ? this.max : 100, + color: [255, 255, 255, 0] + }; + this.addRange(this._range); + + this._majorTicksOffset = this._minorTicksOffset = scale * this._majorTicksOffset; + this._majorTicksLength = scale * this._majorTicksLength; + this._minorTicksLength = scale * this._minorTicksLength; + + // creates and add the major ticks + this.setMajorTicks({ + fixedPrecision: true, + precision: this.scalePrecision, + font: this._font, + offset: this._majorTicksOffset, + interval: this.majorTicksInterval, + length: this._majorTicksLength, + color: this.majorTicksColor, + labelPlacement: this.majorTicksLabelPlacement + }); + + // creates and add the minor ticks + this.setMinorTicks({ + offset: this._minorTicksOffset, + interval: this.minorTicksInterval, + length: this._minorTicksLength, + color: this.minorTicksColor + }); + + // creates and adds the needle + this._needle = new GlossyCircularGaugeNeedle({ + hideValue: true, + title: this.title, + noChange: this.noChange, + color: this.needleColor, + value: this.value + }); + this.addIndicator(this._needle); + + // creates and add the text indicator + this._textIndicator = new TextIndicator({ + x: scale * this._designTextIndicatorX + (this.width - scale * this._designWidth) / 2, + y: scale * this._designTextIndicatorY + (this.height - scale * this._designHeight) / 2, + fixedPrecision: true, + precision: this.textIndicatorPrecision, + color: this.textIndicatorColor, + value: this.value ? this.value : this.min, + align: "middle", + font: this._textIndicatorFont + }); + + if (this.textIndicatorVisible){ + this.addIndicator(this._textIndicator); + this._textIndicatorAdded = true; + } + + // connect needle and text + connect.connect(this._needle, "valueChanged", lang.hitch(this, function(){ + this.value = this._needle.value; + this._textIndicator.update(this._needle.value); + this.onValueChanged(); + })); + + }, + + + onValueChanged: function(){ + // summary: + // Invoked when the value of the gauge has changed. + + }, + + //******************************************************************************************* + //* Property getters and setters + //******************************************************************************************* + + _setColorAttr: function(color){ + // summary: + // Sets the main color of the gauge + // color: String + // The color + this.color = color ? color : 'black'; + if (this._gaugeBackground && this._gaugeBackground.parent) + this._gaugeBackground.parent.remove(this._gaugeBackground); + if (this._foreground && this._foreground.parent) + this._foreground.parent.remove(this._foreground); + this._gaugeBackground = null; + this._foreground = null; + this.draw(); + }, + + _setNeedleColorAttr: function(color){ + // summary: + // Sets the main color of the needle + // color: String + // The color + this.needleColor = color; + if (this._needle){ + this.removeIndicator(this._needle); + this._needle.color = this.needleColor; + this._needle.shape = null; + this.addIndicator(this._needle); + } + }, + + _setTextIndicatorColorAttr: function(color){ + // summary: + // Sets the color of text indicator display the gauge's value + // color: String + // The color + this.textIndicatorColor = color; + if (this._textIndicator){ + this._textIndicator.color = this.textIndicatorColor; + this.draw(); + } + }, + + _setTextIndicatorFontAttr: function(font){ + // summary: + // Sets the font of the text indicator + // font: String + // An string representing the font such as 'normal normal normal 10pt Helvetica,Arial,sans-serif' + // + + this.textIndicatorFont = font; + this._textIndicatorFont = gfx.splitFontString(font); + if (this._textIndicator){ + this._textIndicator.font = this._textIndicatorFont; + this.draw(); + } + }, + + setMajorTicksOffset: function(offset){ + // summary: + // Sets the distance from gauge's center to major ticks + this._majorTicksOffset = offset; + this._setMajorTicksProperty({ + 'offset': this._majorTicksOffset + }); + return this; + }, + + getMajorTicksOffset: function(){ + // summary: + // Return the distance from gauge's center to major ticks + return this._majorTicksOffset; + }, + + _setMajorTicksIntervalAttr: function(interval){ + // summary: + // Sets the interval between major ticks + this.majorTicksInterval = interval; + this._setMajorTicksProperty({ + 'interval': this.majorTicksInterval + }); + }, + + setMajorTicksLength: function(length){ + // summary: + // Sets the size of the major ticks. + this._majorTicksLength = length; + this._setMajorTicksProperty({ + 'length': this._majorTicksLength + }); + return this; + }, + + getMajorTicksLength: function(){ + // summary: + // Returns the size of the major ticks. + return this._majorTicksLength; + }, + + _setMajorTicksColorAttr: function(color){ + // summary: + // Sets the color of the major ticks. + this.majorTicksColor = color; + this._setMajorTicksProperty({ + 'color': this.majorTicksColor + }); + }, + + _setMajorTicksLabelPlacementAttr: function(placement){ + // summary: + // Sets the placement of labels relatively to major ticks. + // placement: String + // 'inside' or 'outside' + this.majorTicksLabelPlacement = placement; + this._setMajorTicksProperty({ + 'labelPlacement': this.majorTicksLabelPlacement + }); + }, + + _setMajorTicksProperty: function(prop){ + if (this.majorTicks){ + lang.mixin(this.majorTicks, prop); + this.setMajorTicks(this.majorTicks); + } + }, + + setMinorTicksOffset: function(offset){ + // summary: + // Sets the distance from gauge's center to minor ticks + this._minorTicksOffset = offset; + this._setMinorTicksProperty({ + 'offset': this._minorTicksOffset + }); + return this; + }, + + getMinorTicksOffset: function(){ + // summary: + // Returns the distance from gauge's center to minor ticks + return this._minorTicksOffset; + }, + + _setMinorTicksIntervalAttr: function(interval){ + // summary: + // Sets the interval between minor ticks + this.minorTicksInterval = interval; + this._setMinorTicksProperty({ + 'interval': this.minorTicksInterval + }); + }, + + setMinorTicksLength: function(length){ + // summary: + // Sets the size of the minor ticks. + this._minorTicksLength = length; + this._setMinorTicksProperty({ + 'length': this._minorTicksLength + }); + return this; + }, + + getMinorTicksLength: function(){ + // summary: + // Return the size of the minor ticks. + return this._minorTicksLength; + }, + + _setMinorTicksColorAttr: function(color){ + // summary: + // Sets the color of the minor ticks. + this.minorTicksColor = color; + this._setMinorTicksProperty({ + 'color': this.minorTicksColor + }); + }, + + _setMinorTicksProperty: function(prop){ + if (this.minorTicks){ + lang.mixin(this.minorTicks, prop); + this.setMinorTicks(this.minorTicks); + } + }, + + _setMinAttr: function(min){ + this.min = min; + + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + this._updateNeedle(); + }, + + _setMaxAttr: function(max){ + this.max = max; + + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + this._updateNeedle(); + }, + + _setScalePrecisionAttr: function(value){ + // summary: + // Changes precision of the numbers in the scale of the gauge + // value: Number + // The new value + this.scalePrecision = value; + this._setMajorTicksProperty({ + 'precision': value + }); + }, + + _setTextIndicatorPrecisionAttr: function(value){ + // summary: + // Changes precision of the numbers in the text indicator + // value: Number + // The new value + this.textIndicatorPrecision = value; + this._setMajorTicksProperty({ + 'precision': value + }); + }, + + _setValueAttr: function(value){ + // summary: + // Changes the value of the gauge + // value: Number + // The new value for the gauge. + + value = Math.min(this.max, value); + value = Math.max(this.min, value); + this.value = value; + if (this._needle){ + // update will not work if noChange is true. + var noChange = this._needle.noChange; + this._needle.noChange = false; + this._needle.update(value); + this._needle.noChange = noChange; + } + }, + + _setNoChangeAttr: function(value){ + // summary: + // Indicates if the value of the gauge can be changed or not + // value: boolean + // true indicates that the gauge's value cannot be changed + this.noChange = value; + if (this._needle) + this._needle.noChange = this.noChange; + }, + + _setTextIndicatorVisibleAttr: function(value){ + // summary: + // Changes the visibility of the text indicator displaying the gauge's value. + // value: boolean + // true to show the indicator, false to hide. + + this.textIndicatorVisible = value; + if (this._textIndicator && this._needle){ + if (this.textIndicatorVisible && !this._textIndicatorAdded){ + this.addIndicator(this._textIndicator); + this._textIndicatorAdded = true; + this.moveIndicatorToFront(this._needle); + + } + else + if (!this.textIndicatorVisible && this._textIndicatorAdded){ + this.removeIndicator(this._textIndicator); + this._textIndicatorAdded = false; + } + } + }, + + _setTitleAttr: function(value){ + // summary: + // Sets the title displayed by the needle's tooltip . + // value: String + // the title + + this.title = value; + if (this._needle){ + this._needle.title = this.title; + } + }, + + _setOrientationAttr: function(orientation){ + // summary: + // Sets the orientation of the gauge + // orientation: String + // Either "clockwise" or "cclockwise" + + this.orientation = orientation; + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + this._updateNeedle(); + + }, + + _updateNeedle: function(){ + // updates the needle with no animation + this.value = Math.max(this.min, this.value); + this.value = Math.min(this.max, this.value); + + if (this._needle){ + // update will not work if noChange is true. + var noChange = this._needle.noChange; + this._needle.noChange = false; + this._needle.update(this.value, false); + this._needle.noChange = noChange; + } // to redraw the needle + }, + + _setFontAttr: function(font){ + // summary: + // Sets the font of the gauge + // font: String + // An string representing the font such as 'normal normal normal 10pt Helvetica,Arial,sans-serif' + // + + this.font = font; + this._font = gfx.splitFontString(font); + this._setMajorTicksProperty({ + 'font': this._font + }); + }}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGaugeNeedle.js b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGaugeNeedle.js new file mode 100644 index 0000000..8ff67d6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyCircularGaugeNeedle.js @@ -0,0 +1,64 @@ +define(["dojo/_base/declare","dojo/_base/Color" ,"./AnalogIndicatorBase"], + function(declare, Color, AnalogIndicatorBase) { + +/*===== + AnalogIndicatorBase = dojox.gauges.AnalogIndicatorBase; +=====*/ + +return declare("dojox.gauges.GlossyCircularGaugeNeedle", [AnalogIndicatorBase], { + // summary: + // The needle for the dojox.gauges.GlossyCircularGauge and + // dojox.gauges.GlossySemiCircularGauge. + // + // description: + // This object defines the needle for the dojox.gauges.GlossyCircularGauge and + // dojox.gauges.GlossySemiCircularGauge. + // Since the needle is created by the gauges class, you do not have to use this class directly. + + + interactionMode: "gauge", + + // color: String + // The color of the indicator. + color: '#c4c4c4', + + _getShapes: function(group){ + // summary: + // Overrides AnalogIndicatorBase._getShapes + + var darkerColor = Color.blendColors(new Color(this.color), new Color('black'), 0.3); + + if (!this._gauge) + return null; + + var shapes = []; + shapes[0] = group.createGroup(); + var scale = Math.min((this._gauge.width / this._gauge._designWidth), (this._gauge.height / this._gauge._designHeight)); + shapes[0].createGroup().setTransform({ + xx: scale, + xy: 0, + yx: 0, + yy: scale, + dx: 0, + dy: 0 + }); + shapes[0].children[0].createPath({ + path: "M357.1429 452.005 L333.0357 465.9233 L333.0357 438.0868 L357.1429 452.005 Z" + }).setTransform({ + xx: 0, + xy: 1, + yx: -6.21481, + yy: 0, + dx: -452.00505, + dy: 2069.75519 + }).setFill(this.color).setStroke({ + color: darkerColor, + width: 1, + style: "Solid", + cap: "butt", + join: 20.0 + }); + return shapes; + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/GlossyHorizontalGauge.js b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyHorizontalGauge.js new file mode 100644 index 0000000..eec7c32 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyHorizontalGauge.js @@ -0,0 +1,567 @@ +define(["dojo/_base/declare","dojo/_base/connect","dojo/_base/lang","dojo/_base/Color","dojox/gfx","./BarGauge","./BarCircleIndicator","./GlossyHorizontalGaugeMarker"], + function(declare, connect, lang, Color, gfx, BarGauge, BarCircleIndicator, GlossyHorizontalGaugeMarker) { + + +var NumberUtils + +/*===== + BarGauge = dojox.gauges.BarGauge; +=====*/ + +return declare("dojox.gauges.GlossyHorizontalGauge", [BarGauge], { + // summary: + // Represents an horizontal bar gauge with a glossy appearance. + // + // example: + // |
                                      + // |
                                      + + + // the type of default indicator to create + _defaultIndicator: BarCircleIndicator, + + // color: String + // The main color of the gauge. + color: 'black', + + // needleColor: Color + // The main color of the needle. + markerColor: 'black', + + // majorTicksInterval: Number + // Interval between major ticks + majorTicksInterval: 10, + + // _majorTicksLength: Number + // Major tick size, at design + _majorTicksLength: 10, + + // majorTicksColor: Color + // Color of major tick marks + majorTicksColor: '#c4c4c4', + + // minorTicksInterval: Number + // Interval between minor ticks + minorTicksInterval: 5, + + // _minorTicksLength: Number + // Minor tick size, at design + _minorTicksLength: 6, + + // minorTicksColor: Color + // Color of minor tick marks + minorTicksColor: '#c4c4c4', + + // value: Number + // The value of the gauge. + value: 0, + + // noChange: Boolean + // Indicates if the gauge reacts to touch events + noChange: false, + + // title: String + // The title displayed in the needle's tooltip + title: "", + + // font: Object + // The font of the gauge + font: "normal normal normal 10pt serif", + + // scalePrecision: Number + // The precision for the formatting of numbers in the scale (default is 0) + scalePrecision: 0, + + _font: null, + + _margin: 2, + _minBorderWidth: 2, + _maxBorderWidth: 6, + _tickLabelOffset: 5, + _designHeight: 100, + + constructor: function(){ + this.min = 0; + this.max = 100; + }, + + startup: function(){ + this.inherited(arguments); + + if (this._gaugeStarted) return; + + this._gaugeStarted = true; + + var scale = this.height / this._designHeight; + + this._minorTicksLength = this._minorTicksLength * scale; + this._majorTicksLength = this._majorTicksLength * scale; + + var font = this._font; + this._computeDataRectangle(); + + // computing scale height + + var th = gfx.normalizedLength(font.size); + var scaleHeight = th + this._tickLabelOffset + Math.max(this._majorTicksLength, this._minorTicksLength); + // indicator in the middle of the gauge + var yOffset = Math.max(0, (this.height - scaleHeight) / 2); + + this.addRange({ + low: this.min ? this.min : 0, + high: this.max ? this.max : 100, + color: [0, 0, 0, 0] + }); + + this.setMajorTicks({ + fixedPrecision: true, + precision: this.scalePrecision, + font: font, + labelPlacement: 'inside', + offset: yOffset - this._majorTicksLength / 2, + interval: this.majorTicksInterval, + length: this._majorTicksLength, + color: this.majorTicksColor + + }); + + this.setMinorTicks({ + labelPlacement: 'inside', + offset: yOffset - this._minorTicksLength / 2, + interval: this.minorTicksInterval, + length: this._minorTicksLength, + color: this.minorTicksColor + + }); + this._needle = new GlossyHorizontalGaugeMarker({ + hideValue: true, + title: this.title, + noChange: this.noChange, + offset: yOffset, + color: this.markerColor, + value: this.value + }); + this.addIndicator(this._needle); + + connect.connect(this._needle, "valueChanged", lang.hitch(this, function(){ + this.value = this._needle.value; + this.onValueChanged(); + })); + }, + + _layoutGauge: function(){ + // summary: + // Layout the gauge elements depending on the various parameters (size, font, tick length..) + + if (!this._gaugeStarted) + return; + + var font = this._font; + this._computeDataRectangle(); + var th = gfx.normalizedLength(font.size); + var scaleHeight = th + this._tickLabelOffset + Math.max(this._majorTicksLength, this._minorTicksLength); + // indicator in the middle of the gauge + var yOffset = Math.max(0, (this.height - scaleHeight) / 2); + + + this._setMajorTicksProperty({ + fixedPrecision: true, + precision: this.scalePrecision, + font: font, + offset: yOffset - this._majorTicksLength / 2, + interval: this.majorTicksInterval, + length: this._majorTicksLength + }); + + this._setMinorTicksProperty({ + offset: yOffset - this._minorTicksLength / 2, + interval: this.minorTicksInterval, + length: this._minorTicksLength + }); + + this.removeIndicator(this._needle); + this._needle.offset = yOffset; + this.addIndicator(this._needle); + }, + + _formatNumber: function(val){ + var NumberUtils = this._getNumberModule(); + if(NumberUtils){ // use internationalization if loaded + return NumberUtils.format(val, { + places: this.scalePrecision + }); + }else{ + return val.toFixed(this.scalePrecision); + } + }, + + _computeDataRectangle: function(){ + // summary: + // Computes the rectangle that defines the data area of the gauge. + + + if (!this._gaugeStarted) + return; + + var font = this._font; + var leftTextMargin = this._getTextWidth(this._formatNumber(this.min), font) / 2; + var rightTextMargin = this._getTextWidth(this._formatNumber(this.max), font) / 2; + var textMargin = Math.max(leftTextMargin, rightTextMargin); + + var margin = this._getBorderWidth() + Math.max(this._majorTicksLength, this._majorTicksLength) / 2 + textMargin; + this.dataHeight = this.height; + this.dataY = 0; + this.dataX = margin + this._margin; + this.dataWidth = Math.max(0, this.width - 2 * this.dataX); + }, + + _getTextWidth: function(s, font){ + return gfx._base._getTextBox(s, { + font: gfx.makeFontString(gfx.makeParameters(gfx.defaultFont, font)) + }).w || + 0; + }, + + _getBorderWidth: function(){ + // summary: + // Computes the width of the border surrounding the gauge + return Math.max(this._minBorderWidth, Math.min(this._maxBorderWidth, this._maxBorderWidth * this.height / this._designHeight)); + }, + + drawBackground: function(group){ + // summary: + // Draws the background of the gauge + // group: dojox.gfx.Group + // The GFX group where the background must be drawn + if (this._gaugeBackground){ + return; + } + + var lighterColor = Color.blendColors(new Color(this.color), new Color('white'), 0.4); + this._gaugeBackground = group.createGroup(); + + var borderWidth = this._getBorderWidth(); + var margin = this._margin; + var w = this.width; + var h = this.height; + var radius = Math.min(h / 4, 23); + this._gaugeBackground.createRect({ + x: margin, + y: margin, + width: Math.max(0, w - 2 * margin), + height: Math.max(0, h - 2 * margin), + r: radius + }).setFill(this.color); + + var left = margin + borderWidth; + var right = w - borderWidth - margin; + var top = margin + borderWidth; + var w2 = w - 2 * borderWidth - 2 * margin; + var h2 = h - 2 * borderWidth - 2 * margin; + if (w2 <= 0 || h2 <= 0) + return; + radius = Math.min(radius, w2 / 2); + radius = Math.min(radius, h2 / 2); + this._gaugeBackground.createRect({ + x: left, + y: top, + width: w2, + height: h2, + r: radius + }).setFill({ + type: "linear", + x1: left, + y1: 0, + x2: left, + y2: h - borderWidth - margin, + colors: [{ + offset: 0, + color: lighterColor + }, { + offset: .2, + color: this.color + }, { + offset: .8, + color: this.color + }, { + offset: 1, + color: lighterColor + }] + }); + + var f = 4 * (Math.sqrt(2) - 1) / 3 * radius; + this._gaugeBackground.createPath({ + path: 'M' + left + ' ' + (top + radius) + + 'C' + + left + + ' ' + + (top + radius - f) + + ' ' + + (left + radius - f) + + ' ' + + top + + ' ' + + (left + radius) + + ' ' + + top + + 'L' + + (right - radius) + + ' ' + + top + + 'C' + + (right - radius + f) + + ' ' + + top + + ' ' + + right + + ' ' + + (top + radius - f) + + ' ' + + right + + ' ' + + (top + radius) + + 'L' + + right + + ' ' + + (top + h / 2) + + 'L' + + left + + ' ' + + (top + h / 3) + + 'Z' + }).setFill({ + type: "linear", + x1: left, + y1: top, + x2: left, + y2: top + this.height / 2, + colors: [{ + offset: 0, + color: lighterColor + }, { + offset: 1, + color: Color.blendColors(new Color(this.color), new Color('white'), 0.2) + }] + }); + }, + + onValueChanged: function(){ + // summary: + // Callback when the value of the gauge has changed. + + }, + + //******************************************************************************************* + //* Property getters and setters + //******************************************************************************************* + + _setColorAttr: function(color){ + // summary: + // Sets the main color of the gauge + // color: String + // The color + this.color = color ? color : 'black'; + if (this._gaugeBackground && this._gaugeBackground.parent) + this._gaugeBackground.parent.remove(this._gaugeBackground); + + this._gaugeBackground = null; + this.draw(); + }, + + _setMarkerColorAttr: function(color){ + // summary: + // Sets the main color of the marker + // color: String + // The color + this.markerColor = color; + if (this._needle){ + this.removeIndicator(this._needle); + this._needle.color = color; + this._needle.shape = null; + this.addIndicator(this._needle); + } + }, + + _setMajorTicksIntervalAttr: function(interval){ + // summary: + // Sets the interval between major ticks + this.majorTicksInterval = interval; + this._setMajorTicksProperty({ + 'interval': this.majorTicksInterval + }); + }, + + setMajorTicksLength: function(length){ + // summary: + // Sets the size of the major ticks. + this._majorTicksLength = length; + this._layoutGauge(); + return this; + + }, + + getMajorTicksLength: function(){ + // summary: + // Returns the size of the major ticks. + return this._majorTicksLength; + }, + + _setMajorTicksColorAttr: function(color){ + // summary: + // Sets the color of the major ticks. + this.majorTicksColor = color; + this._setMajorTicksProperty({ + 'color': this.majorTicksColor + }); + }, + + _setMajorTicksProperty: function(prop){ + if (this.majorTicks == null){ + return; + } + lang.mixin(this.majorTicks, prop); + this.setMajorTicks(this.majorTicks); + }, + + _setMinorTicksIntervalAttr: function(interval){ + // summary: + // Sets the interval between minor ticks + this.minorTicksInterval = interval; + this._setMinorTicksProperty({ + 'interval': this.minorTicksInterval + }); + }, + + setMinorTicksLength: function(length){ + // summary: + // Sets the size of the minor ticks. + this._minorTicksLength = length; + this._layoutGauge(); + return this; + }, + + getMinorTicksLength: function(){ + // summary: + // Gets the size of the minor ticks. + return this._minorTicksLength; + }, + + _setMinorTicksColorAttr: function(color){ + // summary: + // Sets the color of the minor ticks. + this.minorTicksColor = color; + this._setMinorTicksProperty({ + 'color': this.minorTicksColor + }); + }, + + _setMinorTicksProperty: function(prop){ + if (this.minorTicks == null){ + return; + } + lang.mixin(this.minorTicks, prop); + this.setMinorTicks(this.minorTicks); + }, + + _setMinAttr: function(min){ + this.min = min; + this._computeDataRectangle(); + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + }, + + _setMaxAttr: function(max){ + this.max = max; + this._computeDataRectangle(); + if (this.majorTicks != null) + this.setMajorTicks(this.majorTicks); + if (this.minorTicks != null) + this.setMinorTicks(this.minorTicks); + this.draw(); + }, + + _setValueAttr: function(value){ + // summary: + // Changes the value of the gauge + // value: Number + // The new value for the gauge. + + value = Math.min(this.max, value); + value = Math.max(this.min, value); + this.value = value; + if (this._needle){ + // update will not work if noChange is true. + var noChange = this._needle.noChange; + this._needle.noChange = false; + this._needle.update(value); + this._needle.noChange = noChange; + } + }, + + _setScalePrecisionAttr: function(value){ + // summary: + // Changes precision of the numbers in the scale of the gauge + // value: Number + // The new value + this.scalePrecision = value; + this._layoutGauge(); + }, + + _setNoChangeAttr: function(value){ + // summary: + // Indicates if the value of the gauge can be changed or not + // value: boolean + // true indicates that the gauge's value cannot be changed + this.noChange = value; + if (this._needle) + this._needle.noChange = this.noChange; + }, + + _setTitleAttr: function(value){ + // summary: + // Sets the title displayed by the needle's tooltip . + // value: String + // the title + + this.title = value; + if (this._needle){ + this._needle.title = this.title; + } + }, + + _setFontAttr: function(font){ + // summary: + // Sets the font of the gauge + // summary: + // Sets the font of the gauge + // font: String + // An string representing the font such as 'normal normal normal 10pt Helvetica,Arial,sans-serif' + // + + this.font = font; + this._font = gfx.splitFontString(font); + this._layoutGauge(); + } +}); +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/GlossyHorizontalGaugeMarker.js b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyHorizontalGaugeMarker.js new file mode 100644 index 0000000..d83b7db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/GlossyHorizontalGaugeMarker.js @@ -0,0 +1,129 @@ +define(["dojo/_base/declare","dojo/_base/Color","./BarLineIndicator"], + function(declare, Color, BarLineIndicator) { + +/*===== + BarLineIndicator = dojox.gauges.BarLineIndicator; +=====*/ + +return declare("dojox.gauges.GlossyHorizontalGaugeMarker", [BarLineIndicator], { + // summary: + // The marker for the dojox.gauges.GlossyHorizontalGauge. + // + // description: + // This object defines the marker for the dojox.gauges.GlossyHorizontalGauge. + // Since the needle is created by the gauges class, you do not have to use this class directly. + + // interactionMode : String + // The interactionMode can have two values : "indicator" (the default) or "gauge". + // When the value is "indicator", the user must click on the indicator to change the value. + // When the value is "gauge", the user can click on the gauge to change the indicator value. + // If a gauge contains several indicators with the indicatorMode property set to "gauge", then + // only the first indicator will be moved when clicking the gauge. + interactionMode: "gauge", + + // color: String + // The color of the indicator. + color: 'black', + + _getShapes: function(group){ + // summary: + // Overrides BarLineIndicator._getShapes + + if (!this._gauge){ + return null; + } + var v = this.value; + if (v < this._gauge.min){ + v = this._gauge.min; + } + if (v > this._gauge.max){ + v = this._gauge.max; + } + + var pos = this._gauge._getPosition(v); + var shapes = []; + + var color = new Color(this.color); + color.a = .67; + + var lighterColor = Color.blendColors(color, new Color('white'), 0.4); + + var top = shapes[0] = group.createGroup(); + var scale = this._gauge.height / 100; + scale = Math.max(scale, .5); + scale = Math.min(scale, 1); + + top.setTransform({ + xx: 1, + xy: 0, + yx: 0, + yy: 1, + dx: pos, + dy: 0 + }); + var marker = top.createGroup().setTransform({ + xx: 1, + xy: 0, + yx: 0, + yy: 1, + dx: -scale * 10, + dy: this._gauge.dataY + this.offset + }); + var rescale = marker.createGroup().setTransform({ + xx: scale, + xy: 0, + yx: 0, + yy: scale, + dx: 0, + dy: 0 + }); + + rescale.createRect({ + x: .5, + y: .0, + width: 20, + height: 47, + r: 6 + }).setFill(color).setStroke(lighterColor); + rescale.createPath({ + path: 'M 10.106 41 L 10.106 6 C 10.106 2.687 7.419 0 4.106 0 L 0.372 0 C -0.738 6.567 1.022 15.113 1.022 23.917 C 1.022 32.721 2.022 40.667 0.372 47 L 4.106 47 C 7.419 47 10.106 44.314 10.106 41 Z' + }).setFill(lighterColor).setTransform({ + xx: 1, + xy: 0, + yx: 0, + yy: 1, + dx: 10.306, + dy: 0.009 + }); + rescale.createRect({ + x: 9.5, + y: 1.5, + width: 2, + height: 34, + r: 0.833717 + }).setFill(color).setStroke(this.color); + rescale.createRect({ + x: 9, + y: 0, + width: 3, + height: 34, + r: 6 + }).setFill({ + type: "linear", + x1: 9, + y1: 0, + x2: 9, + y2: 34, + colors: [{ + offset: 0, + color: 'white' + }, { + offset: 1, + color: this.color + }] + }); + return shapes; + } + +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/GlossySemiCircularGauge.js b/js/dojo-release-1.7.2-src/dojox/gauges/GlossySemiCircularGauge.js new file mode 100644 index 0000000..827c4e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/GlossySemiCircularGauge.js @@ -0,0 +1,244 @@ +define(["dojo/_base/declare","dojo/_base/Color","./GlossyCircularGaugeBase"], + function(declare, Color, GlossyCircularGaugeBase) { + +/*===== + GlossyCircularGaugeBase = dojox.gauges.GlossyCircularGaugeBase; +=====*/ + +return declare("dojox.gauges.GlossySemiCircularGauge", [GlossyCircularGaugeBase], { + // summary: + // Represents a semi circular gauge with a glossy appearance. + // + // example: + // |
                                      + // |
                                      + + + _designWidth: 381.25, + _designHeight: 221.25, + _designCx: 190.6675, + _designCy: 185.87665, + _designTextIndicatorX: 190.6675, + _designTextIndicatorY: 145.87665, + + + constructor: function(){ + // summary: + // Creates a new GlossySemiCircularGauge + this.min = 0; + this.max = 100; + this.startAngle = -91.5; + this.endAngle = 91.5; + }, + + drawBackground: function(group){ + // summary: + // Draws the background of the gauge + // group: dojox.gfx.Group + // The GFX group where the background must be drawn + var lighterColor1 = Color.blendColors(new Color(this.color), new Color('white'), 0.4); + var lighterColor2 = Color.blendColors(new Color(this.color), new Color('white'), 0.8); + + var scale = Math.min((this.width / this._designWidth), (this.height / this._designHeight)); + var transform = { + xx: scale, + xy: 0, + yx: 0, + yy: scale, + dx: -23.33928 * scale + (this.width - scale * this._designWidth) / 2, + dy: -483.30859 * scale + (this.height - scale * this._designHeight) / 2 + }; + + + if (this._gaugeBackground) { + this._gaugeBackground.setTransform(transform); + return; + } + this._gaugeBackground = group.createGroup(); + this._gaugeBackground.setTransform(transform); + this._gaugeBackground.createPath({ + path: "M0 0 C0.023 0.892 0.037 9.147 0.045 15.97 C-0.349 98.05 -67.016 164.455 -149.182 164.427 C-231.347 164.398 -297.969 97.949 -298.307 15.869 C-298.299 9.081 -298.285 0.884 -298.262 -0.006 C-298.119 -5.424 -293.686 -9.742 -288.265 -9.742 L-9.996 -9.742 C-4.574 -9.742 -0.139 -5.42 0 0" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: 400.74198, + dy: 690.00586 + }).setFill(this.color); + + this._gaugeBackground.createPath({ + path: "M451.297 436.5 C451.333 437.807 451.355 449.118 451.354 450.434 L451.354 450.527 C451.329 526.644 389.604 588.327 313.487 588.302 C237.372 588.275 175.688 526.551 175.713 450.434 C175.713 450.403 175.735 437.776 175.771 436.5 L451.297 436.5 Z" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: -177.58928, + dy: 1234.05859 + }).setFill({ + type: "linear", + x1: 175.688, + y1: 390.95189, + x2: 175.688, + y2: 474.45676, + colors: [{ + offset: 0, + color: lighterColor1 + }, { + offset: 1, + color: this.color + }] + }); + this._gaugeBackground.createPath({ + path: "M451.321 453.375 C449.778 528.175 388.655 588.327 313.491 588.302 C238.359 588.276 177.295 528.135 175.753 453.377 C217.829 442.046 266.246 464.646 315.36 464.646 C364.489 464.646 409.364 442.041 451.321 453.375" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: -177.58928, + dy: 1234.05859 + }).setFill({ + type: "linear", + x1: 175.75301, + y1: 442.04099, + x2: 175.75301, + y2: 588.32703, + colors: [{ + offset: 0, + color: this.color + }, { + offset: 1, + color: lighterColor2 + }] + }); + this._gaugeBackground.createPath({ + path: "M0 0 C-1.543 74.8 -62.666 134.952 -137.83 134.927 C-212.962 134.901 -274.026 74.76 -275.568 0.002 C-233.492 -11.329 -185.075 11.271 -135.961 11.271 C-86.832 11.271 -41.957 -11.334 0 0" + }).setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: 386.81123, + dy: 667.59241 + }).setFill([255, 255, 255, 0.12157]); + }, + + + drawForeground: function(group){ + // summary: + // Draws the foreground of the gauge + // group: dojox.gfx.Group + // The GFX group where the foreground must be drawn + var scale = Math.min((this.width / this._designWidth), (this.height / this._designHeight)); + var transform = { + xx: scale, + xy: 0, + yx: 0, + yy: scale, + dx: (-160) * scale + (this.width - scale * this._designWidth) / 2, + dy: (-264.5) * scale + (this.height - scale * this._designHeight) / 2 + }; + + var lighterColor1 = Color.blendColors(new Color(this.color), new Color('white'), 0.4); + var lighterColor2 = Color.blendColors(new Color(this.color), new Color('white'), 0.8); + + if (this._foreground) { + this._foreground.setTransform(transform); + return; + } + this._foreground = group.createGroup(); + this._foreground.setTransform(transform); + + var group1 = this._foreground.createGroup().setTransform({ + xx: 1.25, + xy: 0, + yx: 0, + yy: -1.25, + dx: -43.30358, + dy: 1015.57642 + }); + group1.createPath({ + path: "M0 0 C0.004 -12.579 -10.189 -22.779 -22.768 -22.784 C-35.349 -22.788 -45.549 -12.594 -45.553 -0.016 L-45.553 0 C-45.558 12.579 -35.363 22.779 -22.783 22.784 C-10.205 22.788 -0.004 12.594 0 0.015 L0 0 Z" + }).setTransform({ + xx: 1, + xy: 0, + yx: 0, + yy: 1, + dx: 336.31049, + dy: 451.43359 + }).setFill(this.color); + + group1.createPath({ + path: "M333.443 451.434 C333.446 440.438 324.537 431.523 313.541 431.519 C302.546 431.515 293.63 440.425 293.626 451.42 L293.626 451.434 C293.622 462.429 302.532 471.345 313.527 471.349 C324.523 471.353 333.439 462.442 333.443 451.447 L333.443 451.434 Z" + }).setFill({ + type: "linear", + x1: 293.62201, + y1: 431.51501, + x2: 293.62201, + y2: 451.43401, + colors: [{ + offset: 0, + color: lighterColor1 + }, { + offset: 1, + color: this.color + }] + }); + + group1.createPath({ + path: "M333.438 451.858 C333.215 462.663 324.386 471.353 313.528 471.349 C302.675 471.345 293.854 462.658 293.632 451.858 C299.709 450.222 306.702 453.486 313.799 453.486 C320.895 453.486 327.377 450.221 333.438 451.858" + }).setFill({ + type: "linear", + x1: 293.63199, + y1: 450.22101, + x2: 293.63199, + y2: 471.353, + colors: [{ + offset: 0, + color: this.color + }, { + offset: 1, + color: lighterColor2 + }] + }); + + group1.createPath({ + path: "M0 0 C-0.223 10.805 -9.052 19.494 -19.909 19.49 C-30.763 19.486 -39.583 10.799 -39.806 0 C-33.729 -1.636 -26.735 1.628 -19.639 1.628 C-12.543 1.628 -6.061 -1.638 0 0" + }).setTransform({ + xx: 1, + xy: 0, + yx: 0, + yy: 1, + dx: 333.4375, + dy: 451.8584 + }).setFill([255, 255, 255, 0.12157]); + + } + + +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/Range.js b/js/dojo-release-1.7.2-src/dojox/gauges/Range.js new file mode 100644 index 0000000..030201f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/Range.js @@ -0,0 +1,73 @@ +define(["dojo/_base/declare","dijit/_Widget"], + function(declare, Widget) { + +/*===== + Widget = dijit._Widget; +=====*/ + +return declare("dojox.gauges.Range", [Widget], { + // summary: + // a range to be used in a _Gauge + // + // description: + // a range widget, which has given properties. drawn by a _Gauge. + // + // example: + // | + // | ... + // |
                                      + // |
                                      + // |
                                      + // |
                                      + + // low: Number + // the low value of the range + low: 0, + + // high: Number + // the high value of the range + high: 0, + + // hover: String + // the text to put in the tooltip for the gauge + hover: '', + + // color: Object + // the color of the range. This must be an object of one of two forms: + // {'color': 'color-name'} + // OR + // (for a gradient:) + // {'type': 'linear', 'colors': [{offset: 0, color:'#C0C0C0'}, {offset: 1, color: '#E0E0E0'}] } + color: null, + + // size: Number + // for a circular gauge (such as an AnalogGauge), this dictates the size of the arc + size: 0, + + startup: function(){ + this.color = this.color ? ( this.color.color || this.color) : 'black'; + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/TextIndicator.js b/js/dojo-release-1.7.2-src/dojox/gauges/TextIndicator.js new file mode 100644 index 0000000..90442b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/TextIndicator.js @@ -0,0 +1,78 @@ +define(["dojo/_base/declare","./_Indicator"], + function(declare, Indicator) { + +/*===== + Indicator = dojox.gauges._Indicator; +=====*/ + +return declare("dojox.gauges.TextIndicator", [Indicator], { + // summary: + // A gauge indicator the simply draws its value as text. + + + // x: Number + // The x coordinate of the indicator + x: 0, + + // y: Number + // The y coordinate of the indicator + y: 0, + + // align: String + // The horizontal alignment of the text, the value can be 'middle' (the default), 'left' or 'right' + align: 'middle', + + // fixedPrecision: Boolean + // Indicates that the number is displayed in fixed precision or not (precision is defined by the 'precision' property (default is true). + fixedPrecision: true, + + // precision: Number + // The number of tailing digits to display the value of the indicator when the 'fixedPrecision' property is set to true (default is 0). + precision: 0, + + draw: function(group, /*Boolean?*/ dontAnimate){ + // summary: + // Override of dojox.gauges._Indicator.draw + var v = this.value; + + if (v < this._gauge.min) { + v = this._gauge.min; + } + if (v > this._gauge.max) { + v = this._gauge.max; + } + var txt; + var NumberUtils = this._gauge ? this._gauge._getNumberModule() : null; + if (NumberUtils) { + txt = this.fixedPrecision ? NumberUtils.format(v, { + places: this.precision + }) : NumberUtils.format(v); + } else { + txt = this.fixedPrecision ? v.toFixed(this.precision) : v.toString(); + } + + var x = this.x ? this.x : 0; + var y = this.y ? this.y : 0; + var align = this.align ? this.align : "middle"; + if(!this.shape){ + this.shape = group.createText({ + x: x, + y: y, + text: txt, + align: align + }); + }else{ + this.shape.setShape({ + x: x, + y: y, + text: txt, + align: align + }); + } + this.shape.setFill(this.color); + if (this.font) this.shape.setFont(this.font); + + } + +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/_Gauge.css b/js/dojo-release-1.7.2-src/dojox/gauges/_Gauge.css new file mode 100644 index 0000000..46dd7fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/_Gauge.css @@ -0,0 +1,63 @@ +@CHARSET "ISO-8859-1"; + +.dojoxGaugeContent { + font-family: Verdana; + border-width: 1px; + border-style: solid; + border-color: #CCCCCC; +} + +.dojoxGaugeRange1 { + fill: #606060 ; + stroke: #606060 ; +} + +.dojoxGaugeRange2 { + fill: #707070 ; + stroke: #707070 ; +} + +.dojoxGaugeRange3 { + fill: #808080 ; + stroke: #808080 ; +} + +.dojoxGaugeRange4 { + fill: #909090 ; + stroke: #909090 ; +} + +.dojoxGaugeRange5 { + fill: #A0A0A0; + stroke: #A0A0A0; +} + +.dojoxGaugeRange6 { + fill: #B0B0B0; + stroke: #B0B0B0; +} + +.dojoxGaugeRange7 { + fill: #C0C0C0; + stroke: #C0C0C0; +} + +.dojoxGaugeRange8 { + fill: #D0D0D0; + stroke: #D0D0D0; +} + +.dojoxGaugeRange9 { + fill: #E0E0E0; + stroke: #E0E0E0; +} + +.dojoxGaugeRange10 { + fill: #F0F0F0; + stroke: #F0F0F0; +} + +.testing { + fill: blue; + stroke: blue; +} diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/_Gauge.js b/js/dojo-release-1.7.2-src/dojox/gauges/_Gauge.js new file mode 100644 index 0000000..4bb8398 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/_Gauge.js @@ -0,0 +1,844 @@ +define(["dojo/_base/declare","dojo/_base/lang","dojo/_base/html","dojo/_base/array","dojo/_base/event", + "dojo/_base/connect","dojo/dom-construct", "dijit/_Widget", "dojox/gfx", "./Range", "dojo/fx/easing"], + function(declare, lang, html, arr, event, connect, dom, Widget, gfx, Range) { + + var _tooltipModule = 0; + var _numberModule = 0; + +/*===== + Widget = dijit._Widget; +=====*/ + +return declare("dojox.gauges._Gauge",[Widget],{ + // summary: + // The abstract base class for gauges. + // + // description: + // using dojo.gfx (and thus either SVG or VML based on what is supported), this widget + // builds a gauge component, used to display numerical data in a familiar format. + // This widget is not to be used alone. it is meant to be subclassed, such as + // dojox.gauges.BarGauge or dojox.gauges.AnalogGauge + + // width: Number + // The width of the gauge (default is 300) + width: 0, + + // height: Number + // The height of the gauge (default is 200) + height: 0, + + // background: Object + // The color of the background. This must be an object of one of two forms: + // {'color': 'color-name'} + // OR + // (for a gradient:) + // {'type': 'linear', 'x1': 0, 'x2': 0, 'y1': 0, 'y2': 200, 'colors': [{offset: 0, color:'#C0C0C0'}, {offset: 1, color: '#E0E0E0'}] } + background: null, + + // image: String + // Background image for gauge (default is no image) + image: null, + + // useRangeStyles: Number + // Indicates whether to use given css classes (dojoxGaugeRangeXX) + // to determine the color (and other style attributes?) of the ranges + // this value should be the number of dojoxGaugeRange classes that are + // defined, starting at dojoxGaugeRange1 (0 indicates falling to default + // hardcoded colors) + useRangeStyles: 0, + + // useTooltip: Boolean + // Indicates whether tooltips should be displayed for ranges, indicators, etc. + useTooltip: true, + + // majorTicks: Object + // An object representing the tick marks that should be added to the gauge. Major tick marks have a text label + // indicating the value. The object can have the following attributes (required are marked with a *): + // - offset: the distance from the 'center' of the gauge. Used differently for Analog vs. Bar + // - width: The width of the mark + // - length: The length of the mark + // - interval: The interval the ticks should be added on + // - color: The color of the mark and text + // - font: an object with any/all of the following parameters: + // {family: "Helvetica", style: "italic", variant: 'small-caps', weight: 'bold', size: "18pt"} + majorTicks: null, + + // minorTicks: Object + // An object of the same format as majorTicks, indicating where the minor (label-less) marks should be placed + // The font parameter is ignored if provided since minor tick marks have no text label. + minorTicks: null, + + // _defaultIndicator: Object + // Should be overridden by any extending classes and used to indicate what the 'default' indicator is. + // This object is used as the indicator when creating tick marks or when an anonymous object is passed into + // addIndicator. + _defaultIndicator: null, + + // defaultColors: Array + // Set of default colors to color ranges with. + defaultColors: [[0x00,0x54,0xAA,1], + [0x44,0x77,0xBB,1], + [0x66,0x99,0xCC,1], + [0x99,0xBB,0xEE,1], + [0x99,0xCC,0xFF,1], + [0xCC,0xEE,0xFF,1], + [0xDD,0xEE,0xFF,1]], + + // min: Number + // The minimum value of the gauge. Normally not set explicitly, as it will be determined by + // the ranges that are added. + min: null, + + // max: Number + // The maximum value of the gauge. Normally not set explicitly, as it will be determined by + // the ranges that are added. + max: null, + + // surface: Object + // The GFX surface that the shapes are drawn on. Can be accessed/used by indicators to draw themselves + surface: null, + + // hideValues: Boolean + // Indicates whether the text boxes showing the value of the indicator (as text + // content) should be hidden or shown. Default is not hidden, aka shown. + hideValues: false, + + // internal data + gaugeContent: undefined, + _backgroundDefault: {color: '#E0E0E0'}, + _rangeData: null, + _indicatorData: null, + _drag: null, + _img: null, + _overOverlay: false, + _lastHover: '', + + startup: function(){ + // handle settings from HTML by making sure all the options are + // converted correctly to numbers and that we calculate defaults + // for cx, cy and radius + if(this.image === null){ + this.image={}; + } + + this.connect(this.gaugeContent, 'onmousedown', this.handleMouseDown); + this.connect(this.gaugeContent, 'onmousemove', this.handleMouseMove); + this.connect(this.gaugeContent, 'onmouseover', this.handleMouseOver); + this.connect(this.gaugeContent, 'onmouseout', this.handleMouseOut); + this.connect(this.gaugeContent, 'touchstart', this.handleTouchStart); + this.connect(this.gaugeContent, 'touchend', this.handleTouchEnd); + this.connect(this.gaugeContent, 'touchmove', this.handleTouchMove); + + if(!lang.isArray(this.ranges)){ this.ranges = []; } + if(!lang.isArray(this.indicators)){ this.indicators = []; } + var ranges = [], indicators = []; + var i; + if(this.hasChildren()){ + var children = this.getChildren(); + for(i=0; i 0; // Boolean + }, + + buildRendering: function(){ + // summary: + // Overrides _Widget.buildRendering + var n = this.domNode = this.srcNodeRef ? this.srcNodeRef: dom.create("div"); + this.gaugeContent = dom.create("div", { + className: "dojoxGaugeContent" + }); + this.containerNode = dom.create("div"); + this.mouseNode = dom.create("div"); + while(n.hasChildNodes()){ + this.containerNode.appendChild(n.firstChild); + } + dom.place(this.gaugeContent, n); + dom.place(this.containerNode, n); + dom.place(this.mouseNode, n); + }, + + _setTicks: function(/*Object*/ oldTicks, /*Object*/ newTicks, /*Boolean*/ major){ + // summary: + // internal method used to clear existing tick marks, then add new ones + var i; + if (oldTicks && lang.isArray(oldTicks._ticks)){ + for (i = 0; i < oldTicks._ticks.length; i++){ + this._removeScaleTick(oldTicks._ticks[i]); + } + } + var t = { + length: newTicks.length, + offset: newTicks.offset, + noChange: true + }; + if (newTicks.color){ + t.color = newTicks.color; + } + if (newTicks.font){ + t.font = newTicks.font; + } + if (newTicks.labelPlacement){ + t.direction = newTicks.labelPlacement; + } + newTicks._ticks = []; + for (i=this.min;i<=this.max;i+=newTicks.interval){ + if (i==this.max&&this._isScaleCircular()) continue; // do not draw last tick on fully circular gauges + t.value=i; + if (major){ + var NumberUtils = this._getNumberModule(); + if (NumberUtils){ // use internationalization if loaded + t.label = (newTicks.fixedPrecision && newTicks.precision) ? NumberUtils.format(i, { + places: newTicks.precision + }): NumberUtils.format(i); + }else{ + t.label = (newTicks.fixedPrecision && newTicks.precision) ? i.toFixed(newTicks.precision): i.toString(); + } + } + newTicks._ticks.push(this._addScaleTick(t, major)); + } + return newTicks; + }, + + _isScaleCircular: function(){ + // summary: + // Internal method to check if the scale is fully circular + return false; + }, + + setMinorTicks: function(/*Object*/ ticks){ + // summary: + // Creates and draws the minor tick marks based on the passed object (expecting the same format + // as the minorTicks object documented above) + this.minorTicks = this._setTicks(this.minorTicks, ticks, false); + }, + + setMajorTicks: function(/*Object*/ ticks){ + // summary: + // Creates and draws the major tick marks based on the passed object (expecting the same format + // as the majorTicks object documented above) + this.majorTicks = this._setTicks(this.majorTicks, ticks, true); + }, + + postCreate: function(){ + if(this.hideValues){ + html.style(this.containerNode, "display", "none"); + } + html.style(this.mouseNode, 'width', '0'); + html.style(this.mouseNode, 'height', '0'); + html.style(this.mouseNode, 'position', 'absolute'); + html.style(this.mouseNode, 'z-index', '100'); + + if(this.useTooltip){ + require(["dijit/Tooltip"], dojo.hitch(this, function(Tooltip){ + Tooltip.show('test', this.mouseNode, !this.isLeftToRight()); + Tooltip.hide(this.mouseNode); + })); + } + }, + + _getNumberModule :function() { + // summary: + // Tests is AMD dojo/number is loaded + + if (_numberModule == 0) { + try { + _numberModule = require("dojo/number"); + } + catch (e) { + _numberModule = null; + } + } + return _numberModule; + }, + + createSurface: function(){ + // summary: + // Internal method used by the gauge to create the graphics surface area + this.gaugeContent.style.width = this.width + 'px'; + this.gaugeContent.style.height = this.height + 'px'; + this.surface = gfx.createSurface(this.gaugeContent, this.width, this.height); + + // create several groups where various gauge elements will be created. + this._backgroundGroup = this.surface.createGroup(); + this._rangeGroup = this.surface.createGroup(); + this._minorTicksGroup = this.surface.createGroup(); + this._majorTicksGroup = this.surface.createGroup(); + this._overlayGroup = this.surface.createGroup(); + this._indicatorsGroup = this.surface.createGroup(); + this._foregroundGroup = this.surface.createGroup(); + + this._background = this._backgroundGroup.createRect({x: 0, y: 0, width: this.width, height: this.height }); + this._background.setFill(this.background); + + if(this.image.url){ + var imageGroup = this._backgroundGroup; + if (this.image.overlay) + imageGroup = this._overlayGroup; + + this._img = imageGroup.createImage({width: this.image.width || this.width, height: this.image.height || this.height, src: this.image.url}); + if(this.image.x || this.image.y){ + this._img.setTransform({dx: this.image.x || 0, dy: this.image.y || 0}); + } + } + }, + + draw: function(){ + // summary: + // This function is used to draw (or redraw) the gauge. + // description: + // Draws the gauge by drawing the surface, the ranges, and the indicators. + var i; + if (!this.surface)return; + + this.drawBackground(this._backgroundGroup); + + if(this._rangeData){ + for(i=0; i this.max)){this.max = range.high;} + + if(!range.color){ + var colorIndex = this._rangeData.length % this.defaultColors.length; + if(gfx.svg && this.useRangeStyles > 0){ + colorIndex = (this._rangeData.length % this.useRangeStyles)+1; + range.color = {style: "dojoxGaugeRange"+colorIndex}; + }else{ + colorIndex = this._rangeData.length % this.defaultColors.length; + range.color = this.defaultColors[colorIndex]; + } + } + this._rangeData[this._rangeData.length] = range; + } + this.draw(); + }, + + _addScaleTick: function(/*Object*/indicator, /*Boolean*/ major){ + // summary: + // Adds a scale ticks, that is an indicator. + // description: + // This method adds a tick mark to the gauge + // indicator: dojox.gauges._Indicator + // A dojox.gauges._Indicator or an object with similar parameters + // (value, color, offset, etc.). + + if(!indicator.declaredClass){// !== 'dojox.gauges.Indicator'){ + // We were passed a plain object, need to make an indicator out of it. + indicator = new this._defaultIndicator(indicator); + } + + indicator._gauge = this; + if (major){ + if (!this._majorTicksData){ + this._majorTicksData = []; + } + this._majorTicksData[this._majorTicksData.length] = indicator; + indicator.draw(this._majorTicksGroup); + } else { + if (!this._minorTicksData){ + this._minorTicksData = []; + } + this._minorTicksData[this._minorTicksData.length] = indicator; + indicator.draw(this._minorTicksGroup); + } + return indicator; + }, + + _removeScaleTick: function(/*Object*/indicator){ + // summary: + // Removes the given scale tick from the gauge by calling it's remove function + // and removing it from the local cache. + var i; + if (this._majorTicksData) for (i = 0; i < this._majorTicksData.length; i++){ + if (this._majorTicksData[i] === indicator){ + this._majorTicksData.splice(i, 1); + indicator.remove(); + return; + } + } + if (this._minorTicksData) for (i = 0; i < this._minorTicksData.length; i++){ + if (this._minorTicksData[i] === indicator){ + this._minorTicksData.splice(i, 1); + indicator.remove(); + return; + } + } + }, + + addIndicator: function(/*Object*/indicator){ + // summary: + // This method is used to add an indicator to the gauge. + // description: + // This method adds an indicator, such as a t needle, + // to the gauge. + // indicator: dojox.gauges._Indicator + // A dojox.gauges._Indicator or an object with similar parameters + // (value, color, offset, etc.). + + if(!indicator.declaredClass){// !== 'dojox.gauges.Indicator'){ + // We were passed a plain object, need to make an indicator out of it. + indicator = new this._defaultIndicator(indicator); + } + indicator._gauge = this; + if(!indicator.hideValue){ + this.containerNode.appendChild(indicator.domNode); + } + if(!this._indicatorData){this._indicatorData = [];} + this._indicatorData[this._indicatorData.length] = indicator; + indicator.draw(this._indicatorsGroup); + return indicator; + }, + + removeIndicator: function(/*Object*/indicator){ + // summary: + // Removes the given indicator from the gauge by calling it's remove function + // and removing it from the local cache. + // indicator: dojox.gauges._Indicator + // The indicator to remove. + for(var i=0; i + // | require(["dojox/gauges/AnalogGauge","dojox/gauges/Indicator"]); + // | + // | ... + // |
                                      + // |
                                      + // |
                                      + // |
                                      + + // value: Number + // The value (on the gauge) that this indicator should be placed at + value: 0, + + // type: String + // The type of indicator to draw. Varies by gauge type. Some examples include + // "line", "arrow", and "bar" + type: '', + + // color: String + // The color of the indicator. + color: 'black', + + // strokeColor: String + // The color to stroke the outline of the indicator. + strokeColor: '', + + // label: String + // The text label for the indicator. + label: '', + + // font: Object + // The font for the indicator. The font is enerally in a format similar to: + // {family: "Helvetica", weight: "bold", style: "italic", size: "18pt", rotated: true} + font: {family: "sans-serif", size: "12px"}, + + // length: Number + // The length of the indicator. In the above example, the radius of the AnalogGauge + // is 125, but the length of the indicator is 135, meaning it would project beyond + // the edge of the AnalogGauge + length: 0, + + // width: Number + // The width of the indicator. + width: 0, + + // offset: Number + // The offset of the indicator + offset: 0, + + // hover: String + // The string to put in the tooltip when this indicator is hovered over. + hover: '', + + // front: boolean + // Keep this indicator at the front + front: false, + + // onDragMove: String + // The function to call when this indicator is moved by dragging. + // onDragMove: '', + + // easing: String|Object + // indicates the easing function to be used when animating the of an indicator. + easing: fx._defaultEasing, + + // duration: Number + // indicates how long an animation of the indicator should take + duration: 1000, + + // hideValues: Boolean + // Indicates whether the text boxes showing the value of the indicator (as text + // content) should be hidden or shown. Default is not hidden, aka shown. + hideValue: false, + + // noChange: Boolean + // Indicates whether the indicator's value can be changed. Useful for + // a static target indicator. Default is false (that the value can be changed). + noChange: false, + + // interactionMode: String + // The interactionMode can have two values: "indicator" (the default) or "gauge". + // When the value is "indicator", the user must click on the indicator to change the value. + // When the value is "gauge", the user can click on the gauge to change the indicator value. + // If a gauge contains several indicators with the indicatorMode property set to "gauge", then + // only the first indicator will be moved when clicking the gauge. + interactionMode: "indicator", + + _gauge: null, + + // title: String + // The title of the indicator, to be displayed next to it's input box for the text-representation. + title: "", + + startup: function(){ + if(this.onDragMove){ + this.onDragMove = lang.hitch(this.onDragMove); + } + if (this.strokeColor === ""){ + this.strokeColor = undefined; + } + }, + + postCreate: function(){ + if(this.title === ""){ + html.style(this.domNode, "display", "none"); + } + if(lang.isString(this.easing)){ + this.easing = lang.getObject(this.easing); + } + }, + + buildRendering: function(){ + // summary: + // Overrides _Widget.buildRendering + + var n = this.domNode = this.srcNodeRef ? this.srcNodeRef: dom.create("div"); + domClass.add(n, "dojoxGaugeIndicatorDiv"); + var title = dom.create("label"); + if (this.title) title.innerHTML = this.title + ":"; + dom.place(title, n); + this.valueNode = dom.create("input", { + className: "dojoxGaugeIndicatorInput", + size: 5, + value: this.value + }); + + dom.place(this.valueNode, n); + connect.connect(this.valueNode, "onchange", this, this._update); + }, + + _update: function(){ + // summary: + // A private function, handling the updating of the gauge + + this._updateValue(true); + }, + + _updateValue: function(animate){ + // summary: + // A private function, handling the updating of the gauge + var value = this.valueNode.value; + if(value === ''){ + this.value = null; + }else{ + this.value = Number(value); + this.hover = this.title+': '+value; + } + if(this._gauge){ + this.draw(this._gauge._indicatorsGroup, animate || animate==undefined ? false: true); + this.valueNode.value = this.value; + if((this.title == 'Target' || this.front) && this._gauge.moveIndicator){ + // if re-drawing value, make sure target is still on top + this._gauge.moveIndicatorToFront(this); + } + this.valueChanged(); + } + }, + + valueChanged: function(){ + // summary: + // Invoked every time the value of the indicator changes. + + }, + + update: function(value, animate){ + // summary: + // Updates the value of the indicator, including moving/re-drawing at it's new location and + // updating the text box + if(!this.noChange){ + this.valueNode.value = value; + this._updateValue(animate); + } + }, + + handleMouseOver: function(e){ + // summary: + // Handles mouse-over events in the indicator. + this._gauge._handleMouseOverIndicator(this, e); + }, + + handleMouseOut: function(e){ + // summary: + // Handles mouse-out events in the indicator. + this._gauge._handleMouseOutIndicator(this,e); + this._gauge.gaugeContent.style.cursor = ''; + }, + + handleMouseDown: function(e){ + // summary: + // Handles mouse-down events in the indicator. + this._gauge._handleMouseDownIndicator(this,e); + }, + + handleTouchStart: function(e){ + // summary: + // Handles touch start events in the indicator. + this._gauge.handleTouchStartIndicator(this, e); + }, + + onDragMove: function(){ + // summary: + // Handles updating the text box and the hover text while dragging an indicator + this.value = Math.floor(this.value); + this.valueNode.value = this.value; + this.hover = this.title+': '+this.value; + }, + + draw: function(/* Boolean? */ dontAnimate){ + // summary: + // Performs the initial drawing of the indicator. + // dontAnimate: Boolean + // Indicates if the drawing should not be animated (rather than teh default, to animate) + }, + + remove: function(){ + // summary: + // Removes the indicator's shape from the gauge surface. + if (this.shape) + this.shape.parent.remove(this.shape); + this.shape = null; + if(this.text){ + this.text.parent.remove(this.text); + } + this.text = null; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/images/flare.png b/js/dojo-release-1.7.2-src/dojox/gauges/tests/images/flare.png new file mode 100755 index 0000000..2054044 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gauges/tests/images/flare.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/images/gaugeOverlay.png b/js/dojo-release-1.7.2-src/dojox/gauges/tests/images/gaugeOverlay.png new file mode 100755 index 0000000..72bcdbb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gauges/tests/images/gaugeOverlay.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGauge-AMD.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGauge-AMD.html new file mode 100644 index 0000000..92a9588 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGauge-AMD.html @@ -0,0 +1,284 @@ + + + + Dojo Gauges + + + + + + +

                                      Analog Gauges

                                      + + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidget.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidget.html new file mode 100644 index 0000000..50cb505 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidget.html @@ -0,0 +1,554 @@ + + + +Analog Gauge Widget + + + + + + +

                                      Analog Gauge Widget

                                      +

                                      Default Colored Gauge

                                      +
                                      + +

                                      CSS Themed Ranges, Image Overlay, Gradient Background, Updating to Random Values on 3s Timer

                                      +
                                      + +
                                      +

                                      Speedometer

                                      +
                                      +
                                      +
                                      +

                                      Tachometer

                                      +
                                      +
                                      +
                                      +

                                      Various Indicators Test

                                      +
                                      +
                                      +

                                      Declarative, Gradient Ranges, Gradient Background, No Indicator Boxes

                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +

                                      Declarative, (Ugly) Colored Ranges, No Numbers, No Indicator Boxes

                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetIndicators.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetIndicators.html new file mode 100644 index 0000000..d8f8d2e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetIndicators.html @@ -0,0 +1,279 @@ + + + + Analog Gauge Widget Indicators + + + + + + +

                                      Analog Gauge Widget Indicators

                                      +
                                        +
                                      • + Arc and Text indicators +
                                      • +
                                      +
                                      +
                                      +
                                        +
                                      • + Arc and Text indicators again. +
                                      • +
                                      +
                                      +
                                      +
                                        +
                                      • + Needle indicator. +
                                      • +
                                      +
                                      +
                                      +
                                        +
                                      • + Circle indicator. +
                                      • +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetLabelPlacement.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetLabelPlacement.html new file mode 100644 index 0000000..7d73bed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetLabelPlacement.html @@ -0,0 +1,91 @@ + + + + Analog Gauge Widget Orientation + + + + + + +

                                      Analog Gauge Widget Scale Label Placement

                                      +
                                      +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetOrientation.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetOrientation.html new file mode 100644 index 0000000..72d9a49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_AnalogGaugeWidgetOrientation.html @@ -0,0 +1,129 @@ + + + + Analog Gauge Widget Orientation + + + + + + +

                                      Analog Gauge Widget Orientation

                                      +
                                        +
                                      • + Clockwise +
                                      • +
                                      +
                                      +
                                      +
                                        +
                                      • + Counter Clockwise +
                                      • +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_BarGaugeWidget.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_BarGaugeWidget.html new file mode 100644 index 0000000..f1f7a20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_BarGaugeWidget.html @@ -0,0 +1,340 @@ + + + +Bar Gauge Widget + + + + + + +

                                      Bar Gauge Widget

                                      +

                                      Default Colored Gauge

                                      +
                                      +

                                      CSS Themed Ranges, Gradient Background, Updating to Random Values on 3s Timer

                                      +
                                      + +

                                      Declarative, Gradient Ranges, Gradient Background, No Indicator Boxes

                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +

                                      Declarative, (Ugly) Colored Ranges, No Numbers, No Indicator Boxes

                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyCircularGauge.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyCircularGauge.html new file mode 100644 index 0000000..78f0eb8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyCircularGauge.html @@ -0,0 +1,300 @@ + + + + Circular Gauge Sample + + + + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      + Title + + +
                                      + Clockwise orientation + +
                                      +
                                      + Minimum + +
                                      +
                                      + Maximum + +
                                      +
                                      + Gauge Color + +
                                      +
                                      + Needle Color + +
                                      +
                                      + Text Indicator Color + +
                                      +
                                      + Scale font + +
                                      + Sample #1 +
                                      +
                                      + Sample #2 +
                                      +
                                      + Default +
                                      +
                                      + Text Indicator font + +
                                      + Sample #1 +
                                      +
                                      + Sample #2 +
                                      +
                                      + Default +
                                      +
                                      + Display text indicator + +
                                      +
                                      + Allow interaction + +
                                      +
                                      + + + + +
                                      + + + + + + + + + + + + + + + + + +
                                      + Major Ticks interval + +
                                      +
                                      + Major Ticks length + +
                                      +
                                      + Major Ticks Color + +
                                      +
                                      + Label placement inside + +
                                      +
                                      +
                                      + + + + + + + + + + + + + + +
                                      + Minor Ticks interval + +
                                      +
                                      + Minor Ticks length + +
                                      +
                                      + Minor Ticks Color + +
                                      +
                                      +
                                      +
                                      + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyGauges-AMD.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyGauges-AMD.html new file mode 100644 index 0000000..47ac021 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyGauges-AMD.html @@ -0,0 +1,61 @@ + + + + Gauge + + + + + + + +

                                      Glossy Gauges

                                      + + + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyHorizontalGauge.html b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyHorizontalGauge.html new file mode 100644 index 0000000..b133582 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gauges/tests/test_GlossyHorizontalGauge.html @@ -0,0 +1,205 @@ + + + + Horizontal Gauge Sample + + + + + + + + + + + +
                                      +
                                      +
                                      +
                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      + Title + + +
                                      + Minimum + +
                                      +
                                      + Maximum + +
                                      +
                                      + Gauge Color + +
                                      +
                                      + Needle Color + +
                                      +
                                      + Scale font + +
                                      + Sample #1 +
                                      +
                                      + Sample #2 +
                                      +
                                      + Default +
                                      +
                                      + Allow interaction + +
                                      +
                                      + + + + +
                                      + + + + + + + + + + + + + +
                                      + Major Ticks interval + +
                                      +
                                      + Major Ticks length + +
                                      +
                                      + Major Ticks Color + +
                                      +
                                      +
                                      + + + + + + + + + + + + + +
                                      + Minor Ticks interval + +
                                      +
                                      + Minor Ticks length + +
                                      +
                                      + Minor Ticks Color + +
                                      +
                                      +
                                      +
                                      + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/geo/README b/js/dojo-release-1.7.2-src/dojox/geo/README new file mode 100644 index 0000000..76b3f9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/README @@ -0,0 +1,43 @@ +------------------------------------------------------------------------------- +dojox.geo +------------------------------------------------------------------------------- +Version 0.100 +Release date: 04/04/2010 +------------------------------------------------------------------------------- +Project state: +alpha +------------------------------------------------------------------------------- +Credits + dojox.geo.charting: + Dean Williams (deanw@ca.ibm.com) + Qi Ruan (ruanqi@cn.ibm.com) + Wei CDL Huang (hwcdl@cn.ibm.com) + Erwan Aullas (eaullas+dojo@gmail.com) + Marc Durocher (durocher.marc@gmail.com) + + dojox.geo.openlayers + Marc Durocher (durocher.marc@gmail.com) + Erwan Aullas (eaullas+dojo@gmail.com) + + Tom Trenka (ttrenka@gmail.com) +------------------------------------------------------------------------------- +Project description + +Project to house any geographical-related code. First project is +dojox.geo.charting, contributed to DTK by IBM (CCLA on file). +------------------------------------------------------------------------------- +Dependencies: + +Dojo Core, dojox.gfx, dojox.lang, Dijit. +------------------------------------------------------------------------------- +Documentation + +Not ready yet. +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/src/dojox/trunk/geo + +You will need dojox.gfx, dojox.lang, and the Dijit core + Tooltip. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/Feature.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/Feature.js new file mode 100644 index 0000000..8409321 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/Feature.js @@ -0,0 +1,198 @@ +define(["dojo/_base/lang", "dojo/_base/declare","dojo/_base/array", + "dojo/_base/html","dojo/dom","dojo/_base/event", "dojox/gfx/fx", "dojox/color"], + function(lang, declare,arr, html,dom, event, fx,color) { + +return declare("dojox.geo.charting.Feature", null, { + // summary: + // class to encapsulate a map element. + // tags: + // private + + _isZoomIn: false, + isSelected: false, + markerText:null, + + + constructor: function(parent, name, shapeData){ + // summary: + // constructs a new Feature. + // tags: + // private + this.id = name; + this.shape = parent.mapObj.createGroup(); + this.parent = parent; + this.mapObj = parent.mapObj; + this._bbox = shapeData.bbox; + this._center = shapeData.center; + //TODO: fill color would be defined by charting data and legend +// this._highlightFill = ["#FFCE52", "#CE6342", "#63A584"][Math.floor(Math.random() * 3)]; + this._defaultFill = parent.defaultColor; + this._highlightFill = parent.highlightColor; + this._defaultStroke = { + width: this._normalizeStrokeWeight(.5), + color: "white" + }; + + var shapes = (lang.isArray(shapeData.shape[0])) ? shapeData.shape : [shapeData.shape]; + arr.forEach(shapes, function(points){ + this.shape.createPolyline(points).setStroke(this._defaultStroke); + }, this); + this.unsetValue(); + }, + unsetValue:function(){ + // summary: + // clears the numeric value on this Feature object (removes color). + + this.value = null; + this.unsetColor(); + }, + unsetColor:function(){ + this._defaultFill = this.parent.defaultColor; + var col = new color.Color(this.parent.defaultColor).toHsl(); + col.l = 1.2 * col.l; + this._highlightFill = color.fromHsl(col); + this._setFillWith(this._defaultFill); + }, + setValue:function(value){ + // summary: + // sets a numeric value on this Feature object (used together with series to apply a color). + // value: + // a number + this.value = value; + if (value == null) { + this.unsetValue(); + } else { + if (this.parent.series.length != 0) { + for (var i = 0; i < this.parent.series.length; i++) { + var range = this.parent.series[i]; + if ((value >= range.min) && (value < range.max)) { + this._setFillWith(range.color); + this._defaultFill = range.color; + var col = new color.Color(range.color).toHsv(); + col.v = (col.v + 20); + this._highlightFill = color.fromHsv(col); + return; + } + } + // did not found a range : unset color + this.unsetColor(); + } + } + }, + _setFillWith: function(color){ + var borders = (lang.isArray(this.shape.children)) ? this.shape.children : [this.shape.children]; + arr.forEach(borders, lang.hitch(this,function(item){ + if(this.parent.colorAnimationDuration > 0){ + var anim1 = fx.animateFill({ + shape: item, + color: { + start: item.getFill(), + end: color + }, + duration: this.parent.colorAnimationDuration + }); + anim1.play(); + }else{ + item.setFill(color); + } + })); + }, + _setStrokeWith: function(stroke){ + var borders = (lang.isArray(this.shape.children)) ? this.shape.children : [this.shape.children]; + arr.forEach(borders, function(item){ + item.setStroke({ + color: stroke.color, + width: stroke.width, + join: "round" + }); + }); + }, + _normalizeStrokeWeight: function(weight){ + var matrix = this.shape._getRealMatrix(); + return (dojox.gfx.renderer != "vml")?weight/(this.shape._getRealMatrix()||{xx:1}).xx:weight; + }, + _onmouseoverHandler: function(evt){ + this.parent.onFeatureOver(this); + this._setFillWith(this._highlightFill); + this.mapObj.marker.show(this.id,evt); + }, + _onmouseoutHandler: function(){ + this._setFillWith(this._defaultFill); + this.mapObj.marker.hide(); + html.style("mapZoomCursor", "display", "none"); + }, + _onmousemoveHandler: function(evt){ + if(this.mapObj.marker._needTooltipRefresh){ + this.mapObj.marker.show(this.id,evt); + } + if(this.isSelected){ + if (this.parent.enableFeatureZoom) { + evt = event.fix(evt || window.event); + html.style("mapZoomCursor", "left", evt.pageX + 12 + "px"); + html.style("mapZoomCursor", "top", evt.pageY + "px"); + html.byId("mapZoomCursor").className = this._isZoomIn ? "mapZoomOut":"mapZoomIn"; + html.style("mapZoomCursor", "display", "block"); + }else{ + html.style("mapZoomCursor", "display", "none"); + } + } + }, + _onclickHandler: function(evt){ + this.parent.onFeatureClick(this); + if(!this.isSelected){ + this.parent.deselectAll(); + this.select(true); + this._onmousemoveHandler(evt); + }else if(this.parent.enableFeatureZoom){ + if(this._isZoomIn){ + this._zoomOut(); + }else{ + this._zoomIn(); + } + } + }, + + select: function(selected) { + if(selected){ + this.shape.moveToFront(); + this._setStrokeWith({color:"black",width:this._normalizeStrokeWeight(2)}); + this._setFillWith(this._highlightFill); + this.isSelected = true; + this.parent.selectedFeature = this; + }else{ + this._setStrokeWith(this._defaultStroke); + this._setFillWith(this._defaultFill); + this.isSelected = false; + this._isZoomIn = false; + } + }, + + _zoomIn: function(){ + var marker = this.mapObj.marker; + marker.hide(); + this.parent.fitToMapArea(this._bbox, 15,true,lang.hitch(this,function(){ + this._setStrokeWith({color:"black",width:this._normalizeStrokeWeight(2)}); + marker._needTooltipRefresh = true; + this.parent.onZoomEnd(this); + })); + this._isZoomIn = true; + dom.byId("mapZoomCursor").className = ""; + }, + _zoomOut: function(){ + var marker = this.mapObj.marker; + marker.hide(); + this.parent.fitToMapContents(3,true,lang.hitch(this,function(){ + this._setStrokeWith({color:"black",width:this._normalizeStrokeWeight(2)}); + marker._needTooltipRefresh = true; + this.parent.onZoomEnd(this); + })); + this._isZoomIn = false; + dom.byId("mapZoomCursor").className = ""; + }, + + init: function(){ + this.shape.id = this.id; + this.tooltip = null; + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/KeyboardInteractionSupport.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/KeyboardInteractionSupport.js new file mode 100644 index 0000000..7761095 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/KeyboardInteractionSupport.js @@ -0,0 +1,144 @@ +define(["dojo/_base/lang","dojo/_base/declare","dojo/_base/event","dojo/_base/connect", + "dojo/_base/html","dojo/dom","dojox/lang/functional","dojo/keys"], + function(lang, declare, event, connect, html, dom, functional, keys) { + +return declare("dojox.geo.charting.KeyboardInteractionSupport", null, { + // summary: + // class to handle keyboard interactions on a dojox.geo.charting.Map widget + // + // The sections on the leading edge should receive the focus in response to a TAB event. + // Then use cursor keys to the peer sections. The cursor event should go the adjacent section + // in that direction. With the focus, the section zooms in upon SPACE. The map should zoom out + // on ESC. Finally, while it has the focus, the map should lose the focus on TAB. + // tags: + // private + _map: null, + _zoomEnabled: false, + + constructor: function(map, options){ + // summary: + // Constructs a new _KeyboardInteractionSupport instance + // map: dojox.geo.charting.Map + // the Map widget this class provides touch navigation for. + this._map = map; + if(options){ + this._zoomEnabled = options.enableZoom; + } + }, + connect: function(){ + // summary: + // connects this keyboard support class to the Map component + var container = dom.byId(this._map.container); + // tab accessing enable + html.attr(container, { + tabindex: 0, + role: "presentation", + "aria-label": "map" + }); + // install listeners + this._keydownListener = connect.connect(container, "keydown", this, "keydownHandler"); + this._onFocusListener = connect.connect(container, "focus", this, "onFocus"); + this._onBlurListener = connect.connect(container, "blur", this, "onBlur"); + }, + disconnect: function(){ + // summary: + // disconnects any installed listeners + connect.disconnect(this._keydownListener); + this._keydownListener = null; + connect.disconnect(this._onFocusListener); + this._onFocusListener = null; + connect.disconnect(this._onBlurListener); + this._onBlurListener = null + }, + keydownHandler: function(e){ + switch(e.keyCode){ + case keys.LEFT_ARROW: + this._directTo(-1,-1,1,-1); + break; + case keys.RIGHT_ARROW: + this._directTo(-1,-1,-1,1); + break; + case keys.UP_ARROW: + this._directTo(1,-1,-1,-1); + break; + case keys.DOWN_ARROW: + this._directTo(-1,1,-1,-1); + break; + case keys.SPACE: + if(this._map.selectedFeature && !this._map.selectedFeature._isZoomIn && this._zoomEnabled){ + this._map.selectedFeature._zoomIn(); + } + break; + case keys.ESCAPE: + if(this._map.selectedFeature && this._map.selectedFeature._isZoomIn && this._zoomEnabled){ + this._map.selectedFeature._zoomOut(); + } + break; + default: + return; + } + event.stop(e); + }, + onFocus: function(e){ + // select the leading region at the map center + if(this._map.selectedFeature || this._map.focused){return;} + this._map.focused = true; + var leadingRegion, + needClick = false; + if(this._map.lastSelectedFeature){ + leadingRegion = this._map.lastSelectedFeature; + }else{ + var mapCenter = this._map.getMapCenter(), + minDistance = Infinity; + // find the region most closing to the map center + functional.forIn(this._map.mapObj.features, function(feature){ + var distance = Math.sqrt(Math.pow(feature._center[0] - mapCenter.x, 2) + Math.pow(feature._center[1] - mapCenter.y, 2)); + if(distance < minDistance){ + minDistance = distance; + leadingRegion = feature; + } + }); + needClick = true; + } + if(leadingRegion){ + if(needClick) { + leadingRegion._onclickHandler(null); + }else{ + } + this._map.mapObj.marker.show(leadingRegion.id); + } + }, + onBlur: function(){ + this._map.lastSelectedFeature = this._map.selectedFeature; + }, + _directTo: function(up,down,left,right){ + var currentSelected = this._map.selectedFeature, + centerX = currentSelected._center[0], + centerY = currentSelected._center[1], + minMargin = Infinity, + nextSelected = null; + functional.forIn(this._map.mapObj.features, function(feature){ + var paddingX = Math.abs(centerX - feature._center[0]), + paddingY = Math.abs(centerY - feature._center[1]), + paddingSum = paddingX + paddingY; + if((up - down) * (centerY - feature._center[1]) > 0){ + if(paddingX < paddingY && minMargin > paddingSum){ + minMargin = paddingSum; + nextSelected = feature; + } + } + if((left - right) * (centerX - feature._center[0]) > 0){ + if(paddingX > paddingY && minMargin > paddingSum){ + minMargin = paddingSum; + nextSelected = feature; + } + } + }); + if(nextSelected){ + this._map.mapObj.marker.hide(); + nextSelected._onclickHandler(null); + this._map.mapObj.marker.show(nextSelected.id); + } + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/Map.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/Map.js new file mode 100644 index 0000000..0948022 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/Map.js @@ -0,0 +1,603 @@ +define(["dojo/_base/lang","dojo/_base/array","dojo/_base/declare","dojo/_base/html","dojo/dom", + "dojo/dom-geometry","dojo/dom-class", "dojo/_base/xhr","dojo/_base/connect","dojo/_base/window", "dojox/gfx", + "dojox/geo/charting/_base","dojox/geo/charting/Feature","dojox/geo/charting/_Marker","dojo/number","dojo/_base/sniff"], + function(lang, arr, declare, html, dom, domGeom, domClass, xhr, connect, win, gfx, base, + Feature, Marker, number, has) { + + return declare("dojox.geo.charting.Map", null, { + // summary: + // Map widget interacted with charting. + // description: + // Support rendering Americas, AsiaPacific, ContinentalEurope, EuropeMiddleEastAfrica, + // USStates, WorldCountries, and WorldCountriesMercator by default. + // example: + // | var usaMap = new dojox.geo.charting.Map(srcNode, "dojotoolkit/dojox/geo/charting/resources/data/USStates.json"); + // |
                                      + + // defaultColor: String + // Default map feature color, e.g: "#B7B7B7" + defaultColor:"#B7B7B7", + // highlightColor: String + // Map feature color when mouse over it, e.g: "#" + highlightColor:"#D5D5D5", + // series: Array + // stack to data range, e.g: [{name:'label 1', min:20, max:70, color:'#DDDDDD'},{...},...] + series:[], + dataBindingAttribute:null, + dataBindingValueFunction:null, + dataStore:null, + showTooltips: true, + enableFeatureZoom: true, + colorAnimationDuration:0, + _idAttributes:null, + _onSetListener:null, + _onNewListener:null, + _onDeleteListener:null, + constructor: function(/*HTML Node*/container, /*String or Json object*/shapeData){ + // container: + // map container html node/id + // shapeData: + // map shape data json object, or url to json file + + html.style(container, "display", "block"); + + this.container = container; + var containerBounds = this._getContainerBounds(); + // get map container coords + this.surface = gfx.createSurface(container, containerBounds.w, containerBounds.h); + + this._createZoomingCursor(); + + // add transparent background for event capture + this.mapBackground = this.surface.createRect({x: 0, y: 0, width: containerBounds.w, height: containerBounds.w}).setFill("rgba(0,0,0,0)"); + + this.mapObj = this.surface.createGroup(); + this.mapObj.features = {}; + + if (typeof shapeData == "object") { + this._init(shapeData); + } else { + // load map shape file + if (typeof shapeData == "string" && shapeData.length > 0) { + xhr.get({ + url: shapeData, + handleAs: "json", + sync: true, + load: lang.hitch(this, "_init") + }); + } + } + }, + + _getContainerBounds: function() { + // summary: + // returns the bounds {x:, y:, w: ,h:} of the DOM node container in absolute coordinates + // tags: + // private + + var position = domGeom.position(this.container,true); + var marginBox = domGeom.getMarginBox(this.container); + // use contentBox for correct width and height - surface spans outside border otherwise + var contentBox = domGeom.getContentBox(this.container); + this._storedContainerBounds = { + x: position.x, + y: position.y, + w: contentBox.w || 100, + h: contentBox.h || 100 + }; + return this._storedContainerBounds; + }, + + resize: function(/**boolean**/ adjustMapCenter/**boolean**/,adjustMapScale,/**boolean**/ animate) { + // summary: + // resize the underlying GFX surface to accommodate to parent DOM Node size change + // adjustMapCenter: boolean + // keeps the center of the map when resizing the surface + // adjustMapScale: boolean + // adjusts the map scale to keep the visible portion of the map as much as possible + + var oldBounds = this._storedContainerBounds; + var newBounds = this._getContainerBounds(); + + if ((oldBounds.w == newBounds.w) && (oldBounds.h == newBounds.h)) { + return; + } + + // set surface dimensions, and background + this.mapBackground.setShape({width:newBounds.w, height:newBounds.h}); + this.surface.setDimensions(newBounds.w,newBounds.h); + + this.mapObj.marker.hide(); + this.mapObj.marker._needTooltipRefresh = true; + + if (adjustMapCenter) { + + var mapScale = this.getMapScale(); + var newScale = mapScale; + + if (adjustMapScale) { + var bbox = this.mapObj.boundBox; + var widthFactor = newBounds.w / oldBounds.w; + var heightFactor = newBounds.h / oldBounds.h; + newScale = mapScale * Math.sqrt(widthFactor * heightFactor); + } + + // current map center + var invariantMapPoint = this.screenCoordsToMapCoords(oldBounds.w/2,oldBounds.h/2); + + // apply new parameters + this.setMapCenterAndScale(invariantMapPoint.x,invariantMapPoint.y,newScale,animate); + } + }, + + _isMobileDevice: function() { + // summary: + // tests whether the application is running on a mobile device (android or iOS) + // tags: + // private + return (has("safari") + && (navigator.userAgent.indexOf("iPhone") > -1 || + navigator.userAgent.indexOf("iPod") > -1 || + navigator.userAgent.indexOf("iPad") > -1 + )) || (navigator.userAgent.toLowerCase().indexOf("android") > -1); + }, + + + setMarkerData: function(/*String*/ markerFile){ + // summary: + // import markers from outside file, associate with map feature by feature id + // which identified in map shape file, e.g: "NY":"New York" + // markerFile: + // outside marker data url, handled as json style. + // data format: {"NY":"New York",.....} + xhr.get({ + url: markerFile, + handleAs: "json", + handle: lang.hitch(this, "_appendMarker") + }); + }, + + setDataBindingAttribute: function(/*String*/prop) { + // summary: + // sets the property name of the dataStore items to use as value (see Feature.setValue function) + // prop: + // the property + this.dataBindingAttribute = prop; + + // refresh data + if (this.dataStore) { + this._queryDataStore(); + } + }, + + setDataBindingValueFunction: function(/* function */valueFunction) { + // summary: + // sets the function that extracts values from dataStore items,to use as Feature values (see Feature.setValue function) + // prop: + // the function + this.dataBindingValueFunction = valueFunction; + + // refresh data + if (this.dataStore) { + this._queryDataStore(); + } + }, + + + + _queryDataStore: function() { + if (!this.dataBindingAttribute || (this.dataBindingAttribute.length == 0)) + return; + + var mapInstance = this; + this.dataStore.fetch({ + scope: this, + onComplete: function(items){ + this._idAttributes = mapInstance.dataStore.getIdentityAttributes({}); + arr.forEach(items, function(item) { + var id = mapInstance.dataStore.getValue(item, this._idAttributes[0]); + if(mapInstance.mapObj.features[id]){ + var val = null; + var itemVal = mapInstance.dataStore.getValue(item, mapInstance.dataBindingAttribute); + if (itemVal) { + if (this.dataBindingValueFunction) { + val = this.dataBindingValueFunction(itemVal); + } else { + if (isNaN(val)) { + // regular parse + val=number.parse(itemVal); + } else { + val = itemVal; + } + } + } + if (val) + mapInstance.mapObj.features[id].setValue(val); + } + },this); + } + }); + }, + + _onSet:function(item,attribute,oldValue,newValue){ + // look for matching feature + var id = this.dataStore.getValue(item, this._idAttributes[0]); + var feature = this.mapObj.features[id]; + if (feature && (attribute == this.dataBindingAttribute)) { + if (newValue) + feature.setValue(newValue); + else + feature.unsetValue(); + } + }, + + _onNew:function(newItem, parentItem){ + var id = this.dataStore.getValue(item, this._idAttributes[0]); + var feature = this.mapObj.features[id]; + if (feature && (attribute == this.dataBindingAttribute)) { + feature.setValue(newValue); + } + }, + + _onDelete:function(item){ + var id = item[this._idAttributes[0]]; + var feature = this.mapObj.features[id]; + if (feature) { + feature.unsetValue(); + } + }, + + setDataStore: function(/*ItemFileReadStore*/ dataStore, /*String*/ dataBindingProp){ + // summary: + // populate data for each map feature from fetched data store + // dataStore: + // the dataStore to fetch the information from + // dataBindingProp: + // sets the property name of the dataStore items to use as value + if (this.dataStore != dataStore) { + // disconnect previous listener if any + if (this._onSetListener) { + connect.disconnect(this._onSetListener); + connect.disconnect(this._onNewListener); + connect.disconnect(this._onDeleteListener); + } + + // set new dataStore + this.dataStore = dataStore; + + // install listener on new dataStore + if (dataStore) { + _onSetListener = connect.connect(this.dataStore,"onSet",this,this._onSet); + _onNewListener = connect.connect(this.dataStore,"onNew",this,this._onNew); + _onDeleteListener = connect.connect(this.dataStore,"onDelete",this,this._onDelete); + } + } + if (dataBindingProp) + this.setDataBindingAttribute(dataBindingProp); + + }, + + + + addSeries: function(/*url or Json Object*/ series){ + // summary: + // sets ranges of data values (associated with label, color) to style map data values + // series: + // array of range objects such as : [{name:'label 1', min:20, max:70, color:'#DDDDDD'},{...},...] + + if (typeof series == "object") { + this._addSeriesImpl(series); + } else { + // load series file + if (typeof series == "string" && series.length > 0) { + xhr.get({ + url: series, + handleAs: "json", + sync: true, + load: lang.hitch(this, function(content){ + this._addSeriesImpl(content.series); + }) + }); + } + } + + }, + + _addSeriesImpl: function(/*Json object*/series) { + + this.series = series; + + // refresh color scheme + for (var item in this.mapObj.features) { + var feature = this.mapObj.features[item]; + feature.setValue(feature.value); + } + }, + + + fitToMapArea: function(/*bbox: {x,y,w,h}*/mapArea,pixelMargin,animate,/* callback function */onAnimationEnd){ + // summary: + // set this component's transformation so that the specified area fits in the component (centered) + // mapArea: + // the map area that needs to fill the component + // pixelMargin: int + // a margin (in pixels) from the borders of the Map component. + // animate: boolean + // true if the transform change should be animated + // onAnimationEnd: function + // a callback function to be executed when the animation completes (if animate set to true). + + if(!pixelMargin){ + pixelMargin = 0; + } + var width = mapArea.w, + height = mapArea.h, + containerBounds = this._getContainerBounds(), + scale = Math.min((containerBounds.w - 2 * pixelMargin) / width, + (containerBounds.h - 2 * pixelMargin) / height); + + this.setMapCenterAndScale(mapArea.x + mapArea.w / 2,mapArea.y + mapArea.h / 2,scale,animate,onAnimationEnd); + }, + + fitToMapContents: function(pixelMargin,animate,/* callback function */onAnimationEnd){ + // summary: + // set this component's transformation so that the whole map data fits in the component (centered) + // pixelMargin: int + // a margin (in pixels) from the borders of the Map component. + // animate: boolean + // true if the transform change should be animated + // onAnimationEnd: function + // a callback function to be executed when the animation completes (if animate set to true). + + //transform map to fit container + var bbox = this.mapObj.boundBox; + this.fitToMapArea(bbox,pixelMargin,animate,onAnimationEnd); + }, + + setMapCenter: function(centerX,centerY,animate,/* callback function */onAnimationEnd) { + // summary: + // set this component's transformation so that the map is centered on the specified map coordinates + // centerX: float + // the X coordinate (in map coordinates) of the new center + // centerY: float + // the Y coordinate (in map coordinates) of the new center + // animate: boolean + // true if the transform change should be animated + // onAnimationEnd: function + // a callback function to be executed when the animation completes (if animate set to true). + + // call setMapCenterAndScale with current map scale + var currentScale = this.getMapScale(); + this.setMapCenterAndScale(centerX,centerY,currentScale,animate,onAnimationEnd); + + }, + + _createAnimation: function(onShape,fromTransform,toTransform,/* callback function */onAnimationEnd) { + // summary: + // creates a transform animation object (between two transforms) used internally + // fromTransform: dojox.gfx.matrix.Matrix2D + // the start transformation (when animation begins) + // toTransform: dojox.gfx.matrix.Matrix2D + // the end transormation (when animation ends) + // onAnimationEnd: function + // callback function to be executed when the animation completes. + var fromDx = fromTransform.dx?fromTransform.dx:0; + var fromDy = fromTransform.dy?fromTransform.dy:0; + var toDx = toTransform.dx?toTransform.dx:0; + var toDy = toTransform.dy?toTransform.dy:0; + var fromScale = fromTransform.xx?fromTransform.xx:1.0; + var toScale = toTransform.xx?toTransform.xx:1.0; + + var anim = gfx.fx.animateTransform({ + duration: 1000, + shape: onShape, + transform: [{ + name: "translate", + start: [fromDx,fromDy], + end: [toDx,toDy] + }, + { + name: "scale", + start: [fromScale], + end: [toScale] + } + ] + }); + + //install callback + if (onAnimationEnd) { + var listener = connect.connect(anim,"onEnd",this,function(event){ + onAnimationEnd(event); + connect.disconnect(listener); + }); + } + + return anim; + }, + + + setMapCenterAndScale: function(centerX,centerY,scale, animate,/* callback function */onAnimationEnd) { + + // summary: + // set this component's transformation so that the map is centered on the specified map coordinates + // and scaled to the specified scale. + // centerX: float + // the X coordinate (in map coordinates) of the new center + // centerY: float + // the Y coordinate (in map coordinates) of the new center + // scale: float + // the scale of the map + // animate: boolean + // true if the transform change should be animated + // onAnimationEnd: function + // a callback function to be executed when the animation completes (if animate set to true). + + + // compute matrix parameters + var bbox = this.mapObj.boundBox; + var containerBounds = this._getContainerBounds(); + var offsetX = containerBounds.w/2 - scale * (centerX - bbox.x); + var offsetY = containerBounds.h/2 - scale * (centerY - bbox.y); + var newTransform = new gfx.matrix.Matrix2D({xx: scale, yy: scale, dx:offsetX, dy:offsetY}); + + + var currentTransform = this.mapObj.getTransform(); + + // can animate only if specified AND curentTransform exists + if (!animate || !currentTransform) { + this.mapObj.setTransform(newTransform); + } else { + var anim = this._createAnimation(this.mapObj,currentTransform,newTransform,onAnimationEnd); + anim.play(); + } + }, + + getMapCenter: function() { + // summary: + // returns the map coordinates of the center of this Map component. + // returns: {x:,y:} + // the center in map coordinates + var containerBounds = this._getContainerBounds(); + return this.screenCoordsToMapCoords(containerBounds.w/2,containerBounds.h/2); + }, + + setMapScale: function(scale,animate,/* callback function */onAnimationEnd) { + // summary: + // set this component's transformation so that the map is scaled to the specified scale. + // animate: boolean + // true if the transform change should be animated + // onAnimationEnd: function + // a callback function to be executed when the animation completes (if animate set to true). + + + // default invariant is map center + var containerBounds = this._getContainerBounds(); + var invariantMapPoint = this.screenCoordsToMapCoords(containerBounds.w/2,containerBounds.h/2); + this.setMapScaleAt(scale,invariantMapPoint.x,invariantMapPoint.y,animate,onAnimationEnd); + }, + + setMapScaleAt: function(scale,fixedMapX,fixedMapY,animate,/* callback function */onAnimationEnd) { + // summary: + // set this component's transformation so that the map is scaled to the specified scale, and the specified + // point (in map coordinates) stays fixed on this Map component + // fixedMapX: float + // the X coordinate (in map coordinates) of the fixed screen point + // fixedMapY: float + // the Y coordinate (in map coordinates) of the fixed screen point + // animate: boolean + // true if the transform change should be animated + // onAnimationEnd: function + // a callback function to be executed when the animation completes (if animate set to true). + + + var invariantMapPoint = null; + var invariantScreenPoint = null; + + invariantMapPoint = {x: fixedMapX, y: fixedMapY}; + invariantScreenPoint = this.mapCoordsToScreenCoords(invariantMapPoint.x,invariantMapPoint.y); + + // compute matrix parameters + var bbox = this.mapObj.boundBox; + var offsetX = invariantScreenPoint.x - scale * (invariantMapPoint.x - bbox.x); + var offsetY = invariantScreenPoint.y - scale * (invariantMapPoint.y - bbox.y); + var newTransform = new gfx.matrix.Matrix2D({xx: scale, yy: scale, dx:offsetX, dy:offsetY}); + + var currentTransform = this.mapObj.getTransform(); + + // can animate only if specified AND curentTransform exists + if (!animate || !currentTransform) { + this.mapObj.setTransform(newTransform); + } else { + var anim = this._createAnimation(this.mapObj,currentTransform,newTransform,onAnimationEnd); + anim.play(); + } + }, + + getMapScale: function() { + // summary: + // returns the scale of this Map component. + // returns: float + // the scale + var mat = this.mapObj.getTransform(); + var scale = mat?mat.xx:1.0; + return scale; + }, + + mapCoordsToScreenCoords: function(mapX,mapY) { + // summary: + // converts map coordinates to screen coordinates given the current transform of this Map component + // returns: {x:,y:} + // the screen coordinates correspondig to the specified map coordinates. + var matrix = this.mapObj.getTransform(); + var screenPoint = gfx.matrix.multiplyPoint(matrix, mapX, mapY); + return screenPoint; + }, + + screenCoordsToMapCoords: function(screenX, screenY) { + // summary: + // converts screen coordinates to map coordinates given the current transform of this Map component + // returns: {x:,y:} + // the map coordinates corresponding to the specified screen coordinates. + var invMatrix = gfx.matrix.invert(this.mapObj.getTransform()); + var mapPoint = gfx.matrix.multiplyPoint(invMatrix, screenX, screenY); + return mapPoint; + }, + deselectAll: function(){ + // summary: + // deselect all features of map + for(var name in this.mapObj.features){ + this.mapObj.features[name].select(false); + } + this.selectedFeature = null; + this.focused = false; + }, + + _init: function(shapeData){ + + // summary: + // inits this Map component. + + //transform map to fit container + this.mapObj.boundBox = {x: shapeData.layerExtent[0], + y: shapeData.layerExtent[1], + w: (shapeData.layerExtent[2] - shapeData.layerExtent[0]), + h: shapeData.layerExtent[3] - shapeData.layerExtent[1]}; + this.fitToMapContents(3); + + + // if there are "features", then implement them now. + arr.forEach(shapeData.featureNames, function(item){ + var featureShape = shapeData.features[item]; + featureShape.bbox.x = featureShape.bbox[0]; + featureShape.bbox.y = featureShape.bbox[1]; + featureShape.bbox.w = featureShape.bbox[2]; + featureShape.bbox.h = featureShape.bbox[3]; + var feature = new Feature(this, item, featureShape); + feature.init(); + this.mapObj.features[item] = feature; + }, this); + + + // set up a marker. + this.mapObj.marker = new Marker({}, this); + }, + _appendMarker: function(markerData){ + this.mapObj.marker = new Marker(markerData, this); + }, + _createZoomingCursor: function(){ + if(!dom.byId("mapZoomCursor")){ + var mapZoomCursor = win.doc.createElement("div"); + html.attr(mapZoomCursor,"id","mapZoomCursor"); + domClass.add(mapZoomCursor,"mapZoomIn"); + html.style(mapZoomCursor,"display","none"); + win.body().appendChild(mapZoomCursor); + } + }, + onFeatureClick: function(feature){ + }, + onFeatureOver: function(feature){ + }, + onZoomEnd:function(feature){ + } +}); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/MouseInteractionSupport.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/MouseInteractionSupport.js new file mode 100644 index 0000000..fa70fc1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/MouseInteractionSupport.js @@ -0,0 +1,334 @@ +define(["dojo/_base/lang","dojo/_base/declare","dojo/_base/event", + "dojo/_base/connect","dojo/_base/window","dojo/_base/html","dojo/dom","dojo/_base/sniff"], + function(lang, declare, event, connect, win, html, dom, has) { + +return declare("dojox.geo.charting.MouseInteractionSupport", null, { + // summary: + // class to handle mouse interactions on a dojox.geo.charting.Map widget + // tags: + // private + + _map : null, + _mapClickLocation : null, + _screenClickLocation: null, + _mouseDragListener: null, + _mouseUpListener: null, + _mouseUpClickListener: null, + _mouseDownListener: null, + _mouseMoveListener: null, + _mouseWheelListener: null, + _currentFeature: null, + _cancelMouseClick: null, + _zoomEnabled: false, + _panEnabled: false, + _onDragStartListener: null, + _onSelectStartListener: null, + + + mouseClickThreshold: 2, + + constructor : function(/* Map */map,/*boolean*/options) { + // summary: + // Constructs a new _MouseInteractionSupport instance + // map: dojox.geo.charting.Map + // the Map widget this class provides touch navigation for. + // options: object + // to enable panning and mouse wheel zooming + this._map = map; + this._mapClickLocation = {x: 0,y: 0}; + this._screenClickLocation = {x: 0,y: 0}; + this._cancelMouseClick = false; + if (options) { + this._zoomEnabled = options.enableZoom; + this._panEnabled = options.enablePan; + if (options.mouseClickThreshold && options.mouseClickThreshold > 0) { + this.mouseClickThreshold = options.mouseClickThreshold; + } + } + }, + + setEnableZoom: function(enable){ + // summary: + // enables mouse zoom on the map + if (enable && !this._mouseWheelListener) { + // enable + var wheelEventName = !has("mozilla") ? "onmousewheel" : "DOMMouseScroll"; + this._mouseWheelListener = this._map.surface.connect(wheelEventName, this, this._mouseWheelHandler); + } else if (!enable && this._mouseWheelListener) { + // disable + connect.disconnect(this._mouseWheelListener); + this._mouseWheelListener = null; + } + this._zoomEnabled = enable; + }, + + setEnablePan: function(enable){ + // summary: + // enables mouse panning on the map + this._panEnabled = enable; + }, + + connect: function() { + // summary: + // connects this mouse support class to the Map component + + // install mouse listeners + this._mouseMoveListener = this._map.surface.connect("onmousemove", this, this._mouseMoveHandler); + this._mouseDownListener = this._map.surface.connect("onmousedown", this, this._mouseDownHandler); + + if (has("ie")) { + _onDragStartListener = connect.connect(win.doc,"ondragstart",this,event.stop); + _onSelectStartListener = connect.connect(win.doc,"onselectstart",this,event.stop); + } + + this.setEnableZoom(this._zoomEnabled); + this.setEnablePan(this._panEnabled); + }, + + disconnect: function() { + // summary: + // disconnects any installed listeners + + // store zoomPan state + var isZoom = this._zoomEnabled; + + // disable zoom (disconnects listeners..) + this.setEnableZoom(false); + + // restore value + this._zoomEnabled = isZoom; + + // disconnect remaining listeners + if (this._mouseMoveListener) { + connect.disconnect(this._mouseMoveListener); + this._mouseMoveListener = null; + connect.disconnect(this._mouseDownListener); + this._mouseDownListener = null; + } + if (this._onDragStartListener) { + connect.disconnect(this._onDragStartListener); + this._onDragStartListener = null; + connect.disconnect(this._onSelectStartListener); + this._onSelectStartListener = null; + } + + }, + + _mouseClickHandler: function(mouseEvent) { + // summary: + // action performed on the map when a mouse click was performed + // mouseEvent: the mouse event + // tags: + // private + + var feature = this._getFeatureFromMouseEvent(mouseEvent); + + if (feature) { + // call feature handler + feature._onclickHandler(mouseEvent); + } else { + // unselect all + for (var name in this._map.mapObj.features){ + this._map.mapObj.features[name].select(false); + } + this._map.onFeatureClick(null); + } + + }, + + _mouseDownHandler: function(mouseEvent){ + // summary: + // action performed on the map when a mouse down was performed + // mouseEvent: the mouse event + // tags: + // private + + + event.stop(mouseEvent); + + this._map.focused = true; + // set various status parameters + this._cancelMouseClick = false; + this._screenClickLocation.x = mouseEvent.pageX; + this._screenClickLocation.y = mouseEvent.pageY; + + // store map location where mouse down occurred + var containerBounds = this._map._getContainerBounds(); + var offX = mouseEvent.pageX - containerBounds.x, + offY = mouseEvent.pageY - containerBounds.y; + var mapPoint = this._map.screenCoordsToMapCoords(offX,offY); + this._mapClickLocation.x = mapPoint.x; + this._mapClickLocation.y = mapPoint.y; + + // install drag listener if pan is enabled + if (!has("ie")) { + this._mouseDragListener = connect.connect(win.doc,"onmousemove",this,this._mouseDragHandler); + this._mouseUpClickListener = this._map.surface.connect("onmouseup", this, this._mouseUpClickHandler); + this._mouseUpListener = connect.connect(win.doc,"onmouseup",this, this._mouseUpHandler); + } else { + var node = dom.byId(this._map.container); + this._mouseDragListener = connect.connect(node,"onmousemove",this,this._mouseDragHandler); + this._mouseUpClickListener = this._map.surface.connect("onmouseup", this, this._mouseUpClickHandler); + this._mouseUpListener = this._map.surface.connect("onmouseup", this, this._mouseUpHandler); + this._map.surface.rawNode.setCapture(); + } + }, + + _mouseUpClickHandler: function(mouseEvent) { + + if (!this._cancelMouseClick) { + // execute mouse click handler + this._mouseClickHandler(mouseEvent); + } + this._cancelMouseClick = false; + + }, + + _mouseUpHandler: function(mouseEvent) { + // summary: + // action performed on the map when a mouse up was performed + // mouseEvent: the mouse event + // tags: + // private + + event.stop(mouseEvent); + + this._map.mapObj.marker._needTooltipRefresh = true; + + // disconnect listeners + if (this._mouseDragListener) { + connect.disconnect(this._mouseDragListener); + this._mouseDragListener = null; + } + if (this._mouseUpClickListener) { + connect.disconnect(this._mouseUpClickListener); + this._mouseUpClickListener = null; + } + if (this._mouseUpListener) { + connect.disconnect(this._mouseUpListener); + this._mouseUpListener = null; + } + + if (has("ie")) { + this._map.surface.rawNode.releaseCapture(); + } + }, + + _getFeatureFromMouseEvent: function(mouseEvent) { + // summary: + // utility function to return the feature located at this mouse event location + // mouseEvent: the mouse event + // returns: dojox.geo.charting.Feature + // the feature found if any, null otherwise. + // tags: + // private + var feature = null; + if (mouseEvent.gfxTarget && mouseEvent.gfxTarget.getParent) { + feature = this._map.mapObj.features[mouseEvent.gfxTarget.getParent().id]; + } + return feature; + }, + + _mouseMoveHandler: function(mouseEvent) { + // summary: + // action performed on the map when a mouse move was performed + // mouseEvent: the mouse event + // tags: + // private + + + // do nothing more if dragging + if (this._mouseDragListener && this._panEnabled) { + return; + } + + // hover and highlight + var feature = this._getFeatureFromMouseEvent(mouseEvent); + + // set/unset highlight + if (feature != this._currentFeature) { + if (this._currentFeature) { + // mouse leaving component + this._currentFeature._onmouseoutHandler(); + } + this._currentFeature = feature; + + if (feature) + feature._onmouseoverHandler(); + } + + if (feature) + feature._onmousemoveHandler(mouseEvent); + }, + + _mouseDragHandler: function(mouseEvent){ + // summary: + // action performed on the map when a mouse drag was performed + // mouseEvent: the mouse event + // tags: + // private + + // prevent browser interaction + event.stop(mouseEvent); + + + // find out if this the movement discards the "mouse click" gesture + var dx = Math.abs(mouseEvent.pageX - this._screenClickLocation.x); + var dy = Math.abs(mouseEvent.pageY - this._screenClickLocation.y); + if (!this._cancelMouseClick && (dx > this.mouseClickThreshold || dy > this.mouseClickThreshold)) { + // cancel mouse click + this._cancelMouseClick = true; + if (this._panEnabled) { + this._map.mapObj.marker.hide(); + } + } + + if (!this._panEnabled) + return; + + var cBounds = this._map._getContainerBounds(); + var offX = mouseEvent.pageX - cBounds.x, + offY = mouseEvent.pageY - cBounds.y; + + // compute map offset + var mapPoint = this._map.screenCoordsToMapCoords(offX,offY); + var mapOffsetX = mapPoint.x - this._mapClickLocation.x; + var mapOffsetY = mapPoint.y - this._mapClickLocation.y; + + // adjust map center + var currentMapCenter = this._map.getMapCenter(); + this._map.setMapCenter(currentMapCenter.x - mapOffsetX, currentMapCenter.y - mapOffsetY); + + }, + + _mouseWheelHandler: function(mouseEvent) { + // summary: + // action performed on the map when a mouse wheel up/down was performed + // mouseEvent: the mouse event + // tags: + // private + + + // prevent browser interaction + event.stop(mouseEvent); + + // hide tooltip + this._map.mapObj.marker.hide(); + + // event coords within component + var containerBounds = this._map._getContainerBounds(); + var offX = mouseEvent.pageX - containerBounds.x, + offY = mouseEvent.pageY - containerBounds.y; + + // current map point before zooming + var invariantMapPoint = this._map.screenCoordsToMapCoords(offX,offY); + + // zoom increment power + var power = mouseEvent[(has("mozilla") ? "detail" : "wheelDelta")] / (has("mozilla") ? - 3 : 120) ; + var scaleFactor = Math.pow(1.2,power); + this._map.setMapScaleAt(this._map.getMapScale()*scaleFactor ,invariantMapPoint.x,invariantMapPoint.y,false); + this._map.mapObj.marker._needTooltipRefresh = true; + + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/TouchInteractionSupport.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/TouchInteractionSupport.js new file mode 100644 index 0000000..e196ab2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/TouchInteractionSupport.js @@ -0,0 +1,312 @@ +define(["dojo/_base/lang","dojo/_base/declare","dojo/_base/event", "dojo/_base/connect","dojo/_base/window"], + function(lang,declare,event,connect,win) { + +return declare("dojox.geo.charting.TouchInteractionSupport",null, { + // summary: + // class to handle touch interactions on a dojox.geo.charting.Map widget + // tags: + // private + + _map : null, + _centerTouchLocation : null, + _touchMoveListener: null, + _touchEndListener: null, + _touchEndTapListener: null, + _touchStartListener: null, + _initialFingerSpacing: null, + _initialScale: null, + _tapCount: null, + _tapThreshold: null, + _lastTap: null, + _doubleTapPerformed:false, + _oneFingerTouch:false, + _tapCancel:false, + + constructor : function(/* dojox.geo.charting.Map */map,options) { + // summary: + // Constructs a new _TouchInteractionSupport instance + // map: dojox.geo.charting.Map + // the Map widget this class provides touch navigation for. + this._map = map; + this._centerTouchLocation = {x: 0,y: 0}; + + this._tapCount = 0; + this._lastTap = {x: 0,y: 0}; + this._tapThreshold = 100; // square distance in pixels + }, + + connect: function() { + // summary: + // install touch listeners + _touchStartListener = this._map.surface.connect("touchstart", this, this._touchStartHandler); + }, + + disconnect: function() { + // summary: + // disconnects any installed listeners. Must be called only when disposing of this instance + if (this._touchStartListener) { + connect.disconnect(this._touchStartListener); + this._touchStartListener = null; + } + }, + + _getTouchBarycenter: function(touchEvent) { + // summary: + // returns the midpoint of the two first fingers (or the first finger location if only one) + // touchEvent: a touch event + // returns: dojox.gfx.Point + // the midpoint + // tags: + // private + var touches = touchEvent.touches; + var firstTouch = touches[0]; + var secondTouch = null; + if (touches.length > 1) { + secondTouch = touches[1]; + } else { + secondTouch = touches[0]; + } + var containerBounds = this._map._getContainerBounds(); + var middleX = (firstTouch.pageX + secondTouch.pageX) / 2.0 - containerBounds.x; + var middleY = (firstTouch.pageY + secondTouch.pageY) / 2.0 - containerBounds.y; + return {x: middleX,y: middleY}; + }, + + _getFingerSpacing: function(touchEvent) { + // summary: + // computes the distance between the first two fingers + // touchEvent: a touch event + // returns: float + // a distance. -1 if less that 2 fingers + // tags: + // private + var touches = touchEvent.touches; + var spacing = -1; + if (touches.length >= 2) { + var dx = (touches[1].pageX - touches[0].pageX); + var dy = (touches[1].pageY - touches[0].pageY); + spacing = Math.sqrt(dx*dx + dy*dy); + } + return spacing; + }, + + _isDoubleTap: function(touchEvent) { + // summary: + // checks whether the specified touchStart event is a double tap + // (i.e. follows closely a previous touchStart at approximately the same location) + // touchEvent: a touch event + // returns: boolean + // true if this event is considered a double tap + // tags: + // private + var isDoubleTap = false; + var touches = touchEvent.touches; + if ((this._tapCount > 0) && touches.length == 1) { + // test distance from last tap + var dx = (touches[0].pageX - this._lastTap.x); + var dy = (touches[0].pageY - this._lastTap.y); + var distance = dx*dx + dy*dy; + if (distance < this._tapThreshold) { + isDoubleTap = true; + } else { + this._tapCount = 0; + } + } + this._tapCount++; + this._lastTap.x = touches[0].pageX; + this._lastTap.y = touches[0].pageY; + setTimeout(lang.hitch(this,function() { + this._tapCount = 0;}),300); + return isDoubleTap; + }, + + _doubleTapHandler: function(touchEvent) { + // summary: + // action performed on the map when a double tap was triggered + // touchEvent: a touch event + // tags: + // private + var feature = this._getFeatureFromTouchEvent(touchEvent); + if (feature) { + this._map.fitToMapArea(feature._bbox, 15, true); + } else { + // perform a basic 2x zoom on touch + var touches = touchEvent.touches; + var containerBounds = this._map._getContainerBounds(); + var offX = touches[0].pageX - containerBounds.x; + var offY = touches[0].pageY - containerBounds.y; + // clicked map point before zooming + var mapPoint = this._map.screenCoordsToMapCoords(offX,offY); + // zoom increment power + this._map.setMapCenterAndScale(mapPoint.x, mapPoint.y,this._map.getMapScale()*2,true); + } + }, + + _getFeatureFromTouchEvent: function(touchEvent) { + // summary: + // utility function to return the feature located at this touch event location + // touchEvent: a touch event + // returns: dojox.geo.charting.Feature + // the feature found if any, null otherwise. + // tags: + // private + var feature = null; + if (touchEvent.gfxTarget && touchEvent.gfxTarget.getParent) { + feature = this._map.mapObj.features[touchEvent.gfxTarget.getParent().id]; + } + return feature; + }, + + _touchStartHandler: function(touchEvent){ + // summary: + // action performed on the map when a touch start was triggered + // touchEvent: a touch event + // tags: + // private + event.stop(touchEvent); + this._oneFingerTouch = (touchEvent.touches.length == 1); + this._tapCancel = !this._oneFingerTouch; + // test double tap + this._doubleTapPerformed = false; + if (this._isDoubleTap(touchEvent)) { + //console.log("double tap recognized"); + this._doubleTapHandler(touchEvent); + this._doubleTapPerformed = true; + return; + } + // compute map midpoint between fingers + var middlePoint = this._getTouchBarycenter(touchEvent); + var mapPoint = this._map.screenCoordsToMapCoords(middlePoint.x,middlePoint.y); + this._centerTouchLocation.x = mapPoint.x; + this._centerTouchLocation.y = mapPoint.y; + // store initial finger spacing to compute zoom later + this._initialFingerSpacing = this._getFingerSpacing(touchEvent); + // store initial map scale + this._initialScale = this._map.getMapScale(); + // install touch move and up listeners (if not done by other fingers before) + if (!this._touchMoveListener) + this._touchMoveListener = connect.connect(win.global,"touchmove",this,this._touchMoveHandler); + if (!this._touchEndTapListener) + this._touchEndTapListener = this._map.surface.connect("touchend", this, this._touchEndTapHandler); + if (!this._touchEndListener) + this._touchEndListener = connect.connect(win.global,"touchend",this, this._touchEndHandler); + }, + + _touchEndTapHandler: function(touchEvent) { + // summary: + // action performed on the map when a tap was triggered + // touchEvent: a touch event + // tags: + // private + var touches = touchEvent.touches; + if (touches.length == 0) { + + // test potential tap ? + if (this._oneFingerTouch && !this._tapCancel) { + this._oneFingerTouch = false; + setTimeout(lang.hitch(this,function() { + // wait to check if double tap + // perform test for single tap + //console.log("double tap was performed ? " + this._doubleTapPerformed); + if (!this._doubleTapPerformed) { + // test distance from last tap + var dx = (touchEvent.changedTouches[0].pageX - this._lastTap.x); + var dy = (touchEvent.changedTouches[0].pageY - this._lastTap.y); + var distance = dx*dx + dy*dy; + if (distance < this._tapThreshold) { + // single tap ok + this._singleTapHandler(touchEvent); + } + } + }),350); + } + this._tapCancel = false; + + } + }, + + _touchEndHandler: function(touchEvent) { + // summary: + // action performed on the map when a touch end was triggered + // touchEvent: a touch event + // tags: + // private + event.stop(touchEvent); + var touches = touchEvent.touches; + if (touches.length == 0) { + // disconnect listeners only when all fingers are up + if (this._touchMoveListener) { + connect.disconnect(this._touchMoveListener); + this._touchMoveListener = null; + } + if (this._touchEndListener) { + connect.disconnect(this._touchEndListener); + this._touchEndListener = null; + } + } else { + // recompute touch center + var middlePoint = this._getTouchBarycenter(touchEvent); + var mapPoint = this._map.screenCoordsToMapCoords(middlePoint.x,middlePoint.y); + this._centerTouchLocation.x = mapPoint.x; + this._centerTouchLocation.y = mapPoint.y; + } + }, + + _singleTapHandler: function(touchEvent) { + // summary: + // action performed on the map when a single tap was triggered + // touchEvent: a touch event + // tags: + // private + var feature = this._getFeatureFromTouchEvent(touchEvent); + if (feature) { + // call feature handler + feature._onclickHandler(touchEvent); + } else { + // unselect all + for (var name in this._map.mapObj.features){ + this._map.mapObj.features[name].select(false); + } + this._map.onFeatureClick(null); + } + }, + + _touchMoveHandler: function(touchEvent){ + // summary: + // action performed on the map when a touch move was triggered + // touchEvent: a touch event + // tags: + // private + + // prevent browser interaction + event.stop(touchEvent); + + // cancel tap if moved too far from first touch location + if (!this._tapCancel) { + var dx = (touchEvent.touches[0].pageX - this._lastTap.x), + dy = (touchEvent.touches[0].pageY - this._lastTap.y); + var distance = dx*dx + dy*dy; + if (distance > this._tapThreshold) { + this._tapCancel = true; + } + } + var middlePoint = this._getTouchBarycenter(touchEvent); + // compute map offset + var mapPoint = this._map.screenCoordsToMapCoords(middlePoint.x,middlePoint.y), + mapOffsetX = mapPoint.x - this._centerTouchLocation.x, + mapOffsetY = mapPoint.y - this._centerTouchLocation.y; + // compute scale factor + var scaleFactor = 1; + var touches = touchEvent.touches; + if (touches.length >= 2) { + var fingerSpacing = this._getFingerSpacing(touchEvent); + scaleFactor = fingerSpacing / this._initialFingerSpacing; + // scale map + this._map.setMapScale(this._initialScale*scaleFactor); + } + // adjust map center on barycentre + var currentMapCenter = this._map.getMapCenter(); + this._map.setMapCenter(currentMapCenter.x - mapOffsetX, currentMapCenter.y - mapOffsetY); + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/_Marker.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/_Marker.js new file mode 100644 index 0000000..f6f2114 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/_Marker.js @@ -0,0 +1,65 @@ + +define(["dojo/_base/lang","dojo/_base/array", "dojo/_base/declare","dojo/_base/sniff","./_base"], + function(lang, arr, declare, has) { +return declare("dojox.geo.charting._Marker", null, { + + _needTooltipRefresh: null, + _map: null, + + constructor: function(markerData, map){ + this._map = map; + var mapObj = map.mapObj; + this.features = mapObj.features; + this.markerData = markerData; + _needTooltipRefresh = false; + }, + + show: function(featureId,evt){ + this.currentFeature = this.features[featureId]; + if (this._map.showTooltips && this.currentFeature) { + this.markerText = this.currentFeature.markerText || this.markerData[featureId] || featureId; + dojox.geo.charting.showTooltip(this.markerText, this.currentFeature.shape, ["before"]); + } + this._needTooltipRefresh = false; + }, + + hide: function(){ + if (this._map.showTooltips && this.currentFeature) + dojox.geo.charting.hideTooltip(this.currentFeature.shape); + this._needTooltipRefresh = false; + }, + + _getGroupBoundingBox: function(group){ + var shapes = group.children; + var feature = shapes[0]; + var bbox = feature.getBoundingBox(); + this._arround = lang.clone(bbox); + arr.forEach(shapes, function(item){ + var _bbox = item.getBoundingBox(); + this._arround.x = Math.min(this._arround.x, _bbox.x); + this._arround.y = Math.min(this._arround.y, _bbox.y); + },this); + }, + + _toWindowCoords: function(arround, coords, containerSize){ + var toLeft = (arround.x - this.topLeft[0]) * this.scale; + var toTop = (arround.y - this.topLeft[1]) * this.scale + if (has("ff") == 3.5) { + arround.x = coords.x; + arround.y = coords.y; + } + else if (has("chrome")) { + arround.x = containerSize.x + toLeft; + arround.y = containerSize.y + toTop; + } + else { + arround.x = coords.x + toLeft; + arround.y = coords.y + toTop; + } + arround.width = (this.currentFeature._bbox[2]) * this.scale; + arround.height = (this.currentFeature._bbox[3]) * this.scale; + arround.x += arround.width / 6; + arround.y += arround.height / 4; + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/_base.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/_base.js new file mode 100644 index 0000000..7e77a8c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/_base.js @@ -0,0 +1,54 @@ +define(["dojo/_base/lang","dojo/_base/array","../../main", "dojo/_base/html","dojo/dom-geometry", + "dojox/gfx/matrix","dijit/Tooltip","dojo/_base/NodeList","dojo/NodeList-traverse"], + function(lang, arr, dojox, html, domGeom, matrix, Tooltip, NodeList, NodeListTraverse) { + var dgc = lang.getObject("geo.charting", true, dojox); + + dgc.showTooltip = function(/*String*/innerHTML, /*dojox.gfx.shape*/ gfxObject, /*String[]?*/ positions){ + var arroundNode = dgc._normalizeArround(gfxObject); + return Tooltip.show(innerHTML, arroundNode, positions); + }; + + dgc.hideTooltip = function( /*dojox.gfx.shape*/gfxObject){ + return Tooltip.hide(gfxObject); + }; + + dgc._normalizeArround = function(gfxObject){ + var bbox = dgc._getRealBBox(gfxObject); + //var bbox = gfxObject.getBoundingBox(); + //get the real screen coords for gfx object + var realMatrix = gfxObject._getRealMatrix() || {xx:1,xy:0,yx:0,yy:1,dx:0,dy:0}; + var point = matrix.multiplyPoint(realMatrix, bbox.x, bbox.y); + var gfxDomContainer = dgc._getGfxContainer(gfxObject); + gfxObject.x = domGeom.position(gfxDomContainer,true).x + point.x, + gfxObject.y = domGeom.position(gfxDomContainer,true).y + point.y, + gfxObject.w = bbox.width * realMatrix.xx, + gfxObject.h = bbox.height * realMatrix.yy + return gfxObject; + }; + + dgc._getGfxContainer = function(gfxObject){ + if (gfxObject.surface) { + return (new NodeList(gfxObject.surface.rawNode)).parents("div")[0]; + } else { + return (new NodeList(gfxObject.rawNode)).parents("div")[0]; + } + }; + + dgc._getRealBBox = function(gfxObject){ + var bboxObject = gfxObject.getBoundingBox(); + if(!bboxObject){//the gfx object is group + var shapes = gfxObject.children; + bboxObject = lang.clone(dgc._getRealBBox(shapes[0])); + arr.forEach(shapes, function(item){ + var nextBBox = dgc._getRealBBox(item); + bboxObject.x = Math.min(bboxObject.x, nextBBox.x); + bboxObject.y = Math.min(bboxObject.y, nextBBox.y); + bboxObject.endX = Math.max(bboxObject.x + bboxObject.width, nextBBox.x + nextBBox.width); + bboxObject.endY = Math.max(bboxObject.y + bboxObject.height, nextBBox.y + nextBBox.height); + }); + bboxObject.width = bboxObject.endX - bboxObject.x; + bboxObject.height = bboxObject.endY - bboxObject.y; + } + return bboxObject; + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/Map.css b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/Map.css new file mode 100644 index 0000000..48409ee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/Map.css @@ -0,0 +1,38 @@ +.tundra .dijitTooltipAbove .dijitTooltipConnector, +.tundra .dijitTooltipLeft .dijitTooltipConnector, +.tundra .dijitTooltipBottom .dijitTooltipConnector, +.tundra .dijitTooltipRight.dijitTooltipConnector, +.dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector +.dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector, +.dj_ie .tundra .dijitTooltipBottom .dijitTooltipConnector, +.dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector +{ + display: none; +} + +.dojoxLegendNode { + border: 1px solid #ccc; + margin: 5px 10px 5px 10px; + padding: 3px; + float:right; +} + +.dojoxLegendText { + vertical-align: text-top; + padding-right: 10px +} + +.mapZoomIn { + width: 21px; + height: 21px; + background: url(img/zoomin.png) no-repeat; + position: absolute; +} + +.mapZoomOut { + width: 21px; + height: 21px; + background: url(img/zoomout.png) no-repeat; + position: absolute; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/NOTICES b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/NOTICES new file mode 100644 index 0000000..5d62e07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/NOTICES @@ -0,0 +1,63 @@ +Mapping data in this directory was obtained from the United States Geological Survey (USGS) at http://nationalatlas.gov/atlasftp.html. +Data and information authored or produced by the USGS are in the public domain: http://nationalatlas.gov/policies.html. +The following notices and information are provided by the USGS: +----------------------------------------------------------------------------------------------------------------------------------------------- + + + Are there legal restrictions on access or use of the data? + + Access_Constraints: None + Use_Constraints: + None. Acknowledgment of the National Atlas of the United States + of America and (or) the U.S. Geological Survey would be + appreciated in products derived from these data. + + 1. Who distributes the data set? (Distributor 1 of 1) + + Earth Science Information Center, U.S. Geological Survey + 507 National Center + Reston, VA 20192 + + 1-888-ASK-USGS (1-888-275-8747) (voice) + + + Contact_Instructions: + In addition to the address above there are other ESIC offices throughout the + country. A full list of these offices is at + . + + 2. What's the catalog number I need to order this data set? + + 3. What legal disclaimers am I supposed to read? + + Although these data have been processed successfully on a computer system + at the U.S. Geological Survey, no warranty expressed or implied is made by the U.S. Geological Survey regarding the utility of the data on any other system, nor shall the act of distribution constitute any such warranty. No responsibility is assumed by the U.S. Geological Survey in the use of these data. + + 4. How can I download or order the data? + + Availability in digital form: + + Data format: ESRI Shapefile + Network links: + + Data format: SDTS + Network links: + + + Cost to order the data: + + There is no charge for the online option. For National Atlas files ordered on CD-ROM + there is a base price of $45.00 per disc, a handling fee of $5.00, and a per-file + charge based on file size. The charge for files less than 10 megabytes in size is + $1.00. The charge for files that range in size from 10 to 150 megabytes is $7.50. The + charge for files of 150 megabytes or larger is $15.00. The charge is $7.50 for the + Major Roads of the United States data set. + + + Special instructions: + + To order files on CD-ROM, please see . + +--------------------------------------------------------------------------------------------------------------------- + +This Shapefile data is then reformatted into a simple JSON format diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/USStates.json b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/USStates.json new file mode 100644 index 0000000..7014802 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/USStates.json @@ -0,0 +1,262 @@ +{ + "layerExtent":[0.0, 0.0, 8036.4007820436855, 5262.578216533747], + "layerExtentLL":[-124.7342529296875, 23.725082397460938, 57.780250549316406, 25.66031265258789], + "featureNames":["RI", "VT", "HI", "ME", "VA", "MI", "DE", "ID", "IA", "MD", "MA", "AR", "IL", "UT", "IN", "MN", "AZ", "MO", "MT", "MS", "NH", "NJ", "NM", "AK", "TX", "AL", "NC", "ND", "NE", "NY", "GA", "NV", "TN", "CA", "OK", "OH", "WY", "FL", "SD", "SC", "CT", "WV", "DC", "WI", "KY", "KS", "OR", "LA", "WA", "CO", "PA"], + "features":{ + "RI":{ + "shape":[[7641, 1436, 7651, 1437, 7661, 1467, 7661, 1467, 7653, 1478, 7641, 1436], [7541, 1398, 7559, 1392, 7598, 1380, 7615, 1420, 7635, 1430, 7635, 1431, 7627, 1445, 7626, 1427, 7615, 1429, 7607, 1410, 7618, 1435, 7606, 1444, 7617, 1460, 7618, 1506, 7612, 1496, 7568, 1527, 7568, 1526, 7541, 1398], [7633, 1474, 7639, 1442, 7645, 1476, 7631, 1485, 7633, 1474]], + "center":[7585, 1442], + "bbox":[7541.023426203894, 1379.9911631012965, 120.38955278578123, 146.89851936205946] + }, + "VT":{ + "shape":[7427, 828, 7434, 848, 7424, 882, 7445, 909, 7444, 926, 7390, 984, 7404, 1022, 7383, 1128, 7402, 1236, 7394, 1266, 7414, 1289, 7393, 1294, 7309, 1313, 7302, 1314, 7267, 1166, 7255, 1151, 7239, 1162, 7241, 1126, 7216, 1076, 7218, 999, 7196, 969, 7184, 893, 7202, 888, 7427, 828], + "center":[7317, 1057], + "bbox":[7183.629180866541, 827.7125085121527, 261.2952454831775, 486.6287466336828] + }, + "HI":{ + "shape":[[2254, 4585, 2254, 4606, 2228, 4628, 2227, 4605, 2254, 4585], [2319, 4564, 2350, 4551, 2385, 4559, 2393, 4577, 2383, 4610, 2361, 4625, 2334, 4617, 2305, 4588, 2319, 4564], [2597, 4694, 2619, 4684, 2634, 4731, 2654, 4734, 2664, 4766, 2634, 4772, 2610, 4758, 2611, 4743, 2600, 4747, 2608, 4758, 2584, 4760, 2558, 4702, 2597, 4694], [2790, 4803, 2827, 4807, 2796, 4829, 2719, 4809, 2731, 4787, 2790, 4803], [2835, 4839, 2851, 4839, 2864, 4864, 2908, 4860, 2948, 4903, 2921, 4921, 2870, 4926, 2863, 4884, 2827, 4864, 2835, 4839], [2769, 4849, 2800, 4865, 2797, 4885, 2774, 4888, 2761, 4856, 2769, 4849], [2832, 4923, 2848, 4934, 2822, 4937, 2832, 4923], [2968, 4993, 3088, 5070, 3095, 5110, 3109, 5108, 3113, 5129, 3143, 5154, 3102, 5189, 3011, 5222, 2976, 5263, 2938, 5226, 2946, 5175, 2920, 5098, 2963, 5053, 2954, 5008, 2968, 4993]], + "center":[2703, 4833], + "bbox":[2226.7877701712587, 4551.091358635575, 915.9598550544888, 711.4868578981723] + }, + "ME":{ + "shape":[7610, 288, 7625, 320, 7647, 327, 7714, 269, 7794, 304, 7867, 514, 7872, 558, 7925, 560, 7935, 577, 7924, 583, 7942, 600, 7938, 620, 7951, 635, 7967, 644, 7989, 630, 8016, 661, 8002, 670, 8009, 678, 7997, 675, 8010, 692, 8012, 675, 8023, 684, 8018, 671, 8036, 683, 8015, 725, 7984, 720, 7990, 744, 7983, 731, 7983, 745, 7967, 737, 7971, 762, 7958, 759, 7952, 775, 7939, 756, 7937, 801, 7931, 783, 7932, 800, 7922, 784, 7916, 789, 7929, 803, 7920, 819, 7884, 779, 7876, 786, 7891, 801, 7874, 793, 7886, 804, 7872, 801, 7869, 821, 7862, 803, 7853, 807, 7864, 826, 7857, 814, 7846, 826, 7865, 857, 7819, 854, 7824, 832, 7838, 837, 7824, 821, 7816, 841, 7818, 807, 7801, 800, 7800, 786, 7813, 825, 7791, 840, 7802, 856, 7794, 904, 7803, 904, 7790, 940, 7780, 939, 7789, 913, 7775, 943, 7759, 920, 7749, 972, 7741, 935, 7744, 978, 7731, 971, 7729, 937, 7717, 970, 7725, 985, 7729, 976, 7726, 996, 7706, 936, 7698, 960, 7705, 956, 7724, 999, 7717, 1008, 7706, 976, 7697, 1010, 7698, 982, 7693, 1010, 7696, 983, 7677, 993, 7662, 1036, 7678, 1048, 7660, 1054, 7657, 1069, 7666, 1075, 7643, 1107, 7641, 1157, 7617, 1153, 7616, 1152, 7613, 1135, 7581, 1111, 7468, 758, 7469, 757, 7483, 747, 7500, 764, 7499, 725, 7522, 727, 7504, 706, 7544, 619, 7524, 564, 7542, 513, 7534, 459, 7590, 287, 7610, 288], + "center":[7710, 682], + "bbox":[7467.685076331587, 269.1289575024286, 568.7157057120985, 887.6751354524711] + }, + "VA":{ + "shape":[[7177, 2288, 7216, 2271, 7216, 2271, 7186, 2362, 7195, 2366, 7166, 2410, 7166, 2458, 7149, 2420, 7162, 2388, 7151, 2391, 7152, 2377, 7165, 2373, 7151, 2366, 7172, 2341, 7161, 2341, 7171, 2335, 7160, 2328, 7182, 2314, 7176, 2301, 7163, 2305, 7177, 2288], [6817, 2100, 6818, 2100, 6841, 2099, 6860, 2110, 6855, 2132, 6921, 2156, 6921, 2156, 6928, 2160, 6929, 2161, 6940, 2194, 6923, 2201, 6931, 2212, 6914, 2210, 6913, 2262, 6903, 2256, 6919, 2269, 6907, 2273, 6953, 2253, 6967, 2288, 7003, 2288, 7017, 2305, 7013, 2287, 7027, 2287, 7045, 2303, 7039, 2313, 7055, 2309, 7054, 2322, 7059, 2311, 7092, 2323, 7090, 2339, 7063, 2332, 7091, 2345, 7083, 2366, 7093, 2376, 7070, 2375, 7073, 2359, 7057, 2358, 7063, 2379, 7048, 2354, 7022, 2349, 7021, 2336, 7002, 2334, 6984, 2310, 6938, 2298, 6982, 2312, 7049, 2379, 7098, 2387, 7064, 2396, 7109, 2403, 7113, 2418, 7111, 2435, 7098, 2414, 7097, 2424, 7080, 2411, 7090, 2426, 7075, 2420, 7078, 2430, 7091, 2432, 7079, 2435, 7097, 2442, 7080, 2452, 7013, 2401, 6989, 2408, 7021, 2406, 7060, 2447, 7098, 2456, 7093, 2470, 7118, 2469, 7104, 2473, 7110, 2485, 7122, 2476, 7104, 2503, 7062, 2463, 7026, 2465, 7021, 2450, 7018, 2468, 7001, 2456, 6959, 2466, 7003, 2459, 7004, 2474, 7050, 2479, 7055, 2468, 7064, 2496, 7094, 2506, 7090, 2539, 7113, 2509, 7113, 2530, 7136, 2521, 7118, 2499, 7155, 2502, 7153, 2513, 7167, 2496, 7204, 2560, 7205, 2562, 7201, 2563, 7202, 2562, 7185, 2533, 7186, 2565, 7187, 2566, 7183, 2567, 7182, 2566, 7173, 2559, 7179, 2567, 7179, 2568, 6333, 2723, 6319, 2725, 6017, 2767, 6012, 2768, 6091, 2729, 6098, 2707, 6127, 2694, 6144, 2648, 6230, 2571, 6247, 2552, 6258, 2584, 6301, 2608, 6344, 2575, 6368, 2591, 6415, 2567, 6418, 2545, 6433, 2553, 6467, 2527, 6479, 2534, 6500, 2512, 6493, 2505, 6507, 2491, 6492, 2481, 6550, 2358, 6560, 2293, 6621, 2315, 6647, 2227, 6670, 2239, 6723, 2150, 6720, 2092, 6809, 2139, 6817, 2101, 6817, 2100]], + "center":[6750, 2455], + "bbox":[6012.441825481979, 2091.8790360725766, 1203.6208629785642, 675.6390679572082] + }, + "MI":{ + "shape":[[5098, 797, 5138, 760, 5201, 760, 5169, 771, 5115, 855, 5107, 841, 5115, 813, 5106, 835, 5083, 821, 5098, 797], [5071, 647, 5077, 644, 5024, 682, 5036, 684, 4995, 694, 5003, 677, 5095, 620, 5071, 647], [5296, 933, 5311, 924, 5362, 943, 5421, 886, 5578, 848, 5574, 904, 5628, 898, 5637, 911, 5670, 891, 5694, 937, 5683, 947, 5717, 955, 5713, 963, 5739, 981, 5654, 996, 5635, 982, 5627, 1025, 5589, 996, 5520, 987, 5503, 1014, 5421, 1028, 5412, 1058, 5384, 1077, 5382, 1099, 5366, 1086, 5386, 1065, 5386, 1043, 5354, 1051, 5349, 1079, 5333, 1091, 5328, 1042, 5319, 1084, 5302, 1099, 5256, 1208, 5255, 1208, 5236, 1192, 5244, 1157, 5213, 1163, 5225, 1135, 5217, 1122, 5222, 1098, 5173, 1078, 5176, 1057, 4898, 996, 4883, 965, 4855, 954, 4856, 954, 4932, 902, 4986, 891, 5042, 856, 5080, 810, 5112, 853, 5110, 899, 5152, 854, 5134, 885, 5160, 863, 5197, 865, 5228, 884, 5264, 934, 5296, 933], [5692, 916, 5674, 894, 5684, 881, 5695, 883, 5688, 904, 5701, 920, 5692, 916], [5703, 935, 5697, 942, 5688, 923, 5703, 935], [5754, 974, 5771, 954, 5795, 973, 5787, 989, 5741, 984, 5754, 974], [5651, 1025, 5682, 1031, 5666, 1041, 5651, 1025], [5532, 1243, 5544, 1203, 5551, 1205, 5541, 1245, 5560, 1215, 5557, 1143, 5615, 1113, 5585, 1089, 5605, 1052, 5595, 1044, 5632, 1034, 5671, 1056, 5704, 1054, 5725, 1079, 5809, 1094, 5826, 1109, 5849, 1154, 5831, 1146, 5822, 1161, 5846, 1182, 5856, 1214, 5858, 1289, 5833, 1305, 5832, 1346, 5796, 1363, 5790, 1415, 5831, 1437, 5871, 1373, 5860, 1368, 5916, 1331, 5940, 1335, 5973, 1379, 6023, 1528, 6019, 1596, 5993, 1588, 5977, 1599, 5984, 1608, 5971, 1625, 5972, 1650, 5944, 1676, 5939, 1730, 5907, 1786, 5906, 1787, 5718, 1819, 5717, 1806, 5428, 1839, 5429, 1838, 5456, 1808, 5487, 1732, 5497, 1651, 5488, 1595, 5468, 1551, 5486, 1540, 5467, 1549, 5433, 1481, 5442, 1416, 5426, 1394, 5454, 1335, 5449, 1268, 5471, 1256, 5470, 1224, 5505, 1212, 5535, 1158, 5527, 1175, 5535, 1187, 5526, 1205, 5532, 1243]], + "center":[5662, 1450], + "bbox":[4854.911490750158, 620.4912315367447, 1167.6361755384014, 1218.2194209192758] + }, + "DE":{ + "shape":[7082, 1965, 7100, 1940, 7132, 1937, 7133, 1938, 7135, 1938, 7119, 1976, 7130, 2008, 7129, 2009, 7158, 2039, 7187, 2099, 7225, 2115, 7236, 2145, 7222, 2135, 7217, 2144, 7232, 2147, 7205, 2160, 7219, 2166, 7236, 2147, 7246, 2177, 7246, 2178, 7242, 2179, 7242, 2179, 7239, 2180, 7234, 2181, 7150, 2199, 7082, 1965], + "center":[7157, 2107], + "bbox":[7082.430069572815, 1937.1742059381268, 163.18616844855842, 261.4809650452348] + }, + "ID":{ + "shape":[1428, 192, 1536, 217, 1550, 220, 1507, 416, 1537, 477, 1537, 498, 1526, 505, 1539, 522, 1521, 528, 1570, 572, 1620, 694, 1634, 689, 1638, 710, 1676, 715, 1641, 802, 1630, 805, 1638, 859, 1610, 874, 1616, 891, 1602, 915, 1628, 941, 1691, 907, 1704, 930, 1697, 943, 1706, 945, 1707, 996, 1731, 1041, 1724, 1076, 1764, 1103, 1769, 1166, 1787, 1189, 1802, 1167, 1854, 1183, 1871, 1163, 1982, 1188, 1979, 1168, 2000, 1150, 2037, 1210, 2037, 1210, 1959, 1681, 1903, 1671, 1536, 1604, 1535, 1604, 1118, 1512, 1117, 1512, 1197, 1168, 1231, 1110, 1195, 1080, 1194, 1057, 1234, 998, 1267, 976, 1276, 949, 1352, 851, 1346, 822, 1319, 800, 1309, 766, 1309, 764, 1304, 745, 1315, 731, 1306, 692, 1428, 192], + "center":[1499, 1209], + "bbox":[1116.7271597781803, 191.89745587373298, 920.1469178039938, 1488.964617046075] + }, + "IA":{ + "shape":[4779, 1552, 4779, 1554, 4782, 1580, 4804, 1599, 4789, 1625, 4809, 1695, 4860, 1714, 4871, 1739, 4871, 1740, 4911, 1792, 4944, 1810, 4945, 1869, 4908, 1927, 4825, 1952, 4817, 1986, 4843, 2012, 4843, 2044, 4825, 2066, 4822, 2096, 4782, 2118, 4789, 2150, 4781, 2154, 4781, 2154, 4734, 2111, 4171, 2132, 4143, 2131, 4125, 2102, 4136, 2071, 4126, 2040, 4131, 2018, 4119, 2014, 4127, 1995, 4115, 1986, 4121, 1965, 4095, 1948, 4099, 1898, 4089, 1865, 4074, 1860, 4059, 1827, 4054, 1768, 4045, 1765, 4044, 1765, 4018, 1718, 4047, 1642, 4026, 1613, 4035, 1591, 4025, 1570, 4045, 1570, 4097, 1570, 4775, 1553, 4779, 1552], + "center":[4463, 1860], + "bbox":[4018.187084563174, 1552.3336974056806, 926.7482669008059, 601.9610296119108] + }, + "MD":{ + "shape":[[7242, 2179, 7246, 2178, 7246, 2180, 7245, 2203, 7242, 2179], [6546, 2075, 6559, 2073, 7050, 1972, 7082, 1965, 7150, 2199, 7234, 2181, 7233, 2182, 7240, 2190, 7225, 2191, 7243, 2203, 7215, 2270, 7216, 2271, 7177, 2288, 7177, 2288, 7142, 2302, 7158, 2270, 7138, 2277, 7150, 2256, 7125, 2268, 7144, 2239, 7125, 2242, 7133, 2204, 7122, 2248, 7107, 2224, 7111, 2256, 7075, 2228, 7068, 2236, 7054, 2214, 7065, 2220, 7082, 2197, 7064, 2193, 7061, 2204, 7056, 2185, 7095, 2191, 7108, 2174, 7093, 2158, 7104, 2137, 7091, 2157, 7102, 2168, 7095, 2187, 7076, 2180, 7082, 2168, 7070, 2174, 7079, 2154, 7066, 2176, 7055, 2152, 7046, 2181, 7042, 2165, 7051, 2141, 7062, 2156, 7075, 2150, 7061, 2149, 7076, 2131, 7070, 2120, 7063, 2129, 7059, 2118, 7058, 2141, 7048, 2119, 7082, 2059, 7054, 2094, 7058, 2078, 7047, 2082, 7053, 2111, 7035, 2087, 7042, 2053, 7057, 2050, 7050, 2041, 7091, 2033, 7060, 2035, 7070, 2016, 7088, 2017, 7072, 2013, 7080, 1991, 7062, 2022, 7064, 1996, 7050, 2004, 7035, 2049, 7030, 2026, 7023, 2032, 7028, 2060, 7020, 2044, 7006, 2048, 7022, 2059, 7005, 2062, 7013, 2074, 6997, 2066, 7014, 2075, 7009, 2084, 6979, 2077, 6988, 2097, 6995, 2084, 6996, 2097, 7014, 2096, 7017, 2110, 7004, 2111, 7025, 2118, 6989, 2112, 7019, 2131, 6996, 2133, 7014, 2139, 7009, 2169, 7027, 2214, 7052, 2239, 7043, 2251, 7034, 2229, 7034, 2239, 7010, 2229, 6993, 2188, 6997, 2215, 7042, 2255, 7057, 2251, 7075, 2298, 7045, 2269, 7050, 2285, 7013, 2273, 7017, 2261, 7008, 2274, 7004, 2259, 7000, 2277, 6981, 2250, 6990, 2270, 6975, 2270, 6953, 2234, 6946, 2253, 6936, 2245, 6939, 2259, 6923, 2262, 6916, 2239, 6947, 2196, 6941, 2178, 6940, 2177, 6953, 2157, 6930, 2142, 6924, 2150, 6921, 2156, 6855, 2132, 6860, 2110, 6841, 2099, 6818, 2100, 6817, 2100, 6804, 2069, 6785, 2062, 6790, 2051, 6736, 2044, 6726, 2061, 6702, 2065, 6701, 2086, 6669, 2087, 6652, 2069, 6632, 2114, 6610, 2111, 6565, 2173, 6549, 2091, 6546, 2075]], + "center":[7052, 2222], + "bbox":[6546.235946891058, 1964.9808172764635, 699.4200881793276, 336.6030056060624] + }, + "MA":{ + "shape":[[7758, 1469, 7708, 1483, 7719, 1484, 7734, 1449, 7758, 1469], [7302, 1314, 7309, 1313, 7393, 1294, 7414, 1289, 7429, 1285, 7575, 1251, 7591, 1222, 7631, 1200, 7632, 1202, 7623, 1212, 7635, 1211, 7646, 1230, 7639, 1232, 7674, 1236, 7634, 1264, 7649, 1271, 7632, 1292, 7640, 1303, 7626, 1303, 7631, 1317, 7671, 1313, 7707, 1352, 7696, 1344, 7692, 1357, 7719, 1364, 7728, 1388, 7767, 1391, 7757, 1396, 7800, 1365, 7776, 1328, 7753, 1328, 7777, 1323, 7817, 1385, 7806, 1370, 7814, 1391, 7753, 1412, 7725, 1445, 7718, 1402, 7713, 1413, 7706, 1405, 7694, 1441, 7681, 1427, 7684, 1457, 7666, 1464, 7663, 1446, 7662, 1467, 7661, 1467, 7651, 1437, 7641, 1436, 7641, 1436, 7645, 1407, 7635, 1430, 7635, 1430, 7615, 1420, 7598, 1380, 7559, 1392, 7541, 1398, 7321, 1448, 7304, 1452, 7302, 1327, 7302, 1314], [7799, 1472, 7824, 1459, 7815, 1462, 7815, 1443, 7835, 1462, 7799, 1472]], + "center":[7490, 1333], + "bbox":[7301.785749503367, 1200.2581210721266, 533.1245306226901, 283.6107339386617] + }, + "AR":{ + "shape":[4323, 2915, 4351, 2914, 5015, 2888, 5031, 2925, 4986, 2986, 5087, 2978, 5089, 2978, 5089, 2979, 5102, 2996, 5083, 3000, 5093, 3013, 5055, 3032, 5073, 3047, 5057, 3059, 5065, 3073, 5046, 3067, 5048, 3098, 5038, 3082, 5026, 3095, 5041, 3100, 5028, 3122, 5045, 3148, 5009, 3177, 5009, 3178, 5020, 3191, 5011, 3206, 4986, 3199, 4990, 3227, 4974, 3219, 4972, 3234, 4988, 3238, 4978, 3250, 4969, 3241, 4974, 3291, 4961, 3311, 4944, 3302, 4932, 3333, 4919, 3328, 4939, 3340, 4915, 3350, 4930, 3357, 4928, 3369, 4897, 3380, 4914, 3418, 4890, 3428, 4909, 3437, 4877, 3438, 4893, 3452, 4878, 3462, 4878, 3485, 4888, 3473, 4897, 3481, 4886, 3495, 4907, 3483, 4894, 3504, 4900, 3521, 4911, 3516, 4905, 3542, 4887, 3545, 4900, 3558, 4894, 3568, 4879, 3569, 4464, 3582, 4426, 3583, 4424, 3481, 4369, 3483, 4354, 3465, 4352, 3464, 4352, 3449, 4356, 3126, 4327, 2945, 4323, 2915], + "center":[4662, 3220], + "bbox":[4322.829240491697, 2887.82523560477, 778.9827073906772, 694.879092657869] + }, + "IL":{ + "shape":[4871, 1739, 4872, 1739, 5275, 1711, 5276, 1714, 5277, 1759, 5328, 1857, 5328, 1858, 5370, 2310, 5358, 2319, 5366, 2336, 5355, 2353, 5379, 2385, 5386, 2426, 5342, 2519, 5321, 2525, 5333, 2543, 5316, 2567, 5323, 2594, 5311, 2594, 5322, 2613, 5322, 2614, 5305, 2642, 5320, 2674, 5261, 2698, 5266, 2759, 5185, 2735, 5158, 2769, 5164, 2782, 5166, 2783, 5147, 2769, 5138, 2770, 5143, 2784, 5127, 2775, 5103, 2732, 5116, 2710, 5098, 2652, 5045, 2615, 5030, 2621, 5032, 2605, 4964, 2560, 4960, 2538, 4992, 2437, 4940, 2417, 4915, 2433, 4895, 2364, 4796, 2279, 4770, 2203, 4780, 2155, 4781, 2154, 4789, 2150, 4782, 2118, 4822, 2096, 4825, 2066, 4843, 2044, 4843, 2012, 4817, 1986, 4825, 1952, 4908, 1927, 4945, 1869, 4944, 1810, 4911, 1792, 4871, 1740, 4871, 1739], + "center":[5115, 2145], + "bbox":[4770.196295410327, 1711.191338731059, 615.4388548089883, 1073.0606632626743] + }, + "UT":{ + "shape":[1536, 1604, 1903, 1671, 1959, 1681, 1956, 1693, 1927, 1871, 2214, 1915, 2213, 1925, 2105, 2676, 2039, 2667, 1351, 2546, 1345, 2545, 1536, 1604], + "center":[1781, 2167], + "bbox":[1344.750115055111, 1604.3978062032195, 869.4968003325662, 1072.015936358547] + }, + "IN":{ + "shape":[5428, 1839, 5717, 1806, 5718, 1819, 5721, 1845, 5778, 2313, 5777, 2313, 5768, 2324, 5779, 2338, 5773, 2350, 5788, 2355, 5786, 2374, 5734, 2399, 5695, 2396, 5701, 2433, 5675, 2455, 5666, 2484, 5645, 2489, 5637, 2538, 5620, 2553, 5585, 2539, 5567, 2513, 5574, 2523, 5553, 2530, 5550, 2566, 5531, 2585, 5501, 2558, 5472, 2578, 5462, 2603, 5385, 2574, 5383, 2602, 5340, 2587, 5340, 2610, 5323, 2613, 5322, 2613, 5311, 2594, 5323, 2594, 5316, 2567, 5333, 2543, 5321, 2525, 5342, 2519, 5386, 2426, 5379, 2385, 5355, 2353, 5366, 2336, 5358, 2319, 5370, 2310, 5328, 1858, 5329, 1858, 5367, 1872, 5428, 1839], + "center":[5553, 2130], + "bbox":[5310.914233466702, 1806.2693159343437, 476.59488846766635, 807.1441757493742] + }, + "MN":{ + "shape":[3957, 591, 3967, 564, 3950, 502, 3976, 503, 4218, 503, 4217, 428, 4242, 430, 4260, 439, 4284, 553, 4388, 573, 4395, 595, 4463, 568, 4503, 569, 4544, 585, 4534, 600, 4562, 603, 4581, 646, 4594, 641, 4593, 620, 4621, 617, 4635, 642, 4688, 664, 4687, 676, 4779, 632, 4793, 661, 4874, 652, 4906, 674, 4958, 667, 4798, 754, 4628, 929, 4629, 930, 4604, 948, 4609, 1063, 4558, 1095, 4534, 1135, 4532, 1162, 4550, 1165, 4566, 1188, 4551, 1218, 4548, 1321, 4585, 1355, 4614, 1357, 4667, 1391, 4690, 1430, 4744, 1458, 4772, 1499, 4779, 1552, 4775, 1553, 4097, 1570, 4045, 1570, 4047, 1222, 3992, 1163, 4029, 1123, 4033, 1100, 4033, 1099, 4028, 1023, 4001, 959, 4008, 907, 3997, 891, 3996, 776, 3959, 670, 3957, 591], + "center":[4328, 1050], + "bbox":[3950.4253913269413, 427.57079578020245, 1007.2005431623966, 1142.3275358037831] + }, + "AZ":{ + "shape":[2105, 2676, 1948, 3757, 1919, 3753, 1616, 3706, 1051, 3370, 1074, 3333, 1075, 3331, 1106, 3331, 1121, 3315, 1121, 3280, 1092, 3262, 1105, 3229, 1097, 3220, 1102, 3200, 1139, 3179, 1153, 3106, 1178, 3078, 1229, 3058, 1196, 3013, 1193, 2962, 1174, 2927, 1179, 2903, 1179, 2903, 1179, 2902, 1195, 2871, 1202, 2695, 1260, 2695, 1276, 2722, 1293, 2725, 1315, 2697, 1345, 2545, 1345, 2545, 1351, 2546, 2039, 2667, 2105, 2676], + "center":[1610, 3091], + "bbox":[1051.3556136955926, 2544.815557518358, 1053.5072639848177, 1212.212023750329] + }, + "MO":{ + "shape":[4781, 2154, 4780, 2155, 4770, 2203, 4796, 2279, 4895, 2364, 4915, 2433, 4940, 2417, 4992, 2437, 4960, 2538, 4964, 2560, 5032, 2605, 5030, 2621, 5045, 2615, 5098, 2652, 5116, 2710, 5103, 2732, 5127, 2775, 5143, 2784, 5138, 2770, 5147, 2769, 5166, 2783, 5167, 2783, 5161, 2817, 5171, 2825, 5159, 2831, 5160, 2860, 5137, 2853, 5129, 2880, 5128, 2881, 5118, 2882, 5118, 2880, 5110, 2865, 5109, 2880, 5110, 2881, 5115, 2907, 5100, 2914, 5113, 2927, 5089, 2931, 5107, 2950, 5089, 2978, 5087, 2978, 4986, 2986, 5031, 2925, 5015, 2888, 4351, 2914, 4323, 2915, 4322, 2863, 4321, 2819, 4319, 2406, 4282, 2393, 4274, 2360, 4241, 2331, 4262, 2293, 4277, 2292, 4266, 2264, 4242, 2269, 4210, 2245, 4211, 2244, 4195, 2236, 4185, 2197, 4159, 2184, 4159, 2139, 4142, 2133, 4143, 2131, 4171, 2132, 4734, 2111, 4781, 2154, 4781, 2154], + "center":[4649, 2529], + "bbox":[4141.599891262755, 2111.1869114797505, 1029.5962543407404, 874.9905328579766] + }, + "MT":{ + "shape":[3074, 458, 3023, 1050, 3022, 1057, 3005, 1232, 3001, 1232, 2053, 1110, 2042, 1174, 2037, 1210, 2000, 1150, 1979, 1168, 1982, 1188, 1871, 1163, 1854, 1183, 1802, 1167, 1787, 1189, 1769, 1166, 1764, 1103, 1724, 1076, 1731, 1041, 1707, 996, 1706, 945, 1697, 943, 1704, 930, 1691, 907, 1628, 941, 1602, 915, 1616, 891, 1610, 874, 1638, 859, 1630, 805, 1641, 802, 1676, 715, 1638, 710, 1634, 689, 1620, 694, 1570, 572, 1521, 528, 1539, 522, 1526, 505, 1537, 498, 1537, 477, 1507, 416, 1550, 220, 1560, 222, 3074, 458], + "center":[2366, 706], + "bbox":[1506.9365729336703, 219.959812182772, 1567.488761621926, 1012.1411673843539] + }, + "MS":{ + "shape":[5342, 3152, 5360, 3170, 5349, 3751, 5385, 4042, 5385, 4042, 5370, 4056, 5286, 4042, 5308, 4047, 5237, 4070, 5243, 4062, 5228, 4057, 5213, 4094, 5200, 4096, 5199, 4096, 5183, 4090, 5138, 4007, 5153, 3940, 4836, 3959, 4848, 3948, 4831, 3910, 4853, 3903, 4842, 3879, 4858, 3885, 4850, 3857, 4869, 3845, 4850, 3837, 4867, 3838, 4872, 3813, 4891, 3811, 4873, 3810, 4877, 3794, 4892, 3798, 4918, 3759, 4905, 3747, 4918, 3752, 4929, 3733, 4903, 3736, 4902, 3724, 4931, 3722, 4948, 3689, 4928, 3692, 4932, 3675, 4908, 3669, 4910, 3656, 4928, 3664, 4913, 3654, 4922, 3637, 4900, 3641, 4915, 3623, 4897, 3615, 4912, 3587, 4903, 3571, 4889, 3586, 4894, 3569, 4894, 3568, 4900, 3558, 4887, 3545, 4905, 3542, 4911, 3516, 4900, 3521, 4894, 3504, 4907, 3483, 4886, 3495, 4897, 3481, 4888, 3473, 4878, 3485, 4878, 3462, 4893, 3452, 4877, 3438, 4909, 3437, 4890, 3428, 4914, 3418, 4897, 3380, 4928, 3369, 4930, 3357, 4915, 3350, 4939, 3340, 4919, 3328, 4932, 3333, 4944, 3302, 4961, 3311, 4974, 3291, 4969, 3241, 4978, 3250, 4988, 3238, 4972, 3234, 4974, 3219, 4990, 3227, 4986, 3199, 5011, 3206, 5020, 3191, 5009, 3178, 5009, 3177, 5014, 3177, 5341, 3152, 5342, 3152], + "center":[5130, 3618], + "bbox":[4830.8439535221705, 3152.185506272538, 554.1423743161158, 943.8294240195419] + }, + "NH":{ + "shape":[7427, 828, 7425, 784, 7467, 758, 7468, 758, 7581, 1111, 7613, 1135, 7616, 1152, 7616, 1153, 7608, 1172, 7618, 1155, 7636, 1165, 7631, 1199, 7631, 1200, 7591, 1222, 7575, 1251, 7429, 1285, 7414, 1289, 7394, 1266, 7402, 1236, 7383, 1128, 7404, 1022, 7390, 984, 7444, 926, 7445, 909, 7424, 882, 7434, 848, 7427, 828], + "center":[7487, 1110], + "bbox":[7383.275752846597, 757.6279479694789, 253.13402332287387, 530.9874508377478] + }, + "NJ":{ + "shape":[7167, 1623, 7175, 1625, 7297, 1663, 7292, 1722, 7290, 1722, 7255, 1776, 7310, 1776, 7302, 1788, 7313, 1783, 7311, 1794, 7305, 1766, 7312, 1771, 7319, 1834, 7309, 1835, 7321, 1839, 7325, 1898, 7317, 1844, 7308, 1847, 7317, 1847, 7308, 1852, 7315, 1867, 7304, 1869, 7317, 1870, 7319, 1912, 7299, 1943, 7306, 1955, 7288, 1950, 7297, 1971, 7285, 1979, 7298, 1986, 7264, 2005, 7281, 2005, 7260, 2061, 7254, 2048, 7258, 2069, 7235, 2086, 7234, 2040, 7200, 2046, 7131, 2007, 7130, 2008, 7119, 1976, 7135, 1938, 7133, 1938, 7217, 1848, 7157, 1810, 7151, 1788, 7132, 1786, 7125, 1764, 7138, 1727, 7122, 1706, 7166, 1623, 7167, 1623], + "center":[7248, 1862], + "bbox":[7119.486993899072, 1622.7122776765768, 205.74226205555533, 463.7265235430323] + }, + "NM":{ + "shape":[2105, 2676, 2182, 2687, 3017, 2778, 3031, 2779, 3030, 2791, 3023, 2874, 3017, 2874, 2946, 3738, 2363, 3681, 2358, 3706, 2373, 3724, 2337, 3720, 2098, 3690, 2086, 3776, 1953, 3758, 1948, 3757, 2105, 2676], + "center":[2533, 3173], + "bbox":[1947.8141535882821, 2676.4137425617664, 1082.71177385349, 1099.5607135602122] + }, + "AK":{ + "shape":[620, 3939, 642, 3931, 650, 3935, 643, 3931, 675, 3922, 680, 3925, 667, 3924, 694, 3939, 689, 3941, 699, 3939, 714, 3945, 716, 3951, 700, 3957, 686, 3954, 692, 3958, 682, 3955, 685, 3953, 664, 3953, 690, 3958, 684, 3960, 693, 3962, 682, 3961, 693, 3964, 689, 3969, 696, 3965, 713, 3966, 721, 3973, 725, 3971, 714, 3968, 714, 3961, 731, 3962, 728, 3956, 734, 3954, 738, 3960, 738, 3953, 741, 3955, 737, 3962, 744, 3956, 760, 3968, 750, 3974, 776, 3987, 791, 3982, 827, 3987, 846, 3994, 850, 4005, 853, 4004, 848, 3997, 850, 4001, 853, 3998, 850, 3995, 871, 4003, 873, 4005, 853, 4012, 877, 4022, 850, 4017, 895, 4026, 880, 4032, 906, 4037, 917, 4045, 921, 4039, 923, 4053, 922, 4040, 943, 4043, 939, 4039, 953, 4044, 938, 4048, 938, 4051, 983, 4048, 1003, 4051, 1044, 4068, 1047, 4075, 1079, 4080, 1086, 4089, 1174, 4108, 1186, 4119, 1216, 4130, 1302, 4135, 1377, 4173, 1388, 4183, 1397, 4183, 1393, 4181, 1406, 4186, 1300, 4789, 1324, 4799, 1329, 4794, 1351, 4806, 1368, 4799, 1399, 4803, 1390, 4819, 1413, 4835, 1416, 4845, 1463, 4888, 1463, 4910, 1502, 4900, 1515, 4901, 1522, 4895, 1523, 4883, 1536, 4881, 1531, 4875, 1578, 4869, 1589, 4878, 1599, 4888, 1594, 4896, 1599, 4907, 1612, 4911, 1622, 4921, 1631, 4940, 1651, 4952, 1672, 4975, 1668, 4977, 1719, 5064, 1712, 5071, 1728, 5076, 1722, 5087, 1735, 5093, 1735, 5107, 1748, 5108, 1803, 5141, 1804, 5147, 1821, 5151, 1823, 5165, 1813, 5177, 1819, 5207, 1789, 5233, 1782, 5235, 1791, 5229, 1781, 5233, 1780, 5224, 1781, 5235, 1776, 5236, 1776, 5222, 1775, 5232, 1765, 5232, 1764, 5223, 1769, 5219, 1765, 5221, 1765, 5214, 1773, 5212, 1780, 5220, 1779, 5213, 1790, 5212, 1780, 5212, 1794, 5200, 1777, 5214, 1775, 5207, 1769, 5212, 1761, 5210, 1760, 5205, 1769, 5200, 1786, 5202, 1783, 5199, 1788, 5195, 1781, 5200, 1773, 5198, 1775, 5184, 1784, 5181, 1785, 5185, 1788, 5178, 1775, 5183, 1775, 5173, 1786, 5171, 1775, 5172, 1775, 5165, 1771, 5166, 1763, 5155, 1769, 5146, 1755, 5152, 1740, 5149, 1733, 5154, 1728, 5150, 1732, 5155, 1723, 5154, 1731, 5159, 1727, 5165, 1723, 5162, 1727, 5168, 1722, 5172, 1715, 5165, 1720, 5172, 1717, 5178, 1708, 5172, 1703, 5158, 1718, 5159, 1714, 5154, 1716, 5148, 1724, 5147, 1723, 5134, 1743, 5138, 1749, 5133, 1727, 5130, 1726, 5120, 1715, 5119, 1707, 5107, 1709, 5100, 1697, 5099, 1705, 5098, 1698, 5094, 1709, 5088, 1700, 5092, 1688, 5084, 1680, 5073, 1689, 5076, 1688, 5067, 1678, 5070, 1669, 5064, 1671, 5059, 1666, 5058, 1663, 5063, 1650, 5055, 1655, 5049, 1670, 5055, 1667, 5051, 1678, 5048, 1658, 5045, 1664, 5040, 1657, 5040, 1656, 5032, 1667, 5030, 1653, 5030, 1649, 5025, 1651, 5020, 1686, 5039, 1655, 5017, 1656, 5007, 1679, 5014, 1657, 5006, 1649, 5014, 1643, 5003, 1648, 5001, 1652, 5005, 1653, 5000, 1648, 4997, 1655, 4991, 1642, 5001, 1634, 4994, 1635, 4980, 1641, 4978, 1639, 4974, 1632, 4978, 1630, 4984, 1600, 4967, 1600, 4958, 1591, 4947, 1596, 4948, 1593, 4938, 1597, 4929, 1590, 4942, 1578, 4904, 1581, 4891, 1577, 4903, 1568, 4899, 1580, 4917, 1569, 4906, 1575, 4916, 1574, 4927, 1583, 4949, 1578, 4948, 1585, 4968, 1582, 4974, 1571, 4972, 1563, 4953, 1563, 4962, 1556, 4957, 1540, 4958, 1544, 4953, 1539, 4953, 1545, 4953, 1543, 4946, 1547, 4944, 1536, 4928, 1553, 4926, 1539, 4926, 1534, 4913, 1535, 4919, 1529, 4920, 1536, 4921, 1536, 4925, 1528, 4931, 1520, 4925, 1527, 4926, 1516, 4924, 1517, 4915, 1511, 4918, 1506, 4909, 1507, 4919, 1488, 4904, 1495, 4913, 1482, 4919, 1490, 4915, 1512, 4924, 1516, 4927, 1508, 4923, 1511, 4927, 1508, 4927, 1522, 4935, 1510, 4938, 1520, 4941, 1525, 4938, 1531, 4945, 1526, 4947, 1533, 4948, 1535, 4957, 1521, 4959, 1520, 4953, 1518, 4955, 1510, 4948, 1511, 4953, 1506, 4952, 1510, 4957, 1515, 4954, 1517, 4960, 1505, 4954, 1502, 4955, 1505, 4962, 1500, 4963, 1500, 4958, 1491, 4955, 1491, 4950, 1479, 4948, 1454, 4929, 1463, 4926, 1453, 4928, 1441, 4915, 1440, 4906, 1423, 4893, 1426, 4893, 1410, 4887, 1415, 4888, 1418, 4884, 1407, 4884, 1409, 4887, 1381, 4869, 1385, 4871, 1381, 4865, 1376, 4866, 1350, 4850, 1362, 4849, 1371, 4842, 1366, 4829, 1375, 4823, 1382, 4833, 1378, 4841, 1381, 4849, 1377, 4849, 1380, 4853, 1383, 4850, 1382, 4835, 1403, 4840, 1385, 4834, 1374, 4819, 1355, 4831, 1329, 4835, 1272, 4813, 1283, 4808, 1278, 4797, 1274, 4798, 1278, 4804, 1261, 4806, 1212, 4788, 1149, 4783, 1131, 4777, 1145, 4779, 1133, 4770, 1136, 4765, 1123, 4767, 1111, 4761, 1114, 4762, 1107, 4754, 1099, 4754, 1110, 4745, 1104, 4742, 1109, 4733, 1080, 4747, 1072, 4741, 1081, 4741, 1050, 4732, 1069, 4722, 1037, 4719, 1050, 4714, 1049, 4710, 1043, 4714, 1035, 4713, 1037, 4709, 1025, 4714, 1017, 4711, 1015, 4707, 1049, 4708, 1041, 4702, 1034, 4706, 1020, 4703, 1015, 4693, 1025, 4696, 1017, 4692, 1021, 4689, 1030, 4693, 1024, 4686, 1043, 4689, 1040, 4686, 1025, 4682, 1004, 4692, 1000, 4691, 1005, 4688, 999, 4686, 994, 4690, 992, 4684, 982, 4692, 979, 4688, 984, 4685, 979, 4686, 983, 4682, 974, 4688, 981, 4678, 979, 4672, 974, 4681, 969, 4680, 973, 4681, 968, 4684, 973, 4685, 971, 4691, 965, 4684, 960, 4687, 964, 4691, 959, 4691, 949, 4681, 971, 4668, 967, 4667, 971, 4663, 949, 4677, 947, 4668, 933, 4670, 935, 4672, 929, 4674, 945, 4672, 940, 4679, 935, 4677, 938, 4680, 935, 4685, 931, 4683, 933, 4686, 914, 4684, 927, 4686, 914, 4693, 930, 4688, 926, 4698, 938, 4690, 933, 4695, 938, 4700, 930, 4705, 927, 4700, 920, 4700, 910, 4706, 924, 4702, 932, 4708, 931, 4711, 942, 4702, 945, 4706, 942, 4707, 948, 4710, 941, 4712, 949, 4714, 923, 4720, 926, 4724, 920, 4726, 932, 4723, 928, 4726, 933, 4727, 931, 4731, 938, 4727, 927, 4732, 925, 4727, 917, 4741, 913, 4735, 907, 4741, 882, 4733, 887, 4728, 879, 4729, 873, 4737, 874, 4728, 869, 4720, 869, 4729, 855, 4736, 858, 4745, 853, 4742, 856, 4742, 852, 4739, 856, 4733, 851, 4727, 849, 4735, 843, 4732, 847, 4737, 847, 4747, 834, 4734, 836, 4744, 831, 4746, 827, 4740, 828, 4747, 810, 4752, 822, 4736, 806, 4751, 807, 4747, 802, 4746, 807, 4742, 798, 4744, 801, 4751, 780, 4756, 783, 4760, 778, 4763, 776, 4754, 761, 4752, 770, 4761, 757, 4753, 744, 4757, 746, 4759, 727, 4749, 731, 4742, 739, 4746, 734, 4739, 742, 4738, 744, 4743, 747, 4737, 764, 4746, 756, 4738, 762, 4742, 758, 4736, 771, 4737, 772, 4731, 788, 4725, 757, 4729, 760, 4732, 739, 4717, 751, 4702, 769, 4692, 780, 4673, 784, 4674, 778, 4670, 776, 4660, 832, 4650, 840, 4659, 863, 4661, 900, 4679, 892, 4669, 870, 4662, 849, 4646, 871, 4635, 896, 4634, 886, 4631, 889, 4630, 869, 4631, 855, 4642, 830, 4636, 826, 4627, 825, 4632, 807, 4632, 793, 4641, 761, 4643, 757, 4647, 760, 4657, 742, 4654, 739, 4661, 725, 4666, 729, 4672, 711, 4679, 684, 4670, 693, 4671, 707, 4691, 693, 4699, 669, 4697, 683, 4700, 679, 4708, 670, 4710, 659, 4707, 664, 4703, 659, 4698, 656, 4707, 651, 4707, 650, 4702, 644, 4705, 651, 4708, 649, 4711, 638, 4711, 640, 4718, 618, 4717, 628, 4720, 609, 4731, 613, 4733, 612, 4740, 637, 4741, 656, 4760, 636, 4771, 620, 4769, 617, 4776, 608, 4775, 611, 4783, 592, 4785, 604, 4788, 597, 4788, 602, 4792, 593, 4791, 597, 4796, 591, 4793, 591, 4798, 584, 4788, 584, 4796, 577, 4792, 577, 4799, 554, 4794, 548, 4798, 549, 4803, 535, 4803, 536, 4810, 521, 4802, 520, 4811, 510, 4810, 511, 4817, 496, 4812, 492, 4814, 494, 4820, 486, 4816, 466, 4822, 477, 4827, 470, 4829, 474, 4834, 467, 4838, 458, 4836, 461, 4844, 450, 4837, 447, 4846, 440, 4839, 441, 4843, 431, 4848, 427, 4844, 427, 4850, 412, 4842, 414, 4848, 403, 4848, 409, 4856, 398, 4855, 393, 4849, 373, 4854, 388, 4855, 386, 4861, 373, 4855, 372, 4859, 358, 4856, 340, 4865, 348, 4868, 355, 4863, 353, 4866, 366, 4869, 355, 4870, 357, 4875, 370, 4873, 356, 4878, 355, 4873, 350, 4876, 352, 4881, 348, 4877, 350, 4885, 344, 4882, 348, 4880, 342, 4880, 351, 4872, 343, 4870, 346, 4873, 337, 4871, 337, 4885, 329, 4879, 324, 4884, 300, 4882, 296, 4887, 295, 4879, 292, 4879, 292, 4887, 283, 4899, 276, 4895, 284, 4894, 279, 4891, 288, 4884, 276, 4877, 264, 4879, 262, 4885, 257, 4881, 257, 4886, 242, 4882, 245, 4887, 239, 4887, 235, 4893, 233, 4884, 222, 4886, 227, 4892, 216, 4885, 196, 4892, 182, 4888, 185, 4880, 193, 4875, 203, 4881, 182, 4871, 160, 4892, 152, 4890, 154, 4899, 146, 4897, 149, 4893, 141, 4895, 140, 4901, 137, 4896, 130, 4898, 126, 4891, 134, 4894, 122, 4878, 117, 4882, 123, 4889, 118, 4893, 122, 4901, 118, 4893, 113, 4899, 104, 4898, 92, 4881, 88, 4888, 97, 4895, 78, 4900, 84, 4894, 81, 4891, 87, 4893, 83, 4882, 103, 4876, 98, 4880, 109, 4882, 109, 4877, 124, 4872, 133, 4875, 133, 4870, 125, 4870, 174, 4850, 224, 4855, 224, 4859, 215, 4860, 224, 4874, 232, 4874, 227, 4863, 253, 4877, 250, 4873, 254, 4872, 238, 4864, 257, 4842, 287, 4833, 320, 4831, 317, 4829, 336, 4824, 352, 4833, 353, 4815, 373, 4803, 391, 4802, 387, 4799, 405, 4793, 412, 4792, 410, 4800, 415, 4803, 408, 4807, 415, 4803, 413, 4798, 425, 4804, 417, 4802, 429, 4797, 415, 4799, 415, 4789, 419, 4787, 411, 4788, 423, 4761, 429, 4754, 448, 4761, 440, 4753, 433, 4754, 431, 4741, 458, 4726, 483, 4736, 460, 4724, 468, 4712, 476, 4710, 477, 4703, 489, 4701, 482, 4700, 461, 4715, 402, 4720, 385, 4703, 395, 4694, 392, 4691, 409, 4694, 416, 4703, 393, 4679, 396, 4688, 378, 4696, 375, 4689, 379, 4688, 374, 4689, 378, 4693, 371, 4704, 368, 4701, 372, 4699, 363, 4699, 357, 4692, 363, 4699, 370, 4700, 367, 4703, 374, 4721, 363, 4725, 354, 4721, 341, 4694, 330, 4687, 334, 4681, 326, 4680, 325, 4686, 316, 4689, 313, 4680, 305, 4679, 307, 4675, 301, 4677, 298, 4664, 270, 4675, 268, 4669, 246, 4669, 251, 4672, 240, 4677, 244, 4677, 223, 4680, 219, 4680, 221, 4674, 220, 4678, 199, 4669, 214, 4672, 229, 4666, 222, 4666, 222, 4648, 238, 4647, 225, 4643, 222, 4647, 216, 4639, 216, 4630, 219, 4628, 218, 4633, 222, 4625, 236, 4620, 219, 4577, 220, 4568, 226, 4567, 220, 4565, 215, 4572, 211, 4560, 235, 4542, 227, 4542, 217, 4552, 213, 4549, 215, 4555, 204, 4555, 206, 4561, 198, 4559, 210, 4566, 203, 4578, 192, 4574, 190, 4578, 158, 4579, 121, 4568, 117, 4560, 124, 4558, 111, 4549, 100, 4531, 108, 4528, 108, 4523, 116, 4522, 112, 4517, 134, 4515, 139, 4510, 152, 4514, 150, 4525, 167, 4523, 171, 4518, 146, 4505, 167, 4507, 155, 4502, 159, 4499, 145, 4506, 85, 4484, 88, 4480, 98, 4483, 99, 4477, 108, 4479, 90, 4476, 88, 4472, 95, 4468, 93, 4464, 94, 4468, 89, 4471, 80, 4465, 89, 4463, 87, 4458, 94, 4453, 120, 4448, 114, 4443, 111, 4441, 118, 4448, 91, 4453, 92, 4457, 86, 4458, 88, 4463, 79, 4464, 77, 4473, 67, 4468, 69, 4456, 56, 4450, 55, 4444, 65, 4446, 64, 4439, 57, 4435, 47, 4436, 45, 4429, 49, 4421, 48, 4427, 72, 4431, 56, 4423, 53, 4416, 81, 4421, 74, 4414, 76, 4404, 114, 4384, 128, 4386, 126, 4390, 139, 4396, 131, 4399, 140, 4397, 135, 4394, 137, 4390, 127, 4390, 131, 4384, 131, 4371, 134, 4372, 130, 4370, 148, 4375, 132, 4367, 160, 4349, 194, 4357, 195, 4364, 202, 4365, 211, 4376, 247, 4370, 271, 4358, 270, 4354, 284, 4361, 275, 4364, 328, 4370, 350, 4358, 351, 4353, 348, 4327, 335, 4312, 339, 4312, 322, 4308, 331, 4302, 348, 4308, 346, 4305, 362, 4304, 362, 4289, 349, 4280, 358, 4282, 362, 4277, 327, 4287, 317, 4278, 321, 4282, 298, 4282, 301, 4283, 274, 4288, 259, 4298, 259, 4287, 249, 4281, 247, 4273, 234, 4274, 250, 4282, 242, 4289, 230, 4277, 210, 4269, 157, 4262, 156, 4259, 155, 4264, 164, 4265, 151, 4263, 86, 4232, 84, 4222, 90, 4218, 66, 4192, 74, 4186, 69, 4196, 86, 4200, 81, 4199, 98, 4193, 113, 4200, 129, 4217, 146, 4211, 121, 4205, 120, 4208, 104, 4192, 47, 4171, 17, 4146, 34, 4143, 20, 4148, 47, 4149, 50, 4148, 46, 4144, 53, 4145, 49, 4143, 64, 4141, 74, 4147, 83, 4145, 79, 4141, 118, 4137, 127, 4144, 156, 4150, 137, 4138, 153, 4133, 177, 4135, 182, 4140, 199, 4133, 216, 4135, 254, 4146, 239, 4141, 247, 4147, 238, 4154, 238, 4162, 219, 4162, 234, 4165, 240, 4176, 289, 4186, 291, 4193, 318, 4194, 333, 4206, 340, 4199, 336, 4200, 352, 4190, 374, 4198, 367, 4207, 377, 4200, 373, 4191, 354, 4182, 334, 4180, 337, 4186, 333, 4185, 337, 4169, 324, 4153, 311, 4149, 307, 4139, 316, 4135, 336, 4151, 331, 4159, 351, 4178, 373, 4177, 389, 4192, 417, 4198, 420, 4190, 416, 4183, 421, 4182, 418, 4180, 406, 4182, 377, 4171, 369, 4176, 357, 4174, 341, 4157, 353, 4145, 364, 4147, 357, 4140, 293, 4124, 299, 4128, 257, 4109, 255, 4089, 244, 4072, 152, 4004, 125, 3993, 147, 3993, 130, 3993, 157, 3998, 148, 3993, 158, 3986, 164, 3966, 256, 3987, 292, 3985, 321, 3970, 313, 3977, 321, 3975, 329, 3963, 326, 3959, 337, 3956, 335, 3951, 394, 3929, 406, 3935, 396, 3933, 402, 3937, 383, 3937, 439, 3938, 443, 3942, 441, 3939, 487, 3931, 497, 3935, 496, 3938, 481, 3939, 495, 3941, 482, 3949, 491, 3948, 498, 3962, 495, 3948, 501, 3942, 527, 3947, 504, 3943, 498, 3933, 487, 3930, 537, 3925, 528, 3925, 539, 3929, 521, 3927, 533, 3937, 531, 3931, 546, 3933, 541, 3930, 588, 3940, 620, 3939], + "center":[813, 4358], + "bbox":[17.226250526593294, 3922.1622828273585, 1806.1690621660666, 1313.3765572801585] + }, + "TX":{ + "shape":[[3960, 4548, 3926, 4590, 3956, 4534, 4038, 4483, 3960, 4548], [3765, 3367, 3774, 3393, 3796, 3396, 3793, 3416, 3813, 3422, 3840, 3397, 3880, 3431, 3914, 3413, 3927, 3451, 3950, 3405, 3986, 3430, 4014, 3417, 4009, 3427, 4053, 3458, 4085, 3428, 4145, 3427, 4173, 3408, 4222, 3421, 4233, 3404, 4291, 3445, 4352, 3464, 4354, 3465, 4369, 3483, 4424, 3481, 4426, 3583, 4426, 3596, 4431, 3781, 4468, 3822, 4467, 3859, 4487, 3873, 4481, 3881, 4500, 3900, 4492, 3912, 4519, 3935, 4524, 3965, 4488, 4061, 4497, 4154, 4459, 4204, 4475, 4227, 4474, 4229, 4432, 4233, 4316, 4293, 4369, 4255, 4315, 4261, 4329, 4237, 4323, 4210, 4296, 4236, 4284, 4227, 4275, 4256, 4294, 4268, 4282, 4276, 4310, 4294, 4298, 4288, 4297, 4303, 4263, 4330, 4241, 4321, 4255, 4349, 4233, 4348, 4247, 4349, 4238, 4364, 4258, 4351, 4229, 4378, 4162, 4418, 4119, 4424, 4115, 4438, 4160, 4418, 4045, 4481, 4112, 4432, 4068, 4448, 4060, 4430, 4018, 4451, 4040, 4474, 3994, 4498, 3973, 4481, 3973, 4514, 3933, 4533, 3902, 4593, 3888, 4582, 3868, 4592, 3870, 4608, 3892, 4619, 3845, 4737, 3850, 4754, 3834, 4754, 3850, 4780, 3833, 4783, 3859, 4840, 3847, 4861, 3873, 4881, 3876, 4927, 3897, 4936, 3873, 4955, 3896, 4954, 3903, 4938, 3905, 4957, 3879, 4958, 3854, 4981, 3816, 4943, 3718, 4936, 3676, 4902, 3636, 4898, 3613, 4872, 3559, 4859, 3533, 4775, 3504, 4740, 3506, 4694, 3490, 4681, 3496, 4633, 3435, 4586, 3426, 4549, 3370, 4492, 3362, 4445, 3335, 4412, 3309, 4324, 3247, 4252, 3215, 4237, 3218, 4218, 3207, 4226, 3194, 4188, 3081, 4178, 3040, 4157, 3027, 4179, 2978, 4179, 2937, 4252, 2938, 4277, 2915, 4284, 2892, 4321, 2863, 4319, 2783, 4256, 2738, 4240, 2665, 4174, 2641, 4116, 2644, 4054, 2622, 4023, 2615, 3980, 2540, 3924, 2459, 3816, 2420, 3792, 2396, 3737, 2373, 3725, 2373, 3724, 2358, 3706, 2363, 3681, 2946, 3738, 3017, 2874, 3023, 2874, 3487, 2903, 3471, 3276, 3484, 3274, 3520, 3312, 3565, 3315, 3571, 3299, 3595, 3323, 3598, 3347, 3692, 3360, 3710, 3380, 3729, 3362, 3765, 3367], [3892, 4640, 3925, 4591, 3867, 4713, 3892, 4640], [3880, 4832, 3866, 4788, 3868, 4714, 3868, 4773, 3902, 4937, 3880, 4832]], + "center":[3629, 3892], + "bbox":[2357.5862085056892, 2873.8949636291673, 2166.2516199112247, 2106.8870904247105] + }, + "AL":{ + "shape":[5342, 3152, 5751, 3113, 5757, 3137, 5866, 3512, 5911, 3591, 5907, 3611, 5927, 3621, 5902, 3649, 5896, 3708, 5919, 3762, 5916, 3831, 5939, 3865, 5910, 3869, 5508, 3912, 5506, 3942, 5548, 3975, 5545, 4009, 5544, 4009, 5552, 4017, 5539, 4037, 5516, 4037, 5518, 4048, 5534, 4045, 5527, 4052, 5450, 4070, 5500, 4054, 5480, 4029, 5466, 4030, 5458, 3981, 5441, 3978, 5426, 4000, 5435, 4008, 5430, 4053, 5386, 4042, 5385, 4042, 5349, 3751, 5360, 3170, 5342, 3152], + "center":[5617, 3547], + "bbox":[5342.095656308308, 3113.4827673729174, 596.451313025831, 956.3113443753509] + }, + "NC":{ + "shape":[[7201, 2563, 7205, 2562, 7205, 2563, 7287, 2693, 7245, 2651, 7201, 2563], [6319, 2725, 6333, 2723, 7179, 2568, 7180, 2569, 7175, 2579, 7200, 2600, 7202, 2588, 7236, 2649, 7199, 2610, 7200, 2632, 7214, 2636, 7164, 2617, 7193, 2645, 7174, 2653, 7155, 2639, 7171, 2659, 7130, 2648, 7157, 2663, 7130, 2669, 7142, 2671, 7119, 2688, 7091, 2665, 7093, 2636, 7052, 2626, 7089, 2638, 7098, 2707, 7206, 2677, 7191, 2684, 7209, 2684, 7198, 2697, 7209, 2714, 7198, 2716, 7215, 2729, 7199, 2731, 7207, 2736, 7221, 2731, 7215, 2690, 7234, 2690, 7224, 2680, 7239, 2671, 7264, 2716, 7255, 2721, 7260, 2741, 7239, 2733, 7244, 2746, 7212, 2802, 7178, 2792, 7173, 2806, 7168, 2785, 7162, 2804, 7151, 2800, 7144, 2792, 7154, 2788, 7138, 2782, 7161, 2779, 7151, 2766, 7116, 2785, 7138, 2787, 7145, 2804, 7057, 2791, 7084, 2815, 7089, 2804, 7128, 2813, 7118, 2828, 7130, 2815, 7140, 2816, 7137, 2828, 7148, 2815, 7167, 2824, 7127, 2856, 7161, 2848, 7127, 2892, 7076, 2863, 7086, 2873, 7072, 2883, 7086, 2874, 7112, 2907, 7127, 2896, 7138, 2910, 7143, 2889, 7156, 2898, 7153, 2881, 7174, 2896, 7160, 2880, 7175, 2883, 7175, 2859, 7185, 2890, 7203, 2865, 7203, 2890, 7192, 2892, 7181, 2928, 7161, 2914, 7166, 2933, 7152, 2917, 7140, 2930, 7153, 2934, 7093, 2956, 7082, 2940, 7089, 2954, 7077, 2954, 7084, 2960, 7063, 2986, 7048, 2983, 7060, 2970, 7038, 2953, 7051, 2971, 7040, 2980, 7056, 2994, 7003, 3047, 6991, 3097, 6976, 3076, 6979, 3133, 6944, 3128, 6892, 3152, 6891, 3152, 6686, 3010, 6511, 3038, 6509, 3016, 6480, 2987, 6465, 3002, 6461, 2982, 6249, 3003, 6143, 3060, 6140, 3060, 5983, 3084, 5953, 3088, 5952, 3042, 5989, 3028, 5990, 3001, 6009, 2978, 6067, 2961, 6114, 2916, 6140, 2910, 6147, 2879, 6165, 2877, 6186, 2847, 6202, 2866, 6229, 2830, 6278, 2822, 6293, 2785, 6322, 2773, 6319, 2725, 6319, 2725], [7183, 2567, 7187, 2566, 7187, 2566, 7203, 2576, 7183, 2567], [7288, 2695, 7308, 2729, 7313, 2798, 7281, 2813, 7311, 2788, 7306, 2729, 7288, 2695]], + "center":[6700, 2826], + "bbox":[5952.042953294017, 2562.1635913643336, 1361.0084056628302, 590.1898019127811] + }, + "ND":{ + "shape":[3950, 502, 3967, 564, 3957, 591, 3957, 592, 3959, 670, 3996, 776, 3997, 891, 4008, 907, 4001, 959, 4028, 1023, 4033, 1100, 4002, 1099, 3164, 1062, 3023, 1050, 3074, 458, 3116, 461, 3950, 502], + "center":[3524, 756], + "bbox":[3022.527264265822, 457.59212376958726, 1010.0102311329347, 641.9094378926393] + }, + "NE":{ + "shape":[2971, 1616, 2976, 1616, 3755, 1662, 3820, 1709, 3848, 1690, 3931, 1693, 4010, 1732, 4020, 1761, 4043, 1765, 4044, 1765, 4045, 1765, 4054, 1768, 4059, 1827, 4074, 1860, 4089, 1865, 4099, 1898, 4095, 1948, 4121, 1965, 4115, 1986, 4127, 1995, 4119, 2014, 4131, 2018, 4126, 2040, 4136, 2071, 4125, 2102, 4143, 2131, 4142, 2133, 4159, 2139, 4159, 2184, 4185, 2197, 4195, 2236, 4211, 2244, 4206, 2243, 3243, 2215, 3215, 2213, 3228, 2022, 3006, 2005, 2937, 1999, 2971, 1616, 2971, 1616], + "center":[3612, 1930], + "bbox":[2937.015040594679, 1615.8297803697847, 1273.652496708105, 627.6938449973413] + }, + "NY":{ + "shape":[[7362, 1671, 7357, 1658, 7401, 1659, 7402, 1642, 7477, 1620, 7517, 1573, 7481, 1633, 7506, 1626, 7517, 1598, 7550, 1598, 7581, 1575, 7480, 1659, 7339, 1731, 7361, 1728, 7312, 1749, 7333, 1725, 7294, 1740, 7303, 1702, 7327, 1700, 7328, 1680, 7341, 1689, 7346, 1667, 7362, 1671], [7184, 893, 7196, 969, 7218, 999, 7216, 1076, 7241, 1126, 7239, 1162, 7255, 1151, 7267, 1166, 7302, 1314, 7302, 1327, 7304, 1452, 7307, 1462, 7331, 1595, 7345, 1608, 7315, 1637, 7331, 1657, 7330, 1657, 7320, 1695, 7303, 1699, 7293, 1722, 7292, 1722, 7297, 1663, 7175, 1625, 7167, 1623, 7121, 1609, 7103, 1589, 7094, 1550, 7066, 1546, 7046, 1524, 6427, 1652, 6418, 1601, 6418, 1601, 6494, 1530, 6527, 1480, 6507, 1445, 6511, 1430, 6486, 1428, 6481, 1394, 6608, 1347, 6657, 1344, 6692, 1358, 6744, 1336, 6778, 1344, 6770, 1334, 6866, 1255, 6865, 1239, 6837, 1205, 6869, 1168, 6846, 1180, 6855, 1163, 6841, 1160, 6834, 1184, 6817, 1160, 6877, 1095, 6883, 1064, 6934, 987, 6991, 943, 7184, 893], [7409, 1706, 7398, 1711, 7469, 1664, 7409, 1706], [7382, 1718, 7363, 1729, 7406, 1703, 7382, 1718], [7292, 1741, 7269, 1767, 7272, 1740, 7292, 1741]], + "center":[6982, 1368], + "bbox":[6417.580786242645, 893.4859395487013, 1162.9619795113686, 873.4925980295768] + }, + "GA":{ + "shape":[6143, 3060, 6144, 3060, 6113, 3123, 6176, 3156, 6176, 3156, 6196, 3157, 6258, 3247, 6374, 3325, 6375, 3348, 6410, 3379, 6457, 3400, 6481, 3470, 6523, 3496, 6545, 3561, 6579, 3568, 6580, 3568, 6593, 3574, 6582, 3589, 6576, 3573, 6575, 3590, 6562, 3577, 6582, 3595, 6574, 3607, 6549, 3590, 6554, 3602, 6539, 3599, 6557, 3608, 6523, 3597, 6568, 3616, 6555, 3636, 6545, 3622, 6548, 3636, 6521, 3624, 6546, 3641, 6534, 3650, 6555, 3641, 6558, 3655, 6553, 3669, 6540, 3655, 6547, 3669, 6522, 3676, 6555, 3676, 6543, 3705, 6528, 3694, 6543, 3716, 6509, 3714, 6527, 3718, 6526, 3731, 6527, 3721, 6548, 3726, 6534, 3752, 6522, 3740, 6520, 3761, 6492, 3747, 6524, 3780, 6493, 3792, 6528, 3792, 6524, 3814, 6507, 3812, 6526, 3836, 6507, 3840, 6508, 3840, 6456, 3827, 6438, 3838, 6448, 3917, 6427, 3924, 6411, 3885, 5968, 3918, 5939, 3866, 5939, 3865, 5916, 3831, 5919, 3762, 5896, 3708, 5902, 3649, 5927, 3621, 5907, 3611, 5911, 3591, 5866, 3512, 5757, 3137, 5751, 3113, 5772, 3111, 5944, 3089, 5953, 3088, 5983, 3084, 6140, 3060, 6143, 3060], + "center":[6159, 3499], + "bbox":[5751.066659695458, 3059.735439125348, 842.1830852324074, 864.2944778928199] + }, + "NV":{ + "shape":[1536, 1604, 1345, 2545, 1345, 2545, 1315, 2697, 1293, 2725, 1276, 2722, 1260, 2695, 1202, 2695, 1195, 2871, 1179, 2902, 1179, 2903, 553, 1964, 701, 1416, 703, 1408, 722, 1413, 1117, 1512, 1117, 1512, 1118, 1512, 1535, 1604, 1536, 1604], + "center":[1045, 1927], + "bbox":[552.6877160601398, 1407.9247770441316, 982.9101261496735, 1495.0102889725422] + }, + "TN":{ + "shape":[6012, 2768, 6017, 2767, 6319, 2725, 6319, 2725, 6322, 2773, 6293, 2785, 6278, 2822, 6229, 2830, 6202, 2866, 6186, 2847, 6165, 2877, 6147, 2879, 6140, 2910, 6114, 2916, 6067, 2961, 6009, 2978, 5990, 3001, 5989, 3028, 5952, 3042, 5953, 3088, 5944, 3089, 5772, 3111, 5751, 3113, 5342, 3152, 5341, 3152, 5014, 3177, 5009, 3177, 5045, 3148, 5028, 3122, 5041, 3100, 5026, 3095, 5038, 3082, 5048, 3098, 5046, 3067, 5065, 3073, 5057, 3059, 5073, 3047, 5055, 3032, 5093, 3013, 5083, 3000, 5102, 2996, 5089, 2979, 5089, 2978, 5107, 2950, 5089, 2931, 5113, 2927, 5100, 2914, 5115, 2907, 5110, 2881, 5114, 2880, 5118, 2880, 5118, 2882, 5129, 2880, 5140, 2878, 5339, 2863, 5334, 2828, 6011, 2769, 6012, 2768], + "center":[5533, 2967], + "bbox":[5008.8876325677875, 2724.57469597311, 1312.8105366827986, 452.62423421965195] + }, + "CA":{ + "shape":[124, 1236, 703, 1408, 701, 1416, 553, 1964, 1179, 2903, 1179, 2903, 1174, 2927, 1193, 2962, 1196, 3013, 1229, 3058, 1178, 3078, 1153, 3106, 1139, 3179, 1102, 3200, 1097, 3220, 1105, 3229, 1092, 3262, 1121, 3280, 1121, 3315, 1106, 3331, 1075, 3331, 1073, 3331, 684, 3281, 675, 3245, 689, 3269, 691, 3255, 679, 3241, 671, 3251, 680, 3184, 663, 3123, 582, 3010, 537, 3005, 544, 2987, 533, 2946, 487, 2941, 442, 2909, 390, 2833, 254, 2790, 232, 2760, 261, 2654, 231, 2628, 243, 2608, 239, 2587, 191, 2528, 176, 2457, 133, 2383, 136, 2329, 157, 2327, 180, 2295, 168, 2261, 138, 2254, 112, 2214, 108, 2130, 123, 2084, 138, 2084, 133, 2123, 182, 2166, 167, 2153, 165, 2102, 151, 2088, 158, 2072, 145, 2055, 157, 2049, 254, 2078, 272, 2065, 268, 2080, 298, 2084, 273, 2064, 243, 2069, 268, 2048, 223, 2060, 209, 2039, 220, 2032, 188, 2052, 176, 2035, 182, 2009, 177, 2043, 159, 2021, 144, 2025, 130, 2078, 99, 2053, 79, 2009, 61, 2023, 80, 1997, 79, 1979, 94, 2014, 71, 1934, 12, 1822, 24, 1799, 22, 1739, 43, 1704, 47, 1650, 0, 1548, 4, 1513, 47, 1463, 45, 1477, 72, 1455, 65, 1446, 48, 1461, 77, 1424, 78, 1397, 118, 1329, 104, 1274, 124, 1236], + "center":[507, 2428], + "bbox":[0.0, 1235.8258093785118, 1228.720840043634, 2095.1776242661253] + }, + "OK":{ + "shape":[3178, 2791, 3178, 2791, 4284, 2819, 4321, 2819, 4322, 2863, 4323, 2915, 4327, 2945, 4356, 3126, 4352, 3449, 4352, 3464, 4291, 3445, 4233, 3404, 4222, 3421, 4173, 3408, 4145, 3427, 4085, 3428, 4053, 3458, 4009, 3427, 4014, 3417, 3986, 3430, 3950, 3405, 3927, 3451, 3914, 3413, 3880, 3431, 3840, 3397, 3813, 3422, 3793, 3416, 3796, 3396, 3774, 3393, 3765, 3367, 3765, 3367, 3729, 3362, 3710, 3380, 3692, 3360, 3598, 3347, 3595, 3323, 3571, 3299, 3565, 3315, 3520, 3312, 3484, 3274, 3471, 3276, 3487, 2903, 3153, 2884, 3023, 2874, 3030, 2791, 3031, 2779, 3134, 2787, 3178, 2791], + "center":[3930, 3108], + "bbox":[3023.197942403276, 2778.8561310642554, 1332.3624136691633, 685.566148248552] + }, + "OH":{ + "shape":[5911, 1786, 5991, 1817, 6004, 1801, 5999, 1814, 6023, 1808, 5975, 1832, 6041, 1829, 6027, 1817, 6061, 1832, 6123, 1797, 6162, 1796, 6219, 1734, 6320, 1675, 6321, 1675, 6364, 1929, 6364, 1929, 6345, 1942, 6363, 1991, 6345, 2130, 6303, 2183, 6281, 2195, 6267, 2184, 6254, 2214, 6237, 2217, 6224, 2255, 6236, 2284, 6216, 2296, 6209, 2275, 6192, 2271, 6172, 2320, 6184, 2354, 6168, 2361, 6166, 2388, 6127, 2398, 6127, 2398, 6084, 2371, 6074, 2341, 6017, 2380, 5981, 2364, 5961, 2382, 5927, 2360, 5874, 2358, 5831, 2303, 5780, 2312, 5778, 2313, 5721, 1845, 5718, 1819, 5906, 1787, 5906, 1787, 5911, 1786], + "center":[6096, 2082], + "bbox":[5718.242249393261, 1674.6267669674462, 645.9704766536042, 723.8687419559174] + }, + "WY":{ + "shape":[3005, 1232, 3004, 1235, 2971, 1616, 2971, 1616, 2937, 1999, 2924, 1998, 2225, 1917, 2214, 1915, 1927, 1871, 1956, 1693, 1959, 1681, 2037, 1210, 2037, 1210, 2042, 1174, 2053, 1110, 3001, 1232, 3005, 1232], + "center":[2487, 1535], + "bbox":[1926.8321924800312, 1110.197616627383, 1077.7683497025378, 889.2322221788561] + }, + "FL":{ + "shape":[6508, 3840, 6528, 3854, 6539, 3839, 6543, 3875, 6530, 3858, 6584, 4003, 6595, 4014, 6587, 3987, 6675, 4136, 6637, 4084, 6664, 4136, 6750, 4223, 6762, 4245, 6748, 4256, 6756, 4285, 6793, 4358, 6731, 4264, 6724, 4233, 6740, 4221, 6739, 4270, 6756, 4303, 6745, 4219, 6711, 4219, 6718, 4202, 6694, 4187, 6727, 4263, 6862, 4481, 6836, 4471, 6851, 4487, 6868, 4482, 6890, 4522, 6876, 4517, 6902, 4547, 6896, 4539, 6921, 4741, 6919, 4751, 6915, 4716, 6894, 4786, 6893, 4872, 6861, 4866, 6868, 4874, 6848, 4887, 6819, 4884, 6773, 4906, 6755, 4887, 6756, 4867, 6785, 4885, 6801, 4874, 6754, 4856, 6738, 4832, 6753, 4810, 6734, 4825, 6719, 4803, 6735, 4792, 6720, 4783, 6716, 4801, 6704, 4777, 6667, 4764, 6694, 4777, 6657, 4762, 6635, 4770, 6631, 4759, 6645, 4756, 6617, 4739, 6597, 4668, 6567, 4666, 6603, 4617, 6562, 4660, 6540, 4586, 6556, 4557, 6532, 4585, 6506, 4569, 6535, 4610, 6511, 4595, 6510, 4610, 6447, 4528, 6443, 4503, 6421, 4493, 6465, 4477, 6428, 4479, 6458, 4445, 6457, 4394, 6438, 4420, 6436, 4399, 6419, 4396, 6429, 4392, 6403, 4383, 6417, 4395, 6402, 4404, 6432, 4409, 6420, 4418, 6423, 4447, 6386, 4425, 6408, 4454, 6382, 4422, 6398, 4307, 6394, 4244, 6383, 4235, 6393, 4239, 6391, 4218, 6367, 4201, 6354, 4168, 6314, 4174, 6291, 4153, 6298, 4145, 6244, 4116, 6240, 4089, 6213, 4079, 6187, 4044, 6127, 4016, 6093, 4018, 6065, 4038, 6073, 4051, 6055, 4046, 6075, 4064, 6044, 4065, 5988, 4110, 5992, 4091, 5970, 4113, 5910, 4130, 5896, 4096, 5909, 4127, 5913, 4096, 5845, 4047, 5883, 4064, 5895, 4056, 5836, 4037, 5868, 4007, 5861, 3999, 5838, 4026, 5828, 4011, 5810, 4015, 5816, 4030, 5830, 4026, 5836, 4049, 5781, 4023, 5700, 4011, 5768, 4007, 5751, 3984, 5715, 3998, 5701, 3986, 5687, 4010, 5589, 4032, 5639, 4008, 5613, 3998, 5612, 3979, 5604, 4010, 5584, 3985, 5589, 4017, 5532, 4051, 5561, 4019, 5545, 4009, 5545, 4009, 5548, 3975, 5506, 3942, 5508, 3912, 5910, 3869, 5939, 3865, 5939, 3866, 5968, 3918, 6411, 3885, 6427, 3924, 6448, 3917, 6438, 3838, 6456, 3827, 6508, 3840], + "center":[6585, 4335], + "bbox":[5506.310458865219, 3827.186951564696, 1414.2469623466595, 1078.9271397334787] + }, + "SD":{ + "shape":[3023, 1050, 3164, 1062, 4002, 1099, 4033, 1100, 4029, 1123, 3992, 1163, 4047, 1222, 4045, 1570, 4025, 1570, 4035, 1591, 4026, 1613, 4047, 1642, 4018, 1718, 4044, 1765, 4043, 1765, 4020, 1761, 4010, 1732, 3931, 1693, 3848, 1690, 3820, 1709, 3755, 1662, 2976, 1616, 2971, 1616, 3004, 1235, 3005, 1232, 3022, 1057, 3023, 1050], + "center":[3544, 1347], + "bbox":[2971.124373651464, 1050.043615899464, 1075.661674971776, 715.2386540159926] + }, + "SC":{ + "shape":[6176, 3156, 6113, 3123, 6144, 3060, 6143, 3060, 6249, 3003, 6461, 2982, 6465, 3002, 6480, 2987, 6509, 3016, 6511, 3038, 6686, 3010, 6891, 3152, 6891, 3152, 6826, 3243, 6815, 3270, 6821, 3298, 6801, 3279, 6812, 3254, 6800, 3266, 6799, 3286, 6821, 3302, 6814, 3316, 6806, 3304, 6812, 3316, 6795, 3313, 6807, 3317, 6785, 3340, 6797, 3341, 6769, 3342, 6758, 3362, 6768, 3367, 6729, 3404, 6719, 3386, 6734, 3368, 6716, 3392, 6709, 3373, 6716, 3402, 6698, 3393, 6727, 3408, 6714, 3429, 6706, 3421, 6710, 3436, 6683, 3450, 6667, 3441, 6675, 3421, 6658, 3443, 6680, 3450, 6661, 3470, 6641, 3436, 6651, 3472, 6623, 3460, 6628, 3470, 6597, 3471, 6639, 3481, 6630, 3502, 6646, 3486, 6647, 3504, 6618, 3520, 6608, 3485, 6612, 3514, 6573, 3474, 6591, 3506, 6576, 3517, 6615, 3529, 6594, 3555, 6596, 3527, 6582, 3532, 6595, 3539, 6579, 3568, 6579, 3568, 6545, 3561, 6523, 3496, 6481, 3470, 6457, 3400, 6410, 3379, 6375, 3348, 6374, 3325, 6258, 3247, 6196, 3157, 6176, 3156, 6176, 3156], + "center":[6541, 3231], + "bbox":[6112.614477369485, 2981.961131844549, 778.5946861628072, 586.2283645094535] + }, + "CT":{ + "shape":[7541, 1398, 7568, 1526, 7567, 1528, 7539, 1536, 7531, 1523, 7535, 1539, 7521, 1547, 7504, 1553, 7491, 1539, 7496, 1559, 7426, 1581, 7424, 1569, 7401, 1605, 7331, 1655, 7331, 1657, 7315, 1637, 7345, 1608, 7331, 1595, 7307, 1462, 7304, 1452, 7321, 1448, 7541, 1398], + "center":[7442, 1505], + "bbox":[7304.222285771861, 1397.8167615354203, 263.7757107347343, 259.100971032168] + }, + "WV":{ + "shape":[6364, 1929, 6369, 1959, 6394, 2102, 6546, 2075, 6549, 2091, 6565, 2173, 6610, 2111, 6632, 2114, 6652, 2069, 6669, 2087, 6701, 2086, 6702, 2065, 6726, 2061, 6736, 2044, 6790, 2051, 6785, 2062, 6804, 2069, 6817, 2100, 6817, 2101, 6809, 2139, 6720, 2092, 6723, 2150, 6670, 2239, 6647, 2227, 6621, 2315, 6560, 2293, 6550, 2358, 6492, 2481, 6507, 2491, 6493, 2505, 6500, 2512, 6479, 2534, 6467, 2527, 6433, 2553, 6418, 2545, 6415, 2567, 6368, 2591, 6344, 2575, 6301, 2608, 6258, 2584, 6247, 2552, 6247, 2551, 6222, 2552, 6212, 2535, 6192, 2533, 6155, 2489, 6159, 2478, 6128, 2452, 6127, 2399, 6127, 2398, 6166, 2388, 6168, 2361, 6184, 2354, 6172, 2320, 6192, 2271, 6209, 2275, 6216, 2296, 6236, 2284, 6224, 2255, 6237, 2217, 6254, 2214, 6267, 2184, 6281, 2195, 6303, 2183, 6345, 2130, 6363, 1991, 6345, 1942, 6364, 1929, 6364, 1929], + "center":[6378, 2332], + "bbox":[6127.105822495098, 1928.5641252578148, 690.343968832166, 679.5274353689069] + }, + "DC":{ + "shape":[6928, 2160, 6921, 2156, 6921, 2156, 6924, 2150, 6930, 2142, 6953, 2157, 6940, 2177, 6939, 2177, 6944, 2161, 6928, 2160], + "center":[6934, 2153], + "bbox":[6920.506533181993, 2141.589247282631, 32.58943373685452, 35.901722553833224] + }, + "WI":{ + "shape":[[5338, 1169, 5315, 1247, 5302, 1264, 5292, 1258, 5286, 1242, 5305, 1190, 5314, 1193, 5326, 1164, 5338, 1169], [4702, 927, 4791, 882, 4806, 895, 4783, 954, 4818, 940, 4808, 931, 4855, 954, 4855, 954, 4883, 965, 4898, 996, 5176, 1057, 5173, 1078, 5222, 1098, 5217, 1122, 5225, 1135, 5213, 1163, 5244, 1157, 5236, 1192, 5255, 1208, 5256, 1209, 5255, 1232, 5227, 1244, 5210, 1289, 5214, 1313, 5205, 1316, 5221, 1322, 5264, 1256, 5284, 1246, 5301, 1264, 5282, 1331, 5285, 1384, 5268, 1401, 5261, 1434, 5268, 1483, 5246, 1566, 5251, 1612, 5276, 1656, 5275, 1711, 5275, 1711, 4872, 1739, 4871, 1739, 4860, 1714, 4809, 1695, 4789, 1625, 4804, 1599, 4782, 1580, 4779, 1554, 4779, 1552, 4772, 1499, 4744, 1458, 4690, 1430, 4667, 1391, 4614, 1357, 4585, 1355, 4548, 1321, 4551, 1218, 4566, 1188, 4550, 1165, 4532, 1162, 4534, 1135, 4558, 1095, 4609, 1063, 4604, 948, 4629, 930, 4629, 932, 4649, 944, 4702, 927]], + "center":[4969, 1326], + "bbox":[4532.3918561497785, 881.6938347091063, 805.2276107605994, 857.1162210960997] + }, + "KY":{ + "shape":[[5118, 2880, 5110, 2881, 5109, 2880, 5110, 2865, 5118, 2880], [5778, 2313, 5780, 2312, 5831, 2303, 5874, 2358, 5927, 2360, 5961, 2382, 5981, 2364, 6017, 2380, 6074, 2341, 6084, 2371, 6127, 2398, 6127, 2398, 6127, 2399, 6128, 2452, 6159, 2478, 6155, 2489, 6192, 2533, 6212, 2535, 6222, 2552, 6247, 2551, 6247, 2552, 6230, 2571, 6144, 2648, 6127, 2694, 6098, 2707, 6091, 2729, 6012, 2768, 6011, 2769, 5334, 2828, 5339, 2863, 5140, 2878, 5129, 2880, 5137, 2853, 5160, 2860, 5159, 2831, 5171, 2825, 5161, 2817, 5167, 2783, 5166, 2783, 5164, 2782, 5158, 2769, 5185, 2735, 5266, 2759, 5261, 2698, 5320, 2674, 5305, 2642, 5322, 2614, 5322, 2613, 5323, 2613, 5340, 2610, 5340, 2587, 5383, 2602, 5385, 2574, 5462, 2603, 5472, 2578, 5501, 2558, 5531, 2585, 5550, 2566, 5553, 2530, 5574, 2523, 5567, 2513, 5585, 2539, 5620, 2553, 5637, 2538, 5645, 2489, 5666, 2484, 5675, 2455, 5701, 2433, 5695, 2396, 5734, 2399, 5786, 2374, 5788, 2355, 5773, 2350, 5779, 2338, 5768, 2324, 5777, 2313, 5778, 2313]], + "center":[5828, 2581], + "bbox":[5109.050661398359, 2303.369688273179, 1137.790998421695, 577.2572832752585] + }, + "KS":{ + "shape":[3215, 2213, 3243, 2215, 4206, 2243, 4211, 2244, 4210, 2245, 4242, 2269, 4266, 2264, 4277, 2292, 4262, 2293, 4241, 2331, 4274, 2360, 4282, 2393, 4319, 2406, 4321, 2819, 4284, 2819, 3178, 2791, 3178, 2791, 3210, 2296, 3215, 2213], + "center":[3753, 2506], + "bbox":[3177.7941461662417, 2213.4066104839408, 1143.4447618402305, 605.7450113212822] + }, + "OR":{ + "shape":[477, 509, 504, 509, 532, 539, 534, 584, 521, 593, 534, 585, 521, 632, 526, 623, 577, 662, 633, 657, 633, 657, 691, 657, 734, 693, 810, 686, 863, 705, 955, 690, 1008, 704, 1037, 696, 1297, 762, 1309, 764, 1309, 766, 1319, 800, 1346, 822, 1352, 851, 1276, 949, 1267, 976, 1234, 998, 1194, 1057, 1195, 1080, 1231, 1110, 1197, 1168, 1117, 1512, 1117, 1512, 722, 1413, 703, 1408, 124, 1236, 124, 1235, 110, 1211, 113, 1167, 135, 1113, 125, 1067, 178, 985, 186, 997, 204, 973, 210, 988, 212, 967, 187, 981, 223, 930, 236, 921, 261, 943, 237, 918, 223, 929, 252, 869, 266, 879, 253, 868, 283, 797, 294, 802, 283, 796, 297, 762, 310, 772, 297, 760, 306, 728, 347, 665, 359, 605, 376, 607, 367, 590, 384, 570, 375, 575, 375, 554, 385, 520, 399, 511, 399, 466, 421, 501, 415, 480, 464, 485, 477, 509], + "center":[746, 1019], + "bbox":[110.42702484968872, 466.18654659455024, 1241.1399115078336, 1045.3897533373636] + }, + "LA":{ + "shape":[4426, 3583, 4464, 3582, 4879, 3569, 4894, 3568, 4894, 3569, 4889, 3586, 4903, 3571, 4912, 3587, 4897, 3615, 4915, 3623, 4900, 3641, 4922, 3637, 4913, 3654, 4928, 3664, 4910, 3656, 4908, 3669, 4932, 3675, 4928, 3692, 4948, 3689, 4931, 3722, 4902, 3724, 4903, 3736, 4929, 3733, 4918, 3752, 4905, 3747, 4918, 3759, 4892, 3798, 4877, 3794, 4873, 3810, 4891, 3811, 4872, 3813, 4867, 3838, 4850, 3837, 4869, 3845, 4850, 3857, 4858, 3885, 4842, 3879, 4853, 3903, 4831, 3910, 4848, 3948, 4836, 3959, 5153, 3940, 5138, 4007, 5183, 4090, 5199, 4096, 5199, 4096, 5184, 4098, 5169, 4129, 5151, 4128, 5149, 4144, 5187, 4158, 5192, 4133, 5214, 4118, 5210, 4139, 5227, 4140, 5214, 4144, 5226, 4153, 5217, 4151, 5220, 4166, 5236, 4172, 5224, 4178, 5205, 4161, 5201, 4170, 5216, 4168, 5205, 4182, 5181, 4182, 5214, 4204, 5175, 4191, 5191, 4208, 5164, 4211, 5210, 4237, 5204, 4249, 5243, 4248, 5231, 4254, 5255, 4255, 5255, 4268, 5266, 4253, 5282, 4271, 5277, 4286, 5298, 4277, 5284, 4290, 5298, 4291, 5293, 4306, 5277, 4294, 5281, 4325, 5260, 4300, 5236, 4340, 5256, 4293, 5246, 4288, 5249, 4301, 5235, 4307, 5222, 4276, 5187, 4272, 5197, 4273, 5197, 4253, 5179, 4236, 5195, 4263, 5159, 4269, 5171, 4258, 5160, 4239, 5102, 4232, 5106, 4203, 5101, 4219, 5092, 4198, 5101, 4216, 5089, 4233, 5120, 4242, 5125, 4273, 5111, 4266, 5122, 4296, 5087, 4319, 5091, 4288, 5070, 4275, 5065, 4289, 5054, 4267, 5049, 4281, 5041, 4267, 5043, 4282, 5026, 4277, 5031, 4297, 5013, 4285, 5023, 4312, 5012, 4300, 5017, 4314, 5001, 4319, 4987, 4304, 4982, 4317, 4972, 4309, 4996, 4297, 4991, 4288, 4948, 4273, 4939, 4285, 4912, 4244, 4864, 4246, 4862, 4223, 4846, 4224, 4858, 4201, 4810, 4212, 4813, 4188, 4751, 4205, 4770, 4215, 4769, 4232, 4786, 4231, 4740, 4249, 4582, 4207, 4476, 4226, 4475, 4227, 4459, 4204, 4497, 4154, 4488, 4061, 4524, 3965, 4519, 3935, 4492, 3912, 4500, 3900, 4481, 3881, 4487, 3873, 4467, 3859, 4468, 3822, 4431, 3781, 4426, 3596, 4426, 3583], + "center":[4688, 3984], + "bbox":[4426.055011069621, 3568.2982314605933, 872.2791142400201, 771.7208876645427] + }, + "WA":{ + "shape":[717, 0, 1411, 188, 1428, 192, 1306, 692, 1315, 731, 1304, 745, 1309, 764, 1297, 762, 1037, 696, 1008, 704, 955, 690, 863, 705, 810, 686, 734, 693, 691, 657, 633, 657, 633, 656, 586, 660, 539, 635, 528, 620, 541, 567, 535, 534, 510, 509, 483, 507, 446, 465, 392, 456, 416, 389, 407, 438, 415, 443, 422, 427, 431, 442, 422, 423, 431, 419, 429, 393, 435, 403, 437, 387, 456, 393, 444, 375, 417, 370, 422, 336, 433, 355, 435, 342, 468, 337, 434, 312, 419, 331, 430, 294, 436, 171, 419, 131, 423, 80, 442, 51, 436, 39, 446, 40, 517, 109, 605, 147, 627, 139, 615, 143, 630, 173, 629, 161, 645, 163, 644, 184, 653, 176, 650, 163, 668, 160, 659, 170, 672, 214, 660, 214, 639, 245, 646, 213, 638, 225, 637, 215, 622, 247, 572, 293, 617, 290, 579, 287, 610, 257, 641, 250, 671, 219, 674, 228, 674, 204, 684, 212, 682, 245, 671, 239, 664, 251, 659, 239, 657, 271, 644, 262, 652, 273, 641, 278, 663, 271, 665, 289, 645, 330, 633, 326, 635, 339, 627, 323, 643, 302, 626, 310, 612, 342, 618, 296, 592, 328, 572, 321, 591, 330, 568, 344, 593, 335, 575, 358, 590, 339, 587, 359, 592, 341, 602, 340, 601, 353, 605, 338, 618, 358, 648, 322, 659, 340, 660, 328, 678, 325, 678, 279, 690, 296, 681, 263, 713, 214, 735, 203, 717, 185, 721, 157, 705, 165, 713, 192, 698, 171, 702, 149, 726, 146, 709, 126, 712, 111, 696, 115, 695, 97, 720, 113, 717, 86, 735, 88, 728, 72, 736, 57, 712, 54, 718, 45, 706, 19, 714, 13, 706, 8, 717, 0], + "center":[952, 376], + "bbox":[391.5842598432282, 0.0, 1036.0850727961474, 764.2512207821578] + }, + "CO":{ + "shape":[2214, 1915, 2225, 1917, 2924, 1998, 2937, 1999, 3006, 2005, 3228, 2022, 3215, 2213, 3210, 2296, 3178, 2791, 3134, 2787, 3031, 2779, 3017, 2778, 2182, 2687, 2105, 2676, 2213, 1925, 2214, 1915], + "center":[2749, 2301], + "bbox":[2104.8628776804103, 1915.455020807188, 1122.9312587549507, 875.2906417521679] + }, + "PA":{ + "shape":[6321, 1675, 6417, 1602, 6418, 1601, 6427, 1652, 7046, 1524, 7066, 1546, 7094, 1550, 7103, 1589, 7121, 1609, 7167, 1623, 7166, 1623, 7122, 1706, 7138, 1727, 7125, 1764, 7132, 1786, 7151, 1788, 7157, 1810, 7217, 1848, 7133, 1938, 7132, 1937, 7100, 1940, 7082, 1965, 7050, 1972, 6559, 2073, 6546, 2075, 6394, 2102, 6369, 1959, 6364, 1929, 6321, 1675], + "center":[6777, 1802], + "bbox":[6320.668447791168, 1524.3096158541616, 896.2956547030162, 577.9314409361236] + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/series.json b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/series.json new file mode 100644 index 0000000..7d0b807 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/data/series.json @@ -0,0 +1,20 @@ +{ + "series": [{ + name: "Low sales state(0~$3.0M)", + min: "0.0", + max: "3.0", + color: "#FFCE52" + }, + { + name: "Normal sales state($3.0M~$6.0M)", + min: "3.0", + max: "6.0", + color: "#63A584" + }, + { + name: "High sales state($6.0M~$10.0M)", + min: "6.0", + max: "9.0", + color: "#CE6342" + }] +} diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomin.gif b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomin.gif new file mode 100644 index 0000000..45fc12b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomin.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomin.png b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomin.png new file mode 100644 index 0000000..fed568a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomin.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomout.gif b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomout.gif new file mode 100644 index 0000000..780b747 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomout.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomout.png b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomout.png new file mode 100644 index 0000000..f62af36 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/img/zoomout.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/markers/USStates.json b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/markers/USStates.json new file mode 100644 index 0000000..929dab3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/resources/markers/USStates.json @@ -0,0 +1 @@ +{"AK":"Alaska","AZ":"Arizona","AR":"Arkansas","AL":"Alabama","CA":"California","CO":"Colorado","CT":"Connecticut","DE":"Delaware","FL":"Florida","GA":"Georgia","HI":"Hawaii","ID":"Idaho","IL":"Illinois","IN":"Indiana","IA":"Iowa","KS":"Kansas","KY":"Kentucky","LA":"Louisiana","ME":"Maine","MD":"Maryland","MA":"Massachusetts","MI":"Michigan","MN":"Minnesota","MS":"Mississippi","MO":"Missouri","MT":"Montana","NE":"Nebraska","NV":"Nevada","NH":"New Hampshire","NJ":"New Jersey","NM":"New Mexico","NY":"New York","NC":"North Carolina","ND":"North Dakota","OH":"Ohio","OK":"Oklahoma","OR":"Oregon","PA":"Pennsylvania","RI":"Rhode Island","SC":"South Carolina","SD":"South Dakota","TN":"Tennessee","TX":"Texas","UT":"Utah","VT":"Vermont","VA":"Virginia","WA":"Washington","WV":"West Virginia","WI":"Wisconsin","WY":"Wyoming"} diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/datastore/dataStore.json b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/datastore/dataStore.json new file mode 100644 index 0000000..1fee73a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/datastore/dataStore.json @@ -0,0 +1 @@ +{ "identifier": "State", "label": "State", "items": [{ "State": "RI", "product A": 7.462633468705088, "product B": 2.9470583970267237, "product C": 1.2074466753785296, "product D": 1.2022236908488764, "product E": 5.336555888565814, "product F": 4.805973785497435 }, { "State": "VT", "product A": 1.0747727711335298, "product B": 4.334786112963775, "product C": 6.617436105834342, "product D": 5.601530537934105, "product E": 1.0269790425535916, "product F": 3.9031095011563894 }, { "State": "HI", "product A": 5.799375636164497, "product B": 6.070796173591671, "product C": 4.697509161561487, "product D": 7.98823439187739, "product E": 4.302563298587832, "product F": 3.1854036054807247 }, { "State": "ME", "product A": 1.451271727380056, "product B": 4.336621288458207, "product C": 3.1088686222060367, "product D": 6.576821723390931, "product E": 3.5724702450532466, "product F": 4.053738413897133 }, { "State": "VA", "product A": 2.829702713495596, "product B": 6.20175696720986, "product C": 5.872957606269008, "product D": 7.598424970013759, "product E": 6.831672869287192, "product F": 3.2541882054937004 }, { "State": "MI", "product A": 5.642995600110112, "product B": 6.334154324461775, "product C": 4.024618246561426, "product D": 4.892301292589833, "product E": 5.841692237874203, "product F": 6.916968066150325 }, { "State": "DE", "product A": 2.739617463034918, "product B": 4.792811239106538, "product C": 3.9585379686245434, "product D": 4.706134644397956, "product E": 6.3210708958870025, "product F": 4.062622282541687 }, { "State": "ID", "product A": 2.363980549092777, "product B": 4.389359239090331, "product C": 7.8416585697000425, "product D": 3.2819669253017585, "product E": 3.0898380630073805, "product F": 7.694321141711409 }, { "State": "IA", "product A": 7.431769770088566, "product B": 1.9661184800870801, "product C": 3.489682499727144, "product D": 4.367959478515982, "product E": 4.5199219377280055, "product F": 2.3885853819870526 }, { "State": "MD", "product A": 3.0785135982470684, "product B": 5.756236356602298, "product C": 3.1170657626377682, "product D": 4.1272524998977165, "product E": 7.8181166845833205, "product F": 5.2577028591662796 }, { "State": "MA", "product A": 1.7526041060228308, "product B": 4.012839038832301, "product C": 7.76565599420723, "product D": 6.382656672018984, "product E": 4.019721504084284, "product F": 6.71460109405472 }, { "State": "AR", "product A": 3.8586965961630613, "product B": 2.793633122789072, "product C": 7.603449650746078, "product D": 3.338056333409133, "product E": 6.512583206399277, "product F": 6.133412627807536 }, { "State": "IL", "product A": 4.429268677942292, "product B": 6.135154709428018, "product C": 4.717735592494929, "product D": 1.2728200348383516, "product E": 1.7007627849754259, "product F": 6.12942242973636 }, { "State": "UT", "product A": 1.4132568641617622, "product B": 6.03991623542826, "product C": 1.5803175554277038, "product D": 2.8266674081118937, "product E": 1.0815447688155322, "product F": 3.751551803308776 }, { "State": "IN", "product A": 4.278380121077843, "product B": 5.176274161542879, "product C": 7.643998085959517, "product D": 2.4940612411705545, "product E": 1.787241877286224, "product F": 4.164258613108823 }, { "State": "MN", "product A": 1.7667677604047078, "product B": 5.170425364287389, "product C": 5.356478878366911, "product D": 6.686100127368409, "product E": 7.469892254454771, "product F": 2.4208680122106023 }, { "State": "AZ", "product A": 3.1685622594553893, "product B": 2.1165017165467477, "product C": 3.67461626909839, "product D": 2.5535707741883105, "product E": 7.817360613731682, "product F": 5.0774775275939295 }, { "State": "MO", "product A": 6.40609207972046, "product B": 7.920233551635202, "product C": 4.72922293396299, "product D": 3.7747742199899834, "product E": 3.3997756093386364, "product F": 4.901096158864598 }, { "State": "MT", "product A": 5.036396102947595, "product B": 1.774699183123111, "product C": 2.4435229295517003, "product D": 1.1886214411767826, "product E": 4.224401905364161, "product F": 1.1189525043098927 }, { "State": "MS", "product A": 7.920510625004066, "product B": 1.2888449581107675, "product C": 3.0732051743984057, "product D": 3.455393209276231, "product E": 4.508629658106982, "product F": 5.629751031578719 }, { "State": "NH", "product A": 2.977852992201954, "product B": 7.0217192826995785, "product C": 4.83887817749178, "product D": 3.146077573640159, "product E": 1.2632305524264855, "product F": 4.069556903053635 }, { "State": "NJ", "product A": 2.461430896784907, "product B": 3.5506307229226706, "product C": 6.596657639606401, "product D": 4.916023983933398, "product E": 4.701696505102892, "product F": 1.6249601330285928 }, { "State": "NM", "product A": 3.4306577337265605, "product B": 6.947144396128179, "product C": 1.0802902226979874, "product D": 4.680929334557893, "product E": 5.47647625941286, "product F": 4.080433278299856 }, { "State": "AK", "product A": 6.688941531884205, "product B": 2.7350354314410747, "product C": 4.049974323500716, "product D": 5.1038191963023625, "product E": 3.9152756901086487, "product F": 2.1964811712956833 }, { "State": "TX", "product A": 5.202925634638534, "product B": 7.118848432784549, "product C": 2.278906950168228, "product D": 4.404324898795686, "product E": 3.1576233124749526, "product F": 4.482720292130193 }, { "State": "AL", "product A": 7.692293063159184, "product B": 4.883187571500635, "product C": 2.4415509912432922, "product D": 6.9740316852277955, "product E": 2.2917408066041483, "product F": 6.329134692543736 }, { "State": "NC", "product A": 6.924791303917299, "product B": 7.6167614725529, "product C": 2.7404045633321967, "product D": 4.542900404391572, "product E": 2.0755691993817473, "product F": 4.237923730870627 }, { "State": "ND", "product A": 1.3405635123946729, "product B": 3.4612463164213474, "product C": 6.23201986587007, "product D": 5.255778252522007, "product E": 5.325032727915971, "product F": 7.291443563063384 }, { "State": "NE", "product A": 7.346943668465221, "product B": 7.922420589885434, "product C": 7.093010342038451, "product D": 7.989200540903272, "product E": 2.927511429138325, "product F": 5.722982572330906 }, { "State": "NY", "product A": 1.2935641800689404, "product B": 2.8536865787421837, "product C": 6.399092420250069, "product D": 3.3776231030828607, "product E": 5.657408134539319, "product F": 1.6116565933790064 }, { "State": "GA", "product A": 4.08670296798054, "product B": 5.503458985754056, "product C": 2.9948404421865757, "product D": 5.429773507852569, "product E": 3.294238443754315, "product F": 7.2475665993045 }, { "State": "NV", "product A": 2.8711180855710277, "product B": 2.7692396472696212, "product C": 7.033900428326745, "product D": 7.80606629341678, "product E": 4.940580685415601, "product F": 6.357239913493795 }, { "State": "TN", "product A": 1.3416175015158607, "product B": 4.7805039330413175, "product C": 1.1882280951000983, "product D": 3.5196556629290066, "product E": 4.603374210925091, "product F": 1.4739041520367284 }, { "State": "CA", "product A": 4.015213261575018, "product B": 4.175191074281502, "product C": 6.823138626862854, "product D": 6.913388977328004, "product E": 2.5473065533439243, "product F": 3.0654523114201715 }, { "State": "OK", "product A": 3.02496714656207, "product B": 6.820814993149591, "product C": 3.62394474425563, "product D": 1.950306463065874, "product E": 7.440561470100394, "product F": 2.625502092462915 }, { "State": "OH", "product A": 1.792609232572866, "product B": 2.8984064050213147, "product C": 3.450998704349269, "product D": 1.302371163874461, "product E": 1.697609380742739, "product F": 1.974214187400741 }, { "State": "WY", "product A": 7.608889913812648, "product B": 7.020527487890209, "product C": 4.735236071458369, "product D": 1.7379167849736277, "product E": 2.274061647528429, "product F": 1.1388727636318952 }, { "State": "FL", "product A": 4.368006518751536, "product B": 2.2694006441255095, "product C": 6.416733546730404, "product D": 5.327861664787736, "product E": 7.996199616455465, "product F": 7.275998491430551 }, { "State": "SD", "product A": 7.930294486276574, "product B": 7.152114115436704, "product C": 1.769750409562307, "product D": 5.280011877228484, "product E": 6.922252245680076, "product F": 3.32461508791004 }, { "State": "SC", "product A": 7.957055984959735, "product B": 3.973937476383212, "product C": 4.7879756840987255, "product D": 2.5321366578583206, "product E": 1.9476523802193761, "product F": 4.204106357741368 }, { "State": "CT", "product A": 2.6728763876167614, "product B": 5.636515493115627, "product C": 6.815425126662755, "product D": 5.3144515392679255, "product E": 1.1528556132155998, "product F": 4.488038450352336 }, { "State": "WV", "product A": 4.255780823208815, "product B": 7.059387909024763, "product C": 1.511312413431492, "product D": 4.874888789038608, "product E": 7.191316742246152, "product F": 5.211032258922352 }, { "State": "DC", "product A": 5.395387240579556, "product B": 6.9056205706417835, "product C": 7.322320914179946, "product D": 6.724679387948305, "product E": 6.273644618980395, "product F": 6.126512771236528 }, { "State": "WI", "product A": 4.784326367416636, "product B": 5.6240988021597635, "product C": 4.079106562847658, "product D": 2.621380948788093, "product E": 4.180898503926013, "product F": 1.5226396670937468 }, { "State": "KY", "product A": 3.651129497372101, "product B": 4.140016811323386, "product C": 3.923700373296553, "product D": 7.011165058576961, "product E": 3.182432928256528, "product F": 3.816749617578834 }, { "State": "KS", "product A": 3.0086097641736007, "product B": 7.010403822988033, "product C": 4.838546507701023, "product D": 1.5449902827748572, "product E": 6.5107035581665, "product F": 2.768884723603035 }, { "State": "OR", "product A": 2.115203819157518, "product B": 4.873229897102414, "product C": 6.203180320524466, "product D": 7.768577037173249, "product E": 2.674319719539893, "product F": 3.7605674376303915 }, { "State": "LA", "product A": 3.2780569441206597, "product B": 6.098124121408968, "product C": 7.243185616958894, "product D": 1.8036415082278823, "product E": 4.982553911643511, "product F": 3.380563337159254 }, { "State": "WA", "product A": 3.9923853883717664, "product B": 3.5554133439593727, "product C": 6.106754429610711, "product D": 1.732823409485524, "product E": 6.050769205402196, "product F": 6.936998185455377 }, { "State": "CO", "product A": 5.290220660909711, "product B": 1.937275724779035, "product C": 7.840946973558862, "product D": 4.423444682592455, "product E": 5.719668858432843, "product F": 2.2900916156515403 }, { "State": "PA", "product A": 1.4671113212813398, "product B": 4.75940985758743, "product C": 4.4344721924586725, "product D": 2.18762312089173, "product E": 6.791868818969979, "product F": 5.160881598376808 }]} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_mapWithCharting.html b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_mapWithCharting.html new file mode 100644 index 0000000..c8d015a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_mapWithCharting.html @@ -0,0 +1,114 @@ + + + + Chart: Map&Chart + + + + + + +

                                      Map connect with DataChart(Click on map)

                                      +

                                      Keyboard Tips: Use TAB to focus the map, then use up/down/left/right to go around the map, zoom in by SPACE and zoom out by ESC.

                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_mapWithLegend.html b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_mapWithLegend.html new file mode 100644 index 0000000..4dd7da5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_mapWithLegend.html @@ -0,0 +1,137 @@ + + + + Chart: Map&Legend + + + + + + +

                                      Map with series, data, legend

                                      +

                                      Keyboard Tips: Use TAB to focus the map, then use up/down/left/right to go around the map, zoom in by SPACE and zoom out by ESC.

                                      +
                                      +
                                      + + + + + + + +
                                      + + + + + +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_maps.html b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_maps.html new file mode 100644 index 0000000..dcfeb40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_maps.html @@ -0,0 +1,59 @@ + + + + + + + Simple Maps,support pan and zoom navigation + + + + + + +

                                      Keyboard Tips: Use TAB to focus the map, then use up/down/left/right to go around the map, zoom in by SPACE and zoom out by ESC.

                                      +
                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_widget.html b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_widget.html new file mode 100644 index 0000000..b9243c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/tests/test_widget.html @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      +
                                      + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/widget/Legend.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/widget/Legend.js new file mode 100644 index 0000000..4422caa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/widget/Legend.js @@ -0,0 +1,92 @@ + +define(["dojo/_base/kernel", "dojo/_base/lang","dojo/_base/array", "dojo/_base/declare","dojo/_base/html","dojo/dom", + "dojo/dom-construct","dojo/dom-class", "dojo/_base/window", "dijit/_Widget"], + function(dojo, lang, arr, declare, html,dom,domConstruct,domClass, win, Widget) { + +return declare("dojox.geo.charting.widget.Legend",Widget, { + // summary: + // A legend widget displaying association between colors and Feature value ranges. + // + // description: + // This widget basically is a table comprising (icon,string) pairs, describing the color scheme + // used for the map and its associated text descriptions. + // + + // example: + // | var legend = new dojox.geo.charting.widget.Legend({ + // | map: map + // | }); + horizontal:true, + legendBody:null, + swatchSize:18, + map:null, + postCreate: function(){ + // summary: + // inherited Dijit's postCreate function + // tags: + // protected + if(!this.map){return;} + this.series = this.map.series; + if (!this.domNode.parentNode) { + // compatibility with older version : add to map domNode if not already attached to a parentNode. + dom.byId(this.map.container).appendChild(this.domNode); + } + this.refresh(); + }, + buildRendering: function(){ + // summary: + // Construct the UI for this widget, creates the underlying real dojox.geo.charting.Map object. + // tags: + // protected + this.domNode = domConstruct.create("table", + {role: "group", "class": "dojoxLegendNode"}); + this.legendBody = domConstruct.create("tbody", null, this.domNode); + this.inherited(arguments); + }, + + refresh:function(){ + // summary: + // Refreshes this legend contents when Map series has changed. + // cleanup + while(this.legendBody.lastChild){ + domConstruct.destroy(this.legendBody.lastChild); + } + + if(this.horizontal){ + domClass.add(this.domNode,"dojoxLegendHorizontal"); + this._tr = win.doc.createElement("tr"); + this.legendBody.appendChild(this._tr); + } + + var s = this.series; + if(s.length == 0){return;} + + arr.forEach(s,function(x){ + this._addLabel(x.color, x.name); + },this); + }, + _addLabel:function(color,label){ + var icon = win.doc.createElement("td"); + var text = win.doc.createElement("td"); + var div = win.doc.createElement("div"); + domClass.add(icon, "dojoxLegendIcon"); + domClass.add(text, "dojoxLegendText"); + div.style.width = this.swatchSize + "px"; + div.style.height = this.swatchSize + "px"; + icon.appendChild(div); + + if(this.horizontal){ + this._tr.appendChild(icon); + this._tr.appendChild(text); + }else{ + var tr = win.doc.createElement("tr"); + this.legendBody.appendChild(tr); + tr.appendChild(icon); + tr.appendChild(text); + } + + div.style.background = color; + text.innerHTML = String(label); + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/charting/widget/Map.js b/js/dojo-release-1.7.2-src/dojox/geo/charting/widget/Map.js new file mode 100644 index 0000000..c32d6cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/charting/widget/Map.js @@ -0,0 +1,181 @@ + +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare","dojo/_base/html","dojo/dom-geometry", + "dijit/_Widget","dojox/geo/charting/Map"], + function(dojo, lang, declare, html,domGeom, Widget, Map) { + +return declare("dojox.geo.charting.widget.Map", Widget, { + // summary: + // A map viewer widget based on the dojox.geo.charting.Map component + // + // description: + // The `dojox.geo.charting.widget.Map` widget combines map display together with charting capabilities. + // It encapsulates an `dojox.geo.charting.Map` object on which most operations are delegated. + // Parameters can be passed as argument at construction time to specify map data file (json shape format) + // as well as charting data. + // + // The parameters are : + // + // * `shapeData`: The json object containing map data or the name of the file containing map data. + // * `dataStore`: the dataStore to fetch the charting data from + // * `dataBindingAttribute`: property name of the dataStore items to use as value for charting + // * `markerData`: tooltips to display for map features, handled as json style. + // * `adjustMapCenterOnResize`: if true, the center of the map remains the same when resizing the widget + // * `adjustMapScaleOnResize`: if true, the map scale is adjusted to leave the visible portion of the map identical as much as possible + // + // example: + // + // | var map = new dojox.geo.charting.widget.Map({ + // | shapeData : 'map.json', + // | adjustMapCenterOnresize : true, + // | adjustMapScaleOnresize : true, + // | }); + + shapeData : "", + dataStore : null, + dataBindingAttribute : "", + dataBindingValueFunction: null, + markerData : "", + series : "", + adjustMapCenterOnResize: null, + adjustMapScaleOnResize: null, + animateOnResize: null, + onFeatureClick: null, + onFeatureOver: null, + enableMouseSupport: null, + enableTouchSupport: null, + enableMouseZoom: null, + enableMousePan: null, + enableKeyboardSupport: false, + showTooltips: false, + enableFeatureZoom: null, + colorAnimationDuration: 0, + mouseClickThreshold: 2, + _mouseInteractionSupport:null, + _touchInteractionSupport:null, + _keyboardInteractionSupport:null, + constructor : function(/* Object */options, /* HtmlNode */div){ + // summary: + // Constructs a new Map widget + this.map = null; + }, + + startup : function(){ + this.inherited(arguments); + if (this.map) { + this.map.fitToMapContents(); + } + + }, + + postMixInProperties : function(){ + this.inherited(arguments); + }, + + create : function(/*Object?*/params, /*DomNode|String?*/srcNodeRef){ + this.inherited(arguments); + }, + + getInnerMap: function() { + return this.map; + }, + + + buildRendering : function(){ + // summary: + // Construct the UI for this widget, creates the underlying real dojox.geo.charting.Map object. + // tags: + // protected + this.inherited(arguments); + if (this.shapeData) { + this.map = new Map(this.domNode, this.shapeData); + if (this.markerData && (this.markerData.length > 0)) + this.map.setMarkerData(this.markerData); + + if (this.dataStore) { + if (this.dataBindingValueFunction) { + this.map.setDataBindingValueFunction(this.dataBindingValueFunction); + } + this.map.setDataStore(this.dataStore,this.dataBindingAttribute); + } + + if (this.series && (this.series.length > 0)) { + this.map.addSeries(this.series); + } + + if (this.onFeatureClick) { + this.map.onFeatureClick = this.onFeatureClick; + } + if (this.onFeatureOver) { + this.map.onFeatureOver = this.onFeatureOver; + } + if (this.enableMouseSupport) { + + if (!dojox.geo.charting.MouseInteractionSupport) { + throw Error("Can't find dojox.geo.charting.MouseInteractionSupport. Didn't you forget to dojo" + ".require() it?"); + } + var options = {}; + options.enablePan = this.enableMousePan; + options.enableZoom = this.enableMouseZoom; + options.mouseClickThreshold = this.mouseClickThreshold; + this._mouseInteractionSupport = new dojox.geo.charting.MouseInteractionSupport(this.map,options); + this._mouseInteractionSupport.connect(); + } + + if (this.enableTouchSupport) { + if (!dojox.geo.charting.TouchInteractionSupport) { + throw Error("Can't find dojox.geo.charting.TouchInteractionSupport. Didn't you forget to dojo" + ".require() it?"); + } + this._touchInteractionSupport = new dojox.geo.charting.TouchInteractionSupport(this.map,{}); + this._touchInteractionSupport.connect(); + } + if (this.enableKeyboardSupport) { + if (!dojox.geo.charting.KeyboardInteractionSupport) { + throw Error("Can't find dojox.geo.charting.KeyboardInteractionSupport. Didn't you forget to dojo" + ".require() it?"); + } + this._keyboardInteractionSupport = new dojox.geo.charting.KeyboardInteractionSupport(this.map,{}); + this._keyboardInteractionSupport.connect(); + } + this.map.showTooltips = this.showTooltips; + this.map.enableFeatureZoom = this.enableFeatureZoom; + this.map.colorAnimationDuration = this.colorAnimationDuration; + + + } + }, + + + resize : function(b){ + // summary: + // Resize the widget. + // description: + // Resize the domNode and the widget to the dimensions of a box of the following form: + // `{ l: 50, t: 200, w: 300: h: 150 }` + // box: + // If passed, denotes the new size of the widget. + + var box; + switch (arguments.length) { + case 0: + // case 0, do not resize the div, just the surface + break; + case 1: + // argument, override node box + box = lang.mixin({}, b); + domGeom.getMarginBox(this.domNode, box); + break; + case 2: + // two argument, width, height + box = { + w : arguments[0], + h : arguments[1] + }; + domGeom.getMarginBox(this.domNode, box); + break; + } + + if (this.map) { + this.map.resize(this.adjustMapCenterOnResize,this.adjustMapScaleOnResize,this.animateOnResize); + } + } +}); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Collection.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Collection.js new file mode 100644 index 0000000..b5636e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Collection.js @@ -0,0 +1,27 @@ +define([ "dojo/_base/kernel", "dojo/_base/declare", "dojox/geo/openlayers/Geometry" ], + function(dojo, declare, Geometry) { + /*===== + var Geometry = dojox.geo.openlayers.Geometry; + =====*/ + return declare("dojox.geo.openlayers.Collection", Geometry, { + // summary: + // A collection of geometries. _coordinates_ holds an array of + // geometries. + + setGeometries : function(/* Array */g) { + // summary: + // Sets the geometries + // g: Array + // The array of geometries. + this.coordinates = g; + }, + + // summary: + // Retrieves the geometries. + // returns: Array + // The array of geometries defining this collection. + getGeometries : function() { + return this.coordinates; + } + }); + }); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Feature.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Feature.js new file mode 100644 index 0000000..5d0442e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Feature.js @@ -0,0 +1,78 @@ +define(["dojo/_base/kernel", "dojo/_base/declare", "dojox/geo/openlayers/Map"], function(dojo, declare, Map){ + + return declare("dojox.geo.openlayers.Feature", null, { + // summary: + // A Feature encapsulates an item so that it can be added to a Layer. + // This class is not attended to be used as it, but serve as a base class + // for specific features such as GeometryFeature which can display georeferenced + // geometries and WidgetFeature which can display georeferenced widgets. + constructor : function(){ + // summary: + // Construct a new Feature + this._layer = null; + this._coordSys = dojox.geo.openlayers.EPSG4326; + }, + + getCoordinateSystem : function(){ + // summary: + // Returns the coordinate system in which coordinates of this feature are expressed. + // returns: OpenLayers.Projection + // The coordinate system in which coordinates of this feature are expressed. + return this._coordSys; + }, + + setCoordinateSystem : function(/* OpenLayers.Projection */cs){ + // summary: + // Set the coordinate system in which coordinates of this feature are expressed. + // cs: OpenLayers.Projection + // The coordinate system in which coordinates of this feature are expressed. + this._coordSys = cs; + }, + + getLayer : function(){ + // summary: + // Returns the Layer to which this feature belongs. + // returns: dojox.geo.openlayers.Layer + // The layer to which this feature belongs. + return this._layer; + }, + + _setLayer : function(/* dojox.geo.openlayers.Layer */l){ + // summary: + // Sets the layer to which this Feature belongs + // description: + // Called when the feature is added to the Layer. + // tags: + // private + this._layer = l; + }, + + render : function(){ + // summary: + // subclasses implements drawing specific behavior. + }, + + remove : function(){ + // summary: + // Subclasses implements specific behavior. + // Called when removed from the layer. + }, + + _getLocalXY : function(p){ + // summary: + // From projected coordinates to screen coordinates + // p: Object + // Object with x and y fields + // tags: + // private + var x = p.x; + var y = p.y; + var layer = this.getLayer(); + var resolution = layer.olLayer.map.getResolution(); + var extent = layer.olLayer.getExtent(); + var rx = (x / resolution + (-extent.left / resolution)); + var ry = ((extent.top / resolution) - y / resolution); + return [rx, ry]; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Geometry.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Geometry.js new file mode 100644 index 0000000..ce91409 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Geometry.js @@ -0,0 +1,36 @@ +define(["dojo/_base/kernel", "dojo/_base/declare"], function(dojo, declare){ + + return declare("dojox.geo.openlayers.Geometry", null, { + // summary: + // A Geometry handles description of shapes to be rendered in a GfxLayer + // using a GeometryFeature feature. + // A Geometry can be + // - A point geometry of type dojox.geo.openlayers.Point. Coordinates are a an + // Object {x, y} + // - A line string geometry of type dojox.geo.openlayers.LineString. Coordinates are + // an array of {x, y} objects + // - A collection geometry of type dojox.geo.openlayers.Collection. Coordinates are an array of geometries. + + // summary: + // The coordinates of the geometry. + // coordinates: {x, y} | Array + coordinates : null, + + // summary: + // The associated shape when rendered + // shape : dojox.gfx.Shape + // The shape + // tags: + // internal + shape : null, + + constructor : function(coords){ + // summary: + // Constructs a new geometry + // coords: {x, y} + // Coordinates of the geometry. {x:, y:} object for a point geometry, array of {x:, y:} + // objects for line string geometry, array of geometries for collection geometry. + this.coordinates = coords; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GeometryFeature.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GeometryFeature.js new file mode 100644 index 0000000..f0194a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GeometryFeature.js @@ -0,0 +1,404 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/lang", + "dojox/gfx/matrix", + "dojox/geo/openlayers/Point", + "dojox/geo/openlayers/LineString", + "dojox/geo/openlayers/Collection", + "dojox/geo/openlayers/Feature"], function(dojo, declare, array, lang, matrix, Point, LineString, + Collection, Feature){ + /*===== + var Feature = dojox.geo.openlayers.Feature; + =====*/ + return declare("dojox.geo.openlayers.GeometryFeature", Feature, { + // summary: + // A Feature encapsulating a geometry. + // description: + // This Feature renders a geometry such as a Point or LineString geometry. This Feature + // is responsible for reprojecting the geometry before creating a gfx shape to display it. + // By default the shape created is a circle for a Point geometry and a polyline for a + // LineString geometry. User can change these behavior by overriding the createShape + // method to create the desired shape. + // example: + // | var geom = new dojox.geo.openlayers.Point({x:0, y:0}); + // | var gf = new dojox.geo.openlayers.GeometryFeature(geom); + + constructor : function(/* dojox.geo.openlayers.Geometry */geometry){ + // summary: + // Constructs a GeometryFeature for the specified geometry. + // geometry: OpenLayer.Geometry + // The geometry to render. + this._geometry = geometry; + this._shapeProperties = {}; + this._fill = null; + this._stroke = null; + }, + + _createCollection : function(/* dojox.geo.openlayers.Geometry */g){ + // summary: + // Create collection shape and add it to the viewport. + // tags: + // private + var layer = this.getLayer(); + var s = layer.getSurface(); + var c = this.createShape(s, g); + var vp = layer.getViewport(); + vp.add(c); + return c; + }, + + _getCollectionShape : function(/* dojox.geo.openlayers.Geometry */g){ + // summary: + // Get the collection shape, create it if necessary + // tags: + // private + var s = g.shape; + if (s == null) { + s = this._createCollection(g); + g.shape = s; + } + return s; + }, + + renderCollection : function(/* undefined | dojox.geo.openlayers.Geometry */g){ + // summary: + // Renders a geometry collection. + // g: undefined | dojox.geo.openlayers.Geometry + // The geometry to render. + if (g == undefined) + g = this._geometry; + + s = this._getCollectionShape(g); + var prop = this.getShapeProperties(); + s.setShape(prop); + + array.forEach(g.coordinates, function(item){ + if (item instanceof Point) + this.renderPoint(item); + else if (item instanceof LineString) + this.renderLineString(item); + else if (item instanceof Collection) + this.renderCollection(item); + else + throw new Error(); + }, this); + this._applyStyle(g); + }, + + render : function(/* undefined || dojox.geo.openlayer.Geometry */g){ + // summary: + // Render a geometry. + // Called by the Layer on which the feature is added. + // g: undefined || dojox.geo.openlayer.Geometry + // The geometry to draw + if (g == undefined) + g = this._geometry; + + if (g instanceof Point) + this.renderPoint(g); + else if (g instanceof LineString) + this.renderLineString(g); + else if (g instanceof Collection) + this.renderCollection(g); + else + throw new Error(); + }, + + getShapeProperties : function(){ + // summary: + // Returns the shape properties. + // returns: Object + // The shape properties. + return this._shapeProperties; + }, + + setShapeProperties : function(/* Object */s){ + // summary: + // Sets the shape properties. + // s: Object + // The shape properties to set. + this._shapeProperties = s; + return this; + }, + + createShape : function(/* Surface */s, /* dojox.geo.openlayers.Geometry */g){ + // summary: + // Called when the shape rendering the geometry has to be created. + // This default implementation creates a circle for a point geometry, a polyline for + // a LineString geometry and is recursively called when creating a collection. + // User may replace this method to produce a custom shape. + // s: dojox.gfx.Surface + // The surface on which the method create the shapes. + // g: dojox.geo.openlayers.Geometry + // The reference geometry + // returns: dojox.gfx.Shape + // The resulting shape. + if (!g) + g = this._geometry; + + var shape = null; + if (g instanceof Point) { + shape = s.createCircle(); + } else if (g instanceof LineString) { + shape = s.createPolyline(); + } else if (g instanceof Collection) { + var grp = s.createGroup(); + array.forEach(g.coordinates, function(item){ + var shp = this.createShape(s, item); + grp.add(shp); + }, this); + shape = grp; + } else + throw new Error(); + return shape; + }, + + getShape : function(){ + // summary: + // Retrieves the shape rendering the geometry + // returns: Shape + // The shape used to render the geometry. + var g = this._geometry; + if (!g) + return null; + if (g.shape) + return g.shape; + this.render(); + return g.shape; + }, + + _createPoint : function(/* dojox.geo.openlayer.Geometry */g){ + // summary: + // Create a point shape + // tags: + // private + var layer = this.getLayer(); + var s = layer.getSurface(); + var c = this.createShape(s, g); + var vp = layer.getViewport(); + vp.add(c); + return c; + }, + + _getPointShape : function(/* dojox.geo.openlayers.Geometry */g){ + // summary: + // get the point geometry shape, create it if necessary + // tags: + // private + var s = g.shape; + if (s == null) { + s = this._createPoint(g); + g.shape = s; + } + return s; + }, + + renderPoint : function(/* undefined | dojox.geo.openlayers.Point */g){ + // summary: + // Renders a point geometry. + // g: undefined | dojox.geo.openlayers.Point + // The geometry to render. + if (g == undefined) + g = this._geometry; + var layer = this.getLayer(); + var map = layer.getDojoMap(); + + s = this._getPointShape(g); + var prop = lang.mixin({}, this._defaults.pointShape); + prop = lang.mixin(prop, this.getShapeProperties()); + s.setShape(prop); + + var from = this.getCoordinateSystem(); + var p = map.transform(g.coordinates, from); + + var a = this._getLocalXY(p); + var cx = a[0]; + var cy = a[1]; + var tr = layer.getViewport().getTransform(); + if (tr) + s.setTransform(matrix.translate(cx - tr.dx, cy - tr.dy)); + + this._applyStyle(g); + }, + + _createLineString : function(/* dojox.geo.openlayers.Geometry */g){ + // summary: + // Create polyline shape and add it to the viewport. + // tags: + // private + var layer = this.getLayer(); + var s = layer._surface; + var shape = this.createShape(s, g); + var vp = layer.getViewport(); + vp.add(shape); + g.shape = shape; + return shape; + }, + + _getLineStringShape : function(/* dojox.geo.openlayers.Geometry */g){ + // summary: + // Get the line string geometry shape, create it if necessary + // tags: + // private + var s = g.shape; + if (s == null) { + s = this._createLineString(g); + g.shape = s; + } + return s; + }, + + renderLineString : function(/* undefined | dojox.geo.openlayers.geometry */g){ + // summary: + // Renders a line string geometry. + // g: undefined | dojox.geo.openlayers.Geometry + // The geometry to render. + if (g == undefined) + g = this._geometry; + var layer = this.getLayer(); + var map = layer.getDojoMap(); + var lss = this._getLineStringShape(g); + var from = this.getCoordinateSystem(); + var points = new Array(g.coordinates.length); // ss.getShape().points; + var tr = layer.getViewport().getTransform(); + array.forEach(g.coordinates, function(c, i, array){ + var p = map.transform(c, from); + var a = this._getLocalXY(p); + if (tr) { + a[0] -= tr.dx; + a[1] -= tr.dy; + } + points[i] = { + x : a[0], + y : a[1] + }; + }, this); + var prop = lang.mixin({}, this._defaults.lineStringShape); + prop = lang.mixin(prop, this.getShapeProperties()); + prop = lang.mixin(prop, { + points : points + }); + lss.setShape(prop); + this._applyStyle(g); + }, + + _applyStyle : function(/* Geometry */g){ + // summary: + // Apply the style on the geometry's shape. + // g: dojox.geo.openlayers.Geometry + // The geometry. + // tags: + // private + if (!g || !g.shape) + return; + + var f = this.getFill(); + + var fill; + if (!f || lang.isString(f) || lang.isArray(f)) + fill = f; + else { + fill = lang.mixin({}, this._defaults.fill); + fill = lang.mixin(fill, f); + } + + var s = this.getStroke(); + var stroke; + if (!s || lang.isString(s) || lang.isArray(s)) + stroke = s; + else { + stroke = lang.mixin({}, this._defaults.stroke); + stroke = lang.mixin(stroke, s); + } + + this._applyRecusiveStyle(g, stroke, fill); + }, + + _applyRecusiveStyle : function(g, stroke, fill){ + // summary: + // Apply the style on the geometry's shape recursively. + // g: dojox.geo.openlayers.Geometry + // The geometry. + // stroke: Object + // The stroke + // fill:Object + // The fill + // tags: + // private + var shp = g.shape; + + if (shp.setFill) + shp.setFill(fill); + + if (shp.setStroke) + shp.setStroke(stroke); + + if (g instanceof Collection) { + array.forEach(g.coordinates, function(i){ + this._applyRecusiveStyle(i, stroke, fill); + }, this); + } + }, + + setStroke : function(/* Object */s){ + // summary: + // Set the stroke style to be applied on the rendered shape. + // s: Object + // The stroke style + this._stroke = s; + return this; + }, + + getStroke : function(){ + // summary: + // Retrieves the stroke style + // returns: Object + // The stroke style + return this._stroke; + }, + + setFill : function(/* Object */f){ + // summary: + // Set the fill style to be applied on the rendered shape. + // f: Object + // The fill style + this._fill = f; + return this; + }, + + getFill : function(){ + // summary: + // Retrieves the fill style + // returns: Object + // The fill style + return this._fill; + }, + + remove : function(){ + // summary: + // Removes the shape from the Surface. + // Called when the feature is removed from the layer. + var g = this._geometry; + var shp = g.shape; + g.shape = null; + if (shp) + shp.removeShape(); + if (g instanceof Collection) { + array.forEach(g.coordinates, function(i){ + this.remove(i); + }, this); + } + }, + + _defaults : { + fill : null, + stroke : null, + pointShape : { + r : 30 + }, + lineStringShape : null + } + + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GfxLayer.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GfxLayer.js new file mode 100644 index 0000000..6cb503e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GfxLayer.js @@ -0,0 +1,141 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/connect", + "dojo/_base/html", + "dojox/gfx", + "dojox/gfx/_base", + "dojox/gfx/shape", + "dojox/gfx/path", + "dojox/gfx/matrix", + "dojox/geo/openlayers/Feature", + "dojox/geo/openlayers/Layer"], function(dojo, declare, connect, html, gfx, gbase, shape, + path, matrix, Feature, Layer){ + /*===== + var Layer = dojox.geo.openlayers.Layer; + =====*/ + return declare("dojox.geo.openlayers.GfxLayer", Layer, { + // summary: + // A layer dedicated to render dojox.geo.openlayers.GeometryFeature + // description: + // A layer class for rendering geometries as dojox.gfx.Shape objects. + // This layer class accepts Features which encapsulates graphic objects to be added to the map. + // All objects should be added to this group. + // tags: + // private + _viewport : null, + + constructor : function(name, options){ + // summary: + // Constructs a new GFX layer. + var s = dojox.gfx.createSurface(this.olLayer.div, 100, 100); + this._surface = s; + var vp; + if (options && options.viewport) + vp = options.viewport; + else + vp = s.createGroup(); + this.setViewport(vp); + dojo.connect(this.olLayer, "onMapResize", this, "onMapResize"); + this.olLayer.getDataExtent = this.getDataExtent; + }, + + getViewport : function(){ + // summary: + // Gets the viewport + // tags: + // internal + return this._viewport; + }, + + setViewport : function(g){ + // summary: + // Sets the viewport + // g: dojox.gfx.Group + // tags: + // internal + if (this._viewport) + this._viewport.removeShape(); + this._viewport = g; + this._surface.add(g); + }, + + onMapResize : function(){ + // summary: + // Called when map is resized. + // tag: + // protected + this._surfaceSize(); + }, + + setMap : function(map){ + // summary: + // Sets the map for this layer. + // tag: + // protected + this.inherited(arguments); + this._surfaceSize(); + }, + + getDataExtent : function(){ + // summary: + // Get data extent + // tags: + // private + var ret = this._surface.getDimensions(); + return ret; + }, + + getSurface : function(){ + // summary: + // Get the underlying dojox.gfx.Surface + // returns: dojox.gfx.Surface + // The dojox.gfx.Surface this layer uses to draw its GFX rendering. + return this._surface; + }, + + _surfaceSize : function(){ + // summary: + // Recomputes the surface size when being resized. + // tags: + // private + var s = this.olLayer.map.getSize(); + this._surface.setDimensions(s.w, s.h); + }, + + moveTo : function(event){ + // summary: + // Called when this layer is moved or zoommed. + // event: + // The event + var s = dojo.style(this.olLayer.map.layerContainerDiv); + var left = parseInt(s.left); + var top = parseInt(s.top); + + if (event.zoomChanged || left || top) { + var d = this.olLayer.div; + + dojo.style(d, { + left : -left + "px", + top : -top + "px" + }); + + if (this._features == null) + return; + var vp = this.getViewport(); + + vp.setTransform(matrix.translate(left, top)); + + this.inherited(arguments); + + } + }, + + added : function(){ + // summary: + // Called when added to a map. + this.inherited(arguments); + this._surfaceSize(); + } + + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GreatCircle.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GreatCircle.js new file mode 100644 index 0000000..6d25bc8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/GreatCircle.js @@ -0,0 +1,121 @@ +define(["dojo/_base/lang", + "dojox/geo/openlayers/GeometryFeature", + "dojox/geo/openlayers/Point", + "dojox/geo/openlayers/LineString"], function(lang, GeometryFeature, Point, lineString){ + + lang.getObject("geo.openlayers", true, dojox); + + dojox.geo.openlayers.GreatCircle = { + + toPointArray : function(p1, p2, increment){ + // summary: + // Create a geodetic line as an array of OpenLayers.Point. + // descritpion: + // Create a geodetic line as an array of OpenLayers.Point between the point p1 + // and the point p2. Result is a polyline approximation for which a new point is + // calculated every increment degrees. + // p1: Point + // The first point of the geodetic line. x and y fields are longitude and + // latitude in decimal degrees. + // p2: Point + // The second point of the geodetic line. x and y fields are longitude and + // latitude in decimal degrees. + // increment: Float + // The value at which a new point is computed. + var startLon = p1.x; + var endLon = p2.x; + var sl = Math.min(startLon, endLon); + var el = Math.max(startLon, endLon); + + var d2r = this.DEG2RAD; + var lat1 = p1.y * d2r; + var lon1 = p1.x * d2r; + var lat2 = p2.y * d2r; + var lon2 = p2.x * d2r; + + if (Math.abs(lon1 - lon2) <= this.TOLERANCE) { + var l = Math.min(lon1, lon2); + lon2 = l + Math.PI; + } + + if (Math.abs(lon2 - lon1) == Math.PI) { + if (lat1 + lat2 == 0.0) { + lat2 += Math.PI / 180000000; + } + } + + var lon = sl * d2r; + var elon = el * d2r; + var incr = increment * d2r; + var wp = []; + var k = 0; + var r2d = this.RAD2DEG; + + while (lon <= elon) { + lat = Math.atan((Math.sin(lat1) * Math.cos(lat2) * Math.sin(lon - lon2) - Math.sin(lat2) * Math.cos(lat1) + * Math.sin(lon - lon1)) + / (Math.cos(lat1) * Math.cos(lat2) * Math.sin(lon1 - lon2))); + var p = { + x : lon * r2d, + y : lat * r2d + }; + wp[k++] = p; + if (lon < elon && (lon + incr) >= elon) + lon = elon; + else + lon = lon + incr; + } + return wp; + }, + + toLineString : function(p1, p2, increment){ + // summary: + // Create a geodetic line as an array of OpenLayers.Geometry.LineString. + // descritpion: + // Create a geodetic line as a OpenLayers.Geometry.LineString between the point p1 + // and the point p2. Result is a polyline approximation for which a new point is + // calculated every increment degrees. + // p1: Point + // The first point of the geodetic line. x and y fields are longitude and + // latitude in decimal degrees. + // p2: Point + // The second point of the geodetic line. x and y fields are longitude and + // latitude in decimal degrees. + // increment: Float + // The value at which a new point is computed. + var wp = this.toPointArray(p1, p2, increment); + var ls = new OpenLayers.Geometry.LineString(wp); + return ls; + }, + + toGeometryFeature : function(p1, p2, increment){ + // summary: + // Create a geodetic line as an array of dojox.geo.openlayers.GeometryFeature. + // description: + // Create a geodetic line as a dojox.geo.openlayers.GeometryFeature between the point p1 + // ant the point p2. Result is a polyline approximation for which a new point is + // calculated every increment degrees. + // p1: Point + // The first point of the geodetic line. x and y fields are longitude and + // latitude in decimal degrees. + // p2: Point + // The second point of the geodetic line. x and y fields are longitude and + // latitude in decimal degrees. + // increment: Float + // The value at which a new point is computed. + // returns: GeometryFeature + // The geodetic line as a GeometryFeature + + var ls = this.toLineString(p1, p2, increment); + return new GeometryFeature(ls); + }, + + DEG2RAD : Math.PI / 180, + + RAD2DEG : 180 / Math.PI, + + TOLERANCE : 0.00001 + }; + + return dojox.geo.openlayers.GreatCircle; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/JsonImport.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/JsonImport.js new file mode 100644 index 0000000..35bbbd3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/JsonImport.js @@ -0,0 +1,150 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/xhr", + "dojo/_base/lang", + "dojo/_base/array", + "dojox/geo/openlayers/LineString", + "dojox/geo/openlayers/Collection", + "dojo/data/ItemFileReadStore", + "dojox/geo/openlayers/GeometryFeature"], function(dojo, declare, xhr, lang, array, LineString, Collection, + ItemFileReadStore, GeometryFeature){ + + return declare("dojox.geo.openlayers.JsonImport", null, { + // summary: + // Class to load JSON formated ShapeFile as output of the JSon Custom Map Converter. + // description: + // This class loads JSON formated ShapeFile produced by the JSon Custom Map Converter. + // When loading the JSON file, it calls a iterator function each time a feature is read. + // This iterator function is provided as parameter to the constructor. + // + constructor : function(/* Object */params){ + // summary: + // Construct a new JSON importer. + // description: + // Construct a new JSON importer with the specified parameters. These parameters are + // passed through an Object and include: + //
                                        + //
                                      • url : url
                                      • The url pointing to the JSON file to load. + //
                                      • nextFeature : function
                                      • The function called each time a feature is read. + // The function is called with a GeometryFeature as argument. + //
                                      • error : function
                                      • Error function called if something goes wrong. + //
                                      + this._params = params; + }, + + loadData : function(){ + // summary: + // Triggers the loading. + var p = this._params; + xhr.get({ + url : p.url, + handleAs : "json", + sync : true, + load : lang.hitch(this, this._gotData), + error : lang.hitch(this, this._loadError) + }); + }, + + _gotData : function(/* Object */items){ + // summary: + // Called when loading is complete. + // tags: + // private + var nf = this._params.nextFeature; + if (!lang.isFunction(nf)) + return; + + var extent = items.layerExtent; + var ulx = extent[0]; + var uly = extent[1]; + var lrx = ulx + extent[2]; + var lry = uly + extent[3]; + + var extentLL = items.layerExtentLL; + var x1 = extentLL[0]; + var y1 = extentLL[1]; + var x2 = x1 + extentLL[2]; + var y2 = y1 + extentLL[3]; + + var ulxLL = x1; + var ulyLL = y2; + var lrxLL = x2; + var lryLL = y1; + + var features = items.features; + + for ( var f in features) { + var o = features[f]; + var s = o["shape"]; + var gf = null; + if (lang.isArray(s[0])) { + + var a = new Array(); + array.forEach(s, function(item){ + var ls = this._makeGeometry(item, ulx, uly, lrx, lry, ulxLL, ulyLL, lrxLL, lryLL); + a.push(ls); + }, this); + var g = new Collection(a); + gf = new GeometryFeature(g); + nf.call(this, gf); + + } else { + gf = this._makeFeature(s, ulx, uly, lrx, lry, ulxLL, ulyLL, lrxLL, lryLL); + nf.call(this, gf); + } + } + var complete = this._params.complete; + if (lang.isFunction(complete)) + complete.call(this, complete); + }, + + _makeGeometry : function(/* Array */s, /* Float */ulx, /* Float */uly, /* Float */lrx, /* Float */ + lry, /* Float */ulxLL, /* Float */ulyLL, /* Float */lrxLL, /* Float */lryLL){ + // summary: + // Make a geometry with the specified points. + // tags: + // private + var a = []; + var k = 0.0; + for ( var i = 0; i < s.length - 1; i += 2) { + var x = s[i]; + var y = s[i + 1]; + + k = (x - ulx) / (lrx - ulx); + var px = k * (lrxLL - ulxLL) + ulxLL; + + k = (y - uly) / (lry - uly); + var py = k * (lryLL - ulyLL) + ulyLL; + + a.push({ + x : px, + y : py + }); + + } + var ls = new LineString(a); + return ls; + }, + + _makeFeature : function(/* Array */s, /* Float */ulx, /* Float */uly, /* Float */lrx, /* Float */ + lry, /* Float */ulxLL, /* Float */ulyLL, /* Float */lrxLL, /* Float */lryLL){ + // summary: + // Make a GeometryFeature with the specified points. + // tags: + // private + var ls = this._makeGeometry(s, ulx, uly, lrx, lry, ulxLL, ulyLL, lrxLL, lryLL); + var gf = new GeometryFeature(ls); + return gf; + }, + + _loadError : function(){ + // summary: + // Called when an error occurs. Calls the error function is provided in the parameters. + // tags: + // private + var f = this._params.error; + if (lang.isFunction(f)) + f.apply(this, parameters); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Layer.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Layer.js new file mode 100644 index 0000000..f3cdf1f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Layer.js @@ -0,0 +1,163 @@ +define(["dojo/_base/kernel", "dojo/_base/declare", "dojo/_base/lang", "dojo/_base/array", "dojo/_base/sniff"], + function(dojo, declare, lang, array, sniff){ + + return declare("dojox.geo.openlayers.Layer", null, { + // summary: + // Base layer class for dojox.geo.openlayers.Map specific layers extending OpenLayers.Layer class. + // This layer class accepts Features which encapsulates graphic objects to be added to the map. + // This layer class encapsulates an OpenLayers.Layer. + // This class provides Feature management such as add, remove and feature access. + constructor : function(name, options){ + // summary: + // Constructs a new Layer. + // name: String + // The name of the layer. + // options: Object + // Options passed to the underlying OpenLayers.Layer object. + + var ol = options ? options.olLayer : null; + + if (!ol) + ol = lang.delegate(new OpenLayers.Layer(name, options)); + + this.olLayer = ol; + this._features = null; + this.olLayer.events.register("moveend", this, lang.hitch(this, this.moveTo)); + }, + + renderFeature : function(/* Feature */f){ + // summary: + // Called when rendering a feature is necessary. + // f : Feature + // The feature to draw. + f.render(); + }, + + getDojoMap : function(){ + return this.dojoMap; + }, + + addFeature : function(/* Feature | Array */f){ + // summary: + // Add a feature or an array of features to the layer. + // f : Feature or Array + // The Feature or array of features to add. + if (lang.isArray(f)) { + array.forEach(f, function(item){ + this.addFeature(item); + }, this); + return; + } + if (this._features == null) + this._features = []; + this._features.push(f); + f._setLayer(this); + }, + + removeFeature : function(/* Feature | Array */f){ + // summary : + // Removes a feature or an array of features from the layer. + // f : Feature or Array + // The Feature or array of features to remove. + var ft = this._features; + if (ft == null) + return; + if (f instanceof Array) { + f = f.slice(0); + array.forEach(f, function(item){ + this.removeFeature(item); + }, this); + return; + } + var i = array.indexOf(ft, f); + if (i != -1) + ft.splice(i, 1); + f._setLayer(null); + f.remove(); + }, + + removeFeatureAt : function(index){ + // summary: + // Remove the feature at the specified index. + // description: + // Remove the feature at the specified index. + // index: Number + // The index of the feature to remove. + var ft = this._features; + var f = ft[index]; + if (!f) + return; + ft.splice(index, 1); + f._setLayer(null); + f.remove(); + }, + + getFeatures : function(){ + // summary: + // Retrieves the feature hold by this layer. + // returns: Array + // The untouched array of features hold by this layer. + return this._features; + }, + + getFeatureAt : function(i){ + // summary: + // Returns the i-th feature of this layer. + // i : int + // The index of the feature to return. + // returns : ibm_maps.maps.Layer + // The i-th feature of this layer. + if (this._features == null) + return undefined; + return this._features[i]; + }, + + getFeatureCount : function(){ + // summary: + // Returns the number of the features contained by this layer. + // returns: int + // The number of the features contained by this layer. + if (this._features == null) + return 0; + return this._features.length; + }, + + clear : function(){ + // summary: + // Removes all the features from this layer. + var fa = this.getFeatures(); + this.removeFeature(fa); + }, + + moveTo : function(event){ + // summary: + // Called when the layer is panned or zoomed. + // event: Object + // The event + if (event.zoomChanged) { + if (this._features == null) + return; + array.forEach(this._features, function(f){ + this.renderFeature(f); + }, this); + } + }, + + redraw : function(){ + // summary: + // Redraws this layer + if (sniff.isIE) + setTimeout(lang.hitch(this, function(){ + this.olLayer.redraw(); + }, 0)); + else + this.olLayer.redraw(); + }, + + added : function(){ + // summary: + // Called when the layer is added to the map + } + + }); + }); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/LineString.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/LineString.js new file mode 100644 index 0000000..17cb285 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/LineString.js @@ -0,0 +1,27 @@ +define(["dojo/_base/kernel", "dojo/_base/declare", "dojox/geo/openlayers/Geometry"], function(dojo, declare, + /* ===== + var Geometry = dojox.geo.openlayers.Geometry; + =====*/ Geometry){ + return declare("dojox.geo.openlayers.LineString", Geometry, { + // summary: + // The `dojox.geo.openlayers.LineString` geometry. This geometry holds an array + // of coordinates. + + setPoints : function(p){ + // summary: + // Sets the points for this geometry. + // p : Array + // An array of {x, y} objects + this.coordinates = p; + }, + + getPoints : function(){ + // summary: + // Gets the points of this geometry. + // returns: Array + // The points of this geometry. + return this.coordinates; + } + + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Map.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Map.js new file mode 100644 index 0000000..a614a76 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Map.js @@ -0,0 +1,591 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/json", + "dojo/_base/html", + "dojox/main", + "dojox/geo/openlayers/TouchInteractionSupport", + "dojox/geo/openlayers/Layer", + "dojox/geo/openlayers/Patch"], function(dojo, declare, lang, array, json, html, dojox, TouchInteractionSupport, + Layer, Patch){ + + dojo.experimental("dojox.geo.openlayers.Map"); + + lang.getObject("geo.openlayers", true, dojox); + + dojox.geo.openlayers.BaseLayerType = { + // summary: + // Defines the base layer types to be used at Map construction time or + // with the setBaseLayerType function. + // description: + // This object defines the base layer types to be used at Map construction + // time or with the setBaseLayerType function. + // OSM: String + // The Open Street Map base layer type selector. + OSM : "OSM", + // WMS: String + // The Web Map Server base layer type selector. + WMS : "WMS", + // GOOGLE: String + // The Google base layer type selector. + GOOGLE : "Google", + // VIRTUAL_EARTH: String + // The Virtual Earth base layer type selector. + VIRTUAL_EARTH : "VirtualEarth", + // BING: String + // Same as Virtual Earth + BING : "VirtualEarth", + // YAHOO: String + // The Yahoo base layer type selector. + YAHOO : "Yahoo", + // ARCGIS: String + // The ESRI ARCGis base layer selector. + ARCGIS : "ArcGIS" + }; + + dojox.geo.openlayers.EPSG4326 = new OpenLayers.Projection("EPSG:4326"); + + var re = /^\s*(\d{1,3})[D°]\s*(\d{1,2})[M']\s*(\d{1,2}\.?\d*)\s*(S|"|'')\s*([NSEWnsew]{0,1})\s*$/i; + dojox.geo.openlayers.parseDMS = function(v, toDecimal){ + // summary: + // Parses the specified string and returns degree minute second or decimal degree. + // description: + // Parses the specified string and returns degree minute second or decimal degree. + // v: String + // The string to parse + // toDecimal: Boolean + // Specifies if the result should be returned in decimal degrees or in an array + // containg the degrees, minutes, seconds values. + // returns: Float | Array + // the parsed value in decimal degrees or an array containing the degrees, minutes, seconds values. + + var res = re.exec(v); + if (res == null || res.length < 5) + return parseFloat(v); + var d = parseFloat(res[1]); + var m = parseFloat(res[2]); + var s = parseFloat(res[3]); + var nsew = res[5]; + if (toDecimal) { + var lc = nsew.toLowerCase(); + var dd = d + (m + s / 60.0) / 60.0; + if (lc == "w" || lc == "s") + dd = -dd; + return dd; + } + return [d, m, s, nsew]; + }; + + Patch.patchGFX(); + + return declare("dojox.geo.openlayers.Map", null, { + // summary: + // A map viewer based on the OpenLayers library. + // + // description: + // The `dojox.geo.openlayers.Map` object allows to view maps from various map providers. + // It encapsulates an `OpenLayers.Map` object on which most operations are delegated. + // GFX layers can be added to display GFX georeferenced shapes as well as Dojo widgets. + // Parameters can be passed as argument at construction time to define the base layer + // type and the base layer parameters such as url or options depending on the type + // specified. These parameters can be any of : + //
                                      + // _baseLayerType_: type of the base layer. Can be any of + // + // * `dojox.geo.openlayers.BaseLayerType.OSM`: Open Street Map base layer + // * `dojox.geo.openlayers.BaseLayerType.WMS`: Web Map Service layer + // * `dojox.geo.openlayers.BaseLayerType.GOOGLE`: Google layer + // * `dojox.geo.openlayers.BaseLayerType.VIRTUAL_EARTH`: Virtual Earth layer + // * `dojox.geo.openlayers.BaseLayerType.BING`: Bing layer + // * `dojox.geo.openlayers.BaseLayerType.YAHOO`: Yahoo layer + // * `dojox.geo.openlayers.BaseLayerType.ARCGIS`: ESRI ArgGIS layer + // + // Note that access to commercial server such as Google, Virtual Earth or Yahoo may need specific licencing. + // + // The parameters value also include : + // + // * `baseLayerName`: The name of the base layer. + // * `baseLayerUrl`: Some layer may need an url such as Web Map Server + // * `baseLayerOptions`: Addtional specific options passed to OpensLayers layer, + // such as The list of layer to display, for Web Map Server layer. + // + // example: + // + // | var map = new dojox.geo.openlayers.widget.Map(div, { + // | baseLayerType : dojox.geo.openlayers.BaseLayerType.OSM, + // | baseLayerName : 'Open Street Map Layer' + // | }); + + // summary: + // The underlying OpenLayers.Map object. + // Should be accessed on read mode only. + olMap : null, + + _tp : null, + + constructor : function(div, options){ + // summary: + // Constructs a new Map object + if (!options) + options = {}; + + div = html.byId(div); + + this._tp = { + x : 0, + y : 0 + }; + + var opts = options.openLayersMapOptions; + + if (!opts) { + opts = { + controls : [new OpenLayers.Control.ScaleLine({ + maxWidth : 200 + }), new OpenLayers.Control.Navigation()] + }; + } + if (options.accessible) { + var kbd = new OpenLayers.Control.KeyboardDefaults(); + if (!opts.controls) + opts.controls = []; + opts.controls.push(kbd); + } + var baseLayerType = options.baseLayerType; + if (!baseLayerType) + baseLayerType = dojox.geo.openlayers.BaseLayerType.OSM; + + html.style(div, { + width : "100%", + height : "100%", + dir : "ltr" + }); + + var map = new OpenLayers.Map(div, opts); + this.olMap = map; + + this._layerDictionary = { + olLayers : [], + layers : [] + }; + + if (options.touchHandler) + this._touchControl = new TouchInteractionSupport(map); + + var base = this._createBaseLayer(options); + this.addLayer(base); + + this.initialFit(options); + }, + + initialFit : function(params){ + var o = params.initialLocation; + if (!o) + o = [-160, 70, 160, -70]; + this.fitTo(o); + }, + + setBaseLayerType : function( + /* dojox.geo.openlayers.Map.BaseLayerType */type){ + // summary: + // Set the base layer type, replacing the existing base layer + // type: dojox.geo.openlayers.BaseLayerType + // base layer type + // returns: OpenLayers.Layer + // The newly created layer. + if (type == this.baseLayerType) + return null; + + var o = null; + if (typeof type == "string") { + o = { + baseLayerName : type, + baseLayerType : type + }; + this.baseLayerType = type; + } else if (typeof type == "object") { + o = type; + this.baseLayerType = o.baseLayerType; + } + var bl = null; + if (o != null) { + bl = this._createBaseLayer(o); + if (bl != null) { + var olm = this.olMap; + var ob = olm.getZoom(); + var oc = olm.getCenter(); + var recenter = !!oc && !!olm.baseLayer && !!olm.baseLayer.map; + + if (recenter) { + var proj = olm.getProjectionObject(); + if (proj != null) + oc = oc.transform(proj, dojox.geo.openlayers.EPSG4326); + } + var old = olm.baseLayer; + if (old != null) { + var l = this._getLayer(old); + this.removeLayer(l); + } + if (bl != null) + this.addLayer(bl); + if (recenter) { + proj = olm.getProjectionObject(); + if (proj != null) + oc = oc.transform(dojox.geo.openlayers.EPSG4326, proj); + olm.setCenter(oc, ob); + } + } + } + return bl; + }, + + getBaseLayerType : function(){ + // summary: + // Retrieves the base layer type. + // returns: dojox.geo.openlayers.BaseLayerType + // The current base layer type. + return this.baseLayerType; + }, + + getScale : function(geodesic){ + // summary: + // Returns the current scale + // geodesic: Boolean + // Tell if geodesic calculation should be performed. If set to + // true, the scale will be calculated based on the horizontal size of the + // pixel in the center of the map viewport. + // returns: Number + // The current scale. + var scale; + var om = this.olMap; + if (geodesic) { + var units = om.getUnits(); + if (!units) { + return null; + } + var inches = OpenLayers.INCHES_PER_UNIT; + scale = (om.getGeodesicPixelSize().w || 0.000001) * inches["km"] * OpenLayers.DOTS_PER_INCH; + } else { + scale = om.getScale(); + } + return scale; + }, + + getOLMap : function(){ + // summary: + // gets the underlying OpenLayers map object. + // returns : OpenLayers.Map + // The underlying OpenLayers map object. + return this.olMap; + }, + + _createBaseLayer : function(params){ + // summary: + // Creates the base layer. + // tags: + // private + var base = null; + var type = params.baseLayerType; + var url = params.baseLayerUrl; + var name = params.baseLayerName; + var options = params.baseLayerOptions; + + if (!name) + name = type; + if (!options) + options = {}; + switch (type) { + case dojox.geo.openlayers.BaseLayerType.OSM: + options.transitionEffect = "resize"; + // base = new OpenLayers.Layer.OSM(name, url, options); + base = new Layer(name, { + olLayer : new OpenLayers.Layer.OSM(name, url, options) + }); + break; + case dojox.geo.openlayers.BaseLayerType.WMS: + if (!url) { + url = "http://labs.metacarta.com/wms/vmap0"; + if (!options.layers) + options.layers = "basic"; + } + base = new Layer(name, { + olLayer : new OpenLayers.Layer.WMS(name, url, options, { + transitionEffect : "resize" + }) + }); + break; + case dojox.geo.openlayers.BaseLayerType.GOOGLE: + base = new Layer(name, { + olLayer : new OpenLayers.Layer.Google(name, options) + }); + break; + case dojox.geo.openlayers.BaseLayerType.VIRTUAL_EARTH: + base = new Layer(name, { + olLayer : new OpenLayers.Layer.VirtualEarth(name, options) + }); + break; + case dojox.geo.openlayers.BaseLayerType.YAHOO: + // base = new OpenLayers.Layer.Yahoo(name); + base = new Layer(name, { + olLayer : new OpenLayers.Layer.Yahoo(name, options) + }); + break; + case dojox.geo.openlayers.BaseLayerType.ARCGIS: + if (!url) + url = "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer/export"; + base = new Layer(name, { + olLayer : new OpenLayers.Layer.ArcGIS93Rest(name, url, options, {}) + }); + + break; + } + + if (base == null) { + if (type instanceof OpenLayers.Layer) + base = type; + else { + options.transitionEffect = "resize"; + base = new Layer(name, { + olLayer : new OpenLayers.Layer.OSM(name, url, options) + }); + this.baseLayerType = dojox.geo.openlayers.BaseLayerType.OSM; + } + } + + return base; + }, + + removeLayer : function(/* dojox.geo.openlayers.Layer */layer){ + // summary: + // Remove the specified layer from the map. + // layer: dojox.geo.openlayers.Layer + // The layer to remove from the map. + var om = this.olMap; + var i = array.indexOf(this._layerDictionary.layers, layer); + if (i > 0) + this._layerDictionary.layers.splice(i, 1); + var oll = layer.olLayer; + var j = array.indexOf(this._layerDictionary.olLayers, oll); + if (j > 0) + this._layerDictionary.olLayers.splice(i, j); + om.removeLayer(oll, false); + }, + + layerIndex : function(/* dojox.geo.openlayers.Layer */layer, index){ + // summary: + // Set or retrieve the layer index. + // description: + // Set or get the layer index, that is the z-order of the layer. + // if the index parameter is provided, the layer index is set to + // this value. If the index parameter is not provided, the index of + // the layer is returned. + // index: undefined | int + // index of the layer + // returns: int + // the index of the layer. + var olm = this.olMap; + if (!index) + return olm.getLayerIndex(layer.olLayer); + //olm.raiseLayer(layer.olLayer, index); + olm.setLayerIndex(layer.olLayer, index); + + this._layerDictionary.layers.sort(function(l1, l2){ + return olm.getLayerIndex(l1.olLayer) - olm.getLayerIndex(l2.olLayer); + }); + this._layerDictionary.olLayers.sort(function(l1, l2){ + return olm.getLayerIndex(l1) - olm.getLayerIndex(l2); + }); + + return index; + }, + + addLayer : function(/* dojox.geo.openlayers.Layer */layer){ + // summary: + // Add the specified layer to the map. + // layer: dojox.geo.openlayer.Layer + // The layer to add to the map. + layer.dojoMap = this; + var om = this.olMap; + var ol = layer.olLayer; + this._layerDictionary.olLayers.push(ol); + this._layerDictionary.layers.push(layer); + om.addLayer(ol); + layer.added(); + }, + + _getLayer : function(/*OpenLayer.Layer */ol){ + // summary: + // Retrieve the dojox.geo.openlayer.Layer from the OpenLayer.Layer + // tags: + // private + var i = array.indexOf(this._layerDictionary.olLayers, ol); + if (i != -1) + return this._layerDictionary.layers[i]; + return null; + }, + + getLayer : function(property, value){ + // summary: + // Returns the layer whose property matches the value. + // property: String + // The property to check + // value: Object + // The value to match + // returns: dojox.geo.openlayer.Layer | Array + // The layer(s) matching the property's value. Since multiple layers + // match the property's value the return value is an array. + // example: + // var layers = map.getLayer("name", "Layer Name"); + var om = this.olMap; + var ols = om.getBy("layers", property, value); + var ret = new Array(); //[]; + array.forEach(ols, function(ol){ + ret.push(this._getLayer(ol)); + }, this); + return ret; + }, + + getLayerCount : function(){ + // summary: + // Returns the count of layers of this map. + // returns: int + // The number of layers of this map. + var om = this.olMap; + if (om.layers == null) + return 0; + return om.layers.length; + }, + + fitTo : function(o){ + // summary: + // Fits the map on a point,or an area + // description: + // Fits the map on the point or extent specified as parameter. + // o: Object + // Object with key values fit parameters or a JSON string. + // example: + // Examples of arguments passed to the fitTo function : + // | null + // The map is fit on full extent + // + // | { + // | bounds : [ulx, uly, lrx, lry] + // | } + // The map is fit on the specified bounds expressed as decimal degrees latitude and longitude. + // The bounds are defined with their upper left and lower right corners coordinates. + // + // | { + // | position : [longitude, latitude], + // | extent : degrees + // | } + // The map is fit on the specified position showing the extent around + // the specified center position. + + var map = this.olMap; + var from = dojox.geo.openlayers.EPSG4326; + + if (o == null) { + var c = this.transformXY(0, 0, from); + map.setCenter(new OpenLayers.LonLat(c.x, c.y)); + return; + } + var b = null; + if (typeof o == "string") + var j = json.fromJson(o); + else + j = o; + var ul; + var lr; + if (j.hasOwnProperty("bounds")) { + var a = j.bounds; + b = new OpenLayers.Bounds(); + ul = this.transformXY(a[0], a[1], from); + b.left = ul.x; + b.top = ul.y; + lr = this.transformXY(a[2], a[3], from); + b.right = lr.x; + b.bottom = lr.y; + } + if (b == null) { + if (j.hasOwnProperty("position")) { + var p = j.position; + var e = j.hasOwnProperty("extent") ? j.extent : 1; + if (typeof e == "string") + e = parseFloat(e); + b = new OpenLayers.Bounds(); + ul = this.transformXY(p[0] - e, p[1] + e, from); + b.left = ul.x; + b.top = ul.y; + lr = this.transformXY(p[0] + e, p[1] - e, from); + b.right = lr.x; + b.bottom = lr.y; + } + } + if (b == null) { + if (o.length == 4) { + b = new OpenLayers.Bounds(); + // TODO Choose the correct method + if (false) { + b.left = o[0]; + b.top = o[1]; + + b.right = o[2]; + b.bottom = o[3]; + } else { + ul = this.transformXY(o[0], o[1], from); + b.left = ul.x; + b.top = ul.y; + lr = this.transformXY(o[2], o[3], from); + b.right = lr.x; + b.bottom = lr.y; + } + } + } + if (b != null) { + map.zoomToExtent(b, true); + } + }, + + transform : function(p, from, to){ + // summary: + // Transforms the point passed as argument, expressed in the from + // coordinate system to the map coordinate system. + // description: + // Transforms the point passed as argument without modifying it. The point is supposed to be expressed + // in the from coordinate system and is transformed to the map coordinate system. + // p : Object {x, y} + // The point to transform + // from: OpenLayers.Projection + // The projection in which the point is expressed. + return this.transformXY(p.x, p.y, from, to); + }, + + transformXY : function(x, y, from, to){ + // summary + // Transforms the coordinates passed as argument, expressed in the from + // coordinate system to the map coordinate system. + // description: + // Transforms the coordinates passed as argument. The coordinate are supposed to be expressed + // in the from coordinate system and are transformed to the map coordinate system. + // x : Number + // The longitude coordinate to transform. + // y : Number + // The latitude coordinate to transform. + // from: OpenLayers.Projection + // The projection in which the point is expressed. + + var tp = this._tp; + tp.x = x; + tp.y = y; + if (!from) + from = dojox.geo.openlayers.EPSG4326; + if (!to) + to = this.olMap.getProjectionObject(); + tp = OpenLayers.Projection.transform(tp, from, to); + return tp; + } + + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Patch.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Patch.js new file mode 100644 index 0000000..5ce22e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Patch.js @@ -0,0 +1,66 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", // dojo.extend getObject + "dojo/_base/sniff", // dojo.isIE + "dojox/gfx", + "dojox/gfx/shape" +], function(dojo, lang, sniff, gfx, shape){ + + var dgo = lang.getObject("geo.openlayers", true, dojox); + + dgo.Patch = { + + patchMethod : function(/*Object*/type, /*String*/method, /*Function*/execBefore, /*Function*/ + execAfter){ + // summary: + // Patches the specified method of the given type so that the 'execBefore' (resp. 'execAfter') function is + // called before (resp. after) invoking the legacy implementation. + // description: + // The execBefore function is invoked with the following parameter: + // execBefore(method, arguments) where 'method' is the patched method name and 'arguments' the arguments received + // by the legacy implementation. + // The execAfter function is invoked with the following parameter: + // execBefore(method, returnValue, arguments) where 'method' is the patched method name, 'returnValue' the value + // returned by the legacy implementation and 'arguments' the arguments received by the legacy implementation. + // type: Object: the type to patch. + // method: String: the method name. + // execBefore: Function: the function to execute before the legacy implementation. + // execAfter: Function: the function to execute after the legacy implementation. + // tags: + // private + var old = type.prototype[method]; + type.prototype[method] = function(){ + var callee = method; + if (execBefore) + execBefore.call(this, callee, arguments); + var ret = old.apply(this, arguments); + if (execAfter) + ret = execAfter.call(this, callee, ret, arguments) || ret; + return ret; + }; + }, + + patchGFX : function(){ + + var vmlFixRawNodePath = function(){ + if (!this.rawNode.path) + this.rawNode.path = {}; + }; + + var vmlFixFillColors = function() { + if(this.rawNode.fill && !this.rawNode.fill.colors) + this.rawNode.fill.colors = {}; + }; + + if (sniff.isIE <= 8) { + + dojox.geo.openlayers.Patch.patchMethod(gfx.Line, "setShape", vmlFixRawNodePath, null); + dojox.geo.openlayers.Patch.patchMethod(gfx.Polyline, "setShape", vmlFixRawNodePath, null); + dojox.geo.openlayers.Patch.patchMethod(gfx.Path, "setShape", vmlFixRawNodePath, null); + + dojox.geo.openlayers.Patch.patchMethod(shape.Shape, "setFill", vmlFixFillColors, null); + } + } + }; + return dgo.Patch; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Point.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Point.js new file mode 100644 index 0000000..4e4652f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/Point.js @@ -0,0 +1,26 @@ +define(["dojo/_base/kernel", "dojo/_base/declare", "dojox/geo/openlayers/Geometry"], + function(dojo, declare, Geometry){ + /*===== + var Geometry = dojox.geo.openlayers.Geometry; + =====*/ + return declare("dojox.geo.openlayers.Point", Geometry, { + // summary: + // A Point geometry handles description of points to be rendered in a GfxLayer + + setPoint : function(p){ + // summary: + // Sets the point for this geometry. + // p : {x, y} Object + // The point geometry. + this.coordinates = p; + }, + + getPoint : function(){ + // summary: + // Gets the point defining this geometry. + // returns: {x, y} Object + // The point defining this geometry. + return this.coordinates; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/TouchInteractionSupport.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/TouchInteractionSupport.js new file mode 100644 index 0000000..f973612 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/TouchInteractionSupport.js @@ -0,0 +1,247 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/connect", + "dojo/_base/html", + "dojo/_base/lang", + "dojo/_base/event", + "dojo/_base/window"], function(dojo, declare, connect, html, lang, event, window){ + + return declare("dojox.geo.openlayers.TouchInteractionSupport", null, { + // summary: + // class to handle touch interactions on a OpenLayers.Map widget + // tags: + // private + + _map : null, + _centerTouchLocation : null, + _touchMoveListener : null, + _touchEndListener : null, + _initialFingerSpacing : null, + _initialScale : null, + _tapCount : null, + _tapThreshold : null, + _lastTap : null, + + constructor : function(/* OpenLayers.Map */map){ + // summary: + // Constructs a new TouchInteractionSupport instance + // map: OpenLayers.Map + // the Map widget this class provides touch navigation for. + this._map = map; + this._centerTouchLocation = new OpenLayers.LonLat(0, 0); + + var div = this._map.div; + + // install touch listeners + connect.connect(div, "touchstart", this, this._touchStartHandler); + connect.connect(div, "touchmove", this, this._touchMoveHandler); + connect.connect(div, "touchend", this, this._touchEndHandler); + + this._tapCount = 0; + this._lastTap = { + x : 0, + y : 0 + }; + this._tapThreshold = 100; // square distance in pixels + + }, + + _getTouchBarycenter : function(touchEvent){ + // summary: + // returns the midpoint of the two first fingers (or the first finger location if only one) + // touchEvent: Event + // a touch event + // returns: dojox.gfx.Point + // the midpoint + // tags: + // private + var touches = touchEvent.touches; + var firstTouch = touches[0]; + var secondTouch = null; + if (touches.length > 1) { + secondTouch = touches[1]; + } else { + secondTouch = touches[0]; + } + + var marginBox = html.marginBox(this._map.div); + + var middleX = (firstTouch.pageX + secondTouch.pageX) / 2.0 - marginBox.l; + var middleY = (firstTouch.pageY + secondTouch.pageY) / 2.0 - marginBox.t; + + return { + x : middleX, + y : middleY + }; + + }, + + _getFingerSpacing : function(touchEvent){ + // summary: + // computes the distance between the first two fingers + // touchEvent: Event + // a touch event + // returns: float + // a distance. -1 if less that 2 fingers + // tags: + // private + var touches = touchEvent.touches; + var spacing = -1; + if (touches.length >= 2) { + var dx = (touches[1].pageX - touches[0].pageX); + var dy = (touches[1].pageY - touches[0].pageY); + spacing = Math.sqrt(dx * dx + dy * dy); + } + return spacing; + }, + + _isDoubleTap : function(touchEvent){ + // summary: + // checks whether the specified touchStart event is a double tap + // (i.e. follows closely a previous touchStart at approximately the same location) + // touchEvent: Event + // a touch event + // returns: boolean + // true if this event is considered a double tap + // tags: + // private + var isDoubleTap = false; + var touches = touchEvent.touches; + if ((this._tapCount > 0) && touches.length == 1) { + // test distance from last tap + var dx = (touches[0].pageX - this._lastTap.x); + var dy = (touches[0].pageY - this._lastTap.y); + var distance = dx * dx + dy * dy; + if (distance < this._tapThreshold) { + isDoubleTap = true; + } else { + this._tapCount = 0; + } + } + this._tapCount++; + this._lastTap.x = touches[0].pageX; + this._lastTap.y = touches[0].pageY; + setTimeout(lang.hitch(this, function(){ + this._tapCount = 0; + }), 300); + + return isDoubleTap; + }, + + _doubleTapHandler : function(touchEvent){ + // summary: + // action performed on the map when a double tap was triggered + // touchEvent: Event + // a touch event + // tags: + // private + // perform a basic 2x zoom on touch + var touches = touchEvent.touches; + var marginBox = html.marginBox(this._map.div); + var offX = touches[0].pageX - marginBox.l; + var offY = touches[0].pageY - marginBox.t; + // clicked map point before zooming + var mapPoint = this._map.getLonLatFromPixel(new OpenLayers.Pixel(offX, offY)); + // zoom increment power + this._map.setCenter(new OpenLayers.LonLat(mapPoint.lon, mapPoint.lat), this._map.getZoom() + 1); + }, + + _touchStartHandler : function(touchEvent){ + // summary: + // action performed on the map when a touch start was triggered + // touchEvent: Event + // a touch event + // tags: + // private + event.stop(touchEvent); + + // test double tap + if (this._isDoubleTap(touchEvent)) { + this._doubleTapHandler(touchEvent); + return; + } + + // compute map midpoint between fingers + var middlePoint = this._getTouchBarycenter(touchEvent); + + this._centerTouchLocation = this._map.getLonLatFromPixel(new OpenLayers.Pixel(middlePoint.x, middlePoint.y)); + + // store initial finger spacing to compute zoom later + this._initialFingerSpacing = this._getFingerSpacing(touchEvent); + + // store initial map scale + this._initialScale = this._map.getScale(); + + // install touch move and up listeners (if not done by other fingers before) + if (!this._touchMoveListener) + this._touchMoveListener = connect.connect(window.global, "touchmove", this, this._touchMoveHandler); + if (!this._touchEndListener) + this._touchEndListener = connect.connect(window.global, "touchend", this, this._touchEndHandler); + + }, + + _touchEndHandler : function(touchEvent){ + // summary: + // action performed on the map when a touch end was triggered + // touchEvent: Event + // a touch event + // tags: + // private + event.stop(touchEvent); + + var touches = touchEvent.touches; + + if (touches.length == 0) { + // disconnect listeners only when all fingers are up + if (this._touchMoveListener) { + connect.disconnect(this._touchMoveListener); + this._touchMoveListener = null; + } + if (this._touchEndListener) { + connect.disconnect(this._touchEndListener); + this._touchEndListener = null; + } + } else { + // recompute touch center + var middlePoint = this._getTouchBarycenter(touchEvent); + + this._centerTouchLocation = this._map.getLonLatFromPixel(new OpenLayers.Pixel(middlePoint.x, middlePoint.y)); + } + }, + + _touchMoveHandler : function(touchEvent){ + // summary: + // action performed on the map when a touch move was triggered + // touchEvent: Event + // a touch event + // tags: + // private + + // prevent browser interaction + event.stop(touchEvent); + + var middlePoint = this._getTouchBarycenter(touchEvent); + + // compute map offset + var mapPoint = this._map.getLonLatFromPixel(new OpenLayers.Pixel(middlePoint.x, middlePoint.y)); + var mapOffsetLon = mapPoint.lon - this._centerTouchLocation.lon; + var mapOffsetLat = mapPoint.lat - this._centerTouchLocation.lat; + + // compute scale factor + var scaleFactor = 1; + var touches = touchEvent.touches; + if (touches.length >= 2) { + var fingerSpacing = this._getFingerSpacing(touchEvent); + scaleFactor = fingerSpacing / this._initialFingerSpacing; + // weird openlayer bug : setting several times the same scale value lead to visual zoom... + this._map.zoomToScale(this._initialScale / scaleFactor); + } + + // adjust map center on barycenter + var currentMapCenter = this._map.getCenter(); + this._map.setCenter(new OpenLayers.LonLat(currentMapCenter.lon - mapOffsetLon, currentMapCenter.lat + - mapOffsetLat)); + + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/WidgetFeature.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/WidgetFeature.js new file mode 100644 index 0000000..18ade13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/WidgetFeature.js @@ -0,0 +1,205 @@ +define( + ["dojo/_base/kernel", "dojo/_base/declare", "dojo/_base/html", "dojo/_base/lang", "dojox/geo/openlayers/Feature"], + function(dojo, declare, html, lang, Feature){ + /*===== + var Feature = dojox.geo.openlayers.Feature; + =====*/ + return declare("dojox.geo.openlayers.WidgetFeature", Feature, { + // summary: + // Wraps a Dojo widget, provide geolocalisation of the widget and interface + // to Layer class. + // description: + // This class allows to add a widget in a `dojox.geo.openlayers.Layer`. + // Parameters are passed to the constructor. These parameters describe the widget + // and provide geo-localisation of this widget. + // parameters can be: + // * _createWidget_: Function for widget creation. Must return a `dijit._Widget`. + // * _dojoType_: The class of a widget to create; + // * _dijitId_: The digitId of an existing widget. + // * _widget_: An already created widget. + // * _width_: The width of the widget. + // * _height_: The height of the widget. + // * _longitude_: The longitude, in decimal degrees where to place the widget. + // * _latitude_: The latitude, in decimal degrees where to place the widget. + // You must define a least one widget retrieval parameter and the geo-localization parameters. + _widget : null, + _bbox : null, + + constructor : function(params){ + // summary: + // Constructs a new `dojox.geo.openlayers.WidgetFeature` + // params: Object + // The parameters describing the widget. + this._params = params; + }, + + setParameters : function(params){ + // summary: + // Sets the parameters describing the widget. + // params: Object + // The parameters describing the widget. + this._params = params; + }, + + getParameters : function(){ + // summary: + // Retreives the parameters describing the widget. + // returns: Object + // The parameters describing the widget. + return this._params; + }, + + _getWidget : function(){ + // summary: + // Creates, if necessary the widget and returns it; + // tags: + // private + var params = this._params; + + if ((this._widget == null) && (params != null)) { + var w = null; + + if (typeof (params.createWidget) == "function") { + w = params.createWidget.call(this); + } else if (params.dojoType) { + dojo["require"](params.dojoType); + var c = lang.getObject(params.dojoType); + w = new c(params); + } else if (params.dijitId) { + w = dijit.byId(params.dijitId); + } else if (params.widget) { + w = params.widget; + } + + if (w != null) { + this._widget = w; + if (typeof (w.startup) == "function") + w.startup(); + var n = w.domNode; + if (n != null) + html.style(n, { + position : "absolute" + }); + } + this._widget = w; + } + return this._widget; + }, + + _getWidgetWidth : function(){ + // summary: + // gets the widget width + // tags: + // private + var p = this._params; + if (p.width) + return p.width; + var w = this._getWidget(); + if (w) + return html.style(w.domNode, "width"); + return 10; + }, + + _getWidgetHeight : function(){ + // summary: + // gets the widget height + // tags: + // private + var p = this._params; + if (p.height) + return p.height; + var w = this._getWidget(); + if (w) + return html.style(w.domNode, "height"); + return 10; + }, + + render : function(){ + // summary: + // renders the widget. + // descrption: + // Places the widget accordingly to longitude and latitude defined in parameters. + // This function is called when the center of the maps or zoom factor changes. + var layer = this.getLayer(); + + var widget = this._getWidget(); + if (widget == null) + return; + var params = this._params; + var lon = params.longitude; + var lat = params.latitude; + var from = this.getCoordinateSystem(); + var map = layer.getDojoMap(); + var p = map.transformXY(lon, lat, from); + var a = this._getLocalXY(p); + + var width = this._getWidgetWidth(); + var height = this._getWidgetHeight(); + + var x = a[0] - width / 2; + var y = a[1] - height / 2; + var dom = widget.domNode; + + var pa = layer.olLayer.div; + if (dom.parentNode != pa) { + if (dom.parentNode) + dom.parentNode.removeChild(dom); + pa.appendChild(dom); + } + this._updateWidgetPosition({ + x : x, + y : y, + width : width, + height : height + }); + }, + + _updateWidgetPosition : function(box){ + // summary: + // Places the widget with the computed x and y values + // tags: + // private + // var box = this._params; + + var w = this._widget; + var dom = w.domNode; + + html.style(dom, { + position : "absolute", + left : box.x + "px", + top : box.y + "px", + width : box.width + "px", + height : box.height + "px" + }); + + if (w.srcNodeRef) { + html.style(w.srcNodeRef, { + position : "absolute", + left : box.x + "px", + top : box.y + "px", + width : box.width + "px", + height : box.height + "px" + }); + } + + if (lang.isFunction(w.resize)) + w.resize({ + w : box.width, + h : box.height + }); + }, + + remove : function(){ + // summary: + // removes this feature. + // description: + // Remove this feature by disconnecting the widget from the dom. + var w = this.getWidget(); + if (!w) + return; + var dom = w.domNode; + if (dom.parentNode) + dom.parentNode.removeChild(dom); + } + }); + }); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/baseLayers/test_baseLayers.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/baseLayers/test_baseLayers.html new file mode 100644 index 0000000..47fe9c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/baseLayers/test_baseLayers.html @@ -0,0 +1,223 @@ + + + + +Dojo Base Layers + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/Ecr.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/Ecr.js new file mode 100644 index 0000000..0efb102 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/Ecr.js @@ -0,0 +1,209 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/html", + "dojo/_base/array", + "dojo/_base/lang", + "dojo/dom", + "dojox/geo/openlayers/Map", + "dojox/geo/openlayers/GfxLayer", + "dojo/data/ItemFileReadStore", + "dojox/geo/openlayers/tests/ecr/PortRenderer", + "dojox/geo/openlayers/tests/ecr/LegsRenderer"], function(dojo, declare, html, arr, lang, dom, Map, GfxLayer, + ItemFileReadStore, PortRenderer, LegsRenderer){ + + return declare("dojox.geo.openlayers.tests.ecr.Ecr", null, { + constructor : function(){ + + var map = new Map("map"); + + map.fitTo([-160, 70, 160, -70]); + + this._map = map; + + layer = new GfxLayer("legs"); + this._legLayer = layer; + map.addLayer(layer); + + layer = new GfxLayer("ports"); + this._portLayer = layer; + map.addLayer(layer); + + this.loadData("data/ecr.json"); + }, + + fitTo : function(where){ + this._map.fitTo(where); + }, + + clearLayer : function(layer){ + var fa = layer.getFeatures(); + layer.removeFeature(fa); + }, + + clearEcr : function(event){ + var layer = this._portLayer; + this.clearLayer(layer); + layer = this._legLayer; + this.clearLayer(layer); + this.fillPortChooser(null); + }, + + setDataSet : function(name){ + var o = dom.byId(name); + var ds = o.value; + + var layer = this._portLayer; + this.clearLayer(layer); + + layer = this._legLayer; + this.clearLayer(layer); + + this.loadData(ds); + + }, + + log : function(o){ + console.log(o); + }, + + loadError : function(){ + this.log(arguments[0]); + }, + + _portStyle : [{ + type : "circle", + depth : "{radius}", + radius : function(ctx){ + var realValue = ctx.store.getValue(this, "offer"); + var ret = Math.max(1, Math.log(realValue)); + return 3 * ret; + }, + stroke : { + color : "#4c9a06", + width : 1 + } + }, { + type : "circle", + depth : "{radius}", + radius : function(ctx){ + var realValue = ctx.store.getValue(this, "demand"); + return 3 * Math.max(1, Math.log(realValue)); + }, + stroke : { + color : "#bb0000", + width : 1 + } + }], + + gotPorts : function(items, request){ + this.log("got ports " + items.length); + var store = request.store; + var ctx = { + store : store + }; + var renderer = new PortRenderer(this._portStyle, ctx); + var layer = this._portLayer; + + arr.forEach(items, function(item, index, array){ + var f = renderer.render(item); + if (f != null) + layer.addFeature(f); + }); + + this.fillPortChooser(items); + + this.portChange('portChooser'); + + layer.redraw(); + }, + + _legsStyle : { + type : "polyline", + stroke : { + color : [255, 165, 0] + } + }, + + gotLegs : function(items, request){ + // this.log("got legs " + items.length); + var ctx = { + store : request.store + }; + var renderer = new LegsRenderer(this._legsStyle, ctx); + renderer.setGeodetic(true); + var layer = this._legLayer; + arr.forEach(items, function(item, index, array){ + var f = renderer.render(item); + if (f != null) + layer.addFeature(f); + }); + layer.redraw(); + }, + + loadData : function(dataSet){ + // this.log("load " + dataSet); + var store = new ItemFileReadStore({ + url : dataSet, + urlPreventCache : true + }); + + store.fetch({ + query : { + type : "legs" + }, + onComplete : lang.hitch(this, this.gotLegs), + onError : lang.hitch(this, this.loadError), + queryOptions : { + deep : true + } + }); + + store.fetch({ + query : { + type : "port" + }, + onComplete : lang.hitch(this, this.gotPorts), + onError : lang.hitch(this, this.loadError) + }); + + }, + + regionChange : function(event){ + this.fitTo(event.currentTarget.value); + }, + + portChange : function(name){ + var o = dom.byId(name); + this.fitTo(o.value); + }, + + fillPortChooser : function(items){ + var ps = dom.byId("portChooser"); + var opts = ps.options; + var ws = '{"position" : [0, 0], "extent" : 70}'; + if (items == null) { + opts.length = 1; + opts[0] = new Option("World", ws); + } else { + opts.length = items.length + 1; + opts[0] = new Option("World", ws); + var s = '{"position" : [%lo, %la], "extent" : 0.2}'; + for ( var i = 0; i < items.length; i++) { + var item = items[i]; + var lon = parseFloat(item.longitude); + var lat = parseFloat(item.latitude); + var os = s.replace("%lo", lon).replace("%la", lat); + opts[i + 1] = new Option(item.name, os); + } + } + }, + + toggleLayerVisibility : function(name){ + var cb = dom.byId(name); + var a = this._map.getLayer('name', name); + arr.forEach(a, function(item, index, array){ + item.olLayer.setVisibility(cb.checked); + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/EcrRenderer.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/EcrRenderer.js new file mode 100644 index 0000000..841cd37 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/EcrRenderer.js @@ -0,0 +1,163 @@ +define( [ "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/lang"], function(dojo, declare, arr, lang){ + + return declare("dojox.geo.openlayers.tests.ecr.EcrRenderer", null, { + + constructor : function(opts, context){ + this._options = opts; + this._context = context; + }, + + render : function(item){ + var o = this._options; + return this._render(o, item); + }, + + _render : function(o, item){ + if (o instanceof Array) { + var features = []; + o.sort(function(i1, i2){ + var d1 = i1.depth; + var d2 = i2.depth; + if (d1 != undefined && d2 != undefined) { + var id1 = parseInt(d1); + var id2 = parseInt(d2); + if (id1 == id2) + return 0; + if (id1 < id2) + return -1; + return 1; + } + return 0; + }); + arr.forEach(o, function(oi, index, array){ + + var co = lang.clone(oi); + this._callFunctions(co, item); + this._solveReferences(co, item); + + var f = this._render(co, item); + + if (f != null) { + f.setStroke(co.stroke); + f.setFill(co.fill); + features.push(f); + } + }, this); + return features; + } + + var co = lang.clone(o); + this._callFunctions(co, item); + this._solveReferences(co, item); + var gf = this._renderItem(co, item); + if (gf != null) { + gf.setStroke(co.stroke); + gf.setFill(co.fill); + } + return gf; + }, + + _renderItem : function(o, item){ + // subclasses should render + return null; + }, + + _callFunctions : function(o, item){ + for ( var prop in o) { + if (o.hasOwnProperty(prop)) { + var v = o[prop]; + if (typeof v == 'function') { + o[prop] = v.call(item, this._context); + } else if (typeof v == 'object') { + this._callFunctions(v, item); + } + } + } + }, + + getContext : function(){ + return this._context; + }, + + getContextValue : function(name){ + if (this._context) + return this._context[name]; + return undefined; + }, + + getValue : function(item, property){ + var s = this.getContextValue('store'); + if ((s != undefined) && s.isItem(item)) { + return s.getValue(item, property); + } + if (item.hasOwnProperty(property)) { + return item[property]; + } + return undefined; + }, + + _coords : [0, 0], + + getCoordinates : function(item){ + var lon = this.getValue(item, "longitude"); + var lat = this.getValue(item, "latitude"); + var flon = parseFloat(lon); + var flat = parseFloat(lat); + var a = this._coords; + a[0] = flon; + a[1] = flat; + return a; + }, + + _findAttributeValue : function(o, a, item){ + var v = undefined; + if (item != null) + v = this.getValue(item, a); + if (v != undefined) + return v; + v = o[a]; + if (v != undefined) + return v; + + for ( var i in o) { + var ov = o[i]; + if (typeof (ov) == 'object') { + var vv = this._findAttributeValue(ov, a, null); + if (vv != undefined) + return vv; + } + } + return undefined; + }, + + _solveReferences : function(o, item){ + this.__solveReferences(o, o, item); + }, + + __solveReferences : function(oo, o, item){ + for ( var a in o) { + var v = o[a]; + if (typeof (v) == 'object') { + this.__solveReferences(oo, v, item); + } + if (typeof (v) == 'string') { + var re = /{(.*)}/; + if (v.match(re)) { + v = v.replace(re, "$1"); + var r = this._findAttributeValue(oo, v, item); + if (r != undefined) { + var ps = parseFloat(r); + if (isNaN(ps)) + o[a] = r; + else + o[a] = ps; + } + } + } + } + } + }); + }); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/LegsRenderer.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/LegsRenderer.js new file mode 100644 index 0000000..aec3224 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/LegsRenderer.js @@ -0,0 +1,66 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojox/geo/openlayers/tests/ecr/EcrRenderer", + "dojox/geo/openlayers/GeometryFeature", + "dojox/geo/openlayers/LineString", + "dojox/geo/openlayers/Point", + "dojox/geo/openlayers/GreatCircle"], function(dojo, declare, arr, EcrRenderer, GeometryFeature, LineString, + Point, GreatCircle){ + + return declare("dojox.geo.openlayers.tests.ecr.LegsRenderer", [dojox.geo.openlayers.tests.ecr.EcrRenderer], { + + constructor : function(opts, context){ + this._geodetic = false; + this._greatCircle = null; + }, + + setGeodetic : function(value){ + this._geodetic = value; + }, + + getGeodetic : function(){ + return this._geodetic; + }, + + _renderItem : function(o, item){ + var gf = null; + if (o.type == "polyline") { + var store = this.getContextValue('store'); + var stops = store.getValues(item, 'stops'); + var pts = []; + var lastCoords = null; + arr.forEach(stops, function(it, index, array){ + if (store.isItem(it)) { + var port = this.getValue(it, "port"); + var coords = this.getCoordinates(port); + if (this.getGeodetic()) { + if (lastCoords != null) { + var current = { + x : coords[0], + y : coords[1] + }; + var geodetic = dojox.geo.openlayers.GreatCircle.toPointArray(lastCoords, current, 5); + pts = pts.concat(geodetic); + } + } else { + var p = new Point({ + x : coords[0], + y : coords[1] + }); + pts.push(p); + } + lastCoords = { + x : coords[0], + y : coords[1] + }; + } + }, this); + + var g = new LineString(pts); + gf = new GeometryFeature(g); + } + return gf; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/PortRenderer.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/PortRenderer.js new file mode 100644 index 0000000..f0a7ccd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/PortRenderer.js @@ -0,0 +1,27 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojox/geo/openlayers/tests/ecr/EcrRenderer", + "dojox/geo/openlayers/GeometryFeature", + "dojox/geo/openlayers/Point"], function(dojo, declare, EcrRenderer, GeometryFeature, Point){ + + return declare("dojox.geo.openlayers.tests.ecr.PortRenderer", [EcrRenderer], { + + constructor : function(opts, context){}, + + _renderItem : function(o, item){ + var gf = null; + if (o.type == "circle") { + var coords = this.getCoordinates(item); + var g = new Point({ + x : coords[0], + y : coords[1] + }); + gf = new GeometryFeature(g); + gf.setShapeProperties({ + r : o.radius + }); + } + return gf; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr.json b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr.json new file mode 100644 index 0000000..827818b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr.json @@ -0,0 +1,41 @@ +{ + "identifier": "name", + "label": "name", + "items": [{ + "type": "port", + "name": "Kabul", + "longitude": "69.1833333", + "latitude": "34.5166667", + "offer": "15", + "demand": "20" + }, + { + "type": "port", + "name": "Buenos Aires", + "longitude": "-58.4088134", + "latitude": "-34.5761256", + "offer": "30", + "demand": "10" + }, + { + "type": "legs", + "name": "legs1", + "stops": [{ + "name": "port1", + "port": { + "_reference": "Kabul" + }, + + "capacity": "12" + }, + { + "name": "port2", + "port": { + "_reference": "Buenos Aires" + }, + + "capacity": "20" + }] + }] +} + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr2.json b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr2.json new file mode 100644 index 0000000..839909f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr2.json @@ -0,0 +1,277 @@ +{ + "identifier": "name", + "label": "name", + "items": [{ + "type": "port", + "name": "Buenos Aires", + "longitude": "-58.4088134765625", + "latitude": "-34.5761256318848", + "offer": "26", + "demand": "19" + }, + { + "type": "port", + "name": "Dhaka", + "longitude": "90.4086111", + "latitude": "23.7230556", + "offer": "1", + "demand": "19" + }, + { + "type": "port", + "name": "Sao Paulo", + "longitude": "-46.63611111", + "latitude": "-23.5475", + "offer": "11", + "demand": "20" + }, + { + "type": "port", + "name": "Rio de Janeiro", + "longitude": "-43.2075", + "latitude": "-22.90277778", + "offer": "15", + "demand": "26" + }, + { + "type": "port", + "name": "Kinshasa", + "longitude": "15.315", + "latitude": "-4.3297222", + "offer": "22", + "demand": "26" + }, + { + "type": "port", + "name": "Zhumadian", + "longitude": "114.0294444", + "latitude": "32.9794444", + "offer": "28", + "demand": "13" + }, + { + "type": "port", + "name": "Taian", + "longitude": "117.12", + "latitude": "36.1852778", + "offer": "25", + "demand": "18" + }, + { + "type": "port", + "name": "Shanghai", + "longitude": "121.4580556", + "latitude": "31.2222222", + "offer": "4", + "demand": "19" + }, + { + "type": "port", + "name": "Nanchong", + "longitude": "106.0666667", + "latitude": "30.8", + "offer": "23", + "demand": "11" + }, + { + "type": "port", + "name": "Beijing", + "longitude": "116.397228240967", + "latitude": "39.9074977414405", + "offer": "28", + "demand": "17" + }, + { + "type": "port", + "name": "Bogota", + "longitude": "-74.0833333", + "latitude": "4.6", + "offer": "12", + "demand": "23" + }, + { + "type": "port", + "name": "Juan Dolio", + "longitude": "-69.4166667", + "latitude": "18.4166667", + "offer": "1", + "demand": "28" + }, + { + "type": "port", + "name": "Cairo", + "longitude": "31.25", + "latitude": "30.05", + "offer": "16", + "demand": "23" + }, + { + "type": "port", + "name": "London", + "longitude": "-0.125532746315002", + "latitude": "51.5084152563931", + "offer": "29", + "demand": "6" + }, + { + "type": "port", + "name": "Hong Kong", + "longitude": "114.15007352829", + "latitude": "22.2840136009625", + "offer": "12", + "demand": "27" + }, + { + "type": "port", + "name": "Jakarta", + "longitude": "106.8294444", + "latitude": "-6.1744444", + "offer": "10", + "demand": "14" + }, + { + "type": "port", + "name": "Delhi", + "longitude": "77.2166667", + "latitude": "28.6666667", + "offer": "7", + "demand": "29" + }, + { + "type": "port", + "name": "Mumbai", + "longitude": "72.8479385375977", + "latitude": "19.0144100168904", + "offer": "23", + "demand": "22" + }, + { + "type": "port", + "name": "Bengaluru", + "longitude": "77.6032912731171", + "latitude": "12.9762266976805", + "offer": "11", + "demand": "3" + }, + { + "type": "port", + "name": "Baghdad", + "longitude": "44.3938889", + "latitude": "33.3386111", + "offer": "20", + "demand": "5" + }, + { + "type": "port", + "name": "Tehran", + "longitude": "51.4244444", + "latitude": "35.6719444", + "offer": "30", + "demand": "24" + }, + { + "type": "port", + "name": "Tokyo", + "longitude": "139.691677093506", + "latitude": "35.6895265930799", + "offer": "22", + "demand": "18" + }, + { + "type": "port", + "name": "Seoul", + "longitude": "126.9997222", + "latitude": "37.5663889", + "offer": "18", + "demand": "19" + }, + { + "type": "port", + "name": "Mexico City", + "longitude": "-99.1386111", + "latitude": "19.4341667", + "offer": "9", + "demand": "16" + }, + { + "type": "port", + "name": "Lagos", + "longitude": "3.3958333", + "latitude": "6.4530556", + "offer": "16", + "demand": "10" + }, + { + "type": "port", + "name": "Lima", + "longitude": "-77.05", + "latitude": "-12.05", + "offer": "10", + "demand": "12" + }, + { + "type": "port", + "name": "Manila", + "longitude": "120.9822222", + "latitude": "14.6041667", + "offer": "23", + "demand": "17" + }, + { + "type": "port", + "name": "Lahore", + "longitude": "74.3436111", + "latitude": "31.5497222", + "offer": "2", + "demand": "26" + }, + { + "type": "port", + "name": "Karachi", + "longitude": "67.05", + "latitude": "24.8666667", + "offer": "29", + "demand": "3" + }, + { + "type": "port", + "name": "Moscow", + "longitude": "37.6155556", + "latitude": "55.7522222", + "offer": "27", + "demand": "4" + }, + { + "type": "port", + "name": "Bangkok", + "longitude": "100.5166667", + "latitude": "13.75", + "offer": "21", + "demand": "10" + }, + { + "type": "port", + "name": "Istanbul", + "longitude": "28.9496612548828", + "latitude": "41.0138429552247", + "offer": "5", + "demand": "15" + }, + { + "type": "port", + "name": "Taipei", + "longitude": "121.525", + "latitude": "25.0391667", + "offer": "22", + "demand": "27" + }, + { + "type": "port", + "name": "New York City", + "longitude": "-74.0059729", + "latitude": "40.7142691", + "offer": "13", + "demand": "5" + }] +} + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr3.json b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr3.json new file mode 100644 index 0000000..e909466 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/ecr3.json @@ -0,0 +1,3352 @@ +{ + "identifier": "name", + "label": "name", + "items": [ + { + "type": "port", + "name": "Dubai", + "longitude": "55.28", + "latitude": "25.2522222", + "offer": "20", + "demand": "14" + }, + { + "type": "port", + "name": "Kabul", + "longitude": "69.1833333", + "latitude": "34.5166667", + "offer": "5", + "demand": "2" + }, + { + "type": "port", + "name": "Yerevan", + "longitude": "44.5136111", + "latitude": "40.1811111", + "offer": "6", + "demand": "29" + }, + { + "type": "port", + "name": "Luanda", + "longitude": "13.2344444", + "latitude": "-8.8383333", + "offer": "7", + "demand": "22" + }, + { + "type": "port", + "name": "Buenos Aires", + "longitude": "-58.4088134765625", + "latitude": "-34.5761256318848", + "offer": "15", + "demand": "1" + }, + { + "type": "port", + "name": "Rosario", + "longitude": "-60.6663889", + "latitude": "-32.9511111", + "offer": "26", + "demand": "5" + }, + { + "type": "port", + "name": "Córdoba", + "longitude": "-64.1833333", + "latitude": "-31.4", + "offer": "1", + "demand": "24" + }, + { + "type": "port", + "name": "Wien", + "longitude": "16.3720750808716", + "latitude": "48.2084877601653", + "offer": "28", + "demand": "13" + }, + { + "type": "port", + "name": "Perth", + "longitude": "115.8333333", + "latitude": "-31.9333333", + "offer": "15", + "demand": "22" + }, + { + "type": "port", + "name": "Adelaide", + "longitude": "138.6", + "latitude": "-34.9333333", + "offer": "27", + "demand": "20" + }, + { + "type": "port", + "name": "Sydney", + "longitude": "151.207323074341", + "latitude": "-33.8678499639382", + "offer": "8", + "demand": "13" + }, + { + "type": "port", + "name": "Melbourne", + "longitude": "144.963322877884", + "latitude": "-37.8139965641595", + "offer": "3", + "demand": "21" + }, + { + "type": "port", + "name": "Baku", + "longitude": "49.8822222", + "latitude": "40.3952778", + "offer": "9", + "demand": "6" + }, + { + "type": "port", + "name": "Dhaka", + "longitude": "90.4086111", + "latitude": "23.7230556", + "offer": "16", + "demand": "14" + }, + { + "type": "port", + "name": "Chittagong", + "longitude": "91.8363889", + "latitude": "22.3330556", + "offer": "30", + "demand": "14" + }, + { + "type": "port", + "name": "Khulna", + "longitude": "89.55", + "latitude": "22.8", + "offer": "9", + "demand": "23" + }, + { + "type": "port", + "name": "Brussels", + "longitude": "4.35277462005615", + "latitude": "50.8465974826927", + "offer": "10", + "demand": "3" + }, + { + "type": "port", + "name": "Ouagadougou", + "longitude": "-1.5247222", + "latitude": "12.3702778", + "offer": "4", + "demand": "11" + }, + { + "type": "port", + "name": "Sofia", + "longitude": "23.324146270752", + "latitude": "42.6975135281805", + "offer": "21", + "demand": "17" + }, + { + "type": "port", + "name": "Santa Cruz de la Sierra", + "longitude": "-63.1666667", + "latitude": "-17.8", + "offer": "7", + "demand": "16" + }, + { + "type": "port", + "name": "Recife", + "longitude": "-34.88111111", + "latitude": "-8.053888889", + "offer": "1", + "demand": "8" + }, + { + "type": "port", + "name": "Fortaleza", + "longitude": "-38.54305556", + "latitude": "-3.717222222", + "offer": "21", + "demand": "27" + }, + { + "type": "port", + "name": "Belém", + "longitude": "-48.50444444", + "latitude": "-1.455833333", + "offer": "14", + "demand": "14" + }, + { + "type": "port", + "name": "São Paulo", + "longitude": "-46.63611111", + "latitude": "-23.5475", + "offer": "5", + "demand": "22" + }, + { + "type": "port", + "name": "Salvador", + "longitude": "-38.51083333", + "latitude": "-12.97111111", + "offer": "13", + "demand": "3" + }, + { + "type": "port", + "name": "Rio de Janeiro", + "longitude": "-43.2075", + "latitude": "-22.90277778", + "offer": "7", + "demand": "18" + }, + { + "type": "port", + "name": "Porto Alegre", + "longitude": "-51.23", + "latitude": "-30.03305556", + "offer": "28", + "demand": "18" + }, + { + "type": "port", + "name": "Nova Iguaçu", + "longitude": "-43.45111111", + "latitude": "-22.75916667", + "offer": "30", + "demand": "21" + }, + { + "type": "port", + "name": "Guarulhos", + "longitude": "-46.53333333", + "latitude": "-23.46277778", + "offer": "1", + "demand": "2" + }, + { + "type": "port", + "name": "Goiânia", + "longitude": "-49.25388889", + "latitude": "-16.67861111", + "offer": "19", + "demand": "8" + }, + { + "type": "port", + "name": "Curitiba", + "longitude": "-49.27305556", + "latitude": "-25.42777778", + "offer": "17", + "demand": "18" + }, + { + "type": "port", + "name": "Campinas", + "longitude": "-47.06083333", + "latitude": "-22.90555556", + "offer": "13", + "demand": "30" + }, + { + "type": "port", + "name": "Brasília", + "longitude": "-47.92972", + "latitude": "-15.77972", + "offer": "25", + "demand": "8" + }, + { + "type": "port", + "name": "Belo Horizonte", + "longitude": "-43.93777778", + "latitude": "-19.92083333", + "offer": "16", + "demand": "24" + }, + { + "type": "port", + "name": "Manaus", + "longitude": "-60.025", + "latitude": "-3.101944444", + "offer": "4", + "demand": "19" + }, + { + "type": "port", + "name": "Minsk", + "longitude": "27.5666667", + "latitude": "53.9", + "offer": "26", + "demand": "27" + }, + { + "type": "port", + "name": "Calgary", + "longitude": "-114.085285152", + "latitude": "51.050112282", + "offer": "19", + "demand": "2" + }, + { + "type": "port", + "name": "Montréal", + "longitude": "-73.587809", + "latitude": "45.5088375", + "offer": "7", + "demand": "1" + }, + { + "type": "port", + "name": "Toronto", + "longitude": "-79.416304194", + "latitude": "43.700113788", + "offer": "11", + "demand": "24" + }, + { + "type": "port", + "name": "Vancouver", + "longitude": "-123.119340403", + "latitude": "49.249657393", + "offer": "30", + "demand": "15" + }, + { + "type": "port", + "name": "Lubumbashi", + "longitude": "27.4666667", + "latitude": "-11.6666667", + "offer": "6", + "demand": "3" + }, + { + "type": "port", + "name": "Kinshasa", + "longitude": "15.315", + "latitude": "-4.3297222", + "offer": "12", + "demand": "4" + }, + { + "type": "port", + "name": "Brazzaville", + "longitude": "15.2847222", + "latitude": "-4.2591667", + "offer": "23", + "demand": "12" + }, + { + "type": "port", + "name": "Abidjan", + "longitude": "-4.0280556", + "latitude": "5.3411111", + "offer": "18", + "demand": "27" + }, + { + "type": "port", + "name": "Santiago", + "longitude": "-70.5665588378906", + "latitude": "-33.4262838490987", + "offer": "28", + "demand": "29" + }, + { + "type": "port", + "name": "Yaoundé", + "longitude": "11.5166667", + "latitude": "3.8666667", + "offer": "28", + "demand": "28" + }, + { + "type": "port", + "name": "Douala", + "longitude": "9.7", + "latitude": "4.0502778", + "offer": "21", + "demand": "26" + }, + { + "type": "port", + "name": "Ãœrümqi", + "longitude": "87.5833333", + "latitude": "43.8", + "offer": "4", + "demand": "10" + }, + { + "type": "port", + "name": "Zhumadian", + "longitude": "114.0294444", + "latitude": "32.9794444", + "offer": "28", + "demand": "19" + }, + { + "type": "port", + "name": "Zhengzhou", + "longitude": "113.6486111", + "latitude": "34.7577778", + "offer": "6", + "demand": "7" + }, + { + "type": "port", + "name": "Yunfu", + "longitude": "112.0333333", + "latitude": "22.9333333", + "offer": "10", + "demand": "3" + }, + { + "type": "port", + "name": "Xuzhou", + "longitude": "117.1916667", + "latitude": "34.2669444", + "offer": "3", + "demand": "11" + }, + { + "type": "port", + "name": "Xinyang", + "longitude": "114.0655556", + "latitude": "32.1227778", + "offer": "5", + "demand": "10" + }, + { + "type": "port", + "name": "Xianyang", + "longitude": "108.7147222", + "latitude": "34.3455556", + "offer": "5", + "demand": "8" + }, + { + "type": "port", + "name": "Xian", + "longitude": "108.9286111", + "latitude": "34.2583333", + "offer": "14", + "demand": "8" + }, + { + "type": "port", + "name": "Wuxi", + "longitude": "120.2938889", + "latitude": "31.5772222", + "offer": "17", + "demand": "2" + }, + { + "type": "port", + "name": "Wuhan", + "longitude": "114.2666667", + "latitude": "30.5833333", + "offer": "29", + "demand": "21" + }, + { + "type": "port", + "name": "Tianjin", + "longitude": "117.1766667", + "latitude": "39.1422222", + "offer": "15", + "demand": "3" + }, + { + "type": "port", + "name": "Tangshan", + "longitude": "118.1833333", + "latitude": "39.6333333", + "offer": "1", + "demand": "12" + }, + { + "type": "port", + "name": "Taiyuan", + "longitude": "112.5602778", + "latitude": "37.8694444", + "offer": "1", + "demand": "1" + }, + { + "type": "port", + "name": "Taian", + "longitude": "117.12", + "latitude": "36.1852778", + "offer": "1", + "demand": "30" + }, + { + "type": "port", + "name": "Shiyan", + "longitude": "110.7780556", + "latitude": "32.6475", + "offer": "3", + "demand": "6" + }, + { + "type": "port", + "name": "Shijiazhuang", + "longitude": "114.4786111", + "latitude": "38.0413889", + "offer": "29", + "demand": "12" + }, + { + "type": "port", + "name": "Shenzhen", + "longitude": "114.068298339844", + "latitude": "22.5455376639819", + "offer": "29", + "demand": "29" + }, + { + "type": "port", + "name": "Shantou", + "longitude": "116.6783333", + "latitude": "23.36", + "offer": "2", + "demand": "29" + }, + { + "type": "port", + "name": "Shanghai", + "longitude": "121.4580556", + "latitude": "31.2222222", + "offer": "8", + "demand": "18" + }, + { + "type": "port", + "name": "Jieyang", + "longitude": "116.3655556", + "latitude": "23.5297222", + "offer": "14", + "demand": "22" + }, + { + "type": "port", + "name": "Qingdao", + "longitude": "120.3719444", + "latitude": "36.0986111", + "offer": "29", + "demand": "10" + }, + { + "type": "port", + "name": "Puyang", + "longitude": "119.8861111", + "latitude": "29.4602778", + "offer": "15", + "demand": "13" + }, + { + "type": "port", + "name": "Nanjing", + "longitude": "118.7777778", + "latitude": "32.0616667", + "offer": "6", + "demand": "13" + }, + { + "type": "port", + "name": "Nanchong", + "longitude": "106.0666667", + "latitude": "30.8", + "offer": "10", + "demand": "16" + }, + { + "type": "port", + "name": "Nanchang", + "longitude": "115.8833333", + "latitude": "28.6833333", + "offer": "17", + "demand": "8" + }, + { + "type": "port", + "name": "Luoyang", + "longitude": "112.4536111", + "latitude": "34.6836111", + "offer": "23", + "demand": "12" + }, + { + "type": "port", + "name": "Liuyang", + "longitude": "113.6333333", + "latitude": "28.15", + "offer": "5", + "demand": "30" + }, + { + "type": "port", + "name": "Lanzhou", + "longitude": "103.7922222", + "latitude": "36.0563889", + "offer": "4", + "demand": "12" + }, + { + "type": "port", + "name": "Kunming", + "longitude": "102.7183333", + "latitude": "25.0388889", + "offer": "20", + "demand": "12" + }, + { + "type": "port", + "name": "Kaifeng", + "longitude": "114.3483333", + "latitude": "34.7911111", + "offer": "27", + "demand": "5" + }, + { + "type": "port", + "name": "Jinan", + "longitude": "116.9972222", + "latitude": "36.6683333", + "offer": "8", + "demand": "11" + }, + { + "type": "port", + "name": "Huainan", + "longitude": "116.9969444", + "latitude": "32.6263889", + "offer": "17", + "demand": "8" + }, + { + "type": "port", + "name": "Hefei", + "longitude": "117.2808333", + "latitude": "31.8638889", + "offer": "4", + "demand": "24" + }, + { + "type": "port", + "name": "Hangzhou", + "longitude": "120.1688889", + "latitude": "30.2552778", + "offer": "30", + "demand": "23" + }, + { + "type": "port", + "name": "Handan", + "longitude": "114.4677778", + "latitude": "36.6005556", + "offer": "14", + "demand": "27" + }, + { + "type": "port", + "name": "Guiyang", + "longitude": "106.7166667", + "latitude": "26.5833333", + "offer": "27", + "demand": "5" + }, + { + "type": "port", + "name": "Guangzhou", + "longitude": "113.25", + "latitude": "23.1166667", + "offer": "8", + "demand": "14" + }, + { + "type": "port", + "name": "Fuzhou", + "longitude": "119.3061111", + "latitude": "26.0613889", + "offer": "27", + "demand": "26" + }, + { + "type": "port", + "name": "Dayan", + "longitude": "100.220718383789", + "latitude": "26.8687934220524", + "offer": "2", + "demand": "14" + }, + { + "type": "port", + "name": "Dalian", + "longitude": "121.6022222", + "latitude": "38.9122222", + "offer": "10", + "demand": "24" + }, + { + "type": "port", + "name": "Chongqing", + "longitude": "106.5527778", + "latitude": "29.5627778", + "offer": "21", + "demand": "12" + }, + { + "type": "port", + "name": "Chengdu", + "longitude": "104.0666667", + "latitude": "30.6666667", + "offer": "22", + "demand": "16" + }, + { + "type": "port", + "name": "Changsha", + "longitude": "112.9666667", + "latitude": "28.2", + "offer": "27", + "demand": "26" + }, + { + "type": "port", + "name": "Beijing", + "longitude": "116.397228240967", + "latitude": "39.9074977414405", + "offer": "11", + "demand": "22" + }, + { + "type": "port", + "name": "Suzhou", + "longitude": "120.6180556", + "latitude": "31.3113889", + "offer": "20", + "demand": "19" + }, + { + "type": "port", + "name": "Shenyang", + "longitude": "123.4327778", + "latitude": "41.7922222", + "offer": "23", + "demand": "2" + }, + { + "type": "port", + "name": "Jilin", + "longitude": "126.5602778", + "latitude": "43.8508333", + "offer": "1", + "demand": "27" + }, + { + "type": "port", + "name": "Harbin", + "longitude": "126.65", + "latitude": "45.75", + "offer": "2", + "demand": "25" + }, + { + "type": "port", + "name": "Fushun", + "longitude": "123.9233333", + "latitude": "41.8558333", + "offer": "7", + "demand": "29" + }, + { + "type": "port", + "name": "Datong", + "longitude": "113.2913889", + "latitude": "40.0936111", + "offer": "1", + "demand": "8" + }, + { + "type": "port", + "name": "Changchun", + "longitude": "125.3227778", + "latitude": "43.88", + "offer": "1", + "demand": "11" + }, + { + "type": "port", + "name": "Baotou", + "longitude": "109.8222222", + "latitude": "40.6522222", + "offer": "12", + "demand": "19" + }, + { + "type": "port", + "name": "Anshan", + "longitude": "122.99", + "latitude": "41.1236111", + "offer": "21", + "demand": "4" + }, + { + "type": "port", + "name": "Medellín", + "longitude": "-75.5361111", + "latitude": "6.2913889", + "offer": "24", + "demand": "13" + }, + { + "type": "port", + "name": "Cali", + "longitude": "-76.5225", + "latitude": "3.4372222", + "offer": "17", + "demand": "7" + }, + { + "type": "port", + "name": "Bogotá", + "longitude": "-74.0833333", + "latitude": "4.6", + "offer": "3", + "demand": "23" + }, + { + "type": "port", + "name": "Barranquilla", + "longitude": "-74.7963889", + "latitude": "10.9638889", + "offer": "16", + "demand": "30" + }, + { + "type": "port", + "name": "Havana", + "longitude": "-82.3641667", + "latitude": "23.1319444", + "offer": "16", + "demand": "8" + }, + { + "type": "port", + "name": "Praha", + "longitude": "14.4241322001241", + "latitude": "50.0878367932108", + "offer": "22", + "demand": "30" + }, + { + "type": "port", + "name": "München", + "longitude": "11.5754914283752", + "latitude": "48.1374325498109", + "offer": "28", + "demand": "14" + }, + { + "type": "port", + "name": "Hamburg", + "longitude": "10.0", + "latitude": "53.55", + "offer": "8", + "demand": "28" + }, + { + "type": "port", + "name": "Berlin", + "longitude": "13.4", + "latitude": "52.5166667", + "offer": "7", + "demand": "18" + }, + { + "type": "port", + "name": "Copenhagen", + "longitude": "12.5709342956543", + "latitude": "55.6776812020993", + "offer": "18", + "demand": "25" + }, + { + "type": "port", + "name": "Santo Domingo", + "longitude": "-69.9", + "latitude": "18.4666667", + "offer": "30", + "demand": "3" + }, + { + "type": "port", + "name": "Juan Dolio", + "longitude": "-69.4166667", + "latitude": "18.4166667", + "offer": "17", + "demand": "5" + }, + { + "type": "port", + "name": "Algiers", + "longitude": "3.0505556", + "latitude": "36.7630556", + "offer": "4", + "demand": "21" + }, + { + "type": "port", + "name": "Quito", + "longitude": "-78.5", + "latitude": "-0.2166667", + "offer": "2", + "demand": "29" + }, + { + "type": "port", + "name": "Guayaquil", + "longitude": "-79.9", + "latitude": "-2.1666667", + "offer": "21", + "demand": "13" + }, + { + "type": "port", + "name": "Cairo", + "longitude": "31.25", + "latitude": "30.05", + "offer": "11", + "demand": "8" + }, + { + "type": "port", + "name": "Al JÄ«zah", + "longitude": "31.2122222", + "latitude": "30.0086111", + "offer": "3", + "demand": "2" + }, + { + "type": "port", + "name": "Alexandria", + "longitude": "29.9191667", + "latitude": "31.1980556", + "offer": "30", + "demand": "17" + }, + { + "type": "port", + "name": "Madrid", + "longitude": "-3.70256423950195", + "latitude": "40.4165020941502", + "offer": "29", + "demand": "28" + }, + { + "type": "port", + "name": "Barcelona", + "longitude": "2.15898513793945", + "latitude": "41.3887868890716", + "offer": "23", + "demand": "13" + }, + { + "type": "port", + "name": "Addis Ababa", + "longitude": "38.7", + "latitude": "9.0333333", + "offer": "6", + "demand": "23" + }, + { + "type": "port", + "name": "Paris", + "longitude": "2.3488", + "latitude": "48.85341", + "offer": "22", + "demand": "18" + }, + { + "type": "port", + "name": "London", + "longitude": "-0.125532746315002", + "latitude": "51.5084152563931", + "offer": "26", + "demand": "15" + }, + { + "type": "port", + "name": "Tbilisi", + "longitude": "44.7908333", + "latitude": "41.725", + "offer": "18", + "demand": "2" + }, + { + "type": "port", + "name": "Kumasi", + "longitude": "-1.6166667", + "latitude": "6.6833333", + "offer": "10", + "demand": "27" + }, + { + "type": "port", + "name": "Accra", + "longitude": "-0.2166667", + "latitude": "5.55", + "offer": "21", + "demand": "28" + }, + { + "type": "port", + "name": "Conakry", + "longitude": "-13.7122222", + "latitude": "9.5091667", + "offer": "7", + "demand": "12" + }, + { + "type": "port", + "name": "Camayenne", + "longitude": "-13.6877778", + "latitude": "9.535", + "offer": "9", + "demand": "16" + }, + { + "type": "port", + "name": "Kowloon", + "longitude": "114.1833333", + "latitude": "22.3166667", + "offer": "2", + "demand": "11" + }, + { + "type": "port", + "name": "Hong Kong", + "longitude": "114.15007352829", + "latitude": "22.2840136009625", + "offer": "25", + "demand": "10" + }, + { + "type": "port", + "name": "Port-au-Prince", + "longitude": "-72.335", + "latitude": "18.5391667", + "offer": "4", + "demand": "14" + }, + { + "type": "port", + "name": "Budapest", + "longitude": "19.0833333", + "latitude": "47.5", + "offer": "19", + "demand": "2" + }, + { + "type": "port", + "name": "Medan", + "longitude": "98.6666667", + "latitude": "3.5833333", + "offer": "24", + "demand": "19" + }, + { + "type": "port", + "name": "Makassar", + "longitude": "119.4386111", + "latitude": "-5.1463889", + "offer": "28", + "demand": "26" + }, + { + "type": "port", + "name": "Tangerang", + "longitude": "106.63", + "latitude": "-6.1780556", + "offer": "17", + "demand": "6" + }, + { + "type": "port", + "name": "Surabaya", + "longitude": "112.7508333", + "latitude": "-7.2491667", + "offer": "30", + "demand": "30" + }, + { + "type": "port", + "name": "Semarang", + "longitude": "110.4166667", + "latitude": "-6.9666667", + "offer": "12", + "demand": "13" + }, + { + "type": "port", + "name": "Palembang", + "longitude": "104.745798110962", + "latitude": "-2.91672533277337", + "offer": "23", + "demand": "2" + }, + { + "type": "port", + "name": "Jakarta", + "longitude": "106.8294444", + "latitude": "-6.1744444", + "offer": "14", + "demand": "20" + }, + { + "type": "port", + "name": "Depok", + "longitude": "106.8186111", + "latitude": "-6.4", + "offer": "21", + "demand": "25" + }, + { + "type": "port", + "name": "Bekasi", + "longitude": "106.9919444", + "latitude": "-6.2366667", + "offer": "11", + "demand": "29" + }, + { + "type": "port", + "name": "Bandung", + "longitude": "107.6205556", + "latitude": "-6.9127778", + "offer": "10", + "demand": "12" + }, + { + "type": "port", + "name": "Dublin", + "longitude": "-6.2488889", + "latitude": "53.3330556", + "offer": "28", + "demand": "10" + }, + { + "type": "port", + "name": "Vish�khapatnam", + "longitude": "83.3", + "latitude": "17.7", + "offer": "24", + "demand": "19" + }, + { + "type": "port", + "name": "Benares", + "longitude": "83.0", + "latitude": "25.3333333", + "offer": "5", + "demand": "27" + }, + { + "type": "port", + "name": "Vadodara", + "longitude": "73.2", + "latitude": "22.3", + "offer": "27", + "demand": "20" + }, + { + "type": "port", + "name": "Th�ne", + "longitude": "72.9666667", + "latitude": "19.2", + "offer": "10", + "demand": "22" + }, + { + "type": "port", + "name": "Teni", + "longitude": "77.4833333", + "latitude": "10.0", + "offer": "21", + "demand": "24" + }, + { + "type": "port", + "name": "SÅ«rat", + "longitude": "72.8333333", + "latitude": "21.1666667", + "offer": "4", + "demand": "17" + }, + { + "type": "port", + "name": "R�jkot", + "longitude": "70.7833333", + "latitude": "22.3", + "offer": "14", + "demand": "7" + }, + { + "type": "port", + "name": "Pune", + "longitude": "73.8553547859192", + "latitude": "18.5195742288075", + "offer": "30", + "demand": "12" + }, + { + "type": "port", + "name": "Pimpri", + "longitude": "73.8", + "latitude": "18.6166667", + "offer": "4", + "demand": "16" + }, + { + "type": "port", + "name": "Patna", + "longitude": "85.1166667", + "latitude": "25.6", + "offer": "9", + "demand": "25" + }, + { + "type": "port", + "name": "N�sik", + "longitude": "73.8", + "latitude": "19.9833333", + "offer": "3", + "demand": "5" + }, + { + "type": "port", + "name": "N�gpur", + "longitude": "79.1", + "latitude": "21.15", + "offer": "14", + "demand": "8" + }, + { + "type": "port", + "name": "Meerut", + "longitude": "77.7", + "latitude": "28.9833333", + "offer": "10", + "demand": "3" + }, + { + "type": "port", + "name": "Chennai", + "longitude": "80.2784729003906", + "latitude": "13.0878385345075", + "offer": "28", + "demand": "4" + }, + { + "type": "port", + "name": "Ludhi�na", + "longitude": "75.85", + "latitude": "30.9", + "offer": "23", + "demand": "15" + }, + { + "type": "port", + "name": "Lucknow", + "longitude": "80.9166667", + "latitude": "26.85", + "offer": "8", + "demand": "22" + }, + { + "type": "port", + "name": "K�npur", + "longitude": "80.35", + "latitude": "26.4666667", + "offer": "1", + "demand": "2" + }, + { + "type": "port", + "name": "Kaly�n", + "longitude": "73.15", + "latitude": "19.25", + "offer": "5", + "demand": "19" + }, + { + "type": "port", + "name": "Jaipur", + "longitude": "75.8166667", + "latitude": "26.9166667", + "offer": "20", + "demand": "25" + }, + { + "type": "port", + "name": "Jabalpur", + "longitude": "79.9500632286072", + "latitude": "23.1669748590236", + "offer": "27", + "demand": "2" + }, + { + "type": "port", + "name": "Indore", + "longitude": "75.8333015441895", + "latitude": "22.7179235376322", + "offer": "21", + "demand": "27" + }, + { + "type": "port", + "name": "Hyder�b�d", + "longitude": "78.4744444", + "latitude": "17.3752778", + "offer": "23", + "demand": "6" + }, + { + "type": "port", + "name": "H�ora", + "longitude": "88.3102778", + "latitude": "22.5891667", + "offer": "24", + "demand": "5" + }, + { + "type": "port", + "name": "Gorakhpur", + "longitude": "75.6833333", + "latitude": "29.45", + "offer": "8", + "demand": "29" + }, + { + "type": "port", + "name": "Gh�zi�b�d", + "longitude": "77.4333333", + "latitude": "28.6666667", + "offer": "4", + "demand": "9" + }, + { + "type": "port", + "name": "FarÄ«d�b�d", + "longitude": "77.3166667", + "latitude": "28.4333333", + "offer": "16", + "demand": "30" + }, + { + "type": "port", + "name": "Delhi", + "longitude": "77.2166667", + "latitude": "28.6666667", + "offer": "25", + "demand": "20" + }, + { + "type": "port", + "name": "Calcutta", + "longitude": "88.3697222", + "latitude": "22.5697222", + "offer": "12", + "demand": "28" + }, + { + "type": "port", + "name": "Mumbai", + "longitude": "72.8479385375977", + "latitude": "19.0144100168904", + "offer": "9", + "demand": "19" + }, + { + "type": "port", + "name": "Bhop�l", + "longitude": "77.4", + "latitude": "23.2666667", + "offer": "21", + "demand": "2" + }, + { + "type": "port", + "name": "Bengaluru", + "longitude": "77.6032912731171", + "latitude": "12.9762266976805", + "offer": "14", + "demand": "15" + }, + { + "type": "port", + "name": "Aurang�b�d", + "longitude": "75.3333333", + "latitude": "19.8833333", + "offer": "11", + "demand": "10" + }, + { + "type": "port", + "name": "Amritsar", + "longitude": "74.8655556", + "latitude": "31.6330556", + "offer": "14", + "demand": "17" + }, + { + "type": "port", + "name": "Allah�b�d", + "longitude": "81.85", + "latitude": "25.45", + "offer": "13", + "demand": "21" + }, + { + "type": "port", + "name": "Ahmad�b�d", + "longitude": "72.6166667", + "latitude": "23.0333333", + "offer": "12", + "demand": "18" + }, + { + "type": "port", + "name": "Ä€gra", + "longitude": "78.0166667", + "latitude": "27.1833333", + "offer": "5", + "demand": "5" + }, + { + "type": "port", + "name": "Baghdad", + "longitude": "44.3938889", + "latitude": "33.3386111", + "offer": "13", + "demand": "15" + }, + { + "type": "port", + "name": "Al MawÅŸil al JadÄ«dah", + "longitude": "43.0861111", + "latitude": "36.3291667", + "offer": "5", + "demand": "18" + }, + { + "type": "port", + "name": "Mosul", + "longitude": "43.1188889", + "latitude": "36.335", + "offer": "17", + "demand": "8" + }, + { + "type": "port", + "name": "Al BaÅŸrah", + "longitude": "47.8191667", + "latitude": "30.4941667", + "offer": "25", + "demand": "29" + }, + { + "type": "port", + "name": "Al BaÅŸrah al QadÄ«mah", + "longitude": "47.8175", + "latitude": "30.4955556", + "offer": "5", + "demand": "30" + }, + { + "type": "port", + "name": "Tehr�n", + "longitude": "51.4244444", + "latitude": "35.6719444", + "offer": "24", + "demand": "4" + }, + { + "type": "port", + "name": "TabrÄ«z", + "longitude": "46.2919444", + "latitude": "38.08", + "offer": "11", + "demand": "8" + }, + { + "type": "port", + "name": "ShÄ«r�z", + "longitude": "52.5383333", + "latitude": "29.615", + "offer": "15", + "demand": "9" + }, + { + "type": "port", + "name": "Mashhad", + "longitude": "59.6119444", + "latitude": "36.2958333", + "offer": "21", + "demand": "20" + }, + { + "type": "port", + "name": "Karaj", + "longitude": "50.9982025623322", + "latitude": "35.8287611261052", + "offer": "16", + "demand": "14" + }, + { + "type": "port", + "name": "EÅŸfah�n", + "longitude": "51.6713889", + "latitude": "32.6597222", + "offer": "7", + "demand": "26" + }, + { + "type": "port", + "name": "Roma", + "longitude": "12.4833333", + "latitude": "41.9", + "offer": "23", + "demand": "22" + }, + { + "type": "port", + "name": "Milano", + "longitude": "9.1895055770874", + "latitude": "45.4642693810258", + "offer": "3", + "demand": "13" + }, + { + "type": "port", + "name": "Amman", + "longitude": "35.9333333", + "latitude": "31.95", + "offer": "29", + "demand": "9" + }, + { + "type": "port", + "name": "Yono", + "longitude": "139.6333333", + "latitude": "35.8833333", + "offer": "9", + "demand": "17" + }, + { + "type": "port", + "name": "Yokohama", + "longitude": "139.65", + "latitude": "35.45", + "offer": "8", + "demand": "23" + }, + { + "type": "port", + "name": "Tokyo", + "longitude": "139.691677093506", + "latitude": "35.6895265930799", + "offer": "19", + "demand": "17" + }, + { + "type": "port", + "name": "Ã…Å’saka", + "longitude": "135.502181947231", + "latitude": "34.6937398415059", + "offer": "21", + "demand": "19" + }, + { + "type": "port", + "name": "Nagoya", + "longitude": "136.906409561634", + "latitude": "35.1814727966958", + "offer": "3", + "demand": "17" + }, + { + "type": "port", + "name": "Kyoto", + "longitude": "135.75385093689", + "latitude": "35.02106999142", + "offer": "20", + "demand": "11" + }, + { + "type": "port", + "name": "K�be", + "longitude": "135.1666667", + "latitude": "34.6833333", + "offer": "20", + "demand": "12" + }, + { + "type": "port", + "name": "Kawasaki", + "longitude": "139.7172222", + "latitude": "35.5205556", + "offer": "23", + "demand": "22" + }, + { + "type": "port", + "name": "Hiroshima", + "longitude": "132.45", + "latitude": "34.4", + "offer": "28", + "demand": "18" + }, + { + "type": "port", + "name": "Fukuoka", + "longitude": "130.4", + "latitude": "33.5833333", + "offer": "16", + "demand": "7" + }, + { + "type": "port", + "name": "Sendai", + "longitude": "140.8847222", + "latitude": "38.2547222", + "offer": "17", + "demand": "5" + }, + { + "type": "port", + "name": "Sapporo", + "longitude": "141.3538889", + "latitude": "43.0547222", + "offer": "5", + "demand": "10" + }, + { + "type": "port", + "name": "Saitama", + "longitude": "139.656572341919", + "latitude": "35.9080659046769", + "offer": "20", + "demand": "9" + }, + { + "type": "port", + "name": "Nairobi", + "longitude": "36.8166667", + "latitude": "-1.2833333", + "offer": "15", + "demand": "2" + }, + { + "type": "port", + "name": "Phnom Penh", + "longitude": "104.9166667", + "latitude": "11.55", + "offer": "6", + "demand": "5" + }, + { + "type": "port", + "name": "Pyongyang", + "longitude": "125.7547222", + "latitude": "39.0194444", + "offer": "14", + "demand": "10" + }, + { + "type": "port", + "name": "Taej�n", + "longitude": "127.4197222", + "latitude": "36.3213889", + "offer": "26", + "demand": "22" + }, + { + "type": "port", + "name": "Taegu", + "longitude": "128.5911111", + "latitude": "35.8702778", + "offer": "9", + "demand": "13" + }, + { + "type": "port", + "name": "Suw�n", + "longitude": "127.0191667", + "latitude": "37.2841667", + "offer": "16", + "demand": "8" + }, + { + "type": "port", + "name": "Seoul", + "longitude": "126.9997222", + "latitude": "37.5663889", + "offer": "4", + "demand": "15" + }, + { + "type": "port", + "name": "Pusan", + "longitude": "129.0402778", + "latitude": "35.1027778", + "offer": "15", + "demand": "26" + }, + { + "type": "port", + "name": "Kwangju", + "longitude": "126.9155556", + "latitude": "35.1547222", + "offer": "19", + "demand": "4" + }, + { + "type": "port", + "name": "Inch�n", + "longitude": "126.7316667", + "latitude": "37.4536111", + "offer": "6", + "demand": "4" + }, + { + "type": "port", + "name": "S�ngnam", + "longitude": "127.1377778", + "latitude": "37.4386111", + "offer": "22", + "demand": "6" + }, + { + "type": "port", + "name": "Almaty", + "longitude": "76.95", + "latitude": "43.25", + "offer": "12", + "demand": "9" + }, + { + "type": "port", + "name": "Ras BayrÅ«t", + "longitude": "35.4833333", + "latitude": "33.9", + "offer": "9", + "demand": "25" + }, + { + "type": "port", + "name": "Beirut", + "longitude": "35.5097222", + "latitude": "33.8719444", + "offer": "29", + "demand": "15" + }, + { + "type": "port", + "name": "Tripoli", + "longitude": "13.18", + "latitude": "32.8925", + "offer": "13", + "demand": "8" + }, + { + "type": "port", + "name": "Rabat", + "longitude": "-6.83", + "latitude": "34.02", + "offer": "18", + "demand": "15" + }, + { + "type": "port", + "name": "Casablanca", + "longitude": "-7.61", + "latitude": "33.59", + "offer": "5", + "demand": "5" + }, + { + "type": "port", + "name": "Antananarivo", + "longitude": "47.5166667", + "latitude": "-18.9166667", + "offer": "6", + "demand": "16" + }, + { + "type": "port", + "name": "Bamako", + "longitude": "-8.0", + "latitude": "12.65", + "offer": "17", + "demand": "24" + }, + { + "type": "port", + "name": "Rangoon", + "longitude": "96.1561111", + "latitude": "16.8052778", + "offer": "2", + "demand": "10" + }, + { + "type": "port", + "name": "Mandalay", + "longitude": "96.0833333", + "latitude": "22.0", + "offer": "12", + "demand": "30" + }, + { + "type": "port", + "name": "Puebla de Zaragoza", + "longitude": "-98.2", + "latitude": "19.05", + "offer": "20", + "demand": "1" + }, + { + "type": "port", + "name": "Ecatepec", + "longitude": "-99.0525", + "latitude": "19.6011111", + "offer": "15", + "demand": "28" + }, + { + "type": "port", + "name": "Ciudad Nezahualcóyotl", + "longitude": "-99.0330556", + "latitude": "19.4136111", + "offer": "12", + "demand": "14" + }, + { + "type": "port", + "name": "Mexico City", + "longitude": "-99.1386111", + "latitude": "19.4341667", + "offer": "3", + "demand": "14" + }, + { + "type": "port", + "name": "Tijuana", + "longitude": "-117.0166667", + "latitude": "32.5333333", + "offer": "25", + "demand": "29" + }, + { + "type": "port", + "name": "Monterrey", + "longitude": "-100.3166667", + "latitude": "25.6666667", + "offer": "22", + "demand": "10" + }, + { + "type": "port", + "name": "León", + "longitude": "-101.6666667", + "latitude": "21.1166667", + "offer": "18", + "demand": "7" + }, + { + "type": "port", + "name": "Guadalajara", + "longitude": "-103.3333333", + "latitude": "20.6666667", + "offer": "6", + "demand": "30" + }, + { + "type": "port", + "name": "Ciudad Juárez", + "longitude": "-106.4833333", + "latitude": "31.7333333", + "offer": "18", + "demand": "27" + }, + { + "type": "port", + "name": "Kuala Lumpur", + "longitude": "101.7", + "latitude": "3.1666667", + "offer": "22", + "demand": "8" + }, + { + "type": "port", + "name": "Maputo", + "longitude": "32.5891667", + "latitude": "-25.9652778", + "offer": "25", + "demand": "21" + }, + { + "type": "port", + "name": "Port Harcourt", + "longitude": "6.9986111", + "latitude": "4.7891667", + "offer": "14", + "demand": "11" + }, + { + "type": "port", + "name": "Maiduguri", + "longitude": "13.16", + "latitude": "11.845", + "offer": "2", + "demand": "3" + }, + { + "type": "port", + "name": "Lagos", + "longitude": "3.3958333", + "latitude": "6.4530556", + "offer": "1", + "demand": "29" + }, + { + "type": "port", + "name": "Kano", + "longitude": "8.5166667", + "latitude": "11.9963889", + "offer": "2", + "demand": "18" + }, + { + "type": "port", + "name": "Kaduna", + "longitude": "7.4402778", + "latitude": "10.5230556", + "offer": "6", + "demand": "16" + }, + { + "type": "port", + "name": "Ibadan", + "longitude": "3.8963889", + "latitude": "7.3877778", + "offer": "22", + "demand": "25" + }, + { + "type": "port", + "name": "Benin-City", + "longitude": "5.6333333", + "latitude": "6.3333333", + "offer": "10", + "demand": "7" + }, + { + "type": "port", + "name": "Kathmandu", + "longitude": "85.3166667", + "latitude": "27.7166667", + "offer": "25", + "demand": "4" + }, + { + "type": "port", + "name": "Lima", + "longitude": "-77.05", + "latitude": "-12.05", + "offer": "11", + "demand": "30" + }, + { + "type": "port", + "name": "Manila", + "longitude": "120.9822222", + "latitude": "14.6041667", + "offer": "17", + "demand": "30" + }, + { + "type": "port", + "name": "Davao", + "longitude": "125.6127778", + "latitude": "7.0730556", + "offer": "12", + "demand": "1" + }, + { + "type": "port", + "name": "R�walpindi", + "longitude": "73.0666667", + "latitude": "33.6", + "offer": "21", + "demand": "21" + }, + { + "type": "port", + "name": "Pesh�war", + "longitude": "71.5733333", + "latitude": "34.0077778", + "offer": "24", + "demand": "28" + }, + { + "type": "port", + "name": "Mult�n", + "longitude": "71.4752778", + "latitude": "30.1955556", + "offer": "25", + "demand": "22" + }, + { + "type": "port", + "name": "Lahore", + "longitude": "74.3436111", + "latitude": "31.5497222", + "offer": "26", + "demand": "4" + }, + { + "type": "port", + "name": "Kar�chi", + "longitude": "67.05", + "latitude": "24.8666667", + "offer": "12", + "demand": "30" + }, + { + "type": "port", + "name": "Hyder�b�d0", + "longitude": "68.3666667", + "latitude": "25.3666667", + "offer": "15", + "demand": "9" + }, + { + "type": "port", + "name": "Gujr�nw�la", + "longitude": "74.1833333", + "latitude": "32.15", + "offer": "21", + "demand": "3" + }, + { + "type": "port", + "name": "Faisal�b�d", + "longitude": "73.0833333", + "latitude": "31.4166667", + "offer": "1", + "demand": "10" + }, + { + "type": "port", + "name": "Warsaw", + "longitude": "21.0", + "latitude": "52.25", + "offer": "16", + "demand": "2" + }, + { + "type": "port", + "name": "Asunción", + "longitude": "-57.6666667", + "latitude": "-25.2666667", + "offer": "16", + "demand": "22" + }, + { + "type": "port", + "name": "BucureÅŸti", + "longitude": "26.1", + "latitude": "44.4333333", + "offer": "25", + "demand": "21" + }, + { + "type": "port", + "name": "Belgrade", + "longitude": "20.4680556", + "latitude": "44.8186111", + "offer": "9", + "demand": "3" + }, + { + "type": "port", + "name": "Volgograd", + "longitude": "44.5858333", + "latitude": "48.8047222", + "offer": "13", + "demand": "27" + }, + { + "type": "port", + "name": "Ufa", + "longitude": "56.0375", + "latitude": "54.775", + "offer": "23", + "demand": "19" + }, + { + "type": "port", + "name": "Saint Petersburg", + "longitude": "30.2641667", + "latitude": "59.8944444", + "offer": "11", + "demand": "17" + }, + { + "type": "port", + "name": "Samara", + "longitude": "50.15", + "latitude": "53.2", + "offer": "10", + "demand": "23" + }, + { + "type": "port", + "name": "Rostov-na-Donu", + "longitude": "39.7138889", + "latitude": "47.2363889", + "offer": "12", + "demand": "16" + }, + { + "type": "port", + "name": "Nizhniy Novgorod", + "longitude": "44.002046585083", + "latitude": "56.3286733202717", + "offer": "29", + "demand": "20" + }, + { + "type": "port", + "name": "Moscow", + "longitude": "37.6155556", + "latitude": "55.7522222", + "offer": "14", + "demand": "25" + }, + { + "type": "port", + "name": "Kazan", + "longitude": "49.1333333", + "latitude": "55.75", + "offer": "17", + "demand": "12" + }, + { + "type": "port", + "name": "Yekaterinburg", + "longitude": "60.6125", + "latitude": "56.8575", + "offer": "17", + "demand": "30" + }, + { + "type": "port", + "name": "Omsk", + "longitude": "73.4", + "latitude": "55.0", + "offer": "24", + "demand": "20" + }, + { + "type": "port", + "name": "Novosibirsk", + "longitude": "82.9344444", + "latitude": "55.0411111", + "offer": "29", + "demand": "23" + }, + { + "type": "port", + "name": "Chelyabinsk", + "longitude": "61.4297222", + "latitude": "55.1544444", + "offer": "2", + "demand": "2" + }, + { + "type": "port", + "name": "Mecca", + "longitude": "39.8261111", + "latitude": "21.4266667", + "offer": "21", + "demand": "3" + }, + { + "type": "port", + "name": "Jiddah", + "longitude": "39.2191667", + "latitude": "21.5169444", + "offer": "21", + "demand": "2" + }, + { + "type": "port", + "name": "Riyadh", + "longitude": "46.7727778", + "latitude": "24.6408333", + "offer": "9", + "demand": "3" + }, + { + "type": "port", + "name": "Medina", + "longitude": "39.6141667", + "latitude": "24.4686111", + "offer": "29", + "demand": "29" + }, + { + "type": "port", + "name": "Omdurman", + "longitude": "32.4372222", + "latitude": "15.6361111", + "offer": "8", + "demand": "27" + }, + { + "type": "port", + "name": "Khartoum", + "longitude": "32.5341667", + "latitude": "15.5880556", + "offer": "12", + "demand": "16" + }, + { + "type": "port", + "name": "Stockholm", + "longitude": "18.0649030208588", + "latitude": "59.3325765361753", + "offer": "14", + "demand": "5" + }, + { + "type": "port", + "name": "Singapore", + "longitude": "103.8558333", + "latitude": "1.2930556", + "offer": "9", + "demand": "14" + }, + { + "type": "port", + "name": "Grand Dakar", + "longitude": "-17.4552778", + "latitude": "14.7088889", + "offer": "18", + "demand": "10" + }, + { + "type": "port", + "name": "Dakar", + "longitude": "-17.4438858032227", + "latitude": "14.6951118854684", + "offer": "19", + "demand": "9" + }, + { + "type": "port", + "name": "Mogadishu", + "longitude": "45.3419172763824", + "latitude": "2.03913722186582", + "offer": "30", + "demand": "28" + }, + { + "type": "port", + "name": "Aleppo", + "longitude": "37.1586111", + "latitude": "36.2027778", + "offer": "3", + "demand": "4" + }, + { + "type": "port", + "name": "Damascus", + "longitude": "36.3", + "latitude": "33.5", + "offer": "24", + "demand": "4" + }, + { + "type": "port", + "name": "Bangkok", + "longitude": "100.5166667", + "latitude": "13.75", + "offer": "4", + "demand": "7" + }, + { + "type": "port", + "name": "Ä°zmir", + "longitude": "27.1502778", + "latitude": "38.4072222", + "offer": "25", + "demand": "24" + }, + { + "type": "port", + "name": "Gaziantep", + "longitude": "37.3825", + "latitude": "37.0594444", + "offer": "5", + "demand": "22" + }, + { + "type": "port", + "name": "Ankara", + "longitude": "32.8644444", + "latitude": "39.9272222", + "offer": "18", + "demand": "23" + }, + { + "type": "port", + "name": "Adana", + "longitude": "35.3288889", + "latitude": "37.0016667", + "offer": "8", + "demand": "17" + }, + { + "type": "port", + "name": "Ä°stanbul", + "longitude": "28.9496612548828", + "latitude": "41.0138429552247", + "offer": "19", + "demand": "16" + }, + { + "type": "port", + "name": "Bursa", + "longitude": "29.0611111", + "latitude": "40.1916667", + "offer": "20", + "demand": "20" + }, + { + "type": "port", + "name": "Taipei", + "longitude": "121.525", + "latitude": "25.0391667", + "offer": "13", + "demand": "3" + }, + { + "type": "port", + "name": "Tai-chung-shih", + "longitude": "120.6866667", + "latitude": "24.1483333", + "offer": "29", + "demand": "11" + }, + { + "type": "port", + "name": "Kao-hsiung", + "longitude": "120.3013889", + "latitude": "22.6177778", + "offer": "24", + "demand": "1" + }, + { + "type": "port", + "name": "Dar es Salaam", + "longitude": "39.2833333", + "latitude": "-6.8", + "offer": "26", + "demand": "23" + }, + { + "type": "port", + "name": "Odesa", + "longitude": "30.7326221466064", + "latitude": "46.4774726081453", + "offer": "19", + "demand": "25" + }, + { + "type": "port", + "name": "Kiev", + "longitude": "30.5166667", + "latitude": "50.4333333", + "offer": "18", + "demand": "12" + }, + { + "type": "port", + "name": "Kharkiv", + "longitude": "36.25", + "latitude": "50.0", + "offer": "4", + "demand": "14" + }, + { + "type": "port", + "name": "Donetsk", + "longitude": "37.8", + "latitude": "48.0", + "offer": "9", + "demand": "19" + }, + { + "type": "port", + "name": "Dnipropetrovsk", + "longitude": "34.9833333", + "latitude": "48.45", + "offer": "6", + "demand": "18" + }, + { + "type": "port", + "name": "Kampala", + "longitude": "32.5655556", + "latitude": "0.3155556", + "offer": "27", + "demand": "23" + }, + { + "type": "port", + "name": "Philadelphia", + "longitude": "-75.163789", + "latitude": "39.952335", + "offer": "22", + "demand": "2" + }, + { + "type": "port", + "name": "Dallas", + "longitude": "-96.8066667", + "latitude": "32.7830556", + "offer": "30", + "demand": "29" + }, + { + "type": "port", + "name": "Houston", + "longitude": "-95.3632715", + "latitude": "29.7632836", + "offer": "7", + "demand": "3" + }, + { + "type": "port", + "name": "San Antonio", + "longitude": "-98.4936282", + "latitude": "29.4241219", + "offer": "26", + "demand": "20" + }, + { + "type": "port", + "name": "Chicago", + "longitude": "-87.6500523", + "latitude": "41.850033", + "offer": "22", + "demand": "8" + }, + { + "type": "port", + "name": "Brooklyn", + "longitude": "-73.9495823", + "latitude": "40.6501038", + "offer": "14", + "demand": "2" + }, + { + "type": "port", + "name": "New York City", + "longitude": "-74.0059729", + "latitude": "40.7142691", + "offer": "25", + "demand": "24" + }, + { + "type": "port", + "name": "Phoenix", + "longitude": "-112.0740373", + "latitude": "33.4483771", + "offer": "30", + "demand": "26" + }, + { + "type": "port", + "name": "Los Angeles", + "longitude": "-118.2436849", + "latitude": "34.0522342", + "offer": "27", + "demand": "10" + }, + { + "type": "port", + "name": "San Diego", + "longitude": "-117.1572551", + "latitude": "32.7153292", + "offer": "13", + "demand": "18" + }, + { + "type": "port", + "name": "Montevideo", + "longitude": "-56.1708333", + "latitude": "-34.8580556", + "offer": "26", + "demand": "3" + }, + { + "type": "port", + "name": "Tashkent", + "longitude": "69.25", + "latitude": "41.3166667", + "offer": "23", + "demand": "1" + }, + { + "type": "port", + "name": "Valencia", + "longitude": "-68.0038889", + "latitude": "10.1805556", + "offer": "7", + "demand": "27" + }, + { + "type": "port", + "name": "Maracaibo", + "longitude": "-71.6405556", + "latitude": "10.6316667", + "offer": "12", + "demand": "1" + }, + { + "type": "port", + "name": "Caracas", + "longitude": "-66.9166667", + "latitude": "10.5", + "offer": "16", + "demand": "2" + }, + { + "type": "port", + "name": "Thành phố Hồ Chí Minh", + "longitude": "106.6666667", + "latitude": "10.75", + "offer": "30", + "demand": "26" + }, + { + "type": "port", + "name": "Hà Ná»™i", + "longitude": "105.85", + "latitude": "21.0333333", + "offer": "3", + "demand": "15" + }, + { + "type": "port", + "name": "Sanaa", + "longitude": "44.2066667", + "latitude": "15.3547222", + "offer": "9", + "demand": "2" + }, + { + "type": "port", + "name": "Soweto", + "longitude": "27.8666667", + "latitude": "-26.2666667", + "offer": "19", + "demand": "25" + }, + { + "type": "port", + "name": "Pretoria", + "longitude": "28.2294444", + "latitude": "-25.7069444", + "offer": "26", + "demand": "6" + }, + { + "type": "port", + "name": "Johannesburg", + "longitude": "28.0833333", + "latitude": "-26.2", + "offer": "8", + "demand": "4" + }, + { + "type": "port", + "name": "Durban", + "longitude": "31.0166667", + "latitude": "-29.85", + "offer": "19", + "demand": "19" + }, + { + "type": "port", + "name": "Cape Town", + "longitude": "18.4166667", + "latitude": "-33.9166667", + "offer": "5", + "demand": "24" + }, + { + "type": "port", + "name": "Lusaka", + "longitude": "28.2833333", + "latitude": "-15.4166667", + "offer": "18", + "demand": "11" + }, + { + "type": "port", + "name": "Harare", + "longitude": "31.0447222", + "latitude": "-17.8177778", + "offer": "3", + "demand": "9" + } +, { + "type": "legs", + "name": "leg0", + "stops": [ + { + "name": "port00", + "port": { + "_reference": "Damascus" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "14" + }, + { + "name": "port01", + "port": { + "_reference": "Lima" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + }, + { + "name": "port02", + "port": { + "_reference": "Jaipur" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "1" + }, + { + "name": "port03", + "port": { + "_reference": "Nova Iguaçu" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + } + ] + } +, { + "type": "legs", + "name": "leg1", + "stops": [ + { + "name": "port10", + "port": { + "_reference": "Taiyuan" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "1" + }, + { + "name": "port11", + "port": { + "_reference": "Melbourne" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port12", + "port": { + "_reference": "Ä€gra" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "5" + }, + { + "name": "port13", + "port": { + "_reference": "Pusan" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "2" + } + ] + } +, { + "type": "legs", + "name": "leg2", + "stops": [ + { + "name": "port20", + "port": { + "_reference": "Toronto" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port21", + "port": { + "_reference": "Dublin" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "0" + }, + { + "name": "port22", + "port": { + "_reference": "Odesa" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port23", + "port": { + "_reference": "N�sik" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + } + ] + } +, { + "type": "legs", + "name": "leg3", + "stops": [ + { + "name": "port30", + "port": { + "_reference": "Damascus" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "8" + }, + { + "name": "port31", + "port": { + "_reference": "Odesa" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "2" + }, + { + "name": "port32", + "port": { + "_reference": "Liuyang" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "1" + }, + { + "name": "port33", + "port": { + "_reference": "Aleppo" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "10" + } + ] + } +, { + "type": "legs", + "name": "leg4", + "stops": [ + { + "name": "port40", + "port": { + "_reference": "Datong" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port41", + "port": { + "_reference": "Guangzhou" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "14" + }, + { + "name": "port42", + "port": { + "_reference": "Goiânia" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "14" + }, + { + "name": "port43", + "port": { + "_reference": "K�npur" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + } + ] + } +, { + "type": "legs", + "name": "leg5", + "stops": [ + { + "name": "port50", + "port": { + "_reference": "Taiyuan" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "10" + }, + { + "name": "port51", + "port": { + "_reference": "Medellín" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "8" + }, + { + "name": "port52", + "port": { + "_reference": "Yekaterinburg" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "12" + }, + { + "name": "port53", + "port": { + "_reference": "Taiyuan" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "9" + } + ] + } +, { + "type": "legs", + "name": "leg6", + "stops": [ + { + "name": "port60", + "port": { + "_reference": "Mecca" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "5" + }, + { + "name": "port61", + "port": { + "_reference": "Ciudad Juárez" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port62", + "port": { + "_reference": "Bekasi" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "5" + }, + { + "name": "port63", + "port": { + "_reference": "Minsk" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "10" + } + ] + } +, { + "type": "legs", + "name": "leg7", + "stops": [ + { + "name": "port70", + "port": { + "_reference": "Tianjin" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "0" + }, + { + "name": "port71", + "port": { + "_reference": "Ã…Å’saka" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "9" + }, + { + "name": "port72", + "port": { + "_reference": "Kuala Lumpur" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "8" + }, + { + "name": "port73", + "port": { + "_reference": "Ciudad Nezahualcóyotl" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "2" + } + ] + } +, { + "type": "legs", + "name": "leg8", + "stops": [ + { + "name": "port80", + "port": { + "_reference": "Ciudad Juárez" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "13" + }, + { + "name": "port81", + "port": { + "_reference": "Fukuoka" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "10" + }, + { + "name": "port82", + "port": { + "_reference": "Donetsk" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "12" + }, + { + "name": "port83", + "port": { + "_reference": "Barranquilla" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "10" + } + ] + } +, { + "type": "legs", + "name": "leg9", + "stops": [ + { + "name": "port90", + "port": { + "_reference": "Aleppo" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "5" + }, + { + "name": "port91", + "port": { + "_reference": "Jabalpur" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "3" + }, + { + "name": "port92", + "port": { + "_reference": "Donetsk" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "1" + }, + { + "name": "port93", + "port": { + "_reference": "Xinyang" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "8" + } + ] + } +, { + "type": "legs", + "name": "leg10", + "stops": [ + { + "name": "port100", + "port": { + "_reference": "Luoyang" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "11" + }, + { + "name": "port101", + "port": { + "_reference": "Benares" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + }, + { + "name": "port102", + "port": { + "_reference": "Adana" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + }, + { + "name": "port103", + "port": { + "_reference": "Taegu" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "4" + } + ] + } +, { + "type": "legs", + "name": "leg11", + "stops": [ + { + "name": "port110", + "port": { + "_reference": "Kinshasa" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "13" + }, + { + "name": "port111", + "port": { + "_reference": "Belém" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "2" + }, + { + "name": "port112", + "port": { + "_reference": "Amman" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "11" + }, + { + "name": "port113", + "port": { + "_reference": "Mexico City" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "2" + } + ] + } +, { + "type": "legs", + "name": "leg12", + "stops": [ + { + "name": "port120", + "port": { + "_reference": "Chicago" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "13" + }, + { + "name": "port121", + "port": { + "_reference": "Barranquilla" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port122", + "port": { + "_reference": "Kawasaki" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "10" + }, + { + "name": "port123", + "port": { + "_reference": "Shantou" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "9" + } + ] + } +, { + "type": "legs", + "name": "leg13", + "stops": [ + { + "name": "port130", + "port": { + "_reference": "Kiev" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + }, + { + "name": "port131", + "port": { + "_reference": "Camayenne" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "5" + }, + { + "name": "port132", + "port": { + "_reference": "Al BaÅŸrah al QadÄ«mah" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "13" + }, + { + "name": "port133", + "port": { + "_reference": "Perth" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + } + ] + } +, { + "type": "legs", + "name": "leg14", + "stops": [ + { + "name": "port140", + "port": { + "_reference": "Riyadh" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "12" + }, + { + "name": "port141", + "port": { + "_reference": "Casablanca" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "1" + }, + { + "name": "port142", + "port": { + "_reference": "Kano" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "5" + }, + { + "name": "port143", + "port": { + "_reference": "Mashhad" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "3" + } + ] + } +, { + "type": "legs", + "name": "leg15", + "stops": [ + { + "name": "port150", + "port": { + "_reference": "Al MawÅŸil al JadÄ«dah" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "4" + }, + { + "name": "port151", + "port": { + "_reference": "Taegu" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + }, + { + "name": "port152", + "port": { + "_reference": "Bhop�l" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "10" + }, + { + "name": "port153", + "port": { + "_reference": "Campinas" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "14" + } + ] + } +, { + "type": "legs", + "name": "leg16", + "stops": [ + { + "name": "port160", + "port": { + "_reference": "Kar�chi" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port161", + "port": { + "_reference": "Milano" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + }, + { + "name": "port162", + "port": { + "_reference": "Lima" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "2" + }, + { + "name": "port163", + "port": { + "_reference": "Calcutta" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "6" + } + ] + } +, { + "type": "legs", + "name": "leg17", + "stops": [ + { + "name": "port170", + "port": { + "_reference": "Sapporo" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "1" + }, + { + "name": "port171", + "port": { + "_reference": "Sapporo" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + }, + { + "name": "port172", + "port": { + "_reference": "Medellín" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "0" + }, + { + "name": "port173", + "port": { + "_reference": "Amman" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "13" + } + ] + } +, { + "type": "legs", + "name": "leg18", + "stops": [ + { + "name": "port180", + "port": { + "_reference": "Depok" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "12" + }, + { + "name": "port181", + "port": { + "_reference": "Jieyang" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "1" + }, + { + "name": "port182", + "port": { + "_reference": "Faisal�b�d" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "8" + }, + { + "name": "port183", + "port": { + "_reference": "Ã…Å’saka" + }, + "date": "Thu Nov 25 08:20:25 GMT+0100 2010", + "capacity": "7" + } + ] + } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/mapDataFixed.json b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/mapDataFixed.json new file mode 100644 index 0000000..fdc4bbe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/data/mapDataFixed.json @@ -0,0 +1,41467 @@ +{ + "identifier": "name", + "items": [ + { + "demand": 15, + "latitude": "+25.2833328", + "longitude": "+51.5333328", + "name": "QADOH", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+43.5499992", + "longitude": "+10.3166666", + "name": "ITLIV", + "offer": 20, + "type": "port" + }, + { + "demand": 4, + "latitude": "+45.4636889", + "longitude": "+9.1881408", + "name": "ITMIL", + "offer": 0, + "type": "port" + }, + { + "demand": 2, + "latitude": "+44.6470798", + "longitude": "+10.92522", + "name": "ITMOD", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+62.4666672", + "longitude": "+6.1666665", + "name": "NOAES", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+40.8333321", + "longitude": "+14.2500000", + "name": "ITNAP", + "offer": 26, + "type": "port" + }, + { + "demand": 32, + "latitude": "+57.6969943", + "longitude": "+11.9865", + "name": "SEGOT", + "offer": 50, + "type": "port" + }, + { + "demand": 15, + "latitude": "+60.4000015", + "longitude": "+5.3166666", + "name": "NOBGO", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+56.0499992", + "longitude": "+12.6833334", + "name": "SEHEL", + "offer": 4, + "type": "port" + }, + { + "demand": 88, + "latitude": "+6.9166665", + "longitude": "+79.8499985", + "name": "LKCMB", + "offer": 64, + "type": "port" + }, + { + "demand": 8, + "latitude": "+45.4095683", + "longitude": "+11.8765886", + "name": "ITPDA", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+41.0000000", + "longitude": "+28.9666672", + "name": "TRIST", + "offer": 2, + "type": "port" + }, + { + "demand": 15, + "latitude": "+38.4166679", + "longitude": "+27.1499996", + "name": "TRIZM", + "offer": 20, + "type": "port" + }, + { + "demand": 24, + "latitude": "+31.8500004", + "longitude": "-116.5999985", + "name": "MXESE", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+40.6833344", + "longitude": "+14.7666664", + "name": "ITSAL", + "offer": 20, + "type": "port" + }, + { + "demand": 2, + "latitude": "+44.1166649", + "longitude": "+9.8333330", + "name": "ITSPE", + "offer": 44, + "type": "port" + }, + { + "demand": 15, + "latitude": "+36.7500000", + "longitude": "+3.0500000", + "name": "DZALG", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+20.67359", + "longitude": "-103.343803", + "name": "MXGDL", + "offer": 2, + "type": "port" + }, + { + "demand": 15, + "latitude": "+25.6333332", + "longitude": "+51.9166679", + "name": "QAMES", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+36.7166672", + "longitude": "+34.6333351", + "name": "TRMER", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+45.4333344", + "longitude": "+12.3333330", + "name": "ITVCE", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+20", + "longitude": "+41.45", + "name": "SADMN", + "offer": 2, + "type": "port" + }, + { + "demand": 0, + "latitude": "+58.1500015", + "longitude": "+8.0000000", + "name": "NOKRS", + "offer": 2, + "type": "port" + }, + { + "demand": 0, + "latitude": "+19.3999996", + "longitude": "-99.0500031", + "name": "MXMEX", + "offer": 2, + "type": "port" + }, + { + "demand": 15, + "latitude": "+47.3690239", + "longitude": "+8.5380326", + "name": "CHZRH", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+25.6666667", + "longitude": "-100.3", + "name": "MXMTY", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+39.3166656", + "longitude": "+18.0499992", + "name": "SESTO", + "offer": 2, + "type": "port" + }, + { + "demand": 0, + "latitude": "+34.3333321", + "longitude": "+132.4499969", + "name": "JPHIJ", + "offer": 2, + "type": "port" + }, + { + "demand": 15, + "latitude": "-34.5833321", + "longitude": "-58.6666679", + "name": "ARBUE", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+33.5999985", + "longitude": "+130.4166718", + "name": "JPHKT", + "offer": 18, + "type": "port" + }, + { + "demand": 0, + "latitude": "+34.3852029", + "longitude": "+132.4552927", + "name": "JPHSA", + "offer": 0, + "type": "port" + }, + { + "demand": 10, + "latitude": "+47.5000000", + "longitude": "+19.0333328", + "name": "HUBUD", + "offer": 6, + "type": "port" + }, + { + "demand": 15, + "latitude": "+34.0666656", + "longitude": "+133.0166626", + "name": "JPIMB", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+59.9000015", + "longitude": "+10.7166662", + "name": "NOOSL", + "offer": 4, + "type": "port" + }, + { + "demand": 4, + "latitude": "+50.0878114", + "longitude": "+14.4204598", + "name": "CZPRG", + "offer": 6, + "type": "port" + }, + { + "demand": 29, + "latitude": "+21.4666672", + "longitude": "+39.1666679", + "name": "SAJED", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+37.9500008", + "longitude": "+139.0666656", + "name": "JPKIJ", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+36.6166649", + "longitude": "+136.6000061", + "name": "JPKNZ", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+55.7166672", + "longitude": "+21.1166668", + "name": "LTKLJ", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+33.9000015", + "longitude": "+130.9666595", + "name": "JPMOJ", + "offer": 20, + "type": "port" + }, + { + "demand": 2, + "latitude": "+24.4666672", + "longitude": "+54.3666649", + "name": "AEAUH", + "offer": 2, + "type": "port" + }, + { + "demand": 98, + "latitude": "+35.0499992", + "longitude": "+136.8500061", + "name": "JPNGO", + "offer": 50, + "type": "port" + }, + { + "demand": 25, + "latitude": "+34.6500015", + "longitude": "+135.3999939", + "name": "JPOSA", + "offer": 28, + "type": "port" + }, + { + "demand": 2, + "latitude": "+25.2666664", + "longitude": "+55.2666664", + "name": "AEDXB", + "offer": 4, + "type": "port" + }, + { + "demand": 52, + "latitude": "+25.1499996", + "longitude": "+121.7333298", + "name": "TWKEL", + "offer": 22, + "type": "port" + }, + { + "demand": 57, + "latitude": "+22.6166668", + "longitude": "+120.2500000", + "name": "TWKHH", + "offer": 94, + "type": "port" + }, + { + "demand": 4, + "latitude": "+35.0166664", + "longitude": "+138.5333405", + "name": "JPSMZ", + "offer": 0, + "type": "port" + }, + { + "demand": 162, + "latitude": "+51.2166672", + "longitude": "+4.4166665", + "name": "BEANR", + "offer": 150, + "type": "port" + }, + { + "demand": 0, + "latitude": "+49.2268877", + "longitude": "+17.6689027", + "name": "CZZLN", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+50.7666664", + "longitude": "+3.4333334", + "name": "BEAVL", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+34.3499985", + "longitude": "+134.0500031", + "name": "JPTAK", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+34.0000000", + "longitude": "+131.8000031", + "name": "JPTKY", + "offer": 16, + "type": "port" + }, + { + "demand": 0, + "latitude": "+19.0499992", + "longitude": "-104.3000031", + "name": "MXZLO", + "offer": 4, + "type": "port" + }, + { + "demand": 0, + "latitude": "+42.6333351", + "longitude": "+141.6333313", + "name": "JPTMK", + "offer": 6, + "type": "port" + }, + { + "demand": 0, + "latitude": "+36.7500000", + "longitude": "+137.2333374", + "name": "JPTOY", + "offer": 0, + "type": "port" + }, + { + "demand": 127, + "latitude": "+35.6666679", + "longitude": "+139.7666626", + "name": "JPTYO", + "offer": 206, + "type": "port" + }, + { + "demand": 15, + "latitude": "+36.7999992", + "longitude": "+10.1999998", + "name": "TNTUN", + "offer": 20, + "type": "port" + }, + { + "demand": 43, + "latitude": "+34.6833344", + "longitude": "+135.1666718", + "name": "JPUKB", + "offer": 48, + "type": "port" + }, + { + "demand": 0, + "latitude": "+24.7666664", + "longitude": "+67.3499985", + "name": "PKBQM", + "offer": 2, + "type": "port" + }, + { + "demand": 3, + "latitude": "-26.8999996", + "longitude": "-48.6500015", + "name": "BRITJ", + "offer": 2, + "type": "port" + }, + { + "demand": 25, + "latitude": "+20.8666668", + "longitude": "+106.6666641", + "name": "VNHPH", + "offer": 34, + "type": "port" + }, + { + "demand": 77, + "latitude": "+25.0000000", + "longitude": "+55.0499992", + "name": "AEJEA", + "offer": 34, + "type": "port" + }, + { + "demand": 15, + "latitude": "+44.1833344", + "longitude": "+28.6499996", + "name": "ROCND", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+25.3333340", + "longitude": "+56.3499985", + "name": "AEKLF", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+34.9500008", + "longitude": "+136.6333313", + "name": "JPYKK", + "offer": 0, + "type": "port" + }, + { + "demand": 22, + "latitude": "+35.4500008", + "longitude": "+139.6499939", + "name": "JPYOK", + "offer": 18, + "type": "port" + }, + { + "demand": 15, + "latitude": "+44.2527405", + "longitude": "-91.5015432", + "name": "USADI", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+35.2219971", + "longitude": "-101.8312969", + "name": "USAMA", + "offer": 20, + "type": "port" + }, + { + "demand": 24, + "latitude": "+33.7489954", + "longitude": "-84.3879824", + "name": "USATL", + "offer": 20, + "type": "port" + }, + { + "demand": 9, + "latitude": "+39.2833328", + "longitude": "-76.5833359", + "name": "USBAL", + "offer": 4, + "type": "port" + }, + { + "demand": 78, + "latitude": "+24.2833328", + "longitude": "+120.5000000", + "name": "TWTXG", + "offer": 22, + "type": "port" + }, + { + "demand": 0, + "latitude": "+36.1666679", + "longitude": "-86.7833328", + "name": "USBNA", + "offer": 2, + "type": "port" + }, + { + "demand": 43, + "latitude": "+42.3833351", + "longitude": "-71.0500031", + "name": "USBOS", + "offer": 10, + "type": "port" + }, + { + "demand": 15, + "latitude": "+42.8864468", + "longitude": "-78.8783689", + "name": "USBUF", + "offer": 20, + "type": "port" + }, + { + "demand": 86, + "latitude": "+41.850033", + "longitude": "-87.6500523", + "name": "USCHI", + "offer": 106, + "type": "port" + }, + { + "demand": 25, + "latitude": "+32.7833328", + "longitude": "-79.9333344", + "name": "USCHS", + "offer": 70, + "type": "port" + }, + { + "demand": 4, + "latitude": "+41.5000000", + "longitude": "-81.6666641", + "name": "USCLE", + "offer": 12, + "type": "port" + }, + { + "demand": 4, + "latitude": "+35.2270869", + "longitude": "-80.8431267", + "name": "USCLT", + "offer": 26, + "type": "port" + }, + { + "demand": 9, + "latitude": "+39.9611755", + "longitude": "-82.9987942", + "name": "USCMH", + "offer": 8, + "type": "port" + }, + { + "demand": 10, + "latitude": "+39.1361111", + "longitude": "-84.5030556", + "name": "USCVG", + "offer": 0, + "type": "port" + }, + { + "demand": 55, + "latitude": "+32.802955", + "longitude": "-96.769923", + "name": "USDAL", + "offer": 86, + "type": "port" + }, + { + "demand": 14, + "latitude": "+39.7391536", + "longitude": "-104.9847034", + "name": "USDEN", + "offer": 0, + "type": "port" + }, + { + "demand": 8, + "latitude": "+42.3166656", + "longitude": "-83.0333328", + "name": "USDET", + "offer": 0, + "type": "port" + }, + { + "demand": 3, + "latitude": "-32.1666679", + "longitude": "-52.0833321", + "name": "BRRIG", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "-22.9166660", + "longitude": "-43.2000008", + "name": "BRRIO", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+24.8333340", + "longitude": "+67.0000000", + "name": "PKKHI", + "offer": 2, + "type": "port" + }, + { + "demand": 9, + "latitude": "+31.7587198", + "longitude": "-106.4869314", + "name": "USELP", + "offer": 0, + "type": "port" + }, + { + "demand": 21, + "latitude": "-23.9333324", + "longitude": "-46.3333321", + "name": "BRSSZ", + "offer": 20, + "type": "port" + }, + { + "demand": 12, + "latitude": "+10.7666664", + "longitude": "+106.6666641", + "name": "VNSGN", + "offer": 30, + "type": "port" + }, + { + "demand": 2, + "latitude": "+52.5166664", + "longitude": "+13.3833332", + "name": "DEBER", + "offer": 0, + "type": "port" + }, + { + "demand": 4, + "latitude": "+52.0230618", + "longitude": "+8.5330723", + "name": "DEBFE", + "offer": 0, + "type": "port" + }, + { + "demand": 27, + "latitude": "+53.0833321", + "longitude": "+8.7833338", + "name": "DEBRE", + "offer": 56, + "type": "port" + }, + { + "demand": 51, + "latitude": "+53.5499992", + "longitude": "+8.5833330", + "name": "DEBRV", + "offer": 18, + "type": "port" + }, + { + "demand": 0, + "latitude": "+3.8000000", + "longitude": "+98.7166672", + "name": "IDBLW", + "offer": 4, + "type": "port" + }, + { + "demand": 15, + "latitude": "+40.2666664", + "longitude": "-76.8833313", + "name": "USHAR", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+23.4664962", + "longitude": "+116.7558582", + "name": "CNCHG", + "offer": 4, + "type": "port" + }, + { + "demand": 4, + "latitude": "+30.4997849", + "longitude": "+105.5809722", + "name": "CNCHS", + "offer": 0, + "type": "port" + }, + { + "demand": 57, + "latitude": "+29.7500000", + "longitude": "-95.3333359", + "name": "USHOU", + "offer": 40, + "type": "port" + }, + { + "demand": 4, + "latitude": "+34.7303688", + "longitude": "-86.5861037", + "name": "USHSV", + "offer": 10, + "type": "port" + }, + { + "demand": 188, + "latitude": "+22.4666672", + "longitude": "+113.8833313", + "name": "CNCWN", + "offer": 18, + "type": "port" + }, + { + "demand": 86, + "latitude": "+34.2333336", + "longitude": "-77.9499969", + "name": "USILM", + "offer": 12, + "type": "port" + }, + { + "demand": 0, + "latitude": "+39.7683765", + "longitude": "-86.1580423", + "name": "USIND", + "offer": 8, + "type": "port" + }, + { + "demand": 52, + "latitude": "+38.9166679", + "longitude": "+121.6833344", + "name": "CNDLC", + "offer": 54, + "type": "port" + }, + { + "demand": 4, + "latitude": "+51.2333336", + "longitude": "+6.7833333", + "name": "DEDUS", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+32.2987573", + "longitude": "-90.1848103", + "name": "USJAN", + "offer": 20, + "type": "port" + }, + { + "demand": 2, + "latitude": "+30.3833332", + "longitude": "-81.6333313", + "name": "USJAX", + "offer": 0, + "type": "port" + }, + { + "demand": 10, + "latitude": "+39.0997265", + "longitude": "-94.5785667", + "name": "USKCK", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+26.0499992", + "longitude": "+119.3000031", + "name": "CNFOC", + "offer": 32, + "type": "port" + }, + { + "demand": 8, + "latitude": "+50.1166649", + "longitude": "+8.6833334", + "name": "DEFRA", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+38.7166672", + "longitude": "-9.1333332", + "name": "PTLIS", + "offer": 2, + "type": "port" + }, + { + "demand": 25, + "latitude": "+33.7166672", + "longitude": "-118.2666702", + "name": "USLAX", + "offer": 6, + "type": "port" + }, + { + "demand": 57, + "latitude": "+33.7666664", + "longitude": "-118.1833344", + "name": "USLGB", + "offer": 2100, + "type": "port" + }, + { + "demand": 2, + "latitude": "+49.2188587", + "longitude": "+8.3695841", + "name": "DEGER", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+27.5000000", + "longitude": "-99.4833298", + "name": "USLRD", + "offer": 14, + "type": "port" + }, + { + "demand": 127, + "latitude": "+53.5499992", + "longitude": "+9.9666662", + "name": "DEHAM", + "offer": 390, + "type": "port" + }, + { + "demand": 55, + "latitude": "+35.1495343", + "longitude": "-90.0489801", + "name": "USMEM", + "offer": 28, + "type": "port" + }, + { + "demand": 0, + "latitude": "+25.7833328", + "longitude": "-80.1833344", + "name": "USMIA", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+60.1698125", + "longitude": "+24.9382401", + "name": "FIHEL", + "offer": 2, + "type": "port" + }, + { + "demand": 233, + "latitude": "+22.4060834", + "longitude": "+114.1201536", + "name": "CNHKG", + "offer": 136, + "type": "port" + }, + { + "demand": 0, + "latitude": "+30.6833324", + "longitude": "-88.0500031", + "name": "USMOB", + "offer": 0, + "type": "port" + }, + { + "demand": 14, + "latitude": "+44.8833351", + "longitude": "-93.1999969", + "name": "USMSP", + "offer": 8, + "type": "port" + }, + { + "demand": 9, + "latitude": "+29.9647222", + "longitude": "-90.0705556", + "name": "USMSY", + "offer": 0, + "type": "port" + }, + { + "demand": 19, + "latitude": "+23.0833340", + "longitude": "+113.4166641", + "name": "CNHUA", + "offer": 354, + "type": "port" + }, + { + "demand": 15, + "latitude": "+23.11103", + "longitude": "+114.417053", + "name": "CNHUI", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+44.8333321", + "longitude": "-0.5666667", + "name": "FRBOD", + "offer": 0, + "type": "port" + }, + { + "demand": 16, + "latitude": "+51.0333328", + "longitude": "-114.0666656", + "name": "CACAL", + "offer": 0, + "type": "port" + }, + { + "demand": 168, + "latitude": "+40.7000008", + "longitude": "-74.0000000", + "name": "USNYC", + "offer": 248, + "type": "port" + }, + { + "demand": 98, + "latitude": "+37.7999992", + "longitude": "-122.2833328", + "name": "USOAK", + "offer": 58, + "type": "port" + }, + { + "demand": 9, + "latitude": "+41.254006", + "longitude": "-95.999258", + "name": "USOMA", + "offer": 6, + "type": "port" + }, + { + "demand": 12, + "latitude": "+36.8499985", + "longitude": "-76.3166656", + "name": "USORF", + "offer": 60, + "type": "port" + }, + { + "demand": 0, + "latitude": "+5.4166665", + "longitude": "+100.3333359", + "name": "MYPEN", + "offer": 2, + "type": "port" + }, + { + "demand": 43, + "latitude": "+1.4333334", + "longitude": "+103.9000015", + "name": "MYPGU", + "offer": 4, + "type": "port" + }, + { + "demand": 72, + "latitude": "-6.0999999", + "longitude": "+106.8666687", + "name": "IDJKT", + "offer": 198, + "type": "port" + }, + { + "demand": 53, + "latitude": "+3.0000000", + "longitude": "+101.4000015", + "name": "MYPKG", + "offer": 48, + "type": "port" + }, + { + "demand": 17, + "latitude": "+45.5666656", + "longitude": "-122.7333298", + "name": "USPDX", + "offer": 114, + "type": "port" + }, + { + "demand": 1, + "latitude": "+39.9000015", + "longitude": "-75.1333313", + "name": "USPHL", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+33.4483771", + "longitude": "-112.0740373", + "name": "USPHX", + "offer": 6, + "type": "port" + }, + { + "demand": 0, + "latitude": "+40.4406248", + "longitude": "-79.9958864", + "name": "USPIT", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+60.4666672", + "longitude": "+26.9500008", + "name": "FIKTK", + "offer": 30, + "type": "port" + }, + { + "demand": 16, + "latitude": "+43.4333344", + "longitude": "+4.9333334", + "name": "FRFOS", + "offer": 4, + "type": "port" + }, + { + "demand": 4, + "latitude": "+48.1500015", + "longitude": "+11.5833330", + "name": "DEMUC", + "offer": 0, + "type": "port" + }, + { + "demand": 4, + "latitude": "+29.4241219", + "longitude": "-98.4936282", + "name": "USSAT", + "offer": 2, + "type": "port" + }, + { + "demand": 24, + "latitude": "+32.0833321", + "longitude": "-81.0833359", + "name": "USSAV", + "offer": 22, + "type": "port" + }, + { + "demand": 12, + "latitude": "+23.028778", + "longitude": "+113.142996", + "name": "CNNAH", + "offer": 2, + "type": "port" + }, + { + "demand": 8, + "latitude": "+42.91389", + "longitude": "-82.60389", + "name": "USSDF", + "offer": 8, + "type": "port" + }, + { + "demand": 393, + "latitude": "+29.868336", + "longitude": "+121.54399", + "name": "CNNBO", + "offer": 102, + "type": "port" + }, + { + "demand": 206, + "latitude": "+47.6333351", + "longitude": "-122.3333359", + "name": "USSEA", + "offer": 60, + "type": "port" + }, + { + "demand": 17, + "latitude": "+40.7607793", + "longitude": "-111.8910474", + "name": "USSLC", + "offer": 0, + "type": "port" + }, + { + "demand": 67, + "latitude": "+32.0499992", + "longitude": "+118.7833328", + "name": "CNNKG", + "offer": 4, + "type": "port" + }, + { + "demand": 9, + "latitude": "+38.646991", + "longitude": "-90.224967", + "name": "USSTL", + "offer": 4, + "type": "port" + }, + { + "demand": 0, + "latitude": "+32.0000000", + "longitude": "+120.8166656", + "name": "CNNTG", + "offer": 16, + "type": "port" + }, + { + "demand": 2, + "latitude": "+49.45052", + "longitude": "+11.08048", + "name": "DENUE", + "offer": 0, + "type": "port" + }, + { + "demand": 80, + "latitude": "+47.2500000", + "longitude": "-122.4166641", + "name": "USTIW", + "offer": 0, + "type": "port" + }, + { + "demand": 12, + "latitude": "+11.6000004", + "longitude": "+104.9000015", + "name": "KHPNH", + "offer": 2, + "type": "port" + }, + { + "demand": 43, + "latitude": "+49.4833336", + "longitude": "+0.1166667", + "name": "FRLEH", + "offer": 78, + "type": "port" + }, + { + "demand": 1158, + "latitude": "+31.2500000", + "longitude": "+121.5000000", + "name": "CNSHA", + "offer": 166, + "type": "port" + }, + { + "demand": 8, + "latitude": "+48.7771056", + "longitude": "+9.1807688", + "name": "DESTR", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+23.0357173", + "longitude": "+113.235757", + "name": "CNSXC", + "offer": 4, + "type": "port" + }, + { + "demand": 10, + "latitude": "+45.5000000", + "longitude": "-73.5500031", + "name": "CAMTR", + "offer": 16, + "type": "port" + }, + { + "demand": 21, + "latitude": "-6.9666667", + "longitude": "+110.4833298", + "name": "IDSRG", + "offer": 6, + "type": "port" + }, + { + "demand": 8, + "latitude": "-7.289166", + "longitude": "+112.734398", + "name": "IDSUB", + "offer": 4, + "type": "port" + }, + { + "demand": 244, + "latitude": "+36.0833321", + "longitude": "+120.3000031", + "name": "CNTAO", + "offer": 148, + "type": "port" + }, + { + "demand": 43, + "latitude": "+32.456584", + "longitude": "+119.923046", + "name": "CNTAZ", + "offer": 6, + "type": "port" + }, + { + "demand": 2, + "latitude": "+48.8666649", + "longitude": "+2.3333333", + "name": "FRPAR", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+30.5833340", + "longitude": "+114.3166656", + "name": "CNWUH", + "offer": 8, + "type": "port" + }, + { + "demand": 15, + "latitude": "+17.9666672", + "longitude": "-76.8000031", + "name": "JMKIN", + "offer": 20, + "type": "port" + }, + { + "demand": 299, + "latitude": "+38.9833336", + "longitude": "+117.4833298", + "name": "CNXGG", + "offer": 114, + "type": "port" + }, + { + "demand": 1, + "latitude": "+50.447234", + "longitude": "-104.618013", + "name": "CAREG", + "offer": 0, + "type": "port" + }, + { + "demand": 25, + "latitude": "+24.4500008", + "longitude": "+118.0666656", + "name": "CNXMN", + "offer": 32, + "type": "port" + }, + { + "demand": 0, + "latitude": "+48.1117611", + "longitude": "-1.6802654", + "name": "FRRNS", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+52.129267", + "longitude": "-106.670253", + "name": "CASAK", + "offer": 0, + "type": "port" + }, + { + "demand": 744, + "latitude": "+22.563732", + "longitude": "+114.240232", + "name": "CNYIT", + "offer": 32, + "type": "port" + }, + { + "demand": 213, + "latitude": "+51.9166679", + "longitude": "+4.5000000", + "name": "NLRTM", + "offer": 308, + "type": "port" + }, + { + "demand": 34, + "latitude": "+26.2166672", + "longitude": "+111.5999985", + "name": "CNYZO", + "offer": 6, + "type": "port" + }, + { + "demand": 10, + "latitude": "+31.9666672", + "longitude": "+120.4000015", + "name": "CNZJG", + "offer": 6, + "type": "port" + }, + { + "demand": 15, + "latitude": "+54.3499985", + "longitude": "+18.6499996", + "name": "PLGDN", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+54.5166664", + "longitude": "+18.5333328", + "name": "PLGDY", + "offer": 14, + "type": "port" + }, + { + "demand": 16, + "latitude": "+43.6333351", + "longitude": "-79.3833313", + "name": "CATOR", + "offer": 48, + "type": "port" + }, + { + "demand": 0, + "latitude": "+59.4333344", + "longitude": "+24.7333336", + "name": "EETLL", + "offer": 12, + "type": "port" + }, + { + "demand": 0, + "latitude": "+51.5499992", + "longitude": "+5.0666666", + "name": "NLTLB", + "offer": 10, + "type": "port" + }, + { + "demand": 16, + "latitude": "+27.2000008", + "longitude": "+56.2500000", + "name": "IRBND", + "offer": 4, + "type": "port" + }, + { + "demand": 125, + "latitude": "+49.2833328", + "longitude": "-123.1166687", + "name": "CAVAN", + "offer": 66, + "type": "port" + }, + { + "demand": 15, + "latitude": "+37.9333344", + "longitude": "+23.6333332", + "name": "GRPIR", + "offer": 20, + "type": "port" + }, + { + "demand": 2, + "latitude": "+49.895452", + "longitude": "-97.138273", + "name": "CAWNP", + "offer": 0, + "type": "port" + }, + { + "demand": 9, + "latitude": "+53.540941", + "longitude": "-113.493698", + "name": "CAYEA", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+40.6333351", + "longitude": "+22.9500008", + "name": "GRSKG", + "offer": 20, + "type": "port" + }, + { + "demand": 25, + "latitude": "+41.3499985", + "longitude": "+2.1666667", + "name": "ESBCN", + "offer": 36, + "type": "port" + }, + { + "demand": 0, + "latitude": "+43.2833328", + "longitude": "-2.9166667", + "name": "ESBIO", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+10.3000002", + "longitude": "+123.9000015", + "name": "PHCEB", + "offer": 2, + "type": "port" + }, + { + "demand": 2, + "latitude": "+53.3499985", + "longitude": "-6.2166667", + "name": "IEDUB", + "offer": 0, + "type": "port" + }, + { + "demand": 103, + "latitude": "+1.2666667", + "longitude": "+103.8333359", + "name": "SGSIN", + "offer": 98, + "type": "port" + }, + { + "demand": 9, + "latitude": "+53.4166679", + "longitude": "+14.5500002", + "name": "PLSZZ", + "offer": 8, + "type": "port" + }, + { + "demand": 15, + "latitude": "+18.9666672", + "longitude": "+72.8166656", + "name": "INBOM", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+22.5666676", + "longitude": "+88.3499985", + "name": "INCCU", + "offer": 36, + "type": "port" + }, + { + "demand": 15, + "latitude": "+9.9666662", + "longitude": "+76.2333298", + "name": "INCOK", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+28.635308", + "longitude": "+77.22496", + "name": "INDEL", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+52.2296756", + "longitude": "+21.0122287", + "name": "PLWRP", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+28.1000004", + "longitude": "-15.4166670", + "name": "ESLPA", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+40.4166909", + "longitude": "-3.7003454", + "name": "ESMAD", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+35.5166664", + "longitude": "+35.7666664", + "name": "SYLTK", + "offer": 20, + "type": "port" + }, + { + "demand": 92, + "latitude": "+14.5833330", + "longitude": "+120.9666672", + "name": "PHMNL", + "offer": 204, + "type": "port" + }, + { + "demand": 0, + "latitude": "+51.9000015", + "longitude": "-8.4666662", + "name": "IEORK", + "offer": 2, + "type": "port" + }, + { + "demand": 0, + "latitude": "+37.4500008", + "longitude": "+126.6166687", + "name": "KRINC", + "offer": 34, + "type": "port" + }, + { + "demand": 15, + "latitude": "+23.0333328", + "longitude": "+70.2166672", + "name": "INIXY", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+36.5999985", + "longitude": "+127.3000031", + "name": "KRJCW", + "offer": 20, + "type": "port" + }, + { + "demand": 103, + "latitude": "+34.9333344", + "longitude": "+127.6999969", + "name": "KRKAN", + "offer": 48, + "type": "port" + }, + { + "demand": 15, + "latitude": "+36.1166649", + "longitude": "+128.3333282", + "name": "KRKUM", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+16.7666664", + "longitude": "+96.1666641", + "name": "MMRGN", + "offer": 14, + "type": "port" + }, + { + "demand": 15, + "latitude": "+56.9666672", + "longitude": "+24.1000004", + "name": "LVRIX", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+59.8833351", + "longitude": "+30.2500000", + "name": "RULED", + "offer": 46, + "type": "port" + }, + { + "demand": 10, + "latitude": "+13.0833330", + "longitude": "+80.2833328", + "name": "INMAA", + "offer": 2, + "type": "port" + }, + { + "demand": 19, + "latitude": "+56.1500015", + "longitude": "+10.2166662", + "name": "DKAAR", + "offer": 34, + "type": "port" + }, + { + "demand": 4, + "latitude": "+22.7500000", + "longitude": "+69.6999969", + "name": "INMUN", + "offer": 2, + "type": "port" + }, + { + "demand": 5, + "latitude": "+3.684167", + "longitude": "+125.526108", + "name": "INNAH", + "offer": 8, + "type": "port" + }, + { + "demand": 15, + "latitude": "+34.8833351", + "longitude": "+35.8833351", + "name": "SYTTS", + "offer": 20, + "type": "port" + }, + { + "demand": 6, + "latitude": "+55.7000008", + "longitude": "+12.6166668", + "name": "DKCPH", + "offer": 0, + "type": "port" + }, + { + "demand": 6, + "latitude": "+39.4500008", + "longitude": "-0.3000000", + "name": "ESVLC", + "offer": 48, + "type": "port" + }, + { + "demand": 406, + "latitude": "+35.1333351", + "longitude": "+129.0500031", + "name": "KRPUS", + "offer": 297, + "type": "port" + }, + { + "demand": 14, + "latitude": "+23.6138199", + "longitude": "+58.5922413", + "name": "OMMCT", + "offer": 8, + "type": "port" + }, + { + "demand": 14, + "latitude": "+8.7833338", + "longitude": "+78.1333313", + "name": "INTUT", + "offer": 0, + "type": "port" + }, + { + "demand": 4, + "latitude": "+13.6999998", + "longitude": "+100.5666656", + "name": "THBKK", + "offer": 50, + "type": "port" + }, + { + "demand": 0, + "latitude": "+48.2092062", + "longitude": "+16.3727778", + "name": "ATVIE", + "offer": 0, + "type": "port" + }, + { + "demand": 4, + "latitude": "+54.9833336", + "longitude": "-5.9166665", + "name": "GBBEL", + "offer": 0, + "type": "port" + }, + { + "demand": 4, + "latitude": "+52.4829614", + "longitude": "-1.893592", + "name": "GBBHM", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+29.3500004", + "longitude": "+47.9333344", + "name": "KWKWI", + "offer": 50, + "type": "port" + }, + { + "demand": 0, + "latitude": "+13.0833330", + "longitude": "+100.8833313", + "name": "THLCH", + "offer": 40, + "type": "port" + }, + { + "demand": 12, + "latitude": "+51.9500008", + "longitude": "+1.3166666", + "name": "GBFXT", + "offer": 206, + "type": "port" + }, + { + "demand": 0, + "latitude": "+13.7218664", + "longitude": "+100.7765055", + "name": "THLKG", + "offer": 10, + "type": "port" + }, + { + "demand": 2, + "latitude": "+55.8666649", + "longitude": "-4.2833333", + "name": "GBGLW", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+31.1833324", + "longitude": "+29.8666668", + "name": "EGALY", + "offer": 20, + "type": "port" + }, + { + "demand": 17, + "latitude": "-27.4666672", + "longitude": "+153.0166626", + "name": "AUBNE", + "offer": 6, + "type": "port" + }, + { + "demand": 15, + "latitude": "+33.6166649", + "longitude": "-7.5999999", + "name": "MACAS", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+31.4166660", + "longitude": "+31.8166676", + "name": "EGDAM", + "offer": 20, + "type": "port" + }, + { + "demand": 6, + "latitude": "+53.7999992", + "longitude": "-1.5833333", + "name": "GBLBA", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+53.4166679", + "longitude": "-3.0000000", + "name": "GBLIV", + "offer": 0, + "type": "port" + }, + { + "demand": 6, + "latitude": "+51.3507588", + "longitude": "+1.3745662", + "name": "GBMAN", + "offer": 0, + "type": "port" + }, + { + "demand": 0, + "latitude": "+7.1999998", + "longitude": "+100.5999985", + "name": "THSGZ", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+34.6833344", + "longitude": "+33.0499992", + "name": "CYLMS", + "offer": 20, + "type": "port" + }, + { + "demand": 43, + "latitude": "-37.8166656", + "longitude": "+144.9666595", + "name": "AUMEL", + "offer": 22, + "type": "port" + }, + { + "demand": 0, + "latitude": "+51.4333344", + "longitude": "+0.7000000", + "name": "GBTHP", + "offer": 4, + "type": "port" + }, + { + "demand": 4, + "latitude": "+51.4500008", + "longitude": "+0.3333333", + "name": "GBTIL", + "offer": 0, + "type": "port" + }, + { + "demand": 15, + "latitude": "+25.930414", + "longitude": "+50.637772", + "name": "BHBAH", + "offer": 20, + "type": "port" + }, + { + "demand": 6, + "latitude": "+31.2500000", + "longitude": "+32.2999992", + "name": "EGPSD", + "offer": 0, + "type": "port" + }, + { + "demand": 16, + "latitude": "-33.8499985", + "longitude": "+151.1999969", + "name": "AUSYD", + "offer": 32, + "type": "port" + }, + { + "demand": 0, + "latitude": "+43.5999985", + "longitude": "+13.5166664", + "name": "ITAOI", + "offer": 2, + "type": "port" + }, + { + "demand": 15, + "latitude": "+47.5499992", + "longitude": "+7.5666666", + "name": "CHBSL", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+13.9166670", + "longitude": "-90.7833328", + "name": "GTPRQ", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+45.5499992", + "longitude": "+13.7333336", + "name": "SIKOP", + "offer": 20, + "type": "port" + }, + { + "demand": 15, + "latitude": "+46.0514263", + "longitude": "+14.5059655", + "name": "SILJU", + "offer": 20, + "type": "port" + }, + { + "demand": 0, + "latitude": "+38.4333344", + "longitude": "+15.8999996", + "name": "ITGIT", + "offer": 0, + "type": "port" + }, + { + "demand": 14, + "latitude": "+44.4166679", + "longitude": "+8.9499998", + "name": "ITGOA", + "offer": 4, + "type": "port" + }, + { + "demand": 15, + "latitude": "+33.8333321", + "longitude": "+35.4833336", + "name": "LBBEY", + "offer": 20, + "type": "port" + }, + { + "capacity": 200, + "name": "32663", + "stops": [ + { + "date": "2010-12-02", + "name": "BEANR0", + "port": { + "_reference": "BEANR", + "name": "BEANR1" + } + }, + { + "date": "2010-12-09", + "name": "EGPSD0", + "port": { + "_reference": "EGPSD", + "name": "EGPSD1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "32700", + "stops": [ + { + "date": "2010-12-02", + "name": "BEANR2", + "port": { + "_reference": "BEANR", + "name": "BEANR3" + } + }, + { + "date": "2010-12-09", + "name": "ITSPE0", + "port": { + "_reference": "ITSPE", + "name": "ITSPE1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "33421", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAO0", + "port": { + "_reference": "CNTAO", + "name": "CNTAO1" + } + }, + { + "date": "2010-12-07", + "name": "CNHKG0", + "port": { + "_reference": "CNHKG", + "name": "CNHKG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "35311", + "stops": [ + { + "date": "2010-12-02", + "name": "EGALY0", + "port": { + "_reference": "EGALY", + "name": "EGALY1" + } + }, + { + "date": "2010-12-09", + "name": "TRIST0", + "port": { + "_reference": "TRIST", + "name": "TRIST1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "35430", + "stops": [ + { + "date": "2010-12-02", + "name": "EGPSD2", + "port": { + "_reference": "EGPSD", + "name": "EGPSD3" + } + }, + { + "date": "2010-12-09", + "name": "ESBCN0", + "port": { + "_reference": "ESBCN", + "name": "ESBCN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "35718", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA0", + "port": { + "_reference": "ESLPA", + "name": "ESLPA1" + } + }, + { + "date": "2010-12-09", + "name": "GBFXT0", + "port": { + "_reference": "GBFXT", + "name": "GBFXT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "39230", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSPE2", + "port": { + "_reference": "ITSPE", + "name": "ITSPE3" + } + }, + { + "date": "2010-12-09", + "name": "ESBCN2", + "port": { + "_reference": "ESBCN", + "name": "ESBCN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "39539", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA0", + "port": { + "_reference": "JPOSA", + "name": "JPOSA1" + } + }, + { + "date": "2010-12-07", + "name": "JPYOK0", + "port": { + "_reference": "JPYOK", + "name": "JPYOK1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "40298", + "stops": [ + { + "date": "2010-12-02", + "name": "MYPKG0", + "port": { + "_reference": "MYPKG", + "name": "MYPKG1" + } + }, + { + "date": "2010-12-09", + "name": "PKBQM0", + "port": { + "_reference": "PKBQM", + "name": "PKBQM1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "41495", + "stops": [ + { + "date": "2010-12-02", + "name": "ROCND0", + "port": { + "_reference": "ROCND", + "name": "ROCND1" + } + }, + { + "date": "2010-12-09", + "name": "FRFOS0", + "port": { + "_reference": "FRFOS", + "name": "FRFOS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43336", + "stops": [ + { + "date": "2010-12-02", + "name": "AEDXB0", + "port": { + "_reference": "AEDXB", + "name": "AEDXB1" + } + }, + { + "date": "2010-12-06", + "name": "AEAUH0", + "port": { + "_reference": "AEAUH", + "name": "AEAUH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43337", + "stops": [ + { + "date": "2010-12-02", + "name": "AEDXB2", + "port": { + "_reference": "AEDXB", + "name": "AEDXB3" + } + }, + { + "date": "2010-12-06", + "name": "AEJEA0", + "port": { + "_reference": "AEJEA", + "name": "AEJEA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43338", + "stops": [ + { + "date": "2010-12-02", + "name": "AEDXB4", + "port": { + "_reference": "AEDXB", + "name": "AEDXB5" + } + }, + { + "date": "2010-12-06", + "name": "AEKLF0", + "port": { + "_reference": "AEKLF", + "name": "AEKLF1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43347", + "stops": [ + { + "date": "2010-12-02", + "name": "AEJEA2", + "port": { + "_reference": "AEJEA", + "name": "AEJEA3" + } + }, + { + "date": "2010-12-06", + "name": "AEAUH2", + "port": { + "_reference": "AEAUH", + "name": "AEAUH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43348", + "stops": [ + { + "date": "2010-12-02", + "name": "AEJEA4", + "port": { + "_reference": "AEJEA", + "name": "AEJEA5" + } + }, + { + "date": "2010-12-06", + "name": "AEDXB6", + "port": { + "_reference": "AEDXB", + "name": "AEDXB7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43358", + "stops": [ + { + "date": "2010-12-02", + "name": "AEKLF2", + "port": { + "_reference": "AEKLF", + "name": "AEKLF3" + } + }, + { + "date": "2010-12-06", + "name": "AEAUH4", + "port": { + "_reference": "AEAUH", + "name": "AEAUH5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43359", + "stops": [ + { + "date": "2010-12-02", + "name": "AEKLF4", + "port": { + "_reference": "AEKLF", + "name": "AEKLF5" + } + }, + { + "date": "2010-12-06", + "name": "AEDXB8", + "port": { + "_reference": "AEDXB", + "name": "AEDXB9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43362", + "stops": [ + { + "date": "2010-12-02", + "name": "AEKLF6", + "port": { + "_reference": "AEKLF", + "name": "AEKLF7" + } + }, + { + "date": "2010-12-08", + "name": "IRBND0", + "port": { + "_reference": "IRBND", + "name": "IRBND1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43373", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE0", + "port": { + "_reference": "ATVIE", + "name": "ATVIE1" + } + }, + { + "date": "2010-12-08", + "name": "BEANR4", + "port": { + "_reference": "BEANR", + "name": "BEANR5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43383", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE2", + "port": { + "_reference": "ATVIE", + "name": "ATVIE3" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV0", + "port": { + "_reference": "DEBRV", + "name": "DEBRV1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43388", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE4", + "port": { + "_reference": "ATVIE", + "name": "ATVIE5" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC0", + "port": { + "_reference": "DEMUC", + "name": "DEMUC1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43389", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE6", + "port": { + "_reference": "ATVIE", + "name": "ATVIE7" + } + }, + { + "date": "2010-12-08", + "name": "DENUE0", + "port": { + "_reference": "DENUE", + "name": "DENUE1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43394", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE8", + "port": { + "_reference": "ATVIE", + "name": "ATVIE9" + } + }, + { + "date": "2010-12-08", + "name": "EETLL0", + "port": { + "_reference": "EETLL", + "name": "EETLL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43408", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE10", + "port": { + "_reference": "ATVIE", + "name": "ATVIE11" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR0", + "port": { + "_reference": "FRPAR", + "name": "FRPAR1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43416", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE12", + "port": { + "_reference": "ATVIE", + "name": "ATVIE13" + } + }, + { + "date": "2010-12-08", + "name": "GBLIV0", + "port": { + "_reference": "GBLIV", + "name": "GBLIV1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43419", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE14", + "port": { + "_reference": "ATVIE", + "name": "ATVIE15" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL0", + "port": { + "_reference": "GBTIL", + "name": "GBTIL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43426", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE16", + "port": { + "_reference": "ATVIE", + "name": "ATVIE17" + } + }, + { + "date": "2010-12-08", + "name": "ITGIT0", + "port": { + "_reference": "ITGIT", + "name": "ITGIT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43431", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE18", + "port": { + "_reference": "ATVIE", + "name": "ATVIE19" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP0", + "port": { + "_reference": "ITNAP", + "name": "ITNAP1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43450", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE20", + "port": { + "_reference": "ATVIE", + "name": "ATVIE21" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS0", + "port": { + "_reference": "PTLIS", + "name": "PTLIS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43456", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE22", + "port": { + "_reference": "ATVIE", + "name": "ATVIE23" + } + }, + { + "date": "2010-12-08", + "name": "SIKOP0", + "port": { + "_reference": "SIKOP", + "name": "SIKOP1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43464", + "stops": [ + { + "date": "2010-12-02", + "name": "AUBNE0", + "port": { + "_reference": "AUBNE", + "name": "AUBNE1" + } + }, + { + "date": "2010-12-06", + "name": "AUMEL0", + "port": { + "_reference": "AUMEL", + "name": "AUMEL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43468", + "stops": [ + { + "date": "2010-12-02", + "name": "AUSYD0", + "port": { + "_reference": "AUSYD", + "name": "AUSYD1" + } + }, + { + "date": "2010-12-06", + "name": "AUBNE2", + "port": { + "_reference": "AUBNE", + "name": "AUBNE3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43469", + "stops": [ + { + "date": "2010-12-02", + "name": "AUSYD2", + "port": { + "_reference": "AUSYD", + "name": "AUSYD3" + } + }, + { + "date": "2010-12-06", + "name": "AUMEL2", + "port": { + "_reference": "AUMEL", + "name": "AUMEL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43530", + "stops": [ + { + "date": "2010-12-02", + "name": "BEANR6", + "port": { + "_reference": "BEANR", + "name": "BEANR7" + } + }, + { + "date": "2010-12-08", + "name": "ITSAL0", + "port": { + "_reference": "ITSAL", + "name": "ITSAL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43562", + "stops": [ + { + "date": "2010-12-02", + "name": "BEAVL0", + "port": { + "_reference": "BEAVL", + "name": "BEAVL1" + } + }, + { + "date": "2010-12-06", + "name": "BEANR8", + "port": { + "_reference": "BEANR", + "name": "BEANR9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43587", + "stops": [ + { + "date": "2010-12-02", + "name": "BEAVL2", + "port": { + "_reference": "BEAVL", + "name": "BEAVL3" + } + }, + { + "date": "2010-12-08", + "name": "ESBIO0", + "port": { + "_reference": "ESBIO", + "name": "ESBIO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43622", + "stops": [ + { + "date": "2010-12-02", + "name": "BEAVL4", + "port": { + "_reference": "BEAVL", + "name": "BEAVL5" + } + }, + { + "date": "2010-12-08", + "name": "ITSPE4", + "port": { + "_reference": "ITSPE", + "name": "ITSPE5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43654", + "stops": [ + { + "date": "2010-12-02", + "name": "BHBAH0", + "port": { + "_reference": "BHBAH", + "name": "BHBAH1" + } + }, + { + "date": "2010-12-08", + "name": "AEJEA6", + "port": { + "_reference": "AEJEA", + "name": "AEJEA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43656", + "stops": [ + { + "date": "2010-12-02", + "name": "BHBAH2", + "port": { + "_reference": "BHBAH", + "name": "BHBAH3" + } + }, + { + "date": "2010-12-08", + "name": "IRBND2", + "port": { + "_reference": "IRBND", + "name": "IRBND3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43658", + "stops": [ + { + "date": "2010-12-02", + "name": "BHBAH4", + "port": { + "_reference": "BHBAH", + "name": "BHBAH5" + } + }, + { + "date": "2010-12-08", + "name": "OMMCT0", + "port": { + "_reference": "OMMCT", + "name": "OMMCT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43668", + "stops": [ + { + "date": "2010-12-02", + "name": "BRRIG0", + "port": { + "_reference": "BRRIG", + "name": "BRRIG1" + } + }, + { + "date": "2010-12-06", + "name": "BRITJ0", + "port": { + "_reference": "BRITJ", + "name": "BRITJ1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43669", + "stops": [ + { + "date": "2010-12-02", + "name": "BRRIG2", + "port": { + "_reference": "BRRIG", + "name": "BRRIG3" + } + }, + { + "date": "2010-12-06", + "name": "BRRIO0", + "port": { + "_reference": "BRRIO", + "name": "BRRIO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43672", + "stops": [ + { + "date": "2010-12-02", + "name": "BRRIO2", + "port": { + "_reference": "BRRIO", + "name": "BRRIO3" + } + }, + { + "date": "2010-12-06", + "name": "BRITJ2", + "port": { + "_reference": "BRITJ", + "name": "BRITJ3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43676", + "stops": [ + { + "date": "2010-12-02", + "name": "BRSSZ0", + "port": { + "_reference": "BRSSZ", + "name": "BRSSZ1" + } + }, + { + "date": "2010-12-06", + "name": "BRITJ4", + "port": { + "_reference": "BRITJ", + "name": "BRITJ5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43683", + "stops": [ + { + "date": "2010-12-02", + "name": "CACAL0", + "port": { + "_reference": "CACAL", + "name": "CACAL1" + } + }, + { + "date": "2010-12-06", + "name": "CAVAN0", + "port": { + "_reference": "CAVAN", + "name": "CAVAN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43686", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR0", + "port": { + "_reference": "CAMTR", + "name": "CAMTR1" + } + }, + { + "date": "2010-12-06", + "name": "CACAL2", + "port": { + "_reference": "CACAL", + "name": "CACAL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43688", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR2", + "port": { + "_reference": "CAMTR", + "name": "CAMTR3" + } + }, + { + "date": "2010-12-06", + "name": "CASAK0", + "port": { + "_reference": "CASAK", + "name": "CASAK1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43690", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR4", + "port": { + "_reference": "CAMTR", + "name": "CAMTR5" + } + }, + { + "date": "2010-12-06", + "name": "CAVAN2", + "port": { + "_reference": "CAVAN", + "name": "CAVAN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43691", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR6", + "port": { + "_reference": "CAMTR", + "name": "CAMTR7" + } + }, + { + "date": "2010-12-06", + "name": "CAWNP0", + "port": { + "_reference": "CAWNP", + "name": "CAWNP1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43692", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR8", + "port": { + "_reference": "CAMTR", + "name": "CAMTR9" + } + }, + { + "date": "2010-12-06", + "name": "CAYEA0", + "port": { + "_reference": "CAYEA", + "name": "CAYEA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43707", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR0", + "port": { + "_reference": "CATOR", + "name": "CATOR1" + } + }, + { + "date": "2010-12-06", + "name": "CACAL4", + "port": { + "_reference": "CACAL", + "name": "CACAL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43710", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR2", + "port": { + "_reference": "CATOR", + "name": "CATOR3" + } + }, + { + "date": "2010-12-06", + "name": "CASAK2", + "port": { + "_reference": "CASAK", + "name": "CASAK3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43711", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR4", + "port": { + "_reference": "CATOR", + "name": "CATOR5" + } + }, + { + "date": "2010-12-06", + "name": "CAVAN4", + "port": { + "_reference": "CAVAN", + "name": "CAVAN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43712", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR6", + "port": { + "_reference": "CATOR", + "name": "CATOR7" + } + }, + { + "date": "2010-12-06", + "name": "CAWNP2", + "port": { + "_reference": "CAWNP", + "name": "CAWNP3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43713", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR8", + "port": { + "_reference": "CATOR", + "name": "CATOR9" + } + }, + { + "date": "2010-12-06", + "name": "CAYEA2", + "port": { + "_reference": "CAYEA", + "name": "CAYEA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43714", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR10", + "port": { + "_reference": "CATOR", + "name": "CATOR11" + } + }, + { + "date": "2010-12-08", + "name": "MXMEX0", + "port": { + "_reference": "MXMEX", + "name": "MXMEX1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43721", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR12", + "port": { + "_reference": "CATOR", + "name": "CATOR13" + } + }, + { + "date": "2010-12-08", + "name": "USSEA0", + "port": { + "_reference": "USSEA", + "name": "USSEA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43731", + "stops": [ + { + "date": "2010-12-02", + "name": "CAVAN6", + "port": { + "_reference": "CAVAN", + "name": "CAVAN7" + } + }, + { + "date": "2010-12-08", + "name": "USCHI0", + "port": { + "_reference": "USCHI", + "name": "USCHI1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43737", + "stops": [ + { + "date": "2010-12-02", + "name": "CAWNP4", + "port": { + "_reference": "CAWNP", + "name": "CAWNP5" + } + }, + { + "date": "2010-12-06", + "name": "CACAL6", + "port": { + "_reference": "CACAL", + "name": "CACAL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43743", + "stops": [ + { + "date": "2010-12-02", + "name": "CAWNP6", + "port": { + "_reference": "CAWNP", + "name": "CAWNP7" + } + }, + { + "date": "2010-12-06", + "name": "CAYEA4", + "port": { + "_reference": "CAYEA", + "name": "CAYEA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43768", + "stops": [ + { + "date": "2010-12-02", + "name": "CHBSL0", + "port": { + "_reference": "CHBSL", + "name": "CHBSL1" + } + }, + { + "date": "2010-12-08", + "name": "DESTR0", + "port": { + "_reference": "DESTR", + "name": "DESTR1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43818", + "stops": [ + { + "date": "2010-12-02", + "name": "CHBSL2", + "port": { + "_reference": "CHBSL", + "name": "CHBSL3" + } + }, + { + "date": "2010-12-08", + "name": "NLRTM0", + "port": { + "_reference": "NLRTM", + "name": "NLRTM1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43852", + "stops": [ + { + "date": "2010-12-02", + "name": "CHZRH0", + "port": { + "_reference": "CHZRH", + "name": "CHZRH1" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV2", + "port": { + "_reference": "DEBRV", + "name": "DEBRV3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43878", + "stops": [ + { + "date": "2010-12-02", + "name": "CHZRH2", + "port": { + "_reference": "CHZRH", + "name": "CHZRH3" + } + }, + { + "date": "2010-12-08", + "name": "FRRNS0", + "port": { + "_reference": "FRRNS", + "name": "FRRNS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43900", + "stops": [ + { + "date": "2010-12-02", + "name": "CHZRH4", + "port": { + "_reference": "CHZRH", + "name": "CHZRH5" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP2", + "port": { + "_reference": "ITNAP", + "name": "ITNAP3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43933", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG0", + "port": { + "_reference": "CNCHG", + "name": "CNCHG1" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS0", + "port": { + "_reference": "CNCHS", + "name": "CNCHS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43934", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG2", + "port": { + "_reference": "CNCHG", + "name": "CNCHG3" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN0", + "port": { + "_reference": "CNCWN", + "name": "CNCWN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43935", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG4", + "port": { + "_reference": "CNCHG", + "name": "CNCHG5" + } + }, + { + "date": "2010-12-06", + "name": "CNDLC0", + "port": { + "_reference": "CNDLC", + "name": "CNDLC1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43943", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG6", + "port": { + "_reference": "CNCHG", + "name": "CNCHG7" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG0", + "port": { + "_reference": "CNNTG", + "name": "CNNTG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43944", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG8", + "port": { + "_reference": "CNCHG", + "name": "CNCHG9" + } + }, + { + "date": "2010-12-06", + "name": "CNSHA0", + "port": { + "_reference": "CNSHA", + "name": "CNSHA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43948", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG10", + "port": { + "_reference": "CNCHG", + "name": "CNCHG11" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ0", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43952", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG12", + "port": { + "_reference": "CNCHG", + "name": "CNCHG13" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO0", + "port": { + "_reference": "CNYZO", + "name": "CNYZO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43968", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHS2", + "port": { + "_reference": "CNCHS", + "name": "CNCHS3" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ2", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "43977", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCWN2", + "port": { + "_reference": "CNCWN", + "name": "CNCWN3" + } + }, + { + "date": "2010-12-06", + "name": "CNDLC2", + "port": { + "_reference": "CNDLC", + "name": "CNDLC3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44004", + "stops": [ + { + "date": "2010-12-02", + "name": "CNDLC4", + "port": { + "_reference": "CNDLC", + "name": "CNDLC5" + } + }, + { + "date": "2010-12-06", + "name": "CNNBO0", + "port": { + "_reference": "CNNBO", + "name": "CNNBO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44005", + "stops": [ + { + "date": "2010-12-02", + "name": "CNDLC6", + "port": { + "_reference": "CNDLC", + "name": "CNDLC7" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG0", + "port": { + "_reference": "CNNKG", + "name": "CNNKG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44009", + "stops": [ + { + "date": "2010-12-02", + "name": "CNDLC8", + "port": { + "_reference": "CNDLC", + "name": "CNDLC9" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO2", + "port": { + "_reference": "CNTAO", + "name": "CNTAO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44012", + "stops": [ + { + "date": "2010-12-02", + "name": "CNDLC10", + "port": { + "_reference": "CNDLC", + "name": "CNDLC11" + } + }, + { + "date": "2010-12-06", + "name": "CNXGG0", + "port": { + "_reference": "CNXGG", + "name": "CNXGG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44015", + "stops": [ + { + "date": "2010-12-02", + "name": "CNDLC12", + "port": { + "_reference": "CNDLC", + "name": "CNDLC13" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO2", + "port": { + "_reference": "CNYZO", + "name": "CNYZO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44018", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC0", + "port": { + "_reference": "CNFOC", + "name": "CNFOC1" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS4", + "port": { + "_reference": "CNCHS", + "name": "CNCHS5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44019", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC2", + "port": { + "_reference": "CNFOC", + "name": "CNFOC3" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN4", + "port": { + "_reference": "CNCWN", + "name": "CNCWN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44024", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC4", + "port": { + "_reference": "CNFOC", + "name": "CNFOC5" + } + }, + { + "date": "2010-12-06", + "name": "CNNAH0", + "port": { + "_reference": "CNNAH", + "name": "CNNAH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44026", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC6", + "port": { + "_reference": "CNFOC", + "name": "CNFOC7" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG2", + "port": { + "_reference": "CNNKG", + "name": "CNNKG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44027", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC8", + "port": { + "_reference": "CNFOC", + "name": "CNFOC9" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG2", + "port": { + "_reference": "CNNTG", + "name": "CNNTG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44028", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC10", + "port": { + "_reference": "CNFOC", + "name": "CNFOC11" + } + }, + { + "date": "2010-12-06", + "name": "CNSHA2", + "port": { + "_reference": "CNSHA", + "name": "CNSHA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44031", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC12", + "port": { + "_reference": "CNFOC", + "name": "CNFOC13" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO4", + "port": { + "_reference": "CNTAO", + "name": "CNTAO5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44032", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC14", + "port": { + "_reference": "CNFOC", + "name": "CNFOC15" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ4", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44033", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC16", + "port": { + "_reference": "CNFOC", + "name": "CNFOC17" + } + }, + { + "date": "2010-12-06", + "name": "CNWUH0", + "port": { + "_reference": "CNWUH", + "name": "CNWUH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44036", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC18", + "port": { + "_reference": "CNFOC", + "name": "CNFOC19" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT0", + "port": { + "_reference": "CNYIT", + "name": "CNYIT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44037", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC20", + "port": { + "_reference": "CNFOC", + "name": "CNFOC21" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO4", + "port": { + "_reference": "CNYZO", + "name": "CNYZO5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44039", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG2", + "port": { + "_reference": "CNHKG", + "name": "CNHKG3" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS6", + "port": { + "_reference": "CNCHS", + "name": "CNCHS7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44047", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG4", + "port": { + "_reference": "CNHKG", + "name": "CNHKG5" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG4", + "port": { + "_reference": "CNNKG", + "name": "CNNKG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44048", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG6", + "port": { + "_reference": "CNHKG", + "name": "CNHKG7" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG4", + "port": { + "_reference": "CNNTG", + "name": "CNNTG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44052", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG8", + "port": { + "_reference": "CNHKG", + "name": "CNHKG9" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO6", + "port": { + "_reference": "CNTAO", + "name": "CNTAO7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44053", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG10", + "port": { + "_reference": "CNHKG", + "name": "CNHKG11" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ6", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44057", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG12", + "port": { + "_reference": "CNHKG", + "name": "CNHKG13" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT2", + "port": { + "_reference": "CNYIT", + "name": "CNYIT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44060", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA0", + "port": { + "_reference": "CNHUA", + "name": "CNHUA1" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS8", + "port": { + "_reference": "CNCHS", + "name": "CNCHS9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44061", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA2", + "port": { + "_reference": "CNHUA", + "name": "CNHUA3" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN6", + "port": { + "_reference": "CNCWN", + "name": "CNCWN7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44066", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA4", + "port": { + "_reference": "CNHUA", + "name": "CNHUA5" + } + }, + { + "date": "2010-12-06", + "name": "CNNAH2", + "port": { + "_reference": "CNNAH", + "name": "CNNAH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44067", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA6", + "port": { + "_reference": "CNHUA", + "name": "CNHUA7" + } + }, + { + "date": "2010-12-06", + "name": "CNNBO2", + "port": { + "_reference": "CNNBO", + "name": "CNNBO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44068", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA8", + "port": { + "_reference": "CNHUA", + "name": "CNHUA9" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG6", + "port": { + "_reference": "CNNKG", + "name": "CNNKG7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44069", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA10", + "port": { + "_reference": "CNHUA", + "name": "CNHUA11" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG6", + "port": { + "_reference": "CNNTG", + "name": "CNNTG7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44070", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA12", + "port": { + "_reference": "CNHUA", + "name": "CNHUA13" + } + }, + { + "date": "2010-12-06", + "name": "CNSHA4", + "port": { + "_reference": "CNSHA", + "name": "CNSHA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44073", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA14", + "port": { + "_reference": "CNHUA", + "name": "CNHUA15" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO8", + "port": { + "_reference": "CNTAO", + "name": "CNTAO9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44074", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA16", + "port": { + "_reference": "CNHUA", + "name": "CNHUA17" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ8", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44075", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA18", + "port": { + "_reference": "CNHUA", + "name": "CNHUA19" + } + }, + { + "date": "2010-12-06", + "name": "CNXGG2", + "port": { + "_reference": "CNXGG", + "name": "CNXGG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44077", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA20", + "port": { + "_reference": "CNHUA", + "name": "CNHUA21" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT4", + "port": { + "_reference": "CNYIT", + "name": "CNYIT5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44078", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA22", + "port": { + "_reference": "CNHUA", + "name": "CNHUA23" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO6", + "port": { + "_reference": "CNYZO", + "name": "CNYZO7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44079", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA24", + "port": { + "_reference": "CNHUA", + "name": "CNHUA25" + } + }, + { + "date": "2010-12-06", + "name": "CNZJG0", + "port": { + "_reference": "CNZJG", + "name": "CNZJG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44082", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUI0", + "port": { + "_reference": "CNHUI", + "name": "CNHUI1" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN8", + "port": { + "_reference": "CNCWN", + "name": "CNCWN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44098", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUI2", + "port": { + "_reference": "CNHUI", + "name": "CNHUI3" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT6", + "port": { + "_reference": "CNYIT", + "name": "CNYIT7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44110", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH4", + "port": { + "_reference": "CNNAH", + "name": "CNNAH5" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG8", + "port": { + "_reference": "CNNKG", + "name": "CNNKG9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44114", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH6", + "port": { + "_reference": "CNNAH", + "name": "CNNAH7" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO10", + "port": { + "_reference": "CNTAO", + "name": "CNTAO11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44115", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH8", + "port": { + "_reference": "CNNAH", + "name": "CNNAH9" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ10", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44123", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO4", + "port": { + "_reference": "CNNBO", + "name": "CNNBO5" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS10", + "port": { + "_reference": "CNCHS", + "name": "CNCHS11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44131", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO6", + "port": { + "_reference": "CNNBO", + "name": "CNNBO7" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG8", + "port": { + "_reference": "CNNTG", + "name": "CNNTG9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44136", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO8", + "port": { + "_reference": "CNNBO", + "name": "CNNBO9" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ12", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44156", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNKG10", + "port": { + "_reference": "CNNKG", + "name": "CNNKG11" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO12", + "port": { + "_reference": "CNTAO", + "name": "CNTAO13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44165", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG10", + "port": { + "_reference": "CNNTG", + "name": "CNNTG11" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN10", + "port": { + "_reference": "CNCWN", + "name": "CNCWN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44171", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG12", + "port": { + "_reference": "CNNTG", + "name": "CNNTG13" + } + }, + { + "date": "2010-12-06", + "name": "CNNAH10", + "port": { + "_reference": "CNNAH", + "name": "CNNAH11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44174", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG14", + "port": { + "_reference": "CNNTG", + "name": "CNNTG15" + } + }, + { + "date": "2010-12-06", + "name": "CNSHA6", + "port": { + "_reference": "CNSHA", + "name": "CNSHA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44179", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG16", + "port": { + "_reference": "CNNTG", + "name": "CNNTG17" + } + }, + { + "date": "2010-12-06", + "name": "CNWUH2", + "port": { + "_reference": "CNWUH", + "name": "CNWUH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44180", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG18", + "port": { + "_reference": "CNNTG", + "name": "CNNTG19" + } + }, + { + "date": "2010-12-06", + "name": "CNXGG4", + "port": { + "_reference": "CNXGG", + "name": "CNXGG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44182", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG20", + "port": { + "_reference": "CNNTG", + "name": "CNNTG21" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT8", + "port": { + "_reference": "CNYIT", + "name": "CNYIT9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44184", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG22", + "port": { + "_reference": "CNNTG", + "name": "CNNTG23" + } + }, + { + "date": "2010-12-06", + "name": "CNZJG2", + "port": { + "_reference": "CNZJG", + "name": "CNZJG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44207", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC0", + "port": { + "_reference": "CNSXC", + "name": "CNSXC1" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS12", + "port": { + "_reference": "CNCHS", + "name": "CNCHS13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44208", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC2", + "port": { + "_reference": "CNSXC", + "name": "CNSXC3" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN12", + "port": { + "_reference": "CNCWN", + "name": "CNCWN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44213", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC4", + "port": { + "_reference": "CNSXC", + "name": "CNSXC5" + } + }, + { + "date": "2010-12-06", + "name": "CNNAH12", + "port": { + "_reference": "CNNAH", + "name": "CNNAH13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44215", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC6", + "port": { + "_reference": "CNSXC", + "name": "CNSXC7" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG12", + "port": { + "_reference": "CNNKG", + "name": "CNNKG13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44216", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC8", + "port": { + "_reference": "CNSXC", + "name": "CNSXC9" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG24", + "port": { + "_reference": "CNNTG", + "name": "CNNTG25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44220", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC10", + "port": { + "_reference": "CNSXC", + "name": "CNSXC11" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ14", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44221", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC12", + "port": { + "_reference": "CNSXC", + "name": "CNSXC13" + } + }, + { + "date": "2010-12-06", + "name": "CNWUH4", + "port": { + "_reference": "CNWUH", + "name": "CNWUH5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44222", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC14", + "port": { + "_reference": "CNSXC", + "name": "CNSXC15" + } + }, + { + "date": "2010-12-06", + "name": "CNXGG6", + "port": { + "_reference": "CNXGG", + "name": "CNXGG7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44225", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC16", + "port": { + "_reference": "CNSXC", + "name": "CNSXC17" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO8", + "port": { + "_reference": "CNYZO", + "name": "CNYZO9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44226", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC18", + "port": { + "_reference": "CNSXC", + "name": "CNSXC19" + } + }, + { + "date": "2010-12-06", + "name": "CNZJG4", + "port": { + "_reference": "CNZJG", + "name": "CNZJG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44229", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC", + "port": { + "_reference": "CNTAC", + "name": "CNTAC0" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN14", + "port": { + "_reference": "CNCWN", + "name": "CNCWN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44237", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC1", + "port": { + "_reference": "CNTAC", + "name": "CNTAC2" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG14", + "port": { + "_reference": "CNNKG", + "name": "CNNKG15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44238", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC3", + "port": { + "_reference": "CNTAC", + "name": "CNTAC4" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG26", + "port": { + "_reference": "CNNTG", + "name": "CNNTG27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44239", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC5", + "port": { + "_reference": "CNTAC", + "name": "CNTAC6" + } + }, + { + "date": "2010-12-06", + "name": "CNSHA8", + "port": { + "_reference": "CNSHA", + "name": "CNSHA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44241", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC7", + "port": { + "_reference": "CNTAC", + "name": "CNTAC8" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO14", + "port": { + "_reference": "CNTAO", + "name": "CNTAO15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44242", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC9", + "port": { + "_reference": "CNTAC", + "name": "CNTAC10" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ16", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44244", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC11", + "port": { + "_reference": "CNTAC", + "name": "CNTAC12" + } + }, + { + "date": "2010-12-06", + "name": "CNXGG8", + "port": { + "_reference": "CNXGG", + "name": "CNXGG9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44245", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC13", + "port": { + "_reference": "CNTAC", + "name": "CNTAC14" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT10", + "port": { + "_reference": "CNYIT", + "name": "CNYIT11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44246", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC15", + "port": { + "_reference": "CNTAC", + "name": "CNTAC16" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO10", + "port": { + "_reference": "CNYZO", + "name": "CNYZO11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44247", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC17", + "port": { + "_reference": "CNTAC", + "name": "CNTAC18" + } + }, + { + "date": "2010-12-06", + "name": "CNZJG6", + "port": { + "_reference": "CNZJG", + "name": "CNZJG7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44278", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAZ18", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ19" + } + }, + { + "date": "2010-12-06", + "name": "CNNBO10", + "port": { + "_reference": "CNNBO", + "name": "CNNBO11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44291", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH6", + "port": { + "_reference": "CNWUH", + "name": "CNWUH7" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS14", + "port": { + "_reference": "CNCHS", + "name": "CNCHS15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44292", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH8", + "port": { + "_reference": "CNWUH", + "name": "CNWUH9" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN16", + "port": { + "_reference": "CNCWN", + "name": "CNCWN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44300", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH10", + "port": { + "_reference": "CNWUH", + "name": "CNWUH11" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG16", + "port": { + "_reference": "CNNKG", + "name": "CNNKG17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44302", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH12", + "port": { + "_reference": "CNWUH", + "name": "CNWUH13" + } + }, + { + "date": "2010-12-06", + "name": "CNSHA10", + "port": { + "_reference": "CNSHA", + "name": "CNSHA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44304", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH14", + "port": { + "_reference": "CNWUH", + "name": "CNWUH15" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO16", + "port": { + "_reference": "CNTAO", + "name": "CNTAO17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44305", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH16", + "port": { + "_reference": "CNWUH", + "name": "CNWUH17" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ20", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44308", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH18", + "port": { + "_reference": "CNWUH", + "name": "CNWUH19" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT12", + "port": { + "_reference": "CNYIT", + "name": "CNYIT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44320", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXGG10", + "port": { + "_reference": "CNXGG", + "name": "CNXGG11" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG18", + "port": { + "_reference": "CNNKG", + "name": "CNNKG19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44325", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXGG12", + "port": { + "_reference": "CNXGG", + "name": "CNXGG13" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO18", + "port": { + "_reference": "CNTAO", + "name": "CNTAO19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44330", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXGG14", + "port": { + "_reference": "CNXGG", + "name": "CNXGG15" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO12", + "port": { + "_reference": "CNYZO", + "name": "CNYZO13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44333", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN0", + "port": { + "_reference": "CNXMN", + "name": "CNXMN1" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS16", + "port": { + "_reference": "CNCHS", + "name": "CNCHS17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44334", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN2", + "port": { + "_reference": "CNXMN", + "name": "CNXMN3" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN18", + "port": { + "_reference": "CNCWN", + "name": "CNCWN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44335", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN4", + "port": { + "_reference": "CNXMN", + "name": "CNXMN5" + } + }, + { + "date": "2010-12-06", + "name": "CNDLC14", + "port": { + "_reference": "CNDLC", + "name": "CNDLC15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44340", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN6", + "port": { + "_reference": "CNXMN", + "name": "CNXMN7" + } + }, + { + "date": "2010-12-06", + "name": "CNNBO12", + "port": { + "_reference": "CNNBO", + "name": "CNNBO13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44341", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN8", + "port": { + "_reference": "CNXMN", + "name": "CNXMN9" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG20", + "port": { + "_reference": "CNNKG", + "name": "CNNKG21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44342", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN10", + "port": { + "_reference": "CNXMN", + "name": "CNXMN11" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG28", + "port": { + "_reference": "CNNTG", + "name": "CNNTG29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44346", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN12", + "port": { + "_reference": "CNXMN", + "name": "CNXMN13" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO20", + "port": { + "_reference": "CNTAO", + "name": "CNTAO21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44347", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN14", + "port": { + "_reference": "CNXMN", + "name": "CNXMN15" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ22", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44348", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN16", + "port": { + "_reference": "CNXMN", + "name": "CNXMN17" + } + }, + { + "date": "2010-12-06", + "name": "CNWUH20", + "port": { + "_reference": "CNWUH", + "name": "CNWUH21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44349", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN18", + "port": { + "_reference": "CNXMN", + "name": "CNXMN19" + } + }, + { + "date": "2010-12-06", + "name": "CNXGG16", + "port": { + "_reference": "CNXGG", + "name": "CNXGG17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44396", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG8", + "port": { + "_reference": "CNZJG", + "name": "CNZJG9" + } + }, + { + "date": "2010-12-06", + "name": "CNCHS18", + "port": { + "_reference": "CNCHS", + "name": "CNCHS19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44397", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG10", + "port": { + "_reference": "CNZJG", + "name": "CNZJG11" + } + }, + { + "date": "2010-12-06", + "name": "CNCWN20", + "port": { + "_reference": "CNCWN", + "name": "CNCWN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44403", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG12", + "port": { + "_reference": "CNZJG", + "name": "CNZJG13" + } + }, + { + "date": "2010-12-06", + "name": "CNNBO14", + "port": { + "_reference": "CNNBO", + "name": "CNNBO15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44404", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG14", + "port": { + "_reference": "CNZJG", + "name": "CNZJG15" + } + }, + { + "date": "2010-12-06", + "name": "CNNKG22", + "port": { + "_reference": "CNNKG", + "name": "CNNKG23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44405", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG16", + "port": { + "_reference": "CNZJG", + "name": "CNZJG17" + } + }, + { + "date": "2010-12-06", + "name": "CNNTG30", + "port": { + "_reference": "CNNTG", + "name": "CNNTG31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44406", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG18", + "port": { + "_reference": "CNZJG", + "name": "CNZJG19" + } + }, + { + "date": "2010-12-06", + "name": "CNSHA12", + "port": { + "_reference": "CNSHA", + "name": "CNSHA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44409", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG20", + "port": { + "_reference": "CNZJG", + "name": "CNZJG21" + } + }, + { + "date": "2010-12-06", + "name": "CNTAO22", + "port": { + "_reference": "CNTAO", + "name": "CNTAO23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44410", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG22", + "port": { + "_reference": "CNZJG", + "name": "CNZJG23" + } + }, + { + "date": "2010-12-06", + "name": "CNTAZ24", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44411", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG24", + "port": { + "_reference": "CNZJG", + "name": "CNZJG25" + } + }, + { + "date": "2010-12-06", + "name": "CNWUH22", + "port": { + "_reference": "CNWUH", + "name": "CNWUH23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44414", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG26", + "port": { + "_reference": "CNZJG", + "name": "CNZJG27" + } + }, + { + "date": "2010-12-06", + "name": "CNYIT14", + "port": { + "_reference": "CNYIT", + "name": "CNYIT15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44415", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG28", + "port": { + "_reference": "CNZJG", + "name": "CNZJG29" + } + }, + { + "date": "2010-12-06", + "name": "CNYZO14", + "port": { + "_reference": "CNYZO", + "name": "CNYZO15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44422", + "stops": [ + { + "date": "2010-12-02", + "name": "CYLMS0", + "port": { + "_reference": "CYLMS", + "name": "CYLMS1" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN0", + "port": { + "_reference": "CZZLN", + "name": "CZZLN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44425", + "stops": [ + { + "date": "2010-12-02", + "name": "CYLMS2", + "port": { + "_reference": "CYLMS", + "name": "CYLMS3" + } + }, + { + "date": "2010-12-08", + "name": "DEBRE0", + "port": { + "_reference": "DEBRE", + "name": "DEBRE1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44426", + "stops": [ + { + "date": "2010-12-02", + "name": "CYLMS4", + "port": { + "_reference": "CYLMS", + "name": "CYLMS5" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV4", + "port": { + "_reference": "DEBRV", + "name": "DEBRV5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44439", + "stops": [ + { + "date": "2010-12-02", + "name": "CYLMS6", + "port": { + "_reference": "CYLMS", + "name": "CYLMS7" + } + }, + { + "date": "2010-12-08", + "name": "EGDAM0", + "port": { + "_reference": "EGDAM", + "name": "EGDAM1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44517", + "stops": [ + { + "date": "2010-12-02", + "name": "CZPRG0", + "port": { + "_reference": "CZPRG", + "name": "CZPRG1" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV6", + "port": { + "_reference": "DEBRV", + "name": "DEBRV7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44534", + "stops": [ + { + "date": "2010-12-02", + "name": "CZPRG2", + "port": { + "_reference": "CZPRG", + "name": "CZPRG3" + } + }, + { + "date": "2010-12-08", + "name": "ESLPA2", + "port": { + "_reference": "ESLPA", + "name": "ESLPA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44547", + "stops": [ + { + "date": "2010-12-02", + "name": "CZPRG4", + "port": { + "_reference": "CZPRG", + "name": "CZPRG5" + } + }, + { + "date": "2010-12-08", + "name": "GBFXT2", + "port": { + "_reference": "GBFXT", + "name": "GBFXT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44590", + "stops": [ + { + "date": "2010-12-02", + "name": "CZPRG6", + "port": { + "_reference": "CZPRG", + "name": "CZPRG7" + } + }, + { + "date": "2010-12-08", + "name": "SIKOP2", + "port": { + "_reference": "SIKOP", + "name": "SIKOP3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44608", + "stops": [ + { + "date": "2010-12-02", + "name": "CZZLN2", + "port": { + "_reference": "CZZLN", + "name": "CZZLN3" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV8", + "port": { + "_reference": "DEBRV", + "name": "DEBRV9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44635", + "stops": [ + { + "date": "2010-12-02", + "name": "CZZLN4", + "port": { + "_reference": "CZZLN", + "name": "CZZLN5" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB", + "port": { + "_reference": "FRSXB", + "name": "FRSXB0" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44674", + "stops": [ + { + "date": "2010-12-02", + "name": "CZZLN6", + "port": { + "_reference": "CZZLN", + "name": "CZZLN7" + } + }, + { + "date": "2010-12-08", + "name": "PLWRP0", + "port": { + "_reference": "PLWRP", + "name": "PLWRP1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44675", + "stops": [ + { + "date": "2010-12-02", + "name": "CZZLN8", + "port": { + "_reference": "CZZLN", + "name": "CZZLN9" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS2", + "port": { + "_reference": "PTLIS", + "name": "PTLIS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44684", + "stops": [ + { + "date": "2010-12-02", + "name": "CZZLN10", + "port": { + "_reference": "CZZLN", + "name": "CZZLN11" + } + }, + { + "date": "2010-12-08", + "name": "SYTTS0", + "port": { + "_reference": "SYTTS", + "name": "SYTTS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44694", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBER0", + "port": { + "_reference": "DEBER", + "name": "DEBER1" + } + }, + { + "date": "2010-12-08", + "name": "CYLMS8", + "port": { + "_reference": "CYLMS", + "name": "CYLMS9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44791", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBFE0", + "port": { + "_reference": "DEBFE", + "name": "DEBFE1" + } + }, + { + "date": "2010-12-06", + "name": "DEDUS0", + "port": { + "_reference": "DEDUS", + "name": "DEDUS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44792", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBFE2", + "port": { + "_reference": "DEBFE", + "name": "DEBFE3" + } + }, + { + "date": "2010-12-06", + "name": "DEFRA0", + "port": { + "_reference": "DEFRA", + "name": "DEFRA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44871", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE2", + "port": { + "_reference": "DEBRE", + "name": "DEBRE3" + } + }, + { + "date": "2010-12-08", + "name": "ATVIE24", + "port": { + "_reference": "ATVIE", + "name": "ATVIE25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44879", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE4", + "port": { + "_reference": "DEBRE", + "name": "DEBRE5" + } + }, + { + "date": "2010-12-06", + "name": "DEBER2", + "port": { + "_reference": "DEBER", + "name": "DEBER3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44881", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE6", + "port": { + "_reference": "DEBRE", + "name": "DEBRE7" + } + }, + { + "date": "2010-12-06", + "name": "DEBRV10", + "port": { + "_reference": "DEBRV", + "name": "DEBRV11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44882", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE8", + "port": { + "_reference": "DEBRE", + "name": "DEBRE9" + } + }, + { + "date": "2010-12-06", + "name": "DEDUS2", + "port": { + "_reference": "DEDUS", + "name": "DEDUS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44883", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE10", + "port": { + "_reference": "DEBRE", + "name": "DEBRE11" + } + }, + { + "date": "2010-12-06", + "name": "DEFRA2", + "port": { + "_reference": "DEFRA", + "name": "DEFRA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44886", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE12", + "port": { + "_reference": "DEBRE", + "name": "DEBRE13" + } + }, + { + "date": "2010-12-06", + "name": "DEMUC2", + "port": { + "_reference": "DEMUC", + "name": "DEMUC3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44887", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE14", + "port": { + "_reference": "DEBRE", + "name": "DEBRE15" + } + }, + { + "date": "2010-12-06", + "name": "DENUE2", + "port": { + "_reference": "DENUE", + "name": "DENUE3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44888", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE16", + "port": { + "_reference": "DEBRE", + "name": "DEBRE17" + } + }, + { + "date": "2010-12-06", + "name": "DESTR2", + "port": { + "_reference": "DESTR", + "name": "DESTR3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44949", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE18", + "port": { + "_reference": "DEBRE", + "name": "DEBRE19" + } + }, + { + "date": "2010-12-08", + "name": "ROCND2", + "port": { + "_reference": "ROCND", + "name": "ROCND3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "44961", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE20", + "port": { + "_reference": "DEBRE", + "name": "DEBRE21" + } + }, + { + "date": "2010-12-08", + "name": "TRMER0", + "port": { + "_reference": "TRMER", + "name": "TRMER1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45021", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRV12", + "port": { + "_reference": "DEBRV", + "name": "DEBRV13" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA0", + "port": { + "_reference": "ITPDA", + "name": "ITPDA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45044", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRV14", + "port": { + "_reference": "DEBRV", + "name": "DEBRV15" + } + }, + { + "date": "2010-12-08", + "name": "SESTO0", + "port": { + "_reference": "SESTO", + "name": "SESTO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45060", + "stops": [ + { + "date": "2010-12-02", + "name": "DEDUS4", + "port": { + "_reference": "DEDUS", + "name": "DEDUS5" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN12", + "port": { + "_reference": "CZZLN", + "name": "CZZLN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45086", + "stops": [ + { + "date": "2010-12-02", + "name": "DEDUS6", + "port": { + "_reference": "DEDUS", + "name": "DEDUS7" + } + }, + { + "date": "2010-12-08", + "name": "FRFOS2", + "port": { + "_reference": "FRFOS", + "name": "FRFOS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45109", + "stops": [ + { + "date": "2010-12-02", + "name": "DEDUS8", + "port": { + "_reference": "DEDUS", + "name": "DEDUS9" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL0", + "port": { + "_reference": "ITMIL", + "name": "ITMIL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45139", + "stops": [ + { + "date": "2010-12-02", + "name": "DEDUS10", + "port": { + "_reference": "DEDUS", + "name": "DEDUS11" + } + }, + { + "date": "2010-12-08", + "name": "SYTTS2", + "port": { + "_reference": "SYTTS", + "name": "SYTTS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45159", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA4", + "port": { + "_reference": "DEFRA", + "name": "DEFRA5" + } + }, + { + "date": "2010-12-06", + "name": "DEMUC4", + "port": { + "_reference": "DEMUC", + "name": "DEMUC5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45177", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA6", + "port": { + "_reference": "DEFRA", + "name": "DEFRA7" + } + }, + { + "date": "2010-12-08", + "name": "FRFOS4", + "port": { + "_reference": "FRFOS", + "name": "FRFOS5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45234", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA8", + "port": { + "_reference": "DEFRA", + "name": "DEFRA9" + } + }, + { + "date": "2010-12-08", + "name": "TRMER2", + "port": { + "_reference": "TRMER", + "name": "TRMER3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45246", + "stops": [ + { + "date": "2010-12-02", + "name": "DEGER0", + "port": { + "_reference": "DEGER", + "name": "DEGER1" + } + }, + { + "date": "2010-12-06", + "name": "DEBRV16", + "port": { + "_reference": "DEBRV", + "name": "DEBRV17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45250", + "stops": [ + { + "date": "2010-12-02", + "name": "DEGER2", + "port": { + "_reference": "DEGER", + "name": "DEGER3" + } + }, + { + "date": "2010-12-06", + "name": "DEMUC6", + "port": { + "_reference": "DEMUC", + "name": "DEMUC7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45301", + "stops": [ + { + "date": "2010-12-02", + "name": "DEGER4", + "port": { + "_reference": "DEGER", + "name": "DEGER5" + } + }, + { + "date": "2010-12-08", + "name": "MACAS0", + "port": { + "_reference": "MACAS", + "name": "MACAS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45306", + "stops": [ + { + "date": "2010-12-02", + "name": "DEGER6", + "port": { + "_reference": "DEGER", + "name": "DEGER7" + } + }, + { + "date": "2010-12-08", + "name": "NOKRS0", + "port": { + "_reference": "NOKRS", + "name": "NOKRS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45323", + "stops": [ + { + "date": "2010-12-02", + "name": "DEGER8", + "port": { + "_reference": "DEGER", + "name": "DEGER9" + } + }, + { + "date": "2010-12-08", + "name": "TRIST2", + "port": { + "_reference": "TRIST", + "name": "TRIST3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45428", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC8", + "port": { + "_reference": "DEMUC", + "name": "DEMUC9" + } + }, + { + "date": "2010-12-06", + "name": "DEBRV18", + "port": { + "_reference": "DEBRV", + "name": "DEBRV19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45454", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC10", + "port": { + "_reference": "DEMUC", + "name": "DEMUC11" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB1", + "port": { + "_reference": "FRSXB", + "name": "FRSXB2" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45463", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC12", + "port": { + "_reference": "DEMUC", + "name": "DEMUC13" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL2", + "port": { + "_reference": "GBTIL", + "name": "GBTIL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45489", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC14", + "port": { + "_reference": "DEMUC", + "name": "DEMUC15" + } + }, + { + "date": "2010-12-08", + "name": "NOOSL0", + "port": { + "_reference": "NOOSL", + "name": "NOOSL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45501", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC16", + "port": { + "_reference": "DEMUC", + "name": "DEMUC17" + } + }, + { + "date": "2010-12-08", + "name": "SILJU0", + "port": { + "_reference": "SILJU", + "name": "SILJU1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45502", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC18", + "port": { + "_reference": "DEMUC", + "name": "DEMUC19" + } + }, + { + "date": "2010-12-08", + "name": "SYLTK0", + "port": { + "_reference": "SYLTK", + "name": "SYLTK1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45511", + "stops": [ + { + "date": "2010-12-02", + "name": "DENUE4", + "port": { + "_reference": "DENUE", + "name": "DENUE5" + } + }, + { + "date": "2010-12-08", + "name": "CHBSL4", + "port": { + "_reference": "CHBSL", + "name": "CHBSL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45519", + "stops": [ + { + "date": "2010-12-02", + "name": "DENUE6", + "port": { + "_reference": "DENUE", + "name": "DENUE7" + } + }, + { + "date": "2010-12-06", + "name": "DEBRV20", + "port": { + "_reference": "DEBRV", + "name": "DEBRV21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45521", + "stops": [ + { + "date": "2010-12-02", + "name": "DENUE8", + "port": { + "_reference": "DENUE", + "name": "DENUE9" + } + }, + { + "date": "2010-12-06", + "name": "DEFRA10", + "port": { + "_reference": "DEFRA", + "name": "DEFRA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45572", + "stops": [ + { + "date": "2010-12-02", + "name": "DENUE10", + "port": { + "_reference": "DENUE", + "name": "DENUE11" + } + }, + { + "date": "2010-12-08", + "name": "LTKLJ0", + "port": { + "_reference": "LTKLJ", + "name": "LTKLJ1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45602", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR4", + "port": { + "_reference": "DESTR", + "name": "DESTR5" + } + }, + { + "date": "2010-12-08", + "name": "CHBSL6", + "port": { + "_reference": "CHBSL", + "name": "CHBSL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45603", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR6", + "port": { + "_reference": "DESTR", + "name": "DESTR7" + } + }, + { + "date": "2010-12-08", + "name": "CHZRH6", + "port": { + "_reference": "CHZRH", + "name": "CHZRH7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45604", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR8", + "port": { + "_reference": "DESTR", + "name": "DESTR9" + } + }, + { + "date": "2010-12-08", + "name": "CYLMS10", + "port": { + "_reference": "CYLMS", + "name": "CYLMS11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45610", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR10", + "port": { + "_reference": "DESTR", + "name": "DESTR11" + } + }, + { + "date": "2010-12-06", + "name": "DEBRV22", + "port": { + "_reference": "DEBRV", + "name": "DEBRV23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45612", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR12", + "port": { + "_reference": "DESTR", + "name": "DESTR13" + } + }, + { + "date": "2010-12-06", + "name": "DEFRA12", + "port": { + "_reference": "DEFRA", + "name": "DEFRA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45631", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR14", + "port": { + "_reference": "DESTR", + "name": "DESTR15" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD0", + "port": { + "_reference": "FRBOD", + "name": "FRBOD1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45644", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR16", + "port": { + "_reference": "DESTR", + "name": "DESTR17" + } + }, + { + "date": "2010-12-08", + "name": "GBTHP0", + "port": { + "_reference": "GBTHP", + "name": "GBTHP1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45679", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR18", + "port": { + "_reference": "DESTR", + "name": "DESTR19" + } + }, + { + "date": "2010-12-08", + "name": "SEGOT0", + "port": { + "_reference": "SEGOT", + "name": "SEGOT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45690", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR0", + "port": { + "_reference": "DKAAR", + "name": "DKAAR1" + } + }, + { + "date": "2010-12-08", + "name": "ATVIE26", + "port": { + "_reference": "ATVIE", + "name": "ATVIE27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45691", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR2", + "port": { + "_reference": "DKAAR", + "name": "DKAAR3" + } + }, + { + "date": "2010-12-08", + "name": "BEANR10", + "port": { + "_reference": "BEANR", + "name": "BEANR11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45699", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR4", + "port": { + "_reference": "DKAAR", + "name": "DKAAR5" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE4", + "port": { + "_reference": "DEBFE", + "name": "DEBFE5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45701", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR6", + "port": { + "_reference": "DKAAR", + "name": "DKAAR7" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV24", + "port": { + "_reference": "DEBRV", + "name": "DEBRV25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45705", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR8", + "port": { + "_reference": "DKAAR", + "name": "DKAAR9" + } + }, + { + "date": "2010-12-08", + "name": "DEHAM0", + "port": { + "_reference": "DEHAM", + "name": "DEHAM1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45708", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR10", + "port": { + "_reference": "DKAAR", + "name": "DKAAR11" + } + }, + { + "date": "2010-12-08", + "name": "DESTR20", + "port": { + "_reference": "DESTR", + "name": "DESTR21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45709", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR12", + "port": { + "_reference": "DKAAR", + "name": "DKAAR13" + } + }, + { + "date": "2010-12-06", + "name": "DKCPH0", + "port": { + "_reference": "DKCPH", + "name": "DKCPH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45715", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR14", + "port": { + "_reference": "DKAAR", + "name": "DKAAR15" + } + }, + { + "date": "2010-12-08", + "name": "ESBCN4", + "port": { + "_reference": "ESBCN", + "name": "ESBCN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45718", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR16", + "port": { + "_reference": "DKAAR", + "name": "DKAAR17" + } + }, + { + "date": "2010-12-08", + "name": "ESMAD0", + "port": { + "_reference": "ESMAD", + "name": "ESMAD1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45719", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR18", + "port": { + "_reference": "DKAAR", + "name": "DKAAR19" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC0", + "port": { + "_reference": "ESVLC", + "name": "ESVLC1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45725", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR20", + "port": { + "_reference": "DKAAR", + "name": "DKAAR21" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR2", + "port": { + "_reference": "FRPAR", + "name": "FRPAR3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45728", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR22", + "port": { + "_reference": "DKAAR", + "name": "DKAAR23" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL0", + "port": { + "_reference": "GBBEL", + "name": "GBBEL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45729", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR24", + "port": { + "_reference": "DKAAR", + "name": "DKAAR25" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM0", + "port": { + "_reference": "GBBHM", + "name": "GBBHM1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45731", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR26", + "port": { + "_reference": "DKAAR", + "name": "DKAAR27" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW0", + "port": { + "_reference": "GBGLW", + "name": "GBGLW1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45732", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR28", + "port": { + "_reference": "DKAAR", + "name": "DKAAR29" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA0", + "port": { + "_reference": "GBLBA", + "name": "GBLBA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45736", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR30", + "port": { + "_reference": "DKAAR", + "name": "DKAAR31" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL4", + "port": { + "_reference": "GBTIL", + "name": "GBTIL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45739", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR32", + "port": { + "_reference": "DKAAR", + "name": "DKAAR33" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD0", + "port": { + "_reference": "HUBUD", + "name": "HUBUD1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45740", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR34", + "port": { + "_reference": "DKAAR", + "name": "DKAAR35" + } + }, + { + "date": "2010-12-08", + "name": "IEDUB0", + "port": { + "_reference": "IEDUB", + "name": "IEDUB1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45744", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR36", + "port": { + "_reference": "DKAAR", + "name": "DKAAR37" + } + }, + { + "date": "2010-12-08", + "name": "ITGOA0", + "port": { + "_reference": "ITGOA", + "name": "ITGOA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45748", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR38", + "port": { + "_reference": "DKAAR", + "name": "DKAAR39" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP4", + "port": { + "_reference": "ITNAP", + "name": "ITNAP5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45749", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR40", + "port": { + "_reference": "DKAAR", + "name": "DKAAR41" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA2", + "port": { + "_reference": "ITPDA", + "name": "ITPDA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45767", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR42", + "port": { + "_reference": "DKAAR", + "name": "DKAAR43" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS4", + "port": { + "_reference": "PTLIS", + "name": "PTLIS5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45773", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR44", + "port": { + "_reference": "DKAAR", + "name": "DKAAR45" + } + }, + { + "date": "2010-12-08", + "name": "SIKOP4", + "port": { + "_reference": "SIKOP", + "name": "SIKOP5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45783", + "stops": [ + { + "date": "2010-12-02", + "name": "DKCPH2", + "port": { + "_reference": "DKCPH", + "name": "DKCPH3" + } + }, + { + "date": "2010-12-08", + "name": "BEAVL6", + "port": { + "_reference": "BEAVL", + "name": "BEAVL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45830", + "stops": [ + { + "date": "2010-12-02", + "name": "DKCPH4", + "port": { + "_reference": "DKCPH", + "name": "DKCPH5" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD2", + "port": { + "_reference": "HUBUD", + "name": "HUBUD3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45832", + "stops": [ + { + "date": "2010-12-02", + "name": "DKCPH6", + "port": { + "_reference": "DKCPH", + "name": "DKCPH7" + } + }, + { + "date": "2010-12-08", + "name": "IEORK0", + "port": { + "_reference": "IEORK", + "name": "IEORK1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45868", + "stops": [ + { + "date": "2010-12-02", + "name": "DKCPH8", + "port": { + "_reference": "DKCPH", + "name": "DKCPH9" + } + }, + { + "date": "2010-12-08", + "name": "TNTUN0", + "port": { + "_reference": "TNTUN", + "name": "TNTUN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45883", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG0", + "port": { + "_reference": "DZALG", + "name": "DZALG1" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV26", + "port": { + "_reference": "DEBRV", + "name": "DEBRV27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45890", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG2", + "port": { + "_reference": "DZALG", + "name": "DZALG3" + } + }, + { + "date": "2010-12-08", + "name": "DESTR22", + "port": { + "_reference": "DESTR", + "name": "DESTR23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45901", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG4", + "port": { + "_reference": "DZALG", + "name": "DZALG5" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC2", + "port": { + "_reference": "ESVLC", + "name": "ESVLC3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45903", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG6", + "port": { + "_reference": "DZALG", + "name": "DZALG7" + } + }, + { + "date": "2010-12-08", + "name": "FIKTK0", + "port": { + "_reference": "FIKTK", + "name": "FIKTK1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45911", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG8", + "port": { + "_reference": "DZALG", + "name": "DZALG9" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM2", + "port": { + "_reference": "GBBHM", + "name": "GBBHM3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45963", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL2", + "port": { + "_reference": "EETLL", + "name": "EETLL3" + } + }, + { + "date": "2010-12-08", + "name": "ATVIE28", + "port": { + "_reference": "ATVIE", + "name": "ATVIE29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45964", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL4", + "port": { + "_reference": "EETLL", + "name": "EETLL5" + } + }, + { + "date": "2010-12-08", + "name": "BEANR12", + "port": { + "_reference": "BEANR", + "name": "BEANR13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45969", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL6", + "port": { + "_reference": "EETLL", + "name": "EETLL7" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG8", + "port": { + "_reference": "CZPRG", + "name": "CZPRG9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45970", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL8", + "port": { + "_reference": "EETLL", + "name": "EETLL9" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN14", + "port": { + "_reference": "CZZLN", + "name": "CZZLN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45971", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL10", + "port": { + "_reference": "EETLL", + "name": "EETLL11" + } + }, + { + "date": "2010-12-08", + "name": "DEBER4", + "port": { + "_reference": "DEBER", + "name": "DEBER5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45972", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL12", + "port": { + "_reference": "EETLL", + "name": "EETLL13" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE6", + "port": { + "_reference": "DEBFE", + "name": "DEBFE7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45974", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL14", + "port": { + "_reference": "EETLL", + "name": "EETLL15" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV28", + "port": { + "_reference": "DEBRV", + "name": "DEBRV29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45975", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL16", + "port": { + "_reference": "EETLL", + "name": "EETLL17" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS12", + "port": { + "_reference": "DEDUS", + "name": "DEDUS13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45976", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL18", + "port": { + "_reference": "EETLL", + "name": "EETLL19" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA14", + "port": { + "_reference": "DEFRA", + "name": "DEFRA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45977", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL20", + "port": { + "_reference": "EETLL", + "name": "EETLL21" + } + }, + { + "date": "2010-12-08", + "name": "DEGER10", + "port": { + "_reference": "DEGER", + "name": "DEGER11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45979", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL22", + "port": { + "_reference": "EETLL", + "name": "EETLL23" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC20", + "port": { + "_reference": "DEMUC", + "name": "DEMUC21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45989", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL24", + "port": { + "_reference": "EETLL", + "name": "EETLL25" + } + }, + { + "date": "2010-12-08", + "name": "ESBIO2", + "port": { + "_reference": "ESBIO", + "name": "ESBIO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45991", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL26", + "port": { + "_reference": "EETLL", + "name": "EETLL27" + } + }, + { + "date": "2010-12-08", + "name": "ESMAD2", + "port": { + "_reference": "ESMAD", + "name": "ESMAD3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45992", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL28", + "port": { + "_reference": "EETLL", + "name": "EETLL29" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC4", + "port": { + "_reference": "ESVLC", + "name": "ESVLC5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45995", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL30", + "port": { + "_reference": "EETLL", + "name": "EETLL31" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD2", + "port": { + "_reference": "FRBOD", + "name": "FRBOD3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "45999", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL32", + "port": { + "_reference": "EETLL", + "name": "EETLL33" + } + }, + { + "date": "2010-12-08", + "name": "FRRNS2", + "port": { + "_reference": "FRRNS", + "name": "FRRNS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46000", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL34", + "port": { + "_reference": "EETLL", + "name": "EETLL35" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB3", + "port": { + "_reference": "FRSXB", + "name": "FRSXB4" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46002", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL36", + "port": { + "_reference": "EETLL", + "name": "EETLL37" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM4", + "port": { + "_reference": "GBBHM", + "name": "GBBHM5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46005", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL38", + "port": { + "_reference": "EETLL", + "name": "EETLL39" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA2", + "port": { + "_reference": "GBLBA", + "name": "GBLBA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46007", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL40", + "port": { + "_reference": "EETLL", + "name": "EETLL41" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN0", + "port": { + "_reference": "GBMAN", + "name": "GBMAN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46009", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL42", + "port": { + "_reference": "EETLL", + "name": "EETLL43" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL6", + "port": { + "_reference": "GBTIL", + "name": "GBTIL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46012", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL44", + "port": { + "_reference": "EETLL", + "name": "EETLL45" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD4", + "port": { + "_reference": "HUBUD", + "name": "HUBUD5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46019", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL46", + "port": { + "_reference": "EETLL", + "name": "EETLL47" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL2", + "port": { + "_reference": "ITMIL", + "name": "ITMIL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46021", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL48", + "port": { + "_reference": "EETLL", + "name": "EETLL49" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP6", + "port": { + "_reference": "ITNAP", + "name": "ITNAP7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46022", + "stops": [ + { + "date": "2010-12-02", + "name": "EETLL50", + "port": { + "_reference": "EETLL", + "name": "EETLL51" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA4", + "port": { + "_reference": "ITPDA", + "name": "ITPDA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46122", + "stops": [ + { + "date": "2010-12-02", + "name": "EGALY2", + "port": { + "_reference": "EGALY", + "name": "EGALY3" + } + }, + { + "date": "2010-12-08", + "name": "NLTLB0", + "port": { + "_reference": "NLTLB", + "name": "NLTLB1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46132", + "stops": [ + { + "date": "2010-12-02", + "name": "EGALY4", + "port": { + "_reference": "EGALY", + "name": "EGALY5" + } + }, + { + "date": "2010-12-08", + "name": "ROCND4", + "port": { + "_reference": "ROCND", + "name": "ROCND5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46156", + "stops": [ + { + "date": "2010-12-02", + "name": "EGDAM2", + "port": { + "_reference": "EGDAM", + "name": "EGDAM3" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV30", + "port": { + "_reference": "DEBRV", + "name": "DEBRV31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46225", + "stops": [ + { + "date": "2010-12-02", + "name": "EGDAM4", + "port": { + "_reference": "EGDAM", + "name": "EGDAM5" + } + }, + { + "date": "2010-12-08", + "name": "SEGOT2", + "port": { + "_reference": "SEGOT", + "name": "SEGOT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46250", + "stops": [ + { + "date": "2010-12-02", + "name": "EGPSD4", + "port": { + "_reference": "EGPSD", + "name": "EGPSD5" + } + }, + { + "date": "2010-12-08", + "name": "DEGER12", + "port": { + "_reference": "DEGER", + "name": "DEGER13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46290", + "stops": [ + { + "date": "2010-12-02", + "name": "EGPSD6", + "port": { + "_reference": "EGPSD", + "name": "EGPSD7" + } + }, + { + "date": "2010-12-08", + "name": "ITGOA2", + "port": { + "_reference": "ITGOA", + "name": "ITGOA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46359", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBCN6", + "port": { + "_reference": "ESBCN", + "name": "ESBCN7" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD4", + "port": { + "_reference": "FRBOD", + "name": "FRBOD5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46415", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBCN8", + "port": { + "_reference": "ESBCN", + "name": "ESBCN9" + } + }, + { + "date": "2010-12-08", + "name": "TRIST4", + "port": { + "_reference": "TRIST", + "name": "TRIST5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46419", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBIO4", + "port": { + "_reference": "ESBIO", + "name": "ESBIO5" + } + }, + { + "date": "2010-12-08", + "name": "BEANR14", + "port": { + "_reference": "BEANR", + "name": "BEANR15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46424", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBIO6", + "port": { + "_reference": "ESBIO", + "name": "ESBIO7" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG10", + "port": { + "_reference": "CZPRG", + "name": "CZPRG11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46444", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBIO8", + "port": { + "_reference": "ESBIO", + "name": "ESBIO9" + } + }, + { + "date": "2010-12-06", + "name": "ESBCN10", + "port": { + "_reference": "ESBCN", + "name": "ESBCN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46447", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBIO10", + "port": { + "_reference": "ESBIO", + "name": "ESBIO11" + } + }, + { + "date": "2010-12-06", + "name": "ESVLC6", + "port": { + "_reference": "ESVLC", + "name": "ESVLC7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46494", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBIO12", + "port": { + "_reference": "ESBIO", + "name": "ESBIO13" + } + }, + { + "date": "2010-12-08", + "name": "PLWRP2", + "port": { + "_reference": "PLWRP", + "name": "PLWRP3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46516", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA4", + "port": { + "_reference": "ESLPA", + "name": "ESLPA5" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN16", + "port": { + "_reference": "CZZLN", + "name": "CZZLN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46532", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA6", + "port": { + "_reference": "ESLPA", + "name": "ESLPA7" + } + }, + { + "date": "2010-12-08", + "name": "EGALY6", + "port": { + "_reference": "EGALY", + "name": "EGALY7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46555", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA8", + "port": { + "_reference": "ESLPA", + "name": "ESLPA9" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL8", + "port": { + "_reference": "GBTIL", + "name": "GBTIL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46579", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA10", + "port": { + "_reference": "ESLPA", + "name": "ESLPA11" + } + }, + { + "date": "2010-12-08", + "name": "NOBGO0", + "port": { + "_reference": "NOBGO", + "name": "NOBGO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46601", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD4", + "port": { + "_reference": "ESMAD", + "name": "ESMAD5" + } + }, + { + "date": "2010-12-08", + "name": "BEANR16", + "port": { + "_reference": "BEANR", + "name": "BEANR17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46606", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD6", + "port": { + "_reference": "ESMAD", + "name": "ESMAD7" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG12", + "port": { + "_reference": "CZPRG", + "name": "CZPRG13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46616", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD8", + "port": { + "_reference": "ESMAD", + "name": "ESMAD9" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC22", + "port": { + "_reference": "DEMUC", + "name": "DEMUC23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46619", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD10", + "port": { + "_reference": "ESMAD", + "name": "ESMAD11" + } + }, + { + "date": "2010-12-08", + "name": "DKAAR46", + "port": { + "_reference": "DKAAR", + "name": "DKAAR47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46626", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD12", + "port": { + "_reference": "ESMAD", + "name": "ESMAD13" + } + }, + { + "date": "2010-12-06", + "name": "ESBCN12", + "port": { + "_reference": "ESBCN", + "name": "ESBCN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46629", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD14", + "port": { + "_reference": "ESMAD", + "name": "ESMAD15" + } + }, + { + "date": "2010-12-06", + "name": "ESVLC8", + "port": { + "_reference": "ESVLC", + "name": "ESVLC9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46698", + "stops": [ + { + "date": "2010-12-02", + "name": "ESVLC10", + "port": { + "_reference": "ESVLC", + "name": "ESVLC11" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN18", + "port": { + "_reference": "CZZLN", + "name": "CZZLN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46707", + "stops": [ + { + "date": "2010-12-02", + "name": "ESVLC12", + "port": { + "_reference": "ESVLC", + "name": "ESVLC13" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC24", + "port": { + "_reference": "DEMUC", + "name": "DEMUC25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46783", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL0", + "port": { + "_reference": "FIHEL", + "name": "FIHEL1" + } + }, + { + "date": "2010-12-08", + "name": "BEANR18", + "port": { + "_reference": "BEANR", + "name": "BEANR19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46788", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL2", + "port": { + "_reference": "FIHEL", + "name": "FIHEL3" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG14", + "port": { + "_reference": "CZPRG", + "name": "CZPRG15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46789", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL4", + "port": { + "_reference": "FIHEL", + "name": "FIHEL5" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN20", + "port": { + "_reference": "CZZLN", + "name": "CZZLN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46790", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL6", + "port": { + "_reference": "FIHEL", + "name": "FIHEL7" + } + }, + { + "date": "2010-12-08", + "name": "DEBER6", + "port": { + "_reference": "DEBER", + "name": "DEBER7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46793", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL8", + "port": { + "_reference": "FIHEL", + "name": "FIHEL9" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV32", + "port": { + "_reference": "DEBRV", + "name": "DEBRV33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46794", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL10", + "port": { + "_reference": "FIHEL", + "name": "FIHEL11" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS14", + "port": { + "_reference": "DEDUS", + "name": "DEDUS15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46795", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL12", + "port": { + "_reference": "FIHEL", + "name": "FIHEL13" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA16", + "port": { + "_reference": "DEFRA", + "name": "DEFRA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46796", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL14", + "port": { + "_reference": "FIHEL", + "name": "FIHEL15" + } + }, + { + "date": "2010-12-08", + "name": "DEGER14", + "port": { + "_reference": "DEGER", + "name": "DEGER15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46798", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL16", + "port": { + "_reference": "FIHEL", + "name": "FIHEL17" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC26", + "port": { + "_reference": "DEMUC", + "name": "DEMUC27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46799", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL18", + "port": { + "_reference": "FIHEL", + "name": "FIHEL19" + } + }, + { + "date": "2010-12-08", + "name": "DENUE12", + "port": { + "_reference": "DENUE", + "name": "DENUE13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46800", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL20", + "port": { + "_reference": "FIHEL", + "name": "FIHEL21" + } + }, + { + "date": "2010-12-08", + "name": "DESTR24", + "port": { + "_reference": "DESTR", + "name": "DESTR25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46801", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL22", + "port": { + "_reference": "FIHEL", + "name": "FIHEL23" + } + }, + { + "date": "2010-12-08", + "name": "DKAAR48", + "port": { + "_reference": "DKAAR", + "name": "DKAAR49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46808", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL24", + "port": { + "_reference": "FIHEL", + "name": "FIHEL25" + } + }, + { + "date": "2010-12-08", + "name": "ESBCN14", + "port": { + "_reference": "ESBCN", + "name": "ESBCN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46812", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL26", + "port": { + "_reference": "FIHEL", + "name": "FIHEL27" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC14", + "port": { + "_reference": "ESVLC", + "name": "ESVLC15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46817", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL28", + "port": { + "_reference": "FIHEL", + "name": "FIHEL29" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR4", + "port": { + "_reference": "FRPAR", + "name": "FRPAR5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46820", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL30", + "port": { + "_reference": "FIHEL", + "name": "FIHEL31" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL2", + "port": { + "_reference": "GBBEL", + "name": "GBBEL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46823", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL32", + "port": { + "_reference": "FIHEL", + "name": "FIHEL33" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW2", + "port": { + "_reference": "GBGLW", + "name": "GBGLW3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46824", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL34", + "port": { + "_reference": "FIHEL", + "name": "FIHEL35" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA4", + "port": { + "_reference": "GBLBA", + "name": "GBLBA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46831", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL36", + "port": { + "_reference": "FIHEL", + "name": "FIHEL37" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD6", + "port": { + "_reference": "HUBUD", + "name": "HUBUD7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46832", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL38", + "port": { + "_reference": "FIHEL", + "name": "FIHEL39" + } + }, + { + "date": "2010-12-08", + "name": "IEDUB2", + "port": { + "_reference": "IEDUB", + "name": "IEDUB3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46838", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL40", + "port": { + "_reference": "FIHEL", + "name": "FIHEL41" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL4", + "port": { + "_reference": "ITMIL", + "name": "ITMIL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46839", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL42", + "port": { + "_reference": "FIHEL", + "name": "FIHEL43" + } + }, + { + "date": "2010-12-08", + "name": "ITMOD0", + "port": { + "_reference": "ITMOD", + "name": "ITMOD1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46840", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL44", + "port": { + "_reference": "FIHEL", + "name": "FIHEL45" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP8", + "port": { + "_reference": "ITNAP", + "name": "ITNAP9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46841", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL46", + "port": { + "_reference": "FIHEL", + "name": "FIHEL47" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA6", + "port": { + "_reference": "ITPDA", + "name": "ITPDA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46859", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL48", + "port": { + "_reference": "FIHEL", + "name": "FIHEL49" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS6", + "port": { + "_reference": "PTLIS", + "name": "PTLIS7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46863", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL50", + "port": { + "_reference": "FIHEL", + "name": "FIHEL51" + } + }, + { + "date": "2010-12-08", + "name": "SEHEL0", + "port": { + "_reference": "SEHEL", + "name": "SEHEL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46867", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL52", + "port": { + "_reference": "FIHEL", + "name": "FIHEL53" + } + }, + { + "date": "2010-12-08", + "name": "SYLTK2", + "port": { + "_reference": "SYLTK", + "name": "SYLTK3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46874", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK2", + "port": { + "_reference": "FIKTK", + "name": "FIKTK3" + } + }, + { + "date": "2010-12-08", + "name": "BEANR20", + "port": { + "_reference": "BEANR", + "name": "BEANR21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46879", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK4", + "port": { + "_reference": "FIKTK", + "name": "FIKTK5" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG16", + "port": { + "_reference": "CZPRG", + "name": "CZPRG17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46880", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK6", + "port": { + "_reference": "FIKTK", + "name": "FIKTK7" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN22", + "port": { + "_reference": "CZZLN", + "name": "CZZLN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46881", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK8", + "port": { + "_reference": "FIKTK", + "name": "FIKTK9" + } + }, + { + "date": "2010-12-08", + "name": "DEBER8", + "port": { + "_reference": "DEBER", + "name": "DEBER9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46882", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK10", + "port": { + "_reference": "FIKTK", + "name": "FIKTK11" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE8", + "port": { + "_reference": "DEBFE", + "name": "DEBFE9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46884", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK12", + "port": { + "_reference": "FIKTK", + "name": "FIKTK13" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV34", + "port": { + "_reference": "DEBRV", + "name": "DEBRV35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46885", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK14", + "port": { + "_reference": "FIKTK", + "name": "FIKTK15" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS16", + "port": { + "_reference": "DEDUS", + "name": "DEDUS17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46886", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK16", + "port": { + "_reference": "FIKTK", + "name": "FIKTK17" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA18", + "port": { + "_reference": "DEFRA", + "name": "DEFRA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46887", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK18", + "port": { + "_reference": "FIKTK", + "name": "FIKTK19" + } + }, + { + "date": "2010-12-08", + "name": "DEGER16", + "port": { + "_reference": "DEGER", + "name": "DEGER17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46889", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK20", + "port": { + "_reference": "FIKTK", + "name": "FIKTK21" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC28", + "port": { + "_reference": "DEMUC", + "name": "DEMUC29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46890", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK22", + "port": { + "_reference": "FIKTK", + "name": "FIKTK23" + } + }, + { + "date": "2010-12-08", + "name": "DENUE14", + "port": { + "_reference": "DENUE", + "name": "DENUE15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46891", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK24", + "port": { + "_reference": "FIKTK", + "name": "FIKTK25" + } + }, + { + "date": "2010-12-08", + "name": "DESTR26", + "port": { + "_reference": "DESTR", + "name": "DESTR27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46896", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK26", + "port": { + "_reference": "FIKTK", + "name": "FIKTK27" + } + }, + { + "date": "2010-12-08", + "name": "EGALY8", + "port": { + "_reference": "EGALY", + "name": "EGALY9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46900", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK28", + "port": { + "_reference": "FIKTK", + "name": "FIKTK29" + } + }, + { + "date": "2010-12-08", + "name": "ESBIO14", + "port": { + "_reference": "ESBIO", + "name": "ESBIO15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46905", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK30", + "port": { + "_reference": "FIKTK", + "name": "FIKTK31" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD6", + "port": { + "_reference": "FRBOD", + "name": "FRBOD7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46908", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK32", + "port": { + "_reference": "FIKTK", + "name": "FIKTK33" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR6", + "port": { + "_reference": "FRPAR", + "name": "FRPAR7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46909", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK34", + "port": { + "_reference": "FIKTK", + "name": "FIKTK35" + } + }, + { + "date": "2010-12-08", + "name": "FRRNS4", + "port": { + "_reference": "FRRNS", + "name": "FRRNS5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46910", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK36", + "port": { + "_reference": "FIKTK", + "name": "FIKTK37" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB5", + "port": { + "_reference": "FRSXB", + "name": "FRSXB6" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46911", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK38", + "port": { + "_reference": "FIKTK", + "name": "FIKTK39" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL4", + "port": { + "_reference": "GBBEL", + "name": "GBBEL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46914", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK40", + "port": { + "_reference": "FIKTK", + "name": "FIKTK41" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW4", + "port": { + "_reference": "GBGLW", + "name": "GBGLW5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46915", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK42", + "port": { + "_reference": "FIKTK", + "name": "FIKTK43" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA6", + "port": { + "_reference": "GBLBA", + "name": "GBLBA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46917", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK44", + "port": { + "_reference": "FIKTK", + "name": "FIKTK45" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN2", + "port": { + "_reference": "GBMAN", + "name": "GBMAN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46919", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK46", + "port": { + "_reference": "FIKTK", + "name": "FIKTK47" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL10", + "port": { + "_reference": "GBTIL", + "name": "GBTIL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46922", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK48", + "port": { + "_reference": "FIKTK", + "name": "FIKTK49" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD8", + "port": { + "_reference": "HUBUD", + "name": "HUBUD9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46923", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK50", + "port": { + "_reference": "FIKTK", + "name": "FIKTK51" + } + }, + { + "date": "2010-12-08", + "name": "IEDUB4", + "port": { + "_reference": "IEDUB", + "name": "IEDUB5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46929", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK52", + "port": { + "_reference": "FIKTK", + "name": "FIKTK53" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL6", + "port": { + "_reference": "ITMIL", + "name": "ITMIL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46931", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK54", + "port": { + "_reference": "FIKTK", + "name": "FIKTK55" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP10", + "port": { + "_reference": "ITNAP", + "name": "ITNAP11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46932", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK56", + "port": { + "_reference": "FIKTK", + "name": "FIKTK57" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA8", + "port": { + "_reference": "ITPDA", + "name": "ITPDA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46935", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK58", + "port": { + "_reference": "FIKTK", + "name": "FIKTK59" + } + }, + { + "date": "2010-12-08", + "name": "ITVCE0", + "port": { + "_reference": "ITVCE", + "name": "ITVCE1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46950", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK60", + "port": { + "_reference": "FIKTK", + "name": "FIKTK61" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS8", + "port": { + "_reference": "PTLIS", + "name": "PTLIS9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46997", + "stops": [ + { + "date": "2010-12-02", + "name": "FRBOD8", + "port": { + "_reference": "FRBOD", + "name": "FRBOD9" + } + }, + { + "date": "2010-12-06", + "name": "FRFOS6", + "port": { + "_reference": "FRFOS", + "name": "FRFOS7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "46999", + "stops": [ + { + "date": "2010-12-02", + "name": "FRBOD10", + "port": { + "_reference": "FRBOD", + "name": "FRBOD11" + } + }, + { + "date": "2010-12-06", + "name": "FRPAR8", + "port": { + "_reference": "FRPAR", + "name": "FRPAR9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47000", + "stops": [ + { + "date": "2010-12-02", + "name": "FRBOD12", + "port": { + "_reference": "FRBOD", + "name": "FRBOD13" + } + }, + { + "date": "2010-12-06", + "name": "FRRNS6", + "port": { + "_reference": "FRRNS", + "name": "FRRNS7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47001", + "stops": [ + { + "date": "2010-12-02", + "name": "FRBOD14", + "port": { + "_reference": "FRBOD", + "name": "FRBOD15" + } + }, + { + "date": "2010-12-06", + "name": "FRSXB7", + "port": { + "_reference": "FRSXB", + "name": "FRSXB8" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47018", + "stops": [ + { + "date": "2010-12-02", + "name": "FRBOD16", + "port": { + "_reference": "FRBOD", + "name": "FRBOD17" + } + }, + { + "date": "2010-12-08", + "name": "ITGOA4", + "port": { + "_reference": "ITGOA", + "name": "ITGOA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47041", + "stops": [ + { + "date": "2010-12-02", + "name": "FRBOD18", + "port": { + "_reference": "FRBOD", + "name": "FRBOD19" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS10", + "port": { + "_reference": "PTLIS", + "name": "PTLIS11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47088", + "stops": [ + { + "date": "2010-12-02", + "name": "FRFOS8", + "port": { + "_reference": "FRFOS", + "name": "FRFOS9" + } + }, + { + "date": "2010-12-06", + "name": "FRBOD20", + "port": { + "_reference": "FRBOD", + "name": "FRBOD21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47096", + "stops": [ + { + "date": "2010-12-02", + "name": "FRFOS10", + "port": { + "_reference": "FRFOS", + "name": "FRFOS11" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW6", + "port": { + "_reference": "GBGLW", + "name": "GBGLW7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47101", + "stops": [ + { + "date": "2010-12-02", + "name": "FRFOS12", + "port": { + "_reference": "FRFOS", + "name": "FRFOS13" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL12", + "port": { + "_reference": "GBTIL", + "name": "GBTIL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47148", + "stops": [ + { + "date": "2010-12-02", + "name": "FRLEH0", + "port": { + "_reference": "FRLEH", + "name": "FRLEH1" + } + }, + { + "date": "2010-12-08", + "name": "BEAVL8", + "port": { + "_reference": "BEAVL", + "name": "BEAVL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47261", + "stops": [ + { + "date": "2010-12-02", + "name": "FRPAR10", + "port": { + "_reference": "FRPAR", + "name": "FRPAR11" + } + }, + { + "date": "2010-12-08", + "name": "EGDAM6", + "port": { + "_reference": "EGDAM", + "name": "EGDAM7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47271", + "stops": [ + { + "date": "2010-12-02", + "name": "FRPAR12", + "port": { + "_reference": "FRPAR", + "name": "FRPAR13" + } + }, + { + "date": "2010-12-06", + "name": "FRFOS14", + "port": { + "_reference": "FRFOS", + "name": "FRFOS15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47317", + "stops": [ + { + "date": "2010-12-02", + "name": "FRPAR14", + "port": { + "_reference": "FRPAR", + "name": "FRPAR15" + } + }, + { + "date": "2010-12-08", + "name": "SEGOT4", + "port": { + "_reference": "SEGOT", + "name": "SEGOT5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47345", + "stops": [ + { + "date": "2010-12-02", + "name": "FRRNS8", + "port": { + "_reference": "FRRNS", + "name": "FRRNS9" + } + }, + { + "date": "2010-12-08", + "name": "DENUE16", + "port": { + "_reference": "DENUE", + "name": "DENUE17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47362", + "stops": [ + { + "date": "2010-12-02", + "name": "FRRNS10", + "port": { + "_reference": "FRRNS", + "name": "FRRNS11" + } + }, + { + "date": "2010-12-06", + "name": "FRFOS16", + "port": { + "_reference": "FRFOS", + "name": "FRFOS17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47364", + "stops": [ + { + "date": "2010-12-02", + "name": "FRRNS12", + "port": { + "_reference": "FRRNS", + "name": "FRRNS13" + } + }, + { + "date": "2010-12-06", + "name": "FRPAR16", + "port": { + "_reference": "FRPAR", + "name": "FRPAR17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47421", + "stops": [ + { + "date": "2010-12-02", + "name": "FRSXB9", + "port": { + "_reference": "FRSXB", + "name": "FRSXB10" + } + }, + { + "date": "2010-12-08", + "name": "BEAVL10", + "port": { + "_reference": "BEAVL", + "name": "BEAVL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47553", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBEL6", + "port": { + "_reference": "GBBEL", + "name": "GBBEL7" + } + }, + { + "date": "2010-12-06", + "name": "GBLIV2", + "port": { + "_reference": "GBLIV", + "name": "GBLIV3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47600", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBEL8", + "port": { + "_reference": "GBBEL", + "name": "GBBEL9" + } + }, + { + "date": "2010-12-08", + "name": "TRMER4", + "port": { + "_reference": "TRMER", + "name": "TRMER5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47602", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBHM6", + "port": { + "_reference": "GBBHM", + "name": "GBBHM7" + } + }, + { + "date": "2010-12-08", + "name": "BEANR22", + "port": { + "_reference": "BEANR", + "name": "BEANR23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47612", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBHM8", + "port": { + "_reference": "GBBHM", + "name": "GBBHM9" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV36", + "port": { + "_reference": "DEBRV", + "name": "DEBRV37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47638", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBHM10", + "port": { + "_reference": "GBBHM", + "name": "GBBHM11" + } + }, + { + "date": "2010-12-08", + "name": "FRRNS14", + "port": { + "_reference": "FRRNS", + "name": "FRRNS15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47699", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT4", + "port": { + "_reference": "GBFXT", + "name": "GBFXT5" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN24", + "port": { + "_reference": "CZZLN", + "name": "CZZLN25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47720", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT6", + "port": { + "_reference": "GBFXT", + "name": "GBFXT7" + } + }, + { + "date": "2010-12-08", + "name": "ESLPA12", + "port": { + "_reference": "ESLPA", + "name": "ESLPA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47730", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT8", + "port": { + "_reference": "GBFXT", + "name": "GBFXT9" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB11", + "port": { + "_reference": "FRSXB", + "name": "FRSXB12" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47842", + "stops": [ + { + "date": "2010-12-02", + "name": "GBGLW8", + "port": { + "_reference": "GBGLW", + "name": "GBGLW9" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA10", + "port": { + "_reference": "ITPDA", + "name": "ITPDA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "47857", + "stops": [ + { + "date": "2010-12-02", + "name": "GBGLW10", + "port": { + "_reference": "GBGLW", + "name": "GBGLW11" + } + }, + { + "date": "2010-12-08", + "name": "PLGDY0", + "port": { + "_reference": "PLGDY", + "name": "PLGDY1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48004", + "stops": [ + { + "date": "2010-12-02", + "name": "GBLIV4", + "port": { + "_reference": "GBLIV", + "name": "GBLIV5" + } + }, + { + "date": "2010-12-06", + "name": "GBBEL10", + "port": { + "_reference": "GBBEL", + "name": "GBBEL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48007", + "stops": [ + { + "date": "2010-12-02", + "name": "GBLIV6", + "port": { + "_reference": "GBLIV", + "name": "GBLIV7" + } + }, + { + "date": "2010-12-06", + "name": "GBGLW12", + "port": { + "_reference": "GBGLW", + "name": "GBGLW13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48008", + "stops": [ + { + "date": "2010-12-02", + "name": "GBLIV8", + "port": { + "_reference": "GBLIV", + "name": "GBLIV9" + } + }, + { + "date": "2010-12-06", + "name": "GBLBA8", + "port": { + "_reference": "GBLBA", + "name": "GBLBA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48036", + "stops": [ + { + "date": "2010-12-02", + "name": "GBLIV10", + "port": { + "_reference": "GBLIV", + "name": "GBLIV11" + } + }, + { + "date": "2010-12-08", + "name": "NOKRS2", + "port": { + "_reference": "NOKRS", + "name": "NOKRS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48078", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN4", + "port": { + "_reference": "GBMAN", + "name": "GBMAN5" + } + }, + { + "date": "2010-12-08", + "name": "EETLL52", + "port": { + "_reference": "EETLL", + "name": "EETLL53" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48098", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN6", + "port": { + "_reference": "GBMAN", + "name": "GBMAN7" + } + }, + { + "date": "2010-12-06", + "name": "GBGLW14", + "port": { + "_reference": "GBGLW", + "name": "GBGLW15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48099", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN8", + "port": { + "_reference": "GBMAN", + "name": "GBMAN9" + } + }, + { + "date": "2010-12-06", + "name": "GBLBA10", + "port": { + "_reference": "GBLBA", + "name": "GBLBA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48100", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN10", + "port": { + "_reference": "GBMAN", + "name": "GBMAN11" + } + }, + { + "date": "2010-12-06", + "name": "GBLIV12", + "port": { + "_reference": "GBLIV", + "name": "GBLIV13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48102", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN12", + "port": { + "_reference": "GBMAN", + "name": "GBMAN13" + } + }, + { + "date": "2010-12-06", + "name": "GBTIL14", + "port": { + "_reference": "GBTIL", + "name": "GBTIL15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48187", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP2", + "port": { + "_reference": "GBTHP", + "name": "GBTHP3" + } + }, + { + "date": "2010-12-06", + "name": "GBBHM12", + "port": { + "_reference": "GBBHM", + "name": "GBBHM13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48190", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP4", + "port": { + "_reference": "GBTHP", + "name": "GBTHP5" + } + }, + { + "date": "2010-12-06", + "name": "GBLBA12", + "port": { + "_reference": "GBLBA", + "name": "GBLBA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48191", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP6", + "port": { + "_reference": "GBTHP", + "name": "GBTHP7" + } + }, + { + "date": "2010-12-06", + "name": "GBLIV14", + "port": { + "_reference": "GBLIV", + "name": "GBLIV15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48193", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP8", + "port": { + "_reference": "GBTHP", + "name": "GBTHP9" + } + }, + { + "date": "2010-12-06", + "name": "GBTIL16", + "port": { + "_reference": "GBTIL", + "name": "GBTIL17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48200", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP10", + "port": { + "_reference": "GBTHP", + "name": "GBTHP11" + } + }, + { + "date": "2010-12-08", + "name": "ITGIT2", + "port": { + "_reference": "ITGIT", + "name": "ITGIT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48277", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTIL18", + "port": { + "_reference": "GBTIL", + "name": "GBTIL19" + } + }, + { + "date": "2010-12-06", + "name": "GBBEL12", + "port": { + "_reference": "GBBEL", + "name": "GBBEL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48301", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTIL20", + "port": { + "_reference": "GBTIL", + "name": "GBTIL21" + } + }, + { + "date": "2010-12-08", + "name": "LBBEY0", + "port": { + "_reference": "LBBEY", + "name": "LBBEY1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48340", + "stops": [ + { + "date": "2010-12-02", + "name": "GRPIR0", + "port": { + "_reference": "GRPIR", + "name": "GRPIR1" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV38", + "port": { + "_reference": "DEBRV", + "name": "DEBRV39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48375", + "stops": [ + { + "date": "2010-12-02", + "name": "GRPIR2", + "port": { + "_reference": "GRPIR", + "name": "GRPIR3" + } + }, + { + "date": "2010-12-08", + "name": "GBTHP12", + "port": { + "_reference": "GBTHP", + "name": "GBTHP13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48421", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG0", + "port": { + "_reference": "GRSKG", + "name": "GRSKG1" + } + }, + { + "date": "2010-12-08", + "name": "BEANR24", + "port": { + "_reference": "BEANR", + "name": "BEANR25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48428", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG2", + "port": { + "_reference": "GRSKG", + "name": "GRSKG3" + } + }, + { + "date": "2010-12-08", + "name": "DEBER10", + "port": { + "_reference": "DEBER", + "name": "DEBER11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48431", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG4", + "port": { + "_reference": "GRSKG", + "name": "GRSKG5" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV40", + "port": { + "_reference": "DEBRV", + "name": "DEBRV41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48459", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG6", + "port": { + "_reference": "GRSKG", + "name": "GRSKG7" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL14", + "port": { + "_reference": "GBBEL", + "name": "GBBEL15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48462", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG8", + "port": { + "_reference": "GRSKG", + "name": "GRSKG9" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW16", + "port": { + "_reference": "GBGLW", + "name": "GBGLW17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48469", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG10", + "port": { + "_reference": "GRSKG", + "name": "GRSKG11" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD10", + "port": { + "_reference": "HUBUD", + "name": "HUBUD11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48492", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG12", + "port": { + "_reference": "GRSKG", + "name": "GRSKG13" + } + }, + { + "date": "2010-12-08", + "name": "NOOSL2", + "port": { + "_reference": "NOOSL", + "name": "NOOSL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48497", + "stops": [ + { + "date": "2010-12-02", + "name": "GRSKG14", + "port": { + "_reference": "GRSKG", + "name": "GRSKG15" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS12", + "port": { + "_reference": "PTLIS", + "name": "PTLIS13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48524", + "stops": [ + { + "date": "2010-12-02", + "name": "HUBUD12", + "port": { + "_reference": "HUBUD", + "name": "HUBUD13" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS18", + "port": { + "_reference": "DEDUS", + "name": "DEDUS19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48547", + "stops": [ + { + "date": "2010-12-02", + "name": "HUBUD14", + "port": { + "_reference": "HUBUD", + "name": "HUBUD15" + } + }, + { + "date": "2010-12-08", + "name": "FRLEH2", + "port": { + "_reference": "FRLEH", + "name": "FRLEH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48548", + "stops": [ + { + "date": "2010-12-02", + "name": "HUBUD16", + "port": { + "_reference": "HUBUD", + "name": "HUBUD17" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR18", + "port": { + "_reference": "FRPAR", + "name": "FRPAR19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48604", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW0", + "port": { + "_reference": "IDBLW", + "name": "IDBLW1" + } + }, + { + "date": "2010-12-06", + "name": "IDSRG0", + "port": { + "_reference": "IDSRG", + "name": "IDSRG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48609", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW2", + "port": { + "_reference": "IDBLW", + "name": "IDBLW3" + } + }, + { + "date": "2010-12-08", + "name": "INDEL0", + "port": { + "_reference": "INDEL", + "name": "INDEL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48614", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW4", + "port": { + "_reference": "IDBLW", + "name": "IDBLW5" + } + }, + { + "date": "2010-12-08", + "name": "INTUT0", + "port": { + "_reference": "INTUT", + "name": "INTUT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48616", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW6", + "port": { + "_reference": "IDBLW", + "name": "IDBLW7" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH0", + "port": { + "_reference": "KHPNH", + "name": "KHPNH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48618", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW8", + "port": { + "_reference": "IDBLW", + "name": "IDBLW9" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN0", + "port": { + "_reference": "MMRGN", + "name": "MMRGN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48619", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW10", + "port": { + "_reference": "IDBLW", + "name": "IDBLW11" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN0", + "port": { + "_reference": "MYPEN", + "name": "MYPEN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48620", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW12", + "port": { + "_reference": "IDBLW", + "name": "IDBLW13" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU0", + "port": { + "_reference": "MYPGU", + "name": "MYPGU1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48621", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW14", + "port": { + "_reference": "IDBLW", + "name": "IDBLW15" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG2", + "port": { + "_reference": "MYPKG", + "name": "MYPKG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48625", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW16", + "port": { + "_reference": "IDBLW", + "name": "IDBLW17" + } + }, + { + "date": "2010-12-08", + "name": "PKKHI0", + "port": { + "_reference": "PKKHI", + "name": "PKKHI1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48626", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW18", + "port": { + "_reference": "IDBLW", + "name": "IDBLW19" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN0", + "port": { + "_reference": "SGSIN", + "name": "SGSIN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48631", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW20", + "port": { + "_reference": "IDBLW", + "name": "IDBLW21" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH0", + "port": { + "_reference": "VNHPH", + "name": "VNHPH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48632", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW22", + "port": { + "_reference": "IDBLW", + "name": "IDBLW23" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN0", + "port": { + "_reference": "VNSGN", + "name": "VNSGN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48634", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT0", + "port": { + "_reference": "IDJKT", + "name": "IDJKT1" + } + }, + { + "date": "2010-12-06", + "name": "IDSRG2", + "port": { + "_reference": "IDSRG", + "name": "IDSRG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48635", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT2", + "port": { + "_reference": "IDJKT", + "name": "IDJKT3" + } + }, + { + "date": "2010-12-06", + "name": "IDSUB0", + "port": { + "_reference": "IDSUB", + "name": "IDSUB1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48639", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT4", + "port": { + "_reference": "IDJKT", + "name": "IDJKT5" + } + }, + { + "date": "2010-12-08", + "name": "INDEL2", + "port": { + "_reference": "INDEL", + "name": "INDEL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48642", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT6", + "port": { + "_reference": "IDJKT", + "name": "IDJKT7" + } + }, + { + "date": "2010-12-08", + "name": "INMUN0", + "port": { + "_reference": "INMUN", + "name": "INMUN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48643", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT8", + "port": { + "_reference": "IDJKT", + "name": "IDJKT9" + } + }, + { + "date": "2010-12-08", + "name": "INNAH0", + "port": { + "_reference": "INNAH", + "name": "INNAH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48644", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT10", + "port": { + "_reference": "IDJKT", + "name": "IDJKT11" + } + }, + { + "date": "2010-12-08", + "name": "INTUT2", + "port": { + "_reference": "INTUT", + "name": "INTUT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48646", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT12", + "port": { + "_reference": "IDJKT", + "name": "IDJKT13" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH2", + "port": { + "_reference": "KHPNH", + "name": "KHPNH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48647", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT14", + "port": { + "_reference": "IDJKT", + "name": "IDJKT15" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB0", + "port": { + "_reference": "LKCMB", + "name": "LKCMB1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48648", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT16", + "port": { + "_reference": "IDJKT", + "name": "IDJKT17" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN2", + "port": { + "_reference": "MMRGN", + "name": "MMRGN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48649", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT18", + "port": { + "_reference": "IDJKT", + "name": "IDJKT19" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN2", + "port": { + "_reference": "MYPEN", + "name": "MYPEN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 22, + "name": "48650", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT20", + "port": { + "_reference": "IDJKT", + "name": "IDJKT21" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU2", + "port": { + "_reference": "MYPGU", + "name": "MYPGU3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48651", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT22", + "port": { + "_reference": "IDJKT", + "name": "IDJKT23" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG4", + "port": { + "_reference": "MYPKG", + "name": "MYPKG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48655", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT24", + "port": { + "_reference": "IDJKT", + "name": "IDJKT25" + } + }, + { + "date": "2010-12-08", + "name": "PKKHI2", + "port": { + "_reference": "PKKHI", + "name": "PKKHI3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48656", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT26", + "port": { + "_reference": "IDJKT", + "name": "IDJKT27" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN2", + "port": { + "_reference": "SGSIN", + "name": "SGSIN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48661", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT28", + "port": { + "_reference": "IDJKT", + "name": "IDJKT29" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH2", + "port": { + "_reference": "VNHPH", + "name": "VNHPH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48662", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT30", + "port": { + "_reference": "IDJKT", + "name": "IDJKT31" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN2", + "port": { + "_reference": "VNSGN", + "name": "VNSGN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48669", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSRG4", + "port": { + "_reference": "IDSRG", + "name": "IDSRG5" + } + }, + { + "date": "2010-12-08", + "name": "INDEL4", + "port": { + "_reference": "INDEL", + "name": "INDEL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48676", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSRG6", + "port": { + "_reference": "IDSRG", + "name": "IDSRG7" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH4", + "port": { + "_reference": "KHPNH", + "name": "KHPNH5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48678", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSRG8", + "port": { + "_reference": "IDSRG", + "name": "IDSRG9" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN4", + "port": { + "_reference": "MMRGN", + "name": "MMRGN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48680", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSRG10", + "port": { + "_reference": "IDSRG", + "name": "IDSRG11" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU4", + "port": { + "_reference": "MYPGU", + "name": "MYPGU5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48681", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSRG12", + "port": { + "_reference": "IDSRG", + "name": "IDSRG13" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG6", + "port": { + "_reference": "MYPKG", + "name": "MYPKG7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48691", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSRG14", + "port": { + "_reference": "IDSRG", + "name": "IDSRG15" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH4", + "port": { + "_reference": "VNHPH", + "name": "VNHPH5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48692", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSRG16", + "port": { + "_reference": "IDSRG", + "name": "IDSRG17" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN4", + "port": { + "_reference": "VNSGN", + "name": "VNSGN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48694", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB2", + "port": { + "_reference": "IDSUB", + "name": "IDSUB3" + } + }, + { + "date": "2010-12-06", + "name": "IDJKT32", + "port": { + "_reference": "IDJKT", + "name": "IDJKT33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48702", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB4", + "port": { + "_reference": "IDSUB", + "name": "IDSUB5" + } + }, + { + "date": "2010-12-08", + "name": "INMUN2", + "port": { + "_reference": "INMUN", + "name": "INMUN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48703", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB6", + "port": { + "_reference": "IDSUB", + "name": "IDSUB7" + } + }, + { + "date": "2010-12-08", + "name": "INNAH2", + "port": { + "_reference": "INNAH", + "name": "INNAH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48706", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB8", + "port": { + "_reference": "IDSUB", + "name": "IDSUB9" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH6", + "port": { + "_reference": "KHPNH", + "name": "KHPNH7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48707", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB10", + "port": { + "_reference": "IDSUB", + "name": "IDSUB11" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB2", + "port": { + "_reference": "LKCMB", + "name": "LKCMB3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48708", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB12", + "port": { + "_reference": "IDSUB", + "name": "IDSUB13" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN6", + "port": { + "_reference": "MMRGN", + "name": "MMRGN7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48709", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB14", + "port": { + "_reference": "IDSUB", + "name": "IDSUB15" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN4", + "port": { + "_reference": "MYPEN", + "name": "MYPEN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48710", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB16", + "port": { + "_reference": "IDSUB", + "name": "IDSUB17" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU6", + "port": { + "_reference": "MYPGU", + "name": "MYPGU7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48711", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB18", + "port": { + "_reference": "IDSUB", + "name": "IDSUB19" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG8", + "port": { + "_reference": "MYPKG", + "name": "MYPKG9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48715", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB20", + "port": { + "_reference": "IDSUB", + "name": "IDSUB21" + } + }, + { + "date": "2010-12-08", + "name": "PKKHI4", + "port": { + "_reference": "PKKHI", + "name": "PKKHI5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48716", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB22", + "port": { + "_reference": "IDSUB", + "name": "IDSUB23" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN4", + "port": { + "_reference": "SGSIN", + "name": "SGSIN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48721", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB24", + "port": { + "_reference": "IDSUB", + "name": "IDSUB25" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH6", + "port": { + "_reference": "VNHPH", + "name": "VNHPH7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48722", + "stops": [ + { + "date": "2010-12-02", + "name": "IDSUB26", + "port": { + "_reference": "IDSUB", + "name": "IDSUB27" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN6", + "port": { + "_reference": "VNSGN", + "name": "VNSGN7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48724", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB6", + "port": { + "_reference": "IEDUB", + "name": "IEDUB7" + } + }, + { + "date": "2010-12-08", + "name": "BEANR26", + "port": { + "_reference": "BEANR", + "name": "BEANR27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48731", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB8", + "port": { + "_reference": "IEDUB", + "name": "IEDUB9" + } + }, + { + "date": "2010-12-08", + "name": "DEBER12", + "port": { + "_reference": "DEBER", + "name": "DEBER13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48732", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB10", + "port": { + "_reference": "IEDUB", + "name": "IEDUB11" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE10", + "port": { + "_reference": "DEBFE", + "name": "DEBFE11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48734", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB12", + "port": { + "_reference": "IEDUB", + "name": "IEDUB13" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV42", + "port": { + "_reference": "DEBRV", + "name": "DEBRV43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48739", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB14", + "port": { + "_reference": "IEDUB", + "name": "IEDUB15" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC30", + "port": { + "_reference": "DEMUC", + "name": "DEMUC31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48740", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB16", + "port": { + "_reference": "IEDUB", + "name": "IEDUB17" + } + }, + { + "date": "2010-12-08", + "name": "DENUE18", + "port": { + "_reference": "DENUE", + "name": "DENUE19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48749", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB18", + "port": { + "_reference": "IEDUB", + "name": "IEDUB19" + } + }, + { + "date": "2010-12-08", + "name": "ESBCN16", + "port": { + "_reference": "ESBCN", + "name": "ESBCN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48753", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB20", + "port": { + "_reference": "IEDUB", + "name": "IEDUB21" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC16", + "port": { + "_reference": "ESVLC", + "name": "ESVLC17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48759", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB22", + "port": { + "_reference": "IEDUB", + "name": "IEDUB23" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR20", + "port": { + "_reference": "FRPAR", + "name": "FRPAR21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48781", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB24", + "port": { + "_reference": "IEDUB", + "name": "IEDUB25" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP12", + "port": { + "_reference": "ITNAP", + "name": "ITNAP13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48788", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB26", + "port": { + "_reference": "IEDUB", + "name": "IEDUB27" + } + }, + { + "date": "2010-12-08", + "name": "LVRIX0", + "port": { + "_reference": "LVRIX", + "name": "LVRIX1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48800", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB28", + "port": { + "_reference": "IEDUB", + "name": "IEDUB29" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS14", + "port": { + "_reference": "PTLIS", + "name": "PTLIS15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48808", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB30", + "port": { + "_reference": "IEDUB", + "name": "IEDUB31" + } + }, + { + "date": "2010-12-08", + "name": "SYLTK4", + "port": { + "_reference": "SYLTK", + "name": "SYLTK5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48815", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK2", + "port": { + "_reference": "IEORK", + "name": "IEORK3" + } + }, + { + "date": "2010-12-08", + "name": "BEANR28", + "port": { + "_reference": "BEANR", + "name": "BEANR29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48820", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK4", + "port": { + "_reference": "IEORK", + "name": "IEORK5" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG18", + "port": { + "_reference": "CZPRG", + "name": "CZPRG19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48821", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK6", + "port": { + "_reference": "IEORK", + "name": "IEORK7" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN26", + "port": { + "_reference": "CZZLN", + "name": "CZZLN27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48825", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK8", + "port": { + "_reference": "IEORK", + "name": "IEORK9" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV44", + "port": { + "_reference": "DEBRV", + "name": "DEBRV45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48826", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK10", + "port": { + "_reference": "IEORK", + "name": "IEORK11" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS20", + "port": { + "_reference": "DEDUS", + "name": "DEDUS21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48827", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK12", + "port": { + "_reference": "IEORK", + "name": "IEORK13" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA20", + "port": { + "_reference": "DEFRA", + "name": "DEFRA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48828", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK14", + "port": { + "_reference": "IEORK", + "name": "IEORK15" + } + }, + { + "date": "2010-12-08", + "name": "DEGER18", + "port": { + "_reference": "DEGER", + "name": "DEGER19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48830", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK16", + "port": { + "_reference": "IEORK", + "name": "IEORK17" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC32", + "port": { + "_reference": "DEMUC", + "name": "DEMUC33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48831", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK18", + "port": { + "_reference": "IEORK", + "name": "IEORK19" + } + }, + { + "date": "2010-12-08", + "name": "DENUE20", + "port": { + "_reference": "DENUE", + "name": "DENUE21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48833", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK20", + "port": { + "_reference": "IEORK", + "name": "IEORK21" + } + }, + { + "date": "2010-12-08", + "name": "DKAAR50", + "port": { + "_reference": "DKAAR", + "name": "DKAAR51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48840", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK22", + "port": { + "_reference": "IEORK", + "name": "IEORK23" + } + }, + { + "date": "2010-12-08", + "name": "ESBCN18", + "port": { + "_reference": "ESBCN", + "name": "ESBCN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48844", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK24", + "port": { + "_reference": "IEORK", + "name": "IEORK25" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC18", + "port": { + "_reference": "ESVLC", + "name": "ESVLC19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48850", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK26", + "port": { + "_reference": "IEORK", + "name": "IEORK27" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR22", + "port": { + "_reference": "FRPAR", + "name": "FRPAR23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48852", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK28", + "port": { + "_reference": "IEORK", + "name": "IEORK29" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB13", + "port": { + "_reference": "FRSXB", + "name": "FRSXB14" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48861", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK30", + "port": { + "_reference": "IEORK", + "name": "IEORK31" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL22", + "port": { + "_reference": "GBTIL", + "name": "GBTIL23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48865", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK32", + "port": { + "_reference": "IEORK", + "name": "IEORK33" + } + }, + { + "date": "2010-12-06", + "name": "IEDUB32", + "port": { + "_reference": "IEDUB", + "name": "IEDUB33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48870", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK34", + "port": { + "_reference": "IEORK", + "name": "IEORK35" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL8", + "port": { + "_reference": "ITMIL", + "name": "ITMIL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48871", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK36", + "port": { + "_reference": "IEORK", + "name": "IEORK37" + } + }, + { + "date": "2010-12-08", + "name": "ITMOD2", + "port": { + "_reference": "ITMOD", + "name": "ITMOD3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48873", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK38", + "port": { + "_reference": "IEORK", + "name": "IEORK39" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA12", + "port": { + "_reference": "ITPDA", + "name": "ITPDA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48895", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK40", + "port": { + "_reference": "IEORK", + "name": "IEORK41" + } + }, + { + "date": "2010-12-08", + "name": "SEHEL2", + "port": { + "_reference": "SEHEL", + "name": "SEHEL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48902", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK42", + "port": { + "_reference": "IEORK", + "name": "IEORK43" + } + }, + { + "date": "2010-12-08", + "name": "TRIST6", + "port": { + "_reference": "TRIST", + "name": "TRIST7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48911", + "stops": [ + { + "date": "2010-12-02", + "name": "INBOM0", + "port": { + "_reference": "INBOM", + "name": "INBOM1" + } + }, + { + "date": "2010-12-06", + "name": "INDEL6", + "port": { + "_reference": "INDEL", + "name": "INDEL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48914", + "stops": [ + { + "date": "2010-12-02", + "name": "INBOM2", + "port": { + "_reference": "INBOM", + "name": "INBOM3" + } + }, + { + "date": "2010-12-06", + "name": "INMUN4", + "port": { + "_reference": "INMUN", + "name": "INMUN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48941", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU0", + "port": { + "_reference": "INCCU", + "name": "INCCU1" + } + }, + { + "date": "2010-12-06", + "name": "INDEL8", + "port": { + "_reference": "INDEL", + "name": "INDEL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48944", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU2", + "port": { + "_reference": "INCCU", + "name": "INCCU3" + } + }, + { + "date": "2010-12-06", + "name": "INMUN6", + "port": { + "_reference": "INMUN", + "name": "INMUN7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48945", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU4", + "port": { + "_reference": "INCCU", + "name": "INCCU5" + } + }, + { + "date": "2010-12-06", + "name": "INNAH4", + "port": { + "_reference": "INNAH", + "name": "INNAH5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48946", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU6", + "port": { + "_reference": "INCCU", + "name": "INCCU7" + } + }, + { + "date": "2010-12-06", + "name": "INTUT4", + "port": { + "_reference": "INTUT", + "name": "INTUT5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48950", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU8", + "port": { + "_reference": "INCCU", + "name": "INCCU9" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN8", + "port": { + "_reference": "MMRGN", + "name": "MMRGN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48952", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU10", + "port": { + "_reference": "INCCU", + "name": "INCCU11" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU8", + "port": { + "_reference": "MYPGU", + "name": "MYPGU9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48958", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU12", + "port": { + "_reference": "INCCU", + "name": "INCCU13" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN6", + "port": { + "_reference": "SGSIN", + "name": "SGSIN7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48964", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU14", + "port": { + "_reference": "INCCU", + "name": "INCCU15" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN8", + "port": { + "_reference": "VNSGN", + "name": "VNSGN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48971", + "stops": [ + { + "date": "2010-12-02", + "name": "INCOK0", + "port": { + "_reference": "INCOK", + "name": "INCOK1" + } + }, + { + "date": "2010-12-06", + "name": "INDEL10", + "port": { + "_reference": "INDEL", + "name": "INDEL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48976", + "stops": [ + { + "date": "2010-12-02", + "name": "INCOK2", + "port": { + "_reference": "INCOK", + "name": "INCOK3" + } + }, + { + "date": "2010-12-06", + "name": "INTUT6", + "port": { + "_reference": "INTUT", + "name": "INTUT7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48982", + "stops": [ + { + "date": "2010-12-02", + "name": "INCOK4", + "port": { + "_reference": "INCOK", + "name": "INCOK5" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU10", + "port": { + "_reference": "MYPGU", + "name": "MYPGU11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48990", + "stops": [ + { + "date": "2010-12-02", + "name": "INCOK6", + "port": { + "_reference": "INCOK", + "name": "INCOK7" + } + }, + { + "date": "2010-12-08", + "name": "THLCH0", + "port": { + "_reference": "THLCH", + "name": "THLCH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48993", + "stops": [ + { + "date": "2010-12-02", + "name": "INCOK8", + "port": { + "_reference": "INCOK", + "name": "INCOK9" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH8", + "port": { + "_reference": "VNHPH", + "name": "VNHPH9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "48994", + "stops": [ + { + "date": "2010-12-02", + "name": "INCOK10", + "port": { + "_reference": "INCOK", + "name": "INCOK11" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN10", + "port": { + "_reference": "VNSGN", + "name": "VNSGN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49008", + "stops": [ + { + "date": "2010-12-02", + "name": "INDEL12", + "port": { + "_reference": "INDEL", + "name": "INDEL13" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH8", + "port": { + "_reference": "KHPNH", + "name": "KHPNH9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49013", + "stops": [ + { + "date": "2010-12-02", + "name": "INDEL14", + "port": { + "_reference": "INDEL", + "name": "INDEL15" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG10", + "port": { + "_reference": "MYPKG", + "name": "MYPKG11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49016", + "stops": [ + { + "date": "2010-12-02", + "name": "INDEL16", + "port": { + "_reference": "INDEL", + "name": "INDEL17" + } + }, + { + "date": "2010-12-08", + "name": "PKBQM2", + "port": { + "_reference": "PKBQM", + "name": "PKBQM3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49032", + "stops": [ + { + "date": "2010-12-02", + "name": "INIXY0", + "port": { + "_reference": "INIXY", + "name": "INIXY1" + } + }, + { + "date": "2010-12-06", + "name": "INDEL18", + "port": { + "_reference": "INDEL", + "name": "INDEL19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49042", + "stops": [ + { + "date": "2010-12-02", + "name": "INIXY2", + "port": { + "_reference": "INIXY", + "name": "INIXY3" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU12", + "port": { + "_reference": "MYPGU", + "name": "MYPGU13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49054", + "stops": [ + { + "date": "2010-12-02", + "name": "INIXY4", + "port": { + "_reference": "INIXY", + "name": "INIXY5" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN12", + "port": { + "_reference": "VNSGN", + "name": "VNSGN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49062", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA0", + "port": { + "_reference": "INMAA", + "name": "INMAA1" + } + }, + { + "date": "2010-12-06", + "name": "INDEL20", + "port": { + "_reference": "INDEL", + "name": "INDEL21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49064", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA2", + "port": { + "_reference": "INMAA", + "name": "INMAA3" + } + }, + { + "date": "2010-12-06", + "name": "INMUN8", + "port": { + "_reference": "INMUN", + "name": "INMUN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49065", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA4", + "port": { + "_reference": "INMAA", + "name": "INMAA5" + } + }, + { + "date": "2010-12-06", + "name": "INNAH6", + "port": { + "_reference": "INNAH", + "name": "INNAH7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49066", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA6", + "port": { + "_reference": "INMAA", + "name": "INMAA7" + } + }, + { + "date": "2010-12-06", + "name": "INTUT8", + "port": { + "_reference": "INTUT", + "name": "INTUT9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49068", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA8", + "port": { + "_reference": "INMAA", + "name": "INMAA9" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH10", + "port": { + "_reference": "KHPNH", + "name": "KHPNH11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49069", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA10", + "port": { + "_reference": "INMAA", + "name": "INMAA11" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB4", + "port": { + "_reference": "LKCMB", + "name": "LKCMB5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49070", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA12", + "port": { + "_reference": "INMAA", + "name": "INMAA13" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN10", + "port": { + "_reference": "MMRGN", + "name": "MMRGN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49073", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA14", + "port": { + "_reference": "INMAA", + "name": "INMAA15" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG12", + "port": { + "_reference": "MYPKG", + "name": "MYPKG13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49083", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA16", + "port": { + "_reference": "INMAA", + "name": "INMAA17" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH10", + "port": { + "_reference": "VNHPH", + "name": "VNHPH11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49205", + "stops": [ + { + "date": "2010-12-02", + "name": "IRBND4", + "port": { + "_reference": "IRBND", + "name": "IRBND5" + } + }, + { + "date": "2010-12-08", + "name": "AEAUH6", + "port": { + "_reference": "AEAUH", + "name": "AEAUH7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49207", + "stops": [ + { + "date": "2010-12-02", + "name": "IRBND6", + "port": { + "_reference": "IRBND", + "name": "IRBND7" + } + }, + { + "date": "2010-12-08", + "name": "AEJEA8", + "port": { + "_reference": "AEJEA", + "name": "AEJEA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49208", + "stops": [ + { + "date": "2010-12-02", + "name": "IRBND8", + "port": { + "_reference": "IRBND", + "name": "IRBND9" + } + }, + { + "date": "2010-12-08", + "name": "AEKLF8", + "port": { + "_reference": "AEKLF", + "name": "AEKLF9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49210", + "stops": [ + { + "date": "2010-12-02", + "name": "IRBND10", + "port": { + "_reference": "IRBND", + "name": "IRBND11" + } + }, + { + "date": "2010-12-08", + "name": "KWKWI0", + "port": { + "_reference": "KWKWI", + "name": "KWKWI1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49211", + "stops": [ + { + "date": "2010-12-02", + "name": "IRBND12", + "port": { + "_reference": "IRBND", + "name": "IRBND13" + } + }, + { + "date": "2010-12-08", + "name": "OMMCT2", + "port": { + "_reference": "OMMCT", + "name": "OMMCT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49215", + "stops": [ + { + "date": "2010-12-02", + "name": "IRBND14", + "port": { + "_reference": "IRBND", + "name": "IRBND15" + } + }, + { + "date": "2010-12-08", + "name": "SAJED0", + "port": { + "_reference": "SAJED", + "name": "SAJED1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49227", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI0", + "port": { + "_reference": "ITAOI", + "name": "ITAOI1" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV46", + "port": { + "_reference": "DEBRV", + "name": "DEBRV47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49270", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI2", + "port": { + "_reference": "ITAOI", + "name": "ITAOI3" + } + }, + { + "date": "2010-12-06", + "name": "ITGOA6", + "port": { + "_reference": "ITGOA", + "name": "ITGOA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49274", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI4", + "port": { + "_reference": "ITAOI", + "name": "ITAOI5" + } + }, + { + "date": "2010-12-06", + "name": "ITNAP14", + "port": { + "_reference": "ITNAP", + "name": "ITNAP15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49275", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI6", + "port": { + "_reference": "ITAOI", + "name": "ITAOI7" + } + }, + { + "date": "2010-12-06", + "name": "ITPDA14", + "port": { + "_reference": "ITPDA", + "name": "ITPDA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49299", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI8", + "port": { + "_reference": "ITAOI", + "name": "ITAOI9" + } + }, + { + "date": "2010-12-08", + "name": "SIKOP6", + "port": { + "_reference": "SIKOP", + "name": "SIKOP7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49397", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGIT4", + "port": { + "_reference": "ITGIT", + "name": "ITGIT5" + } + }, + { + "date": "2010-12-08", + "name": "TRMER6", + "port": { + "_reference": "TRMER", + "name": "TRMER7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49432", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA8", + "port": { + "_reference": "ITGOA", + "name": "ITGOA9" + } + }, + { + "date": "2010-12-08", + "name": "FRFOS18", + "port": { + "_reference": "FRFOS", + "name": "FRFOS19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49452", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA10", + "port": { + "_reference": "ITGOA", + "name": "ITGOA11" + } + }, + { + "date": "2010-12-06", + "name": "ITGIT6", + "port": { + "_reference": "ITGIT", + "name": "ITGIT7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49469", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA12", + "port": { + "_reference": "ITGOA", + "name": "ITGOA13" + } + }, + { + "date": "2010-12-08", + "name": "NOKRS4", + "port": { + "_reference": "NOKRS", + "name": "NOKRS5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49634", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMIL10", + "port": { + "_reference": "ITMIL", + "name": "ITMIL11" + } + }, + { + "date": "2010-12-06", + "name": "ITGIT8", + "port": { + "_reference": "ITGIT", + "name": "ITGIT9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49638", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMIL12", + "port": { + "_reference": "ITMIL", + "name": "ITMIL13" + } + }, + { + "date": "2010-12-06", + "name": "ITNAP16", + "port": { + "_reference": "ITNAP", + "name": "ITNAP17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49639", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMIL14", + "port": { + "_reference": "ITMIL", + "name": "ITMIL15" + } + }, + { + "date": "2010-12-06", + "name": "ITPDA16", + "port": { + "_reference": "ITPDA", + "name": "ITPDA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49725", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMOD4", + "port": { + "_reference": "ITMOD", + "name": "ITMOD5" + } + }, + { + "date": "2010-12-06", + "name": "ITGIT10", + "port": { + "_reference": "ITGIT", + "name": "ITGIT11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49729", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMOD6", + "port": { + "_reference": "ITMOD", + "name": "ITMOD7" + } + }, + { + "date": "2010-12-06", + "name": "ITNAP18", + "port": { + "_reference": "ITNAP", + "name": "ITNAP19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49790", + "stops": [ + { + "date": "2010-12-02", + "name": "ITNAP20", + "port": { + "_reference": "ITNAP", + "name": "ITNAP21" + } + }, + { + "date": "2010-12-08", + "name": "ESLPA14", + "port": { + "_reference": "ESLPA", + "name": "ESLPA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49916", + "stops": [ + { + "date": "2010-12-02", + "name": "ITPDA18", + "port": { + "_reference": "ITPDA", + "name": "ITPDA19" + } + }, + { + "date": "2010-12-08", + "name": "LBBEY2", + "port": { + "_reference": "LBBEY", + "name": "LBBEY3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "49945", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSAL2", + "port": { + "_reference": "ITSAL", + "name": "ITSAL3" + } + }, + { + "date": "2010-12-08", + "name": "BEANR30", + "port": { + "_reference": "BEANR", + "name": "BEANR31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50021", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSAL4", + "port": { + "_reference": "ITSAL", + "name": "ITSAL5" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS16", + "port": { + "_reference": "PTLIS", + "name": "PTLIS17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50024", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSAL6", + "port": { + "_reference": "ITSAL", + "name": "ITSAL7" + } + }, + { + "date": "2010-12-08", + "name": "SEGOT6", + "port": { + "_reference": "SEGOT", + "name": "SEGOT7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50044", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSPE6", + "port": { + "_reference": "ITSPE", + "name": "ITSPE7" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE12", + "port": { + "_reference": "DEBFE", + "name": "DEBFE13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50108", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSPE8", + "port": { + "_reference": "ITSPE", + "name": "ITSPE9" + } + }, + { + "date": "2010-12-08", + "name": "PLGDN0", + "port": { + "_reference": "PLGDN", + "name": "PLGDN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50180", + "stops": [ + { + "date": "2010-12-02", + "name": "ITVCE2", + "port": { + "_reference": "ITVCE", + "name": "ITVCE3" + } + }, + { + "date": "2010-12-06", + "name": "ITGIT12", + "port": { + "_reference": "ITGIT", + "name": "ITGIT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50181", + "stops": [ + { + "date": "2010-12-02", + "name": "ITVCE4", + "port": { + "_reference": "ITVCE", + "name": "ITVCE5" + } + }, + { + "date": "2010-12-06", + "name": "ITGOA14", + "port": { + "_reference": "ITGOA", + "name": "ITGOA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50183", + "stops": [ + { + "date": "2010-12-02", + "name": "ITVCE6", + "port": { + "_reference": "ITVCE", + "name": "ITVCE7" + } + }, + { + "date": "2010-12-06", + "name": "ITMIL16", + "port": { + "_reference": "ITMIL", + "name": "ITMIL17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50185", + "stops": [ + { + "date": "2010-12-02", + "name": "ITVCE8", + "port": { + "_reference": "ITVCE", + "name": "ITVCE9" + } + }, + { + "date": "2010-12-06", + "name": "ITNAP22", + "port": { + "_reference": "ITNAP", + "name": "ITNAP23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50219", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ0", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ1" + } + }, + { + "date": "2010-12-06", + "name": "JPHSA0", + "port": { + "_reference": "JPHSA", + "name": "JPHSA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50224", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ2", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ3" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO0", + "port": { + "_reference": "JPNGO", + "name": "JPNGO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50226", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ4", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ5" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ0", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50228", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ6", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ7" + } + }, + { + "date": "2010-12-06", + "name": "JPTKY0", + "port": { + "_reference": "JPTKY", + "name": "JPTKY1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50232", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ8", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ9" + } + }, + { + "date": "2010-12-06", + "name": "JPUKB0", + "port": { + "_reference": "JPUKB", + "name": "JPUKB1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50233", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ10", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ11" + } + }, + { + "date": "2010-12-06", + "name": "JPYKK0", + "port": { + "_reference": "JPYKK", + "name": "JPYKK1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50234", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ12", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ13" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK2", + "port": { + "_reference": "JPYOK", + "name": "JPYOK3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50241", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT0", + "port": { + "_reference": "JPHKT", + "name": "JPHKT1" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO2", + "port": { + "_reference": "JPNGO", + "name": "JPNGO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50243", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT2", + "port": { + "_reference": "JPHKT", + "name": "JPHKT3" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ2", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50247", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT4", + "port": { + "_reference": "JPHKT", + "name": "JPHKT5" + } + }, + { + "date": "2010-12-06", + "name": "JPTOY0", + "port": { + "_reference": "JPTOY", + "name": "JPTOY1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50250", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT6", + "port": { + "_reference": "JPHKT", + "name": "JPHKT7" + } + }, + { + "date": "2010-12-06", + "name": "JPYKK2", + "port": { + "_reference": "JPYKK", + "name": "JPYKK3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50251", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT8", + "port": { + "_reference": "JPHKT", + "name": "JPHKT9" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK4", + "port": { + "_reference": "JPYOK", + "name": "JPYOK5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50258", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHSA2", + "port": { + "_reference": "JPHSA", + "name": "JPHSA3" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO4", + "port": { + "_reference": "JPNGO", + "name": "JPNGO5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50260", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHSA4", + "port": { + "_reference": "JPHSA", + "name": "JPHSA5" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ4", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50272", + "stops": [ + { + "date": "2010-12-02", + "name": "JPIMB0", + "port": { + "_reference": "JPIMB", + "name": "JPIMB1" + } + }, + { + "date": "2010-12-06", + "name": "JPKIJ0", + "port": { + "_reference": "JPKIJ", + "name": "JPKIJ1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50275", + "stops": [ + { + "date": "2010-12-02", + "name": "JPIMB2", + "port": { + "_reference": "JPIMB", + "name": "JPIMB3" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO6", + "port": { + "_reference": "JPNGO", + "name": "JPNGO7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50277", + "stops": [ + { + "date": "2010-12-02", + "name": "JPIMB4", + "port": { + "_reference": "JPIMB", + "name": "JPIMB5" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ6", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50292", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKIJ2", + "port": { + "_reference": "JPKIJ", + "name": "JPKIJ3" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO8", + "port": { + "_reference": "JPNGO", + "name": "JPNGO9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50294", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKIJ4", + "port": { + "_reference": "JPKIJ", + "name": "JPKIJ5" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ8", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50299", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKIJ6", + "port": { + "_reference": "JPKIJ", + "name": "JPKIJ7" + } + }, + { + "date": "2010-12-06", + "name": "JPTYO0", + "port": { + "_reference": "JPTYO", + "name": "JPTYO1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50301", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKIJ8", + "port": { + "_reference": "JPKIJ", + "name": "JPKIJ9" + } + }, + { + "date": "2010-12-06", + "name": "JPYKK4", + "port": { + "_reference": "JPYKK", + "name": "JPYKK5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50302", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKIJ10", + "port": { + "_reference": "JPKIJ", + "name": "JPKIJ11" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK6", + "port": { + "_reference": "JPYOK", + "name": "JPYOK7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50309", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKNZ0", + "port": { + "_reference": "JPKNZ", + "name": "JPKNZ1" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO10", + "port": { + "_reference": "JPNGO", + "name": "JPNGO11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50311", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKNZ2", + "port": { + "_reference": "JPKNZ", + "name": "JPKNZ3" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ10", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50322", + "stops": [ + { + "date": "2010-12-02", + "name": "JPMOJ0", + "port": { + "_reference": "JPMOJ", + "name": "JPMOJ1" + } + }, + { + "date": "2010-12-06", + "name": "JPHSA6", + "port": { + "_reference": "JPHSA", + "name": "JPHSA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50328", + "stops": [ + { + "date": "2010-12-02", + "name": "JPMOJ2", + "port": { + "_reference": "JPMOJ", + "name": "JPMOJ3" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ12", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50335", + "stops": [ + { + "date": "2010-12-02", + "name": "JPMOJ4", + "port": { + "_reference": "JPMOJ", + "name": "JPMOJ5" + } + }, + { + "date": "2010-12-06", + "name": "JPYKK6", + "port": { + "_reference": "JPYKK", + "name": "JPYKK7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50336", + "stops": [ + { + "date": "2010-12-02", + "name": "JPMOJ6", + "port": { + "_reference": "JPMOJ", + "name": "JPMOJ7" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK8", + "port": { + "_reference": "JPYOK", + "name": "JPYOK9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50347", + "stops": [ + { + "date": "2010-12-02", + "name": "JPNGO12", + "port": { + "_reference": "JPNGO", + "name": "JPNGO13" + } + }, + { + "date": "2010-12-06", + "name": "JPTKY2", + "port": { + "_reference": "JPTKY", + "name": "JPTKY3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50356", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA2", + "port": { + "_reference": "JPOSA", + "name": "JPOSA3" + } + }, + { + "date": "2010-12-06", + "name": "JPHSA8", + "port": { + "_reference": "JPHSA", + "name": "JPHSA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50362", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA4", + "port": { + "_reference": "JPOSA", + "name": "JPOSA5" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ14", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50366", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA6", + "port": { + "_reference": "JPOSA", + "name": "JPOSA7" + } + }, + { + "date": "2010-12-06", + "name": "JPTOY2", + "port": { + "_reference": "JPTOY", + "name": "JPTOY3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50367", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA8", + "port": { + "_reference": "JPOSA", + "name": "JPOSA9" + } + }, + { + "date": "2010-12-06", + "name": "JPTYO2", + "port": { + "_reference": "JPTYO", + "name": "JPTYO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50395", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTAK0", + "port": { + "_reference": "JPTAK", + "name": "JPTAK1" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO14", + "port": { + "_reference": "JPNGO", + "name": "JPNGO15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50397", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTAK2", + "port": { + "_reference": "JPTAK", + "name": "JPTAK3" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ16", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50401", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTAK4", + "port": { + "_reference": "JPTAK", + "name": "JPTAK5" + } + }, + { + "date": "2010-12-06", + "name": "JPTYO4", + "port": { + "_reference": "JPTYO", + "name": "JPTYO5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50403", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTAK6", + "port": { + "_reference": "JPTAK", + "name": "JPTAK7" + } + }, + { + "date": "2010-12-06", + "name": "JPYKK8", + "port": { + "_reference": "JPYKK", + "name": "JPYKK9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50408", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY4", + "port": { + "_reference": "JPTKY", + "name": "JPTKY5" + } + }, + { + "date": "2010-12-06", + "name": "JPIMB6", + "port": { + "_reference": "JPIMB", + "name": "JPIMB7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50412", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY6", + "port": { + "_reference": "JPTKY", + "name": "JPTKY7" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO16", + "port": { + "_reference": "JPNGO", + "name": "JPNGO17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50414", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY8", + "port": { + "_reference": "JPTKY", + "name": "JPTKY9" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ18", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50417", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY10", + "port": { + "_reference": "JPTKY", + "name": "JPTKY11" + } + }, + { + "date": "2010-12-06", + "name": "JPTOY4", + "port": { + "_reference": "JPTOY", + "name": "JPTOY5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50421", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY12", + "port": { + "_reference": "JPTKY", + "name": "JPTKY13" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK10", + "port": { + "_reference": "JPYOK", + "name": "JPYOK11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50424", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK0", + "port": { + "_reference": "JPTMK", + "name": "JPTMK1" + } + }, + { + "date": "2010-12-06", + "name": "JPHSA10", + "port": { + "_reference": "JPHSA", + "name": "JPHSA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50429", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK2", + "port": { + "_reference": "JPTMK", + "name": "JPTMK3" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO18", + "port": { + "_reference": "JPNGO", + "name": "JPNGO19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50431", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK4", + "port": { + "_reference": "JPTMK", + "name": "JPTMK5" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ20", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50434", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK6", + "port": { + "_reference": "JPTMK", + "name": "JPTMK7" + } + }, + { + "date": "2010-12-06", + "name": "JPTOY6", + "port": { + "_reference": "JPTOY", + "name": "JPTOY7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50437", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK8", + "port": { + "_reference": "JPTMK", + "name": "JPTMK9" + } + }, + { + "date": "2010-12-06", + "name": "JPYKK10", + "port": { + "_reference": "JPYKK", + "name": "JPYKK11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50438", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK10", + "port": { + "_reference": "JPTMK", + "name": "JPTMK11" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK12", + "port": { + "_reference": "JPYOK", + "name": "JPYOK13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50441", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTOY8", + "port": { + "_reference": "JPTOY", + "name": "JPTOY9" + } + }, + { + "date": "2010-12-06", + "name": "JPHSA12", + "port": { + "_reference": "JPHSA", + "name": "JPHSA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50446", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTOY10", + "port": { + "_reference": "JPTOY", + "name": "JPTOY11" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO20", + "port": { + "_reference": "JPNGO", + "name": "JPNGO21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50455", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTOY12", + "port": { + "_reference": "JPTOY", + "name": "JPTOY13" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK14", + "port": { + "_reference": "JPYOK", + "name": "JPYOK15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50458", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTYO6", + "port": { + "_reference": "JPTYO", + "name": "JPTYO7" + } + }, + { + "date": "2010-12-06", + "name": "JPHSA14", + "port": { + "_reference": "JPHSA", + "name": "JPHSA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50471", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTYO8", + "port": { + "_reference": "JPTYO", + "name": "JPTYO9" + } + }, + { + "date": "2010-12-06", + "name": "JPYKK12", + "port": { + "_reference": "JPYKK", + "name": "JPYKK13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50480", + "stops": [ + { + "date": "2010-12-02", + "name": "JPUKB2", + "port": { + "_reference": "JPUKB", + "name": "JPUKB3" + } + }, + { + "date": "2010-12-06", + "name": "JPNGO22", + "port": { + "_reference": "JPNGO", + "name": "JPNGO23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50482", + "stops": [ + { + "date": "2010-12-02", + "name": "JPUKB4", + "port": { + "_reference": "JPUKB", + "name": "JPUKB5" + } + }, + { + "date": "2010-12-06", + "name": "JPSMZ22", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50487", + "stops": [ + { + "date": "2010-12-02", + "name": "JPUKB6", + "port": { + "_reference": "JPUKB", + "name": "JPUKB7" + } + }, + { + "date": "2010-12-06", + "name": "JPTYO10", + "port": { + "_reference": "JPTYO", + "name": "JPTYO11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50489", + "stops": [ + { + "date": "2010-12-02", + "name": "JPUKB8", + "port": { + "_reference": "JPUKB", + "name": "JPUKB9" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK16", + "port": { + "_reference": "JPYOK", + "name": "JPYOK17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50506", + "stops": [ + { + "date": "2010-12-02", + "name": "JPYKK14", + "port": { + "_reference": "JPYKK", + "name": "JPYKK15" + } + }, + { + "date": "2010-12-06", + "name": "JPYOK18", + "port": { + "_reference": "JPYOK", + "name": "JPYOK19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50541", + "stops": [ + { + "date": "2010-12-02", + "name": "KHPNH12", + "port": { + "_reference": "KHPNH", + "name": "KHPNH13" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU14", + "port": { + "_reference": "MYPGU", + "name": "MYPGU15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50547", + "stops": [ + { + "date": "2010-12-02", + "name": "KHPNH14", + "port": { + "_reference": "KHPNH", + "name": "KHPNH15" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN8", + "port": { + "_reference": "SGSIN", + "name": "SGSIN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50556", + "stops": [ + { + "date": "2010-12-02", + "name": "KREIW", + "port": { + "_reference": "KREIW", + "name": "KREIW0" + } + }, + { + "date": "2010-12-06", + "name": "KRKAN0", + "port": { + "_reference": "KRKAN", + "name": "KRKAN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50558", + "stops": [ + { + "date": "2010-12-02", + "name": "KREIW1", + "port": { + "_reference": "KREIW", + "name": "KREIW2" + } + }, + { + "date": "2010-12-06", + "name": "KRPUS0", + "port": { + "_reference": "KRPUS", + "name": "KRPUS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50559", + "stops": [ + { + "date": "2010-12-02", + "name": "KRINC0", + "port": { + "_reference": "KRINC", + "name": "KRINC1" + } + }, + { + "date": "2010-12-06", + "name": "KREIW3", + "port": { + "_reference": "KREIW", + "name": "KREIW4" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50561", + "stops": [ + { + "date": "2010-12-02", + "name": "KRINC2", + "port": { + "_reference": "KRINC", + "name": "KRINC3" + } + }, + { + "date": "2010-12-06", + "name": "KRKAN2", + "port": { + "_reference": "KRKAN", + "name": "KRKAN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50566", + "stops": [ + { + "date": "2010-12-02", + "name": "KRJCW0", + "port": { + "_reference": "KRJCW", + "name": "KRJCW1" + } + }, + { + "date": "2010-12-06", + "name": "KRKAN4", + "port": { + "_reference": "KRKAN", + "name": "KRKAN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50577", + "stops": [ + { + "date": "2010-12-02", + "name": "KRKUM0", + "port": { + "_reference": "KRKUM", + "name": "KRKUM1" + } + }, + { + "date": "2010-12-06", + "name": "KRKAN6", + "port": { + "_reference": "KRKAN", + "name": "KRKAN7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50578", + "stops": [ + { + "date": "2010-12-02", + "name": "KRKUM2", + "port": { + "_reference": "KRKUM", + "name": "KRKUM3" + } + }, + { + "date": "2010-12-06", + "name": "KRPUS2", + "port": { + "_reference": "KRPUS", + "name": "KRPUS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50584", + "stops": [ + { + "date": "2010-12-02", + "name": "KWKWI2", + "port": { + "_reference": "KWKWI", + "name": "KWKWI3" + } + }, + { + "date": "2010-12-08", + "name": "AEAUH8", + "port": { + "_reference": "AEAUH", + "name": "AEAUH9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50586", + "stops": [ + { + "date": "2010-12-02", + "name": "KWKWI4", + "port": { + "_reference": "KWKWI", + "name": "KWKWI5" + } + }, + { + "date": "2010-12-08", + "name": "AEJEA10", + "port": { + "_reference": "AEJEA", + "name": "AEJEA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50589", + "stops": [ + { + "date": "2010-12-02", + "name": "KWKWI6", + "port": { + "_reference": "KWKWI", + "name": "KWKWI7" + } + }, + { + "date": "2010-12-08", + "name": "IRBND16", + "port": { + "_reference": "IRBND", + "name": "IRBND17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50594", + "stops": [ + { + "date": "2010-12-02", + "name": "KWKWI8", + "port": { + "_reference": "KWKWI", + "name": "KWKWI9" + } + }, + { + "date": "2010-12-08", + "name": "SAJED2", + "port": { + "_reference": "SAJED", + "name": "SAJED3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50606", + "stops": [ + { + "date": "2010-12-02", + "name": "LBBEY4", + "port": { + "_reference": "LBBEY", + "name": "LBBEY5" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV48", + "port": { + "_reference": "DEBRV", + "name": "DEBRV49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50633", + "stops": [ + { + "date": "2010-12-02", + "name": "LBBEY6", + "port": { + "_reference": "LBBEY", + "name": "LBBEY7" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB15", + "port": { + "_reference": "FRSXB", + "name": "FRSXB16" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50676", + "stops": [ + { + "date": "2010-12-02", + "name": "LBBEY8", + "port": { + "_reference": "LBBEY", + "name": "LBBEY9" + } + }, + { + "date": "2010-12-08", + "name": "SEHEL4", + "port": { + "_reference": "SEHEL", + "name": "SEHEL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50727", + "stops": [ + { + "date": "2010-12-02", + "name": "LTKLJ2", + "port": { + "_reference": "LTKLJ", + "name": "LTKLJ3" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV50", + "port": { + "_reference": "DEBRV", + "name": "DEBRV51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50782", + "stops": [ + { + "date": "2010-12-02", + "name": "LTKLJ4", + "port": { + "_reference": "LTKLJ", + "name": "LTKLJ5" + } + }, + { + "date": "2010-12-08", + "name": "MACAS2", + "port": { + "_reference": "MACAS", + "name": "MACAS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50852", + "stops": [ + { + "date": "2010-12-02", + "name": "LVRIX2", + "port": { + "_reference": "LVRIX", + "name": "LVRIX3" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN14", + "port": { + "_reference": "GBMAN", + "name": "GBMAN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50907", + "stops": [ + { + "date": "2010-12-02", + "name": "MACAS4", + "port": { + "_reference": "MACAS", + "name": "MACAS5" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE14", + "port": { + "_reference": "DEBFE", + "name": "DEBFE15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "50998", + "stops": [ + { + "date": "2010-12-02", + "name": "MMRGN12", + "port": { + "_reference": "MMRGN", + "name": "MMRGN13" + } + }, + { + "date": "2010-12-08", + "name": "INMAA18", + "port": { + "_reference": "INMAA", + "name": "INMAA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51000", + "stops": [ + { + "date": "2010-12-02", + "name": "MMRGN14", + "port": { + "_reference": "MMRGN", + "name": "MMRGN15" + } + }, + { + "date": "2010-12-08", + "name": "INNAH8", + "port": { + "_reference": "INNAH", + "name": "INNAH9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51001", + "stops": [ + { + "date": "2010-12-02", + "name": "MMRGN16", + "port": { + "_reference": "MMRGN", + "name": "MMRGN17" + } + }, + { + "date": "2010-12-08", + "name": "INTUT10", + "port": { + "_reference": "INTUT", + "name": "INTUT11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51006", + "stops": [ + { + "date": "2010-12-02", + "name": "MMRGN18", + "port": { + "_reference": "MMRGN", + "name": "MMRGN19" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU16", + "port": { + "_reference": "MYPGU", + "name": "MYPGU17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51007", + "stops": [ + { + "date": "2010-12-02", + "name": "MMRGN20", + "port": { + "_reference": "MMRGN", + "name": "MMRGN21" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG14", + "port": { + "_reference": "MYPKG", + "name": "MYPKG15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51011", + "stops": [ + { + "date": "2010-12-02", + "name": "MMRGN22", + "port": { + "_reference": "MMRGN", + "name": "MMRGN23" + } + }, + { + "date": "2010-12-08", + "name": "PKKHI6", + "port": { + "_reference": "PKKHI", + "name": "PKKHI7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51012", + "stops": [ + { + "date": "2010-12-02", + "name": "MMRGN24", + "port": { + "_reference": "MMRGN", + "name": "MMRGN25" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN10", + "port": { + "_reference": "SGSIN", + "name": "SGSIN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51020", + "stops": [ + { + "date": "2010-12-02", + "name": "MXESE0", + "port": { + "_reference": "MXESE", + "name": "MXESE1" + } + }, + { + "date": "2010-12-06", + "name": "MXMEX2", + "port": { + "_reference": "MXMEX", + "name": "MXMEX3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51023", + "stops": [ + { + "date": "2010-12-02", + "name": "MXGDL0", + "port": { + "_reference": "MXGDL", + "name": "MXGDL1" + } + }, + { + "date": "2010-12-06", + "name": "MXESE2", + "port": { + "_reference": "MXESE", + "name": "MXESE3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51024", + "stops": [ + { + "date": "2010-12-02", + "name": "MXGDL2", + "port": { + "_reference": "MXGDL", + "name": "MXGDL3" + } + }, + { + "date": "2010-12-06", + "name": "MXMEX4", + "port": { + "_reference": "MXMEX", + "name": "MXMEX5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51027", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMEX6", + "port": { + "_reference": "MXMEX", + "name": "MXMEX7" + } + }, + { + "date": "2010-12-08", + "name": "CATOR14", + "port": { + "_reference": "CATOR", + "name": "CATOR15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51028", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMEX8", + "port": { + "_reference": "MXMEX", + "name": "MXMEX9" + } + }, + { + "date": "2010-12-08", + "name": "CAVAN8", + "port": { + "_reference": "CAVAN", + "name": "CAVAN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51029", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMEX10", + "port": { + "_reference": "MXMEX", + "name": "MXMEX11" + } + }, + { + "date": "2010-12-06", + "name": "MXESE4", + "port": { + "_reference": "MXESE", + "name": "MXESE5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51033", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMEX12", + "port": { + "_reference": "MXMEX", + "name": "MXMEX13" + } + }, + { + "date": "2010-12-08", + "name": "USATL0", + "port": { + "_reference": "USATL", + "name": "USATL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51035", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMEX14", + "port": { + "_reference": "MXMEX", + "name": "MXMEX15" + } + }, + { + "date": "2010-12-08", + "name": "USHOU0", + "port": { + "_reference": "USHOU", + "name": "USHOU1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51040", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMTY0", + "port": { + "_reference": "MXMTY", + "name": "MXMTY1" + } + }, + { + "date": "2010-12-06", + "name": "MXESE6", + "port": { + "_reference": "MXESE", + "name": "MXESE7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51042", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMTY2", + "port": { + "_reference": "MXMTY", + "name": "MXMTY3" + } + }, + { + "date": "2010-12-06", + "name": "MXMEX16", + "port": { + "_reference": "MXMEX", + "name": "MXMEX17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51044", + "stops": [ + { + "date": "2010-12-02", + "name": "MXZLO0", + "port": { + "_reference": "MXZLO", + "name": "MXZLO1" + } + }, + { + "date": "2010-12-06", + "name": "MXESE8", + "port": { + "_reference": "MXESE", + "name": "MXESE9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51046", + "stops": [ + { + "date": "2010-12-02", + "name": "MXZLO2", + "port": { + "_reference": "MXZLO", + "name": "MXZLO3" + } + }, + { + "date": "2010-12-06", + "name": "MXMEX18", + "port": { + "_reference": "MXMEX", + "name": "MXMEX19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51065", + "stops": [ + { + "date": "2010-12-02", + "name": "MYPEN6", + "port": { + "_reference": "MYPEN", + "name": "MYPEN7" + } + }, + { + "date": "2010-12-06", + "name": "MYPGU18", + "port": { + "_reference": "MYPGU", + "name": "MYPGU19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51066", + "stops": [ + { + "date": "2010-12-02", + "name": "MYPEN8", + "port": { + "_reference": "MYPEN", + "name": "MYPEN9" + } + }, + { + "date": "2010-12-06", + "name": "MYPKG16", + "port": { + "_reference": "MYPKG", + "name": "MYPKG17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51104", + "stops": [ + { + "date": "2010-12-02", + "name": "MYPGU20", + "port": { + "_reference": "MYPGU", + "name": "MYPGU21" + } + }, + { + "date": "2010-12-08", + "name": "THLKG0", + "port": { + "_reference": "THLKG", + "name": "THLKG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51144", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM2", + "port": { + "_reference": "NLRTM", + "name": "NLRTM3" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG20", + "port": { + "_reference": "CZPRG", + "name": "CZPRG21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51145", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM4", + "port": { + "_reference": "NLRTM", + "name": "NLRTM5" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN28", + "port": { + "_reference": "CZZLN", + "name": "CZZLN29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51146", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM6", + "port": { + "_reference": "NLRTM", + "name": "NLRTM7" + } + }, + { + "date": "2010-12-08", + "name": "DEBER14", + "port": { + "_reference": "DEBER", + "name": "DEBER15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51147", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM8", + "port": { + "_reference": "NLRTM", + "name": "NLRTM9" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE16", + "port": { + "_reference": "DEBFE", + "name": "DEBFE17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51150", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM10", + "port": { + "_reference": "NLRTM", + "name": "NLRTM11" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS22", + "port": { + "_reference": "DEDUS", + "name": "DEDUS23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51151", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM12", + "port": { + "_reference": "NLRTM", + "name": "NLRTM13" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA22", + "port": { + "_reference": "DEFRA", + "name": "DEFRA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51152", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM14", + "port": { + "_reference": "NLRTM", + "name": "NLRTM15" + } + }, + { + "date": "2010-12-08", + "name": "DEGER20", + "port": { + "_reference": "DEGER", + "name": "DEGER21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51154", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM16", + "port": { + "_reference": "NLRTM", + "name": "NLRTM17" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC34", + "port": { + "_reference": "DEMUC", + "name": "DEMUC35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51155", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM18", + "port": { + "_reference": "NLRTM", + "name": "NLRTM19" + } + }, + { + "date": "2010-12-08", + "name": "DENUE22", + "port": { + "_reference": "DENUE", + "name": "DENUE23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51156", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM20", + "port": { + "_reference": "NLRTM", + "name": "NLRTM21" + } + }, + { + "date": "2010-12-08", + "name": "DESTR28", + "port": { + "_reference": "DESTR", + "name": "DESTR29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51157", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM22", + "port": { + "_reference": "NLRTM", + "name": "NLRTM23" + } + }, + { + "date": "2010-12-08", + "name": "DKAAR52", + "port": { + "_reference": "DKAAR", + "name": "DKAAR53" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51158", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM24", + "port": { + "_reference": "NLRTM", + "name": "NLRTM25" + } + }, + { + "date": "2010-12-08", + "name": "DKCPH10", + "port": { + "_reference": "DKCPH", + "name": "DKCPH11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51162", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM26", + "port": { + "_reference": "NLRTM", + "name": "NLRTM27" + } + }, + { + "date": "2010-12-08", + "name": "EGDAM8", + "port": { + "_reference": "EGDAM", + "name": "EGDAM9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51171", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM28", + "port": { + "_reference": "NLRTM", + "name": "NLRTM29" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD22", + "port": { + "_reference": "FRBOD", + "name": "FRBOD23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51172", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM30", + "port": { + "_reference": "NLRTM", + "name": "NLRTM31" + } + }, + { + "date": "2010-12-08", + "name": "FRFOS20", + "port": { + "_reference": "FRFOS", + "name": "FRFOS21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51174", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM32", + "port": { + "_reference": "NLRTM", + "name": "NLRTM33" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR24", + "port": { + "_reference": "FRPAR", + "name": "FRPAR25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51175", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM34", + "port": { + "_reference": "NLRTM", + "name": "NLRTM35" + } + }, + { + "date": "2010-12-08", + "name": "FRRNS16", + "port": { + "_reference": "FRRNS", + "name": "FRRNS17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51176", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM36", + "port": { + "_reference": "NLRTM", + "name": "NLRTM37" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB17", + "port": { + "_reference": "FRSXB", + "name": "FRSXB18" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51178", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM38", + "port": { + "_reference": "NLRTM", + "name": "NLRTM39" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM14", + "port": { + "_reference": "GBBHM", + "name": "GBBHM15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51181", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM40", + "port": { + "_reference": "NLRTM", + "name": "NLRTM41" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA14", + "port": { + "_reference": "GBLBA", + "name": "GBLBA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51188", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM42", + "port": { + "_reference": "NLRTM", + "name": "NLRTM43" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD18", + "port": { + "_reference": "HUBUD", + "name": "HUBUD19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51196", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM44", + "port": { + "_reference": "NLRTM", + "name": "NLRTM45" + } + }, + { + "date": "2010-12-08", + "name": "ITMOD8", + "port": { + "_reference": "ITMOD", + "name": "ITMOD9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51197", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM46", + "port": { + "_reference": "NLRTM", + "name": "NLRTM47" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP24", + "port": { + "_reference": "ITNAP", + "name": "ITNAP25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51198", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM48", + "port": { + "_reference": "NLRTM", + "name": "NLRTM49" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA20", + "port": { + "_reference": "ITPDA", + "name": "ITPDA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51213", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM50", + "port": { + "_reference": "NLRTM", + "name": "NLRTM51" + } + }, + { + "date": "2010-12-08", + "name": "PLSZZ0", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51215", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM52", + "port": { + "_reference": "NLRTM", + "name": "NLRTM53" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS18", + "port": { + "_reference": "PTLIS", + "name": "PTLIS19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51219", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM54", + "port": { + "_reference": "NLRTM", + "name": "NLRTM55" + } + }, + { + "date": "2010-12-08", + "name": "SEHEL6", + "port": { + "_reference": "SEHEL", + "name": "SEHEL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51229", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB2", + "port": { + "_reference": "NLTLB", + "name": "NLTLB3" + } + }, + { + "date": "2010-12-08", + "name": "ATVIE30", + "port": { + "_reference": "ATVIE", + "name": "ATVIE31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51237", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB4", + "port": { + "_reference": "NLTLB", + "name": "NLTLB5" + } + }, + { + "date": "2010-12-08", + "name": "DEBER16", + "port": { + "_reference": "DEBER", + "name": "DEBER17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51243", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB6", + "port": { + "_reference": "NLTLB", + "name": "NLTLB7" + } + }, + { + "date": "2010-12-08", + "name": "DEGER22", + "port": { + "_reference": "DEGER", + "name": "DEGER23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51247", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB8", + "port": { + "_reference": "NLTLB", + "name": "NLTLB9" + } + }, + { + "date": "2010-12-08", + "name": "DESTR30", + "port": { + "_reference": "DESTR", + "name": "DESTR31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51248", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB10", + "port": { + "_reference": "NLTLB", + "name": "NLTLB11" + } + }, + { + "date": "2010-12-08", + "name": "DKAAR54", + "port": { + "_reference": "DKAAR", + "name": "DKAAR55" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51262", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB12", + "port": { + "_reference": "NLTLB", + "name": "NLTLB13" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD24", + "port": { + "_reference": "FRBOD", + "name": "FRBOD25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51267", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB14", + "port": { + "_reference": "NLTLB", + "name": "NLTLB15" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB19", + "port": { + "_reference": "FRSXB", + "name": "FRSXB20" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51268", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB16", + "port": { + "_reference": "NLTLB", + "name": "NLTLB17" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL16", + "port": { + "_reference": "GBBEL", + "name": "GBBEL17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51274", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB18", + "port": { + "_reference": "NLTLB", + "name": "NLTLB19" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN16", + "port": { + "_reference": "GBMAN", + "name": "GBMAN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51280", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB20", + "port": { + "_reference": "NLTLB", + "name": "NLTLB21" + } + }, + { + "date": "2010-12-08", + "name": "IEDUB34", + "port": { + "_reference": "IEDUB", + "name": "IEDUB35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51286", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB22", + "port": { + "_reference": "NLTLB", + "name": "NLTLB23" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL18", + "port": { + "_reference": "ITMIL", + "name": "ITMIL19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51297", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB24", + "port": { + "_reference": "NLTLB", + "name": "NLTLB25" + } + }, + { + "date": "2010-12-06", + "name": "NLRTM56", + "port": { + "_reference": "NLRTM", + "name": "NLRTM57" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51340", + "stops": [ + { + "date": "2010-12-02", + "name": "NOAES0", + "port": { + "_reference": "NOAES", + "name": "NOAES1" + } + }, + { + "date": "2010-12-08", + "name": "DKCPH12", + "port": { + "_reference": "DKCPH", + "name": "DKCPH13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51359", + "stops": [ + { + "date": "2010-12-02", + "name": "NOAES2", + "port": { + "_reference": "NOAES", + "name": "NOAES3" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL18", + "port": { + "_reference": "GBBEL", + "name": "GBBEL19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51400", + "stops": [ + { + "date": "2010-12-02", + "name": "NOAES4", + "port": { + "_reference": "NOAES", + "name": "NOAES5" + } + }, + { + "date": "2010-12-08", + "name": "SEGOT8", + "port": { + "_reference": "SEGOT", + "name": "SEGOT9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51404", + "stops": [ + { + "date": "2010-12-02", + "name": "NOAES6", + "port": { + "_reference": "NOAES", + "name": "NOAES7" + } + }, + { + "date": "2010-12-08", + "name": "SILJU2", + "port": { + "_reference": "SILJU", + "name": "SILJU3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51503", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS6", + "port": { + "_reference": "NOKRS", + "name": "NOKRS7" + } + }, + { + "date": "2010-12-08", + "name": "BEANR32", + "port": { + "_reference": "BEANR", + "name": "BEANR33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51513", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS8", + "port": { + "_reference": "NOKRS", + "name": "NOKRS9" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV52", + "port": { + "_reference": "DEBRV", + "name": "DEBRV53" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51515", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS10", + "port": { + "_reference": "NOKRS", + "name": "NOKRS11" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA24", + "port": { + "_reference": "DEFRA", + "name": "DEFRA25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51520", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS12", + "port": { + "_reference": "NOKRS", + "name": "NOKRS13" + } + }, + { + "date": "2010-12-08", + "name": "DESTR32", + "port": { + "_reference": "DESTR", + "name": "DESTR33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51522", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS14", + "port": { + "_reference": "NOKRS", + "name": "NOKRS15" + } + }, + { + "date": "2010-12-08", + "name": "DKCPH14", + "port": { + "_reference": "DKCPH", + "name": "DKCPH15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51535", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS16", + "port": { + "_reference": "NOKRS", + "name": "NOKRS17" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD26", + "port": { + "_reference": "FRBOD", + "name": "FRBOD27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51545", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS18", + "port": { + "_reference": "NOKRS", + "name": "NOKRS19" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA16", + "port": { + "_reference": "GBLBA", + "name": "GBLBA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51546", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS20", + "port": { + "_reference": "NOKRS", + "name": "NOKRS21" + } + }, + { + "date": "2010-12-08", + "name": "GBLIV16", + "port": { + "_reference": "GBLIV", + "name": "GBLIV17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51560", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS22", + "port": { + "_reference": "NOKRS", + "name": "NOKRS23" + } + }, + { + "date": "2010-12-08", + "name": "ITMOD10", + "port": { + "_reference": "ITMOD", + "name": "ITMOD11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51561", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS24", + "port": { + "_reference": "NOKRS", + "name": "NOKRS25" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP26", + "port": { + "_reference": "ITNAP", + "name": "ITNAP27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51579", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS26", + "port": { + "_reference": "NOKRS", + "name": "NOKRS27" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS20", + "port": { + "_reference": "PTLIS", + "name": "PTLIS21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51594", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL4", + "port": { + "_reference": "NOOSL", + "name": "NOOSL5" + } + }, + { + "date": "2010-12-08", + "name": "BEANR34", + "port": { + "_reference": "BEANR", + "name": "BEANR35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51602", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL6", + "port": { + "_reference": "NOOSL", + "name": "NOOSL7" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE18", + "port": { + "_reference": "DEBFE", + "name": "DEBFE19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51604", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL8", + "port": { + "_reference": "NOOSL", + "name": "NOOSL9" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV54", + "port": { + "_reference": "DEBRV", + "name": "DEBRV55" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51605", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL10", + "port": { + "_reference": "NOOSL", + "name": "NOOSL11" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS24", + "port": { + "_reference": "DEDUS", + "name": "DEDUS25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51606", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL12", + "port": { + "_reference": "NOOSL", + "name": "NOOSL13" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA26", + "port": { + "_reference": "DEFRA", + "name": "DEFRA27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51607", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL14", + "port": { + "_reference": "NOOSL", + "name": "NOOSL15" + } + }, + { + "date": "2010-12-08", + "name": "DEGER24", + "port": { + "_reference": "DEGER", + "name": "DEGER25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51611", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL16", + "port": { + "_reference": "NOOSL", + "name": "NOOSL17" + } + }, + { + "date": "2010-12-08", + "name": "DESTR34", + "port": { + "_reference": "DESTR", + "name": "DESTR35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51612", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL18", + "port": { + "_reference": "NOOSL", + "name": "NOOSL19" + } + }, + { + "date": "2010-12-08", + "name": "DKAAR56", + "port": { + "_reference": "DKAAR", + "name": "DKAAR57" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51613", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL20", + "port": { + "_reference": "NOOSL", + "name": "NOOSL21" + } + }, + { + "date": "2010-12-08", + "name": "DKCPH16", + "port": { + "_reference": "DKCPH", + "name": "DKCPH17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51622", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL22", + "port": { + "_reference": "NOOSL", + "name": "NOOSL23" + } + }, + { + "date": "2010-12-08", + "name": "ESMAD16", + "port": { + "_reference": "ESMAD", + "name": "ESMAD17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51623", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL24", + "port": { + "_reference": "NOOSL", + "name": "NOOSL25" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC20", + "port": { + "_reference": "ESVLC", + "name": "ESVLC21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51626", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL26", + "port": { + "_reference": "NOOSL", + "name": "NOOSL27" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD28", + "port": { + "_reference": "FRBOD", + "name": "FRBOD29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51629", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL28", + "port": { + "_reference": "NOOSL", + "name": "NOOSL29" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR26", + "port": { + "_reference": "FRPAR", + "name": "FRPAR27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51630", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL30", + "port": { + "_reference": "NOOSL", + "name": "NOOSL31" + } + }, + { + "date": "2010-12-08", + "name": "FRRNS18", + "port": { + "_reference": "FRRNS", + "name": "FRRNS19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51631", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL32", + "port": { + "_reference": "NOOSL", + "name": "NOOSL33" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB21", + "port": { + "_reference": "FRSXB", + "name": "FRSXB22" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51633", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL34", + "port": { + "_reference": "NOOSL", + "name": "NOOSL35" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM16", + "port": { + "_reference": "GBBHM", + "name": "GBBHM17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51635", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL36", + "port": { + "_reference": "NOOSL", + "name": "NOOSL37" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW18", + "port": { + "_reference": "GBGLW", + "name": "GBGLW19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51636", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL38", + "port": { + "_reference": "NOOSL", + "name": "NOOSL39" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA18", + "port": { + "_reference": "GBLBA", + "name": "GBLBA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51637", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL40", + "port": { + "_reference": "NOOSL", + "name": "NOOSL41" + } + }, + { + "date": "2010-12-08", + "name": "GBLIV18", + "port": { + "_reference": "GBLIV", + "name": "GBLIV19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51638", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL42", + "port": { + "_reference": "NOOSL", + "name": "NOOSL43" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN18", + "port": { + "_reference": "GBMAN", + "name": "GBMAN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51640", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL44", + "port": { + "_reference": "NOOSL", + "name": "NOOSL45" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL24", + "port": { + "_reference": "GBTIL", + "name": "GBTIL25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51643", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL46", + "port": { + "_reference": "NOOSL", + "name": "NOOSL47" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD20", + "port": { + "_reference": "HUBUD", + "name": "HUBUD21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51648", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL48", + "port": { + "_reference": "NOOSL", + "name": "NOOSL49" + } + }, + { + "date": "2010-12-08", + "name": "ITGOA16", + "port": { + "_reference": "ITGOA", + "name": "ITGOA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51650", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL50", + "port": { + "_reference": "NOOSL", + "name": "NOOSL51" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL20", + "port": { + "_reference": "ITMIL", + "name": "ITMIL21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51652", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL52", + "port": { + "_reference": "NOOSL", + "name": "NOOSL53" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP28", + "port": { + "_reference": "ITNAP", + "name": "ITNAP29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51653", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL54", + "port": { + "_reference": "NOOSL", + "name": "NOOSL55" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA22", + "port": { + "_reference": "ITPDA", + "name": "ITPDA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51668", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL56", + "port": { + "_reference": "NOOSL", + "name": "NOOSL57" + } + }, + { + "date": "2010-12-08", + "name": "PLSZZ2", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51670", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL58", + "port": { + "_reference": "NOOSL", + "name": "NOOSL59" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS22", + "port": { + "_reference": "PTLIS", + "name": "PTLIS23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51674", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL60", + "port": { + "_reference": "NOOSL", + "name": "NOOSL61" + } + }, + { + "date": "2010-12-08", + "name": "SEHEL8", + "port": { + "_reference": "SEHEL", + "name": "SEHEL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51676", + "stops": [ + { + "date": "2010-12-02", + "name": "NOOSL62", + "port": { + "_reference": "NOOSL", + "name": "NOOSL63" + } + }, + { + "date": "2010-12-08", + "name": "SIKOP8", + "port": { + "_reference": "SIKOP", + "name": "SIKOP9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51686", + "stops": [ + { + "date": "2010-12-02", + "name": "OMMCT4", + "port": { + "_reference": "OMMCT", + "name": "OMMCT5" + } + }, + { + "date": "2010-12-08", + "name": "AEJEA12", + "port": { + "_reference": "AEJEA", + "name": "AEJEA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51689", + "stops": [ + { + "date": "2010-12-02", + "name": "OMMCT6", + "port": { + "_reference": "OMMCT", + "name": "OMMCT7" + } + }, + { + "date": "2010-12-08", + "name": "IRBND18", + "port": { + "_reference": "IRBND", + "name": "IRBND19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51694", + "stops": [ + { + "date": "2010-12-02", + "name": "OMMCT8", + "port": { + "_reference": "OMMCT", + "name": "OMMCT9" + } + }, + { + "date": "2010-12-08", + "name": "SAJED4", + "port": { + "_reference": "SAJED", + "name": "SAJED5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51702", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB0", + "port": { + "_reference": "PHCEB", + "name": "PHCEB1" + } + }, + { + "date": "2010-12-08", + "name": "INDEL22", + "port": { + "_reference": "INDEL", + "name": "INDEL23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51705", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB2", + "port": { + "_reference": "PHCEB", + "name": "PHCEB3" + } + }, + { + "date": "2010-12-08", + "name": "INMUN10", + "port": { + "_reference": "INMUN", + "name": "INMUN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51706", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB4", + "port": { + "_reference": "PHCEB", + "name": "PHCEB5" + } + }, + { + "date": "2010-12-08", + "name": "INNAH10", + "port": { + "_reference": "INNAH", + "name": "INNAH11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51707", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB6", + "port": { + "_reference": "PHCEB", + "name": "PHCEB7" + } + }, + { + "date": "2010-12-08", + "name": "INTUT12", + "port": { + "_reference": "INTUT", + "name": "INTUT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51709", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB8", + "port": { + "_reference": "PHCEB", + "name": "PHCEB9" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH16", + "port": { + "_reference": "KHPNH", + "name": "KHPNH17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51710", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB10", + "port": { + "_reference": "PHCEB", + "name": "PHCEB11" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB6", + "port": { + "_reference": "LKCMB", + "name": "LKCMB7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51712", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB12", + "port": { + "_reference": "PHCEB", + "name": "PHCEB13" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN10", + "port": { + "_reference": "MYPEN", + "name": "MYPEN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51713", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB14", + "port": { + "_reference": "PHCEB", + "name": "PHCEB15" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU22", + "port": { + "_reference": "MYPGU", + "name": "MYPGU23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51714", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB16", + "port": { + "_reference": "PHCEB", + "name": "PHCEB17" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG18", + "port": { + "_reference": "MYPKG", + "name": "MYPKG19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51718", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB18", + "port": { + "_reference": "PHCEB", + "name": "PHCEB19" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN12", + "port": { + "_reference": "SGSIN", + "name": "SGSIN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51731", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL0", + "port": { + "_reference": "PHMNL", + "name": "PHMNL1" + } + }, + { + "date": "2010-12-08", + "name": "INCOK12", + "port": { + "_reference": "INCOK", + "name": "INCOK13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51732", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL2", + "port": { + "_reference": "PHMNL", + "name": "PHMNL3" + } + }, + { + "date": "2010-12-08", + "name": "INDEL24", + "port": { + "_reference": "INDEL", + "name": "INDEL25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51734", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL4", + "port": { + "_reference": "PHMNL", + "name": "PHMNL5" + } + }, + { + "date": "2010-12-08", + "name": "INMAA20", + "port": { + "_reference": "INMAA", + "name": "INMAA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51735", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL6", + "port": { + "_reference": "PHMNL", + "name": "PHMNL7" + } + }, + { + "date": "2010-12-08", + "name": "INMUN12", + "port": { + "_reference": "INMUN", + "name": "INMUN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51737", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL8", + "port": { + "_reference": "PHMNL", + "name": "PHMNL9" + } + }, + { + "date": "2010-12-08", + "name": "INTUT14", + "port": { + "_reference": "INTUT", + "name": "INTUT15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51739", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL10", + "port": { + "_reference": "PHMNL", + "name": "PHMNL11" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH18", + "port": { + "_reference": "KHPNH", + "name": "KHPNH19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51740", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL12", + "port": { + "_reference": "PHMNL", + "name": "PHMNL13" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB8", + "port": { + "_reference": "LKCMB", + "name": "LKCMB9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51741", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL14", + "port": { + "_reference": "PHMNL", + "name": "PHMNL15" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN26", + "port": { + "_reference": "MMRGN", + "name": "MMRGN27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51742", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL16", + "port": { + "_reference": "PHMNL", + "name": "PHMNL17" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN12", + "port": { + "_reference": "MYPEN", + "name": "MYPEN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51743", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL18", + "port": { + "_reference": "PHMNL", + "name": "PHMNL19" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU24", + "port": { + "_reference": "MYPGU", + "name": "MYPGU25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51744", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL20", + "port": { + "_reference": "PHMNL", + "name": "PHMNL21" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG20", + "port": { + "_reference": "MYPKG", + "name": "MYPKG21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51747", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL22", + "port": { + "_reference": "PHMNL", + "name": "PHMNL23" + } + }, + { + "date": "2010-12-08", + "name": "PKKHI8", + "port": { + "_reference": "PKKHI", + "name": "PKKHI9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51748", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL24", + "port": { + "_reference": "PHMNL", + "name": "PHMNL25" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN14", + "port": { + "_reference": "SGSIN", + "name": "SGSIN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51753", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL26", + "port": { + "_reference": "PHMNL", + "name": "PHMNL27" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH12", + "port": { + "_reference": "VNHPH", + "name": "VNHPH13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51754", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL28", + "port": { + "_reference": "PHMNL", + "name": "PHMNL29" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN14", + "port": { + "_reference": "VNSGN", + "name": "VNSGN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51773", + "stops": [ + { + "date": "2010-12-02", + "name": "PKBQM4", + "port": { + "_reference": "PKBQM", + "name": "PKBQM5" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU26", + "port": { + "_reference": "MYPGU", + "name": "MYPGU27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51778", + "stops": [ + { + "date": "2010-12-02", + "name": "PKBQM6", + "port": { + "_reference": "PKBQM", + "name": "PKBQM7" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN16", + "port": { + "_reference": "SGSIN", + "name": "SGSIN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51784", + "stops": [ + { + "date": "2010-12-02", + "name": "PKBQM8", + "port": { + "_reference": "PKBQM", + "name": "PKBQM9" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN16", + "port": { + "_reference": "VNSGN", + "name": "VNSGN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51792", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI10", + "port": { + "_reference": "PKKHI", + "name": "PKKHI11" + } + }, + { + "date": "2010-12-08", + "name": "INDEL26", + "port": { + "_reference": "INDEL", + "name": "INDEL27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51799", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI12", + "port": { + "_reference": "PKKHI", + "name": "PKKHI13" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH20", + "port": { + "_reference": "KHPNH", + "name": "KHPNH21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51800", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI14", + "port": { + "_reference": "PKKHI", + "name": "PKKHI15" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB10", + "port": { + "_reference": "LKCMB", + "name": "LKCMB11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51801", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI16", + "port": { + "_reference": "PKKHI", + "name": "PKKHI17" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN28", + "port": { + "_reference": "MMRGN", + "name": "MMRGN29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51802", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI18", + "port": { + "_reference": "PKKHI", + "name": "PKKHI19" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN14", + "port": { + "_reference": "MYPEN", + "name": "MYPEN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51804", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI20", + "port": { + "_reference": "PKKHI", + "name": "PKKHI21" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG22", + "port": { + "_reference": "MYPKG", + "name": "MYPKG23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51807", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI22", + "port": { + "_reference": "PKKHI", + "name": "PKKHI23" + } + }, + { + "date": "2010-12-06", + "name": "PKBQM10", + "port": { + "_reference": "PKBQM", + "name": "PKBQM11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51808", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI24", + "port": { + "_reference": "PKKHI", + "name": "PKKHI25" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN18", + "port": { + "_reference": "SGSIN", + "name": "SGSIN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51813", + "stops": [ + { + "date": "2010-12-02", + "name": "PKKHI26", + "port": { + "_reference": "PKKHI", + "name": "PKKHI27" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH14", + "port": { + "_reference": "VNHPH", + "name": "VNHPH15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51822", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDN2", + "port": { + "_reference": "PLGDN", + "name": "PLGDN3" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN30", + "port": { + "_reference": "CZZLN", + "name": "CZZLN31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51884", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDN4", + "port": { + "_reference": "PLGDN", + "name": "PLGDN5" + } + }, + { + "date": "2010-12-08", + "name": "NLTLB26", + "port": { + "_reference": "NLTLB", + "name": "NLTLB27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51891", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDN6", + "port": { + "_reference": "PLGDN", + "name": "PLGDN7" + } + }, + { + "date": "2010-12-06", + "name": "PLWRP4", + "port": { + "_reference": "PLWRP", + "name": "PLWRP5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51907", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY2", + "port": { + "_reference": "PLGDY", + "name": "PLGDY3" + } + }, + { + "date": "2010-12-08", + "name": "BEANR36", + "port": { + "_reference": "BEANR", + "name": "BEANR37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51908", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY4", + "port": { + "_reference": "PLGDY", + "name": "PLGDY5" + } + }, + { + "date": "2010-12-08", + "name": "BEAVL12", + "port": { + "_reference": "BEAVL", + "name": "BEAVL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51912", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY6", + "port": { + "_reference": "PLGDY", + "name": "PLGDY7" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG22", + "port": { + "_reference": "CZPRG", + "name": "CZPRG23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51913", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY8", + "port": { + "_reference": "PLGDY", + "name": "PLGDY9" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN32", + "port": { + "_reference": "CZZLN", + "name": "CZZLN33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51914", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY10", + "port": { + "_reference": "PLGDY", + "name": "PLGDY11" + } + }, + { + "date": "2010-12-08", + "name": "DEBER18", + "port": { + "_reference": "DEBER", + "name": "DEBER19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51915", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY12", + "port": { + "_reference": "PLGDY", + "name": "PLGDY13" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE20", + "port": { + "_reference": "DEBFE", + "name": "DEBFE21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51917", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY14", + "port": { + "_reference": "PLGDY", + "name": "PLGDY15" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV56", + "port": { + "_reference": "DEBRV", + "name": "DEBRV57" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51918", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY16", + "port": { + "_reference": "PLGDY", + "name": "PLGDY17" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS26", + "port": { + "_reference": "DEDUS", + "name": "DEDUS27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51929", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY18", + "port": { + "_reference": "PLGDY", + "name": "PLGDY19" + } + }, + { + "date": "2010-12-08", + "name": "EGALY10", + "port": { + "_reference": "EGALY", + "name": "EGALY11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51936", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY20", + "port": { + "_reference": "PLGDY", + "name": "PLGDY21" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC22", + "port": { + "_reference": "ESVLC", + "name": "ESVLC23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51942", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY22", + "port": { + "_reference": "PLGDY", + "name": "PLGDY23" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR28", + "port": { + "_reference": "FRPAR", + "name": "FRPAR29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51944", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY24", + "port": { + "_reference": "PLGDY", + "name": "PLGDY25" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB23", + "port": { + "_reference": "FRSXB", + "name": "FRSXB24" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51945", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY26", + "port": { + "_reference": "PLGDY", + "name": "PLGDY27" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL20", + "port": { + "_reference": "GBBEL", + "name": "GBBEL21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51946", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY28", + "port": { + "_reference": "PLGDY", + "name": "PLGDY29" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM18", + "port": { + "_reference": "GBBHM", + "name": "GBBHM19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51948", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY30", + "port": { + "_reference": "PLGDY", + "name": "PLGDY31" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW20", + "port": { + "_reference": "GBGLW", + "name": "GBGLW21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51949", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY32", + "port": { + "_reference": "PLGDY", + "name": "PLGDY33" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA20", + "port": { + "_reference": "GBLBA", + "name": "GBLBA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51950", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY34", + "port": { + "_reference": "PLGDY", + "name": "PLGDY35" + } + }, + { + "date": "2010-12-08", + "name": "GBLIV20", + "port": { + "_reference": "GBLIV", + "name": "GBLIV21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51963", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY36", + "port": { + "_reference": "PLGDY", + "name": "PLGDY37" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL22", + "port": { + "_reference": "ITMIL", + "name": "ITMIL23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51965", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY38", + "port": { + "_reference": "PLGDY", + "name": "PLGDY39" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP30", + "port": { + "_reference": "ITNAP", + "name": "ITNAP31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51966", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY40", + "port": { + "_reference": "PLGDY", + "name": "PLGDY41" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA24", + "port": { + "_reference": "ITPDA", + "name": "ITPDA25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51979", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY42", + "port": { + "_reference": "PLGDY", + "name": "PLGDY43" + } + }, + { + "date": "2010-12-08", + "name": "NOOSL64", + "port": { + "_reference": "NOOSL", + "name": "NOOSL65" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51981", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY44", + "port": { + "_reference": "PLGDY", + "name": "PLGDY45" + } + }, + { + "date": "2010-12-06", + "name": "PLSZZ4", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51982", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY46", + "port": { + "_reference": "PLGDY", + "name": "PLGDY47" + } + }, + { + "date": "2010-12-06", + "name": "PLWRP6", + "port": { + "_reference": "PLWRP", + "name": "PLWRP7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "51983", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY48", + "port": { + "_reference": "PLGDY", + "name": "PLGDY49" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS24", + "port": { + "_reference": "PTLIS", + "name": "PTLIS25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52003", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ6", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ7" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG24", + "port": { + "_reference": "CZPRG", + "name": "CZPRG25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52009", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ8", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ9" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS28", + "port": { + "_reference": "DEDUS", + "name": "DEDUS29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52010", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ10", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ11" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA28", + "port": { + "_reference": "DEFRA", + "name": "DEFRA29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52014", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ12", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ13" + } + }, + { + "date": "2010-12-08", + "name": "DENUE24", + "port": { + "_reference": "DENUE", + "name": "DENUE25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52015", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ14", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ15" + } + }, + { + "date": "2010-12-08", + "name": "DESTR36", + "port": { + "_reference": "DESTR", + "name": "DESTR37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52027", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ16", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ17" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC24", + "port": { + "_reference": "ESVLC", + "name": "ESVLC25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52033", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ18", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ19" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR30", + "port": { + "_reference": "FRPAR", + "name": "FRPAR31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52038", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ20", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ21" + } + }, + { + "date": "2010-12-08", + "name": "GBFXT10", + "port": { + "_reference": "GBFXT", + "name": "GBFXT11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52051", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ22", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ23" + } + }, + { + "date": "2010-12-08", + "name": "ITGIT14", + "port": { + "_reference": "ITGIT", + "name": "ITGIT15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52055", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ24", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ25" + } + }, + { + "date": "2010-12-08", + "name": "ITMOD12", + "port": { + "_reference": "ITMOD", + "name": "ITMOD13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52057", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ26", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ27" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA26", + "port": { + "_reference": "ITPDA", + "name": "ITPDA27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52089", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP8", + "port": { + "_reference": "PLWRP", + "name": "PLWRP9" + } + }, + { + "date": "2010-12-08", + "name": "BEANR38", + "port": { + "_reference": "BEANR", + "name": "BEANR39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52095", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP10", + "port": { + "_reference": "PLWRP", + "name": "PLWRP11" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN34", + "port": { + "_reference": "CZZLN", + "name": "CZZLN35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52099", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP12", + "port": { + "_reference": "PLWRP", + "name": "PLWRP13" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV58", + "port": { + "_reference": "DEBRV", + "name": "DEBRV59" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52101", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP14", + "port": { + "_reference": "PLWRP", + "name": "PLWRP15" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA30", + "port": { + "_reference": "DEFRA", + "name": "DEFRA31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52104", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP16", + "port": { + "_reference": "PLWRP", + "name": "PLWRP17" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC36", + "port": { + "_reference": "DEMUC", + "name": "DEMUC37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52121", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP18", + "port": { + "_reference": "PLWRP", + "name": "PLWRP19" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD30", + "port": { + "_reference": "FRBOD", + "name": "FRBOD31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52145", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP20", + "port": { + "_reference": "PLWRP", + "name": "PLWRP21" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL24", + "port": { + "_reference": "ITMIL", + "name": "ITMIL25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52147", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP22", + "port": { + "_reference": "PLWRP", + "name": "PLWRP23" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP32", + "port": { + "_reference": "ITNAP", + "name": "ITNAP33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52164", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP24", + "port": { + "_reference": "PLWRP", + "name": "PLWRP25" + } + }, + { + "date": "2010-12-06", + "name": "PLSZZ28", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52167", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP26", + "port": { + "_reference": "PLWRP", + "name": "PLWRP27" + } + }, + { + "date": "2010-12-08", + "name": "RULED0", + "port": { + "_reference": "RULED", + "name": "RULED1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52180", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS26", + "port": { + "_reference": "PTLIS", + "name": "PTLIS27" + } + }, + { + "date": "2010-12-08", + "name": "BEANR40", + "port": { + "_reference": "BEANR", + "name": "BEANR41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52187", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS28", + "port": { + "_reference": "PTLIS", + "name": "PTLIS29" + } + }, + { + "date": "2010-12-08", + "name": "DEBER20", + "port": { + "_reference": "DEBER", + "name": "DEBER21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52188", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS30", + "port": { + "_reference": "PTLIS", + "name": "PTLIS31" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE22", + "port": { + "_reference": "DEBFE", + "name": "DEBFE23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52193", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS32", + "port": { + "_reference": "PTLIS", + "name": "PTLIS33" + } + }, + { + "date": "2010-12-08", + "name": "DEGER26", + "port": { + "_reference": "DEGER", + "name": "DEGER27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52196", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS34", + "port": { + "_reference": "PTLIS", + "name": "PTLIS35" + } + }, + { + "date": "2010-12-08", + "name": "DENUE26", + "port": { + "_reference": "DENUE", + "name": "DENUE27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52197", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS36", + "port": { + "_reference": "PTLIS", + "name": "PTLIS37" + } + }, + { + "date": "2010-12-08", + "name": "DESTR38", + "port": { + "_reference": "DESTR", + "name": "DESTR39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52229", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS38", + "port": { + "_reference": "PTLIS", + "name": "PTLIS39" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD22", + "port": { + "_reference": "HUBUD", + "name": "HUBUD23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52230", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS40", + "port": { + "_reference": "PTLIS", + "name": "PTLIS41" + } + }, + { + "date": "2010-12-08", + "name": "IEDUB36", + "port": { + "_reference": "IEDUB", + "name": "IEDUB37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52261", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS42", + "port": { + "_reference": "PTLIS", + "name": "PTLIS43" + } + }, + { + "date": "2010-12-08", + "name": "SESTO2", + "port": { + "_reference": "SESTO", + "name": "SESTO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52270", + "stops": [ + { + "date": "2010-12-02", + "name": "QADOH0", + "port": { + "_reference": "QADOH", + "name": "QADOH1" + } + }, + { + "date": "2010-12-08", + "name": "AEAUH10", + "port": { + "_reference": "AEAUH", + "name": "AEAUH11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52275", + "stops": [ + { + "date": "2010-12-02", + "name": "QADOH2", + "port": { + "_reference": "QADOH", + "name": "QADOH3" + } + }, + { + "date": "2010-12-08", + "name": "IRBND20", + "port": { + "_reference": "IRBND", + "name": "IRBND21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52277", + "stops": [ + { + "date": "2010-12-02", + "name": "QADOH4", + "port": { + "_reference": "QADOH", + "name": "QADOH5" + } + }, + { + "date": "2010-12-08", + "name": "OMMCT10", + "port": { + "_reference": "OMMCT", + "name": "OMMCT11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52283", + "stops": [ + { + "date": "2010-12-02", + "name": "QAMES0", + "port": { + "_reference": "QAMES", + "name": "QAMES1" + } + }, + { + "date": "2010-12-08", + "name": "AEJEA14", + "port": { + "_reference": "AEJEA", + "name": "AEJEA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52286", + "stops": [ + { + "date": "2010-12-02", + "name": "QAMES2", + "port": { + "_reference": "QAMES", + "name": "QAMES3" + } + }, + { + "date": "2010-12-08", + "name": "IRBND22", + "port": { + "_reference": "IRBND", + "name": "IRBND23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52288", + "stops": [ + { + "date": "2010-12-02", + "name": "QAMES4", + "port": { + "_reference": "QAMES", + "name": "QAMES5" + } + }, + { + "date": "2010-12-08", + "name": "OMMCT12", + "port": { + "_reference": "OMMCT", + "name": "OMMCT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52291", + "stops": [ + { + "date": "2010-12-02", + "name": "QAMES6", + "port": { + "_reference": "QAMES", + "name": "QAMES7" + } + }, + { + "date": "2010-12-08", + "name": "SAJED6", + "port": { + "_reference": "SAJED", + "name": "SAJED7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52324", + "stops": [ + { + "date": "2010-12-02", + "name": "ROCND6", + "port": { + "_reference": "ROCND", + "name": "ROCND7" + } + }, + { + "date": "2010-12-08", + "name": "FIKTK62", + "port": { + "_reference": "FIKTK", + "name": "FIKTK63" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52365", + "stops": [ + { + "date": "2010-12-02", + "name": "ROCND8", + "port": { + "_reference": "ROCND", + "name": "ROCND9" + } + }, + { + "date": "2010-12-08", + "name": "NOOSL66", + "port": { + "_reference": "NOOSL", + "name": "NOOSL67" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52383", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED2", + "port": { + "_reference": "RULED", + "name": "RULED3" + } + }, + { + "date": "2010-12-08", + "name": "ATVIE32", + "port": { + "_reference": "ATVIE", + "name": "ATVIE33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52384", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED4", + "port": { + "_reference": "RULED", + "name": "RULED5" + } + }, + { + "date": "2010-12-08", + "name": "BEANR42", + "port": { + "_reference": "BEANR", + "name": "BEANR43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52389", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED6", + "port": { + "_reference": "RULED", + "name": "RULED7" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG26", + "port": { + "_reference": "CZPRG", + "name": "CZPRG27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52390", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED8", + "port": { + "_reference": "RULED", + "name": "RULED9" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN36", + "port": { + "_reference": "CZZLN", + "name": "CZZLN37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52391", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED10", + "port": { + "_reference": "RULED", + "name": "RULED11" + } + }, + { + "date": "2010-12-08", + "name": "DEBER22", + "port": { + "_reference": "DEBER", + "name": "DEBER23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52392", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED12", + "port": { + "_reference": "RULED", + "name": "RULED13" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE24", + "port": { + "_reference": "DEBFE", + "name": "DEBFE25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52394", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED14", + "port": { + "_reference": "RULED", + "name": "RULED15" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV60", + "port": { + "_reference": "DEBRV", + "name": "DEBRV61" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52395", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED16", + "port": { + "_reference": "RULED", + "name": "RULED17" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS30", + "port": { + "_reference": "DEDUS", + "name": "DEDUS31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52396", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED18", + "port": { + "_reference": "RULED", + "name": "RULED19" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA32", + "port": { + "_reference": "DEFRA", + "name": "DEFRA33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52397", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED20", + "port": { + "_reference": "RULED", + "name": "RULED21" + } + }, + { + "date": "2010-12-08", + "name": "DEGER28", + "port": { + "_reference": "DEGER", + "name": "DEGER29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52398", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED22", + "port": { + "_reference": "RULED", + "name": "RULED23" + } + }, + { + "date": "2010-12-08", + "name": "DEHAM2", + "port": { + "_reference": "DEHAM", + "name": "DEHAM3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52399", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED24", + "port": { + "_reference": "RULED", + "name": "RULED25" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC38", + "port": { + "_reference": "DEMUC", + "name": "DEMUC39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52400", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED26", + "port": { + "_reference": "RULED", + "name": "RULED27" + } + }, + { + "date": "2010-12-08", + "name": "DENUE28", + "port": { + "_reference": "DENUE", + "name": "DENUE29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52401", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED28", + "port": { + "_reference": "RULED", + "name": "RULED29" + } + }, + { + "date": "2010-12-08", + "name": "DESTR40", + "port": { + "_reference": "DESTR", + "name": "DESTR41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52402", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED30", + "port": { + "_reference": "RULED", + "name": "RULED31" + } + }, + { + "date": "2010-12-08", + "name": "DKAAR58", + "port": { + "_reference": "DKAAR", + "name": "DKAAR59" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52403", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED32", + "port": { + "_reference": "RULED", + "name": "RULED33" + } + }, + { + "date": "2010-12-08", + "name": "DKCPH18", + "port": { + "_reference": "DKCPH", + "name": "DKCPH19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52409", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED34", + "port": { + "_reference": "RULED", + "name": "RULED35" + } + }, + { + "date": "2010-12-08", + "name": "ESBCN20", + "port": { + "_reference": "ESBCN", + "name": "ESBCN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52412", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED36", + "port": { + "_reference": "RULED", + "name": "RULED37" + } + }, + { + "date": "2010-12-08", + "name": "ESMAD18", + "port": { + "_reference": "ESMAD", + "name": "ESMAD19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52413", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED38", + "port": { + "_reference": "RULED", + "name": "RULED39" + } + }, + { + "date": "2010-12-08", + "name": "ESVLC26", + "port": { + "_reference": "ESVLC", + "name": "ESVLC27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52416", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED40", + "port": { + "_reference": "RULED", + "name": "RULED41" + } + }, + { + "date": "2010-12-08", + "name": "FRBOD32", + "port": { + "_reference": "FRBOD", + "name": "FRBOD33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52417", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED42", + "port": { + "_reference": "RULED", + "name": "RULED43" + } + }, + { + "date": "2010-12-08", + "name": "FRFOS22", + "port": { + "_reference": "FRFOS", + "name": "FRFOS23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52419", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED44", + "port": { + "_reference": "RULED", + "name": "RULED45" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR32", + "port": { + "_reference": "FRPAR", + "name": "FRPAR33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52421", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED46", + "port": { + "_reference": "RULED", + "name": "RULED47" + } + }, + { + "date": "2010-12-08", + "name": "FRSXB25", + "port": { + "_reference": "FRSXB", + "name": "FRSXB26" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52422", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED48", + "port": { + "_reference": "RULED", + "name": "RULED49" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL22", + "port": { + "_reference": "GBBEL", + "name": "GBBEL23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52425", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED50", + "port": { + "_reference": "RULED", + "name": "RULED51" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW22", + "port": { + "_reference": "GBGLW", + "name": "GBGLW23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52427", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED52", + "port": { + "_reference": "RULED", + "name": "RULED53" + } + }, + { + "date": "2010-12-08", + "name": "GBLIV22", + "port": { + "_reference": "GBLIV", + "name": "GBLIV23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52428", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED54", + "port": { + "_reference": "RULED", + "name": "RULED55" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN20", + "port": { + "_reference": "GBMAN", + "name": "GBMAN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52430", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED56", + "port": { + "_reference": "RULED", + "name": "RULED57" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL26", + "port": { + "_reference": "GBTIL", + "name": "GBTIL27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52433", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED58", + "port": { + "_reference": "RULED", + "name": "RULED59" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD24", + "port": { + "_reference": "HUBUD", + "name": "HUBUD25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52434", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED60", + "port": { + "_reference": "RULED", + "name": "RULED61" + } + }, + { + "date": "2010-12-08", + "name": "IEDUB38", + "port": { + "_reference": "IEDUB", + "name": "IEDUB39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52441", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED62", + "port": { + "_reference": "RULED", + "name": "RULED63" + } + }, + { + "date": "2010-12-08", + "name": "ITMOD14", + "port": { + "_reference": "ITMOD", + "name": "ITMOD15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52442", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED64", + "port": { + "_reference": "RULED", + "name": "RULED65" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP34", + "port": { + "_reference": "ITNAP", + "name": "ITNAP35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52443", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED66", + "port": { + "_reference": "RULED", + "name": "RULED67" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA28", + "port": { + "_reference": "ITPDA", + "name": "ITPDA29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52459", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED68", + "port": { + "_reference": "RULED", + "name": "RULED69" + } + }, + { + "date": "2010-12-08", + "name": "PLSZZ30", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52461", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED70", + "port": { + "_reference": "RULED", + "name": "RULED71" + } + }, + { + "date": "2010-12-08", + "name": "PTLIS44", + "port": { + "_reference": "PTLIS", + "name": "PTLIS45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52464", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED72", + "port": { + "_reference": "RULED", + "name": "RULED73" + } + }, + { + "date": "2010-12-08", + "name": "SEHEL10", + "port": { + "_reference": "SEHEL", + "name": "SEHEL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52479", + "stops": [ + { + "date": "2010-12-02", + "name": "SADMN0", + "port": { + "_reference": "SADMN", + "name": "SADMN1" + } + }, + { + "date": "2010-12-08", + "name": "IRBND24", + "port": { + "_reference": "IRBND", + "name": "IRBND25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52484", + "stops": [ + { + "date": "2010-12-02", + "name": "SADMN2", + "port": { + "_reference": "SADMN", + "name": "SADMN3" + } + }, + { + "date": "2010-12-06", + "name": "SAJED8", + "port": { + "_reference": "SAJED", + "name": "SAJED9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52490", + "stops": [ + { + "date": "2010-12-02", + "name": "SAJED10", + "port": { + "_reference": "SAJED", + "name": "SAJED11" + } + }, + { + "date": "2010-12-08", + "name": "IRBND26", + "port": { + "_reference": "IRBND", + "name": "IRBND27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52496", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT10", + "port": { + "_reference": "SEGOT", + "name": "SEGOT11" + } + }, + { + "date": "2010-12-08", + "name": "ATVIE34", + "port": { + "_reference": "ATVIE", + "name": "ATVIE35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52497", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT12", + "port": { + "_reference": "SEGOT", + "name": "SEGOT13" + } + }, + { + "date": "2010-12-08", + "name": "BEANR44", + "port": { + "_reference": "BEANR", + "name": "BEANR45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52503", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT14", + "port": { + "_reference": "SEGOT", + "name": "SEGOT15" + } + }, + { + "date": "2010-12-08", + "name": "CZZLN38", + "port": { + "_reference": "CZZLN", + "name": "CZZLN39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52504", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT16", + "port": { + "_reference": "SEGOT", + "name": "SEGOT17" + } + }, + { + "date": "2010-12-08", + "name": "DEBER24", + "port": { + "_reference": "DEBER", + "name": "DEBER25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52505", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT18", + "port": { + "_reference": "SEGOT", + "name": "SEGOT19" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE26", + "port": { + "_reference": "DEBFE", + "name": "DEBFE27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52507", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT20", + "port": { + "_reference": "SEGOT", + "name": "SEGOT21" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV62", + "port": { + "_reference": "DEBRV", + "name": "DEBRV63" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52508", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT22", + "port": { + "_reference": "SEGOT", + "name": "SEGOT23" + } + }, + { + "date": "2010-12-08", + "name": "DEDUS32", + "port": { + "_reference": "DEDUS", + "name": "DEDUS33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52509", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT24", + "port": { + "_reference": "SEGOT", + "name": "SEGOT25" + } + }, + { + "date": "2010-12-08", + "name": "DEFRA34", + "port": { + "_reference": "DEFRA", + "name": "DEFRA35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52510", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT26", + "port": { + "_reference": "SEGOT", + "name": "SEGOT27" + } + }, + { + "date": "2010-12-08", + "name": "DEGER30", + "port": { + "_reference": "DEGER", + "name": "DEGER31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52512", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT28", + "port": { + "_reference": "SEGOT", + "name": "SEGOT29" + } + }, + { + "date": "2010-12-08", + "name": "DEMUC40", + "port": { + "_reference": "DEMUC", + "name": "DEMUC41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52514", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT30", + "port": { + "_reference": "SEGOT", + "name": "SEGOT31" + } + }, + { + "date": "2010-12-08", + "name": "DESTR42", + "port": { + "_reference": "DESTR", + "name": "DESTR43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52532", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT32", + "port": { + "_reference": "SEGOT", + "name": "SEGOT33" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR34", + "port": { + "_reference": "FRPAR", + "name": "FRPAR35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52533", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT34", + "port": { + "_reference": "SEGOT", + "name": "SEGOT35" + } + }, + { + "date": "2010-12-08", + "name": "FRRNS20", + "port": { + "_reference": "FRRNS", + "name": "FRRNS21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52535", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT36", + "port": { + "_reference": "SEGOT", + "name": "SEGOT37" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL24", + "port": { + "_reference": "GBBEL", + "name": "GBBEL25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52536", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT38", + "port": { + "_reference": "SEGOT", + "name": "SEGOT39" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM20", + "port": { + "_reference": "GBBHM", + "name": "GBBHM21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52538", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT40", + "port": { + "_reference": "SEGOT", + "name": "SEGOT41" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW24", + "port": { + "_reference": "GBGLW", + "name": "GBGLW25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52539", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT42", + "port": { + "_reference": "SEGOT", + "name": "SEGOT43" + } + }, + { + "date": "2010-12-08", + "name": "GBLBA22", + "port": { + "_reference": "GBLBA", + "name": "GBLBA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52546", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT44", + "port": { + "_reference": "SEGOT", + "name": "SEGOT45" + } + }, + { + "date": "2010-12-08", + "name": "HUBUD26", + "port": { + "_reference": "HUBUD", + "name": "HUBUD27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52549", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT46", + "port": { + "_reference": "SEGOT", + "name": "SEGOT47" + } + }, + { + "date": "2010-12-08", + "name": "ITAOI10", + "port": { + "_reference": "ITAOI", + "name": "ITAOI11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52553", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT48", + "port": { + "_reference": "SEGOT", + "name": "SEGOT49" + } + }, + { + "date": "2010-12-08", + "name": "ITMIL26", + "port": { + "_reference": "ITMIL", + "name": "ITMIL27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52554", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT50", + "port": { + "_reference": "SEGOT", + "name": "SEGOT51" + } + }, + { + "date": "2010-12-08", + "name": "ITMOD16", + "port": { + "_reference": "ITMOD", + "name": "ITMOD17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52555", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT52", + "port": { + "_reference": "SEGOT", + "name": "SEGOT53" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP36", + "port": { + "_reference": "ITNAP", + "name": "ITNAP37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52556", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT54", + "port": { + "_reference": "SEGOT", + "name": "SEGOT55" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA30", + "port": { + "_reference": "ITPDA", + "name": "ITPDA31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52558", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT56", + "port": { + "_reference": "SEGOT", + "name": "SEGOT57" + } + }, + { + "date": "2010-12-08", + "name": "ITSPE10", + "port": { + "_reference": "ITSPE", + "name": "ITSPE11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52577", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT58", + "port": { + "_reference": "SEGOT", + "name": "SEGOT59" + } + }, + { + "date": "2010-12-06", + "name": "SEHEL12", + "port": { + "_reference": "SEHEL", + "name": "SEHEL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52579", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT60", + "port": { + "_reference": "SEGOT", + "name": "SEGOT61" + } + }, + { + "date": "2010-12-08", + "name": "SIKOP10", + "port": { + "_reference": "SIKOP", + "name": "SIKOP11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52588", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL14", + "port": { + "_reference": "SEHEL", + "name": "SEHEL15" + } + }, + { + "date": "2010-12-08", + "name": "BEANR46", + "port": { + "_reference": "BEANR", + "name": "BEANR47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52593", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL16", + "port": { + "_reference": "SEHEL", + "name": "SEHEL17" + } + }, + { + "date": "2010-12-08", + "name": "CZPRG28", + "port": { + "_reference": "CZPRG", + "name": "CZPRG29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52595", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL18", + "port": { + "_reference": "SEHEL", + "name": "SEHEL19" + } + }, + { + "date": "2010-12-08", + "name": "DEBER26", + "port": { + "_reference": "DEBER", + "name": "DEBER27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52598", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL20", + "port": { + "_reference": "SEHEL", + "name": "SEHEL21" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV64", + "port": { + "_reference": "DEBRV", + "name": "DEBRV65" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52616", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL22", + "port": { + "_reference": "SEHEL", + "name": "SEHEL23" + } + }, + { + "date": "2010-12-08", + "name": "ESMAD20", + "port": { + "_reference": "ESMAD", + "name": "ESMAD21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52623", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL24", + "port": { + "_reference": "SEHEL", + "name": "SEHEL25" + } + }, + { + "date": "2010-12-08", + "name": "FRPAR36", + "port": { + "_reference": "FRPAR", + "name": "FRPAR37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52628", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL26", + "port": { + "_reference": "SEHEL", + "name": "SEHEL27" + } + }, + { + "date": "2010-12-08", + "name": "GBFXT12", + "port": { + "_reference": "GBFXT", + "name": "GBFXT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52632", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL28", + "port": { + "_reference": "SEHEL", + "name": "SEHEL29" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN22", + "port": { + "_reference": "GBMAN", + "name": "GBMAN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52634", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL30", + "port": { + "_reference": "SEHEL", + "name": "SEHEL31" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL28", + "port": { + "_reference": "GBTIL", + "name": "GBTIL29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52662", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL32", + "port": { + "_reference": "SEHEL", + "name": "SEHEL33" + } + }, + { + "date": "2010-12-08", + "name": "PLGDY50", + "port": { + "_reference": "PLGDY", + "name": "PLGDY51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52675", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL34", + "port": { + "_reference": "SEHEL", + "name": "SEHEL35" + } + }, + { + "date": "2010-12-08", + "name": "TRIST8", + "port": { + "_reference": "TRIST", + "name": "TRIST9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52679", + "stops": [ + { + "date": "2010-12-02", + "name": "SESTO4", + "port": { + "_reference": "SESTO", + "name": "SESTO5" + } + }, + { + "date": "2010-12-08", + "name": "BEANR48", + "port": { + "_reference": "BEANR", + "name": "BEANR49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52681", + "stops": [ + { + "date": "2010-12-02", + "name": "SESTO6", + "port": { + "_reference": "SESTO", + "name": "SESTO7" + } + }, + { + "date": "2010-12-08", + "name": "CHBSL8", + "port": { + "_reference": "CHBSL", + "name": "CHBSL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52717", + "stops": [ + { + "date": "2010-12-02", + "name": "SESTO8", + "port": { + "_reference": "SESTO", + "name": "SESTO9" + } + }, + { + "date": "2010-12-08", + "name": "GBBEL26", + "port": { + "_reference": "GBBEL", + "name": "GBBEL27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52760", + "stops": [ + { + "date": "2010-12-02", + "name": "SESTO10", + "port": { + "_reference": "SESTO", + "name": "SESTO11" + } + }, + { + "date": "2010-12-06", + "name": "SEHEL36", + "port": { + "_reference": "SEHEL", + "name": "SEHEL37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52786", + "stops": [ + { + "date": "2010-12-02", + "name": "SGSIN20", + "port": { + "_reference": "SGSIN", + "name": "SGSIN21" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN16", + "port": { + "_reference": "MYPEN", + "name": "MYPEN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52810", + "stops": [ + { + "date": "2010-12-02", + "name": "SIKOP12", + "port": { + "_reference": "SIKOP", + "name": "SIKOP13" + } + }, + { + "date": "2010-12-08", + "name": "DEBRV66", + "port": { + "_reference": "DEBRV", + "name": "DEBRV67" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52813", + "stops": [ + { + "date": "2010-12-02", + "name": "SIKOP14", + "port": { + "_reference": "SIKOP", + "name": "SIKOP15" + } + }, + { + "date": "2010-12-08", + "name": "DEGER32", + "port": { + "_reference": "DEGER", + "name": "DEGER33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52817", + "stops": [ + { + "date": "2010-12-02", + "name": "SIKOP16", + "port": { + "_reference": "SIKOP", + "name": "SIKOP17" + } + }, + { + "date": "2010-12-08", + "name": "DESTR44", + "port": { + "_reference": "DESTR", + "name": "DESTR45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52839", + "stops": [ + { + "date": "2010-12-02", + "name": "SIKOP18", + "port": { + "_reference": "SIKOP", + "name": "SIKOP19" + } + }, + { + "date": "2010-12-08", + "name": "GBBHM22", + "port": { + "_reference": "GBBHM", + "name": "GBBHM23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52841", + "stops": [ + { + "date": "2010-12-02", + "name": "SIKOP20", + "port": { + "_reference": "SIKOP", + "name": "SIKOP21" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW26", + "port": { + "_reference": "GBGLW", + "name": "GBGLW27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52844", + "stops": [ + { + "date": "2010-12-02", + "name": "SIKOP22", + "port": { + "_reference": "SIKOP", + "name": "SIKOP23" + } + }, + { + "date": "2010-12-08", + "name": "GBMAN24", + "port": { + "_reference": "GBMAN", + "name": "GBMAN25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52890", + "stops": [ + { + "date": "2010-12-02", + "name": "SILJU4", + "port": { + "_reference": "SILJU", + "name": "SILJU5" + } + }, + { + "date": "2010-12-08", + "name": "ATVIE36", + "port": { + "_reference": "ATVIE", + "name": "ATVIE37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52924", + "stops": [ + { + "date": "2010-12-02", + "name": "SILJU6", + "port": { + "_reference": "SILJU", + "name": "SILJU7" + } + }, + { + "date": "2010-12-08", + "name": "FRFOS24", + "port": { + "_reference": "FRFOS", + "name": "FRFOS25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "52946", + "stops": [ + { + "date": "2010-12-02", + "name": "SILJU8", + "port": { + "_reference": "SILJU", + "name": "SILJU9" + } + }, + { + "date": "2010-12-08", + "name": "ITLIV0", + "port": { + "_reference": "ITLIV", + "name": "ITLIV1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53098", + "stops": [ + { + "date": "2010-12-02", + "name": "SYTTS4", + "port": { + "_reference": "SYTTS", + "name": "SYTTS5" + } + }, + { + "date": "2010-12-08", + "name": "ESBCN22", + "port": { + "_reference": "ESBCN", + "name": "ESBCN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53170", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK0", + "port": { + "_reference": "THBKK", + "name": "THBKK1" + } + }, + { + "date": "2010-12-08", + "name": "INDEL28", + "port": { + "_reference": "INDEL", + "name": "INDEL29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53172", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK2", + "port": { + "_reference": "THBKK", + "name": "THBKK3" + } + }, + { + "date": "2010-12-08", + "name": "INMAA22", + "port": { + "_reference": "INMAA", + "name": "INMAA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53173", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK4", + "port": { + "_reference": "THBKK", + "name": "THBKK5" + } + }, + { + "date": "2010-12-08", + "name": "INMUN14", + "port": { + "_reference": "INMUN", + "name": "INMUN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53174", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK6", + "port": { + "_reference": "THBKK", + "name": "THBKK7" + } + }, + { + "date": "2010-12-08", + "name": "INNAH12", + "port": { + "_reference": "INNAH", + "name": "INNAH13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53175", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK8", + "port": { + "_reference": "THBKK", + "name": "THBKK9" + } + }, + { + "date": "2010-12-08", + "name": "INTUT16", + "port": { + "_reference": "INTUT", + "name": "INTUT17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53177", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK10", + "port": { + "_reference": "THBKK", + "name": "THBKK11" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH22", + "port": { + "_reference": "KHPNH", + "name": "KHPNH23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53178", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK12", + "port": { + "_reference": "THBKK", + "name": "THBKK13" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB12", + "port": { + "_reference": "LKCMB", + "name": "LKCMB13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53180", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK14", + "port": { + "_reference": "THBKK", + "name": "THBKK15" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN18", + "port": { + "_reference": "MYPEN", + "name": "MYPEN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53181", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK16", + "port": { + "_reference": "THBKK", + "name": "THBKK17" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU28", + "port": { + "_reference": "MYPGU", + "name": "MYPGU29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53182", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK18", + "port": { + "_reference": "THBKK", + "name": "THBKK19" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG24", + "port": { + "_reference": "MYPKG", + "name": "MYPKG25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53187", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK20", + "port": { + "_reference": "THBKK", + "name": "THBKK21" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN22", + "port": { + "_reference": "SGSIN", + "name": "SGSIN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53188", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK22", + "port": { + "_reference": "THBKK", + "name": "THBKK23" + } + }, + { + "date": "2010-12-06", + "name": "THLCH2", + "port": { + "_reference": "THLCH", + "name": "THLCH3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53189", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK24", + "port": { + "_reference": "THBKK", + "name": "THBKK25" + } + }, + { + "date": "2010-12-06", + "name": "THLKG2", + "port": { + "_reference": "THLKG", + "name": "THLKG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53190", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK26", + "port": { + "_reference": "THBKK", + "name": "THBKK27" + } + }, + { + "date": "2010-12-06", + "name": "THSGZ0", + "port": { + "_reference": "THSGZ", + "name": "THSGZ1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53191", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK28", + "port": { + "_reference": "THBKK", + "name": "THBKK29" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH16", + "port": { + "_reference": "VNHPH", + "name": "VNHPH17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53192", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK30", + "port": { + "_reference": "THBKK", + "name": "THBKK31" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN18", + "port": { + "_reference": "VNSGN", + "name": "VNSGN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53200", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH4", + "port": { + "_reference": "THLCH", + "name": "THLCH5" + } + }, + { + "date": "2010-12-08", + "name": "INDEL30", + "port": { + "_reference": "INDEL", + "name": "INDEL31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53203", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH6", + "port": { + "_reference": "THLCH", + "name": "THLCH7" + } + }, + { + "date": "2010-12-08", + "name": "INMUN16", + "port": { + "_reference": "INMUN", + "name": "INMUN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53204", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH8", + "port": { + "_reference": "THLCH", + "name": "THLCH9" + } + }, + { + "date": "2010-12-08", + "name": "INNAH14", + "port": { + "_reference": "INNAH", + "name": "INNAH15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53205", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH10", + "port": { + "_reference": "THLCH", + "name": "THLCH11" + } + }, + { + "date": "2010-12-08", + "name": "INTUT18", + "port": { + "_reference": "INTUT", + "name": "INTUT19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53208", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH12", + "port": { + "_reference": "THLCH", + "name": "THLCH13" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB14", + "port": { + "_reference": "LKCMB", + "name": "LKCMB15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53210", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH14", + "port": { + "_reference": "THLCH", + "name": "THLCH15" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN20", + "port": { + "_reference": "MYPEN", + "name": "MYPEN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53211", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH16", + "port": { + "_reference": "THLCH", + "name": "THLCH17" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU30", + "port": { + "_reference": "MYPGU", + "name": "MYPGU31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53212", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH18", + "port": { + "_reference": "THLCH", + "name": "THLCH19" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG26", + "port": { + "_reference": "MYPKG", + "name": "MYPKG27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53217", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH20", + "port": { + "_reference": "THLCH", + "name": "THLCH21" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN24", + "port": { + "_reference": "SGSIN", + "name": "SGSIN25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53219", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH22", + "port": { + "_reference": "THLCH", + "name": "THLCH23" + } + }, + { + "date": "2010-12-06", + "name": "THLKG4", + "port": { + "_reference": "THLKG", + "name": "THLKG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53220", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH24", + "port": { + "_reference": "THLCH", + "name": "THLCH25" + } + }, + { + "date": "2010-12-06", + "name": "THSGZ2", + "port": { + "_reference": "THSGZ", + "name": "THSGZ3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53222", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH26", + "port": { + "_reference": "THLCH", + "name": "THLCH27" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN20", + "port": { + "_reference": "VNSGN", + "name": "VNSGN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53230", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG6", + "port": { + "_reference": "THLKG", + "name": "THLKG7" + } + }, + { + "date": "2010-12-08", + "name": "INDEL32", + "port": { + "_reference": "INDEL", + "name": "INDEL33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53232", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG8", + "port": { + "_reference": "THLKG", + "name": "THLKG9" + } + }, + { + "date": "2010-12-08", + "name": "INMAA24", + "port": { + "_reference": "INMAA", + "name": "INMAA25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53237", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG10", + "port": { + "_reference": "THLKG", + "name": "THLKG11" + } + }, + { + "date": "2010-12-08", + "name": "KHPNH24", + "port": { + "_reference": "KHPNH", + "name": "KHPNH25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53238", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG12", + "port": { + "_reference": "THLKG", + "name": "THLKG13" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB16", + "port": { + "_reference": "LKCMB", + "name": "LKCMB17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53239", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG14", + "port": { + "_reference": "THLKG", + "name": "THLKG15" + } + }, + { + "date": "2010-12-08", + "name": "MMRGN30", + "port": { + "_reference": "MMRGN", + "name": "MMRGN31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53240", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG16", + "port": { + "_reference": "THLKG", + "name": "THLKG17" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN22", + "port": { + "_reference": "MYPEN", + "name": "MYPEN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53242", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG18", + "port": { + "_reference": "THLKG", + "name": "THLKG19" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG28", + "port": { + "_reference": "MYPKG", + "name": "MYPKG29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53247", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG20", + "port": { + "_reference": "THLKG", + "name": "THLKG21" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN26", + "port": { + "_reference": "SGSIN", + "name": "SGSIN27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53249", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG22", + "port": { + "_reference": "THLKG", + "name": "THLKG23" + } + }, + { + "date": "2010-12-06", + "name": "THLCH28", + "port": { + "_reference": "THLCH", + "name": "THLCH29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53250", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG24", + "port": { + "_reference": "THLKG", + "name": "THLKG25" + } + }, + { + "date": "2010-12-06", + "name": "THSGZ4", + "port": { + "_reference": "THSGZ", + "name": "THSGZ5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53251", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG26", + "port": { + "_reference": "THLKG", + "name": "THLKG27" + } + }, + { + "date": "2010-12-08", + "name": "VNHPH18", + "port": { + "_reference": "VNHPH", + "name": "VNHPH19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53252", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG28", + "port": { + "_reference": "THLKG", + "name": "THLKG29" + } + }, + { + "date": "2010-12-08", + "name": "VNSGN22", + "port": { + "_reference": "VNSGN", + "name": "VNSGN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53272", + "stops": [ + { + "date": "2010-12-02", + "name": "THSGZ6", + "port": { + "_reference": "THSGZ", + "name": "THSGZ7" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG30", + "port": { + "_reference": "MYPKG", + "name": "MYPKG31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53277", + "stops": [ + { + "date": "2010-12-02", + "name": "THSGZ8", + "port": { + "_reference": "THSGZ", + "name": "THSGZ9" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN28", + "port": { + "_reference": "SGSIN", + "name": "SGSIN29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53284", + "stops": [ + { + "date": "2010-12-02", + "name": "TNTUN2", + "port": { + "_reference": "TNTUN", + "name": "TNTUN3" + } + }, + { + "date": "2010-12-08", + "name": "BEANR50", + "port": { + "_reference": "BEANR", + "name": "BEANR51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53292", + "stops": [ + { + "date": "2010-12-02", + "name": "TNTUN4", + "port": { + "_reference": "TNTUN", + "name": "TNTUN5" + } + }, + { + "date": "2010-12-08", + "name": "DEBFE28", + "port": { + "_reference": "DEBFE", + "name": "DEBFE29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53356", + "stops": [ + { + "date": "2010-12-02", + "name": "TNTUN6", + "port": { + "_reference": "TNTUN", + "name": "TNTUN7" + } + }, + { + "date": "2010-12-08", + "name": "NOOSL68", + "port": { + "_reference": "NOOSL", + "name": "NOOSL69" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53391", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIST10", + "port": { + "_reference": "TRIST", + "name": "TRIST11" + } + }, + { + "date": "2010-12-08", + "name": "DENUE30", + "port": { + "_reference": "DENUE", + "name": "DENUE31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53416", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIST12", + "port": { + "_reference": "TRIST", + "name": "TRIST13" + } + }, + { + "date": "2010-12-08", + "name": "GBGLW28", + "port": { + "_reference": "GBGLW", + "name": "GBGLW29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53433", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIST14", + "port": { + "_reference": "TRIST", + "name": "TRIST15" + } + }, + { + "date": "2010-12-08", + "name": "ITNAP38", + "port": { + "_reference": "ITNAP", + "name": "ITNAP39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53434", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIST16", + "port": { + "_reference": "TRIST", + "name": "TRIST17" + } + }, + { + "date": "2010-12-08", + "name": "ITPDA32", + "port": { + "_reference": "ITPDA", + "name": "ITPDA33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53445", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIST18", + "port": { + "_reference": "TRIST", + "name": "TRIST19" + } + }, + { + "date": "2010-12-08", + "name": "NOBGO2", + "port": { + "_reference": "NOBGO", + "name": "NOBGO3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53512", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIZM0", + "port": { + "_reference": "TRIZM", + "name": "TRIZM1" + } + }, + { + "date": "2010-12-08", + "name": "GBTIL30", + "port": { + "_reference": "GBTIL", + "name": "GBTIL31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53527", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIZM2", + "port": { + "_reference": "TRIZM", + "name": "TRIZM3" + } + }, + { + "date": "2010-12-08", + "name": "ITSPE12", + "port": { + "_reference": "ITSPE", + "name": "ITSPE13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53554", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIZM4", + "port": { + "_reference": "TRIZM", + "name": "TRIZM5" + } + }, + { + "date": "2010-12-06", + "name": "TRIST20", + "port": { + "_reference": "TRIST", + "name": "TRIST21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53628", + "stops": [ + { + "date": "2010-12-02", + "name": "TRMER8", + "port": { + "_reference": "TRMER", + "name": "TRMER9" + } + }, + { + "date": "2010-12-08", + "name": "NOKRS28", + "port": { + "_reference": "NOKRS", + "name": "NOKRS29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53645", + "stops": [ + { + "date": "2010-12-02", + "name": "TRMER10", + "port": { + "_reference": "TRMER", + "name": "TRMER11" + } + }, + { + "date": "2010-12-06", + "name": "TRIST22", + "port": { + "_reference": "TRIST", + "name": "TRIST23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53651", + "stops": [ + { + "date": "2010-12-02", + "name": "TWKHH0", + "port": { + "_reference": "TWKHH", + "name": "TWKHH1" + } + }, + { + "date": "2010-12-06", + "name": "TWTXG0", + "port": { + "_reference": "TWTXG", + "name": "TWTXG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53652", + "stops": [ + { + "date": "2010-12-02", + "name": "TWKHH2", + "port": { + "_reference": "TWKHH", + "name": "TWKHH3" + } + }, + { + "date": "2010-12-06", + "name": "TWTYU", + "port": { + "_reference": "TWTYU", + "name": "TWTYU0" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53663", + "stops": [ + { + "date": "2010-12-02", + "name": "USADI0", + "port": { + "_reference": "USADI", + "name": "USADI1" + } + }, + { + "date": "2010-12-06", + "name": "USDET0", + "port": { + "_reference": "USDET", + "name": "USDET1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53668", + "stops": [ + { + "date": "2010-12-02", + "name": "USADI2", + "port": { + "_reference": "USADI", + "name": "USADI3" + } + }, + { + "date": "2010-12-06", + "name": "USSDF0", + "port": { + "_reference": "USSDF", + "name": "USSDF1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53674", + "stops": [ + { + "date": "2010-12-02", + "name": "USAMA0", + "port": { + "_reference": "USAMA", + "name": "USAMA1" + } + }, + { + "date": "2010-12-06", + "name": "USMSY0", + "port": { + "_reference": "USMSY", + "name": "USMSY1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53687", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL2", + "port": { + "_reference": "USATL", + "name": "USATL3" + } + }, + { + "date": "2010-12-06", + "name": "USJAX0", + "port": { + "_reference": "USJAX", + "name": "USJAX1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53689", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL4", + "port": { + "_reference": "USATL", + "name": "USATL5" + } + }, + { + "date": "2010-12-06", + "name": "USMEM0", + "port": { + "_reference": "USMEM", + "name": "USMEM1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53690", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL6", + "port": { + "_reference": "USATL", + "name": "USATL7" + } + }, + { + "date": "2010-12-06", + "name": "USMIA0", + "port": { + "_reference": "USMIA", + "name": "USMIA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53696", + "stops": [ + { + "date": "2010-12-02", + "name": "USBAL0", + "port": { + "_reference": "USBAL", + "name": "USBAL1" + } + }, + { + "date": "2010-12-06", + "name": "USBOS0", + "port": { + "_reference": "USBOS", + "name": "USBOS1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53701", + "stops": [ + { + "date": "2010-12-02", + "name": "USBAL2", + "port": { + "_reference": "USBAL", + "name": "USBAL3" + } + }, + { + "date": "2010-12-06", + "name": "USPHL0", + "port": { + "_reference": "USPHL", + "name": "USPHL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53702", + "stops": [ + { + "date": "2010-12-02", + "name": "USBAL4", + "port": { + "_reference": "USBAL", + "name": "USBAL5" + } + }, + { + "date": "2010-12-06", + "name": "USPIT0", + "port": { + "_reference": "USPIT", + "name": "USPIT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53707", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA0", + "port": { + "_reference": "USBNA", + "name": "USBNA1" + } + }, + { + "date": "2010-12-06", + "name": "USILM0", + "port": { + "_reference": "USILM", + "name": "USILM1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53709", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA2", + "port": { + "_reference": "USBNA", + "name": "USBNA3" + } + }, + { + "date": "2010-12-06", + "name": "USJAX2", + "port": { + "_reference": "USJAX", + "name": "USJAX3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53710", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA4", + "port": { + "_reference": "USBNA", + "name": "USBNA5" + } + }, + { + "date": "2010-12-06", + "name": "USMEM2", + "port": { + "_reference": "USMEM", + "name": "USMEM3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53711", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA6", + "port": { + "_reference": "USBNA", + "name": "USBNA7" + } + }, + { + "date": "2010-12-06", + "name": "USMIA2", + "port": { + "_reference": "USMIA", + "name": "USMIA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53712", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA8", + "port": { + "_reference": "USBNA", + "name": "USBNA9" + } + }, + { + "date": "2010-12-06", + "name": "USMOB0", + "port": { + "_reference": "USMOB", + "name": "USMOB1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53727", + "stops": [ + { + "date": "2010-12-02", + "name": "USBUF0", + "port": { + "_reference": "USBUF", + "name": "USBUF1" + } + }, + { + "date": "2010-12-06", + "name": "USPIT2", + "port": { + "_reference": "USPIT", + "name": "USPIT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53729", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI2", + "port": { + "_reference": "USCHI", + "name": "USCHI3" + } + }, + { + "date": "2010-12-08", + "name": "CAVAN10", + "port": { + "_reference": "CAVAN", + "name": "CAVAN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53734", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI4", + "port": { + "_reference": "USCHI", + "name": "USCHI5" + } + }, + { + "date": "2010-12-06", + "name": "USCMH0", + "port": { + "_reference": "USCMH", + "name": "USCMH1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53735", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI6", + "port": { + "_reference": "USCHI", + "name": "USCHI7" + } + }, + { + "date": "2010-12-06", + "name": "USCVG0", + "port": { + "_reference": "USCVG", + "name": "USCVG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53736", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI8", + "port": { + "_reference": "USCHI", + "name": "USCHI9" + } + }, + { + "date": "2010-12-06", + "name": "USDET2", + "port": { + "_reference": "USDET", + "name": "USDET3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53739", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI10", + "port": { + "_reference": "USCHI", + "name": "USCHI11" + } + }, + { + "date": "2010-12-06", + "name": "USKCK0", + "port": { + "_reference": "USKCK", + "name": "USKCK1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53741", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI12", + "port": { + "_reference": "USCHI", + "name": "USCHI13" + } + }, + { + "date": "2010-12-06", + "name": "USMSP0", + "port": { + "_reference": "USMSP", + "name": "USMSP1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53742", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI14", + "port": { + "_reference": "USCHI", + "name": "USCHI15" + } + }, + { + "date": "2010-12-06", + "name": "USNYC0", + "port": { + "_reference": "USNYC", + "name": "USNYC1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53743", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI16", + "port": { + "_reference": "USCHI", + "name": "USCHI17" + } + }, + { + "date": "2010-12-06", + "name": "USOMA0", + "port": { + "_reference": "USOMA", + "name": "USOMA1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53745", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI18", + "port": { + "_reference": "USCHI", + "name": "USCHI19" + } + }, + { + "date": "2010-12-06", + "name": "USSDF2", + "port": { + "_reference": "USSDF", + "name": "USSDF3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53746", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI20", + "port": { + "_reference": "USCHI", + "name": "USCHI21" + } + }, + { + "date": "2010-12-06", + "name": "USSEA2", + "port": { + "_reference": "USSEA", + "name": "USSEA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53747", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI22", + "port": { + "_reference": "USCHI", + "name": "USCHI23" + } + }, + { + "date": "2010-12-06", + "name": "USSTL0", + "port": { + "_reference": "USSTL", + "name": "USSTL1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53749", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS0", + "port": { + "_reference": "USCHS", + "name": "USCHS1" + } + }, + { + "date": "2010-12-06", + "name": "USBNA10", + "port": { + "_reference": "USBNA", + "name": "USBNA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53752", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS2", + "port": { + "_reference": "USCHS", + "name": "USCHS3" + } + }, + { + "date": "2010-12-06", + "name": "USILM2", + "port": { + "_reference": "USILM", + "name": "USILM3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53754", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS4", + "port": { + "_reference": "USCHS", + "name": "USCHS5" + } + }, + { + "date": "2010-12-06", + "name": "USJAX4", + "port": { + "_reference": "USJAX", + "name": "USJAX5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53755", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS6", + "port": { + "_reference": "USCHS", + "name": "USCHS7" + } + }, + { + "date": "2010-12-06", + "name": "USMEM4", + "port": { + "_reference": "USMEM", + "name": "USMEM5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53756", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS8", + "port": { + "_reference": "USCHS", + "name": "USCHS9" + } + }, + { + "date": "2010-12-06", + "name": "USMIA4", + "port": { + "_reference": "USMIA", + "name": "USMIA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53757", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS10", + "port": { + "_reference": "USCHS", + "name": "USCHS11" + } + }, + { + "date": "2010-12-06", + "name": "USMOB2", + "port": { + "_reference": "USMOB", + "name": "USMOB3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53762", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE0", + "port": { + "_reference": "USCLE", + "name": "USCLE1" + } + }, + { + "date": "2010-12-06", + "name": "USCVG2", + "port": { + "_reference": "USCVG", + "name": "USCVG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53763", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE2", + "port": { + "_reference": "USCLE", + "name": "USCLE3" + } + }, + { + "date": "2010-12-06", + "name": "USDET4", + "port": { + "_reference": "USDET", + "name": "USDET5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53765", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE4", + "port": { + "_reference": "USCLE", + "name": "USCLE5" + } + }, + { + "date": "2010-12-06", + "name": "USKCK2", + "port": { + "_reference": "USKCK", + "name": "USKCK3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53766", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE6", + "port": { + "_reference": "USCLE", + "name": "USCLE7" + } + }, + { + "date": "2010-12-06", + "name": "USMSP2", + "port": { + "_reference": "USMSP", + "name": "USMSP3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53767", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE8", + "port": { + "_reference": "USCLE", + "name": "USCLE9" + } + }, + { + "date": "2010-12-06", + "name": "USOMA2", + "port": { + "_reference": "USOMA", + "name": "USOMA3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53768", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE10", + "port": { + "_reference": "USCLE", + "name": "USCLE11" + } + }, + { + "date": "2010-12-06", + "name": "USSDF4", + "port": { + "_reference": "USSDF", + "name": "USSDF5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53769", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE12", + "port": { + "_reference": "USCLE", + "name": "USCLE13" + } + }, + { + "date": "2010-12-06", + "name": "USSTL2", + "port": { + "_reference": "USSTL", + "name": "USSTL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53771", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT0", + "port": { + "_reference": "USCLT", + "name": "USCLT1" + } + }, + { + "date": "2010-12-06", + "name": "USBNA12", + "port": { + "_reference": "USBNA", + "name": "USBNA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53774", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT2", + "port": { + "_reference": "USCLT", + "name": "USCLT3" + } + }, + { + "date": "2010-12-06", + "name": "USILM4", + "port": { + "_reference": "USILM", + "name": "USILM5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53776", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT4", + "port": { + "_reference": "USCLT", + "name": "USCLT5" + } + }, + { + "date": "2010-12-06", + "name": "USJAX6", + "port": { + "_reference": "USJAX", + "name": "USJAX7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53777", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT6", + "port": { + "_reference": "USCLT", + "name": "USCLT7" + } + }, + { + "date": "2010-12-06", + "name": "USMEM6", + "port": { + "_reference": "USMEM", + "name": "USMEM7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53778", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT8", + "port": { + "_reference": "USCLT", + "name": "USCLT9" + } + }, + { + "date": "2010-12-06", + "name": "USMIA6", + "port": { + "_reference": "USMIA", + "name": "USMIA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53779", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT10", + "port": { + "_reference": "USCLT", + "name": "USCLT11" + } + }, + { + "date": "2010-12-06", + "name": "USMOB4", + "port": { + "_reference": "USMOB", + "name": "USMOB5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53784", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH2", + "port": { + "_reference": "USCMH", + "name": "USCMH3" + } + }, + { + "date": "2010-12-06", + "name": "USCVG4", + "port": { + "_reference": "USCVG", + "name": "USCVG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53785", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH4", + "port": { + "_reference": "USCMH", + "name": "USCMH5" + } + }, + { + "date": "2010-12-06", + "name": "USDET6", + "port": { + "_reference": "USDET", + "name": "USDET7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53787", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH6", + "port": { + "_reference": "USCMH", + "name": "USCMH7" + } + }, + { + "date": "2010-12-06", + "name": "USKCK4", + "port": { + "_reference": "USKCK", + "name": "USKCK5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53788", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH8", + "port": { + "_reference": "USCMH", + "name": "USCMH9" + } + }, + { + "date": "2010-12-06", + "name": "USMSP4", + "port": { + "_reference": "USMSP", + "name": "USMSP5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53789", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH10", + "port": { + "_reference": "USCMH", + "name": "USCMH11" + } + }, + { + "date": "2010-12-06", + "name": "USOMA4", + "port": { + "_reference": "USOMA", + "name": "USOMA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53790", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH12", + "port": { + "_reference": "USCMH", + "name": "USCMH13" + } + }, + { + "date": "2010-12-06", + "name": "USSDF6", + "port": { + "_reference": "USSDF", + "name": "USSDF7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53791", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH14", + "port": { + "_reference": "USCMH", + "name": "USCMH15" + } + }, + { + "date": "2010-12-06", + "name": "USSTL4", + "port": { + "_reference": "USSTL", + "name": "USSTL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53800", + "stops": [ + { + "date": "2010-12-02", + "name": "USCVG6", + "port": { + "_reference": "USCVG", + "name": "USCVG7" + } + }, + { + "date": "2010-12-06", + "name": "USOMA6", + "port": { + "_reference": "USOMA", + "name": "USOMA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53804", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL0", + "port": { + "_reference": "USDAL", + "name": "USDAL1" + } + }, + { + "date": "2010-12-06", + "name": "USELP0", + "port": { + "_reference": "USELP", + "name": "USELP1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53805", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL2", + "port": { + "_reference": "USDAL", + "name": "USDAL3" + } + }, + { + "date": "2010-12-06", + "name": "USHOU2", + "port": { + "_reference": "USHOU", + "name": "USHOU3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53807", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL4", + "port": { + "_reference": "USDAL", + "name": "USDAL5" + } + }, + { + "date": "2010-12-06", + "name": "USMSY2", + "port": { + "_reference": "USMSY", + "name": "USMSY3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53808", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL6", + "port": { + "_reference": "USDAL", + "name": "USDAL7" + } + }, + { + "date": "2010-12-06", + "name": "USSAT0", + "port": { + "_reference": "USSAT", + "name": "USSAT1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53815", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET8", + "port": { + "_reference": "USDET", + "name": "USDET9" + } + }, + { + "date": "2010-12-06", + "name": "USCVG8", + "port": { + "_reference": "USCVG", + "name": "USCVG9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53817", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET10", + "port": { + "_reference": "USDET", + "name": "USDET11" + } + }, + { + "date": "2010-12-06", + "name": "USKCK6", + "port": { + "_reference": "USKCK", + "name": "USKCK7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53818", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET12", + "port": { + "_reference": "USDET", + "name": "USDET13" + } + }, + { + "date": "2010-12-06", + "name": "USMSP6", + "port": { + "_reference": "USMSP", + "name": "USMSP7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53819", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET14", + "port": { + "_reference": "USDET", + "name": "USDET15" + } + }, + { + "date": "2010-12-06", + "name": "USOMA8", + "port": { + "_reference": "USOMA", + "name": "USOMA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53820", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET16", + "port": { + "_reference": "USDET", + "name": "USDET17" + } + }, + { + "date": "2010-12-06", + "name": "USSDF8", + "port": { + "_reference": "USSDF", + "name": "USSDF9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53821", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET18", + "port": { + "_reference": "USDET", + "name": "USDET19" + } + }, + { + "date": "2010-12-06", + "name": "USSTL6", + "port": { + "_reference": "USSTL", + "name": "USSTL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53824", + "stops": [ + { + "date": "2010-12-02", + "name": "USELP2", + "port": { + "_reference": "USELP", + "name": "USELP3" + } + }, + { + "date": "2010-12-06", + "name": "USHOU4", + "port": { + "_reference": "USHOU", + "name": "USHOU5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53826", + "stops": [ + { + "date": "2010-12-02", + "name": "USELP4", + "port": { + "_reference": "USELP", + "name": "USELP5" + } + }, + { + "date": "2010-12-06", + "name": "USMSY4", + "port": { + "_reference": "USMSY", + "name": "USMSY5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53829", + "stops": [ + { + "date": "2010-12-02", + "name": "USHAR0", + "port": { + "_reference": "USHAR", + "name": "USHAR1" + } + }, + { + "date": "2010-12-06", + "name": "USBOS2", + "port": { + "_reference": "USBOS", + "name": "USBOS3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53834", + "stops": [ + { + "date": "2010-12-02", + "name": "USHAR2", + "port": { + "_reference": "USHAR", + "name": "USHAR3" + } + }, + { + "date": "2010-12-06", + "name": "USPIT4", + "port": { + "_reference": "USPIT", + "name": "USPIT5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53835", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU6", + "port": { + "_reference": "USHOU", + "name": "USHOU7" + } + }, + { + "date": "2010-12-08", + "name": "CATOR16", + "port": { + "_reference": "CATOR", + "name": "CATOR17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53836", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU8", + "port": { + "_reference": "USHOU", + "name": "USHOU9" + } + }, + { + "date": "2010-12-08", + "name": "CAVAN12", + "port": { + "_reference": "CAVAN", + "name": "CAVAN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53839", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU10", + "port": { + "_reference": "USHOU", + "name": "USHOU11" + } + }, + { + "date": "2010-12-06", + "name": "USATL8", + "port": { + "_reference": "USATL", + "name": "USATL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53840", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU12", + "port": { + "_reference": "USHOU", + "name": "USHOU13" + } + }, + { + "date": "2010-12-06", + "name": "USCHI24", + "port": { + "_reference": "USCHI", + "name": "USCHI25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53846", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU14", + "port": { + "_reference": "USHOU", + "name": "USHOU15" + } + }, + { + "date": "2010-12-06", + "name": "USNYC2", + "port": { + "_reference": "USNYC", + "name": "USNYC3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53847", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU16", + "port": { + "_reference": "USHOU", + "name": "USHOU17" + } + }, + { + "date": "2010-12-06", + "name": "USPDX0", + "port": { + "_reference": "USPDX", + "name": "USPDX1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53849", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU18", + "port": { + "_reference": "USHOU", + "name": "USHOU19" + } + }, + { + "date": "2010-12-06", + "name": "USSEA4", + "port": { + "_reference": "USSEA", + "name": "USSEA5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53854", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV0", + "port": { + "_reference": "USHSV", + "name": "USHSV1" + } + }, + { + "date": "2010-12-06", + "name": "USILM6", + "port": { + "_reference": "USILM", + "name": "USILM7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53856", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV2", + "port": { + "_reference": "USHSV", + "name": "USHSV3" + } + }, + { + "date": "2010-12-06", + "name": "USJAX8", + "port": { + "_reference": "USJAX", + "name": "USJAX9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53857", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV4", + "port": { + "_reference": "USHSV", + "name": "USHSV5" + } + }, + { + "date": "2010-12-06", + "name": "USMEM8", + "port": { + "_reference": "USMEM", + "name": "USMEM9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53875", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND0", + "port": { + "_reference": "USIND", + "name": "USIND1" + } + }, + { + "date": "2010-12-06", + "name": "USCMH16", + "port": { + "_reference": "USCMH", + "name": "USCMH17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53876", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND2", + "port": { + "_reference": "USIND", + "name": "USIND3" + } + }, + { + "date": "2010-12-06", + "name": "USCVG10", + "port": { + "_reference": "USCVG", + "name": "USCVG11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53877", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND4", + "port": { + "_reference": "USIND", + "name": "USIND5" + } + }, + { + "date": "2010-12-06", + "name": "USDET20", + "port": { + "_reference": "USDET", + "name": "USDET21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53878", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND6", + "port": { + "_reference": "USIND", + "name": "USIND7" + } + }, + { + "date": "2010-12-06", + "name": "USKCK8", + "port": { + "_reference": "USKCK", + "name": "USKCK9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53879", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND8", + "port": { + "_reference": "USIND", + "name": "USIND9" + } + }, + { + "date": "2010-12-06", + "name": "USMSP8", + "port": { + "_reference": "USMSP", + "name": "USMSP9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53880", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND10", + "port": { + "_reference": "USIND", + "name": "USIND11" + } + }, + { + "date": "2010-12-06", + "name": "USOMA10", + "port": { + "_reference": "USOMA", + "name": "USOMA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53881", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND12", + "port": { + "_reference": "USIND", + "name": "USIND13" + } + }, + { + "date": "2010-12-06", + "name": "USSDF10", + "port": { + "_reference": "USSDF", + "name": "USSDF11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53882", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND14", + "port": { + "_reference": "USIND", + "name": "USIND15" + } + }, + { + "date": "2010-12-06", + "name": "USSTL8", + "port": { + "_reference": "USSTL", + "name": "USSTL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53889", + "stops": [ + { + "date": "2010-12-02", + "name": "USJAN0", + "port": { + "_reference": "USJAN", + "name": "USJAN1" + } + }, + { + "date": "2010-12-06", + "name": "USJAX10", + "port": { + "_reference": "USJAX", + "name": "USJAX11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53907", + "stops": [ + { + "date": "2010-12-02", + "name": "USKCK10", + "port": { + "_reference": "USKCK", + "name": "USKCK11" + } + }, + { + "date": "2010-12-06", + "name": "USCLE14", + "port": { + "_reference": "USCLE", + "name": "USCLE15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53918", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB0", + "port": { + "_reference": "USLGB", + "name": "USLGB1" + } + }, + { + "date": "2010-12-08", + "name": "CAVAN14", + "port": { + "_reference": "CAVAN", + "name": "CAVAN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53920", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB2", + "port": { + "_reference": "USLGB", + "name": "USLGB3" + } + }, + { + "date": "2010-12-06", + "name": "USATL10", + "port": { + "_reference": "USATL", + "name": "USATL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53921", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB4", + "port": { + "_reference": "USLGB", + "name": "USLGB5" + } + }, + { + "date": "2010-12-06", + "name": "USCHI26", + "port": { + "_reference": "USCHI", + "name": "USCHI27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53922", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB6", + "port": { + "_reference": "USLGB", + "name": "USLGB7" + } + }, + { + "date": "2010-12-06", + "name": "USHOU20", + "port": { + "_reference": "USHOU", + "name": "USHOU21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53923", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB8", + "port": { + "_reference": "USLGB", + "name": "USLGB9" + } + }, + { + "date": "2010-12-06", + "name": "USLAX0", + "port": { + "_reference": "USLAX", + "name": "USLAX1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53925", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB10", + "port": { + "_reference": "USLGB", + "name": "USLGB11" + } + }, + { + "date": "2010-12-06", + "name": "USPDX2", + "port": { + "_reference": "USPDX", + "name": "USPDX3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53926", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB12", + "port": { + "_reference": "USLGB", + "name": "USLGB13" + } + }, + { + "date": "2010-12-06", + "name": "USSEA6", + "port": { + "_reference": "USSEA", + "name": "USSEA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53930", + "stops": [ + { + "date": "2010-12-02", + "name": "USLRD0", + "port": { + "_reference": "USLRD", + "name": "USLRD1" + } + }, + { + "date": "2010-12-06", + "name": "USHOU22", + "port": { + "_reference": "USHOU", + "name": "USHOU23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53931", + "stops": [ + { + "date": "2010-12-02", + "name": "USLRD2", + "port": { + "_reference": "USLRD", + "name": "USLRD3" + } + }, + { + "date": "2010-12-06", + "name": "USMSY6", + "port": { + "_reference": "USMSY", + "name": "USMSY7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53932", + "stops": [ + { + "date": "2010-12-02", + "name": "USLRD4", + "port": { + "_reference": "USLRD", + "name": "USLRD5" + } + }, + { + "date": "2010-12-06", + "name": "USSAT2", + "port": { + "_reference": "USSAT", + "name": "USSAT3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53939", + "stops": [ + { + "date": "2010-12-02", + "name": "USMEM10", + "port": { + "_reference": "USMEM", + "name": "USMEM11" + } + }, + { + "date": "2010-12-06", + "name": "USILM8", + "port": { + "_reference": "USILM", + "name": "USILM9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53941", + "stops": [ + { + "date": "2010-12-02", + "name": "USMEM12", + "port": { + "_reference": "USMEM", + "name": "USMEM13" + } + }, + { + "date": "2010-12-06", + "name": "USJAX12", + "port": { + "_reference": "USJAX", + "name": "USJAX13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53950", + "stops": [ + { + "date": "2010-12-02", + "name": "USMIA8", + "port": { + "_reference": "USMIA", + "name": "USMIA9" + } + }, + { + "date": "2010-12-06", + "name": "USILM10", + "port": { + "_reference": "USILM", + "name": "USILM11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53964", + "stops": [ + { + "date": "2010-12-02", + "name": "USMOB6", + "port": { + "_reference": "USMOB", + "name": "USMOB7" + } + }, + { + "date": "2010-12-06", + "name": "USMEM14", + "port": { + "_reference": "USMEM", + "name": "USMEM15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53965", + "stops": [ + { + "date": "2010-12-02", + "name": "USMOB8", + "port": { + "_reference": "USMOB", + "name": "USMOB9" + } + }, + { + "date": "2010-12-06", + "name": "USMIA10", + "port": { + "_reference": "USMIA", + "name": "USMIA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53974", + "stops": [ + { + "date": "2010-12-02", + "name": "USMSP10", + "port": { + "_reference": "USMSP", + "name": "USMSP11" + } + }, + { + "date": "2010-12-06", + "name": "USKCK12", + "port": { + "_reference": "USKCK", + "name": "USKCK13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53975", + "stops": [ + { + "date": "2010-12-02", + "name": "USMSP12", + "port": { + "_reference": "USMSP", + "name": "USMSP13" + } + }, + { + "date": "2010-12-06", + "name": "USOMA12", + "port": { + "_reference": "USOMA", + "name": "USOMA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53981", + "stops": [ + { + "date": "2010-12-02", + "name": "USMSY8", + "port": { + "_reference": "USMSY", + "name": "USMSY9" + } + }, + { + "date": "2010-12-06", + "name": "USHOU24", + "port": { + "_reference": "USHOU", + "name": "USHOU25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53987", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC4", + "port": { + "_reference": "USNYC", + "name": "USNYC5" + } + }, + { + "date": "2010-12-06", + "name": "USATL12", + "port": { + "_reference": "USATL", + "name": "USATL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53988", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC6", + "port": { + "_reference": "USNYC", + "name": "USNYC7" + } + }, + { + "date": "2010-12-06", + "name": "USBAL6", + "port": { + "_reference": "USBAL", + "name": "USBAL7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53993", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC8", + "port": { + "_reference": "USNYC", + "name": "USNYC9" + } + }, + { + "date": "2010-12-06", + "name": "USHOU26", + "port": { + "_reference": "USHOU", + "name": "USHOU27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53996", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC10", + "port": { + "_reference": "USNYC", + "name": "USNYC11" + } + }, + { + "date": "2010-12-06", + "name": "USPDX4", + "port": { + "_reference": "USPDX", + "name": "USPDX5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53997", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC12", + "port": { + "_reference": "USNYC", + "name": "USNYC13" + } + }, + { + "date": "2010-12-06", + "name": "USPHL2", + "port": { + "_reference": "USPHL", + "name": "USPHL3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53998", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC14", + "port": { + "_reference": "USNYC", + "name": "USNYC15" + } + }, + { + "date": "2010-12-06", + "name": "USPIT6", + "port": { + "_reference": "USPIT", + "name": "USPIT7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "53999", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC16", + "port": { + "_reference": "USNYC", + "name": "USNYC17" + } + }, + { + "date": "2010-12-06", + "name": "USSEA8", + "port": { + "_reference": "USSEA", + "name": "USSEA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54000", + "stops": [ + { + "date": "2010-12-02", + "name": "USOAK0", + "port": { + "_reference": "USOAK", + "name": "USOAK1" + } + }, + { + "date": "2010-12-06", + "name": "USDEN0", + "port": { + "_reference": "USDEN", + "name": "USDEN1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54001", + "stops": [ + { + "date": "2010-12-02", + "name": "USOAK2", + "port": { + "_reference": "USOAK", + "name": "USOAK3" + } + }, + { + "date": "2010-12-06", + "name": "USSLC0", + "port": { + "_reference": "USSLC", + "name": "USSLC1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54014", + "stops": [ + { + "date": "2010-12-02", + "name": "USORF0", + "port": { + "_reference": "USORF", + "name": "USORF1" + } + }, + { + "date": "2010-12-06", + "name": "USBOS4", + "port": { + "_reference": "USBOS", + "name": "USBOS5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54029", + "stops": [ + { + "date": "2010-12-02", + "name": "USPHL4", + "port": { + "_reference": "USPHL", + "name": "USPHL5" + } + }, + { + "date": "2010-12-06", + "name": "USBAL8", + "port": { + "_reference": "USBAL", + "name": "USBAL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54030", + "stops": [ + { + "date": "2010-12-02", + "name": "USPHL6", + "port": { + "_reference": "USPHL", + "name": "USPHL7" + } + }, + { + "date": "2010-12-06", + "name": "USBOS6", + "port": { + "_reference": "USBOS", + "name": "USBOS7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54036", + "stops": [ + { + "date": "2010-12-02", + "name": "USPHX0", + "port": { + "_reference": "USPHX", + "name": "USPHX1" + } + }, + { + "date": "2010-12-06", + "name": "USLGB14", + "port": { + "_reference": "USLGB", + "name": "USLGB15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54038", + "stops": [ + { + "date": "2010-12-02", + "name": "USPIT8", + "port": { + "_reference": "USPIT", + "name": "USPIT9" + } + }, + { + "date": "2010-12-06", + "name": "USBOS8", + "port": { + "_reference": "USBOS", + "name": "USBOS9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54047", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAT4", + "port": { + "_reference": "USSAT", + "name": "USSAT5" + } + }, + { + "date": "2010-12-06", + "name": "USHOU28", + "port": { + "_reference": "USHOU", + "name": "USHOU29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54049", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAT6", + "port": { + "_reference": "USSAT", + "name": "USSAT7" + } + }, + { + "date": "2010-12-06", + "name": "USMSY10", + "port": { + "_reference": "USMSY", + "name": "USMSY11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54051", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAV0", + "port": { + "_reference": "USSAV", + "name": "USSAV1" + } + }, + { + "date": "2010-12-06", + "name": "USBNA14", + "port": { + "_reference": "USBNA", + "name": "USBNA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54057", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAV2", + "port": { + "_reference": "USSAV", + "name": "USSAV3" + } + }, + { + "date": "2010-12-06", + "name": "USJAX14", + "port": { + "_reference": "USJAX", + "name": "USJAX15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54058", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAV4", + "port": { + "_reference": "USSAV", + "name": "USSAV5" + } + }, + { + "date": "2010-12-06", + "name": "USMEM16", + "port": { + "_reference": "USMEM", + "name": "USMEM17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54059", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAV6", + "port": { + "_reference": "USSAV", + "name": "USSAV7" + } + }, + { + "date": "2010-12-06", + "name": "USMIA12", + "port": { + "_reference": "USMIA", + "name": "USMIA13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54078", + "stops": [ + { + "date": "2010-12-02", + "name": "USSEA10", + "port": { + "_reference": "USSEA", + "name": "USSEA11" + } + }, + { + "date": "2010-12-06", + "name": "USLGB16", + "port": { + "_reference": "USLGB", + "name": "USLGB17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54081", + "stops": [ + { + "date": "2010-12-02", + "name": "USSEA12", + "port": { + "_reference": "USSEA", + "name": "USSEA13" + } + }, + { + "date": "2010-12-06", + "name": "USTIW0", + "port": { + "_reference": "USTIW", + "name": "USTIW1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54100", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH20", + "port": { + "_reference": "VNHPH", + "name": "VNHPH21" + } + }, + { + "date": "2010-12-08", + "name": "INCCU16", + "port": { + "_reference": "INCCU", + "name": "INCCU17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54102", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH22", + "port": { + "_reference": "VNHPH", + "name": "VNHPH23" + } + }, + { + "date": "2010-12-08", + "name": "INDEL34", + "port": { + "_reference": "INDEL", + "name": "INDEL35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54104", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH24", + "port": { + "_reference": "VNHPH", + "name": "VNHPH25" + } + }, + { + "date": "2010-12-08", + "name": "INMAA26", + "port": { + "_reference": "INMAA", + "name": "INMAA27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54105", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH26", + "port": { + "_reference": "VNHPH", + "name": "VNHPH27" + } + }, + { + "date": "2010-12-08", + "name": "INMUN18", + "port": { + "_reference": "INMUN", + "name": "INMUN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54106", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH28", + "port": { + "_reference": "VNHPH", + "name": "VNHPH29" + } + }, + { + "date": "2010-12-08", + "name": "INNAH16", + "port": { + "_reference": "INNAH", + "name": "INNAH17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54107", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH30", + "port": { + "_reference": "VNHPH", + "name": "VNHPH31" + } + }, + { + "date": "2010-12-08", + "name": "INTUT20", + "port": { + "_reference": "INTUT", + "name": "INTUT21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54113", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH32", + "port": { + "_reference": "VNHPH", + "name": "VNHPH33" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU32", + "port": { + "_reference": "MYPGU", + "name": "MYPGU33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54114", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH34", + "port": { + "_reference": "VNHPH", + "name": "VNHPH35" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG32", + "port": { + "_reference": "MYPKG", + "name": "MYPKG33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54119", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH36", + "port": { + "_reference": "VNHPH", + "name": "VNHPH37" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN30", + "port": { + "_reference": "SGSIN", + "name": "SGSIN31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54124", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH38", + "port": { + "_reference": "VNHPH", + "name": "VNHPH39" + } + }, + { + "date": "2010-12-06", + "name": "VNSGN24", + "port": { + "_reference": "VNSGN", + "name": "VNSGN25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54132", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN26", + "port": { + "_reference": "VNSGN", + "name": "VNSGN27" + } + }, + { + "date": "2010-12-08", + "name": "INDEL36", + "port": { + "_reference": "INDEL", + "name": "INDEL37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54134", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN28", + "port": { + "_reference": "VNSGN", + "name": "VNSGN29" + } + }, + { + "date": "2010-12-08", + "name": "INMAA28", + "port": { + "_reference": "INMAA", + "name": "INMAA29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54135", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN30", + "port": { + "_reference": "VNSGN", + "name": "VNSGN31" + } + }, + { + "date": "2010-12-08", + "name": "INMUN20", + "port": { + "_reference": "INMUN", + "name": "INMUN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54136", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN32", + "port": { + "_reference": "VNSGN", + "name": "VNSGN33" + } + }, + { + "date": "2010-12-08", + "name": "INNAH18", + "port": { + "_reference": "INNAH", + "name": "INNAH19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54137", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN34", + "port": { + "_reference": "VNSGN", + "name": "VNSGN35" + } + }, + { + "date": "2010-12-08", + "name": "INTUT22", + "port": { + "_reference": "INTUT", + "name": "INTUT23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54140", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN36", + "port": { + "_reference": "VNSGN", + "name": "VNSGN37" + } + }, + { + "date": "2010-12-08", + "name": "LKCMB18", + "port": { + "_reference": "LKCMB", + "name": "LKCMB19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54142", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN38", + "port": { + "_reference": "VNSGN", + "name": "VNSGN39" + } + }, + { + "date": "2010-12-08", + "name": "MYPEN24", + "port": { + "_reference": "MYPEN", + "name": "MYPEN25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54143", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN40", + "port": { + "_reference": "VNSGN", + "name": "VNSGN41" + } + }, + { + "date": "2010-12-08", + "name": "MYPGU34", + "port": { + "_reference": "MYPGU", + "name": "MYPGU35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54144", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN42", + "port": { + "_reference": "VNSGN", + "name": "VNSGN43" + } + }, + { + "date": "2010-12-08", + "name": "MYPKG34", + "port": { + "_reference": "MYPKG", + "name": "MYPKG35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54149", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN44", + "port": { + "_reference": "VNSGN", + "name": "VNSGN45" + } + }, + { + "date": "2010-12-08", + "name": "SGSIN32", + "port": { + "_reference": "SGSIN", + "name": "SGSIN33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54166", + "stops": [ + { + "date": "2010-12-02", + "name": "AEDXB10", + "port": { + "_reference": "AEDXB", + "name": "AEDXB11" + } + }, + { + "date": "2010-12-05", + "name": "AEAUH12", + "port": { + "_reference": "AEAUH", + "name": "AEAUH13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54167", + "stops": [ + { + "date": "2010-12-02", + "name": "AEDXB12", + "port": { + "_reference": "AEDXB", + "name": "AEDXB13" + } + }, + { + "date": "2010-12-05", + "name": "AEJEA16", + "port": { + "_reference": "AEJEA", + "name": "AEJEA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54168", + "stops": [ + { + "date": "2010-12-02", + "name": "AEDXB14", + "port": { + "_reference": "AEDXB", + "name": "AEDXB15" + } + }, + { + "date": "2010-12-05", + "name": "AEKLF10", + "port": { + "_reference": "AEKLF", + "name": "AEKLF11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54188", + "stops": [ + { + "date": "2010-12-02", + "name": "AEKLF12", + "port": { + "_reference": "AEKLF", + "name": "AEKLF13" + } + }, + { + "date": "2010-12-05", + "name": "AEAUH14", + "port": { + "_reference": "AEAUH", + "name": "AEAUH15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54189", + "stops": [ + { + "date": "2010-12-02", + "name": "AEKLF14", + "port": { + "_reference": "AEKLF", + "name": "AEKLF15" + } + }, + { + "date": "2010-12-05", + "name": "AEDXB16", + "port": { + "_reference": "AEDXB", + "name": "AEDXB17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54201", + "stops": [ + { + "date": "2010-12-02", + "name": "ARBUE0", + "port": { + "_reference": "ARBUE", + "name": "ARBUE1" + } + }, + { + "date": "2010-12-07", + "name": "BRRIO4", + "port": { + "_reference": "BRRIO", + "name": "BRRIO5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54215", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE38", + "port": { + "_reference": "ATVIE", + "name": "ATVIE39" + } + }, + { + "date": "2010-12-07", + "name": "DEFRA36", + "port": { + "_reference": "DEFRA", + "name": "DEFRA37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54258", + "stops": [ + { + "date": "2010-12-02", + "name": "ATVIE40", + "port": { + "_reference": "ATVIE", + "name": "ATVIE41" + } + }, + { + "date": "2010-12-07", + "name": "ITLIV2", + "port": { + "_reference": "ITLIV", + "name": "ITLIV3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54298", + "stops": [ + { + "date": "2010-12-02", + "name": "AUSYD4", + "port": { + "_reference": "AUSYD", + "name": "AUSYD5" + } + }, + { + "date": "2010-12-05", + "name": "AUBNE4", + "port": { + "_reference": "AUBNE", + "name": "AUBNE5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54299", + "stops": [ + { + "date": "2010-12-02", + "name": "AUSYD6", + "port": { + "_reference": "AUSYD", + "name": "AUSYD7" + } + }, + { + "date": "2010-12-05", + "name": "AUMEL4", + "port": { + "_reference": "AUMEL", + "name": "AUMEL5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54356", + "stops": [ + { + "date": "2010-12-02", + "name": "BEANR52", + "port": { + "_reference": "BEANR", + "name": "BEANR53" + } + }, + { + "date": "2010-12-07", + "name": "ITMIL28", + "port": { + "_reference": "ITMIL", + "name": "ITMIL29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54428", + "stops": [ + { + "date": "2010-12-02", + "name": "BEAVL14", + "port": { + "_reference": "BEAVL", + "name": "BEAVL15" + } + }, + { + "date": "2010-12-07", + "name": "FRSXB27", + "port": { + "_reference": "FRSXB", + "name": "FRSXB28" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54456", + "stops": [ + { + "date": "2010-12-02", + "name": "BEAVL16", + "port": { + "_reference": "BEAVL", + "name": "BEAVL17" + } + }, + { + "date": "2010-12-07", + "name": "LVRIX4", + "port": { + "_reference": "LVRIX", + "name": "LVRIX5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54494", + "stops": [ + { + "date": "2010-12-02", + "name": "BRITJ6", + "port": { + "_reference": "BRITJ", + "name": "BRITJ7" + } + }, + { + "date": "2010-12-05", + "name": "BRRIG4", + "port": { + "_reference": "BRRIG", + "name": "BRRIG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54502", + "stops": [ + { + "date": "2010-12-02", + "name": "BRRIO6", + "port": { + "_reference": "BRRIO", + "name": "BRRIO7" + } + }, + { + "date": "2010-12-05", + "name": "BRITJ8", + "port": { + "_reference": "BRITJ", + "name": "BRITJ9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54503", + "stops": [ + { + "date": "2010-12-02", + "name": "BRRIO8", + "port": { + "_reference": "BRRIO", + "name": "BRRIO9" + } + }, + { + "date": "2010-12-05", + "name": "BRRIG6", + "port": { + "_reference": "BRRIG", + "name": "BRRIG7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54506", + "stops": [ + { + "date": "2010-12-02", + "name": "BRSSZ2", + "port": { + "_reference": "BRSSZ", + "name": "BRSSZ3" + } + }, + { + "date": "2010-12-05", + "name": "BRITJ10", + "port": { + "_reference": "BRITJ", + "name": "BRITJ11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54507", + "stops": [ + { + "date": "2010-12-02", + "name": "BRSSZ4", + "port": { + "_reference": "BRSSZ", + "name": "BRSSZ5" + } + }, + { + "date": "2010-12-05", + "name": "BRRIG8", + "port": { + "_reference": "BRRIG", + "name": "BRRIG9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54509", + "stops": [ + { + "date": "2010-12-02", + "name": "CACAL8", + "port": { + "_reference": "CACAL", + "name": "CACAL9" + } + }, + { + "date": "2010-12-05", + "name": "CAMTR10", + "port": { + "_reference": "CAMTR", + "name": "CAMTR11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54516", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR12", + "port": { + "_reference": "CAMTR", + "name": "CAMTR13" + } + }, + { + "date": "2010-12-05", + "name": "CACAL10", + "port": { + "_reference": "CACAL", + "name": "CACAL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54517", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR14", + "port": { + "_reference": "CAMTR", + "name": "CAMTR15" + } + }, + { + "date": "2010-12-05", + "name": "CAREG0", + "port": { + "_reference": "CAREG", + "name": "CAREG1" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54518", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR16", + "port": { + "_reference": "CAMTR", + "name": "CAMTR17" + } + }, + { + "date": "2010-12-05", + "name": "CASAK4", + "port": { + "_reference": "CASAK", + "name": "CASAK5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54520", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR18", + "port": { + "_reference": "CAMTR", + "name": "CAMTR19" + } + }, + { + "date": "2010-12-05", + "name": "CAVAN16", + "port": { + "_reference": "CAVAN", + "name": "CAVAN17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54521", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR20", + "port": { + "_reference": "CAMTR", + "name": "CAMTR21" + } + }, + { + "date": "2010-12-05", + "name": "CAWNP8", + "port": { + "_reference": "CAWNP", + "name": "CAWNP9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54522", + "stops": [ + { + "date": "2010-12-02", + "name": "CAMTR22", + "port": { + "_reference": "CAMTR", + "name": "CAMTR23" + } + }, + { + "date": "2010-12-05", + "name": "CAYEA6", + "port": { + "_reference": "CAYEA", + "name": "CAYEA7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54525", + "stops": [ + { + "date": "2010-12-02", + "name": "CAREG2", + "port": { + "_reference": "CAREG", + "name": "CAREG3" + } + }, + { + "date": "2010-12-05", + "name": "CASAK6", + "port": { + "_reference": "CASAK", + "name": "CASAK7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54537", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR18", + "port": { + "_reference": "CATOR", + "name": "CATOR19" + } + }, + { + "date": "2010-12-05", + "name": "CACAL12", + "port": { + "_reference": "CACAL", + "name": "CACAL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54538", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR20", + "port": { + "_reference": "CATOR", + "name": "CATOR21" + } + }, + { + "date": "2010-12-05", + "name": "CAMTR24", + "port": { + "_reference": "CAMTR", + "name": "CAMTR25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54540", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR22", + "port": { + "_reference": "CATOR", + "name": "CATOR23" + } + }, + { + "date": "2010-12-05", + "name": "CASAK8", + "port": { + "_reference": "CASAK", + "name": "CASAK9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54541", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR24", + "port": { + "_reference": "CATOR", + "name": "CATOR25" + } + }, + { + "date": "2010-12-05", + "name": "CAVAN18", + "port": { + "_reference": "CAVAN", + "name": "CAVAN19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54542", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR26", + "port": { + "_reference": "CATOR", + "name": "CATOR27" + } + }, + { + "date": "2010-12-05", + "name": "CAWNP10", + "port": { + "_reference": "CAWNP", + "name": "CAWNP11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54543", + "stops": [ + { + "date": "2010-12-02", + "name": "CATOR28", + "port": { + "_reference": "CATOR", + "name": "CATOR29" + } + }, + { + "date": "2010-12-05", + "name": "CAYEA8", + "port": { + "_reference": "CAYEA", + "name": "CAYEA9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54552", + "stops": [ + { + "date": "2010-12-02", + "name": "CAVAN20", + "port": { + "_reference": "CAVAN", + "name": "CAVAN21" + } + }, + { + "date": "2010-12-05", + "name": "CACAL14", + "port": { + "_reference": "CACAL", + "name": "CACAL15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54555", + "stops": [ + { + "date": "2010-12-02", + "name": "CAVAN22", + "port": { + "_reference": "CAVAN", + "name": "CAVAN23" + } + }, + { + "date": "2010-12-05", + "name": "CASAK10", + "port": { + "_reference": "CASAK", + "name": "CASAK11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54557", + "stops": [ + { + "date": "2010-12-02", + "name": "CAVAN24", + "port": { + "_reference": "CAVAN", + "name": "CAVAN25" + } + }, + { + "date": "2010-12-05", + "name": "CAWNP12", + "port": { + "_reference": "CAWNP", + "name": "CAWNP13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54558", + "stops": [ + { + "date": "2010-12-02", + "name": "CAVAN26", + "port": { + "_reference": "CAVAN", + "name": "CAVAN27" + } + }, + { + "date": "2010-12-05", + "name": "CAYEA10", + "port": { + "_reference": "CAYEA", + "name": "CAYEA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54612", + "stops": [ + { + "date": "2010-12-02", + "name": "CHBSL10", + "port": { + "_reference": "CHBSL", + "name": "CHBSL11" + } + }, + { + "date": "2010-12-07", + "name": "FIKTK64", + "port": { + "_reference": "FIKTK", + "name": "FIKTK65" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54647", + "stops": [ + { + "date": "2010-12-02", + "name": "CHBSL12", + "port": { + "_reference": "CHBSL", + "name": "CHBSL13" + } + }, + { + "date": "2010-12-07", + "name": "MACAS6", + "port": { + "_reference": "MACAS", + "name": "MACAS7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54654", + "stops": [ + { + "date": "2010-12-02", + "name": "CHBSL14", + "port": { + "_reference": "CHBSL", + "name": "CHBSL15" + } + }, + { + "date": "2010-12-07", + "name": "PLGDN8", + "port": { + "_reference": "PLGDN", + "name": "PLGDN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54697", + "stops": [ + { + "date": "2010-12-02", + "name": "CHZRH8", + "port": { + "_reference": "CHZRH", + "name": "CHZRH9" + } + }, + { + "date": "2010-12-07", + "name": "ESBCN24", + "port": { + "_reference": "ESBCN", + "name": "ESBCN25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54709", + "stops": [ + { + "date": "2010-12-02", + "name": "CHZRH10", + "port": { + "_reference": "CHZRH", + "name": "CHZRH11" + } + }, + { + "date": "2010-12-07", + "name": "FRSXB29", + "port": { + "_reference": "FRSXB", + "name": "FRSXB30" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54714", + "stops": [ + { + "date": "2010-12-02", + "name": "CHZRH12", + "port": { + "_reference": "CHZRH", + "name": "CHZRH13" + } + }, + { + "date": "2010-12-07", + "name": "GBLBA24", + "port": { + "_reference": "GBLBA", + "name": "GBLBA25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54751", + "stops": [ + { + "date": "2010-12-02", + "name": "CHZRH14", + "port": { + "_reference": "CHZRH", + "name": "CHZRH15" + } + }, + { + "date": "2010-12-07", + "name": "RULED74", + "port": { + "_reference": "RULED", + "name": "RULED75" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54763", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG14", + "port": { + "_reference": "CNCHG", + "name": "CNCHG15" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS20", + "port": { + "_reference": "CNCHS", + "name": "CNCHS21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54764", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG16", + "port": { + "_reference": "CNCHG", + "name": "CNCHG17" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN22", + "port": { + "_reference": "CNCWN", + "name": "CNCWN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54770", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG18", + "port": { + "_reference": "CNCHG", + "name": "CNCHG19" + } + }, + { + "date": "2010-12-05", + "name": "CNNAH14", + "port": { + "_reference": "CNNAH", + "name": "CNNAH15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54772", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG20", + "port": { + "_reference": "CNCHG", + "name": "CNCHG21" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG24", + "port": { + "_reference": "CNNKG", + "name": "CNNKG25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54773", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG22", + "port": { + "_reference": "CNCHG", + "name": "CNCHG23" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG32", + "port": { + "_reference": "CNNTG", + "name": "CNNTG33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54777", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG24", + "port": { + "_reference": "CNCHG", + "name": "CNCHG25" + } + }, + { + "date": "2010-12-05", + "name": "CNTAO24", + "port": { + "_reference": "CNTAO", + "name": "CNTAO25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54778", + "stops": [ + { + "date": "2010-12-02", + "name": "CNCHG26", + "port": { + "_reference": "CNCHG", + "name": "CNCHG27" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ26", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54835", + "stops": [ + { + "date": "2010-12-02", + "name": "CNDLC16", + "port": { + "_reference": "CNDLC", + "name": "CNDLC17" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG26", + "port": { + "_reference": "CNNKG", + "name": "CNNKG27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54848", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC22", + "port": { + "_reference": "CNFOC", + "name": "CNFOC23" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS22", + "port": { + "_reference": "CNCHS", + "name": "CNCHS23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54849", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC24", + "port": { + "_reference": "CNFOC", + "name": "CNFOC25" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN24", + "port": { + "_reference": "CNCWN", + "name": "CNCWN25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54850", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC26", + "port": { + "_reference": "CNFOC", + "name": "CNFOC27" + } + }, + { + "date": "2010-12-05", + "name": "CNDLC18", + "port": { + "_reference": "CNDLC", + "name": "CNDLC19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54854", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC28", + "port": { + "_reference": "CNFOC", + "name": "CNFOC29" + } + }, + { + "date": "2010-12-05", + "name": "CNNAH16", + "port": { + "_reference": "CNNAH", + "name": "CNNAH17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54856", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC30", + "port": { + "_reference": "CNFOC", + "name": "CNFOC31" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG28", + "port": { + "_reference": "CNNKG", + "name": "CNNKG29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54857", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC32", + "port": { + "_reference": "CNFOC", + "name": "CNFOC33" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG34", + "port": { + "_reference": "CNNTG", + "name": "CNNTG35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54858", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC34", + "port": { + "_reference": "CNFOC", + "name": "CNFOC35" + } + }, + { + "date": "2010-12-05", + "name": "CNSHA14", + "port": { + "_reference": "CNSHA", + "name": "CNSHA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54862", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC36", + "port": { + "_reference": "CNFOC", + "name": "CNFOC37" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ28", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54863", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC38", + "port": { + "_reference": "CNFOC", + "name": "CNFOC39" + } + }, + { + "date": "2010-12-05", + "name": "CNWUH24", + "port": { + "_reference": "CNWUH", + "name": "CNWUH25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54864", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC40", + "port": { + "_reference": "CNFOC", + "name": "CNFOC41" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG18", + "port": { + "_reference": "CNXGG", + "name": "CNXGG19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54865", + "stops": [ + { + "date": "2010-12-02", + "name": "CNFOC42", + "port": { + "_reference": "CNFOC", + "name": "CNFOC43" + } + }, + { + "date": "2010-12-05", + "name": "CNXMN20", + "port": { + "_reference": "CNXMN", + "name": "CNXMN21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54869", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG14", + "port": { + "_reference": "CNHKG", + "name": "CNHKG15" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS24", + "port": { + "_reference": "CNCHS", + "name": "CNCHS25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54870", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG16", + "port": { + "_reference": "CNHKG", + "name": "CNHKG17" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN26", + "port": { + "_reference": "CNCWN", + "name": "CNCWN27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54871", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG18", + "port": { + "_reference": "CNHKG", + "name": "CNHKG19" + } + }, + { + "date": "2010-12-05", + "name": "CNDLC20", + "port": { + "_reference": "CNDLC", + "name": "CNDLC21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54875", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG20", + "port": { + "_reference": "CNHKG", + "name": "CNHKG21" + } + }, + { + "date": "2010-12-05", + "name": "CNNAH18", + "port": { + "_reference": "CNNAH", + "name": "CNNAH19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54877", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG22", + "port": { + "_reference": "CNHKG", + "name": "CNHKG23" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG30", + "port": { + "_reference": "CNNKG", + "name": "CNNKG31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54878", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG24", + "port": { + "_reference": "CNHKG", + "name": "CNHKG25" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG36", + "port": { + "_reference": "CNNTG", + "name": "CNNTG37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54879", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG26", + "port": { + "_reference": "CNHKG", + "name": "CNHKG27" + } + }, + { + "date": "2010-12-05", + "name": "CNSHA16", + "port": { + "_reference": "CNSHA", + "name": "CNSHA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54882", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG28", + "port": { + "_reference": "CNHKG", + "name": "CNHKG29" + } + }, + { + "date": "2010-12-05", + "name": "CNTAO26", + "port": { + "_reference": "CNTAO", + "name": "CNTAO27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54883", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG30", + "port": { + "_reference": "CNHKG", + "name": "CNHKG31" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ30", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54884", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG32", + "port": { + "_reference": "CNHKG", + "name": "CNHKG33" + } + }, + { + "date": "2010-12-05", + "name": "CNWUH26", + "port": { + "_reference": "CNWUH", + "name": "CNWUH27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54885", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHKG34", + "port": { + "_reference": "CNHKG", + "name": "CNHKG35" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG20", + "port": { + "_reference": "CNXGG", + "name": "CNXGG21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54890", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA26", + "port": { + "_reference": "CNHUA", + "name": "CNHUA27" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS26", + "port": { + "_reference": "CNCHS", + "name": "CNCHS27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54891", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA28", + "port": { + "_reference": "CNHUA", + "name": "CNHUA29" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN28", + "port": { + "_reference": "CNCWN", + "name": "CNCWN29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54897", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA30", + "port": { + "_reference": "CNHUA", + "name": "CNHUA31" + } + }, + { + "date": "2010-12-05", + "name": "CNNBO16", + "port": { + "_reference": "CNNBO", + "name": "CNNBO17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54898", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA32", + "port": { + "_reference": "CNHUA", + "name": "CNHUA33" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG32", + "port": { + "_reference": "CNNKG", + "name": "CNNKG33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54899", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA34", + "port": { + "_reference": "CNHUA", + "name": "CNHUA35" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG38", + "port": { + "_reference": "CNNTG", + "name": "CNNTG39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54900", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA36", + "port": { + "_reference": "CNHUA", + "name": "CNHUA37" + } + }, + { + "date": "2010-12-05", + "name": "CNSHA18", + "port": { + "_reference": "CNSHA", + "name": "CNSHA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54904", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA38", + "port": { + "_reference": "CNHUA", + "name": "CNHUA39" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ32", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54905", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA40", + "port": { + "_reference": "CNHUA", + "name": "CNHUA41" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG22", + "port": { + "_reference": "CNXGG", + "name": "CNXGG23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54907", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA42", + "port": { + "_reference": "CNHUA", + "name": "CNHUA43" + } + }, + { + "date": "2010-12-05", + "name": "CNYIT16", + "port": { + "_reference": "CNYIT", + "name": "CNYIT17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54908", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA44", + "port": { + "_reference": "CNHUA", + "name": "CNHUA45" + } + }, + { + "date": "2010-12-05", + "name": "CNYZO16", + "port": { + "_reference": "CNYZO", + "name": "CNYZO17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54909", + "stops": [ + { + "date": "2010-12-02", + "name": "CNHUA46", + "port": { + "_reference": "CNHUA", + "name": "CNHUA47" + } + }, + { + "date": "2010-12-05", + "name": "CNZJG30", + "port": { + "_reference": "CNZJG", + "name": "CNZJG31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54934", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH20", + "port": { + "_reference": "CNNAH", + "name": "CNNAH21" + } + }, + { + "date": "2010-12-05", + "name": "CNDLC22", + "port": { + "_reference": "CNDLC", + "name": "CNDLC23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54936", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH22", + "port": { + "_reference": "CNNAH", + "name": "CNNAH23" + } + }, + { + "date": "2010-12-05", + "name": "CNHKG36", + "port": { + "_reference": "CNHKG", + "name": "CNHKG37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54940", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH24", + "port": { + "_reference": "CNNAH", + "name": "CNNAH25" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG34", + "port": { + "_reference": "CNNKG", + "name": "CNNKG35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54945", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH26", + "port": { + "_reference": "CNNAH", + "name": "CNNAH27" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ34", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54948", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNAH28", + "port": { + "_reference": "CNNAH", + "name": "CNNAH29" + } + }, + { + "date": "2010-12-05", + "name": "CNXMN22", + "port": { + "_reference": "CNXMN", + "name": "CNXMN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54953", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO18", + "port": { + "_reference": "CNNBO", + "name": "CNNBO19" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS28", + "port": { + "_reference": "CNCHS", + "name": "CNCHS29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54954", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO20", + "port": { + "_reference": "CNNBO", + "name": "CNNBO21" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN30", + "port": { + "_reference": "CNCWN", + "name": "CNCWN31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54955", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO22", + "port": { + "_reference": "CNNBO", + "name": "CNNBO23" + } + }, + { + "date": "2010-12-05", + "name": "CNDLC24", + "port": { + "_reference": "CNDLC", + "name": "CNDLC25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54960", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO24", + "port": { + "_reference": "CNNBO", + "name": "CNNBO25" + } + }, + { + "date": "2010-12-05", + "name": "CNNAH30", + "port": { + "_reference": "CNNAH", + "name": "CNNAH31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54961", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO26", + "port": { + "_reference": "CNNBO", + "name": "CNNBO27" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG40", + "port": { + "_reference": "CNNTG", + "name": "CNNTG41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54965", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO28", + "port": { + "_reference": "CNNBO", + "name": "CNNBO29" + } + }, + { + "date": "2010-12-05", + "name": "CNTAO28", + "port": { + "_reference": "CNTAO", + "name": "CNTAO29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54966", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO30", + "port": { + "_reference": "CNNBO", + "name": "CNNBO31" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ36", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54967", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO32", + "port": { + "_reference": "CNNBO", + "name": "CNNBO33" + } + }, + { + "date": "2010-12-05", + "name": "CNWUH28", + "port": { + "_reference": "CNWUH", + "name": "CNWUH29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54968", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNBO34", + "port": { + "_reference": "CNNBO", + "name": "CNNBO35" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG24", + "port": { + "_reference": "CNXGG", + "name": "CNXGG25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "54995", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG42", + "port": { + "_reference": "CNNTG", + "name": "CNNTG43" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN32", + "port": { + "_reference": "CNCWN", + "name": "CNCWN33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55003", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG44", + "port": { + "_reference": "CNNTG", + "name": "CNNTG45" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG36", + "port": { + "_reference": "CNNKG", + "name": "CNNKG37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55005", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG46", + "port": { + "_reference": "CNNTG", + "name": "CNNTG47" + } + }, + { + "date": "2010-12-05", + "name": "CNSXC20", + "port": { + "_reference": "CNSXC", + "name": "CNSXC21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55008", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG48", + "port": { + "_reference": "CNNTG", + "name": "CNNTG49" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ38", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55010", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG50", + "port": { + "_reference": "CNNTG", + "name": "CNNTG51" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG26", + "port": { + "_reference": "CNXGG", + "name": "CNXGG27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55013", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG52", + "port": { + "_reference": "CNNTG", + "name": "CNNTG53" + } + }, + { + "date": "2010-12-05", + "name": "CNYZO18", + "port": { + "_reference": "CNYZO", + "name": "CNYZO19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55014", + "stops": [ + { + "date": "2010-12-02", + "name": "CNNTG54", + "port": { + "_reference": "CNNTG", + "name": "CNNTG55" + } + }, + { + "date": "2010-12-05", + "name": "CNZJG32", + "port": { + "_reference": "CNZJG", + "name": "CNZJG33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55037", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC22", + "port": { + "_reference": "CNSXC", + "name": "CNSXC23" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS30", + "port": { + "_reference": "CNCHS", + "name": "CNCHS31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55038", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC24", + "port": { + "_reference": "CNSXC", + "name": "CNSXC25" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN34", + "port": { + "_reference": "CNCWN", + "name": "CNCWN35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55039", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC26", + "port": { + "_reference": "CNSXC", + "name": "CNSXC27" + } + }, + { + "date": "2010-12-05", + "name": "CNFOC44", + "port": { + "_reference": "CNFOC", + "name": "CNFOC45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55045", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC28", + "port": { + "_reference": "CNSXC", + "name": "CNSXC29" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG38", + "port": { + "_reference": "CNNKG", + "name": "CNNKG39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55046", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC30", + "port": { + "_reference": "CNSXC", + "name": "CNSXC31" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG56", + "port": { + "_reference": "CNNTG", + "name": "CNNTG57" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55047", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC32", + "port": { + "_reference": "CNSXC", + "name": "CNSXC33" + } + }, + { + "date": "2010-12-05", + "name": "CNSHA20", + "port": { + "_reference": "CNSHA", + "name": "CNSHA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55049", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC34", + "port": { + "_reference": "CNSXC", + "name": "CNSXC35" + } + }, + { + "date": "2010-12-05", + "name": "CNTAO30", + "port": { + "_reference": "CNTAO", + "name": "CNTAO31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55051", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC36", + "port": { + "_reference": "CNSXC", + "name": "CNSXC37" + } + }, + { + "date": "2010-12-05", + "name": "CNWUH30", + "port": { + "_reference": "CNWUH", + "name": "CNWUH31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55052", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC38", + "port": { + "_reference": "CNSXC", + "name": "CNSXC39" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG28", + "port": { + "_reference": "CNXGG", + "name": "CNXGG29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55054", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC40", + "port": { + "_reference": "CNSXC", + "name": "CNSXC41" + } + }, + { + "date": "2010-12-05", + "name": "CNYIT18", + "port": { + "_reference": "CNYIT", + "name": "CNYIT19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55055", + "stops": [ + { + "date": "2010-12-02", + "name": "CNSXC42", + "port": { + "_reference": "CNSXC", + "name": "CNSXC43" + } + }, + { + "date": "2010-12-05", + "name": "CNYZO20", + "port": { + "_reference": "CNYZO", + "name": "CNYZO21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55058", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC19", + "port": { + "_reference": "CNTAC", + "name": "CNTAC20" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS32", + "port": { + "_reference": "CNCHS", + "name": "CNCHS33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55059", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC21", + "port": { + "_reference": "CNTAC", + "name": "CNTAC22" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN36", + "port": { + "_reference": "CNCWN", + "name": "CNCWN37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55067", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC23", + "port": { + "_reference": "CNTAC", + "name": "CNTAC24" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG40", + "port": { + "_reference": "CNNKG", + "name": "CNNKG41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55068", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC25", + "port": { + "_reference": "CNTAC", + "name": "CNTAC26" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG58", + "port": { + "_reference": "CNNTG", + "name": "CNNTG59" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55072", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC27", + "port": { + "_reference": "CNTAC", + "name": "CNTAC28" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ40", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55074", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC29", + "port": { + "_reference": "CNTAC", + "name": "CNTAC30" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG30", + "port": { + "_reference": "CNXGG", + "name": "CNXGG31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55075", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC31", + "port": { + "_reference": "CNTAC", + "name": "CNTAC32" + } + }, + { + "date": "2010-12-05", + "name": "CNYIT20", + "port": { + "_reference": "CNYIT", + "name": "CNYIT21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55076", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC33", + "port": { + "_reference": "CNTAC", + "name": "CNTAC34" + } + }, + { + "date": "2010-12-05", + "name": "CNYZO22", + "port": { + "_reference": "CNYZO", + "name": "CNYZO23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55077", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAC35", + "port": { + "_reference": "CNTAC", + "name": "CNTAC36" + } + }, + { + "date": "2010-12-05", + "name": "CNZJG34", + "port": { + "_reference": "CNZJG", + "name": "CNZJG35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55082", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAO32", + "port": { + "_reference": "CNTAO", + "name": "CNTAO33" + } + }, + { + "date": "2010-12-05", + "name": "CNHKG38", + "port": { + "_reference": "CNHKG", + "name": "CNHKG39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55087", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAO34", + "port": { + "_reference": "CNTAO", + "name": "CNTAO35" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG42", + "port": { + "_reference": "CNNKG", + "name": "CNNKG43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55098", + "stops": [ + { + "date": "2010-12-02", + "name": "CNTAO36", + "port": { + "_reference": "CNTAO", + "name": "CNTAO37" + } + }, + { + "date": "2010-12-05", + "name": "CNZJG36", + "port": { + "_reference": "CNZJG", + "name": "CNZJG37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55122", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH32", + "port": { + "_reference": "CNWUH", + "name": "CNWUH33" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN38", + "port": { + "_reference": "CNCWN", + "name": "CNCWN39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55130", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH34", + "port": { + "_reference": "CNWUH", + "name": "CNWUH35" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG44", + "port": { + "_reference": "CNNKG", + "name": "CNNKG45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55131", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH36", + "port": { + "_reference": "CNWUH", + "name": "CNWUH37" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG60", + "port": { + "_reference": "CNNTG", + "name": "CNNTG61" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55135", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH38", + "port": { + "_reference": "CNWUH", + "name": "CNWUH39" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ42", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55136", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH40", + "port": { + "_reference": "CNWUH", + "name": "CNWUH41" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG32", + "port": { + "_reference": "CNXGG", + "name": "CNXGG33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55138", + "stops": [ + { + "date": "2010-12-02", + "name": "CNWUH42", + "port": { + "_reference": "CNWUH", + "name": "CNWUH43" + } + }, + { + "date": "2010-12-05", + "name": "CNYIT22", + "port": { + "_reference": "CNYIT", + "name": "CNYIT23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55144", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXGG34", + "port": { + "_reference": "CNXGG", + "name": "CNXGG35" + } + }, + { + "date": "2010-12-05", + "name": "CNDLC26", + "port": { + "_reference": "CNDLC", + "name": "CNDLC27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55155", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXGG36", + "port": { + "_reference": "CNXGG", + "name": "CNXGG37" + } + }, + { + "date": "2010-12-05", + "name": "CNTAO38", + "port": { + "_reference": "CNTAO", + "name": "CNTAO39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55163", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN24", + "port": { + "_reference": "CNXMN", + "name": "CNXMN25" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS34", + "port": { + "_reference": "CNCHS", + "name": "CNCHS35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55164", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN26", + "port": { + "_reference": "CNXMN", + "name": "CNXMN27" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN40", + "port": { + "_reference": "CNCWN", + "name": "CNCWN41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55173", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN28", + "port": { + "_reference": "CNXMN", + "name": "CNXMN29" + } + }, + { + "date": "2010-12-05", + "name": "CNSHA22", + "port": { + "_reference": "CNSHA", + "name": "CNSHA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55177", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN30", + "port": { + "_reference": "CNXMN", + "name": "CNXMN31" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ44", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55178", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN32", + "port": { + "_reference": "CNXMN", + "name": "CNXMN33" + } + }, + { + "date": "2010-12-05", + "name": "CNWUH44", + "port": { + "_reference": "CNWUH", + "name": "CNWUH45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55179", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN34", + "port": { + "_reference": "CNXMN", + "name": "CNXMN35" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG38", + "port": { + "_reference": "CNXGG", + "name": "CNXGG39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55181", + "stops": [ + { + "date": "2010-12-02", + "name": "CNXMN36", + "port": { + "_reference": "CNXMN", + "name": "CNXMN37" + } + }, + { + "date": "2010-12-05", + "name": "CNYZO24", + "port": { + "_reference": "CNYZO", + "name": "CNYZO25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55192", + "stops": [ + { + "date": "2010-12-02", + "name": "CNYIT24", + "port": { + "_reference": "CNYIT", + "name": "CNYIT25" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG46", + "port": { + "_reference": "CNNKG", + "name": "CNNKG47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55203", + "stops": [ + { + "date": "2010-12-02", + "name": "CNYIT26", + "port": { + "_reference": "CNYIT", + "name": "CNYIT27" + } + }, + { + "date": "2010-12-05", + "name": "CNZJG38", + "port": { + "_reference": "CNZJG", + "name": "CNZJG39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55213", + "stops": [ + { + "date": "2010-12-02", + "name": "CNYZO26", + "port": { + "_reference": "CNYZO", + "name": "CNYZO27" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG48", + "port": { + "_reference": "CNNKG", + "name": "CNNKG49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55223", + "stops": [ + { + "date": "2010-12-02", + "name": "CNYZO28", + "port": { + "_reference": "CNYZO", + "name": "CNYZO29" + } + }, + { + "date": "2010-12-05", + "name": "CNYIT28", + "port": { + "_reference": "CNYIT", + "name": "CNYIT29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55226", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG40", + "port": { + "_reference": "CNZJG", + "name": "CNZJG41" + } + }, + { + "date": "2010-12-05", + "name": "CNCHS36", + "port": { + "_reference": "CNCHS", + "name": "CNCHS37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55227", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG42", + "port": { + "_reference": "CNZJG", + "name": "CNZJG43" + } + }, + { + "date": "2010-12-05", + "name": "CNCWN42", + "port": { + "_reference": "CNCWN", + "name": "CNCWN43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55228", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG44", + "port": { + "_reference": "CNZJG", + "name": "CNZJG45" + } + }, + { + "date": "2010-12-05", + "name": "CNDLC28", + "port": { + "_reference": "CNDLC", + "name": "CNDLC29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55232", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG46", + "port": { + "_reference": "CNZJG", + "name": "CNZJG47" + } + }, + { + "date": "2010-12-05", + "name": "CNNAH32", + "port": { + "_reference": "CNNAH", + "name": "CNNAH33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55233", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG48", + "port": { + "_reference": "CNZJG", + "name": "CNZJG49" + } + }, + { + "date": "2010-12-05", + "name": "CNNBO36", + "port": { + "_reference": "CNNBO", + "name": "CNNBO37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55234", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG50", + "port": { + "_reference": "CNZJG", + "name": "CNZJG51" + } + }, + { + "date": "2010-12-05", + "name": "CNNKG50", + "port": { + "_reference": "CNNKG", + "name": "CNNKG51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55235", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG52", + "port": { + "_reference": "CNZJG", + "name": "CNZJG53" + } + }, + { + "date": "2010-12-05", + "name": "CNNTG62", + "port": { + "_reference": "CNNTG", + "name": "CNNTG63" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55236", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG54", + "port": { + "_reference": "CNZJG", + "name": "CNZJG55" + } + }, + { + "date": "2010-12-05", + "name": "CNSHA24", + "port": { + "_reference": "CNSHA", + "name": "CNSHA25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55239", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG56", + "port": { + "_reference": "CNZJG", + "name": "CNZJG57" + } + }, + { + "date": "2010-12-05", + "name": "CNTAO40", + "port": { + "_reference": "CNTAO", + "name": "CNTAO41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55240", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG58", + "port": { + "_reference": "CNZJG", + "name": "CNZJG59" + } + }, + { + "date": "2010-12-05", + "name": "CNTAZ46", + "port": { + "_reference": "CNTAZ", + "name": "CNTAZ47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55241", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG60", + "port": { + "_reference": "CNZJG", + "name": "CNZJG61" + } + }, + { + "date": "2010-12-05", + "name": "CNWUH46", + "port": { + "_reference": "CNWUH", + "name": "CNWUH47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55242", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG62", + "port": { + "_reference": "CNZJG", + "name": "CNZJG63" + } + }, + { + "date": "2010-12-05", + "name": "CNXGG40", + "port": { + "_reference": "CNXGG", + "name": "CNXGG41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55245", + "stops": [ + { + "date": "2010-12-02", + "name": "CNZJG64", + "port": { + "_reference": "CNZJG", + "name": "CNZJG65" + } + }, + { + "date": "2010-12-05", + "name": "CNYZO30", + "port": { + "_reference": "CNYZO", + "name": "CNYZO31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55250", + "stops": [ + { + "date": "2010-12-02", + "name": "CYLMS12", + "port": { + "_reference": "CYLMS", + "name": "CYLMS13" + } + }, + { + "date": "2010-12-07", + "name": "CHZRH16", + "port": { + "_reference": "CHZRH", + "name": "CHZRH17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55318", + "stops": [ + { + "date": "2010-12-02", + "name": "CYLMS14", + "port": { + "_reference": "CYLMS", + "name": "CYLMS15" + } + }, + { + "date": "2010-12-07", + "name": "NOOSL70", + "port": { + "_reference": "NOOSL", + "name": "NOOSL71" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55343", + "stops": [ + { + "date": "2010-12-02", + "name": "CZPRG30", + "port": { + "_reference": "CZPRG", + "name": "CZPRG31" + } + }, + { + "date": "2010-12-05", + "name": "CZZLN40", + "port": { + "_reference": "CZZLN", + "name": "CZZLN41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55348", + "stops": [ + { + "date": "2010-12-02", + "name": "CZPRG32", + "port": { + "_reference": "CZPRG", + "name": "CZPRG33" + } + }, + { + "date": "2010-12-07", + "name": "DEDUS34", + "port": { + "_reference": "DEDUS", + "name": "DEDUS35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55400", + "stops": [ + { + "date": "2010-12-02", + "name": "CZPRG34", + "port": { + "_reference": "CZPRG", + "name": "CZPRG35" + } + }, + { + "date": "2010-12-07", + "name": "LBBEY10", + "port": { + "_reference": "LBBEY", + "name": "LBBEY11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55473", + "stops": [ + { + "date": "2010-12-02", + "name": "CZZLN42", + "port": { + "_reference": "CZZLN", + "name": "CZZLN43" + } + }, + { + "date": "2010-12-07", + "name": "GBTHP14", + "port": { + "_reference": "GBTHP", + "name": "GBTHP15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55570", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBER28", + "port": { + "_reference": "DEBER", + "name": "DEBER29" + } + }, + { + "date": "2010-12-07", + "name": "IEORK44", + "port": { + "_reference": "IEORK", + "name": "IEORK45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55571", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBER30", + "port": { + "_reference": "DEBER", + "name": "DEBER31" + } + }, + { + "date": "2010-12-07", + "name": "ITAOI12", + "port": { + "_reference": "ITAOI", + "name": "ITAOI13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55579", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBER32", + "port": { + "_reference": "DEBER", + "name": "DEBER33" + } + }, + { + "date": "2010-12-07", + "name": "ITSAL8", + "port": { + "_reference": "ITSAL", + "name": "ITSAL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55593", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBER34", + "port": { + "_reference": "DEBER", + "name": "DEBER35" + } + }, + { + "date": "2010-12-07", + "name": "PLGDY52", + "port": { + "_reference": "PLGDY", + "name": "PLGDY53" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55627", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBFE30", + "port": { + "_reference": "DEBFE", + "name": "DEBFE31" + } + }, + { + "date": "2010-12-05", + "name": "DESTR46", + "port": { + "_reference": "DESTR", + "name": "DESTR47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55659", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBFE32", + "port": { + "_reference": "DEBFE", + "name": "DEBFE33" + } + }, + { + "date": "2010-12-07", + "name": "HUBUD28", + "port": { + "_reference": "HUBUD", + "name": "HUBUD29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55660", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBFE34", + "port": { + "_reference": "DEBFE", + "name": "DEBFE35" + } + }, + { + "date": "2010-12-07", + "name": "IEDUB40", + "port": { + "_reference": "IEDUB", + "name": "IEDUB41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55662", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBFE36", + "port": { + "_reference": "DEBFE", + "name": "DEBFE37" + } + }, + { + "date": "2010-12-07", + "name": "ITAOI14", + "port": { + "_reference": "ITAOI", + "name": "ITAOI15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55696", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBFE38", + "port": { + "_reference": "DEBFE", + "name": "DEBFE39" + } + }, + { + "date": "2010-12-07", + "name": "SYTTS6", + "port": { + "_reference": "SYTTS", + "name": "SYTTS7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55709", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE22", + "port": { + "_reference": "DEBRE", + "name": "DEBRE23" + } + }, + { + "date": "2010-12-05", + "name": "DEBER36", + "port": { + "_reference": "DEBER", + "name": "DEBER37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55710", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE24", + "port": { + "_reference": "DEBRE", + "name": "DEBRE25" + } + }, + { + "date": "2010-12-05", + "name": "DEBFE40", + "port": { + "_reference": "DEBFE", + "name": "DEBFE41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55711", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE26", + "port": { + "_reference": "DEBRE", + "name": "DEBRE27" + } + }, + { + "date": "2010-12-05", + "name": "DEBRV68", + "port": { + "_reference": "DEBRV", + "name": "DEBRV69" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55712", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE28", + "port": { + "_reference": "DEBRE", + "name": "DEBRE29" + } + }, + { + "date": "2010-12-05", + "name": "DEDUS36", + "port": { + "_reference": "DEDUS", + "name": "DEDUS37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55713", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE30", + "port": { + "_reference": "DEBRE", + "name": "DEBRE31" + } + }, + { + "date": "2010-12-05", + "name": "DEFRA38", + "port": { + "_reference": "DEFRA", + "name": "DEFRA39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55714", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE32", + "port": { + "_reference": "DEBRE", + "name": "DEBRE33" + } + }, + { + "date": "2010-12-05", + "name": "DEGER34", + "port": { + "_reference": "DEGER", + "name": "DEGER35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55716", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE34", + "port": { + "_reference": "DEBRE", + "name": "DEBRE35" + } + }, + { + "date": "2010-12-05", + "name": "DEMUC42", + "port": { + "_reference": "DEMUC", + "name": "DEMUC43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55717", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE36", + "port": { + "_reference": "DEBRE", + "name": "DEBRE37" + } + }, + { + "date": "2010-12-05", + "name": "DENUE32", + "port": { + "_reference": "DENUE", + "name": "DENUE33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55718", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE38", + "port": { + "_reference": "DEBRE", + "name": "DEBRE39" + } + }, + { + "date": "2010-12-05", + "name": "DESTR48", + "port": { + "_reference": "DESTR", + "name": "DESTR49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55745", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE40", + "port": { + "_reference": "DEBRE", + "name": "DEBRE41" + } + }, + { + "date": "2010-12-07", + "name": "GBMAN26", + "port": { + "_reference": "GBMAN", + "name": "GBMAN27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55755", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE42", + "port": { + "_reference": "DEBRE", + "name": "DEBRE43" + } + }, + { + "date": "2010-12-07", + "name": "ITGOA18", + "port": { + "_reference": "ITGOA", + "name": "ITGOA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55788", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRE44", + "port": { + "_reference": "DEBRE", + "name": "DEBRE45" + } + }, + { + "date": "2010-12-07", + "name": "TNTUN8", + "port": { + "_reference": "TNTUN", + "name": "TNTUN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55836", + "stops": [ + { + "date": "2010-12-02", + "name": "DEBRV70", + "port": { + "_reference": "DEBRV", + "name": "DEBRV71" + } + }, + { + "date": "2010-12-07", + "name": "GBMAN28", + "port": { + "_reference": "GBMAN", + "name": "GBMAN29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55939", + "stops": [ + { + "date": "2010-12-02", + "name": "DEDUS38", + "port": { + "_reference": "DEDUS", + "name": "DEDUS39" + } + }, + { + "date": "2010-12-07", + "name": "ITMIL30", + "port": { + "_reference": "ITMIL", + "name": "ITMIL31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "55983", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA40", + "port": { + "_reference": "DEFRA", + "name": "DEFRA41" + } + }, + { + "date": "2010-12-05", + "name": "DEBFE42", + "port": { + "_reference": "DEBFE", + "name": "DEBFE43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56006", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA42", + "port": { + "_reference": "DEFRA", + "name": "DEFRA43" + } + }, + { + "date": "2010-12-07", + "name": "FRBOD34", + "port": { + "_reference": "FRBOD", + "name": "FRBOD35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56046", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA44", + "port": { + "_reference": "DEFRA", + "name": "DEFRA45" + } + }, + { + "date": "2010-12-07", + "name": "NOOSL72", + "port": { + "_reference": "NOOSL", + "name": "NOOSL73" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56053", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA46", + "port": { + "_reference": "DEFRA", + "name": "DEFRA47" + } + }, + { + "date": "2010-12-07", + "name": "RULED76", + "port": { + "_reference": "RULED", + "name": "RULED77" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56061", + "stops": [ + { + "date": "2010-12-02", + "name": "DEFRA48", + "port": { + "_reference": "DEFRA", + "name": "DEFRA49" + } + }, + { + "date": "2010-12-07", + "name": "TNTUN10", + "port": { + "_reference": "TNTUN", + "name": "TNTUN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56133", + "stops": [ + { + "date": "2010-12-02", + "name": "DEGER36", + "port": { + "_reference": "DEGER", + "name": "DEGER37" + } + }, + { + "date": "2010-12-07", + "name": "NLTLB28", + "port": { + "_reference": "NLTLB", + "name": "NLTLB29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56149", + "stops": [ + { + "date": "2010-12-02", + "name": "DEGER38", + "port": { + "_reference": "DEGER", + "name": "DEGER39" + } + }, + { + "date": "2010-12-07", + "name": "SILJU10", + "port": { + "_reference": "SILJU", + "name": "SILJU11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56164", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM4", + "port": { + "_reference": "DEHAM", + "name": "DEHAM5" + } + }, + { + "date": "2010-12-05", + "name": "DEBER38", + "port": { + "_reference": "DEBER", + "name": "DEBER39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56165", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM6", + "port": { + "_reference": "DEHAM", + "name": "DEHAM7" + } + }, + { + "date": "2010-12-05", + "name": "DEBFE44", + "port": { + "_reference": "DEBFE", + "name": "DEBFE45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56168", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM8", + "port": { + "_reference": "DEHAM", + "name": "DEHAM9" + } + }, + { + "date": "2010-12-05", + "name": "DEDUS40", + "port": { + "_reference": "DEDUS", + "name": "DEDUS41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56169", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM10", + "port": { + "_reference": "DEHAM", + "name": "DEHAM11" + } + }, + { + "date": "2010-12-05", + "name": "DEFRA50", + "port": { + "_reference": "DEFRA", + "name": "DEFRA51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56170", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM12", + "port": { + "_reference": "DEHAM", + "name": "DEHAM13" + } + }, + { + "date": "2010-12-05", + "name": "DEGER40", + "port": { + "_reference": "DEGER", + "name": "DEGER41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56171", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM14", + "port": { + "_reference": "DEHAM", + "name": "DEHAM15" + } + }, + { + "date": "2010-12-05", + "name": "DEMUC44", + "port": { + "_reference": "DEMUC", + "name": "DEMUC45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56172", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM16", + "port": { + "_reference": "DEHAM", + "name": "DEHAM17" + } + }, + { + "date": "2010-12-05", + "name": "DENUE34", + "port": { + "_reference": "DENUE", + "name": "DENUE35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56173", + "stops": [ + { + "date": "2010-12-02", + "name": "DEHAM18", + "port": { + "_reference": "DEHAM", + "name": "DEHAM19" + } + }, + { + "date": "2010-12-05", + "name": "DESTR50", + "port": { + "_reference": "DESTR", + "name": "DESTR51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56257", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC46", + "port": { + "_reference": "DEMUC", + "name": "DEMUC47" + } + }, + { + "date": "2010-12-05", + "name": "DEBRE46", + "port": { + "_reference": "DEBRE", + "name": "DEBRE47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56259", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC48", + "port": { + "_reference": "DEMUC", + "name": "DEMUC49" + } + }, + { + "date": "2010-12-05", + "name": "DEDUS42", + "port": { + "_reference": "DEDUS", + "name": "DEDUS43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56286", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC50", + "port": { + "_reference": "DEMUC", + "name": "DEMUC51" + } + }, + { + "date": "2010-12-07", + "name": "GBBHM24", + "port": { + "_reference": "GBBHM", + "name": "GBBHM25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56308", + "stops": [ + { + "date": "2010-12-02", + "name": "DEMUC52", + "port": { + "_reference": "DEMUC", + "name": "DEMUC53" + } + }, + { + "date": "2010-12-07", + "name": "ITSPE14", + "port": { + "_reference": "ITSPE", + "name": "ITSPE15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56376", + "stops": [ + { + "date": "2010-12-02", + "name": "DENUE36", + "port": { + "_reference": "DENUE", + "name": "DENUE37" + } + }, + { + "date": "2010-12-07", + "name": "GBBEL28", + "port": { + "_reference": "GBBEL", + "name": "GBBEL29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56398", + "stops": [ + { + "date": "2010-12-02", + "name": "DENUE38", + "port": { + "_reference": "DENUE", + "name": "DENUE39" + } + }, + { + "date": "2010-12-07", + "name": "ITSAL10", + "port": { + "_reference": "ITSAL", + "name": "ITSAL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56500", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR52", + "port": { + "_reference": "DESTR", + "name": "DESTR53" + } + }, + { + "date": "2010-12-07", + "name": "NOKRS30", + "port": { + "_reference": "NOKRS", + "name": "NOKRS31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56504", + "stops": [ + { + "date": "2010-12-02", + "name": "DESTR54", + "port": { + "_reference": "DESTR", + "name": "DESTR55" + } + }, + { + "date": "2010-12-07", + "name": "PLSZZ32", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56539", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR60", + "port": { + "_reference": "DKAAR", + "name": "DKAAR61" + } + }, + { + "date": "2010-12-05", + "name": "DKCPH20", + "port": { + "_reference": "DKCPH", + "name": "DKCPH21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56554", + "stops": [ + { + "date": "2010-12-02", + "name": "DKAAR62", + "port": { + "_reference": "DKAAR", + "name": "DKAAR63" + } + }, + { + "date": "2010-12-07", + "name": "FRLEH4", + "port": { + "_reference": "FRLEH", + "name": "FRLEH5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56627", + "stops": [ + { + "date": "2010-12-02", + "name": "DKCPH22", + "port": { + "_reference": "DKCPH", + "name": "DKCPH23" + } + }, + { + "date": "2010-12-07", + "name": "DEMUC54", + "port": { + "_reference": "DEMUC", + "name": "DEMUC55" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56637", + "stops": [ + { + "date": "2010-12-02", + "name": "DKCPH24", + "port": { + "_reference": "DKCPH", + "name": "DKCPH25" + } + }, + { + "date": "2010-12-07", + "name": "ESBIO16", + "port": { + "_reference": "ESBIO", + "name": "ESBIO17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56680", + "stops": [ + { + "date": "2010-12-02", + "name": "DKCPH26", + "port": { + "_reference": "DKCPH", + "name": "DKCPH27" + } + }, + { + "date": "2010-12-07", + "name": "NOAES8", + "port": { + "_reference": "NOAES", + "name": "NOAES9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56740", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG10", + "port": { + "_reference": "DZALG", + "name": "DZALG11" + } + }, + { + "date": "2010-12-07", + "name": "GBBEL30", + "port": { + "_reference": "GBBEL", + "name": "GBBEL31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56763", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG12", + "port": { + "_reference": "DZALG", + "name": "DZALG13" + } + }, + { + "date": "2010-12-07", + "name": "ITSPE16", + "port": { + "_reference": "ITSPE", + "name": "ITSPE17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56780", + "stops": [ + { + "date": "2010-12-02", + "name": "DZALG14", + "port": { + "_reference": "DZALG", + "name": "DZALG15" + } + }, + { + "date": "2010-12-07", + "name": "ROCND10", + "port": { + "_reference": "ROCND", + "name": "ROCND11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "56984", + "stops": [ + { + "date": "2010-12-02", + "name": "EGDAM10", + "port": { + "_reference": "EGDAM", + "name": "EGDAM11" + } + }, + { + "date": "2010-12-07", + "name": "DEBFE46", + "port": { + "_reference": "DEBFE", + "name": "DEBFE47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57046", + "stops": [ + { + "date": "2010-12-02", + "name": "EGDAM12", + "port": { + "_reference": "EGDAM", + "name": "EGDAM13" + } + }, + { + "date": "2010-12-07", + "name": "NOKRS32", + "port": { + "_reference": "NOKRS", + "name": "NOKRS33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57149", + "stops": [ + { + "date": "2010-12-02", + "name": "EGPSD8", + "port": { + "_reference": "EGPSD", + "name": "EGPSD9" + } + }, + { + "date": "2010-12-07", + "name": "SIKOP24", + "port": { + "_reference": "SIKOP", + "name": "SIKOP25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57182", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBCN26", + "port": { + "_reference": "ESBCN", + "name": "ESBCN27" + } + }, + { + "date": "2010-12-07", + "name": "EGPSD10", + "port": { + "_reference": "EGPSD", + "name": "EGPSD11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57183", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBCN28", + "port": { + "_reference": "ESBCN", + "name": "ESBCN29" + } + }, + { + "date": "2010-12-05", + "name": "ESBIO18", + "port": { + "_reference": "ESBIO", + "name": "ESBIO19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57185", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBCN30", + "port": { + "_reference": "ESBCN", + "name": "ESBCN31" + } + }, + { + "date": "2010-12-05", + "name": "ESMAD22", + "port": { + "_reference": "ESMAD", + "name": "ESMAD23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57196", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBCN32", + "port": { + "_reference": "ESBCN", + "name": "ESBCN33" + } + }, + { + "date": "2010-12-07", + "name": "GBBHM26", + "port": { + "_reference": "GBBHM", + "name": "GBBHM27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57274", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBIO20", + "port": { + "_reference": "ESBIO", + "name": "ESBIO21" + } + }, + { + "date": "2010-12-05", + "name": "ESBCN34", + "port": { + "_reference": "ESBCN", + "name": "ESBCN35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57316", + "stops": [ + { + "date": "2010-12-02", + "name": "ESBIO22", + "port": { + "_reference": "ESBIO", + "name": "ESBIO23" + } + }, + { + "date": "2010-12-07", + "name": "NLTLB30", + "port": { + "_reference": "NLTLB", + "name": "NLTLB31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57366", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA16", + "port": { + "_reference": "ESLPA", + "name": "ESLPA17" + } + }, + { + "date": "2010-12-05", + "name": "ESBIO24", + "port": { + "_reference": "ESBIO", + "name": "ESBIO25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57368", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA18", + "port": { + "_reference": "ESLPA", + "name": "ESLPA19" + } + }, + { + "date": "2010-12-05", + "name": "ESVLC28", + "port": { + "_reference": "ESVLC", + "name": "ESVLC29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57396", + "stops": [ + { + "date": "2010-12-02", + "name": "ESLPA20", + "port": { + "_reference": "ESLPA", + "name": "ESLPA21" + } + }, + { + "date": "2010-12-07", + "name": "ITMOD18", + "port": { + "_reference": "ITMOD", + "name": "ITMOD19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57456", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD24", + "port": { + "_reference": "ESMAD", + "name": "ESMAD25" + } + }, + { + "date": "2010-12-05", + "name": "ESBCN36", + "port": { + "_reference": "ESBCN", + "name": "ESBCN37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57467", + "stops": [ + { + "date": "2010-12-02", + "name": "ESMAD26", + "port": { + "_reference": "ESMAD", + "name": "ESMAD27" + } + }, + { + "date": "2010-12-07", + "name": "FRSXB31", + "port": { + "_reference": "FRSXB", + "name": "FRSXB32" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57550", + "stops": [ + { + "date": "2010-12-02", + "name": "ESVLC30", + "port": { + "_reference": "ESVLC", + "name": "ESVLC31" + } + }, + { + "date": "2010-12-05", + "name": "ESMAD28", + "port": { + "_reference": "ESMAD", + "name": "ESMAD29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57701", + "stops": [ + { + "date": "2010-12-02", + "name": "FIHEL54", + "port": { + "_reference": "FIHEL", + "name": "FIHEL55" + } + }, + { + "date": "2010-12-07", + "name": "TRIZM6", + "port": { + "_reference": "TRIZM", + "name": "TRIZM7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57748", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK66", + "port": { + "_reference": "FIKTK", + "name": "FIKTK67" + } + }, + { + "date": "2010-12-07", + "name": "GBTHP16", + "port": { + "_reference": "GBTHP", + "name": "GBTHP17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57761", + "stops": [ + { + "date": "2010-12-02", + "name": "FIKTK68", + "port": { + "_reference": "FIKTK", + "name": "FIKTK69" + } + }, + { + "date": "2010-12-07", + "name": "ITNAP40", + "port": { + "_reference": "ITNAP", + "name": "ITNAP41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "57962", + "stops": [ + { + "date": "2010-12-02", + "name": "FRFOS26", + "port": { + "_reference": "FRFOS", + "name": "FRFOS27" + } + }, + { + "date": "2010-12-07", + "name": "PTLIS46", + "port": { + "_reference": "PTLIS", + "name": "PTLIS47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58009", + "stops": [ + { + "date": "2010-12-02", + "name": "FRLEH6", + "port": { + "_reference": "FRLEH", + "name": "FRLEH7" + } + }, + { + "date": "2010-12-05", + "name": "FRBOD36", + "port": { + "_reference": "FRBOD", + "name": "FRBOD37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58010", + "stops": [ + { + "date": "2010-12-02", + "name": "FRLEH8", + "port": { + "_reference": "FRLEH", + "name": "FRLEH9" + } + }, + { + "date": "2010-12-05", + "name": "FRFOS28", + "port": { + "_reference": "FRFOS", + "name": "FRFOS29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58011", + "stops": [ + { + "date": "2010-12-02", + "name": "FRLEH10", + "port": { + "_reference": "FRLEH", + "name": "FRLEH11" + } + }, + { + "date": "2010-12-05", + "name": "FRPAR38", + "port": { + "_reference": "FRPAR", + "name": "FRPAR39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58012", + "stops": [ + { + "date": "2010-12-02", + "name": "FRLEH12", + "port": { + "_reference": "FRLEH", + "name": "FRLEH13" + } + }, + { + "date": "2010-12-05", + "name": "FRRNS22", + "port": { + "_reference": "FRRNS", + "name": "FRRNS23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58013", + "stops": [ + { + "date": "2010-12-02", + "name": "FRLEH14", + "port": { + "_reference": "FRLEH", + "name": "FRLEH15" + } + }, + { + "date": "2010-12-05", + "name": "FRSXB33", + "port": { + "_reference": "FRSXB", + "name": "FRSXB34" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58094", + "stops": [ + { + "date": "2010-12-02", + "name": "FRPAR40", + "port": { + "_reference": "FRPAR", + "name": "FRPAR41" + } + }, + { + "date": "2010-12-07", + "name": "ESBIO26", + "port": { + "_reference": "ESBIO", + "name": "ESBIO27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58313", + "stops": [ + { + "date": "2010-12-02", + "name": "FRSXB35", + "port": { + "_reference": "FRSXB", + "name": "FRSXB36" + } + }, + { + "date": "2010-12-07", + "name": "LTKLJ6", + "port": { + "_reference": "LTKLJ", + "name": "LTKLJ7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58350", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBEL32", + "port": { + "_reference": "GBBEL", + "name": "GBBEL33" + } + }, + { + "date": "2010-12-07", + "name": "DEBRE48", + "port": { + "_reference": "DEBRE", + "name": "DEBRE49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58368", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBEL34", + "port": { + "_reference": "GBBEL", + "name": "GBBEL35" + } + }, + { + "date": "2010-12-07", + "name": "ESLPA22", + "port": { + "_reference": "ESLPA", + "name": "ESLPA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58380", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBEL36", + "port": { + "_reference": "GBBEL", + "name": "GBBEL37" + } + }, + { + "date": "2010-12-05", + "name": "GBFXT14", + "port": { + "_reference": "GBFXT", + "name": "GBFXT15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58447", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBHM28", + "port": { + "_reference": "GBBHM", + "name": "GBBHM29" + } + }, + { + "date": "2010-12-07", + "name": "DEMUC56", + "port": { + "_reference": "DEMUC", + "name": "DEMUC57" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58452", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBHM30", + "port": { + "_reference": "GBBHM", + "name": "GBBHM31" + } + }, + { + "date": "2010-12-07", + "name": "DZALG16", + "port": { + "_reference": "DZALG", + "name": "DZALG17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58473", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBHM32", + "port": { + "_reference": "GBBHM", + "name": "GBBHM33" + } + }, + { + "date": "2010-12-05", + "name": "GBLBA26", + "port": { + "_reference": "GBLBA", + "name": "GBLBA27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58476", + "stops": [ + { + "date": "2010-12-02", + "name": "GBBHM34", + "port": { + "_reference": "GBBHM", + "name": "GBBHM35" + } + }, + { + "date": "2010-12-05", + "name": "GBTHP18", + "port": { + "_reference": "GBTHP", + "name": "GBTHP19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58552", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT16", + "port": { + "_reference": "GBFXT", + "name": "GBFXT17" + } + }, + { + "date": "2010-12-07", + "name": "ESVLC32", + "port": { + "_reference": "ESVLC", + "name": "ESVLC33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58561", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT18", + "port": { + "_reference": "GBFXT", + "name": "GBFXT19" + } + }, + { + "date": "2010-12-05", + "name": "GBBEL38", + "port": { + "_reference": "GBBEL", + "name": "GBBEL39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58562", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT20", + "port": { + "_reference": "GBFXT", + "name": "GBFXT21" + } + }, + { + "date": "2010-12-05", + "name": "GBBHM36", + "port": { + "_reference": "GBBHM", + "name": "GBBHM37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58563", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT22", + "port": { + "_reference": "GBFXT", + "name": "GBFXT23" + } + }, + { + "date": "2010-12-05", + "name": "GBGLW30", + "port": { + "_reference": "GBGLW", + "name": "GBGLW31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58564", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT24", + "port": { + "_reference": "GBFXT", + "name": "GBFXT25" + } + }, + { + "date": "2010-12-05", + "name": "GBLBA28", + "port": { + "_reference": "GBLBA", + "name": "GBLBA29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58565", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT26", + "port": { + "_reference": "GBFXT", + "name": "GBFXT27" + } + }, + { + "date": "2010-12-05", + "name": "GBLIV24", + "port": { + "_reference": "GBLIV", + "name": "GBLIV25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58566", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT28", + "port": { + "_reference": "GBFXT", + "name": "GBFXT29" + } + }, + { + "date": "2010-12-05", + "name": "GBMAN30", + "port": { + "_reference": "GBMAN", + "name": "GBMAN31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58568", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT30", + "port": { + "_reference": "GBFXT", + "name": "GBFXT31" + } + }, + { + "date": "2010-12-05", + "name": "GBTIL32", + "port": { + "_reference": "GBTIL", + "name": "GBTIL33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58572", + "stops": [ + { + "date": "2010-12-02", + "name": "GBFXT32", + "port": { + "_reference": "GBFXT", + "name": "GBFXT33" + } + }, + { + "date": "2010-12-07", + "name": "IEDUB42", + "port": { + "_reference": "IEDUB", + "name": "IEDUB43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58693", + "stops": [ + { + "date": "2010-12-02", + "name": "GBGLW32", + "port": { + "_reference": "GBGLW", + "name": "GBGLW33" + } + }, + { + "date": "2010-12-07", + "name": "SEGOT62", + "port": { + "_reference": "SEGOT", + "name": "SEGOT63" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58779", + "stops": [ + { + "date": "2010-12-02", + "name": "GBLBA30", + "port": { + "_reference": "GBLBA", + "name": "GBLBA31" + } + }, + { + "date": "2010-12-07", + "name": "PLSZZ34", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58809", + "stops": [ + { + "date": "2010-12-02", + "name": "GBLIV26", + "port": { + "_reference": "GBLIV", + "name": "GBLIV27" + } + }, + { + "date": "2010-12-07", + "name": "DEGER42", + "port": { + "_reference": "DEGER", + "name": "DEGER43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58916", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN32", + "port": { + "_reference": "GBMAN", + "name": "GBMAN33" + } + }, + { + "date": "2010-12-07", + "name": "ESVLC34", + "port": { + "_reference": "ESVLC", + "name": "ESVLC35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58922", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN34", + "port": { + "_reference": "GBMAN", + "name": "GBMAN35" + } + }, + { + "date": "2010-12-07", + "name": "FRPAR42", + "port": { + "_reference": "FRPAR", + "name": "FRPAR43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58928", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN36", + "port": { + "_reference": "GBMAN", + "name": "GBMAN37" + } + }, + { + "date": "2010-12-05", + "name": "GBGLW34", + "port": { + "_reference": "GBGLW", + "name": "GBGLW35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58932", + "stops": [ + { + "date": "2010-12-02", + "name": "GBMAN38", + "port": { + "_reference": "GBMAN", + "name": "GBMAN39" + } + }, + { + "date": "2010-12-05", + "name": "GBTIL34", + "port": { + "_reference": "GBTIL", + "name": "GBTIL35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "58983", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP20", + "port": { + "_reference": "GBTHP", + "name": "GBTHP21" + } + }, + { + "date": "2010-12-07", + "name": "CZPRG36", + "port": { + "_reference": "CZPRG", + "name": "CZPRG37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59002", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP22", + "port": { + "_reference": "GBTHP", + "name": "GBTHP23" + } + }, + { + "date": "2010-12-07", + "name": "EGPSD12", + "port": { + "_reference": "EGPSD", + "name": "EGPSD13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59016", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP24", + "port": { + "_reference": "GBTHP", + "name": "GBTHP25" + } + }, + { + "date": "2010-12-05", + "name": "GBBEL40", + "port": { + "_reference": "GBBEL", + "name": "GBBEL41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59017", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP26", + "port": { + "_reference": "GBTHP", + "name": "GBTHP27" + } + }, + { + "date": "2010-12-05", + "name": "GBBHM38", + "port": { + "_reference": "GBBHM", + "name": "GBBHM39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59019", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP28", + "port": { + "_reference": "GBTHP", + "name": "GBTHP29" + } + }, + { + "date": "2010-12-05", + "name": "GBGLW36", + "port": { + "_reference": "GBGLW", + "name": "GBGLW37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59020", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP30", + "port": { + "_reference": "GBTHP", + "name": "GBTHP31" + } + }, + { + "date": "2010-12-05", + "name": "GBLBA32", + "port": { + "_reference": "GBLBA", + "name": "GBLBA33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59021", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP32", + "port": { + "_reference": "GBTHP", + "name": "GBTHP33" + } + }, + { + "date": "2010-12-05", + "name": "GBLIV28", + "port": { + "_reference": "GBLIV", + "name": "GBLIV29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59022", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP34", + "port": { + "_reference": "GBTHP", + "name": "GBTHP35" + } + }, + { + "date": "2010-12-05", + "name": "GBMAN40", + "port": { + "_reference": "GBMAN", + "name": "GBMAN41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59023", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP36", + "port": { + "_reference": "GBTHP", + "name": "GBTHP37" + } + }, + { + "date": "2010-12-05", + "name": "GBTIL36", + "port": { + "_reference": "GBTIL", + "name": "GBTIL37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59063", + "stops": [ + { + "date": "2010-12-02", + "name": "GBTHP38", + "port": { + "_reference": "GBTHP", + "name": "GBTHP39" + } + }, + { + "date": "2010-12-07", + "name": "SYTTS8", + "port": { + "_reference": "SYTTS", + "name": "SYTTS9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59184", + "stops": [ + { + "date": "2010-12-02", + "name": "GRPIR4", + "port": { + "_reference": "GRPIR", + "name": "GRPIR5" + } + }, + { + "date": "2010-12-07", + "name": "EGPSD14", + "port": { + "_reference": "EGPSD", + "name": "EGPSD15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59187", + "stops": [ + { + "date": "2010-12-02", + "name": "GRPIR6", + "port": { + "_reference": "GRPIR", + "name": "GRPIR7" + } + }, + { + "date": "2010-12-07", + "name": "ESLPA24", + "port": { + "_reference": "ESLPA", + "name": "ESLPA25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59417", + "stops": [ + { + "date": "2010-12-02", + "name": "HUBUD30", + "port": { + "_reference": "HUBUD", + "name": "HUBUD31" + } + }, + { + "date": "2010-12-07", + "name": "PLSZZ36", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59451", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW24", + "port": { + "_reference": "IDBLW", + "name": "IDBLW25" + } + }, + { + "date": "2010-12-07", + "name": "MYPKG36", + "port": { + "_reference": "MYPKG", + "name": "MYPKG37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59455", + "stops": [ + { + "date": "2010-12-02", + "name": "IDBLW26", + "port": { + "_reference": "IDBLW", + "name": "IDBLW27" + } + }, + { + "date": "2010-12-07", + "name": "PKKHI28", + "port": { + "_reference": "PKKHI", + "name": "PKKHI29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59464", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT34", + "port": { + "_reference": "IDJKT", + "name": "IDJKT35" + } + }, + { + "date": "2010-12-05", + "name": "IDSRG18", + "port": { + "_reference": "IDSRG", + "name": "IDSRG19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59465", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT36", + "port": { + "_reference": "IDJKT", + "name": "IDJKT37" + } + }, + { + "date": "2010-12-05", + "name": "IDSUB28", + "port": { + "_reference": "IDSUB", + "name": "IDSUB29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59480", + "stops": [ + { + "date": "2010-12-02", + "name": "IDJKT38", + "port": { + "_reference": "IDJKT", + "name": "IDJKT39" + } + }, + { + "date": "2010-12-07", + "name": "MYPGU36", + "port": { + "_reference": "MYPGU", + "name": "MYPGU37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59636", + "stops": [ + { + "date": "2010-12-02", + "name": "IEDUB44", + "port": { + "_reference": "IEDUB", + "name": "IEDUB45" + } + }, + { + "date": "2010-12-07", + "name": "SIKOP26", + "port": { + "_reference": "SIKOP", + "name": "SIKOP27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59653", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK46", + "port": { + "_reference": "IEORK", + "name": "IEORK47" + } + }, + { + "date": "2010-12-07", + "name": "DEBFE48", + "port": { + "_reference": "DEBFE", + "name": "DEBFE49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59695", + "stops": [ + { + "date": "2010-12-02", + "name": "IEORK48", + "port": { + "_reference": "IEORK", + "name": "IEORK49" + } + }, + { + "date": "2010-12-05", + "name": "IEDUB46", + "port": { + "_reference": "IEDUB", + "name": "IEDUB47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59771", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU18", + "port": { + "_reference": "INCCU", + "name": "INCCU19" + } + }, + { + "date": "2010-12-05", + "name": "INDEL38", + "port": { + "_reference": "INDEL", + "name": "INDEL39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59775", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU20", + "port": { + "_reference": "INCCU", + "name": "INCCU21" + } + }, + { + "date": "2010-12-05", + "name": "INNAH20", + "port": { + "_reference": "INNAH", + "name": "INNAH21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59776", + "stops": [ + { + "date": "2010-12-02", + "name": "INCCU22", + "port": { + "_reference": "INCCU", + "name": "INCCU23" + } + }, + { + "date": "2010-12-05", + "name": "INTUT24", + "port": { + "_reference": "INTUT", + "name": "INTUT25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59814", + "stops": [ + { + "date": "2010-12-02", + "name": "INCOK14", + "port": { + "_reference": "INCOK", + "name": "INCOK15" + } + }, + { + "date": "2010-12-07", + "name": "PHCEB20", + "port": { + "_reference": "PHCEB", + "name": "PHCEB21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59826", + "stops": [ + { + "date": "2010-12-02", + "name": "INDEL40", + "port": { + "_reference": "INDEL", + "name": "INDEL41" + } + }, + { + "date": "2010-12-07", + "name": "IDJKT40", + "port": { + "_reference": "IDJKT", + "name": "IDJKT41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59892", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA30", + "port": { + "_reference": "INMAA", + "name": "INMAA31" + } + }, + { + "date": "2010-12-05", + "name": "INDEL42", + "port": { + "_reference": "INDEL", + "name": "INDEL43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59894", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA32", + "port": { + "_reference": "INMAA", + "name": "INMAA33" + } + }, + { + "date": "2010-12-05", + "name": "INMUN22", + "port": { + "_reference": "INMUN", + "name": "INMUN23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59895", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA34", + "port": { + "_reference": "INMAA", + "name": "INMAA35" + } + }, + { + "date": "2010-12-05", + "name": "INNAH22", + "port": { + "_reference": "INNAH", + "name": "INNAH23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59896", + "stops": [ + { + "date": "2010-12-02", + "name": "INMAA36", + "port": { + "_reference": "INMAA", + "name": "INMAA37" + } + }, + { + "date": "2010-12-05", + "name": "INTUT26", + "port": { + "_reference": "INTUT", + "name": "INTUT27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "59921", + "stops": [ + { + "date": "2010-12-02", + "name": "INMUN24", + "port": { + "_reference": "INMUN", + "name": "INMUN25" + } + }, + { + "date": "2010-12-05", + "name": "INCOK16", + "port": { + "_reference": "INCOK", + "name": "INCOK17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60052", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI16", + "port": { + "_reference": "ITAOI", + "name": "ITAOI17" + } + }, + { + "date": "2010-12-07", + "name": "CZPRG38", + "port": { + "_reference": "CZPRG", + "name": "CZPRG39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60103", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI18", + "port": { + "_reference": "ITAOI", + "name": "ITAOI19" + } + }, + { + "date": "2010-12-05", + "name": "ITMOD20", + "port": { + "_reference": "ITMOD", + "name": "ITMOD21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60104", + "stops": [ + { + "date": "2010-12-02", + "name": "ITAOI20", + "port": { + "_reference": "ITAOI", + "name": "ITAOI21" + } + }, + { + "date": "2010-12-05", + "name": "ITNAP42", + "port": { + "_reference": "ITNAP", + "name": "ITNAP43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60137", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGIT16", + "port": { + "_reference": "ITGIT", + "name": "ITGIT17" + } + }, + { + "date": "2010-12-07", + "name": "ATVIE42", + "port": { + "_reference": "ATVIE", + "name": "ATVIE43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60142", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGIT18", + "port": { + "_reference": "ITGIT", + "name": "ITGIT19" + } + }, + { + "date": "2010-12-07", + "name": "CYLMS16", + "port": { + "_reference": "CYLMS", + "name": "CYLMS17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60190", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGIT20", + "port": { + "_reference": "ITGIT", + "name": "ITGIT21" + } + }, + { + "date": "2010-12-05", + "name": "ITAOI22", + "port": { + "_reference": "ITAOI", + "name": "ITAOI23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60205", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGIT22", + "port": { + "_reference": "ITGIT", + "name": "ITGIT23" + } + }, + { + "date": "2010-12-07", + "name": "NLTLB32", + "port": { + "_reference": "NLTLB", + "name": "NLTLB33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60221", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGIT24", + "port": { + "_reference": "ITGIT", + "name": "ITGIT25" + } + }, + { + "date": "2010-12-07", + "name": "SILJU12", + "port": { + "_reference": "SILJU", + "name": "SILJU13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60228", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA20", + "port": { + "_reference": "ITGOA", + "name": "ITGOA21" + } + }, + { + "date": "2010-12-07", + "name": "ATVIE44", + "port": { + "_reference": "ATVIE", + "name": "ATVIE45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60242", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA22", + "port": { + "_reference": "ITGOA", + "name": "ITGOA23" + } + }, + { + "date": "2010-12-07", + "name": "DEGER44", + "port": { + "_reference": "DEGER", + "name": "DEGER45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60285", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA24", + "port": { + "_reference": "ITGOA", + "name": "ITGOA25" + } + }, + { + "date": "2010-12-05", + "name": "ITMOD22", + "port": { + "_reference": "ITMOD", + "name": "ITMOD23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60286", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA26", + "port": { + "_reference": "ITGOA", + "name": "ITGOA27" + } + }, + { + "date": "2010-12-05", + "name": "ITNAP44", + "port": { + "_reference": "ITNAP", + "name": "ITNAP45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60287", + "stops": [ + { + "date": "2010-12-02", + "name": "ITGOA28", + "port": { + "_reference": "ITGOA", + "name": "ITGOA29" + } + }, + { + "date": "2010-12-05", + "name": "ITPDA34", + "port": { + "_reference": "ITPDA", + "name": "ITPDA35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60319", + "stops": [ + { + "date": "2010-12-02", + "name": "ITLIV4", + "port": { + "_reference": "ITLIV", + "name": "ITLIV5" + } + }, + { + "date": "2010-12-07", + "name": "ATVIE46", + "port": { + "_reference": "ATVIE", + "name": "ATVIE47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60379", + "stops": [ + { + "date": "2010-12-02", + "name": "ITLIV6", + "port": { + "_reference": "ITLIV", + "name": "ITLIV7" + } + }, + { + "date": "2010-12-05", + "name": "ITSAL12", + "port": { + "_reference": "ITSAL", + "name": "ITSAL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60399", + "stops": [ + { + "date": "2010-12-02", + "name": "ITLIV8", + "port": { + "_reference": "ITLIV", + "name": "ITLIV9" + } + }, + { + "date": "2010-12-07", + "name": "SEGOT64", + "port": { + "_reference": "SEGOT", + "name": "SEGOT65" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60444", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMIL32", + "port": { + "_reference": "ITMIL", + "name": "ITMIL33" + } + }, + { + "date": "2010-12-07", + "name": "FRFOS30", + "port": { + "_reference": "FRFOS", + "name": "FRFOS31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60468", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMIL34", + "port": { + "_reference": "ITMIL", + "name": "ITMIL35" + } + }, + { + "date": "2010-12-05", + "name": "ITNAP46", + "port": { + "_reference": "ITNAP", + "name": "ITNAP47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60469", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMIL36", + "port": { + "_reference": "ITMIL", + "name": "ITMIL37" + } + }, + { + "date": "2010-12-05", + "name": "ITPDA36", + "port": { + "_reference": "ITPDA", + "name": "ITPDA37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60481", + "stops": [ + { + "date": "2010-12-02", + "name": "ITMIL38", + "port": { + "_reference": "ITMIL", + "name": "ITMIL39" + } + }, + { + "date": "2010-12-07", + "name": "NOKRS34", + "port": { + "_reference": "NOKRS", + "name": "NOKRS35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60600", + "stops": [ + { + "date": "2010-12-02", + "name": "ITNAP48", + "port": { + "_reference": "ITNAP", + "name": "ITNAP49" + } + }, + { + "date": "2010-12-07", + "name": "DEBER40", + "port": { + "_reference": "DEBER", + "name": "DEBER41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60647", + "stops": [ + { + "date": "2010-12-02", + "name": "ITNAP50", + "port": { + "_reference": "ITNAP", + "name": "ITNAP51" + } + }, + { + "date": "2010-12-05", + "name": "ITGOA30", + "port": { + "_reference": "ITGOA", + "name": "ITGOA31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60649", + "stops": [ + { + "date": "2010-12-02", + "name": "ITNAP52", + "port": { + "_reference": "ITNAP", + "name": "ITNAP53" + } + }, + { + "date": "2010-12-05", + "name": "ITMIL40", + "port": { + "_reference": "ITMIL", + "name": "ITMIL41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60651", + "stops": [ + { + "date": "2010-12-02", + "name": "ITNAP54", + "port": { + "_reference": "ITNAP", + "name": "ITNAP55" + } + }, + { + "date": "2010-12-05", + "name": "ITPDA38", + "port": { + "_reference": "ITPDA", + "name": "ITPDA39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60688", + "stops": [ + { + "date": "2010-12-02", + "name": "ITPDA40", + "port": { + "_reference": "ITPDA", + "name": "ITPDA41" + } + }, + { + "date": "2010-12-07", + "name": "CYLMS18", + "port": { + "_reference": "CYLMS", + "name": "CYLMS19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60731", + "stops": [ + { + "date": "2010-12-02", + "name": "ITPDA42", + "port": { + "_reference": "ITPDA", + "name": "ITPDA43" + } + }, + { + "date": "2010-12-07", + "name": "GRPIR8", + "port": { + "_reference": "GRPIR", + "name": "GRPIR9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60741", + "stops": [ + { + "date": "2010-12-02", + "name": "ITPDA44", + "port": { + "_reference": "ITPDA", + "name": "ITPDA45" + } + }, + { + "date": "2010-12-05", + "name": "ITMOD24", + "port": { + "_reference": "ITMOD", + "name": "ITMOD25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60784", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSAL14", + "port": { + "_reference": "ITSAL", + "name": "ITSAL15" + } + }, + { + "date": "2010-12-07", + "name": "DEBRE50", + "port": { + "_reference": "DEBRE", + "name": "DEBRE51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60876", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSPE18", + "port": { + "_reference": "ITSPE", + "name": "ITSPE19" + } + }, + { + "date": "2010-12-07", + "name": "DEBRV72", + "port": { + "_reference": "DEBRV", + "name": "DEBRV73" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60879", + "stops": [ + { + "date": "2010-12-02", + "name": "ITSPE20", + "port": { + "_reference": "ITSPE", + "name": "ITSPE21" + } + }, + { + "date": "2010-12-07", + "name": "DEGER46", + "port": { + "_reference": "DEGER", + "name": "DEGER47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "60974", + "stops": [ + { + "date": "2010-12-02", + "name": "ITVCE10", + "port": { + "_reference": "ITVCE", + "name": "ITVCE11" + } + }, + { + "date": "2010-12-07", + "name": "DESTR56", + "port": { + "_reference": "DESTR", + "name": "DESTR57" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61026", + "stops": [ + { + "date": "2010-12-02", + "name": "ITVCE12", + "port": { + "_reference": "ITVCE", + "name": "ITVCE13" + } + }, + { + "date": "2010-12-07", + "name": "NOBGO4", + "port": { + "_reference": "NOBGO", + "name": "NOBGO5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61049", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ14", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ15" + } + }, + { + "date": "2010-12-05", + "name": "JPHSA16", + "port": { + "_reference": "JPHSA", + "name": "JPHSA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61056", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ16", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ17" + } + }, + { + "date": "2010-12-05", + "name": "JPSMZ24", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61063", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHIJ18", + "port": { + "_reference": "JPHIJ", + "name": "JPHIJ19" + } + }, + { + "date": "2010-12-05", + "name": "JPYKK16", + "port": { + "_reference": "JPYKK", + "name": "JPYKK17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61066", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT10", + "port": { + "_reference": "JPHKT", + "name": "JPHKT11" + } + }, + { + "date": "2010-12-05", + "name": "JPHSA18", + "port": { + "_reference": "JPHSA", + "name": "JPHSA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61071", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT12", + "port": { + "_reference": "JPHKT", + "name": "JPHKT13" + } + }, + { + "date": "2010-12-05", + "name": "JPNGO24", + "port": { + "_reference": "JPNGO", + "name": "JPNGO25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61073", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT14", + "port": { + "_reference": "JPHKT", + "name": "JPHKT15" + } + }, + { + "date": "2010-12-05", + "name": "JPSMZ26", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61077", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT16", + "port": { + "_reference": "JPHKT", + "name": "JPHKT17" + } + }, + { + "date": "2010-12-05", + "name": "JPTOY14", + "port": { + "_reference": "JPTOY", + "name": "JPTOY15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61079", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT18", + "port": { + "_reference": "JPHKT", + "name": "JPHKT19" + } + }, + { + "date": "2010-12-05", + "name": "JPUKB10", + "port": { + "_reference": "JPUKB", + "name": "JPUKB11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61080", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT20", + "port": { + "_reference": "JPHKT", + "name": "JPHKT21" + } + }, + { + "date": "2010-12-05", + "name": "JPYKK18", + "port": { + "_reference": "JPYKK", + "name": "JPYKK19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61081", + "stops": [ + { + "date": "2010-12-02", + "name": "JPHKT22", + "port": { + "_reference": "JPHKT", + "name": "JPHKT23" + } + }, + { + "date": "2010-12-05", + "name": "JPYOK20", + "port": { + "_reference": "JPYOK", + "name": "JPYOK21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61140", + "stops": [ + { + "date": "2010-12-02", + "name": "JPKNZ4", + "port": { + "_reference": "JPKNZ", + "name": "JPKNZ5" + } + }, + { + "date": "2010-12-05", + "name": "JPOSA10", + "port": { + "_reference": "JPOSA", + "name": "JPOSA11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61191", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA12", + "port": { + "_reference": "JPOSA", + "name": "JPOSA13" + } + }, + { + "date": "2010-12-05", + "name": "JPNGO26", + "port": { + "_reference": "JPNGO", + "name": "JPNGO27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61192", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA14", + "port": { + "_reference": "JPOSA", + "name": "JPOSA15" + } + }, + { + "date": "2010-12-05", + "name": "JPSMZ28", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61196", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA16", + "port": { + "_reference": "JPOSA", + "name": "JPOSA17" + } + }, + { + "date": "2010-12-05", + "name": "JPTOY16", + "port": { + "_reference": "JPTOY", + "name": "JPTOY17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61198", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA18", + "port": { + "_reference": "JPOSA", + "name": "JPOSA19" + } + }, + { + "date": "2010-12-05", + "name": "JPUKB12", + "port": { + "_reference": "JPUKB", + "name": "JPUKB13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61200", + "stops": [ + { + "date": "2010-12-02", + "name": "JPOSA20", + "port": { + "_reference": "JPOSA", + "name": "JPOSA21" + } + }, + { + "date": "2010-12-05", + "name": "JPYOK22", + "port": { + "_reference": "JPYOK", + "name": "JPYOK23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61209", + "stops": [ + { + "date": "2010-12-02", + "name": "JPSMZ30", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ31" + } + }, + { + "date": "2010-12-05", + "name": "JPOSA22", + "port": { + "_reference": "JPOSA", + "name": "JPOSA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61242", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY14", + "port": { + "_reference": "JPTKY", + "name": "JPTKY15" + } + }, + { + "date": "2010-12-05", + "name": "JPNGO28", + "port": { + "_reference": "JPNGO", + "name": "JPNGO29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61247", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY16", + "port": { + "_reference": "JPTKY", + "name": "JPTKY17" + } + }, + { + "date": "2010-12-05", + "name": "JPTOY18", + "port": { + "_reference": "JPTOY", + "name": "JPTOY19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61251", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTKY18", + "port": { + "_reference": "JPTKY", + "name": "JPTKY19" + } + }, + { + "date": "2010-12-05", + "name": "JPYOK24", + "port": { + "_reference": "JPYOK", + "name": "JPYOK25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61254", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK12", + "port": { + "_reference": "JPTMK", + "name": "JPTMK13" + } + }, + { + "date": "2010-12-05", + "name": "JPHSA20", + "port": { + "_reference": "JPHSA", + "name": "JPHSA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61258", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK14", + "port": { + "_reference": "JPTMK", + "name": "JPTMK15" + } + }, + { + "date": "2010-12-05", + "name": "JPMOJ8", + "port": { + "_reference": "JPMOJ", + "name": "JPMOJ9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61259", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK16", + "port": { + "_reference": "JPTMK", + "name": "JPTMK17" + } + }, + { + "date": "2010-12-05", + "name": "JPNGO30", + "port": { + "_reference": "JPNGO", + "name": "JPNGO31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61261", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK18", + "port": { + "_reference": "JPTMK", + "name": "JPTMK19" + } + }, + { + "date": "2010-12-05", + "name": "JPSMZ32", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61264", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK20", + "port": { + "_reference": "JPTMK", + "name": "JPTMK21" + } + }, + { + "date": "2010-12-05", + "name": "JPTOY20", + "port": { + "_reference": "JPTOY", + "name": "JPTOY21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61267", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK22", + "port": { + "_reference": "JPTMK", + "name": "JPTMK23" + } + }, + { + "date": "2010-12-05", + "name": "JPYKK20", + "port": { + "_reference": "JPYKK", + "name": "JPYKK21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61268", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTMK24", + "port": { + "_reference": "JPTMK", + "name": "JPTMK25" + } + }, + { + "date": "2010-12-05", + "name": "JPYOK26", + "port": { + "_reference": "JPYOK", + "name": "JPYOK27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61278", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTOY22", + "port": { + "_reference": "JPTOY", + "name": "JPTOY23" + } + }, + { + "date": "2010-12-05", + "name": "JPSMZ34", + "port": { + "_reference": "JPSMZ", + "name": "JPSMZ35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61298", + "stops": [ + { + "date": "2010-12-02", + "name": "JPTYO12", + "port": { + "_reference": "JPTYO", + "name": "JPTYO13" + } + }, + { + "date": "2010-12-05", + "name": "JPTMK26", + "port": { + "_reference": "JPTMK", + "name": "JPTMK27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61386", + "stops": [ + { + "date": "2010-12-02", + "name": "KREIW5", + "port": { + "_reference": "KREIW", + "name": "KREIW6" + } + }, + { + "date": "2010-12-05", + "name": "KRKAN8", + "port": { + "_reference": "KRKAN", + "name": "KRKAN9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61389", + "stops": [ + { + "date": "2010-12-02", + "name": "KRINC4", + "port": { + "_reference": "KRINC", + "name": "KRINC5" + } + }, + { + "date": "2010-12-05", + "name": "KREIW7", + "port": { + "_reference": "KREIW", + "name": "KREIW8" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61391", + "stops": [ + { + "date": "2010-12-02", + "name": "KRINC6", + "port": { + "_reference": "KRINC", + "name": "KRINC7" + } + }, + { + "date": "2010-12-05", + "name": "KRKAN10", + "port": { + "_reference": "KRKAN", + "name": "KRKAN11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61409", + "stops": [ + { + "date": "2010-12-02", + "name": "KRPUS4", + "port": { + "_reference": "KRPUS", + "name": "KRPUS5" + } + }, + { + "date": "2010-12-05", + "name": "KREIW9", + "port": { + "_reference": "KREIW", + "name": "KREIW10" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61411", + "stops": [ + { + "date": "2010-12-02", + "name": "KRPUS6", + "port": { + "_reference": "KRPUS", + "name": "KRPUS7" + } + }, + { + "date": "2010-12-05", + "name": "KRJCW2", + "port": { + "_reference": "KRJCW", + "name": "KRJCW3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61412", + "stops": [ + { + "date": "2010-12-02", + "name": "KRPUS8", + "port": { + "_reference": "KRPUS", + "name": "KRPUS9" + } + }, + { + "date": "2010-12-05", + "name": "KRKAN12", + "port": { + "_reference": "KRKAN", + "name": "KRKAN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61423", + "stops": [ + { + "date": "2010-12-02", + "name": "KWKWI10", + "port": { + "_reference": "KWKWI", + "name": "KWKWI11" + } + }, + { + "date": "2010-12-07", + "name": "SADMN4", + "port": { + "_reference": "SADMN", + "name": "SADMN5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61490", + "stops": [ + { + "date": "2010-12-02", + "name": "LBBEY12", + "port": { + "_reference": "LBBEY", + "name": "LBBEY13" + } + }, + { + "date": "2010-12-07", + "name": "LVRIX6", + "port": { + "_reference": "LVRIX", + "name": "LVRIX7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61518", + "stops": [ + { + "date": "2010-12-02", + "name": "LKCMB20", + "port": { + "_reference": "LKCMB", + "name": "LKCMB21" + } + }, + { + "date": "2010-12-07", + "name": "IDSRG20", + "port": { + "_reference": "IDSRG", + "name": "IDSRG21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61530", + "stops": [ + { + "date": "2010-12-02", + "name": "LKCMB22", + "port": { + "_reference": "LKCMB", + "name": "LKCMB23" + } + }, + { + "date": "2010-12-07", + "name": "KHPNH26", + "port": { + "_reference": "KHPNH", + "name": "KHPNH27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61539", + "stops": [ + { + "date": "2010-12-02", + "name": "LKCMB24", + "port": { + "_reference": "LKCMB", + "name": "LKCMB25" + } + }, + { + "date": "2010-12-07", + "name": "SGSIN34", + "port": { + "_reference": "SGSIN", + "name": "SGSIN35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61559", + "stops": [ + { + "date": "2010-12-02", + "name": "LTKLJ8", + "port": { + "_reference": "LTKLJ", + "name": "LTKLJ9" + } + }, + { + "date": "2010-12-07", + "name": "DEFRA52", + "port": { + "_reference": "DEFRA", + "name": "DEFRA53" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61637", + "stops": [ + { + "date": "2010-12-02", + "name": "LVRIX8", + "port": { + "_reference": "LVRIX", + "name": "LVRIX9" + } + }, + { + "date": "2010-12-07", + "name": "ATVIE48", + "port": { + "_reference": "ATVIE", + "name": "ATVIE49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61648", + "stops": [ + { + "date": "2010-12-02", + "name": "LVRIX10", + "port": { + "_reference": "LVRIX", + "name": "LVRIX11" + } + }, + { + "date": "2010-12-07", + "name": "DEBRV74", + "port": { + "_reference": "DEBRV", + "name": "DEBRV75" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61745", + "stops": [ + { + "date": "2010-12-02", + "name": "MACAS8", + "port": { + "_reference": "MACAS", + "name": "MACAS9" + } + }, + { + "date": "2010-12-07", + "name": "DENUE40", + "port": { + "_reference": "DENUE", + "name": "DENUE41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61759", + "stops": [ + { + "date": "2010-12-02", + "name": "MACAS10", + "port": { + "_reference": "MACAS", + "name": "MACAS11" + } + }, + { + "date": "2010-12-07", + "name": "FIHEL56", + "port": { + "_reference": "FIHEL", + "name": "FIHEL57" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61853", + "stops": [ + { + "date": "2010-12-02", + "name": "MXGDL4", + "port": { + "_reference": "MXGDL", + "name": "MXGDL5" + } + }, + { + "date": "2010-12-05", + "name": "MXESE10", + "port": { + "_reference": "MXESE", + "name": "MXESE11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61859", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMEX20", + "port": { + "_reference": "MXMEX", + "name": "MXMEX21" + } + }, + { + "date": "2010-12-05", + "name": "MXESE12", + "port": { + "_reference": "MXESE", + "name": "MXESE13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61862", + "stops": [ + { + "date": "2010-12-02", + "name": "MXMEX22", + "port": { + "_reference": "MXMEX", + "name": "MXMEX23" + } + }, + { + "date": "2010-12-05", + "name": "MXZLO4", + "port": { + "_reference": "MXZLO", + "name": "MXZLO5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61874", + "stops": [ + { + "date": "2010-12-02", + "name": "MXZLO6", + "port": { + "_reference": "MXZLO", + "name": "MXZLO7" + } + }, + { + "date": "2010-12-05", + "name": "MXESE14", + "port": { + "_reference": "MXESE", + "name": "MXESE15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61876", + "stops": [ + { + "date": "2010-12-02", + "name": "MXZLO8", + "port": { + "_reference": "MXZLO", + "name": "MXZLO9" + } + }, + { + "date": "2010-12-05", + "name": "MXMEX24", + "port": { + "_reference": "MXMEX", + "name": "MXMEX25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61895", + "stops": [ + { + "date": "2010-12-02", + "name": "MYPEN26", + "port": { + "_reference": "MYPEN", + "name": "MYPEN27" + } + }, + { + "date": "2010-12-05", + "name": "MYPGU38", + "port": { + "_reference": "MYPGU", + "name": "MYPGU39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "61896", + "stops": [ + { + "date": "2010-12-02", + "name": "MYPEN28", + "port": { + "_reference": "MYPEN", + "name": "MYPEN29" + } + }, + { + "date": "2010-12-05", + "name": "MYPKG38", + "port": { + "_reference": "MYPKG", + "name": "MYPKG39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62014", + "stops": [ + { + "date": "2010-12-02", + "name": "NLRTM58", + "port": { + "_reference": "NLRTM", + "name": "NLRTM59" + } + }, + { + "date": "2010-12-07", + "name": "GBTHP40", + "port": { + "_reference": "GBTHP", + "name": "GBTHP41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62127", + "stops": [ + { + "date": "2010-12-02", + "name": "NLTLB34", + "port": { + "_reference": "NLTLB", + "name": "NLTLB35" + } + }, + { + "date": "2010-12-05", + "name": "NLRTM60", + "port": { + "_reference": "NLRTM", + "name": "NLRTM61" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62190", + "stops": [ + { + "date": "2010-12-02", + "name": "NOAES10", + "port": { + "_reference": "NOAES", + "name": "NOAES11" + } + }, + { + "date": "2010-12-07", + "name": "GBBHM40", + "port": { + "_reference": "GBBHM", + "name": "GBBHM41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62237", + "stops": [ + { + "date": "2010-12-02", + "name": "NOAES12", + "port": { + "_reference": "NOAES", + "name": "NOAES13" + } + }, + { + "date": "2010-12-07", + "name": "TNTUN12", + "port": { + "_reference": "TNTUN", + "name": "TNTUN13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62341", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS36", + "port": { + "_reference": "NOKRS", + "name": "NOKRS37" + } + }, + { + "date": "2010-12-07", + "name": "DEBFE50", + "port": { + "_reference": "DEBFE", + "name": "DEBFE51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62347", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS38", + "port": { + "_reference": "NOKRS", + "name": "NOKRS39" + } + }, + { + "date": "2010-12-07", + "name": "DEHAM20", + "port": { + "_reference": "DEHAM", + "name": "DEHAM21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62371", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS40", + "port": { + "_reference": "NOKRS", + "name": "NOKRS41" + } + }, + { + "date": "2010-12-07", + "name": "GBBEL42", + "port": { + "_reference": "GBBEL", + "name": "GBBEL43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62380", + "stops": [ + { + "date": "2010-12-02", + "name": "NOKRS42", + "port": { + "_reference": "NOKRS", + "name": "NOKRS43" + } + }, + { + "date": "2010-12-07", + "name": "GRPIR10", + "port": { + "_reference": "GRPIR", + "name": "GRPIR11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62548", + "stops": [ + { + "date": "2010-12-02", + "name": "PHCEB22", + "port": { + "_reference": "PHCEB", + "name": "PHCEB23" + } + }, + { + "date": "2010-12-07", + "name": "SGSIN36", + "port": { + "_reference": "SGSIN", + "name": "SGSIN37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62566", + "stops": [ + { + "date": "2010-12-02", + "name": "PHMNL30", + "port": { + "_reference": "PHMNL", + "name": "PHMNL31" + } + }, + { + "date": "2010-12-07", + "name": "INNAH24", + "port": { + "_reference": "INNAH", + "name": "INNAH25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62648", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDN10", + "port": { + "_reference": "PLGDN", + "name": "PLGDN11" + } + }, + { + "date": "2010-12-07", + "name": "CHBSL16", + "port": { + "_reference": "CHBSL", + "name": "CHBSL17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62662", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDN12", + "port": { + "_reference": "PLGDN", + "name": "PLGDN13" + } + }, + { + "date": "2010-12-07", + "name": "DENUE42", + "port": { + "_reference": "DENUE", + "name": "DENUE43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62811", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY54", + "port": { + "_reference": "PLGDY", + "name": "PLGDY55" + } + }, + { + "date": "2010-12-05", + "name": "PLSZZ38", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62812", + "stops": [ + { + "date": "2010-12-02", + "name": "PLGDY56", + "port": { + "_reference": "PLGDY", + "name": "PLGDY57" + } + }, + { + "date": "2010-12-05", + "name": "PLWRP28", + "port": { + "_reference": "PLWRP", + "name": "PLWRP29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62852", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ40", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ41" + } + }, + { + "date": "2010-12-07", + "name": "EGPSD16", + "port": { + "_reference": "EGPSD", + "name": "EGPSD17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62874", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ42", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ43" + } + }, + { + "date": "2010-12-07", + "name": "GBTIL38", + "port": { + "_reference": "GBTIL", + "name": "GBTIL39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62877", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ44", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ45" + } + }, + { + "date": "2010-12-07", + "name": "HUBUD32", + "port": { + "_reference": "HUBUD", + "name": "HUBUD33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62902", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ46", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ47" + } + }, + { + "date": "2010-12-05", + "name": "PLGDY58", + "port": { + "_reference": "PLGDY", + "name": "PLGDY59" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62903", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ48", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ49" + } + }, + { + "date": "2010-12-05", + "name": "PLWRP30", + "port": { + "_reference": "PLWRP", + "name": "PLWRP31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62914", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ50", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ51" + } + }, + { + "date": "2010-12-07", + "name": "TNTUN14", + "port": { + "_reference": "TNTUN", + "name": "TNTUN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62916", + "stops": [ + { + "date": "2010-12-02", + "name": "PLSZZ52", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ53" + } + }, + { + "date": "2010-12-07", + "name": "TRIZM8", + "port": { + "_reference": "TRIZM", + "name": "TRIZM9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62960", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP32", + "port": { + "_reference": "PLWRP", + "name": "PLWRP33" + } + }, + { + "date": "2010-12-07", + "name": "GBGLW38", + "port": { + "_reference": "GBGLW", + "name": "GBGLW39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62986", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP34", + "port": { + "_reference": "PLWRP", + "name": "PLWRP35" + } + }, + { + "date": "2010-12-07", + "name": "NLRTM62", + "port": { + "_reference": "NLRTM", + "name": "NLRTM63" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "62994", + "stops": [ + { + "date": "2010-12-02", + "name": "PLWRP36", + "port": { + "_reference": "PLWRP", + "name": "PLWRP37" + } + }, + { + "date": "2010-12-05", + "name": "PLSZZ54", + "port": { + "_reference": "PLSZZ", + "name": "PLSZZ55" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63063", + "stops": [ + { + "date": "2010-12-02", + "name": "PTLIS48", + "port": { + "_reference": "PTLIS", + "name": "PTLIS49" + } + }, + { + "date": "2010-12-07", + "name": "ITGIT26", + "port": { + "_reference": "ITGIT", + "name": "ITGIT27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63125", + "stops": [ + { + "date": "2010-12-02", + "name": "ROCND12", + "port": { + "_reference": "ROCND", + "name": "ROCND13" + } + }, + { + "date": "2010-12-07", + "name": "CHBSL18", + "port": { + "_reference": "CHBSL", + "name": "CHBSL19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63150", + "stops": [ + { + "date": "2010-12-02", + "name": "ROCND14", + "port": { + "_reference": "ROCND", + "name": "ROCND15" + } + }, + { + "date": "2010-12-07", + "name": "ESLPA26", + "port": { + "_reference": "ESLPA", + "name": "ESLPA27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63153", + "stops": [ + { + "date": "2010-12-02", + "name": "ROCND16", + "port": { + "_reference": "ROCND", + "name": "ROCND17" + } + }, + { + "date": "2010-12-07", + "name": "FIHEL58", + "port": { + "_reference": "FIHEL", + "name": "FIHEL59" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63228", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED78", + "port": { + "_reference": "RULED", + "name": "RULED79" + } + }, + { + "date": "2010-12-07", + "name": "DEHAM22", + "port": { + "_reference": "DEHAM", + "name": "DEHAM23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63234", + "stops": [ + { + "date": "2010-12-02", + "name": "RULED80", + "port": { + "_reference": "RULED", + "name": "RULED81" + } + }, + { + "date": "2010-12-07", + "name": "DZALG18", + "port": { + "_reference": "DZALG", + "name": "DZALG19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63314", + "stops": [ + { + "date": "2010-12-02", + "name": "SADMN6", + "port": { + "_reference": "SADMN", + "name": "SADMN7" + } + }, + { + "date": "2010-12-05", + "name": "SAJED12", + "port": { + "_reference": "SAJED", + "name": "SAJED13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63321", + "stops": [ + { + "date": "2010-12-02", + "name": "SAJED14", + "port": { + "_reference": "SAJED", + "name": "SAJED15" + } + }, + { + "date": "2010-12-07", + "name": "KWKWI12", + "port": { + "_reference": "KWKWI", + "name": "KWKWI13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63407", + "stops": [ + { + "date": "2010-12-02", + "name": "SEGOT66", + "port": { + "_reference": "SEGOT", + "name": "SEGOT67" + } + }, + { + "date": "2010-12-05", + "name": "SEHEL38", + "port": { + "_reference": "SEHEL", + "name": "SEHEL39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63491", + "stops": [ + { + "date": "2010-12-02", + "name": "SEHEL40", + "port": { + "_reference": "SEHEL", + "name": "SEHEL41" + } + }, + { + "date": "2010-12-07", + "name": "PLGDN14", + "port": { + "_reference": "PLGDN", + "name": "PLGDN15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63514", + "stops": [ + { + "date": "2010-12-02", + "name": "SESTO12", + "port": { + "_reference": "SESTO", + "name": "SESTO13" + } + }, + { + "date": "2010-12-07", + "name": "CZPRG40", + "port": { + "_reference": "CZPRG", + "name": "CZPRG41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63583", + "stops": [ + { + "date": "2010-12-02", + "name": "SESTO14", + "port": { + "_reference": "SESTO", + "name": "SESTO15" + } + }, + { + "date": "2010-12-07", + "name": "PLGDY60", + "port": { + "_reference": "PLGDY", + "name": "PLGDY61" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63775", + "stops": [ + { + "date": "2010-12-02", + "name": "SILJU14", + "port": { + "_reference": "SILJU", + "name": "SILJU15" + } + }, + { + "date": "2010-12-07", + "name": "ITGOA32", + "port": { + "_reference": "ITGOA", + "name": "ITGOA33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63804", + "stops": [ + { + "date": "2010-12-02", + "name": "SILJU16", + "port": { + "_reference": "SILJU", + "name": "SILJU17" + } + }, + { + "date": "2010-12-05", + "name": "SIKOP28", + "port": { + "_reference": "SIKOP", + "name": "SIKOP29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63910", + "stops": [ + { + "date": "2010-12-02", + "name": "SYTTS10", + "port": { + "_reference": "SYTTS", + "name": "SYTTS11" + } + }, + { + "date": "2010-12-07", + "name": "DEBER42", + "port": { + "_reference": "DEBER", + "name": "DEBER43" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "63952", + "stops": [ + { + "date": "2010-12-02", + "name": "SYTTS12", + "port": { + "_reference": "SYTTS", + "name": "SYTTS13" + } + }, + { + "date": "2010-12-07", + "name": "HUBUD34", + "port": { + "_reference": "HUBUD", + "name": "HUBUD35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64000", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK32", + "port": { + "_reference": "THBKK", + "name": "THBKK33" + } + }, + { + "date": "2010-12-07", + "name": "INDEL44", + "port": { + "_reference": "INDEL", + "name": "INDEL45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64018", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK34", + "port": { + "_reference": "THBKK", + "name": "THBKK35" + } + }, + { + "date": "2010-12-05", + "name": "THLCH30", + "port": { + "_reference": "THLCH", + "name": "THLCH31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64019", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK36", + "port": { + "_reference": "THBKK", + "name": "THBKK37" + } + }, + { + "date": "2010-12-05", + "name": "THLKG30", + "port": { + "_reference": "THLKG", + "name": "THLKG31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64020", + "stops": [ + { + "date": "2010-12-02", + "name": "THBKK38", + "port": { + "_reference": "THBKK", + "name": "THBKK39" + } + }, + { + "date": "2010-12-05", + "name": "THSGZ10", + "port": { + "_reference": "THSGZ", + "name": "THSGZ11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64039", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH32", + "port": { + "_reference": "THLCH", + "name": "THLCH33" + } + }, + { + "date": "2010-12-07", + "name": "MMRGN32", + "port": { + "_reference": "MMRGN", + "name": "MMRGN33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64049", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH34", + "port": { + "_reference": "THLCH", + "name": "THLCH35" + } + }, + { + "date": "2010-12-05", + "name": "THLKG32", + "port": { + "_reference": "THLKG", + "name": "THLKG33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64050", + "stops": [ + { + "date": "2010-12-02", + "name": "THLCH36", + "port": { + "_reference": "THLCH", + "name": "THLCH37" + } + }, + { + "date": "2010-12-05", + "name": "THSGZ12", + "port": { + "_reference": "THSGZ", + "name": "THSGZ13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64079", + "stops": [ + { + "date": "2010-12-02", + "name": "THLKG34", + "port": { + "_reference": "THLKG", + "name": "THLKG35" + } + }, + { + "date": "2010-12-05", + "name": "THLCH38", + "port": { + "_reference": "THLCH", + "name": "THLCH39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64101", + "stops": [ + { + "date": "2010-12-02", + "name": "THSGZ14", + "port": { + "_reference": "THSGZ", + "name": "THSGZ15" + } + }, + { + "date": "2010-12-07", + "name": "MYPGU40", + "port": { + "_reference": "MYPGU", + "name": "MYPGU41" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64105", + "stops": [ + { + "date": "2010-12-02", + "name": "THSGZ16", + "port": { + "_reference": "THSGZ", + "name": "THSGZ17" + } + }, + { + "date": "2010-12-07", + "name": "PKBQM12", + "port": { + "_reference": "PKBQM", + "name": "PKBQM13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64238", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIST24", + "port": { + "_reference": "TRIST", + "name": "TRIST25" + } + }, + { + "date": "2010-12-07", + "name": "FRFOS32", + "port": { + "_reference": "FRFOS", + "name": "FRFOS33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64320", + "stops": [ + { + "date": "2010-12-02", + "name": "TRIZM10", + "port": { + "_reference": "TRIZM", + "name": "TRIZM11" + } + }, + { + "date": "2010-12-07", + "name": "EGPSD18", + "port": { + "_reference": "EGPSD", + "name": "EGPSD19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64417", + "stops": [ + { + "date": "2010-12-02", + "name": "TRMER12", + "port": { + "_reference": "TRMER", + "name": "TRMER13" + } + }, + { + "date": "2010-12-07", + "name": "FIHEL60", + "port": { + "_reference": "FIHEL", + "name": "FIHEL61" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64458", + "stops": [ + { + "date": "2010-12-02", + "name": "TRMER14", + "port": { + "_reference": "TRMER", + "name": "TRMER15" + } + }, + { + "date": "2010-12-07", + "name": "NOKRS44", + "port": { + "_reference": "NOKRS", + "name": "NOKRS45" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64478", + "stops": [ + { + "date": "2010-12-02", + "name": "TWKEL0", + "port": { + "_reference": "TWKEL", + "name": "TWKEL1" + } + }, + { + "date": "2010-12-05", + "name": "TWTXG2", + "port": { + "_reference": "TWTXG", + "name": "TWTXG3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64479", + "stops": [ + { + "date": "2010-12-02", + "name": "TWKEL2", + "port": { + "_reference": "TWKEL", + "name": "TWKEL3" + } + }, + { + "date": "2010-12-05", + "name": "TWTYU1", + "port": { + "_reference": "TWTYU", + "name": "TWTYU2" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64481", + "stops": [ + { + "date": "2010-12-02", + "name": "TWKHH4", + "port": { + "_reference": "TWKHH", + "name": "TWKHH5" + } + }, + { + "date": "2010-12-05", + "name": "TWTXG4", + "port": { + "_reference": "TWTXG", + "name": "TWTXG5" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64482", + "stops": [ + { + "date": "2010-12-02", + "name": "TWKHH6", + "port": { + "_reference": "TWKHH", + "name": "TWKHH7" + } + }, + { + "date": "2010-12-05", + "name": "TWTYU3", + "port": { + "_reference": "TWTYU", + "name": "TWTYU4" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64509", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL14", + "port": { + "_reference": "USATL", + "name": "USATL15" + } + }, + { + "date": "2010-12-05", + "name": "USBNA16", + "port": { + "_reference": "USBNA", + "name": "USBNA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64515", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL16", + "port": { + "_reference": "USATL", + "name": "USATL17" + } + }, + { + "date": "2010-12-05", + "name": "USILM12", + "port": { + "_reference": "USILM", + "name": "USILM13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64517", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL18", + "port": { + "_reference": "USATL", + "name": "USATL19" + } + }, + { + "date": "2010-12-05", + "name": "USJAX16", + "port": { + "_reference": "USJAX", + "name": "USJAX17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64519", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL20", + "port": { + "_reference": "USATL", + "name": "USATL21" + } + }, + { + "date": "2010-12-05", + "name": "USMEM18", + "port": { + "_reference": "USMEM", + "name": "USMEM19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64520", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL22", + "port": { + "_reference": "USATL", + "name": "USATL23" + } + }, + { + "date": "2010-12-05", + "name": "USMIA14", + "port": { + "_reference": "USMIA", + "name": "USMIA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64521", + "stops": [ + { + "date": "2010-12-02", + "name": "USATL24", + "port": { + "_reference": "USATL", + "name": "USATL25" + } + }, + { + "date": "2010-12-05", + "name": "USMOB10", + "port": { + "_reference": "USMOB", + "name": "USMOB11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64533", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA18", + "port": { + "_reference": "USBNA", + "name": "USBNA19" + } + }, + { + "date": "2010-12-05", + "name": "USATL26", + "port": { + "_reference": "USATL", + "name": "USATL27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64536", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA20", + "port": { + "_reference": "USBNA", + "name": "USBNA21" + } + }, + { + "date": "2010-12-05", + "name": "USHSV6", + "port": { + "_reference": "USHSV", + "name": "USHSV7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64537", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA22", + "port": { + "_reference": "USBNA", + "name": "USBNA23" + } + }, + { + "date": "2010-12-05", + "name": "USILM14", + "port": { + "_reference": "USILM", + "name": "USILM15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64539", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA24", + "port": { + "_reference": "USBNA", + "name": "USBNA25" + } + }, + { + "date": "2010-12-05", + "name": "USJAX18", + "port": { + "_reference": "USJAX", + "name": "USJAX19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64540", + "stops": [ + { + "date": "2010-12-02", + "name": "USBNA26", + "port": { + "_reference": "USBNA", + "name": "USBNA27" + } + }, + { + "date": "2010-12-05", + "name": "USMEM20", + "port": { + "_reference": "USMEM", + "name": "USMEM21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64551", + "stops": [ + { + "date": "2010-12-02", + "name": "USBUF2", + "port": { + "_reference": "USBUF", + "name": "USBUF3" + } + }, + { + "date": "2010-12-05", + "name": "USBAL10", + "port": { + "_reference": "USBAL", + "name": "USBAL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64562", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI28", + "port": { + "_reference": "USCHI", + "name": "USCHI29" + } + }, + { + "date": "2010-12-05", + "name": "USATL28", + "port": { + "_reference": "USATL", + "name": "USATL29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64564", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI30", + "port": { + "_reference": "USCHI", + "name": "USCHI31" + } + }, + { + "date": "2010-12-05", + "name": "USCMH18", + "port": { + "_reference": "USCMH", + "name": "USCMH19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64565", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI32", + "port": { + "_reference": "USCHI", + "name": "USCHI33" + } + }, + { + "date": "2010-12-05", + "name": "USCVG12", + "port": { + "_reference": "USCVG", + "name": "USCVG13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64566", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI34", + "port": { + "_reference": "USCHI", + "name": "USCHI35" + } + }, + { + "date": "2010-12-05", + "name": "USDET22", + "port": { + "_reference": "USDET", + "name": "USDET23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64569", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI36", + "port": { + "_reference": "USCHI", + "name": "USCHI37" + } + }, + { + "date": "2010-12-05", + "name": "USKCK14", + "port": { + "_reference": "USKCK", + "name": "USKCK15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64571", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI38", + "port": { + "_reference": "USCHI", + "name": "USCHI39" + } + }, + { + "date": "2010-12-05", + "name": "USMSP14", + "port": { + "_reference": "USMSP", + "name": "USMSP15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64572", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI40", + "port": { + "_reference": "USCHI", + "name": "USCHI41" + } + }, + { + "date": "2010-12-05", + "name": "USNYC18", + "port": { + "_reference": "USNYC", + "name": "USNYC19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64573", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI42", + "port": { + "_reference": "USCHI", + "name": "USCHI43" + } + }, + { + "date": "2010-12-05", + "name": "USOMA14", + "port": { + "_reference": "USOMA", + "name": "USOMA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64574", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI44", + "port": { + "_reference": "USCHI", + "name": "USCHI45" + } + }, + { + "date": "2010-12-05", + "name": "USPDX6", + "port": { + "_reference": "USPDX", + "name": "USPDX7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64575", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI46", + "port": { + "_reference": "USCHI", + "name": "USCHI47" + } + }, + { + "date": "2010-12-05", + "name": "USSDF12", + "port": { + "_reference": "USSDF", + "name": "USSDF13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64577", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHI48", + "port": { + "_reference": "USCHI", + "name": "USCHI49" + } + }, + { + "date": "2010-12-05", + "name": "USSTL10", + "port": { + "_reference": "USSTL", + "name": "USSTL11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64579", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS12", + "port": { + "_reference": "USCHS", + "name": "USCHS13" + } + }, + { + "date": "2010-12-05", + "name": "USBNA28", + "port": { + "_reference": "USBNA", + "name": "USBNA29" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64580", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS14", + "port": { + "_reference": "USCHS", + "name": "USCHS15" + } + }, + { + "date": "2010-12-05", + "name": "USCLT12", + "port": { + "_reference": "USCLT", + "name": "USCLT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64582", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS16", + "port": { + "_reference": "USCHS", + "name": "USCHS17" + } + }, + { + "date": "2010-12-05", + "name": "USILM16", + "port": { + "_reference": "USILM", + "name": "USILM17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64584", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS18", + "port": { + "_reference": "USCHS", + "name": "USCHS19" + } + }, + { + "date": "2010-12-05", + "name": "USJAX20", + "port": { + "_reference": "USJAX", + "name": "USJAX21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64585", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS20", + "port": { + "_reference": "USCHS", + "name": "USCHS21" + } + }, + { + "date": "2010-12-05", + "name": "USMEM22", + "port": { + "_reference": "USMEM", + "name": "USMEM23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64586", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS22", + "port": { + "_reference": "USCHS", + "name": "USCHS23" + } + }, + { + "date": "2010-12-05", + "name": "USMIA16", + "port": { + "_reference": "USMIA", + "name": "USMIA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64587", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS24", + "port": { + "_reference": "USCHS", + "name": "USCHS25" + } + }, + { + "date": "2010-12-05", + "name": "USMOB12", + "port": { + "_reference": "USMOB", + "name": "USMOB13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64588", + "stops": [ + { + "date": "2010-12-02", + "name": "USCHS26", + "port": { + "_reference": "USCHS", + "name": "USCHS27" + } + }, + { + "date": "2010-12-05", + "name": "USSAV8", + "port": { + "_reference": "USSAV", + "name": "USSAV9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64591", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE16", + "port": { + "_reference": "USCLE", + "name": "USCLE17" + } + }, + { + "date": "2010-12-05", + "name": "USCMH20", + "port": { + "_reference": "USCMH", + "name": "USCMH21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64592", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE18", + "port": { + "_reference": "USCLE", + "name": "USCLE19" + } + }, + { + "date": "2010-12-05", + "name": "USCVG14", + "port": { + "_reference": "USCVG", + "name": "USCVG15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64593", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE20", + "port": { + "_reference": "USCLE", + "name": "USCLE21" + } + }, + { + "date": "2010-12-05", + "name": "USDET24", + "port": { + "_reference": "USDET", + "name": "USDET25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64595", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE22", + "port": { + "_reference": "USCLE", + "name": "USCLE23" + } + }, + { + "date": "2010-12-05", + "name": "USKCK16", + "port": { + "_reference": "USKCK", + "name": "USKCK17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64596", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE24", + "port": { + "_reference": "USCLE", + "name": "USCLE25" + } + }, + { + "date": "2010-12-05", + "name": "USMSP16", + "port": { + "_reference": "USMSP", + "name": "USMSP17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64597", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE26", + "port": { + "_reference": "USCLE", + "name": "USCLE27" + } + }, + { + "date": "2010-12-05", + "name": "USOMA16", + "port": { + "_reference": "USOMA", + "name": "USOMA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64598", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE28", + "port": { + "_reference": "USCLE", + "name": "USCLE29" + } + }, + { + "date": "2010-12-05", + "name": "USSDF14", + "port": { + "_reference": "USSDF", + "name": "USSDF15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64599", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLE30", + "port": { + "_reference": "USCLE", + "name": "USCLE31" + } + }, + { + "date": "2010-12-05", + "name": "USSTL12", + "port": { + "_reference": "USSTL", + "name": "USSTL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64604", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT14", + "port": { + "_reference": "USCLT", + "name": "USCLT15" + } + }, + { + "date": "2010-12-05", + "name": "USILM18", + "port": { + "_reference": "USILM", + "name": "USILM19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64606", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT16", + "port": { + "_reference": "USCLT", + "name": "USCLT17" + } + }, + { + "date": "2010-12-05", + "name": "USJAX22", + "port": { + "_reference": "USJAX", + "name": "USJAX23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64607", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT18", + "port": { + "_reference": "USCLT", + "name": "USCLT19" + } + }, + { + "date": "2010-12-05", + "name": "USMEM24", + "port": { + "_reference": "USMEM", + "name": "USMEM25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64608", + "stops": [ + { + "date": "2010-12-02", + "name": "USCLT20", + "port": { + "_reference": "USCLT", + "name": "USCLT21" + } + }, + { + "date": "2010-12-05", + "name": "USMIA18", + "port": { + "_reference": "USMIA", + "name": "USMIA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64614", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH22", + "port": { + "_reference": "USCMH", + "name": "USCMH23" + } + }, + { + "date": "2010-12-05", + "name": "USCVG16", + "port": { + "_reference": "USCVG", + "name": "USCVG17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64617", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH24", + "port": { + "_reference": "USCMH", + "name": "USCMH25" + } + }, + { + "date": "2010-12-05", + "name": "USKCK18", + "port": { + "_reference": "USKCK", + "name": "USKCK19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64618", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH26", + "port": { + "_reference": "USCMH", + "name": "USCMH27" + } + }, + { + "date": "2010-12-05", + "name": "USMSP18", + "port": { + "_reference": "USMSP", + "name": "USMSP19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64619", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH28", + "port": { + "_reference": "USCMH", + "name": "USCMH29" + } + }, + { + "date": "2010-12-05", + "name": "USOMA18", + "port": { + "_reference": "USOMA", + "name": "USOMA19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64620", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH30", + "port": { + "_reference": "USCMH", + "name": "USCMH31" + } + }, + { + "date": "2010-12-05", + "name": "USSDF16", + "port": { + "_reference": "USSDF", + "name": "USSDF17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64621", + "stops": [ + { + "date": "2010-12-02", + "name": "USCMH32", + "port": { + "_reference": "USCMH", + "name": "USCMH33" + } + }, + { + "date": "2010-12-05", + "name": "USSTL14", + "port": { + "_reference": "USSTL", + "name": "USSTL15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64634", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL8", + "port": { + "_reference": "USDAL", + "name": "USDAL9" + } + }, + { + "date": "2010-12-05", + "name": "USELP6", + "port": { + "_reference": "USELP", + "name": "USELP7" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64635", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL10", + "port": { + "_reference": "USDAL", + "name": "USDAL11" + } + }, + { + "date": "2010-12-05", + "name": "USHOU30", + "port": { + "_reference": "USHOU", + "name": "USHOU31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64637", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL12", + "port": { + "_reference": "USDAL", + "name": "USDAL13" + } + }, + { + "date": "2010-12-05", + "name": "USMSY12", + "port": { + "_reference": "USMSY", + "name": "USMSY13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64638", + "stops": [ + { + "date": "2010-12-02", + "name": "USDAL14", + "port": { + "_reference": "USDAL", + "name": "USDAL15" + } + }, + { + "date": "2010-12-05", + "name": "USSAT8", + "port": { + "_reference": "USSAT", + "name": "USSAT9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64645", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET26", + "port": { + "_reference": "USDET", + "name": "USDET27" + } + }, + { + "date": "2010-12-05", + "name": "USCVG18", + "port": { + "_reference": "USCVG", + "name": "USCVG19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64647", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET28", + "port": { + "_reference": "USDET", + "name": "USDET29" + } + }, + { + "date": "2010-12-05", + "name": "USKCK20", + "port": { + "_reference": "USKCK", + "name": "USKCK21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64649", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET30", + "port": { + "_reference": "USDET", + "name": "USDET31" + } + }, + { + "date": "2010-12-05", + "name": "USOMA20", + "port": { + "_reference": "USOMA", + "name": "USOMA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64650", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET32", + "port": { + "_reference": "USDET", + "name": "USDET33" + } + }, + { + "date": "2010-12-05", + "name": "USSDF18", + "port": { + "_reference": "USSDF", + "name": "USSDF19" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64651", + "stops": [ + { + "date": "2010-12-02", + "name": "USDET34", + "port": { + "_reference": "USDET", + "name": "USDET35" + } + }, + { + "date": "2010-12-05", + "name": "USSTL16", + "port": { + "_reference": "USSTL", + "name": "USSTL17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64654", + "stops": [ + { + "date": "2010-12-02", + "name": "USELP8", + "port": { + "_reference": "USELP", + "name": "USELP9" + } + }, + { + "date": "2010-12-05", + "name": "USHOU32", + "port": { + "_reference": "USHOU", + "name": "USHOU33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64657", + "stops": [ + { + "date": "2010-12-02", + "name": "USELP10", + "port": { + "_reference": "USELP", + "name": "USELP11" + } + }, + { + "date": "2010-12-05", + "name": "USSAT10", + "port": { + "_reference": "USSAT", + "name": "USSAT11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64669", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU34", + "port": { + "_reference": "USHOU", + "name": "USHOU35" + } + }, + { + "date": "2010-12-05", + "name": "USATL30", + "port": { + "_reference": "USATL", + "name": "USATL31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64675", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU36", + "port": { + "_reference": "USHOU", + "name": "USHOU37" + } + }, + { + "date": "2010-12-05", + "name": "USMSY14", + "port": { + "_reference": "USMSY", + "name": "USMSY15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64676", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU38", + "port": { + "_reference": "USHOU", + "name": "USHOU39" + } + }, + { + "date": "2010-12-05", + "name": "USNYC20", + "port": { + "_reference": "USNYC", + "name": "USNYC21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64677", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU40", + "port": { + "_reference": "USHOU", + "name": "USHOU41" + } + }, + { + "date": "2010-12-05", + "name": "USPDX8", + "port": { + "_reference": "USPDX", + "name": "USPDX9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64678", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU42", + "port": { + "_reference": "USHOU", + "name": "USHOU43" + } + }, + { + "date": "2010-12-05", + "name": "USSAT12", + "port": { + "_reference": "USSAT", + "name": "USSAT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64679", + "stops": [ + { + "date": "2010-12-02", + "name": "USHOU44", + "port": { + "_reference": "USHOU", + "name": "USHOU45" + } + }, + { + "date": "2010-12-05", + "name": "USSEA14", + "port": { + "_reference": "USSEA", + "name": "USSEA15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64681", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV8", + "port": { + "_reference": "USHSV", + "name": "USHSV9" + } + }, + { + "date": "2010-12-05", + "name": "USBNA30", + "port": { + "_reference": "USBNA", + "name": "USBNA31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64684", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV10", + "port": { + "_reference": "USHSV", + "name": "USHSV11" + } + }, + { + "date": "2010-12-05", + "name": "USILM20", + "port": { + "_reference": "USILM", + "name": "USILM21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64686", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV12", + "port": { + "_reference": "USHSV", + "name": "USHSV13" + } + }, + { + "date": "2010-12-05", + "name": "USJAX24", + "port": { + "_reference": "USJAX", + "name": "USJAX25" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64687", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV14", + "port": { + "_reference": "USHSV", + "name": "USHSV15" + } + }, + { + "date": "2010-12-05", + "name": "USMEM26", + "port": { + "_reference": "USMEM", + "name": "USMEM27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64688", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV16", + "port": { + "_reference": "USHSV", + "name": "USHSV17" + } + }, + { + "date": "2010-12-05", + "name": "USMIA20", + "port": { + "_reference": "USMIA", + "name": "USMIA21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64689", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV18", + "port": { + "_reference": "USHSV", + "name": "USHSV19" + } + }, + { + "date": "2010-12-05", + "name": "USMOB14", + "port": { + "_reference": "USMOB", + "name": "USMOB15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64690", + "stops": [ + { + "date": "2010-12-02", + "name": "USHSV20", + "port": { + "_reference": "USHSV", + "name": "USHSV21" + } + }, + { + "date": "2010-12-05", + "name": "USSAV10", + "port": { + "_reference": "USSAV", + "name": "USSAV11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64705", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND16", + "port": { + "_reference": "USIND", + "name": "USIND17" + } + }, + { + "date": "2010-12-05", + "name": "USCMH34", + "port": { + "_reference": "USCMH", + "name": "USCMH35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64706", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND18", + "port": { + "_reference": "USIND", + "name": "USIND19" + } + }, + { + "date": "2010-12-05", + "name": "USCVG20", + "port": { + "_reference": "USCVG", + "name": "USCVG21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64708", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND20", + "port": { + "_reference": "USIND", + "name": "USIND21" + } + }, + { + "date": "2010-12-05", + "name": "USKCK22", + "port": { + "_reference": "USKCK", + "name": "USKCK23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64709", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND22", + "port": { + "_reference": "USIND", + "name": "USIND23" + } + }, + { + "date": "2010-12-05", + "name": "USMSP20", + "port": { + "_reference": "USMSP", + "name": "USMSP21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64710", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND24", + "port": { + "_reference": "USIND", + "name": "USIND25" + } + }, + { + "date": "2010-12-05", + "name": "USOMA22", + "port": { + "_reference": "USOMA", + "name": "USOMA23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64711", + "stops": [ + { + "date": "2010-12-02", + "name": "USIND26", + "port": { + "_reference": "USIND", + "name": "USIND27" + } + }, + { + "date": "2010-12-05", + "name": "USSDF20", + "port": { + "_reference": "USSDF", + "name": "USSDF21" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64750", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB18", + "port": { + "_reference": "USLGB", + "name": "USLGB19" + } + }, + { + "date": "2010-12-05", + "name": "USATL32", + "port": { + "_reference": "USATL", + "name": "USATL33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64751", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB20", + "port": { + "_reference": "USLGB", + "name": "USLGB21" + } + }, + { + "date": "2010-12-05", + "name": "USCHI50", + "port": { + "_reference": "USCHI", + "name": "USCHI51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64752", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB22", + "port": { + "_reference": "USLGB", + "name": "USLGB23" + } + }, + { + "date": "2010-12-05", + "name": "USHOU46", + "port": { + "_reference": "USHOU", + "name": "USHOU47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64753", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB24", + "port": { + "_reference": "USLGB", + "name": "USLGB25" + } + }, + { + "date": "2010-12-05", + "name": "USLAX2", + "port": { + "_reference": "USLAX", + "name": "USLAX3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64754", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB26", + "port": { + "_reference": "USLGB", + "name": "USLGB27" + } + }, + { + "date": "2010-12-05", + "name": "USNYC22", + "port": { + "_reference": "USNYC", + "name": "USNYC23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64755", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB28", + "port": { + "_reference": "USLGB", + "name": "USLGB29" + } + }, + { + "date": "2010-12-05", + "name": "USPDX10", + "port": { + "_reference": "USPDX", + "name": "USPDX11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64756", + "stops": [ + { + "date": "2010-12-02", + "name": "USLGB30", + "port": { + "_reference": "USLGB", + "name": "USLGB31" + } + }, + { + "date": "2010-12-05", + "name": "USSEA16", + "port": { + "_reference": "USSEA", + "name": "USSEA17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64760", + "stops": [ + { + "date": "2010-12-02", + "name": "USLRD6", + "port": { + "_reference": "USLRD", + "name": "USLRD7" + } + }, + { + "date": "2010-12-05", + "name": "USHOU48", + "port": { + "_reference": "USHOU", + "name": "USHOU49" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64761", + "stops": [ + { + "date": "2010-12-02", + "name": "USLRD8", + "port": { + "_reference": "USLRD", + "name": "USLRD9" + } + }, + { + "date": "2010-12-05", + "name": "USMSY16", + "port": { + "_reference": "USMSY", + "name": "USMSY17" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64762", + "stops": [ + { + "date": "2010-12-02", + "name": "USLRD10", + "port": { + "_reference": "USLRD", + "name": "USLRD11" + } + }, + { + "date": "2010-12-05", + "name": "USSAT14", + "port": { + "_reference": "USSAT", + "name": "USSAT15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64767", + "stops": [ + { + "date": "2010-12-02", + "name": "USMEM28", + "port": { + "_reference": "USMEM", + "name": "USMEM29" + } + }, + { + "date": "2010-12-05", + "name": "USCLT22", + "port": { + "_reference": "USCLT", + "name": "USCLT23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64769", + "stops": [ + { + "date": "2010-12-02", + "name": "USMEM30", + "port": { + "_reference": "USMEM", + "name": "USMEM31" + } + }, + { + "date": "2010-12-05", + "name": "USILM22", + "port": { + "_reference": "USILM", + "name": "USILM23" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64771", + "stops": [ + { + "date": "2010-12-02", + "name": "USMEM32", + "port": { + "_reference": "USMEM", + "name": "USMEM33" + } + }, + { + "date": "2010-12-05", + "name": "USJAX26", + "port": { + "_reference": "USJAX", + "name": "USJAX27" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64774", + "stops": [ + { + "date": "2010-12-02", + "name": "USMEM34", + "port": { + "_reference": "USMEM", + "name": "USMEM35" + } + }, + { + "date": "2010-12-05", + "name": "USSAV12", + "port": { + "_reference": "USSAV", + "name": "USSAV13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64783", + "stops": [ + { + "date": "2010-12-02", + "name": "USMIA22", + "port": { + "_reference": "USMIA", + "name": "USMIA23" + } + }, + { + "date": "2010-12-05", + "name": "USMEM36", + "port": { + "_reference": "USMEM", + "name": "USMEM37" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64817", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC24", + "port": { + "_reference": "USNYC", + "name": "USNYC25" + } + }, + { + "date": "2010-12-05", + "name": "USATL34", + "port": { + "_reference": "USATL", + "name": "USATL35" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64818", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC26", + "port": { + "_reference": "USNYC", + "name": "USNYC27" + } + }, + { + "date": "2010-12-05", + "name": "USBAL12", + "port": { + "_reference": "USBAL", + "name": "USBAL13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64819", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC28", + "port": { + "_reference": "USNYC", + "name": "USNYC29" + } + }, + { + "date": "2010-12-05", + "name": "USBOS10", + "port": { + "_reference": "USBOS", + "name": "USBOS11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64821", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC30", + "port": { + "_reference": "USNYC", + "name": "USNYC31" + } + }, + { + "date": "2010-12-05", + "name": "USCHI52", + "port": { + "_reference": "USCHI", + "name": "USCHI53" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64823", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC32", + "port": { + "_reference": "USNYC", + "name": "USNYC33" + } + }, + { + "date": "2010-12-05", + "name": "USHOU50", + "port": { + "_reference": "USHOU", + "name": "USHOU51" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64827", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC34", + "port": { + "_reference": "USNYC", + "name": "USNYC35" + } + }, + { + "date": "2010-12-05", + "name": "USPHL8", + "port": { + "_reference": "USPHL", + "name": "USPHL9" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64828", + "stops": [ + { + "date": "2010-12-02", + "name": "USNYC36", + "port": { + "_reference": "USNYC", + "name": "USNYC37" + } + }, + { + "date": "2010-12-05", + "name": "USPIT10", + "port": { + "_reference": "USPIT", + "name": "USPIT11" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64830", + "stops": [ + { + "date": "2010-12-02", + "name": "USOAK4", + "port": { + "_reference": "USOAK", + "name": "USOAK5" + } + }, + { + "date": "2010-12-05", + "name": "USDEN2", + "port": { + "_reference": "USDEN", + "name": "USDEN3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64831", + "stops": [ + { + "date": "2010-12-02", + "name": "USOAK6", + "port": { + "_reference": "USOAK", + "name": "USOAK7" + } + }, + { + "date": "2010-12-05", + "name": "USSLC2", + "port": { + "_reference": "USSLC", + "name": "USSLC3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64843", + "stops": [ + { + "date": "2010-12-02", + "name": "USORF2", + "port": { + "_reference": "USORF", + "name": "USORF3" + } + }, + { + "date": "2010-12-05", + "name": "USBAL14", + "port": { + "_reference": "USBAL", + "name": "USBAL15" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64849", + "stops": [ + { + "date": "2010-12-02", + "name": "USORF4", + "port": { + "_reference": "USORF", + "name": "USORF5" + } + }, + { + "date": "2010-12-05", + "name": "USPIT12", + "port": { + "_reference": "USPIT", + "name": "USPIT13" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64854", + "stops": [ + { + "date": "2010-12-02", + "name": "USPDX12", + "port": { + "_reference": "USPDX", + "name": "USPDX13" + } + }, + { + "date": "2010-12-05", + "name": "USCHI54", + "port": { + "_reference": "USCHI", + "name": "USCHI55" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64866", + "stops": [ + { + "date": "2010-12-02", + "name": "USPHX2", + "port": { + "_reference": "USPHX", + "name": "USPHX3" + } + }, + { + "date": "2010-12-05", + "name": "USLGB32", + "port": { + "_reference": "USLGB", + "name": "USLGB33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64881", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAV14", + "port": { + "_reference": "USSAV", + "name": "USSAV15" + } + }, + { + "date": "2010-12-05", + "name": "USBNA32", + "port": { + "_reference": "USBNA", + "name": "USBNA33" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64888", + "stops": [ + { + "date": "2010-12-02", + "name": "USSAV16", + "port": { + "_reference": "USSAV", + "name": "USSAV17" + } + }, + { + "date": "2010-12-05", + "name": "USMEM38", + "port": { + "_reference": "USMEM", + "name": "USMEM39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64911", + "stops": [ + { + "date": "2010-12-02", + "name": "USSEA18", + "port": { + "_reference": "USSEA", + "name": "USSEA19" + } + }, + { + "date": "2010-12-05", + "name": "USTIW2", + "port": { + "_reference": "USTIW", + "name": "USTIW3" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64949", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH40", + "port": { + "_reference": "VNHPH", + "name": "VNHPH41" + } + }, + { + "date": "2010-12-07", + "name": "SGSIN38", + "port": { + "_reference": "SGSIN", + "name": "SGSIN39" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64954", + "stops": [ + { + "date": "2010-12-02", + "name": "VNHPH42", + "port": { + "_reference": "VNHPH", + "name": "VNHPH43" + } + }, + { + "date": "2010-12-05", + "name": "VNSGN46", + "port": { + "_reference": "VNSGN", + "name": "VNSGN47" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64972", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN48", + "port": { + "_reference": "VNSGN", + "name": "VNSGN49" + } + }, + { + "date": "2010-12-07", + "name": "MYPEN30", + "port": { + "_reference": "MYPEN", + "name": "MYPEN31" + } + } + ], + "type": "legs" + }, + { + "capacity": 200, + "name": "64984", + "stops": [ + { + "date": "2010-12-02", + "name": "VNSGN50", + "port": { + "_reference": "VNSGN", + "name": "VNSGN51" + } + }, + { + "date": "2010-12-05", + "name": "VNHPH44", + "port": { + "_reference": "VNHPH", + "name": "VNHPH45" + } + } + ], + "type": "legs" + } + ], + "label": "name" +} diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/test_ecr.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/test_ecr.html new file mode 100644 index 0000000..548d04c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/ecr/test_ecr.html @@ -0,0 +1,88 @@ + + + + +Dojo Ecr + + + + + + + + + + + + + +
                                      + + + + + + +
                                      +
                                      +
                                      +
                                      +
                                      + + + + + + + + + + + + + + + + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/json/ContinentalEurope.json b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/json/ContinentalEurope.json new file mode 100644 index 0000000..3669b9a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/json/ContinentalEurope.json @@ -0,0 +1,222 @@ +{ + "layerExtent":[0.0, 0.0, 4170.268870073072, 2758.4157683894323], + "layerExtentLL":[-10.46209716796875, 34.58451461791992, 55.28059387207031, 36.56523513793945], + "featureNames":["MCO", "MDA", "MKD", "YUG", "LUX", "VAT", "LTU", "LIE", "LVA", "GBR", "TUR", "UKR", "IRL", "ITA", "GRC", "HUN", "ESP", "SVN", "CHE", "SWE", "ROM", "AUT", "PRT", "AND", "ALB", "SVK", "SMR", "BGR", "BIH", "BEL", "DNK", "BLR", "EST", "FIN", "CZE", "FRA", "DEU", "CYP", "GIB", "HRV", "NLD", "NOR", "POL"], + "features":{ + "MCO":{ + "shape":[1351, 2065, 1347, 2065, 1347, 2065, 1348, 2064, 1351, 2064, 1352, 2065, 1351, 2065], + "center":[1349, 2064], + "bbox":[1346.9852627088287, 2063.5793050294146, 4.5789507162537575, 1.676570863937286] + }, + "MDA":{ + "shape":[2930, 1937, 2923, 1929, 2924, 1914, 2920, 1901, 2916, 1893, 2919, 1881, 2925, 1868, 2929, 1855, 2928, 1838, 2915, 1818, 2905, 1814, 2886, 1805, 2878, 1794, 2872, 1782, 2861, 1776, 2850, 1767, 2850, 1754, 2835, 1736, 2821, 1725, 2801, 1724, 2815, 1712, 2846, 1712, 2870, 1711, 2902, 1721, 2922, 1730, 2942, 1728, 2965, 1730, 2970, 1736, 2985, 1741, 2994, 1748, 2993, 1763, 2991, 1774, 2989, 1781, 2998, 1787, 3011, 1789, 3022, 1796, 3022, 1810, 3024, 1822, 3039, 1824, 3049, 1831, 3050, 1837, 3047, 1845, 3053, 1849, 3048, 1862, 3015, 1861, 3003, 1860, 2996, 1852, 2986, 1853, 2977, 1866, 2976, 1885, 2963, 1896, 2956, 1902, 2948, 1908, 2939, 1914, 2937, 1924, 2930, 1937], + "center":[2935, 1805], + "bbox":[2800.7090382418633, 1711.3549610942366, 252.77572007857543, 225.64727254281115] + }, + "MKD":{ + "shape":[2481, 2171, 2485, 2182, 2502, 2189, 2518, 2202, 2527, 2218, 2527, 2234, 2522, 2242, 2518, 2242, 2514, 2243, 2513, 2254, 2510, 2257, 2507, 2253, 2501, 2258, 2498, 2257, 2489, 2258, 2487, 2256, 2482, 2257, 2480, 2256, 2474, 2254, 2470, 2255, 2465, 2257, 2460, 2255, 2458, 2256, 2450, 2259, 2447, 2265, 2441, 2268, 2439, 2271, 2437, 2271, 2433, 2271, 2430, 2272, 2430, 2273, 2424, 2276, 2423, 2276, 2420, 2272, 2413, 2272, 2402, 2276, 2399, 2276, 2397, 2274, 2396, 2274, 2389, 2276, 2379, 2276, 2378, 2281, 2376, 2282, 2356, 2277, 2345, 2260, 2340, 2248, 2336, 2237, 2343, 2228, 2344, 2219, 2343, 2213, 2339, 2207, 2346, 2198, 2361, 2190, 2376, 2181, 2391, 2191, 2401, 2191, 2416, 2182, 2439, 2177, 2457, 2172, 2467, 2170, 2481, 2171], + "center":[2429, 2227], + "bbox":[2335.862068119121, 2169.944862851962, 191.33656348590966, 112.39355814642204] + }, + "YUG":{ + "shape":[2481, 2171, 2467, 2170, 2457, 2172, 2439, 2177, 2416, 2182, 2401, 2191, 2391, 2191, 2376, 2181, 2361, 2190, 2346, 2198, 2339, 2207, 2339, 2198, 2338, 2191, 2331, 2179, 2316, 2174, 2313, 2168, 2310, 2157, 2299, 2159, 2283, 2159, 2279, 2146, 2267, 2155, 2258, 2165, 2251, 2174, 2252, 2183, 2251, 2200, 2248, 2205, 2237, 2203, 2232, 2193, 2223, 2183, 2209, 2174, 2205, 2169, 2208, 2163, 2200, 2157, 2195, 2162, 2187, 2164, 2165, 2156, 2160, 2150, 2145, 2143, 2131, 2136, 2120, 2138, 2108, 2133, 2112, 2128, 2115, 2125, 2119, 2125, 2132, 2124, 2144, 2125, 2156, 2133, 2159, 2140, 2168, 2149, 2179, 2155, 2190, 2147, 2191, 2137, 2189, 2124, 2195, 2116, 2202, 2110, 2206, 2102, 2209, 2097, 2222, 2098, 2225, 2092, 2222, 2083, 2231, 2076, 2242, 2076, 2250, 2070, 2255, 2065, 2251, 2058, 2247, 2047, 2260, 2045, 2266, 2037, 2259, 2025, 2237, 2015, 2233, 2009, 2246, 1994, 2255, 1982, 2255, 1973, 2241, 1973, 2228, 1974, 2237, 1961, 2254, 1947, 2237, 1936, 2228, 1924, 2221, 1915, 2218, 1907, 2240, 1894, 2252, 1895, 2265, 1890, 2282, 1882, 2291, 1882, 2303, 1884, 2315, 1884, 2331, 1896, 2344, 1909, 2362, 1913, 2359, 1924, 2359, 1935, 2376, 1942, 2398, 1950, 2412, 1951, 2414, 1959, 2406, 1968, 2418, 1977, 2413, 1982, 2402, 1991, 2427, 2004, 2446, 2001, 2452, 2014, 2464, 2017, 2473, 2007, 2483, 1997, 2496, 2002, 2492, 2010, 2486, 2019, 2488, 2028, 2499, 2032, 2507, 2036, 2507, 2039, 2496, 2043, 2486, 2046, 2479, 2058, 2480, 2068, 2490, 2085, 2504, 2094, 2520, 2098, 2525, 2108, 2518, 2113, 2505, 2122, 2490, 2128, 2485, 2136, 2490, 2151, 2500, 2154, 2498, 2165, 2481, 2171], + "center":[2322, 2067], + "bbox":[2108.3392290459783, 1881.578990863573, 417.0894490577398, 325.41158439078663] + }, + "LUX":{ + "shape":[1282, 1638, 1271, 1635, 1251, 1635, 1238, 1633, 1236, 1623, 1241, 1614, 1229, 1600, 1235, 1588, 1247, 1581, 1259, 1587, 1261, 1593, 1268, 1603, 1286, 1607, 1300, 1610, 1291, 1615, 1287, 1623, 1282, 1638], + "center":[1261, 1612], + "bbox":[1229.4446161825535, 1580.5021447831639, 70.35043577484885, 57.21607430150925] + }, + "VAT":{ + "shape":[1740, 2222, 1740, 2222, 1739, 2222, 1739, 2222, 1740, 2222], + "center":[1740, 2222], + "bbox":[1739.359752163026, 2222.026762628325, 0.4620210302182386, 0.3450409313181808] + }, + "LTU":{ + "shape":[2559, 1300, 2561, 1290, 2561, 1278, 2547, 1270, 2532, 1264, 2516, 1263, 2505, 1254, 2507, 1243, 2512, 1230, 2505, 1217, 2494, 1208, 2473, 1207, 2454, 1206, 2432, 1202, 2418, 1197, 2394, 1196, 2389, 1190, 2390, 1183, 2389, 1177, 2385, 1169, 2381, 1162, 2378, 1157, 2375, 1152, 2372, 1148, 2374, 1137, 2384, 1134, 2401, 1129, 2414, 1122, 2433, 1116, 2450, 1112, 2471, 1111, 2492, 1112, 2512, 1116, 2527, 1112, 2537, 1110, 2549, 1110, 2580, 1117, 2597, 1119, 2617, 1121, 2637, 1119, 2649, 1114, 2660, 1108, 2677, 1112, 2678, 1122, 2687, 1132, 2703, 1128, 2720, 1128, 2747, 1144, 2769, 1153, 2782, 1162, 2797, 1165, 2808, 1170, 2795, 1177, 2788, 1183, 2787, 1189, 2803, 1190, 2804, 1198, 2799, 1204, 2781, 1208, 2757, 1213, 2740, 1221, 2733, 1234, 2732, 1245, 2730, 1254, 2721, 1262, 2723, 1273, 2723, 1283, 2713, 1282, 2710, 1273, 2694, 1270, 2678, 1279, 2661, 1280, 2661, 1290, 2653, 1296, 2645, 1294, 2633, 1301, 2619, 1299, 2609, 1296, 2591, 1299, 2559, 1300], + "center":[2598, 1192], + "bbox":[2372.4479177957082, 1108.2254275671962, 436.03562069677764, 192.83327564920137] + }, + "LIE":{ + "shape":[1504, 1806, 1505, 1806, 1508, 1802, 1510, 1803, 1510, 1805, 1512, 1806, 1511, 1809, 1513, 1809, 1515, 1811, 1515, 1812, 1515, 1813, 1516, 1814, 1516, 1815, 1514, 1817, 1514, 1817, 1505, 1818, 1506, 1813, 1504, 1806], + "center":[1510, 1811], + "bbox":[1504.4142164577233, 1801.6388488877067, 11.662253980295873, 16.067281333025676] + }, + "LVA":{ + "shape":[2374, 1137, 2371, 1132, 2367, 1125, 2367, 1119, 2367, 1110, 2371, 1100, 2374, 1094, 2373, 1088, 2371, 1082, 2380, 1076, 2392, 1069, 2400, 1065, 2402, 1056, 2404, 1047, 2408, 1040, 2416, 1035, 2421, 1027, 2425, 1024, 2440, 1023, 2455, 1020, 2469, 1017, 2480, 1015, 2494, 1013, 2492, 1017, 2491, 1021, 2496, 1025, 2508, 1029, 2515, 1032, 2517, 1036, 2524, 1039, 2535, 1041, 2535, 1048, 2536, 1055, 2537, 1059, 2541, 1063, 2550, 1066, 2559, 1069, 2572, 1070, 2583, 1066, 2592, 1065, 2606, 1066, 2604, 1061, 2618, 1054, 2624, 1045, 2623, 1035, 2624, 1025, 2624, 1015, 2622, 1011, 2621, 1005, 2637, 1001, 2658, 997, 2678, 995, 2693, 993, 2716, 993, 2740, 1004, 2753, 1005, 2764, 1014, 2777, 1020, 2785, 1026, 2807, 1026, 2822, 1022, 2836, 1023, 2856, 1029, 2877, 1038, 2880, 1048, 2871, 1069, 2879, 1076, 2892, 1075, 2894, 1085, 2907, 1092, 2922, 1117, 2918, 1126, 2918, 1130, 2903, 1129, 2892, 1137, 2881, 1153, 2868, 1161, 2851, 1157, 2830, 1160, 2816, 1170, 2808, 1170, 2797, 1165, 2782, 1162, 2769, 1153, 2747, 1144, 2720, 1128, 2703, 1128, 2687, 1132, 2678, 1122, 2677, 1112, 2660, 1108, 2649, 1114, 2637, 1119, 2617, 1121, 2597, 1119, 2580, 1117, 2549, 1110, 2537, 1110, 2527, 1112, 2512, 1116, 2492, 1112, 2471, 1111, 2450, 1112, 2433, 1116, 2414, 1122, 2401, 1129, 2384, 1134, 2374, 1137], + "center":[2643, 1080], + "bbox":[2366.980788843927, 992.7768614750898, 554.6268218935229, 177.38672266384333] + }, + "GBR":{ + "shape":[[181, 1261, 191, 1256, 203, 1251, 208, 1244, 199, 1246, 195, 1242, 197, 1237, 203, 1236, 210, 1236, 217, 1235, 223, 1231, 225, 1224, 233, 1218, 244, 1216, 250, 1212, 261, 1214, 267, 1211, 278, 1208, 290, 1207, 295, 1204, 306, 1202, 321, 1203, 339, 1209, 347, 1216, 347, 1222, 355, 1229, 364, 1235, 359, 1241, 353, 1247, 358, 1248, 364, 1247, 376, 1248, 380, 1255, 383, 1264, 379, 1268, 375, 1265, 377, 1263, 376, 1259, 368, 1255, 363, 1257, 368, 1258, 371, 1262, 368, 1267, 372, 1270, 373, 1275, 365, 1278, 353, 1279, 349, 1282, 348, 1287, 338, 1291, 333, 1293, 329, 1290, 325, 1287, 321, 1286, 314, 1287, 307, 1290, 296, 1291, 287, 1287, 263, 1264, 253, 1266, 246, 1271, 247, 1277, 226, 1286, 218, 1283, 206, 1282, 197, 1278, 194, 1271, 185, 1269, 181, 1261], [322, 1090, 334, 1085, 351, 1084, 356, 1080, 349, 1075, 349, 1070, 361, 1066, 357, 1063, 363, 1060, 374, 1060, 364, 1056, 369, 1051, 371, 1046, 374, 1041, 360, 1045, 353, 1041, 347, 1033, 353, 1027, 364, 1031, 361, 1026, 353, 1018, 362, 1016, 354, 1013, 355, 1006, 366, 1005, 371, 1010, 379, 1004, 395, 1000, 388, 996, 376, 990, 391, 989, 392, 982, 384, 976, 394, 978, 407, 975, 416, 975, 408, 972, 404, 966, 412, 957, 407, 954, 414, 947, 434, 952, 429, 960, 440, 954, 443, 949, 458, 952, 468, 952, 492, 950, 514, 947, 528, 950, 533, 944, 556, 945, 562, 950, 557, 958, 562, 961, 551, 971, 524, 982, 501, 990, 489, 996, 482, 1003, 492, 1007, 501, 1013, 476, 1024, 467, 1031, 457, 1032, 473, 1033, 481, 1030, 491, 1024, 509, 1021, 521, 1017, 541, 1012, 556, 1018, 576, 1018, 598, 1021, 609, 1019, 630, 1019, 647, 1021, 654, 1025, 655, 1032, 652, 1041, 640, 1054, 624, 1068, 621, 1080, 606, 1089, 599, 1097, 592, 1105, 580, 1110, 570, 1110, 559, 1111, 549, 1117, 557, 1115, 566, 1113, 576, 1111, 584, 1113, 584, 1117, 592, 1117, 595, 1124, 588, 1128, 572, 1132, 557, 1133, 548, 1139, 531, 1141, 514, 1139, 507, 1139, 519, 1143, 532, 1143, 550, 1145, 562, 1147, 572, 1144, 580, 1140, 591, 1139, 607, 1142, 617, 1148, 630, 1151, 642, 1160, 660, 1169, 673, 1175, 674, 1187, 672, 1200, 677, 1206, 690, 1221, 691, 1231, 695, 1240, 697, 1249, 708, 1251, 729, 1252, 747, 1257, 756, 1265, 763, 1276, 784, 1284, 780, 1289, 782, 1297, 795, 1312, 805, 1324, 794, 1319, 787, 1322, 784, 1319, 777, 1315, 762, 1313, 752, 1314, 743, 1316, 754, 1317, 766, 1317, 773, 1318, 783, 1322, 795, 1331, 811, 1345, 818, 1358, 800, 1372, 794, 1378, 804, 1382, 817, 1385, 826, 1380, 833, 1372, 875, 1375, 899, 1379, 916, 1389, 923, 1399, 923, 1412, 911, 1437, 906, 1445, 896, 1449, 891, 1451, 886, 1447, 883, 1447, 885, 1450, 888, 1453, 887, 1459, 880, 1463, 872, 1461, 866, 1463, 862, 1466, 853, 1466, 856, 1469, 865, 1469, 867, 1474, 859, 1477, 854, 1481, 842, 1482, 827, 1484, 825, 1488, 832, 1487, 844, 1485, 848, 1489, 842, 1489, 841, 1493, 849, 1495, 856, 1498, 873, 1496, 890, 1493, 898, 1490, 903, 1492, 901, 1498, 899, 1503, 899, 1507, 894, 1515, 879, 1518, 868, 1524, 866, 1532, 848, 1530, 843, 1535, 830, 1534, 820, 1538, 815, 1542, 794, 1537, 777, 1534, 762, 1537, 749, 1536, 745, 1538, 732, 1541, 722, 1537, 704, 1537, 691, 1533, 689, 1538, 679, 1543, 665, 1545, 653, 1547, 643, 1551, 635, 1552, 613, 1549, 611, 1556, 596, 1546, 572, 1540, 559, 1544, 539, 1547, 533, 1555, 529, 1563, 526, 1573, 517, 1581, 512, 1581, 510, 1578, 506, 1581, 498, 1580, 492, 1574, 483, 1574, 471, 1571, 439, 1574, 436, 1573, 431, 1576, 429, 1579, 419, 1585, 412, 1590, 410, 1597, 402, 1599, 394, 1596, 389, 1592, 377, 1590, 372, 1595, 365, 1595, 367, 1585, 405, 1570, 413, 1561, 414, 1555, 423, 1555, 425, 1551, 432, 1550, 435, 1544, 446, 1537, 447, 1528, 452, 1521, 460, 1523, 468, 1520, 475, 1514, 477, 1505, 509, 1500, 536, 1503, 562, 1506, 569, 1498, 573, 1490, 592, 1488, 596, 1478, 582, 1480, 563, 1484, 551, 1490, 529, 1491, 516, 1487, 507, 1480, 491, 1477, 474, 1480, 467, 1473, 465, 1463, 454, 1464, 440, 1465, 434, 1470, 426, 1475, 410, 1475, 407, 1469, 396, 1467, 402, 1461, 399, 1455, 390, 1451, 402, 1446, 411, 1442, 423, 1444, 430, 1437, 448, 1435, 471, 1424, 486, 1410, 483, 1401, 482, 1401, 482, 1386, 482, 1378, 465, 1378, 456, 1384, 443, 1383, 431, 1388, 432, 1379, 451, 1371, 462, 1359, 489, 1349, 502, 1345, 524, 1347, 544, 1346, 561, 1349, 546, 1344, 561, 1339, 577, 1349, 588, 1345, 581, 1340, 571, 1336, 566, 1328, 564, 1320, 581, 1314, 565, 1313, 560, 1309, 560, 1299, 574, 1298, 577, 1292, 575, 1282, 565, 1284, 554, 1289, 542, 1286, 544, 1278, 533, 1277, 529, 1271, 526, 1260, 514, 1254, 518, 1244, 531, 1236, 534, 1228, 553, 1228, 563, 1224, 544, 1221, 521, 1221, 523, 1230, 508, 1229, 505, 1234, 482, 1237, 470, 1230, 458, 1229, 462, 1236, 460, 1244, 442, 1244, 434, 1235, 422, 1233, 420, 1239, 420, 1247, 411, 1244, 410, 1233, 403, 1234, 399, 1228, 398, 1221, 406, 1221, 409, 1226, 413, 1225, 412, 1216, 412, 1210, 420, 1203, 424, 1191, 436, 1183, 424, 1169, 419, 1164, 420, 1155, 426, 1149, 443, 1151, 428, 1145, 417, 1145, 408, 1153, 394, 1159, 381, 1165, 375, 1175, 368, 1187, 375, 1191, 368, 1197, 353, 1197, 355, 1184, 362, 1168, 361, 1161, 368, 1156, 362, 1153, 363, 1145, 370, 1137, 380, 1134, 370, 1132, 374, 1128, 367, 1125, 367, 1120, 377, 1117, 386, 1110, 393, 1102, 399, 1091, 387, 1098, 374, 1103, 361, 1107, 348, 1105, 335, 1099, 349, 1095, 336, 1095, 322, 1090]], + "center":[559, 1278], + "bbox":[181.44325579820233, 943.7781714886728, 741.9204855345828, 654.9815019404978] + }, + "TUR":{ + "shape":[[2749, 2298, 2760, 2291, 2761, 2291, 2767, 2290, 2770, 2285, 2775, 2284, 2774, 2282, 2775, 2280, 2777, 2280, 2778, 2278, 2779, 2279, 2781, 2279, 2780, 2276, 2785, 2275, 2783, 2273, 2785, 2272, 2786, 2269, 2783, 2267, 2784, 2263, 2783, 2263, 2784, 2261, 2783, 2258, 2785, 2252, 2791, 2252, 2800, 2247, 2805, 2247, 2807, 2246, 2809, 2242, 2806, 2236, 2806, 2226, 2801, 2225, 2795, 2220, 2794, 2214, 2789, 2208, 2803, 2204, 2815, 2202, 2828, 2196, 2843, 2193, 2858, 2199, 2864, 2208, 2884, 2204, 2897, 2201, 2899, 2204, 2900, 2211, 2894, 2215, 2894, 2217, 2899, 2224, 2904, 2232, 2915, 2240, 2932, 2245, 2935, 2252, 2944, 2247, 2957, 2252, 2971, 2256, 2973, 2258, 2968, 2267, 2967, 2272, 2958, 2278, 2944, 2277, 2941, 2271, 2930, 2272, 2915, 2269, 2901, 2270, 2894, 2274, 2888, 2276, 2875, 2272, 2864, 2275, 2857, 2280, 2852, 2287, 2845, 2294, 2829, 2301, 2815, 2304, 2795, 2317, 2779, 2327, 2772, 2333, 2764, 2340, 2752, 2344, 2759, 2337, 2762, 2330, 2758, 2325, 2774, 2318, 2786, 2315, 2802, 2309, 2805, 2304, 2792, 2301, 2782, 2303, 2773, 2303, 2759, 2304, 2751, 2302, 2749, 2298], [3236, 2213, 3246, 2212, 3263, 2211, 3275, 2208, 3287, 2206, 3294, 2203, 3305, 2200, 3313, 2201, 3327, 2202, 3347, 2202, 3361, 2202, 3377, 2205, 3384, 2203, 3396, 2203, 3407, 2204, 3414, 2201, 3421, 2193, 3434, 2195, 3437, 2202, 3436, 2211, 3439, 2216, 3451, 2223, 3466, 2229, 3477, 2228, 3488, 2225, 3496, 2222, 3503, 2225, 3507, 2233, 3510, 2238, 3515, 2246, 3522, 2254, 3529, 2258, 3540, 2254, 3545, 2248, 3551, 2247, 3564, 2250, 3573, 2256, 3576, 2262, 3590, 2266, 3597, 2266, 3604, 2267, 3612, 2274, 3618, 2273, 3622, 2268, 3624, 2266, 3632, 2266, 3638, 2272, 3643, 2278, 3656, 2277, 3664, 2279, 3672, 2278, 3683, 2282, 3691, 2281, 3697, 2278, 3703, 2281, 3709, 2276, 3720, 2274, 3728, 2274, 3738, 2270, 3745, 2274, 3752, 2274, 3755, 2270, 3763, 2268, 3767, 2271, 3769, 2276, 3782, 2277, 3793, 2277, 3800, 2278, 3809, 2279, 3830, 2278, 3838, 2274, 3849, 2272, 3859, 2267, 3865, 2263, 3880, 2261, 3892, 2254, 3902, 2247, 3909, 2244, 3915, 2236, 3925, 2236, 3939, 2240, 3958, 2238, 3972, 2237, 3987, 2245, 3997, 2236, 4013, 2229, 4028, 2234, 4047, 2241, 4040, 2257, 4064, 2262, 4090, 2289, 4080, 2307, 4073, 2318, 4083, 2338, 4103, 2354, 4125, 2351, 4154, 2359, 4155, 2370, 4147, 2383, 4140, 2396, 4120, 2398, 4117, 2405, 4129, 2418, 4121, 2432, 4136, 2448, 4143, 2474, 4144, 2483, 4127, 2511, 4145, 2517, 4153, 2534, 4153, 2545, 4169, 2548, 4170, 2562, 4145, 2573, 4133, 2577, 4126, 2568, 4131, 2557, 4116, 2554, 4103, 2561, 4088, 2560, 4055, 2549, 4034, 2549, 4016, 2549, 4004, 2567, 3991, 2574, 3980, 2559, 3967, 2554, 3954, 2560, 3944, 2569, 3930, 2574, 3909, 2563, 3882, 2571, 3858, 2574, 3819, 2588, 3780, 2601, 3750, 2607, 3720, 2606, 3702, 2594, 3682, 2585, 3667, 2589, 3653, 2597, 3631, 2599, 3613, 2609, 3584, 2603, 3572, 2592, 3555, 2587, 3546, 2601, 3546, 2617, 3553, 2629, 3538, 2636, 3530, 2641, 3526, 2652, 3528, 2659, 3523, 2664, 3516, 2662, 3512, 2660, 3507, 2664, 3497, 2655, 3502, 2648, 3487, 2632, 3486, 2626, 3502, 2617, 3520, 2605, 3522, 2593, 3519, 2586, 3503, 2582, 3495, 2589, 3485, 2593, 3476, 2602, 3472, 2607, 3463, 2606, 3452, 2607, 3452, 2602, 3443, 2602, 3437, 2603, 3431, 2599, 3421, 2598, 3415, 2590, 3399, 2587, 3382, 2592, 3374, 2602, 3365, 2613, 3359, 2615, 3350, 2629, 3338, 2628, 3327, 2638, 3310, 2640, 3300, 2641, 3283, 2642, 3275, 2644, 3257, 2649, 3243, 2649, 3220, 2638, 3216, 2630, 3205, 2617, 3188, 2609, 3175, 2602, 3155, 2592, 3137, 2588, 3129, 2591, 3126, 2586, 3116, 2587, 3106, 2588, 3097, 2582, 3090, 2589, 3085, 2600, 3089, 2607, 3083, 2616, 3082, 2621, 3080, 2635, 3064, 2631, 3059, 2632, 3053, 2635, 3035, 2634, 3027, 2641, 2996, 2633, 2994, 2632, 2990, 2632, 2991, 2630, 2988, 2630, 2978, 2622, 2977, 2613, 2978, 2605, 2971, 2598, 2971, 2601, 2968, 2602, 2964, 2602, 2959, 2603, 2954, 2599, 2945, 2600, 2944, 2590, 2935, 2595, 2932, 2589, 2925, 2591, 2919, 2588, 2914, 2599, 2905, 2606, 2899, 2602, 2905, 2598, 2905, 2592, 2899, 2592, 2900, 2581, 2906, 2579, 2908, 2583, 2916, 2576, 2924, 2571, 2915, 2571, 2903, 2574, 2886, 2575, 2873, 2577, 2857, 2579, 2853, 2573, 2842, 2576, 2837, 2572, 2840, 2568, 2846, 2565, 2852, 2566, 2859, 2563, 2862, 2560, 2861, 2553, 2847, 2551, 2847, 2547, 2833, 2550, 2833, 2546, 2833, 2539, 2834, 2531, 2822, 2528, 2825, 2525, 2834, 2525, 2838, 2519, 2839, 2512, 2839, 2507, 2829, 2504, 2823, 2501, 2816, 2497, 2806, 2501, 2808, 2493, 2803, 2489, 2794, 2490, 2784, 2494, 2782, 2490, 2771, 2486, 2764, 2484, 2764, 2477, 2771, 2479, 2777, 2479, 2780, 2472, 2780, 2470, 2773, 2469, 2771, 2463, 2769, 2455, 2776, 2453, 2782, 2456, 2785, 2464, 2784, 2470, 2788, 2476, 2796, 2480, 2798, 2475, 2809, 2477, 2822, 2475, 2835, 2473, 2836, 2467, 2825, 2466, 2819, 2468, 2814, 2469, 2810, 2458, 2802, 2456, 2803, 2451, 2811, 2448, 2820, 2442, 2825, 2437, 2823, 2431, 2813, 2432, 2805, 2429, 2805, 2425, 2817, 2419, 2807, 2415, 2800, 2411, 2794, 2405, 2804, 2395, 2816, 2387, 2817, 2381, 2802, 2383, 2786, 2387, 2771, 2390, 2763, 2389, 2751, 2392, 2748, 2387, 2756, 2381, 2757, 2374, 2755, 2364, 2756, 2354, 2765, 2350, 2772, 2348, 2779, 2338, 2791, 2327, 2802, 2321, 2812, 2320, 2819, 2320, 2826, 2319, 2837, 2318, 2843, 2318, 2844, 2325, 2857, 2328, 2874, 2330, 2885, 2326, 2886, 2323, 2884, 2319, 2877, 2316, 2872, 2313, 2879, 2311, 2888, 2312, 2895, 2314, 2889, 2317, 2890, 2321, 2903, 2322, 2919, 2321, 2940, 2320, 2946, 2323, 2955, 2321, 2962, 2321, 2971, 2321, 2978, 2318, 2980, 2315, 2973, 2313, 2967, 2315, 2961, 2312, 2960, 2309, 2967, 2303, 2975, 2301, 2988, 2301, 2995, 2298, 3005, 2297, 3018, 2297, 3031, 2297, 3042, 2295, 3039, 2290, 3029, 2289, 3017, 2290, 3007, 2290, 2998, 2290, 2991, 2289, 2988, 2286, 2986, 2282, 2981, 2280, 2977, 2278, 2972, 2277, 2976, 2272, 2979, 2266, 2981, 2262, 2986, 2259, 2992, 2259, 3003, 2263, 3012, 2265, 3018, 2263, 3024, 2263, 3032, 2266, 3056, 2265, 3061, 2263, 3064, 2259, 3070, 2260, 3075, 2264, 3085, 2266, 3103, 2270, 3115, 2270, 3133, 2269, 3144, 2267, 3151, 2261, 3149, 2253, 3160, 2249, 3188, 2235, 3216, 2224, 3225, 2218, 3236, 2213]], + "center":[3392, 2439], + "bbox":[2747.918639071918, 2192.7621692767334, 1422.3502310011545, 471.4433239406567] + }, + "UKR":{ + "shape":[3675, 1808, 3657, 1818, 3667, 1807, 3656, 1804, 3640, 1807, 3625, 1809, 3613, 1819, 3603, 1826, 3607, 1819, 3597, 1820, 3590, 1823, 3576, 1829, 3574, 1839, 3565, 1843, 3563, 1836, 3561, 1830, 3552, 1831, 3537, 1836, 3533, 1842, 3526, 1842, 3515, 1838, 3498, 1841, 3483, 1849, 3479, 1853, 3468, 1858, 3459, 1850, 3455, 1841, 3452, 1847, 3455, 1855, 3463, 1862, 3457, 1867, 3445, 1856, 3438, 1860, 3432, 1870, 3422, 1875, 3403, 1881, 3398, 1888, 3398, 1880, 3387, 1878, 3378, 1878, 3370, 1872, 3370, 1877, 3363, 1883, 3357, 1878, 3348, 1874, 3337, 1877, 3325, 1882, 3312, 1887, 3292, 1879, 3280, 1881, 3262, 1883, 3242, 1886, 3222, 1882, 3204, 1876, 3188, 1871, 3204, 1866, 3201, 1855, 3211, 1856, 3223, 1859, 3234, 1855, 3229, 1849, 3218, 1849, 3203, 1840, 3203, 1830, 3208, 1826, 3211, 1822, 3200, 1820, 3196, 1829, 3196, 1837, 3191, 1844, 3180, 1843, 3170, 1844, 3173, 1833, 3172, 1829, 3165, 1833, 3163, 1840, 3154, 1844, 3140, 1844, 3126, 1848, 3110, 1850, 3110, 1840, 3108, 1835, 3102, 1829, 3101, 1834, 3101, 1843, 3095, 1845, 3105, 1853, 3107, 1859, 3103, 1865, 3097, 1875, 3088, 1879, 3087, 1872, 3076, 1866, 3069, 1861, 3061, 1865, 3069, 1875, 3081, 1880, 3083, 1885, 3076, 1897, 3068, 1903, 3058, 1901, 3045, 1908, 3036, 1908, 3039, 1914, 3034, 1917, 3028, 1912, 3028, 1905, 3023, 1910, 3018, 1918, 3016, 1924, 3019, 1932, 3030, 1932, 3031, 1938, 3027, 1948, 3017, 1938, 2999, 1937, 2990, 1943, 2978, 1954, 2965, 1952, 2953, 1959, 2931, 1950, 2930, 1937, 2937, 1924, 2939, 1914, 2948, 1908, 2956, 1902, 2963, 1896, 2976, 1885, 2977, 1866, 2986, 1853, 2996, 1852, 3003, 1860, 3015, 1861, 3048, 1862, 3053, 1849, 3047, 1845, 3050, 1837, 3049, 1831, 3039, 1824, 3024, 1822, 3022, 1810, 3022, 1796, 3011, 1789, 2998, 1787, 2989, 1781, 2991, 1774, 2993, 1763, 2994, 1748, 2985, 1741, 2970, 1736, 2965, 1730, 2942, 1728, 2922, 1730, 2902, 1721, 2870, 1711, 2846, 1712, 2815, 1712, 2801, 1724, 2786, 1729, 2760, 1744, 2737, 1746, 2709, 1750, 2690, 1760, 2674, 1766, 2663, 1756, 2648, 1747, 2637, 1747, 2624, 1747, 2600, 1745, 2590, 1744, 2569, 1743, 2562, 1748, 2555, 1738, 2541, 1736, 2527, 1739, 2513, 1734, 2495, 1727, 2470, 1717, 2468, 1710, 2470, 1700, 2480, 1689, 2482, 1676, 2488, 1667, 2511, 1664, 2519, 1656, 2513, 1652, 2508, 1642, 2505, 1627, 2507, 1620, 2525, 1604, 2544, 1587, 2573, 1568, 2596, 1561, 2607, 1554, 2611, 1542, 2603, 1533, 2610, 1530, 2611, 1526, 2599, 1521, 2592, 1510, 2574, 1494, 2571, 1482, 2570, 1474, 2582, 1469, 2596, 1470, 2619, 1471, 2630, 1466, 2635, 1459, 2639, 1451, 2658, 1450, 2685, 1448, 2718, 1448, 2743, 1447, 2770, 1454, 2789, 1460, 2811, 1462, 2835, 1463, 2837, 1470, 2840, 1477, 2866, 1474, 2874, 1484, 2883, 1486, 2886, 1477, 2904, 1483, 2921, 1474, 2930, 1480, 2944, 1479, 2956, 1485, 2965, 1491, 2969, 1484, 2975, 1478, 2993, 1474, 3005, 1480, 3013, 1490, 3028, 1485, 3037, 1483, 3048, 1480, 3065, 1484, 3085, 1489, 3097, 1487, 3099, 1479, 3096, 1470, 3106, 1454, 3128, 1434, 3146, 1431, 3188, 1431, 3204, 1430, 3208, 1439, 3223, 1422, 3248, 1424, 3284, 1418, 3303, 1419, 3324, 1413, 3350, 1421, 3354, 1435, 3365, 1447, 3377, 1449, 3374, 1460, 3359, 1462, 3363, 1477, 3365, 1492, 3381, 1498, 3415, 1501, 3437, 1496, 3451, 1508, 3457, 1521, 3467, 1533, 3459, 1548, 3468, 1561, 3487, 1563, 3512, 1558, 3528, 1562, 3534, 1571, 3558, 1570, 3584, 1567, 3619, 1560, 3628, 1576, 3647, 1589, 3677, 1592, 3701, 1592, 3724, 1599, 3762, 1603, 3777, 1613, 3793, 1620, 3818, 1620, 3811, 1634, 3816, 1645, 3816, 1654, 3801, 1658, 3786, 1662, 3789, 1673, 3807, 1675, 3803, 1682, 3788, 1683, 3781, 1700, 3793, 1713, 3801, 1723, 3787, 1741, 3778, 1757, 3736, 1754, 3716, 1751, 3715, 1763, 3691, 1768, 3676, 1779, 3674, 1793, 3675, 1808], + "center":[3140, 1689], + "bbox":[2468.132602652162, 1412.8134032581268, 1349.3878871755314, 546.5246910338046] + }, + "IRL":{ + "shape":[244, 1216, 233, 1218, 225, 1224, 223, 1231, 217, 1235, 210, 1236, 203, 1236, 197, 1237, 195, 1242, 199, 1246, 208, 1244, 203, 1251, 191, 1256, 181, 1261, 185, 1269, 194, 1271, 197, 1278, 206, 1282, 218, 1283, 226, 1286, 247, 1277, 246, 1271, 253, 1266, 263, 1264, 287, 1287, 296, 1291, 307, 1290, 314, 1287, 319, 1288, 322, 1290, 324, 1292, 325, 1295, 323, 1297, 312, 1296, 310, 1304, 319, 1307, 320, 1314, 322, 1319, 335, 1326, 335, 1339, 326, 1342, 323, 1347, 335, 1349, 333, 1357, 339, 1370, 334, 1384, 321, 1394, 324, 1401, 320, 1411, 307, 1420, 317, 1425, 320, 1432, 297, 1437, 267, 1432, 249, 1440, 231, 1439, 217, 1440, 220, 1447, 208, 1449, 202, 1448, 203, 1453, 195, 1459, 173, 1464, 175, 1457, 169, 1453, 155, 1456, 164, 1460, 165, 1465, 153, 1472, 125, 1478, 110, 1478, 93, 1485, 85, 1480, 72, 1485, 53, 1487, 53, 1479, 67, 1474, 76, 1467, 59, 1470, 43, 1476, 28, 1477, 31, 1470, 46, 1470, 45, 1465, 59, 1458, 53, 1454, 53, 1460, 42, 1461, 28, 1464, 20, 1461, 20, 1458, 12, 1460, 10, 1454, 18, 1449, 22, 1444, 36, 1440, 44, 1436, 5, 1440, 0, 1436, 12, 1433, 12, 1428, 21, 1423, 29, 1428, 37, 1424, 45, 1427, 58, 1427, 48, 1422, 53, 1417, 45, 1414, 55, 1412, 64, 1408, 65, 1403, 77, 1402, 94, 1402, 112, 1400, 124, 1396, 133, 1395, 128, 1391, 118, 1391, 117, 1387, 112, 1387, 109, 1393, 96, 1400, 80, 1399, 70, 1398, 56, 1403, 41, 1405, 48, 1398, 64, 1393, 73, 1385, 83, 1377, 86, 1363, 94, 1356, 102, 1358, 110, 1356, 115, 1354, 106, 1351, 92, 1352, 73, 1351, 74, 1347, 64, 1345, 57, 1347, 47, 1346, 49, 1342, 47, 1339, 36, 1341, 24, 1338, 33, 1333, 28, 1328, 40, 1326, 49, 1323, 43, 1320, 49, 1315, 65, 1311, 60, 1307, 47, 1307, 44, 1302, 46, 1293, 43, 1287, 33, 1288, 33, 1280, 42, 1275, 53, 1272, 88, 1275, 97, 1280, 102, 1283, 107, 1278, 117, 1275, 131, 1276, 143, 1279, 145, 1272, 135, 1271, 149, 1264, 165, 1259, 175, 1253, 164, 1250, 151, 1252, 153, 1245, 140, 1249, 130, 1247, 129, 1241, 140, 1236, 151, 1238, 150, 1233, 161, 1230, 155, 1225, 155, 1219, 165, 1213, 170, 1206, 183, 1208, 193, 1205, 197, 1209, 204, 1207, 210, 1206, 208, 1202, 213, 1200, 218, 1203, 217, 1207, 220, 1212, 217, 1217, 212, 1221, 214, 1223, 221, 1218, 229, 1211, 226, 1206, 225, 1202, 230, 1198, 239, 1196, 235, 1193, 245, 1194, 253, 1197, 256, 1201, 263, 1203, 258, 1208, 250, 1212, 244, 1216], + "center":[148, 1351], + "bbox":[0.0, 1193.306650642314, 339.0298736840829, 293.9207719860856] + }, + "ITA":{ + "shape":[[1405, 2287, 1414, 2285, 1427, 2285, 1435, 2280, 1445, 2277, 1456, 2271, 1464, 2263, 1468, 2258, 1475, 2260, 1479, 2256, 1486, 2253, 1487, 2258, 1495, 2259, 1497, 2265, 1502, 2263, 1508, 2265, 1508, 2271, 1507, 2279, 1514, 2282, 1516, 2289, 1519, 2297, 1521, 2304, 1520, 2311, 1514, 2320, 1511, 2324, 1510, 2331, 1514, 2337, 1520, 2340, 1518, 2346, 1516, 2355, 1515, 2368, 1512, 2380, 1510, 2390, 1508, 2396, 1508, 2410, 1496, 2409, 1487, 2404, 1478, 2400, 1461, 2398, 1464, 2407, 1466, 2411, 1468, 2418, 1456, 2431, 1449, 2427, 1439, 2429, 1435, 2422, 1432, 2416, 1427, 2413, 1422, 2420, 1419, 2414, 1424, 2410, 1420, 2402, 1419, 2395, 1421, 2389, 1425, 2380, 1427, 2374, 1425, 2368, 1433, 2363, 1433, 2358, 1432, 2351, 1426, 2350, 1426, 2355, 1420, 2354, 1421, 2346, 1425, 2342, 1425, 2336, 1425, 2327, 1424, 2321, 1423, 2311, 1420, 2303, 1418, 2299, 1407, 2300, 1406, 2295, 1405, 2287], [1353, 2065, 1362, 2055, 1371, 2041, 1369, 2030, 1346, 2037, 1321, 2033, 1305, 2025, 1304, 2014, 1312, 2002, 1319, 1989, 1317, 1978, 1300, 1977, 1297, 1966, 1302, 1956, 1317, 1951, 1326, 1940, 1311, 1919, 1306, 1908, 1332, 1908, 1346, 1908, 1355, 1901, 1372, 1900, 1387, 1895, 1401, 1879, 1406, 1870, 1421, 1862, 1428, 1865, 1428, 1877, 1434, 1884, 1457, 1892, 1453, 1898, 1463, 1903, 1463, 1909, 1470, 1911, 1474, 1904, 1468, 1898, 1475, 1891, 1474, 1888, 1486, 1880, 1491, 1872, 1490, 1860, 1502, 1859, 1507, 1873, 1521, 1875, 1533, 1869, 1542, 1870, 1547, 1880, 1557, 1878, 1552, 1871, 1556, 1868, 1553, 1864, 1548, 1865, 1548, 1857, 1552, 1852, 1561, 1849, 1562, 1853, 1567, 1856, 1579, 1857, 1581, 1851, 1574, 1848, 1575, 1841, 1579, 1836, 1577, 1832, 1580, 1830, 1579, 1828, 1580, 1827, 1581, 1824, 1589, 1827, 1601, 1833, 1620, 1835, 1631, 1822, 1661, 1816, 1677, 1820, 1704, 1817, 1718, 1818, 1711, 1829, 1722, 1834, 1742, 1835, 1740, 1844, 1791, 1851, 1817, 1852, 1830, 1855, 1826, 1864, 1811, 1866, 1803, 1875, 1802, 1885, 1808, 1896, 1829, 1895, 1831, 1902, 1823, 1908, 1833, 1914, 1838, 1919, 1837, 1932, 1829, 1932, 1819, 1931, 1820, 1916, 1812, 1910, 1803, 1916, 1790, 1912, 1781, 1913, 1775, 1917, 1773, 1921, 1762, 1926, 1738, 1936, 1731, 1927, 1719, 1930, 1709, 1937, 1704, 1945, 1714, 1954, 1715, 1960, 1711, 1970, 1713, 1975, 1719, 1969, 1728, 1971, 1728, 1982, 1717, 1981, 1714, 1984, 1709, 1989, 1709, 1995, 1700, 1991, 1691, 1990, 1682, 1995, 1688, 2001, 1694, 2005, 1707, 2006, 1710, 2019, 1721, 2034, 1733, 2043, 1754, 2051, 1765, 2052, 1773, 2061, 1784, 2068, 1796, 2073, 1813, 2081, 1819, 2092, 1826, 2103, 1830, 2122, 1837, 2136, 1847, 2156, 1858, 2166, 1870, 2172, 1877, 2179, 1889, 2179, 1900, 2193, 1912, 2200, 1927, 2207, 1940, 2210, 1961, 2211, 1980, 2212, 1987, 2206, 1998, 2204, 2009, 2213, 1990, 2220, 1982, 2224, 1982, 2231, 1992, 2238, 2020, 2251, 2060, 2263, 2091, 2277, 2119, 2290, 2137, 2298, 2154, 2305, 2159, 2313, 2177, 2328, 2182, 2340, 2173, 2348, 2173, 2364, 2148, 2349, 2146, 2336, 2138, 2324, 2121, 2323, 2099, 2320, 2093, 2315, 2087, 2307, 2072, 2310, 2056, 2319, 2048, 2330, 2040, 2341, 2036, 2352, 2031, 2358, 2025, 2368, 2036, 2376, 2050, 2375, 2063, 2380, 2074, 2385, 2079, 2393, 2077, 2407, 2083, 2417, 2082, 2426, 2070, 2424, 2051, 2428, 2040, 2437, 2036, 2450, 2037, 2463, 2033, 2474, 2016, 2477, 2009, 2484, 2003, 2490, 2001, 2499, 1982, 2503, 1966, 2501, 1969, 2481, 1982, 2478, 1986, 2468, 1992, 2456, 1990, 2451, 1994, 2444, 2007, 2446, 2014, 2434, 2012, 2423, 2005, 2417, 2004, 2396, 1997, 2383, 1990, 2374, 1985, 2361, 1981, 2348, 1972, 2341, 1964, 2345, 1946, 2344, 1942, 2339, 1934, 2334, 1918, 2331, 1918, 2325, 1920, 2316, 1918, 2308, 1910, 2296, 1901, 2296, 1891, 2301, 1883, 2301, 1878, 2293, 1873, 2287, 1862, 2284, 1848, 2287, 1842, 2273, 1835, 2259, 1827, 2254, 1820, 2252, 1807, 2254, 1796, 2247, 1790, 2249, 1780, 2254, 1773, 2246, 1767, 2239, 1739, 2235, 1728, 2224, 1717, 2218, 1710, 2211, 1704, 2204, 1697, 2197, 1687, 2196, 1682, 2188, 1679, 2180, 1666, 2169, 1651, 2168, 1636, 2172, 1630, 2166, 1635, 2157, 1630, 2150, 1618, 2140, 1605, 2139, 1601, 2128, 1598, 2121, 1577, 2127, 1582, 2112, 1579, 2096, 1569, 2085, 1564, 2068, 1560, 2054, 1555, 2048, 1534, 2042, 1509, 2029, 1484, 2022, 1464, 2016, 1447, 2015, 1430, 2024, 1419, 2034, 1409, 2042, 1402, 2051, 1394, 2056, 1376, 2063, 1353, 2065], [1756, 2494, 1766, 2501, 1777, 2498, 1778, 2488, 1785, 2490, 1791, 2487, 1799, 2495, 1808, 2503, 1825, 2504, 1834, 2499, 1847, 2500, 1865, 2501, 1880, 2498, 1892, 2495, 1897, 2492, 1906, 2488, 1920, 2493, 1930, 2491, 1941, 2484, 1955, 2479, 1958, 2485, 1952, 2493, 1946, 2504, 1939, 2513, 1936, 2517, 1938, 2523, 1932, 2533, 1927, 2538, 1928, 2546, 1936, 2551, 1937, 2558, 1941, 2565, 1944, 2570, 1930, 2581, 1928, 2588, 1931, 2596, 1920, 2593, 1908, 2593, 1895, 2592, 1890, 2587, 1878, 2586, 1875, 2573, 1865, 2564, 1852, 2562, 1841, 2565, 1825, 2561, 1816, 2557, 1812, 2552, 1799, 2549, 1788, 2539, 1781, 2533, 1769, 2532, 1760, 2527, 1745, 2530, 1733, 2523, 1730, 2516, 1729, 2512, 1734, 2503, 1740, 2497, 1756, 2494]], + "center":[1753, 2110], + "bbox":[1297.4400900463704, 1816.239634319149, 884.1191843715158, 779.7156691425703] + }, + "GRC":{ + "shape":[[2443, 2481, 2462, 2489, 2493, 2495, 2507, 2503, 2522, 2508, 2533, 2517, 2538, 2522, 2537, 2530, 2558, 2537, 2560, 2546, 2539, 2548, 2524, 2542, 2517, 2536, 2509, 2531, 2501, 2532, 2505, 2548, 2518, 2568, 2528, 2592, 2525, 2599, 2530, 2611, 2535, 2618, 2524, 2613, 2513, 2604, 2509, 2596, 2499, 2592, 2487, 2603, 2485, 2611, 2490, 2619, 2478, 2615, 2478, 2602, 2469, 2589, 2462, 2585, 2462, 2578, 2457, 2569, 2444, 2570, 2440, 2582, 2442, 2591, 2439, 2598, 2433, 2593, 2425, 2593, 2422, 2587, 2421, 2580, 2413, 2572, 2412, 2562, 2415, 2554, 2425, 2558, 2424, 2541, 2412, 2531, 2397, 2527, 2395, 2519, 2392, 2514, 2383, 2514, 2383, 2506, 2394, 2505, 2401, 2496, 2403, 2488, 2415, 2491, 2443, 2481], [2376, 2282, 2378, 2281, 2379, 2276, 2389, 2276, 2396, 2274, 2397, 2274, 2399, 2276, 2402, 2276, 2413, 2272, 2420, 2272, 2423, 2276, 2424, 2276, 2430, 2273, 2430, 2272, 2433, 2271, 2437, 2271, 2439, 2271, 2441, 2268, 2447, 2265, 2450, 2259, 2458, 2256, 2460, 2255, 2465, 2257, 2470, 2255, 2474, 2254, 2480, 2256, 2482, 2257, 2487, 2256, 2489, 2258, 2498, 2257, 2501, 2258, 2507, 2253, 2510, 2257, 2513, 2254, 2514, 2243, 2518, 2242, 2522, 2242, 2531, 2243, 2540, 2244, 2547, 2244, 2550, 2243, 2550, 2240, 2556, 2238, 2558, 2241, 2563, 2238, 2567, 2238, 2573, 2238, 2580, 2240, 2584, 2238, 2591, 2238, 2593, 2236, 2601, 2235, 2603, 2233, 2606, 2236, 2610, 2233, 2611, 2235, 2612, 2234, 2614, 2233, 2614, 2230, 2616, 2228, 2623, 2230, 2624, 2228, 2629, 2226, 2632, 2230, 2649, 2227, 2650, 2227, 2652, 2233, 2656, 2237, 2658, 2237, 2659, 2238, 2664, 2238, 2668, 2244, 2672, 2240, 2678, 2239, 2689, 2243, 2693, 2244, 2698, 2247, 2700, 2248, 2702, 2252, 2709, 2252, 2719, 2249, 2724, 2250, 2726, 2247, 2734, 2247, 2737, 2248, 2739, 2247, 2748, 2246, 2750, 2248, 2752, 2248, 2758, 2247, 2758, 2247, 2762, 2245, 2769, 2245, 2774, 2238, 2772, 2235, 2774, 2231, 2772, 2229, 2771, 2225, 2768, 2224, 2766, 2220, 2766, 2218, 2774, 2216, 2788, 2219, 2795, 2220, 2801, 2225, 2806, 2226, 2806, 2236, 2809, 2242, 2807, 2246, 2805, 2247, 2800, 2247, 2791, 2252, 2785, 2252, 2783, 2258, 2784, 2261, 2783, 2263, 2784, 2263, 2783, 2267, 2786, 2269, 2785, 2272, 2783, 2273, 2785, 2275, 2780, 2276, 2781, 2279, 2779, 2279, 2778, 2278, 2777, 2280, 2775, 2280, 2774, 2282, 2775, 2284, 2770, 2285, 2767, 2290, 2761, 2291, 2760, 2291, 2749, 2298, 2745, 2290, 2729, 2290, 2709, 2284, 2697, 2281, 2689, 2283, 2681, 2280, 2670, 2280, 2664, 2286, 2652, 2287, 2643, 2283, 2629, 2279, 2621, 2287, 2611, 2295, 2600, 2296, 2592, 2291, 2580, 2293, 2579, 2302, 2589, 2311, 2593, 2320, 2585, 2324, 2579, 2328, 2580, 2332, 2591, 2335, 2599, 2340, 2599, 2352, 2585, 2351, 2578, 2344, 2574, 2335, 2562, 2331, 2549, 2330, 2548, 2334, 2519, 2322, 2520, 2316, 2526, 2309, 2517, 2304, 2501, 2313, 2492, 2317, 2495, 2323, 2488, 2334, 2492, 2352, 2508, 2362, 2511, 2375, 2528, 2387, 2545, 2405, 2550, 2415, 2539, 2416, 2533, 2406, 2516, 2404, 2509, 2414, 2515, 2423, 2523, 2427, 2522, 2435, 2505, 2439, 2484, 2439, 2501, 2450, 2518, 2448, 2529, 2453, 2536, 2458, 2547, 2455, 2552, 2462, 2554, 2471, 2565, 2467, 2569, 2473, 2584, 2479, 2601, 2485, 2595, 2498, 2599, 2507, 2602, 2521, 2594, 2525, 2585, 2518, 2576, 2514, 2568, 2508, 2563, 2503, 2544, 2506, 2527, 2506, 2514, 2500, 2524, 2495, 2538, 2492, 2531, 2484, 2513, 2481, 2503, 2474, 2493, 2479, 2484, 2468, 2478, 2477, 2457, 2478, 2445, 2473, 2434, 2479, 2424, 2477, 2415, 2478, 2403, 2481, 2401, 2475, 2393, 2474, 2388, 2480, 2377, 2480, 2379, 2471, 2375, 2464, 2369, 2456, 2361, 2451, 2352, 2447, 2358, 2440, 2366, 2435, 2375, 2439, 2382, 2438, 2382, 2429, 2375, 2423, 2368, 2426, 2362, 2423, 2351, 2424, 2328, 2405, 2317, 2402, 2314, 2392, 2311, 2383, 2299, 2373, 2312, 2374, 2324, 2368, 2327, 2355, 2329, 2353, 2329, 2349, 2326, 2347, 2322, 2340, 2332, 2339, 2333, 2337, 2335, 2334, 2344, 2335, 2352, 2332, 2354, 2327, 2356, 2323, 2356, 2320, 2358, 2317, 2359, 2317, 2362, 2313, 2363, 2308, 2367, 2304, 2374, 2305, 2377, 2301, 2382, 2297, 2383, 2290, 2376, 2282], [2754, 2729, 2749, 2724, 2654, 2733, 2653, 2726, 2655, 2720, 2636, 2716, 2624, 2711, 2564, 2708, 2568, 2688, 2578, 2689, 2581, 2683, 2576, 2675, 2580, 2678, 2585, 2684, 2586, 2688, 2602, 2690, 2613, 2691, 2615, 2698, 2625, 2700, 2638, 2699, 2649, 2692, 2681, 2694, 2682, 2700, 2693, 2702, 2709, 2704, 2726, 2700, 2728, 2708, 2725, 2715, 2737, 2717, 2747, 2711, 2757, 2708, 2770, 2714, 2765, 2723, 2754, 2729]], + "center":[2542, 2352], + "bbox":[2298.9514655726484, 2215.594439945399, 509.6843053240641, 517.7769396443887] + }, + "HUN":{ + "shape":[2034, 1854, 2031, 1852, 2026, 1844, 2023, 1835, 2014, 1831, 2002, 1831, 2003, 1823, 2009, 1816, 2023, 1815, 2036, 1816, 2036, 1807, 2035, 1797, 2041, 1789, 2050, 1785, 2049, 1774, 2051, 1766, 2072, 1766, 2083, 1764, 2086, 1757, 2088, 1744, 2110, 1750, 2131, 1756, 2149, 1762, 2169, 1764, 2195, 1759, 2211, 1757, 2212, 1746, 2221, 1742, 2237, 1741, 2250, 1740, 2268, 1741, 2278, 1726, 2299, 1731, 2317, 1731, 2329, 1726, 2338, 1712, 2354, 1705, 2376, 1704, 2392, 1707, 2411, 1700, 2424, 1706, 2432, 1717, 2447, 1720, 2470, 1717, 2495, 1727, 2513, 1734, 2527, 1739, 2519, 1751, 2507, 1759, 2496, 1759, 2475, 1763, 2452, 1785, 2447, 1800, 2434, 1812, 2417, 1836, 2400, 1847, 2408, 1856, 2364, 1873, 2360, 1889, 2348, 1887, 2329, 1883, 2315, 1884, 2303, 1884, 2291, 1882, 2282, 1882, 2265, 1890, 2252, 1895, 2240, 1894, 2218, 1907, 2201, 1899, 2184, 1915, 2165, 1908, 2141, 1912, 2122, 1907, 2119, 1898, 2105, 1900, 2093, 1886, 2081, 1879, 2069, 1869, 2052, 1860, 2034, 1854], + "center":[2259, 1803], + "bbox":[2001.6725158150703, 1700.2296213071074, 524.9286971298961, 214.64740218525253] + }, + "ESP":{ + "shape":[918, 2162, 922, 2160, 934, 2165, 944, 2166, 954, 2169, 963, 2165, 973, 2165, 985, 2172, 996, 2174, 1004, 2170, 1012, 2165, 1023, 2165, 1030, 2171, 1028, 2177, 1019, 2179, 1019, 2187, 1024, 2192, 1024, 2198, 1028, 2203, 1019, 2210, 989, 2228, 970, 2234, 960, 2243, 949, 2251, 924, 2255, 889, 2264, 862, 2272, 853, 2276, 845, 2287, 849, 2292, 852, 2296, 843, 2304, 833, 2302, 821, 2315, 811, 2326, 795, 2337, 786, 2345, 778, 2364, 765, 2382, 760, 2394, 762, 2401, 769, 2407, 771, 2419, 780, 2428, 791, 2434, 800, 2435, 803, 2445, 795, 2452, 785, 2453, 780, 2457, 766, 2456, 756, 2466, 756, 2475, 747, 2476, 746, 2486, 740, 2493, 737, 2504, 730, 2512, 725, 2520, 727, 2528, 735, 2526, 722, 2533, 715, 2532, 705, 2535, 686, 2536, 675, 2540, 663, 2548, 653, 2558, 651, 2569, 642, 2578, 638, 2585, 626, 2594, 620, 2588, 609, 2581, 603, 2585, 593, 2592, 583, 2595, 566, 2589, 551, 2590, 544, 2593, 528, 2597, 520, 2591, 502, 2590, 483, 2592, 466, 2596, 450, 2594, 445, 2604, 435, 2609, 424, 2611, 407, 2611, 395, 2621, 392, 2628, 389, 2636, 389, 2636, 382, 2635, 380, 2645, 379, 2646, 371, 2650, 368, 2645, 361, 2642, 357, 2636, 345, 2637, 334, 2632, 328, 2626, 323, 2619, 323, 2613, 328, 2607, 326, 2600, 315, 2598, 314, 2592, 312, 2586, 296, 2573, 280, 2564, 271, 2559, 260, 2556, 253, 2560, 246, 2558, 235, 2555, 232, 2543, 229, 2533, 227, 2525, 233, 2511, 239, 2503, 250, 2496, 258, 2484, 250, 2480, 239, 2475, 241, 2463, 248, 2443, 256, 2424, 242, 2411, 234, 2397, 232, 2389, 223, 2379, 243, 2381, 254, 2376, 259, 2362, 267, 2353, 265, 2330, 267, 2305, 262, 2289, 259, 2277, 280, 2257, 304, 2242, 312, 2230, 292, 2222, 287, 2210, 272, 2203, 245, 2203, 233, 2214, 224, 2216, 207, 2206, 195, 2209, 178, 2216, 169, 2210, 171, 2192, 156, 2197, 147, 2201, 132, 2197, 125, 2203, 117, 2194, 125, 2186, 136, 2177, 136, 2170, 129, 2175, 119, 2177, 122, 2173, 131, 2169, 131, 2164, 123, 2163, 126, 2156, 130, 2149, 124, 2142, 113, 2153, 105, 2150, 108, 2145, 117, 2136, 104, 2138, 99, 2128, 88, 2126, 90, 2120, 98, 2114, 108, 2109, 114, 2105, 114, 2101, 120, 2100, 141, 2099, 148, 2096, 158, 2095, 166, 2101, 168, 2095, 177, 2088, 177, 2084, 164, 2084, 165, 2079, 174, 2075, 181, 2074, 181, 2070, 195, 2066, 197, 2073, 203, 2068, 208, 2065, 214, 2073, 221, 2070, 229, 2071, 234, 2076, 236, 2081, 244, 2082, 250, 2082, 249, 2091, 253, 2087, 258, 2083, 276, 2080, 293, 2081, 311, 2080, 318, 2077, 328, 2081, 344, 2077, 350, 2074, 356, 2078, 361, 2082, 374, 2080, 383, 2080, 391, 2085, 404, 2086, 414, 2086, 429, 2090, 445, 2092, 462, 2089, 484, 2087, 493, 2085, 497, 2090, 505, 2088, 508, 2085, 518, 2083, 528, 2084, 522, 2092, 532, 2090, 546, 2093, 556, 2095, 561, 2089, 573, 2088, 582, 2090, 593, 2094, 606, 2097, 620, 2097, 634, 2097, 643, 2097, 656, 2093, 665, 2103, 681, 2102, 686, 2105, 686, 2111, 703, 2115, 715, 2121, 730, 2129, 745, 2138, 759, 2145, 775, 2140, 795, 2138, 809, 2137, 827, 2142, 837, 2138, 841, 2125, 862, 2126, 873, 2132, 885, 2139, 893, 2145, 900, 2153, 897, 2158, 900, 2158, 900, 2160, 900, 2161, 898, 2161, 899, 2163, 899, 2165, 908, 2166, 908, 2164, 912, 2165, 918, 2163, 918, 2162], + "center":[502, 2293], + "bbox":[87.59053972304365, 2065.1286798202555, 942.6654396653893, 585.192585029064] + }, + "SVN":{ + "shape":[2002, 1831, 2014, 1831, 2023, 1835, 2026, 1844, 2031, 1852, 2034, 1854, 2028, 1855, 2016, 1861, 1997, 1863, 1977, 1865, 1967, 1872, 1958, 1879, 1950, 1888, 1965, 1892, 1966, 1899, 1956, 1908, 1944, 1914, 1942, 1920, 1938, 1928, 1914, 1924, 1895, 1921, 1885, 1914, 1876, 1914, 1873, 1923, 1867, 1930, 1856, 1931, 1837, 1932, 1838, 1919, 1833, 1914, 1823, 1908, 1831, 1902, 1829, 1895, 1808, 1896, 1802, 1885, 1803, 1875, 1811, 1866, 1826, 1864, 1830, 1855, 1879, 1866, 1901, 1866, 1914, 1861, 1923, 1853, 1936, 1848, 1956, 1850, 1974, 1853, 1979, 1841, 1994, 1844, 1999, 1838, 1996, 1832, 2002, 1831], + "center":[1915, 1880], + "bbox":[1801.961299566224, 1831.283303815061, 231.78577805236228, 100.504466372872] + }, + "CHE":{ + "shape":[1504, 1806, 1506, 1813, 1505, 1818, 1514, 1817, 1515, 1817, 1535, 1821, 1536, 1826, 1554, 1833, 1563, 1827, 1572, 1823, 1581, 1824, 1580, 1827, 1579, 1828, 1580, 1830, 1577, 1832, 1579, 1836, 1575, 1841, 1574, 1848, 1581, 1851, 1579, 1857, 1567, 1856, 1562, 1853, 1561, 1849, 1552, 1852, 1548, 1857, 1548, 1865, 1553, 1864, 1556, 1868, 1552, 1871, 1557, 1878, 1547, 1880, 1542, 1870, 1533, 1869, 1521, 1875, 1507, 1873, 1502, 1859, 1490, 1860, 1491, 1872, 1486, 1880, 1474, 1888, 1475, 1891, 1468, 1898, 1474, 1904, 1470, 1911, 1463, 1909, 1463, 1903, 1453, 1898, 1457, 1892, 1434, 1884, 1428, 1877, 1428, 1865, 1421, 1862, 1406, 1870, 1401, 1879, 1387, 1895, 1372, 1900, 1355, 1901, 1346, 1908, 1324, 1899, 1305, 1889, 1301, 1873, 1300, 1865, 1283, 1863, 1263, 1868, 1258, 1874, 1267, 1878, 1257, 1885, 1241, 1887, 1250, 1873, 1239, 1873, 1240, 1870, 1238, 1869, 1241, 1866, 1249, 1865, 1249, 1862, 1250, 1861, 1253, 1857, 1259, 1851, 1274, 1840, 1276, 1831, 1298, 1820, 1312, 1814, 1319, 1804, 1322, 1796, 1307, 1795, 1314, 1791, 1314, 1786, 1324, 1781, 1342, 1785, 1342, 1790, 1368, 1781, 1374, 1776, 1400, 1778, 1406, 1775, 1420, 1779, 1428, 1765, 1430, 1765, 1433, 1764, 1431, 1762, 1435, 1760, 1441, 1762, 1441, 1760, 1442, 1759, 1451, 1767, 1468, 1770, 1491, 1773, 1505, 1778, 1510, 1785, 1509, 1794, 1503, 1803, 1504, 1806], + "center":[1415, 1843], + "bbox":[1238.1133738927858, 1758.8037007419707, 342.9771966154101, 151.81311762341943] + }, + "SWE":{ + "shape":[1630, 908, 1639, 908, 1648, 908, 1666, 923, 1679, 906, 1685, 882, 1683, 870, 1691, 859, 1685, 847, 1710, 849, 1730, 844, 1740, 829, 1732, 816, 1748, 808, 1739, 796, 1734, 785, 1716, 775, 1711, 758, 1733, 758, 1756, 753, 1764, 738, 1753, 729, 1728, 720, 1710, 711, 1710, 689, 1717, 665, 1699, 656, 1700, 639, 1690, 623, 1708, 614, 1698, 603, 1691, 588, 1701, 569, 1755, 536, 1796, 534, 1840, 538, 1858, 525, 1858, 513, 1840, 498, 1817, 494, 1851, 468, 1881, 444, 1878, 423, 1883, 411, 1889, 398, 1876, 378, 1913, 377, 1953, 364, 1944, 350, 1969, 335, 2023, 310, 2039, 305, 2028, 299, 2019, 290, 2001, 278, 2022, 272, 2040, 259, 2045, 243, 2076, 233, 2104, 230, 2138, 241, 2155, 224, 2153, 198, 2177, 190, 2194, 199, 2219, 197, 2298, 210, 2319, 199, 2303, 198, 2302, 192, 2323, 179, 2327, 165, 2310, 155, 2345, 156, 2360, 163, 2362, 168, 2374, 171, 2377, 177, 2398, 180, 2399, 185, 2418, 188, 2423, 192, 2438, 194, 2445, 198, 2458, 202, 2497, 205, 2525, 214, 2528, 221, 2529, 227, 2550, 228, 2555, 234, 2573, 240, 2564, 244, 2558, 251, 2562, 263, 2551, 273, 2564, 278, 2578, 281, 2580, 287, 2564, 293, 2561, 303, 2584, 316, 2595, 326, 2591, 335, 2580, 346, 2569, 357, 2573, 367, 2589, 375, 2614, 399, 2579, 401, 2556, 401, 2534, 397, 2536, 402, 2525, 404, 2510, 399, 2496, 395, 2497, 400, 2491, 402, 2480, 398, 2472, 401, 2467, 408, 2465, 416, 2456, 414, 2458, 418, 2456, 424, 2442, 423, 2439, 426, 2448, 430, 2436, 432, 2421, 431, 2409, 436, 2394, 435, 2401, 440, 2416, 444, 2417, 453, 2390, 469, 2372, 477, 2380, 484, 2382, 490, 2398, 493, 2408, 500, 2409, 508, 2390, 517, 2373, 523, 2356, 545, 2335, 554, 2281, 569, 2274, 576, 2269, 570, 2257, 570, 2258, 578, 2250, 577, 2242, 579, 2237, 587, 2223, 594, 2208, 591, 2206, 598, 2187, 600, 2184, 610, 2170, 609, 2168, 613, 2182, 615, 2178, 624, 2170, 620, 2164, 623, 2157, 627, 2142, 626, 2143, 634, 2148, 642, 2143, 651, 2127, 651, 2120, 654, 2111, 649, 2105, 654, 2112, 662, 2103, 668, 2111, 675, 2080, 720, 2086, 722, 2084, 732, 2089, 739, 2094, 747, 2088, 759, 2081, 769, 2091, 775, 2095, 782, 2086, 787, 2095, 789, 2114, 792, 2116, 801, 2127, 801, 2131, 796, 2146, 793, 2146, 800, 2167, 811, 2181, 812, 2180, 824, 2193, 833, 2199, 828, 2216, 844, 2219, 855, 2205, 859, 2202, 865, 2181, 878, 2159, 884, 2158, 890, 2172, 894, 2183, 903, 2166, 906, 2152, 911, 2142, 921, 2131, 917, 2124, 913, 2117, 918, 2112, 926, 2097, 935, 2077, 936, 2061, 942, 2045, 943, 2055, 946, 2053, 956, 2036, 956, 2039, 961, 2055, 964, 2056, 974, 2057, 984, 2051, 994, 2047, 1002, 2032, 1007, 2043, 1012, 2050, 1017, 2039, 1022, 2044, 1026, 2045, 1037, 2035, 1049, 2040, 1057, 2027, 1090, 2017, 1093, 2007, 1115, 1992, 1131, 1977, 1129, 1950, 1129, 1919, 1130, 1905, 1134, 1901, 1143, 1883, 1145, 1868, 1153, 1867, 1165, 1873, 1176, 1865, 1188, 1849, 1188, 1821, 1187, 1792, 1194, 1769, 1189, 1772, 1179, 1769, 1172, 1780, 1164, 1769, 1160, 1769, 1154, 1761, 1154, 1742, 1138, 1744, 1127, 1754, 1124, 1746, 1117, 1746, 1108, 1760, 1112, 1767, 1105, 1762, 1093, 1747, 1092, 1740, 1081, 1727, 1077, 1703, 1034, 1675, 1022, 1660, 998, 1658, 986, 1655, 972, 1649, 967, 1647, 961, 1638, 959, 1639, 949, 1640, 936, 1633, 931, 1634, 923, 1629, 914, 1630, 908], + "center":[2076, 632], + "bbox":[1628.6288797888515, 155.2851099806804, 985.4291299493589, 1038.225572371646] + }, + "ROM":{ + "shape":[2939, 2062, 2918, 2062, 2908, 2060, 2902, 2048, 2890, 2043, 2867, 2044, 2848, 2042, 2821, 2042, 2799, 2047, 2774, 2052, 2755, 2060, 2744, 2069, 2728, 2077, 2713, 2075, 2696, 2069, 2684, 2069, 2676, 2074, 2662, 2077, 2650, 2074, 2635, 2077, 2624, 2082, 2608, 2076, 2581, 2069, 2556, 2066, 2539, 2068, 2523, 2069, 2517, 2055, 2517, 2050, 2527, 2044, 2507, 2039, 2507, 2036, 2499, 2032, 2488, 2028, 2486, 2019, 2492, 2010, 2496, 2002, 2483, 1997, 2473, 2007, 2464, 2017, 2452, 2014, 2446, 2001, 2427, 2004, 2402, 1991, 2413, 1982, 2418, 1977, 2406, 1968, 2414, 1959, 2412, 1951, 2398, 1950, 2376, 1942, 2359, 1935, 2359, 1924, 2362, 1913, 2344, 1909, 2331, 1896, 2315, 1884, 2329, 1883, 2348, 1887, 2360, 1889, 2364, 1873, 2408, 1856, 2400, 1847, 2417, 1836, 2434, 1812, 2447, 1800, 2452, 1785, 2475, 1763, 2496, 1759, 2507, 1759, 2519, 1751, 2527, 1739, 2541, 1736, 2555, 1738, 2562, 1748, 2569, 1743, 2590, 1744, 2600, 1745, 2624, 1747, 2637, 1747, 2648, 1747, 2663, 1756, 2674, 1766, 2690, 1760, 2709, 1750, 2737, 1746, 2760, 1744, 2786, 1729, 2801, 1724, 2821, 1725, 2835, 1736, 2850, 1754, 2850, 1767, 2861, 1776, 2872, 1782, 2878, 1794, 2886, 1805, 2905, 1814, 2915, 1818, 2928, 1838, 2929, 1855, 2925, 1868, 2919, 1881, 2916, 1893, 2920, 1901, 2924, 1914, 2923, 1929, 2930, 1937, 2931, 1950, 2953, 1959, 2965, 1952, 2978, 1954, 2990, 1943, 2999, 1937, 3017, 1938, 3027, 1948, 3029, 1954, 3026, 1961, 3024, 1967, 3022, 1976, 3015, 1985, 3005, 1988, 2993, 1989, 2988, 1987, 2994, 1979, 2989, 1982, 2980, 1982, 2979, 1978, 2979, 1971, 2972, 1971, 2967, 1973, 2965, 1978, 2969, 1982, 2968, 1988, 2960, 1991, 2956, 1994, 2958, 2001, 2953, 2007, 2958, 2010, 2967, 2009, 2959, 2014, 2952, 2022, 2949, 2027, 2951, 2034, 2954, 2041, 2948, 2054, 2939, 2062], + "center":[2684, 1920], + "bbox":[2315.0088187053984, 1723.7916866395121, 713.6822019006154, 357.8088846467408] + }, + "AUT":{ + "shape":[1830, 1855, 1817, 1852, 1791, 1851, 1740, 1844, 1742, 1835, 1722, 1834, 1711, 1829, 1718, 1818, 1704, 1817, 1677, 1820, 1661, 1816, 1631, 1822, 1620, 1835, 1601, 1833, 1589, 1827, 1581, 1824, 1572, 1823, 1563, 1827, 1554, 1833, 1536, 1826, 1535, 1821, 1515, 1817, 1505, 1818, 1506, 1813, 1503, 1803, 1509, 1794, 1510, 1785, 1505, 1778, 1513, 1780, 1523, 1780, 1528, 1774, 1542, 1777, 1544, 1784, 1545, 1790, 1553, 1794, 1566, 1800, 1573, 1794, 1574, 1784, 1575, 1783, 1577, 1782, 1577, 1781, 1579, 1780, 1580, 1779, 1581, 1780, 1581, 1778, 1581, 1777, 1598, 1785, 1612, 1784, 1615, 1793, 1628, 1790, 1633, 1788, 1647, 1794, 1657, 1783, 1666, 1778, 1674, 1773, 1683, 1773, 1696, 1775, 1699, 1785, 1711, 1782, 1716, 1776, 1716, 1763, 1734, 1772, 1747, 1775, 1755, 1771, 1762, 1774, 1765, 1782, 1777, 1785, 1779, 1781, 1782, 1772, 1780, 1773, 1780, 1773, 1779, 1774, 1778, 1773, 1778, 1773, 1777, 1772, 1776, 1773, 1773, 1772, 1772, 1771, 1770, 1770, 1770, 1769, 1769, 1769, 1768, 1768, 1768, 1768, 1767, 1767, 1766, 1767, 1765, 1767, 1764, 1767, 1763, 1767, 1763, 1765, 1762, 1765, 1763, 1764, 1772, 1753, 1773, 1753, 1774, 1752, 1774, 1752, 1775, 1751, 1776, 1750, 1774, 1750, 1775, 1749, 1776, 1748, 1778, 1746, 1779, 1745, 1780, 1744, 1779, 1743, 1778, 1741, 1775, 1738, 1775, 1738, 1774, 1737, 1774, 1737, 1773, 1736, 1771, 1736, 1770, 1736, 1770, 1735, 1770, 1732, 1791, 1727, 1802, 1721, 1810, 1713, 1810, 1705, 1821, 1710, 1831, 1701, 1832, 1692, 1861, 1706, 1870, 1697, 1881, 1694, 1899, 1700, 1904, 1686, 1917, 1686, 1920, 1673, 1926, 1669, 1953, 1672, 1978, 1677, 1996, 1686, 2016, 1690, 2033, 1683, 2055, 1693, 2076, 1693, 2084, 1694, 2077, 1703, 2076, 1704, 2077, 1705, 2076, 1706, 2075, 1706, 2075, 1707, 2076, 1708, 2077, 1708, 2077, 1709, 2080, 1711, 2079, 1711, 2079, 1712, 2081, 1714, 2076, 1726, 2078, 1738, 2088, 1744, 2086, 1757, 2083, 1764, 2072, 1766, 2051, 1766, 2049, 1774, 2050, 1785, 2041, 1789, 2035, 1797, 2036, 1807, 2036, 1816, 2023, 1815, 2009, 1816, 2003, 1823, 2002, 1831, 1996, 1832, 1999, 1838, 1994, 1844, 1979, 1841, 1974, 1853, 1956, 1850, 1936, 1848, 1923, 1853, 1914, 1861, 1901, 1866, 1879, 1866, 1830, 1855], + "center":[1803, 1779], + "bbox":[1503.4819728405375, 1668.900250072106, 584.3759545846531, 197.0281560960966] + }, + "PRT":{ + "shape":[125, 2203, 132, 2197, 147, 2201, 156, 2197, 171, 2192, 169, 2210, 178, 2216, 195, 2209, 207, 2206, 224, 2216, 233, 2214, 245, 2203, 272, 2203, 287, 2210, 292, 2222, 312, 2230, 304, 2242, 280, 2257, 259, 2277, 262, 2289, 267, 2305, 265, 2330, 267, 2353, 259, 2362, 254, 2376, 243, 2381, 223, 2379, 232, 2389, 234, 2397, 242, 2411, 256, 2424, 248, 2443, 241, 2463, 239, 2475, 250, 2480, 258, 2484, 250, 2496, 239, 2503, 233, 2511, 227, 2525, 229, 2533, 232, 2543, 235, 2555, 226, 2560, 215, 2566, 208, 2570, 196, 2573, 185, 2569, 171, 2566, 160, 2568, 150, 2564, 136, 2562, 122, 2568, 115, 2575, 107, 2571, 110, 2567, 118, 2558, 120, 2550, 124, 2541, 126, 2525, 127, 2514, 124, 2503, 121, 2498, 127, 2490, 127, 2483, 125, 2469, 135, 2472, 130, 2463, 126, 2457, 119, 2458, 105, 2462, 96, 2462, 99, 2455, 107, 2448, 113, 2441, 113, 2437, 110, 2429, 104, 2430, 101, 2438, 91, 2442, 75, 2448, 74, 2439, 77, 2429, 77, 2423, 81, 2413, 86, 2401, 79, 2394, 94, 2390, 100, 2385, 106, 2375, 108, 2362, 117, 2344, 118, 2331, 120, 2321, 129, 2305, 140, 2298, 138, 2290, 133, 2288, 136, 2279, 137, 2267, 135, 2261, 130, 2249, 128, 2238, 129, 2224, 126, 2211, 125, 2203], + "center":[182, 2381], + "bbox":[73.6048710478089, 2191.913523983608, 238.1265526566595, 382.6040612307711] + }, + "AND":{ + "shape":[918, 2153, 918, 2161, 918, 2162, 918, 2163, 912, 2165, 908, 2164, 908, 2166, 899, 2165, 899, 2163, 898, 2161, 900, 2161, 900, 2160, 900, 2158, 897, 2158, 900, 2153, 901, 2150, 906, 2149, 918, 2153], + "center":[907, 2158], + "bbox":[896.7998342866069, 2148.6777945397944, 21.39314026838531, 16.913336660862115] + }, + "ALB":{ + "shape":[2248, 2205, 2251, 2200, 2252, 2183, 2251, 2174, 2258, 2165, 2267, 2155, 2279, 2146, 2283, 2159, 2299, 2159, 2310, 2157, 2313, 2168, 2316, 2174, 2331, 2179, 2338, 2191, 2339, 2198, 2339, 2207, 2343, 2213, 2344, 2219, 2343, 2228, 2336, 2237, 2340, 2248, 2345, 2260, 2356, 2277, 2376, 2282, 2383, 2290, 2382, 2297, 2377, 2301, 2374, 2305, 2367, 2304, 2363, 2308, 2362, 2313, 2359, 2317, 2358, 2317, 2356, 2320, 2356, 2323, 2354, 2327, 2352, 2332, 2344, 2335, 2335, 2334, 2333, 2337, 2332, 2339, 2322, 2340, 2326, 2347, 2329, 2349, 2329, 2353, 2327, 2355, 2324, 2368, 2312, 2374, 2299, 2373, 2302, 2365, 2301, 2358, 2298, 2351, 2292, 2345, 2284, 2341, 2273, 2336, 2259, 2330, 2249, 2327, 2245, 2317, 2255, 2322, 2260, 2318, 2260, 2311, 2257, 2306, 2249, 2300, 2248, 2292, 2252, 2286, 2259, 2281, 2270, 2274, 2268, 2266, 2259, 2266, 2258, 2259, 2262, 2255, 2261, 2246, 2257, 2239, 2263, 2234, 2267, 2229, 2268, 2225, 2267, 2216, 2265, 2210, 2256, 2207, 2248, 2205], + "center":[2302, 2265], + "bbox":[2245.4407682783576, 2146.4069705289244, 137.30916811640463, 227.24038896964885] + }, + "SVK":{ + "shape":[2084, 1694, 2089, 1688, 2101, 1682, 2120, 1682, 2135, 1672, 2147, 1665, 2167, 1664, 2175, 1654, 2190, 1633, 2196, 1626, 2217, 1626, 2220, 1633, 2229, 1639, 2242, 1631, 2252, 1625, 2260, 1627, 2262, 1632, 2279, 1643, 2287, 1653, 2297, 1650, 2314, 1647, 2324, 1643, 2333, 1639, 2358, 1647, 2376, 1639, 2390, 1633, 2407, 1639, 2420, 1635, 2430, 1644, 2439, 1640, 2456, 1650, 2471, 1655, 2511, 1664, 2488, 1667, 2482, 1676, 2480, 1689, 2470, 1700, 2468, 1710, 2470, 1717, 2447, 1720, 2432, 1717, 2424, 1706, 2411, 1700, 2392, 1707, 2376, 1704, 2354, 1705, 2338, 1712, 2329, 1726, 2317, 1731, 2299, 1731, 2278, 1726, 2268, 1741, 2250, 1740, 2237, 1741, 2221, 1742, 2212, 1746, 2211, 1757, 2195, 1759, 2169, 1764, 2149, 1762, 2131, 1756, 2110, 1750, 2088, 1744, 2078, 1738, 2076, 1726, 2081, 1714, 2079, 1712, 2079, 1711, 2080, 1711, 2077, 1709, 2077, 1708, 2076, 1708, 2075, 1707, 2075, 1706, 2076, 1706, 2077, 1705, 2076, 1704, 2077, 1703, 2084, 1694], + "center":[2288, 1689], + "bbox":[2074.9027771611745, 1624.670261731124, 435.66093905159323, 139.46387535013787] + }, + "SMR":{ + "shape":[1732, 2048, 1734, 2051, 1733, 2053, 1731, 2053, 1726, 2052, 1728, 2049, 1732, 2048], + "center":[1730, 2051], + "bbox":[1726.2879815175113, 2048.2544804126537, 7.7668742417154135, 4.707118026333774] + }, + "BGR":{ + "shape":[2795, 2220, 2788, 2219, 2774, 2216, 2766, 2218, 2766, 2220, 2768, 2224, 2771, 2225, 2772, 2229, 2774, 2231, 2772, 2235, 2774, 2238, 2769, 2245, 2762, 2245, 2758, 2247, 2758, 2247, 2752, 2248, 2750, 2248, 2748, 2246, 2739, 2247, 2737, 2248, 2734, 2247, 2726, 2247, 2724, 2250, 2719, 2249, 2709, 2252, 2702, 2252, 2700, 2248, 2698, 2247, 2693, 2244, 2689, 2243, 2678, 2239, 2672, 2240, 2668, 2244, 2664, 2238, 2659, 2238, 2658, 2237, 2656, 2237, 2652, 2233, 2650, 2227, 2649, 2227, 2632, 2230, 2629, 2226, 2624, 2228, 2623, 2230, 2616, 2228, 2614, 2230, 2614, 2233, 2612, 2234, 2611, 2235, 2610, 2233, 2606, 2236, 2603, 2233, 2601, 2235, 2593, 2236, 2591, 2238, 2584, 2238, 2580, 2240, 2573, 2238, 2567, 2238, 2563, 2238, 2558, 2241, 2556, 2238, 2550, 2240, 2550, 2243, 2547, 2244, 2540, 2244, 2531, 2243, 2522, 2242, 2527, 2234, 2527, 2218, 2518, 2202, 2502, 2189, 2485, 2182, 2481, 2171, 2498, 2165, 2500, 2154, 2490, 2151, 2485, 2136, 2490, 2128, 2505, 2122, 2518, 2113, 2525, 2108, 2520, 2098, 2504, 2094, 2490, 2085, 2480, 2068, 2479, 2058, 2486, 2046, 2496, 2043, 2507, 2039, 2527, 2044, 2517, 2050, 2517, 2055, 2523, 2069, 2539, 2068, 2556, 2066, 2581, 2069, 2608, 2076, 2624, 2082, 2635, 2077, 2650, 2074, 2662, 2077, 2676, 2074, 2684, 2069, 2696, 2069, 2713, 2075, 2728, 2077, 2744, 2069, 2755, 2060, 2774, 2052, 2799, 2047, 2821, 2042, 2848, 2042, 2867, 2044, 2890, 2043, 2902, 2048, 2908, 2060, 2918, 2062, 2939, 2062, 2940, 2070, 2946, 2076, 2944, 2084, 2936, 2091, 2924, 2087, 2910, 2089, 2898, 2093, 2892, 2102, 2889, 2111, 2891, 2124, 2892, 2136, 2892, 2142, 2881, 2142, 2874, 2147, 2870, 2153, 2863, 2154, 2855, 2158, 2869, 2162, 2876, 2168, 2880, 2172, 2879, 2179, 2886, 2183, 2893, 2187, 2897, 2201, 2884, 2204, 2864, 2208, 2858, 2199, 2843, 2193, 2828, 2196, 2815, 2202, 2803, 2204, 2789, 2208, 2794, 2214, 2795, 2220], + "center":[2698, 2139], + "bbox":[2478.764266277759, 2039.2647108935091, 467.0091594784226, 212.80133248182688] + }, + "BIH":{ + "shape":[2119, 2125, 2115, 2125, 2121, 2116, 2122, 2109, 2104, 2096, 2080, 2081, 2051, 2063, 2041, 2050, 2035, 2037, 2021, 2034, 2004, 2026, 2003, 2015, 1993, 2000, 1982, 1988, 1981, 1980, 1981, 1966, 1982, 1954, 1991, 1950, 2005, 1959, 2020, 1949, 2041, 1942, 2060, 1939, 2072, 1935, 2086, 1943, 2099, 1939, 2114, 1937, 2122, 1949, 2138, 1948, 2159, 1952, 2180, 1957, 2197, 1960, 2209, 1967, 2212, 1975, 2228, 1974, 2241, 1973, 2255, 1973, 2255, 1982, 2246, 1994, 2233, 2009, 2237, 2015, 2259, 2025, 2266, 2037, 2260, 2045, 2247, 2047, 2251, 2058, 2255, 2065, 2250, 2070, 2242, 2076, 2231, 2076, 2222, 2083, 2225, 2092, 2222, 2098, 2209, 2097, 2206, 2102, 2202, 2110, 2195, 2116, 2189, 2124, 2191, 2137, 2190, 2147, 2179, 2155, 2168, 2149, 2159, 2140, 2156, 2133, 2144, 2125, 2132, 2124, 2119, 2125], + "center":[2134, 2028], + "bbox":[1981.2445243131538, 1934.91040500506, 284.29523793189946, 219.80114533702954] + }, + "BEL":{ + "shape":[1259, 1587, 1247, 1581, 1235, 1588, 1229, 1600, 1241, 1614, 1236, 1623, 1217, 1629, 1205, 1629, 1190, 1618, 1169, 1611, 1157, 1603, 1168, 1584, 1153, 1585, 1139, 1595, 1117, 1597, 1112, 1583, 1112, 1584, 1110, 1584, 1109, 1584, 1108, 1584, 1107, 1584, 1106, 1584, 1106, 1584, 1105, 1584, 1104, 1584, 1104, 1584, 1104, 1584, 1104, 1583, 1103, 1583, 1102, 1583, 1102, 1583, 1101, 1583, 1100, 1583, 1100, 1583, 1100, 1582, 1101, 1582, 1101, 1582, 1101, 1581, 1102, 1581, 1102, 1581, 1101, 1581, 1101, 1581, 1100, 1581, 1100, 1580, 1100, 1580, 1100, 1580, 1100, 1580, 1100, 1579, 1100, 1579, 1101, 1579, 1101, 1578, 1101, 1578, 1102, 1578, 1102, 1577, 1103, 1578, 1104, 1577, 1104, 1577, 1105, 1577, 1105, 1577, 1106, 1576, 1107, 1576, 1107, 1576, 1107, 1575, 1107, 1575, 1106, 1575, 1106, 1574, 1106, 1574, 1105, 1573, 1105, 1573, 1105, 1573, 1102, 1566, 1073, 1570, 1067, 1562, 1053, 1556, 1039, 1555, 1038, 1543, 1011, 1541, 994, 1534, 990, 1528, 993, 1521, 992, 1521, 992, 1520, 993, 1520, 992, 1519, 992, 1519, 991, 1519, 991, 1519, 989, 1519, 989, 1518, 988, 1519, 986, 1519, 985, 1518, 985, 1518, 1000, 1509, 1029, 1499, 1062, 1504, 1099, 1505, 1111, 1500, 1112, 1490, 1133, 1496, 1151, 1485, 1164, 1492, 1173, 1487, 1186, 1501, 1224, 1508, 1229, 1515, 1212, 1532, 1214, 1537, 1227, 1536, 1234, 1538, 1264, 1539, 1261, 1559, 1277, 1570, 1260, 1578, 1259, 1587], + "center":[1143, 1550], + "bbox":[985.2982108011588, 1485.2086885723545, 292.0107984863207, 143.51832212356908] + }, + "DNK":{ + "shape":[1400, 1133, 1402, 1122, 1411, 1123, 1416, 1116, 1402, 1113, 1401, 1098, 1418, 1101, 1436, 1104, 1442, 1111, 1449, 1104, 1451, 1098, 1459, 1095, 1464, 1088, 1471, 1082, 1480, 1087, 1476, 1095, 1473, 1103, 1482, 1098, 1491, 1100, 1494, 1107, 1495, 1097, 1489, 1090, 1482, 1078, 1484, 1072, 1494, 1068, 1505, 1070, 1513, 1073, 1524, 1066, 1541, 1065, 1557, 1069, 1568, 1070, 1567, 1080, 1572, 1088, 1557, 1091, 1560, 1096, 1573, 1097, 1571, 1102, 1580, 1108, 1593, 1108, 1600, 1105, 1615, 1114, 1607, 1126, 1590, 1131, 1587, 1123, 1572, 1130, 1567, 1142, 1562, 1153, 1545, 1153, 1536, 1160, 1549, 1163, 1536, 1166, 1521, 1168, 1527, 1177, 1513, 1179, 1518, 1191, 1520, 1201, 1511, 1205, 1507, 1214, 1509, 1220, 1519, 1221, 1518, 1226, 1508, 1231, 1494, 1235, 1475, 1230, 1459, 1230, 1442, 1228, 1444, 1218, 1446, 1199, 1444, 1188, 1437, 1183, 1424, 1180, 1419, 1174, 1412, 1174, 1414, 1178, 1403, 1177, 1403, 1165, 1409, 1157, 1421, 1151, 1420, 1142, 1413, 1131, 1400, 1133], + "center":[1495, 1138], + "bbox":[1399.7271000295998, 1065.22855047784, 215.29690792502356, 169.4781197660193] + }, + "BLR":{ + "shape":[3188, 1431, 3146, 1431, 3128, 1434, 3106, 1454, 3096, 1470, 3099, 1479, 3097, 1487, 3085, 1489, 3065, 1484, 3048, 1480, 3037, 1483, 3028, 1485, 3013, 1490, 3005, 1480, 2993, 1474, 2975, 1478, 2969, 1484, 2965, 1491, 2956, 1485, 2944, 1479, 2930, 1480, 2921, 1474, 2904, 1483, 2886, 1477, 2883, 1486, 2874, 1484, 2866, 1474, 2840, 1477, 2837, 1470, 2835, 1463, 2811, 1462, 2789, 1460, 2770, 1454, 2743, 1447, 2718, 1448, 2685, 1448, 2658, 1450, 2639, 1451, 2635, 1459, 2630, 1466, 2619, 1471, 2596, 1470, 2582, 1469, 2570, 1474, 2578, 1451, 2583, 1438, 2573, 1429, 2553, 1425, 2536, 1423, 2540, 1410, 2551, 1404, 2564, 1398, 2586, 1395, 2599, 1386, 2596, 1377, 2597, 1364, 2593, 1355, 2574, 1336, 2566, 1320, 2559, 1300, 2591, 1299, 2609, 1296, 2619, 1299, 2633, 1301, 2645, 1294, 2653, 1296, 2661, 1290, 2661, 1280, 2678, 1279, 2694, 1270, 2710, 1273, 2713, 1282, 2723, 1283, 2723, 1273, 2721, 1262, 2730, 1254, 2732, 1245, 2733, 1234, 2740, 1221, 2757, 1213, 2781, 1208, 2799, 1204, 2804, 1198, 2803, 1190, 2787, 1189, 2788, 1183, 2795, 1177, 2808, 1170, 2816, 1170, 2830, 1160, 2851, 1157, 2868, 1161, 2881, 1153, 2892, 1137, 2903, 1129, 2918, 1130, 2924, 1134, 2944, 1132, 2958, 1138, 2987, 1135, 3000, 1142, 3003, 1149, 2997, 1157, 3006, 1161, 3046, 1151, 3057, 1152, 3079, 1147, 3105, 1169, 3123, 1180, 3107, 1185, 3125, 1202, 3117, 1216, 3101, 1224, 3135, 1243, 3139, 1259, 3149, 1272, 3171, 1280, 3184, 1289, 3176, 1301, 3189, 1309, 3217, 1305, 3232, 1310, 3228, 1321, 3255, 1321, 3259, 1327, 3245, 1335, 3228, 1347, 3207, 1353, 3193, 1348, 3183, 1341, 3159, 1344, 3154, 1351, 3138, 1356, 3155, 1366, 3161, 1377, 3156, 1385, 3169, 1396, 3174, 1409, 3188, 1431], + "center":[2901, 1332], + "bbox":[2535.899188333537, 1128.94802762077, 723.3065129156371, 362.1260690100753] + }, + "EST":{ + "shape":[2621, 1002, 2624, 994, 2628, 989, 2629, 982, 2633, 976, 2639, 968, 2635, 961, 2622, 962, 2616, 966, 2616, 971, 2600, 975, 2595, 967, 2588, 965, 2581, 965, 2576, 968, 2569, 961, 2569, 956, 2563, 951, 2557, 946, 2560, 938, 2566, 937, 2576, 936, 2585, 935, 2582, 931, 2568, 932, 2558, 934, 2552, 930, 2552, 925, 2559, 920, 2568, 918, 2566, 915, 2556, 918, 2557, 910, 2558, 906, 2554, 902, 2558, 899, 2569, 899, 2582, 898, 2596, 896, 2605, 895, 2597, 889, 2605, 887, 2609, 890, 2615, 890, 2615, 887, 2623, 884, 2627, 882, 2635, 883, 2640, 883, 2648, 882, 2655, 883, 2655, 877, 2666, 879, 2669, 882, 2676, 882, 2683, 878, 2691, 878, 2698, 878, 2707, 877, 2705, 873, 2704, 869, 2716, 873, 2723, 874, 2718, 870, 2725, 870, 2729, 874, 2735, 873, 2738, 869, 2749, 869, 2752, 873, 2765, 873, 2776, 875, 2786, 878, 2799, 879, 2814, 883, 2824, 886, 2832, 885, 2843, 883, 2854, 885, 2868, 887, 2881, 888, 2893, 886, 2905, 879, 2917, 886, 2889, 900, 2860, 917, 2842, 927, 2851, 947, 2855, 963, 2864, 981, 2880, 987, 2876, 999, 2861, 1002, 2854, 1021, 2856, 1029, 2836, 1023, 2822, 1022, 2807, 1026, 2785, 1026, 2777, 1020, 2764, 1014, 2753, 1005, 2740, 1004, 2716, 993, 2693, 993, 2678, 995, 2658, 997, 2637, 1001, 2621, 1005, 2621, 1002], + "center":[2722, 938], + "bbox":[2552.2355382827286, 869.3592599617424, 364.421066030312, 159.4630117662349] + }, + "FIN":{ + "shape":[2345, 156, 2354, 151, 2380, 157, 2386, 152, 2375, 149, 2373, 143, 2391, 134, 2417, 139, 2463, 161, 2474, 183, 2495, 177, 2504, 184, 2520, 184, 2541, 186, 2558, 182, 2577, 179, 2585, 172, 2614, 176, 2627, 184, 2653, 185, 2674, 191, 2689, 186, 2696, 175, 2704, 169, 2720, 170, 2736, 163, 2735, 152, 2734, 136, 2751, 112, 2783, 93, 2790, 89, 2817, 92, 2844, 93, 2859, 88, 2870, 79, 2887, 81, 2895, 79, 2903, 84, 2916, 93, 2942, 101, 2977, 106, 3003, 124, 2966, 144, 2971, 157, 2957, 162, 2943, 163, 2940, 168, 2957, 168, 2967, 174, 2958, 179, 2953, 188, 2934, 203, 2953, 227, 3004, 236, 3031, 256, 3058, 264, 3054, 276, 3039, 283, 3031, 288, 3033, 289, 3025, 291, 2997, 311, 2990, 316, 2989, 320, 2992, 325, 3027, 348, 3039, 370, 3054, 388, 3064, 411, 3034, 416, 3044, 419, 3034, 426, 3035, 436, 3024, 441, 3026, 445, 3039, 448, 3044, 451, 3035, 454, 3024, 457, 3023, 467, 3030, 475, 3056, 475, 3065, 489, 3052, 492, 3053, 511, 3069, 512, 3090, 519, 3093, 530, 3086, 542, 3074, 551, 3054, 556, 3084, 580, 3105, 581, 3126, 589, 3145, 596, 3150, 604, 3182, 617, 3140, 655, 3053, 708, 3004, 738, 2981, 753, 2963, 751, 2957, 762, 2926, 772, 2886, 801, 2876, 804, 2860, 805, 2840, 800, 2822, 801, 2807, 806, 2786, 808, 2764, 810, 2736, 812, 2734, 817, 2720, 814, 2701, 819, 2681, 824, 2659, 827, 2643, 834, 2628, 844, 2620, 838, 2601, 835, 2582, 841, 2565, 845, 2554, 841, 2542, 848, 2533, 851, 2525, 850, 2529, 841, 2534, 834, 2523, 835, 2515, 828, 2515, 821, 2528, 812, 2517, 811, 2503, 817, 2492, 820, 2492, 817, 2479, 817, 2489, 810, 2469, 810, 2449, 804, 2445, 799, 2435, 798, 2432, 793, 2420, 799, 2404, 796, 2400, 787, 2404, 783, 2394, 774, 2400, 769, 2392, 759, 2401, 758, 2403, 750, 2414, 745, 2407, 742, 2412, 736, 2413, 728, 2420, 725, 2415, 715, 2404, 696, 2394, 692, 2390, 683, 2393, 680, 2400, 674, 2403, 669, 2395, 660, 2384, 657, 2381, 652, 2383, 643, 2374, 639, 2380, 626, 2387, 622, 2399, 620, 2407, 607, 2423, 609, 2420, 604, 2410, 602, 2411, 596, 2418, 594, 2425, 596, 2437, 592, 2440, 597, 2448, 601, 2452, 595, 2465, 595, 2467, 590, 2473, 591, 2476, 583, 2466, 579, 2467, 576, 2477, 578, 2483, 570, 2490, 564, 2494, 559, 2503, 559, 2501, 563, 2516, 558, 2515, 552, 2523, 554, 2525, 547, 2535, 548, 2546, 545, 2550, 539, 2551, 531, 2569, 535, 2568, 531, 2602, 504, 2624, 498, 2628, 489, 2643, 478, 2644, 472, 2657, 472, 2671, 469, 2688, 472, 2700, 472, 2702, 469, 2688, 466, 2692, 463, 2701, 466, 2712, 467, 2710, 459, 2704, 455, 2694, 452, 2697, 447, 2702, 440, 2694, 434, 2703, 427, 2686, 418, 2666, 412, 2654, 413, 2647, 408, 2639, 404, 2614, 399, 2589, 375, 2573, 367, 2569, 357, 2580, 346, 2591, 335, 2595, 326, 2584, 316, 2561, 303, 2564, 293, 2580, 287, 2578, 281, 2564, 278, 2551, 273, 2562, 263, 2558, 251, 2564, 244, 2573, 240, 2555, 234, 2550, 228, 2529, 227, 2528, 221, 2525, 214, 2497, 205, 2458, 202, 2445, 198, 2438, 194, 2423, 192, 2418, 188, 2399, 185, 2398, 180, 2377, 177, 2374, 171, 2362, 168, 2360, 163, 2345, 156], + "center":[2728, 451], + "bbox":[2344.779750271047, 79.0935111001877, 836.987283810839, 771.9731117971821] + }, + "CZE":{ + "shape":[2084, 1694, 2076, 1693, 2055, 1693, 2033, 1683, 2016, 1690, 1996, 1686, 1978, 1677, 1953, 1672, 1926, 1669, 1920, 1673, 1917, 1686, 1904, 1686, 1899, 1700, 1881, 1694, 1870, 1697, 1861, 1706, 1832, 1692, 1829, 1684, 1787, 1667, 1775, 1657, 1761, 1637, 1744, 1632, 1735, 1618, 1738, 1601, 1722, 1595, 1707, 1592, 1702, 1582, 1691, 1574, 1708, 1571, 1718, 1581, 1731, 1573, 1741, 1570, 1757, 1564, 1771, 1563, 1782, 1560, 1795, 1553, 1823, 1542, 1840, 1535, 1879, 1532, 1874, 1526, 1881, 1517, 1897, 1517, 1900, 1523, 1903, 1530, 1918, 1533, 1933, 1527, 1941, 1522, 1951, 1531, 1982, 1537, 1993, 1541, 2019, 1546, 2032, 1550, 2023, 1556, 2023, 1562, 2036, 1574, 2046, 1584, 2068, 1586, 2073, 1582, 2070, 1578, 2070, 1569, 2065, 1560, 2083, 1564, 2092, 1566, 2094, 1572, 2107, 1574, 2129, 1573, 2123, 1585, 2142, 1594, 2151, 1588, 2162, 1595, 2175, 1602, 2181, 1594, 2197, 1597, 2203, 1601, 2204, 1612, 2219, 1619, 2217, 1626, 2196, 1626, 2190, 1633, 2175, 1654, 2167, 1664, 2147, 1665, 2135, 1672, 2120, 1682, 2101, 1682, 2089, 1688, 2084, 1694], + "center":[1958, 1611], + "bbox":[1690.7361754826754, 1516.6108666093774, 527.879027311805, 189.66143149157733] + }, + "FRA":{ + "shape":[[1500, 2120, 1504, 2127, 1504, 2136, 1502, 2144, 1502, 2151, 1509, 2175, 1507, 2186, 1505, 2193, 1499, 2198, 1495, 2207, 1497, 2212, 1497, 2219, 1493, 2222, 1486, 2225, 1485, 2234, 1479, 2243, 1473, 2238, 1466, 2236, 1455, 2230, 1452, 2225, 1456, 2221, 1446, 2216, 1452, 2211, 1453, 2205, 1442, 2205, 1440, 2201, 1445, 2197, 1444, 2190, 1436, 2187, 1433, 2180, 1442, 2176, 1438, 2170, 1443, 2163, 1449, 2154, 1453, 2150, 1461, 2147, 1469, 2146, 1474, 2142, 1481, 2142, 1488, 2145, 1495, 2139, 1494, 2134, 1492, 2130, 1500, 2120], [900, 2153, 893, 2145, 885, 2139, 873, 2132, 862, 2126, 841, 2125, 837, 2138, 827, 2142, 809, 2137, 795, 2138, 775, 2140, 759, 2145, 745, 2138, 730, 2129, 715, 2121, 703, 2115, 686, 2111, 686, 2105, 681, 2102, 665, 2103, 656, 2093, 672, 2087, 682, 2082, 691, 2070, 691, 2053, 691, 2037, 695, 2016, 694, 2002, 707, 2001, 709, 1995, 703, 1993, 697, 1995, 698, 1987, 701, 1953, 703, 1932, 719, 1939, 727, 1948, 729, 1962, 740, 1969, 736, 1960, 735, 1954, 734, 1940, 723, 1932, 713, 1927, 691, 1920, 697, 1918, 703, 1909, 706, 1900, 706, 1895, 702, 1890, 701, 1883, 702, 1878, 701, 1873, 693, 1873, 681, 1873, 666, 1868, 659, 1862, 651, 1853, 644, 1846, 638, 1839, 634, 1834, 634, 1828, 639, 1819, 632, 1815, 624, 1811, 630, 1805, 636, 1799, 629, 1801, 617, 1803, 610, 1804, 599, 1804, 605, 1797, 604, 1789, 611, 1787, 597, 1783, 589, 1783, 583, 1786, 574, 1784, 587, 1776, 578, 1777, 564, 1777, 553, 1778, 545, 1773, 540, 1775, 536, 1767, 529, 1766, 524, 1761, 511, 1764, 504, 1761, 496, 1756, 488, 1757, 482, 1758, 486, 1754, 479, 1754, 476, 1757, 477, 1765, 456, 1762, 463, 1758, 458, 1752, 453, 1749, 443, 1747, 434, 1744, 451, 1741, 464, 1740, 461, 1734, 452, 1731, 446, 1734, 444, 1729, 442, 1726, 452, 1728, 461, 1730, 475, 1728, 470, 1723, 458, 1723, 457, 1718, 449, 1718, 438, 1721, 428, 1725, 426, 1717, 431, 1713, 430, 1707, 438, 1704, 443, 1700, 473, 1699, 488, 1696, 493, 1696, 500, 1698, 503, 1693, 512, 1694, 521, 1694, 525, 1690, 531, 1685, 545, 1684, 562, 1683, 564, 1688, 569, 1692, 573, 1699, 582, 1704, 592, 1707, 599, 1701, 610, 1698, 617, 1696, 623, 1700, 631, 1702, 639, 1700, 643, 1693, 654, 1694, 651, 1700, 664, 1700, 682, 1701, 689, 1698, 684, 1694, 678, 1689, 675, 1684, 676, 1676, 673, 1670, 672, 1665, 672, 1657, 665, 1651, 656, 1644, 654, 1638, 653, 1628, 648, 1620, 646, 1616, 651, 1616, 661, 1620, 673, 1620, 682, 1617, 691, 1616, 696, 1620, 697, 1624, 690, 1630, 694, 1636, 696, 1643, 709, 1643, 719, 1640, 731, 1646, 752, 1648, 772, 1651, 780, 1652, 792, 1648, 804, 1644, 815, 1642, 817, 1637, 801, 1636, 801, 1632, 809, 1621, 821, 1616, 835, 1610, 846, 1606, 868, 1605, 888, 1598, 901, 1589, 905, 1582, 915, 1582, 908, 1577, 907, 1572, 914, 1572, 914, 1568, 908, 1565, 911, 1555, 908, 1549, 910, 1544, 913, 1538, 909, 1533, 923, 1526, 937, 1522, 968, 1521, 985, 1518, 985, 1518, 986, 1519, 988, 1519, 989, 1518, 989, 1519, 991, 1519, 991, 1519, 992, 1519, 992, 1519, 993, 1520, 992, 1520, 992, 1521, 993, 1521, 990, 1528, 994, 1534, 1011, 1541, 1038, 1543, 1039, 1555, 1053, 1556, 1067, 1562, 1073, 1570, 1102, 1566, 1105, 1573, 1105, 1573, 1105, 1573, 1106, 1574, 1106, 1574, 1106, 1575, 1107, 1575, 1107, 1575, 1107, 1576, 1107, 1576, 1106, 1576, 1105, 1577, 1105, 1577, 1104, 1577, 1104, 1577, 1103, 1578, 1102, 1577, 1102, 1578, 1101, 1578, 1101, 1578, 1101, 1579, 1100, 1579, 1100, 1579, 1100, 1580, 1100, 1580, 1100, 1580, 1100, 1580, 1100, 1581, 1101, 1581, 1101, 1581, 1102, 1581, 1102, 1581, 1101, 1581, 1101, 1582, 1101, 1582, 1100, 1582, 1100, 1583, 1100, 1583, 1101, 1583, 1102, 1583, 1102, 1583, 1103, 1583, 1104, 1583, 1104, 1584, 1104, 1584, 1104, 1584, 1105, 1584, 1106, 1584, 1106, 1584, 1107, 1584, 1108, 1584, 1109, 1584, 1110, 1584, 1112, 1584, 1112, 1583, 1117, 1597, 1139, 1595, 1153, 1585, 1168, 1584, 1157, 1603, 1169, 1611, 1190, 1618, 1205, 1629, 1217, 1629, 1236, 1623, 1238, 1633, 1251, 1635, 1271, 1635, 1282, 1638, 1288, 1648, 1300, 1660, 1319, 1661, 1333, 1665, 1355, 1662, 1373, 1665, 1385, 1670, 1404, 1670, 1416, 1675, 1410, 1681, 1404, 1688, 1388, 1701, 1382, 1712, 1374, 1722, 1374, 1731, 1363, 1739, 1367, 1750, 1361, 1764, 1357, 1766, 1355, 1767, 1358, 1768, 1374, 1776, 1368, 1781, 1342, 1790, 1342, 1785, 1324, 1781, 1314, 1786, 1314, 1791, 1307, 1795, 1322, 1796, 1319, 1804, 1312, 1814, 1298, 1820, 1276, 1831, 1274, 1840, 1259, 1851, 1253, 1857, 1250, 1861, 1249, 1862, 1249, 1865, 1241, 1866, 1238, 1869, 1240, 1870, 1239, 1873, 1250, 1873, 1241, 1887, 1257, 1885, 1267, 1878, 1258, 1874, 1263, 1868, 1283, 1863, 1300, 1865, 1301, 1873, 1305, 1889, 1324, 1899, 1346, 1908, 1332, 1908, 1306, 1908, 1311, 1919, 1326, 1940, 1317, 1951, 1302, 1956, 1297, 1966, 1300, 1977, 1317, 1978, 1319, 1989, 1312, 2002, 1304, 2014, 1305, 2025, 1321, 2033, 1346, 2037, 1369, 2030, 1371, 2041, 1362, 2055, 1353, 2065, 1336, 2064, 1326, 2067, 1318, 2074, 1309, 2079, 1300, 2084, 1282, 2097, 1284, 2104, 1252, 2111, 1240, 2113, 1230, 2113, 1221, 2105, 1209, 2106, 1201, 2105, 1198, 2100, 1194, 2095, 1185, 2097, 1170, 2097, 1162, 2089, 1154, 2093, 1146, 2095, 1129, 2098, 1135, 2088, 1135, 2082, 1126, 2079, 1117, 2081, 1111, 2080, 1098, 2080, 1093, 2078, 1079, 2084, 1071, 2092, 1061, 2097, 1053, 2100, 1039, 2101, 1026, 2108, 1016, 2116, 1013, 2129, 1017, 2139, 1016, 2151, 1023, 2165, 1012, 2165, 1004, 2170, 996, 2174, 985, 2172, 973, 2165, 963, 2165, 954, 2169, 944, 2166, 934, 2165, 922, 2160, 918, 2162, 918, 2161, 918, 2153, 906, 2149, 901, 2150, 900, 2153]], + "center":[936, 1834], + "bbox":[425.84558212474565, 1517.5446929831287, 1083.1002102674815, 725.734461487391] + }, + "DEU":{ + "shape":[1234, 1538, 1245, 1528, 1257, 1519, 1262, 1503, 1265, 1494, 1260, 1480, 1253, 1470, 1253, 1459, 1264, 1454, 1282, 1451, 1295, 1453, 1306, 1447, 1296, 1442, 1306, 1436, 1316, 1436, 1327, 1431, 1330, 1424, 1329, 1416, 1317, 1416, 1301, 1411, 1297, 1404, 1303, 1399, 1312, 1395, 1329, 1394, 1334, 1380, 1340, 1369, 1340, 1352, 1345, 1352, 1348, 1347, 1345, 1343, 1339, 1339, 1330, 1337, 1331, 1331, 1330, 1325, 1338, 1322, 1352, 1318, 1375, 1320, 1395, 1317, 1395, 1323, 1405, 1325, 1405, 1332, 1402, 1335, 1409, 1340, 1415, 1336, 1414, 1331, 1419, 1326, 1432, 1332, 1441, 1326, 1430, 1326, 1431, 1318, 1434, 1310, 1444, 1305, 1454, 1306, 1462, 1311, 1478, 1308, 1491, 1309, 1499, 1314, 1506, 1319, 1513, 1327, 1531, 1331, 1544, 1330, 1522, 1326, 1516, 1321, 1503, 1312, 1496, 1306, 1477, 1305, 1463, 1300, 1455, 1292, 1464, 1293, 1472, 1292, 1468, 1285, 1457, 1284, 1458, 1279, 1470, 1272, 1449, 1275, 1440, 1271, 1444, 1264, 1454, 1265, 1462, 1266, 1474, 1261, 1468, 1256, 1450, 1240, 1442, 1228, 1459, 1230, 1475, 1230, 1494, 1235, 1508, 1231, 1514, 1234, 1523, 1236, 1531, 1238, 1539, 1235, 1542, 1245, 1546, 1248, 1545, 1254, 1539, 1258, 1537, 1262, 1546, 1261, 1554, 1264, 1554, 1267, 1560, 1268, 1566, 1264, 1574, 1263, 1582, 1268, 1591, 1273, 1605, 1271, 1614, 1267, 1625, 1267, 1628, 1262, 1624, 1259, 1629, 1256, 1636, 1256, 1643, 1256, 1642, 1262, 1637, 1269, 1631, 1273, 1632, 1279, 1619, 1287, 1608, 1290, 1606, 1296, 1609, 1301, 1616, 1299, 1622, 1295, 1635, 1294, 1641, 1296, 1646, 1302, 1657, 1299, 1663, 1292, 1669, 1283, 1684, 1285, 1697, 1281, 1703, 1283, 1714, 1278, 1723, 1270, 1726, 1275, 1732, 1277, 1732, 1274, 1736, 1269, 1754, 1268, 1769, 1269, 1778, 1271, 1784, 1276, 1790, 1280, 1803, 1284, 1813, 1286, 1823, 1283, 1829, 1288, 1827, 1294, 1831, 1298, 1834, 1302, 1827, 1308, 1836, 1312, 1857, 1315, 1867, 1317, 1874, 1332, 1877, 1343, 1874, 1352, 1885, 1359, 1877, 1368, 1867, 1376, 1869, 1384, 1891, 1392, 1899, 1399, 1899, 1419, 1906, 1435, 1907, 1447, 1898, 1457, 1903, 1468, 1913, 1477, 1923, 1487, 1927, 1498, 1925, 1510, 1941, 1522, 1933, 1527, 1918, 1533, 1903, 1530, 1900, 1523, 1897, 1517, 1881, 1517, 1874, 1526, 1879, 1532, 1840, 1535, 1823, 1542, 1795, 1553, 1782, 1560, 1771, 1563, 1757, 1564, 1741, 1570, 1731, 1573, 1718, 1581, 1708, 1571, 1691, 1574, 1702, 1582, 1707, 1592, 1722, 1595, 1738, 1601, 1735, 1618, 1744, 1632, 1761, 1637, 1775, 1657, 1787, 1667, 1829, 1684, 1832, 1692, 1831, 1701, 1821, 1710, 1810, 1705, 1810, 1713, 1802, 1721, 1791, 1727, 1770, 1732, 1770, 1735, 1770, 1736, 1771, 1736, 1773, 1736, 1774, 1737, 1774, 1737, 1775, 1738, 1775, 1738, 1778, 1741, 1779, 1743, 1780, 1744, 1779, 1745, 1778, 1746, 1776, 1748, 1775, 1749, 1774, 1750, 1776, 1750, 1775, 1751, 1774, 1752, 1774, 1752, 1773, 1753, 1772, 1753, 1763, 1764, 1762, 1765, 1763, 1765, 1763, 1767, 1764, 1767, 1765, 1767, 1766, 1767, 1767, 1767, 1768, 1768, 1768, 1768, 1769, 1769, 1770, 1769, 1770, 1770, 1772, 1771, 1773, 1772, 1776, 1773, 1777, 1772, 1778, 1773, 1778, 1773, 1779, 1774, 1780, 1773, 1780, 1773, 1782, 1772, 1779, 1781, 1777, 1785, 1765, 1782, 1762, 1774, 1755, 1771, 1747, 1775, 1734, 1772, 1716, 1763, 1716, 1776, 1711, 1782, 1699, 1785, 1696, 1775, 1683, 1773, 1674, 1773, 1666, 1778, 1657, 1783, 1647, 1794, 1633, 1788, 1628, 1790, 1615, 1793, 1612, 1784, 1598, 1785, 1581, 1777, 1581, 1778, 1581, 1780, 1580, 1779, 1579, 1780, 1577, 1781, 1577, 1782, 1575, 1783, 1574, 1784, 1573, 1794, 1566, 1800, 1553, 1794, 1545, 1790, 1544, 1784, 1542, 1777, 1528, 1774, 1523, 1780, 1513, 1780, 1505, 1778, 1491, 1773, 1468, 1770, 1451, 1767, 1442, 1759, 1441, 1760, 1441, 1762, 1435, 1760, 1431, 1762, 1433, 1764, 1430, 1765, 1428, 1765, 1420, 1779, 1406, 1775, 1400, 1778, 1374, 1776, 1358, 1768, 1355, 1767, 1357, 1766, 1361, 1764, 1367, 1750, 1363, 1739, 1374, 1731, 1374, 1722, 1382, 1712, 1388, 1701, 1404, 1688, 1410, 1681, 1416, 1675, 1404, 1670, 1385, 1670, 1373, 1665, 1355, 1662, 1333, 1665, 1319, 1661, 1300, 1660, 1288, 1648, 1282, 1638, 1287, 1623, 1291, 1615, 1300, 1610, 1286, 1607, 1268, 1603, 1261, 1593, 1259, 1587, 1260, 1578, 1277, 1570, 1261, 1559, 1264, 1539, 1234, 1538], + "center":[1573, 1497], + "bbox":[1234.4920268705089, 1228.0542005113434, 706.7486130189905, 572.4050630740496] + }, + "CYP":{ + "shape":[3218, 2722, 3227, 2724, 3232, 2719, 3235, 2715, 3243, 2713, 3259, 2716, 3265, 2712, 3265, 2707, 3263, 2701, 3276, 2700, 3288, 2703, 3305, 2703, 3323, 2701, 3338, 2699, 3345, 2695, 3356, 2691, 3359, 2686, 3369, 2685, 3374, 2681, 3382, 2678, 3392, 2678, 3375, 2686, 3368, 2689, 3360, 2692, 3354, 2699, 3344, 2702, 3340, 2709, 3340, 2715, 3349, 2723, 3350, 2727, 3339, 2727, 3329, 2727, 3321, 2730, 3318, 2737, 3312, 2738, 3303, 2744, 3295, 2746, 3283, 2748, 3276, 2749, 3273, 2757, 3265, 2758, 3264, 2751, 3259, 2749, 3250, 2750, 3241, 2751, 3231, 2746, 3225, 2739, 3223, 2735, 3218, 2722], + "center":[3304, 2716], + "bbox":[3217.6002110680115, 2677.887128745054, 174.45977411301828, 80.52863964437847] + }, + "GIB":{ + "shape":[380, 2646, 380, 2645, 382, 2635, 389, 2636, 389, 2637, 387, 2644, 380, 2646], + "center":[384, 2640], + "bbox":[379.7266817378443, 2635.3616253383493, 9.350026496537396, 10.187196804561609] + }, + "HRV":{ + "shape":[2115, 2125, 2106, 2122, 2099, 2114, 2084, 2107, 2072, 2099, 2064, 2092, 2047, 2089, 2039, 2085, 2030, 2081, 2013, 2081, 1994, 2083, 1990, 2078, 1988, 2071, 1975, 2062, 1964, 2059, 1958, 2053, 1941, 2042, 1927, 2031, 1933, 2027, 1937, 2030, 1944, 2026, 1951, 2031, 1962, 2033, 1972, 2031, 1959, 2024, 1945, 2017, 1934, 2009, 1927, 2006, 1916, 1999, 1913, 1992, 1912, 1984, 1917, 1973, 1909, 1964, 1903, 1959, 1889, 1954, 1880, 1944, 1873, 1946, 1863, 1957, 1857, 1963, 1854, 1968, 1858, 1974, 1848, 1977, 1842, 1984, 1834, 1981, 1825, 1974, 1815, 1964, 1814, 1953, 1815, 1949, 1811, 1942, 1811, 1936, 1819, 1931, 1829, 1932, 1837, 1932, 1856, 1931, 1867, 1930, 1873, 1923, 1876, 1914, 1885, 1914, 1895, 1921, 1914, 1924, 1938, 1928, 1942, 1920, 1944, 1914, 1956, 1908, 1966, 1899, 1965, 1892, 1950, 1888, 1958, 1879, 1967, 1872, 1977, 1865, 1997, 1863, 2016, 1861, 2028, 1855, 2034, 1854, 2052, 1860, 2069, 1869, 2081, 1879, 2093, 1886, 2105, 1900, 2119, 1898, 2122, 1907, 2141, 1912, 2165, 1908, 2184, 1915, 2201, 1899, 2218, 1907, 2221, 1915, 2228, 1924, 2237, 1936, 2254, 1947, 2237, 1961, 2228, 1974, 2212, 1975, 2209, 1967, 2197, 1960, 2180, 1957, 2159, 1952, 2138, 1948, 2122, 1949, 2114, 1937, 2099, 1939, 2086, 1943, 2072, 1935, 2060, 1939, 2041, 1942, 2020, 1949, 2005, 1959, 1991, 1950, 1982, 1954, 1981, 1966, 1981, 1980, 1982, 1988, 1993, 2000, 2003, 2015, 2004, 2026, 2021, 2034, 2035, 2037, 2041, 2050, 2051, 2063, 2080, 2081, 2104, 2096, 2122, 2109, 2121, 2116, 2115, 2125], + "center":[2022, 1972], + "bbox":[1810.8584058827958, 1854.3190306458964, 443.0588871265443, 271.112098778945] + }, + "NLD":{ + "shape":[1029, 1499, 1048, 1497, 1058, 1495, 1064, 1490, 1072, 1492, 1076, 1496, 1082, 1499, 1093, 1495, 1098, 1488, 1104, 1483, 1111, 1481, 1105, 1473, 1105, 1469, 1098, 1464, 1100, 1459, 1110, 1465, 1121, 1469, 1136, 1471, 1150, 1470, 1148, 1464, 1134, 1467, 1114, 1464, 1103, 1460, 1101, 1453, 1105, 1444, 1110, 1441, 1111, 1435, 1120, 1435, 1127, 1427, 1133, 1415, 1139, 1405, 1144, 1391, 1150, 1370, 1159, 1356, 1164, 1362, 1156, 1371, 1158, 1379, 1172, 1377, 1181, 1381, 1179, 1393, 1178, 1403, 1170, 1417, 1178, 1423, 1190, 1425, 1203, 1427, 1213, 1423, 1210, 1418, 1203, 1411, 1202, 1407, 1210, 1403, 1218, 1402, 1226, 1404, 1232, 1402, 1222, 1400, 1217, 1394, 1217, 1386, 1223, 1382, 1233, 1378, 1231, 1376, 1225, 1380, 1221, 1379, 1222, 1375, 1219, 1376, 1217, 1381, 1212, 1381, 1211, 1379, 1215, 1376, 1214, 1371, 1210, 1371, 1210, 1375, 1202, 1382, 1201, 1377, 1203, 1369, 1202, 1361, 1207, 1351, 1222, 1345, 1234, 1342, 1245, 1340, 1253, 1343, 1255, 1347, 1261, 1346, 1266, 1340, 1277, 1338, 1291, 1336, 1300, 1336, 1309, 1338, 1316, 1347, 1322, 1347, 1324, 1351, 1331, 1353, 1340, 1352, 1340, 1369, 1334, 1380, 1329, 1394, 1312, 1395, 1303, 1399, 1297, 1404, 1301, 1411, 1317, 1416, 1329, 1416, 1330, 1424, 1327, 1431, 1316, 1436, 1306, 1436, 1296, 1442, 1306, 1447, 1295, 1453, 1282, 1451, 1264, 1454, 1253, 1459, 1253, 1470, 1260, 1480, 1265, 1494, 1262, 1503, 1257, 1519, 1245, 1528, 1234, 1538, 1227, 1536, 1214, 1537, 1212, 1532, 1229, 1515, 1224, 1508, 1186, 1501, 1173, 1487, 1164, 1492, 1151, 1485, 1133, 1496, 1112, 1490, 1111, 1500, 1099, 1505, 1062, 1504, 1029, 1499], + "center":[1197, 1435], + "bbox":[1029.402855613661, 1335.7947421285858, 311.05019088990343, 202.28578563336646] + }, + "NOR":{ + "shape":[1154, 704, 1161, 700, 1178, 700, 1176, 698, 1168, 694, 1167, 691, 1184, 694, 1191, 690, 1182, 685, 1171, 683, 1172, 679, 1181, 679, 1186, 683, 1197, 687, 1204, 686, 1193, 683, 1197, 679, 1208, 680, 1216, 679, 1221, 677, 1224, 673, 1221, 666, 1228, 661, 1246, 661, 1260, 661, 1271, 662, 1284, 658, 1262, 658, 1259, 652, 1260, 646, 1285, 643, 1307, 639, 1319, 640, 1323, 643, 1337, 642, 1352, 641, 1347, 635, 1350, 630, 1327, 633, 1312, 634, 1309, 629, 1320, 626, 1309, 623, 1306, 618, 1320, 613, 1336, 614, 1346, 618, 1360, 617, 1375, 613, 1384, 610, 1387, 603, 1391, 599, 1410, 594, 1428, 591, 1441, 589, 1442, 585, 1468, 582, 1485, 574, 1508, 571, 1525, 572, 1530, 575, 1536, 582, 1538, 587, 1554, 587, 1546, 583, 1563, 578, 1581, 582, 1603, 579, 1609, 572, 1595, 570, 1605, 565, 1624, 562, 1643, 557, 1640, 552, 1625, 553, 1621, 548, 1639, 544, 1645, 539, 1632, 536, 1606, 545, 1595, 549, 1612, 550, 1607, 557, 1577, 567, 1563, 571, 1544, 574, 1533, 571, 1528, 566, 1539, 563, 1538, 558, 1519, 561, 1508, 560, 1517, 558, 1502, 556, 1525, 551, 1543, 548, 1558, 545, 1545, 543, 1535, 541, 1542, 536, 1545, 529, 1565, 523, 1580, 515, 1590, 511, 1586, 507, 1601, 504, 1611, 496, 1624, 497, 1634, 502, 1653, 501, 1647, 496, 1651, 491, 1643, 486, 1661, 483, 1673, 476, 1652, 479, 1628, 474, 1609, 473, 1607, 466, 1636, 471, 1660, 471, 1674, 466, 1682, 460, 1681, 455, 1693, 454, 1706, 449, 1704, 435, 1717, 422, 1733, 428, 1732, 421, 1722, 414, 1735, 408, 1743, 402, 1735, 398, 1746, 395, 1728, 395, 1733, 388, 1742, 383, 1765, 378, 1780, 374, 1773, 370, 1775, 366, 1766, 361, 1772, 355, 1766, 349, 1776, 346, 1789, 344, 1794, 337, 1789, 332, 1806, 330, 1808, 325, 1819, 327, 1815, 318, 1833, 317, 1848, 309, 1856, 303, 1871, 299, 1897, 295, 1913, 296, 1931, 298, 1949, 303, 1960, 301, 1958, 292, 1938, 292, 1939, 286, 1917, 286, 1900, 285, 1884, 289, 1869, 289, 1882, 285, 1891, 279, 1906, 272, 1920, 271, 1932, 274, 1945, 274, 1953, 277, 1962, 280, 1963, 274, 1945, 271, 1937, 267, 1942, 261, 1954, 256, 1974, 257, 1961, 252, 1950, 248, 1936, 255, 1916, 261, 1899, 262, 1906, 256, 1920, 253, 1904, 252, 1901, 247, 1919, 245, 1939, 244, 1962, 239, 1981, 241, 1993, 237, 1986, 232, 1969, 233, 1953, 233, 1941, 231, 1951, 226, 1971, 227, 1988, 223, 1994, 215, 2005, 224, 2007, 234, 2018, 239, 2030, 236, 2017, 232, 2033, 228, 2017, 224, 2036, 222, 2024, 219, 2004, 215, 2012, 210, 2029, 212, 2020, 206, 2054, 206, 2064, 210, 2081, 206, 2093, 205, 2110, 204, 2127, 203, 2109, 201, 2112, 195, 2092, 200, 2078, 200, 2076, 195, 2057, 200, 2040, 200, 2032, 196, 2042, 195, 2041, 192, 2042, 188, 2063, 183, 2078, 186, 2090, 188, 2088, 184, 2085, 181, 2100, 184, 2114, 184, 2105, 182, 2104, 179, 2093, 176, 2108, 175, 2126, 177, 2117, 174, 2108, 171, 2121, 170, 2129, 169, 2119, 167, 2106, 167, 2106, 161, 2114, 156, 2126, 152, 2143, 150, 2152, 147, 2145, 142, 2148, 132, 2157, 125, 2175, 130, 2186, 135, 2198, 138, 2210, 135, 2208, 132, 2188, 130, 2178, 126, 2183, 120, 2201, 119, 2218, 126, 2226, 131, 2245, 135, 2245, 142, 2260, 144, 2255, 139, 2249, 133, 2229, 130, 2216, 123, 2228, 119, 2217, 114, 2227, 107, 2243, 102, 2264, 101, 2274, 105, 2274, 112, 2276, 117, 2262, 127, 2273, 125, 2276, 119, 2278, 115, 2300, 117, 2293, 112, 2295, 105, 2305, 99, 2311, 92, 2326, 92, 2318, 102, 2314, 109, 2322, 113, 2310, 117, 2317, 122, 2305, 131, 2293, 138, 2300, 137, 2312, 131, 2322, 123, 2329, 119, 2347, 122, 2352, 119, 2335, 114, 2334, 104, 2348, 98, 2354, 92, 2366, 96, 2385, 99, 2392, 92, 2385, 87, 2394, 84, 2412, 89, 2435, 94, 2447, 102, 2457, 105, 2455, 99, 2449, 94, 2438, 89, 2444, 86, 2453, 89, 2457, 82, 2439, 82, 2431, 79, 2457, 74, 2477, 73, 2469, 69, 2476, 63, 2505, 69, 2518, 74, 2508, 78, 2517, 77, 2523, 84, 2525, 90, 2541, 88, 2557, 87, 2555, 82, 2535, 82, 2537, 77, 2547, 75, 2530, 68, 2549, 65, 2545, 61, 2562, 56, 2580, 49, 2598, 44, 2576, 44, 2569, 38, 2569, 34, 2569, 30, 2593, 34, 2605, 38, 2598, 43, 2610, 47, 2623, 47, 2611, 43, 2621, 34, 2639, 37, 2645, 32, 2632, 29, 2615, 27, 2611, 23, 2627, 20, 2641, 25, 2645, 19, 2634, 15, 2636, 10, 2651, 9, 2659, 13, 2669, 16, 2677, 13, 2686, 18, 2697, 21, 2704, 15, 2698, 12, 2716, 16, 2730, 17, 2724, 25, 2699, 37, 2679, 43, 2687, 47, 2675, 55, 2681, 61, 2665, 68, 2665, 75, 2676, 77, 2691, 75, 2705, 68, 2713, 59, 2699, 57, 2722, 46, 2744, 38, 2753, 27, 2786, 12, 2799, 16, 2797, 25, 2781, 32, 2769, 36, 2778, 36, 2792, 39, 2786, 46, 2784, 53, 2789, 57, 2805, 51, 2814, 47, 2828, 47, 2817, 39, 2831, 40, 2829, 34, 2843, 29, 2843, 22, 2869, 23, 2858, 17, 2850, 13, 2832, 7, 2843, 6, 2862, 8, 2859, 3, 2870, 0, 2879, 4, 2898, 2, 2920, 3, 2911, 8, 2924, 9, 2938, 11, 2922, 20, 2906, 24, 2884, 23, 2897, 27, 2905, 30, 2875, 37, 2893, 36, 2908, 32, 2917, 36, 2902, 43, 2885, 47, 2888, 51, 2905, 48, 2910, 53, 2923, 45, 2931, 51, 2946, 50, 2934, 49, 2931, 42, 2938, 31, 2953, 22, 2972, 18, 2995, 24, 2992, 29, 3000, 32, 2998, 37, 3014, 30, 3029, 26, 3033, 32, 3029, 37, 3046, 31, 3066, 36, 3069, 39, 3045, 43, 3060, 45, 3082, 42, 3096, 46, 3105, 51, 3121, 49, 3128, 55, 3126, 61, 3092, 65, 3070, 69, 3076, 73, 3052, 77, 3012, 78, 2974, 73, 2953, 68, 2941, 71, 2941, 76, 2970, 81, 2998, 82, 3023, 84, 3022, 87, 3003, 91, 3008, 94, 3021, 93, 3030, 97, 3018, 103, 3015, 109, 3028, 105, 3044, 106, 3059, 103, 3060, 97, 3070, 95, 3099, 98, 3129, 102, 3123, 118, 3120, 120, 3114, 121, 3107, 120, 3104, 122, 3108, 125, 3103, 129, 3099, 130, 3079, 130, 3069, 126, 3049, 121, 3047, 123, 3051, 123, 3055, 129, 3049, 137, 3042, 139, 3030, 139, 3010, 147, 3007, 146, 2995, 147, 2991, 150, 2995, 152, 2993, 156, 2988, 163, 2977, 168, 2967, 165, 2971, 157, 2966, 144, 3003, 124, 2977, 106, 2942, 101, 2916, 93, 2903, 84, 2895, 79, 2887, 81, 2870, 79, 2859, 88, 2844, 93, 2817, 92, 2790, 89, 2783, 93, 2751, 112, 2734, 136, 2735, 152, 2736, 163, 2720, 170, 2704, 169, 2696, 175, 2689, 186, 2674, 191, 2653, 185, 2627, 184, 2614, 176, 2585, 172, 2577, 179, 2558, 182, 2541, 186, 2520, 184, 2504, 184, 2495, 177, 2474, 183, 2463, 161, 2417, 139, 2391, 134, 2373, 143, 2375, 149, 2386, 152, 2380, 157, 2354, 151, 2345, 156, 2310, 155, 2327, 165, 2323, 179, 2302, 192, 2303, 198, 2319, 199, 2298, 210, 2219, 197, 2194, 199, 2177, 190, 2153, 198, 2155, 224, 2138, 241, 2104, 230, 2076, 233, 2045, 243, 2040, 259, 2022, 272, 2001, 278, 2019, 290, 2028, 299, 2039, 305, 2023, 310, 1969, 335, 1944, 350, 1953, 364, 1913, 377, 1876, 378, 1889, 398, 1883, 411, 1878, 423, 1881, 444, 1851, 468, 1817, 494, 1840, 498, 1858, 513, 1858, 525, 1840, 538, 1796, 534, 1755, 536, 1701, 569, 1691, 588, 1698, 603, 1708, 614, 1690, 623, 1700, 639, 1699, 656, 1717, 665, 1710, 689, 1710, 711, 1728, 720, 1753, 729, 1764, 738, 1756, 753, 1733, 758, 1711, 758, 1716, 775, 1734, 785, 1739, 796, 1748, 808, 1732, 816, 1740, 829, 1730, 844, 1710, 849, 1685, 847, 1691, 859, 1683, 870, 1685, 882, 1679, 906, 1666, 923, 1648, 908, 1639, 908, 1630, 908, 1629, 905, 1628, 901, 1624, 903, 1617, 903, 1608, 902, 1597, 900, 1600, 894, 1598, 888, 1593, 882, 1595, 876, 1594, 869, 1592, 863, 1590, 859, 1590, 855, 1594, 854, 1596, 858, 1598, 855, 1599, 850, 1594, 846, 1582, 846, 1581, 854, 1583, 862, 1586, 866, 1587, 871, 1580, 873, 1577, 870, 1576, 865, 1570, 862, 1570, 865, 1572, 870, 1569, 873, 1574, 881, 1577, 890, 1570, 899, 1561, 907, 1552, 910, 1545, 912, 1543, 916, 1534, 915, 1533, 912, 1524, 908, 1523, 914, 1510, 918, 1501, 925, 1484, 939, 1429, 973, 1402, 984, 1375, 990, 1340, 992, 1327, 991, 1328, 987, 1314, 988, 1317, 984, 1308, 981, 1306, 986, 1292, 988, 1284, 984, 1294, 977, 1295, 971, 1284, 973, 1258, 971, 1246, 965, 1244, 961, 1234, 955, 1217, 949, 1207, 938, 1206, 931, 1212, 924, 1213, 919, 1207, 914, 1221, 915, 1235, 919, 1237, 911, 1232, 908, 1248, 904, 1245, 900, 1263, 892, 1246, 890, 1248, 886, 1238, 886, 1237, 881, 1230, 875, 1224, 883, 1224, 890, 1215, 888, 1208, 896, 1196, 894, 1192, 902, 1181, 902, 1179, 892, 1184, 884, 1181, 875, 1188, 869, 1207, 864, 1222, 865, 1236, 860, 1230, 856, 1219, 856, 1220, 850, 1233, 843, 1243, 835, 1251, 833, 1252, 824, 1267, 818, 1282, 812, 1279, 808, 1259, 809, 1252, 818, 1241, 821, 1231, 830, 1228, 838, 1217, 840, 1209, 848, 1205, 855, 1196, 858, 1188, 851, 1188, 845, 1200, 840, 1209, 838, 1219, 836, 1219, 828, 1210, 826, 1198, 829, 1182, 823, 1178, 818, 1185, 812, 1186, 807, 1185, 804, 1197, 800, 1207, 793, 1197, 795, 1186, 798, 1180, 791, 1173, 787, 1181, 784, 1181, 780, 1168, 780, 1168, 772, 1177, 768, 1165, 764, 1177, 759, 1197, 761, 1225, 760, 1257, 759, 1276, 759, 1293, 755, 1305, 752, 1288, 749, 1272, 756, 1252, 751, 1218, 752, 1202, 757, 1187, 755, 1173, 754, 1169, 752, 1182, 751, 1179, 748, 1168, 747, 1165, 743, 1179, 739, 1192, 737, 1189, 736, 1174, 738, 1173, 731, 1187, 730, 1188, 727, 1177, 727, 1186, 724, 1194, 721, 1181, 721, 1169, 722, 1163, 717, 1163, 711, 1172, 709, 1163, 707, 1154, 704], + "center":[2056, 371], + "bbox":[1154.3445078127984, 0.0, 1975.0922775988734, 992.3687980550653] + }, + "POL":{ + "shape":[2516, 1263, 2532, 1264, 2547, 1270, 2561, 1278, 2561, 1290, 2559, 1300, 2566, 1320, 2574, 1336, 2593, 1355, 2597, 1364, 2596, 1377, 2599, 1386, 2586, 1395, 2564, 1398, 2551, 1404, 2540, 1410, 2536, 1423, 2553, 1425, 2573, 1429, 2583, 1438, 2578, 1451, 2570, 1474, 2571, 1482, 2574, 1494, 2592, 1510, 2599, 1521, 2611, 1526, 2610, 1530, 2603, 1533, 2611, 1542, 2607, 1554, 2596, 1561, 2573, 1568, 2544, 1587, 2525, 1604, 2507, 1620, 2505, 1627, 2508, 1642, 2513, 1652, 2519, 1656, 2511, 1664, 2471, 1655, 2456, 1650, 2439, 1640, 2430, 1644, 2420, 1635, 2407, 1639, 2390, 1633, 2376, 1639, 2358, 1647, 2333, 1639, 2324, 1643, 2314, 1647, 2297, 1650, 2287, 1653, 2279, 1643, 2262, 1632, 2260, 1627, 2252, 1625, 2242, 1631, 2229, 1639, 2220, 1633, 2217, 1626, 2219, 1619, 2204, 1612, 2203, 1601, 2197, 1597, 2181, 1594, 2175, 1602, 2162, 1595, 2151, 1588, 2142, 1594, 2123, 1585, 2129, 1573, 2107, 1574, 2094, 1572, 2092, 1566, 2083, 1564, 2065, 1560, 2070, 1569, 2070, 1578, 2073, 1582, 2068, 1586, 2046, 1584, 2036, 1574, 2023, 1562, 2023, 1556, 2032, 1550, 2019, 1546, 1993, 1541, 1982, 1537, 1951, 1531, 1941, 1522, 1925, 1510, 1927, 1498, 1923, 1487, 1913, 1477, 1903, 1468, 1898, 1457, 1907, 1447, 1906, 1435, 1899, 1419, 1899, 1399, 1891, 1392, 1869, 1384, 1867, 1376, 1877, 1368, 1885, 1359, 1874, 1352, 1877, 1343, 1874, 1332, 1867, 1317, 1887, 1323, 1887, 1327, 1889, 1334, 1897, 1338, 1903, 1333, 1897, 1327, 1893, 1320, 1891, 1313, 1898, 1305, 1905, 1295, 1920, 1290, 1933, 1288, 1962, 1282, 1977, 1281, 1998, 1276, 2015, 1277, 2029, 1270, 2034, 1262, 2047, 1255, 2064, 1253, 2077, 1250, 2089, 1241, 2112, 1240, 2128, 1239, 2142, 1233, 2175, 1232, 2184, 1241, 2183, 1244, 2190, 1251, 2193, 1260, 2201, 1268, 2226, 1270, 2241, 1267, 2241, 1272, 2227, 1273, 2223, 1279, 2234, 1282, 2251, 1277, 2262, 1272, 2273, 1271, 2284, 1263, 2314, 1264, 2353, 1267, 2388, 1273, 2448, 1270, 2489, 1268, 2516, 1263], + "center":[2252, 1438], + "bbox":[1866.7843177528346, 1232.129079233168, 744.178251803786, 431.9118204083775] + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/json/test_json.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/json/test_json.html new file mode 100644 index 0000000..b50eef5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/json/test_json.html @@ -0,0 +1,76 @@ + + + + + + + + + + +JSON Import + + + + + + + + + + + + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/nonWidget/test_nonWidget.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/nonWidget/test_nonWidget.html new file mode 100644 index 0000000..c52e45a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/nonWidget/test_nonWidget.html @@ -0,0 +1,51 @@ + + + + +Dojo Base Layers + + + + + + + + + + + + + + + + + + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/Cities.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/Cities.js new file mode 100644 index 0000000..5dd82d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/Cities.js @@ -0,0 +1,310 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/xhr", + "dojox/geo/openlayers/GfxLayer", + "dojox/geo/openlayers/Point", + "dojox/geo/openlayers/GeometryFeature", + "dojox/gfx", + "dojox/gfx/move", + "dojox/gfx/fx", + "dojo/fx"], function(dojo, declare, lang, arr, xhr, GfxLayer, Point, GeometryFeature){ + + dojox.gfx.Text.prototype.getBoundingBox = function(){ + if (dojo.isIE) + return this.getShape(); + return this.rawNode.getBBox(); + }; + + return declare("dojox.geo.openlayers.tests.sun.Cities", null, { + + constructor : function(sunDemo){ + this.sunDemo = sunDemo; + this.pop = dojo.isIE ? 10000000 : 1000000; + this.minPop = Math.pow(2, 30); + this.maxPop = 0; + this.readCSV("c.csv", lang.hitch(this, this.loaded)); + this._circles = false; + this._gradients = false; + var layer = new GfxLayer("cities"); + var map = this.sunDemo.map; + map.map.addLayer(layer); + this.layer = layer; + }, + + useGradients : function(u){ + if(u== undefined) + return this._gradients; + this._gradients = u; + this.updateCities(); + return u; + }, + + useCircles : function(u){ + if(u == undefined) + return this._circles; + this._circles = u; + this.updateCities(true); + return u; + }, + + loaded : function(res){ + var layer = this.layer; + arr.forEach(res, function(o){ + var p = { + x : parseFloat(o.longitude), + y : parseFloat(o.latitude) + }; + var pg = new Point(p); + var f = new GeometryFeature(pg); + // f.createShape = this.createShape; + this.setCreateShape(f, o); + var r = o.population; + var dp = this.maxPop - this.minPop; + if (dp != 0) + r = (r - this.minPop + 100) * 20 / dp; + else + r = 20; + if (this._circles) + f.setShapeProperties({ + r : r + }); + else + f.setShapeProperties({ + x : -r / 2, + y : -r / 2, + width : r, + height : r, + r : 0 + }); + layer.addFeature(f); + f.getShape(); + this.connectTooltip(pg, o.asciiname, r); + }, this); + layer.redraw(); + this.updateCities(); + }, + + updateCities : function(redoGeometry){ + if (!this.layer) + return; // ?? throw new Error(); + var features = this.layer.getFeatures(); + var gf = this.sunDemo.getTZone(); + var tz = gf._geometry.coordinates; + + var pointIn = function(p){ + var sides = tz.length; + var j = sides - 1; + var oddNodes = false; + var x = p.x; + var y = p.y; + for ( var i = 0; i < sides; i++) { + var o = tz[i]; + var xi = o.x; + var yi = o.y; + + o = tz[j]; + var xj = o.x; + var yj = o.y; + + if (yi < y && yj >= y || yj < y && yi >= y) { + if (xi + (y - yi) / (yj - yi) * (xj - xi) < x) { + oddNodes = !oddNodes; + } + } + j = i; + o = tz[j]; + xj = o.x; + yj = o.y; + } + + return oddNodes; + }; + + arr.forEach(features, function(f){ + var g = f._geometry.coordinates; + + var p = f.getShapeProperties(); + var r = p.r | p.width; + if (redoGeometry) { + f.remove(); + if (this._circles) + f.setShapeProperties({ + r : r + }); + else + f.setShapeProperties({ + x : -r / 2, + y : -r / 2, + width : r, + height : r, + r : 0 + }); + } + if (pointIn(g)) { + f.setStroke("black"); + if (this._gradients) + f.setFill({ + type : "radial", + r : r, + colors : [{ + offset : 0, + color : [255, 255, 255] + }, { + offset : 1, + color : [0, 0, 0] + }] + }); + else + f.setFill([0, 0, 0, 0]); + } else { + f.setStroke([0, 128, 128]); + if (this._gradients) + f.setFill({ + type : "radial", + r : r, + colors : [{ + offset : 0, + color : [255, 255, 255] + }, { + offset : 1, + color : [255, 255, 0] + }] + }); + else + f.setFill("yellow"); + } + }, this); + + this.layer.redraw(); + }, + + readCSV : function(url, cb){ + xhr.get({ + url : url, + handleAs : "text", + nocache : true, + noCache : true, + load : lang.hitch(this, function(data){ + + var what = ['asciiname', 'longitude', 'latitude', 'population']; + + var res = this.parseCSV(data, what, lang.hitch(this, function(head, line){ + + var index = arr.indexOf(head, 'population'); + var pop = line[index]; + pop = parseInt(pop); + var ok = pop > this.pop; + if (ok) { + if (pop < this.minPop) + this.minPop = pop; + if (pop > this.maxPop) + this.maxPop = pop; + } + return ok; + })); + cb(res); + }), + + error : function(e){ + console.log(e.toString()); + }, + + headers : { + content : "text/html; charset=UTF-8" + } + }); + }, + + parseCSV : function(s, what, condition){ + var res = []; + var nl = "\n"; + var sep = "\t"; + var start = 0; + + var eol = s.indexOf(nl, start); + var line = s.substring(start, eol); + + var head = line.split(sep); + var re = /^\"(.*)\"$/; + arr.forEach(head, function(h, index){ + var r = re.exec(h); + if (r && r.length > 1) { + head[index] = r[1]; + } + }); + start = eol + 1; + + var count = 0; + while ((eol = s.indexOf(nl, start)) != -1) { + line = s.substring(start, eol); + var split = line.split(sep); + if (condition == undefined || condition(head, split)) { + var o = {}; + arr.forEach(what, function(w, i){ + index = arr.indexOf(head, w); + var splt = split[index]; + var r = re.exec(splt); + if (r && r.length > 1) + splt = r[1]; + o[w] = splt; + }); + res.push(o); + count++; + } + start = eol + 1; + } + return res; + }, + + setCreateShape : function(feature, object){ + + var createShape = lang.hitch(this, function(/* Surface */surface){ + var shape; + if (this._circles) + shape = surface.createCircle(); + else + shape = surface.createRect(); + + return shape; + }); + + feature.createShape = createShape; + }, + + connectTooltip : function(g, content, size){ + var map = this.sunDemo.map.map; + + var localXY = function(p){ + var x = p.x; + var y = p.y; + var layer = map.olMap.baseLayer; + var resolution = map.olMap.getResolution(); + var extent = layer.getExtent(); + var rx = (x / resolution + (-extent.left / resolution)); + var ry = ((extent.top / resolution) - y / resolution); + return [rx, ry]; + }; + + g.shape.connect("onmouseover", function(){ + var p = lang.mixin({}, g.coordinates); + p = map.transform(p); + var a = localXY(p); + var r = { + x : a[0], + y : a[1], + w : size, + h : size + }; + var s = g.shape; + lang.mixin(s, r); + dijit.showTooltip(content, s, ["after"]); + }); + + g.shape.connect("onmouseout", function(){ + dijit.hideTooltip(g.shape); + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/Sun.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/Sun.js new file mode 100644 index 0000000..82aa634 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/Sun.js @@ -0,0 +1,226 @@ +define(["dojo/_base/kernel", "dojo/_base/declare"], function(dojo, declare){ + return declare("dojox.geo.openlayers.tests.sun.Sun", null, { + _now : false, + + constructor : function(d){ + if (!d) + d = new Date(); + this._date = d; + }, + + getDate : function(){ + var d = this._date; + if (d == null) { + d = new Date(); + this._date = d; + } + return d; + }, + + setDate : function(d){ + if (!d) + d = new Date(); + this._date = d; + }, + + isNow : function(){ + return this._now; + }, + + clip : function(p, c){ + if (p.x < c.x1) + p.x = c.x1; + if (p.y < c.y2) + p.y = c.y2; + if (p.x > c.x2) + p.x = c.x2; + if (p.y > c.y1) + p.y = c.y1; + return p; + }, + + twilightZone : function(c){ + var pts = []; + + clip = function(p, c){ + if (p.x < c.x1) + p.x = c.x1; + if (p.y < c.y2) + p.y = c.y2; + if (p.x > c.x2) + p.x = c.x2; + if (p.y > c.y1) + p.y = c.y1; + return p; + }; + + addPoint = function(p){ + if (c) + p = this.clip(p, c); + pts.push(p); + }; + + sLon = -180; + sLat = -90; + eLon = 180; + eLat = 90; + if (c) { + if (sLon < c.x1) + sLon = c.x1; + if (sLat < c.y2) + sLat = c.y2; + if (eLon > c.x2) + eLon = c.x2; + if (eLat > c.y1) + eLat = c.y1; + } + var dt = this.getDate(); + var LT = dt.getUTCHours() + dt.getUTCMinutes() / 60 + dt.getUTCSeconds() / 3600; + var tau = 15 * (LT - 12); + var o = this.sunDecRa(); + var dec = o.dec; + var incr = 1; + var dtr = Math.PI / 180; + for ( var i = sLon; i <= eLon; i += incr) { + var longitude = i + tau; + var tanLat = -Math.cos(longitude * dtr) / Math.tan(dec * dtr); + var arctanLat = Math.atan(tanLat) / dtr; + addPoint({ + x : i, + y : arctanLat + }); + } + + if (dec < 0) { + addPoint({ + x : 180, + y : -85 + }); + + addPoint({ + x : -180, + y : -85 + }); + + addPoint({ + x : pts[0].x, + y : pts[0].y + }); + + } else { + addPoint({ + x : 180, + y : 85 + }); + + addPoint({ + x : -180, + y : 85 + }); + + } + return pts; + }, + + sun : function(){ + var o = this.sunDecRa(); + var dec = o.dec; + var dt = this.getDate(); + var LT = dt.getUTCHours() + dt.getUTCMinutes() / 60 + dt.getUTCSeconds() / 3600; + var tau = 15 * (LT - 12); + var et = 0; // this.et(dt) / 60; + var p = { + x : -tau + et, + y : dec + }; + return p; + }, + + jd : function(date){ + var dt; + if (date != null) + dt = date; + else + dt = this.getDate(); + MM = dt.getMonth() + 1; + DD = dt.getDate(); + YY = dt.getFullYear(); + HR = dt.getUTCHours(); + MN = dt.getUTCMinutes(); + SC = 0; + with (Math) { + HR = HR + (MN / 60) + (SC / 3600); + GGG = 1; + if (YY <= 1585) + GGG = 0; + JD = -1 * floor(7 * (floor((MM + 9) / 12) + YY) / 4); + S = 1; + if ((MM - 9) < 0) + S = -1; + A = abs(MM - 9); + J1 = floor(YY + S * floor(A / 7)); + J1 = -1 * floor((floor(J1 / 100) + 1) * 3 / 4); + JD = JD + floor(275 * MM / 9) + DD + (GGG * J1); + JD = JD + 1721027 + 2 * GGG + 367 * YY - 0.5; + JD = JD + (HR / 24); + } + return JD; + }, + + sunDecRa : function(){ + var jd = this.jd(); + var PI2 = 2.0 * Math.PI; + var cos_eps = 0.917482; + var sin_eps = 0.397778; + var M, DL, L, SL, X, Y, Z, R; + var T, dec, ra; + T = (jd - 2451545.0) / 36525.0; // number of Julian centuries since Jan 1, + // 2000, 0 GMT + M = PI2 * this.frac(0.993133 + 99.997361 * T); + DL = 6893.0 * Math.sin(M) + 72.0 * Math.sin(2.0 * M); + L = PI2 * this.frac(0.7859453 + M / PI2 + (6191.2 * T + DL) / 1296000); + SL = Math.sin(L); + X = Math.cos(L); + Y = cos_eps * SL; + Z = sin_eps * SL; + R = Math.sqrt(1.0 - Z * Z); + dec = (360.0 / PI2) * Math.atan(Z / R); + ra = (48.0 / PI2) * Math.atan(Y / (X + R)); + if (ra < 0) + ra = ra + 24.0; + return { + dec : dec, + ra : ra + }; + }, + + et : function(d){ + if (!d) + d = this.getDate(); + var year = date.getUTCFullYear(); + var month = date.getUTCMonth() + 1; + var day = date.getUTCDate(); + + var N1 = Math.floor((month * 275) / 9); + var N2 = Math.floor((month + 9) / 12); + var K = 1 + Math.floor((year - 4 * Math.floor(year / 4) + 2) / 3); + var j = N1 - N2 * K + day - 30; + + var M = 357 + 0.9856 * j; + var C = 1.914 * Math.sin(M) + 0.02 * Math.sin(2 * M); + var L = 280 + C + 0.9856 * j; + var R = -2.465 * Math.sin(2 * L) + 0.053 * Math.sin(4 * L); + + var ET = (C + R) * 4; + + return ET; + }, + + frac : function(x){ + x = x - Math.floor(x); + if (x < 0) + x = x + 1.0; + return x; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/SunDemo.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/SunDemo.js new file mode 100644 index 0000000..0e3e29d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/SunDemo.js @@ -0,0 +1,298 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/html", + "dojo/_base/lang", + "dojo/date", + "dojox/geo/openlayers/tests/sun/Sun", + "dojox/geo/openlayers/widget/Map", + "dojox/timing/_base", + "dojox/geo/openlayers/GfxLayer", + "dojox/geo/openlayers/GeometryFeature", + "dojox/geo/openlayers/LineString", + "dojox/geo/openlayers/Point", + "dojox/geo/openlayers/JsonImport", + "dojox/geo/openlayers/tests/sun/Cities", + "dijit/Tooltip"], function(dojo, declare, html, lang, date, Sun, Map, timinig, GfxLayer, GeometryFeature, LineString, + Point, JsonImport, Cities){ + + return declare("dojox.geo.openlayers.tests.sun.SunDemo", null, { + now : true, + map : null, + cities : null, + layer : null, + sun : null, + + constructor : function(div){ + + var options = { + name : "TheMap", + touchHandler : true + }; + + var map = new Map(options); + html.place(map.domNode, div); + map.startup(); + this.map = map; + + map.map.fitTo([-160, 70, 160, -70]); + + var cities = new Cities(this); + dojo.connect(this, "updateFeatures", cities, "updateCities"); + this.cities = cities; + + this.sun = new Sun(); + var layer = new GfxLayer("sun"); + this.layer = layer; + map.map.addLayer(layer); + + this.updateFeatures(); + + }, + + showGradients : function(grd){ + return this.cities.useGradients(grd); + }, + + showCircles : function(c){ + return this.cities.useCircles(c); + }, + + showTooltips : function(tt){ + var map = this.map.map; + var ls = map.getLayer("name", "sun")[0]; + var lc = map.getLayer("name", "cities")[0]; + var is = map.layerIndex(ls); + var ic = map.layerIndex(lc); + var m = Math.min(is, ic); + var M = Math.max(is, ic); + if (tt) { + map.layerIndex(ls, m); + map.layerIndex(lc, M); + } else { + map.layerIndex(ls, M); + map.layerIndex(lc, m); + } + }, + + updateFeatures : function(){ + var l = this.layer; + l.removeFeature(l.getFeatures()); + var f = this.twilightZone({ + x1 : -180, + y1 : 85, + x2 : 180, + y2 : -85 + }); + l.addFeature(f); + + f = this.createStar(); + l.addFeature(f); + + f = this.createSun(); + l.addFeature(f); + + l.redraw(); + }, + + getHour : function(d){ + if (!d) + d = this.sun.getDate(); + return d.getHours() + d.getMinutes() / 60 + d.getSeconds() / 3600; + }, + + getDay : function(d){ + if (!d) + d = this.sun.getDate(); + var start = new Date(d.getFullYear(), 0, 1); + var oneDay = 1000 * 60 * 60 * 24; + var day = Math.floor((d.getTime() - start.getTime()) / oneDay); + return day; + }, + + setDay : function(day){ + var now = this.sun.getDate(); + var year = now.getFullYear(); + var hours = now.getHours(); + var minutes = now.getMinutes(); + var seconds = now.getSeconds(); + var milliSeconds = now.getMilliseconds(); + var start = new Date(year, 0, 1, hours, minutes, seconds, milliSeconds); + start = date.add(start, "day", day); + this.setDate(start); + }, + + setTime : function(t){ + var d = this.sun.getDate(); + + var year = d.getFullYear(); + var month = d.getMonth(); + var day = d.getDate(); + var hours = Math.floor(t); + t = 60 * (t - hours); + var minutes = Math.floor(t); + t = 60 * (t - minutes); + var seconds = Math.floor(t); + d = new Date(year, month, day, hours, minutes, seconds, 0); + + this.setDate(d); + }, + + setDate : function(d){ + this.now = !d; + this.sun.setDate(d); + this.updateFeatures(); + }, + + advance : function(ms){ + var d = this.sun.getDate(); + d = date.add(d, "millisecond", ms); + this.setDate(d); + }, + + getTZone : function(){ + return this.tZone; + }, + + twilightZone : function(clip){ + var tz = this.sun.twilightZone(clip); + var g = new LineString(tz); + var gf = new GeometryFeature(g); + gf.setStroke([248, 236, 56]); + gf.setFill([252, 251, 45, 0.3]); + this.tZone = gf; + return gf; + }, + + makeStarShape : function(r1, r2, b){ + var TPI = Math.PI * 2; + var di = TPI / b; + var s = null; + var start = Math.PI; + var end = start + TPI; + for ( var i = start; i < end; i += di) { + var c1 = Math.cos(i); + var s1 = Math.sin(i); + var i2 = i + di / 2; + var c2 = Math.cos(i2); + var s2 = Math.sin(i2); + if (s == null) { + s = "M" + (s1 * r1).toFixed(2) + "," + (c1 * r1).toFixed(2) + " "; + } else { + s += "L" + (s1 * r1).toFixed(2) + "," + (c1 * r1).toFixed(2) + " "; + } + s += "L" + (s2 * r2).toFixed(2) + "," + (c2 * r2).toFixed(2) + " "; + } + s += "z"; + return s; + }, + + createStar : function(){ + var s = this.sun.sun(); + var geom = new Point(s); + var gf = new GeometryFeature(geom); + + gf.createShape = lang.hitch(this, function(/* Surface */s){ + var r1 = 30; + var r2 = 10; + var branches = 7; + var star = this.makeStarShape(r1, r2, branches); + var path = s.createPath(); + path.setShape({ + path : star + }); + path.setStroke([0, 100, 0]); + path.setFill([0, 100, 0]); + // g.add(path); + // return g; + return path; + }); + return gf; + }, + + makeCrossShape : function(r1, r2, b){ + var TPI = Math.PI * 2; + var di = TPI / b; + var s = ""; + for ( var i = 0; i < TPI; i += di) { + var c1 = Math.cos(i); + var s1 = Math.sin(i); + var i2 = i + Math.PI; + var c2 = Math.cos(i2); + var s2 = Math.sin(i2); + s += "M" + (s1 * r1).toFixed(2) + "," + (c1 * r1).toFixed(2) + " "; + s += "L" + (s2 * r1).toFixed(2) + "," + (c2 * r1).toFixed(2) + " "; + } + + return s; + }, + + createSun : function(){ + var s = this.sun.sun(); + var g = new Point({ + x : s.x, + y : s.y + }); + var gf = new GeometryFeature(g); + var sunRadius = 20; + gf.setShapeProperties({ + r : sunRadius + }); + gf.setStroke(""); + gf.setFill({ + type : "radial", + r : sunRadius, + colors : [{ + offset : 0, + color : [248, 236, 100] + }, { + offset : 1, + color : [255, 127, 0] + }] + }); + /* + gf.setFill({ + type : "radial", + r : 15, + colors : [{ + offset : 0, + color : [248, 236, 100] + }, { + offset : 1, + color : [255, 255, 255, 0.4] + }] + }); + */ + return gf; + }, + + _timer : null, + + startTimer : function(checked, time){ + var t = this._timer; + if (!this._timer) { + if (!time) + time = 1000; + + t = this._timer = new dojox.timing.Timer(time); + t.onTick = lang.hitch(this, function(){ + if (this.now) + this.setDate(); + else + this.advance(time); + }); + t.onStart = function(){ + + }; + t.onStop = function(){ + + }; + } + if (checked) + t.start(); + else + t.stop(); + } + + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/c.csv b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/c.csv new file mode 100644 index 0000000..7a9a45d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/c.csv @@ -0,0 +1,340 @@ +asciiname latitude longitude population +"Dubai" 25.25222 55.28 1137347 +"Kabul" 34.52813 69.17233 3043532 +"Yerevan" 40.18111 44.51361 1093485 +"Luanda" -8.83833 13.23444 2776168 +"Buenos Aires" -34.61315 -58.37723 13076300 +"Rosario" -32.95111 -60.66639 1173533 +"Cordoba" -31.4 -64.18333 1428214 +"Vienna" 48.20849 16.37208 1691468 +"Perth" -31.93333 115.83333 1446704 +"Adelaide" -34.93333 138.6 1074159 +"Sydney" -33.86785 151.20732 4394576 +"Melbourne" -37.814 144.96332 3730206 +"Baku" 40.37767 49.89201 1116513 +"Dhaka" 23.7104 90.40744 10356500 +"Chittagong" 22.33306 91.83639 3920222 +"Khulna" 22.81348 89.56723 1342339 +"Brussels" 50.85045 4.34878 1019022 +"Ouagadougou" 12.36423 -1.53834 1086505 +"Sofia" 42.69751 23.32415 1152556 +"Santa Cruz de la Sierra" -17.8 -63.16667 1364389 +"Recife" -8.05389 -34.88111 1478098 +"Fortaleza" -3.71722 -38.54306 2400000 +"Belem" -1.45583 -48.50444 1407737 +"Sao Paulo" -23.5475 -46.63611 10021295 +"Salvador" -12.97111 -38.51083 2711840 +"Rio de Janeiro" -22.90278 -43.2075 6023699 +"Porto Alegre" -30.03306 -51.23 1372741 +"Nova Iguacu" -22.75917 -43.45111 1002118 +"Guarulhos" -23.46278 -46.53333 1169577 +"Goiania" -16.67861 -49.25389 1171195 +"Curitiba" -25.42778 -49.27306 1718421 +"Campinas" -22.90556 -47.06083 1031554 +"Brasilia" -15.77972 -47.92972 2207718 +"Belo Horizonte" -19.92083 -43.93778 2373224 +"Manaus" -3.10194 -60.025 1598210 +"Minsk" 53.9 27.56667 1742124 +"Calgary" 51.05011 -114.08529 1019942 +"Montreal" 45.50884 -73.58781 3268513 +"Toronto" 43.70011 -79.4163 4612191 +"Vancouver" 49.24966 -123.11934 1837969 +"Lubumbashi" -11.66667 27.46667 1373770 +"Kinshasa" -4.32459 15.32146 7785965 +"Brazzaville" -4.2669 15.28327 1284609 +"Abidjan" 5.34111 -4.02806 3677115 +"Santiago de Chile" -33.45722 -70.65685 5278044 +"Yaounde" 3.86667 11.51667 1299369 +"Douala" 4.0469 9.7084 1338082 +"Urumqi" 43.8 87.58333 1508225 +"Zhumadian" 32.97944 114.02944 8263100 +"Zhengzhou" 34.75778 113.64861 2014125 +"Yunfu" 22.93056 112.0373 2612800 +"Tongshan" 34.18045 117.15707 1199193 +"Xinyang" 32.12278 114.06556 1590668 +"Xianyang" 34.33778 108.70261 1034081 +"Xi'an" 34.25833 108.92861 3225812 +"Wuxi" 31.56887 120.28857 1108647 +"Wuhan" 30.58333 114.26667 4184206 +"Tianjin" 39.14222 117.17667 3766207 +"Tangshan" 39.63333 118.18333 1596949 +"Taiyuan" 37.86944 112.56028 2722475 +"Tai'an" 36.18528 117.12 5499000 +"Shiyan" 32.6475 110.77806 3460000 +"Shijiazhuang" 38.04139 114.47861 1992474 +"Shenzhen" 22.54554 114.0683 3000000 +"Shantou" 23.36814 116.71479 1333973 +"Shanghai" 31.22222 121.45806 14608512 +"Jieyang" 23.52886 116.36416 1001985 +"Qingdao" 36.09861 120.37194 1642245 +"Puyang" 29.46028 119.88611 3590000 +"Nanjing" 32.06167 118.77778 3087010 +"Nanchong" 30.79508 106.08474 7150000 +"Nanchang" 28.68333 115.88333 1871351 +"Luoyang" 34.68361 112.45361 1390581 +"Liuyang" 28.15 113.63333 1380000 +"Lanzhou" 36.05639 103.79222 3200000 +"Kunming" 25.03889 102.71833 1023674 +"Kaifeng" 34.79111 114.34833 4800000 +"Jinan" 36.66833 116.99722 2069266 +"Huainan" 32.62639 116.99694 1027655 +"Hefei" 31.86389 117.28083 1388904 +"Hangzhou" 30.25528 120.16889 1878129 +"Handan" 36.60056 114.46778 1358318 +"Guiyang" 26.58333 106.71667 1171633 +"Guangzhou" 23.11667 113.25 3152825 +"Fuzhou" 26.06139 119.30611 1179720 +"Dayan" 26.86879 100.22072 1137600 +"Dalian" 38.91222 121.60222 2035307 +"Chongqing" 29.56278 106.55278 3967028 +"Chengdu" 30.66667 104.06667 3950437 +"Changsha" 28.2 112.96667 2073938 +"Beijing" 39.9075 116.39723 7480601 +"Suzhou" 31.31139 120.61806 1343091 +"Zhongshan" 21.32256 110.58291 2493400 +"Yueyang" 29.33333 113.09194 5000000 +"Shenyang" 41.79222 123.43278 3512192 +"Jilin" 43.85083 126.56028 1881977 +"Harbin" 45.75 126.65 3229883 +"Fushun" 41.85583 123.92333 1400646 +"Datong" 40.09361 113.29139 1052678 +"Changchun" 43.88 125.32278 2537421 +"Baotou" 40.65222 109.82222 1301768 +"Anshan" 41.12361 122.99 1199275 +"Changshu City" 31.64615 120.74221 1047700 +"Medellin" 6.29139 -75.53611 1999979 +"Cali" 3.43722 -76.5225 2392877 +"Bogota" 4.60971 -74.08175 7102602 +"Barranquilla" 10.96389 -74.79639 1380425 +"Havana" 23.13302 -82.38304 2163824 +"Praha" 50.08804 14.42076 1165581 +"Muenchen" 48.13743 11.57549 1260391 +"Hamburg" 53.55 10 1739117 +"Berlin" 52.52437 13.41053 3426354 +"Copenhagen" 55.67594 12.56553 1153615 +"Santo Domingo" 18.50012 -69.98857 2201941 +"Santiago de los Caballeros" 19.45 -70.7 1200000 +"Algiers" 36.7525 3.04197 1977663 +"Quito" -0.22985 -78.52495 1399814 +"Guayaquil" -2.16667 -79.9 1952029 +"Cairo" 30.06263 31.24967 7734614 +"Al Jizah" 30.00861 31.21222 2443203 +"Alexandria" 31.19806 29.91917 3811516 +"Madrid" 40.4165 -3.70256 3255944 +"Barcelona" 41.38879 2.15899 1621537 +"Addis Ababa" 9.02497 38.74689 2757729 +"Paris" 48.85341 2.3488 2138551 +"London" 51.50853 -0.12574 7556900 +"Tbilisi" 41.69411 44.83368 1049498 +"Kumasi" 6.68333 -1.61667 1468609 +"Accra" 5.55602 -0.1969 1963264 +"Conakry" 9.53795 -13.67729 1767200 +"Camayenne" 9.535 -13.68778 1871242 +"Kowloon" 22.31667 114.18333 2019533 +"Hong Kong" 22.28552 114.15769 7012738 +"Port-au-Prince" 18.53917 -72.335 1234742 +"Budapest" 47.49801 19.03991 1696128 +"Medan" 3.58333 98.66667 1750971 +"Makassar" -5.14 119.4221 1321717 +"Tangerang" -6.17806 106.63 1372124 +"Surabaya" -7.24917 112.75083 2374658 +"Semarang" -6.9932 110.4203 1288084 +"Palembang" -2.91673 104.7458 1441500 +"Jakarta" -6.21462 106.84513 8540121 +"Depok" -6.4 106.81861 1198129 +"Bekasi" -6.2349 106.9896 1520119 +"Bandung" -6.90389 107.61861 1699719 +"Dublin" 53.34399 -6.26719 1024027 +"Vishakhapatnam" 17.7 83.3 1063178 +"Benares" 25.33333 83 1164404 +"Vadodara" 22.3 73.2 1409476 +"Tuticorin" 8.78333 78.13333 1572273 +"Thane" 19.2 72.96667 1261517 +"Teni" 10 77.48333 1034724 +"Surat" 21.16667 72.83333 2894504 +"Rajkot" 22.3 70.78333 1177362 +"Raigarh Fort" 18.25 73.43333 2207929 +"Pune" 18.51957 73.85535 2935744 +"Pimpri" 18.61667 73.8 1284606 +"Patna" 25.6 85.11667 1599920 +"Nasik" 19.98333 73.8 1289497 +"Nagpur" 21.15 79.1 2228018 +"Meerut" 28.98333 77.7 1223184 +"Chennai" 13.08784 80.27847 4328063 +"Ludhiana" 30.9 75.85 1545368 +"Lucknow" 26.85 80.91667 2472011 +"Kanpur" 26.46667 80.35 2823249 +"Kalyan" 19.25 73.15 1262255 +"Jaipur" 26.91667 75.81667 2711758 +"Jabalpur" 23.16697 79.95006 1030168 +"Indore" 22.71792 75.8333 1837041 +"Hyderabad" 17.37528 78.47444 3597816 +"Haora" 22.58917 88.31028 1027672 +"Gorakhpur" 29.45 75.68333 1324570 +"Ghaziabad" 28.66667 77.43333 1199191 +"Faridabad" 28.43333 77.31667 1220229 +"Dombivli" 19.21667 73.08333 1193000 +"Delhi" 28.66667 77.21667 10927986 +"Calcutta" 22.56972 88.36972 4631392 +"Mumbai" 19.01441 72.84794 12691836 +"Bhopal" 23.26667 77.4 1599914 +"Bengalore" 12.97623 77.60329 5104047 +"Aurangabad" 19.88333 75.33333 1016441 +"Amritsar" 31.63306 74.86556 1092450 +"Allahabad" 25.45 81.85 1073438 +"Ahmadabad" 23.03333 72.61667 3719710 +"Agra" 27.18333 78.01667 1430055 +"Baghdad" 33.34058 44.40088 5672513 +"Al Mawsil al Jadidah" 36.33464 43.09777 2065597 +"Mosul" 36.335 43.11889 1739800 +"Al Basrah" 30.53488 47.78885 2600000 +"Al Basrat al Qadimah" 30.49721 47.81491 2015483 +"Tehran" 35.69439 51.42151 7153309 +"Tabriz" 38.08 46.2919 1424641 +"Shiraz" 29.6036 52.5388 1249942 +"Mashhad" 36.297 59.6062 2307177 +"Karaj" 35.82876 50.9982 1448075 +"Esfahan" 32.65722 51.67761 1547164 +"Roma" 41.89474 12.4839 2563241 +"Milano" 45.46427 9.18951 1306661 +"Amman" 31.95522 35.94503 1275857 +"Yono" 35.88333 139.63333 1077730 +"Yokohama-shi" 35.44778 139.6425 3574443 +"Tokyo" 35.61488 139.5813 8336599 +"Osaka-shi" 34.69374 135.50218 2592413 +"Nagoya-shi" 35.18147 136.90641 2191279 +"Kyoto" 35.02107 135.75385 1459640 +"Kobe-shi" 34.6913 135.183 1528478 +"Kawasaki" 35.52056 139.71722 1306785 +"Hiroshima-shi" 34.39627 132.45937 1143841 +"Fukuoka-shi" 33.60639 130.41806 1392289 +"Sendai-shi" 38.26889 140.87194 1037562 +"Sapporo-shi" 43.06417 141.34694 1883027 +"Saitama" 35.90807 139.65657 1193350 +"Nairobi" -1.28333 36.81667 2750547 +"Phnom Penh" 11.56245 104.91601 1573544 +"Pyongyang" 39.03385 125.75432 3222000 +"Taejon" 36.32139 127.41972 1475221 +"Taegu" 35.87028 128.59111 2566540 +"Suwon" 37.29111 127.00889 1242724 +"Seoul" 37.56826 126.97783 10349312 +"Pusan" 35.10278 129.04028 3678555 +"Kwangju" 35.15472 126.91556 1416938 +"Goyang" 37.65639 126.835 1073069 +"Inch'on" 37.45361 126.73167 2628000 +"Songnam" 37.43861 127.13778 1031935 +"Almaty" 43.25 76.95 2000900 +"Ra's Bayrut" 33.9 35.48333 1251739 +"Beirut" 33.88894 35.49442 1916100 +"Tripoli" 32.87519 13.18746 1150989 +"Rabat" 34.01325 -6.83255 1655753 +"Casablanca" 33.59278 -7.61916 3144909 +"Antananarivo" -18.91433 47.53098 1391433 +"Bamako" 12.65 -8 1297281 +"Rangoon" 16.80528 96.15611 4477638 +"Mandalay" 21.97473 96.08359 1208099 +"Gustavo A. Madero" 19.47861 -99.09583 1193161 +"Puebla de Zaragoza" 19.05 -98.2 1590256 +"Iztapalapa" 19.35111 -99.05194 1820888 +"Ecatepec" 19.60111 -99.0525 1806226 +"Ciudad Nezahualcoyotl" 19.41361 -99.03306 1232220 +"Mexico City" 19.42847 -99.12766 12294193 +"Tijuana" 32.53333 -117.01667 1376457 +"Monterrey" 25.66667 -100.31667 1122874 +"Leon" 21.11667 -101.66667 1114626 +"Guadalajara" 20.66667 -103.33333 1640589 +"Ciudad Juarez" 31.73333 -106.48333 1512354 +"Kuala Lumpur" 3.1412 101.68653 1453975 +"Maputo" -25.96528 32.58917 1191613 +"Port Harcourt" 4.77742 7.0134 1148665 +"Maiduguri" 11.84644 13.16027 1112449 +"Lagos" 6.45306 3.39583 9000000 +"Kano" 11.99435 8.51381 3626068 +"Kaduna" 10.52224 7.43828 1582102 +"Ibadan" 7.38778 3.89639 3565108 +"Benin City" 6.33504 5.62749 1125058 +"Kathmandu" 27.70169 85.3206 1442271 +"Lima" -12.04318 -77.02824 7737002 +"Manila" 14.6042 120.9822 10444527 +"Davao" 7.07306 125.61278 1212504 +"Rawalpindi" 33.6007 73.0679 1743101 +"Peshawar" 34.00837 71.58018 1218773 +"Multan" 30.19556 71.47528 1437230 +"Lahore" 31.54972 74.34361 6310888 +"Karachi" 24.9056 67.0822 11624219 +"Hyderabad" 25.3823 68.3699 1386330 +"Gujranwala" 32.16167 74.18831 1384471 +"Faisalabad" 31.41667 73.08333 2506595 +"Warsaw" 52.22977 21.01178 1702139 +"Asuncion" -25.30066 -57.63591 1482200 +"Bucuresti" 44.43225 26.10626 1877155 +"Belgrade" 44.80401 20.46513 1273651 +"Volgograd" 48.80472 44.58583 1011417 +"Ufa" 54.775 56.0375 1033338 +"Saint Petersburg" 59.89444 30.26417 4039745 +"Samara" 53.2 50.15 1134730 +"Rostov-na-Donu" 47.23639 39.71389 1074482 +"Nizhniy Novgorod" 56.32867 44.00205 1284164 +"Moscow" 55.75222 37.61556 10381222 +"Kazan'" 55.7877 49.1248 1104738 +"Yekaterinburg" 56.8575 60.6125 1287573 +"Omsk" 55 73.4 1129281 +"Novosibirsk" 55.04111 82.93444 1419007 +"Chelyabinsk" 55.15444 61.42972 1062919 +"Mecca" 21.42667 39.82611 1323624 +"Jiddah" 21.51694 39.21917 2867446 +"Riyadh" 24.68773 46.72185 4205961 +"Medina" 24.46861 39.61417 1300000 +"Omdurman" 15.63611 32.43722 1200000 +"Khartoum" 15.54665 32.53361 1974647 +"Stockholm" 59.33258 18.0649 1253309 +"Singapore" 1.28967 103.85007 3547809 +"Grand Dakar" 14.70889 -17.45528 2352057 +"Dakar" 14.6937 -17.44406 2476400 +"Mogadishu" 2.03711 45.34375 2587183 +"Aleppo" 36.20278 37.15861 1602264 +"Damascus" 33.5102 36.29128 1569394 +"Bangkok" 13.75 100.51667 5104476 +"Izmir" 38.41273 27.13838 2500603 +"Gaziantep" 37.05944 37.3825 1065975 +"Ankara" 39.91987 32.85427 3517182 +"Adana" 37.00167 35.32889 1248988 +"Istanbul" 41.01384 28.94966 11174257 +"Bursa" 40.19167 29.06111 1412701 +"Taipei" 25.04776 121.53185 7871900 +"Taichung" 24.1469 120.6839 1040725 +"Kaohsiung" 22.61626 120.31333 1519711 +"Dar es Salaam" -6.82349 39.26951 2698652 +"Odesa" 46.47747 30.73262 1001558 +"Kiev" 50.45466 30.5238 2514227 +"Kharkiv" 50 36.25 1430885 +"Donets'k" 48 37.8 1024700 +"Dnipropetrovsk" 48.45 34.98333 1032822 +"Kampala" 0.31628 32.58219 1353189 +"Philadelphia" 39.95234 -75.16379 1517550 +"Dallas" 32.78306 -96.80667 1211704 +"Houston" 29.76328 -95.36327 2027712 +"San Antonio" 29.42412 -98.49363 1256810 +"Chicago" 41.85003 -87.65005 2841952 +"Brooklyn" 40.6501 -73.94958 2300664 +"Manhattan" 40.78343 -73.96625 1487536 +"New York City" 40.71427 -74.00597 8008278 +"Phoenix" 33.44838 -112.07404 1321045 +"Los Angeles" 34.05223 -118.24368 3694820 +"San Diego" 32.71533 -117.15726 1223400 +"Montevideo" -34.83346 -56.16735 1270737 +"Tashkent" 41.26465 69.21627 1978028 +"Valencia" 10.16202 -68.00765 1385083 +"Maracay" 10.24694 -67.59583 1754256 +"Maracaibo" 10.63167 -71.64056 2225000 +"Caracas" 10.5 -66.91667 3000000 +"Thanh pho Ho Chi Minh" 10.75 106.66667 3467331 +"Ha Noi" 21.0245 105.84117 1431270 +"Sanaa" 15.35472 44.20667 1937451 +"Soweto" -26.26667 27.86667 1695047 +"Pretoria" -25.74486 28.18783 1619438 +"Johannesburg" -26.20227 28.04363 2026469 +"Durban" -29.85 31.01667 3120282 +"Cape Town" -33.91667 18.41667 3433441 +"Lusaka" -15.40809 28.28636 1267440 +"Harare" -17.82935 31.05389 1542813 diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/test_sun.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/test_sun.html new file mode 100644 index 0000000..456fcf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/sun/test_sun.html @@ -0,0 +1,135 @@ + + + + +Dojo Sun + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      +
                                      +
                                      +
                                      Tooltips
                                      +
                                      Gradients
                                      +
                                      Circles
                                      +
                                      +
                                      +
                                      Day # +
                                      +
                                      +
                                      +
                                      Time +
                                      +
                                      +
                                      +
                                      + + + + + + +
                                      + +   +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_bench.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_bench.html new file mode 100644 index 0000000..3f80f35 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_bench.html @@ -0,0 +1,282 @@ + + + + +Dojo OpenLayers Benchmarks + + + + + + + + + + + + + + + + + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_gfx.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_gfx.html new file mode 100644 index 0000000..4f9c318 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_gfx.html @@ -0,0 +1,165 @@ + + + + +GFX Layer + + + + + + + + + + + + + + + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_gfx2.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_gfx2.html new file mode 100644 index 0000000..0d6853b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_gfx2.html @@ -0,0 +1,219 @@ + + + + +GFX Layer. Random Stars on a Map + + + + + + + + + + + + + + + + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_resize.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_resize.html new file mode 100644 index 0000000..b6523b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_resize.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      + +
                                      +
                                      + +
                                      + +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      + +
                                      +
                                      +
                                      + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_widget.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_widget.html new file mode 100644 index 0000000..2dd3fd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/test_widget.html @@ -0,0 +1,100 @@ + + + + +Widget + + + + + + + + + + + + + + + + + + + + +
                                      + +
                                      + +
                                      + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/widgetFeature/test_widgetFeature.html b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/widgetFeature/test_widgetFeature.html new file mode 100644 index 0000000..ceafa77 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/tests/widgetFeature/test_widgetFeature.html @@ -0,0 +1,350 @@ + + + + +Dojo Widget Feature + + + + + + + + + + + + + + + +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/geo/openlayers/widget/Map.js b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/widget/Map.js new file mode 100644 index 0000000..8d086e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/geo/openlayers/widget/Map.js @@ -0,0 +1,160 @@ +define(["dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/html", + "dojo/query", + "dijit/_Widget", + "dojox/geo/openlayers/Map", + "dojox/geo/openlayers/Layer", + "dojox/geo/openlayers/GfxLayer"], function(dojo, declare, array, html, query, Widget, Map, Layer, GfxLayer){ + /*===== + var Widget = dijit.Widget; + =====*/ + return declare("dojox.geo.openlayers.widget.Map", Widget, { + // summary: + // A widget version of the `dojox.geo.openlayers.Map` component. + // description: + // The `dojox.geo.openlayers.widget.Map` widget is the widget + // version of the `dojox.geo.openlayers.Map` component. + // With this widget, user can specify some attributes in the markup suach as + // + // * `baseLayerType`: The type of the base layer. Permitted values are + // * `initialLocation`: The initial location as for the dojox.geo.openlayers.Map.fitTo method + // * `touchHandler`: Tells if we attach touch handler or not. + // + // example: + // + // |
                                      + // + + // summay: + // Base layer type as defined in `dojox.geo.openlayer.BaseLayerType + // description: + // baseLayerType can be either + // * `OSM` + // * `WMS` + // * `Google` + // * `VirtualEarth` + // * `Yahoo` + // * `ArcGIS` + // baseLayerType : String + // Base layer type property. + baseLayerType : dojox.geo.openlayers.BaseLayerType.OSM, + + // summary: + // The part of the map shown at startup time. + // description: + // initial location is the string description of the location shown at + // startup time. Format is the same as for the `dojox.geo.openlayers.widget.Map.fitTo` + // method. + // | { + // | bounds : [ulx, uly, lrx, lry] + // | } + // The map is fit on the specified bounds expressed as decimal degrees latitude and longitude. + // The bounds are defined with their upper left and lower right corners coordinates. + // + // | { + // | position : [longitude, latitude], + // | extent : degrees + // | } + // The map is fit on the specified position showing the extent around + // the specified center position. + initialLocation : null, + + // summary: + // Tells if the touch handler should be attached to the map or not. + // description: + // Tells if the touch handler should be attached to the map or not. + // Touch handler handles touch events so that the widget can be used + // on mobile applications. + touchHandler : false, + + // summary: + // The underlying `dojox.geo.openlayers.Map` object. + // This is s readonly member. + map : null, + + startup : function(){ + // summary: + // Processing after the DOM fragment is added to the document + this.inherited(arguments); + this.map.initialFit({ + initialLocation : this.initialLocation + }); + }, + + buildRendering : function(){ + // summary: + // Construct the UI for this widget, creates the real dojox.geo.openlayers.Map object. + // tags: + // protected + this.inherited(arguments); + var div = this.domNode; + var map = new Map(div, { + baseLayerType : this.baseLayerType, + touchHandler : this.touchHandler + }); + this.map = map; + + this._makeLayers(); + }, + + _makeLayers : function(){ + // summary: + // Creates layers defined as markup. + // tags: + // private + var n = this.domNode; + var layers = /* ?? query. */query("> .layer", n); + array.forEach(layers, function(l){ + var type = l.getAttribute("type"); + var name = l.getAttribute("name"); + var cls = "dojox.geo.openlayers." + type; + var p = dojo.getObject(cls); + if (p) { + var layer = new p(name, {}); + if (layer) + this.map.addLayer(layer); + } + }, this); + }, + + resize : function(b){ + // summary: + // Resize the widget. + // description: + // Resize the domNode and the widget to the dimensions of a box of the following form: + // `{ l: 50, t: 200, w: 300: h: 150 }` + // b: undefined | Box | width, height + // If passed, denotes the new size of the widget. + // Can be either nothing (widget adapts to the div), + // a box, or a width and a height. + + var olm = this.map.getOLMap(); + + var box; + switch (arguments.length) { + case 0: + // case 0, do not resize the div, just the surface + break; + case 1: + // argument, override node box + box = dojo.mixin({}, b); + dojo.marginBox(olm.div, box); + break; + case 2: + // two argument, width, height + box = { + w : arguments[0], + h : arguments[1] + }; + dojo.marginBox(olm.div, box); + break; + } + olm.updateSize(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/Base.js b/js/dojo-release-1.7.2-src/dojox/gesture/Base.js new file mode 100644 index 0000000..65aeed0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/Base.js @@ -0,0 +1,371 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/lang", + "dojo/dom", + "dojo/on", + "dojo/touch", + "dojo/has", + "../main" +], function(kernel, declare, array, lang, dom, on, touch, has, dojox){ + // module: + // dojox/gesture/Base + // summary: + // This module provides an abstract parental class for various gesture implementations. + +/*===== + dojox.gesture.Base = { + // summary: + // An abstract parental class for various gesture implementations. + // + // It's mainly responsible for: + // + // 1. Binding on() listening handlers for supported gesture events. + // + // 2. Monitoring underneath events and process different phases - 'press'|'move'|'release'|'cancel'. + // + // 3. Firing and bubbling gesture events with on() API. + // + // A gesture implementation only needs to extend this class and overwrite appropriate phase handlers: + // + // - press()|move()|release()|cancel for recognizing and firing gestures + // + // example: + // 1. A typical gesture implementation. + // + // Suppose we have dojox/gesture/a which provides 3 gesture events:"a", "a.x", "a.y" to be used as: + // | dojo.connect(node, dojox.gesture.a, function(e){}); + // | dojo.connect(node, dojox.gesture.a.x, function(e){}); + // | dojo.connect(node, dojox.gesture.a.y, function(e){}); + // + // The definition of the gesture "a" may look like: + // | define([..., "./Base"], function(..., Base){ + // | var clz = declare(Base, { + // | defaultEvent: "a", + // | + // | subEvents: ["x", "y"], + // | + // | press: function(data, e){ + // | this.fire(node, {type: "a.x", ...}); + // | }, + // | move: function(data, e){ + // | this.fire(node, {type: "a.y", ...}); + // | }, + // | release: function(data, e){ + // | this.fire(node, {type: "a", ...}); + // | }, + // | cancel: function(data, e){ + // | // clean up + // | } + // | }); + // | + // | // in order to have a default instance for handy use + // | dojox.gesture.a = new clz(); + // | + // | // so that we can create new instances like + // | // var mine = new dojox.gesture.a.A({...}) + // | dojox.gesture.a.A = clz; + // | + // | return dojox.gesture.a; + // | }); + // + // 2. A gesture can be used in the following ways(taking dojox.gestre.tap for example): + // + // A. Used with dojo.connect() + // | dojo.connect(node, dojox.gesture.tap, function(e){}); + // | dojo.connect(node, dojox.gesture.tap.hold, function(e){}); + // | dojo.connect(node, dojox.gesture.tap.doubletap, function(e){}); + // + // B. Used with dojo.on + // | define(["dojo/on", "dojox/gesture/tap"], function(on, tap){ + // | on(node, tap, function(e){}); + // | on(node, tap.hold, function(e){}); + // | on(node, tap.doubletap, function(e){}); + // + // C. Used with dojox.gesture.tap directly + // | dojox.gesture.tap(node, function(e){}); + // | dojox.gesture.tap.hold(node, function(e){}); + // | dojox.gesture.tap.doubletap(node, function(e){}); + // + // Though there is always a default gesture instance after being required, e.g + // | require(["dojox/gesture/tap"], function(){...}); + // + // It's possible to create a new one with different parameter setting: + // | var myTap = new dojox.gesture.tap.Tap({holdThreshold: 300}); + // | dojo.connect(node, myTap, function(e){}); + // | dojo.connect(node, myTap.hold, function(e){}); + // | dojo.connect(node, myTap.doubletap, function(e){}); + // + // Please refer to dojox/gesture/ for more gesture usages + }; +=====*/ + kernel.experimental("dojox.gesture.Base"); + + lang.getObject("gesture", true, dojox); + + // Declare an internal anonymous class which will only be exported by module return value + return declare(/*===== "dojox.gesture.Base", =====*/null, { + + // defaultEvent: [readonly] String + // Default event e.g. 'tap' is a default event of dojox.gesture.tap + defaultEvent: " ", + + // subEvents: [readonly] Array + // A list of sub events e.g ['hold', 'doubletap'], + // used by being combined with defaultEvent like 'tap.hold', 'tap.doubletap' etc. + subEvents: [], + + // touchOnly: boolean + // Whether the gesture is touch-device only + touchOnly : false, + + // _elements: Array + // List of elements that wraps target node and gesture data + _elements: null, + + /*===== + // _lock: Dom + // The dom node whose descendants are all locked for processing + _lock: null, + + // _events: [readonly] Array + // The complete list of supported gesture events with full name space + // e.g ['tap', 'tap.hold', 'tap.doubletap'] + _events: null, + =====*/ + + constructor: function(args){ + lang.mixin(this, args); + this.init(); + }, + init: function(){ + // summary: + // Initialization works + this._elements = []; + + if(!has("touch") && this.touchOnly){ + console.warn("Gestures:[", this.defaultEvent, "] is only supported on touch devices!"); + return; + } + + // bind on() handlers for various events + var evt = this.defaultEvent; + this.call = this._handle(evt); + + this._events = [evt]; + array.forEach(this.subEvents, function(subEvt){ + this[subEvt] = this._handle(evt + '.' + subEvt); + this._events.push(evt + '.' + subEvt); + }, this); + }, + _handle: function(/*String*/eventType){ + // summary: + // Bind listen handler for the given gesture event(e.g. 'tap', 'tap.hold' etc.) + // the returned handle will be used internally by dojo/on + var self = this; + //called by dojo/on + return function(node, listener){ + // normalize, arguments might be (null, node, listener) + var a = arguments; + if(a.length > 2){ + node = a[1]; + listener = a[2]; + } + var isNode = node && (node.nodeType || node.attachEvent || node.addEventListener); + if(!isNode){ + return on(node, eventType, listener); + }else{ + var onHandle = self._add(node, eventType, listener); + // FIXME - users are supposed to explicitly call either + // disconnect(signal) or signal.remove() to release resources + var signal = { + remove: function(){ + onHandle.remove(); + self._remove(node, eventType); + } + }; + return signal; + } + }; // dojo/on handle + }, + _add: function(/*Dom*/node, /*String*/type, /*function*/listener){ + // summary: + // Bind dojo/on handlers for both gesture event(e.g 'tab.hold') + // and underneath 'press'|'move'|'release' events + var element = this._getGestureElement(node); + if(!element){ + // the first time listening to the node + element = { + target: node, + data: {}, + handles: {} + }; + + var _press = lang.hitch(this, "_process", element, "press"); + var _move = lang.hitch(this, "_process", element, "move"); + var _release = lang.hitch(this, "_process", element, "release"); + var _cancel = lang.hitch(this, "_process", element, "cancel"); + + var handles = element.handles; + if(this.touchOnly){ + handles.press = on(node, 'touchstart', _press); + handles.move = on(node, 'touchmove', _move); + handles.release = on(node, 'touchend', _release); + handles.cancel = on(node, 'touchcancel', _cancel); + }else{ + handles.press = touch.press(node, _press); + handles.move = touch.move(node, _move); + handles.release = touch.release(node, _release); + handles.cancel = touch.cancel(node, _cancel); + } + this._elements.push(element); + } + // track num of listeners for the gesture event - type + // so that we can release element if no more gestures being monitored + element.handles[type] = !element.handles[type] ? 1 : ++element.handles[type]; + + return on(node, type, listener); //handle + }, + _getGestureElement: function(/*Dom*/node){ + // summary: + // Obtain a gesture element for the give node + var i = 0, element; + for(; i < this._elements.length; i++){ + element = this._elements[i]; + if(element.target === node){ + return element; + } + } + }, + _process: function(element, phase, e){ + // summary: + // Process and dispatch to appropriate phase handlers. + // Also provides the machinery for managing gesture bubbling. + // description: + // 1. e._locking is used to make sure only the most inner node + // will be processed for the same gesture, suppose we have: + // | on(inner, dojox.gesture.tap, func1); + // | on(outer, dojox.gesture.tap, func2); + // only the inner node will be processed by tap gesture, once matched, + // the 'tap' event will be bubbled up from inner to outer, dojo.StopEvent(e) + // can be used at any level to stop the 'tap' event. + // + // 2. Once a node starts being processed, all it's descendant nodes will be locked. + // The same gesture won't be processed on its descendant nodes until the lock is released. + // element: Object + // Gesture element + // phase: String + // Phase of a gesture to be processed, might be 'press'|'move'|'release'|'cancel' + // e: Event + // Native event + e._locking = e._locking || {}; + if(e._locking[this.defaultEvent] || this.isLocked(e.currentTarget)){ + return; + } + // invoking gesture.press()|move()|release()|cancel() + e.preventDefault(); + e._locking[this.defaultEvent] = true; + this[phase](element.data, e); + }, + press: function(data, e){ + // summary: + // Process the 'press' phase of a gesture + }, + move: function(data, e){ + // summary: + // Process the 'move' phase of a gesture + }, + release: function(data, e){ + // summary: + // Process the 'release' phase of a gesture + }, + cancel: function(data, e){ + // summary: + // Process the 'cancel' phase of a gesture + }, + fire: function(node, event){ + // summary: + // Fire a gesture event and invoke registered listeners + // a simulated GestureEvent will also be sent along + // node: DomNode + // Target node to fire the gesture + // event: Object + // An object containing specific gesture info e.g {type: 'tap.hold'|'swipe.left'), ...} + // all these properties will be put into a simulated GestureEvent when fired. + // Note - Default properties in a native Event won't be overwritten, see on.emit() for more details. + if(!node || !event){ + return; + } + event.bubbles = true; + event.cancelable = true; + on.emit(node, event.type, event); + }, + _remove: function(/*Dom*/node, /*String*/type){ + // summary: + // Check and remove underneath handlers if node + // is not being listened for 'this' gesture anymore, + // this happens when user removed all previous on() handlers. + var element = this._getGestureElement(node); + if(!element || !element.handles){ return; } + + element.handles[type]--; + + var handles = element.handles; + if(!array.some(this._events, function(evt){ + return handles[evt] > 0; + })){ + // clean up if node is not being listened anymore + this._cleanHandles(handles); + var i = array.indexOf(this._elements, element); + if(i >= 0){ + this._elements.splice(i, 1); + } + } + }, + _cleanHandles: function(/*Object*/handles){ + // summary: + // Clean up on handles + for(var x in handles){ + //remove handles for "press"|"move"|"release"|"cancel" + if(handles[x].remove){ + handles[x].remove(); + } + delete handles[x]; + } + }, + lock: function(/*Dom*/node){ + // summary: + // Lock all descendants of the node. + // tags: + // protected + this._lock = node; + }, + unLock: function(){ + // summary: + // Release the lock + // tags: + // protected + this._lock = null; + }, + isLocked: function(node){ + // summary: + // Check if the node is locked, isLocked(node) means + // whether it's a descendant of the currently locked node. + // tags: + // protected + if(!this._lock || !node){ + return false; + } + return this._lock !== node && dom.isDescendant(node, this._lock); + }, + destroy: function(){ + // summary: + // Release all handlers and resources + array.forEach(this._elements, function(element){ + this._cleanHandles(element.handles); + }, this); + this._elements = null; + } + }); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/README b/js/dojo-release-1.7.2-src/dojox/gesture/README new file mode 100644 index 0000000..0a70194 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/README @@ -0,0 +1,39 @@ +------------------------------------------------------------------------------- +dojox.gesture +------------------------------------------------------------------------------- +Version 1.00 +Release date: 10/01/2011 +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Evan(Wei Huang) (evanhuangwei@gmail.com) + Si Qi Zhong (zhongsq@cn.ibm.com) + Eduardo Abe (eabe@us.ibm.com) + Qi Ruan (rqruanqi@cn.ibm.com) + He Gu Yi (heguyi@cn.ibm.com) +------------------------------------------------------------------------------- +Project description + +Provide device neutral gestures that can be used on either touch devices or +desktops, a machinery is also implemented for extending with more 3rd party gestures. + +------------------------------------------------------------------------------- +Dependencies: + +Dojo Core +------------------------------------------------------------------------------- +Documentation + +[TODO] + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/gesture/* + +Install into the following directory structure: +/dojox/gesture/ +------------------------------------------------------------------------------- \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/swipe.js b/js/dojo-release-1.7.2-src/dojox/gesture/swipe.js new file mode 100644 index 0000000..3b27d08 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/swipe.js @@ -0,0 +1,143 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "./Base", + "../main" +], function(kernel, declare, Base, dojox){ +// module: +// dojox/gesture/swipe + +/*===== + dojox.gesture.swipe = { + // summary: + // This module provides swipe gestures including: + // + // 1. dojox.gesture.swipe + // + // A series of 'swipe' will be fired during touchmove, this will mostly + // be used to keep sliding the Dom target based on the swiped distance(dx, dy). + // + // 2. dojox.gesture.swipe.end + // + // Fired when a swipe is ended so that an bounce animation may be applied + // to the dom target sliding to the final position. + // + // Following information will be included in the fired swipe events: + // + // 1. type: 'swipe'|'swipe.end' + // + // 2. time: an integer indicating the delta time(in milliseconds) + // + // 3. dx: delta distance on X axis, dx less than 0 - moving left, dx larger than 0 - moving right + // + // 4. dy: delta distance on Y axis, dy less than 0 - moving up, dY larger than 0 - moving down + // + // Note - dx and dy can also be used together for a hybrid swipe(both vertically and horizontally) + // + // example: + // A. Used with dojo.connect() + // | dojo.connect(node, dojox.gesture.swipe, function(e){}); + // | dojo.connect(node, dojox.gesture.swipe.end, function(e){}); + // + // B. Used with dojo.on + // | define(['dojo/on', 'dojox/gesture/swipe'], function(on, swipe){ + // | on(node, swipe, function(e){}); + // | on(node, swipe.end, function(e){}); + // + // C. Used with dojox.gesture.swipe.* directly + // | dojox.gesture.swipe(node, function(e){}); + // | dojox.gesture.swipe.end(node, function(e){}); + }; +=====*/ + +kernel.experimental("dojox.gesture.swipe"); + +// Declare an internal anonymous class which will only be exported +// by module return value e.g. dojox.gesture.swipe.Swipe +var clz = declare(/*===== "dojox.gesture.swipe", =====*/Base, { + + // defaultEvent: [readonly] String + // Default event - 'swipe' + defaultEvent: "swipe", + + // subEvents: [readonly] Array + // List of sub events, used by + // being combined with defaultEvent as 'swipe.end' + subEvents: ["end"], + + press: function(/*Object*/data, /*Event*/e){ + // summary: + // Overwritten, set initial swipe info + if(e.touches && e.touches.length >= 2){ + //currently only support single-touch swipe + delete data.context; + return; + } + if(!data.context){ + data.context = {x: 0, y: 0, t: 0}; + } + data.context.x = e.screenX; + data.context.y = e.screenY; + data.context.t = new Date().getTime(); + this.lock(e.currentTarget); + }, + move: function(/*Object*/data, /*Event*/e){ + // summary: + // Overwritten, fire matched 'swipe' during touchmove + this._recognize(data, e, "swipe"); + }, + release: function(/*Object*/data, /*Event*/e){ + // summary: + // Overwritten, fire matched 'swipe.end' when touchend + this._recognize(data, e, "swipe.end"); + delete data.context; + this.unLock(); + }, + cancel: function(data, e){ + // summary: + // Overwritten + delete data.context; + this.unLock(); + }, + _recognize: function(/*Object*/data, /*Event*/e, /*String*/type){ + // summary: + // Recognize and fire appropriate gesture events + if(!data.context){ + return; + } + var info = this._getSwipeInfo(data, e); + if(!info){ + // no swipe happened + return; + } + info.type = type; + this.fire(e.target, info); + }, + _getSwipeInfo: function(/*Object*/data, /*Event*/e){ + // summary: + // Calculate swipe information - time, dx and dy + var dx, dy, info = {}, startData = data.context; + + info.time = new Date().getTime() - startData.t; + + dx = e.screenX - startData.x; + dy = e.screenY - startData.y; + + if(dx === 0 && dy === 0){ + // no swipes happened + return null; + } + info.dx = dx; + info.dy = dy; + return info; + } +}); + +// the default swipe instance for handy use +dojox.gesture.swipe = new clz(); +// Class for creating a new Swipe instance +dojox.gesture.swipe.Swipe = clz; + +return dojox.gesture.swipe; + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/tap.js b/js/dojo-release-1.7.2-src/dojox/gesture/tap.js new file mode 100644 index 0000000..a130dd6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/tap.js @@ -0,0 +1,144 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "./Base", + "../main" +], function(kernel, declare, lang, Base, dojox){ +// module: +// dojox/gesture/tap + +/*===== + dojox.gesture.tap = { + // summary: + // This module provides tap gesture event handlers: + // + // 1. dojox.gesture.tap: 'tap' event + // + // 2. dojox.gesture.tap.hold: 'tap.hold' event + // + // 3. dojox.gesture.tap.doubletap: 'tap.doubletap' event + // + // example: + // A. Used with dojo.connect() + // | dojo.connect(node, dojox.gesture.tap, function(e){}); + // | dojo.connect(node, dojox.gesture.tap.hold, function(e){}); + // | dojo.connect(node, dojox.gesture.tap.doubletap, function(e){}); + // + // B. Used with dojo.on + // | define(['dojo/on', 'dojox/gesture/tap'], function(on, tap){ + // | on(node, tap, function(e){}); + // | on(node, tap.hold, function(e){}); + // | on(node, tap.doubletap, function(e){}); + // + // C. Used with dojox.gesture.tap.* directly + // | dojox.gesture.tap(node, function(e){}); + // | dojox.gesture.tap.hold(node, function(e){}); + // | dojox.gesture.tap.doubletap(node, function(e){}); + // + // Though there is always a default gesture instance after being required, e.g + // | require(['dojox/gesture/tap'], function(){...}); + // + // It's possible to create a new one with different parameter setting: + // | var myTap = new dojox.gesture.tap.Tap({holdThreshold: 300}); + // | dojo.connect(node, myTap, function(e){}); + // | dojo.connect(node, myTap.hold, function(e){}); + // | dojo.connect(node, myTap.doubletap, function(e){}); + }; +=====*/ + +kernel.experimental("dojox.gesture.tap"); + +// Declare an internal anonymous class which will only be exported +// by module return value e.g. dojox.gesture.tap.Tap +var clz = declare(/*===== "dojox.gesture.tap", =====*/Base, { + // defaultEvent: [readonly] String + // Default event - 'tap' + defaultEvent: "tap", + + // subEvents: [readonly] Array + // List of sub events, used by being + // combined with defaultEvent as 'tap.hold', 'tap.doubletap'. + subEvents: ["hold", "doubletap"], + + // holdThreshold: Integer + // Threshold(in milliseconds) for 'tap.hold' + holdThreshold: 500, + + // holdThreshold: Integer + // Timeout (in milliseconds) for 'tap.doubletap' + doubleTapTimeout: 250, + + // tapRadius: Integer + // Valid tap radius from previous touch point + tapRadius: 10, + + press: function(/*Object*/data, /*Event*/e){ + // summary: + // Overwritten, record initial tap info and register a timeout checker for 'tap.hold' + if(e.touches && e.touches.length >= 2){ + //tap gesture is only for single touch + delete data.context; + return; + } + var target = e.target; + this._initTap(data, e); + data.tapTimeOut = setTimeout(lang.hitch(this, function(){ + if(this._isTap(data, e)){ + this.fire(target, {type: "tap.hold"}); + } + delete data.context; + }), this.holdThreshold); + }, + release: function(/*Object*/data, /*Event*/e){ + // summary: + // Overwritten, fire matched 'tap' or 'tap.doubletap' during touchend + if(!data.context){ + clearTimeout(data.tapTimeOut); + return; + } + if(this._isTap(data, e)){ + switch(data.context.c){ + case 1: + this.fire(e.target, {type: "tap"}); + break; + case 2: + this.fire(e.target, {type: "tap.doubletap"}); + break; + } + } + clearTimeout(data.tapTimeOut); + }, + _initTap: function(/*Object*/data, /*Event*/e){ + // summary: + // Update the gesture data with new tap info + if(!data.context){ + data.context = {x: 0, y: 0, t: 0, c: 0}; + } + var ct = new Date().getTime(); + if(ct - data.context.t <= this.doubleTapTimeout){ + data.context.c++; + }else{ + data.context.c = 1; + data.context.x = e.screenX; + data.context.y = e.screenY; + } + data.context.t = ct; + }, + _isTap: function(/*Object*/data, /*Event*/e){ + // summary: + // Check whether it's an valid tap + var dx = Math.abs(data.context.x - e.screenX); + var dy = Math.abs(data.context.y - e.screenY); + return dx <= this.tapRadius && dy <= this.tapRadius; + } +}); + +// the default tap instance for handy use +dojox.gesture.tap = new clz(); +// Class for creating a new Tap instance +dojox.gesture.tap.Tap = clz; + +return dojox.gesture.tap; + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/bubble.html b/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/bubble.html new file mode 100644 index 0000000..e7e3d71 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/bubble.html @@ -0,0 +1,169 @@ + + + + + dojox.gesture bubbling Unit Test + + + + + +
                                      + outer
                                      inner
                                      +
                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/swipe.html b/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/swipe.html new file mode 100644 index 0000000..07ea44f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/swipe.html @@ -0,0 +1,100 @@ + + + + + dojox.gesture.swipe Unit Test + + + + + +
                                      + outer
                                      inner
                                      +
                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/tap.html b/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/tap.html new file mode 100644 index 0000000..eca13f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/tests/doh/tap.html @@ -0,0 +1,137 @@ + + + + + dojox.gesture.tap Unit Test + + + + + +
                                      + outer
                                      inner
                                      +
                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/tests/module.js b/js/dojo-release-1.7.2-src/dojox/gesture/tests/module.js new file mode 100644 index 0000000..0873caf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/tests/module.js @@ -0,0 +1,9 @@ +dojo.provide('dojox.gesture.tests.module'); + +try { + doh.registerUrl('dojox.gesture.tests.tap', dojo.moduleUrl('dojox.gesture.tests', 'doh/tap.html')); + doh.registerUrl('dojox.gesture.tests.swipe', dojo.moduleUrl('dojox.gesture.tests', 'doh/swipe.html')); + doh.registerUrl('dojox.gesture.tests.bubble', dojo.moduleUrl('dojox.gesture.tests', 'doh/bubble.html')); +}catch (e) { + doh.debug(e); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/gesture/tests/runTests.html new file mode 100644 index 0000000..868e948 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/tests/runTests.html @@ -0,0 +1,11 @@ + + + + Gesture Unit Test Runner + + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/gesture/tests/test_gesture.html b/js/dojo-release-1.7.2-src/dojox/gesture/tests/test_gesture.html new file mode 100644 index 0000000..6fb3ca4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gesture/tests/test_gesture.html @@ -0,0 +1,94 @@ + + + + + + Dojo Gesture Testing + + + + + +
                                      + outer
                                      inner
                                      +
                                      +
                                      +
                                      +
                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gfx.js b/js/dojo-release-1.7.2-src/dojox/gfx.js new file mode 100644 index 0000000..ebb9182 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx.js @@ -0,0 +1,9 @@ +define(["dojo/_base/lang", "./gfx/_base", "./gfx/renderer!"], + function(lang, gfxBase, renderer){ + // module: + // dojox/gfx + // summary: + // This the root of the Dojo Graphics package + gfxBase.switchTo(renderer); + return gfxBase; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/Moveable.js b/js/dojo-release-1.7.2-src/dojox/gfx/Moveable.js new file mode 100644 index 0000000..2e3689f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/Moveable.js @@ -0,0 +1,98 @@ +define(["dojo/_base/lang","dojo/_base/declare","dojo/_base/array","dojo/_base/event","dojo/_base/connect", + "dojo/dom-class","dojo/_base/window","./Mover"], + function(lang,declare,arr,event,connect,domClass,win,Mover){ + return declare("dojox.gfx.Moveable", null, { + constructor: function(shape, params){ + // summary: an object, which makes a shape moveable + // shape: dojox.gfx.Shape: a shape object to be moved + // params: Object: an optional object with additional parameters; + // following parameters are recognized: + // delay: Number: delay move by this number of pixels + // mover: Object: a constructor of custom Mover + this.shape = shape; + this.delay = (params && params.delay > 0) ? params.delay : 0; + this.mover = (params && params.mover) ? params.mover : Mover; + this.events = [ + this.shape.connect("onmousedown", this, "onMouseDown") + // cancel text selection and text dragging + //, dojo.connect(this.handle, "ondragstart", dojo, "stopEvent") + //, dojo.connect(this.handle, "onselectstart", dojo, "stopEvent") + ]; + }, + + // methods + destroy: function(){ + // summary: stops watching for possible move, deletes all references, so the object can be garbage-collected + arr.forEach(this.events, this.shape.disconnect, this.shape); + this.events = this.shape = null; + }, + + // mouse event processors + onMouseDown: function(e){ + // summary: event processor for onmousedown, creates a Mover for the shape + // e: Event: mouse event + if(this.delay){ + this.events.push( + this.shape.connect("onmousemove", this, "onMouseMove"), + this.shape.connect("onmouseup", this, "onMouseUp")); + this._lastX = e.clientX; + this._lastY = e.clientY; + }else{ + new this.mover(this.shape, e, this); + } + event.stop(e); + }, + onMouseMove: function(e){ + // summary: event processor for onmousemove, used only for delayed drags + // e: Event: mouse event + if(Math.abs(e.clientX - this._lastX) > this.delay || Math.abs(e.clientY - this._lastY) > this.delay){ + this.onMouseUp(e); + new this.mover(this.shape, e, this); + } + event.stop(e); + }, + onMouseUp: function(e){ + // summary: event processor for onmouseup, used only for delayed delayed drags + // e: Event: mouse event + this.shape.disconnect(this.events.pop()); + this.shape.disconnect(this.events.pop()); + }, + + // local events + onMoveStart: function(/* dojox.gfx.Mover */ mover){ + // summary: called before every move operation + connect.publish("/gfx/move/start", [mover]); + domClass.add(win.body(), "dojoMove"); + }, + onMoveStop: function(/* dojox.gfx.Mover */ mover){ + // summary: called after every move operation + connect.publish("/gfx/move/stop", [mover]); + domClass.remove(win.body(), "dojoMove"); + }, + onFirstMove: function(/* dojox.gfx.Mover */ mover){ + // summary: called during the very first move notification, + // can be used to initialize coordinates, can be overwritten. + + // default implementation does nothing + }, + onMove: function(/* dojox.gfx.Mover */ mover, /* Object */ shift){ + // summary: called during every move notification, + // should actually move the node, can be overwritten. + this.onMoving(mover, shift); + this.shape.applyLeftTransform(shift); + this.onMoved(mover, shift); + }, + onMoving: function(/* dojox.gfx.Mover */ mover, /* Object */ shift){ + // summary: called before every incremental move, + // can be overwritten. + + // default implementation does nothing + }, + onMoved: function(/* dojox.gfx.Mover */ mover, /* Object */ shift){ + // summary: called after every incremental move, + // can be overwritten. + + // default implementation does nothing + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/Mover.js b/js/dojo-release-1.7.2-src/dojox/gfx/Mover.js new file mode 100644 index 0000000..bec60a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/Mover.js @@ -0,0 +1,59 @@ +define(["dojo/_base/lang","dojo/_base/array", "dojo/_base/declare", "dojo/_base/connect", "dojo/_base/event"], + function(lang,arr,declare,connect,evt){ + return declare("dojox.gfx.Mover", null, { + constructor: function(shape, e, host){ + // summary: an object, which makes a shape follow the mouse, + // used as a default mover, and as a base class for custom movers + // shape: dojox.gfx.Shape: a shape object to be moved + // e: Event: a mouse event, which started the move; + // only clientX and clientY properties are used + // host: Object?: object which implements the functionality of the move, + // and defines proper events (onMoveStart and onMoveStop) + this.shape = shape; + this.lastX = e.clientX + this.lastY = e.clientY; + var h = this.host = host, d = document, + firstEvent = connect.connect(d, "onmousemove", this, "onFirstMove"); + this.events = [ + connect.connect(d, "onmousemove", this, "onMouseMove"), + connect.connect(d, "onmouseup", this, "destroy"), + // cancel text selection and text dragging + connect.connect(d, "ondragstart", evt, "stop"), + connect.connect(d, "onselectstart", evt, "stop"), + firstEvent + ]; + // notify that the move has started + if(h && h.onMoveStart){ + h.onMoveStart(this); + } + }, + // mouse event processors + onMouseMove: function(e){ + // summary: event processor for onmousemove + // e: Event: mouse event + var x = e.clientX; + var y = e.clientY; + this.host.onMove(this, {dx: x - this.lastX, dy: y - this.lastY}); + this.lastX = x; + this.lastY = y; + evt.stop(e); + }, + // utilities + onFirstMove: function(){ + // summary: it is meant to be called only once + this.host.onFirstMove(this); + connect.disconnect(this.events.pop()); + }, + destroy: function(){ + // summary: stops the move, deletes all references, so the object can be garbage-collected + arr.forEach(this.events, connect.disconnect); + // undo global settings + var h = this.host; + if(h && h.onMoveStop){ + h.onMoveStop(this); + } + // destroy objects + this.events = this.shape = null; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/README b/js/dojo-release-1.7.2-src/dojox/gfx/README new file mode 100644 index 0000000..485f628 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/README @@ -0,0 +1,109 @@ +------------------------------------------------------------------------------- +dojox.gfx +------------------------------------------------------------------------------- +Version 1.100 +Release date: 08/01/2006 +------------------------------------------------------------------------------- +Project state: +SVG renderer: production +VML renderer: production +Silverlight renderer: beta +HTMLCanvas renderer: beta +SVGWeb integration: experimental +------------------------------------------------------------------------------- +Credits + Eugene Lazutkin (eugene.lazutkin@gmail.com) + Kun Xi (bookstack@gmail.com) + Chris Mitchell (ccmitchellusa@gmail.com) HTML Canvas + Yang Li () SVGWeb integration +------------------------------------------------------------------------------- +Project description + +Implementation of simple portable 2D graphics library. +------------------------------------------------------------------------------- +Dependencies: + +Dojo Core +------------------------------------------------------------------------------- +Documentation + +Currently it can be found here: http://docs.google.com/Doc?id=d764479_1hnb2tn + +HTMLCanvas Renderer Status + +To use canvas rendering, insert 'canvas' at the beginning of the gfxRenderers list in your +djConfig, for example: + +canvas currently will only render on non-IE browsers (see dojox/gfx.js for where the renderer is loaded); +although it should be possible to use an IE canvas implementation (like Google's); however, it will be very slow. + +The following tests can be made to work with HTML Canvas with minor testcase modification: +dojox/gfx/tests + test_gfx.html-Bugs #1 + test_arc.html + test_bezier.html + test_pattern.html + test_gradient.html + test_linearGradient.html + test_image1.html - Limitation #3 + test_transform.html - Bug #1 + test_poly.html - Bug #1 +dojox/gfx/demos + butterfly.html - Bug #1 + lion.html - Bug #1 + tiger.html - Bug #1 + circles.html - No event processing yet :( + creator.html +dojox/chart + test_pie2d.html - Dojo Charts on iPhone anyone? :) + test_chart2d.html - + + // To make charts work, the following line needs to be added to the end of the + // Chart2D.js render() method (prior to return) + if(this.surface.render){this.surface.render()}; + +Known Limitations: +1) event handling- plan is to capture all events at canvas, perform intersect/hit + tests (not implemented) against scene graph, then propogate event to top-most + intersected shape. HtmlCanvas shape need intersectsStroke and intersectsBounds, + and intersects (region). +2) SVG and VML are "live" scene graphs; eg. any state change to objects in the + scene automatically get rendered in next engine render pass. For canvas, it's + procedural, and current implementation requires application to call surface.render() + whenever scene needs to be updated. Plan is to do dirty region checking based + on bounding boxes (currently not properly computed), and track dirty areas anytime + state changes (invalidate) separate from render phase. + Add the following call where changes to the scene graph are complete and you want to + render: + + if (surface.render){surface.render();} + +4) Text/Text Paths - Text shape is implemented using DIV overlays. Many text styles are not + applied, and outline/fills are not possible. This is due to limitations in Canvas spec. + Firefox 3.0 has proprietary text functions that we could test for and use once FF3 is out. + No luck on Safari. +3) No Image skewing - Limitation of Canvas + +Known Bugs: +1) Matrix xformations (applied from root to shape leaf nodes) not quite right--but very close. + Canvas does not have a built in transformation function that allows skewing. Need to + track skew matrix with Shape, and perform other trans/rot/scale transformations without + using canvas transform functions. + +SVGWeb Integration Status + +See README-svgweb. + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/gfx.js +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/gfx/* + +Install into the following directory structure: +/dojox/gfx/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/README-svgweb b/js/dojo-release-1.7.2-src/dojox/gfx/README-svgweb new file mode 100644 index 0000000..f701bb3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/README-svgweb @@ -0,0 +1,98 @@ +NOTICE of 3rd party code included +================================= +For ease of testing, latest SVGWeb release is included, see +dojox/gfx/tests/svgweb/README for details. + + +============================================================ +Enable or disable the SVGWeb with dojo gfx +------------------------------------------------------------ + +The function is only enabled when SVGWeb JS is included and the gfx renderer is +'svg'. If either SVGWeb is not available or the renderer is not 'svg', dojox.gfx +works as usual. + +To enable SVGWeb with dojo gfx: + +1. Include SVGWeb JS at the FIRST of all your javascripts + + + + +2. Force 'svg' renderer with the 'forceGfxRenderer' config + + + + +============================================================ +Test dojo gfx + SVGWeb +------------------------------------------------------------ + +All SVGWeb-specific tests are in dojox/gfx/tests/svgweb. + +============================================================ +GFX Performance Test Status +------------------------------------------------------------ + +Runs dojo gfx performance tests on IE7 with different renderers, compare their +performance. The result so far is + + * Silverlight is the fastest: 27,546 ms; + * Tuned SVGWeb is the 2nd place: 38,690 ms, almost 3 times faster than + before + * VML is the slowest: 50,250 ms + + +============================================================ +GFX Functional Test Status +------------------------------------------------------------ + +Summary / General findings + + * Pass rate 83%, 25 out of 30 pass + * The behavior is very consistent on IE & FF + * Transformation of Text is not working + * Line style is not working + * getTextWidth() does not work, see svgweb bug 417 + * IE7 has memory issue, see svgweb bug 418 (IE8 seems fine) + +PASS test.roundrect.html +PASS test_arc.html +PASS test_bezier.html +PASS test_decompose.html +PASS test_destroy.html +PASS test_fill.html + +FAIL test_fx.html: mostly works, except for the transformation of text (svgweb bug 158) + +PASS test_fx_shapes.html +PASS test_gfx.html +PASS test_gradient.html: works, but performance is slow due to the creation of a lot of shapes; using suspendRedraw() helps, but not much; current time is 8.5 seconds on IE7, 3 seconds on FF 3.5 +PASS test_group1.html: partly works, but rect highlight change has problem (svgweb bug 296) +PASS test_group2.html: works, with source changed from 'dijit.byId()' to 'dojo.byId()' +PASS test_image1.html +PASS test_image2.html: picture shows, but move and transform has serious problem (svgweb bug 296) + +FAIL test_image3.html: picture shows, but move and transform has serious problem (svgweb bug 427, 436) + +PASS test_image4.html +PASS test_image5.html: still image gets cropped after dragging, but mostly it's working (svgweb bug 244) +PASS test_linearGradient.html + +FAIL test_linestyle.html: not work (svgweb bug 65) + +PASS test_pattern.html +PASS test_poly.html +PASS test_resize.html +PASS test_setPath.html +PASS test_tbbox.html: output drawing is incorrect (svgweb bug 296) + +FAIL test_text.html: text shows, but the rotation still fails (svgweb bug 158) + +FAIL test_textpath.html: not work (svgweb bug 169) + +PASS test_transform.html: output drawing is incorrect (svgweb bug 296) +PASS test_utils.html +PASS test_vectortext_draw.html +PASS test_vectortext_load.html: functionally, this works, but very very slow; Reduced the test case to print just 26 chars, in FF it takes 30+ seconds, in IE7 it's more than a minute... + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/VectorText.js b/js/dojo-release-1.7.2-src/dojox/gfx/VectorText.js new file mode 100644 index 0000000..42098b0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/VectorText.js @@ -0,0 +1,786 @@ +define(["dojo/_base/lang","dojo/_base/declare","dojo/_base/array", "dojo/_base/loader" /* dojo._getText */, + "dojo/_base/xhr","./_base", "dojox/xml/DomParser", "dojox/html/metrics","./matrix"], + function (lang,declare,arr,loader,xhr,gfx,xmlDomParser,HtmlMetrics,Matrix){ +/*===== + gfx = dojox.gfx; + dojox.gfx.VectorText = { + // summary: + // An implementation of the SVG Font 1.1 spec, using dojox.gfx. + // + // Basic interface: + // var f = new dojox.gfx.Font(url|string); + // surface||group.createVectorText(text) + // .setFill(fill) + // .setStroke(stroke) + // .setFont(fontStyleObject); + // + // The arguments passed to createVectorText are the same as you would + // pass to surface||group.createText; the difference is that this + // is entirely renderer-agnostic, and the return value is a subclass + // of dojox.gfx.Group. + // + // Note also that the "defaultText" object is slightly different: + // { type:"vectortext", x:0, y:0, width:null, height: null, + // text: "", align: "start", decoration: "none" } + // + // ...as well as the "defaultVectorFont" object: + // { type:"vectorfont", size:"10pt" } + // + // The reason for this should be obvious: most of the style for the font is defined + // by the font object itself. + // + // Note that this will only render IF and WHEN you set the font. + }; + =====*/ + var _getText = function(url){ + var result; + xhr.get({url:url, sync:true, load:function(text){ // Note synchronous! + result = text; + }}); + return result; + }; + + lang.getObject("dojox.gfx.VectorText", true); + lang.mixin(gfx, { + vectorFontFitting: { + NONE: 0, // render text according to passed size. + FLOW: 1, // render text based on the passed width and size + FIT: 2 // render text based on a passed viewbox. + }, + defaultVectorText: { + type:"vectortext", x:0, y:0, width: null, height: null, + text: "", align: "start", decoration: "none", fitting: 0, // vectorFontFitting.NONE + leading: 1.5 // in ems. + }, + defaultVectorFont: { + type:"vectorfont", size: "10pt", family: null + }, + _vectorFontCache: {}, + _svgFontCache: {}, + getVectorFont: function(/* String */url){ + if(gfx._vectorFontCache[url]){ + return gfx._vectorFontCache[url]; + } + return new gfx.VectorFont(url); + } + }); + + return declare("dojox.gfx.VectorFont", null, { // EARLY RETURN + _entityRe: /&(quot|apos|lt|gt|amp|#x[^;]+|#\d+);/g, + _decodeEntitySequence: function(str){ + // unescape the unicode sequences + + // nothing to decode + if(!str.match(this._entityRe)){ return; } // undefined + var xmlEntityMap = { + amp:"&", apos:"'", quot:'"', lt:"<", gt:">" + }; + + // we have at least one encoded entity. + var r, tmp=""; + while((r=this._entityRe.exec(str))!==null){ + if(r[1].charAt(1)=="x"){ + tmp += String.fromCharCode(parseInt(r[1].slice(2), 16)); + } + else if(!isNaN(parseInt(r[1].slice(1),10))){ + tmp += String.fromCharCode(parseInt(r[1].slice(1), 10)); + } + else { + tmp += xmlEntityMap[r[1]] || ""; + } + } + return tmp; // String + }, + _parse: function(/* String */svg, /* String */url){ + // summary: + // Take the loaded SVG Font definition file and convert the info + // into things we can use. The SVG Font definition must follow + // the SVG 1.1 Font specification. + var doc = gfx._svgFontCache[url]||xmlDomParser.parse(svg); + + // font information + var f = doc.documentElement.byName("font")[0], face = doc.documentElement.byName("font-face")[0]; + var unitsPerEm = parseFloat(face.getAttribute("units-per-em")||1000, 10); + var advance = { + x: parseFloat(f.getAttribute("horiz-adv-x"), 10), + y: parseFloat(f.getAttribute("vert-adv-y")||0, 10) + }; + if(!advance.y){ + advance.y = unitsPerEm; + } + + var origin = { + horiz: { + x: parseFloat(f.getAttribute("horiz-origin-x")||0, 10), + y: parseFloat(f.getAttribute("horiz-origin-y")||0, 10) + }, + vert: { + x: parseFloat(f.getAttribute("vert-origin-x")||0, 10), + y: parseFloat(f.getAttribute("vert-origin-y")||0, 10) + } + }; + + // face information + var family = face.getAttribute("font-family"), + style = face.getAttribute("font-style")||"all", + variant = face.getAttribute("font-variant")||"normal", + weight = face.getAttribute("font-weight")||"all", + stretch = face.getAttribute("font-stretch")||"normal", + + // additional info, may not be needed + range = face.getAttribute("unicode-range")||"U+0-10FFFF", + panose = face.getAttribute("panose-1") || "0 0 0 0 0 0 0 0 0 0", + capHeight = face.getAttribute("cap-height"), + ascent = parseFloat(face.getAttribute("ascent")||(unitsPerEm-origin.vert.y), 10), + descent = parseFloat(face.getAttribute("descent")||origin.vert.y, 10), + baseline = {}; + + // check for font-face-src/font-face-name + var name = family; + if(face.byName("font-face-name")[0]){ + name = face.byName("font-face-name")[0].getAttribute("name"); + } + + // see if this is cached already, and if so, forget the rest of the parsing. + if(gfx._vectorFontCache[name]){ return; } + + // get any provided baseline alignment offsets. + arr.forEach(["alphabetic", "ideographic", "mathematical", "hanging" ], function(attr){ + var a = face.getAttribute(attr); + if(a !== null /* be explicit, might be 0 */){ + baseline[attr] = parseFloat(a, 10); + } + }); + + /* + // TODO: decoration hinting. + var decoration = { }; + arr.forEach(["underline", "strikethrough", "overline"], function(type){ + if(face.getAttribute(type+"-position")!=null){ + decoration[type]={ }; + } + }); + */ + + // missing glyph info + var missing = parseFloat(doc.documentElement.byName("missing-glyph")[0].getAttribute("horiz-adv-x")||advance.x, 10); + + // glyph information + var glyphs = {}, glyphsByName={}, g=doc.documentElement.byName("glyph"); + arr.forEach(g, function(node){ + // we are going to assume the following: + // 1) we have the unicode attribute + // 2) we have the name attribute + // 3) we have the horiz-adv-x and d attributes. + var code = node.getAttribute("unicode"), + name = node.getAttribute("glyph-name"), + xAdv = parseFloat(node.getAttribute("horiz-adv-x")||advance.x, 10), + path = node.getAttribute("d"); + + // unescape the unicode sequences + if(code.match(this._entityRe)){ + code = this._decodeEntitySequence(code); + } + + // build our glyph objects + var o = { code: code, name: name, xAdvance: xAdv, path: path }; + glyphs[code]=o; + glyphsByName[name]=o; + }, this); + + // now the fun part: look for kerning pairs. + var hkern=doc.documentElement.byName("hkern"); + arr.forEach(hkern, function(node, i){ + var k = -parseInt(node.getAttribute("k"),10); + // look for either a code or a name + var u1=node.getAttribute("u1"), + g1=node.getAttribute("g1"), + u2=node.getAttribute("u2"), + g2=node.getAttribute("g2"), + gl; + + if(u1){ + // the first of the pair is a sequence of unicode characters. + // TODO: deal with unicode ranges and mulitple characters. + u1 = this._decodeEntitySequence(u1); + if(glyphs[u1]){ + gl = glyphs[u1]; + } + } else { + // we are referring to a name. + // TODO: deal with multiple names + if(glyphsByName[g1]){ + gl = glyphsByName[g1]; + } + } + + if(gl){ + if(!gl.kern){ gl.kern = {}; } + if(u2){ + // see the notes above. + u2 = this._decodeEntitySequence(u2); + gl.kern[u2] = { x: k }; + } else { + if(glyphsByName[g2]){ + gl.kern[glyphsByName[g2].code] = { x: k }; + } + } + } + }, this); + + // pop the final definition in the font cache. + lang.mixin(this, { + family: family, + name: name, + style: style, + variant: variant, + weight: weight, + stretch: stretch, + range: range, + viewbox: { width: unitsPerEm, height: unitsPerEm }, + origin: origin, + advance: lang.mixin(advance, { + missing:{ x: missing, y: missing } + }), + ascent: ascent, + descent: descent, + baseline: baseline, + glyphs: glyphs + }); + + // cache the parsed font + gfx._vectorFontCache[name] = this; + gfx._vectorFontCache[url] = this; + if(name!=family && !gfx._vectorFontCache[family]){ + gfx._vectorFontCache[family] = this; + } + + // cache the doc + if(!gfx._svgFontCache[url]){ + gfx._svgFontCache[url]=doc; + } + }, + _clean: function(){ + // summary: + // Clean off all of the given mixin parameters. + var name = this.name, family = this.family; + arr.forEach(["family","name","style","variant", + "weight","stretch","range","viewbox", + "origin","advance","ascent","descent", + "baseline","glyphs"], function(prop){ + try{ delete this[prop]; } catch(e) { } + }, this); + + // try to pull out of the font cache. + if(gfx._vectorFontCache[name]){ + delete gfx._vectorFontCache[name]; + } + if(gfx._vectorFontCache[family]){ + delete gfx._vectorFontCache[family]; + } + return this; + }, + + constructor: function(/* String|dojo._Url */url){ + // summary:: + // Create this font object based on the SVG Font definition at url. + this._defaultLeading = 1.5; + if(url!==undefined){ + this.load(url); + } + }, + load: function(/* String|dojo._Url */url){ + // summary:: + // Load the passed SVG and send it to the parser for parsing. + this.onLoadBegin(url.toString()); + this._parse( + gfx._svgFontCache[url.toString()]||_getText(url.toString()), + url.toString() + ); + this.onLoad(this); + return this; // dojox.gfx.VectorFont + }, + initialized: function(){ + // summary:: + // Return if we've loaded a font def, and the parsing was successful. + return (this.glyphs!==null); // Boolean + }, + + // preset round to 3 places. + _round: function(n){ return Math.round(1000*n)/1000; }, + _leading: function(unit){ return this.viewbox.height * (unit||this._defaultLeading); }, + _normalize: function(str){ + return str.replace(/\s+/g, String.fromCharCode(0x20)); + }, + + _getWidth: function(glyphs){ + var w=0, last=0, lastGlyph=null; + arr.forEach(glyphs, function(glyph, i){ + last=glyph.xAdvance; + if(glyphs[i] && glyph.kern && glyph.kern[glyphs[i].code]){ + last += glyph.kern[glyphs[i].code].x; + } + w += last; + lastGlyph = glyph; + }); + + // if the last glyph was a space, pull it off. + if(lastGlyph && lastGlyph.code == " "){ + w -= lastGlyph.xAdvance; + } + + return this._round(w/*-last*/); + }, + + _getLongestLine: function(lines){ + var maxw=0, idx=0; + arr.forEach(lines, function(line, i){ + var max = Math.max(maxw, this._getWidth(line)); + if(max > maxw){ + maxw = max; + idx=i; + } + }, this); + return { width: maxw, index: idx, line: lines[idx] }; + }, + + _trim: function(lines){ + var fn = function(arr){ + // check if the first or last character is a space and if so, remove it. + if(!arr.length){ return; } + if(arr[arr.length-1].code == " "){ arr.splice(arr.length-1, 1); } + if(!arr.length){ return; } + if(arr[0].code == " "){ arr.splice(0, 1); } + }; + + if(lang.isArray(lines[0])){ + // more than one line. + arr.forEach(lines, fn); + } else { + fn(lines); + } + return lines; + }, + + _split: function(chars, nLines){ + // summary: + // split passed chars into nLines by finding the closest whitespace. + var w = this._getWidth(chars), + limit = Math.floor(w/nLines), + lines = [], + cw = 0, + c = [], + found = false; + + for(var i=0, l=chars.length; i=limit){ + var chr=chars[i]; + while(found && chr.code != " " && i>=0){ + chr = c.pop(); i--; + } + lines.push(c); + c=[]; + cw=0; + found=false; + } + c.push(chars[i]); + } + if(c.length){ lines.push(c); } + // "trim" it + return this._trim(lines); + }, + + _getSizeFactor: function(size){ + // given the size, return a scaling factor based on the height of the + // font as defined in the font definition file. + size += ""; // force the string cast. + var metrics = HtmlMetrics.getCachedFontMeasurements(), + height=this.viewbox.height, + f=metrics["1em"], + unit=parseFloat(size, 10); // the default. + if(size.indexOf("em")>-1){ + return this._round((metrics["1em"]*unit)/height); + } + else if(size.indexOf("ex")>-1){ + return this._round((metrics["1ex"]*unit)/height); + } + else if(size.indexOf("pt")>-1){ + return this._round(((metrics["12pt"] / 12)*unit) / height); + } + else if(size.indexOf("px")>-1){ + return this._round(((metrics["16px"] / 16)*unit) / height); + } + else if(size.indexOf("%")>-1){ + return this._round((metrics["1em"]*(unit / 100)) / height); + } + else { + f=metrics[size]||metrics.medium; + return this._round(f/height); + } + }, + + _getFitFactor: function(lines, w, h, l){ + // summary: + // Find the scaling factor for the given phrase set. + if(!h){ + // if no height was passed, we assume an array of glyphs instead of lines. + return this._round(w/this._getWidth(lines)); + } else { + var maxw = this._getLongestLine(lines).width, + maxh = (lines.length*(this.viewbox.height*l))-((this.viewbox.height*l)-this.viewbox.height); + return this._round(Math.min(w/maxw, h/maxh)); + } + }, + _getBestFit: function(chars, w, h, ldng){ + // summary: + // Get the best number of lines to return given w and h. + var limit=32, + factor=0, + lines=limit; + while(limit>0){ + var f=this._getFitFactor(this._split(chars, limit), w, h, ldng); + if(f>factor){ + factor = f; + lines=limit; + } + limit--; + } + return { scale: factor, lines: this._split(chars, lines) }; + }, + + _getBestFlow: function(chars, w, scale){ + // summary: + // Based on the given scale, do the best line splitting possible. + var lines = [], + cw = 0, + c = [], + found = false; + for(var i=0, l=chars.length; i=w){ + var chr=chars[i]; + while(found && chr.code != " " && i>=0){ + chr = c.pop(); i--; + } + lines.push(c); + c=[]; + cw=0; + found=false; + } + c.push(chars[i]); + } + if(c.length){ lines.push(c); } + return this._trim(lines); + }, + + // public functions + getWidth: function(/* String */text, /* Float? */scale){ + // summary: + // Get the width of the rendered text without actually rendering it. + return this._getWidth(arr.map(this._normalize(text).split(""), function(chr){ + return this.glyphs[chr] || { xAdvance: this.advance.missing.x }; + }, this)) * (scale || 1); // Float + }, + getLineHeight: function(/* Float? */scale){ + // summary: + // return the height of a single line, sans leading, based on scale. + return this.viewbox.height * (scale || 1); // Float + }, + + // A note: + // Many SVG exports do not include information such as x-height, caps-height + // and other coords that may help alignment. We can calc the baseline and + // we can get a mean line (i.e. center alignment) but that's about all, reliably. + getCenterline: function(/* Float? */scale){ + // summary: + // return the y coordinate that is the center of the viewbox. + return (scale||1) * (this.viewbox.height/2); + }, + getBaseline: function(/* Float? */scale){ + // summary: + // Find the baseline coord for alignment; adjust for scale if passed. + return (scale||1) * (this.viewbox.height+this.descent); // Float + }, + + draw: function(/* dojox.gfx.Container */group, /* dojox.gfx.__TextArgs */textArgs, /* dojox.gfx.__FontArgs */fontArgs, /* dojox.gfx.__FillArgs */fillArgs, /* dojox.gfx.__StrokeArgs? */strokeArgs){ + // summary: + // based on the passed parameters, draw the given text using paths + // defined by this font. + // + // description: + // The main method of a VectorFont, draw() will take a text fragment + // and render it in a set of groups and paths based on the parameters + // passed. + // + // The basics of drawing text are simple enough: pass it your text as + // part of the textArgs object, pass size and family info as part of + // the fontArgs object, pass at least a color as the fillArgs object, + // and if you are looking to create an outline, pass the strokeArgs + // object as well. fillArgs and strokeArgs are the same as any other + // gfx fill and stroke arguments; they are simply applied to any path + // object generated by this method. + // + // Resulting GFX structure + // ----------------------- + // + // The result of this function is a set of gfx objects in the following + // structure: + // + // | dojox.gfx.Group // the parent group generated by this function + // | + dojox.gfx.Group[] // a group generated for each line of text + // | + dojox.gfx.Path[] // each glyph/character in the text + // + // Scaling transformations (i.e. making the generated text the correct size) + // are always applied to the parent Group that is generated (i.e. the top + // node in the above example). In theory, if you are looking to do any kind + // of other transformations (such as a translation), you should apply it to + // the group reference you pass to this method. If you find that you need + // to apply transformations to the group that is returned by this method, + // you will need to reapply the scaling transformation as the *last* transform, + // like so: + // + // | textGroup.setTransform(new dojox.gfx.Matrix2D([ + // | dojox.gfx.matrix.translate({ dx: dx, dy: dy }), + // | textGroup.getTransform() + // | ])); + // + // In general, this should never be necessary unless you are doing advanced + // placement of your text. + // + // Advanced Layout Functionality + // ----------------------------- + // + // In addition to straight text fragments, draw() supports a few advanced + // operations not normally available with vector graphics: + // + // * Flow operations (i.e. wrap to a given width) + // * Fitting operations (i.e. find a best fit to a given rectangle) + // + // To enable either, pass a `fitting` property along with the textArgs object. + // The possible values are contained in the dojox.gfx.vectorFontFitting enum + // (NONE, FLOW, FIT). + // + // `Flow fitting` + // Flow fitting requires both a passed size (in the fontArgs object) and a + // width (passed with the textArgs object). draw() will attempt to split the + // passed text up into lines, at the closest whitespace according to the + // passed width. If a width is missing, it will revert to NONE. + // + // `Best fit fitting` + // Doing a "best fit" means taking the passed text, and finding the largest + // size and line breaks so that it is the closest fit possible. With best + // fit, any size arguments are ignored; if a height is missing, it will revert + // to NONE. + // + // Other notes + // ----------- + // + // `a11y` + // Since the results of this method are rendering using pure paths (think + // "convert to outlines" in Adobe Illustrator), any text rendered by this + // code is NOT considered a11y-friendly. If a11y is a requirement, we + // suggest using other, more a11y-friendly methods. + // + // `Font sources` + // Always make sure that you are legally allowed to use any fonts that you + // convert to SVG format; we claim no responsibility for any licensing + // infractions that may be caused by the use of this code. + if(!this.initialized()){ + throw new Error("dojox.gfx.VectorFont.draw(): we have not been initialized yet."); + } + // TODO: BIDI handling. Deal with layout/alignments based on font parameters. + + // start by creating the overall group. This is the INNER group (the caller + // should be the outer). + var g = group.createGroup(); + + // do the x/y translation on the parent group + // FIXME: this is probably not the best way of doing this. + if(textArgs.x || textArgs.y){ + group.applyTransform({ dx: textArgs.x||0, dy: textArgs.y||0 }); + } + + // go get the glyph array. + var text = arr.map(this._normalize(textArgs.text).split(""), function(chr){ + return this.glyphs[chr] || { path:null, xAdvance: this.advance.missing.x }; + }, this); + + // determine the font style info, ignore decoration. + var size = fontArgs.size, + fitting = textArgs.fitting, + width = textArgs.width, + height = textArgs.height, + align = textArgs.align, + leading = textArgs.leading||this._defaultLeading; + + // figure out if we have to do fitting at all. + if(fitting){ + // more than zero. + if((fitting==gfx.vectorFontFitting.FLOW && !width) || (fitting==gfx.vectorFontFitting.FIT && (!width || !height))){ + // reset the fitting if we don't have everything we need. + fitting = gfx.vectorFontFitting.NONE; + } + } + + // set up the lines array and the scaling factor. + var lines, scale; + switch(fitting){ + case gfx.vectorFontFitting.FIT: + var o=this._getBestFit(text, width, height, leading); + scale = o.scale; + lines = o.lines; + break; + + case gfx.vectorFontFitting.FLOW: + scale = this._getSizeFactor(size); + lines = this._getBestFlow(text, width, scale); + break; + + default: + scale = this._getSizeFactor(size); + lines = [ text ]; + + } + + // make sure lines doesn't have any empty lines. + lines = arr.filter(lines, function(item){ + return item.length>0; + }); + + // let's start drawing. + var cy = 0, + maxw = this._getLongestLine(lines).width; + + for(var i=0, l=lines.length; i= 0; // Boolean + }; + g._addClass = function(/*DomNode*/node, /*String*/classStr){ + // summary: + // Adds the specified classes to the end of the class list on the + // passed node. + var cls = node.getAttribute("className") || ""; + if(!cls || (" " + cls + " ").indexOf(" " + classStr + " ") < 0){ + node.setAttribute("className", cls + (cls ? " " : "") + classStr); + } + }; + g._removeClass = function(/*DomNode*/node, /*String*/classStr){ + // summary: Removes classes from node. + var cls = node.getAttribute("className"); + if(cls){ + node.setAttribute( + "className", + cls.replace(new RegExp('(^|\\s+)' + classStr + '(\\s+|$)'), "$1$2") + ); + } + }; + + // candidate for dojox.html.metrics (dynamic font resize handler is not implemented here) + + // derived from Morris John's emResized measurer + b._getFontMeasurements = function(){ + // summary: + // Returns an object that has pixel equivilents of standard font + // size values. + var heights = { + '1em': 0, '1ex': 0, '100%': 0, '12pt': 0, '16px': 0, 'xx-small': 0, + 'x-small': 0, 'small': 0, 'medium': 0, 'large': 0, 'x-large': 0, + 'xx-large': 0 + }; + var p; + + if(has("ie")){ + // we do a font-size fix if and only if one isn't applied already. + // NOTE: If someone set the fontSize on the HTML Element, this will kill it. + win.doc.documentElement.style.fontSize="100%"; + } + + // set up the measuring node. + var div = domConstruct.create("div", {style: { + position: "absolute", + left: "0", + top: "-100px", + width: "30px", + height: "1000em", + borderWidth: "0", + margin: "0", + padding: "0", + outline: "none", + lineHeight: "1", + overflow: "hidden" + }}, win.body()); + + // do the measurements. + for(p in heights){ + div.style.fontSize = p; + heights[p] = Math.round(div.offsetHeight * 12/16) * 16/12 / 1000; + } + + win.body().removeChild(div); + return heights; //object + }; + + var fontMeasurements = null; + + b._getCachedFontMeasurements = function(recalculate){ + if(recalculate || !fontMeasurements){ + fontMeasurements = b._getFontMeasurements(); + } + return fontMeasurements; + }; + + // candidate for dojox.html.metrics + + var measuringNode = null, empty = {}; + b._getTextBox = function( /*String*/ text, + /*Object*/ style, + /*String?*/ className){ + var m, s, al = arguments.length; + var i; + if(!measuringNode){ + measuringNode = domConstruct.create("div", {style: { + position: "absolute", + top: "-10000px", + left: "0" + }}, win.body()); + } + m = measuringNode; + // reset styles + m.className = ""; + s = m.style; + s.borderWidth = "0"; + s.margin = "0"; + s.padding = "0"; + s.outline = "0"; + // set new style + if(al > 1 && style){ + for(i in style){ + if(i in empty){ continue; } + s[i] = style[i]; + } + } + // set classes + if(al > 2 && className){ + m.className = className; + } + // take a measure + m.innerHTML = text; + + if(m["getBoundingClientRect"]){ + var bcr = m.getBoundingClientRect(); + return {l: bcr.left, t: bcr.top, w: bcr.width || (bcr.right - bcr.left), h: bcr.height || (bcr.bottom - bcr.top)}; + }else{ + return domGeom.getMarginBox(m); + } + }; + + // candidate for dojo.dom + + var uniqueId = 0; + b._getUniqueId = function(){ + // summary: returns a unique string for use with any DOM element + var id; + do{ + id = dojo._scopeName + "xUnique" + (++uniqueId); + }while(dom.byId(id)); + return id; + }; + + lang.mixin(g, { + // summary: + // defines constants, prototypes, and utility functions for the core Graphics API + + // default shapes, which are used to fill in missing parameters + defaultPath: { + // summary: + // Defines the default Path prototype object. + type: "path", + // type: String + // Specifies this object is a Path, default value 'path'. + path: "" + // path: String + // The path commands. See W32C SVG 1.0 specification. + // Defaults to empty string value. + }, + defaultPolyline: { + // summary: + // Defines the default PolyLine prototype. + type: "polyline", + // type: String + // Specifies this object is a PolyLine, default value 'polyline'. + points: [] + // points: Array + // An array of point objects [{x:0,y:0},...] defining the default polyline's line segments. Value is an empty array []. + }, + defaultRect: { + // summary: + // Defines the default Rect prototype. + type: "rect", + // type: String + // Specifies this default object is a type of Rect. Value is 'rect' + x: 0, + // x: Number + // The X coordinate of the default rectangles position, value 0. + y: 0, + // y: Number + // The Y coordinate of the default rectangle's position, value 0. + width: 100, + // width: Number + // The width of the default rectangle, value 100. + height: 100, + // height: Number + // The height of the default rectangle, value 100. + r: 0 + // r: Number + // The corner radius for the default rectangle, value 0. + }, + defaultEllipse: { + // summary: + // Defines the default Ellipse prototype. + type: "ellipse", + // type: String + // Specifies that this object is a type of Ellipse, value is 'ellipse' + cx: 0, + // cx: Number + // The X coordinate of the center of the ellipse, default value 0. + cy: 0, + // cy: Number + // The Y coordinate of the center of the ellipse, default value 0. + rx: 200, + // rx: Number + // The radius of the ellipse in the X direction, default value 200. + ry: 100 + // ry: Number + // The radius of the ellipse in the Y direction, default value 200. + }, + defaultCircle: { + // summary: + // An object defining the default Circle prototype. + type: "circle", + // type: String + // Specifies this object is a circle, value 'circle' + cx: 0, + // cx: Number + // The X coordinate of the center of the circle, default value 0. + cy: 0, + // cy: Number + // The Y coordinate of the center of the circle, default value 0. + r: 100 + // r: Number + // The radius, default value 100. + }, + defaultLine: { + // summary: + // An pbject defining the default Line prototype. + type: "line", + // type: String + // Specifies this is a Line, value 'line' + x1: 0, + // x1: Number + // The X coordinate of the start of the line, default value 0. + y1: 0, + // y1: Number + // The Y coordinate of the start of the line, default value 0. + x2: 100, + // x2: Number + // The X coordinate of the end of the line, default value 100. + y2: 100 + // y2: Number + // The Y coordinate of the end of the line, default value 100. + }, + defaultImage: { + // summary: + // Defines the default Image prototype. + type: "image", + // type: String + // Specifies this object is an image, value 'image'. + x: 0, + // x: Number + // The X coordinate of the image's position, default value 0. + y: 0, + // y: Number + // The Y coordinate of the image's position, default value 0. + width: 0, + // width: Number + // The width of the image, default value 0. + height: 0, + // height:Number + // The height of the image, default value 0. + src: "" + // src: String + // The src url of the image, defaults to empty string. + }, + defaultText: { + // summary: + // Defines the default Text prototype. + type: "text", + // type: String + // Specifies this is a Text shape, value 'text'. + x: 0, + // x: Number + // The X coordinate of the text position, default value 0. + y: 0, + // y: Number + // The Y coordinate of the text position, default value 0. + text: "", + // text: String + // The text to be displayed, default value empty string. + align: "start", + // align: String + // The horizontal text alignment, one of 'start', 'end', 'center'. Default value 'start'. + decoration: "none", + // decoration: String + // The text decoration , one of 'none', ... . Default value 'none'. + rotated: false, + // rotated: Boolean + // Whether the text is rotated, boolean default value false. + kerning: true + // kerning: Boolean + // Whether kerning is used on the text, boolean default value true. + }, + defaultTextPath: { + // summary: + // Defines the default TextPath prototype. + type: "textpath", + // type: String + // Specifies this is a TextPath, value 'textpath'. + text: "", + // text: String + // The text to be displayed, default value empty string. + align: "start", + // align: String + // The horizontal text alignment, one of 'start', 'end', 'center'. Default value 'start'. + decoration: "none", + // decoration: String + // The text decoration , one of 'none', ... . Default value 'none'. + rotated: false, + // rotated: Boolean + // Whether the text is rotated, boolean default value false. + kerning: true + // kerning: Boolean + // Whether kerning is used on the text, boolean default value true. + }, + + // default stylistic attributes + defaultStroke: { + // summary: + // A stroke defines stylistic properties that are used when drawing a path. + // This object defines the default Stroke prototype. + type: "stroke", + // type: String + // Specifies this object is a type of Stroke, value 'stroke'. + color: "black", + // color: String + // The color of the stroke, default value 'black'. + style: "solid", + // style: String + // The style of the stroke, one of 'solid', ... . Default value 'solid'. + width: 1, + // width: Number + // The width of a stroke, default value 1. + cap: "butt", + // cap: String + // The endcap style of the path. One of 'butt', 'round', ... . Default value 'butt'. + join: 4 + // join: Number + // The join style to use when combining path segments. Default value 4. + }, + defaultLinearGradient: { + // summary: + // An object defining the default stylistic properties used for Linear Gradient fills. + // Linear gradients are drawn along a virtual line, which results in appearance of a rotated pattern in a given direction/orientation. + type: "linear", + // type: String + // Specifies this object is a Linear Gradient, value 'linear' + x1: 0, + // x1: Number + // The X coordinate of the start of the virtual line along which the gradient is drawn, default value 0. + y1: 0, + // y1: Number + // The Y coordinate of the start of the virtual line along which the gradient is drawn, default value 0. + x2: 100, + // x2: Number + // The X coordinate of the end of the virtual line along which the gradient is drawn, default value 100. + y2: 100, + // y2: Number + // The Y coordinate of the end of the virtual line along which the gradient is drawn, default value 100. + colors: [ + { offset: 0, color: "black" }, { offset: 1, color: "white" } + ] + // colors: Array + // An array of colors at given offsets (from the start of the line). The start of the line is + // defined at offest 0 with the end of the line at offset 1. + // Default value, [{ offset: 0, color: 'black'},{offset: 1, color: 'white'}], is a gradient from black to white. + }, + defaultRadialGradient: { + // summary: + // An object specifying the default properties for RadialGradients using in fills patterns. + type: "radial", + // type: String + // Specifies this is a RadialGradient, value 'radial' + cx: 0, + // cx: Number + // The X coordinate of the center of the radial gradient, default value 0. + cy: 0, + // cy: Number + // The Y coordinate of the center of the radial gradient, default value 0. + r: 100, + // r: Number + // The radius to the end of the radial gradient, default value 100. + colors: [ + { offset: 0, color: "black" }, { offset: 1, color: "white" } + ] + // colors: Array + // An array of colors at given offsets (from the center of the radial gradient). + // The center is defined at offest 0 with the outer edge of the gradient at offset 1. + // Default value, [{ offset: 0, color: 'black'},{offset: 1, color: 'white'}], is a gradient from black to white. + }, + defaultPattern: { + // summary: + // An object specifying the default properties for a Pattern using in fill operations. + type: "pattern", + // type: String + // Specifies this object is a Pattern, value 'pattern'. + x: 0, + // x: Number + // The X coordinate of the position of the pattern, default value is 0. + y: 0, + // y: Number + // The Y coordinate of the position of the pattern, default value is 0. + width: 0, + // width: Number + // The width of the pattern image, default value is 0. + height: 0, + // height: Number + // The height of the pattern image, default value is 0. + src: "" + // src: String + // A url specifing the image to use for the pattern. + }, + defaultFont: { + // summary: + // An object specifying the default properties for a Font used in text operations. + type: "font", + // type: String + // Specifies this object is a Font, value 'font'. + style: "normal", + // style: String + // The font style, one of 'normal', 'bold', default value 'normal'. + variant: "normal", + // variant: String + // The font variant, one of 'normal', ... , default value 'normal'. + weight: "normal", + // weight: String + // The font weight, one of 'normal', ..., default value 'normal'. + size: "10pt", + // size: String + // The font size (including units), default value '10pt'. + family: "serif" + // family: String + // The font family, one of 'serif', 'sanserif', ..., default value 'serif'. + }, + + getDefault: (function(){ + // summary: + // Returns a function used to access default memoized prototype objects (see them defined above). + var typeCtorCache = {}; + // a memoized delegate() + return function(/*String*/ type){ + var t = typeCtorCache[type]; + if(t){ + return new t(); + } + t = typeCtorCache[type] = new Function(); + t.prototype = g[ "default" + type ]; + return new t(); + } + })(), + + normalizeColor: function(/*dojo.Color|Array|string|Object*/ color){ + // summary: + // converts any legal color representation to normalized + // dojo.Color object + return (color instanceof Color) ? color : new Color(color); // dojo.Color + }, + normalizeParameters: function(existed, update){ + // summary: + // updates an existing object with properties from an 'update' + // object + // existed: Object + // the target object to be updated + // update: Object + // the 'update' object, whose properties will be used to update + // the existed object + var x; + if(update){ + var empty = {}; + for(x in existed){ + if(x in update && !(x in empty)){ + existed[x] = update[x]; + } + } + } + return existed; // Object + }, + makeParameters: function(defaults, update){ + // summary: + // copies the original object, and all copied properties from the + // 'update' object + // defaults: Object + // the object to be cloned before updating + // update: Object + // the object, which properties are to be cloned during updating + var i = null; + if(!update){ + // return dojo.clone(defaults); + return lang.delegate(defaults); + } + var result = {}; + for(i in defaults){ + if(!(i in result)){ + result[i] = lang.clone((i in update) ? update[i] : defaults[i]); + } + } + return result; // Object + }, + formatNumber: function(x, addSpace){ + // summary: converts a number to a string using a fixed notation + // x: Number + // number to be converted + // addSpace: Boolean + // whether to add a space before a positive number + var val = x.toString(); + if(val.indexOf("e") >= 0){ + val = x.toFixed(4); + }else{ + var point = val.indexOf("."); + if(point >= 0 && val.length - point > 5){ + val = x.toFixed(4); + } + } + if(x < 0){ + return val; // String + } + return addSpace ? " " + val : val; // String + }, + // font operations + makeFontString: function(font){ + // summary: converts a font object to a CSS font string + // font: Object: font object (see dojox.gfx.defaultFont) + return font.style + " " + font.variant + " " + font.weight + " " + font.size + " " + font.family; // Object + }, + splitFontString: function(str){ + // summary: + // converts a CSS font string to a font object + // description: + // Converts a CSS font string to a gfx font object. The CSS font + // string components should follow the W3C specified order + // (see http://www.w3.org/TR/CSS2/fonts.html#font-shorthand): + // style, variant, weight, size, optional line height (will be + // ignored), and family. + // str: String + // a CSS font string + var font = g.getDefault("Font"); + var t = str.split(/\s+/); + do{ + if(t.length < 5){ break; } + font.style = t[0]; + font.variant = t[1]; + font.weight = t[2]; + var i = t[3].indexOf("/"); + font.size = i < 0 ? t[3] : t[3].substring(0, i); + var j = 4; + if(i < 0){ + if(t[4] == "/"){ + j = 6; + }else if(t[4].charAt(0) == "/"){ + j = 5; + } + } + if(j < t.length){ + font.family = t.slice(j).join(" "); + } + }while(false); + return font; // Object + }, + // length operations + cm_in_pt: 72 / 2.54, + // cm_in_pt: Number + // points per centimeter (constant) + mm_in_pt: 7.2 / 2.54, + // mm_in_pt: Number + // points per millimeter (constant) + px_in_pt: function(){ + // summary: returns the current number of pixels per point. + return g._base._getCachedFontMeasurements()["12pt"] / 12; // Number + }, + pt2px: function(len){ + // summary: converts points to pixels + // len: Number + // a value in points + return len * g.px_in_pt(); // Number + }, + px2pt: function(len){ + // summary: converts pixels to points + // len: Number + // a value in pixels + return len / g.px_in_pt(); // Number + }, + normalizedLength: function(len) { + // summary: converts any length value to pixels + // len: String + // a length, e.g., '12pc' + if(len.length === 0){ return 0; } + if(len.length > 2){ + var px_in_pt = g.px_in_pt(); + var val = parseFloat(len); + switch(len.slice(-2)){ + case "px": return val; + case "pt": return val * px_in_pt; + case "in": return val * 72 * px_in_pt; + case "pc": return val * 12 * px_in_pt; + case "mm": return val * g.mm_in_pt * px_in_pt; + case "cm": return val * g.cm_in_pt * px_in_pt; + } + } + return parseFloat(len); // Number + }, + + pathVmlRegExp: /([A-Za-z]+)|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g, + // pathVmlRegExp: RegExp + // a constant regular expression used to split a SVG/VML path into primitive components + pathSvgRegExp: /([A-Za-z])|(\d+(\.\d+)?)|(\.\d+)|(-\d+(\.\d+)?)|(-\.\d+)/g, + // pathVmlRegExp: RegExp + // a constant regular expression used to split a SVG/VML path into primitive components + + equalSources: function(a /*Object*/, b /*Object*/){ + // summary: compares event sources, returns true if they are equal + // a: first event source + // b: event source to compare against a + return a && b && a === b; + }, + + switchTo: function(renderer/*String|Object*/){ + // summary: switch the graphics implementation to the specified renderer. + // renderer: + // Either the string name of a renderer (eg. 'canvas', 'svg, ...) or the renderer + // object to switch to. + var ns = typeof renderer == "string" ? g[renderer] : renderer; + if(ns){ + arr.forEach(["Group", "Rect", "Ellipse", "Circle", "Line", + "Polyline", "Image", "Text", "Path", "TextPath", + "Surface", "createSurface", "fixTarget"], function(name){ + g[name] = ns[name]; + }); + } + } + }); + return g; // defaults object api +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/_gfxBidiSupport.js b/js/dojo-release-1.7.2-src/dojox/gfx/_gfxBidiSupport.js new file mode 100644 index 0000000..3ac682f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/_gfxBidiSupport.js @@ -0,0 +1,404 @@ +define(["./_base", "dojo/_base/lang","dojo/_base/sniff", "dojo/dom", "dojo/_base/html", "dojo/_base/array", + "./utils", "./shape", "dojox/string/BidiEngine"], + function(g, lang, has, dom, html, arr, utils, shapeLib, BidiEngine){ + lang.getObject("dojox.gfx._gfxBidiSupport", true); + /*===== g = dojox.gfx; =====*/ + switch (g.renderer){ + case 'vml': + g.isVml = true; + break; + case 'svg': + g.isSvg = true; + if(g.svg.useSvgWeb){ + g.isSvgWeb = true; + } + break; + case 'silverlight': + g.isSilverlight = true; + break; + case 'canvas': + g.isCanvas = true; + break; + } + + var bidi_const = { + LRM : '\u200E', + LRE : '\u202A', + PDF : '\u202C', + RLM : '\u200f', + RLE : '\u202B' + }; + + // the object that performs text transformations. + var bidiEngine = new BidiEngine(); + + lang.extend(g.shape.Surface, { + // textDir: String + // Will be used as default for Text/TextPath/Group objects that created by this surface + // and textDir wasn't directly specified for them, though the bidi support was loaded. + // Can be setted in two ways: + // 1. When the surface is created and textDir value passed to it as fourth + // parameter. + // 2. Using the setTextDir(String) function, when this function is used the value + // of textDir propogates to all of it's children and the children of children (for Groups) etc. + textDir: "", + + setTextDir: function(/*String*/newTextDir){ + // summary: + // Used for propogation and change of textDir. + // newTextDir will be forced as textDir for all of it's children (Group/Text/TextPath). + setTextDir(this, newTextDir); + }, + + getTextDir: function(){ + return this.textDir; + } + }); + + lang.extend(g.Group, { + // textDir: String + // Will be used for inheritance, or as default for text objects + // that textDir wasn't directly specified for them but the bidi support was required. + textDir: "", + + setTextDir: function(/*String*/newTextDir){ + // summary: + // Used for propogation and change of textDir. + // newTextDir will be forced as textDir for all of it's children (Group/Text/TextPath). + setTextDir(this, newTextDir); + }, + + getTextDir: function(){ + return this.textDir; + } + }); + + lang.extend(g.Text, { + // summary: + // Overrides some of dojox.gfx.Text properties, and adds some + // for bidi support. + + // textDir: String + // Used for displaying bidi scripts in right layout. + // Defines the base direction of text that displayed, can have 3 values: + // 1. "ltr" - base direction is left to right. + // 2. "rtl" - base direction is right to left. + // 3. "auto" - base direction is contextual (defined by first strong character). + textDir: "", + + formatText: function (/*String*/ text, /*String*/ textDir){ + // summary: + // Applies the right transform on text, according to renderer. + // text: + // the string for manipulation, by default return value. + // textDir: + // Text direction. + // Can be: + // 1. "ltr" - for left to right layout. + // 2. "rtl" - for right to left layout + // 3. "auto" - for contextual layout: the first strong letter decides the direction. + // discription: + // Finds the right transformation that should be applied on the text, according to renderer. + // Was tested in: + // Renderers (browser for testing): + // canvas (FF, Chrome, Safari), + // vml (IE), + // svg (FF, Chrome, Safari, Opera), + // silverlight (IE, Chrome, Safari, Opera), + // svgWeb(FF, Chrome, Safari, Opera, IE). + // Browsers [browser version that was tested]: + // IE [6,7,8], FF [3.6], + // Chrome (latest for March 2011), + // Safari [5.0.3], + // Opera [11.01]. + + if(textDir && text && text.length > 1){ + var sourceDir = "ltr", targetDir = textDir; + + if(targetDir == "auto"){ + //is auto by default + if(g.isVml){ + return text; + } + targetDir = bidiEngine.checkContextual(text); + } + + if(g.isVml){ + sourceDir = bidiEngine.checkContextual(text); + if(targetDir != sourceDir){ + if(targetDir == "rtl"){ + return !bidiEngine.hasBidiChar(text) ? bidiEngine.bidiTransform(text,"IRNNN","ILNNN") : bidi_const.RLM + bidi_const.RLM + text; + }else{ + return bidi_const.LRM + text; + } + } + return text; + } + + if(g.isSvgWeb){ + if(targetDir == "rtl"){ + return bidiEngine.bidiTransform(text,"IRNNN","ILNNN"); + } + return text; + } + + if(g.isSilverlight){ + return (targetDir == "rtl") ? bidiEngine.bidiTransform(text,"IRNNN","VLYNN") : bidiEngine.bidiTransform(text,"ILNNN","VLYNN"); + } + + if(g.isCanvas){ + return (targetDir == "rtl") ? bidi_const.RLE + text + bidi_const.PDF : bidi_const.LRE + text + bidi_const.PDF; + } + + if(g.isSvg){ + if(has("ff")){ + return (targetDir == "rtl") ? bidiEngine.bidiTransform(text,"IRYNN","VLNNN") : bidiEngine.bidiTransform(text,"ILYNN","VLNNN"); + } + if(has("chrome") || has("safari") || has("opera")){ + return bidi_const.LRM + (targetDir == "rtl" ? bidi_const.RLE : bidi_const.LRE) + text + bidi_const.PDF; + } + } +} + return text; + }, + + bidiPreprocess: function(newShape){ + return newShape; + } + }); + + lang.extend(g.TextPath, { + // textDir: String + // Used for displaying bidi scripts in right layout. + // Defines the base direction of text that displayed, can have 3 values: + // 1. "ltr" - base direction is left to right. + // 2. "rtl" - base direction is right to left. + // 3. "auto" - base direction is contextual (defined by first strong character). + textDir: "", + + formatText: function (/*String*/text, /*String*/textDir){ + // summary: + // Applies the right transform on text, according to renderer. + // text: the string for manipulation, by default return value. + // textDir: text direction direction. + // Can be: + // 1. "ltr" - for left to right layout. + // 2. "rtl" - for right to left layout + // 3. "auto" - for contextual layout: the first strong letter decides the direction. + // discription: + // Finds the right transformation that should be applied on the text, according to renderer. + // Was tested in: + // Renderers: + // canvas (FF, Chrome, Safari), vml (IE), svg (FF, Chrome, Safari, Opera), silverlight (IE8), svgWeb(FF, Chrome, Safari, Opera, IE). + // Browsers: + // IE [6,7,8], FF [3.6], Chrome (latest for February 2011), Safari [5.0.3], Opera [11.01]. + + if(textDir && text && text.length > 1){ + var sourceDir = "ltr", targetDir = textDir; + + if(targetDir == "auto"){ + //is auto by default + if(g.isVml){ + return text; + } + targetDir = bidiEngine.checkContextual(text); + } + + if(g.isVml){ + sourceDir = bidiEngine.checkContextual(text); + if(targetDir != sourceDir){ + if(targetDir == "rtl"){ + return !bidiEngine.hasBidiChar(text) ? bidiEngine.bidiTransform(text,"IRNNN","ILNNN") : bidi_const.RLM + bidi_const.RLM + text; + }else{ + return bidi_const.LRM + text; + } + } + return text; + } + if(g.isSvgWeb){ + if(targetDir == "rtl"){ + return bidiEngine.bidiTransform(text,"IRNNN","ILNNN"); + } + return text; + } + //unlike the g.Text that is rendered in logical layout for Bidi scripts. + //for g.TextPath in svg always visual -> bidi script is unreadable (except Opera). + if(g.isSvg){ + if(has("opera")){ + text = bidi_const.LRM + (targetDir == "rtl"? bidi_const.RLE : bidi_const.LRE) + text + bidi_const.PDF; + }else{ + text = (targetDir == "rtl") ? bidiEngine.bidiTransform(text,"IRYNN","VLNNN") : bidiEngine.bidiTransform(text,"ILYNN","VLNNN"); + } + } + } + return text; + }, + bidiPreprocess: function(newText){ + if(newText && (typeof newText == "string")){ + this.origText = newText; + newText = this.formatText(newText,this.textDir); + } + return newText; + } + }); + + var extendMethod = function(shape, method, before, after){ + // Some helper function. Used for extending metod of shape. + // shape: Object + // The shape we overriding it's metod. + // method: String + // The method that is extended, the original metod is called before or after + // functions that passed to extendMethod. + // before: function + // If defined this function will be executed before the original method. + // after: function + // If defined this function will be executed after the original method. + var old = shape.prototype[method]; + shape.prototype[method] = + function(){ + var rBefore; + if (before){ + rBefore = before.apply(this, arguments); + } + var r = old.call(this, rBefore); + if (after){ + r = after.call(this, r, arguments); + } + return r; + }; + }; + + var bidiPreprocess = function(newText){ + if (newText){ + if (newText.textDir){ + newText.textDir = validateTextDir(newText.textDir); + } + if (newText.text && (newText.text instanceof Array)){ + newText.text = newText.text.join(","); + } + } + if(newText && (newText.text != undefined || newText.textDir) && (this.textDir != newText.textDir || newText.text != this.origText)){ + // store the original text. + this.origText = (newText.text != undefined) ? newText.text : this.origText; + if(newText.textDir){ + this.textDir = newText.textDir; + } + newText.text = this.formatText(this.origText,this.textDir); + } + return this.bidiPreprocess(newText); + + }; + + // Istead of adding bidiPreprocess to all renders one by one + // use the extendMethod, at first there's a need for bidi transformation + // on text then call to original setShape. + extendMethod(g.Text,"setShape", bidiPreprocess, null); + extendMethod(g.TextPath,"setText", bidiPreprocess, null); + + var restoreText = function(origObj){ + var obj = lang.clone(origObj); + if (obj && this.origText){ + obj.text = this.origText; + } + return obj; + }; + + // Istead of adding restoreText to all renders one by one + // use the extendMethod, at first get the shape by calling the original getShape, + // than resrore original text (without the text transformations). + extendMethod(g.Text, "getShape", null, restoreText); + extendMethod(g.TextPath, "getText", null, restoreText); + + var groupTextDir = function(group, args){ + var textDir; + if (args && args[0]){ + textDir = validateTextDir(args[0]); + } + group.setTextDir(textDir ? textDir : this.textDir); + return group; // dojox.gfx.Group + }; + + // In creation of Group there's a need to update it's textDir, + // so instead of doing it in renders one by one (vml vs others) + // use the extendMethod, at first the original createGroup is applied, the + // groupTextDir which is setts Group's textDir as it's father's or if was defined + // by user by this value. + extendMethod(g.Surface, "createGroup", null, groupTextDir); + extendMethod(g.Group, "createGroup", null, groupTextDir); + + var textDirPreprocess = function(text){ + // inherit from surface / group if textDir is defined there + if(text){ + var textDir = text.textDir ? validateTextDir(text.textDir) : this.textDir; + if(textDir){ + text.textDir = textDir; + } + } + return text; + }; + + // In creation there's a need to some preprocess, + // so instead of doing it in renders one by one (vml vs others) + // use the extendMethod, at first the textDirPreprocess function handles the input + // then the original createXXXXXX is applied. + extendMethod(g.Surface,"createText", textDirPreprocess, null); + extendMethod(g.Surface,"createTextPath", textDirPreprocess, null); + extendMethod(g.Group,"createText", textDirPreprocess, null); + extendMethod(g.Group,"createTextPath", textDirPreprocess, null); + + g.createSurface = function(parentNode, width, height, textDir) { + var s = g[g.renderer].createSurface(parentNode, width, height); + var tDir = validateTextDir(textDir); + + if(g.isSvgWeb){ + s.textDir = tDir ? tDir : html.style(dom.byId(parentNode),"direction"); + return s; + } + // if textDir was defined use it, else get default value. + //s.textDir = tDir ? tDir : html.style(s.rawNode,"direction"); + if(g.isVml || g.isSvg || g.isCanvas){ + s.textDir = tDir ? tDir : html.style(s.rawNode,"direction"); + } + if(g.isSilverlight){ + // allow this once rawNode will be able for the silverlight + //s.textDir = tDir ? tDir : dojo.style(s.rawNode,"direction"); + s.textDir = tDir ? tDir : html.style(s._nodes[1],"direction"); + } + + return s; + }; + + // some helper functions + + function setTextDir(/*Object*/ obj, /*String*/ newTextDir){ + var tDir = validateTextDir(newTextDir); + if (tDir){ + g.utils.forEach(obj,function(e){ + if(e instanceof g.Surface || e instanceof g.Group){ + e.textDir = tDir; + } + if(e instanceof g.Text){ + e.setShape({textDir: tDir}); + } + if(e instanceof g.TextPath){ + e.setText({textDir: tDir}) + } + }, obj); + } + return obj; + } + + function validateTextDir(textDir){ + var validValues = ["ltr","rtl","auto"]; + if (textDir){ + textDir = textDir.toLowerCase(); + if (arr.indexOf(validValues, textDir) < 0){ + return null; + } + } + return textDir; + } + + return g; // return gfx api augmented with bidi support +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/arc.js b/js/dojo-release-1.7.2-src/dojox/gfx/arc.js new file mode 100644 index 0000000..8b233a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/arc.js @@ -0,0 +1,143 @@ +define(["./_base", "dojo/_base/lang", "./matrix"], + function(g, lang, m){ +/*===== + g = dojox.gfx; + dojox.gfx.arc = { + // summary: + // This module contains the core graphics Arc functions. + }; + =====*/ + + var twoPI = 2 * Math.PI, pi4 = Math.PI / 4, pi8 = Math.PI / 8, + pi48 = pi4 + pi8, curvePI4 = unitArcAsBezier(pi8); + + function unitArcAsBezier(alpha){ + // summary: return a start point, 1st and 2nd control points, and an end point of + // a an arc, which is reflected on the x axis + // alpha: Number + // angle in radians, the arc will be 2 * angle size + var cosa = Math.cos(alpha), sina = Math.sin(alpha), + p2 = {x: cosa + (4 / 3) * (1 - cosa), y: sina - (4 / 3) * cosa * (1 - cosa) / sina}; + return { // Object + s: {x: cosa, y: -sina}, + c1: {x: p2.x, y: -p2.y}, + c2: p2, + e: {x: cosa, y: sina} + }; + } + + var arc = g.arc = { + unitArcAsBezier: unitArcAsBezier, + /*===== + unitArcAsBezier: function(alpha) { + // summary: return a start point, 1st and 2nd control points, and an end point of + // a an arc, which is reflected on the x axis + // alpha: Number + // angle in radians, the arc will be 2 * angle size + }, + =====*/ + curvePI4: curvePI4, + // curvePI4: Object + // an object with properties of an arc around a unit circle from 0 to pi/4 + arcAsBezier: function(last, rx, ry, xRotg, large, sweep, x, y){ + // summary: calculates an arc as a series of Bezier curves + // given the last point and a standard set of SVG arc parameters, + // it returns an array of arrays of parameters to form a series of + // absolute Bezier curves. + // last: Object + // a point-like object as a start of the arc + // rx: Number + // a horizontal radius for the virtual ellipse + // ry: Number + // a vertical radius for the virtual ellipse + // xRotg: Number + // a rotation of an x axis of the virtual ellipse in degrees + // large: Boolean + // which part of the ellipse will be used (the larger arc if true) + // sweep: Boolean + // direction of the arc (CW if true) + // x: Number + // the x coordinate of the end point of the arc + // y: Number + // the y coordinate of the end point of the arc + + // calculate parameters + large = Boolean(large); + sweep = Boolean(sweep); + var xRot = m._degToRad(xRotg), + rx2 = rx * rx, ry2 = ry * ry, + pa = m.multiplyPoint( + m.rotate(-xRot), + {x: (last.x - x) / 2, y: (last.y - y) / 2} + ), + pax2 = pa.x * pa.x, pay2 = pa.y * pa.y, + c1 = Math.sqrt((rx2 * ry2 - rx2 * pay2 - ry2 * pax2) / (rx2 * pay2 + ry2 * pax2)); + if(isNaN(c1)){ c1 = 0; } + var ca = { + x: c1 * rx * pa.y / ry, + y: -c1 * ry * pa.x / rx + }; + if(large == sweep){ + ca = {x: -ca.x, y: -ca.y}; + } + // the center + var c = m.multiplyPoint( + [ + m.translate( + (last.x + x) / 2, + (last.y + y) / 2 + ), + m.rotate(xRot) + ], + ca + ); + // calculate the elliptic transformation + var elliptic_transform = m.normalize([ + m.translate(c.x, c.y), + m.rotate(xRot), + m.scale(rx, ry) + ]); + // start, end, and size of our arc + var inversed = m.invert(elliptic_transform), + sp = m.multiplyPoint(inversed, last), + ep = m.multiplyPoint(inversed, x, y), + startAngle = Math.atan2(sp.y, sp.x), + endAngle = Math.atan2(ep.y, ep.x), + theta = startAngle - endAngle; // size of our arc in radians + if(sweep){ theta = -theta; } + if(theta < 0){ + theta += twoPI; + }else if(theta > twoPI){ + theta -= twoPI; + } + + // draw curve chunks + var alpha = pi8, curve = curvePI4, step = sweep ? alpha : -alpha, + result = []; + for(var angle = theta; angle > 0; angle -= pi4){ + if(angle < pi48){ + alpha = angle / 2; + curve = unitArcAsBezier(alpha); + step = sweep ? alpha : -alpha; + angle = 0; // stop the loop + } + var c2, e, M = m.normalize([elliptic_transform, m.rotate(startAngle + step)]); + if(sweep){ + c1 = m.multiplyPoint(M, curve.c1); + c2 = m.multiplyPoint(M, curve.c2); + e = m.multiplyPoint(M, curve.e ); + }else{ + c1 = m.multiplyPoint(M, curve.c2); + c2 = m.multiplyPoint(M, curve.c1); + e = m.multiplyPoint(M, curve.s ); + } + // draw the curve + result.push([c1.x, c1.y, c2.x, c2.y, e.x, e.y]); + startAngle += 2 * step; + } + return result; // Array + } + }; + + return arc; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/attach.js b/js/dojo-release-1.7.2-src/dojox/gfx/attach.js new file mode 100644 index 0000000..c281a1c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/attach.js @@ -0,0 +1,10 @@ +define(["dojox/gfx"], function(){ + // TODO: the current implementation is not functional, please implement correctly + /* + dojo.getObject("dojox.gfx.arc", true); + var r = dojox.gfx.svg.attach[dojox.gfx.renderer]; + dojo.gfx.attachSurface = r.attachSurface; + dojo.gfx.attachNode = r.attachNode; + return r; + */ +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/canvas.js b/js/dojo-release-1.7.2-src/dojox/gfx/canvas.js new file mode 100644 index 0000000..badc57f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/canvas.js @@ -0,0 +1,843 @@ +define(["./_base", "dojo/_base/lang", "dojo/_base/array", "dojo/_base/declare", "dojo/_base/window", "dojo/dom-geometry", + "dojo/dom", "./_base", "./shape", "./path", "./arc", "./matrix", "./decompose"], + function(g, lang, arr, declare, win, domGeom, dom, gfxBase, gs, pathLib, ga, m, decompose ){ +/*===== + dojox.gfx.canvas = { + // module: + // dojox/gfx/canvas + // summary: + // This the graphics rendering bridge for W3C Canvas compliant browsers. + // Since Canvas is an immediate mode graphics api, with no object graph or + // eventing capabilities, use of this module alone will only add in drawing support. + // The additional module, canvasWithEvents extends this module with additional support + // for handling events on Canvas. By default, the support for events is now included + // however, if only drawing capabilities are needed, canvas event module can be disabled + // using the dojoConfig option, canvasEvents:true|false. + // The id of the Canvas renderer is 'canvas'. This id can be used when switch Dojo's + // graphics context between renderer implementations. See dojox.gfx._base switchRenderer + // API. + }; + g = dojox.gfx; + gs = dojox.gfx.shape; + pathLib.Path = dojox.gfx.path.Path; + pathLib.TextPath = dojox.gfx.path.TextPath; + canvas = dojox.gfx.canvas; + canvas.Shape = dojox.gfx.canvas.Shape; + gs.Shape = dojox.gfx.shape.Shape; + gs.Rect = dojox.gfx.shape.Rect; + gs.Ellipse = dojox.gfx.shape.Ellipse; + gs.Circle = dojox.gfx.shape.Circle; + gs.Line = dojox.gfx.shape.Line; + gs.PolyLine = dojox.gfx.shape.PolyLine; + gs.Image = dojox.gfx.shape.Image; + gs.Text = dojox.gfx.shape.Text; + gs.Surface = dojox.gfx.shape.Surface; + =====*/ + + var canvas = g.canvas = {}; + var pattrnbuffer = null, + mp = m.multiplyPoint, + pi = Math.PI, + twoPI = 2 * pi, + halfPI = pi /2, + extend = lang.extend; + + declare("dojox.gfx.canvas.Shape", gs.Shape, { + _render: function(/* Object */ ctx){ + // summary: render the shape + ctx.save(); + this._renderTransform(ctx); + this._renderShape(ctx); + this._renderFill(ctx, true); + this._renderStroke(ctx, true); + ctx.restore(); + }, + _renderTransform: function(/* Object */ ctx){ + if("canvasTransform" in this){ + var t = this.canvasTransform; + ctx.translate(t.dx, t.dy); + ctx.rotate(t.angle2); + ctx.scale(t.sx, t.sy); + ctx.rotate(t.angle1); + // The future implementation when vendors catch up with the spec: + // var t = this.matrix; + // ctx.transform(t.xx, t.yx, t.xy, t.yy, t.dx, t.dy); + } + }, + _renderShape: function(/* Object */ ctx){ + // nothing + }, + _renderFill: function(/* Object */ ctx, /* Boolean */ apply){ + if("canvasFill" in this){ + var fs = this.fillStyle; + if("canvasFillImage" in this){ + var w = fs.width, h = fs.height, + iw = this.canvasFillImage.width, ih = this.canvasFillImage.height, + // let's match the svg default behavior wrt. aspect ratio: xMidYMid meet + sx = w == iw ? 1 : w / iw, + sy = h == ih ? 1 : h / ih, + s = Math.min(sx,sy), //meet->math.min , slice->math.max + dx = (w - s * iw)/2, + dy = (h - s * ih)/2; + // the buffer used to scaled the image + pattrnbuffer.width = w; pattrnbuffer.height = h; + var copyctx = pattrnbuffer.getContext("2d"); + copyctx.clearRect(0, 0, w, h); + copyctx.drawImage(this.canvasFillImage, 0, 0, iw, ih, dx, dy, s*iw, s*ih); + this.canvasFill = ctx.createPattern(pattrnbuffer, "repeat"); + delete this.canvasFillImage; + } + ctx.fillStyle = this.canvasFill; + if(apply){ + // offset the pattern + if (fs.type==="pattern" && (fs.x !== 0 || fs.y !== 0)) { + ctx.translate(fs.x,fs.y); + } + ctx.fill(); + } + }else{ + ctx.fillStyle = "rgba(0,0,0,0.0)"; + } + }, + _renderStroke: function(/* Object */ ctx, /* Boolean */ apply){ + var s = this.strokeStyle; + if(s){ + ctx.strokeStyle = s.color.toString(); + ctx.lineWidth = s.width; + ctx.lineCap = s.cap; + if(typeof s.join == "number"){ + ctx.lineJoin = "miter"; + ctx.miterLimit = s.join; + }else{ + ctx.lineJoin = s.join; + } + if(apply){ ctx.stroke(); } + }else if(!apply){ + ctx.strokeStyle = "rgba(0,0,0,0.0)"; + } + }, + + // events are not implemented + getEventSource: function(){ return null; }, + connect: function(){}, + disconnect: function(){} + }); + + var modifyMethod = function(shape, method, extra){ + var old = shape.prototype[method]; + shape.prototype[method] = extra ? + function(){ + this.surface.makeDirty(); + old.apply(this, arguments); + extra.call(this); + return this; + } : + function(){ + this.surface.makeDirty(); + return old.apply(this, arguments); + }; + }; + + modifyMethod(canvas.Shape, "setTransform", + function(){ + // prepare Canvas-specific structures + if(this.matrix){ + this.canvasTransform = g.decompose(this.matrix); + }else{ + delete this.canvasTransform; + } + }); + + modifyMethod(canvas.Shape, "setFill", + function(){ + // prepare Canvas-specific structures + var fs = this.fillStyle, f; + if(fs){ + if(typeof(fs) == "object" && "type" in fs){ + var ctx = this.surface.rawNode.getContext("2d"); + switch(fs.type){ + case "linear": + case "radial": + f = fs.type == "linear" ? + ctx.createLinearGradient(fs.x1, fs.y1, fs.x2, fs.y2) : + ctx.createRadialGradient(fs.cx, fs.cy, 0, fs.cx, fs.cy, fs.r); + arr.forEach(fs.colors, function(step){ + f.addColorStop(step.offset, g.normalizeColor(step.color).toString()); + }); + break; + case "pattern": + if (!pattrnbuffer) { + pattrnbuffer = document.createElement("canvas"); + } + // no need to scale the image since the canvas.createPattern uses + // the original image data and not the scaled ones (see spec.) + // the scaling needs to be done at rendering time in a context buffer + var img =new Image(); + this.surface.downloadImage(img, fs.src); + this.canvasFillImage = img; + } + }else{ + // Set fill color using CSS RGBA func style + f = fs.toString(); + } + this.canvasFill = f; + }else{ + delete this.canvasFill; + } + }); + + modifyMethod(canvas.Shape, "setStroke"); + modifyMethod(canvas.Shape, "setShape"); + + declare("dojox.gfx.canvas.Group", canvas.Shape, { + // summary: a group shape (Canvas), which can be used + // to logically group shapes (e.g, to propagate matricies) + constructor: function(){ + gs.Container._init.call(this); + }, + _render: function(/* Object */ ctx){ + // summary: render the group + ctx.save(); + this._renderTransform(ctx); + for(var i = 0; i < this.children.length; ++i){ + this.children[i]._render(ctx); + } + ctx.restore(); + } + }); + + declare("dojox.gfx.canvas.Rect", [canvas.Shape, gs.Rect], { + // summary: a rectangle shape (Canvas) + _renderShape: function(/* Object */ ctx){ + var s = this.shape, r = Math.min(s.r, s.height / 2, s.width / 2), + xl = s.x, xr = xl + s.width, yt = s.y, yb = yt + s.height, + xl2 = xl + r, xr2 = xr - r, yt2 = yt + r, yb2 = yb - r; + ctx.beginPath(); + ctx.moveTo(xl2, yt); + if(r){ + ctx.arc(xr2, yt2, r, -halfPI, 0, false); + ctx.arc(xr2, yb2, r, 0, halfPI, false); + ctx.arc(xl2, yb2, r, halfPI, pi, false); + ctx.arc(xl2, yt2, r, pi, pi + halfPI, false); + }else{ + ctx.lineTo(xr2, yt); + ctx.lineTo(xr, yb2); + ctx.lineTo(xl2, yb); + ctx.lineTo(xl, yt2); + } + ctx.closePath(); + } + }); + + var bezierCircle = []; + (function(){ + var u = ga.curvePI4; + bezierCircle.push(u.s, u.c1, u.c2, u.e); + for(var a = 45; a < 360; a += 45){ + var r = m.rotateg(a); + bezierCircle.push(mp(r, u.c1), mp(r, u.c2), mp(r, u.e)); + } + })(); + + declare("dojox.gfx.canvas.Ellipse", [canvas.Shape, gs.Ellipse], { + // summary: an ellipse shape (Canvas) + setShape: function(){ + this.inherited(arguments); + // prepare Canvas-specific structures + var s = this.shape, t, c1, c2, r = [], + M = m.normalize([m.translate(s.cx, s.cy), m.scale(s.rx, s.ry)]); + t = mp(M, bezierCircle[0]); + r.push([t.x, t.y]); + for(var i = 1; i < bezierCircle.length; i += 3){ + c1 = mp(M, bezierCircle[i]); + c2 = mp(M, bezierCircle[i + 1]); + t = mp(M, bezierCircle[i + 2]); + r.push([c1.x, c1.y, c2.x, c2.y, t.x, t.y]); + } + this.canvasEllipse = r; + return this; + }, + _renderShape: function(/* Object */ ctx){ + var r = this.canvasEllipse; + ctx.beginPath(); + ctx.moveTo.apply(ctx, r[0]); + for(var i = 1; i < r.length; ++i){ + ctx.bezierCurveTo.apply(ctx, r[i]); + } + ctx.closePath(); + } + }); + + declare("dojox.gfx.canvas.Circle", [canvas.Shape, gs.Circle], { + // summary: a circle shape (Canvas) + _renderShape: function(/* Object */ ctx){ + var s = this.shape; + ctx.beginPath(); + ctx.arc(s.cx, s.cy, s.r, 0, twoPI, 1); + } + }); + + declare("dojox.gfx.canvas.Line", [canvas.Shape, gs.Line], { + // summary: a line shape (Canvas) + _renderShape: function(/* Object */ ctx){ + var s = this.shape; + ctx.beginPath(); + ctx.moveTo(s.x1, s.y1); + ctx.lineTo(s.x2, s.y2); + } + }); + + declare("dojox.gfx.canvas.Polyline", [canvas.Shape, gs.Polyline], { + // summary: a polyline/polygon shape (Canvas) + setShape: function(){ + this.inherited(arguments); + var p = this.shape.points, f = p[0], r, c, i; + this.bbox = null; + // normalize this.shape.points as array of points: [{x,y}, {x,y}, ...] + this._normalizePoints(); + // after _normalizePoints, if shape.points was [x1,y1,x2,y2,..], shape.points references a new array + // and p references the original points array + // prepare Canvas-specific structures, if needed + if(p.length){ + if(typeof f == "number"){ // already in the canvas format [x1,y1,x2,y2,...] + r = p; + }else{ // convert into canvas-specific format + r = []; + for(i=0; i < p.length; ++i){ + c = p[i]; + r.push(c.x, c.y); + } + } + }else{ + r = []; + } + this.canvasPolyline = r; + return this; + }, + _renderShape: function(/* Object */ ctx){ + var p = this.canvasPolyline; + if(p.length){ + ctx.beginPath(); + ctx.moveTo(p[0], p[1]); + for(var i = 2; i < p.length; i += 2){ + ctx.lineTo(p[i], p[i + 1]); + } + } + } + }); + + declare("dojox.gfx.canvas.Image", [canvas.Shape, gs.Image], { + // summary: an image shape (Canvas) + setShape: function(){ + this.inherited(arguments); + // prepare Canvas-specific structures + var img = new Image(); + this.surface.downloadImage(img, this.shape.src); + this.canvasImage = img; + return this; + }, + _renderShape: function(/* Object */ ctx){ + var s = this.shape; + ctx.drawImage(this.canvasImage, s.x, s.y, s.width, s.height); + } + }); + + declare("dojox.gfx.canvas.Text", [canvas.Shape, gs.Text], { + _setFont:function(){ + if (this.fontStyle){ + this.canvasFont = g.makeFontString(this.fontStyle); + } else { + delete this.canvasFont; + } + }, + + getTextWidth: function(){ + // summary: get the text width in pixels + var s = this.shape, w = 0, ctx; + if(s.text && s.text.length > 0){ + ctx = this.surface.rawNode.getContext("2d"); + ctx.save(); + this._renderTransform(ctx); + this._renderFill(ctx, false); + this._renderStroke(ctx, false); + if (this.canvasFont) + ctx.font = this.canvasFont; + w = ctx.measureText(s.text).width; + ctx.restore(); + } + return w; + }, + + // override to apply first fill and stroke ( + // the base implementation is for path-based shape that needs to first define the path then to fill/stroke it. + // Here, we need the fillstyle or strokestyle to be set before calling fillText/strokeText. + _render: function(/* Object */ctx){ + // summary: render the shape + // ctx : Object: the drawing context. + ctx.save(); + this._renderTransform(ctx); + this._renderFill(ctx, false); + this._renderStroke(ctx, false); + this._renderShape(ctx); + ctx.restore(); + }, + + _renderShape: function(ctx){ + // summary: a text shape (Canvas) + // ctx : Object: the drawing context. + var ta, s = this.shape; + if(!s.text || s.text.length == 0){ + return; + } + // text align + ta = s.align === 'middle' ? 'center' : s.align; + ctx.textAlign = ta; + if(this.canvasFont){ + ctx.font = this.canvasFont; + } + if(this.canvasFill){ + ctx.fillText(s.text, s.x, s.y); + } + if(this.strokeStyle){ + ctx.beginPath(); // fix bug in FF3.6. Fixed in FF4b8 + ctx.strokeText(s.text, s.x, s.y); + ctx.closePath(); + } + } + }); + modifyMethod(canvas.Text, "setFont"); + + // the next test is from https://github.com/phiggins42/has.js + if(win.global.CanvasRenderingContext2D){ + // need to doublecheck canvas is supported since module can be loaded if building layers (ticket 14288) + var ctx2d = win.doc.createElement("canvas").getContext("2d"); + if(ctx2d && typeof ctx2d.fillText != "function"){ + canvas.Text.extend({ + getTextWidth: function(){ + return 0; + }, + _renderShape: function(){ + } + }); + } + } + + + var pathRenderers = { + M: "_moveToA", m: "_moveToR", + L: "_lineToA", l: "_lineToR", + H: "_hLineToA", h: "_hLineToR", + V: "_vLineToA", v: "_vLineToR", + C: "_curveToA", c: "_curveToR", + S: "_smoothCurveToA", s: "_smoothCurveToR", + Q: "_qCurveToA", q: "_qCurveToR", + T: "_qSmoothCurveToA", t: "_qSmoothCurveToR", + A: "_arcTo", a: "_arcTo", + Z: "_closePath", z: "_closePath" + }; + + declare("dojox.gfx.canvas.Path", [canvas.Shape, pathLib.Path], { + // summary: a path shape (Canvas) + constructor: function(){ + this.lastControl = {}; + }, + setShape: function(){ + this.canvasPath = []; + return this.inherited(arguments); + }, + _updateWithSegment: function(segment){ + var last = lang.clone(this.last); + this[pathRenderers[segment.action]](this.canvasPath, segment.action, segment.args); + this.last = last; + this.inherited(arguments); + }, + _renderShape: function(/* Object */ ctx){ + var r = this.canvasPath; + ctx.beginPath(); + for(var i = 0; i < r.length; i += 2){ + ctx[r[i]].apply(ctx, r[i + 1]); + } + }, + _moveToA: function(result, action, args){ + result.push("moveTo", [args[0], args[1]]); + for(var i = 2; i < args.length; i += 2){ + result.push("lineTo", [args[i], args[i + 1]]); + } + this.last.x = args[args.length - 2]; + this.last.y = args[args.length - 1]; + this.lastControl = {}; + }, + _moveToR: function(result, action, args){ + if("x" in this.last){ + result.push("moveTo", [this.last.x += args[0], this.last.y += args[1]]); + }else{ + result.push("moveTo", [this.last.x = args[0], this.last.y = args[1]]); + } + for(var i = 2; i < args.length; i += 2){ + result.push("lineTo", [this.last.x += args[i], this.last.y += args[i + 1]]); + } + this.lastControl = {}; + }, + _lineToA: function(result, action, args){ + for(var i = 0; i < args.length; i += 2){ + result.push("lineTo", [args[i], args[i + 1]]); + } + this.last.x = args[args.length - 2]; + this.last.y = args[args.length - 1]; + this.lastControl = {}; + }, + _lineToR: function(result, action, args){ + for(var i = 0; i < args.length; i += 2){ + result.push("lineTo", [this.last.x += args[i], this.last.y += args[i + 1]]); + } + this.lastControl = {}; + }, + _hLineToA: function(result, action, args){ + for(var i = 0; i < args.length; ++i){ + result.push("lineTo", [args[i], this.last.y]); + } + this.last.x = args[args.length - 1]; + this.lastControl = {}; + }, + _hLineToR: function(result, action, args){ + for(var i = 0; i < args.length; ++i){ + result.push("lineTo", [this.last.x += args[i], this.last.y]); + } + this.lastControl = {}; + }, + _vLineToA: function(result, action, args){ + for(var i = 0; i < args.length; ++i){ + result.push("lineTo", [this.last.x, args[i]]); + } + this.last.y = args[args.length - 1]; + this.lastControl = {}; + }, + _vLineToR: function(result, action, args){ + for(var i = 0; i < args.length; ++i){ + result.push("lineTo", [this.last.x, this.last.y += args[i]]); + } + this.lastControl = {}; + }, + _curveToA: function(result, action, args){ + for(var i = 0; i < args.length; i += 6){ + result.push("bezierCurveTo", args.slice(i, i + 6)); + } + this.last.x = args[args.length - 2]; + this.last.y = args[args.length - 1]; + this.lastControl.x = args[args.length - 4]; + this.lastControl.y = args[args.length - 3]; + this.lastControl.type = "C"; + }, + _curveToR: function(result, action, args){ + for(var i = 0; i < args.length; i += 6){ + result.push("bezierCurveTo", [ + this.last.x + args[i], + this.last.y + args[i + 1], + this.lastControl.x = this.last.x + args[i + 2], + this.lastControl.y = this.last.y + args[i + 3], + this.last.x + args[i + 4], + this.last.y + args[i + 5] + ]); + this.last.x += args[i + 4]; + this.last.y += args[i + 5]; + } + this.lastControl.type = "C"; + }, + _smoothCurveToA: function(result, action, args){ + for(var i = 0; i < args.length; i += 4){ + var valid = this.lastControl.type == "C"; + result.push("bezierCurveTo", [ + valid ? 2 * this.last.x - this.lastControl.x : this.last.x, + valid ? 2 * this.last.y - this.lastControl.y : this.last.y, + args[i], + args[i + 1], + args[i + 2], + args[i + 3] + ]); + this.lastControl.x = args[i]; + this.lastControl.y = args[i + 1]; + this.lastControl.type = "C"; + } + this.last.x = args[args.length - 2]; + this.last.y = args[args.length - 1]; + }, + _smoothCurveToR: function(result, action, args){ + for(var i = 0; i < args.length; i += 4){ + var valid = this.lastControl.type == "C"; + result.push("bezierCurveTo", [ + valid ? 2 * this.last.x - this.lastControl.x : this.last.x, + valid ? 2 * this.last.y - this.lastControl.y : this.last.y, + this.last.x + args[i], + this.last.y + args[i + 1], + this.last.x + args[i + 2], + this.last.y + args[i + 3] + ]); + this.lastControl.x = this.last.x + args[i]; + this.lastControl.y = this.last.y + args[i + 1]; + this.lastControl.type = "C"; + this.last.x += args[i + 2]; + this.last.y += args[i + 3]; + } + }, + _qCurveToA: function(result, action, args){ + for(var i = 0; i < args.length; i += 4){ + result.push("quadraticCurveTo", args.slice(i, i + 4)); + } + this.last.x = args[args.length - 2]; + this.last.y = args[args.length - 1]; + this.lastControl.x = args[args.length - 4]; + this.lastControl.y = args[args.length - 3]; + this.lastControl.type = "Q"; + }, + _qCurveToR: function(result, action, args){ + for(var i = 0; i < args.length; i += 4){ + result.push("quadraticCurveTo", [ + this.lastControl.x = this.last.x + args[i], + this.lastControl.y = this.last.y + args[i + 1], + this.last.x + args[i + 2], + this.last.y + args[i + 3] + ]); + this.last.x += args[i + 2]; + this.last.y += args[i + 3]; + } + this.lastControl.type = "Q"; + }, + _qSmoothCurveToA: function(result, action, args){ + for(var i = 0; i < args.length; i += 2){ + var valid = this.lastControl.type == "Q"; + result.push("quadraticCurveTo", [ + this.lastControl.x = valid ? 2 * this.last.x - this.lastControl.x : this.last.x, + this.lastControl.y = valid ? 2 * this.last.y - this.lastControl.y : this.last.y, + args[i], + args[i + 1] + ]); + this.lastControl.type = "Q"; + } + this.last.x = args[args.length - 2]; + this.last.y = args[args.length - 1]; + }, + _qSmoothCurveToR: function(result, action, args){ + for(var i = 0; i < args.length; i += 2){ + var valid = this.lastControl.type == "Q"; + result.push("quadraticCurveTo", [ + this.lastControl.x = valid ? 2 * this.last.x - this.lastControl.x : this.last.x, + this.lastControl.y = valid ? 2 * this.last.y - this.lastControl.y : this.last.y, + this.last.x + args[i], + this.last.y + args[i + 1] + ]); + this.lastControl.type = "Q"; + this.last.x += args[i]; + this.last.y += args[i + 1]; + } + }, + _arcTo: function(result, action, args){ + var relative = action == "a"; + for(var i = 0; i < args.length; i += 7){ + var x1 = args[i + 5], y1 = args[i + 6]; + if(relative){ + x1 += this.last.x; + y1 += this.last.y; + } + var arcs = ga.arcAsBezier( + this.last, args[i], args[i + 1], args[i + 2], + args[i + 3] ? 1 : 0, args[i + 4] ? 1 : 0, + x1, y1 + ); + arr.forEach(arcs, function(p){ + result.push("bezierCurveTo", p); + }); + this.last.x = x1; + this.last.y = y1; + } + this.lastControl = {}; + }, + _closePath: function(result, action, args){ + result.push("closePath", []); + this.lastControl = {}; + } + }); + arr.forEach(["moveTo", "lineTo", "hLineTo", "vLineTo", "curveTo", + "smoothCurveTo", "qCurveTo", "qSmoothCurveTo", "arcTo", "closePath"], + function(method){ modifyMethod(canvas.Path, method); } + ); + + declare("dojox.gfx.canvas.TextPath", [canvas.Shape, pathLib.TextPath], { + // summary: a text shape (Canvas) + _renderShape: function(/* Object */ ctx){ + var s = this.shape; + // nothing for the moment + }, + _setText: function(){ + // not implemented + }, + _setFont: function(){ + // not implemented + } + }); + + declare("dojox.gfx.canvas.Surface", gs.Surface, { + // summary: a surface object to be used for drawings (Canvas) + constructor: function(){ + gs.Container._init.call(this); + this.pendingImageCount = 0; + this.makeDirty(); + }, + setDimensions: function(width, height){ + // summary: sets the width and height of the rawNode + // width: String: width of surface, e.g., "100px" + // height: String: height of surface, e.g., "100px" + this.width = g.normalizedLength(width); // in pixels + this.height = g.normalizedLength(height); // in pixels + if(!this.rawNode) return this; + var dirty = false; + if (this.rawNode.width != this.width){ + this.rawNode.width = this.width; + dirty = true; + } + if (this.rawNode.height != this.height){ + this.rawNode.height = this.height; + dirty = true; + } + if (dirty) + this.makeDirty(); + return this; // self + }, + getDimensions: function(){ + // summary: returns an object with properties "width" and "height" + return this.rawNode ? {width: this.rawNode.width, height: this.rawNode.height} : null; // Object + }, + _render: function(){ + // summary: render the all shapes + if(this.pendingImageCount){ return; } + var ctx = this.rawNode.getContext("2d"); + ctx.save(); + ctx.clearRect(0, 0, this.rawNode.width, this.rawNode.height); + for(var i = 0; i < this.children.length; ++i){ + this.children[i]._render(ctx); + } + ctx.restore(); + if("pendingRender" in this){ + clearTimeout(this.pendingRender); + delete this.pendingRender; + } + }, + makeDirty: function(){ + // summary: internal method, which is called when we may need to redraw + if(!this.pendingImagesCount && !("pendingRender" in this)){ + this.pendingRender = setTimeout(lang.hitch(this, this._render), 0); + } + }, + downloadImage: function(img, url){ + // summary: + // internal method, which starts an image download and renders, when it is ready + // img: Image: + // the image object + // url: String: + // the url of the image + var handler = lang.hitch(this, this.onImageLoad); + if(!this.pendingImageCount++ && "pendingRender" in this){ + clearTimeout(this.pendingRender); + delete this.pendingRender; + } + img.onload = handler; + img.onerror = handler; + img.onabort = handler; + img.src = url; + }, + onImageLoad: function(){ + if(!--this.pendingImageCount){ this._render(); } + }, + + // events are not implemented + getEventSource: function(){ return null; }, + connect: function(){}, + disconnect: function(){} + }); + + canvas.createSurface = function(parentNode, width, height){ + // summary: creates a surface (Canvas) + // parentNode: Node: a parent node + // width: String: width of surface, e.g., "100px" + // height: String: height of surface, e.g., "100px" + + if(!width && !height){ + var pos = domGeom.position(parentNode); + width = width || pos.w; + height = height || pos.h; + } + if(typeof width == "number"){ + width = width + "px"; + } + if(typeof height == "number"){ + height = height + "px"; + } + + var s = new canvas.Surface(), + p = dom.byId(parentNode), + c = p.ownerDocument.createElement("canvas"); + + c.width = g.normalizedLength(width); // in pixels + c.height = g.normalizedLength(height); // in pixels + + p.appendChild(c); + s.rawNode = c; + s._parent = p; + s.surface = s; + return s; // dojox.gfx.Surface + }; + + // Extenders + + var C = gs.Container, Container = { + add: function(shape){ + this.surface.makeDirty(); + return C.add.apply(this, arguments); + }, + remove: function(shape, silently){ + this.surface.makeDirty(); + return C.remove.apply(this, arguments); + }, + clear: function(){ + this.surface.makeDirty(); + return C.clear.apply(this, arguments); + }, + _moveChildToFront: function(shape){ + this.surface.makeDirty(); + return C._moveChildToFront.apply(this, arguments); + }, + _moveChildToBack: function(shape){ + this.surface.makeDirty(); + return C._moveChildToBack.apply(this, arguments); + } + }; + + var Creator = { + // summary: Canvas shape creators + createObject: function(shapeType, rawShape) { + // summary: creates an instance of the passed shapeType class + // shapeType: Function: a class constructor to create an instance of + // rawShape: Object: properties to be passed in to the classes "setShape" method + // overrideSize: Boolean: set the size explicitly, if true + var shape = new shapeType(); + shape.surface = this.surface; + shape.setShape(rawShape); + this.add(shape); + return shape; // dojox.gfx.Shape + } + }; + + extend(canvas.Group, Container); + extend(canvas.Group, gs.Creator); + extend(canvas.Group, Creator); + + extend(canvas.Surface, Container); + extend(canvas.Surface, gs.Creator); + extend(canvas.Surface, Creator); + + // no event support -> nothing to fix. + canvas.fixTarget = function(event, gfxElement){ + return true; + }; + + return canvas; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/canvasWithEvents.js b/js/dojo-release-1.7.2-src/dojox/gfx/canvasWithEvents.js new file mode 100644 index 0000000..4a6902a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/canvasWithEvents.js @@ -0,0 +1,642 @@ +define(["dojo/_base/lang", "dojo/_base/declare", "dojo/_base/connect", "dojo/_base/Color", "dojo/dom", + "dojo/dom-geometry", "./_base","./canvas", "./shape", "./matrix"], + function(lang, declare, hub, Color, dom, domGeom, g, canvas, shapeLib, m){ +/*===== + dojox.gfx.canvasWithEvents = { + // module: + // dojox/gfx/canvasWithEvents + // summary: + // This the graphics rendering bridge for W3C Canvas compliant browsers which extends + // the basic canvas drawing renderer bridge to add additional support for graphics events + // on Shapes. + // Since Canvas is an immediate mode graphics api, with no object graph or + // eventing capabilities, use of the canvas module alone will only add in drawing support. + // This additional module, canvasWithEvents extends this module with additional support + // for handling events on Canvas. By default, the support for events is now included + // however, if only drawing capabilities are needed, canvas event module can be disabled + // using the dojoConfig option, canvasEvents:true|false. + // The id of the Canvas renderer is 'canvasWithEvents'. This id can be used when switch Dojo's + // graphics context between renderer implementations. See dojox.gfx._base switchRenderer + // API. + }; + g = dojox.gfx; + canvas.Shape = dojox.gfx.canvas.Shape; + canvas.Group = dojox.gfx.canvas.Group; + canvas.Image = dojox.gfx.canvas.Image; + canvas.Text = dojox.gfx.canvas.Text; + canvas.Rect = dojox.gfx.canvas.Rect; + canvas.Circle = dojox.gfx.canvas.Circle; + canvas.Ellipse = dojox.gfx.canvas.Ellipse; + canvas.Line = dojox.gfx.canvas.Line; + canvas.PolyLine = dojox.gfx.canvas.PolyLine; + canvas.TextPath = dojox.gfx.canvas.TextPath; + canvas.Path = dojox.gfx.canvas.Path; + canvas.Surface = dojox.gfx.canvas.Surface; + canvasEvent.Shape = dojox.gfx.canvasWithEvents.Shape; + + =====*/ + var canvasEvent = g.canvasWithEvents = {}; + + declare("dojox.gfx.canvasWithEvents.Shape", canvas.Shape, { + + _testInputs: function(/* Object */ctx, /* Array */ pos){ + if (!this.canvasFill && this.strokeStyle) { + // pixel-based until a getStrokedPath-like api is available on the path + this._hitTestPixel(ctx, pos); + } else { + this._renderShape(ctx); + var cnt = pos.length, t = this.getTransform(); + for (var i = 0; i < pos.length; ++i) { + var input = pos[i]; + // already hit + if (input.target) + continue; + var x = input.x, y = input.y; + var p = t ? m.multiplyPoint(m.invert(t), x, y) : { + x: x, + y: y + }; + input.target = this._hitTestGeometry(ctx, p.x, p.y); + } + } + }, + _hitTestPixel: function(/* Object */ctx, /* Array */ pos){ + for (var i = 0; i < pos.length; ++i) { + var input = pos[i]; + if (input.target) + continue; + var x = input.x, y = input.y; + ctx.clearRect(0,0,1,1); + ctx.save(); + ctx.translate(-x, -y); + this._render(ctx, true); + input.target = ctx.getImageData(0, 0, 1, 1).data[0] ? this : null; + ctx.restore(); + } + }, + _hitTestGeometry: function(ctx, x, y){ + return ctx.isPointInPath(x, y) ? this : null; + }, + + _renderFill: function(/* Object */ ctx, /* Boolean */ apply){ + // summary: + // render fill for the shape + // ctx: + // a canvas context object + // apply: + // whether ctx.fill() shall be called + if(ctx.pickingMode){ + if("canvasFill" in this && apply){ ctx.fill(); } + return; + } + this.inherited(arguments); + }, + _renderStroke: function(/* Object */ ctx, /* Boolean */ apply){ + // summary: + // render stroke for the shape + // ctx: + // a canvas context object + // apply: + // whether ctx.stroke() shall be called + if (this.strokeStyle && ctx.pickingMode) { + var c = this.strokeStyle.color; + try { + this.strokeStyle.color = new Color(ctx.strokeStyle); + this.inherited(arguments); + } finally { + this.strokeStyle.color = c; + } + } else{ + this.inherited(arguments); + } + }, + + // events + + getEventSource: function(){ + // summary: returns this gfx shape event source, which is the surface rawnode in the case of canvas. + + return this.surface.getEventSource(); + }, + + connect: function(name, object, method){ + // summary: connects a handler to an event on this shape + this.surface._setupEvents(name); // setup events on demand + // No need to fix callback. The listeners registered by + // '_setupEvents()' are always invoked first and they + // already 'fix' the event + return arguments.length > 2 ? // Object + hub.connect(this, name, object, method) : hub.connect(this, name, object); + }, + disconnect: function(token){ + // summary: disconnects an event handler + hub.disconnect(token); + }, + // connect hook + oncontextmenu: function(){}, + onclick: function(){}, + ondblclick: function(){}, + onmouseenter: function(){}, + onmouseleave: function(){}, + onmouseout: function(){}, + onmousedown: function(){}, + ontouchstart: function(){}, + touchstart: function(){}, + onmouseup: function(){}, + ontouchend: function(){}, + touchend: function(){}, + onmouseover: function(){}, + onmousemove: function(){}, + ontouchmove: function(){}, + touchmove: function(){}, + onkeydown: function(){}, + onkeyup: function(){} + }); + + declare("dojox.gfx.canvasWithEvents.Group", [canvasEvent.Shape, canvas.Group], { + _testInputs: function(/*Object*/ctx, /*Array*/ pos){ + var children = this.children, t = this.getTransform(), i, j; + if(children.length == 0){ + return; + } + var posbk = []; + for(i = 0; i < pos.length; ++i){ + var input = pos[i]; + // backup position before transform applied + posbk[i] = { + x: input.x, + y: input.y + }; + if(input.target) continue; + var x = input.x, y = input.y; + var p = t ? m.multiplyPoint(m.invert(t), x, y) : { + x: x, + y: y + }; + input.x = p.x; + input.y = p.y; + } + for(i = children.length - 1; i >= 0; --i){ + children[i]._testInputs(ctx, pos); + // does it need more hit tests ? + var allFound = true; + for(j = 0; j < pos.length; ++j){ + if(pos[j].target == null){ + allFound = false; + break; + } + } + if(allFound){ + break; + } + } + for(i = 0; i < pos.length; ++i){ + pos[i].x = posbk[i].x; + pos[i].y = posbk[i].y; + } + } + }); + + declare("dojox.gfx.canvasWithEvents.Image", [canvasEvent.Shape, canvas.Image], { + _renderShape: function(/* Object */ ctx){ + // summary: + // render image + // ctx: + // a canvas context object + var s = this.shape; + if(ctx.pickingMode){ + ctx.fillRect(s.x, s.y, s.width, s.height); + }else{ + this.inherited(arguments); + } + }, + + _hitTestGeometry: function(ctx, x, y){ + // TODO: improve hit testing to take into account transparency + var s = this.shape; + return x >= s.x && x <= s.x + s.width && y >= s.y && y <= s.y + s.height ? this : null; + } + }); + + declare("dojox.gfx.canvasWithEvents.Text", [canvasEvent.Shape, canvas.Text], { + _testInputs: function(ctx, pos){ + return this._hitTestPixel(ctx, pos); + } + }); + + + declare("dojox.gfx.canvasWithEvents.Rect", [canvasEvent.Shape, canvas.Rect], {}); + declare("dojox.gfx.canvasWithEvents.Circle", [canvasEvent.Shape, canvas.Circle], {}); + declare("dojox.gfx.canvasWithEvents.Ellipse", [canvasEvent.Shape, canvas.Ellipse],{}); + declare("dojox.gfx.canvasWithEvents.Line", [canvasEvent.Shape, canvas.Line],{}); + declare("dojox.gfx.canvasWithEvents.Polyline", [canvasEvent.Shape, canvas.Polyline],{}); + declare("dojox.gfx.canvasWithEvents.Path", [canvasEvent.Shape, canvas.Path],{}); + declare("dojox.gfx.canvasWithEvents.TextPath", [canvasEvent.Shape, canvas.TextPath],{}); + + + // a map that redirects shape-specific events to the canvas event handler that deals with these events + var _eventsRedirectMap = { + onmouseenter : 'onmousemove', + onmouseleave : 'onmousemove', + onmouseout : 'onmousemove', + onmouseover : 'onmousemove', + touchstart : 'ontouchstart', + touchend : 'ontouchend', + touchmove : 'ontouchmove' + }; + var _eventsShortNameMap = { + ontouchstart : 'touchstart', + ontouchend : 'touchend', + ontouchmove : 'touchmove' + }; + + var uagent = navigator.userAgent.toLowerCase(), + isiOS = uagent.search('iphone') > -1 || + uagent.search('ipad') > -1 || + uagent.search('ipod') > -1; + + declare("dojox.gfx.canvasWithEvents.Surface", canvas.Surface, { + constructor:function(){ + this._pick = { curr: null, last: null }; + this._pickOfMouseDown = null; + this._pickOfMouseUp = null; + }, + + connect: function(/*String*/name, /*Object*/object, /*Function|String*/method){ + // summary: connects a handler to an event on this surface + // name : String + // The event name + // object: Object + // The object that method will receive as "this". + // method: Function + // A function reference, or name of a function in context. + + if (name.indexOf('touch') !== -1) { + // in case of surface.connect('touchXXX'...), we must root the handler to the + // specific touch event processing (done in fireTouchEvents) so that the event is properly configured. + // So, we activate the shape-level event processing calling _setupEvents, + // and connect to the _ontouchXXXImpl_ hooks that are called back by invokeHandler() + this._setupEvents(name); + name = "_on" + name + "Impl_"; + return hub.connect(this, name, object, method); + } else { + this._initMirrorCanvas(); + return hub.connect(this.getEventSource(), name, null, + shapeLib.fixCallback(this, g.fixTarget, object, method)); + } + }, + + // connection hooks for touch events connect + _ontouchstartImpl_: function(){}, + _ontouchendImpl_: function(){}, + _ontouchmoveImpl_: function(){}, + + _initMirrorCanvas: function(){ + if (!this.mirrorCanvas) { + var p = this._parent, mirror = p.ownerDocument.createElement("canvas"); + mirror.width = 1; + mirror.height = 1; + mirror.style.position = 'absolute'; + mirror.style.left = '-99999px'; + mirror.style.top = '-99999px'; + p.appendChild(mirror); + this.mirrorCanvas = mirror; + } + }, + + _setupEvents: function(eventName){ + // summary: + // setup event listeners if not yet + + // onmouseenter and onmouseleave shape events are handled in the onmousemove surface handler + if (eventName in _eventsRedirectMap) + eventName = _eventsRedirectMap[eventName]; + if (this._eventsH && this._eventsH[eventName]) { + // the required listener has already been connected + return; + } + // a mirror canvas for shape picking + this._initMirrorCanvas(); + if (!this._eventsH) + this._eventsH = {}; + // register event hooks if not done yet + this._eventsH[eventName] = hub.connect(this.getEventSource(), eventName, + shapeLib.fixCallback(this, g.fixTarget, this, "_" + eventName)); + if (eventName === 'onclick' || eventName==='ondblclick') { + if(!this._eventsH['onmousedown']){ + this._eventsH['onmousedown'] = hub.connect(this.getEventSource(), + 'onmousedown', shapeLib.fixCallback(this, g.fixTarget, this, "_onmousedown")); + } + if(!this._eventsH['onmouseup']){ + this._eventsH['onmouseup'] = hub.connect(this.getEventSource(), + 'onmouseup', shapeLib.fixCallback(this, g.fixTarget, this, "_onmouseup")); + } + } + }, + + destroy: function(){ + // summary: stops the move, deletes all references, so the object can be garbage-collected + canvas.Surface.destroy.apply(this); + + // destroy events and objects + for(var i in this._eventsH){ + hub.disconnect(this._eventsH[i]); + } + this._eventsH = this.mirrorCanvas = null; + }, + + // events + getEventSource: function(){ + // summary: returns the canvas DOM node for surface-level events + return this.rawNode; + }, + + // internal handlers used to implement shape-level event notification + _invokeHandler: function(base, method, event){ + // Invokes handler function + var handler = base[method]; + if(handler && handler.after){ + handler.apply(base, [event]); + }else if (method in _eventsShortNameMap){ + // there may be a synonym event name (touchstart -> ontouchstart) + handler = base[_eventsShortNameMap[method]]; + if(handler && handler.after){ + handler.apply(base, [event]); + } + } + if(!handler && method.indexOf('touch') !== -1){ + // special case for surface touch handlers + method = "_" + method + "Impl_"; + handler = base[method]; + if(handler){ + handler.apply(base, [event]); + } + } + // Propagates event up in the DOM hierarchy only if event + // has not been stopped (event.cancelBubble is true) + if (!isEventStopped(event) && base.parent) { + this._invokeHandler(base.parent, method, event); + } + }, + _oncontextmenu: function(e){ + // summary: triggers onclick + // this._pick.curr = an array of target for touch event, one target instance for mouse events + if(this._pick.curr){ + this._invokeHandler(this._pick.curr, 'oncontextmenu', e); + } + }, + _ondblclick: function(e){ + // summary: triggers onclick + // this._pick.curr = an array of target for touch event, one target instance for mouse events + if(this._pickOfMouseUp){ + this._invokeHandler(this._pickOfMouseUp, 'ondblclick', e); + } + }, + _onclick: function(e){ + // summary: triggers onclick + // this._pick.curr = an array of target for touch event, one target instance for mouse events + if(this._pickOfMouseUp && this._pickOfMouseUp == this._pickOfMouseDown){ + this._invokeHandler(this._pickOfMouseUp, 'onclick', e); + } + }, + _onmousedown: function(e){ + // summary: triggers onmousedown + this._pickOfMouseDown = this._pick.curr; + // this._pick.curr = an array of target for touch event, one target instance for mouse events + if(this._pick.curr){ + this._invokeHandler(this._pick.curr, 'onmousedown', e); + } + }, + _ontouchstart: function(e){ + // summary: triggers ontouchstart + // this._pick.curr = an array of target for touch event, one target instance for mouse events + if (this._pick.curr) { + this._fireTouchEvent(e); + } + + }, + _onmouseup: function(e){ + // summary: triggers onmouseup + // this._pick.curr = an array of target for touch event, one target instance for mouse events + this._pickOfMouseUp = this._pick.curr; + if(this._pick.curr){ + this._invokeHandler(this._pick.curr, 'onmouseup', e); + } + }, + _ontouchend: function(e){ + // summary: triggers ontouchend + // this._pick.curr = an array of target for touch event, one target instance for mouse events + if(this._pick.curr){ + for(var i = 0; i < this._pick.curr.length; ++i){ + if(this._pick.curr[i].target){ + e.gfxTarget = this._pick.curr[i].target; + this._invokeHandler(this._pick.curr[i].target, 'ontouchend', e); + } + } + } + }, + _onmousemove: function(e){ + // summary: triggers onmousemove, onmouseenter, onmouseleave + // this._pick.curr = an array of target for touch event, one target instance for mouse events + if(this._pick.last && this._pick.last != this._pick.curr){ + this._invokeHandler(this._pick.last, 'onmouseleave', e); + this._invokeHandler(this._pick.last, 'onmouseout', e); + } + if(this._pick.curr){ + if(this._pick.last == this._pick.curr){ + this._invokeHandler(this._pick.curr, 'onmousemove', e); + }else{ + this._invokeHandler(this._pick.curr, 'onmouseenter', e); + this._invokeHandler(this._pick.curr, 'onmouseover', e); + } + } + }, + _ontouchmove: function(e){ + // summary: triggers ontouchmove + if(this._pick.curr){ + this._fireTouchEvent(e); + } + }, + + _fireTouchEvent: function(e){ + // this._pick.curr = an array of target for touch event, one target instance for mouse events + var toFire = []; // the per-shape events list to fire + // for each positive picking: + // .group all pickings by target + // .collect all touches for the picking target + for(var i = 0; i < this._pick.curr.length; ++i){ + var pick = this._pick.curr[i]; + if(pick.target){ + // touches for this target + var gfxtt = pick.target.__gfxtt; + if(!gfxtt){ + gfxtt = []; + pick.target.__gfxtt = gfxtt; + } + // store the touch that yielded to this picking + gfxtt.push(pick.t); + // if the target has not been added yet, add it + if(!pick.target.__inToFire){ + toFire.push(pick.target); + pick.target.__inToFire=true; + } + } + } + if(toFire.length === 0){ + // no target, invokes the surface handler + this._invokeHandler(this, 'on' + e.type, e); + }else{ + for(i = 0; i < toFire.length; ++i){ + (function(){ + var targetTouches = toFire[i].__gfxtt; + // fires the original event BUT with our own targetTouches array. + // Note for iOS: + var evt = lang.delegate(e, {gfxTarget: toFire[i]}); + if(isiOS){ + // must use the original preventDefault function or iOS will throw a TypeError + evt.preventDefault = function(){e.preventDefault();}; + evt.stopPropagation = function(){e.stopPropagation();}; + } + // override targetTouches with the filtered one + evt.__defineGetter__('targetTouches', function(){return targetTouches;}); + // clean up + delete toFire[i].__gfxtt; + delete toFire[i].__inToFire; + // fire event + this._invokeHandler(toFire[i], 'on' + e.type, evt); + }).call(this); + } + } + }, + _onkeydown: function(){}, // needed? + _onkeyup: function(){}, // needed? + + _whatsUnderEvent: function(evt){ + // summary: returns the shape under the mouse event + // evt: mouse event + + var surface = this, i, + pos = domGeom.position(surface.rawNode, true), + inputs = [], changedTouches = evt.changedTouches, touches = evt.touches; + // collect input events targets + if(changedTouches){ + for(i = 0; i < changedTouches.length; ++i){ + inputs.push({ + t: changedTouches[i], + x: changedTouches[i].pageX - pos.x, + y: changedTouches[i].pageY - pos.y + }); + } + }else if(touches){ + for(i = 0; i < touches.length; ++i){ + inputs.push({ + t: touches[i], + x: touches[i].pageX - pos.x, + y: touches[i].pageY - pos.y + }); + } + }else{ + inputs.push({ + x : evt.pageX - pos.x, + y : evt.pageY - pos.y + }); + } + + var mirror = surface.mirrorCanvas, + ctx = mirror.getContext('2d'), + children = surface.children; + + ctx.clearRect(0, 0, mirror.width, mirror.height); + ctx.save(); + ctx.strokeStyle = "rgba(127,127,127,1.0)"; + ctx.fillStyle = "rgba(127,127,127,1.0)"; + ctx.pickingMode = true; + var pick = null; + // process the inputs to find the target. + for(i = children.length-1; i >= 0; i--){ + children[i]._testInputs(ctx, inputs); + // does it need more hit tests ? + var allFound = true; + for(j = 0; j < inputs.length; ++j){ + if(inputs[j].target == null){ + allFound = false; + break; + } + } + if(allFound){ + break; + } + } + ctx.restore(); + // touch event handlers expect an array of target, mouse handlers one target + return (touches || changedTouches) ? inputs : inputs[0].target; + } + }); + + canvasEvent.createSurface = function(parentNode, width, height){ + // summary: creates a surface (Canvas) + // parentNode: Node: a parent node + // width: String: width of surface, e.g., "100px" + // height: String: height of surface, e.g., "100px" + + if(!width && !height){ + var pos = domGeom.position(parentNode); + width = width || pos.w; + height = height || pos.h; + } + if(typeof width == "number"){ + width = width + "px"; + } + if(typeof height == "number"){ + height = height + "px"; + } + + var s = new canvasEvent.Surface(), + p = dom.byId(parentNode), + c = p.ownerDocument.createElement("canvas"); + + c.width = g.normalizedLength(width); // in pixels + c.height = g.normalizedLength(height); // in pixels + + p.appendChild(c); + s.rawNode = c; + s._parent = p; + s.surface = s; + return s; // dojox.gfx.Surface + }; + + + // Mouse/Touch event + var isEventStopped = function(/*Event*/ evt){ + // summary: + // queries whether an event has been stopped or not + // evt: Event + // The event object. + if(evt.cancelBubble !== undefined){ + return evt.cancelBubble; + } + return false; + }; + + canvasEvent.fixTarget = function(event, gfxElement){ + // summary: + // Adds the gfxElement to event.gfxTarget if none exists. This new + // property will carry the GFX element associated with this event. + // event: Object + // The current input event (MouseEvent or TouchEvent) + // gfxElement: Object + // The GFX target element (a Surface in this case) + if(isEventStopped(event)){ + return false; + } + if(!event.gfxTarget){ + gfxElement._pick.last = gfxElement._pick.curr; + gfxElement._pick.curr = gfxElement._whatsUnderEvent(event); + if (!lang.isArray(gfxElement._pick.curr)) + event.gfxTarget = gfxElement._pick.curr; + } + return true; + }; + + return canvasEvent; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/canvas_attach.js b/js/dojo-release-1.7.2-src/dojox/gfx/canvas_attach.js new file mode 100644 index 0000000..3558745 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/canvas_attach.js @@ -0,0 +1,11 @@ +define(["dojo/_base/lang", "dojo/_base/kernel","dojox/gfx/canvas"], function(lang,kernel,canvas){ + lang.getObject("dojox.gfx.canvas_attach", true); + kernel.experimental("dojox.gfx.canvas_attach"); + + // not implemented + canvas.attachSurface = canvas.attachNode = function(){ + return null; // for now + }; + + return canvas; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/decompose.js b/js/dojo-release-1.7.2-src/dojox/gfx/decompose.js new file mode 100644 index 0000000..df03c0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/decompose.js @@ -0,0 +1,131 @@ +define(["./_base", "dojo/_base/lang", "./matrix"], + function (g, lang, m){ + /*===== g = dojox.gfx =====*/ + function eq(/* Number */ a, /* Number */ b){ + // summary: compare two FP numbers for equality + return Math.abs(a - b) <= 1e-6 * (Math.abs(a) + Math.abs(b)); // Boolean + } + + function calcFromValues(/* Number */ r1, /* Number */ m1, /* Number */ r2, /* Number */ m2){ + // summary: uses two close FP ration and their original magnitudes to approximate the result + if(!isFinite(r1)){ + return r2; // Number + }else if(!isFinite(r2)){ + return r1; // Number + } + m1 = Math.abs(m1); m2 = Math.abs(m2); + return (m1 * r1 + m2 * r2) / (m1 + m2); // Number + } + + function transpose(/* dojox.gfx.matrix.Matrix2D */ matrix){ + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix-like object + var M = new m.Matrix2D(matrix); + return lang.mixin(M, {dx: 0, dy: 0, xy: M.yx, yx: M.xy}); // dojox.gfx.matrix.Matrix2D + } + + function scaleSign(/* dojox.gfx.matrix.Matrix2D */ matrix){ + return (matrix.xx * matrix.yy < 0 || matrix.xy * matrix.yx > 0) ? -1 : 1; // Number + } + + function eigenvalueDecomposition(/* dojox.gfx.matrix.Matrix2D */ matrix){ + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix-like object + var M = m.normalize(matrix), + b = -M.xx - M.yy, + c = M.xx * M.yy - M.xy * M.yx, + d = Math.sqrt(b * b - 4 * c), + l1 = -(b + (b < 0 ? -d : d)) / 2, + l2 = c / l1, + vx1 = M.xy / (l1 - M.xx), vy1 = 1, + vx2 = M.xy / (l2 - M.xx), vy2 = 1; + if(eq(l1, l2)){ + vx1 = 1, vy1 = 0, vx2 = 0, vy2 = 1; + } + if(!isFinite(vx1)){ + vx1 = 1, vy1 = (l1 - M.xx) / M.xy; + if(!isFinite(vy1)){ + vx1 = (l1 - M.yy) / M.yx, vy1 = 1; + if(!isFinite(vx1)){ + vx1 = 1, vy1 = M.yx / (l1 - M.yy); + } + } + } + if(!isFinite(vx2)){ + vx2 = 1, vy2 = (l2 - M.xx) / M.xy; + if(!isFinite(vy2)){ + vx2 = (l2 - M.yy) / M.yx, vy2 = 1; + if(!isFinite(vx2)){ + vx2 = 1, vy2 = M.yx / (l2 - M.yy); + } + } + } + var d1 = Math.sqrt(vx1 * vx1 + vy1 * vy1), + d2 = Math.sqrt(vx2 * vx2 + vy2 * vy2); + if(!isFinite(vx1 /= d1)){ vx1 = 0; } + if(!isFinite(vy1 /= d1)){ vy1 = 0; } + if(!isFinite(vx2 /= d2)){ vx2 = 0; } + if(!isFinite(vy2 /= d2)){ vy2 = 0; } + return { // Object + value1: l1, + value2: l2, + vector1: {x: vx1, y: vy1}, + vector2: {x: vx2, y: vy2} + }; + } + + function decomposeSR(/* dojox.gfx.matrix.Matrix2D */ M, /* Object */ result){ + // summary: decomposes a matrix into [scale, rotate]; no checks are done. + var sign = scaleSign(M), + a = result.angle1 = (Math.atan2(M.yx, M.yy) + Math.atan2(-sign * M.xy, sign * M.xx)) / 2, + cos = Math.cos(a), sin = Math.sin(a); + result.sx = calcFromValues(M.xx / cos, cos, -M.xy / sin, sin); + result.sy = calcFromValues(M.yy / cos, cos, M.yx / sin, sin); + return result; // Object + } + + function decomposeRS(/* dojox.gfx.matrix.Matrix2D */ M, /* Object */ result){ + // summary: decomposes a matrix into [rotate, scale]; no checks are done + var sign = scaleSign(M), + a = result.angle2 = (Math.atan2(sign * M.yx, sign * M.xx) + Math.atan2(-M.xy, M.yy)) / 2, + cos = Math.cos(a), sin = Math.sin(a); + result.sx = calcFromValues(M.xx / cos, cos, M.yx / sin, sin); + result.sy = calcFromValues(M.yy / cos, cos, -M.xy / sin, sin); + return result; // Object + } + + return g.decompose = function(matrix){ + // summary: Decompose a 2D matrix into translation, scaling, and rotation components. + // description: This function decompose a matrix into four logical components: + // translation, rotation, scaling, and one more rotation using SVD. + // The components should be applied in following order: + // | [translate, rotate(angle2), scale, rotate(angle1)] + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix-like object + var M = m.normalize(matrix), + result = {dx: M.dx, dy: M.dy, sx: 1, sy: 1, angle1: 0, angle2: 0}; + // detect case: [scale] + if(eq(M.xy, 0) && eq(M.yx, 0)){ + return lang.mixin(result, {sx: M.xx, sy: M.yy}); // Object + } + // detect case: [scale, rotate] + if(eq(M.xx * M.yx, -M.xy * M.yy)){ + return decomposeSR(M, result); // Object + } + // detect case: [rotate, scale] + if(eq(M.xx * M.xy, -M.yx * M.yy)){ + return decomposeRS(M, result); // Object + } + // do SVD + var MT = transpose(M), + u = eigenvalueDecomposition([M, MT]), + v = eigenvalueDecomposition([MT, M]), + U = new m.Matrix2D({xx: u.vector1.x, xy: u.vector2.x, yx: u.vector1.y, yy: u.vector2.y}), + VT = new m.Matrix2D({xx: v.vector1.x, xy: v.vector1.y, yx: v.vector2.x, yy: v.vector2.y}), + S = new m.Matrix2D([m.invert(U), M, m.invert(VT)]); + decomposeSR(VT, result); + S.xx *= result.sx; + S.yy *= result.sy; + decomposeRS(U, result); + S.xx *= result.sx; + S.yy *= result.sy; + return lang.mixin(result, {sx: S.xx, sy: S.yy}); // Object + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/PI.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/PI.html new file mode 100644 index 0000000..6e87214 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/PI.html @@ -0,0 +1,75 @@ + + +Pi calculation + + + + + + +

                                      PI demo

                                      +

                                      Visualization of calculating PI using the Monte Carlo method.

                                      +

                                      + + +

                                      +

                                      Green: x^2 + y^2 <= 1, Red: x^2 + y^2 > 1

                                      +

                                      Estimated value for PI:

                                      +
                                      +

                                      That's all Folks!

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/beautify.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/beautify.html new file mode 100644 index 0000000..d1f02f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/beautify.html @@ -0,0 +1,48 @@ + + +Beautify JSON + + + + + + +

                                      Beautify JSON

                                      +

                                      Paste valid JSON in this textarea and receive a pretty-printed version of it. Use Firefox, if you want to be able to read comma-ended sequences (Python style). + Additionally it knows how to remove extra spaces from path elements.

                                      +

                                      +

                                      +     Process "path" elements +     Pretty-print JSON

                                      +

                                      This program is a companion for inspector.html.

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/butterfly.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/butterfly.html new file mode 100644 index 0000000..a54a4c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/butterfly.html @@ -0,0 +1,87 @@ + + +dojox.gfx: Butterfly + + + + + + + +

                                      dojox.gfx: Butterfly

                                      +

                                      This example was directly converted from SVG file.

                                      +

                                      This is a slightly modified version of a sample that shipped with JASC's WebDraw (www.jasc.com). Generated by Jasc WebDraw PR4(tm) on 06/07/01 12:18:39.

                                      + + + + + +
                                      Rotation (0)
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      Scaling (1.000)
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/career_test.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/career_test.html new file mode 100644 index 0000000..5b31ea1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/career_test.html @@ -0,0 +1,463 @@ + + +dojox.gfx: Career Aptitude Test + + + + + + + + + + + + +

                                      dojox.gfx: Career Aptitude Test

                                      +

                                      Warning: Canvas renderer doesn't implement event handling.

                                      + +
                                      +

                                      Thank you for your interest in "I can't believe it's manure" Eateries™ +and for submitting your resume for our review. While this is an automated response, +please be assured that every resume is reviewed by us, and forwarded to the hiring +managers if the skills fit our needs.

                                      +

                                      In order order to evaluate your skills we ask you to take a career aptitude test. +You will have an exciting chance to operate one of our state-of-the-art workstations +remotely. Don't forget: +

                                      +
                                        +
                                      1. Fish out a live speciment of dung-42 from the container.
                                      2. +
                                      3. Freeze it until you see an orange glow to kill the elements and make it less green.
                                      4. +
                                      5. Broil it until you see the orange glow again, and drop it on the table below.
                                      6. +
                                      7. You have to process all items without wasting resources and in minimal time.
                                      8. +
                                      +

                                      Warnings: don't overfreeze, don't overheat, don't drop the speciment, don't change the sequence, +don't touch the speciment in heating and freezing chambers until it is's ready.

                                      +

                                      Use your head and your mouse!

                                      +

                                      Please select the desired position:

                                      + + + + + + + + + + + + + +
                                      Workstation Supervisor 
                                      Shift Director 
                                      Vice President #49653 
                                      +
                                      + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/circles.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/circles.html new file mode 100644 index 0000000..0f59dd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/circles.html @@ -0,0 +1,83 @@ + + +dojox.gfx: 100 draggable circles + + + + + + + + + +

                                      dojox.gfx: 100 draggable circles

                                      +

                                      Warning: Canvas renderer doesn't implement event handling.

                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/circles2.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/circles2.html new file mode 100644 index 0000000..67afacb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/circles2.html @@ -0,0 +1,69 @@ + + +dojox.gfx: 2 draggable circles + + + + + + + + + +

                                      dojox.gfx: 2 draggable circles

                                      +

                                      Warning: Canvas renderer doesn't implement event handling.

                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/clock.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/clock.html new file mode 100644 index 0000000..fcd6ccb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/clock.html @@ -0,0 +1,249 @@ + + +dojox.gfx: interactive analog clock + + + + + + + +

                                      dojox.gfx: interactive analog clock

                                      +

                                      Grab hands and set your own time.

                                      +

                                      Warning: Canvas renderer doesn't implement event handling.

                                      +
                                      +

                                      Current time: .

                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/clockWidget.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/clockWidget.html new file mode 100644 index 0000000..6912c93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/clockWidget.html @@ -0,0 +1,328 @@ + + +dojox.gfx: interactive analog clock + + + + + + + +

                                      dojox.gfx: interactive analog clock

                                      +

                                      Grab hands and set your own time.

                                      +

                                      Warning: Canvas renderer doesn't implement event handling.

                                      + + + +
                                      + +
                                      +
                                      +
                                      +
                                      + +
                                      + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/clock_black.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/clock_black.html new file mode 100644 index 0000000..dda939d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/clock_black.html @@ -0,0 +1,249 @@ + + +dojox.gfx: interactive analog clock + + + + + + + +

                                      dojox.gfx: interactive analog clock

                                      +

                                      Grab hands and set your own time.

                                      +

                                      Warning: Canvas renderer doesn't implement event handling.

                                      +
                                      +

                                      Current time: .

                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/creator.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/creator.html new file mode 100644 index 0000000..59d5801 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/creator.html @@ -0,0 +1,119 @@ + + +Create DojoX GFX JSON + + + + + + +

                                      Create DojoX GFX JSON

                                      +

                                      This is a helper file, which serves as a template to generate static pictures.

                                      + + + + +
                                      +
                                      +
                                      +
                                      +

                                      +

                                      +     

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Lars.json b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Lars.json new file mode 100644 index 0000000..c00a48f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Lars.json @@ -0,0 +1,1823 @@ +[ + { + "name": "torso", + "children": [ + { + "name": "leftArm", + "shape": { + "type": "path", + "path": "M156.007,292.674c2.737,1.779,5.563,3.322,8.752,3.947c7.098,1.39,19.25-5.666,23.136-11.699 c1.572-2.441,8.077-21.031,11.177-14.271c1.224,2.67-1.59,4-1.399,6.462c3.108-1.425,5.48-5.242,8.918-2.182 c0.672,4.019-4.472,4.343-3.918,7.669c1.376,0.218,5.394-1.595,6.285-0.535c1.707,2.027-2.933,3.561-4.072,4.018 c-1.852,0.741-4.294,1.233-5.988,2.369c-2.636,1.768-4.766,5.143-7.034,7.4c-11.657,11.604-26.183,10.553-40.646,5.515 c-4.713-1.642-17.399-4.472-18.655-9.427c-1.647-6.502,5.523-7.999,10.184-6.74C147.658,286.528,151.725,289.891,156.007,292.674z" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "leftArmThumb", + "shape": { + "type": "path", + "path": "M188.257,284.902c-1.932-1.391-3.314-4.206-3.506-6.494c-0.149-1.786,0.59-6.522,3.199-3.95c0.792,0.78,0.083,2.155,0.558,2.943 c0.885,1.47,1.071,0.493,2.748,1.002c1.406,0.426,3.827,2.05,4.251,3.499" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "rightArm", + "shape": { + "type": "path", + "path": "M57.05,283.306c-5.502,5.354-13.185,8.541-18.249,14.221c-4.303,4.827-7.721,11.575-11.138,17.112 c-6.752,10.939-10.794,26.076-19.912,35.185c-3.869,3.866-7.637,5.721-7.251,12.032c0.932,0.372,1.548,0.589,2.418,0.683 c0.605-2.746,2.569-4.199,5.362-3.799c-0.14,3.365-3.512,5.941-3.228,9.235c0.364,4.223,3.983,5.968,7.181,2.662 c2.61-2.699,0.192-7.848,3.338-10.179c5.535-4.103,2.889,2.998,4.13,5.514c5.19,10.519,8.634-1.859,7.35-7.996 c-2.336-11.159-3.003-15.126,3.267-24.416c6.358-9.419,12.194-18.708,19.399-27.588c1.116-1.375,2.08-2.728,3.333-4" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "shirt", + "children": [ + { + "name": "tShirt", + "shape": { + "type": "path", + "path": "M96.509,268.264 c-2.301,0.323-4.69,0.205-6.945,0.72c-2.234,0.509-4.5,0.8-6.749,1.249c-4.369,0.872-8.206,3.265-12.3,5.024 c-3.259,1.401-6.644,2.571-9.763,4.26c-1.923,1.041-3.688,2.616-5.487,3.97c-1.543,1.16-3.495,2.11-4.854,3.562 c-2.205,2.354,0.896,7.408,1.854,9.873c0.92,2.368,2.149,4.82,2.749,7.29c0.228,0.937,0.235,2.058,0.875,2.873 c0.644,0.821,0.64,0.735,1.822,0.048c1.513-0.878,2.873-1.993,4.329-2.993c2.431-1.67,5.462-2.848,7.434-5.111 c-3.335,1.652-5.335,4.679-6.931,8.012c-1.398,2.92-4.482,35.854-5.389,38.947c-0.195,0.003-0.775,0.003-0.749,0.013 c20.561,0,41.123-0.07,61.684,0c2.1,0.007,3.607-0.497,5.529-1.252c0.715-0.281,2.257-0.356,2.807-0.745 c1.412-0.998-0.094-3.916-0.646-5.302c-1.425-3.579-2.111-37.767-4.726-40.543c1.842,0.057,4.127,1.311,5.937,1.95 c1.351,0.478,2.633,1.092,3.956,1.66c1.39,0.597,3.667,1.927,5.168,1.858c0.296-1.873,1.045-3.286,1.839-5.02 c0.943-2.061,1.155-4.214,1.528-6.415c0.351-2.07,0.898-3.787,1.939-5.635c0.531-0.942,1.356-1.73,1.693-2.768 c-0.443-0.402-1.043-0.907-1.603-1.125c-0.56-0.219-1.292-0.111-1.908-0.33c-1.237-0.438-2.44-1.089-3.669-1.576 c-3.773-1.499-7.519-2.983-11.319-4.466c-3.575-1.396-6.977-3.239-10.784-3.872c-1.735-0.289-3.467-0.529-5.073-0.906" + }, + "fill": "#4459A5", + "stroke": { + "color": "#000000", + "cap": "round" + } + }, + { + "name": "shirtNeck", + "shape": { + "type": "path", + "path": "M99.759,268.889 c-0.984,0.152-1.746-0.549-2.75-0.5c-1.369,0.066-1.649,0.872-2.153,2c-1.037,2.325-2.442,4.974,0.064,6.946 c2.53,1.991,6.964,1.717,9.829,0.803c1.616-0.516,3.045-1.24,3.825-2.867c0.508-1.061,0.935-2.771,0.149-3.598 c-0.231-0.243-0.562-0.376-0.84-0.534" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round" + } + }, + { + "name": "shirtLogo", + "children": [ + { + "children": [ + { + "shape": { + "type": "path", + "path": "M104.864,296.92c-0.151-0.003,7.101,0.41,7.052,0.404c0.132,0.028-0.172,0.633-0.021,0.632 c-0.226,0.028-7.244-0.454-7.28-0.464C104.657,297.518,104.776,296.904,104.864,296.92z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M90.071,295.919c-0.199,0.004,6.792,0.43,6.79,0.446c0.153,0.005-0.031,0.663,0.012,0.665 c0.272,0.015-6.79-0.471-6.875-0.459C89.881,296.56,89.796,295.899,90.071,295.919z" + }, + "stroke": { + } + } + ] + }, + { + "shape": { + "type": "path", + "path": "M84.407,306.476c0.2-0.159,0.322-1.04,0.254,0.057 c-0.542-0.356-2.02,2.083-4.215,2.001c-1.887-1.706-4.559-3.384-4.302-7.092c0.652-2.599,3.082-4.084,5.213-3.942 c1.889,0.377,2.899,0.716,4,1.318c-0.497,0.957-0.175,0.866-0.459,0.703c0.456-2.398,0.598-5.75,0.312-7.855 c0.594-0.554,0.714,0.125,1.249,0.941c0.502-0.727,0.509-1.425,0.875-0.571c-0.207,1.328-0.809,7.186-0.711,10.174 c-0.126,2.797-0.375,4.354-0.051,4.985c-0.718,0.613-0.667,1.006-0.981,1.381c-0.72-1.33-1.056-0.132-1.339-0.157 C84.632,308.442,84.493,305.791,84.407,306.476z M81.186,307.176c2.403,0.206,3.734-2.164,3.841-4.222 c0.269-2.72-0.896-5.104-3.198-5.04c-1.972,0.437-3.46,2.188-3.331,4.638C78.171,306.265,79.847,306.961,81.186,307.176z" + }, + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M93.321,297.766c2.592,0.148,5.688,2.315,5.696,5.627 c-0.611,4.576-3.69,5.316-6.158,5.581c-2.68-0.76-5.708-1.872-5.413-6.472C88.086,299.394,90.653,297.875,93.321,297.766z M92.939,307.46c2.531,0.735,3.706-1.297,3.666-3.935c0.114-2.219-0.641-4.584-3.389-4.896c-2.29-0.552-3.366,2.188-3.661,4.688 C89.339,305.264,89.934,307.95,92.939,307.46z" + }, + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M99.688,303.916c0.03-1.511,0.055-4.731,0.022-4.646 c0.481-1.355,0.658-0.556,1.034-1.297c0.263,1.473,0.653,0.326,1.186,0.066c-0.386,2.517-0.513,3.347-0.574,4.949 c-0.068-0.47-0.128,2.28-0.238,2.188c-0.055,1.935-0.036,2.201-0.047,4.219c-0.079,0.914-0.28,2.412-1.126,3.831 c-0.61,1.212-1.73,1.146-3.24,1.651c0.073-0.945-0.065-1.242-0.096-1.822c0.098,0.138,0.213,0.604,0.225,0.398 c1.892,0.228,2.209-1.896,2.362-3.366c0.042,0.304,0.512-6.933,0.415-7.061C99.73,302.636,99.75,303.178,99.688,303.916z M100.978,295.564c0.717,0.14,1.11,0.61,1.099,1.156c0.052,0.552-0.595,0.993-1.286,1.015c-0.541-0.074-1.025-0.548-1.022-1.054 C99.813,296.084,100.292,295.643,100.978,295.564z" + }, + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M108.115,298.791c3.028-0.067,5.283,1.359,5.256,5.757 c-0.264,3.479-3.366,4.63-5.883,5.12c-2.429-0.034-5.619-2.241-5.16-5.811C102.322,300.085,105.715,298.845,108.115,298.791z M107.351,309.232c2.675-0.132,3.839-2.333,3.841-4.497c0.246-2.344-0.263-4.833-2.923-5.396 c-2.844,0.299-3.974,1.917-4.053,4.48C104.136,306.655,104.854,308.372,107.351,309.232z" + }, + "stroke": { + } + } + ] + } + ] + } + ] + }, + { + "name": "heads", + "children": [ + { + "name": "head1", + "children": [ + { + "name": "leftEart", + "children": [ + { + "shape": { + "type": "path", + "path": "M201.557,195.474 c7.734-4.547,16.591-5.012,18.405,4.443c2.43,12.659-3.317,13.328-14.598,13.328" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M211.711,203.09 c0.523,0.004,0.946-0.208,1.27-0.635" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M211.076,197.377 c3.062,3.013,5.489,5.624,4.443,10.155" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + }, + { + "name": "bgHairTop", + "shape": { + "type": "path", + "path": "M54.384,199.306c-5.253-4.402-7.511-11.061-15.779-10.632c3.449-1.277,7.116-2.397,10.911-2.666 c-2.873-1.397-5.865-2.575-8.231-4.718c3.986-1.119,11.47-1.817,14.864,0.75c-5.183-2.758-8.397-7.816-13.062-10.598 c6.014-0.643,12.377,0.978,18.022,2.265c-2.547-4.486-6.682-10.83-10.523-14.297c5.033,1.052,10.647,4.518,15.062,7.177 c-1.614-4.176-5.634-8.406-7.859-12.513c10.312-1.125,12.522,4.919,19.7,9.932c-0.412-0.127-1.114-0.113-1.527,0.015 c0.875-7.261,3.058-12.8,8.258-18.566c6.771-7.507,17.812-9.131,24.095-15.381c-4.699,1.821-4.518,23.765-4.875,28.955" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "bgHairLeft", + "shape": { + "type": "path", + "path": "M92.384,243.972c-6.334,7.929-12.601,12.241-22.465,15.362c3.65-1.263,7.735-5.86,7.695-9.928 c-2.208,0.218-4.49,0.605-6.498,1.097c1.244-1.097,2.087-3.239,3.198-4.396c-5.77,0.001-12.131,1.133-18.396,1.23 c5.013-2.809,10.665-3.25,12.398-9.246c-3.59,0.313-7.233,1.606-11.033,1.097c1.731-2.022,3.953-3.995,5.049-6.447 c-3.781,0.056-6.665,3.098-10.547,2.465c0.962-2.863,3.187-5.208,4.531-7.766c-5.59-0.273-11.658,2.45-17.732,2.564 c5.494-2.857,8.967-7.819,12.3-12.718c5.233-7.693,10.625-9.96,20.349-9.981c11.059-0.024,15.558,6.714,20.984,16 c2.786,4.767,7.249,14.375,0.832,18" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "bgHair", + "shape": { + "type": "path", + "path": "M142.384,255.306c2.984,6.076,3.567,11.856,10.531,14.6c-0.134-3.114-0.094-6.664,1.619-9.033 c1.605,1.968,3.122,4.211,5.048,5.698c-0.29-1.769,0.412-4.024,0.233-5.828c3.445,0.26,4.979,3.965,8.468,4.479 c0.066-2.78,0.427-5.151,0.868-7.813c2.687,0.2,4.768,1.565,7.132,2.997c0.452-4.921-0.409-10.579-0.667-15.666 c-5.795-0.756-12.291,2.827-17.899,3.899c-4.414,0.844-14.136,0.524-15.333,6" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "neck", + "shape": { + "type": "path", + "path": "M106.989,254.499c-2.932,6.063-4.613,11.997-8.947,17.137c7.288,10.195,16.311-10.9,15.183-17.026 c-1.926-1.138-3.928-1.589-6.236-1.38" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "headShape", + "shape": { + "type": "path", + "path": "M210.941,207.665c-0.843,3.985-2.081,7.982-3.769,11.783c-3.374,7.604-8.543,14.427-16.052,18.899 c-2.94,2.13-5.983,4.167-9.109,6.085c-25.013,15.342-55.353,23.08-82.254,10.57c-3.433-1.557-6.785-3.431-10.053-5.66 c-1.821-1.184-3.592-2.46-5.308-3.832c-1.715-1.373-3.375-2.842-4.972-4.412c-2.352-2.148-4.576-4.425-6.631-6.814 c-6.168-7.169-10.823-15.358-12.87-24.185c-0.649-3.284-0.84-6.634-0.5-9.975c4.48-13.743,14.22-24.364,26.109-32.149 c2.973-1.946,6.079-3.715,9.271-5.309c30.581-15.027,69.581-10.027,95.851,12.209c2.564,2.254,4.988,4.651,7.244,7.178 c4.513,5.054,8.354,10.626,11.312,16.64C210.178,201.505,210.798,204.496,210.941,207.665z" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "rightEar", + "children": [ + { + "shape": { + "type": "path", + "path": "M64.857,195.606 c-6.59-7.181-15.047-10.664-19.467,3.676c-1.235,4.007-1.87,14.468,1.29,17.786c4.223,4.435,13.591,0.529,19.055-0.015" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M52.407,196.743 c-1.702,3.613-1.257,7.505-1.27,11.424" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M51.772,209.437 c-3.39-4.661,0.922-5.769,5.078-6.347" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + }, + { + "name": "fgHair", + "shape": { + "type": "path", + "path": "M90.384,154.639c8.453-11.353,15.678-13.458,28.581-15.915c-1.382,3.376-3.89,7.352-5.179,11.16 c5.01-1.816,9.571-6.545,15.218-8.413c11.355-3.755,23.852-1.903,35.671-2.213c-3.004,3.712-4.912,7.88-2.026,11.447 c5.856-2.212,13.37-6.871,19.635-6.646c0.263,4.561-0.024,9.278,0.201,13.841c3.509-1.201,6.015-3.04,8.277-5.148 s3.761-4.049,4.942-5.2c1.063,2.408,2.134,5.334,2.24,8.494c-0.182,3.462-0.866,6.794-2.66,9.291 c3.663,0.65,6.098-2.021,8.35-4.479c-0.655,4.349-3.164,8.604-3.851,13.013c2.178-0.072,4.382,0.216,6.367-0.48 c-1.389,3.093-3.069,7.287-6.616,8.414c-4.475,1.423-4.354-0.992-7.315-4.332c-4.892-5.518-9.774-6.791-15.872-9.464 c-6.585-2.887-10.983-6.47-17.963-8.219c-8.994-2.255-19.864-3.867-28.093-5.196c2.466,1.967,1.138,5.594,0.659,8.625 c-2.729-0.645-4.41-3.813-6.301-5.158c0.953,3.195,0.983,6.953-2.134,8.491c-6.145-5.226-9.199-9.721-17.527-11.647 c1,1.83,1.728,4.208,1.396,6.402c-0.751,4.971-0.289,3.134-3.836,2.466c-5.192-0.977-9.953-3.677-15.815-4.496 c3.292,2.002,5.469,5.017,7.418,8.21c-2.651,0.404-6.238,0.257-8.382,1.671c2.456,0.38,3.44,2.166,3.197,4.714 c-7.45,0.386-13.623,0.731-19.915,5.434" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + } + ] + }, + { + "name": "eyes", + "children": [ + { + "name": "eyes1", + "children": [ + { + "shape": { + "type": "path", + "path": "M123.163,176.668 c-5.066,1.17-9.01,7.888-13.666,10.335c-4.238,2.227-8.648,6.636-7.009,12.332c1.971,6.848,12.042,3.991,16.261,1.165 c5.282-3.539,9.59-8.517,12.006-14.524c1.523-3.787,2.568-7.272-1.509-9.391c-2.905-1.51-8.174-1.386-11.417-0.583" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M182.545,179.865 c-3.533,0.169-4.854-1.166-8.408-0.001c-3,0.983-6.24,1.936-8.852,3.743c-3.938,2.725-7.46,5.555-4.73,13.592 c1.973,5.811,8.791,7.571,14.656,6.667c5.537-0.854,9.078-4.977,11.408-10.007c3.666-7.918,0.943-11.639-6.742-13.659" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000", + "cap": "round" + } + }, + { + "shape": { + "type": "path", + "path": "M108.829,183.668c-1.308-1.03-4.557,0.011-5.6-1.733 c-1.056-1.765,1.735-5.409,2.984-6.192c5.684-3.562,15.946-0.39,19.95-6.742" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M163.877,167.198c2.369,1.282,6.539,0.307,9.408,0.815 c3.449,0.612,7.066,2.657,10.592,2.851" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M127.496,192.002c-4.917-2.12-9.188-1.708-8.608,4.942 c3.132,1.734,5.428-2.82,7.275-4.942" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M174.852,203.143c-0.293,0.12-0.307,0.577-0.943,0.282 c-1.605-3.188-0.404-6.507,2.676-8.192c2.15-1.176,5.67-1.759,7.471,0.359c0.199,0.234,0.412,0.521,0.514,0.813 c0.229,0.649-0.285,0.95-0.285,0.95s-3.988,6.009-3.285,1.934c0.438,1.743-5.537,5.743-2.287,1.653 c-1.955,2.583-2.525,1.977-3.859,2.868" + }, + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "eyes2", + "children": [ + { + "shape": { + "type": "path", + "path": "M98.668,186.108c0.668-8.915,15.545-13.749,22.667-15" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M169.667,178.108 c5.307,3.436,16.928,5.632,19.668,12.333" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M105.334,197.775c8.085-4.283,17.059-2.8,25-6.333" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M164.001,198.775c4.656-0.417,9.664,1.805,14.334,2.017 c3.951,0.18,5.773,0.189,9,2.316" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M124.001,188.108c3.039-0.258,4.594,2.571,5.301,4.983 c-1.096,1.242-2.065,2.646-2.968,4.017" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M168.335,194.108c-1.77,2.293-4.869,3.271-6.299,5.91 c1.377,0.991,3.02,2.122,3.965,3.424" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + } + ] + }, + { + "name": "beard", + "children": [ + { + "shape": { + "type": "path", + "path": "M96.05,213.639 c-0.366,0.21-0.783,0.389-1.167,0.5" + }, + "fill": "#AFA8A5", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M102.55,211.972 c0.314-0.01,0.554-0.198,0.667-0.5" + }, + "fill": "#AFA8A5", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M105.717,208.805 c0.164-0.109,0.336-0.224,0.5-0.333" + }, + "fill": "#AFA8A5", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M111.05,207.972 c-0.651-1.81,0.859-2.262,2.333-1.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M117.717,209.805 c1.738,0,3.653,0.369,5.333,0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M132.717,214.472 c0.104-0.21,0.162-0.435,0.167-0.667" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M139.551,216.972 c0.215-0.175,0.465-0.426,0.666-0.667" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M144.551,213.305 c0.277-0.056,0.556-0.111,0.833-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M147.884,216.639 c0.195,0.045,0.369-0.013,0.5-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M148.384,214.139 c0.112-0.168,0.222-0.332,0.333-0.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M98.217,219.305c1.697-1.772,4.233-2.109,5.967-4.046c1.519-1.696,3.812-3.001,4.2-5.454" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M152.717,216.139 c0.611,0,1.223,0,1.834,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M160.384,217.472 c0.333,0,0.667,0,1,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M163.217,215.972 c0.321-0.042,0.658-0.175,0.834-0.333" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M164.217,218.805 c0.167,0,0.333,0,0.5,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M168.384,217.972 c0.056-0.056,0.111-0.111,0.167-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M169.884,225.805 c0.491-0.397,0.882-0.926,1.167-1.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M172.717,221.972 c0.056,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M171.717,229.805 c0.334,0.075,0.659,0.025,0.834-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M190.051,227.805 c0.163-0.242,0.398-0.423,0.666-0.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M197.384,221.472 c0.258-0.007,0.485-0.125,0.667-0.333" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M199.384,214.972 c-0.04-0.333,0.075-0.609,0.333-0.833" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M117.884,257.305 c0.056,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M142.717,252.472 c0.358,0.069,0.71,0.016,1-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M137.884,256.472 c0.277,0,0.556,0,0.833,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M160.884,252.972 c0.366-0.138,0.765-0.402,1-0.667" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M171.384,250.139 c0.235-0.263,0.475-0.561,0.667-0.834" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M89.384,243.972 c0.537,0.378,1.329,0.876,1.833,1.333" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M79.05,225.472 c0.087,0.272,0.143,0.55,0.167,0.833" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M73.884,222.639 c0,0.167,0,0.333,0,0.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M72.55,219.805c0.466-0.325,0.875-0.797,1.167-1.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M71.717,211.972c0.422-0.553,0.776-1.305,1-2" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M78.55,214.472c0-0.111,0-0.222,0-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M79.384,218.805c-0.001-0.137,0.055-0.248,0.167-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M80.217,221.139c0.111,0,0.222,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M75.55,226.472c0.103-0.5,0.156-0.977,0.167-1.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M78.55,230.139c0.111,0,0.222,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M83.384,227.639c0.118-0.059,0.215-0.107,0.333-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M81.55,237.139c0.056,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M86.217,233.805c0.056,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M87.884,230.472c0.595-0.181,1.219-0.527,1.833-0.667" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M88.717,222.139 c-0.929,2.359-1.615,4.865-2.667,7.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M89.05,216.139 c0.784-0.736,1.709-1.565,2.833-1.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M94.217,210.139 c1.599-0.089,3.199-0.167,4.833-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M94.884,224.639 c0.052-0.588-0.004-1.155-0.167-1.667" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M92.384,228.305 c0.585-0.062,1.244-0.132,1.667-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M88.717,240.139 c0.111,0,0.222,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M95.884,243.305 c0.526,0.1,1.017-0.015,1.333-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M98.55,248.305 c0.069-0.24,0.265-0.926,0.333-1.166" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M96.55,249.805 c0.125,0.014,0.18-0.042,0.167-0.166" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M104.55,250.139 c0.01-0.238,0.126-0.428,0.333-0.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M106.884,251.972 c0.195,0.045,0.37-0.013,0.5-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M113.884,254.805 c0.758-0.586,1.595-1.171,2.382-1.774c0.072,0.376,0.418,0.685,0.48,1.079c0.833,0.265,1.624-0.021,1.638-0.971" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M122.217,254.639 c0.063-0.165,0.179-0.288,0.333-0.334" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M125.884,255.805 c1.13-0.745,2.783-0.962,3.667-2" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M132.217,255.972 c0.638-0.492,1.104-1.173,1.141-1.975c-1.11,0.062-1.449-0.888-1.475-1.858" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M129.717,249.305 c-0.045,0.154-0.168,0.271-0.333,0.334" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M136.551,252.305 c0.222,0,0.444,0,0.666,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M110.217,251.305 c0.056-0.056,0.111-0.11,0.167-0.166" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M140.717,251.805 c0.111,0,0.223,0,0.334,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M150.051,249.472 c0.111,0,0.222,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M143.217,255.472 c1.022-0.313,1.724-1.175,2.646-1.654c0.203,0.321,0.44,0.626,0.521,0.987" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M152.217,253.472 c0.165-0.063,0.288-0.179,0.334-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M155.051,254.639 c0.222,0,0.444,0,0.666,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M157.717,256.472 c0.326-0.027,0.546-0.073,0.834-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M163.217,252.639 c0.552-0.891,2.082-1.512,2.341-2.334c0.37-1.177-1.156-3.069-1.007-4.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M167.384,235.972 c0.118-0.54,0.353-1.064,0.667-1.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M170.717,242.805 c0-0.333,0-0.667,0-1" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M170.217,236.972 c0-0.333,0-0.667,0-1" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M179.051,235.805 c0.378-0.101,0.738-0.35,1-0.667" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M185.051,232.805 c0.379-0.319,0.656-0.702,0.833-1.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M188.051,231.139 c0.063-0.39,0.178-0.792,0.333-1.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M197.884,223.305 c-0.166,0.277-0.334,0.556-0.5,0.833" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + }, + { + "name": "mouths", + "children": [ + { + "name": "mouth1", + "children": [ + { + "shape": { + "type": "path", + "path": "M177.122,216.821c-0.515,2.282-5.213,3.21-7.433,3.854 c-3.254,0.945-6.596,1.345-9.895,1.851c-3.26,0.5-6.665,0.671-10.107,0.671c-3.596,0-6.645,0.559-10.107,0.671 c-3.105,0.1-6.898-0.474-9.694-1.3c-3.527-1.043-6.672-1.666-10.096-3.062c-2.823-1.152-5.746-1.876-8.462-3.143 c-2.594-1.209-6.084-1.994-8.221-3.552c-1.068,1.834-5.867,3.748-8.1,4.546c-2.444,0.874-8.881,2.725-7.817,5.512 c0.457,1.195,1.948,2.273,2.63,3.385c0.774,1.261,1.139,2.601,2.057,3.859c1.83,2.5,4.506,4.773,6,7.34 c1.308,2.249,2.096,4.74,4.01,6.67c2.214,2.233,5.792,2.634,9.231,2.399c7.028-0.479,13.982-2.129,20.481-3.983 c3.295-0.941,6.699-1.536,10.087-2.686c3.272-1.111,6.641-3,9.402-4.777c5.248-3.377,10.278-6.409,14.283-10.705 c1.479-1.587,3.429-2.503,5.15-3.859" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M135.25,241.319 c0.723-4.757-10.487-8.47-14.898-9.526c-3.09-0.74-6.68-1.17-9.858-1.712c-2.758-0.47-6.865-0.836-9.437,0.369 c-1.385,0.649-2.843,1.724-4.141,2.513c2.156,3.964,4.728,8.861,9.468,11.506c3.229,1.801,5.511,0.777,8.859,0.373 c3.045-0.369,6.046-0.703,9.029-1.72c3.479-1.186,7.228-2.385,10.978-2.475" + }, + "fill": "#FFC0C0", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M148.656,225.547c1.267,0.697,1.301,2.838,0.671,3.9 c-0.702,1.182-2.063,1.4-3.306,2.01c-2.271,1.116-4.581,2.624-7.482,2.638c-4.619,0.023-2.143-4.067-0.253-5.869 c2.405-2.292,5.057-2.72,8.72-2.512c0.588,0.034,1.095,0.041,1.65,0.168" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M130.299,223.365 c2.687,0.437,5.619,4.384,3.727,6.422c-1.234,1.33-7.94,1.391-9.915,1.296c-4.896-0.233-2.502-2.445-0.613-4.525 c1.604-1.767,5.088-3.249,7.833-3.36" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M113.178,217.157 c2.56,0.958,4.922,5.057,5.352,7.215c0.377,1.885-0.324,2.106-2.526,2.643c-1.366,0.333-3.636,0.723-5.105,0.385 c-2.506-0.577-5.883-5.051-4.909-7.223c1.03-2.298,5.944-2.923,8.427-2.852" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M99.359,217.661 c2.038,0.432,4.015,4.279,2.468,5.625c-1.083,0.943-5.221,1.795-6.799,1.589c-4.032-0.526-2.265-4.102-0.866-5.872 c0.706-0.894,1.049-1.976,2.514-2.186c1.627-0.233,2.501,0.99,3.921,1.346" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M181.815,222.895c-3.101-2.75-4.764-8.777-9.282-10.403" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "mouth2", + "children": [ + { + "shape": { + "type": "path", + "path": "M87.57,221.951c5.563-1.759,11.066-1.32,16.694-1.782c2.93-0.24,5.228-1.14,8.309-0.927c3.142,0.217,6.085-0.235,9.289,0.176 c7.136,0.914,13.96,0.598,21.112,1.506c3.654,0.464,7.218,0.609,10.81,0.869c4.017,0.291,7.646,1.582,11.433,2.623 c2.948,0.812,6.347,1.618,9.011,2.99c2.521,1.298,6.354,2.856,8.3,4.72c-2.775,0.027-5.601,2.603-8.021,3.769 c-2.93,1.412-5.741,2.949-8.656,4.432c-5.599,2.849-11.885,5.468-18.104,6.53c-6.793,1.161-13.195,2.107-20.067,2.197 c-7.699,0.102-14.313-4.705-20.735-8.396c-2.071-1.19-4.69-2.182-6.504-3.666c-1.792-1.466-3.469-3.386-5.154-4.984 c-2.703-2.564-7.519-5.649-8.13-9.438" + }, + "stroke": { + "color": "#000000", + "width": "3", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M87.785,228.193 c-5.907-3.235-0.344-9.531,3.971-11.424" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2" + } + }, + { + "shape": { + "type": "path", + "path": "M184.679,227.228c-1.534,2.583-2.548,5.334-4.025,7.889" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M106.862,219.528 c-3.071-0.74-5.608,2.166-6.318,4.738c-0.379,1.375-0.494,2.55,0.748,3.337c1.519,0.962,2.905-0.052,4.418-0.332 c2.518-0.467,7.293,0.053,6.461-4.248c-0.568-2.938-3.743-3.682-6.338-3.335c-0.451,0.06-0.758,0.212-1.205,0.229" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M119.764,218.479 c-2.648,1.243-4.657,3.518-5.346,6.377c-0.866,3.594,3.9,3.711,6.356,2.865c2.64-0.91,4.77-3.351,3.299-6.133 c-1.01-1.91-3.979-2.548-6.026-2.823" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M130.388,219.492 c-1.753,1.382-4.069,4.525-4.835,6.61c-1.159,3.156,2.296,3.371,4.868,3.348c3.061-0.028,6.6-1.148,5.022-4.78 c-1.168-2.691-2.552-4.85-5.551-5.241" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M142.954,221.087 c-1.502,0.337-5.418,3.249-5.638,4.997c-0.292,2.311,4.856,4.536,6.854,4.234c2.503-0.377,4.384-3.175,3.167-5.65 c-0.92-1.873-3.36-2.252-4.508-3.932" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M155.354,222.663 c-2.039,0.426-4.212,2.287-4.766,4.444c-0.723,2.821,3.225,3.383,5.458,3.331c2.541-0.059,5.126-1.752,3.249-4.32 c-1.394-1.908-3.707-3.189-5.304-4.636" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M168.367,237.924 c-1.554-1.217-3.302-2.557-5.203-2.976c-2.973-0.654-3.537,2.131-3.377,4.406c0.205,2.913,1.032,3.883,3.901,2.344 c1.988-1.066,4.272-1.997,4.599-4.456" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M151.524,246.202 c-1.912-0.166-4.003-4.491-2.91-6.25c0.771-1.239,5.456-1.688,6.858-1.292c0.271,0.917,0.979,1.841,0.829,2.771 c-0.088,0.54-0.994,1.645-1.296,2.188c-1.08,1.951-2.133,1.866-3.998,2.684" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M145.911,241.457 c-0.209,1.649-0.215,2.702-1.528,3.801c-0.885,0.739-1.773,1.19-2.54,2.1c-0.786,0.933-1.226,2.38-2.792,1.812 c-1.042-0.377-1.959-2.318-2.138-3.311c-0.299-1.676-1.003-5.228,0.783-6.158c1.155-0.603,7.067-0.18,7.43,1.32" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M133.12,238.991 c-1.495-0.087-2.253-1.33-3.918-0.964c-1.42,0.311-2.489,1.354-2.54,2.836c-0.052,1.527,0.99,5.581,1.852,6.956 c2.363,3.771,4.329-1.535,5.516-3.159c1.117-1.526,2.643-2.053,2.271-3.958c-0.318-1.632-1.118-2.047-2.766-2.329 c-0.382-0.065-0.773-0.095-1.158-0.147" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M116.853,237.429 c-1.049,2.211-0.173,5.147,0.047,7.566c0.357,3.929,3.827,2.028,5.831,0.067c1.575-1.541,4.599-4.86,2.209-6.484 c-1.881-1.279-5.727-2.458-7.756-1.107" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M107.455,233.38 c-0.813,2.487-1.704,5.049,0.073,7.364c1.91,2.486,4.009,1.229,5.537-0.939c1.056-1.5,3.316-4.481,1.563-6.017 c-1.347-1.179-6.468-1.518-7.854-0.325" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "mouth3", + "children": [ + { + "shape": { + "type": "path", + "path": "M99.05,218.972 c1.691-0.875,3.313-2.39,4.833-3.537c1.231-0.928,2.782-1.671,3.5-3.072c1.846,3.486,7.661,4.669,11.003,6.067 c3.553,1.486,7.174,3.066,10.784,4.166c4.271,1.301,9.277,1.67,13.721,2.343c4.155,0.629,9.979,1.365,14.162,0.496 c1.181-0.245,2.343-1.024,3.462-1.446c0.162,1.905-3.637,3.023-4.933,3.487c-2.435,0.871-4.18,2.541-6.362,3.871 c-1.623,0.989-2.974,1.669-4.755,2.117c-1.77,0.445-3.353,0.806-4.825,1.878c-5.915,4.311-15.264,3.247-22.424,3.13 c-5.384-0.088-6.719-5.372-9.337-9c-1.437-1.991-2.843-3.854-3.796-6.138c-0.871-2.086-1.119-4.582-2.033-6.528" + }, + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M107.217,227.972 c1.182-2.033,4.375-2.176,6.5-1.963c2.879,0.289,4.124,1.217,6.168,3.167c1.834,1.749,5.906,5.509,5.64,8.271 c-2.808,0.89-7.847,0.402-10.346-1.104c-1.334-0.804-1.151-2.256-2.246-3.588c-0.712-0.866-1.836-2.673-2.855-3.311 c-0.209-0.94-2.106-1.499-3.028-1.805" + }, + "fill": "#F4BDBD", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + } + ] + }, + { + "name": "personalProps", + "children": [ + { + "name": "hat", + "children": [ + { + "children": [ + { + "children": [ + { + "shape": { + "type": "path", + "path": "M88.374,173.144c0.474-0.074,16.606,2.725,18.01,5.879 c1.145,2.572,28.184,4.568,28.184,4.568l35.971-5.618l5.025,1.132l7.211,0.315l9.295,0.851l10.188,3.248l5.75,2.935 l1.615-1.832l-0.264-5.27l-3.967-7.087c0,0-22.045-13.031-23.273-13.703c-1.229-0.669-4.941-2.294-6.484-4.542 c-8.584-12.528-8.404-18.05-3.371-6.461c0,0,2.662-7.592,2.52-8.575c-0.143-0.982,0.355-5.031,0.355-5.031l2.396-6.832 c0,0-1.379-5.341-2.738-7.19c-1.357-1.844-15.793-4.078-18.162-4.011c-24.933,0.706-3.783,0.071-25.567,0.724 c-24.317,0.728-0.882-2.591-24.068,3.551c-24.228,6.418-5.35-1.298-23.187,6.142c-18.301,7.633-16.67,7.186-16.704,10.685 c-0.034,3.499-3.057-4.884-0.034,3.499c3.023,8.381,3.037-3.871,3.023,8.381c-0.015,12.252,6.696,4.557,1.678,12.373 c-5.017,7.813-3.831,7.91-0.179,8.543c17.017,2.953,4.157,4.378,17.427,3.175" + }, + "fill": "#FF0000", + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M156.605,114.92l-13.936,0.381l-11.633,0.343c-10.646,0.319-11.973-0.155-12.021-0.175l-0.599-0.238 l-0.577,0.514l0.049-0.047c-0.118,0.09-1.43,0.957-11.145,3.53c-9.989,2.646-12.812,2.931-13.421,2.704 c-0.822-0.306-0.821-0.306-7.791,2.604l-2.104,0.878c-16.037,6.689-17.342,7.324-17.342,10.316c0,0.019,0.001,0.041,0.001,0.06 c-0.224-0.108-0.459-0.199-0.787-0.04c-0.357,0.173-0.565,0.275-0.565,0.672c0,0.557,0.411,1.697,1.399,4.438 c0.924,2.561,1.71,3.671,2.714,3.833c0.083,0.014,0.164,0.02,0.241,0.02c0.007,0.584,0.01,1.339,0.01,2.313 c0,0.561-0.001,1.902-0.001,1.916c0,6.908,2.176,8.105,3.347,8.749c0,0,0.075,0.045,0.151,0.09 c-0.095,0.332-0.47,1.1-1.661,2.955c-2.509,3.908-3.516,5.931-3.516,7.303c0,0.358,0.068,0.671,0.196,0.962 c0.544,1.237,1.926,1.477,3.677,1.78l0.135,0.023c8.138,1.412,9.14,2.422,9.568,2.854c0.923,0.931,1.511,0.928,7.224,0.413 c0.06,0.014,0.102,0.068,0.165,0.071c2.167,0.105,16.131,3.138,17.087,5.288c1.147,2.578,16.416,4.228,29.023,5.159 l0.115,0.009c0,0,35.523-5.548,35.896-5.606c0.345,0.078,4.927,1.11,4.927,1.11l7.3,0.319c0,0,8.927,0.818,9.139,0.837 c0.202,0.064,9.854,3.142,10.006,3.19c0.143,0.073,6.368,3.251,6.368,3.251l2.398-2.719l-0.296-5.911l-4.213-7.526 l-0.232-0.137c-0.9-0.532-22.073-13.047-23.303-13.72c-0.001,0-0.735-0.38-0.735-0.38c-1.48-0.752-4.238-2.151-5.404-3.85 c-1.357-1.982-2.451-3.729-3.355-5.268c0.022-0.064,0.104-0.296,0.104-0.296c1.193-3.402,2.576-7.619,2.576-8.885 c0-0.063-0.004-0.118-0.011-0.165c-0.012-0.083-0.017-0.204-0.017-0.356c0-0.909,0.194-2.911,0.363-4.307 c0.072-0.205,2.46-7.013,2.46-7.013l-0.076-0.294c-0.146-0.566-1.468-5.584-2.9-7.532 C173.721,116.784,158.242,114.874,156.605,114.92z M131.097,117.643l11.614-0.342l13.951-0.382 c2.575-0.073,16.104,2.238,17.336,3.614c0.956,1.3,2.058,4.938,2.49,6.549c-0.188,0.536-2.33,6.642-2.33,6.642l-0.013,0.107 c-0.073,0.592-0.387,3.224-0.387,4.658c0,0.258,0.011,0.477,0.034,0.639c-0.006,0.493-0.768,3.026-1.659,5.709 c-2.14-4.566-2.792-4.606-3.242-4.629l-0.62-0.031l-0.354,0.571c-0.069,0.124-0.102,0.29-0.102,0.492 c0,2.273,4.134,9.172,6.993,13.346c1.456,2.12,4.509,3.669,6.149,4.501l0.682,0.353c1.138,0.622,20.813,12.25,23.011,13.549 c0.239,0.427,3.513,6.275,3.721,6.647c0.02,0.393,0.199,3.971,0.231,4.629c-0.23,0.262-0.472,0.535-0.832,0.944 c-1.07-0.546-5.132-2.619-5.132-2.619l-10.369-3.306l-9.404-0.86c0,0-6.995-0.307-7.169-0.315 c-0.168-0.038-5.124-1.155-5.124-1.155s-35.814,5.594-36.044,5.63c-12.419-0.922-25.993-2.687-27.285-4.058 c-1.366-3.097-13.245-5.574-17.517-6.211c-0.203-0.212-0.479-0.346-0.793-0.318c-3.083,0.28-5.996,0.544-6.4,0.369 c0-0.003-0.12-0.117-0.12-0.117c-0.703-0.708-1.879-1.895-10.646-3.416l-0.135-0.023c-0.827-0.143-2.075-0.359-2.188-0.614 c-0.021-0.048-0.033-0.111-0.033-0.193c0-0.592,0.632-2.179,3.205-6.187c1.488-2.318,2.024-3.388,2.024-4.188 c0-0.15-0.019-0.291-0.054-0.428c-0.181-0.712-0.758-1.03-1.179-1.261c-0.865-0.476-2.311-1.271-2.311-6.993 c0-0.014,0.001-1.098,0.001-1.56c0-4.969-0.065-4.992-0.833-5.258c-0.424-0.146-0.816,0.001-1.178,0.377 c-0.208-0.289-0.558-0.898-1.073-2.324c-0.205-0.568-0.385-1.068-0.542-1.506c0.587-0.423,0.632-1.277,0.636-1.644 l-0.014-0.825c-0.004-0.119-0.007-0.231-0.007-0.338c0-1.702,0.899-2.264,16.109-8.608l2.105-0.878 c4.165-1.739,5.948-2.482,6.375-2.562c0.817,0.296,2.292,0.597,14.579-2.658c8.169-2.164,10.697-3.187,11.58-3.704 C120.451,117.773,124.529,117.84,131.097,117.643z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M155.146,147.929c4.879-9.398-5.344-20.199-12.65-21.176 c-12.05-1.61-13.404,10.426-13.684,21.258c3.73,2.016,8.915,3.425,11.721,6.534" + }, + "fill": "#FFFFFF", + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M133.446,127.979c-4.599,3.921-5.426,11.933-5.635,20.006l-0.017,0.654l4.415,2.067 c2.849,1.244,5.793,2.529,7.581,4.509c0.371,0.41,1.004,0.442,1.412,0.072c0.219-0.197,0.33-0.469,0.33-0.743 c0-0.239-0.084-0.479-0.258-0.67c-2.076-2.299-5.222-3.673-8.266-5.001c0,0-2.377-1.112-3.174-1.486 c0.223-7.385,1.021-14.572,4.909-17.887c1.892-1.614,4.386-2.189,7.621-1.757c4.143,0.554,9.086,4.472,11.5,9.113 c1.348,2.591,2.51,6.535,0.395,10.611c-0.254,0.49-0.064,1.093,0.426,1.348c0.49,0.254,1.094,0.063,1.35-0.427 c1.959-3.775,1.818-8.199-0.395-12.456c-2.732-5.251-8.203-9.53-13.012-10.172C138.853,125.257,135.763,126,133.446,127.979z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M154.077,146.278c-2.156,1.18-4.24,2.619-6.256,4.01c-3.635,2.509-7.068,4.878-10.941,5.924 c-2.991,0.808-6.055,1.058-9.3,1.324c-3.222,0.263-6.553,0.536-9.783,1.406c-2.027,0.546-4.117,1.397-6.137,2.221 c-3.491,1.423-7.102,2.895-10.528,2.866c-0.552-0.005-1.004,0.439-1.009,0.991s0.439,1.004,0.991,1.009 c3.828,0.033,7.627-1.516,11.301-3.014c2.054-0.837,3.994-1.628,5.902-2.142c3.054-0.823,6.292-1.088,9.425-1.344 c3.191-0.261,6.492-0.531,9.659-1.386c4.205-1.135,7.941-3.714,11.557-6.208c1.973-1.362,4.014-2.771,6.08-3.901 c0.484-0.265,0.662-0.873,0.396-1.357S154.562,146.013,154.077,146.278z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M156.458,153.549c-2.619,0.064-5.709,0.812-8.98,1.604c-4.279,1.035-8.701,2.104-11.902,1.536 c-0.543-0.096-1.063,0.267-1.159,0.81c-0.097,0.544,0.267,1.063,0.81,1.16c3.613,0.641,8.24-0.481,12.72-1.562 c3.166-0.766,6.154-1.489,8.561-1.548c5.664-0.141,7.961,0.698,13.508,2.724c0.518,0.189,1.094-0.077,1.281-0.596 c0.189-0.519-0.076-1.091-0.596-1.282C165.069,154.337,162.501,153.399,156.458,153.549z" + }, + "stroke": { + } + } + ] + } + ] + } + ] + }, + { + "name": "textSurface", + "children": [ + { + "name": "spokenBubble", + "children": [ + { + "name": "textContainer", + "shape": { + "type": "path", + "path": "M225.719,45.306c0-6.627,5.373-12,12-12h181.333 c6.627,0,12,5.373,12,12V150.64c0,6.627-5.373,12-12,12H237.719c-6.627,0-12-5.373-12-12V45.306z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "name": "textArrowBelow", + "shape": { + "type": "path", + "path": "M249.052,160.639 c-0.775,14.251-1.676,18.525-9.1,30.565c9.705-0.79,21.952-21.605,25.1-30.045" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "thoughtBubble", + "children": [ + { + "name": "textContainer_1_", + "shape": { + "type": "path", + "path": "M202.698,21.089 c19.686-26.45,59.686-24.45,79.747-0.084c2.697,1.349,5.571,1.709,7.472,0.781c15.28-13.888,33.272-14.043,49.893-7.839 c2.771,1.034,5.478,2.219,8.031,3.421c28.543-21.729,75.543-10.729,83.166,27.658c0,0-1.324,3.889,1.165,6.603 c18.212,11.011,26.212,32.011,22.212,53.011c-1,5.333-3.223,9.667-6.037,13.52c-2.814,3.854-1.381,0-2.613-0.591 c-1.35-0.929-3.35-0.929-4.35-1.929c16,7,27,22,30,39c2,21-8,41-27,50c-16,7.5-32.5,5.5-45.745-2.556 c-2.532-1.384-4.229-1.856-5.336-1.551c-1.919,0.107-3.919,2.107-5.919,2.107c4-1,6-5,10-6c-15,11-35,12-52,3c-13-7-20-20-24-34 c1,5,3,9,3.299,13.505c-0.397,0.708-3.423,2.219-6.655,3.466c-22.627,8.729-49.423,1.729-65.241-19.971 c-3.453,0-6.263,0.589-8.723,0.879c-17.3,3.2-32.381-7.709-40.771-22.689c-1.678-2.996-3.089-6.153-4.195-9.396 c-15.714-7.795-29.714-18.795-33.714-37.795c-5-25,11-45,29.842-57.667c0.719-2.335,1.697-4.636,3.006-6.896 C201.159,23.306,202.698,21.089,202.698,21.089z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M269.719,186.306c0,4.602-4.179,8.333-9.333,8.333c-5.155,0-9.334-3.731-9.334-8.333 c0-4.603,4.179-8.333,9.334-8.333C265.54,177.973,269.719,181.704,269.719,186.306z" + }, + "fill": "#FFFFFF", + "stroke": { + } + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M269.719,186.306c0,4.602-4.179,8.333-9.333,8.333c-5.155,0-9.334-3.731-9.334-8.333 c0-4.603,4.179-8.333,9.334-8.333C265.54,177.973,269.719,181.704,269.719,186.306z" + }, + "fill": "none", + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M268.225,186.165c-0.564,8.736-13.982,9.286-15.633,0.853 c-1.785-9.125,15.017-10.254,15.649-0.451c0.125,1.929,3.078,1.388,2.955-0.521c-0.814-12.597-20.828-12.412-21.639,0.119 c-0.827,12.813,20.831,13.028,21.655,0.283C271.337,184.518,268.35,184.235,268.225,186.165z" + }, + "fill": "#FFFFFF", + "stroke": { + } + } + ] + } + ] + }, + { + "shape": { + "type": "path", + "path": "M260.386,188.306c0,3.498-2.985,6.333-6.667,6.333 s-6.667-2.835-6.667-6.333c0-3.498,2.985-6.333,6.667-6.333S260.386,184.808,260.386,188.306z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M238.386,196.973c0,1.289-1.045,2.333-2.334,2.333 c-1.288,0-2.333-1.045-2.333-2.333s1.045-2.333,2.333-2.333C237.341,194.639,238.386,195.684,238.386,196.973z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M285.719,179.973c0,4.602-4.253,8.333-9.5,8.333 s-9.5-3.731-9.5-8.333c0-4.603,4.253-8.333,9.5-8.333S285.719,175.371,285.719,179.973z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "yellBubble", + "children": [ + { + "shape": { + "type": "path", + "path": "M251.156,176.051 l40.228-15.992" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M280.932,149.385 l-40.667,36.42" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "textContainer_2_", + "shape": { + "type": "path", + "path": "M217.778,34.643 c8.609,6.684,9.952,3.684,7.987-5.785c6.308,5.125,9.308,3.782,10.188-4.309c2.433,8.091,5.266,8.091,9.12-1.703 c6.063,9.793,13.146,9.793,24.043,3.878c6.103,5.915,16.02,5.915,20.094-4.64c17.178,10.555,28.511,10.555,45.233-5.505 c5.941,16.06,17.273,16.06,18.835,1.458c19.688,14.603,29.605,14.603,46.749-17.802c-0.144,32.405,6.939,32.405,29.26,16.182 c-12.403,16.223-9.57,16.223,4.813,6.576c-11.07,9.646-8.07,10.99,4.333,9.089c-8.061,6.244-6.717,9.244,2.533,11.068 c-9.25,1.489-9.25,5.703-0.315,13.07c-8.935,6.115-8.935,15.385,7.513,10.932c-16.447,24.677-16.447,35.631,14.938,36.553 c-31.385,19.303-31.385,28.571-4.39,40.526c-26.995,1.528-26.995,5.741-5.942,17.857c-21.053-8.801-22.396-5.802-9.526,11.916 c-17.213-13.374-20.213-12.03-12.048,8.029c-11.479-20.06-14.312-20.06-10.553,3.532c-13.676-23.591-20.759-23.591-29.814-2.664 c-7.944-20.927-17.861-20.927-27.072,12.467c-12.039-33.395-23.373-33.395-23.148-1.581 c-22.89-31.814-34.224-31.814-61.517-8.479c6.042-23.335-3.874-23.335-11.9-9.703c-8.975-13.632-16.058-13.632-23.926,4.361 c-2.049-17.993-4.882-17.993-10.51-1.486c2.314-16.508-0.686-17.851-12.385-5.019c7.356-17.175,6.013-20.176-10.27-7.879 c16.283-15.61,16.283-19.824-9.255-12.972c25.538-20.334,25.538-29.603,1.919-46.578c23.619-3.249,23.619-14.204-0.313-25.522 c23.933-8.905,23.933-18.175,7.798-37.429C226.385,48.854,226.385,44.64,217.778,34.643z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + } + ] + } + ] + } +] \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Lars.svg b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Lars.svg new file mode 100644 index 0000000..177385e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Lars.svg @@ -0,0 +1,532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/LarsDreaming.json b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/LarsDreaming.json new file mode 100644 index 0000000..e0999bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/LarsDreaming.json @@ -0,0 +1,1823 @@ +[ + { + "name": "torso", + "children": [ + { + "name": "leftArm", + "shape": { + "type": "path", + "path": "M156.007,292.675c2.737,1.778,5.563,3.321,8.752,3.946c7.099,1.391,19.25-5.666,23.136-11.698 c1.572-2.441,8.077-21.031,11.178-14.271c1.224,2.67-1.59,4-1.399,6.462c3.108-1.425,5.48-5.242,8.918-2.182 c0.672,4.019-4.472,4.343-3.918,7.669c1.376,0.218,5.395-1.595,6.285-0.535c1.707,2.027-2.933,3.561-4.072,4.018 c-1.852,0.741-4.294,1.233-5.988,2.369c-2.636,1.769-4.766,5.144-7.033,7.4c-11.657,11.604-26.184,10.553-40.646,5.515 c-4.713-1.642-17.399-4.472-18.655-9.427c-1.647-6.502,5.523-7.999,10.184-6.74C147.658,286.528,151.725,289.892,156.007,292.675z" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "leftArmThumb", + "shape": { + "type": "path", + "path": "M188.257,284.902c-1.932-1.391-3.313-4.206-3.506-6.494c-0.149-1.786,0.59-6.521,3.199-3.95c0.792,0.78,0.083,2.155,0.558,2.943 c0.885,1.47,1.071,0.493,2.748,1.002c1.406,0.426,3.827,2.05,4.251,3.499" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "rightArm", + "shape": { + "type": "path", + "path": "M57.05,283.307c-5.502,5.354-13.185,8.541-18.249,14.221c-4.303,4.827-7.721,11.575-11.138,17.112 c-6.752,10.938-10.794,26.076-19.912,35.185c-3.869,3.866-7.637,5.722-7.251,12.032c0.932,0.372,1.548,0.589,2.418,0.683 c0.605-2.745,2.569-4.198,5.362-3.799c-0.14,3.365-3.512,5.941-3.228,9.235c0.364,4.223,3.983,5.968,7.181,2.662 c2.61-2.699,0.192-7.849,3.338-10.18c5.535-4.103,2.889,2.998,4.13,5.515c5.19,10.519,8.634-1.859,7.35-7.996 c-2.336-11.159-3.003-15.126,3.267-24.416c6.358-9.419,12.194-18.708,19.399-27.588c1.116-1.375,2.08-2.729,3.333-4" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "shirt", + "children": [ + { + "name": "tShirt", + "shape": { + "type": "path", + "path": "M96.509,268.265 c-2.301,0.323-4.69,0.205-6.945,0.72c-2.234,0.509-4.5,0.8-6.749,1.249c-4.369,0.872-8.206,3.265-12.3,5.024 c-3.259,1.4-6.644,2.57-9.763,4.26c-1.923,1.041-3.688,2.616-5.487,3.97c-1.543,1.16-3.495,2.11-4.854,3.563 c-2.205,2.354,0.896,7.407,1.854,9.873c0.92,2.367,2.149,4.819,2.749,7.29c0.228,0.937,0.235,2.058,0.875,2.872 c0.644,0.821,0.64,0.735,1.822,0.049c1.513-0.878,2.873-1.993,4.329-2.993c2.431-1.67,5.462-2.849,7.434-5.111 c-3.335,1.652-5.335,4.679-6.931,8.012c-1.398,2.921-4.482,35.854-5.389,38.947c-0.195,0.003-0.775,0.003-0.749,0.013 c20.561,0,41.123-0.069,61.684,0c2.1,0.008,3.607-0.496,5.529-1.252c0.715-0.28,2.257-0.355,2.807-0.744 c1.412-0.998-0.094-3.916-0.646-5.303c-1.425-3.579-2.111-37.767-4.726-40.543c1.842,0.058,4.127,1.312,5.938,1.95 c1.351,0.478,2.633,1.092,3.956,1.66c1.39,0.597,3.667,1.927,5.168,1.857c0.296-1.872,1.045-3.285,1.839-5.02 c0.942-2.061,1.155-4.214,1.528-6.415c0.351-2.07,0.897-3.787,1.938-5.635c0.531-0.942,1.356-1.73,1.693-2.769 c-0.443-0.401-1.043-0.906-1.604-1.125c-0.56-0.219-1.292-0.11-1.908-0.33c-1.236-0.438-2.439-1.089-3.668-1.575 c-3.773-1.499-7.519-2.983-11.319-4.467c-3.575-1.396-6.977-3.238-10.784-3.871c-1.735-0.289-3.467-0.529-5.073-0.906" + }, + "fill": "#4459A5", + "stroke": { + "color": "#000000", + "cap": "round" + } + }, + { + "name": "shirtNeck", + "shape": { + "type": "path", + "path": "M99.759,268.89 c-0.984,0.151-1.746-0.549-2.75-0.5c-1.369,0.065-1.649,0.872-2.153,2c-1.037,2.325-2.442,4.974,0.064,6.945 c2.53,1.991,6.964,1.718,9.829,0.804c1.616-0.517,3.045-1.24,3.825-2.867c0.508-1.062,0.935-2.771,0.149-3.598 c-0.231-0.243-0.562-0.376-0.84-0.534" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round" + } + }, + { + "name": "shirtLogo", + "children": [ + { + "children": [ + { + "shape": { + "type": "path", + "path": "M104.864,296.921c-0.151-0.004,7.101,0.409,7.052,0.403c0.132,0.028-0.172,0.633-0.021,0.632 c-0.226,0.028-7.244-0.454-7.28-0.464C104.657,297.519,104.776,296.904,104.864,296.921z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M90.071,295.919c-0.199,0.005,6.792,0.431,6.79,0.446c0.153,0.005-0.031,0.663,0.012,0.665 c0.272,0.016-6.79-0.471-6.875-0.459C89.881,296.561,89.796,295.899,90.071,295.919z" + }, + "stroke": { + } + } + ] + }, + { + "shape": { + "type": "path", + "path": "M84.407,306.477c0.2-0.159,0.322-1.04,0.254,0.057c-0.542-0.355-2.02,2.083-4.215,2.001 c-1.887-1.706-4.559-3.384-4.302-7.092c0.652-2.599,3.082-4.084,5.213-3.942c1.889,0.378,2.899,0.717,4,1.318 c-0.497,0.957-0.175,0.866-0.459,0.703c0.456-2.398,0.598-5.75,0.312-7.855c0.594-0.554,0.714,0.125,1.249,0.941 c0.502-0.727,0.509-1.425,0.875-0.571c-0.207,1.328-0.809,7.187-0.711,10.174c-0.126,2.798-0.375,4.354-0.051,4.985 c-0.718,0.613-0.667,1.006-0.981,1.381c-0.72-1.33-1.056-0.132-1.339-0.157C84.632,308.442,84.493,305.791,84.407,306.477z M81.186,307.177c2.403,0.206,3.734-2.164,3.841-4.223c0.269-2.72-0.896-5.104-3.198-5.04c-1.972,0.438-3.46,2.188-3.331,4.639 C78.171,306.266,79.847,306.962,81.186,307.177z" + }, + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M93.321,297.767c2.592,0.147,5.688,2.314,5.696,5.627c-0.611,4.576-3.69,5.316-6.158,5.581 c-2.68-0.76-5.708-1.872-5.413-6.472C88.086,299.395,90.653,297.875,93.321,297.767z M92.939,307.46 c2.531,0.735,3.706-1.297,3.666-3.935c0.114-2.219-0.641-4.584-3.389-4.896c-2.29-0.553-3.366,2.188-3.661,4.688 C89.339,305.265,89.934,307.95,92.939,307.46z" + }, + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M99.688,303.916c0.03-1.511,0.055-4.73,0.022-4.646c0.481-1.355,0.658-0.556,1.034-1.297 c0.263,1.473,0.653,0.326,1.186,0.065c-0.386,2.518-0.513,3.348-0.574,4.949c-0.068-0.47-0.128,2.28-0.238,2.188 c-0.055,1.935-0.036,2.201-0.047,4.219c-0.079,0.914-0.28,2.412-1.126,3.831c-0.61,1.212-1.73,1.146-3.24,1.651 c0.073-0.945-0.065-1.242-0.096-1.822c0.098,0.138,0.213,0.604,0.225,0.397c1.892,0.229,2.209-1.896,2.362-3.365 c0.042,0.304,0.512-6.934,0.415-7.062C99.73,302.637,99.75,303.179,99.688,303.916z M100.978,295.564 c0.717,0.14,1.11,0.61,1.099,1.156c0.052,0.552-0.595,0.993-1.286,1.015c-0.541-0.074-1.025-0.548-1.022-1.054 C99.813,296.084,100.292,295.644,100.978,295.564z" + }, + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M108.115,298.791c3.028-0.066,5.283,1.359,5.256,5.758c-0.264,3.479-3.366,4.63-5.883,5.119 c-2.429-0.033-5.619-2.24-5.16-5.811C102.322,300.085,105.715,298.846,108.115,298.791z M107.351,309.232 c2.675-0.132,3.839-2.333,3.841-4.497c0.246-2.344-0.263-4.833-2.923-5.396c-2.844,0.299-3.974,1.917-4.053,4.479 C104.136,306.655,104.854,308.372,107.351,309.232z" + }, + "stroke": { + } + } + ] + } + ] + } + ] + }, + { + "name": "heads", + "children": [ + { + "name": "head1", + "children": [ + { + "name": "leftEart", + "children": [ + { + "shape": { + "type": "path", + "path": "M201.557,195.475 c7.734-4.547,16.592-5.012,18.405,4.443c2.43,12.659-3.317,13.328-14.598,13.328" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M211.711,203.09 c0.523,0.004,0.946-0.208,1.271-0.635" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M211.076,197.377 c3.062,3.013,5.489,5.624,4.442,10.155" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + }, + { + "name": "bgHairTop", + "shape": { + "type": "path", + "path": "M54.384,199.307c-5.253-4.402-7.511-11.061-15.779-10.632c3.449-1.277,7.116-2.397,10.911-2.666 c-2.873-1.397-5.865-2.575-8.231-4.718c3.986-1.119,11.47-1.817,14.864,0.75c-5.183-2.758-8.397-7.816-13.062-10.598 c6.014-0.643,12.377,0.978,18.022,2.265c-2.547-4.486-6.682-10.83-10.523-14.297c5.033,1.052,10.647,4.518,15.062,7.177 c-1.614-4.176-5.634-8.406-7.859-12.513c10.312-1.125,12.522,4.919,19.7,9.932c-0.412-0.127-1.114-0.113-1.527,0.015 c0.875-7.261,3.058-12.8,8.258-18.566c6.771-7.507,17.813-9.131,24.095-15.381c-4.699,1.821-4.518,23.765-4.875,28.955" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "bgHairLeft", + "shape": { + "type": "path", + "path": "M92.384,243.973c-6.334,7.929-12.601,12.241-22.465,15.361c3.65-1.263,7.735-5.859,7.695-9.928 c-2.208,0.218-4.49,0.605-6.498,1.098c1.244-1.098,2.087-3.239,3.198-4.396c-5.77,0.001-12.131,1.133-18.396,1.23 c5.013-2.81,10.665-3.25,12.398-9.247c-3.59,0.313-7.233,1.606-11.033,1.097c1.731-2.022,3.953-3.995,5.049-6.447 c-3.781,0.056-6.665,3.098-10.547,2.465c0.962-2.863,3.187-5.208,4.531-7.766c-5.59-0.273-11.658,2.45-17.732,2.564 c5.494-2.857,8.967-7.819,12.3-12.718c5.233-7.693,10.625-9.96,20.349-9.981c11.059-0.024,15.558,6.714,20.984,16 c2.786,4.767,7.249,14.375,0.832,18" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "bgHair", + "shape": { + "type": "path", + "path": "M142.384,255.307c2.984,6.076,3.567,11.855,10.531,14.6c-0.134-3.114-0.094-6.664,1.619-9.033 c1.604,1.969,3.122,4.211,5.048,5.698c-0.29-1.769,0.412-4.023,0.233-5.828c3.444,0.261,4.979,3.965,8.468,4.479 c0.065-2.78,0.427-5.151,0.868-7.813c2.687,0.2,4.768,1.565,7.132,2.997c0.452-4.921-0.409-10.579-0.667-15.666 c-5.795-0.756-12.291,2.827-17.899,3.899c-4.414,0.844-14.136,0.523-15.333,6" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "neck", + "shape": { + "type": "path", + "path": "M106.989,254.499c-2.932,6.063-4.613,11.997-8.947,17.138c7.288,10.194,16.311-10.9,15.183-17.026 c-1.926-1.138-3.928-1.589-6.236-1.38" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "headShape", + "shape": { + "type": "path", + "path": "M210.941,207.666c-0.844,3.985-2.081,7.982-3.77,11.783c-3.374,7.604-8.543,14.427-16.052,18.899 c-2.94,2.13-5.983,4.167-9.109,6.085c-25.013,15.342-55.353,23.08-82.254,10.57c-3.433-1.558-6.785-3.432-10.053-5.66 c-1.821-1.185-3.592-2.46-5.308-3.832c-1.715-1.373-3.375-2.842-4.972-4.412c-2.352-2.148-4.576-4.425-6.631-6.814 c-6.168-7.169-10.823-15.358-12.87-24.185c-0.649-3.284-0.84-6.634-0.5-9.975c4.48-13.743,14.22-24.364,26.109-32.149 c2.973-1.946,6.079-3.715,9.271-5.309c30.581-15.027,69.581-10.027,95.852,12.209c2.563,2.254,4.987,4.651,7.244,7.178 c4.513,5.054,8.354,10.626,11.312,16.64C210.178,201.505,210.798,204.497,210.941,207.666z" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "rightEar", + "children": [ + { + "shape": { + "type": "path", + "path": "M64.857,195.606 c-6.59-7.181-15.047-10.664-19.467,3.676c-1.235,4.007-1.87,14.468,1.29,17.786c4.223,4.435,13.591,0.529,19.055-0.015" + }, + "fill": "#FFE8B0", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M52.407,196.744 c-1.702,3.613-1.257,7.505-1.27,11.424" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M51.772,209.438 c-3.39-4.661,0.922-5.769,5.078-6.347" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + }, + { + "name": "fgHair", + "shape": { + "type": "path", + "path": "M90.384,154.64c8.453-11.353,15.678-13.458,28.581-15.915c-1.382,3.376-3.89,7.352-5.179,11.16 c5.01-1.816,9.571-6.545,15.218-8.413c11.355-3.755,23.853-1.903,35.671-2.213c-3.004,3.712-4.912,7.88-2.025,11.447 c5.855-2.212,13.369-6.871,19.635-6.646c0.263,4.561-0.024,9.278,0.201,13.841c3.509-1.201,6.015-3.04,8.276-5.148 c2.263-2.108,3.761-4.049,4.942-5.2c1.063,2.408,2.134,5.334,2.24,8.494c-0.183,3.462-0.866,6.794-2.66,9.291 c3.663,0.65,6.098-2.021,8.35-4.479c-0.655,4.349-3.164,8.604-3.851,13.013c2.178-0.072,4.382,0.216,6.367-0.48 c-1.39,3.093-3.069,7.287-6.616,8.414c-4.476,1.423-4.354-0.992-7.315-4.332c-4.892-5.518-9.773-6.791-15.872-9.464 c-6.585-2.887-10.982-6.47-17.963-8.219c-8.994-2.255-19.864-3.867-28.093-5.196c2.466,1.967,1.138,5.594,0.659,8.625 c-2.729-0.646-4.41-3.813-6.301-5.158c0.953,3.195,0.983,6.953-2.134,8.491c-6.145-5.226-9.199-9.721-17.527-11.647 c1,1.83,1.728,4.208,1.396,6.402c-0.751,4.971-0.289,3.134-3.836,2.466c-5.192-0.977-9.953-3.677-15.815-4.496 c3.292,2.002,5.469,5.017,7.418,8.21c-2.651,0.404-6.238,0.257-8.382,1.671c2.456,0.38,3.44,2.166,3.197,4.714 c-7.45,0.386-13.623,0.731-19.915,5.434" + }, + "fill": "#FFF471", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + } + ] + }, + { + "name": "eyes", + "children": [ + { + "name": "eyes1", + "children": [ + { + "shape": { + "type": "path", + "path": "M123.163,176.668 c-5.066,1.17-9.01,7.888-13.666,10.335c-4.238,2.227-8.648,6.636-7.009,12.332c1.971,6.848,12.042,3.991,16.261,1.165 c5.282-3.539,9.59-8.517,12.006-14.524c1.523-3.787,2.568-7.272-1.509-9.391c-2.905-1.51-8.174-1.386-11.417-0.583" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M182.545,179.865 c-3.533,0.169-4.854-1.166-8.408-0.001c-3,0.983-6.239,1.936-8.852,3.743c-3.938,2.725-7.46,5.555-4.73,13.592 c1.974,5.811,8.791,7.571,14.656,6.667c5.537-0.854,9.078-4.977,11.408-10.007c3.666-7.918,0.942-11.639-6.742-13.659" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000", + "cap": "round" + } + }, + { + "shape": { + "type": "path", + "path": "M108.829,183.668c-1.308-1.03-4.557,0.011-5.6-1.733 c-1.056-1.765,1.735-5.409,2.984-6.192c5.684-3.562,15.946-0.39,19.95-6.742" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M163.877,167.198c2.369,1.282,6.539,0.307,9.408,0.815 c3.449,0.612,7.065,2.657,10.592,2.851" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M127.496,192.002c-4.917-2.12-9.188-1.708-8.608,4.942 c3.132,1.734,5.428-2.82,7.275-4.942" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M174.852,203.144c-0.293,0.12-0.307,0.577-0.942,0.282 c-1.605-3.188-0.404-6.507,2.676-8.192c2.15-1.176,5.67-1.759,7.471,0.359c0.199,0.234,0.412,0.521,0.515,0.813 c0.229,0.649-0.285,0.95-0.285,0.95s-3.988,6.009-3.285,1.934c0.438,1.743-5.537,5.743-2.287,1.653 c-1.955,2.583-2.524,1.977-3.859,2.868" + }, + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "eyes2", + "children": [ + { + "shape": { + "type": "path", + "path": "M98.668,186.108c0.668-8.915,15.545-13.749,22.667-15" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M169.667,178.108c5.307,3.436,16.928,5.632,19.668,12.333" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M105.334,197.775c8.085-4.283,17.059-2.8,25-6.333" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M164.001,198.775c4.656-0.417,9.664,1.805,14.334,2.017 c3.951,0.18,5.773,0.189,9,2.316" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M124.001,188.108c3.039-0.258,4.594,2.571,5.301,4.983 c-1.096,1.242-2.065,2.646-2.968,4.017" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M168.335,194.108c-1.77,2.293-4.869,3.271-6.299,5.91 c1.377,0.991,3.02,2.122,3.965,3.424" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + } + ] + }, + { + "name": "beard", + "children": [ + { + "shape": { + "type": "path", + "path": "M96.05,213.64 c-0.366,0.21-0.783,0.389-1.167,0.5" + }, + "fill": "#AFA8A5", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M102.55,211.973 c0.314-0.01,0.554-0.198,0.667-0.5" + }, + "fill": "#AFA8A5", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M105.717,208.806 c0.164-0.109,0.336-0.224,0.5-0.333" + }, + "fill": "#AFA8A5", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M111.05,207.973 c-0.651-1.81,0.859-2.262,2.333-1.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M117.717,209.806 c1.738,0,3.653,0.369,5.333,0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M132.717,214.473 c0.104-0.21,0.162-0.435,0.167-0.667" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M139.551,216.973 c0.215-0.175,0.465-0.426,0.666-0.667" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M144.551,213.306 c0.277-0.056,0.557-0.111,0.833-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M147.884,216.64 c0.195,0.045,0.369-0.013,0.5-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M148.384,214.14 c0.112-0.168,0.223-0.332,0.333-0.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M98.217,219.306c1.697-1.772,4.233-2.109,5.967-4.046c1.519-1.696,3.812-3.001,4.2-5.454" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M152.717,216.14 c0.611,0,1.224,0,1.834,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M160.384,217.473 c0.333,0,0.667,0,1,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M163.217,215.973 c0.321-0.042,0.658-0.175,0.834-0.333" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M164.217,218.806 c0.167,0,0.333,0,0.5,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M168.384,217.973 c0.057-0.056,0.111-0.111,0.167-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M169.884,225.806 c0.491-0.397,0.882-0.926,1.167-1.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M172.717,221.973 c0.057,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M171.717,229.806 c0.334,0.075,0.659,0.025,0.834-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M190.051,227.806 c0.163-0.242,0.398-0.423,0.666-0.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M197.384,221.473 c0.258-0.007,0.485-0.125,0.667-0.333" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M199.384,214.973 c-0.04-0.333,0.075-0.609,0.333-0.833" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M117.884,257.306 c0.056,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M142.717,252.473 c0.358,0.068,0.71,0.016,1-0.167" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M137.884,256.473 c0.277,0,0.557,0,0.833,0" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M160.884,252.973 c0.366-0.139,0.766-0.402,1-0.667" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M171.384,250.14 c0.235-0.264,0.476-0.562,0.667-0.834" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M89.384,243.973 c0.537,0.378,1.329,0.876,1.833,1.333" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M79.05,225.473 c0.087,0.272,0.143,0.55,0.167,0.833" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M73.884,222.64 c0,0.167,0,0.333,0,0.5" + }, + "fill": "none", + "stroke": { + "color": "#AAAAAA", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M72.55,219.806c0.466-0.325,0.875-0.797,1.167-1.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M71.717,211.973c0.422-0.553,0.776-1.305,1-2" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M78.55,214.473c0-0.111,0-0.222,0-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M79.384,218.806c-0.001-0.137,0.055-0.248,0.167-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M80.217,221.14c0.111,0,0.222,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M75.55,226.473c0.103-0.5,0.156-0.977,0.167-1.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M78.55,230.14c0.111,0,0.222,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M83.384,227.64c0.118-0.059,0.215-0.107,0.333-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M81.55,237.14c0.056,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M86.217,233.806c0.056,0,0.111,0,0.167,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M87.884,230.473c0.595-0.181,1.219-0.527,1.833-0.667" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M88.717,222.14 c-0.929,2.359-1.615,4.865-2.667,7.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M89.05,216.14 c0.784-0.736,1.709-1.565,2.833-1.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M94.217,210.14 c1.599-0.089,3.199-0.167,4.833-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M94.884,224.64 c0.052-0.588-0.004-1.155-0.167-1.667" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M92.384,228.306 c0.585-0.062,1.244-0.132,1.667-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M88.717,240.14 c0.111,0,0.222,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M95.884,243.306 c0.526,0.1,1.017-0.016,1.333-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M98.55,248.306 c0.069-0.24,0.265-0.926,0.333-1.166" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M96.55,249.806 c0.125,0.014,0.18-0.042,0.167-0.166" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M104.55,250.14 c0.01-0.238,0.126-0.428,0.333-0.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M106.884,251.973 c0.195,0.045,0.37-0.014,0.5-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M113.884,254.806 c0.758-0.586,1.595-1.171,2.382-1.774c0.072,0.376,0.418,0.686,0.48,1.079c0.833,0.265,1.624-0.021,1.638-0.971" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M122.217,254.64 c0.063-0.165,0.179-0.288,0.333-0.334" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M125.884,255.806 c1.13-0.745,2.783-0.962,3.667-2" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M132.217,255.973 c0.638-0.492,1.104-1.173,1.141-1.976c-1.11,0.063-1.449-0.888-1.475-1.857" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M129.717,249.306 c-0.045,0.153-0.168,0.271-0.333,0.334" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M136.551,252.306 c0.223,0,0.444,0,0.666,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M110.217,251.306 c0.056-0.057,0.111-0.11,0.167-0.166" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M140.717,251.806 c0.111,0,0.224,0,0.334,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M150.051,249.473 c0.111,0,0.223,0,0.333,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M143.217,255.473 c1.022-0.313,1.725-1.175,2.646-1.654c0.203,0.321,0.439,0.626,0.521,0.987" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M152.217,253.473 c0.165-0.063,0.288-0.179,0.334-0.333" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M155.051,254.64 c0.223,0,0.444,0,0.666,0" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M157.717,256.473 c0.326-0.027,0.546-0.073,0.834-0.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M163.217,252.64 c0.552-0.892,2.082-1.512,2.341-2.334c0.37-1.178-1.155-3.069-1.007-4.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M167.384,235.973 c0.118-0.54,0.354-1.064,0.667-1.5" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M170.717,242.806 c0-0.333,0-0.667,0-1" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M170.217,236.973 c0-0.333,0-0.667,0-1" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M179.051,235.806 c0.378-0.101,0.738-0.35,1-0.667" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M185.051,232.806 c0.379-0.319,0.656-0.702,0.833-1.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M188.051,231.14 c0.063-0.39,0.178-0.792,0.333-1.167" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M197.884,223.306 c-0.166,0.277-0.334,0.556-0.5,0.833" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + }, + { + "name": "mouths", + "children": [ + { + "name": "mouth1", + "children": [ + { + "shape": { + "type": "path", + "path": "M177.122,216.821c-0.515,2.282-5.213,3.21-7.434,3.854 c-3.254,0.945-6.596,1.345-9.895,1.851c-3.26,0.5-6.665,0.671-10.107,0.671c-3.596,0-6.645,0.559-10.106,0.671 c-3.105,0.1-6.898-0.474-9.694-1.3c-3.527-1.043-6.672-1.666-10.096-3.062c-2.823-1.152-5.746-1.876-8.462-3.143 c-2.594-1.209-6.084-1.994-8.221-3.552c-1.068,1.834-5.867,3.748-8.1,4.546c-2.444,0.874-8.881,2.725-7.817,5.512 c0.457,1.195,1.948,2.273,2.63,3.385c0.774,1.261,1.139,2.601,2.057,3.859c1.83,2.5,4.506,4.773,6,7.34 c1.308,2.249,2.096,4.74,4.01,6.669c2.214,2.233,5.792,2.635,9.231,2.399c7.028-0.479,13.982-2.129,20.481-3.983 c3.295-0.941,6.699-1.536,10.086-2.686c3.272-1.111,6.642-3,9.402-4.777c5.248-3.377,10.278-6.409,14.283-10.705 c1.479-1.587,3.429-2.503,5.149-3.859" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M135.25,241.319 c0.723-4.757-10.487-8.47-14.898-9.526c-3.09-0.74-6.68-1.17-9.858-1.712c-2.758-0.47-6.865-0.836-9.437,0.369 c-1.385,0.649-2.843,1.724-4.141,2.513c2.156,3.964,4.728,8.861,9.468,11.506c3.229,1.801,5.511,0.776,8.859,0.373 c3.045-0.369,6.046-0.703,9.029-1.721c3.479-1.186,7.228-2.385,10.978-2.475" + }, + "fill": "#FFC0C0", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M148.656,225.547c1.267,0.697,1.301,2.838,0.671,3.9 c-0.702,1.182-2.063,1.4-3.307,2.01c-2.271,1.116-4.58,2.624-7.481,2.638c-4.619,0.023-2.144-4.067-0.253-5.869 c2.405-2.292,5.057-2.72,8.72-2.512c0.588,0.034,1.095,0.041,1.65,0.168" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M130.299,223.365 c2.687,0.437,5.619,4.384,3.727,6.422c-1.234,1.33-7.94,1.391-9.915,1.296c-4.896-0.233-2.502-2.445-0.613-4.525 c1.604-1.767,5.088-3.249,7.833-3.36" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M113.178,217.157 c2.56,0.958,4.922,5.057,5.352,7.215c0.377,1.885-0.324,2.106-2.526,2.643c-1.366,0.333-3.636,0.723-5.105,0.385 c-2.506-0.577-5.883-5.051-4.909-7.223c1.03-2.298,5.944-2.923,8.427-2.852" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M99.359,217.662 c2.038,0.432,4.015,4.279,2.468,5.625c-1.083,0.943-5.221,1.795-6.799,1.589c-4.032-0.526-2.265-4.102-0.866-5.872 c0.706-0.894,1.049-1.976,2.514-2.186c1.627-0.233,2.501,0.99,3.921,1.346" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M181.815,222.896c-3.102-2.75-4.765-8.777-9.282-10.403" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "mouth2", + "children": [ + { + "shape": { + "type": "path", + "path": "M87.57,221.951c5.563-1.759,11.066-1.32,16.694-1.782c2.93-0.24,5.228-1.14,8.309-0.927c3.142,0.217,6.085-0.235,9.289,0.176 c7.136,0.914,13.96,0.598,21.112,1.506c3.654,0.464,7.219,0.609,10.811,0.869c4.017,0.291,7.646,1.582,11.433,2.623 c2.948,0.812,6.347,1.618,9.011,2.99c2.521,1.298,6.354,2.856,8.301,4.72c-2.775,0.027-5.602,2.603-8.021,3.769 c-2.93,1.412-5.741,2.949-8.656,4.432c-5.599,2.849-11.885,5.468-18.104,6.53c-6.793,1.161-13.195,2.107-20.067,2.197 c-7.699,0.102-14.313-4.705-20.735-8.396c-2.071-1.19-4.69-2.182-6.504-3.666c-1.792-1.466-3.469-3.386-5.154-4.984 c-2.703-2.564-7.519-5.649-8.13-9.438" + }, + "stroke": { + "color": "#000000", + "width": "3", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M87.785,228.193 c-5.907-3.235-0.344-9.531,3.971-11.424" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2" + } + }, + { + "shape": { + "type": "path", + "path": "M184.679,227.229c-1.534,2.583-2.548,5.334-4.024,7.889" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "width": "2", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M106.862,219.528 c-3.071-0.74-5.608,2.166-6.318,4.738c-0.379,1.375-0.494,2.55,0.748,3.337c1.519,0.962,2.905-0.052,4.418-0.332 c2.518-0.467,7.293,0.053,6.461-4.248c-0.568-2.938-3.743-3.682-6.338-3.335c-0.451,0.06-0.758,0.212-1.205,0.229" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M119.764,218.479 c-2.648,1.243-4.657,3.518-5.346,6.377c-0.866,3.594,3.9,3.711,6.356,2.865c2.64-0.91,4.77-3.351,3.299-6.133 c-1.01-1.91-3.979-2.548-6.026-2.823" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M130.388,219.492 c-1.753,1.382-4.069,4.525-4.835,6.61c-1.159,3.156,2.296,3.371,4.868,3.348c3.061-0.028,6.6-1.148,5.022-4.78 c-1.168-2.691-2.552-4.85-5.551-5.241" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M142.954,221.087 c-1.502,0.337-5.418,3.249-5.638,4.997c-0.292,2.311,4.855,4.536,6.854,4.234c2.503-0.377,4.384-3.175,3.167-5.65 c-0.92-1.873-3.36-2.252-4.508-3.932" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M155.354,222.664 c-2.038,0.426-4.212,2.287-4.766,4.444c-0.723,2.821,3.226,3.383,5.458,3.331c2.541-0.059,5.126-1.752,3.249-4.32 c-1.394-1.908-3.707-3.189-5.304-4.636" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M168.367,237.924 c-1.554-1.217-3.302-2.557-5.203-2.976c-2.973-0.654-3.537,2.131-3.377,4.406c0.205,2.913,1.032,3.883,3.901,2.344 c1.987-1.066,4.271-1.997,4.599-4.456" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M151.524,246.202 c-1.912-0.166-4.004-4.491-2.91-6.25c0.771-1.239,5.456-1.688,6.857-1.292c0.271,0.917,0.979,1.841,0.829,2.771 c-0.088,0.54-0.994,1.645-1.296,2.188c-1.08,1.951-2.133,1.866-3.998,2.685" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M145.911,241.458 c-0.209,1.649-0.215,2.702-1.528,3.801c-0.885,0.738-1.772,1.189-2.54,2.1c-0.786,0.933-1.226,2.38-2.792,1.813 c-1.042-0.377-1.959-2.318-2.138-3.312c-0.299-1.676-1.003-5.228,0.783-6.158c1.154-0.603,7.066-0.18,7.43,1.32" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M133.12,238.991 c-1.495-0.087-2.253-1.33-3.918-0.964c-1.42,0.311-2.489,1.354-2.54,2.836c-0.052,1.527,0.99,5.581,1.852,6.956 c2.363,3.771,4.329-1.535,5.516-3.159c1.117-1.525,2.643-2.053,2.271-3.958c-0.318-1.632-1.118-2.047-2.766-2.329 c-0.382-0.065-0.773-0.095-1.158-0.147" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M116.853,237.43 c-1.049,2.211-0.173,5.147,0.047,7.565c0.357,3.93,3.827,2.028,5.831,0.067c1.575-1.541,4.599-4.86,2.209-6.484 c-1.881-1.279-5.727-2.458-7.756-1.107" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M107.455,233.38 c-0.813,2.487-1.704,5.049,0.073,7.364c1.91,2.486,4.009,1.229,5.537-0.939c1.056-1.5,3.316-4.481,1.563-6.017 c-1.347-1.179-6.468-1.518-7.854-0.325" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "mouth3", + "children": [ + { + "shape": { + "type": "path", + "path": "M99.05,218.973c1.691-0.875,3.313-2.39,4.833-3.537c1.231-0.928,2.782-1.671,3.5-3.072c1.846,3.486,7.661,4.669,11.003,6.067 c3.553,1.486,7.174,3.066,10.784,4.166c4.271,1.301,9.277,1.67,13.721,2.343c4.155,0.629,9.979,1.365,14.162,0.496 c1.182-0.245,2.343-1.024,3.462-1.446c0.162,1.905-3.637,3.023-4.933,3.487c-2.435,0.871-4.18,2.541-6.362,3.871 c-1.623,0.989-2.974,1.669-4.755,2.117c-1.77,0.445-3.353,0.806-4.825,1.878c-5.915,4.311-15.264,3.247-22.424,3.13 c-5.384-0.088-6.719-5.372-9.337-9c-1.437-1.991-2.843-3.854-3.796-6.138c-0.871-2.086-1.119-4.582-2.033-6.528" + }, + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M107.217,227.973c1.182-2.033,4.375-2.176,6.5-1.963c2.879,0.289,4.124,1.217,6.168,3.167c1.834,1.749,5.906,5.509,5.64,8.271 c-2.808,0.89-7.847,0.402-10.346-1.104c-1.334-0.804-1.151-2.256-2.246-3.588c-0.712-0.866-1.836-2.673-2.855-3.311 c-0.209-0.94-2.106-1.499-3.028-1.805" + }, + "fill": "#F4BDBD", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + } + ] + } + ] + }, + { + "name": "personalProps", + "children": [ + { + "name": "hat", + "children": [ + { + "children": [ + { + "children": [ + { + "shape": { + "type": "path", + "path": "M88.374,173.145c0.474-0.074,16.606,2.725,18.01,5.879 c1.145,2.572,28.184,4.568,28.184,4.568l35.971-5.618l5.024,1.132l7.212,0.315l9.295,0.851l10.188,3.248l5.75,2.935 l1.615-1.832l-0.264-5.27l-3.968-7.087c0,0-22.045-13.031-23.272-13.703c-1.229-0.669-4.941-2.294-6.484-4.542 c-8.584-12.528-8.403-18.05-3.371-6.461c0,0,2.662-7.592,2.521-8.575c-0.144-0.982,0.354-5.031,0.354-5.031l2.396-6.832 c0,0-1.379-5.341-2.738-7.19c-1.356-1.844-15.793-4.078-18.162-4.011c-24.933,0.706-3.783,0.071-25.567,0.724 c-24.317,0.728-0.882-2.591-24.068,3.551c-24.228,6.418-5.35-1.298-23.187,6.142c-18.301,7.633-16.67,7.186-16.704,10.685 c-0.034,3.499-3.057-4.884-0.034,3.499c3.023,8.381,3.037-3.871,3.023,8.381c-0.015,12.252,6.696,4.557,1.678,12.373 c-5.017,7.813-3.831,7.91-0.179,8.543c17.017,2.953,4.157,4.378,17.427,3.175" + }, + "fill": "#FF0000", + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M156.604,114.92l-13.936,0.381l-11.633,0.343c-10.646,0.319-11.973-0.155-12.021-0.175l-0.599-0.238 l-0.577,0.514l0.049-0.047c-0.118,0.09-1.43,0.957-11.145,3.53c-9.989,2.646-12.812,2.931-13.421,2.704 c-0.822-0.306-0.821-0.306-7.791,2.604l-2.104,0.878c-16.037,6.689-17.342,7.324-17.342,10.316c0,0.019,0.001,0.041,0.001,0.06 c-0.224-0.108-0.459-0.199-0.787-0.04c-0.357,0.173-0.565,0.275-0.565,0.672c0,0.557,0.411,1.697,1.399,4.438 c0.924,2.561,1.71,3.671,2.714,3.833c0.083,0.014,0.164,0.02,0.241,0.02c0.007,0.584,0.01,1.339,0.01,2.313 c0,0.561-0.001,1.902-0.001,1.916c0,6.908,2.176,8.105,3.347,8.749c0,0,0.075,0.045,0.151,0.09 c-0.095,0.332-0.47,1.1-1.661,2.955c-2.509,3.908-3.516,5.931-3.516,7.303c0,0.358,0.068,0.671,0.196,0.962 c0.544,1.237,1.926,1.477,3.677,1.78l0.135,0.023c8.138,1.412,9.14,2.422,9.568,2.854c0.923,0.931,1.511,0.928,7.224,0.413 c0.06,0.014,0.102,0.068,0.165,0.071c2.167,0.105,16.131,3.138,17.087,5.288c1.147,2.578,16.416,4.228,29.023,5.159 l0.115,0.009c0,0,35.523-5.548,35.896-5.606c0.345,0.078,4.927,1.11,4.927,1.11l7.301,0.319c0,0,8.927,0.818,9.139,0.837 c0.202,0.064,9.854,3.142,10.006,3.19c0.143,0.073,6.368,3.251,6.368,3.251l2.397-2.719l-0.296-5.911l-4.213-7.526 l-0.231-0.137c-0.9-0.532-22.073-13.047-23.304-13.72c-0.001,0-0.734-0.38-0.734-0.38c-1.48-0.752-4.238-2.151-5.404-3.85 c-1.357-1.982-2.451-3.729-3.354-5.268c0.021-0.064,0.104-0.296,0.104-0.296c1.193-3.402,2.576-7.619,2.576-8.885 c0-0.063-0.004-0.118-0.011-0.165c-0.013-0.083-0.018-0.204-0.018-0.356c0-0.909,0.194-2.911,0.363-4.307 c0.072-0.205,2.46-7.013,2.46-7.013l-0.076-0.294c-0.146-0.566-1.468-5.584-2.9-7.532 C173.721,116.784,158.242,114.875,156.604,114.92z M131.097,117.644l11.614-0.342l13.951-0.382 c2.575-0.073,16.104,2.238,17.336,3.614c0.956,1.3,2.058,4.938,2.49,6.549c-0.188,0.536-2.33,6.642-2.33,6.642l-0.014,0.107 c-0.072,0.592-0.387,3.224-0.387,4.658c0,0.258,0.011,0.477,0.034,0.639c-0.006,0.493-0.768,3.026-1.659,5.709 c-2.14-4.566-2.792-4.606-3.242-4.629l-0.62-0.031l-0.354,0.571c-0.069,0.124-0.102,0.29-0.102,0.492 c0,2.273,4.134,9.172,6.992,13.346c1.456,2.12,4.51,3.669,6.149,4.501l0.682,0.353c1.139,0.622,20.813,12.25,23.012,13.549 c0.238,0.427,3.513,6.275,3.721,6.647c0.02,0.393,0.199,3.971,0.23,4.629c-0.229,0.262-0.472,0.535-0.832,0.944 c-1.069-0.546-5.132-2.619-5.132-2.619l-10.369-3.306l-9.403-0.86c0,0-6.995-0.307-7.169-0.315 c-0.168-0.038-5.124-1.155-5.124-1.155s-35.814,5.594-36.044,5.63c-12.419-0.922-25.993-2.687-27.285-4.058 c-1.366-3.097-13.245-5.574-17.517-6.211c-0.203-0.212-0.479-0.346-0.793-0.318c-3.083,0.28-5.996,0.544-6.4,0.369 c0-0.003-0.12-0.117-0.12-0.117c-0.703-0.708-1.879-1.895-10.646-3.416l-0.135-0.023c-0.827-0.143-2.075-0.359-2.188-0.614 c-0.021-0.048-0.033-0.111-0.033-0.193c0-0.592,0.632-2.179,3.205-6.187c1.488-2.318,2.024-3.388,2.024-4.188 c0-0.15-0.019-0.291-0.054-0.428c-0.181-0.712-0.758-1.03-1.179-1.261c-0.865-0.476-2.311-1.271-2.311-6.993 c0-0.014,0.001-1.098,0.001-1.56c0-4.969-0.065-4.992-0.833-5.258c-0.424-0.146-0.816,0.001-1.178,0.377 c-0.208-0.289-0.558-0.898-1.073-2.324c-0.205-0.568-0.385-1.068-0.542-1.506c0.587-0.423,0.632-1.277,0.636-1.644 l-0.014-0.825c-0.004-0.119-0.007-0.231-0.007-0.338c0-1.702,0.899-2.264,16.109-8.608l2.105-0.878 c4.165-1.739,5.948-2.482,6.375-2.562c0.817,0.296,2.292,0.597,14.579-2.658c8.169-2.164,10.697-3.187,11.58-3.704 C120.451,117.773,124.529,117.84,131.097,117.644z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M155.146,147.93c4.88-9.398-5.344-20.199-12.649-21.176 c-12.05-1.61-13.404,10.426-13.684,21.258c3.73,2.016,8.915,3.425,11.721,6.534" + }, + "fill": "#FFFFFF", + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M133.446,127.979c-4.599,3.921-5.426,11.933-5.635,20.006l-0.017,0.654l4.415,2.067 c2.849,1.244,5.793,2.529,7.581,4.509c0.371,0.41,1.004,0.442,1.412,0.072c0.219-0.197,0.33-0.469,0.33-0.743 c0-0.239-0.084-0.479-0.258-0.67c-2.076-2.299-5.223-3.673-8.267-5.001c0,0-2.377-1.112-3.174-1.486 c0.223-7.385,1.021-14.572,4.909-17.887c1.892-1.614,4.386-2.189,7.621-1.757c4.143,0.554,9.086,4.472,11.5,9.113 c1.348,2.591,2.51,6.535,0.395,10.611c-0.254,0.49-0.063,1.093,0.426,1.348c0.49,0.254,1.095,0.063,1.351-0.427 c1.959-3.775,1.817-8.199-0.396-12.456c-2.731-5.251-8.203-9.53-13.012-10.172C138.853,125.257,135.763,126,133.446,127.979z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M154.077,146.278c-2.156,1.18-4.24,2.619-6.256,4.01c-3.636,2.509-7.068,4.878-10.941,5.924 c-2.991,0.808-6.055,1.058-9.3,1.324c-3.222,0.263-6.553,0.536-9.783,1.406c-2.027,0.546-4.117,1.397-6.137,2.221 c-3.491,1.423-7.102,2.895-10.528,2.866c-0.552-0.005-1.004,0.439-1.009,0.991c-0.005,0.552,0.439,1.004,0.991,1.009 c3.828,0.033,7.627-1.516,11.301-3.014c2.054-0.837,3.994-1.628,5.902-2.142c3.054-0.823,6.292-1.088,9.425-1.344 c3.191-0.261,6.492-0.531,9.659-1.386c4.205-1.135,7.94-3.714,11.557-6.208c1.973-1.362,4.014-2.771,6.08-3.901 c0.484-0.265,0.662-0.873,0.396-1.357C155.168,146.193,154.562,146.014,154.077,146.278z" + }, + "stroke": { + } + } + ] + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M156.458,153.549c-2.619,0.064-5.709,0.812-8.98,1.604c-4.278,1.035-8.7,2.104-11.901,1.536 c-0.543-0.096-1.063,0.267-1.159,0.81c-0.097,0.544,0.267,1.063,0.81,1.16c3.613,0.641,8.24-0.481,12.72-1.562 c3.166-0.766,6.153-1.489,8.561-1.548c5.664-0.141,7.961,0.698,13.508,2.724c0.519,0.189,1.095-0.077,1.281-0.596 c0.189-0.519-0.076-1.091-0.596-1.282C165.069,154.337,162.501,153.399,156.458,153.549z" + }, + "stroke": { + } + } + ] + } + ] + } + ] + }, + { + "name": "textSurface", + "children": [ + { + "name": "spokenBubble", + "children": [ + { + "name": "textContainer", + "shape": { + "type": "path", + "path": "M225.719,45.307 c0-6.627,5.373-12,12-12h181.333c6.627,0,12,5.373,12,12v105.334c0,6.627-5.373,12-12,12H237.719c-6.627,0-12-5.373-12-12 V45.307z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "name": "textArrowBelow", + "shape": { + "type": "path", + "path": "M249.052,160.64 c-0.774,14.251-1.676,18.525-9.1,30.565c9.705-0.79,21.952-21.605,25.1-30.045" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "thoughtBubble", + "children": [ + { + "name": "textContainer_1_", + "shape": { + "type": "path", + "path": "M202.698,21.089 c19.686-26.45,59.686-24.45,79.747-0.084c2.696,1.349,5.57,1.709,7.472,0.781c15.28-13.888,33.271-14.043,49.893-7.839 c2.771,1.034,5.479,2.219,8.031,3.421C376.384-4.36,423.384,6.64,431.007,45.026c0,0-1.324,3.889,1.165,6.603 c18.212,11.011,26.212,32.011,22.212,53.011c-1,5.333-3.223,9.667-6.037,13.52c-2.813,3.854-1.381,0-2.612-0.591 c-1.351-0.929-3.351-0.929-4.351-1.929c16,7,27,22,30,39c2,21-8,41-27,50c-16,7.5-32.5,5.5-45.745-2.556 c-2.531-1.384-4.229-1.856-5.336-1.551c-1.919,0.107-3.919,2.107-5.919,2.107c4-1,6-5,10-6c-15,11-35,12-52,3c-13-7-20-20-24-34 c1,5,3,9,3.299,13.505c-0.396,0.708-3.423,2.219-6.654,3.466c-22.627,8.729-49.423,1.729-65.241-19.971 c-3.453,0-6.263,0.589-8.723,0.879c-17.301,3.2-32.382-7.709-40.771-22.689c-1.678-2.996-3.089-6.153-4.195-9.396 c-15.714-7.795-29.714-18.795-33.714-37.795c-5-25,11-45,29.842-57.667c0.72-2.335,1.697-4.636,3.007-6.896 C201.159,23.307,202.698,21.089,202.698,21.089z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M269.719,186.307c0,4.602-4.179,8.333-9.333,8.333s-9.334-3.731-9.334-8.333 c0-4.603,4.18-8.333,9.334-8.333S269.719,181.705,269.719,186.307z" + }, + "fill": "#FFFFFF", + "stroke": { + } + }, + { + "children": [ + { + "shape": { + "type": "path", + "path": "M269.719,186.307c0,4.602-4.179,8.333-9.333,8.333s-9.334-3.731-9.334-8.333 c0-4.603,4.18-8.333,9.334-8.333S269.719,181.705,269.719,186.307z" + }, + "fill": "none", + "stroke": { + } + }, + { + "shape": { + "type": "path", + "path": "M268.225,186.166c-0.563,8.736-13.981,9.286-15.633,0.853 c-1.785-9.125,15.018-10.254,15.649-0.451c0.125,1.929,3.078,1.388,2.955-0.521c-0.814-12.597-20.828-12.412-21.64,0.119 c-0.827,12.813,20.831,13.028,21.655,0.283C271.337,184.519,268.35,184.235,268.225,186.166z" + }, + "fill": "#FFFFFF", + "stroke": { + } + } + ] + } + ] + }, + { + "shape": { + "type": "path", + "path": "M260.386,188.307c0,3.498-2.984,6.333-6.667,6.333 c-3.682,0-6.667-2.835-6.667-6.333s2.985-6.333,6.667-6.333C257.401,181.974,260.386,184.809,260.386,188.307z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M238.386,196.974c0,1.289-1.045,2.333-2.334,2.333 c-1.288,0-2.333-1.045-2.333-2.333c0-1.288,1.045-2.333,2.333-2.333C237.341,194.64,238.386,195.685,238.386,196.974z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M285.719,179.974c0,4.602-4.253,8.333-9.5,8.333 s-9.5-3.731-9.5-8.333c0-4.603,4.253-8.333,9.5-8.333S285.719,175.372,285.719,179.974z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "yellBubble", + "children": [ + { + "shape": { + "type": "path", + "path": "M251.156,176.051l40.228-15.992" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "shape": { + "type": "path", + "path": "M280.932,149.385l-40.667,36.42" + }, + "fill": "none", + "stroke": { + "color": "#000000", + "cap": "round", + "join": "bevel" + } + }, + { + "name": "textContainer_2_", + "shape": { + "type": "path", + "path": "M217.778,34.644 c8.608,6.684,9.951,3.684,7.986-5.785c6.309,5.125,9.309,3.782,10.188-4.309c2.433,8.091,5.266,8.091,9.12-1.703 c6.063,9.793,13.146,9.793,24.043,3.878c6.103,5.915,16.02,5.915,20.094-4.64c17.178,10.555,28.511,10.555,45.233-5.505 c5.94,16.06,17.272,16.06,18.835,1.458c19.688,14.603,29.604,14.603,46.749-17.802c-0.145,32.405,6.938,32.405,29.26,16.182 c-12.403,16.223-9.57,16.223,4.813,6.576c-11.069,9.646-8.069,10.99,4.333,9.089c-8.061,6.244-6.717,9.244,2.533,11.068 c-9.25,1.489-9.25,5.703-0.314,13.07c-8.936,6.115-8.936,15.385,7.513,10.932c-16.447,24.677-16.447,35.631,14.938,36.553 c-31.385,19.303-31.385,28.571-4.39,40.526c-26.995,1.528-26.995,5.741-5.942,17.857c-21.053-8.801-22.396-5.802-9.525,11.916 c-17.213-13.374-20.213-12.03-12.048,8.029c-11.479-20.06-14.313-20.06-10.554,3.532c-13.676-23.591-20.759-23.591-29.813-2.664 c-7.944-20.927-17.861-20.927-27.072,12.467c-12.039-33.395-23.373-33.395-23.147-1.581 c-22.891-31.814-34.225-31.814-61.518-8.479c6.042-23.335-3.874-23.335-11.899-9.703c-8.976-13.632-16.059-13.632-23.927,4.361 c-2.049-17.993-4.882-17.993-10.51-1.486c2.314-16.508-0.686-17.851-12.385-5.019c7.355-17.175,6.013-20.176-10.271-7.879 c16.283-15.61,16.283-19.824-9.255-12.972c25.538-20.334,25.538-29.603,1.919-46.578c23.619-3.249,23.619-14.204-0.313-25.522 c23.933-8.905,23.933-18.175,7.798-37.429C226.385,48.854,226.385,44.641,217.778,34.644z" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + } + ] + } + ] + } +] \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/LarsDreaming.svg b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/LarsDreaming.svg new file mode 100644 index 0000000..bd82204 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/LarsDreaming.svg @@ -0,0 +1,537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Nils.json b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Nils.json new file mode 100644 index 0000000..eee2a9f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Nils.json @@ -0,0 +1,717 @@ +[ + { + "name": "nils_1_", + "children": [ + { + "name": "lowerBody", + "children": [ + { + "name": "leftShoe", + "children": [ + { + "shape": { + "type": "path", + "path": "M44.787,442.042c13.536-0.097,28.515-2.647,40.667-8.815 c13.064-6.631,3.188-24.604,0.553-34.404c-5.771-1.73-10.549-4.837-16.568-0.148c-4.371,3.405-6.025,11.462-2.07,15.501 c-3.212,7.339-17.804,1.912-23.732,6.7c-5.825,4.706-7.32,17.966,0.484,21.167" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M133.453,425.375c0.901-2.979,2.793-5.781,4.667-8" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M56.787,426.708c-2.551-2.07-3.97-5.252-5.333-8" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "rightShoe", + "children": [ + { + "shape": { + "type": "path", + "path": "M111.453,402.042c-2.005-0.426-3.947-0.363-5.899-0.566 c-0.104,2.376,0.438,5.478,0.048,7.751c-0.4,2.327-1.597,4.06-2.146,6.817c-0.975,4.9,0.412,10.561,3.813,13.517 c3.718,3.23,8.442,2.56,12.87,3.797c4.256,1.189,7.959,3.502,12.5,4.849c9.169,2.717,20.433,7.657,25.649-4.685 c2.797-6.618-0.894-5.624-6.331-7.982c-4.049-1.757-6.774-4.353-10.32-7.014c-4.123-3.095-8.203-5.957-13.415-6.584 c-0.11-3.353,1.616-5.692,1.132-9.117c-5.299-2.318-13.883-3.984-19.233-0.116" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M62.787,424.708c-1.417-2.271-3.012-5.388-2.667-8.666" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M141.453,428.042c2.076-1.991,4.274-3.745,6-6" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "leftLeft", + "shape": { + "type": "path", + "path": "M111.687,360.891c0.036,4.747,1.844,9.223,1.56,14.078 c-0.24,4.099-1.372,8.075-1.553,12.199c-0.2,4.558-1.141,9.069-1.142,13.648c0,3.48-0.275,5.533,3.084,7.379 c2.301,1.264,4.909,1.163,7.094-0.113c2.993-1.748,2.841-3.747,2.868-6.904c0.025-2.952,0.712-5.943,1.162-8.841 c0.446-2.868,0.401-5.667,0.398-8.578c-0.004-3.788,0.138-7.556,0.003-11.357c-0.118-3.318-1.49-6.782-1.279-10.093" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "name": "rightLeg", + "shape": { + "type": "path", + "path": "M74.107,353.8c-0.57,1.485-0.055,3.729-0.142,5.357 c-0.076,1.44-0.315,2.774-0.571,4.184c-0.786,4.316-1,8.786-1.732,13.181c-1.158,6.942-0.906,14.193-1.777,21.167 c-0.456,3.648,0.862,8.169,5.499,7.139c2.579-0.572,4.859-3.016,5.846-5.361c2.937-6.981-0.974-13.832-0.457-21.057 c0.331-4.619,2.141-8.637,3.402-13.056c0.769-2.694,1.709-5.131,1.703-7.972c-0.004-1.809,0-3.616,0-5.425" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "name": "pants", + "children": [ + { + "name": "pants_1_", + "shape": { + "type": "path", + "path": "M72.453,299.375 c1.947,19.47-1.848,38.143-0.849,57.849c3.905,0.681,11.166,0.417,14.849-0.849c7.135-2.453,6.497-2.631,7-11 c0.81-13.479-2.849-20.278,12.845-17.853c-1.125,13.305-9.43,25.115-3.42,38.649c8.404-0.38,20.265,0.661,28.427-1.944 c0.505-10.198-1.523-17.622-2.853-26.853c-1.398-9.708,3.313-18.866-1.174-27.826c-9.218,0.693-18.358,2.747-27.722,0.798 c-9.863-2.054-18.89-8.623-29.104-8.972" + }, + "fill": "#ADA274", + "stroke": { + "color": "#000000" + } + } + ] + } + ] + }, + { + "name": "leftArm_1_", + "children": [ + { + "name": "leftArm", + "shape": { + "type": "path", + "path": "M161.453,199.375c-6.73,0.606-12.711,7.192-9.248,13.248 c3.358,5.87,13.618,5.538,19.021,6.979c4,1.066,16.837,3.192,19.52,5.703c3.974,3.72,5.243,15.844,5.854,20.924 c13.641,4.354,26.949-0.671,33.102-13.826c5.331-11.398-5.783-19.505-17.098-22.174c1.771-8.465,14.167-32.061-0.128-36.899 c-4.761-1.611-15.726,3.346-17.801,7.272c-3.095,5.855-0.055,15.902-0.374,22.623c-13.399,0.68-27.351-3.555-39.849-1.849" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M221.453,220.375c-4.604-1.889-17.369-6.456-21.801-1.801 c-4.797,5.039,1.256,14.077,6.027,16.578c4.118,2.159,20.628,4.348,24.575,1c4.999-4.241,2.906-14.993-2.801-17.777" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M214.453,253.375c-1.006,3.482-0.767,9-3.174,12.826 c-15.878,0.834-16.244-5.43-25.674-14.571c10.53-5.253,19.583,4.754,29.849,2.745" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M226.453,239.375c0.54,16.962-8.377,15.391-21.023,12.023 c-17.34-4.617-11.577-7.176,3.023-13.023" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M208.453,188.375c-4.474,0.83-8.972-0.434-11-4" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M203.453,221.375c6.112-0.45,18.967,6.649,8,10" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M195.453,258.375c3.441-0.666,5.408-2.2,4-5" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "rightArm", + "children": [ + { + "shape": { + "type": "path", + "path": "M39.453,187.375c-3.104,7.216-3.137,14.998-7.278,21.997 c-5.137,8.684-9.794,6.9-17.5,12.281c-8.803,6.146-12.141,29.697-14.095,40.548c20.2,3.536,18.779-23.776,21.649-34.524 c0.975,13.012-0.289,26.468,0.374,39.546c2.257,0.582,6.44,0.582,8.697,0c2.04-10.494-3.53-22.034-0.852-33.546 c0.009,7.58-2.598,32.2,10.852,28.546c0.514-10.124-1.899-18.938-4.868-25.972c2.181,8.766,4.798,18.48,15.845,15.949 c6.407-12.781-3.909-15.105-8.048-25.604c-2.531-6.422,0.527-25.44,6.223-31.223" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M6.453,248.042c2.111,0,6.324-0.997,6.667,1.666" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M22.453,255.375c2.85-0.37,4.155,0.539,4.999,3.001 c1.085,3.168-0.233,4.173-2.999,5.332" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M31.787,255.042c3.675-0.503,7.077,4.971,3,6" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M48.453,235.708c-5.387-0.935-3.676,10.551,3.667,8.667" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M207.453,241.375c2.63,1.686,2.368,4.909,1.884,7.884 c-0.744,0.175-1.23,0.456-1.884,0.783" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "shirt", + "children": [ + { + "name": "mainShirt", + "shape": { + "type": "path", + "path": "M39.453,189.375 c0.777-3.467,1.211-7.217,1.151-10.849c14.871-1.403,32.372-7.656,46.875-11.125c9.423-2.254,31.959-20.14,39.244-11.079 c3.778,4.7,2.066,16.102,5.456,22.08c2.827,4.986,9.093,12.445,13.003,16.217c5.193,5.009,15.695-3.271,18.271,2.754 c3.024,7.075-0.511,20.739-10.02,18.016c-5.084-1.456-12.238-5.093-15.228-9.769c-4.055-6.341-8.831-13.012-10.53-19.167 c-0.713,10.697,1.173,22.369,2.726,32.92c1.637,11.128,1.886,22.261,3.052,34c2.02,20.336,6.915,42.053,10.845,61.855 c-14.599,4.091-47.868-3.832-47.868-3.832s-14.457-3.595-21.2-5.801c-8.131-2.661-21.777-11.223-13.777-11.223 s-3.063-9.756,2.468-40.878s14.003-39.61,19.806-56.122c1.387-3.946,2.399-8.004,4.375-11.845 c-17.565,1.273-26.117,7.964-40.475,16.742c-2.413-9.11-9.707-14.336-17.174-18.897" + }, + "fill": "#4867FF", + "stroke": { + "color": "#000000", + "width": "2" + } + }, + { + "name": "highlight", + "shape": { + "type": "path", + "path": "M99.453,179.375 c-5.364,2.937-10.603,8.065-17,8" + }, + "fill": "#4867FF", + "stroke": { + "color": "#000000", + "width": "2" + } + }, + { + "name": "logo", + "children": [ + ] + } + ] + }, + { + "name": "heads", + "children": [ + { + "name": "head1", + "children": [ + { + "name": "hair_1_", + "shape": { + "type": "path", + "path": "M60.453,97.375c-3.965-0.012-7.98,0.045-11.897-0.147 c2.645-5.735,10.791-8.417,14.794-13.65c-2.384,0.19-5.083-0.61-7.543-0.154c2.395-1.359,4.008-3.487,6.347-4.846 c-2.993-0.207-6.326-0.467-9.399-0.18c2.893-0.874,5.243-2.063,7.821-3.05c-0.92-0.166-4.625-2.732-6.772-4.221 c5.187-4.255,12.317-5.834,17.573-8.534c-2.844-0.13-5.037-1.713-7.75-2.393c-0.424-7.244-1.302-14.461-1.223-21.475 c2.166,2.761,3.541,5.976,4.849,8.546c-0.996-11.489,4.773-13.594,13.025-18.797c0.403,1.91,1.943,3.845,2.229,5.546 c1.27-13.312,22.924-28.644,34.016-33.272c0.039,6.247-2.955,11.957-5.365,17.475c-0.365,0.375-0.375,0.366-0.028-0.028 c5.849-6.92,14-8.882,22.143-10.721c-1.215,5.635-5.28,10.684-6.698,16.602c6.258-10.069,20.421-4.135,27.949-11.351 c-1.011,3.251-2.028,6.254-3.143,9.276c7.035-8.774,15.902-11.37,25.894-14.499c-0.668,7.995-10.243,18.061-0.822,20.872 c8.889,2.653,17.435-7.31,26.698-6.075c-2.976,1.954-5.822,4.12-8.614,6.345c7.596,2.01,18.243,0.852,26.614,0.658 c-4.125,3.304-9.116,7.352-9.593,12.943c3.896-0.826,8.6-1.318,12.741-0.725c-1.013,1.726-1.479,5.845-2.718,7.678 c3.136-0.265,6.17,1.053,8.519,1.452c-3.019,0.804-5.247,3.16-7.566,4.52c3.765,0.755,7.282,2.001,10.844,3.398 c-3.322,1.78-5.724,5.475-4.776,9.657c0.798,0.374,2.536,0.977,2.995,1.147c-6.481,3.645-21.331-1.522-28.945-2.752 c-13.967-2.257-27.844-4.641-41.913-6.244c-17.039-1.941-37.716-3.446-54.359,1.025C83.983,67.42,68.871,76.651,58.453,98.375" + }, + "fill": "#605542", + "stroke": { + "color": "#000000" + } + }, + { + "name": "neck", + "shape": { + "type": "path", + "path": "M108.453,132.375c0.902,8.412-0.835,20.235-3.849,27.797 c4.164,2.769,15.721,4.339,19.868,0c3.538-3.701,1.964-17.522,1.98-22.797" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "name": "leftEar_1_", + "children": [ + { + "name": "leftEar", + "shape": { + "type": "path", + "path": "M232.453,76.375c10.186-6.915,21.465,6.994,19.052,17 c-2.781,11.53-20.253,15.518-27.052,5" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M245.453,91.375c-0.398-2.267-1.99-4.77-3.171-6.829 c-2.738-0.936-5.713-1.545-8.829-1.171" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M238.453,90.375c1.863-0.367,3.589-1.433,5-3" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "headShape", + "shape": { + "type": "path", + "path": "M116.453,35.375 c-13.417,2.219-31.83,24.639-39.777,35.055c-8.128,10.652-24.737,25.747-20.219,39.945 c5.161,16.221,22.089,14.526,34.025,19.972c15.448,7.047,30.645,11.875,46.749,14.251c18.146,2.676,27.633,0.161,44.223-7.972 c15.701-7.697,29.862-9.589,41.801-24.303c8.182-10.084,15.033-28.733,8.174-38.923c-6.159-9.151-21.79-19.289-31.201-25.75 c-12.144-8.339-26.876-10.032-41-11.274c-15.007-1.32-33.207-3.056-47.774,1" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "name": "rightEar_1_", + "children": [ + { + "name": "rightEar", + "shape": { + "type": "path", + "path": "M66.453,94.375 c-10.188-4.124-23.701-5.729-27.774,7.226c-4.779,15.198,14.506,23.077,25.774,15.774" + }, + "fill": "#FFF0A9", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M42.453,106.375c4.149-4.954,11.06-7.737,16-10" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M48.453,100.375c1.337,3.541,2.787,6.955,5,10" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "adamsApple", + "shape": { + "type": "path", + "path": "M113.453,152.375c-0.526-2.327,1.546-3.837,5-4" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + } + ] + }, + { + "name": "expressions", + "children": [ + { + "name": "confused", + "children": [ + { + "name": "mouth_1_", + "children": [ + { + "name": "mouth", + "shape": { + "type": "path", + "path": "M102.148,120.014c13.398-6.9,33.568-7.688,49-10.026 c12.555-1.903,36.519-2.575,44,9.026" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "name": "tooth_1_", + "shape": { + "type": "path", + "path": "M178.148,109.014 c-0.563-2.655-0.017-6.196,0.151-8.849c4.788-0.944,9.637,0.768,13.675,3.022c0.664,3.187,0.065,6.267-1.826,8.826" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "name": "tooth", + "shape": { + "type": "path", + "path": "M168.148,108.014c-2.021-7.958,5.04-7.752,10.826-6.826 c1.286,2.446,1.752,5.863,1.022,8.675c-3.801,0.292-8.049,0.308-10.849-0.849" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "eyes", + "children": [ + { + "name": "rightEye", + "shape": { + "type": "path", + "path": "M121.148,52.014 c-6.562,8.145-20.057,16.28-21.023,26.977c-1.104,12.227,10.759,15.164,21.02,11.798c18.8-6.168,24.482-40.499,0.004-39.774" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "name": "pupilRight", + "shape": { + "type": "path", + "path": "M112.148,61.014c-7.625,3.067-4.047,12.428,3.826,10.826 C118.354,67.432,118.046,61.261,112.148,61.014" + }, + "stroke": { + "color": "#000000" + } + }, + { + "name": "leftEye", + "shape": { + "type": "path", + "path": "M184.148,55.014c-13.391-8.758-17.664,28.504,5,25.996 c10.862-1.201,14.124-12.581,8.004-19.996c-6.121-7.415-14.988-4.947-22.004-8" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "name": "pupilLeft", + "shape": { + "type": "path", + "path": "M176.148,54.014c-2.04,2.896-2.657,6.347-1.849,9.849 C184.707,66.621,182.108,56.322,176.148,54.014" + }, + "stroke": { + "color": "#000000" + } + } + ] + } + ] + }, + { + "name": "confused2", + "children": [ + { + "name": "rightEye_1_", + "shape": { + "type": "path", + "path": "M121.148,52.014 c-6.562,8.145-20.057,16.28-21.023,26.977c-1.104,12.227,10.759,15.164,21.02,11.798c18.8-6.168,24.482-40.499,0.004-39.774" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "name": "pupilRight_1_", + "shape": { + "type": "path", + "path": "M112.148,61.014 c-7.625,3.067-4.047,12.428,3.826,10.826C118.354,67.432,118.046,61.261,112.148,61.014" + }, + "stroke": { + "color": "#000000" + } + }, + { + "name": "leftEye_1_", + "shape": { + "type": "path", + "path": "M184.148,55.014 c-13.391-8.758-17.664,28.504,5,25.996c10.862-1.201,14.124-12.581,8.004-19.996c-6.121-7.415-14.988-4.947-22.004-8" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "name": "pupilLeft_1_", + "shape": { + "type": "path", + "path": "M176.148,54.014 c-2.04,2.896-2.657,6.347-1.849,9.849C184.707,66.621,182.108,56.322,176.148,54.014" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M114.934,118.74 c18.933-4.896,31.704-2.456,49.826,1.171c6.734,1.348,17.654,7.566,23.408,0.323c5.436-6.841-0.011-16.179-7.237-17.994" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "talking", + "children": [ + { + "shape": { + "type": "path", + "path": "M150.536,116.479c0.413,18.115,48.746,18.222,37.276-7.278 c-10.396-1.757-28.836,2.451-38.776,5.778" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M103.453,104.875c-2.277,2.169-1.729,7.324-4.849,8 c8.889,3.074,18.975,7.877,28.849,6.998c6.759-0.602,18.439-1.511,23.5-5.998" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M104.453,64.875 c-6.218-0.224-17.093,9.247-13.875,15.887c2.822,5.825,15.087,4.174,20.375,3.113c4.505-0.904,7.783-1.37,9.889-6.123 c1.107-2.499,2.855-9.088,1.623-11.889c-2.859-6.496-15.374-3.248-19.512,0.012" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M176.953,59.875 c-4.742,8.403,0.46,13.596,6.486,18.376c4.779,3.791,15.903,8.529,19.512,0.622c8.012-17.554-22.026-19.554-32.498-17.887 c-0.345,0.055-1.151,0.291-1.5,0.389" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M98.953,66.875c-6.969-2.545-10.165,5.418-3.002,8.05 c2.178-2.129,5.596-6.88,2.502-9.05" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M178.453,60.875c-5.534,0.708-5.259,9.173,0.5,7.387 c6.145-1.906,5.217-9.047-1.5-8.387" + }, + "stroke": { + "color": "#000000" + } + } + ] + }, + { + "name": "talking2", + "children": [ + { + "shape": { + "type": "path", + "path": "M102.87,94.503c-2.279,15.037-5.934,27.828,15.027,23.027 c15.334-3.512,25.379-13.239,28.973-28.027" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M92.87,104.503 c4.248-16.004,34.717-10.765,47.052-11.948c8.414-0.807,15.879-1.97,24.948-1.055c8.295,0.837,19.3,2.941,27-0.997" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M84.87,73.503c2.341-8.752,12.467-12.772,19-18" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M181.87,59.503c8.968-3.27,16.681,2.245,25,3" + }, + "fill": "none", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M98.87,68.503 c-7.218,11.165,3.031,17.234,13.003,17.997c13.201,1.009,21.125-8.677,18.845-21.842c-11.637-0.604-21.219,1.818-31.849,2.845" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M178.87,67.503 c-9.045,2.007-6.264,11.616-1.249,15.249c3.778,2.737,13.479,4.477,18.249,2.528C210.946,79.123,185.327,71.038,178.87,67.503" + }, + "fill": "#FFFFFF", + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M115.87,85.503c2.365-1.63,3.646-3.553,2.826-6.826 c-16.491-8.159-17.436,11.182-1.826,8.826" + }, + "stroke": { + "color": "#000000" + } + }, + { + "shape": { + "type": "path", + "path": "M174.87,80.503c-0.492-1.165-0.677-2.687-0.872-3.826 c3.483-0.285,7.207-0.292,10.698-0.023c3.568,7.301-6.079,7.593-10.826,5.849" + }, + "stroke": { + "color": "#000000" + } + } + ] + } + ] + } + ] + } +] \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Nils.svg b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Nils.svg new file mode 100644 index 0000000..e2e57be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/Nils.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-bg.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-bg.png new file mode 100644 index 0000000..ee50a15 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-head.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-head.png new file mode 100644 index 0000000..d576873 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-head.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-left-arm.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-left-arm.png new file mode 100644 index 0000000..1e620f3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-left-arm.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-left-leg.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-left-leg.png new file mode 100644 index 0000000..1ae5600 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-left-leg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-lollipop.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-lollipop.png new file mode 100644 index 0000000..9a52c1e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-lollipop.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-nose-large.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-nose-large.png new file mode 100644 index 0000000..a0e38fd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-nose-large.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-nose-medium.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-nose-medium.png new file mode 100644 index 0000000..f38e205 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-nose-medium.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-right-arm.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-right-arm.png new file mode 100644 index 0000000..206bdb1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-right-arm.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-right-leg.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-right-leg.png new file mode 100644 index 0000000..cd0e172 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-right-leg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-torso.png b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-torso.png new file mode 100644 index 0000000..64c2336 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino-torso.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino.jpg b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino.jpg new file mode 100644 index 0000000..95aaf05 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino.json b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino.json new file mode 100644 index 0000000..1218ca7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/buratino.json @@ -0,0 +1,12 @@ +[ + {name: "bg", shape: {type: "image", width: 321, height: 355, src: "data/buratino-bg.png"}}, + {name: "left-arm", shape: {type: "image", width: 111, height: 40, src: "data/buratino-left-arm.png"}}, + {name: "right-arm", shape: {type: "image", width: 59, height: 130, src: "data/buratino-right-arm.png"}}, + {name: "left-leg", shape: {type: "image", width: 152, height: 99, src: "data/buratino-left-leg.png"}}, + {name: "right-leg", shape: {type: "image", width: 104, height: 158, src: "data/buratino-right-leg.png"}}, + {name: "torso", shape: {type: "image", width: 90, height: 130, src: "data/buratino-torso.png"}}, + {name: "head", shape: {type: "image", width: 116, height: 139, src: "data/buratino-head.png"}}, + {name: "nose-medium", shape: {type: "image", width: 50, height: 43, src: "data/buratino-nose-medium.png"}}, + {name: "nose-large", shape: {type: "image", width: 70, height: 66, src: "data/buratino-nose-large.png"}}, + {name: "lollipop", shape: {type: "image", width: 82, height: 144, src: "data/buratino-lollipop.png"}} +] diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/transform.json b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/transform.json new file mode 100644 index 0000000..60bd466 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/data/transform.json @@ -0,0 +1,1567 @@ +[ + { + "children": [ + { + "shape": { + "type": "line", + "x1": 0, + "y1": 0, + "x2": 500, + "y2": 0 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 0, + "x2": 0, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 50, + "x2": 500, + "y2": 50 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 50, + "y1": 0, + "x2": 50, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 100, + "x2": 500, + "y2": 100 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 100, + "y1": 0, + "x2": 100, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 150, + "x2": 500, + "y2": 150 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 150, + "y1": 0, + "x2": 150, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 200, + "x2": 500, + "y2": 200 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 200, + "y1": 0, + "x2": 200, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 250, + "x2": 500, + "y2": 250 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 250, + "y1": 0, + "x2": 250, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 300, + "x2": 500, + "y2": 300 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 300, + "y1": 0, + "x2": 300, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 350, + "x2": 500, + "y2": 350 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 350, + "y1": 0, + "x2": 350, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 400, + "x2": 500, + "y2": 400 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 400, + "y1": 0, + "x2": 400, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 450, + "x2": 500, + "y2": 450 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 450, + "y1": 0, + "x2": 450, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 0, + "y1": 500, + "x2": 500, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + }, + { + "shape": { + "type": "line", + "x1": 500, + "y1": 0, + "x2": 500, + "y2": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + } + } + ], + "name": "grid" + }, + { + "children": [ + { + "shape": { + "type": "rect", + "x": 0, + "y": 0, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 0, + "y": 100, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 0, + "y": 200, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 0, + "y": 300, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 0, + "y": 400, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 50, + "y": 50, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 50, + "y": 150, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 50, + "y": 250, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 50, + "y": 350, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 50, + "y": 450, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 100, + "y": 0, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 100, + "y": 100, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 100, + "y": 200, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 100, + "y": 300, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 100, + "y": 400, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 150, + "y": 50, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 150, + "y": 150, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 150, + "y": 250, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 150, + "y": 350, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 150, + "y": 450, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 200, + "y": 0, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 200, + "y": 100, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 200, + "y": 200, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 200, + "y": 300, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 200, + "y": 400, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 250, + "y": 50, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 250, + "y": 150, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 250, + "y": 250, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 250, + "y": 350, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 250, + "y": 450, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 300, + "y": 0, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 300, + "y": 100, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 300, + "y": 200, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 300, + "y": 300, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 300, + "y": 400, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 350, + "y": 50, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 350, + "y": 150, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 350, + "y": 250, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 350, + "y": 350, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 350, + "y": 450, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 400, + "y": 0, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 400, + "y": 100, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 400, + "y": 200, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 400, + "y": 300, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 400, + "y": 400, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 450, + "y": 50, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 450, + "y": 150, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 450, + "y": 250, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 450, + "y": 350, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + }, + { + "shape": { + "type": "rect", + "x": 450, + "y": 450, + "width": 50, + "height": 50, + "r": 0 + }, + "fill": { + "g": 0, + "b": 0, + "a": 0.1, + "r": 255 + } + } + ], + "name": "checkerboard" + }, + { + "shape": { + "type": "rect", + "x": 0, + "y": 0, + "width": 100, + "height": 100, + "r": 0 + }, + "transform": { + "dx": 100, + "dy": 100, + "xx": 1, + "xy": 0, + "yx": 0, + "yy": 1 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + }, + "fill": { + "type": "linear", + "x1": 0, + "y1": 0, + "x2": 100, + "y2": 100, + "colors": [ + { + "offset": 0, + "color": { + "r": 0, + "g": 128, + "b": 0, + "a": 1 + } + }, + { + "offset": 0.5, + "color": { + "g": 0, + "b": 0, + "r": 255, + "a": 1 + } + }, + { + "offset": 1, + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 1 + } + } + ] + }, + "name": "rect with color gradient" + }, + { + "shape": { + "type": "rect", + "x": 0, + "y": 0, + "width": 100, + "height": 100, + "r": 0 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + }, + "fill": { + "type": "linear", + "x1": 0, + "y1": 0, + "x2": 100, + "y2": 100, + "colors": [ + { + "offset": 0, + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + } + }, + { + "offset": 1, + "color": { + "r": 255, + "g": 255, + "b": 255, + "a": 1 + } + } + ] + }, + "name": "rect with gray gradient" + }, + { + "children": [ + { + "shape": { + "type": "rect", + "x": 200, + "y": 200, + "width": 100, + "height": 100, + "r": 0 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + }, + "fill": { + "r": 0, + "g": 128, + "b": 0, + "a": 1 + }, + name: "green rect" + }, + { + "shape": { + "type": "rect", + "x": 0, + "y": 0, + "width": 100, + "height": 100, + "r": 0 + }, + "transform": { + "xx": 0.8660254037844387, + "xy": 0.49999999999999994, + "yx": -0.49999999999999994, + "yy": 0.8660254037844387, + "dx": 281.69872981077805, + "dy": 231.69872981077808 + }, + "fill": { + "r": 0, + "g": 0, + "b": 255, + "a": 1 + }, + name: "blue rect" + }, + { + "shape": { + "type": "path", + "path": "M 300 100L 400 200L 400 300L 300 400C 400 300 400 200 300 100" + }, + "transform": { + "xx": 1, + "xy": 0, + "yx": 0, + "yy": 1, + "dx": 0, + "dy": 0 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 0, + "a": 1 + }, + "style": "solid", + "width": 1, + "cap": "butt", + "join": 4 + }, + name: "black path" + }, + { + "shape": { + "type": "path", + "path": "M 300 100L 400 200L 400 300L 300 400C 400 300 400 200 300 100" + }, + "transform": { + "dx": 100, + "xx": 1, + "xy": 0, + "yx": 0, + "yy": 1, + "dy": 0 + }, + "stroke": { + "type": "stroke", + "color": { + "g": 0, + "b": 0, + "r": 255, + "a": 1 + }, + "style": "solid", + "width": 2, + "cap": "butt", + "join": 4 + }, + name: "red path" + }, + { + "shape": { + "type": "path", + "path": "M 300 100l 100 100l 0 100l-100 100c 100-100 100-200 0-300" + }, + "transform": { + "xx": -1, + "xy": -1.2246063538223773e-16, + "yx": 1.2246063538223773e-16, + "yy": -1, + "dx": 500, + "dy": 500 + }, + "stroke": { + "type": "stroke", + "color": { + "r": 0, + "g": 0, + "b": 255, + "a": 1 + }, + "style": "solid", + "width": 2, + "cap": "butt", + "join": 4 + }, + name: "blue path" + } + ], + "transform": { + "xx": 0.9659258262890683, + "xy": 0.25881904510252074, + "yx": -0.25881904510252074, + "yy": 0.9659258262890683, + "dx": -56.1862178478973, + "dy": 73.22330470336311 + }, + "name": "rotated group" + } +] diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/images/clock_face.jpg b/js/dojo-release-1.7.2-src/dojox/gfx/demos/images/clock_face.jpg new file mode 100644 index 0000000..12f1903 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/images/clock_face.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/images/clock_face_black.jpg b/js/dojo-release-1.7.2-src/dojox/gfx/demos/images/clock_face_black.jpg new file mode 100644 index 0000000..dbef7cd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/gfx/demos/images/clock_face_black.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/inspector.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/inspector.html new file mode 100644 index 0000000..2e12666 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/inspector.html @@ -0,0 +1,161 @@ + + +Inspect DojoX GFX JSON + + + + + + +

                                      Inspect DojoX GFX JSON

                                      +

                                      Help: load a file, select an object, and add it, move it around, or apply operations to selected items:
                                      + F — bring to front, B — bring to back, Q — rotate CCW, W — rotate CW, D — delete.
                                      + (all operations work on currently dragged item).

                                      +

                                      VML note: VML doesn't process PNG images with opacity correctly.

                                      + + + +
                                      + + + + + + + + + + + + + +
                                      Source:
                                       
                                      +  
                                      Available sources:
                                      data/Lars.json — vectors from SVG
                                      data/Nils.json — vectors from SVG
                                      data/LarsDreaming.json — vectors from SVG
                                      data/buratino.json — images
                                      data/transform.json — from dojox.gfx
                                       
                                      Objects:
                                      Object names are hierarchical and separated by "/". Adding a selected object creates a group for this object. + A higher-level object (a group) always includes lower-level objects as children.
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/lion.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/lion.html new file mode 100644 index 0000000..0ce33c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/lion.html @@ -0,0 +1,234 @@ + + +dojox.gfx: Lion + + + + + + + + + + + + +

                                      dojox.gfx: Lion

                                      +

                                      This example was directly converted from SVG file.

                                      + + + + + +
                                      Rotation (0)
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      Scaling (1.000)
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/roundedPane.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/roundedPane.html new file mode 100644 index 0000000..4abb775 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/roundedPane.html @@ -0,0 +1,191 @@ + + + + + rounded skeleton page | The Dojo Toolkit + + + + + + + + + + +

                                      Some gfx + ContentPane's

                                      + +
                                      +

                                      YO!

                                      +

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      lorem

                                      +
                                      + +
                                      + LOREM, ipsum, dollllllllllor: + .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      .roundedContent { + padding: 31px; + font-family: 'Tahoma'; + font-size: 12px; + color:#fff; + }

                                      + +
                                      + + +
                                      +

                                      Moveable Handle

                                      + LOREM, ipsum, dollllllllllor: +
                                      + + +
                                      + lorem ipsum (small moveable) +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/tiger.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/tiger.html new file mode 100644 index 0000000..2d03fed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/tiger.html @@ -0,0 +1,565 @@ + + +dojox.gfx: Tiger + + + + + + + +

                                      dojox.gfx: Tiger

                                      +

                                      This example was directly converted from SVG file.

                                      + + + + + +
                                      Rotation (0)
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      Scaling (1.000)
                                      +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/demos/tooltip.html b/js/dojo-release-1.7.2-src/dojox/gfx/demos/tooltip.html new file mode 100644 index 0000000..0ccfa11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/demos/tooltip.html @@ -0,0 +1,234 @@ + + + A Sample ToolTip using dijit and dojox.gfx + + + + + + + + +

                                      dojox.gfx: A Sample tooltip

                                      + +
                                        + + + +
                                      • + Tooltip + Button +

                                        Canvas renderer doesn't implement event handling. + +

                                        +
                                      • + + +
                                      • + Hover trigger / persists +
                                        Canvas renderer doesn't implement event handling.
                                        +
                                      • + + +
                                      • MultiTip trigger 1
                                      • +
                                      • I do nothing
                                      • +
                                      • Trigger two
                                      • + +
                                      • show this way + + +
                                      • + + +
                                      • + Parent Attached Tooltip +
                                        +
                                        +

                                        + Name:

                                        + Pass:
                                        +

                                        +
                                        +
                                        +
                                      • + +
                                      + + +
                                      Canvas renderer doesn't implement event handling. (shared tooltip)
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/fx.js b/js/dojo-release-1.7.2-src/dojox/gfx/fx.js new file mode 100644 index 0000000..7603aa2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/fx.js @@ -0,0 +1,265 @@ +define(["dojo/_base/lang", "./_base", "./matrix", "dojo/_base/Color", "dojo/_base/array", "dojo/_base/fx", "dojo/_base/connect"], + function(lang, g, m, Color, arr, fx, Hub){ + var fxg = g.fx = {}; + /*===== g = dojox.gfx; fxg = dojox.gfx.fx; =====*/ + + // Generic interpolators. Should they be moved to dojox.fx? + + function InterpolNumber(start, end){ + this.start = start, this.end = end; + } + InterpolNumber.prototype.getValue = function(r){ + return (this.end - this.start) * r + this.start; + }; + + function InterpolUnit(start, end, units){ + this.start = start, this.end = end; + this.units = units; + } + InterpolUnit.prototype.getValue = function(r){ + return (this.end - this.start) * r + this.start + this.units; + }; + + function InterpolColor(start, end){ + this.start = start, this.end = end; + this.temp = new Color(); + } + InterpolColor.prototype.getValue = function(r){ + return Color.blendColors(this.start, this.end, r, this.temp); + }; + + function InterpolValues(values){ + this.values = values; + this.length = values.length; + } + InterpolValues.prototype.getValue = function(r){ + return this.values[Math.min(Math.floor(r * this.length), this.length - 1)]; + }; + + function InterpolObject(values, def){ + this.values = values; + this.def = def ? def : {}; + } + InterpolObject.prototype.getValue = function(r){ + var ret = lang.clone(this.def); + for(var i in this.values){ + ret[i] = this.values[i].getValue(r); + } + return ret; + }; + + function InterpolTransform(stack, original){ + this.stack = stack; + this.original = original; + } + InterpolTransform.prototype.getValue = function(r){ + var ret = []; + arr.forEach(this.stack, function(t){ + if(t instanceof m.Matrix2D){ + ret.push(t); + return; + } + if(t.name == "original" && this.original){ + ret.push(this.original); + return; + } + if(!(t.name in m)){ return; } + var f = m[t.name]; + if(typeof f != "function"){ + // constant + ret.push(f); + return; + } + var val = arr.map(t.start, function(v, i){ + return (t.end[i] - v) * r + v; + }), + matrix = f.apply(m, val); + if(matrix instanceof m.Matrix2D){ + ret.push(matrix); + } + }, this); + return ret; + }; + + var transparent = new Color(0, 0, 0, 0); + + function getColorInterpol(prop, obj, name, def){ + if(prop.values){ + return new InterpolValues(prop.values); + } + var value, start, end; + if(prop.start){ + start = g.normalizeColor(prop.start); + }else{ + start = value = obj ? (name ? obj[name] : obj) : def; + } + if(prop.end){ + end = g.normalizeColor(prop.end); + }else{ + if(!value){ + value = obj ? (name ? obj[name] : obj) : def; + } + end = value; + } + return new InterpolColor(start, end); + } + + function getNumberInterpol(prop, obj, name, def){ + if(prop.values){ + return new InterpolValues(prop.values); + } + var value, start, end; + if(prop.start){ + start = prop.start; + }else{ + start = value = obj ? obj[name] : def; + } + if(prop.end){ + end = prop.end; + }else{ + if(typeof value != "number"){ + value = obj ? obj[name] : def; + } + end = value; + } + return new InterpolNumber(start, end); + } + + fxg.animateStroke = function(/*Object*/ args){ + // summary: + // Returns an animation which will change stroke properties over time. + // example: + // | dojox.gfx.fx.animateStroke{{ + // | shape: shape, + // | duration: 500, + // | color: {start: "red", end: "green"}, + // | width: {end: 15}, + // | join: {values: ["miter", "bevel", "round"]} + // | }).play(); + if(!args.easing){ args.easing = fx._defaultEasing; } + var anim = new fx.Animation(args), shape = args.shape, stroke; + Hub.connect(anim, "beforeBegin", anim, function(){ + stroke = shape.getStroke(); + var prop = args.color, values = {}, value, start, end; + if(prop){ + values.color = getColorInterpol(prop, stroke, "color", transparent); + } + prop = args.style; + if(prop && prop.values){ + values.style = new InterpolValues(prop.values); + } + prop = args.width; + if(prop){ + values.width = getNumberInterpol(prop, stroke, "width", 1); + } + prop = args.cap; + if(prop && prop.values){ + values.cap = new InterpolValues(prop.values); + } + prop = args.join; + if(prop){ + if(prop.values){ + values.join = new InterpolValues(prop.values); + }else{ + start = prop.start ? prop.start : (stroke && stroke.join || 0); + end = prop.end ? prop.end : (stroke && stroke.join || 0); + if(typeof start == "number" && typeof end == "number"){ + values.join = new InterpolNumber(start, end); + } + } + } + this.curve = new InterpolObject(values, stroke); + }); + Hub.connect(anim, "onAnimate", shape, "setStroke"); + return anim; // dojo.Animation + }; + + fxg.animateFill = function(/*Object*/ args){ + // summary: + // Returns an animation which will change fill color over time. + // Only solid fill color is supported at the moment + // example: + // | dojox.gfx.fx.animateFill{{ + // | shape: shape, + // | duration: 500, + // | color: {start: "red", end: "green"} + // | }).play(); + if(!args.easing){ args.easing = fx._defaultEasing; } + var anim = new fx.Animation(args), shape = args.shape, fill; + Hub.connect(anim, "beforeBegin", anim, function(){ + fill = shape.getFill(); + var prop = args.color, values = {}; + if(prop){ + this.curve = getColorInterpol(prop, fill, "", transparent); + } + }); + Hub.connect(anim, "onAnimate", shape, "setFill"); + return anim; // dojo.Animation + }; + + fxg.animateFont = function(/*Object*/ args){ + // summary: + // Returns an animation which will change font properties over time. + // example: + // | dojox.gfx.fx.animateFont{{ + // | shape: shape, + // | duration: 500, + // | variant: {values: ["normal", "small-caps"]}, + // | size: {end: 10, units: "pt"} + // | }).play(); + if(!args.easing){ args.easing = fx._defaultEasing; } + var anim = new fx.Animation(args), shape = args.shape, font; + Hub.connect(anim, "beforeBegin", anim, function(){ + font = shape.getFont(); + var prop = args.style, values = {}, value, start, end; + if(prop && prop.values){ + values.style = new InterpolValues(prop.values); + } + prop = args.variant; + if(prop && prop.values){ + values.variant = new InterpolValues(prop.values); + } + prop = args.weight; + if(prop && prop.values){ + values.weight = new InterpolValues(prop.values); + } + prop = args.family; + if(prop && prop.values){ + values.family = new InterpolValues(prop.values); + } + prop = args.size; + if(prop && prop.units){ + start = parseFloat(prop.start ? prop.start : (shape.font && shape.font.size || "0")); + end = parseFloat(prop.end ? prop.end : (shape.font && shape.font.size || "0")); + values.size = new InterpolUnit(start, end, prop.units); + } + this.curve = new InterpolObject(values, font); + }); + Hub.connect(anim, "onAnimate", shape, "setFont"); + return anim; // dojo.Animation + }; + + fxg.animateTransform = function(/*Object*/ args){ + // summary: + // Returns an animation which will change transformation over time. + // example: + // | dojox.gfx.fx.animateTransform{{ + // | shape: shape, + // | duration: 500, + // | transform: [ + // | {name: "translate", start: [0, 0], end: [200, 200]}, + // | {name: "original"} + // | ] + // | }).play(); + if(!args.easing){ args.easing = fx._defaultEasing; } + var anim = new fx.Animation(args), shape = args.shape, original; + Hub.connect(anim, "beforeBegin", anim, function(){ + original = shape.getTransform(); + this.curve = new InterpolTransform(args.transform, original); + }); + Hub.connect(anim, "onAnimate", shape, "setTransform"); + return anim; // dojo.Animation + }; + + return fxg; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/gradient.js b/js/dojo-release-1.7.2-src/dojox/gfx/gradient.js new file mode 100644 index 0000000..85d0311 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/gradient.js @@ -0,0 +1,160 @@ +define(["dojo/_base/lang", "./matrix", "dojo/_base/Color"], + function(lang, m, Color){ +// Various utilities to deal with a linear gradient (mostly VML-specific) + var grad = lang.getObject("dojox.gfx.gradient", true); + var C = Color; + /*===== grad = dojox.gfx.gradient; =====*/ + + grad.rescale = function(stops, from, to){ + // summary: + // Recalculates a gradient from 0-1 window to + // "from"-"to" window blending and replicating colors, + // if necessary. + // stops: Array + // input gradient as a list of colors with offsets + // (see dojox.gfx.defaultLinearGradient and dojox.gfx.defaultRadialGradient) + // from: Number + // the beginning of the window, should be less than "to" + // to: Number + // the end of the window, should be more than "from" + + var len = stops.length, reverseFlag = (to < from), newStops; + + // do we need to reverse the color table? + if(reverseFlag){ + var tmp = from; + from = to; + to = tmp; + } + + // various edge cases + if(!len){ + // no colors + return []; + } + if(to <= stops[0].offset){ + // all colors are before the color table + newStops = [ + {offset: 0, color: stops[0].color}, + {offset: 1, color: stops[0].color} + ]; + }else if(from >= stops[len - 1].offset){ + // all colors are after the color table + newStops = [ + {offset: 0, color: stops[len - 1].color}, + {offset: 1, color: stops[len - 1].color} + ]; + }else{ + // main scanning algorithm + var span = to - from, stop, prev, i; + newStops = []; + if(from < 0){ + newStops.push({offset: 0, color: new C(stops[0].color)}); + } + for(i = 0; i < len; ++i){ + stop = stops[i]; + if(stop.offset >= from){ + break; + } + // skip this color + } + if(i){ + prev = stops[i - 1]; + newStops.push({ + offset: 0, + color: Color.blendColors(new C(prev.color), new C(stop.color), (from - prev.offset) / (stop.offset - prev.offset)) + }); + }else{ + newStops.push({offset: 0, color: new C(stop.color)}); + } + for(; i < len; ++i){ + stop = stops[i]; + if(stop.offset >= to){ + break; + } + newStops.push({offset: (stop.offset - from) / span, color: new C(stop.color)}); + } + if(i < len){ + prev = stops[i - 1]; + newStops.push({ + offset: 1, + color: Color.blendColors(new C(prev.color), new C(stop.color), (to - prev.offset) / (stop.offset - prev.offset)) + }); + }else{ + newStops.push({offset: 1, color: new C(stops[len - 1].color)}); + } + } + + // reverse the color table, if needed + if(reverseFlag){ + newStops.reverse(); + for(i = 0, len = newStops.length; i < len; ++i){ + stop = newStops[i]; + stop.offset = 1 - stop.offset; + } + } + + return newStops; + }; + + function getPoint(x, y, matrix, project, shiftAndRotate, scale){ + var r = m.multiplyPoint(matrix, x, y), + p = m.multiplyPoint(project, r); + return {r: r, p: p, o: m.multiplyPoint(shiftAndRotate, p).x / scale}; + } + + function sortPoints(a, b){ + return a.o - b.o; + } + + grad.project = function(matrix, gradient, tl, rb, ttl, trb){ + // summary: + // Returns a new gradient using the "VML algorithm" and suitable for VML. + // matrix: dojox.gfx.Matrix2D|Null: + // matrix to apply to a shape and its gradient + // gradient: Object: + // a linear gradient object to be transformed + // tl: dojox.gfx.Point: + // top-left corner of shape's bounding box + // rb: dojox.gfx.Point: + // right-bottom corner of shape's bounding box + // ttl: dojox.gfx.Point: + // top-left corner of shape's transformed bounding box + // trb: dojox.gfx.Point: + // right-bottom corner of shape's transformed bounding box + + matrix = matrix || m.identity; + + var f1 = m.multiplyPoint(matrix, gradient.x1, gradient.y1), + f2 = m.multiplyPoint(matrix, gradient.x2, gradient.y2), + angle = Math.atan2(f2.y - f1.y, f2.x - f1.x), + project = m.project(f2.x - f1.x, f2.y - f1.y), + pf1 = m.multiplyPoint(project, f1), + pf2 = m.multiplyPoint(project, f2), + shiftAndRotate = new m.Matrix2D([m.rotate(-angle), {dx: -pf1.x, dy: -pf1.y}]), + scale = m.multiplyPoint(shiftAndRotate, pf2).x, + //comboMatrix = new m.Matrix2D([shiftAndRotate, project, matrix]), + // bbox-specific calculations + points = [ + getPoint(tl.x, tl.y, matrix, project, shiftAndRotate, scale), + getPoint(rb.x, rb.y, matrix, project, shiftAndRotate, scale), + getPoint(tl.x, rb.y, matrix, project, shiftAndRotate, scale), + getPoint(rb.x, tl.y, matrix, project, shiftAndRotate, scale) + ].sort(sortPoints), + from = points[0].o, + to = points[3].o, + stops = grad.rescale(gradient.colors, from, to), + //angle2 = Math.atan2(Math.abs(points[3].r.y - points[0].r.y) * (f2.y - f1.y), Math.abs(points[3].r.x - points[0].r.x) * (f2.x - f1.x)); + angle2 = Math.atan2(points[3].r.y - points[0].r.y, points[3].r.x - points[0].r.x); + + return { + type: "linear", + x1: points[0].p.x, y1: points[0].p.y, x2: points[3].p.x, y2: points[3].p.y, + colors: stops, + // additional helpers (for VML) + angle: angle + }; + }; + + return grad; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/gradutils.js b/js/dojo-release-1.7.2-src/dojox/gfx/gradutils.js new file mode 100644 index 0000000..7dd9771 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/gradutils.js @@ -0,0 +1,93 @@ +// Various generic utilities to deal with a linear gradient + +define(["./_base", "dojo/_base/lang", "./matrix", "dojo/_base/Color"], + function(g, lang, m, Color){ + + /*===== g= dojox.gfx =====*/ + var gradutils = g.gradutils = {}; + /*===== g= dojox.gfx; gradutils = dojox.gfx.gradutils; =====*/ + + function findColor(o, c){ + if(o <= 0){ + return c[0].color; + } + var len = c.length; + if(o >= 1){ + return c[len - 1].color; + } + //TODO: use binary search + for(var i = 0; i < len; ++i){ + var stop = c[i]; + if(stop.offset >= o){ + if(i){ + var prev = c[i - 1]; + return Color.blendColors(new Color(prev.color), new Color(stop.color), + (o - prev.offset) / (stop.offset - prev.offset)); + } + return stop.color; + } + } + return c[len - 1].color; + } + + gradutils.getColor = function(fill, pt){ + // summary: + // sample a color from a gradient using a point + // fill: Object: + // fill object + // pt: dojox.gfx.Point: + // point where to sample a color + var o; + if(fill){ + switch(fill.type){ + case "linear": + var angle = Math.atan2(fill.y2 - fill.y1, fill.x2 - fill.x1), + rotation = m.rotate(-angle), + projection = m.project(fill.x2 - fill.x1, fill.y2 - fill.y1), + p = m.multiplyPoint(projection, pt), + pf1 = m.multiplyPoint(projection, fill.x1, fill.y1), + pf2 = m.multiplyPoint(projection, fill.x2, fill.y2), + scale = m.multiplyPoint(rotation, pf2.x - pf1.x, pf2.y - pf1.y).x; + o = m.multiplyPoint(rotation, p.x - pf1.x, p.y - pf1.y).x / scale; + break; + case "radial": + var dx = pt.x - fill.cx, dy = pt.y - fill.cy; + o = Math.sqrt(dx * dx + dy * dy) / fill.r; + break; + } + return findColor(o, fill.colors); // dojo.Color + } + // simple color + return new Color(fill || [0, 0, 0, 0]); // dojo.Color + }; + + gradutils.reverse = function(fill){ + // summary: + // reverses a gradient + // fill: Object: + // fill object + if(fill){ + switch(fill.type){ + case "linear": + case "radial": + fill = lang.delegate(fill); + if(fill.colors){ + var c = fill.colors, l = c.length, i = 0, stop, + n = fill.colors = new Array(c.length); + for(; i < l; ++i){ + stop = c[i]; + n[i] = { + offset: 1 - stop.offset, + color: stop.color + }; + } + n.sort(function(a, b){ return a.offset - b.offset; }); + } + break; + } + } + return fill; // Object + }; + + return gradutils; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/matrix.js b/js/dojo-release-1.7.2-src/dojox/gfx/matrix.js new file mode 100644 index 0000000..5e0a2d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/matrix.js @@ -0,0 +1,447 @@ +define(["./_base","dojo/_base/lang"], + function(g, lang){ + var m = g.matrix = {}; + /*===== g = dojox.gfx; m = dojox.gfx.matrix =====*/ + + // candidates for dojox.math: + var _degToRadCache = {}; + m._degToRad = function(degree){ + return _degToRadCache[degree] || (_degToRadCache[degree] = (Math.PI * degree / 180)); + }; + m._radToDeg = function(radian){ return radian / Math.PI * 180; }; + + m.Matrix2D = function(arg){ + // summary: + // a 2D matrix object + // description: Normalizes a 2D matrix-like object. If arrays is passed, + // all objects of the array are normalized and multiplied sequentially. + // arg: Object + // a 2D matrix-like object, a number, or an array of such objects + if(arg){ + if(typeof arg == "number"){ + this.xx = this.yy = arg; + }else if(arg instanceof Array){ + if(arg.length > 0){ + var matrix = m.normalize(arg[0]); + // combine matrices + for(var i = 1; i < arg.length; ++i){ + var l = matrix, r = m.normalize(arg[i]); + matrix = new m.Matrix2D(); + matrix.xx = l.xx * r.xx + l.xy * r.yx; + matrix.xy = l.xx * r.xy + l.xy * r.yy; + matrix.yx = l.yx * r.xx + l.yy * r.yx; + matrix.yy = l.yx * r.xy + l.yy * r.yy; + matrix.dx = l.xx * r.dx + l.xy * r.dy + l.dx; + matrix.dy = l.yx * r.dx + l.yy * r.dy + l.dy; + } + lang.mixin(this, matrix); + } + }else{ + lang.mixin(this, arg); + } + } + }; + + // the default (identity) matrix, which is used to fill in missing values + lang.extend(m.Matrix2D, {xx: 1, xy: 0, yx: 0, yy: 1, dx: 0, dy: 0}); + + lang.mixin(m, { + // summary: class constants, and methods of dojox.gfx.matrix + + // matrix constants + + // identity: dojox.gfx.matrix.Matrix2D + // an identity matrix constant: identity * (x, y) == (x, y) + identity: new m.Matrix2D(), + + // flipX: dojox.gfx.matrix.Matrix2D + // a matrix, which reflects points at x = 0 line: flipX * (x, y) == (-x, y) + flipX: new m.Matrix2D({xx: -1}), + + // flipY: dojox.gfx.matrix.Matrix2D + // a matrix, which reflects points at y = 0 line: flipY * (x, y) == (x, -y) + flipY: new m.Matrix2D({yy: -1}), + + // flipXY: dojox.gfx.matrix.Matrix2D + // a matrix, which reflects points at the origin of coordinates: flipXY * (x, y) == (-x, -y) + flipXY: new m.Matrix2D({xx: -1, yy: -1}), + + // matrix creators + + translate: function(a, b){ + // summary: forms a translation matrix + // description: The resulting matrix is used to translate (move) points by specified offsets. + // a: Number: an x coordinate value + // b: Number: a y coordinate value + if(arguments.length > 1){ + return new m.Matrix2D({dx: a, dy: b}); // dojox.gfx.matrix.Matrix2D + } + // branch + // a: dojox.gfx.Point: a point-like object, which specifies offsets for both dimensions + // b: null + return new m.Matrix2D({dx: a.x, dy: a.y}); // dojox.gfx.matrix.Matrix2D + }, + scale: function(a, b){ + // summary: forms a scaling matrix + // description: The resulting matrix is used to scale (magnify) points by specified offsets. + // a: Number: a scaling factor used for the x coordinate + // b: Number: a scaling factor used for the y coordinate + if(arguments.length > 1){ + return new m.Matrix2D({xx: a, yy: b}); // dojox.gfx.matrix.Matrix2D + } + if(typeof a == "number"){ + // branch + // a: Number: a uniform scaling factor used for the both coordinates + // b: null + return new m.Matrix2D({xx: a, yy: a}); // dojox.gfx.matrix.Matrix2D + } + // branch + // a: dojox.gfx.Point: a point-like object, which specifies scale factors for both dimensions + // b: null + return new m.Matrix2D({xx: a.x, yy: a.y}); // dojox.gfx.matrix.Matrix2D + }, + rotate: function(angle){ + // summary: forms a rotating matrix + // description: The resulting matrix is used to rotate points + // around the origin of coordinates (0, 0) by specified angle. + // angle: Number: an angle of rotation in radians (>0 for CW) + var c = Math.cos(angle); + var s = Math.sin(angle); + return new m.Matrix2D({xx: c, xy: -s, yx: s, yy: c}); // dojox.gfx.matrix.Matrix2D + }, + rotateg: function(degree){ + // summary: forms a rotating matrix + // description: The resulting matrix is used to rotate points + // around the origin of coordinates (0, 0) by specified degree. + // See dojox.gfx.matrix.rotate() for comparison. + // degree: Number: an angle of rotation in degrees (>0 for CW) + return m.rotate(m._degToRad(degree)); // dojox.gfx.matrix.Matrix2D + }, + skewX: function(angle) { + // summary: forms an x skewing matrix + // description: The resulting matrix is used to skew points in the x dimension + // around the origin of coordinates (0, 0) by specified angle. + // angle: Number: an skewing angle in radians + return new m.Matrix2D({xy: Math.tan(angle)}); // dojox.gfx.matrix.Matrix2D + }, + skewXg: function(degree){ + // summary: forms an x skewing matrix + // description: The resulting matrix is used to skew points in the x dimension + // around the origin of coordinates (0, 0) by specified degree. + // See dojox.gfx.matrix.skewX() for comparison. + // degree: Number: an skewing angle in degrees + return m.skewX(m._degToRad(degree)); // dojox.gfx.matrix.Matrix2D + }, + skewY: function(angle){ + // summary: forms a y skewing matrix + // description: The resulting matrix is used to skew points in the y dimension + // around the origin of coordinates (0, 0) by specified angle. + // angle: Number: an skewing angle in radians + return new m.Matrix2D({yx: Math.tan(angle)}); // dojox.gfx.matrix.Matrix2D + }, + skewYg: function(degree){ + // summary: forms a y skewing matrix + // description: The resulting matrix is used to skew points in the y dimension + // around the origin of coordinates (0, 0) by specified degree. + // See dojox.gfx.matrix.skewY() for comparison. + // degree: Number: an skewing angle in degrees + return m.skewY(m._degToRad(degree)); // dojox.gfx.matrix.Matrix2D + }, + reflect: function(a, b){ + // summary: forms a reflection matrix + // description: The resulting matrix is used to reflect points around a vector, + // which goes through the origin. + // a: dojox.gfx.Point: a point-like object, which specifies a vector of reflection + // b: null + if(arguments.length == 1){ + b = a.y; + a = a.x; + } + // branch + // a: Number: an x coordinate value + // b: Number: a y coordinate value + + // make a unit vector + var a2 = a * a, b2 = b * b, n2 = a2 + b2, xy = 2 * a * b / n2; + return new m.Matrix2D({xx: 2 * a2 / n2 - 1, xy: xy, yx: xy, yy: 2 * b2 / n2 - 1}); // dojox.gfx.matrix.Matrix2D + }, + project: function(a, b){ + // summary: forms an orthogonal projection matrix + // description: The resulting matrix is used to project points orthogonally on a vector, + // which goes through the origin. + // a: dojox.gfx.Point: a point-like object, which specifies a vector of projection + // b: null + if(arguments.length == 1){ + b = a.y; + a = a.x; + } + // branch + // a: Number: an x coordinate value + // b: Number: a y coordinate value + + // make a unit vector + var a2 = a * a, b2 = b * b, n2 = a2 + b2, xy = a * b / n2; + return new m.Matrix2D({xx: a2 / n2, xy: xy, yx: xy, yy: b2 / n2}); // dojox.gfx.matrix.Matrix2D + }, + + // ensure matrix 2D conformance + normalize: function(matrix){ + // summary: converts an object to a matrix, if necessary + // description: Converts any 2D matrix-like object or an array of + // such objects to a valid dojox.gfx.matrix.Matrix2D object. + // matrix: Object: an object, which is converted to a matrix, if necessary + return (matrix instanceof m.Matrix2D) ? matrix : new m.Matrix2D(matrix); // dojox.gfx.matrix.Matrix2D + }, + + // common operations + + clone: function(matrix){ + // summary: creates a copy of a 2D matrix + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix-like object to be cloned + var obj = new m.Matrix2D(); + for(var i in matrix){ + if(typeof(matrix[i]) == "number" && typeof(obj[i]) == "number" && obj[i] != matrix[i]) obj[i] = matrix[i]; + } + return obj; // dojox.gfx.matrix.Matrix2D + }, + invert: function(matrix){ + // summary: inverts a 2D matrix + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix-like object to be inverted + var M = m.normalize(matrix), + D = M.xx * M.yy - M.xy * M.yx; + M = new m.Matrix2D({ + xx: M.yy/D, xy: -M.xy/D, + yx: -M.yx/D, yy: M.xx/D, + dx: (M.xy * M.dy - M.yy * M.dx) / D, + dy: (M.yx * M.dx - M.xx * M.dy) / D + }); + return M; // dojox.gfx.matrix.Matrix2D + }, + _multiplyPoint: function(matrix, x, y){ + // summary: applies a matrix to a point + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix object to be applied + // x: Number: an x coordinate of a point + // y: Number: a y coordinate of a point + return {x: matrix.xx * x + matrix.xy * y + matrix.dx, y: matrix.yx * x + matrix.yy * y + matrix.dy}; // dojox.gfx.Point + }, + multiplyPoint: function(matrix, /* Number||Point */ a, /* Number? */ b){ + // summary: applies a matrix to a point + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix object to be applied + // a: Number: an x coordinate of a point + // b: Number?: a y coordinate of a point + var M = m.normalize(matrix); + if(typeof a == "number" && typeof b == "number"){ + return m._multiplyPoint(M, a, b); // dojox.gfx.Point + } + // branch + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix object to be applied + // a: dojox.gfx.Point: a point + // b: null + return m._multiplyPoint(M, a.x, a.y); // dojox.gfx.Point + }, + multiply: function(matrix){ + // summary: combines matrices by multiplying them sequentially in the given order + // matrix: dojox.gfx.matrix.Matrix2D...: a 2D matrix-like object, + // all subsequent arguments are matrix-like objects too + var M = m.normalize(matrix); + // combine matrices + for(var i = 1; i < arguments.length; ++i){ + var l = M, r = m.normalize(arguments[i]); + M = new m.Matrix2D(); + M.xx = l.xx * r.xx + l.xy * r.yx; + M.xy = l.xx * r.xy + l.xy * r.yy; + M.yx = l.yx * r.xx + l.yy * r.yx; + M.yy = l.yx * r.xy + l.yy * r.yy; + M.dx = l.xx * r.dx + l.xy * r.dy + l.dx; + M.dy = l.yx * r.dx + l.yy * r.dy + l.dy; + } + return M; // dojox.gfx.matrix.Matrix2D + }, + + // high level operations + + _sandwich: function(matrix, x, y){ + // summary: applies a matrix at a centrtal point + // matrix: dojox.gfx.matrix.Matrix2D: a 2D matrix-like object, which is applied at a central point + // x: Number: an x component of the central point + // y: Number: a y component of the central point + return m.multiply(m.translate(x, y), matrix, m.translate(-x, -y)); // dojox.gfx.matrix.Matrix2D + }, + scaleAt: function(a, b, c, d){ + // summary: scales a picture using a specified point as a center of scaling + // description: Compare with dojox.gfx.matrix.scale(). + // a: Number: a scaling factor used for the x coordinate + // b: Number: a scaling factor used for the y coordinate + // c: Number: an x component of a central point + // d: Number: a y component of a central point + + // accepts several signatures: + // 1) uniform scale factor, Point + // 2) uniform scale factor, x, y + // 3) x scale, y scale, Point + // 4) x scale, y scale, x, y + + switch(arguments.length){ + case 4: + // a and b are scale factor components, c and d are components of a point + return m._sandwich(m.scale(a, b), c, d); // dojox.gfx.matrix.Matrix2D + case 3: + if(typeof c == "number"){ + // branch + // a: Number: a uniform scaling factor used for both coordinates + // b: Number: an x component of a central point + // c: Number: a y component of a central point + // d: null + return m._sandwich(m.scale(a), b, c); // dojox.gfx.matrix.Matrix2D + } + // branch + // a: Number: a scaling factor used for the x coordinate + // b: Number: a scaling factor used for the y coordinate + // c: dojox.gfx.Point: a central point + // d: null + return m._sandwich(m.scale(a, b), c.x, c.y); // dojox.gfx.matrix.Matrix2D + } + // branch + // a: Number: a uniform scaling factor used for both coordinates + // b: dojox.gfx.Point: a central point + // c: null + // d: null + return m._sandwich(m.scale(a), b.x, b.y); // dojox.gfx.matrix.Matrix2D + }, + rotateAt: function(angle, a, b){ + // summary: rotates a picture using a specified point as a center of rotation + // description: Compare with dojox.gfx.matrix.rotate(). + // angle: Number: an angle of rotation in radians (>0 for CW) + // a: Number: an x component of a central point + // b: Number: a y component of a central point + + // accepts several signatures: + // 1) rotation angle in radians, Point + // 2) rotation angle in radians, x, y + + if(arguments.length > 2){ + return m._sandwich(m.rotate(angle), a, b); // dojox.gfx.matrix.Matrix2D + } + + // branch + // angle: Number: an angle of rotation in radians (>0 for CCW) + // a: dojox.gfx.Point: a central point + // b: null + return m._sandwich(m.rotate(angle), a.x, a.y); // dojox.gfx.matrix.Matrix2D + }, + rotategAt: function(degree, a, b){ + // summary: rotates a picture using a specified point as a center of rotation + // description: Compare with dojox.gfx.matrix.rotateg(). + // degree: Number: an angle of rotation in degrees (>0 for CW) + // a: Number: an x component of a central point + // b: Number: a y component of a central point + + // accepts several signatures: + // 1) rotation angle in degrees, Point + // 2) rotation angle in degrees, x, y + + if(arguments.length > 2){ + return m._sandwich(m.rotateg(degree), a, b); // dojox.gfx.matrix.Matrix2D + } + + // branch + // degree: Number: an angle of rotation in degrees (>0 for CCW) + // a: dojox.gfx.Point: a central point + // b: null + return m._sandwich(m.rotateg(degree), a.x, a.y); // dojox.gfx.matrix.Matrix2D + }, + skewXAt: function(angle, a, b){ + // summary: skews a picture along the x axis using a specified point as a center of skewing + // description: Compare with dojox.gfx.matrix.skewX(). + // angle: Number: an skewing angle in radians + // a: Number: an x component of a central point + // b: Number: a y component of a central point + + // accepts several signatures: + // 1) skew angle in radians, Point + // 2) skew angle in radians, x, y + + if(arguments.length > 2){ + return m._sandwich(m.skewX(angle), a, b); // dojox.gfx.matrix.Matrix2D + } + + // branch + // angle: Number: an skewing angle in radians + // a: dojox.gfx.Point: a central point + // b: null + return m._sandwich(m.skewX(angle), a.x, a.y); // dojox.gfx.matrix.Matrix2D + }, + skewXgAt: function(degree, a, b){ + // summary: skews a picture along the x axis using a specified point as a center of skewing + // description: Compare with dojox.gfx.matrix.skewXg(). + // degree: Number: an skewing angle in degrees + // a: Number: an x component of a central point + // b: Number: a y component of a central point + + // accepts several signatures: + // 1) skew angle in degrees, Point + // 2) skew angle in degrees, x, y + + if(arguments.length > 2){ + return m._sandwich(m.skewXg(degree), a, b); // dojox.gfx.matrix.Matrix2D + } + + // branch + // degree: Number: an skewing angle in degrees + // a: dojox.gfx.Point: a central point + // b: null + return m._sandwich(m.skewXg(degree), a.x, a.y); // dojox.gfx.matrix.Matrix2D + }, + skewYAt: function(angle, a, b){ + // summary: skews a picture along the y axis using a specified point as a center of skewing + // description: Compare with dojox.gfx.matrix.skewY(). + // angle: Number: an skewing angle in radians + // a: Number: an x component of a central point + // b: Number: a y component of a central point + + // accepts several signatures: + // 1) skew angle in radians, Point + // 2) skew angle in radians, x, y + + if(arguments.length > 2){ + return m._sandwich(m.skewY(angle), a, b); // dojox.gfx.matrix.Matrix2D + } + + // branch + // angle: Number: an skewing angle in radians + // a: dojox.gfx.Point: a central point + // b: null + return m._sandwich(m.skewY(angle), a.x, a.y); // dojox.gfx.matrix.Matrix2D + }, + skewYgAt: function(/* Number */ degree, /* Number||Point */ a, /* Number? */ b){ + // summary: skews a picture along the y axis using a specified point as a center of skewing + // description: Compare with dojox.gfx.matrix.skewYg(). + // degree: Number: an skewing angle in degrees + // a: Number: an x component of a central point + // b: Number?: a y component of a central point + + // accepts several signatures: + // 1) skew angle in degrees, Point + // 2) skew angle in degrees, x, y + + if(arguments.length > 2){ + return m._sandwich(m.skewYg(degree), a, b); // dojox.gfx.matrix.Matrix2D + } + + // branch + // degree: Number: an skewing angle in degrees + // a: dojox.gfx.Point: a central point + // b: null + return m._sandwich(m.skewYg(degree), a.x, a.y); // dojox.gfx.matrix.Matrix2D + } + + //TODO: rect-to-rect mapping, scale-to-fit (isotropic and anisotropic versions) + + }); + // propagate Matrix2D up + g.Matrix2D = m.Matrix2D; + + return m; +}); + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/move.js b/js/dojo-release-1.7.2-src/dojox/gfx/move.js new file mode 100644 index 0000000..207f1b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/move.js @@ -0,0 +1,2 @@ +define(["dojo/_base/lang", "./Mover", "./Moveable"], + function(lang){ return lang.getObject("dojox.gfx.move", true); }); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/path.js b/js/dojo-release-1.7.2-src/dojox/gfx/path.js new file mode 100644 index 0000000..349338d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/path.js @@ -0,0 +1,445 @@ +define(["./_base", "dojo/_base/lang","dojo/_base/declare", "./matrix", "./shape"], + function(g, lang, declare, matrix, shapeLib){ +/*===== + dojox.gfx.path = { + // summary: + // This module contains the core graphics Path API. + // Path command format follows the W3C SVG 1.0 Path api. + }; + g = dojox.gfx; + shape.Shape = dojox.gfx.shape.Shape; + =====*/ + + var path = g.path = {}; + var Path = declare("dojox.gfx.path.Path", shapeLib.Shape, { + // summary: a generalized path shape + + constructor: function(rawNode){ + // summary: a path constructor + // rawNode: Node + // a DOM node to be used by this path object + this.shape = lang.clone(g.defaultPath); + this.segments = []; + this.tbbox = null; + this.absolute = true; + this.last = {}; + this.rawNode = rawNode; + this.segmented = false; + }, + + // mode manipulations + setAbsoluteMode: function(mode){ + // summary: sets an absolute or relative mode for path points + // mode: Boolean + // true/false or "absolute"/"relative" to specify the mode + this._confirmSegmented(); + this.absolute = typeof mode == "string" ? (mode == "absolute") : mode; + return this; // self + }, + getAbsoluteMode: function(){ + // summary: returns a current value of the absolute mode + this._confirmSegmented(); + return this.absolute; // Boolean + }, + + getBoundingBox: function(){ + // summary: returns the bounding box {x, y, width, height} or null + this._confirmSegmented(); + return (this.bbox && ("l" in this.bbox)) ? {x: this.bbox.l, y: this.bbox.t, width: this.bbox.r - this.bbox.l, height: this.bbox.b - this.bbox.t} : null; // dojox.gfx.Rectangle + }, + + _getRealBBox: function(){ + // summary: returns an array of four points or null + // four points represent four corners of the untransformed bounding box + this._confirmSegmented(); + if(this.tbbox){ + return this.tbbox; // Array + } + var bbox = this.bbox, matrix = this._getRealMatrix(); + this.bbox = null; + for(var i = 0, len = this.segments.length; i < len; ++i){ + this._updateWithSegment(this.segments[i], matrix); + } + var t = this.bbox; + this.bbox = bbox; + this.tbbox = t ? [ + {x: t.l, y: t.t}, + {x: t.r, y: t.t}, + {x: t.r, y: t.b}, + {x: t.l, y: t.b} + ] : null; + return this.tbbox; // Array + }, + + getLastPosition: function(){ + // summary: returns the last point in the path, or null + this._confirmSegmented(); + return "x" in this.last ? this.last : null; // Object + }, + + _applyTransform: function(){ + this.tbbox = null; + return this.inherited(arguments); + }, + + // segment interpretation + _updateBBox: function(x, y, m){ + // summary: updates the bounding box of path with new point + // x: Number + // an x coordinate + // y: Number + // a y coordinate + + if(m){ + var t = matrix.multiplyPoint(m, x, y); + x = t.x; + y = t.y; + } + + // we use {l, b, r, t} representation of a bbox + if(this.bbox && ("l" in this.bbox)){ + if(this.bbox.l > x) this.bbox.l = x; + if(this.bbox.r < x) this.bbox.r = x; + if(this.bbox.t > y) this.bbox.t = y; + if(this.bbox.b < y) this.bbox.b = y; + }else{ + this.bbox = {l: x, b: y, r: x, t: y}; + } + }, + _updateWithSegment: function(segment, matrix){ + // summary: updates the bounding box of path with new segment + // segment: Object + // a segment + var n = segment.args, l = n.length, i; + // update internal variables: bbox, absolute, last + switch(segment.action){ + case "M": + case "L": + case "C": + case "S": + case "Q": + case "T": + for(i = 0; i < l; i += 2){ + this._updateBBox(n[i], n[i + 1], matrix); + } + this.last.x = n[l - 2]; + this.last.y = n[l - 1]; + this.absolute = true; + break; + case "H": + for(i = 0; i < l; ++i){ + this._updateBBox(n[i], this.last.y, matrix); + } + this.last.x = n[l - 1]; + this.absolute = true; + break; + case "V": + for(i = 0; i < l; ++i){ + this._updateBBox(this.last.x, n[i], matrix); + } + this.last.y = n[l - 1]; + this.absolute = true; + break; + case "m": + var start = 0; + if(!("x" in this.last)){ + this._updateBBox(this.last.x = n[0], this.last.y = n[1], matrix); + start = 2; + } + for(i = start; i < l; i += 2){ + this._updateBBox(this.last.x += n[i], this.last.y += n[i + 1], matrix); + } + this.absolute = false; + break; + case "l": + case "t": + for(i = 0; i < l; i += 2){ + this._updateBBox(this.last.x += n[i], this.last.y += n[i + 1], matrix); + } + this.absolute = false; + break; + case "h": + for(i = 0; i < l; ++i){ + this._updateBBox(this.last.x += n[i], this.last.y, matrix); + } + this.absolute = false; + break; + case "v": + for(i = 0; i < l; ++i){ + this._updateBBox(this.last.x, this.last.y += n[i], matrix); + } + this.absolute = false; + break; + case "c": + for(i = 0; i < l; i += 6){ + this._updateBBox(this.last.x + n[i], this.last.y + n[i + 1], matrix); + this._updateBBox(this.last.x + n[i + 2], this.last.y + n[i + 3], matrix); + this._updateBBox(this.last.x += n[i + 4], this.last.y += n[i + 5], matrix); + } + this.absolute = false; + break; + case "s": + case "q": + for(i = 0; i < l; i += 4){ + this._updateBBox(this.last.x + n[i], this.last.y + n[i + 1], matrix); + this._updateBBox(this.last.x += n[i + 2], this.last.y += n[i + 3], matrix); + } + this.absolute = false; + break; + case "A": + for(i = 0; i < l; i += 7){ + this._updateBBox(n[i + 5], n[i + 6], matrix); + } + this.last.x = n[l - 2]; + this.last.y = n[l - 1]; + this.absolute = true; + break; + case "a": + for(i = 0; i < l; i += 7){ + this._updateBBox(this.last.x += n[i + 5], this.last.y += n[i + 6], matrix); + } + this.absolute = false; + break; + } + // add an SVG path segment + var path = [segment.action]; + for(i = 0; i < l; ++i){ + path.push(g.formatNumber(n[i], true)); + } + if(typeof this.shape.path == "string"){ + this.shape.path += path.join(""); + }else{ + Array.prototype.push.apply(this.shape.path, path); //FIXME: why not simple push()? + } + }, + + // a dictionary, which maps segment type codes to a number of their arguments + _validSegments: {m: 2, l: 2, h: 1, v: 1, c: 6, s: 4, q: 4, t: 2, a: 7, z: 0}, + + _pushSegment: function(action, args){ + // summary: adds a segment + // action: String + // valid SVG code for a segment's type + // args: Array + // a list of parameters for this segment + this.tbbox = null; + var group = this._validSegments[action.toLowerCase()], segment; + if(typeof group == "number"){ + if(group){ + if(args.length >= group){ + segment = {action: action, args: args.slice(0, args.length - args.length % group)}; + this.segments.push(segment); + this._updateWithSegment(segment); + } + }else{ + segment = {action: action, args: []}; + this.segments.push(segment); + this._updateWithSegment(segment); + } + } + }, + + _collectArgs: function(array, args){ + // summary: converts an array of arguments to plain numeric values + // array: Array + // an output argument (array of numbers) + // args: Array + // an input argument (can be values of Boolean, Number, dojox.gfx.Point, or an embedded array of them) + for(var i = 0; i < args.length; ++i){ + var t = args[i]; + if(typeof t == "boolean"){ + array.push(t ? 1 : 0); + }else if(typeof t == "number"){ + array.push(t); + }else if(t instanceof Array){ + this._collectArgs(array, t); + }else if("x" in t && "y" in t){ + array.push(t.x, t.y); + } + } + }, + + // segments + moveTo: function(){ + // summary: forms a move segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "M" : "m", args); + return this; // self + }, + lineTo: function(){ + // summary: forms a line segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "L" : "l", args); + return this; // self + }, + hLineTo: function(){ + // summary: forms a horizontal line segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "H" : "h", args); + return this; // self + }, + vLineTo: function(){ + // summary: forms a vertical line segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "V" : "v", args); + return this; // self + }, + curveTo: function(){ + // summary: forms a curve segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "C" : "c", args); + return this; // self + }, + smoothCurveTo: function(){ + // summary: forms a smooth curve segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "S" : "s", args); + return this; // self + }, + qCurveTo: function(){ + // summary: forms a quadratic curve segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "Q" : "q", args); + return this; // self + }, + qSmoothCurveTo: function(){ + // summary: forms a quadratic smooth curve segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "T" : "t", args); + return this; // self + }, + arcTo: function(){ + // summary: forms an elliptic arc segment + this._confirmSegmented(); + var args = []; + this._collectArgs(args, arguments); + this._pushSegment(this.absolute ? "A" : "a", args); + return this; // self + }, + closePath: function(){ + // summary: closes a path + this._confirmSegmented(); + this._pushSegment("Z", []); + return this; // self + }, + + _confirmSegmented: function() { + if (!this.segmented) { + var path = this.shape.path; + // switch to non-updating version of path building + this.shape.path = []; + this._setPath(path); + // switch back to the string path + this.shape.path = this.shape.path.join(""); + // become segmented + this.segmented = true; + } + }, + + // setShape + _setPath: function(path){ + // summary: forms a path using an SVG path string + // path: String + // an SVG path string + var p = lang.isArray(path) ? path : path.match(g.pathSvgRegExp); + this.segments = []; + this.absolute = true; + this.bbox = {}; + this.last = {}; + if(!p) return; + // create segments + var action = "", // current action + args = [], // current arguments + l = p.length; + for(var i = 0; i < l; ++i){ + var t = p[i], x = parseFloat(t); + if(isNaN(x)){ + if(action){ + this._pushSegment(action, args); + } + args = []; + action = t; + }else{ + args.push(x); + } + } + this._pushSegment(action, args); + }, + setShape: function(newShape){ + // summary: forms a path using a shape + // newShape: Object + // an SVG path string or a path object (see dojox.gfx.defaultPath) + this.inherited(arguments, [typeof newShape == "string" ? {path: newShape} : newShape]); + + this.segmented = false; + this.segments = []; + if(!g.lazyPathSegmentation){ + this._confirmSegmented(); + } + return this; // self + }, + + // useful constant for descendants + _2PI: Math.PI * 2 + }); + + var TextPath = declare("dojox.gfx.path.TextPath", Path, { + // summary: a generalized TextPath shape + + constructor: function(rawNode){ + // summary: a TextPath shape constructor + // rawNode: Node + // a DOM node to be used by this TextPath object + if(!("text" in this)){ + this.text = lang.clone(g.defaultTextPath); + } + if(!("fontStyle" in this)){ + this.fontStyle = lang.clone(g.defaultFont); + } + }, + getText: function(){ + // summary: returns the current text object or null + return this.text; // Object + }, + setText: function(newText){ + // summary: sets a text to be drawn along the path + this.text = g.makeParameters(this.text, + typeof newText == "string" ? {text: newText} : newText); + this._setText(); + return this; // self + }, + getFont: function(){ + // summary: returns the current font object or null + return this.fontStyle; // Object + }, + setFont: function(newFont){ + // summary: sets a font for text + this.fontStyle = typeof newFont == "string" ? + g.splitFontString(newFont) : + g.makeParameters(g.defaultFont, newFont); + this._setFont(); + return this; // self + } + }); + + return { // our hash of newly defined objects + Path: Path, + TextPath: TextPath + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/renderer.js b/js/dojo-release-1.7.2-src/dojox/gfx/renderer.js new file mode 100644 index 0000000..a50c4d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/renderer.js @@ -0,0 +1,89 @@ +define(["./_base","dojo/_base/lang", "dojo/_base/sniff", "dojo/_base/window", "dojo/_base/config"], + function(g, lang, has, win, config){ + //>> noBuildResolver +/*===== + dojox.gfx.renderer = { + // summary: + // This module is an AMD loader plugin that loads the appropriate graphics renderer + // implementation based on detected environment and current configuration settings. + }; + =====*/ + var currentRenderer = null; + return { + load: function(id, require, load){ + if(currentRenderer && id != "force"){ + load(currentRenderer); + return; + } + var renderer = config.forceGfxRenderer, + renderers = !renderer && (lang.isString(config.gfxRenderer) ? + config.gfxRenderer : "svg,vml,canvas,silverlight").split(","), + silverlightObject, silverlightFlag; + + while(!renderer && renderers.length){ + switch(renderers.shift()){ + case "svg": + // the next test is from https://github.com/phiggins42/has.js + if("SVGAngle" in win.global){ + renderer = "svg"; + } + break; + case "vml": + if(has("ie")){ + renderer = "vml"; + } + break; + case "silverlight": + try{ + if(has("ie")){ + silverlightObject = new ActiveXObject("AgControl.AgControl"); + if(silverlightObject && silverlightObject.IsVersionSupported("1.0")){ + silverlightFlag = true; + } + }else{ + if(navigator.plugins["Silverlight Plug-In"]){ + silverlightFlag = true; + } + } + }catch(e){ + silverlightFlag = false; + }finally{ + silverlightObject = null; + } + if(silverlightFlag){ + renderer = "silverlight"; + } + break; + case "canvas": + if(win.global.CanvasRenderingContext2D){ + renderer = "canvas"; + } + break; + } + } + + if (renderer === 'canvas' && config.canvasEvents !== false) { + renderer = "canvasWithEvents"; + } + + if(config.isDebug){ + console.log("gfx renderer = " + renderer); + } + + function loadRenderer(){ + require(["dojox/gfx/" + renderer], function(module){ + g.renderer = renderer; + // memorize the renderer module + currentRenderer = module; + // now load it + load(module); + }); + } + if(renderer == "svg" && typeof window.svgweb != "undefined"){ + window.svgweb.addOnLoad(loadRenderer); + }else{ + loadRenderer(); + } + } + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/resources/Gillius.svg b/js/dojo-release-1.7.2-src/dojox/gfx/resources/Gillius.svg new file mode 100644 index 0000000..a93cdab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/resources/Gillius.svg @@ -0,0 +1,1272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/resources/README b/js/dojo-release-1.7.2-src/dojox/gfx/resources/README new file mode 100644 index 0000000..e938c47 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/resources/README @@ -0,0 +1,3 @@ +http://xmlgraphics.apache.org/batik/tools/font-converter.html + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/resources/gfxSvgProxyFrame.html b/js/dojo-release-1.7.2-src/dojox/gfx/resources/gfxSvgProxyFrame.html new file mode 100644 index 0000000..cfc7e26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/resources/gfxSvgProxyFrame.html @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/resources/svg2gfx-simple.xsl b/js/dojo-release-1.7.2-src/dojox/gfx/resources/svg2gfx-simple.xsl new file mode 100644 index 0000000..90a463f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/resources/svg2gfx-simple.xsl @@ -0,0 +1,72 @@ + + + + + + + + fill: " + + ", + + + + + stroke: { + + color: " + + ", + + + width: " + + ", + + + cap: " + + ", + + + join: " + + ", + + }, + + + { + + name: " + + ", + + children: [ + + ]}, + + + { + + name: " + + ", + + shape: {type: "path", path: " + + "}, + + + + + + + }, + + + [ + + ] + + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/resources/svg2gfx.xsl b/js/dojo-release-1.7.2-src/dojox/gfx/resources/svg2gfx.xsl new file mode 100644 index 0000000..03c25a9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/resources/svg2gfx.xsl @@ -0,0 +1,1085 @@ + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + : + + + , + + + + + : + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "#000000", + + + + + " + + ", + + + + + + + + + + + + + {x: + + ,y: + + }, + + + + + {x: + + ,y: + + }, + + + + + + + + + + + + + + + {"r": + + ,"g": + + ,"b": + + ,"a":1}, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + exslt:sin and exslt:cos must be supported for a rotation. + + + + + + + + + + + + + + + + + + + exslt:tan must be supported for a skewX. + + + + + + + + + + + + + + + + + + + exslt:tan must be supported for a skewY. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cx: + + , + + cy: + + , + + + r: + + + + + x1: + + , + + y1: + + , + + x2: + + , + + y2: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + exslt:sin and exslt:cos must be supported for a gradient rotation. + + + + + + , + + + + + + + + + font:{ type:"font", + + style:" + + ", + + + variant:" + + ", + + + weight:" + + ", + + + size:" + + ", + + + family:" + + ", + + }, + + + + + + + + stroke:{ + + + + color: + + + + + + width:" + + ", + + + cap:" + + ", + + + join:" + + ", + + + + + + style:"Dash", + + + style:"Solid", + + + }, + + + + + + + + + + + + + + + + + + + + + + + + + + + name:" + + ", + + + + + + : + + , + + + + + path:" + + ", + + + + + + fill: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + exslt:node-set is required for processing the style attribute. + + + + + + + + transform:{ + + + + } + + , + + + + + + + + + + + + + + + + + + + + + + + + + + { + + shape:{type:"circle", + + }, + + + + + } + + , + + + + + + { + + shape:{type:"ellipse", + + } + + + + + } + + , + + + + + + + { + + children:[ + + + + + + + + + + + + + + + + + ] + + , + + + + + + + } + + , + + + + + + + + + { + + shape:{type:"image", + + + src:" + + ", + + }, + + + + + }, + + + + + + { + + shape:{type:"line", + + }, + + + + + } + + , + + + + + {type:"linear", + + + + + + + + + + + + + + + + colors:[ + + + + + + ]} + + , + + + + + + + + { + + shape:{type:"path", + + + + }, + + + + + }, + + + + + + {type:"pattern", + + } + + , + + + + + + + { + + shape:{type:"polyline",points:[ + + + + + + + + + + + + + + + + + + + + + ]}, + + + + + } + + , + + + + + {type:"radial", + + + + + + + + + + + + + + + + + + + colors:[ + + + + + + ]} + + , + + + + + + { + + shape:{type:"rect", + + + + + r: + + + }, + + + + + } + + , + + + + + + { + + color: + + } + + , + + + + + + + + { + + + + shape:{type:"textpath",text:" + + ", + + + + + + + + + + + shape:{type:"text",text:" + + ", + + + + + + + + + }, + + + + fill:"#000000", + + + + + + } + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + ] + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/shape.js b/js/dojo-release-1.7.2-src/dojox/gfx/shape.js new file mode 100644 index 0000000..36f95a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/shape.js @@ -0,0 +1,875 @@ +define(["./_base", "dojo/_base/lang", "dojo/_base/declare", "dojo/_base/window", "dojo/_base/sniff", + "dojo/_base/connect", "dojo/_base/array", "dojo/dom-construct", "dojo/_base/Color", "./matrix"], + function(g, lang, declare, win, has, events, arr, domConstruct, Color, matrixLib){ + +/*===== + dojox.gfx.shape = { + // summary: + // This module contains the core graphics Shape API. + // Different graphics renderer implementation modules (svg, canvas, vml, silverlight, etc.) extend this + // basic api to provide renderer-specific implementations for each shape. + }; + =====*/ + + var shape = g.shape = {}; + // a set of ids (keys=type) + var _ids = {}; + // a simple set impl to map shape<->id + var registry = {}; + + shape.register = function(/*dojox.gfx.shape.Shape*/shape){ + // summary: + // Register the specified shape into the graphics registry. + // shape: dojox.gfx.shape.Shape + // The shape to register. + // returns: + // The unique id associated with this shape. + // the id pattern : type+number (ex: Rect0,Rect1,etc) + var t = shape.declaredClass.split('.').pop(); + var i = t in _ids ? ++_ids[t] : ((_ids[t] = 0)); + var uid = t+i; + registry[uid] = shape; + return uid; + }; + + shape.byId = function(/*String*/id){ + // summary: + // Returns the shape that matches the specified id. + // id: String + // The unique identifier for this Shape. + return registry[id]; //dojox.gfx.shape.Shape + }; + + shape.dispose = function(/*dojox.gfx.shape.Shape*/shape){ + // summary: + // Removes the specified shape from the registry. + // shape: dojox.gfx.shape.Shape + // The shape to unregister. + delete registry[shape.getUID()]; + }; + + declare("dojox.gfx.shape.Shape", null, { + // summary: a Shape object, which knows how to apply + // graphical attributes and transformations + + constructor: function(){ + // rawNode: Node + // underlying graphics-renderer-specific implementation object (if applicable) + this.rawNode = null; + // shape: Object: an abstract shape object + // (see dojox.gfx.defaultPath, + // dojox.gfx.defaultPolyline, + // dojox.gfx.defaultRect, + // dojox.gfx.defaultEllipse, + // dojox.gfx.defaultCircle, + // dojox.gfx.defaultLine, + // or dojox.gfx.defaultImage) + this.shape = null; + + // matrix: dojox.gfx.Matrix2D + // a transformation matrix + this.matrix = null; + + // fillStyle: Object + // a fill object + // (see dojox.gfx.defaultLinearGradient, + // dojox.gfx.defaultRadialGradient, + // dojox.gfx.defaultPattern, + // or dojo.Color) + this.fillStyle = null; + + // strokeStyle: Object + // a stroke object + // (see dojox.gfx.defaultStroke) + this.strokeStyle = null; + + // bbox: dojox.gfx.Rectangle + // a bounding box of this shape + // (see dojox.gfx.defaultRect) + this.bbox = null; + + // virtual group structure + + // parent: Object + // a parent or null + // (see dojox.gfx.Surface, + // dojox.gfx.shape.VirtualGroup, + // or dojox.gfx.Group) + this.parent = null; + + // parentMatrix: dojox.gfx.Matrix2D + // a transformation matrix inherited from the parent + this.parentMatrix = null; + + var uid = shape.register(this); + this.getUID = function(){ + return uid; + } + }, + + // trivial getters + + getNode: function(){ + // summary: Different graphics rendering subsystems implement shapes in different ways. This + // method provides access to the underlying graphics subsystem object. Clients calling this + // method and using the return value must be careful not to try sharing or using the underlying node + // in a general way across renderer implementation. + // Returns the underlying graphics Node, or null if no underlying graphics node is used by this shape. + return this.rawNode; // Node + }, + getShape: function(){ + // summary: returns the current Shape object or null + // (see dojox.gfx.defaultPath, + // dojox.gfx.defaultPolyline, + // dojox.gfx.defaultRect, + // dojox.gfx.defaultEllipse, + // dojox.gfx.defaultCircle, + // dojox.gfx.defaultLine, + // or dojox.gfx.defaultImage) + return this.shape; // Object + }, + getTransform: function(){ + // summary: Returns the current transformation matrix applied to this Shape or null + return this.matrix; // dojox.gfx.Matrix2D + }, + getFill: function(){ + // summary: Returns the current fill object or null + // (see dojox.gfx.defaultLinearGradient, + // dojox.gfx.defaultRadialGradient, + // dojox.gfx.defaultPattern, + // or dojo.Color) + return this.fillStyle; // Object + }, + getStroke: function(){ + // summary: Returns the current stroke object or null + // (see dojox.gfx.defaultStroke) + return this.strokeStyle; // Object + }, + getParent: function(){ + // summary: Returns the parent Shape, Group or VirtualGroup or null if this Shape is unparented. + // (see dojox.gfx.Surface, + // dojox.gfx.shape.VirtualGroup, + // or dojox.gfx.Group) + return this.parent; // Object + }, + getBoundingBox: function(){ + // summary: Returns the bounding box Rectanagle for this shape or null if a BoundingBox cannot be + // calculated for the shape on the current renderer or for shapes with no geometric area (points). + // A bounding box is a rectangular geometric region + // defining the X and Y extent of the shape. + // (see dojox.gfx.defaultRect) + return this.bbox; // dojox.gfx.Rectangle + }, + getTransformedBoundingBox: function(){ + // summary: returns an array of four points or null + // four points represent four corners of the untransformed bounding box + var b = this.getBoundingBox(); + if(!b){ + return null; // null + } + var m = this._getRealMatrix(), + gm = matrixLib; + return [ // Array + gm.multiplyPoint(m, b.x, b.y), + gm.multiplyPoint(m, b.x + b.width, b.y), + gm.multiplyPoint(m, b.x + b.width, b.y + b.height), + gm.multiplyPoint(m, b.x, b.y + b.height) + ]; + }, + getEventSource: function(){ + // summary: returns a Node, which is used as + // a source of events for this shape + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + return this.rawNode; // Node + }, + + // empty settings + + setShape: function(shape){ + // summary: sets a shape object + // (the default implementation simply ignores it) + // shape: Object + // a shape object + // (see dojox.gfx.defaultPath, + // dojox.gfx.defaultPolyline, + // dojox.gfx.defaultRect, + // dojox.gfx.defaultEllipse, + // dojox.gfx.defaultCircle, + // dojox.gfx.defaultLine, + // or dojox.gfx.defaultImage) + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + this.shape = g.makeParameters(this.shape, shape); + this.bbox = null; + return this; // self + }, + setFill: function(fill){ + // summary: sets a fill object + // (the default implementation simply ignores it) + // fill: Object + // a fill object + // (see dojox.gfx.defaultLinearGradient, + // dojox.gfx.defaultRadialGradient, + // dojox.gfx.defaultPattern, + // or dojo.Color) + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + if(!fill){ + // don't fill + this.fillStyle = null; + return this; // self + } + var f = null; + if(typeof(fill) == "object" && "type" in fill){ + // gradient or pattern + switch(fill.type){ + case "linear": + f = g.makeParameters(g.defaultLinearGradient, fill); + break; + case "radial": + f = g.makeParameters(g.defaultRadialGradient, fill); + break; + case "pattern": + f = g.makeParameters(g.defaultPattern, fill); + break; + } + }else{ + // color object + f = g.normalizeColor(fill); + } + this.fillStyle = f; + return this; // self + }, + setStroke: function(stroke){ + // summary: sets a stroke object + // (the default implementation simply ignores it) + // stroke: Object + // a stroke object + // (see dojox.gfx.defaultStroke) + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + if(!stroke){ + // don't stroke + this.strokeStyle = null; + return this; // self + } + // normalize the stroke + if(typeof stroke == "string" || lang.isArray(stroke) || stroke instanceof Color){ + stroke = {color: stroke}; + } + var s = this.strokeStyle = g.makeParameters(g.defaultStroke, stroke); + s.color = g.normalizeColor(s.color); + return this; // self + }, + setTransform: function(matrix){ + // summary: sets a transformation matrix + // matrix: dojox.gfx.Matrix2D + // a matrix or a matrix-like object + // (see an argument of dojox.gfx.Matrix2D + // constructor for a list of acceptable arguments) + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + this.matrix = matrixLib.clone(matrix ? matrixLib.normalize(matrix) : matrixLib.identity); + return this._applyTransform(); // self + }, + + _applyTransform: function(){ + // summary: physically sets a matrix + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + return this; // self + }, + + // z-index + + moveToFront: function(){ + // summary: moves a shape to front of its parent's list of shapes + var p = this.getParent(); + if(p){ + p._moveChildToFront(this); + this._moveToFront(); // execute renderer-specific action + } + return this; // self + }, + moveToBack: function(){ + // summary: moves a shape to back of its parent's list of shapes + var p = this.getParent(); + if(p){ + p._moveChildToBack(this); + this._moveToBack(); // execute renderer-specific action + } + return this; + }, + _moveToFront: function(){ + // summary: renderer-specific hook, see dojox.gfx.shape.Shape.moveToFront() + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + }, + _moveToBack: function(){ + // summary: renderer-specific hook, see dojox.gfx.shape.Shape.moveToFront() + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + }, + + // apply left & right transformation + + applyRightTransform: function(matrix){ + // summary: multiplies the existing matrix with an argument on right side + // (this.matrix * matrix) + // matrix: dojox.gfx.Matrix2D + // a matrix or a matrix-like object + // (see an argument of dojox.gfx.Matrix2D + // constructor for a list of acceptable arguments) + return matrix ? this.setTransform([this.matrix, matrix]) : this; // self + }, + applyLeftTransform: function(matrix){ + // summary: multiplies the existing matrix with an argument on left side + // (matrix * this.matrix) + // matrix: dojox.gfx.Matrix2D + // a matrix or a matrix-like object + // (see an argument of dojox.gfx.Matrix2D + // constructor for a list of acceptable arguments) + return matrix ? this.setTransform([matrix, this.matrix]) : this; // self + }, + applyTransform: function(matrix){ + // summary: a shortcut for dojox.gfx.Shape.applyRightTransform + // matrix: dojox.gfx.Matrix2D + // a matrix or a matrix-like object + // (see an argument of dojox.gfx.Matrix2D + // constructor for a list of acceptable arguments) + return matrix ? this.setTransform([this.matrix, matrix]) : this; // self + }, + + // virtual group methods + + removeShape: function(silently){ + // summary: removes the shape from its parent's list of shapes + // silently: Boolean + // if true, do not redraw a picture yet + if(this.parent){ + this.parent.remove(this, silently); + } + return this; // self + }, + _setParent: function(parent, matrix){ + // summary: sets a parent + // parent: Object + // a parent or null + // (see dojox.gfx.Surface, + // dojox.gfx.shape.VirtualGroup, + // or dojox.gfx.Group) + // matrix: dojox.gfx.Matrix2D + // a 2D matrix or a matrix-like object + this.parent = parent; + return this._updateParentMatrix(matrix); // self + }, + _updateParentMatrix: function(matrix){ + // summary: updates the parent matrix with new matrix + // matrix: dojox.gfx.Matrix2D + // a 2D matrix or a matrix-like object + this.parentMatrix = matrix ? matrixLib.clone(matrix) : null; + return this._applyTransform(); // self + }, + _getRealMatrix: function(){ + // summary: returns the cumulative ('real') transformation matrix + // by combining the shape's matrix with its parent's matrix + var m = this.matrix; + var p = this.parent; + while(p){ + if(p.matrix){ + m = matrixLib.multiply(p.matrix, m); + } + p = p.parent; + } + return m; // dojox.gfx.Matrix2D + } + }); + + shape._eventsProcessing = { + connect: function(name, object, method){ + // summary: connects a handler to an event on this shape + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + // redirect to fixCallback to normalize events and add the gfxTarget to the event. The latter + // is done by dojox.gfx.fixTarget which is defined by each renderer + return events.connect(this.getEventSource(), name, shape.fixCallback(this, g.fixTarget, object, method)); + + }, + disconnect: function(token){ + // summary: connects a handler by token from an event on this shape + // COULD BE RE-IMPLEMENTED BY THE RENDERER! + + events.disconnect(token); + } + }; + + shape.fixCallback = function(gfxElement, fixFunction, scope, method){ + // summary: + // Wraps the callback to allow for tests and event normalization + // before it gets invoked. This is where 'fixTarget' is invoked. + // gfxElement: Object + // The GFX object that triggers the action (ex.: + // dojox.gfx.Surface and dojox.gfx.Shape). A new event property + // 'gfxTarget' is added to the event to reference this object. + // for easy manipulation of GFX objects by the event handlers. + // fixFunction: Function + // The function that implements the logic to set the 'gfxTarget' + // property to the event. It should be 'dojox.gfx.fixTarget' for + // most of the cases + // scope: Object + // Optional. The scope to be used when invoking 'method'. If + // omitted, a global scope is used. + // method: Function|String + // The original callback to be invoked. + if(!method){ + method = scope; + scope = null; + } + if(lang.isString(method)){ + scope = scope || win.global; + if(!scope[method]){ throw(['dojox.gfx.shape.fixCallback: scope["', method, '"] is null (scope="', scope, '")'].join('')); } + return function(e){ + return fixFunction(e,gfxElement) ? scope[method].apply(scope, arguments || []) : undefined; }; // Function + } + return !scope + ? function(e){ + return fixFunction(e,gfxElement) ? method.apply(scope, arguments) : undefined; } + : function(e){ + return fixFunction(e,gfxElement) ? method.apply(scope, arguments || []) : undefined; }; // Function + }; + lang.extend(shape.Shape, shape._eventsProcessing); + + shape.Container = { + // summary: a container of shapes, which can be used + // as a foundation for renderer-specific groups, or as a way + // to logically group shapes (e.g, to propagate matricies) + + _init: function() { + // children: Array: a list of children + this.children = []; + }, + + // group management + + openBatch: function() { + // summary: starts a new batch, subsequent new child shapes will be held in + // the batch instead of appending to the container directly + }, + closeBatch: function() { + // summary: submits the current batch, append all pending child shapes to DOM + }, + add: function(shape){ + // summary: adds a shape to the list + // shape: dojox.gfx.Shape + // the shape to add to the list + var oldParent = shape.getParent(); + if(oldParent){ + oldParent.remove(shape, true); + } + this.children.push(shape); + return shape._setParent(this, this._getRealMatrix()); // self + }, + remove: function(shape, silently){ + // summary: removes a shape from the list + // shape: dojox.gfx.shape.Shape + // the shape to remove + // silently: Boolean + // if true, do not redraw a picture yet + for(var i = 0; i < this.children.length; ++i){ + if(this.children[i] == shape){ + if(silently){ + // skip for now + }else{ + shape.parent = null; + shape.parentMatrix = null; + } + this.children.splice(i, 1); + break; + } + } + return this; // self + }, + clear: function(){ + // summary: removes all shapes from a group/surface + var shape; + for(var i = 0; i < this.children.length;++i){ + shape = this.children[i]; + shape.parent = null; + shape.parentMatrix = null; + } + this.children = []; + return this; // self + }, + + // moving child nodes + + _moveChildToFront: function(shape){ + // summary: moves a shape to front of the list of shapes + // shape: dojox.gfx.shape.Shape + // one of the child shapes to move to the front + for(var i = 0; i < this.children.length; ++i){ + if(this.children[i] == shape){ + this.children.splice(i, 1); + this.children.push(shape); + break; + } + } + return this; // self + }, + _moveChildToBack: function(shape){ + // summary: moves a shape to back of the list of shapes + // shape: dojox.gfx.shape.Shape + // one of the child shapes to move to the front + for(var i = 0; i < this.children.length; ++i){ + if(this.children[i] == shape){ + this.children.splice(i, 1); + this.children.unshift(shape); + break; + } + } + return this; // self + } + }; + + declare("dojox.gfx.shape.Surface", null, { + // summary: a surface object to be used for drawings + constructor: function(){ + // underlying node + this.rawNode = null; + // the parent node + this._parent = null; + // the list of DOM nodes to be deleted in the case of destruction + this._nodes = []; + // the list of events to be detached in the case of destruction + this._events = []; + }, + destroy: function(){ + // summary: destroy all relevant external resources and release all + // external references to make this object garbage-collectible + arr.forEach(this._nodes, domConstruct.destroy); + this._nodes = []; + arr.forEach(this._events, events.disconnect); + this._events = []; + this.rawNode = null; // recycle it in _nodes, if it needs to be recycled + if(has("ie")){ + while(this._parent.lastChild){ + domConstruct.destroy(this._parent.lastChild); + } + }else{ + this._parent.innerHTML = ""; + } + this._parent = null; + }, + getEventSource: function(){ + // summary: returns a node, which can be used to attach event listeners + return this.rawNode; // Node + }, + _getRealMatrix: function(){ + // summary: always returns the identity matrix + return null; // dojox.gfx.Matrix2D + }, + isLoaded: true, + onLoad: function(/*dojox.gfx.Surface*/ surface){ + // summary: local event, fired once when the surface is created + // asynchronously, used only when isLoaded is false, required + // only for Silverlight. + }, + whenLoaded: function(/*Object|Null*/ context, /*Function|String*/ method){ + var f = lang.hitch(context, method); + if(this.isLoaded){ + f(this); + }else{ + var h = events.connect(this, "onLoad", function(surface){ + events.disconnect(h); + f(surface); + }); + } + } + }); + + lang.extend(shape.Surface, shape._eventsProcessing); + + declare("dojox.gfx.Point", null, { + // summary: a hypothetical 2D point to be used for drawings - {x, y} + // description: This object is defined for documentation purposes. + // You should use the naked object instead: {x: 1, y: 2}. + }); + + declare("dojox.gfx.Rectangle", null, { + // summary: a hypothetical rectangle - {x, y, width, height} + // description: This object is defined for documentation purposes. + // You should use the naked object instead: {x: 1, y: 2, width: 100, height: 200}. + }); + + declare("dojox.gfx.shape.Rect", shape.Shape, { + // summary: a generic rectangle + constructor: function(rawNode){ + // rawNode: Node + // The underlying graphics system object (typically a DOM Node) + this.shape = g.getDefault("Rect"); + this.rawNode = rawNode; + }, + getBoundingBox: function(){ + // summary: returns the bounding box (its shape in this case) + return this.shape; // dojox.gfx.Rectangle + } + }); + + declare("dojox.gfx.shape.Ellipse", shape.Shape, { + // summary: a generic ellipse + constructor: function(rawNode){ + // rawNode: Node + // a DOM Node + this.shape = g.getDefault("Ellipse"); + this.rawNode = rawNode; + }, + getBoundingBox: function(){ + // summary: returns the bounding box + if(!this.bbox){ + var shape = this.shape; + this.bbox = {x: shape.cx - shape.rx, y: shape.cy - shape.ry, + width: 2 * shape.rx, height: 2 * shape.ry}; + } + return this.bbox; // dojox.gfx.Rectangle + } + }); + + declare("dojox.gfx.shape.Circle", shape.Shape, { + // summary: a generic circle + // (this is a helper object, which is defined for convenience) + constructor: function(rawNode){ + // rawNode: Node + // a DOM Node + this.shape = g.getDefault("Circle"); + this.rawNode = rawNode; + }, + getBoundingBox: function(){ + // summary: returns the bounding box + if(!this.bbox){ + var shape = this.shape; + this.bbox = {x: shape.cx - shape.r, y: shape.cy - shape.r, + width: 2 * shape.r, height: 2 * shape.r}; + } + return this.bbox; // dojox.gfx.Rectangle + } + }); + + declare("dojox.gfx.shape.Line", shape.Shape, { + // summary: a generic line + // (this is a helper object, which is defined for convenience) + constructor: function(rawNode){ + // rawNode: Node + // a DOM Node + this.shape = g.getDefault("Line"); + this.rawNode = rawNode; + }, + getBoundingBox: function(){ + // summary: returns the bounding box + if(!this.bbox){ + var shape = this.shape; + this.bbox = { + x: Math.min(shape.x1, shape.x2), + y: Math.min(shape.y1, shape.y2), + width: Math.abs(shape.x2 - shape.x1), + height: Math.abs(shape.y2 - shape.y1) + }; + } + return this.bbox; // dojox.gfx.Rectangle + } + }); + + declare("dojox.gfx.shape.Polyline", shape.Shape, { + // summary: a generic polyline/polygon + // (this is a helper object, which is defined for convenience) + constructor: function(rawNode){ + // rawNode: Node + // a DOM Node + this.shape = g.getDefault("Polyline"); + this.rawNode = rawNode; + }, + setShape: function(points, closed){ + // summary: sets a polyline/polygon shape object + // points: Object + // a polyline/polygon shape object + // closed: Boolean + // close the polyline to make a polygon + if(points && points instanceof Array){ + // points: Array: an array of points + this.inherited(arguments, [{points: points}]); + if(closed && this.shape.points.length){ + this.shape.points.push(this.shape.points[0]); + } + }else{ + this.inherited(arguments, [points]); + } + return this; // self + }, + _normalizePoints: function(){ + // summary: normalize points to array of {x:number, y:number} + var p = this.shape.points, l = p && p.length; + if(l && typeof p[0] == "number"){ + var points = []; + for(var i = 0; i < l; i += 2){ + points.push({x: p[i], y: p[i + 1]}); + } + this.shape.points = points; + } + }, + getBoundingBox: function(){ + // summary: returns the bounding box + if(!this.bbox && this.shape.points.length){ + var p = this.shape.points; + var l = p.length; + var t = p[0]; + var bbox = {l: t.x, t: t.y, r: t.x, b: t.y}; + for(var i = 1; i < l; ++i){ + t = p[i]; + if(bbox.l > t.x) bbox.l = t.x; + if(bbox.r < t.x) bbox.r = t.x; + if(bbox.t > t.y) bbox.t = t.y; + if(bbox.b < t.y) bbox.b = t.y; + } + this.bbox = { + x: bbox.l, + y: bbox.t, + width: bbox.r - bbox.l, + height: bbox.b - bbox.t + }; + } + return this.bbox; // dojox.gfx.Rectangle + } + }); + + declare("dojox.gfx.shape.Image", shape.Shape, { + // summary: a generic image + // (this is a helper object, which is defined for convenience) + constructor: function(rawNode){ + // rawNode: Node + // a DOM Node + this.shape = g.getDefault("Image"); + this.rawNode = rawNode; + }, + getBoundingBox: function(){ + // summary: returns the bounding box (its shape in this case) + return this.shape; // dojox.gfx.Rectangle + }, + setStroke: function(){ + // summary: ignore setting a stroke style + return this; // self + }, + setFill: function(){ + // summary: ignore setting a fill style + return this; // self + } + }); + + declare("dojox.gfx.shape.Text", shape.Shape, { + // summary: a generic text + constructor: function(rawNode){ + // rawNode: Node + // a DOM Node + this.fontStyle = null; + this.shape = g.getDefault("Text"); + this.rawNode = rawNode; + }, + getFont: function(){ + // summary: returns the current font object or null + return this.fontStyle; // Object + }, + setFont: function(newFont){ + // summary: sets a font for text + // newFont: Object + // a font object (see dojox.gfx.defaultFont) or a font string + this.fontStyle = typeof newFont == "string" ? g.splitFontString(newFont) : + g.makeParameters(g.defaultFont, newFont); + this._setFont(); + return this; // self + } + }); + + shape.Creator = { + // summary: shape creators + createShape: function(shape){ + // summary: creates a shape object based on its type; it is meant to be used + // by group-like objects + // shape: Object + // a shape descriptor object + switch(shape.type){ + case g.defaultPath.type: return this.createPath(shape); + case g.defaultRect.type: return this.createRect(shape); + case g.defaultCircle.type: return this.createCircle(shape); + case g.defaultEllipse.type: return this.createEllipse(shape); + case g.defaultLine.type: return this.createLine(shape); + case g.defaultPolyline.type: return this.createPolyline(shape); + case g.defaultImage.type: return this.createImage(shape); + case g.defaultText.type: return this.createText(shape); + case g.defaultTextPath.type: return this.createTextPath(shape); + } + return null; + }, + createGroup: function(){ + // summary: creates a group shape + return this.createObject(g.Group); // dojox.gfx.Group + }, + createRect: function(rect){ + // summary: creates a rectangle shape + // rect: Object + // a path object (see dojox.gfx.defaultRect) + return this.createObject(g.Rect, rect); // dojox.gfx.Rect + }, + createEllipse: function(ellipse){ + // summary: creates an ellipse shape + // ellipse: Object + // an ellipse object (see dojox.gfx.defaultEllipse) + return this.createObject(g.Ellipse, ellipse); // dojox.gfx.Ellipse + }, + createCircle: function(circle){ + // summary: creates a circle shape + // circle: Object + // a circle object (see dojox.gfx.defaultCircle) + return this.createObject(g.Circle, circle); // dojox.gfx.Circle + }, + createLine: function(line){ + // summary: creates a line shape + // line: Object + // a line object (see dojox.gfx.defaultLine) + return this.createObject(g.Line, line); // dojox.gfx.Line + }, + createPolyline: function(points){ + // summary: creates a polyline/polygon shape + // points: Object + // a points object (see dojox.gfx.defaultPolyline) + // or an Array of points + return this.createObject(g.Polyline, points); // dojox.gfx.Polyline + }, + createImage: function(image){ + // summary: creates a image shape + // image: Object + // an image object (see dojox.gfx.defaultImage) + return this.createObject(g.Image, image); // dojox.gfx.Image + }, + createText: function(text){ + // summary: creates a text shape + // text: Object + // a text object (see dojox.gfx.defaultText) + return this.createObject(g.Text, text); // dojox.gfx.Text + }, + createPath: function(path){ + // summary: creates a path shape + // path: Object + // a path object (see dojox.gfx.defaultPath) + return this.createObject(g.Path, path); // dojox.gfx.Path + }, + createTextPath: function(text){ + // summary: creates a text shape + // text: Object + // a textpath object (see dojox.gfx.defaultTextPath) + return this.createObject(g.TextPath, {}).setText(text); // dojox.gfx.TextPath + }, + createObject: function(shapeType, rawShape){ + // summary: creates an instance of the passed shapeType class + // SHOULD BE RE-IMPLEMENTED BY THE RENDERER! + // shapeType: Function + // a class constructor to create an instance of + // rawShape: Object + // properties to be passed in to the classes 'setShape' method + + return null; // dojox.gfx.Shape + } + }; + + return shape; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/gfx/silverlight.js b/js/dojo-release-1.7.2-src/dojox/gfx/silverlight.js new file mode 100644 index 0000000..a7996ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/gfx/silverlight.js @@ -0,0 +1,835 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "dojo/_base/declare", "dojo/_base/Color", + "dojo/_base/array", "dojo/dom-geometry", "dojo/dom", "dojo/_base/sniff", + "./_base", "./shape", "./path"], + function(kernel,lang,declare,color,arr,domGeom,dom,has,g,gs,pathLib){ +/*===== + dojox.gfx.silverlight = { + // module: + // dojox/gfx/silverlight + // summary: + // This the graphics rendering bridge for the Microsoft Silverlight plugin. + // Silverlight is a faster implementation on IE6-8 than the default 2d graphics, VML + }; + g = dojox.gfx; + pathLib.Path = dojox.gfx.path.Path; + pathLib.TextPath = dojox.gfx.path.TextPath; + sl.Shape = dojox.gfx.canvas.Shape; + gs.Shape = dojox.gfx.shape.Shape; + gs.Rect = dojox.gfx.shape.Rect; + gs.Ellipse = dojox.gfx.shape.Ellipse; + gs.Circle = dojox.gfx.shape.Circle; + gs.Line = dojox.gfx.shape.Line; + gs.PolyLine = dojox.gfx.shape.PolyLine; + gs.Image = dojox.gfx.shape.Image; + gs.Text = dojox.gfx.shape.Text; + gs.Surface = dojox.gfx.shape.Surface; + =====*/ + + var sl = g.silverlight = {}; + kernel.experimental("dojox.gfx.silverlight"); + + var dasharray = { + solid: "none", + shortdash: [4, 1], + shortdot: [1, 1], + shortdashdot: [4, 1, 1, 1], + shortdashdotdot: [4, 1, 1, 1, 1, 1], + dot: [1, 3], + dash: [4, 3], + longdash: [8, 3], + dashdot: [4, 3, 1, 3], + longdashdot: [8, 3, 1, 3], + longdashdotdot: [8, 3, 1, 3, 1, 3] + }, + fontweight = { + normal: 400, + bold: 700 + }, + caps = {butt: "Flat", round: "Round", square: "Square"}, + joins = {bevel: "Bevel", round: "Round"}, + fonts = { + serif: "Times New Roman", + times: "Times New Roman", + "sans-serif": "Arial", + helvetica: "Arial", + monotone: "Courier New", + courier: "Courier New" + }; + + function hexColor(/*String|Array|dojo.Color*/ color){ + // summary: converts a color object to a Silverlight hex color string (#aarrggbb) + var c = g.normalizeColor(color), + t = c.toHex(), a = Math.round(c.a * 255); + a = (a < 0 ? 0 : a > 255 ? 255 : a).toString(16); + return "#" + (a.length < 2 ? "0" + a : a) + t.slice(1); // String + } + + declare("dojox.gfx.silverlight.Shape", gs.Shape, { + // summary: Silverlight-specific implementation of dojox.gfx.Shape methods + + setFill: function(fill){ + // summary: sets a fill object (Silverlight) + // fill: Object: a fill object + // (see dojox.gfx.defaultLinearGradient, + // dojox.gfx.defaultRadialGradient, + // dojox.gfx.defaultPattern, + // or dojo.Color) + + var p = this.rawNode.getHost().content, r = this.rawNode, f; + if(!fill){ + // don't fill + this.fillStyle = null; + this._setFillAttr(null); + return this; // self + } + if(typeof(fill) == "object" && "type" in fill){ + // gradient + switch(fill.type){ + case "linear": + this.fillStyle = f = g.makeParameters(g.defaultLinearGradient, fill); + var lgb = p.createFromXaml(""); + lgb.mappingMode = "Absolute"; + lgb.startPoint = f.x1 + "," + f.y1; + lgb.endPoint = f.x2 + "," + f.y2; + arr.forEach(f.colors, function(c){ + var t = p.createFromXaml(""); + t.offset = c.offset; + t.color = hexColor(c.color); + lgb.gradientStops.add(t); + }); + this._setFillAttr(lgb); + break; + case "radial": + this.fillStyle = f = g.makeParameters(g.defaultRadialGradient, fill); + var rgb = p.createFromXaml(""), + c = g.matrix.multiplyPoint(g.matrix.invert(this._getAdjustedMatrix()), f.cx, f.cy), + pt = c.x + "," + c.y; + rgb.mappingMode = "Absolute"; + rgb.gradientOrigin = pt; + rgb.center = pt; + rgb.radiusX = rgb.radiusY = f.r; + arr.forEach(f.colors, function(c){ + var t = p.createFromXaml(""); + t.offset = c.offset; + t.color = hexColor(c.color); + rgb.gradientStops.add(t); + }); + this._setFillAttr(rgb); + break; + case "pattern": + // don't fill: Silverlight doesn't define TileBrush for some reason + this.fillStyle = null; + this._setFillAttr(null); + break; + } + return this; // self + } + // color object + this.fillStyle = f = g.normalizeColor(fill); + var scb = p.createFromXaml(""); + scb.color = f.toHex(); + scb.opacity = f.a; + this._setFillAttr(scb); + return this; // self + }, + _setFillAttr: function(f){ + this.rawNode.fill = f; + }, + + setStroke: function(stroke){ + // summary: sets a stroke object (Silverlight) + // stroke: Object: a stroke object + // (see dojox.gfx.defaultStroke) + + var p = this.rawNode.getHost().content, r = this.rawNode; + if(!stroke){ + // don't stroke + this.strokeStyle = null; + r.stroke = null; + return this; + } + // normalize the stroke + if(typeof stroke == "string" || lang.isArray(stroke) || stroke instanceof color){ + stroke = {color: stroke}; + } + var s = this.strokeStyle = g.makeParameters(g.defaultStroke, stroke); + s.color = g.normalizeColor(s.color); + // generate attributes + if(s){ + var scb = p.createFromXaml(""); + scb.color = s.color.toHex(); + scb.opacity = s.color.a; + r.stroke = scb; + r.strokeThickness = s.width; + r.strokeStartLineCap = r.strokeEndLineCap = r.strokeDashCap = + caps[s.cap]; + if(typeof s.join == "number"){ + r.strokeLineJoin = "Miter"; + r.strokeMiterLimit = s.join; + }else{ + r.strokeLineJoin = joins[s.join]; + } + var da = s.style.toLowerCase(); + if(da in dasharray){ da = dasharray[da]; } + if(da instanceof Array){ + da = lang.clone(da); + var i; + /* + for(var i = 0; i < da.length; ++i){ + da[i] *= s.width; + } + */ + if(s.cap != "butt"){ + for(i = 0; i < da.length; i += 2){ + //da[i] -= s.width; + --da[i] + if(da[i] < 1){ da[i] = 1; } + } + for(i = 1; i < da.length; i += 2){ + //da[i] += s.width; + ++da[i]; + } + } + r.strokeDashArray = da.join(","); + }else{ + r.strokeDashArray = null; + } + } + return this; // self + }, + + _getParentSurface: function(){ + var surface = this.parent; + for(; surface && !(surface instanceof g.Surface); surface = surface.parent); + return surface; + }, + + _applyTransform: function() { + var tm = this._getAdjustedMatrix(), r = this.rawNode; + if(tm){ + var p = this.rawNode.getHost().content, + mt = p.createFromXaml(""), + mm = p.createFromXaml(""); + mm.m11 = tm.xx; + mm.m21 = tm.xy; + mm.m12 = tm.yx; + mm.m22 = tm.yy; + mm.offsetX = tm.dx; + mm.offsetY = tm.dy; + mt.matrix = mm; + r.renderTransform = mt; + }else{ + r.renderTransform = null; + } + return this; + }, + + setRawNode: function(rawNode){ + // summary: + // assigns and clears the underlying node that will represent this + // shape. Once set, transforms, gradients, etc, can be applied. + // (no fill & stroke by default) + rawNode.fill = null; + rawNode.stroke = null; + this.rawNode = rawNode; + this.rawNode.tag = this.getUID(); + }, + + // move family + + _moveToFront: function(){ + // summary: moves a shape to front of its parent's list of shapes (Silverlight) + var c = this.parent.rawNode.children, r = this.rawNode; + c.remove(r); + c.add(r); + return this; // self + }, + _moveToBack: function(){ + // summary: moves a shape to back of its parent's list of shapes (Silverlight) + var c = this.parent.rawNode.children, r = this.rawNode; + c.remove(r); + c.insert(0, r); + return this; // self + }, + + _getAdjustedMatrix: function(){ + // summary: returns the adjusted ("real") transformation matrix + return this.matrix; // dojox.gfx.Matrix2D + } + }); + + declare("dojox.gfx.silverlight.Group", sl.Shape, { + // summary: a group shape (Silverlight), which can be used + // to logically group shapes (e.g, to propagate matricies) + constructor: function(){ + gs.Container._init.call(this); + }, + setRawNode: function(rawNode){ + // summary: sets a raw Silverlight node to be used by this shape + // rawNode: Node: an Silverlight node + this.rawNode = rawNode; + this.rawNode.tag = this.getUID(); + + } + }); + sl.Group.nodeType = "Canvas"; + + declare("dojox.gfx.silverlight.Rect", [sl.Shape, gs.Rect], { + // summary: a rectangle shape (Silverlight) + setShape: function(newShape){ + // summary: sets a rectangle shape object (Silverlight) + // newShape: Object: a rectangle shape object + this.shape = g.makeParameters(this.shape, newShape); + this.bbox = null; + var r = this.rawNode, n = this.shape; + r.width = n.width; + r.height = n.height; + r.radiusX = r.radiusY = n.r; + return this._applyTransform(); // self + }, + _getAdjustedMatrix: function(){ + // summary: returns the adjusted ("real") transformation matrix + var matrix = this.matrix, s = this.shape, delta = {dx: s.x, dy: s.y}; + return new g.Matrix2D(matrix ? [matrix, delta] : delta); // dojox.gfx.Matrix2D + } + }); + sl.Rect.nodeType = "Rectangle"; + + declare("dojox.gfx.silverlight.Ellipse", [sl.Shape, gs.Ellipse], { + // summary: an ellipse shape (Silverlight) + setShape: function(newShape){ + // summary: sets an ellipse shape object (Silverlight) + // newShape: Object: an ellipse shape object + this.shape = g.makeParameters(this.shape, newShape); + this.bbox = null; + var r = this.rawNode, n = this.shape; + r.width = 2 * n.rx; + r.height = 2 * n.ry; + return this._applyTransform(); // self + }, + _getAdjustedMatrix: function(){ + // summary: returns the adjusted ("real") transformation matrix + var matrix = this.matrix, s = this.shape, delta = {dx: s.cx - s.rx, dy: s.cy - s.ry}; + return new g.Matrix2D(matrix ? [matrix, delta] : delta); // dojox.gfx.Matrix2D + } + }); + sl.Ellipse.nodeType = "Ellipse"; + + declare("dojox.gfx.silverlight.Circle", [sl.Shape, gs.Circle], { + // summary: a circle shape (Silverlight) + setShape: function(newShape){ + // summary: sets a circle shape object (Silverlight) + // newShape: Object: a circle shape object + this.shape = g.makeParameters(this.shape, newShape); + this.bbox = null; + var r = this.rawNode, n = this.shape; + r.width = r.height = 2 * n.r; + return this._applyTransform(); // self + }, + _getAdjustedMatrix: function(){ + // summary: returns the adjusted ("real") transformation matrix + var matrix = this.matrix, s = this.shape, delta = {dx: s.cx - s.r, dy: s.cy - s.r}; + return new g.Matrix2D(matrix ? [matrix, delta] : delta); // dojox.gfx.Matrix2D + } + }); + sl.Circle.nodeType = "Ellipse"; + + declare("dojox.gfx.silverlight.Line", [sl.Shape, gs.Line], { + // summary: a line shape (Silverlight) + setShape: function(newShape){ + // summary: sets a line shape object (Silverlight) + // newShape: Object: a line shape object + this.shape = g.makeParameters(this.shape, newShape); + this.bbox = null; + var r = this.rawNode, n = this.shape; + r.x1 = n.x1; r.y1 = n.y1; r.x2 = n.x2; r.y2 = n.y2; + return this; // self + } + }); + sl.Line.nodeType = "Line"; + + declare("dojox.gfx.silverlight.Polyline", [sl.Shape, gs.Polyline], { + // summary: a polyline/polygon shape (Silverlight) + setShape: function(points, closed){ + // summary: sets a polyline/polygon shape object (Silverlight) + // points: Object: a polyline/polygon shape object + if(points && points instanceof Array){ + // branch + // points: Array: an array of points + this.shape = g.makeParameters(this.shape, {points: points}); + if(closed && this.shape.points.length){ + this.shape.points.push(this.shape.points[0]); + } + }else{ + this.shape = g.makeParameters(this.shape, points); + } + this.bbox = null; + this._normalizePoints(); + var p = this.shape.points, rp = []; + for(var i = 0; i < p.length; ++i){ + rp.push(p[i].x, p[i].y); + } + this.rawNode.points = rp.join(","); + return this; // self + } + }); + sl.Polyline.nodeType = "Polyline"; + + declare("dojox.gfx.silverlight.Image", [sl.Shape, gs.Image], { + // summary: an image (Silverlight) + setShape: function(newShape){ + // summary: sets an image shape object (Silverlight) + // newShape: Object: an image shape object + this.shape = g.makeParameters(this.shape, newShape); + this.bbox = null; + var r = this.rawNode, n = this.shape; + r.width = n.width; + r.height = n.height; + r.source = n.src; + return this._applyTransform(); // self + }, + _getAdjustedMatrix: function(){ + // summary: returns the adjusted ("real") transformation matrix + var matrix = this.matrix, s = this.shape, delta = {dx: s.x, dy: s.y}; + return new g.Matrix2D(matrix ? [matrix, delta] : delta); // dojox.gfx.Matrix2D + }, + setRawNode: function(rawNode){ + // summary: + // assigns and clears the underlying node that will represent this + // shape. Once set, transforms, gradients, etc, can be applied. + // (no fill & stroke by default) + this.rawNode = rawNode; + this.rawNode.tag = this.getUID(); + } + }); + sl.Image.nodeType = "Image"; + + declare("dojox.gfx.silverlight.Text", [sl.Shape, gs.Text], { + // summary: an anchored text (Silverlight) + setShape: function(newShape){ + // summary: sets a text shape object (Silverlight) + // newShape: Object: a text shape object + this.shape = g.makeParameters(this.shape, newShape); + this.bbox = null; + var r = this.rawNode, s = this.shape; + r.text = s.text; + r.textDecorations = s.decoration === "underline" ? "Underline" : "None"; + r["Canvas.Left"] = -10000; + r["Canvas.Top"] = -10000; + if(!this._delay){ + this._delay = window.setTimeout(lang.hitch(this, "_delayAlignment"), 10); + } + return this; // self + }, + _delayAlignment: function(){ + // handle alignment + var r = this.rawNode, s = this.shape, w, h; + try{ + w = r.actualWidth; + h = r.actualHeight; + }catch(e){ + // bail out if the node is hidden + return; + } + var x = s.x, y = s.y - h * 0.75; + switch(s.align){ + case "middle": + x -= w / 2; + break; + case "end": + x -= w; + break; + } + this._delta = {dx: x, dy: y}; + r["Canvas.Left"] = 0; + r["Canvas.Top"] = 0; + this._applyTransform(); + delete this._delay; + }, + _getAdjustedMatrix: function(){ + // summary: returns the adjusted ("real") transformation matrix + var matrix = this.matrix, delta = this._delta, x; + if(matrix){ + x = delta ? [matrix, delta] : matrix; + }else{ + x = delta ? delta : {}; + } + return new g.Matrix2D(x); + }, + setStroke: function(){ + // summary: ignore setting a stroke style + return this; // self + }, + _setFillAttr: function(f){ + this.rawNode.foreground = f; + }, + setRawNode: function(rawNode){ + // summary: + // assigns and clears the underlying node that will represent this + // shape. Once set, transforms, gradients, etc, can be applied. + // (no fill & stroke by default) + this.rawNode = rawNode; + this.rawNode.tag = this.getUID(); + }, + getTextWidth: function(){ + // summary: get the text width in pixels + return this.rawNode.actualWidth; + } + }); + sl.Text.nodeType = "TextBlock"; + + declare("dojox.gfx.silverlight.Path", [sl.Shape, pathLib.Path], { + // summary: a path shape (Silverlight) + _updateWithSegment: function(segment){ + // summary: updates the bounding box of path with new segment + // segment: Object: a segment + this.inherited(arguments); + var p = this.shape.path; + if(typeof(p) == "string"){ + this.rawNode.data = p ? p : null; + } + }, + setShape: function(newShape){ + // summary: forms a path using a shape (Silverlight) + // newShape: Object: an SVG path string or a path object (see dojox.gfx.defaultPath) + this.inherited(arguments); + var p = this.shape.path; + this.rawNode.data = p ? p : null; + return this; // self + } + }); + sl.Path.nodeType = "Path"; + + declare("dojox.gfx.silverlight.TextPath", [sl.Shape, pathLib.TextPath], { + // summary: a textpath shape (Silverlight) + _updateWithSegment: function(segment){ + // summary: updates the bounding box of path with new segment + // segment: Object: a segment + }, + setShape: function(newShape){ + // summary: forms a path using a shape (Silverlight) + // newShape: Object: an SVG path string or a path object (see dojox.gfx.defaultPath) + }, + _setText: function(){ + } + }); + sl.TextPath.nodeType = "text"; + + var surfaces = {}, nullFunc = new Function; + + declare("dojox.gfx.silverlight.Surface", gs.Surface, { + // summary: a surface object to be used for drawings (Silverlight) + constructor: function(){ + gs.Container._init.call(this); + }, + destroy: function(){ + window[this._onLoadName] = nullFunc; + delete surfaces[this._nodeName]; + this.inherited(arguments); + }, + setDimensions: function(width, height){ + // summary: sets the width and height of the rawNode + // width: String: width of surface, e.g., "100px" + // height: String: height of surface, e.g., "100px" + this.width = g.normalizedLength(width); // in pixels + this.height = g.normalizedLength(height); // in pixels + var p = this.rawNode && this.rawNode.getHost(); + if(p){ + p.width = width; + p.height = height; + } + return this; // self + }, + getDimensions: function(){ + // summary: returns an object with properties "width" and "height" + var p = this.rawNode && this.rawNode.getHost(); + var t = p ? {width: p.content.actualWidth, height: p.content.actualHeight} : null; + if(t.width <= 0){ t.width = this.width; } + if(t.height <= 0){ t.height = this.height; } + return t; // Object + } + }); + + sl.createSurface = function(parentNode, width, height){ + // summary: creates a surface (Silverlight) + // parentNode: Node: a parent node + // width: String: width of surface, e.g., "100px" + // height: String: height of surface, e.g., "100px" + + if(!width && !height){ + var pos = domGeom.position(parentNode); + width = width || pos.w; + height = height || pos.h; + } + if(typeof width == "number"){ + width = width + "px"; + } + if(typeof height == "number"){ + height = height + "px"; + } + + var s = new sl.Surface(); + parentNode = dom.byId(parentNode); + s._parent = parentNode; + s._nodeName = g._base._getUniqueId(); + + // create an empty canvas + var t = parentNode.ownerDocument.createElement("script"); + t.type = "text/xaml"; + t.id = g._base._getUniqueId(); + t.text = ""; + parentNode.parentNode.insertBefore(t, parentNode); + s._nodes.push(t); + + // build the object + var obj, pluginName = g._base._getUniqueId(), + onLoadName = "__" + g._base._getUniqueId() + "_onLoad"; + s._onLoadName = onLoadName; + window[onLoadName] = function(sender){ + if(!s.rawNode){ + s.rawNode = dom.byId(pluginName).content.root; + // register the plugin with its parent node + surfaces[s._nodeName] = parentNode; + s.onLoad(s); + } + }; + if(has("safari")){ + obj = "'; + xipClientWindow = document.getElementsByTagName("iframe")[0]; + xipClientWindow.src = makeClientUrl("init", 'id=' + xipStateId + "&callback=" + encodeURIComponent(config.callback)); + if(xipClientWindow.contentWindow){ + xipClientWindow = xipClientWindow.contentWindow; + } + } + + if(typeof(window.addEventListener) == "undefined"){ + window.attachEvent("onload", onServerLoad); + }else{ + window.addEventListener('load', onServerLoad, false); + } + // --> + + + +

                                      The Dojo Toolkit -- xip_server.html

                                      + +

                                      This file is used for Dojo's XMLHttpRequest Iframe Proxy. This is the the file + that should go on the server that will actually be doing the XHR request.

                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/io/scriptFrame.js b/js/dojo-release-1.7.2-src/dojox/io/scriptFrame.js new file mode 100644 index 0000000..dd4c05c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/scriptFrame.js @@ -0,0 +1,84 @@ +define(["dojo/main", "dojo/io/script", "dojo/io/iframe"], function(dojo, ioScript, iframe){ + dojo.deprecated("dojox.io.scriptFrame", "dojo.io.script now supports parallel requests without dojox.io.scriptFrame", "2.0"); + dojo.getObject("io.scriptFrame", true, dojox); + +//This module extends dojo.io.script to use an iframe for the dojo.io.script.attach calls +//if the frameDoc argument is passed to dojo.io.script.get(), and if frameDoc is a string (representing +//the DOM ID of an iframe that should be used for the connection. If frameDoc is not a string, then +//it is probably a document object, and dojox.io.scriptFrame should not get involved with the request. +//This is useful in some long-polling comet situations in Firefox and Opera. Those browsers execute scripts +//in DOM order, not network-receive order, so a long-polling script will block other +//dynamically appended scripts from running until it completes. By using an iframe +//for the dojo.io.script requests, this issue can be avoided. + +//WARNING: the url argument to dojo.io.script MUST BE relative to the iframe document's location, +//NOT the parent page location. This iframe document's URL will be (dojo.moduleUrl("dojo", "resources/blank.html") +//or djConfig.dojoBlankHtmlUrl (for xdomain loading). + + dojox.io.scriptFrame = { + _waiters: {}, + _loadedIds: {}, + + _getWaiters: function(/*String*/frameId){ + return this._waiters[frameId] || (this._waiters[frameId] = []); + }, + + _fixAttachUrl: function(/*String*/url){ + //summary: fixes the URL so that + }, + + _loaded: function(/*String*/frameId){ + //summary: callback used when waiting for a frame to load (related to the usage of + //the frameId argument to dojo.io.script.get(). + var waiters = this._getWaiters(frameId); + this._loadedIds[frameId] = true; + this._waiters[frameId] = null; + + for(var i = 0; i < waiters.length; i++){ + var ioArgs = waiters[i]; + ioArgs.frameDoc = iframe.doc(dojo.byId(frameId)); + ioScript.attach(ioArgs.id, ioArgs.url, ioArgs.frameDoc); + } + } + }; + + //Hold on to the old _canAttach function. + var oldCanAttach = ioScript._canAttach; + var scriptFrame = dojox.io.scriptFrame; + + //Define frame-aware _canAttach method on dojo.io.script + ioScript._canAttach = function(/*Object*/ioArgs){ + //summary: provides an override of dojo.io.script._canAttach to check for + //the existence of a the args.frameDoc property. If it is there, and it is a string, + //not a document, then create the iframe with an ID of frameDoc, and use that for the calls. + //If frameDoc is a document, then dojox.io.scriptFrame should not get involved. + var fId = ioArgs.args.frameDoc; + + if(fId && dojo.isString(fId)){ + var frame = dojo.byId(fId); + var waiters = scriptFrame._getWaiters(fId); + if(!frame){ + //Need to create frame, but the frame document, which *must* be + //on the same domain as the page (set djConfig.dojoBlankHtmlUrl + //if using xdomain loading). Loading of the frame document is asynchronous, + //so we need to do callback stuff. + waiters.push(ioArgs); + iframe.create(fId, dojox._scopeName + ".io.scriptFrame._loaded('" + fId + "');"); + }else{ + //Frame loading could still be happening. Only call attach if the frame has loaded. + if(scriptFrame._loadedIds[fId]){ + ioArgs.frameDoc = iframe.doc(frame); + this.attach(ioArgs.id, ioArgs.url, ioArgs.frameDoc); + }else{ + waiters.push(ioArgs); + } + } + return false; + }else{ + return oldCanAttach.apply(this, arguments); + } + }; + + return dojox.io.scriptFrame; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/attackerFrame.html b/js/dojo-release-1.7.2-src/dojox/io/tests/attackerFrame.html new file mode 100644 index 0000000..df267bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/attackerFrame.html @@ -0,0 +1,34 @@ + + + + Attacker Frame Test + + + +
                                      fire
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/crossSite.php b/js/dojo-release-1.7.2-src/dojox/io/tests/crossSite.php new file mode 100644 index 0000000..0c48eea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/crossSite.php @@ -0,0 +1,12 @@ +"); + if ($_REQUEST["url"]) { + print "proxied"; + } + if ($_REQUEST["windowname"]) { + print ""; + } + +?> +cross-site response \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/result.txt b/js/dojo-release-1.7.2-src/dojox/io/tests/result.txt new file mode 100644 index 0000000..f985b46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/result.txt @@ -0,0 +1 @@ +Success! diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrame.html b/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrame.html new file mode 100644 index 0000000..e55c7b7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrame.html @@ -0,0 +1,88 @@ + + + + Testing dojox.io.scriptFrame + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrame.js b/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrame.js new file mode 100644 index 0000000..be2d74c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrame.js @@ -0,0 +1,7 @@ +require(['doh', 'dojo/_base/kernel', 'dojo/_base/sniff', 'dojo/_base/url'], function(doh, dojo){ + +if(dojo.isBrowser){ + doh.registerUrl("dojox.io.tests.scriptFrame", dojo.moduleUrl("dojox.io.tests", "scriptFrame.html")); +} + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrameRepeat.html b/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrameRepeat.html new file mode 100644 index 0000000..057d544 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/scriptFrameRepeat.html @@ -0,0 +1,41 @@ + + + + Testing repeat dojox.io.scriptFrame calls + + + + + +

                                      This page tests repeat usage of dojo.io.script.get() with the dojox.io.scriptFrame extensions.

                                      +

                                      Inspect the iframe created by dojox.io.scriptFrame to see if it is performing correctly.

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/windowName.html b/js/dojo-release-1.7.2-src/dojox/io/tests/windowName.html new file mode 100644 index 0000000..be303bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/windowName.html @@ -0,0 +1,61 @@ + + + + Window Name Test + + + + + + +

                                      Window Name Test

                                      + +

                                      This page allows you try getting and posting data cross-site and get the response using the window.name protocol. + There are two forms of the window.name protocol, the simple direct access protocol, where the resource simply + has to set the window.name property. There is also window.name with authorization. In this second variant, + the resource page must redirect to the return URL after setting the window.name property. This example page + lets you try out both protocols using GET or POST.

                                      + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/windowName.js b/js/dojo-release-1.7.2-src/dojox/io/tests/windowName.js new file mode 100644 index 0000000..9ae0a7c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/windowName.js @@ -0,0 +1,59 @@ +define(['doh', 'dojo/_base/kernel', 'dojo/_base/xhr', 'dojox/io/xhrPlugins', 'dojo/_base/url'], function(doh, dojo, xhr, xhrPlugins){ + +xhrPlugins.addXdr("http://xdrsupportingsite.com/"); // make sure the registry is setup +var url = dojo.moduleUrl("dojox.io", "tests/crossSite.php"); +url = url.toString(); + +doh.register("dojox.io.tests.xhrPlugins", [ + function getLocal(t){ + var d = new doh.Deferred(); + var dfd = xhr("GET",{url:url}); + dfd.addCallback(function(result){ + d.callback(result.match(/response/)); + }); + return d; + }, + + function crossSiteRequest(t){ + // Note: this isn't really testing much unless you are using IE8 (XDomainRequest) or a + // browser that supports cross-site XHR (maybe FF3.1?) + var d = new doh.Deferred(); + // persevere supports both XDR and cross-site XHR so we can use it for cross-site testing for now + dojox.io.xhrPlugins.addXdr("http://persevere.sitepen.com/"); + dojox.io.xhrPlugins.addCrossSiteXhr("http://persevere.sitepen.com/"); + try { + var dfd = xhr("GET",{url:"http://persevere.sitepen.com/SMD"}); + } + catch (e){ + if(e.message.match(/No match/)){ + return null; // this browser doesn't support this transport + } + throw e; + } + dfd.addCallback(function(result){ + d.callback(result.match(/transport/)); + }); + // TODO: This should run off a fixed URL on some Dojo server. + +/* dojox.io.xhrPlugins.addXdr("http://dojotoolkit.org/..."); + dojox.io.xhrPlugins.addCrossSiteXhr("http://dojotoolkit.org/..."); + + var dfd = xhr("GET",{url:"http://dojotoolkit.org/.../dojox/io/tests/crossSite.php"}); + dfd.addCallback(function(result){ + d.callback(result.match(/response/)); + }); */ + return d; + }, + function proxiedRequest(t){ + var d = new doh.Deferred(); + dojox.io.xhrPlugins.addProxy(url+"?url="); + + var dfd = xhr("GET",{url:"http://someforeignsite.com/SMD"}); + dfd.addCallback(function(result){ + d.callback(result.match(/proxied/)); + }); + return d; + } +]); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/xhrMultiPart.html b/js/dojo-release-1.7.2-src/dojox/io/tests/xhrMultiPart.html new file mode 100644 index 0000000..6127c71 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/xhrMultiPart.html @@ -0,0 +1,85 @@ + + + + XHR MultiPart Tests + + + + + + + +

                                      XHR MultiParts Tests

                                      +

                                      Run this test from a web server, not from local disk.

                                      +

                                      + +

                                      +
                                      +
                                      + + + + +
                                      +
                                      +
                                      +
                                      + + + + + +
                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/io/tests/xhrPlugins.js b/js/dojo-release-1.7.2-src/dojox/io/tests/xhrPlugins.js new file mode 100644 index 0000000..2e9ce94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/tests/xhrPlugins.js @@ -0,0 +1,58 @@ +define(['doh', 'dojo/_base/kernel', 'dojo/_base/xhr', 'dojox/io/xhrPlugins', 'dojo/_base/url'], function(doh, dojo, xhr, xhrPlugins){ + +xhrPlugins.addCrossSiteXhr("http://cssupportingsite.com/"); // make sure the registry is setup +var url = dojo.moduleUrl("dojox.io", "tests/crossSite.php"); +url = url.toString(); + +doh.register("dojox.io.tests.xhrPlugins", [ + function getLocal(t){ + var d = new doh.Deferred(); + var dfd = xhr("GET",{url:url}); + dfd.addCallback(function(result){ + d.callback(result.match(/response/)); + }); + return d; + }, + + function crossSiteRequest(t){ + // Note: this isn't really testing much unless you are using IE8 (XDomainRequest) or a + // browser that supports cross-site XHR (maybe FF3.1?) + var d = new doh.Deferred(); + // persevere supports cross-site XHR so we can use it for cross-site testing for now + xhrPlugins.addCrossSiteXhr("http://persevere.sitepen.com/"); + try { + var dfd = xhr("GET",{url:"http://persevere.sitepen.com/SMD"}); + } + catch (e){ + if(e.message.match(/No match/)){ + return false; // this browser doesn't support this transport + } + throw e; + } + dfd.addCallback(function(result){ + d.callback(result.match(/transport/)); + }); + // TODO: This should run off a fixed URL on some Dojo server. + +/* xhrPlugins.addXdr("http://dojotoolkit.org/..."); + xhrPlugins.addCrossSiteXhr("http://dojotoolkit.org/..."); + + var dfd = xhr("GET",{url:"http://dojotoolkit.org/.../dojox/io/tests/crossSite.php"}); + dfd.addCallback(function(result){ + d.callback(result.match(/response/)); + }); */ + return d; + }, + function proxiedRequest(t){ + var d = new doh.Deferred(); + xhrPlugins.addProxy(url+"?url="); + + var dfd = xhr("GET",{url:"http://someforeignsite.com/SMD"}); + dfd.addCallback(function(result){ + d.callback(result.match(/proxied/)); + }); + return d; + } +]); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/io/windowName.js b/js/dojo-release-1.7.2-src/dojox/io/windowName.js new file mode 100644 index 0000000..7a302ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/io/windowName.js @@ -0,0 +1,223 @@ +define(["dojo/_base/kernel", "dojo/_base/window", "dojo/_base/xhr", "dojo/_base/sniff", "dojo/_base/url", "dojo/domReady!"], function(dojo){ +dojo.getObject("io.windowName", true, dojox); +// Implements the window.name transport + +dojox.io.windowName = { + send: function(/*String*/ method, /*dojo.__IoArgs*/ args){ + // summary: + // Provides secure cross-domain request capability. + // Sends a request using an iframe (POST or GET) and reads the response through the + // frame's window.name. + // + // method: + // The method to use to send the request, GET or POST + // + // args: + // See dojo.xhr + // + // args.authElement: DOMNode? + // By providing an authElement, this indicates that windowName should use the + // authorized window.name protocol, relying on + // the loaded XD resource to return to the provided return URL on completion + // of authorization/authentication. The provided authElement will be used to place + // the iframe in, so the user can interact with the server resource for authentication + // and/or authorization to access the resource. + // + // args.onAuthLoad: Function? + // When using authorized access to resources, this function will be called when the + // authorization page has been loaded. (When authorization is actually completed, + // the deferred callback function is called with the result). The primary use for this + // is to make the authElement visible to the user once the resource has loaded + // (this can be preferable to showing the iframe while the resource is loading + // since it may not require authorization, it may simply return the resource). + // + // description: + // In order to provide a windowname transport accessible resources/web services, a server + // should check for the presence of a parameter window.name=true and if a request includes + // such a parameter, it should respond to the request with an HTML + // document that sets it's window.name to the string that is to be + // delivered to the client. For example, if a client makes a window.name request like: + // | http://othersite.com/greeting?windowname=true + // And server wants to respond to the client with "Hello", it should return an html page: + // | + // One can provide XML or JSON data by simply quoting the data as a string, and parsing the data + // on the client. + // If you use the authorization window.name protocol, the requester should include an + // authElement element in the args, and a request will be created like: + // | http://othersite.com/greeting?windowname=auth + // And the server can respond like this: + // | + // When using windowName from a XD Dojo build, make sure to set the + // dojo.dojoBlankHtmlUrl property to a local URL. + args.url += (args.url.match(/\?/) ? '&' : '?') + "windowname=" + (args.authElement ? "auth" : true); // indicate our desire for window.name communication + var authElement = args.authElement; + var cleanup = function(result){ + try{ + // we have to do this to stop the wait cursor in FF + var innerDoc = dfd.ioArgs.frame.contentWindow.document; + innerDoc.write(" "); + innerDoc.close(); + }catch(e){} + (authElement || dojo.body()).removeChild(dfd.ioArgs.outerFrame); // clean up + return result; + } + var dfd = dojo._ioSetArgs(args,cleanup,cleanup,cleanup); + if(args.timeout){ + setTimeout(function(){ + if(dfd.fired == -1){ + dfd.callback(new Error("Timeout")); + } + }, + args.timeout + ); + } + dojox.io.windowName._send(dfd, method, authElement, args.onAuthLoad); + return dfd; + }, + _send: function(dfd, method, authTarget, onAuthLoad){ + + var ioArgs = dfd.ioArgs; + var frameNum = dojox.io.windowName._frameNum++; + var sameDomainUrl = (dojo.config.dojoBlankHtmlUrl||dojo.config.dojoCallbackUrl||dojo.moduleUrl("dojo", "resources/blank.html")) + "#" + frameNum; + var frameName = new dojo._Url(window.location, sameDomainUrl); + var doc = dojo.doc; + var frameContainer = authTarget || dojo.body(); + function styleFrame(frame){ + frame.style.width="100%"; + frame.style.height="100%"; + frame.style.border="0px"; + } + if(dojo.isMoz && ![].reduce){ + // FF2 allows unsafe sibling frame modification, + // the fix for this is to create nested frames with getters and setters to protect access + var outerFrame = doc.createElement("iframe"); + styleFrame(outerFrame); + if(!authTarget){ + outerFrame.style.display='none'; + } + frameContainer.appendChild(outerFrame); + + var firstWindow = outerFrame.contentWindow; + doc = firstWindow.document; + doc.write(""); + doc.close(); + var secondWindow = firstWindow[0]; + firstWindow.__defineGetter__(0,function(){}); + firstWindow.__defineGetter__("protectedFrame",function(){}); + doc = secondWindow.document; + doc.write(""); + doc.close(); + frameContainer = doc.body; + } + var frame; + if(dojo.isIE){ + var div = doc.createElement("div"); + div.innerHTML = '"); + frame = document.getElementById("dj_vb_eval_frame"); + } + frame.style.display="none"; + var doc = frame.contentWindow.document; + dojox.lang.lettableWin = frame.contentWindow; + doc.write('' + + '' + + 'vb-eval'); + doc.close(); + }else{ + throw new Error("This browser does not support getters and setters"); + } +} + +dojox.lang.ReadOnlyProxy = +// summary: +// Provides a read only proxy to another object, this can be +// very useful in object-capability systems +// example: +// | var obj = {foo:"bar"}; +// | var readonlyObj = dojox.lang.ReadOnlyProxy(obj); +// | readonlyObj.foo = "test" // throws an error +// | obj.foo = "new bar"; +// | readonlyObj.foo -> returns "new bar", always reflects the current value of the original (it is not just a copy) +dojox.lang.makeObservable(function(obj,i){ + return obj[i]; + },function(obj,i,value){ + // just ignore, exceptions don't seem to propagate through the VB stack. +}); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/oo/Decorator.js b/js/dojo-release-1.7.2-src/dojox/lang/oo/Decorator.js new file mode 100644 index 0000000..8188fda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/oo/Decorator.js @@ -0,0 +1,36 @@ +dojo.provide("dojox.lang.oo.Decorator"); + +(function(){ + var oo = dojox.lang.oo, + + D = oo.Decorator = function(value, decorator){ + // summary: + // The base class for all decorators. + // description: + // This object holds an original function or another decorator + // object, and implements a special mixin algorithm to be used + // by dojox.lang.oo.mixin. + // value: Object: + // a payload to be processed by the decorator. + // decorator: Function|Object: + // a function to handle the custom assignment, or an object with exec() + // method. The signature is: + // decorator(/*String*/ name, /*Function*/ newValue, /*Function*/ oldValue). + this.value = value; + this.decorator = typeof decorator == "object" ? + function(){ return decorator.exec.apply(decorator, arguments); } : decorator; + }; + + oo.makeDecorator = function(decorator){ + // summary: + // creates new custom decorator creator + // decorator: Function|Object: + // a function to handle the custom assignment, + // or an object with exec() method + // returns: Function: + // new decorator constructor + return function(value){ + return new D(value, decorator); + }; + }; +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/oo/Filter.js b/js/dojo-release-1.7.2-src/dojox/lang/oo/Filter.js new file mode 100644 index 0000000..bea528f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/oo/Filter.js @@ -0,0 +1,44 @@ +dojo.provide("dojox.lang.oo.Filter"); + +(function(){ + var oo = dojox.lang.oo, + + F = oo.Filter = function(bag, filter){ + // summary: + // Filter to control mixing in objects by skipping + // properties and renaming them. + // description: + // This object is used as a holder of an original object + // (whose properites are to be copied), and a filter + // function used while copying by dojox.lang.oo.mixin. + // bag: Object: + // object to be filtered + // filter: Function|Object: + // a function to handle the name filtering, + // or an object with exec() method + this.bag = bag; + this.filter = typeof filter == "object" ? + function(){ return filter.exec.apply(filter, arguments); } : filter; + }, + + // the default map-based filter object + MapFilter = function(map){ + this.map = map; + }; + + MapFilter.prototype.exec = function(name){ + return this.map.hasOwnProperty(name) ? this.map[name] : name; + }; + + oo.filter = function(bag, map){ + // summary: + // creates a simple filter object + // bag: Object: + // object to be filtered + // map: Object: + // the dictionary for renaming/removing while copying + // returns: + // new dojox.lang.oo.Filter object + return new F(bag, new MapFilter(map)); + }; +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/oo/aop.js b/js/dojo-release-1.7.2-src/dojox/lang/oo/aop.js new file mode 100644 index 0000000..e31c0aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/oo/aop.js @@ -0,0 +1,74 @@ +dojo.provide("dojox.lang.oo.aop"); + +dojo.require("dojox.lang.oo.Decorator"); +dojo.require("dojox.lang.oo.general"); + +(function(){ + var oo = dojox.lang.oo, md = oo.makeDecorator, oog = oo.general, ooa = oo.aop, + isF = dojo.isFunction; + + // five decorators implementing light-weight AOP weaving + + /*===== + ooa.before = md(function(name, newValue, oldValue){ + // summary: creates a "before" advise, by calling new function + // before the old one + + // dummy body + }); + + ooa.around = md(function(name, newValue, oldValue){ + // summary: creates an "around" advise, + // the previous value is passed as a first argument and can be null, + // arguments are passed as a second argument + + // dummy body + }); + =====*/ + + // reuse existing decorators + ooa.before = oog.before; + ooa.around = oog.wrap; + + ooa.afterReturning = md(function(name, newValue, oldValue){ + // summary: creates an "afterReturning" advise, + // the returned value is passed as the only argument + return isF(oldValue) ? + function(){ + var ret = oldValue.apply(this, arguments); + newValue.call(this, ret); + return ret; + } : function(){ newValue.call(this); }; + }); + + ooa.afterThrowing = md(function(name, newValue, oldValue){ + // summary: creates an "afterThrowing" advise, + // the exception is passed as the only argument + return isF(oldValue) ? + function(){ + var ret; + try{ + ret = oldValue.apply(this, arguments); + }catch(e){ + newValue.call(this, e); + throw e; + } + return ret; + } : oldValue; + }); + + ooa.after = md(function(name, newValue, oldValue){ + // summary: creates an "after" advise, + // it takes no arguments + return isF(oldValue) ? + function(){ + var ret; + try{ + ret = oldValue.apply(this, arguments); + }finally{ + newValue.call(this); + } + return ret; + } : function(){ newValue.call(this); } + }); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/oo/general.js b/js/dojo-release-1.7.2-src/dojox/lang/oo/general.js new file mode 100644 index 0000000..cd024ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/oo/general.js @@ -0,0 +1,60 @@ +dojo.provide("dojox.lang.oo.general"); + +dojo.require("dojox.lang.oo.Decorator"); + +(function(){ + var oo = dojox.lang.oo, md = oo.makeDecorator, oog = oo.general, + isF = dojo.isFunction; + + // generally useful decorators + + oog.augment = md(function(name, newValue, oldValue){ + // summary: add property, if it was not defined before + return typeof oldValue == "undefined" ? newValue : oldValue; + }); + + oog.override = md(function(name, newValue, oldValue){ + // summary: override property only if it was already present + return typeof oldValue != "undefined" ? newValue : oldValue; + }); + + oog.shuffle = md(function(name, newValue, oldValue){ + // summary: replaces arguments for an old method + return isF(oldValue) ? + function(){ + return oldValue.apply(this, newValue.apply(this, arguments)); + } : oldValue; + }); + + oog.wrap = md(function(name, newValue, oldValue){ + // summary: wraps the old values with a supplied function + return function(){ return newValue.call(this, oldValue, arguments); }; + }); + + oog.tap = md(function(name, newValue, oldValue){ + // summary: always returns "this" ignoring the actual return + return function(){ newValue.apply(this, arguments); return this; }; + }); + + oog.before = md(function(name, newValue, oldValue){ + // summary: + // creates a chain of calls where the new method is called + // before the old method + return isF(oldValue) ? + function(){ + newValue.apply(this, arguments); + return oldValue.apply(this, arguments); + } : newValue; + }); + + oog.after = md(function(name, newValue, oldValue){ + // summary: + // creates a chain of calls where the new method is called + // after the old method + return isF(oldValue) ? + function(){ + oldValue.apply(this, arguments); + return newValue.apply(this, arguments); + } : newValue; + }); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/oo/mixin.js b/js/dojo-release-1.7.2-src/dojox/lang/oo/mixin.js new file mode 100644 index 0000000..74d4e8a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/oo/mixin.js @@ -0,0 +1,134 @@ +dojo.provide("dojox.lang.oo.mixin"); + +dojo.experimental("dojox.lang.oo.mixin"); + +dojo.require("dojox.lang.oo.Filter"); +dojo.require("dojox.lang.oo.Decorator"); + +(function(){ + var oo = dojox.lang.oo, Filter = oo.Filter, Decorator = oo.Decorator, empty = {}, + defaultFilter = function(name){ return name; }, + defaultDecorator = function(name, newValue, oldValue){ return newValue; }, + defaultMixer = function(target, name, newValue, oldValue){ target[name] = newValue; }, + defaults = {}, // for the internal use in the mixin() + extraNames = dojo._extraNames, extraLen = extraNames.length, + + applyDecorator = oo.applyDecorator = function(decorator, name, newValue, oldValue){ + // summary: + // applies a decorator unraveling all embedded decorators + // decorator: Function: + // top-level decorator to apply + // name: String: + // name of the property + // newValue: Object: + // new value of the property + // oldValue: Object: + // old value of the property + // returns: Object: + // returns the final value of the property + if(newValue instanceof Decorator){ + var d = newValue.decorator; + newValue = applyDecorator(decorator, name, newValue.value, oldValue); + return d(name, newValue, oldValue); + } + return decorator(name, newValue, oldValue); + }; + + /*===== + dojox.lang.oo.__MixinDefaults = function(){ + // summary: + // a dict of default parameters for dojox.lang.oo._mixin + // decorator: Function: + // a decorator function to be used in absence of other decorators + // filter: Function: + // a filter function to be used in absence of other filters + // mixer: Function: + // a mixer function to be used to mix in new properties + this.decorator = decorator; + this.filter = filter; + this.mixer = mixer; + }; + =====*/ + + oo.__mixin = function(target, source, decorator, filter, mixer){ + // summary: + // mixes in two objects processing decorators and filters + // target: Object: + // target to receive new/updated properties + // source: Object: + // source of properties + // defaults: dojox.lang.oo.__MixinDefaults?: + // default functions for various aspects of mixing + // returns: Object: + // target + + var name, targetName, prop, newValue, oldValue, i; + + // start mixing in properties + for(name in source){ + prop = source[name]; + if(!(name in empty) || empty[name] !== prop){ + targetName = filter(name, target, source, prop); + if(targetName && (!(targetName in target) || !(targetName in empty) || empty[targetName] !== prop)){ + // name is accepted + oldValue = target[targetName]; + newValue = applyDecorator(decorator, targetName, prop, oldValue); + if(oldValue !== newValue){ + mixer(target, targetName, newValue, oldValue); + } + } + } + } + if(extraLen){ + for(i = 0; i < extraLen; ++i){ + name = extraNames[i]; + // repeating the body above + prop = source[name]; + if(!(name in empty) || empty[name] !== prop){ + targetName = filter(name, target, source, prop); + if(targetName && (!(targetName in target) || !(targetName in empty) || empty[targetName] !== prop)){ + // name is accepted + oldValue = target[targetName]; + newValue = applyDecorator(decorator, targetName, prop, oldValue); + if(oldValue !== newValue){ + mixer(target, targetName, newValue, oldValue); + } + } + } + } + } + + return target; // Object + }; + + oo.mixin = function(target, source){ + // summary: + // mixes in two or more objects processing decorators and filters + // using defaults as a fallback + // target: Object: + // target to receive new/updated properties + // source: Object...: + // source of properties, more than one source is allowed + // returns: Object: + // target + + var decorator, filter, i = 1, l = arguments.length; + for(; i < l; ++i){ + source = arguments[i]; + if(source instanceof Filter){ + filter = source.filter; + source = source.bag; + }else{ + filter = defaultFilter; + } + if(source instanceof Decorator){ + decorator = source.decorator; + source = source.value; + }else{ + decorator = defaultDecorator; + } + oo.__mixin(target, source, decorator, filter, defaultMixer); + } + return target; // Object + }; +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/oo/rearrange.js b/js/dojo-release-1.7.2-src/dojox/lang/oo/rearrange.js new file mode 100644 index 0000000..e7433cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/oo/rearrange.js @@ -0,0 +1,64 @@ +dojo.provide("dojox.lang.oo.rearrange"); + +(function(){ + var extraNames = dojo._extraNames, extraLen = extraNames.length, + opts = Object.prototype.toString, empty = {}; + + dojox.lang.oo.rearrange = function(bag, map){ + // summary: + // Process properties in place by removing and renaming them. + // description: + // Properties of an object are to be renamed or removed specified + // by "map" argument. Only own properties of "map" are processed. + // example: + // | oo.rearrange(bag, { + // | abc: "def", // rename "abc" attribute to "def" + // | ghi: null // remove/hide "ghi" attribute + // | }); + // bag: Object: + // the object to be processed + // map: Object: + // the dictionary for renaming (false value indicates removal of the named property) + // returns: Object: + // the original object + + var name, newName, prop, i, t; + + for(name in map){ + newName = map[name]; + if(!newName || opts.call(newName) == "[object String]"){ + prop = bag[name]; + if(!(name in empty) || empty[name] !== prop){ + if(!(delete bag[name])){ + // can't delete => hide it + bag[name] = undefined; + } + if(newName){ + bag[newName] = prop; + } + } + } + } + if(extraLen){ + for(i = 0; i < extraLen; ++i){ + name = extraNames[i]; + // repeating the body above + newName = map[name]; + if(!newName || opts.call(newName) == "[object String]"){ + prop = bag[name]; + if(!(name in empty) || empty[name] !== prop){ + if(!(delete bag[name])){ + // can't delete => hide it + bag[name] = undefined; + } + if(newName){ + bag[newName] = prop; + } + } + } + } + } + + return bag; // Object + }; +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/array.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/array.js new file mode 100644 index 0000000..d8164d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/array.js @@ -0,0 +1,82 @@ +dojo.provide("dojox.lang.tests.array"); + +dojo.require("dojox.lang.functional"); +dojo.require("dojox.lang.functional.fold"); +dojo.require("dojox.lang.functional.reversed"); + +(function(){ + var df = dojox.lang.functional, v, isOdd = "%2", x = {a: 1, b: 2, c: 3}; + + var revArrayIter = function(array){ + this.array = array; + this.position = array.length - 1; + }; + dojo.extend(revArrayIter, { + hasNext: df.lambda("this.position >= 0"), + next: df.lambda("this.array[this.position--]") + }); + + tests.register("dojox.lang.tests.array", [ + function testFilter1(t){ t.assertEqual(df.filter([1, 2, 3], isOdd), [1, 3]); }, + function testFilter2(t){ t.assertEqual(df.filter([1, 2, 3], "%2==0"), [2]); }, + function testFilterIter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.filter(iter, isOdd), [3, 1]); + }, + function testFilterRev(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.filter(iter, isOdd), df.filterRev([1, 2, 3], isOdd)); + }, + + function testForEach(t){ + t.assertEqual((v = [], df.forEach([1, 2, 3], function(x){ v.push(x); }), v), [1, 2, 3]); + }, + function testForEachIter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual((v = [], df.forEach(iter, function(x){ v.push(x); }), v), [3, 2, 1]); + }, + function testForEachRev(t){ + t.assertEqual((v = [], df.forEachRev([1, 2, 3], function(x){ v.push(x); }), v), [3, 2, 1]); + }, + + function testMap(t){ t.assertEqual(df.map([1, 2, 3], "+3"), [4, 5, 6]); }, + function testMapIter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.map(iter, "+3"), [6, 5, 4]); + }, + function testMapRev(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.map(iter, "+3"), df.mapRev([1, 2, 3], "+3")); + }, + + function testEvery1(t){ t.assertFalse(df.every([1, 2, 3], isOdd)); }, + function testEvery2(t){ t.assertTrue(df.every([1, 3, 5], isOdd)); }, + function testEveryIter(t){ + var iter = new revArrayIter([1, 3, 5]); + t.assertTrue(df.every(iter, isOdd)); + }, + function testEveryObj(t){ t.assertFalse(df.every(x, "%2")); }, + function testEveryRev1(t){ t.assertFalse(df.everyRev([1, 2, 3], isOdd)); }, + function testEveryRev2(t){ t.assertTrue(df.everyRev([1, 3, 5], isOdd)); }, + + function testSome1(t){ t.assertFalse(df.some([2, 4, 6], isOdd)); }, + function testSome2(t){ t.assertTrue(df.some([1, 2, 3], isOdd)); }, + function testSomeIter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertTrue(df.some(iter, isOdd)); + }, + function testSomeObj(t){ t.assertTrue(df.some(x, "%2")); }, + function testSomeRev1(t){ t.assertFalse(df.someRev([2, 4, 6], isOdd)); }, + function testSomeRev2(t){ t.assertTrue(df.someRev([1, 2, 3], isOdd)); }, + + function testReduce1(t){ t.assertEqual(df.reduce([4, 2, 1], "x-y"), 1); }, + function testReduce2(t){ t.assertEqual(df.reduce([4, 2, 1], "x-y", 8), 1); }, + function testReduceIter(t){ + var iter = new revArrayIter([1, 2, 4]); + t.assertEqual(df.reduce(iter, "x-y"), 1); + }, + + function testReduceRight1(t){ t.assertEqual(df.reduceRight([4, 2, 1], "x-y"), -5); }, + function testReduceRight2(t){ t.assertEqual(df.reduceRight([4, 2, 1], "x-y", 8), 1); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/async.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/async.js new file mode 100644 index 0000000..42adde8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/async.js @@ -0,0 +1,216 @@ +dojo.provide("dojox.lang.tests.async"); + +dojo.require("dojox.lang.async"); +dojo.require("dojox.lang.async.timeout"); +dojo.require("dojox.lang.async.topic"); + +(function(){ + var async = dojox.lang.async, + wait = async.timeout.from, + QUANT = 50, // ms + MAX_TICKS = 5; + + function randomTimes(n){ + var a = []; + for(var i = 0; i < n; ++i){ + a.push((Math.floor(Math.random() * MAX_TICKS) + 1) * QUANT); + } + return a; + } + + function getMin(a){ + return Math.min.apply(Math, a); + } + + function getMax(a){ + return Math.max.apply(Math, a); + } + + function waitAndExpect(expected, ms){ + return function(value){ + console.log("waitAndExpect: ", value, ", expected: ", expected); + if(expected !== value){ + console.log("ERROR: unexpected value"); + throw new Error("Unexpected value"); + } + return wait(ms)(); + } + } + + function identity(x){ + return x; + } + + function is(a, b, visited){ + if(a === b){ + return true; + } + if(typeof a != typeof b){ + return false; + } + if(Object.prototype.toString.call(a) != Object.prototype.toString.call(b)){ + return false; + } + if(Object.prototype.toString.call(a) == "[object Function]"){ + return false; + } + if(Object.prototype.toString.call(a) == "[object Array]"){ + if(a.length !== b.length){ + return false; + } + for(var i = 0; i < a.length; ++i){ + if(!is(a[i], b[i], visited)){ + return false; + } + return true; + } + } + if(typeof a == "object"){ + if(visited){ + for(var i = 0; i < visited.length; ++i){ + if(visited[i] === a || visited[i] === b){ + return true; + } + } + visited.push(a, b); + }else{ + visited = [a, b]; +} + var akeys = []; + for(var i in a){ + akeys.push(i); + } + var bkeys = []; + for(var i in b){ + bkeys.push(i); + } + akeys.sort(); + bkeys.sort(); + if(!is(akeys, bkeys)){ + return false; + } + for(var i = 0; i < akeys.length; ++i){ + if(!is(a[akeys[i]], b[bkeys[i]])){ + return false; + } + } + return true; + } + return false; + } + + var waitFor0 = waitAndExpect(0, 20), + waitFor1 = waitAndExpect(1, 20), + waitFor2 = waitAndExpect(2, 20); + + tests.register("dojox.lang.tests.async", [ + function smokeTest(){ + var a = randomTimes(1), + r = new dojo.Deferred(); + wait(a[0])().addCallback(function(x){ + if(r == a[0]){ + console.log("ERROR: smokeTest: wrong result"); + throw new Error("smokeTest: wrong result"); + } + r.callback(); + }); + return r; + }, + function testSeq(){ + var a = randomTimes(5), + fs = dojo.map(a, function(ms, i){ + return waitAndExpect(i && a[i - 1], ms); + }); + return async.seq(fs)(0).addCallback(function(value){ + if(a[a.length - 1] !== value){ + console.log("ERROR: testSeq: wrong time"); + throw new Error("testSeq: wrong time"); + } + }); + }, + function testPar(){ + var a = randomTimes(5), + fs = dojo.map(a, function(ms){ + return waitAndExpect(0, ms); + }); + return async.par(fs)(0).addCallback(function(value){ + console.log(a, " - ", value); + if(!is(a, value)){ + console.log("ERROR: testPar: wrong time"); + throw new Error("testPar: wrong time"); + } + }); + }, + function testAny(){ + var a = randomTimes(5), + min = getMin(a), + fs = dojo.map(a, function(ms){ + return waitAndExpect(0, ms); + }); + return async.any(fs)(0).addCallback(function(value){ + console.log(min, " - ", value); + if(min !== value){ + console.log("ERROR: testAny: wrong time"); + throw new Error("testAny: wrong time"); + } + }); + }, + function testSelect0(){ + return async.select( + identity, + waitFor0, + waitFor1, + waitFor2 + )(0); + }, + function testSelect1(){ + return async.select( + identity, + waitFor0, + waitFor1, + waitFor2 + )(1); + }, + function testSelect2(){ + return async.select( + identity, + waitFor0, + waitFor1, + waitFor2 + )(2); + }, + function testIfThenT(){ + return async.ifThen( + identity, + waitFor1, + waitFor0 + )(1); + }, + function testIfThenF(){ + return async.ifThen( + identity, + waitFor1, + waitFor0 + )(0); + }, + function testLoop(){ + var counter = 0; + return async.seq( + async.loop( + identity, + function(ms){ + ++counter; + return wait(ms - 10)(); + } + ), + function(){ + console.log(counter, " - ", 3); + if(counter !== 3){ + console.log("ERROR: testLoop: wrong number of iterations"); + throw new Error("testLoop: wrong number of iterations"); + } + } + )(30); + } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/bench_decl.html b/js/dojo-release-1.7.2-src/dojox/lang/tests/bench_decl.html new file mode 100644 index 0000000..c08cf8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/bench_decl.html @@ -0,0 +1,480 @@ + + + OO/decl benchmark + + + + + +

                                      Warning: the benchmark takes several minutes, wait for a dialog box.

                                      +

                                      Color legend: the fastest, the most stable, the fastest and the most stable

                                      +

                                      +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/curry.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/curry.js new file mode 100644 index 0000000..5dc4805 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/curry.js @@ -0,0 +1,27 @@ +dojo.provide("dojox.lang.tests.curry"); + +dojo.require("dojox.lang.functional.curry"); + +(function(){ + var df = dojox.lang.functional, add5 = df.curry("+")(5), sub3 = df.curry("_-3"), fun = df.lambda("100*a + 10*b + c"); + tests.register("dojox.lang.tests.curry", [ + function testCurry1(t){ t.assertEqual(df.curry("+")(1, 2), 3); }, + function testCurry2(t){ t.assertEqual(df.curry("+")(1)(2), 3); }, + function testCurry3(t){ t.assertEqual(df.curry("+")(1, 2, 3), 3); }, + function testCurry4(t){ t.assertEqual(add5(1), 6); }, + function testCurry5(t){ t.assertEqual(add5(3), 8); }, + function testCurry6(t){ t.assertEqual(add5(5), 10); }, + function testCurry7(t){ t.assertEqual(sub3(1), -2); }, + function testCurry8(t){ t.assertEqual(sub3(3), 0); }, + function testCurry9(t){ t.assertEqual(sub3(5), 2); }, + + function testPartial1(t){ t.assertEqual(df.partial(fun, 1, 2, 3)(), 123); }, + function testPartial2(t){ t.assertEqual(df.partial(fun, 1, 2, df.arg)(3), 123); }, + function testPartial3(t){ t.assertEqual(df.partial(fun, 1, df.arg, 3)(2), 123); }, + function testPartial4(t){ t.assertEqual(df.partial(fun, 1, df.arg, df.arg)(2, 3), 123); }, + function testPartial5(t){ t.assertEqual(df.partial(fun, df.arg, 2, 3)(1), 123); }, + function testPartial6(t){ t.assertEqual(df.partial(fun, df.arg, 2, df.arg)(1, 3), 123); }, + function testPartial7(t){ t.assertEqual(df.partial(fun, df.arg, df.arg, 3)(1, 2), 123); }, + function testPartial8(t){ t.assertEqual(df.partial(fun, df.arg, df.arg, df.arg)(1, 2, 3), 123); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/declare-old.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/declare-old.js new file mode 100644 index 0000000..3d1572f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/declare-old.js @@ -0,0 +1,244 @@ +dojo.provide("dojox.lang.tests.declare-old"); + +// the old file copied and modified here for testing + +// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA + +dojox.lang.tests.declareOld = function(/*String*/ className, /*Function|Function[]*/ superclass, /*Object*/ props){ + // summary: + // Create a feature-rich constructor from compact notation + // + // description: + // Create a feature-rich constructor from compact notation + // + // className: + // The name of the constructor (loosely, a "class") + // stored in the "declaredClass" property in the created prototype + // superclass: + // May be null, a Function, or an Array of Functions. If an array, + // the first element is used as the prototypical ancestor and + // any following Functions become mixin ancestors. + // props: + // An object whose properties are copied to the + // created prototype. + // Add an instance-initialization function by making it a property + // named "constructor". + // description: + // Create a constructor using a compact notation for inheritance and + // prototype extension. + // + // All superclasses (including mixins) must be Functions (not simple Objects). + // + // Mixin ancestors provide a type of multiple inheritance. Prototypes of mixin + // ancestors are copied to the new class: changes to mixin prototypes will + // not affect classes to which they have been mixed in. + // + // "className" is cached in "declaredClass" property of the new class. + // + // example: + // Declare a class with no ancestors. + // | dojo.declare("my.ClassyThing", null, { + // | aProperty:"string", + // | constructor: function(args){ + // | dojo.mixin(this, args); + // | } + // | }); + // + // example: + // Declare a class inheriting from my.classed.Foo + // | dojo.declare("my.classes.Bar", my.classes.Foo, { + // | // properties to be added to the class prototype + // | someValue: 2, + // | // initialization function + // | constructor: function(){ + // | this.myComplicatedObject = new ReallyComplicatedObject(); + // | }, + // | // other functions + // | someMethod: function(){ + // | doStuff(); + // | } + // | ); + // + // example: + // Declare a class inherting from two mixins, handling multiple constructor args + // | dojo.declare("my.ComplexMix", [my.BaseClass, my.MixedClass],{ + // | constructor: function(a, b){ + // | // someone called `new my.ComplexMix("something", "maybesomething");` + // | } + // | }); + + // process superclass argument + var dd = arguments.callee, mixins; + if(dojo.isArray(superclass)){ + mixins = superclass; + superclass = mixins.shift(); + } + // construct intermediate classes for mixins + if(mixins){ + dojo.forEach(mixins, function(m, i){ + if(!m){ throw(className + ": mixin #" + i + " is null"); } // It's likely a required module is not loaded + superclass = dd._delegate(superclass, m); + }); + } + // create constructor + var ctor = dd._delegate(superclass); + // extend with "props" + props = props || {}; + ctor.extend(props); + // more prototype decoration + dojo.extend(ctor, { declaredClass: className, _constructor: props.constructor/*, preamble: null*/ }); + // special help for IE + ctor.prototype.constructor = ctor; + // create named reference + return dojo.setObject(className, ctor); // Function +}; + +dojo.mixin(dojox.lang.tests.declareOld, { + _delegate: function(base, mixin){ + var bp = (base || 0).prototype, mp = (mixin || 0).prototype, dd = dojox.lang.tests.declareOld; + // fresh constructor, fresh prototype + var ctor = dd._makeCtor(); + // cache ancestry + dojo.mixin(ctor, { superclass: bp, mixin: mp, extend: dd._extend }); + // chain prototypes + if(base){ ctor.prototype = dojo._delegate(bp); } + // add mixin and core + dojo.extend(ctor, dd._core, mp || 0, { _constructor: null, preamble: null }); + // special help for IE + ctor.prototype.constructor = ctor; + // name this class for debugging + ctor.prototype.declaredClass = (bp || 0).declaredClass + '_' + (mp || 0).declaredClass; + return ctor; + }, + _extend: function(props){ + var i, fn; + for(i in props){ if(dojo.isFunction(fn=props[i]) && !0[i]){fn.nom=i;fn.ctor=this;} } + dojo.extend(this, props); + }, + _makeCtor: function(){ + // we have to make a function, but don't want to close over anything + return function(){ this._construct(arguments); }; + }, + _core: { + _construct: function(args){ + var c = args.callee, s = c.superclass, ct = s && s.constructor, + m = c.mixin, mct = m && m.constructor, a = args, ii, fn; + // side-effect of = used on purpose here, lint may complain, don't try this at home + if(a[0]){ + // FIXME: preambles for each mixin should be allowed + // FIXME: + // should we allow the preamble here NOT to modify the + // default args, but instead to act on each mixin + // independently of the class instance being constructed + // (for impedence matching)? + + // allow any first argument w/ a "preamble" property to act as a + // class preamble (not exclusive of the prototype preamble) + if(/*dojo.isFunction*/((fn = a[0].preamble))){ + a = fn.apply(this, a) || a; + } + } + // prototype preamble + if((fn = c.prototype.preamble)){ a = fn.apply(this, a) || a; } + // FIXME: + // need to provide an optional prototype-settable + // "_explicitSuper" property which disables this + // initialize superclass + if(ct && ct.apply){ ct.apply(this, a); } + // initialize mixin + if(mct && mct.apply){ mct.apply(this, a); } + // initialize self + if((ii = c.prototype._constructor)){ ii.apply(this, args); } + // post construction + if(this.constructor.prototype == c.prototype && (ct = this.postscript)){ ct.apply(this, args); } + }, + _findMixin: function(mixin){ + var c = this.constructor, p, m; + while(c){ + p = c.superclass; + m = c.mixin; + if(m == mixin || (m instanceof mixin.constructor)){ return p; } + if(m && m._findMixin && (m = m._findMixin(mixin))){ return m; } + c = p && p.constructor; + } + }, + _findMethod: function(name, method, ptype, has){ + // consciously trading readability for bytes and speed in this low-level method + var p=ptype, c, m, f; + do{ + c = p.constructor; + m = c.mixin; + // find method by name in our mixin ancestor + if(m && (m = this._findMethod(name, method, m, has))){ return m; } + // if we found a named method that either exactly-is or exactly-is-not 'method' + if((f = p[name]) && (has == (f == method))){ return p; } + // ascend chain + p = c.superclass; + }while(p); + // if we couldn't find an ancestor in our primary chain, try a mixin chain + return !has && (p = this._findMixin(ptype)) && this._findMethod(name, method, p, has); + }, + inherited: function(name, args, newArgs){ + // summary: + // Call an inherited member function of this declared class. + // + // description: + // Call an inherited member function of this declared class, allowing advanced + // manipulation of passed arguments to inherited functions. + // Explicitly cannot handle the case of intending to pass no `newArgs`, though + // hoping the use in conjuction with `dojo.hitch`. Calling an inherited + // function directly via hitch() is not supported. + // + // name: String? + // The name of the method to call. If omitted, the special `arguments` passed is + // used to determine the inherited function. All subsequent positional arguments + // are shifted left if `name` has been omitted. (eg: args becomes name) + // + // args: Object + // An `arguments` object to pass along to the inherited function. Can be in the + // `name` position if `name` has been omitted. This is a literal JavaScript `arguments` + // object, and must be passed. + // + // newArgs: Array? + // An Array of argument values to pass to the inherited function. If omitted, + // the original arguments are passed (determined from the `args` variable) + // + // example: + // Simply call an inherited function with the same signature. + // | this.inherited(arguments); + // example: + // Call an inherited method, replacing the arguments passed with "replacement" and "args" + // | this.inherited(arguments, [replacement, args]); + // example: + // Call an inherited method, passing an explicit name. + // | this.inherited("method", arguments); + // example: + // Call an inherited method by name, replacing the arguments: + // | this.inherited("method", arguments, [replacement, args]); + + var a = arguments; + // some magic crap that alters `arguments` to shift in the case of missing `name` + if(typeof a[0] != "string"){ // inline'd type check + newArgs = args; + args = name; + name = args.callee.nom; + } + a = newArgs || args; // WARNING: hitch()ed functions may pass a newArgs you aren't expecting. + var c = args.callee, p = this.constructor.prototype, fn, mp; + // if not an instance override + if(this[name] != c || p[name] == c){ + // start from memoized prototype, or + // find a prototype that has property 'name' == 'c' + mp = (c.ctor || 0).superclass || this._findMethod(name, c, p, true); + if(!mp){ throw(this.declaredClass + ': inherited method "' + name + '" mismatch'); } + // find a prototype that has property 'name' != 'c' + p = this._findMethod(name, c, mp, false); + } + // we expect 'name' to be in prototype 'p' + fn = p && p[name]; + if(!fn){ throw( mp.declaredClass + ': inherited method "' + name + '" not found'); } + // if the function exists, invoke it in our scope + return fn.apply(this, a); + } + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/docs.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/docs.js new file mode 100644 index 0000000..ab2f60c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/docs.js @@ -0,0 +1,29 @@ +dojo.provide("dojox.lang.tests.docs"); + +dojo.require("dojox.lang.docs"); +dojo.require("dijit.ColorPalette"); + +tests.register("dojox.lang.tests.docs", [ + function notReady(t){ + t.is(!dijit.ColorPalette.description, true); + }, + function pastClassHasSchema(t){ + dojox.lang.docs.init(); + t.is(!!dijit.ColorPalette.description, true); + dojox.lang.docs.init(); // make sure it can be called twice without any problems + t.is(!!dijit.ColorPalette.properties.defaultTimeout.description, true); + t.is(dijit.ColorPalette.properties.defaultTimeout.type, "number"); + t.is(dijit.ColorPalette.methods.onChange.parameters[0].type, "string"); + t.is(dijit.ColorPalette.methods.onChange.parameters[0].name, "color"); + t.is(dijit.ColorPalette["extends"], dijit._Widget); + }, + function futureClassHasSchema(t){ + dojo.require("dijit.Dialog"); + t.is(!!dijit.Dialog.description, true); + t.is(!!dijit.Dialog.properties.autofocus.description, true); + t.is(dijit.Dialog.properties.autofocus.type, "boolean"); + }, + function testSchema(t){ + + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/fold.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/fold.js new file mode 100644 index 0000000..b471704 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/fold.js @@ -0,0 +1,84 @@ +dojo.provide("dojox.lang.tests.fold"); + +dojo.require("dojox.lang.functional.fold"); +dojo.require("dojox.lang.functional.scan"); +dojo.require("dojox.lang.functional.curry"); +dojo.require("dojox.lang.functional.sequence"); +dojo.require("dojox.lang.functional.listcomp"); +dojo.require("dojox.lang.functional.object"); + +(function(){ + var df = dojox.lang.functional, a = df.arg, x = {a: 1, b: 2, c: 3}; + + var revArrayIter = function(array){ + this.array = array; + this.position = array.length - 1; + }; + dojo.extend(revArrayIter, { + hasNext: df.lambda("this.position >= 0"), + next: df.lambda("this.array[this.position--]") + }); + + tests.register("dojox.lang.tests.fold", [ + function testFoldl1(t){ t.assertEqual(df.foldl([1, 2, 3], "+", 0), 6); }, + function testFoldl2(t){ t.assertEqual(df.foldl1([1, 2, 3], "*"), 6); }, + function testFoldl3(t){ t.assertEqual(df.foldl1([1, 2, 3], "/"), 1/6); }, + function testFoldl4(t){ t.assertEqual(df.foldl1([1, 2, 3], df.partial(Math.max, a, a)), 3); }, + function testFoldl5(t){ t.assertEqual(df.foldl1([1, 2, 3], df.partial(Math.min, a, a)), 1); }, + + function testFoldlIter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.foldl(iter, "+", 0), 6); + }, + function testFoldl1Iter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.foldl1(iter, "/"), 3/2); + }, + + function testFoldlObj(t){ t.assertEqual(df.foldl(x, "*", 2), 12); }, + function testFoldl1Obj(t){ t.assertEqual(df.foldl1(x, "+"), 6); }, + + function testFoldr1(t){ t.assertEqual(df.foldr([1, 2, 3], "+", 0), 6); }, + function testFoldr2(t){ t.assertEqual(df.foldr1([1, 2, 3], "*"), 6); }, + function testFoldr3(t){ t.assertEqual(df.foldr1([1, 2, 3], "/"), 3/2); }, + function testFoldr4(t){ t.assertEqual(df.foldr1([1, 2, 3], df.partial(Math.max, a, a)), 3); }, + function testFoldr5(t){ t.assertEqual(df.foldr1([1, 2, 3], df.partial(Math.min, a, a)), 1); }, + + function testUnfold1(t){ + // simulate df.repeat() + t.assertEqual( + df.repeat(10, "2*", 1), + df.unfold("x[0] >= 10", "x[1]", "[x[0] + 1, 2 * x[1]]", [0, 1]) + ); + }, + function testUnfold2(t){ + // simulate df.until() + t.assertEqual( + df.until(">1024", "2*", 1), + df.unfold(">1024", "x", "2*", 1) + ); + }, + + function testScanl1(t){ t.assertEqual(df.scanl([1, 2, 3], "+", 0), [0, 1, 3, 6]); }, + function testScanl2(t){ t.assertEqual(df.scanl1([1, 2, 3], "*"), [1, 2, 6]); }, + function testScanl3(t){ t.assertEqual(df.scanl1([1, 2, 3], df.partial(Math.max, a, a)), [1, 2, 3]); }, + function testScanl4(t){ t.assertEqual(df.scanl1([1, 2, 3], df.partial(Math.min, a, a)), [1, 1, 1]); }, + + function testScanlIter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.scanl(iter, "+", 0), [0, 3, 5, 6]); + }, + function testScanl1Iter(t){ + var iter = new revArrayIter([1, 2, 3]); + t.assertEqual(df.scanl1(iter, "*"), [3, 6, 6]); + }, + + function testScanlObj(t){ t.assertEqual(df.scanl(x, "+", 0), df.scanl(df.values(x), "+", 0)); }, + function testScanl1Obj(t){ t.assertEqual(df.scanl1(x, "*"), df.scanl1(df.values(x), "*")); }, + + function testScanr1(t){ t.assertEqual(df.scanr([1, 2, 3], "+", 0), [6, 5, 3, 0]); }, + function testScanr2(t){ t.assertEqual(df.scanr1([1, 2, 3], "*"), [6, 6, 3]); }, + function testScanr3(t){ t.assertEqual(df.scanr1([1, 2, 3], df.partial(Math.max, a, a)), [3, 3, 3]); }, + function testScanr4(t){ t.assertEqual(df.scanr1([1, 2, 3], df.partial(Math.min, a, a)), [1, 2, 3]); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/fun_perf.html b/js/dojo-release-1.7.2-src/dojox/lang/tests/fun_perf.html new file mode 100644 index 0000000..9e1da30 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/fun_perf.html @@ -0,0 +1,178 @@ + + + Clocking fun + + + + + + + + +

                                      This test is meant to run with Firebug. Open the console to see the output.

                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/lambda.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/lambda.js new file mode 100644 index 0000000..04d44a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/lambda.js @@ -0,0 +1,20 @@ +dojo.provide("dojox.lang.tests.lambda"); + +dojo.require("dojox.lang.functional"); +dojo.require("dojox.lang.functional.sequence"); + +(function(){ + var df = dojox.lang.functional; + tests.register("dojox.lang.tests.lambda", [ + function testLambda1(t){ t.assertEqual(df.repeat(3, "3*", 1), [1, 3, 9]); }, + function testLambda2(t){ t.assertEqual(df.repeat(3, "*3", 1), [1, 3, 9]); }, + function testLambda3(t){ t.assertEqual(df.repeat(3, "_*3", 1), [1, 3, 9]); }, + function testLambda4(t){ t.assertEqual(df.repeat(3, "3*_", 1), [1, 3, 9]); }, + function testLambda5(t){ t.assertEqual(df.repeat(3, "n->n*3", 1), [1, 3, 9]); }, + function testLambda6(t){ t.assertEqual(df.repeat(3, "n*3", 1), [1, 3, 9]); }, + function testLambda7(t){ t.assertEqual(df.repeat(3, "3*m", 1), [1, 3, 9]); }, + function testLambda8(t){ t.assertEqual(df.repeat(3, "->1", 1), [1, 1, 1]); }, + function testLambda9(t){ t.assertEqual(df.repeat(3, function(n){ return n * 3; }, 1), [1, 3, 9]); }, + function testLambda10(t){ t.assertEqual(df.repeat(3, ["_-1", ["*3"]], 1), [1, 2, 5]); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/listcomp.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/listcomp.js new file mode 100644 index 0000000..a6c0ff0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/listcomp.js @@ -0,0 +1,24 @@ +dojo.provide("dojox.lang.tests.listcomp"); + +dojo.require("dojox.lang.functional.listcomp"); +dojo.require("dojox.lang.functional.sequence"); + +(function(){ + var df = dojox.lang.functional; + tests.register("dojox.lang.tests.listcomp", [ + function testIterator1(t){ t.assertEqual(df.repeat(3, function(n){ return n + 1; }, 0), [0, 1, 2]); }, + function testIterator2(t){ t.assertEqual(df.repeat(3, function(n){ return n * 3; }, 1), [1, 3, 9]); }, + function testIterator3(t){ t.assertEqual(df.until(function(n){ return n > 10; }, function(n){ return n * 3; }, 1), [1, 3, 9]); }, + + function testListcomp1(t){ t.assertEqual(df.listcomp("i for(var i=0; i<3; ++i)"), [0, 1, 2]); }, + function testListcomp2(t){ t.assertEqual(df.listcomp("i*j for(var i=0; i<3; ++i) for(var j=0; j<3; ++j)"), [0, 0, 0, 0, 1, 2, 0, 2, 4]); }, + function testListcomp3(t){ t.assertEqual(df.listcomp("i*j for(var i=0; i<3; ++i) if(i%2==1) for(var j=0; j<3; ++j)"), [0, 1, 2]); }, + function testListcomp4(t){ t.assertEqual(df.listcomp("i+j for(var i=0; i<3; ++i) for(var j=0; j<3; ++j)"), [0, 1, 2, 1, 2, 3, 2, 3, 4]); }, + function testListcomp5(t){ t.assertEqual(df.listcomp("i+j for(var i=0; i<3; ++i) if(i%2==1) for(var j=0; j<3; ++j)"), [1, 2, 3]); }, + function testListcomp6(t){ t.assertEqual(df.listcomp("i for(i=0; i<3; ++i)"), [0, 1, 2]); }, + function testListcomp7(t){ t.assertEqual(df.listcomp("i*j for(i=0; i<3; ++i) for(j=0; j<3; ++j)"), [0, 0, 0, 0, 1, 2, 0, 2, 4]); }, + function testListcomp8(t){ t.assertEqual(df.listcomp("i*j for(i=0; i<3; ++i) if(i%2==1) for(j=0; j<3; ++j)"), [0, 1, 2]); }, + function testListcomp9(t){ t.assertEqual(df.listcomp("i+j for(i=0; i<3; ++i) for(j=0; j<3; ++j)"), [0, 1, 2, 1, 2, 3, 2, 3, 4]); }, + function testListcomp10(t){ t.assertEqual(df.listcomp("i+j for(i=0; i<3; ++i) if(i%2==1) for(j=0; j<3; ++j)"), [1, 2, 3]); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/main.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/main.js new file mode 100644 index 0000000..71565aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/main.js @@ -0,0 +1,19 @@ +dojo.provide("dojox.lang.tests.main"); + +try{ + dojo.require("dojox.lang.tests.listcomp"); + dojo.require("dojox.lang.tests.lambda"); + dojo.require("dojox.lang.tests.fold"); + dojo.require("dojox.lang.tests.curry"); + dojo.require("dojox.lang.tests.misc"); + dojo.require("dojox.lang.tests.array"); + dojo.require("dojox.lang.tests.object"); + dojo.require("dojox.lang.tests.oo_mixin"); + dojo.require("dojox.lang.tests.async"); + dojo.require("dojox.lang.tests.recomb"); + dojo.require("dojox.lang.tests.observable"); + dojo.require("dojox.lang.tests.docs"); + dojo.require("dojox.lang.tests.typed"); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/misc.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/misc.js new file mode 100644 index 0000000..dfe2f58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/misc.js @@ -0,0 +1,21 @@ +dojo.provide("dojox.lang.tests.misc"); + +dojo.require("dojox.lang.functional.zip"); + +(function(){ + var df = dojox.lang.functional, fun = df.lambda("100*a + 10*b + c"); + + tests.register("dojox.lang.tests.misc", [ + function testZip1(t){ t.assertEqual(df.zip([1, 2, 3], [4, 5, 6]), [[1, 4], [2, 5], [3, 6]]); }, + function testZip2(t){ t.assertEqual(df.zip([1, 2], [3, 4], [5, 6]), [[1, 3, 5], [2, 4, 6]]); }, + + function testUnzip1(t){ t.assertEqual(df.unzip([[1, 4], [2, 5], [3, 6]]), [[1, 2, 3], [4, 5, 6]]); }, + function testUnzip2(t){ t.assertEqual(df.unzip([[1, 3, 5], [2, 4, 6]]), [[1, 2], [3, 4], [5, 6]]); }, + + function testMixer(t){ t.assertEqual(df.mixer(fun, [1, 2, 0])(3, 1, 2), 123); }, + function testFlip(t){ t.assertEqual(df.flip(fun)(3, 2, 1), 123); }, + + function testCompose1(t){ t.assertEqual(df.lambda(["+5", "*3"])(8), 8 * 3 + 5); }, + function testCompose2(t){ t.assertEqual(df.lambda(["+5", "*3"].reverse())(8), (8 + 5) * 3); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/object.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/object.js new file mode 100644 index 0000000..ad03331 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/object.js @@ -0,0 +1,18 @@ +dojo.provide("dojox.lang.tests.object"); + +dojo.require("dojox.lang.functional.object"); + +(function(){ + var df = dojox.lang.functional, x = {a: 1, b: 2, c: 3}, + print = function(v, i){ this.push("[" + i + "] = " + v); }, + show = function(o){ return df.forIn(o, print, []).sort().join(", "); }; + + tests.register("dojox.lang.tests.object", [ + function testKeys(t){ t.assertEqual(df.keys(x).sort(), ["a", "b", "c"]); }, + function testValues(t){ t.assertEqual(df.values(x).sort(), [1, 2, 3]); }, + + function testForIn(t){ t.assertEqual(show(x), "[a] = 1, [b] = 2, [c] = 3"); }, + function testFilterIn(t){ t.assertEqual(show(df.filterIn(x, "%2")), "[a] = 1, [c] = 3"); }, + function testMapIn(t){ t.assertEqual(show(df.mapIn(x, "+3")), "[a] = 4, [b] = 5, [c] = 6"); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/observable.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/observable.js new file mode 100644 index 0000000..229f1d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/observable.js @@ -0,0 +1,126 @@ +dojo.provide("dojox.lang.tests.observable"); +dojo.require("dojox.lang.observable"); + +(function(){ + tests.register("dojox.lang.tests.observable", [ + function propertyAccessMakeObservable(t){ + console.log("start"); + var testStrs = []; + var observable = new dojox.lang.makeObservable( + function(obj,i){ + testStrs.push("onRead " + i); + return obj[i]; + }, + function(obj,i,value){ + testStrs.push("onWrite " + i); + obj[i] = value; + }, + function(scope,obj,i,args){ + testStrs.push("onInvoke " + i); + return obj[i].apply(scope,args); + } + ); + var obj = {foo:"bar",test:function(){ + return this.foo; + } + }; + var newObj = observable(obj); + testStrs.push("returned " + newObj.test()); + newObj.foo = "new"; + testStrs.push(newObj.foo); + t.assertEqual("onInvoke test,onRead foo,returned bar,onWrite foo,onRead foo,new",testStrs.join(',')); + }, + function propertyAccessObservable(t){ + var testStrs = []; + var obj = {foo:"bar",test:function(){ + return this.foo; + }}; + var newObj = dojox.lang.observable(obj,function(obj,i){ + testStrs.push("onRead " + i); + return obj[i]; + },function(obj,i,value){ + testStrs.push("onWrite " + i); + obj[i] = value; + },function(scope,obj,i,args){ + testStrs.push("onInvoke " + i); + return obj[i].apply(scope,args); + } + ); + testStrs.push("returned " + newObj.test()); + newObj.foo = "new"; + testStrs.push(newObj.foo); + t.assertEqual("onInvoke test,onRead foo,returned bar,onWrite foo,onRead foo,new",testStrs.join(',')); + }, + function readonlyProxy(t){ + console.log("start"); + var testStrs = []; + var obj = {foo:"bar"}; + var newObj = dojox.lang.ReadOnlyProxy(obj); + testStrs.push(newObj.foo); + newObj.foo = "illegal"; + + testStrs.push(newObj.foo); + obj.foo = "new"; + testStrs.push(newObj.foo); + t.assertEqual("bar,bar,new",testStrs.join(',')); + }, + function perf(t){ + var getter = function(obj,i){ + return obj[i]; + }; + var observable = new dojox.lang.makeObservable( + function(obj,i){ + return obj[i]; + }, + function(obj,i,value){ + obj[i] = value; + }, + function(scope,obj,i,args){ + return obj[i].apply(scope,args); + } + ); + var obj = {foo:"bar",bar:'foo'}; + var newObj = observable(obj); + var start = new Date().getTime(); + for(var i = 0; i < 100000;i++){ // normal access + var a = obj.foo; + a = obj.bar; + } + var store = { + getValue:function(item, property,lazyCallback){ + // summary: + // Gets the value of an item's 'property' + // + // item: /* object */ + // property: /* string */ + // property to look up value for + // lazyCallback: /* function*/ + // not part of the API, but if you are using lazy loading properties, you may provide a callback to resume, in order to have asynchronous loading + var value = item[property]; + if(value instanceof dojo.Deferred){ + dojox.rpc._sync = !lazyCallback; // tell the service to operate synchronously (I have some concerns about the "thread" safety with FF3, as I think it does event stacking on sync calls) + value.addCallback(function(returned){ + value = returned; + if(lazyCallback){lazyCallback(value);} + return value; + } + ); + delete dojox.rpc._sync; // revert to normal async behavior + }else if(lazyCallback){lazyCallback(value);} + return value; + } + }; + console.log(new Date().getTime() - start); + start = new Date().getTime(); + for(i = 0; i < 100000;i++){// observed access + a = store.getValue(obj,"foo"); + a = store.getValue(obj,"bar"); + } + console.log(new Date().getTime() - start); + start = new Date().getTime(); + for(i = 0; i < 1000000;i++){ // measure the loop time itself + } + console.log(new Date().getTime() - start); + } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/oo_mixin.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/oo_mixin.js new file mode 100644 index 0000000..6278357 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/oo_mixin.js @@ -0,0 +1,26 @@ +dojo.provide("dojox.lang.tests.oo_mixin"); + +dojo.require("dojox.lang.functional.object"); +dojo.require("dojox.lang.oo.mixin"); +dojo.require("dojox.lang.oo.rearrange"); + +(function(){ + var df = dojox.lang.functional, oo = dojox.lang.oo, + x = {a: 1, b: 2, c: 3}, + y = {c: 1, d: 2, e: 3, f: 4}, + z = oo.mixin({}, oo.filter(y, {d: "a", e: "b", f: ""})), + q = dojo.clone(x), + p = dojo.clone(y), + print = function(v, i){ this.push("[" + i + "] = " + v); }, + show = function(o){ return df.forIn(o, print, []).sort().join(", "); }; + + oo.mixin(q, y); + oo.mixin(p, x); + oo.rearrange(y, {d: "a", e: "b", f: ""}); + + tests.register("dojox.lang.tests.oo_mixin", [ + function testMixin1(t){ t.assertEqual(df.keys(q).sort(), df.keys(p).sort()); }, + function testMixin2(t){ t.assertEqual(df.keys(x).sort(), df.keys(z).sort()); }, + function testRearrange(t){ t.assertEqual(df.keys(y).sort(), df.keys(z).sort()); } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/rec_perf.html b/js/dojo-release-1.7.2-src/dojox/lang/tests/rec_perf.html new file mode 100644 index 0000000..3eab63d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/rec_perf.html @@ -0,0 +1,484 @@ + + + Clocking recursion combinators + + + + + + + + + + + + +

                                      This test is meant to run with Firebug. Open the console to see the output.

                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/recomb.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/recomb.js new file mode 100644 index 0000000..241eba8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/recomb.js @@ -0,0 +1,92 @@ +dojo.provide("dojox.lang.tests.recomb"); + +dojo.require("dojox.lang.functional"); +dojo.require("dojox.lang.functional.listcomp"); + +dojo.require("dojox.lang.functional.linrec"); +dojo.require("dojox.lang.functional.numrec"); +dojo.require("dojox.lang.functional.tailrec"); +dojo.require("dojox.lang.functional.binrec"); +dojo.require("dojox.lang.functional.multirec"); + +(function(){ + var df = dojox.lang.functional, + + // define the standard factorial function to compare with + fact = function(n){ return n <= 1 ? 1 : n * fact(n - 1); }, + + // define the standard fibonacci function to compare with + fib = function(n){ return n <= 1 ? 1 : fib(n - 1) + fib(n - 2); }, + + // prepare the sequence of arguments for comparison + seq = df.listcomp("i for(i = 0; i < 15; ++i)"), + + // build a set of results for our argument list using the standard factorial function + factTable = df.map(seq, fact), + + // build a set of results for our argument list using the standard fibonacci function + fibTable = df.map(seq, fib); + + tests.register("dojox.lang.tests.recomb", [ + function testFactLinrec1(t){ + var fact = df.linrec("<= 1", "1", "[n - 1]", "a * b[0]"); + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFactLinrec2(t){ + var fact = df.linrec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[n - 1]"), df.lambda("a * b[0]")); + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFactNumrec1(t){ + var fact = df.numrec(1, "*"); + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFactNumrec2(t){ + var fact = df.numrec(1, df.lambda("*")); + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFactMultirec1(t){ + var fact = df.multirec("<= 1", "1", "[[n - 1]]", "a[0] * b[0]"); + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFactMultirec2(t){ + var fact = df.multirec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[[n - 1]]"), df.lambda("a[0] * b[0]")); + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFactTailrec1(t){ + var fact2 = df.tailrec("<= 1", "n, acc -> acc", "[n - 1, n * acc]"), + fact = function(n){ return fact2(n, 1); }; + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFactTailrec2(t){ + var fact2 = df.tailrec(df.lambda("<= 1"), df.lambda("n, acc -> acc"), df.lambda("[n - 1, n * acc]")), + fact = function(n){ return fact2(n, 1); }; + t.assertEqual(df.map(seq, fact), factTable); + }, + function testFibBinrec1(t){ + var fib = df.binrec("<= 1", "1", "[[n - 1], [n - 2]]", "+"); + t.assertEqual(df.map(seq, fib), fibTable); + }, + function testFibBinrec2(t){ + var fib = df.binrec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[[n - 1], [n - 2]]"), df.lambda("+")); + t.assertEqual(df.map(seq, fib), fibTable); + }, + function testFibTailrec1(t){ + var fib2 = df.tailrec("<= 0", "n, next, result -> result", "[n - 1, next + result, next]"), + fib = function(n){ return fib2(n, 1, 1); }; + t.assertEqual(df.map(seq, fib), fibTable); + }, + function testFibTailrec2(t){ + var fib2 = df.tailrec(df.lambda("<= 0"), df.lambda("n, next, result -> result"), df.lambda("[n - 1, next + result, next]")), + fib = function(n){ return fib2(n, 1, 1); }; + t.assertEqual(df.map(seq, fib), fibTable); + }, + function testFibMultirec1(t){ + var fib = df.multirec("<= 1", "1", "[[n - 1], [n - 2]]", "a[0] + a[1]"); + t.assertEqual(df.map(seq, fib), fibTable); + }, + function testFibMultirec2(t){ + var fib = df.multirec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[[n - 1], [n - 2]]"), df.lambda("a[0] + a[1]")); + t.assertEqual(df.map(seq, fib), fibTable); + } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/lang/tests/runTests.html new file mode 100644 index 0000000..9dab1ec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/runTests.html @@ -0,0 +1,9 @@ + + + DojoX Functional Unit Test Runner + + + +

                                      Redirecting to D.O.H runner.

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/test_aspect.html b/js/dojo-release-1.7.2-src/dojox/lang/tests/test_aspect.html new file mode 100644 index 0000000..912fc76 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/test_aspect.html @@ -0,0 +1,478 @@ + + + aspects + + + + + + + + + + + + + +

                                      This test is meant to run with Firebug. Open the console to see the output.

                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/test_oo_decl.html b/js/dojo-release-1.7.2-src/dojox/lang/tests/test_oo_decl.html new file mode 100644 index 0000000..0dbdc25 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/test_oo_decl.html @@ -0,0 +1,492 @@ + + + OO/decl + + + + + + +

                                      This test is meant to run with Firebug. Open the console to see the output.

                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/test_oo_mixin.html b/js/dojo-release-1.7.2-src/dojox/lang/tests/test_oo_mixin.html new file mode 100644 index 0000000..38a95bf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/test_oo_mixin.html @@ -0,0 +1,162 @@ + + + OO/mixin + + + + + +

                                      This test is meant to run with Firebug. Open the console to see the output.

                                      +

                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/lang/tests/typed.js b/js/dojo-release-1.7.2-src/dojox/lang/tests/typed.js new file mode 100644 index 0000000..cc50436 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/tests/typed.js @@ -0,0 +1,144 @@ +dojo.provide("dojox.lang.tests.typed"); +dojo.config.typeCheckAllClasses = true; +dojo.require("dojox.lang.typed"); +(function(){ + + dojox.lang.typed( + dojo.declare("dojox.lang.tests.TypedClass", null, { + constructor: function(makeDefaults){ + if(makeDefaults){ + this.aString = "start"; + this.self = this; + } + }, + add: function(a, b){ + return a + b; + }, + withCallback: function(callback, param){ + callback(param); + } + })); + var TypedClass = dojox.lang.tests.TypedClass; + TypedClass.properties = { + aString:String, + self: TypedClass, + anInt: {type:"integer", maximum: 100, optional: true} + }; + TypedClass.methods = { + add: { + parameters:[ + {type:"number"}, + {type:"number"} + ], + returns: {type:"string"} + }, + withCallback:{ + parameters:[ + {type:"function", parameters:[Number]} + ] + } + } + var hasGetters = {}.__defineGetter__; + if(!hasGetters){ + console.warn("This platform does not support getters, property type checking will not be tested"); + } + function mustThrow(testFunc){ + try{ + testFunc(); + }catch(e){ + return; + } + throw new Error("No exception was thrown where an exception was required"); + } + tests.register("dojox.lang.tests.typed", [ + function typedConstructor(){ + mustThrow(function(){ + typedInstance = new TypedClass(); + }); + }, + function typedProperties(t){ + typedInstance = new TypedClass(true); + t.is(typedInstance.aString, "start"); + typedInstance.aString = "hi"; + if(hasGetters){ + mustThrow(function(){ + typedInstance.aString = 44; + }); + } + typedInstance.anInt = 22; + if(hasGetters){ + mustThrow(function(){ + typedInstance.anInt = "hello"; + }); + } + if(hasGetters){ + mustThrow(function(){ + typedInstance.anInt = 44.33; + }); + } + if(hasGetters){ + mustThrow(function(){ + typedInstance.anInt = 144; + }); + } + typedInstance.self = typedInstance; + if(hasGetters){ + mustThrow(function(){ + typedInstance.self = {}; + }); + } + }, + function typedMethods(){ + typedInstance = new TypedClass(true); + mustThrow(function(){ + typedInstance.add("hi",33); + }); + mustThrow(function(){ + typedInstance.add(22,33); + }); + mustThrow(function(){ + typedInstance.withCallback(22,33); + }); + mustThrow(function(){ + typedInstance.withCallback(function(){},"hi"); + }); + TypedClass.methods.add.returns.type = "number"; + typedInstance.add(22,33); + typedInstance.withCallback(function(){},44); + + }, + function typedDeclares(){ + dojo.declare("dojox.lang.tests.AutoTypedClass", null, { + constructor: function(){ + this.foo = "bar"; + }, + subtract: function(a, b){ + return a - b; + } + }); + var AutoTypedClass = dojox.lang.tests.AutoTypedClass; + AutoTypedClass.properties = { + foo:{type:"string"} + }; + AutoTypedClass.methods = { + subtract: { + parameters:[ + {type:"number"}, + {type:"number"} + ] + } + }; + typedInstance = new AutoTypedClass(true); + if(hasGetters){ + mustThrow(function(){ + typedInstance.foo = 33; + }); + } + typedInstance.foo = "baz"; + mustThrow(function(){ + typedInstance.subtract("hi",33); + }); + typedInstance.subtract(22,33); + } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/typed.js b/js/dojo-release-1.7.2-src/dojox/lang/typed.js new file mode 100644 index 0000000..bb15851 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/typed.js @@ -0,0 +1,148 @@ +(function(){ + var jsonSchema, inDojo = typeof dojo != "undefined"; + if(inDojo){ + dojo.provide("dojox.lang.typed"); + dojo.require("dojox.json.schema"); + jsonSchema = dojox.json.schema; + }else{ + if(typeof JSONSchema == "undefined"){ + throw new Error("Dojo or JSON Schema library must be present"); + } + jsonSchema = JSONSchema; + } + function validatingFunction(func, getMethodDef){ + var validatingFunc = function(){ + var methodDef = getMethodDef(); + if(methodDef && methodDef.parameters){ + var params = methodDef.parameters; + for(var j = 0; j < params.length; j++){ + arguments[j] = validate(arguments[j], params[j], j.toString()); + } + if(methodDef.additionalParameters){ + for(;j < arguments.length; j++){ + arguments[j] = validate(arguments[j], methodDef.additionalParameters, j.toString()); + } + } + } + var returns = func.apply(this, arguments); + if(methodDef.returns){ + validate(returns, methodDef.returns); + } + return returns; + }; + validatingFunc.__typedFunction__ = true; + for(var i in func){ + validatingFunc[i] = func[i]; + } + return validatingFunc; + } + function identityFunc(obj){ + return function(){ + return obj; + } + } + function validate(instance, schema, property){ + // summary: + // This checks to ensure that the result is valid and will throw an appropriate error message if it is not + // result: the result returned from checkPropertyChange or validate + if(typeof instance == "function" && schema && !instance.__typedFunction__){ + instance = validatingFunction(instance, identityFunc(schema)); + } + var result = jsonSchema._validate(instance, schema, property); + if(!result.valid){ + var errorMessage = "" + var errors = result.errors; + for(var i = 0; i < errors.length; i++){ + errorMessage += errors[i].property + ' ' + errors[i].message + '\n'; + } + throw new TypeError(errorMessage); + } + return instance; + } + var hasGetters = jsonSchema.__defineGetter__; + var typedFunction = function(Class){ + // summary: + // Adds type checking to a class, returning a new class with typing enabled + if(Class.__typedClass__){ + // type checking has already been added + return Class; + } + var Wrapper = function(){ + var i, value, properties = Wrapper.properties; + var methods = Wrapper.methods; + Class.apply(this,arguments); + this.__props__ = {}; + for(i in methods){ + value = this[i]; + if(value){ + if(!value.__typedFunction__){ + // add typing checking to the method, going up the proto chain to find the right one + var proto = this; + while(!proto.hasOwnProperty(i) && proto.__proto__){ + proto = proto.__proto__; + } + (function(i){ + proto[i] = validatingFunction(value, function(){ + return methods[i]; + }); + })(i); + } + }else{ + (function(i){ + this[i] = function(){ + throw new TypeError("The method " + i + " is defined but not implemented"); + }; + })(i); + } + } + if(hasGetters){ + var self = this; + for(i in properties){ + // add type checking to each property + value = this[i]; + if(this.hasOwnProperty(i)){ + this.__props__[i] = value; + } + (function(i){ + delete self[i]; + self.__defineGetter__(i, function(){ + return i in this.__props__ ? this.__props__[i] : this.__proto__[i]; + }); + self.__defineSetter__(i, function(value){ + validate(value, properties[i], i); + return this.__props__[i] = value; + }); + })(i); + } + } + validate(this, Wrapper); + }; + Wrapper.prototype = Class.prototype; + for(var i in Class){ + Wrapper[i] = Class[i]; + } + if(Class.prototype.declaredClass && inDojo){ + dojo.setObject(Class.prototype.declaredClass, Wrapper); + } + Wrapper.__typedClass__ = true; + return Wrapper; + }; + if(inDojo){ + dojox.lang.typed = typedFunction; + if(dojo.config.typeCheckAllClasses){ + // This will add type checking to all classes that will be declared via dojo.declare + // (only ones to be declared in the future) + + // hook into all declared classes + var defaultDeclare = dojo.declare; + dojo.declare = function(name){ + var clazz = defaultDeclare.apply(this, arguments); + clazz = typedFunction(clazz); + return clazz; + }; + dojo.mixin(dojo.declare, defaultDeclare); + } + }else{ + typed = typedFunction; + } +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/lang/utils.js b/js/dojo-release-1.7.2-src/dojox/lang/utils.js new file mode 100644 index 0000000..56dcf7c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/lang/utils.js @@ -0,0 +1,106 @@ +define(["..", "dojo/_base/lang"], + function(dojox, lang){ + var du = lang.getObject("lang.utils", true, dojox); + + var empty = {}, opts = Object.prototype.toString; + + var clone = function(o){ + if(o){ + switch(opts.call(o)){ + case "[object Array]": + return o.slice(0); + case "[object Object]": + return lang.delegate(o); + } + } + return o; + } + + lang.mixin(du, { + coerceType: function(target, source){ + // summary: Coerces one object to the type of another. + // target: Object: object, which typeof result is used to coerce "source" object. + // source: Object: object, which will be forced to change type. + switch(typeof target){ + case "number": return Number(eval("(" + source + ")")); + case "string": return String(source); + case "boolean": return Boolean(eval("(" + source + ")")); + } + return eval("(" + source + ")"); + }, + + updateWithObject: function(target, source, conv){ + // summary: Updates an existing object in place with properties from an "source" object. + // target: Object: the "target" object to be updated + // source: Object: the "source" object, whose properties will be used to source the existed object. + // conv: Boolean?: force conversion to the original type + if(!source){ return target; } + for(var x in target){ + if(x in source && !(x in empty)){ + var t = target[x]; + if(t && typeof t == "object"){ + du.updateWithObject(t, source[x], conv); + }else{ + target[x] = conv ? du.coerceType(t, source[x]) : clone(source[x]); + } + } + } + return target; // Object + }, + + updateWithPattern: function(target, source, pattern, conv){ + // summary: Updates an existing object in place with properties from an "source" object. + // target: Object: the "target" object to be updated + // source: Object: the "source" object, whose properties will be used to source the existed object. + // pattern: Object: object, whose properties will be used to pull values from the "source" + // conv: Boolean?: force conversion to the original type + if(!source || !pattern){ return target; } + for(var x in pattern){ + if(x in source && !(x in empty)){ + target[x] = conv ? du.coerceType(pattern[x], source[x]) : clone(source[x]); + } + } + return target; // Object + }, + + merge: function(object, mixin){ + // summary: Merge two objects structurally, mixin properties will override object's properties. + // object: Object: original object. + // mixin: Object: additional object, which properties will override object's properties. + if(mixin){ + var otype = opts.call(object), mtype = opts.call(mixin), t, i, l, m; + switch(mtype){ + case "[object Array]": + if(mtype == otype){ + t = new Array(Math.max(object.length, mixin.length)); + for(i = 0, l = t.length; i < l; ++i){ + t[i] = du.merge(object[i], mixin[i]); + } + return t; + } + return mixin.slice(0); + case "[object Object]": + if(mtype == otype && object){ + t = lang.delegate(object); + for(i in mixin){ + if(i in object){ + l = object[i]; + m = mixin[i]; + if(m !== l){ + t[i] = du.merge(l, m); + } + }else{ + t[i] = lang.clone(mixin[i]); + } + } + return t; + } + return lang.clone(mixin); + } + } + return mixin; + } + }); + + return du; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/layout/BorderContainer.js b/js/dojo-release-1.7.2-src/dojox/layout/BorderContainer.js new file mode 100644 index 0000000..9f1a6a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/BorderContainer.js @@ -0,0 +1,3 @@ +dojo.provide("dojox.layout.BorderContainer"); + +console.error("dojox.layout.BorderContainer moved to dijit.layout.BorderContainer"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/layout/ContentPane.js b/js/dojo-release-1.7.2-src/dojox/layout/ContentPane.js new file mode 100755 index 0000000..3bdb1dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/ContentPane.js @@ -0,0 +1,99 @@ +define([ + "dojo/_base/lang", + "dojo/_base/xhr", + "dijit/layout/ContentPane", + "dojox/html/_base", + "dojo/_base/declare" +], function (lang, xhrUtil, ContentPane, htmlUtil, declare) { + +/*===== var ContentPane = dijit.layout.ContentPane =====*/ +return declare("dojox.layout.ContentPane", ContentPane, { + // summary: + // An extended version of dijit.layout.ContentPane. + // Supports infile scripts and external ones declared by + + + + + + +

                                      dojox.layout.ContentPane

                                      +

                                      As dojox ContentPane is derived from dijit ContentPane, make sure that the dijit test passes before running this test

                                      +

                                      Test relies on a php page as backend, so you need php installed on your server

                                      + +
                                      + Initial value +
                                      + + + + + + + + + + + + +
                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/_bottomPane.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/_bottomPane.html new file mode 100644 index 0000000..8f5090a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/_bottomPane.html @@ -0,0 +1,53 @@ +
                                      + Bottom Pane Content: + + + + +
                                      \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/_expando.css b/js/dojo-release-1.7.2-src/dojox/layout/tests/_expando.css new file mode 100644 index 0000000..93178f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/_expando.css @@ -0,0 +1,64 @@ +@import "../../../dojo/resources/dojo.css"; +@import "../../../dijit/tests/css/dijitTests.css"; + +@import "../resources/FloatingPane.css"; +@import "../resources/ExpandoPane.css"; + +body, html { + margin:0; + padding:0; + width:100%; + height:100%; + background: #fafafa; + overflow: hidden; +} +.wrap { + margin: 0; + padding: 15px; +} +.wrap h3 { + margin-top: 5px; +} +#header { + height:32px; +} +.searchBar { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 25px; + border-bottom: 1px solid #ccc; + background: #fafafa; +} +.searchBar p { + margin: 0; + padding: 2px; +} +.searchStuff { + position: absolute; + top: 25px; + margin: 0 auto; +} +.searchStuff ul { + width: auto; + margin: 0 auto; + padding: 0; +} +div.itty { + font-weight: normal; + font: 8pt Arial,sans-serif; + color:#666; + padding:5px; + padding-left:10px; +} +div.itty:hover { + color:#333; +} +.itemType { + font-style:italic; + font-size:12pt; +} +#runSearchIcon { + border:1px solid #000; +} diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/_floating.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/_floating.html new file mode 100644 index 0000000..5fe8f2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/_floating.html @@ -0,0 +1,48 @@ +
                                      +

                                      I am FloatingPane

                                      +

                                      Windows in the Browser is weird UI, but sometimes useful. Even more useful:
                                      +
                                      + +
                                      + +

                                      + (both technically unsupported) +

                                      + +
                                      \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/_lorem.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/_lorem.html new file mode 100644 index 0000000..9e7aaef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/_lorem.html @@ -0,0 +1,11 @@ +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam facilisis enim. + Pellentesque in elit et lacus euismod dignissim. Aliquam dolor pede, convallis eget, + dictum a, blandit ac, urna. Pellentesque sed nunc ut justo volutpat egestas. Class + aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. + In erat. Suspendisse potenti. Fusce faucibus nibh sed nisi. Phasellus faucibus, dui + a cursus dapibus, mauris nulla euismod velit, a lobortis turpis arcu vel dui. Pellentesque + fermentum ultrices pede. Donec auctor lectus eu arcu. Curabitur non orci eget est porta gravida. + Aliquam pretium orci id nisi. Duis faucibus, mi non adipiscing venenatis, erat urna aliquet elit, + eu fringilla lacus tellus quis erat. Nam tempus ornare lorem. Nullam feugiat. +

                                      diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/_script.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/_script.html new file mode 100644 index 0000000..64bcd0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/_script.html @@ -0,0 +1,9 @@ + +

                                      + bar baz +

                                      diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/doc0.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/doc0.html new file mode 100644 index 0000000..10fd03a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/doc0.html @@ -0,0 +1,14 @@ +

                                      Document 0

                                      +This document has a link.
                                      +(to check we're copying children around properly).
                                      +Also it's got a widget, a combo box:
                                      + +And a button too: + +Here's some text that comes AFTER the button. +Okay textbox: + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/images/blank.gif b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/blank.gif new file mode 100644 index 0000000..e565824 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/blank.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/images/dojoLogo.png b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/dojoLogo.png new file mode 100755 index 0000000..1219de7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/dojoLogo.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/images/gridUnderlay.png b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/gridUnderlay.png new file mode 100755 index 0000000..016f129 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/gridUnderlay.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/images/testImage.gif b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/testImage.gif new file mode 100644 index 0000000..4370d68 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/layout/tests/images/testImage.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/remote/getResponse.php b/js/dojo-release-1.7.2-src/dojox/layout/tests/remote/getResponse.php new file mode 100644 index 0000000..01f3d20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/remote/getResponse.php @@ -0,0 +1,108 @@ + +
                                      + + +
                                      +
                                      +
                                      +
                                      + + + + "; + break; + + case 'importCss': + header('Content-type: text/css; charset=utf-8'); + echo "#importMediaTest { + margin: 4px; + border: 1px dashed red; + width: 200px; + height: 200px; + } + #importCssTest { + margin: 4px; + border: 1px solid blue; + width: 100px; + height: 100px; + }"; + break; + + case 'linkCss': + header('Content-type: text/css; charset=utf-8'); + echo "#linkMediaTest { + margin: 4px; + border: 2px dashed red; + width: 200px; + height: 200px; + } + #linkCssTest { + margin: 4px; + border: 2px dashed red; + width: 100px; + height: 100px; + }"; + break; + + case 'importMediaPrint': // may download but not render + header('Content-type: text/css; charset=utf-8'); + echo "#importMediaTest { + margin: 10px; + border: 5px dashed gray; + width: 100px; + height: 100px; + }"; + break; + + case 'linkMediaPrint': // may download but not render + header('Content-type: text/css; charset=utf-8'); + echo "#linkMediaTest { + margin: 10px; + border: 5px dashed gray; + width: 100px; + height: 100px; + }"; + break; + + case 'remoteJsTrue': + header('Content-type: text/javascript; charset=utf-8'); + echo "unTypedVarInDocScope = true;"; + break; + + case 'remoteJsFalse': + header('Content-type: text/javascript; charset=utf-8'); + echo "unTypedVarInDocScope = false;"; + break; + + case 'bounceInput': + echo file_get_contents("php://input"); + break; + + case 'bounceHeaders'; + if(function_exists("apache_request_headers")){ + $headers = apache_request_headers(); + foreach($headers as $header => $vlu){ + echo "$header=$vlu\n
                                      "; + } + }else{ + // IIS, php as CGI etc gets here, messes formating, suboptimal + $headers = preg_grep('/HTTP_/i', array_keys($_SERVER)); + foreach($headers as $header){ + $vlu = preg_replace(array('/^HTTP_/', '/_/'), array('', '-'), $header); + echo "$vlu={$_SERVER[$header]}\n
                                      "; + } + } + break; + + default: + echo "unkown mode ".htmlspecialchars($_GET['mode']); + } + } +?> diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/resources/script_dnd.js b/js/dojo-release-1.7.2-src/dojox/layout/tests/resources/script_dnd.js new file mode 100644 index 0000000..21bcad2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/resources/script_dnd.js @@ -0,0 +1,158 @@ +dojo.addOnLoad(init); +var tabContainer, gridContainer; +function init(){ + tabContainer = dijit.byId("tb1"); + dojo.subscribe("/dnd/drop/after", "createNode"); + var adapter = dojox.mdnd.adapter.dndToDojo(); + // register tabs of tabContainer. + var dojoNode = dojo.query('.dijitTab', tabContainer.tablist.containerNode).forEach(function(node){ + adapter.register(node, tabContainer.declaredClass); + }); + adapter.register(c2.node, "targetDojo", true, "Drag Me !"); + + adapter.isAccepted = function(draggedNode, target){ + //console.log("isAccepted ::: ", draggedNode, target); + var dndType = dijit.byNode(draggedNode).get("dndType"); + switch(target.type){ + case "dijit.layout.TabContainer" : + var tabButton = dijit.byNode(target.node); + var panes = tabContainer.getChildren(); + for (var i = 0, l = panes.length; i < l; i++) { + var gc = panes[i]; + if (gc.controlButton == tabButton) { + for (var j=0; j < gc.acceptTypes.length; j++){ + if (dndType == gc.acceptTypes[j]){ + gridContainer = gc; + return true; + } + } + if (j == gc.acceptTypes.length){ + return false; + } + } + } + break; + default: + return true; + break; + + }; + }; + + dojo.subscribe("/dojox/mdnd/adapter/dndToDojo/over", null, "onOver"); + dojo.subscribe("/dojox/mdnd/adapter/dndToDojo/out", null, "onOut"); + dojo.subscribe("/dojox/mdnd/adapter/dndToDojo/drop", null, "onDrop"); + + dojo.subscribe("/dojox/mdnd/drop", null, function(){ + dojo.forEach(dojoNode, function(node){ + dojo.removeClass(node, "dndOver"); + dojo.removeClass(node, "dndOverNotAccepted"); + }); + }); + + dojo.subscribe(tabContainer.domNode.id+"-removeChild", null, "refresh"); +}; + +/** + * DojoDndAdapter functions : + * source/target dojo to D&D OAF Area + */ + +/*Function: createNode + * Create a widget with a dojo draggedNode and drop this into a D&D OAF Area. + */ +function createNode(source, nodes, copy, target, dropIndex){ + //console.log("createNode ::: ", source, nodes, copy, target, dropIndex); + if(target){ + var widget = _createWidget(nodes); + dojox.mdnd.areaManager().addDragItem(target, widget.domNode, dropIndex); + } +}; +/* + * Widget Factory : Create a Dijit Widget with the type of draggedNode. + */ +function _createWidget(/*Array*/nodes){ + var type = nodes[0].getAttribute("dndType"); + var widget; + switch (type) { + case "ContentPane": + widget = new dijit.layout.ContentPane(); + dojo.addClass(widget.domNode, 'cpane'); + widget.set('dndType','ContentPane'); + break; + case "Portlet": + widget = new dojox.widget.Portlet({ + title: "portlet", + closable : true, + dndType:"Portlet" + }); + break; + case "TitlePane": + widget = new dijit.TitlePane({ + title: "TitlePane", + dndType:"TitlePane" + }); + break; + default: + widget = new dijit.layout.ContentPane(); + dojo.addClass(widget.domNode, 'cpane'); + widget.set('dndType','ContentPane'); + break; + } + widget.set('content','Lorem ipsum dolor sit amet, consectetuer adipiscing elit.'); + widget.startup(); + return widget; +}; + +/** + * Adapter functions + */ + +/*Function: onOver + * Call when the OAF draggedNode enters in a dojo target registered by the oafDndAdapter + */ +function onOver(target, type, draggedNode, accept){ + //console.info("onOver ::: ", target, type, draggedNode); + // add the dropIndicator style for the tab of tabContainer. + switch(type){ + case "dijit.layout.TabContainer" : + if (accept){ + dojo.addClass(target, "dndOver"); + } + else{ + dojo.addClass(target, "dndOverNotAccepted"); + } + break; + } +}; + +/*Function: onOut + * Call when the OAF draggedNode exits of a dojo target registered by the oafDndAdapter + */ +function onOut(target, type, draggedNode, accept){ + //console.info("onOut ::: ", target, type, draggedNode); + // remove the dropIndicator style for the tab of tabContainer. + switch(type){ + case "dijit.layout.TabContainer" : + dojo.removeClass(target, "dndOver"); + dojo.removeClass(target, "dndOverNotAccepted"); + break; + } +}; + +function onDrop(node, target, type){ + //console.log("onDrop ::: ", node, target, type); + switch(type){ + case "dijit.layout.TabContainer" : + gridContainer.addChild(dijit.byNode(node), 0, 0); // add in first column / first element + dojo.removeClass(target, "dndOver"); + dojo.removeClass(target, "dndOverNotAccepted"); + break; + } +}; + +function refresh(){ + //console.info("refresh"); + dojox.mdnd.adapter.dndToDojo().refresh(); +}; + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/resources/set_complete_dnd.css b/js/dojo-release-1.7.2-src/dojox/layout/tests/resources/set_complete_dnd.css new file mode 100644 index 0000000..a0d5fe1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/resources/set_complete_dnd.css @@ -0,0 +1,61 @@ +html,body{ + margin:0; + padding:0; +} + +.cpane{ + border:1px solid #666; + font:bold 12px Arial; + color:#000; + background:#FFF; + padding:10px; + height:100px; +} + +.gridContainerZone > *{ + margin: 10px; +} + +.dj_ie6 .dropIndicator, .dj_ie6 .cpane, .dj_ie6 .dojoxPortlet, .dj_ie6 .cpane, .dj_ie6 .dijitTitlePane{ + margin: 10px; +} + +.container { + border:3px solid #ccc; + padding: 1em 3em; + cursor: default; + radius:8pt; + background:#fff; + -moz-border-radius:8pt 8pt; +} + +.dojoDndItem { + padding:3px; +} + +.dojoDndItemOver { + background: #ededed; + cursor:pointer; +} + +.dojoDndAvatarItem .dojoDndItemOver { + background: transparent; +} + +.dragNode{ + opacity:0.6; + filter:alpha(opacity=60); + -khtml-opacity:0.6; + -moz-opacity:0.6; +} + +.dndOver{ + color:green; + font-weight:bold; +} + +.dndOverNotAccepted{ + color:red; + font-weight:bold; + cursor:not-allowed; +} diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_DragPane.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_DragPane.html new file mode 100644 index 0000000..6b9eb6b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_DragPane.html @@ -0,0 +1,167 @@ + + + + + DragPane layout widget Test + + + + + + + + + + + + + + + + + + + + +

                                      dojox.layout.DragPane

                                      +

                                      A simple widget to drag contents around within a sized div

                                      + +

                                      Inverted dragging

                                      +
                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +
                                      + +

                                      Not inverted

                                      +
                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +

                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                      +
                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane.html new file mode 100644 index 0000000..ff83ec9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane.html @@ -0,0 +1,328 @@ + + + + dojox.layout.ExpandoPane + + + + + + + + + + + + + + + + + +
                                      + +
                                      +
                                      +
                                      + + +
                                      +
                                      +
                                      +
                                        +
                                        +
                                        +
                                          +
                                          +
                                          +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            a
                                            +
                                            +
                                            +
                                            +
                                            +
                                            +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              +
                                              +
                                              +

                                              This select modifies the left Expando's easing function. An Expando can have an easeIn and an easeOut parameter. This sets both.

                                              + +

                                              +

                                              Some easing functions break when used with width: (negative width? but how?). Be warned.

                                              +
                                              +
                                              +
                                              +
                                              +

                                              This is a BorderContainer (the window). Each of the panes is set to one of + "left", "right", or "center". The left and right panes are ExpandoPanes (they collapse). +

                                              +

                                              What does a FloatingPane look like here?

                                              +

                                              + +

                                              +

                                              the end

                                              +
                                              +
                                              +
                                              c
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              +
                                              + +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              + +
                                              Loading progress
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_code.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_code.html new file mode 100644 index 0000000..6455bb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_code.html @@ -0,0 +1,108 @@ + + + + dojox.layout.ExpandoPane + + + + + + + + + + + + + + + + +
                                              +
                                              + +
                                              + +
                                              +
                                              +
                                              pane 0 content
                                              +
                                              pane 1 content
                                              +
                                              pane 2 content
                                              +
                                              pane 3 content
                                              +
                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_more.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_more.html new file mode 100644 index 0000000..c229fd6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_more.html @@ -0,0 +1,149 @@ + + + + dojox.layout.ExpandoPane + + + + + + + + + + + + + + + + + + + + +

                                              Basic ExpandoPane tests

                                              + +

                                              Left:

                                              +
                                              +
                                              + foo +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +

                                              Right:

                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +

                                              Top (easeIn="dojo.fx.easing.bounceOut" duration="1200"):

                                              +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              Bottom:

                                              +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              Bottom/Left:

                                              +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              Top/Left/Right

                                              +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              Bottom/Left/Right + splitters

                                              +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              Same, all closed

                                              +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              Same, Leading / Trailing

                                              +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              + foo +
                                              +
                                              +
                                              + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_prog.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_prog.html new file mode 100644 index 0000000..dfc7228 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_prog.html @@ -0,0 +1,104 @@ + + + + dojox.layout.ExpandoPane + + + + + + + + + + + + + + + + + + + + + +

                                              Programatic ExpandoPane Test

                                              +
                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_splitters.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_splitters.html new file mode 100644 index 0000000..e9ae23c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ExpandoPane_splitters.html @@ -0,0 +1,52 @@ + + + + dojox.layout.ExpandoPane + + + + + + + + + + + + + + +

                                              Testing splitters on ExpandoPanes

                                              + +

                                              splitter="true":

                                              +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              splitter="false":

                                              +
                                              +
                                              + foo +
                                              +
                                              +
                                              + +

                                              Splitter not specified:

                                              +
                                              +
                                              + foo +
                                              +
                                              +
                                              + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_FloatingPane.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_FloatingPane.html new file mode 100644 index 0000000..9666131 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_FloatingPane.html @@ -0,0 +1,183 @@ + + + + dojox.layout.FloatPane - a crude non-modal Floating Window + + + + + + + + + + + + + + + + + + + + + hide first pane | + show first pane | + minimize 'uncloseable, dockable' pane pane | + new floater + +
                                              +

                                              I am the content to be floated around

                                              +
                                              + +
                                              +

                                              + I am dockable, though I have no dockTo="" attribute. I will create or use an existing dock + on the bottom of the screen. +

                                              + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc + eleifend sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                              +
                                              + +
                                              +

                                              + I am made into a FloatingPane in dojo.addOnLoad();

                                              + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                              +
                                              + +
                                              +
                                              +
                                              +

                                              + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In porta. Etiam mattis libero nec ante. Nam + porta lacus eu ligula. Cras mauris. Suspendisse vel augue. Vivamus aliquam orci ut eros. Nunc eleifend + sagittis turpis. purus purus in nibh. Phasellus in nunc. +

                                              +
                                              + + +
                                              + +

                                              + This is just a pane. You cannot close me, you cannot resize me, you cannot minimize me. I have a + select to test bleed: +

                                              + + + +
                                              + +
                                              + +
                                              + + + +
                                              +
                                              +
                                              + First Page +
                                              +
                                              +
                                              +
                                              + Story of Paul. +
                                              +
                                              + Story about Paul. +
                                              +
                                              + Story about... guess who. +
                                              +
                                              +
                                              +
                                              +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer.html new file mode 100644 index 0000000..e50ecf3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer.html @@ -0,0 +1,95 @@ + + + + + + Demo GridContainer + + + + + + + + + + + + + +

                                              Grid Container

                                              + +

                                              GridContainer (acceptTypes="ContentPane, TitlePane, ColorPalette, Calendar", hasResizableColumns="false", doLayout="false")

                                              + +
                                              Add / remove dynamically columns :
                                              + + + +
                                              +
                                              Content Pane n°1 !
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              Content Pane n°2 !
                                              +
                                              + Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria. +
                                              + +
                                              Content Pane n°3 !
                                              +
                                              Content Pane n°4 !
                                              +
                                              +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerColWidths.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerColWidths.html new file mode 100644 index 0000000..546f982 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerColWidths.html @@ -0,0 +1,162 @@ + + + + + + Testing GridContainer Column Widths + + + + + + + + + + + + + + +

                                              Grid Container

                                              + +
                                              + This pages tests setting the widths of GridContainer columns using the "colWidths" parameter. +
                                              + +

                                              Grid Container (allowAutoScroll="true", hasResizableColumns="false")

                                              + +
                                              Add / remove dynamically columns :
                                              + + + +
                                              Set the width of columns :
                                              + + + +
                                              +

                                              Testing column width where the first column has a width fixed to 40%. All other columns take up the remiaining space

                                              + +
                                              +
                                              Content Pane n°1 !
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              Content Pane n°2 !
                                              +
                                              + Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria. +
                                              + +
                                              Content Pane n°3 !
                                              +
                                              Content Pane n°4 !
                                              +
                                              +
                                              + + +

                                              Testing column width with all column widths defined, to use 40%, 40% and 20%.

                                              +
                                              +
                                              Content Pane n°1 !
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              Content Pane n°2 !
                                              +
                                              + Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria. +
                                              + +
                                              Content Pane n°3 !
                                              +
                                              Content Pane n°4 !
                                              +
                                              +
                                              +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite.html new file mode 100644 index 0000000..e51fe36 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite.html @@ -0,0 +1,122 @@ + + + + + + Demo GridContainer + + + + + + + + + + + + + + +

                                              Grid Container Lite

                                              +

                                              Accessibility

                                              +
                                                +
                                              • Possibility to move focus into the GridContainer (TAB, LEFT ARROW, RIGHT ARROW, UP ARROW, DOWN ARROW).
                                              • +
                                              • Possibility to move GridContainer's children (Drag and Drop) with keyboard. (SHIFT + LEFT ARROW or RIGHT ARROW or UP ARROW or DOWN ARROW). To test dnd restriction, try to move a TitlePane widget...
                                              • +
                                              +

                                              Grid Container (acceptTypes="ContentPane, Calendar", nbZones="3", isAutoOrganized="true", doLayout="false")

                                              + +
                                              +
                                              Content Pane n°1 !
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              Content Pane n°2 !
                                              +
                                              + Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria. +
                                              + +
                                              Content Pane n°3 !
                                              +
                                              Content Pane n°4 !
                                              +
                                              +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite_doLayout.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite_doLayout.html new file mode 100644 index 0000000..d6c45a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite_doLayout.html @@ -0,0 +1,112 @@ + + + + + GridContainerLite - doLayout + + + + + + + + + + + + +

                                              GridContainerLite - doLayout

                                              + +
                                              +

                                              doLayout = false

                                              +

                                              GridContainer has a fixed no fixed height.

                                              +
                                              +
                                              + Content Pane 1 +
                                              +
                                              + Content Pane 2 +
                                              +
                                              + Content Pane 3 +
                                              +
                                              + Content Pane 4 +
                                              +
                                              + Content Pane 5 +
                                              +
                                              + Content Pane 6 +
                                              + +
                                              +
                                              +
                                              +

                                              doLayout = true (default)

                                              +

                                              GridContainer has a fixed height.

                                              +
                                              +
                                              + Content Pane 7 +
                                              +
                                              + Content Pane 8 +
                                              +
                                              + Content Pane 9 +
                                              +
                                              + Content Pane 10 +
                                              +
                                              + Content Pane 11 +
                                              +
                                              + Content Pane 12 +
                                              +
                                              + Content Pane 13 +
                                              +
                                              + Content Pane 14 +
                                              +
                                              +
                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite_dragRestriction.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite_dragRestriction.html new file mode 100644 index 0000000..ba637df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainerLite_dragRestriction.html @@ -0,0 +1,148 @@ + + + + + GridContainerLite [acceptTypes, dragRestriction] + + + + + + + + + + + + +

                                              GridContainerLite with acceptTypes

                                              +
                                                +
                                              • Try to drag and Drop Widget !
                                              • +
                                              • Try to drag and Drop Widget with keyBoard (no drag and drop between GridContainer)
                                              • +
                                                  +
                                                • Use Tab to place focus on the GridContainer.
                                                • +
                                                • Use Arrows to place focus on children
                                                • +
                                                • Use Shift + Arrows to drag and drop a child
                                                • +
                                                +
                                              • Try to drag widgets which have an attribute dragRestriction="true". It's imposible !
                                              • +
                                              + +
                                              +

                                              AcceptTypes :

                                              +

                                              text (equal to any dndType), color, animal

                                              +
                                              +
                                              + I am a Tiger : drag Me ! +
                                              +
                                              + I have no type (text) : Drag Me ! +
                                              +
                                              + I am a color : Drag Me ! +
                                              +
                                              + I have a dragRestriction : Try to Drag Me ! +
                                              +
                                              + I am a Snake : Drag Me ! +
                                              +
                                              + I am a car : Drag Me ! +
                                              + +
                                              +
                                              +
                                              +

                                              AcceptTypes :

                                              +

                                              color, motor

                                              +
                                              +
                                              + I am a color : drag Me ! +
                                              +
                                              + I am a plane : drag Me ! +
                                              +
                                              + I am a horse : Drag Me ! +
                                              +
                                              + I am a bus : Drag Me ! +
                                              +
                                              + I am a color: Drag Me ! +
                                              +
                                              + I am a rabbit : Drag Me ! +
                                              +
                                              + I have a dragRestriction : Try to Drag Me ! +
                                              +
                                              + I am a color : Drag Me ! +
                                              +
                                              +
                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_ResizableCol.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_ResizableCol.html new file mode 100644 index 0000000..ebbc0c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_ResizableCol.html @@ -0,0 +1,93 @@ + + + + + + GridContainer - Resize Columns + + + + + + + + + + + + + + +

                                              Grid Container

                                              + +

                                              Grid Container (acceptTypes="ContentPane, TitlePane, ColorPalette, Calendar", hasResizableColumns="true")

                                              + +
                                              Add / remove dynamically columns :
                                              + + + +
                                              +
                                              Content Pane n°1 !
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              Content Pane n°2 !
                                              +
                                              + Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria. +
                                              + +
                                              Content Pane n°3 !
                                              +
                                              Content Pane n°4 !
                                              +
                                              +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_TitlePanes.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_TitlePanes.html new file mode 100644 index 0000000..a4698af --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_TitlePanes.html @@ -0,0 +1,84 @@ + + + + + + Demo GridContainer + + + + + + + + + + + + + + +

                                              Grid Container With Title Panes

                                              + +
                                              +
                                              +
                                              Title Pane 1




                                              Some more content
                                              +
                                              Title Pane 2




                                              Some more content
                                              +
                                              Title Pane 3




                                              Some more content
                                              +
                                              Title Pane 4




                                              Some more content
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_complete_solution.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_complete_solution.html new file mode 100644 index 0000000..a28b6f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_complete_solution.html @@ -0,0 +1,103 @@ + + + + + + + + Drag and Drop - Complete Solution + + + + + + + + + + + + + + + + + +
                                              +

                                              Pure Source Dojo

                                              +
                                              +
                                              ContentPane
                                              +
                                              Portlet
                                              +
                                              TitlePane
                                              +
                                              +
                                              +
                                              +

                                              Source/Target Dojo

                                              +
                                              +
                                              RSS 1
                                              +
                                              TitlePane
                                              +
                                              ContentPane
                                              +
                                              +

                                              accept :
                                              Rss, TitlePane, News

                                              +
                                              +
                                              +
                                              +
                                              + Content Pane 1!!! +
                                              +
                                              + Content Pane 2!!! +
                                              +
                                              + Source/Target OAF (drop only rss)
                                              +
                                              +
                                              News 1
                                              +
                                              News 2
                                              +
                                              News 3
                                              +
                                              RSS 2
                                              +
                                              +
                                              +
                                              + Title Pane 1!!! +
                                              +
                                              +
                                              +
                                              + Content Pane 3!!! +
                                              +
                                              + Title Pane 2!!! +
                                              +
                                              +
                                              + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_dragHandle.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_dragHandle.html new file mode 100644 index 0000000..c67605f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_dragHandle.html @@ -0,0 +1,107 @@ + + + + + + GridContainer - dragHandleClass + + + + + + + + + + + + + +

                                              Grid Container

                                              + +

                                              Specify dragHandle CSS class

                                              +

                                              dragHandleClass="dijitTitlePaneTitle"

                                              +
                                              + Rather than dragging by clicking anywhere on a widget, it is also possible to specify + particular parts of the widget that are draggable, for example a title bar. + To do this, set the 'dragHandleClass' to the CSS class on that draggable node. + Note that below, you can only drag the title panes by dragging their title bar, not the body + of the widget. +
                                              + +
                                              +
                                              Content Pane n°1 !
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              Content Pane n°2 !
                                              +
                                              Content Pane n°3 !
                                              +
                                              +
                                              + Use Bold Text:
                                              + +
                                              +
                                              +
                                              + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Nam facilisis enim. Pellentesque in elit et lacus euismod dignissim. + Aliquam dolor pede, convallis eget, dictum a, blandit ac, urna. + Pellentesque sed nunc ut justo volutpat egestas. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. + In erat. Suspendisse potenti. Fusce faucibus nibh sed nisi. Phasellus + faucibus, dui a cursus dapibus, mauris nulla euismod velit, a lobortis turpis + arcu vel dui. Pellentesque fermentum ultrices pede. Donec auctor lectus eu arcu. + Curabitur non orci eget est porta gravida. Aliquam pretium orci id nisi. Duis faucibus, + mi non adipiscing venenatis, erat urna aliquet elit, eu fringilla lacus tellus quis erat. + Nam tempus ornare lorem. Nullam feugiat. +
                                              +
                                              +
                                              Content Pane n°4 !
                                              +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_in_BorderContainer.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_in_BorderContainer.html new file mode 100644 index 0000000..36b7c84 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_in_BorderContainer.html @@ -0,0 +1,150 @@ + + + + + Demo GridContainer + + + + + + + + + + + + +
                                              + +
                                              +
                                              +
                                              + lorem ipsum +
                                              +
                                              + lorem ipsum +
                                              +
                                              + lorem ipsum +
                                              + +
                                              +
                                              + +
                                              +
                                              Content Pane n°1 !
                                              +
                                              + Non ergo erunt homines deliciis diffluentes audiendi, si quando de amicitia, quam nec usu nec ratione habent cognitam, disputabunt. Nam quis est, pro deorum fidem atque hominum! qui velit, ut neque diligat quemquam nec ipse ab ullo diligatur, circumfluere omnibus copiis atque in omnium rerum abundantia vivere? Haec enim est tyrannorum vita nimirum, in qua nulla fides, nulla caritas, nulla stabilis benevolentiae potest esse fiducia, omnia semper suspecta atque sollicita, nullus locus amicitiae. +
                                              +
                                              Content Pane n°2 !
                                              +
                                              + Intellectum est enim mihi quidem in multis, et maxime in me ipso, sed paulo ante in omnibus, cum M. Marcellum senatui reique publicae concessisti, commemoratis praesertim offensionibus, te auctoritatem huius ordinis dignitatemque rei publicae tuis vel doloribus vel suspicionibus anteferre. Ille quidem fructum omnis ante actae vitae hodierno die maximum cepit, cum summo consensu senatus, tum iudicio tuo gravissimo et maximo. Ex quo profecto intellegis quanta in dato beneficio sit laus, cum in accepto sit tanta gloria. +
                                              + +
                                              Content Pane n°3 !
                                              +
                                              Content Pane n°4 !
                                              +
                                              + +
                                              + +
                                              +
                                              + lorem ipsum +
                                              +
                                              + lorem ipsum +
                                              +
                                              + lorem ipsum +
                                              +
                                              + +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_in_BorderContainer_prog.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_in_BorderContainer_prog.html new file mode 100644 index 0000000..46c5f58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_GridContainer_in_BorderContainer_prog.html @@ -0,0 +1,231 @@ + + + + + Demo GridContainer + + + + + + + + + + + + +
                                              + Test dragging elements in the GridContainer. + Then click To Delete Me Then try to drag elements in the GridContainer again +
                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_RadioGroup.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_RadioGroup.html new file mode 100644 index 0000000..df0d2e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_RadioGroup.html @@ -0,0 +1,188 @@ + + + + + RadioGroup (Animated StackContainer) Widget Test + + + + + + + + + + + + + + + + + + + + + +

                                              dojox.layout.RadioGroup test

                                              + +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              + +
                                              + + + +
                                              + +
                                              +
                                              +

                                              1

                                              +

                                              2

                                              +

                                              3

                                              +
                                              + +
                                              +

                                              1

                                              +

                                              2

                                              +

                                              3

                                              +
                                              +
                                              + + + +
                                              + +

                                              Has no buttons (auto rotating via code)

                                              + +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ResizeHandle.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ResizeHandle.html new file mode 100644 index 0000000..feb228e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ResizeHandle.html @@ -0,0 +1,195 @@ + + + + + Resize Widget Test + + + + + + + + + +

                                              dojox.layout.ResizeHandle test

                                              + +
                                              Status Node
                                              + +

                                              Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam facilisis enim. + Pellentesque in elit et lacus euismod dignissim. Aliquam dolor pede, convallis eget, + dictum a, blandit ac, urna. Pellentesque sed nunc ut justo volutpat egestas. Class + aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. + In erat. Suspendisse potenti. Fusce faucibus nibh sed nisi. Phasellus faucibus, dui + a cursus dapibus, mauris nulla euismod velit, a lobortis turpis arcu vel dui. Pellentesque + fermentum ultrices pede. Donec auctor lectus eu arcu. Curabitur non orci eget est porta gravida. + Aliquam pretium orci id nisi. Duis faucibus, mi non adipiscing venenatis, erat urna aliquet elit, + eu fringilla lacus tellus quis erat. Nam tempus ornare lorem. Nullam feugiat.

                                              + +

                                              Sed congue. Aenean blandit sollicitudin mi. Maecenas pellentesque. Vivamus ac urna. Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia ac, vehicula laoreet, elit. Sed interdum augue sit amet quam dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec quam.

                                              + + + +
                                              This is text!
                                              +

                                              +
                                              + + + Content Pane w/a resize handle. activeResize'ing only on layout Widgets? FIXME: :) +
                                              +
                                              + +
                                              + +
                                              + + Plain div w/a resize handle. All Default settings. +
                                              +
                                              + +

                                              + +
                                              + Plain div w/a resize handle but resizeAxis="y", and activeResize="true" +
                                              +
                                              + + +
                                              + Plain div w/a resize handle but resizeAxis="x" with animated sizing. +
                                              +
                                              + +

                                              + +
                                              + Plain div w/a resize handle but resizeAxis="xy" with animated sizing (combine). +
                                              +
                                              + +

                                              + +

                                              Sed arcu magna, molestie at, fringilla in, sodales eu, elit. Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus ut elit convallis eleifend. Fusce tincidunt, justo quis tempus euismod, magna nulla viverra libero, sit amet lacinia odio diam id risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, consequat quis, varius interdum, nulla. Donec neque tortor, sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean ut eros sit amet ante pharetra interdum.

                                              + +

                                              Fusce rutrum pede eget quam. Praesent purus. Aenean at elit in sem volutpat facilisis. Nunc est augue, commodo at, pretium a, fermentum at, quam. Nam sit amet enim. Suspendisse potenti. Cras hendrerit rhoncus justo. Integer libero. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam erat volutpat. Sed adipiscing mi vel ipsum.

                                              + +
                                              + +

                                              Experimental Settings:

                                              + +
                                              +

                                              Plain div with fixed aspect and 1:1

                                              +
                                              +
                                              + +

                                              known issue: fixed aspect only works with 1:1 aspect ratio

                                              +
                                              +

                                              Plain div with fixed aspect and 4:3

                                              +
                                              +
                                              + +
                                              +

                                              Min/Max set to 25x25 and 200x200, constrainMax = true

                                              +
                                              +
                                              + +
                                              +

                                              Min/Max set to 25x25 and 200x200, constrainMax = true, fixed 1:1 aspect

                                              +
                                              +
                                              + +
                                              + +

                                              Sed aliquam, quam consectetuer condimentum bibendum, neque libero commodo metus, non consectetuer magna risus vitae eros. Pellentesque mollis augue id libero. Morbi nonummy hendrerit dui. Morbi nisi felis, fringilla ac, euismod vitae, dictum mollis, pede. Integer suscipit, est sed posuere ullamcorper, ipsum lectus interdum nunc, quis blandit erat eros hendrerit pede. Vestibulum varius, elit id mattis mattis, nulla est feugiat ante, eget vestibulum augue eros ut odio. Maecenas euismod purus quis felis. Ut hendrerit tincidunt est. Fusce euismod, nunc eu tempus tempor, purus ligula volutpat tellus, nec lacinia sapien enim id risus. Aliquam orci turpis, condimentum sed, sollicitudin vel, placerat in, purus. Proin tortor nisl, blandit quis, imperdiet quis, scelerisque at, nisl. Maecenas suscipit fringilla erat. Curabitur consequat, dui blandit suscipit dictum, felis lectus imperdiet tellus, sit amet ornare risus mauris non ipsum. Fusce a purus. Vestibulum sodales. Sed porta ultrices nibh. Vestibulum metus.

                                              + +

                                              Sed aliquam, quam consectetuer condimentum bibendum, neque libero commodo metus, non consectetuer magna risus vitae eros. Pellentesque mollis augue id libero. Morbi nonummy hendrerit dui. Morbi nisi felis, fringilla ac, euismod vitae, dictum mollis, pede. Integer suscipit, est sed posuere ullamcorper, ipsum lectus interdum nunc, quis blandit erat eros hendrerit pede. Vestibulum varius, elit id mattis mattis, nulla est feugiat ante, eget vestibulum augue eros ut odio. Maecenas euismod purus quis felis. Ut hendrerit tincidunt est. Fusce euismod, nunc eu tempus tempor, purus ligula volutpat tellus, nec lacinia sapien enim id risus. Aliquam orci turpis, condimentum sed, sollicitudin vel, placerat in, purus. Proin tortor nisl, blandit quis, imperdiet quis, scelerisque at, nisl. Maecenas suscipit fringilla erat. Curabitur consequat, dui blandit suscipit dictum, felis lectus imperdiet tellus, sit amet ornare risus mauris non ipsum. Fusce a purus. Vestibulum sodales. Sed porta ultrices nibh. Vestibulum metus.

                                              + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_RotatorContainer.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_RotatorContainer.html new file mode 100644 index 0000000..39dadc3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_RotatorContainer.html @@ -0,0 +1,99 @@ + + + + RotatorContainer layout widget Test + + + + + + + +

                                              dojox.layout.RotatorContainer

                                              + +

                                              This RotatorContainer will auto-start and cycle every 2.5 seconds through each pane and stop when it gets back to the first pane. + You can suspend the animation by hovering over the rotator, but as soon as you mouse off, it will resume.

                                              + +
                                              + +
                                              + +
                                              + + / + + +
                                              + +
                                              +

                                              Welcome!

                                              +

                                              It cycles through ContentPanes and even has transitions!

                                              +
                                              + +
                                              +

                                              This is the 2nd pane

                                              +

                                              Then next pane will be lazy loaded in 5 seconds!

                                              +
                                              + +
                                              + +
                                              +

                                              Background pictures!

                                              +

                                              You can put virtually anything here.

                                              +
                                              + +
                                              + +
                                              + +
                                              + +

                                              Remote pager without a play/pause button

                                              + +
                                              + + + / +
                                              + +

                                              Remote pager with styled buttons

                                              + +
                                              + + + + / +
                                              + +
                                              + +
                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ScrollPane.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ScrollPane.html new file mode 100644 index 0000000..964258a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ScrollPane.html @@ -0,0 +1,191 @@ + + + + + ScrollPane layout widget Test + + + + + + + + + + + + + + + + + +

                                              dojox.layout.ScrollPane

                                              + +

                                              An intuitive UI for lists of data in a confined space. supports horizontal or vertical "scrolling", but not both

                                              + +

                                              vertical:

                                              +
                                              + +
                                              +
                                                +
                                              1. testItem
                                              2. +
                                              +
                                              + +
                                              +
                                              + +
                                              +
                                                +
                                                + +
                                                + +
                                                + +

                                                horizontal

                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + +
                                                LOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUMLOREM IPSUM
                                                +
                                                + +

                                                In a BorderContainer:

                                                + +
                                                +
                                                +
                                                  +
                                                  +
                                                  boo
                                                  +
                                                  +

                                                  Foo! Seems you need explicit height on ScrollPane's in a BorderContainer. 100% seems to suffice.

                                                  +
                                                  + +
                                                  +
                                                    +
                                                    +
                                                    + +

                                                    Programatically:

                                                    + +
                                                    +
                                                      +
                                                      + +

                                                      Tabs:

                                                      + +
                                                      +
                                                      +

                                                      Lorem, ipsum Dolor + Lorem, ipsum Dolor + Lorem, ipsum Dolor + Lorem, ipsum Dolor + Lorem, ipsum Dolor +

                                                      +
                                                      +
                                                      +

                                                      Lorem, ipsum Dolor + Lorem, ipsum Dolor + Lorem, ipsum Dolor + Lorem, ipsum Dolor + Lorem, ipsum Dolor + Lorem, ipsum Dolor +

                                                      +
                                                      +
                                                      +
                                                      + not enough content to make it scroll +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ScrollPaneSingle.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ScrollPaneSingle.html new file mode 100644 index 0000000..83ba23f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ScrollPaneSingle.html @@ -0,0 +1,78 @@ + + + + + ScrollPane layout widget Test + + + + + + + + + + + + + + + + + + +
                                                      +

                                                      dojox.layout.ScrollPane

                                                      +

                                                      horizontal

                                                      +
                                                      +
                                                      +
                                                      +

                                                      Foo!

                                                      text
                                                      • bar
                                                      • bar
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_TableContainer.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_TableContainer.html new file mode 100644 index 0000000..7f6d6d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_TableContainer.html @@ -0,0 +1,353 @@ + + + + + TableContainer layout widget Test + + + + + + + + + + + + + + + + + +

                                                      dojox.layout.TableContainer

                                                      + +

                                                      + A container that lays out child widgets in a set number of columns. + Each widget can have a 'label' or 'title' attribute which can + be configured to be displayed beside or above each widget. +

                                                      +

                                                      + The TableContainer has no default styling, as the base implementation + is designed to be a simple layout mechanism. However you can style the + labels and value cells and rows very easily. This page shows how four + different styling schemes, greyLNF, greyBlueLNF, greenLNF and innerLNF + can be applied to TableContainers. +

                                                      + +

                                                      A simple single column layout, with labels in the default horizontal alignment:

                                                      + +
                                                      + +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +

                                                      A two column layout, with labels in the default horizontal alignment, with custom styling:

                                                      + + +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + +

                                                      A three column nested layout with custom styles, that you can configure using the drop down controls below:

                                                      +
                                                      + Notice the two nested TableContainers, highlighted in blue. + One has the 'spanLabel' attribute set to "true" + so that it takes up both the value cell and the label cell. + The other has the label "Nested TableContainer" set. +
                                                      +
                                                      + This table also automatically changes the number of columns based on its width, + in order to maintain a minimum cell width. Try resizing the screen to + see this in action. +
                                                      + Set the number of columns: + + Set the label layout: + + Set the custom CSS: + +
                                                      +
                                                      +
                                                      + +
                                                      + + +
                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + This is a ContentPane with a label +
                                                      +
                                                      + This is just some text that fills a couple of cells, + look at it wrap around!!!! +
                                                      +
                                                      + +
                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +

                                                      This table tests the use of the 'colspan' attribute with labels enabled

                                                      +
                                                      + + +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      colspan = 2
                                                      +
                                                      colspan = 2
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 3
                                                      +
                                                      colspan = 4 (just takes up 3)
                                                      +
                                                      + +

                                                      This table tests the use of the 'colspan' attribute with labels disabled

                                                      +
                                                      + + +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 2
                                                      +
                                                      colspan = 2
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 1
                                                      +
                                                      colspan = 3
                                                      +
                                                      colspan = 4 (just takes up 3)
                                                      +
                                                      +
                                                      + +

                                                      This is a programmatically created TableContainer

                                                      +

                                                      +
                                                      + +
                                                      + +

                                                      Test resize of the TableContainer

                                                      +

                                                      Drag the splitter to resize the TableContainer in the right/center region and confirm the column widths resize correctly to their new width

                                                      +
                                                      +
                                                      (left)
                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ToggleSplitter.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ToggleSplitter.html new file mode 100644 index 0000000..829f5f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_ToggleSplitter.html @@ -0,0 +1,76 @@ + + + + dojox.layout.ToggleSplitter Test + + + + + + + + + + + + + + + + +

                                                      dojox.layout.ToggleSplitter tests

                                                      +

                                                      Click the splitters to toggle them open/collapsed(optional)/closed. If toggleSplitterCollapsedSize is set on the content pane, the pane has the optional collapsed state. Or it only has two states.

                                                      + +
                                                      + +
                                                      + Resizable top bar with three states (open/collapsed/closed). The toggleSplitterCollapsedSize is "20px" here. +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + Main panel with a link.
                                                      + (to check we're copying children around properly).
                                                      +
                                                      +
                                                      + Initialized closed +
                                                      +
                                                      + Resizable bottom bar which background color is changed when the toggle button is clicked. +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/layout/tests/test_TouchStackContainer.html b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_TouchStackContainer.html new file mode 100644 index 0000000..5240fae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/layout/tests/test_TouchStackContainer.html @@ -0,0 +1,70 @@ + + + + Touch StackContainer Demo (EXPERIMENTAL) + + + + + + + + + + + + + + + + +

                                                      A Tale Of Two Cities

                                                      + + + + + +
                                                      +

                                                      IT WAS the best of times, it of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way -- in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only

                                                      +

                                                      There were a king with a large jaw and a queen with a plain face, on the throne of England; there were a king with a large jaw and a queen with a fair face, on the throne of France. In both countries it was clearer than crystal to the lords of the State preserves of loaves and fishes, that things in general were settled for ever.

                                                      +

                                                      It was the year of Our Lord one thousand seven hundred and seventy- five. Spiritual revelations were conceded to England at that favoured period, as at this. Mrs. Southcott had recently attained her five-and- twentieth blessed birthday, of whom a prophetic private in the Life Guards had heralded the sublime appearance by announcing that arrangements were made for the swallowing up of London and Westminster. Even the Cock-lane ghost had been laid only a round dozen of years, after rapping out its messages, as the spirits of this very year last past (supernaturally deficient in originality) rapped out theirs. Mere messages in the earthly order of events had lately come to the English Crown and People, from a congress of British subjects in America:

                                                      +
                                                      + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/main.js b/js/dojo-release-1.7.2-src/dojox/main.js new file mode 100644 index 0000000..6095f00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/main.js @@ -0,0 +1,8 @@ +define(["dojo/_base/kernel"], function(dojo) { + // module: + // dojox/main + // summary: + // The dojox package main module; dojox package is somewhat unusual in that the main module currently just provides an empty object. + + return dojo.dojox; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/math.js b/js/dojo-release-1.7.2-src/dojox/math.js new file mode 100644 index 0000000..1672c8b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math.js @@ -0,0 +1,6 @@ +// AMD-ID "dojox/math" +define(["dojo", "dojox", "dojox/math/_base"], function(dojo, dojox, math) { +dojo.getObject("math", true, dojox); + +return dojox.math; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/BigInteger-ext.js b/js/dojo-release-1.7.2-src/dojox/math/BigInteger-ext.js new file mode 100644 index 0000000..f48a304 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/BigInteger-ext.js @@ -0,0 +1,656 @@ +// AMD-ID "dojox/math/BigInteger-ext" +define(["dojo", "dojox", "dojox/math/BigInteger"], function(dojo, dojox) { + dojo.experimental("dojox.math.BigInteger-ext"); + +// Contributed under CLA by Tom Wu + +// Extended JavaScript BN functions, required for RSA private ops. + var BigInteger = dojox.math.BigInteger, + nbi = BigInteger._nbi, nbv = BigInteger._nbv, + nbits = BigInteger._nbits, + Montgomery = BigInteger._Montgomery; + + // (public) + function bnClone() { var r = nbi(); this._copyTo(r); return r; } + + // (public) return value as integer + function bnIntValue() { + if(this.s < 0) { + if(this.t == 1) return this[0]-this._DV; + else if(this.t == 0) return -1; + } + else if(this.t == 1) return this[0]; + else if(this.t == 0) return 0; + // assumes 16 < DB < 32 + return ((this[1]&((1<<(32-this._DB))-1))<>24; } + + // (public) return value as short (assumes DB>=16) + function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } + + // (protected) return x s.t. r^x < DV + function bnpChunkSize(r) { return Math.floor(Math.LN2*this._DB/Math.log(r)); } + + // (public) 0 if this == 0, 1 if this > 0 + function bnSigNum() { + if(this.s < 0) return -1; + else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; + else return 1; + } + + // (protected) convert to radix string + function bnpToRadix(b) { + if(b == null) b = 10; + if(this.signum() == 0 || b < 2 || b > 36) return "0"; + var cs = this._chunkSize(b); + var a = Math.pow(b,cs); + var d = nbv(a), y = nbi(), z = nbi(), r = ""; + this._divRemTo(d,y,z); + while(y.signum() > 0) { + r = (a+z.intValue()).toString(b).substr(1) + r; + y._divRemTo(d,y,z); + } + return z.intValue().toString(b) + r; + } + + // (protected) convert from radix string + function bnpFromRadix(s,b) { + this._fromInt(0); + if(b == null) b = 10; + var cs = this._chunkSize(b); + var d = Math.pow(b,cs), mi = false, j = 0, w = 0; + for(var i = 0; i < s.length; ++i) { + var x = intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-" && this.signum() == 0) mi = true; + continue; + } + w = b*w+x; + if(++j >= cs) { + this._dMultiply(d); + this._dAddOffset(w,0); + j = 0; + w = 0; + } + } + if(j > 0) { + this._dMultiply(Math.pow(b,j)); + this._dAddOffset(w,0); + } + if(mi) BigInteger.ZERO._subTo(this,this); + } + + // (protected) alternate constructor + function bnpFromNumber(a,b,c) { + if("number" == typeof b) { + // new BigInteger(int,int,RNG) + if(a < 2) this._fromInt(1); + else { + this._fromNumber(a,c); + if(!this.testBit(a-1)) // force MSB set + this._bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); + if(this._isEven()) this._dAddOffset(1,0); // force odd + while(!this.isProbablePrime(b)) { + this._dAddOffset(2,0); + if(this.bitLength() > a) this._subTo(BigInteger.ONE.shiftLeft(a-1),this); + } + } + } + else { + // new BigInteger(int,RNG) + var x = [], t = a&7; + x.length = (a>>3)+1; + b.nextBytes(x); + if(t > 0) x[0] &= ((1< 0) { + if(p < this._DB && (d = this[i]>>p) != (this.s&this._DM)>>p) + r[k++] = d|(this.s<<(this._DB-p)); + while(i >= 0) { + if(p < 8) { + d = (this[i]&((1<>(p+=this._DB-8); + } + else { + d = (this[i]>>(p-=8))&0xff; + if(p <= 0) { p += this._DB; --i; } + } + if((d&0x80) != 0) d |= -256; + if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; + if(k > 0 || d != this.s) r[k++] = d; + } + } + return r; + } + + function bnEquals(a) { return(this.compareTo(a)==0); } + function bnMin(a) { return(this.compareTo(a)<0)?this:a; } + function bnMax(a) { return(this.compareTo(a)>0)?this:a; } + + // (protected) r = this op a (bitwise) + function bnpBitwiseTo(a,op,r) { + var i, f, m = Math.min(a.t,this.t); + for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); + if(a.t < this.t) { + f = a.s&this._DM; + for(i = m; i < this.t; ++i) r[i] = op(this[i],f); + r.t = this.t; + } + else { + f = this.s&this._DM; + for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); + r.t = a.t; + } + r.s = op(this.s,a.s); + r._clamp(); + } + + // (public) this & a + function op_and(x,y) { return x&y; } + function bnAnd(a) { var r = nbi(); this._bitwiseTo(a,op_and,r); return r; } + + // (public) this | a + function op_or(x,y) { return x|y; } + function bnOr(a) { var r = nbi(); this._bitwiseTo(a,op_or,r); return r; } + + // (public) this ^ a + function op_xor(x,y) { return x^y; } + function bnXor(a) { var r = nbi(); this._bitwiseTo(a,op_xor,r); return r; } + + // (public) this & ~a + function op_andnot(x,y) { return x&~y; } + function bnAndNot(a) { var r = nbi(); this._bitwiseTo(a,op_andnot,r); return r; } + + // (public) ~this + function bnNot() { + var r = nbi(); + for(var i = 0; i < this.t; ++i) r[i] = this._DM&~this[i]; + r.t = this.t; + r.s = ~this.s; + return r; + } + + // (public) this << n + function bnShiftLeft(n) { + var r = nbi(); + if(n < 0) this._rShiftTo(-n,r); else this._lShiftTo(n,r); + return r; + } + + // (public) this >> n + function bnShiftRight(n) { + var r = nbi(); + if(n < 0) this._lShiftTo(-n,r); else this._rShiftTo(n,r); + return r; + } + + // return index of lowest 1-bit in x, x < 2^31 + function lbit(x) { + if(x == 0) return -1; + var r = 0; + if((x&0xffff) == 0) { x >>= 16; r += 16; } + if((x&0xff) == 0) { x >>= 8; r += 8; } + if((x&0xf) == 0) { x >>= 4; r += 4; } + if((x&3) == 0) { x >>= 2; r += 2; } + if((x&1) == 0) ++r; + return r; + } + + // (public) returns index of lowest 1-bit (or -1 if none) + function bnGetLowestSetBit() { + for(var i = 0; i < this.t; ++i) + if(this[i] != 0) return i*this._DB+lbit(this[i]); + if(this.s < 0) return this.t*this._DB; + return -1; + } + + // return number of 1 bits in x + function cbit(x) { + var r = 0; + while(x != 0) { x &= x-1; ++r; } + return r; + } + + // (public) return number of set bits + function bnBitCount() { + var r = 0, x = this.s&this._DM; + for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); + return r; + } + + // (public) true iff nth bit is set + function bnTestBit(n) { + var j = Math.floor(n/this._DB); + if(j >= this.t) return(this.s!=0); + return((this[j]&(1<<(n%this._DB)))!=0); + } + + // (protected) this op (1<>= this._DB; + } + if(a.t < this.t) { + c += a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this._DM; + c >>= this._DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c += a[i]; + r[i++] = c&this._DM; + c >>= this._DB; + } + c += a.s; + } + r.s = (c<0)?-1:0; + if(c > 0) r[i++] = c; + else if(c < -1) r[i++] = this._DV+c; + r.t = i; + r._clamp(); + } + + // (public) this + a + function bnAdd(a) { var r = nbi(); this._addTo(a,r); return r; } + + // (public) this - a + function bnSubtract(a) { var r = nbi(); this._subTo(a,r); return r; } + + // (public) this * a + function bnMultiply(a) { var r = nbi(); this._multiplyTo(a,r); return r; } + + // (public) this / a + function bnDivide(a) { var r = nbi(); this._divRemTo(a,r,null); return r; } + + // (public) this % a + function bnRemainder(a) { var r = nbi(); this._divRemTo(a,null,r); return r; } + + // (public) [this/a,this%a] + function bnDivideAndRemainder(a) { + var q = nbi(), r = nbi(); + this._divRemTo(a,q,r); + return [q, r]; + } + + // (protected) this *= n, this >= 0, 1 < n < DV + function bnpDMultiply(n) { + this[this.t] = this.am(0,n-1,this,0,0,this.t); + ++this.t; + this._clamp(); + } + + // (protected) this += n << w words, this >= 0 + function bnpDAddOffset(n,w) { + while(this.t <= w) this[this.t++] = 0; + this[w] += n; + while(this[w] >= this._DV) { + this[w] -= this._DV; + if(++w >= this.t) this[this.t++] = 0; + ++this[w]; + } + } + + // A "null" reducer + function NullExp() {} + function nNop(x) { return x; } + function nMulTo(x,y,r) { x._multiplyTo(y,r); } + function nSqrTo(x,r) { x._squareTo(r); } + + NullExp.prototype.convert = nNop; + NullExp.prototype.revert = nNop; + NullExp.prototype.mulTo = nMulTo; + NullExp.prototype.sqrTo = nSqrTo; + + // (public) this^e + function bnPow(e) { return this._exp(e,new NullExp()); } + + // (protected) r = lower n words of "this * a", a.t <= n + // "this" should be the larger one if appropriate. + function bnpMultiplyLowerTo(a,n,r) { + var i = Math.min(this.t+a.t,n); + r.s = 0; // assumes a,this >= 0 + r.t = i; + while(i > 0) r[--i] = 0; + var j; + for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); + for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); + r._clamp(); + } + + // (protected) r = "this * a" without lower n words, n > 0 + // "this" should be the larger one if appropriate. + function bnpMultiplyUpperTo(a,n,r) { + --n; + var i = r.t = this.t+a.t-n; + r.s = 0; // assumes a,this >= 0 + while(--i >= 0) r[i] = 0; + for(i = Math.max(n-this.t,0); i < a.t; ++i) + r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); + r._clamp(); + r._drShiftTo(1,r); + } + + // Barrett modular reduction + function Barrett(m) { + // setup Barrett + this.r2 = nbi(); + this.q3 = nbi(); + BigInteger.ONE._dlShiftTo(2*m.t,this.r2); + this.mu = this.r2.divide(m); + this.m = m; + } + + function barrettConvert(x) { + if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); + else if(x.compareTo(this.m) < 0) return x; + else { var r = nbi(); x._copyTo(r); this.reduce(r); return r; } + } + + function barrettRevert(x) { return x; } + + // x = x mod m (HAC 14.42) + function barrettReduce(x) { + x._drShiftTo(this.m.t-1,this.r2); + if(x.t > this.m.t+1) { x.t = this.m.t+1; x._clamp(); } + this.mu._multiplyUpperTo(this.r2,this.m.t+1,this.q3); + this.m._multiplyLowerTo(this.q3,this.m.t+1,this.r2); + while(x.compareTo(this.r2) < 0) x._dAddOffset(1,this.m.t+1); + x._subTo(this.r2,x); + while(x.compareTo(this.m) >= 0) x._subTo(this.m,x); + } + + // r = x^2 mod m; x != r + function barrettSqrTo(x,r) { x._squareTo(r); this.reduce(r); } + + // r = x*y mod m; x,y != r + function barrettMulTo(x,y,r) { x._multiplyTo(y,r); this.reduce(r); } + + Barrett.prototype.convert = barrettConvert; + Barrett.prototype.revert = barrettRevert; + Barrett.prototype.reduce = barrettReduce; + Barrett.prototype.mulTo = barrettMulTo; + Barrett.prototype.sqrTo = barrettSqrTo; + + // (public) this^e % m (HAC 14.85) + function bnModPow(e,m) { + var i = e.bitLength(), k, r = nbv(1), z; + if(i <= 0) return r; + else if(i < 18) k = 1; + else if(i < 48) k = 3; + else if(i < 144) k = 4; + else if(i < 768) k = 5; + else k = 6; + if(i < 8) + z = new Classic(m); + else if(m._isEven()) + z = new Barrett(m); + else + z = new Montgomery(m); + + // precomputation + var g = [], n = 3, k1 = k-1, km = (1< 1) { + var g2 = nbi(); + z.sqrTo(g[1],g2); + while(n <= km) { + g[n] = nbi(); + z.mulTo(g2,g[n-2],g[n]); + n += 2; + } + } + + var j = e.t-1, w, is1 = true, r2 = nbi(), t; + i = nbits(e[j])-1; + while(j >= 0) { + if(i >= k1) w = (e[j]>>(i-k1))&km; + else { + w = (e[j]&((1<<(i+1))-1))<<(k1-i); + if(j > 0) w |= e[j-1]>>(this._DB+i-k1); + } + + n = k; + while((w&1) == 0) { w >>= 1; --n; } + if((i -= n) < 0) { i += this._DB; --j; } + if(is1) { // ret == 1, don't bother squaring or multiplying it + g[w]._copyTo(r); + is1 = false; + } + else { + while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } + if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } + z.mulTo(r2,g[w],r); + } + + while(j >= 0 && (e[j]&(1< 0) { + x._rShiftTo(g,x); + y._rShiftTo(g,y); + } + while(x.signum() > 0) { + if((i = x.getLowestSetBit()) > 0) x._rShiftTo(i,x); + if((i = y.getLowestSetBit()) > 0) y._rShiftTo(i,y); + if(x.compareTo(y) >= 0) { + x._subTo(y,x); + x._rShiftTo(1,x); + } + else { + y._subTo(x,y); + y._rShiftTo(1,y); + } + } + if(g > 0) y._lShiftTo(g,y); + return y; + } + + // (protected) this % n, n < 2^26 + function bnpModInt(n) { + if(n <= 0) return 0; + var d = this._DV%n, r = (this.s<0)?n-1:0; + if(this.t > 0) + if(d == 0) r = this[0]%n; + else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; + return r; + } + + // (public) 1/this % m (HAC 14.61) + function bnModInverse(m) { + var ac = m._isEven(); + if((this._isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; + var u = m.clone(), v = this.clone(); + var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); + while(u.signum() != 0) { + while(u._isEven()) { + u._rShiftTo(1,u); + if(ac) { + if(!a._isEven() || !b._isEven()) { a._addTo(this,a); b._subTo(m,b); } + a._rShiftTo(1,a); + } + else if(!b._isEven()) b._subTo(m,b); + b._rShiftTo(1,b); + } + while(v._isEven()) { + v._rShiftTo(1,v); + if(ac) { + if(!c._isEven() || !d._isEven()) { c._addTo(this,c); d._subTo(m,d); } + c._rShiftTo(1,c); + } + else if(!d._isEven()) d._subTo(m,d); + d._rShiftTo(1,d); + } + if(u.compareTo(v) >= 0) { + u._subTo(v,u); + if(ac) a._subTo(c,a); + b._subTo(d,b); + } + else { + v._subTo(u,v); + if(ac) c._subTo(a,c); + d._subTo(b,d); + } + } + if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; + if(d.compareTo(m) >= 0) return d.subtract(m); + if(d.signum() < 0) d._addTo(m,d); else return d; + if(d.signum() < 0) return d.add(m); else return d; + } + + var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509]; + var lplim = (1<<26)/lowprimes[lowprimes.length-1]; + + // (public) test primality with certainty >= 1-.5^t + function bnIsProbablePrime(t) { + var i, x = this.abs(); + if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { + for(i = 0; i < lowprimes.length; ++i) + if(x[0] == lowprimes[i]) return true; + return false; + } + if(x._isEven()) return false; + i = 1; + while(i < lowprimes.length) { + var m = lowprimes[i], j = i+1; + while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; + m = x._modInt(m); + while(i < j) if(m%lowprimes[i++] == 0) return false; + } + return x._millerRabin(t); + } + + // (protected) true if probably prime (HAC 4.24, Miller-Rabin) + function bnpMillerRabin(t) { + var n1 = this.subtract(BigInteger.ONE); + var k = n1.getLowestSetBit(); + if(k <= 0) return false; + var r = n1.shiftRight(k); + t = (t+1)>>1; + if(t > lowprimes.length) t = lowprimes.length; + var a = nbi(); + for(var i = 0; i < t; ++i) { + a._fromInt(lowprimes[i]); + var y = a.modPow(r,this); + if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { + var j = 1; + while(j++ < k && y.compareTo(n1) != 0) { + y = y.modPowInt(2,this); + if(y.compareTo(BigInteger.ONE) == 0) return false; + } + if(y.compareTo(n1) != 0) return false; + } + } + return true; + } + + dojo.extend(BigInteger, { + // protected + _chunkSize: bnpChunkSize, + _toRadix: bnpToRadix, + _fromRadix: bnpFromRadix, + _fromNumber: bnpFromNumber, + _bitwiseTo: bnpBitwiseTo, + _changeBit: bnpChangeBit, + _addTo: bnpAddTo, + _dMultiply: bnpDMultiply, + _dAddOffset: bnpDAddOffset, + _multiplyLowerTo: bnpMultiplyLowerTo, + _multiplyUpperTo: bnpMultiplyUpperTo, + _modInt: bnpModInt, + _millerRabin: bnpMillerRabin, + + // public + clone: bnClone, + intValue: bnIntValue, + byteValue: bnByteValue, + shortValue: bnShortValue, + signum: bnSigNum, + toByteArray: bnToByteArray, + equals: bnEquals, + min: bnMin, + max: bnMax, + and: bnAnd, + or: bnOr, + xor: bnXor, + andNot: bnAndNot, + not: bnNot, + shiftLeft: bnShiftLeft, + shiftRight: bnShiftRight, + getLowestSetBit: bnGetLowestSetBit, + bitCount: bnBitCount, + testBit: bnTestBit, + setBit: bnSetBit, + clearBit: bnClearBit, + flipBit: bnFlipBit, + add: bnAdd, + subtract: bnSubtract, + multiply: bnMultiply, + divide: bnDivide, + remainder: bnRemainder, + divideAndRemainder: bnDivideAndRemainder, + modPow: bnModPow, + modInverse: bnModInverse, + pow: bnPow, + gcd: bnGCD, + isProbablePrime: bnIsProbablePrime + }); + + // BigInteger interfaces not implemented in jsbn: + + // BigInteger(int signum, byte[] magnitude) + // double doubleValue() + // float floatValue() + // int hashCode() + // long longValue() + // static BigInteger valueOf(long val) + + return dojox.math.BigInteger; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/BigInteger.js b/js/dojo-release-1.7.2-src/dojox/math/BigInteger.js new file mode 100644 index 0000000..545fd8b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/BigInteger.js @@ -0,0 +1,589 @@ +// AMD-ID "dojox/math/BigInteger" +define(["dojo", "dojox"], function(dojo, dojox) { + + dojo.getObject("math.BigInteger", true, dojox); + dojo.experimental("dojox.math.BigInteger"); + +// Contributed under CLA by Tom Wu +// See http://www-cs-students.stanford.edu/~tjw/jsbn/ for details. + +// Basic JavaScript BN library - subset useful for RSA encryption. +// The API for dojox.math.BigInteger closely resembles that of the java.math.BigInteger class in Java. + + // Bits per digit + var dbits; + + // JavaScript engine analysis + var canary = 0xdeadbeefcafe; + var j_lm = ((canary&0xffffff)==0xefcafe); + + // (public) Constructor + function BigInteger(a,b,c) { + if(a != null) + if("number" == typeof a) this._fromNumber(a,b,c); + else if(!b && "string" != typeof a) this._fromString(a,256); + else this._fromString(a,b); + } + + // return new, unset BigInteger + function nbi() { return new BigInteger(null); } + + // am: Compute w_j += (x*this_i), propagate carries, + // c is initial carry, returns final carry. + // c < 3*dvalue, x < 2*dvalue, this_i < dvalue + // We need to select the fastest one that works in this environment. + + // am1: use a single mult and divide to get the high bits, + // max digit bits should be 26 because + // max internal value = 2*dvalue^2-2*dvalue (< 2^53) + function am1(i,x,w,j,c,n) { + while(--n >= 0) { + var v = x*this[i++]+w[j]+c; + c = Math.floor(v/0x4000000); + w[j++] = v&0x3ffffff; + } + return c; + } + // am2 avoids a big mult-and-extract completely. + // Max digit bits should be <= 30 because we do bitwise ops + // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) + function am2(i,x,w,j,c,n) { + var xl = x&0x7fff, xh = x>>15; + while(--n >= 0) { + var l = this[i]&0x7fff; + var h = this[i++]>>15; + var m = xh*l+h*xl; + l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); + c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); + w[j++] = l&0x3fffffff; + } + return c; + } + // Alternately, set max digit bits to 28 since some + // browsers slow down when dealing with 32-bit numbers. + function am3(i,x,w,j,c,n) { + var xl = x&0x3fff, xh = x>>14; + while(--n >= 0) { + var l = this[i]&0x3fff; + var h = this[i++]>>14; + var m = xh*l+h*xl; + l = xl*l+((m&0x3fff)<<14)+w[j]+c; + c = (l>>28)+(m>>14)+xh*h; + w[j++] = l&0xfffffff; + } + return c; + } + if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) { + BigInteger.prototype.am = am2; + dbits = 30; + } + else if(j_lm && (navigator.appName != "Netscape")) { + BigInteger.prototype.am = am1; + dbits = 26; + } + else { // Mozilla/Netscape seems to prefer am3 + BigInteger.prototype.am = am3; + dbits = 28; + } + + var BI_FP = 52; + + // Digit conversions + var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"; + var BI_RC = []; + var rr,vv; + rr = "0".charCodeAt(0); + for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv; + rr = "a".charCodeAt(0); + for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv; + rr = "A".charCodeAt(0); + for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv; + + function int2char(n) { return BI_RM.charAt(n); } + function intAt(s,i) { + var c = BI_RC[s.charCodeAt(i)]; + return (c==null)?-1:c; + } + + // (protected) copy this to r + function bnpCopyTo(r) { + for(var i = this.t-1; i >= 0; --i) r[i] = this[i]; + r.t = this.t; + r.s = this.s; + } + + // (protected) set from integer value x, -DV <= x < DV + function bnpFromInt(x) { + this.t = 1; + this.s = (x<0)?-1:0; + if(x > 0) this[0] = x; + else if(x < -1) this[0] = x+_DV; + else this.t = 0; + } + + // return bigint initialized to value + function nbv(i) { var r = nbi(); r._fromInt(i); return r; } + + // (protected) set from string and radix + function bnpFromString(s,b) { + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 256) k = 8; // byte array + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else { this.fromRadix(s,b); return; } + this.t = 0; + this.s = 0; + var i = s.length, mi = false, sh = 0; + while(--i >= 0) { + var x = (k==8)?s[i]&0xff:intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-") mi = true; + continue; + } + mi = false; + if(sh == 0) + this[this.t++] = x; + else if(sh+k > this._DB) { + this[this.t-1] |= (x&((1<<(this._DB-sh))-1))<>(this._DB-sh)); + } + else + this[this.t-1] |= x<= this._DB) sh -= this._DB; + } + if(k == 8 && (s[0]&0x80) != 0) { + this.s = -1; + if(sh > 0) this[this.t-1] |= ((1<<(this._DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; + } + + // (public) return string representation in given radix + function bnToString(b) { + if(this.s < 0) return "-"+this.negate().toString(b); + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else return this._toRadix(b); + var km = (1< 0) { + if(p < this._DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } + while(i >= 0) { + if(p < k) { + d = (this[i]&((1<>(p+=this._DB-k); + } + else { + d = (this[i]>>(p-=k))&km; + if(p <= 0) { p += this._DB; --i; } + } + if(d > 0) m = true; + if(m) r += int2char(d); + } + } + return m?r:"0"; + } + + // (public) -this + function bnNegate() { var r = nbi(); BigInteger.ZERO._subTo(this,r); return r; } + + // (public) |this| + function bnAbs() { return (this.s<0)?this.negate():this; } + + // (public) return + if this > a, - if this < a, 0 if equal + function bnCompareTo(a) { + var r = this.s-a.s; + if(r) return r; + var i = this.t; + r = i-a.t; + if(r) return r; + while(--i >= 0) if((r = this[i] - a[i])) return r; + return 0; + } + + // returns bit length of the integer x + function nbits(x) { + var r = 1, t; + if((t=x>>>16)) { x = t; r += 16; } + if((t=x>>8)) { x = t; r += 8; } + if((t=x>>4)) { x = t; r += 4; } + if((t=x>>2)) { x = t; r += 2; } + if((t=x>>1)) { x = t; r += 1; } + return r; + } + + // (public) return the number of bits in "this" + function bnBitLength() { + if(this.t <= 0) return 0; + return this._DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this._DM)); + } + + // (protected) r = this << n*DB + function bnpDLShiftTo(n,r) { + var i; + for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; + for(i = n-1; i >= 0; --i) r[i] = 0; + r.t = this.t+n; + r.s = this.s; + } + + // (protected) r = this >> n*DB + function bnpDRShiftTo(n,r) { + for(var i = n; i < this.t; ++i) r[i-n] = this[i]; + r.t = Math.max(this.t-n,0); + r.s = this.s; + } + + // (protected) r = this << n + function bnpLShiftTo(n,r) { + var bs = n%this._DB; + var cbs = this._DB-bs; + var bm = (1<= 0; --i) { + r[i+ds+1] = (this[i]>>cbs)|c; + c = (this[i]&bm)<= 0; --i) r[i] = 0; + r[ds] = c; + r.t = this.t+ds+1; + r.s = this.s; + r._clamp(); + } + + // (protected) r = this >> n + function bnpRShiftTo(n,r) { + r.s = this.s; + var ds = Math.floor(n/this._DB); + if(ds >= this.t) { r.t = 0; return; } + var bs = n%this._DB; + var cbs = this._DB-bs; + var bm = (1<>bs; + for(var i = ds+1; i < this.t; ++i) { + r[i-ds-1] |= (this[i]&bm)<>bs; + } + if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this._DB; + } + if(a.t < this.t) { + c -= a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this._DM; + c >>= this._DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c -= a[i]; + r[i++] = c&this._DM; + c >>= this._DB; + } + c -= a.s; + } + r.s = (c<0)?-1:0; + if(c < -1) r[i++] = this._DV+c; + else if(c > 0) r[i++] = c; + r.t = i; + r._clamp(); + } + + // (protected) r = this * a, r != this,a (HAC 14.12) + // "this" should be the larger one if appropriate. + function bnpMultiplyTo(a,r) { + var x = this.abs(), y = a.abs(); + var i = x.t; + r.t = i+y.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); + r.s = 0; + r._clamp(); + if(this.s != a.s) BigInteger.ZERO._subTo(r,r); + } + + // (protected) r = this^2, r != this (HAC 14.16) + function bnpSquareTo(r) { + var x = this.abs(); + var i = r.t = 2*x.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < x.t-1; ++i) { + var c = x.am(i,x[i],r,2*i,0,1); + if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x._DV) { + r[i+x.t] -= x._DV; + r[i+x.t+1] = 1; + } + } + if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); + r.s = 0; + r._clamp(); + } + + // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) + // r != q, this != m. q or r may be null. + function bnpDivRemTo(m,q,r) { + var pm = m.abs(); + if(pm.t <= 0) return; + var pt = this.abs(); + if(pt.t < pm.t) { + if(q != null) q._fromInt(0); + if(r != null) this._copyTo(r); + return; + } + if(r == null) r = nbi(); + var y = nbi(), ts = this.s, ms = m.s; + var nsh = this._DB-nbits(pm[pm.t-1]); // normalize modulus + if(nsh > 0) { pm._lShiftTo(nsh,y); pt._lShiftTo(nsh,r); } + else { pm._copyTo(y); pt._copyTo(r); } + var ys = y.t; + var y0 = y[ys-1]; + if(y0 == 0) return; + var yt = y0*(1<1)?y[ys-2]>>this._F2:0); + var d1 = this._FV/yt, d2 = (1<= 0) { + r[r.t++] = 1; + r._subTo(t,r); + } + BigInteger.ONE._dlShiftTo(ys,t); + t._subTo(y,y); // "negative" y so we can replace sub with am later + while(y.t < ys) y[y.t++] = 0; + while(--j >= 0) { + // Estimate quotient digit + var qd = (r[--i]==y0)?this._DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); + if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out + y._dlShiftTo(j,t); + r._subTo(t,r); + while(r[i] < --qd) r._subTo(t,r); + } + } + if(q != null) { + r._drShiftTo(ys,q); + if(ts != ms) BigInteger.ZERO._subTo(q,q); + } + r.t = ys; + r._clamp(); + if(nsh > 0) r._rShiftTo(nsh,r); // Denormalize remainder + if(ts < 0) BigInteger.ZERO._subTo(r,r); + } + + // (public) this mod a + function bnMod(a) { + var r = nbi(); + this.abs()._divRemTo(a,null,r); + if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a._subTo(r,r); + return r; + } + + // Modular reduction using "classic" algorithm + function Classic(m) { this.m = m; } + function cConvert(x) { + if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); + else return x; + } + function cRevert(x) { return x; } + function cReduce(x) { x._divRemTo(this.m,null,x); } + function cMulTo(x,y,r) { x._multiplyTo(y,r); this.reduce(r); } + function cSqrTo(x,r) { x._squareTo(r); this.reduce(r); } + + dojo.extend(Classic, { + convert: cConvert, + revert: cRevert, + reduce: cReduce, + mulTo: cMulTo, + sqrTo: cSqrTo + }); + + // (protected) return "-1/this % 2^DB"; useful for Mont. reduction + // justification: + // xy == 1 (mod m) + // xy = 1+km + // xy(2-xy) = (1+km)(1-km) + // x[y(2-xy)] = 1-k^2m^2 + // x[y(2-xy)] == 1 (mod m^2) + // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 + // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. + // JS multiply "overflows" differently from C/C++, so care is needed here. + function bnpInvDigit() { + if(this.t < 1) return 0; + var x = this[0]; + if((x&1) == 0) return 0; + var y = x&3; // y == 1/x mod 2^2 + y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 + y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 + y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 + // last step - calculate inverse mod DV directly; + // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints + y = (y*(2-x*y%this._DV))%this._DV; // y == 1/x mod 2^dbits + // we really want the negative inverse, and -DV < y < DV + return (y>0)?this._DV-y:-y; + } + + // Montgomery reduction + function Montgomery(m) { + this.m = m; + this.mp = m._invDigit(); + this.mpl = this.mp&0x7fff; + this.mph = this.mp>>15; + this.um = (1<<(m._DB-15))-1; + this.mt2 = 2*m.t; + } + + // xR mod m + function montConvert(x) { + var r = nbi(); + x.abs()._dlShiftTo(this.m.t,r); + r._divRemTo(this.m,null,r); + if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m._subTo(r,r); + return r; + } + + // x/R mod m + function montRevert(x) { + var r = nbi(); + x._copyTo(r); + this.reduce(r); + return r; + } + + // x = x/R mod m (HAC 14.32) + function montReduce(x) { + while(x.t <= this.mt2) // pad x so am has enough room later + x[x.t++] = 0; + for(var i = 0; i < this.m.t; ++i) { + // faster way of calculating u0 = x[i]*mp mod DV + var j = x[i]&0x7fff; + var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x._DM; + // use am to combine the multiply-shift-add into one call + j = i+this.m.t; + x[j] += this.m.am(0,u0,x,i,0,this.m.t); + // propagate carry + while(x[j] >= x._DV) { x[j] -= x._DV; x[++j]++; } + } + x._clamp(); + x._drShiftTo(this.m.t,x); + if(x.compareTo(this.m) >= 0) x._subTo(this.m,x); + } + + // r = "x^2/R mod m"; x != r + function montSqrTo(x,r) { x._squareTo(r); this.reduce(r); } + + // r = "xy/R mod m"; x,y != r + function montMulTo(x,y,r) { x._multiplyTo(y,r); this.reduce(r); } + + dojo.extend(Montgomery, { + convert: montConvert, + revert: montRevert, + reduce: montReduce, + mulTo: montMulTo, + sqrTo: montSqrTo + }); + + // (protected) true iff this is even + function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } + + // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) + function bnpExp(e,z) { + if(e > 0xffffffff || e < 1) return BigInteger.ONE; + var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; + g._copyTo(r); + while(--i >= 0) { + z.sqrTo(r,r2); + if((e&(1< 0) z.mulTo(r2,g,r); + else { var t = r; r = r2; r2 = t; } + } + return z.revert(r); + } + + // (public) this^e % m, 0 <= e < 2^32 + function bnModPowInt(e,m) { + var z; + if(e < 256 || m._isEven()) z = new Classic(m); else z = new Montgomery(m); + return this._exp(e,z); + } + + dojo.extend(BigInteger, { + // protected, not part of the official API + _DB: dbits, + _DM: (1 << dbits) - 1, + _DV: 1 << dbits, + + _FV: Math.pow(2, BI_FP), + _F1: BI_FP - dbits, + _F2: 2 * dbits-BI_FP, + + // protected + _copyTo: bnpCopyTo, + _fromInt: bnpFromInt, + _fromString: bnpFromString, + _clamp: bnpClamp, + _dlShiftTo: bnpDLShiftTo, + _drShiftTo: bnpDRShiftTo, + _lShiftTo: bnpLShiftTo, + _rShiftTo: bnpRShiftTo, + _subTo: bnpSubTo, + _multiplyTo: bnpMultiplyTo, + _squareTo: bnpSquareTo, + _divRemTo: bnpDivRemTo, + _invDigit: bnpInvDigit, + _isEven: bnpIsEven, + _exp: bnpExp, + + // public + toString: bnToString, + negate: bnNegate, + abs: bnAbs, + compareTo: bnCompareTo, + bitLength: bnBitLength, + mod: bnMod, + modPowInt: bnModPowInt + }); + + dojo._mixin(BigInteger, { + // "constants" + ZERO: nbv(0), + ONE: nbv(1), + + // internal functions + _nbi: nbi, + _nbv: nbv, + _nbits: nbits, + + // internal classes + _Montgomery: Montgomery + }); + + // export to DojoX + dojox.math.BigInteger = BigInteger; + + return dojox.math.BigInteger; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/README b/js/dojo-release-1.7.2-src/dojox/math/README new file mode 100644 index 0000000..27d29ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/README @@ -0,0 +1,40 @@ +------------------------------------------------------------------------------- +DojoX Math +------------------------------------------------------------------------------- +Version 0.9 +Release date: 10/20/2007 +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Cal Henderson + Dan Pupius + Tom Trenka (ttrenka AT gmail.com) + Eugene Lazutkin (eugene.lazutkin AT gmail.com) +------------------------------------------------------------------------------- +Project description + +A port of the main functionality of dojo.math 0.4. Includes advanced math +functions, abstract curve definitions, and some point calculations. + +------------------------------------------------------------------------------- +Dependencies: + +Depends on the Dojo Core, v1.0 +------------------------------------------------------------------------------- +Documentation + +See the API documentation. +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/src/dojox/trunk/math.js +http://svn.dojotoolkit.org/src/dojox/trunk/math/* + +Install into the following directory structure: +/dojox/math/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/math/_base.js b/js/dojo-release-1.7.2-src/dojox/math/_base.js new file mode 100644 index 0000000..bdc9222 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/_base.js @@ -0,0 +1,162 @@ +// AMD-ID "dojox/math/_base" +define(["dojo", "dojox"], function(dojo, dojox) { + dojo.getObject("math", true, dojox); + + var m = dojox.math; + dojo.mixin(dojox.math, { + toRadians: function(/* Number */n){ + // summary: + // Convert the passed number to radians. + return (n*Math.PI)/180; // Number + }, + toDegrees: function(/* Number */n){ + // summary: + // Convert the passed number to degrees. + return (n*180)/Math.PI; // Number + }, + degreesToRadians: function(/* Number */n){ + // summary: + // Deprecated. Use dojox.math.toRadians. + return m.toRadians(n); // Number + }, + radiansToDegrees: function(/* Number */n){ + // summary: + // Deprecated. Use dojox.math.toDegrees. + return m.toDegrees(n); // Number + }, + + _gamma: function(z){ + // summary: + // Compute the gamma function for the passed number. + // Approximately 14 dijits of precision with non-integers. + var answer = 1; // 0! + // gamma(n+1) = n * gamma(n) + while (--z >= 1){ + answer *= z; + } + if(z == 0){ return answer; } // normal integer quick return + if(Math.floor(z) == z){ return NaN; } // undefined at nonpositive integers since sin() below will return 0 + // assert: z < 1, remember this z is really z-1 + if(z == -0.5){ return Math.sqrt(Math.PI); } // popular gamma(1/2) + if(z < -0.5){ // remember this z is really z-1 + return Math.PI / (Math.sin(Math.PI * (z + 1)) * this._gamma(-z)); // reflection + } + // assert: -0.5 < z < 1 + // Spouge approximation algorithm + var a = 13; + // c[0] = sqrt(2*PI) / exp(a) + // var kfact = 1 + // for (var k=1; k < a; k++){ + // c[k] = pow(-k + a, k - 0.5) * exp(-k) / kfact + // kfact *= -k // (-1)^(k-1) * (k-1)! + // } + var c = [ // precomputed from the above algorithm + 5.6658056015186327e-6, + 1.2743717663379679, + -4.9374199093155115, + 7.8720267032485961, + -6.6760503749436087, + 3.2525298444485167, + -9.1852521441026269e-1, + 1.4474022977730785e-1, + -1.1627561382389853e-2, + 4.0117980757066622e-4, + -4.2652458386405744e-6, + 6.6651913290336086e-9, + -1.5392547381874824e-13 + ]; + var sum = c[0]; + for (var k=1; k < a; k++){ + sum += c[k] / (z + k); + } + return answer * Math.pow(z + a, z + 0.5) / Math.exp(z) * sum; + }, + + factorial: function(/* Number */n){ + // summary: + // Return the factorial of n + return this._gamma(n+1); // Number + }, + + permutations: function(/* Number */n, /* Number */k){ + // summary: + // TODO + if(n==0 || k==0){ + return 1; // Number + } + return this.factorial(n) / this.factorial(n-k); + }, + + combinations: function(/* Number */n, /* Number */r){ + // summary: + // TODO + if(n==0 || r==0){ + return 1; // Number + } + return this.factorial(n) / (this.factorial(n-r) * this.factorial(r)); // Number + }, + + bernstein: function(/* Number */t, /* Number */n, /* Number */ i){ + // summary: + // TODO + return this.combinations(n, i) * Math.pow(t, i) * Math.pow(1-t, n-i); // Number + }, + + gaussian: function(){ + // summary: + // Return a random number based on the Gaussian algo. + var k=2; + do{ + var i=2*Math.random()-1; + var j=2*Math.random()-1; + k = i*i+j*j; + }while(k>=1); + return i * Math.sqrt((-2*Math.log(k))/k); // Number + }, + + // create a range of numbers + range: function(/* Number */a, /* Number? */b, /* Number? */step){ + // summary: + // Create a range of numbers based on the parameters. + if(arguments.length<2){ + b=a,a=0; + } + var range=[], s=step||1, i; + if(s>0){ + for(i=a; ib; i+=s){ + range.push(i); + } + }else{ + throw new Error("dojox.math.range: step must not be zero."); + } + } + return range; // Array + }, + + distance: function(/* Array */a, /* Array */b){ + // summary: + // Calculate the distance between point A and point B + return Math.sqrt(Math.pow(b[0]-a[0],2)+Math.pow(b[1]-a[1],2)); // Number + }, + + midpoint: function(/* Array */a, /* Array */b){ + // summary: + // Calculate the midpoint between points A and B. A and B may be multidimensional. + if(a.length!=b.length){ + console.error("dojox.math.midpoint: Points A and B are not the same dimensionally.", a, b); + } + var m=[]; + for(var i=0; i= 1) { + return this.p[this.p.length - 1]; + } + if (step <= 0) { + return this.p[0]; + } + var retVal = new Array(this.p[0].length); + for (var k = 0; j < this.p[0].length; k++) { + retVal[k] = 0; + } + for (var j = 0; j < this.p[0].length; j++) { + var C = 0; + var D = 0; + for (var i = 0; i < this.p.length; i++) { + C += this.p[i][j] * this.p[this.p.length - 1][0] * dojox.math.bernstein(step, this.p.length, i); + } + for (var l = 0; l < this.p.length; l++) { + D += this.p[this.p.length - 1][0] * dojox.math.bernstein(step, this.p.length, l); + } + retVal[j] = C / D; + } + return retVal; + }; + this.p = pnts; + return this; + }, + CatmullRom:function (pnts, c) { + this.getValue = function (step) { + var percent = step * (this.p.length - 1); + var node = Math.floor(percent); + var progress = percent - node; + var i0 = node - 1; + if (i0 < 0) { + i0 = 0; + } + var i = node; + var i1 = node + 1; + if (i1 >= this.p.length) { + i1 = this.p.length - 1; + } + var i2 = node + 2; + if (i2 >= this.p.length) { + i2 = this.p.length - 1; + } + var u = progress; + var u2 = progress * progress; + var u3 = progress * progress * progress; + var retVal = new Array(this.p[0].length); + for (var k = 0; k < this.p[0].length; k++) { + var x1 = (-this.c * this.p[i0][k]) + ((2 - this.c) * this.p[i][k]) + ((this.c - 2) * this.p[i1][k]) + (this.c * this.p[i2][k]); + var x2 = (2 * this.c * this.p[i0][k]) + ((this.c - 3) * this.p[i][k]) + ((3 - 2 * this.c) * this.p[i1][k]) + (-this.c * this.p[i2][k]); + var x3 = (-this.c * this.p[i0][k]) + (this.c * this.p[i1][k]); + var x4 = this.p[i][k]; + retVal[k] = x1 * u3 + x2 * u2 + x3 * u + x4; + } + return retVal; + }; + if (!c) { + this.c = 0.7; + } else { + this.c = c; + } + this.p = pnts; + return this; + }, + Arc:function (start, end, ccw){ + function translate(a,b){ + var c=new Array(a.length); + for(var i=0; i= r[0] && n < r[1]) { + var subN = (n - r[0]) / r[2]; + value = curves[i].getValue(subN); + found = true; + break; + } + } + if (!found) { + value = curves[curves.length - 1].getValue(1); + } + for (var j = 0; j < i; j++) { + value = dojox.math.points.translate(value, curves[j].getValue(1)); + } + return value; + }; + function computeRanges() { + var start = 0; + for (var i = 0; i < weights.length; i++) { + var end = start + weights[i] / totalWeight; + var len = end - start; + ranges[i] = [start, end, len]; + start = end; + } + } + return this; + } +}); + +return dojox.math.curves; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/matrix.js b/js/dojo-release-1.7.2-src/dojox/math/matrix.js new file mode 100644 index 0000000..f4beed1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/matrix.js @@ -0,0 +1,295 @@ +// AMD-ID "dojox/math/matrix" +define(["dojo", "dojox"], function(dojo, dojox) { +dojo.getObject("math.matrix", true, dojox); + +dojo.mixin(dojox.math.matrix, { + iDF:0, + ALMOST_ZERO: 1e-10, + multiply: function(/* Array */a, /* Array */b){ + // summary + // Multiply matrix a by matrix b. + var ay=a.length, ax=a[0].length, by=b.length, bx=b[0].length; + if(ax!=by){ + console.warn("Can't multiply matricies of sizes " + ax + "," + ay + " and " + bx + "," + by); + return [[0]]; + } + var c=[]; + for (var k=0; k-1){ + b+="."; + } + while(b.length0?a[0].length:0; + var buffer=""; + for(var y=0; y>> 8; + p[i++] = t & 255; + } + this.seedTime(); + + if(!noEvents){ + this.h = [ + dojo.connect(dojo.body(), "onclick", this, "seedTime"), + dojo.connect(dojo.body(), "onkeypress", this, "seedTime") + ]; + } + }, + + destroy: function(){ + // summary: + // Disconnects events, if any, preparing the object for GC. + if(this.h){ + dojo.forEach(this.h, dojo.disconnect); + } + }, + + nextBytes: function(/* Array */ byteArray){ + // summary: + // Fills in an array of bytes with random numbers + // byteArray: Array: + // array to be filled in with random numbers, only existing + // elements will be filled. + + var state = this.state; + + if(!state){ + this.seedTime(); + state = this.state = this.prng(); + state.init(this.pool); + for(var p = this.pool, i = 0, len = p.length; i < len; p[i++] = 0); + this.pptr = 0; + //this.pool = null; + } + + for(var i = 0, len = byteArray.length; i < len; ++i){ + byteArray[i] = state.next(); + } + }, + + seedTime: function() { + // summary: + // Mix in the current time (w/milliseconds) into the pool + this._seed_int(new Date().getTime()); + }, + + _seed_int: function(x) { + // summary: + // Mix in a 32-bit integer into the pool + var p = this.pool, i = this.pptr; + p[i++] ^= x & 255; + p[i++] ^= (x >> 8) & 255; + p[i++] ^= (x >> 16) & 255; + p[i++] ^= (x >> 24) & 255; + if(i >= this.prng.size){ + i -= this.prng.size; + } + this.pptr = i; + } +}); + +return dojox.math.random.Secure; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/random/Simple.js b/js/dojo-release-1.7.2-src/dojox/math/random/Simple.js new file mode 100644 index 0000000..c8324d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/random/Simple.js @@ -0,0 +1,24 @@ +define(["dojo"], function(dojo) { + + return dojo.declare("dojox.math.random.Simple", null, { + // summary: + // Super simple implementation of a random number generator, + // which relies on Math.random(). + + destroy: function(){ + // summary: + // Prepares the object for GC. (empty in this case) + }, + + nextBytes: function(/* Array */ byteArray){ + // summary: + // Fills in an array of bytes with random numbers + // byteArray: Array: + // array to be filled in with random numbers, only existing + // elements will be filled. + for(var i = 0, l = byteArray.length; i < l; ++i){ + byteArray[i] = Math.floor(256 * Math.random()); + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/random/prng4.js b/js/dojo-release-1.7.2-src/dojox/math/random/prng4.js new file mode 100644 index 0000000..ebb47c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/random/prng4.js @@ -0,0 +1,59 @@ +// AMD-ID "dojox/math/random/prng4" +define(["dojo", "dojox"], function(dojo, dojox) { + + dojo.getObject("math.random.prng4", true, dojox); + +// Copyright (c) 2005 Tom Wu +// All Rights Reserved. +// See "LICENSE-BigInteger" for details. + + // prng4.js - uses Arcfour as a PRNG + + function Arcfour() { + this.i = 0; + this.j = 0; + this.S = new Array(256); + } + + dojo.extend(Arcfour, { + init: function(key){ + // summary: + // Initialize arcfour context + // key: Array: + // an array of ints, each from [0..255] + var i, j, t, S = this.S, len = key.length; + for(i = 0; i < 256; ++i){ + S[i] = i; + } + j = 0; + for(i = 0; i < 256; ++i){ + j = (j + S[i] + key[i % len]) & 255; + t = S[i]; + S[i] = S[j]; + S[j] = t; + } + this.i = 0; + this.j = 0; + }, + + next: function(){ + var t, i, j, S = this.S; + this.i = i = (this.i + 1) & 255; + this.j = j = (this.j + S[i]) & 255; + t = S[i]; + S[i] = S[j]; + S[j] = t; + return S[(t + S[i]) & 255]; + } + }); + + dojox.math.random.prng4 = function(){ + return new Arcfour(); + }; + + // Pool size must be a multiple of 4 and greater than 32. + // An array of bytes the size of the pool will be passed to init() + dojox.math.random.prng4.size = 256; + + return dojox.math.random.prng4; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/round.js b/js/dojo-release-1.7.2-src/dojox/math/round.js new file mode 100644 index 0000000..fced6ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/round.js @@ -0,0 +1,65 @@ +// AMD-ID "dojox/math/round" +define(["dojo", "dojox"], function(dojo, dojox) { + + dojo.getObject("math.round", true, dojox); + dojo.experimental("dojox.math.round"); + + dojox.math.round = function(/*Number*/value, /*Number?*/places, /*Number?*/increment){ + // summary: + // Similar to dojo.number.round, but compensates for binary floating point artifacts + // description: + // Rounds to the nearest value with the given number of decimal places, away from zero if equal, + // similar to Number.toFixed(). Rounding can be done by fractional increments also. + // Makes minor adjustments to accommodate for precision errors due to binary floating point representation + // of Javascript Numbers. See http://speleotrove.com/decimal/decifaq.html for more information. + // Because of this adjustment, the rounding may not be mathematically correct for full precision + // floating point values. The calculations assume 14 significant figures, so the accuracy will + // be limited to a certain number of decimal places preserved will vary with the magnitude of + // the input. This is not a substitute for decimal arithmetic. + // value: + // The number to round + // places: + // The number of decimal places where rounding takes place. Defaults to 0 for whole rounding. + // Must be non-negative. + // increment: + // Rounds next place to nearest value of increment/10. 10 by default. + // example: + // >>> 4.8-(1.1+2.2) + // 1.4999999999999996 + // >>> Math.round(4.8-(1.1+2.2)) + // 1 + // >>> dojox.math.round(4.8-(1.1+2.2)) + // 2 + // >>> ((4.8-(1.1+2.2))/100) + // 0.014999999999999996 + // >>> ((4.8-(1.1+2.2))/100).toFixed(2) + // "0.01" + // >>> dojox.math.round((4.8-(1.1+2.2))/100,2) + // 0.02 + // >>> dojox.math.round(10.71, 0, 2.5) + // 10.75 + // >>> dojo.number.round(162.295, 2) + // 162.29 + // >>> dojox.math.round(162.295, 2) + // 162.3 + var wholeFigs = Math.log(Math.abs(value))/Math.log(10); + var factor = 10 / (increment || 10); + var delta = Math.pow(10, -15 + wholeFigs); + return (factor * (+value + (value > 0 ? delta : -delta))).toFixed(places) / factor; // Number + } + + if((0.9).toFixed() == 0){ + // (isIE) toFixed() bug workaround: Rounding fails on IE when most significant digit + // is just after the rounding place and is >=5 + var round = dojox.math.round; + dojox.math.round = function(v, p, m){ + var d = Math.pow(10, -p || 0), a = Math.abs(v); + if(!v || a >= d || a * Math.pow(10, p + 1) < 5){ + d = 0; + } + return round(v, p, m) + (v > 0 ? d : -d); + } + } + + return dojox.math.round; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/stats.js b/js/dojo-release-1.7.2-src/dojox/math/stats.js new file mode 100644 index 0000000..fec0313 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/stats.js @@ -0,0 +1,194 @@ +// AMD-ID "dojox/math/stats" +define(["dojo", "../main"], function(dojo, dojox) { + + dojo.getObject("math.stats", true, dojox); + + var st = dojox.math.stats; + dojo.mixin(st, { + sd: function(/* Number[] */a){ + // summary: + // Returns the standard deviation of the passed arguments. + return Math.sqrt(st.variance(a)); // Number + }, + + variance: function(/* Number[] */a){ + // summary: + // Find the variance in the passed array of numbers. + var mean=0, squares=0; + dojo.forEach(a, function(item){ + mean+=item; + squares+=Math.pow(item,2); + }); + return (squares/a.length)-Math.pow(mean/a.length, 2); // Number + }, + + bestFit: function(/* Object[] || Number[] */a, /* String? */xProp, /* String? */yProp){ + // summary: + // Calculate the slope and intercept in a linear fashion. An array + // of objects is expected; optionally you can pass in the property + // names for "x" and "y", else x/y is used as the default. If you + // pass an array of numbers, it will be mapped to a set of {x,y} objects + // where x = the array index. + xProp = xProp || "x", yProp = yProp || "y"; + if(a[0] !== undefined && typeof(a[0]) == "number"){ + // this is an array of numbers, so use the index as x. + a = dojo.map(a, function(item, idx){ + return { x: idx, y: item }; + }); + } + + var sx = 0, sy = 0, sxx = 0, syy = 0, sxy = 0, stt = 0, sts = 0, n = a.length, t; + for(var i=0; i= a.length){ return a[a.length - 1]; } + return a[f] * (t - p) + a[t] * (p - f); // Number + }, + + summary: function(a, alreadySorted){ + // summary: + // Returns a non-parametric collection of summary statistics: + // the classic five-number summary extended to the Bowley's + // seven-figure summary. + // a: Number[]: + // a numeric array to be appraised. + // alreadySorted: Boolean?: + // a Boolean flag to indicated that the array is already sorted. + // This is an optional flag purely to improve the performance. + // If skipped, the array will be assumed unsorted. + // returns: Object + if(!alreadySorted){ + a = a.slice(0); // copy the array + a.sort(function(a, b){ return a - b; }); // sort it properly + } + var l = st.approxLin, + result = { + // the five-number summary + min: a[0], // minimum + p25: l(a, 0.25), // lower quartile + med: l(a, 0.5), // median + p75: l(a, 0.75), // upper quartile + max: a[a.length - 1], // maximum + // extended to the Bowley's seven-figure summary + p10: l(a, 0.1), // first decile + p90: l(a, 0.9) // last decile + }; + return result; // Object + } + }); + + return dojox.math.stats; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/math/tests/BigInteger.js b/js/dojo-release-1.7.2-src/dojox/math/tests/BigInteger.js new file mode 100644 index 0000000..29c61f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/tests/BigInteger.js @@ -0,0 +1,14 @@ +dojo.provide("dojox.math.tests.BigInteger"); + +dojo.require("dojox.math.BigInteger"); + +tests.register("dojox.math.tests.BigInteger", + [ + function sanity_check(t){ + var x = new dojox.math.BigInteger("abcd1234", 16), + y = new dojox.math.BigInteger("beef", 16), + z = x.mod(y); + t.is("b60c", z.toString(16)); + } + ] +); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/math/tests/main.js b/js/dojo-release-1.7.2-src/dojox/math/tests/main.js new file mode 100644 index 0000000..a353e03 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/tests/main.js @@ -0,0 +1,12 @@ +dojo.provide("dojox.math.tests.main"); + +try{ + // functional block + dojo.require("dojox.math.tests.math"); + dojo.require("dojox.math.tests.stats"); + dojo.require("dojox.math.tests.round"); + dojo.require("dojox.math.tests.BigInteger"); + dojo.require("dojox.math.tests.random"); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/math/tests/math.js b/js/dojo-release-1.7.2-src/dojox/math/tests/math.js new file mode 100644 index 0000000..53c95dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/tests/math.js @@ -0,0 +1,29 @@ +dojo.provide("dojox.math.tests.math"); + +dojo.require("dojox.math"); + +(function(){ + function approx(r){ + return Math.floor(r * (1 << 30)) / (1 << 30); + } + tests.register("dojox.math.tests.factorial", [ + // standard integer values + function fact0(t){ t.assertEqual(1, dojox.math.factorial(0)); }, + function fact1(t){ t.assertEqual(1, dojox.math.factorial(1)); }, + function fact2(t){ t.assertEqual(2, dojox.math.factorial(2)); }, + function fact5(t){ t.assertEqual(120, dojox.math.factorial(5)); }, + // almost integer + function fact5minus(t){ t.assertEqual(approx(119.999804750496600), approx(dojox.math.factorial(5-1/1048576))); }, + function fact5plus(t){ t.assertEqual(approx(120.000195249840876), approx(dojox.math.factorial(5+1/1048576))); }, + // geometric values + function factNeg1half(t){ t.assertEqual(Math.sqrt(Math.PI), dojox.math.factorial(-0.5)); }, + function factPos1half(t){ t.assertEqual(approx(Math.sqrt(Math.PI)/2), approx(dojox.math.factorial(0.5))); }, + function factNeg3halves(t){ t.assertEqual(approx(-Math.sqrt(Math.PI)*2), approx(dojox.math.factorial(-1.5))); }, + function factNeg5halves(t){ t.assertEqual(approx(Math.sqrt(Math.PI)*4/3), approx(dojox.math.factorial(-2.5))); }, + function factPos5halves(t){ t.assertEqual(approx(Math.sqrt(Math.PI)*15/8), approx(dojox.math.factorial(2.5))); }, + // invalid values + function factNeg1(t){ t.assertEqual(NaN, dojox.math.factorial(-1)); }, + function factNeg2(t){ t.assertEqual(NaN, dojox.math.factorial(-2)); } + ]); + +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/math/tests/random.js b/js/dojo-release-1.7.2-src/dojox/math/tests/random.js new file mode 100644 index 0000000..23f104c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/tests/random.js @@ -0,0 +1,24 @@ +dojo.provide("dojox.math.tests.random"); + +dojo.require("dojox.math.random.Simple"); +dojo.require("dojox.math.random.Secure"); +dojo.require("dojox.math.random.prng4"); + +tests.register("dojox.math.tests.random", + [ + function sanity_check_Simple(t){ + var r = new dojox.math.random.Simple(), + a = new Array(256); + r.nextBytes(a); + t.f(dojo.every(a, function(x){ return x === a[0]; })); + r.destroy(); + }, + function sanity_check_Secure(t){ + var r = new dojox.math.random.Secure(dojox.math.random.prng4), + a = new Array(256); + r.nextBytes(a); + t.f(dojo.every(a, function(x){ return x === a[0]; })); + r.destroy(); + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/math/tests/round.js b/js/dojo-release-1.7.2-src/dojox/math/tests/round.js new file mode 100644 index 0000000..44b2115 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/tests/round.js @@ -0,0 +1,142 @@ +dojo.provide("dojox.math.tests.round"); +dojo.require("dojox.math.round"); + +tests.register("dojox.math.tests.round", + [ + { + name: "round", + runTest: function(t){ + t.is(0, dojox.math.round(0)); + t.is(1, dojox.math.round(0.5)); + t.is(-1, dojox.math.round(-0.5)); + t.is(0.1, dojox.math.round(0.05, 1)); + t.is(-0.1, dojox.math.round(-0.05, 1)); + t.is(1.1, dojox.math.round(1.05, 1)); + t.is(-1.1, dojox.math.round(-1.05, 1)); + t.is(-162.3, dojox.math.round(-162.295, 2)); + t.is(162.3, dojox.math.round(162.295, 2)); + } + }, + { + name: "round_multiple", + runTest: function(t){ + t.is("123.455", dojox.math.round(123.4525, 2, 5)); + t.is("123.45", dojox.math.round(123.452, 2, 5)); + t.is("123.455", dojox.math.round(123.454, 2, 5)); + t.is("123.455", dojox.math.round(123.456, 2, 5)); + t.is("-123.45", dojox.math.round(-123.452, 2, 5)); + t.is("-123.455", dojox.math.round(-123.4525, 2, 5)); + t.is("-123.455", dojox.math.round(-123.454, 2, 5)); + t.is("-123.455", dojox.math.round(-123.456, 2, 5)); + } + }, + { + name: "round_speleotrove", + runTest: function(t){ + // submitted Mike Cowlishaw (IBM, CCLA), see http://speleotrove.com/decimal/#testcases + t.is(12345, dojox.math.round(12345 + -0.1), "radx200"); + t.is(12345, dojox.math.round(12345 + -0.01), "radx201"); + t.is(12345, dojox.math.round(12345 + -0.001), "radx202"); + t.is(12345, dojox.math.round(12345 + -0.00001), "radx203"); + t.is(12345, dojox.math.round(12345 + -0.000001), "radx204"); + t.is(12345, dojox.math.round(12345 + -0.0000001), "radx205"); + t.is(12345, dojox.math.round(12345 + 0), "radx206"); + t.is(12345, dojox.math.round(12345 + 0.0000001), "radx207"); + t.is(12345, dojox.math.round(12345 + 0.000001), "radx208"); + t.is(12345, dojox.math.round(12345 + 0.00001), "radx209"); + t.is(12345, dojox.math.round(12345 + 0.0001), "radx210"); + t.is(12345, dojox.math.round(12345 + 0.001), "radx211"); + t.is(12345, dojox.math.round(12345 + 0.01), "radx212"); + t.is(12345, dojox.math.round(12345 + 0.1), "radx213"); + + t.is(12346, dojox.math.round(12346 + 0.49999), "radx215"); + t.is(12347, dojox.math.round(12346 + 0.5), "radx216"); + t.is(12347, dojox.math.round(12346 + 0.50001), "radx217"); + + t.is(12345, dojox.math.round(12345 + 0.4), "radx220"); + t.is(12345, dojox.math.round(12345 + 0.49), "radx221"); + t.is(12345, dojox.math.round(12345 + 0.499), "radx222"); + t.is(12345, dojox.math.round(12345 + 0.49999), "radx223"); + t.is(12346, dojox.math.round(12345 + 0.5), "radx224"); + t.is(12346, dojox.math.round(12345 + 0.50001), "radx225"); + t.is(12346, dojox.math.round(12345 + 0.5001), "radx226"); + t.is(12346, dojox.math.round(12345 + 0.501), "radx227"); + t.is(12346, dojox.math.round(12345 + 0.51), "radx228"); + t.is(12346, dojox.math.round(12345 + 0.6), "radx229"); + + //negatives + t.is(-12345, dojox.math.round(-12345 + -0.1), "rsux200"); + t.is(-12345, dojox.math.round(-12345 + -0.01), "rsux201"); + t.is(-12345, dojox.math.round(-12345 + -0.001), "rsux202"); + t.is(-12345, dojox.math.round(-12345 + -0.00001), "rsux203"); + t.is(-12345, dojox.math.round(-12345 + -0.000001), "rsux204"); + t.is(-12345, dojox.math.round(-12345 + -0.0000001), "rsux205"); + t.is(-12345, dojox.math.round(-12345 + 0), "rsux206"); + t.is(-12345, dojox.math.round(-12345 + 0.0000001), "rsux207"); + t.is(-12345, dojox.math.round(-12345 + 0.000001), "rsux208"); + t.is(-12345, dojox.math.round(-12345 + 0.00001), "rsux209"); + t.is(-12345, dojox.math.round(-12345 + 0.0001), "rsux210"); + t.is(-12345, dojox.math.round(-12345 + 0.001), "rsux211"); + t.is(-12345, dojox.math.round(-12345 + 0.01), "rsux212"); + t.is(-12345, dojox.math.round(-12345 + 0.1), "rsux213"); + + t.is(-12346, dojox.math.round(-12346 + 0.49999), "rsux215"); + t.is(-12346, dojox.math.round(-12346 + 0.5), "rsux216"); + t.is(-12345, dojox.math.round(-12346 + 0.50001 ), "rsux217"); + + t.is(-12345, dojox.math.round(-12345 + 0.4), "rsux220"); + t.is(-12345, dojox.math.round(-12345 + 0.49), "rsux221"); + t.is(-12345, dojox.math.round(-12345 + 0.499), "rsux222"); + t.is(-12345, dojox.math.round(-12345 + 0.49999), "rsux223"); + t.is(-12345, dojox.math.round(-12345 + 0.5), "rsux224"); + t.is(-12344, dojox.math.round(-12345 + 0.50001), "rsux225"); + t.is(-12344, dojox.math.round(-12345 + 0.5001), "rsux226"); + t.is(-12344, dojox.math.round(-12345 + 0.501), "rsux227"); + t.is(-12344, dojox.math.round(-12345 + 0.51), "rsux228"); + t.is(-12344, dojox.math.round(-12345 + 0.6), "rsux229"); + + t.is(12345, dojox.math.round( 12345 / 1), "rdvx401"); + t.is(12344, dojox.math.round( 12345 / 1.0001), "rdvx402"); + t.is(12333, dojox.math.round( 12345 / 1.001), "rdvx403"); + t.is(12223, dojox.math.round( 12345 / 1.01), "rdvx404"); + t.is(11223, dojox.math.round( 12345 / 1.1), "rdvx405"); + + t.is(3088.8, dojox.math.round( 12355 / 4, 1), "rdvx406"); + t.is(3086.3, dojox.math.round( 12345 / 4, 1), "rdvx407"); + t.is(3088.7, dojox.math.round( 12355 / 4.0001, 1), "rdvx408"); + t.is(3086.2, dojox.math.round( 12345 / 4.0001, 1), "rdvx409"); + t.is(2519.4, dojox.math.round( 12345 / 4.9, 1), "rdvx410"); + t.is(2473.9, dojox.math.round( 12345 / 4.99, 1), "rdvx411"); + t.is(2469.5, dojox.math.round( 12345 / 4.999, 1), "rdvx412"); + t.is(2469.0, dojox.math.round( 12345 / 4.9999, 1), "rdvx413"); + t.is(2469, dojox.math.round( 12345 / 5, 1), "rdvx414"); + t.is(2469.0, dojox.math.round( 12345 / 5.0001, 1), "rdvx415"); + t.is(2468.5, dojox.math.round( 12345 / 5.001, 1), "rdvx416"); + t.is(2464.1, dojox.math.round( 12345 / 5.01, 1), "rdvx417"); + t.is(2420.6, dojox.math.round( 12345 / 5.1, 1), "rdvx418"); + + t.is(12345, dojox.math.round( 12345 * 1), "rmux401"); + t.is(12346, dojox.math.round( 12345 * 1.0001), "rmux402"); + t.is(12357, dojox.math.round( 12345 * 1.001), "rmux403"); + t.is(12468, dojox.math.round( 12345 * 1.01), "rmux404"); + t.is(13580, dojox.math.round( 12345 * 1.1), "rmux405"); + t.is(49380, dojox.math.round( 12345 * 4), "rmux406"); + t.is(49381, dojox.math.round( 12345 * 4.0001), "rmux407"); + t.is(60491, dojox.math.round( 12345 * 4.9), "rmux408"); + t.is(61602, dojox.math.round( 12345 * 4.99), "rmux409"); + t.is(61713, dojox.math.round( 12345 * 4.999), "rmux410"); + t.is(61724, dojox.math.round( 12345 * 4.9999), "rmux411"); + t.is(61725, dojox.math.round( 12345 * 5), "rmux412"); + t.is(61726, dojox.math.round( 12345 * 5.0001), "rmux413"); + t.is(61737, dojox.math.round( 12345 * 5.001), "rmux414"); + t.is(61848, dojox.math.round( 12345 * 5.01), "rmux415"); +/* + t.is(1.4814E+5, dojox.math.round( 12345 * 12), "rmux416"); + t.is(1.6049E+5, dojox.math.round( 12345 * 13), "rmux417"); + t.is(1.4826E+5, dojox.math.round( 12355 * 12), "rmux418"); + t.is(1.6062E+5, dojox.math.round( 12355 * 13), "rmux419"); +*/ + } + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/math/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/math/tests/runTests.html new file mode 100644 index 0000000..cb69942 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/tests/runTests.html @@ -0,0 +1,9 @@ + + + DojoX Functional Unit Test Runner + + + +

                                                      Redirecting to D.O.H runner.

                                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/math/tests/stats.js b/js/dojo-release-1.7.2-src/dojox/math/tests/stats.js new file mode 100644 index 0000000..6e51132 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/math/tests/stats.js @@ -0,0 +1,102 @@ +dojo.provide("dojox.math.tests.stats"); +dojo.require("dojox.math.stats"); + +(function(){ + var epsilon = 1e-6; + eq = function(t, a, b){ + t.t(!isNaN(a) && ! isNaN(b)); + var delta = Math.abs((a - b) / (a + b)); + t.t(isNaN(delta) || delta < epsilon); + }, + a1 = [1, 2, 1], + a2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; + a3 = [0, 5, 4, 5, 8, 20, 21, 20, 20, 8, 9, 15, 12, 11, 18, 7, 19, 13, 13, 4]; + tests.register("dojox.math.stats.tests", [ + function sd(t){ + t.assertEqual(6.335613624582861, dojox.math.stats.sd(a3)); + }, + function variance(t){ + t.assertEqual(40.139999999999986, dojox.math.stats.variance(a3)); + }, + function mean(t){ + t.assertEqual(11.6, dojox.math.stats.mean(a3)); + }, + function min(t){ + t.assertEqual(0, dojox.math.stats.min(a3)); + }, + function max(t){ + t.assertEqual(21, dojox.math.stats.max(a3)); + }, + function median(t){ + t.assertEqual(12, dojox.math.stats.median(a3)); + }, + function mode(t){ + t.assertEqual(20, dojox.math.stats.mode(a3)); + }, + function sum(t){ + t.assertEqual(232, dojox.math.stats.sum(a3)); + } + ]); + + var points = [ + {x:1, y:42}, {x:1, y:7}, {x:2, y:17}, {x:4, y:41}, + {x:5, y:60}, {x:7, y:19}, {x:7, y:16}, {x:8, y:15}, + {x:10, y:29}, {x:11, y:1}, {x:12, y:10}, {x:13, y:22}, + {x:13, y:16}, {x:14, y:29}, {x:20, y:37}, {x:21, y:10}, + {x:21, y:60}, {x:22, y:4}, {x:22, y:33}, {x:25, y:52}, + {x:25, y:32}, {x:25, y:18}, {x:27, y:46}, {x:28, y:2}, + {x:28, y:56}, {x:29, y:12}, {x:32, y:53}, {x:32, y:14}, + {x:36, y:18}, {x:37, y:23}, {x:38, y:18}, {x:45, y:37}, + {x:48, y:43}, {x:50, y:9}, {x:53, y:48}, {x:55, y:60}, + {x:55, y:28}, {x:57, y:19}, {x:58, y:48}, {x:58, y:29} + ]; + tests.register("dojox.math.stats.tests.bestFit", [ + function bf(t){ + var result = dojox.math.stats.bestFit(points); + console.log(result); + t.assertEqual(0.208, Math.round(result.slope*1000)/1000); + t.assertEqual(22.829, Math.round(result.intercept*1000)/1000); + t.assertEqual(0.045, Math.round(result.r2*1000)/1000); + t.assertEqual(0.212, Math.round(result.r*1000)/1000); + } + ]); + tests.register("dojox.math.stats.tests.forecast", [ + function _42(t){ + t.assertEqual(31.580951899655346, dojox.math.stats.forecast(points, 42)); + }, + function _54(t){ + t.assertEqual(34.08152295859065, dojox.math.stats.forecast(points, 54)); + }, + function _201(t){ + t.assertEqual(64.71351843054812, dojox.math.stats.forecast(points, 201)); + } + ]); + tests.register("dojox.math.stats.tests.approx", [ + function approx1(t){ eq(t, dojox.math.stats.approxLin(a1, 0), 1); }, + function approx2(t){ eq(t, dojox.math.stats.approxLin(a1, 0.5), 2); }, + function approx3(t){ eq(t, dojox.math.stats.approxLin(a1, 1), 1); }, + function approx4(t){ eq(t, dojox.math.stats.approxLin(a1, 0.25), 1.5); }, + function approx5(t){ eq(t, dojox.math.stats.approxLin(a1, 0.75), 1.5); }, + function approx6(t){ eq(t, dojox.math.stats.approxLin(a1, 0.1), 1.2); }, + function summary1(t){ + var s = dojox.math.stats.summary(a1); + eq(t, s.min, 1); + eq(t, s.p10, 1); + eq(t, s.p25, 1); + eq(t, s.med, 1); + eq(t, s.p75, 1.5); + eq(t, s.p90, 1.8); + eq(t, s.max, 2); + }, + function summary2(t){ + var s = dojox.math.stats.summary(a2, true); + eq(t, s.min, 0); + eq(t, s.p10, 2); + eq(t, s.p25, 5); + eq(t, s.med, 10); + eq(t, s.p75, 15); + eq(t, s.p90, 18); + eq(t, s.max, 20); + } + ]); +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/AreaManager.js b/js/dojo-release-1.7.2-src/dojox/mdnd/AreaManager.js new file mode 100644 index 0000000..b6061f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/AreaManager.js @@ -0,0 +1,708 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/connect","dojo/_base/window", + "dojo/_base/array","dojo/query","dojo/_base/html","./Moveable"],function(dojo){ + var am = dojo.declare( + "dojox.mdnd.AreaManager", + null, + { + // summary: + // Drag And Drop manager + + // autoRefresh: Boolean + // Enable the refresh of registered areas on drag start. + autoRefresh: true, + + + // areaClass: String + // CSS class enabled an area if areaClass is defined + areaClass: "dojoxDndArea", + + // dragHandleClass: String + // CSS class enabled a drag handle. + dragHandleClass: "dojoxDragHandle", + + constructor: function(){ + // summary: + // Constructor of AreaManager class. + // Initialize arrays, connects and subscribes. + + //console.log("dojox.mdnd.AreaManager ::: constructor"); + this._areaList = []; + this.resizeHandler = dojo.connect(dojo.global,"onresize", this, function(){ + this._dropMode.updateAreas(this._areaList); + }); + + this._oldIndexArea = this._currentIndexArea = this._oldDropIndex = this._currentDropIndex = this._sourceIndexArea = this._sourceDropIndex = -1; + }, + + init: function(){ + // summary: + // Initialize the manager by calling the registerByClass method + + //console.log("dojox.mdnd.AreaManager ::: init"); + this.registerByClass(); + }, + + registerByNode: function(/*DOMNode*/area, /*Boolean*/notInitAreas){ + // summary: + // To register Dnd Area : insert the DndArea using the specific sort of dropMode. + // area: + // a DOM node corresponding to the Dnd Area + // notInitAreas: + // if false or undefined, init the areas. + + //console.log("dojox.mdnd.AreaManager ::: registerByNode", area); + var index = this._getIndexArea(area); + if(area && index == -1){ + var acceptType = area.getAttribute("accept"); + var accept = (acceptType) ? acceptType.split(/\s*,\s*/) : ["text"]; + var obj = { + 'node': area, + 'items': [], + 'coords': {}, + 'margin': null, + 'accept': accept, + 'initItems': false + }; + dojo.forEach(this._getChildren(area), function(item){ + this._setMarginArea(obj, item); + obj.items.push(this._addMoveableItem(item)); + }, this); + this._areaList = this._dropMode.addArea(this._areaList, obj); + if(!notInitAreas){ + this._dropMode.updateAreas(this._areaList); + } + dojo.publish("/dojox/mdnd/manager/register",[area]); + } + }, + + registerByClass: function(){ + // summary: + // Register all Dnd Areas identified by the attribute areaClass : + // insert Dnd Areas using the specific sort of dropMode. + + //console.log("dojox.mdnd.AreaManager ::: registerByClass"); + dojo.query('.'+this.areaClass).forEach(function(area){ + this.registerByNode(area, true); + }, this); + this._dropMode.updateAreas(this._areaList); + }, + + unregister: function(/*DOMNode*/area){ + // summary: + // Unregister a D&D Area and its children into the AreaManager. + // area: + // A node corresponding to the D&D Area. + // returns: + // True if the area is found and unregistered. + + //console.log("dojox.mdnd.AreaManager ::: unregister"); + var index = this._getIndexArea(area); + if(index != -1){ + dojo.forEach(this._areaList[index].items, function(item){ + this._deleteMoveableItem(item); + }, this); + this._areaList.splice(index,1); + // refresh target area + this._dropMode.updateAreas(this._areaList); + return true; // Boolean + } + return false; // Boolean + }, + + _addMoveableItem: function(/*DOMNode*/node){ + // summary: + // Create a draggable item with a DOM node. + // node: + // A child of the D&D Area. + // returns: + // The draggable item. + // tags: + // protected + + //console.log("dojox.mdnd.AreaManager ::: _addMoveableItem"); + node.setAttribute("tabIndex", "0"); + var handle = this._searchDragHandle(node); + var moveable = new dojox.mdnd.Moveable({ 'handle': handle, 'skip': true }, node); + // add a css style : + dojo.addClass(handle || node, "dragHandle"); + var type = node.getAttribute("dndType"); + var item = { + 'item': moveable, + 'type': type ? type.split(/\s*,\s*/) : ["text"], + 'handlers': [dojo.connect(moveable, "onDragStart", this, "onDragStart")] + } + // connect to the uninitialize method of dijit._Widget to delete a moveable before a destruct + if(dijit && dijit.byNode){ + var widget = dijit.byNode(node); + if(widget){ + item.type = widget.dndType ? widget.dndType.split(/\s*,\s*/) : ["text"]; + item.handlers.push( + dojo.connect(widget, "uninitialize", this, function(){ + this.removeDragItem(node.parentNode, moveable.node); + }) + ); + } + } + return item; // Object + }, + + _deleteMoveableItem: function(/*Object*/ objItem){ + // summary: + // Delete the Moveable object associated with a node. + // item: + // A moveable Object. + // tags: + // protected + + //console.log("dojox.mdnd.AreaManager ::: _deleteMoveableItem", objItem); + // disconnect the handle + dojo.forEach(objItem.handlers, function(handler){ + dojo.disconnect(handler); + }); + // delete css style : + var node = objItem.item.node, + handle = this._searchDragHandle(node); + dojo.removeClass(handle || node, "dragHandle"); + // call destroy of Moveable class + objItem.item.destroy(); + }, + + _getIndexArea: function(/*DOMNode*/area){ + // summary: + // Get the index of an area. + // area: + // A moveable Object. + // returns: + // area index or -1 + // tags: + // protected + + //console.log("dojox.mdnd.AreaManager ::: _getIndexArea"); + if(area){ + for(var i = 0; i < this._areaList.length; i++){ + if(this._areaList[i].node === area){ + return i; // Integer + } + } + } + return -1; // Integer + }, + + _searchDragHandle: function(/*DOMNode*/node){ + // summary: + // Return the node which contains the first specific CSS class handle. + // node: + // A child of the D&D Area. + // returns: + // The drag handle node. + // tags: + // protected + + //console.log("dojox.mdnd.AreaManager ::: _searchDragHandle"); + if(node){ + var cssArray = this.dragHandleClass.split(' '), + length = cssArray.length, + queryCss = ""; + dojo.forEach(cssArray, function(css, i){ + queryCss += "." + css; + if(i != length - 1){ + queryCss += ", "; + } + }); + return dojo.query(queryCss, node)[0]; // DomNode + } + }, + + addDragItem: function(/*DOMNode*/area, /*DOMNode*/node, /*Integer*/index, /*Boolean*/notCheckParent){ + // summary: + // To add an item programmatically. + // area: + // a node corresponding to the D&D Area + // node: + // the node which has to be treated. + // index: + // the place in the area + // noCheckParent: + // if true, doesn't check if node has a parent. + // returns: + // True if the node has been inserted else false. + + //console.log("dojox.mdnd.AreaManager ::: addDragItem"); + var add = true; + if(!notCheckParent){ + add = area && node && (node.parentNode === null || (node.parentNode && node.parentNode.nodeType !== 1)); + } + if(add){ + var indexArea = this._getIndexArea(area); + if(indexArea !== -1){ + var item = this._addMoveableItem(node), + items = this._areaList[indexArea].items; + if(0 <= index && index < items.length){ + var firstListChild = items.slice(0, index), + lastListChild = items.slice(index, items.length); + firstListChild[firstListChild.length] = item; + this._areaList[indexArea].items = firstListChild.concat(lastListChild); + area.insertBefore(node, items[index].item.node); + } + else{ + this._areaList[indexArea].items.push(item); + area.appendChild(node); + } + this._setMarginArea(this._areaList[indexArea], node); + this._areaList[indexArea].initItems = false; + return true; // Boolean + } + } + return false; // Boolean + }, + + removeDragItem: function(/*DOMNode*/area, /*DOMNode*/node){ + // summary: + // Delete a moveable item programmatically. The node is removed from the area. + // area: + // A node corresponding to the DndArea. + // node: + // The node which has to be treated. + // returns: + // the removed node + + //console.log("dojox.mdnd.AreaManager ::: removeDragItem"); + var index = this._getIndexArea(area); + if(area && index !== -1){ + var items = this._areaList[index].items; + for(var j = 0; j < items.length; j++){ + if(items[j].item.node === node){ + this._deleteMoveableItem(items[j]); + // delete item of the array + items.splice(j, 1); + return area.removeChild(node); // Object + } + } + } + return null; + }, + + _getChildren: function(/*DOMNode*/area){ + // summary: + // Get the children of a D&D area. + // area: + // A DnD area. + // returns: + // The children of a DnD area + // tags: + // protected + + //console.log("dojox.mdnd.AreaManager ::: _getChildren"); + var children = []; + dojo.forEach(area.childNodes, function(child){ + // delete \n + if(child.nodeType == 1){ + if(dijit && dijit.byNode){ + var widget = dijit.byNode(child); + if(widget){ + if(!widget.dragRestriction){ + children.push(child); + } + } + else{ + children.push(child); + } + } + else{ + children.push(child); + } + } + }); + return children; //Array + }, + + _setMarginArea: function(/*Object*/area,/*DOMNode*/node){ + // summary: + // Set the value of margin in the data type of areaManager + // only when the margin has never been computed. + // area: + // The object of a D&D Area. + // node: + // The node which contains margins + // tags: + // protected + + //console.log("dojox.mdnd.AreaManager ::: _setMarginArea"); + if(area && area.margin === null && node){ + area.margin = dojo._getMarginExtents(node); + } + }, + + findCurrentIndexArea: function(/*Object*/coords, /*Object*/size){ + // summary: + // find the nearest target area according to coordinates. + // Coordinates are representing by an object : for example, {'x':10,'y':10} + // coords: + // an object encapsulating X and Y position + // size: + // an object encapsulating the area size + // returns: + // an index of area + + //console.log("dojox.mdnd.AreaManager ::: findCurrentIndexArea"); + this._oldIndexArea = this._currentIndexArea; + this._currentIndexArea = this._dropMode.getTargetArea(this._areaList, coords, this._currentIndexArea); + if(this._currentIndexArea != this._oldIndexArea){ + if(this._oldIndexArea != -1){ + this.onDragExit(coords, size); + } + if(this._currentIndexArea != -1){ + this.onDragEnter(coords, size); + } + } + return this._currentIndexArea; //Integer + }, + + _isAccepted: function(/*Array*/ type, /*Array*/ accept){ + // summary: + // True if user can drop widget on this node. + // type: + // Array containing item type + // accept: + // Array containing types + this._accept = false; + for(var i = 0; i < accept.length; ++i){ + for(var j = 0; j < type.length;++j){ + if(type[j] == accept[i]){ + this._accept = true; + break; + } + } + } + }, + + onDragStart: function(/*DOMNode*/node, /*Object*/coords, /*Object*/size){ + // summary: + // Initialize the drag (see dojox.mdnd.Moveable.initOffsetDrag()) + // node: + // The node which is about to be dragged + // coords: + // an object encapsulating X and Y position + // size: + // an object encapsulating width and height values + // tags: + // callback + + //console.log("dojox.mdnd.AreaManager ::: onDragStart"); + if(this.autoRefresh){ + this._dropMode.updateAreas(this._areaList); + } + + // Create the cover : + var _html = (dojo.isWebKit) ? dojo.body() : dojo.body().parentNode; + if(!this._cover){ + this._cover = dojo.create('div', { + 'class': "dndCover" + }); + this._cover2 = dojo.clone(this._cover); + dojo.addClass(this._cover2, "dndCover2"); + } + var h = _html.scrollHeight+"px"; + this._cover.style.height = this._cover2.style.height = h; + dojo.body().appendChild(this._cover); + dojo.body().appendChild(this._cover2); + + this._dragStartHandler = dojo.connect(node.ownerDocument, "ondragstart", dojo, "stopEvent"); + // to know the source + this._sourceIndexArea = this._lastValidIndexArea = this._currentIndexArea = this._getIndexArea(node.parentNode); + // delete the dragItem into the source area + var sourceArea = this._areaList[this._sourceIndexArea]; + var children = sourceArea.items; + for(var i = 0; i < children.length; i++){ + if(children[i].item.node == node){ + this._dragItem = children[i]; + this._dragItem.handlers.push(dojo.connect(this._dragItem.item, "onDrag", this, "onDrag")); + this._dragItem.handlers.push(dojo.connect(this._dragItem.item, "onDragEnd", this, "onDrop")); + children.splice(i,1); + this._currentDropIndex = this._sourceDropIndex = i; + break; + } + } + var nodeRef = null; + if(this._sourceDropIndex !== sourceArea.items.length){ + nodeRef = sourceArea.items[this._sourceDropIndex].item.node; + } + // IE7 OPTIMIZATION + if(dojo.isIE > 7){ + // connect these events on the cover + this._eventsIE7 = [ + dojo.connect(this._cover, "onmouseover", dojo, "stopEvent"), + dojo.connect(this._cover, "onmouseout", dojo, "stopEvent"), + dojo.connect(this._cover, "onmouseenter", dojo, "stopEvent"), + dojo.connect(this._cover, "onmouseleave", dojo, "stopEvent") + ]; + } + + var s = node.style; + s.left = coords.x+"px"; + s.top = coords.y+"px"; + // attach the node to the cover + if(s.position == "relative" || s.position == ""){ + s.position = "absolute"; // enforcing the absolute mode + } + this._cover.appendChild(node); + + this._dropIndicator.place(sourceArea.node, nodeRef, size); + // add a style to place the _dragNode in foreground + dojo.addClass(node, "dragNode"); + // A dragged node is always draggable in this source area. + this._accept = true; + dojo.publish("/dojox/mdnd/drag/start",[node, sourceArea, this._sourceDropIndex]); + }, + + onDragEnter: function(/*Object*/coords, /*Object*/size){ + // summary: + // Optionally called by the getTargetArea method of TargetFinder class. + // coords: + // coordinates of the dragged Node. + // size: + // size of the dragged Node. + // tags: + // callback + + //console.log("dojox.mdnd.AreaManager ::: onDragEnter", coords, size); + if(this._currentIndexArea === this._sourceIndexArea){ + this._accept = true; + } + else{ + this._isAccepted(this._dragItem.type, this._areaList[this._currentIndexArea].accept); + } + }, + + onDragExit: function(/*Object*/coords, /*Object*/size){ + // summary: + // Optionally called by the getTargetArea method of TargetFinder class. + // coords: + // coordinates of the dragged Node. + // size: + // size of the dragged Node. + // tags: + // callback + + //console.log("dojox.mdnd.AreaManager ::: onDragExit"); + this._accept = false; + }, + + onDrag: function(/*DOMNode*/node, /*Object*/coords, /*Object*/size, /*Object*/mousePosition){ + // summary: + // Occurs when the dojo.dnd.Moveable.onDrag is fired. + // Search the nearest target area and called the placeDropIndicator + // node: + // The node which is dragged + // coords: + // an object encapsulating X and Y position + // size: + // an object encapsulating width and height values + // mousePosition: + // coordinates of mouse + // tags: + // callback + + //console.log("dojox.mdnd.AreaManager ::: onDrag", node, ",", coords,size); + var coordinates = this._dropMode.getDragPoint(coords, size, mousePosition); + this.findCurrentIndexArea(coordinates, size); + if(this._currentIndexArea !== -1 && this._accept){ + this.placeDropIndicator(coordinates, size); + } + }, + + placeDropIndicator: function(/*Object*/coords, /*Object*/size){ + // summary: + // Search the right place to insert the dropIndicator and display the dropIndicator. + // coords: + // an object encapsulating X and Y position + // size: + // an object encapsulating width and height values + // returns: + // the current drop index + + //console.log("dojox.mdnd.AreaManager ::: placeDropIndicator"); + //keep old drop Index + this._oldDropIndex = this._currentDropIndex; + // calculate all children marker (see VerticalDropMode.initItems()) + var area = this._areaList[this._currentIndexArea]; + if(!area.initItems){ + this._dropMode.initItems(area); + } + //get the index where the drop has to be placed. + this._currentDropIndex = this._dropMode.getDropIndex(area, coords); + if(!(this._currentIndexArea === this._oldIndexArea && this._oldDropIndex === this._currentDropIndex)){ + this._placeDropIndicator(size); + } + return this._currentDropIndex; //Integer + }, + + _placeDropIndicator: function(/*Object*/size){ + // summary: + // place the dropIndicator + // size: + // an object encapsulating width and height values + // tags: + // protected + + var oldArea = this._areaList[this._lastValidIndexArea]; + var currentArea = this._areaList[this._currentIndexArea]; + //refresh the previous area after moving out the drop indicator + this._dropMode.refreshItems(oldArea, this._oldDropIndex, size, false); + // place dropIndicator + var node = null; + if(this._currentDropIndex != -1){ + node = currentArea.items[this._currentDropIndex].item.node; + } + this._dropIndicator.place(currentArea.node, node); + this._lastValidIndexArea = this._currentIndexArea; + //refresh the current area after placing the drop indicator + this._dropMode.refreshItems(currentArea, this._currentDropIndex, size, true); + }, + + onDropCancel: function(){ + // summary: + // Cancel the drop. + // The dragNode returns into the source. + // tags: + // callback + + //console.log("dojox.mdnd.AreaManager ::: onDropCancel"); + if(!this._accept){ + var index = this._getIndexArea(this._dropIndicator.node.parentNode); + if(index != -1){ + this._currentIndexArea = index; + } + else{ + // case if the dropIndicator is in the area which has been unregistered during the drag. + // chose by default the first area. + this._currentIndexArea = 0; + } + } + }, + + onDrop: function(/*DOMNode*/node){ + // summary: + // Drop the dragged item where the dropIndicator is displayed. + // node: + // The node which is about to be dropped + // tags: + // callback + + //console.log("dojox.mdnd.AreaManager ::: onDrop"); + //dropCancel + this.onDropCancel(); + var targetArea = this._areaList[this._currentIndexArea]; + dojo.removeClass(node, "dragNode"); + var style = node.style; + style.position = "relative"; + style.left = "0"; + style.top = "0"; + style.width = "auto"; + if(targetArea.node == this._dropIndicator.node.parentNode){ + targetArea.node.insertBefore(node, this._dropIndicator.node); + } + else{ + // case if the dropIndicator is in the area which has been unregistered during the drag. + targetArea.node.appendChild(node); + this._currentDropIndex = targetArea.items.length; + } + // add child into the new target area. + var indexChild = this._currentDropIndex; + if(indexChild == -1){ + indexChild = targetArea.items.length; + } + var children = targetArea.items; + var firstListArea = children.slice(0, indexChild); + var lastListArea = children.slice(indexChild, children.length); + firstListArea[firstListArea.length] = this._dragItem; + targetArea.items = firstListArea.concat(lastListArea); + + this._setMarginArea(targetArea, node); + dojo.forEach(this._areaList, function(obj){ + obj.initItems = false; + }); + // disconnect onDrop handler + dojo.disconnect(this._dragItem.handlers.pop()); + dojo.disconnect(this._dragItem.handlers.pop()); + this._resetAfterDrop(); + // remove the cover + if(this._cover){ + dojo.body().removeChild(this._cover); + dojo.body().removeChild(this._cover2); + } + dojo.publish("/dojox/mdnd/drop",[node, targetArea, indexChild]); + }, + + _resetAfterDrop: function(){ + // summary: + // reset manager properties after dropping an item + // tags: + // protected + + this._accept = false; + this._dragItem = null; + this._currentDropIndex = -1; + this._currentIndexArea = -1; + this._oldDropIndex = -1; + this._sourceIndexArea = -1; + this._sourceDropIndex = -1; + this._dropIndicator.remove(); + if(this._dragStartHandler){ + dojo.disconnect(this._dragStartHandler); + } + if(dojo.isIE > 7){ + dojo.forEach(this._eventsIE7, dojo.disconnect); + } + }, + + destroy: function(){ + // summary: + // Destroy the component. + + //console.log("dojox.mdnd.AreaManager ::: destroy"); + //see implementation of unregister() + while(this._areaList.length > 0){ + if(!this.unregister(this._areaList[0].node)){ + throw new Error("Error while destroying AreaManager"); + } + } + dojo.disconnect(this.resizeHandler); + this._dropIndicator.destroy(); + this._dropMode.destroy(); + if(dojox.mdnd.autoScroll){ + dojox.mdnd.autoScroll.destroy(); + } + if(this.refreshListener){ + dojo.unsubscribe(this.refreshListener); + } + // destroy the cover + if(this._cover){ + dojo._destroyElement(this._cover); + dojo._destroyElement(this._cover2); + delete this._cover; + delete this._cover2; + } + } + }); + + if(dijit && dijit._Widget){ + // Add a new property to widget + dojo.extend(dijit._Widget, { + // dndType: String + // Defines a type of widget. + dndType : "text" + }); + } + + dojox.mdnd._areaManager = null; + dojox.mdnd.areaManager = function(){ + // summary: + // Returns the current areaManager, creates one if it is not created yet. + if(!dojox.mdnd._areaManager){ + dojox.mdnd._areaManager = new dojox.mdnd.AreaManager(); + } + return dojox.mdnd._areaManager; // Object + }; + return am; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/AutoScroll.js b/js/dojo-release-1.7.2-src/dojox/mdnd/AutoScroll.js new file mode 100644 index 0000000..7efd7a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/AutoScroll.js @@ -0,0 +1,196 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/lang","dojo/_base/connect", + "dojo/_base/window"],function(dojo){ + var as = dojo.declare( + "dojox.mdnd.AutoScroll", + null, + { + // summary: + // Activate scrolling while dragging a widget. + + // interval: Integer + // default mouse move offset + interval: 3, + + // recursiveTimer: Integer + recursiveTimer: 10, + + // marginMouse: Integer + // Default mouse margin + marginMouse: 50, + + constructor: function(){ + //console.log("dojox.mdnd.AutoScroll ::: constructor "); + this.resizeHandler = dojo.connect(dojo.global,"onresize", this, function(){ + this.getViewport(); + }); + dojo.ready(dojo.hitch(this, "init")); + }, + + init: function(){ + //console.log("dojox.mdnd.AutoScroll ::: init "); + this._html = (dojo.isWebKit) ? dojo.body() : dojo.body().parentNode; + this.getViewport(); + }, + + getViewport:function(){ + // summary: + // Set the visible part of the window. Varies accordion to Navigator. + + //console.log("dojox.mdnd.AutoScroll ::: getViewport "); + var d = dojo.doc, dd = d.documentElement, w = window, b = dojo.body(); + if(dojo.isMozilla){ + this._v = { 'w': dd.clientWidth, 'h': w.innerHeight }; // Object + } + else if(!dojo.isOpera && w.innerWidth){ + this._v = { 'w': w.innerWidth, 'h': w.innerHeight }; // Object + } + else if(!dojo.isOpera && dd && dd.clientWidth){ + this._v = { 'w': dd.clientWidth, 'h': dd.clientHeight }; // Object + } + else if(b.clientWidth){ + this._v = { 'w': b.clientWidth, 'h': b.clientHeight }; // Object + } + }, + + setAutoScrollNode: function(/*Node*/node){ + // summary: + // set the node which is dragged + // node: + // node to scroll + + //console.log("dojox.mdnd.AutoScroll ::: setAutoScrollNode "); + this._node = node; + }, + + setAutoScrollMaxPage: function(){ + // summary: + // Set the hightest heigh and width authorized scroll. + + //console.log("dojox.mdnd.AutoScroll ::: setAutoScrollMaxPage "); + this._yMax = this._html.scrollHeight; + this._xMax = this._html.scrollWidth; + }, + + checkAutoScroll: function(/*Event*/e){ + // summary: + // Check if an autoScroll have to be launched. + + //console.log("dojox.mdnd.AutoScroll ::: checkAutoScroll"); + if(this._autoScrollActive){ + this.stopAutoScroll(); + } + this._y = e.pageY; + this._x = e.pageX; + if(e.clientX < this.marginMouse){ + this._autoScrollActive = true; + this._autoScrollLeft(e); + } + else if(e.clientX > this._v.w - this.marginMouse){ + this._autoScrollActive = true; + this._autoScrollRight(e); + } + if(e.clientY < this.marginMouse){ + this._autoScrollActive = true; + this._autoScrollUp(e); + + } + else if(e.clientY > this._v.h - this.marginMouse){ + this._autoScrollActive = true; + this._autoScrollDown(); + } + }, + + _autoScrollDown: function(){ + // summary: + // Manage the down autoscroll. + // tags: + // protected + + //console.log("dojox.mdnd.AutoScroll ::: _autoScrollDown "); + if(this._timer){ + clearTimeout(this._timer); + } + if(this._autoScrollActive && this._y + this.marginMouse < this._yMax){ + this._html.scrollTop += this.interval; + this._node.style.top = (parseInt(this._node.style.top) + this.interval) + "px"; + this._y += this.interval; + this._timer = setTimeout(dojo.hitch(this, "_autoScrollDown"), this.recursiveTimer); + } + }, + + _autoScrollUp: function(){ + // summary: + // Manage the up autoscroll. + // tags: + // protected + + //console.log("dojox.mdnd.AutoScroll ::: _autoScrollUp "); + if(this._timer){ + clearTimeout(this._timer); + } + if(this._autoScrollActive && this._y - this.marginMouse > 0){ + this._html.scrollTop -= this.interval; + this._node.style.top = (parseInt(this._node.style.top) - this.interval) + "px"; + this._y -= this.interval; + this._timer = setTimeout(dojo.hitch(this, "_autoScrollUp"),this.recursiveTimer); + } + }, + + _autoScrollRight: function(){ + // summary: + // Manage the right autoscroll. + // tags: + // protected + + //console.log("dojox.mdnd.AutoScroll ::: _autoScrollRight "); + if(this._timer){ + clearTimeout(this._timer); + } + if(this._autoScrollActive && this._x + this.marginMouse < this._xMax){ + this._html.scrollLeft += this.interval; + this._node.style.left = (parseInt(this._node.style.left) + this.interval) + "px"; + this._x += this.interval; + this._timer = setTimeout(dojo.hitch(this, "_autoScrollRight"), this.recursiveTimer); + } + }, + + _autoScrollLeft: function(/*Event*/e){ + // summary: + // Manage the left autoscroll. + // tags: + // protected + + //console.log("dojox.mdnd.AutoScroll ::: _autoScrollLeft "); + if(this._timer){ + clearTimeout(this._timer); + } + if(this._autoScrollActive && this._x - this.marginMouse > 0){ + this._html.scrollLeft -= this.interval; + this._node.style.left = (parseInt(this._node.style.left) - this.interval) + "px"; + this._x -= this.interval; + this._timer = setTimeout(dojo.hitch(this, "_autoScrollLeft"),this.recursiveTimer); + } + }, + + stopAutoScroll: function(){ + // summary: + // Stop the autoscroll. + + //console.log("dojox.mdnd.AutoScroll ::: stopAutoScroll "); + if(this._timer){ + clearTimeout(this._timer); + } + this._autoScrollActive = false; + }, + + destroy: function(){ + //console.log("dojox.mdnd.AutoScroll ::: destroy "); + dojo.disconnect(this.resizeHandler); + } + }); + + dojox.mdnd.autoScroll = null; + + dojox.mdnd.autoScroll = new dojox.mdnd.AutoScroll(); + return as; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/DropIndicator.js b/js/dojo-release-1.7.2-src/dojox/mdnd/DropIndicator.js new file mode 100644 index 0000000..437f415 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/DropIndicator.js @@ -0,0 +1,84 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/html","./AreaManager"],function(dojo){ + var di = dojo.declare( + "dojox.mdnd.DropIndicator", + null, + { + // summary: + // DropIndicator managment for DnD. + + // node: DOMNode + // the drop indicator node + node : null, + + constructor: function(){ + //console.log("dojox.mdnd.DropIndicator ::: constructor"); + var dropIndicator = document.createElement("div"); + var subDropIndicator = document.createElement("div"); + dropIndicator.appendChild(subDropIndicator); + dojo.addClass(dropIndicator, "dropIndicator"); + this.node = dropIndicator; + }, + + place: function(/*Node*/area, /*Node*/nodeRef, /*Object*/size){ + // summary: + // Place the DropIndicator in the right place + // area: + // the dnd targer area node + // nodeRef: + // node where the dropIndicator have to be placed into the area + // dragNode: + // the node which is dragged + // returns: + // the node inserted or null if it crashes + + //console.log("dojox.mdnd.DropIndicator ::: place"); + if(size){ + this.node.style.height = size.h + "px"; + } + try{ + if(nodeRef){ + area.insertBefore(this.node, nodeRef); + } + else{ + // empty target area or last node => appendChild + area.appendChild(this.node); + } + return this.node; // DOMNode + }catch(e){ + return null; + } + }, + + remove: function(){ + // summary: + // remove the DropIndicator (not destroy) + + //console.log("dojox.mdnd.DropIndicator ::: remove"); + if(this.node){ + //FIX : IE6 problem + this.node.style.height = ""; + if(this.node.parentNode){ + this.node.parentNode.removeChild(this.node); + } + } + }, + + destroy: function(){ + // summary: + // destroy the dropIndicator + + //console.log("dojox.mdnd.DropIndicator ::: destroy"); + if(this.node){ + if(this.node.parentNode){ + this.node.parentNode.removeChild(this.node); + } + dojo._destroyElement(this.node); + delete this.node; + } + } + }); + + dojox.mdnd.areaManager()._dropIndicator = new dojox.mdnd.DropIndicator(); + + return di; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/LazyManager.js b/js/dojo-release-1.7.2-src/dojox/mdnd/LazyManager.js new file mode 100644 index 0000000..aaf2654 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/LazyManager.js @@ -0,0 +1,72 @@ +define([ + "dojo/_base/kernel", // dojo.addOnUnload + "dojo/_base/lang", // dojo.hitch + "dojo/_base/declare", + "dojo/_base/html", // dojo.create, dojo.attr, dojo.addClass + "dojo/dnd/Manager", + "./PureSource" +],function(dojo){ + return dojo.declare( + "dojox.mdnd.LazyManager", + null, + { + // summary: + // This class allows to launch a drag and drop dojo on the fly. + + constructor: function(){ + //console.log("dojox.mdnd.LazyManager ::: constructor"); + this._registry = {}; + // initialization of the _fakeSource to enabled DragAndDrop : + this._fakeSource = new dojox.mdnd.PureSource(dojo.create("div"), { + 'copyOnly': false + }); + this._fakeSource.startup(); + dojo.addOnUnload(dojo.hitch(this, "destroy")); + this.manager = dojo.dnd.manager(); + }, + + getItem: function(/*DOMNode*/draggedNode){ + //console.log("dojox.mdnd.LazyManager ::: getItem"); + var type = draggedNode.getAttribute("dndType"); + return { + 'data' : draggedNode.getAttribute("dndData") || draggedNode.innerHTML, + 'type' : type ? type.split(/\s*,\s*/) : ["text"] + } + }, + + startDrag: function(/*Event*/e, /*DOMNode?*/draggedNode){ + // summary: + // launch a dojo drag and drop on the fly. + + //console.log("dojox.mdnd.LazyManager ::: startDrag"); + draggedNode = draggedNode || e.target; + if(draggedNode){ + var m = this.manager, + object = this.getItem(draggedNode); + if(draggedNode.id == ""){ + dojo.attr(draggedNode, "id", dojo.dnd.getUniqueId()); + } + dojo.addClass(draggedNode, "dojoDndItem"); + this._fakeSource.setItem(draggedNode.id, object); + m.startDrag(this._fakeSource, [draggedNode], false); + m.onMouseMove(e); + } + }, + + cancelDrag: function(){ + // summary: + // cancel a drag and drop dojo on the fly. + + //console.log("dojox.mdnd.LazyManager ::: cancelDrag"); + var m = this.manager; + m.target = null; + m.onMouseUp(); + }, + + + destroy: function(){ + //console.log("dojox.mdnd.LazyManager ::: destroy"); + this._fakeSource.destroy(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/Moveable.js b/js/dojo-release-1.7.2-src/dojox/mdnd/Moveable.js new file mode 100644 index 0000000..2669206 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/Moveable.js @@ -0,0 +1,262 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/event", + "dojo/_base/html", + "dojo/_base/sniff", + "dojo/_base/window" +],function(dojo){ + return dojo.declare( + "dojox.mdnd.Moveable", + null, + { + // summary: + // Allow end-users to track a DOM node into the web page + + // handle: DOMNode + // The node on which the user clicks to drag the main node. + handle: null, + + // skip: Boolean + // A flag to control a drag action if a form element has been focused. + // If true, the drag action is not executed. + skip: true, + + // dragDistance: Integer + // The user clicks on the handle, but the drag action will really begin + // if he tracks the main node to more than 3 pixels. + dragDistance: 3, + + constructor: function(/*Object*/params, /*DOMNode*/node){ + // summary: + // Configure parameters and listen to mousedown events from handle + // node. + // params: + // Hash of parameters + // node: + // The draggable node + + //console.log("dojox.mdnd.Moveable ::: constructor"); + this.node = dojo.byId(node); + + this.d = this.node.ownerDocument; + + if(!params){ params = {}; } + this.handle = params.handle ? dojo.byId(params.handle) : null; + if(!this.handle){ this.handle = this.node; } + this.skip = params.skip; + this.events = [ + dojo.connect(this.handle, "onmousedown", this, "onMouseDown") + ]; + if(dojox.mdnd.autoScroll){ + this.autoScroll = dojox.mdnd.autoScroll; + } + + }, + + isFormElement: function(/*DOMEvent*/ e){ + // summary: + // identify the type of target node associated with a DOM event. + // e: + // a DOM event + // returns: + // if true, the target is one of those specific nodes. + + //console.log("dojox.mdnd.Moveable ::: isFormElement"); + var t = e.target; + if(t.nodeType == 3 /*TEXT_NODE*/){ + t = t.parentNode; + } + return " a button textarea input select option ".indexOf(" " + t.tagName.toLowerCase() + " ") >= 0; // Boolean + }, + + onMouseDown: function(/*DOMEvent*/e){ + // summary: + // Occurs when the user clicks on the handle node. + // Skip the drag action if a specific node is targeted. + // Listens to mouseup and mousemove events on to the HTML document. + // e: + // a DOM event + // tags: + // callback + + //console.log("dojox.mdnd.Moveable ::: onMouseDown"); + if(this._isDragging){ return;} + var isLeftButton = (e.which || e.button) == 1; + if(!isLeftButton){ + return; + } + if(this.skip && this.isFormElement(e)){ return; } + if(this.autoScroll){ + this.autoScroll.setAutoScrollNode(this.node); + this.autoScroll.setAutoScrollMaxPage(); + } + this.events.push(dojo.connect(this.d, "onmouseup", this, "onMouseUp")); + this.events.push(dojo.connect(this.d, "onmousemove", this, "onFirstMove")); + this._selectStart = dojo.connect(dojo.body(), "onselectstart", dojo.stopEvent); + this._firstX = e.clientX; + this._firstY = e.clientY; + dojo.stopEvent(e); + }, + + onFirstMove: function(/*DOMEvent*/e){ + // summary: + // Occurs when the user moves the mouse after clicking on the + // handle. + // Determinate when the drag action will have to begin (see + // dragDistance). + // e: + // A DOM event + // tags: + // callback + + //console.log("dojox.mdnd.Moveable ::: onFirstMove"); + dojo.stopEvent(e); + var d = (this._firstX - e.clientX) * (this._firstX - e.clientX) + + (this._firstY - e.clientY) * (this._firstY - e.clientY); + if(d > this.dragDistance * this.dragDistance){ + this._isDragging = true; + dojo.disconnect(this.events.pop()); + dojo.style(this.node, "width", dojo.contentBox(this.node).w + "px"); + this.initOffsetDrag(e); + this.events.push(dojo.connect(this.d, "onmousemove", this, "onMove")); + } + }, + + initOffsetDrag: function(/*DOMEvent*/e){ + // summary: + // Initialize the gap between main node coordinates and the clicked point. + // Call the onDragStart method. + // e: + // A DOM event + + //console.log("dojox.mdnd.Moveable ::: initOffsetDrag"); + this.offsetDrag = { 'l': e.pageX, 't': e.pageY }; + var s = this.node.style; + var position = dojo.position(this.node, true); + /*if(s.position == "relative" || s.position == ""){ + s.position = "absolute"; // enforcing the absolute mode + }*/ + this.offsetDrag.l = position.x - this.offsetDrag.l; + this.offsetDrag.t = position.y - this.offsetDrag.t; + var coords = { + 'x': position.x, + 'y': position.y + }; + this.size = { + 'w': position.w, + 'h': position.h + }; + // method to catch + this.onDragStart(this.node, coords, this.size); + }, + + onMove: function(/*DOMEvent*/e){ + // summary: + // Occurs when the user moves the mouse. + // Calls the onDrag method. + // e: + // a DOM event + // tags: + // callback + + //console.log("dojox.mdnd.Moveable ::: onMove"); + dojo.stopEvent(e); + // hack to avoid too many calls to onMove in IE8 causing sometimes slowness + if(dojo.isIE == 8 && new Date() - this.date < 20){ + return; + } + if(this.autoScroll){ + this.autoScroll.checkAutoScroll(e); + } + var coords = { + 'x': this.offsetDrag.l + e.pageX, + 'y': this.offsetDrag.t + e.pageY + }; + var s = this.node.style; + s.left = coords.x + "px"; + s.top = coords.y + "px"; + + // method to catch + this.onDrag(this.node, coords, this.size, {'x':e.pageX, 'y':e.pageY}); + if(dojo.isIE == 8){ + this.date = new Date(); + } + }, + + onMouseUp: function(/*DOMEvent*/e){ + // summary: + // Occurs when the user releases the mouse + // Calls the onDragEnd method. + // e: + // a DOM event + + if (this._isDragging){ + dojo.stopEvent(e); + this._isDragging = false; + if(this.autoScroll){ + this.autoScroll.stopAutoScroll(); + } + delete this.onMove; + this.onDragEnd(this.node); + this.node.focus(); + } + dojo.disconnect(this.events.pop()); + dojo.disconnect(this.events.pop()); + }, + + onDragStart: function(/*DOMNode*/node, /*Object*/coords, /*Object*/size){ + // summary: + // Stub function. + // Notes : border box model + // node: + // a DOM node + // coords: + // absolute position of the main node + // size: + // an object encapsulating width an height values + // tags: + // callback + + }, + + onDragEnd: function(/*DOMNode*/node){ + // summary: + // Stub function + // Notes : Coordinates don't contain margins + // node: + // a DOM node + // tags: + // callback + + }, + + onDrag: function(/*DOMNode*/node, /*Object*/coords, /*Object*/size, /*Object*/mousePosition){ + // summary: + // Stub function. + // Notes : border box model for size value, margin box model for coordinates + // node: + // a DOM node + // coords: + // position of the main node (equals to css left/top properties) + // size: + // an object encapsulating width and height values + // mousePosition: + // coordiantes of mouse + // tags: + // callback + + }, + + destroy: function(){ + // summary: + // Delecte associated events + + // console.log("dojox.mdnd.Moveable ::: destroy"); + dojo.forEach(this.events, dojo.disconnect); + this.events = this.node = null; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/PureSource.js b/js/dojo-release-1.7.2-src/dojox/mdnd/PureSource.js new file mode 100644 index 0000000..56feb5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/PureSource.js @@ -0,0 +1,206 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/html","dojo/_base/connect", + "dojo/_base/array","dojo/dnd/Selector","dojo/dnd/Manager"],function(dojo){ + return dojo.declare( + "dojox.mdnd.PureSource", + dojo.dnd.Selector, + { + // summary: + // A Source Object, which can be used only as a DnD source. + // A Source can contained several dnd items. + // A dnd item is not a source. + + horizontal: false, + copyOnly: true, + skipForm: false, + withHandles: false, + isSource: true, + targetState: "Disabled", + generateText: true, + + constructor: function(/*DOMNode|String*/node, /*dojo.dnd.__SourceArgs?*/params){ + // summary: + // Initialize a new PureSource. + // node: + // Node or node's id to build the source on. + // params: + // Any property of this class may be configured via the params + // object which is mixed-in to the 'dojo.dnd.Source' instance. + + //console.log('dojox.mdnd.PureSource ::: constructor'); + dojo.mixin(this, dojo.mixin({}, params)); + var type = this.accept; + + // class-specific variables + this.isDragging = false; + this.mouseDown = false; + + // states + this.sourceState = ""; + dojo.addClass(this.node, "dojoDndSource"); + if(this.horizontal){ + dojo.addClass(this.node, "dojoDndHorizontal"); + } + // set up events + this.topics = [ + dojo.subscribe("/dnd/cancel", this, "onDndCancel"), + dojo.subscribe("/dnd/drop", this, "onDndCancel") + ]; + }, + + onDndCancel: function(){ + // summary: + // Topic event processor for /dnd/cancel, called to cancel the Dnd + // operation. + // tags: + // callback + + //console.log('dojox.mdnd.PureSource ::: onDndCancel'); + this.isDragging = false; + this.mouseDown = false; + delete this.mouseButton; + }, + + copyState: function(/*Boolean*/keyPressed){ + // summary: + // Returns true, if we need to copy items, false to move. + // It is separated to be overwritten dynamically, if needed. + // keyPressed: + // The "copy" was pressed. + // returns: + // True, if we need to copy items, false to move. + + //console.log('dojox.mdnd.PureSource ::: copyState'); + return this.copyOnly || keyPressed; // Boolean + }, + + destroy: function(){ + // summary: + // Prepares the object to be garbage-collected. + + //console.log('dojox.mdnd.PureSource ::: destroy'); + dojox.mdnd.PureSource.superclass.destroy.call(this); + dojo.forEach(this.topics, dojo.unsubscribe); + this.targetAnchor = null; + }, + + markupFactory: function(/*Object*/params, /*DomNode*/node){ + // summary: + // Markup methods. + // params: + // ??? + // node: + // ??? + // returns: + // New dojox.mdnd.PureSource instance. + + //console.log('dojox.mdnd.PureSource ::: markupFactory'); + params._skipStartup = true; + return new dojox.mdnd.PureSource(node, params); + }, + + onMouseMove: function(/*Event*/e){ + // summary: + // Event processor for onmousemove. + // e: + // Mouse event. + + //console.log('dojox.mdnd.PureSource ::: onMouseMove'); + if(this.isDragging){ + return; + } + dojox.mdnd.PureSource.superclass.onMouseMove.call(this, e); + var m = dojo.dnd.manager(); + if(this.mouseDown && !this.isDragging && this.isSource){ + var nodes = this.getSelectedNodes(); + if(nodes.length){ + m.startDrag(this, nodes, this.copyState(dojo.isCopyKey(e))); + this.isDragging = true; + } + } + + }, + + onMouseDown: function(/*Event*/e){ + // summary: + // Event processor for onmousedown. + // e: + // Mouse event. + // tags: + // callback + + //console.log('dojox.mdnd.PureSource ::: onMouseDown'); + if(this._legalMouseDown(e) && (!this.skipForm || !dojo.dnd.isFormElement(e))){ + this.mouseDown = true; + this.mouseButton = e.button; + dojox.mdnd.PureSource.superclass.onMouseDown.call(this, e); + } + }, + + onMouseUp: function(/*Event*/e){ + // summary: + // Event processor for onmouseup. + // e: + // Mouse event + // tags: + // callback + + //console.log('.dnd.PureSource ::: onMouseUp'); + if(this.mouseDown){ + this.mouseDown = false; + dojox.mdnd.PureSource.superclass.onMouseUp.call(this, e); + } + }, + + onOverEvent: function(){ + // summary: + // Called once, when mouse is over our container. + // tags: + // callback + + //console.log('dojox.mdnd.PureSource ::: onOverEvent'); + dojox.mdnd.PureSource.superclass.onOverEvent.call(this); + dojo.dnd.manager().overSource(this); + }, + + onOutEvent: function(){ + // summary: + // Called once, when mouse is out our container. + // tags: + // callback + + //console.log('dojox.mdnd.PureSource ::: onOutEvent'); + dojox.mdnd.PureSource.superclass.onOutEvent.call(this); + dojo.dnd.manager().outSource(this); + }, + + _markDndStatus: function(/*Boolean*/copy){ + // summary: + // Changes source's state based on "copy" status. + // copy: + // Copy status. + // tags: + // protected + + //console.log('dojox.mdnd.PureSource ::: _markDndStatus'); + this._changeState("Source", copy ? "Copied" : "Moved"); + }, + + _legalMouseDown: function(/*Event*/e){ + // summary: + // Checks if user clicked on "approved" items. + // e: + // Mouse event. + // returns: + // True if user clicked on "approved" items. + // tags: + // protected + + //console.log('dojox.mdnd.PureSource ::: _legalMouseDown'); + if(!this.withHandles){ return true; } + for(var node = e.target; node && !dojo.hasClass(node, "dojoDndItem"); node = node.parentNode){ + if(dojo.hasClass(node, "dojoDndHandle")){ return true; } + } + return false; // Boolean + } + }); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/README b/js/dojo-release-1.7.2-src/dojox/mdnd/README new file mode 100644 index 0000000..69d99f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/README @@ -0,0 +1,94 @@ +------------------------------------------------------------------------------- +dojox.mdnd Experimental coordinates based moveable drag and drop. +------------------------------------------------------------------------------- +Version 1.1 +Release date: 09/04/2009 +------------------------------------------------------------------------------- +Project state: + +[AreaManager] beta +[AutoScroll] beta +[DropIndicator] beta +[Movable] beta +[PureSource] beta +[adapter/DndFromDojo] experimental +[adapter/DndToDojo] experimental +[dropMode/DefaultDropMode] beta +[dropMode/OverDropMode] experimental + +------------------------------------------------------------------------------- +Credits + +Erwan Morvillez (emorvillez), +Jean-Jacques Patard (jjpatard), +Jeff Cunat (jfcunat) + + +------------------------------------------------------------------------------- +Project description + +Alternative Drag and Drop solution based on coordinates of drag element and +targets instead of mouseover. It allows dragging directly the nodes (like +dojo.dnd.Moveable) instead of an avatar (as in dojo.dnd). dojo.dnd and +dojox.mdnd are compatible by using adapters. + +PureSource is just a rewrite of dojo.dnd.Source to only allow drag start and no +drop without testing acceptance. + +------------------------------------------------------------------------------- +Dependencies + + require Dojo Core + +------------------------------------------------------------------------------- +Installation: + + checkout: + + http://svn.dojotoolkit.org/src/dojox/trunk/mdnd/ + + and require via: + dojo.require("dojox.mdnd.AreaManager"); + +------------------------------------------------------------------------------- +Basic Usage: + + dojo.require("dojox.mdnd.AreaManager"); + dojo.require("dojox.mdnd.DropIndicator"); + dojo.require("dojox.mdnd.dropMode.DefaultDropMode"); + + var init = function(){ + var m = dojox.mdnd.areaManager(); + m.areaClass = "dndArea"; + m.dragHandleClass = "dragHandle"; + m.registerByClass(); + }; + + dojo.addOnLoad(init); + + ... + +
                                                      +

                                                      Accepts Type1 items

                                                      +
                                                      +
                                                      +
                                                      Item Type 1
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      + +
                                                      +
                                                      +
                                                      +
                                                      Item Type2
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      + +
                                                      + +
                                                      +

                                                      Accepts Type2 items

                                                      +
                                                      +
                                                      +
                                                      diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/adapter/DndFromDojo.js b/js/dojo-release-1.7.2-src/dojox/mdnd/adapter/DndFromDojo.js new file mode 100644 index 0000000..14dff87 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/adapter/DndFromDojo.js @@ -0,0 +1,364 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/connect","dojo/_base/array", + "dojo/_base/html","dojo/_base/window","dojox/mdnd/AreaManager","dojo/dnd/Manager"],function(dojo){ + var dfd = dojo.declare( + "dojox.mdnd.adapter.DndFromDojo", + null, + { + // summary + // Allow communication between Dojo dnd items and DojoX D&D areas + + // dropIndicatorSize: Object + // size by default of dropIndicator (display only into a D&D Area) + dropIndicatorSize : {'w':0,'h':50}, + + // dropIndicatorSize: Object + // size by default of dropIndicator (display only into a D&D Area) + dropIndicatorSize: {'w':0,'h':50}, + + // _areaManager: Object + // Reference to the current DojoX Dnd Manager + _areaManager: null, + + // _dojoManager + // Reference to the current Dojo Manager + _dojoManager: null, + + // _currentArea: Object + // The current Area on mouse over + _currentArea: null, + + // _oldArea: Object + // The old area the mouse has passed over + _oldArea: null, + + // _moveHandler: Object + // The handler of mouse connection + _moveHandler: null, + + // _subscribeHandler: Array + // The list of dojo dnd topics + _subscribeHandler: null, + + constructor: function(){ + this._areaManager = dojox.mdnd.areaManager(); + this._dojoManager = dojo.dnd.manager(); + this._currentArea = null; + this._moveHandler = null; + this.subscribeDnd(); + }, + + subscribeDnd: function(){ + // summary: + // Subscribe to somes topics of dojo drag and drop. + + //console.log(("dojox.mdnd.adapter.DndFromDojo ::: subscribeDnd"); + this._subscribeHandler = [ + dojo.subscribe("/dnd/start",this,"onDragStart"), + dojo.subscribe("/dnd/drop/before", this, "onDrop"), + dojo.subscribe("/dnd/cancel",this,"onDropCancel"), + dojo.subscribe("/dnd/source/over",this,"onDndSource") + ] + }, + + unsubscribeDnd: function(){ + // summary: + // Unsubscribe to some topics of dojo drag and drop. + + //console.log(("dojox.mdnd.adapter.DndFromDojo ::: unsubscribeDnd"); + dojo.forEach(this._subscribeHandler, dojo.unsubscribe); + }, + + _getHoverArea: function(/*Object*/ coords){ + // summary: + // Get a D&D dojoX area as a DOM node positioned under a specific point. + // coords: + // Object containing the coordinates x and y (mouse position) + // tags: + // protected + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: _getHoverArea"); + var x = coords.x; + var y = coords.y; + this._oldArea = this._currentArea; + this._currentArea = null; + var areas = this._areaManager._areaList; + for(var i = 0; i < areas.length; i++){ + var area = areas[i]; + var startX = area.coords.x; + var endX = startX + area.node.offsetWidth; + var startY = area.coords.y; + var endY = startY + area.node.offsetHeight; + // check if the coordinates mouse is in a D&D Area + if(startX <= x && x <= endX && startY <= y && y <= endY){ + this._areaManager._oldIndexArea = this._areaManager._currentIndexArea; + this._areaManager._currentIndexArea = i; + this._currentArea = area.node; + break; + } + } + if(this._currentArea != this._oldArea){ + if(this._currentArea == null){ + // case when the dragNode was in a D&D area but it's out now. + this.onDragExit(); + } + else if(this._oldArea == null){ + // case when the dragNode was out a D&D area but it's in now. + this.onDragEnter(); + } + else{ + // case when the dragNode was in a D&D area and enter in an other D&D area directly. + this.onDragExit(); + this.onDragEnter(); + } + } + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: _getHoverArea",this._dojoManager.avatar.node,this._currentArea,this._oldArea); + }, + + onDragStart: function(/*Object*/source, /*Array*/nodes, /*Boolean*/copy){ + // summary: + // Occurs when the "/dnd/start" topic is published. + // source: + // the source which provides items + // nodes: + // the list of transferred items + // copy: + // copy items, if true, move items otherwise + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: onDragStart"); + // catch the dragNode to get the type when it's necessary. + this._dragNode = nodes[0]; + this._copy = copy; this._source = source; + // Connect the onMouseMove : + // It's usefull to activate the detection of a D&D area and the dropIndicator place only if + // the dragNode is out of a the source dojo. The classic behaviour of the dojo source is kept. + this._outSourceHandler = dojo.connect(this._dojoManager, "outSource", this, function(){ + //dojo.disconnect(this._outSourceHandler); + if(this._moveHandler == null){ + this._moveHandler = dojo.connect(dojo.doc, "mousemove", this, "onMouseMove"); + } + }); + }, + + onMouseMove: function(/*DOMEvent*/e){ + // summary: + // Occurs when the user moves the mouse. + // e: + // the DOM event + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: onMouseMove"); + // calculate the coordonates of the mouse. + var coords = { + 'x': e.pageX, + 'y': e.pageY + }; + this._getHoverArea(coords); + // if a D&D area has been found and if it's accepted to drop this type of dragged node + if(this._currentArea && this._areaManager._accept){ + // specific case : a dropIndicator can be hidden (see onDndSource method) + if(this._areaManager._dropIndicator.node.style.visibility == "hidden"){ + this._areaManager._dropIndicator.node.style.visibility = ""; + dojo.addClass(this._dojoManager.avatar.node, "dojoDndAvatarCanDrop"); + } + // place the dropIndicator in D&D Area with a default size. + this._areaManager.placeDropIndicator(coords, this.dropIndicatorSize); + } + }, + + onDragEnter: function(){ + // summary: + // Occurs when the user drages an DOJO dnd item inside a D&D dojoX area. + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: onDragEnter"); + // Check if the type of dragged node is accepted in the selected D&D dojoX Area. + var _dndType = this._dragNode.getAttribute("dndType"); + // need to have an array as type + var type = (_dndType) ? _dndType.split(/\s*,\s*/) : ["text"]; + this._areaManager._isAccepted(type, this._areaManager._areaList[this._areaManager._currentIndexArea].accept); + // if the D&D dojoX Area accepts the drop, change the color of Avatar. + if(this._dojoManager.avatar){ + if(this._areaManager._accept){ + dojo.addClass(this._dojoManager.avatar.node, "dojoDndAvatarCanDrop"); + } + else{ + dojo.removeClass(this._dojoManager.avatar.node, "dojoDndAvatarCanDrop"); + } + } + }, + + onDragExit: function(){ + // summary: + // Occurs when the user leaves a D&D dojoX area after dragging an DOJO dnd item over it. + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: onDragExit"); + // if the dragged node exits of a D&D dojoX Area : + this._areaManager._accept = false; + // change color of avatar + if(this._dojoManager.avatar){ + dojo.removeClass(this._dojoManager.avatar.node, "dojoDndAvatarCanDrop"); + } + // reset all variables and remove the dropIndicator. + if(this._currentArea == null){ + this._areaManager._dropMode.refreshItems(this._areaManager._areaList[this._areaManager._oldIndexArea], this._areaManager._oldDropIndex, this.dropIndicatorSize, false); + this._areaManager._resetAfterDrop(); + } + else{ + this._areaManager._dropIndicator.remove(); + } + }, + + isAccepted: function(/*Node*/node, /*Object*/accept){ + // summary: + // Check if a dragNode is accepted into a dojo target. + // node: + // The dragged node. + // accept: + // Object containing the type accepted for a target dojo. + // returns: + // true if the dragged node is accepted in the target dojo. + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: isAccepted"); + var type = (node.getAttribute("dndType")) ? node.getAttribute("dndType") : "text"; + if(type && type in accept) + return true; // Boolean + else + return false; // Boolean + }, + + onDndSource: function(/*Object*/ source){ + // summary: + // Called when the mouse enters or exits of a source dojo. + // source: + // the dojo source/target + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: onDndSource",source); + // Only the case : "source dojo into a D&D dojoX Area" is treated. + if(this._currentArea == null){ + return; + } + if(source){ + // Enter in a source/target dojo. + // test if the type of draggedNode is accepted : + var accept = false; + if(this._dojoManager.target == source){ + accept = true; + } + else{ + accept = this.isAccepted(this._dragNode, source.accept); + } + if(accept){ + // disconnect the onMouseMove to disabled the search of a drop zone in the D&D dojoX Area. + dojo.disconnect(this._moveHandler); + this._currentArea = this._moveHandler = null; + // hidden the visibility of dojoX dropIndicator to prevent an offset when the dropIndicator disappears. + // test if drop indicator is visible before applaying hidden style. + var dropIndicator = this._areaManager._dropIndicator.node; + if(dropIndicator && dropIndicator.parentNode !== null && dropIndicator.parentNode.nodeType == 1) + dropIndicator.style.visibility = "hidden"; + } + else{ + // if the type of dragged node is not accepted in the target dojo, the color of avatar + // have to be the same that the color of D&D dojoX Area acceptance. + this._resetAvatar(); + } + } + else{ + // Exit of a source/target dojo. + // reconnect the onMouseMove to enabled the search of a drop zone in the D&D dojox Area. + if(!this._moveHandler) + this._moveHandler = dojo.connect(dojo.doc, "mousemove", this, "onMouseMove"); + + this._resetAvatar(); + } + }, + + _resetAvatar: function(){ + // summary: + // Function executed in onDndSource function to set the avatar + // acceptance according to the dojox DnD AreaManager Acceptance. + // It is used when The mouse exit a source/target dojo or if the + // dragged node is not accepted in dojo source / target. + // tags: + // protected + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: _resetAvatar"); + if(this._dojoManager.avatar){ + if(this._areaManager._accept){ + dojo.addClass(this._dojoManager.avatar.node, "dojoDndAvatarCanDrop"); + } + else{ + dojo.removeClass(this._dojoManager.avatar.node, "dojoDndAvatarCanDrop"); + } + } + }, + + onDropCancel: function(){ + // summary: + // Occurs when the "/dnd/cancel" topic is published. + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: onDropCancel"); + if(this._currentArea == null){ + // the dragged node is not in the D&D dojox Area => Cancel + this._areaManager._resetAfterDrop(); + dojo.disconnect(this._moveHandler); + dojo.disconnect(this._outSourceHandler); + this._currentArea = this._moveHandler = this._outSourceHandler = null; + } + else{ + // the dragged node is in the D&D dojox Area + // (catch when dragged node exits of a source/target dojo and stays in the same D&D dojox Area) + // dojo cancel the drop but it's authorized in the D&D Area + if(this._areaManager._accept){ + this.onDrop(this._source, [this._dragNode], this._copy, this._currentArea); + } + else{ + this._currentArea = null; + dojo.disconnect(this._outSourceHandler); + dojo.disconnect(this._moveHandler); + this._moveHandler = this._outSourceHandler = null; + } + } + }, + + onDrop: function(/*Object*/source, /*Array*/nodes, /*Boolean*/copy){ + // summary: + // Occurs when the user leaves a D&D dojox area after dragging an DOJO dnd item over it. + // source: + // the source which provides items + // nodes: + // the list of transferred items + // copy: + // copy items, if true, move items otherwise + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndFromDojo ::: onDrop", this._currentArea); + dojo.disconnect(this._moveHandler); + dojo.disconnect(this._outSourceHandler); + this._moveHandler = this._outSourceHandler = null; + if(this._currentArea){ + var dropIndex = this._areaManager._currentDropIndex; + dojo.publish("/dnd/drop/after", [source, nodes, copy, this._currentArea, dropIndex]); + this._currentArea = null; + } + if(this._areaManager._dropIndicator.node.style.visibility == "hidden"){ + this._areaManager._dropIndicator.node.style.visibility = ""; + } + this._areaManager._resetAfterDrop(); + } + }); + + dojox.mdnd.adapter._dndFromDojo = null; + dojox.mdnd.adapter._dndFromDojo = new dojox.mdnd.adapter.DndFromDojo(); + return dfd; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/adapter/DndToDojo.js b/js/dojo-release-1.7.2-src/dojox/mdnd/adapter/DndToDojo.js new file mode 100644 index 0000000..c93bf95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/adapter/DndToDojo.js @@ -0,0 +1,483 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/html","dojo/_base/connect", + "dojo/_base/window","dojo/_base/array","dojox/mdnd/PureSource","dojox/mdnd/LazyManager"],function(dojo){ + var dtd = dojo.declare( + "dojox.mdnd.adapter.DndToDojo", + null, + { + // summary: + // Allow communication between an item of dojox D&D area to a target dojo. + + // _dojoList: Array + // Array containing object references the dojo Target list + _dojoList: null, + + // _currentDojoArea: DOMNode + // Representing the current dojo area + _currentDojoArea: null, + + // _dojoxManager: dojox.mdnd.AreaManager + // The reference to the dojox AreaManager + _dojoxManager: null, + + // _dragStartHandler: Object + // Handle to keep start subscribe + _dragStartHandler: null, + + // _dropHandler: Object + // Handle to keep drop subscribe + _dropHandler: null, + + // _moveHandler: Object + // Handle to keep move subscribe + _moveHandler: null, + + // _moveUpHandler: Object + // Handle to kee move up subscribe + _moveUpHandler: null, + + // _draggedNode: DOMNode + // The current dragged node + _draggedNode: null, + + constructor: function(){ + this._dojoList = []; + this._currentDojoArea = null; + this._dojoxManager = dojox.mdnd.areaManager(); + this._dragStartHandler = dojo.subscribe("/dojox/mdnd/drag/start", this, function(node, sourceArea, sourceDropIndex){ + this._draggedNode = node; + this._moveHandler = dojo.connect(dojo.doc, "onmousemove", this, "onMouseMove"); + }); + this._dropHandler = dojo.subscribe("/dojox/mdnd/drop", this, function(node, targetArea, indexChild){ + if(this._currentDojoArea){ + dojo.publish("/dojox/mdnd/adapter/dndToDojo/cancel", [this._currentDojoArea.node, this._currentDojoArea.type, this._draggedNode, this.accept]); + } + this._draggedNode = null; + this._currentDojoArea = null; + dojo.disconnect(this._moveHandler); + }); + }, + + _getIndexDojoArea: function(/*node*/area){ + // summary: + // Check if a dojo area is registered. + // area: DOMNode + // A node corresponding to the target dojo. + // returns: + // The index of area if it's registered else -1. + // tags: + // protected + + //console.log('dojox.mdnd.adapter.DndToDojo ::: _getIndexDojoArea'); + if(area){ + for(var i = 0, l = this._dojoList.length; i < l; i++){ + if(this._dojoList[i].node === area){ + return i; + } + } + } + return -1; + }, + + _initCoordinates: function(/*DOMNode*/area){ + // summary: + // Initialize the coordinates of the target dojo. + // area: + // A registered DOM node. + // returns: + // An object which contains coordinates : *{x:0,y:,x1:0,y1:0}* + // tags: + // protected + + //console.log('dojox.mdnd.adapter.DndToDojo ::: _initCoordinates'); + if(area){ + var position = dojo.position(area, true), + coords = {}; + coords.x = position.x + coords.y = position.y + coords.x1 = position.x + position.w; + coords.y1 = position.y + position.h; + return coords; // Object + } + return null; + }, + + register: function(/*DOMNode*/area, /*String*/ type,/*Boolean*/ dojoTarget){ + // summary: + // Register a target dojo. + // The target is represented by an object containing : + // - the dojo area node + // - the type reference to identify a group node + // - the coords of the area to enable refresh position + // area: + // The DOM node which has to be registered. + // type: + // A String to identify the node. + // dojoTarger: + // True if the dojo D&D have to be enable when mouse is hover the registered target dojo. + + //console.log("dojox.mdnd.adapter.DndToDojo ::: registerDojoArea", area, type, dojoTarget); + if(this._getIndexDojoArea(area) == -1){ + var coords = this._initCoordinates(area), + object = { + 'node': area, + 'type': type, + 'dojo': (dojoTarget)?dojoTarget:false, + 'coords': coords + }; + this._dojoList.push(object); + // initialization of the _fakeSource to allow Dnd switching + if(dojoTarget && !this._lazyManager){ + this._lazyManager = new dojox.mdnd.LazyManager(); + } + } + }, + + unregisterByNode: function(/*DOMNode*/area){ + // summary: + // Unregister a target dojo. + // area: + // The DOM node of target dojo. + + //console.log("dojox.mdnd.adapter.DndToDojo ::: unregisterByNode", area); + var index = this._getIndexDojoArea(area); + // if area is registered + if(index != -1){ + this._dojoList.splice(index, 1); + } + }, + + unregisterByType: function(/*String*/type){ + // summary: + // Unregister several targets dojo having the same type passing in parameter. + // type: + // A String to identify dojo targets. + + //console.log("dojox.mdnd.adapter.DndToDojo ::: unregisterByType", type); + if(type){ + var tempList = []; + dojo.forEach(this._dojoList, function(item, i){ + if(item.type != type){ + tempList.push(item); + } + }); + this._dojoList = tempList; + } + }, + + unregister: function(){ + // summary: + // Unregister all targets dojo. + + //console.log("dojox.mdnd.adapter.DndToDojo ::: unregister"); + this._dojoList = []; + }, + + refresh: function(){ + // summary: + // Refresh the coordinates of all registered dojo target. + + //console.log("dojox.mdnd.adapter.DndToDojo ::: refresh"); + var dojoList = this._dojoList; + this.unregister(); + dojo.forEach(dojoList, function(dojo){ + dojo.coords = this._initCoordinates(dojo.node); + }, this); + this._dojoList = dojoList; + }, + + refreshByType: function(/*String*/ type){ + // summary: + // Refresh the coordinates of registered dojo target with a specific type. + // type: + // A String to identify dojo targets. + + //console.log("dojox.mdnd.adapter.DndToDojo ::: refresh"); + var dojoList = this._dojoList; + this.unregister(); + dojo.forEach(dojoList, function(dojo){ + if(dojo.type == type){ + dojo.coords = this._initCoordinates(dojo.node); + } + }, this); + this._dojoList = dojoList; + }, + + _getHoverDojoArea: function(/*Object*/coords){ + // summary: + // Check if the coordinates of the mouse is in a dojo target. + // coords: + // Coordinates of the mouse. + // tags: + // protected + + //console.log("dojox.mdnd.adapter.DndToDojo ::: _getHoverDojoArea"); + this._oldDojoArea = this._currentDojoArea; + this._currentDojoArea = null; + var x = coords.x; + var y = coords.y; + var length = this._dojoList.length; + for(var i = 0; i < length; i++){ + var dojoArea = this._dojoList[i]; + var coordinates = dojoArea.coords; + if(coordinates.x <= x && x <= coordinates.x1 && coordinates.y <= y && y <= coordinates.y1){ + this._currentDojoArea = dojoArea; + break; + } + } + }, + + onMouseMove: function(/*DOMEvent*/e){ + // summary: + // Call when the mouse moving after an onStartDrag of AreaManger. + // Check if the coordinates of the mouse is in a dojo target. + // e: + // Event object. + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndToDojo ::: onMouseMove"); + var coords = { + 'x': e.pageX, + 'y': e.pageY + }; + this._getHoverDojoArea(coords); + if(this._currentDojoArea != this._oldDojoArea){ + if(this._currentDojoArea == null){ + this.onDragExit(e); + } + else if(this._oldDojoArea == null){ + this.onDragEnter(e); + } + else{ + this.onDragExit(e); + this.onDragEnter(e); + } + } + }, + + isAccepted: function(/*DOMNode*/draggedNode, /*Object*/ target){ + // summary: + // Return true if the dragged node is accepted. + // This method has to be overwritten according to registered target. + + //console.log("dojox.mdnd.adapter.DndToDojo ::: isAccepted"); + return true; + }, + + + onDragEnter: function(/*DOMEvent*/e){ + // summary: + // Call when the mouse enters in a registered dojo target. + // e: + // The current Javascript Event. + // tags: + // callback + + //console.log("dojox.mdnd.adapter.DndToDojo ::: onDragEnter"); + // specific for drag and drop switch + if(this._currentDojoArea.dojo){ + // disconnect + dojo.disconnect(this._dojoxManager._dragItem.handlers.pop()); + dojo.disconnect(this._dojoxManager._dragItem.handlers.pop()); + //disconnect onmousemove of moveable item + //console.info("before",this._dojoxManager._dragItem.item.events.pop()); + dojo.disconnect(this._dojoxManager._dragItem.item.events.pop()); + dojo.body().removeChild(this._dojoxManager._cover); + dojo.body().removeChild(this._dojoxManager._cover2); + var node = this._dojoxManager._dragItem.item.node; + // hide dragNode : + // disconnect the dojoDndAdapter if it's initialize + if(dojox.mdnd.adapter._dndFromDojo){ + dojox.mdnd.adapter._dndFromDojo.unsubscribeDnd(); + } + dojo.style(node, { + 'position': "relative", + 'top': '0', + 'left': '0' + }); + // launch the drag and drop Dojo. + this._lazyManager.startDrag(e, node); + var handle = dojo.connect(this._lazyManager.manager, "overSource", this, function(){ + dojo.disconnect(handle); + if(this._lazyManager.manager.canDropFlag){ + // remove dropIndicator + this._dojoxManager._dropIndicator.node.style.display = "none"; + } + }); + + this.cancelHandler = dojo.subscribe("/dnd/cancel", this, function(){ + var moveableItem = this._dojoxManager._dragItem.item; + // connect onmousemove of moveable item + // need to reconnect the onmousedown of movable class. + moveableItem.events = [ + dojo.connect(moveableItem.handle, "onmousedown", moveableItem, "onMouseDown") + ]; + // replace the cover and the dragNode in the cover. + dojo.body().appendChild(this._dojoxManager._cover); + dojo.body().appendChild(this._dojoxManager._cover2); + this._dojoxManager._cover.appendChild(moveableItem.node); + + var objectArea = this._dojoxManager._areaList[this._dojoxManager._sourceIndexArea]; + var dropIndex = this._dojoxManager._sourceDropIndex; + var nodeRef = null; + if(dropIndex != objectArea.items.length + && dropIndex != -1){ + nodeRef = objectArea.items[this._dojoxManager._sourceDropIndex].item.node; + } + if(this._dojoxManager._dropIndicator.node.style.display == "none"){ + this._dojoxManager._dropIndicator.node.style.display == ""; + } + this._dojoxManager._dragItem.handlers.push(dojo.connect(this._dojoxManager._dragItem.item, "onDrag", this._dojoxManager, "onDrag")); + this._dojoxManager._dragItem.handlers.push(dojo.connect(this._dojoxManager._dragItem.item, "onDragEnd", this._dojoxManager, "onDrop")); + this._draggedNode.style.display = ""; + this._dojoxManager.onDrop(this._draggedNode); + dojo.unsubscribe(this.cancelHandler); + dojo.unsubscribe(this.dropHandler); + if(dojox.mdnd.adapter._dndFromDojo){ + dojox.mdnd.adapter._dndFromDojo.subscribeDnd(); + } + }); + this.dropHandler = dojo.subscribe("/dnd/drop/before", this, function(params){ + dojo.unsubscribe(this.cancelHandler); + dojo.unsubscribe(this.dropHandler); + this.onDrop(); + }); + } + else{ + this.accept = this.isAccepted(this._dojoxManager._dragItem.item.node, this._currentDojoArea); + if(this.accept){ + // disconnect + dojo.disconnect(this._dojoxManager._dragItem.handlers.pop()); + dojo.disconnect(this._dojoxManager._dragItem.handlers.pop()); + // remove dropIndicator + this._dojoxManager._dropIndicator.node.style.display = "none"; + if(!this._moveUpHandler){ + this._moveUpHandler = dojo.connect(dojo.doc, "onmouseup", this, "onDrop"); + } + } + } + // publish a topic + dojo.publish("/dojox/mdnd/adapter/dndToDojo/over",[this._currentDojoArea.node, this._currentDojoArea.type, this._draggedNode, this.accept]); + }, + + onDragExit: function(/*DOMEvent*/e){ + // summary: + // Call when the mouse exit of a registered dojo target. + // e: + // current javscript event + + //console.log("dojox.mdnd.adapter.DndToDojo ::: onDragExit",e, this._dojoxManager._dragItem.item); + // set the old height of dropIndicator. + if(this._oldDojoArea.dojo){ + // unsubscribe the topic /dnd/cancel and /dnd/drop/before + dojo.unsubscribe(this.cancelHandler); + dojo.unsubscribe(this.dropHandler); + // launch Drag and Drop + var moveableItem = this._dojoxManager._dragItem.item; + // connect onmousemove of moveable item + this._dojoxManager._dragItem.item.events.push(dojo.connect( + moveableItem.node.ownerDocument, + "onmousemove", + moveableItem, + "onMove" + )); + // replace the cover and the dragNode in the cover. + dojo.body().appendChild(this._dojoxManager._cover); + dojo.body().appendChild(this._dojoxManager._cover2); + this._dojoxManager._cover.appendChild(moveableItem.node); + // fix style : + var style = moveableItem.node.style; + style.position = "absolute"; + style.left = (moveableItem.offsetDrag.l + e.pageX)+"px"; + style.top = (moveableItem.offsetDrag.t + e.pageX)+"px"; + style.display = ""; + // stop dojoDrag + this._lazyManager.cancelDrag(); + // reconnect the dndFromDojo + if(dojox.mdnd.adapter._dndFromDojo){ + dojox.mdnd.adapter._dndFromDojo.subscribeDnd(); + } + if(this._dojoxManager._dropIndicator.node.style.display == "none"){ + this._dojoxManager._dropIndicator.node.style.display = ""; + } + // reconnect the areaManager. + this._dojoxManager._dragItem.handlers.push(dojo.connect(this._dojoxManager._dragItem.item, "onDrag", this._dojoxManager, "onDrag")); + this._dojoxManager._dragItem.handlers.push(dojo.connect(this._dojoxManager._dragItem.item, "onDragEnd", this._dojoxManager, "onDrop")); + this._dojoxManager._dragItem.item.onMove(e); + } + else{ + if(this.accept){ + // disconnect the mouseUp event. + if(this._moveUpHandler){ + dojo.disconnect(this._moveUpHandler); + this._moveUpHandler = null; + } + // redisplay dropIndicator + if(this._dojoxManager._dropIndicator.node.style.display == "none"){ + this._dojoxManager._dropIndicator.node.style.display = ""; + } + // reconnect the areaManager. + this._dojoxManager._dragItem.handlers.push(dojo.connect(this._dojoxManager._dragItem.item, "onDrag", this._dojoxManager, "onDrag")); + this._dojoxManager._dragItem.handlers.push(dojo.connect(this._dojoxManager._dragItem.item, "onDragEnd", this._dojoxManager, "onDrop")); + this._dojoxManager._dragItem.item.onMove(e); + } + } + // publish a topic + dojo.publish("/dojox/mdnd/adapter/dndToDojo/out",[this._oldDojoArea.node, this._oldDojoArea.type, this._draggedNode, this.accept]); + }, + + onDrop: function(/*DOMEvent*/e){ + // summary: + // Called when an onmouseup event is loaded on a registered target dojo. + // e: + // Event object. + + // console.log("dojox.mdnd.adapter.DndToDojo ::: onDrop", this._currentDojoArea); + if(this._currentDojoArea.dojo){ + // reconnect the dojoDndAdapter + if(dojox.mdnd.adapter._dndFromDojo){ + dojox.mdnd.adapter._dndFromDojo.subscribeDnd(); + } + } + if(this._dojoxManager._dropIndicator.node.style.display == "none"){ + this._dojoxManager._dropIndicator.node.style.display = ""; + } + // remove the cover + if(this._dojoxManager._cover.parentNode && this._dojoxManager._cover.parentNode.nodeType == 1){ + dojo.body().removeChild(this._dojoxManager._cover); + dojo.body().removeChild(this._dojoxManager._cover2); + } + // remove draggedNode of target : + if(this._draggedNode.parentNode == this._dojoxManager._cover){ + this._dojoxManager._cover.removeChild(this._draggedNode); + } + dojo.disconnect(this._moveHandler); + dojo.disconnect(this._moveUpHandler); + this._moveHandler = this._moveUpHandler = null; + dojo.publish("/dojox/mdnd/adapter/dndToDojo/drop", [this._draggedNode, this._currentDojoArea.node, this._currentDojoArea.type]); + dojo.removeClass(this._draggedNode, "dragNode"); + var style = this._draggedNode.style; + style.position = "relative"; + style.left = "0"; + style.top = "0"; + style.width = "auto"; + dojo.forEach(this._dojoxManager._dragItem.handlers, dojo.disconnect); + this._dojoxManager._deleteMoveableItem(this._dojoxManager._dragItem); + this._draggedNode = null; + this._currentDojoArea = null; + // reset of area manager. + this._dojoxManager._resetAfterDrop(); + } + }); + + dojox.mdnd.adapter._dndToDojo = null; + dojox.mdnd.adapter.dndToDojo = function(){ + // summary: + // returns the current areaManager, creates one if it is not created yet + if(!dojox.mdnd.adapter._dndToDojo){ + dojox.mdnd.adapter._dndToDojo = new dojox.mdnd.adapter.DndToDojo(); + } + return dojox.mdnd.adapter._dndToDojo; // Object + }; + return dtd; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/DefaultDropMode.js b/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/DefaultDropMode.js new file mode 100644 index 0000000..673a7b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/DefaultDropMode.js @@ -0,0 +1,337 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/array", + "dojo/_base/html", + "dojox/mdnd/AreaManager" +],function(dojo){ + var ddm = dojo.declare("dojox.mdnd.dropMode.DefaultDropMode", null, { + // summary: + // Enabled a type of calcul for Dnd. + // Default class to find the nearest target. + + // _oldXPoint: Integer + // used to save a X position + _oldXPoint: null, + + // _oldYPoint: Integer + // used to save a Y position + _oldYPoint: null, + + // _oldBehaviour: String + // see + _oldBehaviour: "up", + + addArea: function(/*Array*/areas, /*Object*/object){ + // summary: + // Add a DnD Area into an array sorting by the x position. + // areas: + // array of areas + // object: + // data type of a DndArea + // returns: + // a sorted area + + //console.log("dojox.mdnd.dropMode.DefaultDropMode ::: addArea"); + var length = areas.length; + var position = dojo.position(object.node, true); + object.coords = {'x':position.x, 'y':position.y}; + if (length == 0) { + areas.push(object); + }else{ + var x = object.coords.x; + for (var i = 0; i < length; i++) { + if (x < areas[i].coords.x) { + for (var j = length-1; j >= i; j--) + areas[j + 1] = areas[j]; + areas[i] = object; + break; + } + } + if (i == length) + areas.push(object); + } + return areas; // Array + }, + + updateAreas: function(/*Array*/areaList){ + // summary: + // Refresh intervals between areas to determinate the nearest area to drop an item. + // Algorithm : + // the marker should be the vertical line passing by the + // central point between two contiguous areas. + // Note: + // If the page has only one targetArea, it's not necessary to calculate coords. + // areaList: + // array of areas + + //console.log("dojox.mdnd.dropMode.DefaultDropMode ::: initAreas"); + var length = areaList.length; + if (length > 1){ + var currentRight, nextLeft; + for (var i = 0; i < length; i++) { + var area = areaList[i]; + var nextArea; + area.coords.x1 = -1; + area.coords.x2 = -1; + if (i == 0) { + nextArea = areaList[i+1]; + this._updateArea(area); + this._updateArea(nextArea); + currentRight = area.coords.x + area.node.offsetWidth; + nextLeft = nextArea.coords.x; + area.coords.x2 = currentRight + (nextLeft-currentRight)/2; + } + else if (i == length-1) { + area.coords.x1 = areaList[i-1].coords.x2; + }else{ + nextArea = areaList[i+1]; + this._updateArea(nextArea); + currentRight = area.coords.x + area.node.offsetWidth; + nextLeft = nextArea.coords.x; + area.coords.x1 = areaList[i-1].coords.x2; + area.coords.x2 = currentRight + (nextLeft-currentRight)/2; + } + } + } + }, + + _updateArea : function(/*Object*/area){ + // summary: + // update the DnD area object (i.e. update coordinates of its DOM node) + // area: + // the DnD area + // tags: + // protected + + //console.log("dojox.mdnd.dropMode.DefaultDropMode ::: _updateArea"); + var position = dojo.position(area.node, true); + area.coords.x = position.x; + area.coords.y = position.y; + }, + + initItems: function(/*Object*/area){ + // summary: + // initialize the horizontal line in order to determinate the drop zone. + // area: + // the DnD area + + //console.log("dojox.mdnd.dropMode.DefaultDropMode ::: initItems"); + dojo.forEach(area.items, function(obj){ + //get the vertical middle of the item + var node = obj.item.node; + var position = dojo.position(node, true); + var y = position.y + position.h/2; + obj.y = y; + }); + area.initItems = true; + }, + + refreshItems: function(/*Object*/area, /*Integer*/indexItem, /*Object*/size, /*Boolean*/added){ + // summary: + // take into account the drop indicator DOM element in order to compute horizontal lines + // area: + // a DnD area object + // indexItem: + // index of a draggable item + // size: + // dropIndicator size + // added: + // boolean to know if a dropIndicator has been added or deleted + + //console.log("dojox.mdnd.dropMode.DefaultDropMode ::: refreshItems"); + if (indexItem == -1) { + return; + }else if(area && size && size.h){ + var height = size.h; + if (area.margin){ + height += area.margin.t; + } + var length = area.items.length; + for (var i=indexItem; i this._oldYPoint) { + this._oldBehaviour = "down"; + y += size.h; + } + else + if (y <= this._oldYPoint) { + this._oldBehaviour = "up"; + } + } + this._oldYPoint = y; + return { + 'x': coords.x + (size.w / 2), + 'y': y + }; // Object + }, + + getTargetArea: function(/*Array*/areaList, /*Object*/ coords, /*integer*/currentIndexArea ){ + // summary: + // get the nearest DnD area. + // Coordinates are basically provided by the method. + // areaList: + // a list of DnD areas objects + // coords: + // coordinates [x,y] of the dragItem + // currentIndexArea: + // an index representing the active DnD area + // returns: + // the index of the DnD area + + //console.log("dojox.mdnd.dropMode.DefaultDropMode ::: getTargetArea"); + var index = 0; + var x = coords.x; + var end = areaList.length; + if (end > 1) { + var start = 0, direction = "right", compute = false; + if (currentIndexArea == -1 || arguments.length<3) { + // first time : Need to search the nearest area in all areas. + compute = true; + } + else { + // check if it's always the same area + if (this._checkInterval(areaList, currentIndexArea, x)){ + index = currentIndexArea; + }else{ + if (this._oldXPoint < x){ + start = currentIndexArea + 1; + }else{ + start = currentIndexArea - 1; + end = 0; + direction = "left"; + } + compute = true; + } + } + if (compute) { + if (direction === "right") { + for (var i = start; i < end; i++) { + if (this._checkInterval(areaList, i, x)) { + index = i; + break; + } + } + }else{ + for (var i = start; i >= end; i--) { + if (this._checkInterval(areaList, i, x)) { + index = i; + break; + } + } + } + } + } + this._oldXPoint = x; + return index; // Integer + }, + + _checkInterval: function(/*Array*/areaList, /*Integer*/index, /*Coord*/x){ + // summary: + // check if the dragNode is in the interval. + // The x coordinate is basically provided by the method. + // areaList: + // a list of DnD areas objects + // index: + // index of a DnD area (to get the interval) + // x: + // coordinate x, of the dragNode + // returns: + // true if the dragNode is in intervall + // tags: + // protected + + var coords = areaList[index].coords; + if (coords.x1 == -1) { + if (x <= coords.x2) { + return true; + } + } + else + if (coords.x2 == -1) { + if (x > coords.x1) { + return true; + } + } + else { + if (coords.x1 < x && x <= coords.x2) { + return true; + } + } + return false; // Boolean + }, + + getDropIndex: function(/*Object*/ targetArea, /*Object*/ coords){ + // summary: + // Return the index where the drop has to be placed. + // targetArea: + // a DnD area object + // coords: + // coordinates [x,y] of the draggable item + // returns: + // a number + // or -1 if the area has no children or the drop index represents the last position in to the area + + //console.log("dojox.mdnd.dropMode.DefaultDropMode ::: getDropIndex"); + var length = targetArea.items.length; + var coordinates = targetArea.coords; + var y = coords.y; + if (length > 0) { + // course all children in the target area. + for (var i = 0; i < length; i++) { + // compare y value with y value of children + if (y < targetArea.items[i].y) { + return i; // Integer + } + else { + if (i == length-1) { + return -1; + } + } + } + } + return -1; + }, + + destroy: function(){ + // can be overwritten. + } + }); + + //------------ + //Singleton + //------------ + dojox.mdnd.areaManager()._dropMode = new dojox.mdnd.dropMode.DefaultDropMode(); + return ddm; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/OverDropMode.js b/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/OverDropMode.js new file mode 100644 index 0000000..fabdac6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/OverDropMode.js @@ -0,0 +1,306 @@ +define(["dojo/_base/kernel","dojo/_base/declare","dojo/_base/connect","dojo/_base/html", + "dojo/_base/array","dojox/mdnd/AreaManager"],function(dojo){ + var odm = dojo.declare( + "dojox.mdnd.dropMode.OverDropMode", + null, + { + // summary: + // Default class to find the nearest target only if the mouse is over an area. + + // _oldXPoint: Integer + // used to save a X position + _oldXPoint: null, + + // _oldYPoint: Integer + // used to save a Y position + _oldYPoint: null, + + // _oldBehaviour: Integer + // see getDragpoint() + _oldBehaviour: "up", + + constructor: function(){ + //console.log("dojox.mdnd.dropMode.OverDropMode ::: constructor"); + this._dragHandler = [ + dojo.connect(dojox.mdnd.areaManager(), "onDragEnter", function(coords, size){ + var m = dojox.mdnd.areaManager(); + if(m._oldIndexArea == -1){ + m._oldIndexArea = m._lastValidIndexArea; + } + }) + ]; + + }, + + addArea: function(/*Array*/areas, /*Object*/object){ + // summary: + // Add a D&D Area into an array sorting by the x position. + // areas: + // array of areas + // object: + // data type of a DndArea + // returns: + // a sorted area + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: addArea"); + var length = areas.length, + position = dojo.position(object.node, true); + object.coords = {'x':position.x, 'y':position.y}; + if(length == 0){ + areas.push(object); + } + else{ + var x = object.coords.x; + for(var i = 0; i < length; i++){ + if(x < areas[i].coords.x){ + for(var j = length-1; j >= i; j--) + areas[j + 1] = areas[j]; + areas[i] = object; + break; + } + } + if(i == length){ + areas.push(object); + } + } + return areas; // Array + }, + + updateAreas: function(/*Array*/areaList){ + // summary: + // refresh areas position and size to determinate the nearest area to drop an item + // description: + // the area position (and size) is equal to the postion of the domNode associated. + // areaList: + // array of areas + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: updateAreas"); + var length = areaList.length; + for(var i = 0; i < length; i++){ + this._updateArea(areaList[i]); + } + }, + + _updateArea : function(/*Object*/area){ + // summary: + // update the D&D area object (i.e. update coordinates of its DOM node) + // area: + // the D&D area. + // tags: + // protected + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: addArea"); + var position = dojo.position(area.node, true); + area.coords.x = position.x; + area.coords.x2 = position.x + position.w; + area.coords.y = position.y; + }, + + initItems: function(/*Object*/area){ + // summary: + // initialize the horizontal line in order to determinate the drop zone. + // area: + // the D&D area. + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: initItems"); + dojo.forEach(area.items, function(obj){ + //get the vertical middle of the item + var node = obj.item.node; + var position = dojo.position(node, true); + var y = position.y + position.h/2; + obj.y = y; + }); + area.initItems = true; + }, + + refreshItems: function(/*Object*/area, /*Integer*/indexItem, /*Object*/size, /*Boolean*/added){ + // summary: + // take into account the drop indicator DOM element in order to compute horizontal lines + // area: + // a D&D area object + // indexItem: + // index of a draggable item + // size: + // dropIndicator size + // added: + // boolean to know if a dropIndicator has been added or deleted + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: refreshItems", area, indexItem, size, added); + if(indexItem == -1){ + return; + } + else if(area && size && size.h){ + var height = size.h; + if(area.margin){ + height += area.margin.t; + } + var length = area.items.length; + for(var i = indexItem; i < length; i++){ + var item = area.items[i]; + if(added){ + item.y += height; + } + else{ + item.y -= height; + } + } + } + }, + + getDragPoint: function(/*Object*/coords, /*Object*/size, /*Object*/mousePosition){ + // summary: + // return coordinates of the draggable item. + // - For X point : the x position of mouse + // - For Y point : the y position of mouse + // returns: + // an object of coordinates + // examples:{'x':10,'y':10} + // coords: + // an object encapsulating X and Y position + // size: + // an object encapsulating width and height values + // mousePosition: + // coordinates of mouse + + //console.log("dojox.mdnd.OverDropMode ::: getDragPoint"); + return { // Object + 'x': mousePosition.x, + 'y': mousePosition.y + } + }, + + + getTargetArea: function(/*Array*/areaList, /*Object*/ coords, /*integer*/currentIndexArea ){ + // summary: + // get the nearest D&D area. + // areaList: + // a list of D&D areas objects + // coords: + // coordinates [x,y] of the dragItem (see getDragPoint()) + // currentIndexArea: + // an index representing the active D&D area + //returns: + // the index of the D&D area + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: getTargetArea"); + var index = 0; + var x = coords.x; + var y = coords.y; + var end = areaList.length; + var start = 0, direction = "right", compute = false; + if(currentIndexArea == -1 || arguments.length < 3){ + // first time : Need to search the nearest area in all areas. + compute = true; + } + else{ + // check if it's always the same area + if(this._checkInterval(areaList, currentIndexArea, x, y)){ + index = currentIndexArea; + } + else{ + if(this._oldXPoint < x){ + start = currentIndexArea + 1; + } + else{ + start = currentIndexArea - 1; + end = 0; + direction = "left"; + } + compute = true; + } + } + if(compute){ + if(direction === "right"){ + for(var i = start; i < end; i++){ + if(this._checkInterval(areaList, i, x, y)){ + index = i; + break; + } + } + if(i == end){ + index = -1; + } + } + else{ + for(var i = start; i >= end; i--){ + if(this._checkInterval(areaList, i, x, y)){ + index = i; + break; + } + } + if(i == end-1){ + index = -1; + } + } + } + this._oldXPoint = x; + return index; // Integer + }, + + _checkInterval: function(/*Array*/areaList, /*Integer*/index, /*Coord*/x, /*Coord*/y){ + // summary: + // check if the dragNode is in the interval. + // returns: + // true if the dragNode is in intervall + // areaList: + // a list of D&D areas objects + // index: + // index of a D&D area (to get the interval) + // x: + // coordinate x, of the dragNode (see getDragPoint()) + // tags: + // protected + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: _checkInterval"); + var area = areaList[index]; + var node = area.node; + var coords = area.coords; + var startX = coords.x; + var endX = coords.x2; + var startY = coords.y; + var endY = startY + node.offsetHeight; + if(startX <= x && x <= endX && startY <= y && y <= endY){ + return true; + } + return false; // Boolean + }, + + getDropIndex: function(/*Object*/ targetArea, /*Object*/ coords){ + // summary: + // Return the index where the drop has to be placed. + // targetArea: + // a D&D area object. + // coords: + // coordinates [x,y] of the draggable item. + // returns: + // a number or -1 if the area has no children or the drop index represents the last position in to the area + + //console.log("dojox.mdnd.dropMode.OverDropMode ::: getDropIndex"); + var length = targetArea.items.length; + var coordinates = targetArea.coords; + var y = coords.y; + if(length > 0){ + // course all children in the target area. + for(var i = 0; i < length; i++){ + // compare y value with y value of children + if(y < targetArea.items[i].y){ + return i; // integer + } + else{ + if(i == length-1){ + return -1; // integer + } + } + } + } + return -1; //integer + }, + + destroy: function(){ + dojo.forEach(this._dragHandler, dojo.disconnect); + } + }); + + dojox.mdnd.areaManager()._dropMode = new dojox.mdnd.dropMode.OverDropMode(); + return odm; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/VerticalDropMode.js b/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/VerticalDropMode.js new file mode 100644 index 0000000..612c640 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/dropMode/VerticalDropMode.js @@ -0,0 +1,347 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/html", + "dojo/_base/array", + "dojox/mdnd/AreaManager" +],function(dojo){ + var vdm = dojo.declare( + "dojox.mdnd.dropMode.VerticalDropMode", + null, + { + // summary: + // Enabled a type of calcul for Dnd. + // Default class to find the nearest target. + + // _oldXPoint: Integer + // used to save a X position + _oldXPoint: null, + + // _oldYPoint: Integer + // used to save a Y position + _oldYPoint: null, + + // _oldBehaviour: String + // see + _oldBehaviour: "up", + + addArea: function(/*Array*/areas, /*Object*/object){ + // summary: + // Add a DnD Area into an array sorting by the x position. + // areas: + // array of areas + // object: + // data type of a DndArea + // returns: + // a sorted area + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: addArea"); + var length = areas.length; + var position = dojo.position(object.node, true); + object.coords = {'x':position.x, 'y':position.y}; + if(length == 0){ + areas.push(object); + } + else{ + var x = object.coords.x; + for(var i = 0; i < length; i++){ + if(x < areas[i].coords.x){ + for(var j = length-1; j >= i; j--) + areas[j + 1] = areas[j]; + areas[i] = object; + break; + } + } + if(i == length){ + areas.push(object); + } + } + return areas; // Array + }, + + updateAreas: function(/*Array*/areaList){ + // summary: + // Refresh intervals between areas to determinate the nearest area to drop an item. + // Algorithm : + // the marker should be the vertical line passing by the + // central point between two contiguous areas. + // Note: + // If the page has only one targetArea, it's not necessary to calculate coords. + // areaList: + // array of areas + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: initAreas"); + var length = areaList.length; + if(length > 1){ + var currentRight, nextLeft; + for(var i = 0; i < length; i++){ + var area = areaList[i]; + var nextArea; + area.coords.x1 = -1; + area.coords.x2 = -1; + if(i == 0){ + nextArea = areaList[i+1]; + this._updateArea(area); + this._updateArea(nextArea); + currentRight = area.coords.x + area.node.offsetWidth; + nextLeft = nextArea.coords.x; + area.coords.x2 = currentRight + (nextLeft-currentRight)/2; + } + else if(i == length-1){ + area.coords.x1 = areaList[i-1].coords.x2; + } + else{ + nextArea = areaList[i+1]; + this._updateArea(nextArea); + currentRight = area.coords.x + area.node.offsetWidth; + nextLeft = nextArea.coords.x; + area.coords.x1 = areaList[i-1].coords.x2; + area.coords.x2 = currentRight + (nextLeft-currentRight)/2; + } + } + } + }, + + _updateArea : function(/*Object*/area){ + // summary: + // update the DnD area object (i.e. update coordinates of its DOM node) + // area: + // the DnD area + // tags: + // protected + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: _updateArea"); + var position = dojo.position(area.node, true); + area.coords.x = position.x; + area.coords.y = position.y; + }, + + initItems: function(/*Object*/area){ + // summary: + // initialize the horizontal line in order to determinate the drop zone. + // area: + // the DnD area + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: initItems"); + dojo.forEach(area.items, function(obj){ + //get the vertical middle of the item + var node = obj.item.node; + var position = dojo.position(node, true); + var y = position.y + position.h/2; + obj.y = y; + }); + area.initItems = true; + }, + + refreshItems: function(/*Object*/area, /*Integer*/indexItem, /*Object*/size, /*Boolean*/added){ + // summary: + // take into account the drop indicator DOM element in order to compute horizontal lines + // area: + // a DnD area object + // indexItem: + // index of a draggable item + // size: + // dropIndicator size + // added: + // boolean to know if a dropIndicator has been added or deleted + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: refreshItems"); + if(indexItem == -1){ + return; + } + else if(area && size && size.h){ + var height = size.h; + if(area.margin){ + height += area.margin.t; + } + var length = area.items.length; + for(var i = indexItem; i < length; i++){ + var item = area.items[i]; + if(added){ + item.y += height; + } + else{ + item.y -= height; + } + } + } + }, + + getDragPoint: function(/*Object*/coords, /*Object*/size, /*Object*/mousePosition){ + // summary: + // return coordinates of the draggable item + // description: + // return for: + // - X point : the middle + // - Y point : search if the user goes up or goes down with his mouse. + // - Up : top of the draggable item + // - Down : bottom of the draggable item + // coords: + // an object encapsulating X and Y position + // size: + // an object encapsulating width and height values + // mousePosition: + // coordinates of mouse + // returns: + // an object of coordinates + // example : {'x':10,'y':10} + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: getDragPoint"); + var y = coords.y; + if(this._oldYPoint){ + if(y > this._oldYPoint){ + this._oldBehaviour = "down"; + y += size.h; + } + else + if(y <= this._oldYPoint){ + this._oldBehaviour = "up"; + } + } + this._oldYPoint = y; + return { + 'x': coords.x + (size.w / 2), + 'y': y + }; // Object + }, + + getTargetArea: function(/*Array*/areaList, /*Object*/ coords, /*integer*/currentIndexArea ){ + // summary: + // get the nearest DnD area. + // Coordinates are basically provided by the method. + // areaList: + // a list of DnD areas objects + // coords: + // coordinates [x,y] of the dragItem + // currentIndexArea: + // an index representing the active DnD area + // returns: + // the index of the DnD area + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: getTargetArea"); + var index = 0; + var x = coords.x; + var end = areaList.length; + if(end > 1){ + var start = 0, direction = "right", compute = false; + if(currentIndexArea == -1 || arguments.length < 3){ + // first time : Need to search the nearest area in all areas. + compute = true; + } + else{ + // check if it's always the same area + if(this._checkInterval(areaList, currentIndexArea, x)){ + index = currentIndexArea; + } + else{ + if(this._oldXPoint < x){ + start = currentIndexArea + 1; + } + else{ + start = currentIndexArea - 1; + end = 0; + direction = "left"; + } + compute = true; + } + } + if(compute){ + if(direction === "right"){ + for(var i = start; i < end; i++){ + if(this._checkInterval(areaList, i, x)){ + index = i; + break; + } + } + } + else{ + for(var i = start; i >= end; i--){ + if(this._checkInterval(areaList, i, x)){ + index = i; + break; + } + } + } + } + } + this._oldXPoint = x; + return index; // Integer + }, + + _checkInterval: function(/*Array*/areaList, /*Integer*/index, /*Coord*/x){ + // summary: + // check if the dragNode is in the interval. + // The x coordinate is basically provided by the method. + // areaList: + // a list of DnD areas objects + // index: + // index of a DnD area (to get the interval) + // x: + // coordinate x, of the dragNode + // returns: + // true if the dragNode is in intervall + // tags: + // protected + var coords = areaList[index].coords; + if(coords.x1 == -1){ + if(x <= coords.x2){ + return true; + } + } + else + if(coords.x2 == -1){ + if(x > coords.x1){ + return true; + } + } + else{ + if(coords.x1 < x && x <= coords.x2){ + return true; + } + } + return false; // Boolean + }, + + getDropIndex: function(/*Object*/ targetArea, /*Object*/ coords){ + // summary: + // Return the index where the drop has to be placed. + // targetArea: + // a DnD area object + // coords: + // coordinates [x,y] of the draggable item + // returns: + // a number + // or -1 if the area has no children or the drop index represents the last position in to the area + + //console.log("dojox.mdnd.dropMode.VerticalDropMode ::: getDropIndex"); + var length = targetArea.items.length; + var coordinates = targetArea.coords; + var y = coords.y; + if(length > 0){ + // course all children in the target area. + for(var i = 0; i < length; i++){ + // compare y value with y value of children + if(y < targetArea.items[i].y){ + return i; // Integer + } + else{ + if(i == length-1){ + return -1; + } + } + } + } + return -1; + }, + + destroy: function(){ + // can be overwritten. + } + }); + + //------------ + //Singleton + //------------ + dojox.mdnd.areaManager()._dropMode = new dojox.mdnd.dropMode.VerticalDropMode(); + return vdm; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/resources/dnd.css b/js/dojo-release-1.7.2-src/dojox/mdnd/resources/dnd.css new file mode 100644 index 0000000..f7f0469 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/resources/dnd.css @@ -0,0 +1,93 @@ +/**********************************oaf.base.dnd************************************/ +.dragNode{ + z-index:10000; + cursor:move; +} +.dragHandle{ + cursor:move; +} +.dropIndicator{ + position:relative; + height:50px; + border:1px dashed #FFF; +} +.dropIndicator > div{ + position:absolute; + left:0;top:0;right:0;bottom:0; + background-color:#000; + opacity:0.17; + filter:alpha(opacity=17); + -khtml-opacity:0.17; + -moz-opacity:0.17; +} +.dj_ie6 .dropIndicator div{ + position:relative; + height:100%; + background-color:#000; + filter:alpha(opacity=17); +} +.dj_ie6 .dropIndicator{ + _margin:10px; +} +.dndCover{ + background-image:url(../../layout/resources/icons/pixel.gif); + position:absolute; + left:0; + top:0; + width:100%; + height:1000px; + z-index:9999; + cursor:move; +} + +.dndCover2{ + z-index: 10001; +} +.dragNode{ + z-index:10000; + cursor:move; +} +.dragHandle{ + cursor:move; +} +.dropIndicator{ + position:relative; + height:50px; + border:1px dashed #FFF; +} +.dropIndicator > div{ + position:absolute; + left:0;top:0;right:0;bottom:0; + background-color:#000; + opacity:0.17; + filter:alpha(opacity=17); + -khtml-opacity:0.17; + -moz-opacity:0.17; +} +.dj_ie6 .dropIndicator div{ + position:relative; + height:100%; + background-color:#000; + filter:alpha(opacity=17); +} +.dj_ie6 .dropIndicator{ + _margin:10px; +} +.dndCover{ + background-image:url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D); + position:absolute; + left:0; + top:0; + width:100%; + height:1000px; + z-index:9999; + cursor:move; +} + +.dj_ie6 .orange .dndCover, .dj_ie7 .orange .dndCover{ + background-image:url(../../images/oaf/pixel.gif); +} + +.orange .dndCover2{ + z-index: 10001; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_acceptance.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_acceptance.html new file mode 100644 index 0000000..b93a0da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_acceptance.html @@ -0,0 +1,71 @@ + + + + + Dnd Acceptance Test + + + + + + + + + + + + + + +
                                                      +

                                                      Drag and Drop

                                                      +
                                                      +

                                                      Accepts Type1 items

                                                      +
                                                      +
                                                      +
                                                      Item Type 1
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      Item Type2
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +

                                                      Accepts Type2 items

                                                      +
                                                      +
                                                      +
                                                      + +
                                                      +

                                                      Accepts both Type1 & Type2 items

                                                      +
                                                      +
                                                      +
                                                      Item Type 1 and Type 2
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_autoScroll.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_autoScroll.html new file mode 100644 index 0000000..520337b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_autoScroll.html @@ -0,0 +1,52 @@ + + + + + Drag And Drop - AutoScroll + + + + + + + + + + + + + + + + +
                                                      +

                                                      Drag and Drop

                                                      +
                                                      Drag me ! to see autoscroll working go out of the screen
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_defaultDropMode.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_defaultDropMode.html new file mode 100644 index 0000000..9961e9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_defaultDropMode.html @@ -0,0 +1,55 @@ + + + + + Dnd DefaultDropMode Test + + + + + + + + + + + + + + +
                                                      +

                                                      Drag and Drop

                                                      +
                                                      +
                                                      +
                                                      title
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor. Aliquam erat volutpat. Fusce erat velit, fringilla vel, varius nec, rhoncus sed, quam. Morbi orci. In arcu dolor, tempor sit amet, mattis ac, dignissim sed, purus. Cras malesuada, massa et bibendum facilisis, metus eros tristique pede, ac ullamcorper urna pede at nulla. Morbi a nulla gravida tellus pellentesque commodo. In hac habitasse platea dictumst. Nunc sit amet nisl nec mauris venenatis pharetra. Nam tristique consequat justo. Curabitur hendrerit venenatis purus.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      title
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor. Aliquam erat volutpat. Fusce erat velit, fringilla vel, varius nec, rhoncus sed, quam. Morbi orci. In arcu dolor, tempor sit amet, mattis ac, dignissim sed, purus. Cras malesuada, massa et bibendum facilisis, metus eros tristique pede, ac ullamcorper urna pede at nulla. Morbi a nulla gravida tellus pellentesque commodo. In hac habitasse platea dictumst. Nunc sit amet nisl nec mauris venenatis pharetra. Nam tristique consequat justo. Curabitur hendrerit venenatis purus.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndFromDojo.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndFromDojo.html new file mode 100644 index 0000000..1e9b8be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndFromDojo.html @@ -0,0 +1,73 @@ + + + + + Dnd - Dojo Adapter (From dojo) + + + + + + + + + + + + + + +

                                                      Drag and Drop : dojo Dnd to Dojox Dnd

                                                      +
                                                      +

                                                      Pure Source

                                                      +
                                                      +
                                                      item Type1
                                                      +
                                                      item Type2
                                                      +
                                                      +
                                                      +
                                                      +

                                                      Source/Target Dojo

                                                      +

                                                      Accepts Type1 & Type2 dojo's items

                                                      +
                                                      +
                                                      item Type1
                                                      +
                                                      item Type2
                                                      +
                                                      +
                                                      +
                                                      +

                                                      Source/Target dojox

                                                      +

                                                      Accepts only Type1 items

                                                      +
                                                      +
                                                      +

                                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndToDojo.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndToDojo.html new file mode 100644 index 0000000..477dc0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndToDojo.html @@ -0,0 +1,93 @@ + + + + + Dnd - Dojo Adapter (To Dojo) + + + + + + + + + + + + + + +

                                                      Drag and Drop : Dojox Dnd to Dojo Dnd

                                                      +
                                                      +

                                                      Source/Target Dojox

                                                      +
                                                      +
                                                      +
                                                      Item Type1
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      Item Type2
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +

                                                      Source/Target Dojo

                                                      +

                                                      Accepts only Type1 items

                                                      +
                                                      +
                                                      +
                                                      +

                                                      Target DOM

                                                      +

                                                      Accepts only Type2 items

                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndToDojo_dndFromDojo.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndToDojo_dndFromDojo.html new file mode 100644 index 0000000..07d7c09 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_dndToDojo_dndFromDojo.html @@ -0,0 +1,70 @@ + + + + + Dnd - Dojo Adapter (To Dojo & From Dojo) + + + + + + + + + + + + + + +

                                                      Drag and Drop

                                                      +
                                                      +

                                                      Source/Target Dojox

                                                      +
                                                      +
                                                      +
                                                      Item Type1
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      Item Type2
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +

                                                      Source/Target Dojo

                                                      +

                                                      Accepts only Type1 items

                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_overDropMode.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_overDropMode.html new file mode 100644 index 0000000..62163ae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_overDropMode.html @@ -0,0 +1,57 @@ + + + + + Dnd OverDropMode Test + + + + + + + + + + + + + + +
                                                      +

                                                      Drag and Drop : OverDropMode

                                                      +
                                                      +
                                                      +
                                                      title
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      title
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_stress.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_stress.html new file mode 100644 index 0000000..7258258 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_stress.html @@ -0,0 +1,83 @@ + + + + + Drag And Drop - stress test + + + + + + + + + + + + + + + + Pass ?count=10 in the query string to change the number of div for each column.

                                                      +
                                                      +
                                                      +
                                                      title
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor. Aliquam erat volutpat. Fusce erat velit, fringilla vel, varius nec, rhoncus sed, quam. Morbi orci. In arcu dolor, tempor sit amet, mattis ac, dignissim sed, purus.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_verticalDropMode.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_verticalDropMode.html new file mode 100644 index 0000000..dba6495 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/functionalTests/test_dnd_verticalDropMode.html @@ -0,0 +1,55 @@ + + + + + Dnd VerticalDropMode Test + + + + + + + + + + + + + + +
                                                      +

                                                      Drag and Drop : VerticalDropMode

                                                      +
                                                      +
                                                      +
                                                      title
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor. Aliquam erat volutpat. Fusce erat velit, fringilla vel, varius nec, rhoncus sed, quam. Morbi orci. In arcu dolor, tempor sit amet, mattis ac, dignissim sed, purus. Cras malesuada, massa et bibendum facilisis, metus eros tristique pede, ac ullamcorper urna pede at nulla. Morbi a nulla gravida tellus pellentesque commodo. In hac habitasse platea dictumst. Nunc sit amet nisl nec mauris venenatis pharetra. Nam tristique consequat justo. Curabitur hendrerit venenatis purus.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      title
                                                      +
                                                      +

                                                      Proin aliquet accumsan nunc. Duis nec tortor. Aliquam erat volutpat. Fusce erat velit, fringilla vel, varius nec, rhoncus sed, quam. Morbi orci. In arcu dolor, tempor sit amet, mattis ac, dignissim sed, purus. Cras malesuada, massa et bibendum facilisis, metus eros tristique pede, ac ullamcorper urna pede at nulla. Morbi a nulla gravida tellus pellentesque commodo. In hac habitasse platea dictumst. Nunc sit amet nisl nec mauris venenatis pharetra. Nam tristique consequat justo. Curabitur hendrerit venenatis purus.

                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/module.js b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/module.js new file mode 100644 index 0000000..af3c1fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/module.js @@ -0,0 +1,8 @@ +dojo.provide("dojox.mdnd.tests.module"); + +try{ + dojo.require("dojox.mdnd.tests.unitTests.module"); + dojo.require("dojox.mdnd.tests.robot.module"); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/resources/test_dnd.css b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/resources/test_dnd.css new file mode 100644 index 0000000..711918f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/resources/test_dnd.css @@ -0,0 +1,68 @@ +@CHARSET "UTF-8"; + +.dndArea{ + position:absolute; + background-color:#E1EBFB; + border:2px solid #BBB; + min-height:200px; + margin:0px; + padding:0px; + width:250px; +} + +.dndItem{ + position:relative; + height:auto; + background-color:#FFF; + border:1px solid #000; + padding:5px; +} + +.title{ + background-color:#CCC; + padding:5px; + cursor: move; +} + +.dndItem, .dropIndicator{ + margin:10px; +} + +.dndOver{ + opacity: 0.6; + filter: alpha(opacity=60); +} + +.dndOverNotAccepted{ + opacity: 1; + filter: alpha(opacity=100); +} +@CHARSET "UTF-8"; + +.dndArea{ + position:absolute; + background-color:#E1EBFB; + border:2px solid #BBB; + min-height:200px; + margin:0px; + padding:0px; + width:250px; +} + +.dndItem{ + position:relative; + height:auto; + background-color:#FFF; + border:1px solid #000; + padding:5px; +} + +.dragHandle{ + background-color:#CCC; + padding:5px; + cursor: move; +} + +.dndItem, .dropIndicator{ + margin:10px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/module.js b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/module.js new file mode 100644 index 0000000..fe8f911 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/module.js @@ -0,0 +1,16 @@ +dojo.provide("dojox.mdnd.tests.robot.module"); + +try{ + doh.registerUrl("dojox.mdnd.tests.robot.Acceptance", + dojo.moduleUrl("dojox.mdnd","tests/robot/test_dnd_acceptance.html"),60000); + doh.registerUrl("dojox.mdnd.tests.robot.VerticalDropMode", + dojo.moduleUrl("dojox.mdnd","tests/robot/test_dnd_verticalDropMode.html"),60000); + doh.registerUrl("dojox.mdnd.tests.robot.OverDropMode", + dojo.moduleUrl("dojox.mdnd","tests/robot/test_dnd_overDropMode.html"),60000); + doh.registerUrl("dojox.mdnd.tests.robot.DndToDojo", + dojo.moduleUrl("dojox.mdnd","tests/robot/test_dnd_dndToDojo.html"),60000); + doh.registerUrl("dojox.mdnd.tests.robot.DndFromDojo", + dojo.moduleUrl("dojox.mdnd","tests/robot/test_dnd_dndFromDojo.html"),60000); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_acceptance.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_acceptance.html new file mode 100644 index 0000000..1f48b5d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_acceptance.html @@ -0,0 +1,141 @@ + + + Robot - Acceptance + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_defaultDropMode.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_defaultDropMode.html new file mode 100644 index 0000000..88460c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_defaultDropMode.html @@ -0,0 +1,99 @@ + + + DefaultDropMode + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_dndFromDojo.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_dndFromDojo.html new file mode 100644 index 0000000..04179a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_dndFromDojo.html @@ -0,0 +1,160 @@ + + + Robot - Adapter - DndFromDojo + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_dndToDojo.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_dndToDojo.html new file mode 100644 index 0000000..d52bf95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_dndToDojo.html @@ -0,0 +1,98 @@ + + + Robot - Adapter - DndFromDojo + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_overDropMode.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_overDropMode.html new file mode 100644 index 0000000..ad08492 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_overDropMode.html @@ -0,0 +1,136 @@ + + + OverDropMode + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_verticalDropMode.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_verticalDropMode.html new file mode 100644 index 0000000..7877e91 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/robot/test_dnd_verticalDropMode.html @@ -0,0 +1,99 @@ + + + VerticalDropMode + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/runTests.html new file mode 100644 index 0000000..f37d15f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerCoverPresence.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerCoverPresence.html new file mode 100644 index 0000000..72a945e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerCoverPresence.html @@ -0,0 +1,110 @@ + + + + Area Manager - Unit Tests + + + + + + + + +
                                                      +
                                                      Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ante eros, dignissim quis, facilisis nec, euismod vitae, metus. Nunc dolor sapien, euismod eget, consectetuer id, egestas ut, neque.
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerManagingDragItems.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerManagingDragItems.html new file mode 100644 index 0000000..132e469 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerManagingDragItems.html @@ -0,0 +1,149 @@ + + + + + AreaManager + + + + + + + + + +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerRegistering.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerRegistering.html new file mode 100644 index 0000000..8de1242 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/AreaManagerRegistering.html @@ -0,0 +1,124 @@ + + + + + AreaManager + + + + + + +
                                                      +
                                                      +
                                                      +
                                                      + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ante eros, dignissim quis, facilisis nec, euismod vitae, metus. Nunc dolor sapien, euismod eget, consectetuer id, egestas ut, neque. +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/module.js b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/module.js new file mode 100644 index 0000000..76b7946 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/areaManager/module.js @@ -0,0 +1,12 @@ +dojo.provide("dojox.mdnd.tests.unitTests.areaManager.module"); + +try{ + doh.registerUrl("dojox.mdnd.tests.unitTests.AreaManagerCoverPresence", + dojo.moduleUrl("dojox.mdnd","tests/unitTests/areaManager/AreaManagerCoverPresence.html"), 60000); + doh.registerUrl("dojox.mdnd.tests.unitTests.AreaManagerManagingDragItems", + dojo.moduleUrl("dojox.mdnd","tests/unitTests/areaManager/AreaManagerManagingDragItems.html"), 60000); + doh.registerUrl("dojox.mdnd.tests.unitTests.AreaManagerRegistering", + dojo.moduleUrl("dojox.mdnd","tests/unitTests/areaManager/AreaManagerRegistering.html"), 60000); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropIndicator/DropIndicatorTest.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropIndicator/DropIndicatorTest.html new file mode 100644 index 0000000..9f5feb7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropIndicator/DropIndicatorTest.html @@ -0,0 +1,187 @@ + + + + + Drop Indicator place test + + + + + + + +
                                                      +
                                                      tested item
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropIndicator/module.js b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropIndicator/module.js new file mode 100644 index 0000000..0d54632 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropIndicator/module.js @@ -0,0 +1,8 @@ +dojo.provide('dojox.mdnd.tests.unitTests.dropIndicator.module'); + +try{ + doh.registerUrl("dojox.mdnd.tests.unitTests.dropIndicator.DropIndicatorTest", + dojo.moduleUrl("dojox.mdnd","tests/unitTests/dropIndicator/DropIndicatorTest.html"), 60000); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/DefaultDropModeTest.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/DefaultDropModeTest.html new file mode 100644 index 0000000..551824a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/DefaultDropModeTest.html @@ -0,0 +1,241 @@ + + + + + DefaultDropMode + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/FixtureLib.js b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/FixtureLib.js new file mode 100644 index 0000000..52fb594 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/FixtureLib.js @@ -0,0 +1,87 @@ +dojo.provide("dojox.mdnd.tests.unitTests.dropMode.FixtureLib"); + +dojo.declare("getDragPointFixture", null, { + + constructor:function(testName, test) { + this.name = testName; + this.runTest = test; + }, + + setUp:function() { + this.coords = {'x':25,'y':50}; + this.size = {'w':100,'h':100}; + this.mousePosition = {'x':50, 'y':75}; + this.dropMode = dojox.mdnd.areaManager()._dropMode; + }, + + tearDown:function() { + delete this.coords; + delete this.size; + delete this.dropMode; + } +}); + + +dojo.declare("AreaFixture", null, { + + constructor:function(testName, test) { + this.name = testName; + this.runTest = test; + }, + + setUp:function() { + this.dropMode = dojox.mdnd.areaManager()._dropMode; + this.array = []; + + //fake area object + this.objectA = {'node': dojo.byId('areaA')}; + this.objectB = {'node': dojo.byId('areaB')}; + this.objectC = {'node': dojo.byId('areaC')}; + this.objectD = {'node': dojo.byId('areaD')}; + }, + + tearDown:function() { + delete this.dropMode; + delete this.array; + delete this.objectA; + delete this.objectB; + delete this.objectC; + delete this.objectD; + } +}); + +dojo.declare("ItemFixture", null, { + + constructor:function(testName, test) { + this.name = testName; + this.runTest = test; + }, + + setUp:function() { + this.dropMode = dojox.mdnd.areaManager()._dropMode; + this.objet = {}; + // fake moveable object + this.moveableA = {'node': dojo.byId("itemA")}; + this.moveableB = {'node': dojo.byId("itemB")}; + this.moveableC = {'node': dojo.byId("itemC")}; + this.moveableD = {'node': dojo.byId("itemD")}; + // fake item object + this.itemA = {'item': this.moveableA}; + this.itemB = {'item': this.moveableB}; + this.itemC = {'item': this.moveableC}; + this.itemD = {'item': this.moveableD}; + }, + + tearDown: function(){ + delete this.dropMode; + delete this.array; + delete this.moveableA; + delete this.moveableB; + delete this.moveableC; + delete this.moveableD; + delete this.itemA; + delete this.itemB; + delete this.itemC; + delete this.itemD; + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/OverDropModeTest.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/OverDropModeTest.html new file mode 100644 index 0000000..17dbea0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/OverDropModeTest.html @@ -0,0 +1,195 @@ + + + + + OverDropMode + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/VerticalDropModeTest.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/VerticalDropModeTest.html new file mode 100644 index 0000000..e1dbf9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/VerticalDropModeTest.html @@ -0,0 +1,241 @@ + + + + + VerticalDropMode + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/module.js b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/module.js new file mode 100644 index 0000000..bd4d953 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/module.js @@ -0,0 +1,10 @@ +dojo.provide('dojox.mdnd.tests.unitTests.dropMode.module'); + +try{ + doh.registerUrl("dojox.mdnd.tests.unitTests.dropMode.VerticalDropModeTest", + dojo.moduleUrl("dojox.mdnd","tests/unitTests/dropMode/VerticalDropModeTest.html"), 60000); + doh.registerUrl("dojox.mdnd.tests.unitTests.dropMode.OverDropModeTest", + dojo.moduleUrl("dojox.mdnd","tests/unitTests/dropMode/OverDropModeTest.html"), 60000); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/resources/domElement.html b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/resources/domElement.html new file mode 100644 index 0000000..0b41285 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/dropMode/resources/domElement.html @@ -0,0 +1,65 @@ + + + + + + +
                                                      Area A
                                                      {50, 50}
                                                      +
                                                      Area B
                                                      {150, 200}
                                                      +
                                                      Area C
                                                      {50, 350}
                                                      +
                                                      Area D
                                                      {10, 750}
                                                      + +
                                                      Item A
                                                      {500, 50}
                                                      +
                                                      Item B
                                                      {650, 10}
                                                      +
                                                      Item C
                                                      {800, 10}
                                                      +
                                                      Item D
                                                      {1000, 100}
                                                      + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/module.js b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/module.js new file mode 100644 index 0000000..02ddf0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mdnd/tests/unitTests/module.js @@ -0,0 +1,9 @@ +dojo.provide("dojox.mdnd.tests.unitTests.module"); + +try{ + dojo.require('dojox.mdnd.tests.unitTests.areaManager.module'); + dojo.require('dojox.mdnd.tests.unitTests.dropMode.module'); + dojo.require('dojox.mdnd.tests.unitTests.dropIndicator.module'); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile.js b/js/dojo-release-1.7.2-src/dojox/mobile.js new file mode 100755 index 0000000..63cf910 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile.js @@ -0,0 +1,8 @@ +define([ + ".", + "dojo/_base/lang", + "dojox/mobile/_base" +], function(dojox, lang, base){ + lang.getObject("mobile", true, dojox); + return dojox.mobile; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Button.js b/js/dojo-release-1.7.2-src/dojox/mobile/Button.js new file mode 100644 index 0000000..712b176 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Button.js @@ -0,0 +1,77 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/dom-class", + "dojo/dom-construct", + "dijit/_WidgetBase", + "dijit/form/_ButtonMixin", + "dijit/form/_FormWidgetMixin" +], + function(array, declare, domClass, domConstruct, WidgetBase, ButtonMixin, FormWidgetMixin){ + + /*===== + WidgetBase = dijit._WidgetBase; + FormWidgetMixin = dijit.form._FormWidgetMixin; + ButtonMixin = dijit.form._ButtonMixin; + =====*/ + return declare("dojox.mobile.Button", [WidgetBase, FormWidgetMixin, ButtonMixin], { + // summary: + // Non-templated BUTTON widget with a thin API wrapper for click events and setting the label + // + // description: + // Buttons can display a label, an icon, or both. + // A label should always be specified (through innerHTML) or the label + // attribute. It can be hidden via showLabel=false. + // example: + // | + + baseClass: "mblButton", + + // Override automatic assigning type --> node, it causes exception on IE. + // Instead, type must be specified as this.type when the node is created, as part of the original DOM + _setTypeAttr: null, + + // duration: Number + // duration of selection, milliseconds or -1 for no post-click CSS styling + duration: 1000, + + _onClick: function(e){ + var ret = this.inherited(arguments); + if(ret && this.duration >= 0){ // if its not a button with a state, then emulate press styles + var button = this.focusNode || this.domNode; + var newStateClasses = (this.baseClass+' '+this["class"]).split(" "); + newStateClasses = array.map(newStateClasses, function(c){ return c+"Selected"; }); + domClass.add(button, newStateClasses); + setTimeout(function(){ + domClass.remove(button, newStateClasses); + }, this.duration); + } + return ret; + }, + + isFocusable: function(){ return false; }, + + buildRendering: function(){ + if(!this.srcNodeRef){ + this.srcNodeRef = domConstruct.create("button", {"type": this.type}); + }else if(this._cv){ + var n = this.srcNodeRef.firstChild; + if(n && n.nodeType === 3){ + n.nodeValue = this._cv(n.nodeValue); + } + } + this.inherited(arguments); + this.focusNode = this.domNode; + }, + + postCreate: function(){ + this.inherited(arguments); + this.connect(this.domNode, "onclick", "_onClick"); + }, + + _setLabelAttr: function(/*String*/ content){ + this.inherited(arguments, [this._cv ? this._cv(content) : content]); + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Carousel.js b/js/dojo-release-1.7.2-src/dojox/mobile/Carousel.js new file mode 100644 index 0000000..90ef6cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Carousel.js @@ -0,0 +1,322 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/event", + "dojo/_base/lang", + "dojo/_base/sniff", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-style", + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./PageIndicator", + "./SwapView", + "require" +], function(kernel, array, connect, declare, event, lang, has, domClass, domConstruct, domStyle, Contained, Container, WidgetBase, PageIndicator, SwapView, require){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; + var PageIndicator = dojox.mobile.PageIndicator; + var SwapView = dojox.mobile.SwapView; +=====*/ + + // module: + // dojox/mobile/Carousel + // summary: + // A carousel widget that manages a list of images + + kernel.experimental("dojox.mobile.Carousel"); + + return declare("dojox.mobile.Carousel", [WidgetBase, Container, Contained], { + // summary: + // A carousel widget that manages a list of images + // description: + // The carousel widget manages a list of images that can be + // displayed horizontally, and allows the user to scroll through + // the list and select a single item. + + // numVisible: Number + // The number of visible items. + numVisible: 3, + + // title: String + // A title of the carousel to be displayed on the title bar. + title: "", + + // pageIndicator: Boolean + // If true, a page indicator, a series of small dots that indicate + // the current page, is displayed on the title bar. + pageIndicator: true, + + // navButton: Boolean + // If true, navigation buttons are displyaed on the title bar. + navButton: false, + + // height: String + // Explicitly specified height of the widget (ex. "300px"). If + // "inherit" is specified, the height is inherited from its offset + // parent. + height: "300px", + + // store: Object + // Reference to data provider object used by this widget. + store: null, + + // query: Object + // A query that can be passed to 'store' to initially filter the + // items. + query: null, + + // queryOptions: Object + // An optional parameter for the query. + queryOptions: null, + + buildRendering: function(){ + this.inherited(arguments); + this.domNode.className = "mblCarousel"; + var h; + if(this.height === "inherit"){ + if(this.domNode.offsetParent){ + h = this.domNode.offsetParent.offsetHeight + "px"; + } + }else if(this.height){ + h = this.height; + } + this.domNode.style.height = h; + this.headerNode = domConstruct.create("DIV", {className:"mblCarouselHeaderBar"}, this.domNode); + + if(this.navButton){ + this.btnContainerNode = domConstruct.create("DIV", { + className: "mblCarouselBtnContainer" + }, this.headerNode); + domStyle.set(this.btnContainerNode, "float", "right"); // workaround for webkit rendering problem + this.prevBtnNode = domConstruct.create("BUTTON", { + className: "mblCarouselBtn", + title: "Previous", + innerHTML: "<" + }, this.btnContainerNode); + this.nextBtnNode = domConstruct.create("BUTTON", { + className: "mblCarouselBtn", + title: "Next", + innerHTML: ">" + }, this.btnContainerNode); + this.connect(this.prevBtnNode, "onclick", "onPrevBtnClick"); + this.connect(this.nextBtnNode, "onclick", "onNextBtnClick"); + } + + if(this.pageIndicator){ + if(!this.title){ + this.title = " "; + } + this.piw = new PageIndicator(); + domStyle.set(this.piw, "float", "right"); // workaround for webkit rendering problem + this.headerNode.appendChild(this.piw.domNode); + } + + this.titleNode = domConstruct.create("DIV", { + className: "mblCarouselTitle" + }, this.headerNode); + + this.containerNode = domConstruct.create("DIV", {className:"mblCarouselPages"}, this.domNode); + connect.subscribe("/dojox/mobile/viewChanged", this, "handleViewChanged"); + }, + + startup: function(){ + if(this._started){ return; } + if(this.store){ + var store = this.store; + this.store = null; + this.setStore(store, this.query, this.queryOptions); + } + this.inherited(arguments); + }, + + setStore: function(store, query, queryOptions){ + // summary: + // Sets the store to use with this widget. + if(store === this.store){ return; } + this.store = store; + this.query = query; + this.queryOptions = queryOptions; + this.refresh(); + }, + + refresh: function(){ + if(!this.store){ return; } + this.store.fetch({ + query: this.query, + queryOptions: this.queryOptions, + onComplete: lang.hitch(this, "generate"), + onError: lang.hitch(this, "onError") + }); + }, + + generate: function(/*Array*/items, /*Object*/ dataObject){ + array.forEach(this.getChildren(), function(child){ + if(child instanceof SwapView){ + child.destroyRecursive(); + } + }); + this.items = items; + this.swapViews = []; + this.images = []; + var nPages = Math.ceil(items.length / this.numVisible); + var h = this.domNode.offsetHeight - this.headerNode.offsetHeight; + for(var i = 0; i < nPages; i++){ + var w = new SwapView({height:h+"px"}); + this.addChild(w); + this.swapViews.push(w); + w._carouselImages = []; + if(i === 0 && this.piw){ + this.piw.refId = w.id; + } + for(var j = 0; j < this.numVisible; j++){ + var idx = i * this.numVisible + j; + var item = idx < items.length ? items[idx] : + {src:require.toUrl("dojo/resources/blank.gif"), height:"1px"}; + var disp = w.domNode.style.display; + w.domNode.style.display = ""; // need to be visible during the size calculation + var box = this.createBox(item, h); + w.containerNode.appendChild(box); + box.appendChild(this.createHeaderText(item)); + var img = this.createContent(item, idx); + box.appendChild(img); + box.appendChild(this.createFooterText(item)); + this.resizeContent(item, box, img); + w.domNode.style.display = disp; + + if(item.height !== "1px"){ + this.images.push(img); + w._carouselImages.push(img); + } + } + } + if(this.swapViews[0]){ + this.loadImages(this.swapViews[0]); + } + if(this.swapViews[1]){ + this.loadImages(this.swapViews[1]); // pre-fetch the next view images + } + this.currentView = this.swapViews[0]; + if(this.piw){ + this.piw.reset(); + } + }, + + createBox: function(item, h){ + var width = item.width || (90/this.numVisible + "%"); + var height = item.height || h + "px"; + var m = has("ie") ? 5/this.numVisible-1 : 5/this.numVisible; + var margin = item.margin || (m + "%"); + var box = domConstruct.create("DIV", { + className: "mblCarouselBox" + }); + domStyle.set(box, { + margin: "0px " + margin, + width: width, + height: height + }); + return box; + }, + + createHeaderText: function(item){ + this.headerTextNode = domConstruct.create("DIV", { + className: "mblCarouselImgHeaderText", + innerHTML: item.headerText ? item.headerText : " " + }); + return this.headerTextNode; + }, + + createContent: function(item, idx){ + var props = { + alt: item.alt || "", + tabIndex: "0", // for keyboard navigation on a desktop browser + className: "mblCarouselImg" + }; + var img = domConstruct.create("IMG", props); + img._idx = idx; + if(item.height !== "1px"){ + this.connect(img, "onclick", "onClick"); + this.connect(img, "onkeydown", "onClick"); + connect.connect(img, "ondragstart", event.stop); + }else{ + img.style.visibility = "hidden"; + } + return img; + }, + + createFooterText: function(item){ + this.footerTextNode = domConstruct.create("DIV", { + className: "mblCarouselImgFooterText", + innerHTML: item.footerText ? item.footerText : " " + }); + return this.footerTextNode; + }, + + resizeContent: function(item, box, img){ + if(item.height !== "1px"){ + img.style.height = (box.offsetHeight - this.headerTextNode.offsetHeight - this.footerTextNode.offsetHeight) + "px"; + } + }, + + onError: function(errText){ + }, + + onPrevBtnClick: function(e){ + if(this.currentView){ + this.currentView.goTo(-1); + } + }, + + onNextBtnClick: function(e){ + if(this.currentView){ + this.currentView.goTo(1); + } + }, + + onClick: function(e){ + if(e && e.type === "keydown" && e.keyCode !== 13){ return; } + var img = e.currentTarget; + for(var i = 0; i < this.images.length; i++){ + if(this.images[i] === img){ + domClass.add(img, "mblCarouselImgSelected"); + }else{ + domClass.remove(this.images[i], "mblCarouselImgSelected"); + } + } + domStyle.set(img, "opacity", 0.4); + setTimeout(function(){ + domStyle.set(img, "opacity", 1); + }, 1000); + connect.publish("/dojox/mobile/carouselSelect", [this, img, this.items[img._idx], img._idx]); + }, + + loadImages: function(view){ + if(!view){ return; } + var imgs = view._carouselImages; + array.forEach(imgs, function(img){ + if(!img.src){ + var item = this.items[img._idx]; + img.src = item.src; + } + }, this); + }, + + handleViewChanged: function(view){ + if(view.getParent() !== this){ return; } + this.currentView = view; + // lazy-load images in the next view + this.loadImages(view.nextView(view.domNode)); + }, + + _setTitleAttr: function(/*String*/title){ + this.title = title; + this.titleNode.innerHTML = this._cv ? this._cv(title) : title; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/CheckBox.js b/js/dojo-release-1.7.2-src/dojox/mobile/CheckBox.js new file mode 100644 index 0000000..43031a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/CheckBox.js @@ -0,0 +1,35 @@ +define([ + "dojo/_base/declare", + "dojo/dom-construct", + "dijit/form/_CheckBoxMixin", + "./ToggleButton" +], + function(declare, domConstruct, CheckBoxMixin, ToggleButton){ + + /*===== + ToggleButton = dojox.mobile.ToggleButton; + CheckBoxMixin = dijit.form._CheckBoxMixin; + =====*/ + return declare("dojox.mobile.CheckBox", [ToggleButton, CheckBoxMixin], { + // summary: + // A non-templated checkbox widget that can be in two states (checked or not). + + baseClass: "mblCheckBox", + + _setTypeAttr: function(){}, // cannot be changed: IE complains w/o this + + buildRendering: function(){ + if(!this.srcNodeRef){ + // The following doesn't work on IE < 8 if the default state is checked. + // You have to use "" instead but it's not worth the bytes here. + this.srcNodeRef = domConstruct.create("input", {type: this.type}); + } + this.inherited(arguments); + this.focusNode = this.domNode; + }, + + _getValueAttr: function(){ + return (this.checked ? this.value : false); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ComboBox.js b/js/dojo-release-1.7.2-src/dojox/mobile/ComboBox.js new file mode 100644 index 0000000..6ab11c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ComboBox.js @@ -0,0 +1,224 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom-geometry", + "dojo/dom-style", + "dojo/window", + "dijit/form/_AutoCompleterMixin", + "dijit/popup", + "./_ComboBoxMenu", + "./TextBox", + "./sniff" +], function(kernel, declare, lang, win, domGeometry, domStyle, windowUtils, AutoCompleterMixin, popup, ComboBoxMenu, TextBox, has){ + kernel.experimental("dojox.mobile.ComboBox"); // should be using a more native search-type UI + + /*===== + TextBox = dojox.mobile.TextBox; + AutoCompleterMixin = dijit.form._AutoCompleterMixin; + =====*/ + return declare("dojox.mobile.ComboBox", [TextBox, AutoCompleterMixin], { + // summary: + // A non-templated auto-completing text box widget + // + + // dropDownClass: [protected extension] String + // Name of the dropdown widget class used to select a date/time. + // Subclasses should specify this. + dropDownClass: "dojox.mobile._ComboBoxMenu", + + // initially disable selection since iphone displays selection handles that makes it hard to pick from the list + selectOnClick: false, + autoComplete: false, + + // dropDown: [protected] Widget + // The widget to display as a popup. This widget *must* be + // defined before the startup function is called. + dropDown: null, + + // maxHeight: [protected] Integer + // The max height for our dropdown. + // Any dropdown taller than this will have scrollbars. + // Set to -1 to limit height to available space in viewport + maxHeight: -1, + + // dropDownPosition: [const] String[] + // This variable controls the position of the drop down. + // It's an array of strings with the following values: + // + // * before: places drop down to the left of the target node/widget, or to the right in + // the case of RTL scripts like Hebrew and Arabic + // * after: places drop down to the right of the target node/widget, or to the left in + // the case of RTL scripts like Hebrew and Arabic + // * above: drop down goes above target node + // * below: drop down goes below target node + // + // The list is positions is tried, in order, until a position is found where the drop down fits + // within the viewport. + // + dropDownPosition: ["below","above"], + + _throttleOpenClose: function(){ + // prevent open/close in rapid succession + if(this._throttleHandler){ + clearTimeout(this._throttleHandler); + } + this._throttleHandler = setTimeout(lang.hitch(this, function(){ this._throttleHandler = null; }), 500); + }, + + _onFocus: function(){ + this.inherited(arguments); + if(!this._opened && !this._throttleHandler){ + this._startSearchAll(); // show dropdown if user is selecting Next/Previous from virtual keyboard + } + }, + + onInput: function(e){ + this._onKey(e); + this.inherited(arguments); + }, + + _setListAttr: function(v){ + this._set('list', v); // needed for Firefox 4+ to prevent HTML5 mode + }, + + closeDropDown: function(){ + // summary: + // Closes the drop down on this widget + // tags: + // protected + + this._throttleOpenClose(); + if(this.startHandler){ + this.disconnect(this.startHandler); + this.startHandler = null; + if(this.moveHandler){ this.disconnect(this.moveHandler); } + if(this.endHandler){ this.disconnect(this.endHandler); } + } + this.inherited(arguments); + popup.close(this.dropDown); + this._opened = false; + }, + + openDropDown: function(){ + // summary: + // Opens the dropdown for this widget. To be called only when this.dropDown + // has been created and is ready to display (ie, it's data is loaded). + // returns: + // return value of popup.open() + // tags: + // protected + + var wasClosed = !this._opened; + var dropDown = this.dropDown, + ddNode = dropDown.domNode, + aroundNode = this.domNode, + self = this; + + + // TODO: isn't maxHeight dependent on the return value from popup.open(), + // ie, dependent on how much space is available (BK) + + if(!this._preparedNode){ + this._preparedNode = true; + // Check if we have explicitly set width and height on the dropdown widget dom node + if(ddNode.style.width){ + this._explicitDDWidth = true; + } + if(ddNode.style.height){ + this._explicitDDHeight = true; + } + } + + // Code for resizing dropdown (height limitation, or increasing width to match my width) + var myStyle = { + display: "", + overflow: "hidden", + visibility: "hidden" + }; + if(!this._explicitDDWidth){ + myStyle.width = ""; + } + if(!this._explicitDDHeight){ + myStyle.height = ""; + } + domStyle.set(ddNode, myStyle); + + // Figure out maximum height allowed (if there is a height restriction) + var maxHeight = this.maxHeight; + if(maxHeight == -1){ + // limit height to space available in viewport either above or below my domNode + // (whichever side has more room) + var viewport = windowUtils.getBox(), + position = domGeometry.position(aroundNode, false); + maxHeight = Math.floor(Math.max(position.y, viewport.h - (position.y + position.h))); + } + + // Attach dropDown to DOM and make make visibility:hidden rather than display:none + // so we call startup() and also get the size + popup.moveOffScreen(dropDown); + + if(dropDown.startup && !dropDown._started){ + dropDown.startup(); // this has to be done after being added to the DOM + } + // Get size of drop down, and determine if vertical scroll bar needed + var mb = domGeometry.position(this.dropDown.containerNode, false); + var overHeight = (maxHeight && mb.h > maxHeight); + if(overHeight){ + mb.h = maxHeight; + } + + // Adjust dropdown width to match or be larger than my width + mb.w = Math.max(mb.w, aroundNode.offsetWidth); + domGeometry.setMarginBox(ddNode, mb); + + var retVal = popup.open({ + parent: this, + popup: dropDown, + around: aroundNode, + orient: this.dropDownPosition, + onExecute: function(){ + self.closeDropDown(); + }, + onCancel: function(){ + self.closeDropDown(); + }, + onClose: function(){ + self._opened = false; + } + }); + this._opened=true; + + if(wasClosed){ + if(retVal.aroundCorner.charAt(0) == 'B'){ // is popup below? + this.domNode.scrollIntoView(true); // scroll to top + } + this.startHandler = this.connect(win.doc.documentElement, has('touch') ? "ontouchstart" : "onmousedown", + lang.hitch(this, function(){ + var isMove = false; + this.moveHandler = this.connect(win.doc.documentElement, has('touch') ? "ontouchmove" : "onmousemove", function(){ isMove = true; }); + this.endHandler = this.connect(win.doc.documentElement, has('touch') ? "ontouchend" : "onmouseup", function(){ if(!isMove){ this.closeDropDown(); } }); + }) + ); + } + return retVal; + }, + + postCreate: function(){ + this.inherited(arguments); + this.connect(this.domNode, "onclick", "_onClick"); + }, + + _onClick: function(/*Event*/ e){ + // throttle clicks to prevent double click from doing double actions + if(!this._throttleHandler){ + if(this.opened){ + this.closeDropDown(); + }else{ + this._startSearchAll(); + } + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ContentPane.js b/js/dojo-release-1.7.2-src/dojox/mobile/ContentPane.js new file mode 100644 index 0000000..d9e5f4f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ContentPane.js @@ -0,0 +1,125 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dijit/_Contained", + "dijit/_WidgetBase", + "dojo/_base/xhr", + "./ProgressIndicator" +], function(dojo, array, declare, lang, win, Contained, WidgetBase, xhr, ProgressIndicator){ + +/*===== + var Contained = dijit._Contained; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/ContentPane + // summary: + // A very simple content pane to embed an HTML fragment. + + return declare("dojox.mobile.ContentPane", [WidgetBase, Contained],{ + // summary: + // A very simple content pane to embed an HTML fragment. + // description: + // This widget embeds an HTML fragment and run the parser. onLoad() + // is called when parsing is done and the content is ready. + // "dojo/_base/xhr" is in the dependency list. Usually this is not + // necessary, but there is a case where dojox.mobile custom build + // does not contain xhr. Note that this widget does not inherit + // from dijit._Container. + + // href: String + // URL of the content to embed. + href: "", + + // content: String + // An html fragment to embed. + content: "", + + // parseOnLoad: Boolean + // If true, runs the parser when the load completes. + parseOnLoad: true, + + // prog: Boolean + // If true, shows progress indicator. + prog: true, + + buildRendering: function(){ + this.inherited(arguments); + this.domNode.className = "mblContentPane"; + if(!this.containerNode){ + this.containerNode = this.domNode; + } + }, + + startup: function(){ + if(this._started){ return; } + if(this.prog){ + this._p = ProgressIndicator.getInstance(); + } + var parent = this.getParent && this.getParent(); + if(!parent || !parent.resize){ // top level widget + this.resize(); + } + this.inherited(arguments); + }, + + resize: function(){ + // summary: + // Calls resize() of each child widget. + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + }, + + loadHandler: function(/*String*/response){ + // summary: + // A handler called when load completes. + this.set("content", response); + }, + + errorHandler: function(err){ + // summary: + // An error handler called when load fails. + if(this._p){ this._p.stop(); } + }, + + onLoad: function(){ + // summary: + // Stub method to allow the application to connect to. + // Called when parsing is done and the content is ready. + }, + + _setHrefAttr: function(/*String*/href){ + var p = this._p; + if(p){ + win.body().appendChild(p.domNode); + p.start(); + } + this.href = href; + xhr.get({ + url: href, + handleAs: "text", + load: lang.hitch(this, "loadHandler"), + error: lang.hitch(this, "errorHandler") + }); + }, + + _setContentAttr: function(/*String|DomNode*/data){ + this.destroyDescendants(); + if(typeof data === "object"){ + this.domNode.appendChild(data); + }else{ + this.domNode.innerHTML = data; + } + if(this.parseOnLoad){ + dojo.parser.parse(this.domNode); + } + if(this._p){ this._p.stop(); } + this.onLoad(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeCategory.js b/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeCategory.js new file mode 100644 index 0000000..cc9c933 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeCategory.js @@ -0,0 +1,23 @@ +define([ + "dojo/_base/declare", + "./RoundRectCategory" +], function(declare, RoundRectCategory){ + +/*===== + var RoundRectCategory = dojox.mobile.RoundRectCategory; +=====*/ + + // module: + // dojox/mobile/EdgeToEdgeCategory + // summary: + // A category header for an edge-to-edge list. + + return declare("dojox.mobile.EdgeToEdgeCategory", RoundRectCategory, { + // summary: + // A category header for an edge-to-edge list. + buildRendering: function(){ + this.inherited(arguments); + this.domNode.className = "mblEdgeToEdgeCategory"; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeDataList.js b/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeDataList.js new file mode 100644 index 0000000..7471eb1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeDataList.js @@ -0,0 +1,24 @@ +define([ + "dojo/_base/declare", + "./EdgeToEdgeList", + "./_DataListMixin" +], function(declare, EdgeToEdgeList, DataListMixin){ + +/*===== + var EdgeToEdgeList = dojox.mobile.EdgeToEdgeList; + var DataListMixin = dojox.mobile._DataListMixin; +=====*/ + + // module: + // dojox/mobile/EdgeToEdgeDataList + // summary: + // An enhanced version of EdgeToEdgeList. + + return declare("dojox.mobile.EdgeToEdgeDataList", [EdgeToEdgeList, DataListMixin],{ + // summary: + // An enhanced version of EdgeToEdgeList. + // description: + // EdgeToEdgeDataList is an enhanced version of EdgeToEdgeList. It + // can generate ListItems according to the given dojo.data store. + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeList.js b/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeList.js new file mode 100644 index 0000000..d129dea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/EdgeToEdgeList.js @@ -0,0 +1,28 @@ +define([ + "dojo/_base/declare", + "./RoundRectList" +], function(declare, RoundRectList){ + +/*===== + var RoundRectList = dojox.mobile.RoundRectList; +=====*/ + + // module: + // dojox/mobile/EdgeToEdgeCategory + // summary: + // An edge-to-edge layout list. + + return declare("dojox.mobile.EdgeToEdgeList", RoundRectList, { + // summary: + // An edge-to-edge layout list. + // description: + // EdgeToEdgeList is an edge-to-edge layout list, which displays + // all items in equally sized rows. Each item must be + // dojox.mobile.ListItem. + + buildRendering: function(){ + this.inherited(arguments); + this.domNode.className = "mblEdgeToEdgeList"; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ExpandingTextArea.js b/js/dojo-release-1.7.2-src/dojox/mobile/ExpandingTextArea.js new file mode 100644 index 0000000..4a6bf8c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ExpandingTextArea.js @@ -0,0 +1,27 @@ +define([ + "dojo/_base/declare", + "dijit/form/_ExpandingTextAreaMixin", + "./TextArea" +], function(declare, ExpandingTextAreaMixin, TextArea){ + + /*===== + TextArea = dojox.mobile.TextArea; + ExpandingTextAreaMixin = dijit.form._ExpandingTextAreaMixin; + =====*/ + return declare("dojox.mobile.ExpandingTextArea", [TextArea, ExpandingTextAreaMixin], { + // summary: + // Non-templated TEXTAREA widget with the capability to adjust it's height according to the amount of data. + // + // description: + // A textarea that dynamically expands/contracts (changing it's height) as + // the user types, to display all the text without requiring a vertical scroll bar. + // + // Takes all the parameters (name, value, etc.) that a vanilla textarea takes. + // Rows is not supported since this widget adjusts the height. + // + // example: + // | + + baseClass: "mblTextArea mblExpandingTextArea" + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/FixedSplitter.js b/js/dojo-release-1.7.2-src/dojox/mobile/FixedSplitter.js new file mode 100644 index 0000000..88271f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/FixedSplitter.js @@ -0,0 +1,115 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-geometry", + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./FixedSplitterPane" +], function(array, declare, win, domClass, domGeometry, Contained, Container, WidgetBase, FixedSplitterPane){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/FixedSplitter + // summary: + // A layout container that splits the window horizontally or vertically. + + return declare("dojox.mobile.FixedSplitter", [WidgetBase, Container, Contained], { + // summary: + // A layout container that splits the window horizontally or + // vertically. + // description: + // FixedSplitter is a very simple container widget that layouts its + // child dom nodes side by side either horizontally or + // vertically. An example usage of this widget would be to realize + // the split view on iPad. There is no visual splitter between the + // children, and there is no function to resize the child panes + // with drag-and-drop. If you need a visual splitter, you can + // specify a border of a child dom node with CSS. + // A child of the widget should be FixedSplitterPane. + // + // example: + // |
                                                      + // |
                                                      + // | pane #1 (width=200px) + // |
                                                      + // |
                                                      + // | pane #2 + // |
                                                      + // |
                                                      + + // orientation: String + // The direction of split. If "H" is specified, panes are split + // horizontally. If "V" is specified, panes are split vertically. + orientation: "H", + + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef ? this.srcNodeRef : win.doc.createElement("DIV"); + domClass.add(this.domNode, "mblFixedSpliter"); + }, + + startup: function(){ + if(this._started){ return; } + var children = array.filter(this.domNode.childNodes, function(node){ return node.nodeType == 1; }); + array.forEach(children, function(node){ + domClass.add(node, "mblFixedSplitterPane"+this.orientation); + }, this); + this.inherited(arguments); + + var _this = this; + setTimeout(function(){ + var parent = _this.getParent && _this.getParent(); + if(!parent || !parent.resize){ // top level widget + _this.resize(); + } + }, 0); + }, + + resize: function(){ + this.layout(); + }, + + layout: function(){ + var sz = this.orientation == "H" ? "w" : "h"; + var children = array.filter(this.domNode.childNodes, function(node){ return node.nodeType == 1; }); + var offset = 0; + for(var i = 0; i < children.length; i++){ + domGeometry.setMarginBox(children[i], this.orientation == "H" ? {l:offset} : {t:offset}); + if(i < children.length - 1){ + offset += domGeometry.getMarginBox(children[i])[sz]; + } + } + + var h; + if(this.orientation == "V"){ + if(this.domNode.parentNode.tagName == "BODY"){ + if(array.filter(win.body().childNodes, function(node){ return node.nodeType == 1; }).length == 1){ + h = (win.global.innerHeight||win.doc.documentElement.clientHeight); + } + } + } + var l = (h || domGeometry.getMarginBox(this.domNode)[sz]) - offset; + var props = {}; + props[sz] = l; + domGeometry.setMarginBox(children[children.length - 1], props); + + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + }, + + addChild: function(widget, /*Number?*/insertIndex){ + domClass.add(widget.domNode, "mblFixedSplitterPane"+this.orientation); + this.inherited(arguments); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/FixedSplitterPane.js b/js/dojo-release-1.7.2-src/dojox/mobile/FixedSplitterPane.js new file mode 100644 index 0000000..2490bf0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/FixedSplitterPane.js @@ -0,0 +1,40 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/dom-class", + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase" +], function(array, declare, domClass, Contained, Container, WidgetBase){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/FixedSplitterPane + // summary: + // A pane widget that is used in a dojox.mobile.FixedSplitter. + + return declare("dojox.mobile.FixedSplitterPane",[WidgetBase, Container, Contained],{ + // summary: + // A pane widget that is used in a dojox.mobile.FixedSplitter. + // description: + // FixedSplitterPane is a pane widget that is used in a + // dojox.mobile.FixedSplitter. It is a widget, but can be regarded + // as a simple
                                                      element. + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblFixedSplitterPane"); + }, + + resize: function(){ + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/FlippableView.js b/js/dojo-release-1.7.2-src/dojox/mobile/FlippableView.js new file mode 100644 index 0000000..48b8329 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/FlippableView.js @@ -0,0 +1,8 @@ +define([ + "dojo/_base/kernel", + "dojox/mobile/SwapView" +], function(kernel, SwapView){ + kernel.deprecated("dojox.mobile.FlippableView is deprecated", "dojox.mobile.FlippableView moved to dojox.mobile.SwapView", 1.7); + dojox.mobile.FlippableView = SwapView; + return SwapView; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Heading.js b/js/dojo-release-1.7.2-src/dojox/mobile/Heading.js new file mode 100644 index 0000000..52c786a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Heading.js @@ -0,0 +1,266 @@ +define([ + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-style", + "dijit/registry", // registry.byId + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./View" +], function(array, connect, declare, lang, win, domClass, domConstruct, domStyle, registry, Contained, Container, WidgetBase, View){ + + var dm = lang.getObject("dojox.mobile", true); + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/Heading + // summary: + // A widget that represents a navigation bar. + + return declare("dojox.mobile.Heading", [WidgetBase, Container, Contained],{ + // summary: + // A widget that represents a navigation bar. + // description: + // Heading is a widget that represents a navigation bar, which + // usually appears at the top of an application. It usually + // displays the title of the current view and can contain a + // navigational control. If you use it with + // dojox.mobile.ScrollableView, it can also be used as a fixed + // header bar or a fixed footer bar. In such cases, specify the + // fixed="top" attribute to be a fixed header bar or the + // fixed="bottom" attribute to be a fixed footer bar. Heading can + // have one or more ToolBarButton widgets as its children. + + // back: String + // A label for the navigational control to return to the previous + // View. + back: "", + + // href: String + // A URL to open when the navigational control is pressed. + href: "", + + // moveTo: String + // The id of the transition destination view which resides in the + // current page. + // + // If the value has a hash sign ('#') before the id (e.g. #view1) + // and the dojo.hash module is loaded by the user application, the + // view transition updates the hash in the browser URL so that the + // user can bookmark the destination view. In this case, the user + // can also use the browser's back/forward button to navigate + // through the views in the browser history. + // + // If null, transitions to a blank view. + // If '#', returns immediately without transition. + moveTo: "", + + // transition: String + // A type of animated transition effect. You can choose from the + // standard transition types, "slide", "fade", "flip", or from the + // extended transition types, "cover", "coverv", "dissolve", + // "reveal", "revealv", "scaleIn", "scaleOut", "slidev", + // "swirl", "zoomIn", "zoomOut". If "none" is specified, transition + // occurs immediately without animation. + transition: "slide", + + // label: String + // A title text of the heading. If the label is not specified, the + // innerHTML of the node is used as a label. + label: "", + + // iconBase: String + // The default icon path for child items. + iconBase: "", + + // backProp: Object + // Properties for the back button. + backProp: {className: "mblArrowButton"}, + + // tag: String + // A name of html tag to create as domNode. + tag: "H1", + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement(this.tag); + this.domNode.className = "mblHeading"; + if(!this.label){ + array.forEach(this.domNode.childNodes, function(n){ + if(n.nodeType == 3){ + var v = lang.trim(n.nodeValue); + if(v){ + this.label = v; + this.labelNode = domConstruct.create("SPAN", {innerHTML:v}, n, "replace"); + } + } + }, this); + } + if(!this.labelNode){ + this.labelNode = domConstruct.create("SPAN", null, this.domNode); + } + this.labelNode.className = "mblHeadingSpanTitle"; + this.labelDivNode = domConstruct.create("DIV", { + className: "mblHeadingDivTitle", + innerHTML: this.labelNode.innerHTML + }, this.domNode); + }, + + startup: function(){ + if(this._started){ return; } + var parent = this.getParent && this.getParent(); + if(!parent || !parent.resize){ // top level widget + var _this = this; + setTimeout(function(){ // necessary to render correctly + _this.resize(); + }, 0); + } + this.inherited(arguments); + }, + + resize: function(){ + if(this._btn){ + this._btn.style.width = this._body.offsetWidth + this._head.offsetWidth + "px"; + } + if(this.labelNode){ + // find the rightmost left button (B), and leftmost right button (C) + // +-----------------------------+ + // | |A| |B| |C| |D| | + // +-----------------------------+ + var leftBtn, rightBtn; + var children = this.containerNode.childNodes; + for(var i = children.length - 1; i >= 0; i--){ + var c = children[i]; + if(c.nodeType === 1){ + if(!rightBtn && domClass.contains(c, "mblToolBarButton") && domStyle.get(c, "float") === "right"){ + rightBtn = c; + } + if(!leftBtn && (domClass.contains(c, "mblToolBarButton") && domStyle.get(c, "float") === "left" || c === this._btn)){ + leftBtn = c; + } + } + } + + if(!this.labelNodeLen && this.label){ + this.labelNode.style.display = "inline"; + this.labelNodeLen = this.labelNode.offsetWidth; + this.labelNode.style.display = ""; + } + + var bw = this.domNode.offsetWidth; // bar width + var rw = rightBtn ? bw - rightBtn.offsetLeft + 5 : 0; // rightBtn width + var lw = leftBtn ? leftBtn.offsetLeft + leftBtn.offsetWidth + 5 : 0; // leftBtn width + var tw = this.labelNodeLen || 0; // title width + domClass[bw - Math.max(rw,lw)*2 > tw ? "add" : "remove"](this.domNode, "mblHeadingCenterTitle"); + } + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + }, + + _setBackAttr: function(/*String*/back){ + if (!back){ + domConstruct.destroy(this._btn); + this._btn = null; + this.back = ""; + }else{ + if(!this._btn){ + var btn = domConstruct.create("DIV", this.backProp, this.domNode, "first"); + var head = domConstruct.create("DIV", {className:"mblArrowButtonHead"}, btn); + var body = domConstruct.create("DIV", {className:"mblArrowButtonBody mblArrowButtonText"}, btn); + + this._body = body; + this._head = head; + this._btn = btn; + this.backBtnNode = btn; + this.connect(body, "onclick", "onClick"); + } + this.back = back; + this._body.innerHTML = this._cv ? this._cv(this.back) : this.back; + } + this.resize(); + }, + + _setLabelAttr: function(/*String*/label){ + this.label = label; + this.labelNode.innerHTML = this.labelDivNode.innerHTML = this._cv ? this._cv(label) : label; + }, + + findCurrentView: function(){ + // summary: + // Search for the view widget that contains this widget. + var w = this; + while(true){ + w = w.getParent(); + if(!w){ return null; } + if(w instanceof View){ break; } + } + return w; + }, + + onClick: function(e){ + var h1 = this.domNode; + domClass.add(h1, "mblArrowButtonSelected"); + setTimeout(function(){ + domClass.remove(h1, "mblArrowButtonSelected"); + }, 1000); + + if(this.back && !this.moveTo && !this.href && history){ + history.back(); + return; + } + + // keep the clicked position for transition animations + var view = this.findCurrentView(); + if(view){ + view.clickedPosX = e.clientX; + view.clickedPosY = e.clientY; + } + this.goTo(this.moveTo, this.href); + }, + + goTo: function(moveTo, href){ + // summary: + // Given the destination, makes a view transition. + var view = this.findCurrentView(); + if(!view){ return; } + if(href){ + view.performTransition(null, -1, this.transition, this, function(){location.href = href;}); + }else{ + if(dm.app && dm.app.STAGE_CONTROLLER_ACTIVE){ + // If in a full mobile app, then use its mechanisms to move back a scene + connect.publish("/dojox/mobile/app/goback"); + }else{ + // Basically transition should be performed between two + // siblings that share the same parent. + // However, when views are nested and transition occurs from + // an inner view, search for an ancestor view that is a sibling + // of the target view, and use it as a source view. + var node = registry.byId(view.convertToId(moveTo)); + if(node){ + var parent = node.getParent(); + while(view){ + var myParent = view.getParent(); + if(parent === myParent){ + break; + } + view = myParent; + } + } + if(view){ + view.performTransition(moveTo, -1, this.transition); + } + } + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/IconContainer.js b/js/dojo-release-1.7.2-src/dojox/mobile/IconContainer.js new file mode 100644 index 0000000..3e968a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/IconContainer.js @@ -0,0 +1,184 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/window", + "dojo/dom-construct", + "dojo/dom-style", + "dijit/registry", // registry.byNode + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./IconItem", + "./Heading", + "./View" +], function(array, declare, win, domConstruct, domStyle, registry, Contained, Container, WidgetBase, IconItem, Heading, View){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/IconContainer + // summary: + // A container widget that holds multiple icons. + + return declare("dojox.mobile.IconContainer", [WidgetBase, Container, Contained],{ + // summary: + // A container widget that holds multiple icons. + // description: + // IconContainer is a container widget that holds multiple icons + // each of which represents application component. + + // defaultIcon: String + // The default fall-back icon, which is displayed only when the + // specified icon has failed to load. + defaultIcon: "", + + // transition: String + // A type of animated transition effect. You can choose from the + // standard transition types, "slide", "fade", "flip", or from the + // extended transition types, "cover", "coverv", "dissolve", + // "reveal", "revealv", "scaleIn", "scaleOut", "slidev", + // "swirl", "zoomIn", "zoomOut". If "none" is specified, transition + // occurs immediately without animation. If "below" is specified, + // the application contents are displayed below the icons. + transition: "below", + + // pressedIconOpacity: Number + // The opacity of the pressed icon image. + pressedIconOpacity: 0.4, + + // iconBase: String + // The default icon path for child items. + iconBase: "", + + // iconPos: String + // The default icon position for child items. + iconPos: "", + + // back: String + // A label for the navigational control. + back: "Home", + + // label: String + // A title text of the heading. + label: "My Application", + + // single: Boolean + // If true, only one icon content can be opened at a time. + single: false, + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("UL"); + this.domNode.className = "mblIconContainer"; + var t = this._terminator = domConstruct.create("LI"); + t.className = "mblIconItemTerminator"; + t.innerHTML = " "; + this.domNode.appendChild(t); + }, + + _setupSubNodes: function(ul){ + array.forEach(this.getChildren(), function(w){ + ul.appendChild(w.subNode); + }); + }, + + startup: function(){ + if(this._started){ return; } + if(this.transition === "below"){ + this._setupSubNodes(this.domNode); + }else{ + var view = this.appView = new View({id:this.id+"_mblApplView"}); + var _this = this; + view.onAfterTransitionIn = function(moveTo, dir, transition, context, method){ + _this._opening._open_1(); + }; + view.domNode.style.visibility = "hidden"; + var heading = view._heading + = new Heading({back: this._cv ? this._cv(this.back) : this.back, + label: this._cv ? this._cv(this.label) : this.label, + moveTo: this.domNode.parentNode.id, + transition: this.transition}); + view.addChild(heading); + var ul = view._ul = win.doc.createElement("UL"); + ul.className = "mblIconContainer"; + ul.style.marginTop = "0px"; + this._setupSubNodes(ul); + view.domNode.appendChild(ul); + + var target; + for(var w = this.getParent(); w; w = w.getParent()){ + if(w instanceof View){ + target = w.domNode.parentNode; + break; + } + } + if(!target){ target = win.body(); } + target.appendChild(view.domNode); + + view.startup(); + } + this.inherited(arguments); + }, + + closeAll: function(){ + // summary: + // Closes all the icon items. + var len = this.domNode.childNodes.length, child, w; + for(var i = 0; i < len; i++){ + var child = this.domNode.childNodes[i]; + if(child.nodeType !== 1){ continue; } + if(child === this._terminator){ break; } + var w = registry.byNode(child); + w.containerNode.parentNode.style.display = "none"; + domStyle.set(w.iconNode, "opacity", 1); + } + }, + + addChild: function(widget, /*Number?*/insertIndex){ + var children = this.getChildren(); + if(typeof insertIndex !== "number" || insertIndex > children.length){ + insertIndex = children.length; + } + var idx = insertIndex; + var refNode = this.containerNode; + if(idx > 0){ + refNode = children[idx - 1].domNode; + idx = "after"; + } + domConstruct.place(widget.domNode, refNode, idx); + + widget.transition = this.transition; + if(this.transition === "below"){ + for(var i = 0, refNode = this._terminator; i < insertIndex; i++){ + refNode = refNode.nextSibling; + } + domConstruct.place(widget.subNode, refNode, "after"); + }else{ + domConstruct.place(widget.subNode, this.appView._ul, insertIndex); + } + widget.inheritParams(); + widget._setIconAttr(widget.icon); + + if(this._started && !widget._started){ + widget.startup(); + } + }, + + removeChild: function(/*Widget|Number*/widget){ + if(typeof widget === "number"){ + widget = this.getChildren()[widget]; + } + if(widget){ + this.inherited(arguments); + if(this.transition === "below"){ + this.containerNode.removeChild(widget.subNode); + }else{ + this.appView._ul.removeChild(widget.subNode); + } + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/IconItem.js b/js/dojo-release-1.7.2-src/dojox/mobile/IconItem.js new file mode 100644 index 0000000..1b39dff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/IconItem.js @@ -0,0 +1,331 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/sniff", + "dojo/_base/window", + "dojo/dom-attr", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-style", + "dijit/registry", // registry.byId + "./common", + "./_ItemBase", + "./TransitionEvent" +], function(dojo, array, declare, lang, has, win, domAttr, domClass, domConstruct, domStyle, registry, common, ItemBase, TransitionEvent){ + +/*===== + var ItemBase = dojox.mobile._ItemBase; +=====*/ + + // module: + // dojox/mobile/IconItem + // summary: + // An icon item widget. + + return declare("dojox.mobile.IconItem", ItemBase, { + // summary: + // An icon item widget. + // description: + // IconItem represents an item that has an application component + // and its icon image. You can tap the icon to open the + // corresponding application component. You can also use the icon + // to move to a different view by specifying either of the moveTo, + // href or url parameters. + + // lazy: String + // If true, the content of the item, which includes dojo markup, is + // instantiated lazily. That is, only when the icon is opened by + // the user, the required modules are loaded and dojo widgets are + // instantiated. + lazy: false, + + // requires: String + // Comma-separated required module names to be loaded. All the + // modules specified with dojoType and their depending modules are + // automatically loaded by the IconItem. If you need other extra + // modules to be loaded, use this parameter. If lazy is true, the + // specified required modules are loaded when the user opens the + // icon for the first time. + requires: "", + + // timeout: String + // Duration of highlight in seconds. + timeout: 10, + + // closeBtnClass: String + // A class name of a DOM button to be used as a close button. + closeBtnClass: "mblDomButtonBlueMinus", + + // closeBtnProp: String + // Properties for the close button. + closeBtnProp: null, + + + templateString: '
                                                      '+ + '
                                                      '+ + '
                                                      ', + templateStringSub: '', + + createTemplate: function(s){ + array.forEach(["lazy","icon","closeBtnClass"], function(v){ + while(s.indexOf("${"+v+"}") != -1){ + s = s.replace("${"+v+"}", this[v]); + } + }, this); + var div = win.doc.createElement("DIV"); + div.innerHTML = s; + + /* + array.forEach(query("[dojoAttachPoint]", domNode), function(node){ + this[node.getAttribute("dojoAttachPoint")] = node; + }, this); + */ + + var nodes = div.getElementsByTagName("*"); + var i, len, s1; + len = nodes.length; + for(i = 0; i < len; i++){ + s1 = nodes[i].getAttribute("dojoAttachPoint"); + if(s1){ + this[s1] = nodes[i]; + } + } + if(this.closeIconNode && this.closeBtnProp){ + domAttr.set(this.closeIconNode, this.closeBtnProp); + } + var domNode = div.removeChild(div.firstChild); + div = null; + return domNode; + }, + + buildRendering: function(){ + this.inheritParams(); + var node = this.createTemplate(this.templateString); + this.subNode = this.createTemplate(this.templateStringSub); + this.subNode._parentNode = this.domNode; // [custom property] + + this.domNode = this.srcNodeRef || domConstruct.create("LI"); + domClass.add(this.domNode, "mblIconItem"); + if(this.srcNodeRef){ + // reparent + for(var i = 0, len = this.srcNodeRef.childNodes.length; i < len; i++){ + this.containerNode.appendChild(this.srcNodeRef.firstChild); + } + } + this.domNode.appendChild(node); + }, + + postCreate: function(){ + common.createDomButton(this.closeIconNode, { + top: "-2px", + left: "1px" + }); + this.connect(this.iconNode, "onmousedown", "onMouseDownIcon"); + this.connect(this.iconNode, "onclick", "iconClicked"); + this.connect(this.closeIconNode, "onclick", "closeIconClicked"); + this.connect(this.iconNode, "onerror", "onError"); + }, + + highlight: function(){ + // summary: + // Shakes the icon 10 seconds. + domClass.add(this.iconDivNode, "mblVibrate"); + if(this.timeout > 0){ + var _this = this; + setTimeout(function(){ + _this.unhighlight(); + }, this.timeout*1000); + } + }, + + unhighlight: function(){ + // summary: + // Stops shaking the icon. + domClass.remove(this.iconDivNode, "mblVibrate"); + }, + + instantiateWidget: function(e){ + // summary: + // Instantiates the icon content. + + // avoid use of query + /* + var list = query('[dojoType]', this.containerNode); + for(var i = 0, len = list.length; i < len; i++){ + dojo["require"](list[i].getAttribute("dojoType")); + } + */ + + var nodes = this.containerNode.getElementsByTagName("*"); + var len = nodes.length; + var s; + for(var i = 0; i < len; i++){ + s = nodes[i].getAttribute("dojoType"); + if(s){ + dojo["require"](s); + } + } + + if(len > 0){ + dojo.parser.parse(this.containerNode); + } + this.lazy = false; + }, + + isOpen: function(e){ + // summary: + // Returns true if the icon is open. + return this.containerNode.style.display != "none"; + }, + + onMouseDownIcon: function (e){ + domStyle.set(this.iconNode, "opacity", this.getParent().pressedIconOpacity); + }, + + iconClicked: function(e){ + if(e){ + this.setTransitionPos(e); + setTimeout(lang.hitch(this, function(d){ this.iconClicked(); }), 0); + return; + } + + if (this.href && this.hrefTarget) { + common.openWindow(this.href, this.hrefTarget); + dojo.style(this.iconNode, "opacity", 1); + return; + } + + var transOpts; + if(this.moveTo || this.href || this.url || this.scene){ + transOpts = {moveTo: this.moveTo, href: this.href, url: this.url, scene: this.scene, transitionDir: this.transitionDir, transition: this.transition}; + }else if(this.transitionOptions){ + transOpts = this.transitionOptions; + } + if(transOpts){ + setTimeout(lang.hitch(this, function(d){ + domStyle.set(this.iconNode, "opacity", 1); + }), 1500); + }else{ + return this.open(e); + } + + if(transOpts){ + return new TransitionEvent(this.domNode,transOpts,e).dispatch(); + } + }, + + closeIconClicked: function(e){ + if(e){ + setTimeout(lang.hitch(this, function(d){ this.closeIconClicked(); }), 0); + return; + } + this.close(); + }, + + open: function(e){ + // summary: + // Opens the icon content, or makes a transition. + var parent = this.getParent(); // IconContainer + if(this.transition == "below"){ + if(parent.single){ + parent.closeAll(); + domStyle.set(this.iconNode, "opacity", this.getParent().pressedIconOpacity); + } + this._open_1(); + }else{ + parent._opening = this; + if(parent.single){ + this.closeNode.style.display = "none"; + parent.closeAll(); + var view = registry.byId(parent.id+"_mblApplView"); + view._heading._setLabelAttr(this.label); + } + var transOpts = this.transitionOptions || {transition: this.transition, transitionDir: this.transitionDir, moveTo: parent.id + "_mblApplView"}; + new TransitionEvent(this.domNode, transOpts, e).dispatch(); + } + }, + + _open_1: function(){ + this.contentNode.style.display = ""; + this.unhighlight(); + if(this.lazy){ + if(this.requires){ + array.forEach(this.requires.split(/,/), function(c){ + dojo["require"](c); + }); + } + this.instantiateWidget(); + } + this.contentNode.scrollIntoView(); + this.onOpen(); + }, + + close: function(){ + // summary: + // Closes the icon content. + if(has("webkit")){ + var t = this.domNode.parentNode.offsetWidth/8; + var y = this.iconNode.offsetLeft; + var pos = 0; + for(var i = 1; i <= 3; i++){ + if(t*(2*i-1) < y && y <= t*(2*(i+1)-1)){ + pos = i; + break; + } + } + domClass.add(this.containerNode.parentNode, "mblCloseContent mblShrink"+pos); + }else{ + this.containerNode.parentNode.style.display = "none"; + } + domStyle.set(this.iconNode, "opacity", 1); + this.onClose(); + }, + + onOpen: function(){ + // summary: + // Stub method to allow the application to connect to. + }, + + onClose: function(){ + // summary: + // Stub method to allow the application to connect to. + }, + + onError: function(){ + var icon = this.getParent().defaultIcon; + if(icon){ + this.iconNode.src = icon; + } + }, + + _setIconAttr: function(icon){ + if(!this.getParent()){ return; } // icon may be invalid because inheritParams is not called yet + this.icon = icon; + common.createIcon(icon, this.iconPos, this.iconNode, this.alt); + if(this.iconPos){ + domClass.add(this.iconNode, "mblIconItemSpriteIcon"); + var arr = this.iconPos.split(/[ ,]/); + var p = this.iconNode.parentNode; + domStyle.set(p, { + width: arr[2] + "px", + top: Math.round((p.offsetHeight - arr[3]) / 2) + 1 + "px", + margin: "auto" + }); + } + }, + + _setLabelAttr: function(/*String*/text){ + this.label = text; + var s = this._cv ? this._cv(text) : text; + this.labelNode1.innerHTML = s; + this.labelNode2.innerHTML = s; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ListItem.js b/js/dojo-release-1.7.2-src/dojox/mobile/ListItem.js new file mode 100644 index 0000000..d560ec8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ListItem.js @@ -0,0 +1,375 @@ +define([ + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/has", + "./common", + "./_ItemBase", + "./TransitionEvent" +], function(array, connect, declare, lang, domClass, domConstruct, has, common, ItemBase, TransitionEvent){ + +/*===== + var ItemBase = dojox.mobile._ItemBase; +=====*/ + + // module: + // dojox/mobile/ListItem + // summary: + // An item of either RoundRectList or EdgeToEdgeList. + + return declare("dojox.mobile.ListItem", ItemBase, { + // summary: + // An item of either RoundRectList or EdgeToEdgeList. + // description: + // ListItem represents an item of either RoundRectList or + // EdgeToEdgeList. There are three ways to move to a different + // view, moveTo, href, and url. You can choose only one of them. + + // rightText: String + // A right-aligned text to display on the item. + rightText: "", + + // rightIcon: String + // An icon to display at the right hand side of the item. The value + // can be either a path for an image file or a class name of a DOM + // button. + rightIcon: "", + + // rightIcon2: String + // An icon to display at the left of the rightIcon. The value can + // be either a path for an image file or a class name of a DOM + // button. + rightIcon2: "", + + + // anchorLabel: Boolean + // If true, the label text becomes a clickable anchor text. When + // the user clicks on the text, the onAnchorLabelClicked handler is + // called. You can override or connect to the handler and implement + // any action. The handler has no default action. + anchorLabel: false, + + // noArrow: Boolean + // If true, the right hand side arrow is not displayed. + noArrow: false, + + // selected: Boolean + // If true, the item is highlighted to indicate it is selected. + selected: false, + + // checked: Boolean + // If true, a check mark is displayed at the right of the item. + checked: false, + + // arrowClass: String + // An icon to display as an arrow. The value can be either a path + // for an image file or a class name of a DOM button. + arrowClass: "mblDomButtonArrow", + + // checkClass: String + // An icon to display as a check mark. The value can be either a + // path for an image file or a class name of a DOM button. + checkClass: "mblDomButtonCheck", + + // variableHeight: Boolean + // If true, the height of the item varies according to its + // content. In dojo 1.6 or older, the "mblVariableHeight" class was + // used for this purpose. In dojo 1.7, adding the mblVariableHeight + // class still works for backward compatibility. + variableHeight: false, + + + // rightIconTitle: String + // An alt text for the right icon. + rightIconTitle: "", + + // rightIcon2Title: String + // An alt text for the right icon2. + rightIcon2Title: "", + + + // btnClass: String + // Deprecated. For backward compatibility. + btnClass: "", + + // btnClass2: String + // Deprecated. For backward compatibility. + btnClass2: "", + + // tag: String + // A name of html tag to create as domNode. + tag: "li", + + postMixInProperties: function(){ + // for backward compatibility + if(this.btnClass){ + this.rightIcon = this.btnClass; + } + this._setBtnClassAttr = this._setRightIconAttr; + this._setBtnClass2Attr = this._setRightIcon2Attr; + }, + + buildRendering: function(){ + this.domNode = this.srcNodeRef || domConstruct.create(this.tag); + this.inherited(arguments); + this.domNode.className = "mblListItem" + (this.selected ? " mblItemSelected" : ""); + + // label + var box = this.box = domConstruct.create("DIV"); + box.className = "mblListItemTextBox"; + if(this.anchorLabel){ + box.style.cursor = "pointer"; + } + var r = this.srcNodeRef; + if(r && !this.label){ + this.label = ""; + for(var i = 0, len = r.childNodes.length; i < len; i++){ + var n = r.firstChild; + if(n.nodeType === 3 && lang.trim(n.nodeValue) !== ""){ + n.nodeValue = this._cv ? this._cv(n.nodeValue) : n.nodeValue; + this.labelNode = domConstruct.create("SPAN", {className:"mblListItemLabel"}); + this.labelNode.appendChild(n); + n = this.labelNode; + } + box.appendChild(n); + } + } + if(!this.labelNode){ + this.labelNode = domConstruct.create("SPAN", {className:"mblListItemLabel"}, box); + } + if(this.anchorLabel){ + box.style.display = "inline"; // to narrow the text region + } + + var a = this.anchorNode = domConstruct.create("A"); + a.className = "mblListItemAnchor"; + this.domNode.appendChild(a); + a.appendChild(box); + }, + + startup: function(){ + if(this._started){ return; } + this.inheritParams(); + var parent = this.getParent(); + if(this.moveTo || this.href || this.url || this.clickable || (parent && parent.select)){ + this._onClickHandle = this.connect(this.anchorNode, "onclick", "onClick"); + } + this.setArrow(); + + if(domClass.contains(this.domNode, "mblVariableHeight")){ + this.variableHeight = true; + } + if(this.variableHeight){ + domClass.add(this.domNode, "mblVariableHeight"); + setTimeout(lang.hitch(this, "layoutVariableHeight")); + } + + this.set("icon", this.icon); // _setIconAttr may be called twice but this is necessary for offline instantiation + if(!this.checked && this.checkClass.indexOf(',') !== -1){ + this.set("checked", this.checked); + } + this.inherited(arguments); + }, + + resize: function(){ + if(this.variableHeight){ + this.layoutVariableHeight(); + } + }, + + onClick: function(e){ + var a = e.currentTarget; + var li = a.parentNode; + if(domClass.contains(li, "mblItemSelected")){ return; } // already selected + if(this.anchorLabel){ + for(var p = e.target; p.tagName !== this.tag.toUpperCase(); p = p.parentNode){ + if(p.className == "mblListItemTextBox"){ + domClass.add(p, "mblListItemTextBoxSelected"); + setTimeout(function(){ + domClass.remove(p, "mblListItemTextBoxSelected"); + }, has('android') ? 300 : 1000); + this.onAnchorLabelClicked(e); + return; + } + } + } + var parent = this.getParent(); + if(parent.select){ + if(parent.select === "single"){ + if(!this.checked){ + this.set("checked", true); + } + }else if(parent.select === "multiple"){ + this.set("checked", !this.checked); + } + } + this.select(); + + if (this.href && this.hrefTarget) { + common.openWindow(this.href, this.hrefTarget); + return; + } + var transOpts; + if(this.moveTo || this.href || this.url || this.scene){ + transOpts = {moveTo: this.moveTo, href: this.href, url: this.url, scene: this.scene, transition: this.transition, transitionDir: this.transitionDir}; + }else if(this.transitionOptions){ + transOpts = this.transitionOptions; + } + + if(transOpts){ + this.setTransitionPos(e); + return new TransitionEvent(this.domNode,transOpts,e).dispatch(); + } + }, + + select: function(){ + // summary: + // Makes this widget in the selected state. + var parent = this.getParent(); + if(parent.stateful){ + parent.deselectAll(); + }else{ + var _this = this; + setTimeout(function(){ + _this.deselect(); + }, has('android') ? 300 : 1000); + } + domClass.add(this.domNode, "mblItemSelected"); + }, + + deselect: function(){ + // summary: + // Makes this widget in the deselected state. + domClass.remove(this.domNode, "mblItemSelected"); + }, + + onAnchorLabelClicked: function(e){ + // summary: + // Stub function to connect to from your application. + }, + + layoutVariableHeight: function(){ + var h = this.anchorNode.offsetHeight; + if(h === this.anchorNodeHeight){ return; } + this.anchorNodeHeight = h; + array.forEach([ + this.rightTextNode, + this.rightIcon2Node, + this.rightIconNode, + this.iconNode + ], function(n){ + if(n){ + var t = Math.round((h - n.offsetHeight) / 2); + n.style.marginTop = t + "px"; + } + }); + }, + + setArrow: function(){ + // summary: + // Sets the arrow icon if necessary. + if(this.checked){ return; } + var c = ""; + var parent = this.getParent(); + if(this.moveTo || this.href || this.url || this.clickable){ + if(!this.noArrow && !(parent && parent.stateful)){ + c = this.arrowClass; + } + } + if(c){ + this._setRightIconAttr(c); + } + }, + + _setIconAttr: function(icon){ + if(!this.getParent()){ return; } // icon may be invalid because inheritParams is not called yet + this.icon = icon; + var a = this.anchorNode; + if(!this.iconNode){ + if(icon){ + var ref = this.rightIconNode || this.rightIcon2Node || this.rightTextNode || this.box; + this.iconNode = domConstruct.create("DIV", {className:"mblListItemIcon"}, ref, "before"); + } + }else{ + domConstruct.empty(this.iconNode); + } + if(icon && icon !== "none"){ + common.createIcon(icon, this.iconPos, null, this.alt, this.iconNode); + if(this.iconPos){ + domClass.add(this.iconNode.firstChild, "mblListItemSpriteIcon"); + } + domClass.remove(a, "mblListItemAnchorNoIcon"); + }else{ + domClass.add(a, "mblListItemAnchorNoIcon"); + } + }, + + _setCheckedAttr: function(/*Boolean*/checked){ + var parent = this.getParent(); + if(parent && parent.select === "single" && checked){ + array.forEach(parent.getChildren(), function(child){ + child.set("checked", false); + }); + } + this._setRightIconAttr(this.checkClass); + + var icons = this.rightIconNode.childNodes; + if(icons.length === 1){ + this.rightIconNode.style.display = checked ? "" : "none"; + }else{ + icons[0].style.display = checked ? "" : "none"; + icons[1].style.display = !checked ? "" : "none"; + } + + domClass.toggle(this.domNode, "mblListItemChecked", checked); + if(parent && this.checked !== checked){ + parent.onCheckStateChanged(this, checked); + } + this.checked = checked; + }, + + _setRightTextAttr: function(/*String*/text){ + if(!this.rightTextNode){ + this.rightTextNode = domConstruct.create("DIV", {className:"mblListItemRightText"}, this.box, "before"); + } + this.rightText = text; + this.rightTextNode.innerHTML = this._cv ? this._cv(text) : text; + }, + + _setRightIconAttr: function(/*String*/icon){ + if(!this.rightIconNode){ + var ref = this.rightIcon2Node || this.rightTextNode || this.box; + this.rightIconNode = domConstruct.create("DIV", {className:"mblListItemRightIcon"}, ref, "before"); + }else{ + domConstruct.empty(this.rightIconNode); + } + this.rightIcon = icon; + var arr = (icon || "").split(/,/); + if(arr.length === 1){ + common.createIcon(icon, null, null, this.rightIconTitle, this.rightIconNode); + }else{ + common.createIcon(arr[0], null, null, this.rightIconTitle, this.rightIconNode); + common.createIcon(arr[1], null, null, this.rightIconTitle, this.rightIconNode); + } + }, + + _setRightIcon2Attr: function(/*String*/icon){ + if(!this.rightIcon2Node){ + var ref = this.rightTextNode || this.box; + this.rightIcon2Node = domConstruct.create("DIV", {className:"mblListItemRightIcon2"}, ref, "before"); + }else{ + domConstruct.empty(this.rightIcon2Node); + } + this.rightIcon2 = icon; + common.createIcon(icon, null, null, this.rightIcon2Title, this.rightIcon2Node); + }, + + _setLabelAttr: function(/*String*/text){ + this.label = text; + this.labelNode.innerHTML = this._cv ? this._cv(text) : text; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Opener.js b/js/dojo-release-1.7.2-src/dojox/mobile/Opener.js new file mode 100644 index 0000000..6b9adf5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Opener.js @@ -0,0 +1,73 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-style", + "dojo/dom-geometry", + "./Tooltip", + "./Overlay" +], function(declare, lang, win, domClass, domConstruct, domStyle, domGeometry, Tooltip, Overlay){ + + /*===== + Tooltip = dojox.mobile.Tooltip; + Overlay = dojox.mobile.Overlay; + =====*/ + var isOverlay = domClass.contains(win.doc.documentElement, "dj_phone"); + var cls = declare("dojox.mobile.Opener", isOverlay ? Overlay : Tooltip, { + // summary: + // A non-templated popup widget that will use either Tooltip or Overlay depending on screen size + // + buildRendering: function(){ + this.inherited(arguments); + this.cover = domConstruct.create('div', { onclick: lang.hitch(this, '_onBlur'), 'class': 'mblOpenerUnderlay', style: { top:'0px', left:'0px', width:'0px', height:'0px', position: isOverlay ? 'absolute' : 'fixed', backgroundColor:'transparent', overflow:'hidden', zIndex:'-1' }}, this.domNode, 'first'); + this.connect(null, win.global.onorientationchange !== undefined ? "onorientationchange" : "onresize", lang.hitch(this, function(){ + if(domStyle.get(this.cover, "height") !== '0px'){ // resize cover when shown + this._resizeCover(); + } + })); + }, + + onShow: function(/*DomNode*/node){}, + onHide: function(/*DomNode*/node, /*Anything*/v){}, + + show: function(node, positions){ + this.node = node; + this.onShow(node); + this._resizeCover(); + return this.inherited(arguments); + }, + + hide: function(/*Anything*/ val){ + this.inherited(arguments); + domStyle.set(this.cover, { height:'0px' }); + this.onHide(this.node, val); + }, + + _resizeCover: function(){ + if(isOverlay){ + domStyle.set(this.cover, { height:'0px' }); // hide cover temporarily to calculate domNode size + setTimeout(lang.hitch(this, function(){ // show cover after positioning popup + var pos = domGeometry.position(this.domNode, false); + domStyle.set(this.cover, { top:-pos.y+'px', left:-pos.x+'px', width:(pos.w+pos.x)+'px', height:(pos.h+pos.y)+'px' }); + }), 0); + }else{ + domStyle.set(this.cover, { + width:Math.max(win.doc.documentElement.scrollWidth || win.body().scrollWidth || win.doc.documentElement.clientWidth)+'px', + height:Math.max(win.doc.documentElement.scrollHeight || win.body().scrollHeight || win.doc.documentElement.clientHeight)+'px' + }); + } + }, + + _onBlur: function(e){ + var ret = this.onBlur(e); + if(ret !== false){ // only exactly false prevents hide() + this.hide(e); + } + return ret; + } + }); + cls.prototype.baseClass += " mblOpener"; // add to either mblOverlay or mblTooltip + return cls; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Overlay.js b/js/dojo-release-1.7.2-src/dojox/mobile/Overlay.js new file mode 100644 index 0000000..5db7b0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Overlay.js @@ -0,0 +1,95 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/sniff", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-geometry", + "dojo/dom-style", + "dojo/window", + "dijit/_WidgetBase", + "dojo/_base/array", + "dijit/registry" +], function(declare, lang, has, win, domClass, domGeometry, domStyle, windowUtils, WidgetBase, array, registry){ + + /*===== + WidgetBase = dijit._WidgetBase; + =====*/ + return declare("dojox.mobile.Overlay", WidgetBase, { + // summary: + // A non-templated widget that animates up from the bottom, overlaying the current content + // + + baseClass: "mblOverlay mblOverlayHidden", + + show: function(/*DomNode?*/aroundNode){ + // summary: + // Scroll the overlay up into view + array.forEach(registry.findWidgets(this.domNode), function(w){ + if(w && w.height == "auto" && typeof w.resize == "function"){ + w.resize(); + } + }); + var vp, popupPos; + var reposition = lang.hitch(this, function(){ + domStyle.set(this.domNode, { position: "", top: "auto", bottom: "0px" }); + popupPos = domGeometry.position(this.domNode); + vp = windowUtils.getBox(); + if((popupPos.y+popupPos.h) != vp.h // TODO: should be a has() test for position:fixed not scrolling + || has('android') < 3){ // android 2.x supports position:fixed but child transforms don't persist + popupPos.y = vp.t + vp.h - popupPos.h; + domStyle.set(this.domNode, { position: "absolute", top: popupPos.y + "px", bottom: "auto" }); + } + }); + reposition(); + if(aroundNode){ + var aroundPos = domGeometry.position(aroundNode); + if(popupPos.y < aroundPos.y){ // if the aroundNode is under the popup, try to scroll it up + win.global.scrollBy(0, aroundPos.y + aroundPos.h - popupPos.y); + reposition(); + } + } + domClass.replace(this.domNode, ["mblCoverv", "mblIn"], ["mblOverlayHidden", "mblRevealv", "mblOut", "mblReverse"]); + var _domNode = this.domNode; + setTimeout(function(){ + domClass.add(_domNode, "mblTransition"); + }, 100); + var timeoutHandler = null; + this._moveHandle = this.connect(win.doc.documentElement, "ontouchmove", function(){ + if(timeoutHandler){ + clearTimeout(timeoutHandler); + } + timeoutHandler = setTimeout(function(){ + reposition(); + timeoutHandler = null; + }, 0); + }); + }, + + hide: function(){ + // summary: + // Scroll the overlay down and then make it invisible + if(this._moveHandle){ + this.disconnect(this._moveHandle); + this._moveHandle = null; + } + if(has("webkit")){ + var handler = this.connect(this.domNode, "webkitTransitionEnd", function(){ + this.disconnect(handler); + domClass.replace(this.domNode, ["mblOverlayHidden"], ["mblRevealv", "mblOut", "mblReverse", "mblTransition"]); + }); + domClass.replace(this.domNode, ["mblRevealv", "mblOut", "mblReverse"], ["mblCoverv", "mblIn", "mblTransition"]); + var _domNode = this.domNode; + setTimeout(function(){ + domClass.add(_domNode, "mblTransition"); + }, 100); + }else{ + domClass.replace(this.domNode, ["mblOverlayHidden"], ["mblCoverv", "mblIn", "mblRevealv", "mblOut", "mblReverse"]); + } + }, + + onBlur: function(/*Event*/e){ + return false; // touching outside the overlay area does not call hide() + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/PageIndicator.js b/js/dojo-release-1.7.2-src/dojox/mobile/PageIndicator.js new file mode 100644 index 0000000..44c24d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/PageIndicator.js @@ -0,0 +1,104 @@ +define([ + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/window", + "dojo/dom", + "dojo/dom-class", + "dojo/dom-construct", + "dijit/registry", // registry.byNode + "dijit/_Contained", + "dijit/_WidgetBase" +], function(connect, declare, win, dom, domClass, domConstruct, registry, Contained, WidgetBase){ + +/*===== + var Contained = dijit._Contained; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/PageIndicator + // summary: + // A current page indicator. + + return declare("dojox.mobile.PageIndicator", [WidgetBase, Contained],{ + // summary: + // A current page indicator. + // description: + // PageIndicator displays a series of gray and white dots to + // indicate which page is currently being viewed. It can typically + // be used with dojox.mobile.SwapView. It is also internally used + // in dojox.mobile.Carousel. + + // refId: String + // An ID of a DOM node to be searched. Siblings of the reference + // node will be searched for views. If not specified, this.domNode + // will be the reference node. + refId: "", + + buildRendering: function(){ + this.domNode = this.srcNodeRef || win.doc.createElement("DIV"); + this.domNode.className = "mblPageIndicator"; + this._tblNode = domConstruct.create("TABLE", {className:"mblPageIndicatorContainer"}, this.domNode); + this._tblNode.insertRow(-1); + this.connect(this.domNode, "onclick", "onClick"); + connect.subscribe("/dojox/mobile/viewChanged", this, function(view){ + this.reset(); + }); + }, + + startup: function(){ + var _this = this; + setTimeout(function(){ // to wait until views' visibility is determined + _this.reset(); + }, 0); + }, + + reset: function(){ + // summary: + // Updates the indicator. + var r = this._tblNode.rows[0]; + var i, c, a = [], dot; + var refNode = (this.refId && dom.byId(this.refId)) || this.domNode; + var children = refNode.parentNode.childNodes; + for(i = 0; i < children.length; i++){ + c = children[i]; + if(this.isView(c)){ + a.push(c); + } + } + if(r.cells.length !== a.length){ + domConstruct.empty(r); + for(i = 0; i < a.length; i++){ + c = a[i]; + dot = domConstruct.create("DIV", {className:"mblPageIndicatorDot"}); + r.insertCell(-1).appendChild(dot); + } + } + if(a.length === 0){ return; } + var currentView = registry.byNode(a[0]).getShowingView(); + for(i = 0; i < r.cells.length; i++){ + dot = r.cells[i].firstChild; + if(a[i] === currentView.domNode){ + domClass.add(dot, "mblPageIndicatorDotSelected"); + }else{ + domClass.remove(dot, "mblPageIndicatorDotSelected"); + } + } + }, + + isView: function(node){ + // summary: + // Returns true if the given node is a view. + return (node && node.nodeType === 1 && domClass.contains(node, "mblView")); + }, + + onClick: function(e){ + if(e.target !== this.domNode){ return; } + if(e.layerX < this._tblNode.offsetLeft){ + connect.publish("/dojox/mobile/prevPage", [this]); + }else if(e.layerX > this._tblNode.offsetLeft + this._tblNode.offsetWidth){ + connect.publish("/dojox/mobile/nextPage", [this]); + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ProgressIndicator.js b/js/dojo-release-1.7.2-src/dojox/mobile/ProgressIndicator.js new file mode 100644 index 0000000..083ea69 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ProgressIndicator.js @@ -0,0 +1,111 @@ +define([ + "dojo/_base/config", + "dojo/_base/declare", + "dojo/dom-construct", + "dojo/dom-style", + "dojo/has" +], function(config, declare, domConstruct, domStyle, has){ + + // module: + // dojox/mobile/ProgressIndicator + // summary: + // A progress indication widget. + + var cls = declare("dojox.mobile.ProgressIndicator", null, { + // summary: + // A progress indication widget. + // description: + // ProgressIndicator is a round spinning graphical representation + // that indicates the current task is on-going. + + // interval: Number + // The time interval in milliseconds for updating the spinning + // indicator. + interval: 100, + + // colors: Array + // An array of indicator colors. + colors: [ + "#C0C0C0", "#C0C0C0", "#C0C0C0", "#C0C0C0", + "#C0C0C0", "#C0C0C0", "#B8B9B8", "#AEAFAE", + "#A4A5A4", "#9A9A9A", "#8E8E8E", "#838383" + ], + + constructor: function(){ + this._bars = []; + this.domNode = domConstruct.create("DIV"); + this.domNode.className = "mblProgContainer"; + if(config["mblAndroidWorkaround"] !== false && has('android') >= 2.2 && has('android') < 3){ + // workaround to avoid the side effects of the fixes for android screen flicker problem + domStyle.set(this.domNode, "webkitTransform", "translate3d(0,0,0)"); + } + this.spinnerNode = domConstruct.create("DIV", null, this.domNode); + for(var i = 0; i < this.colors.length; i++){ + var div = domConstruct.create("DIV", {className:"mblProg mblProg"+i}, this.spinnerNode); + this._bars.push(div); + } + }, + + start: function(){ + // summary: + // Starts the ProgressIndicator spinning. + if(this.imageNode){ + var img = this.imageNode; + var l = Math.round((this.domNode.offsetWidth - img.offsetWidth) / 2); + var t = Math.round((this.domNode.offsetHeight - img.offsetHeight) / 2); + img.style.margin = t+"px "+l+"px"; + return; + } + var cntr = 0; + var _this = this; + var n = this.colors.length; + this.timer = setInterval(function(){ + cntr--; + cntr = cntr < 0 ? n - 1 : cntr; + var c = _this.colors; + for(var i = 0; i < n; i++){ + var idx = (cntr + i) % n; + _this._bars[i].style.backgroundColor = c[idx]; + } + }, this.interval); + }, + + stop: function(){ + // summary: + // Stops the ProgressIndicator spinning. + if(this.timer){ + clearInterval(this.timer); + } + this.timer = null; + if(this.domNode.parentNode){ + this.domNode.parentNode.removeChild(this.domNode); + } + }, + + setImage: function(/*String*/file){ + // summary: + // Sets an indicator icon image file (typically animated GIF). + // If null is specified, restores the default spinner. + if(file){ + this.imageNode = domConstruct.create("IMG", {src:file}, this.domNode); + this.spinnerNode.style.display = "none"; + }else{ + if(this.imageNode){ + this.domNode.removeChild(this.imageNode); + this.imageNode = null; + } + this.spinnerNode.style.display = ""; + } + } + }); + + cls._instance = null; + cls.getInstance = function(){ + if(!cls._instance){ + cls._instance = new cls(); + } + return cls._instance; + }; + + return cls; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/README b/js/dojo-release-1.7.2-src/dojox/mobile/README new file mode 100755 index 0000000..d9ede45 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/README @@ -0,0 +1,57 @@ +------------------------------------------------------------------------------- +Project Name: dojox.mobile +------------------------------------------------------------------------------- +Version 1.0 +Release date: 03/23/2010 +------------------------------------------------------------------------------- +Project state: +dojox.mobile: stable +dojox.mobile.app: experimental +------------------------------------------------------------------------------- +[ NO ] l18n support? +[ NO ] a11y support? +------------------------------------------------------------------------------- +Credits: + Jared Jurkiewicz (jared.jurkiewicz@gmail.com) + Yoshiroh Kamiyama (Contributor to Jared of base code). + Shane O'Sullivan (dojox.mobile.app) + +------------------------------------------------------------------------------- +Project description + +This project tries to solve an area lacking in dojo, namely better +support for mobile devices. This project provides through CSS3 and +custom styles, interfaces that display and work well on mobile devices +such as the Android and iPhone Smart Phones. + +The code is deliberately kept as lightweight as possible, using CSS3 animations +and the like to perform the effects. There is a compat.js, which will simulate +most of the effects using dojo.animateProperty and dojox.fx where possible on +browsers such as FireFox and IE. It will not load by default, it has to be +required in separately. +------------------------------------------------------------------------------- +Dependencies: + dojo base + dijit/_WidgetBase.js +------------------------------------------------------------------------------- +Documentation + Documentation resides at: + http://dojotoolkit.org/reference-guide/dojox/mobile.html + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/src/dojox/trunk/mobile/* +http://svn.dojotoolkit.org/src/dojox/trunk/mobile.js + +Install into the following directory structure: +/dojox/mobile.js +/dojox/mobile/* + +...which should be at the same level as your Dojo checkout. + +then dojo.require("dojox.mobile") in your application to load it. + +------------------------------------------------------------------------------- + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/RadioButton.js b/js/dojo-release-1.7.2-src/dojox/mobile/RadioButton.js new file mode 100644 index 0000000..da29f0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/RadioButton.js @@ -0,0 +1,20 @@ +define([ + "dojo/_base/declare", + "dijit/form/_RadioButtonMixin", + "./CheckBox" +], function(declare, RadioButtonMixin, CheckBox){ + /*===== + CheckBox = dojox.mobile.CheckBox; + RadioButtonMixin = dijit.form._RadioButtonMixin; + =====*/ + return declare("dojox.mobile.RadioButton", [CheckBox, RadioButtonMixin], { + // summary: + // A non-templated radiobutton widget that can be in two states (checked or not). + + // Override automatic assigning type --> node, it causes exception on IE8. + // Instead, type must be specified as this.type when the node is created, as part of the original DOM + _setTypeAttr: null, + + baseClass: "mblRadioButton" + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/RoundRect.js b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRect.js new file mode 100644 index 0000000..ef5b815 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRect.js @@ -0,0 +1,48 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/window", + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase" +], function(array, declare, win, Contained, Container, WidgetBase){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/RoundRect + // summary: + // A simple round rectangle container. + + return declare("dojox.mobile.RoundRect", [WidgetBase, Container, Contained], { + // summary: + // A simple round rectangle container. + // description: + // RoundRect is a simple round rectangle container for any HTML + // and/or widgets. You can achieve the same appearance by just + // applying the -webkit-border-radius style to a div tag. However, + // if you use RoundRect, you can get a round rectangle even on + // non-CSS3 browsers such as (older) IE. + + // shadow: Boolean + // If true, adds a shadow effect to the container element. + shadow: false, + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("DIV"); + this.domNode.className = this.shadow ? "mblRoundRect mblShadow" : "mblRoundRect"; + }, + + resize: function(){ + // summary: + // Calls resize() of each child widget. + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectCategory.js b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectCategory.js new file mode 100644 index 0000000..32f1c75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectCategory.js @@ -0,0 +1,40 @@ +define([ + "dojo/_base/declare", + "dojo/_base/window", + "dijit/_Contained", + "dijit/_WidgetBase" +], function(declare, win, Contained, WidgetBase){ + +/*===== + var Contained = dijit._Contained; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/RoundRectCategory + // summary: + // A category header for a rounded rectangle list. + + return declare("dojox.mobile.RoundRectCategory", [WidgetBase, Contained],{ + // summary: + // A category header for a rounded rectangle list. + + // label: String + // A label text for the widget. + label: "", + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("H2"); + this.domNode.className = "mblRoundRectCategory"; + if(!this.label){ + this.label = this.domNode.innerHTML; + } + }, + + _setLabelAttr: function(/*String*/label){ + this.label = label; + this.domNode.innerHTML = this._cv ? this._cv(label) : label; + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectDataList.js b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectDataList.js new file mode 100644 index 0000000..4c0d3f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectDataList.js @@ -0,0 +1,24 @@ +define([ + "dojo/_base/declare", + "./RoundRectList", + "./_DataListMixin" +], function(declare, RoundRectList, DataListMixin){ + +/*===== + var RoundRectList = dojox.mobile.RoundRectList; + var DataListMixin = dojox.mobile._DataListMixin; +=====*/ + + // module: + // dojox/mobile/RoundRectDataList + // summary: + // An enhanced version of RoundRectList. + + return declare("dojox.mobile.RoundRectDataList", [RoundRectList, DataListMixin], { + // summary: + // An enhanced version of RoundRectList. + // description: + // RoundRectDataList is an enhanced version of RoundRectList. It + // can generate ListItems according to the given dojo.data store. + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectList.js b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectList.js new file mode 100644 index 0000000..464027d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/RoundRectList.js @@ -0,0 +1,99 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/window", + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase" +], function(array, declare, win, Contained, Container, WidgetBase){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/RoundRectList + // summary: + // A rounded rectangle list. + + return declare("dojox.mobile.RoundRectList", [WidgetBase, Container, Contained], { + // summary: + // A rounded rectangle list. + // description: + // RoundRectList is a rounded rectangle list, which can be used to + // display a group of items. Each item must be + // dojox.mobile.ListItem. + + // transition: String + // The default animated transition effect for child items. + transition: "slide", + + // iconBase: String + // The default icon path for child items. + iconBase: "", + + // iconPos: String + // The default icon position for child items. + iconPos: "", + + // select: String + // Selection mode of the list. The check mark is shown for the + // selected list item(s). The value can be "single", "multiple", or + // "". If "single", there can be only one selected item at a time. + // If "multiple", there can be multiple selected items at a time. + select: "", + + // stateful: String + // If true, the last selected item remains highlighted. + stateful: false, + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("UL"); + this.domNode.className = "mblRoundRectList"; + }, + + resize: function(){ + // summary: + // Calls resize() of each child widget. + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + }, + + onCheckStateChanged: function(/*Widget*/listItem, /*String*/newState){ + // summary: + // Stub function to connect to from your application. + // description: + // Called when the check state has been changed. + }, + + _setStatefulAttr: function(stateful){ + this.stateful = stateful; + array.forEach(this.getChildren(), function(child){ + child.setArrow && child.setArrow(); + }); + }, + + deselectItem: function(/*ListItem*/item){ + // summary: + // Deselects the given item. + item.deselect(); + }, + + deselectAll: function(){ + // summary: + // Deselects all the items. + array.forEach(this.getChildren(), function(child){ + child.deselect && child.deselect(); + }); + }, + + selectItem: function(/*ListItem*/item){ + // summary: + // Selects the given item. + item.select(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ScrollableView.js b/js/dojo-release-1.7.2-src/dojox/mobile/ScrollableView.js new file mode 100644 index 0000000..597291c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ScrollableView.js @@ -0,0 +1,139 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/dom-class", + "dojo/dom-construct", + "dijit/registry", // registry.byNode + "./View", + "./_ScrollableMixin" +], function(array, declare, domClass, domConstruct, registry, View, ScrollableMixin){ + + /*===== + var View = dojox.mobile.View; + var ScrollableMixin = dojox.mobile._ScrollableMixin; + =====*/ + + // module: + // dojox/mobile/ScrollableView + // summary: + // A container that has a touch scrolling capability. + + return declare("dojox.mobile.ScrollableView", [View, ScrollableMixin], { + // summary: + // A container that has a touch scrolling capability. + // description: + // ScrollableView is a subclass of View (=dojox.mobile.View). + // Unlike the base View class, ScrollableView's domNode always stays + // at the top of the screen and its height is "100%" of the screen. + // In this fixed domNode, containerNode scrolls. Browser's default + // scrolling behavior is disabled, and the scrolling machinery is + // re-implemented with JavaScript. Thus the user does not need to use the + // two-finger operation to scroll an inner DIV (containerNode). + // The main purpose of this widget is to realize fixed-positioned header + // and/or footer bars. + + // scrollableParams: Object + // Parameters for dojox.mobile.scrollable.init(). + scrollableParams: null, + + // keepScrollPos: Boolean + // Overrides dojox.mobile.View.keepScrollPos. + keepScrollPos: false, + + constructor: function(){ + this.scrollableParams = {noResize: true}; + }, + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblScrollableView"); + this.domNode.style.overflow = "hidden"; + this.domNode.style.top = "0px"; + this.containerNode = domConstruct.create("DIV", + {className:"mblScrollableViewContainer"}, this.domNode); + this.containerNode.style.position = "absolute"; + this.containerNode.style.top = "0px"; // view bar is relative + if(this.scrollDir === "v"){ + this.containerNode.style.width = "100%"; + } + this.reparent(); + this.findAppBars(); + }, + + resize: function(){ + // summary: + // Calls resize() of each child widget. + this.inherited(arguments); // scrollable#resize() will be called + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + }, + + isTopLevel: function(e){ + // summary: + // Returns true if this is a top-level widget. + // Overrides dojox.mobile.scrollable. + var parent = this.getParent && this.getParent(); + return (!parent || !parent.resize); // top level widget + }, + + addChild: function(widget, /*Number?*/insertIndex){ + var c = widget.domNode; + var fixed = this.checkFixedBar(c, true); + if(fixed){ + // Addition of a fixed bar is an exceptional case. + // It has to be added to domNode, not containerNode. + // In this case, insertIndex is ignored. + this.domNode.appendChild(c); + if(fixed === "top"){ + this.fixedHeaderHeight = c.offsetHeight; + this.isLocalHeader = true; + }else if(fixed === "bottom"){ + this.fixedFooterHeight = c.offsetHeight; + this.isLocalFooter = true; + c.style.bottom = "0px"; + } + this.resize(); + if(this._started && !widget._started){ + widget.startup(); + } + }else{ + this.inherited(arguments); + } + }, + + reparent: function(){ + // summary: + // Moves all the children, except header and footer, to + // containerNode. + var i, idx, len, c; + for(i = 0, idx = 0, len = this.domNode.childNodes.length; i < len; i++){ + c = this.domNode.childNodes[idx]; + // search for view-specific header or footer + if(c === this.containerNode || this.checkFixedBar(c, true)){ + idx++; + continue; + } + this.containerNode.appendChild(this.domNode.removeChild(c)); + } + }, + + onAfterTransitionIn: function(moveTo, dir, transition, context, method){ + this.flashScrollBar(); + }, + + getChildren: function(){ + // summary: + // Overrides _WidgetBase#getChildren to add local fixed bars, + // which are not under containerNode, to the children array. + var children = this.inherited(arguments); + if(this.fixedHeader && this.fixedHeader.parentNode === this.domNode){ + children.push(registry.byNode(this.fixedHeader)); + } + if(this.fixedFooter && this.fixedFooter.parentNode === this.domNode){ + children.push(registry.byNode(this.fixedFooter)); + } + return children; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Slider.js b/js/dojo-release-1.7.2-src/dojox/mobile/Slider.js new file mode 100644 index 0000000..222ed96 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Slider.js @@ -0,0 +1,163 @@ +define([ + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-geometry", + "dojo/dom-style", + "dijit/_WidgetBase", + "dijit/form/_FormValueMixin" +], + function(array, connect, declare, lang, win, domClass, domConstruct, domGeometry, domStyle, WidgetBase, FormValueMixin){ + + /*===== + WidgetBase = dijit._WidgetBase; + FormValueMixin = dijit.form._FormValueMixin; + =====*/ + return declare("dojox.mobile.Slider", [WidgetBase, FormValueMixin], { + // summary: + // A non-templated Slider widget similar to the HTML5 INPUT type=range. + // + + // value: [const] Number + // The current slider value. + value: 0, + + // min: [const] Number + // The first value the slider can be set to. + min: 0, + + // max: [const] Number + // The last value the slider can be set to. + max: 100, + + // step: [const] Number + // The delta from 1 value to another. + // This causes the slider handle to snap/jump to the closest possible value. + // A value of 0 means continuous (as much as allowed by pixel resolution). + step: 1, + + baseClass: "mblSlider", + + // flip: [const] Boolean + // Specifies if the slider should change its default: ascending <--> descending. + flip: false, + + // orientation: [const] String + // The slider direction. + // "H": horizontal + // "V": vertical + // "auto": use width/height comparison at instantiation time (default is "H" if width/height are 0) + orientation: "auto", + + // halo: Number + // Size of the boundary that extends beyond the edges of the slider + // to make it easier to touch. + halo: "8pt", + + buildRendering: function(){ + this.focusNode = this.domNode = domConstruct.create("div", {}); + this.valueNode = domConstruct.create("input", (this.srcNodeRef && this.srcNodeRef.name) ? { type: "hidden", name: this.srcNodeRef.name } : { type: "hidden" }, this.domNode, "last"); + var relativeParent = domConstruct.create("div", { style: { position:"relative", height:"100%", width:"100%" } }, this.domNode, "last"); + this.progressBar = domConstruct.create("div", { style:{ position:"absolute" }, "class":"mblSliderProgressBar" }, relativeParent, "last"); + this.touchBox = domConstruct.create("div", { style:{ position:"absolute" }, "class":"mblSliderTouchBox" }, relativeParent, "last"); + this.handle = domConstruct.create("div", { style:{ position:"absolute" }, "class":"mblSliderHandle" }, relativeParent, "last"); + this.inherited(arguments); + }, + + _setValueAttr: function(/*Number*/ value, /*Boolean?*/ priorityChange){ + // summary: + // Hook so set('value', value) works. + var fromPercent = (this.value - this.min) * 100 / (this.max - this.min); + this.valueNode.value = value; + this.inherited(arguments); + if(!this._started){ return; } // don't move images until all the properties are set + this.focusNode.setAttribute("aria-valuenow", value); + var toPercent = (value - this.min) * 100 / (this.max - this.min); + // now perform visual slide + var horizontal = this.orientation != "V"; + if(priorityChange === true){ + domClass.add(this.handle, "mblSliderTransition"); + domClass.add(this.progressBar, "mblSliderTransition"); + }else{ + domClass.remove(this.handle, "mblSliderTransition"); + domClass.remove(this.progressBar, "mblSliderTransition"); + } + domStyle.set(this.handle, this._attrs.handleLeft, (this._reversed ? (100-toPercent) : toPercent) + "%"); + domStyle.set(this.progressBar, this._attrs.width, toPercent + "%"); + }, + + postCreate: function(){ + this.inherited(arguments); + + function beginDrag(e){ + function getEventData(e){ + point = isMouse ? e[this._attrs.pageX] : (e.touches ? e.touches[0][this._attrs.pageX] : e[this._attrs.clientX]); + pixelValue = point - startPixel; + pixelValue = Math.min(Math.max(pixelValue, 0), maxPixels); + var discreteValues = this.step ? ((this.max - this.min) / this.step) : maxPixels; + if(discreteValues <= 1 || discreteValues == Infinity ){ discreteValues = maxPixels; } + var wholeIncrements = Math.round(pixelValue * discreteValues / maxPixels); + value = (this.max - this.min) * wholeIncrements / discreteValues; + value = this._reversed ? (this.max - value) : (this.min + value); + } + function continueDrag(e){ + e.preventDefault(); + lang.hitch(this, getEventData)(e); + this.set('value', value, false); + } + + function endDrag(e){ + e.preventDefault(); + array.forEach(actionHandles, lang.hitch(this, "disconnect")); + actionHandles = []; + this.set('value', this.value, true); + } + + e.preventDefault(); + var isMouse = e.type == "mousedown"; + var box = domGeometry.position(node, false); // can't use true since the added docScroll and the returned x are body-zoom incompatibile + var bodyZoom = domStyle.get(win.body(), "zoom") || 1; + if(isNaN(bodyZoom)){ bodyZoom = 1; } + var nodeZoom = domStyle.get(node, "zoom") || 1; + if(isNaN(nodeZoom)){ nodeZoom = 1; } + var startPixel = box[this._attrs.x] * nodeZoom * bodyZoom + domGeometry.docScroll()[this._attrs.x]; + var maxPixels = box[this._attrs.w] * nodeZoom * bodyZoom; + lang.hitch(this, getEventData)(e); + if(e.target == this.touchBox){ + this.set('value', value, true); + } + array.forEach(actionHandles, connect.disconnect); + var root = win.doc.documentElement; + var actionHandles = [ + this.connect(root, isMouse ? "onmousemove" : "ontouchmove", continueDrag), + this.connect(root, isMouse ? "onmouseup" : "ontouchend", endDrag) + ]; + } + + var point, pixelValue, value; + var node = this.domNode; + if(this.orientation == "auto"){ + this.orientation = node.offsetHeight <= node.offsetWidth ? "H" : "V"; + } + // add V or H suffix to baseClass for styling purposes + domClass.add(this.domNode, array.map(this.baseClass.split(" "), lang.hitch(this, function(c){ return c+this.orientation; }))); + var horizontal = this.orientation != "V"; + var ltr = horizontal ? this.isLeftToRight() : false; + var flip = this.flip; + // _reversed is complicated since you can have flipped right-to-left and vertical is upside down by default + this._reversed = !(horizontal && ((ltr && !flip) || (!ltr && flip))) || (!horizontal && !flip); + this._attrs = horizontal ? { x:'x', w:'w', l:'l', r:'r', pageX:'pageX', clientX:'clientX', handleLeft:"left", left:this._reversed ? "right" : "left", width:"width" } : { x:'y', w:'h', l:'t', r:'b', pageX:'pageY', clientX:'clientY', handleLeft:"top", left:this._reversed ? "bottom" : "top", width:"height" }; + this.progressBar.style[this._attrs.left] = "0px"; + this.connect(this.touchBox, "touchstart", beginDrag); + this.connect(this.touchBox, "onmousedown", beginDrag); // in case this works + this.connect(this.handle, "touchstart", beginDrag); + this.connect(this.handle, "onmousedown", beginDrag); // in case this works + this.startup(); + this.set('value', this.value); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheel.js b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheel.js new file mode 100644 index 0000000..c8b58f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheel.js @@ -0,0 +1,97 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/dom-class", + "dojo/dom-construct", + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./SpinWheelSlot" +], function(array, declare, lang, domClass, domConstruct, Contained, Container, WidgetBase, SpinWheelSlot){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/SpinWheel + // summary: + // A value picker widget that has spin wheels. + + return declare("dojox.mobile.SpinWheel", [WidgetBase, Container, Contained],{ + // summary: + // A value picker widget that has spin wheels. + // description: + // SpinWheel is a value picker component. It is a sectioned wheel + // that can be used to pick up some values from the wheel slots by + // spinning them. + + // slotClasses: Array + // An array of slot classes to be this SpinWheel's slots. + slotClasses: [], + + // slotProps: Array + // An array of property objects for each slot class specified in + // slotClasses. + slotProps: [], + + /* internal properties */ + centerPos: 0, + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblSpinWheel"); + this.centerPos = Math.round(this.domNode.offsetHeight / 2); + + this.slots = []; + for(var i = 0; i < this.slotClasses.length; i++){ + this.slots.push(((typeof this.slotClasses[i] =='string') ? lang.getObject(this.slotClasses[i]) : this.slotClasses[i])(this.slotProps[i])); + this.addChild(this.slots[i]); + } + domConstruct.create("DIV", {className: "mblSpinWheelBar"}, this.domNode); + }, + + startup: function(){ + this.inherited(arguments); + this.reset(); + }, + + getValue: function(){ + // summary: + // Returns an array of slot values. + var a = []; + array.forEach(this.getChildren(), function(w){ + if(w instanceof SpinWheelSlot){ + a.push(w.getValue()); + } + }, this); + return a; + }, + + setValue: function(/*Array*/a){ + // summary: + // Sets the slot values. + var i = 0; + array.forEach(this.getChildren(), function(w){ + if(w instanceof SpinWheelSlot){ + w.setValue(a[i]); + w.setColor(a[i]); + i++; + } + }, this); + }, + + reset: function(){ + // summary: + // Resets the SpinWheel to show the initial values. + array.forEach(this.getChildren(), function(w){ + if(w instanceof SpinWheelSlot){ + w.setInitialValue(); + } + }, this); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelDatePicker.js b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelDatePicker.js new file mode 100644 index 0000000..3a533d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelDatePicker.js @@ -0,0 +1,109 @@ +define([ + "dojo/_base/declare", + "dojo/dom-class", + "dojo/date", + "dojo/date/locale", + "./SpinWheel", + "./SpinWheelSlot" +], function(declare, domClass, ddate, datelocale, SpinWheel, SpinWheelSlot){ + +/*===== + var SpinWheel = dojox.mobile.SpinWheel; + var SpinWheelSlot = dojox.mobile.SpinWheelSlot; +=====*/ + + // module: + // dojox/mobile/SpinWheelDatePicker + // summary: + // A SpinWheel-based date picker widget. + + //TODO: the api doc parser seems to fail if the 1st arg for declare (=class name) is missing.. + var SpinWheelYearSlot = declare(/*===== "dojox.mobile.SpinWheelYearSlot", =====*/ SpinWheelSlot, { + buildRendering: function(){ + this.labels = []; + if(this.labelFrom !== this.labelTo){ + var dtA = new Date(this.labelFrom, 0, 1); + var i, idx; + for(i = this.labelFrom, idx = 0; i <= this.labelTo; i++, idx++){ + dtA.setFullYear(i); + this.labels.push(datelocale.format(dtA, {datePattern:"yyyy", selector:"date"})); + } + } + this.inherited(arguments); + } + }); + + var SpinWheelMonthSlot = declare(/*===== "dojox.mobile.SpinWheelMonthSlot", =====*/ SpinWheelSlot, { + buildRendering: function(){ + this.labels = []; + var dtA = new Date(2000, 0, 1); + var monthStr; + for(var i = 0; i < 12; i++){ + dtA.setMonth(i); + monthStr = datelocale.format(dtA, {datePattern:"MMM", selector:"date"}); + this.labels.push(monthStr); + } + this.inherited(arguments); + } + }); + + var SpinWheelDaySlot = declare(/*===== "dojox.mobile.SpinWheelDaySlot", =====*/ SpinWheelSlot, { + }); + + return declare("dojox.mobile.SpinWheelDatePicker", SpinWheel, { + // summary: + // A SpinWheel-based date picker widget. + // description: + // SpinWheelDatePicker is a date picker widget. It is a subclass of + // dojox.mobile.SpinWheel. It has the year, month, and day slots. + + slotClasses: [ + SpinWheelYearSlot, + SpinWheelMonthSlot, + SpinWheelDaySlot + ], + slotProps: [ + {labelFrom:1970, labelTo:2038}, + {}, + {labelFrom:1, labelTo:31} + ], + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblSpinWheelDatePicker"); + this.connect(this.slots[1], "onFlickAnimationEnd", "onMonthSet"); + this.connect(this.slots[2], "onFlickAnimationEnd", "onDaySet"); + }, + + reset: function(){ + // summary: + // Goes to today. + var slots = this.slots; + var now = new Date(); + var monthStr = datelocale.format(now, {datePattern:"MMM", selector:"date"}); + this.setValue([now.getFullYear(), monthStr, now.getDate()]); + }, + + onMonthSet: function(){ + // summary: + // A handler called when the month value is changed. + var daysInMonth = this.onDaySet(); + var disableValuesTable = {28:[29,30,31], 29:[30,31], 30:[31], 31:[]}; + this.slots[2].disableValues(disableValuesTable[daysInMonth]); + }, + + onDaySet: function(){ + // summary: + // A handler called when the day value is changed. + var y = this.slots[0].getValue(); + var m = this.slots[1].getValue(); + var newMonth = datelocale.parse(y+"/"+m, {datePattern:'yyyy/MMM', selector:'date'}); + var daysInMonth = ddate.getDaysInMonth(newMonth); + var d = this.slots[2].getValue(); + if(daysInMonth < d){ + this.slots[2].setValue(daysInMonth); + } + return daysInMonth; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelSlot.js b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelSlot.js new file mode 100644 index 0000000..e31ce9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelSlot.js @@ -0,0 +1,327 @@ +define([ + "dojo/_base/declare", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-construct", + "dijit/_Contained", + "dijit/_WidgetBase", + "./_ScrollableMixin" +], function(declare, win, domClass, domConstruct, Contained, WidgetBase, ScrollableMixin){ + +/*===== + var Contained = dijit._Contained; + var WidgetBase = dijit._WidgetBase; + var ScrollableMixin = dojox.mobile._ScrollableMixin; +=====*/ + + // module: + // dojox/mobile/SpinWheelSlot + // summary: + // A slot of a SpinWheel. + + return declare("dojox.mobile.SpinWheelSlot", [WidgetBase, Contained, ScrollableMixin], { + // summary: + // A slot of a SpinWheel. + // description: + // SpinWheelSlot is a slot that is placed in the SpinWheel widget. + + // items: Array + // An array of array of key-label paris. + // (e.g. [[0,"Jan"],[1,"Feb"],...] ) If key values for each label + // are not necessary, labels can be used instead. + items: [], + + // labels: Array + // An array of labels to be displayed on the slot. + // (e.g. ["Jan","Feb",...] ) This is a simplified version of the + // items property. + labels: [], + + // labelFrom: Number + // The start value of display values of the slot. This parameter is + // especially useful when slot has serial values. + labelFrom: 0, + + // labelTo: Number + // The end value of display values of the slot. + labelTo: 0, + + // value: String + // The initial value of the slot. + value: "", + + /* internal properties */ + maxSpeed: 500, + minItems: 15, + centerPos: 0, + scrollBar: false, + constraint: false, + allowNestedScrolls: false, + androidWorkaroud: false, // disable workaround in SpinWheel + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblSpinWheelSlot"); + + var i, j, idx; + if(this.labelFrom !== this.labelTo){ + this.labels = []; + for(i = this.labelFrom, idx = 0; i <= this.labelTo; i++, idx++){ + this.labels[idx] = String(i); + } + } + if(this.labels.length > 0){ + this.items = []; + for(i = 0; i < this.labels.length; i++){ + this.items.push([i, this.labels[i]]); + } + } + + this.containerNode = domConstruct.create("DIV", {className:"mblSpinWheelSlotContainer"}); + this.containerNode.style.height + = (win.global.innerHeight||win.doc.documentElement.clientHeight) * 2 + "px"; // must bigger than the screen + this.panelNodes = []; + for(var k = 0; k < 3; k++){ + this.panelNodes[k] = domConstruct.create("DIV", {className:"mblSpinWheelSlotPanel"}); + var len = this.items.length; + var n = Math.ceil(this.minItems / len); + for(j = 0; j < n; j++){ + for(i = 0; i < len; i++){ + domConstruct.create("DIV", { + className: "mblSpinWheelSlotLabel", + name: this.items[i][0], + innerHTML: this._cv ? this._cv(this.items[i][1]) : this.items[i][1] + }, this.panelNodes[k]); + } + } + this.containerNode.appendChild(this.panelNodes[k]); + } + this.domNode.appendChild(this.containerNode); + this.touchNode = domConstruct.create("DIV", {className:"mblSpinWheelSlotTouch"}, this.domNode); + this.setSelectable(this.domNode, false); + }, + + startup: function(){ + this.inherited(arguments); + this.centerPos = this.getParent().centerPos; + var items = this.panelNodes[1].childNodes; + this._itemHeight = items[0].offsetHeight; + this.adjust(); + }, + + adjust: function(){ + // summary: + // Adjusts the position of slot panels. + var items = this.panelNodes[1].childNodes; + var adjustY; + for(var i = 0, len = items.length; i < len; i++){ + var item = items[i]; + if(item.offsetTop <= this.centerPos && this.centerPos < item.offsetTop + item.offsetHeight){ + adjustY = this.centerPos - (item.offsetTop + Math.round(item.offsetHeight/2)); + break; + } + } + var h = this.panelNodes[0].offsetHeight; + this.panelNodes[0].style.top = -h + adjustY + "px"; + this.panelNodes[1].style.top = adjustY + "px"; + this.panelNodes[2].style.top = h + adjustY + "px"; + }, + + setInitialValue: function(){ + // summary: + // Sets the initial value using this.value or the first item. + if(this.items.length > 0){ + var val = (this.value !== "") ? this.value : this.items[0][1]; + this.setValue(val); + } + }, + + getCenterPanel: function(){ + // summary: + // Gets a panel that contains the currently selected item. + var pos = this.getPos(); + for(var i = 0, len = this.panelNodes.length; i < len; i++){ + var top = pos.y + this.panelNodes[i].offsetTop; + if(top <= this.centerPos && this.centerPos < top + this.panelNodes[i].offsetHeight){ + return this.panelNodes[i]; + } + } + return null; + }, + + setColor: function(/*String*/value){ + // summary: + // Sets the color of the specified item as blue. + for(var i = 0, len = this.panelNodes.length; i < len; i++){ + var items = this.panelNodes[i].childNodes; + for(var j = 0; j < items.length; j++){ + if(items[j].innerHTML === String(value)){ + domClass.add(items[j], "mblSpinWheelSlotLabelBlue"); + }else{ + domClass.remove(items[j], "mblSpinWheelSlotLabelBlue"); + } + } + } + }, + + disableValues: function(/*Array*/values){ + // summary: + // Makes the specified items grayed out. + for(var i = 0, len = this.panelNodes.length; i < len; i++){ + var items = this.panelNodes[i].childNodes; + for(var j = 0; j < items.length; j++){ + domClass.remove(items[j], "mblSpinWheelSlotLabelGray"); + for(var k = 0; k < values.length; k++){ + if(items[j].innerHTML === String(values[k])){ + domClass.add(items[j], "mblSpinWheelSlotLabelGray"); + break; + } + } + } + } + }, + + getCenterItem: function(){ + // summary: + // Gets the currently selected item. + var pos = this.getPos(); + var centerPanel = this.getCenterPanel(); + if(centerPanel){ + var top = pos.y + centerPanel.offsetTop; + var items = centerPanel.childNodes; + for(var i = 0, len = items.length; i < len; i++){ + if(top + items[i].offsetTop <= this.centerPos && this.centerPos < top + items[i].offsetTop + items[i].offsetHeight){ + return items[i]; + } + } + } + return null; + + }, + + getValue: function(){ + // summary: + // Gets the currently selected value. + var item = this.getCenterItem(); + return (item && item.innerHTML); + }, + + getKey: function(){ + // summary: + // Gets the key for the currently selected value. + return this.getCenterItem().getAttribute("name"); + }, + + setValue: function(newValue){ + // summary: + // Sets the newValue to this slot. + var idx0, idx1; + var curValue = this.getValue(); + if(!curValue){ + this._penddingValue = newValue; + return; + } + this._penddingValue = undefined; + var n = this.items.length; + for(var i = 0; i < n; i++){ + if(this.items[i][1] === String(curValue)){ + idx0 = i; + } + if(this.items[i][1] === String(newValue)){ + idx1 = i; + } + if(idx0 !== undefined && idx1 !== undefined){ + break; + } + } + var d = idx1 - (idx0 || 0); + var m; + if(d > 0){ + m = (d < n - d) ? -d : n - d; + }else{ + m = (-d < n + d) ? -d : -(n + d); + } + var to = this.getPos(); + to.y += m * this._itemHeight; + this.slideTo(to, 1); + }, + + getSpeed: function(){ + // summary: + // Overrides dojox.mobile.scrollable.getSpeed(). + var y = 0, n = this._time.length; + var delta = (new Date()).getTime() - this.startTime - this._time[n - 1]; + if(n >= 2 && delta < 200){ + var dy = this._posY[n - 1] - this._posY[(n - 6) >= 0 ? n - 6 : 0]; + var dt = this._time[n - 1] - this._time[(n - 6) >= 0 ? n - 6 : 0]; + y = this.calcSpeed(dy, dt); + } + return {x:0, y:y}; + }, + + calcSpeed: function(/*Number*/d, /*Number*/t){ + // summary: + // Overrides dojox.mobile.scrollable.calcSpeed(). + var speed = this.inherited(arguments); + if(!speed){ return 0; } + var v = Math.abs(speed); + var ret = speed; + if(v > this.maxSpeed){ + ret = this.maxSpeed*(speed/v); + } + return ret; + }, + + adjustDestination: function(to, pos){ + // summary: + // Overrides dojox.mobile.scrollable.adjustDestination(). + var h = this._itemHeight; + var j = to.y + Math.round(h/2); + var a = Math.abs(j); + var r = j >= 0 ? j % h : j % h + h; + to.y = j - r; + }, + + resize: function(e){ + if(this._penddingValue){ + this.setValue(this._penddingValue); + } + }, + + slideTo: function(/*Object*/to, /*Number*/duration, /*String*/easing){ + // summary: + // Overrides dojox.mobile.scrollable.slideTo(). + var pos = this.getPos(); + var top = pos.y + this.panelNodes[1].offsetTop; + var bottom = top + this.panelNodes[1].offsetHeight; + var vh = this.domNode.parentNode.offsetHeight; + var t; + if(pos.y < to.y){ // going down + if(bottom > vh){ + // move up the bottom panel + t = this.panelNodes[2]; + t.style.top = this.panelNodes[0].offsetTop - this.panelNodes[0].offsetHeight + "px"; + this.panelNodes[2] = this.panelNodes[1]; + this.panelNodes[1] = this.panelNodes[0]; + this.panelNodes[0] = t; + } + }else if(pos.y > to.y){ // going up + if(top < 0){ + // move down the top panel + t = this.panelNodes[0]; + t.style.top = this.panelNodes[2].offsetTop + this.panelNodes[2].offsetHeight + "px"; + this.panelNodes[0] = this.panelNodes[1]; + this.panelNodes[1] = this.panelNodes[2]; + this.panelNodes[2] = t; + } + } + if(!this._initialized){ + duration = 0; // to reduce flickers at start-up especially on android + this._initialized = true; + }else if(Math.abs(this._speed.y) < 40){ + duration = 0.2; + } + this.inherited(arguments, [to, duration, easing]); // 2nd arg is to avoid excessive optimization by closure compiler + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelTimePicker.js b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelTimePicker.js new file mode 100644 index 0000000..c94745e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/SpinWheelTimePicker.js @@ -0,0 +1,57 @@ +define([ + "dojo/_base/declare", + "dojo/dom-class", + "./SpinWheel", + "./SpinWheelSlot" +], function(declare, domClass, SpinWheel, SpinWheelSlot){ + +/*===== + var SpinWheel = dojox.mobile.SpinWheel; +=====*/ + + // module: + // dojox/mobile/SpinWheelTimePicker + // summary: + // A SpinWheel-based time picker widget. + + return declare("dojox.mobile.SpinWheelTimePicker", SpinWheel, { + // summary: + // A SpinWheel-based time picker widget. + // description: + // SpinWheelTimePicker is a time picker widget. It is a subclass of + // dojox.mobile.SpinWheel. It has the hour and minute slots. + + slotClasses: [ + SpinWheelSlot, + SpinWheelSlot + ], + slotProps: [ + {labelFrom:0, labelTo:23}, + {labels:["00","01","02","03","04","05","06","07","08","09", + "10","11","12","13","14","15","16","17","18","19", + "20","21","22","23","24","25","26","27","28","29", + "30","31","32","33","34","35","36","37","38","39", + "40","41","42","43","44","45","46","47","48","49", + "50","51","52","53","54","55","56","57","58","59"]} + ], + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblSpinWheelTimePicker"); + }, + + reset: function(){ + // summary: + // Goes to now. + var slots = this.slots; + var now = new Date(); + var _h = now.getHours() + ""; + slots[0].setValue(_h); + slots[0].setColor(_h); + var m = now.getMinutes(); + var _m = (m < 10 ? "0" : "") + m; + slots[1].setValue(_m); + slots[1].setColor(_m); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/SwapView.js b/js/dojo-release-1.7.2-src/dojox/mobile/SwapView.js new file mode 100644 index 0000000..fce753a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/SwapView.js @@ -0,0 +1,228 @@ +define([ + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/dom", + "dojo/dom-class", + "dijit/registry", // registry.byNode + "./View", + "./_ScrollableMixin" +], function(array, connect, declare, dom, domClass, registry, View, ScrollableMixin){ + +/*===== + var View = dojox.mobile.View; + var ScrollableMixin = dojox.mobile._ScrollableMixin; +=====*/ + + // module: + // dojox/mobile/SwapView + // summary: + // A container that can be flipped horizontally. + + return declare("dojox.mobile.SwapView", [View, ScrollableMixin], { + // summary: + // A container that can be flipped horizontally. + // description: + // SwapView is a container widget that represents entire mobile + // device screen, and can be swiped horizontally. (In dojo-1.6, it + // was called 'FlippableView'.) SwapView is a subclass of + // dojox.mobile.View. SwapView allows the user to swipe the screen + // left or right to move between the views. When SwapView is + // swiped, it finds an adjacent SwapView to open it. + + /* internal properties */ + scrollDir: "f", + weight: 1.2, + + buildRendering: function(){ + this.inherited(arguments); + domClass.add(this.domNode, "mblSwapView"); + this.setSelectable(this.domNode, false); + this.containerNode = this.domNode; + connect.subscribe("/dojox/mobile/nextPage", this, "handleNextPage"); + connect.subscribe("/dojox/mobile/prevPage", this, "handlePrevPage"); + this.findAppBars(); + }, + + resize: function(){ + // summary: + // Calls resize() of each child widget. + this.inherited(arguments); // scrollable#resize() will be called + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + }, + + onTouchStart: function(e){ + // summary: + // Internal function to handle touchStart events. + var fromTop = this.domNode.offsetTop; + var nextView = this.nextView(this.domNode); + if(nextView){ + nextView.stopAnimation(); + domClass.add(nextView.domNode, "mblIn"); + // Temporarily add padding to align with the fromNode while transition + nextView.containerNode.style.paddingTop = fromTop + "px"; + } + var prevView = this.previousView(this.domNode); + if(prevView){ + prevView.stopAnimation(); + domClass.add(prevView.domNode, "mblIn"); + // Temporarily add padding to align with the fromNode while transition + prevView.containerNode.style.paddingTop = fromTop + "px"; + } + this.inherited(arguments); + }, + + handleNextPage: function(/*Widget*/w){ + // summary: + // Called when the "/dojox/mobile/nextPage" topic is published. + var refNode = w.refId && dom.byId(w.refId) || w.domNode; + if(this.domNode.parentNode !== refNode.parentNode){ return; } + if(this.getShowingView() !== this){ return; } + this.goTo(1); + }, + + handlePrevPage: function(/*Widget*/w){ + // summary: + // Called when the "/dojox/mobile/prevPage" topic is published. + var refNode = w.refId && dom.byId(w.refId) || w.domNode; + if(this.domNode.parentNode !== refNode.parentNode){ return; } + if(this.getShowingView() !== this){ return; } + this.goTo(-1); + }, + + goTo: function(/*Number*/dir){ + // summary: + // Moves to the next or previous view. + var w = this.domNode.offsetWidth; + var view = (dir == 1) ? this.nextView(this.domNode) : this.previousView(this.domNode); + if(!view){ return; } + view._beingFlipped = true; + view.scrollTo({x:w*dir}); + view._beingFlipped = false; + view.domNode.style.display = ""; + domClass.add(view.domNode, "mblIn"); + this.slideTo({x:0}, 0.5, "ease-out", {x:-w*dir}); + }, + + isSwapView: function(node){ + // summary: + // Returns true if the given node is a SwapView widget. + return (node && node.nodeType === 1 && domClass.contains(node, "mblSwapView")); + }, + + nextView: function(node){ + // summary: + // Returns the next view. + for(var n = node.nextSibling; n; n = n.nextSibling){ + if(this.isSwapView(n)){ return registry.byNode(n); } + } + return null; + }, + + previousView: function(node){ + // summary: + // Returns the previous view. + for(var n = node.previousSibling; n; n = n.previousSibling){ + if(this.isSwapView(n)){ return registry.byNode(n); } + } + return null; + }, + + scrollTo: function(/*Object*/to){ + // summary: + // Overrides dojox.mobile.scrollable.scrollTo(). + if(!this._beingFlipped){ + var newView, x; + if(to.x < 0){ + newView = this.nextView(this.domNode); + x = to.x + this.domNode.offsetWidth; + }else{ + newView = this.previousView(this.domNode); + x = to.x - this.domNode.offsetWidth; + } + if(newView){ + newView.domNode.style.display = ""; + newView._beingFlipped = true; + newView.scrollTo({x:x}); + newView._beingFlipped = false; + } + } + this.inherited(arguments); + }, + + slideTo: function(/*Object*/to, /*Number*/duration, /*String*/easing, fake_pos){ + // summary: + // Overrides dojox.mobile.scrollable.slideTo(). + if(!this._beingFlipped){ + var w = this.domNode.offsetWidth; + var pos = fake_pos || this.getPos(); + var newView, newX; + if(pos.x < 0){ // moving to left + newView = this.nextView(this.domNode); + if(pos.x < -w/4){ // slide to next + if(newView){ + to.x = -w; + newX = 0; + } + }else{ // go back + if(newView){ + newX = w; + } + } + }else{ // moving to right + newView = this.previousView(this.domNode); + if(pos.x > w/4){ // slide to previous + if(newView){ + to.x = w; + newX = 0; + } + }else{ // go back + if(newView){ + newX = -w; + } + } + } + + if(newView){ + newView._beingFlipped = true; + newView.slideTo({x:newX}, duration, easing); + newView._beingFlipped = false; + + if(newX === 0){ // moving to another view + dojox.mobile.currentView = newView; + } + newView.domNode._isShowing = (newView && newX === 0); + } + this.domNode._isShowing = !(newView && newX === 0); + } + this.inherited(arguments); + }, + + onFlickAnimationEnd: function(e){ + // summary: + // Overrides dojox.mobile.scrollable.onFlickAnimationEnd(). + if(e && e.animationName && e.animationName !== "scrollableViewScroll2"){ return; } + // Hide all the views other than the currently showing one. + // Otherwise, when the orientation is changed, other views + // may appear unexpectedly. + var children = this.domNode.parentNode.childNodes; + for(var i = 0; i < children.length; i++){ + var c = children[i]; + if(this.isSwapView(c)){ + domClass.remove(c, "mblIn"); + if(!c._isShowing){ + c.style.display = "none"; + } + } + } + this.inherited(arguments); + if(this.getShowingView() === this){ + connect.publish("/dojox/mobile/viewChanged", [this]); + // Reset the temporary padding + this.containerNode.style.paddingTop = ""; + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Switch.js b/js/dojo-release-1.7.2-src/dojox/mobile/Switch.js new file mode 100644 index 0000000..f4b258e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Switch.js @@ -0,0 +1,222 @@ +define([ + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/event", + "dojo/_base/window", + "dojo/dom-class", + "dijit/_Contained", + "dijit/_WidgetBase", + "./sniff" +], function(array, connect, declare, event, win, domClass, Contained, WidgetBase, has){ + +/*===== + Contained = dijit._Contained; + WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/Switch + // summary: + // A toggle switch with a sliding knob. + + return declare("dojox.mobile.Switch", [WidgetBase, Contained],{ + // summary: + // A toggle switch with a sliding knob. + // description: + // Switch is a toggle switch with a sliding knob. You can either + // tap or slide the knob to toggle the switch. The onStateChanged + // handler is called when the switch is manipulated. + + // value: String + // The initial state of the switch. "on" or "off". The default + // value is "on". + value: "on", + + // name: String + // A name for a hidden input field, which holds the current value. + name: "", + + // leftLabel: String + // The left-side label of the switch. + leftLabel: "ON", + + // rightLabel: String + // The right-side label of the switch. + rightLabel: "OFF", + + /* internal properties */ + _width: 53, + + buildRendering: function(){ + this.domNode = win.doc.createElement("DIV"); + var c = (this.srcNodeRef && this.srcNodeRef.className) || this.className || this["class"]; + this._swClass = (c || "").replace(/ .*/,""); + this.domNode.className = "mblSwitch"; + var nameAttr = this.name ? " name=\"" + this.name + "\"" : ""; + this.domNode.innerHTML = + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      '; + var n = this.inner = this.domNode.firstChild; + this.left = n.childNodes[0]; + this.right = n.childNodes[1]; + this.knob = n.childNodes[2]; + this.input = n.childNodes[3]; + }, + + postCreate: function(){ + this.connect(this.domNode, "onclick", "onClick"); + this.connect(this.domNode, has('touch') ? "touchstart" : "onmousedown", "onTouchStart"); + this._initialValue = this.value; // for reset() + }, + + _changeState: function(/*String*/state, /*Boolean*/anim){ + var on = (state === "on"); + this.left.style.display = ""; + this.right.style.display = ""; + this.inner.style.left = ""; + if(anim){ + domClass.add(this.domNode, "mblSwitchAnimation"); + } + domClass.remove(this.domNode, on ? "mblSwitchOff" : "mblSwitchOn"); + domClass.add(this.domNode, on ? "mblSwitchOn" : "mblSwitchOff"); + + var _this = this; + setTimeout(function(){ + _this.left.style.display = on ? "" : "none"; + _this.right.style.display = !on ? "" : "none"; + domClass.remove(_this.domNode, "mblSwitchAnimation"); + }, anim ? 300 : 0); + }, + + startup: function(){ + if(this._swClass.indexOf("Round") != -1){ + var r = Math.round(this.domNode.offsetHeight / 2); + this.createRoundMask(this._swClass, r, this.domNode.offsetWidth); + } + }, + + createRoundMask: function(className, r, w){ + if(!has("webkit") || !className){ return; } + if(!this._createdMasks){ this._createdMasks = []; } + if(this._createdMasks[className]){ return; } + this._createdMasks[className] = 1; + + var ctx = win.doc.getCSSCanvasContext("2d", className+"Mask", w, 100); + ctx.fillStyle = "#000000"; + ctx.beginPath(); + ctx.moveTo(r, 0); + ctx.arcTo(0, 0, 0, 2*r, r); + ctx.arcTo(0, 2*r, r, 2*r, r); + ctx.lineTo(w - r, 2*r); + ctx.arcTo(w, 2*r, w, r, r); + ctx.arcTo(w, 0, w - r, 0, r); + ctx.closePath(); + ctx.fill(); + }, + + onClick: function(e){ + if(this._moved){ return; } + this.value = this.input.value = (this.value == "on") ? "off" : "on"; + this._changeState(this.value, true); + this.onStateChanged(this.value); + }, + + onTouchStart: function(e){ + // summary: + // Internal function to handle touchStart events. + this._moved = false; + this.innerStartX = this.inner.offsetLeft; + if(!this._conn){ + this._conn = []; + this._conn.push(connect.connect(this.inner, has('touch') ? "touchmove" : "onmousemove", this, "onTouchMove")); + this._conn.push(connect.connect(this.inner, has('touch') ? "touchend" : "onmouseup", this, "onTouchEnd")); + } + this.touchStartX = e.touches ? e.touches[0].pageX : e.clientX; + this.left.style.display = ""; + this.right.style.display = ""; + event.stop(e); + }, + + onTouchMove: function(e){ + // summary: + // Internal function to handle touchMove events. + e.preventDefault(); + var dx; + if(e.targetTouches){ + if(e.targetTouches.length != 1){ return false; } + dx = e.targetTouches[0].clientX - this.touchStartX; + }else{ + dx = e.clientX - this.touchStartX; + } + var pos = this.innerStartX + dx; + var d = 10; + if(pos <= -(this._width-d)){ pos = -this._width; } + if(pos >= -d){ pos = 0; } + this.inner.style.left = pos + "px"; + if(Math.abs(dx) > d){ + this._moved = true; + } + }, + + onTouchEnd: function(e){ + // summary: + // Internal function to handle touchEnd events. + array.forEach(this._conn, connect.disconnect); + this._conn = null; + if(this.innerStartX == this.inner.offsetLeft){ + if(has('touch')){ + var ev = win.doc.createEvent("MouseEvents"); + ev.initEvent("click", true, true); + this.inner.dispatchEvent(ev); + } + return; + } + var newState = (this.inner.offsetLeft < -(this._width/2)) ? "off" : "on"; + this._changeState(newState, true); + if(newState != this.value){ + this.value = this.input.value = newState; + this.onStateChanged(newState); + } + }, + + onStateChanged: function(/*String*/newState){ + // summary: + // Stub function to connect to from your application. + // description: + // Called when the state has been changed. + }, + + _setValueAttr: function(/*String*/value){ + this._changeState(value, false); + if(this.value != value){ + this.onStateChanged(value); + } + this.value = this.input.value = value; + }, + + _setLeftLabelAttr: function(/*String*/label){ + this.leftLabel = label; + this.left.firstChild.innerHTML = this._cv ? this._cv(label) : label; + }, + + _setRightLabelAttr: function(/*String*/label){ + this.rightLabel = label; + this.right.firstChild.innerHTML = this._cv ? this._cv(label) : label; + }, + + reset: function(){ + // summary: + // Reset the widget's value to what it was at initialization time + this.set("value", this._initialValue); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/TabBar.js b/js/dojo-release-1.7.2-src/dojox/mobile/TabBar.js new file mode 100644 index 0000000..6d719d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/TabBar.js @@ -0,0 +1,153 @@ +define([ + "dojo/_base/array", + "dojo/_base/declare", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-geometry", + "dojo/dom-style", + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./Heading", + "./TabBarButton" +], function(array, declare, domClass, domConstruct, domGeometry, domStyle, Contained, Container, WidgetBase, Heading, TabBarButton){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; +=====*/ + + // module: + // dojox/mobile/TabBar + // summary: + // A bar widget that has buttons to control visibility of views. + + return declare("dojox.mobile.TabBar", [WidgetBase, Container, Contained],{ + // summary: + // A bar widget that has buttons to control visibility of views. + // description: + // TabBar is a container widget that has typically multiple + // TabBarButtons which controls visibility of views. It can be used + // as a tab container. + + // iconBase: String + // The default icon path for child items. + iconBase: "", + + // iconPos: String + // The default icon position for child items. + iconPos: "", + + // barType: String + // "tabBar"(default) or "segmentedControl". + barType: "tabBar", + + // inHeading: Boolean + // A flag that indicates whether this widget is in a Heading + // widget. + inHeading: false, + + // tag: String + // A name of html tag to create as domNode. + tag: "UL", + + /* internal properties */ + _fixedButtonWidth: 76, + _fixedButtonMargin: 17, + _largeScreenWidth: 500, + + buildRendering: function(){ + this._clsName = this.barType == "segmentedControl" ? "mblTabButton" : "mblTabBarButton"; + this.domNode = this.containerNode = this.srcNodeRef || domConstruct.create(this.tag); + this.domNode.className = this.barType == "segmentedControl" ? "mblTabPanelHeader" : "mblTabBar"; + }, + + startup: function(){ + if(this._started){ return; } + this.inherited(arguments); + this.resize(); + }, + + resize: function(size){ + var i,w; + if(size && size.w){ + domGeometry.setMarginBox(this.domNode, size); + w = size.w; + }else{ + // Calculation of the bar width varies according to its "position" value. + // When the widget is used as a fixed bar, its position would be "absolute". + w = domStyle.get(this.domNode, "position") === "absolute" ? + domGeometry.getContentBox(this.domNode).w : domGeometry.getMarginBox(this.domNode).w; + } + var bw = this._fixedButtonWidth; + var bm = this._fixedButtonMargin; + + var children = this.containerNode.childNodes; + var arr = []; + for(i = 0; i < children.length; i++){ + var c = children[i]; + if(c.nodeType != 1){ continue; } + if(domClass.contains(c, this._clsName)){ + arr.push(c); + } + } + + var margin; + if(this.barType == "segmentedControl"){ + margin = w; + var totalW = 0; // total width of all the buttons + for(i = 0; i < arr.length; i++){ + margin -= domGeometry.getMarginBox(arr[i]).w; + totalW += arr[i].offsetWidth; + } + margin = Math.floor(margin/2); + var parent = this.getParent(); + var inHeading = this.inHeading || parent instanceof Heading; + this.containerNode.style.padding = (inHeading ? 0 : 3) + "px 0px 0px " + (inHeading ? 0 : margin) + "px"; + if(inHeading){ + domStyle.set(this.domNode, { + background: "none", + border: "none", + width: totalW + 2 + "px" + }); + } + domClass.add(this.domNode, "mblTabBar" + (inHeading ? "Head" : "Top")); + }else{ + margin = Math.floor((w - (bw + bm * 2) * arr.length) / 2); + if(w < this._largeScreenWidth || margin < 0){ + // If # of buttons is 4, for example, assign "25%" to each button. + // More precisely, 1%(left margin) + 98%(bar width) + 1%(right margin) + for(i = 0; i < arr.length; i++){ + arr[i].style.width = Math.round(98/arr.length) + "%"; + arr[i].style.margin = "0px"; + } + this.containerNode.style.padding = "0px 0px 0px 1%"; + }else{ + // Fixed width buttons. Mainly for larger screen such as iPad. + for(i = 0; i < arr.length; i++){ + arr[i].style.width = bw + "px"; + arr[i].style.margin = "0 " + bm + "px"; + } + if(arr.length > 0){ + arr[0].style.marginLeft = margin + bm + "px"; + } + this.containerNode.style.padding = "0px"; + } + } + + if(!array.some(this.getChildren(), function(child){ return child.iconNode1; })){ + domClass.add(this.domNode, "mblTabBarNoIcons"); + }else{ + domClass.remove(this.domNode, "mblTabBarNoIcons"); + } + + if(!array.some(this.getChildren(), function(child){ return child.label; })){ + domClass.add(this.domNode, "mblTabBarNoText"); + }else{ + domClass.remove(this.domNode, "mblTabBarNoText"); + } + } + }); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/TabBarButton.js b/js/dojo-release-1.7.2-src/dojox/mobile/TabBarButton.js new file mode 100644 index 0000000..aef79fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/TabBarButton.js @@ -0,0 +1,231 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-construct", + "dijit/registry", // registry.byNode + "./common", + "./_ItemBase" +], function(declare, lang, win, domClass, domConstruct, registry, common, ItemBase){ + +/*===== + var ItemBase = dojox.mobile._ItemBase; +=====*/ + + // module: + // dojox/mobile/TabBarButton + // summary: + // A button widget that is placed in the TabBar widget. + + return declare("dojox.mobile.TabBarButton", ItemBase,{ + // summary: + // A button widget that is placed in the TabBar widget. + // description: + // TabBarButton is a button that is placed in the TabBar widget. It + // is a subclass of dojox.mobile._ItemBase just like ListItem or + // IconItem. So, unlike Button, it has similar capability as + // ListItem or IconItem, such as icon support, transition, etc. + + // icon1: String + // A path for the unselected (typically dark) icon. If icon is not + // specified, the iconBase parameter of the parent widget is used. + icon1: "", + + // icon2: String + // A path for the selected (typically highlight) icon. If icon is + // not specified, the iconBase parameter of the parent widget or + // icon1 is used. + icon2: "", + + // iconPos1: String + // The position of an aggregated unselected (typically dark) + // icon. IconPos1 is comma separated values like + // top,left,width,height (ex. "0,0,29,29"). If iconPos1 is not + // specified, the iconPos parameter of the parent widget is used. + iconPos1: "", + + // iconPos2: String + // The position of an aggregated selected (typically highlight) + // icon. IconPos2 is comma separated values like + // top,left,width,height (ex. "0,0,29,29"). If iconPos2 is not + // specified, the iconPos parameter of the parent widget or + // iconPos1 is used. + iconPos2: "", + + // selected: Boolean + // If true, the button is in the selected status. + selected: false, + + // transition: String + // A type of animated transition effect. + transition: "none", + + // tag: String + // A name of html tag to create as domNode. + tag: "LI", + + /* internal properties */ + selectOne: true, + + + inheritParams: function(){ + // summary: + // Overrides dojox.mobile._ItemBase.inheritParams(). + if(this.icon && !this.icon1){ this.icon1 = this.icon; } + var parent = this.getParent(); + if(parent){ + if(!this.transition){ this.transition = parent.transition; } + if(this.icon1 && parent.iconBase && + parent.iconBase.charAt(parent.iconBase.length - 1) === '/'){ + this.icon1 = parent.iconBase + this.icon1; + } + if(!this.icon1){ this.icon1 = parent.iconBase; } + if(!this.iconPos1){ this.iconPos1 = parent.iconPos; } + if(this.icon2 && parent.iconBase && + parent.iconBase.charAt(parent.iconBase.length - 1) === '/'){ + this.icon2 = parent.iconBase + this.icon2; + } + if(!this.icon2){ this.icon2 = parent.iconBase || this.icon1; } + if(!this.iconPos2){ this.iconPos2 = parent.iconPos || this.iconPos1; } + } + }, + + buildRendering: function(){ + var a = this.anchorNode = domConstruct.create("A", {className:"mblTabBarButtonAnchor"}); + this.connect(a, "onclick", "onClick"); + + this.box = domConstruct.create("DIV", {className:"mblTabBarButtonTextBox"}, a); + var box = this.box; + var label = ""; + var r = this.srcNodeRef; + if(r){ + for(var i = 0, len = r.childNodes.length; i < len; i++){ + var n = r.firstChild; + if(n.nodeType === 3){ + label += lang.trim(n.nodeValue); + } + box.appendChild(n); + } + } + if(!this.label){ + this.label = label; + } + + this.domNode = this.srcNodeRef || domConstruct.create(this.tag); + this.containerNode = this.domNode; + this.domNode.appendChild(a); + if(this.domNode.className.indexOf("mblDomButton") != -1){ + // deprecated. TODO: remove this code in 1.8 + var domBtn = domConstruct.create("DIV", null, a); + common.createDomButton(this.domNode, null, domBtn); + domClass.add(this.domNode, "mblTabButtonDomButton"); + domClass.add(domBtn, "mblTabButtonDomButtonClass"); + } + if((this.icon1 || this.icon).indexOf("mblDomButton") != -1){ + domClass.add(this.domNode, "mblTabButtonDomButton"); + } + }, + + startup: function(){ + if(this._started){ return; } + this.inheritParams(); + var parent = this.getParent(); + + var _clsName = parent ? parent._clsName : "mblTabBarButton"; + domClass.add(this.domNode, _clsName + (this.selected ? " mblTabButtonSelected" : "")); + + if(parent && parent.barType == "segmentedControl"){ + // proper className may not be set when created dynamically + domClass.remove(this.domNode, "mblTabBarButton"); + domClass.add(this.domNode, parent._clsName); + this.box.className = ""; + } + this.set({icon1:this.icon1, icon2:this.icon2}); + this.inherited(arguments); + }, + + select: function(){ + // summary: + // Makes this widget in the selected state. + if(arguments[0]){ // deselect + this.selected = false; + domClass.remove(this.domNode, "mblTabButtonSelected"); + }else{ // select + this.selected = true; + domClass.add(this.domNode, "mblTabButtonSelected"); + for(var i = 0, c = this.domNode.parentNode.childNodes; i < c.length; i++){ + if(c[i].nodeType != 1){ continue; } + var w = registry.byNode(c[i]); // sibling widget + if(w && w != this){ + w.deselect(); + } + } + } + if(this.iconNode1){ + this.iconNode1.style.visibility = this.selected ? "hidden" : ""; + } + if(this.iconNode2){ + this.iconNode2.style.visibility = this.selected ? "" : "hidden"; + } + }, + + deselect: function(){ + // summary: + // Makes this widget in the deselected state. + this.select(true); + }, + + onClick: function(e){ + this.defaultClickAction(); + }, + + _setIcon: function(icon, pos, num, sel){ + var i = "icon" + num, n = "iconNode" + num, p = "iconPos" + num; + if(icon){ this[i] = icon; } + if(pos){ + if(this[p] === pos){ return; } + this[p] = pos; + } + if(icon && icon !== "none"){ + if(!this.iconDivNode){ + this.iconDivNode = domConstruct.create("DIV", {className:"mblTabBarButtonDiv"}, this.anchorNode, "first"); + } + if(!this[n]){ + this[n] = domConstruct.create("div", {className:"mblTabBarButtonIcon"}, this.iconDivNode); + }else{ + domConstruct.empty(this[n]); + } + common.createIcon(icon, this[p], null, this.alt, this[n]); + if(this[p]){ + domClass.add(this[n].firstChild, "mblTabBarButtonSpriteIcon"); + } + domClass.remove(this.iconDivNode, "mblTabBarButtonNoIcon"); + this[n].style.visibility = sel ? "hidden" : ""; + }else if(this.iconDivNode){ + domClass.add(this.iconDivNode, "mblTabBarButtonNoIcon"); + } + }, + + _setIcon1Attr: function(icon){ + this._setIcon(icon, null, 1, this.selected); + }, + + _setIcon2Attr: function(icon){ + this._setIcon(icon, null, 2, !this.selected); + }, + + _setIconPos1Attr: function(pos){ + this._setIcon(null, pos, 1, this.selected); + }, + + _setIconPos2Attr: function(pos){ + this._setIcon(null, pos, 2, !this.selected); + }, + + _setLabelAttr: function(/*String*/text){ + this.label = text; + this.box.innerHTML = this._cv ? this._cv(text) : text; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/TextArea.js b/js/dojo-release-1.7.2-src/dojox/mobile/TextArea.js new file mode 100644 index 0000000..c24d398 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/TextArea.js @@ -0,0 +1,39 @@ +define([ + "dojo/_base/declare", + "dojo/dom-construct", + "./TextBox" +], function(declare, domConstruct, TextBox){ + + /*===== + TextBox = dojox.mobile.TextBox; + =====*/ + return declare("dojox.mobile.TextArea",TextBox, { + // summary: + // Non-templated TEXTAREA widget. + // + // description: + // A textarea widget that wraps an HTML TEXTAREA element. + // Takes all the parameters (name, value, etc.) that a vanilla textarea takes. + // + // example: + // | + + baseClass: "mblTextArea", + + postMixInProperties: function(){ + // Copy value from srcNodeRef, unless user specified a value explicitly (or there is no srcNodeRef) + // TODO: parser will handle this in 2.0 + if(!this.value && this.srcNodeRef){ + this.value = this.srcNodeRef.value; + } + this.inherited(arguments); + }, + + buildRendering: function(){ + if(!this.srcNodeRef){ + this.srcNodeRef = domConstruct.create("textarea", {}); + } + this.inherited(arguments); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/TextBox.js b/js/dojo-release-1.7.2-src/dojox/mobile/TextBox.js new file mode 100644 index 0000000..0fa1c13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/TextBox.js @@ -0,0 +1,41 @@ +define([ + "dojo/_base/declare", + "dojo/dom-construct", + "dijit/_WidgetBase", + "dijit/form/_FormValueMixin", + "dijit/form/_TextBoxMixin" +], function(declare, domConstruct, WidgetBase, FormValueMixin, TextBoxMixin){ + + /*===== + WidgetBase = dijit._WidgetBase; + FormValueMixin = dijit.form._FormValueMixin; + TextBoxMixin = dijit.form._TextBoxMixin; + =====*/ + return declare("dojox.mobile.TextBox",[WidgetBase, FormValueMixin, TextBoxMixin],{ + // summary: + // A non-templated base class for textbox form inputs + + baseClass: "mblTextBox", + + // Override automatic assigning type --> node, it causes exception on IE8. + // Instead, type must be specified as this.type when the node is created, as part of the original DOM + _setTypeAttr: null, + + // Map widget attributes to DOMNode attributes. + _setPlaceHolderAttr: "textbox", + + buildRendering: function(){ + if(!this.srcNodeRef){ + this.srcNodeRef = domConstruct.create("input", {"type":this.type}); + } + this.inherited(arguments); + this.textbox = this.focusNode = this.domNode; + }, + + postCreate: function(){ + this.inherited(arguments); + this.connect(this.textbox, "onfocus", "_onFocus"); + this.connect(this.textbox, "onblur", "_onBlur"); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ToggleButton.js b/js/dojo-release-1.7.2-src/dojox/mobile/ToggleButton.js new file mode 100644 index 0000000..f6073ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ToggleButton.js @@ -0,0 +1,25 @@ +define([ + "dojo/_base/declare", + "dojo/dom-class", + "dijit/form/_ToggleButtonMixin", + "./Button" +], function(declare, domClass, ToggleButtonMixin, Button){ + + /*===== + Button = dojox.mobile.Button; + ToggleButtonMixin = dijit.form._ToggleButtonMixin; + =====*/ + return declare("dojox.mobile.ToggleButton", [Button, ToggleButtonMixin], { + // summary: + // A non-templated button widget that can be in two states (checked or not). + // Can be base class for things like tabs or checkbox or radio buttons + + baseClass: "mblToggleButton", + + _setCheckedAttr: function(){ + this.inherited(arguments); + var newStateClasses = (this.baseClass+' '+this["class"]).replace(/(\S+)\s*/g, "$1Checked ").split(" "); + domClass[this.checked ? "add" : "remove"](this.focusNode || this.domNode, newStateClasses); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ToolBarButton.js b/js/dojo-release-1.7.2-src/dojox/mobile/ToolBarButton.js new file mode 100644 index 0000000..904b88b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ToolBarButton.js @@ -0,0 +1,107 @@ +define([ + "dojo/_base/declare", + "dojo/_base/window", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-style", + "./common", + "./_ItemBase" +], function(declare, win, domClass, domConstruct, domStyle, common, ItemBase){ +/*===== + var ItemBase = dojox.mobile._ItemBase; +=====*/ + + // module: + // dojox/mobile/ToolBarButton + // summary: + // A button widget that is placed in the Heading widget. + + return declare("dojox.mobile.ToolBarButton", ItemBase, { + // summary: + // A button widget that is placed in the Heading widget. + // description: + // ToolBarButton is a button that is placed in the Heading + // widget. It is a subclass of dojox.mobile._ItemBase just like + // ListItem or IconItem. So, unlike Button, it has basically the + // same capability as ListItem or IconItem, such as icon support, + // transition, etc. + + // selected: Boolean + // If true, the button is in the selected status. + selected: false, + + // btnClass: String + // Deprecated. + btnClass: "", + + /* internal properties */ + _defaultColor: "mblColorDefault", + _selColor: "mblColorDefaultSel", + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("div"); + this.inheritParams(); + domClass.add(this.domNode, "mblToolBarButton mblArrowButtonText"); + var color; + if(this.selected){ + color = this._selColor; + }else if(this.domNode.className.indexOf("mblColor") == -1){ + color = this._defaultColor; + } + domClass.add(this.domNode, color); + + if(!this.label){ + this.label = this.domNode.innerHTML; + } + + if(this.icon && this.icon != "none"){ + this.iconNode = domConstruct.create("div", {className:"mblToolBarButtonIcon"}, this.domNode); + common.createIcon(this.icon, this.iconPos, null, this.alt, this.iconNode); + if(this.iconPos){ + domClass.add(this.iconNode.firstChild, "mblToolBarButtonSpriteIcon"); + } + }else{ + if(common.createDomButton(this.domNode)){ + domClass.add(this.domNode, "mblToolBarButtonDomButton"); + }else{ + domClass.add(this.domNode, "mblToolBarButtonText"); + } + } + this.connect(this.domNode, "onclick", "onClick"); + }, + + select: function(){ + // summary: + // Makes this widget in the selected state. + domClass.toggle(this.domNode, this._selColor, !arguments[0]); + this.selected = !arguments[0]; + }, + + deselect: function(){ + // summary: + // Makes this widget in the deselected state. + this.select(true); + }, + + onClick: function(e){ + this.setTransitionPos(e); + this.defaultClickAction(); + }, + + _setBtnClassAttr: function(/*String*/btnClass){ + var node = this.domNode; + if(node.className.match(/(mblDomButton\w+)/)){ + domClass.remove(node, RegExp.$1); + } + domClass.add(node, btnClass); + if(common.createDomButton(this.domNode)){ + domClass.add(this.domNode, "mblToolBarButtonDomButton"); + } + }, + + _setLabelAttr: function(/*String*/text){ + this.label = text; + this.domNode.innerHTML = this._cv ? this._cv(text) : text; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/Tooltip.js b/js/dojo-release-1.7.2-src/dojox/mobile/Tooltip.js new file mode 100644 index 0000000..ed1a460 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/Tooltip.js @@ -0,0 +1,99 @@ +define([ + "dojo/_base/array", // array.forEach + "dijit/registry", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-geometry", + "dojo/dom-style", + "dijit/place", + "dijit/_WidgetBase" +], function(array, registry, declare, lang, domClass, domConstruct, domGeometry, domStyle, place, WidgetBase){ + + /*===== + WidgetBase = dijit._WidgetBase; + =====*/ + return declare("dojox.mobile.Tooltip", WidgetBase, { + // summary: + // A non-templated popup bubble widget + // + + baseClass: "mblTooltip mblTooltipHidden", + + buildRendering: function(){ + // create the helper nodes here in case the user overwrote domNode.innerHTML + this.inherited(arguments); + this.anchor = domConstruct.create("div", {"class":"mblTooltipAnchor"}, this.domNode, "first"); + this.arrow = domConstruct.create("div", {"class":"mblTooltipArrow"}, this.anchor); + this.innerArrow = domConstruct.create("div", {"class":"mblTooltipInnerArrow"}, this.anchor); + }, + + show: function(/*DomNode*/ aroundNode, positions){ + // summary: + // Pop up the tooltip and point to aroundNode using the best position + // positions: + // Ordered list of positions to try matching up. + // * before: places drop down before the aroundNode + // * after: places drop down after the aroundNode + // * above-centered: drop down goes above aroundNode + // * below-centered: drop down goes below aroundNode + var domNode = this.domNode; + var connectorClasses = { + "MRM": "mblTooltipAfter", + "MLM": "mblTooltipBefore", + "BMT": "mblTooltipBelow", + "TMB": "mblTooltipAbove", + "BLT": "mblTooltipBelow", + "TLB": "mblTooltipAbove", + "BRT": "mblTooltipBelow", + "TRB": "mblTooltipAbove", + "TLT": "mblTooltipBefore", + "TRT": "mblTooltipAfter", + "BRB": "mblTooltipAfter", + "BLB": "mblTooltipBefore" + }; + domClass.remove(domNode, ["mblTooltipAfter","mblTooltipBefore","mblTooltipBelow","mblTooltipAbove"]); + array.forEach(registry.findWidgets(domNode), function(widget){ + if(widget.height == "auto" && typeof widget.resize == "function"){ + if(!widget.fixedFooterHeight){ + widget.fixedFooterHeight = domGeometry.getPadBorderExtents(domNode).b; + } + widget.resize(); + } + }); + var best = place.around(domNode, aroundNode, positions || ['below-centered', 'above-centered', 'after', 'before'], this.isLeftToRight()); + var connectorClass = connectorClasses[best.corner + best.aroundCorner.charAt(0)] || ''; + domClass.add(domNode, connectorClass); + var pos = domGeometry.position(aroundNode, true); + domStyle.set(this.anchor, (connectorClass == "mblTooltipAbove" || connectorClass == "mblTooltipBelow") + ? { top: "", left: Math.max(0, pos.x - best.x + (pos.w >> 1) - (this.arrow.offsetWidth >> 1)) + "px" } + : { left: "", top: Math.max(0, pos.y - best.y + (pos.h >> 1) - (this.arrow.offsetHeight >> 1)) + "px" } + ); + domClass.replace(domNode, "mblTooltipVisible", "mblTooltipHidden"); + this.resize = lang.hitch(this, "show", aroundNode, positions); // orientation changes + return best; + }, + + hide: function(){ + // summary: + // Pop down the tooltip + this.resize = undefined; + domClass.replace(this.domNode, "mblTooltipHidden", "mblTooltipVisible"); + }, + + onBlur: function(/*Event*/e){ + return true; // touching outside the overlay area does call hide() by default + }, + + destroy: function(){ + if(this.anchor){ + this.anchor.removeChild(this.innerArrow); + this.anchor.removeChild(this.arrow); + this.domNode.removeChild(this.anchor); + this.anchor = this.arrow = this.innerArrow = undefined; + } + this.inherited(arguments); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/TransitionEvent.js b/js/dojo-release-1.7.2-src/dojox/mobile/TransitionEvent.js new file mode 100644 index 0000000..c21ed26 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/TransitionEvent.js @@ -0,0 +1,35 @@ +define([ + "dojo/_base/declare", + "dojo/_base/Deferred", + "dojo/_base/lang", + "dojo/on", + "./transition" +], function(declare, Deferred, lang, on, transitDeferred){ + + return declare("dojox.mobile.TransitionEvent", null, { + constructor: function(target, transitionOptions, triggerEvent){ + this.transitionOptions=transitionOptions; + this.target = target; + this.triggerEvent=triggerEvent||null; + }, + + dispatch: function(){ + var opts = {bubbles:true, cancelable:true, detail: this.transitionOptions, triggerEvent: this.triggerEvent}; + //console.log("Target: ", this.target, " opts: ", opts); + + var evt = on.emit(this.target,"startTransition", opts); + //console.log('evt: ', evt); + if(evt){ + Deferred.when(transitDeferred, lang.hitch(this, function(transition){ + Deferred.when(transition.call(this, evt), lang.hitch(this, function(results){ + this.endTransition(results); + })); + })); + } + }, + + endTransition: function(results){ + on.emit(this.target, "endTransition" , {detail: results.transitionOptions}); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/View.js b/js/dojo-release-1.7.2-src/dojox/mobile/View.js new file mode 100644 index 0000000..65b2e60 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/View.js @@ -0,0 +1,512 @@ +define([ + "dojo/_base/kernel", // to test dojo.hash + "dojo/_base/array", + "dojo/_base/config", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/sniff", + "dojo/_base/window", + "dojo/_base/Deferred", + "dojo/dom", + "dojo/dom-class", + "dojo/dom-geometry", + "dojo/dom-style", +// "dojo/hash", // optionally prereq'ed + "dijit/registry", // registry.byNode + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./ViewController", // to load ViewController for you (no direct references) + "./transition" +], function(dojo, array, config, connect, declare, lang, has, win, Deferred, dom, domClass, domGeometry, domStyle, registry, Contained, Container, WidgetBase, ViewController, transitDeferred){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; + var ViewController = dojox.mobile.ViewController; +=====*/ + + // module: + // dojox/mobile/View + // summary: + // A widget that represents a view that occupies the full screen + + var dm = lang.getObject("dojox.mobile", true); + + return declare("dojox.mobile.View", [WidgetBase, Container, Contained], { + // summary: + // A widget that represents a view that occupies the full screen + // description: + // View acts as a container for any HTML and/or widgets. An entire + // HTML page can have multiple View widgets and the user can + // navigate through the views back and forth without page + // transitions. + + // selected: Boolean + // If true, the view is displayed at startup time. + selected: false, + + // keepScrollPos: Boolean + // If true, the scroll position is kept between views. + keepScrollPos: true, + + constructor: function(params, node){ + if(node){ + dom.byId(node).style.visibility = "hidden"; + } + this._aw = has('android') >= 2.2 && has('android') < 3; // flag for android animation workaround + }, + + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("DIV"); + this.domNode.className = "mblView"; + this.connect(this.domNode, "webkitAnimationEnd", "onAnimationEnd"); + this.connect(this.domNode, "webkitAnimationStart", "onAnimationStart"); + if(!config['mblCSS3Transition']){ + this.connect(this.domNode, "webkitTransitionEnd", "onAnimationEnd"); + } + var id = location.href.match(/#(\w+)([^\w=]|$)/) ? RegExp.$1 : null; + + this._visible = this.selected && !id || this.id == id; + + if(this.selected){ + dm._defaultView = this; + } + }, + + startup: function(){ + if(this._started){ return; } + var siblings = []; + var children = this.domNode.parentNode.childNodes; + var visible = false; + // check if a visible view exists + for(var i = 0; i < children.length; i++){ + var c = children[i]; + if(c.nodeType === 1 && domClass.contains(c, "mblView")){ + siblings.push(c); + visible = visible || registry.byNode(c)._visible; + } + } + var _visible = this._visible; + // if no visible view exists, make the first view visible + if(siblings.length === 1 || (!visible && siblings[0] === this.domNode)){ + _visible = true; + } + var _this = this; + setTimeout(function(){ // necessary to render the view correctly + if(!_visible){ + _this.domNode.style.display = "none"; + }else{ + dm.currentView = _this; //TODO:1.8 reconsider this. currentView may not have a currently showing view when views are nested. + _this.onStartView(); + connect.publish("/dojox/mobile/startView", [_this]); + } + if(_this.domNode.style.visibility != "visible"){ // this check is to avoid screen flickers + _this.domNode.style.visibility = "visible"; + } + var parent = _this.getParent && _this.getParent(); + if(!parent || !parent.resize){ // top level widget + _this.resize(); + } + }, has("ie") ? 100 : 0); // give IE a little time to complete drawing + this.inherited(arguments); + }, + + resize: function(){ + // summary: + // Calls resize() of each child widget. + array.forEach(this.getChildren(), function(child){ + if(child.resize){ child.resize(); } + }); + }, + + onStartView: function(){ + // summary: + // Stub function to connect to from your application. + // description: + // Called only when this view is shown at startup time. + }, + + onBeforeTransitionIn: function(moveTo, dir, transition, context, method){ + // summary: + // Stub function to connect to from your application. + // description: + // Called before the arriving transition occurs. + }, + + onAfterTransitionIn: function(moveTo, dir, transition, context, method){ + // summary: + // Stub function to connect to from your application. + // description: + // Called after the arriving transition occurs. + }, + + onBeforeTransitionOut: function(moveTo, dir, transition, context, method){ + // summary: + // Stub function to connect to from your application. + // description: + // Called before the leaving transition occurs. + }, + + onAfterTransitionOut: function(moveTo, dir, transition, context, method){ + // summary: + // Stub function to connect to from your application. + // description: + // Called after the leaving transition occurs. + }, + + _saveState: function(moveTo, dir, transition, context, method){ + this._context = context; + this._method = method; + if(transition == "none"){ + transition = null; + } + this._moveTo = moveTo; + this._dir = dir; + this._transition = transition; + this._arguments = lang._toArray(arguments); + this._args = []; + if(context || method){ + for(var i = 5; i < arguments.length; i++){ + this._args.push(arguments[i]); + } + } + }, + + _fixViewState: function(/*DomNode*/toNode){ + // summary: + // Sanity check for view transition states. + // description: + // Sometimes uninitialization of Views fails after making view transition, + // and that results in failure of subsequent view transitions. + // This function does the uninitialization for all the sibling views. + var nodes = this.domNode.parentNode.childNodes; + for(var i = 0; i < nodes.length; i++){ + var n = nodes[i]; + if(n.nodeType === 1 && domClass.contains(n, "mblView")){ + n.className = "mblView"; //TODO: Should remove classes one by one. This would clear user defined classes or even mblScrollableView. + } + } + toNode.className = "mblView"; // just in case toNode is a sibling of an ancestor. + }, + + convertToId: function(moveTo){ + if(typeof(moveTo) == "string"){ + // removes a leading hash mark (#) and params if exists + // ex. "#bar&myParam=0003" -> "bar" + moveTo.match(/^#?([^&?]+)/); + return RegExp.$1; + } + return moveTo; + }, + + performTransition: function(/*String*/moveTo, /*Number*/dir, /*String*/transition, + /*Object|null*/context, /*String|Function*/method /*optional args*/){ + // summary: + // Function to perform the various types of view transitions, such as fade, slide, and flip. + // moveTo: String + // The id of the transition destination view which resides in + // the current page. + // If the value has a hash sign ('#') before the id + // (e.g. #view1) and the dojo.hash module is loaded by the user + // application, the view transition updates the hash in the + // browser URL so that the user can bookmark the destination + // view. In this case, the user can also use the browser's + // back/forward button to navigate through the views in the + // browser history. + // If null, transitions to a blank view. + // If '#', returns immediately without transition. + // dir: Number + // The transition direction. If 1, transition forward. If -1, transition backward. + // For example, the slide transition slides the view from right to left when dir == 1, + // and from left to right when dir == -1. + // transition: String + // A type of animated transition effect. You can choose from + // the standard transition types, "slide", "fade", "flip", or + // from the extended transition types, "cover", "coverv", + // "dissolve", "reveal", "revealv", "scaleIn", + // "scaleOut", "slidev", "swirl", "zoomIn", "zoomOut". If + // "none" is specified, transition occurs immediately without + // animation. + // context: Object + // The object that the callback function will receive as "this". + // method: String|Function + // A callback function that is called when the transition has been finished. + // A function reference, or name of a function in context. + // tags: + // public + // + // example: + // Transition backward to a view whose id is "foo" with the slide animation. + // | performTransition("foo", -1, "slide"); + // + // example: + // Transition forward to a blank view, and then open another page. + // | performTransition(null, 1, "slide", null, function(){location.href = href;}); + if(moveTo === "#"){ return; } + if(dojo.hash){ + if(typeof(moveTo) == "string" && moveTo.charAt(0) == '#' && !dm._params){ + dm._params = []; + for(var i = 0; i < arguments.length; i++){ + dm._params.push(arguments[i]); + } + dojo.hash(moveTo); + return; + } + } + this._saveState.apply(this, arguments); + var toNode; + if(moveTo){ + toNode = this.convertToId(moveTo); + }else{ + if(!this._dummyNode){ + this._dummyNode = win.doc.createElement("DIV"); + win.body().appendChild(this._dummyNode); + } + toNode = this._dummyNode; + } + var fromNode = this.domNode; + var fromTop = fromNode.offsetTop; + toNode = this.toNode = dom.byId(toNode); + if(!toNode){ console.log("dojox.mobile.View#performTransition: destination view not found: "+moveTo); return; } + toNode.style.visibility = this._aw ? "visible" : "hidden"; + toNode.style.display = ""; + this._fixViewState(toNode); + var toWidget = registry.byNode(toNode); + if(toWidget){ + // Now that the target view became visible, it's time to run resize() + if(config["mblAlwaysResizeOnTransition"] || !toWidget._resized){ + dm.resizeAll(null, toWidget); + toWidget._resized = true; + } + + if(transition && transition != "none"){ + // Temporarily add padding to align with the fromNode while transition + toWidget.containerNode.style.paddingTop = fromTop + "px"; + } + + toWidget.movedFrom = fromNode.id; + } + + this.onBeforeTransitionOut.apply(this, arguments); + connect.publish("/dojox/mobile/beforeTransitionOut", [this].concat(lang._toArray(arguments))); + if(toWidget){ + // perform view transition keeping the scroll position + if(this.keepScrollPos && !this.getParent()){ + var scrollTop = win.body().scrollTop || win.doc.documentElement.scrollTop || win.global.pageYOffset || 0; + fromNode._scrollTop = scrollTop; + var toTop = (dir == 1) ? 0 : (toNode._scrollTop || 0); + toNode.style.top = "0px"; + if(scrollTop > 1 || toTop !== 0){ + fromNode.style.top = toTop - scrollTop + "px"; + if(config["mblHideAddressBar"] !== false){ + setTimeout(function(){ // iPhone needs setTimeout + win.global.scrollTo(0, (toTop || 1)); + }, 0); + } + } + }else{ + toNode.style.top = "0px"; + } + toWidget.onBeforeTransitionIn.apply(toWidget, arguments); + connect.publish("/dojox/mobile/beforeTransitionIn", [toWidget].concat(lang._toArray(arguments))); + } + if(!this._aw){ + toNode.style.display = "none"; + toNode.style.visibility = "visible"; + } + + if(dm._iw && dm.scrollable){ // Workaround for iPhone flicker issue (only when scrollable.js is loaded) + var ss = dm.getScreenSize(); + // Show cover behind the view. + // cover's z-index is set to -10000, lower than z-index value specified in transition css. + win.body().appendChild(dm._iwBgCover); + domStyle.set(dm._iwBgCover, { + position: "absolute", + top: "0px", + left: "0px", + height: (ss.h + 1) + "px", // "+1" means the height of scrollTo(0,1) + width: ss.w + "px", + backgroundColor: domStyle.get(win.body(), "background-color"), + zIndex: -10000, + display: "" + }); + // Show toNode behind the cover. + domStyle.set(toNode, { + position: "absolute", + zIndex: -10001, + visibility: "visible", + display: "" + }); + // setTimeout seems to be necessary to avoid flicker. + // Also the duration of setTimeout should be long enough to avoid flicker. + // 0 is not effective. 50 sometimes causes flicker. + setTimeout(lang.hitch(this, function(){ + this._doTransition(fromNode, toNode, transition, dir); + }), 80); + }else{ + this._doTransition(fromNode, toNode, transition, dir); + } + }, + _toCls: function(s){ + // convert from transition name to corresponding class name + // ex. "slide" -> "mblSlide" + return "mbl"+s.charAt(0).toUpperCase() + s.substring(1); + }, + + _doTransition: function(fromNode, toNode, transition, dir){ + var rev = (dir == -1) ? " mblReverse" : ""; + if(dm._iw && dm.scrollable){ // Workaround for iPhone flicker issue (only when scrollable.js is loaded) + // Show toNode after flicker ends + domStyle.set(toNode, { + position: "", + zIndex: "" + }); + // Remove cover + win.body().removeChild(dm._iwBgCover); + }else if(!this._aw){ + toNode.style.display = ""; + } + if(!transition || transition == "none"){ + this.domNode.style.display = "none"; + this.invokeCallback(); + }else if(config['mblCSS3Transition']){ + //get dojox/css3/transit first + Deferred.when(transitDeferred, lang.hitch(this, function(transit){ + //follow the style of .mblView.mblIn in View.css + //need to set the toNode to absolute position + var toPosition = domStyle.get(toNode, "position"); + domStyle.set(toNode, "position", "absolute"); + Deferred.when(transit(fromNode, toNode, {transition: transition, reverse: (dir===-1)?true:false}),lang.hitch(this,function(){ + domStyle.set(toNode, "position", toPosition); + this.invokeCallback(); + })); + })); + }else{ + var s = this._toCls(transition); + domClass.add(fromNode, s + " mblOut" + rev); + domClass.add(toNode, s + " mblIn" + rev); + setTimeout(function(){ + domClass.add(fromNode, "mblTransition"); + domClass.add(toNode, "mblTransition"); + }, 100); + // set transform origin + var fromOrigin = "50% 50%"; + var toOrigin = "50% 50%"; + var scrollTop, posX, posY; + if(transition.indexOf("swirl") != -1 || transition.indexOf("zoom") != -1){ + if(this.keepScrollPos && !this.getParent()){ + scrollTop = win.body().scrollTop || win.doc.documentElement.scrollTop || win.global.pageYOffset || 0; + }else{ + scrollTop = -domGeometry.position(fromNode, true).y; + } + posY = win.global.innerHeight / 2 + scrollTop; + fromOrigin = "50% " + posY + "px"; + toOrigin = "50% " + posY + "px"; + }else if(transition.indexOf("scale") != -1){ + var viewPos = domGeometry.position(fromNode, true); + posX = ((this.clickedPosX !== undefined) ? this.clickedPosX : win.global.innerWidth / 2) - viewPos.x; + if(this.keepScrollPos && !this.getParent()){ + scrollTop = win.body().scrollTop || win.doc.documentElement.scrollTop || win.global.pageYOffset || 0; + }else{ + scrollTop = -viewPos.y; + } + posY = ((this.clickedPosY !== undefined) ? this.clickedPosY : win.global.innerHeight / 2) + scrollTop; + fromOrigin = posX + "px " + posY + "px"; + toOrigin = posX + "px " + posY + "px"; + } + domStyle.set(fromNode, {webkitTransformOrigin:fromOrigin}); + domStyle.set(toNode, {webkitTransformOrigin:toOrigin}); + } + dm.currentView = registry.byNode(toNode); + }, + + onAnimationStart: function(e){ + }, + + + onAnimationEnd: function(e){ + var name = e.animationName || e.target.className; + if(name.indexOf("Out") === -1 && + name.indexOf("In") === -1 && + name.indexOf("Shrink") === -1){ return; } + var isOut = false; + if(domClass.contains(this.domNode, "mblOut")){ + isOut = true; + this.domNode.style.display = "none"; + domClass.remove(this.domNode, [this._toCls(this._transition), "mblIn", "mblOut", "mblReverse"]); + }else{ + // Reset the temporary padding + this.containerNode.style.paddingTop = ""; + } + domStyle.set(this.domNode, {webkitTransformOrigin:""}); + if(name.indexOf("Shrink") !== -1){ + var li = e.target; + li.style.display = "none"; + domClass.remove(li, "mblCloseContent"); + } + if(isOut){ + this.invokeCallback(); + } + // this.domNode may be destroyed as a result of invoking the callback, + // so check for that before accessing it. + this.domNode && (this.domNode.className = "mblView"); + + // clear the clicked position + this.clickedPosX = this.clickedPosY = undefined; + }, + + invokeCallback: function(){ + this.onAfterTransitionOut.apply(this, this._arguments); + connect.publish("/dojox/mobile/afterTransitionOut", [this].concat(this._arguments)); + var toWidget = registry.byNode(this.toNode); + if(toWidget){ + toWidget.onAfterTransitionIn.apply(toWidget, this._arguments); + connect.publish("/dojox/mobile/afterTransitionIn", [toWidget].concat(this._arguments)); + toWidget.movedFrom = undefined; + } + + var c = this._context, m = this._method; + if(!c && !m){ return; } + if(!m){ + m = c; + c = null; + } + c = c || win.global; + if(typeof(m) == "string"){ + c[m].apply(c, this._args); + }else{ + m.apply(c, this._args); + } + }, + + getShowingView: function(){ + // summary: + // Find the currently showing view from my sibling views. + // description: + // Note that dojox.mobile.currentView is the last shown view. + // If the page consists of a splitter, there are multiple showing views. + var nodes = this.domNode.parentNode.childNodes; + for(var i = 0; i < nodes.length; i++){ + var n = nodes[i]; + if(n.nodeType === 1 && domClass.contains(n, "mblView") && domStyle.get(n, "display") !== "none"){ + return registry.byNode(n); + } + } + return null; + }, + + show: function(){ + // summary: + // Shows this view without a transition animation. + var view = this.getShowingView(); + if(view){ + view.domNode.style.display = "none"; // from-style + } + this.domNode.style.display = ""; // to-style + dm.currentView = this; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/ViewController.js b/js/dojo-release-1.7.2-src/dojox/mobile/ViewController.js new file mode 100644 index 0000000..8266cfe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/ViewController.js @@ -0,0 +1,263 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom", + "dojo/dom-class", + "dojo/dom-construct", +// "dojo/hash", // optionally prereq'ed + "dojo/on", + "dojo/ready", + "dijit/registry", // registry.byId + "./ProgressIndicator", + "./TransitionEvent" +], function(dojo, array, connect, declare, lang, win, dom, domClass, domConstruct, on, ready, registry, ProgressIndicator, TransitionEvent){ + + // module: + // dojox/mobile/ViewController + // summary: + // A singleton class that controlls view transition. + + var dm = lang.getObject("dojox.mobile", true); + + var Controller = declare("dojox.mobile.ViewController", null, { + // summary: + // A singleton class that controlls view transition. + // description: + // This class listens to the "startTransition" events and performs + // view transitions. If the transition destination is an external + // view specified with the url parameter, retrieves the view + // content and parses it to create a new target view. + + constructor: function(){ + this.viewMap={}; + this.currentView=null; + this.defaultView=null; + ready(lang.hitch(this, function(){ + on(win.body(), "startTransition", lang.hitch(this, "onStartTransition")); + })); + }, + + findCurrentView: function(moveTo,src){ + // summary: + // Searches for the currently showing view. + if(moveTo){ + var w = registry.byId(moveTo); + if(w && w.getShowingView){ return w.getShowingView(); } + } + if(dm.currentView){ + return dm.currentView; //TODO:1.8 may not return an expected result especially when views are nested + } + //TODO:1.8 probably never reaches here + w = src; + while(true){ + w = w.getParent(); + if(!w){ return null; } + if(domClass.contains(w.domNode, "mblView")){ break; } + } + return w; + }, + + onStartTransition: function(evt){ + // summary: + // A handler that performs view transition. + + evt.preventDefault(); + if(!evt.detail || (evt.detail && !evt.detail.moveTo && !evt.detail.href && !evt.detail.url && !evt.detail.scene)){ return; } + var w = this.findCurrentView(evt.detail.moveTo, (evt.target && evt.target.id)?registry.byId(evt.target.id):registry.byId(evt.target)); // the current view widget + if(!w || (evt.detail && evt.detail.moveTo && w === registry.byId(evt.detail.moveTo))){ return; } + if(evt.detail.href){ + var t = registry.byId(evt.target.id).hrefTarget; + if(t){ + dm.openWindow(evt.detail.href, t); + }else{ + w.performTransition(null, evt.detail.transitionDir, evt.detail.transition, evt.target, function(){location.href = evt.detail.href;}); + } + return; + } else if(evt.detail.scene){ + connect.publish("/dojox/mobile/app/pushScene", [evt.detail.scene]); + return; + } + var moveTo = evt.detail.moveTo; + if(evt.detail.url){ + var id; + if(dm._viewMap && dm._viewMap[evt.detail.url]){ + // external view has already been loaded + id = dm._viewMap[evt.detail.url]; + }else{ + // get the specified external view and append it to the + var text = this._text; + if(!text){ + if(registry.byId(evt.target.id).sync){ + // We do not add explicit dependency on dojo/_base/xhr to this module + // to be able to create a build that does not contain dojo/_base/xhr. + // User applications that do sync loading here need to explicitly + // require dojo/_base/xhr up front. + dojo.xhrGet({url:evt.detail.url, sync:true, load:function(result){ + text = lang.trim(result); + }}); + }else{ + var s = "dojo/_base/xhr"; // assign to a variable so as not to be picked up by the build tool + require([s], lang.hitch(this, function(xhr){ + var prog = ProgressIndicator.getInstance(); + win.body().appendChild(prog.domNode); + prog.start(); + var obj = xhr.get({ + url: evt.detail.url, + handleAs: "text" + }); + obj.addCallback(lang.hitch(this, function(response, ioArgs){ + prog.stop(); + if(response){ + this._text = response; + new TransitionEvent(evt.target, { + transition: evt.detail.transition, + transitionDir: evt.detail.transitionDir, + moveTo: moveTo, + href: evt.detail.href, + url: evt.detail.url, + scene: evt.detail.scene}, + evt.detail) + .dispatch(); + } + })); + obj.addErrback(function(error){ + prog.stop(); + console.log("Failed to load "+evt.detail.url+"\n"+(error.description||error)); + }); + })); + return; + } + } + this._text = null; + id = this._parse(text, registry.byId(evt.target.id).urlTarget); + if(!dm._viewMap){ + dm._viewMap = []; + } + dm._viewMap[evt.detail.url] = id; + } + moveTo = id; + w = this.findCurrentView(moveTo,registry.byId(evt.target.id)) || w; // the current view widget + } + w.performTransition(moveTo, evt.detail.transitionDir, evt.detail.transition, null, null); + }, + + _parse: function(text, id){ + // summary: + // Parses the given view content. + // description: + // If the content is html fragment, constructs dom tree with it + // and runs the parser. If the content is json data, passes it + // to _instantiate(). + var container, view, i, j, len; + var currentView = this.findCurrentView(); + var target = registry.byId(id) && registry.byId(id).containerNode + || dom.byId(id) + || currentView && currentView.domNode.parentNode + || win.body(); + // if a fixed bottom bar exists, a new view should be placed before it. + var refNode = null; + for(j = target.childNodes.length - 1; j >= 0; j--){ + var c = target.childNodes[j]; + if(c.nodeType === 1){ + if(c.getAttribute("fixed") === "bottom"){ + refNode = c; + } + break; + } + } + if(text.charAt(0) === "<"){ // html markup + container = domConstruct.create("DIV", {innerHTML: text}); + for(i = 0; i < container.childNodes.length; i++){ + var n = container.childNodes[i]; + if(n.nodeType === 1){ + view = n; // expecting
                                                      + break; + } + } + if(!view){ + console.log("dojox.mobile.ViewController#_parse: invalid view content"); + return; + } + view.style.visibility = "hidden"; + target.insertBefore(container, refNode); + var ws = dojo.parser.parse(container); + array.forEach(ws, function(w){ + if(w && !w._started && w.startup){ + w.startup(); + } + }); + + // allows multiple root nodes in the fragment, + // but transition will be performed to the 1st view. + for(i = 0, len = container.childNodes.length; i < len; i++){ + target.insertBefore(container.firstChild, refNode); // reparent + } + target.removeChild(container); + + registry.byNode(view)._visible = true; + }else if(text.charAt(0) === "{"){ // json + container = domConstruct.create("DIV"); + target.insertBefore(container, refNode); + this._ws = []; + view = this._instantiate(eval('('+text+')'), container); + for(i = 0; i < this._ws.length; i++){ + var w = this._ws[i]; + w.startup && !w._started && (!w.getParent || !w.getParent()) && w.startup(); + } + this._ws = null; + } + view.style.display = "none"; + view.style.visibility = "visible"; + return dojo.hash ? "#" + view.id : view.id; + }, + + _instantiate: function(/*Object*/obj, /*DomNode*/node, /*Widget*/parent){ + // summary: + // Given the evaluated json data, does the same thing as what + // the parser does. + var widget; + for(var key in obj){ + if(key.charAt(0) == "@"){ continue; } + var cls = lang.getObject(key); + if(!cls){ continue; } + var params = {}; + var proto = cls.prototype; + var objs = lang.isArray(obj[key]) ? obj[key] : [obj[key]]; + for(var i = 0; i < objs.length; i++){ + for(var prop in objs[i]){ + if(prop.charAt(0) == "@"){ + var val = objs[i][prop]; + prop = prop.substring(1); + if(typeof proto[prop] == "string"){ + params[prop] = val; + }else if(typeof proto[prop] == "number"){ + params[prop] = val - 0; + }else if(typeof proto[prop] == "boolean"){ + params[prop] = (val != "false"); + }else if(typeof proto[prop] == "object"){ + params[prop] = eval("(" + val + ")"); + } + } + } + widget = new cls(params, node); + if(node){ // to call View's startup() + widget._visible = true; + this._ws.push(widget); + } + if(parent && parent.addChild){ + parent.addChild(widget); + } + this._instantiate(objs[i], null, widget); + } + } + return widget && widget.domNode; + } + }); + new Controller(); // singleton + return Controller; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/_ComboBoxMenu.js b/js/dojo-release-1.7.2-src/dojox/mobile/_ComboBoxMenu.js new file mode 100644 index 0000000..eaf7f69 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/_ComboBoxMenu.js @@ -0,0 +1,81 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/dom-class", + "dojo/dom-construct", + "dijit/form/_ComboBoxMenuMixin", + "dijit/_WidgetBase", + "dojox/mobile/_ListTouchMixin", + "./scrollable" +], + function(dojo, declare, domClass, domConstruct, ComboBoxMenuMixin, WidgetBase, ListTouchMixin, Scrollable){ + + /*===== + ComboBoxMenuMixin = dijit.form._ComboBoxMenuMixin; + WidgetBase = dijit._WidgetBase; + ListTouchMixin = dojox.mobile._ListTouchMixin; + =====*/ + return declare("dojox.mobile._ComboBoxMenu", [WidgetBase, ListTouchMixin, ComboBoxMenuMixin], { + // summary: + // Focus-less menu for internal use in `dijit.form.ComboBox` + // Abstract methods that must be defined externally: + // onChange: item was explicitly chosen (mousedown somewhere on the menu and mouseup somewhere on the menu) + // onPage: next(1) or previous(-1) button pressed + // tags: + // private + + baseClass: "mblComboBoxMenu", + bgIframe: true, // so it's not created for IE and FF + + buildRendering: function(){ + this.domNode = this.focusNode = domConstruct.create("div", { "class":"mblReset" }); + this.containerNode = domConstruct.create("div", { style: { position:"absolute", top:0, left:0 } }, this.domNode); // needed for scrollable + this.previousButton = domConstruct.create("div", { "class":"mblReset mblComboBoxMenuItem mblComboBoxMenuPreviousButton", role:"option" }, this.containerNode); + this.nextButton = domConstruct.create("div", { "class":"mblReset mblComboBoxMenuItem mblComboBoxMenuNextButton", role:"option" }, this.containerNode); + this.inherited(arguments); + }, + + _createMenuItem: function(){ + return domConstruct.create("div", { + "class": "mblReset mblComboBoxMenuItem" +(this.isLeftToRight() ? "" : " mblComboBoxMenuItemRtl"), + role: "option" + }); + }, + + onSelect: function(/*DomNode*/ node){ + // summary: + // Add selected CSS + domClass.add(node, "mblComboBoxMenuItemSelected"); + }, + + onDeselect: function(/*DomNode*/ node){ + // summary: + // Remove selected CSS + domClass.remove(node, "mblComboBoxMenuItemSelected"); + }, + + onOpen: function(){ + this.scrollable.init({ + domNode: this.domNode, + containerNode: this.containerNode + }); + this.scrollable.scrollTo({x:0, y:0}); + }, + + onClose: function(){ + this.scrollable.cleanup(); + }, + + destroyRendering: function(){ + this.bgIframe = false; // no iframe to destroy + this.inherited(arguments); + }, + + postCreate: function(){ + this.inherited(arguments); + this.scrollable = new Scrollable(dojo, dojox); + this.scrollable.resize = function(){}; // resize changes the height rudely + this.scrollable.androidWorkaroud = false; // disable Android workaround + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/_DataListMixin.js b/js/dojo-release-1.7.2-src/dojox/mobile/_DataListMixin.js new file mode 100644 index 0000000..4b3fb52 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/_DataListMixin.js @@ -0,0 +1,133 @@ +define([ + "dojo/_base/array", + "dojo/_base/connect", + "dojo/_base/declare", + "dojo/_base/lang", + "dijit/registry", // registry.byId + "./ListItem" +], function(array, connect, declare, lang, registry, ListItem){ + + // module: + // dojox/mobile/_DataListMixin + // summary: + // Mixin for widgets to generate the list items corresponding to the + // data provider object. + + return declare("dojox.mobile._DataListMixin", null,{ + // summary: + // Mixin for widgets to generate the list items corresponding to + // the data provider object. + // description: + // By mixing this class into the widgets, the list item nodes are + // generated as the child nodes of the widget and automatically + // re-generated whenever the corresponding data items are modified. + + // store: Object + // Reference to data provider object + store: null, + + // query: Object + // A query that can be passed to 'store' to initially filter the + // items. + query: null, + + // queryOptions: Object + // An optional parameter for the query. + queryOptions: null, + + buildRendering: function(){ + this.inherited(arguments); + if(!this.store){ return; } + var store = this.store; + this.store = null; + this.setStore(store, this.query, this.queryOptions); + }, + + setStore: function(store, query, queryOptions){ + // summary: + // Sets the store to use with this widget. + if(store === this.store){ return; } + this.store = store; + this.query = query; + this.queryOptions = queryOptions; + if(store && store.getFeatures()["dojo.data.api.Notification"]){ + array.forEach(this._conn || [], connect.disconnect); + this._conn = [ + connect.connect(store, "onSet", this, "onSet"), + connect.connect(store, "onNew", this, "onNew"), + connect.connect(store, "onDelete", this, "onDelete") + ]; + } + this.refresh(); + }, + + refresh: function(){ + // summary: + // Fetches the data and generates the list items. + if(!this.store){ return; } + this.store.fetch({ + query: this.query, + queryOptions: this.queryOptions, + onComplete: lang.hitch(this, "onComplete"), + onError: lang.hitch(this, "onError") + }); + }, + + createListItem: function(/*Object*/item){ + // summary: + // Creates a list item widget. + var attr = {}; + var arr = this.store.getLabelAttributes(item); + var labelAttr = arr ? arr[0] : null; + array.forEach(this.store.getAttributes(item), function(name){ + if(name === labelAttr){ + attr["label"] = this.store.getLabel(item); + }else{ + attr[name] = this.store.getValue(item, name); + } + }, this); + var w = new ListItem(attr); + item._widgetId = w.id; + return w; + }, + + generateList: function(/*Array*/items, /*Object*/dataObject){ + // summary: + // Given the data, generates a list of items. + array.forEach(this.getChildren(), function(child){ + child.destroyRecursive(); + }); + array.forEach(items, function(item, index){ + this.addChild(this.createListItem(item)); + }, this); + }, + + onComplete: function(/*Array*/items, /*Object*/request){ + // summary: + // An handler that is called after the fetch completes. + this.generateList(items, request); + }, + + onError: function(/*Object*/errorData, /*Object*/request){ + // summary: + // An error handler. + }, + + onSet: function(/*Object*/item, /*String*/attribute, /*Object|Array*/oldValue, /*Object|Array*/newValue){ + // summary: + // See dojo.data.api.Notification.onSet() + }, + + onNew: function(/*Object*/newItem, /*Object?*/parentInfo){ + // summary: + // See dojo.data.api.Notification.onNew() + this.addChild(this.createListItem(newItem)); + }, + + onDelete: function(/*Object*/deletedItem){ + // summary: + // See dojo.data.api.Notification.onDelete() + registry.byId(deletedItem._widgetId).destroyRecursive(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/_ItemBase.js b/js/dojo-release-1.7.2-src/dojox/mobile/_ItemBase.js new file mode 100644 index 0000000..2427010 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/_ItemBase.js @@ -0,0 +1,248 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/config", + "dojo/_base/declare", + "dijit/registry", // registry.getEnclosingWidget + "dijit/_Contained", + "dijit/_Container", + "dijit/_WidgetBase", + "./TransitionEvent", + "./View" +], function(kernel, config, declare, registry, Contained, Container, WidgetBase, TransitionEvent, View){ + +/*===== + var Contained = dijit._Contained; + var Container = dijit._Container; + var WidgetBase = dijit._WidgetBase; + var TransitionEvent = dojox.mobile.TransitionEvent; + var View = dojox.mobile.View; +=====*/ + + // module: + // dojox/mobile/_ItemBase + // summary: + // A base class for item classes (e.g. ListItem, IconItem, etc.) + + return declare("dojox.mobile._ItemBase", [WidgetBase, Container, Contained],{ + // summary: + // A base class for item classes (e.g. ListItem, IconItem, etc.) + // description: + // _ItemBase is a base class for widgets that have capability to + // make a view transition when clicked. + + // icon: String + // An icon image to display. The value can be either a path for an + // image file or a class name of a DOM button. If icon is not + // specified, the iconBase parameter of the parent widget is used. + icon: "", + + // iconPos: String + // The position of an aggregated icon. IconPos is comma separated + // values like top,left,width,height (ex. "0,0,29,29"). If iconPos + // is not specified, the iconPos parameter of the parent widget is + // used. + iconPos: "", // top,left,width,height (ex. "0,0,29,29") + + // alt: String + // An alt text for the icon image. + alt: "", + + // href: String + // A URL of another web page to go to. + href: "", + + // hrefTarget: String + // A target that specifies where to open a page specified by + // href. The value will be passed to the 2nd argument of + // window.open(). + hrefTarget: "", + + // moveTo: String + // The id of the transition destination view which resides in the + // current page. + // + // If the value has a hash sign ('#') before the id (e.g. #view1) + // and the dojo.hash module is loaded by the user application, the + // view transition updates the hash in the browser URL so that the + // user can bookmark the destination view. In this case, the user + // can also use the browser's back/forward button to navigate + // through the views in the browser history. + // + // If null, transitions to a blank view. + // If '#', returns immediately without transition. + moveTo: "", + + // scene: String + // The name of a scene. Used from dojox.mobile.app. + scene: "", + + // clickable: Boolean + // If true, this item becomes clickable even if a transition + // destination (moveTo, etc.) is not specified. + clickable: false, + + // url: String + // A URL of an html fragment page or JSON data that represents a + // new view content. The view content is loaded with XHR and + // inserted in the current page. Then a view transition occurs to + // the newly created view. The view is cached so that subsequent + // requests would not load the content again. + url: "", + + // urlTarget: String + // Node id under which a new view will be created according to the + // url parameter. If not specified, The new view will be created as + // a sibling of the current view. + urlTarget: "", + + // transition: String + // A type of animated transition effect. You can choose from the + // standard transition types, "slide", "fade", "flip", or from the + // extended transition types, "cover", "coverv", "dissolve", + // "reveal", "revealv", "scaleIn", "scaleOut", "slidev", + // "swirl", "zoomIn", "zoomOut". If "none" is specified, transition + // occurs immediately without animation. + transition: "", + + // transitionDir: Number + // The transition direction. If 1, transition forward. If -1, + // transition backward. For example, the slide transition slides + // the view from right to left when dir == 1, and from left to + // right when dir == -1. + transitionDir: 1, + + // transitionOptions: Object + // A hash object that holds transition options. + transitionOptions: null, + + // callback: Function|String + // A callback function that is called when the transition has been + // finished. A function reference, or name of a function in + // context. + callback: null, + + // sync: Boolean + // If true, XHR for the view content specified with the url + // parameter is performed synchronously. If false, it is done + // asynchronously and the progress indicator is displayed while + // loading the content. This parameter is effective only when the + // url parameter is used. + sync: true, + + // label: String + // A label of the item. If the label is not specified, innerHTML is + // used as a label. + label: "", + + // toggle: Boolean + // If true, the item acts like a toggle button. + toggle: false, + + // _duration: Number + // Duration of selection, milliseconds. + _duration: 800, + + + inheritParams: function(){ + var parent = this.getParent(); + if(parent){ + if(!this.transition){ this.transition = parent.transition; } + if(this.icon && parent.iconBase && + parent.iconBase.charAt(parent.iconBase.length - 1) === '/'){ + this.icon = parent.iconBase + this.icon; + } + if(!this.icon){ this.icon = parent.iconBase; } + if(!this.iconPos){ this.iconPos = parent.iconPos; } + } + }, + + select: function(){ + // summary: + // Makes this widget in the selected state. + // description: + // Subclass must implement. + }, + + deselect: function(){ + // summary: + // Makes this widget in the deselected state. + // description: + // Subclass must implement. + }, + + defaultClickAction: function(e){ + if(this.toggle){ + if(this.selected){ + this.deselect(); + }else{ + this.select(); + } + }else if(!this.selected){ + this.select(); + if(!this.selectOne){ + var _this = this; + setTimeout(function(){ + _this.deselect(); + }, this._duration); + } + var transOpts; + if(this.moveTo || this.href || this.url || this.scene){ + transOpts = {moveTo: this.moveTo, href: this.href, url: this.url, scene: this.scene, transition: this.transition, transitionDir: this.transitionDir}; + }else if(this.transitionOptions){ + transOpts = this.transitionOptions; + } + if(transOpts){ + return new TransitionEvent(this.domNode,transOpts,e).dispatch(); + } + } + }, + + getParent: function(){ + // summary: + // Gets the parent widget. + // description: + // Almost equivalent to _Contained#getParent, but this method + // does not cause a script error even if this widget has no + // parent yet. + var ref = this.srcNodeRef || this.domNode; + return ref && ref.parentNode ? registry.getEnclosingWidget(ref.parentNode) : null; + }, + + setTransitionPos: function(e){ + // summary: + // Stores the clicked position for later use. + // description: + // Some of the transition animations (e.g. ScaleIn) needs the + // clicked position. + var w = this; + while(true){ + w = w.getParent(); + if(!w || w instanceof View){ break; } + } + if(w){ + w.clickedPosX = e.clientX; + w.clickedPosY = e.clientY; + } + }, + + transitionTo: function(moveTo, href, url, scene){ + // summary: + // Performs a view transition. + // description: + // Given a transition destination, this method performs a view + // transition. This method is typically called when this item + // is clicked. + if(config.isDebug){ + var alreadyCalledHash = arguments.callee._ach || (arguments.callee._ach = {}), + caller = (arguments.callee.caller || "unknown caller").toString(); + if(!alreadyCalledHash[caller]){ + kernel.deprecated(this.declaredClass + "::transitionTo() is deprecated." + + caller, "", "2.0"); + alreadyCalledHash[caller] = true; + } + } + new TransitionEvent(this.domNode, {moveTo: moveTo, href: href, url: url, scene: scene, + transition: this.transition, transitionDir: this.transitionDir}).dispatch(); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/_ListTouchMixin.js b/js/dojo-release-1.7.2-src/dojox/mobile/_ListTouchMixin.js new file mode 100644 index 0000000..265f44c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/_ListTouchMixin.js @@ -0,0 +1,32 @@ +define([ + "dojo/_base/declare", + "dojo/_base/event", + "dijit/form/_ListBase" +], function(declare, event, ListBase){ + + /*===== + ListBase = dijit.form._ListBase; + =====*/ + return declare( "dojox.mobile._ListTouchMixin", ListBase, { + // summary: + // Focus-less menu to handle touch events consistently + // Abstract methods that must be defined externally: + // onClick: item was chosen (mousedown somewhere on the menu and mouseup somewhere on the menu) + // tags: + // private + + postCreate: function(){ + this.inherited(arguments); + this.connect(this.domNode, "onclick", "_onClick"); + }, + + _onClick: function(/*Event*/ evt){ + event.stop(evt); + var target = this._getTarget(evt); + if(target){ + this._setSelectedAttr(target); + this.onClick(target); + } + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/_ScrollableMixin.js b/js/dojo-release-1.7.2-src/dojox/mobile/_ScrollableMixin.js new file mode 100644 index 0000000..f402616 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/_ScrollableMixin.js @@ -0,0 +1,123 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/_base/window", + "dojo/dom", + "dojo/dom-class", + "dijit/registry", // registry.byNode + "./scrollable" +], function(dojo, declare, lang, win, dom, domClass, registry, Scrollable){ + // module: + // dojox/mobile/_ScrollableMixin + // summary: + // Mixin for widgets to have a touch scrolling capability. + + var cls = declare("dojox.mobile._ScrollableMixin", null, { + // summary: + // Mixin for widgets to have a touch scrolling capability. + // description: + // Actual implementation is in scrollable.js. + // scrollable.js is not a dojo class, but just a collection + // of functions. This module makes scrollable.js a dojo class. + + // fixedHeader: String + // Id of the fixed header. + fixedHeader: "", + + // fixedFooter: String + // Id of the fixed footer. + fixedFooter: "", + + // scrollableParams: Object + // Parameters for dojox.mobile.scrollable.init(). + scrollableParams: null, + + // allowNestedScrolls: Boolean + // e.g. Allow ScrollableView in a SwapView. + allowNestedScrolls: true, + + constructor: function(){ + this.scrollableParams = {}; + }, + + destroy: function(){ + this.cleanup(); + this.inherited(arguments); + }, + + startup: function(){ + if(this._started){ return; } + var node; + var params = this.scrollableParams; + if(this.fixedHeader){ + node = dom.byId(this.fixedHeader); + if(node.parentNode == this.domNode){ // local footer + this.isLocalHeader = true; + } + params.fixedHeaderHeight = node.offsetHeight; + } + if(this.fixedFooter){ + node = dom.byId(this.fixedFooter); + if(node.parentNode == this.domNode){ // local footer + this.isLocalFooter = true; + node.style.bottom = "0px"; + } + params.fixedFooterHeight = node.offsetHeight; + } + this.init(params); + if(this.allowNestedScrolls){ + for(var p = this.getParent(); p; p = p.getParent()){ + if(p && p.scrollableParams){ + this.isNested = true; + this.dirLock = true; + p.dirLock = true; + break; + } + } + } + this.inherited(arguments); + }, + + findAppBars: function(){ + // summary: + // Search for application-specific header or footer. + var i, len, c; + for(i = 0, len = win.body().childNodes.length; i < len; i++){ + c = win.body().childNodes[i]; + this.checkFixedBar(c, false); + } + if(this.domNode.parentNode){ + for(i = 0, len = this.domNode.parentNode.childNodes.length; i < len; i++){ + c = this.domNode.parentNode.childNodes[i]; + this.checkFixedBar(c, false); + } + } + this.fixedFooterHeight = this.fixedFooter ? this.fixedFooter.offsetHeight : 0; + }, + + checkFixedBar: function(/*DomNode*/node, /*Boolean*/local){ + // summary: + // Checks if the given node is a fixed bar or not. + if(node.nodeType === 1){ + var fixed = node.getAttribute("fixed") + || (registry.byNode(node) && registry.byNode(node).fixed); + if(fixed === "top"){ + domClass.add(node, "mblFixedHeaderBar"); + if(local){ + node.style.top = "0px"; + this.fixedHeader = node; + } + return fixed; + }else if(fixed === "bottom"){ + domClass.add(node, "mblFixedBottomBar"); + this.fixedFooter = node; + return fixed; + } + } + return null; + } + }); + lang.extend(cls, new Scrollable(dojo, dojox)); + return cls; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/_base.js b/js/dojo-release-1.7.2-src/dojox/mobile/_base.js new file mode 100644 index 0000000..317050a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/_base.js @@ -0,0 +1,21 @@ +define([ + "./common", + "./View", + "./Heading", + "./RoundRect", + "./RoundRectCategory", + "./EdgeToEdgeCategory", + "./RoundRectList", + "./EdgeToEdgeList", + "./ListItem", + "./Switch", + "./ToolBarButton", + "./ProgressIndicator" +], function(common, View, Heading, RoundRect, RoundRectCategory, EdgeToEdgeCategory, RoundRectList, EdgeToEdgeList, ListItem, Switch, ToolBarButton, ProgressIndicator){ + // module: + // dojox/mobile/_base + // summary: + // Includes the basic dojox.mobile modules + + return common; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/_compat.js b/js/dojo-release-1.7.2-src/dojox/mobile/_compat.js new file mode 100644 index 0000000..ecbe21a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/_compat.js @@ -0,0 +1,544 @@ +define([ + "dojo/_base/array", // array.forEach + "dojo/_base/config", + "dojo/_base/connect", // connect.connect + "dojo/_base/fx", // fx.fadeOut, fx.fadeIn + "dojo/_base/lang", // lang.extend, lang.isArray + "dojo/_base/sniff", // has("webkit"), has("ie") + "dojo/_base/window", // win.doc, win.body + "dojo/dom-class", + "dojo/dom-construct", + "dojo/dom-style", + "dojo/fx", + "dojo/fx/easing", + "dojo/ready", + "dojo/uacss", + "dijit/registry", // registry.byNode + "dojox/fx", + "dojox/fx/flip", + "./EdgeToEdgeList", + "./IconContainer", + "./RoundRect", + "./RoundRectList", + "./ScrollableView", + "./Switch", + "./View", + "require" +], function(array, config, connect, bfx, lang, has, win, domClass, domConstruct, domStyle, fx, easing, ready, uacss, registry, xfx, flip, EdgeToEdgeList, IconContainer, RoundRect, RoundRectList, ScrollableView, Switch, View, require){ + +/*===== + var EdgeToEdgeList = dojox.mobile.EdgeToEdgeList; + var IconContainer = dojox.mobile.IconContainer; + var RoundRect = dojox.mobile.RoundRect; + var RoundRectList = dojox.mobile.RoundRectList; + var ScrollableView = dojox.mobile.ScrollableView; + var Switch = dojox.mobile.Switch; + var View = dojox.mobile.View; +=====*/ + + // module: + // dojox/mobile/compat + // summary: + // CSS3 compatibility module + // description: + // This module provides support for some of the CSS3 features to dojox.mobile + // for non-CSS3 browsers, such as IE or Firefox. + // If you load this module, it directly replaces some of the methods of + // dojox.mobile instead of subclassing. This way, html pages remains the same + // regardless of whether this compatibility module is used or not. + // Recommended usage is as follows. the code below loads dojox.mobile.compat + // only when isWebKit is true. + // + // dojo.require("dojox.mobile"); + // dojo.requireIf(!has("webkit"), "dojox.mobile.compat"); + // + // This module also loads compatibility CSS files, which has -compat.css + // suffix. You can use either the tag or @import to load theme + // CSS files. Then, this module searches for the loaded CSS files and loads + // compatibility CSS files. For example, if you load iphone.css in a page, + // this module automatically loads iphone-compat.css. + // If you explicitly load iphone-compat.css with or @import, + // this module will not load the already loaded file. + + var dm = lang.getObject("dojox.mobile", true); + /*===== + dm = dojox.mobile + =====*/ + + if(!has("webkit")){ + lang.extend(View, { + _doTransition: function(fromNode, toNode, transition, dir){ + var anim; + this.wakeUp(toNode); + if(!transition || transition == "none"){ + toNode.style.display = ""; + fromNode.style.display = "none"; + toNode.style.left = "0px"; + this.invokeCallback(); + }else if(transition == "slide" || transition == "cover" || transition == "reveal"){ + var w = fromNode.offsetWidth; + var s1 = fx.slideTo({ + node: fromNode, + duration: 400, + left: -w*dir, + top: domStyle.get(fromNode, "top") + }); + var s2 = fx.slideTo({ + node: toNode, + duration: 400, + left: 0, + top: domStyle.get(toNode, "top") + }); + toNode.style.position = "absolute"; + toNode.style.left = w*dir + "px"; + toNode.style.display = ""; + anim = fx.combine([s1,s2]); + connect.connect(anim, "onEnd", this, function(){ + fromNode.style.display = "none"; + fromNode.style.left = "0px"; + toNode.style.position = "relative"; + var toWidget = registry.byNode(toNode); + if(toWidget && !domClass.contains(toWidget.domNode, "out")){ + // Reset the temporary padding + toWidget.containerNode.style.paddingTop = ""; + } + this.invokeCallback(); + }); + anim.play(); + }else if(transition == "slidev" || transition == "coverv" || transition == "reavealv"){ + var h = fromNode.offsetHeight; + var s1 = fx.slideTo({ + node: fromNode, + duration: 400, + left: 0, + top: -h*dir + }); + var s2 = fx.slideTo({ + node: toNode, + duration: 400, + left: 0, + top: 0 + }); + toNode.style.position = "absolute"; + toNode.style.top = h*dir + "px"; + toNode.style.left = "0px"; + toNode.style.display = ""; + anim = fx.combine([s1,s2]); + connect.connect(anim, "onEnd", this, function(){ + fromNode.style.display = "none"; + toNode.style.position = "relative"; + this.invokeCallback(); + }); + anim.play(); + }else if(transition == "flip"){ + anim = xfx.flip({ + node: fromNode, + dir: "right", + depth: 0.5, + duration: 400 + }); + toNode.style.position = "absolute"; + toNode.style.left = "0px"; + connect.connect(anim, "onEnd", this, function(){ + fromNode.style.display = "none"; + toNode.style.position = "relative"; + toNode.style.display = ""; + this.invokeCallback(); + }); + anim.play(); + }else { + // other transitions - "fade", "dissolve", "swirl" + anim = fx.chain([ + bfx.fadeOut({ + node: fromNode, + duration: 600 + }), + bfx.fadeIn({ + node: toNode, + duration: 600 + }) + ]); + toNode.style.position = "absolute"; + toNode.style.left = "0px"; + toNode.style.display = ""; + domStyle.set(toNode, "opacity", 0); + connect.connect(anim, "onEnd", this, function(){ + fromNode.style.display = "none"; + toNode.style.position = "relative"; + domStyle.set(fromNode, "opacity", 1); + this.invokeCallback(); + }); + anim.play(); + } + dm.currentView = registry.byNode(toNode); + }, + + wakeUp: function(/*DomNode*/node){ + // summary: + // Function to force IE to redraw a node since its layout + // code tends to misrender in partial draws. + // node: DomNode + // The node to forcibly redraw. + // tags: + // public + if(has("ie") && !node._wokeup){ + node._wokeup = true; + var disp = node.style.display; + node.style.display = ""; + var nodes = node.getElementsByTagName("*"); + for(var i = 0, len = nodes.length; i < len; i++){ + var val = nodes[i].style.display; + nodes[i].style.display = "none"; + nodes[i].style.display = ""; + nodes[i].style.display = val; + } + node.style.display = disp; + } + } + }); + + + lang.extend(Switch, { + _changeState: function(/*String*/state, /*Boolean*/anim){ + // summary: + // Function to toggle the switch state on the switch + // state: + // The state to toggle, switch 'on' or 'off' + // anim: + // Whether to use animation or not + // tags: + // private + var on = (state === "on"); + + var pos; + if(!on){ + pos = -this.inner.firstChild.firstChild.offsetWidth; + }else{ + pos = 0; + } + + this.left.style.display = ""; + this.right.style.display = ""; + + var _this = this; + var f = function(){ + domClass.remove(_this.domNode, on ? "mblSwitchOff" : "mblSwitchOn"); + domClass.add(_this.domNode, on ? "mblSwitchOn" : "mblSwitchOff"); + _this.left.style.display = on ? "" : "none"; + _this.right.style.display = !on ? "" : "none"; + }; + + if(anim){ + var a = fx.slideTo({ + node: this.inner, + duration: 300, + left: pos, + onEnd: f + }); + a.play(); + }else{ + if(on || pos){ + this.inner.style.left = pos + "px"; + } + f(); + } + } + }); + + + if(has("ie")){ + lang.extend(RoundRect, { + buildRendering: function(){ + // summary: + // Function to simulate the borderRadius appearance on + // IE, since IE does not support this CSS style. + // tags: + // protected + dm.createRoundRect(this); + this.domNode.className = "mblRoundRect"; + } + }); + + + RoundRectList._addChild = RoundRectList.prototype.addChild; + lang.extend(RoundRectList, { + buildRendering: function(){ + // summary: + // Function to simulate the borderRadius appearance on + // IE, since IE does not support this CSS style. + // tags: + // protected + dm.createRoundRect(this, true); + this.domNode.className = "mblRoundRectList"; + }, + + postCreate: function(){ + this.redrawBorders(); + }, + + addChild: function(widget, /*Number?*/insertIndex){ + RoundRectList._addChild.apply(this, arguments); + this.redrawBorders(); + if(dm.applyPngFilter){ + dm.applyPngFilter(widget.domNode); + } + }, + + redrawBorders: function(){ + // summary: + // Function to adjust the creation of RoundRectLists on IE. + // Removed undesired styles. + // tags: + // public + + // Remove a border of the last ListItem. + // This is for browsers that do not support the last-child CSS pseudo-class. + + if(this instanceof EdgeToEdgeList){ return; } + var lastChildFound = false; + for(var i = this.containerNode.childNodes.length - 1; i >= 0; i--){ + var c = this.containerNode.childNodes[i]; + if(c.tagName == "LI"){ + c.style.borderBottomStyle = lastChildFound ? "solid" : "none"; + lastChildFound = true; + } + } + } + }); + + + lang.extend(EdgeToEdgeList, { + buildRendering: function(){ + this.domNode = this.containerNode = this.srcNodeRef || win.doc.createElement("UL"); + this.domNode.className = "mblEdgeToEdgeList"; + } + }); + + + IconContainer._addChild = IconContainer.prototype.addChild; + lang.extend(IconContainer, { + addChild: function(widget, /*Number?*/insertIndex){ + IconContainer._addChild.apply(this, arguments); + if(dm.applyPngFilter){ + dm.applyPngFilter(widget.domNode); + } + } + }); + + + lang.mixin(dm, { + createRoundRect: function(_this, isList){ + // summary: + // Function to adjust the creation of rounded rectangles on IE. + // Deals with IE's lack of borderRadius support + // tags: + // public + var i, len; + _this.domNode = win.doc.createElement("DIV"); + _this.domNode.style.padding = "0px"; + _this.domNode.style.backgroundColor = "transparent"; + _this.domNode.style.border = "none"; // borderStyle = "none"; doesn't work on IE9 + _this.containerNode = win.doc.createElement(isList?"UL":"DIV"); + _this.containerNode.className = "mblRoundRectContainer"; + if(_this.srcNodeRef){ + _this.srcNodeRef.parentNode.replaceChild(_this.domNode, _this.srcNodeRef); + for(i = 0, len = _this.srcNodeRef.childNodes.length; i < len; i++){ + _this.containerNode.appendChild(_this.srcNodeRef.removeChild(_this.srcNodeRef.firstChild)); + } + _this.srcNodeRef = null; + } + _this.domNode.appendChild(_this.containerNode); + + for(i = 0; i <= 5; i++){ + var top = domConstruct.create("DIV"); + top.className = "mblRoundCorner mblRoundCorner"+i+"T"; + _this.domNode.insertBefore(top, _this.containerNode); + + var bottom = domConstruct.create("DIV"); + bottom.className = "mblRoundCorner mblRoundCorner"+i+"B"; + _this.domNode.appendChild(bottom); + } + } + }); + + + lang.extend(ScrollableView, { + postCreate: function(){ + // On IE, margin-top of the first child does not seem to be effective, + // probably because padding-top is specified for containerNode + // to make room for a fixed header. This dummy node is a workaround for that. + var dummy = domConstruct.create("DIV", {className:"mblDummyForIE", innerHTML:" "}, this.containerNode, "first"); + domStyle.set(dummy, { + position: "relative", + marginBottom: "-2px", + fontSize: "1px" + }); + } + }); + } // if (has("ie")) + + + if(has("ie") <= 6){ + dm.applyPngFilter = function(root){ + root = root || win.body(); + var nodes = root.getElementsByTagName("IMG"); + var blank = require.toUrl("dojo/resources/blank.gif"); + for(var i = 0, len = nodes.length; i < len; i++){ + var img = nodes[i]; + var w = img.offsetWidth; + var h = img.offsetHeight; + if(w === 0 || h === 0){ + // The reason why the image has no width/height may be because + // display is "none". If that is the case, let's change the + // display to "" temporarily and see if the image returns them. + if(domStyle.get(img, "display") != "none"){ continue; } + img.style.display = ""; + w = img.offsetWidth; + h = img.offsetHeight; + img.style.display = "none"; + if(w === 0 || h === 0){ continue; } + } + var src = img.src; + if(src.indexOf("resources/blank.gif") != -1){ continue; } + img.src = blank; + img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src+"')"; + img.style.width = w + "px"; + img.style.height = h + "px"; + } + }; + + if(!dm._disableBgFilter && dm.createDomButton){ + dm._createDomButton_orig = dm.createDomButton; + dm.createDomButton = function(/*DomNode*/refNode, /*Object?*/style, /*DomNode?*/toNode){ + var node = dm._createDomButton_orig.apply(this, arguments); + if(node && node.className && node.className.indexOf("mblDomButton") !== -1){ + var f = function(){ + if(node.currentStyle && node.currentStyle.backgroundImage.match(/url.*(mblDomButton.*\.png)/)){ + var img = RegExp.$1; + var src = require.toUrl("dojox/mobile/themes/common/domButtons/compat/") + img; + node.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src+"',sizingMethod='crop')"; + node.style.background = "none"; + } + }; + setTimeout(f, 1000); + setTimeout(f, 5000); + } + return node; + }; + } + } // if(has("ie") <= 6) + + dm.loadCssFile = function(/*String*/file){ + // summary: + // Overrides dojox.mobile.loadCssFile() defined in + // deviceTheme.js. + if(!dm.loadedCssFiles){ dm.loadedCssFiles = []; } + if(win.doc.createStyleSheet){ + // for some reason, IE hangs when you try to load + // multiple css files almost at once. + setTimeout(function(file){ + return function(){ + var ss = win.doc.createStyleSheet(file); + ss && dm.loadedCssFiles.push(ss.owningElement); + }; + }(file), 0); + }else{ + dm.loadedCssFiles.push(domConstruct.create("LINK", { + href: file, + type: "text/css", + rel: "stylesheet" + }, win.doc.getElementsByTagName('head')[0])); + } + }; + + dm.loadCss = function(/*String|Array*/files){ + // summary: + // Function to load and register CSS files with the page + // files: String|Array + // The CSS files to load and register with the page. + // tags: + // private + if(!dm._loadedCss){ + var obj = {}; + array.forEach(dm.getCssPaths(), function(path){ + obj[path] = true; + }); + dm._loadedCss = obj; + } + if(!lang.isArray(files)){ files = [files]; } + for(var i = 0; i < files.length; i++){ + var file = files[i]; + if(!dm._loadedCss[file]){ + dm._loadedCss[file] = true; + dm.loadCssFile(file); + } + } + }; + + dm.getCssPaths = function(){ + var paths = []; + var i, j, len; + + // find @import + var s = win.doc.styleSheets; + for(i = 0; i < s.length; i++){ + if(s[i].href){ continue; } + var r = s[i].cssRules || s[i].imports; + if(!r){ continue; } + for(j = 0; j < r.length; j++){ + if(r[j].href){ + paths.push(r[j].href); + } + } + } + + // find + var elems = win.doc.getElementsByTagName("link"); + for(i = 0, len = elems.length; i < len; i++){ + if(elems[i].href){ + paths.push(elems[i].href); + } + } + return paths; + }; + + dm.loadCompatPattern = /\/mobile\/themes\/.*\.css$/; + + dm.loadCompatCssFiles = function(/*Boolean?*/force){ + // summary: + // Function to perform page-level adjustments on browsers such as + // IE and firefox. It loads compat specific css files into the + // page header. + if(has("ie") && !force){ + setTimeout(function(){ // IE needs setTimeout + dm.loadCompatCssFiles(true); + }, 0); + } + dm._loadedCss = undefined; + var paths = dm.getCssPaths(); + for(var i = 0; i < paths.length; i++){ + var href = paths[i]; + if((href.match(dm.loadCompatPattern) || location.href.indexOf("mobile/tests/") !== -1) && href.indexOf("-compat.css") === -1){ + var compatCss = href.substring(0, href.length-4)+"-compat.css"; + dm.loadCss(compatCss); + } + } + }; + + dm.hideAddressBar = function(/*Event?*/evt, /*Boolean?*/doResize){ + if(doResize !== false){ dm.resizeAll(); } + }; + + ready(function(){ + if(config["mblLoadCompatCssFiles"] !== false){ + dm.loadCompatCssFiles(); + } + if(dm.applyPngFilter){ + dm.applyPngFilter(); + } + }); + + } // end of if(!has("webkit")){ + + return dm; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app.js b/js/dojo-release-1.7.2-src/dojox/mobile/app.js new file mode 100755 index 0000000..174ad28 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app.js @@ -0,0 +1,5 @@ +define([ + "./app/_base" +], function(appBase){ + return appBase; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/AlertDialog.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/AlertDialog.js new file mode 100644 index 0000000..1fe5a0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/AlertDialog.js @@ -0,0 +1,182 @@ +dojo.provide("dojox.mobile.app.AlertDialog"); +dojo.experimental("dojox.mobile.app.AlertDialog"); +dojo.require("dijit._WidgetBase"); + +dojo.declare("dojox.mobile.app.AlertDialog", dijit._WidgetBase, { + + // title: String + // The title of the AlertDialog + title: "", + + // text: String + // The text message displayed in the AlertDialog + text: "", + + // controller: Object + // The SceneController for the currently active scene + controller: null, + + // buttons: Array + buttons: null, + + defaultButtonLabel: "OK", + + // onChoose: Function + // The callback function that is invoked when a button is tapped. + // If the dialog is cancelled, no parameter is passed to this function. + onChoose: null, + + constructor: function(){ + this.onClick = dojo.hitch(this, this.onClick); + this._handleSelect = dojo.hitch(this, this._handleSelect); + }, + + buildRendering: function(){ + this.domNode = dojo.create("div",{ + "class": "alertDialog" + }); + + // Create the outer dialog body + var dlgBody = dojo.create("div", {"class": "alertDialogBody"}, this.domNode); + + // Create the title + dojo.create("div", {"class": "alertTitle", innerHTML: this.title || ""}, dlgBody); + + // Create the text + dojo.create("div", {"class": "alertText", innerHTML: this.text || ""}, dlgBody); + + // Create the node that encapsulates all the buttons + var btnContainer = dojo.create("div", {"class": "alertBtns"}, dlgBody); + + // If no buttons have been defined, default to a single button saying OK + if(!this.buttons || this.buttons.length == 0){ + this.buttons = [{ + label: this.defaultButtonLabel, + value: "ok", + "class": "affirmative" + }]; + } + + var _this = this; + + // Create each of the buttons + dojo.forEach(this.buttons, function(btnInfo){ + var btn = new dojox.mobile.Button({ + btnClass: btnInfo["class"] || "", + label: btnInfo.label + }); + btn._dialogValue = btnInfo.value; + dojo.place(btn.domNode, btnContainer); + _this.connect(btn, "onClick", _this._handleSelect); + }); + + var viewportSize = this.controller.getWindowSize(); + + // Create the mask that blocks out the rest of the screen + this.mask = dojo.create("div", {"class": "dialogUnderlayWrapper", + innerHTML: "
                                                      ", + style: { + width: viewportSize.w + "px", + height: viewportSize.h + "px" + } + }, this.controller.assistant.domNode); + + this.connect(this.mask, "onclick", function(){ + _this.onChoose && _this.onChoose(); + _this.hide(); + }); + }, + + postCreate: function(){ + this.subscribe("/dojox/mobile/app/goback", this._handleSelect); + }, + + _handleSelect: function(event){ + // summary: + // Handle the selection of a value + var node; + console.log("handleSelect"); + if(event && event.target){ + node = event.target; + + // Find the widget that was tapped. + while(!dijit.byNode(node)){ + node - node.parentNode; + } + } + + // If an onChoose function was provided, tell it what button + // value was chosen + if(this.onChoose){ + this.onChoose(node ? dijit.byNode(node)._dialogValue: undefined); + } + // Hide the dialog + this.hide(); + }, + + show: function(){ + // summary: + // Show the dialog + this._doTransition(1); + }, + + hide: function(){ + // summary: + // Hide the dialog + this._doTransition(-1); + }, + + _doTransition: function(dir){ + // summary: + // Either shows or hides the dialog. + // dir: + // An integer. If positive, the dialog is shown. If negative, + // the dialog is hidden. + + // TODO: replace this with CSS transitions + + var anim; + var h = dojo.marginBox(this.domNode.firstChild).h; + + + var bodyHeight = this.controller.getWindowSize().h; + console.log("dialog height = " + h, " body height = " + bodyHeight); + + var high = bodyHeight - h; + var low = bodyHeight; + + var anim1 = dojo.fx.slideTo({ + node: this.domNode, + duration: 400, + top: {start: dir < 0 ? high : low, end: dir < 0 ? low: high} + }); + + var anim2 = dojo[dir < 0 ? "fadeOut" : "fadeIn"]({ + node: this.mask, + duration: 400 + }); + + var anim = dojo.fx.combine([anim1, anim2]); + + var _this = this; + + dojo.connect(anim, "onEnd", this, function(){ + if(dir < 0){ + _this.domNode.style.display = "none"; + dojo.destroy(_this.domNode); + dojo.destroy(_this.mask); + } + }); + anim.play(); + }, + + destroy: function(){ + this.inherited(arguments); + dojo.destroy(this.mask); + }, + + + onClick: function(){ + + } +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/ImageThumbView.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/ImageThumbView.js new file mode 100644 index 0000000..3de3ee7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/ImageThumbView.js @@ -0,0 +1,389 @@ +dojo.provide("dojox.mobile.app.ImageThumbView"); +dojo.experimental("dojox.mobile.app.ImageThumbView"); + +dojo.require("dijit._WidgetBase"); +dojo.require("dojo.string"); + +dojo.declare("dojox.mobile.app.ImageThumbView", dijit._WidgetBase, { + // summary: + // An image thumbnail gallery + + // items: Array + // The data items from which the image urls are retrieved. + // If an item is a string, it is expected to be a URL. Otherwise + // by default it is expected to have a 'url' member. This can + // be configured using the 'urlParam' attribute on this widget. + items: [], + + // urlParam: String + // The paramter name used to retrieve an image url from a JSON object + urlParam: "url", + + labelParam: null, + + itemTemplate: '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ' + + '
                                                      ', + + minPadding: 4, + + maxPerRow: 3, + + maxRows: -1, + + baseClass: "mblImageThumbView", + + thumbSize: "medium", + + animationEnabled: true, + + selectedIndex: -1, + + cache: null, + + cacheMustMatch: false, + + clickEvent: "onclick", + + cacheBust: false, + + disableHide: false, + + constructor: function(params, node){ + }, + + postCreate: function(){ + + this.inherited(arguments); + var _this = this; + + var hoverCls = "mblThumbHover"; + + this.addThumb = dojo.hitch(this, this.addThumb); + this.handleImgLoad = dojo.hitch(this, this.handleImgLoad); + this.hideCached = dojo.hitch(this, this.hideCached); + + this._onLoadImages = {}; + + this.cache = []; + this.visibleImages = []; + + this._cacheCounter = 0; + + this.connect(this.domNode, this.clickEvent, function(event){ + var itemNode = _this._getItemNodeFromEvent(event); + + if(itemNode && !itemNode._cached){ + _this.onSelect(itemNode._item, itemNode._index, _this.items); + dojo.query(".selected", this.domNode).removeClass("selected"); + dojo.addClass(itemNode, "selected"); + } + }); + + dojo.addClass(this.domNode, this.thumbSize); + + this.resize(); + this.render(); + }, + + onSelect: function(item, index, items){ + // summary: + // Dummy function that is triggered when an image is selected. + }, + + _setAnimationEnabledAttr: function(value){ + this.animationEnabled = value; + dojo[value ? "addClass" : "removeClass"](this.domNode, "animated"); + }, + + _setItemsAttr: function(items){ + this.items = items || []; + + var urls = {}; + var i; + for(i = 0; i < this.items.length; i++){ + urls[this.items[i][this.urlParam]] = 1; + } + + var clearedUrls = []; + for(var url in this._onLoadImages){ + if(!urls[url] && this._onLoadImages[url]._conn){ + dojo.disconnect(this._onLoadImages[url]._conn); + this._onLoadImages[url].src = null; + clearedUrls.push(url); + } + } + + for(i = 0; i < clearedUrls.length; i++){ + delete this._onLoadImages[url]; + } + + this.render(); + }, + + _getItemNode: function(node){ + while(node && !dojo.hasClass(node, "mblThumb") && node != this.domNode){ + node = node.parentNode; + } + + return (node == this.domNode) ? null : node; + }, + + _getItemNodeFromEvent: function(event){ + if(event.touches && event.touches.length > 0){ + event = event.touches[0]; + } + return this._getItemNode(event.target); + }, + + resize: function(){ + this._thumbSize = null; + + this._size = dojo.contentBox(this.domNode); + + this.disableHide = true; + this.render(); + this.disableHide = false; + }, + + hideCached: function(){ + // summary: + // Hides all cached nodes, so that they're no invisible and overlaying + // other screen elements. + for(var i = 0; i < this.cache.length; i++){ + if (this.cache[i]) { + dojo.style(this.cache[i], "display", "none"); + } + } + }, + + render: function(){ + var i; + var url; + var item; + + var thumb; + while(this.visibleImages && this.visibleImages.length > 0){ + thumb = this.visibleImages.pop(); + this.cache.push(thumb); + + if (!this.disableHide) { + dojo.addClass(thumb, "hidden"); + } + thumb._cached = true; + } + + if(this.cache && this.cache.length > 0){ + setTimeout(this.hideCached, 1000); + } + + if(!this.items || this.items.length == 0){ + return; + } + + for(i = 0; i < this.items.length; i++){ + item = this.items[i]; + url = (dojo.isString(item) ? item : item[this.urlParam]); + + this.addThumb(item, url, i); + + if(this.maxRows > 0 && (i + 1) / this.maxPerRow >= this.maxRows){ + break; + } + } + + if(!this._thumbSize){ + return; + } + + var column = 0; + var row = -1; + + var totalThumbWidth = this._thumbSize.w + (this.padding * 2); + var totalThumbHeight = this._thumbSize.h + (this.padding * 2); + + var nodes = this.thumbNodes = + dojo.query(".mblThumb", this.domNode); + + var pos = 0; + nodes = this.visibleImages; + for(i = 0; i < nodes.length; i++){ + if(nodes[i]._cached){ + continue; + } + + if(pos % this.maxPerRow == 0){ + row ++; + } + column = pos % this.maxPerRow; + + this.place( + nodes[i], + (column * totalThumbWidth) + this.padding, // x position + (row * totalThumbHeight) + this.padding // y position + ); + + if(!nodes[i]._loading){ + dojo.removeClass(nodes[i], "hidden"); + } + + if(pos == this.selectedIndex){ + dojo[pos == this.selectedIndex ? "addClass" : "removeClass"] + (nodes[i], "selected"); + } + pos++; + } + + var numRows = Math.ceil(pos / this.maxPerRow); + + this._numRows = numRows; + + this.setContainerHeight((numRows * (this._thumbSize.h + this.padding * 2))); + }, + + setContainerHeight: function(amount){ + dojo.style(this.domNode, "height", amount + "px"); + }, + + addThumb: function(item, url, index){ + + var thumbDiv; + var cacheHit = false; + if(this.cache.length > 0){ + // Reuse a previously created node if possible + var found = false; + // Search for an image with the same url first + for(var i = 0; i < this.cache.length; i++){ + if(this.cache[i]._url == url){ + thumbDiv = this.cache.splice(i, 1)[0]; + found = true; + break + } + } + + // if no image with the same url is found, just take the last one + if(!thumbDiv && !this.cacheMustMatch){ + thumbDiv = this.cache.pop(); + dojo.removeClass(thumbDiv, "selected"); + } else { + cacheHit = true; + } + } + + if(!thumbDiv){ + + // Create a new thumb + thumbDiv = dojo.create("div", { + "class": "mblThumb hidden", + innerHTML: dojo.string.substitute(this.itemTemplate, { + url: url + }, null, this) + }, this.domNode); + } + + if(this.labelParam) { + var labelNode = dojo.query(".mblThumbLabel", thumbDiv)[0]; + if(!labelNode) { + labelNode = dojo.create("div", { + "class": "mblThumbLabel" + }, thumbDiv); + } + labelNode.innerHTML = item[this.labelParam] || ""; + } + + dojo.style(thumbDiv, "display", ""); + if (!this.disableHide) { + dojo.addClass(thumbDiv, "hidden"); + } + + if (!cacheHit) { + var loader = dojo.create("img", {}); + loader._thumbDiv = thumbDiv; + loader._conn = dojo.connect(loader, "onload", this.handleImgLoad); + loader._url = url; + thumbDiv._loading = true; + + this._onLoadImages[url] = loader; + if (loader) { + loader.src = url; + } + } + this.visibleImages.push(thumbDiv); + + thumbDiv._index = index; + thumbDiv._item = item; + thumbDiv._url = url; + thumbDiv._cached = false; + + if(!this._thumbSize){ + this._thumbSize = dojo.marginBox(thumbDiv); + + if(this._thumbSize.h == 0){ + this._thumbSize.h = 100; + this._thumbSize.w = 100; + } + + if(this.labelParam){ + this._thumbSize.h += 8; + } + + this.calcPadding(); + } + }, + + handleImgLoad: function(event){ + var img = event.target; + dojo.disconnect(img._conn); + dojo.removeClass(img._thumbDiv, "hidden"); + img._thumbDiv._loading = false; + img._conn = null; + + var url = img._url; + if(this.cacheBust){ + url += (url.indexOf("?") > -1 ? "&" : "?") + + "cacheBust=" + (new Date()).getTime() + "_" + (this._cacheCounter++); + } + + dojo.query(".mblThumbSrc", img._thumbDiv) + .style("backgroundImage", "url(" + url + ")"); + + delete this._onLoadImages[img._url]; + }, + + calcPadding: function(){ + var width = this._size.w; + + var thumbWidth = this._thumbSize.w; + + var imgBounds = thumbWidth + this.minPadding; + + this.maxPerRow = Math.floor(width / imgBounds); + + this.padding = Math.floor((width - (thumbWidth * this.maxPerRow)) / (this.maxPerRow * 2)); + }, + + place: function(node, x, y){ + dojo.style(node, { + "-webkit-transform" :"translate(" + x + "px," + y + "px)" + }); + }, + + destroy: function(){ + // Stop the loading of any more images + + var img; + var counter = 0; + for (var url in this._onLoadImages){ + img = this._onLoadImages[url]; + if (img) { + img.src = null; + counter++; + } + } + + this.inherited(arguments); + } +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/ImageView.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/ImageView.js new file mode 100644 index 0000000..a9ce3fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/ImageView.js @@ -0,0 +1,716 @@ +dojo.provide("dojox.mobile.app.ImageView"); +dojo.experimental("dojox.mobile.app.ImageView"); +dojo.require("dojox.mobile.app._Widget"); + +dojo.require("dojo.fx.easing"); + +dojo.declare("dojox.mobile.app.ImageView", dojox.mobile.app._Widget, { + + // zoom: Number + // The current level of zoom. This should not be set manually. + zoom: 1, + + // zoomCenterX: Number + // The X coordinate in the image where the zoom is focused + zoomCenterX: 0, + + // zoomCenterY: Number + // The Y coordinate in the image where the zoom is focused + zoomCenterY: 0, + + // maxZoom: Number + // The highest degree to which an image can be zoomed. For example, + // a maxZoom of 5 means that the image will be 5 times larger than normal + maxZoom: 5, + + // autoZoomLevel: Number + // The degree to which the image is zoomed when auto zoom is invoked. + // The higher the number, the more the image is zoomed in. + autoZoomLevel: 3, + + // disableAutoZoom: Boolean + // Disables auto zoom + disableAutoZoom: false, + + // disableSwipe: Boolean + // Disables the users ability to swipe from one image to the next. + disableSwipe: false, + + // autoZoomEvent: String + // Overrides the default event listened to which invokes auto zoom + autoZoomEvent: null, + + // _leftImg: Node + // The full sized image to the left + _leftImg: null, + + // _centerImg: Node + // The full sized image in the center + _centerImg: null, + + // _rightImg: Node + // The full sized image to the right + _rightImg: null, + + // _leftImg: Node + // The small sized image to the left + _leftSmallImg: null, + + // _centerImg: Node + // The small sized image in the center + _centerSmallImg: null, + + // _rightImg: Node + // The small sized image to the right + _rightSmallImg: null, + + constructor: function(){ + + this.panX = 0; + this.panY = 0; + + this.handleLoad = dojo.hitch(this, this.handleLoad); + this._updateAnimatedZoom = dojo.hitch(this, this._updateAnimatedZoom); + this._updateAnimatedPan = dojo.hitch(this, this._updateAnimatedPan); + this._onAnimPanEnd = dojo.hitch(this, this._onAnimPanEnd); + }, + + buildRendering: function(){ + this.inherited(arguments); + + this.canvas = dojo.create("canvas", {}, this.domNode); + + dojo.addClass(this.domNode, "mblImageView"); + }, + + postCreate: function(){ + this.inherited(arguments); + + this.size = dojo.marginBox(this.domNode); + + dojo.style(this.canvas, { + width: this.size.w + "px", + height: this.size.h + "px" + }); + this.canvas.height = this.size.h; + this.canvas.width = this.size.w; + + var _this = this; + + // Listen to the mousedown/touchstart event. Record the position + // so we can use it to pan the image. + this.connect(this.domNode, "onmousedown", function(event){ + if(_this.isAnimating()){ + return; + } + if(_this.panX){ + _this.handleDragEnd(); + } + + _this.downX = event.targetTouches ? event.targetTouches[0].clientX : event.clientX; + _this.downY = event.targetTouches ? event.targetTouches[0].clientY : event.clientY; + }); + + // record the movement of the mouse. + this.connect(this.domNode, "onmousemove", function(event){ + if(_this.isAnimating()){ + return; + } + if((!_this.downX && _this.downX !== 0) || (!_this.downY && _this.downY !== 0)){ + // If the touch didn't begin on this widget, ignore the movement + return; + } + + if((!_this.disableSwipe && _this.zoom == 1) + || (!_this.disableAutoZoom && _this.zoom != 1)){ + var x = event.targetTouches ? + event.targetTouches[0].clientX : event.pageX; + var y = event.targetTouches ? + event.targetTouches[0].clientY : event.pageY; + + _this.panX = x - _this.downX; + _this.panY = y - _this.downY; + + if(_this.zoom == 1){ + // If not zoomed in, then try to move to the next or prev image + // but only if the mouse has moved more than 10 pixels + // in the X direction + if(Math.abs(_this.panX) > 10){ + _this.render(); + } + }else{ + // If zoomed in, pan the image if the mouse has moved more + // than 10 pixels in either direction. + if(Math.abs(_this.panX) > 10 || Math.abs(_this.panY) > 10){ + _this.render(); + } + } + } + }); + + this.connect(this.domNode, "onmouseout", function(event){ + if(!_this.isAnimating() && _this.panX){ + _this.handleDragEnd(); + } + }); + + this.connect(this.domNode, "onmouseover", function(event){ + _this.downX = _this.downY = null; + }); + + // Set up AutoZoom, which zooms in a fixed amount when the user taps + // a part of the canvas + this.connect(this.domNode, "onclick", function(event){ + if(_this.isAnimating()){ + return; + } + if(_this.downX == null || _this.downY == null){ + return; + } + + var x = (event.targetTouches ? + event.targetTouches[0].clientX : event.pageX); + var y = (event.targetTouches ? + event.targetTouches[0].clientY : event.pageY); + + // If the mouse/finger has moved more than 14 pixels from where it + // started, do not treat it as a click. It is a drag. + if(Math.abs(_this.panX) > 14 || Math.abs(_this.panY) > 14){ + _this.downX = _this.downY = null; + _this.handleDragEnd(); + return; + } + _this.downX = _this.downY = null; + + if(!_this.disableAutoZoom){ + + if(!_this._centerImg || !_this._centerImg._loaded){ + // Do nothing until the image is loaded + return; + } + if(_this.zoom != 1){ + _this.set("animatedZoom", 1); + return; + } + + var pos = dojo._abs(_this.domNode); + + // Translate the clicked point to a point on the source image + var xRatio = _this.size.w / _this._centerImg.width; + var yRatio = _this.size.h / _this._centerImg.height; + + // Do an animated zoom to the point which was clicked. + _this.zoomTo( + ((x - pos.x) / xRatio) - _this.panX, + ((y - pos.y) / yRatio) - _this.panY, + _this.autoZoomLevel); + } + }); + + // Listen for Flick events + dojo.connect(this.domNode, "flick", this, "handleFlick"); + }, + + isAnimating: function(){ + // summary: + // Returns true if an animation is in progress, false otherwise. + return this._anim && this._anim.status() == "playing"; + }, + + handleDragEnd: function(){ + // summary: + // Handles the end of a dragging event. If not zoomed in, it + // determines if the next or previous image should be transitioned + // to. + this.downX = this.downY = null; + console.log("handleDragEnd"); + + if(this.zoom == 1){ + if(!this.panX){ + return; + } + + var leftLoaded = (this._leftImg && this._leftImg._loaded) + || (this._leftSmallImg && this._leftSmallImg._loaded); + var rightLoaded = (this._rightImg && this._rightImg._loaded) + || (this._rightSmallImg && this._rightSmallImg._loaded); + + // Check if the drag has moved the image more than half its length. + // If so, move to either the previous or next image. + var doMove = + !(Math.abs(this.panX) < this._centerImg._baseWidth / 2) && + ( + (this.panX > 0 && leftLoaded ? 1 : 0) || + (this.panX < 0 && rightLoaded ? 1 : 0) + ); + + + if(!doMove){ + // If not moving to another image, animate the sliding of the + // image back into place. + this._animPanTo(0, dojo.fx.easing.expoOut, 700); + }else{ + // Move to another image. + this.moveTo(this.panX); + } + }else{ + if(!this.panX && !this.panY){ + return; + } + // Recenter the zoomed image based on where it was panned to + // previously + this.zoomCenterX -= (this.panX / this.zoom); + this.zoomCenterY -= (this.panY / this.zoom); + + this.panX = this.panY = 0; + } + + }, + + handleFlick: function(event){ + // summary: + // Handle a flick event. + if(this.zoom == 1 && event.duration < 500){ + // Only handle quick flicks here, less than 0.5 seconds + + // If not zoomed in, then check if we should move to the next photo + // or not + if(event.direction == "ltr"){ + this.moveTo(1); + }else if(event.direction == "rtl"){ + this.moveTo(-1); + } + // If an up or down flick occurs, it means nothing so ignore it + this.downX = this.downY = null; + } + }, + + moveTo: function(direction){ + direction = direction > 0 ? 1 : -1; + var toImg; + + if(direction < 1){ + if(this._rightImg && this._rightImg._loaded){ + toImg = this._rightImg; + }else if(this._rightSmallImg && this._rightSmallImg._loaded){ + toImg = this._rightSmallImg; + } + }else{ + if(this._leftImg && this._leftImg._loaded){ + toImg = this._leftImg; + }else if(this._leftSmallImg && this._leftSmallImg._loaded){ + toImg = this._leftSmallImg; + } + } + + this._moveDir = direction; + var _this = this; + + if(toImg && toImg._loaded){ + // If the image is loaded, make a linear animation to show it + this._animPanTo(this.size.w * direction, null, 500, function(){ + _this.panX = 0; + _this.panY = 0; + + if(direction < 0){ + // Moving to show the right image + _this._switchImage("left", "right"); + }else{ + // Moving to show the left image + _this._switchImage("right", "left"); + } + + _this.render(); + _this.onChange(direction * -1); + }); + + }else{ + // If the next image is not loaded, make an animation to + // move the center image to half the width of the widget and back + // again + + console.log("moveTo image not loaded!", toImg); + + this._animPanTo(0, dojo.fx.easing.expoOut, 700); + } + }, + + _switchImage: function(toImg, fromImg){ + var toSmallImgName = "_" + toImg + "SmallImg"; + var toImgName = "_" + toImg + "Img"; + + var fromSmallImgName = "_" + fromImg + "SmallImg"; + var fromImgName = "_" + fromImg + "Img"; + + this[toImgName] = this._centerImg; + this[toSmallImgName] = this._centerSmallImg; + + this[toImgName]._type = toImg; + + if(this[toSmallImgName]){ + this[toSmallImgName]._type = toImg; + } + + this._centerImg = this[fromImgName]; + this._centerSmallImg = this[fromSmallImgName]; + this._centerImg._type = "center"; + + if(this._centerSmallImg){ + this._centerSmallImg._type = "center"; + } + this[fromImgName] = this[fromSmallImgName] = null; + }, + + _animPanTo: function(to, easing, duration, callback){ + this._animCallback = callback; + this._anim = new dojo.Animation({ + curve: [this.panX, to], + onAnimate: this._updateAnimatedPan, + duration: duration || 500, + easing: easing, + onEnd: this._onAnimPanEnd + }); + + this._anim.play(); + return this._anim; + }, + + onChange: function(direction){ + // summary: + // Stub function that can be listened to in order to provide + // new images when the displayed image changes + }, + + _updateAnimatedPan: function(amount){ + this.panX = amount; + this.render(); + }, + + _onAnimPanEnd: function(){ + this.panX = this.panY = 0; + + if(this._animCallback){ + this._animCallback(); + } + }, + + zoomTo: function(centerX, centerY, zoom){ + this.set("zoomCenterX", centerX); + this.set("zoomCenterY", centerY); + + this.set("animatedZoom", zoom); + }, + + render: function(){ + var cxt = this.canvas.getContext('2d'); + + cxt.clearRect(0, 0, this.canvas.width, this.canvas.height); + + // Render the center image + this._renderImg( + this._centerSmallImg, + this._centerImg, + this.zoom == 1 ? (this.panX < 0 ? 1 : this.panX > 0 ? -1 : 0) : 0); + + if(this.zoom == 1 && this.panX != 0){ + if(this.panX > 0){ + // Render the left image, showing the right side of it + this._renderImg(this._leftSmallImg, this._leftImg, 1); + }else{ + // Render the right image, showing the left side of it + this._renderImg(this._rightSmallImg, this._rightImg, -1); + } + } + }, + + _renderImg: function(smallImg, largeImg, panDir){ + // summary: + // Renders a single image + + + // If zoomed, we just display the center img + var img = (largeImg && largeImg._loaded) ? largeImg : smallImg; + + if(!img || !img._loaded){ + // If neither the large or small image is loaded, display nothing + return; + } + var cxt = this.canvas.getContext('2d'); + + var baseWidth = img._baseWidth; + var baseHeight = img._baseHeight; + + // Calculate the size the image would be if there were no bounds + var desiredWidth = baseWidth * this.zoom; + var desiredHeight = baseHeight * this.zoom; + + // Calculate the actual size of the viewable image + var destWidth = Math.min(this.size.w, desiredWidth); + var destHeight = Math.min(this.size.h, desiredHeight); + + + // Calculate the size of the window on the original image to use + var sourceWidth = this.dispWidth = img.width * (destWidth / desiredWidth); + var sourceHeight = this.dispHeight = img.height * (destHeight / desiredHeight); + + var zoomCenterX = this.zoomCenterX - (this.panX / this.zoom); + var zoomCenterY = this.zoomCenterY - (this.panY / this.zoom); + + // Calculate where the center of the view should be + var centerX = Math.floor(Math.max(sourceWidth / 2, + Math.min(img.width - sourceWidth / 2, zoomCenterX))); + var centerY = Math.floor(Math.max(sourceHeight / 2, + Math.min(img.height - sourceHeight / 2, zoomCenterY))); + + + var sourceX = Math.max(0, + Math.round((img.width - sourceWidth)/2 + (centerX - img._centerX)) ); + var sourceY = Math.max(0, + Math.round((img.height - sourceHeight) / 2 + (centerY - img._centerY)) + ); + + var destX = Math.round(Math.max(0, this.canvas.width - destWidth)/2); + var destY = Math.round(Math.max(0, this.canvas.height - destHeight)/2); + + var oldDestWidth = destWidth; + var oldSourceWidth = sourceWidth; + + if(this.zoom == 1 && panDir && this.panX){ + + if(this.panX < 0){ + if(panDir > 0){ + // If the touch is moving left, and the right side of the + // image should be shown, then reduce the destination width + // by the absolute value of panX + destWidth -= Math.abs(this.panX); + destX = 0; + }else if(panDir < 0){ + // If the touch is moving left, and the left side of the + // image should be shown, then set the displayed width + // to the absolute value of panX, less some pixels for + // a padding between images + destWidth = Math.max(1, Math.abs(this.panX) - 5); + destX = this.size.w - destWidth; + } + }else{ + if(panDir > 0){ + // If the touch is moving right, and the right side of the + // image should be shown, then set the destination width + // to the absolute value of the pan, less some pixels for + // padding + destWidth = Math.max(1, Math.abs(this.panX) - 5); + destX = 0; + }else if(panDir < 0){ + // If the touch is moving right, and the left side of the + // image should be shown, then reduce the destination width + // by the widget width minus the absolute value of panX + destWidth -= Math.abs(this.panX); + destX = this.size.w - destWidth; + } + } + + sourceWidth = Math.max(1, + Math.floor(sourceWidth * (destWidth / oldDestWidth))); + + if(panDir > 0){ + // If the right side of the image should be displayed, move + // the sourceX to be the width of the image minus the difference + // between the original sourceWidth and the new sourceWidth + sourceX = (sourceX + oldSourceWidth) - (sourceWidth); + } + sourceX = Math.floor(sourceX); + } + + try{ + + // See https://developer.mozilla.org/en/Canvas_tutorial/Using_images + cxt.drawImage( + img, + Math.max(0, sourceX), + sourceY, + Math.min(oldSourceWidth, sourceWidth), + sourceHeight, + destX, // Xpos + destY, // Ypos + Math.min(oldDestWidth, destWidth), + destHeight + ); + }catch(e){ + console.log("Caught Error",e, + + "type=", img._type, + "oldDestWidth = ", oldDestWidth, + "destWidth", destWidth, + "destX", destX + , "oldSourceWidth=",oldSourceWidth, + "sourceWidth=", sourceWidth, + "sourceX = " + sourceX + ); + } + }, + + _setZoomAttr: function(amount){ + this.zoom = Math.min(this.maxZoom, Math.max(1, amount)); + + if(this.zoom == 1 + && this._centerImg + && this._centerImg._loaded){ + + if(!this.isAnimating()){ + this.zoomCenterX = this._centerImg.width / 2; + this.zoomCenterY = this._centerImg.height / 2; + } + this.panX = this.panY = 0; + } + + this.render(); + }, + + _setZoomCenterXAttr: function(value){ + if(value != this.zoomCenterX){ + if(this._centerImg && this._centerImg._loaded){ + value = Math.min(this._centerImg.width, value); + } + this.zoomCenterX = Math.max(0, Math.round(value)); + } + }, + + _setZoomCenterYAttr: function(value){ + if(value != this.zoomCenterY){ + if(this._centerImg && this._centerImg._loaded){ + value = Math.min(this._centerImg.height, value); + } + this.zoomCenterY = Math.max(0, Math.round(value)); + } + }, + + _setZoomCenterAttr: function(value){ + if(value.x != this.zoomCenterX || value.y != this.zoomCenterY){ + this.set("zoomCenterX", value.x); + this.set("zoomCenterY", value.y); + this.render(); + } + }, + + _setAnimatedZoomAttr: function(amount){ + if(this._anim && this._anim.status() == "playing"){ + return; + } + + this._anim = new dojo.Animation({ + curve: [this.zoom, amount], + onAnimate: this._updateAnimatedZoom, + onEnd: this._onAnimEnd + }); + + this._anim.play(); + }, + + _updateAnimatedZoom: function(amount){ + this._setZoomAttr(amount); + }, + + _setCenterUrlAttr: function(urlOrObj){ + this._setImage("center", urlOrObj); + }, + _setLeftUrlAttr: function(urlOrObj){ + this._setImage("left", urlOrObj); + }, + _setRightUrlAttr: function(urlOrObj){ + this._setImage("right", urlOrObj); + }, + + _setImage: function(name, urlOrObj){ + var smallUrl = null; + + var largeUrl = null; + + if(dojo.isString(urlOrObj)){ + // If the argument is a string, then just load the large url + largeUrl = urlOrObj; + }else{ + largeUrl = urlOrObj.large; + smallUrl = urlOrObj.small; + } + + if(this["_" + name + "Img"] && this["_" + name + "Img"]._src == largeUrl){ + // Identical URL, ignore it + return; + } + + // Just do the large image for now + var largeImg = this["_" + name + "Img"] = new Image(); + largeImg._type = name; + largeImg._loaded = false; + largeImg._src = largeUrl; + largeImg._conn = dojo.connect(largeImg, "onload", this.handleLoad); + + if(smallUrl){ + // If a url to a small version of the image has been provided, + // load that image first. + var smallImg = this["_" + name + "SmallImg"] = new Image(); + smallImg._type = name; + smallImg._loaded = false; + smallImg._conn = dojo.connect(smallImg, "onload", this.handleLoad); + smallImg._isSmall = true; + smallImg._src = smallUrl; + smallImg.src = smallUrl; + } + + // It's important that the large url's src is set after the small image + // to ensure it's loaded second. + largeImg.src = largeUrl; + }, + + handleLoad: function(evt){ + // summary: + // Handles the loading of an image, both the large and small + // versions. A render is triggered as a result of each image load. + + var img = evt.target; + img._loaded = true; + + dojo.disconnect(img._conn); + + var type = img._type; + + switch(type){ + case "center": + this.zoomCenterX = img.width / 2; + this.zoomCenterY = img.height / 2; + break; + } + + var height = img.height; + var width = img.width; + + if(width / this.size.w < height / this.size.h){ + // Fit the height to the height of the canvas + img._baseHeight = this.canvas.height; + img._baseWidth = width / (height / this.size.h); + }else{ + // Fix the width to the width of the canvas + img._baseWidth = this.canvas.width; + img._baseHeight = height / (width / this.size.w); + } + img._centerX = width / 2; + img._centerY = height / 2; + + this.render(); + + this.onLoad(img._type, img._src, img._isSmall); + }, + + onLoad: function(type, url, isSmall){ + // summary: + // Dummy function that is called whenever an image loads. + // type: String + // The position of the image that has loaded, either + // "center", "left" or "right" + // url: String + // The src of the image + // isSmall: Boolean + // True if it is a small version of the image that has loaded, + // false otherwise. + } +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/List.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/List.js new file mode 100644 index 0000000..26b9008 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/List.js @@ -0,0 +1,645 @@ +dojo.provide("dojox.mobile.app.List"); +dojo.experimental("dojox.mobile.app.List"); + +dojo.require("dojo.string"); +dojo.require("dijit._WidgetBase"); + +(function(){ + + var templateCache = {}; + + dojo.declare("dojox.mobile.app.List", dijit._WidgetBase, { + // summary: + // A templated list widget. Given a simple array of data objects + // and a HTML template, it renders a list of elements, with + // support for a swipe delete action. An optional template + // can be provided for when the list is empty. + + // items: Array + // The array of data items that will be rendered. + items: null, + + // itemTemplate: String + // The URL to the HTML file containing the markup for each individual + // data item. + itemTemplate: "", + + // emptyTemplate: String + // The URL to the HTML file containing the HTML to display if there + // are no data items. This is optional. + emptyTemplate: "", + + // dividerTemplate: String + // The URL to the HTML file containing the markup for the dividers + // between groups of list items + dividerTemplate: "", + + // dividerFunction: Function + // Function to create divider elements. This should return a divider + // value for each item in the list + dividerFunction: null, + + // labelDelete: String + // The label to display for the Delete button + labelDelete: "Delete", + + // labelCancel: String + // The label to display for the Cancel button + labelCancel: "Cancel", + + // controller: Object + // + controller: null, + + // autoDelete: Boolean + autoDelete: true, + + // enableDelete: Boolean + enableDelete: true, + + // enableHold: Boolean + enableHold: true, + + // formatters: Object + // A name/value map of functions used to format data for display + formatters: null, + + // _templateLoadCount: Number + // The number of templates remaining to load before the list renders. + _templateLoadCount: 0, + + // _mouseDownPos: Object + // The coordinates of where a mouseDown event was detected + _mouseDownPos: null, + + baseClass: "list", + + constructor: function(){ + this._checkLoadComplete = dojo.hitch(this, this._checkLoadComplete); + this._replaceToken = dojo.hitch(this, this._replaceToken); + this._postDeleteAnim = dojo.hitch(this, this._postDeleteAnim); + }, + + postCreate: function(){ + + var _this = this; + + if(this.emptyTemplate){ + this._templateLoadCount++; + } + if(this.itemTemplate){ + this._templateLoadCount++; + } + if(this.dividerTemplate){ + this._templateLoadCount++; + } + + this.connect(this.domNode, "onmousedown", function(event){ + var touch = event; + if(event.targetTouches && event.targetTouches.length > 0){ + touch = event.targetTouches[0]; + } + + // Find the node that was tapped/clicked + var rowNode = _this._getRowNode(event.target); + + if(rowNode){ + // Add the rows data to the event so it can be picked up + // by any listeners + _this._setDataInfo(rowNode, event); + + // Select and highlight the row + _this._selectRow(rowNode); + + // Record the position that was tapped + _this._mouseDownPos = { + x: touch.pageX, + y: touch.pageY + }; + _this._dragThreshold = null; + } + }); + + this.connect(this.domNode, "onmouseup", function(event){ + // When the mouse/finger comes off the list, + // call the onSelect function and deselect the row. + if(event.targetTouches && event.targetTouches.length > 0){ + event = event.targetTouches[0]; + } + var rowNode = _this._getRowNode(event.target); + + if(rowNode){ + + _this._setDataInfo(rowNode, event); + + if(_this._selectedRow){ + _this.onSelect(rowNode._data, rowNode._idx, rowNode); + } + + this._deselectRow(); + } + }); + + // If swipe-to-delete is enabled, listen for the mouse moving + if(this.enableDelete){ + this.connect(this.domNode, "mousemove", function(event){ + dojo.stopEvent(event); + if(!_this._selectedRow){ + return; + } + var rowNode = _this._getRowNode(event.target); + + // Still check for enableDelete in case it's changed after + // this listener is added. + if(_this.enableDelete && rowNode && !_this._deleting){ + _this.handleDrag(event); + } + }); + } + + // Put the data and index onto each onclick event. + this.connect(this.domNode, "onclick", function(event){ + if(event.touches && event.touches.length > 0){ + event = event.touches[0]; + } + var rowNode = _this._getRowNode(event.target, true); + + if(rowNode){ + _this._setDataInfo(rowNode, event); + } + }); + + // If the mouse or finger moves off the selected row, + // deselect it. + this.connect(this.domNode, "mouseout", function(event){ + if(event.touches && event.touches.length > 0){ + event = event.touches[0]; + } + if(event.target == _this._selectedRow){ + _this._deselectRow(); + } + }); + + // If no item template has been provided, it is an error. + if(!this.itemTemplate){ + throw Error("An item template must be provided to " + this.declaredClass); + } + + // Load the item template + this._loadTemplate(this.itemTemplate, "itemTemplate", this._checkLoadComplete); + + if(this.emptyTemplate){ + // If the optional empty template has been provided, load it. + this._loadTemplate(this.emptyTemplate, "emptyTemplate", this._checkLoadComplete); + } + + if(this.dividerTemplate){ + this._loadTemplate(this.dividerTemplate, "dividerTemplate", this._checkLoadComplete); + } + }, + + handleDrag: function(event){ + // summary: + // Handles rows being swiped for deletion. + var touch = event; + if(event.targetTouches && event.targetTouches.length > 0){ + touch = event.targetTouches[0]; + } + + // Get the distance that the mouse or finger has moved since + // beginning the swipe action. + var diff = touch.pageX - this._mouseDownPos.x; + + var absDiff = Math.abs(diff); + if(absDiff > 10 && !this._dragThreshold){ + // Make the user drag the row 60% of the width to remove it + this._dragThreshold = dojo.marginBox(this._selectedRow).w * 0.6; + if(!this.autoDelete){ + this.createDeleteButtons(this._selectedRow); + } + } + + this._selectedRow.style.left = (absDiff > 10 ? diff : 0) + "px"; + + // If the user has dragged the row more than the threshold, slide + // it off the screen in preparation for deletion. + if(this._dragThreshold && this._dragThreshold < absDiff){ + this.preDelete(diff); + } + }, + + handleDragCancel: function(){ + // summary: + // Handle a drag action being cancelled, for whatever reason. + // Reset handles, remove CSS classes etc. + if(this._deleting){ + return; + } + dojo.removeClass(this._selectedRow, "hold"); + this._selectedRow.style.left = 0; + this._mouseDownPos = null; + this._dragThreshold = null; + + this._deleteBtns && dojo.style(this._deleteBtns, "display", "none"); + }, + + preDelete: function(currentLeftPos){ + // summary: + // Slides the row offscreen before it is deleted + + // TODO: do this with CSS3! + var self = this; + + this._deleting = true; + + dojo.animateProperty({ + node: this._selectedRow, + duration: 400, + properties: { + left: { + end: currentLeftPos + + ((currentLeftPos > 0 ? 1 : -1) * this._dragThreshold * 0.8) + } + }, + onEnd: dojo.hitch(this, function(){ + if(this.autoDelete){ + this.deleteRow(this._selectedRow); + } + }) + }).play(); + }, + + deleteRow: function(row){ + + // First make the row invisible + // Put it back where it came from + dojo.style(row, { + visibility: "hidden", + minHeight: "0px" + }); + dojo.removeClass(row, "hold"); + + this._deleteAnimConn = + this.connect(row, "webkitAnimationEnd", this._postDeleteAnim); + + dojo.addClass(row, "collapsed"); + }, + + _postDeleteAnim: function(event){ + // summary: + // Completes the deletion of a row. + + if(this._deleteAnimConn){ + this.disconnect(this._deleteAnimConn); + this._deleteAnimConn = null; + } + + var row = this._selectedRow; + var sibling = row.nextSibling; + var prevSibling = row.previousSibling; + + // If the previous node is a divider and either this is + // the last element in the list, or the next node is + // also a divider, remove the divider for the deleted section. + if(prevSibling && prevSibling._isDivider){ + if(!sibling || sibling._isDivider){ + prevSibling.parentNode.removeChild(prevSibling); + } + } + + row.parentNode.removeChild(row); + this.onDelete(row._data, row._idx, this.items); + + // Decrement the index of each following row + while(sibling){ + if(sibling._idx){ + sibling._idx--; + } + sibling = sibling.nextSibling; + } + + dojo.destroy(row); + + // Fix up the 'first' and 'last' CSS classes on the rows + dojo.query("> *:not(.buttons)", this.domNode).forEach(this.applyClass); + + this._deleting = false; + this._deselectRow(); + }, + + createDeleteButtons: function(aroundNode){ + // summary: + // Creates the two buttons displayed when confirmation is + // required before deletion of a row. + // aroundNode: + // The DOM node of the row about to be deleted. + var mb = dojo.marginBox(aroundNode); + var pos = dojo._abs(aroundNode, true); + + if(!this._deleteBtns){ + // Create the delete buttons. + this._deleteBtns = dojo.create("div",{ + "class": "buttons" + }, this.domNode); + + this.buttons = []; + + this.buttons.push(new dojox.mobile.Button({ + btnClass: "mblRedButton", + label: this.labelDelete + })); + this.buttons.push(new dojox.mobile.Button({ + btnClass: "mblBlueButton", + label: this.labelCancel + })); + + dojo.place(this.buttons[0].domNode, this._deleteBtns); + dojo.place(this.buttons[1].domNode, this._deleteBtns); + + dojo.addClass(this.buttons[0].domNode, "deleteBtn"); + dojo.addClass(this.buttons[1].domNode, "cancelBtn"); + + this._handleButtonClick = dojo.hitch(this._handleButtonClick); + this.connect(this._deleteBtns, "onclick", this._handleButtonClick); + } + dojo.removeClass(this._deleteBtns, "fade out fast"); + dojo.style(this._deleteBtns, { + display: "", + width: mb.w + "px", + height: mb.h + "px", + top: (aroundNode.offsetTop) + "px", + left: "0px" + }); + }, + + onDelete: function(data, index, array){ + // summary: + // Called when a row is deleted + // data: + // The data related to the row being deleted + // index: + // The index of the data in the total array + // array: + // The array of data used. + + array.splice(index, 1); + + // If the data is empty, rerender in case an emptyTemplate has + // been provided + if(array.length < 1){ + this.render(); + } + }, + + cancelDelete: function(){ + // summary: + // Cancels the deletion of a row. + this._deleting = false; + this.handleDragCancel(); + }, + + _handleButtonClick: function(event){ + // summary: + // Handles the click of one of the deletion buttons, either to + // delete the row or to cancel the deletion. + if(event.touches && event.touches.length > 0){ + event = event.touches[0]; + } + var node = event.target; + if(dojo.hasClass(node, "deleteBtn")){ + this.deleteRow(this._selectedRow); + }else if(dojo.hasClass(node, "cancelBtn")){ + this.cancelDelete(); + }else{ + return; + } + dojo.addClass(this._deleteBtns, "fade out"); + }, + + applyClass: function(node, idx, array){ + // summary: + // Applies the 'first' and 'last' CSS classes to the relevant + // rows. + + dojo.removeClass(node, "first last"); + if(idx == 0){ + dojo.addClass(node, "first"); + } + if(idx == array.length - 1){ + dojo.addClass(node, "last"); + } + }, + + _setDataInfo: function(rowNode, event){ + // summary: + // Attaches the data item and index for each row to any event + // that occurs on that row. + event.item = rowNode._data; + event.index = rowNode._idx; + }, + + onSelect: function(data, index, rowNode){ + // summary: + // Dummy function that is called when a row is tapped + }, + + _selectRow: function(row){ + // summary: + // Selects a row, applies the relevant CSS classes. + if(this._deleting && this._selectedRow && row != this._selectedRow){ + this.cancelDelete(); + } + + if(!dojo.hasClass(row, "row")){ + return; + } + if(this.enableHold || this.enableDelete){ + dojo.addClass(row, "hold"); + } + this._selectedRow = row; + }, + + _deselectRow: function(){ + // summary: + // Deselects a row, and cancels any drag actions that were + // occurring. + if(!this._selectedRow || this._deleting){ + return; + } + this.handleDragCancel(); + dojo.removeClass(this._selectedRow, "hold"); + this._selectedRow = null; + }, + + _getRowNode: function(fromNode, ignoreNoClick){ + // summary: + // Gets the DOM node of the row that is equal to or the parent + // of the node passed to this function. + while(fromNode && !fromNode._data && fromNode != this.domNode){ + if(!ignoreNoClick && dojo.hasClass(fromNode, "noclick")){ + return null; + } + fromNode = fromNode.parentNode; + } + return fromNode == this.domNode ? null : fromNode; + }, + + applyTemplate: function(template, data){ + return dojo._toDom(dojo.string.substitute( + template, data, this._replaceToken, this.formatters || this)); + }, + + render: function(){ + // summary: + // Renders the list. + + // Delete all existing nodes, except the deletion buttons. + dojo.query("> *:not(.buttons)", this.domNode).forEach(dojo.destroy); + + // If there is no data, and an empty template has been provided, + // render it. + if(this.items.length < 1 && this.emptyTemplate){ + dojo.place(dojo._toDom(this.emptyTemplate), this.domNode, "first"); + }else{ + this.domNode.appendChild(this._renderRange(0, this.items.length)); + } + if(dojo.hasClass(this.domNode.parentNode, "mblRoundRect")){ + dojo.addClass(this.domNode.parentNode, "mblRoundRectList") + } + + var divs = dojo.query("> .row", this.domNode); + if(divs.length > 0){ + dojo.addClass(divs[0], "first"); + dojo.addClass(divs[divs.length - 1], "last"); + } + }, + + _renderRange: function(startIdx, endIdx){ + + var rows = []; + var row, i; + var frag = document.createDocumentFragment(); + startIdx = Math.max(0, startIdx); + endIdx = Math.min(endIdx, this.items.length); + + for(i = startIdx; i < endIdx; i++){ + // Create a document fragment containing the templated row + row = this.applyTemplate(this.itemTemplate, this.items[i]); + dojo.addClass(row, 'row'); + row._data = this.items[i]; + row._idx = i; + rows.push(row); + } + if(!this.dividerFunction || !this.dividerTemplate){ + for(i = startIdx; i < endIdx; i++){ + rows[i]._data = this.items[i]; + rows[i]._idx = i; + frag.appendChild(rows[i]); + } + }else{ + var prevDividerValue = null; + var dividerValue; + var divider; + for(i = startIdx; i < endIdx; i++){ + rows[i]._data = this.items[i]; + rows[i]._idx = i; + + dividerValue = this.dividerFunction(this.items[i]); + if(dividerValue && dividerValue != prevDividerValue){ + divider = this.applyTemplate(this.dividerTemplate, { + label: dividerValue, + item: this.items[i] + }); + divider._isDivider = true; + frag.appendChild(divider); + prevDividerValue = dividerValue; + } + frag.appendChild(rows[i]); + } + } + return frag; + }, + + _replaceToken: function(value, key){ + if(key.charAt(0) == '!'){ value = dojo.getObject(key.substr(1), false, _this); } + if(typeof value == "undefined"){ return ""; } // a debugging aide + if(value == null){ return ""; } + + // Substitution keys beginning with ! will skip the transform step, + // in case a user wishes to insert unescaped markup, e.g. ${!foo} + return key.charAt(0) == "!" ? value : + // Safer substitution, see heading "Attribute values" in + // http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2 + value.toString().replace(/"/g,"""); //TODO: add &? use encodeXML method? + + }, + + _checkLoadComplete: function(){ + // summary: + // Checks if all templates have loaded + this._templateLoadCount--; + + if(this._templateLoadCount < 1 && this.get("items")){ + this.render(); + } + }, + + _loadTemplate: function(url, thisAttr, callback){ + // summary: + // Loads a template + if(!url){ + callback(); + return; + } + + if(templateCache[url]){ + this.set(thisAttr, templateCache[url]); + callback(); + }else{ + var _this = this; + + dojo.xhrGet({ + url: url, + sync: false, + handleAs: "text", + load: function(text){ + templateCache[url] = dojo.trim(text); + _this.set(thisAttr, templateCache[url]); + callback(); + } + }); + } + }, + + + _setFormattersAttr: function(formatters){ + // summary: + // Sets the data items, and causes a rerender of the list + this.formatters = formatters; + }, + + _setItemsAttr: function(items){ + // summary: + // Sets the data items, and causes a rerender of the list + + this.items = items || []; + + if(this._templateLoadCount < 1 && items){ + this.render(); + } + }, + + destroy: function(){ + if(this.buttons){ + dojo.forEach(this.buttons, function(button){ + button.destroy(); + }); + this.buttons = null; + } + + this.inherited(arguments); + } + + }); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/ListSelector.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/ListSelector.js new file mode 100644 index 0000000..9f55455 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/ListSelector.js @@ -0,0 +1,218 @@ +dojo.provide("dojox.mobile.app.ListSelector"); +dojo.experimental("dojox.mobile.app.ListSelector"); + +dojo.require("dojox.mobile.app._Widget"); +dojo.require("dojo.fx"); + +dojo.declare("dojox.mobile.app.ListSelector", dojox.mobile.app._Widget, { + + // data: Array + // The array of items to display. Each element in the array + // should have both a label and value attribute, e.g. + // [{label: "Open", value: 1} , {label: "Delete", value: 2}] + data: null, + + // controller: Object + // The current SceneController widget. + controller: null, + + // onChoose: Function + // The callback function for when an item is selected + onChoose: null, + + destroyOnHide: false, + + _setDataAttr: function(data){ + this.data = data; + + if(this.data){ + this.render(); + } + }, + + postCreate: function(){ + dojo.addClass(this.domNode, "listSelector"); + + var _this = this; + + this.connect(this.domNode, "onclick", function(event){ + if(!dojo.hasClass(event.target, "listSelectorRow")){ + return; + } + + if(_this.onChoose){ + _this.onChoose(_this.data[event.target._idx].value); + } + _this.hide(); + }); + + this.connect(this.domNode, "onmousedown", function(event){ + if(!dojo.hasClass(event.target, "listSelectorRow")){ + return; + } + dojo.addClass(event.target, "listSelectorRow-selected"); + }); + + this.connect(this.domNode, "onmouseup", function(event){ + if(!dojo.hasClass(event.target, "listSelectorRow")){ + return; + } + dojo.removeClass(event.target, "listSelectorRow-selected"); + }); + + this.connect(this.domNode, "onmouseout", function(event){ + if(!dojo.hasClass(event.target, "listSelectorRow")){ + return; + } + dojo.removeClass(event.target, "listSelectorRow-selected"); + }); + + var viewportSize = this.controller.getWindowSize(); + + this.mask = dojo.create("div", {"class": "dialogUnderlayWrapper", + innerHTML: "
                                                      " + }, this.controller.assistant.domNode); + + this.connect(this.mask, "onclick", function(){ + _this.onChoose && _this.onChoose(); + _this.hide(); + }); + }, + + show: function(fromNode){ + + // Using dojo.fx here. Must figure out how to do this with CSS animations!! + var startPos; + + var windowSize = this.controller.getWindowSize(); + var fromNodePos; + if(fromNode){ + fromNodePos = dojo._abs(fromNode); + startPos = fromNodePos; + }else{ + startPos.x = windowSize.w / 2; + startPos.y = 200; + } + console.log("startPos = ", startPos); + + dojo.style(this.domNode, { + opacity: 0, + display: "", + width: Math.floor(windowSize.w * 0.8) + "px" + }); + + var maxWidth = 0; + dojo.query(">", this.domNode).forEach(function(node){ + dojo.style(node, { + "float": "left" + }); + maxWidth = Math.max(maxWidth, dojo.marginBox(node).w); + dojo.style(node, { + "float": "none" + }); + }); + maxWidth = Math.min(maxWidth, Math.round(windowSize.w * 0.8)) + + dojo.style(this.domNode, "paddingLeft") + + dojo.style(this.domNode, "paddingRight") + + 1; + + dojo.style(this.domNode, "width", maxWidth + "px"); + var targetHeight = dojo.marginBox(this.domNode).h; + + var _this = this; + + + var targetY = fromNodePos ? + Math.max(30, fromNodePos.y - targetHeight - 10) : + this.getScroll().y + 30; + + console.log("fromNodePos = ", fromNodePos, " targetHeight = ", targetHeight, + " targetY = " + targetY, " startPos ", startPos); + + + var anim1 = dojo.animateProperty({ + node: this.domNode, + duration: 400, + properties: { + width: {start: 1, end: maxWidth}, + height: {start: 1, end: targetHeight}, + top: {start: startPos.y, end: targetY}, + left: {start: startPos.x, end: (windowSize.w/2 - maxWidth/2)}, + opacity: {start: 0, end: 1}, + fontSize: {start: 1} + }, + onEnd: function(){ + dojo.style(_this.domNode, "width", "inherit"); + } + }); + var anim2 = dojo.fadeIn({ + node: this.mask, + duration: 400 + }); + dojo.fx.combine([anim1, anim2]).play(); + + }, + + hide: function(){ + // Using dojo.fx here. Must figure out how to do this with CSS animations!! + + var _this = this; + + var anim1 = dojo.animateProperty({ + node: this.domNode, + duration: 500, + properties: { + width: {end: 1}, + height: {end: 1}, + opacity: {end: 0}, + fontSize: {end: 1} + }, + onEnd: function(){ + if(_this.get("destroyOnHide")){ + _this.destroy(); + } + } + }); + + var anim2 = dojo.fadeOut({ + node: this.mask, + duration: 400 + }); + dojo.fx.combine([anim1, anim2]).play(); + }, + + render: function(){ + // summary: + // Renders + + dojo.empty(this.domNode); + dojo.style(this.domNode, "opacity", 0); + + var row; + + for(var i = 0; i < this.data.length; i++){ + // Create each row and add any custom classes. Also set the _idx property. + row = dojo.create("div", { + "class": "listSelectorRow " + (this.data[i].className || ""), + innerHTML: this.data[i].label + }, this.domNode); + + row._idx = i; + + if(i == 0){ + dojo.addClass(row, "first"); + } + if(i == this.data.length - 1){ + dojo.addClass(row, "last"); + } + + } + }, + + + destroy: function(){ + this.inherited(arguments); + dojo.destroy(this.mask); + } + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/SceneAssistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/SceneAssistant.js new file mode 100644 index 0000000..22a6e11 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/SceneAssistant.js @@ -0,0 +1,56 @@ +dojo.provide("dojox.mobile.app.SceneAssistant"); +dojo.experimental("dojox.mobile.app.SceneAssistant"); + +dojo.declare("dojox.mobile.app.SceneAssistant", null, { + // summary: + // The base class for all scene assistants. + + constructor: function(){ + + }, + + setup: function(){ + // summary: + // Called to set up the widget. The UI is not visible at this time + + }, + + activate: function(params){ + // summary: + // Called each time the scene becomes visible. This can be as a result + // of a new scene being created, or a subsequent scene being destroyed + // and control transferring back to this scene assistant. + // params: + // Optional paramters, only passed when a subsequent scene pops itself + // off the stack and passes back data. + }, + + deactivate: function(){ + // summary: + // Called each time the scene becomes invisible. This can be as a result + // of it being popped off the stack and destroyed, + // or another scene being created and pushed on top of it on the stack + }, + + destroy: function(){ + + var children = + dojo.query("> [widgetId]", this.containerNode).map(dijit.byNode); + dojo.forEach(children, function(child){ child.destroyRecursive(); }); + + this.disconnect(); + }, + + connect: function(obj, method, callback){ + if(!this._connects){ + this._connects = []; + } + this._connects.push(dojo.connect(obj, method, callback)); + }, + + disconnect: function(){ + dojo.forEach(this._connects, dojo.disconnect); + this._connects = []; + } +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/SceneController.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/SceneController.js new file mode 100644 index 0000000..e7fb829 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/SceneController.js @@ -0,0 +1,170 @@ +dojo.provide("dojox.mobile.app.SceneController"); +dojo.experimental("dojox.mobile.app.SceneController"); +dojo.require("dojox.mobile._base"); + +(function(){ + + var app = dojox.mobile.app; + + var templates = {}; + + dojo.declare("dojox.mobile.app.SceneController", dojox.mobile.View, { + + stageController: null, + + keepScrollPos: false, + + init: function(sceneName, params){ + // summary: + // Initializes the scene by loading the HTML template and code, if it has + // not already been loaded + + this.sceneName = sceneName; + this.params = params; + var templateUrl = app.resolveTemplate(sceneName); + + this._deferredInit = new dojo.Deferred(); + + if(templates[sceneName]){ + // If the template has been cached, do not load it again. + this._setContents(templates[sceneName]); + }else{ + // Otherwise load the template + dojo.xhrGet({ + url: templateUrl, + handleAs: "text" + }).addCallback(dojo.hitch(this, this._setContents)); + } + + return this._deferredInit; + }, + + _setContents: function(templateHtml){ + // summary: + // Sets the content of the View, and invokes either the loading or + // initialization of the scene assistant. + templates[this.sceneName] = templateHtml; + + this.domNode.innerHTML = "
                                                      " + templateHtml + "
                                                      "; + + var sceneAssistantName = ""; + + var nameParts = this.sceneName.split("-"); + + for(var i = 0; i < nameParts.length; i++){ + sceneAssistantName += nameParts[i].substring(0, 1).toUpperCase() + + nameParts[i].substring(1); + } + sceneAssistantName += "Assistant"; + this.sceneAssistantName = sceneAssistantName; + + var _this = this; + + dojox.mobile.app.loadResourcesForScene(this.sceneName, function(){ + + console.log("All resources for ",_this.sceneName," loaded"); + + var assistant; + if(typeof(dojo.global[sceneAssistantName]) != "undefined"){ + _this._initAssistant(); + }else{ + var assistantUrl = app.resolveAssistant(_this.sceneName); + + dojo.xhrGet({ + url: assistantUrl, + handleAs: "text" + }).addCallback(function(text){ + try{ + dojo.eval(text); + }catch(e){ + console.log("Error initializing code for scene " + _this.sceneName + + '. Please check for syntax errors'); + throw e; + } + _this._initAssistant(); + }); + } + }); + + }, + + _initAssistant: function(){ + // summary: + // Initializes the scene assistant. At this point, the View is + // populated with the HTML template, and the scene assistant type + // is declared. + + console.log("Instantiating the scene assistant " + this.sceneAssistantName); + + var cls = dojo.getObject(this.sceneAssistantName); + + if(!cls){ + throw Error("Unable to resolve scene assistant " + + this.sceneAssistantName); + } + + this.assistant = new cls(this.params); + + this.assistant.controller = this; + this.assistant.domNode = this.domNode.firstChild; + + this.assistant.setup(); + + this._deferredInit.callback(); + }, + + query: function(selector, node){ + // summary: + // Queries for DOM nodes within either the node passed in as an argument + // or within this view. + + return dojo.query(selector, node || this.domNode) + }, + + parse: function(node){ + var widgets = this._widgets = + dojox.mobile.parser.parse(node || this.domNode, { + controller: this + }); + + // Tell all widgets what their controller is. + for(var i = 0; i < widgets.length; i++){ + widgets[i].set("controller", this); + } + }, + + getWindowSize: function(){ + // TODO, this needs cross browser testing + + return { + w: dojo.global.innerWidth, + h: dojo.global.innerHeight + } + }, + + showAlertDialog: function(props){ + + var size = dojo.marginBox(this.assistant.domNode); + var dialog = new dojox.mobile.app.AlertDialog( + dojo.mixin(props, {controller: this})); + this.assistant.domNode.appendChild(dialog.domNode); + + console.log("Appended " , dialog.domNode, " to ", this.assistant.domNode); + dialog.show(); + }, + + popupSubMenu: function(info){ + var widget = new dojox.mobile.app.ListSelector({ + controller: this, + destroyOnHide: true, + onChoose: info.onChoose + }); + + this.assistant.domNode.appendChild(widget.domNode); + + widget.set("data", info.choices); + widget.show(info.fromNode); + } + }); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/StageController.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/StageController.js new file mode 100644 index 0000000..554090d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/StageController.js @@ -0,0 +1,132 @@ +dojo.provide("dojox.mobile.app.StageController"); +dojo.experimental("dojox.mobile.app.StageController"); + +dojo.require("dojox.mobile.app.SceneController"); + +dojo.declare("dojox.mobile.app.StageController", null,{ + + // scenes: Array + // The list of scenes currently in existance in the app. + scenes: null, + + effect: "fade", + + constructor: function(node){ + this.domNode = node; + this.scenes = []; + + if(dojo.config.mobileAnim){ + this.effect = dojo.config.mobileAnim; + } + }, + + getActiveSceneController: function(){ + return this.scenes[this.scenes.length - 1]; + }, + + pushScene: function(sceneName, params){ + if(this._opInProgress){ + return; + } + this._opInProgress = true; + + // Push new scenes as the first element on the page. + var node = dojo.create("div", { + "class": "scene-wrapper", + style: { + visibility: "hidden" + } + }, this.domNode); + + var controller = new dojox.mobile.app.SceneController({}, node); + + if(this.scenes.length > 0){ + this.scenes[this.scenes.length -1].assistant.deactivate(); + } + + this.scenes.push(controller); + + var _this = this; + + dojo.forEach(this.scenes, this.setZIndex); + + controller.stageController = this; + + controller.init(sceneName, params).addCallback(function(){ + + if(_this.scenes.length == 1){ + controller.domNode.style.visibility = "visible"; + _this.scenes[_this.scenes.length - 1].assistant.activate(params); + _this._opInProgress = false; + }else{ + _this.scenes[_this.scenes.length - 2] + .performTransition( + _this.scenes[_this.scenes.length - 1].domNode, + 1, + _this.effect, + null, + function(){ + // When the scene is ready, activate it. + _this.scenes[_this.scenes.length - 1].assistant.activate(params); + _this._opInProgress = false; + }); + } + }); + }, + + setZIndex: function(controller, idx){ + dojo.style(controller.domNode, "zIndex", idx + 1); + }, + + popScene: function(data){ + // performTransition: function(/*String*/moveTo, /*Number*/dir, /*String*/transition, + // /*Object|null*/context, /*String|Function*/method /*optional args*/){ + if(this._opInProgress){ + return; + } + + var _this = this; + if(this.scenes.length > 1){ + + this._opInProgress = true; + this.scenes[_this.scenes.length - 2].assistant.activate(data); + this.scenes[_this.scenes.length - 1] + .performTransition( + _this.scenes[this.scenes.length - 2].domNode, + -1, + this.effect, + null, + function(){ + // When the scene is no longer visible, destroy it + _this._destroyScene(_this.scenes[_this.scenes.length - 1]); + _this.scenes.splice(_this.scenes.length - 1, 1); + _this._opInProgress = false; + }); + }else{ + console.log("cannot pop the scene if there is just one"); + } + }, + + popScenesTo: function(sceneName, data){ + if(this._opInProgress){ + return; + } + + while(this.scenes.length > 2 && + this.scenes[this.scenes.length - 2].sceneName != sceneName){ + this._destroyScene(this.scenes[this.scenes.length - 2]); + this.scenes.splice(this.scenes.length - 2, 1); + } + + this.popScene(data); + }, + + _destroyScene: function(scene){ + scene.assistant.deactivate(); + scene.assistant.destroy(); + scene.destroyRecursive(); + } + + +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/TextBox.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/TextBox.js new file mode 100644 index 0000000..570f2c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/TextBox.js @@ -0,0 +1,6 @@ +dojo.provide("dojox.mobile.app.TextBox"); +dojo.deprecated("dojox.mobile.app.TextBox is deprecated", "dojox.mobile.app.TextBox moved to dojox.mobile.TextBox", 1.8); + +dojo.require("dojox.mobile.TextBox"); + +dojox.mobile.app.TextBox = dojox.mobile.TextBox; \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/app/_FormWidget.js b/js/dojo-release-1.7.2-src/dojox/mobile/app/_FormWidget.js new file mode 100644 index 0000000..09ea3cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/app/_FormWidget.js @@ -0,0 +1,288 @@ +dojo.provide("dojox.mobile.app._FormWidget"); +dojo.experimental("dojox.mobile.app._FormWidget"); + +dojo.require("dojo.window"); + +dojo.require("dijit._WidgetBase"); +dojo.require("dijit.focus"); // dijit.focus() + +dojo.declare("dojox.mobile.app._FormWidget", dijit._WidgetBase, { + // summary: + // Base class for widgets corresponding to native HTML elements such as or + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/dialogApp/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/dialogApp/index.html new file mode 100644 index 0000000..4b4fc90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/dialogApp/index.html @@ -0,0 +1,33 @@ + + + + + + Mobile App With Dialog Boxes + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Button.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Button.html new file mode 100644 index 0000000..3259830 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Button.html @@ -0,0 +1,50 @@ + + + + + + Button + + + + + + + + +

                                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Button_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Button_Programmatic.html new file mode 100644 index 0000000..20b4c5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Button_Programmatic.html @@ -0,0 +1,55 @@ + + + + + + Button + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/CreateListItem2_Programmatic.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/CreateListItem2_Programmatic.js new file mode 100644 index 0000000..72f0b9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/CreateListItem2_Programmatic.js @@ -0,0 +1,21 @@ +dojo.addOnLoad(function(){ + var view = dijit.byId("foo"); + + var list = new dojox.mobile.RoundRectList({iconBase:"../images/i-icon-all.png"}); + view.addChild(list); + + var demoWidget = new dojox.mobile.ListItem({iconPos:"0,87,29,29", moveTo:"general", label:"Sounds"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({iconPos:"0,116,29,29", moveTo:"general", label:"Brightness"}); + list.addChild(demoWidget); + + list = new dojox.mobile.EdgeToEdgeList({iconBase:"../images/i-icon-all.png"}); + demoWidget = new dojox.mobile.ListItem({iconPos:"0,87,29,29", btnClass:"mblDomButtonBluePlus", label:"XX Widget"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({iconPos:"0,116,29,29", btnClass:"mblDomButtonRedMinus", label:"YY Widget"}); + list.addChild(demoWidget); + + view.addChild(list); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/CreateListItem_Programmatic.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/CreateListItem_Programmatic.js new file mode 100644 index 0000000..153ed5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/CreateListItem_Programmatic.js @@ -0,0 +1,50 @@ +dojo.addOnLoad(function(){ + var list = dijit.byId("dojox_mobile_RoundRectList_0"); + var demoWidget = new dojox.mobile.ListItem({icon:"../images/i-icon-1.png", transition:"slide", url:"../view1.html", label:"External View #1 (sync)"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({icon:"../images/i-icon-2.png", transition:"flip", url:"../view2.html", sync:false, label:"External View #2 (async)"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({icon:"../images/i-icon-3.png", transition:"fade", url:"../view3.html", label:"External View #3 (sync)"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({rightText:"Off", label:"Video"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({icon:"../images/i-icon-1.png", rightText:"VPN", label:"Maps"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({label:"Jack Coleman"}); + list.addChild(demoWidget); + + list = dijit.byId("dojox_mobile_RoundRectList_1"); + demoWidget = new dojox.mobile.ListItem({iconPos:"0,87,29,29", moveTo:"general", label:"Sounds"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({iconPos:"0,116,29,29", moveTo:"general", label:"Brightness"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({iconPos:"29,0,29,29", moveTo:"general", label:"Wallpaper"}); + list.addChild(demoWidget); + + list = dijit.byId("dojox_mobile_EdgeToEdgeList_0"); + demoWidget = new dojox.mobile.ListItem({icon:"../images/i-icon-1.png", btnClass:"mblDomButtonBluePlus", label:"XX Widget"}); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({icon:"../images/i-icon-2.png", btnClass:"mblDomButtonRedMinus", label:"YY Widget"}); + list.addChild(demoWidget); + + list = dijit.byId("dojox_mobile_EdgeToEdgeList_1"); + demoWidget = new dojox.mobile.ListItem({btnClass:"mblDomButtonCheckboxOff", label:"Use wireless networks", variableHeight:"true"}); + var child = dojo.create("DIV", {className:"mblListItemSubText"}, demoWidget.domNode.childNodes[0].childNodes[4]); + child.appendChild(dojo.doc.createTextNode("See location in applications (such as Maps) using wireless networks")); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({btnClass:"mblDomButtonCheckboxOn", label:"Use GPS satellites", variableHeight:"true"}); + child = dojo.create("DIV", {className:"mblListItemSubText", innerHTML:"When locating, accurate to street level (uncheck to conserve battery)"}, demoWidget.domNode.childNodes[0].childNodes[4]); + list.addChild(demoWidget); + + demoWidget = new dojox.mobile.ListItem({label:" Set unlock pattern"}); + list.addChild(demoWidget); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeCatagory.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeCatagory.js new file mode 100644 index 0000000..5e22ade --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeCatagory.js @@ -0,0 +1,71 @@ +dojo.addOnLoad(function(){ + doh.register("dojox.mobile.test.doh.EdgeToEdgeList", [ + { + name: "EdgeToEdgeList Verification", + timeout: 4000, + runTest: function(){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + var demoWidget = dijit.byId("Category"); + doh.assertEqual('mblEdgeToEdgeCategory', demoWidget.domNode.className); + doh.assertEqual('Spaces', demoWidget.domNode.innerHTML); + + + demoWidget = dijit.byId("dojox_mobile_EdgeToEdgeList_0"); + doh.assertEqual('mblEdgeToEdgeList', demoWidget.domNode.className); + verifyListItem("item1", 'u1space', 'Off', "mblDomButtonArrow", true, true, false); + verifyListItem("item2", 'u2space', 'On', "mblDomButtonArrow", true, true, false); + verifyListItem("item3", 'Wi-Fi', 'Off', "mblDomButtonArrow", false, true, false); + + })); + return d; + } + }, + { + name: "EdgeToEdgeList Verification2", + timeout: 1000, + runTest: function(){ + var d = new doh.Deferred(); + var demoWidget = dijit.byId("dojox_mobile_EdgeToEdgeList_0"); + demoWidget.set({transition :"flip"}); + doh.assertEqual("flip", demoWidget.get("transition")); + demoWidget.set({transition :"fade"}); + doh.assertEqual("fade", demoWidget.get("transition")); + + fireOnClick("item3"); + var view = dijit.byId("foo"); + dojo.connect(view, "onAfterTransitionOut", this, d.getTestCallback(function(){ + var demoWidget = dijit.byId("dojox_mobile_EdgeToEdgeCategory_0"); + doh.assertEqual('mblEdgeToEdgeCategory', demoWidget.domNode.className); + doh.assertEqual('Applications', demoWidget.domNode.innerHTML); + + demoWidget = dijit.byId("dojox_mobile_EdgeToEdgeList_1"); + doh.assertEqual('mblEdgeToEdgeList', demoWidget.domNode.className); + + verifyListItem("dojox_mobile_ListItem_0", 'Video', 'Off', "", false, false, false); + verifyListItem("dojox_mobile_ListItem_1", 'Maps', 'VPN', "", true, false, false); + verifyListItem("dojox_mobile_ListItem_2", 'Phone Number', 'Off', "", false, false, false); + })); + return d; + } + }, + { + name: "EdgeToEdgeCategory getLabel", + timeout: 1000, + runTest: function(){ + doh.assertEqual("Spaces", dijit.byId("Category").get("label")); + } + }, + { + name: "EdgeToEdgeCategory setLabel", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("Category"); + demoWidget.set({label :"Value Changed"}); + doh.assertEqual("Value Changed", demoWidget.get("label")); + doh.assertEqual('Value Changed', demoWidget.domNode.innerHTML); + } + } + ]); + doh.run(); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeCategory.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeCategory.html new file mode 100644 index 0000000..0c02ea4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeCategory.html @@ -0,0 +1,41 @@ + + + + + + Edge To Edge List + + + + + + + + + +
                                                      +

                                                      Mobile Mashup

                                                      +

                                                      Spaces

                                                      +
                                                        +
                                                      • u1space
                                                      • +
                                                      • u2space
                                                      • +
                                                      • Wi-Fi
                                                      • +
                                                      +
                                                      + +
                                                      +

                                                      u1space

                                                      +

                                                      Applications

                                                      +
                                                        +
                                                      • Video
                                                      • +
                                                      • Maps
                                                      • +
                                                      • Phone Number
                                                      • +
                                                      +
                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeDataList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeDataList.html new file mode 100644 index 0000000..3eb6635 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeDataList.html @@ -0,0 +1,155 @@ + + + + + + EdgeToEdgeDataList + + + + +
                                                      +

                                                      EdgeToEdgeDataList

                                                      +
                                                        +

                                                        EdgeToEdgeDataList

                                                        +

                                                        show the different set:
                                                        + + +

                                                        alter the object store:
                                                        + + +

                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeDataList_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeDataList_Programmatic.html new file mode 100644 index 0000000..1e50f44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/EdgeToEdgeDataList_Programmatic.html @@ -0,0 +1,157 @@ + + + + + + EdgeToEdgeDataList + + + + +
                                                        +

                                                        EdgeToEdgeDataList

                                                        +

                                                        show the different set:
                                                        + + +

                                                        alter the object store:
                                                        + + +

                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading.html new file mode 100644 index 0000000..7b15059 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading.html @@ -0,0 +1,65 @@ + + + + + + Heading + + + + + + + + +
                                                        +

                                                        General

                                                        +

                                                        Very Very Long Title May Not Be Displayed in the Narrow Space

                                                        +
                                                        + +


                                                        + + +

                                                        +
                                                        Edit
                                                        +
                                                        Alarm Clock


                                                        + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading2.html new file mode 100644 index 0000000..966ac43 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading2.html @@ -0,0 +1,166 @@ + + + + + + Heading + + + + + + + + + + +
                                                        +

                                                        General

                                                        +

                                                        Test

                                                        +

                                                        Test

                                                        +

                                                        Very Very Long Title May Not Be Displayed in the Narrow Space

                                                        +
                                                        + +
                                                        +

                                                        Mobile Mashup

                                                        +

                                                        Spaces

                                                        +
                                                          +
                                                        • + u1space +
                                                        • +
                                                        • + u2space +
                                                        • +
                                                        • + Wi-Fi +
                                                        • +
                                                        • + VPN +
                                                        • +
                                                        +
                                                        + +
                                                        +

                                                        u1space

                                                        +

                                                        Applications

                                                        +
                                                          +
                                                        • + Video +
                                                        • +
                                                        • + Maps +
                                                        • +
                                                        • + Phone Number +
                                                        • +
                                                        +
                                                        + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading2_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading2_Programmatic.html new file mode 100644 index 0000000..3a9e1d3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading2_Programmatic.html @@ -0,0 +1,164 @@ + + + + + + Heading + + + + + + + + + + + +
                                                        +
                                                        + +
                                                        +

                                                        Mobile Mashup

                                                        +

                                                        Spaces

                                                        +
                                                          +
                                                        • + u1space +
                                                        • +
                                                        • + u2space +
                                                        • +
                                                        • + Wi-Fi +
                                                        • +
                                                        • + VPN +
                                                        • +
                                                        +
                                                        + +
                                                        +

                                                        u1space

                                                        +

                                                        Applications

                                                        +
                                                          +
                                                        • + Video +
                                                        • +
                                                        • + Maps +
                                                        • +
                                                        • + Phone Number +
                                                        • +
                                                        +
                                                        + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading_Programmatic.html new file mode 100644 index 0000000..fc15805 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Heading_Programmatic.html @@ -0,0 +1,70 @@ + + + + + + Heading + + + + + + + + +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer.html new file mode 100644 index 0000000..eea0299 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer.html @@ -0,0 +1,151 @@ + + + + + + Icon + + + + + + + + + + + +
                                                        +

                                                        Icon Container

                                                        +
                                                          +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        +
                                                        + +
                                                        +

                                                        About

                                                        +

                                                        My Phone

                                                        +
                                                          +
                                                        • + Network +
                                                        • +
                                                        • + Line +
                                                        • +
                                                        • + Songs +
                                                        • +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer2.html new file mode 100644 index 0000000..035d491 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer2.html @@ -0,0 +1,120 @@ + + + + + + Icon + + + + + + + + + + + +
                                                        +

                                                        Icon Container

                                                        +
                                                          +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        +
                                                        + +
                                                        +

                                                        About

                                                        +

                                                        My Phone

                                                        +
                                                          +
                                                        • + Network +
                                                        • +
                                                        • + Line +
                                                        • +
                                                        • + Songs +
                                                        • +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer3.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer3.html new file mode 100644 index 0000000..5016fca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer3.html @@ -0,0 +1,125 @@ + + + + + + Icon + + + + + + + + + + + +
                                                        +

                                                        Icon Container

                                                        +
                                                          +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        • +
                                                        +
                                                        + +
                                                        +

                                                        About

                                                        +

                                                        My Phone

                                                        +
                                                          +
                                                        • + Network +
                                                        • +
                                                        • + Line +
                                                        • +
                                                        • + Songs +
                                                        • +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer_Programmatic.html new file mode 100644 index 0000000..e8e235e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/IconContainer_Programmatic.html @@ -0,0 +1,148 @@ + + + + + + Icon + + + + + + + + + + + +
                                                        +

                                                        Icon Container

                                                        +
                                                        + +
                                                        +

                                                        About

                                                        +

                                                        My Phone

                                                        +
                                                          +
                                                        • + Network +
                                                        • +
                                                        • + Line +
                                                        • +
                                                        • + Songs +
                                                        • +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem.html new file mode 100644 index 0000000..cb5798a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem.html @@ -0,0 +1,61 @@ + + + + + + ListItem + + + + + + + + + + + + +
                                                        +
                                                          +
                                                        • External View #1 (sync)
                                                        • +
                                                        • External View #2 (async)
                                                        • +
                                                        • External View #3 (sync)
                                                        • +
                                                        • Video
                                                        • +
                                                        • Maps
                                                        • +
                                                        • Jack Coleman
                                                        • +
                                                        +
                                                          +
                                                        • Sounds
                                                        • +
                                                        • Brightness
                                                        • +
                                                        • Wallpaper
                                                        • +
                                                        +
                                                          +
                                                        • XX Widget
                                                        • +
                                                        • YY Widget
                                                        • +
                                                        +
                                                          +
                                                        • + Use wireless networks +
                                                          + See location in applications (such as Maps) using wireless networks +
                                                          +
                                                        • +
                                                        • + Use GPS satellites +
                                                          + When locating, accurate to street level (uncheck to conserve battery) +
                                                          +
                                                        • +
                                                        • + Set unlock pattern +
                                                        • +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem.js new file mode 100644 index 0000000..dd2611d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem.js @@ -0,0 +1,113 @@ +dojo.addOnLoad(function(){ + doh.register("dojox.mobile.test.doh.ListItem", [ + { + name: "ListItem Verification", + timeout: 4000, + runTest: function(){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + verifyListItem("dojox_mobile_ListItem_0", 'External View #1 (sync)', '', "mblDomButtonArrow", true, true, false, false, /i-icon-1.png/i); + verifyListItem("dojox_mobile_ListItem_1", 'External View #2 (async)', '', "mblDomButtonArrow", true, true, false); + verifyListItem("dojox_mobile_ListItem_2", 'External View #3 (sync)', '', "mblDomButtonArrow", true, true, false); + verifyListItem("dojox_mobile_ListItem_3", 'Video', 'Off', "", false, false, false); + verifyListItem("dojox_mobile_ListItem_4", 'Maps', 'VPN', "", true, false, false); + verifyListItem("dojox_mobile_ListItem_5", 'Jack Coleman', '', "", false, false, false); + verifyListItem("dojox_mobile_ListItem_6", 'Sounds', '', "mblDomButtonArrow", true, true, false); + verifyListItem("dojox_mobile_ListItem_7", 'Brightness', '', "mblDomButtonArrow", true, true, false); + verifyListItem("dojox_mobile_ListItem_8", 'Wallpaper', '', "mblDomButtonArrow", true, true, false); + verifyListItem("dojox_mobile_ListItem_9", 'XX Widget', '', "mblDomButtonBluePlus", true, true, false); + verifyListItem("dojox_mobile_ListItem_10", 'YY Widget', '', "mblDomButtonRedMinus", true, true, false); + verifyListItem("dojox_mobile_ListItem_11", 'Use wireless networks', '', "mblDomButtonCheckboxOff", false, true, false, true); + verifyListItem("dojox_mobile_ListItem_12", 'Use GPS satellites', '', "mblDomButtonCheckboxOn", false, true, false, true); + verifyListItem("dojox_mobile_ListItem_13", 'Set unlock pattern', '', "", false, false, false); + })); + return d; + } + }, + { + name: "ListItem set", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("dojox_mobile_ListItem_0"); + demoWidget.set({transition :"flip", url:"../view2.html", noArrow:true, selected:true, anchorLabel:true, rightText:"Value Changed"}); + doh.assertEqual("flip", demoWidget.get("transition")); + doh.assertEqual("../view2.html", demoWidget.get("url")); + doh.assertTrue(demoWidget.get("noArrow"), 'get("noArrow")'); + doh.assertTrue(demoWidget.get("selected"), 'get("selected")'); + doh.assertTrue(demoWidget.get("anchorLabel"), 'get("anchorLabel")'); + doh.assertEqual("Value Changed", demoWidget.get("rightText")); + + verifyListItem("dojox_mobile_ListItem_0", 'External View #1 (sync)', 'Value Changed', "mblDomButtonArrow", true, true, false); + } + }, + { + name: "ListItem set", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("dojox_mobile_ListItem_1"); + demoWidget.set({icon :"../images/i-icon-4.png", label:"Value Changed", clickable:true, url:"../view3.html", transition :"slide", transitionDir:-1, sync:false, toggle:true, _duration:1600}); + + doh.assertEqual("slide", demoWidget.get("transition")); + doh.assertEqual("../view3.html", demoWidget.get("url")); + doh.assertEqual(-1, demoWidget.get("transitionDir")); + doh.assertTrue(demoWidget.get("clickable"), 'get("clickable")'); + doh.assertFalse(demoWidget.get("sync"), 'get("sync")'); + doh.assertTrue(demoWidget.get("toggle"), 'get("toggle")'); + doh.assertEqual(1600, demoWidget.get("_duration")); + doh.assertEqual("Value Changed", demoWidget.get("label")); + + verifyListItem("dojox_mobile_ListItem_1", 'Value Changed', '', "mblDomButtonArrow", true, true, false, false, /i-icon-4.png/i); + } + }, + { + name: "ListItem set", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("dojox_mobile_ListItem_6"); + demoWidget.set({iconPos :"0,116,29,29", moveTo:"bar", transition :"fade"}); + + doh.assertEqual("bar", demoWidget.get("moveTo")); + doh.assertEqual("0,116,29,29", demoWidget.get("iconPos")); + doh.assertEqual("fade", demoWidget.get("transition")); + + verifyListItem("dojox_mobile_ListItem_6", 'Sounds', '', "mblDomButtonArrow", true, true, false, false, /i-icon-all.png/i); + } + }, + { + +//Todo + name: "ListItem set", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("dojox_mobile_ListItem_6"); + demoWidget.set({href :"", hrefTarget:""}); + + doh.assertEqual("", demoWidget.get("href")); + doh.assertEqual("", demoWidget.get("hrefTarget")); + + } + }, + { + name: "ListItem set", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("dojox_mobile_ListItem_9"); + demoWidget.set({btnClass:"mblDomButtonRedMinus"}); + verifyListItem("dojox_mobile_ListItem_9", 'XX Widget', '', "mblDomButtonRedMinus", true, true, false); +// doh.assertEqual("mblDomButtonRedMinus", demoWidget.get("btnClass")); + } + }, + { + name: "ListItem set", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("dojox_mobile_ListItem_11"); + demoWidget.set({btnClass:"mblDomButtonCheckboxOn"}); + + verifyListItem("dojox_mobile_ListItem_11", 'Use wireless networks', '', "mblDomButtonCheckboxOn", false, true, false, true); +// doh.assertEqual("mblDomButtonCheckboxOn", demoWidget.get("btnClass")); + } + } + ]); + doh.run(); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2.html new file mode 100644 index 0000000..e06ea75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2.html @@ -0,0 +1,33 @@ + + + + + + ListItem + + + + + + + + + + +
                                                        +
                                                          +
                                                        • Sounds
                                                        • +
                                                        • Brightness
                                                        • +
                                                        +
                                                          +
                                                        • XX Widget
                                                        • +
                                                        • YY Widget
                                                        • +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2.js new file mode 100644 index 0000000..5aeee8d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2.js @@ -0,0 +1,44 @@ +dojo.addOnLoad(function(){ + doh.register("dojox.mobile.test.doh.ListItem", [ + { + name: "ListItem Verification", + timeout: 4000, + runTest: function(){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + + verifyListItem("dojox_mobile_ListItem_0", 'Sounds', '', "mblDomButtonArrow", true, true, false, false, /i-icon-all.png/i); + verifyListItemPos("dojox_mobile_ListItem_0", "0px", "116px", "29px", "87px", "0px", "-87px"); + + verifyListItem("dojox_mobile_ListItem_1", 'Brightness', '', "mblDomButtonArrow", true, true, false, false, /i-icon-all.png/i); + verifyListItemPos("dojox_mobile_ListItem_1", "0px", "145px", "29px", "116px", "0px", "-116px"); + + verifyListItem("dojox_mobile_ListItem_2", 'XX Widget', '', "mblDomButtonBluePlus", true, true, false, false, /i-icon-all.png/i); verifyListItemPos("dojox_mobile_ListItem_2", "0px", "116px", "29px", "87px", "0px", "-87px"); + + verifyListItem("dojox_mobile_ListItem_3", 'YY Widget', '', "mblDomButtonRedMinus", true, true, false, false, /i-icon-all.png/i); verifyListItemPos("dojox_mobile_ListItem_3", "0px", "145px", "29px", "116px", "0px", "-116px"); + })); + return d; + } + }, + { + name: "ListItem set", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("dojox_mobile_RoundRectList_0"); + demoWidget.set({iconBase :""}); + doh.assertEqual("", demoWidget.get("iconBase")); + + verifyListItem("dojox_mobile_ListItem_0", 'Sounds', '', "mblDomButtonArrow", true, true, false, false, /i-icon-all.png/i); + verifyListItemPos("dojox_mobile_ListItem_0", "0px", "116px", "29px", "87px", "0px", "-87px"); + + demoWidget = dijit.byId("dojox_mobile_EdgeToEdgeList_0"); + demoWidget.set({iconBase :""}); + doh.assertEqual("", demoWidget.get("iconBase")); + + verifyListItem("dojox_mobile_ListItem_2", 'XX Widget', '', "mblDomButtonBluePlus", true, true, false, false, /i-icon-all.png/i) + verifyListItemPos("dojox_mobile_ListItem_2", "0px", "116px", "29px", "87px", "0px", "-87px"); + } + } + ]); + doh.run(); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2_Programmatic.html new file mode 100644 index 0000000..7bb8ce5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem2_Programmatic.html @@ -0,0 +1,26 @@ + + + + + + ListItem + + + + + + + + + + + +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem_Programmatic.html new file mode 100644 index 0000000..05b6828 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ListItem_Programmatic.html @@ -0,0 +1,36 @@ + + + + + + Switch + + + + + + + + + + + + + +
                                                        +
                                                          +
                                                        +
                                                          +
                                                        +
                                                          +
                                                        +
                                                          +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRect.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRect.html new file mode 100644 index 0000000..ece544c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRect.html @@ -0,0 +1,69 @@ + + + + + + Round Rect + + + + + + + +
                                                        +

                                                        Round Rectangle

                                                        +
                                                        + This module provides some widgets that can be used to build web-based + applications for mobile devices such as iPhone or Android. +
                                                        +
                                                        + This module provides some widgets that can be used to build web-based + applications for mobile devices such as iPhone or Android. +
                                                        +
                                                        + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList.html new file mode 100644 index 0000000..f8a6fb6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList.html @@ -0,0 +1,71 @@ + + + + + + RoundRectDataList + + + + + + + +
                                                        +

                                                        RoundRectDataList

                                                        +
                                                          +

                                                          RoundRectDataList

                                                          +

                                                          show the different set:
                                                          + + +

                                                          alter the object store:
                                                          + + +

                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList.js new file mode 100644 index 0000000..dac4483 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList.js @@ -0,0 +1,55 @@ +dojo.addOnLoad(function(){ + doh.register("dojox.mobile.test.doh.RoundRectDataList", [ + { + name: "RoundRectDataList Verification", + timeout: 4000, + runTest: function(){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + verifyListItem("dojox_mobile_ListItem_0", 'Wi-Fi', '', "mblDomButtonArrow", true, true, false, false, /i-icon-1.png/i); + + verifyListItem("dojox_mobile_ListItem_3", 'General', '', "mblDomButtonArrow", true, true, false, false, /i-icon-4.png/i, true); + + }),500); + return d; + } + }, + { + name: "RoundRectDataList Verification2", + timeout: 10000, + runTest: function(){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + + add1(); + add1(); + add1(); + verifyListItem("dojox_mobile_ListItem_12", 'New Item', '', "mblDomButtonArrow", false, true, false, false); + + delete1(); + demoWidget = dijit.byId("dojox_mobile_ListItem_12"); + doh.assertTrue(!demoWidget); + + verifyListItem("dojox_mobile_ListItem_11", 'New Item', '', "mblDomButtonArrow", false, true, false, false); + + }),1500); + return d; + } + }, + { + name: "RoundRectDataList Verification3", + timeout: 10000, + runTest: function(){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + + switchTo(store2); + verifyListItem("dojox_mobile_ListItem_13", 'Apple', '', "mblDomButtonArrow", false, true, false, false); + + }),2500); + return d; + } + } + ]); + doh.run(); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList_Programmatic.html new file mode 100644 index 0000000..5068448 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectDataList_Programmatic.html @@ -0,0 +1,77 @@ + + + + + + RoundRectDataList + + + + + + + +
                                                          +

                                                          RoundRectDataList

                                                          +

                                                          show the different set:
                                                          + + +

                                                          alter the object store:
                                                          + + +

                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList.html new file mode 100644 index 0000000..78e8610 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList.html @@ -0,0 +1,42 @@ + + + + + + Round Rect List + + + + + + + + + + +
                                                          +

                                                          Mobile Mashup

                                                          +

                                                          Spaces

                                                          +
                                                            +
                                                          • u1space
                                                          • +
                                                          • u2space
                                                          • +
                                                          • Wi-Fi
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          u1space

                                                          +

                                                          Applications

                                                          +
                                                            +
                                                          • Video
                                                          • +
                                                          • Maps
                                                          • +
                                                          • Phone Number
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList.js new file mode 100644 index 0000000..099b1f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList.js @@ -0,0 +1,71 @@ + +dojo.addOnLoad(function(){ + doh.register("dojox.mobile.test.doh.RoundRectList", [ + { + name: "RoundRectList Verification", + timeout: 4000, + runTest: function(){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + var demoWidget = dijit.byId("Category"); + doh.assertEqual('mblRoundRectCategory', demoWidget.domNode.className); + doh.assertEqual('Spaces', demoWidget.domNode.innerHTML); + + demoWidget = dijit.byId("dojox_mobile_RoundRectList_0"); + doh.assertEqual('mblRoundRectList', demoWidget.domNode.className); + verifyListItem("item1", 'u1space', 'Off', "mblDomButtonArrow", true, true, false); + verifyListItem("item2", 'u2space', 'On', "mblDomButtonArrow", true, true, false); + verifyListItem("item3", 'Wi-Fi', 'Off', "mblDomButtonArrow", false, true, false); + + })); + return d; + } + }, + { + name: "RoundRectList Verification2", + timeout: 1000, + runTest: function(){ + var d = new doh.Deferred(); + var demoWidget = dijit.byId("dojox_mobile_RoundRectList_0"); + demoWidget.set({transition :"flip"}); + doh.assertEqual("flip", demoWidget.get("transition")); + demoWidget.set({transition :"fade"}); + doh.assertEqual("fade", demoWidget.get("transition")); + + fireOnClick("item3"); + var view = dijit.byId("foo"); + dojo.connect(view, "onAfterTransitionOut", this, d.getTestCallback(function(){ + var demoWidget = dijit.byId("dojox_mobile_RoundRectCategory_0"); + doh.assertEqual('mblRoundRectCategory', demoWidget.domNode.className); + doh.assertEqual('Applications', demoWidget.domNode.innerHTML); + + demoWidget = dijit.byId("dojox_mobile_RoundRectList_1"); + doh.assertEqual('mblRoundRectList', demoWidget.domNode.className); + + verifyListItem("dojox_mobile_ListItem_0", 'Video', 'Off', "", false, true, false); + verifyListItem("dojox_mobile_ListItem_1", 'Maps', 'VPN', "", true, false, false); + verifyListItem("dojox_mobile_ListItem_2", 'Phone Number', 'Off', "", false, false, false); + })); + return d; + } + }, + { + name: "RoundRectCategory getLabel", + timeout: 1000, + runTest: function(){ + doh.assertEqual("Spaces", dijit.byId("Category").get("label")); + } + }, + { + name: "RoundRectCategory setLabel", + timeout: 1000, + runTest: function(){ + var demoWidget = dijit.byId("Category"); + demoWidget.set({label :"Value Changed"}); + doh.assertEqual("Value Changed", demoWidget.get("label")); + doh.assertEqual('Value Changed', demoWidget.domNode.innerHTML); + } + } + ]); + doh.run(); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList_Programmatic.html new file mode 100644 index 0000000..9f98e04 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRectList_Programmatic.html @@ -0,0 +1,61 @@ + + + + + + Round Rect List + + + + + + + + + + + + +
                                                          +

                                                          Mobile Mashup

                                                          +

                                                          Spaces

                                                          +
                                                            +
                                                          +
                                                          + +
                                                          +

                                                          u1space

                                                          +

                                                          Applications

                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRect_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRect_Programmatic.html new file mode 100644 index 0000000..fee850e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/RoundRect_Programmatic.html @@ -0,0 +1,70 @@ + + + + + + Round Rect + + + + + + + +
                                                          +

                                                          Round Rectangle

                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Switch.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Switch.html new file mode 100644 index 0000000..c52b661 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Switch.html @@ -0,0 +1,143 @@ + + + + + + Switch + + + + + + + + + +
                                                          +
                                                          + Default Shape
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Round Shape 1
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Round Shape 2
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Arc Shape 1
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Arc Shape 2
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Switch_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Switch_Programmatic.html new file mode 100644 index 0000000..e97f757 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/Switch_Programmatic.html @@ -0,0 +1,126 @@ + + + + + + Switch + + + + + + + + + +
                                                          +
                                                          + Default Shape
                                                          +
                                                          + +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TabBar.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TabBar.html new file mode 100644 index 0000000..4772fee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TabBar.html @@ -0,0 +1,143 @@ + + + + + + TabBar + + + + + + + + + + +
                                                          Segmented Control
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar (CSS Sprite)
                                                          +
                                                            +
                                                          • Featured
                                                          • +
                                                          • Categories
                                                          • +
                                                          • Top 25
                                                          • +
                                                          • Search
                                                          • +
                                                          • Updates
                                                          • +
                                                          + +
                                                          +
                                                          View 1
                                                          +
                                                          +
                                                          +
                                                          View 2
                                                          +
                                                          +
                                                          +
                                                          View 3
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TabBar_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TabBar_Programmatic.html new file mode 100644 index 0000000..527dfbc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TabBar_Programmatic.html @@ -0,0 +1,161 @@ + + + + + + TabBar + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TestUtil.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TestUtil.js new file mode 100644 index 0000000..de560ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/TestUtil.js @@ -0,0 +1,83 @@ +dojo.require("doh.runner"); + +function fireOnClick(obj){ + var anchorNode; + if(typeof obj === "string"){ + var demoWidget = dijit.byId(obj); + anchorNode = demoWidget.anchorNode; + }else{ + anchorNode = obj; + } + if(dojo.isIE<9){ + anchorNode.fireEvent( "onclick" ); + }else{ + var e = document.createEvent('Events'); + e.initEvent('click', true, true); + anchorNode.dispatchEvent(e); + } +} + + +function verifyListItem(id, text, rightText, domButtonType, hasIcon, hasRightIcon, hasIcon2, hasVariableHeight, regExp, hasSelected) { + demoWidget = dijit.byId(id); + doh.assertEqual('mblListItem' + (hasVariableHeight ?" mblVariableHeight":"") + (hasSelected ?" mblItemSelected":""), demoWidget.domNode.className); + var childNodes = demoWidget.domNode.childNodes; + doh.assertEqual('mblListItemAnchor' + (hasIcon?'':' mblListItemAnchorNoIcon'), childNodes[0].className); + + doh.assertEqual('A', childNodes[0].tagName); + + childNodes = childNodes[0].childNodes; + + var i=0; + if(hasIcon){ + if(!dojo.isIE && regExp){ + doh.assertTrue(childNodes[i].childNodes[0].src.search(regExp) != -1, "search " + regExp.toString()); + } + doh.assertEqual('mblListItemIcon', childNodes[i++].className); + } + + if(hasRightIcon){ + if(domButtonType){ + doh.assertEqual(domButtonType + ' mblDomButton', childNodes[i].childNodes[0].className); + } + doh.assertEqual('mblListItemRightIcon', childNodes[i++].className); + } + + if(hasIcon2){ + doh.assertEqual('mblListItemRightIcon2', childNodes[i++].className); + } + + if(rightText){ + doh.assertEqual(rightText, dojo.isFF ==3.6 ? childNodes[i].childNodes[0].innerHTML : childNodes[i].innerHTML); //2 0r 3 + doh.assertEqual('mblListItemRightText', childNodes[i++].className); + } + doh.assertEqual('mblListItemTextBox', childNodes[i].className); + doh.assertEqual('DIV', childNodes[i].tagName); + + try{ + doh.assertEqual(text, dojo.trim(childNodes[i].childNodes[0].innerHTML.replace(/\r\n/g,""))); + } catch (e) { + if(dojo.isFF ==3.6){ + doh.assertEqual(text, dojo.trim(childNodes[i].childNodes[0].childNodes[0].innerHTML.replace(/\r\n/g,""))); + }else{ + throw e; + } + } + +} + +function verifyListItemPos(id, rTop, rRight, rBottom, rLeft, sTop, sLeft) { + var demoWidget = dijit.byId(id); + verifyRect(demoWidget.domNode.childNodes[0].childNodes[0].childNodes[0], rTop, rRight, rBottom, rLeft); + + doh.assertEqual(sTop, demoWidget.domNode.childNodes[0].childNodes[0].childNodes[0].style.top); + doh.assertEqual(sLeft, demoWidget.domNode.childNodes[0].childNodes[0].childNodes[0].style.left); +} + +function verifyRect(node, rTop, rRight, rBottom, rLeft) { + var rectArray = node.style.clip.split(/[, ]+/); + doh.assertEqual("rect("+rTop, rectArray[0]); + doh.assertEqual(rRight, rectArray[1]); + doh.assertEqual(rBottom, rectArray[2]); + doh.assertEqual(rLeft+")", rectArray[3]); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton.html new file mode 100644 index 0000000..8b85abc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton.html @@ -0,0 +1,89 @@ + + + + + + ToolBarButton + + + + + + + + + + + +

                                                          +
                                                          Edit
                                                          +
                                                          + +


                                                          + + +

                                                          +
                                                          Edit
                                                          +
                                                          + Alarm Clock +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +
                                                          +
                                                          New
                                                          +
                                                          Toggle
                                                          +
                                                          +
                                                          +
                                                          +

                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          + + + +
                                                          +


                                                          + +

                                                          +
                                                          +
                                                          +
                                                          +


                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton.js new file mode 100644 index 0000000..0de8cf2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton.js @@ -0,0 +1,93 @@ +dojo.addOnLoad(function(){ + doh.register("dojox.mobile.test.ToolBarButton", [ + function test_Heading_Verification(){ + var demoWidget = dijit.byId("btn1"); + + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblToolBarButtonText', demoWidget.domNode.className); + doh.assertEqual('Edit', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_0"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhitePlus', demoWidget.domNode.className); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_1"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblToolBarButtonText', demoWidget.domNode.className); + doh.assertEqual('Edit', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_2"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhitePlus', demoWidget.domNode.className); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_3"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblToolBarButtonText', demoWidget.domNode.className); + doh.assertEqual('Speaker', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_4"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblToolBarButtonText mblColorBlue', demoWidget.domNode.className); + doh.assertEqual('Done', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_5"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblToolBarButtonText', demoWidget.domNode.className); + doh.assertEqual('Update All', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_6"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblToolBarButtonText mblColorBlue', demoWidget.domNode.className); + doh.assertEqual('Done', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_7"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblToolBarButtonText mblColorBlue', demoWidget.domNode.className); + doh.assertEqual('Done', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_8"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblToolBarButtonText', demoWidget.domNode.className); + doh.assertEqual('New Folder', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_9"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblToolBarButtonText', demoWidget.domNode.className); + doh.assertEqual('New', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_10"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblToolBarButtonText', demoWidget.domNode.className); + doh.assertEqual('Toggle', demoWidget.domNode.childNodes[0].nodeValue); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_11"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault', demoWidget.domNode.className); + if(dojo.isIE===6){ + doh.assertTrue(demoWidget.domNode.childNodes[0].childNodes[0].href.search(/a-icon-12.png/) != -1, "a-icon-12.png"); + }else{ + doh.assertTrue(demoWidget.domNode.childNodes[0].childNodes[0].src.search(/a-icon-12.png/) != -1, "a-icon-12.png"); + } + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_12"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault', demoWidget.domNode.className); + doh.assertEqual('mblToolBarButtonSpriteIcon', demoWidget.domNode.childNodes[0].childNodes[0].className); + verifyRect(demoWidget.domNode.childNodes[0].childNodes[0], "29px", "29px", "58px", "0px"); + doh.assertEqual('-29px', demoWidget.domNode.childNodes[0].childNodes[0].style.top); + doh.assertEqual('0px', demoWidget.domNode.childNodes[0].childNodes[0].style.left); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_13"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhitePlus', demoWidget.domNode.className); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_14"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhiteSearch', demoWidget.domNode.className); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_15"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhitePlus', demoWidget.domNode.className); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_16"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault', demoWidget.domNode.className); + if(dojo.isIE!=6){ + doh.assertTrue(demoWidget.domNode.childNodes[0].childNodes[0].src.search(/tab-icon-15h.png/) != -1, "tab-icon-15h.png"); + } + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_17"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhiteSearch', demoWidget.domNode.className); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_18"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhiteUpArrow', demoWidget.domNode.className); + + demoWidget = dijit.byId("dojox_mobile_ToolBarButton_19"); + doh.assertEqual('mblToolBarButton mblArrowButtonText mblColorDefault mblDomButton mblToolBarButtonDomButton mblDomButtonWhiteDownArrow', demoWidget.domNode.className); + } + ]); + doh.run(); +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton_Programmatic.html new file mode 100644 index 0000000..4b3538c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/ToolBarButton_Programmatic.html @@ -0,0 +1,195 @@ + + + + + + ToolBarButton + + + + + + + + + + + +
                                                          +
                                                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View-demo.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View-demo.html new file mode 100644 index 0000000..e0a8e46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View-demo.html @@ -0,0 +1,821 @@ + + + + + + ScrollableView demo + + + + + + + + + + +
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          + +
                                                          + +
                                                          + +
                                                          + +
                                                          +

                                                          Generic Mobile Device

                                                          +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Line +
                                                          • +
                                                          • + Songs +
                                                          • +
                                                          • + Videos +
                                                          • +
                                                          • + Photos +
                                                          • +
                                                          • + Applications +
                                                          • +
                                                          • + Capacity +
                                                          • +
                                                          • + Available +
                                                          • +
                                                          • + Version +
                                                          • +
                                                          +
                                                          +
                                                          + +
                                                          +

                                                          Categories

                                                          +
                                                            +
                                                          • Category 1
                                                          • +
                                                          • Category 2
                                                          • +
                                                          • Category 3
                                                          • +
                                                          • Category 4
                                                          • +
                                                          • Category 5
                                                          • +
                                                          • Category 6
                                                          • +
                                                          • Category 7
                                                          • +
                                                          • Category 8
                                                          • +
                                                          • Category 9
                                                          • +
                                                          • Category 10
                                                          • +
                                                          • Category 11
                                                          • +
                                                          • Category 12
                                                          • +
                                                          • Category 13
                                                          • +
                                                          • Category 14
                                                          • +
                                                          • Category 15
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          News

                                                          +

                                                          Top Stories

                                                          +
                                                            +
                                                          • + Top 10 news stories of the decade +
                                                          • +
                                                          • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                          • +
                                                          • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                          • +
                                                          +
                                                          + + + +
                                                          +

                                                          Article

                                                          +
                                                          +

                                                          Did you know?

                                                          +

                                                          Features of dojox.mobile

                                                          +
                                                          No images are used
                                                          +
                                                            +
                                                          • UI parts consist of DOM and CSS3.
                                                          • +
                                                          • Only application icons are images.
                                                          • +
                                                          + +
                                                          Removed dependencies on the dojo modules as much as possible
                                                          +
                                                            +
                                                          • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                          • +
                                                          + +
                                                          Support for CSS sprite
                                                          +
                                                            +
                                                          • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                          • +
                                                          + +
                                                          Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                          +
                                                            +
                                                          • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                          • +
                                                          +
                                                          +
                                                          + +
                                                            +
                                                          • Featured
                                                          • +
                                                          • Categories
                                                          • +
                                                          • Top 25
                                                          • +
                                                          • Search
                                                          • +
                                                          • Updates
                                                          • +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View.html new file mode 100644 index 0000000..c7c0153 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View.html @@ -0,0 +1,122 @@ + + + + + + View + + + + + + + +
                                                          + aaa + +
                                                          + +
                                                          +

                                                          Categories

                                                          + bbb +
                                                          + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View2_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View2_Programmatic.html new file mode 100644 index 0000000..9650c8f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View2_Programmatic.html @@ -0,0 +1,199 @@ + + + + + + View + + + + + + + +
                                                          +

                                                          View Header Bar

                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                          a-icon-1-41x41.png2010/03/2313:033,886mobile/tests/images
                                                          a-icon-1.png2010/03/2313:03550mobile/tests/images
                                                          a-icon-10.png2010/05/0608:57332mobile/tests/images
                                                          a-icon-11.png2010/05/0608:57343mobile/tests/images
                                                          a-icon-12.png2010/05/0608:57613mobile/tests/images
                                                          a-icon-13.png2010/05/0608:57278mobile/tests/images
                                                          a-icon-14.png2010/05/0608:57612mobile/tests/images
                                                          a-icon-15.png2010/05/0608:57765mobile/tests/images
                                                          a-icon-16.png2010/05/0608:57597mobile/tests/images
                                                          a-icon-17.png2010/05/0608:57942mobile/tests/images
                                                          a-icon-18.png2010/05/0608:57832mobile/tests/images
                                                          a-icon-2-41x41.png2010/03/2313:03923mobile/tests/images
                                                          a-icon-2.png2010/03/2313:03644mobile/tests/images
                                                          a-icon-3.png2010/04/1306:371,346mobile/tests/images
                                                          a-icon-4.png2010/03/2313:03695mobile/tests/images
                                                          i-icon-1.png2010/03/2313:03677mobile/tests/images
                                                          i-icon-10.png2010/03/2313:03689mobile/tests/images
                                                          i-icon-2.png2010/03/2313:03680mobile/tests/images
                                                          i-icon-3.png2010/03/2313:03682mobile/tests/images
                                                          i-icon-4.png2010/03/2313:03697mobile/tests/images
                                                          i-icon-5.png2010/03/2313:03693mobile/tests/images
                                                          i-icon-6.png2010/03/2313:03694mobile/tests/images
                                                          i-icon-7.png2010/03/2313:03691mobile/tests/images
                                                          i-icon-8.png2010/03/2313:03695mobile/tests/images
                                                          i-icon-9.png2010/03/2313:03689mobile/tests/images
                                                          i-icon-all.png2010/03/2313:034,450mobile/tests/images
                                                          icon-1.png2010/05/0608:572,626mobile/tests/images
                                                          not-images.png2010/04/1306:3718,459mobile/tests/images
                                                          red-button-bg.png2010/04/1306:37178mobile/tests/images
                                                          red-button-sel-bg.png2010/04/1306:37185mobile/tests/images
                                                          test_Android-ButtonList.html2010/10/0521:092,750mobile/tests
                                                          test_Android-EdgeToEdge.html2010/10/0521:081,835mobile/tests
                                                          test_Android-EdgeToEdgeCategory.html2010/10/0521:081,615mobile/tests
                                                          test_Android-Icon.html2010/10/0521:092,634mobile/tests
                                                          test_Android-RoundRectList.html2010/10/0521:082,142mobile/tests
                                                          test_Android-Settings.html2010/10/0521:084,375mobile/tests
                                                          test_Android-Switch.html2010/10/0521:091,000mobile/tests
                                                          test_Android-TabContainer.html2010/10/0521:095,031mobile/tests
                                                          test_Android-VariableHeightList.html2010/10/0521:093,570mobile/tests
                                                          test_FixedSplitter-H2-prog.html2010/10/0322:281,089mobile/tests
                                                          test_FixedSplitter-H2.html2010/10/0322:28872mobile/tests
                                                          test_FixedSplitter-V2H2.html2010/10/0322:281,088mobile/tests
                                                          test_FixedSplitter-V3.html2010/10/0322:28996mobile/tests
                                                          test_ajax-html.html2010/10/0521:091,505mobile/tests
                                                          test_ajax-json.html2010/10/0521:081,505mobile/tests
                                                          test_anchor-label.html2010/10/0521:082,959mobile/tests
                                                          test_bookmarkable.html2010/10/0521:094,443mobile/tests
                                                          test_buttons.html2010/10/0521:08972mobile/tests
                                                          test_css-sprite.html2010/10/0521:095,779mobile/tests
                                                          test_dynamic-icons.html2010/10/0521:082,080mobile/tests
                                                          test_dynamic-items.html2010/10/0521:083,375mobile/tests
                                                          test_dynamic-view.html2010/10/0521:091,657mobile/tests
                                                          test_hash-parameter.html2010/10/0521:092,679mobile/tests
                                                          test_iPad-Settings-fixed.html2010/10/0322:288,866mobile/tests
                                                          test_iPad-Settings.html2010/10/0322:286,904mobile/tests
                                                          test_iPhone-Animation.html2010/10/0521:083,343mobile/tests
                                                          test_iPhone-Button.html2010/10/0521:091,766mobile/tests
                                                          test_iPhone-ButtonList.html2010/10/0521:092,135mobile/tests
                                                          test_iPhone-EdgeToEdge.html2010/10/0521:081,809mobile/tests
                                                          test_iPhone-EdgeToEdgeCategory.html2010/10/0521:081,613mobile/tests
                                                          test_iPhone-Heading.html2010/10/0521:081,136mobile/tests
                                                          test_iPhone-Icon.html2010/10/0521:092,588mobile/tests
                                                          test_iPhone-IconMulti.html2010/10/0521:081,863mobile/tests
                                                          test_iPhone-IconSingle.html2010/10/0521:091,814mobile/tests
                                                          test_iPhone-IconSingleBelow.html2010/10/0521:081,815mobile/tests
                                                          test_iPhone-ResultList.html2010/10/0521:082,708mobile/tests
                                                          test_iPhone-RoundRect.html2010/10/0521:081,155mobile/tests
                                                          test_iPhone-RoundRectList.html2010/10/0521:082,136mobile/tests
                                                          test_iPhone-Settings.html2010/10/0521:095,666mobile/tests
                                                          test_iPhone-Switch.html2010/10/0521:09998mobile/tests
                                                          test_iPhone-TabContainer.html2010/10/0521:095,262mobile/tests
                                                          test_iPhone-VariableHeightList.html2010/10/0521:093,550mobile/tests
                                                          test_progress-indicator.html2010/10/0521:083,124mobile/tests
                                                          test_transition-to-dynamic-view.html2010/10/0521:082,525mobile/tests
                                                          view-sample.html2010/05/0620:301,724mobile/tests
                                                          view1.html2010/05/0620:28378mobile/tests
                                                          view1.json2010/05/2800:30371mobile/tests
                                                          view2.html2010/05/0621:20619mobile/tests
                                                          view2.json2010/05/2800:30737mobile/tests
                                                          view3.html2010/10/0521:09963mobile/tests
                                                          view3.json2010/10/0521:091,054mobile/tests
                                                          widget-bg.png2010/03/2313:0326,234mobile/tests/images
                                                          +

                                                          View Footer Bar

                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View3_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View3_Programmatic.html new file mode 100644 index 0000000..f0406b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View3_Programmatic.html @@ -0,0 +1,139 @@ + + + + + + View + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View_Programmatic.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View_Programmatic.html new file mode 100644 index 0000000..36b7007 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/View_Programmatic.html @@ -0,0 +1,139 @@ + + + + + + View + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/index.html new file mode 100644 index 0000000..bb4ce30 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/index.html @@ -0,0 +1,47 @@ + + + + + dojox.mobile + + + Button.html
                                                          + Button_Programmatic.html
                                                          + EdgeToEdgeCategory.html
                                                          + EdgeToEdgeDataList.html
                                                          + EdgeToEdgeDataList_Programmatic.html
                                                          + Heading.html
                                                          + Heading2.html
                                                          + Heading_Programmatic.html
                                                          + Heading2_Programmatic.html
                                                          + IconContainer.html
                                                          + IconContainer2.html
                                                          + IconContainer3.html
                                                          + IconContainer_Programmatic.html
                                                          + ListItem.html
                                                          + ListItem2.html
                                                          + ListItem_Programmatic.html
                                                          + ListItem2_Programmatic.html
                                                          + progress-indicator.html
                                                          + RoundRect.html
                                                          + RoundRect_Programmatic.html
                                                          + RoundRectDataList.html
                                                          + RoundRectDataList_Programmatic.html
                                                          + RoundRectList.html
                                                          + RoundRectList_Programmatic.html
                                                          + Switch.html
                                                          + Switch_Programmatic.html
                                                          + TabBar.html
                                                          + TabBar_Programmatic.html
                                                          + ToolBarButton.html
                                                          + ToolBarButton_Programmatic.html
                                                          + View.html
                                                          + View_Programmatic.html
                                                          + View2_Programmatic.html
                                                          + View3_Programmatic.html
                                                          + View-demo.html
                                                          +
                                                          + runTests.html
                                                          + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/module.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/module.js new file mode 100644 index 0000000..3a70a77 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/module.js @@ -0,0 +1,42 @@ +dojo.provide("dojox.mobile.tests.doh.module"); + +try{ + doh.registerUrl("dojox.mobile.tests.doh.Button", dojo.moduleUrl("dojox.mobile", "tests/doh/Button.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Button", dojo.moduleUrl("dojox.mobile", "tests/doh/Button_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.EdgeToEdgeCategory", dojo.moduleUrl("dojox.mobile", "tests/doh/EdgeToEdgeCategory.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Heading", dojo.moduleUrl("dojox.mobile", "tests/doh/Heading.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Heading", dojo.moduleUrl("dojox.mobile", "tests/doh/Heading2.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Heading", dojo.moduleUrl("dojox.mobile", "tests/doh/Heading_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Heading", dojo.moduleUrl("dojox.mobile", "tests/doh/Heading2_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.IconContainer", dojo.moduleUrl("dojox.mobile", "tests/doh/IconContainer.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.IconContainer", dojo.moduleUrl("dojox.mobile", "tests/doh/IconContainer2.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.IconContainer", dojo.moduleUrl("dojox.mobile", "tests/doh/IconContainer3.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.IconContainer", dojo.moduleUrl("dojox.mobile", "tests/doh/IconContainer_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.IconContainer", dojo.moduleUrl("dojox.mobile", "tests/doh/View.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.RoundRectList", dojo.moduleUrl("dojox.mobile", "tests/doh/RoundRect.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.ListItem", dojo.moduleUrl("dojox.mobile", "tests/doh/ListItem.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.ListItem", dojo.moduleUrl("dojox.mobile", "tests/doh/ListItem2.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.ListItem", dojo.moduleUrl("dojox.mobile", "tests/doh/ListItem_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.ListItem", dojo.moduleUrl("dojox.mobile", "tests/doh/ListItem2_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Progress-indicator", dojo.moduleUrl("dojox.mobile", "tests/doh/progress-indicator.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.RoundRect", dojo.moduleUrl("dojox.mobile", "tests/doh/RoundRect.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.RoundRect", dojo.moduleUrl("dojox.mobile", "tests/doh/RoundRect_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.RoundRectDataList", dojo.moduleUrl("dojox.mobile", "tests/doh/RoundRectDataList.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.RoundRectDataList", dojo.moduleUrl("dojox.mobile", "tests/doh/RoundRectDataList_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.RoundRectList", dojo.moduleUrl("dojox.mobile", "tests/doh/RoundRectList.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Switch", dojo.moduleUrl("dojox.mobile", "tests/doh/Switch.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.Switch", dojo.moduleUrl("dojox.mobile", "tests/doh/Switch_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.TabBar", dojo.moduleUrl("dojox.mobile", "tests/doh/TabBar.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.TabBar", dojo.moduleUrl("dojox.mobile", "tests/doh/TabBar_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.ToolBarButton", dojo.moduleUrl("dojox.mobile", "tests/doh/ToolBarButton.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.ToolBarButton", dojo.moduleUrl("dojox.mobile", "tests/doh/ToolBarButton_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.View", dojo.moduleUrl("dojox.mobile", "tests/doh/View.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.View", dojo.moduleUrl("dojox.mobile", "tests/doh/View_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.View", dojo.moduleUrl("dojox.mobile", "tests/doh/View2_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.View", dojo.moduleUrl("dojox.mobile", "tests/doh/View3_Programmatic.html"),999999); + doh.registerUrl("dojox.mobile.tests.doh.View", dojo.moduleUrl("dojox.mobile", "tests/doh/View-demo.html"),999999); +}catch(e){ + doh.debug(e); +} + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/progress-indicator.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/progress-indicator.html new file mode 100644 index 0000000..4ddf277 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/progress-indicator.html @@ -0,0 +1,45 @@ + + + + + + Progress Indicator + + + + + + + +
                                                          +
                                                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/runTests.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/runTests.html new file mode 100644 index 0000000..a6613ea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/runTests.html @@ -0,0 +1,9 @@ + + + + dojox.mobile Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/settings.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/settings.json new file mode 100644 index 0000000..7d53b60 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/settings.json @@ -0,0 +1,14 @@ +{ + "items" : [ + { "label" : "Wi-Fi", "icon" : "../images/i-icon-1.png", "moveTo": "wifi" }, + { "label" : "Brightness & Wallpaper", "icon" : "../images/i-icon-2.png", "moveTo": "bright" }, + { "label" : "Picture Frame", "icon" : "../images/i-icon-3.png", "moveTo": "picture" }, + { "label" : "General", "icon" : "../images/i-icon-4.png", "moveTo": "general", "selected": "true" }, + { "label" : "Mail, Contacts, Calendars", "icon" : "../images/i-icon-5.png", "moveTo": "wifi" }, + { "label" : "Safari", "icon" : "../images/i-icon-6.png", "moveTo": "bright" }, + { "label" : "iPod", "icon" : "../images/i-icon-7.png", "moveTo": "picture" }, + { "label" : "Video", "icon" : "../images/i-icon-8.png", "moveTo": "general" }, + { "label" : "Photos", "icon" : "../images/i-icon-9.png", "moveTo": "wifi" }, + { "label" : "Store", "icon" : "../images/i-icon-10.png", "moveTo": "bright" } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/topHeading_defect.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/topHeading_defect.html new file mode 100644 index 0000000..96037e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/doh/topHeading_defect.html @@ -0,0 +1,60 @@ + + + + + + Heading + + + + + + + + +
                                                          +

                                                          General

                                                          +
                                                          + +
                                                          +

                                                          Mobile Mashup

                                                          +

                                                          Spaces

                                                          +
                                                            +
                                                          • + u1space +
                                                          • +
                                                          • + u2space +
                                                          • +
                                                          • + Wi-Fi +
                                                          • +
                                                          • + VPN +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          u1space

                                                          +

                                                          Applications

                                                          +
                                                            +
                                                          • + Video +
                                                          • +
                                                          • + Maps +
                                                          • +
                                                          • + Phone Number +
                                                          • +
                                                          +
                                                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/fragment1.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/fragment1.html new file mode 100644 index 0000000..927b871 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/fragment1.html @@ -0,0 +1,3 @@ +
                                                          + HTML fragment example +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-image-thumb-view-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-image-thumb-view-assistant.js new file mode 100644 index 0000000..3fbdcda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-image-thumb-view-assistant.js @@ -0,0 +1,231 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("FlickrImageThumbViewAssistant", dojox.mobile.app.SceneAssistant, { + + apiKey: "8c6803164dbc395fb7131c9d54843627", + + setup: function(){ + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + this.handlePhotoLoad = dojo.hitch(this, this.handlePhotoLoad); + this.search = dojo.hitch(this, this.search); + this.resizeViewer = dojo.hitch(this, this.resizeViewer); + + this.textWidget = dijit.byId("searchTextThumbInput"); + + var viewer = this.viewer = dijit.byId("flickrImageThumbView"); + + // Set the parameter from which to retrieve the owner name + viewer.labelParam = "ownername"; + + var _this = this; + + this.connect(viewer, "onSelect", function(item, index){ + console.log("selected ", item, index); + + _this.controller.stageController.pushScene("flickr-image-view",{ + type: "data", + images: _this.urls, + index: index + }); + }); + + this.connect(this.textWidget, "onChange", function(value){ + if(!value || value.length == 0){ + _this.viewer.set("items", []); + return; + } + + if(!_this.timer){ + _this.timer = setTimeout(_this.search, 1000); + } + }); + + this.connect(dijit.byId("btnSmall"), "onClick", function(){ + _this.setThumbSize("small"); + }); + this.connect(dijit.byId("btnMedium"), "onClick", function(){ + _this.setThumbSize("medium"); + }); + this.connect(dijit.byId("btnLarge"), "onClick", function(){ + _this.setThumbSize("large"); + }); + + var resizeTimer; + // Listen to the resize event on the window to make + // the thumbnails fill the horizontal space + // This is fairly pointless for mobile, but makes it work + // better in desktop browsers + this.connect(window, "resize", function(){ + if(resizeTimer){ + clearTimeout(resizeTimer); + } + resizeTimer = setTimeout(_this.resizeViewer, 300); + }); + }, + + activate: function(options){ + + // If this is the first time this view is activated, then do the initial + // load of images + if (!this.dataType) { + + this.dataType = (options ? options.type : "interesting"); + + switch (this.dataType) { + case "interesting": + // Hide the search text box + dojo.style(this.textWidget.domNode, "display", "none"); + this.loadInteresting(); + break; + case "text": + dojo.style(this.textWidget.domNode, "visibility", "visible"); + this.loadText(this.textWidget.set("value")); + break; + case "tag": + // Another scene has passed in a list of images + // and an initial index + dojo.style(this.textWidget.domNode, "visibility", "visible"); + this.loadTags(this.textWidget.set("value")); + break; + default: + console.log("unknown type " + this.dataType, options); + } + } + }, + + setThumbSize: function(cls){ + dojo.removeClass(this.viewer.domNode, ["small", "medium", "large"]); + dojo.addClass(this.viewer.domNode, cls); + this.resizeViewer(); + }, + + resizeViewer: function(){ + this.viewer.resize(); + }, + + search: function(){ + if(this.timer){ + clearTimeout(this.timer); + this.timer = null; + } + + var searchText = this.textWidget.set("value"); + + if(!searchText || dojo.trim(searchText).length < 1){ + this.viewer.set("items", []); + + console.log("NOT SEARCHING"); + return; + } + + console.log("search", searchText); + switch(this.dataType){ + case "text": + this.loadText(searchText); + break; + case "tag": + // Another scene has passed in a list of images + // and an initial index + this.loadTags(searchText); + break; + } + }, + + loadInteresting: function(){ + console.log("loading interesting"); + + var url = "http://api.flickr.com/services/rest/?method=" + + "flickr.interestingness.getList"; + + var deferred = dojo.io.script.get({ + url: url, + content: { + api_key: this.apiKey, + format: "json", + per_page: 20 + }, + jsonp: "jsoncallback" + }); + deferred.addBoth(this.handlePhotoLoad); + }, + + loadText: function(text){ + console.log("loading text ", text); + + var url = "http://api.flickr.com/services/rest/?method=" + + "flickr.photos.search"; + + var deferred = dojo.io.script.get({ + url: url, + content: { + api_key: this.apiKey, + format: "json", + text: text, + extras: "owner_name", + per_page: 20 + }, + jsonp: "jsoncallback" + }); + deferred.addBoth(this.handlePhotoLoad); + }, + + loadTags: function(text){ + console.log("loading tags ", text); + + var url = "http://api.flickr.com/services/rest/?method=" + + "flickr.photos.search"; + + var deferred = dojo.io.script.get({ + url: url, + content: { + api_key: this.apiKey, + format: "json", + tags: text, + per_page: 20 + }, + jsonp: "jsoncallback" + }); + deferred.addBoth(this.handlePhotoLoad); + }, + + handlePhotoLoad: function(res){ + console.log("got photos", res); + if(res && res.photos && res.photos.photo){ + var images = this.images = res.photos.photo; + + var urls = []; + + var baseUrl; + + for(var i = 0; i < images.length; i++){ + baseUrl = "http://farm" + + images[i].farm + + ".static.flickr.com/" + + images[i].server + + "/" + + images[i].id + + "_" + + images[i].secret; + urls.push({ + large: baseUrl + ".jpg", + small: baseUrl + "_t.jpg", + thumb: baseUrl + "_s.jpg", + ownername: images[i].ownername, + title: images[i].title + }); + } + this.urls = urls; + this.index = 0; + this.viewer.set("selectedIndex", this.index); + + this.viewer.set("items", urls); + }else{ + this.viewer.set("items", []); + console.log("didn't get photos"); + } + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-image-view-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-image-view-assistant.js new file mode 100644 index 0000000..23ec791 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-image-view-assistant.js @@ -0,0 +1,165 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("FlickrImageViewAssistant", dojox.mobile.app.SceneAssistant, { + + apiKey: "8c6803164dbc395fb7131c9d54843627", + + setup: function(){ + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + var viewer = this.viewer = dijit.byId("flickrImageView"); + + var _this = this; + + this.handlePhotoLoad = dojo.hitch(this, this.handlePhotoLoad); + + var loadingDiv = this.controller.query(".loading")[0]; + + // When the first image loads, hide the loading indicator. + var loadConn = dojo.connect(viewer, "onLoad", function(type, url, isSmall){ + if(type == "center"){ + dojo.disconnect(loadConn); + dojo.destroy(loadingDiv); + loadingDiv = null; + } + }); + + var reportDiv = this.controller.query(".report")[0]; + + this.connect(viewer, "onChange", function(direction){ + _this.index += direction; + + // If we are not at the first image, set the leftUrl attribute + if(_this.index > 0){ + viewer.set("leftUrl", _this.urls[_this.index - 1]); + } + + // If we are not at the last image, set the rightUrl attribute + if(_this.index < _this.urls.length - 1){ + viewer.set("rightUrl", _this.urls[_this.index + 1]); + } + + reportDiv.innerHTML = + (_this.index + 1) + " of " + _this.urls.length + + " " + _this.urls[_this.index].title; + }); + }, + + activate: function(options){ + + this.dataType = (options && options.type ? options.type : "interesting"); + console.log("In main assistant activate, dataType = ", this.dataType, options); + + switch(this.dataType){ + case "interesting": + this.loadInteresting(); + break; + case "group": + this.loadGroup(options); + break; + case "data": + // Another scene has passed in a list of images + // and an initial index + this.useData(options.images, options.index || 0); + break; + + } + }, + + useData: function(images, startIndex){ + this.urls = images; + this.index = Math.min(images.length - 1, Math.max(0, startIndex)); + + if (this.index > 0) { + this.viewer.set("leftUrl", images[this.index - 1]); + } + this.viewer.set("centerUrl", images[this.index]); + + if (this.index < images.length) { + this.viewer.set("rightUrl", images[this.index + 1]); + } + }, + + loadInteresting: function(){ + console.log("loading interesting"); + + var url = "http://api.flickr.com/services/rest/?method=" + + "flickr.interestingness.getList"; + + + var deferred = dojo.io.script.get({ + url: url, + content: { + api_key: this.apiKey, + format: "json" + }, + jsonp: "jsoncallback" + }); + deferred.addBoth(this.handlePhotoLoad); + }, + + loadGroup: function(groupData){ + console.log("loading group ", groupData); + + var url = "http://api.flickr.com/services/rest/?method=" + + "flickr.groups.pools.getPhotos"; + +// "http://api.flickr.com/services/rest/?method=flickr.groups.pools.getPhotos" +// + "&api_key=" + lib.API_KEY +// + "&group_id=" + group.id +// + "&extras=owner_name" +// + "&per_page=" + (perPage || 10) +// + "&format=json&nojsoncallback=1" + + var deferred = dojo.io.script.get({ + url: url, + content: { + api_key: this.apiKey, + format: "json", + group_id: groupData.nsid, + per_page: 20 + }, + jsonp: "jsoncallback" + }); + deferred.addBoth(this.handlePhotoLoad); + }, + + + + handlePhotoLoad: function(res){ + + if(res && res.photos && res.photos.photo){ + var images = res.photos.photo; + + var urls = []; + + var baseUrl; + + for(var i = 0; i < images.length; i++){ + baseUrl = "http://farm" + + images[i].farm + + ".static.flickr.com/" + + images[i].server + + "/" + + images[i].id + + "_" + + images[i].secret; + urls.push({ + large: baseUrl + "_m.jpg", + small: baseUrl + "_t.jpg", + title: images[i].title + }); + } + this.urls = urls; + this.index = 0; + + this.viewer.set("centerUrl", urls[0]); + this.viewer.set("rightUrl", urls[1]); + }else{ + console.log("didn't get photos"); + } + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-group-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-group-assistant.js new file mode 100644 index 0000000..6a8fccc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-group-assistant.js @@ -0,0 +1,122 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("FlickrSearchGroupAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + // This api key should not be reused. You should get your own + // free api key from Flickr. + this.apiKey = "8c6803164dbc395fb7131c9d54843627"; + + this.listWidget = dijit.byId("searchList"); + this.textWidget = dijit.byId("searchTextInput"); + + this.listWidget.set("items", []); + + var _this = this; + + this.search = dojo.hitch(this, this.search); + this.handleGroupResults = dojo.hitch(this, this.handleGroupResults); + + // Listen for changes to the text widget. + // To ensure that onChange is called on every letter change, + // intermediateChanges is set to true on the widget + this.connect(this.textWidget, "onChange", function(value){ + // console.log("search value = ", value); + + if(!value || value.length == 0){ + _this.listWidget.set("items", []); + return; + } + + if(!_this.timer){ + _this.timer = setTimeout(_this.search, 300); + } + }); + + this.connect(this.listWidget, "onSelect", function(item, index, node){ + console.log("select", arguments); + + _this.controller.stageController.pushScene("flickr-image-view", + dojo.mixin({type: "group"}, item)); + }); + }, + + activate: function(searchType){ + + this.searchType = searchType; + + // Set the title of the screen based on the type of the search + if(searchType){ + var sceneHeader = dijit.byId("searchHeader"); + switch(searchType){ + case "group": + sceneHeader.setLabel("Search Flickr Groups"); + break; + case "user": + sceneHeader.setLabel("Search Flickr People"); + break; + case "tag": + sceneHeader.setLabel("Search Flickr Tags"); + break; + } + } + // Focus in the search text input + this.textWidget.focus(); + + if(this.textWidget.set("value")){ + this.search(); + } + }, + + search: function(){ + // summary: + // Perform a search. Switch between group, user and tag search + + if(this.timer){ + clearTimeout(this.timer); + this.timer = null; + } + + var searchText = this.textWidget.set("value"); + + if(!searchText || dojo.trim(searchText).length < 1){ + this.listWidget.set("items", []); + + console.log("NOT SEARCHING"); + return; + } + + var url = "http://api.flickr.com/services/rest/?method=flickr.groups.search"; + + var deferred = dojo.io.script.get({ + url: url, + content: { + api_key: this.apiKey, + format: "json", + text: searchText, + perPage: 10 + }, + jsonp: "jsoncallback" + }); + deferred.addBoth(this.handleGroupResults); + }, + + handleGroupResults: function(res){ + var groups; + if(res && res.groups && res.groups.group){ + groups = res.groups.group; + + for(var i = 0; i < groups.length; i++){ + groups[i].label = groups[i].name; + } + }else{ + groups = []; + } + this.listWidget.set("items", groups); + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-selection-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-selection-assistant.js new file mode 100644 index 0000000..e7e5624 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-selection-assistant.js @@ -0,0 +1,53 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("FlickrSearchSelectionAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + var scenes = [ + { + label: "Interesting Photos", + scene: "flickr-image-view", + type: "interesting" + }, + { + label: "Search for Group", + scene: "flickr-search-group", + type: "group" + }, + { + label: "Search for Text", + scene: "flickr-image-thumb-view", + type: "text" + }, + { + label: "Search Tags", + scene: "flickr-image-thumb-view", + type: "tag" + } + ]; + + var listWidget = dijit.byId("browseFlickrList"); + listWidget.set("items", scenes); + + var _this = this; + + dojo.connect(listWidget, "onSelect", function(data, index, rowNode){ + // Push the chosen scene, and pass in the data type, if any. + // The serach scene uses the "type" to determine + // what to search for + _this.controller.stageController.pushScene(data.scene, { + type: data.type + }); + }); + }, + + activate: function(){ + + + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-text-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-text-assistant.js new file mode 100644 index 0000000..000b0c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/flickr-search-text-assistant.js @@ -0,0 +1,118 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("FlickrSearchTextAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + // This api key should not be reused. You should get your own + // free api key from Flickr. + this.apiKey = "8c6803164dbc395fb7131c9d54843627"; + + this.listWidget = dijit.byId("searchList"); + this.textWidget = dijit.byId("searchTextInput"); + + this.listWidget.set("items", []); + + var _this = this; + + this.search = dojo.hitch(this, this.search); + this.handleGroupResults = dojo.hitch(this, this.handleGroupResults); + + // Listen for changes to the text widget. + // To ensure that onChange is called on every letter change, + // intermediateChanges is set to true on the widget + this.connect(this.textWidget, "onChange", function(value){ + // console.log("search value = ", value); + + if(!value || value.length == 0){ + _this.listWidget.set("items", []); + return; + } + + if(!_this.timer){ + _this.timer = setTimeout(_this.search, 300); + } + }); + + this.connect(this.listWidget, "onSelect", function(item, index, node){ + console.log("select", arguments); + + _this.controller.stageController.pushScene("flickr-image-view", + dojo.mixin({type: "group"}, item)); + }); + }, + + activate: function(searchType){ + + this.searchType = searchType; + + // Set the title of the screen based on the type of the search + if(searchType){ + var sceneHeader = dijit.byId("searchHeader"); + switch(searchType){ + case "group": + sceneHeader.setLabel("Search Flickr Groups"); + break; + case "user": + sceneHeader.setLabel("Search Flickr People"); + break; + case "tag": + sceneHeader.setLabel("Search Flickr Tags"); + break; + } + } + // Focus in the search text input + dijit.byId("searchTextInput").focus(); + }, + + search: function(){ + // summary: + // Perform a search. Switch between group, user and tag search + + if(this.timer){ + clearTimeout(this.timer); + this.timer = null; + } + + var searchText = this.textWidget.set("value"); + + if(!searchText || dojo.trim(searchText).length < 1){ + this.listWidget.set("items", []); + + console.log("NOT SEARCHING"); + return; + } + + var url = "http://api.flickr.com/services/rest/?method=flickr.groups.search"; + + var deferred = dojo.io.script.get({ + url: url, + content: { + api_key: this.apiKey, + format: "json", + text: searchText, + perPage: 10 + }, + jsonp: "jsoncallback" + }); + deferred.addBoth(this.handleGroupResults); + }, + + handleGroupResults: function(res){ + var groups; + if(res && res.groups && res.groups.group){ + groups = res.groups.group; + + for(var i = 0; i < groups.length; i++){ + groups[i].label = groups[i].name; + } + }else{ + groups = []; + } + this.listWidget.set("items", groups); + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/image-view-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/image-view-assistant.js new file mode 100644 index 0000000..623e48f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/image-view-assistant.js @@ -0,0 +1,91 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("ImageViewAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + console.log("In main assistant setup"); + + var images = [ + "images/chris1_lg.jpg", + "images/chris2_lg.jpg", + "images/imageHoriz.jpg", + "images/imageVert.jpg", + "images/square.jpg" + ]; + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + var viewer = this.viewer = dijit.byId("imageView"); + + this.viewer.set("leftUrl", images[0]); + this.viewer.set("centerUrl", images[1]); + this.viewer.set("rightUrl", images[2]); + + dojo.connect(dijit.byId("decZoom"), "onClick", function(){ + viewer.set("zoom", viewer.get("zoom") - 0.1); + }); + dojo.connect(dijit.byId("incZoom"), "onClick", function(){ + viewer.set("zoom", viewer.get("zoom") + 0.1); + }); + dojo.connect(dijit.byId("resetZoom"), "onClick", function(){ + viewer.set("zoom", 1); + }); + dojo.connect(dijit.byId("toggleZoom"), "onClick", function(){ + if(viewer.get("zoom") > 1){ + console.log("setting animatedZoom to 1"); + viewer.set("animatedZoom", 1); + }else{ + console.log("setting animatedZoom to 2"); + viewer.set("animatedZoom", 3); + } + }); + dojo.connect(dijit.byId("panLeft"), "onClick", function(){ + viewer.set("zoomCenter", { + x: viewer.get("zoomCenterX") - 20, + y: viewer.get("zoomCenterY") + }); + }); + dojo.connect(dijit.byId("panRight"), "onClick", function(){ + viewer.set("zoomCenter", { + x: viewer.get("zoomCenterX") + 20, + y: viewer.get("zoomCenterY") + }); + }); + dojo.connect(dijit.byId("panUp"), "onClick", function(){ + viewer.set("zoomCenter", { + x: viewer.get("zoomCenterX"), + y: viewer.get("zoomCenterY") - 20 + }); + }); + dojo.connect(dijit.byId("panDown"), "onClick", function(){ + viewer.set("zoomCenter", { + x: viewer.get("zoomCenterX"), + y: viewer.get("zoomCenterY") + 20 + }); + }); + + var index = 1; + + dojo.connect(viewer, "onChange", function(direction){ + index += direction; + + console.log("Index = " + index); + + if(index > 0){ + viewer.set("leftUrl", images[index - 1]); + } + if(index < images.length - 1){ + viewer.set("rightUrl", images[index + 1]); + } + }); + + }, + + activate: function(){ + console.log("In main assistant activate"); + + + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/main-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/main-assistant.js new file mode 100644 index 0000000..cd7e9fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/assistants/main-assistant.js @@ -0,0 +1,39 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("MainAssistant", dojox.mobile.app.SceneAssistant, { + setup: function(){ + console.log("In main assistant setup"); + + this.controller.parse(); + + var scenes = [ + { + label: "Simple ImageView Test", + scene: "image-view" + }, + { + label: "Flickr ImageView Test", + scene: "flickr-image-view" + }, + { + label: "Browse Flickr", + scene: "flickr-search-selection" + } + ]; + + var listWidget = dijit.byId("listWidget"); + listWidget.set("items", scenes); + + var _this = this; + + dojo.connect(listWidget, "onSelect", function(data, index, rowNode){ + _this.controller.stageController.pushScene(data.scene); + }); + }, + + activate: function(){ + console.log("In main assistant activate"); + + + } +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-image-thumb-view/flickr-image-thumb-view-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-image-thumb-view/flickr-image-thumb-view-scene.html new file mode 100644 index 0000000..26adb6e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-image-thumb-view/flickr-image-thumb-view-scene.html @@ -0,0 +1,19 @@ +

                                                          + Flickr ImageThumbView +

                                                          + + + + +
                                                          +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-image-view/flickr-image-view-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-image-view/flickr-image-view-scene.html new file mode 100644 index 0000000..a74e241 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-image-view/flickr-image-view-scene.html @@ -0,0 +1,10 @@ +

                                                          + Flickr ImageView +

                                                          +
                                                          +
                                                          +
                                                          Loading Flickr Data
                                                          +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/emptyTemplate.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/emptyTemplate.html new file mode 100644 index 0000000..322d8e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/emptyTemplate.html @@ -0,0 +1,3 @@ +
                                                          + Nothing Found +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/flickr-search-group-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/flickr-search-group-scene.html new file mode 100644 index 0000000..6951def --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/flickr-search-group-scene.html @@ -0,0 +1,19 @@ +

                                                          + Search Flickr +

                                                          + + +
                                                          +
                                                          +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/rowTemplate.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/rowTemplate.html new file mode 100644 index 0000000..ca07332 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-group/rowTemplate.html @@ -0,0 +1,8 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-selection/flickr-search-selection-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-selection/flickr-search-selection-scene.html new file mode 100644 index 0000000..58a16c0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-selection/flickr-search-selection-scene.html @@ -0,0 +1,7 @@ +

                                                          + Browse Flickr +

                                                          +
                                                          +
                                                          +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-selection/rowTemplate.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-selection/rowTemplate.html new file mode 100644 index 0000000..ca07332 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-selection/rowTemplate.html @@ -0,0 +1,8 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/emptyTemplate.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/emptyTemplate.html new file mode 100644 index 0000000..322d8e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/emptyTemplate.html @@ -0,0 +1,3 @@ +
                                                          + Nothing Found +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/flickr-search-group-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/flickr-search-group-scene.html new file mode 100644 index 0000000..abb1d64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/flickr-search-group-scene.html @@ -0,0 +1,19 @@ +

                                                          + Search Flickr +

                                                          + + +
                                                          +
                                                          +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/rowTemplate.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/rowTemplate.html new file mode 100644 index 0000000..1483081 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/flickr-search-text/rowTemplate.html @@ -0,0 +1,15 @@ +
                                                          + + + + + + +
                                                          + ${label} + + ${buttonLabel1} + + ${buttonLabel2} +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/image-view/image-view-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/image-view/image-view-scene.html new file mode 100644 index 0000000..51a655f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/image-view/image-view-scene.html @@ -0,0 +1,23 @@ +

                                                          + ImageView Widget +

                                                          + +
                                                          +
                                                          +
                                                          + Zoom + + + + +
                                                          +
                                                          + Pan + + + + +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/main/main-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/main/main-scene.html new file mode 100644 index 0000000..98300dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/main/main-scene.html @@ -0,0 +1,6 @@ +

                                                          Choose Scene

                                                          + +
                                                          +
                                                          +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/main/rowTemplate.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/main/rowTemplate.html new file mode 100644 index 0000000..ca07332 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/app/views/main/rowTemplate.html @@ -0,0 +1,8 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/chris1_lg.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/chris1_lg.jpg new file mode 100755 index 0000000..8999f0a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/chris1_lg.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/chris2_lg.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/chris2_lg.jpg new file mode 100755 index 0000000..fca25d3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/chris2_lg.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/imageHoriz.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/imageHoriz.jpg new file mode 100755 index 0000000..3948416 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/imageHoriz.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/imageVert.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/imageVert.jpg new file mode 100755 index 0000000..1652338 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/imageVert.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/square.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/square.jpg new file mode 100755 index 0000000..f8b6761 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/images/square.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/index.html new file mode 100644 index 0000000..b4c8e04 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/styles/styles.css b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/styles/styles.css new file mode 100644 index 0000000..2e64dc8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/styles/styles.css @@ -0,0 +1,13 @@ +.loading { + position: absolute; + top: 200px; + left: 50px; + font-size: larger; + color: blue; +} + +.fullWidthInput { + padding-left: 10px; + padding-right: 10px; + width: 100%; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/view-resources.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/view-resources.json new file mode 100644 index 0000000..e79a3a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/imageControlsApp/view-resources.json @@ -0,0 +1,14 @@ +[ + { + scene: "flickr-image-thumb-view", + module: "dojo.io.script" + }, + { + scene: "flickr-image-view", + module: "dojo.io.script" + }, + { + scene: "flickr-search-group", + module: "dojo.io.script" + } +] diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-1-41x41.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-1-41x41.png new file mode 100755 index 0000000..0e94b75 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-1-41x41.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-1.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-1.png new file mode 100755 index 0000000..5f28394 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-10.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-10.png new file mode 100644 index 0000000..b3df995 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-11.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-11.png new file mode 100644 index 0000000..307b8e3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-11.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-12.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-12.png new file mode 100644 index 0000000..425cadb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-12.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-13.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-13.png new file mode 100644 index 0000000..7244dbe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-13.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-14.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-14.png new file mode 100644 index 0000000..c8afcec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-14.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-15.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-15.png new file mode 100644 index 0000000..49812a3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-15.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-16.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-16.png new file mode 100644 index 0000000..8208beb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-16.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-17.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-17.png new file mode 100644 index 0000000..533870e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-17.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-18.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-18.png new file mode 100644 index 0000000..d52419a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-18.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-2-41x41.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-2-41x41.png new file mode 100755 index 0000000..df8aaaf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-2-41x41.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-2.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-2.png new file mode 100755 index 0000000..c457062 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-3.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-3.png new file mode 100755 index 0000000..dc3941f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-4.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-4.png new file mode 100755 index 0000000..c7df122 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-all.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-all.png new file mode 100644 index 0000000..d779606 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon-all.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon1.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon1.png new file mode 100644 index 0000000..2bcf7c2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon10.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon10.png new file mode 100644 index 0000000..7d6ffbe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon2.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon2.png new file mode 100644 index 0000000..ce97095 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon3.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon3.png new file mode 100644 index 0000000..2cdd217 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon4.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon4.png new file mode 100644 index 0000000..510e0c9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon5.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon5.png new file mode 100644 index 0000000..7334b1c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon6.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon6.png new file mode 100644 index 0000000..4f82cd7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon7.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon7.png new file mode 100644 index 0000000..c92de35 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon8.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon8.png new file mode 100644 index 0000000..2d0820c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon9.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon9.png new file mode 100644 index 0000000..b26453f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/a-icon9.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-1.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-1.png new file mode 100644 index 0000000..e6c072c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-2.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-2.png new file mode 100644 index 0000000..1252683 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-3.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-3.png new file mode 100644 index 0000000..0d239a8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-4.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-4.png new file mode 100644 index 0000000..16eb0d7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-5.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-5.png new file mode 100644 index 0000000..38e69cc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-6.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-6.png new file mode 100644 index 0000000..04bf53c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-7.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-7.png new file mode 100644 index 0000000..0a92e0c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-8.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-8.png new file mode 100644 index 0000000..9beadfe Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-app-icon-8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-1.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-1.png new file mode 100644 index 0000000..3dee072 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-2.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-2.png new file mode 100644 index 0000000..4b5ab9c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-3.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-3.png new file mode 100644 index 0000000..bfbf682 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-4.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-4.png new file mode 100644 index 0000000..18e26a6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-5.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-5.png new file mode 100644 index 0000000..52befc8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-6.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-6.png new file mode 100644 index 0000000..59ed1d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-7.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-7.png new file mode 100644 index 0000000..026e3f0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-8.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-8.png new file mode 100644 index 0000000..f7190f4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/b-icon-8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/chart.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/chart.png new file mode 100644 index 0000000..3887ba8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/chart.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/checkboxRadioButtonStates.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/checkboxRadioButtonStates.png new file mode 100644 index 0000000..2d06a82 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/checkboxRadioButtonStates.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish1.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish1.jpg new file mode 100644 index 0000000..2b147ef Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish2.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish2.jpg new file mode 100644 index 0000000..32cac74 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish3.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish3.jpg new file mode 100644 index 0000000..d57cc3e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish4.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish4.jpg new file mode 100644 index 0000000..342569c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish5.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish5.jpg new file mode 100644 index 0000000..ab97da6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish6.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish6.jpg new file mode 100644 index 0000000..c954329 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish7.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish7.jpg new file mode 100644 index 0000000..ce51f3a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish8.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish8.jpg new file mode 100644 index 0000000..73a4d6c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish9.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish9.jpg new file mode 100644 index 0000000..4cc815c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/dish9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass1.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass1.jpg new file mode 100644 index 0000000..65edf8d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass10.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass10.jpg new file mode 100644 index 0000000..be890a2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass11.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass11.jpg new file mode 100644 index 0000000..c51a991 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass11.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass12.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass12.jpg new file mode 100644 index 0000000..0d03c6b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass12.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass13.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass13.jpg new file mode 100644 index 0000000..afa1ab6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass13.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass14.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass14.jpg new file mode 100644 index 0000000..9b3f904 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass14.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass15.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass15.jpg new file mode 100644 index 0000000..6ca4e4c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass15.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass16.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass16.jpg new file mode 100644 index 0000000..e695221 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass16.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass2.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass2.jpg new file mode 100644 index 0000000..2ff3476 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass3.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass3.jpg new file mode 100644 index 0000000..eebaf31 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass4.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass4.jpg new file mode 100644 index 0000000..c1e34a1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass5.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass5.jpg new file mode 100644 index 0000000..30520c4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass6.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass6.jpg new file mode 100644 index 0000000..444f9f4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass7.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass7.jpg new file mode 100644 index 0000000..1672ab2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass8.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass8.jpg new file mode 100644 index 0000000..a4d1e4d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass9.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass9.jpg new file mode 100644 index 0000000..ff98ce0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/glass9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-1.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-1.png new file mode 100755 index 0000000..8cbf494 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-10.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-10.png new file mode 100755 index 0000000..65a7909 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-2.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-2.png new file mode 100755 index 0000000..1965b3e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-3.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-3.png new file mode 100755 index 0000000..3450131 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-4.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-4.png new file mode 100755 index 0000000..403990b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-5.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-5.png new file mode 100755 index 0000000..afd1199 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-6.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-6.png new file mode 100755 index 0000000..24d141b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-7.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-7.png new file mode 100755 index 0000000..48b239f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-8.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-8.png new file mode 100755 index 0000000..0880428 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-9.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-9.png new file mode 100755 index 0000000..e709a42 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-9.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-all.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-all.png new file mode 100755 index 0000000..d891dbd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/i-icon-all.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon-1.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon-1.png new file mode 100755 index 0000000..26dde5d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon-all.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon-all.png new file mode 100644 index 0000000..e3ad155 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon-all.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon1.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon1.png new file mode 100644 index 0000000..d1e98c8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon10.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon10.png new file mode 100644 index 0000000..fad8480 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon2.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon2.png new file mode 100644 index 0000000..018801b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon3.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon3.png new file mode 100644 index 0000000..f393f2c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon4.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon4.png new file mode 100644 index 0000000..8137de5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon4.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon5.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon5.png new file mode 100644 index 0000000..6a32983 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon5.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon6.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon6.png new file mode 100644 index 0000000..ee0425f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon6.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon7.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon7.png new file mode 100644 index 0000000..b6ee2eb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon7.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon8.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon8.png new file mode 100644 index 0000000..bc7870d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon8.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon9.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon9.png new file mode 100644 index 0000000..ad2a5b6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/icon9.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/not-images.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/not-images.png new file mode 100755 index 0000000..7aee19a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/not-images.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic1.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic1.jpg new file mode 100644 index 0000000..a8ef25f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic10.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic10.jpg new file mode 100644 index 0000000..eed3321 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic2.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic2.jpg new file mode 100644 index 0000000..5998cec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic3.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic3.jpg new file mode 100644 index 0000000..10c593b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic4.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic4.jpg new file mode 100644 index 0000000..7abbaa9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic5.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic5.jpg new file mode 100644 index 0000000..7c02ed7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic6.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic6.jpg new file mode 100644 index 0000000..a3045f2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic7.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic7.jpg new file mode 100644 index 0000000..c182569 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic8.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic8.jpg new file mode 100644 index 0000000..d83c21d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic9.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic9.jpg new file mode 100644 index 0000000..663ae58 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/pic9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/red-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/red-button-bg.png new file mode 100755 index 0000000..5749018 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/red-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/red-button-sel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/red-button-sel-bg.png new file mode 100755 index 0000000..c5ba62a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/red-button-sel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell1.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell1.jpg new file mode 100644 index 0000000..7f236d3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell10.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell10.jpg new file mode 100644 index 0000000..a4ddf98 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell11.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell11.jpg new file mode 100644 index 0000000..ff212e5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell11.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell2.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell2.jpg new file mode 100644 index 0000000..8a13ade Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell3.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell3.jpg new file mode 100644 index 0000000..7e88f8c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell4.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell4.jpg new file mode 100644 index 0000000..04e70d4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell5.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell5.jpg new file mode 100644 index 0000000..c252082 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell6.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell6.jpg new file mode 100644 index 0000000..92a19eb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell7.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell7.jpg new file mode 100644 index 0000000..4750752 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell8.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell8.jpg new file mode 100644 index 0000000..cc568f3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell9.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell9.jpg new file mode 100644 index 0000000..9b5b029 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/shell9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone1.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone1.jpg new file mode 100644 index 0000000..a012158 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone1.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone10.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone10.jpg new file mode 100644 index 0000000..b25e375 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone10.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone2.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone2.jpg new file mode 100644 index 0000000..596b64a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone2.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone3.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone3.jpg new file mode 100644 index 0000000..8c2424b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone3.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone4.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone4.jpg new file mode 100644 index 0000000..bab8eac Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone4.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone5.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone5.jpg new file mode 100644 index 0000000..3a65c85 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone5.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone6.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone6.jpg new file mode 100644 index 0000000..c1cd4aa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone6.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone7.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone7.jpg new file mode 100644 index 0000000..2d20a5f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone7.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone8.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone8.jpg new file mode 100644 index 0000000..03c2fe4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone8.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone9.jpg b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone9.jpg new file mode 100644 index 0000000..6b8d588 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/stone9.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10.png new file mode 100644 index 0000000..5266c1e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10h.png new file mode 100644 index 0000000..9b12683 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10w.png new file mode 100644 index 0000000..fd8425a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-10w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11.png new file mode 100644 index 0000000..57740eb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11h.png new file mode 100644 index 0000000..0f3592d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11w.png new file mode 100644 index 0000000..4af4d0d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-11w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12.png new file mode 100644 index 0000000..8b6dc5f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12h.png new file mode 100644 index 0000000..e230a38 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12w.png new file mode 100644 index 0000000..ebb2e0e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-12w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13.png new file mode 100644 index 0000000..57f21cc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13h.png new file mode 100644 index 0000000..ec87db0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13w.png new file mode 100644 index 0000000..44dcf83 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-13w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14.png new file mode 100644 index 0000000..cea484a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14h.png new file mode 100644 index 0000000..0e602c4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14w.png new file mode 100644 index 0000000..16f1e52 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-14w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15.png new file mode 100644 index 0000000..09368cf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15h.png new file mode 100644 index 0000000..bd0daee Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15w.png new file mode 100644 index 0000000..78c5bc3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-15w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16.png new file mode 100644 index 0000000..ee58ce6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16h.png new file mode 100644 index 0000000..1ca2c06 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16w.png new file mode 100644 index 0000000..810afe8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-16w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17.png new file mode 100644 index 0000000..0387855 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17h.png new file mode 100644 index 0000000..06c894e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17w.png new file mode 100644 index 0000000..26125d6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-17w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18.png new file mode 100644 index 0000000..ac8fa6d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18h.png new file mode 100644 index 0000000..6fa5a1f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18w.png new file mode 100644 index 0000000..fdd1cc7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-18w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19.png new file mode 100644 index 0000000..584cc2a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19h.png new file mode 100644 index 0000000..d1b2c74 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19w.png new file mode 100644 index 0000000..be2ddbd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-19w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20.png new file mode 100644 index 0000000..7c130d3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20h.png new file mode 100644 index 0000000..84bc0a1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20w.png new file mode 100644 index 0000000..091f32a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-20w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21.png new file mode 100644 index 0000000..5a6b99a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21h.png new file mode 100644 index 0000000..780a3f8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21w.png new file mode 100644 index 0000000..33622a0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-21w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22.png new file mode 100644 index 0000000..7614809 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22h.png new file mode 100644 index 0000000..e841921 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22w.png new file mode 100644 index 0000000..684d304 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-22w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23.png new file mode 100644 index 0000000..0bf828f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23h.png new file mode 100644 index 0000000..d532855 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23w.png new file mode 100644 index 0000000..7625c89 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-23w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24.png new file mode 100644 index 0000000..ad1de05 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24h.png new file mode 100644 index 0000000..da40442 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24w.png new file mode 100644 index 0000000..cb6bb7e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-24w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25.png new file mode 100644 index 0000000..82f39df Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25h.png new file mode 100644 index 0000000..301bebb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25w.png new file mode 100644 index 0000000..65d4af6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-25w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26.png new file mode 100644 index 0000000..4e65746 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26h.png new file mode 100644 index 0000000..5fe3e8c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26w.png new file mode 100644 index 0000000..2792120 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-26w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27.png new file mode 100644 index 0000000..01ac2f9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27h.png new file mode 100644 index 0000000..dfedeeb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27w.png new file mode 100644 index 0000000..b3b9bca Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-27w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28.png new file mode 100644 index 0000000..09acadf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28h.png new file mode 100644 index 0000000..d4601bc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28w.png new file mode 100644 index 0000000..29368f1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-28w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29.png new file mode 100644 index 0000000..e6f2128 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29h.png new file mode 100644 index 0000000..5ff3418 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29w.png new file mode 100644 index 0000000..78819b9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-29w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30.png new file mode 100644 index 0000000..dcb1414 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30h.png new file mode 100644 index 0000000..d9dbb31 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30w.png new file mode 100644 index 0000000..1cd0a1d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-30w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31.png new file mode 100644 index 0000000..417b0c9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31h.png new file mode 100644 index 0000000..2641318 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31w.png new file mode 100644 index 0000000..8c9ffef Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-31w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32.png new file mode 100644 index 0000000..dae8de1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32h.png new file mode 100644 index 0000000..b07f972 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32w.png new file mode 100644 index 0000000..aa5f3dd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-32w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33.png new file mode 100644 index 0000000..f6f86f4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33h.png new file mode 100644 index 0000000..2bdee59 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33w.png new file mode 100644 index 0000000..e92f8c7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-33w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34.png new file mode 100644 index 0000000..b43b714 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34h.png new file mode 100644 index 0000000..1edafe5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34w.png new file mode 100644 index 0000000..20bc3ae Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-34w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35.png new file mode 100644 index 0000000..f94c3d3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35h.png new file mode 100644 index 0000000..5c08ea9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35w.png new file mode 100644 index 0000000..5b49c33 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-35w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36.png new file mode 100644 index 0000000..b142d65 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36h.png new file mode 100644 index 0000000..75fe56d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36w.png new file mode 100644 index 0000000..0df405b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-36w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37.png new file mode 100644 index 0000000..929181b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37h.png new file mode 100644 index 0000000..ad3b017 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37w.png new file mode 100644 index 0000000..c607d72 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-37w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38.png new file mode 100644 index 0000000..d4d89c0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38h.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38h.png new file mode 100644 index 0000000..cc176d4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38h.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38w.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38w.png new file mode 100644 index 0000000..1e8e370 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icon-38w.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icons.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icons.png new file mode 100644 index 0000000..93f50d0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/tab-icons.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/widget-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/widget-bg.png new file mode 100755 index 0000000..144dd00 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/images/widget-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/index.html new file mode 100644 index 0000000..aa18e7a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/index.html @@ -0,0 +1,187 @@ + + + + + dojox.mobile + + + test_iPhone-Animation.html
                                                          + test_iPhone-Button.html
                                                          + test_iPhone-ButtonList.html
                                                          + test_iPhone-EdgeToEdge.html
                                                          + test_iPhone-EdgeToEdgeCategory.html
                                                          + test_iPhone-Heading.html
                                                          + test_iPhone-Icon.html
                                                          + test_iPhone-IconMulti.html
                                                          + test_iPhone-IconSingle.html
                                                          + test_iPhone-IconSingleBelow.html
                                                          + test_iPhone-Icon-sprite.html
                                                          + test_iPhone-ResultList.html
                                                          + test_iPhone-RoundRect.html
                                                          + test_iPhone-RoundRectList.html
                                                          + test_iPhone-Settings.html
                                                          + test_iPhone-Switch.html
                                                          + test_iPhone-TabBar.html
                                                          + test_iPhone-TabBar-seg.html
                                                          + test_iPhone-TabBar-seg-grouped.html
                                                          + test_iPhone-TabBar-seg-grouped-scroll.html
                                                          + test_iPhone-VariableHeightList.html
                                                          + test_Switch-setter.html
                                                          + test_FormControls.html
                                                          + test_RoundRectList-check.html
                                                          + test_EdgeToEdgeList-check.html
                                                          + test_list-domButtons.html
                                                          +
                                                          + test_Android-ButtonList.html
                                                          + test_Android-EdgeToEdge.html
                                                          + test_Android-EdgeToEdgeCategory.html
                                                          + test_Android-Heading.html
                                                          + test_Android-Icon.html
                                                          + test_Android-RoundRectList.html
                                                          + test_Android-Settings.html
                                                          + test_Android-Switch.html
                                                          + test_Android-TabBar.html
                                                          + test_Android-VariableHeightList.html
                                                          + test_Switch-setter.html
                                                          + test_FormControls.html
                                                          + test_RoundRectList-check.html
                                                          + test_EdgeToEdgeList-check.html
                                                          + test_list-domButtons.html
                                                          +
                                                          + test_BlackBerry-EdgeToEdgeList.html
                                                          + test_BlackBerry-SwapView.html
                                                          + test_BlackBerry-Heading.html
                                                          + test_BlackBerry-IconContainer.html
                                                          + test_BlackBerry-RoundRectList.html
                                                          + test_BlackBerry-ScrollableView.html
                                                          + test_BlackBerry-Settings.html
                                                          + test_BlackBerry-Switch.html
                                                          + test_BlackBerry-TabBar.html
                                                          + test_BlackBerry-VariableHeightList.html
                                                          + test_Switch-setter.html
                                                          + test_FormControls.html
                                                          + test_RoundRectList-check.html
                                                          + test_EdgeToEdgeList-check.html
                                                          + test_list-domButtons.html
                                                          +
                                                          + test_Custom-Settings.html
                                                          + test_Custom-Heading.html
                                                          + test_Custom-EdgeToEdgeList.html
                                                          + test_Custom-RoundRectList.html
                                                          + test_Custom-list-domButtons.html
                                                          + test_Custom-css-sprite.html
                                                          + test_Custom-Icon.html
                                                          + test_Custom-FormControls.html
                                                          + test_Custom-TabBar.html
                                                          + test_Custom-Tooltip.html
                                                          + test_Custom-Opener.html
                                                          +

                                                          + test_iPhone-ScrollableView-demo.html
                                                          + test_iPhone-ScrollableView-demo-long.html
                                                          + test_iPhone-ScrollableView-v.html
                                                          + test_iPhone-ScrollableView-v-vh.html
                                                          + test_iPhone-ScrollableView-v-vh-vf.html
                                                          + test_iPhone-ScrollableView-short.html
                                                          + test_iPhone-ScrollableView-v-vh-af.html
                                                          + test_iPhone-ScrollableView-v-ah-af.html
                                                          + test_iPhone-ScrollableView-h.html
                                                          + test_iPhone-ScrollableView-hv.html
                                                          + test_iPhone-ScrollableView-hv-vh-vf.html
                                                          + test_iPhone-ScrollableView-hv-ah-af.html
                                                          + test_iPhone-SwapView.html
                                                          + test_iPhone-SwapView-slideshow.html
                                                          + test_iPhone-SwapView-demo.html
                                                          + test_Carousel.html
                                                          + test_Carousel-slideshow.html
                                                          +
                                                          + test_ScrollableMixin-custom.html
                                                          + test_scrollable-no-dojo.html
                                                          + test_scrollable-no-dojo-ah.html
                                                          + test_scrollable-no-dojo-af.html
                                                          + test_scrollable-no-dojo-ah-af.html
                                                          +
                                                          + test_iPad-Settings.html
                                                          + test_iPad-Heading.html
                                                          + test_iPad-TabBar.html
                                                          + test_screen-size-aware.html
                                                          + test_screen-size-aware-demo.html
                                                          +
                                                          + test_domButtons.html
                                                          + test_bookmarkable.html
                                                          + test_hash-parameter.html
                                                          + test_progress-indicator.html
                                                          + test_dynamic-items.html
                                                          + test_dynamic-icons.html
                                                          + test_dynamic-view.html
                                                          + test_dynamic-ScrollableView-ah-af.html
                                                          + test_dynamic-ScrollableView-vh-vf.html
                                                          + test_ajax-html.html
                                                          + test_ajax-json.html
                                                          + test_anchor-label.html
                                                          + test_css-sprite.html
                                                          + test_transition-to-dynamic-view.html
                                                          + test_grouped-views.html
                                                          + test_grouped-scrollable-views.html
                                                          + test_orientation-transition.html
                                                          + test_transition-animations.html
                                                          + test_transition-animations2.html
                                                          + test_list-actions.html
                                                          + test_i18n.html
                                                          + test_html-form-controls.html
                                                          +
                                                          + test_transition-connect.html
                                                          + test_transition-pubsub.html
                                                          +
                                                          + test_FixedSplitter-H2.html
                                                          + test_FixedSplitter-H2-prog.html
                                                          + test_FixedSplitter-V3.html
                                                          + test_FixedSplitter-V2H2.html
                                                          +
                                                          + test_SpinWheelDatePicker.html
                                                          + test_SpinWheelTimePicker.html
                                                          + test_SpinWheel-icons.html
                                                          + test_SpinWheel-custom.html
                                                          + test_SpinWheelDatePicker-sv.html
                                                          + test_SpinWheel-1slot.html
                                                          +
                                                          + test_RoundRectDataList.html
                                                          + test_EdgeToEdgeDataList.html
                                                          +
                                                          + test_Tooltip.html
                                                          + test_Overlay.html
                                                          + test_Opener-Calendar-async.html
                                                          + test_Opener-ColorPalette-async.html
                                                          + test_Opener-ColorPicker.html
                                                          + test_Opener-DateSpinWheel-async.html
                                                          + test_Opener-RoundSelectList-async.html
                                                          + test_Opener-SearchList-async.html
                                                          + test_Opener-ActionSheet-async.html
                                                          + (Example ColorPalette, ColorPicker, Calendar, DatePickers which open differently on phone vs. tablet/desktop)
                                                          +
                                                          + test_Accessibility_Support.html
                                                          +
                                                          + test_iPhone-Animation-async.html
                                                          + test_iPhone-ScrollableView-demo-async.html
                                                          + test_iPhone-SwapView-demo-async.html
                                                          + test_iPhone-SwapView-slideshow-async.html
                                                          + test_iPad-Settings-async.html
                                                          + test_Carousel-async.html
                                                          + test_screen-size-aware-async.html
                                                          +
                                                          + test_iPhone-ScrollableView-v-inp.html
                                                          + test_iPhone-ScrollableView-v-vh-inp.html
                                                          + test_iPhone-ScrollableView-v-vh-vf-inp.html
                                                          + test_iPhone-ScrollableView-short.html
                                                          + test_iPhone-ScrollableView-v-vh-af-inp.html
                                                          + test_iPhone-ScrollableView-v-ah-af-inp.html
                                                          + test_html-inputs.html
                                                          +
                                                          + Simple Full App
                                                          + Simple Full App Using a List
                                                          + Multi-Scene Full App
                                                          + Full App Using a Complex List
                                                          + Full App with Dialogs
                                                          + Full App with Form Inputs
                                                          + Full App with Image Widgets
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/app/assistants/text-input-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/app/assistants/text-input-assistant.js new file mode 100644 index 0000000..9d75689 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/app/assistants/text-input-assistant.js @@ -0,0 +1,20 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("TextInputAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + console.log("In main assistant setup"); + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + + }, + + activate: function(){ + console.log("In main assistant activate"); + + + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/app/views/text-input/text-input-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/app/views/text-input/text-input-scene.html new file mode 100644 index 0000000..18dde59 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/app/views/text-input/text-input-scene.html @@ -0,0 +1,50 @@ +

                                                          Text Inputs

                                                          + +
                                                          + Simple Text Input + +
                                                          +
                                                          + Uppercase Text Input + +
                                                          +
                                                          + Lowercase Text Input + +
                                                          +
                                                          + Propercase Text Input + +
                                                          +
                                                          + Max Length = 6 Text Input + +
                                                          +
                                                          + PlaceHolder Text Input + +
                                                          +
                                                          + Select On Click Text Input + +
                                                          + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/index.html new file mode 100644 index 0000000..361aeb4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/inputApp/index.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car-coverage.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car-coverage.html new file mode 100644 index 0000000..50573be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car-coverage.html @@ -0,0 +1,6 @@ +
                                                          +

                                                          Coverage Options

                                                          +
                                                          + Would you like to learn more about Coverage Options? +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car-safe.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car-safe.html new file mode 100644 index 0000000..3e8fba0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car-safe.html @@ -0,0 +1,6 @@ +
                                                          +

                                                          Safe Driving Bonus

                                                          +
                                                          + Would you like to learn more about Safe Driving Bonus? +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car.json new file mode 100644 index 0000000..23ce8d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-car.json @@ -0,0 +1,6 @@ +{ + "items" : [ + { label: "Coverage Options", icon: "images/i-icon-1.png", url: "insurance-car-coverage.html" }, + { label: "Safe Driving Bonus", icon: "images/i-icon-1.png", url: "insurance-car-safe.html" } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life-child.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life-child.html new file mode 100644 index 0000000..7f4153a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life-child.html @@ -0,0 +1,6 @@ +
                                                          +

                                                          Child's Education

                                                          +
                                                          + Would you like to learn more about Child's Education? +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life-long.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life-long.html new file mode 100644 index 0000000..3ea9648 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life-long.html @@ -0,0 +1,6 @@ +
                                                          +

                                                          Long Term Care

                                                          +
                                                          + Would you like to learn more about Long Term Care? +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life.json new file mode 100644 index 0000000..dab22f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-life.json @@ -0,0 +1,6 @@ +{ + "items" : [ + { label: "Long Term Care", icon: "images/i-icon-2.png", url: "insurance-life-long.html" }, + { label: "Child's Education", icon: "images/i-icon-2.png", url: "insurance-life-child.html" } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-boat.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-boat.html new file mode 100644 index 0000000..e49b73a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-boat.html @@ -0,0 +1,6 @@ +
                                                          +

                                                          Boat

                                                          +
                                                          + Would you like to learn more about Boat Insurance? +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-moto.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-moto.html new file mode 100644 index 0000000..b3c9065 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-moto.html @@ -0,0 +1,6 @@ +
                                                          +

                                                          Motorcycle

                                                          +
                                                          + Would you like to learn more about Motorcycle Insurance? +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-snow.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-snow.html new file mode 100644 index 0000000..730e2e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports-snow.html @@ -0,0 +1,6 @@ +
                                                          +

                                                          Snowmobile

                                                          +
                                                          + Would you like to learn more about Snowmobile Insurance? +
                                                          +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports.json new file mode 100644 index 0000000..a3c24d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance-sports.json @@ -0,0 +1,7 @@ +{ + "items" : [ + { label: "Motorcycle", icon: "images/i-icon-10.png", url: "insurance-sports-moto.html" }, + { label: "Snowmobile", icon: "images/i-icon-10.png", url: "insurance-sports-snow.html" }, + { label: "Boat", icon: "images/i-icon-10.png", url: "insurance-sports-boat.html" } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance.json new file mode 100644 index 0000000..df4dafd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/insurance.json @@ -0,0 +1,7 @@ +{ + "items" : [ + { label: "Car Insurance", id: "CarInsurance", icon: "images/tab-icon-11h.png", data: "insurance-car.json", moveTo: "#" }, + { label: "Life Insurance", id: "LifeInsurance", icon: "images/tab-icon-15h.png", data: "insurance-life.json", moveTo: "#" }, + { label: "Sports Insurance", id: "SportsInsurance", icon: "images/tab-icon-10h.png", data: "insurance-sports.json", moveTo: "#" } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/items.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/items.json new file mode 100644 index 0000000..b724415 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/items.json @@ -0,0 +1,7 @@ +{ + items: [ + { title:'Top 10 news stories', href:'http://dojotoolkit.org/' }, + { title:'Web applications with GFX', href:'http://dojotoolkit.org/' }, + { title:'Explores advanced topics', href:'http://dojotoolkit.org/' } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/module.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/module.js new file mode 100644 index 0000000..b724633 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/module.js @@ -0,0 +1,12 @@ +dojo.provide("dojox.mobile.tests.module"); + +try{ + dojo.require("dojox.mobile.tests.doh.module"); + if(!dojo.isBB && !dojo.isAndroid && !dojo.isIPhone && !dojo.isIPad && !dojo.isIPod) { + dojo.require("dojox.mobile.tests.robot.module"); + } + +}catch(e){ + doh.debug(e); +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/main-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/main-assistant.js new file mode 100644 index 0000000..9f09051 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/main-assistant.js @@ -0,0 +1,40 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("MainAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + console.log("In main assistant setup"); + + var appInfoNode = this.controller.query(".appInfoArea")[0]; + + appInfoNode.innerHTML = + "This app has the following info: \n" + + dojo.toJson(dojox.mobile.app.info, true).split("\t").join(" "); + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + var _this = this; + var launcher = dijit.byId("secondSceneLauncher"); + + console.log("launcher = " , launcher, " node = ", this.domNode); + this.connect(launcher.domNode, "onclick", function(){ + console.log("launching the second scene"); + + _this.controller.stageController.pushScene("second", "Came from Main Scene"); + }); + }, + + activate: function(data){ + console.log("In main assistant activate"); + + var node = this.controller.query(".inputData")[0]; + if(data) { + node.innerHTML = "Scene got the data: " + data; + } else { + node.innerHTML = "Scene did not receive data"; + } + + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/second-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/second-assistant.js new file mode 100644 index 0000000..6526cf9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/second-assistant.js @@ -0,0 +1,30 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("SecondAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + console.log("In second assistant setup"); + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + var _this = this; + this.connect(dijit.byId("btn1"), "onClick", function(){ + _this.controller.stageController.popScene("Button 1"); + }); + this.connect(dijit.byId("btn2"), "onClick", function(){ + _this.controller.stageController.pushScene("third", "Came from second scene"); + }); + }, + + activate: function(data){ + console.log("In main assistant activate"); + var node = this.controller.query(".inputData")[0]; + if(data) { + node.innerHTML = "Scene got the data: " + data; + } else { + node.innerHTML = "Scene did not receive data"; + } + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/third-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/third-assistant.js new file mode 100644 index 0000000..1cea51e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/assistants/third-assistant.js @@ -0,0 +1,31 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("ThirdAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + console.log("In third assistant setup"); + + // Instantiate widgets in the template HTML. + this.controller.parse(); + + var _this = this; + this.connect(dijit.byId("btn3"), "onClick", function(){ + _this.controller.stageController.popScenesTo("main", "From Third Scene"); + }); + this.connect(dijit.byId("btn4"), "onClick", function(){ + _this.controller.stageController.popScene("From Third Scene"); + }); + }, + + activate: function(data){ + console.log("In third assistant activate"); + var node = this.controller.query(".inputData")[0]; + if(data) { + node.innerHTML = "Scene got the data: " + data; + } else { + node.innerHTML = "Scene did not receive data"; + } + + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/main/main-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/main/main-scene.html new file mode 100644 index 0000000..9c15d0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/main/main-scene.html @@ -0,0 +1,16 @@ +

                                                          Main Scene

                                                          +
                                                          + This is the content of the main scene. Use the buttons in each scene to move between + the multiple scenes, or views, contained in the app. +
                                                          
                                                          +
                                                          +
                                                          + +
                                                          +
                                                            +
                                                          • + Next Scene +
                                                          • +
                                                          + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/second/second-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/second/second-scene.html new file mode 100644 index 0000000..e663485 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/second/second-scene.html @@ -0,0 +1,12 @@ +

                                                          Second Scene

                                                          +
                                                          + This is the second scene. Tap a button to go back to the first scene +
                                                          + + +

                                                          + +
                                                          + +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/third/third-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/third/third-scene.html new file mode 100644 index 0000000..a00f748 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/app/views/third/third-scene.html @@ -0,0 +1,13 @@ +

                                                          Third Scene

                                                          +
                                                          + This is the third scene. + Tap the first button to jump back to the first scene, + or the second button to go back one scene to the second scene. +
                                                          + + + +
                                                          + +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/index.html new file mode 100644 index 0000000..cd97251 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/multiSceneApp/index.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/it/sample.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/it/sample.js new file mode 100644 index 0000000..74963ee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/it/sample.js @@ -0,0 +1,11 @@ +define( +//begin v1.x content +({ + "MINUTES": "%1 Minuto", + "Second": "secondo", + "Day of the Week": "giorno della settimana", + "Sunday": "Domenica", + "Monday": "Lunedì" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/ja/sample.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/ja/sample.js new file mode 100644 index 0000000..de5a707 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/ja/sample.js @@ -0,0 +1,13 @@ +define( +//begin v1.x content +({ + "MINUTES": "%1 分", + "Second": "秒", + "Day of the Week": "曜日", + "Sunday": "日曜日", + "Monday": "月曜日", + "ON": "オン", + "OFF": "オフ" +}) +//end v1.x content +); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/sample.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/sample.js new file mode 100644 index 0000000..2fbf618 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/nls/sample.js @@ -0,0 +1,14 @@ +define({ root: +//begin v1.x content +({ + "MINUTES": "%1 Minute(s)" + + // In this example, English resources are not necessary, + // because English strings are used as resource keys, + // and they are automatically used as fall back values. +}) +//end v1.x content +, +"ja": true, +"it": true +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/progressBarAnim.gif b/js/dojo-release-1.7.2-src/dojox/mobile/tests/progressBarAnim.gif new file mode 100644 index 0000000..30c0d9d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/progressBarAnim.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Animation.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Animation.html new file mode 100644 index 0000000..bf15bbb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Animation.html @@ -0,0 +1,62 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Animation2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Animation2.html new file mode 100644 index 0000000..bf15bbb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Animation2.html @@ -0,0 +1,62 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ButtonList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ButtonList.html new file mode 100644 index 0000000..c56183d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ButtonList.html @@ -0,0 +1,50 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ButtonList2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ButtonList2.html new file mode 100644 index 0000000..b9ecd49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ButtonList2.html @@ -0,0 +1,50 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Flippable.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Flippable.html new file mode 100644 index 0000000..e16bda7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Flippable.html @@ -0,0 +1,56 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Icon.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Icon.html new file mode 100644 index 0000000..fc2b0d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Icon.html @@ -0,0 +1,50 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Icon2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Icon2.html new file mode 100644 index 0000000..2ff50a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Icon2.html @@ -0,0 +1,50 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ListItem.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ListItem.html new file mode 100644 index 0000000..d74ef80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ListItem.html @@ -0,0 +1,47 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView.html new file mode 100644 index 0000000..e75e2e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView.html @@ -0,0 +1,54 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView2.html new file mode 100644 index 0000000..d14dd71 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView2.html @@ -0,0 +1,54 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView3.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView3.html new file mode 100644 index 0000000..1de9573 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/ScrollableView3.html @@ -0,0 +1,54 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Settings.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Settings.html new file mode 100644 index 0000000..28ac414 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Settings.html @@ -0,0 +1,119 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Switch.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Switch.html new file mode 100644 index 0000000..daf458b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Switch.html @@ -0,0 +1,50 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Switch2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Switch2.html new file mode 100644 index 0000000..aba8a98 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/Switch2.html @@ -0,0 +1,50 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/TabBar.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/TabBar.html new file mode 100644 index 0000000..ae617b0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/TabBar.html @@ -0,0 +1,65 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/TabBar2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/TabBar2.html new file mode 100644 index 0000000..8cfa227 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/TabBar2.html @@ -0,0 +1,65 @@ + + + + doh.robot Tooltip Mouse Quirks Test + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/module.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/module.js new file mode 100644 index 0000000..2db94d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/module.js @@ -0,0 +1,28 @@ +dojo.provide("dojox.mobile.tests.robot.module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"), + test_robot = true; + + if(test_robot){ + doh.registerUrl("dojox.mobile.tests.robot.ButtonList", dojo.moduleUrl("dojox.mobile", "tests/robot/ButtonList.html"), 999999); + doh.registerUrl("dojox.mobile.tests.robot.ButtonList", dojo.moduleUrl("dojox.mobile", "tests/robot/ButtonList2.html"), 999999); + doh.registerUrl("dojox.mobile.tests.robot.switch", dojo.moduleUrl("dojox.mobile", "tests/robot/Switch.html"), 999999); + doh.registerUrl("dojox.mobile.tests.robot.switch", dojo.moduleUrl("dojox.mobile", "tests/robot/Switch2.html"), 999999); + doh.registerUrl("dojox.mobile.tests.robot.ListItem", dojo.moduleUrl("dojox.mobile", "tests/robot/ListItem.html"), 999999); + doh.registerUrl("dojox.mobile.tests.robot.tabBar", dojo.moduleUrl("dojox.mobile", "tests/robot/TabBar.html"), 999999); + doh.registerUrl("dojox.mobile.tests.robot.tabBar", dojo.moduleUrl("dojox.mobile", "tests/robot/TabBar2.html"), 999999); + doh.registerUrl("dojox.mobile.tests.robot.IconItem", dojo.moduleUrl("dojox.mobile", "tests/robot/Icon.html",999999)); + doh.registerUrl("dojox.mobile.tests.robot.IconItem", dojo.moduleUrl("dojox.mobile", "tests/robot/Icon2.html",999999)); + doh.registerUrl("dojox.mobile.tests.robot.Animation", dojo.moduleUrl("dojox.mobile", "tests/robot/Animation.html"),999999); + if(!dojo.isSafari) { + doh.registerUrl("dojox.mobile.tests.robot.Settings", dojo.moduleUrl("dojox.mobile", "tests/robot/Settings.html"),999999); + doh.registerUrl("dojox.mobile.tests.robot.Flippable", dojo.moduleUrl("dojox.mobile", "tests/robot/Flippable.html"),999999); + doh.registerUrl("dojox.mobile.tests.robot.Scrollable", dojo.moduleUrl("dojox.mobile", "tests/robot/ScrollableView.html"),999999); + doh.registerUrl("dojox.mobile.tests.robot.Scrollable", dojo.moduleUrl("dojox.mobile", "tests/robot/ScrollableView2.html"),999999); + doh.registerUrl("dojox.mobile.tests.robot.Scrollable", dojo.moduleUrl("dojox.mobile", "tests/robot/ScrollableView3.html"),999999); + } + } +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/runTests.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/runTests.html new file mode 100644 index 0000000..a61dcaf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/robot/runTests.html @@ -0,0 +1,9 @@ + + + + dojox.mobile Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/runTests.html new file mode 100644 index 0000000..3860429 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/runTests.html @@ -0,0 +1,9 @@ + + + + dojox.mobile Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/settings.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/settings.json new file mode 100644 index 0000000..d34293a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/settings.json @@ -0,0 +1,14 @@ +{ + "items" : [ + { "label" : "Wi-Fi", "icon" : "images/i-icon-1.png", "moveTo": "wifi" }, + { "label" : "Brightness & Wallpaper", "icon" : "images/i-icon-2.png", "moveTo": "bright" }, + { "label" : "Picture Frame", "icon" : "images/i-icon-3.png", "moveTo": "picture" }, + { "label" : "General", "icon" : "images/i-icon-4.png", "moveTo": "general", "selected": "true" }, + { "label" : "Mail, Contacts, Calendars", "icon" : "images/i-icon-5.png", "moveTo": "wifi" }, + { "label" : "Safari", "icon" : "images/i-icon-6.png", "moveTo": "bright" }, + { "label" : "iPod", "icon" : "images/i-icon-7.png", "moveTo": "picture" }, + { "label" : "Video", "icon" : "images/i-icon-8.png", "moveTo": "general" }, + { "label" : "Photos", "icon" : "images/i-icon-9.png", "moveTo": "wifi" }, + { "label" : "Store", "icon" : "images/i-icon-10.png", "moveTo": "bright" } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/app/assistants/main-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/app/assistants/main-assistant.js new file mode 100644 index 0000000..bbd7ee6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/app/assistants/main-assistant.js @@ -0,0 +1,22 @@ +dojo.require("dojox.mobile.app.SceneAssistant"); + +dojo.declare("MainAssistant", dojox.mobile.app.SceneAssistant, { + + setup: function(){ + console.log("In main assistant setup"); + + var appInfoNode = this.controller.query(".appInfoArea")[0]; + + appInfoNode.innerHTML = + "This app has the following info: \n" + + dojo.toJson(dojox.mobile.app.info, true) + + }, + + activate: function(){ + console.log("In main assistant activate"); + + + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/app/views/main/main-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/app/views/main/main-scene.html new file mode 100644 index 0000000..e251c56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/app/views/main/main-scene.html @@ -0,0 +1,3 @@ +
                                                          This is the content of the main scene
                                                          + +
                                                          
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/index.html
                                                          new file mode 100644
                                                          index 0000000..213c094
                                                          --- /dev/null
                                                          +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleApp/index.html
                                                          @@ -0,0 +1,32 @@
                                                          +
                                                          +
                                                          +	
                                                          +		
                                                          +		
                                                          +		
                                                          +		
                                                          +		
                                                          +    
                                                          +		
                                                          +	
                                                          +	
                                                          +		
                                                          +	
                                                          +
                                                          \ No newline at end of file
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/assistants/main-assistant.js b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/assistants/main-assistant.js
                                                          new file mode 100644
                                                          index 0000000..f7aac68
                                                          --- /dev/null
                                                          +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/assistants/main-assistant.js
                                                          @@ -0,0 +1,65 @@
                                                          +dojo.require("dojox.mobile.app.SceneAssistant");
                                                          +
                                                          +dojo.declare("MainAssistant", dojox.mobile.app.SceneAssistant, {
                                                          +  
                                                          +  setup: function(){
                                                          +    console.log("In main assistant setup");
                                                          +    
                                                          +    this.controller.parse();
                                                          +    console.log("In main assistant setup 2");
                                                          +    
                                                          +    var data1 = [
                                                          +      {
                                                          +        label: "Row 1"
                                                          +      },
                                                          +      {
                                                          +        label: "Row 2"
                                                          +      }
                                                          +    ];
                                                          +    var data2 = [
                                                          +      {
                                                          +        label: "Row 3"
                                                          +      },
                                                          +      {
                                                          +        label: "Row 4"
                                                          +      },
                                                          +      {
                                                          +        label: "Row 5"
                                                          +      },
                                                          +      {
                                                          +        label: "Row 6"
                                                          +      }
                                                          +    ];
                                                          +    
                                                          +    var listWidget = dijit.byId("listWidget");
                                                          +    listWidget.set("items", data1);
                                                          +    
                                                          +    var _this = this;
                                                          +    
                                                          +    dojo.connect(listWidget, "onSelect", function(data, index, rowNode){
                                                          +      try {
                                                          +        console.log("selected data item  ", data);
                                                          +        _this.controller.query(".listInfo")[0].innerHTML
                                                          +                = "Selected (" + index + ") '" + data.label + "'";
                                                          +      } catch(e){
                                                          +        console.log("caught ", e);
                                                          +      }
                                                          +    });
                                                          +    
                                                          +    this.connect(dijit.byId("btn1"), "onClick", function(){
                                                          +      dijit.byId("listWidget").set("items", data1);
                                                          +    });
                                                          +    this.connect(dijit.byId("btn2"), "onClick", function(){
                                                          +      dijit.byId("listWidget").set("items", data2);
                                                          +    });
                                                          +    
                                                          +    
                                                          +  },
                                                          +  
                                                          +  activate: function(){
                                                          +    console.log("In main assistant activate");
                                                          +    
                                                          +    
                                                          +  }
                                                          +  
                                                          +});
                                                          \ No newline at end of file
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/views/main/main-scene.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/views/main/main-scene.html
                                                          new file mode 100644
                                                          index 0000000..35dd3d2
                                                          --- /dev/null
                                                          +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/views/main/main-scene.html
                                                          @@ -0,0 +1,14 @@
                                                          +
                                                          This scene shows how to render a simple list with just an itemTemplate
                                                          + +
                                                          + Tap the list to see selected info here. +
                                                          + + +

                                                          + + +
                                                          +
                                                          +
                                                          \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/views/main/rowTemplate.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/views/main/rowTemplate.html new file mode 100644 index 0000000..f9c0e65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/app/views/main/rowTemplate.html @@ -0,0 +1,3 @@ +
                                                          + ${label} +
                                                          diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/index.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/index.html new file mode 100644 index 0000000..5640c38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/simpleListApp/index.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/sliderHthumb.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/sliderHthumb.png new file mode 100644 index 0000000..485073a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/sliderHthumb.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/sliderVthumb.png b/js/dojo-release-1.7.2-src/dojox/mobile/tests/sliderVthumb.png new file mode 100644 index 0000000..a4720ee Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/tests/sliderVthumb.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Accessibility_Support.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Accessibility_Support.html new file mode 100644 index 0000000..552e343 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Accessibility_Support.html @@ -0,0 +1,116 @@ + + + + + + Accessibility + + + + + + + + + + + + + +
                                                          +

                                                          Mobile Mashup

                                                          +

                                                          Spaces

                                                          +
                                                            +
                                                          • + Heading Sample +
                                                          • +
                                                          • + ListItem Sample +
                                                          • +
                                                          • + Icon Sample +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          +
                                                          Edit
                                                          +
                                                          + World Clock +


                                                          + + +

                                                          +
                                                          New
                                                          +
                                                          Toggle
                                                          +
                                                          +
                                                          +
                                                          +


                                                          + +

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          + 1 of 10 +


                                                          + +

                                                          +
                                                          +
                                                          +
                                                          +


                                                          + + +
                                                          + +
                                                          +

                                                          Settings

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                          • +
                                                          • + Carrier +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Icon Container

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-ButtonList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-ButtonList.html new file mode 100644 index 0000000..a24b92f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-ButtonList.html @@ -0,0 +1,65 @@ + + + + + + + + Button List + + + + + + + + + +
                                                          +

                                                          Location & security settings

                                                          +

                                                          My Location

                                                          +
                                                            +
                                                          • + Use wireless networks +
                                                            + See location in applications (such as Maps) using wireless networks +
                                                            +
                                                          • +
                                                          • + Use GPS satellites +
                                                            + When locating, accurate to street level (uncheck to conserve battery) +
                                                            +
                                                          • +
                                                          +

                                                          My Location

                                                          +
                                                            +
                                                          • + Set unlock pattern +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-EdgeToEdge.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-EdgeToEdge.html new file mode 100644 index 0000000..a096bed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-EdgeToEdge.html @@ -0,0 +1,48 @@ + + + + + + + Edge to Edge + + + + + + + + +
                                                          +

                                                          Settings

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                          • +
                                                          • + Carrier +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Hello

                                                          +
                                                            +
                                                          • + Hello +
                                                          • +
                                                          • + Carrier +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-EdgeToEdgeCategory.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-EdgeToEdgeCategory.html new file mode 100644 index 0000000..7201f86 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-EdgeToEdgeCategory.html @@ -0,0 +1,45 @@ + + + + + + Edge to Edge + + + + + + +
                                                          +

                                                          Edge-to-Edge List

                                                          +

                                                          J

                                                          +
                                                            +
                                                          • + Jack Coleman +
                                                          • +
                                                          • + James Evans +
                                                          • +
                                                          • + Jason Griffin +
                                                          • +
                                                          +

                                                          K

                                                          +
                                                            +
                                                          • + Karen Hughes +
                                                          • +
                                                          • + Kelly Perry +
                                                          • +
                                                          • + Kevin Rivera +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Heading.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Heading.html new file mode 100644 index 0000000..58f6ae9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Heading.html @@ -0,0 +1,123 @@ + + + + + + Heading + + + + + + + + + +
                                                          +

                                                          General

                                                          +

                                                          Very Very Long Title May Not Be Displayed in the Narrow Space - Very Very Long Title May Not Be Displayed in the Narrow Space

                                                          +
                                                          + +

                                                          Heading with buttons

                                                          + +

                                                          +
                                                          Edit
                                                          +
                                                          + +


                                                          + + +

                                                          +
                                                          Edit
                                                          +
                                                          + Alarm Clock +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +
                                                          +
                                                          New
                                                          +
                                                          Toggle
                                                          +
                                                          +
                                                          +
                                                          +

                                                          + + +

                                                          +
                                                            +
                                                          • Catalog
                                                          • +
                                                          • Share
                                                          • +
                                                          • Download
                                                          • +
                                                          +
                                                          +


                                                          + + +

                                                          + + + + +
                                                          +
                                                          Search
                                                          +
                                                          Directions
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          +


                                                          + + +

                                                          +
                                                          +
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          +


                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Icon.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Icon.html new file mode 100755 index 0000000..e17eaee --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Icon.html @@ -0,0 +1,58 @@ + + + + + + Icon + + + + + + + + + +
                                                          +

                                                          Icon Container

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          About

                                                          +

                                                          My Phone

                                                          +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Line +
                                                          • +
                                                          • + Songs +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-RoundRectList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-RoundRectList.html new file mode 100755 index 0000000..9f62148 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-RoundRectList.html @@ -0,0 +1,53 @@ + + + + + + Round Rect List + + + + + + + +
                                                          +

                                                          Mobile Mashup

                                                          +

                                                          Spaces

                                                          +
                                                            +
                                                          • + u1space +
                                                          • +
                                                          • + u2space +
                                                          • +
                                                          • + Wi-Fi +
                                                          • +
                                                          • + VPN +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          u1space

                                                          +

                                                          Applications

                                                          +
                                                            +
                                                          • + Video +
                                                          • +
                                                          • + Maps +
                                                          • +
                                                          • + Phone Number +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Settings.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Settings.html new file mode 100644 index 0000000..bcc05a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Settings.html @@ -0,0 +1,108 @@ + + + + + + Settings + + + + + + + + + +
                                                          +

                                                          Settings

                                                          +
                                                            +
                                                          • + Wireless & networks +
                                                          • +
                                                          • + Call settings +
                                                          • +
                                                          • + Sound & display +
                                                          • +
                                                          • + Location & security +
                                                          • +
                                                          • + Applications +
                                                          • +
                                                          • + Accounts & sync +
                                                          • +
                                                          • + Privacy +
                                                          • +
                                                          • + SD card & phone storage +
                                                          • +
                                                          • + Search +
                                                          • +
                                                          • + Language & keyboard +
                                                          • +
                                                          • + Accessibility +
                                                          • +
                                                          • + Text-to-speech +
                                                          • +
                                                          +
                                                          +
                                                          +

                                                          Location & security settings

                                                          +

                                                          My Location

                                                          +
                                                            +
                                                          • + Use wireless networks +
                                                            + See location in applications (such as Maps) using wireless networks +
                                                            +
                                                          • +
                                                          • + Use GPS satellites +
                                                            + When locating, accurate to street level (uncheck to conserve battery) +
                                                            +
                                                          • +
                                                          +

                                                          My Location

                                                          +
                                                            +
                                                          • + Set unlock pattern +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Switch.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Switch.html new file mode 100644 index 0000000..3a983cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-Switch.html @@ -0,0 +1,76 @@ + + + + + + Switch + + + + + + + + + +
                                                          +
                                                          + Default Shape
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Round Shape 1
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Round Shape 2
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Arc Shape 1
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Arc Shape 2
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-TabBar.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-TabBar.html new file mode 100644 index 0000000..a02bdef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-TabBar.html @@ -0,0 +1,65 @@ + + + + + + TabBar + + + + + + + + + +
                                                          Segmented Control
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar (CSS Sprite)
                                                          +
                                                            +
                                                          • Featured
                                                          • +
                                                          • Categories
                                                          • +
                                                          • Top 25
                                                          • +
                                                          • Search
                                                          • +
                                                          • Updates
                                                          • +
                                                          + +
                                                          +
                                                          View 1
                                                          +
                                                          +
                                                          +
                                                          View 2
                                                          +
                                                          +
                                                          +
                                                          View 3
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-VariableHeightList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-VariableHeightList.html new file mode 100755 index 0000000..b8f23e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Android-VariableHeightList.html @@ -0,0 +1,98 @@ + + + + + + News + + + + + + + + +
                                                          +

                                                          News

                                                          +

                                                          Top Stories

                                                          +
                                                            +
                                                          • + Top 10 news stories of the decade +
                                                          • +
                                                          • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                          • +
                                                          • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Article

                                                          +
                                                          +

                                                          Did you know?

                                                          +

                                                          Features of dojox.mobile

                                                          +
                                                          No images are used
                                                          +
                                                            +
                                                          • UI parts consist of DOM and CSS3.
                                                          • +
                                                          • Only application icons are images.
                                                          • +
                                                          +

                                                          For example, none of the UI parts below are images.

                                                          + + +
                                                          Removed dependencies on the dojo modules as much as possible
                                                          +
                                                            +
                                                          • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                          • +
                                                          + +
                                                          Support for CSS sprite
                                                          +
                                                            +
                                                          • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                          • +
                                                          + +
                                                          Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                          +
                                                            +
                                                          • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                          • +
                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Animation.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Animation.html new file mode 100755 index 0000000..0973164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Animation.html @@ -0,0 +1,79 @@ + + + + + + Animation + + + + + + +
                                                          +

                                                          Animations

                                                          +

                                                          Transition Effects

                                                          +
                                                            +
                                                          • + Slide +
                                                          • +
                                                          • + Flip +
                                                          • +
                                                          • + Fade +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Search Result

                                                          + +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-EdgeToEdgeList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-EdgeToEdgeList.html new file mode 100755 index 0000000..d7841ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-EdgeToEdgeList.html @@ -0,0 +1,59 @@ + + + + + + + Edge to Edge List + + + + + + + +
                                                          +

                                                          Options

                                                          +

                                                          Network

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                            + +
                                                            +
                                                          • +
                                                          +

                                                          Sound

                                                          +
                                                            +
                                                          • + Alarm +
                                                            + ON + OFF
                                                            +
                                                            +
                                                          • +
                                                          +

                                                          Display

                                                          +
                                                            +
                                                          • + Font +
                                                            + Bold + Italic
                                                            +
                                                            +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Heading.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Heading.html new file mode 100755 index 0000000..eff7d53 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Heading.html @@ -0,0 +1,123 @@ + + + + + + Heading + + + + + + + + + +
                                                          +

                                                          General

                                                          +

                                                          Very Very Long Title May Not Be Displayed in the Narrow Space - Very Very Long Title May Not Be Displayed in the Narrow Space

                                                          +
                                                          + +

                                                          Heading with buttons

                                                          + +

                                                          +
                                                          Edit
                                                          +
                                                          + +


                                                          + + +

                                                          +
                                                          Edit
                                                          +
                                                          + Alarm Clock +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +
                                                          +
                                                          New
                                                          +
                                                          Toggle
                                                          +
                                                          +
                                                          +
                                                          +

                                                          + + +

                                                          +
                                                            +
                                                          • Catalog
                                                          • +
                                                          • Share
                                                          • +
                                                          • Download
                                                          • +
                                                          +
                                                          +


                                                          + + +

                                                          + + + + +
                                                          +
                                                          Search
                                                          +
                                                          Directions
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          +


                                                          + + +

                                                          +
                                                          +
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          +


                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-IconContainer.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-IconContainer.html new file mode 100755 index 0000000..f879b99 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-IconContainer.html @@ -0,0 +1,57 @@ + + + + + + Icon Container + + + + + + + + + + + +
                                                          +

                                                          Icon Container

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          About

                                                          +

                                                          My Phone

                                                          +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Line +
                                                          • +
                                                          • + Songs +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-RoundRectList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-RoundRectList.html new file mode 100755 index 0000000..6a7d3a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-RoundRectList.html @@ -0,0 +1,59 @@ + + + + + + + Round Rectangle List + + + + + + + +
                                                          +

                                                          Options

                                                          +

                                                          Network

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                            + +
                                                            +
                                                          • +
                                                          +

                                                          Sound

                                                          +
                                                            +
                                                          • + Alarm +
                                                            + ON + OFF
                                                            +
                                                            +
                                                          • +
                                                          +

                                                          Display

                                                          +
                                                            +
                                                          • + Font +
                                                            + Bold + Italic
                                                            +
                                                            +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-ScrollableView.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-ScrollableView.html new file mode 100755 index 0000000..1bbdacf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-ScrollableView.html @@ -0,0 +1,396 @@ + + + + + + ScrollableView demo + + + + + + + + +
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          + +
                                                          + +
                                                          + +
                                                          + +
                                                          +

                                                          Generic Mobile Device

                                                          +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Line +
                                                          • +
                                                          • + Songs +
                                                          • +
                                                          • + Videos +
                                                          • +
                                                          • + Photos +
                                                          • +
                                                          • + Applications +
                                                          • +
                                                          • + Capacity +
                                                          • +
                                                          • + Available +
                                                          • +
                                                          • + Version +
                                                          • +
                                                          +
                                                          +
                                                          + +
                                                          +

                                                          Categories

                                                          +
                                                            +
                                                          • Category 1
                                                          • +
                                                          • Category 2
                                                          • +
                                                          • Category 3
                                                          • +
                                                          • Category 4
                                                          • +
                                                          • Category 5
                                                          • +
                                                          • Category 6
                                                          • +
                                                          • Category 7
                                                          • +
                                                          • Category 8
                                                          • +
                                                          • Category 9
                                                          • +
                                                          • Category 10
                                                          • +
                                                          • Category 11
                                                          • +
                                                          • Category 12
                                                          • +
                                                          • Category 13
                                                          • +
                                                          • Category 14
                                                          • +
                                                          • Category 15
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          News

                                                          +

                                                          Top Stories

                                                          +
                                                            +
                                                          • + Top 10 news stories of the decade +
                                                          • +
                                                          • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                          • +
                                                          • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                          • +
                                                          +
                                                          + + + +
                                                          +

                                                          Article

                                                          +
                                                          +

                                                          Did you know?

                                                          +

                                                          Features of dojox.mobile

                                                          +
                                                          No images are used
                                                          +
                                                            +
                                                          • UI parts consist of DOM and CSS3.
                                                          • +
                                                          • Only application icons are images.
                                                          • +
                                                          + +
                                                          Removed dependencies on the dojo modules as much as possible
                                                          +
                                                            +
                                                          • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                          • +
                                                          + +
                                                          Support for CSS sprite
                                                          +
                                                            +
                                                          • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                          • +
                                                          + +
                                                          Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                          +
                                                            +
                                                          • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                          • +
                                                          +
                                                          +
                                                          + +
                                                            +
                                                          • Featured
                                                          • +
                                                          • Categories
                                                          • +
                                                          • Top 25
                                                          • +
                                                          • Search
                                                          • +
                                                          • Updates
                                                          • +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Settings.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Settings.html new file mode 100755 index 0000000..0d71162 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Settings.html @@ -0,0 +1,111 @@ + + + + + + + + Setting + + + + + + + +
                                                          +

                                                          Options

                                                          +
                                                            +
                                                          • + Sounds and Ring Tones +
                                                            + Ring tones, reminders, profiles +
                                                            +
                                                          • +
                                                          • + Networks and Connections +
                                                            + Bluetooth connections, WiFi mode +
                                                            +
                                                          • +
                                                          • + Display +
                                                            + Date, time, themes, screen +
                                                            +
                                                          • +
                                                          • + Typing and Input +
                                                            + Language, keyboard, text input +
                                                            +
                                                          • +
                                                          • + Device +
                                                            + PIN, auto on/off, battery, storage +
                                                            +
                                                          • +
                                                          • + Call Management +
                                                            + Call behavior, voice mail, speed dial +
                                                            +
                                                          • +
                                                          • + Security +
                                                            + Password ,encryption, firewall +
                                                            +
                                                          • +
                                                          • + Accessibility +
                                                            + Display, sound and input options +
                                                            +
                                                          • +
                                                          • + Third Party Applications +
                                                            + Options for third-party applications +
                                                            +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Sounds and Ring Tones

                                                          +
                                                            +
                                                          • + Phone Ring Tone +
                                                            + Set ring tone for chosen profile +
                                                            +
                                                          • +
                                                          • + Sounds for Selected Profile +
                                                            + Set any alert in chosen profile +
                                                            +
                                                          • +
                                                          • + Sounds for Contacts +
                                                            + Add alert for one or more contacts +
                                                            +
                                                          • +
                                                          • + Profile Management +
                                                            + Add, edit or delete a sound profile +
                                                            +
                                                          • +
                                                          +
                                                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-SwapView.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-SwapView.html new file mode 100755 index 0000000..7d0ddfa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-SwapView.html @@ -0,0 +1,92 @@ + + + + + + SwapView + + + + + + + + +
                                                          +

                                                          Page flipping demo

                                                          +
                                                            +
                                                          • + Swipe the screen left or right to flip between the views. + There are 4 views in this demo. + Vertical scrolling and page indicator are not supported. +
                                                          +
                                                          + +
                                                          +

                                                          Icon Container 1

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Icon Container 2

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Icon Container 3

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Switch.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Switch.html new file mode 100755 index 0000000..44da622 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-Switch.html @@ -0,0 +1,76 @@ + + + + + + Switch + + + + + + + + + +
                                                          +
                                                          + Default Shape
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Round Shape 1
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Round Shape 2
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Arc Shape 1
                                                          +
                                                          +
                                                          +
                                                          + +
                                                          + Arc Shape 2
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-TabBar.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-TabBar.html new file mode 100755 index 0000000..8a66a52 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-TabBar.html @@ -0,0 +1,65 @@ + + + + + + TabBar + + + + + + + + + +
                                                          Segmented Control
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar (CSS Sprite)
                                                          +
                                                            +
                                                          • Featured
                                                          • +
                                                          • Categories
                                                          • +
                                                          • Top 25
                                                          • +
                                                          • Search
                                                          • +
                                                          • Updates
                                                          • +
                                                          + +
                                                          +
                                                          View 1
                                                          +
                                                          +
                                                          +
                                                          View 2
                                                          +
                                                          +
                                                          +
                                                          View 3
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-VariableHeightList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-VariableHeightList.html new file mode 100755 index 0000000..e293dda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_BlackBerry-VariableHeightList.html @@ -0,0 +1,99 @@ + + + + + + News + + + + + + + + +
                                                          +

                                                          News

                                                          +

                                                          Top Stories

                                                          +
                                                            +
                                                          • + Top 10 news stories of the decade +
                                                          • +
                                                          • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                          • +
                                                          • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          Article

                                                          +
                                                          +

                                                          Did you know?

                                                          +

                                                          Features of dojox.mobile

                                                          +
                                                          No images are used
                                                          +
                                                            +
                                                          • UI parts consist of DOM and CSS3.
                                                          • +
                                                          • Only application icons are images.
                                                          • +
                                                          +

                                                          For example, none of the UI parts below are images.

                                                          + + +
                                                          Removed dependencies on the dojo modules as much as possible
                                                          +
                                                            +
                                                          • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                          • +
                                                          + +
                                                          Support for CSS sprite
                                                          +
                                                            +
                                                          • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                          • +
                                                          + +
                                                          Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                          +
                                                            +
                                                          • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                          • +
                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel-async.html new file mode 100644 index 0000000..dfbf69e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel-async.html @@ -0,0 +1,58 @@ + + + + + + Carousel + + + + + + + + +
                                                          +
                                                          +
                                                          + +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel-slideshow.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel-slideshow.html new file mode 100644 index 0000000..e189eb3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel-slideshow.html @@ -0,0 +1,40 @@ + + + + + + Lazy-loadable Carousel Photo Gallery + + + + + +
                                                          + +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel.html new file mode 100644 index 0000000..783d958 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Carousel.html @@ -0,0 +1,49 @@ + + + + + + Carousel + + + + + +
                                                          +
                                                          +
                                                          + +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ComboBox.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ComboBox.html new file mode 100644 index 0000000..d9ce66a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ComboBox.html @@ -0,0 +1,212 @@ + + + + + + mobile ComboBox tests + + + + + + + + +

                                                          mobile ComboBox non-robot tests

                                                          + + + + + + + + + + + + + + + + +
                                                          attributes
                                                          events
                                                          programmatic
                                                          + +
                                                          Errors: ? +
                                                          Failures: ? + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ContentPane.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ContentPane.html new file mode 100644 index 0000000..573cd3d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ContentPane.html @@ -0,0 +1,50 @@ + + + + + + ContentPane + + + + + +
                                                          +

                                                          ContentPane

                                                          + +

                                                          Pane1

                                                          +
                                                          + +

                                                          Pane2

                                                          +
                                                          + +

                                                          Pane3

                                                          +
                                                          + +

                                                          Pane4

                                                          +
                                                          + +

                                                          Pane5

                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-EdgeToEdgeList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-EdgeToEdgeList.html new file mode 100644 index 0000000..5d82fe2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-EdgeToEdgeList.html @@ -0,0 +1,59 @@ + + + + + + + Edge to Edge List + + + + + + + +
                                                          +

                                                          Options

                                                          +

                                                          Network

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                            + +
                                                            +
                                                          • +
                                                          +

                                                          Sound

                                                          +
                                                            +
                                                          • + Alarm +
                                                            + ON + OFF
                                                            +
                                                            +
                                                          • +
                                                          +

                                                          Display

                                                          +
                                                            +
                                                          • + Font +
                                                            + Bold + Italic
                                                            +
                                                            +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-FormControls.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-FormControls.html new file mode 100644 index 0000000..25deac8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-FormControls.html @@ -0,0 +1,173 @@ + + + + + + Form Controls + + + + + + + + + + + + +
                                                          +

                                                          dojox.mobile - form controls

                                                          +
                                                          + + + + + +
                                                          Button + +
                                                          +
                                                          +
                                                          + + + + + + + + + + + + + +
                                                          CheckBox
                                                          ToggleButton
                                                          Switch
                                                          +
                                                          +
                                                          + + + + + +
                                                          Radio Button + +
                                                          +
                                                          +
                                                          + + + + + +
                                                          Slider + + + + + + +
                                                          020
                                                          +
                                                          +
                                                          +
                                                          + + + + + + + + + + + + + +
                                                          ComboBox
                                                          TextArea +
                                                          + +
                                                          TextBox
                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Heading.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Heading.html new file mode 100644 index 0000000..e9c03a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Heading.html @@ -0,0 +1,121 @@ + + + + + + Heading + + + + + + + +
                                                          +

                                                          General

                                                          +

                                                          Very Very Long Title May Not Be Displayed in the Narrow Space - Very Very Long Title May Not Be Displayed in the Narrow Space

                                                          +
                                                          + +

                                                          Heading with buttons

                                                          + +

                                                          +
                                                          Edit
                                                          +
                                                          + +


                                                          + + +

                                                          +
                                                          Edit
                                                          +
                                                          + Alarm Clock +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +


                                                          + + +

                                                          +
                                                          +
                                                          +


                                                          + + +
                                                          +
                                                          New
                                                          +
                                                          Toggle
                                                          +
                                                          +
                                                          +
                                                          +

                                                          + + +

                                                          +
                                                            +
                                                          • Catalog
                                                          • +
                                                          • Share
                                                          • +
                                                          • Download
                                                          • +
                                                          +
                                                          +


                                                          + + +

                                                          + + + + +
                                                          +
                                                          Search
                                                          +
                                                          Directions
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          +


                                                          + + +

                                                          +
                                                          +
                                                          +
                                                          +


                                                          + + +

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          +


                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Icon.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Icon.html new file mode 100644 index 0000000..081b90f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Icon.html @@ -0,0 +1,58 @@ + + + + + + Icon + + + + + + + + + +
                                                          +

                                                          Icon Container

                                                          +
                                                            +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          About

                                                          +

                                                          My Phone

                                                          +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Line +
                                                          • +
                                                          • + Songs +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Opener.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Opener.html new file mode 100644 index 0000000..0c3232f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Opener.html @@ -0,0 +1,156 @@ + + + + + + test Opener + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                          Date (SpinWheel)
                                                          Date (Calendar)
                                                          Color (Palette)
                                                          Color (Picker)
                                                          +
                                                          + + +
                                                          + +
                                                          +

                                                          +
                                                          +
                                                          +

                                                          +
                                                          +
                                                          + +
                                                          +

                                                          +
                                                          +
                                                          +

                                                          +
                                                          +
                                                          + +
                                                          +

                                                          +
                                                          +
                                                          +

                                                          +
                                                          +
                                                          + +
                                                          +

                                                          +
                                                          +
                                                          +

                                                          +
                                                          +
                                                          + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-RoundRectList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-RoundRectList.html new file mode 100644 index 0000000..a1968d8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-RoundRectList.html @@ -0,0 +1,59 @@ + + + + + + + Round Rectangle List + + + + + + + +
                                                          +

                                                          Options

                                                          +

                                                          Network

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                            + +
                                                            +
                                                          • +
                                                          +

                                                          Sound

                                                          +
                                                            +
                                                          • + Alarm +
                                                            + ON + OFF
                                                            +
                                                            +
                                                          • +
                                                          +

                                                          Display

                                                          +
                                                            +
                                                          • + Font +
                                                            + Bold + Italic
                                                            +
                                                            +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Settings.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Settings.html new file mode 100644 index 0000000..518365a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Settings.html @@ -0,0 +1,167 @@ + + + + + + Settings + + + + + + + +
                                                          +

                                                          Settings

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                          • +
                                                          • + Carrier +
                                                          • +
                                                          + +
                                                            +
                                                          • + Sounds +
                                                          • +
                                                          • + Brightness +
                                                          • +
                                                          • + Wallpaper +
                                                          • +
                                                          + +
                                                            +
                                                          • + General +
                                                          • +
                                                          • + Mail, Contacts, Calendars +
                                                          • +
                                                          • + Phone +
                                                          • +
                                                          • + Safari +
                                                          • +
                                                          • + SMS/MMS +
                                                          • +
                                                          • + iPod +
                                                          • +
                                                          • + Photos +
                                                          • +
                                                          • + Store +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          General

                                                          +
                                                            +
                                                          • + About +
                                                          • +
                                                          • + Usage +
                                                          • +
                                                          + +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Bluetooth +
                                                          • +
                                                          • + Location Services +
                                                          • +
                                                          + +
                                                            +
                                                          • + Auto-Lock +
                                                          • +
                                                          • + Passcode Lock +
                                                          • +
                                                          • + Restrictions +
                                                          • +
                                                          + +
                                                            +
                                                          • + Home +
                                                          • +
                                                          • + Date & Time +
                                                          • +
                                                          • + Keyboard +
                                                          • +
                                                          • + International +
                                                          • +
                                                          • + Accessibility +
                                                          • +
                                                          + +
                                                            +
                                                          • + Reset +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          About

                                                          +

                                                          Generic Mobile Device

                                                          +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Line +
                                                          • +
                                                          • + Songs +
                                                          • +
                                                          • + Videos +
                                                          • +
                                                          • + Photos +
                                                          • +
                                                          • + Applications +
                                                          • +
                                                          • + Capacity +
                                                          • +
                                                          • + Available +
                                                          • +
                                                          • + Version +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-TabBar.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-TabBar.html new file mode 100644 index 0000000..70ae2b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-TabBar.html @@ -0,0 +1,65 @@ + + + + + + TabBar + + + + + + + + + +
                                                          Segmented Control
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar
                                                          +
                                                            +
                                                          • New
                                                          • +
                                                          • What's Hot
                                                          • +
                                                          • Genius
                                                          • +
                                                          + +
                                                          Tab Bar (CSS Sprite)
                                                          +
                                                            +
                                                          • Featured
                                                          • +
                                                          • Categories
                                                          • +
                                                          • Top 25
                                                          • +
                                                          • Search
                                                          • +
                                                          • Updates
                                                          • +
                                                          + +
                                                          +
                                                          View 1
                                                          +
                                                          +
                                                          +
                                                          View 2
                                                          +
                                                          +
                                                          +
                                                          View 3
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Tooltip.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Tooltip.html new file mode 100644 index 0000000..c56f468 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-Tooltip.html @@ -0,0 +1,117 @@ + + + + + + test Tooltip + + + + + + + + +
                                                          + + +

                                                          Click boundary nodes to see tooltips +
                                                          +
                                                          + + +
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          + +
                                                          Enter a value.
                                                          Please!
                                                          + +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          .
                                                          +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-css-sprite.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-css-sprite.html new file mode 100644 index 0000000..757e457 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-css-sprite.html @@ -0,0 +1,170 @@ + + + + + + Settings + + + + + + + +
                                                          +

                                                          Settings

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                          • +
                                                          • + Carrier +
                                                          • +
                                                          + +
                                                            +
                                                          • + Sounds +
                                                          • +
                                                          • + Brightness +
                                                          • +
                                                          • + Wallpaper +
                                                          • +
                                                          + +
                                                            +
                                                          • + General +
                                                          • +
                                                          • + Mail, Contacts, Calendars +
                                                          • +
                                                          • + Phone +
                                                          • +
                                                          • + Safari +
                                                          • +
                                                          • + SMS/MMS +
                                                          • +
                                                          • + iPod +
                                                          • +
                                                          • + Photos +
                                                          • +
                                                          • + Store +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          General

                                                          +
                                                            +
                                                          • + About +
                                                          • +
                                                          • + Usage +
                                                          • +
                                                          + +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Bluetooth +
                                                          • +
                                                          • + Location Services +
                                                          • +
                                                          + +
                                                            +
                                                          • + Auto-Lock +
                                                          • +
                                                          • + Passcode Lock +
                                                          • +
                                                          • + Restrictions +
                                                          • +
                                                          + +
                                                            +
                                                          • + Home +
                                                          • +
                                                          • + Date & Time +
                                                          • +
                                                          • + Keyboard +
                                                          • +
                                                          • + International +
                                                          • +
                                                          • + Accessibility +
                                                          • +
                                                          + +
                                                            +
                                                          • + Reset +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          About

                                                          +

                                                          Generic Mobile Device

                                                          +
                                                            +
                                                          • + Network +
                                                          • +
                                                          • + Line +
                                                          • +
                                                          • + Songs +
                                                          • +
                                                          • + Videos +
                                                          • +
                                                          • + Photos +
                                                          • +
                                                          • + Applications +
                                                          • +
                                                          • + Capacity +
                                                          • +
                                                          • + Available +
                                                          • +
                                                          • + Version +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-list-domButtons.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-list-domButtons.html new file mode 100644 index 0000000..e4a4fed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Custom-list-domButtons.html @@ -0,0 +1,227 @@ + + + + + + List with domButtons + + + + + + + + +
                                                          +

                                                          View 1

                                                          +

                                                          RoundRectList

                                                          +
                                                            +
                                                          • + Slide +
                                                          • +
                                                          • + Flip +
                                                          • +
                                                          • + Fade +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          View 2

                                                          +

                                                          Dom Button with Text

                                                          +
                                                            +
                                                          • +
                                                            Dojo: Traditional Karate-do Spirit
                                                            + Sarah Connor Hardcover
                                                            + Eligible for FREE Super Saver Shipping
                                                            + $14.50 (50%) In Stock +
                                                          • +
                                                          • +
                                                            Japanese Martial Arts Dojo
                                                            + Martin Parker Hardcover
                                                            + $14.00 (60%) In Stock +
                                                          • +
                                                          • +
                                                            Total Solar Eclipse
                                                            + Steven Young Hardcover
                                                            + Get it by Mar. 2 if you order in the next 16 hours
                                                            + Eligible for FREE Super Saver Shipping
                                                            + $9.50 (62%) In Stock +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          View 3

                                                          +

                                                          Variable Height List

                                                          +
                                                            +
                                                          • + Top 10 news stories of the decade +
                                                          • +
                                                          • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                          • +
                                                          • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          View 4

                                                          +

                                                          Custom DOM Buttons

                                                          +
                                                            +
                                                          • + My Custom Button 1 +
                                                          • +
                                                          • + My Custom Button 2 +
                                                          • +
                                                          +
                                                          + +
                                                          +

                                                          View 5

                                                          +

                                                          EdgeToEdgeList

                                                          +
                                                            +
                                                          • + Airplane Mode +
                                                            +
                                                          • +
                                                          • + Wi-Fi +
                                                          • +
                                                          • + Carrier +
                                                          • +
                                                          +
                                                          + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_EdgeToEdgeDataList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_EdgeToEdgeDataList.html new file mode 100644 index 0000000..df4ec46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_EdgeToEdgeDataList.html @@ -0,0 +1,64 @@ + + + + + + EdgeToEdgeDataList + + + + +
                                                          +

                                                          EdgeToEdgeDataList

                                                          +
                                                            +

                                                            show the different set:
                                                            + + +

                                                            alter the object store:
                                                            + + +

                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_EdgeToEdgeList-check.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_EdgeToEdgeList-check.html new file mode 100644 index 0000000..4ae56e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_EdgeToEdgeList-check.html @@ -0,0 +1,66 @@ + + + + + + Selectable Edge-To-Edge List + + + + +
                                                            +

                                                            Selectable List

                                                            +

                                                            Single Select

                                                            +
                                                              +
                                                            • + Cube +
                                                            • +
                                                            • + Dissolve +
                                                            • +
                                                            • + Ripple +
                                                            • +
                                                            + + + +

                                                            Multiple Select

                                                            +
                                                              +
                                                            • + Cube +
                                                            • +
                                                            • + Dissolve +
                                                            • +
                                                            • + Ripple +
                                                            • +
                                                            + +


                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-H2-prog.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-H2-prog.html new file mode 100644 index 0000000..a46763a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-H2-prog.html @@ -0,0 +1,45 @@ + + + + FixedSplitter Test + + + + + + + +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-H2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-H2.html new file mode 100644 index 0000000..4b224dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-H2.html @@ -0,0 +1,31 @@ + + + + FixedSplitter Test + + + + + +
                                                            +
                                                            + pane #1 (width=200px) +
                                                            +
                                                            + pane #2 +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-V2H2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-V2H2.html new file mode 100644 index 0000000..50be726 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-V2H2.html @@ -0,0 +1,37 @@ + + + + FixedSplitter Test + + + + + +
                                                            +
                                                            + pane #1 +
                                                            + +
                                                            +
                                                            + pane #2 +
                                                            +
                                                            + pane #3 +
                                                            +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-V3.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-V3.html new file mode 100644 index 0000000..850774a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FixedSplitter-V3.html @@ -0,0 +1,34 @@ + + + + FixedSplitter Test + + + + + +
                                                            +
                                                            + pane #1 (height=200px) +
                                                            +
                                                            + pane #2 (height=100px) +
                                                            +
                                                            + pane #3 +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FormControls.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FormControls.html new file mode 100644 index 0000000..c414f53 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_FormControls.html @@ -0,0 +1,173 @@ + + + + + + Form Controls + + + + + + + + + + + +
                                                            +

                                                            dojox.mobile - form controls

                                                            +
                                                            + + + + + +
                                                            Button + +
                                                            +
                                                            +
                                                            + + + + + + + + + + + + + +
                                                            CheckBox
                                                            ToggleButton
                                                            Switch
                                                            +
                                                            +
                                                            + + + + + +
                                                            Radio Button + +
                                                            +
                                                            +
                                                            + + + + + +
                                                            Slider + + + + + + +
                                                            020
                                                            +
                                                            +
                                                            +
                                                            + + + + + + + + + + + + + +
                                                            ComboBox
                                                            TextArea +
                                                            + +
                                                            TextBox
                                                            +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ActionSheet-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ActionSheet-async.html new file mode 100644 index 0000000..603b881 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ActionSheet-async.html @@ -0,0 +1,91 @@ + + + + + + Action Sheet Sample + + + + + +
                                                            + +
                                                            +
                                                            + + +
                                                            +
                                                            +
                                                            +
                                                            + +
                                                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-Calendar-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-Calendar-async.html new file mode 100644 index 0000000..f403625 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-Calendar-async.html @@ -0,0 +1,65 @@ + + + + + + test Opener with Calendar + + + + + + + + + + + + +
                                                            Date (Calendar)
                                                            +
                                                            +

                                                            +
                                                            +
                                                            +

                                                            +
                                                            +
                                                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ColorPalette-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ColorPalette-async.html new file mode 100644 index 0000000..cd932c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ColorPalette-async.html @@ -0,0 +1,59 @@ + + + + + + Test Opener with ColorPalette + + + + + + + + + + + + +
                                                            Color (Palette)
                                                            + +
                                                            +

                                                            +
                                                            +
                                                            +

                                                            +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ColorPicker.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ColorPicker.html new file mode 100644 index 0000000..0250f16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-ColorPicker.html @@ -0,0 +1,58 @@ + + + + + + Test Opener with ColorPicker + + + + + + + + + + + + +
                                                            Color (Picker)
                                                            + +
                                                            +

                                                            +
                                                            +
                                                            +

                                                            +
                                                            +
                                                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-DateSpinWheel-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-DateSpinWheel-async.html new file mode 100644 index 0000000..900ba08 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-DateSpinWheel-async.html @@ -0,0 +1,63 @@ + + + + + + Test Opener with DateSpinWheel + + + + + + + + + + + + + +
                                                            Date (SpinWheel)
                                                            + +
                                                            +

                                                            +
                                                            +
                                                            +

                                                            +
                                                            +
                                                            + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-RoundSelectList-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-RoundSelectList-async.html new file mode 100644 index 0000000..b791267 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-RoundSelectList-async.html @@ -0,0 +1,158 @@ + + + + + + Opener-RoundSelectList + + + + + + + + + + + +
                                                            Ringtone
                                                            + + + +
                                                            +

                                                            +
                                                            +
                                                            +

                                                            +
                                                            +
                                                              +
                                                            • + Marimba +
                                                            • +
                                                            • + Alarm +
                                                            • +
                                                            • + Ascending +
                                                            • +
                                                            • + Bark +
                                                            • +
                                                            • + Bell Tower +
                                                            • +
                                                            • + Blues +
                                                            • +
                                                            • + Boing +
                                                            • +
                                                            • + Crickets +
                                                            • +
                                                            • + Digital +
                                                            • +
                                                            • + Doorbell +
                                                            • +
                                                            • + Duck +
                                                            • +
                                                            • + Harp +
                                                            • +
                                                            • + Motorcycle +
                                                            • +
                                                            • + Old Car Horn +
                                                            • +
                                                            • + Old Phone +
                                                            • +
                                                            • + Piano Roll +
                                                            • +
                                                            • + Pinball +
                                                            • +
                                                            • + Robot +
                                                            • +
                                                            • + Sci-Fi +
                                                            • +
                                                            • + Sonar +
                                                            • +
                                                            • + Strum +
                                                            • +
                                                            • + Timba +
                                                            • +
                                                            • + Time Passing +
                                                            • +
                                                            • + Trill +
                                                            • +
                                                            • + Xylophone +
                                                            • +
                                                            +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-SearchList-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-SearchList-async.html new file mode 100644 index 0000000..0954ebd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Opener-SearchList-async.html @@ -0,0 +1,130 @@ + + + + + + Opener-SearchList + + + + + + + + + + + +
                                                            Contact:
                                                            + +
                                                            +

                                                            +
                                                            +
                                                            + +

                                                            +
                                                            +
                                                              +

                                                              A

                                                              +
                                                            • + Aaron Smith +
                                                            • +
                                                            • + Adam Peller +
                                                            • +

                                                              J

                                                              +
                                                            • + Jack Coleman +
                                                            • +
                                                            • + James Evans +
                                                            • +
                                                            • + Jason Griffin +
                                                            • +

                                                              K

                                                              +
                                                            • + Karen Hughes +
                                                            • +
                                                            • + Kelly Perry +
                                                            • +
                                                            • + Kevin Rivera +
                                                            • +

                                                              S

                                                              +
                                                            • + Sam Jones +
                                                            • +
                                                            • + Sandy Smith +
                                                            • +
                                                            • + Susan Smith +
                                                            • +

                                                              T

                                                              +
                                                            • + Tim Jones +
                                                            • +
                                                            • + Tina Smith +
                                                            • +
                                                            • + Tom Smith +
                                                            • +
                                                            +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Overlay.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Overlay.html new file mode 100644 index 0000000..dcf3167 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Overlay.html @@ -0,0 +1,86 @@ + + + + + + test Overlay + + + + + + + + +
                                                            + + +
                                                            +

                                                            +
                                                            +

                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            .
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            + + +
                                                            +
                                                            + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_RoundRectDataList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_RoundRectDataList.html new file mode 100644 index 0000000..ba27d5a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_RoundRectDataList.html @@ -0,0 +1,67 @@ + + + + + + RoundRectDataList + + + + +
                                                            +

                                                            RoundRectDataList

                                                            +
                                                              +

                                                              show the different set:
                                                              + + +

                                                              alter the object store:
                                                              + + +

                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_RoundRectList-check.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_RoundRectList-check.html new file mode 100644 index 0000000..7e8eefc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_RoundRectList-check.html @@ -0,0 +1,65 @@ + + + + + + Selectable Round Rect List + + + + +
                                                              +

                                                              Selectable List

                                                              +

                                                              Single Select

                                                              +
                                                                +
                                                              • + Cube +
                                                              • +
                                                              • + Dissolve +
                                                              • +
                                                              • + Ripple +
                                                              • +
                                                              + + +

                                                              Multiple Select

                                                              +
                                                                +
                                                              • + Cube +
                                                              • +
                                                              • + Dissolve +
                                                              • +
                                                              • + Ripple +
                                                              • +
                                                              + +


                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ScrollableMixin-custom.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ScrollableMixin-custom.html new file mode 100644 index 0000000..8b18872 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ScrollableMixin-custom.html @@ -0,0 +1,103 @@ + + + + + + ScrollableMixin-custom + + + + + +

                                                              Fixed Header

                                                              +
                                                              +
                                                                +
                                                              1. Item
                                                              2. +
                                                              3. Item
                                                              4. +
                                                              5. Item
                                                              6. +
                                                              7. Item
                                                              8. +
                                                              9. Item
                                                              10. +
                                                              11. Item
                                                              12. +
                                                              13. Item
                                                              14. +
                                                              15. Item
                                                              16. +
                                                              17. Item
                                                              18. +
                                                              19. Item
                                                              20. +
                                                              21. Item
                                                              22. +
                                                              23. Item
                                                              24. +
                                                              25. Item
                                                              26. +
                                                              27. Item
                                                              28. +
                                                              29. Item
                                                              30. +
                                                              31. Item
                                                              32. +
                                                              33. Item
                                                              34. +
                                                              35. Item
                                                              36. +
                                                              37. Item
                                                              38. +
                                                              39. Item
                                                              40. +
                                                              41. Item
                                                              42. +
                                                              43. Item
                                                              44. +
                                                              45. Item
                                                              46. +
                                                              47. Item
                                                              48. +
                                                              49. Item
                                                              50. +
                                                              51. Item
                                                              52. +
                                                              53. Item
                                                              54. +
                                                              55. Item
                                                              56. +
                                                              57. Item
                                                              58. +
                                                              59. Item
                                                              60. +
                                                              61. Item
                                                              62. +
                                                              63. Item
                                                              64. +
                                                              65. Item
                                                              66. +
                                                              67. Item
                                                              68. +
                                                              69. Item
                                                              70. +
                                                              71. Item
                                                              72. +
                                                              73. Item
                                                              74. +
                                                              75. Item
                                                              76. +
                                                              77. Item
                                                              78. +
                                                              79. Item
                                                              80. +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Slider.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Slider.html new file mode 100644 index 0000000..914fef1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Slider.html @@ -0,0 +1,491 @@ + + + + + Mobile Slider unit tests + + + + + + + +
                                                              +
                                                              + + + + + + +
                                                              020
                                                              Value: 0
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + 20
                                                              + + -20 +
                                                              +
                                                              + Value: 0 +
                                                              +
                                                              +
                                                              + + + Errors: ?
                                                              + Failures: ? + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-1slot.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-1slot.html new file mode 100644 index 0000000..f5d30cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-1slot.html @@ -0,0 +1,28 @@ + + + + + + + One Slot SpinWheel + + + + + + +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-custom.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-custom.html new file mode 100644 index 0000000..2563835 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-custom.html @@ -0,0 +1,70 @@ + + + + + + Custom SpinWheel + + + + + + + +
                                                              +

                                                              Custom SpinWheel

                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              .
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-icons.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-icons.html new file mode 100644 index 0000000..6b5a56a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheel-icons.html @@ -0,0 +1,76 @@ + + + + + + SpinWheel with Icons + + + + + + +
                                                              +

                                                              SpinWheel with Icons

                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelDatePicker-sv.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelDatePicker-sv.html new file mode 100644 index 0000000..d1406aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelDatePicker-sv.html @@ -0,0 +1,101 @@ + + + + + + SpinWheel Date Picker on ScrollableView + + + + + + + +
                                                              +

                                                              +
                                                              +
                                                              +

                                                              +
                                                              +
                                                                +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              • + Item +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelDatePicker.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelDatePicker.html new file mode 100644 index 0000000..97793eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelDatePicker.html @@ -0,0 +1,38 @@ + + + + + + SpinWheel Date Picker + + + + + + +
                                                              +

                                                              +
                                                              +
                                                              +

                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelTimePicker.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelTimePicker.html new file mode 100644 index 0000000..a2c2e0c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_SpinWheelTimePicker.html @@ -0,0 +1,39 @@ + + + + + + SpinWheel Time Picker + + + + + + +
                                                              +

                                                              +
                                                              +
                                                              +

                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Switch-setter.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Switch-setter.html new file mode 100644 index 0000000..d7499f7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Switch-setter.html @@ -0,0 +1,43 @@ + + + + + + Switch setter/getter + + + + +
                                                              +
                                                              +
                                                              + + + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Tooltip.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Tooltip.html new file mode 100644 index 0000000..fd61873 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_Tooltip.html @@ -0,0 +1,117 @@ + + + + + + test Tooltip + + + + + + + +
                                                              + + +

                                                              Click boundary nodes to see tooltips +
                                                              +
                                                              + + +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              + +
                                                              Enter a value.
                                                              Please!
                                                              + +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              .
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ajax-html.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ajax-html.html new file mode 100644 index 0000000..e201134 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ajax-html.html @@ -0,0 +1,33 @@ + + + + + + Ajax + + + + + + +
                                                              +

                                                              Ajax (HTML)

                                                              +

                                                              External Views

                                                              +
                                                                +
                                                              • + External View #1 (sync) +
                                                              • +
                                                              • + External View #2 (async) +
                                                              • +
                                                              • + External View #3 (sync) +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ajax-json.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ajax-json.html new file mode 100644 index 0000000..28b1802 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_ajax-json.html @@ -0,0 +1,33 @@ + + + + + + Ajax + + + + + + +
                                                              +

                                                              Ajax (JSON)

                                                              +

                                                              External Views

                                                              +
                                                                +
                                                              • + External View #1 (sync) +
                                                              • +
                                                              • + External View #2 (async) +
                                                              • +
                                                              • + External View #3 (sync) +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_anchor-label.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_anchor-label.html new file mode 100644 index 0000000..ca0af5f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_anchor-label.html @@ -0,0 +1,73 @@ + + + + + + Anchor Label + + + + + + + +
                                                              +

                                                              Anchor Label

                                                              +

                                                              Items

                                                              +
                                                                +
                                                              • + Different page +
                                                              • +
                                                              • + Different page +
                                                              • +
                                                              • + External view +
                                                              • +
                                                              • + External view +
                                                              • +
                                                              +
                                                              + Tapping on an item label text opens a different page (test_iPhone-Icon.html) or loads an external view (view2.html), while tapping on right-hand side of the label text shows another view in the same page. +
                                                              +
                                                              + +
                                                              +

                                                              u1space

                                                              +

                                                              Applications

                                                              +
                                                                +
                                                              • + Video +
                                                              • +
                                                              • + Maps +
                                                              • +
                                                              • + Phone Number +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_bookmarkable.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_bookmarkable.html new file mode 100755 index 0000000..f8b9b2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_bookmarkable.html @@ -0,0 +1,111 @@ + + + + + + Bookmarkable + + + + + + + + +
                                                              +

                                                              Bookmarkable

                                                              +

                                                              Transition Effects

                                                              +
                                                                +
                                                              • + Slide +
                                                              • +
                                                              • + Flip +
                                                              • +
                                                              • + Fade +
                                                              • +
                                                              +
                                                              + After you move to other views, you should also be able to navigate through the views with browser's back and forward buttons. Also, views should be bookmarkable. +
                                                              +
                                                              + +
                                                              +

                                                              Page 1

                                                              +
                                                                +
                                                              • + Item 1 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Page 2

                                                              +
                                                                +
                                                              • + Item 2 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Page 3

                                                              +
                                                                +
                                                              • + Item 3 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result 1

                                                              + +
                                                              + +
                                                              +

                                                              Search Result 2

                                                              + +
                                                              + +
                                                              +

                                                              Search Result 3

                                                              +
                                                                +
                                                              • + 3. Total Solar Eclipse
                                                                + Steven Young Hardcover
                                                                + Get it by Mar. 2 if you order in the next 16 hours
                                                                + Eligible for FREE Super Saver Shipping
                                                                + $9.50 (62%) In Stock
                                                                + # (1199) +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_css-sprite.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_css-sprite.html new file mode 100644 index 0000000..74f8617 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_css-sprite.html @@ -0,0 +1,170 @@ + + + + + + Settings + + + + + + + +
                                                              +

                                                              Settings

                                                              +
                                                                +
                                                              • + Airplane Mode +
                                                                +
                                                              • +
                                                              • + Wi-Fi +
                                                              • +
                                                              • + Carrier +
                                                              • +
                                                              + +
                                                                +
                                                              • + Sounds +
                                                              • +
                                                              • + Brightness +
                                                              • +
                                                              • + Wallpaper +
                                                              • +
                                                              + +
                                                                +
                                                              • + General +
                                                              • +
                                                              • + Mail, Contacts, Calendars +
                                                              • +
                                                              • + Phone +
                                                              • +
                                                              • + Safari +
                                                              • +
                                                              • + SMS/MMS +
                                                              • +
                                                              • + iPod +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Store +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              General

                                                              +
                                                                +
                                                              • + About +
                                                              • +
                                                              • + Usage +
                                                              • +
                                                              + +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Bluetooth +
                                                              • +
                                                              • + Location Services +
                                                              • +
                                                              + +
                                                                +
                                                              • + Auto-Lock +
                                                              • +
                                                              • + Passcode Lock +
                                                              • +
                                                              • + Restrictions +
                                                              • +
                                                              + +
                                                                +
                                                              • + Home +
                                                              • +
                                                              • + Date & Time +
                                                              • +
                                                              • + Keyboard +
                                                              • +
                                                              • + International +
                                                              • +
                                                              • + Accessibility +
                                                              • +
                                                              + +
                                                                +
                                                              • + Reset +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              About

                                                              +

                                                              Generic Mobile Device

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              • + Videos +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Applications +
                                                              • +
                                                              • + Capacity +
                                                              • +
                                                              • + Available +
                                                              • +
                                                              • + Version +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_domButtons.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_domButtons.html new file mode 100644 index 0000000..664a642 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_domButtons.html @@ -0,0 +1,85 @@ + + + + + + domButtons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                              mblDomButtonWhiteUpArrow
                                                              mblDomButtonWhiteDownArrow
                                                              mblDomButtonWhitePlus
                                                              mblDomButtonWhiteSearch
                                                              mblDomButtonDarkBlueCheck
                                                              mblDomButtonWhiteCheck
                                                              mblDomButtonGrayArrow
                                                              mblDomButtonWhiteArrow
                                                              mblDomButtonBlueMinus
                                                              mblDomButtonBluePlus
                                                              mblDomButtonDarkBlueMinus
                                                              mblDomButtonDarkBluePlus
                                                              mblDomButtonRedMinus
                                                              mblDomButtonRedPlus
                                                              mblDomButtonCheckboxOn
                                                              mblDomButtonCheckboxOff
                                                              mblDomButtonBlueCircleMinus
                                                              mblDomButtonBlueCirclePlus
                                                              mblDomButtonBlueCircleArrow
                                                              mblDomButtonRedCircleMinus
                                                              mblDomButtonRedCirclePlus
                                                              mblDomButtonRedCircleArrow
                                                              mblDomButtonGreenCircleMinus
                                                              mblDomButtonGreenCirclePlus
                                                              mblDomButtonGreenCircleArrow
                                                              mblDomButtonBlackCircleCross
                                                              mblDomButtonGrayRoundRect
                                                              mblDomButtonSilverCircleDownArrow
                                                              mblDomButtonSilverCircleGreenButton
                                                              mblDomButtonSilverCircleGrayButton
                                                              mblDomButtonSilverCircleOrangeButton
                                                              mblDomButtonSilverCircleGreenPlus
                                                              mblDomButtonSilverCircleRedCross
                                                              mblDomButtonBlueBall
                                                              mblDomButtonGreenBall
                                                              mblDomButtonOrangeBall
                                                              mblDomButtonRedBall
                                                              mblDomButtonYellowStar
                                                              mblDomButtonGrayStar
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-ScrollableView-ah-af.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-ScrollableView-ah-af.html new file mode 100644 index 0000000..94a53e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-ScrollableView-ah-af.html @@ -0,0 +1,85 @@ + + + + + + Dynamic ScrollableView (app header / app footer) + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-ScrollableView-vh-vf.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-ScrollableView-vh-vf.html new file mode 100644 index 0000000..f6fb30c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-ScrollableView-vh-vf.html @@ -0,0 +1,75 @@ + + + + + + Dynamic ScrollableView (view header / view footer) + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-icons.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-icons.html new file mode 100644 index 0000000..5faee56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-icons.html @@ -0,0 +1,55 @@ + + + + + + Dynamic Icons + + + + + + + + + + + +
                                                              +
                                                                +
                                                              • +
                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-items.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-items.html new file mode 100755 index 0000000..dde7657 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-items.html @@ -0,0 +1,84 @@ + + + + + + Dynamic Items + + + + + + + +
                                                              +

                                                              Dynamic Items

                                                              +

                                                              External Documents

                                                              +
                                                                +
                                                              • + Document 0001 +
                                                              • +
                                                              • + Document 0002 +
                                                              • +
                                                              • + Document 0003 +
                                                              • +
                                                              + +
                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-view.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-view.html new file mode 100644 index 0000000..c619e16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_dynamic-view.html @@ -0,0 +1,57 @@ + + + + + + Dynamic View + + + + + + + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_grouped-scrollable-views.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_grouped-scrollable-views.html new file mode 100644 index 0000000..ed25f85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_grouped-scrollable-views.html @@ -0,0 +1,62 @@ + + + + + + Grouped ScrollableViews + + + + + + +
                                                              +
                                                              +

                                                              View 1-1

                                                              +

                                                              Grouped View Example

                                                              +
                                                              +
                                                              + - View 1 (container)
                                                              +     |
                                                              +     *-- View 1-1
                                                              +         View 1-2
                                                              + - View 2
                                                              +
                                                              +
                                                                +
                                                              • + View 1-2 +
                                                              • +
                                                              • + View 2 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              View 1-2

                                                              +
                                                                +
                                                              • + View 1-1 +
                                                              • +
                                                              • + View 2 +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +

                                                              View 2

                                                              +
                                                                +
                                                              • + View 1 +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_grouped-views.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_grouped-views.html new file mode 100644 index 0000000..9aee6a1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_grouped-views.html @@ -0,0 +1,61 @@ + + + + + + Grouped Views + + + + + + +
                                                              +
                                                              +

                                                              View 1-1

                                                              +

                                                              Grouped View Example

                                                              +
                                                              +
                                                              + - View 1 (container)
                                                              +     |
                                                              +     *-- View 1-1
                                                              +         View 1-2
                                                              + - View 2
                                                              +
                                                              +
                                                                +
                                                              • + View 1-2 +
                                                              • +
                                                              • + View 2 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              View 1-2

                                                              +
                                                                +
                                                              • + View 1-1 +
                                                              • +
                                                              • + View 2 +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +

                                                              View 2

                                                              +
                                                                +
                                                              • + View 1 +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_hash-parameter.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_hash-parameter.html new file mode 100755 index 0000000..b973f9a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_hash-parameter.html @@ -0,0 +1,70 @@ + + + + + + Transition Parameter + + + + + + + + +
                                                              +

                                                              Animations

                                                              +

                                                              Transition Effects

                                                              +
                                                                +
                                                              • + Document 0001 +
                                                              • +
                                                              • + Document 0002 +
                                                              • +
                                                              • + Document 0003 +
                                                              • +
                                                              +
                                                              + After you move to other views, you should also be able to navigate through the views with browser's back and forward buttons. Also, views should be bookmarkable. Note that you can pass parameters (e.g. &myParam=001) to a destination view. +
                                                              +
                                                              + +
                                                              bar
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_html-form-controls.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_html-form-controls.html new file mode 100644 index 0000000..a596854 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_html-form-controls.html @@ -0,0 +1,67 @@ + + + + + + HTML Form Controls + + + + + + + +
                                                              +

                                                              HTML

                                                              +

                                                              HTML Form Controls

                                                              +
                                                                +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + text +
                                                              • +
                                                              • + password +
                                                              • +
                                                              • + checkbox +
                                                              • +
                                                              • + + radio +
                                                              • +
                                                              • + +
                                                              • +
                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_html-inputs.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_html-inputs.html new file mode 100644 index 0000000..8a569a0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_html-inputs.html @@ -0,0 +1,55 @@ + + + + + + many input fields + + + + + + +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_i18n.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_i18n.html new file mode 100644 index 0000000..5c8685e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_i18n.html @@ -0,0 +1,82 @@ + + + + + + Settings + + + + + + + + + +
                                                              +

                                                              +
                                                              +

                                                              +
                                                                +
                                                              • Sunday
                                                              • +
                                                              • +
                                                              +

                                                              Day of the Week

                                                              +
                                                                +
                                                              • + Sunday +
                                                              • +
                                                              • +
                                                                +
                                                              • +
                                                              + +

                                                              Day of the Week

                                                              +
                                                                +
                                                              • + Sunday +
                                                                +
                                                              • +
                                                              • +
                                                              • +
                                                              + +
                                                                +
                                                              • +
                                                              • +
                                                              + +
                                                                +
                                                              • Sunday
                                                              • +
                                                              • +
                                                              + +
                                                              + Locale: + +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Heading.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Heading.html new file mode 100644 index 0000000..8e9896f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Heading.html @@ -0,0 +1,124 @@ + + + + + + Heading + + + + + + + + + + +
                                                              +

                                                              General

                                                              +

                                                              Very Very Long Title May Not Be Displayed in the Narrow Space - Very Very Long Title May Not Be Displayed in the Narrow Space

                                                              +
                                                              + +

                                                              Heading with buttons

                                                              + +

                                                              +
                                                              Edit
                                                              +
                                                              + +


                                                              + + +

                                                              +
                                                              Edit
                                                              +
                                                              + Alarm Clock +


                                                              + + +

                                                              +
                                                              +
                                                              +


                                                              + + +

                                                              +
                                                              +


                                                              + + +

                                                              +
                                                              +


                                                              + + +

                                                              +
                                                              +
                                                              +


                                                              + + +
                                                              +
                                                              New
                                                              +
                                                              Toggle
                                                              +
                                                              +
                                                              +
                                                              +

                                                              + + +

                                                              +
                                                                +
                                                              • Catalog
                                                              • +
                                                              • Share
                                                              • +
                                                              • Download
                                                              • +
                                                              +
                                                              +


                                                              + + +

                                                              + + + + +
                                                              +
                                                              Search
                                                              +
                                                              Directions
                                                              +
                                                              +


                                                              + + +

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              +


                                                              + + +

                                                              +
                                                              +
                                                              +
                                                              +


                                                              + + +

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              +


                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Settings-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Settings-async.html new file mode 100644 index 0000000..5de8426 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Settings-async.html @@ -0,0 +1,241 @@ + + + + + + iPad Settings + + + + + +
                                                              +
                                                              +
                                                              +

                                                              Settings

                                                              +
                                                                +
                                                              • + Wi-Fi +
                                                              • +
                                                              • + Brightness & Wallpaper +
                                                              • +
                                                              • + Picture Frame +
                                                              • +
                                                              • + General +
                                                              • +
                                                              • + Mail, Contacts, Calendars +
                                                              • +
                                                              • + Safari +
                                                              • +
                                                              • + iPod +
                                                              • +
                                                              • + Video +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Store +
                                                              • +
                                                              • + Apps +
                                                              • +
                                                              • + News +
                                                              • +
                                                              • + Weather +
                                                              • +
                                                              • + Books +
                                                              • +
                                                              • + Business +
                                                              • +
                                                              • + Navigation +
                                                              • +
                                                              • + Sports +
                                                              • +
                                                              • + Social +
                                                              • +
                                                              • + Music +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              + +
                                                              +

                                                              General

                                                              +
                                                                +
                                                              • + About +
                                                              • +
                                                              • + Usage +
                                                              • +
                                                              + +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Bluetooth +
                                                              • +
                                                              • + Location Services +
                                                              • +
                                                              + +
                                                                +
                                                              • + Auto-Lock +
                                                              • +
                                                              • + Passcode Lock +
                                                              • +
                                                              • + Restrictions +
                                                              • +
                                                              + +
                                                                +
                                                              • + Home +
                                                              • +
                                                              • + Date & Time +
                                                              • +
                                                              • + Keyboard +
                                                              • +
                                                              • + International +
                                                              • +
                                                              • + Accessibility +
                                                              • +
                                                              + +
                                                                +
                                                              • + Reset +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              About

                                                              +

                                                              Generic Mobile Device

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              • + Videos +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Applications +
                                                              • +
                                                              • + Capacity +
                                                              • +
                                                              • + Available +
                                                              • +
                                                              • + Version +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Wi-Fi Networks

                                                              +
                                                                +
                                                              • + Wi-Fi +
                                                                +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Brightness & Wallpaper

                                                              +
                                                                +
                                                              • + Auto-Brightness +
                                                                +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Picture Frame

                                                              +

                                                              Transition

                                                              +
                                                                +
                                                              • + Dissolve +
                                                              • +
                                                              • + Origami +
                                                              • +
                                                              +
                                                              + +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Settings.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Settings.html new file mode 100644 index 0000000..c57614b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-Settings.html @@ -0,0 +1,235 @@ + + + + + + iPad Settings + + + + + + +
                                                              +
                                                              +
                                                              +

                                                              Settings

                                                              +
                                                                +
                                                              • + Wi-Fi +
                                                              • +
                                                              • + Brightness & Wallpaper +
                                                              • +
                                                              • + Picture Frame +
                                                              • +
                                                              • + General +
                                                              • +
                                                              • + Mail, Contacts, Calendars +
                                                              • +
                                                              • + Safari +
                                                              • +
                                                              • + iPod +
                                                              • +
                                                              • + Video +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Store +
                                                              • +
                                                              • + Apps +
                                                              • +
                                                              • + News +
                                                              • +
                                                              • + Weather +
                                                              • +
                                                              • + Books +
                                                              • +
                                                              • + Business +
                                                              • +
                                                              • + Navigation +
                                                              • +
                                                              • + Sports +
                                                              • +
                                                              • + Social +
                                                              • +
                                                              • + Music +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              + +
                                                              +

                                                              General

                                                              +
                                                                +
                                                              • + About +
                                                              • +
                                                              • + Usage +
                                                              • +
                                                              + +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Bluetooth +
                                                              • +
                                                              • + Location Services +
                                                              • +
                                                              + +
                                                                +
                                                              • + Auto-Lock +
                                                              • +
                                                              • + Passcode Lock +
                                                              • +
                                                              • + Restrictions +
                                                              • +
                                                              + +
                                                                +
                                                              • + Home +
                                                              • +
                                                              • + Date & Time +
                                                              • +
                                                              • + Keyboard +
                                                              • +
                                                              • + International +
                                                              • +
                                                              • + Accessibility +
                                                              • +
                                                              + +
                                                                +
                                                              • + Reset +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              About

                                                              +

                                                              Generic Mobile Device

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              • + Videos +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Applications +
                                                              • +
                                                              • + Capacity +
                                                              • +
                                                              • + Available +
                                                              • +
                                                              • + Version +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Wi-Fi Networks

                                                              +
                                                                +
                                                              • + Wi-Fi +
                                                                +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Brightness & Wallpaper

                                                              +
                                                                +
                                                              • + Auto-Brightness +
                                                                +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Picture Frame

                                                              +

                                                              Transition

                                                              +
                                                                +
                                                              • + Dissolve +
                                                              • +
                                                              • + Origami +
                                                              • +
                                                              +
                                                              + +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-TabBar.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-TabBar.html new file mode 100644 index 0000000..1011092 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPad-TabBar.html @@ -0,0 +1,66 @@ + + + + + + TabBar + + + + + + + + + + +
                                                              Segmented Control
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              Tab Bar
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              Tab Bar (CSS Sprite)
                                                              +
                                                                +
                                                              • Featured
                                                              • +
                                                              • Categories
                                                              • +
                                                              • Top 25
                                                              • +
                                                              • Search
                                                              • +
                                                              • Updates
                                                              • +
                                                              + +
                                                              +
                                                              View 1
                                                              +
                                                              +
                                                              +
                                                              View 2
                                                              +
                                                              +
                                                              +
                                                              View 3
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Animation-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Animation-async.html new file mode 100644 index 0000000..0dedca5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Animation-async.html @@ -0,0 +1,81 @@ + + + + + + Animation + + + + + + + +
                                                              +

                                                              Animations

                                                              +

                                                              Transition Effects

                                                              +
                                                                +
                                                              • + Slide +
                                                              • +
                                                              • + Flip +
                                                              • +
                                                              • + Fade +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Animation.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Animation.html new file mode 100644 index 0000000..9920579 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Animation.html @@ -0,0 +1,79 @@ + + + + + + Animation + + + + + + + +
                                                              +

                                                              Animations

                                                              +

                                                              Transition Effects

                                                              +
                                                                +
                                                              • + Slide +
                                                              • +
                                                              • + Flip +
                                                              • +
                                                              • + Fade +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Button.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Button.html new file mode 100755 index 0000000..5fd53d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Button.html @@ -0,0 +1,42 @@ + + + + + + Button + + + + + + + + + +

                                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ButtonList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ButtonList.html new file mode 100644 index 0000000..39334fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ButtonList.html @@ -0,0 +1,48 @@ + + + + + + Button List + + + + + + + +
                                                              +

                                                              Mashups

                                                              +
                                                                +
                                                              • + XX Widget +
                                                              • +
                                                              • + YY Widget +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-EdgeToEdge.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-EdgeToEdge.html new file mode 100644 index 0000000..9117567 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-EdgeToEdge.html @@ -0,0 +1,49 @@ + + + + + + Edge to Edge + + + + + + +
                                                              +

                                                              Settings

                                                              +
                                                                +
                                                              • + Airplane Mode +
                                                                +
                                                              • +
                                                              • + Wi-Fi +
                                                              • +
                                                              • + Carrier +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Hello

                                                              +
                                                                +
                                                              • + Hello +
                                                              • +
                                                              • + Carrier +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-EdgeToEdgeCategory.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-EdgeToEdgeCategory.html new file mode 100644 index 0000000..0d24a9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-EdgeToEdgeCategory.html @@ -0,0 +1,45 @@ + + + + + + Edge to Edge + + + + + + +
                                                              +

                                                              Edge-to-Edge List

                                                              +

                                                              J

                                                              +
                                                                +
                                                              • + Jack Coleman +
                                                              • +
                                                              • + James Evans +
                                                              • +
                                                              • + Jason Griffin +
                                                              • +
                                                              +

                                                              K

                                                              +
                                                                +
                                                              • + Karen Hughes +
                                                              • +
                                                              • + Kelly Perry +
                                                              • +
                                                              • + Kevin Rivera +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Heading.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Heading.html new file mode 100644 index 0000000..269190b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Heading.html @@ -0,0 +1,123 @@ + + + + + + Heading + + + + + + + + + +
                                                              +

                                                              General

                                                              +

                                                              Very Very Long Title May Not Be Displayed in the Narrow Space - Very Very Long Title May Not Be Displayed in the Narrow Space

                                                              +
                                                              + +

                                                              Heading with buttons

                                                              + +

                                                              +
                                                              Edit
                                                              +
                                                              + +


                                                              + + +

                                                              +
                                                              Edit
                                                              +
                                                              + Alarm Clock +


                                                              + + +

                                                              +
                                                              +
                                                              +


                                                              + + +

                                                              +
                                                              +


                                                              + + +

                                                              +
                                                              +


                                                              + + +

                                                              +
                                                              +
                                                              +


                                                              + + +
                                                              +
                                                              New
                                                              +
                                                              Toggle
                                                              +
                                                              +
                                                              +
                                                              +

                                                              + + +

                                                              +
                                                                +
                                                              • Catalog
                                                              • +
                                                              • Share
                                                              • +
                                                              • Download
                                                              • +
                                                              +
                                                              +


                                                              + + +

                                                              + + + + +
                                                              +
                                                              Search
                                                              +
                                                              Directions
                                                              +
                                                              +


                                                              + + +

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              +


                                                              + + +

                                                              +
                                                              +
                                                              +
                                                              +


                                                              + + +

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              +


                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Icon-sprite.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Icon-sprite.html new file mode 100644 index 0000000..245dd83 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Icon-sprite.html @@ -0,0 +1,62 @@ + + + + + + Icon (css sprite) + + + + + + + + + +
                                                              +

                                                              Sprite Icons

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              About

                                                              +

                                                              My Phone

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Icon.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Icon.html new file mode 100644 index 0000000..b898456 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Icon.html @@ -0,0 +1,63 @@ + + + + + + Icon + + + + + + + + + +
                                                              +

                                                              Icon Container

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              About

                                                              +

                                                              My Phone

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconMulti.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconMulti.html new file mode 100644 index 0000000..9d6355d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconMulti.html @@ -0,0 +1,44 @@ + + + + + + Icon Container (Multi Apps) + + + + + + + + + + +
                                                              +

                                                              Icon Container (Multi Apps)

                                                              +
                                                                +
                                                              • +
                                                                +
                                                              • +
                                                              • +
                                                                +
                                                              • +
                                                              • +
                                                                +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconSingle.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconSingle.html new file mode 100644 index 0000000..b86ad0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconSingle.html @@ -0,0 +1,36 @@ + + + + + + Icon Container (Single App) + + + + + + + + + +
                                                              +

                                                              Icon Container (Single App)

                                                              +
                                                                +
                                                              • +
                                                                +
                                                              • +
                                                              • +
                                                                +
                                                              • +
                                                              • +
                                                                +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconSingleBelow.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconSingleBelow.html new file mode 100644 index 0000000..9a8eec5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-IconSingleBelow.html @@ -0,0 +1,36 @@ + + + + + + Icon Container (Single App) + + + + + + + + + +
                                                              +

                                                              Icon Container (Single App)

                                                              +
                                                                +
                                                              • +
                                                                +
                                                              • +
                                                              • +
                                                                +
                                                              • +
                                                              • +
                                                                +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ResultList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ResultList.html new file mode 100644 index 0000000..aadbf9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ResultList.html @@ -0,0 +1,64 @@ + + + + + + Result List + + + + + + + + +
                                                              +

                                                              Search Result

                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-RoundRect.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-RoundRect.html new file mode 100644 index 0000000..2054fca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-RoundRect.html @@ -0,0 +1,26 @@ + + + + + + Round Rect + + + + + + + +
                                                              +

                                                              Round Rectangle

                                                              +
                                                              + This module provides some widgets that can be used to build web-based + applications for mobile devices such as iPhone or Android. +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-RoundRectList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-RoundRectList.html new file mode 100644 index 0000000..ef03989 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-RoundRectList.html @@ -0,0 +1,53 @@ + + + + + + Round Rect List + + + + + + + +
                                                              +

                                                              Mobile Mashup

                                                              +

                                                              Spaces

                                                              +
                                                                +
                                                              • + u1space +
                                                              • +
                                                              • + u2space +
                                                              • +
                                                              • + Wi-Fi +
                                                              • +
                                                              • + VPN +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              u1space

                                                              +

                                                              Applications

                                                              +
                                                                +
                                                              • + Video +
                                                              • +
                                                              • + Maps +
                                                              • +
                                                              • + Phone Number +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo-async.html new file mode 100644 index 0000000..55c8a37 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo-async.html @@ -0,0 +1,393 @@ + + + + + + ScrollableView demo + + + + + + + +
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              + +
                                                              + +
                                                              + +
                                                              + +
                                                              +

                                                              Generic Mobile Device

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              • + Videos +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Applications +
                                                              • +
                                                              • + Capacity +
                                                              • +
                                                              • + Available +
                                                              • +
                                                              • + Version +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +

                                                              Categories

                                                              +
                                                                +
                                                              • Category 1
                                                              • +
                                                              • Category 2
                                                              • +
                                                              • Category 3
                                                              • +
                                                              • Category 4
                                                              • +
                                                              • Category 5
                                                              • +
                                                              • Category 6
                                                              • +
                                                              • Category 7
                                                              • +
                                                              • Category 8
                                                              • +
                                                              • Category 9
                                                              • +
                                                              • Category 10
                                                              • +
                                                              • Category 11
                                                              • +
                                                              • Category 12
                                                              • +
                                                              • Category 13
                                                              • +
                                                              • Category 14
                                                              • +
                                                              • Category 15
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              News

                                                              +

                                                              Top Stories

                                                              +
                                                                +
                                                              • + Top 10 news stories of the decade +
                                                              • +
                                                              • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                              • +
                                                              • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                              • +
                                                              +
                                                              + + + +
                                                              +

                                                              Article

                                                              +
                                                              +

                                                              Did you know?

                                                              +

                                                              Features of dojox.mobile

                                                              +
                                                              No images are used
                                                              +
                                                                +
                                                              • UI parts consist of DOM and CSS3.
                                                              • +
                                                              • Only application icons are images.
                                                              • +
                                                              + +
                                                              Removed dependencies on the dojo modules as much as possible
                                                              +
                                                                +
                                                              • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                              • +
                                                              + +
                                                              Support for CSS sprite
                                                              +
                                                                +
                                                              • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                              • +
                                                              + +
                                                              Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                              +
                                                                +
                                                              • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                                +
                                                              • Featured
                                                              • +
                                                              • Categories
                                                              • +
                                                              • Top 25
                                                              • +
                                                              • Search
                                                              • +
                                                              • Updates
                                                              • +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo-long.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo-long.html new file mode 100644 index 0000000..1d0809c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo-long.html @@ -0,0 +1,389 @@ + + + + + + ScrollableView demo + + + + + + + +
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              + +
                                                              + +
                                                              + +
                                                              + +
                                                              +

                                                              Generic Mobile Device

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              • + Videos +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Applications +
                                                              • +
                                                              • + Capacity +
                                                              • +
                                                              • + Available +
                                                              • +
                                                              • + Version +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +

                                                              Categories

                                                              +
                                                                +
                                                              +
                                                              + +
                                                              +

                                                              News

                                                              +

                                                              Top Stories

                                                              +
                                                                +
                                                              • + Top 10 news stories of the decade +
                                                              • +
                                                              • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                              • +
                                                              • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                              • +
                                                              +
                                                              + + + +
                                                              +

                                                              Article

                                                              +
                                                              +

                                                              Did you know?

                                                              +

                                                              Features of dojox.mobile

                                                              +
                                                              No images are used
                                                              +
                                                                +
                                                              • UI parts consist of DOM and CSS3.
                                                              • +
                                                              • Only application icons are images.
                                                              • +
                                                              + +
                                                              Removed dependencies on the dojo modules as much as possible
                                                              +
                                                                +
                                                              • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                              • +
                                                              + +
                                                              Support for CSS sprite
                                                              +
                                                                +
                                                              • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                              • +
                                                              + +
                                                              Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                              +
                                                                +
                                                              • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                                +
                                                              • Featured
                                                              • +
                                                              • Categories
                                                              • +
                                                              • Top 25
                                                              • +
                                                              • Search
                                                              • +
                                                              • Updates
                                                              • +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo.html new file mode 100644 index 0000000..597338c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-demo.html @@ -0,0 +1,395 @@ + + + + + + ScrollableView demo + + + + + + + + +
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              + +
                                                              + +
                                                              + +
                                                              + +
                                                              +

                                                              Generic Mobile Device

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              • + Videos +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Applications +
                                                              • +
                                                              • + Capacity +
                                                              • +
                                                              • + Available +
                                                              • +
                                                              • + Version +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +

                                                              Categories

                                                              +
                                                                +
                                                              • Category 1
                                                              • +
                                                              • Category 2
                                                              • +
                                                              • Category 3
                                                              • +
                                                              • Category 4
                                                              • +
                                                              • Category 5
                                                              • +
                                                              • Category 6
                                                              • +
                                                              • Category 7
                                                              • +
                                                              • Category 8
                                                              • +
                                                              • Category 9
                                                              • +
                                                              • Category 10
                                                              • +
                                                              • Category 11
                                                              • +
                                                              • Category 12
                                                              • +
                                                              • Category 13
                                                              • +
                                                              • Category 14
                                                              • +
                                                              • Category 15
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              News

                                                              +

                                                              Top Stories

                                                              +
                                                                +
                                                              • + Top 10 news stories of the decade +
                                                              • +
                                                              • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                              • +
                                                              • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                              • +
                                                              +
                                                              + + + +
                                                              +

                                                              Article

                                                              +
                                                              +

                                                              Did you know?

                                                              +

                                                              Features of dojox.mobile

                                                              +
                                                              No images are used
                                                              +
                                                                +
                                                              • UI parts consist of DOM and CSS3.
                                                              • +
                                                              • Only application icons are images.
                                                              • +
                                                              + +
                                                              Removed dependencies on the dojo modules as much as possible
                                                              +
                                                                +
                                                              • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                              • +
                                                              + +
                                                              Support for CSS sprite
                                                              +
                                                                +
                                                              • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                              • +
                                                              + +
                                                              Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                              +
                                                                +
                                                              • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                                +
                                                              • Featured
                                                              • +
                                                              • Categories
                                                              • +
                                                              • Top 25
                                                              • +
                                                              • Search
                                                              • +
                                                              • Updates
                                                              • +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-h.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-h.html new file mode 100644 index 0000000..bb3e29d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-h.html @@ -0,0 +1,50 @@ + + + + + + ScrollableView-h + + + + + + + +
                                                              + + + + + + + + + + + + + + +
                                                              a-icon-1-41x41.png2010/03/2313:033,886mobile/tests/images
                                                              a-icon-1.png2010/03/2313:03550mobile/tests/images
                                                              a-icon-10.png2010/05/0608:57332mobile/tests/images
                                                              a-icon-11.png2010/05/0608:57343mobile/tests/images
                                                              a-icon-12.png2010/05/0608:57613mobile/tests/images
                                                              a-icon-13.png2010/05/0608:57278mobile/tests/images
                                                              a-icon-14.png2010/05/0608:57612mobile/tests/images
                                                              a-icon-15.png2010/05/0608:57765mobile/tests/images
                                                              a-icon-16.png2010/05/0608:57597mobile/tests/images
                                                              a-icon-17.png2010/05/0608:57942mobile/tests/images
                                                              a-icon-18.png2010/05/0608:57832mobile/tests/images
                                                              a-icon-2-41x41.png2010/03/2313:03923mobile/tests/images
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv-ah-af.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv-ah-af.html new file mode 100644 index 0000000..f0044b7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv-ah-af.html @@ -0,0 +1,121 @@ + + + + + + ScrollableView-hv-ah-af + + + + + + + +

                                                              Application Header Bar

                                                              +
                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                              a-icon-1-41x41.png2010/03/2313:033,886mobile/tests/images
                                                              a-icon-1.png2010/03/2313:03550mobile/tests/images
                                                              a-icon-10.png2010/05/0608:57332mobile/tests/images
                                                              a-icon-11.png2010/05/0608:57343mobile/tests/images
                                                              a-icon-12.png2010/05/0608:57613mobile/tests/images
                                                              a-icon-13.png2010/05/0608:57278mobile/tests/images
                                                              a-icon-14.png2010/05/0608:57612mobile/tests/images
                                                              a-icon-15.png2010/05/0608:57765mobile/tests/images
                                                              a-icon-16.png2010/05/0608:57597mobile/tests/images
                                                              a-icon-17.png2010/05/0608:57942mobile/tests/images
                                                              a-icon-18.png2010/05/0608:57832mobile/tests/images
                                                              a-icon-2-41x41.png2010/03/2313:03923mobile/tests/images
                                                              a-icon-2.png2010/03/2313:03644mobile/tests/images
                                                              a-icon-3.png2010/04/1306:371,346mobile/tests/images
                                                              a-icon-4.png2010/03/2313:03695mobile/tests/images
                                                              i-icon-1.png2010/03/2313:03677mobile/tests/images
                                                              i-icon-10.png2010/03/2313:03689mobile/tests/images
                                                              i-icon-2.png2010/03/2313:03680mobile/tests/images
                                                              i-icon-3.png2010/03/2313:03682mobile/tests/images
                                                              i-icon-4.png2010/03/2313:03697mobile/tests/images
                                                              i-icon-5.png2010/03/2313:03693mobile/tests/images
                                                              i-icon-6.png2010/03/2313:03694mobile/tests/images
                                                              i-icon-7.png2010/03/2313:03691mobile/tests/images
                                                              i-icon-8.png2010/03/2313:03695mobile/tests/images
                                                              i-icon-9.png2010/03/2313:03689mobile/tests/images
                                                              i-icon-all.png2010/03/2313:034,450mobile/tests/images
                                                              icon-1.png2010/05/0608:572,626mobile/tests/images
                                                              not-images.png2010/04/1306:3718,459mobile/tests/images
                                                              red-button-bg.png2010/04/1306:37178mobile/tests/images
                                                              red-button-sel-bg.png2010/04/1306:37185mobile/tests/images
                                                              test_Android-ButtonList.html2010/10/0521:092,750mobile/tests
                                                              test_Android-EdgeToEdge.html2010/10/0521:081,835mobile/tests
                                                              test_Android-EdgeToEdgeCategory.html2010/10/0521:081,615mobile/tests
                                                              test_Android-Icon.html2010/10/0521:092,634mobile/tests
                                                              test_Android-RoundRectList.html2010/10/0521:082,142mobile/tests
                                                              test_Android-Settings.html2010/10/0521:084,375mobile/tests
                                                              test_Android-Switch.html2010/10/0521:091,000mobile/tests
                                                              test_Android-TabContainer.html2010/10/0521:095,031mobile/tests
                                                              test_Android-VariableHeightList.html2010/10/0521:093,570mobile/tests
                                                              test_FixedSplitter-H2-prog.html2010/10/0322:281,089mobile/tests
                                                              test_FixedSplitter-H2.html2010/10/0322:28872mobile/tests
                                                              test_FixedSplitter-V2H2.html2010/10/0322:281,088mobile/tests
                                                              test_FixedSplitter-V3.html2010/10/0322:28996mobile/tests
                                                              test_ajax-html.html2010/10/0521:091,505mobile/tests
                                                              test_ajax-json.html2010/10/0521:081,505mobile/tests
                                                              test_anchor-label.html2010/10/0521:082,959mobile/tests
                                                              test_bookmarkable.html2010/10/0521:094,443mobile/tests
                                                              test_buttons.html2010/10/0521:08972mobile/tests
                                                              test_css-sprite.html2010/10/0521:095,779mobile/tests
                                                              test_dynamic-icons.html2010/10/0521:082,080mobile/tests
                                                              test_dynamic-items.html2010/10/0521:083,375mobile/tests
                                                              test_dynamic-view.html2010/10/0521:091,657mobile/tests
                                                              test_hash-parameter.html2010/10/0521:092,679mobile/tests
                                                              test_iPad-Settings-fixed.html2010/10/0322:288,866mobile/tests
                                                              test_iPad-Settings.html2010/10/0322:286,904mobile/tests
                                                              test_iPhone-Animation.html2010/10/0521:083,343mobile/tests
                                                              test_iPhone-Button.html2010/10/0521:091,766mobile/tests
                                                              test_iPhone-ButtonList.html2010/10/0521:092,135mobile/tests
                                                              test_iPhone-EdgeToEdge.html2010/10/0521:081,809mobile/tests
                                                              test_iPhone-EdgeToEdgeCategory.html2010/10/0521:081,613mobile/tests
                                                              test_iPhone-Heading.html2010/10/0521:081,136mobile/tests
                                                              test_iPhone-Icon.html2010/10/0521:092,588mobile/tests
                                                              test_iPhone-IconMulti.html2010/10/0521:081,863mobile/tests
                                                              test_iPhone-IconSingle.html2010/10/0521:091,814mobile/tests
                                                              test_iPhone-IconSingleBelow.html2010/10/0521:081,815mobile/tests
                                                              test_iPhone-ResultList.html2010/10/0521:082,708mobile/tests
                                                              test_iPhone-RoundRect.html2010/10/0521:081,155mobile/tests
                                                              test_iPhone-RoundRectList.html2010/10/0521:082,136mobile/tests
                                                              test_iPhone-Settings.html2010/10/0521:095,666mobile/tests
                                                              test_iPhone-Switch.html2010/10/0521:09998mobile/tests
                                                              test_iPhone-TabContainer.html2010/10/0521:095,262mobile/tests
                                                              test_iPhone-VariableHeightList.html2010/10/0521:093,550mobile/tests
                                                              test_progress-indicator.html2010/10/0521:083,124mobile/tests
                                                              test_transition-to-dynamic-view.html2010/10/0521:082,525mobile/tests
                                                              view-sample.html2010/05/0620:301,724mobile/tests
                                                              view1.html2010/05/0620:28378mobile/tests
                                                              view1.json2010/05/2800:30371mobile/tests
                                                              view2.html2010/05/0621:20619mobile/tests
                                                              view2.json2010/05/2800:30737mobile/tests
                                                              view3.html2010/10/0521:09963mobile/tests
                                                              view3.json2010/10/0521:091,054mobile/tests
                                                              widget-bg.png2010/03/2313:0326,234mobile/tests/images
                                                              +
                                                              +

                                                              Application Footer Bar

                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv-vh-vf.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv-vh-vf.html new file mode 100644 index 0000000..2e322e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv-vh-vf.html @@ -0,0 +1,121 @@ + + + + + + ScrollableView-hv-vh-vf + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                              a-icon-1-41x41.png2010/03/2313:033,886mobile/tests/images
                                                              a-icon-1.png2010/03/2313:03550mobile/tests/images
                                                              a-icon-10.png2010/05/0608:57332mobile/tests/images
                                                              a-icon-11.png2010/05/0608:57343mobile/tests/images
                                                              a-icon-12.png2010/05/0608:57613mobile/tests/images
                                                              a-icon-13.png2010/05/0608:57278mobile/tests/images
                                                              a-icon-14.png2010/05/0608:57612mobile/tests/images
                                                              a-icon-15.png2010/05/0608:57765mobile/tests/images
                                                              a-icon-16.png2010/05/0608:57597mobile/tests/images
                                                              a-icon-17.png2010/05/0608:57942mobile/tests/images
                                                              a-icon-18.png2010/05/0608:57832mobile/tests/images
                                                              a-icon-2-41x41.png2010/03/2313:03923mobile/tests/images
                                                              a-icon-2.png2010/03/2313:03644mobile/tests/images
                                                              a-icon-3.png2010/04/1306:371,346mobile/tests/images
                                                              a-icon-4.png2010/03/2313:03695mobile/tests/images
                                                              i-icon-1.png2010/03/2313:03677mobile/tests/images
                                                              i-icon-10.png2010/03/2313:03689mobile/tests/images
                                                              i-icon-2.png2010/03/2313:03680mobile/tests/images
                                                              i-icon-3.png2010/03/2313:03682mobile/tests/images
                                                              i-icon-4.png2010/03/2313:03697mobile/tests/images
                                                              i-icon-5.png2010/03/2313:03693mobile/tests/images
                                                              i-icon-6.png2010/03/2313:03694mobile/tests/images
                                                              i-icon-7.png2010/03/2313:03691mobile/tests/images
                                                              i-icon-8.png2010/03/2313:03695mobile/tests/images
                                                              i-icon-9.png2010/03/2313:03689mobile/tests/images
                                                              i-icon-all.png2010/03/2313:034,450mobile/tests/images
                                                              icon-1.png2010/05/0608:572,626mobile/tests/images
                                                              not-images.png2010/04/1306:3718,459mobile/tests/images
                                                              red-button-bg.png2010/04/1306:37178mobile/tests/images
                                                              red-button-sel-bg.png2010/04/1306:37185mobile/tests/images
                                                              test_Android-ButtonList.html2010/10/0521:092,750mobile/tests
                                                              test_Android-EdgeToEdge.html2010/10/0521:081,835mobile/tests
                                                              test_Android-EdgeToEdgeCategory.html2010/10/0521:081,615mobile/tests
                                                              test_Android-Icon.html2010/10/0521:092,634mobile/tests
                                                              test_Android-RoundRectList.html2010/10/0521:082,142mobile/tests
                                                              test_Android-Settings.html2010/10/0521:084,375mobile/tests
                                                              test_Android-Switch.html2010/10/0521:091,000mobile/tests
                                                              test_Android-TabContainer.html2010/10/0521:095,031mobile/tests
                                                              test_Android-VariableHeightList.html2010/10/0521:093,570mobile/tests
                                                              test_FixedSplitter-H2-prog.html2010/10/0322:281,089mobile/tests
                                                              test_FixedSplitter-H2.html2010/10/0322:28872mobile/tests
                                                              test_FixedSplitter-V2H2.html2010/10/0322:281,088mobile/tests
                                                              test_FixedSplitter-V3.html2010/10/0322:28996mobile/tests
                                                              test_ajax-html.html2010/10/0521:091,505mobile/tests
                                                              test_ajax-json.html2010/10/0521:081,505mobile/tests
                                                              test_anchor-label.html2010/10/0521:082,959mobile/tests
                                                              test_bookmarkable.html2010/10/0521:094,443mobile/tests
                                                              test_buttons.html2010/10/0521:08972mobile/tests
                                                              test_css-sprite.html2010/10/0521:095,779mobile/tests
                                                              test_dynamic-icons.html2010/10/0521:082,080mobile/tests
                                                              test_dynamic-items.html2010/10/0521:083,375mobile/tests
                                                              test_dynamic-view.html2010/10/0521:091,657mobile/tests
                                                              test_hash-parameter.html2010/10/0521:092,679mobile/tests
                                                              test_iPad-Settings-fixed.html2010/10/0322:288,866mobile/tests
                                                              test_iPad-Settings.html2010/10/0322:286,904mobile/tests
                                                              test_iPhone-Animation.html2010/10/0521:083,343mobile/tests
                                                              test_iPhone-Button.html2010/10/0521:091,766mobile/tests
                                                              test_iPhone-ButtonList.html2010/10/0521:092,135mobile/tests
                                                              test_iPhone-EdgeToEdge.html2010/10/0521:081,809mobile/tests
                                                              test_iPhone-EdgeToEdgeCategory.html2010/10/0521:081,613mobile/tests
                                                              test_iPhone-Heading.html2010/10/0521:081,136mobile/tests
                                                              test_iPhone-Icon.html2010/10/0521:092,588mobile/tests
                                                              test_iPhone-IconMulti.html2010/10/0521:081,863mobile/tests
                                                              test_iPhone-IconSingle.html2010/10/0521:091,814mobile/tests
                                                              test_iPhone-IconSingleBelow.html2010/10/0521:081,815mobile/tests
                                                              test_iPhone-ResultList.html2010/10/0521:082,708mobile/tests
                                                              test_iPhone-RoundRect.html2010/10/0521:081,155mobile/tests
                                                              test_iPhone-RoundRectList.html2010/10/0521:082,136mobile/tests
                                                              test_iPhone-Settings.html2010/10/0521:095,666mobile/tests
                                                              test_iPhone-Switch.html2010/10/0521:09998mobile/tests
                                                              test_iPhone-TabContainer.html2010/10/0521:095,262mobile/tests
                                                              test_iPhone-VariableHeightList.html2010/10/0521:093,550mobile/tests
                                                              test_progress-indicator.html2010/10/0521:083,124mobile/tests
                                                              test_transition-to-dynamic-view.html2010/10/0521:082,525mobile/tests
                                                              view-sample.html2010/05/0620:301,724mobile/tests
                                                              view1.html2010/05/0620:28378mobile/tests
                                                              view1.json2010/05/2800:30371mobile/tests
                                                              view2.html2010/05/0621:20619mobile/tests
                                                              view2.json2010/05/2800:30737mobile/tests
                                                              view3.html2010/10/0521:09963mobile/tests
                                                              view3.json2010/10/0521:091,054mobile/tests
                                                              widget-bg.png2010/03/2313:0326,234mobile/tests/images
                                                              +

                                                              View Footer Bar

                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv.html new file mode 100644 index 0000000..d9c7e70 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-hv.html @@ -0,0 +1,120 @@ + + + + + + ScrollableView-hv + + + + + + + +
                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                              a-icon-1-41x41.png2010/03/2313:033,886mobile/tests/images
                                                              a-icon-1.png2010/03/2313:03550mobile/tests/images
                                                              a-icon-10.png2010/05/0608:57332mobile/tests/images
                                                              a-icon-11.png2010/05/0608:57343mobile/tests/images
                                                              a-icon-12.png2010/05/0608:57613mobile/tests/images
                                                              a-icon-13.png2010/05/0608:57278mobile/tests/images
                                                              a-icon-14.png2010/05/0608:57612mobile/tests/images
                                                              a-icon-15.png2010/05/0608:57765mobile/tests/images
                                                              a-icon-16.png2010/05/0608:57597mobile/tests/images
                                                              a-icon-17.png2010/05/0608:57942mobile/tests/images
                                                              a-icon-18.png2010/05/0608:57832mobile/tests/images
                                                              a-icon-2-41x41.png2010/03/2313:03923mobile/tests/images
                                                              a-icon-2.png2010/03/2313:03644mobile/tests/images
                                                              a-icon-3.png2010/04/1306:371,346mobile/tests/images
                                                              a-icon-4.png2010/03/2313:03695mobile/tests/images
                                                              i-icon-1.png2010/03/2313:03677mobile/tests/images
                                                              i-icon-10.png2010/03/2313:03689mobile/tests/images
                                                              i-icon-2.png2010/03/2313:03680mobile/tests/images
                                                              i-icon-3.png2010/03/2313:03682mobile/tests/images
                                                              i-icon-4.png2010/03/2313:03697mobile/tests/images
                                                              i-icon-5.png2010/03/2313:03693mobile/tests/images
                                                              i-icon-6.png2010/03/2313:03694mobile/tests/images
                                                              i-icon-7.png2010/03/2313:03691mobile/tests/images
                                                              i-icon-8.png2010/03/2313:03695mobile/tests/images
                                                              i-icon-9.png2010/03/2313:03689mobile/tests/images
                                                              i-icon-all.png2010/03/2313:034,450mobile/tests/images
                                                              icon-1.png2010/05/0608:572,626mobile/tests/images
                                                              not-images.png2010/04/1306:3718,459mobile/tests/images
                                                              red-button-bg.png2010/04/1306:37178mobile/tests/images
                                                              red-button-sel-bg.png2010/04/1306:37185mobile/tests/images
                                                              test_Android-ButtonList.html2010/10/0521:092,750mobile/tests
                                                              test_Android-EdgeToEdge.html2010/10/0521:081,835mobile/tests
                                                              test_Android-EdgeToEdgeCategory.html2010/10/0521:081,615mobile/tests
                                                              test_Android-Icon.html2010/10/0521:092,634mobile/tests
                                                              test_Android-RoundRectList.html2010/10/0521:082,142mobile/tests
                                                              test_Android-Settings.html2010/10/0521:084,375mobile/tests
                                                              test_Android-Switch.html2010/10/0521:091,000mobile/tests
                                                              test_Android-TabContainer.html2010/10/0521:095,031mobile/tests
                                                              test_Android-VariableHeightList.html2010/10/0521:093,570mobile/tests
                                                              test_FixedSplitter-H2-prog.html2010/10/0322:281,089mobile/tests
                                                              test_FixedSplitter-H2.html2010/10/0322:28872mobile/tests
                                                              test_FixedSplitter-V2H2.html2010/10/0322:281,088mobile/tests
                                                              test_FixedSplitter-V3.html2010/10/0322:28996mobile/tests
                                                              test_ajax-html.html2010/10/0521:091,505mobile/tests
                                                              test_ajax-json.html2010/10/0521:081,505mobile/tests
                                                              test_anchor-label.html2010/10/0521:082,959mobile/tests
                                                              test_bookmarkable.html2010/10/0521:094,443mobile/tests
                                                              test_buttons.html2010/10/0521:08972mobile/tests
                                                              test_css-sprite.html2010/10/0521:095,779mobile/tests
                                                              test_dynamic-icons.html2010/10/0521:082,080mobile/tests
                                                              test_dynamic-items.html2010/10/0521:083,375mobile/tests
                                                              test_dynamic-view.html2010/10/0521:091,657mobile/tests
                                                              test_hash-parameter.html2010/10/0521:092,679mobile/tests
                                                              test_iPad-Settings-fixed.html2010/10/0322:288,866mobile/tests
                                                              test_iPad-Settings.html2010/10/0322:286,904mobile/tests
                                                              test_iPhone-Animation.html2010/10/0521:083,343mobile/tests
                                                              test_iPhone-Button.html2010/10/0521:091,766mobile/tests
                                                              test_iPhone-ButtonList.html2010/10/0521:092,135mobile/tests
                                                              test_iPhone-EdgeToEdge.html2010/10/0521:081,809mobile/tests
                                                              test_iPhone-EdgeToEdgeCategory.html2010/10/0521:081,613mobile/tests
                                                              test_iPhone-Heading.html2010/10/0521:081,136mobile/tests
                                                              test_iPhone-Icon.html2010/10/0521:092,588mobile/tests
                                                              test_iPhone-IconMulti.html2010/10/0521:081,863mobile/tests
                                                              test_iPhone-IconSingle.html2010/10/0521:091,814mobile/tests
                                                              test_iPhone-IconSingleBelow.html2010/10/0521:081,815mobile/tests
                                                              test_iPhone-ResultList.html2010/10/0521:082,708mobile/tests
                                                              test_iPhone-RoundRect.html2010/10/0521:081,155mobile/tests
                                                              test_iPhone-RoundRectList.html2010/10/0521:082,136mobile/tests
                                                              test_iPhone-Settings.html2010/10/0521:095,666mobile/tests
                                                              test_iPhone-Switch.html2010/10/0521:09998mobile/tests
                                                              test_iPhone-TabContainer.html2010/10/0521:095,262mobile/tests
                                                              test_iPhone-VariableHeightList.html2010/10/0521:093,550mobile/tests
                                                              test_progress-indicator.html2010/10/0521:083,124mobile/tests
                                                              test_transition-to-dynamic-view.html2010/10/0521:082,525mobile/tests
                                                              view-sample.html2010/05/0620:301,724mobile/tests
                                                              view1.html2010/05/0620:28378mobile/tests
                                                              view1.json2010/05/2800:30371mobile/tests
                                                              view2.html2010/05/0621:20619mobile/tests
                                                              view2.json2010/05/2800:30737mobile/tests
                                                              view3.html2010/10/0521:09963mobile/tests
                                                              view3.json2010/10/0521:091,054mobile/tests
                                                              widget-bg.png2010/03/2313:0326,234mobile/tests/images
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-short-inp.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-short-inp.html new file mode 100644 index 0000000..4d29717 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-short-inp.html @@ -0,0 +1,84 @@ + + + + + + ScrollableView-v-vh-vf + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                                +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +

                                                              View Footer Bar

                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +

                                                              Another View Footer Bar

                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-short.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-short.html new file mode 100644 index 0000000..08a0301 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-short.html @@ -0,0 +1,84 @@ + + + + + + ScrollableView-v-vh-vf + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                                +
                                                              • + Slide 1 +
                                                              • +
                                                              • + Flip 2 +
                                                              • +
                                                              +

                                                              View Footer Bar

                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +

                                                              Another View Footer Bar

                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-ah-af-inp.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-ah-af-inp.html new file mode 100644 index 0000000..ab006c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-ah-af-inp.html @@ -0,0 +1,172 @@ + + + + + + ScrollableView-v-ah-af + + + + + + + +

                                                              Application Header Bar

                                                              +
                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: application-header
                                                              + footer: application-footer
                                                              +
                                                              + +
                                                                +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +
                                                              + +
                                                              + +
                                                              +

                                                              Application Footer Bar

                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-ah-af.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-ah-af.html new file mode 100644 index 0000000..b1da855 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-ah-af.html @@ -0,0 +1,163 @@ + + + + + + ScrollableView-v-ah-af + + + + + + + +

                                                              Application Header Bar

                                                              +
                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: application-header
                                                              + footer: application-footer
                                                              +
                                                              + +
                                                                +
                                                              • + Slide 1 +
                                                              • +
                                                              • + Flip 2 +
                                                              • +
                                                              • + Fade 3 +
                                                              • +
                                                              • + Slide 4 +
                                                              • +
                                                              • + Flip 5 +
                                                              • +
                                                              • + Fade 6 +
                                                              • +
                                                              • + Slide 7 +
                                                              • +
                                                              • + Flip 8 +
                                                              • +
                                                              • + Fade 9 +
                                                              • +
                                                              • + Slide 10 +
                                                              • +
                                                              • + Flip 11 +
                                                              • +
                                                              • + Fade 12 +
                                                              • +
                                                              • + Slide 13 +
                                                              • +
                                                              • + Flip 14 +
                                                              • +
                                                              • + Fade 15 +
                                                              • +
                                                              • + Slide 16 +
                                                              • +
                                                              • + Flip 17 +
                                                              • +
                                                              • + Fade 18 +
                                                              • +
                                                              • + Slide 19 +
                                                              • +
                                                              • + Flip 20 +
                                                              • +
                                                              • + Fade 21 +
                                                              • +
                                                              • + Slide 22 +
                                                              • +
                                                              • + Flip 23 +
                                                              • +
                                                              • + Fade 24 +
                                                              • +
                                                              • + Slide 25 +
                                                              • +
                                                              • + Flip 26 +
                                                              • +
                                                              • + Fade 27 +
                                                              • +
                                                              +
                                                              + +
                                                              + +
                                                              +

                                                              Application Footer Bar

                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-inp.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-inp.html new file mode 100644 index 0000000..91b5586 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-inp.html @@ -0,0 +1,171 @@ + + + + + + ScrollableView-v + + + + + + + +
                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: none
                                                              + footer: none
                                                              +
                                                              + +
                                                                +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              + +

                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-af-inp.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-af-inp.html new file mode 100644 index 0000000..d07f9de --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-af-inp.html @@ -0,0 +1,173 @@ + + + + + + ScrollableView-v-vh-af + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: view-header
                                                              + footer: application-footer
                                                              +
                                                              + +
                                                                +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              +

                                                              Application Footer Bar

                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-af.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-af.html new file mode 100644 index 0000000..3247e1f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-af.html @@ -0,0 +1,164 @@ + + + + + + ScrollableView-v-vh-af + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: view-header
                                                              + footer: application-footer
                                                              +
                                                              + +
                                                                +
                                                              • + Slide 1 +
                                                              • +
                                                              • + Flip 2 +
                                                              • +
                                                              • + Fade 3 +
                                                              • +
                                                              • + Slide 4 +
                                                              • +
                                                              • + Flip 5 +
                                                              • +
                                                              • + Fade 6 +
                                                              • +
                                                              • + Slide 7 +
                                                              • +
                                                              • + Flip 8 +
                                                              • +
                                                              • + Fade 9 +
                                                              • +
                                                              • + Slide 10 +
                                                              • +
                                                              • + Flip 11 +
                                                              • +
                                                              • + Fade 12 +
                                                              • +
                                                              • + Slide 13 +
                                                              • +
                                                              • + Flip 14 +
                                                              • +
                                                              • + Fade 15 +
                                                              • +
                                                              • + Slide 16 +
                                                              • +
                                                              • + Flip 17 +
                                                              • +
                                                              • + Fade 18 +
                                                              • +
                                                              • + Slide 19 +
                                                              • +
                                                              • + Flip 20 +
                                                              • +
                                                              • + Fade 21 +
                                                              • +
                                                              • + Slide 22 +
                                                              • +
                                                              • + Flip 23 +
                                                              • +
                                                              • + Fade 24 +
                                                              • +
                                                              • + Slide 25 +
                                                              • +
                                                              • + Flip 26 +
                                                              • +
                                                              • + Fade 27 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              +

                                                              Application Footer Bar

                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-inp.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-inp.html new file mode 100644 index 0000000..931d8c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-inp.html @@ -0,0 +1,172 @@ + + + + + + ScrollableView-v-vh + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: view-header
                                                              + footer: none
                                                              +
                                                              + +
                                                                +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-vf-inp.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-vf-inp.html new file mode 100644 index 0000000..a7db815 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-vf-inp.html @@ -0,0 +1,174 @@ + + + + + + ScrollableView-v-vh-vf + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: view-header
                                                              + footer: view-footer
                                                              +
                                                              + +
                                                                +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              • + +
                                                              • +
                                                              +

                                                              View Footer Bar

                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +

                                                              Another View Footer Bar

                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-vf.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-vf.html new file mode 100644 index 0000000..9781cda --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh-vf.html @@ -0,0 +1,165 @@ + + + + + + ScrollableView-v-vh-vf + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: view-header
                                                              + footer: view-footer
                                                              +
                                                              + +
                                                                +
                                                              • + Slide 1 +
                                                              • +
                                                              • + Flip 2 +
                                                              • +
                                                              • + Fade 3 +
                                                              • +
                                                              • + Slide 4 +
                                                              • +
                                                              • + Flip 5 +
                                                              • +
                                                              • + Fade 6 +
                                                              • +
                                                              • + Slide 7 +
                                                              • +
                                                              • + Flip 8 +
                                                              • +
                                                              • + Fade 9 +
                                                              • +
                                                              • + Slide 10 +
                                                              • +
                                                              • + Flip 11 +
                                                              • +
                                                              • + Fade 12 +
                                                              • +
                                                              • + Slide 13 +
                                                              • +
                                                              • + Flip 14 +
                                                              • +
                                                              • + Fade 15 +
                                                              • +
                                                              • + Slide 16 +
                                                              • +
                                                              • + Flip 17 +
                                                              • +
                                                              • + Fade 18 +
                                                              • +
                                                              • + Slide 19 +
                                                              • +
                                                              • + Flip 20 +
                                                              • +
                                                              • + Fade 21 +
                                                              • +
                                                              • + Slide 22 +
                                                              • +
                                                              • + Flip 23 +
                                                              • +
                                                              • + Fade 24 +
                                                              • +
                                                              • + Slide 25 +
                                                              • +
                                                              • + Flip 26 +
                                                              • +
                                                              • + Fade 27 +
                                                              • +
                                                              +

                                                              View Footer Bar

                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +

                                                              Another View Footer Bar

                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh.html new file mode 100644 index 0000000..490cffc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v-vh.html @@ -0,0 +1,163 @@ + + + + + + ScrollableView-v-vh + + + + + + + +
                                                              +

                                                              View Header Bar

                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: view-header
                                                              + footer: none
                                                              +
                                                              + +
                                                                +
                                                              • + Slide 1 +
                                                              • +
                                                              • + Flip 2 +
                                                              • +
                                                              • + Fade 3 +
                                                              • +
                                                              • + Slide 4 +
                                                              • +
                                                              • + Flip 5 +
                                                              • +
                                                              • + Fade 6 +
                                                              • +
                                                              • + Slide 7 +
                                                              • +
                                                              • + Flip 8 +
                                                              • +
                                                              • + Fade 9 +
                                                              • +
                                                              • + Slide 10 +
                                                              • +
                                                              • + Flip 11 +
                                                              • +
                                                              • + Fade 12 +
                                                              • +
                                                              • + Slide 13 +
                                                              • +
                                                              • + Flip 14 +
                                                              • +
                                                              • + Fade 15 +
                                                              • +
                                                              • + Slide 16 +
                                                              • +
                                                              • + Flip 17 +
                                                              • +
                                                              • + Fade 18 +
                                                              • +
                                                              • + Slide 19 +
                                                              • +
                                                              • + Flip 20 +
                                                              • +
                                                              • + Fade 21 +
                                                              • +
                                                              • + Slide 22 +
                                                              • +
                                                              • + Flip 23 +
                                                              • +
                                                              • + Fade 24 +
                                                              • +
                                                              • + Slide 25 +
                                                              • +
                                                              • + Flip 26 +
                                                              • +
                                                              • + Fade 27 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v.html new file mode 100644 index 0000000..b07b3fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-ScrollableView-v.html @@ -0,0 +1,162 @@ + + + + + + ScrollableView-v + + + + + + + +
                                                              +

                                                              Transition Effects

                                                              + +
                                                              + scrollDir: vertical
                                                              + header: none
                                                              + footer: none
                                                              +
                                                              + +
                                                                +
                                                              • + Slide 1 +
                                                              • +
                                                              • + Flip 2 +
                                                              • +
                                                              • + Fade 3 +
                                                              • +
                                                              • + Slide 4 +
                                                              • +
                                                              • + Flip 5 +
                                                              • +
                                                              • + Fade 6 +
                                                              • +
                                                              • + Slide 7 +
                                                              • +
                                                              • + Flip 8 +
                                                              • +
                                                              • + Fade 9 +
                                                              • +
                                                              • + Slide 10 +
                                                              • +
                                                              • + Flip 11 +
                                                              • +
                                                              • + Fade 12 +
                                                              • +
                                                              • + Slide 13 +
                                                              • +
                                                              • + Flip 14 +
                                                              • +
                                                              • + Fade 15 +
                                                              • +
                                                              • + Slide 16 +
                                                              • +
                                                              • + Flip 17 +
                                                              • +
                                                              • + Fade 18 +
                                                              • +
                                                              • + Slide 19 +
                                                              • +
                                                              • + Flip 20 +
                                                              • +
                                                              • + Fade 21 +
                                                              • +
                                                              • + Slide 22 +
                                                              • +
                                                              • + Flip 23 +
                                                              • +
                                                              • + Fade 24 +
                                                              • +
                                                              • + Slide 25 +
                                                              • +
                                                              • + Flip 26 +
                                                              • +
                                                              • + Fade 27 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Settings.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Settings.html new file mode 100644 index 0000000..8934298 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Settings.html @@ -0,0 +1,167 @@ + + + + + + Settings + + + + + + + +
                                                              +

                                                              Settings

                                                              +
                                                                +
                                                              • + Airplane Mode +
                                                                +
                                                              • +
                                                              • + Wi-Fi +
                                                              • +
                                                              • + Carrier +
                                                              • +
                                                              + +
                                                                +
                                                              • + Sounds +
                                                              • +
                                                              • + Brightness +
                                                              • +
                                                              • + Wallpaper +
                                                              • +
                                                              + +
                                                                +
                                                              • + General +
                                                              • +
                                                              • + Mail, Contacts, Calendars +
                                                              • +
                                                              • + Phone +
                                                              • +
                                                              • + Safari +
                                                              • +
                                                              • + SMS/MMS +
                                                              • +
                                                              • + iPod +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Store +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              General

                                                              +
                                                                +
                                                              • + About +
                                                              • +
                                                              • + Usage +
                                                              • +
                                                              + +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Bluetooth +
                                                              • +
                                                              • + Location Services +
                                                              • +
                                                              + +
                                                                +
                                                              • + Auto-Lock +
                                                              • +
                                                              • + Passcode Lock +
                                                              • +
                                                              • + Restrictions +
                                                              • +
                                                              + +
                                                                +
                                                              • + Home +
                                                              • +
                                                              • + Date & Time +
                                                              • +
                                                              • + Keyboard +
                                                              • +
                                                              • + International +
                                                              • +
                                                              • + Accessibility +
                                                              • +
                                                              + +
                                                                +
                                                              • + Reset +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              About

                                                              +

                                                              Generic Mobile Device

                                                              +
                                                                +
                                                              • + Network +
                                                              • +
                                                              • + Line +
                                                              • +
                                                              • + Songs +
                                                              • +
                                                              • + Videos +
                                                              • +
                                                              • + Photos +
                                                              • +
                                                              • + Applications +
                                                              • +
                                                              • + Capacity +
                                                              • +
                                                              • + Available +
                                                              • +
                                                              • + Version +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-demo-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-demo-async.html new file mode 100644 index 0000000..0bd141c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-demo-async.html @@ -0,0 +1,219 @@ + + + + + + SwapView + + + + + + + + + +
                                                              +
                                                              +
                                                              +
                                                                +
                                                              • +
                                                                Gold
                                                                +
                                                                3,400.20
                                                                +
                                                                +1.57%
                                                                +
                                                              • +
                                                              • +
                                                                Oil
                                                                +
                                                                347.26
                                                                +
                                                                -0.82%
                                                                +
                                                              • +
                                                              • +
                                                                Commodities
                                                                +
                                                                541.77
                                                                +
                                                                -0.43%
                                                                + +
                                                              • +
                                                              • +
                                                                Silver
                                                                +
                                                                12,823.94
                                                                +
                                                                +0.17%
                                                                +
                                                              • +
                                                                Soybeans
                                                                +
                                                                18.19
                                                                +
                                                                +2.77%
                                                                +
                                                              • +
                                                              • +
                                                                Wheat
                                                                +
                                                                3,335
                                                                +
                                                                +1.62%
                                                                +
                                                              • +
                                                              • +
                                                                Corn
                                                                +
                                                                29,930
                                                                +
                                                                +1.15%
                                                                +
                                                              • +
                                                              • +
                                                                Sugar
                                                                +
                                                                172.15
                                                                +
                                                                +0.00%
                                                                +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              +
                                                                +
                                                              • + Oil prices rise as dollar weakens +
                                                                Daily News - 2011/05/02 15:40
                                                                +
                                                              • +
                                                              • + Same Old Story For Air Service Costs +
                                                                Daily News - 2011/05/02 14:30
                                                                +
                                                              • +
                                                              • + Local stocks mixed despite new trade data +
                                                                Daily News - 2011/05/02 14:10
                                                                +
                                                              • + +
                                                              • + Stocks point higher after economic data +
                                                                Daily News - 2011/05/02 11:00
                                                                +
                                                              • +
                                                              • + Wall St seen higher after industry forecasts +
                                                                Daily News - 2011/05/01 16:05
                                                                +
                                                              • +
                                                              • + Stocks drop on slower job creation +
                                                                Daily News - 2011/05/01 15:50
                                                                +
                                                              • +
                                                              • + Dollar initially falls after revised jobs report +
                                                                Daily News - 2011/05/01 13:20
                                                                +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + + + + + + + + +
                                                              2 Yr Bond113.750.000.00%
                                                              N22510,004.20154.461.57%
                                                              JKSE3,816.4432.87-0.85%
                                                              Seoul2,200.7328.231.27%
                                                              TW8,946.0861.79-0.69%
                                                              Tokyo2,932.1920.68-0.71%
                                                              All4,854.7041.50-0.85%
                                                              +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-demo.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-demo.html new file mode 100644 index 0000000..1c5300b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-demo.html @@ -0,0 +1,217 @@ + + + + + + SwapView + + + + + + + + + + +
                                                              +
                                                              +
                                                              +
                                                                +
                                                              • +
                                                                Gold
                                                                +
                                                                3,400.20
                                                                +
                                                                +1.57%
                                                                +
                                                              • +
                                                              • +
                                                                Oil
                                                                +
                                                                347.26
                                                                +
                                                                -0.82%
                                                                +
                                                              • +
                                                              • +
                                                                Commodities
                                                                +
                                                                541.77
                                                                +
                                                                -0.43%
                                                                + +
                                                              • +
                                                              • +
                                                                Silver
                                                                +
                                                                12,823.94
                                                                +
                                                                +0.17%
                                                                +
                                                              • +
                                                                Soybeans
                                                                +
                                                                18.19
                                                                +
                                                                +2.77%
                                                                +
                                                              • +
                                                              • +
                                                                Wheat
                                                                +
                                                                3,335
                                                                +
                                                                +1.62%
                                                                +
                                                              • +
                                                              • +
                                                                Corn
                                                                +
                                                                29,930
                                                                +
                                                                +1.15%
                                                                +
                                                              • +
                                                              • +
                                                                Sugar
                                                                +
                                                                172.15
                                                                +
                                                                +0.00%
                                                                +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              +
                                                                +
                                                              • + Oil prices rise as dollar weakens +
                                                                Daily News - 2011/05/02 15:40
                                                                +
                                                              • +
                                                              • + Same Old Story For Air Service Costs +
                                                                Daily News - 2011/05/02 14:30
                                                                +
                                                              • +
                                                              • + Local stocks mixed despite new trade data +
                                                                Daily News - 2011/05/02 14:10
                                                                +
                                                              • + +
                                                              • + Stocks point higher after economic data +
                                                                Daily News - 2011/05/02 11:00
                                                                +
                                                              • +
                                                              • + Wall St seen higher after industry forecasts +
                                                                Daily News - 2011/05/01 16:05
                                                                +
                                                              • +
                                                              • + Stocks drop on slower job creation +
                                                                Daily News - 2011/05/01 15:50
                                                                +
                                                              • +
                                                              • + Dollar initially falls after revised jobs report +
                                                                Daily News - 2011/05/01 13:20
                                                                +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + + + + + + + + +
                                                              2 Yr Bond113.750.000.00%
                                                              N22510,004.20154.461.57%
                                                              JKSE3,816.4432.87-0.85%
                                                              Seoul2,200.7328.231.27%
                                                              TW8,946.0861.79-0.69%
                                                              Tokyo2,932.1920.68-0.71%
                                                              All4,854.7041.50-0.85%
                                                              +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-slideshow-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-slideshow-async.html new file mode 100644 index 0000000..4bfd4da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-slideshow-async.html @@ -0,0 +1,98 @@ + + + + + + SwapView Slideshow + + + + + + + + +
                                                              +

                                                              My Pictures

                                                              + +
                                                              + +
                                                              +

                                                              May 3, 2011

                                                              + +
                                                              + +
                                                              +

                                                              May 3, 2011

                                                              + +
                                                              + +
                                                              +

                                                              May 3, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-slideshow.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-slideshow.html new file mode 100644 index 0000000..04ef8c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView-slideshow.html @@ -0,0 +1,95 @@ + + + + + + SwapView Slideshow + + + + + + + + +
                                                              +

                                                              My Pictures

                                                              + +
                                                              + +
                                                              +

                                                              May 3, 2011

                                                              + +
                                                              + +
                                                              +

                                                              May 3, 2011

                                                              + +
                                                              + +
                                                              +

                                                              May 3, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              +

                                                              Apr 24, 2011

                                                              + +
                                                              + +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView.html new file mode 100644 index 0000000..a545500 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-SwapView.html @@ -0,0 +1,83 @@ + + + + + + SwapView + + + + + + + + +
                                                              +

                                                              Page flipping demo

                                                              + +
                                                              + Swipe the screen left or right to flip between the views. + There are 4 views in this demo. + Vertical scrolling and page indicator are not supported. +
                                                              +
                                                              + +
                                                              +

                                                              Search Result

                                                              + +
                                                              + +
                                                              +

                                                              Icon Container 1

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Icon Container 2

                                                              +
                                                                +
                                                              • +
                                                              • +
                                                              • +
                                                              +
                                                              + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Switch.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Switch.html new file mode 100644 index 0000000..42c4be6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-Switch.html @@ -0,0 +1,76 @@ + + + + + + Switch + + + + + + + + + +
                                                              +
                                                              + Default Shape
                                                              +
                                                              +
                                                              +
                                                              + +
                                                              + Round Shape 1
                                                              +
                                                              +
                                                              +
                                                              + +
                                                              + Round Shape 2
                                                              +
                                                              +
                                                              +
                                                              + +
                                                              + Arc Shape 1
                                                              +
                                                              +
                                                              +
                                                              + +
                                                              + Arc Shape 2
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg-grouped-scroll.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg-grouped-scroll.html new file mode 100644 index 0000000..8f3830e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg-grouped-scroll.html @@ -0,0 +1,182 @@ + + + + + + TabBar - Segmented Control + + + + + + + + + + +
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              + +
                                                              + +
                                                              +
                                                                +
                                                              • + Sounds +
                                                              • +
                                                              • + Brightness +
                                                              • +
                                                              • + Wallpaper +
                                                              • +
                                                              +
                                                              + +
                                                              +
                                                                +
                                                              • + General +
                                                              • +
                                                              • + Mail, Contacts, Calendars +
                                                              • +
                                                              • + Phone +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +

                                                              + Hello +

                                                              +
                                                                +
                                                              • + Hello +
                                                              • +
                                                              • + Carrier +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg-grouped.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg-grouped.html new file mode 100644 index 0000000..c5f7d79 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg-grouped.html @@ -0,0 +1,177 @@ + + + + + + TabBar - Segmented Control + + + + + + + + + + +
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              + +
                                                              + +
                                                              +
                                                                +
                                                              • + Sounds +
                                                              • +
                                                              • + Brightness +
                                                              • +
                                                              • + Wallpaper +
                                                              • +
                                                              +
                                                              + +
                                                              +
                                                                +
                                                              • + General +
                                                              • +
                                                              • + Mail, Contacts, Calendars +
                                                              • +
                                                              • + Phone +
                                                              • +
                                                              +
                                                              +
                                                              + +
                                                              +

                                                              + Hello +

                                                              +
                                                                +
                                                              • + Hello +
                                                              • +
                                                              • + Carrier +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg.html new file mode 100644 index 0000000..b101769 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar-seg.html @@ -0,0 +1,161 @@ + + + + + + TabBar - Segmented Control + + + + + + + + + + +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              + +
                                                              + +
                                                              +
                                                                +
                                                              • + Sounds +
                                                              • +
                                                              • + Brightness +
                                                              • +
                                                              • + Wallpaper +
                                                              • +
                                                              +
                                                              + +
                                                              +
                                                                +
                                                              • + General +
                                                              • +
                                                              • + Mail, Contacts, Calendars +
                                                              • +
                                                              • + Phone +
                                                              • +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar.html new file mode 100644 index 0000000..4c1620b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-TabBar.html @@ -0,0 +1,65 @@ + + + + + + TabBar + + + + + + + + + +
                                                              Segmented Control
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              Tab Bar
                                                              +
                                                                +
                                                              • New
                                                              • +
                                                              • What's Hot
                                                              • +
                                                              • Genius
                                                              • +
                                                              + +
                                                              Tab Bar (CSS Sprite)
                                                              +
                                                                +
                                                              • Featured
                                                              • +
                                                              • Categories
                                                              • +
                                                              • Top 25
                                                              • +
                                                              • Search
                                                              • +
                                                              • Updates
                                                              • +
                                                              + +
                                                              +
                                                              View 1
                                                              +
                                                              +
                                                              +
                                                              View 2
                                                              +
                                                              +
                                                              +
                                                              View 3
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-VariableHeightList.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-VariableHeightList.html new file mode 100755 index 0000000..8de6ba0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_iPhone-VariableHeightList.html @@ -0,0 +1,98 @@ + + + + + + News + + + + + + + + +
                                                              +

                                                              News

                                                              +

                                                              Top Stories

                                                              +
                                                                +
                                                              • + Top 10 news stories of the decade +
                                                              • +
                                                              • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                              • +
                                                              • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Article

                                                              +
                                                              +

                                                              Did you know?

                                                              +

                                                              Features of dojox.mobile

                                                              +
                                                              No images are used
                                                              +
                                                                +
                                                              • UI parts consist of DOM and CSS3.
                                                              • +
                                                              • Only application icons are images.
                                                              • +
                                                              +

                                                              For example, none of the UI parts below are images.

                                                              + + +
                                                              Removed dependencies on the dojo modules as much as possible
                                                              +
                                                                +
                                                              • No dependencies even on some of the essential core modules like Templated, Container, Contained, dojo.query, or dojo.parser.
                                                              • +
                                                              + +
                                                              Support for CSS sprite
                                                              +
                                                                +
                                                              • Application icon images can be aggregated into a single file to reduce the number of http requests.
                                                              • +
                                                              + +
                                                              Possible to use the webkitMobile build option (when PC browser support is unnecessary)
                                                              +
                                                                +
                                                              • Drops IE and Firefox-specific code at build time, and thus reduces the dojo core size
                                                              • +
                                                              +
                                                              +
                                                              + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_list-actions.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_list-actions.html new file mode 100644 index 0000000..2231b72 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_list-actions.html @@ -0,0 +1,225 @@ + + + + + + ListItem Actions + + + + + + +
                                                              +

                                                              Action and Transition

                                                              +

                                                              ListItem Actions

                                                              +
                                                                +
                                                              • + Update View +
                                                              • +
                                                              • + Load and Move (async) +
                                                              • +
                                                              • + Move and Load (async) +
                                                              • +
                                                              • + Create View +
                                                              • +
                                                              • + Data List +
                                                              • +
                                                              • + Partial Update (async) +
                                                              • +
                                                              +
                                                              + +
                                                              +

                                                              Current Status

                                                              + Local Time: +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              +

                                                              RoundRectDataList

                                                              +
                                                                +
                                                                + +
                                                                +

                                                                Partial Update

                                                                + Dynamic Content: +
                                                                +
                                                                  +
                                                                • + Home +
                                                                • +
                                                                +
                                                                + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_list-domButtons.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_list-domButtons.html new file mode 100644 index 0000000..6dd7134 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_list-domButtons.html @@ -0,0 +1,227 @@ + + + + + + List with domButtons + + + + + + + +
                                                                +

                                                                View 1

                                                                +

                                                                RoundRectList

                                                                +
                                                                  +
                                                                • + Slide +
                                                                • +
                                                                • + Flip +
                                                                • +
                                                                • + Fade +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                View 2

                                                                +

                                                                Dom Button with Text

                                                                +
                                                                  +
                                                                • +
                                                                  Dojo: Traditional Karate-do Spirit
                                                                  + Sarah Connor Hardcover
                                                                  + Eligible for FREE Super Saver Shipping
                                                                  + $14.50 (50%) In Stock +
                                                                • +
                                                                • +
                                                                  Japanese Martial Arts Dojo
                                                                  + Martin Parker Hardcover
                                                                  + $14.00 (60%) In Stock +
                                                                • +
                                                                • +
                                                                  Total Solar Eclipse
                                                                  + Steven Young Hardcover
                                                                  + Get it by Mar. 2 if you order in the next 16 hours
                                                                  + Eligible for FREE Super Saver Shipping
                                                                  + $9.50 (62%) In Stock +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                View 3

                                                                +

                                                                Variable Height List

                                                                +
                                                                  +
                                                                • + Top 10 news stories of the decade +
                                                                • +
                                                                • + Create client-side diagrammatic interaction in Web applications with GFX +
                                                                • +
                                                                • + Explores advanced topics in the new Java framework for implementing and consuming REST-based Web services, Part 3 +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                View 4

                                                                +

                                                                Custom DOM Buttons

                                                                +
                                                                  +
                                                                • + My Custom Button 1 +
                                                                • +
                                                                • + My Custom Button 2 +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                View 5

                                                                +

                                                                EdgeToEdgeList

                                                                +
                                                                  +
                                                                • + Airplane Mode +
                                                                  +
                                                                • +
                                                                • + Wi-Fi +
                                                                • +
                                                                • + Carrier +
                                                                • +
                                                                +
                                                                + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations-standard.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations-standard.html new file mode 100644 index 0000000..38e38e3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations-standard.html @@ -0,0 +1,85 @@ + + + + + + Standard Transitions + + + + + + +
                                                                +

                                                                View 1

                                                                +

                                                                Standard Transitions

                                                                +
                                                                  +
                                                                • + Slide +
                                                                • +
                                                                • + Slide (Reverse) +
                                                                • +
                                                                • + Flip +
                                                                • +
                                                                • + Fade +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                View 2

                                                                +

                                                                Standard Transitions

                                                                +
                                                                  +
                                                                • + Slide +
                                                                • +
                                                                • + Slide (Reverse) +
                                                                • +
                                                                • + Flip +
                                                                • +
                                                                • + Fade +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                View 3

                                                                +

                                                                Standard Transitions

                                                                +
                                                                  +
                                                                • + Slide +
                                                                • +
                                                                • + Slide (Reverse) +
                                                                • +
                                                                • + Flip +
                                                                • +
                                                                • + Fade +
                                                                • +
                                                                +
                                                                + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations.html new file mode 100644 index 0000000..ce917db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations.html @@ -0,0 +1,65 @@ + + + + + + Sample of View Transitions + + + + + + +
                                                                +

                                                                Sample of View Transitions

                                                                +
                                                                  +
                                                                • + Standard Transitions +
                                                                  + Slide, Flip, Fade +
                                                                  +
                                                                • +
                                                                • + Extended Transitions 1 +
                                                                  + Dissolve, Flip2, Slide Vertical +
                                                                  +
                                                                • +
                                                                • + Extended Transitions 2 +
                                                                  + Cover, Cover Vertical +
                                                                  +
                                                                • +
                                                                • + Extended Transitions 3 +
                                                                  + Reveal, Reveal Vertical +
                                                                  +
                                                                • +
                                                                • + Extended Transitions 4 +
                                                                  + Zoom In/Out, Scale In/Out +
                                                                  +
                                                                • +
                                                                • + Extended Transitions 5 +
                                                                  + Swirl +
                                                                  +
                                                                • +
                                                                +
                                                                + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations2.html new file mode 100644 index 0000000..de5f2bc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_new_transition-animations2.html @@ -0,0 +1,260 @@ + + + + + + Transition Animations on ScrollableView + + + + + + +
                                                                +

                                                                View 1

                                                                +

                                                                Standard Transitions

                                                                +
                                                                  +
                                                                • + Slide +
                                                                • +
                                                                • + Slide (Reverse) +
                                                                • +
                                                                • + Flip +
                                                                • +
                                                                • + Fade +
                                                                • +
                                                                + +
                                                                + +
                                                                +

                                                                View 2

                                                                +

                                                                Standard Transitions

                                                                +
                                                                  +
                                                                • + Slide +
                                                                • +
                                                                • + Slide (Reverse) +
                                                                • +
                                                                • + Flip +
                                                                • +
                                                                • + Fade +
                                                                • +
                                                                + +
                                                                + +
                                                                +

                                                                View 3

                                                                +

                                                                Standard Transitions

                                                                +
                                                                  +
                                                                • + Slide +
                                                                • +
                                                                • + Slide (Reverse) +
                                                                • +
                                                                • + Flip +
                                                                • +
                                                                • + Fade +
                                                                • +
                                                                + +
                                                                + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_orientation-transition.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_orientation-transition.html new file mode 100644 index 0000000..206fe22 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_orientation-transition.html @@ -0,0 +1,66 @@ + + + + + + Transition on Orientation Change + + + + + + +
                                                                +

                                                                Portrait

                                                                +
                                                                + +

                                                                View
                                                                for
                                                                portrait

                                                                +
                                                                +
                                                                + +
                                                                +

                                                                Landscape

                                                                +
                                                                +

                                                                View for landscape

                                                                +
                                                                +
                                                                + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_progress-indicator.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_progress-indicator.html new file mode 100755 index 0000000..0ce90bc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_progress-indicator.html @@ -0,0 +1,67 @@ + + + + + + Progress Indicator + + + + + + + +
                                                                +

                                                                Progress Indicator

                                                                +

                                                                External Documents

                                                                +
                                                                  +
                                                                • + Document 0001 +
                                                                • +
                                                                • + Document 0002 +
                                                                • +
                                                                • + Document 0003 +
                                                                • +
                                                                +
                                                                + A progress indicator shows up about 5 seconds before a view content is displayed. + After you move to other views, you should also be able to navigate through the views with browser's back and forward buttons. Also, views should be bookmarkable. Note that you can pass parameters (e.g. &myParam=001) to a destination view. +
                                                                +
                                                                + +
                                                                + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware-async.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware-async.html new file mode 100644 index 0000000..46c5b8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware-async.html @@ -0,0 +1,315 @@ + + + + + + Screen Size Aware + + + + + + +
                                                                +
                                                                +
                                                                +

                                                                Settings

                                                                +
                                                                  +
                                                                • + Wi-Fi +
                                                                • +
                                                                • + Brightness & Wallpaper +
                                                                • +
                                                                • + Picture Frame +
                                                                • +
                                                                • + General +
                                                                • +
                                                                • + Mail, Contacts, Calendars +
                                                                • +
                                                                • + Safari +
                                                                • +
                                                                • + iPod +
                                                                • +
                                                                • + Video +
                                                                • +
                                                                • + Photos +
                                                                • +
                                                                • + Store +
                                                                • +
                                                                • + Apps +
                                                                • +
                                                                • + News +
                                                                • +
                                                                • + Weather +
                                                                • +
                                                                • + Books +
                                                                • +
                                                                • + Business +
                                                                • +
                                                                • + Navigation +
                                                                • +
                                                                • + Sports +
                                                                • +
                                                                • + Social +
                                                                • +
                                                                • + Music +
                                                                • +
                                                                +
                                                                +
                                                                + +
                                                                + +
                                                                +

                                                                General

                                                                +
                                                                  +
                                                                • + About +
                                                                • +
                                                                • + Usage +
                                                                • +
                                                                + +
                                                                  +
                                                                • + Network +
                                                                • +
                                                                • + Bluetooth +
                                                                • +
                                                                • + Location Services +
                                                                • +
                                                                + +
                                                                  +
                                                                • + Auto-Lock +
                                                                • +
                                                                • + Passcode Lock +
                                                                • +
                                                                • + Restrictions +
                                                                • +
                                                                + +
                                                                  +
                                                                • + Home +
                                                                • +
                                                                • + Date & Time +
                                                                • +
                                                                • + Keyboard +
                                                                • +
                                                                • + International +
                                                                • +
                                                                • + Accessibility +
                                                                • +
                                                                + +
                                                                  +
                                                                • + Reset +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                About

                                                                +

                                                                Generic Mobile Device

                                                                +
                                                                  +
                                                                • + Network +
                                                                • +
                                                                • + Line +
                                                                • +
                                                                • + Songs +
                                                                • +
                                                                • + Videos +
                                                                • +
                                                                • + Photos +
                                                                • +
                                                                • + Applications +
                                                                • +
                                                                • + Capacity +
                                                                • +
                                                                • + Available +
                                                                • +
                                                                • + Version +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                Wi-Fi Networks

                                                                +
                                                                  +
                                                                • + Wi-Fi +
                                                                  +
                                                                • +
                                                                • + +
                                                                • +
                                                                • + +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                Brightness & Wallpaper

                                                                +
                                                                  +
                                                                • + Auto-Brightness +
                                                                  +
                                                                • +
                                                                +
                                                                + +
                                                                +

                                                                Picture Frame

                                                                +

                                                                Transition

                                                                +
                                                                  +
                                                                • + Dissolve +
                                                                • +
                                                                • + Origami +
                                                                • +
                                                                +
                                                                + +
                                                                +
                                                                + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware-demo.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware-demo.html new file mode 100644 index 0000000..245b6f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware-demo.html @@ -0,0 +1,175 @@ + + + + + + Screen Size Aware Demo + + + + + + +
                                                                +
                                                                +
                                                                +

                                                                Insurance

                                                                +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware.html new file mode 100644 index 0000000..fd3501b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_screen-size-aware.html @@ -0,0 +1,308 @@ + + + + + + Screen Size Aware + + + + + + +
                                                                  +
                                                                  +
                                                                  +

                                                                  Settings

                                                                  +
                                                                    +
                                                                  • + Wi-Fi +
                                                                  • +
                                                                  • + Brightness & Wallpaper +
                                                                  • +
                                                                  • + Picture Frame +
                                                                  • +
                                                                  • + General +
                                                                  • +
                                                                  • + Mail, Contacts, Calendars +
                                                                  • +
                                                                  • + Safari +
                                                                  • +
                                                                  • + iPod +
                                                                  • +
                                                                  • + Video +
                                                                  • +
                                                                  • + Photos +
                                                                  • +
                                                                  • + Store +
                                                                  • +
                                                                  • + Apps +
                                                                  • +
                                                                  • + News +
                                                                  • +
                                                                  • + Weather +
                                                                  • +
                                                                  • + Books +
                                                                  • +
                                                                  • + Business +
                                                                  • +
                                                                  • + Navigation +
                                                                  • +
                                                                  • + Sports +
                                                                  • +
                                                                  • + Social +
                                                                  • +
                                                                  • + Music +
                                                                  • +
                                                                  +
                                                                  +
                                                                  + +
                                                                  + +
                                                                  +

                                                                  General

                                                                  +
                                                                    +
                                                                  • + About +
                                                                  • +
                                                                  • + Usage +
                                                                  • +
                                                                  + +
                                                                    +
                                                                  • + Network +
                                                                  • +
                                                                  • + Bluetooth +
                                                                  • +
                                                                  • + Location Services +
                                                                  • +
                                                                  + +
                                                                    +
                                                                  • + Auto-Lock +
                                                                  • +
                                                                  • + Passcode Lock +
                                                                  • +
                                                                  • + Restrictions +
                                                                  • +
                                                                  + +
                                                                    +
                                                                  • + Home +
                                                                  • +
                                                                  • + Date & Time +
                                                                  • +
                                                                  • + Keyboard +
                                                                  • +
                                                                  • + International +
                                                                  • +
                                                                  • + Accessibility +
                                                                  • +
                                                                  + +
                                                                    +
                                                                  • + Reset +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  About

                                                                  +

                                                                  Generic Mobile Device

                                                                  +
                                                                    +
                                                                  • + Network +
                                                                  • +
                                                                  • + Line +
                                                                  • +
                                                                  • + Songs +
                                                                  • +
                                                                  • + Videos +
                                                                  • +
                                                                  • + Photos +
                                                                  • +
                                                                  • + Applications +
                                                                  • +
                                                                  • + Capacity +
                                                                  • +
                                                                  • + Available +
                                                                  • +
                                                                  • + Version +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Wi-Fi Networks

                                                                  +
                                                                    +
                                                                  • + Wi-Fi +
                                                                    +
                                                                  • +
                                                                  • + +
                                                                  • +
                                                                  • + +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Brightness & Wallpaper

                                                                  +
                                                                    +
                                                                  • + Auto-Brightness +
                                                                    +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Picture Frame

                                                                  +

                                                                  Transition

                                                                  +
                                                                    +
                                                                  • + Dissolve +
                                                                  • +
                                                                  • + Origami +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-af.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-af.html new file mode 100644 index 0000000..ab4fe46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-af.html @@ -0,0 +1,147 @@ + + + + + + scrollable no-dojo with app footer + + + + + + + + +
                                                                  +
                                                                  +

                                                                  Transition Effects

                                                                  + + +
                                                                  +
                                                                    +
                                                                  1. Item
                                                                  2. +
                                                                  3. Item
                                                                  4. +
                                                                  5. Item
                                                                  6. +
                                                                  7. Item
                                                                  8. +
                                                                  9. Item
                                                                  10. +
                                                                  11. Item
                                                                  12. +
                                                                  13. Item
                                                                  14. +
                                                                  15. Item
                                                                  16. +
                                                                  17. Item
                                                                  18. +
                                                                  19. Item
                                                                  20. +
                                                                  21. Item
                                                                  22. +
                                                                  23. Item
                                                                  24. +
                                                                  25. Item
                                                                  26. +
                                                                  27. Item
                                                                  28. +
                                                                  29. Item
                                                                  30. +
                                                                  31. Item
                                                                  32. +
                                                                  33. Item
                                                                  34. +
                                                                  35. Item
                                                                  36. +
                                                                  37. Item
                                                                  38. +
                                                                  39. Item
                                                                  40. +
                                                                  41. Item
                                                                  42. +
                                                                  43. Item
                                                                  44. +
                                                                  45. Item
                                                                  46. +
                                                                  47. Item
                                                                  48. +
                                                                  49. Item
                                                                  50. +
                                                                  51. Item
                                                                  52. +
                                                                  53. Item
                                                                  54. +
                                                                  55. Item
                                                                  56. +
                                                                  57. Item
                                                                  58. +
                                                                  59. Item
                                                                  60. +
                                                                  61. Item
                                                                  62. +
                                                                  63. Item
                                                                  64. +
                                                                  65. Item
                                                                  66. +
                                                                  67. Item
                                                                  68. +
                                                                  69. Item
                                                                  70. +
                                                                  71. Item
                                                                  72. +
                                                                  73. Item
                                                                  74. +
                                                                  75. Item
                                                                  76. +
                                                                  77. Item
                                                                  78. +
                                                                  79. Item
                                                                  80. +
                                                                  81. Item
                                                                  82. +
                                                                  83. Item
                                                                  84. +
                                                                  85. Item
                                                                  86. +
                                                                  87. Item
                                                                  88. +
                                                                  89. Item
                                                                  90. +
                                                                  91. Item
                                                                  92. +
                                                                  93. Item
                                                                  94. +
                                                                  95. Item
                                                                  96. +
                                                                  97. Item
                                                                  98. +
                                                                  99. Item
                                                                  100. +
                                                                  101. Item
                                                                  102. +
                                                                  103. Item
                                                                  104. +
                                                                  105. Item
                                                                  106. +
                                                                  107. Item
                                                                  108. +
                                                                  109. Item
                                                                  110. +
                                                                  111. Item
                                                                  112. +
                                                                  113. Item
                                                                  114. +
                                                                  115. Item
                                                                  116. +
                                                                  117. Item
                                                                  118. +
                                                                  119. Item
                                                                  120. +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  Fixed Footer
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-ah-af.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-ah-af.html new file mode 100644 index 0000000..5e0fa54 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-ah-af.html @@ -0,0 +1,153 @@ + + + + + + scrollable no-dojo with app header/footer + + + + + + + + +

                                                                  Fixed Header (No-Dojo)

                                                                  + +
                                                                  +
                                                                  +

                                                                  Transition Effects

                                                                  + + +
                                                                  +
                                                                    +
                                                                  1. Item
                                                                  2. +
                                                                  3. Item
                                                                  4. +
                                                                  5. Item
                                                                  6. +
                                                                  7. Item
                                                                  8. +
                                                                  9. Item
                                                                  10. +
                                                                  11. Item
                                                                  12. +
                                                                  13. Item
                                                                  14. +
                                                                  15. Item
                                                                  16. +
                                                                  17. Item
                                                                  18. +
                                                                  19. Item
                                                                  20. +
                                                                  21. Item
                                                                  22. +
                                                                  23. Item
                                                                  24. +
                                                                  25. Item
                                                                  26. +
                                                                  27. Item
                                                                  28. +
                                                                  29. Item
                                                                  30. +
                                                                  31. Item
                                                                  32. +
                                                                  33. Item
                                                                  34. +
                                                                  35. Item
                                                                  36. +
                                                                  37. Item
                                                                  38. +
                                                                  39. Item
                                                                  40. +
                                                                  41. Item
                                                                  42. +
                                                                  43. Item
                                                                  44. +
                                                                  45. Item
                                                                  46. +
                                                                  47. Item
                                                                  48. +
                                                                  49. Item
                                                                  50. +
                                                                  51. Item
                                                                  52. +
                                                                  53. Item
                                                                  54. +
                                                                  55. Item
                                                                  56. +
                                                                  57. Item
                                                                  58. +
                                                                  59. Item
                                                                  60. +
                                                                  61. Item
                                                                  62. +
                                                                  63. Item
                                                                  64. +
                                                                  65. Item
                                                                  66. +
                                                                  67. Item
                                                                  68. +
                                                                  69. Item
                                                                  70. +
                                                                  71. Item
                                                                  72. +
                                                                  73. Item
                                                                  74. +
                                                                  75. Item
                                                                  76. +
                                                                  77. Item
                                                                  78. +
                                                                  79. Item
                                                                  80. +
                                                                  81. Item
                                                                  82. +
                                                                  83. Item
                                                                  84. +
                                                                  85. Item
                                                                  86. +
                                                                  87. Item
                                                                  88. +
                                                                  89. Item
                                                                  90. +
                                                                  91. Item
                                                                  92. +
                                                                  93. Item
                                                                  94. +
                                                                  95. Item
                                                                  96. +
                                                                  97. Item
                                                                  98. +
                                                                  99. Item
                                                                  100. +
                                                                  101. Item
                                                                  102. +
                                                                  103. Item
                                                                  104. +
                                                                  105. Item
                                                                  106. +
                                                                  107. Item
                                                                  108. +
                                                                  109. Item
                                                                  110. +
                                                                  111. Item
                                                                  112. +
                                                                  113. Item
                                                                  114. +
                                                                  115. Item
                                                                  116. +
                                                                  117. Item
                                                                  118. +
                                                                  119. Item
                                                                  120. +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  Fixed Footer
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-ah.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-ah.html new file mode 100644 index 0000000..481d9b5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo-ah.html @@ -0,0 +1,145 @@ + + + + + + scrollable no-dojo with app header + + + + + + + + +

                                                                  Fixed Header (No-Dojo)

                                                                  + +
                                                                  +
                                                                  +

                                                                  Transition Effects

                                                                  + + +
                                                                  +
                                                                    +
                                                                  1. Item
                                                                  2. +
                                                                  3. Item
                                                                  4. +
                                                                  5. Item
                                                                  6. +
                                                                  7. Item
                                                                  8. +
                                                                  9. Item
                                                                  10. +
                                                                  11. Item
                                                                  12. +
                                                                  13. Item
                                                                  14. +
                                                                  15. Item
                                                                  16. +
                                                                  17. Item
                                                                  18. +
                                                                  19. Item
                                                                  20. +
                                                                  21. Item
                                                                  22. +
                                                                  23. Item
                                                                  24. +
                                                                  25. Item
                                                                  26. +
                                                                  27. Item
                                                                  28. +
                                                                  29. Item
                                                                  30. +
                                                                  31. Item
                                                                  32. +
                                                                  33. Item
                                                                  34. +
                                                                  35. Item
                                                                  36. +
                                                                  37. Item
                                                                  38. +
                                                                  39. Item
                                                                  40. +
                                                                  41. Item
                                                                  42. +
                                                                  43. Item
                                                                  44. +
                                                                  45. Item
                                                                  46. +
                                                                  47. Item
                                                                  48. +
                                                                  49. Item
                                                                  50. +
                                                                  51. Item
                                                                  52. +
                                                                  53. Item
                                                                  54. +
                                                                  55. Item
                                                                  56. +
                                                                  57. Item
                                                                  58. +
                                                                  59. Item
                                                                  60. +
                                                                  61. Item
                                                                  62. +
                                                                  63. Item
                                                                  64. +
                                                                  65. Item
                                                                  66. +
                                                                  67. Item
                                                                  68. +
                                                                  69. Item
                                                                  70. +
                                                                  71. Item
                                                                  72. +
                                                                  73. Item
                                                                  74. +
                                                                  75. Item
                                                                  76. +
                                                                  77. Item
                                                                  78. +
                                                                  79. Item
                                                                  80. +
                                                                  81. Item
                                                                  82. +
                                                                  83. Item
                                                                  84. +
                                                                  85. Item
                                                                  86. +
                                                                  87. Item
                                                                  88. +
                                                                  89. Item
                                                                  90. +
                                                                  91. Item
                                                                  92. +
                                                                  93. Item
                                                                  94. +
                                                                  95. Item
                                                                  96. +
                                                                  97. Item
                                                                  98. +
                                                                  99. Item
                                                                  100. +
                                                                  101. Item
                                                                  102. +
                                                                  103. Item
                                                                  104. +
                                                                  105. Item
                                                                  106. +
                                                                  107. Item
                                                                  108. +
                                                                  109. Item
                                                                  110. +
                                                                  111. Item
                                                                  112. +
                                                                  113. Item
                                                                  114. +
                                                                  115. Item
                                                                  116. +
                                                                  117. Item
                                                                  118. +
                                                                  119. Item
                                                                  120. +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo.html new file mode 100644 index 0000000..1f671fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_scrollable-no-dojo.html @@ -0,0 +1,122 @@ + + + + + + scrollable no-dojo + + + + + + + +

                                                                  Fixed Header (No-Dojo)

                                                                  +
                                                                  +
                                                                  +
                                                                    +
                                                                  1. Item
                                                                  2. +
                                                                  3. Item
                                                                  4. +
                                                                  5. Item
                                                                  6. +
                                                                  7. Item
                                                                  8. +
                                                                  9. Item
                                                                  10. +
                                                                  11. Item
                                                                  12. +
                                                                  13. Item
                                                                  14. +
                                                                  15. Item
                                                                  16. +
                                                                  17. Item
                                                                  18. +
                                                                  19. Item
                                                                  20. +
                                                                  21. Item
                                                                  22. +
                                                                  23. Item
                                                                  24. +
                                                                  25. Item
                                                                  26. +
                                                                  27. Item
                                                                  28. +
                                                                  29. Item
                                                                  30. +
                                                                  31. Item
                                                                  32. +
                                                                  33. Item
                                                                  34. +
                                                                  35. Item
                                                                  36. +
                                                                  37. Item
                                                                  38. +
                                                                  39. Item
                                                                  40. +
                                                                  41. Item
                                                                  42. +
                                                                  43. Item
                                                                  44. +
                                                                  45. Item
                                                                  46. +
                                                                  47. Item
                                                                  48. +
                                                                  49. Item
                                                                  50. +
                                                                  51. Item
                                                                  52. +
                                                                  53. Item
                                                                  54. +
                                                                  55. Item
                                                                  56. +
                                                                  57. Item
                                                                  58. +
                                                                  59. Item
                                                                  60. +
                                                                  61. Item
                                                                  62. +
                                                                  63. Item
                                                                  64. +
                                                                  65. Item
                                                                  66. +
                                                                  67. Item
                                                                  68. +
                                                                  69. Item
                                                                  70. +
                                                                  71. Item
                                                                  72. +
                                                                  73. Item
                                                                  74. +
                                                                  75. Item
                                                                  76. +
                                                                  77. Item
                                                                  78. +
                                                                  79. Item
                                                                  80. +
                                                                  81. Item
                                                                  82. +
                                                                  83. Item
                                                                  84. +
                                                                  85. Item
                                                                  86. +
                                                                  87. Item
                                                                  88. +
                                                                  89. Item
                                                                  90. +
                                                                  91. Item
                                                                  92. +
                                                                  93. Item
                                                                  94. +
                                                                  95. Item
                                                                  96. +
                                                                  97. Item
                                                                  98. +
                                                                  99. Item
                                                                  100. +
                                                                  101. Item
                                                                  102. +
                                                                  103. Item
                                                                  104. +
                                                                  105. Item
                                                                  106. +
                                                                  107. Item
                                                                  108. +
                                                                  109. Item
                                                                  110. +
                                                                  111. Item
                                                                  112. +
                                                                  113. Item
                                                                  114. +
                                                                  115. Item
                                                                  116. +
                                                                  117. Item
                                                                  118. +
                                                                  119. Item
                                                                  120. +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended1.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended1.html new file mode 100644 index 0000000..e7dd8e1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended1.html @@ -0,0 +1,66 @@ + + + + + + Extended Transitions 1 + + + + + + +
                                                                  +

                                                                  View 1

                                                                  +

                                                                  Extended Transitions 1

                                                                  +
                                                                    +
                                                                  • + Dissolve +
                                                                  • +
                                                                  • + Slide Vertical +
                                                                  • +
                                                                  • + Slide Vertical (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 2

                                                                  +

                                                                  Extended Transitions 1

                                                                  +
                                                                    +
                                                                  • + Dissolve +
                                                                  • +
                                                                  • + Slide Vertical +
                                                                  • +
                                                                  • + Slide Vertical (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 3

                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended2.html new file mode 100644 index 0000000..d787662 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended2.html @@ -0,0 +1,85 @@ + + + + + + Extended Transitions 2 + + + + + + +
                                                                  +

                                                                  View 1

                                                                  +

                                                                  Extended Transitions 2

                                                                  +
                                                                    +
                                                                  • + Cover +
                                                                  • +
                                                                  • + Cover (Reverse) +
                                                                  • +
                                                                  • + Cover Vertical +
                                                                  • +
                                                                  • + Cover Vertical (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 2

                                                                  +

                                                                  Extended Transitions 2

                                                                  +
                                                                    +
                                                                  • + Cover +
                                                                  • +
                                                                  • + Cover (Reverse) +
                                                                  • +
                                                                  • + Cover Vertical +
                                                                  • +
                                                                  • + Cover Vertical (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 3

                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended3.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended3.html new file mode 100644 index 0000000..0a19e4f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended3.html @@ -0,0 +1,85 @@ + + + + + + Extended Transitions 3 + + + + + + +
                                                                  +

                                                                  View 1

                                                                  +

                                                                  Extended Transitions 3

                                                                  +
                                                                    +
                                                                  • + Reveal +
                                                                  • +
                                                                  • + Reveal (Reverse) +
                                                                  • +
                                                                  • + Reveal Vertical +
                                                                  • +
                                                                  • + Reveal Vertical (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 2

                                                                  +

                                                                  Extended Transitions 3

                                                                  +
                                                                    +
                                                                  • + Reveal +
                                                                  • +
                                                                  • + Reveal (Reverse) +
                                                                  • +
                                                                  • + Reveal Vertical +
                                                                  • +
                                                                  • + Reveal Vertical (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 3

                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended4.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended4.html new file mode 100644 index 0000000..0b49c94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended4.html @@ -0,0 +1,73 @@ + + + + + + Extended Transitions 4 + + + + + + +
                                                                  +

                                                                  View 1

                                                                  +

                                                                  Extended Transitions 4

                                                                  +
                                                                    +
                                                                  • + Zoom Out +
                                                                  • +
                                                                  • + Zoom In +
                                                                  • +
                                                                  • + Scale Out +
                                                                  • +
                                                                  • + Scale In +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 2

                                                                  +

                                                                  Extended Transitions 4

                                                                  +
                                                                    +
                                                                  • + Zoom Out +
                                                                  • +
                                                                  • + Zoom In +
                                                                  • +
                                                                  • + Scale Out +
                                                                  • +
                                                                  • + Scale In +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 3

                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended5.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended5.html new file mode 100644 index 0000000..af7bf39 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-extended5.html @@ -0,0 +1,59 @@ + + + + + + Extended Transitions 5 + + + + + + +
                                                                  +

                                                                  View 1

                                                                  +

                                                                  Extended Transitions 5

                                                                  +
                                                                    +
                                                                  • + Swirl +
                                                                  • +
                                                                  • + Swirl (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 2

                                                                  +

                                                                  Extended Transitions 5

                                                                  +
                                                                    +
                                                                  • + Swirl +
                                                                  • +
                                                                  • + Swirl (Reverse) +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 3

                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-standard.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-standard.html new file mode 100644 index 0000000..4f485d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations-standard.html @@ -0,0 +1,73 @@ + + + + + + Standard Transitions + + + + + + +
                                                                  +

                                                                  View 1

                                                                  +

                                                                  Standard Transitions

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Slide (Reverse) +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 2

                                                                  +

                                                                  Standard Transitions

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Slide (Reverse) +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 3

                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations.html new file mode 100644 index 0000000..96c3095 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations.html @@ -0,0 +1,65 @@ + + + + + + Sample of View Transitions + + + + + + +
                                                                  +

                                                                  Sample of View Transitions

                                                                  +
                                                                    +
                                                                  • + Standard Transitions +
                                                                    + Slide, Flip, Fade +
                                                                    +
                                                                  • +
                                                                  • + Extended Transitions 1 +
                                                                    + Dissolve, Slide Vertical +
                                                                    +
                                                                  • +
                                                                  • + Extended Transitions 2 +
                                                                    + Cover, Cover Vertical +
                                                                    +
                                                                  • +
                                                                  • + Extended Transitions 3 +
                                                                    + Reveal, Reveal Vertical +
                                                                    +
                                                                  • +
                                                                  • + Extended Transitions 4 +
                                                                    + Zoom In/Out, Scale In/Out +
                                                                    +
                                                                  • +
                                                                  • + Extended Transitions 5 +
                                                                    + Swirl +
                                                                    +
                                                                  • +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations2.html new file mode 100644 index 0000000..e05d6dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-animations2.html @@ -0,0 +1,258 @@ + + + + + + Transition Animations on ScrollableView + + + + + + +
                                                                  +

                                                                  View 1

                                                                  +

                                                                  Standard Transitions

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Slide (Reverse) +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +

                                                                  Extended Transitions

                                                                  +
                                                                    +
                                                                  • + Dissolve +
                                                                  • +
                                                                  • + Cover +
                                                                  • +
                                                                  • + Cover (Reverse) +
                                                                  • +
                                                                  • + Reveal +
                                                                  • +
                                                                  • + Reveal (Reverse) +
                                                                  • +
                                                                  • + Slide Vertical +
                                                                  • +
                                                                  • + Slide Vertical (Reverse) +
                                                                  • +
                                                                  • + Cover Vertical +
                                                                  • +
                                                                  • + Cover Vertical (Reverse) +
                                                                  • +
                                                                  • + Reveal Vertical +
                                                                  • +
                                                                  • + Reveal Vertical (Reverse) +
                                                                  • +
                                                                  • + Swirl +
                                                                  • +
                                                                  • + Swirl (Reverse) +
                                                                  • +
                                                                  • + Zoom Out +
                                                                  • +
                                                                  • + Zoom In +
                                                                  • +
                                                                  • + Scale Out +
                                                                  • +
                                                                  • + Scale In +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 2

                                                                  +

                                                                  Standard Transitions

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Slide (Reverse) +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +

                                                                  Extended Transitions

                                                                  +
                                                                    +
                                                                  • + Dissolve +
                                                                  • +
                                                                  • + Cover +
                                                                  • +
                                                                  • + Cover (Reverse) +
                                                                  • +
                                                                  • + Reveal +
                                                                  • +
                                                                  • + Reveal (Reverse) +
                                                                  • +
                                                                  • + Slide Vertical +
                                                                  • +
                                                                  • + Slide Vertical (Reverse) +
                                                                  • +
                                                                  • + Cover Vertical +
                                                                  • +
                                                                  • + Cover Vertical (Reverse) +
                                                                  • +
                                                                  • + Reveal Vertical +
                                                                  • +
                                                                  • + Reveal Vertical (Reverse) +
                                                                  • +
                                                                  • + Swirl +
                                                                  • +
                                                                  • + Swirl (Reverse) +
                                                                  • +
                                                                  • + Zoom Out +
                                                                  • +
                                                                  • + Zoom In +
                                                                  • +
                                                                  • + Scale Out +
                                                                  • +
                                                                  • + Scale In +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  View 3

                                                                  +

                                                                  Standard Transitions

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Slide (Reverse) +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +

                                                                  Extended Transitions

                                                                  +
                                                                    +
                                                                  • + Dissolve +
                                                                  • +
                                                                  • + Cover +
                                                                  • +
                                                                  • + Cover (Reverse) +
                                                                  • +
                                                                  • + Reveal +
                                                                  • +
                                                                  • + Reveal (Reverse) +
                                                                  • +
                                                                  • + Slide Vertical +
                                                                  • +
                                                                  • + Slide Vertical (Reverse) +
                                                                  • +
                                                                  • + Cover Vertical +
                                                                  • +
                                                                  • + Cover Vertical (Reverse) +
                                                                  • +
                                                                  • + Reveal Vertical +
                                                                  • +
                                                                  • + Reveal Vertical (Reverse) +
                                                                  • +
                                                                  • + Swirl +
                                                                  • +
                                                                  • + Swirl (Reverse) +
                                                                  • +
                                                                  • + Zoom Out +
                                                                  • +
                                                                  • + Zoom In +
                                                                  • +
                                                                  • + Scale Out +
                                                                  • +
                                                                  • + Scale In +
                                                                  • +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-connect.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-connect.html new file mode 100644 index 0000000..148d3b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-connect.html @@ -0,0 +1,68 @@ + + + + + + Transition Listener (dojo.connect) + + + + + +
                                                                  +

                                                                  Animations

                                                                  +

                                                                  Transition Effects

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Search Result

                                                                  +
                                                                  + Open the browser console to see transition event logs. +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-pubsub.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-pubsub.html new file mode 100644 index 0000000..6d6bab7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-pubsub.html @@ -0,0 +1,67 @@ + + + + + + Transition Listener (pub/sub) + + + + + + +
                                                                  +

                                                                  Animations

                                                                  +

                                                                  Transition Effects

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Search Result

                                                                  +
                                                                  + Open the browser console to see transition event logs. +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-to-dynamic-view.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-to-dynamic-view.html new file mode 100644 index 0000000..8e93f05 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/test_transition-to-dynamic-view.html @@ -0,0 +1,71 @@ + + + + + + Transition To A Dynamic View + + + + + +
                                                                  +

                                                                  Animations

                                                                  +

                                                                  Transition Effects

                                                                  +
                                                                    +
                                                                  • + Slide +
                                                                  • +
                                                                  • + Flip +
                                                                  • +
                                                                  • + Fade +
                                                                  • +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/view-sample.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view-sample.html new file mode 100644 index 0000000..c866328 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view-sample.html @@ -0,0 +1,38 @@ +
                                                                  +

                                                                  View Sample

                                                                  + +
                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/view1.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view1.html new file mode 100644 index 0000000..bf57f44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view1.html @@ -0,0 +1,14 @@ +
                                                                  +

                                                                  view1.html

                                                                  +
                                                                    +
                                                                  • + Jack Coleman +
                                                                  • +
                                                                  • + James Evans +
                                                                  • +
                                                                  • + Jason Griffin +
                                                                  • +
                                                                  +
                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/view1.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view1.json new file mode 100644 index 0000000..65ac978 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view1.json @@ -0,0 +1,18 @@ +{ + "dojox.mobile.View": { + "dojox.mobile.Heading": { + "@back": "Home", + "@moveTo": "foo", + "@label": "view1.json" + }, + "dojox.mobile.EdgeToEdgeList": { + "dojox.mobile.ListItem": [{ + "@label": "Jack Coleman" + }, { + "@label": "James Evans" + }, { + "@label": "Jason Griffin" + }] + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/view2.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view2.html new file mode 100644 index 0000000..4573b73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view2.html @@ -0,0 +1,9 @@ +
                                                                  +

                                                                  +

                                                                  +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/view2.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view2.json new file mode 100644 index 0000000..d1c35be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view2.json @@ -0,0 +1,31 @@ +{ + "dojox.mobile.View": { + "dojox.mobile.Heading": { + "@back": "Home", + "@label": "view2.json", + "@moveTo": "foo" + }, + "dojox.mobile.RoundRectCategory": { + "@label": "Transition Effects" + }, + "dojox.mobile.RoundRectList": { + "dojox.mobile.ListItem": [{ + "@icon": "images/i-icon-1.png", + "@label": "Slide", + "@moveTo": "foo", + "@transition": "slide" + }, { + "@icon": "images/i-icon-2.png", + "@label": "Flip", + "@moveTo": "foo", + "@transition": "flip" + }, { + "@icon": "images/i-icon-3.png", + "@label": "Fade", + "@moveTo": "foo", + "@transition": "fade" + }] + } + } +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/view3.html b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view3.html new file mode 100644 index 0000000..6a0207a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view3.html @@ -0,0 +1,16 @@ +
                                                                  +

                                                                  +
                                                                    +
                                                                  • +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  + +
                                                                    +
                                                                  • +
                                                                  • +
                                                                  • +
                                                                  +
                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/tests/view3.json b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view3.json new file mode 100644 index 0000000..b734e31 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/tests/view3.json @@ -0,0 +1,42 @@ +{ + "dojox.mobile.View": { + "@id": "settings", + "dojox.mobile.Heading": { + "@label": "view3.json" + }, + "dojox.mobile.RoundRectList": [{ + "dojox.mobile.ListItem": [{ + "@icon": "images/i-icon-1.png", + "@label": "Airplane Mode", + "dojox.mobile.Switch": { + "@class": "mblItemSwitch" + } + }, { + "@href": "test_iPhone-Icon.html", + "@icon": "images/i-icon-2.png", + "@label": "Wi-Fi", + "@rightText": "mac" + }, { + "@icon": "images/i-icon-3.png", + "@label": "Carrier", + "@moveTo": "foo", + "@rightText": "AcmePhone" + }] + }, { + "dojox.mobile.ListItem": [{ + "@icon": "images/i-icon-4.png", + "@label": "Sounds", + "@moveTo": "foo" + }, { + "@icon": "images/i-icon-5.png", + "@label": "Brightness", + "@moveTo": "foo" + }, { + "@icon": "images/i-icon-6.png", + "@label": "Wallpaper", + "@moveTo": "foo" + }] + }] + } +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button-compat.css new file mode 100644 index 0000000..c1bd8cf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button-compat.css @@ -0,0 +1,33 @@ +/* dojox.mobile.Button */ +.mblButton { + background-color: #cfcfcf; + background-image: url(compat/button-bg.png); + background-repeat: repeat-x; + -moz-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; +} +.mblButtonSelected { + background-color: #ffab00; + background-image: url(compat/button-sel-bg.png); +} +.mblButtonDisabled { + background-image: none; +} +.mblBlueButton { + background-color: #2261dd; + background-image: url(compat/blue-button-bg.png); +} +.mblBlueButtonSelected { + background-color: #ffab00; + background-image: url(compat/button-sel-bg.png); +} +.mblRedButton { + background-color: #ee4115; + background-image: url(compat/red-button-bg.png); +} +.mblRedButtonSelected { + background-color: #ffab00; + background-image: url(compat/button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button.css new file mode 100644 index 0000000..2eb8311 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button.css @@ -0,0 +1,45 @@ +/* dojox.mobile.Button */ +.mblButton { + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0px 10px; + height: 29px; + border: #9CACC0 1px outset; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + color: black; + font-family: Helvetica; + font-size: 13px; + line-height: 29px; +} +.mblButton.mblBlueButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); + color: white; +} +.mblButton.mblBlueButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); + color: white; +} +.mblButton.mblRedButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fa9d58), to(#ee4115), color-stop(0.5, #ff4d25), color-stop(0.5, #ed4d15)); + color: white; +} +.mblButton.mblRedButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); + color: white; +} +.mblButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); + color: white; +} +.mblButtonDisabled, .mblButton:disabled { + cursor: default; + border-color: grey; + background-image: none; + color: grey; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button.less new file mode 100644 index 0000000..ab3a96c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Button.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Button.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Carousel.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Carousel.css new file mode 100644 index 0000000..a415950 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Carousel.css @@ -0,0 +1,60 @@ +/* dojox.mobile.Carousel */ +.mblCarousel { + overflow: hidden; +} +.mblCarouselBox { + position: relative; + float: left; +} +.mblCarouselImg { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); + vertical-align: bottom; +} +.mblCarouselImgSelected { + border: 1px dashed #C0C0C0; + -webkit-box-shadow: none; +} +.mblCarouselImgHeaderText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselImgFooterText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselHeaderBar { + background-color: #3A3A3B; + color: #B1B1B1; + font: bold 16px arial, helvetica, clean, sans-serif; + padding: 1px; +} +.mblCarouselBtnContainer { + float: right; +} +.mblCarouselBtn { + height: 18px; + width: 46px; + font: bold 14px arial, helvetica, clean, sans-serif; + color: gray; + padding-top: 0px; + margin: 0px 2px; + border-width: 1px; + /* workaround for android problem */ + +} +.mblCarouselTitle { + margin: 2px 0px 2px 4px; +} +.mblCarouselHeaderBar .mblPageIndicator { + float: right; + width: auto; + padding: 0px 20px; +} +.mblCarouselHeaderBar .mblPageIndicatorContainer { + margin-left: 0px; + margin-right: 0px; +} +.mblCarouselPages { + position: relative; + text-align: center; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Carousel.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Carousel.less new file mode 100644 index 0000000..d717397 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Carousel.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Carousel.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox-compat.css new file mode 100644 index 0000000..1a37a2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox-compat.css @@ -0,0 +1,37 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + background-image: url(compat/button-bg.png); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.45em); + -ms-transform: translateY(0.45em); + transform: translateY(0.45em); +} +.mblCheckBoxSelected { + background-image: url(compat/button-sel-bg.png); +} +.mblCheckBoxChecked, +.mblCheckBox:checked { + background-image: url(compat/togglebutton-chk-bg.png); +} +.mblCheckBoxChecked::after, +.mblCheckBox:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mblCheckBoxChecked.mblCheckBoxSelected { + background-image: url(compat/button-sel-bg.png); +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox.css new file mode 100644 index 0000000..bf3c3f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox.css @@ -0,0 +1,44 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + font: inherit; + -webkit-transform: translatey(0.45em); +} +.mblCheckBoxSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); + border-color: #9CACC0; +} +.mblCheckBoxChecked, .mblCheckBox:checked { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#00a200), to(#00d300), color-stop(0.2, #00ba00), color-stop(0.2, #00ba00)); +} +.mblCheckBoxChecked::after, .mblCheckBox:checked::after { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.3em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked.mblCheckBoxSelected, .mblCheckBox:checked.mblCheckBoxSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); + border-color: #9CACC0; +} +.mblCheckBoxChecked.mblCheckBoxSelected::after, .mblCheckBox:checked.mblCheckBoxSelected::after { + border-color: #9CACC0; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox.less new file mode 100644 index 0000000..09f93b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/CheckBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/CheckBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox-compat.css new file mode 100644 index 0000000..d9e9fa9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + -moz-box-shadow: 0px 0px 50px black; + -o-box-shadow: 0px 0px 50px black; + -ms-box-shadow: 0px 0px 50px black; + box-shadow: 0px 0px 50px black; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox.css new file mode 100644 index 0000000..8556a91 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox.css @@ -0,0 +1,45 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + margin: 0; + padding: 0; + position: absolute; + border: 0; + background-color: transparent; + -webkit-box-shadow: 0px 0px 50px black; + -webkit-border-radius: 0px; +} +.mblReset { + margin: 0; + padding: 0; + border: 0; + line-height: normal; + font: inherit; + color: inherit; +} +.mblComboBoxMenu { + overflow-y: hidden !important; + position: relative; + overflow: hidden; + border: 1px solid black; + -webkit-border-radius: 0px; + background-color: white; + color: black; +} +.mblComboBoxMenuItem { + white-space: nowrap; + padding: .1em .2em; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #ffffff; + color: inherit; + text-align: left; +} +.mblComboBoxMenuItemSelected { + background-color: black; + background-image: -webkit-gradient(linear, left top, left bottom, from(#048bf4), to(#005ce5)); + color: white; +} +.mblComboBoxMenuPreviousButton, .mblComboBoxMenuNextButton { + font-style: italic; + overflow: hidden; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox.less new file mode 100644 index 0000000..ab9458c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ComboBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ComboBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeCategory.css new file mode 100644 index 0000000..f585a35 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeCategory.css @@ -0,0 +1,18 @@ +/* dojox.mobile.EdgeToEdgeCategory */ +.mblEdgeToEdgeCategory { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0px; + padding: 0px 10px; + height: 22px; + border-bottom: 1px solid #393439; + background-color: #212021; + font-family: Helvetica; + font-size: 16px; + font-weight: bold; + color: white; + line-height: 22px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeCategory.less new file mode 100644 index 0000000..3bb63da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeList.css new file mode 100644 index 0000000..83e2a57 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeList.css @@ -0,0 +1,12 @@ +/* dojox.mobile.EdgeToEdgeList */ +.mblEdgeToEdgeList { + position: relative; + /* IE needs this */ + + margin: 0px; + padding: 0px; + background-color: black; +} +.mblEdgeToEdgeList .mblListItem:last-child { + border-bottom-color: #313431; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeList.less new file mode 100644 index 0000000..227627c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/EdgeToEdgeList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading-compat.css new file mode 100644 index 0000000..8b9b01f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading-compat.css @@ -0,0 +1,22 @@ +/* mbl.widget.Heading */ +.mblHeading { + background-image: url(compat/heading-bg.png); +} +.mblHeadingSpanTitle { + white-space: normal; +} + +/* Heading Arrow Button */ +.mblArrowButtonHead { + position: absolute; + top: 0px; + left: 3px; + width: 19px; + height: 29px; + border-style: none; + background-image: url(compat/arrow-button-head.png); +} +.mblArrowButtonBody { + padding: 0px 10px 0px 3px; + background-image: url(compat/arrow-button-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading.css new file mode 100644 index 0000000..8147058 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading.css @@ -0,0 +1,81 @@ +/* dojox.mobile.Heading */ +.mblHeading { + position: relative; + margin: 0px; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + z-index: 1; + padding: 0px 0px 0px 4px; + height: 25px; + background-color: #8C8A8C; + background-image: -webkit-gradient(linear, left top, left bottom, from(#9c9e9c), to(#848284)); + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + color: white; + font-family: Helvetica; + font-size: 14px; + font-weight: bold; + text-align: center; + line-height: 26px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} +.mblHeading * { + z-index: 2; +} +.mblHeadingDivTitle { + position: absolute; + width: 100%; + display: none; + left: 0px; + z-index: 1; +} +.mblHeadingCenterTitle .mblHeadingDivTitle { + display: block; +} +.mblHeadingCenterTitle .mblHeadingSpanTitle { + display: none; +} +/* Heading Arrow Button */ +.mblArrowButton { + position: relative; + float: left; + height: 25px; + margin-right: 10px; +} +.mblArrowButtonHead { + position: absolute; + top: 4px; + left: 6px; + width: 14px; + height: 14px; + border: 1px solid #555555; + -webkit-transform: scale(0.8, 1) rotate(45deg); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e5e5e5), to(#7f7f7f), color-stop(0.5, #adadad), color-stop(0.5, #909090)); +} +.dj_chrome .mblArrowButtonHead { + border: 1px outset #555555; +} +.mblArrowButtonBody { + position: absolute; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + top: 0px; + left: 14px; + padding: 0px 10px 0px 3px; + height: 22px; + border-width: 1px 1px 1px 0px; + border-style: solid; + border-color: #555555; + font-family: Helvetica; + font-size: 13px; + color: white; + line-height: 23px; + background-color: #ADADAD; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e5e5e5), to(#7f7f7f), color-stop(0.5, #adadad), color-stop(0.5, #909090)); +} +.mblArrowButtonSelected .mblArrowButtonHead, .mblArrowButtonSelected .mblArrowButtonBody { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading.less new file mode 100644 index 0000000..cfc8580 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Heading.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Heading.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer-compat.css new file mode 100644 index 0000000..adf6d49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer-compat.css @@ -0,0 +1,11 @@ +@import url("../common/domButtons/DomButtonColorButtons-compat.css"); + +/* dojox.mobile.IconItem */ +.mblIconArea div { + *font-size: 60px; /* IE 7 quirks */ +} + +/* Icon Content Heading */ +.mblIconContentHeading { + background-image: url(compat/icon-content-heading-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer.css new file mode 100644 index 0000000..9e11d7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer.css @@ -0,0 +1,99 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); + +@import url("../common/IconContainer_keyframes.css"); +/* dojox.mobile.IconContainer */ +.mblIconContainer { + margin: 20px 0px 0px 10px; + padding: 0px 0px 40px 0px; +} +/* dojox.mobile.IconItem */ +.mblIconItem { + list-style-type: none; + float: left; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblIconItemTerminator { + list-style-type: none; + clear: both; + height: 20px; +} +.mblIconItemSub { + list-style-type: none; + margin-left: -10px; + background-color: white; + color: black; +} +.mblIconArea { + margin-bottom: 10px; + height: 78px; + width: 74px; + font-family: Helvetica; + font-size: 12px; + color: white; + text-align: center; +} +.mblIconArea div { + position: relative; + height: 65px; + line-height: 65px; + text-align: center; +} +.mblIconArea img { + vertical-align: middle; +} +.mblIconItemSpriteIcon { + position: absolute; +} +.mblContent { + clear: both; + padding-bottom: 20px; +} +table.mblClose { + clear: both; + cursor: pointer; +} +.mblVibrate { + position: relative; + -webkit-animation-duration: .5s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-iteration-count: 20; + -webkit-animation-name: mblVibrate; + -webkit-transform: rotate(0deg); +} +.mblCloseContent { + -webkit-animation-duration: .3s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-name: mblShrink; + -webkit-transform: scale(0.01); +} +.mblCloseContent.mblShrink0 { + -webkit-animation-name: mblShrink0; +} +.mblCloseContent.mblShrink1 { + -webkit-animation-name: mblShrink1; +} +.mblCloseContent.mblShrink2 { + -webkit-animation-name: mblShrink2; +} +.mblCloseContent.mblShrink3 { + -webkit-animation-name: mblShrink3; +} +/* Icon Content Heading */ +.mblIconContentHeading { + position: relative; + clear: both; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin-top: 0px; + padding-left: 40px; + height: 25px; + border-top: 1px solid #F1F3F4; + border-bottom: 1px solid #717D85; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e0e4e7), to(#b4bec6), color-stop(0.5, #c4ccd2), color-stop(0.5, #bfc8ce)); + font-family: Helvetica; + font-size: 14px; + color: white; + line-height: 26px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer.less new file mode 100644 index 0000000..963eae6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/IconContainer.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); +@import url("../common/IconContainer_keyframes.css"); + +@import "variables.less"; +@import "../common/IconContainer.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem-compat.css new file mode 100644 index 0000000..5ced8fe --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem-compat.css @@ -0,0 +1,26 @@ +@import url("../common/domButtons/DomButtonGrayArrow-compat.css"); +@import url("../common/domButtons/DomButtonDarkBlueCheck-compat.css"); + +/* mbl.widget.ListItem */ +*html li.mblListItem.mblVariableHeight { /* IE6 hack */ + height: 0; +} + +.mblListItemIcon { + top: 18px; +} +.mblListItem .mblArrow { + border-style: none; + width: 9px; + height: 13px; + background-image: url(compat/gray-arrow.png); +} +.mblItemSelected .mblArrow { + background-image: url(compat/white-arrow.png); +} +*html .mblListItemTextBox { /* IE6 hack */ + height: 100%; +} +*html li.mblListItem.mblVariableHeight .mblListItemTextBox { /* IE6 hack */ + height: auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem.css new file mode 100644 index 0000000..8d61090 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem.css @@ -0,0 +1,84 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); + +@import url("../common/domButtons/DomButtonWhiteCheck.css"); +/* dojox.mobile.ListItem */ +.mblListItem { + position: relative; + list-style-type: none; + vertical-align: bottom; + /* To avoid IE6 LI bug */ + + padding: 0px 0px 0px 7px; + height: 64px; + border-bottom: solid 1px #313431; + background-color: black; + font-size: 21px; + color: white; + line-height: 64px; +} +.mblListItem.mblVariableHeight { + height: auto; + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem .mblListItemAnchor { + display: block; + height: 100%; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + background-position: 14px 17px; + text-decoration: none; + padding-right: 7px; +} +.mblListItem .mblListItemAnchor * { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0.2); +} +.mblItemSelected { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); +} +.mblItemSelected .mblListItemAnchor { + color: black; +} +.mblItemSelected .mblDomButton div { + border-color: white; +} +.mblListItemTextBoxSelected { + background-color: #048BF4; +} +.mblListItemIcon { + float: left; + line-height: normal; + margin-top: 17px; + margin-right: 11px; +} +.mblListItemSpriteIcon { + position: absolute; + margin-top: 7px; + margin-left: 8px; +} +.mblListItemRightIcon, .mblListItemRightIcon2 { + position: relative; + float: right; + line-height: normal; + margin-top: 17px; + margin-bottom: -17px; +} +.mblListItemRightText { + position: relative; + float: right; + line-height: normal; + color: white; + margin: 20px 4px 0 0; +} +.mblListItemTextBox { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mblVariableHeight .mblListItemTextBox { + white-space: normal; +} +.mblListItemSubText { + font-size: 14px; + color: gray; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem.less new file mode 100644 index 0000000..45d4386 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ListItem.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); +@import url("../common/domButtons/DomButtonWhiteCheck.css"); + +@import "variables.less"; +@import "../common/ListItem.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Opener-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Opener-compat.css new file mode 100644 index 0000000..68cb1a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Opener-compat.css @@ -0,0 +1,3 @@ +/* dojox.mobile.Opener */ +@import url("Overlay-compat.css"); +@import url("Tooltip-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Opener.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Opener.css new file mode 100644 index 0000000..8f2d4c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Opener.css @@ -0,0 +1,7 @@ +/* dojox.mobile.Opener */ +@import url("Overlay.css"); +@import url("Tooltip.css"); + +.mblOpenerUnderlay { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay-compat.css new file mode 100644 index 0000000..3bc72a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay-compat.css @@ -0,0 +1,13 @@ +/* dojox.mobile.Overlay */ +.mblOverlay { + _position: absolute; + text-align: center; +} +.dj_gecko .mblOverlay { + text-align: -moz-center; +} +.dj_ie9 .mblOverlay > *, +.dj_ie8 .mblOverlay > * +{ + margin: 0 auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay.css new file mode 100644 index 0000000..40a1228 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay.css @@ -0,0 +1,18 @@ +@import url("../common/transitions/coverv.css"); + +@import url("../common/transitions/revealv.css"); +/* dojox.mobile.Overlay */ +.mblOverlay { + position: fixed; + z-index: 2000; + left: 0; + bottom: 0; + margin: 0; + width: 100%; + text-align: -webkit-center; + background-color: #333333; + background-image: none; +} +.mblOverlayHidden *, .mblOverlayHidden { + visibility: hidden !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay.less new file mode 100644 index 0000000..e49ea9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Overlay.less @@ -0,0 +1,5 @@ +@import url("../common/transitions/coverv.css"); +@import url("../common/transitions/revealv.css"); + +@import "variables.less"; +@import "../common/Overlay.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/PageIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/PageIndicator.css new file mode 100644 index 0000000..a175ad6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/PageIndicator.css @@ -0,0 +1,24 @@ +/* dojox.mobile.PageIndicator */ +.mblPageIndicator { + position: relative; + width: 100%; + height: 20px; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblPageIndicatorContainer { + margin-top: 4px; + margin-left: auto; + margin-right: auto; +} +.mblPageIndicatorDot { + margin: 0px 3px; + width: 6px; + height: 6px; + font-size: 1px; + background-color: #949294; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +.mblPageIndicatorDotSelected { + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/PageIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/PageIndicator.less new file mode 100644 index 0000000..9bb6c49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/PageIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/PageIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator-compat.css new file mode 100644 index 0000000..4ee0810 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator-compat.css @@ -0,0 +1,46 @@ +/* Progress Indicator */ +.mblProg { + position: absolute; + top: 0px; + width: 4px; + font-size: 1px; + height: 36px; + overflow: hidden; + background-color: #C0C0C0; +} +.mblProg0 { + left: 0px; +} +.mblProg1 { + left: 8px; +} +.mblProg2 { + left: 16px; +} +.mblProg3 { + left: 24px; +} +.mblProg4 { + left: 32px; +} +.mblProg5 { + left: 40px; +} +.mblProg6 { + left: 48px; +} +.mblProg7 { + left: 56px; +} +.mblProg8 { + left: 64px; +} +.mblProg9 { + left: 72px; +} +.mblProg10 { + left: 80px; +} +.mblProg11 { + left: 80px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator.css new file mode 100644 index 0000000..2340637 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator.css @@ -0,0 +1,58 @@ +/* Progress Indicator */ +.mblProgContainer { + position: absolute; + width: 40px; + height: 40px; + top: 180px; + left: 50%; + margin: -18px 0px 0px -18px; +} +.mblProg { + position: absolute; + left: 2px; + top: 0px; + width: 11px; + font-size: 1px; + height: 4px; + overflow: hidden; + -webkit-transform-origin: 0 2px; + background-color: #C0C0C0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} +.mblProg0 { + -webkit-transform: translate(18px, 10px) rotate(-90.1deg); +} +.mblProg1 { + -webkit-transform: translate(22px, 11px) rotate(-60deg); +} +.mblProg2 { + -webkit-transform: translate(25px, 14px) rotate(-30deg); +} +.mblProg3 { + -webkit-transform: translate(26px, 18px) rotate(0deg); +} +.mblProg4 { + -webkit-transform: translate(25px, 22px) rotate(30deg); +} +.mblProg5 { + -webkit-transform: translate(22px, 25px) rotate(60deg); +} +.mblProg6 { + -webkit-transform: translate(18px, 26px) rotate(90.1deg); +} +.mblProg7 { + -webkit-transform: translate(14px, 25px) rotate(120deg); +} +.mblProg8 { + -webkit-transform: translate(11px, 22px) rotate(150deg); +} +.mblProg9 { + -webkit-transform: translate(10px, 18px) rotate(180deg); +} +.mblProg10 { + -webkit-transform: translate(11px, 14px) rotate(210deg); +} +.mblProg11 { + -webkit-transform: translate(14px, 11px) rotate(240deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator.less new file mode 100644 index 0000000..2ab2a2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ProgressIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ProgressIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton-compat.css new file mode 100644 index 0000000..17e473f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton-compat.css @@ -0,0 +1,33 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + background-image: url(compat/button-bg.png); + -moz-border-radius: 0.5em; + -o-border-radius: 0.5em; + -ms-border-radius: 0.5em; + border-radius: 0.5em; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.45em); + -ms-transform: translateY(0.45em); + transform: translateY(0.45em); +} +.mblRadioButtonChecked, +.mblRadioButton:checked { + background-image: url(compat/togglebutton-chk-bg.png); +} +.mblRadioButtonChecked::after, +.mblRadioButton:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mblRadioButtonChecked.mblRadioButtonSelected { + background-image: url(compat/button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton.css new file mode 100644 index 0000000..1f997dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton.css @@ -0,0 +1,41 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 0.5em; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + font: inherit; + -webkit-transform: translatey(0.45em); +} +.mblRadioButtonChecked, .mblRadioButton:checked { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#00a200), to(#00d300), color-stop(0.2, #00ba00), color-stop(0.2, #00ba00)); +} +.mblRadioButtonChecked::after, .mblRadioButton:checked::after { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + border-color: white; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked.mblRadioButtonSelected, .mblRadioButton:checked.mblRadioButtonSelected { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); +} +.mblRadioButtonChecked.mblRadioButtonSelected::after, .mblRadioButton:checked.mblRadioButtonSelected::after { + border-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton.less new file mode 100644 index 0000000..0793ca6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RadioButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RadioButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect-compat.css new file mode 100644 index 0000000..cf3ce84 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect-compat.css @@ -0,0 +1,64 @@ +/* Round Corner */ +.mblRoundCorner { + background-color: black; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectContainer { + padding: 3px 8px; + background-color: black; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectList .mblRoundRectContainer { + margin: 0px; + padding: 0px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect.css new file mode 100644 index 0000000..c76a82f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect.css @@ -0,0 +1,13 @@ +/* dojox.mobile.RoundRect */ +.mblRoundRect { + margin: 7px 9px 16px; + padding: 8px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + color: white; + background-color: black; +} +.mblRoundRect.mblShadow { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect.less new file mode 100644 index 0000000..efec816 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRect.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRect.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectCategory.css new file mode 100644 index 0000000..9be5f0c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectCategory.css @@ -0,0 +1,10 @@ +/* dojox.mobile.RoundRectCategory */ +.mblRoundRectCategory { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + margin: 18px 0px 0px 20px; + font-family: Helvetica; + font-size: 16px; + color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectCategory.less new file mode 100644 index 0000000..e9148cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList-compat.css new file mode 100644 index 0000000..cf3ce84 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList-compat.css @@ -0,0 +1,64 @@ +/* Round Corner */ +.mblRoundCorner { + background-color: black; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectContainer { + padding: 3px 8px; + background-color: black; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectList .mblRoundRectContainer { + margin: 0px; + padding: 0px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList.css new file mode 100644 index 0000000..058587c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList.css @@ -0,0 +1,25 @@ +/* dojox.mobile.RoundRectList */ +.mblRoundRectList { + position: relative; + /* IE needs this */ + + margin: 7px 9px 16px; + padding: 0px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background-color: white; +} +.mblRoundRectList .mblListItem:first-child { + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; +} +.mblRoundRectList .mblListItem:last-child { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList.less new file mode 100644 index 0000000..52e1164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/RoundRectList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider-compat.css new file mode 100644 index 0000000..c8a47f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider-compat.css @@ -0,0 +1,43 @@ +/* dojox.mobile.Slider */ +.mblSlider { + background-image: url(compat/slider-h-bg.png); + -moz-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; + -moz-user-select: none; /* prevent selection */ + -o-user-select: none; + -ms-user-select: none; + user-select: none; + -moz-box-sizing: content-box; /* make width and height consistent with a DIV */ + -o-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; +} +.mblSlider.mblSliderV { + background: #BDBEBD; +} +.mblSliderProgressBar { + background-image: url(compat/slider-h-bar-bg.png); + background-repeat: repeat-x; + -moz-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; +} +.mblSliderV .mblSliderProgressBar { + background: #00A200; +} +.mblSliderHandle { + background-image: url(compat/slider-handle-bg.png); + -moz-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; +} +.mblSliderTransition { + -moz-transition-duration: 400ms; + -o-transition-duration: 400ms; + -ms-transition-duration: 400ms; + transition-duration: 400ms; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider.css new file mode 100644 index 0000000..4a16e82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider.css @@ -0,0 +1,62 @@ +/* dojox.mobile.Slider */ +.mblSlider { + outline: none; + -webkit-user-select: none; + /* prevent selection */ + + -webkit-box-sizing: content-box; + /* make width and height consistent with a DIV */ + + margin: 15px; + /* 1/2 handle width for hanging off the ends of the bar */ + + border: #B0B0B0 1px inset; + background-image: -webkit-gradient(linear, left top, left bottom, from(#bdbebd), to(#f7f3f7)); + -webkit-border-radius: 2px; +} +.mblSliderH { + width: 200px; + height: 8px; +} +.mblSliderH .mblSliderProgressBar { + height: 100%; +} +.mblSliderH .mblSliderHandle { + top: 50%; +} +.mblSliderV { + height: 200px; + width: 8px; +} +.mblSliderV .mblSliderProgressBar { + width: 100%; +} +.mblSliderV .mblSliderHandle { + left: 50%; +} +.mblSliderProgressBar { + background-image: -webkit-gradient(linear, left top, left bottom, from(#00a200), to(#00d300), color-stop(0.2, #00ba00), color-stop(0.2, #00ba00)); + -webkit-border-radius: 2px; +} +.mblSliderHandle { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: #9D9D9D 1px outset; + -webkit-border-radius: 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#9c9a9c), to(#848284)); +} +.mblSliderTransition { + -webkit-transition-duration: 400ms; +} +.mblSliderTouchBox { + margin: 0; + padding: 12pt; + left: -12pt; + top: -12pt; + border: none; + width: 100%; + height: 100%; + background-color: transparent; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider.less new file mode 100644 index 0000000..928972f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Slider.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Slider.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch-compat.css new file mode 100644 index 0000000..3756d95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch-compat.css @@ -0,0 +1,70 @@ +/* Switch - default */ +.mblSwitchBg { + border: none; +} +.mblSwitchBgLeft { + background: none; + background-image: url(compat/switch-default-l.gif); + background-repeat: no-repeat; +} +.mblSwitchBgRight { + background: none; + background-image: url(compat/switch-default-r.gif); + background-repeat: no-repeat; +} +.mblSwitchKnob { + top: 0px; + height: 27px; + background: none; + background-image: url(compat/switch-default-k.gif); + background-repeat: no-repeat; + border: none; +} +/* Switch - Round Shape1 */ +.mblSwRoundShape1 .mblSwitchBgLeft { + background-image: url(compat/switch-round-l.gif); +} +.mblSwRoundShape1 .mblSwitchBgRight { + background-image: url(compat/switch-round-r.gif); +} +.mblSwRoundShape1 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-round1-k.gif); +} +/* Switch - Round Shape2 */ +.mblSwRoundShape2 .mblSwitchBgLeft { + background-image: url(compat/switch-round-l.gif); +} +.mblSwRoundShape2 .mblSwitchBgRight { + background-image: url(compat/switch-round-r.gif); +} +.mblSwRoundShape2 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-round2-k.gif); +} +/* Switch - Arc Shape1 */ +.mblSwArcShape1 .mblSwitchBgLeft { + background-image: url(compat/switch-arc-l.gif); +} +.mblSwArcShape1 .mblSwitchBgRight { + background-image: url(compat/switch-arc-r.gif); +} +.mblSwArcShape1 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-arc1-k.gif); +} +/* Switch - Arc Shape2 */ +.mblSwArcShape2 .mblSwitchBgLeft { + background-image: url(compat/switch-arc-l.gif); +} +.mblSwArcShape2 .mblSwitchBgRight { + background-image: url(compat/switch-arc-r.gif); +} +.mblSwArcShape2 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-arc2-k.gif); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch.css new file mode 100644 index 0000000..f8d1147 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch.css @@ -0,0 +1,18 @@ +@import url("../common/Switch.css"); +/* dojox.mobile.Switch */ +.mblItemSwitch { + top: 18px; +} +.mblSwitchBg { + -webkit-border-radius: 2px; +} +.mblSwitchBgLeft { + background-image: -webkit-gradient(linear, left top, left bottom, from(#00a200), to(#00d300), color-stop(0.2, #00ba00), color-stop(0.2, #00ba00)); +} +.mblSwitchBgRight { + background-image: -webkit-gradient(linear, left top, left bottom, from(#bdbebd), to(#f7f3f7)); +} +.mblSwitchKnob { + background-image: -webkit-gradient(linear, left top, left bottom, from(#9c9a9c), to(#848284)); + -webkit-border-radius: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch.less new file mode 100644 index 0000000..84a1146 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Switch.less @@ -0,0 +1,4 @@ +@import url("../common/Switch.css"); + +@import "variables.less"; +@import "../common/Switch.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar-compat.css new file mode 100644 index 0000000..94fbb13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar-compat.css @@ -0,0 +1,35 @@ +/* dojox.mobile.TabBarButton */ +.mblTabBar { + background-color: #1e1e1e; +} +.dj_ie6 .mblTabBarButtonDiv, .dj_ie7 .mblTabBarButtonDiv { + left: auto; +} +.dj_ie6 .mblTabBar .mblTabBarButton { + display: inline; /* IE bug*/ +} +.mblTabBar .mblTabBarButton.mblTabButtonSelected { + -moz-border-radius: 3px; + background-image: none; +} +.mblTabPanelHeader .mblTabButton { + background-image: url(compat/tab-button-bg.png); +} +.mblTabPanelHeader .mblTabButton.mblTabButtonSelected { + background-image: url(compat/tab-sel-button-bg.png); +} +*html .mblTabButton { /* IE6 hack */ + behavior: expression( + (function(el){ + if(!el.previousSibling) + el.style.borderWidth = "1px"; + el.style.behavior = "none"; + })(this) + ); +} +.dj_ie6 .mblTabPanelHeader .mblDomButton { + left: 0px; +} +.mblHeading .mblTabPanelHeader .mblTabButton { + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar.css new file mode 100644 index 0000000..99955c8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar.css @@ -0,0 +1,158 @@ +/* dojox.mobile.TabBar */ +.mblTabBar { + position: relative; + overflow: hidden; + white-space: nowrap; + margin: 0px; + padding: 0px; + height: 48px; + border-top: 1px solid #000000; + background-color: #000000; + background-image: -webkit-gradient(linear, left top, left bottom, from(#2d2d2d), to(#000000)); + color: white; + text-align: center; +} +.mblTabBarNoIcons { + height: 34px; +} +.mblTabBarNoText { + height: 34px; +} +/* dojox.mobile.TabBarButton */ +.mblTabBarButton { + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblTabBar .mblTabBarButton { + position: relative; + list-style-type: none; + float: left; +} +.mblTabBar .mblTabBarButton.mblTabButtonSelected { + -webkit-border-radius: 3px; + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424)); +} +.mblTabBarButtonAnchor { + display: block; + text-decoration: none; +} +.mblTabBarButtonDiv { + position: relative; + margin-left: auto; + margin-right: auto; + width: 29px; + height: 32px; + margin-top: 2px; +} +.mblTabBarButtonIcon { + position: absolute; + left: 0px; + top: 0px; +} +.mblTabBarButtonSpriteIcon { + position: absolute; +} +.mblTabBarButtonTextBox { + font-family: "Helvetica Neue", Helvetica; + font-size: 11px; +} +.mblTabBarNoIcons .mblTabBarButtonDiv { + display: none; +} +.mblTabBarNoIcons .mblTabBarButtonTextBox { + line-height: 34px; + font-size: 20px; +} +.mblTabBarTop .mblTabButton .mblTabBarButtonDiv { + height: 38px; +} +.mblTabBarHead .mblTabButton .mblTabBarButtonDiv { + margin-top: -2px; +} +.mblTabButton { + position: relative; + float: left; + list-style-type: none; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin-right: 2px; + width: 78px; + height: 61px; + border-width: 0px 1px 0px 1px; + border-style: solid; + border-color: black #182018 black #393C39; + background-color: #212421; + background-image: -webkit-gradient(linear, left top, left bottom, from(#181818), to(#100c10), color-stop(0.1, #313031)); + font-family: Helvetica; + font-size: 13px; + color: white; + text-align: center; +} +.mblTabButton img { + position: absolute; + left: 0px; + margin-top: 8px; +} +.mblTabButtonSelected .mblTabBarButtonTextBox { + color: white; +} +.mblTabButtonSelected.mblTabButton { + background-color: #8C8E8C; + background-image: -webkit-gradient(linear, left top, left bottom, from(#a59ea5), to(#848284)); +} +.mblTabButtonHighlighted.mblTabButton { + background-color: #FFB600; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ffcb00), to(#ff9a00)); +} +.mblTabButtonImgDiv { + position: relative; + margin-left: 24px; + height: 40px; +} +.mblTabPanelHeader { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0px; + padding: 0px 0px 0px 0px; + height: 64px; + border-top: 1px solid #CDD5DF; + border-bottom: 2px solid #949694; + background-color: #000000; + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; +} +.mblTabPanelHeader .mblTabButton { + margin-top: 3px; +} +.mblTabPanelHeader .mblTabButtonDomButton { + width: 43px; +} +.mblTabPanelHeader .mblTabButtonDomButtonClass { + left: 8px; +} +.mblHeading .mblTabPanelHeader { + height: 25px; +} +.mblHeading .mblTabPanelHeader .mblTabButton { + margin-top: 0; + margin-right: 0; + height: 22px; + line-height: 23px; + border-width: 1px 1px 1px 0px; + border-style: solid; + border-color: #555555; + background-color: #ADADAD; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e5e5e5), to(#7f7f7f), color-stop(0.5, #adadad), color-stop(0.5, #909090)); +} +.mblHeading .mblTabPanelHeader .mblTabButton:first-child { + border-left-width: 1px; +} +.mblHeading .mblTabPanelHeader .mblTabButtonSelected { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar.less new file mode 100644 index 0000000..4875c40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TabBar.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TabBar.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea-compat.css new file mode 100644 index 0000000..a4312f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + -moz-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea.css new file mode 100644 index 0000000..4cb389c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea.css @@ -0,0 +1,14 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + padding: 4px 1px; + border-color: #9CACC0; + border-width: 1px; + border-style: inset; + -webkit-border-radius: 3px; + font-family: Helvetica; + font-size: 13px; +} +/* dojox.mobile.ExpandingTextArea */ +.mblExpandingTextArea { + margin: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea.less new file mode 100644 index 0000000..c16ffe0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextArea.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextArea.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox-compat.css new file mode 100644 index 0000000..619c360 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + -moz-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox.css new file mode 100644 index 0000000..d847ab5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox.css @@ -0,0 +1,8 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + height: 22px; + border: #9CACC0 1px inset; + -webkit-border-radius: 3px; + font-family: Helvetica; + font-size: 13px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox.less new file mode 100644 index 0000000..c83890a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/TextBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton-compat.css new file mode 100644 index 0000000..9891522 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton-compat.css @@ -0,0 +1,30 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + background-image: url(compat/button-bg.png); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; +} +.mblToggleButtonSelected { + background-image: url(compat/button-sel-bg.png); +} +.mblToggleButtonChecked { + background-image: url(compat/togglebutton-chk-bg.png); +} +.mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,0px) rotate(45deg) skew(10deg); + -o-transform: rotate(45deg) skew(10deg); + -ms-transform: rotate(45deg) skew(10deg); + transform: rotate(45deg) skew(10deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.dj_ff3 .mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,-6px) rotate(45deg) skew(10deg); +} +.mblToggleButtonChecked.mblToggleButtonSelected { + background-image: url(compat/button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton.css new file mode 100644 index 0000000..31d0557 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton.css @@ -0,0 +1,52 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0px 10px 0px 25px; + height: 29px; + border-width: 1px 1px 1px 1px; + border-style: outset; + border-color: #9CACC0; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + font-family: Helvetica; + font-size: 13px; + color: black; + line-height: 29px; +} +.mblToggleButton.mblToggleButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); + color: white; +} +.mblToggleButton.mblToggleButtonChecked { + background-image: -webkit-gradient(linear, left top, left bottom, from(#00a200), to(#00d300), color-stop(0.2, #00ba00), color-stop(0.2, #00ba00)); + color: white; +} +.mblToggleButton.mblToggleButtonChecked::after { + position: absolute; + content: ""; + top: 6px; + left: 7px; + width: 5px; + height: 10px; + border-color: white; + border-width: 2px; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); + color: white; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected::after { + border-color: white; +} +.mblToggleButton:disabled { + cursor: default; + border-color: grey; + background-image: none; + color: grey; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton.less new file mode 100644 index 0000000..bdce40f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToggleButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToggleButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToolBarButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToolBarButton.css new file mode 100644 index 0000000..968b029 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToolBarButton.css @@ -0,0 +1,31 @@ +/* dojox.mobile.ToolBarButton */ +.mblToolBarButton { + float: left; + position: relative; + overflow: hidden; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: 0px 6px; + height: 22px; + border: 1px solid #555555; + font-family: Helvetica; + font-size: 13px; + font-weight: bold; + color: white; + line-height: 23px; + text-align: center; +} +div.mblToolBarButtonDomButton { + height: 23px; +} +.mblToolBarButtonIcon { + position: relative; + top: -2px; + padding: 0px; +} +.mblToolBarButtonSpriteIcon { + position: absolute; +} +.mblToolBarButtonText { + padding: 0px 10px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToolBarButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToolBarButton.less new file mode 100644 index 0000000..3b67bdc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/ToolBarButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToolBarButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip-compat.css new file mode 100644 index 0000000..6fd514d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip-compat.css @@ -0,0 +1,47 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; + background-image: none; +} +.mblTooltipBefore .mblTooltipArrow { + *right: 0; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipArrow { + *bottom: 0px; /* IE 7 quirks */ +} +.mblTooltipBefore .mblTooltipInnerArrow { + *right: -1px; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipInnerArrow { + *bottom: -1px; /* IE 7 quirks */ +} +.mblTooltipBefore .mblTooltipInnerArrow { + border-right-color: #8C8A8C; +} +.mblTooltipAfter .mblTooltipInnerArrow { + border-left-color: #8C8A8C; +} +.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #8C8A8C; +} +.mblTooltipBelow .mblTooltipInnerArrow { + border-top-color: #8C8A8C; +} +.mblTooltip .mblHeading { + *padding: 0 9px 12px; + *border-top: 1px solid #8C8A8C; + *border-bottom: 1px solid #8C8A8C; + *width: auto; + *height: auto; + *overflow: visible; + *line-height: normal; +} +.dj_ie9 .mblTooltip .mblHeading { + width: auto; +} +.mblTooltip .mblHeading .mblToolBarButton { + *margin: auto 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip.css new file mode 100644 index 0000000..cc28997 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip.css @@ -0,0 +1,144 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + position: absolute; + z-index: 2000; + display: block; + margin: 0; + padding: 5px; + border: #ADAAAD 1px solid; + background-color: #8C8A8C; + background-image: -webkit-gradient(linear, left top, left bottom, from(#9c9e9c), to(#848284)); + -webkit-border-radius: 3px; + opacity: .97; +} +.mblTooltipBubble { + overflow: visible; + padding: 3px; + background-color: #FFC700; + background-image: none; + color: black; +} +.mblTooltipBubble.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #FFC700; +} +.mblTooltipBubble.mblTooltipBelow .mblTooltipInnerArrow { + border-top-color: #FFC700; +} +.mblTooltipBubble.mblTooltipAfter .mblTooltipInnerArrow { + border-left-color: #FFC700; +} +.mblTooltipBubble.mblTooltipBefore .mblTooltipInnerArrow { + border-right-color: #FFC700; +} +.mblTooltip.mblTooltipAfter { + margin-left: -11px; +} +.mblTooltip.mblTooltipBefore { + margin-left: 11px; +} +.mblTooltip.mblTooltipAbove { + margin-top: 11px; +} +.mblTooltip.mblTooltipBelow { + margin-top: -11px; +} +.mblTooltipAnchor { + position: absolute; + width: 1px; + height: 1px; + background-color: transparent; + line-height: 0; + font-size: 0; +} +.mblTooltipBefore .mblTooltipAnchor { + left: -1px; +} +.mblTooltipAfter .mblTooltipAnchor { + right: -1px; +} +.mblTooltipAbove .mblTooltipAnchor { + top: -1px; +} +.mblTooltipBelow .mblTooltipAnchor { + bottom: -1px; +} +.mblTooltipArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 11px solid transparent; +} +.mblTooltipBefore .mblTooltipArrow { + left: auto; + right: 1px; + top: 0; + bottom: auto; + border-left-width: 0; + border-right-color: #ADAAAD; +} +.mblTooltipAfter .mblTooltipArrow { + left: 1px; + right: auto; + top: 0; + bottom: auto; + border-right-width: 0; + border-left-color: #ADAAAD; +} +.mblTooltipAbove .mblTooltipArrow { + top: auto; + bottom: 1px; + left: auto; + right: auto; + border-top-width: 0; + border-bottom-color: #ADAAAD; +} +.mblTooltipBelow .mblTooltipArrow { + top: 1px; + bottom: auto; + left: auto; + right: auto; + border-bottom-width: 0; + border-top-color: #ADAAAD; +} +.mblTooltipInnerArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 10px solid transparent; +} +.mblTooltipBefore .mblTooltipInnerArrow { + right: 0; + top: 0; + border-left-width: 0; + border-right-color: #848284; +} +.mblTooltipAfter .mblTooltipInnerArrow { + left: 0; + top: 0; + border-right-width: 0; + border-left-color: #848284; +} +.mblTooltipAbove .mblTooltipInnerArrow { + bottom: 0; + left: 0; + border-top-width: 0; + border-bottom-color: #9C9E9C; +} +.mblTooltipBelow .mblTooltipInnerArrow { + top: 0; + left: 0; + border-bottom-width: 0; + border-top-color: #848284; +} +.mblTooltipHidden, .mblTooltipHidden * { + visibility: hidden !important; +} +.mblTooltip .mblHeading { + padding-bottom: 3px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + background-color: transparent; + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip.less new file mode 100644 index 0000000..60af6d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/Tooltip.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Tooltip.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/View.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/View.css new file mode 100644 index 0000000..fe86a8c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/View.css @@ -0,0 +1,24 @@ +@import url("../common/transitions/slide.css"); + +@import url("../common/transitions/flip.css"); + +@import url("../common/transitions/fade.css"); +/* dojox.mobile.View */ +.mblView { + position: relative; + top: 0px; + left: 0px; + width: 100%; + color: white; +} +.mblView.mblIn { + position: absolute; +} +.mblFixedHeaderBar { + z-index: 1; +} +.mblFixedBottomBar { + position: absolute !important; + width: 100%; + z-index: 1; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/View.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/View.less new file mode 100644 index 0000000..910651f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/View.less @@ -0,0 +1,6 @@ +@import url("../common/transitions/slide.css"); +@import url("../common/transitions/flip.css"); +@import url("../common/transitions/fade.css"); + +@import "variables.less"; +@import "../common/View.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-app-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-app-compat.css new file mode 100755 index 0000000..8a55bc6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-app-compat.css @@ -0,0 +1,24 @@ +/* mbl.widget.Heading */ +@import url("android-compat.css"); + +.alertTitle { + background-image: url(compat/heading-bg.png); +} + +.mblImageThumbView .mblThumb { + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; +} + +.mblImageThumbView .mblThumb:hover { + -moz-transform: scale(1.2); + -moz-transition: all 0.3s ease-in-out; + -o-transform: scale(1.2); + -o-transition: all 0.3s ease-in-out; +} +.mblImageThumbView .mblThumbInner .mblThumbMask .mblThumbSrc { + -moz-background-size: 100% 100%; + -moz-border-radius: 5px; + -o-background-size: 100% 100%; + -o-border-radius: 5px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-app.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-app.css new file mode 100644 index 0000000..cb58fa3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-app.css @@ -0,0 +1,349 @@ +@import url("android.css"); + +.alertDialog { + width: 100%; + padding-left: 2px; + padding-right: 2px; + z-index: 1000; +} + +.alertDialogBody { + border: 1px solid #ADAAAD; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + background-color: white; + margin-left: 2px; + margin-right: 4px; +} + +.alertTitle { + height: 42px; + margin: 0px; + padding: 0px; + background-color: #889BB3; + background: -webkit-gradient(linear, left top, left bottom, from(#B0BCCD), to(#6D84A2), color-stop(0.5, #889BB3), color-stop(0.5, #8195AF)); + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; + line-height: 44px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + text-align: center; +} + +.alertText { + text-align: center; +} + +.alertBtns { + padding: 5px; + text-align: center; +} + +.alertBtns .mblButton { + width: 100%; + margin-top: 5px; +} + +.alertDialog.mblOut { + position: absolute; +} + +.alertDialog.mblIn { + position: absolute; +} + +.mblSlidev.mblOut { + -webkit-animation-duration: .4s; + -webkit-animation-name: mblSlideOut; + -webkit-animation-timing-function: linear; + -webkit-transform: translateY(-100%); +} +.mblSlidev.mblIn { + -webkit-animation-duration: .4s; + -webkit-animation-name: mblSlideIn; + -webkit-animation-timing-function: linear; + -webkit-transform: translateY(0px); +} +.mblSlidev.mblOut.mblReverse { + -webkit-animation-name: mblSlideOutReverse; +} +.mblSlidev.mblIn.mblReverse { + -webkit-animation-name: mblSlideInReverse; +} + +.dialogUnderlayWrapper { + position: absolute; + left: 0; + top: 0; + z-index: 998; + background: transparent !important; + visibility: visible; + height: 100%; + width: 100%; +} + +.dialogUnderlay { + background-color: #eee; + opacity: 0.5; + width: 100%; + height: 100%; +} + +.list .row { + padding: 10px; + border-bottom: 1px solid #444; + position: relative; + background-color: black; + z-index: 6; /* Must be greater than the .buttons z-index */ +} +.list .row.mblListItem { + padding: 0px; +} + +.list .row.last { + border-bottom: none; +} + +.list .row.hold { + background-color: #444; +} + +.list .buttons { + position: absolute; + text-align: center; + padding-top: 10px; + width: 100%; + height: 100%; + z-index: 5; +} + +.list .buttons .mblButton { +} + +.list .buttons .deleteBtn { + background-color: red; + +} +.list .buttons .cancelBtn { + margin-left: 10px; + background-color: blue; +} + +.row.collapsed { + -webkit-animation-name: collapse-vert; + -webkit-animation-duration: 0.5s; + -webkit-animation-timing-function: linear; +} + +@-webkit-keyframes collapse-vert { + from { + height: 100%; + padding: 10px; + } + to { + height: 0px; + padding: 0px; + } +} + +.listSelector { + position: absolute; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border: 1px solid #666; + background-color: #ccc; + color: #333; + z-index: 1000; +} +.listSelectorRow { + padding: 10px; + border-bottom: 1px solid #666; + white-space: nowrap; +} +.listSelectorRow-selected { + background-color: #666; + color: #ccc; +} + +.listSelectorRow.last { + border-bottom: none; +} + +.mblImageView, .mblImageView canvas { + width: 100%; + height: 100%; +} + +.mblPillar { + display: none; +} + +/* Form Input Styles */ + +input { + -webkit-text-size-adjust: 140%; +} + + +/* ImageThumbView styles */ +.mblImageThumbView { + position: relative; + -webkit-transition-property: height; + -webkit-transition-duration: 0.8s; + -webkit-transition-delay: 0; +} + +.mblImageThumbView .mblThumb { + width: 100px; + min-height: 100px; + display: inline-block; + z-index: 2; + position: absolute; +} + +.mblImageThumbView.animated .mblThumb { + -webkit-transition-property: -webkit-transform, opacity; + -webkit-transition-duration: 1.3s, 1s; + -webkit-transition-delay: 0, 0; +} + +.mblImageThumbView .mblThumb.hidden { + z-index: 1; + opacity: 0; +} +.mblImageThumbView .mblThumbInner { + width: 102px; + height: 102px; + position: relative; +} + +.mblImageThumbView .mblThumbOverlay { + width: 102px; + height: 102px; + background: url(images/thumb-overlay.png) center top no-repeat; + position: absolute; + z-index: 20; + overflow: hidden; +} +.mblImageThumbView .mblThumb.selected .mblThumbOverlay { + background-position: center bottom; +} +.mblImageThumbView .mblThumbInner .mblThumbMask { + width: 90px; + height: 90px; + overflow: hidden; + padding-left: 6px; + padding-top: 5px; + z-index: 10; +} +.mblImageThumbView .mblThumbInner .mblThumbMask img { + left: 0px; + top: 0px; + width: 90px; + height: 90px; +} + +.mblImageThumbView .mblThumbInner .mblThumbMask .mblThumbSrc { + left: 6px; + top: 5px; + background-position: center center; + background-repeat: no-repeat; + overflow: hidden; + position: absolute; + -webkit-background-size: 100% 100%; + -webkit-border-radius: 5px; + width: 90px; + height: 90px; + z-index: 5; +} + +.mblImageThumbView .mblThumbMask div { + left: 0px; + top: 0px; + width: 90px; + height: 90px; + background-repeat: no-repeat; +} +.mblImageThumbView .mblThumb:hover, +.mblImageThumbView .mblThumb.selected { + -webkit-transform: scale(1.2); + transform: scale(1.2); +} + +/* Large Images */ +.mblImageThumbView.large .mblThumb { + width: 150px; + min-height: 150px; +} + +.mblImageThumbView.large .mblThumbInner{ + width: 152px; + height: 152px; +} + +.mblImageThumbView.large .mblThumbOverlay { + background: url(images/thumb-overlay-large.png) center top no-repeat; + width: 152px; + height: 152px; +} +.mblImageThumbView.large .mblThumbInner .mblThumbMask, +.mblImageThumbView.large .mblThumbInner .mblThumbMask img, +.mblImageThumbView.large .mblThumbInner .mblThumbMask .mblThumbSrc, +.mblImageThumbView.large .mblThumbMask div { + width: 133px; + height: 133px; +} + +.mblImageThumbView.large .mblThumbInner .mblThumbMask .mblThumbSrc { + left: 9px; + top: 7px; +} +/* Small Images */ +.mblImageThumbView.small .mblThumb { + width: 75px; + min-height: 75px; +} + +.mblImageThumbView.small .mblThumbInner{ + width: 77px; + height: 77px; +} + +.mblImageThumbView.small .mblThumbOverlay { + background: url(images/thumb-overlay-small.png) center top no-repeat; + width: 77px; + height: 77px; +} +.mblImageThumbView.small .mblThumbInner .mblThumbMask, +.mblImageThumbView.small .mblThumbInner .mblThumbMask img, +.mblImageThumbView.small .mblThumbInner .mblThumbMask .mblThumbSrc, +.mblImageThumbView.small .mblThumbMask div { + width: 70px; + height: 70px; +} + +.mblImageThumbView.small .mblThumbInner .mblThumbMask .mblThumbSrc { + left: 4px; + top: 3px; +} + +.mblImageThumbView .mblThumbLabel { + font-size: smaller; + overflow: hidden; + white-space: nowrap; + text-align: center; +} + +/* Back Button */ +.mblNativeBack .mblArrowButtonHead, +.mblNativeBack .mblArrowButtonBody, +.mblNativeBack .mblArrowButtonNeck { + display: none; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-compat.css new file mode 100755 index 0000000..f5a0140 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android-compat.css @@ -0,0 +1,18 @@ +@import url("base-compat.css"); + +/* common styles */ +@import url("../common/domButtons-compat.css"); +@import url("../common/SpinWheel-compat.css"); + +/* widget styles */ +@import url("Button-compat.css"); +@import url("CheckBox-compat.css"); +@import url("ComboBox-compat.css"); +@import url("IconContainer-compat.css"); +@import url("Opener-compat.css"); +@import url("RadioButton-compat.css"); +@import url("Slider-compat.css"); +@import url("TabBar-compat.css"); +@import url("TextArea-compat.css"); +@import url("TextBox-compat.css"); +@import url("ToggleButton-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android.css new file mode 100755 index 0000000..a50e0ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/android.css @@ -0,0 +1,22 @@ +@import url("base.css"); + +/* common styles */ +@import url("../common/domButtons.css"); +@import url("../common/FixedSplitter.css"); +@import url("../common/SpinWheel.css"); +@import url("../common/transitions.css"); + +/* widget styles */ +@import url("Button.css"); +@import url("Carousel.css"); +@import url("CheckBox.css"); +@import url("ComboBox.css"); +@import url("IconContainer.css"); +@import url("Opener.css"); +@import url("PageIndicator.css"); +@import url("RadioButton.css"); +@import url("Slider.css"); +@import url("TabBar.css"); +@import url("TextArea.css"); +@import url("TextBox.css"); +@import url("ToggleButton.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/base-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/base-compat.css new file mode 100644 index 0000000..d12cf2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/base-compat.css @@ -0,0 +1,7 @@ +@import url("Heading-compat.css"); +@import url("RoundRect-compat.css"); +@import url("RoundRectList-compat.css"); +@import url("EdgeToEdgeCategory-compat.css"); +@import url("ListItem-compat.css"); +@import url("Switch-compat.css"); +@import url("ProgressIndicator-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/base.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/base.css new file mode 100644 index 0000000..2409467 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/base.css @@ -0,0 +1,12 @@ +@import url("common.css"); +@import url("Heading.css"); +@import url("View.css"); +@import url("ToolBarButton.css"); +@import url("RoundRect.css"); +@import url("EdgeToEdgeCategory.css"); +@import url("RoundRectCategory.css"); +@import url("RoundRectList.css"); +@import url("EdgeToEdgeList.css"); +@import url("ListItem.css"); +@import url("Switch.css"); +@import url("ProgressIndicator.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/common.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/common.css new file mode 100644 index 0000000..7cf6b02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/common.css @@ -0,0 +1,27 @@ +html.mobile, .mobile body { + width: 100%; + margin: 0px; + padding: 0px; +} +.mobile body { + overflow-x: hidden; + -webkit-text-size-adjust: none; + background-color: black; + font-family: Helvetica; + font-size: 17px; + color: white; +} +/* Button Colors */ +.mblColorBlue { + background-color: #366EDF; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); +} +/* Default Button Colors */ +.mblColorDefault { + background-color: #ADADAD; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e5e5e5), to(#7f7f7f), color-stop(0.5, #adadad), color-stop(0.5, #909090)); +} +.mblColorDefaultSel { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/common.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/common.less new file mode 100644 index 0000000..4e57a5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/common.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/common.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/arrow-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/arrow-button-bg.png new file mode 100755 index 0000000..7ac8061 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/arrow-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/arrow-button-head.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/arrow-button-head.png new file mode 100755 index 0000000..74ecb76 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/arrow-button-head.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/blue-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/blue-button-bg.png new file mode 100755 index 0000000..3bd558b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/blue-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/button-bg.png new file mode 100644 index 0000000..0d378fa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/button-sel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/button-sel-bg.png new file mode 100644 index 0000000..75ff0f8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/button-sel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/gray-arrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/gray-arrow.png new file mode 100755 index 0000000..c93d17f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/gray-arrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/heading-bg.png new file mode 100644 index 0000000..8c3999b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/icon-content-heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/icon-content-heading-bg.png new file mode 100755 index 0000000..3daa1a8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/icon-content-heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/red-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/red-button-bg.png new file mode 100644 index 0000000..799870f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/red-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-h-bar-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-h-bar-bg.png new file mode 100644 index 0000000..970c7ff Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-h-bar-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-h-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-h-bg.png new file mode 100644 index 0000000..0a08c57 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-h-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-handle-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-handle-bg.png new file mode 100644 index 0000000..1988f04 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/slider-handle-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc-l.gif new file mode 100644 index 0000000..3f01809 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc-r.gif new file mode 100644 index 0000000..3bb5901 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc1-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc1-k.gif new file mode 100644 index 0000000..3dec6bd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc1-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc2-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc2-k.gif new file mode 100644 index 0000000..638e76a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-arc2-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-k.gif new file mode 100644 index 0000000..61aca0b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-l.gif new file mode 100644 index 0000000..9903c39 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-r.gif new file mode 100644 index 0000000..5dbc4bc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-default-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round-l.gif new file mode 100644 index 0000000..0a50568 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round-r.gif new file mode 100644 index 0000000..1cd3c95 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round1-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round1-k.gif new file mode 100644 index 0000000..2b4a9da Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round1-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round2-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round2-k.gif new file mode 100644 index 0000000..08eb031 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/switch-round2-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-button-bg.png new file mode 100755 index 0000000..548ef73 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-orange-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-orange-button-bg.png new file mode 100755 index 0000000..56f555b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-orange-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-sel-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-sel-button-bg.png new file mode 100755 index 0000000..c454088 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/tab-sel-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/togglebutton-chk-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/togglebutton-chk-bg.png new file mode 100644 index 0000000..4bfad06 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/compat/togglebutton-chk-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay-large.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay-large.png new file mode 100644 index 0000000..dfac370 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay-large.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay-small.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay-small.png new file mode 100644 index 0000000..b6836d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay-small.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay.png new file mode 100755 index 0000000..b16efec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/images/thumb-overlay.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/variables.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/variables.less new file mode 100644 index 0000000..c7ffdfb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/android/variables.less @@ -0,0 +1,737 @@ +// common.less +.mobile-body-styles () { + background-color: black; + font-family: Helvetica; + font-size: 17px; + color: white; +} + +.mblView-styles () { + color: white; +} + +.mblColorBlue-styles () { + background-color: #366EDF; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); +} +.mblColorDefault-styles () { + background-color: #ADADAD; + background-image: -webkit-gradient(linear, left top, left bottom, from(#E5E5E5), to(#7F7F7F), color-stop(0.5, #ADADAD), color-stop(0.5, #909090)); +} +.mblColorDefaultSel-styles () { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); +} + +// Heading.less +.mblHeading-styles () { + padding: 0px 0px 0px 4px; + height: 25px; + background-color: #8C8A8C; + background-image: -webkit-gradient(linear, left top, left bottom, from(#9C9E9C), to(#848284)); + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + color: white; + font-family: Helvetica; + font-size: 14px; + font-weight: bold; + text-align: center; + line-height: 26px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} +.mblArrowButton-styles () { + height: 25px; + margin-right: 10px; +} +.mblArrowButtonHead-styles () { + top: 4px; + left: 6px; + width: 14px; + height: 14px; + border: 1px solid #555555; + -webkit-transform: scale(.8,1) rotate(45deg); + background-image: -webkit-gradient(linear, left top, left bottom, from(#E5E5E5), to(#7F7F7F), color-stop(0.5, #ADADAD), color-stop(0.5, #909090)); +} +.mblArrowButtonHeadChrome-styles () { + border: 1px outset #555555; +} +.mblArrowButtonBody-styles () { + top: 0px; + left: 14px; + padding: 0px 10px 0px 3px; + height: 22px; + border-width: 1px 1px 1px 0px; + border-style: solid; + border-color: #555555; + font-family: Helvetica; + font-size: 13px; + color: white; + line-height: 23px; + background-color: #ADADAD; + background-image: -webkit-gradient(linear, left top, left bottom, from(#E5E5E5), to(#7F7F7F), color-stop(0.5, #ADADAD), color-stop(0.5, #909090)); +} +.mblArrowButtonSelected-styles () { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); +} +.mblArrowButtonHeadSelected-styles () { +} +.mblArrowButtonBodySelected-styles () { +} + +// ToolBarButton.less +.mblToolBarButton-styles () { + margin: 0px 6px; + height: 22px; + border: 1px solid #555555; + font-family: Helvetica; + font-size: 13px; + font-weight: bold; + color: white; + line-height: 23px; + text-align: center; +} +.mblToolBarButtonDomButton-styles () { + height: 23px; +} +.mblToolBarButtonIcon-styles () { + top: -2px; + padding: 0px; +} + +// RoundRect.less +.mblRoundRect-styles () { + margin: 7px 9px 16px; + padding: 8px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + color: white; + background-color: black; +} +.mblRoundRectShadowBox-styles () { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); +} + +// EdgeToEdgeCategory.less +.mblEdgeToEdgeCategory-styles () { + margin: 0px; + padding: 0px 10px; + height: 22px; + border-bottom: 1px solid #393439; + background-color: #212021; + font-family: Helvetica; + font-size: 16px; + font-weight: bold; + color: white; + line-height: 22px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} + +// RoundRectCategory.less +.mblRoundRectCategory-styles () { + margin: 18px 0px 0px 20px; + font-family: Helvetica; + font-size: 16px; + color: white; +} + +// RoundRectList.less +.mblRoundRectList-styles () { + margin: 7px 9px 16px; + padding: 0px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background-color: white; +} +.mblRoundRectList-withCategory-styles () { +} +.mblRoundRectList-FirstListItem-styles () { + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; +} +.mblRoundRectList-withCategory-FirstListItem-styles () { +} +.mblRoundRectList-LastListItem-styles () { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; +} + +// EdgeToEdgeList.less +.mblEdgeToEdgeList-styles () { + margin: 0px; + padding: 0px; + background-color: black; +} +.mblEdgeToEdgeList-LastListItem-styles () { + border-bottom-color: #313431; +} + +// ListItem.less +.mblListItem-styles () { + padding: 0px 0px 0px 7px; + height: 64px; + border-bottom: solid 1px #313431; + background-color: black; + font-size: 21px; + color: white; + line-height: 64px; +} +.mblListItem-mblVariableHeight-styles () { + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem-mblListItemAnchor-styles () { + background-position: 14px 17px; + text-decoration: none; + padding-right: 7px; +} +.mblItemSelected-styles () { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); +} +.mblItemSelected-mblListItemAnchor-styles () { + color: black; +} +.mblItemSelected-mblDomButton-Div-styles () { + border-color: white; +} +.mblItemSelected-mblListItemSubText-styles () { +} +.mblListItemTextBoxSelected-styles () { + background-color: #048BF4; +} +.mblListItemChecked-styles () { +} +.mblListItemIcon-styles () { + margin-top: 17px; + margin-right: 11px; +} +.mblListItemSpriteIcon-styles () { + margin-top: 7px; + margin-left: 8px; +} +.mblListItemRightIcon-styles () { + margin-top: 17px; + margin-bottom: -17px; +} +.mblListItemRightText-styles () { + color: white; + margin: 20px 4px 0 0; +} +.mblListItemTextBox-styles () { +} +.mblListItemAnchorNoIcon-mblListItemTextBox-styles () { +} +.mblListItemSubText-styles () { + font-size: 14px; + color: gray; +} + +// Switch.less +.mblItemSwitch-styles () { + top: 18px; +} +.mblSwitchBg-styles () { + -webkit-border-radius: 2px; +} +.mblSwitchBgLeft-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#00A200), to(#00D300), color-stop(0.2, #00BA00), color-stop(0.2, #00BA00)); +} +.mblSwitchBgRight-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#BDBEBD), to(#F7F3F7)); +} +.mblSwitchKnob-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#9C9A9C), to(#848284)); + -webkit-border-radius: 2px; +} + +// Button.less +.mblButton-styles () { + padding: 0px 10px; + height: 29px; + border: #9CACC0 1px outset; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + color: black; + font-family: Helvetica; + font-size: 13px; + line-height: 29px; +} +.mblButton-mblBlueButton-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); + color: white; +} +.mblButton-mblBlueButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); + color: white; +} +.mblButton-mblRedButton-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FA9D58), to(#EE4115), color-stop(0.5, #FF4D25), color-stop(0.5, #ED4D15)); + color: white; +} +.mblButton-mblRedButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); + color: white; +} +.mblButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); + color: white; +} +.mblButtonDisabled-styles () { + border-color: grey; + background-image: none; + color: grey; +} + +// CheckBox.less +.mblCheckBox-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + font: inherit; + -webkit-transform: translateY(0.45em); +} +.mblCheckBoxSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); + border-color: #9CACC0; +} +.mblCheckBoxChecked-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#00A200), to(#00D300), color-stop(0.2, #00BA00), color-stop(0.2, #00BA00)); +} +.mblCheckBoxChecked-after-styles () { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.3em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked-mblCheckBoxSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); + border-color: #9CACC0; +} +.mblCheckBoxChecked-mblCheckBoxSelected-after-styles () { + border-color: #9CACC0; +} + +// ComboBox.less +.dijitPopup-styles () { + -webkit-box-shadow: 0px 0px 50px black; + -webkit-border-radius: 0px; +} +.mblComboBoxMenu-styles () { + border: 1px solid black; + -webkit-border-radius: 0px; + background-color: white; + color: black; +} +.mblComboBoxMenuItemSelected-styles () { + background-color: black; + background-image: -webkit-gradient(linear, left top, left bottom, from(#048BF4), to(#005CE5)); + color: white; +} +.mblComboBoxMenuItem-styles () { + padding: .1em .2em; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #ffffff; + color: inherit; + text-align: left; +} +.mblComboBoxMenuPreviousButton-styles () { + font-style: italic; + overflow: hidden; +} + +// IconContainer.less +.mblIconContainer-styles () { + margin: 20px 0px 0px 10px; + padding: 0px 0px 40px 0px; +} + +// IconItem.less +.mblIconItemTerminator-styles () { + height: 20px; +} +.mblIconItemSub-styles () { + margin-left: -10px; + background-color: white; + color: black; +} +.mblIconArea-styles () { + margin-bottom: 10px; + height: 78px; + width: 74px; + font-family: Helvetica; + font-size: 12px; + color: white; + text-align: center; +} +.mblContent-styles () { + padding-bottom: 20px; +} +.mblIconContentHeading-styles () { + margin-top: 0px; + padding-left: 40px; + height: 25px; + border-top: 1px solid #F1F3F4; + border-bottom: 1px solid #717D85; + background-image: -webkit-gradient(linear, left top, left bottom, from(#E0E4E7), to(#B4BEC6), color-stop(0.5, #C4CCD2), color-stop(0.5, #BFC8CE)); + font-family: Helvetica; + font-size: 14px; + color: white; + line-height: 26px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} + +// RadioButton.less +.mblRadioButton-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 0.5em; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + font: inherit; + -webkit-transform: translateY(0.45em); +} +.mblRadioButtonChecked-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#00A200), to(#00D300), color-stop(0.2, #00BA00), color-stop(0.2, #00BA00)); +} +.mblRadioButtonChecked-after-styles () { + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + border-color: white; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked-Selected-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); +} +.mblRadioButtonChecked-Selected-after-styles () { + border-color: white; +} + +// Slider.less +.mblSlider-styles () { + margin: 15px; /* 1/2 handle width for hanging off the ends of the bar */ + border: #B0B0B0 1px inset; + background-image: -webkit-gradient(linear, left top, left bottom, from(#BDBEBD), to(#F7F3F7)); + -webkit-border-radius: 2px; +} +.mblSliderProgressBar-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#00A200), to(#00D300), color-stop(0.2, #00BA00), color-stop(0.2, #00BA00)); + -webkit-border-radius: 2px; +} +.mblSliderHandle-styles () { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: #9D9D9D 1px outset; + -webkit-border-radius: 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#9C9A9C), to(#848284)); +} + +// TabBar.less +.mblTabBar-styles () { + margin: 0px; + padding: 0px; + height: 48px; + border-top: 1px solid #000000; + background-color: #000000; + background-image: -webkit-gradient(linear, left top, left bottom, from(#2D2D2D), to(#000000)); + color: white; + text-align: center; +} +.mblTabBar-TabBarButton-styles () { +} +.mblTabBar-TabBarButton-Selected-styles () { + -webkit-border-radius: 3px; + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424)); +} +.mblTabBarButtonDiv-styles () { + width: 29px; + height: 32px; + margin-top: 2px; +} +.mblTabBarButtonIcon-styles () { + left: 0px; + top: 0px; +} +.mblTabBarButtonTextBox-styles () { + font-family: "Helvetica Neue", Helvetica; + font-size: 11px; +} +.mblTabBarNoIcons-TabBarButtonTextBox-styles () { + line-height: 34px; + font-size: 20px; +} +.mblTabButton-styles () { + margin-right: 2px; + width: 78px; + height: 61px; + border-width: 0px 1px 0px 1px; + border-style: solid; + border-color: black #182018 black #393C39; + background-color: #212421; + background-image: -webkit-gradient(linear, left top, left bottom, from(#181818), to(#100C10), color-stop(0.1, #313031)); + font-family: Helvetica; + font-size: 13px; + color: white; + text-align: center; +} +.mblTabButton-TabBarButtonAnchor-styles () { +} +.mblTabBarTop-TabButton-TabBarButtonDiv-styles () { + height: 38px; +} +.mblTabBarHead-TabButton-TabBarButtonDiv-styles () { + margin-top: -2px; +} +.mblTabButton-FirstTabButtom-styles () { +} +.mblTabButton-LastTabButton-styles () { +} +.mblTabButton-img-styles () { + position: absolute; + left: 0px; + margin-top: 8px; +} +.mblTabBarButtonTextBoxSelected-styles () { + color: white; +} +.mblTabButtonSelected-styles () { + background-color: #8C8E8C; + background-image: -webkit-gradient(linear, left top, left bottom, from(#A59EA5), to(#848284)); +} +.mblTabButtonHighlighted-styles () { + background-color: #FFB600; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FFCB00), to(#FF9A00)); +} +.mblTabButtonImgDiv-styles () { + position: relative; + margin-left: 24px; + height: 40px; +} +.mblTabPanelHeader-styles () { + margin: 0px; + padding: 0px 0px 0px 0px; + height: 64px; + border-top: 1px solid #CDD5DF; + border-bottom: 2px solid #949694; + background-color: #000000; + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; +} +.mblTabPanelHeader-TabButton-styles () { + margin-top: 3px; +} +.mblTabPanelHeader-TabButtonSelected-styles () { +} +.mblTabPanelHeader-TabButtonDomButton-styles () { + width: 43px; +} +.mblTabPanelHeader-TabButtonDomButtonClass-styles () { + left: 8px; +} +.mblTabPanelHeader-DomButton-styles () { +} +.mblTabPanelHeader-inHeading-styles () { + height: 25px; +} +.mblTabPanelHeader-TabButton-inHeading-styles () { + margin-top: 0; + margin-right: 0; + height: 22px; + line-height: 23px; + border-width: 1px 1px 1px 0px; + border-style: solid; + border-color: #555555; + background-color: #ADADAD; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e5e5e5), to(#7f7f7f), color-stop(0.5, #adadad), color-stop(0.5, #909090)); +} +.mblTabPanelHeader-TabButton-FirstTabButtom-inHeading-styles () { + border-left-width: 1px; +} +.mblTabPanelHeader-TabButton-LastTabButtom-inHeading-styles () { +} +.mblTabPanelHeader-TabButtonSelected-inHeading-styles () { + background-color: #FFC700; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ad7500), to(#ffaa00), color-stop(0.06, #ffb200), color-stop(0.5, #ffc700)); +} + +// TextArea.less +.mblTextArea-styles () { + padding: 4px 1px; + border-color: #9CACC0; + border-width: 1px; + border-style: inset; + -webkit-border-radius: 3px; + font-family: Helvetica; + font-size: 13px; +} +.mblExpandingTextArea-styles () { + margin: 2px; +} + +// TextBox.less +.mblTextBox-styles () { + height: 22px; + border: #9CACC0 1px inset; + -webkit-border-radius: 3px; + font-family: Helvetica; + font-size: 13px; +} + +// ToggleButton.less +.mblToggleButton-styles () { + padding: 0px 10px 0px 25px; + height: 29px; + border-width: 1px 1px 1px 1px; + border-style: outset; + border-color: #9CACC0; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + font-family: Helvetica; + font-size: 13px; + color: black; + line-height: 29px; +} +.mblToggleButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); + color: white; +} +.mblToggleButtonChecked-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#00A200), to(#00D300), color-stop(0.2, #00BA00), color-stop(0.2, #00BA00)); + color: white; +} +.mblToggleButtonChecked-after-styles () { + content: ""; + top: 6px; + left: 7px; + width: 5px; + height: 10px; + border-color: white; + border-width: 2px; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButtonCheckedSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#AD7500), to(#FFAA00), color-stop(0.06, #FFB200), color-stop(0.5, #FFC700)); + color: white; +} +.mblToggleButtonCheckedSelected-after-styles () { + border-color: white; +} +.mblToggleButtonDisabled-styles () { + border-color: grey; + background-image: none; + color: grey; +} + +// Overlay.less +.mblOverlay-styles () { + background-color: #333333; + background-image: none; +} + +// Tooltip.less +.mblTooltip-styles () { + padding: 5px; + border: #ADAAAD 1px solid; + background-color: #8C8A8C; + background-image: -webkit-gradient(linear, left top, left bottom, from(#9C9E9C), to(#848284)); + -webkit-border-radius: 3px; + opacity: .97; +} +.mblTooltipBubble-styles () { + background-color: #FFC700; + background-image: none; + color: black; +} +.mblTooltipInnerArrow-Bubble-Above-styles () { + border-bottom-color: #FFC700; +} +.mblTooltipInnerArrow-Bubble-Below-styles () { + border-top-color: #FFC700; +} +.mblTooltipInnerArrow-Bubble-After-styles () { + border-left-color: #FFC700; +} +.mblTooltipInnerArrow-Bubble-Before-styles () { + border-right-color: #FFC700; +} +.mblTooltipArrow-styles () { + border: 11px solid transparent; +} +.mblTooltipArrow-Before-styles () { + border-left-width: 0; + border-right-color: #ADAAAD; +} +.mblTooltipArrow-After-styles () { + border-right-width: 0; + border-left-color: #ADAAAD; +} +.mblTooltipArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: #ADAAAD; +} +.mblTooltipArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: #ADAAAD; +} +.mblTooltipInnerArrow-Before-styles () { + border-left-width: 0; + border-right-color: #848284; +} +.mblTooltipInnerArrow-After-styles () { + border-right-width: 0; + border-left-color: #848284; +} +.mblTooltipInnerArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: #9C9E9C; +} +.mblTooltipInnerArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: #848284; +} +.mblTooltip-Heading-styles () { + padding-bottom: 3px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + background-color: transparent; + background-image: none; +} +.mblTooltip-Heading-ToolbarButton-styles () { +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button-compat.css new file mode 100644 index 0000000..359e510 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button-compat.css @@ -0,0 +1,33 @@ +/* dojox.mobile.Button */ +.mblButton { + background-color: #cecfd6; + background-image: url(compat/button-bg.png); + background-repeat: repeat-x; + -moz-border-radius: 6px; + -o-border-radius: 6px; + -ms-border-radius: 6px; + border-radius: 6px; +} +.mblButtonSelected { + background-color: #0852ae; + background-image: url(compat/button-sel-bg.png); +} +.mblButtonDisabled { + background-image: none; +} +.mblBlueButton { + background-color: #2261dd; + background-image: url(compat/blue-button-bg.png); +} +.mblBlueButtonSelected { + background-color: #0852ae; + background-image: url(compat/button-sel-bg.png); +} +.mblRedButton { + background-color: #ee4115; + background-image: url(compat/red-button-bg.png); +} +.mblRedButtonSelected { + background-color: #0852ae; + background-image: url(compat/button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button.css new file mode 100644 index 0000000..fa8dc66 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button.css @@ -0,0 +1,45 @@ +/* dojox.mobile.Button */ +.mblButton { + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0px 10px; + height: 29px; + border: #9CACC0 1px outset; + -webkit-border-radius: 6px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); + color: black; + font-family: Helvetica; + font-size: 16px; + line-height: 29px; +} +.mblButton.mblBlueButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); + color: white; +} +.mblButton.mblBlueButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + color: white; +} +.mblButton.mblRedButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fa9d58), to(#ee4115), color-stop(0.5, #ff4d25), color-stop(0.5, #ed4d15)); + color: white; +} +.mblButton.mblRedButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + color: white; +} +.mblButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + color: white; +} +.mblButtonDisabled, .mblButton:disabled { + cursor: default; + border-color: grey; + color: grey; + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button.less new file mode 100644 index 0000000..ab3a96c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Button.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Button.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Carousel.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Carousel.css new file mode 100644 index 0000000..a415950 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Carousel.css @@ -0,0 +1,60 @@ +/* dojox.mobile.Carousel */ +.mblCarousel { + overflow: hidden; +} +.mblCarouselBox { + position: relative; + float: left; +} +.mblCarouselImg { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); + vertical-align: bottom; +} +.mblCarouselImgSelected { + border: 1px dashed #C0C0C0; + -webkit-box-shadow: none; +} +.mblCarouselImgHeaderText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselImgFooterText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselHeaderBar { + background-color: #3A3A3B; + color: #B1B1B1; + font: bold 16px arial, helvetica, clean, sans-serif; + padding: 1px; +} +.mblCarouselBtnContainer { + float: right; +} +.mblCarouselBtn { + height: 18px; + width: 46px; + font: bold 14px arial, helvetica, clean, sans-serif; + color: gray; + padding-top: 0px; + margin: 0px 2px; + border-width: 1px; + /* workaround for android problem */ + +} +.mblCarouselTitle { + margin: 2px 0px 2px 4px; +} +.mblCarouselHeaderBar .mblPageIndicator { + float: right; + width: auto; + padding: 0px 20px; +} +.mblCarouselHeaderBar .mblPageIndicatorContainer { + margin-left: 0px; + margin-right: 0px; +} +.mblCarouselPages { + position: relative; + text-align: center; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Carousel.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Carousel.less new file mode 100644 index 0000000..d717397 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Carousel.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Carousel.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox-compat.css new file mode 100644 index 0000000..f926ffa --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox-compat.css @@ -0,0 +1,34 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + background-image: url(compat/button-bg.png); + -moz-border-radius: 3px; + -o-border-radius: 3px; + -ms-border-radius: 3px; + border-radius: 3px; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.4em); + -ms-transform: translateY(0.4em); + transform: translateY(0.4em); +} +.mblCheckBoxChecked, +.mblCheckBox:checked { + background-image: url(compat/button-bg.png); +} +.mblCheckBoxChecked::after, +.mblCheckBox:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mblCheckBoxSelected, +.mblCheckBoxChecked.mblCheckBoxSelected { + background-image: url(compat/button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox.css new file mode 100644 index 0000000..89f618c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox.css @@ -0,0 +1,44 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); + font: inherit; + -webkit-transform: translatey(0.4em); +} +.mblCheckBoxSelected { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} +.mblCheckBoxChecked, .mblCheckBox:checked { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); +} +.mblCheckBoxChecked::after, .mblCheckBox:checked::after { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.3em; + border-color: #0851AD; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked.mblCheckBoxSelected, .mblCheckBox:checked.mblCheckBoxSelected { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} +.mblCheckBoxChecked.mblCheckBoxSelected::after, .mblCheckBox:checked.mblCheckBoxSelected::after { + border-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox.less new file mode 100644 index 0000000..09f93b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/CheckBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/CheckBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox-compat.css new file mode 100644 index 0000000..b0504e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox-compat.css @@ -0,0 +1,17 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + -moz-box-shadow: none; + -o-box-shadow: none; + -ms-box-shadow: none; + box-shadow: none; + -moz-border-radius: 12px; + -o-border-radius: 12px; + -ms-border-radius: 12px; + border-radius: 12px; +} +.mblComboBoxMenu { + -moz-border-radius: 12px; + -o-border-radius: 12px; + -ms-border-radius: 12px; + border-radius: 12px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox.css new file mode 100644 index 0000000..45dd699 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox.css @@ -0,0 +1,44 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + margin: 0; + padding: 0; + position: absolute; + border: 0; + background-color: transparent; + -webkit-box-shadow: none; + -webkit-border-radius: 12px; +} +.mblReset { + margin: 0; + padding: 0; + border: 0; + line-height: normal; + font: inherit; + color: inherit; +} +.mblComboBoxMenu { + overflow-y: hidden !important; + position: relative; + overflow: hidden; + border: 1px solid black; + -webkit-border-radius: 12px; + background-color: black; +} +.mblComboBoxMenuItem { + white-space: nowrap; + padding: .1em .2em; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: black; + color: white; + text-align: left; +} +.mblComboBoxMenuItemSelected { + color: white; + background-color: black; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} +.mblComboBoxMenuPreviousButton, .mblComboBoxMenuNextButton { + font-style: italic; + overflow: hidden; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox.less new file mode 100644 index 0000000..ab9458c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ComboBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ComboBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeCategory.css new file mode 100644 index 0000000..5951a20 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeCategory.css @@ -0,0 +1,18 @@ +/* dojox.mobile.EdgeToEdgeCategory */ +.mblEdgeToEdgeCategory { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0px; + padding: 0px 10px; + height: 29px; + border-top: 1px solid #313439; + border-bottom: 1px solid #ADAAAD; + background-color: white; + font-family: Helvetica; + font-size: 16px; + font-weight: bold; + color: #7B7D84; + line-height: 29px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeCategory.less new file mode 100644 index 0000000..3bb63da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeList.css new file mode 100644 index 0000000..baac042 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeList.css @@ -0,0 +1,12 @@ +/* dojox.mobile.EdgeToEdgeList */ +.mblEdgeToEdgeList { + position: relative; + /* IE needs this */ + + margin: 0px; + padding: 0px; + background-color: white; +} +.mblEdgeToEdgeList .mblListItem:last-child { + border-bottom-width: 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeList.less new file mode 100644 index 0000000..227627c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/EdgeToEdgeList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading-compat.css new file mode 100644 index 0000000..8c7dd88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading-compat.css @@ -0,0 +1,25 @@ +/* mbl.widget.Heading */ +.mblHeading { + background-image: url(compat/heading-bg.png); +} +.mblHeadingSpanTitle { + white-space: normal; +} + +/* Heading Arrow Button */ +.mblArrowButtonHead { + position: absolute; + top: 0px; + left: 2px; + width: 19px; + height: 30px; + border-style: none; + background-image: url(compat/arrow-button-head.gif); +} +.mblArrowButtonBody { + padding: 0px 10px 0px 5px; + line-height: 28px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; + background-image: url(compat/arrow-button-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading.css new file mode 100644 index 0000000..d5267eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading.css @@ -0,0 +1,83 @@ +/* dojox.mobile.Heading */ +.mblHeading { + position: relative; + margin: 0px; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + z-index: 1; + padding: 0px; + height: 38px; + background-color: #424142; + background-image: -webkit-gradient(linear, left top, left bottom, from(#4a4d52), to(#292c31)); + border-top: 1px solid #63696B; + border-bottom: 1px solid #292C31; + color: white; + font-family: Helvetica; + font-size: 18px; + font-weight: normal; + text-align: center; + line-height: 40px; +} +.mblHeading * { + z-index: 2; +} +.mblHeadingDivTitle { + position: absolute; + width: 100%; + display: none; + left: 0px; + z-index: 1; +} +.mblHeadingCenterTitle .mblHeadingDivTitle { + display: block; +} +.mblHeadingCenterTitle .mblHeadingSpanTitle { + display: none; +} +/* Heading Arrow Button */ +.mblArrowButton { + position: relative; + float: left; + height: 28px; + margin: 4px 3px 0px 0px; +} +.mblArrowButtonHead { + position: absolute; + top: 4px; + left: 4px; + width: 19px; + height: 19px; + border: 1px solid #39454A; + -webkit-transform: scale(0.8, 1) rotate(45deg); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); +} +.dj_chrome .mblArrowButtonHead { + height: 20px; + border: 1px inset #39454A; + -webkit-transform: scale(0.7, 1) rotate(45deg); +} +.mblArrowButtonBody { + position: absolute; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + top: 1px; + left: 15px; + padding: 0px 10px 0px 5px; + height: 28px; + border: none; + font-family: Helvetica; + font-size: 14px; + font-weight: bold; + color: black; + line-height: 30px; + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + background-color: #CED3CE; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); +} +.mblArrowButtonSelected .mblArrowButtonHead, .mblArrowButtonSelected .mblArrowButtonBody { + color: white; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading.less new file mode 100644 index 0000000..cfc8580 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Heading.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Heading.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer-compat.css new file mode 100644 index 0000000..adf6d49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer-compat.css @@ -0,0 +1,11 @@ +@import url("../common/domButtons/DomButtonColorButtons-compat.css"); + +/* dojox.mobile.IconItem */ +.mblIconArea div { + *font-size: 60px; /* IE 7 quirks */ +} + +/* Icon Content Heading */ +.mblIconContentHeading { + background-image: url(compat/icon-content-heading-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer.css new file mode 100644 index 0000000..73fa041 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer.css @@ -0,0 +1,97 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); + +@import url("../common/IconContainer_keyframes.css"); +/* dojox.mobile.IconContainer */ +.mblIconContainer { + margin: 0px; + padding: 0px; +} +/* dojox.mobile.IconItem */ +.mblIconItem { + list-style-type: none; + float: left; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblIconItemTerminator { + list-style-type: none; + clear: both; + height: 0px; +} +.mblIconItemSub { + list-style-type: none; + background-color: white; + color: black; +} +.mblIconArea { + margin-bottom: 5px; + height: 78px; + width: 88px; + text-align: center; + font-family: Helvetica; + font-size: 12px; +} +.mblIconArea div { + position: relative; + height: 65px; + line-height: 65px; + text-align: center; +} +.mblIconArea img { + vertical-align: middle; +} +.mblIconItemSpriteIcon { + position: absolute; +} +.mblContent { + clear: both; + padding-bottom: 20px; +} +table.mblClose { + clear: both; + cursor: pointer; +} +.mblVibrate { + position: relative; + -webkit-animation-duration: .5s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-iteration-count: 20; + -webkit-animation-name: mblVibrate; + -webkit-transform: rotate(0deg); +} +.mblCloseContent { + -webkit-animation-duration: .3s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-name: mblShrink; + -webkit-transform: scale(0.01); +} +.mblCloseContent.mblShrink0 { + -webkit-animation-name: mblShrink0; +} +.mblCloseContent.mblShrink1 { + -webkit-animation-name: mblShrink1; +} +.mblCloseContent.mblShrink2 { + -webkit-animation-name: mblShrink2; +} +.mblCloseContent.mblShrink3 { + -webkit-animation-name: mblShrink3; +} +/* Icon Content Heading */ +.mblIconContentHeading { + position: relative; + clear: both; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin-top: 0px; + padding-left: 40px; + height: 25px; + border-top: 1px solid #F1F3F4; + border-bottom: 1px solid #717D85; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e0e4e7), to(#b4bec6), color-stop(0.5, #c4ccd2), color-stop(0.5, #bfc8ce)); + font-family: Helvetica; + font-size: 16px; + color: white; + line-height: 26px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer.less new file mode 100644 index 0000000..963eae6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/IconContainer.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); +@import url("../common/IconContainer_keyframes.css"); + +@import "variables.less"; +@import "../common/IconContainer.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem-compat.css new file mode 100644 index 0000000..a44214e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem-compat.css @@ -0,0 +1,26 @@ +@import url("../common/domButtons/DomButtonGrayArrow-compat.css"); +@import url("../common/domButtons/DomButtonDarkBlueCheck-compat.css"); + +/* mbl.widget.ListItem */ +*html li.mblListItem.mblVariableHeight { /* IE6 hack */ + height: 0; +} + +.mblListItemIcon { + top: 13px; +} +.mblListItem .mblArrow { + border-style: none; + width: 9px; + height: 13px; + background-image: url(compat/gray-arrow.png); +} +.mblItemSelected .mblArrow { + background-image: url(compat/white-arrow.png); +} +*html .mblListItemTextBox { /* IE6 hack */ + height: 100%; +} +*html li.mblListItem.mblVariableHeight .mblListItemTextBox { /* IE6 hack */ + height: auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem.css new file mode 100644 index 0000000..b8f9f9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem.css @@ -0,0 +1,86 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); + +@import url("../common/domButtons/DomButtonDarkBlueCheck.css"); +/* dojox.mobile.ListItem */ +.mblListItem { + position: relative; + list-style-type: none; + vertical-align: bottom; + /* To avoid IE6 LI bug */ + + padding: 6px; + height: 43px; + border-bottom: solid 1px #DEDFDE; + font-size: 18px; + color: black; + line-height: 43px; +} +.mblListItem.mblVariableHeight { + height: auto; + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem .mblListItemAnchor { + display: block; + height: 100%; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + background-position: 14px 17px; + text-decoration: none; + padding-right: 7px; +} +.mblListItem .mblListItemAnchor * { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0.2); +} +.mblItemSelected { + background-color: #0869C6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} +.mblItemSelected .mblListItemSubText { + color: white; +} +.mblItemSelected .mblListItemAnchor { + color: white; +} +.mblItemSelected .mblDomButton div { + border-color: white; +} +.mblListItemTextBoxSelected { + background-color: #0869C6; +} +.mblListItemIcon { + float: left; + line-height: normal; + margin-top: 7px; + margin-right: 11px; +} +.mblListItemSpriteIcon { + position: absolute; + margin-top: 7px; + margin-left: 8px; +} +.mblListItemRightIcon, .mblListItemRightIcon2 { + position: relative; + float: right; + line-height: normal; + margin-top: 7px; + margin-bottom: -7px; +} +.mblListItemRightText { + position: relative; + float: right; + line-height: normal; + color: black; + margin: 11px 4px 0 0; +} +.mblListItemTextBox { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mblVariableHeight .mblListItemTextBox { + white-space: normal; +} +.mblListItemSubText { + font-size: 14px; + color: #7B7D48; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem.less new file mode 100644 index 0000000..f9f9d21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ListItem.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); +@import url("../common/domButtons/DomButtonDarkBlueCheck.css"); + +@import "variables.less"; +@import "../common/ListItem.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Opener-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Opener-compat.css new file mode 100644 index 0000000..68cb1a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Opener-compat.css @@ -0,0 +1,3 @@ +/* dojox.mobile.Opener */ +@import url("Overlay-compat.css"); +@import url("Tooltip-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Opener.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Opener.css new file mode 100644 index 0000000..141c72e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Opener.css @@ -0,0 +1,3 @@ +/* dojox.mobile.Opener */ +@import url("Overlay.css"); +@import url("Tooltip.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay-compat.css new file mode 100644 index 0000000..3bc72a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay-compat.css @@ -0,0 +1,13 @@ +/* dojox.mobile.Overlay */ +.mblOverlay { + _position: absolute; + text-align: center; +} +.dj_gecko .mblOverlay { + text-align: -moz-center; +} +.dj_ie9 .mblOverlay > *, +.dj_ie8 .mblOverlay > * +{ + margin: 0 auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay.css new file mode 100644 index 0000000..0073339 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay.css @@ -0,0 +1,18 @@ +@import url("../common/transitions/coverv.css"); + +@import url("../common/transitions/revealv.css"); +/* dojox.mobile.Overlay */ +.mblOverlay { + position: fixed; + z-index: 2000; + left: 0; + bottom: 0; + margin: 0; + width: 100%; + text-align: -webkit-center; + background-color: #000000; + background-image: none; +} +.mblOverlayHidden *, .mblOverlayHidden { + visibility: hidden !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay.less new file mode 100644 index 0000000..e49ea9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Overlay.less @@ -0,0 +1,5 @@ +@import url("../common/transitions/coverv.css"); +@import url("../common/transitions/revealv.css"); + +@import "variables.less"; +@import "../common/Overlay.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/PageIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/PageIndicator.css new file mode 100644 index 0000000..a175ad6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/PageIndicator.css @@ -0,0 +1,24 @@ +/* dojox.mobile.PageIndicator */ +.mblPageIndicator { + position: relative; + width: 100%; + height: 20px; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblPageIndicatorContainer { + margin-top: 4px; + margin-left: auto; + margin-right: auto; +} +.mblPageIndicatorDot { + margin: 0px 3px; + width: 6px; + height: 6px; + font-size: 1px; + background-color: #949294; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +.mblPageIndicatorDotSelected { + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/PageIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/PageIndicator.less new file mode 100644 index 0000000..9bb6c49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/PageIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/PageIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator-compat.css new file mode 100644 index 0000000..4ee0810 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator-compat.css @@ -0,0 +1,46 @@ +/* Progress Indicator */ +.mblProg { + position: absolute; + top: 0px; + width: 4px; + font-size: 1px; + height: 36px; + overflow: hidden; + background-color: #C0C0C0; +} +.mblProg0 { + left: 0px; +} +.mblProg1 { + left: 8px; +} +.mblProg2 { + left: 16px; +} +.mblProg3 { + left: 24px; +} +.mblProg4 { + left: 32px; +} +.mblProg5 { + left: 40px; +} +.mblProg6 { + left: 48px; +} +.mblProg7 { + left: 56px; +} +.mblProg8 { + left: 64px; +} +.mblProg9 { + left: 72px; +} +.mblProg10 { + left: 80px; +} +.mblProg11 { + left: 80px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator.css new file mode 100644 index 0000000..2340637 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator.css @@ -0,0 +1,58 @@ +/* Progress Indicator */ +.mblProgContainer { + position: absolute; + width: 40px; + height: 40px; + top: 180px; + left: 50%; + margin: -18px 0px 0px -18px; +} +.mblProg { + position: absolute; + left: 2px; + top: 0px; + width: 11px; + font-size: 1px; + height: 4px; + overflow: hidden; + -webkit-transform-origin: 0 2px; + background-color: #C0C0C0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} +.mblProg0 { + -webkit-transform: translate(18px, 10px) rotate(-90.1deg); +} +.mblProg1 { + -webkit-transform: translate(22px, 11px) rotate(-60deg); +} +.mblProg2 { + -webkit-transform: translate(25px, 14px) rotate(-30deg); +} +.mblProg3 { + -webkit-transform: translate(26px, 18px) rotate(0deg); +} +.mblProg4 { + -webkit-transform: translate(25px, 22px) rotate(30deg); +} +.mblProg5 { + -webkit-transform: translate(22px, 25px) rotate(60deg); +} +.mblProg6 { + -webkit-transform: translate(18px, 26px) rotate(90.1deg); +} +.mblProg7 { + -webkit-transform: translate(14px, 25px) rotate(120deg); +} +.mblProg8 { + -webkit-transform: translate(11px, 22px) rotate(150deg); +} +.mblProg9 { + -webkit-transform: translate(10px, 18px) rotate(180deg); +} +.mblProg10 { + -webkit-transform: translate(11px, 14px) rotate(210deg); +} +.mblProg11 { + -webkit-transform: translate(14px, 11px) rotate(240deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator.less new file mode 100644 index 0000000..2ab2a2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ProgressIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ProgressIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton-compat.css new file mode 100644 index 0000000..6f85871 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton-compat.css @@ -0,0 +1,33 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + background-image: url(compat/button-bg.png); + -moz-border-radius: 0.5em; + -o-border-radius: 0.5em; + -ms-border-radius: 0.5em; + border-radius: 0.5em; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.4em); + -ms-transform: translateY(0.4em); + transform: translateY(0.4em); +} +.mblRadioButtonChecked, +.mblRadioButton:checked { + background-image: url(compat/button-bg.png); +} +.mblRadioButtonChecked::after, +.mblRadioButton:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mblRadioButtonChecked.mblRadioButtonSelected { + background-image: url(compat/button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton.css new file mode 100644 index 0000000..f2a88c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton.css @@ -0,0 +1,41 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 0.5em; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); + font: inherit; + -webkit-transform: translatey(0.4em); +} +.mblRadioButtonChecked, .mblRadioButton:checked { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); +} +.mblRadioButtonChecked::after, .mblRadioButton:checked::after { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + border-color: #0851AD; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked.mblRadioButtonSelected, .mblRadioButton:checked.mblRadioButtonSelected { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} +.mblRadioButtonChecked.mblRadioButtonSelected::after, .mblRadioButton:checked.mblRadioButtonSelected::after { + border-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton.less new file mode 100644 index 0000000..0793ca6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RadioButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RadioButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect-compat.css new file mode 100644 index 0000000..0643874 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect-compat.css @@ -0,0 +1,64 @@ +/* Round Corner */ +.mblRoundCorner { + background-color: white; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #C6C7C6; + border-width: 0px 1px; +} +.mblRoundRectContainer { + padding: 3px 8px; + background-color: white; + border-style: solid; + border-color: #C6C7C6; + border-width: 0px 1px; +} +.mblRoundRectList .mblRoundRectContainer { + margin: 0px; + padding: 0px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect.css new file mode 100644 index 0000000..a1f9991 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect.css @@ -0,0 +1,13 @@ +/* dojox.mobile.RoundRect */ +.mblRoundRect { + margin: 2px 3px 4px; + padding: 8px; + border: 1px solid #C6C7C6; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + color: black; + background-color: white; +} +.mblRoundRect.mblShadow { + -webkit-box-shadow: 1px 2px 1px rgba(0, 0, 0, 0.35); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect.less new file mode 100644 index 0000000..efec816 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRect.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRect.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectCategory.css new file mode 100644 index 0000000..bc46c98 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectCategory.css @@ -0,0 +1,20 @@ +/* dojox.mobile.RoundRectCategory */ +.mblRoundRectCategory { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding: 0px 6px; + margin: 3px 9px 0px; + height: 29px; + font-family: Helvetica; + font-size: 16px; + color: #7B7D84; + line-height: 29px; + background-color: white; + border: 1px solid #ADAAAD; + border-bottom-width: 0px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectCategory.less new file mode 100644 index 0000000..e9148cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList-compat.css new file mode 100644 index 0000000..0643874 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList-compat.css @@ -0,0 +1,64 @@ +/* Round Corner */ +.mblRoundCorner { + background-color: white; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #C6C7C6; + border-width: 0px 1px; +} +.mblRoundRectContainer { + padding: 3px 8px; + background-color: white; + border-style: solid; + border-color: #C6C7C6; + border-width: 0px 1px; +} +.mblRoundRectList .mblRoundRectContainer { + margin: 0px; + padding: 0px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList.css new file mode 100644 index 0000000..2830ad3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList.css @@ -0,0 +1,39 @@ +/* dojox.mobile.RoundRectList */ +.mblRoundRectList { + position: relative; + /* IE needs this */ + + margin: 3px 9px; + padding: 0px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + background-color: white; +} +.mblRoundRectList .mblListItem:first-child { + border-top-width: 0px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; +} +.mblRoundRectList .mblListItem:last-child { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-bottomright: 6px; +} +.mblRoundRectCategory + .mblRoundRectList { + margin-top: 0; + -webkit-border-top-left-radius: 0px; + -webkit-border-top-right-radius: 0px; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 0px; +} +.mblRoundRectCategory + .mblRoundRectList .mblListItem:first-child { + -webkit-border-top-left-radius: 0px; + -webkit-border-top-right-radius: 0px; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList.less new file mode 100644 index 0000000..52e1164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/RoundRectList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider-compat.css new file mode 100644 index 0000000..d3ae9b6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider-compat.css @@ -0,0 +1,43 @@ +/* dojox.mobile.Slider */ +.mblSlider { + background-image: url(compat/slider-h-bg.png); + -moz-border-radius: 6px; + -o-border-radius: 6px; + -ms-border-radius: 6px; + border-radius: 6px; + -moz-user-select: none; /* prevent selection */ + -o-user-select: none; + -ms-user-select: none; + user-select: none; + -moz-box-sizing: content-box; /* make width and height consistent with a DIV */ + -o-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; +} +.mblSlider.mblSliderV { + background: #F7F3F7; +} +.mblSliderProgressBar { + background-image: url(compat/slider-h-bar-bg.png); + background-repeat: repeat-x; + -moz-border-radius: 6px; + -o-border-radius: 6px; + -ms-border-radius: 6px; + border-radius: 6px; +} +.mblSliderV .mblSliderProgressBar { + background: #088EEF; +} +.mblSliderHandle { + background-image: url(compat/slider-handle-bg.png); + -moz-border-radius: 6px; + -o-border-radius: 6px; + -ms-border-radius: 6px; + border-radius: 6px; +} +.mblSliderTransition { + -moz-transition-duration: 400ms; + -o-transition-duration: 400ms; + -ms-transition-duration: 400ms; + transition-duration: 400ms; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider.css new file mode 100644 index 0000000..5e3c183 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider.css @@ -0,0 +1,62 @@ +/* dojox.mobile.Slider */ +.mblSlider { + outline: none; + -webkit-user-select: none; + /* prevent selection */ + + -webkit-box-sizing: content-box; + /* make width and height consistent with a DIV */ + + margin: 15px; + /* 1/2 handle width for hanging off the ends of the bar */ + + border: #B0B0B0 1px inset; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7f3f7), to(#cec5d6), color-stop(0.5, #ced3ce)); + -webkit-border-radius: 6px; +} +.mblSliderH { + width: 200px; + height: 8px; +} +.mblSliderH .mblSliderProgressBar { + height: 100%; +} +.mblSliderH .mblSliderHandle { + top: 50%; +} +.mblSliderV { + height: 200px; + width: 8px; +} +.mblSliderV .mblSliderProgressBar { + width: 100%; +} +.mblSliderV .mblSliderHandle { + left: 50%; +} +.mblSliderProgressBar { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + -webkit-border-radius: 6px; +} +.mblSliderHandle { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: #9D9D9D 1px outset; + -webkit-border-radius: 6px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fafafa), to(#999999), color-stop(0.5, #bbbbbb)); +} +.mblSliderTransition { + -webkit-transition-duration: 400ms; +} +.mblSliderTouchBox { + margin: 0; + padding: 12pt; + left: -12pt; + top: -12pt; + border: none; + width: 100%; + height: 100%; + background-color: transparent; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider.less new file mode 100644 index 0000000..928972f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Slider.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Slider.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch-compat.css new file mode 100644 index 0000000..3756d95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch-compat.css @@ -0,0 +1,70 @@ +/* Switch - default */ +.mblSwitchBg { + border: none; +} +.mblSwitchBgLeft { + background: none; + background-image: url(compat/switch-default-l.gif); + background-repeat: no-repeat; +} +.mblSwitchBgRight { + background: none; + background-image: url(compat/switch-default-r.gif); + background-repeat: no-repeat; +} +.mblSwitchKnob { + top: 0px; + height: 27px; + background: none; + background-image: url(compat/switch-default-k.gif); + background-repeat: no-repeat; + border: none; +} +/* Switch - Round Shape1 */ +.mblSwRoundShape1 .mblSwitchBgLeft { + background-image: url(compat/switch-round-l.gif); +} +.mblSwRoundShape1 .mblSwitchBgRight { + background-image: url(compat/switch-round-r.gif); +} +.mblSwRoundShape1 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-round1-k.gif); +} +/* Switch - Round Shape2 */ +.mblSwRoundShape2 .mblSwitchBgLeft { + background-image: url(compat/switch-round-l.gif); +} +.mblSwRoundShape2 .mblSwitchBgRight { + background-image: url(compat/switch-round-r.gif); +} +.mblSwRoundShape2 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-round2-k.gif); +} +/* Switch - Arc Shape1 */ +.mblSwArcShape1 .mblSwitchBgLeft { + background-image: url(compat/switch-arc-l.gif); +} +.mblSwArcShape1 .mblSwitchBgRight { + background-image: url(compat/switch-arc-r.gif); +} +.mblSwArcShape1 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-arc1-k.gif); +} +/* Switch - Arc Shape2 */ +.mblSwArcShape2 .mblSwitchBgLeft { + background-image: url(compat/switch-arc-l.gif); +} +.mblSwArcShape2 .mblSwitchBgRight { + background-image: url(compat/switch-arc-r.gif); +} +.mblSwArcShape2 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-arc2-k.gif); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch.css new file mode 100644 index 0000000..b8d62c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch.css @@ -0,0 +1,18 @@ +@import url("../common/Switch.css"); +/* dojox.mobile.Switch */ +.mblItemSwitch { + top: 14px; +} +.mblSwitchBg { + -webkit-border-radius: 6px; +} +.mblSwitchBgLeft { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} +.mblSwitchBgRight { + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7f3f7), to(#cec5d6), color-stop(0.5, #ced3ce)); +} +.mblSwitchKnob { + background-image: -webkit-gradient(linear, left top, left bottom, from(#fafafa), to(#999999), color-stop(0.5, #bbbbbb)); + -webkit-border-radius: 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch.less new file mode 100644 index 0000000..84a1146 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Switch.less @@ -0,0 +1,4 @@ +@import url("../common/Switch.css"); + +@import "variables.less"; +@import "../common/Switch.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar-compat.css new file mode 100644 index 0000000..c1944a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar-compat.css @@ -0,0 +1,49 @@ +/* dojox.mobile.TabBarButton */ +.dj_ie6 .mblTabBarButtonDiv, .dj_ie7 .mblTabBarButtonDiv { + left: auto; +} +.dj_ie6 .mblTabBar .mblTabBarButton { + display: inline; /* IE bug*/ +} +.mblTabBarButtonIcon { + position: absolute; + top: 2px; + left: 0px; +} +.dj_gecko .mblTabBar .mblTabBarButton.mblTabButtonSelected { + -moz-border-radius: 3px; +} +.dj_gecko .mblTabPanelHeader .mblTabButton { + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; +} +*html .mblTabButton { /* IE6 hack */ + behavior: expression( + (function(el){ + if(!el.previousSibling) + el.style.borderWidth = "1px"; + el.style.behavior = "none"; + })(this) + ); +} +.dj_ie6 .mblTabPanelHeader .mblDomButton { + left: 0px; +} +.mblTabButton img { + position: absolute; + left: 0px; + top: 0px; + margin-top: 8px; +} +.dj_gecko .mblHeading .mblTabPanelHeader .mblTabButton { + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 0px; +} +.dj_gecko .mblHeading .mblTabPanelHeader .mblTabButton:first-child { + -moz-border-radius-topleft: 6px; + -moz-border-radius-bottomleft: 6px; +} +.dj_gecko .mblHeading .mblTabPanelHeader .mblTabButton:last-child { + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar.css new file mode 100644 index 0000000..06bc550 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar.css @@ -0,0 +1,164 @@ +/* dojox.mobile.TabBar */ +.mblTabBar { + position: relative; + overflow: hidden; + white-space: nowrap; + margin: 0px; + padding: 0px; + height: 48px; + border-top: 1px solid #000000; + background-color: #212421; + background-image: -webkit-gradient(linear, left top, left bottom, from(#181818), to(#100c10)); + color: white; + text-align: center; +} +.mblTabBarNoIcons { + height: 34px; +} +.mblTabBarNoText { + height: 34px; +} +/* dojox.mobile.TabBarButton */ +.mblTabBarButton { + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblTabBar .mblTabBarButton { + position: relative; + list-style-type: none; + float: left; +} +.mblTabBar .mblTabBarButton.mblTabButtonSelected { + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424), color-stop(0.5, #353535)); + -webkit-border-radius: 3px; +} +.mblTabBarButtonAnchor { + display: block; + text-decoration: none; +} +.mblTabBarButtonDiv { + position: relative; + margin-left: auto; + margin-right: auto; + height: 34px; + width: 29px; +} +.mblTabBarButtonIcon { + position: absolute; + left: 0; + top: 0; +} +.mblTabBarButtonSpriteIcon { + position: absolute; +} +.mblTabBarButtonTextBox { + color: #979797; + font-family: "Helvetica Neue", Helvetica; + font-size: 11px; +} +.mblTabBarNoIcons .mblTabBarButtonDiv { + display: none; +} +.mblTabBarNoIcons .mblTabBarButtonTextBox { + line-height: 34px; + font-size: 20px; +} +.mblTabBarTop .mblTabButton .mblTabBarButtonDiv { + height: 40px; +} +.mblTabButton { + position: relative; + float: left; + list-style-type: none; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + width: 78px; + height: 61px; + border-width: 1px 1px 0px 1px; + border-style: solid; + border-color: #7B7D84 #182018 black #393C39; + background-color: #212421; + background-image: -webkit-gradient(linear, left top, left bottom, from(#181818), to(#100c10), color-stop(0.1, #313031)); + font-family: Helvetica; + font-size: 13px; + color: #979797; + text-align: center; +} +.mblTabButton img { + position: absolute; + left: 0px; + margin-top: 8px; +} +.mblTabButtonSelected .mblTabBarButtonTextBox { + color: white; +} +.mblTabButtonImgDiv { + position: relative; + margin-left: 24px; + height: 40px; +} +.mblTabPanelHeader { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0px; + padding: 0px 0px 0px 0px; + height: 64px; + border-top: 1px solid #CDD5DF; + border-bottom: 2px solid #949694; + background-color: #000000; + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; +} +.mblTabPanelHeader .mblTabButton { + margin-top: 3px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; +} +.mblTabPanelHeader .mblTabButton.mblTabButtonSelected { + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424), color-stop(0.5, #353535)); + color: white; +} +.mblTabPanelHeader .mblTabButtonDomButton { + width: 43px; +} +.mblTabPanelHeader .mblTabButtonDomButtonClass { + left: 8px; +} +.mblHeading .mblTabPanelHeader { + height: 38px; +} +.mblHeading .mblTabPanelHeader .mblTabButton { + margin: 5px 0; + height: 28px; + border-width: 0px 1px 0px 0px; + border-style: solid; + border-color: #39454A; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + background-color: #CED3CE; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); + font-size: 14px; + font-weight: bold; + line-height: 30px; + color: black; +} +.mblHeading .mblTabPanelHeader .mblTabButton:first-child { + -webkit-border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; +} +.mblHeading .mblTabPanelHeader .mblTabButton:last-child { + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-right: none; +} +.mblHeading .mblTabPanelHeader .mblTabButtonSelected { + background-color: #0869C6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar.less new file mode 100644 index 0000000..4875c40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TabBar.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TabBar.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea-compat.css new file mode 100644 index 0000000..c68fb12 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + -moz-border-radius: 6px; + -o-border-radius: 6px; + -ms-border-radius: 6px; + border-radius: 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea.css new file mode 100644 index 0000000..a39e681 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea.css @@ -0,0 +1,14 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + padding: 4px 1px; + border-color: #9CACC0; + border-width: 1px; + border-style: inset; + -webkit-border-radius: 6px; + font-family: Helvetica; + font-size: 13px; +} +/* dojox.mobile.ExpandingTextArea */ +.mblExpandingTextArea { + margin: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea.less new file mode 100644 index 0000000..c16ffe0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextArea.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextArea.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox-compat.css new file mode 100644 index 0000000..8672e5f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + -moz-border-radius: 6px; + -o-border-radius: 6px; + -ms-border-radius: 6px; + border-radius: 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox.css new file mode 100644 index 0000000..126bae9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox.css @@ -0,0 +1,8 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + height: 22px; + border: #9CACC0 1px inset; + -webkit-border-radius: 6px; + font-family: Helvetica; + font-size: 13px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox.less new file mode 100644 index 0000000..c83890a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/TextBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton-compat.css new file mode 100644 index 0000000..2f5214b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton-compat.css @@ -0,0 +1,31 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + background-image: url(compat/button-bg.png); + -moz-border-radius: 6px; + -o-border-radius: 6px; + -ms-border-radius: 6px; + border-radius: 6px; +} +.mblToggleButtonSelected { + background-image: url(compat/button-sel-bg.png); +} +.mblToggleButtonChecked { + background-image: url(compat/button-bg.png); +} +.mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,0px) rotate(45deg) skew(10deg); + -o-transform: rotate(45deg) skew(10deg); + -ms-transform: rotate(45deg) skew(10deg); + transform: rotate(45deg) skew(10deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + +} +.dj_ff3 .mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,-6px) rotate(45deg) skew(10deg); +} +.mblToggleButtonChecked.mblToggleButtonSelected { + background-image: url(compat/button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton.css new file mode 100644 index 0000000..0658f5f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton.css @@ -0,0 +1,52 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0px 10px 0px 25px; + height: 29px; + border-width: 1px 1px 1px 1px; + border-style: outset; + border-color: #9CACC0; + -webkit-border-radius: 6px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); + font-family: Helvetica; + font-size: 16px; + color: black; + line-height: 29px; +} +.mblToggleButton.mblToggleButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + color: white; +} +.mblToggleButton.mblToggleButtonChecked { + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); + color: black; +} +.mblToggleButton.mblToggleButtonChecked::after { + position: absolute; + content: ""; + top: 6px; + left: 7px; + width: 5px; + height: 10px; + border-color: #0851AD; + border-width: 2px; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + color: white; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected::after { + border-color: white; +} +.mblToggleButton:disabled { + cursor: default; + border-color: grey; + background-image: none; + color: grey; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton.less new file mode 100644 index 0000000..bdce40f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToggleButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToggleButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToolBarButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToolBarButton.css new file mode 100644 index 0000000..29c8284 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToolBarButton.css @@ -0,0 +1,27 @@ +/* dojox.mobile.ToolBarButton */ +.mblToolBarButton { + float: left; + position: relative; + overflow: hidden; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: 4px 3px; + height: 29px; + font-family: Helvetica; + font-size: 14px; + font-weight: bold; + line-height: 29px; + text-align: center; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; +} +.mblToolBarButtonIcon { + position: relative; + top: 1px; +} +.mblToolBarButtonSpriteIcon { + position: absolute; +} +.mblToolBarButtonText { + padding: 0px 10px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToolBarButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToolBarButton.less new file mode 100644 index 0000000..3b67bdc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/ToolBarButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToolBarButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip-compat.css new file mode 100644 index 0000000..bb5900d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip-compat.css @@ -0,0 +1,47 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; + background-image: none; +} +.mblTooltipBefore .mblTooltipArrow { + *right: 0; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipArrow { + *bottom: 0px; /* IE 7 quirks */ +} +.mblTooltipBefore .mblTooltipInnerArrow { + *right: -1px; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipInnerArrow { + *bottom: -1px; /* IE 7 quirks */ +} +.mblTooltipBefore .mblTooltipInnerArrow { + border-right-color: #424142; +} +.mblTooltipAfter .mblTooltipInnerArrow { + border-left-color: #424142; +} +.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #424142; +} +.mblTooltipBelow .mblTooltipInnerArrow { + border-top-color: #424142; +} +.mblTooltip .mblHeading { + *padding: 0 9px 12px; + *border-top: 1px solid #424142; + *border-bottom: 1px solid #424142; + *width: auto; + *height: auto; + *overflow: visible; + *line-height: normal; +} +.dj_ie9 .mblTooltip .mblHeading { + width: auto; +} +.mblTooltip .mblHeading .mblToolBarButton { + *margin: auto 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip.css new file mode 100644 index 0000000..e94715c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip.css @@ -0,0 +1,143 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + position: absolute; + z-index: 2000; + display: block; + margin: 0; + padding: 5px; + border: #ADAAAD 1px solid; + background-color: #424142; + background-image: -webkit-gradient(linear, left top, left bottom, from(#4a4d52), to(#292c31)); + -webkit-border-radius: 6px; + opacity: .97; +} +.mblTooltipBubble { + overflow: visible; + padding: 3px; + background-color: #000000; + background-image: none; + color: #ffffff; +} +.mblTooltipBubble.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #000000; +} +.mblTooltipBubble.mblTooltipBelow .mblTooltipInnerArrow { + border-top-color: #000000; +} +.mblTooltipBubble.mblTooltipAfter .mblTooltipInnerArrow { + border-left-color: #000000; +} +.mblTooltipBubble.mblTooltipBefore .mblTooltipInnerArrow { + border-right-color: #000000; +} +.mblTooltip.mblTooltipAfter { + margin-left: -11px; +} +.mblTooltip.mblTooltipBefore { + margin-left: 11px; +} +.mblTooltip.mblTooltipAbove { + margin-top: 11px; +} +.mblTooltip.mblTooltipBelow { + margin-top: -11px; +} +.mblTooltipAnchor { + position: absolute; + width: 1px; + height: 1px; + background-color: transparent; + line-height: 0; + font-size: 0; +} +.mblTooltipBefore .mblTooltipAnchor { + left: -1px; +} +.mblTooltipAfter .mblTooltipAnchor { + right: -1px; +} +.mblTooltipAbove .mblTooltipAnchor { + top: -1px; +} +.mblTooltipBelow .mblTooltipAnchor { + bottom: -1px; +} +.mblTooltipArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 11px solid transparent; +} +.mblTooltipBefore .mblTooltipArrow { + left: auto; + right: 1px; + top: 0; + bottom: auto; + border-left-width: 0; + border-right-color: #ADAAAD; +} +.mblTooltipAfter .mblTooltipArrow { + left: 1px; + right: auto; + top: 0; + bottom: auto; + border-right-width: 0; + border-left-color: #ADAAAD; +} +.mblTooltipAbove .mblTooltipArrow { + top: auto; + bottom: 1px; + left: auto; + right: auto; + border-top-width: 0; + border-bottom-color: #ADAAAD; +} +.mblTooltipBelow .mblTooltipArrow { + top: 1px; + bottom: auto; + left: auto; + right: auto; + border-bottom-width: 0; + border-top-color: #ADAAAD; +} +.mblTooltipInnerArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 10px solid transparent; +} +.mblTooltipBefore .mblTooltipInnerArrow { + right: 0; + top: 0; + border-left-width: 0; + border-right-color: #4A4D52; +} +.mblTooltipAfter .mblTooltipInnerArrow { + left: 0; + top: 0; + border-right-width: 0; + border-left-color: #4A4D52; +} +.mblTooltipAbove .mblTooltipInnerArrow { + bottom: 0; + left: 0; + border-top-width: 0; + border-bottom-color: #4A4D52; +} +.mblTooltipBelow .mblTooltipInnerArrow { + top: 0; + left: 0; + border-bottom-width: 0; + border-top-color: #292C31; +} +.mblTooltipHidden, .mblTooltipHidden * { + visibility: hidden !important; +} +.mblTooltip .mblHeading { + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + background-color: transparent; + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip.less new file mode 100644 index 0000000..60af6d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/Tooltip.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Tooltip.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/View.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/View.css new file mode 100644 index 0000000..363c9bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/View.css @@ -0,0 +1,24 @@ +@import url("../common/transitions/slide.css"); + +@import url("../common/transitions/flip.css"); + +@import url("../common/transitions/fade.css"); +/* dojox.mobile.View */ +.mblView { + position: relative; + top: 0px; + left: 0px; + width: 100%; + color: black; +} +.mblView.mblIn { + position: absolute; +} +.mblFixedHeaderBar { + z-index: 1; +} +.mblFixedBottomBar { + position: absolute !important; + width: 100%; + z-index: 1; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/View.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/View.less new file mode 100644 index 0000000..910651f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/View.less @@ -0,0 +1,6 @@ +@import url("../common/transitions/slide.css"); +@import url("../common/transitions/flip.css"); +@import url("../common/transitions/fade.css"); + +@import "variables.less"; +@import "../common/View.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/base-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/base-compat.css new file mode 100644 index 0000000..d12cf2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/base-compat.css @@ -0,0 +1,7 @@ +@import url("Heading-compat.css"); +@import url("RoundRect-compat.css"); +@import url("RoundRectList-compat.css"); +@import url("EdgeToEdgeCategory-compat.css"); +@import url("ListItem-compat.css"); +@import url("Switch-compat.css"); +@import url("ProgressIndicator-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/base.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/base.css new file mode 100644 index 0000000..2409467 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/base.css @@ -0,0 +1,12 @@ +@import url("common.css"); +@import url("Heading.css"); +@import url("View.css"); +@import url("ToolBarButton.css"); +@import url("RoundRect.css"); +@import url("EdgeToEdgeCategory.css"); +@import url("RoundRectCategory.css"); +@import url("RoundRectList.css"); +@import url("EdgeToEdgeList.css"); +@import url("ListItem.css"); +@import url("Switch.css"); +@import url("ProgressIndicator.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/blackberry-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/blackberry-compat.css new file mode 100644 index 0000000..f5a0140 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/blackberry-compat.css @@ -0,0 +1,18 @@ +@import url("base-compat.css"); + +/* common styles */ +@import url("../common/domButtons-compat.css"); +@import url("../common/SpinWheel-compat.css"); + +/* widget styles */ +@import url("Button-compat.css"); +@import url("CheckBox-compat.css"); +@import url("ComboBox-compat.css"); +@import url("IconContainer-compat.css"); +@import url("Opener-compat.css"); +@import url("RadioButton-compat.css"); +@import url("Slider-compat.css"); +@import url("TabBar-compat.css"); +@import url("TextArea-compat.css"); +@import url("TextBox-compat.css"); +@import url("ToggleButton-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/blackberry.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/blackberry.css new file mode 100644 index 0000000..a50e0ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/blackberry.css @@ -0,0 +1,22 @@ +@import url("base.css"); + +/* common styles */ +@import url("../common/domButtons.css"); +@import url("../common/FixedSplitter.css"); +@import url("../common/SpinWheel.css"); +@import url("../common/transitions.css"); + +/* widget styles */ +@import url("Button.css"); +@import url("Carousel.css"); +@import url("CheckBox.css"); +@import url("ComboBox.css"); +@import url("IconContainer.css"); +@import url("Opener.css"); +@import url("PageIndicator.css"); +@import url("RadioButton.css"); +@import url("Slider.css"); +@import url("TabBar.css"); +@import url("TextArea.css"); +@import url("TextBox.css"); +@import url("ToggleButton.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/common.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/common.css new file mode 100644 index 0000000..489bccb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/common.css @@ -0,0 +1,29 @@ +html.mobile, .mobile body { + width: 100%; + margin: 0px; + padding: 0px; +} +.mobile body { + overflow-x: hidden; + -webkit-text-size-adjust: none; + background-color: #DEDFDE; + font-family: Helvetica; + font-size: 18px; +} +/* Button Colors */ +.mblColorBlue { + color: white; + background-color: #215fdc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); +} +/* Default Button Colors */ +.mblColorDefault { + color: black; + background-color: #CED3CE; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); +} +.mblColorDefaultSel { + color: white; + background-color: #0869C6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/common.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/common.less new file mode 100644 index 0000000..4e57a5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/common.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/common.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/arrow-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/arrow-button-bg.png new file mode 100644 index 0000000..55a6e27 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/arrow-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/arrow-button-head.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/arrow-button-head.gif new file mode 100644 index 0000000..3572fbf Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/arrow-button-head.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/blue-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/blue-button-bg.png new file mode 100644 index 0000000..3bd558b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/blue-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/button-bg.png new file mode 100644 index 0000000..ba69969 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/button-sel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/button-sel-bg.png new file mode 100644 index 0000000..4e7384a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/button-sel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/gray-arrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/gray-arrow.png new file mode 100644 index 0000000..c93d17f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/gray-arrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/heading-bg.png new file mode 100644 index 0000000..f0546b4 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/icon-content-heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/icon-content-heading-bg.png new file mode 100644 index 0000000..3daa1a8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/icon-content-heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/red-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/red-button-bg.png new file mode 100644 index 0000000..799870f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/red-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-h-bar-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-h-bar-bg.png new file mode 100644 index 0000000..e130b9c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-h-bar-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-h-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-h-bg.png new file mode 100644 index 0000000..955dc11 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-h-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-handle-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-handle-bg.png new file mode 100644 index 0000000..d06d0dd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/slider-handle-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc-l.gif new file mode 100644 index 0000000..9abb5fb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc-r.gif new file mode 100644 index 0000000..a787840 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc1-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc1-k.gif new file mode 100644 index 0000000..6a4e89d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc1-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc2-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc2-k.gif new file mode 100644 index 0000000..5193586 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-arc2-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-k.gif new file mode 100644 index 0000000..193cb73 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-l.gif new file mode 100644 index 0000000..1fb3013 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-r.gif new file mode 100644 index 0000000..6511b8b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-default-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round-l.gif new file mode 100644 index 0000000..ed34d5d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round-r.gif new file mode 100644 index 0000000..3825e83 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round1-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round1-k.gif new file mode 100644 index 0000000..8d00c11 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round1-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round2-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round2-k.gif new file mode 100644 index 0000000..c4c7969 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/switch-round2-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-button-bg.png new file mode 100644 index 0000000..548ef73 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-orange-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-orange-button-bg.png new file mode 100644 index 0000000..56f555b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-orange-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-sel-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-sel-button-bg.png new file mode 100644 index 0000000..c454088 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/compat/tab-sel-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay-large.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay-large.png new file mode 100644 index 0000000..dfac370 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay-large.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay-small.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay-small.png new file mode 100644 index 0000000..b6836d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay-small.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay.png new file mode 100644 index 0000000..b16efec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/images/thumb-overlay.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/variables.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/variables.less new file mode 100644 index 0000000..90d6e4b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/blackberry/variables.less @@ -0,0 +1,763 @@ +// common.less +.mobile-body-styles () { + background-color: #DEDFDE; + font-family: Helvetica; + font-size: 18px; +} + +.mblView-styles () { + color: black; +} + +.mblColorBlue-styles () { + color: white; + background-color: #215fdc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); +} +.mblColorDefault-styles () { + color: black; + background-color: #CED3CE; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); +} +.mblColorDefaultSel-styles () { + color: white; + background-color: #0869C6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} + +// Heading.less +.mblHeading-styles () { + padding: 0px; + height: 38px; + background-color: #424142; + background-image: -webkit-gradient(linear, left top, left bottom, from(#4A4D52), to(#292C31)); + border-top: 1px solid #63696B; + border-bottom: 1px solid #292C31; + color: white; + font-family: Helvetica; + font-size: 18px; + font-weight: normal; + text-align: center; + line-height: 40px; +} +.mblArrowButton-styles () { + height: 28px; + margin: 4px 3px 0px 0px; +} +.mblArrowButtonHead-styles () { + top: 4px; + left: 4px; + width: 19px; + height: 19px; + border: 1px solid #39454A; + -webkit-transform: scale(.8,1) rotate(45deg); + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); +} +.mblArrowButtonHeadChrome-styles () { + height: 20px; + border: 1px inset #39454A; + -webkit-transform: scale(0.7, 1) rotate(45deg); +} +.mblArrowButtonBody-styles () { + top: 1px; + left: 15px; + padding: 0px 10px 0px 5px; + height: 28px; + border: none; + font-family: Helvetica; + font-size: 14px; + font-weight: bold; + color: black; + line-height: 30px; + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + background-color: #CED3CE; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); +} +.mblArrowButtonSelected-styles () { + color: white; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} +.mblArrowButtonHeadSelected-styles () { +} +.mblArrowButtonBodySelected-styles () { +} + +// ToolBarButton.less +.mblToolBarButton-styles () { + margin: 4px 3px; + height: 29px; + font-family: Helvetica; + font-size: 14px; + font-weight: bold; + line-height: 29px; + text-align: center; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; +} +.mblToolBarButtonDomButton-styles () { +} +.mblToolBarButtonIcon-styles () { + top: 1px; +} + +// RoundRect.less +.mblRoundRect-styles () { + margin: 2px 3px 4px; + padding: 8px; + border: 1px solid #C6C7C6; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + color: black; + background-color: white; +} +.mblRoundRectShadowBox-styles () { + -webkit-box-shadow: 1px 2px 1px rgba(0, 0, 0, 0.35); +} + +// EdgeToEdgeCategory.less +.mblEdgeToEdgeCategory-styles () { + margin: 0px; + padding: 0px 10px; + height: 29px; + border-top: 1px solid #313439; + border-bottom: 1px solid #ADAAAD; + background-color: white; + font-family: Helvetica; + font-size: 16px; + font-weight: bold; + color: #7B7D84; + line-height: 29px; +} + +// RoundRectCategory.less +.mblRoundRectCategory-styles () { + padding: 0px 6px; + margin: 3px 9px 0px; + height: 29px; + font-family: Helvetica; + font-size: 16px; + color: #7B7D84; + line-height: 29px; + background-color: white; + border: 1px solid #ADAAAD; + border-bottom-width: 0px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; +} + +// RoundRectList.less +.mblRoundRectList-styles () { + margin: 3px 9px; + padding: 0px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + background-color: white; +} +.mblRoundRectList-withCategory-styles () { + margin-top: 0; + -webkit-border-top-left-radius: 0px; + -webkit-border-top-right-radius: 0px; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 0px; +} +.mblRoundRectList-FirstListItem-styles () { + border-top-width: 0px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; +} +.mblRoundRectList-withCategory-FirstListItem-styles () { + -webkit-border-top-left-radius: 0px; + -webkit-border-top-right-radius: 0px; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 0px; +} +.mblRoundRectList-LastListItem-styles () { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-bottomright: 6px; +} + +// EdgeToEdgeList.less +.mblEdgeToEdgeList-styles () { + margin: 0px; + padding: 0px; + background-color: white; +} +.mblEdgeToEdgeList-LastListItem-styles () { + border-bottom-width: 0px; +} + +// ListItem.less +.mblListItem-styles () { + padding: 6px; + height: 43px; + border-bottom: solid 1px #DEDFDE; + font-size: 18px; + color: black; + line-height: 43px; +} +.mblListItem-mblVariableHeight-styles () { + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem-mblListItemAnchor-styles () { + background-position: 14px 17px; + text-decoration: none; + padding-right: 7px; +} +.mblItemSelected-styles () { + background-color: #0869C6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} +.mblItemSelected-mblListItemAnchor-styles () { + color: white; +} +.mblItemSelected-mblDomButton-Div-styles () { + border-color: white; +} +.mblItemSelected-mblListItemSubText-styles () { + color: white; +} +.mblListItemTextBoxSelected-styles () { + background-color: #0869C6; +} +.mblListItemChecked-styles () { +} +.mblListItemIcon-styles () { + margin-top: 7px; + margin-right: 11px; +} +.mblListItemSpriteIcon-styles () { + margin-top: 7px; + margin-left: 8px; +} +.mblListItemRightIcon-styles () { + margin-top: 7px; + margin-bottom: -7px; +} +.mblListItemRightText-styles () { + color: black; + margin: 11px 4px 0 0; +} +.mblListItemTextBox-styles () { +} +.mblListItemAnchorNoIcon-mblListItemTextBox-styles () { +} +.mblListItemSubText-styles () { + font-size: 14px; + color: #7B7D48; +} + +// Switch.less +.mblItemSwitch-styles () { + top: 14px; +} +.mblSwitchBg-styles () { + -webkit-border-radius: 6px; +} +.mblSwitchBgLeft-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} +.mblSwitchBgRight-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7F3F7), to(#CEC5D6), color-stop(0.5, #CED3CE)); +} +.mblSwitchKnob-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#FAFAFA), to(#999999), color-stop(0.5, #BBBBBB)); + -webkit-border-radius: 6px; +} + +// Button.less +.mblButton-styles () { + padding: 0px 10px; + height: 29px; + border: #9CACC0 1px outset; + -webkit-border-radius: 6px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); + color: black; + font-family: Helvetica; + font-size: 16px; + line-height: 29px; +} +.mblButton-mblBlueButton-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); + color: white; +} +.mblButton-mblBlueButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); + color: white; +} +.mblButton-mblRedButton-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FA9D58), to(#EE4115), color-stop(0.5, #FF4D25), color-stop(0.5, #ED4D15)); + color: white; +} +.mblButton-mblRedButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); + color: white; +} +.mblButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); + color: white; +} +.mblButtonDisabled-styles () { + border-color: grey; + color: grey; + background-image: none; +} + +// CheckBox.less +.mblCheckBox-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 3px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); + font: inherit; + -webkit-transform: translateY(0.4em); +} +.mblCheckBoxSelected-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} +.mblCheckBoxChecked-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); +} +.mblCheckBoxChecked-after-styles () { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.3em; + border-color: #0851AD; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked-mblCheckBoxSelected-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} +.mblCheckBoxChecked-mblCheckBoxSelected-after-styles () { + border-color: white; +} + +// ComboBox.less +.dijitPopup-styles () { + -webkit-box-shadow: none; + -webkit-border-radius: 12px; +} +.mblComboBoxMenu-styles () { + border: 1px solid black; + -webkit-border-radius: 12px; + background-color: black; +} +.mblComboBoxMenuItemSelected-styles () { + color: white; + background-color: black; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} +.mblComboBoxMenuItem-styles () { + padding: .1em .2em; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: black; + color: white; + text-align: left; +} +.mblComboBoxMenuPreviousButton-styles () { + font-style: italic; + overflow: hidden; +} + +// IconContainer.less +.mblIconContainer-styles () { + margin: 0px; + padding: 0px; +} + +// IconItem.less +.mblIconItemTerminator-styles () { + height: 0px; +} +.mblIconItemSub-styles () { + background-color: white; + color: black; +} +.mblIconArea-styles () { + margin-bottom: 5px; + height: 78px; + width: 88px; + text-align: center; + font-family: Helvetica; + font-size: 12px; +} +.mblContent-styles () { + padding-bottom: 20px; +} +.mblIconContentHeading-styles () { + margin-top: 0px; + padding-left: 40px; + height: 25px; + border-top: 1px solid #F1F3F4; + border-bottom: 1px solid #717D85; + background-image: -webkit-gradient(linear, left top, left bottom, from(#E0E4E7), to(#B4BEC6), color-stop(0.5, #C4CCD2), color-stop(0.5, #BFC8CE)); + font-family: Helvetica; + font-size: 16px; + color: white; + line-height: 26px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} + +// RadioButton.less +.mblRadioButton-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 0.5em; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); + font: inherit; + -webkit-transform: translateY(0.4em); +} +.mblRadioButtonChecked-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); +} +.mblRadioButtonChecked-after-styles () { + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + border-color: #0851AD; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked-Selected-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); +} +.mblRadioButtonChecked-Selected-after-styles () { + border-color: white; +} + +// Slider.less +.mblSlider-styles () { + margin: 15px; /* 1/2 handle width for hanging off the ends of the bar */ + border: #B0B0B0 1px inset; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7F3F7), to(#CEC5D6), color-stop(0.5, #CED3CE)); + -webkit-border-radius: 6px; +} +.mblSliderProgressBar-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); + -webkit-border-radius: 6px; +} +.mblSliderHandle-styles () { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: #9D9D9D 1px outset; + -webkit-border-radius: 6px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FAFAFA), to(#999999), color-stop(0.5, #BBBBBB)); +} + +// TabBar.less +.mblTabBar-styles () { + margin: 0px; + padding: 0px; + height: 48px; + border-top: 1px solid #000000; + background-color: #212421; + background-image: -webkit-gradient(linear, left top, left bottom, from(#181818), to(#100C10)); + color: white; + text-align: center; +} +.mblTabBar-TabBarButton-styles () { +} +.mblTabBar-TabBarButton-Selected-styles () { + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424), color-stop(0.5, #353535)); + -webkit-border-radius: 3px; +} +.mblTabBarButtonDiv-styles () { + height: 34px; + width: 29px; +} +.mblTabBarButtonIcon-styles () { + left: 0; + top: 0; +} +.mblTabBarButtonTextBox-styles () { + color: #979797; + font-family: "Helvetica Neue", Helvetica; + font-size: 11px; +} +.mblTabBarNoIcons-TabBarButtonTextBox-styles () { + line-height: 34px; + font-size: 20px; +} +.mblTabButton-styles () { + width: 78px; + height: 61px; + border-width: 1px 1px 0px 1px; + border-style: solid; + border-color: #7B7D84 #182018 black #393C39; + background-color: #212421; + background-image: -webkit-gradient(linear, left top, left bottom, from(#181818), to(#100C10), color-stop(0.1, #313031)); + font-family: Helvetica; + font-size: 13px; + color: #979797; + text-align: center; +} +.mblTabButton-TabBarButtonAnchor-styles () { +} +.mblTabBarTop-TabButton-TabBarButtonDiv-styles () { + height: 40px; +} +.mblTabBarHead-TabButton-TabBarButtonDiv-styles () { +} +.mblTabButton-FirstTabButtom-styles () { +} +.mblTabButton-LastTabButton-styles () { +} +.mblTabButton-img-styles () { + position: absolute; + left: 0px; + margin-top: 8px; +} +.mblTabBarButtonTextBoxSelected-styles () { + color: white; +} +.mblTabButtonSelected-styles () { +} +.mblTabButtonHighlighted-styles () { +} +.mblTabButtonImgDiv-styles () { + position: relative; + margin-left: 24px; + height: 40px; +} +.mblTabPanelHeader-styles () { + margin: 0px; + padding: 0px 0px 0px 0px; + height: 64px; + border-top: 1px solid #CDD5DF; + border-bottom: 2px solid #949694; + background-color: #000000; + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; +} +.mblTabPanelHeader-TabButton-styles () { + margin-top: 3px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; +} +.mblTabPanelHeader-TabButtonSelected-styles () { + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424), color-stop(0.5, #353535)); + color: white; +} +.mblTabPanelHeader-TabButtonDomButton-styles () { + width: 43px; +} +.mblTabPanelHeader-TabButtonDomButtonClass-styles () { + left: 8px; +} +.mblTabPanelHeader-DomButton-styles () { +} +.mblTabPanelHeader-inHeading-styles () { + height: 38px; +} +.mblTabPanelHeader-TabButton-inHeading-styles () { + margin: 5px 0; + height: 28px; + border-width: 0px 1px 0px 0px; + border-style: solid; + border-color: #39454A; + -webkit-border-top-left-radius: 0; + -webkit-border-top-right-radius: 0; + background-color: #CED3CE; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f7fbf7), to(#cecfd6), color-stop(0.5, #ced3ce)); + font-size: 14px; + font-weight: bold; + line-height: 30px; + color: black; +} +.mblTabPanelHeader-TabButton-FirstTabButtom-inHeading-styles () { + -webkit-border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; +} +.mblTabPanelHeader-TabButton-LastTabButtom-inHeading-styles () { + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-right: none; +} +.mblTabPanelHeader-TabButtonSelected-inHeading-styles () { + background-color: #0869C6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#088eef), to(#0851ad), color-stop(0.5, #0869c6)); + color: white; +} + +// TextArea.less +.mblTextArea-styles () { + padding: 4px 1px; + border-color: #9CACC0; + border-width: 1px; + border-style: inset; + -webkit-border-radius: 6px; + font-family: Helvetica; + font-size: 13px; +} +.mblExpandingTextArea-styles () { + margin: 2px; +} + +// TextBox.less +.mblTextBox-styles () { + height: 22px; + border: #9CACC0 1px inset; + -webkit-border-radius: 6px; + font-family: Helvetica; + font-size: 13px; +} + +// ToggleButton.less +.mblToggleButton-styles () { + padding: 0px 10px 0px 25px; + height: 29px; + border-width: 1px 1px 1px 1px; + border-style: outset; + border-color: #9CACC0; + -webkit-border-radius: 6px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); + font-family: Helvetica; + font-size: 16px; + color: black; + line-height: 29px; +} +.mblToggleButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); + color: white; +} +.mblToggleButtonChecked-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#F7FBF7), to(#CECFD6), color-stop(0.5, #CED3CE)); + color: black; +} +.mblToggleButtonChecked-after-styles () { + content: ""; + top: 6px; + left: 7px; + width: 5px; + height: 10px; + border-color: #0851AD; + border-width: 2px; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButtonCheckedSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#088EEF), to(#0851AD), color-stop(0.5, #0869C6)); + color: white; +} +.mblToggleButtonCheckedSelected-after-styles () { + border-color: white; +} +.mblToggleButtonDisabled-styles () { + border-color: grey; + background-image: none; + color: grey; +} + +// Overlay.less +.mblOverlay-styles () { + background-color: #000000; + background-image: none; +} + +// Tooltip.less +.mblTooltip-styles () { + padding: 5px; + border: #ADAAAD 1px solid; + background-color: #424142; + background-image: -webkit-gradient(linear, left top, left bottom, from(#4A4D52), to(#292C31)); + -webkit-border-radius: 6px; + opacity: .97; +} +.mblTooltipBubble-styles () { + background-color: #000000; + background-image: none; + color: #ffffff; +} +.mblTooltipInnerArrow-Bubble-Above-styles () { + border-bottom-color: #000000; +} +.mblTooltipInnerArrow-Bubble-Below-styles () { + border-top-color: #000000; +} +.mblTooltipInnerArrow-Bubble-After-styles () { + border-left-color: #000000; +} +.mblTooltipInnerArrow-Bubble-Before-styles () { + border-right-color: #000000; +} +.mblTooltipArrow-styles () { + border: 11px solid transparent; +} +.mblTooltipArrow-Before-styles () { + border-left-width: 0; + border-right-color: #ADAAAD; +} +.mblTooltipArrow-After-styles () { + border-right-width: 0; + border-left-color: #ADAAAD; +} +.mblTooltipArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: #ADAAAD; +} +.mblTooltipArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: #ADAAAD; +} +.mblTooltipInnerArrow-Before-styles () { + border-left-width: 0; + border-right-color: #4A4D52; +} +.mblTooltipInnerArrow-After-styles () { + border-right-width: 0; + border-left-color: #4A4D52; +} +.mblTooltipInnerArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: #4A4D52; +} +.mblTooltipInnerArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: #292C31; +} +.mblTooltip-Heading-styles () { + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + background-color: transparent; + background-image: none; +} +.mblTooltip-Heading-ToolbarButton-styles () { +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Button.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Button.less new file mode 100644 index 0000000..d84460f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Button.less @@ -0,0 +1,29 @@ +/* dojox.mobile.Button */ +.mblButton { + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblButton-styles; + &.mblBlueButton { + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblButton-mblBlueButton-styles; + } + &.mblBlueButtonSelected { + .mblButton-mblBlueButtonSelected-styles; + } + &.mblRedButton { + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblButton-mblRedButton-styles; + } + &.mblRedButtonSelected { + .mblButton-mblRedButtonSelected-styles; + } +} +.mblButtonSelected { + .mblButtonSelected-styles; +} +.mblButtonDisabled, +.mblButton:disabled { + cursor: default; + .mblButtonDisabled-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Carousel.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Carousel.less new file mode 100644 index 0000000..dd16627 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Carousel.less @@ -0,0 +1,58 @@ +/* dojox.mobile.Carousel */ +.mblCarousel { + overflow: hidden; +} +.mblCarouselBox { + position: relative; + float: left; +} +.mblCarouselImg { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); + vertical-align: bottom; +} +.mblCarouselImgSelected { + border: 1px dashed #C0C0C0; + -webkit-box-shadow: none; +} +.mblCarouselImgHeaderText { + color: white; + font: 14px arial,helvetica,clean,sans-serif; +} +.mblCarouselImgFooterText { + color: white; + font: 14px arial,helvetica,clean,sans-serif; +} +.mblCarouselHeaderBar { + background-color: #3A3A3B; + color: #B1B1B1; + font: bold 16px arial,helvetica,clean,sans-serif; + padding: 1px; +} +.mblCarouselBtnContainer { + float: right; +} +.mblCarouselBtn { + height: 18px; + width: 46px; + font: bold 14px arial,helvetica,clean,sans-serif; + color: gray; + padding-top: 0px; + margin: 0px 2px; + border-width: 1px; /* workaround for android problem */ +} +.mblCarouselTitle { + margin: 2px 0px 2px 4px; +} +.mblCarouselHeaderBar .mblPageIndicator { + float: right; + width: auto; + padding: 0px 20px; +} +.mblCarouselHeaderBar .mblPageIndicatorContainer { + margin-left: 0px; + margin-right: 0px; +} +.mblCarouselPages { + position: relative; + text-align: center; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/CheckBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/CheckBox.less new file mode 100644 index 0000000..49e56f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/CheckBox.less @@ -0,0 +1,25 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblCheckBox-styles; +} +.mblCheckBoxSelected { + .mblCheckBoxSelected-styles; +} +.mblCheckBoxChecked, +.mblCheckBox:checked { + .mblCheckBoxChecked-styles; + &::after { + .mblCheckBoxChecked-after-styles; + } + &.mblCheckBoxSelected { + .mblCheckBoxChecked-mblCheckBoxSelected-styles; + &::after { + .mblCheckBoxChecked-mblCheckBoxSelected-after-styles; + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ComboBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ComboBox.less new file mode 100644 index 0000000..4358887 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ComboBox.less @@ -0,0 +1,40 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + // Popup items have a wrapper div (dijitPopup) + // with the real popup inside, and maybe an iframe too + margin: 0; + padding: 0; + position: absolute; + border: 0; + background-color: transparent; + .dijitPopup-styles; +} +.mblReset { + margin: 0; + padding: 0; + border: 0; + line-height: normal; + font: inherit; + color: inherit; +} +.mblComboBoxMenu { + overflow-y: hidden !important; + position: relative; + overflow: hidden; + .mblComboBoxMenu-styles; +} +.mblComboBoxMenuItem { + white-space: nowrap; + .mblComboBoxMenuItem-styles; +} +.mblComboBoxMenuItemSelected { + // dijitMenuItemHover refers to actual mouse over + // dijitMenuItemSelected is used after a menu has been "activated" by + // clicking it, tabbing into it, or being opened from a parent menu, + // and denotes that the menu item has focus or that focus is on a child menu + .mblComboBoxMenuItemSelected-styles; +} +.mblComboBoxMenuPreviousButton, +.mblComboBoxMenuNextButton { + .mblComboBoxMenuPreviousButton-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/EdgeToEdgeCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/EdgeToEdgeCategory.less new file mode 100644 index 0000000..13d78e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/EdgeToEdgeCategory.less @@ -0,0 +1,8 @@ +/* dojox.mobile.EdgeToEdgeCategory */ +.mblEdgeToEdgeCategory { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + .mblEdgeToEdgeCategory-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/EdgeToEdgeList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/EdgeToEdgeList.less new file mode 100644 index 0000000..9fbed0e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/EdgeToEdgeList.less @@ -0,0 +1,8 @@ +/* dojox.mobile.EdgeToEdgeList */ +.mblEdgeToEdgeList { + position: relative; /* IE needs this */ + .mblEdgeToEdgeList-styles; + .mblListItem:last-child { + .mblEdgeToEdgeList-LastListItem-styles; + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/FixedSplitter.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/FixedSplitter.css new file mode 100644 index 0000000..6788969 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/FixedSplitter.css @@ -0,0 +1,22 @@ +.mblFixedSpliter { + width: 100%; + height: 100%; +} + +.mblFixedSplitterPane { + position: absolute; + overflow-x: hidden; + overflow-y: auto; +} + +.mblFixedSplitterPaneH { + position: absolute; + height: 100%; + top: 0px; +} + +.mblFixedSplitterPaneV { + position: absolute; + width: 100%; + left: 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Heading.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Heading.less new file mode 100644 index 0000000..38083f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Heading.less @@ -0,0 +1,58 @@ +/* dojox.mobile.Heading */ +.mblHeading { + position: relative; + margin: 0px; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + z-index: 1; + .mblHeading-styles; +} +.mblHeading * { + z-index: 2; +} +.mblHeadingDivTitle { + position: absolute; + width: 100%; + display: none; + left: 0px; + z-index: 1; +} +.mblHeadingCenterTitle .mblHeadingDivTitle { + display: block; +} +.mblHeadingCenterTitle .mblHeadingSpanTitle { + display: none; +} + +/* Heading Arrow Button */ +.mblArrowButton { + position: relative; + float: left; + .mblArrowButton-styles; +} +.mblArrowButtonHead { + position: absolute; + .mblArrowButtonHead-styles; +} +.dj_chrome .mblArrowButtonHead { + .mblArrowButtonHeadChrome-styles; +} +.mblArrowButtonBody { + position: absolute; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblArrowButtonBody-styles; +} +.mblArrowButtonSelected { + .mblArrowButtonHead, .mblArrowButtonBody { + .mblArrowButtonSelected-styles; + } + .mblArrowButtonHead { + .mblArrowButtonHeadSelected-styles; + } + .mblArrowButtonBody { + .mblArrowButtonBodySelected-styles; + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/IconContainer.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/IconContainer.less new file mode 100644 index 0000000..0f47a0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/IconContainer.less @@ -0,0 +1,79 @@ +/* dojox.mobile.IconContainer */ +.mblIconContainer { + .mblIconContainer-styles; +} + +/* dojox.mobile.IconItem */ +.mblIconItem { + list-style-type: none; + float: left; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblIconItemTerminator { + list-style-type: none; + clear: both; + .mblIconItemTerminator-styles; +} +.mblIconItemSub { + list-style-type: none; + .mblIconItemSub-styles; +} +.mblIconArea { + .mblIconArea-styles; + div { + position: relative; + height: 65px; + line-height: 65px; + text-align: center; + } + img { + vertical-align: middle; + } +} +.mblIconItemSpriteIcon { + position: absolute; +} +.mblContent { + clear: both; + .mblContent-styles; +} +table.mblClose { + clear: both; + cursor: pointer; +} +.mblVibrate{ + position: relative; + -webkit-animation-duration: .5s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-iteration-count: 20; + -webkit-animation-name: mblVibrate; + -webkit-transform: rotate(0deg); +} +.mblCloseContent{ + -webkit-animation-duration: .3s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-name: mblShrink; + -webkit-transform: scale(0.01); + &.mblShrink0{ + -webkit-animation-name: mblShrink0; + } + &.mblShrink1{ + -webkit-animation-name: mblShrink1; + } + &.mblShrink2{ + -webkit-animation-name: mblShrink2; + } + &.mblShrink3{ + -webkit-animation-name: mblShrink3; + } +} + +/* Icon Content Heading */ +.mblIconContentHeading { + position: relative; + clear: both; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + .mblIconContentHeading-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/IconContainer_keyframes.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/IconContainer_keyframes.css new file mode 100644 index 0000000..b96c6a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/IconContainer_keyframes.css @@ -0,0 +1,48 @@ +/* Icon Container */ +@-webkit-keyframes mblVibrate{ + 0%{ + -webkit-transform: rotate(-2deg); + bottom: -1px; + left: -1px; + } + 25% { + -webkit-transform: rotate(1deg); + bottom: 2px; + left: 1px; + } + 50% { + -webkit-transform: rotate(-1deg); + bottom: -2px; + left: -1px; + } + 75% { + -webkit-transform: rotate(2deg); + bottom: 2px; + left: 1px; + } + 100% { + -webkit-transform: rotate(-2deg); + bottom: -1px; + left: -1px; + } +} +@-webkit-keyframes mblShrink{ + from { -webkit-transform: scale(1); } + to { -webkit-transform: scale(0.01); } +} +@-webkit-keyframes mblShrink0{ + from { -webkit-transform: scale(1); } + to { -webkit-transform: translate(-40%,-70%) scale(0.01); } +} +@-webkit-keyframes mblShrink1{ + from { -webkit-transform: scale(1); } + to { -webkit-transform: translate(-14%,-70%) scale(0.01); } +} +@-webkit-keyframes mblShrink2{ + from { -webkit-transform: scale(1); } + to { -webkit-transform: translate(14%,-70%) scale(0.01); } +} +@-webkit-keyframes mblShrink3{ + from { -webkit-transform: scale(1); } + to { -webkit-transform: translate(40%,-70%) scale(0.01); } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ListItem.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ListItem.less new file mode 100644 index 0000000..2b49a2a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ListItem.less @@ -0,0 +1,78 @@ +/* dojox.mobile.ListItem */ +.mblListItem { + position: relative; + list-style-type: none; + vertical-align: bottom; /* To avoid IE6 LI bug */ + .mblListItem-styles; + &.mblVariableHeight { + height: auto; + .mblListItem-mblVariableHeight-styles; + } + .mblListItemAnchor { + display: block; + height: 100%; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblListItem-mblListItemAnchor-styles; + * { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0.2); + } + } +} +.mblItemSelected { + .mblItemSelected-styles; + .mblListItemSubText { + .mblItemSelected-mblListItemSubText-styles; + } + .mblListItemAnchor { + .mblItemSelected-mblListItemAnchor-styles; + } + .mblDomButton { + div { + .mblItemSelected-mblDomButton-Div-styles; + } + } +} +.mblListItemTextBoxSelected { + .mblListItemTextBoxSelected-styles; +} +.mblListItemChecked { + .mblListItemChecked-styles; +} +.mblListItemIcon { + float: left; + line-height: normal; + .mblListItemIcon-styles; +} +.mblListItemSpriteIcon { + position: absolute; + .mblListItemSpriteIcon-styles; + +} +.mblListItemRightIcon, +.mblListItemRightIcon2 { + position: relative; + float: right; + line-height: normal; + .mblListItemRightIcon-styles; +} +.mblListItemRightText { + position: relative; + float: right; + line-height: normal; + .mblListItemRightText-styles; +} +.mblListItemTextBox { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + .mblListItemTextBox-styles; +} +.mblVariableHeight .mblListItemTextBox { + white-space: normal; +} +.mblListItemAnchorNoIcon .mblListItemTextBox { + .mblListItemAnchorNoIcon-mblListItemTextBox-styles; +} +.mblListItemSubText { + .mblListItemSubText-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Overlay.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Overlay.less new file mode 100644 index 0000000..076928c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Overlay.less @@ -0,0 +1,15 @@ +/* dojox.mobile.Overlay */ +.mblOverlay { + position: fixed; + z-index: 2000; + left: 0; + bottom: 0; + margin: 0; + width: 100%; + text-align: -webkit-center; + .mblOverlay-styles; +} +.mblOverlayHidden *, +.mblOverlayHidden { + visibility: hidden !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/PageIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/PageIndicator.less new file mode 100644 index 0000000..6678f9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/PageIndicator.less @@ -0,0 +1,24 @@ +/* dojox.mobile.PageIndicator */ +.mblPageIndicator { + position: relative; + width: 100%; + height: 20px; + -webkit-tap-highlight-color: rgba(255,255,255,0); +} +.mblPageIndicatorContainer { + margin-top: 4px; + margin-left: auto; + margin-right: auto; +} +.mblPageIndicatorDot { + margin: 0px 3px; + width: 6px; + height: 6px; + font-size: 1px; + background-color: #949294; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +.mblPageIndicatorDotSelected { + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ProgressIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ProgressIndicator.less new file mode 100644 index 0000000..8d8b9ab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ProgressIndicator.less @@ -0,0 +1,58 @@ +/* Progress Indicator */ +.mblProgContainer { + position: absolute; + width: 40px; + height: 40px; + top: 180px; + left: 50%; + margin: -18px 0px 0px -18px; +} +.mblProg { + position: absolute; + left: 2px; + top: 0px; + width: 11px; + font-size: 1px; + height: 4px; + overflow: hidden; + -webkit-transform-origin: 0 2px; + background-color: #C0C0C0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} +.mblProg0 { + -webkit-transform: translate(18px,10px) rotate(-90.1deg); +} +.mblProg1 { + -webkit-transform: translate(22px,11px) rotate(-60deg); +} +.mblProg2 { + -webkit-transform: translate(25px,14px) rotate(-30deg); +} +.mblProg3 { + -webkit-transform: translate(26px,18px) rotate(0deg); +} +.mblProg4 { + -webkit-transform: translate(25px,22px) rotate(30deg); +} +.mblProg5 { + -webkit-transform: translate(22px,25px) rotate(60deg); +} +.mblProg6 { + -webkit-transform: translate(18px,26px) rotate(90.1deg); +} +.mblProg7 { + -webkit-transform: translate(14px,25px) rotate(120deg); +} +.mblProg8 { + -webkit-transform: translate(11px,22px) rotate(150deg); +} +.mblProg9 { + -webkit-transform: translate(10px,18px) rotate(180deg); +} +.mblProg10 { + -webkit-transform: translate(11px,14px) rotate(210deg); +} +.mblProg11 { + -webkit-transform: translate(14px,11px) rotate(240deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RadioButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RadioButton.less new file mode 100644 index 0000000..0874ac8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RadioButton.less @@ -0,0 +1,23 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblRadioButton-styles; +} +.mblRadioButtonChecked, +.mblRadioButton:checked { + .mblRadioButtonChecked-styles; + &::after { + position: absolute; + .mblRadioButtonChecked-after-styles; + } + &.mblRadioButtonSelected { + .mblRadioButtonChecked-Selected-styles; + &::after { + .mblRadioButtonChecked-Selected-after-styles; + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRect.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRect.less new file mode 100644 index 0000000..0cd6361 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRect.less @@ -0,0 +1,7 @@ +/* dojox.mobile.RoundRect */ +.mblRoundRect { + .mblRoundRect-styles; + &.mblShadow { + .mblRoundRectShadowBox-styles; + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRectCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRectCategory.less new file mode 100644 index 0000000..cd4b311 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRectCategory.less @@ -0,0 +1,7 @@ +/* dojox.mobile.RoundRectCategory */ +.mblRoundRectCategory { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + .mblRoundRectCategory-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRectList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRectList.less new file mode 100644 index 0000000..b756d15 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/RoundRectList.less @@ -0,0 +1,17 @@ +/* dojox.mobile.RoundRectList */ +.mblRoundRectList { + position: relative; /* IE needs this */ + .mblRoundRectList-styles; + .mblListItem:first-child { + .mblRoundRectList-FirstListItem-styles; + } + .mblListItem:last-child { + .mblRoundRectList-LastListItem-styles; + } +} +.mblRoundRectCategory + .mblRoundRectList { + .mblRoundRectList-withCategory-styles; + .mblListItem:first-child { + .mblRoundRectList-withCategory-FirstListItem-styles; + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Slider.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Slider.less new file mode 100644 index 0000000..ec57a17 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Slider.less @@ -0,0 +1,47 @@ +/* dojox.mobile.Slider */ +.mblSlider { + outline: none; + -webkit-user-select: none; /* prevent selection */ + -webkit-box-sizing: content-box; /* make width and height consistent with a DIV */ + .mblSlider-styles; +} +.mblSliderH { + width: 200px; + height: 8px; + .mblSliderProgressBar { + height: 100%; + } + .mblSliderHandle { + top: 50%; + } +} +.mblSliderV { + height: 200px; + width: 8px; + .mblSliderProgressBar { + width: 100%; + } + .mblSliderHandle { + left: 50%; + } +} +.mblSliderProgressBar { + .mblSliderProgressBar-styles; +} +.mblSliderHandle { + .mblSliderHandle-styles; +} +.mblSliderTransition { + -webkit-transition-duration: 400ms; +} +.mblSliderTouchBox { + margin: 0; + padding: 12pt; + left: -12pt; + top: -12pt; + border: none; + width: 100%; + height: 100%; + background-color: transparent; + -webkit-tap-highlight-color: rgba(255,255,255,0); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/SpinWheel-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/SpinWheel-compat.css new file mode 100644 index 0000000..36865f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/SpinWheel-compat.css @@ -0,0 +1,36 @@ +.mblSpinWheel { + background-color: #D6D7DC; + background-image: -moz-linear-gradient(top, #313137 0%, #73747D 5%, #92939B 7%, #ABABB5 9%, #C5C6CE 12%, #DFE0E4 16%, #F4F5F6 22%, #FBFCFC 35%, #FBFCFC 50%, #FBFCFC 61%, #B4C1C7 61%, #FBFCFC 65%, #F4F5F6 78%, #DFE0E4 84%, #C5C6CE 88%, #ABABB5 91%, #92939B 93%, #73747D 95%, #313137 100%); + -moz-border-radius: 3px; +} +.dj_ie .mblSpinWheel { + background-image: url(compat/spinwheel-bg.png); +} + +.mblSpinWheelBar { + background-color: #C4CADC; + background-image: -moz-linear-gradient(top, #EDEEF2 0%, #C8CADD 25%, #BBBFD4 49%, #9FA8C6 51%, #A2A9C7 81%, #A6ABC9 82%, #A7ADCA 1%); + -khtml-opacity: 0.6; + -moz-opacity: 0.6; + opacity: 0.6; + filter: progid:DXImageTransform.Microsoft.alpha(opacity=60); +} +.dj_ie .mblSpinWheelBar { + background-image: url(compat/spinwheel-bar.png); +} +.dj_ie6 .mblSpinWheelBar, .dj_ie7 .mblSpinWheelBar { + z-index: -1; +} +*:first-child+html .mblSpinWheelSlotTouch { /* IE7 hack */ + background: white; + filter: alpha(opacity=0); + height: 200px; +} +*html .mblSpinWheelSlotTouch { /* IE6 hack */ + background: white; + filter: alpha(opacity=0); + height: 200px; +} +.mblSpinWheelSlotTouch, .mblSpinWheelSlotPanel { + left: 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/SpinWheel.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/SpinWheel.css new file mode 100644 index 0000000..e5eff56 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/SpinWheel.css @@ -0,0 +1,77 @@ +.mblSpinWheel { + position: relative; + overflow: hidden; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #313137), color-stop(0.05, #73747D), color-stop(0.07, #92939B), color-stop(0.09, #ABABB5), color-stop(0.12, #C5C6CE), color-stop(0.16, #DFE0E4), color-stop(0.22, #F4F5F6), color-stop(0.35, #FBFCFC), color-stop(0.5, #FBFCFC), color-stop(0.61, #FBFCFC), color-stop(0.61, #B4C1C7), color-stop(0.65, #FBFCFC), color-stop(0.78, #F4F5F6), color-stop(0.84, #DFE0E4), color-stop(0.88, #C5C6CE), color-stop(0.91, #ABABB5), color-stop(0.93, #92939B), color-stop(0.95, #73747D), color-stop(1, #313137)); + height: 200px; + border-left: solid 3px #000000; + border-right: solid 3px #000000; + color: #000000; + -webkit-border-radius: 3px; +} + +.mblSpinWheelBar { + position: absolute; + top: 79px; + background: -webkit-gradient(linear, left top, left bottom, from(#EDEEF2), to(#A7ADCA), color-stop(0, #EDEEF2), color-stop(0.25, #C8CADD), color-stop(0.49, #BBBFD4), color-stop(0.51, #9FA8C6), color-stop(0.81, #A2A9C7), color-stop(0.82, #A6ABC9), color-stop(1, #A7ADCA)); + border: solid 1px #7B8497; + height: 42px; + width: 100%; + clear: both; + -webkit-opacity: 0.6; +} + +.mblSpinWheelDatePicker { + width: 312px; +} + +.mblSpinWheelTimePicker { + width: 208px; +} + +.mblSpinWheelSlot { + position: relative; + top: 0px; + float: left; + width: 100px; + height: 100%; + border-left: solid 2px #000000; + border-right: solid 2px #000000; +} + +.mblSpinWheelSlotLabel { + padding: 0 8px; + height: 44px; + overflow: hidden; + font: bold 24px/44px Helvetica,sans-serif; +} + +.mblSpinWheelSlotLabel img{ + vertical-align: middle; + opacity: 0.7; +} + +.mblSpinWheelSlotLabelGray { + color: #CCCCCC; +} + +.mblSpinWheelSlotLabelBlue { + color: #0959D2; +} + +.mblSpinWheelSlotContainer { + position: relative; +} + +.mblSpinWheelSlotPanel { + position: absolute; + top: 0px; + width: 100%; +} + +.mblSpinWheelSlotTouch { + position: absolute; + top: 0px; + width: 100%; + height: 100%; + z-index: 1; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Switch.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Switch.css new file mode 100644 index 0000000..3aed56d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Switch.css @@ -0,0 +1,224 @@ +/* Switch - default */ +.mblSwitch { + margin: 0; + position: relative; + width: 94px; + height: 27px; + line-height: 29px; + overflow: hidden; + text-align: left; + -webkit-tap-highlight-color: rgba(255,255,255,0); +} +.mblItemSwitch { + position: absolute; + right: 12px; +} +.mblSwitchInner { + position: absolute; + top: 0px; + height: 27px; +} +.mblSwitchAnimation .mblSwitchInner { + -webkit-transition-property: left; + -webkit-transition-duration: .3s; +} +.mblSwitchOn .mblSwitchInner { + left: 0px; +} +.mblSwitchOff .mblSwitchInner { + left: -53px; +} +.mblSwitchBg { + position: absolute; + top: 0px; + height: 27px; + border-width: 1px; + border-style: inset; + border-color: #9CACC0; + font-family: Helvetica; + font-size: 16px; + font-weight: bold; + line-height: 29px; + -webkit-box-sizing: border-box; +} +.mblSwitchBgLeft { + left: 0px; + width: 94px; + color: white; + background-color: #3F84EB; +} +.mblSwitchBgRight { + left: 53px; + width: 94px; + color: #7F7F7F; +} +.mblSwitchKnob { + position: absolute; + top: 1px; + left: 53px; + width: 41px; + height: 26px; + font-size: 1px; + border-width: 1px; + border-style: solid; + border-color: #EFEFEF #A5A5A5 #969696 #325E9E; + -webkit-box-sizing: border-box; +} +.mblSwitchText { + position: relative; + top: 0px; + width: 53px; + height: 27px; + padding: 0px; + line-height: 28px; + text-align: center; +} +.mblSwitchTextLeft { + left: 0px; +} +.mblSwitchTextRight { + left: 40px; +} + +/* Round Shape1 */ +.mblSwRoundShape1 { + height: 28px; + -webkit-mask-image: -webkit-canvas(mblSwRoundShape1Mask); +} +.mblSwRoundShape1.mblItemSwitch { + top: 8px; +} +.mblSwRoundShape1 .mblSwitchInner { + height: 28px; +} +.mblSwRoundShape1.mblSwitchOff .mblSwitchInner { + left: -67px; +} +.mblSwRoundShape1 .mblSwitchBg { + height: 28px; + -webkit-border-radius: 14px; +} +.mblSwRoundShape1 .mblSwitchBgLeft { +} +.mblSwRoundShape1 .mblSwitchBgRight { + left: 67px; +} +.mblSwRoundShape1 .mblSwitchKnob { + left: 67px; + width: 26px; + height: 26px; + -webkit-border-radius: 13px; +} +.mblSwRoundShape1 .mblSwitchText { + width: 67px; + height: 26px; +} +.mblSwRoundShape1 .mblSwitchTextRight { + left: 26px; +} + +/* Round Shape2 */ +.mblSwRoundShape2 { + height: 28px; + -webkit-mask-image: -webkit-canvas(mblSwRoundShape2Mask); +} +.mblSwRoundShape2.mblItemSwitch { + top: 8px; +} +.mblSwRoundShape2 .mblSwitchInner { + height: 28px; +} +.mblSwRoundShape2.mblSwitchOff .mblSwitchInner { + left: -51px; +} +.mblSwRoundShape2 .mblSwitchBg { + height: 28px; + -webkit-border-radius: 14px; +} +.mblSwRoundShape2 .mblSwitchBgRight { + left: 51px; +} +.mblSwRoundShape2 .mblSwitchKnob { + left: 51px; + width: 42px; + height: 26px; + -webkit-border-radius: 13px; +} +.mblSwRoundShape2 .mblSwitchText { + width: 51px; + height: 28px; +} +.mblSwRoundShape2 .mblSwitchTextRight { + left: 42px; +} + +/* Arc Shape1 */ +.mblSwArcShape1 { + height: 28px; + -webkit-border-radius: 6px/14px; +} +.mblSwArcShape1.mblItemSwitch { + top: 8px; +} +.mblSwArcShape1 .mblSwitchInner { + height: 28px; +} +.mblSwArcShape1.mblSwitchOff .mblSwitchInner { + left: -67px; +} +.mblSwArcShape1 .mblSwitchBg { + height: 28px; + -webkit-border-radius: 6px/14px; +} +.mblSwArcShape1 .mblSwitchBgRight { + left: 67px; +} +.mblSwArcShape1 .mblSwitchKnob { + left: 67px; + width: 26px; + height: 26px; + -webkit-border-radius: 5px/13px; +} +.mblSwArcShape1 .mblSwitchText { + width: 67px; + height: 26px; +} +.mblSwArcShape1 .mblSwitchTextRight { + left: 26px; +} + +/* Arc Shape2 */ +.mblSwArcShape2 { + height: 28px; + -webkit-border-radius: 6px/14px; +} +.mblSwArcShape2.mblItemSwitch { + top: 8px; +} +.mblSwArcShape2 .mblSwitchInner { + height: 28px; +} +.mblSwArcShape2.mblSwitchOff .mblSwitchInner { + left: -51px; +} +.mblSwArcShape2 .mblSwitchBg { + height: 28px; + -webkit-border-radius: 6px/14px; +} +.mblSwArcShape2 .mblSwitchBgRight { + left: 51px; +} +.mblSwArcShape2 .mblSwitchKnob { + left: 51px; + width: 42px; + height: 26px; + -webkit-border-radius: 5px/13px; +} +.mblSwArcShape2 .mblSwitchText { + width: 51px; + height: 26px; +} +.mblSwArcShape2 .mblSwitchTextRight { + left: 42px; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Switch.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Switch.less new file mode 100644 index 0000000..e9868bc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Switch.less @@ -0,0 +1,16 @@ +/* dojox.mobile.Switch */ +.mblItemSwitch { + .mblItemSwitch-styles; +} +.mblSwitchBg { + .mblSwitchBg-styles; +} +.mblSwitchBgLeft { + .mblSwitchBgLeft-styles; +} +.mblSwitchBgRight { + .mblSwitchBgRight-styles; +} +.mblSwitchKnob { + .mblSwitchKnob-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TabBar.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TabBar.less new file mode 100644 index 0000000..a63497a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TabBar.less @@ -0,0 +1,147 @@ +/* dojox.mobile.TabBar */ +.mblTabBar { + position: relative; + overflow: hidden; + white-space: nowrap; + .mblTabBar-styles; +} +.mblTabBarNoIcons { + height: 34px; +} +.mblTabBarNoText { + height: 34px; +} + +/* dojox.mobile.TabBarButton */ +.mblTabBarButton { + cursor: pointer; + -webkit-tap-highlight-color: rgba(255,255,255,0); +} +.mblTabBar .mblTabBarButton { + position: relative; + list-style-type: none; + float: left; + .mblTabBar-TabBarButton-styles; + &.mblTabButtonSelected { + .mblTabBar-TabBarButton-Selected-styles; + } +} +.mblTabBarButtonAnchor { + display: block; + text-decoration: none; +} +.mblTabBarButtonDiv { + position: relative; + margin-left: auto; + margin-right: auto; + .mblTabBarButtonDiv-styles; +} +.mblTabBarButtonIcon { + position: absolute; + .mblTabBarButtonIcon-styles; +} +.mblTabBarButtonSpriteIcon { + position: absolute; +} +.mblTabBarButtonTextBox { + .mblTabBarButtonTextBox-styles; +} +.mblTabBarNoIcons { + .mblTabBarButtonDiv { + display: none; + } + .mblTabBarButtonTextBox { + .mblTabBarNoIcons-TabBarButtonTextBox-styles; + } +} +.mblTabBarTop { + .mblTabButton { + .mblTabBarButtonDiv { + .mblTabBarTop-TabButton-TabBarButtonDiv-styles; + } + } +} +.mblTabBarHead { + .mblTabButton { + .mblTabBarButtonDiv { + .mblTabBarHead-TabButton-TabBarButtonDiv-styles; + } + } +} +.mblTabButton { + position: relative; + float: left; + list-style-type: none; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblTabButton-styles; + .mblTabBarButtonAnchor, .mblTabBarButtonDiv { + .mblTabButton-TabBarButtonAnchor-styles; + } + &:first-child { + .mblTabButton-FirstTabButtom-styles; + } + &:last-child { + .mblTabButton-LastTabButton-styles; + } + img { + .mblTabButton-img-styles; + } +} +.mblTabButtonSelected { + .mblTabBarButtonTextBox { + .mblTabBarButtonTextBoxSelected-styles; + } + &.mblTabButton { + .mblTabButtonSelected-styles; + } +} +.mblTabButtonHighlighted { + &.mblTabButton { + .mblTabButtonHighlighted-styles; + } +} +.mblTabButtonImgDiv { + .mblTabButtonImgDiv-styles; +} + +.mblTabPanelHeader { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + .mblTabPanelHeader-styles; + .mblTabButton { + .mblTabPanelHeader-TabButton-styles; + &.mblTabButtonSelected { + .mblTabPanelHeader-TabButtonSelected-styles; + } + } + .mblTabButtonDomButton { + .mblTabPanelHeader-TabButtonDomButton-styles; + } + .mblTabButtonDomButtonClass { + .mblTabPanelHeader-TabButtonDomButtonClass-styles; + } + .mblDomButton { + .mblTabPanelHeader-DomButton-styles; + } +} + +.mblHeading { + .mblTabPanelHeader { + .mblTabPanelHeader-inHeading-styles; + .mblTabButton { + .mblTabPanelHeader-TabButton-inHeading-styles; + &:first-child { + .mblTabPanelHeader-TabButton-FirstTabButtom-inHeading-styles; + } + &:last-child { + .mblTabPanelHeader-TabButton-LastTabButtom-inHeading-styles; + } + } + .mblTabButtonSelected { + .mblTabPanelHeader-TabButtonSelected-inHeading-styles; + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TextArea.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TextArea.less new file mode 100644 index 0000000..57b80f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TextArea.less @@ -0,0 +1,9 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + .mblTextArea-styles; +} + +/* dojox.mobile.ExpandingTextArea */ +.mblExpandingTextArea { + .mblExpandingTextArea-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TextBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TextBox.less new file mode 100644 index 0000000..bee00c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/TextBox.less @@ -0,0 +1,4 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + .mblTextBox-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ToggleButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ToggleButton.less new file mode 100644 index 0000000..1796ab3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ToggleButton.less @@ -0,0 +1,28 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblToggleButton-styles; + &.mblToggleButtonSelected { + .mblToggleButtonSelected-styles; + } + &.mblToggleButtonChecked { + .mblToggleButtonChecked-styles; + &::after { + position: absolute; + .mblToggleButtonChecked-after-styles; + } + &.mblToggleButtonSelected { + .mblToggleButtonCheckedSelected-styles; + &::after { + .mblToggleButtonCheckedSelected-after-styles; + } + } + } + &:disabled { + cursor: default; + .mblToggleButtonDisabled-styles; + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ToolBarButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ToolBarButton.less new file mode 100644 index 0000000..3d8ee62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/ToolBarButton.less @@ -0,0 +1,22 @@ +/* dojox.mobile.ToolBarButton */ +.mblToolBarButton { + float: left; + position: relative; + overflow: hidden; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255,255,255,0); + .mblToolBarButton-styles; +} +div.mblToolBarButtonDomButton { + .mblToolBarButtonDomButton-styles; +} +.mblToolBarButtonIcon { + position: relative; + .mblToolBarButtonIcon-styles; +} +.mblToolBarButtonSpriteIcon { + position: absolute; +} +.mblToolBarButtonText { + padding: 0px 10px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Tooltip.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Tooltip.less new file mode 100644 index 0000000..9c66e7d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/Tooltip.less @@ -0,0 +1,131 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + position: absolute; + z-index: 2000; + display: block; + margin: 0; + .mblTooltip-styles; +} +.mblTooltipBubble { + overflow: visible; + padding: 3px; + .mblTooltipBubble-styles; +} +.mblTooltipBubble.mblTooltipAbove .mblTooltipInnerArrow { + .mblTooltipInnerArrow-Bubble-Above-styles; +} +.mblTooltipBubble.mblTooltipBelow .mblTooltipInnerArrow { + .mblTooltipInnerArrow-Bubble-Below-styles; +} +.mblTooltipBubble.mblTooltipAfter .mblTooltipInnerArrow { + .mblTooltipInnerArrow-Bubble-After-styles; +} +.mblTooltipBubble.mblTooltipBefore .mblTooltipInnerArrow { + .mblTooltipInnerArrow-Bubble-Before-styles; +} +.mblTooltip.mblTooltipAfter { + margin-left: -11px; +} +.mblTooltip.mblTooltipBefore { + margin-left: 11px; +} +.mblTooltip.mblTooltipAbove { + margin-top: 11px; +} +.mblTooltip.mblTooltipBelow { + margin-top: -11px; +} +.mblTooltipAnchor { + position: absolute; + width: 1px; + height: 1px; + background-color: transparent; + line-height: 0; + font-size: 0; +} +.mblTooltipBefore .mblTooltipAnchor { + left: -1px; +} +.mblTooltipAfter .mblTooltipAnchor { + right: -1px; +} +.mblTooltipAbove .mblTooltipAnchor { + top: -1px; +} +.mblTooltipBelow .mblTooltipAnchor { + bottom: -1px; +} +.mblTooltipArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + .mblTooltipArrow-styles; +} +.mblTooltipBefore .mblTooltipArrow { + left: auto; + right: 1px; + top: 0; + bottom: auto; + .mblTooltipArrow-Before-styles; +} +.mblTooltipAfter .mblTooltipArrow { + left: 1px; + right: auto; + top: 0; + bottom: auto; + .mblTooltipArrow-After-styles; +} +.mblTooltipAbove .mblTooltipArrow { + top: auto; + bottom: 1px; + left: auto; + right: auto; + .mblTooltipArrow-Above-styles; +} +.mblTooltipBelow .mblTooltipArrow { + top: 1px; + bottom: auto; + left: auto; + right: auto; + .mblTooltipArrow-Below-styles; +} +.mblTooltipInnerArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 10px solid transparent; +} +.mblTooltipBefore .mblTooltipInnerArrow { + right: 0; + top: 0; + .mblTooltipInnerArrow-Before-styles; +} +.mblTooltipAfter .mblTooltipInnerArrow { + left: 0; + top: 0; + .mblTooltipInnerArrow-After-styles; +} +.mblTooltipAbove .mblTooltipInnerArrow { + bottom: 0; + left: 0; + .mblTooltipInnerArrow-Above-styles; +} +.mblTooltipBelow .mblTooltipInnerArrow { + top: 0; + left: 0; + .mblTooltipInnerArrow-Below-styles; +} +.mblTooltipHidden, +.mblTooltipHidden * { + visibility: hidden !important; +} + +// Headings and Button styles are overridden in Tooltips +.mblTooltip .mblHeading { + .mblTooltip-Heading-styles; +} +.mblTooltip .mblHeading .mblToolBarButton { + .mblTooltip-Heading-ToolbarButton-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/View.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/View.less new file mode 100644 index 0000000..70c43ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/View.less @@ -0,0 +1,21 @@ +/* dojox.mobile.View */ +.mblView { + position: relative; + top: 0px; + left: 0px; + width: 100%; + .mblView-styles; + &.mblOut { + } + &.mblIn { + position: absolute; + } +} +.mblFixedHeaderBar { + z-index: 1; +} +.mblFixedBottomBar { + position: absolute !important; + width: 100%; + z-index: 1; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/common.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/common.less new file mode 100644 index 0000000..1c4ecf2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/common.less @@ -0,0 +1,24 @@ +html.mobile, .mobile body { + width: 100%; + margin: 0px; + padding: 0px; +} +.mobile body { + overflow-x: hidden; + -webkit-text-size-adjust: none; + .mobile-body-styles; +} + +/* Button Colors */ +.mblColorBlue { + .mblColorBlue-styles; +} + +/* Default Button Colors */ +.mblColorDefault { + .mblColorDefault-styles; +} + +.mblColorDefaultSel { + .mblColorDefaultSel-styles; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compat/spinwheel-bar.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compat/spinwheel-bar.png new file mode 100644 index 0000000..1aeee2d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compat/spinwheel-bar.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compat/spinwheel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compat/spinwheel-bg.png new file mode 100644 index 0000000..69c3768 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compat/spinwheel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compile.js b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compile.js new file mode 100644 index 0000000..159d06b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/compile.js @@ -0,0 +1,42 @@ +// load libraries +var fs = require("fs"); +var path = require("path"); +var less = require("less"); + +// collect files +var folders = ["../android", "../blackberry", "../iphone", "../custom"]; +var files = []; +folders.forEach(function(folder){ + files = files.concat(fs.readdirSync(folder).map(function(file){ + return folder + "/" + file; + })); +}); +files = files.filter(function(file){ + return file && /\.less$/.test(file) && !/variables\.less$/.test(file); +}); + +// compile files +files.forEach(function(file){ + console.log("compiling " + file); + fs.readFile(file, "utf-8", function(error, data){ + if(error){ + console.error(error.message); + process.exit(1); + } + var parser = new(less.Parser)({paths: [path.dirname(file)], filename: file, optimization: 1}); + parser.parse(data, function(error, tree){ + if(error){ + less.writeError(error); + process.exit(1); + } + try{ + var css = tree.toCSS({compress: false}); + var fd = fs.openSync(file.replace(".less", ".css"), "w"); + fs.writeSync(fd, css, 0, "utf-8"); + }catch(error){ + less.writeError(error); + process.exit(2); + } + }); + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/Calendar-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/Calendar-compat.css new file mode 100644 index 0000000..f180b2f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/Calendar-compat.css @@ -0,0 +1,9 @@ +.dijitCalendar thead { + background-image: url(compat/calendar-month-bg.png); +} +.dijitCalendarDayLabelTemplate { + background-image: url(compat/calendar-daylabel-bg.png); +} +.dijitCalendarYearLabel { + background-image: url(compat/calendar-year-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/Calendar.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/Calendar.css new file mode 100644 index 0000000..4e27ae1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/Calendar.css @@ -0,0 +1,135 @@ +/*if you link this stylesheet directory, mobile/common/dijit/base.css must already be imported*/ + +/* dijit base styles to override (based on claro) */ +@import url("../../../../../dijit/themes/claro/form/Common.css"); +@import url("../../../../../dijit/themes/claro/form/Button.css"); +@import url("../../../../../dijit/themes/claro/Calendar.css"); + +.dijitCalendar { + border: solid 1px #B5BCC7; + background-color: #CFE5FA; + width: 320px; + text-align: center; + padding: 0px 0px 0px 0px; + -moz-border-radius: 0px; + border-radius: 0px; +} +.dijitCalendar thead { + vertical-align: middle; + border-color: inherit; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F6F6F6), to(#CCCCD1)); +} +.dijitCalendarMonthLabel { + color: #545454; + font-size: 22px; + padding: 0 4px; + font-family: Helvetica; + text-shadow: rgba(247,247,247,0.6) 0px 1px 0px; +} + +.dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0 3px 0 2px; + border: none; + -webkit-box-shadow: 0 0 0 transparent; + -moz-box-shadow: 0 0 0 transparent; + box-shadow: 0 0 0 transparent; + -moz-border-radius: 0px; + border-radius: 0px; +} + +.dijitArrowButtonInner { + display: none; +} + +.dijitCalendarDayLabelTemplate { + text-align: center; + font-size: 9px; + color: #545454; + text-shadow: rgba(247,247,247,0.6) 0px 1px 0px; +} + +.dijitCalendarHoveredDate .dijitCalendarDateLabel { + background-color: #ABD6FF; + border: solid 1px #769DC0; + color: black; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} + +.dijitCalendarDateTemplate { + text-align: center; + background-color: #DDDDE0; + border-bottom: 1px solid lightGrey; + padding-top: 0; +/* color: #545454;*/ + color: #4A5B6E; + text-shadow: rgba(231,231,233,1.0) 0px 1px 0px; + font-size: 22px; + font-weight: normal; + font-family: Helvetica; + text-align: center; +} + +.dijitCalendarDateTemplate .dijitCalendarDateLabel { + text-decoration: none; + display: block; + padding: 3px 5px 3px 4px; + border-top: solid 1px #ECEEEF; + border-bottom: solid 1px #A6AAB3; + border-left: solid 1px #A0A4AD; + border-right: solid 1px #ECECED; + background-color: rgba(171, 212, 251, 0); + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; +} + +.dijitCalendarPreviousMonth .dijitCalendarDateLabel, +.dijitCalendarNextMonth .dijitCalendarDateLabel { + color: #9099A4; +} + +.dijitCalendarSelectedDate .dijitCalendarDateLabel { + background-color: #1A80E5; + border-top: solid 1px #1037B3; + border-bottom: solid 1px #1037B3; + border-left: solid 1px #1037B3; + border-right: solid 1px #1037B3; + color: white; + text-shadow: rgba(0,0,0,0.4) 0px 1px 0px; +} + +.dijitCalendarActiveDate .dijitCalendarDateLabel { + background-color: #1A80E5; + border: solid 1px white; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} + +.dijitCalendarYearLabel { + padding: 2px 0 0 0; + margin: 0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F6F6F6), to(#CCCCD1)); +} + +.dijitCalendarSelectedYear { + font-size: 1.091em; + color: #545454; + font-family: Helvetica; + text-shadow: rgba(247,247,247,0.6) 0px 1px 0px; +} + +.dijitCalendarNextYear, +.dijitCalendarPreviousYear { + padding: 1px 6px 1px 6px; + color: #545454; + text-shadow: rgba(247,247,247,0.6) 0px 1px 0px; + font-size: 0.909em; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/ColorPalette.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/ColorPalette.css new file mode 100644 index 0000000..6184c9c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/ColorPalette.css @@ -0,0 +1,18 @@ +/*if you link this stylesheet directory, mobile/common/dijit/base.css must already be imported*/ + +.dijitColorPalette { + border: 0 solid #B5BCC7; + outline: 0; + background: none; +} +.dijitColorPalette .dijitColorPaletteSwatch { + width: 25px; + height: 25px; + border-radius: 4px; + -moz-border-radius: 4px; +} +.dijitColorPalette .dijitPaletteImg { + border: 1px solid lightGrey; + border-radius: 4px; + -moz-border-radius: 4px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/ColorPicker.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/ColorPicker.css new file mode 100644 index 0000000..b3989b4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/ColorPicker.css @@ -0,0 +1,12 @@ +/*if you link this stylesheet directory, mobile/common/dijit/base.css must already be imported*/ + +/* import base dijit styles to override below */ +@import url("../../../../../dojox/widget/ColorPicker/ColorPicker.css"); + +.dojoxColorPicker { + padding: 8px; + -moz-border-radius: 4pt; + -webkit-border-radius: 5pt; + -webkit-drop-shadow: 3pt; + background: gray; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/base.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/base.css new file mode 100644 index 0000000..53c6ac8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/base.css @@ -0,0 +1,15 @@ +/* base dijit stylesheets with styles to override. + in future releases, split these out */ +@import url("../../../../../dijit/themes/dijit.css"); +@import url("../../../../../dijit/icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("../../../../../dijit/themes/claro/Common.css"); + +/* needed in IconContainerMulti tests + @import url("../../../../../dijit/themes/claro/ProgressBar.css"); +*/ +@import url("../../../../../dijit/themes/claro/claro_rtl.css"); + +/* mobile styling variants of dijit and dojox desktop widgets */ +@import url("Calendar.css"); +@import url("ColorPalette.css"); +@import url("ColorPicker.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-daylabel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-daylabel-bg.png new file mode 100644 index 0000000..9754278 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-daylabel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-month-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-month-bg.png new file mode 100644 index 0000000..f32e5e3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-month-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-year-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-year-bg.png new file mode 100644 index 0000000..6dcee1e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/compat/calendar-year-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/dijit-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/dijit-compat.css new file mode 100644 index 0000000..aea6c3c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/dijit-compat.css @@ -0,0 +1 @@ +@import url("Calendar-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/dijit.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/dijit.css new file mode 100644 index 0000000..5345028 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/dijit/dijit.css @@ -0,0 +1,4 @@ +@import url("base.css"); +@import url("Calendar.css"); +@import url("ColorPalette.css"); +@import url("ColorPicker.css"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons-compat.css new file mode 100644 index 0000000..751a376 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons-compat.css @@ -0,0 +1,38 @@ +/* DOM Buttons */ +@import url("domButtons/DomButtonWhitePlus-compat.css"); +@import url("domButtons/DomButtonWhiteUpArrow-compat.css"); +@import url("domButtons/DomButtonWhiteDownArrow-compat.css"); +@import url("domButtons/DomButtonWhiteSearch-compat.css"); +@import url("domButtons/DomButtonColorButtons-compat.css"); +@import url("domButtons/DomButtonCheckboxOn-compat.css"); +@import url("domButtons/DomButtonCheckboxOff-compat.css"); + +@import url("domButtons/DomButtonBlueCircleMinus-compat.css"); +@import url("domButtons/DomButtonBlueCirclePlus-compat.css"); +@import url("domButtons/DomButtonBlueCircleArrow-compat.css"); + +@import url("domButtons/DomButtonRedCircleMinus-compat.css"); +@import url("domButtons/DomButtonRedCirclePlus-compat.css"); +@import url("domButtons/DomButtonRedCircleArrow-compat.css"); + +@import url("domButtons/DomButtonGreenCircleMinus-compat.css"); +@import url("domButtons/DomButtonGreenCirclePlus-compat.css"); +@import url("domButtons/DomButtonGreenCircleArrow-compat.css"); +@import url("domButtons/DomButtonBlackCircleCross-compat.css"); + +@import url("domButtons/DomButtonGrayRoundRect-compat.css"); + +@import url("domButtons/DomButtonSilverCircleDownArrow-compat.css"); +@import url("domButtons/DomButtonSilverCircleGreenButton-compat.css"); +@import url("domButtons/DomButtonSilverCircleGrayButton-compat.css"); +@import url("domButtons/DomButtonSilverCircleOrangeButton-compat.css"); +@import url("domButtons/DomButtonSilverCircleGreenPlus-compat.css"); +@import url("domButtons/DomButtonSilverCircleRedCross-compat.css"); + +@import url("domButtons/DomButtonBlueBall-compat.css"); +@import url("domButtons/DomButtonGreenBall-compat.css"); +@import url("domButtons/DomButtonOrangeBall-compat.css"); +@import url("domButtons/DomButtonRedBall-compat.css"); + +@import url("domButtons/DomButtonYellowStar-compat.css"); +@import url("domButtons/DomButtonGrayStar-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons.css new file mode 100644 index 0000000..9a1bf58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons.css @@ -0,0 +1,42 @@ +/* DOM Buttons */ +@import url("domButtons/DomButtonWhitePlus.css"); +@import url("domButtons/DomButtonWhiteUpArrow.css"); +@import url("domButtons/DomButtonWhiteDownArrow.css"); +@import url("domButtons/DomButtonWhiteSearch.css"); +@import url("domButtons/DomButtonColorButtons.css"); +@import url("domButtons/DomButtonCheckboxOn.css"); +@import url("domButtons/DomButtonCheckboxOff.css"); + +@import url("domButtons/DomButtonBlueCircleMinus.css"); +@import url("domButtons/DomButtonBlueCirclePlus.css"); +@import url("domButtons/DomButtonBlueCircleArrow.css"); + +@import url("domButtons/DomButtonRedCircleMinus.css"); +@import url("domButtons/DomButtonRedCirclePlus.css"); +@import url("domButtons/DomButtonRedCircleArrow.css"); + +@import url("domButtons/DomButtonGreenCircleMinus.css"); +@import url("domButtons/DomButtonGreenCirclePlus.css"); +@import url("domButtons/DomButtonGreenCircleArrow.css"); +@import url("domButtons/DomButtonBlackCircleCross.css"); + +@import url("domButtons/DomButtonGrayRoundRect.css"); + +@import url("domButtons/DomButtonSilverCircleDownArrow.css"); +@import url("domButtons/DomButtonSilverCircleGreenButton.css"); +@import url("domButtons/DomButtonSilverCircleGrayButton.css"); +@import url("domButtons/DomButtonSilverCircleOrangeButton.css"); +@import url("domButtons/DomButtonSilverCircleGreenPlus.css"); +@import url("domButtons/DomButtonSilverCircleRedCross.css"); + +@import url("domButtons/DomButtonBlueBall.css"); +@import url("domButtons/DomButtonGreenBall.css"); +@import url("domButtons/DomButtonOrangeBall.css"); +@import url("domButtons/DomButtonRedBall.css"); + +@import url("domButtons/DomButtonTransparent19.css"); +@import url("domButtons/DomButtonTransparent29.css"); +@import url("domButtons/DomButtonTransparent30.css"); + +@import url("domButtons/DomButtonYellowStar.css"); +@import url("domButtons/DomButtonGrayStar.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlackCircleCross-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlackCircleCross-compat.css new file mode 100644 index 0000000..fa4f6ed --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlackCircleCross-compat.css @@ -0,0 +1,8 @@ +/* === Black Circle Cross Button ==*/ +.mblDomButtonBlackCircleCross { + background-image: url(compat/mblDomButtonBlackCircleCross.png); + background-repeat: no-repeat; +} +.mblDomButtonBlackCircleCross > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlackCircleCross.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlackCircleCross.css new file mode 100644 index 0000000..47bbab9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlackCircleCross.css @@ -0,0 +1,49 @@ +/* === Black Circle Cross Button ==*/ +.mblDomButtonBlackCircleCross { + position: relative; + width: 29px; + height: 29px; +} +.mblDomButtonBlackCircleCross > div { + position: relative; + top: 3px; + left: 3px; + width: 23px; + height: 23px; + background-color: white; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonBlackCircleCross > div > div { + position: relative; + top: 2px; + left: 2px; + width: 19px; + height: 19px; + background-color: black; + -webkit-border-radius: 10px; +} +.mblDomButtonBlackCircleCross > div > div > div { + position: absolute; + top: 8px; + left: 3px; + width: 13px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background-color: white; + -webkit-transform: rotate(45deg); + -webkit-border-radius: 1px; +} +.mblDomButtonBlackCircleCross > div > div > div > div { + position: absolute; + top: -5px; + left: 5px; + width: 3px; + height: 13px; + margin: 0px; + font-size: 1px; + background-color: white; + -webkit-border-radius: 1px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueBall-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueBall-compat.css new file mode 100644 index 0000000..9564a12 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueBall-compat.css @@ -0,0 +1,8 @@ +/* === Blue Ball Button ==*/ +.mblDomButtonBlueBall { + background-image: url(compat/mblDomButtonBlueBall.png); + background-repeat: no-repeat; +} +.mblDomButtonBlueBall > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueBall.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueBall.css new file mode 100644 index 0000000..79eaf75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueBall.css @@ -0,0 +1,15 @@ +/* === Blue Ball Button ==*/ +.mblDomButtonBlueBall { + position: relative; + width: 19px; + height: 29px; +} +.mblDomButtonBlueBall > div { + position: relative; + top: 8px; + left: 4px; + width: 14px; + height: 14px; + -webkit-border-radius: 7px; + background: -webkit-gradient(linear, left top, left bottom, from(#84AFF4), to(#2758B3)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleArrow-compat.css new file mode 100644 index 0000000..22397d7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleArrow-compat.css @@ -0,0 +1,9 @@ +/* === Blue Circle Arrow Buttons ==*/ +.mblDomButtonBlueCircleArrow { + background-image: url(compat/mblDomButtonBlueCircleArrow.png); + background-repeat: no-repeat; +} + +.mblDomButtonBlueCircleArrow > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleArrow.css new file mode 100644 index 0000000..2995fb1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleArrow.css @@ -0,0 +1,48 @@ +/* === Blue Circle Arrow Buttons ==*/ +.mblDomButtonBlueCircleArrow { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonBlueCircleArrow > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonBlueCircleArrow > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#6BA2E7), to(#216DD6), color-stop(0.5, #4282DE), color-stop(0.5, #216DD6)); +} +.mblDomButtonBlueCircleArrow > div > div > div { + position: absolute; + top: 5px; + left: 6px; + width: 8px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; + -webkit-transform: rotate(45deg); +} +.mblDomButtonBlueCircleArrow > div > div > div > div { + position: absolute; + top: 1px; + left: 6px; + width: 3px; + height: 8px; + margin: 0px; + font-size: 1px; + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleMinus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleMinus-compat.css new file mode 100644 index 0000000..592531d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleMinus-compat.css @@ -0,0 +1,9 @@ +/* === Blue Circle Minus Buttons ==*/ +.mblDomButtonBlueCircleMinus { + background-image: url(compat/mblDomButtonBlueCircleMinus.png); + background-repeat: no-repeat; +} + +.mblDomButtonBlueCircleMinus > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleMinus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleMinus.css new file mode 100644 index 0000000..24d24c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCircleMinus.css @@ -0,0 +1,37 @@ +/* === Blue Circle Minus Buttons ==*/ +.mblDomButtonBlueCircleMinus { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonBlueCircleMinus > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonBlueCircleMinus > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#6BA2E7), to(#216DD6), color-stop(0.5, #4282DE), color-stop(0.5, #216DD6)); +} +.mblDomButtonBlueCircleMinus > div > div > div { + position: absolute; + top: 8px; + left: 3px; + width: 12px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCirclePlus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCirclePlus-compat.css new file mode 100644 index 0000000..1e36e02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCirclePlus-compat.css @@ -0,0 +1,9 @@ +/* === Blue Circle Plus Buttons ==*/ +.mblDomButtonBlueCirclePlus { + background-image: url(compat/mblDomButtonBlueCirclePlus.png); + background-repeat: no-repeat; +} + +.mblDomButtonBlueCirclePlus > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCirclePlus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCirclePlus.css new file mode 100644 index 0000000..af1d6ad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonBlueCirclePlus.css @@ -0,0 +1,47 @@ +/* === Blue Circle Plus Buttons ==*/ +.mblDomButtonBlueCirclePlus { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonBlueCirclePlus > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonBlueCirclePlus > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#6BA2E7), to(#216DD6), color-stop(0.5, #4282DE), color-stop(0.5, #216DD6)); +} +.mblDomButtonBlueCirclePlus > div > div > div { + position: absolute; + top: 8px; + left: 3px; + width: 13px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; +} +.mblDomButtonBlueCirclePlus > div > div > div > div { + position: absolute; + top: -5px; + left: 5px; + width: 3px; + height: 13px; + margin: 0px; + font-size: 1px; + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOff-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOff-compat.css new file mode 100644 index 0000000..49c25bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOff-compat.css @@ -0,0 +1,8 @@ +/* === Check Button (OFF) ==*/ +.mblDomButtonCheckboxOff { + background-image: url(compat/mblDomButtonCheckboxOff.png); + background-repeat: no-repeat; +} +.mblDomButtonCheckboxOff div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOff.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOff.css new file mode 100644 index 0000000..66fdd9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOff.css @@ -0,0 +1,40 @@ +/* === Check Button (OFF) ==*/ +.mblDomButtonCheckboxOff { + position: relative; + width: 30px; + height: 30px; + border-width: 1px; + border-style: outset; + border-color: #A5A2A5; + color: white; + -webkit-border-radius: 3px; + background-color: #D6D3D6; + background: -webkit-gradient(linear, left top, left bottom, from(#EFF3EF), to(#BDBEBD)); +} +.mblDomButtonCheckboxOff > div { + position: absolute; + top: 15px; + left: 3px; + width: 14px; + height: 4px; + margin: 0px; + font-size: 1px; + background-color: #BDBABD; + border-bottom: 1px solid #8C8E8C; + -webkit-border-radius: 2px; + -webkit-transform: rotate(50deg); +} +.mblDomButtonCheckboxOff > div > div { + position: absolute; + top: -10px; + left: 0px; + width: 20px; + height: 4px; + margin: 0px; + font-size: 1px; + background-color: #BDBABD; + border-bottom: none; + border-top: 1px solid #8C8E8C; + -webkit-border-radius: 2px; + -webkit-transform: rotate(-100deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOn-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOn-compat.css new file mode 100644 index 0000000..933aece --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOn-compat.css @@ -0,0 +1,8 @@ +/* === Check Button (ON) ==*/ +.mblDomButtonCheckboxOn { + background-image: url(compat/mblDomButtonCheckboxOn.png); + background-repeat: no-repeat; +} +.mblDomButtonCheckboxOn div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOn.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOn.css new file mode 100644 index 0000000..7c25a9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonCheckboxOn.css @@ -0,0 +1,40 @@ +/* === Check Button (ON) ==*/ +.mblDomButtonCheckboxOn { + position: relative; + width: 30px; + height: 30px; + border-width: 1px; + border-style: outset; + border-color: #A5A2A5; + color: white; + -webkit-border-radius: 3px; + background-color: #D6D3D6; + background: -webkit-gradient(linear, left top, left bottom, from(#EFF3EF), to(#BDBEBD)); +} +.mblDomButtonCheckboxOn > div { + position: absolute; + top: 15px; + left: 3px; + width: 14px; + height: 4px; + margin: 0px; + font-size: 1px; + background-color: #00CF00; + border-top: 1px solid #4A5A71; + -webkit-border-radius: 2px; + -webkit-transform: rotate(50deg); +} +.mblDomButtonCheckboxOn > div > div { + position: absolute; + top: -10px; + left: 0px; + width: 20px; + height: 4px; + margin: 0px; + font-size: 1px; + background-color: #00CF00; + border-top: none; + border-bottom: 1px solid #4A5A71; + -webkit-border-radius: 2px; + -webkit-transform: rotate(-100deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonColorButtons-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonColorButtons-compat.css new file mode 100644 index 0000000..8c77494 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonColorButtons-compat.css @@ -0,0 +1,48 @@ +/* === Minus and Plus Buttons ==*/ +.mblDomButtonBlueMinus { + background-image: url(compat/mblDomButtonBlueMinus.png); + background-repeat: no-repeat; +} +.mblDomButtonBlueMinus div { + display: none; +} + +.mblDomButtonBluePlus { + background-image: url(compat/mblDomButtonBluePlus.png); + background-repeat: no-repeat; +} +.mblDomButtonBluePlus div { + display: none; +} + +.mblDomButtonDarkBlueMinus { + background-image: url(compat/mblDomButtonDarkBlueMinus.png); + background-repeat: no-repeat; +} +.mblDomButtonDarkBlueMinus div { + display: none; +} + +.mblDomButtonDarkBluePlus { + background-image: url(compat/mblDomButtonDarkBluePlus.png); + background-repeat: no-repeat; +} +.mblDomButtonDarkBluePlus div { + display: none; +} + +.mblDomButtonRedMinus { + background-image: url(compat/mblDomButtonRedMinus.png); + background-repeat: no-repeat; +} +.mblDomButtonRedMinus div { + display: none; +} + +.mblDomButtonRedPlus { + background-image: url(compat/mblDomButtonRedPlus.png); + background-repeat: no-repeat; +} +.mblDomButtonRedPlus div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonColorButtons.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonColorButtons.css new file mode 100644 index 0000000..8017cf2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonColorButtons.css @@ -0,0 +1,55 @@ +/* === Minus and Plus Buttons ==*/ +.mblDomButtonBlueMinus, .mblDomButtonBluePlus, .mblDomButtonDarkBlueMinus, .mblDomButtonDarkBluePlus, .mblDomButtonRedMinus, .mblDomButtonRedPlus { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonBlueMinus > div, .mblDomButtonBluePlus > div, .mblDomButtonDarkBlueMinus > div, .mblDomButtonDarkBluePlus > div, .mblDomButtonRedMinus > div, .mblDomButtonRedPlus > div { + position: relative; + top: 4px; + left: 3px; + width: 22px; + height: 18px; + border-width: 1px 1px 1px 0px; + border-style: outset; + color: white; + -webkit-border-radius: 3px; +} +.mblDomButtonBlueMinus > div, .mblDomButtonBluePlus > div { + border-color: #6D89C7; + background-color: #366EDF; + background: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); +} +.mblDomButtonDarkBlueMinus > div, .mblDomButtonDarkBluePlus > div { + border-color: #6D89C7; + background-color: #5877A2; + background: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} +.mblDomButtonRedMinus > div, .mblDomButtonRedPlus > div { + border-color: #cc1122; + background-color: #C9404B; + background: -webkit-gradient(linear, left top, left bottom, from(#D3656D), to(#BC1320), color-stop(0.5, #C9404B), color-stop(0.5, #BC1421)); +} +.mblDomButtonBlueMinus > div > div, .mblDomButtonBluePlus > div > div, .mblDomButtonDarkBlueMinus > div > div, .mblDomButtonDarkBluePlus > div > div, .mblDomButtonRedMinus > div > div, .mblDomButtonRedPlus > div > div { + position: absolute; + top: 7px; + left: 7px; + width: 8px; + height: 2px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; + border-top: 1px solid #4A5A71; +} +.mblDomButtonBluePlus > div > div > div, .mblDomButtonDarkBluePlus > div > div > div, .mblDomButtonRedPlus > div > div > div { + position: absolute; + top: -3px; + left: 3px; + width: 2px; + height: 8px; + margin: 0px; + font-size: 1px; + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonDarkBlueCheck-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonDarkBlueCheck-compat.css new file mode 100644 index 0000000..1071a54 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonDarkBlueCheck-compat.css @@ -0,0 +1,8 @@ +/* === Check Button ==*/ +.mblDomButtonDarkBlueCheck, .mblDomButtonCheck { + background-image: url(compat/mblDomButtonDarkBlueCheck.png); + background-repeat: no-repeat; +} +.mblDomButtonDarkBlueCheck div, .mblDomButtonCheck div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonDarkBlueCheck.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonDarkBlueCheck.css new file mode 100644 index 0000000..6edc2b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonDarkBlueCheck.css @@ -0,0 +1,18 @@ +/* === Check Button ==*/ +.mblDomButtonDarkBlueCheck, .mblDomButtonCheck { + position: relative; + width: 20px; + height: 29px; +} +.mblDomButtonDarkBlueCheck > div, .mblDomButtonCheck > div { + position: absolute; + left: 0px; + top: 8px; + width: 16px; + height: 6px; + font-size: 1px; + -webkit-transform: scaleX(0.7) rotate(135deg); + border-width: 3px 4px 0px 0px; + border-style: solid; + border-color: #314E84; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayArrow-compat.css new file mode 100644 index 0000000..bed275d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayArrow-compat.css @@ -0,0 +1,8 @@ +/* === Arrow Button ==*/ +.mblDomButtonGrayArrow, .mblDomButtonArrow { + background-image: url(compat/mblDomButtonGrayArrow.png); + background-repeat: no-repeat; +} +.mblDomButtonGrayArrow div, .mblDomButtonArrow div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayArrow.css new file mode 100644 index 0000000..bfad471 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayArrow.css @@ -0,0 +1,18 @@ +/* === Arrow ==*/ +.mblDomButtonGrayArrow, .mblDomButtonArrow { + position: relative; + width: 20px; + height: 29px; +} +.mblDomButtonGrayArrow > div, .mblDomButtonArrow > div { + position: absolute; + top: 10px; + left: 6px; + width: 6px; + height: 6px; + font-size: 1px; + -webkit-transform: rotate(45deg); + border-width: 3px 3px 0px 0px; + border-style: solid; + border-color: #808080; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayRoundRect-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayRoundRect-compat.css new file mode 100644 index 0000000..8ee029b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayRoundRect-compat.css @@ -0,0 +1,4 @@ +/* === Gray Round Rectangle Button ==*/ +.mblDomButtonGrayRoundRect > div { + -moz-border-radius: 4px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayRoundRect.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayRoundRect.css new file mode 100644 index 0000000..5ceb481 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayRoundRect.css @@ -0,0 +1,23 @@ +/* === Gray Round Rectangle Button ==*/ +.mblDomButtonGrayRoundRect { + position: relative; + width: 29px; + height: 29px; + text-align: right; +} +.mblDomButtonGrayRoundRect > div { + position: absolute; + right: 0px; + display: inline; + padding: 0px 5px; + top: 7px; + color: white; + font-family: Helvetica; + font-size: 12px; + -webkit-border-radius: 4px; + background-color: #949BA5; + text-align: center; +} +.mblDomButtonGrayRoundRect > div > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayStar-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayStar-compat.css new file mode 100644 index 0000000..d92ec87 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayStar-compat.css @@ -0,0 +1,8 @@ +/* === Gray Star ==*/ +.mblDomButtonGrayStar { + background-image: url(compat/mblDomButtonGrayStar.png); + background-repeat: no-repeat; +} +.mblDomButtonGrayStar > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayStar.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayStar.css new file mode 100644 index 0000000..605de2c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGrayStar.css @@ -0,0 +1,49 @@ +/* === Gray Star ==*/ +.mblDomButtonGrayStar { + position: relative; + width: 29px; + height: 29px; +} +.mblDomButtonGrayStar > div { + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-color: #BDBABD transparent transparent transparent; + top: 12px; + left: 3px; + border-width: 9px 12px 0px 12px; + -webkit-transform: rotate(0deg); +} +.mblDomButtonGrayStar > div > div { + position: absolute; + width: 24px; + height: 0px; + border-style: solid; + border-color: #8C8E8C; + border-width: 1px 0px 0px 0px; + top: -10px; + left: -12px; +} +.mblDomButtonGrayStar > div > div > div { + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-color: #BDBABD transparent transparent transparent; + top: 0px; + left: 0px; + border-width: 9px 12px 0px 12px; + -webkit-transform: rotate(72deg); +} +.mblDomButtonGrayStar > div > div > div > div { + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-color: #BDBABD transparent transparent transparent; + top: -10px; + left: -12px; + border-width: 9px 12px 0px 12px; + -webkit-transform: rotate(216deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenBall-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenBall-compat.css new file mode 100644 index 0000000..b9335bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenBall-compat.css @@ -0,0 +1,8 @@ +/* === Green Ball Button ==*/ +.mblDomButtonGreenBall { + background-image: url(compat/mblDomButtonGreenBall.png); + background-repeat: no-repeat; +} +.mblDomButtonGreenBall > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenBall.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenBall.css new file mode 100644 index 0000000..f7e928f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenBall.css @@ -0,0 +1,15 @@ +/* === Green Ball Button ==*/ +.mblDomButtonGreenBall { + position: relative; + width: 19px; + height: 29px; +} +.mblDomButtonGreenBall > div { + position: relative; + top: 8px; + left: 4px; + width: 14px; + height: 14px; + -webkit-border-radius: 7px; + background: -webkit-gradient(linear, left top, left bottom, from(#59E738), to(#0AA908)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleArrow-compat.css new file mode 100644 index 0000000..a62b1e5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleArrow-compat.css @@ -0,0 +1,9 @@ +/* === Green Circle Arrow Buttons ==*/ +.mblDomButtonGreenCircleArrow { + background-image: url(compat/mblDomButtonGreenCircleArrow.png); + background-repeat: no-repeat; +} + +.mblDomButtonGreenCircleArrow > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleArrow.css new file mode 100644 index 0000000..53e6523 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleArrow.css @@ -0,0 +1,48 @@ +/* === Green Circle Arrow Buttons ==*/ +.mblDomButtonGreenCircleArrow { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonGreenCircleArrow > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonGreenCircleArrow > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#7BE75A), to(#398C08), color-stop(0.5, #6BC642), color-stop(0.5, #4AAD21)); +} +.mblDomButtonGreenCircleArrow > div > div > div { + position: absolute; + top: 5px; + left: 6px; + width: 8px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; + -webkit-transform: rotate(45deg); +} +.mblDomButtonGreenCircleArrow > div > div > div > div { + position: absolute; + top: 1px; + left: 6px; + width: 3px; + height: 8px; + margin: 0px; + font-size: 1px; + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleMinus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleMinus-compat.css new file mode 100644 index 0000000..a6381c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleMinus-compat.css @@ -0,0 +1,9 @@ +/* === Green Circle Minus Buttons ==*/ +.mblDomButtonGreenCircleMinus { + background-image: url(compat/mblDomButtonGreenCircleMinus.png); + background-repeat: no-repeat; +} + +.mblDomButtonGreenCircleMinus > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleMinus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleMinus.css new file mode 100644 index 0000000..b406543 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCircleMinus.css @@ -0,0 +1,37 @@ +/* === Green Circle Minus Buttons ==*/ +.mblDomButtonGreenCircleMinus { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonGreenCircleMinus > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonGreenCircleMinus > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#7BE75A), to(#398C08), color-stop(0.5, #6BC642), color-stop(0.5, #4AAD21)); +} +.mblDomButtonGreenCircleMinus > div > div > div { + position: absolute; + top: 8px; + left: 3px; + width: 12px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCirclePlus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCirclePlus-compat.css new file mode 100755 index 0000000..053ccd9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCirclePlus-compat.css @@ -0,0 +1,9 @@ +/* === Green Circle Plus Buttons ==*/ +.mblDomButtonGreenCirclePlus { + background-image: url(compat/mblDomButtonGreenCirclePlus.png); + background-repeat: no-repeat; +} + +.mblDomButtonGreenCirclePlus > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCirclePlus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCirclePlus.css new file mode 100644 index 0000000..148dfa4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonGreenCirclePlus.css @@ -0,0 +1,47 @@ +/* === Green Circle Plus Buttons ==*/ +.mblDomButtonGreenCirclePlus { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonGreenCirclePlus > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonGreenCirclePlus > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#7BE75A), to(#398C08), color-stop(0.5, #6BC642), color-stop(0.5, #4AAD21)); +} +.mblDomButtonGreenCirclePlus > div > div > div { + position: absolute; + top: 8px; + left: 3px; + width: 13px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; +} +.mblDomButtonGreenCirclePlus > div > div > div > div { + position: absolute; + top: -5px; + left: 5px; + width: 3px; + height: 13px; + margin: 0px; + font-size: 1px; + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonOrangeBall-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonOrangeBall-compat.css new file mode 100644 index 0000000..5fc2c62 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonOrangeBall-compat.css @@ -0,0 +1,8 @@ +/* === Orange Ball Button ==*/ +.mblDomButtonOrangeBall { + background-image: url(compat/mblDomButtonOrangeBall.png); + background-repeat: no-repeat; +} +.mblDomButtonOrangeBall > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonOrangeBall.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonOrangeBall.css new file mode 100644 index 0000000..32b8659 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonOrangeBall.css @@ -0,0 +1,15 @@ +/* === Orange Ball Button ==*/ +.mblDomButtonOrangeBall { + position: relative; + width: 19px; + height: 29px; +} +.mblDomButtonOrangeBall > div { + position: relative; + top: 8px; + left: 4px; + width: 14px; + height: 14px; + -webkit-border-radius: 7px; + background: -webkit-gradient(linear, left top, left bottom, from(#F9E20A), to(#FF6B0A)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedBall-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedBall-compat.css new file mode 100644 index 0000000..bb25172 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedBall-compat.css @@ -0,0 +1,8 @@ +/* === Red Ball Button ==*/ +.mblDomButtonRedBall { + background-image: url(compat/mblDomButtonRedBall.png); + background-repeat: no-repeat; +} +.mblDomButtonRedBall > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedBall.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedBall.css new file mode 100644 index 0000000..11a48cd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedBall.css @@ -0,0 +1,15 @@ +/* === Red Ball Button ==*/ +.mblDomButtonRedBall { + position: relative; + width: 19px; + height: 29px; +} +.mblDomButtonRedBall > div { + position: relative; + top: 8px; + left: 4px; + width: 14px; + height: 14px; + -webkit-border-radius: 7px; + background: -webkit-gradient(linear, left top, left bottom, from(#EC9B9D), to(#D73C3F)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleArrow-compat.css new file mode 100644 index 0000000..b00c414 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleArrow-compat.css @@ -0,0 +1,9 @@ +/* === Red Circle Arrow Buttons ==*/ +.mblDomButtonRedCircleArrow { + background-image: url(compat/mblDomButtonRedCircleArrow.png); + background-repeat: no-repeat; +} + +.mblDomButtonRedCircleArrow > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleArrow.css new file mode 100644 index 0000000..c1506e7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleArrow.css @@ -0,0 +1,48 @@ +/* === Red Circle Arrow Buttons ==*/ +.mblDomButtonRedCircleArrow { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonRedCircleArrow > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonRedCircleArrow > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#D3656D), to(#BC1320), color-stop(0.5, #C9404B), color-stop(0.5, #BC1421)); +} +.mblDomButtonRedCircleArrow > div > div > div { + position: absolute; + top: 5px; + left: 6px; + width: 8px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; + -webkit-transform: rotate(45deg); +} +.mblDomButtonRedCircleArrow > div > div > div > div { + position: absolute; + top: 1px; + left: 6px; + width: 3px; + height: 8px; + margin: 0px; + font-size: 1px; + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleMinus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleMinus-compat.css new file mode 100644 index 0000000..c437120 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleMinus-compat.css @@ -0,0 +1,9 @@ +/* === Red Circle Minus Buttons ==*/ +.mblDomButtonRedCircleMinus { + background-image: url(compat/mblDomButtonRedCircleMinus.png); + background-repeat: no-repeat; +} + +.mblDomButtonRedCircleMinus > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleMinus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleMinus.css new file mode 100644 index 0000000..bd16b0c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCircleMinus.css @@ -0,0 +1,37 @@ +/* === Red Circle Minus Buttons ==*/ +.mblDomButtonRedCircleMinus { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonRedCircleMinus > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonRedCircleMinus > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#D3656D), to(#BC1320), color-stop(0.5, #C9404B), color-stop(0.5, #BC1421)); +} +.mblDomButtonRedCircleMinus > div > div > div { + position: absolute; + top: 8px; + left: 3px; + width: 12px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCirclePlus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCirclePlus-compat.css new file mode 100644 index 0000000..3f7a33c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCirclePlus-compat.css @@ -0,0 +1,9 @@ +/* === Red Circle Plus Buttons ==*/ +.mblDomButtonRedCirclePlus { + background-image: url(compat/mblDomButtonRedCirclePlus.png); + background-repeat: no-repeat; +} + +.mblDomButtonRedCirclePlus > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCirclePlus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCirclePlus.css new file mode 100644 index 0000000..a507bdd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonRedCirclePlus.css @@ -0,0 +1,47 @@ +/* === Red Circle Plus Buttons ==*/ +.mblDomButtonRedCirclePlus { + position: relative; + width: 29px; + height: 29px; +} + +.mblDomButtonRedCirclePlus > div { + position: relative; + top: 2px; + left: 2px; + width: 22px; + height: 22px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 12px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); +} +.mblDomButtonRedCirclePlus > div > div { + position: relative; + top: 2px; + left: 2px; + width: 18px; + height: 18px; + -webkit-border-radius: 9px; + background: -webkit-gradient(linear, left top, left bottom, from(#D3656D), to(#BC1320), color-stop(0.5, #C9404B), color-stop(0.5, #BC1421)); +} +.mblDomButtonRedCirclePlus > div > div > div { + position: absolute; + top: 8px; + left: 3px; + width: 13px; + height: 3px; + margin: 0px; + font-size: 1px; + border-style: none; + background: white; +} +.mblDomButtonRedCirclePlus > div > div > div > div { + position: absolute; + top: -5px; + left: 5px; + width: 3px; + height: 13px; + margin: 0px; + font-size: 1px; + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleDownArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleDownArrow-compat.css new file mode 100644 index 0000000..d9191e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleDownArrow-compat.css @@ -0,0 +1,8 @@ +/* === Silver Circle Down Arrow ==*/ +.mblDomButtonSilverCircleDownArrow { + background-image: url(compat/mblDomButtonSilverCircleDownArrow.png); + background-repeat: no-repeat; +} +.mblDomButtonSilverCircleDownArrow > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleDownArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleDownArrow.css new file mode 100644 index 0000000..3f70ab8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleDownArrow.css @@ -0,0 +1,43 @@ +/* === Silver Circle Down Arrow ==*/ +.mblDomButtonSilverCircleDownArrow { + position: relative; + width: 30px; + height: 30px; +} +.mblDomButtonSilverCircleDownArrow > div { + position: relative; + top: 0px; + left: 0px; + width: 26px; + height: 26px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 13px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); + background: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#C2C2C2)); +} +.mblDomButtonSilverCircleDownArrow > div > div { + position: relative; + top: 3px; + left: 3px; + width: 20px; + height: 20px; + -webkit-border-radius: 10px; + background: -webkit-gradient(linear, left top, left bottom, from(#979797), to(#616161)); +} +.mblDomButtonSilverCircleDownArrow > div > div > div { + position: absolute; + left: 0px; + clip: rect(6px 50px 40px 0px); +} +.mblDomButtonSilverCircleDownArrow > div > div > div > div { + position: absolute; + top: -5px; + left: 1px; + width: 18px; + height: 18px; + margin: 0px; + font-size: 1px; + background-color: #D1D1D1; + border-top: 1px solid #4A5A71; + -webkit-transform: scaleX(0.7) rotate(45deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGrayButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGrayButton-compat.css new file mode 100644 index 0000000..dc3c7ca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGrayButton-compat.css @@ -0,0 +1,8 @@ +/* === Silver Circle Gray Button ==*/ +.mblDomButtonSilverCircleGrayButton { + background-image: url(compat/mblDomButtonSilverCircleGrayButton.png); + background-repeat: no-repeat; +} +.mblDomButtonSilverCircleGrayButton > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGrayButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGrayButton.css new file mode 100644 index 0000000..0769c27 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGrayButton.css @@ -0,0 +1,27 @@ +/* === Silver Circle Gray Button ==*/ +.mblDomButtonSilverCircleGrayButton { + position: relative; + width: 30px; + height: 30px; +} +.mblDomButtonSilverCircleGrayButton > div { + position: relative; + top: 0px; + left: 0px; + width: 26px; + height: 26px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 13px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); + background: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#C2C2C2)); +} +.mblDomButtonSilverCircleGrayButton > div > div { + position: relative; + top: 6px; + left: 6px; + width: 12px; + height: 12px; + border: 1px inset #AEAEAE; + -webkit-border-radius: 7px; + background: -webkit-gradient(linear, left top, left bottom, from(#D4D4D4), to(#BABABA)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenButton-compat.css new file mode 100644 index 0000000..df9e2a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenButton-compat.css @@ -0,0 +1,8 @@ +/* === Silver Circle Green Button ==*/ +.mblDomButtonSilverCircleGreenButton { + background-image: url(compat/mblDomButtonSilverCircleGreenButton.png); + background-repeat: no-repeat; +} +.mblDomButtonSilverCircleGreenButton > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenButton.css new file mode 100644 index 0000000..2b59042 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenButton.css @@ -0,0 +1,27 @@ +/* === Silver Circle Green Button ==*/ +.mblDomButtonSilverCircleGreenButton { + position: relative; + width: 30px; + height: 30px; +} +.mblDomButtonSilverCircleGreenButton > div { + position: relative; + top: 0px; + left: 0px; + width: 26px; + height: 26px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 13px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); + background: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#C2C2C2)); +} +.mblDomButtonSilverCircleGreenButton > div > div { + position: relative; + top: 6px; + left: 6px; + width: 12px; + height: 12px; + border: 1px inset #1B991C; + -webkit-border-radius: 7px; + background: -webkit-gradient(radial, center center, 0, center center, 6, from(#17DF25), to(#1BA51C)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenPlus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenPlus-compat.css new file mode 100644 index 0000000..d19cc2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenPlus-compat.css @@ -0,0 +1,8 @@ +/* === Silver Circle Green Plus Button ==*/ +.mblDomButtonSilverCircleGreenPlus { + background-image: url(compat/mblDomButtonSilverCircleGreenPlus.png); + background-repeat: no-repeat; +} +.mblDomButtonSilverCircleGreenPlus > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenPlus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenPlus.css new file mode 100644 index 0000000..9808e86 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleGreenPlus.css @@ -0,0 +1,37 @@ +/* === Silver Circle Green Plus Button ==*/ +.mblDomButtonSilverCircleGreenPlus { + position: relative; + width: 30px; + height: 30px; +} +.mblDomButtonSilverCircleGreenPlus > div { + position: relative; + top: 0px; + left: 0px; + width: 26px; + height: 26px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 13px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); + background: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#C2C2C2)); +} +.mblDomButtonSilverCircleGreenPlus > div > div { + position: absolute; + top: 11px; + left: 4px; + width: 18px; + height: 4px; + margin: 0px; + font-size: 1px; + background-color: #17DF25; +} +.mblDomButtonSilverCircleGreenPlus > div > div > div { + position: absolute; + top: -7px; + left: 7px; + width: 4px; + height: 18px; + margin: 0px; + font-size: 1px; + background-color: #17DF25; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleOrangeButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleOrangeButton-compat.css new file mode 100644 index 0000000..49eba72 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleOrangeButton-compat.css @@ -0,0 +1,8 @@ +/* === Silver Circle Orange Button ==*/ +.mblDomButtonSilverCircleOrangeButton { + background-image: url(compat/mblDomButtonSilverCircleOrangeButton.png); + background-repeat: no-repeat; +} +.mblDomButtonSilverCircleOrangeButton > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleOrangeButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleOrangeButton.css new file mode 100644 index 0000000..160ef4e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleOrangeButton.css @@ -0,0 +1,27 @@ +/* === Silver Circle Orange Button ==*/ +.mblDomButtonSilverCircleOrangeButton { + position: relative; + width: 30px; + height: 30px; +} +.mblDomButtonSilverCircleOrangeButton > div { + position: relative; + top: 0px; + left: 0px; + width: 26px; + height: 26px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 13px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); + background: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#C2C2C2)); +} +.mblDomButtonSilverCircleOrangeButton > div > div { + position: relative; + top: 6px; + left: 6px; + width: 12px; + height: 12px; + border: 1px inset #CA701A; + -webkit-border-radius: 7px; + background: -webkit-gradient(radial, center center, 0, center center, 6, from(#FF7A07), to(#E66B03)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleRedCross-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleRedCross-compat.css new file mode 100644 index 0000000..68149e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleRedCross-compat.css @@ -0,0 +1,8 @@ +/* === Silver Circle Red Cross Button ==*/ +.mblDomButtonSilverCircleRedCross { + background-image: url(compat/mblDomButtonSilverCircleRedCross.png); + background-repeat: no-repeat; +} +.mblDomButtonSilverCircleRedCross > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleRedCross.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleRedCross.css new file mode 100644 index 0000000..14f4ec3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonSilverCircleRedCross.css @@ -0,0 +1,38 @@ +/* === Silver Circle Red Cross Button ==*/ +.mblDomButtonSilverCircleRedCross { + position: relative; + width: 30px; + height: 30px; +} +.mblDomButtonSilverCircleRedCross > div { + position: relative; + top: 0px; + left: 0px; + width: 26px; + height: 26px; + border: 1px solid #B5B6B5; + -webkit-border-radius: 13px; + -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5); + background: -webkit-gradient(linear, left top, left bottom, from(#EFEFEF), to(#C2C2C2)); +} +.mblDomButtonSilverCircleRedCross > div > div { + position: absolute; + top: 11px; + left: 4px; + width: 18px; + height: 4px; + margin: 0px; + font-size: 1px; + background-color: #F00E5A; + -webkit-transform: rotate(45deg); +} +.mblDomButtonSilverCircleRedCross > div > div > div { + position: absolute; + top: -7px; + left: 7px; + width: 4px; + height: 18px; + margin: 0px; + font-size: 1px; + background-color: #F00E5A; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent19.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent19.css new file mode 100644 index 0000000..3626476 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent19.css @@ -0,0 +1,6 @@ +/* === Transparent Button ==*/ +.mblDomButtonTransparent19 { + position: relative; + width: 19px; + height: 19px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent29.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent29.css new file mode 100644 index 0000000..3eb4891 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent29.css @@ -0,0 +1,6 @@ +/* === Transparent Button ==*/ +.mblDomButtonTransparent29 { + position: relative; + width: 29px; + height: 29px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent30.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent30.css new file mode 100644 index 0000000..b95baf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonTransparent30.css @@ -0,0 +1,6 @@ +/* === Transparent Button ==*/ +.mblDomButtonTransparent30 { + position: relative; + width: 30px; + height: 30px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteArrow-compat.css new file mode 100644 index 0000000..39bff59 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteArrow-compat.css @@ -0,0 +1,8 @@ +/* === Arrow Button ==*/ +.mblDomButtonWhiteArrow, .mblDomButtonArrow { + background-image: url(compat/mblDomButtonWhiteArrow.png); + background-repeat: no-repeat; +} +.mblDomButtonWhiteArrow div, .mblDomButtonArrow div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteArrow.css new file mode 100644 index 0000000..9c9e332 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteArrow.css @@ -0,0 +1,18 @@ +/* === Arrow ==*/ +.mblDomButtonWhiteArrow, .mblDomButtonArrow { + position: relative; + width: 20px; + height: 29px; +} +.mblDomButtonWhiteArrow > div, .mblDomButtonArrow > div { + position: absolute; + top: 10px; + left: 6px; + width: 6px; + height: 6px; + font-size: 1px; + -webkit-transform: rotate(45deg); + border-width: 3px 3px 0px 0px; + border-style: solid; + border-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteCheck-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteCheck-compat.css new file mode 100644 index 0000000..892a407 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteCheck-compat.css @@ -0,0 +1,8 @@ +/* === Check Button ==*/ +.mblDomButtonWhiteCheck, .mblDomButtonCheck { + background-image: url(compat/mblDomButtonWhiteCheck.png); + background-repeat: no-repeat; +} +.mblDomButtonWhiteCheck div, .mblDomButtonCheck div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteCheck.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteCheck.css new file mode 100644 index 0000000..1b51a8f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteCheck.css @@ -0,0 +1,18 @@ +/* === Check Button ==*/ +.mblDomButtonWhiteCheck, .mblDomButtonCheck { + position: relative; + width: 20px; + height: 29px; +} +.mblDomButtonWhiteCheck > div, .mblDomButtonCheck > div { + position: absolute; + left: 0px; + top: 8px; + width: 16px; + height: 6px; + font-size: 1px; + -webkit-transform: scaleX(0.7) rotate(135deg); + border-width: 3px 4px 0px 0px; + border-style: solid; + border-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteDownArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteDownArrow-compat.css new file mode 100644 index 0000000..6556323 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteDownArrow-compat.css @@ -0,0 +1,8 @@ +/* === Down Arrow Button ==*/ +.mblDomButtonWhiteDownArrow { + background-image: url(compat/mblDomButtonWhiteDownArrow.png); + background-repeat: no-repeat; +} +.mblDomButtonWhiteDownArrow div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteDownArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteDownArrow.css new file mode 100644 index 0000000..33188b3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteDownArrow.css @@ -0,0 +1,22 @@ +/* === Down Arrow Button ==*/ +.mblDomButtonWhiteDownArrow { + position: relative; + width: 29px; + height: 29px; +} +.mblDomButtonWhiteDownArrow div { + position: absolute; + left: 0px; + clip: rect(7px 50px 40px 0px); +} +.mblDomButtonWhiteDownArrow > div > div { + top: -10px; + left: 2px; + width: 25px; + height: 25px; + margin: 0px; + font-size: 1px; + background-color: white; + border-top: 1px solid #4A5A71; + -webkit-transform: scaleX(0.6) rotate(45deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhitePlus-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhitePlus-compat.css new file mode 100644 index 0000000..24eb9be --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhitePlus-compat.css @@ -0,0 +1,8 @@ +/* === Plus Button ==*/ +.mblDomButtonWhitePlus { + background-image: url(compat/mblDomButtonWhitePlus.png); + background-repeat: no-repeat; +} +.mblDomButtonWhitePlus div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhitePlus.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhitePlus.css new file mode 100644 index 0000000..4de8a89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhitePlus.css @@ -0,0 +1,28 @@ +/* === Plus Button ==*/ +.mblDomButtonWhitePlus { + position: relative; + width: 29px; + height: 29px; +} +.mblDomButtonWhitePlus > div { /* horiz line */ + position: absolute; + top: 11px; + left: 8px; + width: 13px; + height: 3px; + margin: 0px; + font-size: 1px; + background-color: white; + border-top: 1px solid #4A5A71; +} +.mblDomButtonWhitePlus > div > div { /* vert line */ + position: absolute; + top: -6px; + left: 5px; + width: 3px; + height: 13px; + margin: 0px; + font-size: 1px; + background-color: white; + border-top: 1px solid #4A5A71; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteSearch-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteSearch-compat.css new file mode 100644 index 0000000..b3c927d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteSearch-compat.css @@ -0,0 +1,8 @@ +/* === Search Button ==*/ +.mblDomButtonWhiteSearch { + background-image: url(compat/mblDomButtonWhiteSearch.png); + background-repeat: no-repeat; +} +.mblDomButtonWhiteSearch div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteSearch.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteSearch.css new file mode 100644 index 0000000..d8efeeb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteSearch.css @@ -0,0 +1,30 @@ +/* === Search Button ==*/ +.mblDomButtonWhiteSearch { + position: relative; + width: 29px; + height: 29px; +} +.mblDomButtonWhiteSearch > div { + position: absolute; + top: 5px; + left: 6px; + width: 10px; + height: 10px; + margin: 0px; + font-size: 1px; + border: 2px solid white; + -webkit-border-radius: 6px; +} +.mblDomButtonWhiteSearch > div > div { + position: absolute; + top: 10px; + left: 7px; + width: 8px; + height: 3px; + margin: 0px; + font-size: 1px; + background-color: white; + border: none; + -webkit-transform: rotate(45deg); + -webkit-border-radius: 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteUpArrow-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteUpArrow-compat.css new file mode 100644 index 0000000..49ecb67 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteUpArrow-compat.css @@ -0,0 +1,8 @@ +/* === Up Arrow Button ==*/ +.mblDomButtonWhiteUpArrow { + background-image: url(compat/mblDomButtonWhiteUpArrow.png); + background-repeat: no-repeat; +} +.mblDomButtonWhiteUpArrow div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteUpArrow.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteUpArrow.css new file mode 100644 index 0000000..7c7d0da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonWhiteUpArrow.css @@ -0,0 +1,22 @@ +/* === Up Arrow Button ==*/ +.mblDomButtonWhiteUpArrow { + position: relative; + width: 29px; + height: 29px; +} +.mblDomButtonWhiteUpArrow div { + position: absolute; + left: 0px; + clip: rect(0px 30px 20px 0px); +} +.mblDomButtonWhiteUpArrow > div > div { + top: 9px; + left: 4px; + width: 20px; + height: 20px; + margin: 0px; + font-size: 1px; + background-color: white; + border-top: 1px solid #4A5A71; + -webkit-transform: scaleX(0.6) rotate(45deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonYellowStar-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonYellowStar-compat.css new file mode 100644 index 0000000..08dd2c4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonYellowStar-compat.css @@ -0,0 +1,8 @@ +/* === Yellow Star ==*/ +.mblDomButtonYellowStar { + background-image: url(compat/mblDomButtonYellowStar.png); + background-repeat: no-repeat; +} +.mblDomButtonYellowStar > div { + display: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonYellowStar.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonYellowStar.css new file mode 100644 index 0000000..96c07ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/DomButtonYellowStar.css @@ -0,0 +1,49 @@ +/* === Yellow Star ==*/ +.mblDomButtonYellowStar { + position: relative; + width: 29px; + height: 29px; +} +.mblDomButtonYellowStar > div { + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-color: #FFFF00 transparent transparent transparent; + top: 12px; + left: 3px; + border-width: 9px 12px 0px 12px; + -webkit-transform: rotate(0deg); +} +.mblDomButtonYellowStar > div > div { + position: absolute; + width: 24px; + height: 0px; + border-style: solid; + border-color: #CD853F; + border-width: 1px 0px 0px 0px; + top: -10px; + left: -12px; +} +.mblDomButtonYellowStar > div > div > div { + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-color: #FFFF00 transparent transparent transparent; + top: 0px; + left: 0px; + border-width: 9px 12px 0px 12px; + -webkit-transform: rotate(72deg); +} +.mblDomButtonYellowStar > div > div > div > div { + position: absolute; + width: 0px; + height: 0px; + border-style: solid; + border-color: #FFFF00 transparent transparent transparent; + top: -10px; + left: -12px; + border-width: 9px 12px 0px 12px; + -webkit-transform: rotate(216deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonArrow.png new file mode 100644 index 0000000..edc1165 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlackCircleCross.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlackCircleCross.png new file mode 100644 index 0000000..2fde47f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlackCircleCross.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueBall.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueBall.png new file mode 100644 index 0000000..fc4d734 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueBall.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCircleArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCircleArrow.png new file mode 100644 index 0000000..04526cc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCircleArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCircleMinus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCircleMinus.png new file mode 100644 index 0000000..2fa7350 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCircleMinus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCirclePlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCirclePlus.png new file mode 100644 index 0000000..670839f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueCirclePlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueMinus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueMinus.png new file mode 100644 index 0000000..5479d9a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBlueMinus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBluePlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBluePlus.png new file mode 100644 index 0000000..a916f9c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonBluePlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheck.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheck.png new file mode 100644 index 0000000..0ba6933 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheck.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheckboxOff.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheckboxOff.png new file mode 100644 index 0000000..fa7df3e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheckboxOff.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheckboxOn.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheckboxOn.png new file mode 100644 index 0000000..2cec24f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonCheckboxOn.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBlueCheck.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBlueCheck.png new file mode 100644 index 0000000..0ba6933 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBlueCheck.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBlueMinus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBlueMinus.png new file mode 100644 index 0000000..1d7f918 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBlueMinus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBluePlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBluePlus.png new file mode 100644 index 0000000..465dc1e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonDarkBluePlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGrayArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGrayArrow.png new file mode 100644 index 0000000..edc1165 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGrayArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGrayStar.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGrayStar.png new file mode 100644 index 0000000..68d62c0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGrayStar.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenBall.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenBall.png new file mode 100644 index 0000000..5a46c60 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenBall.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCircleArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCircleArrow.png new file mode 100644 index 0000000..27dbfb6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCircleArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCircleMinus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCircleMinus.png new file mode 100644 index 0000000..a26de02 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCircleMinus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCirclePlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCirclePlus.png new file mode 100644 index 0000000..3a5959e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonGreenCirclePlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonOrangeBall.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonOrangeBall.png new file mode 100644 index 0000000..420428a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonOrangeBall.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedBall.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedBall.png new file mode 100644 index 0000000..aab2da6 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedBall.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCircleArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCircleArrow.png new file mode 100644 index 0000000..55b0167 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCircleArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCircleMinus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCircleMinus.png new file mode 100644 index 0000000..6171d0f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCircleMinus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCirclePlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCirclePlus.png new file mode 100644 index 0000000..f68f227 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedCirclePlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedMinus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedMinus.png new file mode 100644 index 0000000..ab25d93 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedMinus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedPlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedPlus.png new file mode 100644 index 0000000..61a76fc Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonRedPlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleDownArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleDownArrow.png new file mode 100644 index 0000000..bb9b377 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleDownArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGrayButton.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGrayButton.png new file mode 100644 index 0000000..7081f3f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGrayButton.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGreenButton.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGreenButton.png new file mode 100644 index 0000000..857adac Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGreenButton.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGreenPlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGreenPlus.png new file mode 100644 index 0000000..a3ef930 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleGreenPlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleOrangeButton.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleOrangeButton.png new file mode 100644 index 0000000..17d72e0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleOrangeButton.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleRedCross.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleRedCross.png new file mode 100644 index 0000000..7326243 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonSilverCircleRedCross.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteArrow.png new file mode 100644 index 0000000..484ad60 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteCheck.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteCheck.png new file mode 100644 index 0000000..a18d8b3 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteCheck.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteDownArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteDownArrow.png new file mode 100644 index 0000000..add30b8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteDownArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhitePlus.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhitePlus.png new file mode 100644 index 0000000..4b2a010 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhitePlus.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteSearch.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteSearch.png new file mode 100644 index 0000000..eb806d1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteSearch.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteUpArrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteUpArrow.png new file mode 100644 index 0000000..78c1331 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonWhiteUpArrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonYellowStar.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonYellowStar.png new file mode 100644 index 0000000..eaa80d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/domButtons/compat/mblDomButtonYellowStar.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions.css new file mode 100644 index 0000000..e3d7a33 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions.css @@ -0,0 +1,11 @@ +@import url("transitions/dissolve.css"); +@import url("transitions/cover.css"); +@import url("transitions/reveal.css"); +@import url("transitions/slidev.css"); +@import url("transitions/coverv.css"); +@import url("transitions/revealv.css"); +@import url("transitions/swirl.css"); +@import url("transitions/scaleOut.css"); +@import url("transitions/scaleIn.css"); +@import url("transitions/zoomOut.css"); +@import url("transitions/zoomIn.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/cover.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/cover.css new file mode 100644 index 0000000..5794f02 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/cover.css @@ -0,0 +1,34 @@ +.mblCover.mblOut { + z-index: -100; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0%,0px,-1px) !important; +} +.mblCover.mblOut.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblCover.mblIn { + z-index: 0; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(100%,0px,0px) !important; +} +.mblCover.mblIn.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblCover.mblIn.mblReverse { + -webkit-transform: translate3d(-100%,0px,0px) !important; +} +.mblCover.mblIn.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.dj_android.dj_tablet .mblCover.mblOut.mblTransition, +.dj_android.dj_tablet .mblCover.mblIn.mblTransition { + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: linear; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/coverv.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/coverv.css new file mode 100644 index 0000000..2c80e16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/coverv.css @@ -0,0 +1,35 @@ +.mblCoverv.mblOut { + z-index: -100; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0px,0%,-1px) !important; +} +.mblCoverv.mblOut.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.mblCoverv.mblIn { + z-index: 0; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0px,100%,0px) !important; +} +.mblCoverv.mblIn.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.mblCoverv.mblIn.mblReverse { + -webkit-transition-property: none; + -webkit-transform: translate3d(0px,-100%,0px) !important; +} +.mblCoverv.mblIn.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.dj_android.dj_tablet .mblCoverv.mblOut.mblTransition, +.dj_android.dj_tablet .mblCoverv.mblIn.mblTransition { + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: linear; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/dissolve.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/dissolve.css new file mode 100644 index 0000000..4cedc51 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/dissolve.css @@ -0,0 +1,18 @@ +.mblDissolve.mblOut { + -webkit-animation-duration: 1s; + -webkit-animation-name: mblDissolveOut; + -webkit-animation-timing-function: cubic-bezier(.25,1,.75,0); +} +.mblDissolve.mblIn { + -webkit-animation-duration: 1s; + -webkit-animation-name: mblDissolveIn; + -webkit-animation-timing-function: cubic-bezier(.25,1,.75,0); +} +@-webkit-keyframes mblDissolveOut { + from { opacity: 1; } + to { opacity: 0; } +} +@-webkit-keyframes mblDissolveIn { + from { opacity: 0; } + to { opacity: 1; } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/fade.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/fade.css new file mode 100644 index 0000000..889231d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/fade.css @@ -0,0 +1,22 @@ +.mblFade.mblOut { + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + opacity: 1; +} +.mblFade.mblOut.mblTransition { + -webkit-transition-property: opacity; + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: ease-out; + opacity: 0; +} +.mblFade.mblIn { + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + opacity: 0; +} +.mblFade.mblIn.mblTransition { + -webkit-transition-property: opacity; + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: ease-in; + opacity: 1; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/flip.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/flip.css new file mode 100644 index 0000000..0617361 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/flip.css @@ -0,0 +1,35 @@ +.mblFlip.mblOut { + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + opacity: 1; + -webkit-transform: scale(1,1) skew(0,0) !important; +} +.mblFlip.mblOut.mblTransition { + -webkit-transition-property: all; + -webkit-transition-duration: .2s; + -webkit-transition-timing-function: linear; + opacity: 0; + -webkit-transform: scale(0,0.8) skew(0,30deg) !important; +} +.mblFlip.mblIn { + position: absolute; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + opacity: 0; + -webkit-transform: scale(0,0.8) skew(0,-30deg) !important; +} +.mblFlip.mblIn.mblTransition { + -webkit-transition-property: all; + -webkit-transition-delay: .2s; + -webkit-transition-duration: .2s; + -webkit-transition-timing-function: linear; + opacity: 1; + -webkit-transform: scale(1,1) skew(0,0) !important; +} +.dj_android.dj_tablet .mblFlip.mblOut.mblTransition { + -webkit-transition-duration: .4s; +} +.dj_android.dj_tablet .mblFlip.mblIn.mblTransition { + -webkit-transition-delay: .4s; + -webkit-transition-duration: .4s; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/reveal.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/reveal.css new file mode 100644 index 0000000..b711984 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/reveal.css @@ -0,0 +1,35 @@ +.mblReveal.mblOut { + z-index: 0; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblReveal.mblOut.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(-100%,0px,0px) !important; +} +.mblReveal.mblIn { + z-index: -100; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0%,0px,-1px) !important; +} +.mblReveal.mblIn.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblReveal.mblOut.mblReverse { + -webkit-transition-property: none; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblReveal.mblOut.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(100%,0px,0px) !important; +} +.dj_android.dj_tablet .mblReveal.mblOut.mblTransition, +.dj_android.dj_tablet .mblReveal.mblIn.mblTransition { + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: linear; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/revealv.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/revealv.css new file mode 100644 index 0000000..3c74d46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/revealv.css @@ -0,0 +1,31 @@ +.mblRevealv.mblOut { + z-index: 0; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.mblRevealv.mblOut.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(0px,-100%,0px) !important; +} +.mblRevealv.mblIn { + z-index: -100; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0px,0%,-1px) !important; +} +.mblRevealv.mblIn.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .4s; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.mblRevealv.mblOut.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(0px,100%,0px) !important; +} +.dj_android.dj_tablet .mblRevealv.mblOut.mblTransition, +.dj_android.dj_tablet .mblRevealv.mblIn.mblTransition { + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: linear; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/scaleIn.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/scaleIn.css new file mode 100644 index 0000000..64e136c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/scaleIn.css @@ -0,0 +1,33 @@ +.mblScaleIn.mblOut { + z-index: -100; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblScaleInOut; + -webkit-animation-timing-function: ease-out; +} +.mblScaleIn.mblIn { + z-index: 0; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblScaleInIn; + -webkit-animation-timing-function: ease-out; +} +.dj_android .mblScaleIn.mblIn { + -webkit-animation-name: mblScaleInInAndroid; +} +@-webkit-keyframes mblScaleInOut { + from { -webkit-transform: scale(1.0); } + to { -webkit-transform: scale(1.0); } +} +@-webkit-keyframes mblScaleInIn { + from { + -webkit-transform: scale(0.0); + opacity: 0; + } + to { + -webkit-transform: scale(1.0); + opacity: 1; + } +} +@-webkit-keyframes mblScaleInInAndroid { + from { -webkit-transform: scale(0.0); } + to { -webkit-transform: scale(1.0); } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/scaleOut.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/scaleOut.css new file mode 100644 index 0000000..d2f16e8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/scaleOut.css @@ -0,0 +1,33 @@ +.mblScaleOut.mblOut { + z-index: 0; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblScaleOutOut; + -webkit-animation-timing-function: ease-in; +} +.dj_android .mblScaleOut.mblOut { + -webkit-animation-name: mblScaleOutOutAndroid; +} +.mblScaleOut.mblIn { + z-index: -100; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblScaleOutIn; + -webkit-animation-timing-function: ease-in; +} +@-webkit-keyframes mblScaleOutOut { + from { + -webkit-transform: scale(1.0); + opacity: 1; + } + to { + -webkit-transform: scale(0.0); + opacity: 0; + } +} +@-webkit-keyframes mblScaleOutOutAndroid { + from { -webkit-transform: scale(1.0); } + to { -webkit-transform: scale(0.0); } +} +@-webkit-keyframes mblScaleOutIn { + from { -webkit-transform: scale(1.0); } + to { -webkit-transform: scale(1.0); } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/slide.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/slide.css new file mode 100644 index 0000000..cd6b02e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/slide.css @@ -0,0 +1,41 @@ +.mblSlide.mblOut { + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblSlide.mblOut.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .3s; + -webkit-transform: translate3d(-100%,0px,0px) !important; +} +.mblSlide.mblIn { + position: absolute !important; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(100%,0px,0px) !important; +} +.mblSlide.mblIn.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .3s; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblSlide.mblOut.mblReverse { + -webkit-transition-property: none; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.mblSlide.mblOut.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(100%,0px,0px) !important; +} +.mblSlide.mblIn.mblReverse { + -webkit-transform: translate3d(-100%,0px,0px) !important; +} +.mblSlide.mblIn.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(0%,0px,0px) !important; +} +.dj_android.dj_tablet .mblSlide.mblOut.mblTransition, +.dj_android.dj_tablet .mblSlide.mblIn.mblTransition { + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: linear; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/slidev.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/slidev.css new file mode 100644 index 0000000..0f6a816 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/slidev.css @@ -0,0 +1,42 @@ +.mblSlidev.mblOut { + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.mblSlidev.mblOut.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .3s; + -webkit-transform: translate3d(0px,-100%,0px) !important; +} +.mblSlidev.mblIn { + position: absolute !important; + -webkit-transition-property: none; + -webkit-transition-duration: 0s; + -webkit-transform: translate3d(0px,100%,0px) !important; +} +.mblSlidev.mblIn.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transition-duration: .3s; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.mblSlidev.mblOut.mblReverse { + -webkit-transition-property: none; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.mblSlidev.mblOut.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(0px,100%,0px) !important; +} +.mblSlidev.mblIn.mblReverse { + -webkit-transform: translate3d(0px,-100%,0px) !important; +} +.mblSlidev.mblIn.mblReverse.mblTransition { + -webkit-transition-property: -webkit-transform; + -webkit-transform: translate3d(0px,0%,0px) !important; +} +.dj_android.dj_tablet .mblSlidev.mblOut.mblTransition, +.dj_android.dj_tablet .mblSlidev.mblIn.mblTransition { + -webkit-transition-duration: .6s; + -webkit-transition-timing-function: linear; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/swirl.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/swirl.css new file mode 100644 index 0000000..529a931 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/swirl.css @@ -0,0 +1,27 @@ +.mblSwirl.mblOut { + z-index: 0; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblSwirlOut; + -webkit-animation-timing-function: ease-in; +} +.mblSwirl.mblIn { + z-index: -100; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblSwirlIn; + -webkit-animation-timing-function: ease-in; +} +.mblSwirl.mblOut.mblReverse { + -webkit-animation-name: mblSwirlOutReverse; +} +@-webkit-keyframes mblSwirlOut { + from { -webkit-transform: rotate(0deg) scale(1.0); } + to { -webkit-transform: rotate(-360deg) scale(0.0); } +} +@-webkit-keyframes mblSwirlOutReverse { + from { -webkit-transform: rotate(0deg) scale(1.0); } + to { -webkit-transform: rotate(360deg) scale(0.0); } +} +@-webkit-keyframes mblSwirlIn { + from { -webkit-transform: scale(1.0); } + to { -webkit-transform: scale(1.0); } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/zoomIn.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/zoomIn.css new file mode 100644 index 0000000..4ed7eca --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/zoomIn.css @@ -0,0 +1,33 @@ +.mblZoomIn.mblOut { + z-index: -100; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblZoomInOut; + -webkit-animation-timing-function: ease-out; +} +.mblZoomIn.mblIn { + z-index: 0; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblZoomInIn; + -webkit-animation-timing-function: ease-out; +} +.dj_android .mblZoomIn.mblIn { + -webkit-animation-name: mblZoomInInAndroid; +} +@-webkit-keyframes mblZoomInOut { + from { -webkit-transform: scale(1.0); } + to { -webkit-transform: scale(1.0); } +} +@-webkit-keyframes mblZoomInIn { + from { + -webkit-transform: scale(0.0); + opacity: 0; + } + to { + -webkit-transform: scale(1.0); + opacity: 1; + } +} +@-webkit-keyframes mblZoomInInAndroid { + from { -webkit-transform: scale(0.0); } + to { -webkit-transform: scale(1.0); } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/zoomOut.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/zoomOut.css new file mode 100644 index 0000000..8a292d4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/common/transitions/zoomOut.css @@ -0,0 +1,33 @@ +.mblZoomOut.mblOut { + z-index: 0; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblZoomOutOut; + -webkit-animation-timing-function: ease-in; +} +.dj_android .mblZoomOut.mblOut { + -webkit-animation-name: mblZoomOutOutAndroid; +} +.mblZoomOut.mblIn { + z-index: -100; + -webkit-animation-duration: .5s; + -webkit-animation-name: mblZoomOutIn; + -webkit-animation-timing-function: ease-in; +} +@-webkit-keyframes mblZoomOutOut { + from { + -webkit-transform: scale(1.0); + opacity: 1; + } + to { + -webkit-transform: scale(0.0); + opacity: 0; + } +} +@-webkit-keyframes mblZoomOutOutAndroid { + from { -webkit-transform: scale(1.0); } + to { -webkit-transform: scale(0.0); } +} +@-webkit-keyframes mblZoomOutIn { + from { -webkit-transform: scale(1.0); } + to { -webkit-transform: scale(1.0); } +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button-compat.css new file mode 100644 index 0000000..32cc119 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button-compat.css @@ -0,0 +1,8 @@ +/* dojox.mobile.Button */ +.mblButton { + background-image: url(compat/ui-widget-bg.png); + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button.css new file mode 100644 index 0000000..92d7b63 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button.css @@ -0,0 +1,48 @@ +/* dojox.mobile.Button */ +.mblButton { + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0 8px; + height: 30px; + border: 1px outset #b5bcc7; + color: #131313; + font-size: 14px; + font-family: Helvetica; + font-weight: normal; + line-height: 30px; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 2px; +} +.mblButton.mblBlueButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + color: #131313; + background-color: #0000FF; +} +.mblButton.mblBlueButtonSelected { + color: #000000; + border-color: #769dc0; + background-color: #000066; +} +.mblButton.mblRedButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + color: #131313; + background-color: #FF0000; +} +.mblButton.mblRedButtonSelected { + color: #000000; + border-color: #769dc0; + background-color: #660000; +} +.mblButtonSelected { + color: #000000; + border-color: #769dc0; + background-color: #0064c2; +} +.mblButtonDisabled, .mblButton:disabled { + cursor: default; + color: grey; + border-color: grey; + background-color: #8fc9ff; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button.less new file mode 100644 index 0000000..ab3a96c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Button.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Button.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Carousel.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Carousel.css new file mode 100644 index 0000000..a415950 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Carousel.css @@ -0,0 +1,60 @@ +/* dojox.mobile.Carousel */ +.mblCarousel { + overflow: hidden; +} +.mblCarouselBox { + position: relative; + float: left; +} +.mblCarouselImg { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); + vertical-align: bottom; +} +.mblCarouselImgSelected { + border: 1px dashed #C0C0C0; + -webkit-box-shadow: none; +} +.mblCarouselImgHeaderText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselImgFooterText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselHeaderBar { + background-color: #3A3A3B; + color: #B1B1B1; + font: bold 16px arial, helvetica, clean, sans-serif; + padding: 1px; +} +.mblCarouselBtnContainer { + float: right; +} +.mblCarouselBtn { + height: 18px; + width: 46px; + font: bold 14px arial, helvetica, clean, sans-serif; + color: gray; + padding-top: 0px; + margin: 0px 2px; + border-width: 1px; + /* workaround for android problem */ + +} +.mblCarouselTitle { + margin: 2px 0px 2px 4px; +} +.mblCarouselHeaderBar .mblPageIndicator { + float: right; + width: auto; + padding: 0px 20px; +} +.mblCarouselHeaderBar .mblPageIndicatorContainer { + margin-left: 0px; + margin-right: 0px; +} +.mblCarouselPages { + position: relative; + text-align: center; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Carousel.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Carousel.less new file mode 100644 index 0000000..d717397 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Carousel.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Carousel.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox-compat.css new file mode 100644 index 0000000..7545638 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox-compat.css @@ -0,0 +1,26 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + background-image: url(compat/ui-widget-bg.png); + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.45em); + -ms-transform: translateY(0.45em); + transform: translateY(0.45em); +} +.mblCheckBoxChecked::after, +.mblCheckBox:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox.css new file mode 100644 index 0000000..1891ba5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox.css @@ -0,0 +1,45 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + font-size: 18px; + border: 1px outset #b5bcc7; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 2px; + -webkit-transform: translatey(0.45em); +} +.mblCheckBoxSelected { + border-color: #769dc0; + background-color: #0064c2; +} +.mblCheckBoxChecked, .mblCheckBox:checked { + border-color: #769dc0; + background-color: #007ef5; +} +.mblCheckBoxChecked::after, .mblCheckBox:checked::after { + content: ""; + width: 0.3em; + height: 0.6em; + position: absolute; + top: 0; + left: 0.3em; + border-color: #000000; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked.mblCheckBoxSelected, .mblCheckBox:checked.mblCheckBoxSelected { + border-color: #769dc0; + background-color: #0064c2; +} +.mblCheckBoxChecked.mblCheckBoxSelected::after, .mblCheckBox:checked.mblCheckBoxSelected::after { + border-color: #000000; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox.less new file mode 100644 index 0000000..09f93b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/CheckBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/CheckBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox-compat.css new file mode 100644 index 0000000..09c7b38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + -moz-box-shadow: 0px 0px 50px black; + -o-box-shadow: 0px 0px 50px black; + -ms-box-shadow: 0px 0px 50px black; + box-shadow: 0px 0px 50px black; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox.css new file mode 100644 index 0000000..4247da7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox.css @@ -0,0 +1,44 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + margin: 0; + padding: 0; + position: absolute; + border: 0; + background-color: transparent; + -webkit-box-shadow: 0px 0px 50px black; + -webkit-border-radius: 5px; +} +.mblReset { + margin: 0; + padding: 0; + border: 0; + line-height: normal; + font: inherit; + color: inherit; +} +.mblComboBoxMenu { + overflow-y: hidden !important; + position: relative; + overflow: hidden; + border: 1px solid black; + background-color: #eff1f3; + -webkit-border-radius: 5px; +} +.mblComboBoxMenuItem { + white-space: nowrap; + text-align: left; + padding: .1em .2em; + color: #131313; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #eff1f3; +} +.mblComboBoxMenuItemSelected { + color: #000000; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.mblComboBoxMenuPreviousButton, .mblComboBoxMenuNextButton { + font-style: italic; + overflow: hidden; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox.less new file mode 100644 index 0000000..ab9458c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ComboBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ComboBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory-compat.css new file mode 100644 index 0000000..f62bc07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory-compat.css @@ -0,0 +1,4 @@ +/* dojox.mobile.EdgeToEdgeCategory */ +.mblEdgeToEdgeCategory { + background-image: url(compat/heading-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory.css new file mode 100644 index 0000000..289511f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory.css @@ -0,0 +1,19 @@ +/* dojox.mobile.EdgeToEdgeCategory */ +.mblEdgeToEdgeCategory { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0; + padding: 0 8px; + height: 30px; + border-bottom: 1px solid #b5bcc7; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(2.5%, #ffffff), color-stop(2.5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.68)), color-stop(10%, rgba(255, 255, 255, 0.68)), color-stop(1, rgba(255, 255, 255, 0))); + font-size: 18px; + font-family: Helvetica; + font-weight: normal; + text-shadow: rgba(0, 0, 0, 0.2) 0px 1px 2px; + color: #000000; + line-height: 32px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory.less new file mode 100644 index 0000000..3bb63da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeList.css new file mode 100644 index 0000000..9ea0ea4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeList.css @@ -0,0 +1,12 @@ +/* dojox.mobile.EdgeToEdgeList */ +.mblEdgeToEdgeList { + position: relative; + /* IE needs this */ + + margin: 0; + padding: 0; + background-color: #ffffff; +} +.mblEdgeToEdgeList .mblListItem:last-child { + border-bottom-color: #b5bcc7; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeList.less new file mode 100644 index 0000000..227627c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/EdgeToEdgeList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading-compat.css new file mode 100644 index 0000000..74befb9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading-compat.css @@ -0,0 +1,47 @@ +/* mbl.widget.Heading */ +.mblHeading { + background-image: url(compat/heading-bg.png); +} +.mblHeadingSpanTitle { + white-space: normal; +} + +/* Heading Arrow Button */ +.mblArrowButtonHead { + background-image: url(compat/ui-widget-bg.png); + -moz-transform-origin: left top; + -o-transform-origin: left top; + -ms-transform-origin: left top; + transform-origin: left top; + -moz-transform: scale(0.9, 0.99) rotate(45deg); + -o-transform: scale(0.9, 0.99) rotate(45deg); + -ms-transform: scale(0.9, 0.99) rotate(45deg); + transform: scale(0.9, 0.99) rotate(45deg); + left: 1px\9; /* IE7/8 hack */ + _left: 9px; /* IE6 hack */ + height: 32px\9; /* IE6/7/8 hack */ + border-width: 0\9; /* IE6/7/8 hack */ + background-image: url(compat/arrow-button-head.png)\9; /* IE6/7/8 hack */ +} +.mblArrowButtonHead:not(:target) { /* IE9 hack */ + background-image: url(compat/ui-widget-bg.png)\9; + left: 17px\9; + height: 21px\9; + border-width: 1px\9; +} +.mblArrowButtonBody { + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + -o-border-top-right-radius: 2px; + -o-border-bottom-right-radius: 2px; + -ms-border-top-right-radius: 2px; + -ms-border-bottom-right-radius: 2px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + background-image: url(compat/ui-widget-bg.png); +} +*html .mblArrowButtonBody { /* IE6 hack */ + padding: 0px 10px 0px 3px; + top: 0px; + left: 17px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading.css new file mode 100644 index 0000000..86bd3b4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading.css @@ -0,0 +1,85 @@ +/* dojox.mobile.Heading */ +.mblHeading { + position: relative; + margin: 0px; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + z-index: 1; + padding: 0; + height: 40px; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(2.5%, #ffffff), color-stop(2.5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.68)), color-stop(10%, rgba(255, 255, 255, 0.68)), color-stop(1, rgba(255, 255, 255, 0))); + border-bottom: 1px solid #769dc0; + color: #131313; + font-size: 18px; + font-family: Helvetica; + font-weight: normal; + text-shadow: rgba(0, 0, 0, 0.2) 0px 1px 2px; + text-align: center; + line-height: 42px; +} +.mblHeading * { + z-index: 2; +} +.mblHeadingDivTitle { + position: absolute; + width: 100%; + display: none; + left: 0px; + z-index: 1; +} +.mblHeadingCenterTitle .mblHeadingDivTitle { + display: block; +} +.mblHeadingCenterTitle .mblHeadingSpanTitle { + display: none; +} +/* Heading Arrow Button */ +.mblArrowButton { + position: relative; + float: left; + height: 30px; + margin: 0px 8px; +} +.mblArrowButtonHead { + position: absolute; + top: 5px; + left: 17px; + width: 21px; + height: 21px; + border: 1px solid #b5bcc7; + -webkit-transform-origin: left top; + -webkit-transform: scale(0.9, 0.99) rotate(45deg); + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.dj_chrome .mblArrowButtonHead { + border-style: inset; +} +.mblArrowButtonBody { + position: absolute; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + top: 5px; + left: 17px; + padding: 0px 10px 0px 3px; + height: 30px; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: #b5bcc7; + font-size: 14px; + font-family: Helvetica; + font-weight: normal; + text-shadow: none; + color: #131313; + line-height: 30px; + -webkit-border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.mblArrowButtonSelected .mblArrowButtonHead, .mblArrowButtonSelected .mblArrowButtonBody { + background-color: #0064c2; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading.less new file mode 100644 index 0000000..cfc8580 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Heading.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Heading.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer-compat.css new file mode 100644 index 0000000..78efb95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer-compat.css @@ -0,0 +1,11 @@ +@import url("../common/domButtons/DomButtonColorButtons-compat.css"); + +/* dojox.mobile.IconItem */ +.mblIconArea div { + *font-size: 60px; /* IE 7 quirks */ +} + +/* Icon Content Heading */ +.mblIconContentHeading { + background-image: url(compat/heading-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer.css new file mode 100644 index 0000000..457a86a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer.css @@ -0,0 +1,101 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); + +@import url("../common/IconContainer_keyframes.css"); +/* dojox.mobile.IconContainer */ +.mblIconContainer { + margin: 8px 0 8px 8px; + padding: 8px 0 8px; + background-color: #eff1f3; +} +/* dojox.mobile.IconItem */ +.mblIconItem { + list-style-type: none; + float: left; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblIconItemTerminator { + list-style-type: none; + clear: both; + height: 8px; +} +.mblIconItemSub { + list-style-type: none; + margin-left: -8px; + background-color: white; + color: #131313; +} +.mblIconArea { + height: 87px; + width: 73px; + text-align: center; + font-family: Helvetica; + font-weight: normal; + font-size: 14px; +} +.mblIconArea div { + position: relative; + height: 65px; + line-height: 65px; + text-align: center; +} +.mblIconArea img { + vertical-align: middle; +} +.mblIconItemSpriteIcon { + position: absolute; +} +.mblContent { + clear: both; + padding-bottom: 8px; +} +table.mblClose { + clear: both; + cursor: pointer; +} +.mblVibrate { + position: relative; + -webkit-animation-duration: .5s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-iteration-count: 20; + -webkit-animation-name: mblVibrate; + -webkit-transform: rotate(0deg); +} +.mblCloseContent { + -webkit-animation-duration: .3s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-name: mblShrink; + -webkit-transform: scale(0.01); +} +.mblCloseContent.mblShrink0 { + -webkit-animation-name: mblShrink0; +} +.mblCloseContent.mblShrink1 { + -webkit-animation-name: mblShrink1; +} +.mblCloseContent.mblShrink2 { + -webkit-animation-name: mblShrink2; +} +.mblCloseContent.mblShrink3 { + -webkit-animation-name: mblShrink3; +} +/* Icon Content Heading */ +.mblIconContentHeading { + position: relative; + clear: both; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin-top: 0px; + padding-left: 37px; + height: 25px; + border-top: 1px solid #dfe8f0; + border-bottom: 1px solid #769dc0; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(2.5%, #ffffff), color-stop(2.5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.68)), color-stop(10%, rgba(255, 255, 255, 0.68)), color-stop(1, rgba(255, 255, 255, 0))); + color: #131313; + font-size: 14px; + font-family: Helvetica; + font-weight: normal; + text-shadow: rgba(0, 0, 0, 0.2) 0px 1px 2px; + line-height: 26px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer.less new file mode 100644 index 0000000..963eae6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/IconContainer.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); +@import url("../common/IconContainer_keyframes.css"); + +@import "variables.less"; +@import "../common/IconContainer.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem-compat.css new file mode 100644 index 0000000..1192cdf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem-compat.css @@ -0,0 +1,16 @@ +@import url("../common/domButtons/DomButtonGrayArrow-compat.css"); +@import url("../common/domButtons/DomButtonDarkBlueCheck-compat.css"); + +/* mbl.widget.ListItem */ +*html li.mblListItem.mblVariableHeight { /* IE6 hack */ + height: 0; +} +.mblItemSelected { + background-image: url(compat/ui-widget-bg.png); +} +*html .mblListItemTextBox { /* IE6 hack */ + height: 100%; +} +*html li.mblListItem.mblVariableHeight .mblListItemTextBox { /* IE6 hack */ + height: auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem.css new file mode 100644 index 0000000..8d3cb7c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem.css @@ -0,0 +1,84 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); + +@import url("../common/domButtons/DomButtonDarkBlueCheck.css"); +/* dojox.mobile.ListItem */ +.mblListItem { + position: relative; + list-style-type: none; + vertical-align: bottom; + /* To avoid IE6 LI bug */ + + padding: 0 0 0 8px; + height: 50px; + border-bottom: 1px solid #b5bcc7; + font-size: 18px; + font-family: Helvetica; + font-weight: normal; + text-shadow: none; + color: #131313; + line-height: 50px; +} +.mblListItem.mblVariableHeight { + height: auto; + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem .mblListItemAnchor { + display: block; + height: 100%; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + background-position: 9px 7px; + text-decoration: none; + padding-right: 7px; +} +.mblListItem .mblListItemAnchor * { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0.2); +} +.mblItemSelected { + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.mblItemSelected .mblListItemAnchor { + color: #000000; +} +.mblItemSelected .mblDomButton div { + border-color: white; +} +.mblListItemTextBoxSelected { + background-color: #5cb0ff; +} +.mblListItemChecked { + color: #000000; +} +.mblListItemIcon { + float: left; + line-height: normal; + margin-top: 10.5px; + margin-right: 11px; +} +.mblListItemSpriteIcon { + position: absolute; + margin-top: 10.5px; + margin-left: 8px; +} +.mblListItemRightIcon, .mblListItemRightIcon2 { + position: relative; + float: right; + line-height: normal; + margin-top: 10.5px; +} +.mblListItemRightText { + position: relative; + float: right; + line-height: normal; + color: #131313; + margin: 14px 4px 0 0; +} +.mblListItemTextBox { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mblVariableHeight .mblListItemTextBox { + white-space: normal; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem.less new file mode 100644 index 0000000..f9f9d21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ListItem.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); +@import url("../common/domButtons/DomButtonDarkBlueCheck.css"); + +@import "variables.less"; +@import "../common/ListItem.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Opener-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Opener-compat.css new file mode 100644 index 0000000..68cb1a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Opener-compat.css @@ -0,0 +1,3 @@ +/* dojox.mobile.Opener */ +@import url("Overlay-compat.css"); +@import url("Tooltip-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Opener.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Opener.css new file mode 100644 index 0000000..141c72e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Opener.css @@ -0,0 +1,3 @@ +/* dojox.mobile.Opener */ +@import url("Overlay.css"); +@import url("Tooltip.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay-compat.css new file mode 100644 index 0000000..3bc72a3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay-compat.css @@ -0,0 +1,13 @@ +/* dojox.mobile.Overlay */ +.mblOverlay { + _position: absolute; + text-align: center; +} +.dj_gecko .mblOverlay { + text-align: -moz-center; +} +.dj_ie9 .mblOverlay > *, +.dj_ie8 .mblOverlay > * +{ + margin: 0 auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay.css new file mode 100644 index 0000000..c2b7731 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay.css @@ -0,0 +1,18 @@ +@import url("../common/transitions/coverv.css"); + +@import url("../common/transitions/revealv.css"); +/* dojox.mobile.Overlay */ +.mblOverlay { + position: fixed; + z-index: 2000; + left: 0; + bottom: 0; + margin: 0; + width: 100%; + text-align: -webkit-center; + background-color: #eff1f3; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.mblOverlayHidden *, .mblOverlayHidden { + visibility: hidden !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay.less new file mode 100644 index 0000000..e49ea9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Overlay.less @@ -0,0 +1,5 @@ +@import url("../common/transitions/coverv.css"); +@import url("../common/transitions/revealv.css"); + +@import "variables.less"; +@import "../common/Overlay.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/PageIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/PageIndicator.css new file mode 100644 index 0000000..a175ad6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/PageIndicator.css @@ -0,0 +1,24 @@ +/* dojox.mobile.PageIndicator */ +.mblPageIndicator { + position: relative; + width: 100%; + height: 20px; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblPageIndicatorContainer { + margin-top: 4px; + margin-left: auto; + margin-right: auto; +} +.mblPageIndicatorDot { + margin: 0px 3px; + width: 6px; + height: 6px; + font-size: 1px; + background-color: #949294; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +.mblPageIndicatorDotSelected { + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/PageIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/PageIndicator.less new file mode 100644 index 0000000..9bb6c49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/PageIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/PageIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator-compat.css new file mode 100644 index 0000000..4ee0810 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator-compat.css @@ -0,0 +1,46 @@ +/* Progress Indicator */ +.mblProg { + position: absolute; + top: 0px; + width: 4px; + font-size: 1px; + height: 36px; + overflow: hidden; + background-color: #C0C0C0; +} +.mblProg0 { + left: 0px; +} +.mblProg1 { + left: 8px; +} +.mblProg2 { + left: 16px; +} +.mblProg3 { + left: 24px; +} +.mblProg4 { + left: 32px; +} +.mblProg5 { + left: 40px; +} +.mblProg6 { + left: 48px; +} +.mblProg7 { + left: 56px; +} +.mblProg8 { + left: 64px; +} +.mblProg9 { + left: 72px; +} +.mblProg10 { + left: 80px; +} +.mblProg11 { + left: 80px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator.css new file mode 100644 index 0000000..2340637 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator.css @@ -0,0 +1,58 @@ +/* Progress Indicator */ +.mblProgContainer { + position: absolute; + width: 40px; + height: 40px; + top: 180px; + left: 50%; + margin: -18px 0px 0px -18px; +} +.mblProg { + position: absolute; + left: 2px; + top: 0px; + width: 11px; + font-size: 1px; + height: 4px; + overflow: hidden; + -webkit-transform-origin: 0 2px; + background-color: #C0C0C0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} +.mblProg0 { + -webkit-transform: translate(18px, 10px) rotate(-90.1deg); +} +.mblProg1 { + -webkit-transform: translate(22px, 11px) rotate(-60deg); +} +.mblProg2 { + -webkit-transform: translate(25px, 14px) rotate(-30deg); +} +.mblProg3 { + -webkit-transform: translate(26px, 18px) rotate(0deg); +} +.mblProg4 { + -webkit-transform: translate(25px, 22px) rotate(30deg); +} +.mblProg5 { + -webkit-transform: translate(22px, 25px) rotate(60deg); +} +.mblProg6 { + -webkit-transform: translate(18px, 26px) rotate(90.1deg); +} +.mblProg7 { + -webkit-transform: translate(14px, 25px) rotate(120deg); +} +.mblProg8 { + -webkit-transform: translate(11px, 22px) rotate(150deg); +} +.mblProg9 { + -webkit-transform: translate(10px, 18px) rotate(180deg); +} +.mblProg10 { + -webkit-transform: translate(11px, 14px) rotate(210deg); +} +.mblProg11 { + -webkit-transform: translate(14px, 11px) rotate(240deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator.less new file mode 100644 index 0000000..2ab2a2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ProgressIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ProgressIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton-compat.css new file mode 100644 index 0000000..9fd4ead --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton-compat.css @@ -0,0 +1,26 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + background-image: url(compat/ui-widget-bg.png); + -moz-border-radius: 0.5em; + -o-border-radius: 0.5em; + -ms-border-radius: 0.5em; + border-radius: 0.5em; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.45em); + -ms-transform: translateY(0.45em); + transform: translateY(0.45em); +} +.mblRadioButtonChecked::after, +.mblRadioButton:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton.css new file mode 100644 index 0000000..32b1ebb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton.css @@ -0,0 +1,41 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + font-size: 18px; + border: 1px outset #b5bcc7; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 0.5em; + -webkit-transform: translatey(0.45em); +} +.mblRadioButtonChecked, .mblRadioButton:checked { + border-color: #769dc0; + background-color: #007ef5; +} +.mblRadioButtonChecked::after, .mblRadioButton:checked::after { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: #000000; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked.mblRadioButtonSelected, .mblRadioButton:checked.mblRadioButtonSelected { + border-color: #769dc0; + background-color: #0064c2; +} +.mblRadioButtonChecked.mblRadioButtonSelected::after, .mblRadioButton:checked.mblRadioButtonSelected::after { + border-color: #000000; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton.less new file mode 100644 index 0000000..0793ca6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RadioButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RadioButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect-compat.css new file mode 100644 index 0000000..104ef49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect-compat.css @@ -0,0 +1,71 @@ +/* dojox.mobile.RoundRect */ +.mblRoundRect { + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} +/* Round Corner */ +.mblRoundCorner { + background-color: white; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectContainer { + margin: 0px; + padding: 0px; + background-color: white; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRect .mblRoundRectContainer { + padding: 3px 8px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect.css new file mode 100644 index 0000000..86caed0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect.css @@ -0,0 +1,15 @@ +/* dojox.mobile.RoundRect */ +.mblRoundRect { + margin: 8px 8px 12px; + padding: 8px; + border: 1px solid #b5bcc7; + -webkit-border-radius: 5px; + background-color: #ffffff; + font-size: 18px; + font-family: Helvetica; + font-weight: normal; + text-shadow: none; +} +.mblRoundRect.mblShadow { + -webkit-box-shadow: 5px 5px 5px #b5bcc7; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect.less new file mode 100644 index 0000000..efec816 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRect.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRect.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectCategory.css new file mode 100644 index 0000000..12485a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectCategory.css @@ -0,0 +1,14 @@ +/* dojox.mobile.RoundRectCategory */ +.mblRoundRectCategory { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + margin: 0; + padding: 8px 8px 0; + font-size: 18px; + font-family: Helvetica; + font-weight: normal; + text-shadow: rgba(0, 0, 0, 0.2) 0px 1px 2px; + color: #000000; + line-height: 30px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectCategory.less new file mode 100644 index 0000000..e9148cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList-compat.css new file mode 100644 index 0000000..d16eb00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList-compat.css @@ -0,0 +1,91 @@ +/* dojox.mobile.RoundRectList */ +.mblRoundRectList { + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} +.mblRoundRectList .mblListItem:first-child { + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + -o-border-top-left-radius: 5px; + -o-border-top-right-radius: 5px; + -ms-border-top-left-radius: 5px; + -ms-border-top-right-radius: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} +.mblRoundRectList .mblListItem:last-child { + -moz-border-radius-bottomleft: 5px; + -moz-border-radius-bottomright: 5px; + -o-border-bottom-left-radius: 5px; + -o-border-bottom-right-radius: 5px; + -ms-border-bottom-left-radius: 5px; + -ms-border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} +/* Round Corner */ +.mblRoundCorner { + background-color: white; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectContainer { + margin: 0px; + padding: 0px; + background-color: white; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRect .mblRoundRectContainer { + padding: 3px 8px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList.css new file mode 100644 index 0000000..3399016 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList.css @@ -0,0 +1,21 @@ +/* dojox.mobile.RoundRectList */ +.mblRoundRectList { + position: relative; + /* IE needs this */ + + margin: 8px 8px 12px; + padding: 0; + border: 1px solid #b5bcc7; + -webkit-border-radius: 5px; + background-color: #ffffff; + -webkit-box-shadow: 5px 5px 5px #b5bcc7; +} +.mblRoundRectList .mblListItem:first-child { + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; +} +.mblRoundRectList .mblListItem:last-child { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: 5px; + -webkit-border-bottom-right-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList.less new file mode 100644 index 0000000..52e1164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/RoundRectList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider-compat.css new file mode 100644 index 0000000..936dcd6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider-compat.css @@ -0,0 +1,42 @@ +/* dojox.mobile.Slider */ +.mblSlider { + background-image: url(compat/ui-widget-bg.png); + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; + -moz-user-select: none; /* prevent selection */ + -o-user-select: none; + -ms-user-select: none; + user-select: none; + -moz-box-sizing: content-box; /* make width and height consistent with a DIV */ + -o-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; +} +.mblSlider.mblSliderV { + background: #ABABAB; +} +.mblSliderProgressBar { + background-image: url(compat/ui-widget-bg.png); + background-repeat: repeat-x; + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; + _background-image: url(compat/slider-h-bar-bg.png); /* IE6 hack */ + _background-color: transparent; /* IE6 hack */ +} +.mblSliderV .mblSliderProgressBar { + background: #0D48A8; +} +.mblSliderHandle { + background-image: url(compat/ui-widget-bg.png); + -moz-border-radius: 10px; + -o-border-radius: 10px; + -ms-border-radius: 10px; + border-radius: 10px; +} +.mblSliderTransition { + transition-duration: 400ms; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider.css new file mode 100644 index 0000000..888f96a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider.css @@ -0,0 +1,65 @@ +/* dojox.mobile.Slider */ +.mblSlider { + outline: none; + -webkit-user-select: none; + /* prevent selection */ + + -webkit-box-sizing: content-box; + /* make width and height consistent with a DIV */ + + margin: 15px; + /* 1/2 handle width for hanging off the ends of the bar */ + + border: 1px outset #b5bcc7; + background-color: #8fc9ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 2px; +} +.mblSliderH { + width: 200px; + height: 8px; +} +.mblSliderH .mblSliderProgressBar { + height: 100%; +} +.mblSliderH .mblSliderHandle { + top: 50%; +} +.mblSliderV { + height: 200px; + width: 8px; +} +.mblSliderV .mblSliderProgressBar { + width: 100%; +} +.mblSliderV .mblSliderHandle { + left: 50%; +} +.mblSliderProgressBar { + -webkit-border-radius: 2px; + background-color: #0064c2; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.mblSliderHandle { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: 1px outset #b5bcc7; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 2px; +} +.mblSliderTransition { + -webkit-transition-duration: 400ms; +} +.mblSliderTouchBox { + margin: 0; + padding: 12pt; + left: -12pt; + top: -12pt; + border: none; + width: 100%; + height: 100%; + background-color: transparent; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider.less new file mode 100644 index 0000000..928972f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Slider.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Slider.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch-compat.css new file mode 100644 index 0000000..7730ebb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch-compat.css @@ -0,0 +1,59 @@ +/* Switch - default */ +.mblSwitchBg { + -moz-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} +.mblSwitchBgLeft { + background-image: url(compat/ui-widget-bg.png); +} +.mblSwitchBgRight { + background-image: url(compat/ui-widget-bg.png); +} +.mblSwitchKnob { + background-image: url(compat/ui-widget-bg.png); + -moz-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; + -moz-box-sizing: border-box; + -o-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +/* Round Shape */ +.mblSwRoundShape1 .mblSwitchBg, +.mblSwRoundShape2 .mblSwitchBg { + -moz-border-radius: 14px; + -o-border-radius: 14px; + -ms-border-radius: 14px; + border-radius: 14px; +} +.mblSwRoundShape1 .mblSwitchKnob, +.mblSwRoundShape2 .mblSwitchKnob { + -moz-border-radius: 13px; + -o-border-radius: 13px; + -ms-border-radius: 13px; + border-radius: 13px; +} +/* Arc Shape */ +.mblSwArcShape1 .mblSwitchBg, +.mblSwArcShape2 .mblSwitchBg { + -moz-border-radius: 6px/14px; + -o-border-radius: 6px/14px; + -ms-border-radius: 6px/14px; + border-radius: 6px/14px; +} +.mblSwArcShape1 .mblSwitchKnob, +.mblSwArcShape2 .mblSwitchKnob { + -moz-border-radius: 5px/13px; + -o-border-radius: 5px/13px; + -ms-border-radius: 5px/13px; + border-radius: 5px/13px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch.css new file mode 100644 index 0000000..fa50ef9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch.css @@ -0,0 +1,23 @@ +@import url("../common/Switch.css"); +/* dojox.mobile.Switch */ +.mblItemSwitch { + top: 12px; +} +.mblSwitchBg { + border-color: #b5bcc7; + -webkit-border-radius: 2px; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.mblSwitchBgLeft { + background-color: #007ef5; + color: #131313; +} +.mblSwitchBgRight { + background-color: #8fc9ff; +} +.mblSwitchKnob { + border-color: #7b879b; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch.less new file mode 100644 index 0000000..84a1146 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Switch.less @@ -0,0 +1,4 @@ +@import url("../common/Switch.css"); + +@import "variables.less"; +@import "../common/Switch.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar-compat.css new file mode 100644 index 0000000..fb2a1b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar-compat.css @@ -0,0 +1,55 @@ +/* dojox.mobile.TabBarButton */ +.dj_ie6 .mblTabBarButtonDiv, .dj_ie7 .mblTabBarButtonDiv { + left: auto; +} +.dj_ie6 .mblTabBar .mblTabBarButton { + display: inline; /* IE bug*/ +} +.mblTabPanelHeader { + background-image: url(compat/heading-bg.png); +} +.mblTabBar { + background-image: url(compat/ui-widget-bg.png); +} +.mblTabBarButton, .mblTabButton { + background-image: url(compat/ui-widget-bg.png); + _background-image: none; /* IE6 */ +} +.mblTabBar .mblTabBarButton.mblTabButtonSelected { + -moz-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; +} +.mblTabButton:first-child { + -moz-border-radius-topleft: 2px; + -moz-border-radius-bottomleft: 2px; + -o-border-top-left-radius: 2px; + -o-border-bottom-left-radius: 2px; + -ms-border-top-left-radius: 2px; + -ms-border-bottom-left-radius: 2px; + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; +} +.mblTabButton:last-child { + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + -o-border-top-right-radius: 2px; + -o-border-bottom-right-radius: 2px; + -ms-border-top-right-radius: 2px; + -ms-border-bottom-right-radius: 2px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; +} +*html .mblTabButton { /* IE6 hack */ + behavior: expression( + (function(el){ + if(!el.previousSibling) + el.style.borderWidth = "1px"; + el.style.behavior = "none"; + })(this) + ); +} +.dj_ie6 .mblTabPanelHeader .mblDomButton { + left: 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar.css new file mode 100644 index 0000000..3362235 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar.css @@ -0,0 +1,161 @@ +/* dojox.mobile.TabBar */ +.mblTabBar { + position: relative; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + height: 50px; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + border-bottom: 1px solid #769dc0; + color: #131313; + text-align: center; +} +.mblTabBarNoIcons { + height: 34px; +} +.mblTabBarNoText { + height: 34px; +} +/* dojox.mobile.TabBarButton */ +.mblTabBarButton { + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblTabBar .mblTabBarButton { + position: relative; + list-style-type: none; + float: left; + padding: 5px 0; +} +.mblTabBar .mblTabBarButton.mblTabButtonSelected { + border-color: #769dc0; + background-color: #0064c2; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 2px; +} +.mblTabBarButtonAnchor { + display: block; + text-decoration: none; +} +.mblTabBarButtonDiv { + position: relative; + margin-left: auto; + margin-right: auto; + height: 29px; + width: 29px; +} +.mblTabBarButtonIcon { + position: absolute; + left: 0; + top: 0; +} +.mblTabBarButtonSpriteIcon { + position: absolute; +} +.mblTabBarButtonTextBox { + color: #131313; + font-family: Helvetica; + font-size: 11px; + font-weight: normal; +} +.mblTabBarNoIcons .mblTabBarButtonDiv { + display: none; +} +.mblTabBarNoIcons .mblTabBarButtonTextBox { + line-height: 39px; + font-size: 17px; +} +.mblTabBarTop .mblTabButton .mblTabBarButtonDiv { + display: none; +} +.mblTabButton { + position: relative; + float: left; + list-style-type: none; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + width: 90px; + height: 30px; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: #b5bcc7; + border-right-color: #b5bcc7; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + font-family: Helvetica; + font-size: 14px; + font-weight: normal; + color: #131313; + text-align: center; + line-height: 30px; +} +.mblTabButton .mblTabBarButtonAnchor, .mblTabButton .mblTabBarButtonDiv { + height: 30px; +} +.mblTabButton:first-child { + -webkit-border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + border-left-width: 1px; +} +.mblTabButton:last-child { + -webkit-border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; + border-right-color: #b5bcc7; +} +.mblTabButtonSelected .mblTabBarButtonTextBox { + color: #000000; +} +.mblTabButtonSelected.mblTabButton { + background-color: #0064c2; +} +.mblTabButtonHighlighted.mblTabButton { + background-color: #007ef5; +} +.mblTabButtonImgDiv { + display: none; +} +.mblTabPanelHeader { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0; + padding: 0; + height: 40px; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(2.5%, #ffffff), color-stop(2.5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.14)), color-stop(5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.52)), color-stop(7.5%, rgba(255, 255, 255, 0.68)), color-stop(10%, rgba(255, 255, 255, 0.68)), color-stop(1, rgba(255, 255, 255, 0))); + border-bottom: 1px solid #769dc0; + color: #131313; + font-size: 18px; + font-family: Helvetica; + font-weight: normal; + text-shadow: rgba(0, 0, 0, 0.2) 0px 1px 2px; + text-align: center; + line-height: 42px; +} +.mblTabPanelHeader .mblTabButton { + margin-top: 4px; +} +.mblTabPanelHeader .mblTabButton.mblTabButtonSelected { + background-color: #0064c2; +} +.mblTabPanelHeader .mblTabButtonDomButton { + width: 43px; +} +.mblTabPanelHeader .mblTabButtonDomButtonClass { + left: 8px; +} +.mblHeading .mblTabPanelHeader .mblTabButton { + margin-top: 5px; +} +.mblHeading .mblTabPanelHeader .mblTabButton:first-child { + -webkit-border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + border-left-width: 1px; +} +.mblHeading .mblTabPanelHeader .mblTabButton:last-child { + -webkit-border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar.less new file mode 100644 index 0000000..4875c40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TabBar.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TabBar.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea-compat.css new file mode 100644 index 0000000..af7e363 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea.css new file mode 100644 index 0000000..d56f3f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea.css @@ -0,0 +1,12 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + padding: 4px 1px; + border: #b5bcc7 1px inset; + font-family: Helvetica; + font-size: 14px; + -webkit-border-radius: 5px; +} +/* dojox.mobile.ExpandingTextArea */ +.mblExpandingTextArea { + margin: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea.less new file mode 100644 index 0000000..c16ffe0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextArea.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextArea.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox-compat.css new file mode 100644 index 0000000..32dcf46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox.css new file mode 100644 index 0000000..65a63bf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox.css @@ -0,0 +1,8 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + height: 30px; + border: #b5bcc7 1px inset; + font-family: Helvetica; + font-size: 14px; + -webkit-border-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox.less new file mode 100644 index 0000000..c83890a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/TextBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton-compat.css new file mode 100644 index 0000000..c1333a9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton-compat.css @@ -0,0 +1,21 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + background-image: url(compat/ui-widget-bg.png); + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} +.mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,0px) rotate(45deg) skew(10deg); + -o-transform: rotate(45deg) skew(10deg); + -ms-transform: rotate(45deg) skew(10deg); + transform: rotate(45deg) skew(10deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.dj_ff3 .mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,-6px) rotate(45deg) skew(10deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton.css new file mode 100644 index 0000000..9932572 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton.css @@ -0,0 +1,52 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0 8px 0 23px; + height: 30px; + border: 1px outset #b5bcc7; + -webkit-border-radius: 2px; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + font-family: Helvetica; + font-weight: normal; + line-height: 30px; + color: #131313; + line-height: 30px; +} +.mblToggleButton.mblToggleButtonSelected { + border-color: #769dc0; + background-color: #0064c2; +} +.mblToggleButton.mblToggleButtonChecked { + border-color: #769dc0; + background-color: #007ef5; +} +.mblToggleButton.mblToggleButtonChecked::after { + position: absolute; + content: ""; + top: 7.5px; + left: 7px; + width: 5px; + height: 10px; + border-color: #000000; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected { + border-color: #769dc0; + background-color: #0064c2; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected::after { + border-color: #000000; +} +.mblToggleButton:disabled { + cursor: default; + color: grey; + border-color: grey; + background-color: #8fc9ff; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton.less new file mode 100644 index 0000000..bdce40f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToggleButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToggleButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToolBarButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToolBarButton.css new file mode 100644 index 0000000..c02a12e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToolBarButton.css @@ -0,0 +1,32 @@ +/* dojox.mobile.ToolBarButton */ +.mblToolBarButton { + float: left; + position: relative; + overflow: hidden; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: 8px; + height: 30px; + border: 1px inset #b5bcc7; + -webkit-border-radius: 2px; + font-size: 14px; + font-family: Helvetica; + font-weight: normal; + text-shadow: none; + color: #131313; + line-height: 30px; + text-align: center; +} +.mblToolBarButton.mblArrowButtonText { + margin: 6px 8px; +} +.mblToolBarButtonIcon { + position: relative; + top: 2px; +} +.mblToolBarButtonSpriteIcon { + position: absolute; +} +.mblToolBarButtonText { + padding: 0px 10px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToolBarButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToolBarButton.less new file mode 100644 index 0000000..3b67bdc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/ToolBarButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToolBarButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip-compat.css new file mode 100644 index 0000000..a028ad7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip-compat.css @@ -0,0 +1,47 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; + background-image: none; +} +.mblTooltipBefore .mblTooltipArrow { + *right: 0; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipArrow { + *bottom: 0px; /* IE 7 quirks */ +} +.mblTooltipBefore .mblTooltipInnerArrow { + *right: -1px; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipInnerArrow { + *bottom: -1px; /* IE 7 quirks */ +} +.mblTooltipBefore .mblTooltipInnerArrow { + border-right-color: #5cb0ff; +} +.mblTooltipAfter .mblTooltipInnerArrow { + border-left-color: #5cb0ff; +} +.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #5cb0ff; +} +.mblTooltipBelow .mblTooltipInnerArrow { + border-top-color: #5cb0ff; +} +.mblTooltip .mblHeading { + *padding: 0 9px 15px; + *border-top: 1px solid #5cb0ff; + *border-bottom: 1px solid #5cb0ff; + *width: auto; + *height: auto; + *overflow: visible; + *line-height: normal; +} +.dj_ie9 .mblTooltip .mblHeading { + width: auto; +} +.mblTooltip .mblHeading .mblToolBarButton { + *margin: auto 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip.css new file mode 100644 index 0000000..2269de4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip.css @@ -0,0 +1,142 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + position: absolute; + z-index: 2000; + display: block; + margin: 0; + padding: 8px; + border: #769dc0 1px solid; + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); + -webkit-border-radius: 5px; + opacity: .97; +} +.mblTooltipBubble { + overflow: visible; + padding: 3px; + background-color: #5cb0ff; + background-image: none; +} +.mblTooltipBubble.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #5cb0ff; +} +.mblTooltipBubble.mblTooltipBelow .mblTooltipInnerArrow { + border-top-color: #5cb0ff; +} +.mblTooltipBubble.mblTooltipAfter .mblTooltipInnerArrow { + border-left-color: #5cb0ff; +} +.mblTooltipBubble.mblTooltipBefore .mblTooltipInnerArrow { + border-right-color: #5cb0ff; +} +.mblTooltip.mblTooltipAfter { + margin-left: -11px; +} +.mblTooltip.mblTooltipBefore { + margin-left: 11px; +} +.mblTooltip.mblTooltipAbove { + margin-top: 11px; +} +.mblTooltip.mblTooltipBelow { + margin-top: -11px; +} +.mblTooltipAnchor { + position: absolute; + width: 1px; + height: 1px; + background-color: transparent; + line-height: 0; + font-size: 0; +} +.mblTooltipBefore .mblTooltipAnchor { + left: -1px; +} +.mblTooltipAfter .mblTooltipAnchor { + right: -1px; +} +.mblTooltipAbove .mblTooltipAnchor { + top: -1px; +} +.mblTooltipBelow .mblTooltipAnchor { + bottom: -1px; +} +.mblTooltipArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 11px solid transparent; +} +.mblTooltipBefore .mblTooltipArrow { + left: auto; + right: 1px; + top: 0; + bottom: auto; + border-left-width: 0; + border-right-color: #769dc0; +} +.mblTooltipAfter .mblTooltipArrow { + left: 1px; + right: auto; + top: 0; + bottom: auto; + border-right-width: 0; + border-left-color: #769dc0; +} +.mblTooltipAbove .mblTooltipArrow { + top: auto; + bottom: 1px; + left: auto; + right: auto; + border-top-width: 0; + border-bottom-color: #769dc0; +} +.mblTooltipBelow .mblTooltipArrow { + top: 1px; + bottom: auto; + left: auto; + right: auto; + border-bottom-width: 0; + border-top-color: #769dc0; +} +.mblTooltipInnerArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 10px solid transparent; +} +.mblTooltipBefore .mblTooltipInnerArrow { + right: 0; + top: 0; + border-left-width: 0; + border-right-color: #deefff; +} +.mblTooltipAfter .mblTooltipInnerArrow { + left: 0; + top: 0; + border-right-width: 0; + border-left-color: #deefff; +} +.mblTooltipAbove .mblTooltipInnerArrow { + bottom: 0; + left: 0; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.mblTooltipBelow .mblTooltipInnerArrow { + top: 0; + left: 0; + border-bottom-width: 0; + border-top-color: #aed8ff; +} +.mblTooltipHidden, .mblTooltipHidden * { + visibility: hidden !important; +} +.mblTooltip .mblHeading { + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + background-color: transparent; + background-image: none; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip.less new file mode 100644 index 0000000..60af6d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/Tooltip.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Tooltip.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/View.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/View.css new file mode 100644 index 0000000..1600cde --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/View.css @@ -0,0 +1,24 @@ +@import url("../common/transitions/slide.css"); + +@import url("../common/transitions/flip.css"); + +@import url("../common/transitions/fade.css"); +/* dojox.mobile.View */ +.mblView { + position: relative; + top: 0px; + left: 0px; + width: 100%; + color: #131313; +} +.mblView.mblIn { + position: absolute; +} +.mblFixedHeaderBar { + z-index: 1; +} +.mblFixedBottomBar { + position: absolute !important; + width: 100%; + z-index: 1; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/View.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/View.less new file mode 100644 index 0000000..910651f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/View.less @@ -0,0 +1,6 @@ +@import url("../common/transitions/slide.css"); +@import url("../common/transitions/flip.css"); +@import url("../common/transitions/fade.css"); + +@import "variables.less"; +@import "../common/View.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/base-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/base-compat.css new file mode 100644 index 0000000..9c9c207 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/base-compat.css @@ -0,0 +1,8 @@ +@import url("common-compat.css"); +@import url("Heading-compat.css"); +@import url("RoundRect-compat.css"); +@import url("RoundRectList-compat.css"); +@import url("EdgeToEdgeCategory-compat.css"); +@import url("ListItem-compat.css"); +@import url("Switch-compat.css"); +@import url("ProgressIndicator-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/base.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/base.css new file mode 100644 index 0000000..2409467 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/base.css @@ -0,0 +1,12 @@ +@import url("common.css"); +@import url("Heading.css"); +@import url("View.css"); +@import url("ToolBarButton.css"); +@import url("RoundRect.css"); +@import url("EdgeToEdgeCategory.css"); +@import url("RoundRectCategory.css"); +@import url("RoundRectList.css"); +@import url("EdgeToEdgeList.css"); +@import url("ListItem.css"); +@import url("Switch.css"); +@import url("ProgressIndicator.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common-compat.css new file mode 100644 index 0000000..963af00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common-compat.css @@ -0,0 +1,8 @@ +/* Button Colors */ +.mblColorBlue { + background-image: url(compat/ui-widget-bg.png); +} +/* Default Button Colors */ +.mblColorDefault { + background-image: url(compat/ui-widget-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common.css new file mode 100644 index 0000000..8c097ff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common.css @@ -0,0 +1,31 @@ +html.mobile, .mobile body { + width: 100%; + margin: 0px; + padding: 0px; +} +.mobile body { + overflow-x: hidden; + -webkit-text-size-adjust: none; + background-color: #eff1f3; + font-family: Helvetica; + font-size: 14px; +} +/* Button Colors */ +.mblColorBlue { + background-color: #366EDF; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +/* Default Button Colors */ +.mblColorDefault { + background-color: #5cb0ff; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #ffffff), color-stop(3.3333333333333335%, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +.mblColorDefault.mblDomButton { + background-color: #5cb0ff; +} +.mblColorDefaultSel { + background-color: #0064c2; +} +.mblColorDefaultSel.mblDomButton { + background-color: #0064c2; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common.less new file mode 100644 index 0000000..4e57a5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/common.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/common.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/arrow-button-head.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/arrow-button-head.png new file mode 100644 index 0000000..12dad4e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/arrow-button-head.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/heading-bg.png new file mode 100644 index 0000000..22328a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/slider-h-bar-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/slider-h-bar-bg.png new file mode 100644 index 0000000..65510ba Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/slider-h-bar-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/ui-widget-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/ui-widget-bg.png new file mode 100644 index 0000000..cb787cb Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/compat/ui-widget-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/custom-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/custom-compat.css new file mode 100644 index 0000000..f5a0140 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/custom-compat.css @@ -0,0 +1,18 @@ +@import url("base-compat.css"); + +/* common styles */ +@import url("../common/domButtons-compat.css"); +@import url("../common/SpinWheel-compat.css"); + +/* widget styles */ +@import url("Button-compat.css"); +@import url("CheckBox-compat.css"); +@import url("ComboBox-compat.css"); +@import url("IconContainer-compat.css"); +@import url("Opener-compat.css"); +@import url("RadioButton-compat.css"); +@import url("Slider-compat.css"); +@import url("TabBar-compat.css"); +@import url("TextArea-compat.css"); +@import url("TextBox-compat.css"); +@import url("ToggleButton-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/custom.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/custom.css new file mode 100644 index 0000000..a50e0ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/custom.css @@ -0,0 +1,22 @@ +@import url("base.css"); + +/* common styles */ +@import url("../common/domButtons.css"); +@import url("../common/FixedSplitter.css"); +@import url("../common/SpinWheel.css"); +@import url("../common/transitions.css"); + +/* widget styles */ +@import url("Button.css"); +@import url("Carousel.css"); +@import url("CheckBox.css"); +@import url("ComboBox.css"); +@import url("IconContainer.css"); +@import url("Opener.css"); +@import url("PageIndicator.css"); +@import url("RadioButton.css"); +@import url("Slider.css"); +@import url("TabBar.css"); +@import url("TextArea.css"); +@import url("TextBox.css"); +@import url("ToggleButton.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay-large.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay-large.png new file mode 100644 index 0000000..dfac370 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay-large.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay-small.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay-small.png new file mode 100644 index 0000000..b6836d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay-small.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay.png new file mode 100644 index 0000000..b16efec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/images/thumb-overlay.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/variables.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/variables.less new file mode 100644 index 0000000..9c22efc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/custom/variables.less @@ -0,0 +1,921 @@ +//---------------------------------------------------------------- +// 1. Variables for quick setting +//---------------------------------------------------------------- + +// Default state variables +@theme-default-margin: 8px; +@theme-default-padding: 8px; +@theme-default-font-size: 14px; +@theme-default-font-family: Helvetica; +@theme-default-font-weight: normal; +@theme-default-text-shadow: none; +@theme-default-color: #131313; // numerical color value +@theme-default-border-color: #B5BCC7; // numerical color value +@theme-default-border-radius: 5px; +@theme-default-background-color: lighten(@theme-default-border-color, 20%); + +// Highlighting state variables +@theme-highlight-font-size: 18px; +@theme-highlight-font-family: @theme-default-font-family; +@theme-highlight-font-weight: bold; +@theme-highlight-text-shadow: rgba(0,0,0,0.2) 0px 1px 2px; +@theme-highlight-color: #000000; // numerical color value +@theme-highlight-border-color: #769DC0; // numerical color value +@theme-highlight-background-color: #5CB0FF; // numerical color value + +//---------------------------------------------------------------- +// 2. Variables for typical style setting +//---------------------------------------------------------------- + +// Color +@theme-heading-color: @theme-default-color; +@theme-heading-border-color: @theme-highlight-border-color; +@theme-heading-background-color: @theme-highlight-background-color; +@theme-dom-button-background-color: @theme-highlight-background-color; +@theme-tabbar-color: @theme-default-color; +@theme-round-rect-border-color: @theme-default-border-color; +@theme-round-rect-background-color: #FFFFFF; +@theme-round-rect-box-shadow: 5px 5px 5px @theme-round-rect-border-color; +@theme-category-color: @theme-highlight-color; +@theme-list-item-color: @theme-default-color; +@theme-list-item-border-color: @theme-default-border-color; +@theme-list-item-background-color: #FFFFFF; +@theme-ui-widget-color: @theme-default-color; +@theme-ui-widget-selected-color: @theme-highlight-color; +@theme-ui-widget-border-color: @theme-default-border-color; +@theme-ui-widget-selected-border-color: @theme-highlight-border-color; +@theme-ui-widget-background-color: @theme-highlight-background-color; +@theme-ui-widget-selected-background-color: darken(@theme-ui-widget-background-color, 30%); +@theme-ui-widget-checked-background-color: darken(@theme-ui-widget-background-color, 20%); +@theme-ui-widget-disabled-background-color: lighten(@theme-ui-widget-background-color, 10%); + +// Font +@theme-heading-font-size: @theme-highlight-font-size; +@theme-heading-font-family: @theme-highlight-font-family; +@theme-heading-font-weight: @theme-default-font-weight; +@theme-heading-text-shadow: @theme-highlight-text-shadow; +@theme-tabbar-font-size: @theme-default-font-size - 3; +@theme-tabbar-font-family: @theme-default-font-family; +@theme-tabbar-font-weight: @theme-default-font-weight; +@theme-category-font-size: @theme-highlight-font-size; +@theme-category-font-family: @theme-highlight-font-family; +@theme-category-font-weight: @theme-default-font-weight; +@theme-category-text-shadow: @theme-highlight-text-shadow; +@theme-list-item-font-size: @theme-highlight-font-size; +@theme-list-item-font-family: @theme-default-font-family; +@theme-list-item-font-weight: @theme-default-font-weight; +@theme-list-item-text-shadow: none; +@theme-ui-widget-font-size: @theme-default-font-size; +@theme-ui-widget-font-family: @theme-default-font-family; +@theme-ui-widget-font-weight: @theme-default-font-weight; +@theme-ui-widget-text-shadow: none; + +// Size +@theme-heading-height: 40px; +@theme-tabbar-height: 50px; +@theme-category-height: 30px; +@theme-list-item-height: 50px; +@theme-icon-item-height: 65px; +@theme-icon-item-width: 65px; +@theme-ui-widget-height: 30px; +@theme-ui-widget-width: 90px; + +@theme-ui-widget-border-radius: 2px; // square style +//@theme-ui-widget-border-radius: @theme-default-border-radius; // round style +//@theme-ui-widget-border-radius: @theme-ui-widget-height * 0.5; // oval style + +// background-image gradation +._background-image-gradient-mask-heading () { + @delta: 1% / @theme-heading-height * 100; + // claro gradation + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(255, 255, 255, 1)), color-stop(@delta * 1, rgba(255, 255, 255, 1)), color-stop(@delta * 1, rgba(255, 255, 255, 0.14)), color-stop(@delta * 2, rgba(255, 255, 255, 0.14)), color-stop(@delta * 2, rgba(255, 255, 255, 0.52)), color-stop(@delta * 3, rgba(255, 255, 255, 0.52)), color-stop(@delta * 3, rgba(255, 255, 255, 0.68)), color-stop(@delta * 4, rgba(255, 255, 255, 0.68)), color-stop(1, rgba(255, 255, 255, 0))); +} +._background-image-gradient-mask-ui-widget () { + @delta: 1% / @theme-ui-widget-height * 100; + // claro gradation + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(255, 255, 255, 1)), color-stop(@delta * 1, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} +._background-image-gradient-mask-ui-widget-r () { // for .mblArrowButtonHead-styles + @delta: 1% / @theme-ui-widget-height * 100; + // claro gradation + background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0, rgba(255, 255, 255, 1)), color-stop(@delta * 1, rgba(255, 255, 255, 0.1)), color-stop(0.5, rgba(255, 255, 255, 0.6)), color-stop(1, rgba(255, 255, 255, 0.3))); +} + +// dojox.mobile fixed variables +@mbl-dom-button-size: 29px; +@mbl-switch-height: 27px; + +// Application's customizable variables +@appl-list-item-icon-size: 29px; // size of ListItemIcon + +//---------------------------------------------------------------- +// 3. Variables for dojox.mobile Widgets +//---------------------------------------------------------------- + +//---------------------------------------------------------------- +// common.less +//---------------------------------------------------------------- +// .mobile body +.mobile-body-styles () { + background-color: @theme-default-background-color; + font-family: @theme-default-font-family; + font-size: @theme-default-font-size; +} +// .mblView +.mblView-styles () { + color: @theme-default-color; +} +// .mblColorBlue +.mblColorBlue-styles () { + background-color: #366EDF; + ._background-image-gradient-mask-ui-widget; +} +// .mblColorDefault +.mblColorDefault-styles () { + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + &.mblDomButton { + background-color: @theme-dom-button-background-color; + } +} +// .mblColorDefaultSel +.mblColorDefaultSel-styles () { + background-color: @theme-ui-widget-selected-background-color; + &.mblDomButton { + background-color: @theme-ui-widget-selected-background-color; + } +} + +//---------------------------------------------------------------- +// Heading.less +//---------------------------------------------------------------- +@_heading-inner-margin: (@theme-heading-height - @theme-ui-widget-height) * 0.5; +.mblHeading-styles () { + padding: 0; + height: @theme-heading-height; + background-color: @theme-heading-background-color; + ._background-image-gradient-mask-heading(); + border-bottom: 1px solid @theme-heading-border-color; + color: @theme-heading-color; + font-size: @theme-heading-font-size; + font-family: @theme-heading-font-family; + font-weight: @theme-heading-font-weight; + text-shadow: @theme-heading-text-shadow; + text-align: center; + line-height: @theme-heading-height + 2; +} +.mblArrowButton-styles () { + height: @theme-ui-widget-height; + margin: 0px @theme-default-margin; +} +.mblArrowButtonHead-styles () { + top: @_heading-inner-margin; + left: @_heading-inner-margin + @theme-ui-widget-height * 0.4; // = 0.5 * 0.9 + width: @theme-ui-widget-height * 0.7; + height: @theme-ui-widget-height * 0.7; + border: 1px solid @theme-ui-widget-border-color; + -webkit-transform-origin: left top; + -webkit-transform: scale(0.9,0.99) rotate(45deg); + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget-r; +} +.mblArrowButtonHeadChrome-styles () { + border-style: inset; +} +.mblArrowButtonBody-styles () { + top: @_heading-inner-margin; + left: @_heading-inner-margin + @theme-ui-widget-height * 0.4; + padding: 0px 10px 0px 3px; + height: @theme-ui-widget-height; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: @theme-ui-widget-border-color; + font-size: @theme-ui-widget-font-size; + font-family: @theme-ui-widget-font-family; + font-weight: @theme-ui-widget-font-weight; + text-shadow: @theme-ui-widget-text-shadow; + color: @theme-ui-widget-color; + line-height: @theme-ui-widget-height; + -webkit-border-top-right-radius: @theme-ui-widget-border-radius; + -webkit-border-bottom-right-radius: @theme-ui-widget-border-radius; + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; +} +.mblArrowButtonSelected-styles () { + background-color: @theme-ui-widget-selected-background-color; +} +.mblArrowButtonHeadSelected-styles () { +} +.mblArrowButtonBodySelected-styles () { +} + +//---------------------------------------------------------------- +// ToolBarButton.less +//---------------------------------------------------------------- +.mblToolBarButton-styles () { + margin: @theme-default-margin; + height: @theme-ui-widget-height; + border: 1px inset @theme-ui-widget-border-color; + -webkit-border-radius: @theme-ui-widget-border-radius; + font-size: @theme-ui-widget-font-size; + font-family: @theme-ui-widget-font-family; + font-weight: @theme-ui-widget-font-weight; + text-shadow: @theme-ui-widget-text-shadow; + color: @theme-ui-widget-color; + line-height: @theme-ui-widget-height; + text-align: center; + &.mblArrowButtonText { + margin: ((@theme-heading-height + 2 - @theme-ui-widget-height) * 0.5) @theme-default-margin; + } +} +.mblToolBarButtonDomButton-styles () { +} +.mblToolBarButtonIcon-styles () { + top: 2px; +} + +//---------------------------------------------------------------- +// RoundRect.less +//---------------------------------------------------------------- +.mblRoundRect-styles () { + margin: @theme-default-margin @theme-default-margin (@theme-default-margin * 1.5); + padding: @theme-default-padding; + border: 1px solid @theme-round-rect-border-color; + -webkit-border-radius: @theme-default-border-radius; + background-color: @theme-round-rect-background-color; + font-size: @theme-list-item-font-size; + font-family: @theme-list-item-font-family; + font-weight: @theme-list-item-font-weight; + text-shadow: @theme-list-item-text-shadow; +} +.mblRoundRectShadowBox-styles () { + -webkit-box-shadow: @theme-round-rect-box-shadow; +} + +//---------------------------------------------------------------- +// EdgeToEdgeCategory.less +//---------------------------------------------------------------- +.mblEdgeToEdgeCategory-styles () { + margin: 0; + padding: 0 @theme-default-padding; + height: @theme-category-height; + border-bottom: 1px solid @theme-default-border-color; + background-color: @theme-highlight-background-color; + ._background-image-gradient-mask-heading(); + font-size: @theme-category-font-size; + font-family: @theme-category-font-family; + font-weight: @theme-category-font-weight; + text-shadow: @theme-category-text-shadow; + color: @theme-category-color; + line-height: @theme-category-height + 2; +} + +//---------------------------------------------------------------- +// RoundRectCategory.less +//---------------------------------------------------------------- +.mblRoundRectCategory-styles () { + margin: 0; + padding: @theme-default-margin @theme-default-margin 0; + font-size: @theme-category-font-size; + font-family: @theme-category-font-family; + font-weight: @theme-category-font-weight; + text-shadow: @theme-category-text-shadow; + color: @theme-category-color; + line-height: @theme-category-height; +} + +//---------------------------------------------------------------- +// RoundRectList.less +//---------------------------------------------------------------- +.mblRoundRectList-styles () { + margin: @theme-default-margin @theme-default-margin (@theme-default-margin * 1.5); + padding: 0; + border: 1px solid @theme-default-border-color; + -webkit-border-radius: @theme-default-border-radius; + background-color: @theme-list-item-background-color; + -webkit-box-shadow: @theme-round-rect-box-shadow; +} +.mblRoundRectList-withCategory-styles () { +} +.mblRoundRectList-FirstListItem-styles () { + -webkit-border-top-left-radius: @theme-default-border-radius; + -webkit-border-top-right-radius: @theme-default-border-radius; +} +.mblRoundRectList-withCategory-FirstListItem-styles () { +} +.mblRoundRectList-LastListItem-styles () { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: @theme-default-border-radius; + -webkit-border-bottom-right-radius: @theme-default-border-radius; +} + +//---------------------------------------------------------------- +// EdgeToEdgeList.less +//---------------------------------------------------------------- +.mblEdgeToEdgeList-styles () { + margin: 0; + padding: 0; + background-color: @theme-list-item-background-color; +} +.mblEdgeToEdgeList-LastListItem-styles () { + border-bottom-color: @theme-list-item-border-color; +} + +//---------------------------------------------------------------- +// ListItem.less +//---------------------------------------------------------------- +.mblListItem-styles () { + padding: 0 0 0 @theme-default-margin; + height: @theme-list-item-height; + border-bottom: 1px solid @theme-list-item-border-color; + font-size: @theme-list-item-font-size; + font-family: @theme-list-item-font-family; + font-weight: @theme-list-item-font-weight; + text-shadow: @theme-list-item-text-shadow; + color: @theme-list-item-color; + line-height: @theme-list-item-height; +} +.mblListItem-mblVariableHeight-styles () { + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem-mblListItemAnchor-styles () { + background-position: 9px 7px; + text-decoration: none; + padding-right: 7px; +} +.mblItemSelected-styles () { + background-color: @theme-highlight-background-color; + ._background-image-gradient-mask-ui-widget; +} +.mblItemSelected-mblListItemAnchor-styles () { + color: @theme-highlight-color; +} +.mblItemSelected-mblDomButton-Div-styles () { + border-color: white; +} +.mblItemSelected-mblListItemSubText-styles () { +} +.mblListItemTextBoxSelected-styles () { + background-color: @theme-highlight-background-color; +} +.mblListItemChecked-styles () { + color: @theme-highlight-color; +} +.mblListItemIcon-styles () { + margin-top: (@theme-list-item-height - @appl-list-item-icon-size) * 0.5; + margin-right: 11px; +} +.mblListItemSpriteIcon-styles () { + margin-top: (@theme-list-item-height - @appl-list-item-icon-size) * 0.5; + margin-left: 8px; +} +.mblListItemRightIcon-styles () { + margin-top: (@theme-list-item-height - @appl-list-item-icon-size) * 0.5; +} +.mblListItemRightText-styles () { + color: @theme-default-color; + margin: ((@theme-list-item-height - (@theme-list-item-font-size + 4)) * 0.5) 4px 0 0; +} +.mblListItemTextBox-styles () { +} +.mblListItemAnchorNoIcon-mblListItemTextBox-styles () { +} +.mblListItemSubText-styles () { +} + +//---------------------------------------------------------------- +// Switch.less +//---------------------------------------------------------------- +.mblItemSwitch-styles () { + top: (@theme-list-item-height - @mbl-switch-height + 1) * 0.5; +} +.mblSwitchBg-styles () { + border-color: @theme-ui-widget-border-color; + -webkit-border-radius: @theme-ui-widget-border-radius; + ._background-image-gradient-mask-ui-widget; +} +.mblSwitchBgLeft-styles () { + background-color: @theme-ui-widget-checked-background-color; + color: @theme-ui-widget-color; +} +.mblSwitchBgRight-styles () { + background-color: @theme-ui-widget-disabled-background-color; +} +.mblSwitchKnob-styles () { + border-color: darken(@theme-ui-widget-border-color, 20%); + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: @theme-ui-widget-border-radius; +} + +//---------------------------------------------------------------- +// Button.less +//---------------------------------------------------------------- +.mblButton-styles () { + padding: 0 @theme-default-padding; + height: @theme-ui-widget-height; + border: 1px outset @theme-ui-widget-border-color; + color: @theme-ui-widget-color; + font-size: @theme-ui-widget-font-size; + font-family: @theme-ui-widget-font-family; + font-weight: @theme-ui-widget-font-weight; + line-height: @theme-ui-widget-height; + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: @theme-ui-widget-border-radius; +} +.mblButton-mblBlueButton-styles () { + color: @theme-ui-widget-color; + background-color: #0000FF; +} +.mblButton-mblBlueButtonSelected-styles () { + color: @theme-ui-widget-selected-color; + border-color: @theme-ui-widget-selected-border-color; + background-color: darken(#0000FF, 30%); +} +.mblButton-mblRedButton-styles () { + color: @theme-ui-widget-color; + background-color: #FF0000; +} +.mblButton-mblRedButtonSelected-styles () { + color: @theme-ui-widget-selected-color; + border-color: @theme-ui-widget-selected-border-color; + background-color: darken(#FF0000, 30%); +} +.mblButtonSelected-styles () { + color: @theme-ui-widget-selected-color; + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-selected-background-color; +} +.mblButtonDisabled-styles () { + color: grey; + border-color: grey; + background-color: @theme-ui-widget-disabled-background-color; +} + +//---------------------------------------------------------------- +// CheckBox.less +//---------------------------------------------------------------- +.mblCheckBox-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + font-size: @theme-highlight-font-size; + border: 1px outset @theme-ui-widget-border-color; + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: @theme-ui-widget-border-radius; + -webkit-transform: translateY(0.45em); +} +.mblCheckBoxSelected-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-selected-background-color; +} +.mblCheckBoxChecked-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-checked-background-color; +} +.mblCheckBoxChecked-after-styles () { + content: ""; + width: 0.3em; + height: 0.6em; + position: absolute; + top: 0; + left: 0.3em; + border-color: @theme-ui-widget-selected-color; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked-mblCheckBoxSelected-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-selected-background-color; +} +.mblCheckBoxChecked-mblCheckBoxSelected-after-styles () { + border-color: @theme-ui-widget-selected-color; +} + +//---------------------------------------------------------------- +// ComboBox.less +//---------------------------------------------------------------- +.dijitPopup-styles () { + -webkit-box-shadow: 0px 0px 50px black; + -webkit-border-radius: @theme-default-border-radius; +} +.mblComboBoxMenu-styles () { + border: 1px solid black; + background-color: @theme-default-background-color; + -webkit-border-radius: @theme-default-border-radius; +} +.mblComboBoxMenuItem-styles () { + text-align: left; + padding: .1em .2em; + color: @theme-default-color; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: @theme-default-background-color; +} +.mblComboBoxMenuItemSelected-styles () { + color: @theme-highlight-color; + background-color: @theme-highlight-background-color; + ._background-image-gradient-mask-ui-widget; +} +.mblComboBoxMenuPreviousButton-styles () { + font-style: italic; + overflow: hidden; +} + +//---------------------------------------------------------------- +// IconContainer.less +//---------------------------------------------------------------- +.mblIconContainer-styles () { + margin: @theme-default-margin 0 @theme-default-margin @theme-default-margin; + padding: @theme-default-padding 0 @theme-default-padding; + background-color: @theme-default-background-color; +} + +//---------------------------------------------------------------- +// IconItem.less +//---------------------------------------------------------------- +.mblIconItemTerminator-styles () { + height: @theme-default-margin; +} +.mblIconItemSub-styles () { + margin-left: -@theme-default-margin; + background-color: white; + color: @theme-default-color; +} +.mblIconArea-styles () { + height: @theme-icon-item-height + @theme-default-font-size + @theme-default-margin; + width: @theme-icon-item-width + @theme-default-margin; + text-align: center; + font-family: @theme-default-font-family; + font-weight: @theme-default-font-weight; + font-size: @theme-default-font-size; +} +.mblContent-styles () { + padding-bottom: @theme-default-margin; +} +.mblIconContentHeading-styles () { + margin-top: 0px; + padding-left: @mbl-dom-button-size + @theme-default-margin; + height: @mbl-dom-button-size - 4; + border-top: 1px solid lighten(@theme-heading-border-color, 30%); + border-bottom: 1px solid @theme-heading-border-color; + background-color: @theme-heading-background-color; + ._background-image-gradient-mask-heading(); + color: @theme-heading-color; + font-size: @theme-default-font-size; + font-family: @theme-heading-font-family; + font-weight: @theme-heading-font-weight; + text-shadow: @theme-heading-text-shadow; + line-height: @mbl-dom-button-size - 3; +} + +//---------------------------------------------------------------- +// RadioButton.less +//---------------------------------------------------------------- +.mblRadioButton-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + font-size: @theme-highlight-font-size; + border: 1px outset @theme-ui-widget-border-color; + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: 0.5em; + -webkit-transform: translateY(0.45em); +} +.mblRadioButtonChecked-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-checked-background-color; +} +.mblRadioButtonChecked-after-styles () { + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: @theme-ui-widget-selected-color; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked-Selected-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-selected-background-color; +} +.mblRadioButtonChecked-Selected-after-styles () { + border-color: @theme-ui-widget-selected-color; +} + +//---------------------------------------------------------------- +// Slider.less +//---------------------------------------------------------------- +.mblSlider-styles () { + margin: 15px; /* 1/2 handle width for hanging off the ends of the bar */ + border: 1px outset @theme-ui-widget-border-color; + background-color: @theme-ui-widget-disabled-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: @theme-ui-widget-border-radius; +} +.mblSliderProgressBar-styles () { + -webkit-border-radius: @theme-ui-widget-border-radius; + background-color: @theme-ui-widget-selected-background-color; + ._background-image-gradient-mask-ui-widget; +} +.mblSliderHandle-styles () { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: 1px outset @theme-ui-widget-border-color; + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: @theme-ui-widget-border-radius; +} + +//---------------------------------------------------------------- +// TabBar.less +//---------------------------------------------------------------- +.mblTabBar-styles () { + margin: 0; + padding: 0; + height: @theme-tabbar-height; + background-color: @theme-heading-background-color; + ._background-image-gradient-mask-ui-widget; + border-bottom: 1px solid @theme-heading-border-color; + color: @theme-heading-color; + text-align: center; +} +.mblTabBar-TabBarButton-styles () { + padding: ((@theme-tabbar-height - @mbl-dom-button-size - @theme-tabbar-font-size) * 0.5) 0; +} +.mblTabBar-TabBarButton-Selected-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-selected-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: @theme-ui-widget-border-radius; +} +.mblTabBarButtonDiv-styles () { + height: @mbl-dom-button-size; + width: @mbl-dom-button-size; +} +.mblTabBarButtonIcon-styles () { + left: 0; + top: 0; +} +.mblTabBarButtonTextBox-styles () { + color: @theme-tabbar-color; + font-family: @theme-tabbar-font-family; + font-size: @theme-tabbar-font-size; + font-weight: @theme-tabbar-font-weight; +} +.mblTabBarNoIcons-TabBarButtonTextBox-styles () { + line-height: @theme-tabbar-height - @theme-tabbar-font-size; + font-size: @theme-tabbar-font-size + 6; +} +.mblTabButton-styles () { + width: @theme-ui-widget-width; + height: @theme-ui-widget-height; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: @theme-default-border-color; + border-right-color: @theme-ui-widget-border-color; + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + font-family: @theme-default-font-family; + font-size: @theme-default-font-size; + font-weight: @theme-default-font-weight; + color: @theme-default-color; + text-align: center; + line-height: @theme-ui-widget-height; +} +.mblTabButton-TabBarButtonAnchor-styles () { + height: @theme-ui-widget-height; +} +.mblTabBarTop-TabButton-TabBarButtonDiv-styles () { + display: none; +} +.mblTabBarHead-TabButton-TabBarButtonDiv-styles () { +} +.mblTabButton-FirstTabButtom-styles () { + -webkit-border-top-left-radius: @theme-ui-widget-border-radius; + -webkit-border-bottom-left-radius: @theme-ui-widget-border-radius; + border-left-width: 1px; +} +.mblTabButton-LastTabButton-styles () { + -webkit-border-top-right-radius: @theme-ui-widget-border-radius; + -webkit-border-bottom-right-radius: @theme-ui-widget-border-radius; + border-right-color: @theme-ui-widget-border-color; +} +.mblTabButton-img-styles () { +} +.mblTabBarButtonTextBoxSelected-styles () { + color: @theme-ui-widget-selected-color; +} +.mblTabButtonSelected-styles () { + background-color: @theme-ui-widget-selected-background-color; +} +.mblTabButtonHighlighted-styles () { + background-color: @theme-ui-widget-checked-background-color; +} +.mblTabButtonImgDiv-styles () { + display: none; +} +.mblTabPanelHeader-styles () { + margin: 0; + padding: 0; + height: @theme-heading-height; + background-color: @theme-heading-background-color; + ._background-image-gradient-mask-heading(); + border-bottom: 1px solid @theme-heading-border-color; + color: @theme-heading-color; + font-size: @theme-heading-font-size; + font-family: @theme-heading-font-family; + font-weight: @theme-heading-font-weight; + text-shadow: @theme-heading-text-shadow; + text-align: center; + line-height: @theme-heading-height + 2; +} +.mblTabPanelHeader-TabButton-styles () { + margin-top: (@theme-heading-height - @theme-ui-widget-height - 2) * 0.5; +} +.mblTabPanelHeader-TabButtonSelected-styles () { + background-color: @theme-ui-widget-selected-background-color; +} +.mblTabPanelHeader-TabButtonDomButton-styles () { + width: 43px; +} +.mblTabPanelHeader-TabButtonDomButtonClass-styles () { + left: 8px; +} +.mblTabPanelHeader-DomButton-styles () { +} +.mblTabPanelHeader-inHeading-styles () { +} +.mblTabPanelHeader-TabButton-inHeading-styles () { + margin-top: (@theme-heading-height - @theme-ui-widget-height) * 0.5; +} +.mblTabPanelHeader-TabButton-FirstTabButtom-inHeading-styles () { + -webkit-border-top-left-radius: @theme-ui-widget-border-radius; + -webkit-border-bottom-left-radius: @theme-ui-widget-border-radius; + border-left-width: 1px; +} +.mblTabPanelHeader-TabButton-LastTabButtom-inHeading-styles () { + -webkit-border-top-right-radius: @theme-ui-widget-border-radius; + -webkit-border-bottom-right-radius: @theme-ui-widget-border-radius; +} +.mblTabPanelHeader-TabButtonSelected-inHeading-styles () { +} + +//---------------------------------------------------------------- +// TextArea.less +//---------------------------------------------------------------- +.mblTextArea-styles () { + padding: 4px 1px; + border: @theme-default-border-color 1px inset; + font-family: @theme-default-font-family; + font-size: @theme-default-font-size; + -webkit-border-radius: @theme-default-border-radius; +} +.mblExpandingTextArea-styles () { + margin: 2px; +} + +//---------------------------------------------------------------- +// TextBox.less +//---------------------------------------------------------------- +.mblTextBox-styles () { + height: @theme-ui-widget-height; + border: @theme-default-border-color 1px inset; + font-family: @theme-default-font-family; + font-size: @theme-default-font-size; + -webkit-border-radius: @theme-default-border-radius; +} + +//---------------------------------------------------------------- +// ToggleButton.less +//---------------------------------------------------------------- +.mblToggleButton-styles () { + padding: 0 @theme-default-padding 0 (@theme-default-padding + 15px); + height: @theme-ui-widget-height; + border: 1px outset @theme-ui-widget-border-color; + -webkit-border-radius: @theme-ui-widget-border-radius; + background-color: @theme-ui-widget-background-color; + ._background-image-gradient-mask-ui-widget; + font-family: @theme-ui-widget-font-family; + font-weight: @theme-ui-widget-font-weight; + line-height: @theme-ui-widget-height; + color: @theme-ui-widget-color; + line-height: @theme-ui-widget-height; +} +.mblToggleButtonSelected-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-selected-background-color; +} +.mblToggleButtonChecked-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-checked-background-color; +} +.mblToggleButtonChecked-after-styles () { + content: ""; + top: (@theme-ui-widget-height - 15) * 0.5; + left: 7px; + width: 5px; + height: 10px; + border-color: @theme-ui-widget-selected-color; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButtonCheckedSelected-styles () { + border-color: @theme-ui-widget-selected-border-color; + background-color: @theme-ui-widget-selected-background-color; +} +.mblToggleButtonCheckedSelected-after-styles () { + border-color: @theme-ui-widget-selected-color; +} +.mblToggleButtonDisabled-styles () { + color: grey; + border-color: grey; + background-color: @theme-ui-widget-disabled-background-color; +} + +// Overlay.less +.mblOverlay-styles () { + background-color: @theme-default-background-color; + ._background-image-gradient-mask-ui-widget; +} + +// Tooltip.less +.mblTooltip-styles () { + padding: @theme-default-padding; + border: @theme-heading-border-color 1px solid; + background-color: @theme-heading-background-color; + ._background-image-gradient-mask-ui-widget; + -webkit-border-radius: @theme-default-border-radius; + opacity: .97; +} +.mblTooltipBubble-styles () { + background-color: @theme-heading-background-color; + background-image: none; +} +.mblTooltipInnerArrow-Bubble-Above-styles () { + border-bottom-color: @theme-heading-background-color; +} +.mblTooltipInnerArrow-Bubble-Below-styles () { + border-top-color: @theme-heading-background-color; +} +.mblTooltipInnerArrow-Bubble-After-styles () { + border-left-color: @theme-heading-background-color; +} +.mblTooltipInnerArrow-Bubble-Before-styles () { + border-right-color: @theme-heading-background-color; +} +.mblTooltipArrow-styles () { + border: 11px solid transparent; +} +.mblTooltipArrow-Before-styles () { + border-left-width: 0; + border-right-color: @theme-heading-border-color; +} +.mblTooltipArrow-After-styles () { + border-right-width: 0; + border-left-color: @theme-heading-border-color; +} +.mblTooltipArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: @theme-heading-border-color; +} +.mblTooltipArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: @theme-heading-border-color; +} +.mblTooltipInnerArrow-Before-styles () { + border-left-width: 0; + border-right-color: @theme-heading-background-color * 0.2 + #ffffff * 0.8; +} +.mblTooltipInnerArrow-After-styles () { + border-right-width: 0; + border-left-color: @theme-heading-background-color * 0.2 + #ffffff * 0.8; +} +.mblTooltipInnerArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: @theme-heading-background-color * 0.0 + #ffffff * 1.0; +} +.mblTooltipInnerArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: @theme-heading-background-color * 0.5 + #ffffff * 0.5; +} +.mblTooltip-Heading-styles () { + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + background-color: transparent; + background-image: none; +} +.mblTooltip-Heading-ToolbarButton-styles () { +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button-compat.css new file mode 100644 index 0000000..dccf89b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button-compat.css @@ -0,0 +1,33 @@ +/* dojox.mobile.Button */ +.mblButton { + background-color: #cfcfcf; + background-image: url(compat/button-bg.png); + background-repeat: repeat-x; + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} +.mblButtonSelected { + background-color: #c0c0c0; + background-image: url(compat/button-sel-bg.png); +} +.mblButtonDisabled { + background-image: none; +} +.mblBlueButton { + background-color: #2261dd; + background-image: url(compat/blue-button-bg.png); +} +.mblBlueButtonSelected { + background-color: #4a6c9b; + background-image: url(compat/blue-button-sel-bg.png); +} +.mblRedButton { + background-color: #ee4115; + background-image: url(compat/red-button-bg.png); +} +.mblRedButtonSelected { + background-color: #9b6c4a; + background-image: url(compat/red-button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button.css new file mode 100644 index 0000000..9ed5a9d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button.css @@ -0,0 +1,45 @@ +/* dojox.mobile.Button */ +.mblButton { + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0px 10px; + height: 29px; + border: #9CACC0 1px outset; + -webkit-border-radius: 5px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + color: black; + font-family: Helvetica; + font-size: 13px; + line-height: 29px; +} +.mblButton.mblBlueButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); + color: white; +} +.mblButton.mblBlueButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); + color: white; +} +.mblButton.mblRedButton { + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fa9d58), to(#ee4115), color-stop(0.5, #ff4d25), color-stop(0.5, #ed4d15)); + color: white; +} +.mblButton.mblRedButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#c1a48e), to(#9b6c4a), color-stop(0.5, #a27758), color-stop(0.5, #996947)); + color: white; +} +.mblButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#bfbfbf), color-stop(0.5, #ebebeb), color-stop(0.5, #dedede)); + color: black; +} +.mblButtonDisabled, .mblButton:disabled { + cursor: default; + border-color: grey; + background-image: none; + color: grey; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button.less new file mode 100644 index 0000000..ab3a96c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Button.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Button.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Carousel.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Carousel.css new file mode 100644 index 0000000..a415950 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Carousel.css @@ -0,0 +1,60 @@ +/* dojox.mobile.Carousel */ +.mblCarousel { + overflow: hidden; +} +.mblCarouselBox { + position: relative; + float: left; +} +.mblCarouselImg { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); + vertical-align: bottom; +} +.mblCarouselImgSelected { + border: 1px dashed #C0C0C0; + -webkit-box-shadow: none; +} +.mblCarouselImgHeaderText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselImgFooterText { + color: white; + font: 14px arial, helvetica, clean, sans-serif; +} +.mblCarouselHeaderBar { + background-color: #3A3A3B; + color: #B1B1B1; + font: bold 16px arial, helvetica, clean, sans-serif; + padding: 1px; +} +.mblCarouselBtnContainer { + float: right; +} +.mblCarouselBtn { + height: 18px; + width: 46px; + font: bold 14px arial, helvetica, clean, sans-serif; + color: gray; + padding-top: 0px; + margin: 0px 2px; + border-width: 1px; + /* workaround for android problem */ + +} +.mblCarouselTitle { + margin: 2px 0px 2px 4px; +} +.mblCarouselHeaderBar .mblPageIndicator { + float: right; + width: auto; + padding: 0px 20px; +} +.mblCarouselHeaderBar .mblPageIndicatorContainer { + margin-left: 0px; + margin-right: 0px; +} +.mblCarouselPages { + position: relative; + text-align: center; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Carousel.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Carousel.less new file mode 100644 index 0000000..d717397 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Carousel.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Carousel.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox-compat.css new file mode 100644 index 0000000..99aade2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox-compat.css @@ -0,0 +1,36 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + background-image: url(compat/button-bg.png); + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.45em); + -ms-transform: translateY(0.45em); + transform: translateY(0.45em); +} +.mblCheckBoxSelected { + background-image: url(compat/button-sel-bg.png); +} +.mblCheckBoxChecked, +.mblCheckBox:checked { + background-image: url(compat/blue-button-bg.png); +} +.mblCheckBoxChecked::after, +.mblCheckBox:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mblCheckBoxChecked.mblCheckBoxSelected { + background-image: url(compat/blue-button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox.css new file mode 100644 index 0000000..eb9069c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox.css @@ -0,0 +1,44 @@ +/* dojox.mobile.CheckBox */ +.mblCheckBox { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 5px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + font: inherit; + -webkit-transform: translatey(0.45em); +} +.mblCheckBoxSelected { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#bfbfbf), color-stop(0.5, #ebebeb), color-stop(0.5, #dedede)); +} +.mblCheckBoxChecked, .mblCheckBox:checked { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); +} +.mblCheckBoxChecked::after, .mblCheckBox:checked::after { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.3em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked.mblCheckBoxSelected, .mblCheckBox:checked.mblCheckBoxSelected { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); +} +.mblCheckBoxChecked.mblCheckBoxSelected::after, .mblCheckBox:checked.mblCheckBoxSelected::after { + border-color: #9CACC0; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox.less new file mode 100644 index 0000000..09f93b2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/CheckBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/CheckBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox-compat.css new file mode 100644 index 0000000..09c7b38 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + -moz-box-shadow: 0px 0px 50px black; + -o-box-shadow: 0px 0px 50px black; + -ms-box-shadow: 0px 0px 50px black; + box-shadow: 0px 0px 50px black; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox.css new file mode 100644 index 0000000..259629d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox.css @@ -0,0 +1,44 @@ +/* dojox.mobile.ComboBox */ +.dijitPopup { + margin: 0; + padding: 0; + position: absolute; + border: 0; + background-color: transparent; + -webkit-box-shadow: 0px 0px 50px black; + -webkit-border-radius: 0px; +} +.mblReset { + margin: 0; + padding: 0; + border: 0; + line-height: normal; + font: inherit; + color: inherit; +} +.mblComboBoxMenu { + overflow-y: hidden !important; + position: relative; + overflow: hidden; + border: 1px solid black; + -webkit-border-radius: 0px; + background-color: white; +} +.mblComboBoxMenuItem { + white-space: nowrap; + padding: .1em .2em; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #ffffff; + color: inherit; + text-align: left; +} +.mblComboBoxMenuItemSelected { + background-color: black; + background-image: -webkit-gradient(linear, left top, left bottom, from(#048bf4), to(#005ce5)); + color: white; +} +.mblComboBoxMenuPreviousButton, .mblComboBoxMenuNextButton { + font-style: italic; + overflow: hidden; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox.less new file mode 100644 index 0000000..ab9458c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ComboBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ComboBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory-compat.css new file mode 100644 index 0000000..f6d50e2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory-compat.css @@ -0,0 +1,4 @@ +/* dojox.mobile.EdgeToEdgeCategory */ +.mblEdgeToEdgeCategory { + background-image: url(compat/edge-categ-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory.css new file mode 100644 index 0000000..fc21dd8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory.css @@ -0,0 +1,19 @@ +/* dojox.mobile.EdgeToEdgeCategory */ +.mblEdgeToEdgeCategory { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0px; + padding: 0px 10px; + height: 22px; + border-top: 1px solid #A4B0B9; + border-bottom: 1px solid #979DA3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8f9ea9), to(#b7c0c7)); + font-family: Helvetica; + font-size: 16px; + font-weight: bold; + color: white; + line-height: 22px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory.less new file mode 100644 index 0000000..3bb63da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeList.css new file mode 100644 index 0000000..9864276 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeList.css @@ -0,0 +1,12 @@ +/* dojox.mobile.EdgeToEdgeList */ +.mblEdgeToEdgeList { + position: relative; + /* IE needs this */ + + margin: 0px; + padding: 0px; + background-color: white; +} +.mblEdgeToEdgeList .mblListItem:last-child { + border-bottom-color: #707C84; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeList.less new file mode 100644 index 0000000..227627c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/EdgeToEdgeList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/EdgeToEdgeList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading-compat.css new file mode 100644 index 0000000..bc02fa1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading-compat.css @@ -0,0 +1,24 @@ +/* mbl.widget.Heading */ +.mblHeading { + background-image: url(compat/heading-bg.png); +} +.mblHeadingSpanTitle { + white-space: normal; +} + +/* Heading Arrow Button */ +.mblArrowButtonHead { + position: absolute; + top: 6px; + left: 3px; + width: 19px; + height: 29px; + border-style: none; + background-image: url(compat/arrow-button-head.png); +} +.mblArrowButtonBody { + padding: 0px 10px 0px 4px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 5px; + background-image: url(compat/arrow-button-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading.css new file mode 100644 index 0000000..613cf72 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading.css @@ -0,0 +1,84 @@ +/* dojox.mobile.Heading */ +.mblHeading { + position: relative; + margin: 0px; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + z-index: 1; + padding: 0px; + height: 42px; + background-color: #889BB3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b0bccd), to(#6d84a2), color-stop(0.5, #889bb3), color-stop(0.5, #8195af)); + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + color: white; + font-family: Helvetica; + font-size: 20px; + font-weight: bold; + text-align: center; + line-height: 44px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} +.mblHeading * { + z-index: 2; +} +.mblHeadingDivTitle { + position: absolute; + width: 100%; + display: none; + left: 0px; + z-index: 1; +} +.mblHeadingCenterTitle .mblHeadingDivTitle { + display: block; +} +.mblHeadingCenterTitle .mblHeadingSpanTitle { + display: none; +} +/* Heading Arrow Button */ +.mblArrowButton { + position: relative; + float: left; + height: 42px; +} +.mblArrowButtonHead { + position: absolute; + top: 11px; + left: 5px; + width: 20px; + height: 19px; + border: 1px solid #3A4655; + -webkit-transform: scale(0.7, 1) rotate(45deg); + background-image: -webkit-gradient(linear, left top, right bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); +} +.dj_chrome .mblArrowButtonHead { + border: 1px inset #3A4655; +} +.mblArrowButtonBody { + position: absolute; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + top: 6px; + left: 16px; + padding: 0px 10px 0px 4px; + height: 29px; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: #9CACC0; + font-family: Helvetica; + font-size: 13px; + color: white; + line-height: 29px; + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + background-color: #5877A2; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); +} +.mblArrowButtonSelected .mblArrowButtonHead { + background-image: -webkit-gradient(linear, left top, right bottom, from(#7c87a4), to(#263e6c), color-stop(0.5, #394d77), color-stop(0.5, #243b69)); +} +.mblArrowButtonSelected .mblArrowButtonBody { + background-image: -webkit-gradient(linear, left top, left bottom, from(#7c87a4), to(#263e6c), color-stop(0.5, #394d77), color-stop(0.5, #243b69)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading.less new file mode 100644 index 0000000..cfc8580 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Heading.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Heading.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer-compat.css new file mode 100644 index 0000000..adf6d49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer-compat.css @@ -0,0 +1,11 @@ +@import url("../common/domButtons/DomButtonColorButtons-compat.css"); + +/* dojox.mobile.IconItem */ +.mblIconArea div { + *font-size: 60px; /* IE 7 quirks */ +} + +/* Icon Content Heading */ +.mblIconContentHeading { + background-image: url(compat/icon-content-heading-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer.css new file mode 100644 index 0000000..bb33f89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer.css @@ -0,0 +1,97 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); + +@import url("../common/IconContainer_keyframes.css"); +/* dojox.mobile.IconContainer */ +.mblIconContainer { + margin: 20px 0px 0px 10px; + padding: 0px 0px 40px 0px; +} +/* dojox.mobile.IconItem */ +.mblIconItem { + list-style-type: none; + float: left; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblIconItemTerminator { + list-style-type: none; + clear: both; + height: 20px; +} +.mblIconItemSub { + list-style-type: none; + margin-left: -10px; + background-color: white; +} +.mblIconArea { + margin-bottom: 10px; + height: 78px; + width: 74px; + font-family: Helvetica; + font-size: 12px; + text-align: center; +} +.mblIconArea div { + position: relative; + height: 65px; + line-height: 65px; + text-align: center; +} +.mblIconArea img { + vertical-align: middle; +} +.mblIconItemSpriteIcon { + position: absolute; +} +.mblContent { + clear: both; + padding-bottom: 20px; +} +table.mblClose { + clear: both; + cursor: pointer; +} +.mblVibrate { + position: relative; + -webkit-animation-duration: .5s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-iteration-count: 20; + -webkit-animation-name: mblVibrate; + -webkit-transform: rotate(0deg); +} +.mblCloseContent { + -webkit-animation-duration: .3s; + -webkit-animation-timing-function: ease-in-out; + -webkit-animation-name: mblShrink; + -webkit-transform: scale(0.01); +} +.mblCloseContent.mblShrink0 { + -webkit-animation-name: mblShrink0; +} +.mblCloseContent.mblShrink1 { + -webkit-animation-name: mblShrink1; +} +.mblCloseContent.mblShrink2 { + -webkit-animation-name: mblShrink2; +} +.mblCloseContent.mblShrink3 { + -webkit-animation-name: mblShrink3; +} +/* Icon Content Heading */ +.mblIconContentHeading { + position: relative; + clear: both; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin-top: 0px; + padding-left: 40px; + height: 25px; + border-top: 1px solid #F1F3F4; + border-bottom: 1px solid #717D85; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e0e4e7), to(#b4bec6), color-stop(0.5, #c4ccd2), color-stop(0.5, #bfc8ce)); + font-family: Helvetica; + font-size: 14px; + color: white; + line-height: 26px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer.less new file mode 100644 index 0000000..963eae6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/IconContainer.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonColorButtons.css"); +@import url("../common/IconContainer_keyframes.css"); + +@import "variables.less"; +@import "../common/IconContainer.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem-compat.css new file mode 100644 index 0000000..d153c4b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem-compat.css @@ -0,0 +1,7 @@ +@import url("../common/domButtons/DomButtonGrayArrow-compat.css"); +@import url("../common/domButtons/DomButtonDarkBlueCheck-compat.css"); + +/* mbl.widget.ListItem */ +*html li.mblListItem.mblVariableHeight { /* IE6 hack */ + height: 0; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem.css new file mode 100644 index 0000000..77d88d9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem.css @@ -0,0 +1,82 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); + +@import url("../common/domButtons/DomButtonDarkBlueCheck.css"); +/* dojox.mobile.ListItem */ +.mblListItem { + position: relative; + list-style-type: none; + vertical-align: bottom; + /* To avoid IE6 LI bug */ + + padding: 0px 0px 0px 8px; + height: 43px; + border-bottom: 1px solid #ADAAAD; + font-weight: bold; + color: black; + line-height: 43px; +} +.mblListItem.mblVariableHeight { + height: auto; + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem .mblListItemAnchor { + display: block; + height: 100%; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + background-position: 9px 7px; + text-decoration: none; + padding-right: 7px; +} +.mblListItem .mblListItemAnchor * { + -webkit-tap-highlight-color: rgba(0, 0, 0, 0.2); +} +.mblItemSelected { + background-color: #048BF4; + background-image: -webkit-gradient(linear, left top, left bottom, from(#048bf4), to(#005ce5)); +} +.mblItemSelected .mblListItemAnchor { + color: white; +} +.mblItemSelected .mblDomButton div { + border-color: white; +} +.mblListItemTextBoxSelected { + background-color: #048BF4; +} +.mblListItemChecked { + color: #314E84; +} +.mblListItemIcon { + float: left; + line-height: normal; + margin-top: 7px; + margin-right: 11px; +} +.mblListItemSpriteIcon { + position: absolute; + margin-top: 7px; + margin-left: 8px; +} +.mblListItemRightIcon, .mblListItemRightIcon2 { + position: relative; + float: right; + line-height: normal; + margin-top: 7px; + margin-bottom: -7px; +} +.mblListItemRightText { + position: relative; + float: right; + line-height: normal; + color: #324F85; + margin: 11px 4px 0 0; +} +.mblListItemTextBox { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mblVariableHeight .mblListItemTextBox { + white-space: normal; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem.less new file mode 100644 index 0000000..f9f9d21 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ListItem.less @@ -0,0 +1,5 @@ +@import url("../common/domButtons/DomButtonGrayArrow.css"); +@import url("../common/domButtons/DomButtonDarkBlueCheck.css"); + +@import "variables.less"; +@import "../common/ListItem.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Opener-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Opener-compat.css new file mode 100644 index 0000000..68cb1a8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Opener-compat.css @@ -0,0 +1,3 @@ +/* dojox.mobile.Opener */ +@import url("Overlay-compat.css"); +@import url("Tooltip-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Opener.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Opener.css new file mode 100644 index 0000000..141c72e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Opener.css @@ -0,0 +1,3 @@ +/* dojox.mobile.Opener */ +@import url("Overlay.css"); +@import url("Tooltip.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay-compat.css new file mode 100644 index 0000000..bf8a160 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay-compat.css @@ -0,0 +1,15 @@ +/* dojox.mobile.Overlay */ +.mblOverlay { + *position: absolute; + background-color: #CECECE; + background-image: none; + text-align: center; +} +.dj_gecko .mblOverlay { + text-align: -moz-center; +} +.dj_ie9 .mblOverlay > *, +.dj_ie8 .mblOverlay > * +{ + margin: 0 auto; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay.css new file mode 100644 index 0000000..56c3778 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay.css @@ -0,0 +1,17 @@ +@import url("../common/transitions/coverv.css"); + +@import url("../common/transitions/revealv.css"); +/* dojox.mobile.Overlay */ +.mblOverlay { + position: fixed; + z-index: 2000; + left: 0; + bottom: 0; + margin: 0; + width: 100%; + text-align: -webkit-center; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece)); +} +.mblOverlayHidden *, .mblOverlayHidden { + visibility: hidden !important; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay.less new file mode 100644 index 0000000..e49ea9e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Overlay.less @@ -0,0 +1,5 @@ +@import url("../common/transitions/coverv.css"); +@import url("../common/transitions/revealv.css"); + +@import "variables.less"; +@import "../common/Overlay.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/PageIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/PageIndicator.css new file mode 100644 index 0000000..a175ad6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/PageIndicator.css @@ -0,0 +1,24 @@ +/* dojox.mobile.PageIndicator */ +.mblPageIndicator { + position: relative; + width: 100%; + height: 20px; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblPageIndicatorContainer { + margin-top: 4px; + margin-left: auto; + margin-right: auto; +} +.mblPageIndicatorDot { + margin: 0px 3px; + width: 6px; + height: 6px; + font-size: 1px; + background-color: #949294; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +.mblPageIndicatorDotSelected { + background-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/PageIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/PageIndicator.less new file mode 100644 index 0000000..9bb6c49 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/PageIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/PageIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator-compat.css new file mode 100644 index 0000000..4ee0810 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator-compat.css @@ -0,0 +1,46 @@ +/* Progress Indicator */ +.mblProg { + position: absolute; + top: 0px; + width: 4px; + font-size: 1px; + height: 36px; + overflow: hidden; + background-color: #C0C0C0; +} +.mblProg0 { + left: 0px; +} +.mblProg1 { + left: 8px; +} +.mblProg2 { + left: 16px; +} +.mblProg3 { + left: 24px; +} +.mblProg4 { + left: 32px; +} +.mblProg5 { + left: 40px; +} +.mblProg6 { + left: 48px; +} +.mblProg7 { + left: 56px; +} +.mblProg8 { + left: 64px; +} +.mblProg9 { + left: 72px; +} +.mblProg10 { + left: 80px; +} +.mblProg11 { + left: 80px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator.css new file mode 100644 index 0000000..2340637 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator.css @@ -0,0 +1,58 @@ +/* Progress Indicator */ +.mblProgContainer { + position: absolute; + width: 40px; + height: 40px; + top: 180px; + left: 50%; + margin: -18px 0px 0px -18px; +} +.mblProg { + position: absolute; + left: 2px; + top: 0px; + width: 11px; + font-size: 1px; + height: 4px; + overflow: hidden; + -webkit-transform-origin: 0 2px; + background-color: #C0C0C0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} +.mblProg0 { + -webkit-transform: translate(18px, 10px) rotate(-90.1deg); +} +.mblProg1 { + -webkit-transform: translate(22px, 11px) rotate(-60deg); +} +.mblProg2 { + -webkit-transform: translate(25px, 14px) rotate(-30deg); +} +.mblProg3 { + -webkit-transform: translate(26px, 18px) rotate(0deg); +} +.mblProg4 { + -webkit-transform: translate(25px, 22px) rotate(30deg); +} +.mblProg5 { + -webkit-transform: translate(22px, 25px) rotate(60deg); +} +.mblProg6 { + -webkit-transform: translate(18px, 26px) rotate(90.1deg); +} +.mblProg7 { + -webkit-transform: translate(14px, 25px) rotate(120deg); +} +.mblProg8 { + -webkit-transform: translate(11px, 22px) rotate(150deg); +} +.mblProg9 { + -webkit-transform: translate(10px, 18px) rotate(180deg); +} +.mblProg10 { + -webkit-transform: translate(11px, 14px) rotate(210deg); +} +.mblProg11 { + -webkit-transform: translate(14px, 11px) rotate(240deg); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator.less new file mode 100644 index 0000000..2ab2a2d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ProgressIndicator.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ProgressIndicator.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton-compat.css new file mode 100644 index 0000000..6566cc1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton-compat.css @@ -0,0 +1,33 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + background-image: url(compat/button-bg.png); + -moz-border-radius: 0.5em; + -o-border-radius: 0.5em; + -ms-border-radius: 0.5em; + border-radius: 0.5em; + -moz-appearance: none; + -o-appearance: none; + -ms-appearance: none; + appearance: none; + -o-transform: translateY(0.45em); + -ms-transform: translateY(0.45em); + transform: translateY(0.45em); +} +.mblRadioButtonChecked, +.mblRadioButton:checked { + background-image: url(compat/blue-button-bg.png); +} +.mblRadioButtonChecked::after, +.mblRadioButton:checked::after { + -moz-transform: rotate(45deg); + -o-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mblRadioButtonChecked.mblRadioButtonSelected { + background-image: url(compat/blue-button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton.css new file mode 100644 index 0000000..799f485 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton.css @@ -0,0 +1,41 @@ +/* dojox.mobile.RadioButton */ +.mblRadioButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-appearance: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 0.5em; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + font: inherit; + -webkit-transform: translatey(0.45em); +} +.mblRadioButtonChecked, .mblRadioButton:checked { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); +} +.mblRadioButtonChecked::after, .mblRadioButton:checked::after { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + border-color: white; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked.mblRadioButtonSelected, .mblRadioButton:checked.mblRadioButtonSelected { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); +} +.mblRadioButtonChecked.mblRadioButtonSelected::after, .mblRadioButton:checked.mblRadioButtonSelected::after { + border-color: white; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton.less new file mode 100644 index 0000000..0793ca6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RadioButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RadioButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect-compat.css new file mode 100644 index 0000000..4f16c44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect-compat.css @@ -0,0 +1,64 @@ +/* Round Corner */ +.mblRoundCorner { + background-color: white; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectContainer { + margin: 0px; + padding: 0px; + background-color: white; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRect .mblRoundRectContainer { + padding: 3px 8px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect.css new file mode 100644 index 0000000..071a9da --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect.css @@ -0,0 +1,12 @@ +/* dojox.mobile.RoundRect */ +.mblRoundRect { + margin: 7px 9px 16px 9px; + padding: 8px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background-color: white; +} +.mblRoundRect.mblShadow { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect.less new file mode 100644 index 0000000..efec816 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRect.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRect.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectCategory.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectCategory.css new file mode 100644 index 0000000..0a9b90b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectCategory.css @@ -0,0 +1,12 @@ +/* dojox.mobile.RoundRectCategory */ +.mblRoundRectCategory { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding: 18px 0px 0px 20px; + margin: 0px; + font-family: Helvetica; + font-size: 16px; + color: #4C566C; + text-shadow: #ffffff 0px 1px 0px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectCategory.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectCategory.less new file mode 100644 index 0000000..e9148cc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectCategory.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectCategory.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList-compat.css new file mode 100644 index 0000000..4f16c44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList-compat.css @@ -0,0 +1,64 @@ +/* Round Corner */ +.mblRoundCorner { + background-color: white; + height: 1px; + font-size: 1px; + overflow: hidden; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRectContainer { + margin: 0px; + padding: 0px; + background-color: white; + border-style: solid; + border-color: #ADAAAD; + border-width: 0px 1px; +} +.mblRoundRect .mblRoundRectContainer { + padding: 3px 8px; +} +.mblRoundCorner0T { + height: 0px; +} +.mblRoundCorner1T { + background-color: #ADAAAD; + margin: 0px 5px; +} +.mblRoundCorner2T { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner3T { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4T { + margin: 0px 1px; +} +.mblRoundCorner5T { + margin: 0px 1px; +} + +.mblRoundCorner0B { + height: 0px; +} +.mblRoundCorner1B { + margin: 0px 1px; +} +.mblRoundCorner2B { + margin: 0px 1px; +} +.mblRoundCorner3B { + margin: 0px 1px; + border-width: 0px 2px; +} +.mblRoundCorner4B { + margin: 0px 2px; + border-width: 0px 3px; +} +.mblRoundCorner5B { + background-color: #ADAAAD; + margin: 0px 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList.css new file mode 100644 index 0000000..cf0bea0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList.css @@ -0,0 +1,25 @@ +/* dojox.mobile.RoundRectList */ +.mblRoundRectList { + position: relative; + /* IE needs this */ + + margin: 7px 9px 16px 9px; + padding: 0px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background-color: white; +} +.mblRoundRectList .mblListItem:first-child { + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; +} +.mblRoundRectList .mblListItem:last-child { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList.less new file mode 100644 index 0000000..52e1164 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/RoundRectList.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/RoundRectList.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider-compat.css new file mode 100644 index 0000000..f6987bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider-compat.css @@ -0,0 +1,43 @@ +/* dojox.mobile.Slider */ +.mblSlider { + background-image: url(compat/slider-h-bg.png); + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; + -moz-user-select: none; /* prevent selection */ + -o-user-select: none; + -ms-user-select: none; + user-select: none; + -moz-box-sizing: content-box; /* make width and height consistent with a DIV */ + -o-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; +} +.mblSlider.mblSliderV { + background: #ABABAB; +} +.mblSliderProgressBar { + background-image: url(compat/slider-h-bar-bg.png); + background-repeat: repeat-x; + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; +} +.mblSliderV .mblSliderProgressBar { + background: #0D48A8; +} +.mblSliderHandle { + background-image: url(compat/slider-handle-bg.png); + -moz-border-radius: 10px; + -o-border-radius: 10px; + -ms-border-radius: 10px; + border-radius: 10px; +} +.mblSliderTransition { + -moz-transition-duration: 400ms; + -o-transition-duration: 400ms; + -ms-transition-duration: 400ms; + transition-duration: 400ms; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider.css new file mode 100644 index 0000000..6866098 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider.css @@ -0,0 +1,62 @@ +/* dojox.mobile.Slider */ +.mblSlider { + outline: none; + -webkit-user-select: none; + /* prevent selection */ + + -webkit-box-sizing: content-box; + /* make width and height consistent with a DIV */ + + margin: 15px; + /* 1/2 handle width for hanging off the ends of the bar */ + + border: #B0B0B0 1px inset; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ababab), to(#fefefe)); + -webkit-border-radius: 8px; +} +.mblSliderH { + width: 200px; + height: 8px; +} +.mblSliderH .mblSliderProgressBar { + height: 100%; +} +.mblSliderH .mblSliderHandle { + top: 50%; +} +.mblSliderV { + height: 200px; + width: 8px; +} +.mblSliderV .mblSliderProgressBar { + width: 100%; +} +.mblSliderV .mblSliderHandle { + left: 50%; +} +.mblSliderProgressBar { + background-image: -webkit-gradient(linear, left top, left bottom, from(#0d48a8), to(#68a6f8)); + -webkit-border-radius: 8px; +} +.mblSliderHandle { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: #9D9D9D 1px outset; + -webkit-border-radius: 10px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#a6a6a6), to(#fcfcfc)); +} +.mblSliderTransition { + -webkit-transition-duration: 400ms; +} +.mblSliderTouchBox { + margin: 0; + padding: 12pt; + left: -12pt; + top: -12pt; + border: none; + width: 100%; + height: 100%; + background-color: transparent; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider.less new file mode 100644 index 0000000..928972f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Slider.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Slider.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch-compat.css new file mode 100644 index 0000000..3756d95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch-compat.css @@ -0,0 +1,70 @@ +/* Switch - default */ +.mblSwitchBg { + border: none; +} +.mblSwitchBgLeft { + background: none; + background-image: url(compat/switch-default-l.gif); + background-repeat: no-repeat; +} +.mblSwitchBgRight { + background: none; + background-image: url(compat/switch-default-r.gif); + background-repeat: no-repeat; +} +.mblSwitchKnob { + top: 0px; + height: 27px; + background: none; + background-image: url(compat/switch-default-k.gif); + background-repeat: no-repeat; + border: none; +} +/* Switch - Round Shape1 */ +.mblSwRoundShape1 .mblSwitchBgLeft { + background-image: url(compat/switch-round-l.gif); +} +.mblSwRoundShape1 .mblSwitchBgRight { + background-image: url(compat/switch-round-r.gif); +} +.mblSwRoundShape1 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-round1-k.gif); +} +/* Switch - Round Shape2 */ +.mblSwRoundShape2 .mblSwitchBgLeft { + background-image: url(compat/switch-round-l.gif); +} +.mblSwRoundShape2 .mblSwitchBgRight { + background-image: url(compat/switch-round-r.gif); +} +.mblSwRoundShape2 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-round2-k.gif); +} +/* Switch - Arc Shape1 */ +.mblSwArcShape1 .mblSwitchBgLeft { + background-image: url(compat/switch-arc-l.gif); +} +.mblSwArcShape1 .mblSwitchBgRight { + background-image: url(compat/switch-arc-r.gif); +} +.mblSwArcShape1 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-arc1-k.gif); +} +/* Switch - Arc Shape2 */ +.mblSwArcShape2 .mblSwitchBgLeft { + background-image: url(compat/switch-arc-l.gif); +} +.mblSwArcShape2 .mblSwitchBgRight { + background-image: url(compat/switch-arc-r.gif); +} +.mblSwArcShape2 .mblSwitchKnob { + top: 1px; + height: 26px; + background-image: url(compat/switch-arc2-k.gif); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch.css new file mode 100644 index 0000000..84597f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch.css @@ -0,0 +1,18 @@ +@import url("../common/Switch.css"); +/* dojox.mobile.Switch */ +.mblItemSwitch { + top: 8px; +} +.mblSwitchBg { + -webkit-border-radius: 5px; +} +.mblSwitchBgLeft { + background-image: -webkit-gradient(linear, left top, left bottom, from(#2859b1), to(#75acfb), color-stop(0.5, #3f84eb), color-stop(0.5, #4c8eee)); +} +.mblSwitchBgRight { + background-image: -webkit-gradient(linear, left top, left bottom, from(#cecece), to(#fdfdfd), color-stop(0.5, #eeeeee), color-stop(0.5, #f8f8f8)); +} +.mblSwitchKnob { + background-image: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#fafafa)); + -webkit-border-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch.less new file mode 100644 index 0000000..84a1146 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Switch.less @@ -0,0 +1,4 @@ +@import url("../common/Switch.css"); + +@import "variables.less"; +@import "../common/Switch.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar-compat.css new file mode 100644 index 0000000..2e12529 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar-compat.css @@ -0,0 +1,36 @@ +/* dojox.mobile.TabBarButton */ +.dj_ie6 .mblTabBarButtonDiv, .dj_ie7 .mblTabBarButtonDiv { + left: auto; +} +.dj_ie6 .mblTabBar .mblTabBarButton { + display: inline; /* IE bug*/ +} +.mblTabPanelHeader { + background-image: url(compat/heading-bg.png); +} +.mblTabContainer .mblTabButton { + background-image: url(compat/tab-button-bg.png); +} +.mblTabContainer .mblTabButtonSelected { + background-image: url(compat/tab-sel-button-bg.png); +} +*html .mblTabButton { /* IE6 hack */ + behavior: expression( + (function(el){ + if(!el.previousSibling) + el.style.borderWidth = "1px"; + el.style.behavior = "none"; + })(this) + ); +} +.dj_ie6 .mblTabPanelHeader .mblDomButton { + left: 0px; +} +.mblTabButton:first-child { + -moz-border-radius-topleft: 5px; + -moz-border-radius-bottomleft: 5px; +} +.mblTabButton:last-child { + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar.css new file mode 100644 index 0000000..becc58a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar.css @@ -0,0 +1,142 @@ +/* dojox.mobile.TabBar */ +.mblTabBar { + position: relative; + overflow: hidden; + white-space: nowrap; + margin: 0px; + padding: 0px; + height: 48px; + border-top: 1px solid #000000; + background-color: #000000; + background-image: -webkit-gradient(linear, left top, left bottom, from(#2d2d2d), to(#000000), color-stop(0.5, #141414), color-stop(0.5, #000000)); + color: white; + text-align: center; +} +.mblTabBarNoIcons { + height: 34px; +} +.mblTabBarNoText { + height: 34px; +} +/* dojox.mobile.TabBarButton */ +.mblTabBarButton { + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); +} +.mblTabBar .mblTabBarButton { + position: relative; + list-style-type: none; + float: left; +} +.mblTabBar .mblTabBarButton.mblTabButtonSelected { + -webkit-border-radius: 3px; + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424), color-stop(0.5, #353535), color-stop(0.5, #242424)); +} +.mblTabBarButtonAnchor { + display: block; + text-decoration: none; +} +.mblTabBarButtonDiv { + position: relative; + margin-left: auto; + margin-right: auto; + height: 34px; + width: 29px; +} +.mblTabBarButtonIcon { + position: absolute; + left: 0px; + top: 2px; +} +.mblTabBarButtonSpriteIcon { + position: absolute; +} +.mblTabBarButtonTextBox { + color: #979797; + font-family: "Helvetica Neue", Helvetica; + font-size: 11px; +} +.mblTabBarNoIcons .mblTabBarButtonDiv { + display: none; +} +.mblTabBarNoIcons .mblTabBarButtonTextBox { + line-height: 34px; + font-size: 20px; +} +.mblTabBarTop .mblTabButton .mblTabBarButtonDiv { + display: none; +} +.mblTabButton { + position: relative; + float: left; + list-style-type: none; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + width: 100px; + height: 28px; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: #9CACC0; + border-right-color: #5E708A; + background-image: -webkit-gradient(linear, left top, left bottom, from(#abb9ca), to(#788da9), color-stop(0.5, #8297af), color-stop(0.5, #768ba7)); + font-family: Helvetica; + font-size: 13px; + color: white; + text-align: center; + line-height: 29px; +} +.mblTabButton .mblTabBarButtonAnchor, .mblTabButton .mblTabBarButtonDiv { + height: 29px; +} +.mblTabButton:first-child { + -webkit-border-top-left-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + border-left-width: 1px; +} +.mblTabButton:last-child { + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + border-right-color: #9CACC0; +} +.mblTabButtonSelected .mblTabBarButtonTextBox { + color: white; +} +.mblTabButtonImgDiv { + display: none; +} +.mblTabPanelHeader { + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 0px; + padding: 3px 0px 0px 0px; + height: 39px; + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + background-color: #889BB3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b0bccd), to(#6d84a2), color-stop(0.5, #889bb3), color-stop(0.5, #8195af)); + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; + line-height: 44px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; +} +.mblTabPanelHeader .mblTabButton { + margin-top: 3px; +} +.mblTabPanelHeader .mblTabButton.mblTabButtonSelected { + background-color: #5877A2; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); +} +.mblTabPanelHeader .mblTabButtonDomButton { + width: 43px; +} +.mblTabPanelHeader .mblTabButtonDomButtonClass { + left: 8px; +} +.mblHeading .mblTabPanelHeader .mblTabButton { + margin-top: 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar.less new file mode 100644 index 0000000..4875c40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TabBar.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TabBar.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea-compat.css new file mode 100644 index 0000000..af7e363 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea.css new file mode 100644 index 0000000..0768622 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea.css @@ -0,0 +1,14 @@ +/* dojox.mobile.TextArea */ +.mblTextArea { + padding: 4px 1px; + border-color: #9CACC0; + border-width: 1px; + border-style: inset; + -webkit-border-radius: 5px; + font-family: Helvetica; + font-size: 13px; +} +/* dojox.mobile.ExpandingTextArea */ +.mblExpandingTextArea { + margin: 2px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea.less new file mode 100644 index 0000000..c16ffe0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextArea.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextArea.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox-compat.css new file mode 100644 index 0000000..32dcf46 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox-compat.css @@ -0,0 +1,7 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox.css new file mode 100644 index 0000000..d87404e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox.css @@ -0,0 +1,8 @@ +/* dojox.mobile.TextBox */ +.mblTextBox { + height: 22px; + border: #9CACC0 1px inset; + -webkit-border-radius: 5px; + font-family: Helvetica; + font-size: 13px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox.less new file mode 100644 index 0000000..c83890a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/TextBox.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/TextBox.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton-compat.css new file mode 100644 index 0000000..75bfb32 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton-compat.css @@ -0,0 +1,30 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + background-image: url(compat/button-bg.png); + -moz-border-radius: 5px; + -o-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; +} +.mblToggleButtonSelected { + background-image: url(compat/button-sel-bg.png); +} +.mblToggleButtonChecked { + background-image: url(compat/blue-button-bg.png); +} +.mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,0px) rotate(45deg) skew(10deg); + -o-transform: rotate(45deg) skew(10deg); + -ms-transform: rotate(45deg) skew(10deg); + transform: rotate(45deg) skew(10deg); + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.dj_ff3 .mblToggleButton.mblToggleButtonChecked::after { + -moz-transform: translate(-25px,-6px) rotate(45deg) skew(10deg); +} +.mblToggleButtonChecked.mblToggleButtonSelected { + background-image: url(compat/blue-button-sel-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton.css new file mode 100644 index 0000000..17e7295 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton.css @@ -0,0 +1,52 @@ +/* dojox.mobile.ToggleButton */ +.mblToggleButton { + position: relative; + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + padding: 0px 10px 0px 25px; + height: 29px; + border-width: 1px 1px 1px 1px; + border-style: outset; + border-color: #9CACC0; + -webkit-border-radius: 5px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fdfdfd), to(#cecece), color-stop(0.5, #f8f8f8), color-stop(0.5, #eeeeee)); + font-family: Helvetica; + font-size: 13px; + color: black; + line-height: 29px; +} +.mblToggleButton.mblToggleButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#bfbfbf), color-stop(0.5, #ebebeb), color-stop(0.5, #dedede)); + color: black; +} +.mblToggleButton.mblToggleButtonChecked { + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); + color: white; +} +.mblToggleButton.mblToggleButtonChecked::after { + position: absolute; + content: ""; + top: 6px; + left: 7px; + width: 5px; + height: 10px; + border-color: white; + border-width: 2px; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); + color: white; +} +.mblToggleButton.mblToggleButtonChecked.mblToggleButtonSelected::after { + border-color: white; +} +.mblToggleButton:disabled { + cursor: default; + border-color: grey; + background-image: none; + color: grey; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton.less new file mode 100644 index 0000000..bdce40f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToggleButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToggleButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToolBarButton.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToolBarButton.css new file mode 100644 index 0000000..7299e04 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToolBarButton.css @@ -0,0 +1,28 @@ +/* dojox.mobile.ToolBarButton */ +.mblToolBarButton { + float: left; + position: relative; + overflow: hidden; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + margin: 6px; + height: 29px; + border: 1px inset #9CACC0; + font-family: Helvetica; + font-size: 13px; + font-weight: bold; + color: white; + line-height: 29px; + text-align: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} +.mblToolBarButtonIcon { + position: relative; +} +.mblToolBarButtonSpriteIcon { + position: absolute; +} +.mblToolBarButtonText { + padding: 0px 10px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToolBarButton.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToolBarButton.less new file mode 100644 index 0000000..3b67bdc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ToolBarButton.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/ToolBarButton.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip-compat.css new file mode 100644 index 0000000..18b2623 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip-compat.css @@ -0,0 +1,41 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + -moz-border-radius: 8px; + -o-border-radius: 8px; + -ms-border-radius: 8px; + border-radius: 8px; + background-image: none; +} +.mblTooltipBefore .mblTooltipArrow { + *right: 0; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipArrow { + *bottom: 0px; /* IE 7 quirks */ +} +.mblTooltipBefore .mblTooltipInnerArrow { + *right: -1px; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipInnerArrow { + *bottom: -1px; /* IE 7 quirks */ +} +.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #172035; +} +.mblTooltip .mblHeading { + background-image: url(compat/tooltip-heading-bg.png); + *padding: 0 9px 9px; + *border-top: 1px solid #4F5055; + *border-bottom: 1px solid #2D3642; + *width: auto; + *height: auto; + *overflow: visible; + *line-height: normal; +} +.dj_ie9 .mblTooltip .mblHeading { + width: auto; +} +.mblTooltip .mblHeading .mblToolBarButton { + background-color: #000924; + background-image: url(compat/tooltip-button-bg.png); + *margin: auto 6px; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip.css new file mode 100644 index 0000000..cfe2db4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip.css @@ -0,0 +1,150 @@ +/* dojox.mobile.Tooltip */ +.mblTooltip { + position: absolute; + z-index: 2000; + display: block; + margin: 0; + padding: 5px; + border: #5A5A5A 1px solid; + background-color: #121B2F; + background-image: -webkit-gradient(linear, left top, left bottom, from(#656872), to(#121b2f), color-stop(0.1, #2c3345), color-stop(0.1, #161f32)); + -webkit-border-radius: 8px; + opacity: .97; +} +.mblTooltipBubble { + overflow: visible; + padding: 3px; + background-color: #f9f7ba; + background-image: none; +} +.mblTooltipBubble.mblTooltipAbove .mblTooltipInnerArrow { + border-bottom-color: #f9f7ba; +} +.mblTooltipBubble.mblTooltipBelow .mblTooltipInnerArrow { + border-top-color: #f9f7ba; +} +.mblTooltipBubble.mblTooltipAfter .mblTooltipInnerArrow { + border-left-color: #f9f7ba; +} +.mblTooltipBubble.mblTooltipBefore .mblTooltipInnerArrow { + border-right-color: #f9f7ba; +} +.mblTooltip.mblTooltipAfter { + margin-left: -11px; +} +.mblTooltip.mblTooltipBefore { + margin-left: 11px; +} +.mblTooltip.mblTooltipAbove { + margin-top: 11px; +} +.mblTooltip.mblTooltipBelow { + margin-top: -11px; +} +.mblTooltipAnchor { + position: absolute; + width: 1px; + height: 1px; + background-color: transparent; + line-height: 0; + font-size: 0; +} +.mblTooltipBefore .mblTooltipAnchor { + left: -1px; +} +.mblTooltipAfter .mblTooltipAnchor { + right: -1px; +} +.mblTooltipAbove .mblTooltipAnchor { + top: -1px; +} +.mblTooltipBelow .mblTooltipAnchor { + bottom: -1px; +} +.mblTooltipArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 11px solid transparent; +} +.mblTooltipBefore .mblTooltipArrow { + left: auto; + right: 1px; + top: 0; + bottom: auto; + border-left-width: 0; + border-right-color: #5A5A5A; +} +.mblTooltipAfter .mblTooltipArrow { + left: 1px; + right: auto; + top: 0; + bottom: auto; + border-right-width: 0; + border-left-color: #5A5A5A; +} +.mblTooltipAbove .mblTooltipArrow { + top: auto; + bottom: 1px; + left: auto; + right: auto; + border-top-width: 0; + border-bottom-color: #5A5A5A; +} +.mblTooltipBelow .mblTooltipArrow { + top: 1px; + bottom: auto; + left: auto; + right: auto; + border-bottom-width: 0; + border-top-color: #5A5A5A; +} +.mblTooltipInnerArrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + border: 10px solid transparent; +} +.mblTooltipBefore .mblTooltipInnerArrow { + right: 0; + top: 0; + border-left-width: 0; + border-right-color: #192235; +} +.mblTooltipAfter .mblTooltipInnerArrow { + left: 0; + top: 0; + border-right-width: 0; + border-left-color: #192235; +} +.mblTooltipAbove .mblTooltipInnerArrow { + bottom: 0; + left: 0; + border-top-width: 0; + border-bottom-color: #656872; +} +.mblTooltipBelow .mblTooltipInnerArrow { + top: 0; + left: 0; + border-bottom-width: 0; + border-top-color: #172035; +} +.mblTooltipHidden, .mblTooltipHidden * { + visibility: hidden !important; +} +.mblTooltip .mblHeading { + border-top: 3px solid #4F5055; + border-bottom: 1px solid #2D3642; + border-left: 1px solid #2A2D47; + -webkit-border-radius: 3px 3px 0 0; + background-color: #889BB3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#5e6167), to(#1a1d24), color-stop(0.5, #2e322b)); + font-weight: normal; +} +.mblTooltip .mblHeading .mblToolBarButton { + border: 1px inset #434450; + background-image: -webkit-gradient(linear, left top, left bottom, from(#686f80), to(#000924), color-stop(0.5, #000b29)); + font-weight: normal; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip.less new file mode 100644 index 0000000..60af6d1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/Tooltip.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/Tooltip.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/View.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/View.css new file mode 100644 index 0000000..cf2151b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/View.css @@ -0,0 +1,23 @@ +@import url("../common/transitions/slide.css"); + +@import url("../common/transitions/flip.css"); + +@import url("../common/transitions/fade.css"); +/* dojox.mobile.View */ +.mblView { + position: relative; + top: 0px; + left: 0px; + width: 100%; +} +.mblView.mblIn { + position: absolute; +} +.mblFixedHeaderBar { + z-index: 1; +} +.mblFixedBottomBar { + position: absolute !important; + width: 100%; + z-index: 1; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/View.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/View.less new file mode 100644 index 0000000..910651f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/View.less @@ -0,0 +1,6 @@ +@import url("../common/transitions/slide.css"); +@import url("../common/transitions/flip.css"); +@import url("../common/transitions/fade.css"); + +@import "variables.less"; +@import "../common/View.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/base-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/base-compat.css new file mode 100644 index 0000000..d12cf2b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/base-compat.css @@ -0,0 +1,7 @@ +@import url("Heading-compat.css"); +@import url("RoundRect-compat.css"); +@import url("RoundRectList-compat.css"); +@import url("EdgeToEdgeCategory-compat.css"); +@import url("ListItem-compat.css"); +@import url("Switch-compat.css"); +@import url("ProgressIndicator-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/base.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/base.css new file mode 100644 index 0000000..2409467 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/base.css @@ -0,0 +1,12 @@ +@import url("common.css"); +@import url("Heading.css"); +@import url("View.css"); +@import url("ToolBarButton.css"); +@import url("RoundRect.css"); +@import url("EdgeToEdgeCategory.css"); +@import url("RoundRectCategory.css"); +@import url("RoundRectList.css"); +@import url("EdgeToEdgeList.css"); +@import url("ListItem.css"); +@import url("Switch.css"); +@import url("ProgressIndicator.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/common.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/common.css new file mode 100644 index 0000000..f2859e0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/common.css @@ -0,0 +1,26 @@ +html.mobile, .mobile body { + width: 100%; + margin: 0px; + padding: 0px; +} +.mobile body { + overflow-x: hidden; + -webkit-text-size-adjust: none; + background-color: #c5ccd3; + font-family: Helvetica; + font-size: 17px; +} +/* Button Colors */ +.mblColorBlue { + background-color: #366EDF; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7a9de9), to(#2362dd), color-stop(0.5, #366edf), color-stop(0.5, #215fdc)); +} +/* Default Button Colors */ +.mblColorDefault { + background-color: #5877A2; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8ea4c1), to(#4a6c9b), color-stop(0.5, #5877a2), color-stop(0.5, #476999)); +} +.mblColorDefaultSel { + background-color: #394D77; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7c87a4), to(#263e6c), color-stop(0.5, #394d77), color-stop(0.5, #243b69)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/common.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/common.less new file mode 100644 index 0000000..4e57a5c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/common.less @@ -0,0 +1,2 @@ +@import "variables.less"; +@import "../common/common.less"; diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/arrow-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/arrow-button-bg.png new file mode 100755 index 0000000..5efaa9e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/arrow-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/arrow-button-head.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/arrow-button-head.png new file mode 100755 index 0000000..85beb43 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/arrow-button-head.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/blue-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/blue-button-bg.png new file mode 100755 index 0000000..3bd558b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/blue-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/blue-button-sel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/blue-button-sel-bg.png new file mode 100755 index 0000000..6968458 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/blue-button-sel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/button-bg.png new file mode 100644 index 0000000..0d378fa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/button-sel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/button-sel-bg.png new file mode 100644 index 0000000..c8a71b8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/button-sel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/edge-categ-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/edge-categ-bg.png new file mode 100644 index 0000000..3a62e14 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/edge-categ-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/gray-arrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/gray-arrow.png new file mode 100755 index 0000000..c93d17f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/gray-arrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/heading-bg.png new file mode 100755 index 0000000..888a92e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/icon-content-heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/icon-content-heading-bg.png new file mode 100755 index 0000000..3daa1a8 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/icon-content-heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-arrow-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-arrow-button-bg.png new file mode 100644 index 0000000..b2afca9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-arrow-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-arrow-button-head.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-arrow-button-head.png new file mode 100644 index 0000000..503c685 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-arrow-button-head.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-heading-bg.png new file mode 100644 index 0000000..614bbbd Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/ipad-heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/red-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/red-button-bg.png new file mode 100644 index 0000000..799870f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/red-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/red-button-sel-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/red-button-sel-bg.png new file mode 100644 index 0000000..cc57b2b Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/red-button-sel-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-h-bar-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-h-bar-bg.png new file mode 100644 index 0000000..212d59f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-h-bar-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-h-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-h-bg.png new file mode 100644 index 0000000..b5f77b1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-h-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-handle-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-handle-bg.png new file mode 100644 index 0000000..4b5bb6c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/slider-handle-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc-l.gif new file mode 100644 index 0000000..60fa6e0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc-r.gif new file mode 100644 index 0000000..2d1cbce Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc1-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc1-k.gif new file mode 100644 index 0000000..6596e32 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc1-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc2-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc2-k.gif new file mode 100644 index 0000000..bf307b1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-arc2-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-k.gif new file mode 100644 index 0000000..9accbf5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-l.gif new file mode 100644 index 0000000..c42f5ba Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-r.gif new file mode 100644 index 0000000..74499d5 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-default-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round-l.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round-l.gif new file mode 100644 index 0000000..6061d6d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round-l.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round-r.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round-r.gif new file mode 100644 index 0000000..cf53086 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round-r.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round1-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round1-k.gif new file mode 100644 index 0000000..6b9fe0a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round1-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round2-k.gif b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round2-k.gif new file mode 100644 index 0000000..dfa763e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/switch-round2-k.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tab-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tab-button-bg.png new file mode 100755 index 0000000..f8d6ef0 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tab-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tab-sel-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tab-sel-button-bg.png new file mode 100755 index 0000000..c3b0a33 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tab-sel-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tooltip-button-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tooltip-button-bg.png new file mode 100644 index 0000000..03bf47f Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tooltip-button-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tooltip-heading-bg.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tooltip-heading-bg.png new file mode 100644 index 0000000..e7a64fa Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/tooltip-heading-bg.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/white-arrow.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/white-arrow.png new file mode 100755 index 0000000..84e435a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/compat/white-arrow.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay-large.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay-large.png new file mode 100644 index 0000000..dfac370 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay-large.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay-small.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay-small.png new file mode 100644 index 0000000..b6836d9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay-small.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay.png b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay.png new file mode 100755 index 0000000..b16efec Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/images/thumb-overlay.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ipad-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ipad-compat.css new file mode 100644 index 0000000..d48170e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ipad-compat.css @@ -0,0 +1,17 @@ +/* mbl.widget.Heading */ +.dj_tablet .mblHeading { + background-image: url(compat/ipad-heading-bg.png); +} + +/* Heading Arrow Button */ +.dj_tablet .mblArrowButtonHead { + background-image: url(compat/ipad-arrow-button-head.png); +} +.dj_tablet .mblArrowButtonBody { + background-image: url(compat/ipad-arrow-button-bg.png); +} + +/* mbl.widget.TabBar */ +.dj_tablet .mblTabPanelHeader { + background-image: url(compat/ipad-heading-bg.png); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ipad.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ipad.css new file mode 100644 index 0000000..b17502d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/ipad.css @@ -0,0 +1,152 @@ +/* dojox.mobile.View */ + +/* dojox.mobile.Heading */ +.dj_tablet .mblHeading { + background-color: #889BB3; + background: -webkit-gradient(linear, left top, left bottom, from(#F3F4F6), to(#A7ABB8)); + border-top: 1px solid #FEFEFE; + border-bottom: 1px solid #787E8F; + color: #70777F; + text-shadow: rgba(256,256,256,0.6) 0px 1px 0px; +} + +/*Headings and Button styles are overridden in Tooltips*/ +.dj_tablet .mblTooltip .mblHeading { + position: relative; + margin: 0px; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding: 0px; + height: 42px; + background-color: #889BB3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#5E6167), to(#1A1D24), color-stop(0.5, #2E322B)); + border-top: 3px solid #4F5055; + border-bottom: 1px solid #2D3642; + color: white; + font-family: Helvetica; + font-size: 20px; + font-weight: normal; + text-align: center; + line-height: 44px; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; + z-index: 1; + border-left: 1px solid #2A2D47; + -webkit-border-radius: 3px 3px 0 0; +} +.dj_tablet .mblTooltip .mblHeading .mblToolBarButton { + float: left; + position: relative; + cursor: pointer; + -webkit-tap-highlight-color: rgba(255,255,255,0); + margin: 6px; + padding: 0px 10px; + height: 29px; + border: 1px inset #434450; + font-family: Helvetica; + font-size: 13px; + font-weight: normal; + color: white; + line-height: 29px; + text-align: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#686F80), to(#000924), color-stop(0.5, #000B29)); +} + +/* Heading Arrow Button */ +.dj_tablet .mblArrowButtonHead { + border-color: #4D4E50; + background: -webkit-gradient(linear, left top, right bottom, from(#B1B5BB), to(#6A727D)); +} +.dj_tablet .mblArrowButtonBody { + border-color: #C0C0C0; + background-color: #8B919A; + background: -webkit-gradient(linear, left top, left bottom, from(#B1B5BB), to(#6A727D)); + -webkit-tap-highlight-color: rgba(255,255,255,0); + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} +.dj_tablet .mblArrowButtonSelected .mblArrowButtonHead { + background: -webkit-gradient(linear, left top, right bottom, from(#9DA0A3), to(#43484F)); +} +.dj_tablet .mblArrowButtonSelected .mblArrowButtonBody { + background: -webkit-gradient(linear, left top, left bottom, from(#9DA0A3), to(#43484F)); +} + +/* dojox.mobile.RoundRect */ +.dj_tablet .mblRoundRect { + margin: 7px 30px 30px 30px; +} +.dj_tablet .mblHeading + .mblRoundRect { + margin-top: 30px; +} + +/* dojox.mobile.EdgeToEdgeCategory */ +/* dojox.mobile.RoundRectCategory */ +.dj_tablet .mblRoundRectCategory { + margin: 18px 0px 0px 41px; +} + +/* dojox.mobile.RoundRectList */ +.dj_tablet .mblRoundRectList { + margin: 7px 30px 30px 30px; +} +.dj_tablet .mblRoundRectList:first-child { + margin-top: 25px; +} +.dj_tablet .mblHeading + .mblRoundRectList { + margin-top: 30px; +} + +/* dojox.mobile.EdgeToEdgeList */ +/* dojox.mobile.ListItem */ +/* Switch */ +/* Icon Container */ +/* Icon Content Heading */ +/* dojox.mobile.Button */ +/* Tab Container */ +/* Progress Indicator */ + +/* dojox.mobile.TabBar */ +.dj_tablet .mblTabPanelHeader { + background-color: #889BB3; + background: -webkit-gradient(linear, left top, left bottom, from(#F3F4F6), to(#A7ABB8)); + border-top: 1px solid #FEFEFE; + border-bottom: 1px solid #787E8F; + color: #70777F; + text-shadow: rgba(256,256,256,0.6) 0px 1px 0px; +} + +/* dojox.mobile.TabBarButton */ +.dj_tablet .mblTabButton { + font-weight: bold; + color: #70777F; + text-shadow: none; + border-color: silver; + background-color: #CCCED6; + background: -webkit-gradient(linear, left top, left bottom, from(#F3F4F6), to(#A7ABB8)); +} +.dj_tablet .mblTabPanelHeader .mblTabButton.mblTabButtonSelected { + color: white; + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; + background-color: #8B919A; + background-image: -webkit-gradient(linear, left top, left bottom, from(#B1B5BB), to(#6A727D)); +} + +/* dojox.mobile.ToolBarButton */ +.dj_tablet .mblToolBarButton { + text-shadow: rgba(0, 0, 0, 0.6) 0px -1px 0px; + border: 1px inset silver; +} + +/* Default Button Colors */ +.dj_tablet .mblColorDefault { + background-color: #8B919A; + background-image: -webkit-gradient(linear, left top, left bottom, from(#B1B5BB), to(#6A727D)); + +} +.dj_tablet .mblColorDefaultSel { + background-color: #515761; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A7E85), to(#303845)); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-app-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-app-compat.css new file mode 100755 index 0000000..dc0a814 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-app-compat.css @@ -0,0 +1,24 @@ +/* mbl.widget.Heading */ +@import url("iphone-compat.css"); + +.alertTitle { + background-image: url(compat/heading-bg.png); +} + +.mblImageThumbView .mblThumb { + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; +} + +.mblImageThumbView .mblThumb:hover { + -moz-transform: scale(1.2); + -moz-transition: all 0.3s ease-in-out; + -o-transform: scale(1.2); + -o-transition: all 0.3s ease-in-out; +} +.mblImageThumbView .mblThumbInner .mblThumbMask .mblThumbSrc { + -moz-background-size: 100% 100%; + -moz-border-radius: 5px; + -o-background-size: 100% 100%; + -o-border-radius: 5px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-app.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-app.css new file mode 100644 index 0000000..d91d2f4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-app.css @@ -0,0 +1,341 @@ +@import url("iphone.css"); + +.alertDialog { + width: 100%; + padding-left: 2px; + padding-right: 2px; + z-index: 1000; +} + +.alertDialogBody { + border: 1px solid #ADAAAD; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + background-color: white; + margin-left: 2px; + margin-right: 4px; +} + +.alertTitle { + height: 42px; + margin: 0px; + padding: 0px; + background-color: #889BB3; + background: -webkit-gradient(linear, left top, left bottom, from(#B0BCCD), to(#6D84A2), color-stop(0.5, #889BB3), color-stop(0.5, #8195AF)); + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; + line-height: 44px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + text-align: center; +} + +.alertText { + text-align: center; +} + +.alertBtns { + padding: 5px; + text-align: center; +} + +.alertBtns .mblButton { + width: 100%; + margin-top: 5px; +} + +.alertDialog.mblOut { + position: absolute; +} + +.alertDialog.mblIn { + position: absolute; +} + +.mblSlidev.mblOut { + -webkit-animation-duration: .4s; + -webkit-animation-name: mblSlideOut; + -webkit-animation-timing-function: linear; + -webkit-transform: translateY(-100%); +} +.mblSlidev.mblIn { + -webkit-animation-duration: .4s; + -webkit-animation-name: mblSlideIn; + -webkit-animation-timing-function: linear; + -webkit-transform: translateY(0px); +} +.mblSlidev.mblOut.mblReverse { + -webkit-animation-name: mblSlideOutReverse; +} +.mblSlidev.mblIn.mblReverse { + -webkit-animation-name: mblSlideInReverse; +} + +.dialogUnderlayWrapper { + position: absolute; + left: 0; + top: 0; + z-index: 998; + background: transparent !important; + visibility: visible; + height: 100%; + width: 100%; +} + +.dialogUnderlay { + background-color: #eee; + opacity: 0.5; + width: 100%; + height: 100%; +} + +.list .row { + padding: 10px; + border-bottom: 1px solid #444; + position: relative; + background-color: white; + z-index: 6; /* Must be greater than the .buttons z-index */ +} +.list .row.mblListItem { + padding: 0px; +} + +.list .row.last { + border-bottom: none; +} + +.list .row.hold { + background-color: #ddd; +} + +.list .buttons { + position: absolute; + text-align: center; + padding-top: 10px; + width: 100%; + height: 100%; + z-index: 5; +} + +.list .buttons .mblButton { +} + +.list .buttons .deleteBtn { + background-color: red; + +} +.list .buttons .cancelBtn { + margin-left: 10px; + background-color: blue; +} + +.row.collapsed { + -webkit-animation-name: collapse-vert; + -webkit-animation-duration: 0.5s; + -webkit-animation-timing-function: linear; +} + +@-webkit-keyframes collapse-vert { + from { + height: 100%; + padding: 10px; + } + to { + height: 0px; + padding: 0px; + } +} + +.listSelector { + position: absolute; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border: 1px solid #666; + background-color: #ccc; + color: #333; + z-index: 1000; +} +.listSelectorRow { + padding: 10px; + border-bottom: 1px solid #666; + white-space: nowrap; +} +.listSelectorRow-selected { + background-color: #666; + color: #ccc; +} + +.listSelectorRow.last { + border-bottom: none; +} + +.mblImageView, .mblImageView canvas { + width: 100%; + height: 100%; +} + +.mblPillar { + display: none; +} + +/* Form Input Styles */ + +input { + -webkit-text-size-adjust: 140%; +} + + +/* ImageThumbView styles */ +.mblImageThumbView { + position: relative; + -webkit-transition-property: height; + -webkit-transition-duration: 0.8s; + -webkit-transition-delay: 0; +} + +.mblImageThumbView .mblThumb { + width: 100px; + min-height: 100px; + display: inline-block; + z-index: 2; + position: absolute; +} + +.mblImageThumbView.animated .mblThumb { + -webkit-transition-property: -webkit-transform, opacity; + -webkit-transition-duration: 1.3s, 1s; + -webkit-transition-delay: 0, 0; +} + +.mblImageThumbView .mblThumb.hidden { + z-index: 1; + opacity: 0; +} +.mblImageThumbView .mblThumbInner { + width: 102px; + height: 102px; + position: relative; +} + +.mblImageThumbView .mblThumbOverlay { + width: 102px; + height: 102px; + background: url(images/thumb-overlay.png) center top no-repeat; + position: absolute; + z-index: 20; + overflow: hidden; +} +.mblImageThumbView .mblThumb.selected .mblThumbOverlay { + background-position: center bottom; +} +.mblImageThumbView .mblThumbInner .mblThumbMask { + width: 90px; + height: 90px; + overflow: hidden; + padding-left: 6px; + padding-top: 5px; + z-index: 10; +} +.mblImageThumbView .mblThumbInner .mblThumbMask img { + left: 0px; + top: 0px; + width: 90px; + height: 90px; +} + +.mblImageThumbView .mblThumbInner .mblThumbMask .mblThumbSrc { + left: 6px; + top: 5px; + background-position: center center; + background-repeat: no-repeat; + overflow: hidden; + position: absolute; + -webkit-background-size: 100% 100%; + -webkit-border-radius: 5px; + width: 90px; + height: 90px; + z-index: 5; +} + +.mblImageThumbView .mblThumbMask div { + left: 0px; + top: 0px; + width: 90px; + height: 90px; + background-repeat: no-repeat; +} +.mblImageThumbView .mblThumb:hover, +.mblImageThumbView .mblThumb.selected { + -webkit-transform: scale(1.2); + transform: scale(1.2); +} + +/* Large Images */ +.mblImageThumbView.large .mblThumb { + width: 150px; + min-height: 150px; +} + +.mblImageThumbView.large .mblThumbInner{ + width: 152px; + height: 152px; +} + +.mblImageThumbView.large .mblThumbOverlay { + background: url(images/thumb-overlay-large.png) center top no-repeat; + width: 152px; + height: 152px; +} +.mblImageThumbView.large .mblThumbInner .mblThumbMask, +.mblImageThumbView.large .mblThumbInner .mblThumbMask img, +.mblImageThumbView.large .mblThumbInner .mblThumbMask .mblThumbSrc, +.mblImageThumbView.large .mblThumbMask div { + width: 133px; + height: 133px; +} + +.mblImageThumbView.large .mblThumbInner .mblThumbMask .mblThumbSrc { + left: 9px; + top: 7px; +} +/* Small Images */ +.mblImageThumbView.small .mblThumb { + width: 75px; + min-height: 75px; +} + +.mblImageThumbView.small .mblThumbInner{ + width: 77px; + height: 77px; +} + +.mblImageThumbView.small .mblThumbOverlay { + background: url(images/thumb-overlay-small.png) center top no-repeat; + width: 77px; + height: 77px; +} +.mblImageThumbView.small .mblThumbInner .mblThumbMask, +.mblImageThumbView.small .mblThumbInner .mblThumbMask img, +.mblImageThumbView.small .mblThumbInner .mblThumbMask .mblThumbSrc, +.mblImageThumbView.small .mblThumbMask div { + width: 70px; + height: 70px; +} + +.mblImageThumbView.small .mblThumbInner .mblThumbMask .mblThumbSrc { + left: 4px; + top: 3px; +} + +.mblImageThumbView .mblThumbLabel { + font-size: smaller; + overflow: hidden; + white-space: nowrap; + text-align: center; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-compat.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-compat.css new file mode 100755 index 0000000..f5a0140 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone-compat.css @@ -0,0 +1,18 @@ +@import url("base-compat.css"); + +/* common styles */ +@import url("../common/domButtons-compat.css"); +@import url("../common/SpinWheel-compat.css"); + +/* widget styles */ +@import url("Button-compat.css"); +@import url("CheckBox-compat.css"); +@import url("ComboBox-compat.css"); +@import url("IconContainer-compat.css"); +@import url("Opener-compat.css"); +@import url("RadioButton-compat.css"); +@import url("Slider-compat.css"); +@import url("TabBar-compat.css"); +@import url("TextArea-compat.css"); +@import url("TextBox-compat.css"); +@import url("ToggleButton-compat.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone.css b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone.css new file mode 100755 index 0000000..a50e0ce --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/iphone.css @@ -0,0 +1,22 @@ +@import url("base.css"); + +/* common styles */ +@import url("../common/domButtons.css"); +@import url("../common/FixedSplitter.css"); +@import url("../common/SpinWheel.css"); +@import url("../common/transitions.css"); + +/* widget styles */ +@import url("Button.css"); +@import url("Carousel.css"); +@import url("CheckBox.css"); +@import url("ComboBox.css"); +@import url("IconContainer.css"); +@import url("Opener.css"); +@import url("PageIndicator.css"); +@import url("RadioButton.css"); +@import url("Slider.css"); +@import url("TabBar.css"); +@import url("TextArea.css"); +@import url("TextBox.css"); +@import url("ToggleButton.css"); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/variables.less b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/variables.less new file mode 100644 index 0000000..007cab4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/themes/iphone/variables.less @@ -0,0 +1,726 @@ +// common.less +.mobile-body-styles () { + background-color: rgb(197,204,211); + font-family: Helvetica; + font-size: 17px; +} + +.mblView-styles () { +} + +.mblColorBlue-styles () { + background-color: #366EDF; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); +} +.mblColorDefault-styles () { + background-color: #5877A2; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} +.mblColorDefaultSel-styles () { + background-color: #394D77; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7C87A4), to(#263E6C), color-stop(0.5, #394D77), color-stop(0.5, #243B69)); +} + +// Heading.less +.mblHeading-styles () { + padding: 0px; + height: 42px; + background-color: #889BB3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#B0BCCD), to(#6D84A2), color-stop(0.5, #889BB3), color-stop(0.5, #8195AF)); + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + color: white; + font-family: Helvetica; + font-size: 20px; + font-weight: bold; + text-align: center; + line-height: 44px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} +.mblArrowButton-styles () { + height: 42px; +} +.mblArrowButtonHead-styles () { + top: 11px; + left: 5px; + width: 20px; + height: 19px; + border: 1px solid #3A4655; + -webkit-transform: scale(0.7, 1) rotate(45deg); + background-image: -webkit-gradient(linear, left top, right bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} +.mblArrowButtonHeadChrome-styles () { + border: 1px inset #3A4655; +} +.mblArrowButtonBody-styles () { + top: 6px; + left: 16px; + padding: 0px 10px 0px 4px; + height: 29px; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: #9CACC0; + font-family: Helvetica; + font-size: 13px; + color: white; + line-height: 29px; + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + background-color: #5877A2; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} +.mblArrowButtonSelected-styles () { +} +.mblArrowButtonHeadSelected-styles () { + background-image: -webkit-gradient(linear, left top, right bottom, from(#7C87A4), to(#263E6C), color-stop(0.5, #394D77), color-stop(0.5, #243B69)); +} +.mblArrowButtonBodySelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#7C87A4), to(#263E6C), color-stop(0.5, #394D77), color-stop(0.5, #243B69)); +} + +// ToolBarButton.less +.mblToolBarButton-styles () { + margin: 6px; + height: 29px; + border: 1px inset #9CACC0; + font-family: Helvetica; + font-size: 13px; + font-weight: bold; + color: white; + line-height: 29px; + text-align: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} +.mblToolBarButtonDomButton-styles () { +} +.mblToolBarButtonIcon-styles () { +} + +// RoundRect.less +.mblRoundRect-styles () { + margin: 7px 9px 16px 9px; + padding: 8px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background-color: white; +} +.mblRoundRectShadowBox-styles () { + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5); +} + +// EdgeToEdgeCategory.less +.mblEdgeToEdgeCategory-styles () { + margin: 0px; + padding: 0px 10px; + height: 22px; + border-top: 1px solid #A4B0B9; + border-bottom: 1px solid #979DA3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8F9EA9), to(#B7C0C7)); + font-family: Helvetica; + font-size: 16px; + font-weight: bold; + color: white; + line-height: 22px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} + +// RoundRectCategory.less +.mblRoundRectCategory-styles () { + padding: 18px 0px 0px 20px; + margin: 0px; + font-family: Helvetica; + font-size: 16px; + color: #4C566C; + text-shadow: rgba(255, 255, 255, 1) 0px 1px 0px; +} + +// RoundRectList.less +.mblRoundRectList-styles () { + margin: 7px 9px 16px 9px; + padding: 0px; + border: 1px solid #ADAAAD; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background-color: white; +} +.mblRoundRectList-withCategory-styles () { +} +.mblRoundRectList-FirstListItem-styles () { + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; +} +.mblRoundRectList-withCategory-FirstListItem-styles () { +} +.mblRoundRectList-LastListItem-styles () { + border-bottom-width: 0px; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; +} + +// EdgeToEdgeList.less +.mblEdgeToEdgeList-styles () { + margin: 0px; + padding: 0px; + background-color: white; +} +.mblEdgeToEdgeList-LastListItem-styles () { + border-bottom-color: #707C84; +} + +// ListItem.less +.mblListItem-styles () { + padding: 0px 0px 0px 8px; + height: 43px; + border-bottom: 1px solid #ADAAAD; + font-weight: bold; + color: black; + line-height: 43px; +} +.mblListItem-mblVariableHeight-styles () { + padding: 11px 0px 10px 6px; + line-height: normal; +} +.mblListItem-mblListItemAnchor-styles () { + background-position: 9px 7px; + text-decoration: none; + padding-right: 7px; +} +.mblItemSelected-styles () { + background-color: #048BF4; + background-image: -webkit-gradient(linear, left top, left bottom, from(#048BF4), to(#005CE5)); +} +.mblItemSelected-mblListItemAnchor-styles () { + color: white; +} +.mblItemSelected-mblDomButton-Div-styles () { + border-color: white; +} +.mblItemSelected-mblListItemSubText-styles () { +} +.mblListItemTextBoxSelected-styles () { + background-color: #048BF4; +} +.mblListItemChecked-styles () { + color: #314E84; +} +.mblListItemIcon-styles () { + margin-top: 7px; + margin-right: 11px; +} +.mblListItemSpriteIcon-styles () { + margin-top: 7px; + margin-left: 8px; +} +.mblListItemRightIcon-styles () { + margin-top: 7px; + margin-bottom: -7px; +} +.mblListItemRightText-styles () { + color: #324F85; + margin: 11px 4px 0 0; +} +.mblListItemTextBox-styles () { +} +.mblListItemAnchorNoIcon-mblListItemTextBox-styles () { +} +.mblListItemSubText-styles () { +} + +// Switch.less +.mblItemSwitch-styles () { + top: 8px; +} +.mblSwitchBg-styles () { + -webkit-border-radius: 5px; +} +.mblSwitchBgLeft-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#2859B1), to(#75ACFB), color-stop(0.5, #3F84EB), color-stop(0.5, #4C8EEE)); +} +.mblSwitchBgRight-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#CECECE), to(#FDFDFD), color-stop(0.5, #EEEEEE), color-stop(0.5, #F8F8F8)); +} +.mblSwitchKnob-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#CCCCCC), to(#FAFAFA)); + -webkit-border-radius: 5px; +} + +// Button.less +.mblButton-styles () { + padding: 0px 10px; + height: 29px; + border: #9CACC0 1px outset; + -webkit-border-radius: 5px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + color: black; + font-family: Helvetica; + font-size: 13px; + line-height: 29px; +} +.mblButton-mblBlueButton-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); + color: white; +} +.mblButton-mblBlueButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); + color: white; +} +.mblButton-mblRedButton-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FA9D58), to(#EE4115), color-stop(0.5, #FF4D25), color-stop(0.5, #ED4D15)); + color: white; +} +.mblButton-mblRedButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#C1A48E), to(#9B6C4A), color-stop(0.5, #A27758), color-stop(0.5, #996947)); + color: white; +} +.mblButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#F0F0F0), to(#BFBFBF), color-stop(0.5, #EBEBEB), color-stop(0.5, #DEDEDE)); + color: black; +} +.mblButtonDisabled-styles () { + border-color: grey; + background-image: none; + color: grey; +} + +// CheckBox.less +.mblCheckBox-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 5px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + font: inherit; + -webkit-transform: translateY(0.45em); +} +.mblCheckBoxSelected-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#F0F0F0), to(#BFBFBF), color-stop(0.5, #EBEBEB), color-stop(0.5, #DEDEDE)); +} +.mblCheckBoxChecked-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); +} +.mblCheckBoxChecked-after-styles () { + position: absolute; + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.3em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblCheckBoxChecked-mblCheckBoxSelected-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} +.mblCheckBoxChecked-mblCheckBoxSelected-after-styles () { + border-color: #9CACC0; +} + +// ComboBox.less +.dijitPopup-styles () { + -webkit-box-shadow: 0px 0px 50px black; + -webkit-border-radius: 0px; +} +.mblComboBoxMenu-styles () { + border: 1px solid black; + -webkit-border-radius: 0px; + background-color: white; +} +.mblComboBoxMenuItemSelected-styles () { + background-color: black; + background-image: -webkit-gradient(linear, left top, left bottom, from(#048BF4), to(#005CE5)); + color: white; +} +.mblComboBoxMenuItem-styles () { + padding: .1em .2em; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #ffffff; + color: inherit; + text-align: left; +} +.mblComboBoxMenuPreviousButton-styles () { + font-style: italic; + overflow: hidden; +} + +// IconContainer.less +.mblIconContainer-styles () { + margin: 20px 0px 0px 10px; + padding: 0px 0px 40px 0px; +} + +// IconItem.less +.mblIconItemTerminator-styles () { + height: 20px; +} +.mblIconItemSub-styles () { + margin-left: -10px; + background-color: white; +} +.mblIconArea-styles () { + margin-bottom: 10px; + height: 78px; + width: 74px; + font-family: Helvetica; + font-size: 12px; + text-align: center; +} +.mblContent-styles () { + padding-bottom: 20px; +} +.mblIconContentHeading-styles () { + margin-top: 0px; + padding-left: 40px; + height: 25px; + border-top: 1px solid #F1F3F4; + border-bottom: 1px solid #717D85; + background-image: -webkit-gradient(linear, left top, left bottom, from(#E0E4E7), to(#B4BEC6), color-stop(0.5, #C4CCD2), color-stop(0.5, #BFC8CE)); + font-family: Helvetica; + font-size: 14px; + color: white; + line-height: 26px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} + +// RadioButton.less +.mblRadioButton-styles () { + margin: -0.5em 3px 0.3em 4px; + width: 1em; + height: 1em; + border: #9CACC0 1px outset; + -webkit-border-radius: 0.5em; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + font: inherit; + -webkit-transform: translateY(0.45em); +} +.mblRadioButtonChecked-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); +} +.mblRadioButtonChecked-after-styles () { + content: ""; + width: 0.3em; + height: 0.6em; + top: 0; + left: 0.25em; + border-color: white; + border-width: 0.15em; + border-style: none solid solid none; + border-color: white; + -webkit-transform: rotate(45deg); + -webkit-transform-origin: 50% 50%; +} +.mblRadioButtonChecked-Selected-styles () { + border-color: #9CACC0; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} +.mblRadioButtonChecked-Selected-after-styles () { + border-color: white; +} + +// Slider.less +.mblSlider-styles () { + margin: 15px; /* 1/2 handle width for hanging off the ends of the bar */ + border: #B0B0B0 1px inset; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ABABAB), to(#FEFEFE)); + -webkit-border-radius: 8px; +} +.mblSliderProgressBar-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#0D48A8), to(#68A6F8)); + -webkit-border-radius: 8px; +} +.mblSliderHandle-styles () { + margin: -10px 0 0 -10px; + width: 18px; + height: 18px; + border: #9D9D9D 1px outset; + -webkit-border-radius: 10px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#A6A6A6), to(#FCFCFC)); +} + +// TabBar.less +.mblTabBar-styles () { + margin: 0px; + padding: 0px; + height: 48px; + border-top: 1px solid #000000; + background-color: #000000; + background-image: -webkit-gradient(linear, left top, left bottom, from(#2D2D2D), to(#000000), color-stop(0.5, #141414), color-stop(0.5, #000000)); + color: white; + text-align: center; +} +.mblTabBar-TabBarButton-styles () { +} +.mblTabBar-TabBarButton-Selected-styles () { + -webkit-border-radius: 3px; + background-color: #404040; + background-image: -webkit-gradient(linear, left top, left bottom, from(#484848), to(#242424), color-stop(0.5, #353535), color-stop(0.5, #242424)); +} +.mblTabBarButtonDiv-styles () { + height: 34px; + width: 29px; +} +.mblTabBarButtonIcon-styles () { + left: 0px; + top: 2px; +} +.mblTabBarButtonTextBox-styles () { + color: #979797; + font-family: "Helvetica Neue", Helvetica; + font-size: 11px; +} +.mblTabBarNoIcons-TabBarButtonTextBox-styles () { + line-height: 34px; + font-size: 20px; +} +.mblTabButton-styles () { + width: 100px; + height: 28px; + border-width: 1px 1px 1px 0px; + border-style: inset; + border-color: #9CACC0; + border-right-color: #5E708A; + background-image: -webkit-gradient(linear, left top, left bottom, from(#ABB9CA), to(#788DA9), color-stop(0.5, #8297AF), color-stop(0.5, #768BA7)); + font-family: Helvetica; + font-size: 13px; + color: white; + text-align: center; + line-height: 29px; +} +.mblTabButton-TabBarButtonAnchor-styles () { + height: 29px; +} +.mblTabBarTop-TabButton-TabBarButtonDiv-styles () { + display: none; +} +.mblTabBarHead-TabButton-TabBarButtonDiv-styles () { +} +.mblTabButton-FirstTabButtom-styles () { + -webkit-border-top-left-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + border-left-width: 1px; +} +.mblTabButton-LastTabButton-styles () { + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + border-right-color: #9CACC0; +} +.mblTabButton-img-styles () { +} +.mblTabBarButtonTextBoxSelected-styles () { + color: white; +} +.mblTabButtonSelected-styles () { +} +.mblTabButtonHighlighted-styles () { +} +.mblTabButtonImgDiv-styles () { + display: none; +} +.mblTabPanelHeader-styles () { + margin: 0px; + padding: 3px 0px 0px 0px; + height: 39px; + border-top: 1px solid #CDD5DF; + border-bottom: 1px solid #2D3642; + background-color: #889BB3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#B0BCCD), to(#6D84A2), color-stop(0.5, #889BB3), color-stop(0.5, #8195AF)); + font-family: Helvetica; + font-size: 20px; + color: white; + text-align: center; + line-height: 44px; + text-shadow: rgba(0,0,0,0.6) 0px -1px 0px; +} +.mblTabPanelHeader-TabButton-styles () { + margin-top: 3px; +} +.mblTabPanelHeader-TabButtonSelected-styles () { + background-color: #5877A2; + background-image: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} +.mblTabPanelHeader-TabButtonDomButton-styles () { + width: 43px; +} +.mblTabPanelHeader-TabButtonDomButtonClass-styles () { + left: 8px; +} +.mblTabPanelHeader-DomButton-styles () { +} +.mblTabPanelHeader-inHeading-styles () { +} +.mblTabPanelHeader-TabButton-inHeading-styles () { + margin-top: 6px; +} +.mblTabPanelHeader-TabButton-FirstTabButtom-inHeading-styles () { +} +.mblTabPanelHeader-TabButton-LastTabButtom-inHeading-styles () { +} +.mblTabPanelHeader-TabButtonSelected-inHeading-styles () { +} + +// TextArea.less +.mblTextArea-styles () { + padding: 4px 1px; + border-color: #9CACC0; + border-width: 1px; + border-style: inset; + -webkit-border-radius: 5px; + font-family: Helvetica; + font-size: 13px; +} +.mblExpandingTextArea-styles () { + margin: 2px; +} + +// TextBox.less +.mblTextBox-styles () { + height: 22px; + border: #9CACC0 1px inset; + -webkit-border-radius: 5px; + font-family: Helvetica; + font-size: 13px; +} + +// ToggleButton.less +.mblToggleButton-styles () { + padding: 0px 10px 0px 25px; + height: 29px; + border-width: 1px 1px 1px 1px; + border-style: outset; + border-color: #9CACC0; + -webkit-border-radius: 5px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE), color-stop(0.5, #F8F8F8), color-stop(0.5, #EEEEEE)); + font-family: Helvetica; + font-size: 13px; + color: black; + line-height: 29px; +} +.mblToggleButtonSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#F0F0F0), to(#BFBFBF), color-stop(0.5, #EBEBEB), color-stop(0.5, #DEDEDE)); + color: black; +} +.mblToggleButtonChecked-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#7A9DE9), to(#2362DD), color-stop(0.5, #366EDF), color-stop(0.5, #215FDC)); + color: white; +} +.mblToggleButtonChecked-after-styles () { + content: ""; + top: 6px; + left: 7px; + width: 5px; + height: 10px; + border-color: white; + border-width: 2px; + border-style: none solid solid none; + -webkit-transform: rotate(45deg) skew(10deg); + -webkit-transform-origin: 50% 50%; +} +.mblToggleButtonCheckedSelected-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); + color: white; +} +.mblToggleButtonCheckedSelected-after-styles () { + border-color: white; +} +.mblToggleButtonDisabled-styles () { + border-color: grey; + background-image: none; + color: grey; +} + +// Overlay.less +.mblOverlay-styles () { + background-image: -webkit-gradient(linear, left top, left bottom, from(#FDFDFD), to(#CECECE)); +} + +// Tooltip.less +.mblTooltip-styles () { + padding: 5px; + border: #5A5A5A 1px solid; + background-color: #121B2F; + background-image: -webkit-gradient(linear, left top, left bottom, from(#656872), to(#121B2F), color-stop(0.1,#2C3345),color-stop(0.1,#161F32)); + -webkit-border-radius: 8px; + opacity: .97; +} +.mblTooltipBubble-styles () { + background-color: #f9f7ba; + background-image: none; +} +.mblTooltipInnerArrow-Bubble-Above-styles () { + border-bottom-color: #f9f7ba; +} +.mblTooltipInnerArrow-Bubble-Below-styles () { + border-top-color: #f9f7ba; +} +.mblTooltipInnerArrow-Bubble-After-styles () { + border-left-color: #f9f7ba; +} +.mblTooltipInnerArrow-Bubble-Before-styles () { + border-right-color: #f9f7ba; +} +.mblTooltipArrow-styles () { + border: 11px solid transparent; +} +.mblTooltipArrow-Before-styles () { + border-left-width: 0; + border-right-color: #5A5A5A; +} +.mblTooltipArrow-After-styles () { + border-right-width: 0; + border-left-color: #5A5A5A; +} +.mblTooltipArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: #5A5A5A; +} +.mblTooltipArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: #5A5A5A; +} +.mblTooltipInnerArrow-Before-styles () { + border-left-width: 0; + border-right-color: #192235; +} +.mblTooltipInnerArrow-After-styles () { + border-right-width: 0; + border-left-color: #192235; +} +.mblTooltipInnerArrow-Above-styles () { + border-top-width: 0; + border-bottom-color: #656872; +} +.mblTooltipInnerArrow-Below-styles () { + border-bottom-width: 0; + border-top-color: #172035; +} +.mblTooltip-Heading-styles () { + border-top: 3px solid #4F5055; + border-bottom: 1px solid #2D3642; + border-left: 1px solid #2A2D47; + -webkit-border-radius: 3px 3px 0 0; + background-color: #889BB3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#5E6167), to(#1A1D24), color-stop(0.5, #2E322B)); + font-weight: normal; +} +.mblTooltip-Heading-ToolbarButton-styles () { + border: 1px inset #434450; + background-image: -webkit-gradient(linear, left top, left bottom, from(#686F80), to(#000924), color-stop(0.5, #000B29)); + font-weight: normal; +} + diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/transition.js b/js/dojo-release-1.7.2-src/dojox/mobile/transition.js new file mode 100644 index 0000000..aed509d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/transition.js @@ -0,0 +1,19 @@ +define([ + "dojo/_base/Deferred", + "dojo/_base/config" +], function(Deferred, config){ + /* summary: this is the wrapper module which load + * dojox/css3/transit conditionally. If mblCSS3Transition + * is set to 'dojox/css3/transit', it will be loaded as + * the module to conduct the view transition. + */ + if(config['mblCSS3Transition']){ + //require dojox/css3/transit and resolve it as the result of transitDeferred. + var transitDeferred = new Deferred(); + require([config['mblCSS3Transition']], function(transit){ + transitDeferred.resolve(transit); + }); + return transitDeferred; + } + return null; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mobile/uacss.js b/js/dojo-release-1.7.2-src/dojox/mobile/uacss.js new file mode 100644 index 0000000..d5d3b01 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mobile/uacss.js @@ -0,0 +1,15 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/window", + "dojox/mobile/sniff" +], function(dojo, lang, win, has){ + win.doc.documentElement.className += lang.trim([ + has('bb') ? "dj_bb" : "", + has('android') ? "dj_android" : "", + has('iphone') ? "dj_iphone" : "", + has('ipod') ? "dj_ipod" : "", + has('ipad') ? "dj_ipad" : "" + ].join(" ").replace(/ +/g," ")); + return dojo; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc.js b/js/dojo-release-1.7.2-src/dojox/mvc.js new file mode 100755 index 0000000..cf48514 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc.js @@ -0,0 +1,8 @@ +define(["./mvc/_base"], function(dxmvc){ + // module: + // dojox/mvc + // summary: + // Adds elements of MVC support to Dojo. + + return dxmvc; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/Bind.js b/js/dojo-release-1.7.2-src/dojox/mvc/Bind.js new file mode 100755 index 0000000..d7a6207 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/Bind.js @@ -0,0 +1,61 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array" +], function(lang, array){ + var mvc = lang.getObject("dojox.mvc", true); + /*===== + mvc = dojox.mvc; + =====*/ + + return lang.mixin(mvc, { + bind: function(/*dojo.Stateful*/ source, /*String*/ sourceProp, + /*dojo.Stateful*/ target, /*String*/ targetProp, + /*Function?*/ func, /*Boolean?*/ bindOnlyIfUnequal){ + // summary: + // Bind the specified property of the target to the specified + // property of the source with the supplied transformation. + // source: + // The source dojo.Stateful object for the bind. + // sourceProp: + // The name of the source's property whose change triggers the bind. + // target: + // The target dojo.Stateful object for the bind whose + // property will be updated with the result of the function. + // targetProp: + // The name of the target's property to be updated with the + // result of the function. + // func: + // The optional calculation to be performed to obtain the target + // property value. + // bindOnlyIfUnequal: + // Whether the bind notification should happen only if the old and + // new values are unequal (optional, defaults to false). + var convertedValue; + return source.watch(sourceProp, function(prop, oldValue, newValue){ + convertedValue = lang.isFunction(func) ? func(newValue) : newValue; + if(!bindOnlyIfUnequal || convertedValue != target.get(targetProp)){ + target.set(targetProp, convertedValue); + } + }); + }, + + bindInputs: function(/*dojo.Stateful[]*/ sourceBindArray, /*Function*/ func){ + // summary: + // Bind the values at the sources specified in the first argument + // array such that a composing function in the second argument is + // called when any of the values changes. + // sourceBindArray: + // The array of dojo.Stateful objects to watch values changes on. + // func: + // The composing function that is called when any of the source + // values changes. + // tags: + // protected + var watchHandles = []; + array.forEach(sourceBindArray, function(h){ + watchHandles.push(h.watch("value", func)); + }); + return watchHandles; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/Generate.js b/js/dojo-release-1.7.2-src/dojox/mvc/Generate.js new file mode 100755 index 0000000..884f125 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/Generate.js @@ -0,0 +1,154 @@ +define([ + "dojo/_base/lang", + "dojo/_base/declare", + "./_Container", + "./Group", + "dijit/form/TextBox" +], function(lang, declare, Container){ + /*===== + Container = dojox.mvc._Container; + declare = dojo.declare; + =====*/ + + return declare("dojox.mvc.Generate", [Container], { + // summary: + // A container that generates a view based on the data model its bound to. + // + // description: + // A generate introspects its data binding and creates a view contained in + // it that allows displaying the bound data. Child dijits or custom view + // components inside it inherit their parent data binding context from it. + + // _counter: [private] Integer + // A count maintained internally to always generate predictable widget + // IDs in the view generated by this container. + _counter : 0, + + // defaultWidgetMapping: Object + // The mapping of types to a widget class. Set widgetMapping to override this. + // + _defaultWidgetMapping: {"String" : "dijit.form.TextBox"}, + + // defaultClassMapping: Object + // The mapping of class to use. Set classMapping to override this. + // + _defaultClassMapping: {"Label" : "generate-label-cell", "String" : "generate-dijit-cell", "Heading" : "generate-heading", "Row" : "row"}, + + + // defaultIdNameMapping: Object + // The mapping of id and name to use. Set idNameMapping to override this. A count will be added to the id and name + // + _defaultIdNameMapping: {"String" : "textbox_t"}, + + ////////////////////// PRIVATE METHODS //////////////////////// + + _updateBinding: function(){ + // summary: + // Regenerate if the binding changes. + this.inherited(arguments); + this._buildContained(); + }, + + _buildContained: function(){ + // summary: + // Destroy any existing generated view, recreate it from scratch + // parse the new contents. + // tags: + // private + this._destroyBody(); + + this._counter = 0; + this.srcNodeRef.innerHTML = this._generateBody(this.get("binding")); + + this._createBody(); + }, + + _generateBody: function(binding, hideHeading){ + // summary: + // Generate the markup for the view associated with this generate + // container. + // binding: + // The associated data binding to generate a view for. + // hideHeading: + // Whether the property name should be displayed as a heading. + // tags: + // private + var body = ""; + for(var prop in binding){ + if(binding[prop] && lang.isFunction(binding[prop].toPlainObject)){ + if(binding[prop].get(0)){ + body += this._generateRepeat(binding[prop], prop); + }else if(binding[prop].value){ + // TODO: Data types based widgets + body += this._generateTextBox(prop); + }else{ + body += this._generateGroup(binding[prop], prop, hideHeading); + } + } + } + return body; + }, + + _generateRepeat: function(binding, repeatHeading){ + // summary: + // Generate a repeating model-bound view. + // binding: + // The bound node (a collection/array node) to generate a + // repeating UI/view for. + // repeatHeading: + // The heading to be used for this portion. + // tags: + // private + var headingClass = (this.classMapping && this.classMapping["Heading"]) ? this.classMapping["Heading"] : this._defaultClassMapping["Heading"]; + var repeat = '
                                                                  ' + + '
                                                                  ' + repeatHeading + '
                                                                  '; + repeat += this._generateBody(binding, true); + repeat += '
                                                                  '; + return repeat; + }, + + _generateGroup: function(binding, groupHeading, hideHeading){ + // summary: + // Generate a hierarchical model-bound view. + // binding: + // The bound (intermediate) node to generate a hierarchical + // view portion for. + // groupHeading: + // The heading to be used for this portion. + // hideHeading: + // Whether the heading should be hidden for this portion. + // tags: + // private + var group = '
                                                                  '; + if(!hideHeading){ + var headingClass = (this.classMapping && this.classMapping["Heading"]) ? this.classMapping["Heading"] : this._defaultClassMapping["Heading"]; + group += '
                                                                  ' + groupHeading + '
                                                                  '; + } + group += this._generateBody(binding); + group += '
                                                                  '; + return group; + }, + + _generateTextBox: function(prop){ + // summary: + // Produce a widget for a simple value. + // prop: + // The data model property name. + // tags: + // private + // TODO: Data type based widget generation / enhanced meta-data + var idname = this.idNameMapping ? this.idNameMapping["String"] : this._defaultIdNameMapping["String"]; + idname = idname + this._counter++; + var widClass = this.widgetMapping ? this.widgetMapping["String"] : this._defaultWidgetMapping["String"]; + var labelClass = (this.classMapping && this.classMapping["Label"]) ? this.classMapping["Label"] : this._defaultClassMapping["Label"]; + var stringClass = (this.classMapping && this.classMapping["String"]) ? this.classMapping["String"] : this._defaultClassMapping["String"]; + var rowClass = (this.classMapping && this.classMapping["Row"]) ? this.classMapping["Row"] : this._defaultClassMapping["Row"]; + + return '
                                                                  ' + + '' + + '' + + '
                                                                  '; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/Group.js b/js/dojo-release-1.7.2-src/dojox/mvc/Group.js new file mode 100755 index 0000000..a343f3b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/Group.js @@ -0,0 +1,16 @@ +define(["dojo/_base/declare", "dijit/_WidgetBase"], function(declare, WidgetBase){ + /*===== + WidgetBase = dijit._WidgetBase; + declare = dojo.declare; + =====*/ + + return declare("dojox.mvc.Group", [WidgetBase], { + // summary: + // A simple model-bound container widget with single-node binding to a data model. + // + // description: + // A group is usually bound to an intermediate dojo.Stateful node in the data model. + // Child dijits or custom view components inside a group inherit their parent + // data binding context from it. + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/Output.js b/js/dojo-release-1.7.2-src/dojox/mvc/Output.js new file mode 100755 index 0000000..1ba6ec2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/Output.js @@ -0,0 +1,91 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dojo/dom", + "dijit/_WidgetBase" +], function(declare, lang, dom, _WidgetBase){ + /*===== + declare = dojo.declare; + dom = dojo.dom; + _WidgetBase = dijit._WidgetBase; + =====*/ + + return declare("dojox.mvc.Output", [_WidgetBase], { + // summary: + // A simple widget that displays templated output, parts of which may + // be data-bound. + // + // description: + // Simple output example: + // + // | + // | Your balance is: ${this.value} + // | + // + // The output widget being data-bound, if the balance changes in the + // dojox.mvc.StatefulModel, the content within the will be + // updated accordingly. + + // templateString: [private] String + // The template or data-bound output content. + templateString : "", + + postscript: function(params, srcNodeRef){ + // summary: + // Override and save template from body. + this.srcNodeRef = dom.byId(srcNodeRef); + if(this.srcNodeRef){ + this.templateString = this.srcNodeRef.innerHTML; + this.srcNodeRef.innerHTML = ""; + } + this.inherited(arguments); + }, + + set: function(name, value){ + // summary: + // Override and refresh output on value change. + this.inherited(arguments); + if(name === "value"){ + this._output(); + } + }, + + ////////////////////// PRIVATE METHODS //////////////////////// + + _updateBinding: function(name, old, current){ + // summary: + // Rebuild output UI if data binding changes. + // tags: + // private + this.inherited(arguments); + this._output(); + }, + + _output: function(){ + // summary: + // Produce the data-bound output. + // tags: + // private + var outputNode = this.srcNodeRef || this.domNode; + outputNode.innerHTML = this.templateString ? this._exprRepl(this.templateString) : this.value; + }, + + _exprRepl: function(tmpl){ + // summary: + // Does substitution of ${foo+bar} type expressions in template string. + // tags: + // private + var pThis = this, transform = function(value, key){ + if(!value){return "";} + var exp = value.substr(2); + exp = exp.substr(0, exp.length - 1); + with(pThis){return eval(exp) || "";} + }; + transform = lang.hitch(this, transform); + return tmpl.replace(/\$\{.*?\}/g, + function(match, key, format){ + return transform(match, key).toString(); + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/README b/js/dojo-release-1.7.2-src/dojox/mvc/README new file mode 100755 index 0000000..f4b34a4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/README @@ -0,0 +1,82 @@ +------------------------------------------------------------------------------- +Project Name: dojox.mvc +------------------------------------------------------------------------------- +Version 0.1 +Release date: May 16th, 2011 +------------------------------------------------------------------------------- +Project state: experimental (code and API subject to change in future releases) +------------------------------------------------------------------------------- +Credits: + Rahul Akolkar (original author) + Ed Chatelain + Charlie Wiecha + +------------------------------------------------------------------------------- +Project description: + +Enterprise Rich Internet Applications (RIAs) often focus more on rich data +vs. the rich media aspects of RIAs more typical of consumer applications. +For example, such RIAs depend on implementing the well-known CRUD operations +on data stored in back-end systems. The dojox.mvc project focuses on +separation of MVC concerns on the client, thereby on easing development +of data-rich applications and accelerating the authoring of applications to +Create, Read, Update, and Delete data using a set of Dojo-based patterns. + +This project is useful across form factors. For example, it may be used with +dijit as well as dojox.mobile. + +We begin by introducing a first-class client-side data model based on +dojo.Stateful and extending Dojo Form widgets with support for the +Model-View-Control (MVC) pattern key to separating data from presentation in +user interface design. This basic MVC pattern allows for the flexible reuse of +each of the Model, View, and Control artifacts by application authors in +varying configurations. + +We also add support for a set of commonly needed MVC widgets and containers +such as: +- Output: a data-bound output widget +- Group: an aggregation of widgets with the same parent data binding context +- Repeat: a model-bound repeater widget that binds to a data collection +- Generate: an example of UI generation from a supplied data model + +For more, see descriptive class documentation at the top of the following +files: +dojox/mvc/StatefulModel.js +dojox/mvc/_DataBindingMixin.js + +For an introductory page on the included samples, see: +dojox/mvc/tests/mvc_index.html + +For mobile demos, see: +dojox/mvc/tests/mobile/demo/demo.html + +------------------------------------------------------------------------------- +Dependencies: + + Dojo Core (base, dojo.Stateful) + Dijit (dijit._WidgetBase, dijit.form.*) + +------------------------------------------------------------------------------- +Documentation: + +Documentation resides at: + http://dojotoolkit.org/reference-guide/dojox/mvc.html + +------------------------------------------------------------------------------- +Installation instructions: + +Grab the following from the Dojo SVN Repository: + http://svn.dojotoolkit.org/src/dojox/trunk/mvc.js + http://svn.dojotoolkit.org/src/dojox/trunk/mvc/* + +Install into the following directory structure: +/dojox/mvc.js +/dojox/mvc/* + +...which should be at the same level as your Dojo checkout. + +then dojo.require("dojox.mvc") in your application to load basic support for +data bindings. Other components (such as MVC containers i.e. Group, Repeat) +should be required as per application need. + +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/Repeat.js b/js/dojo-release-1.7.2-src/dojox/mvc/Repeat.js new file mode 100755 index 0000000..607ed89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/Repeat.js @@ -0,0 +1,108 @@ +define([ + "dojo/_base/declare", + "dojo/dom", + "./_Container" +], function(declare, dom, _Container){ + /*===== + declare = dojo.declare; + dom = dojo.dom; + _Container = dojox.mvc._Container; + =====*/ + + return declare("dojox.mvc.Repeat", [_Container], { + // summary: + // A model-bound container which binds to a collection within a data model + // and produces a repeating user-interface from a template for each + // iteration within the collection. + // + // description: + // A repeat is bound to an intermediate dojo.Stateful node corresponding + // to an array in the data model. Child dijits or custom view components + // inside it inherit their parent data binding context from it. + + // index: Integer + // An index used to track the current iteration when the repeating UI is + // produced. This may be used to parameterize the content in the repeat + // template for the current iteration. + // + // For example, consider a collection of search or query results where + // each item contains a "Name" property used to prime the "Results" data + // model. Then, the following CRUD-style UI displays all the names in + // the search results in text boxes where they may be updated or such. + // + // |
                                                                  + // |
                                                                  + // | + // | + // |
                                                                  + // |
                                                                  + index : 0, + + // summary: + // Override and save template from body. + postscript: function(params, srcNodeRef){ + this.srcNodeRef = dom.byId(srcNodeRef); + if(this.srcNodeRef){ + if(this.templateString == ""){ // only overwrite templateString if it has not been set + this.templateString = this.srcNodeRef.innerHTML; + } + this.srcNodeRef.innerHTML = ""; + } + this.inherited(arguments); + }, + + ////////////////////// PRIVATE METHODS //////////////////////// + + _updateBinding: function(name, old, current){ + // summary: + // Rebuild repeating UI if data binding changes. + // tags: + // private + this.inherited(arguments); + this._buildContained(); + }, + + _buildContained: function(){ + // summary: + // Destroy any existing contained view, recreate the repeating UI + // markup and parse the new contents. + // tags: + // private + + // TODO: Potential optimization: only create new widgets for insert, only destroy for delete. + this._destroyBody(); + this._updateAddRemoveWatch(); + + var insert = ""; + for(this.index = 0; this.get("binding").get(this.index); this.index++){ + insert += this._exprRepl(this.templateString); + } + var repeatNode = this.srcNodeRef || this.domNode; + repeatNode.innerHTML = insert; + + // srcNodeRef is used in _createBody, so in the programmatic create case where repeatNode was set + // from this.domNode we need to set srcNodeRef from repeatNode + this.srcNodeRef = repeatNode; + + this._createBody(); + }, + + _updateAddRemoveWatch: function(){ + // summary: + // Updates the watch handle when binding changes. + // tags: + // private + if(this._addRemoveWatch){ + this._addRemoveWatch.unwatch(); + } + var pThis = this; + this._addRemoveWatch = this.get("binding").watch(function(name,old,current){ + if(/^[0-9]+$/.test(name.toString())){ + if(!old || !current){ + pThis._buildContained(); + } // else not an insert or delete, will get updated in above + } + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/StatefulModel.js b/js/dojo-release-1.7.2-src/dojox/mvc/StatefulModel.js new file mode 100755 index 0000000..aab1535 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/StatefulModel.js @@ -0,0 +1,462 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/declare", + "dojo/Stateful" +], function(lang, array, declare, Stateful){ + /*===== + declare = dojo.declare; + Stateful = dojo.Stateful; + =====*/ + + var StatefulModel = declare("dojox.mvc.StatefulModel", [Stateful], { + // summary: + // The first-class native JavaScript data model based on dojo.Stateful + // that wraps any data structure(s) that may be relevant for a view, + // a view portion, a dijit or any custom view layer component. + // + // description: + // A data model is effectively instantiated with a plain JavaScript + // object which specifies the initial data structure for the model. + // + // | var struct = { + // | order : "abc123", + // | shipto : { + // | address : "123 Example St, New York, NY", + // | phone : "212-000-0000" + // | }, + // | items : [ + // | { part : "x12345", num : 1 }, + // | { part : "n09876", num : 3 } + // | ] + // | }; + // | + // | var model = dojox.mvc.newStatefulModel({ data : struct }); + // + // The simple example above shows an inline plain JavaScript object + // illustrating the data structure to prime the model with, however + // the underlying data may be made available by other means, such as + // from the results of a dojo.store or dojo.data query. + // + // To deal with stores providing immediate values or Promises, a + // factory method for model instantiation is provided. This method + // will either return an immediate model or a model Promise depending + // on the nature of the store. + // + // | var model = dojox.mvc.newStatefulModel({ store: someStore }); + // + // The created data model has the following properties: + // + // - It enables dijits or custom components in the view to "bind" to + // data within the model. A bind creates a bi-directional update + // mechanism between the bound view and the underlying data: + // - The data model is "live" data i.e. it maintains any updates + // driven by the view on the underlying data. + // - The data model issues updates to portions of the view if the + // data they bind to is updated in the model. For example, if two + // dijits are bound to the same part of a data model, updating the + // value of one in the view will cause the data model to issue an + // update to the other containing the new value. + // + // - The data model internally creates a tree of dojo.Stateful + // objects that matches the input, which is effectively a plain + // JavaScript object i.e. "pure data". This tree allows dijits or + // other view components to bind to any node within the data model. + // Typically, dijits with simple values bind to leaf nodes of the + // datamodel, whereas containers bind to internal nodes of the + // datamodel. For example, a datamodel created using the object below + // will generate the dojo.Stateful tree as shown: + // + // | var model = dojox.mvc.newStatefulModel({ data : { + // | prop1 : "foo", + // | prop2 : { + // | leaf1 : "bar", + // | leaf2 : "baz" + // | } + // | }}); + // | + // | // The created dojo.Stateful tree is illustrated below (all nodes are dojo.Stateful objects) + // | // + // | // o (root node) + // | // / \ + // | // (prop1 node) o o (prop2 node) + // | // / \ + // | // (leaf1 node) o o (leaf2 node) + // | // + // | // The root node is accessed using the expression "model" (the var name above). The prop1 + // | // node is accessed using the expression "model.prop1", the leaf2 node is accessed using + // | // the expression "model.prop2.leaf2" and so on. + // + // - Each of the dojo.Stateful nodes in the model may store data as well + // as associated "meta-data", which includes things such as whether + // the data is required or readOnly etc. This meta-data differs from + // that maintained by, for example, an individual dijit in that this + // is maintained by the datamodel and may therefore be affected by + // datamodel-level constraints that span multiple dijits or even + // additional criteria such as server-side computations. + // + // - When the model is backed by a dojo.store or dojo.data query, the + // client-side updates can be persisted once the client is ready to + // "submit" the changes (which may include both value changes or + // structural changes - adds/deletes). The datamodel allows control + // over when the underlying data is persisted i.e. this can be more + // incremental or batched per application needs. + // + // There need not be a one-to-one association between a datamodel and + // a view or portion thereof. For example, multiple datamodels may + // back the dijits in a view. Indeed, this may be useful where the + // binding data comes from a number of data sources or queries, for + // example. Just as well, dijits from multiple portions of the view + // may be bound to a single datamodel. + // + // Finally, requiring this class also enables all dijits to become data + // binding aware. The data binding is commonly specified declaratively + // via the "ref" property in the "data-dojo-props" attribute value. + // + // To illustrate, the following is the "Hello World" of such data-bound + // widget examples: + // + // | + // | + // | + // + // or + // + // | + // | + // | + // + // Such data binding awareness for dijits is added by extending the + // dijit._WidgetBase class to include data binding capabilities + // provided by dojox.mvc._DataBindingMixin, and this class declares a + // dependency on dojox.mvc._DataBindingMixin. + // + // The presence of a data model and the data-binding capabilities + // outlined above support the flexible development of a number of MVC + // patterns on the client. As an example, CRUD operations can be + // supported with minimal application code. + + // data: Object + // The plain JavaScript object / data structure used to initialize + // this model. At any point in time, it holds the lasted saved model + // state. + // Either data or store property must be provided. + data: null, + + // store: dojo.store.DataStore + // The data store from where to retrieve initial data for this model. + // An optional query may also be provided along with this store. + // Either data or store property must be provided. + store: null, + + // valid: boolean + // Whether this model deems the associated data to be valid. + valid: true, + + // value: Object + // The associated value (if this is a leaf node). The value of + // intermediate nodes in the model is not defined. + value: "", + + //////////////////////// PUBLIC METHODS / API //////////////////////// + + reset: function(){ + // summary: + // Resets this data model values to its original state. + // Structural changes to the data model (such as adds or removes) + // are not restored. + if(lang.isObject(this.data) && !(this.data instanceof Date) && !(this.data instanceof RegExp)){ + for(var x in this){ + if(this[x] && lang.isFunction(this[x].reset)){ + this[x].reset(); + } + } + }else{ + this.set("value", this.data); + } + }, + + commit: function(/*"dojo.store.DataStore?"*/ store){ + // summary: + // Commits this data model: + // - Saves the current state such that a subsequent reset will not + // undo any prior changes. + // - Persists client-side changes to the data store, if a store + // has been supplied as a parameter or at instantiation. + // store: + // dojo.store.DataStore + // Optional dojo.store.DataStore to use for this commit, if none + // provided but one was provided at instantiation time, that store + // will be used instead. + this._commit(); + var ds = store || this.store; + if(ds){ + this._saveToStore(ds); + } + }, + + toPlainObject: function(){ + // summary: + // Produces a plain JavaScript object representation of the data + // currently within this data model. + // returns: + // Object + // The plain JavaScript object representation of the data in this + // model. + var ret = {}; + var nested = false; + for(var p in this){ + if(this[p] && lang.isFunction(this[p].toPlainObject)){ + if(!nested && typeof this.get("length") === "number"){ + ret = []; + } + nested = true; + ret[p] = this[p].toPlainObject(); + } + } + if(!nested){ + if(this.get("length") === 0){ + ret = []; + }else{ + ret = this.value; + } + } + return ret; + }, + + add: function(/*String*/ name, /*dojo.Stateful*/ stateful){ + // summary: + // Adds a dojo.Stateful tree represented by the given + // dojox.mvc.StatefulModel at the given property name. + // name: + // The property name to use whose value will become the given + // dijit.Stateful tree. + // stateful: + // The dojox.mvc.StatefulModel to insert. + // description: + // In case of arrays, the property names are indices passed + // as Strings. An addition of such a dojo.Stateful node + // results in right-shifting any trailing sibling nodes. + var n, n1, elem, elem1, save = new StatefulModel({ data : "" }); + if(typeof this.get("length") === "number" && /^[0-9]+$/.test(name.toString())){ + n = name; + if(!this.get(n)){ + if(this.get("length") == 0 && n == 0){ // handle the empty array case + this.set(n, stateful); + } else { + n1 = n-1; + if(!this.get(n1)){ + throw new Error("Out of bounds insert attempted, must be contiguous."); + } + this.set(n, stateful); + } + }else{ + n1 = n-0+1; + elem = stateful; + elem1 = this.get(n1); + if(!elem1){ + this.set(n1, elem); + }else{ + do{ + this._copyStatefulProperties(elem1, save); + this._copyStatefulProperties(elem, elem1); + this._copyStatefulProperties(save, elem); + this.set(n1, elem1); // for watchers + elem1 = this.get(++n1); + }while(elem1); + this.set(n1, elem); + } + } + this.set("length", this.get("length") + 1); + }else{ + this.set(name, stateful); + } + }, + + remove: function(/*String*/ name){ + // summary: + // Removes the dojo.Stateful tree at the given property name. + // name: + // The property name from where the tree will be removed. + // description: + // In case of arrays, the property names are indices passed + // as Strings. A removal of such a dojo.Stateful node + // results in left-shifting any trailing sibling nodes. + var n, elem, elem1; + if(typeof this.get("length") === "number" && /^[0-9]+$/.test(name.toString())){ + n = name; + elem = this.get(n); + if(!elem){ + throw new Error("Out of bounds delete attempted - no such index: " + n); + }else{ + this._removals = this._removals || []; + this._removals.push(elem.toPlainObject()); + n1 = n-0+1; + elem1 = this.get(n1); + if(!elem1){ + this.set(n, undefined); + delete this[n]; + }else{ + while(elem1){ + this._copyStatefulProperties(elem1, elem); + elem = this.get(n1++); + elem1 = this.get(n1); + } + this.set(n1-1, undefined); + delete this[n1-1]; + } + this.set("length", this.get("length") - 1); + } + }else{ + elem = this.get(name); + if(!elem){ + throw new Error("Illegal delete attempted - no such property: " + name); + }else{ + this._removals = this._removals || []; + this._removals.push(elem.toPlainObject()); + this.set(name, undefined); + delete this[name]; + } + } + }, + + valueOf: function(){ + // summary: + // Returns the value representation of the data currently within this data model. + // returns: + // Object + // The object representation of the data in this model. + return this.toPlainObject(); + }, + + toString: function(){ + // summary: + // Returns the string representation of the data currently within this data model. + // returns: + // String + // The object representation of the data in this model. + return this.value === "" && this.data ? this.data.toString() : this.value.toString(); + }, + + //////////////////////// PRIVATE INITIALIZATION METHOD //////////////////////// + + constructor: function(/*Object*/ args){ + // summary: + // Instantiates a new data model that view components may bind to. + // This is a private constructor, use the factory method + // instead: dojox.mvc.newStatefulModel(args) + // args: + // The mixin properties. + // description: + // Creates a tree of dojo.Stateful objects matching the initial + // data structure passed as input. The mixin property "data" is + // used to provide a plain JavaScript object directly representing + // the data structure. + // tags: + // private + var data = (args && "data" in args) ? args.data : this.data; + this._createModel(data); + }, + + //////////////////////// PRIVATE METHODS //////////////////////// + + _createModel: function(/*Object*/ obj){ + // summary: + // Create this data model from provided input data. + // obj: + // The input for the model, as a plain JavaScript object. + // tags: + // private + if(lang.isObject(obj) && !(obj instanceof Date) && !(obj instanceof RegExp) && obj !== null){ + for(var x in obj){ + var newProp = new StatefulModel({ data : obj[x] }); + this.set(x, newProp); + } + if(lang.isArray(obj)){ + this.set("length", obj.length); + } + }else{ + this.set("value", obj); + } + }, + + _commit: function(){ + // summary: + // Commits this data model, saves the current state into data to become the saved state, + // so a reset will not undo any prior changes. + // tags: + // private + for(var x in this){ + if(this[x] && lang.isFunction(this[x]._commit)){ + this[x]._commit(); + } + } + this.data = this.toPlainObject(); + }, + + _saveToStore: function(/*"dojo.store.DataStore"*/ store){ + // summary: + // Commit the current values to the data store: + // - remove() any deleted entries + // - put() any new or updated entries + // store: + // dojo.store.DataStore to use for this commit. + // tags: + // private + if(this._removals){ + array.forEach(this._removals, function(d){ + store.remove(store.getIdentity(d)); + }, this); + delete this._removals; + } + var dataToCommit = this.toPlainObject(); + if(lang.isArray(dataToCommit)){ + array.forEach(dataToCommit, function(d){ + store.put(d); + }, this); + }else{ + store.put(dataToCommit); + } + }, + + _copyStatefulProperties: function(/*dojo.Stateful*/ src, /*dojo.Stateful*/ dest){ + // summary: + // Copy only the dojo.Stateful properties from src to dest (uses + // duck typing). + // src: + // The source object for the copy. + // dest: + // The target object of the copy. + // tags: + // private + for(var x in src){ + var o = src.get(x); + if(o && lang.isObject(o) && lang.isFunction(o.get)){ + dest.set(x, o); + } + } + } + }); + + return StatefulModel; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/_Container.js b/js/dojo-release-1.7.2-src/dojox/mvc/_Container.js new file mode 100755 index 0000000..6c475f2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/_Container.js @@ -0,0 +1,107 @@ +define([ + "dojo/_base/declare", + "dojo/_base/lang", + "dijit/_WidgetBase", + "dojo/regexp" +], function(declare, lang, _WidgetBase, regexp){ + /*===== + declare = dojo.declare; + _WidgetBase = dijit._WidgetBase; + =====*/ + + return declare("dojox.mvc._Container", [_WidgetBase], { + + // stopParser: [private] Boolean + // Flag to parser to not try and parse widgets declared inside the container. + stopParser: true, + + // exprchar: Character + // Character to use for a substitution expression, for a substitution string like ${this.index} + exprchar: '$', + + // templateString: [private] String + // The template or content for this container. It is usually obtained from the + // body of the container and may be modified or repeated over a collection/array. + // In this simple implementation, attach points, attach events and WAI + // attributes are not supported in the template. + templateString : "", + + // _containedWidgets: [protected] dijit._Widget[] + // The array of contained widgets at any given point in time within this container. + _containedWidgets : [], + + ////////////////////// PROTECTED METHODS //////////////////////// + + _parser : null, + + _createBody: function(){ + // summary: + // Parse the body of this MVC container widget. + // description: + // The bodies of MVC containers may be model-bound views generated dynamically. + // Parse the body, start an contained widgets and attach template nodes for + // contained widgets as necessary. + // tags: + // protected + if(!this._parser){ + try{ + // returns dojo/parser if loaded, otherwise throws + this._parser = require("dojo/parser"); + }catch(e){ + // if here, dojo/parser not loaded + try{ + // returns dojox/mobile/parser if loaded, otherwise throws + this._parser = require("dojox/mobile/parser"); + }catch(e){ + // if here, both dojox/mobile/parser and dojo/parser are not loaded + console.error("Add explicit require(['dojo/parser']) or explicit require(['dojox/mobile/parser']), one of the parsers is required!"); + } + } + } + if(this._parser){ + this._containedWidgets = this._parser.parse(this.srcNodeRef,{ + template: true, + inherited: {dir: this.dir, lang: this.lang}, + propsThis: this, + scope: "dojo" + }); + } + }, + + _destroyBody: function(){ + // summary: + // Destroy the body of this MVC container widget. Also destroys any + // contained widgets. + // tags: + // protected + if(this._containedWidgets && this._containedWidgets.length > 0){ + for(var n = this._containedWidgets.length - 1; n > -1; n--){ + var w = this._containedWidgets[n]; + if(w && !w._destroyed && w.destroy){ + w.destroy(); + } + } + } + }, + + ////////////////////// PRIVATE METHODS //////////////////////// + + _exprRepl: function(tmpl){ + // summary: + // Does substitution of ${foo+bar} type expressions in template string. + // tags: + // private + var pThis = this, transform = function(value, key){ + if(!value){return "";} + var exp = value.substr(2); + exp = exp.substr(0, exp.length - 1); + with(pThis){return eval(exp);} + }; + transform = lang.hitch(this, transform); + return tmpl.replace(new RegExp(regexp.escapeString(this.exprchar)+"(\{.*?\})","g"), + function(match, key, format){ + return transform(match, key).toString(); + }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/_DataBindingMixin.js b/js/dojo-release-1.7.2-src/dojox/mvc/_DataBindingMixin.js new file mode 100755 index 0000000..5a97a0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/_DataBindingMixin.js @@ -0,0 +1,389 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/declare", + "dojo/Stateful", + "dijit/registry" +], function(lang, array, declare, Stateful, registry){ + /*===== + registry = dijit.registry; + =====*/ + + return declare("dojox.mvc._DataBindingMixin", null, { + // summary: + // Provides the ability for dijits or custom view components to become + // data binding aware. + // + // description: + // Data binding awareness enables dijits or other view layer + // components to bind to locations within a client-side data model, + // which is commonly an instance of the dojox.mvc.StatefulModel class. A + // bind is a bi-directional update mechanism which is capable of + // synchronizing value changes between the bound dijit or other view + // component and the specified location within the data model, as well + // as changes to other properties such as "valid", "required", + // "readOnly" etc. + // + // The data binding is commonly specified declaratively via the "ref" + // property in the "data-dojo-props" attribute value. + // + // Consider the following simple example: + // + // | + // | + // | + // | + // | + // + // In the above example, both dijit.form.TextBox instances (with IDs + // "hello1" and "hello2" respectively) are bound to the same reference + // location in the data model i.e. "hello" via the "ref" expression + // "model.hello". Both will have an initial value of "Hello World". + // Thereafter, a change in the value of either of the two textboxes + // will cause an update of the value in the data model at location + // "hello" which will in turn cause a matching update of the value in + // the other textbox. + + // ref: String||dojox.mvc.StatefulModel + // The value of the data binding expression passed declaratively by + // the developer. This usually references a location within an + // existing datamodel and may be a relative reference based on the + // parent / container data binding (dot-separated string). + ref: null, + +/*===== + // binding: [readOnly] dojox.mvc.StatefulModel + // The read only value of the resolved data binding for this widget. + // This may be a result of resolving various relative refs along + // the parent axis. + binding: null, +=====*/ + + //////////////////////// PUBLIC METHODS //////////////////////// + + isValid: function(){ + // summary: + // Returns the validity of the data binding. + // returns: + // Boolean + // The validity associated with the data binding. + // description: + // This function is meant to provide an API bridge to the dijit API. + // Validity of data-bound dijits is a function of multiple concerns: + // - The validity of the value as ascertained by the data binding + // and constraints specified in the data model (usually semantic). + // - The validity of the value as ascertained by the widget itself + // based on widget constraints (usually syntactic). + // In order for dijits to function correctly in data-bound + // environments, it is imperative that their isValid() functions + // assess the model validity of the data binding via the + // this.inherited(arguments) hierarchy and declare any values + // failing the test as invalid. + return this.get("binding") ? this.get("binding").get("valid") : true; + }, + + //////////////////////// LIFECYCLE METHODS //////////////////////// + + _dbstartup: function(){ + // summary: + // Tie data binding initialization into the widget lifecycle, at + // widget startup. + // tags: + // private + if(this._databound){ + return; + } + this._unwatchArray(this._viewWatchHandles); + // add 2 new view watches, active only after widget has started up + this._viewWatchHandles = [ + // 1. data binding refs + this.watch("ref", function(name, old, current){ + if(this._databound){ + this._setupBinding(); + } + }), + // 2. widget values + this.watch("value", function(name, old, current){ + if(this._databound){ + var binding = this.get("binding"); + if(binding){ + // dont set value if the valueOf current and old match. + if(!((current && old) && (old.valueOf() === current.valueOf()))){ + binding.set("value", current); + } + } + } + }) + ]; + this._beingBound = true; + this._setupBinding(); + delete this._beingBound; + this._databound = true; + }, + + //////////////////////// PRIVATE METHODS //////////////////////// + + _setupBinding: function(parentBinding){ + // summary: + // Calculate and set the dojo.Stateful data binding for the + // associated dijit or custom view component. + // parentBinding: + // The binding of this widget/view component's data-bound parent, + // if available. + // description: + // The declarative data binding reference may be specified in two + // ways via markup: + // - For older style documents (non validating), controls may use + // the "ref" attribute to specify the data binding reference + // (String). + // - For validating documents using the new Dojo parser, controls + // may specify the data binding reference (String) as the "ref" + // property specified in the data-dojo-props attribute. + // Once the ref value is obtained using either of the above means, + // the binding is set up for this control and its required, readOnly + // etc. properties are refreshed. + // The data binding may be specified as a direct reference to the + // dojo.Stateful model node or as a string relative to its DOM + // parent or another widget. + // There are three ways in which the data binding node reference is + // calculated when specified as a string: + // - If an explicit parent widget is specified, the binding is + // calculated relative to the parent widget's data binding. + // - For any dijits that specify a data binding reference, + // we walk up their DOM hierarchy to obtain the first container + // dijit that has a data binding set up and use the reference String + // as a property name relative to the parent's data binding context. + // - If no such parent is found i.e. for the outermost container + // dijits that specify a data binding reference, the binding is + // calculated by treating the reference String as an expression and + // evaluating it to obtain the dojo.Stateful node in the datamodel. + // This method throws an Error in these two conditions: + // - The ref is an expression i.e. outermost bound dijit, but the + // expression evaluation fails. + // - The calculated binding turns out to not be an instance of a + // dojo.Stateful node. + // tags: + // private + if(!this.ref){ + return; // nothing to do here + } + var ref = this.ref, pw, pb, binding; + // Now compute the model node to bind to + if(ref && lang.isFunction(ref.toPlainObject)){ // programmatic instantiation or direct ref + binding = ref; + }else if(/^\s*expr\s*:\s*/.test(ref)){ // declarative: refs as dot-separated expressions + ref = ref.replace(/^\s*expr\s*:\s*/, ""); + binding = lang.getObject(ref); + }else if(/^\s*rel\s*:\s*/.test(ref)){ // declarative: refs relative to parent binding, dot-separated + ref = ref.replace(/^\s*rel\s*:\s*/, ""); + parentBinding = parentBinding || this._getParentBindingFromDOM(); + if(parentBinding){ + binding = lang.getObject("" + ref, false, parentBinding); + } + }else if(/^\s*widget\s*:\s*/.test(ref)){ // declarative: refs relative to another dijits binding, dot-separated + ref = ref.replace(/^\s*widget\s*:\s*/, ""); + var tokens = ref.split("."); + if(tokens.length == 1){ + binding = registry.byId(ref).get("binding"); + }else{ + pb = registry.byId(tokens.shift()).get("binding"); + binding = lang.getObject(tokens.join("."), false, pb); + } + }else{ // defaults: outermost refs are expressions, nested are relative to parents + parentBinding = parentBinding || this._getParentBindingFromDOM(); + if(parentBinding){ + binding = lang.getObject("" + ref, false, parentBinding); + }else{ + try{ + if(lang.getObject(ref) instanceof Stateful){ + binding = lang.getObject(ref); + } + }catch(err){ + if(ref.indexOf("${") == -1){ // Ignore templated refs such as in repeat body + throw new Error("dojox.mvc._DataBindingMixin: '" + this.domNode + + "' widget with illegal ref expression: '" + ref + "'"); + } + } + } + } + if(binding){ + if(lang.isFunction(binding.toPlainObject)){ + this.binding = binding; + this._updateBinding("binding", null, binding); + }else{ + throw new Error("dojox.mvc._DataBindingMixin: '" + this.domNode + + "' widget with illegal ref not evaluating to a dojo.Stateful node: '" + ref + "'"); + } + } + }, + + _isEqual: function(one, other){ + // test for equality + return one === other || + // test for NaN === NaN + isNaN(one) && typeof one === 'number' && + isNaN(other) && typeof other === 'number'; + }, + + _updateBinding: function(name, old, current){ + // summary: + // Set the data binding to the supplied value, which must be a + // dojo.Stateful node of a data model. + // name: + // The name of the binding property (always "binding"). + // old: + // The old dojo.Stateful binding node of the data model. + // current: + // The new dojo.Stateful binding node of the data model. + // description: + // Applies the specified data binding to the attached widget. + // Loses any prior watch registrations on the previously active + // bind, registers the new one, updates data binds of any contained + // widgets and also refreshes all associated properties (valid, + // required etc.) + // tags: + // private + + // remove all existing watches (if there are any, there will be 5) + this._unwatchArray(this._modelWatchHandles); + // add 5 new model watches + var binding = this.get("binding"); + if(binding && lang.isFunction(binding.watch)){ + var pThis = this; + this._modelWatchHandles = [ + // 1. value - no default + binding.watch("value", function (name, old, current){ + if(pThis._isEqual(old, current)){return;} + if(pThis._isEqual(pThis.get('value'), current)){return;} + pThis.set("value", current); + }), + // 2. valid - default "true" + binding.watch("valid", function (name, old, current){ + pThis._updateProperty(name, old, current, true); + if(current !== pThis.get(name)){ + if(pThis.validate && lang.isFunction(pThis.validate)){ + pThis.validate(); + } + } + }), + // 3. required - default "false" + binding.watch("required", function (name, old, current){ + pThis._updateProperty(name, old, current, false, name, current); + }), + // 4. readOnly - default "false" + binding.watch("readOnly", function (name, old, current){ + pThis._updateProperty(name, old, current, false, name, current); + }), + // 5. relevant - default "true" + binding.watch("relevant", function (name, old, current){ + pThis._updateProperty(name, old, current, false, "disabled", !current); + }) + ]; + var val = binding.get("value"); + if(val != null){ + this.set("value", val); + } + } + this._updateChildBindings(); + }, + + _updateProperty: function(name, old, current, defaultValue, setPropName, setPropValue){ + // summary: + // Update a binding property of the bound widget. + // name: + // The binding property name. + // old: + // The old value of the binding property. + // current: + // The new or current value of the binding property. + // defaultValue: + // The optional value to be applied as the current value of the + // binding property if the current value is null. + // setPropName: + // The optional name of a stateful property to set on the bound + // widget. + // setPropValue: + // The value, if an optional name is provided, for the stateful + // property of the bound widget. + // tags: + // private + if(old === current){ + return; + } + if(current === null && defaultValue !== undefined){ + current = defaultValue; + } + if(current !== this.get("binding").get(name)){ + this.get("binding").set(name, current); + } + if(setPropName){ + this.set(setPropName, setPropValue); + } + }, + _updateChildBindings: function(parentBind){ + // summary: + // Update this widget's value based on the current binding and + // set up the bindings of all contained widgets so as to refresh + // any relative binding references. + // findWidgets does not return children of widgets so need to also + // update children of widgets which are not bound but may hold widgets which are. + // parentBind: + // The binding on the parent of a widget whose children may have bindings + // which need to be updated. + // tags: + // private + var binding = this.get("binding") || parentBind; + if(binding && !this._beingBound){ + array.forEach(registry.findWidgets(this.domNode), function(widget){ + if(widget.ref && widget._setupBinding){ + widget._setupBinding(binding); + }else{ + widget._updateChildBindings(binding); + } + }); + } + }, + + _getParentBindingFromDOM: function(){ + // summary: + // Get the parent binding by traversing the DOM ancestors to find + // the first enclosing data-bound widget. + // returns: + // The parent binding, if one exists along the DOM parent axis. + // tags: + // private + var pn = this.domNode.parentNode, pw, pb; + while(pn){ + pw = registry.getEnclosingWidget(pn); + if(pw){ + pb = pw.get("binding"); + if(pb && lang.isFunction(pb.toPlainObject)){ + break; + } + } + pn = pw ? pw.domNode.parentNode : null; + } + return pb; + }, + + _unwatchArray: function(watchHandles){ + // summary: + // Given an array of watch handles, unwatch all. + // watchHandles: + // The array of watch handles. + // tags: + // private + array.forEach(watchHandles, function(h){ h.unwatch(); }); + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/_base.js b/js/dojo-release-1.7.2-src/dojox/mvc/_base.js new file mode 100755 index 0000000..fee784d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/_base.js @@ -0,0 +1,64 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "./StatefulModel", + "./Bind", + "./_DataBindingMixin", + "./_patches" +], function(kernel, lang, StatefulModel){ + // module: + // dojox/mvc/_base + // summary: + // Pulls in essential MVC dependencies such as basic support for + // data binds, a data model and data binding mixin for dijits. + kernel.experimental("dojox.mvc"); + + var mvc = lang.getObject("dojox.mvc", true); + /*===== + mvc = dojox.mvc; + =====*/ + + // Factory method for dojox.mvc.StatefulModel instances + mvc.newStatefulModel = function(/*Object*/args){ + // summary: + // Factory method that instantiates a new data model that view + // components may bind to. + // args: + // The mixin properties. + // description: + // Factory method that returns a client-side data model, which is a + // tree of dojo.Stateful objects matching the initial data structure + // passed as input: + // - The mixin property "data" is used to provide a plain JavaScript + // object directly representing the data structure. + // - The mixin property "store", along with an optional mixin property + // "query", is used to provide a data store to query to obtain the + // initial data. + // This function returns an immediate dojox.mvc.StatefulModel instance or + // a Promise for such an instance as follows: + // - if args.data: returns immediate + // - if args.store: + // - if store returns immediate: this function returns immediate + // - if store returns a Promise: this function returns a model + // Promise + if(args.data){ + return new StatefulModel({ data : args.data }); + }else if(args.store && lang.isFunction(args.store.query)){ + var model; + var result = args.store.query(args.query); + if(result.then){ + return (result.then(function(data){ + model = new StatefulModel({ data : data }); + model.store = args.store; + return model; + })); + }else{ + model = new StatefulModel({ data : result }); + model.store = args.store; + return model; + } + } + }; + + return mvc; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/_patches.js b/js/dojo-release-1.7.2-src/dojox/mvc/_patches.js new file mode 100755 index 0000000..61fc563 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/_patches.js @@ -0,0 +1,49 @@ +define([ + "dojo/_base/lang", + "dojo/_base/array", + "dijit/_WidgetBase", + "./_DataBindingMixin", + "dijit/form/ValidationTextBox", + "dijit/form/NumberTextBox" +], function(lang, array, wb, dbm, vtb, ntb){ + /*===== + vtb = dijit.form.ValidationTextBox; + ntb = dijit.form.NumberTextBox; + dbm = dojox.mvc._DataBindingMixin; + wb = dijit._WidgetBase; + =====*/ + + //Apply the data binding mixin to all dijits, see mixin class description for details + lang.extend(wb, new dbm()); + + // monkey patch dijit._WidgetBase.startup to get data binds set up + var oldWidgetBaseStartup = wb.prototype.startup; + wb.prototype.startup = function(){ + this._dbstartup(); + oldWidgetBaseStartup.apply(this); + }; + + // monkey patch dijit._WidgetBase.destroy to remove watches setup in _DataBindingMixin + var oldWidgetBaseDestroy = wb.prototype.destroy; + wb.prototype.destroy = function(/*Boolean*/ preserveDom){ + if(this._modelWatchHandles){ + array.forEach(this._modelWatchHandles, function(h){ h.unwatch(); }); + } + if(this._viewWatchHandles){ + array.forEach(this._viewWatchHandles, function(h){ h.unwatch(); }); + } + oldWidgetBaseDestroy.apply(this, [preserveDom]); + }; + + // monkey patch dijit.form.ValidationTextBox.isValid to check this.inherited for isValid + var oldValidationTextBoxIsValid = vtb.prototype.isValid; + vtb.prototype.isValid = function(/*Boolean*/ isFocused){ + return (this.inherited("isValid", arguments) !== false && oldValidationTextBoxIsValid.apply(this, [isFocused])); + }; + + // monkey patch dijit.form.NumberTextBox.isValid to check this.inherited for isValid + var oldNumberTextBoxIsValid = ntb.prototype.isValid; + ntb.prototype.isValid = function(/*Boolean*/ isFocused){ + return (this.inherited("isValid", arguments) !== false && oldNumberTextBoxIsValid.apply(this, [isFocused])); + }; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/_data/mvcGenerateData.json b/js/dojo-release-1.7.2-src/dojox/mvc/tests/_data/mvcGenerateData.json new file mode 100755 index 0000000..12dfaa3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/_data/mvcGenerateData.json @@ -0,0 +1,9 @@ +{ + "identifier": "Serial", + "items": [ + { "Serial" : "12321312", "First" : "Andy", "Last" : "Anderson" }, + { "Serial" : "34432423", "First" : "Buck", "Last" : "Benjamin" }, + { "Serial" : "64343423", "First" : "Chad", "Last" : "Chambers" }, + { "Serial" : "76574534", "First" : "Dean", "Last" : "Davidson" } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/_data/mvcRepeatData.json b/js/dojo-release-1.7.2-src/dojox/mvc/tests/_data/mvcRepeatData.json new file mode 100755 index 0000000..191b80b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/_data/mvcRepeatData.json @@ -0,0 +1,105 @@ +{ + "identifier": "Serial", + "items": [ + { + "Serial" : "A111", + "First" : "Anne", + "Last" : "Ackerman", + "Location": "NY", + "Office" : "1S76", + "Email" : "a.a@test.com", + "Tel" : "123-764-8237", + "Fax" : "123-764-8228" + }, + { + "Serial" : "B111", + "First" : "Ben", + "Last" : "Beckham", + "Location": "NY", + "Office" : "5N47", + "Email" : "b.b@test.com", + "Tel" : "123-764-8599", + "Fax" : "123-764-8600" + }, + { + "Serial" : "C111", + "First" : "Chad", + "Last" : "Chapman", + "Location": "CA", + "Office" : "1278", + "Email" : "c.c@test.com", + "Tel" : "408-764-8237", + "Fax" : "408-764-8228" + }, + { + "Serial" : "D111", + "First" : "David", + "Last" : "Durham", + "Location": "NJ", + "Office" : "C12", + "Email" : "d.d@test.com", + "Tel" : "514-764-8237", + "Fax" : "514-764-8228" + }, + { + "Serial" : "E111", + "First" : "Emma", + "Last" : "Eklof", + "Location": "NY", + "Office" : "4N76", + "Email" : "e.e@test.com", + "Tel" : "123-764-1234", + "Fax" : "123-764-4321" + }, + { + "Serial" : "F111", + "First" : "Fred", + "Last" : "Fisher", + "Location": "NJ", + "Office" : "V89", + "Email" : "f.f@test.com", + "Tel" : "514-764-8567", + "Fax" : "514-764-8000" + }, + { + "Serial" : "G111", + "First" : "George", + "Last" : "Garnett", + "Location": "NY", + "Office" : "7S11", + "Email" : "gig@test.com", + "Tel" : "123-999-8599", + "Fax" : "123-999-8600" + }, + { + "Serial" : "H111", + "First" : "Hunter", + "Last" : "Huffman", + "Location": "CA", + "Office" : "6532", + "Email" : "h.h@test.com", + "Tel" : "408-874-8237", + "Fax" : "408-874-8228" + }, + { + "Serial" : "I111", + "First" : "Irene", + "Last" : "Ira", + "Location": "NJ", + "Office" : "F09", + "Email" : "i.i@test.com", + "Tel" : "514-764-6532", + "Fax" : "514-764-7300" + }, + { + "Serial" : "J111", + "First" : "John", + "Last" : "Jacklin", + "Location": "CA", + "Office" : "6701", + "Email" : "j.j@test.com", + "Tel" : "408-764-1234", + "Fax" : "408-764-4321" + } + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/android-format.css b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/android-format.css new file mode 100755 index 0000000..2cec0eb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/android-format.css @@ -0,0 +1,27 @@ +.mobile label { + overflow-x: hidden; + -webkit-text-size-adjust: none; + background-color: black; + color: white; + font-family: Helvetica; + font-size: 14px; + margin-left: 2px; +} +.mobile body { + font-family: Helvetica; + font-size: 17px; + color: white; +} +input { + width: 196px; + margin-left: 2px; +} +.row { + width: 300px; display: inline-block; + margin-bottom: 1; margin-top: 3px; +} +.spacer {display: block; margin-bottom:10px; padding-bottom:5px;} +*[class~="spacer"] {display: block; margin-bottom:10px; padding-bottom:5px; } +.generate-heading { font-size:1.2em; font-weight:bold; } +.generate-label-cell { text-align: left; width: 20%; display:inline-block; } +.generate-dijit-cell { text-align: left; width: 20%; display:inline-block; } diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/app-format.css b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/app-format.css new file mode 100755 index 0000000..3f3fdc0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/app-format.css @@ -0,0 +1,85 @@ +body { + padding: 0em 1em 1em 50px; + margin: 0; + font-family: sans-serif; + color: black; + background: white; + background-image: url(../images/MVC_patterns_in_Dojo.png); + background-position: top left; + background-attachment: fixed; + background-repeat: no-repeat; +} + +.rule {display: block; background-color: #6682b5;} +*[class~="rule"] {display: block; background-color: #aaa;} +.spacer {display: block; margin-bottom:10px; padding-bottom:5px;} +*[class~="spacer"] {display: block; margin-bottom:10px; padding-bottom:5px; } + +/*table { width: 500px; display: inline-block; } */ +tbody { display: inline-block; width: 100%; } +.row { width: 500px; display: inline-block; margin: 5px; } +.cell { width: 20%; display:inline-block; } +.widerow { width: 900px; display: inline-block; margin: 5px; } +.narrowcell { width: 5%; display:inline-block; } +label { text-align: right; width: 98%; display: inline-block; font-weight: bold; } + +.generate-heading { font-size:1.2em; font-weight:bold; } +.generate-label-cell { text-align: left; width: 20%; display:inline-block; } +.generate-dijit-cell { text-align: left; width: 20%; display:inline-block; } + +#wrapper{ + margin-top:0px; + margin-left:-5px; + width:100%; + min-width:770px; + font-family:"Arial"; + font-size:0.8em; + background-image: url("../images/background.jpg"); +} +#header{ + height:100px; + width: 100%; + min-width:760px; + margin-left:-10px; + margin-top:20px; + z-index:1; +} +#headerInsert{ + width:80%; margin:auto; + margin-top:0px; + height:100px; + z-index:2; + color: #005A9C; +} +#main{ + min-height:600px; + width:80%; + min-width:880px; + text-align: left; + padding:10px; + margin-top:35px; + font-weight:normal; +} +#mainContent{ + float:left; + width:85%; + min-width:520px; + margin-top:-500px; + margin-left:140px; +} +#leftNav{ + padding-top:30px; + height:500px; + width:110px; + margin-right:10px; + float:left; +} +#navigation{ + width:380px; + height:50px; + margin-left:60px; + font-weight:bold; +} +#navigation ul{list-style:none; } +#navigation ul li{float:left; display:block; margin-top:-10px;width:90px;height:30px; padding:5px;} +#navigation ul li:hover{ color:#aaa;} diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/dijitTests.css b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/dijitTests.css new file mode 100644 index 0000000..33efb89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/dijitTests.css @@ -0,0 +1,116 @@ +/* Test file styles for Dijit widgets */ + +body { + background:#fff url("../images/testsBodyBg.gif") repeat-x top left; + padding:2em 2em 2em 2em; +} + +h1.testTitle { + font-size:2em; + margin:0 0 1em 0; +} + +/* Icons used in the tests */ + +.plusIcon, .plusBlockIcon { + background-image: url(../images/plus.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} +.plusBlockIcon { + display: block !important; +} +.noteIcon { + background-image: url(../images/note.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} +.flatScreenIcon { + background-image: url(../images/flatScreen.gif); + background-repeat: no-repeat; + width: 32px; + height: 32px; +} +.dijitTestNodeDialog { + position:absolute; + top:5px; + right:5px; + display:block; + width:200px; + visibility:hidden; + background-color:#fff !important; + color:#000 !important; + border:1px solid #000; + padding:5px; +} +.dijitTestNodeDialog table { + background-color:#fff !important; +} +.dijitTestNodeDialog td { + padding:3px; +} +.dijitTestNodeShowing { + visibility:visible; +} + +body .customFolderOpenedIcon, body .customFolderClosedIcon { + background-image: url('../images/folderIcons.png'); /* mail icons sprite image */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + background-position: -44px; +} + +.dj_ie6 .customFolderOpenedIcon, .dj_ie6 .customFolderClosedIcon { + background-image: url('../images/folderIcons.gif'); +} + +.customFolderClosedIcon { + background-position: -154px; +} + +#testMatrix { + width:100%; + text-align:center; +} +#testMatrix tr > td { + text-align:left; +} +#testMatrix tr.top { + background:blue; + color:#fff; +} +#testMatrix tr.top th { + padding:6px; +} +#testMatrix tr.tests { + background:#666; + padding:3px; + padding-left:6px; + padding-right:6px; + color:#fff; +} +#testMatrix tr.tests th { + text-align:center; +} +#testMatrix tr.spacer { + background:#dedede; + color:#666; +} +#testMatrix tr.spacer td { + padding:6px; +} +#testMatrix tr.testRow td { + text-align:center; +} +#testMatrix tr.testRow td.label { + text-align:left; + padding-left:15px; +} +#testMatrix tr.alt { + background:#ededed; +} diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/index-format.css b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/index-format.css new file mode 100755 index 0000000..acf9696 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/index-format.css @@ -0,0 +1,26 @@ +body { + padding: 2em 1em 2em 70px; + margin: 0; + font-family: sans-serif; + color: black; + background: white; + background-image: url(../images/MVC_patterns_in_Dojo.png); + background-position: top left; + background-attachment: fixed; + background-repeat: no-repeat; +} +:link { color: #00C; background: transparent } +:visited { color: #609; background: transparent } +a:active { color: #C00; background: transparent } +a:link img, a:visited img { border-style: none } +h1 { text-align : center } +h2, h3, h4, h5, h6 { text-align: left } +h1, h2, h3 { color: #005A9C; background: white } +h1 { font: 170% sans-serif; ; font-weight: bold } +h2 { font: 140% sans-serif } +h3 { font: 120% sans-serif } +h4 { font: bold 100% sans-serif } +h5 { font: italic 100% sans-serif } +h6 { font: small-caps 100% sans-serif } +dt, dd { margin-top: 0; margin-bottom: 0 } +dt { font-weight: bold } diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/iphone-format.css b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/iphone-format.css new file mode 100755 index 0000000..675e0bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/css/iphone-format.css @@ -0,0 +1,28 @@ +.mobile label { +font-size: 15px; +font-weight: bold; +color: #333; +padding-left: 3px; +text-shadow: rgba(255, 255, 255, 0.25); +} +input { + width: 196px; + margin-left: 2px; +} +.row { + width: 300px; display: inline-block; + margin-bottom: 1; margin-top: 3px; +} +.spacer {display: block; margin-bottom:10px; padding-bottom:5px;} +*[class~="spacer"] {display: block; margin-bottom:10px; padding-bottom:5px; } +.generate-heading { font-size:1.0em; font-weight:bold; } +.generate-label-cell { text-align: left; width: 20%; display:inline-block; } +.generate-dijit-cell { text-align: left; width: 66%; display:inline-block; } +.generate-textarea-row { text-align: left; width: 400px; display:inline-block; } +.generate-textarea-cell { text-align: left; width: 400px; height: 220px; display:inline-block; } +.generate-maincontent { text-align: left; width: 440px;} + +body { + visibility: visible; + width: 500px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_14491-input-output.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_14491-input-output.html new file mode 100644 index 0000000..82bbbad --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_14491-input-output.html @@ -0,0 +1,162 @@ + + + + + DOH Async Simple Input - Output Group example + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + (first name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (last name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (email is: ${this.value}) + +
                                                                  +
                                                                  Model: + +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_input-output-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_input-output-simple.html new file mode 100644 index 0000000..2328349 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_input-output-simple.html @@ -0,0 +1,158 @@ + + + + + DOH Async Simple Input - Output Group example + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + (first name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (last name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (email is: ${this.value}) + +
                                                                  +
                                                                  Model: + +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_mobile-demo.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_mobile-demo.html new file mode 100644 index 0000000..e07e1ef --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_async_mvc_mobile-demo.html @@ -0,0 +1,342 @@ + + + + + DOH Async MVC Mobile Demo Test + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_binding-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_binding-simple.html new file mode 100755 index 0000000..7a24741 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_binding-simple.html @@ -0,0 +1,429 @@ + + + + + MVC DOH Test + + + + + + + + + + + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +

                                                                  Bind Self Tests

                                                                  +
                                                                  + + + + +
                                                                  +
                                                                  + + + + + (first name is: ${this.value}) + + +
                                                                  +
                                                                  + + + Relevant is: ${this.ref.relevant}, Valid is: ${this.ref.valid}, ReadOnly is: ${this.ref.readOnly}) + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + + (num is: ${this.value}) + +
                                                                  +

                                                                  Bind Tests

                                                                  +
                                                                  + + + + + +
                                                                  + +
                                                                  + + + + (last name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (email is: ${this.value}) + +
                                                                  +
                                                                  + + + Relevant is: ${dijit.byId("emailInput").ref.relevant}, Valid is: ${this.ref.valid}, ReadOnly is: ${this.ref.readOnly}, Required is: ${this.ref.required}) + +
                                                                  + +
                                                                  Model: + +
                                                                  +
                                                                  + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_date_test.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_date_test.html new file mode 100644 index 0000000..5923e86 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_date_test.html @@ -0,0 +1,711 @@ + + + + + DOH MVC Date Binding Test + + + + + +

                                                                  Test 1: Two Calendars bound to each other, a TextBox and an mvc Output field.

                                                                  +
                                                                  + + + + + + + + +
                                                                  + + + + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + +

                                                                  Test 2: Two DateTextBoxes bound to each other, a TextBox and an mvc Output field.

                                                                  +
                                                                  + + + + + + + + +
                                                                  + + + + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +

                                                                  Test 3: One Calendar bound to a DateTextbox, a TextBox and an mvc Output field.

                                                                  +
                                                                  + + + + + + + + +
                                                                  + + + + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_form-kitchensink.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_form-kitchensink.html new file mode 100644 index 0000000..2c52b3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_form-kitchensink.html @@ -0,0 +1,1417 @@ + + + + + MVC DOH Test + + + + + + + + + + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +

                                                                  Programmatic creation of Form elements:

                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  + +

                                                                  Declarative creation of Form elements:

                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + +

                                                                  Test data-bound dijit.Calendar:

                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  + + + + + ${this.value} +
                                                                  +
                                                                  +
                                                                  + + + ${this.value} +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_programmatic-repeat-store.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_programmatic-repeat-store.html new file mode 100644 index 0000000..dbc8e22 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_programmatic-repeat-store.html @@ -0,0 +1,348 @@ + + + + + MVC DOH Test + + + + + + + + + + + + + + + +

                                                                  doh_mvc_programmatic-repeat-store.html automated tests (non-robot)

                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Search Results for term:
                                                                  + + + + +
                                                                  +
                                                                  +
                                                                  Programatic Repeat using my.Repeat and its templateString:
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Declarative Repeat using my.Repeat does not pass templateString:
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  + +
                                                                  +
                                                                  Details for selected index:
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_ref-set-repeat.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_ref-set-repeat.html new file mode 100644 index 0000000..c5187a5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_ref-set-repeat.html @@ -0,0 +1,247 @@ + + + + + MVC DOH Test + + + + + + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + Model1 Output is ==> + + + Name1 is "${this.value}" : + + + Name2 is "${this.value}" : + + + Name3 is "${this.value}" + +
                                                                  +
                                                                  + + Model2 Output is ==> + + + Name1 is "${this.value}" : + + + Name2 is "${this.value}" + +
                                                                  +
                                                                  + + Model3 Output is ==> + + + Name1 is "${this.value}" + +
                                                                  +
                                                                  Model: + +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_search-results-repeat-store.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_search-results-repeat-store.html new file mode 100755 index 0000000..c5523a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_search-results-repeat-store.html @@ -0,0 +1,278 @@ + + + + + MVC DOH Test + + + + + + + + + + + + + + + +

                                                                  doh_mvc_search-results-repeat-store.html automated tests (non-robot)

                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Details for selected index:
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_search-results-repeat.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_search-results-repeat.html new file mode 100755 index 0000000..69e7ac0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_search-results-repeat.html @@ -0,0 +1,301 @@ + + + + + MVC DOH Test + + + + + + + + + + + + + + + +

                                                                  doh_mvc_search-results-repeat.html automated tests (non-robot)

                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  + +
                                                                  Search Results for term: Engineers
                                                                  + + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  Details for result index: 0
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_shipto-billto-hierarchical.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_shipto-billto-hierarchical.html new file mode 100644 index 0000000..9e4ccdb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_shipto-billto-hierarchical.html @@ -0,0 +1,377 @@ + + + + + MVC DOH Test + + + + + + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Choose: + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Model: + +
                                                                  + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_shipto-billto-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_shipto-billto-simple.html new file mode 100755 index 0000000..7c4408a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_shipto-billto-simple.html @@ -0,0 +1,215 @@ + + + + + MVC DOH Test + + + + + + + + + + + +

                                                                  doh_mvc__shipto-billto-simple.html automated tests (non-robot)

                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + Choose: + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_template_repeat_exprchar.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_template_repeat_exprchar.html new file mode 100644 index 0000000..09c1a67 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_template_repeat_exprchar.html @@ -0,0 +1,236 @@ + + + + + MVC DOH Test + + + + + + + + + + + + + + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + Test exprchar. Widget template test uses exprchar of # and others for template:#{this.index} etc. +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_validation-test-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_validation-test-simple.html new file mode 100644 index 0000000..f1e9231 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/doh_mvc_validation-test-simple.html @@ -0,0 +1,133 @@ + + + + + DOH Validation Relevant Test + + + + + + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  Model: + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/helpers.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/helpers.js new file mode 100644 index 0000000..a1cfe3f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/helpers.js @@ -0,0 +1,74 @@ +// Helper methods for automated testing + +function isVisible(/*dijit._Widget || DomNode*/ node){ + // summary: + // Return true if node/widget is visible + var p; + if(node.domNode){ node = node.domNode; } + return (dojo.style(node, "display") != "none") && + (dojo.style(node, "visibility") != "hidden") && + (p = dojo.position(node, true), p.y + p.h >= 0 && p.x + p.w >= 0 && p.h && p.w); +} + +function isHidden(/*dijit._Widget || DomNode*/ node){ + // summary: + // Return true if node/widget is hidden + var p; + if(node.domNode){ node = node.domNode; } + return (dojo.style(node, "display") == "none") || + (dojo.style(node, "visibility") == "hidden") || + (p = dojo.position(node, true), p.y + p.h < 0 || p.x + p.w < 0 || p.h <= 0 || p.w <= 0); +} + +function innerText(/*DomNode*/ node){ + // summary: + // Browser portable function to get the innerText of specified DOMNode + return node.textContent || node.innerText || ""; +} + +function tabOrder(/*DomNode?*/ root){ + // summary: + // Return all tab-navigable elements under specified node in the order that + // they will be visited (by repeated presses of the tab key) + + var elems = []; + + function walkTree(/*DOMNode*/parent){ + dojo.query("> *", parent).forEach(function(child){ + // Skip hidden elements, and also non-HTML elements (those in custom namespaces) in IE, + // since show() invokes getAttribute("type"), which crash on VML nodes in IE. + if((dojo.isIE && child.scopeName!=="HTML") || !dijit._isElementShown(child)){ + return; + } + + if(dijit.isTabNavigable(child)){ + elems.push({ + elem: child, + tabIndex: dojo.hasAttr(child, "tabIndex") ? dojo.attr(child, "tabIndex") : 0, + pos: elems.length + }); + } + if(child.nodeName.toUpperCase() != 'SELECT'){ + walkTree(child); + } + }); + }; + + walkTree(root || dojo.body()); + + elems.sort(function(a, b){ + return a.tabIndex != b.tabIndex ? a.tabIndex - b.tabIndex : a.pos - b.pos; + }); + return dojo.map(elems, function(elem){ return elem.elem; }); +} + + +function onFocus(func){ + // summary: + // On the next change of focus, and after widget has had time to react to focus event, + // call func(node) with the newly focused node + var handle = dojo.subscribe("focusNode", function(node){ + dojo.unsubscribe(handle); + setTimeout(function(){ func(node); }, 0); + }); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/MVC_patterns_in_Dojo.png b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/MVC_patterns_in_Dojo.png new file mode 100755 index 0000000..9577e1e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/MVC_patterns_in_Dojo.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/background.jpg b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/background.jpg new file mode 100755 index 0000000..eee0997 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/background.jpg differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/master_detail.png b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/master_detail.png new file mode 100755 index 0000000..a680d6e Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/master_detail.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/validating_form_pattern.png b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/validating_form_pattern.png new file mode 100755 index 0000000..7356f87 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/images/validating_form_pattern.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-async-store.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-async-store.html new file mode 100644 index 0000000..14aa506 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-async-store.html @@ -0,0 +1,186 @@ + + + + + Async Mobile MVC + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-async.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-async.html new file mode 100644 index 0000000..2fdc0c5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-async.html @@ -0,0 +1,203 @@ + + + + + + Mobile MVC + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-sync.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-sync.html new file mode 100644 index 0000000..accfd3e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo-sync.html @@ -0,0 +1,201 @@ + + + + + + Mobile MVC + + + + + + + + +
                                                                  +

                                                                  Mobile MVC Demo

                                                                  +
                                                                    +
                                                                  • + Simple Data Binding +
                                                                  • +
                                                                  • + Repeat Data Binding +
                                                                  • +
                                                                  • + Generate Simple Form +
                                                                  • +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Data Binding Example

                                                                  +
                                                                  +
                                                                  Ship to - Bill to Address
                                                                  +
                                                                  +
                                                                  + Order # + +
                                                                  +
                                                                  + Last + +
                                                                  +
                                                                  + Email + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Street + +
                                                                  +
                                                                  + City + +
                                                                  +
                                                                  + State + +
                                                                  +
                                                                  + ZIP Code + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +

                                                                  Repeat Data Binding Example

                                                                  +
                                                                  +
                                                                  Search Results
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Details for selected index:
                                                                  +
                                                                  +
                                                                  + First Name + +
                                                                  +
                                                                  + Last Name + +
                                                                  +
                                                                  + Email + +
                                                                  +
                                                                  + Telephone + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  + +
                                                                  + +
                                                                  +

                                                                  Simple Form Generate Example

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Model
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.css b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.css new file mode 100755 index 0000000..6f04d16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.css @@ -0,0 +1,469 @@ +.iphone label { + font-size: 15px; + font-weight: bold; + color: #333; + padding-left: 3px; + text-shadow: rgba(255, 255, 255, 0.25); +} + +.iphone body { + min-height: 200px; +} + +.android label { + overflow-x: hidden; + -webkit-text-size-adjust: none; + background-color: black; + color: white; + font-family: Helvetica; + font-size: 14px; + margin-left: 2px; +} + +.android body { + font-family: Helvetica; + font-size: 17px; + color: white; +} + +input { + width: 60%; + display:inline-block; + +} + +.row { + width: 100%; + margin-bottom: 1px; margin-top: 3px; + display:inline-block; +} + +/* Generate Demo */ +div#view { + display: table; + border: 1px solid #ddd; + border-radius: 10px; + margin: 3px; + padding: 3px; + width: 100%; + background-color: #F7F7F7; + color: #333; +} + +.generate-row { + display:inline-block; + width: 100%; + font-size: 15px; + font-weight: bold; + text-shadow: white 0 1px 1px; + color: #333; + font-weight: bold; +} + +form#testForm div.row, form#repeatTestForm div.row { + width: 100%; + display:inline-block; + +} + +form#testForm, form#repeatTestForm, button#generate1, .generate-textarea-row, button#updateModel, div#view, div#generateModel, div#generateView { + margin-left: 15px; + margin-right: 15px; +} + +.spacer {display: block; margin-bottom:10px; padding-bottom:5px;} + +.generate-heading { font-size:1.0em; font-weight:bold; } +.generate-label-cell { + text-align: left; + width: 20%; + display:inline-block; +} +.generate-dijit-cell { text-align: left; width: 66%; display:inline-block; } + +.generate-textarea-row { text-align: left; width: 90%; display:inline-block; } +.generate-textarea-cell { text-align: left; width: 90%; min-height: 220px; display:inline-block; } +.generate-maincontent { text-align: left; width: 100%;} + +/* CSS for buttons show case */ +button.baseBtn { + -webkit-background-clip: padding-box; + -webkit-box-align: center; + background-clip: padding-box; + border-style: solid; + border-width: 1px; + color: black; + font-family: 'Helvetica Neue', HelveticaNeue, Helvetica-Neue, Helvetica, 'BBAlpha Sans'; + font-size: 18px; + font-weight: bold; + vertical-align: middle; + margin: 10px; + height: 34px; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; + border-top-left-radius: 7px; + border-top-right-radius: 7px; +} + +button.roundBtn { + border-bottom-left-radius: 17px; + border-bottom-right-radius: 17px; + border-top-left-radius: 17px; + border-top-right-radius: 17px; +} + +button.backBtn { + border-bottom-left-radius: 0.4em 0.4em; + border-bottom-right-radius: 0.4em 0.4em; + border-top-left-radius: 0.4em 0.4em; + border-top-right-radius: 0.4em 0.4em; + margin-left: 0.893em; + padding-left: 0.4em; + height: 1.8em; + overflow: visible; + position: relative; + z-index: 1; +} + +button.backBtn:before, button.backBtn:after { + content: ""; + width: .773em; + height: 1.8em; + top: -0.1em; + left: auto; + position: absolute; + z-index: 2; + -webkit-mask: 0 0 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAABGCAYAAADb7SQ4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAiNJREFUeNrEWb9LQlEUvj5BcHoQvMnVKXD1D3CLwqBJbHJsazQaWoSCxgbHJiMIAiNok6AhCDdXVycnJ8EQOgeOYaG+d39998KH+HyP753zzjnfd325xfdSgVeV8B6BScuEV0IRSbxHeCMk/AVFXCA8ScQKSXxPqK0fQBBfE5r/D+Y8VzUT9jb94DPimqRYIYkrhGcpKhhxIqTxrpNcExdlQJTTTnRJnCc8ykhUSOIOoZ71ZFfEZ4S2zgUu+rguxZRHEnPbfKRVsOtUl0RtYpOLTYljIS2Z3nVk2DY9SbNCEt8RDm0rUpe4La1jvXSqmtum72raZI24KuNQIYl/nSGSOJb0Jq61M0pxhjwK9304hUjHGSKILzc5Q5drUzttdYY+I97pDH1FzG0zNFUb04gTG4kzJS5kdYauiZtZnaFr4ooKsCIVaDHxKAQxt1NBnGIVHfGCcEQYh3jGU8KBfMKLiyM+lgzAq/qT0ArVTg+Ei1B9fEPoovV4fcfQd2HedScX39GprwGTNjJn0maTELN6IuSzECLB6T5x2eM66jQgnIeSxa60GnS3uL56tr7b1Ai0JPVwYi6yho2U2lgfKym19VxjMRHzEGbvS9K+RBPzetGVUpf29lZHSl2/DMnLvwh1ZMQrKW3Ic4fvJOZS6ZMQW5hpmpT63DvtlFLfm7bBNruM2C2yXb7y3U6ZpRS5P/4jpUjihRTbCJ3q1eL3GMMfAQYAJmB6SBO619IAAAAASUVORK5CYII=') no-repeat; + -webkit-mask-size: .773em 1.8em; + overflow: hidden; +} + +button.backBtn:before { + left: -0.693em; +} + +button.backBtn:after { + left: -0.628em; +} + +button.greyBtn { + text-shadow: rgba(255, 255, 255, 0.246094) 0px 0.08em 0px; + border-color: #999; + border-top-color: #A6A6A6; + background-color: #CCC; + background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(white), color-stop(0.02, #E6E6E6), to(#BABABA)); +} + +button.greyBtn.backBtn:before { + background: #999; +} + +button.greyBtn.backBtn:after { + background-color: #CCC; + background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(white), color-stop(0.02, #E6E6E6), to(#BABABA)); +} + +button.greyBtnSelected, button.greyBtnSelected.backBtn:after { + background-color:#bababa; + background-image:-webkit-gradient(linear,0% 0,0% 100%,color-stop(0%,#a1a1a1),color-stop(10%,#adadad),color-stop(65%,#bababa),color-stop(100%,#bbb)); + background-image:linear-gradient(top,#a1a1a1 0,#adadad 10%,#bababa 65%,#bbb 100%); +} + +/* CSS for forms show case */ +form#testForm div.fieldset, form#repeatTestForm div.fieldset { + display: table; + border: 1px solid #ddd; + border-radius: 10px; + background-color: white; + margin: 3px; + padding: 3px; + width: 100%; +} + +form#testForm div.field-row, form#repeatTestForm div.field-row { + display: table-row; + width: 100%; +} + +form#testForm div.field-title, form#repeatTestForm div.field-title { + font-size: 18px; + font-weight: bold; + margin: 1em .7em .3em; +} + +form#testForm span, form#repeatTestForm span { + display: table-cell; + font-size: 15px; + font-weight: bold; + background-color: #F7F7F7; + color: #333; + padding-left: 3px; + text-shadow: rgba(255, 255, 255, 0.25); + vertical-align: middle; + width: 25%; +} + +form#testForm input { + display: table-cell; + width: 75%; +} + +form#testForm input[type="radio"], form#testForm input[type="checkbox"] { + width: 15px; +} + +form#testForm select, form#testForm textarea { + margin-left: 0px; +} + +/* CSS for headings show case */ +ul#headingTabBar { + display:inline; +} +ul#headingTabBar li { + margin: 6px 0 6px 0 !important; +} + +ul#headingTabBar li.mblTabButton { + background-color: #5877A2; + background: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} + +ul#headingTabBar li.mblTabButtonSelected { + background-color: #394D77; + background: -webkit-gradient(linear, left top, left bottom, from(#7C87A4), to(#263E6C), color-stop(0.5, #394D77), color-stop(0.5, #243B69)); +} + +div#headings button.baseBtn { + display: block; + float: left; + -webkit-background-clip: padding-box; + -webkit-box-align: center; + background-clip: padding-box; + border-style: solid; + border-width: 1px; + margin: 6px 30px; + color: white; + font-family: 'Helvetica Neue', HelveticaNeue, Helvetica-Neue, Helvetica, 'BBAlpha Sans'; + font-size: 13px; + font-weight: bold; + -webkit-box-shadow: rgba(255, 255, 255, 0.0976563) 0px 0.1em 0px; + vertical-align: middle; + height: 29px; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; + border-top-left-radius: 7px; + border-top-right-radius: 7px; +} + +div#headings button.backBtn:before, div#headings button.backBtn:after { + content: ""; + width: .773em; + height: 29px; + top: -0.1em; + left: auto; + position: absolute; + z-index: 2; + -webkit-mask: 0 0 url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAABGCAYAAADb7SQ4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAiNJREFUeNrEWb9LQlEUvj5BcHoQvMnVKXD1D3CLwqBJbHJsazQaWoSCxgbHJiMIAiNok6AhCDdXVycnJ8EQOgeOYaG+d39998KH+HyP753zzjnfd325xfdSgVeV8B6BScuEV0IRSbxHeCMk/AVFXCA8ScQKSXxPqK0fQBBfE5r/D+Y8VzUT9jb94DPimqRYIYkrhGcpKhhxIqTxrpNcExdlQJTTTnRJnCc8ykhUSOIOoZ71ZFfEZ4S2zgUu+rguxZRHEnPbfKRVsOtUl0RtYpOLTYljIS2Z3nVk2DY9SbNCEt8RDm0rUpe4La1jvXSqmtum72raZI24KuNQIYl/nSGSOJb0Jq61M0pxhjwK9304hUjHGSKILzc5Q5drUzttdYY+I97pDH1FzG0zNFUb04gTG4kzJS5kdYauiZtZnaFr4ooKsCIVaDHxKAQxt1NBnGIVHfGCcEQYh3jGU8KBfMKLiyM+lgzAq/qT0ArVTg+Ei1B9fEPoovV4fcfQd2HedScX39GprwGTNjJn0maTELN6IuSzECLB6T5x2eM66jQgnIeSxa60GnS3uL56tr7b1Ai0JPVwYi6yho2U2lgfKym19VxjMRHzEGbvS9K+RBPzetGVUpf29lZHSl2/DMnLvwh1ZMQrKW3Ic4fvJOZS6ZMQW5hpmpT63DvtlFLfm7bBNruM2C2yXb7y3U6ZpRS5P/4jpUjihRTbCJ3q1eL3GMMfAQYAJmB6SBO619IAAAAASUVORK5CYII=') no-repeat; + -webkit-mask-size: .773em 29px; + overflow: hidden; +} + +div#headings button.backBtn:before { + left: -0.5em; +} + +div#headings button.backBtn:after { + left: -0.5em; +} + +button.defaultBtn { + text-shadow: rgba(255, 255, 255, 0.246094) 0px 0.08em 0px; + border-color: #9CACC0; + background-color: #5877A2; + background: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); + +} + +button.defaultBtn.backBtn:before { + background: #999; +} + +button.defaultBtn.backBtn:after { + background-color: #CCC; + background: -webkit-gradient(linear, left top, left bottom, from(#8EA4C1), to(#4A6C9B), color-stop(0.5, #5877A2), color-stop(0.5, #476999)); +} + +button.defaultBtnSelected, button.defaultBtnSelected.backBtn:after { + background-color: #394D77; + background: -webkit-gradient(linear, left top, left bottom, from(#7C87A4), to(#263E6C), color-stop(0.5, #394D77), color-stop(0.5, #243B69)); +} + +/* CSS for jsonp show case */ +div div.searchResult { + border: 2px solid #999; + border-bottom-left-radius: 15px 15px; + border-bottom-right-radius: 15px 15px; + border-top-left-radius: 15px 15px; + border-top-right-radius: 15px 15px; + color: white; + margin: 1%; + padding: 15px; + text-align: center; + text-shadow: grey 0px 2px 0px; + list-style-type: none; +} + +div div.searchResult .user { + margin: 10px 0; + font-size: 24px; + line-height: 20px; +} + +div div.searchResult .text { + margin: 10px 0 5px; + font-size: 12px; + font-weight: bold; +} + +div.searchResult img { + width:48px; + height:48px; +} + +/* CSS for overall layout */ +.hidden { + display:none; +} + +div .navPane { + width:250px; + border-right:1px solid black; +} + +/* CSS for list show case */ +.list .row { + padding: 10px; + border-bottom: 1px solid #444; + position: relative; + background-color: white; + z-index: 6; /* Must be greater than the .buttons z-index */ +} +.list .row.mblListItem { + padding: 0px; +} + +.list .row.last { + border-bottom: none; +} + +.list .row.hold { + background-color: #ddd; +} + +.list .buttons { + position: absolute; + text-align: center; + padding-top: 10px; + width: 100%; + height: 100%; + z-index: 5; +} + +.list .buttons .mblButton { +} + +.list .buttons .deleteBtn { + background-color: red; + +} +.list .buttons .cancelBtn { + margin-left: 10px; + background-color: blue; +} + +.row.collapsed { + -webkit-animation-name: collapse-vert; + -webkit-animation-duration: 0.5s; + -webkit-animation-timing-function: linear; +} + +div#list .mblRoundRectList, div#list .mblRoundRect { + margin: 10px 10px 10px 10px; +} + +@-webkit-keyframes collapse-vert { + from { + height: 100%; + padding: 10px; + } + to { + height: 0px; + padding: 0px; + } +} + +/* CSS for tabs show case */ +div.tabContent { + width: 100%; + text-align: center; + display: table; + overflow: hidden; + height: 100px; + font-size: 20px; +} + +div.tabContent span { + width: 100%; + vertical-align: middle; + display: table-cell; +} + +div#tabBarContent { + border-top-left-radius: 7px; + border-top-right-radius: 7px; +} + +div.mblTabButton { + height: 61px; +} + +div.mblTabButtonImgDiv { + display: block; + height: 40px; +} + +div.mblTabButtonImgDiv IMG { + margin-top: 8px; +} + +#tabContainer .mblTabPanelHeader { + height: 70px; +} + +ul#demoTabBar img.mblTabBarButtonIcon, ul#demoTabs img.mblTabBarButtonIcon { + height: 30px; + width: 30px; +} + +ul#demoTabBar, ul#demoTabs { + height: 36px; +} + +div#tContainer .mblTabPanelPane, div#tabBarContent { + border-style: solid; + border-width: 1px; +} + +div#tContainer .mblTabPanelPane, ul#demoTabBar, ul#demoTabs { + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; +} + +div#tContainer, div#tabPanel { + -moz-box-shadow: 10px 10px 5px #888; + -webkit-box-shadow: 10px 10px 5px #888; + box-shadow: 10px 10px 5px #888; + margin-left: 5px; + margin-right: 5px; +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.html new file mode 100755 index 0000000..67e1465 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.html @@ -0,0 +1,203 @@ + + + + + + Mobile MVC + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.profile.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.profile.js new file mode 100755 index 0000000..275476e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/demo.profile.js @@ -0,0 +1,17 @@ +dependencies = { + layers: [ + { + name: "../demos/mvcMobile/src.js", + resourceName: "demos.mvcMobile.src", + dependencies: [ + "demos.mvcMobile.src" + ] + } + ], + + prefixes: [ + [ "dijit", "../dijit" ], + [ "dojox", "../dojox" ], + [ "demos", "../demos" ] + ] +} diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/generateView.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/generateView.html new file mode 100755 index 0000000..5ce2ef5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/generateView.html @@ -0,0 +1,62 @@ +
                                                                  +

                                                                  Simple Form Generate Example

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +

                                                                  Model

                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/iPad-Demo.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/iPad-Demo.html new file mode 100644 index 0000000..24a0a63 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/iPad-Demo.html @@ -0,0 +1,213 @@ + + + + + + Mobile MVC on iPad + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-1.png b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-1.png new file mode 100755 index 0000000..b9bb9b1 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-1.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-2.png b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-2.png new file mode 100755 index 0000000..82d57a2 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-2.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-3.png b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-3.png new file mode 100755 index 0000000..0323444 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/i-icon-3.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/mvc.png b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/mvc.png new file mode 100755 index 0000000..3e6c63d Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/images/mvc.png differ diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/repeatDataBinding.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/repeatDataBinding.html new file mode 100755 index 0000000..d3b9840 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/repeatDataBinding.html @@ -0,0 +1,45 @@ +
                                                                  +

                                                                  Repeat Data Binding Example

                                                                  + +
                                                                  Search Results
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Details for selected index:
                                                                  +
                                                                  +
                                                                  + First Name + +
                                                                  +
                                                                  + Last Name + +
                                                                  +
                                                                  + Email + +
                                                                  +
                                                                  + Telephone + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + +
                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/shipToBillTo.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/shipToBillTo.html new file mode 100755 index 0000000..ddbec48 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/shipToBillTo.html @@ -0,0 +1,51 @@ +
                                                                  +

                                                                  Data Binding Example

                                                                  + +
                                                                  Ship to - Bill to Address
                                                                  +
                                                                  +
                                                                  + Order # + +
                                                                  +
                                                                  + Last + +
                                                                  +
                                                                  + Email + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Street + +
                                                                  +
                                                                  + City + +
                                                                  +
                                                                  + State + +
                                                                  +
                                                                  + ZIP Code + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-async-store.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-async-store.js new file mode 100644 index 0000000..1c78299 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-async-store.js @@ -0,0 +1,137 @@ +var repeatModel, setRef, nextIndexToAdd, selectedIndex; +var setRef, setDetailsContext, insertResult, updateView, updateModel; + +require([ + 'dojox/mobile/parser', + 'dojox/mvc', + 'dojox/mobile', + 'dojox/mobile/ScrollableView', + 'dojox/mobile/Button', + 'dojox/mobile/TextArea', + 'dojox/mvc/Group', + 'dojox/mvc/Generate', + 'dojox/mvc/Repeat', + 'dojox/mobile/TextBox', + 'dojox/mobile/ViewController', + 'dojox/mobile/FixedSplitter', + 'dojox/mobile/EdgeToEdgeList', + 'dojox/mobile/EdgeToEdgeCategory', + 'dojox/mobile/deviceTheme', + 'dojox/mobile/RoundRectCategory', + 'dojox/mobile/Heading', + 'dojo/data/ItemFileWriteStore', + 'dojo/store/DataStore' +], function(){ + require([ + "dojox/mobile/compat" + ]); + + var names = { + "Serial" : "360324", + "First" : "John", + "Last" : "Doe", + "Email" : "jdoe@us.ibm.com", + "ShipTo" : { + "Street" : "123 Valley Rd", + "City" : "Katonah", + "State" : "NY", + "Zip" : "10536" + }, + "BillTo" : { + "Street" : "17 Skyline Dr", + "City" : "Hawthorne", + "State" : "NY", + "Zip" : "10532" + } +}; + +selectedIndex = 0; + +model = dojox.mvc.newStatefulModel({ data : names }); +repeatmodel = null; // use store for repeat data +nextIndexToAdd = -1; + + // used in the Ship to - Bill to demo +setRef = function(id, addrRef) { + var widget = dijit.byId(id); + widget.set("ref", addrRef); +} + +// used in the Repeat Data binding demo +setDetailsContext = function(index){ + selectedIndex = index; + var groupRoot = dijit.byId("detailsGroup"); + groupRoot.set("ref", index); +} + +// used in the Repeat Data binding demo +insertResult = function(index){ + if (repeatmodel[index-1].First.value !== ""){ // TODO: figure out why we are getting called twice for each click + var insert = dojox.mvc.newStatefulModel({ "data" : { + "First" : "", + "Last" : "", + "Location": "CA", + "Office" : "", + "Email" : "", + "Tel" : "", + "Fax" : ""} + }); + repeatmodel.add(index, insert); + setDetailsContext(index); + nextIndexToAdd++; + }else{ + setDetailsContext(index-1); + } +}; + +// used in the Generate View demo +var genmodel; +updateView = function() { + try { + var modeldata = dojo.fromJson(dojo.byId("modelArea").value); + genmodel = dojox.mvc.newStatefulModel({ data : modeldata }); + dijit.byId("view").set("ref", genmodel); + dojo.byId("outerModelArea").style.display = "none"; + dojo.byId("viewArea").style.display = ""; + }catch(err){ + console.error("Error parsing json from model: "+err); + } +}; + +// used in the Generate View demo +updateModel = function() { + dojo.byId("outerModelArea").style.display = ""; + try { + dojo.byId("modelArea").focus(); // hack: do this to force focus off of the textbox, bug on mobile? + dojo.byId("viewArea").style.display = "none"; + dijit.byId("modelArea").set("value",(dojo.toJson(genmodel.toPlainObject(), true))); + } catch(e) { + console.log(e); + }; +}; + + +// The dojox.mvc.StatefulModel class creates a data model instance +// where each leaf within the data model is decorated with dojo.Stateful +// properties that widgets can bind to and watch for their changes. +var writeStore = new dojo.data.ItemFileWriteStore({url: dojo.moduleUrl("dojox.mvc.tests._data", "mvcRepeatData.json")}); +var modelPromise = dojox.mvc.newStatefulModel({store: new dojo.store.DataStore({store: writeStore}), query:{"Location" : "CA"}}); // example of using a query parm for Location + +require(['dojo/domReady!'], function(){ + modelPromise.then(function(results){ + repeatmodel = results; + nextIndexToAdd = repeatmodel.data.length; + console.log("before call to parser.parse"); + dojox.mobile.parser.parse(); + console.log("before call to set the wholepage style for display"); + dojo.byId("wholepage").style.display = ""; + console.log("after call to set the wholepage style for display"); + }); + + }); + +dojo.addOnLoad(function() { +}); + +}); // end function + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-async.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-async.js new file mode 100644 index 0000000..aebbe4a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-async.js @@ -0,0 +1,167 @@ +var repeatModel, setRef, nextIndexToAdd, selectedIndex; +var setRef, setDetailsContext, insertResult, updateView, updateModel; + +require(['dojo/has', + //'dojox/mobile/parser', + 'dojo/parser', + 'dojox/mvc', + 'dojox/mobile', + 'dojox/mobile/ScrollableView', + 'dojox/mobile/Button', + 'dojox/mobile/TextArea', + 'dojox/mvc/Group', + 'dojox/mvc/Generate', + 'dojox/mvc/Repeat', + 'dojox/mobile/TextBox', + 'dojox/mobile/ViewController', + 'dojox/mobile/FixedSplitter', + 'dojox/mobile/EdgeToEdgeList', + 'dojox/mobile/EdgeToEdgeCategory', + 'dojox/mobile/deviceTheme', + 'dojox/mobile/RoundRectCategory', + 'dojox/mobile/Heading', + 'dijit/registry', + 'dojo/_base/json', + 'dojo/dom' +], function(has, parser, mvc, mobile, ScrollableView, Button, TextArea, Group, Generate, Repeat, TextBox, ViewController, + FixedSplitter, EdgeToEdgeList, EdgeToEdgeCategory, deviceTheme, RoundRectCategory, Heading, WidgetRegistry, + json, dom){ + + if(!has("webkit")){ + require(["dojox/mobile/compat"]); + } + + var names = { + "Serial" : "360324", + "First" : "John", + "Last" : "Doe", + "Email" : "jdoe@us.ibm.com", + "ShipTo" : { + "Street" : "123 Valley Rd", + "City" : "Katonah", + "State" : "NY", + "Zip" : "10536" + }, + "BillTo" : { + "Street" : "17 Skyline Dr", + "City" : "Hawthorne", + "State" : "NY", + "Zip" : "10532" + } +}; + +// Initial repeat data used in the Repeat Data binding demo +var repeatData = [ + { + "First" : "Chad", + "Last" : "Chapman", + "Location": "CA", + "Office" : "1278", + "Email" : "c.c@test.com", + "Tel" : "408-764-8237", + "Fax" : "408-764-8228" + }, + { + "First" : "Irene", + "Last" : "Ira", + "Location": "NJ", + "Office" : "F09", + "Email" : "i.i@test.com", + "Tel" : "514-764-6532", + "Fax" : "514-764-7300" + }, + { + "First" : "John", + "Last" : "Jacklin", + "Location": "CA", + "Office" : "6701", + "Email" : "j.j@test.com", + "Tel" : "408-764-1234", + "Fax" : "408-764-4321" + } +]; + + selectedIndex = 0; + + model = mvc.newStatefulModel({ data : names }); + repeatmodel = mvc.newStatefulModel({ data : repeatData }); + nextIndexToAdd = repeatmodel.data.length; + + // used in the Ship to - Bill to demo + setRef = function(id, addrRef) { + var widget = WidgetRegistry.byId(id); + widget.set("ref", addrRef); + } + + // used in the Repeat Data binding demo + setDetailsContext = function(index){ + selectedIndex = index; + var groupRoot = WidgetRegistry.byId("detailsGroup"); + groupRoot.set("ref", index); + } + + // used in the Repeat Data binding demo + insertResult = function(index){ + if (repeatmodel[index-1].First.value !== ""){ // TODO: figure out why we are getting called twice for each click + var insert = mvc.newStatefulModel({ "data" : { + "First" : "", + "Last" : "", + "Location": "CA", + "Office" : "", + "Email" : "", + "Tel" : "", + "Fax" : ""} + }); + repeatmodel.add(index, insert); + setDetailsContext(index); + nextIndexToAdd++; + }else{ + setDetailsContext(index-1); + } + }; + + // used in the Generate View demo + var genmodel; + updateView = function() { + try { + var modeldata = json.fromJson(dom.byId("modelArea").value); + genmodel = mvc.newStatefulModel({ data : modeldata }); + WidgetRegistry.byId("view").set("ref", genmodel); + dom.byId("outerModelArea").style.display = "none"; + dom.byId("viewArea").style.display = ""; + }catch(err){ + console.error("Error parsing json from model: "+err); + } + }; + + // used in the Generate View demo + updateModel = function() { + dom.byId("outerModelArea").style.display = ""; + try { + dom.byId("modelArea").focus(); // hack: do this to force focus off of the textbox, bug on mobile? + dom.byId("viewArea").style.display = "none"; + WidgetRegistry.byId("modelArea").set("value",(json.toJson(genmodel.toPlainObject(), true))); + } catch(e) { + console.log(e); + }; + }; + + + // The dojox.mvc.StatefulModel class creates a data model instance + // where each leaf within the data model is decorated with dojo.Stateful + // properties that widgets can bind to and watch for their changes. + + + require(["dojo/ready"], function(ready){ + //dojox.mobile.parser.parse(); + //dojo.parser.parse(); + parser.parse(); + }); + + require(['dojo/domReady!'], function(){ + //console.log("dom is now ready 2a"); + dom.byId("wholepage").style.display = ""; + }); + +}); // end function + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-sync.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-sync.js new file mode 100644 index 0000000..a63d89b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src-sync.js @@ -0,0 +1,148 @@ +dojo.provide("dojox.mvc.tests.mobile.demo.src"); + +//dojo.require("dojo.parser"); // no longer needed for repeat demo +dojo.require("dojox.mobile.parser"); +dojo.require("dojox.mobile"); +dojo.require("dojox.mobile.ScrollableView"); +dojo.require("dojox.mobile.TextBox"); +dojo.require("dojox.mvc"); +dojo.require("dojox.mvc.Generate"); +dojo.require("dojox.mvc.Group"); +dojo.require("dojox.mvc.Repeat"); +dojo.require("dojox.mobile.FlippableView"); +dojo.require("dojox.mobile.ViewController"); +dojo.require("dojox.mobile.TextArea"); +dojo.require("dojox.mobile.Button"); + +dojo.require("dojox.mobile.FixedSplitter"); +dojo.require("dojox.mobile.EdgeToEdgeList"); +dojo.require("dojox.mobile.EdgeToEdgeCategory"); +dojo.require("dojox.mobile.Heading"); +dojo.require("dojox.mobile.FixedSplitterPane"); +dojo.requireIf(!dojo.isWebKit, "dojox.mobile.compat"); +dojo.requireIf(!dojo.isWebKit, "dojo.fx"); +dojo.requireIf(!dojo.isWebKit, "dojo.fx.easing"); +dojo.require("dojox.mobile.deviceTheme"); // used for device detection + + +// Initial data for Ship to - Bill demo +var names = { + "Serial" : "360324", + "First" : "John", + "Last" : "Doe", + "Email" : "jdoe@us.ibm.com", + "ShipTo" : { + "Street" : "123 Valley Rd", + "City" : "Katonah", + "State" : "NY", + "Zip" : "10536" + }, + "BillTo" : { + "Street" : "17 Skyline Dr", + "City" : "Hawthorne", + "State" : "NY", + "Zip" : "10532" + } +}; + +// Initial repeat data used in the Repeat Data binding demo +var repeatData = [ + { + "First" : "Chad", + "Last" : "Chapman", + "Location": "CA", + "Office" : "1278", + "Email" : "c.c@test.com", + "Tel" : "408-764-8237", + "Fax" : "408-764-8228" + }, + { + "First" : "Irene", + "Last" : "Ira", + "Location": "NJ", + "Office" : "F09", + "Email" : "i.i@test.com", + "Tel" : "514-764-6532", + "Fax" : "514-764-7300" + }, + { + "First" : "John", + "Last" : "Jacklin", + "Location": "CA", + "Office" : "6701", + "Email" : "j.j@test.com", + "Tel" : "408-764-1234", + "Fax" : "408-764-4321" + } +]; + +var selectedIndex = 0; + +var model = dojox.mvc.newStatefulModel({ data : names }); +var repeatmodel = dojox.mvc.newStatefulModel({ data : repeatData }); +var nextIndexToAdd = repeatmodel.data.length; + +// used in the Ship to - Bill to demo +function setRef(id, addrRef) { + var widget = dijit.byId(id); + widget.set("ref", addrRef); +} + +// used in the Repeat Data binding demo +function setDetailsContext(index){ + selectedIndex = index; + var groupRoot = dijit.byId("detailsGroup"); + groupRoot.set("ref", index); +} + +// used in the Repeat Data binding demo +function insertResult(index){ + if (repeatmodel[index-1].First.value !== ""){ // TODO: figure out why we are getting called twice for each click + var insert = dojox.mvc.newStatefulModel({ "data" : { + "First" : "", + "Last" : "", + "Location": "CA", + "Office" : "", + "Email" : "", + "Tel" : "", + "Fax" : ""} + }); + repeatmodel.add(index, insert); + setDetailsContext(index); + nextIndexToAdd++; + }else{ + setDetailsContext(index-1); + } +}; + +// used in the Generate View demo +var genmodel; +function updateView() { + try { + var modeldata = dojo.fromJson(dojo.byId("modelArea").value); + genmodel = dojox.mvc.newStatefulModel({ data : modeldata }); + dijit.byId("view").set("ref", genmodel); + dojo.byId("outerModelArea").style.display = "none"; + dojo.byId("viewArea").style.display = ""; + }catch(err){ + console.error("Error parsing json from model: "+err); + } +}; + +// used in the Generate View demo +function updateModel() { + dojo.byId("outerModelArea").style.display = ""; + try { + dojo.byId("modelArea").focus(); // hack: do this to force focus off of the textbox, bug on mobile? + dojo.byId("viewArea").style.display = "none"; + dijit.byId("modelArea").set("value",(dojo.toJson(genmodel.toPlainObject(), true))); + } catch(e) { + console.log(e); + }; +}; + +function setup() { + dojox.mobile.parser.parse(); +}; + +dojo.ready(setup); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src.js new file mode 100755 index 0000000..787cb6b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/demo/src.js @@ -0,0 +1,167 @@ +var repeatModel, setRef, nextIndexToAdd, selectedIndex; +var setRef, setDetailsContext, insertResult, updateView, updateModel; + +require(['dojo/has', + 'dojox/mobile/parser', + //'dojo/parser', + 'dojo/ready', + 'dojox/mvc', + 'dojox/mobile', + 'dojox/mobile/ScrollableView', + 'dojox/mobile/Button', + 'dojox/mobile/TextArea', + 'dojox/mvc/Group', + 'dojox/mvc/Generate', + 'dojox/mvc/Repeat', + 'dojox/mobile/TextBox', + 'dojox/mobile/ViewController', + 'dojox/mobile/FixedSplitter', + 'dojox/mobile/EdgeToEdgeList', + 'dojox/mobile/EdgeToEdgeCategory', + 'dojox/mobile/deviceTheme', + 'dojox/mobile/RoundRectCategory', + 'dojox/mobile/Heading', + 'dijit/registry', + 'dojo/_base/json', + 'dojo/dom' +], function(has, parser, ready, mvc, mobile, ScrollableView, Button, TextArea, Group, Generate, Repeat, TextBox, ViewController, + FixedSplitter, EdgeToEdgeList, EdgeToEdgeCategory, deviceTheme, RoundRectCategory, Heading, WidgetRegistry, + json, dom){ + + if(!has("webkit")){ + require(["dojox/mobile/compat"]); + } + + var names = { + "Serial" : "360324", + "First" : "John", + "Last" : "Doe", + "Email" : "jdoe@us.ibm.com", + "ShipTo" : { + "Street" : "123 Valley Rd", + "City" : "Katonah", + "State" : "NY", + "Zip" : "10536" + }, + "BillTo" : { + "Street" : "17 Skyline Dr", + "City" : "Hawthorne", + "State" : "NY", + "Zip" : "10532" + } +}; + +// Initial repeat data used in the Repeat Data binding demo +var repeatData = [ + { + "First" : "Chad", + "Last" : "Chapman", + "Location": "CA", + "Office" : "1278", + "Email" : "c.c@test.com", + "Tel" : "408-764-8237", + "Fax" : "408-764-8228" + }, + { + "First" : "Irene", + "Last" : "Ira", + "Location": "NJ", + "Office" : "F09", + "Email" : "i.i@test.com", + "Tel" : "514-764-6532", + "Fax" : "514-764-7300" + }, + { + "First" : "John", + "Last" : "Jacklin", + "Location": "CA", + "Office" : "6701", + "Email" : "j.j@test.com", + "Tel" : "408-764-1234", + "Fax" : "408-764-4321" + } +]; + + selectedIndex = 0; + + model = mvc.newStatefulModel({ data : names }); + repeatmodel = mvc.newStatefulModel({ data : repeatData }); + nextIndexToAdd = repeatmodel.data.length; + + // used in the Ship to - Bill to demo + setRef = function(id, addrRef) { + var widget = WidgetRegistry.byId(id); + widget.set("ref", addrRef); + } + + // used in the Repeat Data binding demo + setDetailsContext = function(index){ + selectedIndex = index; + var groupRoot = WidgetRegistry.byId("detailsGroup"); + groupRoot.set("ref", index); + } + + // used in the Repeat Data binding demo + insertResult = function(index){ + if (repeatmodel[index-1].First.value !== ""){ // TODO: figure out why we are getting called twice for each click + var insert = mvc.newStatefulModel({ "data" : { + "First" : "", + "Last" : "", + "Location": "CA", + "Office" : "", + "Email" : "", + "Tel" : "", + "Fax" : ""} + }); + repeatmodel.add(index, insert); + setDetailsContext(index); + nextIndexToAdd++; + }else{ + setDetailsContext(index-1); + } + }; + + // used in the Generate View demo + var genmodel; + updateView = function() { + try { + var modeldata = json.fromJson(dom.byId("modelArea").value); + genmodel = mvc.newStatefulModel({ data : modeldata }); + WidgetRegistry.byId("view").set("ref", genmodel); + dom.byId("outerModelArea").style.display = "none"; + dom.byId("viewArea").style.display = ""; + }catch(err){ + console.error("Error parsing json from model: "+err); + } + }; + + // used in the Generate View demo + updateModel = function() { + dom.byId("outerModelArea").style.display = ""; + try { + dom.byId("modelArea").focus(); // hack: do this to force focus off of the textbox, bug on mobile? + dom.byId("viewArea").style.display = "none"; + WidgetRegistry.byId("modelArea").set("value",(json.toJson(genmodel.toPlainObject(), true))); + } catch(e) { + console.log(e); + }; + }; + + + // The dojox.mvc.StatefulModel class creates a data model instance + // where each leaf within the data model is decorated with dojo.Stateful + // properties that widgets can bind to and watch for their changes. + + + // when "dojo/ready" is ready call parse + ready(function(){ + parser.parse(); + }); + + // when domReady! is ready show the page + require(['dojo/domReady!'], function(){ + dom.byId("wholepage").style.display = ""; + }); + +}); // end function + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/test_Android-repeat-data-store.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/test_Android-repeat-data-store.html new file mode 100755 index 0000000..a0a736e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/test_Android-repeat-data-store.html @@ -0,0 +1,104 @@ + + + + + + Android Repeat Data Example + + + + + + + + + + +

                                                                  Android Repeat Data Binding Example.

                                                                  +
                                                                  Search Results:
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Details for selected index:
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/test_iPhone-shipto-billto.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/test_iPhone-shipto-billto.html new file mode 100755 index 0000000..700caae --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mobile/test_iPhone-shipto-billto.html @@ -0,0 +1,121 @@ + + + + + + iPhone Shipto-Billto + + + + + + + + + + +

                                                                  iPhone Data Binding Ex.

                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/models/LoanWizardModel.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/models/LoanWizardModel.js new file mode 100755 index 0000000..62314ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/models/LoanWizardModel.js @@ -0,0 +1,113 @@ +define([ + "dojo/_base/declare", + "dojox/mvc", + "dojox/mvc/StatefulModel", + "dojo/data/ItemFileWriteStore" +], function(declare, mvc, StatefulModel, ItemFileWriteStore){ + /*===== + declare = dojo.declare; + mvc = dojox.mvc; + StatefulModel = dojox.mvc.StatefulModel; + ItemFileWriteStore = dojo.data.ItemFileWriteStore; + =====*/ + + return declare("dojox.mvc.tests.models.LoanWizardModel", [StatefulModel], { + + // data store for pie chart + chartStore: new ItemFileWriteStore({ data: { + "hierarchical" : false, + "identifier" : "id", + "items" : [ + { "id" : "mortgage", "x" : 1, "y" : 0 }, + { "id" : "taxes", "x" : 2, "y" : 0 }, + { "id" : "otherhousing", "x" : 3, "y" : 0 } + ] + }}), + + constructor: function (args) { + this.inherited(arguments); + + // try to precompute address fields from the zipcode and country... + mvc.bindInputs([this.Zip, this.Country], dojo.hitch(this, this._lookupAddrs)); + // simple dependence of percentages on input values and total + mvc.bindInputs([this.Mortgage, this.Taxes, this.OtherHousing, this.BaseIncome, this.BonusIncome], dojo.hitch(this, this._recomputeTotalAndPercentages)); + + mvc.bind(this.HousingPercent, "value", this.HousingPercent, "valid", dojo.hitch(this, this._isHousingLessThanOrEqualToThirtyThreePercent), true); + + mvc.bind(this.HousingPercent, "value", this.HousingPercent, "relevant", dojo.hitch(this, this._nonZeroRelevance), true); + mvc.bind(this.TotalHousing, "value", this.TotalHousing, "relevant", dojo.hitch(this, this._nonZeroRelevance), true); + + this._recomputeTotalAndPercentages(); // get things going first time... + }, + + _lookupItem: function( dataSource, identity ) { + var found_item; + dataSource.fetchItemByIdentity( { "identity": identity, + "onItem": function (item) { found_item = item; } } ); + return found_item; + }, + + _lookupAddrs: function() { + if ( this.Zip.get("value") == null || isNaN(this.Zip.get("value"))) return; + var pThis = this; + var query = { "postalcode": this.Zip.get("value"), "country": this.Country.get("value") }; + var xhrArgs = { + url: "zips/"+this.Zip.get("value")+".json", + sync: true, + content: query, + preventCache: true, + handleAs: "json", + load: function(data, io) { + pThis.City.set("value", data.postalcodes[0].placeName ); + pThis.County.set("value", data.postalcodes[0].adminName2 ); + pThis.State.set("value", data.postalcodes[0].adminCode1 ); + pThis.Zip.set("valid", true ); + }, + error: function (data) { + // we couldn't find this country/zip combination...clear the fields and set validity=false + pThis.City.set("value", "" ); + pThis.County.set("value", "" ); + pThis.State.set("value", "" ); + pThis.Zip.set("valid", false ); + } + }; + //Call the synchronous xhrGet + var deferred = dojo.xhrGet(xhrArgs); + }, + + _recomputeTotalAndPercentages: function() { + var mortgage = parseInt(this.Mortgage.get("value")); + var taxes = parseInt(this.Taxes.get("value")); + var otherHousing = parseInt(this.OtherHousing.get("value")); + var totalHousing = mortgage + taxes + otherHousing; + + var baseIncome = parseInt(this.BaseIncome.get("value")); + var bonusIncome = parseInt(this.BonusIncome.get("value")); + var totalIncome = baseIncome + bonusIncome; + + var housingPercentage = Math.round(totalHousing / totalIncome * 100); + + this.HousingPercent.set("value", housingPercentage); + this.TotalHousing.set("value", totalHousing); + this.TotalIncome.set("value", totalIncome); + + // map the values into the data source structure required for chart display as well... + var mortgageItem = this._lookupItem(this.chartStore, "mortgage"); + var taxesItem = this._lookupItem(this.chartStore, "taxes"); + var otherItem = this._lookupItem(this.chartStore, "otherhousing"); + this.chartStore.setValue(mortgageItem, "y", mortgage); + this.chartStore.setValue(taxesItem, "y", taxes); + this.chartStore.setValue(otherItem, "y", otherHousing); + }, + + _isHousingLessThanOrEqualToThirtyThreePercent: function(newValue) { + return newValue <= 33; + }, + + _nonZeroRelevance: function(newValue) { + if ( newValue > 0 ) return true; + else return false; + } + + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/module.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/module.js new file mode 100755 index 0000000..56fb9e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/module.js @@ -0,0 +1,31 @@ +dojo.provide("dojox.mvc.tests.module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + // DOH + doh.registerUrl("dojox.mvc.tests.doh_mvc_shipto-billto-simple", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_shipto-billto-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_search-results-repeat", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_search-results-repeat.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_search-results-repeat-store", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_search-results-repeat-store.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_programmatic-repeat-store", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_programmatic-repeat-store.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_binding-simple", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_binding-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_ref-set-repeat", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_ref-set-repeat.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_billto-hierarchical", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_shipto-billto-hierarchical.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_async_mvc_input-output-simple", dojo.moduleUrl("dojox.mvc","tests/doh_async_mvc_input-output-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_template_repeat_exprchar", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_template_repeat_exprchar.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_form-kitchensink", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_form-kitchensink.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_date_test", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_date_test.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_validation-test-simple", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_validation-test-simple.html"+userArgs), 999999); + // Robot + doh.registerUrl("dojox.mvc.tests.robot.mobile-demo-test", dojo.moduleUrl("dojox.mvc","tests/robot/mobile-demo-test.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_shipto-billto-simple", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_shipto-billto-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_generate-view", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_generate-view.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_loan-stateful", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_loan-stateful.html"+userArgs), 999999); + //doh.registerUrl("dojox.mvc.tests.robot.mvc_ref-set-repeat", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_ref-set-repeat.html"+userArgs), 999999); + //doh.registerUrl("dojox.mvc.tests.robot.mvc_search-results-repeat", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_search-results-repeat.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_search-results-ins-del", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_search-results-ins-del.html"+userArgs), 999999); + //doh.registerUrl("dojox.mvc.tests.robot.iphone_shipto-billto", dojo.moduleUrl("dojox.mvc","tests/robot/iphone_shipto-billto.html"+userArgs), 999999); + //doh.registerUrl("dojox.mvc.tests.robot.android_repeat-ins", dojo.moduleUrl("dojox.mvc","tests/robot/android_repeat-ins.html"+userArgs), 999999); + //doh.registerUrl("dojox.mvc.tests.robot.mvc_shipto-billto-hierarchical", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_shipto-billto-hierarchical.html"+userArgs), 999999); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/moduleFullSet.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/moduleFullSet.js new file mode 100644 index 0000000..a83a79a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/moduleFullSet.js @@ -0,0 +1,31 @@ +dojo.provide("dojox.mvc.tests.module"); + +try{ + var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + // DOH + doh.registerUrl("dojox.mvc.tests.doh_mvc_shipto-billto-simple", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_shipto-billto-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_search-results-repeat", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_search-results-repeat.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_search-results-repeat-store", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_search-results-repeat-store.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_programmatic-repeat-store", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_programmatic-repeat-store.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_binding-simple", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_binding-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_ref-set-repeat", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_ref-set-repeat.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_binding-hierarchical", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_shipto-billto-hierarchical.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_async_mvc_input-output-simple", dojo.moduleUrl("dojox.mvc","tests/doh_async_mvc_input-output-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_template_repeat_exprchar", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_template_repeat_exprchar.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_form-kitchensink", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_form-kitchensink.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_date_test", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_date_test.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.doh_mvc_validation-test-simple", dojo.moduleUrl("dojox.mvc","tests/doh_mvc_validation-test-simple.html"+userArgs), 999999); + // Robot + doh.registerUrl("dojox.mvc.tests.robot.mobile-demo-test", dojo.moduleUrl("dojox.mvc","tests/robot/mobile-demo-test.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_shipto-billto-simple", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_shipto-billto-simple.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_generate-view", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_generate-view.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_loan-stateful", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_loan-stateful.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_ref-set-repeat", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_ref-set-repeat.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_search-results-repeat", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_search-results-repeat.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_search-results-ins-del", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_search-results-ins-del.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.iphone_shipto-billto", dojo.moduleUrl("dojox.mvc","tests/robot/iphone_shipto-billto.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.android_repeat-ins", dojo.moduleUrl("dojox.mvc","tests/robot/android_repeat-ins.html"+userArgs), 999999); + doh.registerUrl("dojox.mvc.tests.robot.mvc_shipto-billto-hierarchical", dojo.moduleUrl("dojox.mvc","tests/robot/mvc_shipto-billto-hierarchical.html"+userArgs), 999999); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/mvc_index.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mvc_index.html new file mode 100755 index 0000000..66896c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/mvc_index.html @@ -0,0 +1,37 @@ + + + + Dojo MVC Patterns + + + +

                                                                  Dojo MVC Patterns

                                                                  +

                                                                  Examples

                                                                  +

                                                                  +

                                                                  +
                                                                  Simple data-bound fields
                                                                  +
                                                                  "Hello world" of data binding -- no hierarchical or repeating structure nor model validation...just data binding.
                                                                  + +
                                                                  Hierarchical data-bound fields
                                                                  +
                                                                  Widgets are nested hierarchically showing relative binding context.
                                                                  + +
                                                                  Data-bound form fields
                                                                  +
                                                                  Form widgets bind to model data and merge model and widget states (e.g. validity) to determine overall status. + Data is provided for zipcodes of 10024 or 10706 to see side-effects on completing related fields. Try other 5-digit numeric values + to see the effect of model-flagged invalidity on the widget. Non-numeric fields trigger widget validation + failures and block flushing the value to the model. Try driving housing percent above 33% to raise + warnings on that field through its model validity as well. Try zero'ing out all housing + expenses to see the effect of relevance=false on the total housing field.
                                                                  + +
                                                                  Repeating templated widget content
                                                                  +
                                                                  Container "repeat" widget expands templated content and provides data binding context to child widgets.
                                                                  + +
                                                                  Repeating content with insert/delete operations
                                                                  +
                                                                  Above repeat example with mutable list for insert/delete.
                                                                  + +
                                                                  Model-bound view generation
                                                                  +
                                                                  Form generated based on JSON model provided in a text area and updated based on structural and value changes to the model.
                                                                  +
                                                                  +

                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/android_repeat-ins.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/android_repeat-ins.html new file mode 100755 index 0000000..34b04cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/android_repeat-ins.html @@ -0,0 +1,171 @@ + + + + doh.robot MVC search-results-ins-del Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/iphone_shipto-billto.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/iphone_shipto-billto.html new file mode 100755 index 0000000..a479fa4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/iphone_shipto-billto.html @@ -0,0 +1,102 @@ + + + + doh.robot MVC demo-shipto-billto-simple Declarative Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mobile-demo-test.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mobile-demo-test.html new file mode 100644 index 0000000..0289b85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mobile-demo-test.html @@ -0,0 +1,404 @@ + + + + doh.robot MVC demo-shipto-billto-simple Declarative Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_generate-view.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_generate-view.html new file mode 100755 index 0000000..4d14245 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_generate-view.html @@ -0,0 +1,179 @@ + + + + doh.robot MVC Generate View Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_loan-stateful.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_loan-stateful.html new file mode 100755 index 0000000..8855c1c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_loan-stateful.html @@ -0,0 +1,160 @@ + + + + doh.robot MVC loan stateful Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_ref-set-repeat.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_ref-set-repeat.html new file mode 100644 index 0000000..4659394 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_ref-set-repeat.html @@ -0,0 +1,156 @@ + + + + doh.robot MVC Ref set repeat test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_search-results-ins-del.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_search-results-ins-del.html new file mode 100755 index 0000000..6fdac2e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_search-results-ins-del.html @@ -0,0 +1,276 @@ + + + + doh.robot MVC search-results-ins-del Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_search-results-repeat.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_search-results-repeat.html new file mode 100755 index 0000000..fbf92ea --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_search-results-repeat.html @@ -0,0 +1,123 @@ + + + + doh.robot MVC search-results-repeat Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_shipto-billto-hierarchical.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_shipto-billto-hierarchical.html new file mode 100755 index 0000000..46dd43f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_shipto-billto-hierarchical.html @@ -0,0 +1,103 @@ + + + + doh.robot MVC shipto-billto-hierarchical Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_shipto-billto-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_shipto-billto-simple.html new file mode 100755 index 0000000..78018dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/robot/mvc_shipto-billto-simple.html @@ -0,0 +1,101 @@ + + + + doh.robot MVC demo-shipto-billto-simple Declarative Test + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/runTests.html new file mode 100755 index 0000000..92b5c3b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/runTestsFullSet.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/runTestsFullSet.html new file mode 100644 index 0000000..305cfcb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/runTestsFullSet.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_group-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_group-simple.html new file mode 100644 index 0000000..b4d0279 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_group-simple.html @@ -0,0 +1,81 @@ + + + + + Async Simple Input - Output Group example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + (first name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (last name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (email is: ${this.value}) + +
                                                                  +
                                                                  Model: + +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_input-output-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_input-output-simple.html new file mode 100644 index 0000000..efe2b47 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_input-output-simple.html @@ -0,0 +1,82 @@ + + + + + Simple Input-Output Data Binding Example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + (first name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (last name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (email is: ${this.value}) + +
                                                                  +
                                                                  Model: + +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_repeat-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_repeat-simple.html new file mode 100644 index 0000000..e9055bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_async-mvc_repeat-simple.html @@ -0,0 +1,193 @@ + + + + + Static Master/Detail Pattern -- Multiple Address Detail example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  + +
                                                                  Search Results for term: Engineers
                                                                  + + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  Details for result index: 0
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  + +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_bindings-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_bindings-simple.html new file mode 100755 index 0000000..4535d78 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_bindings-simple.html @@ -0,0 +1,182 @@ + + + + + Static Master/Detail Pattern -- Binding Test + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +

                                                                  Bind Self Tests

                                                                  +
                                                                  + + + + +
                                                                  +
                                                                  + + + + + (first name is: ${this.value}) + + +
                                                                  +
                                                                  + + + Relevant is: ${this.ref.relevant}, Valid is: ${this.ref.valid}, Read-only is: ${this.ref.readOnly}) + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + + (num is: ${this.value}) + +
                                                                  +

                                                                  Bind Tests

                                                                  +
                                                                  + + + + + +
                                                                  + +
                                                                  + + + + (last name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (email is: ${this.value}) + +
                                                                  +
                                                                  + + + Relevant is: ${this.ref.relevant}, Valid is: ${this.ref.valid}, Read-only is: ${this.ref.readOnly}, Required is: ${this.ref.required}) + +
                                                                  + +
                                                                  Model: + +
                                                                  +
                                                                  + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_dates.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_dates.html new file mode 100644 index 0000000..e402908 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_dates.html @@ -0,0 +1,407 @@ + + + + + 13899 mvc Stateful Dates + + + + + + + + + + + + + + + + +

                                                                  Test 1: Two Calendars bound to each other, a TextBox and an mvc Output field.

                                                                  +
                                                                  + + + + + + + + +
                                                                  + + + + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + +

                                                                  Test 2: Two DateTextBoxes bound to each other, a TextBox and an mvc Output field.

                                                                  +
                                                                  + + + + + + + + +
                                                                  + + + + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +

                                                                  Test 3: One Calendar bound to a DateTextbox, a TextBox and an mvc Output field.

                                                                  +
                                                                  + + + + + + + + +
                                                                  + + + + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_form-kitchensink.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_form-kitchensink.html new file mode 100644 index 0000000..1649366 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_form-kitchensink.html @@ -0,0 +1,651 @@ + + + + + Data-bound Form element Kitchen Sink test + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +

                                                                  Programmatic creation of Form elements:

                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  + +

                                                                  Declarative creation of Form elements:

                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + + + + + ${this.value} +
                                                                  + +

                                                                  Test data-bound dijit.Calendar:

                                                                  + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  + + + + + ${this.value} +
                                                                  +
                                                                  +
                                                                  + + + ${this.value} +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_generate-view-store.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_generate-view-store.html new file mode 100755 index 0000000..d63d811 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_generate-view-store.html @@ -0,0 +1,71 @@ + + + + + View generation -- Model-bound generation example with a store, commit and reset + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +

                                                                  Generated View

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_generate-view.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_generate-view.html new file mode 100755 index 0000000..95e0b77 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_generate-view.html @@ -0,0 +1,75 @@ + + + + + View generation -- Model-bound generation example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +

                                                                  Model

                                                                  +
                                                                  + +
                                                                  +

                                                                  Generated View

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_input-output-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_input-output-simple.html new file mode 100755 index 0000000..2531b7a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_input-output-simple.html @@ -0,0 +1,74 @@ + + + + + Static Master/Detail Pattern -- Multiple Address Detail example + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + (first name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (last name is: ${this.value}) + +
                                                                  +
                                                                  + + + + (email is: ${this.value}) + +
                                                                  +
                                                                  Model: + +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_loan-stateful.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_loan-stateful.html new file mode 100755 index 0000000..9eb9bc9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_loan-stateful.html @@ -0,0 +1,187 @@ + + + + + Loan Form (Using DOJO within MVC Support) + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +

                                                                  Borrower information

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +

                                                                  Expenses

                                                                  +
                                                                  +
                                                                  + + + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +

                                                                  Income

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +

                                                                  Analysis

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_programmatic-repeat-store.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_programmatic-repeat-store.html new file mode 100644 index 0000000..3be7256 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_programmatic-repeat-store.html @@ -0,0 +1,147 @@ + + + + + Programmatic Repeat example, using a store with save, commit and reset + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Search Results for term:
                                                                  + + + + +
                                                                  +
                                                                  +
                                                                  Programatic Repeat using my.Repeat and its templateString:
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Declarative Repeat using my.Repeat does not pass templateString:
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  + +
                                                                  +
                                                                  Details for selected index:
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_ref-kitchensink.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_ref-kitchensink.html new file mode 100755 index 0000000..2726a81 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_ref-kitchensink.html @@ -0,0 +1,160 @@ + + + + + Data binding -- Ref kitchen sink example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  + +
                                                                  + +
                                                                  + +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  + +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Choose: + + +
                                                                  + +
                                                                  + +
                                                                  + + +
                                                                  + +
                                                                  + + +
                                                                  + +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Model: + +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_ref-set-repeat-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_ref-set-repeat-simple.html new file mode 100644 index 0000000..7034d80 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_ref-set-repeat-simple.html @@ -0,0 +1,140 @@ + + + + + Static Master/Detail Pattern -- Multiple Address Detail example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + Model1 Output is ==> + + + Name1 is "${this.value}" : + + + Name2 is "${this.value}" : + + + Name3 is "${this.value}" + +
                                                                  +
                                                                  + + Model2 Output is ==> + + + Name1 is "${this.value}" : + + + Name2 is "${this.value}" + +
                                                                  +
                                                                  + + Model3 Output is ==> + + + Name1 is "${this.value}" + +
                                                                  +
                                                                  Model: + +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_repeat-declarative-sync.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_repeat-declarative-sync.html new file mode 100755 index 0000000..61e1818 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_repeat-declarative-sync.html @@ -0,0 +1,205 @@ + + + + + Static Master/Detail Pattern -- Search Results example, declarative with save, commit and reset + + + + + + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Search Results for term:
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  Details for selected index:
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_repeat-store-declarative-async.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_repeat-store-declarative-async.html new file mode 100755 index 0000000..9f250c9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_repeat-store-declarative-async.html @@ -0,0 +1,128 @@ + + + + + Static Master/Detail Pattern -- Search Results example, using a store with save, commit and reset + + + + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Search Results for term:
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  Details for selected index:
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-ins-del.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-ins-del.html new file mode 100755 index 0000000..2b99dd5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-ins-del.html @@ -0,0 +1,239 @@ + + + + + Static Master/Detail Pattern -- Search Results example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  + +
                                                                  Search Results for term: Engineers
                                                                  + + +
                                                                  +
                                                                  + + + + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  Details for result index: 0
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-repeat-store.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-repeat-store.html new file mode 100755 index 0000000..f6191df --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-repeat-store.html @@ -0,0 +1,116 @@ + + + + + Static Master/Detail Pattern -- Search Results example, using a store with save, commit and reset + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  Search Results for term:
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  Details for selected index:
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-repeat.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-repeat.html new file mode 100755 index 0000000..6f2dc88 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_search-results-repeat.html @@ -0,0 +1,222 @@ + + + + + Static Master/Detail Pattern -- Search Results example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  + +
                                                                  Search Results for term: Engineers
                                                                  + + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  Details for result index: 0
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-hierarchical.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-hierarchical.html new file mode 100755 index 0000000..e903644 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-hierarchical.html @@ -0,0 +1,198 @@ + + + + + Static Master/Detail Pattern -- Multiple Address Detail example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Choose: + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Model: + +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple-declarative.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple-declarative.html new file mode 100755 index 0000000..723e680 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple-declarative.html @@ -0,0 +1,132 @@ + + + + + Static Master/Detail Pattern -- Declarative Multiple Address Detail example + + + + + + + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Choose: + + +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Model: + +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple-oldparser.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple-oldparser.html new file mode 100755 index 0000000..d1653d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple-oldparser.html @@ -0,0 +1,131 @@ + + + + + Static Master/Detail Pattern -- Multiple Address Detail example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Choose: + + +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Model: + +
                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple.html new file mode 100755 index 0000000..23092ab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_shipto-billto-simple.html @@ -0,0 +1,130 @@ + + + + + Static Master/Detail Pattern -- Multiple Address Detail example + + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Choose: + + +
                                                                  + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  + Model: + +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_simple-programmatic.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_simple-programmatic.html new file mode 100755 index 0000000..7d325b7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_mvc_simple-programmatic.html @@ -0,0 +1,64 @@ + + + + + Simple programmatic data binding - Toggle example + + + + + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/myMvcTemplated.js b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/myMvcTemplated.js new file mode 100644 index 0000000..3ed5040 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/myMvcTemplated.js @@ -0,0 +1,22 @@ +/* + * This template is used to show how to use exprchar to avoid instance of _TemplatedMixin error in dojo.mvc data binding. + * If the templateString contains ${xxx}, it will throw an template error, use #{xxx} with exprchar :"#" instead. + * See how it works in test_mvc_widget.html and test_mvc_widget_template.html + */ +define(["dojo", "dijit", "dojox", "dijit/_Widget", "dijit/_TemplatedMixin", "dojo/text!./test_mvc_widget_template.html"], + function(dojo, dijit, dojox, Widget, TemplatedMixin, template){ + return dojo.declare("dojox.mvc.tests.test_templatedWidget.myMvcTemplated", [Widget, TemplatedMixin], { + templateString: template, + widgetsInTemplate: true, + + buildRendering: function(){ + console.log("call myMvcTemplated buildRendering"); + this.inherited(arguments); + }, + + getParent: function(){ + console.log("Call myMvcTemplated getParent"); + return null; + } + }); +}); diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/readme.txt b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/readme.txt new file mode 100644 index 0000000..d90a6fd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/readme.txt @@ -0,0 +1,3 @@ +1. This directory in dojox/mvc/test/templatedWidget is used to test the exprchar which is need for a custom templated widget. +2. test_mvc_widget_template show how to use exprchar in a template for a widget to avoid a problem with ${..} error in repeat data binding. +3. Use test_mvc_widget.html to see the results. diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/test_mvc_widget.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/test_mvc_widget.html new file mode 100644 index 0000000..2691854 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/test_mvc_widget.html @@ -0,0 +1,78 @@ + + + + + Test template with Repeat using different exprchars. + + + + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + Test exprchar. Widget template test uses exprchar of # and others for template:#{this.index} etc. +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/test_mvc_widget_template.html b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/test_mvc_widget_template.html new file mode 100644 index 0000000..13b2244 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/test_templatedWidget/test_mvc_widget_template.html @@ -0,0 +1,39 @@ +
                                                                  +
                                                                  This repeat uses exprchar: #
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  This repeat uses exprchar: a
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  This repeat uses exprchar: b
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  This repeat uses exprchar: 9
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  + +
                                                                  \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/zips/10024.json b/js/dojo-release-1.7.2-src/dojox/mvc/tests/zips/10024.json new file mode 100755 index 0000000..6952bf4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/zips/10024.json @@ -0,0 +1,12 @@ +{"postalcodes":[ + {"adminName2":"Manhattan", + "adminCode2":"119", + "postalcode":"10024", + "adminCode1":"NY", + "countryCode":"US", + "lng":-73.862969, + "placeName":"New York", + "lat":40.987797, + "adminName1":"New York" + } +]} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/mvc/tests/zips/10706.json b/js/dojo-release-1.7.2-src/dojox/mvc/tests/zips/10706.json new file mode 100755 index 0000000..4c242dc --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/mvc/tests/zips/10706.json @@ -0,0 +1,12 @@ +{"postalcodes":[ + {"adminName2":"Westchester", + "adminCode2":"119", + "postalcode":"10706", + "adminCode1":"NY", + "countryCode":"US", + "lng":-73.862969, + "placeName":"Hastings On Hudson", + "lat":40.987797, + "adminName1":"New York" + } +]} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/package.json b/js/dojo-release-1.7.2-src/dojox/package.json new file mode 100644 index 0000000..7a3642f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/package.json @@ -0,0 +1,23 @@ +{ + "name": "dojox", + "version":"1.7.2", + "directories": { + "lib": "." + }, + "main": "main", + "description": "Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.", + "licenses": [ + { + "type": "AFLv2.1", + "url": "http://trac.dojotoolkit.org/browser/dojox/trunk/LICENSE#L43" + }, + { + "type": "BSD", + "url": "http://trac.dojotoolkit.org/browser/dojox/trunk/LICENSE#L13" + } + ], + "bugs": "http://bugs.dojotoolkit.org/", + "keywords": ["JavaScript", "Dojo", "Toolkit", "DojoX"], + "homepage": "http://dojotoolkit.org/", + "dojoBuild": "dojox.profile.js" +} diff --git a/js/dojo-release-1.7.2-src/dojox/rails.js b/js/dojo-release-1.7.2-src/dojox/rails.js new file mode 100644 index 0000000..0af14f1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rails.js @@ -0,0 +1,143 @@ +dojo.provide("dojox.rails"); +dojo.require("dojo.NodeList-traverse"); + +dojox.rails.live = function(selector, evtName, fn){ + if (dojo.isIE && evtName.match(/^(on)?submit$/i)){ + dojox.rails.live(selector, "click", function(evt){ + var target = evt.target, tag = target.tagName.toLowerCase(); + if ((tag == "input" || tag == "button") && dojo.attr(target, "type").toLowerCase() == "submit"){ + var form = dojo.query(target).closest("form"); + if (form.length){ + var h = dojo.connect(form[0], "submit", function(evt){ + dojo.disconnect(h); + fn.call(evt.target, evt); + }); + } + } + }); + }else{ + dojo.connect(dojo.body(), evtName, function(evt){ + var nl = dojo.query(evt.target).closest(selector); + if (nl.length){ + fn.call(nl[0], evt); + } + }); + } +}; + +dojo.ready((function(d, dr, dg){ + return function() { + var q = d.query, live = dr.live, + csrfToken = q("meta[name=csrf-token]").attr("content"), + csrfParam = q("meta[name=csrf-param]").attr("content"); + + var createFormForLink = function(url, method){ + var form = '
                                                                  ' + + '' + + '' + + '
                                                                  '; + return dojo.place(form, dojo.body()); + }; + + var disable = function(elements){ + d.forEach(elements, function(node){ + if (!d.attr(node, "disabled")){ + var attr = node.tagName.toLowerCase() == "input" ? "value" : "innerHTML"; + var message = d.attr(node, "data-disable-with"); + var originalValue = d.attr(node, attr); + d.attr(node, "disabled", true); + d.attr(node, "data-original-value", originalValue); + d.attr(node, attr, message); + } + }); + }; + + var typeMap = { + "text": "text", + "json": "application/json", + "json-comment-optional": "text", + "json-comment-filtered": "text", + "javascript": "application/javascript", + "xml": "text/xml" + }; + + var handleRemote = function(evt){ + var el = evt.target, tag = el.tagName.toLowerCase(); + var content = tag.toLowerCase() == "form" ? d.formToObject(el) : {}, + type = d.attr(el, "data-type") || "javascript", + method = (d.attr(el, "method") || d.attr(el, "data-method") || "get").toLowerCase(), + url = d.attr(el, "action") || d.attr(el, "href"); + + if (tag != "form" && method != "get"){ + el = createFormForLink(url, method); + method = "POST"; + } + evt.preventDefault(); + + + // ajax:loading, ajax:loaded, and ajax:interactive are not supported + d.publish("ajax:before", [el]); + var deferred = d.xhr(method, { + url: url, + headers: { "Accept": typeMap[type] }, + content: content, + handleAs: type, + load: function(response, ioArgs) {d.publish("ajax:success", [el, response, ioArgs]);}, + error: function(response, ioArgs) {d.publish("ajax:failure", [el, response, ioArgs]);}, + handle: function(response, ioArgs) {d.publish("ajax:complete", [el, response, ioArgs]);} + }); + d.publish("ajax:after", [el]); + }; + + var handleEnable = function(el){ + q("*[data-disable-with][disabled]", el).forEach(function(node){ + var attr = node.tagName.toLowerCase() == "input" ? "value" : "innerHTML"; + var value = d.attr(node, "data-original-value"); + d.attr(node, "disabled", false); + d.attr(node, "data-original-value", null); + d.attr(node, attr, value); + }); + }; + + var handleDataMethod = function(evt){ + var el = evt.target, form = createFormForLink(el.href, dojo.attr(el, "data-method")); + evt.preventDefault(); + form.submit(); + }; + + var handleFormSubmit = function(evt){ + var el = evt.target, elements = q("*[data-disable-with]", el); + if (elements.length){ disable(elements); } + if (d.attr(el, "data-remote")){ + evt.preventDefault(); + handleRemote(evt); + } + }; + + var handleConfirm = function(evt){ + var proceed = dg.confirm(d.attr(evt.target, "data-confirm")); + if (!proceed){ + evt.preventDefault(); + }else if (d.attr(evt.target, "data-remote")){ + handleRemote(evt); + } + }; + + // Register data-{action} elements. Order is important since the return values + // from previously called functions in the connect chain influence whether + // or not the next function in the chain is called. + + // Register data-confirm elements + live("*[data-confirm]", "click", handleConfirm); + + // data-disable-with only applies to forms + d.subscribe("ajax:complete", handleEnable); + + // Register data-remote elements + live("a[data-remote]:not([data-confirm])", "click", handleRemote); + live("a[data-method]:not([data-remote])", "click", handleDataMethod); + + // Handle form submits + live("form", "submit", handleFormSubmit); + }; +})(dojo, dojox.rails, dojo.global)); diff --git a/js/dojo-release-1.7.2-src/dojox/rails/README b/js/dojo-release-1.7.2-src/dojox/rails/README new file mode 100644 index 0000000..44c8a32 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rails/README @@ -0,0 +1,40 @@ +------------------------------------------------------------------------------- +Project Name: dojox.rails +------------------------------------------------------------------------------- +Version 0.1 +Release date: 03/23/2010 +------------------------------------------------------------------------------- +Project state: + experimental +------------------------------------------------------------------------------- +Credits: + Bob Remeika (bob.remeika@gmail.com) + ttilley (This code is based a lot on what he contributed). + +------------------------------------------------------------------------------- +Project description + +This is a dojo plugin for Rails 3.x UJS support + +------------------------------------------------------------------------------- +Dependencies: + dojo base +------------------------------------------------------------------------------- +Documentation + Apparently none + +------------------------------------------------------------------------------- +Installation instructions + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/src/dojox/trunk/rails.js + +Install into the following directory structure: +/dojox/rails.js + +...which should be at the same level as your Dojo checkout. + +then dojo.require("dojox.rails") in your application to load it. + +------------------------------------------------------------------------------- + diff --git a/js/dojo-release-1.7.2-src/dojox/rails/tests/module.js b/js/dojo-release-1.7.2-src/dojox/rails/tests/module.js new file mode 100644 index 0000000..fff89bf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rails/tests/module.js @@ -0,0 +1,7 @@ +dojo.provide("dojox.rails.tests.module"); + +try{ + doh.registerUrl("dojox.rails", dojo.moduleUrl("dojox.rails", "tests/test_rails.html")); +}catch(e){ + doh.debug(e); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rails/tests/plugd/trigger.js b/js/dojo-release-1.7.2-src/dojox/rails/tests/plugd/trigger.js new file mode 100644 index 0000000..122196f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rails/tests/plugd/trigger.js @@ -0,0 +1,187 @@ +dojo.provide("dojox.rails.tests.plugd.trigger"); +(function(d){ + + var isfn = d.isFunction, + leaveRe = /mouse(enter|leave)/, + _fix = function(_, p){ + return "mouse" + (p == "enter" ? "over" : "out"); + }, + mix = d._mixin, + + // the guts of the node triggering logic: + // the function accepts node (not string|node), "on"-less event name, + // and an object of args to mix into the event. + realTrigger = d.doc.createEvent ? + function(n, e, a){ + // the sane branch + var ev = d.doc.createEvent("HTMLEvents"); + e = e.replace(leaveRe, _fix); + ev.initEvent(e, true, true); + a && mix(ev, a); + n.dispatchEvent(ev); + } : + function(n, e, a){ + // the janktastic branch + var ev = "on" + e, stop = false, lc = e.toLowerCase(), node = n; + try{ +// FIXME: is this worth it? for mixed-case native event support:? Opera ends up in the +// createEvent path above, and also fails on _some_ native-named events. +// if(lc !== e && d.indexOf(d.NodeList.events, lc) >= 0){ +// // if the event is one of those listed in our NodeList list +// // in lowercase form but is mixed case, throw to avoid +// // fireEvent. /me sighs. http://gist.github.com/315318 +// throw("janktastic"); +// } + n.fireEvent(ev); + }catch(er){ + console.warn("in catch", er); + // a lame duck to work with. we're probably a 'custom event' + var evdata = mix({ + type: e, target: n, faux: true, + // HACK: [needs] added support for customStopper to _base/event.js + // some tests will fail until del._stopPropagation has support. + _stopper: function(){ stop = this.cancelBubble; } + }, a); + + isfn(n[ev]) && n[ev](evdata); + + // handle bubbling of custom events, unless the event was stopped. + while(!stop && n !== d.doc && n.parentNode){ + n = n.parentNode; + isfn(n[ev]) && n[ev](evdata); + } + } + } + ; + + d._trigger = function(/* DomNode|String */node, /* String */event, extraArgs){ + // summary: + // Helper for `dojo.trigger`, which handles the DOM cases. We should never + // be here without a domNode reference and a string eventname. + var n = d.byId(node), ev = event && event.slice(0, 2) == "on" ? event.slice(2) : event; + realTrigger(n, ev, extraArgs); + + }; + + d.trigger = function(obj, event, extraArgs){ + // summary: + // Trigger some event. It can be either a Dom Event, Custom Event, + // or direct function call. + // + // description: + // Trigger some event. It can be either a Dom Event, Custom Event, + // or direct function call. NOTE: This function does not trigger + // default behavior, only triggers bound event listeneres. eg: + // one cannot trigger("anchorNode", "onclick") and expect the browser + // to follow the href="" attribute naturally. + // + // obj: String|DomNode|Object|Function + // An ID, or DomNode reference, from which to trigger the event. + // If an Object, fire the `event` in the scope of this object, + // similar to calling dojo.hitch(obj, event)(). The return value + // in this case is returned from `dojo.trigger` + // + // event: String|Function + // The name of the event to trigger. Can be any DOM level 2 event + // and can be in either form: "onclick" or "click" for instance. + // In the object-firing case, this method can be a function or + // a string version of a member function, just like `dojo.hitch`. + // + // extraArgs: Object? + // An object to mix into the `event` object passed to any bound + // listeners. Be careful not to override important members, like + // `type`, or `preventDefault`. It will likely error. + // + // Additionally, extraArgs is moot in the object-triggering case, + // as all arguments beyond the `event` are curried onto the triggered + // function. + // + // example: + // | dojo.connect(node, "onclick", function(e){ /* stuff */ }); + // | // later: + // | dojo.trigger(node, "onclick"); + // + // example: + // | // or from within dojo.query: (requires dojo.NodeList) + // | dojo.query("a").onclick(function(){}).trigger("onclick"); + // + // example: + // | // fire obj.method() in scope of obj + // | dojo.trigger(obj, "method"); + // + // example: + // | // fire an anonymous function: + // | dojo.trigger(d.global, function(){ /* stuff */ }); + // + // example: + // | // fire and anonymous function in the scope of obj + // | dojo.trigger(obj, function(){ this == obj; }); + // + // example: + // | // with a connected function like: + // | dojo.connect(dojo.doc, "onclick", function(e){ + // | if(e && e.manuallydone){ + // | console.log("this was a triggered onclick, not natural"); + // | } + // | }); + // | // fire onclick, passing in a custom bit of info + // | dojo.trigger("someId", "onclick", { manuallydone:true }); + // + // returns: Anything + // Will not return anything in the Dom event case, but will return whatever + // return value is received from the triggered event. + return (isfn(obj) || isfn(event) || isfn(obj[event])) ? + d.hitch.apply(d, arguments)() : d._trigger.apply(d, arguments); + }; + + // adapt for dojo.query: + /*===== + dojo.extend(dojo.NodeList, { + trigger: function(event, data){ + // summary: + // Trigger some Event originating from each of the nodes in this + // `dojo.NodeList`. + // + // event: String + // Any strig identifier for the event.type to be triggered. + // + // data: Object + // Just like `extraArgs` for `dojo.trigger`, additional data + // to mix into the event object. + // + // example: + // | dojo.query("a").trigger("onclick"); + + return this; // dojo.NodeList + } + }); + =====*/ + d.NodeList.prototype.trigger = d.NodeList._adaptAsForEach(d._trigger); + + // if the node.js module is available, extend trigger into that. + if(d._Node && !d._Node.prototype.trigger){ + d.extend(d._Node, { + trigger: function(ev, data){ + // summary: + // Fire some some event originating from this node. + // Only available if both the `dojo.trigger` and `dojo.node` plugin + // are enabled. Allows chaining as all `dojo._Node` methods do. + // + // ev: String + // Some string event name to fire. eg: "onclick", "submit" + // + // data: Object + // Just like `extraArgs` for `dojo.trigger`, additional data + // to mix into the event object. + // + // example: + // | // fire onlick orginiating from a node with id="someAnchorId" + // | dojo.node("someAnchorId").trigger("click"); + + d._trigger(this, ev, data); + return this; // dojo._Node + } + }); + } + +})(dojo); diff --git a/js/dojo-release-1.7.2-src/dojox/rails/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/rails/tests/runTests.html new file mode 100644 index 0000000..e73aedd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rails/tests/runTests.html @@ -0,0 +1,9 @@ + + + DojoX Functional Unit Test Runner + + + +

                                                                  Redirecting to D.O.H runner.

                                                                  + + diff --git a/js/dojo-release-1.7.2-src/dojox/rails/tests/success_response.html b/js/dojo-release-1.7.2-src/dojox/rails/tests/success_response.html new file mode 100644 index 0000000..bc3b9f6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rails/tests/success_response.html @@ -0,0 +1 @@ +

                                                                  some html

                                                                  diff --git a/js/dojo-release-1.7.2-src/dojox/rails/tests/test_rails.html b/js/dojo-release-1.7.2-src/dojox/rails/tests/test_rails.html new file mode 100644 index 0000000..c998efd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rails/tests/test_rails.html @@ -0,0 +1,320 @@ + + + + dojox.rails test + + + + + + + +

                                                                  Manual Tests

                                                                  + +

                                                                  Confirm

                                                                  + +
                                                                  +
                                                                  This is a dynamically created link. When the confirm dialog is cancelled, it should stop processing. When the confirm dialog is confirmed, it should proceed to the href url.
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  This is a dynamically created submit button. When the confirm dialog is cancelled, it should stop processing. When the confirm dialog is confirmed, it should proceed to the form action url.
                                                                  +
                                                                  +
                                                                  + Title:
                                                                  + Body: + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +

                                                                  Automated Tests

                                                                  + +

                                                                  Remote

                                                                  +
                                                                  +
                                                                  This is a dynamically created link. When the link is clicked it should successfully make an ajax request.
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  This is a dynamically created link. When the link is clicked it should fail when making an ajax request.
                                                                  + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  This is a form created with markup. When submit is clicked it should send a get request to /posts
                                                                  +
                                                                  +
                                                                  + Title:
                                                                  + Body: + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + +

                                                                  Disable With

                                                                  +
                                                                  +
                                                                  This is a regular form with child elements to disable. All disable-with elements should be disabled when the form is submitted.
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  This is a ajax form that should have it's elements reenabled when the ajax request has completed.
                                                                  +
                                                                  +
                                                                  + + +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +

                                                                  + Form (Ajaxy)

                                                                  + Title:
                                                                  + Body: + +
                                                                  +

                                                                  + +

                                                                  + Form (Normal):
                                                                  +

                                                                  + Title:
                                                                  + Body: + +
                                                                  +

                                                                  + + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/resources/README.template b/js/dojo-release-1.7.2-src/dojox/resources/README.template new file mode 100644 index 0000000..6073c81 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/resources/README.template @@ -0,0 +1,42 @@ +------------------------------------------------------------------------------- +Project Name +------------------------------------------------------------------------------- +Version X.XXX +Release date: MM/DD/YYYY +------------------------------------------------------------------------------- +Project state: +[Object1]: experimental | alpha | beta | production +[Object2]: experimental | alpha | beta | production +------------------------------------------------------------------------------- +[ ] l18n support? +[ ] a11y support? +------------------------------------------------------------------------------- +Credits +[Object1]: Author one (author contact info) +[Object2]: Author two (author contact info) +------------------------------------------------------------------------------- +Project description + +Describe the point of the project here. +------------------------------------------------------------------------------- +Dependencies: + +List any dependencies here. +------------------------------------------------------------------------------- +Documentation + +Any notes about documentation--such as a link to a page in the Book of Dojo, +documentation state, etc.--should go here. +------------------------------------------------------------------------------- +Installation instructions + +Use this to explain in detail what a person needs to do in order to use this +project. Include URLs for grabbing source, URLs for any dependencies, etc. +Also be sure to include any additional information, such as where to place +CSS files, images, other media, etc. The goal is that someone reading this +file can follow your instructions and be using this project within minutes. +------------------------------------------------------------------------------- +Additional Notes + +Anything else you think is of interest (for example, object hierarchy) should +be placed here. diff --git a/js/dojo-release-1.7.2-src/dojox/resources/_modules.js b/js/dojo-release-1.7.2-src/dojox/resources/_modules.js new file mode 100644 index 0000000..9b8bfa6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/resources/_modules.js @@ -0,0 +1,252 @@ +/*===== +// this file is in place as a quick way to give summaries to all available dojox projects. + +dojox = { + // summary: + // DojoX: the home for Dojo eXtensions + // + // description: + // DojoX is a collection of subprojects provided by Dojo committers and subject to + // the generous licensing and policies of the [Dojo CLA](http://dojotoolkit.org/cla) + // Each subproject in DojoX has its own top-level directory and a README file with + // status information and project status and a stability rating (experimental, beta, stable) + // + // Projects may or may not depend on other top-level Dojo projects, like Dojo or Dijit. + // Unlike Dojo and Dijit, code is not subject to i18n and a11y restrictions and may vary + // in quality (experimental code is encouraged in DojoX, but currently prohibited in Dojo + // and Dijit) + // + // DojoX projects may mature to a stable state and stay in DojoX, or on occasion + // after proving themselves may migrate to Dojo Core or Dijit. Dojo and Dijit projects + // are constrained both by development resources as well as design goals, so DojoX is + // a natural place to provide enhanced behavior or extend Dojo Core or Dijit primitives. + // DojoX can also be an incubator for entirely new projects. +} + +dojox.analytics = { + // summary: Website analytics and client monitoring system +}; + +dojox.atom = { + // summary: Implements the Atom Syndication Format and Atom Publishing Protocol +}; + +dojox.av = { + // summary: Provides Audio/Video capabilities +}; + +dojox.charting = { + // summary: Vector graphic, data-driven graphs and charts +}; + +dojox.collections = { + // summary: A set of lists and hashes for easy use within your applications. +}; + +dojox.color = { + // summary: Advanced color methods, including HSV, HSL, and CMYK conversion, a color generator and advanced colorspace calculations. +}; + +dojox.cometd = { + // summary: A cometd client written in Dojo +}; + +dojox.data = { + // summary: Additional dojo.data data stores and demos +}; + +dojox.date = { + // summary: Additional date manipulation functions +}; + +dojox.drawing = { + // summary: A vector drawing program +}; + +dojox.dtl = { + // summary: Django Templating Language implementation +}; + +dojox.editor = { + // summary: Extensions for dijit.Editor +}; + +dojox.embed = { + // summary: Base code for embedding for external objects like Flash, Quicktime +}; + +dojox.encoding = { + // summary: Various encoding algorithms, including crypto and digests. +}; + +dojox.flash = { + // summary: Utilities to embed and communicate with Flash-based objects +}; + +dojox.form = { + // summary: Form-related widgets +}; + +dojox.fx = { + // summary: Extension animations to the core dojo FX project + // + // description: + // A package of animations, and FX-related code, extending Dojo Core fx. + // Including this package includes all the Base and Core fx packages. + // + + style: { // summary: Module to provide CSS animations + }, + + scroll: { // summary: Module to provide scroll-related FX + } +}; +dojox.fx["ext-dojo"] = { + // summary: Direct extensions to dojo.fx namespace + NodeList: { + // summary: module to include to support dojox.fx animations in dojo.query() + } +}; + +dojox.gfx = { + // summary: Cross-browser vector graphics API + // description: + // + // dojox.gfx is an advanced API providing normalized vector drawing + // in a variety of browsers. It has individual renderers for SVG, VML, + // Canvas, and Silverlight. +}; + +dojox.gfx3d = { + // summary: A 3d API for dojox.gfx +}; + +dojox.grid = { + // summary: An advanced Grid widget with virtual scrolling, cell editing, and much more +}; + +dojox.help = { + // summary: TODOC +}; + +dojox.highlight = { + // summary: A client-side syntax highlighting engine. + // description: + // This project parses pre > code nodes, and applies syntax highlighting for + // a wide variety of languages. Simply dojo.require() in all the + // dojox.highlight.languages you wish to include in your highlighingting, + // and customize colors in the highlight.css. + // + // It is provided as a dojo package, contributed under CLA + // by Ivan Sagalaev and is available originally from: + // http://softwaremaniacs.org/soft/highlight/en/ + // +}; + +dojox.html = { + // summary: TODOC +}; + +dojox.image = { + // summary: A collection of image related widgets +}; + +dojox.io = { + // summary: Extensions to the Core dojo.io transports +}; + +dojox.jq = { + // summary: A JQuery compatibility layer +}; + +dojox.jsonPath = { + // summary: A query system for JavaScript objects +}; + +dojox.lang = { + // summary: Language specific extensions + functional: { + // summary: Functional language constructs, including currying and lambda. + } +}; + +dojox.layout = { + // summary: A collection of layout related Widgets +}; + +dojox.math = { + // summary: A collection of various advanced math functions. +}; + +dojox.robot = { + // summary: TODOC +}; + +dojox.rpc = { + // summary: TODOC +}; + +dojox.secure = { + // summary: TODOC +}; + +dojox.sketch = { + // summary: TODOC +}; + +dojox.sql = { + // summary: objects to support Dojo Offline (dojox.off) DEPRECATED +}; + +dojox.storage = { + // summary: Objects for mass storage within the browser. For when cookies just aren't enough. +}; + +dojox.string = { + // summary: A collection of various objects for advanced string manipulation, including a Builder and a tokenizer. +}; + +dojox.testing = { + // summary: TODOC +}; + +dojox.timing = { + // summary: A set of objects to perform advanced time-based tasks, including a basic Timer. +}; + +dojox.uuid = { + // summary: Universally Unique Identifier (UUID) implementations, including an implementation of UUID 2 +}; + +dojox.validate = { + // summary: Additional input validation methods + ca : { + // summary: Methods specific to the Canadian provinces + }, + creditCard : { + // summary: Validate various credit card types + } +}; + +dojox.widget = { + // summary: A collection of un-categorized widgets, or code not requiring its own package. + // + // description: + // These are standalone widgets with varying levels of stability. Some are useful, + // some were created for demonstration purposes, and learning tools. The each maintain + // their own .css file (typically dojox/widget/WidgetName/WidgetName.css) +}; + +dojox.wire = { + // summary: + // Declarative data binding and action tags for simplified MVC +}; + +dojox.xml = { + // summary: XML utilities. Currently only includes a DomParser, which returns a psuedo-XML document in JSON-like form. +}; + +dojox.xmpp = { + // summary: TODOC +}; +=====*/ diff --git a/js/dojo-release-1.7.2-src/dojox/resources/explore.php b/js/dojo-release-1.7.2-src/dojox/resources/explore.php new file mode 100644 index 0000000..0644832 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/resources/explore.php @@ -0,0 +1,149 @@ + + + + + + + + + + Dojo Toolkit - DojoX Demos and Tests by Project + + + + + + + +

                                                                  DojoX test files overview

                                                                  + + + + + + + about"; + } + if($project['tests'] || $project['demos']){ + print ""; + + if($project['tests']){ + printLinks($project['tests']); + } + if($project['demos']){ + printLinks($project['demos']); + } + + } + + } + // printLinks("./tree","Dijit Tree Tests"); + + ?> + +
                                                                  TestTundraNihiloSoria
                                                                  Normala11yrtla11y + rtlNormala11yrtla11y + rtlNormala11yrtla11y + rtl
                                                                  dojox.". $project['name'] . " ".$note."
                                                                  + +

                                                                  * note: All themes and modes included for completeness. Some projects don't even use themes. The "basic" link + is the direct link to the file with no enhancements. The test file must include _testCommon from dijit to + include theme / rtl / a11y testing capabilities.

                                                                  + + + $file, + "tests" => $tests, + "demos" => $demos, + "readme" => $README + ); + } + } + return $projects; +} + +function printLinks($path){ + $handle = opendir($path); + $i = 0; + + while(false !== ($file = readdir($handle))){ + if(preg_match("/([a-zA-Z])(.*)\.html/", $file, $matches)){ + $base = $matches[0]; + $link = $path."/".$matches[0]; + print + "" . + + "" . $base . "" . + + // standard / tundra: + "basic" . + "a11y" . + "rtl" . + "both" . + + // nihilo + "nihilo" . + "a11y" . + "rtl" . + "combo" . + + // soria + "soria" . + "a11y" . + "rtl" . + "combo" . + + ""; + } + } +} + +?> diff --git a/js/dojo-release-1.7.2-src/dojox/robot/README b/js/dojo-release-1.7.2-src/dojox/robot/README new file mode 100644 index 0000000..46ad353 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/robot/README @@ -0,0 +1,59 @@ +------------------------------------------------------------------------------- +dojox.robot.recorder +------------------------------------------------------------------------------- +Version 0.1 +Release date: 2008-07-30 +------------------------------------------------------------------------------- +Project state: experimental +------------------------------------------------------------------------------- +Project authors + Mark Hays +------------------------------------------------------------------------------- +Project description + +Writing automated test cases takes time, and DOH is no exception. You have to +look up element ids, invent dojo.queries for elements with no id, +figure out exactly how many pixels to move the mouse . . . the list goes on. + +This recorder module enables DOH test case writers to create complete DOH test +scripts directly from their actions and input on a Web page. Simply drop the +generated code into your test page, set a pass condition, and the test will +repeat your actions. +------------------------------------------------------------------------------- +Dependencies: + +dojo +------------------------------------------------------------------------------- +Documentation + +See installation instructions below to prepare a test page for recording. + +To record a test, click in an area of the document with no dojo.stopEvents +and press CTRL-ALT-ENTER in the main window. You will get a verification alert +when you successfully start the recorder. Then you can interact with the Web +page and the recorder will monitor your actions. It's usually good to record one +test per widget instance per type of interaction (keyboard vs mouse for instance) +you are testing. + +After you finish interacting with the Web page, click out of any dojo.stopEvents +and press CTRL-ALT-ENTER again. You will see a box containing the generated source +code for your recording. Copy this into a dojo.addOnLoad on the same page to register +the test with DOH. Replace the /*Your condition here*/ text with a JS condition that +indicates that the test passed. Again, having multiple small tests will help you +keep the condition small. Add a doh.run() call after you register all of your tests +to make them execute when you load the page. +------------------------------------------------------------------------------- +Installation instructions + +To ready the recorder for a particular page, add this line to your dojo.requires: +dojo.require("dojox.robot.recorder"); + +You can safely remove this line after you are finished recording your tests. +------------------------------------------------------------------------------- +Additional Notes + +Known limitations: +- Content in an iframe might not report events to the recorder. +- keyDown/keyUp events are supported by DOH, but not by the recorder. + If you hold a key down, it will generate lots of keyPress events instead. + Simply change these to one keyDown call yourself. diff --git a/js/dojo-release-1.7.2-src/dojox/robot/recorder.js b/js/dojo-release-1.7.2-src/dojox/robot/recorder.js new file mode 100644 index 0000000..3fb97fb --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/robot/recorder.js @@ -0,0 +1,501 @@ +dojo.provide("dojox.robot.recorder"); +dojo.experimental("dojox.robot.recorder"); +// summary: +// Generates a doh test as you interact with a Web page. +// To record a test, click inside the document body and press CTRL-ALT-ENTER. +// To finish recording a test and to display the autogenerated code, press CTRL-ALT-ENTER again. +// + + +(function(){ + +// CONSTANTS + +// consolidate keypresses into one typeKeys if they occur within 1 second of each other +var KEYPRESS_MAXIMUM_DELAY = 1000; + +// consolidate mouse movements if they occur within .5 seconds of each other +var MOUSEMOVE_MAXIMUM_DELAY = 500; + +// absolute longest wait between commands +// anything longer gets chopped to 10 +var MAXIMUM_DELAY = 10000; + +// stack of commands recorded from dojo.connects +var commands = []; + +// number to write next to test name +// goes up after each recording +var testNumber = 0; + +// time user started test +var startTime = null; + +// time since last user input +// robot commands work on deltas +var prevTime = null; + +var start = function(){ + // summary: + // Starts recording the user's input. + // + alert("Started recording."); + commands = []; + startTime = new Date(); + prevTime = new Date(); +} + +var addCommand = function(name, args){ + // summary: + // Add a command to the stack. + // + // name: + // doh.robot function to call. + // + // args: + // arguments array to pass to the doh.robot + // + + // omit start/stop record + if(startTime == null + || name=="doh.robot.keyPress" + && args[0]==dojo.keys.ENTER + && eval("("+args[2]+")").ctrl + && eval("("+args[2]+")").alt){ return; } + var dt = Math.max(Math.min(Math.round((new Date()).getTime() - prevTime.getTime()),MAXIMUM_DELAY),1); + // add in dt + // is usually args[1] but there are exceptions + if(name == "doh.robot.mouseMove"){ + args[2]=dt; + }else{ + args[1]=dt; + } + commands.push({name:name,args:args}); + prevTime = new Date(); +} + +var _optimize = function(){ + // make the stack more human-readable and remove any odditites + var c = commands; + + // INITIAL OPTIMIZATIONS + // remove starting ENTER press + if(c[0].name == "doh.robot.keyPress" + && (c[0].args[0] == dojo.keys.ENTER || c[0].args[0] == 77)){ + c.splice(0,1); + } + // remove ending CTRL + ALT keypresses in IE + for(var i = c.length-1; (i >= c.length-2) && (i>=0); i-- ){ + if(c[i].name == "doh.robot.keyPress" + && c[i].args[0]==dojo.keys.ALT || c[i].args[0]==dojo.keys.CTRL){ + c.splice(i,1); + } + } + // ITERATIVE OPTIMIZATIONS + for(i = 0; i + + + dojox.robot Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/robot/tests/test_recorder.html b/js/dojo-release-1.7.2-src/dojox/robot/tests/test_recorder.html new file mode 100644 index 0000000..34a1c92 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/robot/tests/test_recorder.html @@ -0,0 +1,103 @@ + + + + Dojox Recorder Test + + + + + + + + + + + + + + + +

                                                                  Recorder will use the DOH robot to record a test by itself.

                                                                  +

                                                                  dijit.form.ComboBox:

                                                                  + +

                                                                  Native element:

                                                                  + + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/Client.js b/js/dojo-release-1.7.2-src/dojox/rpc/Client.js new file mode 100644 index 0000000..8703a13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/Client.js @@ -0,0 +1,28 @@ +define("dojox/rpc/Client", ["dojo", "dojox"], function(dojo, dojox) { + + dojo.getObject("rpc.Client", true, dojox); + + // Provide extra headers for robust client and server communication + + dojo._defaultXhr = dojo.xhr; + dojo.xhr = function(method,args){ + var headers = args.headers = args.headers || {}; + // set the client id, this can be used by servers to maintain state information with the + // a specific client. Many servers rely on sessions for this, but sessions are shared + // between tabs/windows, so this is not appropriate for application state, it + // really only useful for storing user authentication + headers["Client-Id"] = dojox.rpc.Client.clientId; + // set the sequence id. HTTP is non-deterministic, message can arrive at the server + // out of order. In complex Ajax applications, it may be more to ensure that messages + // can be properly sequenced deterministically. This applies a sequency id to each + // XHR request so that the server can order them. + headers["Seq-Id"] = dojox._reqSeqId = (dojox._reqSeqId||0)+1; + return dojo._defaultXhr.apply(dojo,arguments); + } + + // initiate the client id to a good random number + dojox.rpc.Client.clientId = (Math.random() + '').substring(2,14) + (new Date().getTime() + '').substring(8,13); + + return dojox.rpc.Client; + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/JsonRPC.js b/js/dojo-release-1.7.2-src/dojox/rpc/JsonRPC.js new file mode 100644 index 0000000..c45a527 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/JsonRPC.js @@ -0,0 +1,54 @@ +define("dojox/rpc/JsonRPC", ["dojo", "dojox", "dojox/rpc/Service"], function(dojo, dojox) { + + function jsonRpcEnvelope(version){ + return { + serialize: function(smd, method, data, options){ + //not converted to json it self. This will be done, if + //appropriate, at the transport level + + var d = { + id: this._requestId++, + method: method.name, + params: data + }; + if(version){ + d.jsonrpc = version; + } + return { + data: dojo.toJson(d), + handleAs:'json', + contentType: 'application/json', + transport:"POST" + }; + }, + + deserialize: function(obj){ + if ('Error' == obj.name){ + obj = dojo.fromJson(obj.responseText); + } + if(obj.error) { + var e = new Error(obj.error.message || obj.error); + e._rpcErrorObject = obj.error; + return e; + } + return obj.result; + } + }; + } + dojox.rpc.envelopeRegistry.register( + "JSON-RPC-1.0", + function(str){ + return str == "JSON-RPC-1.0"; + }, + dojo.mixin({namedParams:false},jsonRpcEnvelope()) // 1.0 will only work with ordered params + ); + + dojox.rpc.envelopeRegistry.register( + "JSON-RPC-2.0", + function(str){ + return str == "JSON-RPC-2.0"; + }, + jsonRpcEnvelope("2.0") + ); + +}); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/JsonRest.js b/js/dojo-release-1.7.2-src/dojox/rpc/JsonRest.js new file mode 100644 index 0000000..88231ac --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/JsonRest.js @@ -0,0 +1,457 @@ +define("dojox/rpc/JsonRest", ["dojo", "dojox", "dojox/json/ref", "dojox/rpc/Rest"], function(dojo, dojox) { + var dirtyObjects = []; + var Rest = dojox.rpc.Rest; + var jr; + function resolveJson(service, deferred, value, defaultId){ + var timeStamp = deferred.ioArgs && deferred.ioArgs.xhr && deferred.ioArgs.xhr.getResponseHeader("Last-Modified"); + if(timeStamp && Rest._timeStamps){ + Rest._timeStamps[defaultId] = timeStamp; + } + var hrefProperty = service._schema && service._schema.hrefProperty; + if(hrefProperty){ + dojox.json.ref.refAttribute = hrefProperty; + } + value = value && dojox.json.ref.resolveJson(value, { + defaultId: defaultId, + index: Rest._index, + timeStamps: timeStamp && Rest._timeStamps, + time: timeStamp, + idPrefix: service.servicePath.replace(/[^\/]*$/,''), + idAttribute: jr.getIdAttribute(service), + schemas: jr.schemas, + loader: jr._loader, + idAsRef: service.idAsRef, + assignAbsoluteIds: true + }); + dojox.json.ref.refAttribute = "$ref"; + return value; + } + jr = dojox.rpc.JsonRest={ + serviceClass: dojox.rpc.Rest, + conflictDateHeader: "If-Unmodified-Since", + commit: function(kwArgs){ + // summary: + // Saves the dirty data using REST Ajax methods + + kwArgs = kwArgs || {}; + var actions = []; + var alreadyRecorded = {}; + var savingObjects = []; + for(var i = 0; i < dirtyObjects.length; i++){ + var dirty = dirtyObjects[i]; + var object = dirty.object; + var old = dirty.old; + var append = false; + if(!(kwArgs.service && (object || old) && + (object || old).__id.indexOf(kwArgs.service.servicePath)) && dirty.save){ + delete object.__isDirty; + if(object){ + if(old){ + // changed object + var pathParts; + if((pathParts = object.__id.match(/(.*)#.*/))){ // it is a path reference + // this means it is a sub object, we must go to the parent object and save it + object = Rest._index[pathParts[1]]; + } + if(!(object.__id in alreadyRecorded)){// if it has already been saved, we don't want to repeat it + // record that we are saving + alreadyRecorded[object.__id] = object; + if(kwArgs.incrementalUpdates + && !pathParts){ // I haven't figured out how we would do incremental updates on sub-objects yet + // make an incremental update using a POST + var incremental = (typeof kwArgs.incrementalUpdates == 'function' ? + kwArgs.incrementalUpdates : function(){ + incremental = {}; + for(var j in object){ + if(object.hasOwnProperty(j)){ + if(object[j] !== old[j]){ + incremental[j] = object[j]; + } + }else if(old.hasOwnProperty(j)){ + // we can't use incremental updates to remove properties + return null; + } + } + return incremental; + })(object, old); + } + + if(incremental){ + actions.push({method:"post",target:object, content: incremental}); + } + else{ + actions.push({method:"put",target:object,content:object}); + } + } + }else{ + // new object + var service = jr.getServiceAndId(object.__id).service; + var idAttribute = jr.getIdAttribute(service); + if((idAttribute in object) && !kwArgs.alwaysPostNewItems){ + // if the id attribute is specified, then we should know the location + actions.push({method:"put",target:object, content:object}); + }else{ + actions.push({method:"post",target:{__id:service.servicePath}, + content:object}); + } + } + }else if(old){ + // deleted object + actions.push({method:"delete",target:old}); + }//else{ this would happen if an object is created and then deleted, don't do anything + savingObjects.push(dirty); + dirtyObjects.splice(i--,1); + } + } + dojo.connect(kwArgs,"onError",function(){ + if(kwArgs.revertOnError !== false){ + var postCommitDirtyObjects = dirtyObjects; + dirtyObjects = savingObjects; + var numDirty = 0; // make sure this does't do anything if it is called again + jr.revert(); // revert if there was an error + dirtyObjects = postCommitDirtyObjects; + } + else{ + dirtyObjects = dirtyObject.concat(savingObjects); + } + }); + jr.sendToServer(actions, kwArgs); + return actions; + }, + sendToServer: function(actions, kwArgs){ + var xhrSendId; + var plainXhr = dojo.xhr; + var left = actions.length;// this is how many changes are remaining to be received from the server + var i, contentLocation; + var timeStamp; + var conflictDateHeader = this.conflictDateHeader; + // add headers for extra information + dojo.xhr = function(method,args){ + // keep the transaction open as we send requests + args.headers = args.headers || {}; + // the last one should commit the transaction + args.headers['Transaction'] = actions.length - 1 == i ? "commit" : "open"; + if(conflictDateHeader && timeStamp){ + args.headers[conflictDateHeader] = timeStamp; + } + if(contentLocation){ + args.headers['Content-ID'] = '<' + contentLocation + '>'; + } + return plainXhr.apply(dojo,arguments); + }; + for(i =0; i < actions.length;i++){ // iterate through the actions to execute + var action = actions[i]; + dojox.rpc.JsonRest._contentId = action.content && action.content.__id; // this is used by OfflineRest + var isPost = action.method == 'post'; + timeStamp = action.method == 'put' && Rest._timeStamps[action.content.__id]; + if(timeStamp){ + // update it now + Rest._timeStamps[action.content.__id] = (new Date()) + ''; + } + // send the content location to the server + contentLocation = isPost && dojox.rpc.JsonRest._contentId; + var serviceAndId = jr.getServiceAndId(action.target.__id); + var service = serviceAndId.service; + var dfd = action.deferred = service[action.method]( + serviceAndId.id.replace(/#/,''), // if we are using references, we need eliminate # + dojox.json.ref.toJson(action.content, false, service.servicePath, true) + ); + (function(object, dfd, service){ + dfd.addCallback(function(value){ + try{ + // Implements id assignment per the HTTP specification + var newId = dfd.ioArgs.xhr && dfd.ioArgs.xhr.getResponseHeader("Location"); + //TODO: match URLs if the servicePath is relative... + if(newId){ + // if the path starts in the middle of an absolute URL for Location, we will use the just the path part + var startIndex = newId.match(/(^\w+:\/\/)/) && newId.indexOf(service.servicePath); + newId = startIndex > 0 ? newId.substring(startIndex) : (service.servicePath + newId). + // now do simple relative URL resolution in case of a relative URL. + replace(/^(.*\/)?(\w+:\/\/)|[^\/\.]+\/\.\.\/|^.*\/(\/)/,'$2$3'); + object.__id = newId; + Rest._index[newId] = object; + } + value = resolveJson(service, dfd, value, object && object.__id); + }catch(e){} + if(!(--left)){ + if(kwArgs.onComplete){ + kwArgs.onComplete.call(kwArgs.scope, actions); + } + } + return value; + }); + })(action.content, dfd, service); + + dfd.addErrback(function(value){ + + // on an error we want to revert, first we want to separate any changes that were made since the commit + left = -1; // first make sure that success isn't called + kwArgs.onError.call(kwArgs.scope, value); + }); + } + // revert back to the normal XHR handler + dojo.xhr = plainXhr; + + }, + getDirtyObjects: function(){ + return dirtyObjects; + }, + revert: function(service){ + // summary: + // Reverts all the changes made to JSON/REST data + for(var i = dirtyObjects.length; i > 0;){ + i--; + var dirty = dirtyObjects[i]; + var object = dirty.object; + var old = dirty.old; + var store = dojox.data._getStoreForItem(object || old); + + if(!(service && (object || old) && + (object || old).__id.indexOf(service.servicePath))){ + // if we are in the specified store or if this is a global revert + if(object && old){ + // changed + for(var j in old){ + if(old.hasOwnProperty(j) && object[j] !== old[j]){ + if(store){ + store.onSet(object, j, object[j], old[j]); + } + object[j] = old[j]; + } + } + for(j in object){ + if(!old.hasOwnProperty(j)){ + if(store){ + store.onSet(object, j, object[j]); + } + delete object[j]; + } + } + }else if(!old){ + // was an addition, remove it + if(store){ + store.onDelete(object); + } + }else{ + // was a deletion, we will add it back + if(store){ + store.onNew(old); + } + } + delete (object || old).__isDirty; + dirtyObjects.splice(i, 1); + } + } + }, + changing: function(object,_deleting){ + // summary: + // adds an object to the list of dirty objects. This object + // contains a reference to the object itself as well as a + // cloned and trimmed version of old object for use with + // revert. + if(!object.__id){ + return; + } + object.__isDirty = true; + //if an object is already in the list of dirty objects, don't add it again + //or it will overwrite the premodification data set. + for(var i=0; i= serviceName.length)){ + serviceName = service; + } + } + if (serviceName){ + return {service: jr.services[serviceName], id:absoluteId.substring(serviceName.length)}; + } + var parts = absoluteId.match(/^(.*\/)([^\/]*)$/); + return {service: new jr.serviceClass(parts[1], true), id:parts[2]}; + }, + services:{}, + schemas:{}, + registerService: function(/*Function*/ service, /*String*/ servicePath, /*Object?*/ schema){ + // summary: + // Registers a service for as a JsonRest service, mapping it to a path and schema + // service: + // This is the service to register + // servicePath: + // This is the path that is used for all the ids for the objects returned by service + // schema: + // This is a JSON Schema object to associate with objects returned by this service + servicePath = service.servicePath = servicePath || service.servicePath; + service._schema = jr.schemas[servicePath] = schema || service._schema || {}; + jr.services[servicePath] = service; + }, + byId: function(service, id){ + // if caching is allowed, we look in the cache for the result + var deferred, result = Rest._index[(service.servicePath || '') + id]; + if(result && !result._loadObject){// cache hit + deferred = new dojo.Deferred(); + deferred.callback(result); + return deferred; + } + return this.query(service, id); + }, + query: function(service, id, args){ + var deferred = service(id, args); + + deferred.addCallback(function(result){ + if(result.nodeType && result.cloneNode){ + // return immediately if it is an XML document + return result; + } + return resolveJson(service, deferred, result, typeof id != 'string' || (args && (args.start || args.count)) ? undefined: id); + }); + return deferred; + }, + _loader: function(callback){ + // load a lazy object + var serviceAndId = jr.getServiceAndId(this.__id); + var self = this; + jr.query(serviceAndId.service, serviceAndId.id).addBoth(function(result){ + // if they are the same this means an object was loaded, otherwise it + // might be a primitive that was loaded or maybe an error + if(result == self){ + // we can clear the flag, so it is a loaded object + delete result.$ref; + delete result._loadObject; + }else{ + // it is probably a primitive value, we can't change the identity of an object to + // the loaded value, so we will keep it lazy, but define the lazy loader to always + // return the loaded value + self._loadObject = function(callback){ + callback(result); + }; + } + callback(result); + }); + }, + isDirty: function(item, store){ + // summary + // returns true if the item is marked as dirty or true if there are any dirty items + if(!item){ + if(store){ + return dojo.some(dirtyObjects, function(dirty){ + return dojox.data._getStoreForItem(dirty.object || dirty.old) == store; + }); + } + return !!dirtyObjects.length; + } + return item.__isDirty; + } + + }; + + return dojox.rpc.JsonRest; +}); + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/OfflineRest.js b/js/dojo-release-1.7.2-src/dojox/rpc/OfflineRest.js new file mode 100644 index 0000000..c7ebd0f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/OfflineRest.js @@ -0,0 +1,256 @@ +define("dojox/rpc/OfflineRest", ["dojo", "dojox", "dojox/data/ClientFilter", "dojox/rpc/Rest", "dojox/storage"], function(dojo, dojox) { +// summary: +// Makes the REST service be able to store changes in local +// storage so it can be used offline automatically. + var Rest = dojox.rpc.Rest; + var namespace = "dojox_rpc_OfflineRest"; + var loaded; + var index = Rest._index; + dojox.storage.manager.addOnLoad(function(){ + // now that we are loaded we need to save everything in the index + loaded = dojox.storage.manager.available; + for(var i in index){ + saveObject(index[i], i); + } + }); + var dontSave; + function getStorageKey(key){ + // returns a key that is safe to use in storage + return key.replace(/[^0-9A-Za-z_]/g,'_'); + } + function saveObject(object,id){ + // save the object into local storage + + if(loaded && !dontSave && (id || (object && object.__id))){ + dojox.storage.put( + getStorageKey(id||object.__id), + typeof object=='object'?dojox.json.ref.toJson(object):object, // makeshift technique to determine if the object is json object or not + function(){}, + namespace); + } + } + function isNetworkError(error){ + // determine if the error was a network error and should be saved offline + // or if it was a server error and not a result of offline-ness + return error instanceof Error && (error.status == 503 || error.status > 12000 || !error.status); // TODO: Make the right error determination + } + function sendChanges(){ + // periodical try to save our dirty data + if(loaded){ + var dirty = dojox.storage.get("dirty",namespace); + if(dirty){ + for (var dirtyId in dirty){ + commitDirty(dirtyId,dirty); + } + } + } + } + var OfflineRest; + function sync(){ + OfflineRest.sendChanges(); + OfflineRest.downloadChanges(); + } + var syncId = setInterval(sync,15000); + dojo.connect(document, "ononline", sync); + OfflineRest = dojox.rpc.OfflineRest = { + turnOffAutoSync: function(){ + clearInterval(syncId); + }, + sync: sync, + sendChanges: sendChanges, + downloadChanges: function(){ + + }, + addStore: function(/*data-store*/store,/*query?*/baseQuery){ + // summary: + // Adds a store to the monitored store for local storage + // store: + // Store to add + // baseQuery: + // This is the base query to should be used to load the items for + // the store. Generally you want to load all the items that should be + // available when offline. + OfflineRest.stores.push(store); + store.fetch({queryOptions:{cache:true},query:baseQuery,onComplete:function(results,args){ + store._localBaseResults = results; + store._localBaseFetch = args; + }}); + + } + }; + OfflineRest.stores = []; + var defaultGet = Rest._get; + Rest._get = function(service, id){ + // We specifically do NOT want the paging information to be used by the default handler, + // this is because online apps want to minimize the data transfer, + // but an offline app wants the opposite, as much data as possible transferred to + // the client side + try{ + // if we are reloading the application with local dirty data in an online environment + // we want to make sure we save the changes first, so that we get up-to-date + // information from the server + sendChanges(); + if(window.navigator && navigator.onLine===false){ + // we force an error if we are offline in firefox, otherwise it will silently load it from the cache + throw new Error(); + } + var dfd = defaultGet(service, id); + }catch(e){ + dfd = new dojo.Deferred(); + dfd.errback(e); + } + var sync = dojox.rpc._sync; + dfd.addCallback(function(result){ + saveObject(result, service._getRequest(id).url); + return result; + }); + dfd.addErrback(function(error){ + if(loaded){ + // if the storage is loaded, we can go ahead and get the object out of storage + if(isNetworkError(error)){ + var loadedObjects = {}; + // network error, load from local storage + var byId = function(id,backup){ + if(loadedObjects[id]){ + return backup; + } + var result = dojo.fromJson(dojox.storage.get(getStorageKey(id),namespace)) || backup; + + loadedObjects[id] = result; + for(var i in result){ + var val = result[i]; // resolve references if we can + id = val && val.$ref; + if (id){ + if(id.substring && id.substring(0,4) == "cid:"){ + // strip the cid scheme, we should be able to resolve it locally + id = id.substring(4); + } + result[i] = byId(id,val); + } + } + if (result instanceof Array){ + //remove any deleted items + for (i = 0;i= 0 || args.count >= 0)){ + request.headers = request.headers || {}; + request.headers.Range = "items=" + (args.start || '0') + '-' + + (("count" in args && args.count != Infinity) ? + (args.count + (args.start || 0) - 1) : ''); + } + return request; + } + ); + } + } + ); + } + var drr; + + function index(deferred, service, range, id){ + deferred.addCallback(function(result){ + if(deferred.ioArgs.xhr && range){ + // try to record the total number of items from the range header + range = deferred.ioArgs.xhr.getResponseHeader("Content-Range"); + deferred.fullLength = range && (range=range.match(/\/(.*)/)) && parseInt(range[1]); + } + return result; + }); + return deferred; + } + drr = dojox.rpc.Rest = function(/*String*/path, /*Boolean?*/isJson, /*Object?*/schema, /*Function?*/getRequest){ + // summary: + // Creates a REST service using the provided path. + var service; + // it should be in the form /Table/ + service = function(id, args){ + return drr._get(service, id, args); + }; + service.isJson = isJson; + service._schema = schema; + // cache: + // This is an object that provides indexing service + // This can be overriden to take advantage of more complex referencing/indexing + // schemes + service.cache = { + serialize: isJson ? ((dojox.json && dojox.json.ref) || dojo).toJson : function(result){ + return result; + } + }; + // the default XHR args creator: + service._getRequest = getRequest || function(id, args){ + if(dojo.isObject(id)){ + id = dojo.objectToQuery(id); + id = id ? "?" + id: ""; + } + if(args && args.sort && !args.queryStr){ + id += (id ? "&" : "?") + "sort(" + for(var i = 0; i 0 ? "," : "") + (sort.descending ? '-' : '+') + encodeURIComponent(sort.attribute); + } + id += ")"; + } + var request = { + url: path + (id == null ? "" : id), + handleAs: isJson ? 'json' : 'text', + contentType: isJson ? 'application/json' : 'text/plain', + sync: dojox.rpc._sync, + headers: { + Accept: isJson ? 'application/json,application/javascript' : '*/*' + } + }; + if(args && (args.start >= 0 || args.count >= 0)){ + request.headers.Range = "items=" + (args.start || '0') + '-' + + (("count" in args && args.count != Infinity) ? + (args.count + (args.start || 0) - 1) : ''); + } + dojox.rpc._sync = false; + return request; + }; + // each calls the event handler + function makeRest(name){ + service[name] = function(id,content){ + return drr._change(name,service,id,content); // the last parameter is to let the OfflineRest know where to store the item + }; + } + makeRest('put'); + makeRest('post'); + makeRest('delete'); + // record the REST services for later lookup + service.servicePath = path; + return service; + }; + + drr._index={};// the map of all indexed objects that have gone through REST processing + drr._timeStamps={}; + // these do the actual requests + drr._change = function(method,service,id,content){ + // this is called to actually do the put, post, and delete + var request = service._getRequest(id); + request[method+"Data"] = content; + return index(dojo.xhr(method.toUpperCase(),request,true),service); + }; + + drr._get= function(service,id, args){ + args = args || {}; + // this is called to actually do the get + return index(dojo.xhrGet(service._getRequest(id, args)), service, (args.start >= 0 || args.count >= 0), id); + }; + + return dojox.rpc.Rest; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/dojo-api.smd b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/dojo-api.smd new file mode 100644 index 0000000..1b2db85 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/dojo-api.smd @@ -0,0 +1,30 @@ +{ + envelope: "URL", + transport: "JSONP", + callbackParamName: "callback", + services: { + get: { + target: "http://api.dojotoolkit.org/jsdoc/jsonp", + parameters: [ + { name: "name", type: "string", optional: false }, + { name: "exact", type: "boolean", optional: true }, + { name: "recursion", type: "boolean", optional: true }, + { name: "resource", type: "string", optional: true }, + { name: "project", type: "string", optional: true }, + { name: "version", type: "string", optional: true }, + { name: "attributes", type: "array", optional: true } + ] + }, + batch: { + target: "http://api.dojotoolkit.org/jsdoc/jsonp/batch", + parameters: [ + { name: "names", type: "array", optional: false }, + { name: "exact", type: "boolean", optional: true }, + { name: "recursion", type: "boolean", optional: true }, + { name: "project", type: "string", optional: true }, + { name: "version", type: "string", optional: true }, + { name: "attributes", type: "array", optional: false } + ] + } + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/friendfeed.smd b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/friendfeed.smd new file mode 100644 index 0000000..a18aa8e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/friendfeed.smd @@ -0,0 +1,49 @@ +{ + "SMDVersion": "2.0", + "id": "http://friendfeed.com/api", + "description": "Friendfeed's API - documentation at http://code.google.com/p/friendfeed-api/wiki/ApiDocumentation", + + transport: "JSONP", + envelope: "URL", + + additionalParameters: true, + parameters: [ + { name: "format", optional: false, "default": "json" }, + { name: "service", optional: true }, + { name: "start", optional: true, type: "integer" }, + { name: "num", optional: true, type: "integer" } + ], + + services: { + users: { + target: "http://friendfeed.com/api/feed/user", + parameters: [ + { name: "nickname", type: "string", optional: false, "default": "" } + ] + }, + entry: { + target: "http://friendfeed.com/api/feed/entry", + parameters: [ + { name: "entry_id", type: "string", optional: false, "default": "" } + ] + }, + search: { + target: "http://friendfeed.com/api/feed/search", + parameters: [ + { name: "q", type: "string", optional: false, "default": "" } + ] + }, + url: { + target: "http://friendfeed.com/api/feed/url", + parameters: [ + { name: "url", type: "string", optional: false, "default": "" } + ] + }, + domain: { + target: "http://friendfeed.com/api/feed/domain", + parameters: [ + { name: "domain", type: "string", optional: false, "default":"" } + ] + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/geonames.smd b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/geonames.smd new file mode 100644 index 0000000..04f04db --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/geonames.smd @@ -0,0 +1,263 @@ +{ + + // JSON REST services provided by geonames.org + // adapted from: http://www.geonames.org/export/JSON-webservices.html + // http://creativecommons.org/licenses/by/3.0/ + // INCOMPLETE IMPLEMENTATION + + "SMDVersion":"2.0", + "id":"/geonames", + "transport":"JSONP", + "envelope":"URL", + "target": "http://ws.geonames.org/", + + "parameters" : [ + {name:"type", optional: false, "default":"JSON"} + ], + + "services":{ + getCountryInfo:{ + // Result : returns info about a country such as name, population, etc. + // If country parameter is not specified, that information is returned for + // every country + "target": "countryInfoJSON", + "parameters": [ + { name: "country", type:"STRING", optional: true }, + { name: "lang", type:"STRING"}, // default: "en" + { name: "maxRows", type:"INTEGER", optional: true } // default: 10 + ] + }, + + getCities:{ + // Result : returns a list of cities and placenames in the bounding box, + // ordered by relevancy (capital/population). Placenames close together + // are filterered out and only the larger name is included in the resulting list. + "target": "citiesJSON", + "parameters": [ + { name: "north", type:"FLOAT"}, + { name: "south", type:"FLOAT"}, + { name: "east", type:"FLOAT"}, + { name: "west", type:"FLOAT"}, + { name: "lang", type:"STRING"}, // default: "en" + { name: "maxRows", type:"INTEGER", optional: true } // deault: 10 + ] + }, + + "getQuakes":{ + // Result : returns a list of earthquakes, ordered by magnitude + "target" : "earthquakesJSON", + "parameters" : [ + // bounding box coords: + { name: "north", type:"FLOAT" }, + { name: "south", type:"FLOAT" }, + { name: "east", type:"FLOAT" }, + { name: "west", type:"FLOAT" }, + { name: "date", type:"STRING",optional: true }, // yyyy-MM-dd + { name: "minMagniture", type:"INTERGER",optional: true }, + { name: "maxRows", type:"INTEGER", optional: true } // deault: 10 + ] + }, + + "getWeather":{ + // Weather data is provided in the METAR (METeorological Aerodrome Report) format. + // Result : returns a list of weather stations with the most recent weather observation + "target" : "weatherJSON", + "parameters" : [ + { name: "north", type:"FLOAT" }, + { name: "south", type:"FLOAT" }, + { name: "east", type:"FLOAT" }, + { name: "west", type:"FLOAT" }, + { name: "maxRows", type:"INTEGER",optional:true } // deault: 10 + ] + }, + + "getWeatherByICAO":{ + // Result : returns the weather station and the most recent weather observation for the ICAO code + "target": "weatherIcaoJSON", + "parameters": [ + { name:"ICAO", type:"STRING" } + ] + }, + + "getWeatherByCoords":{ + // Result : returns a weather station with the most recent weather observation + "target": "findNearByWeatherJSON", + "parameters": [ + { name:"lat", type:"FLOAT" }, + { name:"lng", type:"FLOAT" } + ] + }, + + "getChildren":{ + // Returns the children for a given geonameId. The children are the + // administrative divisions within an other administrative division. + // Like the counties (ADM2) in a state (ADM1) or also the countries + // in a continent. + "target": "childrenJSON", + "parameters": [ + { name:"geonameId", type:"INTEGER" } + ] + }, + + "getHierarchy":{ + // Result : returns a list of GeoName records, ordered by hierarchy + // level. The top hierarchy (continent) is the first element in the list + "target": "hierarchyJSON", + "parameters": [ + { name:"geonameId", type:"INTEGER" } + ] + }, + + "getNeighbours":{ + // The neighbourhood for US cities. Data provided by Zillow under cc-by-sa license. + "target":"neighboursJSON", + "parameters": [ + { name:"geonameId", type:"INTEGER" } + //{ name:"lat", type:"FLOAT" }, + //{ name:"long", type:"FLOAT" } + ] + }, + + "getNeighbourhood":{ + // returns the neighbourhood for the given latitude/longitude + // Example http://ws.geonames.org/neighbourhood?lat=40.78343&lng=-73.96625 + "target":"neighbourhoodJSON", + "parameters":[ + { name:"lat", type:"FLOAT" }, + { name:"lng", type:"FLOAT" }, + { name:"radius", type:"FLOAT" } + ] + }, + + "getSiblings":{ + // Result : returns a list of GeoNames records that have the same + // administrative level and the same father + "target":"siblingsJSON", + "parameters": [ + { name:"geonameId", type:"INTEGER" } + ] + }, + + "getCountryCode":{ + // returns the iso country code for the given latitude/longitude + // With the parameter type=xml this service returns an xml document + // with iso country code and country name. The optional parameter + // lang can be used to specify the language the country name should + // be in. JSON output is produced with type=JSON + "target":"countryCode", + "parameters": [ + { name:"lat", type:"FLOAT" }, + { name:"lng", type:"FLOAT" }, + { name:"lang", type:"STRING",optional:true }, + { name:"radius", type:"FLOAT" } + ] + }, + + "getCountrySubdivision":{ + // returns the country and the administrative subdivison (state, province,...) for the given latitude/longitude + // Example http://ws.geonames.org/countrySubdivisionJSON?lat=47.03&lng=10.2 + "target":"countrySubdivisionJSON", + "parameters":[ + { name:"lat", type:"FLOAT" }, + { name:"long", type:"FLOAT" }, + { name:"radius", type:"FLOAT" } + ] + }, + + "getWikipediaBoundingBox":{ + // returns the wikipedia entries within the bounding box as xml document + // Example http://ws.geonames.org/wikipediaBoundingBoxJSON?north=44.1&south=-9.9&east=-22.4&west=55.2 + "target":"wikipediaBoundingBoxJSON", + "parameters":[ + { name: "north", type:"FLOAT" }, + { name: "south", type:"FLOAT" }, + { name: "east", type:"FLOAT" }, + { name: "west", type:"FLOAT" }, + { name: "lang", type:"STRING",optional:true }, // default: "en" + { name: "maxRows", type:"INTEGER",optional:true } // default: 10 + ] + }, + + "searchWikipedia":{ + // returns the wikipedia entries found for the searchterm as xml document + // Example http://ws.geonames.org/wikipediaSearchJSON?q=london&maxRows=10 + "target":"wikipediaSearchJSON", + "parameters":[ + { name: "q", type:"STRING" }, // place name? + { name: "title", type:"STRING" }, // optional + { name: "lang", type:"FLOAT",optional:true }, // de or en + { name: "maxRows", type:"INTEGER",optional:true } // default: 10 + ] + }, + + "getTimezone":{ + // the timezone at the lat/lng with gmt offset (1. January) and dst offset (1. July) + "target":"timezoneJSON", + "parameters":[ + { name:"lat", type:"FLOAT" }, + { name:"lng", type:"FLOAT" } + ] + }, + + "search":{ + // returns the names found for the searchterm as xml or json document, + // the search is using an AND operator + "target":"searchJSON", + "parameters":[ + // exhaustive list. see: http://www.geonames.org/export/geonames-search.html + { name:"q", type:"STRING" }, + { name:"name", type:"STRING" }, + { name:"name_equals", type:"STRING" }, + // optional: + { name:"maxRows", type:"INTEGER",optional:true }, // def: 100, max:1000 + { name:"startRow", type:"INTEGER",optional:true }, // def: 0 + { name:"country", type:"STRING",optional:true }, // iso-3166, def: all + /* name:"adminCode..." */ + { name:"featureClass", type:"STRING",optional:true}, // ? multi, enum(a,h,l,p,r,s,t,u,v) + { name:"featureCode", type:"STRING",optional:true}, + { name:"lang", type:"STRING",optional:true}, // iso-636 + { name:"type", type:"STRING",optional:true}, // xml | json | rdf, def: xml + { name:"style", type:"STRING",optional:true }, // SHORT,MEDIUM,LONG,FULL def: MEDIUM + { name:"isNamedRequired", type:"BOOLEAN", optional:true } + ] + }, + + "postalCodeLookup":{ + // returns a list of places for the given postalcode in JSON format + // Example http://ws.geonames.org/postalCodeLookupJSON?postalcode=6600&country=AT + "target":"postalCodeLookupJSON", + "parameters":[ + { name:"postalcode", type:"STRING" }, + { name:"country", type:"STRING",optional:true}, + { name:"maxRows", type:"INTEGER", optional:true }, // def: 20 + { name:"charset", type:"STRING",optional:true } // def: utf-8 + ] + }, + + "postalCodeSearch":{ + "target":"postalCodeSearchJSON", + "parameters":[ + { name:"postalcode", type:"STRING",optional:true}, // one or the other + { name:"placename", type:"STRING",optional:true }, // one or the other + { name:"country", type:"STRING",optional:true}, + { name:"style", type:"STRING",optional:true}, // def: MEDIUM + { name:"maxRows", type:"INTEGER",optional:true}, // def: 20 + { name:"charset", type:"STRING",optional:true} // def: utf-8 + ] + } + + // TODO: implement: + // findNearby, + // findNearbyPlaceName + // findNearbyPostalCodes, + // findNearbyStreets, + // findNearByWeather + // findNearByWikipedia + // findNeareastAddress + // findNearestInterestion + // get + // gtop30 + // srtm3 + + } // end services +} diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/google.smd b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/google.smd new file mode 100755 index 0000000..82af928 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/google.smd @@ -0,0 +1,129 @@ +{ + // Google Ajax API SMD as defined by: + // http://code.google.com/apis/ajaxsearch/documentation/reference.html + // PLEASE Read the Google Terms of Service: + // http://code.google.com/apis/ajaxsearch/terms.html + + "SMDVersion": "2.0", + "id": "http://ajax.googleapis.com/ajax/services/search/", + "description": "Google Ajax API", + + "transport": "JSONP", + "envelope": "URL", + "additionalParameters": true, + + "parameters": [ + // the most important param, the search query: + { "name": "q", optional: false, "default":"" }, + + // Google doesn't require, but appreciates, you using an API key + // see: http://code.google.com/apis/ajaxsearch/signup.html + // { "name": "key", optional: true, "default": "[enter your key]" }, + + // result size: large | small (8 or 4 per page) + { "name": "rsz", optional:true, "default": "small" }, + + // language selection: + { "name": "hl", optional:true, "default": "en" }, + + // starting offset + { "name": "start", optional:true, "default": 0 }, + + { "name": "alt", optional:false, "default": "json" }, + + // API version: only 1.0 supported + { "name": "v", optional:false, "default": "1.0" } + ], + + "services": { + + "webSearch": { + "target": "http://ajax.googleapis.com/ajax/services/search/web", + "parameters": [ + { "name": "cx", "type":"string", "optional":true }, // unique id + { "name": "cref", "type":"string", "optional":true }, // linked custom search engine + { "name": "safe", "type":"string", "optional":true }, // active | moderate | off + // lr: see: http://www.google.com/coop/docs/cse/resultsxml.html#languageCollections + { "name": "lr", "type":"string", "optional":true } // restrict to lang + ] + }, + + "localSearch": { + "target": "http://ajax.googleapis.com/ajax/services/search/local", + "parameters": [ + // comma separated lat,long value to use for center + { "name": "sll", "type": "string", "optional": true }, + { "name": "sspn", "type":"string", "optional": true } // bounding box? + ] + }, + + "videoSearch": { + "target": "http://ajax.googleapis.com/ajax/services/search/video", + "parameters": [ + // ordering, set "d" to order by date, "default": by relevance + { "name": "scoring", "type": "string", "optional": true } + ] + }, + + "blogSearch": { + "target": "http://ajax.googleapis.com/ajax/services/search/blogs", + "parameters": [ + // see videoSearch params + { "name": "scoring", "type": "string", "optional": true } + ] + }, + + "newsSearch": { + "target": "http://ajax.googleapis.com/ajax/services/search/news", + "parameters": [ + { "name": "scoring", "type": "string", "optional": true }, + // geo: scope search to location. supply city, state, country, or zipcode + // using geo makes "q" param optional + { "name": "geo", "type":"string", optional:true } + ] + }, + + "bookSearch": { + "target": "http://ajax.googleapis.com/ajax/services/search/books", + "parameters": [ + // set to "1" to only include full books + { "name":"as_brr", "optional": true, "type":"number" }, + // restrict search to user-defined library + { "name":"as_list", "optional": true, "type":"string" } + ] + }, + + "imageSearch": { + "target": "http://ajax.googleapis.com/ajax/services/search/images", + "parameters": [ + // safe: active | moderate | off + { "name": "safe", "type":"string", "optional":true }, + // limit image size: one of: icon, small|medium|large|xlarge, xxlarge, huge + { "name": "imgsz", "type":"string", "optional": true }, + // limit image color: one of: mono|gray|color + { "name": "imgc", "type":"string", "optional": true }, + // use "face" to limit to mugshots + { "name": "imgtype", "type":"string", "optional": true }, + // limit to file "type": jpg|png|gif|bmp + { "name": "as_filetype", "type": "string", "optional": true }, + // limit results to domain: + { "name": "as_sitesearch", "type": "string", "optional": true } + ] + }, + + "getFeed": { + "target": "http://ajax.googleapis.com/ajax/services/feed/load", + // pass a feed URL in the q parameter + "parameters": [] + }, + + "translate" : { + "target" : "http://ajax.googleapis.com/ajax/services/language/translate", + "parameters": [ + // A String like "en|es" (for english -> spanish) + { "name":"langpair", "type":"string", optional:false } + ] + } + + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/twitter.smd b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/twitter.smd new file mode 100644 index 0000000..6c19b3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/twitter.smd @@ -0,0 +1,35 @@ +{ + + "SMDVersion": "2.0", + "id": "http://apiwiki.twitter.com/w/page/22554756/Twitter-Search-API-Method:-search", + "description": "Twitter Search API", + + "transport": "JSONP", + "envelope": "URL", + "additionalParameters": true, + + "parameters": [ + // the most important param, the search query: + { "name": "q", optional: false, "default":"" }, + + + // result size: large | small (8 or 4 per page) + { "name": "rpp", optional:true, "default": 10 }, + + // language selection: + { "name": "lang", optional:true, "default": "en" }, + + // starting page + { "name": "page", optional:true, "default": 0 } + + ], + + "services": { + + "search": { + "target": "http://search.twitter.com/search.json", + "parameters": [ + ] + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/wikipedia.smd b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/wikipedia.smd new file mode 100644 index 0000000..d91b2c3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/SMDLibrary/wikipedia.smd @@ -0,0 +1,49 @@ +{ + "SMDVersion": "2.0", + "id": "http://en.wikipedia.org/w/api.php", + "description": "Wikipedia API", + + transport: "JSONP", + envelope: "URL", + additionalParameters: true, + target: "http://en.wikipedia.org/w/api.php", + parameters: [ + { name: "format", optional: false, "default": "json" } + ], + + services: { + + /* + * This is a very very basic spec that just gives us a free-form API + * endpoint to talk to. See http://en.wikipedia.org/w/api.php for + * details on what parameters to supply and what sort of data you + * should expect to see. Note that returned JSON is often somewhat + * ... interesting ...: + * + * { + * "parse": { + * "text": { + * "*": " tag) + getTime: { + target: "http://developer.yahooapis.com/TimeService/V1/getTime", + parameters: [ + { name: "format", type: "string", optional: true, "default": "unix" } // can be "unix" for unix timestamp, "ms" for milliseconds + ] + }, + */ + + // + // VIDEO SEARCH + // + + // http://developer.yahoo.com/search/video/V1/videoSearch.html + videoSearch: { + target: "http://search.yahooapis.com/VideoSearchService/V1/videoSearch", + parameters: [ + { name: "query", type: "string", optional: false, "default": "" }, + { name: "type", type: "string", optional: true, "default": "any" }, // can be "all", "any", "phrase" + { name: "results", type: "integer", optional: true, "default": 10 }, // max 50 + { name: "start", type: "integer", optional: true, "default": 1 }, + { name: "format", type: "string", optional: true, "default": "any" }, // can be "any", "avi", "flash", "mpeg", "msmedia", "quicktime", "realmedia" + { name: "adult_ok", type: "boolean", optional: true, "default": null }, + { name: "site", type: "string", optional: true, "default": null } + ] + }, + + // + // WEB SEARCH + // + + // http://developer.yahoo.com/search/web/V1/webSearch.html + webSearch: { + target: "http://search.yahooapis.com/WebSearchService/V1/webSearch", + parameters: [ + { name: "query", type: "string", optional: false, "default": "" }, // must be less than 1kb + { name: "region", type: "string", optional: true, "default": "us" }, + { name: "type", type: "string", optional: true, "default": "any" }, // can be "all", "any", "phrase" + { name: "results", type: "integer", optional: true, "default": 10 }, // max 100 + { name: "start", type: "integer", optional: true, "default": 1 }, + { name: "format", type: "string", optional: true, "default": "any" }, // can be "any", "html", "msword", "pdf", "ppt", "rss", "txt", "xls" + { name: "adult_ok", type: "boolean", optional: true, "default": null }, + { name: "similar_ok", type: "boolean", optional: true, "default": null }, + { name: "language", type: "string", optional: true, "default": null }, + { name: "country", type: "string", optional: true, "default": null }, + { name: "site", type: "string", optional: true, "default": null }, + { name: "subscription", type: "string", optional: true, "default": null }, + { name: "license", type: "string", optional: true, "default": "any" } // can be "any", "cc_any", "cc_commercial", "cc_modifiable" + ] + }, + + // http://developer.yahoo.com/search/web/V1/spellingSuggestion.html + spellingSuggestion: { + target: "http://search.yahooapis.com/WebSearchService/V1/spellingSuggestion", + parameters: [ + { name: "query", type: "string", optional: false, "default": "" } + ] + }, + + // http://developer.yahoo.com/search/web/V1/relatedSuggestion.html + relatedSuggestion: { + target: "http://search.yahooapis.com/WebSearchService/V1/relatedSuggestion", + parameters: [ + { name: "query", type: "string", optional: false, "default": "" }, + { name: "results", type: "integer", optional: true, "default": 10 } // max 50 + ] + } + } +} diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/Service.js b/js/dojo-release-1.7.2-src/dojox/rpc/Service.js new file mode 100644 index 0000000..79564b5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/Service.js @@ -0,0 +1,322 @@ +define("dojox/rpc/Service", ["dojo", "dojox", "dojo/AdapterRegistry", "dojo/_base/url"], function(dojo, dojox) { + +dojo.declare("dojox.rpc.Service", null, { + constructor: function(smd, options){ + // summary: + // Take a string as a url to retrieve an smd or an object that is an smd or partial smd to use + // as a definition for the service + // + // smd: object + // Takes a number of properties as kwArgs for defining the service. It also + // accepts a string. When passed a string, it is treated as a url from + // which it should synchronously retrieve an smd file. Otherwise it is a kwArgs + // object. It accepts serviceUrl, to manually define a url for the rpc service + // allowing the rpc system to be used without an smd definition. strictArgChecks + // forces the system to verify that the # of arguments provided in a call + // matches those defined in the smd. smdString allows a developer to pass + // a jsonString directly, which will be converted into an object or alternatively + // smdObject is accepts an smdObject directly. + // + // description: + // dojox.rpc.Service must be loaded prior to any plugin services like dojox.rpc.Rest + // dojox.rpc.JsonRpc in order for them to register themselves, otherwise you get + // a "No match found" error. + var url; + var self = this; + function processSmd(smd){ + smd._baseUrl = new dojo._Url((dojo.isBrowser ? location.href : dojo.config.baseUrl) ,url || '.') + ''; + self._smd = smd; + + //generate the methods + for(var serviceName in self._smd.services){ + var pieces = serviceName.split("."); // handle "namespaced" services by breaking apart by . + var current = self; + for(var i=0; i< pieces.length-1; i++){ + // create or reuse each object as we go down the chain + current = current[pieces[i]] || (current[pieces[i]] = {}); + } + current[pieces[pieces.length-1]]= self._generateService(serviceName, self._smd.services[serviceName]); + } + } + if(smd){ + //ifthe arg is a string, we assume it is a url to retrieve an smd definition from + if( (dojo.isString(smd)) || (smd instanceof dojo._Url)){ + if(smd instanceof dojo._Url){ + url = smd + ""; + }else{ + url = smd; + } + + var text = dojo._getText(url); + if(!text){ + throw new Error("Unable to load SMD from " + smd); + }else{ + processSmd(dojo.fromJson(text)); + } + }else{ + processSmd(smd); + } + } + + this._options = (options ? options : {}); + this._requestId = 0; + }, + + _generateService: function(serviceName, method){ + if(this[method]){ + throw new Error("WARNING: "+ serviceName+ " already exists for service. Unable to generate function"); + } + method.name = serviceName; + var func = dojo.hitch(this, "_executeMethod",method); + var transport = dojox.rpc.transportRegistry.match(method.transport || this._smd.transport); + if(transport.getExecutor){ + func = transport.getExecutor(func,method,this); + } + var schema = method.returns || (method._schema = {}); // define the schema + var servicePath = '/' + serviceName +'/'; + // schemas are minimally used to track the id prefixes for the different services + schema._service = func; + func.servicePath = servicePath; + func._schema = schema; + func.id = dojox.rpc.Service._nextId++; + return func; + }, + _getRequest: function(method,args){ + var smd = this._smd; + var envDef = dojox.rpc.envelopeRegistry.match(method.envelope || smd.envelope || "NONE"); + var parameters = (method.parameters || []).concat(smd.parameters || []); + if(envDef.namedParams){ + // the serializer is expecting named params + if((args.length==1) && dojo.isObject(args[0])){ + // looks like we have what we want + args = args[0]; + }else{ + // they provided ordered, must convert + var data={}; + for(var i=0;i + + + Demo of Google SMD + + + + + + + +
                                                                  +
                                                                  +

                                                                  Ajax API SMD

                                                                  + +   +   + + +
                                                                  +

                                                                  Results:

                                                                  +
                                                                    +
                                                                    + +
                                                                    +

                                                                    Old Searches:

                                                                    +
                                                                      +
                                                                      + +
                                                                      + +

                                                                      There are many per-serivce options available. This demo just pulls data and tries ...

                                                                      +

                                                                      That's all folks. Unit tests to come when we address the io.script issue.

                                                                      + + +
                                                                      + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_GoogleAjaxTranslate.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_GoogleAjaxTranslate.html new file mode 100644 index 0000000..d6d0d5f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_GoogleAjaxTranslate.html @@ -0,0 +1,155 @@ + + + + Demo of Google SMD / Translate test + + + + + + + +
                                                                      +
                                                                      +

                                                                      Ajax API SMD / Translation Test

                                                                      + +
                                                                      Used: ? of 500 max.
                                                                      + + + +
                                                                      + +
                                                                      + From: + + + To:   + + + + +
                                                                      + + + +
                                                                      + + + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_GoogleFeed.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_GoogleFeed.html new file mode 100644 index 0000000..5ec3d0a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_GoogleFeed.html @@ -0,0 +1,97 @@ + + + +Demo of Google SMD Feed Service + + + + + + +

                                                                      Google API SMD - Feed Reader

                                                                      + + + + +

                                                                      Click the Read Feed button to load the feed data.

                                                                      + +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + +
                                                                      Titlenone yet
                                                                      Authornone yet
                                                                      Linknone yet
                                                                      Typenone yet
                                                                      Descriptionnone yet
                                                                      + +

                                                                      Entries:

                                                                      + +
                                                                        +
                                                                      +
                                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_jabsorb.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_jabsorb.html new file mode 100644 index 0000000..8452341 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/demo_jabsorb.html @@ -0,0 +1,70 @@ + + + + Demo of Dojo + jabsorb + + + + + + + +

                                                                      + DEMO: jabsorb +

                                                                      +
                                                                      +

                                                                      + Description: +

                                                                      +

                                                                      + This simple demo shows how to connect to a jabsorb server +

                                                                      +

                                                                      The jabsorb Hello World application.

                                                                      + +

                                                                      + Who: + +   + + +

                                                                      + +
                                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/documentation.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/documentation.html new file mode 100644 index 0000000..b5a2a44 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/documentation.html @@ -0,0 +1,33 @@ + + + + + + +
                                                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/documentation.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/documentation.html new file mode 100644 index 0000000..d14cf16 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/documentation.html @@ -0,0 +1,8 @@ +
                                                                      + +
                                                                        + {% for result in results %} +
                                                                      • {% if result.type %}{{ result.type }} {% endif %}{% ifequal result.type "Function" %}{% if not result.resources %}function {% endif %}{% endifequal %}{{ result.name }}{% ifequal result.type "Function" %}{% if not result.resources %}({% for parameter in result.parameters %}{% if not forloop.first %}, {% endif %}{% if parameter.types %}{% for type in parameter.types %}{% if not forloop.first %}|{% endif %}{{ type.title }}{% endfor %}{% if parameter.optional %}?{% endif %}{% if parameter.repeating %}...{% endif %} {% endif %}{{ parameter.name }}{% endfor %}{% endif %}{% endifequal %}{% ifequal result.type "Function" %}{% if not result.resources %}){% endif %}{% endifequal %}
                                                                      • + {% endfor %} +
                                                                      +
                                                                      \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/wikipedia.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/wikipedia.html new file mode 100644 index 0000000..e923a0b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/wikipedia.html @@ -0,0 +1,10 @@ +
                                                                      + + {% if parsedText %} +
                                                                      + {{ parsedText }} +
                                                                      + {% endif %} + + {% if article.revid %}

                                                                      Revision ID: {{ article.revid }}

                                                                      {% endif %} +
                                                                      diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/yahoo.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/yahoo.html new file mode 100644 index 0000000..04339d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/templates/yahoo.html @@ -0,0 +1,31 @@ +
                                                                      + +
                                                                        + {% for result in results.Result %} +
                                                                      • {{ result.Title }}
                                                                        {{ result.Summary }}
                                                                      • + {% endfor %} +
                                                                      + + {% if results.firstResultPosition %} + + + + + {% endif %}{% if results.totalResultsAvailable %} + + + + + {% endif %}{% if results.totalResultsReturned %} + + + + + {% endif %}{% if results.type %} + + + + + {% endif %} +
                                                                      First Result{{ results.firstResultPosition }}
                                                                      Total Results Available{{ results.totalResultsAvailable }}
                                                                      Results Returned{{ results.totalResultsReturned }}
                                                                      Type{{ results.type }}
                                                                      +
                                                                      diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/wikipedia.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/wikipedia.html new file mode 100644 index 0000000..4aeb233 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/wikipedia.html @@ -0,0 +1,41 @@ + + + + Wikipedia Article Grabber Demo + + + + + +

                                                                      Wikipedia Page Grabber

                                                                      +
                                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/demos/yahoo.html b/js/dojo-release-1.7.2-src/dojox/rpc/demos/yahoo.html new file mode 100644 index 0000000..4f1d705 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/demos/yahoo.html @@ -0,0 +1,39 @@ + + + + Yahoo Search Demo + + + + + +

                                                                      Yahoo Web Search

                                                                      +
                                                                      + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/FriendFeed.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/FriendFeed.js new file mode 100644 index 0000000..321e962 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/FriendFeed.js @@ -0,0 +1,104 @@ +dojo.provide('dojox.rpc.tests.FriendFeed'); + +dojo.require('dojo.io.script'); +dojo.require('dojox.rpc.Service'); + +(function() { + +// simple class to help write tests... +dojo.declare("dojox.rpc.tests.FFTest",null, { + name: "", + timeout: 8000, + + constructor: function(name, method, parameters, fn) { + var props = { name: name, + _method: method, + _parameters: parameters, + _test: fn + }; + dojo.mixin( this, props ); + return this; + }, + setUp: function() { + this.service = new dojox.rpc.Service( + dojo.moduleUrl("dojox.rpc.SMDLibrary", "friendfeed.smd")); + }, + runTest: function( t ) { + var d = new doh.Deferred(); + var ff = this.service[ this._method ]( this._parameters ); + ff.addCallback( this, function( results ) { + if ( results.errorCode ) { + d.errback( new Error("Test failed", results ) ); + } else { + if ( this._test( results ) ) { + d.callback( true ); + } else { + d.errback( new Error("Test failed ", results ) ); + } + } + return d; + }); + }, + tearDown: function() { + this.service = undefined; + } +}); + +// test the methods and parameters of the SMD file +doh.register('dojox.rpc.tests.friendfeed', + [ + new dojox.rpc.tests.FFTest("#1 Users", + "users", + { nickname: "paul" }, + function( results ) { + return results.entries; + } + ), + new dojox.rpc.tests.FFTest("#2 Search", + "search", + { q: "dojo" }, + function ( results ) { + return results.entries; + } + ), + new dojox.rpc.tests.FFTest("#3 Domain", + "entry", + { entry_id: "245da66c-d6dd-8a4b-1719-b5bfb1f9d5eb" }, + function ( results ) { + return results.entries && results.entries.length == 1; + // ???: check user info too? + } + ), + new dojox.rpc.tests.FFTest("#4 URL", + "url", + { url: "http://blog.medryx.org/tag/doh/" }, + function( results ) { + return results.entries && results.entries.length >= 1; + } + ), + new dojox.rpc.tests.FFTest("#5 Domain", + "domain", + { domain: "dojotoolkit.org" }, + function ( results ) { + return results.entries && results.entries.length >=1; + } + ), + new dojox.rpc.tests.FFTest("#6 Parameter - service", + "users", + { nickname: "paul", service: "twitter" }, + function ( results ) { + var ent = dojo.filter( results.entries, function( entry ) { + return entry.service.id != 'twitter'; + }); + return ent.length == 0; + } + ), + new dojox.rpc.tests.FFTest("#7 Parameter - num", + "users", + { nickname: "paul", num: 42 }, + function ( results ) { + return results.length == 42; + } + ) +]); + })(); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/Geonames.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Geonames.js new file mode 100644 index 0000000..ca5a970 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Geonames.js @@ -0,0 +1,227 @@ +dojo.provide("dojox.rpc.tests.Geonames"); +dojo.require("dojo.io.script"); +dojo.require("dojox.rpc.Service"); + +dojox.rpc.tests.service = new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.SMDLibrary", "geonames.smd")); + +dojox.rpc.tests.TEST_METHOD_TIMEOUT = 20000; +dojox.rpc.tests.TEST_METHOD_LONG_TIMEOUT = 30000; + +dojox.rpc.tests._testMethod = function(method){ + + return function(m){ + var d = new doh.Deferred(); + + if (method.name && method.parameters) { + var def = dojox.rpc.tests.service[method.name](method.parameters); + def.addCallback(this, function(result){ + if (method.debugTest) { + console.log("Results: ", dojo.toJson(result)); + } + var testType = method.testType || "compare"; + switch(testType){ + case "compare": + console.log("Comparison Test"); + if (dojo.toJson(result)==method.expectedResult){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value in comparison: ", result)); + } + break; + case "result": + console.log("Result Test"); + if (result && dojo.toJson(result)){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value, no result or not valid json: ", result)); + + } + break; + default: + d.errback(new Error("Unknown test type")); + break; + } + }); + } + + return d; + } +}; + +doh.register("dojox.rpc.tests.geonames", + [ + { + name: "#1, getCities()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getCities", + parameters: {north: 44.1, south:-9.9, east: -22.4, west: 55.2}, + expectedResult: dojo.toJson({"geonames":[{"fcodeName":"capital of a political entity","countrycode":"MX","fcl":"P","fclName":"city, village,...","name":"Mexico City","wikipedia":"en.wikipedia.org/wiki/Mexico_City","lng":-99.1386111,"fcode":"PPLC","geonameId":3530597,"lat":19.4341667,"population":11285654},{"fcodeName":"capital of a political entity","countrycode":"PH","fcl":"P","fclName":"city, village,...","name":"Manila","wikipedia":"","lng":120.9822222,"fcode":"PPLC","geonameId":1701668,"lat":14.6041667,"population":10444527},{"fcodeName":"capital of a political entity","countrycode":"BD","fcl":"P","fclName":"city, village,...","name":"Dhaka","wikipedia":"en.wikipedia.org/wiki/Dhaka","lng":90.4086111,"fcode":"PPLC","geonameId":1185241,"lat":23.7230556,"population":10356500},{"fcodeName":"capital of a political entity","countrycode":"KR","fcl":"P","fclName":"city, village,...","name":"Seoul","wikipedia":"en.wikipedia.org/wiki/Seoul","lng":126.9997222,"fcode":"PPLC","geonameId":1835848,"lat":37.5663889,"population":10349312},{"fcodeName":"capital of a political entity","countrycode":"ID","fcl":"P","fclName":"city, village,...","name":"Jakarta","wikipedia":"en.wikipedia.org/wiki/Jakarta","lng":106.8294444,"fcode":"PPLC","geonameId":1642911,"lat":-6.1744444,"population":8540121},{"fcodeName":"capital of a political entity","countrycode":"JP","fcl":"P","fclName":"city, village,...","name":"Tokyo","wikipedia":"en.wikipedia.org/wiki/Tokyo","lng":139.7513889,"fcode":"PPLC","geonameId":1850147,"lat":35.685,"population":8336599},{"fcodeName":"capital of a political entity","countrycode":"TW","fcl":"P","fclName":"city, village,...","name":"Taipei","wikipedia":"en.wikipedia.org/wiki/Taipei","lng":121.525,"fcode":"PPLC","geonameId":1668341,"lat":25.0391667,"population":7871900},{"fcodeName":"capital of a political entity","countrycode":"CN","fcl":"P","fclName":"city, village,...","name":"Beijing","wikipedia":"en.wikipedia.org/wiki/Beijing","lng":116.3883333,"fcode":"PPLC","geonameId":1816670,"lat":39.9288889,"population":7480601},{"fcodeName":"capital of a political entity","countrycode":"CO","fcl":"P","fclName":"city, village,...","name":"Bogotá","wikipedia":"en.wikipedia.org/wiki/Bogot%C3%A1","lng":-74.0833333,"fcode":"PPLC","geonameId":3688689,"lat":4.6,"population":7102602},{"fcodeName":"capital of a political entity","countrycode":"HK","fcl":"P","fclName":"city, village,...","name":"Hong Kong","wikipedia":"","lng":114.15007352829,"fcode":"PPLC","geonameId":1819729,"lat":22.2840136009625,"population":7012738}]}) + }) + }, + { + name: "#2, getQuakes()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getQuakes", + parameters: {north: 44.1, south:-9.9, east: -22.4, west: 55.2, "date": "2007-07-31", maxRows: 1}, + expectedResult: dojo.toJson({"earthquakes":[{"eqid":"2007flce","magnitude":6.1,"lng":-17.7996,"src":"us","datetime":"2007-07-31 22:55:31","depth":10,"lat":-0.095}]}) + }) + }, + { + name: "#3, getWeather()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getWeather", + testType:'result', + parameters: {north: 44.1, south:-9.9, east: -22.4, west: 55.2, "date": "2007-07-31", maxRows: 1} + }) + }, + + { + name: "#4, getWeatherByICAO()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getWeatherByICAO", + testType:'result', + parameters: {ICAO:"LSZH"} + }) + }, + + { + name: "#5, getWeatherByCoords()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getWeatherByCoords", + testType:'result', + parameters: {lat:43,lng:-2} + }) + }, + + { + name: "#6, getChildren()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getChildren", + parameters: {geonameId:3175395}, + testType: 'result' + }) + }, + + { + name: "#7, getHeirarchy()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getHierarchy", + parameters: {geonameId:3175395}, + testType: 'result' + }) + }, + { + name: "#8, getNeighbours()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getNeighbours", + parameters: {geonameId:3175395}, + testType: 'result' + }) + }, + + { + name: "#9, getNeighbourhood()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getNeighbourhood", + parameters: {lat:40.78343, lng:-73.96625}, + expectedResult: dojo.toJson({"neighbourhood":{"adminName2":"New York County","adminCode2":"061","adminCode1":"NY","countryName":"United States","name":"Central Park","countryCode":"US","city":"New York City-Manhattan","adminName1":"New York"}}) + }) + }, + + { + name: "#10, getSiblings()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getSiblings", + parameters: {geonameId:3175395}, + testType: 'result' + }) + }, + + { + name: "#11, getCountryCode()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getCountryCode", + parameters:{lat:40.78343, lng:-73.96625}, + expectedResult: dojo.toJson({"distance":0,"countryName":"United States","countryCode":"US"}) + }) + }, + { + name: "#12, getCountrySubdivision()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getCountrySubdivision", + parameters:{lat:40.78343, lng:-73.96625}, + expectedResult: dojo.toJson({"distance":0,"adminCode1":"NY","countryName":"United States","countryCode":"US","codes":[{"code":"36","type":"FIPS10-4"},{"code":"NY","type":"ISO3166-2"}],"adminName1":"New York"}) + }) + }, + { + name: "#13, getWikipediaBoundingBox()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getWikipediaBoundingBox", + parameters:{north: "44.1", "south": "-9.9", "east": "-22.4", "west": "55.2", "maxRows": "1"}, + testType: 'result' + }) + }, + { + name: "#14, searchWikipedia()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "searchWikipedia", + parameters:{q: "dojo", maxRows: 1}, + expectedResult: dojo.toJson({"geonames":[{"summary":"which is an umbrella organisation of various national, as well as smaller, aikido organisations. Although the name strictly refers only to the main training hall (''dojo''), it is often used by extension to refer to the Aikikai organisation itself. The dojo was founded by Morihei Ueshiba in 1931 under the name ''Kobukan'' (...)","title":"Aikikai Hombu Dojo","wikipediaUrl":"en.wikipedia.org/wiki/Aikikai_Hombu_Dojo","elevation":0,"countryCode":"JP","lng":139.714305555556,"feature":"landmark","lang":"en","lat":35.6991388888889,"population":0}]}) + }) + }, + { + name: "#15, getTimezone()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "getTimezone", + parameters:{lat:40.78343,lng:-73.96625}, + expectedResult: dojo.toJson({"countryName":"United States","dstOffset":-4,"countryCode":"US","gmtOffset":-5,"lng":-73.96625,"timezoneId":"America/New_York","lat":40.78343}) + }) + }, + + { + name: "#16, search()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "search", + parameters:{q: "dojo", maxRows: 1}, + testType: 'result' + }) + }, + + { + name: "#17, postalCodeLookup()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "postcalCodeLookup", + debugTest: true, + parameters:{postalcode: "24060"}, + expectedResult: dojo.toJson({}) + }) + }, + + { + name: "#18, postalCodeSearch()", + timeout: dojox.rpc.tests.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests._testMethod({ + name: "postalCodeSearch", + parameters:{placename: "blacksburg"}, + expectedResult: dojo.toJson({}) + }) + } + ] +); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/Service.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Service.js new file mode 100644 index 0000000..c513f6a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Service.js @@ -0,0 +1,725 @@ +dojo.provide("dojox.rpc.tests.Service"); +dojo.require("dojo.io.script"); +dojo.require("dojox.rpc.Service"); +dojo.require("dojox.rpc.JsonRPC"); +dojo.require("dojox.rpc.Rest"); +dojo.require("dojox.rpc.Client"); +//this is a copy of our smd in js form, so we can just share it easily +//dojo.require("dojox.rpc.tests.resources.testSmd"); + +dojox.rpc.tests.service = new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.tests.resources", "test.smd")); + +doh.register("dojox.rpc.tests.echo", + [ + { + name: "#1 POST,URL,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + //test when given named params + var td = this.svc.postEcho({message: this.name,foo:2}); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#2 POST,URL,Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postEcho(this.name,2); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#3 GET,URL,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.getEcho({message: this.name}); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + + { + name: "#3.1 REST PUT,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + res = this.name + Math.random(); + //test when given named params + var td = this.svc.restStore.put({location: "res"},res); + td.addCallback(this, function(result){ + var td = this.svc.restStore({location: "res"}); + td.addCallback(this, function(result){ + if (result==res){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + }); + + return d; + } + }, + { + name: "#3.2 REST POST,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + var newRes = this.name + Math.random(); + res += newRes; + //test when given named params + var td = this.svc.restStore.post({location: "res"},newRes); + td.addCallback(this, function(result){ + var td = this.svc.restStore({location: "res"}); + td.addCallback(this, function(result){ + if (result==res){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + }); + + return d; + } + }, + { + name: "#3.3 REST DELETE,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.restStore['delete']({location: "res"}); + td.addCallback(this, function(result){ + var td = this.svc.restStore({location: "res"}); + td.addCallback(this, function(result){ + if (result=="deleted"){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + }); + + return d; + } + }, + { + name: "#3.4 GET,URL,Named Parameters, Returning Json", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.getEchoJson({message:'{"foo":"bar"}'}); + td.addCallback(this, function(result){ + if (result.foo=='bar'){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#3.5 GET,PATH,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.getPathEcho({path: "pathname"}); + td.addCallback(this, function(result){ + if (result=="/path/pathname"){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + + { + name: "#4.1 GET,URL,Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.getEcho(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#4.2 Namespaced GET,URL,Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.namespace.getEcho(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + + { + name: "#5 POST,URL,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonEcho({message: this.name}); + td.addCallback(this, function(result){ + if (result && result.message && result.message==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + + { + name: "#6 POST,JSON,Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonEcho(this.name); + td.addCallback(this, function(result){ + if (result && result[0] && result[0]==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#7 JSONP,URL,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.jsonpEcho({message: this.name}); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#8 JSONP,URL, Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.jsonpEcho(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#9 POST,JSON-RPC-1.0,Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonRpc10Echo(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#10 POST,JSON-RPC-1.0,Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonRpc10EchoNamed(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#11 POST,JSON-RPC 2.0, Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonRpc12Echo(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#12 POST,JSON-RPC 2.0, Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonRpc12Echo({message: this.name}); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + } + /* + ,{ + name: "#13 GET,JSON-RPC 2.0, Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.getJsonRpc12Echo(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + { + name: "#14 GET,JSON-RPC 2.0, Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.getJsonRpc12EchoNamed({message: this.name}); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + }, + ,{ + name: "#15 JSONP,JSON-RPC 2.0, Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.jsonpJsonRpc12Echo(this.name); + td.addCallback(this, function(result){ + if (result==this.name){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + + return d; + } + } + */ + ] +); + +doh.register("dojox.rpc.tests.jsonRpcForcedError", [ + { + name: "POST,JSON-RPC 1.0, Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonRpc10ForcedError(this.name); + + td.addErrback(this, function(error){ + d.callback(true); + }); + + return d; + } + }, + { + name: "POST,JSON-RPC 2.0, Ordered Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonRpc12ForcedError(this.name); + + td.addErrback(this, function(error){ + d.callback(true); + }); + + return d; + } + }, + { + name: "POST,JSON-RPC 2.0, Named Parameters", + timeout: 4000, + setUp: function(){ + //this.svc = new dojox.rpc.Service(dojox.rpc.tests.resources.testSmd); + this.svc = dojox.rpc.tests.service; + }, + runTest: function(){ + var d = new doh.Deferred(); + + if (window.location.protocol=="file:") { + var err= new Error("This Test requires a webserver and will fail intentionally if loaded from file://"); + d.errback(err); + return d; + } + + //test when given named params + var td = this.svc.postJsonRpc12ForcedError({message: this.name}); + + td.addErrback(this, function(error){ + d.callback(true); + }); + + return d; + } + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/Wikipedia.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Wikipedia.js new file mode 100644 index 0000000..5fc803f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Wikipedia.js @@ -0,0 +1,55 @@ +dojo.provide("dojox.rpc.tests.Wikipedia"); +dojo.require("dojo.io.script"); +dojo.require("dojox.rpc.Service"); + +dojox.rpc.tests.wikipediaService = new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.SMDLibrary", "wikipedia.smd")); + +dojox.rpc.tests.wikipediaService.TEST_METHOD_TIMEOUT = 8000; + +dojox.rpc.tests.wikipediaService._query = function(q){ + return function(m){ + var d = new doh.Deferred(); + + if (q.parameters && q.parameters.action && q.expectedResult) { + var wp = dojox.rpc.tests.wikipediaService.query(q.parameters); + wp.addCallback(this, function(result){ + console.log(result); + if (result[q.expectedResult]){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + } + + return d; + } +}; + +doh.register("dojox.rpc.tests.wikipedia", + [ + { + name: "#1, Wikipedia::parse", + timeout: dojox.rpc.tests.wikipediaService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.wikipediaService._query({ + parameters: { + action: "parse", + page: "Dojo Toolkit" + }, + expectedResult: "parse" + }) + }, + { + name: "#2, Wikipedia::search", + timeout: dojox.rpc.tests.wikipediaService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.wikipediaService._query({ + parameters: { + action: "query", + list: "search", + srwhat: "text", + srsearch: "Dojo Toolkit" + }, + expectedResult: "query" + }) + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/Yahoo.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Yahoo.js new file mode 100644 index 0000000..1020e5d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/Yahoo.js @@ -0,0 +1,313 @@ +dojo.provide("dojox.rpc.tests.Yahoo"); +dojo.require("dojo.io.script"); +dojo.require("dojox.rpc.Service"); + +dojox.rpc.tests.yahooService = new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.SMDLibrary", "yahoo.smd")); + +dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT = 8000; +dojox.rpc.tests.yahooService.TEST_METHOD_LONG_TIMEOUT = 30000; + +dojox.rpc.tests.yahooService._testMethod = function(method){ + return function(m){ + var d = new doh.Deferred(); + + if (method.name && method.parameters && method.expectedResult) { + var yd = dojox.rpc.tests.yahooService[method.name](method.parameters); + yd.addCallback(this, function(result){ + if (result[method.expectedResult]){ + d.callback(true); + }else{ + d.errback(new Error("Unexpected Return Value: ", result)); + } + }); + } + + return d; + } +}; + +doh.register("dojox.rpc.tests.yahoo", + [ + { + name: "#1, Yahoo Answers::questionSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "questionSearch", + parameters: {query: "dojo toolkit"}, + expectedResult: "all" + }) + }, + { + name: "#2, Yahoo Answers::getByCategory", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "getByCategory", + parameters: {category_name: "Computers+%26+Internet%3ESoftware"}, + expectedResult: "all" + }) + }, + { + name: "#3, Yahoo Answers::getQuestion", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "getQuestion", + parameters: {question_id: "1005120800412"}, + expectedResult: "all" + }) + }, + { + name: "#4, Yahoo Answers::getByUser", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "getByUser", + parameters: {user_id: "AA10001397"}, + expectedResult: "all" + }) + }, + { + name: "#5, Yahoo Audio::artistSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "artistSearch", + parameters: {artist: "The Beatles"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#6, Yahoo Audio::albumSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "albumSearch", + parameters: {artist: "The Beatles", album: "Magical Mystery Tour"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#7, Yahoo Audio::songSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "songSearch", + parameters: {artist: "The Beatles", album: "Magical Mystery Tour", song: "Penny Lane"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#8, Yahoo Audio::songDownloadLocation", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "songDownloadLocation", + parameters: {songid: "XXXXXXT000995691"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#9, Yahoo ContentAnalysis::contextSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "contextSearch", + parameters: { + context: "Welcome to the Book of Dojo. This book covers both versions 0.9 and 1.0, and all 1.0 extensions and changes are clearly marked for your enjoyment. Please use the forums for support questions, but if you see something missing, incomplete, or just plain wrong in this book, please leave a comment.", + query: "dojo" + }, + expectedResult: "ResultSet" + }) + }, + { + name: "#10, Yahoo Image::imageSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "imageSearch", + parameters: {query: "dojo"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#11, Yahoo Local::localSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "localSearch", + parameters: {query: "pizza", zip: "98201"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#12, Yahoo Local::collectionSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_LONG_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "collectionSearch", + parameters: {query: "dojo"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#13, Yahoo Local::getCollection", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_LONG_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + expectedResult: "getCollection", + parameters: {collection_id: "1000031487"}, + expectedResult: "Result" + }) + }, + { + name: "#14, Yahoo Local::trafficData", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_LONG_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "trafficData", + parameters: {street: "1600 Pennsylvania Ave", city: "Washington, DC"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#15, Yahoo MyWebs::urlSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_LONG_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "urlSearch", + parameters: {tag: "javascript"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#16, Yahoo MyWebs::tagSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_LONG_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "tagSearch", + parameters: {url: "dojotoolkit.org"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#17, Yahoo MyWebs::relatedTags", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_LONG_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "relatedTags", + parameters: {tag: "javascript"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#18, Yahoo NewsSearch::newsSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "newsSearch", + parameters: {query: "dojo toolkit"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#19, Yahoo Shopping::catalogListing", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "catalogListing", + parameters: {idtype: "brand,partnum", idvalue: "canon,1079B001", getspec: 1}, + expectedResult: "Catalog" + }) + }, + { + name: "#20, Yahoo Shopping::merchantSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "merchantSearch", + parameters: {merchantid: "1021849"}, + expectedResult: "Merchant" + }) + }, + { + name: "#21, Yahoo Shopping::productSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "productSearch", + parameters: {query: "dojo"}, + expectedResult: "Categories" + }) + }, + { + name: "#22, Yahoo SiteExplorer::inlinkData", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "inlinkData", + parameters: {query: "dojotoolkit.org"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#23, Yahoo SiteExplorer::pageData", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "pageData", + parameters: {query: "dojotoolkit.org"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#24, Yahoo SiteExplorer::ping", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "ping", + parameters: {sitemap: "http://www.yahoo.com"}, + expectedResult: "Success" + }) + }, + { + name: "#25, Yahoo SiteExplorer::updateNotification", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "updateNotification", + parameters: {url: "http://www.yahoo.com"}, + expectedResult: "Success" + }) + }, + { + name: "#26, Yahoo Trip::tripSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "tripSearch", + parameters: {query: "eiffel tower"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#27, Yahoo Trip::getTrip", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "getTrip", + parameters: {id: "546303"}, + expectedResult: "Result" + }) + }, + { + name: "#28, Yahoo Video::videoSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "videoSearch", + parameters: {query: "star wars kid"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#29, Yahoo Web::webSearch", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "webSearch", + parameters: {query: "dojo toolkit"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#30, Yahoo Web::spellingSuggestion", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "spellingSuggestion", + parameters: {query: "beatls"}, + expectedResult: "ResultSet" + }) + }, + { + name: "#31, Yahoo Web::relatedSuggestion", + timeout: dojox.rpc.tests.yahooService.TEST_METHOD_TIMEOUT, + runTest: dojox.rpc.tests.yahooService._testMethod({ + name: "relatedSuggestion", + parameters: {query: "dojo toolkit"}, + expectedResult: "ResultSet" + }) + } +]); diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/libraryTests.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/libraryTests.js new file mode 100644 index 0000000..e4e7301 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/libraryTests.js @@ -0,0 +1,11 @@ +dojo.provide("dojox.rpc.tests.libraryTests"); + +try{ + dojo.require("dojox.rpc.tests.Yahoo"); + dojo.require("dojox.rpc.tests.Geonames"); + dojo.require("dojox.rpc.tests.Wikipedia"); + dojo.require("dojox.rpc.tests.FriendFeed"); +}catch(e){ + doh.debug(e); +} + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/module.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/module.js new file mode 100644 index 0000000..e4c8742 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/module.js @@ -0,0 +1,9 @@ +dojo.provide("dojox.rpc.tests.module"); + +try{ + dojo.require("dojox.rpc.tests.Service"); + dojo.require("dojox.rpc.tests.stores.JsonRestStore"); +}catch(e){ + doh.debug(e); +} + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/JSON.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/JSON.php new file mode 100755 index 0000000..4a21ce7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/JSON.php @@ -0,0 +1,724 @@ + + * @author Matt Knapp + * @author Brett Stimmerman + * @copyright 2005 Michal Migurski + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 + */ + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_SLICE', 1); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_STR', 2); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_ARR', 4); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_OBJ', 8); + +/** + * Marker constant for Services_JSON::decode(), used to flag stack state + */ +define('SERVICES_JSON_IN_CMT', 16); + +/** + * Behavior switch for Services_JSON::decode() + */ +define('SERVICES_JSON_LOOSE_TYPE', 10); + +/** + * Behavior switch for Services_JSON::decode() + */ +define('SERVICES_JSON_STRICT_TYPE', 11); + +/** + * Converts to and from JSON format. + * + * Brief example of use: + * + * + * // create a new instance of Services_JSON + * $json = new Services_JSON(); + * + * // convert a complexe value to JSON notation, and send it to the browser + * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); + * $output = $json->encode($value); + * + * print($output); + * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] + * + * // accept incoming POST data, assumed to be in JSON notation + * $input = file_get_contents('php://input', 1000000); + * $value = $json->decode($input); + * + */ +class Services_JSON +{ + /** + * constructs a new JSON instance + * + * @param int $use object behavior: when encoding or decoding, + * be loose or strict about object/array usage + * + * possible values: + * - SERVICES_JSON_STRICT_TYPE: strict typing, default. + * "{...}" syntax creates objects in decode(). + * - SERVICES_JSON_LOOSE_TYPE: loose typing. + * "{...}" syntax creates associative arrays in decode(). + */ + function Services_JSON($use = SERVICES_JSON_STRICT_TYPE) + { + $this->use = $use; + } + + /** + * convert a string from one UTF-16 char to one UTF-8 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf16 UTF-16 character + * @return string UTF-8 character + * @access private + */ + function utf162utf8($utf16) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) + return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); + + $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); + + switch(true) { + case ((0x7F & $bytes) == $bytes): + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x7F & $bytes); + + case (0x07FF & $bytes) == $bytes: + // return a 2-byte UTF-8 character + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0xC0 | (($bytes >> 6) & 0x1F)) + . chr(0x80 | ($bytes & 0x3F)); + + case (0xFFFF & $bytes) == $bytes: + // return a 3-byte UTF-8 character + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0xE0 | (($bytes >> 12) & 0x0F)) + . chr(0x80 | (($bytes >> 6) & 0x3F)) + . chr(0x80 | ($bytes & 0x3F)); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * convert a string from one UTF-8 char to one UTF-16 char + * + * Normally should be handled by mb_convert_encoding, but + * provides a slower PHP-only method for installations + * that lack the multibye string extension. + * + * @param string $utf8 UTF-8 character + * @return string UTF-16 character + * @access private + */ + function utf82utf16($utf8) + { + // oh please oh please oh please oh please oh please + if(function_exists('mb_convert_encoding')) + return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); + + switch(strlen($utf8)) { + case 1: + // this case should never be reached, because we are in ASCII range + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return $ut8; + + case 2: + // return a UTF-16 character from a 2-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr(0x07 & (ord($utf8{0}) >> 2)) + . chr((0xC0 & (ord($utf8{0}) << 6)) + | (0x3F & ord($utf8{1}))); + + case 3: + // return a UTF-16 character from a 3-byte UTF-8 char + // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + return chr((0xF0 & (ord($utf8{0}) << 4)) + | (0x0F & (ord($utf8{1}) >> 2))) + . chr((0xC0 & (ord($utf8{1}) << 6)) + | (0x7F & ord($utf8{2}))); + } + + // ignoring UTF-32 for now, sorry + return ''; + } + + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to Services_JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return string JSON string representation of input var + * @access public + */ + function encode($var) + { + switch (gettype($var)) { + case 'boolean': + return $var ? 'true' : 'false'; + + case 'NULL': + return 'null'; + + case 'integer': + return (int) $var; + + case 'double': + case 'float': + return (float) $var; + + case 'string': + // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT + $ascii = ''; + $strlen_var = strlen($var); + + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ + for ($c = 0; $c < $strlen_var; ++$c) { + + $ord_var_c = ord($var{$c}); + + switch (true) { + case $ord_var_c == 0x08: + $ascii .= '\b'; + break; + case $ord_var_c == 0x09: + $ascii .= '\t'; + break; + case $ord_var_c == 0x0A: + $ascii .= '\n'; + break; + case $ord_var_c == 0x0C: + $ascii .= '\f'; + break; + case $ord_var_c == 0x0D: + $ascii .= '\r'; + break; + + case $ord_var_c == 0x22: + case $ord_var_c == 0x2F: + case $ord_var_c == 0x5C: + // double quote, slash, slosh + $ascii .= '\\'.$var{$c}; + break; + + case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ascii .= $var{$c}; + break; + + case (($ord_var_c & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, ord($var{$c + 1})); + $c += 1; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2})); + $c += 2; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3})); + $c += 3; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4})); + $c += 4; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + + case (($ord_var_c & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $char = pack('C*', $ord_var_c, + ord($var{$c + 1}), + ord($var{$c + 2}), + ord($var{$c + 3}), + ord($var{$c + 4}), + ord($var{$c + 5})); + $c += 5; + $utf16 = $this->utf82utf16($char); + $ascii .= sprintf('\u%04s', bin2hex($utf16)); + break; + } + } + + return '"'.$ascii.'"'; + + case 'array': + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ + + // treat as a JSON object + if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + return '{' . + join(',', array_map(array($this, 'name_value'), + array_keys($var), + array_values($var))) + . '}'; + } + + // treat it like a regular array + return '[' . join(',', array_map(array($this, 'encode'), $var)) . ']'; + + case 'object': + $vars = get_object_vars($var); + return '{' . + join(',', array_map(array($this, 'name_value'), + array_keys($vars), + array_values($vars))) + . '}'; + + default: + return ''; + } + } + + /** + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + function name_value($name, $value) + { + return $this->encode(strval($name)) . ':' . $this->encode($value); + } + + /** + * reduce a string by removing leading and trailing comments and whitespace + * + * @param $str string string value to strip of comments and whitespace + * + * @return string string value stripped of comments and whitespace + * @access private + */ + function reduce_string($str) + { + $str = preg_replace(array( + + // eliminate single line comments in '// ...' form + '#^\s*//(.+)$#m', + + // eliminate multi-line comments in '/* ... */' form, at start of string + '#^\s*/\*(.+)\*/#Us', + + // eliminate multi-line comments in '/* ... */' form, at end of string + '#/\*(.+)\*/\s*$#Us' + + ), '', $str); + + // eliminate extraneous space + return trim($str); + } + + /** + * decodes a JSON string into appropriate variable + * + * @param string $str JSON-formatted string + * + * @return mixed number, boolean, string, array, or object + * corresponding to given JSON input string. + * See argument 1 to Services_JSON() above for object-output behavior. + * Note that decode() always returns strings + * in ASCII or UTF-8 format! + * @access public + */ + function decode($str) + { + $str = $this->reduce_string($str); + + switch (strtolower($str)) { + case 'true': + return true; + + case 'false': + return false; + + case 'null': + return null; + + default: + if (is_numeric($str)) { + // Lookie-loo, it's a number + + // This would work on its own, but I'm trying to be + // good about returning integers where appropriate: + // return (float)$str; + + // Return float or int, as appropriate + return ((float)$str == (integer)$str) + ? (integer)$str + : (float)$str; + + } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { + // STRINGS RETURNED IN UTF-8 FORMAT + $delim = substr($str, 0, 1); + $chrs = substr($str, 1, -1); + $utf8 = ''; + $strlen_chrs = strlen($chrs); + + for ($c = 0; $c < $strlen_chrs; ++$c) { + + $substr_chrs_c_2 = substr($chrs, $c, 2); + $ord_chrs_c = ord($chrs{$c}); + + switch (true) { + case $substr_chrs_c_2 == '\b': + $utf8 .= chr(0x08); + ++$c; + break; + case $substr_chrs_c_2 == '\t': + $utf8 .= chr(0x09); + ++$c; + break; + case $substr_chrs_c_2 == '\n': + $utf8 .= chr(0x0A); + ++$c; + break; + case $substr_chrs_c_2 == '\f': + $utf8 .= chr(0x0C); + ++$c; + break; + case $substr_chrs_c_2 == '\r': + $utf8 .= chr(0x0D); + ++$c; + break; + + case $substr_chrs_c_2 == '\\"': + case $substr_chrs_c_2 == '\\\'': + case $substr_chrs_c_2 == '\\\\': + case $substr_chrs_c_2 == '\\/': + if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || + ($delim == "'" && $substr_chrs_c_2 != '\\"')) { + $utf8 .= $chrs{++$c}; + } + break; + + case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)): + // single, escaped unicode character + $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2))) + . chr(hexdec(substr($chrs, ($c + 4), 2))); + $utf8 .= $this->utf162utf8($utf16); + $c += 5; + break; + + case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): + $utf8 .= $chrs{$c}; + break; + + case ($ord_chrs_c & 0xE0) == 0xC0: + // characters U-00000080 - U-000007FF, mask 110XXXXX + //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 2); + ++$c; + break; + + case ($ord_chrs_c & 0xF0) == 0xE0: + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 3); + $c += 2; + break; + + case ($ord_chrs_c & 0xF8) == 0xF0: + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 4); + $c += 3; + break; + + case ($ord_chrs_c & 0xFC) == 0xF8: + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 5); + $c += 4; + break; + + case ($ord_chrs_c & 0xFE) == 0xFC: + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $utf8 .= substr($chrs, $c, 6); + $c += 5; + break; + + } + + } + + return $utf8; + + } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { + // array, or object notation + + if ($str{0} == '[') { + $stk = array(SERVICES_JSON_IN_ARR); + $arr = array(); + } else { + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $stk = array(SERVICES_JSON_IN_OBJ); + $obj = array(); + } else { + $stk = array(SERVICES_JSON_IN_OBJ); + $obj = new stdClass(); + } + } + + array_push($stk, array('what' => SERVICES_JSON_SLICE, + 'where' => 0, + 'delim' => false)); + + $chrs = substr($str, 1, -1); + $chrs = $this->reduce_string($chrs); + + if ($chrs == '') { + if (reset($stk) == SERVICES_JSON_IN_ARR) { + return $arr; + + } else { + return $obj; + + } + } + + //print("\nparsing {$chrs}\n"); + + $strlen_chrs = strlen($chrs); + + for ($c = 0; $c <= $strlen_chrs; ++$c) { + + $top = end($stk); + $substr_chrs_c_2 = substr($chrs, $c, 2); + + if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) { + // found a comma that is not inside a string, array, etc., + // OR we've reached the end of the character list + $slice = substr($chrs, $top['where'], ($c - $top['where'])); + array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); + //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + if (reset($stk) == SERVICES_JSON_IN_ARR) { + // we are in an array, so just push an element onto the stack + array_push($arr, $this->decode($slice)); + + } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { + // we are in an object, so figure + // out the property name and set an + // element in an associative array, + // for now + if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { + // "name":value pair + $key = $this->decode($parts[1]); + $val = $this->decode($parts[2]); + + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $obj[$key] = $val; + } else { + $obj->$key = $val; + } + } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { + // name:value pair, where name is unquoted + $key = $parts[1]; + $val = $this->decode($parts[2]); + + if ($this->use == SERVICES_JSON_LOOSE_TYPE) { + $obj[$key] = $val; + } else { + $obj->$key = $val; + } + } + + } + + } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) { + // found a quote, and we are not inside a string + array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); + //print("Found start of string at {$c}\n"); + + } elseif (($chrs{$c} == $top['delim']) && + ($top['what'] == SERVICES_JSON_IN_STR) && + (($chrs{$c - 1} != '\\') || + ($chrs{$c - 1} == '\\' && $chrs{$c - 2} == '\\'))) { + // found a quote, we're in a string, and it's not escaped + array_pop($stk); + //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); + + } elseif (($chrs{$c} == '[') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a left-bracket, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false)); + //print("Found start of array at {$c}\n"); + + } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) { + // found a right-bracket, and we're in an array + array_pop($stk); + //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } elseif (($chrs{$c} == '{') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a left-brace, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); + //print("Found start of object at {$c}\n"); + + } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) { + // found a right-brace, and we're in an object + array_pop($stk); + //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } elseif (($substr_chrs_c_2 == '/*') && + in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { + // found a comment start, and we are in an array, object, or slice + array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false)); + $c++; + //print("Found start of comment at {$c}\n"); + + } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) { + // found a comment end, and we're in one now + array_pop($stk); + $c++; + + for ($i = $top['where']; $i <= $c; ++$i) + $chrs = substr_replace($chrs, ' ', $i, 1); + + //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); + + } + + } + + if (reset($stk) == SERVICES_JSON_IN_ARR) { + return $arr; + + } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { + return $obj; + + } + + } + } + } + +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/bigQuery b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/bigQuery new file mode 100644 index 0000000..e8f9429 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/bigQuery @@ -0,0 +1 @@ +[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20] \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/bigQuery5 b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/bigQuery5 new file mode 100644 index 0000000..e77ca8d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/bigQuery5 @@ -0,0 +1 @@ +[1,2,3,4,5] \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/echo.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/echo.php new file mode 100644 index 0000000..2f0762d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/echo.php @@ -0,0 +1,11 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/echoJson.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/echoJson.php new file mode 100644 index 0000000..52b5d03 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/echoJson.php @@ -0,0 +1,8 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/fakestore.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/fakestore.php new file mode 100644 index 0000000..12c24ab --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/fakestore.php @@ -0,0 +1,38 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc10.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc10.php new file mode 100644 index 0000000..232ec90 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc10.php @@ -0,0 +1,47 @@ + sudo pear install File + // Your server will also need the Pear library directory included in PHP's + // include_path configuration directive + // require_once('File.php'); + + // ensure that we don't try to send "html" down to the client + header("Content-Type: application/json"); + + $json = new Services_JSON; + //$fp = new File(); + + $results = array(); + $results['error'] = null; + + $jsonRequest = file_get_contents('php://input'); + //$jsonRequest = '{"params":["Blah"],"method":"myecho","id":86}'; + + $req = $json->decode($jsonRequest); + + $method = $req->method; + $params = $req->params; + + switch($method) { + case "postJsonRpc10EchoNamed": + case "postJsonRpc10Echo": + $results['result']=$params[0]; + break; + default: + $results['result']=""; + $results['error']="JSON-RPC 1.0 METHOD NOT FOUND"; + break; + } + + $results['id'] = $req->id; + + $encoded = $json->encode($results); + + print $encoded; +?> diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc11.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc11.php new file mode 100644 index 0000000..3c4f277 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc11.php @@ -0,0 +1,52 @@ + sudo pear install File + // Your server will also need the Pear library directory included in PHP's + // include_path configuration directive + // require_once('File.php'); + + // ensure that we don't try to send "html" down to the client + header("Content-Type: application/json"); + + $json = new Services_JSON; + //$fp = new File(); + + $results = array(); + $results['error'] = null; + + $jsonRequest = file_get_contents('php://input'); + //$jsonRequest = '{"params":["Blah"],"method":"myecho","id":86}'; + + $req = $json->decode($jsonRequest); + + $method = $req->method; + $params = $req->params; + + switch($method) { + case "rawPostJsonRpc11Echo": + if (is_array($params)){ + $results['result']=$params; + }else{ + $results['result']=$params->message; + } + break; + default: + $results['result']=""; + $results['error']=array(); + $results['error']['code']=-32601; + $results['error']["message"]="The requested remote-procedure does not exist / is not available."; + break; + } + + $results['id'] = $req->id; + + $encoded = $json->encode($results); + + print $encoded; +?> diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc12.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc12.php new file mode 100644 index 0000000..a3212f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpc12.php @@ -0,0 +1,54 @@ + sudo pear install File + // Your server will also need the Pear library directory included in PHP's + // include_path configuration directive + // require_once('File.php'); + + // ensure that we don't try to send "html" down to the client + header("Content-Type: application/json"); + + $json = new Services_JSON; + //$fp = new File(); + + $results = array(); + $results['error'] = null; + + $jsonRequest = file_get_contents('php://input'); + //$jsonRequest = '{"params":["Blah"],"method":"myecho","id":86}'; + + $req = $json->decode($jsonRequest); + + $method = $req->method; + $params = $req->params; + + switch($method) { + case "postJsonRpc12Echo": + case "postJsonRpc12EchoNamed": + if (is_array($params)){ + $results['result']=$params; + }else{ + $results['result']=$params->message; + } + break; + default: + $results['result']=""; + $results['error']=array(); + $results['error']['code']=-32601; + $results['error']["message"]="The requested remote-procedure does not exist / is not available."; + header('HTTP/1.1 500 Server Error'); + break; + } + + $results['id'] = $req->id; + + $encoded = $json->encode($results); + + print $encoded; +?> diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpcPostGetEcho.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpcPostGetEcho.php new file mode 100644 index 0000000..110d27f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonRpcPostGetEcho.php @@ -0,0 +1,41 @@ +decode($params); + $result = "{id:" . $id . ", 'result':'" . $p[0]. "', error:''}"; + break; + case "postJsonRpc12Echo": + case "getJsonRpc12Echo": + case "postJsonRpc12EchoNamed": + case "getJsonRpc12EchoNamed": + $p = $json->decode($params); + + if ($p->message){ + $d = $p->message; + }else{ + $d=$p[0]; + } + $result = "{id:" . $id . ", 'result':'" . $d . "'}"; + break; + default: + $result = "{id:'1','error':'Unknown Method', 'result':'this result only here for this test, shouldnt be here in real code'}"; + break; + } + + print $result; + +?> diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpEcho.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpEcho.php new file mode 100644 index 0000000..3998156 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpEcho.php @@ -0,0 +1,26 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpEcho.phps b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpEcho.phps new file mode 100644 index 0000000..3998156 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpEcho.phps @@ -0,0 +1,26 @@ + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpJsonRpcEcho.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpJsonRpcEcho.php new file mode 100644 index 0000000..be7ef3e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/jsonpJsonRpcEcho.php @@ -0,0 +1,40 @@ +decode($_REQUEST['params']); + $callback = $_REQUEST["callback"]; + + switch($method){ + case "jsonpJsonRpc10EchoNamed": + case "jsonpJsonRpc11Echo": + case "jsonpJsonRpc11EchoNamed": + case "jsonpJsonRpc10Echo": + if ( ($method=="jsonpJsonRpc10EchoNamed")||($method=="jsonpJsonRpc11EchoNamed")){ + $message = $params->message; + }else{ + $message = $params[0]; + } + if ($message){ + switch($method){ + case "jsonpJsonRpc11Echo": + case "jsonpJsonRpc11EchoNamed": + $res = "{'id': '$id', result: '$message'}"; + break; + default: + $res = "{'id': '$id', result: '$message', 'error':''}"; + break; + } + }else{ + $res = "{'id': '$id', error: {'code': 100, 'message':'no message provided'}}"; + } + } + + print "$callback($res)"; + +?> diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1 b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1 new file mode 100644 index 0000000..ff02ba8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1 @@ -0,0 +1 @@ +{"id":"obj1","name":"Object 1","updated":1202755814406,"obj":{"foo":"bar"},"obj dup":{"$ref":"obj1.obj"},"testArray":[1,2,3,4]} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1lazyValue b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1lazyValue new file mode 100644 index 0000000..6e6f460 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1lazyValue @@ -0,0 +1 @@ +"Finally loaded" \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1testArray b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1testArray new file mode 100644 index 0000000..0c624c1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj1testArray @@ -0,0 +1 @@ +[1,2,3,undefined,4] \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj3 b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj3 new file mode 100644 index 0000000..21cb328 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj3 @@ -0,0 +1 @@ +{"id":"obj3","name":"Object 3"} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj4 b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj4 new file mode 100644 index 0000000..a429ecf --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/obj4 @@ -0,0 +1 @@ +{"id":"obj4","name":"Object 4"} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/query b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/query new file mode 100644 index 0000000..52ce785 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/query @@ -0,0 +1,6 @@ +[ + {id:"obj1",name:"Object 1","lazyValue":{$ref:"obj1.lazyValue"}}, + {id:"obj2",name:"Object 2"}, + {$ref:"obj3"}, + {$ref:"obj4"} +] \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/rawEcho.php b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/rawEcho.php new file mode 100644 index 0000000..c8ee9a2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/rawEcho.php @@ -0,0 +1,8 @@ + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/res b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/res new file mode 100644 index 0000000..3c22137 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/res @@ -0,0 +1 @@ +deleted \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/test.smd b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/test.smd new file mode 100644 index 0000000..3c6a687 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/resources/test.smd @@ -0,0 +1,207 @@ +(window["http://localhost/dojox/rpc/tests/resources/test.smd"]||function(val){return val}) ( +{ + transport: "POST", + envelope: "URL", + strictParameters: false, + parameters: { + appId: {}, + outputType: { + "default": "json" + }, + + ignoreErrors: { + optional: true + } + }, + + services: { + postEcho: { + target: "echo.php", + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + + getEcho: { + transport: "GET", + target: "echo.php", + + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + "namespace.getEcho": { + transport: "GET", + target: "echo.php", + + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + getEchoJson: { + transport: "GET", + target: "echoJson.php", + contentType:"application/json", + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + getPathEcho: { + transport: "GET", + envelope: "PATH", + target: "echo.php?message=", + + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + restStore: { + transport: "REST", + contentType:"text/plain", + preventCache: true, + target: "fakestore.php", + parameters: [ + {name: "location", type: "string", optional: true} + ] + }, + jsonRestStore: { + transport: "REST", + target: "fakestore.php", + contentType:"application/json", + parameters: [ + {name: "location", type: "string", optional: true} + ], + returns: { + properties:{ + name:{ + type:"string", + minLength:3 + } + } + } + }, + + + + postJsonEcho: { + transport: "POST", + envelope: "JSON", + target: "rawEcho.php", + + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + + jsonpEcho: { + transport: "JSONP", + target: "jsonpEcho.php", + callbackParamName: "testCallbackParam", + + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + + postJsonRpc10Echo: { + transport: "POST", + envelope: "JSON-RPC-1.0", + target: "jsonRpc10.php", + + parameters: [ + {type: "string", optional: true} + ] + }, + + postJsonRpc10EchoNamed: { + transport: "POST", + envelope: "JSON-RPC-1.0", + target: "jsonRpc10.php", + + parameters: [ + {type: "string", optional: true} + ] + }, + + jsonpJsonRpc12Echo: { + transport: "JSONP", + envelope: "JSON-RPC-2.0", + target: "jsonpJsonRpcEcho.php", + + parameters: [ + {type: "string", optional: true} + ] + }, + + jsonpJsonRpc12EchoNamed: { + transport: "JSONP", + envelope: "JSON-RPC-2.0", + target: "jsonpJsonRpcEcho.php", + + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + + postJsonRpc10ForcedError: { + envelope: "JSON-RPC-1.0", + transport: "POST", + target: "jsonRpc10.php", + + parameters: [ + {type: "string", optional: true} + ] + }, + + postJsonRpc12Echo: { + transport: "POST", + envelope: "JSON-RPC-2.0", + target: "jsonRpc12.php", + + parameters: [ + {name: "message", type: "string", optional: true} + ] + }, + + getJsonRpc12Echo: { + transport: "GET", + envelope: "JSON-RPC-2.0", + target: "jsonRpcPostGetEcho.php", + + parameters: [ + {type: "string", optional: true} + ] + }, + + postJsonRpc12EchoNamed: { + transport: "POST", + envelope: "JSON-RPC-2.0", + target: "jsonRpcPostGetEcho.php", + + parameters: [ + {type: "string", optional: true} + ] + }, + + getJsonRpc12EchoNamed: { + transport: "GET", + envelope: "JSON-RPC-2.0", + target: "jsonRpcPostGetEcho.php", + + parameters: [ + {type: "string", optional: true} + ] + }, + + + postJsonRpc12ForcedError: { + envelope: "JSON-RPC-2.0", + transport: "POST", + target: "jsonRpc12.php", + + parameters: [ + {type: "string", optional: true} + ] + } + } +}) diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/runLibraryTests.html b/js/dojo-release-1.7.2-src/dojox/rpc/tests/runLibraryTests.html new file mode 100644 index 0000000..25c88a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/runLibraryTests.html @@ -0,0 +1,9 @@ + + + + Dojox Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/runTests.html b/js/dojo-release-1.7.2-src/dojox/rpc/tests/runTests.html new file mode 100644 index 0000000..bb937c6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dojox Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/dojox/rpc/tests/stores/JsonRestStore.js b/js/dojo-release-1.7.2-src/dojox/rpc/tests/stores/JsonRestStore.js new file mode 100644 index 0000000..9e39a50 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/rpc/tests/stores/JsonRestStore.js @@ -0,0 +1,234 @@ +dojo.provide("dojox.rpc.tests.stores.JsonRestStore"); + +dojo.require("dojox.data.JsonRestStore"); +dojo.require("dojo.data.api.Read"); +dojo.require("dojox.rpc.Service"); + +dojox.rpc.tests.stores.JsonRestStore.error = function(t, d, errData){ + // summary: + // The error callback function to be used for all of the tests. + d.errback(errData); +} +var testServices = new dojox.rpc.Service(dojo.moduleUrl("dojox.rpc.tests.resources", "test.smd")); +var jsonStore = new dojox.data.JsonRestStore({service:testServices.jsonRestStore}); + +doh.register("dojox.rpc.tests.stores.JsonRestStore", + [ + { + name: "Fetch some items", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on JsonRestStore of a simple query. + var d = new doh.Deferred(); + jsonStore.fetch({query:"query", + onComplete: function(items, request){ + t.is(4, items.length); + d.callback(true); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + return d; //Object + } + }, + { + name: "fetch by id", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // Simple test of a basic fetch on JsonRestStore of a single item. + var d = new doh.Deferred(); + jsonStore.fetch({query:"obj1", + onComplete: function(item, request){ + t.is("Object 1", item.name); + t.t(jsonStore.hasAttribute(item,"name")); + t.is(jsonStore.getValues(item,"name").length,1); + t.t(jsonStore.isItem(item)); + d.callback(true); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + return d; //Object + } + }, + { + name: "Modify,save, check by id", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // Fetch an item from a query, modify and save it, and check to see if it was modified correctly + var d = new doh.Deferred(); + jsonStore.fetch({query:"query", + onComplete: function(items, request){ + var now = new Date().getTime(); + jsonStore.setValue(items[0],"updated",now); + jsonStore.setValue(items[0],"obj",{foo:'bar'}); + jsonStore.setValue(items[0],"obj dup",items[0].obj); + jsonStore.setValue(items[0],"testArray",[1,2,3,4]); + jsonStore.save(); + jsonStore.fetch({query:"obj1", + onComplete: function(item, request){ + t.is("Object 1", item.name); + t.is(now, item.updated); + t.is("bar", item.obj.foo); + t.is(item.obj, item['obj dup']); + d.callback(true); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + return d; //Object + } + }, + { + name: "Post, delete, and put", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // append/post an item, delete it, sort the lists, resort the list, saving each time. + var d = new doh.Deferred(); + jsonStore.fetch({query:"obj1", + onComplete: function(item, request){ + var now = new Date().getTime(); + var testArray = item.testArray; + var newObject = {"name":"new object"}; + testArray.push(newObject); + jsonStore.save(); + jsonStore.deleteItem(newObject,{parent:testArray}); + jsonStore.save(); + testArray.sort(function(obj1,obj2) { return obj1 < obj2; }); + jsonStore.save(); + testArray.sort(function(obj1,obj2) { return obj1 > obj2; }); + jsonStore.save(); + d.callback(true); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + return d; //Object + } + }, + { + name: "Revert", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // append/post an item, delete it, sort the lists, resort the list, saving each time. + var d = new doh.Deferred(); + jsonStore.fetch({query:"obj1", + onComplete: function(item, request){ + jsonStore.setValue(item,"name","new name"); + jsonStore.setValue(item,"newProp","new value"); + jsonStore.unsetAttribute(item,"updated"); + t.is(jsonStore.getValue(item,"name"),"new name"); + t.is(jsonStore.getValue(item,"newProp"),"new value"); + t.is(jsonStore.getValue(item,"updated"),undefined); + jsonStore.revert(); + t.is(jsonStore.getValue(item,"name"),"Object 1"); + t.is(jsonStore.getValue(item,"newProp"),undefined); + t.t(typeof jsonStore.getValue(item,"updated") == 'number'); + d.callback(true); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + return d; //Object + } + }, + { + name: "Lazy loading", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // test lazy loading + var d = new doh.Deferred(); + jsonStore.fetch({query:"query", + onComplete: function(items, request){ + /*var item = jsonStore.getValue(items,2); // sync lazy loading + t.is(item.name == 'Object 3');*/ + jsonStore.getValue(items,3,function(item) { // async lazy loading + t.is(item.name,'Object 4'); + d.callback(true); + }); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + return d; //Object + } + }, + { + name: "Array manipulation", + timeout: 10000, //10 seconds. + runTest: function(t) { + // summary: + // test array manipulation + var d = new doh.Deferred(); + jsonStore.fetch({query:"obj1", + onComplete: function(item, request){ + var testArray = item.testArray; + testArray.reverse(); + testArray.unshift(testArray.pop()); + jsonStore.onSave = function(data) { + t.is(data.length,1); + d.callback(true); + jsonStore.onSave = function(){}; + }; + jsonStore.save(); + }, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, doh, d)}); + return d; //Object + } + }, + + { + name: "ReadAPI: Fetch_20_Streaming", + timeout: 10000, //10 seconds. Json can sometimes be slow. + runTest: function(t) { + // summary: + // fetching with paging + + var d = new doh.Deferred(); + var count = 0; + + function onItem(item, requestObj){ + t.assertTrue(typeof item == 'number'); + count++; + } + function onComplete(items, request){ + t.is(5, count); + + t.is(null, items); + d.callback(true); + } + //Get everything... + jsonStore.fetch({ + query: "bigQuery", + onBegin: null, + count: 5, + onItem: onItem, + onComplete: onComplete, + onError: dojo.partial(dojox.rpc.tests.stores.JsonRestStore.error, t, d) + }); + return d; //Object + } + }, + function testReadAPI_functionConformance(t){ + // summary: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + // description: + // Simple test read API conformance. Checks to see all declared functions are actual functions on the instances. + + var readApi = new dojo.data.api.Read(); + var passed = true; + + for(i in readApi){ + if(i.toString().charAt(0) !== '_') + { + var member = readApi[i]; + //Check that all the 'Read' defined functions exist on the test store. + if(typeof member === "function"){ + var testStoreMember = jsonStore [i]; + if(!(typeof testStoreMember === "function")){ + passed = false; + break; + } + } + } + } + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojox/secure/DOM.js b/js/dojo-release-1.7.2-src/dojox/secure/DOM.js new file mode 100644 index 0000000..b1a4a93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/DOM.js @@ -0,0 +1,257 @@ +dojo.provide("dojox.secure.DOM"); +dojo.require("dojox.lang.observable"); + +dojox.secure.DOM = function(element){ + function safeNode(node){ + if(!node){ + return node; + } + var parent = node; + do { + if(parent == element){ + return wrap(node); + } + } while((parent = parent.parentNode)); + return null; + } + function wrap(result){ + if(result){ + if(result.nodeType){ + // wrap the node + var wrapped = nodeObserver(result); + if(result.nodeType == 1 && typeof wrapped.style == 'function'){ // if it is a function, that means it is holding a slot for us, now we will override it + wrapped.style = styleObserver(result.style); + wrapped.ownerDocument = safeDoc; + wrapped.childNodes = {__get__:function(i){ + return wrap(result.childNodes[i]); + }, + length:0 + }; + //TODO: maybe add attributes + } + return wrapped; + } + if(result && typeof result == 'object'){ + if(result.__observable){ + // we have already wrapped it, this helps prevent circular/infinite loops + return result.__observable; + } + // wrap the node list + wrapped = result instanceof Array ? [] : {}; + result.__observable = wrapped; + for(var i in result){ + if (i != '__observable'){ + wrapped[i] = wrap(result[i]); + } + } + wrapped.data__ = result; + + return wrapped; + } + if(typeof result == 'function'){ + var unwrap = function(result){ + if(typeof result == 'function'){ + // if untrusted code passes a function to trusted code, we want the trusted code to be + // able to execute it and have the arguments automatically wrapped + return function(){ + for (var i = 0; i < arguments.length; i++){ + arguments[i] = wrap(arguments[i]); + } + return unwrap(result.apply(wrap(this),arguments)); + } + } + return dojox.secure.unwrap(result); + }; + // when we wrap a function we make it so that we can untrusted code can execute + // the function and the arguments will be unwrapped for the trusted code + return function(){ + if(result.safetyCheck){ + result.safetyCheck.apply(unwrap(this),arguments); + } + for (var i = 0; i < arguments.length; i++){ + arguments[i] = unwrap(arguments[i]); + } + return wrap(result.apply(unwrap(this),arguments)); + } + } + } + return result; + } + unwrap = dojox.secure.unwrap; + + function safeCSS(css){ + css += ''; // make sure it is a string + if(css.match(/behavior:|content:|javascript:|binding|expression|\@import/)){ + throw new Error("Illegal CSS"); + } + var id = element.id || (element.id = "safe" + ('' + Math.random()).substring(2)); + return css.replace(/(\}|^)\s*([^\{]*\{)/g,function(t,a,b){ // put all the styles in the context of the id of the sandbox + return a + ' #' + id + ' ' + b; // need to remove body and html references something like: .replace(/body/g,''); but that would break mybody... + }); + } + function safeURL(url){ + // test a url to see if it is safe + if(url.match(/:/) && !url.match(/^(http|ftp|mailto)/)){ + throw new Error("Unsafe URL " + url); + } + } + function safeElement(el){ + // test an element to see if it is safe + if(el && el.nodeType == 1){ + if(el.tagName.match(/script/i)){ + var src = el.src; + if (src && src != ""){ + // load the src and evaluate it safely + el.parentNode.removeChild(el); + dojo.xhrGet({url:src,secure:true}).addCallback(function(result){ + safeDoc.evaluate(result); + }); + } + else{ + //evaluate the script safely and remove it + var script = el.innerHTML; + el.parentNode.removeChild(el); + wrap.evaluate(script); + } + } + if(el.tagName.match(/link/i)){ + throw new Error("illegal tag"); + } + if(el.tagName.match(/style/i)){ + var setCSS = function(cssStr){ + if(el.styleSheet){// IE + el.styleSheet.cssText = cssStr; + } else {// w3c + var cssText = doc.createTextNode(cssStr); + if (el.childNodes[0]) + el.replaceChild(cssText,el.childNodes[0]) + else + el.appendChild(cssText); + } + + } + src = el.src; + if(src && src != ""){ + alert('src' + src); + // try to load it by url and safely load it + el.src = null; + dojo.xhrGet({url:src,secure:true}).addCallback(function(result){ + setCSS(safeCSS(result)); + }); + } + setCSS(safeCSS(el.innerHTML)); + } + if(el.style){ + safeCSS(el.style.cssText); + } + if(el.href){ + safeURL(el.href); + } + if(el.src){ + safeURL(el.src); + } + var attr,i = 0; + while ((attr=el.attributes[i++])){ + if(attr.name.substring(0,2)== "on" && attr.value != "null" && attr.value != ""){ // must remove all the event handlers + throw new Error("event handlers not allowed in the HTML, they must be set with element.addEventListener"); + } + } + var children = el.childNodes; + for (var i =0, l = children.length; i < l; i++){ + safeElement(children[i]); + } + } + } + function safeHTML(html){ + var div = document.createElement("div"); + if(html.match(/ + + + +dojox.secure.fromJson = typeof JSON != "undefined" ? JSON.parse : +// summary: +// Parses a string of well-formed JSON text. +// description: +// Parses a string of well-formed JSON text. If the input is not well-formed, +// then behavior is undefined, but it is +// deterministic and is guaranteed not to modify any object other than its +// return value. +// +// This does not use `eval` so is less likely to have obscure security bugs than +// json2.js. +// It is optimized for speed, so is much faster than json_parse.js. +// +// This library should be used whenever security is a concern (when JSON may +// come from an untrusted source), speed is a concern, and erroring on malformed +// JSON is *not* a concern. +// +// json2.js is very fast, but potentially insecure since it calls `eval` to +// parse JSON data, so an attacker might be able to supply strange JS that +// looks like JSON, but that executes arbitrary javascript. +// +// To configure dojox.secure.fromJson as the JSON parser for all Dojo +// JSON parsing, simply do: +// | dojo.require("dojox.secure.fromJson"); +// | dojo.fromJson = dojox.secure.fromJson; +// or alternately you could configure dojox.secure.fromJson to only handle +// XHR responses: +// | dojo._contentHandlers.json = function(xhr){ +// | return dojox.secure.fromJson.fromJson(xhr.responseText); +// | }; +// +// json: String +// per RFC 4627 +// optReviver: Function (this:Object, string, *) +// optional function +// that reworks JSON objects post-parse per Chapter 15.12 of EcmaScript3.1. +// If supplied, the function is called with a string key, and a value. +// The value is the property of 'this'. The reviver should return +// the value to use in its place. So if dates were serialized as +// {@code { "type": "Date", "time": 1234 }}, then a reviver might look like +// {@code +// function (key, value) { +// if (value && typeof value === 'object' && 'Date' === value.type) { +// return new Date(value.time); +// } else { +// return value; +// } +// }}. +// If the reviver returns {@code undefined} then the property named by key +// will be deleted from its container. +// {@code this} is bound to the object containing the specified property. +// returns: {Object|Array} +(function () { + var number + = '(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)'; + var oneChar = '(?:[^\\0-\\x08\\x0a-\\x1f\"\\\\]' + + '|\\\\(?:[\"/\\\\bfnrt]|u[0-9A-Fa-f]{4}))'; + var string = '(?:\"' + oneChar + '*\")'; + + // Will match a value in a well-formed JSON file. + // If the input is not well-formed, may match strangely, but not in an unsafe + // way. + // Since this only matches value tokens, it does not match whitespace, colons, + // or commas. + var jsonToken = new RegExp( + '(?:false|true|null|[\\{\\}\\[\\]]' + + '|' + number + + '|' + string + + ')', 'g'); + + // Matches escape sequences in a string literal + var escapeSequence = new RegExp('\\\\(?:([^u])|u(.{4}))', 'g'); + + // Decodes escape sequences in object literals + var escapes = { + '"': '"', + '/': '/', + '\\': '\\', + 'b': '\b', + 'f': '\f', + 'n': '\n', + 'r': '\r', + 't': '\t' + }; + function unescapeOne(_, ch, hex) { + return ch ? escapes[ch] : String.fromCharCode(parseInt(hex, 16)); + } + + // A non-falsy value that coerces to the empty string when used as a key. + var EMPTY_STRING = new String(''); + var SLASH = '\\'; + + // Constructor to use based on an open token. + var firstTokenCtors = { '{': Object, '[': Array }; + + var hop = Object.hasOwnProperty; + + return function (json, opt_reviver) { + // Split into tokens + var toks = json.match(jsonToken); + // Construct the object to return + var result; + var tok = toks[0]; + var topLevelPrimitive = false; + if ('{' === tok) { + result = {}; + } else if ('[' === tok) { + result = []; + } else { + // The RFC only allows arrays or objects at the top level, but the JSON.parse + // defined by the EcmaScript 5 draft does allow strings, booleans, numbers, and null + // at the top level. + result = []; + topLevelPrimitive = true; + } + + // If undefined, the key in an object key/value record to use for the next + // value parsed. + var key; + // Loop over remaining tokens maintaining a stack of uncompleted objects and + // arrays. + var stack = [result]; + for (var i = 1 - topLevelPrimitive, n = toks.length; i < n; ++i) { + tok = toks[i]; + + var cont; + switch (tok.charCodeAt(0)) { + default: // sign or digit + cont = stack[0]; + cont[key || cont.length] = +(tok); + key = void 0; + break; + case 0x22: // '"' + tok = tok.substring(1, tok.length - 1); + if (tok.indexOf(SLASH) !== -1) { + tok = tok.replace(escapeSequence, unescapeOne); + } + cont = stack[0]; + if (!key) { + if (cont instanceof Array) { + key = cont.length; + } else { + key = tok || EMPTY_STRING; // Use as key for next value seen. + break; + } + } + cont[key] = tok; + key = void 0; + break; + case 0x5b: // '[' + cont = stack[0]; + stack.unshift(cont[key || cont.length] = []); + key = void 0; + break; + case 0x5d: // ']' + stack.shift(); + break; + case 0x66: // 'f' + cont = stack[0]; + cont[key || cont.length] = false; + key = void 0; + break; + case 0x6e: // 'n' + cont = stack[0]; + cont[key || cont.length] = null; + key = void 0; + break; + case 0x74: // 't' + cont = stack[0]; + cont[key || cont.length] = true; + key = void 0; + break; + case 0x7b: // '{' + cont = stack[0]; + stack.unshift(cont[key || cont.length] = {}); + key = void 0; + break; + case 0x7d: // '}' + stack.shift(); + break; + } + } + // Fail if we've got an uncompleted object. + if (topLevelPrimitive) { + if (stack.length !== 1) { throw new Error(); } + result = result[0]; + } else { + if (stack.length) { throw new Error(); } + } + + if (opt_reviver) { + // Based on walk as implemented in http://www.json.org/json2.js + var walk = function (holder, key) { + var value = holder[key]; + if (value && typeof value === 'object') { + var toDelete = null; + for (var k in value) { + if (hop.call(value, k) && value !== holder) { + // Recurse to properties first. This has the effect of causing + // the reviver to be called on the object graph depth-first. + + // Since 'this' is bound to the holder of the property, the + // reviver can access sibling properties of k including ones + // that have not yet been revived. + + // The value returned by the reviver is used in place of the + // current value of property k. + // If it returns undefined then the property is deleted. + var v = walk(value, k); + if (v !== void 0) { + value[k] = v; + } else { + // Deleting properties inside the loop has vaguely defined + // semantics in ES3 and ES3.1. + if (!toDelete) { toDelete = []; } + toDelete.push(k); + } + } + } + if (toDelete) { + for (var i = toDelete.length; --i >= 0;) { + delete value[toDelete[i]]; + } + } + } + return opt_reviver.call(holder, key, value); + }; + result = walk({ '': result }, ''); + } + + return result; + }; +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/secure/sandbox.js b/js/dojo-release-1.7.2-src/dojox/secure/sandbox.js new file mode 100644 index 0000000..033abe2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/sandbox.js @@ -0,0 +1,343 @@ +dojo.provide("dojox.secure.sandbox"); +dojo.require("dojox.secure.DOM"); +dojo.require("dojox.secure.capability"); +dojo.require("dojo.NodeList-fx"); +dojo.require("dojo._base.url"); + +(function() { + var oldTimeout = setTimeout; + var oldInterval = setInterval; + if({}.__proto__){ + // mozilla has unsafe methods on array + var fixMozArrayFunction = function (name) { + var method = Array.prototype[name]; + if(method && !method.fixed){ + (Array.prototype[name] = function () { + if (this == window) { + throw new TypeError("Called with wrong this"); + } + return method.apply(this, arguments); + }).fixed = true; + } + }; + // these are not safe in mozilla + fixMozArrayFunction('concat'); + fixMozArrayFunction('reverse'); + fixMozArrayFunction('sort'); + fixMozArrayFunction("slice"); + fixMozArrayFunction("forEach"); + fixMozArrayFunction("filter"); + fixMozArrayFunction("reduce"); + fixMozArrayFunction("reduceRight"); + fixMozArrayFunction("every"); + fixMozArrayFunction("map"); + fixMozArrayFunction("some"); + } + var xhrGet = function(){ + return dojo.xhrGet.apply(dojo,arguments); + }; + dojox.secure.sandbox = function(element) { + // summary: + // Creates a secure sandbox from which scripts and HTML can be loaded that + // will only be able to access the provided element and it's descendants, the + // rest of the DOM and JS environment will not be accessible to the sandboxed + // scripts and HTML. + // + // element: + // The DOM element to use as the container for the sandbox + // + // description: + // This function will create and return a sandbox object (see dojox.secure.__Sandbox) + // for the provided element. + var wrap = dojox.secure.DOM(element); + element = wrap(element); + var document = element.ownerDocument; + var mixin, dojo = dojox.secure._safeDojoFunctions(element,wrap); + var imports= []; + var safeCalls = ["isNaN","isFinite","parseInt","parseFloat","escape","unescape", + "encodeURI","encodeURIComponent","decodeURI","decodeURIComponent", + "alert","confirm","prompt", // some people may not want to allow these to be called, but they don't break capability-limiting + "Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError", + "Date","RegExp","Number","Object","Array","String","Math", + //"ADSAFE", // not using ADSAFE runtime for the time being + "setTimeout","setInterval","clearTimeout","clearInterval", // we make these safe below + "dojo","get","set","forEach","load","evaluate"]; + for(var i in dojo){ + safeCalls.push(i); // add the safe dojo functions to as available global top level functions + imports.push("var " + i + "=dojo." + i); // add to the list of imports + } + // open the dojo namespace (namespaces are pretty silly in an environment where you can't set globals) + eval(imports.join(";")); + function get(obj,prop) { + // basic access by index function + prop = '' + prop; + if(dojox.secure.badProps.test(prop)) { + throw new Error("bad property access"); + } + if(obj.__get__) { + return obj.__get__(prop); + } + return obj[prop]; + } + function set(obj,prop,value) { + // basic set by index function + prop = '' + prop; + get(obj,prop); // test it + if(obj.__set) { + return obj.__set(prop); + } + obj[prop] = value; + return value; + } + function forEach(obj,fun) { + // short syntax iterator function + if(typeof fun != "function"){ + throw new TypeError(); + } + if("length" in obj) { + // do arrays the fast way + if(obj.__get__) { + // use the catch getter + var len = obj.__get__('length'); + for (var i = 0; i < len; i++) { + if(i in obj) { + fun.call(obj, obj.__get__(i), i, obj); + } + } + } + else { + // fast + len = obj.length; + for (i = 0; i < len; i++) { + if(i in obj) { + fun.call(obj, obj[i], i, obj); + } + } + } + } + else { + // for each an object + for (i in obj) { + fun.call(obj, get(obj,i), i, obj); + } + } + } + function Class(/*Function*/superclass, /*Object*/properties, /*Object*/classProperties) { + // summary: + // A safe class constructor + // + // superclass: + // There may be zero or more superclass arguments. The constructed class + // will inherit from any provided superclasses, protypically from the first, + // via mixin for the subsequent. Later arguments + // will override properties/methods from earlier arguments + // + // properties: + // The constructed + // "class" will also have the methods/properties defined in this argument. + // These methods may utilize the this operator, and they + // are only the code that has access to this. Inner functions + // are also prohibited from using this. + // + // If no superclasses are provided, this object will be the prototype of the + // constructed class (no copying + // will be done). Consequently you can "beget" by calling new (Class(obj)). + // All methods are "bound", each call results in |this| safety checking call. + // + // classProperties: + // This properties will be copied to the new class function. + // + // Note that neither dojo.declare nor dojo.extend are acceptable class constructors as + // they are completely unsecure. This class constructor is conceptually based on declare + // but also somewhat influenced by base2, prototype, YUI, resig's patterns, etc. + // + // example: + // | var Car = Class({drive:function(speed) { ... } ); // create a Car class with a "drive" method + // | var FastCar = Class(Car,{driveFast: function(speed) { return this.drive(2 * speed); } }); // create a FastCar that extends Car + // | var fastCar = new FastCar; // instantiate + // | fastCar.driveFast(50); // call a method + // | var driveFast = fastCar.driveFast; + // | var driveFast(50); // this will throw an error, the method can be used with an object that is not an instance of FastCar + var proto,superConstructor,ourConstructor; + var arg; + for (var i = 0, l = arguments.length; typeof (arg = arguments[i]) == 'function' && i < l; i++) { + // go through each superclass argument + if(proto) { // we have a prototype now, we must mixin now + mixin(proto,arg.prototype); + } + else { + // this is the first argument, so we can define the prototype ourselves + // link up the prototype chain to the superclass's prototype, so we are a subtype + superConstructor = arg; + var F = function() {}; + F.prototype = arg.prototype; + proto = new F; + } + } + + if(arg) { // the next object should be the properties + // apply binding checking on all the functions + for (var j in arg) { + // TODO: check on non-enumerables? + var value = arg[j]; + if(typeof value == 'function') { + arg[j] = function() { + if(this instanceof Class){ + return arguments.callee.__rawMethod__.apply(this,arguments); + } + throw new Error("Method called on wrong object"); + }; + arg[j].__rawMethod__ = value; // may want to use this for reconstruction and toString,valueOf + } + } + if(arg.hasOwnProperty('constructor')) { + ourConstructor = arg.constructor; + } + } + proto = proto ? mixin(proto,arg) : arg; // if there is no proto yet, we can use the provided object + function Class() { + // the super class may not have been constructed using the same technique, we will just call the constructor + if(superConstructor){ + superConstructor.apply(this,arguments); + } + if(ourConstructor){ + ourConstructor.apply(this,arguments); + } + } + mixin(Class,arguments[i]); // the optional second object adds properties to the class + proto.constructor = Class; + Class.prototype = proto; + return Class; + } + function checkString(func){ + if(typeof func != 'function') { + throw new Error("String is not allowed in setTimeout/setInterval"); + } + } + function setTimeout(func,time) { + // sandboxed setTimeout + checkString(func); + return oldTimeout(func,time); + } + function setInterval(func,time) { + // sandboxed setInterval + checkString(func); + return oldInterval(func,time); + } + function evaluate(script){ + // sandboxed eval + return wrap.evaluate(script); + } + var load = wrap.load = function(url){ + // provides a loader function for the sandbox + if (url.match(/^[\w\s]*:/)){ + throw new Error("Access denied to cross-site requests"); + } + return xhrGet({url:(new dojo._Url(wrap.rootUrl,url))+'',secure:true}); + } + wrap.evaluate = function(script){ + //if(!alreadyValidated) { + dojox.secure.capability.validate(script,safeCalls, // the safe dojo library and standard operators + {document:1,element:1}); // these are secured DOM starting points + + //} + if(script.match(/^\s*[\[\{]/)) { + var result = eval('(' + script + ')'); + // TODO: call render on result? + } + else { + eval(script); + } + //eval('wrap.evaluate=('+arguments.callee.toString()+')'); // yeah, recursive scoping; + }; + return /*===== dojo.declare("dojox.secure.__Sandbox", null, =====*/ { // dojox.secure.__Sandbox + loadJS : function(url){ + // summary: + // Loads the script from the given URL using XHR (assuming + // a plugin system is in place for cross-site requests) within the sandbox + // + // url: + // The url of the script to load + wrap.rootUrl = url; + return xhrGet({url:url,secure:true}).addCallback(function(result) { + evaluate(result,element /*If we get the results with a secure proxy, we would call put true here */); + }); + }, + loadHTML : function(url){ + // summary: + // Loads the web page from the provided URL using XHR (assuming the + // plugin system is in place) within the sandbox. All scripts within the web + // page will also be sandboxed. + // + // url: + // The url of the web page to load + + wrap.rootUrl = url; + return xhrGet({url:url,secure:true}).addCallback(function(result){ + element.innerHTML = result; + }); + }, + evaluate : function(script){ + // summary: + // Evaluates the given script within the sandbox + // + // script: + // The JavaScript text to evaluate + return wrap.evaluate(script); + } + // TODO: could add something for pre-validated scripts + }/*===== ) =====*/; + }; +})(); +dojox.secure._safeDojoFunctions = function(element,wrap) { + // Creates a safe subset of Dojo core library + var safeFunctions = ["mixin","require","isString","isArray","isFunction","isObject","isArrayLike","isAlien", + "hitch","delegate","partial","trim","disconnect","subscribe","unsubscribe","Deferred","toJson","style","attr"]; + //var domFunctions = ["clone","byId"]; + var doc = element.ownerDocument; + var unwrap = dojox.secure.unwrap; + dojo.NodeList.prototype.addContent.safetyCheck = function(content){ + wrap.safeHTML(content); + }; + dojo.NodeList.prototype.style.safetyCheck = function(name,value){ + if(name=='behavior'){ + throw new Error("Can not set behavior"); + } + wrap.safeCSS(value); + }; + dojo.NodeList.prototype.attr.safetyCheck = function(name,value){ + if (value && (name == 'src' || name == 'href' || name=='style')){ + throw new Error("Illegal to set " + name); + } + }; + var safe = { + query : function(query,root) { + return wrap(dojo.query(query,unwrap(root || element))); // wrap the NodeList + }, + connect: function(el,event) { + var obj = el; + arguments[0] = unwrap(el); + if(obj!=arguments[0] && event.substring(0,2) != 'on'){ + // it is probably an element, and it doesn't look like an event handler, probably not safe + throw new Error("Invalid event name for element"); + } + return dojo.connect.apply(dojo,arguments); + }, + body : function() { + return element; + }, + byId : function(id) { + return element.ownerDocument.getElementById(id); // use the safe document + }, + fromJson : function(str) { + // make sure it is safe before passing it to the unsafe dojo.fromJson + dojox.secure.capability.validate(str,[],{}); + return dojo.fromJson(str); + } + }; + for (var i = 0; i < safeFunctions.length; i++) { + safe[safeFunctions[i]] = dojo[safeFunctions[i]]; + } + return safe; +}; + diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/DOM.js b/js/dojo-release-1.7.2-src/dojox/secure/tests/DOM.js new file mode 100644 index 0000000..e0c571c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/DOM.js @@ -0,0 +1,183 @@ +dojo.provide("dojox.secure.tests.DOM"); +dojo.require("dojox.secure.DOM"); + +doh.register("dojox.secure.tests.DOM.good", + [ + function setup(){ + var div = document.createElement("div"); + document.body.appendChild(div); + div.innerHTML = "Sandboxed div:"; + div.style.position = "absolute"; + div.style.top = "100px"; + div.style.left = "100px"; + div.style.backgroundColor = "red"; + div.style.color = "white"; + var container = document.createElement("div"); + container.style.backgroundColor = "cyan"; + container.style.color = "black"; + div.appendChild(container); + wrap = dojox.secure.DOM(container); + securedElement = wrap(container); + console.log("securedElement",securedElement); + securedDoc = securedElement.ownerDocument; + console.log("securedDoc",securedDoc); + }, + function innerHTML(t){ + securedElement.innerHTML = "Hi there"; + t.assertEqual("Hi there",securedElement.data__.innerHTML); + }, + function docWrite(t){ + securedDoc.write("
                                                                      written
                                                                      "); + console.log("wrote"); + securedDoc.close(); + t.t(securedElement.data__.innerHTML.match(/written/)); + }, + function addNode(t){ + var newDiv = securedDoc.createElement("div"); + console.log("wrapped ",newDiv.data__); + newDiv.innerHTML = "inner div"; + console.log("style ",newDiv.style.data__); + newDiv.style.color="blue"; + console.log('appendChild ' + securedElement.appendChild); + securedElement.appendChild(newDiv); + t.t(securedElement.data__.innerHTML.match(/inner/)); + }, + /*function addStyleTag(t){ + securedElement.innerHTML = "
                                                                      should be green
                                                                      "; + console.log('after style tag' + securedElement.innerHTML); + t.t(securedElement.innerHTML.match(/color/)); + },*/ + function addOnclickHandler(t){ + securedElement.addEventListener("click",function(event) { + alert('proper click handler'); + }); + + } + ]); + +function violater(func) { + return {name: func.name, + runTest: function(t) { + var insecure; + try { + func(t); + insecure = true; + }catch(e){ + console.log("successfully threw error",e); + } + t.f(insecure); + }}; +} +doh.register("dojox.secure.tests.DOM.bad", + [ + function parentNode(t){ + t.f(securedElement.parentNode); + }, + function innerHTMLScript(t){ + try { + securedElement.innerHTML = ""; + }catch(e){} + t.t(typeof bad == 'undefined'); + }, + function innerHTMLScript2(t){ + try{ + securedElement.innerHTML = '"); + }catch(e){} + t.t(typeof bad == 'undefined'); + }, + function appendScript(t){ + try { + var script = securedDoc.createElement('script'); + script.appendChild(securedDoc.createTextNode( + 'bad=true')); + securedElement.appendChild(script); + } + catch(e) { + + } + t.t(typeof bad == 'undefined'); + }, + function cssExpression(t) { + if (dojo.isIE) { + securedElement.innerHTML = '
                                                                      Example DIV
                                                                      '; + t.t(typeof bad == 'undefined'); + } + else { + try{ + securedElement.innerHTML = ''; + }catch(e){} + + t.f(securedElement.innerHTML.match(/mozilla/)) + } + + }, + function cssExpression2(t) { + if (dojo.isIE) { + securedElement.style.left = 'expression(alert("hello"), 0)'; + t.f(securedElement.style.left.match(/alert/)); + } + else { + try { + securedElement.style.MozBinding = 'url("http://www.mozilla.org/xbl/htmlBindings.xml#checkbox")'; + }catch(e){} + + } + }, + function cssExpression3(t) { + if (dojo.isIE) { + securedElement.style.behavior = 'url(a1.htc)'; + t.f(securedElement.style.behavior); + } + else { + + } + }, + /*violater(function addStyleTag(t) { + securedElement.innerHTML = "
                                                                      test
                                                                      "; + }), + violater(function addStyleTag2(t) { + securedElement.innerHTML = "
                                                                      unsafe css
                                                                      "; + }),*/ + function addJavaScriptHref(t) { + securedElement.innerHTML = "illegal link"; + }, + /*violater(function addNullCharSrc(t) { + securedElement.innerHTML = "illegal link"; + }),*/ + function addOnclickHandler(t) { + try{ + securedElement.innerHTML = "
                                                                      illegal link
                                                                      "; + }catch(e){} + + t.f(securedElement.innerHTML.match(/alert/)); + }, + function confusingHTML(t) { + try { + securedElement.innerHTML = '
                                                                      ">
                                                                      '; + }catch(e){} + + t.f(securedElement.innerHTML.match(/alert/)); + }, + function confusingHTML2(t) { + try { + securedElement.innerHTML = ''; + }catch(e){} + + t.f(securedElement.innerHTML.match(/alert/)); + }, + function confusingHTML2(t) { + try{ + securedElement.innerHTML = ''; + }catch(e){} + + t.f(securedElement.innerHTML.match(/alert/)); + } + + ]); + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/bad.html b/js/dojo-release-1.7.2-src/dojox/secure/tests/bad.html new file mode 100644 index 0000000..202498a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/bad.html @@ -0,0 +1,18 @@ + + + + dojox.grid.Grid with Dojo.Data via binding + + + + + This is a sandboxed paged with a bad script. + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/bad.js b/js/dojo-release-1.7.2-src/dojox/secure/tests/bad.js new file mode 100644 index 0000000..4cce072 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/bad.js @@ -0,0 +1,2 @@ +element.innerHTML = "Only doing things I am not allowed to do"; +alert(this); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/fromJson.js b/js/dojo-release-1.7.2-src/dojox/secure/tests/fromJson.js new file mode 100644 index 0000000..9fde27f --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/fromJson.js @@ -0,0 +1,150 @@ +dojo.provide("dojox.secure.tests.fromJson"); + +dojo.require("dojox.secure.fromJson"); + +var smallDataSet = { + prop1: null, + prop2: true, + prop3: [], + prop4: 3.4325222223332266, + prop5: 10003, + prop6: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper", + prop7: "sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum", + prop8: "lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus", + prop9: "venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie", + prop10: "tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus." + + "Aliquam vitae enim. Duis scelerisque metus auctor est venenatis imperdiet." + + "Fusce dignissim porta augue. Nulla vestibulum. Integer lorem nunc," + + "ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in massa" + + "bibendum suscipit. Integer eros. Nullam suscipit mauris. In pellentesque." + + "Mauris ipsum est, pharetra semper, pharetra in, viverra quis, tellus. Etiam" + + "purus. Quisque egestas, tortor ac cursus lacinia, felis leo adipiscing" + + "nisi, et rhoncus elit dolor eget eros. Fusce ut quam. Suspendisse eleifend" + + "leo vitae ligula. Nulla facilisi." +}; +var smallJson = dojo.toJson(smallDataSet); + +var i, mediumDataSet = []; +for(i = 0; i < 20; i++){ + mediumDataSet.push({ + prop1: null, + prop2: true, + prop3: false, + prop4: 3.4325222223332266 - i, + prop5: 10003 + i, + prop6: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper", + prop7: "sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum", + prop8: "lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus", + prop9: "venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie", + prop10: "tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus." + + "Aliquam vitae enim." + }); +} +var mediumJson = dojo.toJson(mediumDataSet); + +var largeDataSet = []; +for(i = 0; i < 100; i++){ + largeDataSet.push({ + prop1: null, + prop2: true, + prop3: false, + prop4: 3.4325222223332266 - i, + prop5: ["Mauris ipsum est, pharetra semper, pharetra in, viverra quis, tellus. Etiam" + + "purus. Quisque egestas, tortor ac cursus lacinia, felis leo adipiscing", + "nisi, et rhoncus elit dolor eget eros. Fusce ut quam. Suspendisse eleifend" + + "leo vitae ligula. Nulla facilisi." + ], + prop6: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean semper", + prop7: "sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin porta rutrum", + prop8: "lacus. Etiam consequat scelerisque quam. Nulla facilisi. Maecenas luctus", + prop9: "venenatis nulla. In sit amet dui non mi semper iaculis. Sed molestie", + prop10: "tortor at ipsum. Morbi dictum rutrum magna. Sed vitae risus." + + "Aliquam vitae enim. Duis scelerisque metus auctor est venenatis imperdiet." + + "Fusce dignissim porta augue. Nulla vestibulum. Integer lorem nunc," + + "ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in massa" + + "bibendum suscipit. Integer eros. Nullam suscipit mauris. In pellentesque." + }); +} +var largeJson = dojo.toJson(largeDataSet); + + +doh.register("dojox.secure.tests.fromJson", + [ + function small(){ + for(var i = 0;i < 1000;i++){ + dojox.secure.fromJson(smallJson); + } + }, + function medium(){ + for(var i = 0;i < 100;i++){ + dojox.secure.fromJson(mediumJson); + } + }, + function large(){ + for(var i = 0;i < 100;i++){ + dojox.secure.fromJson(largeJson); + } + }, + function smallUnsecure(){ + for(var i = 0;i < 1000;i++){ + dojo.fromJson(smallJson); + } + }, + function mediumUnsecure(){ + for(var i = 0;i < 100;i++){ + dojo.fromJson(mediumJson); + } + }, + function largeUnsecure(){ + for(var i = 0;i < 100;i++){ + dojo.fromJson(largeJson); + } + }, + function smallNative(){ + for(var i = 0;i < 1000;i++){ + JSON.parse(smallJson); + } + }, + function mediumNative(){ + for(var i = 0;i < 100;i++){ + JSON.parse(mediumJson); + } + }, + function largeNative(){ + for(var i = 0;i < 100;i++){ + JSON.parse(largeJson); + } + }, + function smallJson2(){ + for(var i = 0;i < 1000;i++){ + json2.parse(smallJson); + } + }, + function mediumJson2(){ + for(var i = 0;i < 100;i++){ + json2.parse(mediumJson); + } + }, + function largeJson2(){ + for(var i = 0;i < 100;i++){ + json2.parse(largeJson); + } + }, + function smallJsonParse(){ + for(var i = 0;i < 100;i++){ + json_parse(smallJson); + } + }, + function mediumJsonParse(){ + for(var i = 0;i < 10;i++){ + json_parse(mediumJson); + } + }, + function largeJsonParse(){ + for(var i = 0;i < 10;i++){ + json_parse(largeJson); + } + } + ] +); + diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/good.html b/js/dojo-release-1.7.2-src/dojox/secure/tests/good.html new file mode 100644 index 0000000..df2de73 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/good.html @@ -0,0 +1,19 @@ + + + + dojox.grid.Grid with Dojo.Data via binding + + + + + This is sandboxed with a script. + + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/good.js b/js/dojo-release-1.7.2-src/dojox/secure/tests/good.js new file mode 100644 index 0000000..9730d94 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/good.js @@ -0,0 +1,2 @@ +element.innerHTML = "Only doing things I am allowed to do"; +query("b").style("color","red"); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/load.html b/js/dojo-release-1.7.2-src/dojox/secure/tests/load.html new file mode 100644 index 0000000..eea29c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/load.html @@ -0,0 +1,216 @@ + + + + dojox.secure.sandbox Test Page + + + + + + + +
                                                                      dojox.secure.sandbox Tester
                                                                      +

                                                                      + This a test page for dojox.secure.sandbox. dojox.secure.sandbox is intended to safely execute + untrusted scripts, and allow the scripts to access only a certain sub-tree of the DOM. + Eventually, this can be used to safely load ads and untrusted widgets. + All attempts to subvert the security of this system + are greatly appreciated. If you find any holes, any ways that you can access the DOM or the + JavaScript environment outside of the sandbox, please add a comment to the + enhancement ticket. To test secure load, + simply enter JavaScript in the text box below and click execute. The JavaScript should only + have access to the DOM within the floating div below. The sandbox element is available + as the element variable from within the sandboxed JavaScript. Please see below + for more detailed instructions on what facilities are available within the sandbox. +

                                                                      +
                                                                      Sandboxed div:
                                                                      +
                                                                      + Note that these require a proxy file in order to load: +
                                                                      + +
                                                                      +
                                                                      +
                                                                      +

                                                                      The JavaScript in the sandbox generally follows the rules of ADsafe:

                                                                      +
                                                                        +
                                                                      • Use of eval, with, ==, and != are not allowed.
                                                                      • +
                                                                      • the subscript operator [] may only be used be used if the opening bracket is followed by a +.
                                                                      • + +
                                                                      • Limited access to this and global variables.
                                                                      • +
                                                                      • These properties may not be used: apply arguments call callee caller constructor eval prototype + this unwatch valueOf watch and anything beginning or ending with __.
                                                                      • +
                                                                      +

                                                                      The following global variables are accessible: +

                                                                        +
                                                                      • element - This the root element of the sandbox. Sandboxed elements do not have + access to relational properties (parentNode, firstSibling, nextSibling, etc.). You can still + use DOM methods and string properties like innerHTML. The style object can also be + used (accessed and modified) as well.
                                                                      • +
                                                                      • document - This is a sandboxed document object that provides node creation + and basic element searching facilities. The sandboxed document provides the following + methods: getElementById, createElement, createTextNode, and write. +
                                                                      • +
                                                                      +

                                                                      + The following standard JavaScript/DOM functions/constructors and (their child functions when applicable) + may be called. They may only be used in call position, they may not be accessed + in any other way. They generally behave as the standard JavaScript function, unless otherwise noted: +

                                                                      +
                                                                        +
                                                                      • isNaN
                                                                      • isFinite
                                                                      • parseInt
                                                                      • parseFloat
                                                                      • escape
                                                                      • unescape
                                                                      • +
                                                                      • encodeURI
                                                                      • encodeURIComponent
                                                                      • decodeURI
                                                                      • decodeURIComponent
                                                                      • +
                                                                      • alert
                                                                      • confirm
                                                                      • prompt
                                                                      • +
                                                                      • Date
                                                                      • RegExp
                                                                      • Error
                                                                      • Number
                                                                      • Math
                                                                      • +
                                                                      • setTimeout - This will only accept a function (not a string)
                                                                      • setInterval - This will only accept a function (not a string)
                                                                      • clearTimeout
                                                                      • clearInterval
                                                                      • +
                                                                      + The following special functions are available to compensate for the JavaScript syntax limitations imposed by the sandbox: +
                                                                        +
                                                                      • get(obj,prop) - This is a special function to handle accessing properties in lieu of the [] operator. Calling get(obj,prop) is equivalent to obj[prop].
                                                                      • +
                                                                      • set(obj,prop,value) - This is a special function to handle modifying properties in lieu of the [] operator. Calling set(obj,prop,value) is equivalent to obj[prop]=value.
                                                                      • +
                                                                      • forEach(obj,func) - This is a special function to iterate through all the properties in an object, or items in an array. + For each item, the func function will be called with the item as the first argument, the index as the second, + and the obj as the third
                                                                      • +
                                                                      • Class(superclass..., properties, classProperties) - + The this operator may only be used in class definitions. secure.sandbox provides Class as a + class constructor. The following argument are accepted: +
                                                                          +
                                                                        • superclass: + There may be zero or more superclass arguments. The constructed class + will inherit from any provided superclasses, protypically from the first, + via mixin for the subsequent. Later arguments + will override properties/methods from earlier arguments +
                                                                        • +
                                                                        • + properties: + The constructed + "class" will also have the methods/properties defined in this argument. + These methods may utilize the this operator, and they + are only the code that has access to this. Inner functions + are also prohibited from using this. + If no superclasses are provided, this object will be the prototype of the + constructed class (no copying + will be done). Consequently you can "beget" by calling new (Class(obj)). + All methods are "bound", each call results in |this| safety checking call. +
                                                                        • +
                                                                        • + classProperties: + This properties will be copied to the new class function. + +
                                                                        • +
                                                                        + Note that neither dojo.declare nor dojo.extend are acceptable class constructors as + they are unsecure. This class constructor is conceptually based on declare + but also somewhat influenced by base2, prototype, YUI, resig's patterns, etc. +
                                                                      • +
                                                                      + The following functions for DOM manipulation and extra language features are + provided by the Dojo library. This represents a safe subset of Dojo. All Dojo library + functions are provided as top level functions, + namespacing is unnecessary because scripts do have access to modify the global object, + and can't define global variables. Thus, you can call Dojo functions directly, for example you + can call mixin(obj,mixinObj). You may also use the traditional syntax (dojox.mixin(...)). + Here are a list of available functions: +
                                                                        +
                                                                      • mixin
                                                                      • require
                                                                      • isString
                                                                      • isArray
                                                                      • isFunction
                                                                      • +
                                                                      • isObject
                                                                      • isArrayLike
                                                                      • isAlien
                                                                      • hitch
                                                                      • delegate
                                                                      • +
                                                                      • partial
                                                                      • trim
                                                                      • connect
                                                                      • disconnect
                                                                      • subscribe
                                                                      • +
                                                                      • unsubscribe
                                                                      • Deferred
                                                                      • toJson
                                                                      • fromJson
                                                                      • style
                                                                      • attr
                                                                      • +
                                                                      • query - This will only search within the sandbox.
                                                                      • byId
                                                                      • body - This returns the root element of the sandbox
                                                                      • + +
                                                                      +
                                                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/secure/tests/sandbox.js b/js/dojo-release-1.7.2-src/dojox/secure/tests/sandbox.js new file mode 100644 index 0000000..9995fbd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/secure/tests/sandbox.js @@ -0,0 +1,119 @@ +dojo.provide("dojox.secure.tests.sandbox"); + +doh.register("dojox.secure.tests.sandbox.good", + [ + function setup(){ + var div = document.createElement("div"); + document.body.appendChild(div); + div.innerHTML = "Sandboxed div:"; + div.style.position = "absolute"; + div.style.top = "100px"; + div.style.left = "100px"; + div.style.backgroundColor = "red"; + div.style.color = "white"; + container = document.createElement("div"); + container.style.backgroundColor = "cyan"; + container.style.color = "black"; + div.appendChild(container); + }, + function innerHTML(t){ + dojox.secure.evaluate("element.innerHTML = 'Hi there';",container); + t.assertEqual("Hi there",container.innerHTML); + }, + function docWrite(t){ + dojox.secure.evaluate("document.write(\"
                                                                      written
                                                                      \");",container); + t.t(container.innerHTML.match(/written/)); + } + ]); + +function violater(func) { + return {name: func.name, + runTest: function(t) { + var insecure; + try { + func(t); + insecure = true; + }catch(e){ + console.log("successfully threw error",e); + } + t.f(insecure); + }}; +} +doh.register("dojox.secure.tests.sandbox.bad", + [ + function parentNode(t){ + t.f(dojox.secure.evaluate("document.body",container)); + }, + function innerHTMLScript(t){ + try { + dojox.secure.evaluate("bad = true",container); + }catch(e){} + t.t(typeof bad == 'undefined'); + } + /*function innerHTMLScript2(t){ + try{ + securedElement.innerHTML = '"); + }catch(e){} + t.t(typeof bad == 'undefined'); + }, + function appendScript(t){ + try { + var script = securedDoc.createElement('script'); + script.appendChild(securedDoc.createTextNode( + 'bad=true')); + securedElement.appendChild(script); + } + catch(e) { + + } + t.t(typeof bad == 'undefined'); + }, + function cssExpression(t) { + if (dojo.isIE) { + securedElement.innerHTML = '
                                                                      Example DIV
                                                                      '; + t.t(typeof bad == 'undefined'); + } + else { + try{ + securedElement.innerHTML = ''; + }catch(e){} + + t.f(securedElement.innerHTML.match(/mozilla/)) + } + + }, + function cssExpression2(t) { + if (dojo.isIE) { + securedElement.style.left = 'expression(alert("hello"), 0)'; + t.f(securedElement.style.left.match(/alert/)); + } + else { + try { + securedElement.style.MozBinding = 'url("http://www.mozilla.org/xbl/htmlBindings.xml#checkbox")'; + }catch(e){} + + } + }, + function cssExpression3(t) { + if (dojo.isIE) { + securedElement.style.behavior = 'url(a1.htc)'; + t.f(securedElement.style.behavior); + } + else { + + } + }, + violater(function addStyleTag(t) { + securedElement.innerHTML = "
                                                                      test
                                                                      "; + }), + violater(function addStyleTag2(t) { + securedElement.innerHTML = "
                                                                      unsafe css
                                                                      "; + })*/ + ]); + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/sketch.js b/js/dojo-release-1.7.2-src/dojox/sketch.js new file mode 100644 index 0000000..0fd903c --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch.js @@ -0,0 +1,11 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "./xml/DomParser", + "./sketch/UndoStack", + "./sketch/Figure", + "./sketch/Toolbar" +], function(dojo){ + dojo.getObject("sketch", true, dojox); + return dojox.sketch; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/Anchor.js b/js/dojo-release-1.7.2-src/dojox/sketch/Anchor.js new file mode 100644 index 0000000..3a22544 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/Anchor.js @@ -0,0 +1,69 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "../gfx" +], function(dojo){ + dojo.getObject("sketch", true, dojox); + + dojox.sketch.Anchor=function(an, id, isControl){ + var self=this; + var size=4; // .5 * size of anchor. + var rect=null; + + this.type=function(){ return "Anchor"; }; + this.annotation=an; + + this.id=id; + this._key="anchor-" + dojox.sketch.Anchor.count++; + this.shape=null; + this.isControl=(isControl!=null)?isControl:true; + + this.beginEdit=function(){ + this.annotation.beginEdit(dojox.sketch.CommandTypes.Modify); + }; + this.endEdit=function(){ + this.annotation.endEdit(); + }; + this.zoom=function(pct){ + if(this.shape){ + var rs=Math.floor(size/pct); + var width=dojox.gfx.renderer=='vml'?1:1/pct + this.shape.setShape({ x:an[id].x-rs, y:an[id].y-rs, width:rs*2, height:rs*2 }).setStroke({ color:"black", width:width }); //For IE, maybe we need Math.ceil(1/pct)||1 + } + } + /*this.doChange=function(pt){ + if(this.isControl){ + this.shape.applyTransform(pt); + } else{ + an.transform.dx+=pt.dx; + an.transform.dy+=pt.dy; + } + };*/ + this.setBinding=function(pt){ + an[id]={ x: an[id].x+pt.dx, y:an[id].y+pt.dy }; + an.draw(); + an.drawBBox(); + }; + this.setUndo=function(){ an.setUndo(); }; + + this.enable=function(){ + if(!an.shape){ return; } + an.figure._add(this); + rect={ x:an[id].x-size, y:an[id].y-size, width:size*2, height:size*2 }; + this.shape=an.shape.createRect(rect) + //.setStroke({ color:"black", width:1 }) + .setFill([255,255,255,0.35]); + this.shape.getEventSource().setAttribute("id", self._key); + this.shape.getEventSource().setAttribute("shape-rendering", "crispEdges"); + this.zoom(an.figure.zoomFactor); + }; + this.disable=function(){ + an.figure._remove(this); + if(an.shape){ an.shape.remove(this.shape); } + this.shape=null; + rect=null; + }; + }; + dojox.sketch.Anchor.count=0; + return dojox.sketch.Anchor; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/Annotation.js b/js/dojo-release-1.7.2-src/dojox/sketch/Annotation.js new file mode 100644 index 0000000..23d76dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/Annotation.js @@ -0,0 +1,275 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/declare", + "dojo/_base/json", + "./Anchor", + "./_Plugin" +], function(dojo){ + dojo.declare("dojox.sketch.AnnotationTool", dojox.sketch._Plugin, { + onMouseDown: function(e){ + this._omd=true; + }, + onMouseMove: function(e,rect){ + if(!this._omd){ + return; + } + if(this._cshape){ + this._cshape.setShape(rect); + } else { + this._cshape=this.figure.surface.createRect(rect) + .setStroke({color:"#999", width:1, style:"ShortDot"}) + .setFill([255,255,255,0.7]); + this._cshape.getEventSource().setAttribute("shape-rendering","crispEdges"); + } + }, + onMouseUp: function(e){ + if(!this._omd){ + return; + } + this._omd=false; + var f=this.figure; + if(this._cshape){ + f.surface.remove(this._cshape); + delete this._cshape; + } + if(!(f._startPoint.x==e.pageX&&f._startPoint.y==e.pageY)){ + // The minimum number of pixels one has to travel before a shape + // gets drawn. + var limit=10; + if(Math.max( + limit, + Math.abs(f._absEnd.x-f._start.x), + Math.abs(f._absEnd.y-f._start.y) + )>limit){ + this._create(f._start, f._end); + } + } + }, + _create: function(start,end){ + // create a new shape, needs to be accessible from the + // dragging functions. + var f=this.figure; + var _=f.nextKey(); + var a=new (this.annotation)(f, _); + a.transform={ + dx:f._calCol(start.x/f.zoomFactor), + dy:f._calCol(start.y/f.zoomFactor) + }; + a.end={ + x:f._calCol(end.x/f.zoomFactor), + y:f._calCol(end.y/f.zoomFactor) + }; + if(a.control){ + a.control={ + x:f._calCol((end.x/2)/f.zoomFactor), + y:f._calCol((end.y/2)/f.zoomFactor) + }; + } + f.onBeforeCreateShape(a); + a.initialize(); + f.select(a); + f.onCreateShape(a); + f.history.add(dojox.sketch.CommandTypes.Create,a); + } + }); + + dojox.sketch.Annotation=function(figure, id){ + // for editing stuff. + this.id=this._key=id; + this.figure=figure; + this.mode=dojox.sketch.Annotation.Modes.View; + this.shape=null; // dojox.gfx.Group + this.boundingBox=null; // rect for boundaries + this.hasAnchors=true; + this.anchors={}; // dojox.sketch.Anchor + this._properties={ + 'stroke':{ color:"blue", width:2 }, + 'font': {family:"Arial", size:16, weight:"bold"}, + 'fill': "blue", + 'label': "" + }; + + if(this.figure){ + this.figure.add(this); + } + }; + + var p=dojox.sketch.Annotation.prototype; + p.constructor=dojox.sketch.Annotation; + p.type=function(){ return ''; }; + p.getType=function(){ return dojox.sketch.Annotation; }; + p.onRemove=function(noundo){ + //this.figure._delete([this],noundo); + this.figure.history.add(dojox.sketch.CommandTypes.Delete, this, this.serialize()); + }; + p.property=function(name,/*?*/value){ + var r; + name=name.toLowerCase(); + if(this._properties[name]!==undefined){ + r=this._properties[name]; + } + if(arguments.length>1){ + this._properties[name]=value; + if(r!=value){ + this.onPropertyChange(name,r); + } + } + return r; + }; + p.onPropertyChange=function(name,oldvalue){}; + p.onCreate=function(){ + this.figure.history.add(dojox.sketch.CommandTypes.Create,this); + } + p.onDblClick=function(e){ + var l=prompt('Set new text:',this.property('label')); + if(l!==false){ + this.beginEdit(dojox.sketch.CommandTypes.Modify); + this.property('label',l); + this.draw(); + this.endEdit(); + } + } + p.initialize=function(){ }; + p.destroy=function(){ }; + p.draw=function(){ }; + p.apply=function(obj){ }; + p.serialize=function(){ }; + p.getBBox=function(){ }; + p.beginEdit=function(type){ + if(!this._type){ + this._type=type||dojox.sketch.CommandTypes.Move; + this._prevState=this.serialize(); + } + }; + p.endEdit=function(){ + if(this._prevState!=this.serialize()){ + this.figure.history.add(this._type,this,this._prevState); + } + this._type=this._prevState=''; + }; + p.calculate={ + slope:function(p1, p2){ + if(!(p1.x-p2.x)){ return 0; } + return ((p1.y-p2.y)/(p1.x-p2.x)); + }, + dx:function(p1, p2, dy){ + var s=this.slope(p1,p2); + if(s==0){ return s; } + return dy/s; + }, + dy:function(p1, p2, dx){ + return this.slope(p1,p2)*dx; + } + }; + p.drawBBox=function(){ + var r=this.getBBox(); + if(!this.boundingBox){ + this.boundingBox=this.shape.createRect(r) + .moveToBack() + .setStroke({color:"#999", width:1, style:"Dash"}) + .setFill([238,238,238,0.3]); + this.boundingBox.getEventSource().setAttribute("id",this.id+"-boundingBox"); + this.boundingBox.getEventSource().setAttribute("shape-rendering","crispEdges"); + this.figure._add(this); + } else { + this.boundingBox.setShape(r); + } + }; + p.setBinding=function(pt){ + this.transform.dx+=pt.dx; + this.transform.dy+=pt.dy; + this.draw(); + }; + //p.doChange=function(pt){ }; + p.getTextBox=function(zoomfactor){ + var fp=this.property('font'); + //_getTextBox expect style camlCase properties, do it manually here + var f = {fontFamily:fp.family,fontSize:fp.size,fontWeight:fp.weight}; + if(zoomfactor){ + f.fontSize = Math.floor(f.fontSize/zoomfactor); + } + return dojox.gfx._base._getTextBox(this.property('label'),f); + }; + p.setMode=function(m){ + if(this.mode==m){ return; } + this.mode=m; + var method="disable"; + if(m==dojox.sketch.Annotation.Modes.Edit){ method="enable"; } + if(method=="enable"){ + // draw the bounding box + this.drawBBox(); + this.figure._add(this); + } else { + if(this.boundingBox){ + if(this.shape){ this.shape.remove(this.boundingBox); } + this.boundingBox=null; + } + } + for(var p in this.anchors){ + this.anchors[p][method](); + } + }; + p.zoom=function(pct){ + pct = pct || this.figure.zoomFactor; + if(this.labelShape){ + var f=dojo.clone(this.property('font')); + f.size=Math.ceil(f.size/pct)+"px"; + this.labelShape.setFont(f); + } + + for(var n in this.anchors){ + this.anchors[n].zoom(pct); + } + + //In VML, path are always the same width no matter scaling factors, + //so aways use 1 for VML + if(dojox.gfx.renderer=='vml'){ + pct=1; + } + if(this.pathShape){ + var s=dojo.clone(this.property('stroke')); + s.width=pct>1?s.width:Math.ceil(s.width/pct)+"px"; + this.pathShape.setStroke(s); + } + }; + p.writeCommonAttrs=function(){ + return 'id="' + this.id + '" dojoxsketch:type="' + this.type() + '"' + + ' transform="translate('+ this.transform.dx + "," + this.transform.dy + ')"' + + (this.data?(' >1?20:Math.floor(20/pct), w=pct>1?5:Math.floor(5/pct),h=pct>1?3:Math.floor(3/pct); + this.startArrow.setShape("M0,0 l"+l+",-"+w+" -"+h+","+w+" "+h+","+w+" Z");//.setFill(this.property('fill')); + + this.endArrow.setShape("M" + this.end.x + "," + this.end.y + " l-"+l+",-"+w+" "+h+","+w+" -"+h+","+w+" Z"); + } + }; + + p.getBBox=function(){ + var x=Math.min(this.start.x, this.control.x, this.end.x); + var y=Math.min(this.start.y, this.control.y, this.end.y); + var w=Math.max(this.start.x, this.control.x, this.end.x)-x; + var h=Math.max(this.start.y, this.control.y, this.end.y)-y; + return { x:x, y:y, width:w, height:h }; + }; + + p.serialize=function(){ + var s=this.property('stroke'); + return '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + this.property('label') + + '' + + ''; + }; + + ta.Annotation.register("DoubleArrow"); + return dojox.sketch.DoubleArrowAnnotation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/Figure.js b/js/dojo-release-1.7.2-src/dojox/sketch/Figure.js new file mode 100644 index 0000000..358a232 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/Figure.js @@ -0,0 +1,532 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/connect", + "dojo/_base/html", + "../gfx", + "../xml/DomParser", + "./UndoStack" +], function(dojo){ + dojo.experimental("dojox.sketch"); + + var ta=dojox.sketch; + ta.tools={}; + ta.registerTool=function(type, fn){ ta.tools[type]=fn; }; + ta.Figure = function(mixin){ + var self=this; + this.annCounter=1; + + this.shapes=[]; + this.image=null; + this.imageSrc=null; + this.size={ w:0, h:0 }; + this.surface=null; + this.group=null; + //node should have tabindex set, otherwise keyboard action does not work + this.node=null; + + this.zoomFactor=1; // multiplier for zooming. + + this.tools=null; // toolbar reference. + + this.obj={}; // lookup table for shapes. Not keen on this solution. + + dojo.mixin(this,mixin); + + // what is selected. + this.selected=[]; + this.hasSelections=function(){ return this.selected.length>0 }; + this.isSelected=function(obj){ + for(var i=0; i-1){ + obj.setMode(ta.Annotation.Modes.View); + self.selected.splice(idx,1); + } + return obj; + }; + this.clearSelections=function(){ + for(var i=0; i-1){ + self.selected.splice(idx,1,n); + } + }; + + // for the drag and drop handlers. + this._c=null; // current shape + this._ctr=null; // container measurements + this._lp=null; // last position + this._action=null; + this._prevState=null; + this._startPoint=null; // test to record a move. + + // if an object isn't selected and we're dragging anyways. + this._ctool=null; // hard code it. + this._start=null; + this._end=null; + this._absEnd=null; + this._cshape=null; + + this._dblclick=function(e){ + var o=self._fromEvt(e); + if(o){ + self.onDblClickShape(o,e); + } + }; + + this._keydown=function(e){ + var prevent=false; + if(e.ctrlKey){ + if(e.keyCode===90 || e.keyCode===122){ //ctrl+z + self.undo(); + prevent = true; + } + else if(e.keyCode===89 || e.keyCode===121){ //ctrl+y + self.redo(); + prevent = true; + } + } + + if(e.keyCode===46 || e.keyCode===8){ //delete or backspace + self._delete(self.selected); + prevent = true; + } + + if(prevent){ + dojo.stopEvent(e); + } + }; + + // drag handlers. + this._md=function(e){ + //in IE, when clicking into the drawing canvas, the node does not get focused, + //do it manually here to force it, otherwise the keydown event listener is + //never triggered in IE. + if(dojox.gfx.renderer=='vml'){ + self.node.focus(); + } + var o=self._fromEvt(e); + self._startPoint={ x:e.pageX, y:e.pageY }; + + self._ctr=dojo.position(self.node); + // figure out the coordinates taking scroll into account + var scroll={x:self.node.scrollLeft,y:self.node.scrollTop}; + //var win = dojo.window.get(self.node.ownerDocument); + //var scroll=dojo.withGlobal(win,dojo._docScroll); + self._ctr={x:self._ctr.x-scroll.x, y:self._ctr.y-scroll.y}; + var X=e.clientX-self._ctr.x, Y=e.clientY-self._ctr.y; + self._lp={ x:X, y:Y }; + + // capture it separately + self._start={ x:X, y:Y }; + self._end={ x:X, y:Y }; + self._absEnd={ x:X, y:Y }; + if(!o){ + self.clearSelections(); + self._ctool.onMouseDown(e); + }else{ + if(o.type && o.type()!="Anchor"){ + if(!self.isSelected(o)){ + self.select(o); + self._sameShapeSelected=false; + }else{ + self._sameShapeSelected=true; + } + } + o.beginEdit(); + self._c=o; + } + }; + this._mm=function(e){ + if(!self._ctr){ return; } + var x=e.clientX-self._ctr.x; + var y=e.clientY-self._ctr.y; + var dx=x-self._lp.x; + var dy=y-self._lp.y; + self._absEnd={x:x, y:y}; + if(self._c){ + //self._c.doChange({dx:dx, dy:dy}); + self._c.setBinding({dx:dx/self.zoomFactor, dy:dy/self.zoomFactor}); + self._lp={x:x, y:y}; + } else { + self._end={x:dx, y:dy}; + var rect={ + x:Math.min(self._start.x,self._absEnd.x), + y:Math.min(self._start.y,self._absEnd.y), + width:Math.abs(self._start.x-self._absEnd.x), + height:Math.abs(self._start.y-self._absEnd.y) + } + if(rect.width && rect.height){ + self._ctool.onMouseMove(e,rect); + } + } + }; + this._mu=function(e){ + if(self._c){ + // record the event. + self._c.endEdit(); + }else{ + self._ctool.onMouseUp(e); + } + + // clear the stuff out. + self._c=self._ctr=self._lp=self._action=self._prevState=self._startPoint=null; + self._cshape=self._start=self._end=self._absEnd=null; + }; + + this.initUndoStack(); + }; + + var p=ta.Figure.prototype; + p.initUndoStack=function(){ + this.history=new ta.UndoStack(this); + }; + p.setTool=function(/*dojox.sketch._Plugin*/t){ + this._ctool=t; + }; + //gridSize: int + // if it is greater than 0, all new shapes placed on the drawing will have coordinates + // snapped to the gridSize. For example, if gridSize is set to 10, all coordinates + // (only including coordinates which specifies the x/y position of shape are affected + // by this parameter) will be dividable by 10 + p.gridSize=0; + p._calCol=function(v){ + return this.gridSize?(Math.round(v/this.gridSize)*this.gridSize):v; + }; + p._delete=function(arr,noundo){ + for(var i=0; i-1){ + key=key.replace("-boundingBox",""); + }else if(key&&key.indexOf("-labelShape")>-1){ + key=key.replace("-labelShape",""); + } + return this.obj[key]; + }; + p._keyFromEvt=function(e){ + var key=e.target.id+""; + if(key.length==0){ + // ancestor tree until you get to the end (meaning this.surface) + var p=e.target.parentNode; + var node=this.surface.getEventSource(); + while(p && p.id.length==0 && p!=node){ + p=p.parentNode; + } + key=p.id; + } + return key; + }; + p._fromEvt=function(e){ + return this._get(this._keyFromEvt(e)); + }; + + p.add=function(annotation){ + for(var i=0; i-1){ this.shapes.splice(idx, 1); } + return annotation; + }; + p.getAnnotator=function(id){ + for(var i=0; i' + + '' + + ''; + for(var i=0; i=1){ + x=this.end.x+this.calculate.dx(this.control, this.end, offset); + if(this.control.y>this.end.y){ + y=this.end.y-offset; + } else { + y=this.end.y+offset+this.textYOffset; + } + } else if(slope==0){ + x=this.end.x+offset; + y=this.end.y+this.textYOffset; + } else { + if(this.start.x>this.end.x){ + x=this.end.x-offset; + this.textAlign="end"; + } else { + x=this.end.x+offset; + this.textAlign="start"; + } + if(this.start.y' + + '' + + '' + + this.property('label') + + '' + + ''; + }; + + ta.Annotation.register("Lead"); + return dojox.sketch.LeadAnnotation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/PreexistingAnnotation.js b/js/dojo-release-1.7.2-src/dojox/sketch/PreexistingAnnotation.js new file mode 100644 index 0000000..7949285 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/PreexistingAnnotation.js @@ -0,0 +1,163 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "./Annotation", "./Anchor"], function(dojo){ + dojo.getObject("sketch", true, dojox); + + var ta=dojox.sketch; + ta.PreexistingAnnotation=function(figure, id){ + ta.Annotation.call(this, figure, id); + this.transform={dx:0, dy:0}; + this.start={ x:0, y:0 }; + this.end={ x:200, y:200 }; + this.radius=8; + this.textPosition={ x:196, y:196 }; + this.textOffset=4; + this.textAlign="end"; + + //this.property('label',this.id); + this.rectShape=null; + this.labelShape=null; + + this.anchors.start=new ta.Anchor(this, "start"); + this.anchors.end=new ta.Anchor(this, "end"); + }; + ta.PreexistingAnnotation.prototype=new ta.Annotation; + var p=ta.PreexistingAnnotation.prototype; + p.constructor=ta.PreexistingAnnotation; + + p.type=function(){ return 'Preexisting' }; + p.getType=function(){ return ta.PreexistingAnnotation; }; + + p._pos=function(){ + var x=Math.min(this.start.x, this.end.x); + var y=Math.min(this.start.y, this.end.y); + var w=Math.max(this.start.x, this.end.x); + var h=Math.max(this.start.y, this.end.y); + this.start={ x:x, y:y }; + this.end={ x:w, y:h }; + this.textPosition={ x:this.end.x-this.textOffset, y:this.end.y-this.textOffset }; + }; + p.apply=function(obj){ + if(!obj){ return; } + if(obj.documentElement){ obj=obj.documentElement; } + this.readCommonAttrs(obj); + + for(var i=0; i' + + '' + + '' + + this.property('label') + + '' + + ''; + }; + + ta.Annotation.register("Preexisting"); + return dojox.sketch.PreexistingAnnotation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/README b/js/dojo-release-1.7.2-src/dojox/sketch/README new file mode 100644 index 0000000..217d3e9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/README @@ -0,0 +1,58 @@ +------------------------------------------------------------------------------- +dojox.sketch +------------------------------------------------------------------------------- +Version 0.1 +Release date: 28/01/2008 +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Contributed by TeamPatent (supported by National Science Foundation grant 638334) + Tom Trenka (ttrenka@gmail.com) + Heng Liu/LiuCougar (heng@teampatent.com) +------------------------------------------------------------------------------- +Project description + +A cross-browser drawing editor based on dojox.gfx. +------------------------------------------------------------------------------- +Dependencies: + +dijit (Toolbar, Button, Slider) +dojox.gfx +dojox.xml +------------------------------------------------------------------------------- +Documentation + +Currently, 5 shapes are supported: line, single arrow line, double arrow line, +underline text and text. The first 3 shapes can have optinal text associated. + +Shapes can be added, deleted, moved and modified. All of these operations can +be undo-ed or redo-ed. + +TODO: + * provide UI to change various properties on shapes (fill, stroke, text) and +allow changing of background image + * serialize/unserialize in dojox.gfx to svg (and maybe vml as well?) (or another +simplier format? such as a json based one, which is easier to parse, and then +write a convertor to convert the json format to svg or any other format?) + * Move mousedown/up/move to each shape (to prepare for the following) + * Add shapes for other primitive shapes (needs to decide which primitive +dojox.gfx.shapes are useful), and add in support for user to group any +shapes/groups to form a single "compound shape" (need to add support to set +fill/stroke properties on the entire compound shape, which shallpropagate to +all children shapes) +------------------------------------------------------------------------------- +Installation instructions + +Install dijit, dojox.gfx and dojox.xml first + +Grab the following from the Dojo SVN Repository: +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/sketch.js +http://svn.dojotoolkit.org/var/src/dojo/dojox/trunk/sketch/* + +Install into the following directory structure: +/dojox/sketch/ + +...which should be at the same level as your Dojo checkout. +------------------------------------------------------------------------------- diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/SingleArrowAnnotation.js b/js/dojo-release-1.7.2-src/dojox/sketch/SingleArrowAnnotation.js new file mode 100644 index 0000000..9409069 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/SingleArrowAnnotation.js @@ -0,0 +1,226 @@ +define(["dojo/_base/kernel", "dojo/_base/lang", "./Annotation", "./Anchor"], function(dojo){ + dojo.getObject("sketch", true, dojox); + + var ta=dojox.sketch; + ta.SingleArrowAnnotation=function(figure, id){ + ta.Annotation.call(this, figure, id); + this.transform={ dx:0, dy:0 }; + this.start={x:0, y:0}; + this.control={x:100, y:-50}; + this.end={x:200, y:0}; + this.textPosition={ x:0, y:0 }; + this.textOffset=4; + //this.textAlign="middle"; + this.textYOffset=10; + this.rotation=0; + +// this.property('label',this.id); +// this.label=this.id; + this.pathShape=null; + this.arrowhead=null; + this.arrowheadGroup=null; + this.labelShape=null; + + this.anchors.start=new ta.Anchor(this, "start"); + this.anchors.control=new ta.Anchor(this, "control"); + this.anchors.end=new ta.Anchor(this, "end"); + }; + ta.SingleArrowAnnotation.prototype=new ta.Annotation; + var p=ta.SingleArrowAnnotation.prototype; + p.constructor=ta.SingleArrowAnnotation; + + p.type=function(){ return 'SingleArrow'; }; + p.getType=function(){ return ta.SingleArrowAnnotation; }; + + // helper functions + p._rot=function(){ + // arrowhead rotation + var opp=this.control.y-this.start.y; + var adj=this.control.x-this.start.x; + //if(!adj){ adj=1; } + this.rotation=Math.atan2(opp,adj); + }; + p._pos=function(){ + // text position + var offset=this.textOffset, x=0, y=0; + var slope=this.calculate.slope(this.control, this.end); + this.textAlign="middle"; + if(Math.abs(slope)>=1){ + x=this.end.x+this.calculate.dx(this.control, this.end, offset); + if(this.control.y>this.end.y){ y=this.end.y-offset; } + else{ y=this.end.y+offset+this.textYOffset; } + } else if(slope==0){ + x=this.end.x+offset; + y=this.end.y+this.textYOffset; + } else { + if(this.start.x>this.end.x){ + x=this.end.x-offset; + this.textAlign="end"; + } else { + x=this.end.x+offset; + this.textAlign="start"; + } + if(this.start.y1?20:Math.floor(20/pct), w=pct>1?5:Math.floor(5/pct),h=pct>1?3:Math.floor(3/pct); + this.arrowhead.setShape("M0,0 l"+l+",-"+w+" -"+h+","+w+" "+h+","+w+" Z"); + } + } + }; + + p.getBBox=function(){ + var x=Math.min(this.start.x, this.control.x, this.end.x); + var y=Math.min(this.start.y, this.control.y, this.end.y); + var w=Math.max(this.start.x, this.control.x, this.end.x)-x; + var h=Math.max(this.start.y, this.control.y, this.end.y)-y; + return { x:x, y:y, width:w, height:h }; + }; + + p.serialize=function(){ + var s=this.property('stroke'); + var r=this.rotation*(180/Math.PI); + r=Math.round(r*Math.pow(10,4))/Math.pow(10,4); + return '' + + '' + + '' + + '' + + '' + + '' + + this.property('label') + + '' + + ''; + }; + + ta.Annotation.register("SingleArrow"); + return dojox.sketch.SingleArrowAnnotation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/Slider.js b/js/dojo-release-1.7.2-src/dojox/sketch/Slider.js new file mode 100644 index 0000000..f5cfc3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/Slider.js @@ -0,0 +1,42 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/declare", + "dijit/form/HorizontalSlider", + "./_Plugin" +], function(dojo){ + dojo.getObject("sketch", true, dojox); + dojo.declare("dojox.sketch.Slider", dojox.sketch._Plugin,{ + _initButton: function(){ + this.slider=new dijit.form.HorizontalSlider({minimum:5,maximum:100,style:"width:100px;",baseClass:'dijitInline dijitSlider'}); + this.slider._movable.node.title='Double Click to "Zoom to Fit"'; //I18N + this.connect(this.slider,'onChange','_setZoom'); + this.connect(this.slider.sliderHandle,'ondblclick','_zoomToFit'); + }, + _zoomToFit: function(){ + var r=this.figure.getFit(); + this.slider.attr('value',this.slider.maximumr?this.slider.minimum:r)); + }, + _setZoom: function(v){ + if(v && this.figure){ + this.figure.zoom(v); + } + }, + reset: function(){ + //reset slider to maximum so that onChange will be fired when _zoomToFit is called + this.slider.attr('value',this.slider.maximum); + this._zoomToFit(); + }, + setToolbar: function(t){ + this._initButton(); + t.addChild(this.slider); + if(!t._reset2Zoom){ + t._reset2Zoom=true; + this.connect(t,'reset','reset'); + } + } + }); + + dojox.sketch.registerTool("Slider", dojox.sketch.Slider); + return dojox.sketch.Slider; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/Toolbar.js b/js/dojo-release-1.7.2-src/dojox/sketch/Toolbar.js new file mode 100644 index 0000000..99262d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/Toolbar.js @@ -0,0 +1,103 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/declare", + "./Annotation", + "dijit/Toolbar", + "dijit/form/Button" +], function(dojo){ + dojo.getObject("sketch", true, dojox); + dojo.declare("dojox.sketch.ButtonGroup", null, { + constructor: function(){ + this._childMaps={}; + this._children=[]; + }, + add: function(/*_Plugin*/ plugin){ + this._childMaps[plugin]=plugin.connect(plugin,'onActivate',dojo.hitch(this,'_resetGroup',plugin)); + this._children.push(plugin); + }, + // remove: function(/*_Plugin*/ plugin){ + // widget.disconnect(this._childMaps[widget.id]); + // delete this._childMaps[widget.id]; + // this._children.splice(this._children.indexOf(widget.id),1); + // }, + _resetGroup: function(p){ + var cs=this._children; + dojo.forEach(cs,function(c){ + if(p!=c && c['attr']){ + c.attr('checked',false); + } + }); + } + }); + + dojo.declare("dojox.sketch.Toolbar", dijit.Toolbar, { + figure: null, + plugins: null, + postCreate: function(){ + this.inherited(arguments); + this.shapeGroup=new dojox.sketch.ButtonGroup; + + if(!this.plugins){ + this.plugins=['Lead','SingleArrow','DoubleArrow','Underline','Preexisting','Slider']; + } + this._plugins=[]; + + dojo.forEach(this.plugins,function(obj){ + var name=dojo.isString(obj)?obj:obj.name; + var p=new dojox.sketch.tools[name](obj.args||{}); + this._plugins.push(p); + p.setToolbar(this); + if(!this._defaultTool && p.button){ + this._defaultTool=p; + } + },this); + }, + setFigure: function(f){ + this.figure = f; + this.connect(f,'onLoad','reset'); + dojo.forEach(this._plugins, function(p){ + p.setFigure(f); + }); + }, + destroy: function(){ + dojo.forEach(this._plugins,function(p){ + p.destroy(); + }); + this.inherited(arguments); + delete this._defaultTool; + delete this._plugins; + }, + addGroupItem: function(/*_Plugin*/item,group){ + if(group!='toolsGroup'){ + console.error('not supported group '+group); + return; + } + + this.shapeGroup.add(item); + }, + reset: function(){ + this._defaultTool.activate(); + }, + _setShape: function(s){ + if(!this.figure.surface) return; + // now do the action. + if(this.figure.hasSelections()){ + for(var i=0; i' + //+ '' + + '' + + this.property('label') + + '' + + ''; + }; + + //customize AnnotationTool to place a underlilne shape onmouseup, no need + //to drag a box (like other shapes) + dojo.declare("dojox.sketch.UnderlineAnnotationTool", ta.AnnotationTool, { + onMouseDown: function(){}, + onMouseUp: function(){ + var f=this.figure; + if(!f._start){ + return; + } + //zero out end so that the clickover is shown at the right pos + f._end={x:0,y:0}; + this._create(f._start,{x:f._start.x+10,y:f._start.y+10}); + }, + onMouseMove: function(){} + }); + ta.Annotation.register("Underline", ta.UnderlineAnnotationTool); + return dojox.sketch.UnderlineAnnotation; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/UndoStack.js b/js/dojo-release-1.7.2-src/dojox/sketch/UndoStack.js new file mode 100644 index 0000000..4d124c6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/UndoStack.js @@ -0,0 +1,105 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/declare", + "../xml/DomParser" +], function(dojo){ + dojo.getObject("sketch", true, dojox); + var ta=dojox.sketch; + ta.CommandTypes={ Create:"Create", Move:"Move", Modify:"Modify", Delete:"Delete", Convert:"Convert"}; + + dojo.declare("dojox.sketch.UndoStack",null,{ + constructor: function(figure){ + this.figure=figure; + this._steps=[]; + this._undoedSteps=[]; + }, + apply: function(state, from, to){ + // the key here is to neutrally move from one state to another. + // we let the individual functions (i.e. undo and redo) actually + // determine the from and to; all we do here is implement it. + + // check whether this is a fullText step + if(!from && !to && state.fullText){ + this.figure.setValue(state.fullText); + return; + } + + var fromText=from.shapeText; + var toText=to.shapeText; + + if(fromText.length==0&&toText.length==0){ + // nothing to reapply? + return; + } + if(fromText.length==0){ + // We are creating. + var o=dojox.xml.DomParser.parse(toText).documentElement; + var a=this.figure._loadAnnotation(o); + if(a) this.figure._add(a); + return; + } + if(toText.length==0){ + // we are deleting. + var ann=this.figure.getAnnotator(from.shapeId); + this.figure._delete([ann],true); + return; + } + + // we can simply reinit and draw from the shape itself, + // regardless of the actual command. + var nann=this.figure.getAnnotator(to.shapeId); + var no=dojox.xml.DomParser.parse(toText).documentElement; + nann.draw(no); + this.figure.select(nann); + return; + }, + // stack methods. + add: function(/*String*/cmd, /*ta.Annotation?*/ann, /*String?*/before){ + var id=ann?ann.id:''; + //var bbox=ann?ann.getBBox():{}; + var after=ann?ann.serialize():""; + if(cmd==ta.CommandTypes.Delete){ after=""; } + + /*if(ann){ + // fix the bbox x/y coords + var t=ann.transform; + bbox.x+=t.dx; + bbox.y+=t.dy; + }*/ + var state={ + cmdname:cmd, + //bbox:bbox, +// fullText:fullText, + before:{ + shapeId: id, + shapeText:before||'' + }, + after:{ + shapeId: id, + shapeText:after + } + }; + //console.log('dojox.sketch history add',state); + this._steps.push(state); + this._undoedSteps = []; + }, + destroy: function(){}, + undo: function(){ + var state=this._steps.pop(); + if(state){ + this._undoedSteps.push(state); + this.apply(state,state.after,state.before); + } + }, + redo: function(){ + var state=this._undoedSteps.pop(); + if(state){ + this._steps.push(state); + this.apply(state,state.before,state.after); + } + } + }); + + return dojox.sketch.UndoStack; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/_Plugin.js b/js/dojo-release-1.7.2-src/dojox/sketch/_Plugin.js new file mode 100644 index 0000000..5d01ae9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/_Plugin.js @@ -0,0 +1,81 @@ +define([ + "dojo/_base/kernel", + "dojo/_base/lang", + "dojo/_base/array", + "dojo/_base/declare", + "dojo/_base/connect", + "dijit/form/ToggleButton" +], function(dojo){ + dojo.getObject("sketch", true, dojox); + dojo.declare("dojox.sketch._Plugin", null, { + // summary + // This represents a "plugin" to the dojox.sketch.Figure, which is basically + // a single button on the Toolbar and some associated code + constructor: function(/*Object?*/args){ + if(args){ + dojo.mixin(this, args); + } + this._connects=[]; + }, + + figure: null, + iconClassPrefix: "dojoxSketchIcon", + itemGroup: 'toolsGroup', + button: null, + queryCommand: null, + shape: "", + useDefaultCommand: true, + buttonClass: dijit.form.ToggleButton, + _initButton: function(){ + if(this.shape.length){ + //TODO: i18n + // var label = dojox.sketch.shapes[this.shape]; + var className = this.iconClassPrefix+" "+this.iconClassPrefix + this.shape.charAt(0).toUpperCase() + this.shape.substr(1); + if(!this.button){ + var props = { + label: this.shape, //I18N + showLabel: false, + iconClass: className, + dropDown: this.dropDown, + tabIndex: "-1" + }; + this.button = new this.buttonClass(props); + this.connect(this.button,'onClick','activate'); + } + } + }, + attr: function(name,/*?*/value){ + return this.button.attr(name,value); + }, + onActivate: function(){}, + activate: function(/*?*/e){ + this.onActivate(); + this.figure.setTool(this); + this.attr('checked',true); + }, + onMouseDown: function(e){}, + onMouseMove: function(e){}, + onMouseUp: function(e){}, + destroy: function(f){ + dojo.forEach(this._connects,dojo.disconnect); + }, + connect: function(o,f,tf){ + this._connects.push(dojo.connect(o,f,this,tf)); + }, + setFigure: function(/*dijit._Widget*/ figure){ + // FIXME: detatch from previous figure!! + this.figure = figure; + }, + setToolbar: function(/*dijit._Widget*/ toolbar){ + // FIXME: prevent creating this if we don't need to (i.e., figure can't handle our command) + this._initButton(); + if(this.button){ + toolbar.addChild(this.button); + } + if(this.itemGroup){ + toolbar.addGroupItem(this,this.itemGroup); + } + } + }); + return dojox.sketch._Plugin; +}); diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/resources/images/icons.gif b/js/dojo-release-1.7.2-src/dojox/sketch/resources/images/icons.gif new file mode 100644 index 0000000..ab33b0a Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/sketch/resources/images/icons.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/resources/sketch.css b/js/dojo-release-1.7.2-src/dojox/sketch/resources/sketch.css new file mode 100755 index 0000000..7451395 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/resources/sketch.css @@ -0,0 +1,17 @@ +.dojoxSketchIcon{ + background-repeat:no-repeat; + height:16px; + min-width:16px; + text-align:center; + width:16px; +} +.dojoxSketchIcon { background-image:url(images/icons.gif); } +.ShowCallouts{ background-position:0px 0px; } +.PreviousCallout{ background-position:0px -16px; } +.NextCallout{ background-position:0px -32px; } +.dojoxSketchIconLead{ background-position:0px -48px; } +.dojoxSketchIconUnderline{ background-position:0px -64px; } +.dojoxSketchIconSingleArrow{ background-position:0px -80px; } +.dojoxSketchIconBrace{ background-position:0px -96px; } +.dojoxSketchIconDoubleArrow{ background-position:0px -112px; } +.dojoxSketchIconPreexisting{ background-position:0px -128px; } diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/tests/FTHelper.js b/js/dojo-release-1.7.2-src/dojox/sketch/tests/FTHelper.js new file mode 100755 index 0000000..4c6fcc2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/tests/FTHelper.js @@ -0,0 +1,44 @@ +dojo.provide("dojox.sketch.tests.FTHelper"); + +dojo.declare('dojox.sketch.tests.FTHelper',null,{ + controlCss: "#dojox_sketch_Toolbar_0 .dijitButtonContents", + canvas:'canvas', + defaultDelay: 100, + //controls: ['lead','single','double','underline','preexisting']; + constructor: function(args){ + this.controls=['lead','single','double','underline','preexisting']; + if(args){ + dojo.mixin(this,args); + } + }, + selectShape: function(shape,delay){ + delay=delay||this.defaultDelay; + var i=dojo.indexOf(this.controls,shape); + if(i<0){ + throw Error('shape "'+shape+'" is not recognized'); + } + var buttons=dojo.query(this.controlCss); + if(buttons.length<=i){ + throw Error('Can not find button for shape "'+shape+'" on the toolbar'); + } + var button=buttons[i]; + doh.robot.mouseMoveAt(button,delay); + doh.robot.mouseClick({left:true},delay); + }, + drawShape: function(start,end,delay){ + delay=delay||this.defaultDelay; + if(!this.coords){ + this.coords=dojo.coords(this.canvas); + } + end=end||start; + doh.robot.mouseMove(this.coords.x+start.x,this.coords.y+start.y,delay,1); + doh.robot.mousePress({left:1},delay); + doh.robot.mouseMove(this.coords.x+end.x,this.coords.y+end.y,delay,1); + doh.robot.mouseRelease({left:1},delay); + }, + click: function(args,delay){ + delay=delay||this.defaultDelay; + doh.robot.mouseMove(this.coords.x+args.x,this.coords.y+args.y,delay,1); + doh.robot.mouseClick(args,delay); + } +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/tests/annotation.svg b/js/dojo-release-1.7.2-src/dojox/sketch/tests/annotation.svg new file mode 100755 index 0000000..998d71e --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/tests/annotation.svg @@ -0,0 +1,39 @@ + + + + + + 1 + + + + 2 + + + + + + + 3 + + + + + + + + + + 4 + + + + 5 + + + diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/tests/images/figure2.gif b/js/dojo-release-1.7.2-src/dojox/sketch/tests/images/figure2.gif new file mode 100644 index 0000000..7218a4c Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/sketch/tests/images/figure2.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/tests/images/testsBodyBg.gif b/js/dojo-release-1.7.2-src/dojox/sketch/tests/images/testsBodyBg.gif new file mode 100644 index 0000000..4e0b4a7 Binary files /dev/null and b/js/dojo-release-1.7.2-src/dojox/sketch/tests/images/testsBodyBg.gif differ diff --git a/js/dojo-release-1.7.2-src/dojox/sketch/tests/test_full.html b/js/dojo-release-1.7.2-src/dojox/sketch/tests/test_full.html new file mode 100755 index 0000000..e2e3cd1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sketch/tests/test_full.html @@ -0,0 +1,129 @@ + + + + Annotator/Figure Testing + + + + + + + + + +

                                                                      Annotator/Figure Testing Platform

                                                                      +

                                                                      This is a generic test to create a figure from an existing SVG file, to edit that figure, and to test the undo stack. Double click a shape to set new text for it.

                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +

                                                                      Serialized output

                                                                      + + + diff --git a/js/dojo-release-1.7.2-src/dojox/socket.js b/js/dojo-release-1.7.2-src/dojox/socket.js new file mode 100644 index 0000000..52df546 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/socket.js @@ -0,0 +1,222 @@ +define("dojox/socket", ["dojo", "dojo/Evented", "dojo/cookie", "dojo/_base/url"], function(dojo, Evented) { + +var WebSocket = window.WebSocket; + +function Socket(/*dojo.__XhrArgs*/ argsOrUrl){ + // summary: + // Provides a simple socket connection using WebSocket, or alternate + // communication mechanisms in legacy browsers for comet-style communication. This is based + // on the WebSocket API and returns an object that implements the WebSocket interface: + // http://dev.w3.org/html5/websockets/#websocket + // description: + // Provides socket connections. This can be used with virtually any Comet protocol. + // argsOrUrl: + // This uses the same arguments as the other I/O functions in Dojo, or a + // URL to connect to. The URL should be a relative URL in order to properly + // work with WebSockets (it can still be host relative, like //other-site.org/endpoint) + // returns: + // An object that implements the WebSocket API + // example: + // | dojo.require("dojox.socket"); + // | var socket = dojox.socket({"//comet-server/comet"); + // | // we could also add auto-reconnect support + // | // now we can connect to standard HTML5 WebSocket-style events + // | dojo.connect(socket, "onmessage", function(event){ + // | var message = event.data; + // | // do something with the message + // | }); + // | // send something + // | socket.send("hi there"); + // | whenDone(function(){ + // | socket.close(); + // | }); + // You can also use the Reconnect module: + // | dojo.require("dojox.socket"); + // | dojo.require("dojox.socket.Reconnect"); + // | var socket = dojox.socket({url:"/comet"}); + // | // add auto-reconnect support + // | socket = dojox.socket.Reconnect(socket); + if(typeof argsOrUrl == "string"){ + argsOrUrl = {url: argsOrUrl}; + } + return WebSocket ? dojox.socket.WebSocket(argsOrUrl, true) : dojox.socket.LongPoll(argsOrUrl); +}; +dojox.socket = Socket; + +Socket.WebSocket = function(args, fallback){ + // summary: + // A wrapper for WebSocket, than handles standard args and relative URLs + var ws = new WebSocket(new dojo._Url(document.baseURI.replace(/^http/i,'ws'), args.url)); + ws.on = function(type, listener){ + ws.addEventListener(type, listener, true); + }; + var opened; + dojo.connect(ws, "onopen", function(event){ + opened = true; + }); + dojo.connect(ws, "onclose", function(event){ + if(opened){ + return; + } + if(fallback){ + Socket.replace(ws, dojox.socket.LongPoll(args), true); + } + }); + return ws; +}; +Socket.replace = function(socket, newSocket, listenForOpen){ + // make the original socket a proxy for the new socket + socket.send = dojo.hitch(newSocket, "send"); + socket.close = dojo.hitch(newSocket, "close"); + if(listenForOpen){ + proxyEvent("open"); + } + // redirect the events as well + dojo.forEach(["message", "close", "error"], proxyEvent); + function proxyEvent(type){ + (newSocket.addEventListener || newSocket.on).call(newSocket, type, function(event){ + var newEvent = document.createEvent("MessageEvent"); + newEvent.initMessageEvent(event.type, false, false, event.data, event.origin, event.lastEventId, event.source); + socket.dispatchEvent(newEvent); + }, true); + } +}; +Socket.LongPoll = function(/*dojo.__XhrArgs*/ args){ + // summary: + // Provides a simple long-poll based comet-style socket/connection to a server and returns an + // object implementing the WebSocket interface: + // http://dev.w3.org/html5/websockets/#websocket + // args: + // This uses the same arguments as the other I/O functions in Dojo, with this addition: + // args.interval: + // Indicates the amount of time (in milliseconds) after a response was received + // before another request is made. By default, a request is made immediately + // after getting a response. The interval can be increased to reduce load on the + // server or to do simple time-based polling where the server always responds + // immediately. + // args.transport: + // Provide an alternate transport like dojo.io.script.get + // returns: + // An object that implements the WebSocket API + // example: + // | dojo.require("dojox.socket.LongPoll"); + // | var socket = dojox.socket.LongPoll({url:"/comet"}); + // or: + // | dojo.require("dojox.socket.LongPoll"); + // | dojox.socket.LongPoll.add(); + // | var socket = dojox.socket({url:"/comet"}); + +var cancelled = false, + first = true, + timeoutId, + connections = []; + + // create the socket object + var socket = { + send: function(data){ + // summary: + // Send some data using XHR or provided transport + var sendArgs = dojo.delegate(args); + sendArgs.rawBody = data; + clearTimeout(timeoutId); + var deferred = first ? (first = false) || socket.firstRequest(sendArgs) : + socket.transport(sendArgs); + connections.push(deferred); + deferred.then(function(response){ + // got a response + socket.readyState = 1; + // remove the current connection + connections.splice(dojo.indexOf(connections, deferred), 1); + // reconnect to listen for the next message if there are no active connections, + // we queue it up in case one of the onmessage handlers has a message to send + if(!connections.length){ + timeoutId = setTimeout(connect, args.interval); + } + if(response){ + // now send the message along to listeners + fire("message", {data: response}, deferred); + } + }, function(error){ + connections.splice(dojo.indexOf(connections, deferred), 1); + // an error occurred, fire the appropriate event listeners + if(!cancelled){ + fire("error", {error:error}, deferred); + if(!connections.length){ + socket.readyState = 3; + fire("close", {wasClean:false}, deferred); + } + } + }); + return deferred; + }, + close: function(){ + // summary: + // Close the connection + socket.readyState = 2; + cancelled = true; + for(var i = 0; i < connections.length; i++){ + connections[i].cancel(); + } + socket.readyState = 3; + fire("close", {wasClean:true}); + }, + transport: args.transport || dojo.xhrPost, + args: args, + url: args.url, + readyState: 0, + CONNECTING: 0, + OPEN: 1, + CLOSING: 2, + CLOSED: 3, + dispatchEvent: function(event){ + fire(event.type, event); + }, + on: Evented.prototype.on, + firstRequest: function(args){ + // summary: + // This allows for special handling for the first request. This is useful for + // providing information to disambiguate between the first request and + // subsequent long-poll requests so the server can properly setup a + // connection on the first connection or reject a request for an expired + // connection if the request is not expecting to be the first for a connection. + // This method can be overriden. The default behavior is to include a Pragma + // header with a value of "start-long-poll" + var headers = (args.headers || (args.headers = {})); + headers.Pragma = "start-long-poll"; + try{ + return this.transport(args); + }finally{ + // cleanup the header so it is not used on subsequent requests + delete headers.Pragma; + } + } + }; + function connect(){ + if(socket.readyState == 0){ + // we fire the open event now because we really don't know when the "socket" + // is truly open, and this gives us a to do a send() and get it included in the + // HTTP request + fire("open",{}); + } + // make the long-poll connection, to wait for response from the server + if(!connections.length){ + socket.send(); + } + } + function fire(type, object, deferred){ + if(socket["on" + type]){ + var event = document.createEvent("HTMLEvents"); + event.initEvent(type, false, false); + dojo.mixin(event, object); + event.ioArgs = deferred && deferred.ioArgs; + socket["on" + type](event); + } + } + // provide an alias for Dojo's connect method + socket.connect = socket.on; + // do the initial connection + setTimeout(connect); + return socket; +}; +return Socket; +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/socket/README b/js/dojo-release-1.7.2-src/dojox/socket/README new file mode 100644 index 0000000..4828aff --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/socket/README @@ -0,0 +1,15 @@ +------------------------------------------------------------------------------- +dojox.socket +------------------------------------------------------------------------------- +Version 0.1 +Release date: 10/10/2010 +------------------------------------------------------------------------------- +Project state: +beta +------------------------------------------------------------------------------- +Credits + Kris Zyp +------------------------------------------------------------------------------- +Project description + +Provides a WebSocket with fallback to HTTP long-polling diff --git a/js/dojo-release-1.7.2-src/dojox/socket/Reconnect.js b/js/dojo-release-1.7.2-src/dojox/socket/Reconnect.js new file mode 100644 index 0000000..fa932a6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/socket/Reconnect.js @@ -0,0 +1,54 @@ +dojo.provide("dojox.socket.Reconnect"); + +dojox.socket.Reconnect = function(socket, options){ + // summary: + // Provides auto-reconnection to a websocket after it has been closed + // socket: + // Socket to add reconnection support to. + // returns: + // An object that implements the WebSocket API + // example: + // You can use the Reconnect module: + // | dojo.require("dojox.socket"); + // | dojo.require("dojox.socket.Reconnect"); + // | var socket = dojox.socket({url:"/comet"}); + // | // add auto-reconnect support + // | socket = dojox.socket.Reconnect(socket); + options = options || {}; + var reconnectTime = options.reconnectTime || 10000; + + var connectHandle = dojo.connect(socket, "onclose", function(event){ + clearTimeout(checkForOpen); + if(!event.wasClean){ + socket.disconnected(function(){ + dojox.socket.replace(socket, newSocket = socket.reconnect()); + }); + } + }); + var checkForOpen, newSocket; + if(!socket.disconnected){ + // add a default impl if it doesn't exist + socket.disconnected = function(reconnect){ + setTimeout(function(){ + reconnect(); + checkForOpen = setTimeout(function(){ + //reset the backoff + if(newSocket.readyState < 2){ + reconnectTime = options.reconnectTime || 10000; + } + }, 10000); + }, reconnectTime); + // backoff each time + reconnectTime *= options.backoffRate || 2; + }; + } + if(!socket.reconnect){ + // add a default impl if it doesn't exist + socket.reconnect = function(){ + return socket.args ? + dojox.socket.LongPoll(socket.args) : + dojox.socket.WebSocket({url: socket.URL || socket.url}); // different cases for different impls + }; + } + return socket; +}; diff --git a/js/dojo-release-1.7.2-src/dojox/sql.js b/js/dojo-release-1.7.2-src/dojox/sql.js new file mode 100644 index 0000000..87da461 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sql.js @@ -0,0 +1,2 @@ +dojo.provide("dojox.sql"); +dojo.require("dojox.sql._base"); diff --git a/js/dojo-release-1.7.2-src/dojox/sql/LICENSE b/js/dojo-release-1.7.2-src/dojox/sql/LICENSE new file mode 100644 index 0000000..5c277ec --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sql/LICENSE @@ -0,0 +1,9 @@ +License Disclaimer: + +All contents of this directory are Copyright (c) the Dojo Foundation, with the +following exceptions: +------------------------------------------------------------------------------- + +_crypto.js - internally uses AES algorithm + * AES algorithm copyright Chris Veness (CLA signed and permission given to use code under BSD license) + Taken from http://www.movable-type.co.uk/scripts/aes.html diff --git a/js/dojo-release-1.7.2-src/dojox/sql/README b/js/dojo-release-1.7.2-src/dojox/sql/README new file mode 100644 index 0000000..3a4cc6b --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sql/README @@ -0,0 +1,32 @@ +------------------------------------------------------------------------------- +dojox.sql +------------------------------------------------------------------------------- +Version X.XXX +Release date: MM/DD/YYYY +------------------------------------------------------------------------------- +Project state: +experimental +------------------------------------------------------------------------------- +Credits + Brad Neuberg +------------------------------------------------------------------------------- +Project description + +Code to interface with the Google Gears-specific SQL engine, used +by dojox.storage and dojox.off. +------------------------------------------------------------------------------- +Dependencies: + +Google Gears (gears.google.com) +------------------------------------------------------------------------------- +Documentation + +TBD +------------------------------------------------------------------------------- +Installation instructions + +TBD +------------------------------------------------------------------------------- +Additional Notes + +We should consider relocating crypto code to dojox.encoding diff --git a/js/dojo-release-1.7.2-src/dojox/sql/_base.js b/js/dojo-release-1.7.2-src/dojox/sql/_base.js new file mode 100644 index 0000000..744bf0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sql/_base.js @@ -0,0 +1,547 @@ +dojo.provide("dojox.sql._base"); +dojo.require("dojox.sql._crypto"); + +dojo.mixin(dojox.sql, { + // summary: + // Executes a SQL expression. + // description: + // There are four ways to call this: + // 1) Straight SQL: dojox.sql("SELECT * FROM FOOBAR"); + // 2) SQL with parameters: dojox.sql("INSERT INTO FOOBAR VALUES (?)", someParam) + // 3) Encrypting particular values: + // dojox.sql("INSERT INTO FOOBAR VALUES (ENCRYPT(?))", someParam, "somePassword", callback) + // 4) Decrypting particular values: + // dojox.sql("SELECT DECRYPT(SOMECOL1), DECRYPT(SOMECOL2) FROM + // FOOBAR WHERE SOMECOL3 = ?", someParam, + // "somePassword", callback) + // + // For encryption and decryption the last two values should be the the password for + // encryption/decryption, and the callback function that gets the result set. + // + // Note: We only support ENCRYPT(?) statements, and + // and DECRYPT(*) statements for now -- you can not have a literal string + // inside of these, such as ENCRYPT('foobar') + // + // Note: If you have multiple columns to encrypt and decrypt, you can use the following + // convenience form to not have to type ENCRYPT(?)/DECRYPT(*) many times: + // + // dojox.sql("INSERT INTO FOOBAR VALUES (ENCRYPT(?, ?, ?))", + // someParam1, someParam2, someParam3, + // "somePassword", callback) + // + // dojox.sql("SELECT DECRYPT(SOMECOL1, SOMECOL2) FROM + // FOOBAR WHERE SOMECOL3 = ?", someParam, + // "somePassword", callback) + + dbName: null, + + // summary: + // If true, then we print out any SQL that is executed + // to the debug window + debug: (dojo.exists("dojox.sql.debug") ? dojox.sql.debug:false), + + open: function(dbName){ + if(this._dbOpen && (!dbName || dbName == this.dbName)){ + return; + } + + if(!this.dbName){ + this.dbName = "dot_store_" + + window.location.href.replace(/[^0-9A-Za-z_]/g, "_"); + // database names in Gears are limited to 64 characters long + if(this.dbName.length > 63){ + this.dbName = this.dbName.substring(0, 63); + } + } + + if(!dbName){ + dbName = this.dbName; + } + + try{ + this._initDb(); + this.db.open(dbName); + this._dbOpen = true; + }catch(exp){ + throw exp.message||exp; + } + }, + + close: function(dbName){ + // on Internet Explorer, Google Gears throws an exception + // "Object not a collection", when we try to close the + // database -- just don't close it on this platform + // since we are running into a Gears bug; the Gears team + // said it's ok to not close a database connection + if(dojo.isIE){ return; } + + if(!this._dbOpen && (!dbName || dbName == this.dbName)){ + return; + } + + if(!dbName){ + dbName = this.dbName; + } + + try{ + this.db.close(dbName); + this._dbOpen = false; + }catch(exp){ + throw exp.message||exp; + } + }, + + _exec: function(params){ + try{ + // get the Gears Database object + this._initDb(); + + // see if we need to open the db; if programmer + // manually called dojox.sql.open() let them handle + // it; otherwise we open and close automatically on + // each SQL execution + if(!this._dbOpen){ + this.open(); + this._autoClose = true; + } + + // determine our parameters + var sql = null; + var callback = null; + var password = null; + + var args = dojo._toArray(params); + + sql = args.splice(0, 1)[0]; + + // does this SQL statement use the ENCRYPT or DECRYPT + // keywords? if so, extract our callback and crypto + // password + if(this._needsEncrypt(sql) || this._needsDecrypt(sql)){ + callback = args.splice(args.length - 1, 1)[0]; + password = args.splice(args.length - 1, 1)[0]; + } + + // 'args' now just has the SQL parameters + + // print out debug SQL output if the developer wants that + if(this.debug){ + this._printDebugSQL(sql, args); + } + + // handle SQL that needs encryption/decryption differently + // do we have an ENCRYPT SQL statement? if so, handle that first + var crypto; + if(this._needsEncrypt(sql)){ + crypto = new dojox.sql._SQLCrypto("encrypt", sql, + password, args, + callback); + return null; // encrypted results will arrive asynchronously + }else if(this._needsDecrypt(sql)){ // otherwise we have a DECRYPT statement + crypto = new dojox.sql._SQLCrypto("decrypt", sql, + password, args, + callback); + return null; // decrypted results will arrive asynchronously + } + + // execute the SQL and get the results + var rs = this.db.execute(sql, args); + + // Gears ResultSet object's are ugly -- normalize + // these into something JavaScript programmers know + // how to work with, basically an array of + // JavaScript objects where each property name is + // simply the field name for a column of data + rs = this._normalizeResults(rs); + + if(this._autoClose){ + this.close(); + } + + return rs; + }catch(exp){ + exp = exp.message||exp; + + console.debug("SQL Exception: " + exp); + + if(this._autoClose){ + try{ + this.close(); + }catch(e){ + console.debug("Error closing database: " + + e.message||e); + } + } + + throw exp; + } + + return null; + }, + + _initDb: function(){ + if(!this.db){ + try{ + this.db = google.gears.factory.create('beta.database', '1.0'); + }catch(exp){ + dojo.setObject("google.gears.denied", true); + if(dojox.off){ + dojox.off.onFrameworkEvent("coreOperationFailed"); + } + throw "Google Gears must be allowed to run"; + } + } + }, + + _printDebugSQL: function(sql, args){ + var msg = "dojox.sql(\"" + sql + "\""; + for(var i = 0; i < args.length; i++){ + if(typeof args[i] == "string"){ + msg += ", \"" + args[i] + "\""; + }else{ + msg += ", " + args[i]; + } + } + msg += ")"; + + console.debug(msg); + }, + + _normalizeResults: function(rs){ + var results = []; + if(!rs){ return []; } + + while(rs.isValidRow()){ + var row = {}; + + for(var i = 0; i < rs.fieldCount(); i++){ + var fieldName = rs.fieldName(i); + var fieldValue = rs.field(i); + row[fieldName] = fieldValue; + } + + results.push(row); + + rs.next(); + } + + rs.close(); + + return results; + }, + + _needsEncrypt: function(sql){ + return /encrypt\([^\)]*\)/i.test(sql); + }, + + _needsDecrypt: function(sql){ + return /decrypt\([^\)]*\)/i.test(sql); + } +}); + +dojo.declare("dojox.sql._SQLCrypto", null, { + // summary: + // A private class encapsulating any cryptography that must be done + // on a SQL statement. We instantiate this class and have it hold + // it's state so that we can potentially have several encryption + // operations happening at the same time by different SQL statements. + constructor: function(action, sql, password, args, callback){ + if(action == "encrypt"){ + this._execEncryptSQL(sql, password, args, callback); + }else{ + this._execDecryptSQL(sql, password, args, callback); + } + }, + + _execEncryptSQL: function(sql, password, args, callback){ + // strip the ENCRYPT/DECRYPT keywords from the SQL + var strippedSQL = this._stripCryptoSQL(sql); + + // determine what arguments need encryption + var encryptColumns = this._flagEncryptedArgs(sql, args); + + // asynchronously encrypt each argument that needs it + var self = this; + this._encrypt(strippedSQL, password, args, encryptColumns, function(finalArgs){ + // execute the SQL + var error = false; + var resultSet = []; + var exp = null; + try{ + resultSet = dojox.sql.db.execute(strippedSQL, finalArgs); + }catch(execError){ + error = true; + exp = execError.message||execError; + } + + // was there an error during SQL execution? + if(exp != null){ + if(dojox.sql._autoClose){ + try{ dojox.sql.close(); }catch(e){} + } + + callback(null, true, exp.toString()); + return; + } + + // normalize SQL results into a JavaScript object + // we can work with + resultSet = dojox.sql._normalizeResults(resultSet); + + if(dojox.sql._autoClose){ + dojox.sql.close(); + } + + // are any decryptions necessary on the result set? + if(dojox.sql._needsDecrypt(sql)){ + // determine which of the result set columns needs decryption + var needsDecrypt = self._determineDecryptedColumns(sql); + + // now decrypt columns asynchronously + // decrypt columns that need it + self._decrypt(resultSet, needsDecrypt, password, function(finalResultSet){ + callback(finalResultSet, false, null); + }); + }else{ + callback(resultSet, false, null); + } + }); + }, + + _execDecryptSQL: function(sql, password, args, callback){ + // strip the ENCRYPT/DECRYPT keywords from the SQL + var strippedSQL = this._stripCryptoSQL(sql); + + // determine which columns needs decryption; this either + // returns the value *, which means all result set columns will + // be decrypted, or it will return the column names that need + // decryption set on a hashtable so we can quickly test a given + // column name; the key is the column name that needs + // decryption and the value is 'true' (i.e. needsDecrypt["someColumn"] + // would return 'true' if it needs decryption, and would be 'undefined' + // or false otherwise) + var needsDecrypt = this._determineDecryptedColumns(sql); + + // execute the SQL + var error = false; + var resultSet = []; + var exp = null; + try{ + resultSet = dojox.sql.db.execute(strippedSQL, args); + }catch(execError){ + error = true; + exp = execError.message||execError; + } + + // was there an error during SQL execution? + if(exp != null){ + if(dojox.sql._autoClose){ + try{ dojox.sql.close(); }catch(e){} + } + + callback(resultSet, true, exp.toString()); + return; + } + + // normalize SQL results into a JavaScript object + // we can work with + resultSet = dojox.sql._normalizeResults(resultSet); + + if(dojox.sql._autoClose){ + dojox.sql.close(); + } + + // decrypt columns that need it + this._decrypt(resultSet, needsDecrypt, password, function(finalResultSet){ + callback(finalResultSet, false, null); + }); + }, + + _encrypt: function(sql, password, args, encryptColumns, callback){ + //console.debug("_encrypt, sql="+sql+", password="+password+", encryptColumns="+encryptColumns+", args="+args); + + this._totalCrypto = 0; + this._finishedCrypto = 0; + this._finishedSpawningCrypto = false; + this._finalArgs = args; + + for(var i = 0; i < args.length; i++){ + if(encryptColumns[i]){ + // we have an encrypt() keyword -- get just the value inside + // the encrypt() parantheses -- for now this must be a ? + var sqlParam = args[i]; + var paramIndex = i; + + // update the total number of encryptions we know must be done asynchronously + this._totalCrypto++; + + // FIXME: This currently uses DES as a proof-of-concept since the + // DES code used is quite fast and was easy to work with. Modify dojox.sql + // to be able to specify a different encryption provider through a + // a SQL-like syntax, such as dojox.sql("SET ENCRYPTION BLOWFISH"), + // and modify the dojox.crypto.Blowfish code to be able to work using + // a Google Gears Worker Pool + + // do the actual encryption now, asychronously on a Gears worker thread + dojox.sql._crypto.encrypt(sqlParam, password, dojo.hitch(this, function(results){ + // set the new encrypted value + this._finalArgs[paramIndex] = results; + this._finishedCrypto++; + // are we done with all encryption? + if(this._finishedCrypto >= this._totalCrypto + && this._finishedSpawningCrypto){ + callback(this._finalArgs); + } + })); + } + } + + this._finishedSpawningCrypto = true; + }, + + _decrypt: function(resultSet, needsDecrypt, password, callback){ + //console.debug("decrypt, resultSet="+resultSet+", needsDecrypt="+needsDecrypt+", password="+password); + + this._totalCrypto = 0; + this._finishedCrypto = 0; + this._finishedSpawningCrypto = false; + this._finalResultSet = resultSet; + + for(var i = 0; i < resultSet.length; i++){ + var row = resultSet[i]; + + // go through each of the column names in row, + // seeing if they need decryption + for(var columnName in row){ + if(needsDecrypt == "*" || needsDecrypt[columnName]){ + this._totalCrypto++; + var columnValue = row[columnName]; + + // forming a closure here can cause issues, with values not cleanly + // saved on Firefox/Mac OS X for some of the values above that + // are needed in the callback below; call a subroutine that will form + // a closure inside of itself instead + this._decryptSingleColumn(columnName, columnValue, password, i, + function(finalResultSet){ + callback(finalResultSet); + }); + } + } + } + + this._finishedSpawningCrypto = true; + }, + + _stripCryptoSQL: function(sql){ + // replace all DECRYPT(*) occurrences with a * + sql = sql.replace(/DECRYPT\(\*\)/ig, "*"); + + // match any ENCRYPT(?, ?, ?, etc) occurrences, + // then replace with just the question marks in the + // middle + var matches = sql.match(/ENCRYPT\([^\)]*\)/ig); + if(matches != null){ + for(var i = 0; i < matches.length; i++){ + var encryptStatement = matches[i]; + var encryptValue = encryptStatement.match(/ENCRYPT\(([^\)]*)\)/i)[1]; + sql = sql.replace(encryptStatement, encryptValue); + } + } + + // match any DECRYPT(COL1, COL2, etc) occurrences, + // then replace with just the column names + // in the middle + matches = sql.match(/DECRYPT\([^\)]*\)/ig); + if(matches != null){ + for(i = 0; i < matches.length; i++){ + var decryptStatement = matches[i]; + var decryptValue = decryptStatement.match(/DECRYPT\(([^\)]*)\)/i)[1]; + sql = sql.replace(decryptStatement, decryptValue); + } + } + + return sql; + }, + + _flagEncryptedArgs: function(sql, args){ + // capture literal strings that have question marks in them, + // and also capture question marks that stand alone + var tester = new RegExp(/([\"][^\"]*\?[^\"]*[\"])|([\'][^\']*\?[^\']*[\'])|(\?)/ig); + var matches; + var currentParam = 0; + var results = []; + while((matches = tester.exec(sql)) != null){ + var currentMatch = RegExp.lastMatch+""; + + // are we a literal string? then ignore it + if(/^[\"\']/.test(currentMatch)){ + continue; + } + + // do we have an encrypt keyword to our left? + var needsEncrypt = false; + if(/ENCRYPT\([^\)]*$/i.test(RegExp.leftContext)){ + needsEncrypt = true; + } + + // set the encrypted flag + results[currentParam] = needsEncrypt; + + currentParam++; + } + + return results; + }, + + _determineDecryptedColumns: function(sql){ + var results = {}; + + if(/DECRYPT\(\*\)/i.test(sql)){ + results = "*"; + }else{ + var tester = /DECRYPT\((?:\s*\w*\s*\,?)*\)/ig; + var matches = tester.exec(sql); + while(matches){ + var lastMatch = new String(RegExp.lastMatch); + var columnNames = lastMatch.replace(/DECRYPT\(/i, ""); + columnNames = columnNames.replace(/\)/, ""); + columnNames = columnNames.split(/\s*,\s*/); + dojo.forEach(columnNames, function(column){ + if(/\s*\w* AS (\w*)/i.test(column)){ + column = column.match(/\s*\w* AS (\w*)/i)[1]; + } + results[column] = true; + }); + + matches = tester.exec(sql) + } + } + + return results; + }, + + _decryptSingleColumn: function(columnName, columnValue, password, currentRowIndex, + callback){ + //console.debug("decryptSingleColumn, columnName="+columnName+", columnValue="+columnValue+", currentRowIndex="+currentRowIndex) + dojox.sql._crypto.decrypt(columnValue, password, dojo.hitch(this, function(results){ + // set the new decrypted value + this._finalResultSet[currentRowIndex][columnName] = results; + this._finishedCrypto++; + + // are we done with all encryption? + if(this._finishedCrypto >= this._totalCrypto + && this._finishedSpawningCrypto){ + //console.debug("done with all decrypts"); + callback(this._finalResultSet); + } + })); + } +}); + +(function(){ + + var orig_sql = dojox.sql; + dojox.sql = new Function("return dojox.sql._exec(arguments);"); + dojo.mixin(dojox.sql, orig_sql); + +})(); diff --git a/js/dojo-release-1.7.2-src/dojox/sql/_crypto.js b/js/dojo-release-1.7.2-src/dojox/sql/_crypto.js new file mode 100644 index 0000000..bf29f82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/sql/_crypto.js @@ -0,0 +1,440 @@ +dojo.provide("dojox.sql._crypto"); +dojo.mixin(dojox.sql._crypto, { + // summary: dojox.sql cryptography code + // description: + // Taken from http://www.movable-type.co.uk/scripts/aes.html by + // Chris Veness (CLA signed); adapted for Dojo and Google Gears Worker Pool + // by Brad Neuberg, bkn3@columbia.edu + // + // _POOL_SIZE: + // Size of worker pool to create to help with crypto + _POOL_SIZE: 100, + + encrypt: function(plaintext, password, callback){ + // summary: + // Use Corrected Block TEA to encrypt plaintext using password + // (note plaintext & password must be strings not string objects). + // Results will be returned to the 'callback' asychronously. + this._initWorkerPool(); + + var msg ={plaintext: plaintext, password: password}; + msg = dojo.toJson(msg); + msg = "encr:" + String(msg); + + this._assignWork(msg, callback); + }, + + decrypt: function(ciphertext, password, callback){ + // summary: + // Use Corrected Block TEA to decrypt ciphertext using password + // (note ciphertext & password must be strings not string objects). + // Results will be returned to the 'callback' asychronously. + this._initWorkerPool(); + + var msg = {ciphertext: ciphertext, password: password}; + msg = dojo.toJson(msg); + msg = "decr:" + String(msg); + + this._assignWork(msg, callback); + }, + + _initWorkerPool: function(){ + // bugs in Google Gears prevents us from dynamically creating + // and destroying workers as we need them -- the worker + // pool functionality stops working after a number of crypto + // cycles (probably related to a memory leak in Google Gears). + // this is too bad, since it results in much simpler code. + + // instead, we have to create a pool of workers and reuse them. we + // keep a stack of 'unemployed' Worker IDs that are currently not working. + // if a work request comes in, we pop off the 'unemployed' stack + // and put them to work, storing them in an 'employed' hashtable, + // keyed by their Worker ID with the value being the callback function + // that wants the result. when an employed worker is done, we get + // a message in our 'manager' which adds this worker back to the + // unemployed stack and routes the result to the callback that + // wanted it. if all the workers were employed in the past but + // more work needed to be done (i.e. it's a tight labor pool ;) + // then the work messages are pushed onto + // a 'handleMessage' queue as an object tuple{msg: msg, callback: callback} + + if(!this._manager){ + try{ + this._manager = google.gears.factory.create("beta.workerpool", "1.0"); + this._unemployed = []; + this._employed ={}; + this._handleMessage = []; + + var self = this; + this._manager.onmessage = function(msg, sender){ + // get the callback necessary to serve this result + var callback = self._employed["_" + sender]; + + // make this worker unemployed + self._employed["_" + sender] = undefined; + self._unemployed.push("_" + sender); + + // see if we need to assign new work + // that was queued up needing to be done + if(self._handleMessage.length){ + var handleMe = self._handleMessage.shift(); + self._assignWork(handleMe.msg, handleMe.callback); + } + + // return results + callback(msg); + } + + var workerInit = "function _workerInit(){" + + "gearsWorkerPool.onmessage = " + + String(this._workerHandler) + + ";" + + "}"; + + var code = workerInit + " _workerInit();"; + + // create our worker pool + for(var i = 0; i < this._POOL_SIZE; i++){ + this._unemployed.push("_" + this._manager.createWorker(code)); + } + }catch(exp){ + throw exp.message||exp; + } + } + }, + + _assignWork: function(msg, callback){ + // can we immediately assign this work? + if(!this._handleMessage.length && this._unemployed.length){ + // get an unemployed worker + var workerID = this._unemployed.shift().substring(1); // remove _ + + // list this worker as employed + this._employed["_" + workerID] = callback; + + // do the worke + this._manager.sendMessage(msg, parseInt(workerID,10)); + }else{ + // we have to queue it up + this._handleMessage ={msg: msg, callback: callback}; + } + }, + + _workerHandler: function(msg, sender){ + + /* Begin AES Implementation */ + + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + + // Sbox is pre-computed multiplicative inverse in GF(2^8) used in SubBytes and KeyExpansion [§5.1.1] + var Sbox = [0x63,0x7c,0x77,0x7b,0xf2,0x6b,0x6f,0xc5,0x30,0x01,0x67,0x2b,0xfe,0xd7,0xab,0x76, + 0xca,0x82,0xc9,0x7d,0xfa,0x59,0x47,0xf0,0xad,0xd4,0xa2,0xaf,0x9c,0xa4,0x72,0xc0, + 0xb7,0xfd,0x93,0x26,0x36,0x3f,0xf7,0xcc,0x34,0xa5,0xe5,0xf1,0x71,0xd8,0x31,0x15, + 0x04,0xc7,0x23,0xc3,0x18,0x96,0x05,0x9a,0x07,0x12,0x80,0xe2,0xeb,0x27,0xb2,0x75, + 0x09,0x83,0x2c,0x1a,0x1b,0x6e,0x5a,0xa0,0x52,0x3b,0xd6,0xb3,0x29,0xe3,0x2f,0x84, + 0x53,0xd1,0x00,0xed,0x20,0xfc,0xb1,0x5b,0x6a,0xcb,0xbe,0x39,0x4a,0x4c,0x58,0xcf, + 0xd0,0xef,0xaa,0xfb,0x43,0x4d,0x33,0x85,0x45,0xf9,0x02,0x7f,0x50,0x3c,0x9f,0xa8, + 0x51,0xa3,0x40,0x8f,0x92,0x9d,0x38,0xf5,0xbc,0xb6,0xda,0x21,0x10,0xff,0xf3,0xd2, + 0xcd,0x0c,0x13,0xec,0x5f,0x97,0x44,0x17,0xc4,0xa7,0x7e,0x3d,0x64,0x5d,0x19,0x73, + 0x60,0x81,0x4f,0xdc,0x22,0x2a,0x90,0x88,0x46,0xee,0xb8,0x14,0xde,0x5e,0x0b,0xdb, + 0xe0,0x32,0x3a,0x0a,0x49,0x06,0x24,0x5c,0xc2,0xd3,0xac,0x62,0x91,0x95,0xe4,0x79, + 0xe7,0xc8,0x37,0x6d,0x8d,0xd5,0x4e,0xa9,0x6c,0x56,0xf4,0xea,0x65,0x7a,0xae,0x08, + 0xba,0x78,0x25,0x2e,0x1c,0xa6,0xb4,0xc6,0xe8,0xdd,0x74,0x1f,0x4b,0xbd,0x8b,0x8a, + 0x70,0x3e,0xb5,0x66,0x48,0x03,0xf6,0x0e,0x61,0x35,0x57,0xb9,0x86,0xc1,0x1d,0x9e, + 0xe1,0xf8,0x98,0x11,0x69,0xd9,0x8e,0x94,0x9b,0x1e,0x87,0xe9,0xce,0x55,0x28,0xdf, + 0x8c,0xa1,0x89,0x0d,0xbf,0xe6,0x42,0x68,0x41,0x99,0x2d,0x0f,0xb0,0x54,0xbb,0x16]; + + // Rcon is Round Constant used for the Key Expansion [1st col is 2^(r-1) in GF(2^8)] [§5.2] + var Rcon = [ [0x00, 0x00, 0x00, 0x00], + [0x01, 0x00, 0x00, 0x00], + [0x02, 0x00, 0x00, 0x00], + [0x04, 0x00, 0x00, 0x00], + [0x08, 0x00, 0x00, 0x00], + [0x10, 0x00, 0x00, 0x00], + [0x20, 0x00, 0x00, 0x00], + [0x40, 0x00, 0x00, 0x00], + [0x80, 0x00, 0x00, 0x00], + [0x1b, 0x00, 0x00, 0x00], + [0x36, 0x00, 0x00, 0x00] ]; + + /* + * AES Cipher function: encrypt 'input' with Rijndael algorithm + * + * takes byte-array 'input' (16 bytes) + * 2D byte-array key schedule 'w' (Nr+1 x Nb bytes) + * + * applies Nr rounds (10/12/14) using key schedule w for 'add round key' stage + * + * returns byte-array encrypted value (16 bytes) + */ + function Cipher(input, w) { // main Cipher function [§5.1] + var Nb = 4; // block size (in words): no of columns in state (fixed at 4 for AES) + var Nr = w.length/Nb - 1; // no of rounds: 10/12/14 for 128/192/256-bit keys + + var state = [[],[],[],[]]; // initialise 4xNb byte-array 'state' with input [§3.4] + for (var i=0; i<4*Nb; i++) state[i%4][Math.floor(i/4)] = input[i]; + + state = AddRoundKey(state, w, 0, Nb); + + for (var round=1; round 6 && i%Nk == 4) { + temp = SubWord(temp); + } + for (var t=0; t<4; t++) w[i][t] = w[i-Nk][t] ^ temp[t]; + } + + return w; + } + + function SubWord(w) { // apply SBox to 4-byte word w + for (var i=0; i<4; i++) w[i] = Sbox[w[i]]; + return w; + } + + function RotWord(w) { // rotate 4-byte word w left by one byte + w[4] = w[0]; + for (var i=0; i<4; i++) w[i] = w[i+1]; + return w; + } + + /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ + + /* + * Use AES to encrypt 'plaintext' with 'password' using 'nBits' key, in 'Counter' mode of operation + * - see http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf + * for each block + * - outputblock = cipher(counter, key) + * - cipherblock = plaintext xor outputblock + */ + function AESEncryptCtr(plaintext, password, nBits) { + if (!(nBits==128 || nBits==192 || nBits==256)) return ''; // standard allows 128/192/256 bit keys + + // for this example script, generate the key by applying Cipher to 1st 16/24/32 chars of password; + // for real-world applications, a more secure approach would be to hash the password e.g. with SHA-1 + var nBytes = nBits/8; // no bytes in key + var pwBytes = new Array(nBytes); + for (var i=0; i>> i*8) & 0xff; + for (var i=0; i<4; i++) counterBlock[i+4] = (nonce/0x100000000 >>> i*8) & 0xff; + + // generate key schedule - an expansion of the key into distinct Key Rounds for each round + var keySchedule = KeyExpansion(key); + + var blockCount = Math.ceil(plaintext.length/blockSize); + var ciphertext = new Array(blockCount); // ciphertext as array of strings + + for (var b=0; b>> c*8) & 0xff; + for (var c=0; c<4; c++) counterBlock[15-c-4] = (b/0x100000000 >>> c*8) + + var cipherCntr = Cipher(counterBlock, keySchedule); // -- encrypt counter block -- + + // calculate length of final block: + var blockLength = b>> c*8) & 0xff; + for (var c=0; c<4; c++) counterBlock[15-c-4] = ((b/0x100000000-1) >>> c*8) & 0xff; + + var cipherCntr = Cipher(counterBlock, keySchedule); // encrypt counter block + + ciphertext[b] = unescCtrlChars(ciphertext[b]); + + var pt = ''; + for (var i=0; i + + + + + + + + + + + + +

                                                                      Dojo SQL Cryptography

                                                                      + +

                                                                      Instructions

                                                                      + +

                                                                      This demo shows Dojo Offline's SQL encryption technologies. In the table below, we have a + sample SQL table that has three columns of data: a last name, a first name, and + a social security number. We don't want to store the social security numbers + in the clear, just in case they are downloaded for offline use to a laptop and the + laptop is stolen.

                                                                      + +

                                                                      To use this demo, enter a password and press the ENCRYPT button to see the Social Security column encrypt. Enter + the same password and press DECRYPT to see it decrypt. If you enter an incorrect password and + press DECRYPT, the Social Security column will remain encrypted and only show gibberish.

                                                                      + +

                                                                      Under the covers we use 256-bit AES encryption and your password to derive the crypto key; we use + a facility in Google Gears to do the cryptography in such a way that the browser does not lock up + during processing. Dojo Offline ties this cryptography into Dojo SQL, providing convenient ENCRYPT() + and DECRYPT() SQL keywords you can use to easily have this functionality in your + own offline applications. To learn how you can use this feature + see here.

                                                                      + +
                                                                      + + + + + + + +
                                                                      + +
                                                                      + + + + + +
                                                                      + + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/storage.js b/js/dojo-release-1.7.2-src/dojox/storage.js new file mode 100644 index 0000000..1c2d149 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/storage.js @@ -0,0 +1,2 @@ +dojo.provide("dojox.storage"); +dojo.require("dojox.storage._common"); diff --git a/js/dojo-release-1.7.2-src/dojox/storage/AirDBStorageProvider.js b/js/dojo-release-1.7.2-src/dojox/storage/AirDBStorageProvider.js new file mode 100644 index 0000000..b1da528 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/storage/AirDBStorageProvider.js @@ -0,0 +1,248 @@ +dojo.provide("dojox.storage.AirDBStorageProvider"); +dojo.require("dojox.storage.manager"); +dojo.require("dojox.storage.Provider"); + +if (dojo.isAIR) { + (function(){ + + if (!air) { + var air = {}; + } + air.File = window.runtime.flash.filesystem.File; + air.SQLConnection = window.runtime.flash.data.SQLConnection; + air.SQLStatement = window.runtime.flash.data.SQLStatement; + + // summary: + // Storage provider that uses features in the Adobe AIR runtime to achieve + // permanent storage + dojo.declare("dojox.storage.AirDBStorageProvider", [ dojox.storage.Provider ], { + DATABASE_FILE: "dojo.db", + TABLE_NAME: "__DOJO_STORAGE", + initialized: false, + + _db: null, + + initialize: function(){ + this.initialized = false; + + // need to initialize our storage database + try{ + this._db = new air.SQLConnection(); + this._db.open(air.File.applicationStorageDirectory.resolvePath(this.DATABASE_FILE)); + + this._sql("CREATE TABLE IF NOT EXISTS " + this.TABLE_NAME + "(namespace TEXT, key TEXT, value TEXT)"); + this._sql("CREATE UNIQUE INDEX IF NOT EXISTS namespace_key_index ON " + this.TABLE_NAME + " (namespace, key)"); + + this.initialized = true; + }catch(e){ + console.debug("dojox.storage.AirDBStorageProvider.initialize:", e); + } + + // indicate that this storage provider is now loaded + dojox.storage.manager.loaded(); + }, + + _sql: function(query, params){ + var stmt = new air.SQLStatement(); + stmt.sqlConnection = this._db; + stmt.text = query; + if (params){ + for (var param in params){ + stmt.parameters[param] = params[param]; + } + } + stmt.execute(); + return stmt.getResult(); + }, + + _beginTransaction: function(){ + this._db.begin(); + }, + + _commitTransaction: function(){ + this._db.commit(); + }, + + isAvailable: function(){ + return true; + }, + + put: function(key, value, resultsHandler, namespace){ + if(this.isValidKey(key) == false){ + throw new Error("Invalid key given: " + key); + } + namespace = namespace||this.DEFAULT_NAMESPACE; + if(this.isValidKey(namespace) == false){ + throw new Error("Invalid namespace given: " + namespace); + } + + // try to store the value + try{ + this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key", + { ":namespace":namespace, ":key":key }); + this._sql("INSERT INTO " + this.TABLE_NAME + " VALUES (:namespace, :key, :value)", + { ":namespace":namespace, ":key":key, ":value":value }); + }catch(e){ + // indicate we failed + console.debug("dojox.storage.AirDBStorageProvider.put:", e); + resultsHandler(this.FAILED, key, e.toString()); + return; + } + + if(resultsHandler){ + resultsHandler(this.SUCCESS, key, null, namespace); + } + }, + + get: function(key, namespace){ + if(this.isValidKey(key) == false){ + throw new Error("Invalid key given: " + key); + } + namespace = namespace||this.DEFAULT_NAMESPACE; + + var results = this._sql("SELECT * FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key", + { ":namespace":namespace, ":key":key }); + + if(results.data && results.data.length){ + return results.data[0].value; + } + + return null; + }, + + getNamespaces: function(){ + var results = [ this.DEFAULT_NAMESPACE ]; + var rs = this._sql("SELECT namespace FROM " + this.TABLE_NAME + " DESC GROUP BY namespace"); + if (rs.data){ + for(var i = 0; i < rs.data.length; i++){ + if(rs.data[i].namespace != this.DEFAULT_NAMESPACE){ + results.push(rs.data[i].namespace); + } + } + } + return results; + }, + + getKeys: function(namespace){ + namespace = namespace||this.DEFAULT_NAMESPACE; + if(this.isValidKey(namespace) == false){ + throw new Error("Invalid namespace given: " + namespace); + } + + var results = []; + var rs = this._sql("SELECT key FROM " + this.TABLE_NAME + " WHERE namespace = :namespace", { ":namespace":namespace }); + if (rs.data){ + for(var i = 0; i < rs.data.length; i++){ + results.push(rs.data[i].key); + } + } + return results; + }, + + clear: function(namespace){ + if(this.isValidKey(namespace) == false){ + throw new Error("Invalid namespace given: " + namespace); + } + this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = :namespace", { ":namespace":namespace }); + }, + + remove: function(key, namespace){ + namespace = namespace||this.DEFAULT_NAMESPACE; + this._sql("DELETE FROM " + this.TABLE_NAME + " WHERE namespace = :namespace AND key = :key", + { ":namespace":namespace, ":key":key }); + }, + + putMultiple: function(keys, values, resultsHandler, namespace) { + if(this.isValidKeyArray(keys) === false + || ! values instanceof Array + || keys.length != values.length){ + throw new Error("Invalid arguments: keys = [" + keys + "], values = [" + values + "]"); + } + + if(namespace == null || typeof namespace == "undefined"){ + namespace = this.DEFAULT_NAMESPACE; + } + + if(this.isValidKey(namespace) == false){ + throw new Error("Invalid namespace given: " + namespace); + } + + this._statusHandler = resultsHandler; + + // try to store the value + try{ + this._beginTransaction(); + for(var i=0;i= 5; + }, + + _createStore: function() { + var storeNode = dojo.create( + 'link', + {id: this.storeName + 'Node', style: {'display':'none'}}, + dojo.query('head')[0] + ); + storeNode.addBehavior('#default#userdata'); + + return storeNode; + }, + + put: function( /*string*/ key, + /*object*/ value, + /*function*/ resultsHandler, + /*string?*/ namespace){ + + this._assertIsValidKey(key); + + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + var fullKey = this.getFullKey(key,namespace); + value = dojo.toJson(value); + + this.store.setAttribute(fullKey, value); + this.store.save(this.storeName); + + var success = this.store.getAttribute(fullKey) === value; + if(success){ + this._addKey(fullKey); + this.store.setAttribute('__dojoxSystemNS_keys', dojo.toJson(this.keys)); + this.store.save(this.storeName); + } + + if(resultsHandler){ + resultsHandler(success ? this.SUCCESS : this.FAILED, key, null, namespace); + } + }, + + get: function(/*string*/ key, /*string?*/ namespace){ /*Object*/ + this._assertIsValidKey(key); + + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + key = this.getFullKey(key, namespace); + + return dojo.fromJson(this.store.getAttribute(key)); + }, + + getKeys: function(/*string?*/ namespace){ /*Array*/ + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + namespace = '__'+namespace+'_'; + + var keys = []; + for(var i = 0; i < this.keys.length; i++){ + var currentKey = this.keys[i]; + if(this._beginsWith(currentKey,namespace)){ + currentKey = currentKey.substring(namespace.length); + keys.push(currentKey); + } + } + + return keys; + }, + + clear: function(/*string?*/ namespace){ + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + namespace = '__'+namespace+'_'; + + var keys = []; + for(var i = 0; i < this.keys.length; i++){ + var currentKey = this.keys[i]; + if(this._beginsWith(currentKey,namespace)){ + keys.push(currentKey); + } + } + + dojo.forEach(keys, function(key){ + this.store.removeAttribute(key); + this._removeKey(key); + }, this); + + this.put('keys', this.keys, null, 'dojoxSystemNS'); + this.store.save(this.storeName); + }, + + remove: function(/*string*/ key, /*string?*/ namespace){ + this._assertIsValidKey(key); + + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + key = this.getFullKey(key, namespace); + this.store.removeAttribute(key); + + this._removeKey(key); + this.put('keys', this.keys, null, 'dojoxSystemNS'); + this.store.save(this.storeName); + + }, + + getNamespaces: function(){ /*string[]*/ + + + var results = [ this.DEFAULT_NAMESPACE]; + + var found = {}; + found[this.DEFAULT_NAMESPACE] = true; + var tester = /^__([^_]*)_/; + + for(var i = 0; i < this.keys.length; i++){ + var currentKey = this.keys[i]; + if(tester.test(currentKey) == true){ + var currentNS = currentKey.match(tester)[1]; + if(typeof found[currentNS] == "undefined"){ + found[currentNS] = true; + results.push(currentNS); + } + } + } + + return results; + + }, + + isPermanent: function(){ /*Boolean*/ + return true; + }, + + getMaximumSize: function(){ /* mixed */ + // this *might* be more, depending on the zone + // of the current site. But 64k is guaranteed. + return 64; + }, + + hasSettingsUI: function(){ /*Boolean*/ + return false; + }, + + isValidKey: function(/*string*/ keyName){ /*Boolean*/ + if(keyName === null || keyName === undefined){ + return false; + } + + return /^[0-9A-Za-z_-]*$/.test(keyName); + }, + + isValidNamespace: function(/*string*/ keyName){ /*Boolean*/ + + if(keyName === null || keyName === undefined){ + return false; + } + + return /^[0-9A-Za-z-]*$/.test(keyName); + }, + + getFullKey: function(key, namespace){ + // checks for valid namespace and + // key are already performed. + return "__" + namespace + "_" + key; + }, + + _beginsWith: function(/* string */ haystack, /* string */ needle) { + if(needle.length > haystack.length) { + return false; + } + return haystack.substring(0,needle.length) === needle; + }, + + _assertIsValidNamespace: function(/* string */ namespace){ + if(this.isValidNamespace(namespace) === false){ + throw new Error("Invalid namespace given: " + namespace); + } + }, + + _assertIsValidKey: function(/* string */ key){ + if(this.isValidKey(key) === false){ + throw new Error("Invalid key given: " + key); + } + }, + + _addKey: function(key){ + this._removeKey(key); + this.keys.push(key); + }, + + _removeKey: function(key){ + this.keys = dojo.filter(this.keys,function(item){ return item !== key;},this); + } + } +); + +dojox.storage.manager.register("dojox.storage.BehaviorStorageProvider", new dojox.storage.BehaviorStorageProvider()); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/dojox/storage/CookieStorageProvider.js b/js/dojo-release-1.7.2-src/dojox/storage/CookieStorageProvider.js new file mode 100644 index 0000000..724475a --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/storage/CookieStorageProvider.js @@ -0,0 +1,202 @@ +dojo.provide("dojox.storage.CookieStorageProvider"); + +dojo.require("dojox.storage.Provider"); +dojo.require("dojox.storage.manager"); +dojo.require("dojo.cookie"); + +dojo.declare( + "dojox.storage.CookieStorageProvider", + [dojox.storage.Provider], + { + store: null, + + cookieName: 'dojoxStorageCookie', + + storageLife: 730, // in days + + initialize: function(){ + + this.store = dojo.fromJson(dojo.cookie(this.cookieName)) || {}; + + this.initialized = true; + dojox.storage.manager.loaded(); + }, + + isAvailable: function(){ /*Boolean*/ + return dojo.cookie.isSupported(); + }, + + put: function( /*string*/ key, + /*object*/ value, + /*function*/ resultsHandler, + /*string?*/ namespace){ + + this._assertIsValidKey(key); + + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + fullKey = this.getFullKey(key,namespace); + + this.store[fullKey] = dojo.toJson(value); + this._save(); + + var success = dojo.toJson(this.store) === dojo.cookie(this.cookieName); + + if(!success){ + this.remove(key,namespace); + } + + if(resultsHandler){ + resultsHandler(success ? this.SUCCESS : this.FAILED, key, null, namespace); + } + + }, + + get: function(/*string*/ key, /*string?*/ namespace){ /*Object*/ + this._assertIsValidKey(key); + + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + // get our full key name, which is namespace + key + key = this.getFullKey(key, namespace); + + return this.store[key] ? dojo.fromJson(this.store[key]) : null; + }, + + getKeys: function(/*string?*/ namespace){ /*Array*/ + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + namespace = '__'+namespace+'_'; + + var keys = []; + for(var currentKey in this.store){ + if(this._beginsWith(currentKey,namespace)){ + currentKey = currentKey.substring(namespace.length); + keys.push(currentKey); + } + } + + return keys; + }, + + clear: function(/*string?*/ namespace){ + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + namespace = '__'+namespace+'_'; + + for(var currentKey in this.store){ + if(this._beginsWith(currentKey,namespace)){ + delete(this.store[currentKey]); + } + } + + this._save(); + }, + + remove: function(/*string*/ key, /*string?*/ namespace){ + namespace = namespace||this.DEFAULT_NAMESPACE; + this._assertIsValidNamespace(namespace); + + this._assertIsValidKey(key); + key = this.getFullKey(key, namespace); + + delete this.store[key]; + this._save(); + }, + + getNamespaces: function(){ /*string[]*/ + // There must be a better way than + // to execute a regex on *every* + // item in the store. + + var results = [this.DEFAULT_NAMESPACE]; + + var found = {}; + found[this.DEFAULT_NAMESPACE] = true; + var tester = /^__([^_]*)_/; + + for(var currentKey in this.store){ + if(tester.test(currentKey) == true){ + var currentNS = currentKey.match(tester)[1]; + if(typeof found[currentNS] == "undefined"){ + found[currentNS] = true; + results.push(currentNS); + } + } + } + + return results; + }, + + isPermanent: function(){ /*Boolean*/ + return true; + }, + + getMaximumSize: function(){ /* mixed */ + return 4; + }, + + hasSettingsUI: function(){ /*Boolean*/ + return false; + }, + + isValidKey: function(/*string*/ keyName){ /*Boolean*/ + if(keyName === null || keyName === undefined){ + return false; + } + + return /^[0-9A-Za-z_-]*$/.test(keyName); + }, + + isValidNamespace: function(/*string*/ keyName){ /*Boolean*/ + // we *must* prevent namespaces from having + // underscores - else lookup of namespaces + // via RegEx (e.g. in getNamespaces ) would + // return wrong results. + // + // The only way around this would be to + // disallow underscores in keys. + + if(keyName === null || keyName === undefined){ + return false; + } + + return /^[0-9A-Za-z-]*$/.test(keyName); + }, + + getFullKey: function(key, namespace){ + // checks for valid namespace and + // key are already performed. + return "__" + namespace + "_" + key; + }, + + _save: function(){ + dojo.cookie(this.cookieName,dojo.toJson(this.store),{expires: this.storageLife}); + }, + + _beginsWith: function(/* string */ haystack, /* string */ needle) { + if(needle.length > haystack.length) { + return false; + } + return haystack.substring(0,needle.length) === needle; + }, + + _assertIsValidNamespace: function(/* string */ namespace){ + if(this.isValidNamespace(namespace) === false){ + throw new Error("Invalid namespace given: " + namespace); + } + }, + + _assertIsValidKey: function(/* string */ key){ + if(this.isValidKey(key) === false){ + throw new Error("Invalid key given: " + key); + } + } + } +); + +dojox.storage.manager.register("dojox.storage.CookieStorageProvider", new dojox.storage.CookieStorageProvider()); diff --git a/js/dojo-release-1.7.2-src/dojox/storage/FlashStorageProvider.js b/js/dojo-release-1.7.2-src/dojox/storage/FlashStorageProvider.js new file mode 100644 index 0000000..b9dbe75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/dojox/storage/FlashStorageProvider.js @@ -0,0 +1,342 @@ +dojo.provide("dojox.storage.FlashStorageProvider"); + +dojo.require("dojox.flash"); +dojo.require("dojox.storage.manager"); +dojo.require("dojox.storage.Provider"); + +// summary: +// Storage provider that uses features in Flash to achieve permanent +// storage +// description: +// Authors of this storage provider- +// Brad Neuberg, bkn3@columbia.edu +dojo.declare("dojox.storage.FlashStorageProvider", dojox.storage.Provider, { + initialized: false, + + _available: null, + _statusHandler: null, + _flashReady: false, + _pageReady: false, + + initialize: function(){ + //console.debug("FlashStorageProvider.initialize"); + if(dojo.config["disableFlashStorage"] == true){ + return; + } + + // initialize our Flash + dojox.flash.addLoadedListener(dojo.hitch(this, function(){ + //console.debug("flashReady"); + // indicate our Flash subsystem is now loaded + this._flashReady = true; + if(this._flashReady && this._pageReady){ + this._loaded(); + } + })); + var swfLoc = dojo.moduleUrl("dojox", "storage/Storage.swf").toString(); + dojox.flash.setSwf(swfLoc, false); + + // wait till page is finished loading + dojo.connect(dojo, "loaded", this, function(){ + //console.debug("pageReady"); + this._pageReady = true; + if(this._flashReady && this._pageReady){ + this._loaded(); + } + }); + }, + + // Set a new value for the flush delay timer. + // Possible values: + // 0 : Perform the flush synchronously after each "put" request + // > 0 : Wait until 'newDelay' ms have passed without any "put" request to flush + // -1 : Do not automatically flush + setFlushDelay: function(newDelay){ + if(newDelay === null || typeof newDelay === "undefined" || isNaN(newDelay)){ + throw new Error("Invalid argunment: " + newDelay); + } + + dojox.flash.comm.setFlushDelay(String(newDelay)); + }, + + getFlushDelay: function(){ + return Number(dojox.flash.comm.getFlushDelay()); + }, + + flush: function(namespace){ + //FIXME: is this test necessary? Just use !namespace + if(namespace == null || typeof namespace == "undefined"){ + namespace = dojox.storage.DEFAULT_NAMESPACE; + } + dojox.flash.comm.flush(namespace); + }, + + isAvailable: function(){ + return (this._available = !dojo.config["disableFlashStorage"]); + }, + + put: function(key, value, resultsHandler, namespace){ + if(!this.isValidKey(key)){ + throw new Error("Invalid key given: " + key); + } + + if(!namespace){ + namespace = dojox.storage.DEFAULT_NAMESPACE; + } + + if(!this.isValidKey(namespace)){ + throw new Error("Invalid namespace given: " + namespace); + } + + this._statusHandler = resultsHandler; + + // serialize the value; + // handle strings differently so they have better performance + if(dojo.isString(value)){ + value = "string:" + value; + }else{ + value = dojo.toJson(value); + } + + dojox.flash.comm.put(key, value, namespace); + }, + + putMultiple: function(keys, values, resultsHandler, namespace){ + if(!this.isValidKeyArray(keys) || ! values instanceof Array + || keys.length != values.length){ + throw new Error("Invalid arguments: keys = [" + keys + "], values = [" + values + "]"); + } + + if(!namespace){ + namespace = dojox.storage.DEFAULT_NAMESPACE; + } + + if(!this.isValidKey(namespace)){ + throw new Error("Invalid namespace given: " + namespace); + } + + this._statusHandler = resultsHandler; + + // Convert the arguments on strings we can pass along to Flash + var metaKey = keys.join(","); + var lengths = []; + for(var i=0;i
                                                                      ')); + } + + return implode("\n", $lines); + } + + protected function descend($document, $node, $object) { + foreach ($object as $key => $value) { + if (is_bool($value)) { + $value = $value ? 'true' : 'false'; + } + switch ($key{0}) { + case '@': + $node->setAttribute(substr($key, 1), $value); + break; + case '#': + foreach ($value as $child) { + $this->descend($document, $node->appendChild($document->createElement(substr($key, 1))), $child); + } + break; + default: + if ($key === 'content') { + $node->appendChild($document->createTextNode($value)); + } + } + } + } + + public function convertToRaw($object) { + $document = new DOMDocument('1.0', 'UTF-8'); + $document->preserveWhiteSpace = true; + $document->formatOutput = true; + + $this->descend($document, $document->appendChild($document->createElement('object')), $object); + + return $document; + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/common/AbstractSerializer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/common/AbstractSerializer.php new file mode 100644 index 0000000..28bc89a --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/common/AbstractSerializer.php @@ -0,0 +1,350 @@ +toRaw($value, $id); + $this->set($id, $raw); + return $raw; + } + + protected function buildResources(&$node, $object) { + if (!empty($object['#resource'])) { + $node['#resources'][] = array(); + $resources_node = &$node['#resources'][count($node['#resources']) - 1]; + foreach ($object['#resource'] as $resource) { + $resources_node['#resource'][] = array(); + $resource_node = &$resources_node['#resource'][count($resources_node['#resource']) - 1]; + $resource_node['content'] = $resource; + } + } + + if (!empty($object['#provides'])) { + $node['#provides'][] = array(); + $provides_node = &$node['#provides'][count($node['#provides']) - 1]; + foreach ($object['#provides'] as $provide) { + $provides_node['#provide'][] = array(); + $provide_node = &$provides_node['#provide'][count($provides_node['#provide']) - 1]; + $provide_node['content'] = $provide; + } + } + } + + protected function buildMethod(&$method_node, $method, $method_id, $child = TRUE) { + if ($child) { + $this->buildResources($method_node, $method); + + $method_node['@name'] = $method_id; + + if ($method_id == 'preamble' || $method_id == 'postscript') { + $method_node['@constructor'] = $method_id; + } + + if ($method['instance'] && $method['prototype']) { + $method_node['@scope'] = 'instance-prototype'; + } + elseif($method['instance']) { + $method_node['@scope'] = 'instance'; + } + elseif($method['prototype']) { + $method_node['@scope'] = 'prototype'; + } + else { + $method_node['@scope'] = 'normal'; + } + + if (!empty($method['tags'])) { + $method_node['@tags'] = implode(' ', $method['tags']); + } + + if ($method['private']) { + $method_node['@private'] = true; + } + + if ($method['private_parent']) { + $method_node['@privateparent'] = true; + } + + if (trim($method['summary'])) { + $method_node['#summary'][] = array(); + $description_node = &$method_node['#summary'][count($method_node['#summary']) - 1]; + $description_node['content'] = $method['summary']; + } + + if (trim($method['description'])) { + $method_node['#description'][] = array(); + $description_node = &$method_node['#description'][count($method_node['#description']) - 1]; + $description_node['content'] = $method['description']; + } + + if (!empty($method['examples'])) { + $method_node['#examples'][] = array(); + $examples_node = &$method_node['#examples'][count($method_node['#examples']) - 1]; + foreach ($method['examples'] as $example) { + $examples_node['#example'][] = array(); + $example_node = &$examples_node['#example'][count($examples_node['#example']) - 1]; + $example_node['content'] = $example; + } + } + } + + if (trim($method['return_summary'])) { + $method_node['#return-description'][] = array(); + $description_node = &$method_node['#return-description'][count($method_node['#return-description']) - 1]; + $description_node['content'] = $method['return_summary']; + } + + if (!empty($method['parameters'])) { + $method_node['#parameters'][] = array(); + $parameters_node = &$method_node['#parameters'][count($method_node['#parameters']) - 1]; + foreach ($method['parameters'] as $parameter_name => $parameter) { + $parameters_node['#parameter'][] = array(); + $parameter_node = &$parameters_node['#parameter'][count($parameters_node['#parameter']) - 1]; + $parameter_node['@name'] = $parameter_name; + $parameter_node['@type'] = $parameter['type']; + $parameter_node['@usage'] = ($parameter['optional']) ? 'optional' : (($parameter['repeating']) ? 'one-or-more' : 'required'); + if ($parameter['summary']) { + $parameter_node['#summary'][] = array(); + $description_node = &$parameter_node['#summary'][count($parameter_node['#summary']) - 1]; + $description_node['content'] = $parameter['summary']; + } + } + } + + if (!empty($method['returns'])) { + $method_node['#return-types'][] = array(); + $returns_node = &$method_node['#return-types'][count($method_node['#return-types']) - 1]; + foreach ($method['returns'] as $return) { + $returns_node['#return-type'][] = array(); + $return_node = &$returns_node['#return-type'][count($returns_node['#return-type']) - 1]; + $return_node['@type'] = $return; + } + } + + return $method_node; + } + + public function toAbstract($object, $id) { + $object_node = array(); + + $object_node['@location'] = $id; + + $this->buildResources($object_node, $object); + + $methods_node = NULL; + if ($object['type'] == 'Function') { + $object_node['@type'] = 'Function'; + if (!$object['classlike']) { + $this->buildMethod($object_node, $object, $object['location'], FALSE); + } + else { + $object_node['@classlike'] = TRUE; + + $methods_node = array(); + $method_node = array( + '@constructor' => 'constructor' + ); + if (!empty($object['chains']['prototype'])) { + $superclass = array_shift($object['chains']['prototype']); + $object_node['@superclass'] = $superclass; + } + $methods_node['#method'][] = $this->buildMethod($method_node, $object, $object['location'], FALSE); + } + } + elseif ($object['type'] != 'Object') { + $object_node['@type'] = $object['type']; + } + + if (!empty($object['tags'])) { + $object_node['@tags'] = implode(' ', $object['tags']); + } + + if ($object['private']) { + $object_node['@private'] = true; + } + + if ($object['private_parent']) { + $object_node['@privateparent'] = true; + } + + if (trim($object['summary'])) { + $object_node['#summary'][] = array(); + $description_node = &$object_node['#summary'][count($object_node['#summary']) - 1]; + $description_node['content'] = $object['summary']; + } + + if (trim($object['description'])) { + $object_node['#description'][] = array(); + $description_node = &$object_node['#description'][count($object_node['#description']) - 1]; + $description_node['content'] = $object['description']; + } + + if (!empty($object['examples'])) { + $object_node['#examples'][] = array(); + $examples_node = &$object_node['#examples'][count($object_node['#examples']) - 1]; + foreach ($object['examples'] as $example) { + $examples_node['#example'][] = array(); + $example_node = &$examples_node['#example'][count($examples_node['#example']) - 1]; + $example_node['content'] = $example; + } + } + + $mixins = array(); + if (!empty($object['chains']['prototype'])) { + foreach ($object['chains']['prototype'] as $mixin) { + // Classes are assumed here + $mixins['prototype']['prototype'][] = $mixin; + } + } + if (!empty($object['mixins']['prototype'])) { + foreach ($object['mixins']['prototype'] as $mixin) { + if (strlen($mixin) > 10 && substr($mixin, -10) == '.prototype') { + $mixins['prototype']['prototype'][] = substr($mixin, 0, -10); + } + else { + $mixins['prototype']['normal'][] = $mixin; + } + } + } + if (!empty($object['chains']['call'])) { + foreach ($object['chains']['call'] as $mixin) { + $mixins['instance']['instance'][] = $mixin; + } + } + if (!empty($object['mixins']['normal'])) { + foreach ($object['mixins']['normal'] as $mixin) { + if (strlen($mixin) > 10 && substr($mixin, -10) == '.prototype') { + $mixins['normal']['prototype'][] = substr($mixin, 0, -10); + } + else { + $mixins['normal']['normal'][] = $mixin; + } + } + } + + foreach ($mixins as $scope => $mixins) { + $object_node['#mixins'][] = array(); + $mixins_node = &$object_node['#mixins'][count($object_node['#mixins']) - 1]; + $mixins_node['@scope'] = $scope; + foreach ($mixins as $scope => $mixins) { + foreach (array_unique($mixins) as $mixin) { + $mixins_node['#mixin'][] = array(); + $mixin_node = &$mixins_node['#mixin'][count($mixins_node['#mixin']) - 1]; + $mixin_node['@scope'] = $scope; + $mixin_node['@location'] = $mixin; + } + } + } + + $methods = array(); + $properties = array(); + if (!empty($object['#children'])) { + foreach ($object['#children'] as $child_id => $child) { + if ($child['type'] == 'Function') { + $methods[$child_id] = $child; + } + else { + $properties[$child_id] = $child; + } + } + } + + if (!empty($properties)) { + $object_node['#properties'][] = array(); + $properties_node = &$object_node['#properties'][count($object_node['#properties']) - 1]; + foreach ($properties as $property_id => $property) { + $properties_node['#property'][] = array(); + $property_node = &$properties_node['#property'][count($properties_node['#property']) - 1]; + + $property_node['@name'] = $property_id; + + $this->buildResources($property_node, $property); + + if ($property['instance'] && $property['prototype']) { + $property_node['@scope'] = 'instance-prototype'; + } + elseif($property['instance']) { + $property_node['@scope'] = 'instance'; + } + elseif($property['prototype']) { + $property_node['@scope'] = 'prototype'; + } + else { + $property_node['@scope'] = 'normal'; + } + + $property_node['@type'] = $property['type']; + + if (!empty($property['tags'])) { + $property_node['@tags'] = implode(' ', $property['tags']); + } + + if ($property['private']) { + $property_node['@private'] = true; + } + + if ($property['private_parent']) { + $property_node['@privateparent'] = true; + } + + if ($property['summary']) { + $property_node['#summary'][] = array(); + $description_node = &$property_node['#summary'][count($property_node['#summary']) - 1]; + $description_node['content'] = $property['summary']; + } + } + } + + if (!empty($methods)) { + if (!$methods_node) { + $methods_node = array(); + } + + foreach ($methods as $method_id => $method) { + $method_node = array(); + $methods_node['#method'][] = $this->buildMethod($method_node, $method, $method_id); + } + } + + if ($methods_node) { + $object_node['#methods'][] = $methods_node; + } + + return $object_node; + } + + /** + * Convert an object to its raw representation + */ + public function toRaw($object, $id) { + return $this->convertToRaw($this->toAbstract($object, $id)); + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/common/db.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/common/db.php new file mode 100644 index 0000000..361f8b0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/common/db.php @@ -0,0 +1,18 @@ + 1) ? call_user_func_array('sprintf', $args) : $args[0]; + return mysql_query($query, $db); +} + +function db_fetch_assoc($query) { + return mysql_fetch_assoc($query); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/file/Freezer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/file/Freezer.php new file mode 100644 index 0000000..db821b8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/file/Freezer.php @@ -0,0 +1,133 @@ +queue = array(); + $this->nodes_location = $directory . '/' . $suffix; + touch($this->nodes_location); + $this->nodes = fopen($this->nodes_location, 'r'); + } + + public function __destruct() { + $this->flush(); + + fclose($this->nodes); + } + + public function ids($flush = TRUE) { + if ($flush) { + $this->flush(); + } + + $ids = array(); + + rewind($this->nodes); + while (!feof($this->nodes)) { + $line = stream_get_line($this->nodes, $this->length, "\n"); + list($key,) = explode($this->key_delimeter, $line); + if (trim($key)) { + $ids[] = $key; + } + } + + return $ids; + } + + public function open($key, $default) { + foreach (array_reverse($this->queue) as $queue) { + list($queue_key, $content) = $queue; + if ($queue_key == $key) { + return $content; + } + } + + $key .= $this->key_delimeter; + rewind($this->nodes); + while (!feof($this->nodes)) { + $line = stream_get_line($this->nodes, $this->length, "\n"); + if (strlen($line) > strlen($key) && substr($line, 0, strlen($key)) == $key) { + $line = substr($line, strlen($key)); + return unserialize(str_replace("\\n", "\n", $line)); + } + } + return $default; + } + + public function save($key, $content) { + $this->queue[] = array($key, $content); + if (count($this->queue) > $this->limit) { + $this->flush(); + } + } + + private function flush() { + $deferred = array(); + $keys = $this->ids(FALSE); + + foreach ($this->queue as $queue) { + list($key, $content) = $queue; + $serialized = $key . $this->key_delimeter . str_replace("\n", "\\n", serialize($content)); + if (!in_array($key, $keys)) { + $deferred[$key] = $serialized; + continue; + } + + $key = $key . $this->key_delimeter; + $found = false; + $tmp = fopen($this->nodes_location . '_tmp', 'w'); + rewind($this->nodes); + while (!feof($this->nodes)) { + if ($line = stream_get_line($this->nodes, $this->length, "\n")) { + if (strlen($line) > strlen($key) && substr($line, 0, strlen($key)) == $key) { + $found = true; + $line = $serialized; + } + if (strlen($line) > $this->length-2) { + die('Line too long: ' . $line . "\n"); + } + fwrite($tmp, $line . "\n"); + } + } + if (!$found) { + fwrite($tmp, $key . str_replace("\n", "\\n", serialize($content)) . "\n"); + } + fclose($tmp); + fclose($this->nodes); + + unlink($this->nodes_location); + rename($this->nodes_location . '_tmp', $this->nodes_location); + $this->nodes = fopen($this->nodes_location, 'r'); + } + + if (!empty($deferred)) { + fclose($this->nodes); + copy($this->nodes_location, $this->nodes_location . '_tmp'); + $tmp = fopen($this->nodes_location . '_tmp', 'a'); + + foreach ($deferred as $line) { + fwrite($tmp, $line . "\n"); + } + fclose($tmp); + + unlink($this->nodes_location); + rename($this->nodes_location . '_tmp', $this->nodes_location); + $this->nodes = fopen($this->nodes_location, 'r'); + } + + $this->queue = array(); + } +} diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/file/Serializer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/file/Serializer.php new file mode 100644 index 0000000..1a0af75 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/file/Serializer.php @@ -0,0 +1,208 @@ +queue = array(); + $this->file_location = $directory . '/' . $filename . '.' . $suffix; + touch($this->file_location); + $this->file = fopen($this->file_location, 'r'); + } + + public function __destruct() { + $this->flush(); + + fclose($this->file); + } + + public function ids($flush = TRUE) { + if ($flush) { + $this->flush(); + } + + $ids = array(); + $started = false; + + rewind($this->file); + while (!feof($this->file)) { + $line = stream_get_line($this->file, $this->length, "\n"); + if ($started && $this->lineEnds($line)) { + $started = false; + continue; + } + elseif ($id = $this->lineStarts($line)) { + $started = true; + $ids[] = $id; + } + } + + return $ids; + } + + protected function getString($id, $include_queue = TRUE) { + if ($include_queue) { + foreach (array_reverse($this->queue) as $queue) { + list($queue_id, $value) = $queue; + if ($queue_id == $id) { + return $this->toString($value, $id); + break; + } + } + } + + $lines = array(); + $started = false; + $strlen = strlen($this->indent); + + rewind($this->file); + while (!feof($this->file)) { + $line = stream_get_line($this->file, $this->length, "\n"); + if ($started) { + $lines[] = substr($line, $strlen); + if ($this->lineEnds($line)) { + return implode("\n", $lines) . "\n"; + } + } + elseif ($this->lineStarts($line) == $id) { + $started = true; + $lines[] = substr($line, $strlen); + } + } + } + + public function set($id, $value) { + $this->queue[] = array($id, $value); + if (count($this->queue) > $this->limit) { + $this->flush(); + } + } + + public function flush() { + $deferred = array(); + $ids = $this->ids(FALSE); + + foreach ($this->queue as $position => $queue) { + list($id, $value) = $queue; + $last = ($position + 1 == count($this->queue)); + $tostring = $this->toString($value, $id); + if (!in_array($id, $ids)) { + if (!$last) { + $deferred[$id] = $tostring; + continue; + } + } + + if (!$id) { + debug_print_backtrace(); + die("Called set without an ID\n"); + } + + if ($tostring == $this->getString($id, FALSE)) { + continue; + } + + $lines = array(); + $started = false; + $found = false; + $header = false; + $buffer = array(); + + $tmp = fopen($this->file_location . '_tmp', 'w'); + foreach ($this->header as $header_line) { + fwrite($tmp, $header_line . "\n"); + } + + rewind($this->file); + while (!feof($this->file)) { + $line = stream_get_line($this->file, $this->length, "\n"); + if (!trim($line)) { + continue; + } + + if ($started) { + $lines[] = $line; + if ($this->lineEnds($line)) { + $lines = explode("\n", $tostring); + foreach ($lines as $line) { + fwrite($tmp, $this->indent . $line . "\n"); + } + $started = false; + $found = true; + } + } + elseif (!$found && $this->lineStarts($line) == $id) { + foreach ($buffer as $line) { + fwrite($tmp, $line . "\n"); + } + $buffer = array(); + $started = true; + $lines[] = $line; + } + else { + // Search through non-block data for headers first, then footers + if (!isset($searching)) { + $searching = $this->header; + } + + $buffer[] = $line; + if (count($buffer) == count($searching) && count(array_intersect($buffer, $searching)) == count($searching)) { + // Successful match + if ($searching === $this->header) { + $buffer = array(); + $searching = $this->footer; + } + else { + // Break before the footer is added + break; + } + } + elseif(count($buffer) > count($searching)) { + fwrite($tmp, array_shift($buffer) . "\n"); + } + } + } + + if (!$found) { + if ($last) { + foreach ($deferred as $lines) { + foreach (explode("\n", $lines) as $line) { + fwrite($tmp, $this->indent . $line . "\n"); + } + } + } + $lines = explode("\n", $tostring); + foreach ($lines as $line) { + fwrite($tmp, $this->indent . $line . "\n"); + } + } + + foreach ($this->footer as $footer_line) { + fwrite($tmp, $footer_line . "\n"); + } + + fclose($tmp); + fclose($this->file); + + unlink($this->file_location); + rename($this->file_location . '_tmp', $this->file_location); + $this->file = fopen($this->file_location, 'r'); + } + + $this->queue = array(); + } +} diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/hash/Freezer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/hash/Freezer.php new file mode 100644 index 0000000..a602faa --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/hash/Freezer.php @@ -0,0 +1,63 @@ +nodes_location = $directory . '/' . $suffix; + touch($this->nodes_location); + $nodes_file = fopen($this->nodes_location, 'r'); + $this->_readFromFile($nodes_file); + fclose($nodes_file); + } + + public function __destruct() { + $this->flush(); + } + + private function _readFromFile($nodes_file) { + while (!feof($nodes_file)) { + $line = stream_get_line($nodes_file, $this->length, "\n"); + list($key, $value) = explode($this->key_delimeter, $line); + + if (trim($key)) { + $this->nodes[$key] = $value; + } + } + } + + public function ids($flush = TRUE) { + return array_keys($this->nodes); + } + + public function open($key, $default) { + if(array_key_exists($key, $this->nodes)){ + return unserialize(str_replace("\\n", "\n", $this->nodes[$key])); + } + return $default; + } + + public function save($key, $content) { + $this->nodes[$key] = str_replace("\n", "\\n", serialize($content)); + } + + private function flush() { + $tmp = fopen($this->nodes_location . '_tmp', 'w'); + foreach ($this->nodes as $key => $value) { + fwrite($tmp, $key . $this->key_delimeter . $value . "\n"); + } + fclose($tmp); + unlink($this->nodes_location); + rename($this->nodes_location . '_tmp', $this->nodes_location); + } +} diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/hash/Serializer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/hash/Serializer.php new file mode 100644 index 0000000..9fdcfc1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/hash/Serializer.php @@ -0,0 +1,89 @@ +file_location = $directory . '/' . $filename . '.' . $suffix; + touch($this->file_location); + $file = fopen($this->file_location, 'r'); + $this->_readFromFile($file); + fclose($file); + } + + private function _readFromFile($file) { + $id = null; + while (!feof($file)) { + $line = stream_get_line($file, $this->length, "\n"); + if ($id) { + $this->data[$id] .= $line . "\n"; + if ($this->lineEnds($line)) { + $id = null; + } + } + elseif ($id = $this->lineStarts($line)) { + $this->data[$id] = $line . "\n"; + } + } + } + + public function __destruct() { + $tmp = fopen($this->file_location . '_tmp', 'w'); + + foreach ($this->header as $header_line) { + fwrite($tmp, $header_line . "\n"); + } + foreach ($this->data as $id => $value) { + fwrite($tmp, $value . "\n"); + } + /*foreach ($this->ids() as $id) { + foreach (explode("\n", $this->getString($id)) as $line) { + if ($line) { + fwrite($tmp, $this->indent . $line . "\n"); + } + } + }*/ + foreach ($this->footer as $footer_line) { + fwrite($tmp, $footer_line . "\n"); + } + + fclose($tmp); + + unlink($this->file_location); + + rename($this->file_location . '_tmp', $this->file_location); + } + + public function ids() { + return array_keys($this->data); + } + + protected function getString($id) { + if(array_key_exists($id, $this->data)){ + return $this->data[$id]; + } + } + + public function set($id, $value) { + if (!$id) { + debug_print_backtrace(); + die("Called set without an ID\n"); + } + + $content = $this->toString($value, $id); + + $this->data[$id] = preg_replace('/^/m', $this->indent, $content); + } +} diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/mysql/Freezer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/mysql/Freezer.php new file mode 100644 index 0000000..da92267 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/mysql/Freezer.php @@ -0,0 +1,47 @@ +namespace = $namespace; + } + + public function ids($flush = TRUE) { + $ids = array(); + + $query = db_query("SELECT id FROM freezer WHERE namespace = '%s'", $this->namespace); + while ($row = db_fetch_assoc($query)) { + $ids[] = $row['id']; + } + + return $ids; + } + + public function open($key, $default) { + $query = db_query("SELECT value FROM freezer WHERE namespace = '%s' AND id = '%s' AND BINARY id = '%s'", $this->namespace, $key, $key); + if ($row = db_fetch_assoc($query)) { + return unserialize($row['value']); + } + return $default; + } + + public function save($key, $content) { + $content = mysql_escape_string(serialize($content)); + + $query = db_query("SELECT 1 FROM freezer WHERE namespace = '%s' AND id = '%s' AND BINARY id = '%s'", $this->namespace, $key, $key); + if (db_fetch_assoc($query)) { + db_query("UPDATE freezer SET value = '%s' WHERE namespace = '%s' AND id = '%s' AND BINARY id = '%s'", $content, $this->namespace, $key, $key); + } + else { + db_query("INSERT INTO freezer (namespace, id, value) VALUES ('%s', '%s', '%s')", $this->namespace, $key, $content); + } + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/mysql/Serializer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/mysql/Serializer.php new file mode 100644 index 0000000..080adf7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/mysql/Serializer.php @@ -0,0 +1,86 @@ +file_location = $directory . '/' . $filename . '.' . $suffix; + $this->namespace = $filename . '.' . $suffix; + } + + public function __destruct() { + $tmp = fopen($this->file_location . '_tmp', 'w'); + + foreach ($this->header as $header_line) { + fwrite($tmp, $header_line . "\n"); + } + foreach ($this->ids() as $id) { + foreach (explode("\n", $this->getString($id)) as $line) { + if ($line) { + fwrite($tmp, $this->indent . $line . "\n"); + } + } + } + foreach ($this->footer as $footer_line) { + fwrite($tmp, $footer_line . "\n"); + } + + fclose($tmp); + + if (file_exists($this->file_location)) { + unlink($this->file_location); + } + + rename($this->file_location . '_tmp', $this->file_location); + } + + public function ids() { + $ids = array(); + + $query = db_query("SELECT id FROM freezer WHERE namespace = '%s'", $this->namespace); + while ($row = db_fetch_assoc($query)) { + $ids[] = $row['id']; + } + + return $ids; + } + + protected function getString($id) { + $query = db_query("SELECT value FROM freezer WHERE namespace = '%s' AND id = '%s' AND BINARY id = '%s'", $this->namespace, $id, $id); + if ($result = db_fetch_assoc($query)) { + return $result['value']; + } + } + + public function set($id, $value) { + if (!$id) { + debug_print_backtrace(); + die("Called set without an ID\n"); + } + + $content = mysql_escape_string($this->toString($value, $id)); + + $query = db_query("SELECT 1 FROM freezer WHERE namespace = '%s' AND id = '%s' AND BINARY id = '%s'", $this->namespace, $id, $id); + if (db_fetch_assoc($query)) { + db_query("UPDATE freezer SET value = '%s' WHERE namespace = '%s' AND id = '%s' AND BINARY id = '%s'", $content, $this->namespace, $id, $id); + } + else { + db_query("INSERT INTO freezer (namespace, id, value) VALUES ('%s', '%s', '%s')", $this->namespace, $id, $content); + } + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/resource/Freezer.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/resource/Freezer.php new file mode 100644 index 0000000..ccc2a8b --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/generator/resource/Freezer.php @@ -0,0 +1,3 @@ +directory = $directory . '/provides'; + if (!file_exists($this->directory)) { + mkdir($this->directory); + chmod($this->directory, 0755); + } + $this->suffix = '.' . $suffix; + } + + public function ids() { + $ids = array(); + + $from = -strlen($this->suffix); + foreach (scandir($this->directory) as $file) { + if (substr($file, $from) == $this->suffix) { + $file = fopen($this->directory . '/' . $file, 'r'); + while (!feof($file)) { + $line = stream_get_line($file, $this->length, "\n"); + if ($started && $this->lineEnds($line)) { + $started = false; + continue; + } + elseif ($id = $this->lineStarts($line)) { + $started = true; + $ids[] = $id; + } + } + } + } + + return array_unique($ids); + } + + protected function getString($id, $include_queue = TRUE) { + return ''; + } + + public function set($id, $value) { + } + + public function setObject($id, $value) { + $pretty = $this->toAbstract($value, $id); + $provides = $this->extractProvides($pretty); + $updates = array(); + $lookups = array(array('#properties', '#property'), array('#methods', '#method')); + foreach ($lookups as $list) { + list($types, $type) = $list; + if ($pretty[$types]) { + foreach ($pretty[$types][0][$type] as $item) { + foreach ($this->extractProvides($item, $provides) as $provide => $item) { + $updates[$provide][$types][$item['@name']] = $item; + if (!array_key_exists($provide, $provides)) { + $provides[$provide] = array(); + } + // $provides[$provide][$types][0][$type][] = $item; + } + } + } + } + + foreach ($provides as $provide => $provide_value) { + $file_name = $this->directory . '/' . $provide . $this->suffix; + + $found = false; + $output = implode("\n", $this->header) . "\n"; + if (file_exists($file_name)) { + $contents = substr(file_get_contents($file_name), strlen(implode("\n", $this->header))+1, -strlen(implode("\n", $this->footer))-1); + $buffer = array(); + foreach (explode("\n", $contents) as $line) { + if (!empty($buffer) && $this->lineEnds($line)) { + $buffer[] = $line; + $found = true; + $saved = array(); + $raw = $this->linesToRaw($buffer); + $object = $this->toObject($raw); + + foreach ($lookups as $list) { + list($types, $type) = $list; + if ($object[$types]) { + foreach ($object[$types][0][$type] as $item) { + $saved[$types][$item['@name']] = $item; + } + } + if (isset($updates[$provide][$types])) { + foreach ($updates[$provide][$types] as $item) { + $saved[$types][$item['@name']] = $item; + } + } + } + + foreach ($saved as $types => $item) { + $provide_value[$types][0][$type][] = $item; + } + + $raw = $this->convertToRaw($provide_value); + foreach (explode("\n", $this->toString($raw, $id)) as $line) { + $output .= $this->indent . $line . "\n"; + } + + $buffer = array(); + } + elseif ($this->lineStarts($line) == $id) { + $buffer[] = substr($line, strlen($this->indent)); + } + else { + $output .= $line . "\n"; + } + } + } + + if (!$found) { + foreach ($lookups as $list) { + list($types, $type) = $list; + if (isset($updates[$provide][$types])) { + foreach ($updates[$provide][$types] as $item) { + $provide_value[$types][0][$type][] = $item; + } + } + } + $raw = $this->convertToRaw($provide_value); + foreach (explode("\n", $this->toString($raw, $id)) as $line) { + $output .= $this->indent . $line . "\n"; + } + } + + $output .= implode("\n", $this->footer); + file_put_contents($file_name, $output); + } + } + + private function extractProvides($value) { + $provides = array(); + if ($value['#provides']) { + foreach ($value['#provides'] as $provide) { + foreach ($provide['#provide'] as $content) { + unset($value['#resources']); + unset($value['#provides']); + unset($value['#properties']); + unset($value['#methods']); + $provides[$content['content']] = $value; + } + } + } + return $provides; + } +} diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/Dojo.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/Dojo.php new file mode 100644 index 0000000..d0b5639 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/Dojo.php @@ -0,0 +1,82 @@ +destroy(); + } +} + +class Dojo +{ + private $dir; + public $namespace; + + public function __construct($namespace, $dir){ + $this->setDir($dir); + $this->namespace = $namespace; + } + + public function __destruct() { + unset($this->dir); + unset($this->namespace); + } + + public function getPackage($file){ + return new DojoPackage($file); + } + + public function getDir(){ + return $this->dir; + } + + public function setDir($dir){ + $this->dir = $dir; + } + + public function getFileList($dir = false, $recurse = false){ + $output = array(); + if ($dir === false) { + $dir = $this->getDir(); + } + + if (!$recurse) { + $old_dir = getcwd(); + if (!is_dir($dir)) { + return array(); + } + chdir($dir); + $dir = '.'; + } + $files = scandir($dir); + + foreach ($files as $file) { + if ($file{0} == '.') continue; + if (is_dir($dir . '/' . $file)) { + if ($recurse) { + $file = $dir . '/' . $file; + } + $output = array_merge($output, $this->getFileList($file, true)); + }else{ + if (substr($file, -3) == '.js' && substr($file, -6) != '.xd.js') { + if ($recurse) { + $file = $dir . '/' . $file; + } + $output[] = $file; + } + } + } + + if (!$recurse) { + chdir($old_dir); + } + return $output; + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoArray.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoArray.php new file mode 100644 index 0000000..5aa716c --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoArray.php @@ -0,0 +1,20 @@ +getParameters(); + } + + public function getItem($pos){ + return $this->getParameter($pos); + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoBlock.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoBlock.php new file mode 100644 index 0000000..13c74cb --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoBlock.php @@ -0,0 +1,37 @@ +package = $package; + if($line_number !== false && $position !== false){ + $this->setStart($line_number, $position); + } + } + + public function destroy() { + } + + public function __destruct() { + unset($this->package); + unset($this->start); + unset($this->end); + } + + public function setStart($line_number, $position){ + $this->start = array($line_number, $position); + } + + protected function setEnd($line_number, $position){ + $this->end = array($line_number, $position); + } + + public abstract function build(); +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoBoolean.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoBoolean.php new file mode 100644 index 0000000..75f1e95 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoBoolean.php @@ -0,0 +1,16 @@ +value = ($value == 'true'); + } + + public function getValue(){ + return $this->value; + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoExecutedFunction.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoExecutedFunction.php new file mode 100644 index 0000000..6f840f9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoExecutedFunction.php @@ -0,0 +1,108 @@ +start){ + die("DojoExecutedFunction->build() used before setting a start position"); + } + if($this->end){ + return $this->end; + } + + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1]); + $line = $lines[$this->start[0]]; + + $this->start = array($this->start[0], strpos($line, 'function')); + + $this->end = parent::build(); // Basically, the end array here will hold the position of the final } in the function declaration. + + $parameters = $this->getParameters(); + if (count($parameters) && ($pos = strpos($lines[$this->end[0]], '(')) !== false) { + $arguments = new DojoParameters($this->package); + $arguments->start = array($this->end[0], $pos); + $arguments->build(); + $arguments = $arguments->getParameters(); + foreach ($parameters as $pos => $parameter) { + if ($arguments[$pos]) { + $argument = $arguments[$pos]; + if ($argument->isA(DojoVariable) && $parameter->isA(DojoVariable)) { + if (preg_match('%(^|\|\|)([a-zA-Z0-9_.$]+)(\|\||$)%', $argument->getVariable(), $match)) { + $this->body->addResolvedParameter($parameter->getVariable(), $match[2]); + } + } + } + } + } + $lines = Text::chop($this->package->getCode(), $this->end[0], $this->end[1], false, false, true); + $closed = false; + foreach($lines as $line_number => $line){ + $offset = 0; + if($line_number == $this->end[0]){ + $offset = $this->end[1]; + } + if(preg_match('%\S%', $line, $match, PREG_OFFSET_CAPTURE, $offset)){ + if(!$closed){ + if($match[0][0] != ')'){ + return false; + }else{ + $closed = true; + $offset = $match[0][1] + 1; + } + } + } + if(preg_match('%\S%', $line, $match, PREG_OFFSET_CAPTURE, $offset)){ + if($closed){ + if($match[0][0] != '('){ + return false; + }else{ + $parameters = new DojoParameters($this->package, $line_number, $match[0][1]); + $end = $parameters->build(); + break; + } + } + } + } + return $end; + } + + public function rollOut(&$output) { + if ($this->getFunctionName()) { + parent::rollOut($output); + } + + $execution_variables = $this->getVariableNames($this->getFunctionName()); + foreach ($execution_variables as $execution_variable) { + if (empty($output[$execution_variable])) { + $output[$execution_variable] = array(); + } + } + + $execution_declarations = $this->getFunctionDeclarations(); + foreach ($execution_declarations as $declaration) { + $declaration->rollOut($output); + } + + $execution_objects = $this->getObjects(); + foreach ($execution_objects as $object) { + $object->rollOut($output); + } + unset($object); + unset($execution_objects); + + if ($this->getFunctionName()) { + $instance_declarations = $this->getInstanceFunctions($this->getFunctionName()); + foreach ($instance_declarations as $declaration) { + $declaration->rollOut($output); + } + } + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunction.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunction.php new file mode 100644 index 0000000..e69de29 diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionBody.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionBody.php new file mode 100644 index 0000000..110c42f --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionBody.php @@ -0,0 +1,707 @@ +destroyed) { + $this->destroyed = true; + array_walk($this->externalized, 'destroy_all'); + unset($this->externalized); + array_walk($this->externalized_objects, 'destroy_all'); + unset($this->externalized_objects); + array_walk($this->externalized_mixins, 'destroy_all'); + unset($this->externalized_mixins); + } + } + + public function build() { + if (!$this->start) { + die("DojoFunctionBody->build() used before setting a start position"); + } + if ($this->end) { + return $this->end; + } + + $balance = 0; + $start_position = $this->start[1]; + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], false, false, true); + return $this->end = Text::findTermination($lines, '}', '{}'); + } + + public function addBlockCommentLine($line) { + $this->extra_initial_comment_block[] = $line; + } + + public function addBlockCommentBreak() { + $this->extra_initial_comment_block[] = -1; + } + + public function addBlockCommentKey($key) { + $this->comments = array(); + if ($key) { + $this->keys[] = $key; + } + } + + /** + * This key can occur multiple times. eg: example + */ + public function addBlockCommentKeySet($key) { + $this->comments = array(); + if ($key) { + $this->key_sets[] = $key; + } + } + + public function getSource() { + $this->getBlockCommentKeys(); + $source = array(); + $lines = Text::chop($this->package->getSource(), $this->comment_end[0], $this->comment_end[1], $this->end[0], $this->end[1]); + if ($this->start[0] == $this->comment_end[0] && $this->start[1] == $this->comment_end[1]) { + $lines[$this->start[0]] = substr($lines[$this->start[0]], $this->start[1] + 1); + } + $lines[$this->end[0]] = substr($lines[$this->end[0]], 0, $this->end[1]); + foreach ($lines as $line_number => $line) { + $trimmed_line = trim($line); + if ($trimmed_line === '') { + $source[] = ''; + } + $source[] = $line; + } + while (!empty($source)) { + if (trim($source[0]) === '') { + array_shift($source); + continue; + } + break; + } + while (!empty($source)) { + if (trim($source[count($source) - 1]) === '') { + array_pop($source); + continue; + } + break; + } + return implode("\n", $source); + } + + private function cleanBlock($text){ + $lines = explode("\n", trim($text)); + $output = array(); + $indented = false; + $blank = false; + foreach ($lines as $i => $line) { + if ($line{0} == "|") { + if(!$indented){ + $indented = true; + if (!$blank) { + $output[] = ""; + if (!$i) { + $output[] = ""; + } + } + } + $output[] = substr($line, 1); + } + else { + if($indented){ + $indented = false; + if (empty($line)) { + if (!$blank) { + $output[] = ""; + } + } + } + if (empty($line)) { + $blank = true; + } + $output[] = $line; + } + } + return implode("\n", $output); + } + + public function getBlockComment($key) { + $this->getBlockCommentKeys(); + $value = $this->comments[$key]; + if (!empty($value)) { + if (is_array($value)) { + for ($i = 0; $i < count($value); $i++){ + $value[$i] = $this->cleanBlock($value[$i]); + } + } + else { + $value = $this->cleanBlock($value); + } + } + return $value; + } + + public function getBlockCommentKeys() { + if ($this->comments) { + return array_keys($this->comments); + } + + $this->build(); + + $prefix = '\b'; + if (self::$prefix) { + $prefix = preg_quote(self::$prefix, '%'); + } + $suffix = '\b'; + if (self::$suffix) { + $suffix = preg_quote(self::$suffix, '%'); + } + $expression = '%^' . $prefix . '(' . implode('|', array_merge($this->keys, $this->key_sets)) . ')' . $suffix . '\W*%'; + + $lines = Text::chop($this->package->getSource(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + for ($i = 0; $i < 2; $i++) { + $started = false; + $between_blocks = true; + $wait_for_break = false; + $buffer = array(); + $key = ''; + if ($i == 1) { + $lines = $this->extra_initial_comment_block; + } + foreach ($lines as $line_number => $line) { + if ($line === -1) { + // Comes from manually added lines (block breaks, e.g. between object keys) + $between_blocks = true; + continue; + } + + list($comment, , , $data, $multiline) = Text::findComments($line, $multiline); + + if ($between_blocks) { + if ($comment) { + if (preg_match($expression, $comment)) { + $between_blocks = false; + } + elseif (!$i) { + continue 2; + } + else { + $wait_for_break = true; + continue; + } + } + } + elseif ($comment === false) { + $between_blocks = true; + continue; + } + + if (preg_match($expression, $comment, $match)) { + if ($buffer && $key) { + if (in_array($key, $this->key_sets)) { + $this->comments[$key][] = implode("\n", $buffer); + } + else { + $this->comments[$key] = implode("\n", $buffer); + } + $buffer = array(); + } + $key = $match[1]; + if ($match[0] == $comment) { + $comment = ''; + }else{ + $comment = substr($comment, strlen($match[0])); + } + } + + if ($data) { + $this->comment_end = array($line_number, 0); + break; + } + + $buffer[] = $comment; + } + + if ($buffer && $key) { + if (in_array($key, $this->key_sets)) { + $this->comments[$key][] = implode("\n", $buffer); + } + else { + $this->comments[$key] = implode("\n", $buffer); + } + } + + if ($i == 0 && !$this->comment_end) { + $this->comment_end = $this->start; + } + } + + return array_keys($this->comments); + } + + public function addResolvedParameter($parameter, $value) { + $this->resolved_parameters[$parameter] = $value; + } + + public function getLocalVariableNames() { + $internals = array(); + + $this->build(); + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + // Find simple external variable assignment. + $matches = preg_grep('%(?:var|this)%', $lines); + foreach ($matches as $line_number => $line) { + // Check for var groups, or var name = + if (preg_match('%var\s+[a-zA-Z0-9_.$]+([^;]+,\s*[a-zA-Z0-9_.$]+)*%', $line, $match)) { + preg_match_all('%(?:var\s+([a-zA-Z_.$][\w.$]*)|,\s*([a-zA-Z_.$][\w.$]*))%', $match[0], $named_matches, PREG_SET_ORDER); + foreach ($named_matches as $named_match) { + if (!empty($named_match[1])) { + $internals[$named_match[1]] = false; + } + if (!empty($named_match[2])) { + $internals[$named_match[2]] = false; + } + } + } + if (preg_match('%var\s+([a-zA-Z_.$][\w.$]*)\s*=\s*([a-zA-Z_.$][a-zA-Z0-9_.$]*)\s*[;\n]%', $line, $match)) { + if (in_array($match[2], array('null', 'true', 'false', 'this'))) continue; + $internals[$match[1]] = $match[2]; + } + if (preg_match('%(this\.[a-zA-Z_.$][\w.$]*)\s*=\s*([a-zA-Z_.$][\w.$]*)%', $line, $match)) { + $internals[$match[2]] = $match[1]; + } + } + + foreach ($this->resolved_parameters as $parameter => $value) { + $internals[$parameter] = $value; + } + + return $internals; + } + + /** + * If these occur inside this function AND reference a local variable, remove them + */ + public function removeSwallowedMixins(&$possible_mixins) { + // If any of the mixins happened inside of an executed function, we need to see if + // they were used on external variables. + if ($this->externalized_mixins) { + return $this->externalized_mixins; + } + + $this->build(); + $internals = $this->getLocalVariableNames(); + + foreach ($possible_mixins as $i => $mixin) { + if (($this->start[0] < $mixin->start[0] || ($this->start[0] == $mixin->start[0] && $this->start[1] < $mixin->start[1])) && + ($this->end[0] > $mixin->end[0] || ($this->end[0] == $mixin->end[0] && $this->end[1] > $mixin->end[1]))) { + $parameter = $mixin->getParameter(0); + if ($mixin->getName() == 'dojo.extend' && $parameter->isA(DojoFunctionDeclare)) { + $code = $this->package->getCode(); + $line = substr($code[$parameter->start[0]], 0, $parameter->start[1]); + $line = substr($line, 0, strrpos($line, $mixin->getName())); + preg_match_all('%(?:([a-zA-Z0-9_.$\s]+)\s*=\s*)+%', $line, $matches); + foreach ($matches[1] as $match) { + $match = trim($match); + if (!preg_match('%^var\s+%', $match)) { + $found = true; + while ($found) { + $found = false; + foreach ($internals as $internal_name => $external_name) { + if ($internal_name == 'this') continue; + if (strpos($match, $internal_name . '.') === 0) { + $last = $match; + $match = $external_name . substr($match, strlen($internal_name)); + if ($last != $match) { + $found = true; + } + } + } + } + $parameter->getFunction()->setFunctionName($match); + } + } + $this->externalized_mixins[] = $mixin; + } + elseif ($parameter->isA(DojoVariable)) { + $object = $parameter->getVariable(); + if ($object == "this") { + unset($possible_mixins[$i]); + } + elseif (($mixin->start[0] > $this->start[0] || ($mixin->start[0] == $this->start[0] && $mixin->start[1] > $this->start[1])) + && ($mixin->end[0] < $this->end[0] || ($mixin->end[0] == $this->end[0] && $mixin->end[1] < $this->end[1]))) { + if (array_key_exists($object, $internals)) { + unset($possible_mixins[$i]); + } + else { + foreach ($internals as $internal_name => $external_name) { + if (strpos($object, $internal_name . '.') === 0) { + $object = $external_name . substr($object, strlen($internal_name)); + } + } + + $parameter->setVariable($object); + } + } + $this->externalized_mixins[] = $mixin; + } + else { + $this->externalized_mixins[] = $mixin; + array_splice($possible_mixins, $i--, 1); + } + } + } + } + + public function getExternalizedObjects($function_name=false, $parameter_names=array()){ + if ($this->externalized_objects) { + return $this->externalized_objects; + } + + $this->build(); + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + foreach ($this->externalized_mixins as $mixin) { + $lines = Text::blankOutAtPositions($lines, $mixin->start[0], $mixin->start[1], $mixin->end[0], $mixin->end[1]); + } + $internals = $this->getLocalVariableNames(); + + $matches = preg_grep('%=\s*\{%', $lines); + foreach ($matches as $line_number => $line) { + if (preg_match('%(\b[a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]|\["[^"]+"\])*)\s*=\s*{%', $line, $match)) { + if (array_key_exists($match[1], $internals)) continue; + + $externalized_object = new DojoObject($this->package, $line_number, strpos($line, '{', strpos($line, $match[0]))); + $end = $externalized_object->build(); + + $name = $match[1]; + if (strpos($name, 'this.') === 0) continue; + + foreach ($internals as $internal_name => $external_name) { + if (strpos($name, $internal_name . '.') === 0) { + if (!$external_name) continue 2; + $name = $external_name . substr($name, strlen($internal_name)); + } + } + + if (strpos($name, '[') !== false) { + $source_lines = Text::chop($this->package->getSource(), $line_number, 0); + $source_line = trim($source_lines[$line_number]); + preg_match('%\b([a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]|\["[^"]+"\])*)\s*=\s*function%', $source_line, $source_match); + $name = preg_replace('%\["([^"]+)"\]%', '.$1', $source_match[1]); + } + + if (strpos($name, 'this.') === 0) { + if (!$function_name) continue; + + $name = $function_name . substr($name, 4); + } + + if (in_array($name, $parameter_names)) { + continue; + } + + $externalized_object->setName($name); + $this->externalized_objects[] = $externalized_object; + } + } + + return $this->externalized_objects; + } + + public function getExternalizedFunctionDeclarations($function_name=false) { + if ($this->externalized) { + return $this->externalized; + } + + $this->build(); + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + $internals = $this->getLocalVariableNames(); + + $matches = preg_grep('%function\s*\(%', $lines); + $last_line = 0; + foreach ($matches as $line_number => $line) { + if ($line_number < $last_line) continue; + if (preg_match('%(var)?\s*(\b[a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]*|\["[^"]+"\])*)\s*=\s*function\s*\(%', $line, $match)) { + if ($match[1] || array_key_exists($match[2], $internals)) continue; + + $externalized = new DojoFunctionDeclare($this->package, $line_number, strpos($line, $match[0])); + $end = $externalized->build(); + $last_line = $end[0]; + + $externalized->rebuildAliases($internals); + $externalized->setExecutedFunction($this); + + $name = $match[2]; + if (strpos($name, 'this.') === 0) continue; + + foreach ($internals as $internal_name => $external_name) { + if (strpos($name, $internal_name . '.') === 0) { + if (!$external_name) continue 2; + $name = $external_name . substr($name, strlen($internal_name)); + } + } + + if (strpos($name, '[') !== false) { + $source_lines = Text::chop($this->package->getSource(), $line_number, 0); + $source_line = trim($source_lines[$line_number]); + preg_match('%\b([a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]|\["[^"]+"\])*)\s*=\s*function\b%', $source_line, $source_match); + $name = preg_replace('%\["([^"]+)"\]%', '.$1', $source_match[1]); + } + + if (strpos($name, 'this.') === 0) { + if (!$function_name) continue; + + $name = $function_name . substr($name, 4); + } + + $parts = explode('.', $name); + if (count($parts) > 2 && array_pop(array_slice($parts, -2, 1)) == 'prototype') { + array_splice($parts, -2, 1); + $name = implode('.', $parts); + array_pop($parts); + $externalized->setPrototype(implode('.', $parts)); + } + + $externalized->setFunctionName($name); + $this->externalized[] = $externalized; + } + else { + $skipped = new DojoFunctionDeclare($this->package, $line_number, strpos($line, 'function')); + $end = $skipped->build(); + $last_line = $end[0]; + } + } + + return $this->externalized; + } + + public function getExternalizedAllVariableNames($function_name, $parameter_names=array()) { + if ($this->externalized_avariables) { + return $this->externalized_avariables; + } + + $this->build(); + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + $internals = $this->getLocalVariableNames(); + + $declarations = $this->getExternalizedFunctionDeclarations($function_name); + foreach ($declarations as $declaration) { + $declaration->build(); + $lines = Text::blankOutAtPositions($lines, $declaration->start[0], $declaration->start[1], $declaration->end[0], $declaration->end[1]); + } + + $objects = $this->getExternalizedObjects(false, $parameter_names); + foreach ($objects as $object) { + $object->build(); + $lines = Text::blankOutAtPositions($lines, $object->start[0], $object->start[1], $object->end[0], $object->end[1]); + } + + $lines = $this->package->removeCodeFrom($lines); + + $variables = array(); + + foreach (preg_grep('%function%', $lines) as $line) { + if (preg_match('%function\s*\(([^)]+)\)%', $line, $match)) { + if (preg_match_all('%[a-zA-Z_.$][\w.$]+%', $match[0], $matches)) { + foreach ($matches[0] as $match) { + $internals[$match] = true; + } + } + } + } + + foreach (preg_grep('%=%', $lines) as $line_number => $line) { + if (preg_match('%^\s*var\b%', $line)) continue; + if (preg_match('%\b([a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]|\["[^"]+"\])*)\s*=(?!=)\s*(function\s*\()?%', $line, $match)) { + if ($match[2] || array_key_exists($match[1], $internals)) continue; + + $name = $match[1]; + + if (strpos($name, '[') !== false) { + $source_lines = Text::chop($this->package->getSource(), $line_number, 0); + $source_line = trim($source_lines[$line_number]); + preg_match('%\b([a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]|\["[^"]+"\])*)%', $source_line, $source_match); + $name = preg_replace('%\["([^"]+)"\]%', '.$1', $source_match[1]); + } + + if (strpos($name, 'this.') === 0) { + if ($function_name) { + continue; + } + else { + $name = substr($name, 5); + } + } + + $found = true; + while ($found) { + $found = false; + foreach ($internals as $internal_name => $external_name) { + if ($internal_name == 'this') continue; + if (strpos($name, $internal_name . '.') === 0) { + if (!$external_name) continue 2; + $last = $name; + $name = $external_name . substr($name, strlen($internal_name)); + if ($last != $name) { + $found = true; + } + } + } + } + + $variables[] = $name; + } + } + + return $this->externalized_avariables = $variables; + } + + public function getExternalizedInstanceVariableNames($function_name, $parameter_names=array()) { + if ($this->externalized_ivariables) { + return $this->externalized_ivariables; + } + + $ivariables = array(); + + $variables = $this->getExternalizedAllVariableNames($function_name, $parameter_names); + foreach ($variables as $variable) { + if (strpos($variable, 'this.') === 0) { + $ivariables[] = substr($variable, 5); + } + } + + return $this->externalized_ivariables = $ivariables; + } + + public function getExternalizedVariableNames($function_name, $parameter_names=array()) { + if ($this->externalized_variables) { + return $this->externalized_variables; + } + + $evariables = array(); + + $variables = $this->getExternalizedAllVariableNames($function_name, $parameter_names); + foreach ($variables as $variable) { + if (strpos($variable, 'this.') !== 0) { + $evariables[] = $variable; + } + } + + return $this->externalized_variables = $evariables; + } + + public function getInstanceVariableNames() { + if ($this->instance_variables) { + return $this->instance_variables; + } + + $this->build(); + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + foreach ($lines as $line) { + if (preg_match('%\bthis\.([a-zA-Z0-9._$]+)\s*=\s*(?!function)%', $line, $match)) { + $parts = explode('.', $match[1]); + if (count($parts) && !in_array(array_pop(array_slice($parts, -1, 1)), array('prototype', 'constructor'))){ + $this->instance_variables[] = $match[1]; + } + } + } + return $this->instance_variables; + } + + public function getInstanceFunctions($function_name) { + $functions = array(); + $this->build(); + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + foreach ($lines as $line_number => $line) { + if (preg_match('%\bthis\.([a-zA-Z0-9._$]+)\s*=\s*function\b%', $line, $match, PREG_OFFSET_CAPTURE)) { + $function = new DojoFunctionDeclare($this->package, $line_number, $match[0][1]); + $function->setFunctionName($function_name); + $end = $function->build(); + $functions[] = $function; + } + } + return $functions; + } + + public function getReturnComments() { + if ($this->return_comments) { + return $this->return_comments; + } + + $buffer = array(); + $this->getBlockCommentKeys(); + $lines = Text::chop($this->package->getSource(), $this->comment_end[0], $this->comment_end[1], $this->end[0], $this->end[1], true); + foreach ($lines as $line) { + if ($multiline) { + list($first, $middle, $last, $data, $multiline) = Text::findComments($line, $multiline); + if ($first) { + $buffer[] = trim($first); + } + if ($data) { + $multiline = false; + if ($buffer) { + $this->return_comments[] = implode(' ', array_diff($buffer, array(''))); + $buffer = array(); + } + } + } + if (strpos($line, 'return') !== false) { + if ($data && $buffer) { + $this->return_comments[] = implode(' ', array_diff($buffer, array(''))); + $buffer = array(); + } + list($first, $middle, $last, $data, $multiline) = Text::findComments($line, $multiline); + if ($last) { + $buffer[] = $last; + } + } + } + + if ($data && $buffer) { + $this->return_comments[] = implode(' ', array_diff($buffer, array(''))); + } + + $this->return_comment = array_unique($this->return_comments); + + return $this->return_comments; + } + + public function getThisInheritanceCalls() { + if ($this->this_inheritance_calls) { + return $this->this_inheritance_calls; + } + + $internalized = $this->getLocalVariableNames(); + + $this->build(); + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + foreach ($lines as $line) { + if (preg_match('%\b([a-zA-Z0-9_.$]+)\.(?:apply|call)\s*\(%', $line, $match) && !array_key_exists($match[1], $internalized)) { + $this->this_inheritance_calls[] = $match[1]; + } + } + return $this->this_inheritance_calls; + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionCall.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionCall.php new file mode 100644 index 0000000..3e1a236 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionCall.php @@ -0,0 +1,81 @@ +parameters = new DojoParameters($package); + } + + public function __destruct() { + parent::__destruct(); + unset($this->parameters); + } + + public function build() { + if (!$this->start) { + return null; // FIXME: does this ever die? + die("DojoFunctionCall->build() used before setting a start position"); + } + + $code = $this->package->getCode(); + $this->parameters->setStart($this->start[0], strpos($code[$this->start[0]], '(', $this->start[1])); + $end = $this->parameters->build(); + + $this->setEnd($end[0], $end[1]); + return $end; + } + + public function getAssignment() { + $this->build(); + $code = $this->package->getCode(); + $line = Text::blankOutAt($code[$this->start[0]], $this->start[1]); + if (preg_match('%([\w_.$]+)\s*=\s*$%', $line, $match)) { + return $match[1]; + } + } + + public function removeCodeFrom($lines){ + for($i = $this->start[0]; $i <= $this->end[0]; $i++){ + $line = $lines[$i]; + if ($i == $this->start[0]) { + $lines[$i] = Text::blankOutAt($line, $this->start[1]); + } + elseif ($i == $this->end[0]) { + $lines[$i] = Text::blankOutAt($line, 0, $this->end[1]); + }else{ + $lines[$i] = Text::blankOut($line, $line); + } + } + return $lines; + } + + public function getName(){ + if($this->name){ + return $this->name; + } + + $line = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], $this->start[0]); + $line = $line[$this->start[0]]; + return $this->name = trim(substr($line, 0, strpos($line, '('))); + } + + public function getParameter($pos){ + return $this->parameters->getParameter($pos); + } + + public function getParameters(){ + return $this->parameters->getParameters(); + } + +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionDeclare.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionDeclare.php new file mode 100644 index 0000000..c525748 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoFunctionDeclare.php @@ -0,0 +1,464 @@ +parameters = new DojoParameters($package); + $this->body = new DojoFunctionBody($package); + } + + public static function parseVariable(&$comment) { + $summary = $comment; + $tags = array(); + if (preg_match('%^\s*([a-z\s]+)\]\s*%', $summary, $match)) { + $tags = preg_split('%\s+%', $match[1]); + $summary = $comment = substr($summary, strlen($match[0])); + } + + list($type, $summary) = preg_split('%\s%', $summary, 2); + $type = preg_replace('%(^[^a-zA-Z0-9._$]|[^a-zA-Z0-9._$?]$)%', '', $type); + + $options = array(); + if(!empty($type)){ + if(strpos($type, '?')){ + $type = substr($type, 0, strlen($type) - 1); + $options['optional'] = true; + } + if(strpos($type, '...')){ + $type = substr($type, 0, strlen($type) - 3); + $options['repeating'] = true; + } + } + + return array($tags, $type, $options, $summary); + } + + public function destroy() { + if (!$this->destroyed) { + $this->destroyed = true; + $this->parameters->destroy(); + unset($this->parameters); + $this->body->destroy(); + unset($this->body); + if ($this->in_executed_function) { + $this->in_executed_function->destroy(); + } + unset($this->in_executed_function); + } + } + + public function getFunctionName(){ + return $this->function_name; + } + + public function getAliases(){ + return $this->aliases; + } + + public function rebuildAliases($map) { + if (is_array($this->aliases)) { + foreach ($this->aliases as $i => $alias) { + foreach ($map as $internal_name => $external_name) { + if (strpos($alias, $internal_name . '.') === 0) { + if (!$external_name) continue 2; + $alias = $external_name . substr($alias, strlen($internal_name)); + } + } + $this->aliases[$i] = $alias; + } + } + } + + public function setFunctionName($function_name){ + $this->function_name = $function_name; + } + + public function setPrototype($function_name){ + $this->prototype = $function_name; + } + + public function getPrototype(){ + return $this->prototype; + } + + public function setInstance($function_name){ + $this->instance = $function_name; + } + + public function getInstance(){ + return $this->instance; + } + + public function setConstructor($constructor){ + $this->constructor = $constructor; + } + + public function isConstructor(){ + return $this->constructor; + } + + public function setAnonymous($anonymous) { + $this->anonymous = $anonymous; + } + + public function isAnonymous(){ + return $this->anonymous; + } + + public function isThis(){ + return ($this->prototype || $this->instance); + } + + public function getThis(){ + return ($this->prototype) ? $this->prototype : $this->instance; + } + + public function setExecutedFunction($function) { + $this->in_executed_function = $function; + } + + public function getInstanceVariableNames(){ + return array_unique($this->body->getInstanceVariableNames()); + } + + public function removeSwallowedMixins(&$mixins) { + return $this->body->removeSwallowedMixins($mixins); + } + + public function getReturnComments(){ + return array_unique($this->body->getReturnComments()); + } + + public function getThisInheritanceCalls(){ + $output = array(); + $calls = array_unique($this->body->getThisInheritanceCalls()); + + if ($this->in_executed_function) { + $internalized = $this->in_executed_function->getLocalVariableNames(); + } + + $parameters = $this->getParameterNames(); + foreach ($calls as $call) { + if (!in_array($call, $parameters)) { + if ($internalized) { + foreach (array_keys($internalized) as $variable) { + if (strpos($call, $variable . '.') === 0) { + continue 2; + } + } + } + $output[] = $call; + } + } + + return $output; + } + + public function getVariableNames($function_name, $parameter_names=array()){ + return $this->body->getExternalizedVariableNames($function_name, $parameter_names); + } + + public function getFunctionDeclarations(){ + return $this->body->getExternalizedFunctionDeclarations(); + } + + public function getObjects(){ + return $this->body->getExternalizedObjects(false, $this->getParameterNames()); + } + + public function getLocalVariableNames(){ + return $this->body->getLocalVariableNames(); + } + + public function removeCodeFrom($lines){ + $this->build(); + + return Text::blankOutAtPositions($lines, $this->start[0], $this->start[1], $this->end[0], $this->end[1]); + } + + public function build(){ + if (!$this->start) { + die("DojoFunctionDeclare->build() used before setting a start position"); + } + if($this->end){ + return $this->end; + } + + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1]); + $line = trim($lines[$this->start[0]]); + if(strpos($line, 'function') === 0){ + $line = substr($line, 8); + preg_match('%[^\s]%', $line, $match); + if($match[0] != '('){ + $this->function_name = trim(substr($line, 0, strpos($line, '('))); + } + }else{ + $name = trim(substr($line, 0, strpos($line, '='))); + $extra = substr($line, strpos($line, '=') + 1); + if(preg_match('%^\s+new\s+%', $name, $match) || preg_match('%^\s*new\s+%', $extra, $match)){ + $this->anonymous = true; + $name = str_replace($match[0], '', $name); + } + if(($pos = strpos($name, '.prototype.')) !== false){ + $this->prototype = substr($name, 0, $pos); + $name = str_replace('.prototype', '', $name); + } + if(($pos = strpos($name, 'this.')) === 0){ + $this->instance = $this->getFunctionName(); + $name = $this->getFunctionName() . "." . preg_replace('%^this\.%', '', $name); + } + + if (!$this->isAnonymous()) { + $full_lines = Text::chop($this->package->getCode(), $this->start[0], 0); + $full_line = substr($full_lines[$this->start[0]], 0, $this->start[1]); + if (preg_match('%(?:[a-zA-Z0-9._$]+\s*=\s*)+$%', $full_line, $matches)) { + $aliases = preg_split('%\s*=\s*%', $matches[0]); + foreach ($aliases as $alias) { + $alias = trim($alias); + if ($alias) { + if (strpos($alias, 'this.') === 0) { + $alias = $this->getFunctionName() . "." . preg_replace('%^this\.%', '', $alias); + } + $this->aliases[] = $alias; + } + } + } + } + + if (strpos($name, '[') !== false) { + $source_lines = Text::chop($this->package->getSource(), $this->start[0], $this->start[1]); + $source_line = trim($source_lines[$this->start[0]]); + preg_match('%^\s*([a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]|\["[^"]+"\])*)\s*=\s*function%', $source_line, $match); + $name = preg_replace('%\["([^"]+)"\]%', '.$1', $match[1]); + } + $this->function_name = $name; + } + + $this->parameters->setStart($this->start[0], strpos($lines[$this->start[0]], '(')); + $end = $this->parameters->build(); + + $lines = Text::chop($this->package->getCode(), $end[0], $end[1]); + foreach($lines as $line_number => $line){ + if(($pos = strpos($line, '{')) !== false){ + $this->body->setStart($line_number, $pos); + return $this->end = $this->body->build(); + } + } + } + + public function getParameter($pos){ + return $this->parameters->getParameter($pos); + } + + public function getParameters(){ + return $this->parameters->getParameters(); + } + + public function getParameterNames(){ + $names = array(); + $parameters = $this->getParameters(); + foreach ($parameters as $parameter) { + if($parameter->isA(DojoVariable)){ + $names[] = $parameter->getVariable(); + } + } + return $names; + } + + public function addBlockCommentKey($key){ + $this->body->addBlockCommentKey($key); + } + + public function addBlockCommentKeySet($key){ + $this->body->addBlockCommentKeySet($key); + } + + public function getBlockCommentKeys(){ + return $this->body->getBlockCommentKeys(); + } + + public function getBlockComment($key){ + return $this->body->getBlockComment($key); + } + + public function getSource(){ + return $this->body->getSource(); + } + + public function getInstanceFunctions($function_name){ + return $this->body->getInstanceFunctions($function_name); + } + + public function rollOut(&$output){ + // Basically, any this.variables in here never impact this object, they apply to the "this" function + $masquerading_as_function = $function_name = $this->getFunctionName(); + if (substr($masquerading_as_function, 0, 7) == 'window.'){ + $masquerading_as_function = $function_name = substr($masquerading_as_function, 7); + } + $check_keys = array('summary','description','returns','tags','exceptions'); + + if (!empty($output[$function_name]['aliases'])) { + unset($output[$function_name]['aliases']); // This is implemented, it aliases nothing. + } + + if ($this->isThis()) { + $masquerading_as_function = $this->getThis(); + } + + $output[$function_name]['type'] = 'Function'; + if (!empty($output[$masquerading_as_function])) { + $output[$masquerading_as_function]['type'] = 'Function'; + } + + if ($aliases = $this->getAliases()) { + foreach ($aliases as $alias) { + if (empty($output[$alias])) { + $output[$alias]['aliases'] = $function_name; + } + } + } + + $parameters = $this->getParameters(); + foreach ($parameters as $parameter) { + if($parameter->isA(DojoVariable)){ + $parameter_name = $parameter->getVariable(); + $parameter_type = $parameter->getType(); + if(strpos($parameter_type, '?')){ + $parameter_type = substr($parameter_type, 0, strlen($parameter_type) - 1); + $output[$function_name]['parameters'][$parameter_name]['optional'] = true; + } + if(strpos($parameter_type, '...')){ + $parameter_type = substr($parameter_type, 0, strlen($parameter_type) - 3); + $output[$function_name]['parameters'][$parameter_name]['repeating'] = true; + } + if (empty($output[$function_name]['parameters'][$parameter_name]['type']) || $parameter_type) { + $output[$function_name]['parameters'][$parameter_name]['type'] = $parameter_type; + } + + $this->addBlockCommentKey($parameter->getVariable()); + } + } + + if ($this->isAnonymous()) { + $output[$function_name]['initialized'] = true; + + $declarations = $this->body->getExternalizedFunctionDeclarations($function_name); + foreach ($declarations as $declaration) { + $declaration->rollout($output); + } + + $variables = $this->body->getExternalizedInstanceVariableNames($function_name, $this->getParameterNames()); + foreach($variables as $variable) { + $output[$function_name . '.' . $variable]['instance'] = $function_name; + } + + $variables = $this->body->getExternalizedVariableNames($function_name, $this->getParameterNames()); + foreach($variables as $variable) { + list($first,) = explode('.', $variable, 2); + if (!is_array($output[$function_name]['parameters']) || !array_key_exists($first, $output[$function_name]['parameters'])) { + if (empty($output[$variable])) { + $output[$variable] = array(); + } + } + } + } + + foreach($check_keys as $ck){ + $this->addBlockCommentKey($ck); + } + $this->addBlockCommentKeySet('example'); + $check_keys[] = 'example'; + + $output[$function_name]['source'] = $this->getSource(); + + $all_variables = array(); + $instance_variables = $this->getInstanceVariableNames(); + foreach($instance_variables as $instance_variable){ + $this->addBlockCommentKey($instance_variable); + $all_variables[] = $instance_variable; + + $full_variable_name = "{$masquerading_as_function}.{$instance_variable}"; + $output[$full_variable_name]['instance'] = $masquerading_as_function; + } + + $instance_functions = $this->getInstanceFunctions($function_name); + foreach($instance_functions as $instance_function){ + $instance_function->rollOut($output); + $output[$instance_function->getFunctionName()]['instance'] = $function_name; + } + + $comment_keys = $this->getBlockCommentKeys(); + foreach($comment_keys as $key){ + if ($key == 'returns') { + $output[$function_name]['return_summary'] = $this->getBlockComment($key); + } + elseif (in_array($key, $check_keys)) { + $output[$function_name][$key] = $this->getBlockComment($key); + } + if (in_array($key, $all_variables) && $comment = $this->getBlockComment($key)) { + list($type, $comment) = preg_split('%\s+%', $comment, 2); + $type = preg_replace('%(^[^a-zA-Z0-9._$]|[^a-zA-Z0-9._$?]$)%', '', $type); + if($type){ + $output[$function_name . '.' . $key]['type'] = $type; + } + $output[$function_name . '.' . $key]['summary'] = $comment; + } + if (!empty($output[$function_name]['parameters']) && array_key_exists($key, $output[$function_name]['parameters']) && $comment = $this->getBlockComment($key)) { + list($tags, $parameter_type, $options, $summary) = DojoFunctionDeclare::parseVariable($comment); + + // If type is specified in the parameters, and it doesn't + // match the first word in this comment block, assume that + // this first word doesn't represent its type + if (!empty($output[$function_name]['parameters'][$key]['type']) && $parameter_type != $output[$function_name]['parameters'][$key]['type']) { + $summary = $comment; + $parameter_type = $output[$function_name]['parameters'][$key]['type']; + } + $output[$function_name]['parameters'][$key] = array_merge($output[$function_name]['parameters'][$key], $options); + $output[$function_name]['parameters'][$key]['type'] = $parameter_type; + $output[$function_name]['parameters'][$key]['summary'] = htmlentities($summary); + } + } + + $returns = $this->getReturnComments(); + if (count($returns)){ + $output[$function_name]['returns'] = implode('|', $returns); + } + + if ($output[$function_name]['example']) { + $output[$function_name]['examples'] = $output[$function_name]['example']; + unset($output[$function_name]['example']); + } + + if($calls = $this->getThisInheritanceCalls()){ + foreach ($calls as $call) { + $output[$function_name]['chains']['call'][] = $call; + } + } + + if($this->getPrototype()){ + $output[$function_name]['prototype'] = $this->getPrototype(); + } + if($this->getInstance()){ + $output[$function_name]['instance'] = $this->getInstance(); + } + } +} + +?> diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoNull.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoNull.php new file mode 100644 index 0000000..68d3f36 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoNull.php @@ -0,0 +1,18 @@ +value = $value; + } + + public function getValue(){ + return $this->value; + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoObject.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoObject.php new file mode 100644 index 0000000..bbefb8f --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoObject.php @@ -0,0 +1,209 @@ +body = new DojoFunctionBody($package, $line_number, $position); + } + + public function __destruct() { + parent::__destruct(); + unset($this->values); + unset($this->declarations); + unset($this->body); + unset($this->extra_block_values); + unset($this->anonymous); + } + + public function setName($name){ + $this->name = $name; + } + + public function getName(){ + return $this->name; + } + + public function setAnonymous($anonymous){ + $this->anonymous = true; + } + + public function isAnonymous(){ + return $this->anonymous; + } + + public function getBlockCommentKeys(){ + return $this->body->getBlockCommentKeys(); + } + + public function getBlockComment($key){ + return $this->body->getBlockComment($key); + } + + public function addBlockCommentKey($key){ + return $this->body->addBlockCommentKey($key); + } + + public function addBlockCommentKeySet($key){ + return $this->body->addBlockCOmmentKeySet($key); + } + + public function build(){ + if(!$this->start){ + die("DojoObject->build() used before setting a start position"); + } + + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], false, false, true); + $end = array($this->start[0], $this->start[1]); + + do { + $lines = Text::chop($this->package->getCode(), $end[0], $end[1], false, false, true); + foreach ($lines as $line_number => $line) { + if (preg_match('%^\s*}%', $line)) { + break; + } + if (preg_match('%^(\s*)([a-zA-Z0-9_$]+|"\s+")\s*:%', $line, $match)) { + if ($end[0] != $this->start[0] && $end[1] != $this->start[1]) { + if ($end[0]+1 > $line_number) { + continue; + } + $between_lines = Text::chop($this->package->getSource(), $end[0]+1, 0, $line_number, strlen($match[1]), true); + foreach ($between_lines as $between_line) { + $this->body->addBlockCommentLine($between_line); + } + } + $end = array($line_number, strlen($match[0])); + if ($match[2]{0} == '"' || $match[2]{0} == "'") { + $key = trim(implode(Text::chop($this->package->getSource(), $line_number, strpos($line, '"') + 1, $line_number, strlen($match[0]) - 3, false))); + }else{ + $key = $match[2]; + } + break; + } + } + if (!$key) { + $end = Text::findTermination($lines, '}'); + }else{ + $parameter = new DojoParameter($this->package, $end[0], $end[1], '}'); + $end = $parameter->build(); + $this->values[$key][] = $parameter; + } + } + while ($lines[$end[0]]{$end[1]} != '}'); + + $this->setEnd($end[0], $end[1]); + return $end; + } + + public function getKeys(){ + if (!$this->values) { + $this->build(); + } + return array_keys($this->values); + } + + public function getValues(){ + if(!$this->values){ + $this->build(); + } + return $this->values; + } + + public function rollOut(&$output, $item_type = 'Object'){ + $package_name = $this->package->getPackageName(); + $name = $this->getName(); + $variables = array(); + $check_keys = array('summary','description'); + + foreach($this->getValues() as $key => $values){ + foreach ($values as $value) { + if($value->isA(DojoFunctionDeclare)){ + $function = $value->getFunction(); + $this->declarations[] = $function; + if(!$function->isConstructor()){ + $function->setFunctionName("{$name}.{$key}"); + $function->rollOut($output); + } + }elseif ($value->isA(DojoObject)){ + $object = $value->getObject(); + $object->setName("{$name}.{$key}"); + $object->rollOut($output); + }else{ + $this->addBlockCommentKey($key); + $full_variable_name = "{$name}.{$key}"; + if (empty($output[$full_variable_name])) { + $output[$full_variable_name] = array(); + } + $variables[] = $key; + } + } + } + + foreach($check_keys as $ck){ + $this->addBlockCommentKey($ck); + } + $this->addBlockCommentKeySet("example"); + + $output[$name]['type'] = $item_type; + if ($comment = $this->getBlockComment('summary')) { + $output[$name]['summary'] = $comment; + } + if ($comment = $this->getBlockComment('description')) { + $output[$name]['description'] = $comment; + } + $examples = $this->getBlockComment('example'); + if ($examples && count($examples)) { + $output[$name]['examples'] = $examples; + } + + foreach($variables as $key){ + $full_variable_name = "{$name}.{$key}"; + if($comment = $this->getBlockComment($key)){ + list($tags, $parameter_type, $options, $summary) = DojoFunctionDeclare::parseVariable($comment); + if (!empty($tags)) { + $output[$full_variable_name]['tags'] = $tags; + } + if (!empty($parameter_type)) { + $output[$full_variable_name]['type'] = $parameter_type; + } + $output[$full_variable_name]['summary'] = $summary; + } + } + + foreach($check_keys as $ck){ + if(!$this->isAnonymous() && $comment = $this->getBlockComment($ck)){ + $output[$name][$ck] = $comment; + } + } + } + + public function removeCodeFrom($lines){ + for($i = $this->start[0]; $i <= $this->end[0]; $i++){ + $line = $lines[$i]; + if($i == $this->start[0]){ + $lines[$i] = Text::blankOutAt($line, $this->start[1]); + }elseif ($i == $this->end[0]){ + $lines[$i] = Text::blankOutAt($line, 0, $this->end[1]); + }else{ + $lines[$i] = Text::blankOut($line, $line); + } + } + return $lines; + } +} + +?> diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoPackage.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoPackage.php new file mode 100644 index 0000000..cb5c79a --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoPackage.php @@ -0,0 +1,515 @@ +dojo = $dojo; + $this->setFile($file); + } + + public function destroy() { + array_walk($this->declarations, 'destroy_all'); + unset($this->declarations); + array_walk($this->executions, 'destroy_all'); + unset($this->executions); + array_walk($this->calls, 'destroy_all'); + unset($this->calls); + array_walk($this->objects, 'destroy_all'); + unset($this->objects); + array_walk($this->aliases, 'destroy_all'); + unset($this->aliases); + } + + public function getFile(){ + return $this->file; + } + + public function setFile($file){ + $this->file = $file; + } + + public function getFunctionDeclarations(){ + $lines = $this->getCode(); + $end = array(0, 0); + + $matches = preg_grep('%function%', $lines); + $last_line = 0; + foreach($matches as $line_number => $line){ + if($line_number < $last_line){ + continue; + } + + if(preg_match('%(\bfunction\s+[a-zA-Z0-9_.$]+\b\s*\(|\b[a-zA-Z_.$][\w.$]*(?:\.[a-zA-Z_.$][\w.$]|\["[^"]+"\])*\s*=\s*(new\s*)?function\s*\()%', $line, $match)) { + $declaration = new DojoFunctionDeclare($this); + $declaration->setStart($line_number, strpos($line, $match[0])); + $end = $declaration->build(); + $last_line = $end[0]; + $this->declarations[$declaration->getFunctionName()][] = $declaration; + } + } + + return $this->declarations; + } + + /** + * Searches the file for the format: (function(){})(); + */ + public function getExecutedFunctions(){ + if ($this->executions) { + return $this->executions; + } + + $lines = $this->getCode(); + + $matches = preg_grep('%function%', $lines); + $last_line = 0; + foreach ($matches as $line_number => $line) { + if ($line_number < $last_line) { + continue; + } + + if (preg_match('%(?:([a-zA-Z_.$][\w.$]*)\s*=\s*)?(?:new\s*)?\(\s*function\s*\([^)]*\)\s*{%', $line, $match)) { + $execution = new DojoExecutedFunction($this); + $execution->setAnonymous(true); + if ($match[1]) { + $execution->setFunctionName($match[1]); + } + $execution->setStart($line_number, strpos($line, $match[0])); + $end = $execution->build(); + if ($end) { + $last_line = $end[0]; + $callee = $lines[$end[0]]; + $this->executions[] = $execution; + } + } + } + + return $this->executions; + } + + /** + * Use this to find everywhere in the code a function is called. + * + * @param unknown_type $name + */ + public function getFunctionCalls($name){ + if ($this->calls[$name]) { + return $this->calls[$name]; + } + + $this->calls[$name] = array(); + $lines = $this->getCode(); + $lines = preg_grep('%\b' . preg_quote($name) . '\s*\(%', $lines); + foreach ($lines as $line_number => $line) { + $position = strpos($line, $name); + if ($line_number < $last_line_number || ($line_number == $last_line_number && $position < $last_position)) { + continue; + } + $call = new DojoFunctionCall($this, $line_number, $position); + list($last_line_number, $last_position) = $call->build(); + $this->calls[$name][] = $call; + } + return $this->calls[$name]; + } + + public function removeCodeFrom($lines){ + $keys = array_keys($lines); + $first = array_shift($keys); + $last = array_pop($keys); + for($i = $first; $i <= $last; $i++) { + $line = $lines[$i]; + if (preg_match('%function\s*\([^)]*\)\s*{%', $line, $match, PREG_OFFSET_CAPTURE)) { + $declaration = new DojoFunctionDeclare($this, $i, $match[0][1]); + list($i, ) = $declaration->build(); + $lines = $declaration->removeCodeFrom($lines); + } + elseif (preg_match('%^.*(with|switch)\s*\([^(]*\)\s*{%', $line, $match)) { + $with_lines = Text::chop($lines, $i, strlen($match[0]) - 1, null, null, true); + list($end_line, $end_pos) = Text::findTermination($with_lines, '}', '{}()[]'); + for ($j = $i; $j <= $end_line; $j++) { + $line = $lines[$j]; + if ($j == $i) { + $lines[$j] = Text::blankOutAt($line, strlen($match[0]) - 1); + } + elseif ($j == $end_line) { + $lines[$j] = Text::blankOutAt($line, 0, $end_pos); + } + else { + $lines[$j] = Text::blankOut($line, $line); + } + } + } + } + + return $lines; + } + + public function getAliases(){ + if($this->aliases){ + return $this->aliases; + } + + return $this->aliases; + } + + public function getObjects(){ + if ($this->objects) { + return $this->objects; + } + + $lines = $this->getCode(); + foreach ($lines as $line_number => $line) { + if ($line_number < $end_line_number) { + continue; + } + if (preg_match('%\b([a-zA-Z0-9_.$]+)\s*=\s*{%', $line, $match, PREG_OFFSET_CAPTURE)) { + $object = new DojoObject($this, $line_number, $match[0][1] + strlen($match[0][0]) - 1); + $object->setName($match[1][0]); + list($end_line_number, $end_position) = $object->build(); + $this->objects[] = $object; + } + } + return $this->objects; + } + + public function getSource(){ + if ($this->source) { + return $this->source; + } + $lines = preg_split("%\r?\n%", file_get_contents($this->dojo->getDir() . $this->file)); + $lines[] = ''; + $in_comment = false; + foreach ($lines as $line_number => $line) { + $pos = 0; + $found = true; + while ($found) { + $found = false; + if (!$in_comment) { + if (preg_match('%/\*={5,}%', $line, $match, PREG_OFFSET_CAPTURE, $pos)) { + $line = $lines[$line_number] = Text::blankOut($match[0][0], $line); + $found = true; + $in_comment = true; + $pos = $match[0][1] + strlen($match[0][0]); + } + } + elseif (preg_match('%={5,}\*/%', $line, $match, PREG_OFFSET_CAPTURE, $pos)) { + $line = $lines[$line_number] = Text::blankOut($match[0][0], $line); + $found = true; + $in_comment = false; + $pos = $match[0][1] + strlen($match[0][0]); + } + } + } + return $this->source = $lines; + } + + /** + * Removes comments and strings, preserving layout + */ + public function getCode(){ + if ($this->code) { + return $this->code; + } + + $lines = $this->getSource(); + + $in_comment = false; + foreach ($lines as $line_number => $line) { + //print "$line_number $line\n"; + if ($in_comment !== false) { + if (preg_match('%^.*\*/%U', $line, $match)) { + $line = Text::blankOut($match[0], $line); + $in_comment = false; + } + else { + $line = Text::blankOut($line, $line); + } + } + + $position = 0; + $in_single_string = false; + $in_double_string = false; + $in_regex = false; + + for ($i = 0; $i < 100; $i++) { + $matches = array(); + + if ($in_comment === false && $in_regex === false && $in_single_string === false && $in_double_string === false) { + // Match the start of a line, the word return or case, or a character in: =([{,|&;:? + // Followed by zero or more spaces + // Followed by a forward slash + // Not followed by another forward slash + if (preg_match('%(?:^|\breturn\b|[=([{,|&;:?])\s*/(?!/)%', $line, $match, PREG_OFFSET_CAPTURE, $position)) { + $matches[$match[0][1] + strlen($match[0][0]) - 1] = '/'; + } + if (preg_match('%(?:^|\b(?:case|return)\b|[=([{,|&;:?+])\s*(["\'])%', $line, $match, PREG_OFFSET_CAPTURE, $position)) { + $matches[$match[0][1] + strlen($match[0][0]) - 1] = $match[1][0]; + } + if (($pos = strpos($line, '//', $position)) !== false) { + $matches[$pos] = '//'; + } + if (($pos = strpos($line, '/*', $position)) !== false) { + $matches[$pos] = '/*'; + } + } + elseif ($in_regex !== false) { + // A / not preceeded by a / or \ + // Followed by 0 or more spaces + // Followed by one of the characters: img.)]},|&;: or end of line + if (preg_match('%(? $match) { + if ($in_comment === false && $in_regex === false && $in_single_string === false && $in_double_string === false) { + if ($match == '"') { + $in_double_string = $position; + break; + } + elseif ($match == "'") { + $in_single_string = $position; + break; + } + elseif ($match == '/') { + $in_regex = $position; + break; + } + elseif ($match == '//') { + $line = Text::blankOutAt($line, $position); + break; + } + elseif ($match == '/*') { + $in_comment = $position; + ++$position; + break; + } + } + elseif ($in_double_string !== false && $match == '"') { + $line = Text::blankOutAt($line, $in_double_string + 1, $position - 1); + $in_double_string = false; + } + elseif ($in_single_string !== false && $match == "'") { + $line = Text::blankOutAt($line, $in_single_string + 1, $position - 1); + $in_single_string = false; + } + elseif ($in_regex !== false && $match == '/') { + $line = Text::blankOutAt($line, $in_regex + 1, $position - 1); + $in_regex = false; + } + elseif ($in_comment !== false && $match == '*/') { + $line = Text::blankOutAt($line, $in_comment + 2, $position - 1); + $in_comment = false; + } + } + ++$position; + } + + if($i == 500){ + die("\$i should not reach 500: $line"); + } + + if ($in_comment !== false && !empty($line)) { + $line = Text::blankOutAt($line, $in_comment); + $in_comment = 0; + } + + //print "$line_number $line\n"; + $lines[$line_number] = $line; + } + + return $this->code = $lines; + } + + /** + * After all calls are done, return what's left + */ + public function getExternalVariables(){ + $lines = $this->getCode(); + + foreach ($this->objects as $pobject) { + foreach ($pobject->declarations as $declaration) { + $lines = Text::blankOutAtPositions($lines, $declaration->start[0], $declaration->start[1], $declaration->end[0], $declaration->end[1]); + } + } + foreach($this->declarations as $declarations){ + foreach ($declarations as $declaration) { + $lines = Text::blankOutAtPositions($lines, $declaration->start[0], $declaration->start[1], $declaration->end[0], $declaration->end[1]); + } + } + foreach($this->calls as $call_name => $calls){ + foreach($calls as $call){ + $lines = Text::blankOutAtPositions($lines, $call->start[0], $call->start[1], $call->end[0], $call->end[1]); + } + } + foreach($this->executions as $execution){ + $lines = Text::blankOutAtPositions($lines, $execution->start[0], $execution->start[1], $execution->end[0], $execution->end[1]); + } + + $variables = array(); + foreach (preg_grep('%=%', $lines) as $line_number => $line) { + if (preg_match('%\b([a-zA-Z_.$][\w.$]*)\s*=(?!=)\s*(function\s*\()?%', $line, $match)) { + $variables[] = $match[1]; + } + } + + return $variables; + } + + /** + * Remove items from the passed objects if they are inside of existing calls or declarations + */ + public function removeSwallowed(&$objects){ + $swallowed = array(); + foreach ($objects as $i => $object) { + foreach ($this->objects as $pobject) { + if (($object->start[0] > $pobject->start[0] || ($object->start[0] == $pobject->start[0] && $object->start[1] > $pobject->start[1])) + && ($object->end[0] < $pobject->end[0] || ($object->end[0] == $pobject->end[0] && $object->end[1] < $pobject->end[1]))) { + if ($objects[$i]) { + $swallowed[] = $objects[$i]; + } + unset($objects[$i]); + } + foreach ($pobject->declarations as $declaration) { + if (($object->start[0] > $declaration->start[0] || ($object->start[0] == $declaration->start[0] && $object->start[1] > $declaration->start[1])) + && ($object->end[0] < $declaration->end[0] || ($object->end[0] == $declaration->end[0] && $object->end[1] < $declaration->end[1]))) { + if ($objects[$i]) { + $swallowed[] = $objects[$i]; + } + unset($objects[$i]); + } + } + } + foreach($this->declarations as $declarations){ + foreach ($declarations as $declaration) { + if(($object->start[0] > $declaration->start[0] || ($object->start[0] == $declaration->start[0] && $object->start[1] > $declaration->start[1])) + && ($object->end[0] < $declaration->end[0] || ($object->end[0] == $declaration->end[0] && $object->end[1] < $declaration->end[1]))) { + if ($objects[$i]) { + $swallowed[] = $objects[$i]; + } + unset($objects[$i]); + } + } + } + foreach($this->calls as $call_name => $calls){ + foreach($calls as $call){ + if(($object->start[0] > $call->start[0] || ($object->start[0] == $call->start[0] && $object->start[1] > $call->start[1])) + && ($object->end[0] < $call->end[0] || ($object->end[0] == $call->end[0] && $object->end[1] < $call->end[1]))) { + if ($objects[$i]) { + $swallowed[] = $objects[$i]; + } + unset($objects[$i]); + } + } + } + foreach($this->executions as $execution){ + if(($object->start[0] > $execution->start[0] || ($object->start[0] == $execution->start[0] && $object->start[1] > $execution->start[1])) + && ($object->end[0] < $execution->end[0] || ($object->end[0] == $execution->end[0] && $object->end[1] < $execution->end[1]))) { + if ($objects[$i]) { + $swallowed[] = $objects[$i]; + } + unset($objects[$i]); + } + } + } + + return $swallowed; + } + + public function getPackageName(){ + $name = ''; + + if (!function_exists($this->dojo->namespace . '_package_name')) { + if (file_exists('modules/' . $this->dojo->namespace . '.module')){ + include_once('modules/' . $this->dojo->namespace . '.module'); + } + else { + $parts = explode('/', $this->file); + $file_parts = explode('.', array_pop($parts)); + if (in_array('tests', $parts)) return; + array_pop($file_parts); + array_push($parts, implode('.', $file_parts)); + array_unshift($parts, $this->dojo->namespace); + $name = implode('.', $parts); + } + } + + if (function_exists($this->dojo->namespace . '_package_name')) { + $name = call_user_func($this->dojo->namespace . '_package_name', $this->dojo->namespace, $this->file); + } + + if($name) return $name; + return 'null'; + } + + public function getResourceName(){ + $name = ''; + + if (!function_exists($this->dojo->namespace . '_resource_name')) { + if (file_exists('modules/' . $this->dojo->namespace . '.module')) { + include_once('modules/' . $this->dojo->namespace . '.module'); + } + else { + $name = $this->file; + } + } + + if (function_exists($this->dojo->namespace . '_resource_name')) { + $name = call_user_func($this->dojo->namespace . '_resource_name', $this->dojo->namespace, $this->file); + } + + if($name) return $name; + return 'null'; + } + +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoParameter.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoParameter.php new file mode 100644 index 0000000..64731a7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoParameter.php @@ -0,0 +1,166 @@ +terminator = $terminator; + } + + public function __destruct() { + parent::__destruct(); + unset($this->parameter_value); + unset($this->parameter_type); + } + + public function exists(){ + return !empty($this->parameter_value); + } + + public function isA($class){ + if (!$this->parameter_value) { + $this->getValue(); + } + if ($this->parameter_value instanceof $class) { + return true; + } + return false; + } + + public function build(){ + if (!$this->start) { + debug_print_backtrace(); + die("DojoParameter->build() used before setting a start position"); + } + + $lines = Text::chop($this->package->getCode(), $this->start[0], $this->start[1], false, false, true); + list($line_number, $position) = Text::findTermination($lines, ',' . $this->terminator, '(){}[]'); + $this->setEnd($line_number, $position); + return $this->end; + } + + public function getString(){ + if ($this->isA(DojoString)) { + return $this->parameter_value->getValue(); + } + return ''; + } + + public function getObject(){ + if ($this->isA(DojoObject)) { + return $this->parameter_value; + } + return new DojoObject($this->package); + } + + public function getFunction(){ + if ($this->isA(DojoFunctionDeclare)) { + $this->parameter_value->build(); + return $this->parameter_value; + } + return new DojoFunctionDeclare($this->package); + } + + public function getArray(){ + if ($this->isA(DojoArray)) { + $this->parameter_value->build(); + return $this->parameter_value; + } + require_once('DojoArray.php'); // Chase condition + return new DojoArray($this->package); + } + + public function getVariable(){ + if ($this->isA(DojoVariable)) { + return $this->parameter_value->getValue(); + } + return new DojoVariable(''); + } + + public function setVariable($value){ + if ($this->isA(DojoVariable)) { + $this->parameter_value->setValue($value); + } + } + + public function getValue(){ + if ($this->parameter_value) { + return $this->parameter_value; + } + + $lines = Text::chop($this->package->getSource(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + $parameter_value = Text::trim(implode("\n", $lines)); + + if ($parameter_value{0} == '"' || $parameter_value{0} == "'") { + $this->parameter_value = new DojoString($parameter_value); + } + elseif ($parameter_value{0} == '{') { + foreach ($lines as $line_number => $line) { + if (($position = strpos($line, '{')) !== false) { + $this->parameter_value = new DojoObject($this->package, $line_number, $position); + break; + } + } + } + elseif (strpos($parameter_value, 'function') === 0) { + foreach ($lines as $line_number => $line) { + if (($position = strpos($line, 'function')) !== false) { + $this->parameter_value = new DojoFunctionDeclare($this->package, $line_number, $position); + break; + } + } + } + elseif ($parameter_value{0} == '[') { + foreach ($lines as $line_number => $line) { + if (($position = strpos($line, '[')) !== false) { + require_once('DojoArray.php'); // Chase condition + $this->parameter_value = new DojoArray($this->package, $line_number, $position); + break; + } + } + } + elseif ($parameter_value == 'null' || $parameter_value == 'undefined') { + $this->parameter_value = new DojoNull($parameter_value); + } + elseif ($parameter_value == 'true' || $parameter_value == 'false') { + $this->parameter_value = new DojoBoolean($parameter_value); + } + elseif (!empty($parameter_value)) { + $this->parameter_value = new DojoVariable($parameter_value); + } + + return $this->parameter_value; + } + + public function getType(){ + if ($this->parameter_type) { + return $this->parameter_type; + } + + $type = array(); + $lines = Text::chop($this->package->getSource(), $this->start[0], $this->start[1], $this->end[0], $this->end[1], true); + foreach ($lines as $line) { + list($first, $middle, $last, $data, $multiline) = Text::findComments($line, $multiline); + $type = array_merge($type, array($first, $middle, $last)); + } + + return $this->parameter_type = implode(' ', array_diff($type, array(''))); + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoParameters.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoParameters.php new file mode 100644 index 0000000..ebf4521 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoParameters.php @@ -0,0 +1,60 @@ +parameters, 'destroy_all'); + unset($this->parameters); + } + + public function build(){ + if (!$this->start) { + die("DojoParameters->build() used before setting a start position"); + } + + $code = $this->package->getCode(); + $end = array($this->start[0], $this->start[1]); + + do { + $parameter = new DojoParameter($this->package, $end[0], $end[1], $this->terminator); + $end = $parameter->build(); + + $this->parameters[] = $parameter; + } while ($code[$end[0]]{$end[1]} != $this->terminator); + + $this->setEnd($end[0], $end[1]); + return $end; + } + + public function getParameter($pos){ + if ($this->parameters && !empty($this->parameters[$pos])) { + return $this->parameters[$pos]; + } + else { + return new DojoParameter($this->package); + } + } + + public function getParameters(){ + if ($this->parameters) { + return $this->parameters; + } + else{ + return array(); + } + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoString.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoString.php new file mode 100644 index 0000000..cc0bfc1 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoString.php @@ -0,0 +1,18 @@ +value = preg_replace('%(^[\'"]|["\']$)%', '', $string); + } + + public function getValue(){ + return $this->value; + } +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoVariable.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoVariable.php new file mode 100644 index 0000000..6492c39 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/DojoVariable.php @@ -0,0 +1,21 @@ +value = $value; + } + + public function setValue($value) { + $this->value = $value; + } + + public function getValue(){ + return $this->value; + } + +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/README b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/README new file mode 100755 index 0000000..4424b9b --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/README @@ -0,0 +1,2 @@ +Even though it's written for Dojo, these files are a general-purpose solution for analyzing JavaScript source code. +It doesn't create a tree, but instead provides an API for looking through source code. diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/Text.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/Text.php new file mode 100644 index 0000000..b5439bf --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser/Text.php @@ -0,0 +1,213 @@ += strlen($array[$line_number])) { + ++$line_number; + $position = 0; + while (!strlen($array[$line_number])) { + ++$line_number; + } + } + return array($line_number, $position); + } + + public static function blankOutAtPositions($to_blank, $start_line, $start_pos, $end_line = -1, $end_pos = -1) { + foreach ($to_blank as $line_number => $line) { + if ($line_number == $start_line) { + $to_blank[$line_number] = Text::blankOutAt($line, $start_pos); + } + if ($line_number > $start_line) { + if ($end_line == -1 || $line_number < $end_line) { + $to_blank[$line_number] = Text::blankOutAt($line, 0); + } + elseif ($line_number == $end_line) { + $to_blank[$line_number] = Text::blankOutAt($line, 0, $end_pos); + } + } + } + return $to_blank; + } + + public static function blankOutAt($to_blank, $start, $end = -1) { + if ($end == -1) { + $end = strlen($to_blank) - 1; + } + $length = $end - $start + 1; + if (!$length) { + return $to_blank; + } + if ($length < 0) { + throw new Exception("Length is less than 0"); + } + $blanks = array_fill(0, $length, ' '); + return substr($to_blank, 0, $start) . implode($blanks) . substr($to_blank, $end + 1); + } + + public static function trim($string) { + return trim(preg_replace('%(^\s*/\*.*\*/\s*?|\s*?/\*.*\*/\s*$|^\s*//.*\n\s*?|\s*?//.*$)%U', '', $string)); + } + + public static function chop($array, $start_line, $start_position, $end_line = false, $end_position = false, $exclusive = false) { + if (!is_numeric($end_line)) { + $end_line = end(array_keys($array)); + } + if (!is_numeric($end_position)) { + $end_position = strlen($array[$end_line]) - 1; + if ($end_position < 0) { + $end_position = 0; + } + } + + $lines = array_slice($array, $start_line, $end_line - $start_line + 1, true); + if ($start_position > 0) { + $lines[$start_line] = Text::blankOutAt($lines[$start_line], 0, $start_position - 1); + } + $lines[$end_line] = Text::blankOutAt($lines[$end_line], $end_position + 1, strlen($lines[$end_line])); + if ($exclusive) { + if ($lines[$start_line]{$start_position}) { + $lines[$start_line]{$start_position} = ' '; + } + if ($lines[$end_line]{$end_position}) { + $lines[$end_line]{$end_position} = ' '; + } + } + + return $lines; + } + + /** + * Always starts at the beginning. If you want a character to be ignored, it shouldn't be passed (see chop and blankOutAt) + */ + public static function findTermination($source_array, $termination_characters, $enclosing_characters = '') { + $characters = array(); + $terminators = array(); + foreach (self::toArray($termination_characters) as $character) { + $terminators[$character] = true; + } + foreach (self::toArray($enclosing_characters) as $index => $character) { + $characters[$character] = ($index % 2) ? -1 : 1; + } + $all_characters = array_merge(array_keys($terminators), array_keys($characters)); + + $balance = 0; + + foreach ($source_array as $line_number => $line) { + $line = self::toArray($line); + foreach (array_intersect($line, $all_characters) as $position => $character) { + if (!$balance && $terminators[$character]) { + return array($line_number, $position); + } + $balance += $characters[$character]; + } + } + + return array($line_number, $position); + } + + public static function toArray($string) { + return array_slice(preg_split('%%', $string), 1, -1); + } + + /** + * Splits a comment line up + * + * @returns Array(whitespace, comment data, non-comment data, comment data, has non-comment-data, comment continues on next line) + */ + public static function findComments($line, $started = false) { + if (empty($line) && !$started) { + return array(false, false, false, false, false); + } + + $first = array(); + $middle = array(); + $last = array(); + $data = false; + $multiline = false; + + if ($started) { + // If we're already in a (multi-line) comment, look to close it up + if (($pos = strpos($line, '*/')) !== false) { + $first[] = trim(substr($line, 0, $pos)); + $line = substr($line, $pos + 2); + } + else { + // We didn't find a terminator, we're still in a multi-line comment + $multiline = true; + } + } + + $single_line = false; // Denotes that we're in a single-line comment. + if (!$multiline) { + // Split by //, /*, and */ while ignoring any surrounding whitespace + $parts = preg_split('%(\s*(?://|/\*|\*/)\s*)%', $line, -1, PREG_SPLIT_DELIM_CAPTURE); + foreach ($parts as $part) { + if (!($trimmed = trim($part))) continue; + if ($multiline && $trimmed == '*/') { + $multiline = false; // Multi-line ends! + } + elseif ($single_line || $multiline) { // If we're within a comment + if (!$data) { + $first[] = $part; + } + else { // If we've found any non-comment data, we start logging this as "after" the data + $last[] = $part; + } + } + elseif ($trimmed == '//') { + $single_line = true; + } + elseif ($trimmed == '/*') { + $multiline = true; + } + else { + $data = true; + $middle = array_merge($middle, $last); + $last = array(); + } + } + } + + return array(trim(implode('', $first)), trim(implode('', $middle)), trim(implode('', $last)), $data, $multiline); + } + +} + +?> \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Destructable.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Destructable.php new file mode 100644 index 0000000..7ef391a --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Destructable.php @@ -0,0 +1,21 @@ +$key) { + if (is_object($this->$key)) { + $this->$key->__destruct(); + } + elseif (is_array($this->$key)) { + foreach ($this->$key as $loc => $value) { + if (is_object($value)) { + $value->__destruct(); + } + } + } + unset($this->$key); + } + } + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Dojo.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Dojo.php new file mode 100644 index 0000000..943c745 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Dojo.php @@ -0,0 +1,207 @@ +values()))); + foreach ($object->values() as $key => $values) { + foreach ($values as $value) { + self::roll_out($value, "$name.$key", FALSE, $output, $new_keys); + if ($on_prototype) { + $output["$name.$key"]['prototype'] = $on_prototype; + } + } + } + self::roll_out_comment_block($object, $name, $output, $new_keys); + } + + private static function set_type($object, &$on) { + if (empty($on['type']) && ($type = $object->type()) && $type != 'null') { + if ($type == 'variable') { + $on['alias'] = $object->value(); + } + elseif (empty($on['inferred_type']) || $type != 'Object') { + $on['inferred_type'] = $type; + } + } + } + + public static function roll_out_comment_block($object, $name, &$output, $new_keys=array()) { + $comments = new DojoCommentBlock($object->comments(), self::$block_keys, array('example')); + foreach ($new_keys as $key) { + $comments->add_key($key); + } + self::roll_out_comments($comments, $name, self::$block_keys, $new_keys, $output); + } + + private static function roll_out_comments($comments, $name, $keys, $new_keys, &$output) { + foreach ($comments->all() as $key => $text) { + if ($key == 'example') { + $output[$name]['examples'] = $text; + } + elseif ($key == 'tags') { + $output[$name]['tags'] = preg_split('%\s+%', trim($text)); + } + elseif ($key == 'returns') { + $output[$name]['return_summary'] = $text; + } + elseif (in_array($key, $keys) && !empty($text)) { + $output[$name][$key] = ($key == 'summary') ? self::format_summary($text) : $text; + } + elseif (in_array($key, $new_keys)) { + self::property_text($text, $output[$name . '.' . $key]); + } + elseif (!empty($output[$name]['parameters']) && array_key_exists($key, $output[$name]['parameters'])) { + self::property_text($text, $output[$name]['parameters'][$key]); + } + } + } + + public static function roll_out($object, $name, $into_function, &$output, $new_keys=array(), $is_prototype=FALSE) { + if (empty($output[$name])) { + $output[$name] = array(); + } + + self::set_type($object, $output[$name]); + + $keys = self::$block_keys; + $this_keys = array(); + + if ($object instanceof JavaScriptObject || $object instanceof JavaScriptFunction) { + if ($object instanceof JavaScriptObject) { + self::roll_out_object($object, $name, $output, $keys, $is_prototype ? $name : NULL); + } + elseif ($object instanceof JavaScriptFunction) { + $comments = new DojoCommentBlock($object->comments(), $keys, array('example')); + $parent = $this_comment = $comments->get('this'); + if (!$parent) { + $parent = $name; + } + elseif ($parent == 'namespace') { + $parent = implode('.', array_slice(explode('.', $name), 0, -1)); + } + $body = new JavaScriptStatements($object->body()); + + foreach ($body->assignments(FALSE, $into_function) as $variable) { + if (substr($variable->name(), 0, 5) == 'this.') { + $variable_name = substr($variable->name(), 5); + $comments->add_key($variable_name); + $this_keys[] = $variable_name; + $full_variable_name = $parent . '.' . $variable_name; + + if (!$this_comment) { + $found = FALSE; + if (!empty($output[$name]['prototype'])) { + $found = TRUE; + $full_variable_name = $output[$name]['prototype'] . '.' . $variable_name; + $output[$full_variable_name]['prototype'] = $output[$name]['prototype']; + } + if (!empty($output[$name]['instance'])) { + $found = TRUE; + $full_variable_name = $output[$name]['instance'] . '.' . $variable_name; + $output[$full_variable_name]['instance'] = $output[$name]['instance']; + } + if (!$found) { + $output[$full_variable_name]['instance'] = $name; + } + } + + if ($variable_type = $variable->type()) { + if ($variable_type == 'Function') { + self::roll_out($variable->value(), $full_variable_name, FALSE, $output); + } + $output[$full_variable_name]['inferred_type'] = $variable_type; + } + } + } + + $blocks = $comments->all(); + foreach ($this_keys as $key) { + if ($blocks[$key]) { + self::property_text($blocks[$key], $output[$parent . '.' . $key]); + } + } + + // TODO: Look for mixins on the same sort of values + foreach ($object->parameters() as $parameter) { + $comments->add_key($parameter->name); + + $output[$name]['parameters'][$parameter->name]['name'] = $parameter->name; + + $type = ''; + if (!empty($parameter->comments)) { + $type = preg_replace('%(^/\*\s*|\s*\*/$)%', '', $parameter->comments[0]); + } + + self::property_text($type, $output[$name]['parameters'][$parameter->name]); + } + + if ($body->function_calls(TRUE, 'dojo.deprecated')) { + $output[$name]['deprecated'] = TRUE; + } + + $returns = empty($output[$name]['returns']) ? array() : explode('|', $output[$name]['returns']); + foreach ($body->prefix('return') as $return) { + if (($pos = strrpos($return->line, '//')) !== false) { + $returns = array_merge($returns, preg_split('%\s*\|\s*%', trim(substr($return->line, $pos + 2)))); + } + } + if (!empty($returns)) { + $output[$name]['returns'] = implode('|', array_unique($returns)); + } + + self::roll_out_comments($comments, $name, $keys, array(), $output); + } + } + + return $new_keys; + } + + private static function format_summary($summary) { + return htmlentities($summary); + //return preg_replace('%`([^`]+)`%', '$1', htmlentities($summary)); + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/DojoCommentBlock.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/DojoCommentBlock.php new file mode 100644 index 0000000..8fc3ad9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/DojoCommentBlock.php @@ -0,0 +1,98 @@ +comments = $comments; + $this->keys = $keys; + $this->key_sets = $key_sets; + } + + public function __destruct() { + unset($this->blocks); + unset($this->comments); + unset($this->keys); + unset($this->key_sets); + } + + public function add_key($key) { + unset($this->blocks); + $this->keys[] = $key; + } + + public function return_type() { + // TODO: Add return type(s) + } + + public function get($key) { + $comments = $this->all(); + return $comments[$key] ? $comments[$key] : ''; + } + + public function all() { + if (isset($this->blocks)) { + return $this->blocks; + } + + $expression = '%^' . self::$prefix . '(' . implode('|', array_merge($this->keys, $this->key_sets)) . ')' . self::$suffix . '\W*%'; + + $blocks = array(); + $buffer = array(); + $key = NULL; + foreach ($this->comments as $comment) { + if (empty($comment) && $key) { + $this->swallow($blocks, $key, $buffer); + } + + $comment = preg_replace('%(^//\s*|^/\*\s*|\s*\*/$)%', '', $comment); + foreach (explode("\n", $comment) as $line) { + if (preg_match($expression, $line, $match)) { + if ($key && !empty($buffer)) { + $this->swallow($blocks, $key, $buffer); + } + $line = substr($line, strlen($match[0])); + $key = $match[1]; + } + + $line = trim($line); + if ($line && $line{0} == '|') { + $line = substr($line, 1); + } + + if ($key) { + $buffer[] = $line; + } + } + } + + if ($key && !empty($buffer)) { + $this->swallow($blocks, $key, $buffer); + } + + return ($this->blocks = $blocks); + } + + private function swallow(&$blocks, &$key, &$lines) { + $lines = preg_replace('%(^\n+|\n+$)%', '', implode("\n", $lines)); + if (in_array($key, $this->keys)) { + $blocks[$key] = $lines; + } + else { + $blocks[$key][] = $lines; + } + + $key = NULL; + $lines = array(); + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptArray.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptArray.php new file mode 100644 index 0000000..dd58d03 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptArray.php @@ -0,0 +1,98 @@ +length = count($args); + $this->args = $args; + } + + public function __destruct() { + $this->mem_flush('args', 'resolved_args'); + } + + public function type() { + return 'Array'; + } + + public function get($position) { + $args = $this->all(); + return $args[$position]; + } + + private function getType($position, $type) { + $args = $this->all(); + if ($args[$position] && get_class($args[$position]) == $type) { + return $args[$position]; + } + } + + public function getVariable($position, $is_global = FALSE) { + if ($variable = $this->getType($position, 'JavaScriptVariable')) { + return (!$is_global || $variable->is_global()) ? $variable->value() : NULL; + } + if ($variable = $this->getType($position, 'JavaScriptLiteral')) { + return $is_global ? NULL : $variable->value(); + } + } + + public function getString($position) { + if ($string = $this->getType($position, 'JavaScriptString')) { + return $string->value(); + } + } + + public function getNumber($position) { + if ($number = $this->getType($position, 'JavaScriptNumber')) { + return $number->value(); + } + } + + public function getRegExp($position) { + if ($regexp = $this->getType($position, 'JavaScriptRegExp')) { + return $regexp->value(); + } + } + + public function getFunction($position) { + return $this->getType($position, 'JavaScriptFunction'); + } + + public function getArray($position) { + return $this->getType($position, 'JavaScriptArray'); + } + + public function getObject($position) { + return $this->getType($position, 'JavaScriptObject'); + } + + public function all() { + if (isset($this->resolved_args)) { + return $this->resolved_args; + } + + $args = array(); + foreach ($this->args as $arg) { + if (is_object($arg)) { + $args[] = $arg->convert(); + } + } + + return ($this->resolved_args = $args); + } +} + +?> diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptAssignment.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptAssignment.php new file mode 100644 index 0000000..2dbc28c --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptAssignment.php @@ -0,0 +1,56 @@ +value = $value; + } + + public function __destruct() { + $this->mem_flush('value', 'resolved_value'); + } + + public function name() { + return parent::value(); + } + + public function names() { + return parent::values(); + } + + public function value() { + if (!isset($this->resolved_value)) { + $value = $this->value; + if (is_array($value) && count($value) == 1) { + $value = $value[0]; + } + $this->resolved_value = $value->convert(); + } + return $this->resolved_value; + } + + public function types() { + $value = $this->value(); + if (is_array($value)) { + $mapped = array(); + foreach ($value as $item) { + $mapped[] = $item->type(); + } + return $mapped; + } + return array($value->type()); + } + + public function type() { + $types = array_diff($this->types(), array('variable')); + if (count($types) == 1) { + return array_pop($types); + } + return ''; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptFunction.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptFunction.php new file mode 100644 index 0000000..e3bf9d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptFunction.php @@ -0,0 +1,42 @@ +statement = $statement; + } + + public function __destruct() { + $this->mem_flush('statement'); + } + + public function type() { + return 'Function'; + } + + public function comments() { + return $this->statement->comments; + } + + public function body() { + return $this->statement->second; + } + + public function parameters() { + $parameters = array(); + foreach ($this->statement->first as $parameter) { + $parameters[] = (object)array( + 'name' => $parameter->value, + 'comments' => $parameter->comments + ); + } + return $parameters; + } + + public function __toString() { + return '(' . $this->type() . ')'; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptFunctionCall.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptFunctionCall.php new file mode 100644 index 0000000..dc3335f --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptFunctionCall.php @@ -0,0 +1,74 @@ +call = $call; + $this->args = $args; + } + + public function __destruct() { + $this->mem_flush('call', 'args', 'assignment', 'resolved_args', 'name', 'global_scope'); + } + + private function resolve() { + if (!$this->call->is_lookup()) { + $this->global_scope = FALSE; + $this->name = NULL; + } + else { + list ($this->global_scope, $this->name) = $this->call->resolve(); + } + } + + public function name() { + if (!isset($this->name)) { + $this->resolve(); + } + return $this->name; + } + + public function setAssignment($assignment) { + $this->assignment = $assignment; + } + + public function assignment() { + if ($this->assignment) { + if ($this->assignment->is_lookup()) { + list(, $assignment) = $this->assignment->resolve(); + return $assignment; + } + } + return NULL; + } + + public function is_global () { + if (!isset($this->global_scope)) { + $this->resolve(); + } + return !!$this->global_scope; + } + + public function type() { + // TODO: Try to resolve return type + return 'Object'; + } + + public function arguments() { + if (isset($this->resolved_args)) { + return $this->resolved_args; + } + return ($this->resolved_args = new JavaScriptArray($this->args)); + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptLanguage.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptLanguage.php new file mode 100644 index 0000000..c8e7b08 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptLanguage.php @@ -0,0 +1,265 @@ + $type, 'value' => $value, 'line_number' => $extras['line_number'], 'char_pos' => $extras['char_pos'], 'line' => $extras['exploded_lines'][$extras['line_number'] - 1]); + } + + public static function tokenize($lines) { + $lines = str_replace("\r", '', $lines); + $tokens = array(); + + $exploded_lines = explode("\n", $lines); + $line_number = 1; + $char_pos = 0; + $extras = array('exploded_lines', 'line_number', 'char_pos'); + + $positions = array(); + for ($i = 0; $i < strlen($lines); $i++) { + $char = $lines{$i}; + + $positions[$i] = $line_number . '|' . ++$char_pos; + + if ($char == "\n") { + ++$line_number; + $char_pos = 0; + } + } + + for ($i = 0; $i < strlen($lines); $i++) { + $char = $lines{$i}; + + list($line_number, $char_pos) = explode('|', $positions[$i], 2); + + if (count($tokens)) { + $pop = &$tokens[count($tokens) - 1]; + } + else { + $pop = array('type' => '', 'value' => ''); + } + + $last_expression = array('type' => '', 'value' => ''); + // The last expression might be behind a comment + // This is needed for stuff like regex + for ($j = count($tokens) - 1; $j >= 0; $j--) { + if ($tokens[$j]['type'] != 'comment') { + $last_expression = $tokens[$j]; + break; + } + } + + if ($char == ' ' || $char == "\t") { + $pop['terminated'] = true; + continue; + } + + switch($char){ + case '-': + case '+': + case '<': + case '>': + case '=': + case '.': + case '|': + case '&': + case ':': + if ($char == '-' && !$pop['terminated'] && $pop['type'] == 'operator' && $pop['value'] == '-') { + $pop['value'] = '--'; + break; + } + elseif ($char == '+' && !$pop['terminated'] && $pop['type'] == 'operator' && $pop['value'] == '+') { + $pop['value'] = '++'; + break; + } + elseif ($char == '<' && !$pop['terminated'] && $pop['type'] == 'operator' && $pop['value'] == '<') { + $pop['value'] = '<<'; + break; + } + elseif ($char == '>' && !$pop['terminated'] && $pop['type'] == 'operator' && ($pop['value'] == '>' || $pop['value'] == '>>')) { + $pop['value'] .= '>'; + break; + } + elseif ($char == '=' && !$pop['terminated'] && $pop['type'] == 'operator' && in_array($pop['value'], array('+', '-', '*', '/', '%', '<<', '>>', '>>>', '&', '^', '|', '!', '!=', '=', '==', '>', '<'))) { + $pop['value'] .= $char; + break; + } + elseif ($char == '.' && !$pop['terminated'] && $pop['type'] == 'number') { + $pop['value'] .= $char; + break; + } + elseif ($char == '|' && !$pop['terminated'] && $pop['type'] == 'operator' && $pop['value'] == '|') { + $pop['value'] = '||'; + break; + } + elseif ($char == '&' && !$pop['terminated'] && $pop['type'] == 'operator' && $pop['value'] == '&') { + $pop['value'] = '&&'; + break; + } + elseif ($case == ':' && !$pop['terminated'] && $pop['type'] == 'operator' && $pop['value'] == '?') { + $pop['value'] = '?:'; + break; + } + case "\n": + case ';': + case ',': + case '(': + case ')': + case '[': + case ']': + case '{': + case '}': + case '!': + case '?': + case '*': + case '%': + case '~': + case '^': + $tokens[] = self::new_token('operator', $char, compact($extras)); + break; + case "'": + case '"': + $string = ''; + $last = ''; + for(++$i; $i < strlen($lines); $i++){ + $letter = $lines{$i}; + if ($last == '\\') { + $string .= $letter; + if ($letter == '\\') { + // Double backslash + $last = ''; + continue; + } + } + elseif ($letter != $char) { + $string .= $letter; + } + else { + break; + } + $last = $letter; + } + $tokens[] = self::new_token('string', str_replace("\\$char", $char, $string), compact($extras)); + break; + case '/': + // Single-line comment, multi-line comment, regular expression, or just a division sign + $content = $char; + $instruction = NULL; + $single = FALSE; + $multi = FALSE; + $escaped = FALSE; + $last = ''; + $length = strlen($lines); + for ($j = $i + 1; $j <= $length; $j++) { + $letter = ($j == $length) ? "\n" : $lines{$j}; + if ($single) { + if ($letter == "\n") { + $instruction = 'comment'; + $i = $j - 1; + break; + } + } + elseif ($multi) { + if (strlen($content) > 2 && $letter == '/' && $last == '*') { + $content .= $letter; + $instruction = 'comment'; + $i = $j; + break; + } + } + elseif ($last === '' && $letter == '/') { + $single = TRUE; + } + elseif ($last === '' && $letter == '*') { + $multi = TRUE; + } + elseif ($escaped) { + $escaped = FALSE; + } + elseif ($letter == '\\') { + $escaped = TRUE; + } + elseif ($last === '') { + // If it's not a comment, it might be a regex + // which can only occur after certain operators + if (in_array($last_expression['value'], array(')', ']')) || ($last_expression['type'] != 'operator' && $last_expression['value'] != 'return')) { + $content = '/'; + $instruction = 'operator'; + break; + } + } + elseif ($letter == '/') { + // When the regex ends, we need to look for modifiers + $content .= $letter; + $instruction = 'regex'; + $i = $j; + for ($k = $j + 1; $k < $length; $k++) { + $modifier = $lines{$k}; + if ($modifier == ' ' || $modifier == "\t") { + $last = $modifier; + continue; + } + elseif(in_array($modifier, array('i', 'm', 'g'))) { + $i = $k; + $content .= $modifier; + } + else { + break; + } + } + break; + } + elseif ($letter == "\n") { + // End of the expression with no regex terminator + // So it's a division sign + $content = '/'; + $instruction = 'operator'; + break; + } + + $content .= $letter; + $last = $letter; + } + + $tokens[] = self::new_token($instruction, $content, compact($extras)); + break; + default: + if ($pop['type'] != 'name' && is_numeric($char)) { + if ($pop['value'] == '.' || $pop['type'] == 'number') { + $pop['type'] = 'number'; + $pop['value'] .= $char; + } + else { + $tokens[] = self::new_token('number', $char, compact($extras)); + } + } + else { + if (!$pop['terminated'] && $pop['type'] == 'name') { + $pop['value'] .= $char; + } + elseif ($pop['type'] == 'number' && strtolower(substr($pop['value'], 0, 2)) == '0x' && stripos('1234567890abcdef', $char) !== false) { + // Hex + $pop['value'] .= $char; + } + elseif (strtolower($char) == 'x' && $pop['value'] == '0') { + // Hex + $pop['value'] .= $char; + } + elseif (strtolower($char) == 'e' && $pop['type'] == 'number') { + // e-notation + $pop['value'] .= $char; + } + else { + $tokens[] = self::new_token('name', $char, compact($extras)); + } + } + } + } + + // print '
                                                                      ';
                                                                      +    // print_r($tokens);
                                                                      +    // print '
                                                                      '; + // die(); + + return $tokens; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptLiteral.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptLiteral.php new file mode 100644 index 0000000..407cb0c --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptLiteral.php @@ -0,0 +1,56 @@ +value = $value; + } + + public function __destruct() { + $this->mem_flush('value'); + } + + public function value() { + return $this->value; + } + + public function type() { + if (is_object($this->value)) { + if ($this->value->arity == 'this') { + return 'Object'; + } + elseif (strlen($this->value->id) > 1 && in_array($this->value->id{0}, array('!', '=', '<', '>'))) { + return 'bool'; + } + elseif (in_array($this->value->id, array('!', '>', '<', '&', '|'))) { + return 'bool'; + } + elseif ($this->value->id == '+' && !is_numeric($this->value->second->value)) { + return 'String'; + } + elseif (in_array($this->value->id, array('++', '--', '+', '-', '*', '/', '%'))) { + return 'Number'; + } + elseif ($this->value->id == '&&' || $this->value->id == '||') { + $first = $this->value->first; + if (is_array($first)) { + $first = $first[0]; + } + return $first->type(); + } + } + elseif (is_null($this->value) || $this->value == 'null') { + return 'Object'; + } + elseif (is_bool($this->value)) { + return 'bool'; + } + elseif ($this->value == 'arguments') { + return 'Array'; + } + throw new Exception("Unstringed literal type: {$this->value}"); + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptNumber.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptNumber.php new file mode 100644 index 0000000..eeb1a07 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptNumber.php @@ -0,0 +1,9 @@ +statement = $statement; + } + + public function __destruct() { + $this->mem_flush('statement', 'keys'); + } + + public function type() { + return 'Object'; + } + + public function comments() { + return $this->statement->comments; + } + + public function values() { + if (isset($this->keys)) { + return $this->keys; + } + + $keys = array(); + foreach ($this->statement->first as $value) { + if (is_array($value)) { + $value = $value[0]; + } + $keys[$value->key][] = $value->convert(); + } + + return ($this->keys = $keys); + } + + public function __toString() { + return '(' . $this->type() . ')'; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptOr.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptOr.php new file mode 100644 index 0000000..e8bcf40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptOr.php @@ -0,0 +1,37 @@ +ors = $ors; + } + + public function __destruct() { + $this->mem_flush('ors'); + } + + public function types() { + $mapped = array(); + foreach ($this->ors as $item) { + $mapped[] = $item->type(); + } + return $mapped; + } + + public function type() { + $types = array_diff($this->types(), array('variable')); + if (count($types) == 1) { + return array_pop($types); + } + // Assume that if one of them is a boolean, they all are + if (in_array('bool', $types)) { + return 'bool'; + } + + return 'Object'; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptParser.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptParser.php new file mode 100644 index 0000000..668d6c2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptParser.php @@ -0,0 +1,129 @@ +symbol(';'); + $this->symbol("\n"); + $this->symbol(','); + $this->symbol(')'); + $this->symbol(']'); + $this->symbol('}'); + $this->symbol('else'); + $this->symbol('case'); + $this->symbol('default'); + $this->symbol('catch'); + $this->symbol('finally'); + + $symbol = $this->symbol(':'); + $symbol->lbp = 'lbp_colon'; + $symbol->led = 'led_colon'; + + $this->symbol('(end)'); + $this->symbol('(name)'); + + $this->assignment('=')->led = 'led_equals'; + $this->assignment('+='); + $this->assignment('-='); + $this->assignment('*='); + $this->assignment('/='); + $this->assignment('%='); + $this->assignment('<<='); + $this->assignment('>>='); + $this->assignment('>>>='); + $this->assignment('&='); + $this->assignment('^='); + $this->assignment('|='); + + $this->infix('?:', 20); + $this->infixr('||', 21); + $this->infixr('&&', 22); + $this->infix('|', 23); + $this->infix('^', 24); + $this->infix('&', 25); + + $this->infix('==', 30); + $this->infix('!=', 30); + $this->infix('===', 30); + $this->infix('!==', 30); + + $this->infix('<', 40); + $this->infix('<=', 40); + $this->infix('>', 40); + $this->infix('>=', 40); + $this->infix('in', 40); + $this->infix('instanceof', 40); + + $this->infix('<<', 45); + $this->infix('>>', 45); + $this->infix('>>>', 45); + + $this->infix('+', 50); + $this->infix('-', 50); + + $this->infix('*', 60); + $this->infix('/', 60); + $this->infix('%', 60); + + // prefix is 70 + $this->prefix('!'); + $this->prefix('~'); + $this->prefix('+'); + $this->prefix('-'); + $this->prefix('typeof'); + $this->prefix('void'); + $this->prefix('delete'); + $this->prefix('throw'); + + // crement is 75 + $symbol = $this->symbol('++'); + $symbol->lbp = 'lbp_crement'; + $symbol->led = 'led_crement'; + $symbol->nud = 'nud_crement'; + $symbol = $this->symbol('--'); + $symbol->lbp = 'lbp_crement'; + $symbol->led = 'led_crement'; + $symbol->nud = 'nud_crement'; + + $this->infix('(', 80, 'led_parenthesis')->nud = 'nud_parenthesis'; + + $this->infix('.', 85, 'led_period'); + $this->infix('[', 85, 'led_bracket'); + $this->prefix('new')->lbp = 85; + + // Non-defined stuff: + + $this->infix('?', 20, 'led_questionmark'); + + $this->constant('true', TRUE); + $this->constant('false', FALSE); + $this->constant('null', 'null'); + $this->constant('undefined', NULL); + $this->constant('arguments', 'arguments'); + + $this->symbol('(literal)')->nud = 'nud_itself'; + + $this->stmt('{', 'std_curly'); + $this->stmt('var', 'std_var'); + $this->stmt('do', 'std_do'); + $this->stmt('while', 'std_while'); + $this->stmt('for', 'std_for'); + $this->stmt('if', 'std_if'); + $this->stmt('switch', 'std_switch'); + $this->stmt('try', 'std_try'); + $this->stmt('break', 'std_break'); + $this->stmt('return', 'std_return'); + $this->stmt('function', 'nud_function'); + $this->prefix('function', 'nud_function'); + + $symbol = $this->symbol('this'); + $symbol->nud = 'nud_this'; + + $this->prefix('[', 'nud_bracket'); + $this->prefix('{', 'nud_curly'); + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptRegExp.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptRegExp.php new file mode 100644 index 0000000..163417d --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptRegExp.php @@ -0,0 +1,9 @@ +statements = $statements; + } + + public function __destruct() { + $this->mem_flush('statements', 'function_calls', 'function_assignments', 'prefixes'); + } + + public function function_calls($global_scope = FALSE, $name = NULL) { + $calls = $this->function_calls = isset($this->function_calls) ? $this->function_calls : $this->resolve_something('resolve_function_calls'); + if ($name) { + $names = array_slice(func_get_args(), 1); + $filtered = array(); + foreach ($names as $name) { + foreach ($calls as $call) { + if ($call->name() == $name) { + $filtered[] = $call; + } + } + } + $calls = $filtered; + } + if ($global_scope) { + $filtered = array(); + foreach ($calls as $call) { + if ($call->is_global()) { + $filtered[] = $call; + } + } + $calls = $filtered; + } + return $calls; + } + + private function resolve_function_calls($statement, $parent) { + if (is_object($statement) && $statement->id == '(' && $statement->arity == 'binary' && (is_object($statement->first) && $statement->first->is_lookup())) { + $call = new JavaScriptFunctionCall($statement->first, $statement->second); + if ($parent->id == '=') { + $name = $parent->first; + while ($name) { + if ($name && $name->arity == 'name') { + if ($name->global_scope) { + $call->setAssignment($parent->first); + } + break; + } + $name = $name->first; + } + } + return $call; + } + } + + public function assignments($global_scope=FALSE, $into_functions=TRUE) { + $assignments = $this->function_assignments = isset($this->function_assignments) ? $this->function_assignments : $this->resolve_something('resolve_assignments', array(), !$into_functions); + if ($global_scope) { + $filtered = array(); + foreach ($assignments as $item) { + if ($item->is_global()) { + $filtered[] = $item; + } + } + $assignments = $filtered; + } + return $assignments; + } + + private function resolve_assignments($statement, $parent) { + if ($statement->id == '=' && $statement->second) { + return new JavaScriptAssignment($statement->first, $statement->second); + } + } + + public function prefix($prefix_name) { + return isset($this->prefixes[$prefix_name]) ? $this->prefixes[$prefix_name] : $this->resolve_something('resolve_prefix', array($prefix_name)); + } + + private function resolve_prefix($statement, $parent, $prefix_name) { + if ($statement->arity == 'statement' && $statement->value == $prefix_name) { + return $statement; + } + } + + private function resolve_something($found_callback, $passed_args = array(), $seen_function=FALSE, $somethings = array(), $statements = NULL, $parent = NULL) { + if (!$statements) { + $statements = $this->statements; + } + + if (!is_array($statements)) { + $statements = array($statements); + } + + foreach ($statements as $statement) { + if (is_array($statement)) { + foreach ($statement as $st) { + if (!$seen_function || $st->id != 'function') { + $somethings = $this->resolve_something($found_callback, $passed_args, $seen_function, $somethings, $st, NULL); + } + } + continue; + } + + if ($statement->id == 'function') { + if ($seen_function) { + continue; + } + $seen_function = TRUE; + } + + if ($something = call_user_func_array(array($this, $found_callback), array_merge(array($statement, $parent), $passed_args))) { + $somethings[] = $something; + } + + if ($statement->first) { + $somethings = $this->resolve_something($found_callback, $passed_args, $seen_function, $somethings, $statement->first, $statement); + } + if ($statement->second) { + $somethings = $this->resolve_something($found_callback, $passed_args, $seen_function, $somethings, $statement->second, $statement); + } + if ($statement->third) { + $somethings = $this->resolve_something($found_callback, $passed_args, $seen_function, $somethings, $statement->third, $statement); + } + if (!empty($statement->block)) { + $somethings = $this->resolve_something($found_callback, $passed_args, $seen_function, $somethings, $statement->block, $statement); + } + } + + return $somethings; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptString.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptString.php new file mode 100644 index 0000000..729b333 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptString.php @@ -0,0 +1,9 @@ +id){ + case '{': + return 'Object'; + case '[': + return 'Array'; + case 'function': + return 'Function'; + } + } + + public function convert($recursing = FALSE) { + if ($this->arity == 'literal') { + switch($this->type){ + case 'string': + return new JavaScriptString($this->value); + case 'number': + return new JavaScriptNumber($this->value); + case 'regex': + return new JavaScriptRegExp($this->value); + default: + return new JavaScriptLiteral($this->value); + } + } + else { + switch($this->id){ + case '?': + return new JavaScriptTernary($this->first, $this->second, $this->third); + case '(': + return new JavaScriptFunctionCall($this->first, $this->second); + case 'function': + return new JavaScriptFunction($this); + case '{': + return new JavaScriptObject($this); + case '[': + case '.': + if ($this->arity == 'unary') { + return new JavaScriptArray($this->first); + }else{ + return new JavaScriptVariable($this); + } + case '=': + return new JavaScriptAssignment($this->first, $this->second); + case '||': + $output = array(); + + $first = $this->first; + if (is_array($first) && count($first == 1)) { + $first = $first[0]; + } + $first = $first->convert(TRUE); + + if (is_array($first)) { + $output = array_merge($output, $first); + } + else { + $output[] = $first; + } + + $seconds = $this->second; + if (!is_array($seconds)) { + $seconds = array($seconds); + } + foreach ($seconds as $second) { + $second = $second->convert(TRUE); + if (is_array($second)) { + $output = array_merge($output, $second); + } + else { + $output[] = $second; + } + } + + return $recursing ? $output : new JavaScriptOr($output); + } + + switch ($this->arity) { + case 'name': + if ($this->value == 'new') { + // TODO: Make new matter + if ($this->first->id == 'function') { + return new JavaScriptFunction($this->first, true); + } + elseif ($this->first->id == '(') { + return new JavaScriptFunctionCall($this->first, $this->second, true); + } + elseif ($this->first->id == '.' || $this->first->id == '[') { + return new JavaScriptVariable($this->first, true); + } + else { + throw new Exception("Line {$this->first->line_number}, char {$this->first->char_pos}: New statement preceeds unknown"); + } + } + return new JavaScriptVariable($this); + case 'literal': + case 'operator': + case 'this': + case 'unary': + return new JavaScriptLiteral($this); + } + } + throw new Exception("No class for {$this->id}:{$this->arity}"); + } + + // led/nud/lbp functions + + public function led_bracket($parser, $left) { + $this->first = $left; + $this->second = $parser->expression(); + $this->arity = 'binary'; + $parser->advance(']'); + return $this; + } + + public function nud_bracket($parser) { + $items = array(); + if (!$parser->peek(']')) { + while (1) { + $items[] = $parser->expression(); + if (!$parser->peek(',')) { + break; + } + $parser->advance(','); + if ($parser->peek(']')) { + // Be lenient about trailing commas + break; + } + } + } + $parser->advance(']'); + $this->first = $items; + $this->arity = 'unary'; + return $this; + } + + public function std_break($parser) { + $parser->skip_terminators(); + $this->arity = 'statement'; + return $this; + } + + public function lbp_colon($parser, $left) { + if ($left->arity == 'name' && $parser->peek2(array('for', 'while', 'do'))) { + return 100; + } + return 0; + } + + public function led_colon($parser, $left) { + $this->first = $left; + if ($parser->token->arity != 'name') { + throw new Exception("Line {$left->line_number}, char {$left->char_pos}: Expected a property name"); + } + $parser->token->arity = 'literal'; + $this->second = $parser->expression(); + $this->arity = 'binary'; + $parser->skip_terminators(); + return $this; + } + + public function lbp_crement($parser, $left) { + if ($left->id == '.' || $left->id == '[' || $left->arity == 'name') { + return 100; + } + return 0; + } + + public function led_crement($parser, $left) { + // Show that the in/decrementer is on the right + $this->first = $left; + $this->arity = 'unary'; + return $this; + } + + public function nud_crement($parser) { + // Show that the in/decrement is before the expression + $this->first = NULL; + $this->second = $parser->expression(75); + return $this; + } + + public function nud_curly($parser) { + $values = array(); + + $this->comments = array(); + if (!$parser->peek('}')) { + while (1) { + $token = $parser->token; + if ($token->arity != 'name' && $token->arity != 'literal') { + throw new Exception("Line {$token->line_number}, char {$token->char_pos}: Bad key: {$token->id}"); + } + $comments = $parser->comments_before($token); + if (!empty($comments)) { + if (!empty($this->comments)) { + $this->comments[] = "\n"; + } + $this->comments = array_merge($this->comments, $comments); + } + $parser->advance(); + $parser->advance(':'); + $expression = $parser->expression(); + if (is_array($expression)) { + $expression = $expression[0]; + } + $expression->key = $token->value; + $values[] = $expression; + if (!$parser->peek(',')) { + break; + } + $token = $parser->token; + $parser->advance(','); + if ($parser->peek('}')) { + // Be lenient about trailing commas + break; + } + } + } + + if ($parser->peek('}')) { + $this->comments = array_merge($this->comments, $parser->comments_before($parser->token)); + } + $parser->advance('}'); + $this->first = $values; + $this->arity = 'unary'; + return $this; + } + + public function std_curly($parser) { + $statements = $parser->statements(array('}')); + $parser->advance('}'); + return $statements; + } + + public function std_do($parser) { + if ($parser->peek('{')) { + $this->first = $this->block($parser); + } + else { + $this->first = $parser->expression($parser); + $parser->skip_terminators(); + } + $parser->advance('while'); + $parser->advance('('); + $this->second = $parser->expression(); + $parser->advance(')'); + $parser->skip_terminators(); + return $this; + } + + public function led_equals($parser, $left) { + $this->first = $left; + $this->second = $parser->expression(9); + $parser->scope->assignment($this->first, $this->second); + return $this; + } + + public function std_for($parser) { + $parser->advance('('); + + if($parser->peek('var')) { + $token = $parser->token; + $parser->advance('var'); + $this->first = $token->std($parser); + if ($parser->peek('in')) { + $parser->advance('in'); + $this->second = $parser->expression(); + } + } + else { + // Don't forget that expressionless for(;;) loops are valid + $this->first = $parser->peek(';') ? NULL : $parser->statements(array(')', ';')); + } + + if (!$parser->peek(')')) { + // var can possibly swallow the ; + if ($parser->peek(';')) { + $parser->advance(';'); + } + $this->second = $parser->peek(';') ? NULL : $parser->statements(array(';')); + $parser->advance(';'); + $this->thid = $parser->peek(')') ? NULL : $parser->statements(array(')')); + } + $parser->advance(')'); + if ($parser->peek('{')) { + $this->block = $this->block($parser); + } + elseif (!$parser->peek(';')) { + $this->block = $parser->expression(); + } + + $parser->skip_terminators(); + + $this->arity = 'statement'; + return $this; + } + + public function nud_function($parser) { + $arguments = array(); + $parser->new_scope(); + $this->scope = $parser->scope; + if ($parser->token->arity == 'name') { + $parser->scope->define($parser->token); + $this->name = $parser->token->value; + $parser->advance(); + } + $parser->advance('('); + if (!$parser->peek(')')) { + while (1) { + if ($parser->token->arity != 'name') { + throw new Exception('Expected a parameter name'); + } + $parser->scope->define($parser->token); + $argument = $parser->token; + $parser->advance(); + $argument->comments = array_merge($parser->comments_before($argument), $parser->comments_after($argument)); + $arguments[] = $argument; + if (!$parser->peek(',')) { + break; + } + $parser->advance(','); + } + } + + $this->first = $arguments; + $parser->advance(')'); + $parser->peek('{'); + $this->comments = $parser->comments_after($parser->token); + $parser->advance('{'); + $this->second = $parser->statements(array('}')); + $parser->advance('}'); + $this->arity = 'function'; + $parser->scope_pop(); + + return $this; + } + + public function std_if($parser) { + $parser->advance('('); + $this->first = $parser->expression(); + $parser->advance(')'); + if ($parser->peek('{')) { + $this->second = $this->block($parser); + } + elseif (!$parser->peek(';')) { + $this->second = $parser->expression(); + } + + $parser->skip_terminators(); + + if ($parser->peek('else')) { + $parser->advance('else'); + if ($parser->peek('if')) { + $this->third = $parser->statement; + } + elseif ($parser->peek('{')) { + $this->third = $this->block($parser); + } + elseif (!$parser->peek(';')) { + $this->third = $parser->expression(); + } + + $parser->skip_terminators(); + } + else { + $this->third = NULL; + } + $this->arity = 'statement'; + return $this; + } + + public function executed_function($function, $parser) { + // The function gets executed + if ($parser->peek('(')) { + // led_parenthesis might have already swallowed it + $parser->advance('('); + } + + $arguments = array(); + if (!$parser->peek(')')) { + while (1) { + $arguments[] = $parser->expression(); + if (!$parser->peek(',')) { + break; + } + $parser->advance(','); + } + } + $parser->advance(')'); + $parser->skip_terminators(); + + // Make assignments within the function scope (in $function) + // between the arguments in the expression and the passed arguments + foreach ($function->first as $i => $parameter) { + if ($arguments[$i]) { + // The passed argument is assigned immediately to the matching parameter + $function->scope->assignment($parameter, $arguments[$i]); + } + } + + $this->first = $function; + $this->second = $arguments; + $this->arity = 'execution'; + return $this; + } + + public function led_parenthesis($parser, $left) { + if ($left->id == 'function') { + return $this->executed_function($left, $parser); + } + + if ($left->id == '{') { + $expression = $parser->expression(); + $parser->advance(')'); + return $expression; + } + + if (!$parser->peek(')')) { + while (1) { + $arguments[] = $parser->expression(); + if (!$parser->peek(',')) { + break; + } + $parser->advance(','); + } + } + + if ($left->arity == 'operator' && $left->id != '.' && $left->id != '[' && count($arguments) == 1) { + $arguments = $arguments[0]; + } + + // e.g. foo(bar) has a foo first, [bar] second + $this->arity = 'binary'; + $this->first = $left; + $this->second = $arguments; + + $parser->advance(')'); + return $this; + } + + public function nud_parenthesis($parser) { + // '(' can mean function call, or executed function + $is_function = $parser->peek('function'); + $expressions = array(); + while (1) { + $expressions[] = $parser->expression(); + if ($parser->peek(')')) { + break; + } + $parser->advance(','); + } + $parser->advance(')'); + + if ($is_function && $parser->peek('(')) { + return $this->executed_function($expressions[0], $parser); + } + + return $expressions; + } + + public function led_period($parser, $left) { + $this->first = $left; + if ($parser->token->arity != 'name') { + throw new Exception('Expected a property name'); + } + $parser->token->arity = 'literal'; + $this->second = $parser->token; + $this->arity ='binary'; + $parser->advance(); + return $this; + } + + public function led_questionmark($parser, $left) { + $this->first = $left; + $this->second = $parser->expression(); + $parser->advance(':'); + $this->third = $parser->expression(); + $this->arity = 'ternary'; + return $this; + } + + public function nud_this($parser) { + $parser->scope->reserve($this); + $this->arity = 'this'; + return $this; + } + + public function std_try($parser) { + $this->first = $this->block($parser); + + if ($parser->peek('catch')) { + $parser->advance('catch'); + $catch = $parser->new_symbol('catch'); + $parser->advance('('); + $catch->first = $parser->expression(); + $parser->advance(')'); + $catch->second = $this->block($parser); + + $this->second = $catch; + } + + if ($parser->peek('finally')) { + $parser->advance('finally'); + $this->third = $this->block($parser); + } + + $parser->skip_terminators(); + + $this->arity = 'statement'; + + return $this; + } + + public function std_return($parser) { + if (!$parser->peek("\n") && !$parser->peek(';') && !$parser->peek('}')) { + $this->first = $parser->expression(); + } + $parser->skip_terminators(); + $this->arity = 'statement'; + return $this; + } + + public function std_switch($parser) { + // switch statements can have multiple + // levels of passthrough and expressions + // need to be aggregated for each current + // case statement until a break is reached + $branches = array(); + + $parser->advance('('); + $this->first = $parser->expression(); + $parser->advance(')'); + $parser->advance('{'); + $this->second = array(); + + $cases = array(); + while (1) { + if ($parser->peek('}')) { + break; + } + + if ($parser->peek('default')) { + $cases[] = $parser->token; + $switch = 'default'; + $parser->advance('default'); + } + else { + $cases[] = $parser->token; + $parser->advance('case'); + $switch = 'case'; + $cases[] = $parser->expression(); + } + + $parser->advance(':'); + $statements = $parser->statements(array('default', 'case', '}')); + + if ($switch == 'default') { + $default = $parser->new_symbol('default'); + $default->first = $statements; + $cases[] = $default; + } + elseif ($switch == 'case' && !empty($statements)) { + $case = $parser->new_symbol('case'); + $case->first = $statements; + $cases[] = $case; + } + } + + $this->second = $cases; + $parser->advance('}'); + $this->arity = 'statement'; + + return $this; + } + + public function std_var($parser) { + $assignments = array(); + while (1) { + $parser->peek(); + $token = $parser->token; + if ($token->arity != 'name') { + throw new Exception("Line {$token->line_number}, char {$token->char_pos}: Expected a new variable name"); + } + $parser->scope->define($token); + $parser->advance(); + if ($parser->peek('=')) { + $t = $parser->token; + $parser->advance('='); + $t->first = $token; + $t->second = $parser->expression(); + $parser->scope->assignment($t->first, $t->second); + $t->arity = 'binary'; + $assignments[] = $t; + } + else { + $t = $parser->new_symbol('='); + $t->first = $token; + $t->second = NULL; + $assignments[] = $t; + } + if (!$parser->peek(',')) { + break; + } + $parser->advance(','); + } + $parser->skip_terminators(); + return $assignments; + } + + public function std_while($parser) { + $parser->advance('('); + $this->first = $parser->statements(array(')')); + $parser->advance(')'); + if ($parser->peek('{')) { + $this->second = $this->block($parser); + } + else { + $this->second = $parser->expression(); + } + $parser->skip_terminators(); + $this->arity = 'statement'; + return $this; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptTernary.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptTernary.php new file mode 100644 index 0000000..74d5dbc --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptTernary.php @@ -0,0 +1,42 @@ +expression = $expression; + $this->if_true = $if_true; + $this->if_false = $if_false; + } + + public function __destruct() { + $this->mem_flush('expression', 'if_true', 'if_false'); + } + + public function type() { + $trues = $this->if_true; + if (!is_array($trues)) { + $trues = array($trues); + } + foreach ($trues as $true) { + if ($type = $true->type()) { + return $type; + } + } + + $falses = $this->if_false; + if (!is_array($falses)) { + $falses = array($falses); + } + foreach ($falses as $false) { + if ($type = $false->type()) { + return $type; + } + } + return ''; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptVariable.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptVariable.php new file mode 100644 index 0000000..5143ea8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/JavaScriptVariable.php @@ -0,0 +1,63 @@ +variable = $variable; + } + + public function __destruct() { + $this->mem_flush('variable', 'resolved_variables', 'global_scope'); + } + + private function resolve() { + if (!$this->variable->is_lookup()) { + $this->global_scope = FALSE; + $this->resolved_variables = array(); + } + else { + foreach ($this->variable->resolve(TRUE) as $resolved) { + list($global_scope, $variable) = $resolved; + if ($global_scope) { + $this->global_scope = TRUE; + } + $this->resolved_variables[] = $variable; + } + } + } + + public function value() { + if (!isset($this->resolved_variables)) { + $this->resolve(); + } + return count($this->resolved_variables) ? $this->resolved_variables[0] : NULL; + } + + public function values() { + if (!isset($this->resolved_variables)) { + $this->resolve(); + } + return is_array($this->resolved_variables) ? $this->resolved_variables : array(); + } + + public function type() { + // TODO: Things that receive this value should reassign to aliases as appropriate + return 'variable'; + } + + public function is_global () { + if (!isset($this->global_scope)) { + $this->resolve(); + } + return !!$this->global_scope; + } + + public function __toString() { + return '(' . $this->type() . ')'; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Parser.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Parser.php new file mode 100644 index 0000000..9ab4f50 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Parser.php @@ -0,0 +1,407 @@ +symbol_table = array(); + $this->build(); + self::$symbol_tables[$id] = $this->symbol_table; + } + $this->symbol_table = self::$symbol_tables[$id]; + $this->scopes[] = $this->scope = new Scope(); + $this->tokens = $tokens; + $this->token_length = count($tokens); + } + + public function __destruct() { + $this->mem_flush('scopes', 'tokens', 'token', 'scope'); + } + + public function skip_terminators() { + while ($this->peek(';')) { + $this->advance(';'); + } + } + + /** + * Quick error check as we advance through the tokens + * + * @param string $id Check that the current token is what's expected + */ + public function advance($id = NULL) { + if ($id && !$this->peek($id)) { + throw new Exception("Line {$this->token->line_number}, character {$this->token->char_pos}: Expected '$id' but got {$this->token->id}:'{$this->token->value}'"); + } + + $this->token = $this->next(); + + while ($this->token->value == "\n") { + // We can ignore line-breaks that are mid-expression + $this->token = $this->next(); + } + } + + /** + * Look at the next non-whitespace token for a value. Also needed + * for std functions to move up to the next non-whitespace character + */ + public function peek($id = NULL) { + if ($id && !is_array($id)) { + $id = array($id); + } + if ($id && in_array("\n", $id) && $this->token->value == "\n") { + return true; + } + while ($this->token->value == "\n") { + // We can ignore line-breaks that are mid-expression + $this->token = $this->next(); + } + return $id ? in_array($this->token->id, $id) : NULL; + } + + public function peek2($id) { + if (!is_array($id)) { + $id = array($id); + } + + for ($i = $this->token_pos; $i < $this->token_length; $i++) { + $token = $this->tokens[$i]; + if (in_array("\n", $id) && $token['value'] == "\n") { + return true; + } + if ($token['type'] != 'string' && $token['value'] != "\n") { + return in_array($token['value'], $id); + } + } + } + + /** + * Grab all statements + */ + public function statements($terminators = array()) { + if (!$this->token_pos) { + $this->advance(); + } + + $terminators[] = '(end)'; + + $statements = array(); + while (1) { + // Statements occur within {} blocks as well + if ($this->peek($terminators)) { + break; + } + if ($statement = $this->statement($terminators)) { + $statements[] = $statement; + } + } + return $statements; + } + + /** + * Grab a single statement + */ + public function statement($exclude = array()) { + $skip = array_diff(array(';', "\n", ','), $exclude); + while (in_array($this->token->id, $skip)) { + $this->advance($this->token->id); + } + + $token = $this->token; + if ($token->std) { + $this->token = $this->next(); // Line breaks are *really* important to some statements + $this->scope->reserve($token); + return $token->std($this); + } + $expression = $this->expression(); + + while (in_array($this->token->id, $skip)) { + $this->advance($this->token->id); + } + + return $expression; + } + + private function comments_from_pos($i) { + $last = NULL; + $comments = array(); + for (; $i < $this->token_length; $i++) { + $token = $this->tokens[$i]; + if ($token['type'] == 'comment') { + $comments[] = $token['value']; + } + elseif ($token['value'] != "\n") { + break; + } + elseif ($last == "\n") { + $comments[] = ''; + } + $last = $token['value']; + } + return $comments; + } + + public function comments_before($symbol) { + if (!isset($symbol->token_pos)) { + throw new Exception('Need valid token to look up comments'); + } + + $comments = FALSE; + for ($i = $symbol->token_pos - 1; $i > 0; $i--) { + $token = $this->tokens[$i]; + if ($token['type'] == 'comment') { + $comments = TRUE; + } + elseif ($token['value'] != "\n") { + if ($comments) { + return $this->comments_from_pos($i + 1); + } + break; + } + } + + return array(); + } + + public function comments_after($symbol) { + if (!isset($symbol->token_pos)) { + throw new Exception('Need valid token to look up comments'); + } + + return $this->comments_from_pos($symbol->token_pos + 1); + } + + /** + * Simply advance through the tokens + */ + public function next() { + if ($this->token_pos < $this->token_length) { + $token = $this->tokens[$this->token_pos++]; + + $value = $token['value']; + $type = $arity = $token['type']; + + if ($arity == 'string' || $arity == 'number' || $arity == 'regex') { + $arity = 'literal'; + $s = $this->new_symbol('(literal)'); + } + elseif ($s = $this->new_symbol($value)) { + // short circuit + } + elseif ($arity == 'name') { + $s = $this->scope->find($value, $this->symbol_table); + } + elseif ($arity == 'comment') { + return $this->next(); + } + else { + throw new Exception("Line {$token['line_number']}, char {$token['char_pos']}: Unknown operator ($arity:'$value')"); + } + + $s->token_pos = $this->token_pos - 1; + $s->line = $token['line']; + $s->line_number = $token['line_number']; + $s->char_pos = $token['char_pos']; + $s->value = $value; + $s->arity = $arity; + $s->type = $type; + + return $s; + } + + return $this->new_symbol('(end)'); + } + + /** + * Creates a new scope, setting the old one as its parent + */ + public function new_scope() { + $this->scopes[] = $scope = new Scope(); + $scope->setParent($this->scope); + return ($this->scope = $scope); + } + + /** + * Reassigns the parents scope + */ + public function scope_pop() { + return ($this->scope = $this->scope->parent()); + } + + /** + * Moves through tokens with higher binding powers + * than the passed binding power + * + * @param int $bp + */ + public function expression($bp = 0) { + $token = $this->token; + $this->advance(); + while ($this->token->value == "\n") { + // We can ignore line-breaks that are mid-expression + $token = $this->token; + $this->advance(); + } + $left = $token->nud($this); + while ($bp < $this->token->lbp($this, $left)) { + $token = $this->token; + $this->advance(); + $left = $token->led($this, $left); + } + + return $left; + } + + public function new_symbol($id, $raw = FALSE) { + $symbol = $this->symbol_table[$id]; + if ($symbol) { + if ($raw) { + return $symbol; + } + $symbol = clone $symbol; + $symbol->scope = $this->scope; + return $symbol; + } + } + + /** + * Takes a symbol ID and a left binding power + * and returns a Symbol instance + * + * @param string $id + * @param int $b + */ + protected function symbol($id, $bp = 0) { + if (($s = $this->symbol_table[$id]) && is_numeric($s->lbp)) { + $s->lbp = max($bp, $s->lbp); + } + else { + $s = new $this->symbol_class(); + $s->id = $id; + $s->lbp = $bp; + $this->symbol_table[$id] = $s; + } + return $s; + } + + /** + * Creates a symbol with a left denotation function + * that will save the current symbol in its left property + * and the rest of the expression on its right + * + * @param string $id + * @param int $bp + * @param string $ld String to use for the left_denotation function + */ + protected function infix($id, $bp, $led = NULL) { + $symbol = $this->symbol($id, $bp); + if ($led) { + $symbol->led = $led; + } + else { + $symbol->led = 'led_infix'; + $symbol->bp = $bp; + } + return $symbol; + } + + /** + * Creates a symbol with a left denotation function + * that will save symbols "below" it + * + * @param string $id + * @param int $bp + * @param string $led String to use for the left_denotation function + */ + protected function infixr($id, $bp, $led = NULL) { + $symbol = $this->symbol($id, $bp); + if ($led) { + $symbol->led = $led; + } + else { + $symbol->led = 'led_infixr'; + $symbol->bp = $bp; + } + return $symbol; + } + + /** + * Create a symbol with a null denotation function + * that will set its left property to what its + * modifying + * + * @param string $id + * @param string $nud String to use for the null_denotation function + */ + protected function prefix($id, $nud = NULL) { + $symbol = $this->symbol($id); + $symbol->nud = $nud ? $nud : 'nud_prefix'; + return $symbol; + } + + protected function itself($id) { + return $this->prefix($id, 'nud_itself'); + } + + /** + * Creates a symbol with a null denotation function that + * makes sure it's being assigned to a variable + * and sets its left property to what's being assigned + * to it. Also marks its assignment value to true + * + * @param string $id + */ + protected function assignment($id) { + return $this->infixr($id, 10, 'led_assignment'); + } + + /** + * Creates a symbol with a null denotation function + * that turns a name token into a literal token + * by marking it reserved in the current scope + * and setting its value to a language-level literal + * + * @param string $id + * @param anything $null_denotation String to use for the null_denotation function + */ + protected function constant($name, $value) { + $symbol = $this->symbol($name); + $symbol->nud = 'nud_constant'; + $symbol->value = $value; + $symbol->arity = 'constant'; + return $symbol; + } + + /** + * Creates a symbol with a statement denotation function + * passed to it. + * + * @param string $id + * @param string $std String to use for the statement_denotation function + */ + protected function stmt($id, $std) { + $symbol = $this->symbol($id); + $symbol->std = $std; + $symbol->nud = $std; // This makes statement nesting (with no block) possible + return $symbol; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Scope.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Scope.php new file mode 100644 index 0000000..5c66b00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Scope.php @@ -0,0 +1,201 @@ +mem_flush('_parent', 'definitions', 'assignments'); + } + + /** + * Turns a name symbol into a variable symbol + * + * @param Symbol $symbol A name object occurring in the current scope + */ + public function define(&$symbol) { + if ($token = $this->definitions[$symbol->value] && $token->reserved) { + throw new Exception("Already defined: {$symbol->value}"); + } + + $this->definitions[$symbol->value] = $symbol; + $symbol->reserved = FALSE; + $symbol->nud = 'nud_itself'; + $symbol->led = NULL; + $symbol->std = NULL; + $symbol->lbp = 0; + $symbol->scope = $this; + $symbol->global_scope = empty($this->_parent); + + return $symbol; + } + + /** + * Mark an assignment made in the current scope between two symbols + * + * @param Symbol $to_expression The expression $expression is assigned to + * @param Symbol $expression The expression being assigned + */ + public function assignment($to_expression, $expression) { + // Only let through assignments to actual lookups (foo or foo.bar.baz) + // where the assignment is also a lookup, or an object (which may contain lookups) + if (is_object($to_expression) && $to_expression->is_lookup()) { + if ($this !== $to_expression->scope) { + // The assignment might be referencing a higher scope (e.g. without var) + return $to_expression->scope->assignment($to_expression, $expression); + } + + $this->assignments[$to_expression->value] = array(); + + $expressions = array($expression); + if ($possibilities = $this->possibilities($expression)) { + $expressions = $possibilities; + } + foreach ($expressions as $expression) { + if (is_object($expression) && ($expression->is_lookup() || $expression->id == '{')) { + $this->assignments[$to_expression->value][] = $expression; + } + } + } + } + + protected function possibilities($symbol, $possibilities=array()) { + $symbols = $symbol; + if (!is_array($symbols)) { + $symbols = array($symbols); + } + foreach ($symbols as $symbol) { + if (is_array($symbol)) { + $possibilities = $this->possibilities($symbol, $possibilities); + } + elseif ($symbol->is_option()) { + $firsts = $symbol->first; + if (!is_array($firsts)) { + $firsts = array($firsts); + } + foreach ($firsts as $first) { + if (is_array($first)) { + $possibilities = $this->possibilities($first, $possibilities); + } + elseif ($first->possible_variable()) { + $possibilities[] = $first; + } + } + + $seconds = $symbol->second; + if (!is_array($seconds)) { + $seconds = array($seconds); + } + foreach ($seconds as $second) { + if (is_array($second) || $second->is_option()) { + $possibilities = $this->possibilities($second, $possibilities); + } + elseif ($second->possible_variable()) { + $possibilities[] = $second; + } + } + } + } + return $possibilities; + } + + public function assigned($variable, $as_array=FALSE) { + if (isset($this->assignments[$variable])) { + return $as_array ? $this->assignments[$variable] : $this->assignments[$variable][0]; + } + if (isset($this->parent)) { + return $this->_parent->assigned($variable, $as_array); + } + } + + /** + * Sets the current scope's parent + * + * @param Scope $parent + */ + public function setParent($parent) { + if ($parent instanceof Scope) { + return ($this->_parent = $parent); + } + } + + /** + * Returns the current parent + */ + public function parent() { + // This is how pop() will work as well + return $this->_parent; + } + + public function definition($name) { + return $this->definitions[$name]; + } + + /** + * Tries to look up through each scope + * to find a symbol with the same name + * and returns the global symbol or empty + * (name) symbol instead + */ + public function find ($name, $symbol_table) { + if ($symbol_table[$name]) { + return clone $symbol_table[$name]; + } + + $scope = $this; + while (1) { + if ($symbol = $scope->definition($name)) { + return clone $symbol; + } + if (!$scope->parent()) { + if (array_key_exists($name, $symbol_table)) { + return $symbol_table[$name]; + } + $symbol = $symbol_table['(name)']; + $s = clone $symbol; + $s->global_scope = TRUE; + $s->reserved = FALSE; + $s->nud = 'nud_itself'; + $s->led = NULL; + $s->std = NULL; + $s->lbp = 0; + $s->scope = $scope; + return $s; + } + $scope = $scope->parent(); + } + } + + /** + * Marks a variable symbol as being reserved in the current scope + * + * @param Symbol @symbol The variable symbol to mark reserved + */ + public function reserve($symbol) { + if ($symbol->arity != 'name' || $symbol->reserved) { + return; + } + + if ($token = $this->definitions[$symbol->value]) { + if ($token->reserved) { + $symbol->reserved = TRUE; + if (!$this->parent()) { + $symbol->global_scope = TRUE; + } + return; + } + if ($token->arity == 'name') { + throw new Exception("Already defined: {$symbol->value}"); + } + } + + $symbol->reserved = TRUE; + if (!$this->parent()) { + $symbol->global_scope = TRUE; + } + $this->definitions[$symbol->value] = $symbol; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Symbol.php b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Symbol.php new file mode 100644 index 0000000..bfadc3a --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/Symbol.php @@ -0,0 +1,252 @@ +value == '.' || $this->value == '[' || $this->arity == 'name'; + } + + public function is_option() { + return $this->first && ($this->value == '||' || $this->value == '&&'); + } + + public function is_lookup($statement = NULL) { + if (!$statement) { + $statement = $this; + } + + $first = $statement->first; + $second = $statement->second; + + if ($first && $statement->arity == 'binary' && ($statement->id == '.' || $statement->id == '[')) { + return (is_object($first) && $first->is_lookup() && $second->arity == 'literal'); + } + else { + return ($statement->arity == 'name' || $statement->arity == 'literal' || $statement->arity == 'this'); + } + } + + public function resolve($as_array = FALSE, $statement = NULL, $public = FALSE, $firsts = array()) { + if (!$statement) { + $public = TRUE; // Whether the call is non-resursive + $statement = $this; + } + + $first = $statement->first; + $second = $statement->second; + + $results = array(); + + if ($first && $statement->arity == 'binary' && ($statement->id == '.' || $statement->id == '[')) { + // foo.bar.baz or foo["bar"].baz + foreach ($this->resolve(TRUE, $first, FALSE, $firsts) as $resolved) { + list($is_global, $name) = $resolved; + + if (!$second->arity == 'literal') { + throw new Exception(sprintf('Line %d, char %d: Lookup is not by literal: %s', $statement->line_number, $statement->char_pos, $second)); + } + + if (is_object($name) && $name->id == '{') { + $is_global = $first->global_scope; + + // The parent item resolved to an object + // so we need to continue the lookup + foreach ($name->first as $value) { + // -> first has all values with their key + if ($value->key == $second->value) { + if ($value->first() == $statement->first()) { + // Object references itself, within itself + continue; + } + if ($value->arity == 'name') { + // Contains an actual variable name + $results[] = array($value->global_scope, $value->value); + break 2; + } + elseif ($value->arity == 'binary' && ($value->id == '.' || $value->id == '[')) { + // Contains a new variable for us to resolve + $results = array_merge($results, $this->resolve(TRUE, $value, TRUE, $firsts)); + break 2; + } + elseif (!$public && $value->id == '{') { + // Contains an object + $results[] = array(NULL, $value); + break 2; + } + } + } + + $name = $first->value; + } + + if (!is_string($name)) { + throw new Exception(sprintf('Line %d, char %d: Parent variable resolution returned an unknown (%s)', $statement->line_number, $statement->char_pos, $statement)); + } + + if ($is_global && $name == 'this') { + $results[] = array($is_global, $second->value); + } + else { + $results[] = array($is_global, sprintf('%s.%s', $name, $second->value)); + } + } + + return $as_array ? $results : $results[0]; + } + elseif ($statement->arity == 'name' || $statement->arity == 'literal' || $statement->arity == 'this') { + // This is the first item in the variable (e.g. for foo.bar.baz, it would be foo) + // It only matters if it's an object or an assignment + if ($assignments = $statement->scope->assigned($statement->value, TRUE)) { + foreach ($assignments as $assignment) { + if ($assignment->first() != $statement->first() && !in_array($statement->first(), $firsts)) { + if ($assignment->arity == 'name') { + $results[] = array($assignment->global_scope, $assignment->value); + } + elseif ($assignment->arity == 'binary' && ($assignment->id == '.' || $assignment->id == '[')) { + // Deal with stuff like c = p.constructor; + // followed by p = c.superclass + // where they "look each other up" + $results = array_merge($results, $this->resolve(TRUE, $assignment, TRUE, array_merge($firsts, array($statement->first())))); + } + elseif (!$public && $assignment->id == '{') { + $results[] = array(NULL, $assignment); + } + } + } + } + + if (count($results)) { + return $as_array ? $results : $results[0]; + } + + $result = array($statement->global_scope, $statement->value); + return $as_array ? array($result) : $result; + } + + throw new Exception(sprintf('Line %d, char %d: Expected a variable in the form foo.bar with %s', $statement->line_number, $statement->char_pos, $statement->id)); + } + + public function first($statement = NULL) { + if (!$statement) { + $statement = $this; + } + + $first = $statement->first; + $second = $statement->second; + + if ($first && $statement->arity == 'binary' && ($statement->id == '.' || $statement->id == '[')) { + return $this->first($first); + } + elseif ($statement->arity == 'name') { + return $statement->value; + } + } + + /** + * Creates a symbol with a statement denotation function + * that reads until it finds an opening { + */ + public function block($parser) { + $parser->peek('{'); + $token = $parser->token; + $parser->advance('{'); + return $token->std($parser); + } + + public function nud_default($parser) { + throw new Exception("Syntax error on line {$this->line_number}, character {$this->char_pos} ({$this->id}:'{$this->value}')"); + } + + public function nud_prefix($parser) { + $this->first = $parser->expression(70); + return $this; + } + + public function nud_itself($parser) { + return $this; + } + + public function nud_constant($parser) { + $parser->scope->reserve($this); + $this->value = $parser->new_symbol($this->id, TRUE)->value; + $this->arity = 'literal'; + return $this; + } + + public function led_default($parser, $left) { + throw new Exception("Unknown operator ({$this->id}:'{$this->value}')"); + } + + public function led_infix($parser, $left) { + $this->first = $left; + $this->second = $parser->expression($this->bp); + return $this; + } + + public function led_infixr($parser, $left) { + $this->first = $left; + $this->second = $parser->expression($this->bp - 1); + return $this; + } + + public function led_assignment($parser, $left) { + if ($left->id != '.' && $left->id != '[' && $left->arity != 'name') { + throw new Error('Bad lvalue'); + } + $this->first = $left; + $this->second = $parser->expression(9); + $this->assignment = true; + $this->arity = 'binary'; + return $this; + } + + public function __call($method, $args) { + if ($method == 'lbp') { + if (is_numeric($this->lbp)) { + return $this->lbp; + } + return call_user_func_array(array($this, $this->lbp), $args); + } + if ($method == 'nud') { + return call_user_func_array(array($this, $this->nud), $args); + } + if ($method == 'led') { + return call_user_func_array(array($this, $this->led), $args); + } + if ($method == 'std') { + return call_user_func_array(array($this, $this->std), $args); + } + } + + public function __toString() { + // debug_backtrace_clean(); + if ($this->id == '(name)' || $this->id == '(literal)') { + return '(' . substr($this->id, 1, strlen($this->id) - 2) . " {$this->value})"; + } + $first = is_array($this->first) ? ('[' . implode(', ', $this->first) . ']') : $this->first; + $second = is_array($this->second) ? ('[' . implode(', ', $this->second) . ']') : $this->second; + $third = is_array($this->third) ? ('[' . implode(', ', $this->third) . ']') : $this->third; + $out = array_diff(array($this->id, $first, $second, $third), array(NULL)); + return '(' . implode(' ', $out) . ')'; + } +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/dojo2.inc b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/dojo2.inc new file mode 100644 index 0000000..ce50a45 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/lib/parser2/dojo2.inc @@ -0,0 +1,527 @@ +jsdoc_project_name == $provide->title) { + return 'Included automatically'; + } + else { + return 'dojo.require("%s");'; + } +} + +function _dojo_ensure_directory($directory) { + if (!is_dir($directory)) { + die("$directory is not a directory\n"); + } + else { + if(substr($directory, -1) != '/'){ + $directory .= '/'; + } + } + return $directory; +} + +function dojo_get_file_time($namespace, $file) { + if (function_exists($namespace . '_code_location')) { + return filectime(_dojo_ensure_directory(call_user_func($namespace . '_code_location')) . $file); + } + else { + global $_dojo_properties_modules; + return filectime($_dojo_properties_modules[$namespace]['location'] . $file); + } +} + +function _jsdoc_file_list($dir = false, $recurse = false){ + $output = array(); + + if (!$recurse) { + $old_dir = getcwd(); + if (!is_dir($dir)) { + return array(); + } + chdir($dir); + $dir = '.'; + } + $files = scandir($dir); + + foreach ($files as $file) { + if ($file{0} == '.') continue; + if (is_dir($dir . '/' . $file)) { + if ($recurse) { + $file = $dir . '/' . $file; + } + $output = array_merge($output, _jsdoc_file_list($file, true)); + }else{ + if (substr($file, -3) == '.js' && substr($file, -6) != '.xd.js') { + if ($recurse) { + $file = $dir . '/' . $file; + } + $output[] = $file; + } + } + } + + if (!$recurse) { + chdir($old_dir); + } + return $output; +} + +function dojo_get_files($limit=null) { + $namespaces = _dojo_get_namespaces($limit); + $files = array(); + foreach ($namespaces as $namespace) { + // skip util directory, parser chokes on util/less + if($namespace == "util") continue; + if (function_exists($namespace . '_code_location')) { + $location = _dojo_ensure_directory(call_user_func($namespace . '_code_location')); + } + else { + global $_dojo_properties_modules; + $location = $_dojo_properties_modules[$namespace]['location']; + } + if (!$location) die($namespace . '_code_location does not return useful result'); + $list = _jsdoc_file_list($location); + foreach ($list as $i => $item) { + // Skip internationalization/tests/demos files + if (preg_match('%(^|/|\\\\)(nls|tests|demos)(\\\\|/)%', $item)) { + unset($list[$i]); + continue; + } + $list[$i] = array($namespace, $item); + } + $files = array_merge($files, array_values($list)); + } + + return $files; +} + +function _amd_pseudodoc_fix($matches){ + // adds a pseudo-block of aliases to trick parser into believing the things inside of define() callbacks + // are in fact global +// $out = $matches[1]; +// $args = trim($matches[2]); +// if($args != ""){ +// $pseudo = "){\n\n/*=====\n"; +// $newargs = array(); +// foreach(explode(",", $args) as $arg){ +// $arg = trim($arg); +// $newargs[] = "_$arg"; +// $pseudo .= "\tvar _$arg = $arg;\n"; +// } +// $out .= join(",", $newargs); +// $pseudo .= "\n=====*/\n\n"; +// $out .= $pseudo; +// }else{ +// $out .= "){"; +// } +// +// return $out; + + // turn (dojo, dijit) into (this.dojo, this.dijit); + $args = $matches[3]; + $freshargs = preg_replace('/\w+/', "_$0", $args); + $newargs = $args; // preg_replace('/\w+/', "this.$0", $args); + $body = $matches[4]; + + return ";(function" . $freshargs . "{" . $body . "})" . $args . ";"; + +} + +function _amd_unwrap($text, $namespace, $file_name) { + // looking for something like... + // + // define("my/module", ["path/to/module", "another/module"] + // define(["path/to/module", "another/module"] + // define(["path/to/module"] + // define([] + // + // if the mid is missing (which is the usual case), then the mid is given by the namespace + filename + + if (preg_match('/\/\/>>not-amd/', $text) || !preg_match('/define\s*\(\s*([\'"]([^\'"]+)[\'"]\s*,\s*)?\[\s*([^\]]*?)\s*\]/', $text, $matches)) { + // not an AMD module + //print "not an AMD module\n\n\n"; //for debugging + return $text; + } + + $mid = trim($matches[2]); + if ($mid=="" || empty($mid)) { + // prefix the namespace; remove the .js filetype + if (preg_match('/(.+)\.js/', $file_name, $midMatches)) { + $mid = $namespace . "/" . $midMatches[1]; + } else { + //print "not an AMD module\n\n\n"; //for debugging + return $text; + } + } + + $requires = ""; + foreach (explode(",", $matches[3]) as $dep) { + // regex is looking for the trimmed contents of a quoted string + // if a plugin resource is given (e.g., "dojo/text!./path/to/template.html"), then return the plugin (e.g., "dojo/text") + if (preg_match('/[\'"]\s*([^\'"!]+)\!?[^\'"]*\s*[\'"]/', $dep, $match)) { + $dep = $match[1]; + if (substr($dep, 0, 1)==".") { + // path is relative to mid + $dep = explode("/", $dep); + $ref = explode("/", $mid); + array_pop($ref); + foreach($dep as $part){ + if ($part=="..") { + array_pop($ref); + } else if ($part!=".") { + array_push($ref, $part); + } + } + $dep = implode(".", $ref); + } else { + // absolute path + $dep = str_replace("/", ".", $dep); + } + // don't dojo.require dojo or the CommonJs module lexical vars + if ($dep!="dojo" && $dep!="require" && $dep!="exports" && $dep!="module") { + $requires.= "dojo.require(\"" . $dep . "\");\n"; + } + } else { + // print "failed to find dependency name in what looks like an AMD module (" . $namespace . "/" . $file_name . ").\n"; + // print $matches[0]; + } + } + $result = "dojo.provide(\"" . str_replace("/", ".", $mid) . "\");\n" . $requires; // + + // FIXME: temporary fix, inject pseudo-docs for AMD style define([], function(a,b,c)) + // tricks parser into thinking a b and c are aliases to global objects: + // FIXME: regexp is really greedy. also breaks define statements in docs if doesn't match first one + // FIXME: will only break on define([ "eval!function() { return 'fml'; }" ); so don't do that. + $text = preg_replace_callback('/(define\((.*?)function(\s*\(.*?)\{(.*)\}\);)/s', "_amd_pseudodoc_fix", $text, 1); + + // old re: + // '/(define\(.*?function.*\()(.*)\)\s?\{/' + + //print $result . "\n\n"; //for debugging + return $result . $text; +} + +function dojo_get_contents($namespace, $file_name) { + + if (function_exists($namespace . '_code_location')) { + $location = _dojo_ensure_directory(call_user_func($namespace . '_code_location')); + } + else { + global $_dojo_properties_modules; + $location = $_dojo_properties_modules[$namespace]['location']; + } + + $output = array(); + $output['#debug'] = array(); + + $filedata = file_get_contents($location . '/' . $file_name); + $output['#raw_source'] = $filedata; + $filedata_amd = _amd_unwrap($filedata, $namespace, $file_name); + if($filedata_amd != $filedata){ + $output['#unwrapped_source'] = $filedata_amd; + } + $filedata = $filedata_amd; + + $lines = preg_replace('%/\*={3,}|={3,}\*/%', '', $filedata); + + try{ + $parser = new JavaScriptParser(JavaScriptLanguage::tokenize($lines)); + }catch(Exception $e){ + $output['#debug'][] = "Died parsing $file_name"; + $output['#debug'][] = $e; + return $output; + } + +// print '
                                                                      ';
                                                                      +//	$statements = $parser->statements();
                                                                      +//	print $statements[0]->resolve();
                                                                      +//	print '
                                                                      '; +// die(); + + try{ + $package = new JavaScriptStatements($parser->statements()); + }catch(Exception $e){ + $output['#debug'][] = "Died parsing statements"; + $output['#debug'][] = $e; + return $output; + } + + // Handle dojo.provide calls + foreach ($package->function_calls(TRUE, 'dojo.provide') as $call) { + if ($module = $call->arguments()->getString(0)) { + $output['#provides'] = $module; + } + } + + $output['#resource'] = $file_name; + + // Handle dojo.require calls + foreach ($package->function_calls(TRUE, 'dojo.require') as $call) { + if ($module = $call->arguments()->getString(0)) { + $output['#requires'][] = array('common', $module); + } + } + + // Handle mixin/extend calls + foreach ($package->function_calls(TRUE, 'dojo.mixin', 'dojo.extend', 'lang.extend', 'lang.mixin', 'lang._mixin', 'dojo._mixin') as $call) { + $arguments = $call->arguments(); + $assignment = $call->assignment(); + $name = $call->name(); + $root = NULL; + if ($constructor = $arguments->getFunction(0)) { + if ($assignment) { + Dojo::roll_out($constructor, $assignment, FALSE, $output); + } + } + else { + $root = $arguments->getVariable(0, TRUE); + if (endswith($name, 'extend')) { + $output[$root]['type'] = 'Function'; + } + } + + foreach (array_diff(array_unique(array($assignment, $root)), array(NULL)) as $root) { + $mixin = endswith($name, "mixin"); + for ($i = 1; $i < $arguments->length; $i++) { + if ($arguments->getObject($i)) { + $keys = array(); + foreach ($arguments->getObject($i)->values() as $key => $values) { + $keys[] = $key; + $full_name = "$root.$key"; + foreach ($values as $value) { + if ($value instanceof JavaScriptVariable) { + $key = $mixin ? $full_name : "$root.prototype.$key"; + if ($key != $value->value()) { + $output[$key]['alias'] = $value->value(); + } + } + else { + Dojo::roll_out($value, $full_name, FALSE, $output); + $output[$full_name][$mixin ? 'attached' : 'prototype'] = $root; + } + } + } + Dojo::roll_out_comment_block($arguments->getObject($i), $root, $output, $keys); + } + elseif ($root && $full_name = $arguments->getVariable($i)) { + if ($mixin) { + $output[$root]['mixins']['normal'][] = $full_name; + } + else { + $output[$root]['chains']['prototype'][] = $full_name; + } + } + } + } + } + + foreach ($package->function_calls(TRUE, 'dojo.declare', 'declare') as $call) { + $arguments = $call->arguments(); + $name = $arguments->getString(0); + if (!$name) { + $assignment = $call->assignment(); + $output['#debug'][] = "Found declare() without a name? check return value?" + $assignments; + continue; + } else{ + // $output['#debug'][] = "Found declare w/ $name"; + } + $output[$name]['type'] = 'Function'; + if ($superclass = $arguments->getVariable(1)) { + if ($superclass != 'null') { + $output[$name]['chains']['prototype'][] = $superclass; + $output[$name]['chains']['call'][] = $superclass; + } + } + elseif ($superclasses = $arguments->getArray(1)) { + for($i = 0; TRUE; $i++) { + if ($superclass = $superclasses->getVariable($i)) { + $output[$name]['chains']['prototype'][] = $superclass . ($i ? '.prototype' : ''); + $output[$name]['chains']['call'][] = $superclass; + } + else { + break; + } + } + } + if ($mixin = $arguments->getObject(2)) { + $keys = $block_keys = Dojo::$block_keys; + $new_keys = array(); + $constructors = array(); + // Remember that bad code can have multiple matching keys + foreach ($mixin->values() as $key => $values) { + $new_keys[] = $key; + $full_name = "$name.$key"; + foreach ($values as $value) { + if ($value instanceof JavaScriptFunction) { + if (in_array($key, array('constructor', 'preamble', 'postscript'))) { + $output[$full_name]['constructor'] = $key; + $output[$full_name]['prototype'] = $name; + $constructors[$full_name] = $value; + continue; + } + } + elseif ($value->type() == 'variable') { + if ($full_name != $value->value()) { + $output[$full_name]['alias'] = $value->value(); + } + continue; + } + + $output[$full_name]['prototype'] = $name; + $new_keys = array_unique(array_merge($new_keys, Dojo::roll_out($value, $full_name, FALSE, $output, $new_keys))); + } + } + + foreach ($constructors as $full_name => $constructor) { + $new_keys = array_unique(array_merge($new_keys, Dojo::roll_out($constructor, $name, FALSE, $output, $new_keys))); + foreach ($output[$name] as $key => $value) { + if ($key != 'chains') { + $output[$full_name][$key] = $value; + } + } + } + + Dojo::roll_out_comment_block($mixin, $name, $output, $new_keys); + } + } + + // Variable assignments (global) + foreach ($package->assignments(TRUE) as $variable) { + foreach ($variable->names() as $name) { + $parts = explode('.', $name); + $name = implode('.', array_diff($parts, array('prototype'))); + $last = array_pop($parts); + + $is_prototype = ($last == 'prototype'); + + Dojo::roll_out($variable->value(), $name, FALSE, $output, array(), $is_prototype); + + if (count($parts) && !$is_prototype) { + $output[$name]['attached'] = implode('.', $parts); + } + } + } + + // dojo.provide creates new objects if needed + if (!empty($output['#provides'])) { + $parts = explode('.', $output['#provides']); + while (count($parts)) { + if (!array_key_exists(implode('.', $parts), $output)) { + $output[implode('.', $parts)] = array('type' => 'Object'); + } + array_pop($parts); + } + } + + // Set privacy, classlikeness, and clean up the summary a bit + foreach ($output as $object_name => $object) { + if ($object_name{0} == '#') { + continue; + } + $parts = explode('.', $object_name); + $last = array_pop($parts); + if ($last{0} == '_') { + $output[$object_name]['private'] = true; + } + if (preg_match('%\._+[^A-Z]%', implode('.', $parts), $match)) { + $output[$object_name]['private_parent'] = true; + } + if (is_array($object['tags'])) { + foreach ($object['tags'] as $tag) { + if ($tag == 'protected') { + unset($output[$object_name]['private']); + $output[$object_name]['protected'] = true; + } + elseif ($tag == 'private') { + unset($output[$object_name]['protected']); + $output[$object_name]['private'] = true; + } + elseif ($tag == 'deprecated') { + $output[$object_name]['deprecated'] = true; + } + } + $output[$object_name]['tags'] = array_diff($object['tags'], array('private', 'protected', 'deprecated')); + } + + if (isset($object['inferred_type'])) { + if (empty($object['type'])) { + $output[$object_name]['type'] = $object['inferred_type']; + } + unset($output[$object_name]['inferred_type']); + } + + if ($object['type'] == 'Function') { + if (preg_match('%^(_*)[A-Z]%', $last, $match)) { + if (strlen($match[1]) < 2) { + unset($output[$object_name]['private']); + } + $output[$object_name]['classlike'] = true; + } + } + + if ($object['prototype'] && $output[$object['prototype']]) { + $output[$object['prototype']]['classlike'] = true; + } + elseif ($object['instance'] && $output[$object['instance']]) { + $output[$object['instance']]['classlike'] = true; + } + } + + return $output; +} + +function endswith($haystack, $needle){ + $length = strlen($needle); + $start = $length * -1; + return (substr($haystack, $start) === $needle); +} diff --git a/js/dojo-release-1.7.2-src/util/docscripts/makeCix.php b/js/dojo-release-1.7.2-src/util/docscripts/makeCix.php new file mode 100755 index 0000000..4e2632d --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/makeCix.php @@ -0,0 +1,331 @@ + ../resources/dojo.cix +// + +// $Rev: $ +$current_version = "1.6.0"; + +header("Content-type: text/xml"); + +ini_set("memory_limit","512M"); +include_once('includes/dojo.inc'); + +$files = dojo_get_files(); + +// our namespaces: +$out = array("dijit" => array(), "dojox" => array(), "dojo" => array() ); +// put the results of each file into $array[$namespace] +foreach ($files as $set){ + list($namespace,$file) = $set; + $data = dojo_get_contents_cache($namespace, $file); + $out[$namespace] = array_merge($out[$namespace],$data); +} +// and do some weeeird array manipulations: +$out = @expando_dojo($out); + +// start a new document +$doc = new DOMDocument('1.0'); +// setup for codeintel: +$codeintel = $doc->createElement('codeintel'); +$codeintel->setAttribute("description","Dojo Toolkit API - version " . $current_version); +$codeintel->setAttribute("version","2.0"); +$codeintel->setAttribute("encoding","UTF-8"); +// wrap all the api in one "file" tag: +$data = $doc->createElement('file'); +$data->setAttribute("lang","JavaScript"); +$data->setAttribute("path",""); +$f = $codeintel->appendChild($data); +// and all the namespaces under one heading "dojo" +$api = $doc->createElement('scope'); +$api->setAttribute("ilk","blob"); +$api->setAttribute("lang","JavaScript"); +$api->setAttribute("name","dojo"); +$namespace = $f->appendChild($api); + +// iterate through our modified array, and make an XML tree of the data: +foreach ($out as $ns => $data){ + + // each top-level namespace get's it own scope + $nsdata = $doc->createElement('scope'); + $nsdata->setAttribute("ilk","class"); + $nsdata->setAttribute("name",$ns); + + foreach ($data as $obj => $info){ + + $objElm = $doc->createElement('scope'); + if(!empty($info['type'])){ + + $tt = $info['type']; + switch($tt){ + case "Object" : + // inspect this object deeper, but append to namespace: + $nsdata->appendChild(dojo_inspect($data[$obj],$obj,$doc, "variable")); + break; + case "Function" : + if($info['classlike']){ + // inspect deeper, append to namesapce: + $nsdata->setAttribute("ilk","class"); + $nsdata->appendChild(dojo_inspect($data[$obj],$obj,$doc)); + }else{ + // functions usually have param data: + $objElm->setAttribute("ilk",strtolower($tt)); + $objElm->setAttribute("name",$obj); + if(is_array($info['parameters'])){ + // generate the signature + $sig = $obj."("; + foreach($info['parameters'] as $param => $pData){ + $sig .= $param.","; + $paramElm = $doc->createElement('variable'); + if(!empty($pData['type'])){ + $paramElm->setAttribute("citdl",$pData['type']); + } + $paramElm->setAttribute("name",$param); + $paramElm->setAttribute("ilk","argument"); + if($pData['summary']){ + $paramElm->setAttribute("doc", fix_utf(htmlentities($pData['summary']))); + } + $objElm -> appendChild($paramElm); + } + $sig = substr($sig,0,strlen($sig)-1); + $sig .= ")"; + $objElm->setAttribute("signature",$sig); + unset($sig); + } + } + break; + } + unset($tt); + } + // pertinent data: + if(!empty($info['returns'])){ + $objElm->setAttribute("returns",htmlentities($info['returns'])); + } + // helpful data: + if(!empty($info['summary'])){ + $objElm->setAttribute("doc", fix_utf(htmlentities($info['summary']))); + } + + // avoid appending this node if we skipped popoulating it (in the case of nsdata->appendCHild()) + if($objElm->hasAttribute("name")){ + $nsdata->appendChild($objElm); + } + } + + // and dump all the data to this namesapce + $namespace->appendChild($nsdata); + +} + +// append the APi to the document, and print: +$doc->appendChild($codeintel); +print $doc->saveXML(); + + +function dojo_inspect($data,$ns,$doc,$t="scope"){ + // summary: inspect some namespace (as top), with some passed data. + if ($t == "argument") { + $elm = $doc->createElement("variable"); + $elm->setAttribute("ilk", "argument"); + } else { + $elm = $doc->createElement($t); + } + $elm->setAttribute("name",$ns); + + foreach ($data as $obj => $info){ + switch($obj){ + // these are all the ones we don't _really_ care about in this context: + case "prototype" : //$elm->setAttribute("classref",$info['prototype']); break; + case "chains" : + case "mixins" : + case "instance" : + case "optional" : + case "classlike" : + case "examples" : + case "private_parent" : + case "description" : + case "source" : + case "style" : + break; + + // mmm, duplicated from above: + case "parameters" : + $sig = $ns."("; + foreach($info as $key => $val){ + $sig .= $key.","; + $elm->appendChild(dojo_inspect($val,$key,$doc,"argument")); + } + $sig = substr($sig,0,strlen($sig)-1); + $sig .= ")"; + $elm->setAttribute("signature",$sig); + break; + + // some pertinant info about this element: + case "returns" : $elm->setAttribute("returns",htmlentities($info)); + case "private" : $elm->setAttribute("attributes","private"); break; + + case "type" : + if($info) { + switch ($info){ + case "Function" : + $elm->setAttribute("ilk","function"); + break; + default: + if (is_array($info)) { + if ($info["instance"]) { + $elm->setAttribute("citdl",$info["instance"]); + } + } else { + $elm->setAttribute("citdl",$info); + } + } + } + break; + + // ahhh, the blessed summary: + case "summary" : $elm->setAttribute("doc", fix_utf(htmlentities($info))); + break; + + // just in case we missed something? + default : + $scope_type = "scope"; + if (($data[$obj]["instance"] != NULL) || + ($data[$obj]["type"] == "Object")) { + $scope_type = "variable"; + } + $elm->appendChild(dojo_inspect($data[$obj],$obj,$doc,$scope_type)); + break; + } + } + // give it back as a domNode: + return $elm; + +} + +function dojo_get_contents_cache($namespace, $file, $forceNew = false){ + // summary: a shim to dojo_get_contents, providing filemtime checking/caching + // from parsing: XML takes ~ 80000ms on my MacBook Pro, from cache: + // 7000ms ... pass true as third param to force cache reloading. + + // if the file hasn't been change since the last time, skip parsing it + $mtime = dojo_get_file_time($namespace, $file); + $cfile = "./cache/".md5($namespace.$file).".".$mtime; + + if(!$forceNew && file_exists($cfile)){ + // read it from the cache: + $cache = file_get_contents($cfile); + $data = unserialize($cache); + + }else{ + // parse the file, and save the cached results: + $data = @dojo_get_contents($namespace, $file); + $cache = serialize($data); + $fp = fopen($cfile,"w+"); + fputs($fp,$cache); + fclose($fp); + + } + return $data; + +} + +function expando_dojo($array){ + // ugly array manipulation to turn an array like: + // array( "one" => array("one","two","three"), "one.more"=>array("two","four","six") + // into: + // array("one" => array("more"=>array("two","four","six"), "one", "two", "three")); + + $ret = array(); + foreach($array as $namespace => $results){ + foreach($results as $item => $data){ + switch($item{0}){ + case "#" : break; + default: + $list = explode(".",$item); + $n = count($list); + $me = $list[$n]; + // NOT happy with this: + if(!($list[0]==$namespace)){ continue; } + switch($n){ + case 8 : + fprintf("UNCAUGHT! %s", $item); // way tooooo deep. + break; + case 7 : + $l1 = $list[1]; + $l2 = $list[2]; + $l3 = $list[3]; + $l4 = $list[4]; + $l5 = $list[5]; + $l6 = $list[6]; + if ($ret[$namespace][$l1][$l2][$l3][$l4][$l5][$l6] == NULL) + $ret[$namespace][$l1][$l2][$l3][$l4][$l5][$l6] = $data; + else + $ret[$namespace][$l1][$l2][$l3][$l4][$l5][$l6] = array_merge_recursive($data, $ret[$namespace][$l1][$l2][$l3][$l4][$l5][$l6]); + break; + case 6 : + $l1 = $list[1]; + $l2 = $list[2]; + $l3 = $list[3]; + $l4 = $list[4]; + $l5 = $list[5]; + if ($ret[$namespace][$l1][$l2][$l3][$l4][$l5] == NULL) + $ret[$namespace][$l1][$l2][$l3][$l4][$l5] = $data; + else + $ret[$namespace][$l1][$l2][$l3][$l4][$l5] = array_merge_recursive($data, $ret[$namespace][$l1][$l2][$l3][$l4][$l5]); + break; + case 5 : + $l1 = $list[1]; + $l2 = $list[2]; + $l3 = $list[3]; + $l4 = $list[4]; + if ($ret[$namespace][$l1][$l2][$l3][$l4] == NULL) + $ret[$namespace][$l1][$l2][$l3][$l4] = $data; + else + $ret[$namespace][$l1][$l2][$l3][$l4] = array_merge_recursive($data, $ret[$namespace][$l1][$l2][$l3][$l4]); + break; + case 4 : + $l1 = $list[1]; + $l2 = $list[2]; + $l3 = $list[3]; + if ($ret[$namespace][$l1][$l2][$l3] == NULL) + $ret[$namespace][$l1][$l2][$l3] = $data; + else + $ret[$namespace][$l1][$l2][$l3] = array_merge_recursive($data, $ret[$namespace][$l1][$l2][$l3]); + break; + case 3 : + $l1 = $list[1]; + $l2 = $list[2]; + + if ($ret[$namespace][$l1][$l2] == NULL) + $ret[$namespace][$l1][$l2] = $data; + else + $ret[$namespace][$l1][$l2] = array_merge_recursive($data, $ret[$namespace][$l1][$l2]); + break; + case 2 : + $l1 = $list[1]; + $ret[$namespace][$l1] = $data; + break; + } + break; + } + + } + + } + return $ret; +} + +function fix_utf($str){ + return iconv('utf-8','utf-8', $str); +} + +?> diff --git a/js/dojo-release-1.7.2-src/util/docscripts/modules/dijit.module b/js/dojo-release-1.7.2-src/util/docscripts/modules/dijit.module new file mode 100755 index 0000000..a571476 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/modules/dijit.module @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/modules/dojo.module b/js/dojo-release-1.7.2-src/util/docscripts/modules/dojo.module new file mode 100755 index 0000000..95c4c00 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/modules/dojo.module @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/modules/dojox.module.properties b/js/dojo-release-1.7.2-src/util/docscripts/modules/dojox.module.properties new file mode 100755 index 0000000..46bf808 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/modules/dojox.module.properties @@ -0,0 +1 @@ +location = ../../dojox/ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/modules/util.module b/js/dojo-release-1.7.2-src/util/docscripts/modules/util.module new file mode 100755 index 0000000..b60aa70 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/modules/util.module @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/parsefile.php b/js/dojo-release-1.7.2-src/util/docscripts/parsefile.php new file mode 100644 index 0000000..ca02231 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/parsefile.php @@ -0,0 +1,97 @@ + 1){ + if($debug){ + print "Warning: Multiple provides() found?\n"; + $ret = false; + } + } + } + + if(count($data) == 0){ + if($debug){ print "Error: No data found. [" . $ns . "/" . $file . "]"; } + $ret = false; + }else{ + + } + + return $ret; + }catch (Exception $e){ + print "Error: Exception trapped processing [" . $ns . "/" . $file . "]\nException:\n"; + print $e; + return false; + } +} + +if($argc){ + + $argfile = $argv[1]; + $debug = in_array("--debug", $argv); + if($argfile == "--all"){ + + $debug = true; + $haserror = false; + foreach($allfiles as $set){ + list($ns, $file) = $set; + if(!doc_passes($ns, $file, $debug)){ + $haserror = true; + } + } + + if($haserror){ + die(255); + } + + }else{ + + $parts = explode("/", $argfile); + $ns = array_shift($parts); + $file = implode("/", $parts); + if(!doc_passes($ns, $file, $debug)){ + die(255); + } + + } + +} diff --git a/js/dojo-release-1.7.2-src/util/docscripts/preview.php b/js/dojo-release-1.7.2-src/util/docscripts/preview.php new file mode 100644 index 0000000..2e73fac --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/preview.php @@ -0,0 +1,389 @@ + + + + + + + API Preview tool | The Dojo Toolkit + + + + + + + + +".htmlspecialchars($ns)."/".htmlspecialchars($ifile)."
                                                                        "; + foreach($apiData as $key => $val){ + switch($key){ + case "#resource" : break; + case "#requires" : + $print .= "
                                                                      • Requires:

                                                                          "; + foreach($val as $resource){ + $print .= "
                                                                        • {$resource[1]} in {$resource[0]}"; + if ($resource[2]) { + $print .= " in project {$resource[2]}"; + } + $print .= "
                                                                        • "; + } + $print .= "
                                                                      • "; + break; + case "#provides" : + $print .= "
                                                                      • Provides:

                                                                          "; + $print .= "
                                                                        • $val
                                                                        • "; + $print .= "
                                                                      • "; + break; + case "#debug": + $print .= "

                                                                        Debugging:

                                                                          "; + foreach($val as $message){ + $print .= "
                                                                        • "; + if(is_string($message)){ + $print .= $message; + }else{ + $er = $message->getMessage(); + preg_match("/Line\ (\d+)/", $er, $matches); + if($matches[1]){ + $waserror = TRUE; + $errorline = $matches[1]; + } + $print .= "
                                                                          " . $message->getMessage() . "
                                                                          "; + } + $print .= "
                                                                        • "; + } + $print .= "
                                                                        "; + break; + case "#raw_source": + $lines = explode("\n", $val); + $print .= "

                                                                        Source

                                                                          "; + $i = 0; + foreach($lines as $line){ + $i++; + $print .= "
                                                                        1. "; + if($waserror && ($i == $errorline || $errorline + 1 == $i || $errorline - 1 == $i)){ + $print .= "
                                                                          ";
                                                                          +						}else{ 
                                                                          +							$print .= "
                                                                          ";
                                                                          +						}
                                                                          +						$print .= htmlentities($line) . " 
                                                                        2. "; + } + $print .= "
                                                                        "; + break; + case "#unwrapped_source": + if(!empty($val)){ + $print .= "

                                                                        " . $key . "

                                                                        " . htmlentities($val) . "
                                                                        "; + } + break; + default: + $print .= "
                                                                      • ".$key."

                                                                          "; + foreach($val as $key2 => $val2){ + + switch($key2){ + // most things using dojo.declare() trigger this, eg: dijits + case "classlike": + $knownClasses[] = $key; + if ($_REQUEST['showall']) { + $print .= "
                                                                        • $key2
                                                                        • "; + } + break; + + // these are partially useless for our "overview" api, but set showall=1 in the + // url if you want to see these, too. sortof. + case "type" : + $print .= "
                                                                        • ".$key2."
                                                                          ".htmlentities($val2)."
                                                                        • "; + break; + case "private_parent" : + case "prototype" : + case "instance" : + case "private" : + case "deprecated" : + case "protected" : + case "attached" : + if($_REQUEST['showall']){ $print .= "
                                                                        • ".$key2." - ".$val2."
                                                                        • "; } + break; + case "alias" : + case "constructor" : + $print .= "
                                                                        • ".$key2." - ".$val2."
                                                                        • "; + break; + + // another array we want inspect more closely + case "parameters" : + $print .= "
                                                                        • parameters:
                                                                            "; + foreach($val2 as $param => $paramData){ + $print .= "
                                                                          • ".$param; + if (!empty($paramData['type'])) { + $print .= ": (typeof ".$paramData['type'].")"; + } + $print .= "
                                                                            "; + if(!empty($paramData['summary'])){ + $print .= "
                                                                            ".htmlentities($paramData['summary'])."
                                                                            "; + } + $print .= "
                                                                          • "; + } //print_r($val2); + $print .= "
                                                                        • "; + break; + + // the stripped source, and some minimal toggling to show/hide + case "source" : + $print .= "
                                                                        • source: [view] +
                                                                          \n + ".ltrim(str_replace("\n","
                                                                          ",str_replace("\t"," ",$val2)))." +
                                                                          "; + break; + + case "tags": + $print .= "
                                                                        • $key2: " . implode(' ', $val2) . '
                                                                        • '; + break; + + case "optional": + if ($val2) { + $print .= "
                                                                        • $key2
                                                                        • "; + } + break; + + case "chains" : + case "mixins" : + if (!empty($val2)) { + $print .= "
                                                                        • " . $key2 . ":
                                                                            "; + foreach ($val2 as $subtype => $chains) { + foreach ($chains as $chain) { + $print .= "
                                                                          • $chain: ($subtype)
                                                                          • "; + } + } + $print .= "
                                                                        • "; + } + break; + + // these are the ones we care about, and are fulltext/sometimes html + case "examples" : + foreach ($val2 as $example){ + $print .= "
                                                                        • example
                                                                          ".htmlentities($example)."
                                                                        • "; + } + break; + + case "returns" : + case "return_summary" : + case "exceptions" : + case "description" : + case "summary" : $print .= "
                                                                        • ".$key2."
                                                                          ".htmlentities($val2)."
                                                                        • "; break; + + // this is a key we don't know about above, so show it just in case + default: + $print .= "
                                                                        • ?? ".$key2." = ".$val2." (debug: ".gettype($val2).") ??
                                                                        • "; + break; + } + } + $print .= "
                                                                      • "; + break; + } + } + $print .= "
                                                                      "; + } + } + +if(!$ajaxy){ ?> +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + +'.$print.'
                                                                      '; +} +?> diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/alias.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/alias.js new file mode 100644 index 0000000..d6572f3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/alias.js @@ -0,0 +1,10 @@ +// one would expect this to work. +dojo.provide("util.docscripts.tests.alias"); +(function(_dojo){ + + dojo.sampleFunction = function(a, b, c){ + // summary: WTF + return ""; // String + } + +})(dojo); // (this.dojo) works \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/alias_amd.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/alias_amd.js new file mode 100644 index 0000000..b05ee89 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/alias_amd.js @@ -0,0 +1,8 @@ +define(["dojo","dijit"], function(_dojo){ + + dojo.sampleFunction = function(a, b, c){ + // summary: WTF + return ""; // String + } + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/basic.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/basic.js new file mode 100644 index 0000000..94e9ce0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/basic.js @@ -0,0 +1,225 @@ +dojo.provide("util.docscripts.tests.basic"); +(function(){ + + var url = dojo.moduleUrl("util.docscripts", "dumpObj.php") + ""; + function getdata(file){ + + var r; + dojo.xhrGet({ + url: url + "?f=" + file, + sync: true, + handleAs:"json", + handle: function(response){ + r = response; + } + }); + return r; + + } + + var docs; + function getmember(key, obj){ + obj = obj || docs; + return obj[key]; + } + + doh.register("doctests.basic", [ + + function actual_fetching(t){ + docs = getdata("util/docscripts/tests/simple.js"); + t.t(docs); + t.t(typeof docs == "object"); + t.is(docs["#provides"], "util.docscripts.tests.simple", "provide() object found"); + t.is(docs["#resource"], "docscripts/tests/simple.js", "filename expansion"); + t.t(docs["util.docscripts.tests"], "provide() expansion"); + }, + + function simple_requires(t){ + t.t(dojo.isArray(docs['#requires'][0]), "populated require"); + t.t(~dojo.indexOf(docs["#requires"][0], "dojo.cookie"), "found cookie require"); + }, + + function module_level_docs(t){ + var fb = getmember("util.docscripts.tests.simple"); + t.is("Module level summary", fb.summary, "summary from psuedo on module obj"); + }, + + function basic_class(t){ + + var fb = getmember("dojo.FooBar"); + + t.t(fb, "dojo.FooBar docs exist"); + t.t(fb.classlike, "classlike thinger found"); + t.is("A Class", fb.summary, "picked up summary from post-decalre docs"); + t.is("Function", fb.type, "inference"); + t.is("A Class description", fb.description, "description from post-declare docs"); + + t.t(dojo.isArray(fb.examples), "found examples"); + t.is(1, fb.examples.length, "found one example exactly"); + + var fbc = getmember("dojo.FooBar.constructor"); + t.is(fbc.prototype, "dojo.FooBar", "prototype binding"); + t.is(fbc.parameters.args.name, fb.parameters.args.name, "params from constructor implied on class"); + + var mf = getmember("dojo.FooBar.memberFn"); + t.t(mf, "member function picked out of declaration"); + + var params = mf.parameters; + t.is("String", params.a.type); + t.f(params.b.optional); + t.is("String", params.b.type); + t.f(params.b.optional); + t.is("Boolean", params.c.type); + t.t(params.c.optional, "last arg optional"); + t.is("Integer", mf.returns); + t.is("A member function", mf.summary); + + }, + + function inherited_class(t){ + var fb2 = getmember("dojo.FooBar2"); + t.t(fb2); + // TODO: + // check fb2.chains for dojo.FooBar + // check fb2.inheritance + // FIXME: + // what is chains v prototype + }, + + function mixin_docs(t){ + var mv = getmember("dojo.mixedValue"); + t.is("External doc block, mixed", mv.summary, "summary found for mixed value"); + t.is("Integer", mv.type, "type infered from mixed value"); + t.is("dojo", mv.attached, "alias lookup in d.mixin"); + + var mf = getmember("dojo.mixedFunction"); + t.is("dojo", mf.attached, "alias lookup in d.mixin"); + t.is("Integer", mf.returns, "returns from return line"); + t.is("From mixin", mf.summary, "basic summary"); + t.is("a", mf.parameters.a.name, "parameter picked up"); + t.t(mf.parameters.a.optional, "param is optional"); + t.is(mf.parameters.a.summary, "Some number or not", "parameter description picked up"); + }, + + function basic_function(t){ + + var fb = getmember("dojo.thisIsAtestFunction"); + t.t(fb, "testFunction docs exist"); + t.is("Testing a function", fb.summary); + t.is("String", fb.returns, "return value determined"); + t.is("Testing a string parameter", fb.parameters.a.summary, "parameter summary picked out"); + }, + + function testfunction2(t){ + var tf = getmember("dojo.testFunction2"); + t.is("Simple summary", tf.summary); + t.is("Simple Description.\nOn Multiple lines.", tf.description); + t.t(tf.parameters.id.optional); + t.is("Duplicate matched in signature and in line", tf.parameters.id.summary); + t.is("String", tf.parameters.id.type); + }, + + function test_returner(t){ + + // FIXME: the absence of a return comment populates only return_summary + // when it's like: + // --- + // returns: Foo|Bar|Baz + // You'd expect Foo|Bar|Baz to be return value, and this to be return_summary + // --- + + var r = getmember("dojo.returner"); + t.t(r); + + // FIXME: expected but not getting: + // t.is("String|Integer", r.returns); + // t.is("This should be description", r.return_summary); + + // FIXME: actually getting: + t.is("String|Integer\nThis should be description", r.return_summary); + t.f(r.returns); + }, + + function test_multireturner(t){ + var r = getmember("dojo.multiReturns"); + t.t(r); + t.is("String|Integer", r.returns, "found all return statement types in block"); + t.is("Simple multireturn check", r.summary); + }, + + function aliased_query(t){ + var dq = getmember("dojo.query.stub"); + t.t(dq, "$ -> dojo.query unwrapped from closure"); + t.is("Integer", dq.returns); + t.is("aliased to `dojo.query`", dq.summary, "FIX: requires undone "); + }, + + function kwarg_test(t){ + var kw = getmember("util.docscripts.tests.simple.__kwArgs"); + var args = kw.parameters; + + // FIXME: should this be actually mixed into something that has a type=__kwArgs? + // eg: dojo.kwArgFunction.parameter.args object? + var kwf = getmember("dojo.kwArgFunction"); + var kwp = kwf.parameters.args; + + t.is("util.docscripts.tests.simple.__kwArgs", kwp.type); + + }, + +// function fetch_amd_style(t){ +// docs = getdata("util/docscripts/tests/simple_amd.js"); +// console.warn("amd-basic", docs); +// }, +// +// function fetch_amd_declare(t){ +// docs = getdata("util/docscripts/tests/declare_amd.js"); +// console.warn("amg-declare", docs); +// }, + + function functional(t){ + // refs #13345 + docs = getdata("util/docscripts/tests/functional.js"); + var hasit = getmember("util.docscripts.tests.FunctionalThinger"); + t.t(hasit, "object exists in parsed output, meaning parsing happened"); + }, + + function raw_declare_init(t){ + docs = getdata("util/docscripts/tests/extend_declare.js"); + t.t(true); + }, + + function raw_declare(t){ + var barbaz = getmember("dojo.BarBaz"); + t.t(barbaz, "raw declare() call defined a named class"); + }, + + function lang_extend(t){ + var someprop = getmember("dojo.BarBaz.someProp"); + t.t(someprop, "lang.extend worked"); + t.is("String", someprop.type, "lang.extend unwrapped innards"); + }, + +// FIXME; dojo.mixin(a.b.prototype, { ... }) parses, but shows up differently in the obj +// ... differently than dojo.extend(a.b, { ... }) ... the former is attached to "a.b", the +// latter attached to "a.b.prototype". no sure how this pans out for generate.php +// +// function lang_mixin(t){ +// var someprop = getmember("dojo.BarBaz.moreProps"); +// console.log(docs, someprop); +// t.t(someprop, "lang._mixin worked"); +// t.is("String", someprop.type, "lang._mixin unwrapped innards"); +// }, +// + + function winning(t){ + var prop = getmember("dojo.BarBaz.winning"); + console.warn(prop); + t.t(prop, "aliased extend() call resolves properly"); + t.is("Boolean", prop.type); + t.is("Always true.", prop.summary, "are we? rad.") + } + + ]); + +})(); diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/declare_amd.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/declare_amd.js new file mode 100644 index 0000000..bccc63e --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/declare_amd.js @@ -0,0 +1,31 @@ +define("util/docscripts/tests/declare_amd", ["dojo", "dijit", "dijit/_Widget"], function(dojo, dijit){ + + dojo.declare("foo.Bar", [dijit._Widget], { // util.docscripts.tests.declare_amd + // summary: A Thinger + // description: Some Long Thinger + // + // boo: Integer + boo: 10, + + constructor: function(args){ + // summary: The constructor + dojo.mixin(this, args); + }, + + aMemberFn: function(/* String? */a){ + // summary: Does something + // a: String? + // Foo. + return a || ""; // String + }, + + postCreate: function(){ + this.inherited(arguments); + this.boo *= 2; + } + + }); + + return foo.Bar; +}); + diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/declare_returns.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/declare_returns.js new file mode 100644 index 0000000..55585f0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/declare_returns.js @@ -0,0 +1,7 @@ +define(["dojo", "dojo/declare"], function(dojo){ + + return dojo.declare("foo.Bar", null, { + // summary: FOOBAR LIVES + }) + +}); diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/doctests.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/doctests.js new file mode 100644 index 0000000..a9bd30b --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/doctests.js @@ -0,0 +1,3 @@ +dojo.provide("util.docscripts.tests.doctests"); + +dojo.require("util.docscripts.tests.basic"); diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/extend_declare.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/extend_declare.js new file mode 100644 index 0000000..23884bb --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/extend_declare.js @@ -0,0 +1,57 @@ +define(["dojo/main", "dojo/_base/declare", "dojo/_base/lang", "dijit", "dijit/_Widget"], function(dojo, decalre, lang, dijit, _Widget){ + + /*===== var _Widget = dijit._Widget =====*/ + + var x = declare("dojo.BarBaz", [_Widget], { // util.docscripts.tests.declare_amd + // summary: A Thinger + // description: Some Long Thinger + // + // boo: Integer + boo: 10, + + constructor: function(args){ + // summary: The constructor + dojo.mixin(this, args); + }, + + aMemberFn: function(/* String? */a){ + // summary: Does something + // a: String? + // Foo. + return a || ""; // String + }, + + postCreate: function(){ + this.inherited(arguments); + this.boo *= 2; + } + + }); + + lang.extend(dojo.BarBaz, { + // someProp: String + someProp: "test", + + anotherFn: function(/* String? */b){ + // summary: Another Function + return 10; // Integer + } + }) + + lang.mixin(dojo.BarBaz.prototype, { + // moreProps: String + // Some more props. + moreProps: "winning" + }) + + var omg = lang.extend; + + omg(dojo.BarBaz, { + // winning: Boolean + // Always true. + winning: true + }); + + return x; +}); + diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/functional.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/functional.js new file mode 100644 index 0000000..0b8dc01 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/functional.js @@ -0,0 +1,12 @@ +define(["dojo", "dojox/lang/functional", "dijit"], function(dojo, dlf, dijit){ + + return dojo.declare("util.docscripts.tests.FunctionalThinger", null, { + // summary: + // This is a test. + constructor: function(args){ + dojo._mixin(this, args); + } + + }); + +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/runTests.php b/js/dojo-release-1.7.2-src/util/docscripts/tests/runTests.php new file mode 100644 index 0000000..e183460 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/runTests.php @@ -0,0 +1,9 @@ + + + + Dojo CORE and BASE D.O.H. Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/simple.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/simple.js new file mode 100644 index 0000000..d6e0832 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/simple.js @@ -0,0 +1,132 @@ +dojo.provide("util.docscripts.tests.simple"); +/*===== + util.docscripts.tests.simple = { + // summary: Module level summary + }; +=====*/ +dojo.require("dojo.cookie"); +(function(d, $){ + + d.thisIsAtestFunction = function(/* String */a){ + // summary: Testing a function + // a: String + // Testing a string parameter + return a.toUpperCase(); // String + } + + d.testFunction2 = function(/* String? */id){ + // summary: Simple summary + // description: + // Simple Description. + // On Multiple lines. + // id: String? + // Duplicate matched in signature and in line + // returns: String + // Whatever + return (id || "").toUpperCase(); + } + + d.declare("dojo.FooBar", null, { + // summary: A Class + // description: A Class description + // example: + // | This is a test + // + // member: Integer + // Used for counting things + member: 0, + + memberFn: function(a, b, c){ + // summary: A member function + // a: String + // b: String + // c: Boolean? + return 10; // Integer + }, + + constructor: function(args){ + // summary: The constructor. + dojo.mixin(this, args); + } + + }); + + d.declare("dojo.FooBar2", dojo.FooBar, { + // inheritance: String + // Checking declare mixins + inheritance:"rules" + }); + + d.mixin(d, { + + // mixedValue: Integer + // External doc block, mixed + mixedValue: 10, + + mixedFunction: function(a){ + // summary: From mixin + // a: Integer? + // Some number or not + return a * 10; // Integer + } + }); + + d.extend(d.FooBar, { + + // extendedMember: Integer + // External doc block, extended + extendedMember: 10, + + secondMember: function(a, b, c){ + // summary: Another member function + // a: String? + // b: String? + // c: Boolean? + // returns: String + // Some return description text. + return "Hello, World"; + } + }); + + /*===== + util.docscripts.tests.simple.__kwArgs = function(a, b, c){ + // summary: Simple kwarg definition + // a: String + // b: Integer + // c: Boolean? + this.a = a; + this.b = b; + this.c = c; + }; + =====*/ + + d.kwArgFunction = function(/* util.docscripts.tests.simple.__kwArgs */args){ + // summary: kwarg function test + // returns: String + return "winning."; + } + + $.stub = function(a, b){ + // summary: aliased to `dojo.query` + return a * b; // Integer + } + + d.returner = function(a){ + // summary: Simple returner check + // a: String|Integer + // Multiple types for param + // returns: String|Integer + // This should be description + return a; + } + + d.multiReturns = function(a){ + // summary: Simple multireturn check + if(a > 10){ + return "A"; // String + }else{ + return 10; // Integer + } + } + +})(dojo, dojo.query); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/docscripts/tests/simple_amd.js b/js/dojo-release-1.7.2-src/util/docscripts/tests/simple_amd.js new file mode 100644 index 0000000..639a350 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/docscripts/tests/simple_amd.js @@ -0,0 +1,25 @@ +define(["dojo", "dojo/cookie"], function(dojo, cook){ + + dojo.thisIsAtestFunction = function(/* String */a){ + // summary: Testing a function + // a: String + // Testing a string parameter + return a.toUpperCase(); // String + } + + dojo.testFunction2 = function(/* String? */id){ + // summary: Simple summary + // description: + // Simple Description. + // On Multiple lines. + // id: String? + // Duplicate matched in signature and in line + return (id || "").toUpperCase(); // String + } + + dojo.declare("foo.Bar", null, { + // summary: Nondojo NS populated + }) + + return dojo; +}); diff --git a/js/dojo-release-1.7.2-src/util/doh/LICENSE b/js/dojo-release-1.7.2-src/util/doh/LICENSE new file mode 100644 index 0000000..aa6b39f --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/LICENSE @@ -0,0 +1,195 @@ +Dojo is available under *either* the terms of the modified BSD license *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL or BSD licenses that Dojo is distributed under. + +The text of the AFL and BSD licenses is reproduced below. + +------------------------------------------------------------------------------- +The "New" BSD License: +********************** + +Copyright (c) 2005-2011, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. diff --git a/js/dojo-release-1.7.2-src/util/doh/README b/js/dojo-release-1.7.2-src/util/doh/README new file mode 100644 index 0000000..87a8e0d --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/README @@ -0,0 +1,97 @@ +DOH: The Dojo Object Harness +============================ + +DOH is a unit test framework developed by the Dojo Toolkit Community. For the tutorial published +with the latest release see: http://dojotoolkit.org/reference-guide/util/doh.html#util-doh. + +DOH is a constructed as an AMD package that uses doh/main.js for its main entry point. It may +be executed in the browser or by node.js or rhino. Typically, it is loaded by the dojo AMD +loader; however, it is also possible to use any complying loader. + + +node.js +======= + +To run DOH via node.js, issue the command + +> node path/to/dojo/dojo.js load=doh test=path/to/test/module + +For example, from the util/doh/ directory you can run the self test as follows: + +~/dev/dojotoolkit/util/doh> node ../../dojo/dojo.js load=doh test=doh/tests/selfTest + +Since node.js includes executing scripts to discover their location, the dojo node bootstrap +can discover baseUrl (the dojo directory) without further help. + + +rhino +===== + +To run DOH via rhino, issue the command + +>java -jar path/to/js.jar path/to/dojo/dojo.js baseUrl=path/to/dojo load=doh test=path/to/test/module + +For example, from the util/doh/ directory, you can run the self test as follows (assumes js.jar is in the user's +home directory): + +~/dev/dojotoolkit/util/doh> java -jar ../shrinksafe/js.jar ../../dojo/dojo.js baseUrl=../../dojo load=doh test=doh/tests/selfTest + +Since rhino does not give scripts the ability to discover their location, you must do one of the following + + * provide a baseUrl command line argument that specifies the dojo directory + * execute the command form the the dojo directory + +Here's the equivalent example command from the dojo directory: + +~/dev/dojotoolkit/dojo> java -jar ../util/shrinksafe/js.jar dojo.js load=doh test=doh/tests/selfTest + + +browser +======= + +To run DOH in the browser, point your browser to util/DOH/runner.html. You'll also need to provide at least one +test module to execute by the query parameter "test". For example, to run the dojo unit tests, the URL would +look something like... + +http://localhost/dev/dojotoolkit/util/doh/runner.html?test=dojo/tests/module + +(Of course the host and path--localhost and dev/dojotoolkit/util in the example--will depend on how you've configured +your test environment. + +DOH includes the following query parameters: + +test: +a comma-separated-list of AMD module identifiers that contain the tests to load. + +testUrl: +deprecated alias for test + +paths: +a semicolon-separated-list of comma-separated-pairs of (module-identifier -> path-prefix) to provide to the loader's +path configuration property. + +registerModulePath: +deprecated alias for paths + +boot: +a comma-separated-list of Javascript resources to script inject to bootstrap DOH. Defaults to "../../dojo/dojo.js", +which causes DOH to use the dojo AMD loader. You may use this parameter to provide and alternate loader. + +dojoUrl: +deprecated alias for boot + +async: +If provided, instructs the dojo loader to operate in async mode. + +breakOnError: +If provided, instructs DOH to break into the debugger upon an error. + + +About Hard Dojo Dependency +========================== + +As of v1.7 DOH depends on dojo base via AMD define dependency lists. If this causes you concern, you +may sandbox dojo by setting dojoConfig.scopeMap.dojo to falsy which will result in *not* publishing +dojo to the global namespace. Alternatively, you may provide a custom library that includes the +part of the dojo base API used by DOH and map the AMD module identifier "dojo" to this custom library. +However, we know of no good reason to follow either of these paths. diff --git a/js/dojo-release-1.7.2-src/util/doh/Robot.html b/js/dojo-release-1.7.2-src/util/doh/Robot.html new file mode 100644 index 0000000..677abe0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/Robot.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + diff --git a/js/dojo-release-1.7.2-src/util/doh/_browserRunner.js b/js/dojo-release-1.7.2-src/util/doh/_browserRunner.js new file mode 100644 index 0000000..e4d525c --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/_browserRunner.js @@ -0,0 +1,867 @@ +define(["dojo", "doh/runner", "dojo/_firebug/firebug"], function(dojo, doh) { + doh.isBrowser= true; + var topdog; + try{ + topdog = (window.parent == window) || !Boolean(window.parent.doh); + }catch(e){ + //can't access window.parent.doh, then consider ourselves as topdog + topdog=true; + } + if(topdog){ + // we're the top-dog window. + + // borrowed from Dojo, etc. + var byId = function(id){ + return document.getElementById(id); + }; + + var _addOnEvt = function( type, // string + refOrName, // function or string + scope){ // object, defaults is window + + if(!scope){ scope = window; } + + var funcRef = refOrName; + if(typeof refOrName == "string"){ + funcRef = scope[refOrName]; + } + var enclosedFunc = function(){ return funcRef.apply(scope, arguments); }; + + if((window["dojo"])&&(type == "load")){ + dojo.addOnLoad(enclosedFunc); + }else{ + if(window["attachEvent"]){ + window.attachEvent("on"+type, enclosedFunc); + }else if(window["addEventListener"]){ + window.addEventListener(type, enclosedFunc, false); + }else if(document["addEventListener"]){ + document.addEventListener(type, enclosedFunc, false); + } + } + }; + + // + // Over-ride or implement base runner.js-provided methods + // + var escapeXml = function(str){ + //summary: + // Adds escape sequences for special characters in XML: &<>"' + // Optionally skips escapes for single quotes + return str.replace(/&/gm, "&").replace(//gm, ">").replace(/"/gm, """); // string + }; + + var formatTime = function(n){ + switch(true){ + case n<1000: //<1s + return n+"ms"; + case n<60000: //<1m + return Math.round(n/100)/10+"s"; + case n<3600000: //<1h + return Math.round(n/6000)/10+"m"; + default: //>1h + return Math.round(n/360000)/10+"h"; + } + }; + + var _logBacklog = [], _loggedMsgLen = 0; + var sendToLogPane = function(args, skip){ + var msg = ""; + for(var x=0; x "); + if(!byId("logBody")){ + _logBacklog.push(msg); + return; + }else if(_logBacklog.length && !skip){ + var tm; + while((tm=_logBacklog.shift())){ + sendToLogPane(tm, true); + } + } + var logBody=byId("logBody"); + var tn = document.createElement("div"); + tn.innerHTML = msg; + //tn.id="logmsg_"+logBody.childNodes.length; + logBody.appendChild(tn); + _loggedMsgLen++; + } + + var findTarget = function(n){ + while(n && !n.getAttribute('_target')){ + n=n.parentNode; + if(!n.getAttribute){ + n=null; + } + } + return n; + } + + doh._jumpToLog = function(e){ + //console.log(e); + + var node = findTarget(e?e.target:window.event.srcElement); + if(!node){ + return; + } + var _t = Number(node.getAttribute('_target')); + var lb = byId("logBody"); + if(_t>=lb.childNodes.length){ + return; + } + var t = lb.childNodes[_t]; + t.scrollIntoView(); + if(window.dojo){ + //t.parentNode.parentNode is
                                                                      , only it has a explicitly set background-color, + //all children of it are transparent + var bgColor = dojo.style(t.parentNode.parentNode,'backgroundColor'); + //node.parentNode is the tr which has background-color set explicitly + var hicolor = dojo.style(node.parentNode,'backgroundColor'); + var unhilight = dojo.animateProperty({ + node: t, + duration: 500, + properties: + { + backgroundColor: { start:hicolor, end: bgColor } + }, + onEnd: function(){ + t.style.backgroundColor=""; + } + }); + var hilight = dojo.animateProperty({ + node: t, + duration: 500, + properties: + { + backgroundColor: { start:bgColor, end: hicolor } + }, + onEnd: function(){ + unhilight.play(); + } + }); + hilight.play(); + } + }; + + doh._jumpToSuite = function(e){ + var node = findTarget(e ? e.target : window.event.srcElement); + if(!node){ + return; + } + var _g = node.getAttribute('_target'); + var gn = getGroupNode(_g); + if(!gn){ + return; + } + gn.scrollIntoView(); + }; + + doh._init = (function(oi){ + return function(){ + var lb = byId("logBody"); + if(lb){ + // clear the console before each run + while(lb.firstChild){ + lb.removeChild(lb.firstChild); + } + _loggedMsgLen = 0; + } + this._totalTime = 0; + this._suiteCount = 0; + oi.apply(doh, arguments); + } + })(doh._init); + + doh._setupGroupForRun = (function(os){ + //overload _setupGroupForRun to record which log line to jump to when a suite is clicked + return function(groupName){ + var tg = doh._groups[groupName]; + doh._curTestCount = tg.length; + doh._curGroupCount = 1; + var gn = getGroupNode(groupName); + if(gn){ + //two lines will be added, scroll the second line into view + gn.getElementsByTagName("td")[2].setAttribute('_target',_loggedMsgLen+1); + } + os.apply(doh,arguments); + } + })(doh._setupGroupForRun); + + var originalDohReport= doh._report; + doh._report = function(){ + var tb = byId("testList"); + if(tb){ + var tfoots=tb.getElementsByTagName('tfoot'); + if(tfoots.length){ + tb.removeChild(tfoots[0]); + } + var foot = tb.createTFoot(); + var row = foot.insertRow(-1); + row.className = 'inProgress'; + var cell=row.insertCell(-1); + cell.colSpan=2; + cell.innerHTML="Result"; + cell = row.insertCell(-1); + cell.innerHTML=this._testCount+" tests in "+this._groupCount+" groups /"+this._errorCount+" errors, "+this._failureCount+" failures"; + cell.setAttribute('_target',_loggedMsgLen+1); + row.insertCell(-1).innerHTML=formatTime(doh._totalTime); + } + + //This location can do the final performance rendering for the results + //of any performance tests. + var plotResults = null; + var standby; + if(doh.perfTestResults){ + require(["dojox/math/stats", "dojox/charting/Chart2D", "dojox/charting/DataChart", "dojox/charting/plot2d/Scatter", "dojox/charting/plot2d/Lines", "dojo/data/ItemFileReadStore"], function(stats) { + dojo.mixin(doh, stats); + + plotResults = doh._dojoPlotPerfResults; + try{ + var g; + var pBody = byId("perfTestsBody"); + var chartsToRender = []; + // store analytics for reading later + // keyed on test group name, each value is in turn an object keyed on test name + doh.perfTestAnalytics={}; + doh.showPerfTestsPage(); + for(g in doh.perfTestResults){ + doh.perfTestAnalytics[g]={}; + var grp = doh.perfTestResults[g]; + var hdr = document.createElement("h1"); + hdr.appendChild(document.createTextNode("Group: " + g)); + pBody.appendChild(hdr); + var ind = document.createElement("blockquote"); + pBody.appendChild(ind); + var f; + for(f in grp){ + var fResults = grp[f]; + if(!fResults){ continue; } + var fhdr = document.createElement("h3"); + fhdr.appendChild(document.createTextNode("TEST: " + f)); + fhdr.style.textDecoration = "underline"; + ind.appendChild(fhdr); + var div = document.createElement("div"); + ind.appendChild(div); + + //Figure out the basic info + var results = "TRIAL SIZE: " + fResults.trials[0].testIterations + " iterations
                                                                      " + + "NUMBER OF TRIALS: " + fResults.trials.length + "
                                                                      "; + + //Figure out the average test pass cost. + var i; + var iAvgArray = []; + var tAvgArray = []; + for(i = 0; i < fResults.trials.length; i++){ + iAvgArray.push(fResults.trials[i].average); + tAvgArray.push(fResults.trials[i].executionTime); + } + var analytics=doh.perfTestAnalytics[g][f]={ + averageTrialExecutionTime: doh.mean(tAvgArray), + maxTestIterationTime: doh.max(iAvgArray), + minTestIterationTime: doh.min(iAvgArray), + averageTestIterationTime: doh.mean(iAvgArray), + medianTestIterationTime: doh.median(iAvgArray), + varianceTestIterationTime: doh.variance(iAvgArray), + standardDeviationTestIterationTime: doh.sd(iAvgArray) + }; + results += "AVERAGE TRIAL EXECUTION TIME: " + analytics.averageTrialExecutionTime.toFixed(10) + "ms.
                                                                      "; + results += "MAXIMUM TEST ITERATION TIME: " + analytics.maxTestIterationTime.toFixed(10) + "ms.
                                                                      "; + results += "MINIMUM TEST ITERATION TIME: " + analytics.minTestIterationTime.toFixed(10) + "ms.
                                                                      "; + results += "AVERAGE TEST ITERATION TIME: " + analytics.averageTestIterationTime.toFixed(10) + "ms.
                                                                      "; + results += "MEDIAN TEST ITERATION TIME: " + analytics.medianTestIterationTime.toFixed(10) + "ms.
                                                                      "; + results += "VARIANCE TEST ITERATION TIME: " + analytics.varianceTestIterationTime.toFixed(10) + "ms.
                                                                      "; + results += "STANDARD DEVIATION ON TEST ITERATION TIME: " +analytics.standardDeviationTestIterationTime.toFixed(10) + "ms.
                                                                      "; + + //Okay, attach it all in. + div.innerHTML = results; + + div = document.createElement("div"); + div.innerHTML = "

                                                                      Average Test Execution Time (in milliseconds, with median line)

                                                                      "; + ind.appendChild(div); + div = document.createElement("div"); + dojo.style(div, "width", "600px"); + dojo.style(div, "height", "250px"); + ind.appendChild(div); + chartsToRender.push({ + div: div, + title: "Average Test Execution Time", + data: iAvgArray + }); + + div = document.createElement("div"); + div.innerHTML = "

                                                                      Average Trial Execution Time (in milliseconds, with median line)

                                                                      "; + ind.appendChild(div); + div = document.createElement("div"); + dojo.style(div, "width", "600px"); + dojo.style(div, "height", "250px"); + ind.appendChild(div); + chartsToRender.push({ + div: div, + title: "Average Trial Execution Time", + data: tAvgArray + }); + } + } + + //Lazy-render these to give the browser time and not appear locked. + var delayedRenders = function() { + if(chartsToRender.length){ + var chartData = chartsToRender.shift(); + plotResults(chartData.div, chartData.title, chartData.data); + } + setTimeout(delayedRenders, 50); + }; + setTimeout(delayedRenders, 150); + }catch(e){ + doh.debug(e); + } + }); + } + originalDohReport.apply(doh,arguments); + }; + + + doh.error = undefined; + if(this["opera"] && opera.postError){ + doh.debug = function(){ + var msg = ""; + for(var x=0; x
                                                                       
                                                                      "; + tds[3].innerHTML = ""; + + tb.appendChild(tg); + return tg; + } + + var addFixtureToList = function(group, fixture){ + if(!testTemplate){ return; } + var cgn = groupNodes[group]; + if(!cgn["__items"]){ cgn.__items = []; } + var tn = testTemplate.cloneNode(true); + var tds = tn.getElementsByTagName("td"); + + tds[2].innerHTML = fixture.name; + tds[3].innerHTML = ""; + + var nn = (cgn.__lastFixture||cgn.__groupNode).nextSibling; + if(nn){ + nn.parentNode.insertBefore(tn, nn); + }else{ + cgn.__groupNode.parentNode.appendChild(tn); + } + // FIXME: need to make group display toggleable!! + tn.style.display = "none"; + cgn.__items.push(tn); + return (cgn.__lastFixture = tn); + } + + var getFixtureNode = function(group, fixture){ + if(groupNodes[group]){ + return groupNodes[group][fixture.name]; + } + return null; + } + + var getGroupNode = function(group){ + if(groupNodes[group]){ + return groupNodes[group].__groupNode; + } + return null; + } + + var updateBacklog = []; + doh._updateTestList = function(group, fixture, unwindingBacklog){ + if(!loaded){ + if(group && fixture){ + updateBacklog.push([group, fixture]); + } + return; + }else if(updateBacklog.length && !unwindingBacklog){ + var tr; + while((tr=updateBacklog.shift())){ + doh._updateTestList(tr[0], tr[1], true); + } + } + if(group && fixture){ + if(!groupNodes[group]){ + groupNodes[group] = { + "__groupNode": addGroupToList(group) + }; + } + if(!groupNodes[group][fixture.name]){ + groupNodes[group][fixture.name] = addFixtureToList(group, fixture) + } + } + } + + doh._testRegistered = doh._updateTestList; + + doh._groupStarted = function(group){ + if(this._suiteCount == 0){ + this._runedSuite = 0; + this._currentGlobalProgressBarWidth = 0; + this._suiteCount = this._testCount; + } + // console.debug("_groupStarted", group); + if(doh._inGroup != group){ + doh._groupTotalTime = 0; + doh._runed = 0; + doh._inGroup = group; + this._runedSuite++; + } + var gn = getGroupNode(group); + if(gn){ + gn.className = "inProgress"; + } + } + + doh._groupFinished = function(group, success){ + // console.debug("_groupFinished", group); + var gn = getGroupNode(group); + if(gn && doh._inGroup == group){ + doh._totalTime += doh._groupTotalTime; + gn.getElementsByTagName("td")[3].innerHTML = formatTime(doh._groupTotalTime); + gn.getElementsByTagName("td")[2].lastChild.className = ""; + doh._inGroup = null; + //doh._runedSuite++; + var failure = doh._updateGlobalProgressBar(this._runedSuite/this._groupCount,success,group); + gn.className = failure ? "failure" : "success"; + //doh._runedSuite--; + doh._currentGlobalProgressBarWidth = parseInt(this._runedSuite/this._groupCount*10000)/100; + //byId("progressOuter").style.width = parseInt(this._runedSuite/this._suiteCount*100)+"%"; + } + if(doh._inGroup == group){ + this.debug("Total time for GROUP \"",group,"\" is ",formatTime(doh._groupTotalTime)); + } + } + + doh._testStarted = function(group, fixture){ + // console.debug("_testStarted", group, fixture.name); + var fn = getFixtureNode(group, fixture); + if(fn){ + fn.className = "inProgress"; + } + } + + var _nameTimes = {}; + var _playSound = function(name){ + if(byId("hiddenAudio") && byId("audio") && byId("audio").checked){ + // console.debug("playing:", name); + var nt = _nameTimes[name]; + // only play sounds once every second or so + if((!nt)||(((new Date)-nt) > 700)){ + _nameTimes[name] = new Date(); + var tc = document.createElement("span"); + byId("hiddenAudio").appendChild(tc); + tc.innerHTML = ''; + } + } + } + + doh._updateGlobalProgressBar = function(p,success,group){ + var outerContainer=byId("progressOuter"); + + var gdiv=outerContainer.childNodes[doh._runedSuite-1]; + if(!gdiv){ + gdiv=document.createElement('div'); + outerContainer.appendChild(gdiv); + gdiv.className='success'; + gdiv.setAttribute('_target',group); + } + if(!success && !gdiv._failure){ + gdiv._failure=true; + gdiv.className='failure'; + if(group){ + gdiv.setAttribute('title','failed group '+group); + } + } + var tp=parseInt(p*10000)/100; + gdiv.style.width = (tp-doh._currentGlobalProgressBarWidth)+"%"; + return gdiv._failure; + } + doh._testFinished = function(group, fixture, success){ + var fn = getFixtureNode(group, fixture); + var elapsed = fixture.endTime-fixture.startTime; + if(fn){ + fn.getElementsByTagName("td")[3].innerHTML = formatTime(elapsed); + fn.className = (success) ? "success" : "failure"; + fn.getElementsByTagName("td")[2].setAttribute('_target', _loggedMsgLen); + if(!success){ + _playSound("doh"); + var gn = getGroupNode(group); + if(gn){ + gn.className = "failure"; + _getGroupToggler(group)(null, true); + } + } + } + if(doh._inGroup == group){ + var gn = getGroupNode(group); + doh._runed++; + if(gn && doh._curTestCount){ + var p = doh._runed/doh._curTestCount; + var groupfail = this._updateGlobalProgressBar((doh._runedSuite+p-1)/doh._groupCount,success,group); + + var pbar = gn.getElementsByTagName("td")[2].lastChild; + pbar.className = groupfail?"failure":"success"; + pbar.style.width = parseInt(p*100)+"%"; + gn.getElementsByTagName("td")[3].innerHTML = parseInt(p*10000)/100+"%"; + } + } + this._groupTotalTime += elapsed; + this.debug((success ? "PASSED" : "FAILED"), "test:", fixture.name, elapsed, 'ms'); + }; + + doh._registerUrl = function(group, url, timeout, type, dohArgs){ + group= group || url; + this._registerTest(group, { + name: url, + setUp: function(){ + doh.currentGroupName = group; + doh.currentGroup = this; + doh.currentUrl = url; + doh.dohArgs = dohArgs; + this.d = new doh.Deferred(); + doh.currentTestDeferred = this.d; + doh.showTestPage(); + byId("testBody").src = url; + }, + timeout: timeout||10000, // 10s + // timeout: timeout||1000, // 10s + runTest: function(){ + // FIXME: implement calling into the url's groups here!! + return this.d; + }, + tearDown: function(){ + doh.currentGroupName = null; + doh.currentGroup = null; + doh.currentTestDeferred = null; + doh.currentUrl = null; + // this.d.errback(false); + // byId("testBody").src = "about:blank"; + doh.showLogPage(); + } + }, type); + }; + + // + // Utility code for runner.html + // + // var isSafari = navigator.appVersion.indexOf("Safari") >= 0; + var tabzidx = 1; + var _showTab = function(toShow, toHide){ + // FIXME: I don't like hiding things this way. + var i; + for(i = 0; i < toHide.length; i++){ + var node = byId(toHide[i]); + if(node){ + node.style.display="none"; + } + } + toShow = byId(toShow); + if(toShow){ + with(toShow.style){ + display = ""; + zIndex = ++tabzidx; + } + } + } + + doh.showTestPage = function(){ + _showTab("testBody", ["logBody", "perfTestsBody"]); + } + + doh.showLogPage = function(){ + _showTab("logBody", ["testBody", "perfTestsBody"]); + } + + doh.showPerfTestsPage = function(){ + _showTab("perfTestsBody", ["testBody", "logBody"]); + } + + var runAll = true; + doh.toggleRunAll = function(){ + // would be easier w/ query...sigh + runAll = !runAll; + if(!byId("testList")){ return; } + var tb = byId("testList").tBodies[0]; + var inputs = tb.getElementsByTagName("input"); + var x=0; var tn; + while((tn=inputs[x++])){ + tn.checked = runAll; + doh._groups[tn.group].skip = (!runAll); + } + } + + var listHeightTimer = null; + var setListHeight = function(){ + if(listHeightTimer){ + clearTimeout(listHeightTimer); + } + var tl = byId("testList"); + if(!tl){ return; } + listHeightTimer = setTimeout(function(){ + tl.style.display = "none"; + tl.style.display = ""; + + }, 10); + } + + _addOnEvt("resize", setListHeight); + _addOnEvt("load", setListHeight); + _addOnEvt("load", function(){ + if(loaded){ return; } + loaded = true; + groupTemplate = byId("groupTemplate"); + if(!groupTemplate){ + // make sure we've got an ammenable DOM structure + return; + } + groupTemplate.parentNode.removeChild(groupTemplate); + groupTemplate.style.display = ""; + testTemplate = byId("testTemplate"); + testTemplate.parentNode.removeChild(testTemplate); + testTemplate.style.display = ""; + doh._updateTestList(); + }); + + _addOnEvt("load", + function(){ + // let robot code run if it gets to this first + var __onEnd = doh._onEnd; + doh._onEnd = function(){ + __onEnd.apply(doh, arguments); + if(doh._failureCount == 0){ + doh.debug("WOOHOO!!"); + _playSound("woohoo"); + }else{ + console.debug("doh._failureCount:", doh._failureCount); + } + if(byId("play")){ + toggleRunning(); + } + } + if(!byId("play")){ + // make sure we've got an amenable DOM structure + return; + } + var isRunning = false; + var toggleRunning = function(){ + // ugg, this would be so much better w/ dojo.query() + if(isRunning){ + byId("play").style.display = byId("pausedMsg").style.display = ""; + byId("playingMsg").style.display = byId("pause").style.display = "none"; + isRunning = false; + }else{ + byId("play").style.display = byId("pausedMsg").style.display = "none"; + byId("playingMsg").style.display = byId("pause").style.display = ""; + isRunning = true; + } + } + doh.run = (function(oldRun){ + return function(){ + if(!doh._currentGroup){ + toggleRunning(); + } + return oldRun.apply(doh, arguments); + } + })(doh.run); + var btns = byId("toggleButtons").getElementsByTagName("span"); + var node; var idx=0; + while((node=btns[idx++])){ + node.onclick = toggleRunning; + } + + //Performance report generating functions! + doh._dojoPlotPerfResults = function(div, name, dataArray) { + var median = doh.median(dataArray); + var medarray = []; + + var i; + for(i = 0; i < dataArray.length; i++){ + medarray.push(median); + } + + var data = { + label: "name", + items: [ + {name: name, trials: dataArray}, + {name: "Median", trials: medarray} + ] + }; + var ifs = new dojo.data.ItemFileReadStore({data: data}); + + var min = Math.floor(doh.min(dataArray)); + var max = Math.ceil(doh.max(dataArray)); + var step = (max - min)/10; + + //Lets try to pad out the bottom and top a bit + //Then recalc the step. + if(min > 0){ + min = min - step; + if(min < 0){ + min = 0; + } + min = Math.floor(min); + } + if(max > 0){ + max = max + step; + max = Math.ceil(max); + } + step = (max - min)/10; + + var chart = new dojox.charting.DataChart(div, { + type: dojox.charting.plot2d.Lines, + displayRange:dataArray.length, + xaxis: {min: 1, max: dataArray.length, majorTickStep: Math.ceil((dataArray.length - 1)/10), htmlLabels: false}, + yaxis: {min: min, max: max, majorTickStep: step, vertical: true, htmlLabels: false} + }); + chart.setStore(ifs, {name:"*"}, "trials"); + }; + + } + ); + }else{ + // we're in an iframe environment. Time to mix it up a bit. + + _doh = window.parent.doh; + var _thisGroup = _doh.currentGroupName; + var _thisUrl = _doh.currentUrl; + if(_thisGroup){ + doh._onEnd = function(){ + _doh._errorCount += doh._errorCount; + _doh._failureCount += doh._failureCount; + _doh._testCount += doh._testCount; + // should we be really adding raw group counts? + //_doh._groupCount += doh._groupCount; + _doh.currentTestDeferred.callback(true); + }; + doh._testRegistered = function(group, fixture){ + fixture.name = _thisUrl+"::"+arguments[0]+"::"+fixture.name; + _doh._updateTestList(_thisGroup, fixture); + }; + doh.debug = doh.hitch(_doh, "debug"); + doh.error = doh.hitch(_doh, "error"); + doh.registerUrl = doh.hitch(_doh, "registerUrl"); + doh._testStarted = function(group, fixture){ + _doh._testStarted(_thisGroup, fixture); + }; + doh._testFinished = function(g, f, s){ + _doh._testFinished(_thisGroup, f, s); + + //Okay, there may be performance info we need to filter back + //to the parent, so do that here. + if(doh.perfTestResults){ + try{ + gName = g.toString(); + var localFName = f.name; + while(localFName.indexOf("::") >= 0){ + localFName = localFName.substring(localFName.indexOf("::") + 2, localFName.length); + } + if(!_doh.perfTestResults){ + _doh.perfTestResults = {}; + } + if(!_doh.perfTestResults[gName]){ + _doh.perfTestResults[gName] = {}; + } + _doh.perfTestResults[gName][f.name] = doh.perfTestResults[gName][localFName]; + }catch (e){ + doh.debug(e); + } + } + }; + doh._groupStarted = function(g){ + if(!this._setParent){ + _doh._curTestCount = this._testCount; + _doh._curGroupCount = this._groupCount; + this._setParent = true; + } + }; + doh._report = function(){ + }; + } + } + return doh; +}); diff --git a/js/dojo-release-1.7.2-src/util/doh/_nodeRunner.js b/js/dojo-release-1.7.2-src/util/doh/_nodeRunner.js new file mode 100644 index 0000000..827db47 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/_nodeRunner.js @@ -0,0 +1,32 @@ +define(["doh/runner", "require"], function(doh, require) { + doh.debug= console.log; + doh.error= console.log; + + // Override the doh._report method to make it quit with an + // appropriate exit code in case of test failures. + var oldReport = doh._report; + doh._report = function(){ + oldReport.apply(doh, arguments); + if(this._failureCount > 0 || this._errorCount > 0){ + process.exit(1); + } + }; + + console.log("\n"+doh._line); + console.log("The Dojo Unit Test Harness, $Rev: 23869 $"); + console.log("Copyright (c) 2011, The Dojo Foundation, All Rights Reserved"); + console.log("Running with node.js"); + for (var tests= [], args=doh.config["commandLineArgs"], i= 0, arg; i, + // i.e. path-to-util/doh/runner.html?paths=my/from/path,my/to/path;my/from/path2,my/to/path2 + {}, + + dohPlugins = + // Semicolon separated list of files to load before the tests. + // Idea is to override aspects of DOH for reporting purposes. + "", + + breakOnError = + // boolean; instructs doh to call the debugger upon a test failures; this can be helpful when + // trying to isolate exactly where the test failed + false, + + async = + // boolean; config require.asyc==true before loading boot; this will have the effect of making + // version 1.7+ dojo bootstrap/loader operating in async mode + false, + + sandbox = + // boolean; use a loader configuration that sandboxes the dojo and dojox objects used by doh + false, + + trim= function(text){ + if(text instanceof Array){ + for (var result= [], i= 0; i"':\(\)]/g, ""); // replace() to avoid XSS attack + //Avoid URLs that use the same protocol but on other domains, for security reasons. + if (value.indexOf("//") === 0 || value.indexOf("\\\\") === 0) { + throw "Insupported URL"; + } + switch(name){ + // Note: + // * dojoUrl is deprecated, and is a synonym for boot + // * testUrl is deprecated, and is a synonym for test + // * testModule is deprecated, and is a synonym for test (dots are automatically replaced with slashes) + // * registerModulePath is deprecated, and is a synonym for paths + case "boot": + case "dojoUrl": + boot= trim(value.split(",")); + break; + + case "test": + case "testUrl": + test= trim(value.split(",")); + break; + + case "testModule": + test= trim(value.replace(/\./g, "/").split(",")); + break; + + // registerModulePath is deprecated; use "paths" + case "registerModulePath": + case "paths": + for(var path, modules = value.split(";"), i= 0; i tbody > tr'); + for(var i=0; i 0 || this._errorCount > 0){ + quit(1); + } + }; + + print("\n"+doh._line); + print("The Dojo Unit Test Harness, $Rev: 23869 $"); + print("Copyright (c) 2011, The Dojo Foundation, All Rights Reserved"); + for (var tests= [], args= doh.config["commandLineArgs"], i= 0, arg; i + + + The Dojo Unit Test Harness, $Rev: 25266 $ + + + + + + + + + + + +
                                                                      +
                                                                      +
                                                                      
                                                                      +							
                                                                      +
                                                                      + + +
                                                                      + + + + diff --git a/js/dojo-release-1.7.2-src/util/doh/package.json b/js/dojo-release-1.7.2-src/util/doh/package.json new file mode 100644 index 0000000..1662064 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/package.json @@ -0,0 +1,23 @@ +{ + "name": "doh", + "version":"1.7.0dev", + "directories": { + "lib": "." + }, + "main": "main", + "description": "DOH is a unit test framework developed by the Dojo Toolkit Community.", + "licenses": [ + { + "type": "AFLv2.1", + "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L43" + }, + { + "type": "BSD", + "url": "http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L13" + } + ], + "bugs": "http://bugs.dojotoolkit.org/", + "keywords": ["JavaScript", "Dojo", "Toolkit", "DOH"], + "homepage": "http://dojotoolkit.org/", + "dojoBuild": "doh.profile.js" +} diff --git a/js/dojo-release-1.7.2-src/util/doh/plugins/README.txt b/js/dojo-release-1.7.2-src/util/doh/plugins/README.txt new file mode 100644 index 0000000..ced8cfe --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/plugins/README.txt @@ -0,0 +1,7 @@ +doh/plugins - plugins to configure and extend the DOH runner + +These are loaded after the test runner and test url, but before the runner begins. This provides an opportunity to wrap and monkey-patch doh, the test harness and the test runner. + +Usage - e.g.: + util/doh/runner.html?testModule=tests.cache&dohPlugins=doh/plugins/hello + util/doh/runner.html?testModule=tests.cache&dohPlugins=doh/plugins/hello;doh/plugins/alwaysAudio diff --git a/js/dojo-release-1.7.2-src/util/doh/plugins/alwaysAudio.js b/js/dojo-release-1.7.2-src/util/doh/plugins/alwaysAudio.js new file mode 100644 index 0000000..2e7d676 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/plugins/alwaysAudio.js @@ -0,0 +1,11 @@ +define(["dojo", "doh/runner"], function(dojo, doh) { + + // Checks the 'sounds' checkbox in the browser test runner + // so we get Homer's feedback on the test run + dojo.ready(function(){ + var chkNode = dojo.byId("audio"); + if(chkNode) { + chkNode.checked=true; + } + }); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/doh/plugins/hello.js b/js/dojo-release-1.7.2-src/util/doh/plugins/hello.js new file mode 100644 index 0000000..a5e1f82 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/plugins/hello.js @@ -0,0 +1,15 @@ +define(["doh/runner"], function(doh) { + // summary: + // A sample DOH plugin showing wrapping/augmentation of DOH + // We extend the 'run' method to inject a 'hello world' kind of statement into the output + var origRun = doh.run, + registered = false; + + doh.run = function() { + if(!registered) { + doh.debug("doh.plugins.hello plugin says Hello!"); + registered = true; + } + origRun.apply(doh, arguments); + } +}); diff --git a/js/dojo-release-1.7.2-src/util/doh/robot.js b/js/dojo-release-1.7.2-src/util/doh/robot.js new file mode 100644 index 0000000..79f9937 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/robot.js @@ -0,0 +1,523 @@ +define(["doh/_browserRunner", "require"], function(doh, require){ + + // loading state + var _robot = null; + + var isSecure = (function(){ + var key = Math.random(); + return function(fcn){ + return key; + }; + })(); + + // no dojo available + // hijack doh.run instead + var _run = doh.run; + doh.run = function(){ + if(!doh.robot._runsemaphore.unlock()){ + // hijack doh._onEnd to clear the applet + // have to do it here because browserRunner sets it in onload in standalone case + var __onEnd = doh._onEnd; + doh._onEnd = function(){ + doh.robot.killRobot(); + doh._onEnd = __onEnd; + doh._onEnd(); + }; + doh.robot.startRobot(); + } + }; + + var cleanup=function(){ + doh.robot.killRobot(); + } + if(typeof dojo !== 'undefined'){ + dojo.addOnUnload(cleanup) + }else{ + window.onunload=cleanup; + } + var _keyPress = function(/*Number*/ charCode, /*Number*/ keyCode, /*Boolean*/ alt, /*Boolean*/ ctrl, /*Boolean*/ shift, /*Boolean*/ meta, /*Integer, optional*/ delay, /*Boolean*/ async){ + // internal function to type one non-modifier key + + // typecasting Numbers helps Sun's IE plugin lookup methods that take int arguments + + // otherwise JS will send a double and Sun will complain + _robot.typeKey(isSecure(), Number(charCode), Number(keyCode), Boolean(alt), Boolean(ctrl), Boolean(shift), Boolean(meta), Number(delay||0), Boolean(async||false)); + }; + + doh.robot = { + _robotLoaded: true, + _robotInitialized: false, + // prime the event pump for fast browsers like Google Chrome - it's so fast, it doesn't stop to listen for keypresses! + _spaceReceived: false, + _primePump: false, + + _killApplet: function(){}, // overridden by Robot.html + + killRobot: function(){ + if(doh.robot._robotLoaded){ + doh.robot._robotLoaded = false; + document.documentElement.className = document.documentElement.className.replace(/ ?dohRobot/, ""); + doh.robot._killApplet(); + } + }, + + // Robot init methods + + // controls access to doh.run + // basically, doh.run takes two calls to start the robot: + // one (or more after the robot loads) from the test page + // one from either the applet or an error condition + _runsemaphore: { + lock:["lock"], + unlock:function(){ + try{ + return this.lock.shift(); + }catch(e){ + return null; + } + } + }, + + startRobot: function(){ + //startRobot should be called to initialize the robot (after the java applet is loaded). + //one good place to do this is in a dojo.addOnLoad handler. This function will be called + //automatically if it is not already called when doh.run() is invoked. + if(!this._robotInitialized){ + this._robotInitialized = true; + // if the iframe requested the applet and got a 404, then _robot is obviously unavailable + // at least run the non-robot tests! + if(doh.robot._appletDead){ + doh.robot._onKeyboard(); + }else{ + _robot._callLoaded(isSecure()); + } + } + }, + _initRobot: function(r){ + // called from Robot + // Robot calls _initRobot in its startup sequence + + // Prevent rerunning the whole test (see #8958 for details) + if(doh._initRobotCalled){ return; } + doh._initRobotCalled = true; + + // add dohRobot class to HTML element so tests can use that in CSS rules if desired + document.documentElement.className += " dohRobot"; + window.scrollTo(0, 0); +// document.documentElement.scrollTop = document.documentElement.scrollLeft = 0; + _robot = r; + _robot._setKey(isSecure()); + // lazy load + doh.run(); + }, + + // some utility functions to help the iframe use private variables + _run: function(frame){ + frame.style.visibility = "hidden"; + doh.run = _run; + doh.run(); + }, + + _initKeyboard: function(){ + _robot._initKeyboard(isSecure()); + }, + + _initWheel: function(){ + _robot._initWheel(isSecure()); + }, + + _setDocumentBounds: function(docScreenX, docScreenY){ + var robotView = document.getElementById("dohrobotview"); + _robot.setDocumentBounds(isSecure(), Number(docScreenX), Number(docScreenY), Number(robotView.offsetLeft), Number(robotView.offsetTop)); + }, + + _notified: function(keystring){ + _robot._notified(isSecure(), keystring); + }, + + _time:0, + + // if the applet is 404 or cert is denied, this becomes true and kills tests + _appletDead:false, + + _assertRobot:function(){ + // make sure the applet is there and cert accepted + // otherwise, skip the test requesting the robot action + if(doh.robot._appletDead){ throw new Error('doh.robot not available; skipping test.'); } + }, + + _mouseMove: function(/*Number*/ x, /*Number*/ y, /*Boolean*/ absolute, /*Integer, optional*/ duration){ + if(absolute){ + var scroll = {y: (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0), + x: (window.pageXOffset || (window["dojo"]?dojo._fixIeBiDiScrollLeft(document.documentElement.scrollLeft):undefined) || document.body.scrollLeft || 0)}; + y -= scroll.y; + x -= scroll.x; + } + _robot.moveMouse(isSecure(), Number(x), Number(y), Number(0), Number(duration||100)); + }, + + // Main doh.robot API + sequence:function(/*Function*/ f, /*Integer, optional*/ delay, /*Integer, optional*/ duration){ + // summary: + // Defer an action by adding it to the robot's incrementally delayed queue of actions to execute. + // + // f: + // A function containing actions you want to defer. + // + // delay: + // Delay, in milliseconds, to wait before firing. + // The delay is a delta with respect to the previous automation call. + // For example, the following code ends after 600ms: + // doh.robot.mouseClick({left:true}, 100) // first call; wait 100ms + // doh.robot.typeKeys("dij", 500) // 500ms AFTER previous call; 600ms in all + // + // duration: + // Delay to wait after firing. + // + + var currentTime = (new Date()).getTime(); + if(currentTime > (doh.robot._time || 0)){ + doh.robot._time = currentTime; + } + doh.robot._time += delay || 1; + setTimeout(f, doh.robot._time - currentTime); + doh.robot._time += duration || 0; + }, + + typeKeys: function(/*String||Number*/ chars, /*Integer, optional*/ delay, /*Integer, optional*/ duration){ + // summary: + // Types a string of characters in order, or types a dojo.keys.* constant. + // + // description: + // Types a string of characters in order, or types a dojo.keys.* constant. + // Example: doh.robot.typeKeys("dijit.ed", 500); + // + // chars: + // String of characters to type, or a dojo.keys.* constant + // + // delay: + // Delay, in milliseconds, to wait before firing. + // The delay is a delta with respect to the previous automation call. + // For example, the following code ends after 600ms: + // doh.robot.mouseClick({left:true}, 100) // first call; wait 100ms + // doh.robot.typeKeys("dij", 500) // 500ms AFTER previous call; 600ms in all + // + // duration: + // Time, in milliseconds, to spend pressing all of the keys. + // The default is (string length)*50 ms. + // + + this._assertRobot(); + this.sequence(function(){ + var isNum = typeof(chars) == Number; + duration=duration||(isNum?50:chars.length*50); + if(isNum){ + _keyPress(chars, chars, false, false, false, false, 0); + }else if(chars.length){ + _keyPress(chars.charCodeAt(0), 0, false, false, false, false, 0); + for(var i = 1; i
                                                                      '+ + ''); +}); diff --git a/js/dojo-release-1.7.2-src/util/doh/robot/DOHRobot.jar b/js/dojo-release-1.7.2-src/util/doh/robot/DOHRobot.jar new file mode 100644 index 0000000..8d4479b Binary files /dev/null and b/js/dojo-release-1.7.2-src/util/doh/robot/DOHRobot.jar differ diff --git a/js/dojo-release-1.7.2-src/util/doh/robot/DOHRobot.java b/js/dojo-release-1.7.2-src/util/doh/robot/DOHRobot.java new file mode 100644 index 0000000..23daa41 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/robot/DOHRobot.java @@ -0,0 +1,1768 @@ +import java.security.*; +import java.applet.Applet; +import java.awt.*; +import java.util.*; +import java.util.concurrent.*; +import java.awt.event.*; +import netscape.javascript.*; +import java.io.*; +import java.lang.reflect.*; +import java.net.URL; +import java.awt.datatransfer.*; +import javax.swing.JOptionPane; +import javax.swing.JDialog; +import java.awt.image.*; + +public final class DOHRobot extends Applet{ + // order of execution: + // wait for user to trust applet + // load security manager to prevent Safari hang + // discover document root in screen coordinates + // discover keyboard capabilities + // tell doh to continue with the test + + // link to doh + // To invoke doh, call eval with window.eval("jsexp") + // Note that the "window" is an iframe! + // You might need to break out of the iframe with an intermediate function + // in the parent window. + private JSObject window = null; + + // java.awt.Robot + // drives the test + // you need to sign the applet JAR for this to work + private Robot robot = null; + + // In order to preserve the execution order of Robot commands, + // we have to serialize commands by having them join() the previous one. + // Otherwise, if you run doh.robot.typeKeys("dijit"), you frequently get something + // like "diijt" + //private static Thread previousThread = null; + + private static ExecutorService threadPool = null; + + // Keyboard discovery. + // At init, the Robot types keys into a textbox and JavaScript tells the + // Robot what it got back. + // charMap maps characters to the KeyEvent that generates the character on + // the user's machine. + // charMap uses the Java 1.4.2 (lack of) template syntax for wider + // compatibility. + private static HashMap charMap = null; + // Java key constants to iterate over + // not all are available on all machines! + private Vector vkKeys = null; + // some state variables + private boolean shift = false; + private boolean altgraph = false; + private boolean ctrl = false; + private boolean alt = false; + private boolean meta = false; + private boolean numlockDisabled = false; + private long timingError = 0; // how much time the last robot call was off by + // shake hands with JavaScript the first keypess to wake up FF2/Mac + private boolean jsready = false; + private String keystring = ""; + + // Firebug gets a little too curious about our applet for its own good + // setting firebugIgnore to true ensures Firebug doesn't break the applet + public boolean firebugIgnore = true; + + private static String os=System.getProperty("os.name").toUpperCase(); + private static Toolkit toolkit=Toolkit.getDefaultToolkit(); + + private SecurityManager securitymanager; + private double key = -1; + + // The screen x,y of the document upper left corner. + // We only set it once so people are less likely to take it over. + private boolean inited = false; + private int docScreenX = -100; + private int docScreenY = -100; + private int docScreenXMax; + private int docScreenYMax; + private Point margin = null; + private boolean mouseSecurity = false; + + // The last reported mouse x,y. + // If this is different from the real one, something's up. + private int lastMouseX; + private int lastMouseY; + public int dir=1; + + // save a pointer to doh.robot for fast access + JSObject dohrobot = null; + + // trackingImage to visually track robot down + private BufferedImage trackingImage; + Point locationOnScreen = null; + + // java.awt.Applet methods + public void stop(){ + window = null; + dohrobot = null; + // only secure code run once + if(key != -2){ + // prevent further execution of secure functions + key = -2; + // Java calls this when you close the window. + // It plays nice and restores the old security manager. + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + if(threadPool!=null){ + threadPool.shutdownNow(); + } + log("Stop"); + securitymanager.checkTopLevelWindow(null); + log("Security manager reset"); + return null; + } + }); + } + } + + final private class onvisible extends ComponentAdapter{ + public void componentShown(ComponentEvent evt){ + // sets the security manager to fix a bug in liveconnect in Safari on Mac + if(key != -1){ return; } + Thread thread = new Thread(){ + public void run(){ + log("Document root: ~"+applet().getLocationOnScreen().toString()); + window = (JSObject) JSObject.getWindow(applet()); + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + log("> init Robot"); + try{ + SecurityManager oldsecurity = System.getSecurityManager(); + boolean needsSecurityManager = applet().getParameter("needsSecurityManager").equals("true"); + log("Socket connections managed? "+needsSecurityManager); + try{ + securitymanager = oldsecurity; + securitymanager.checkTopLevelWindow(null); + // xdomain + if(charMap == null){ + if(!confirm("DOH has detected that the current Web page is attempting to access DOH,\n"+ + "but belongs to a different domain than the one you agreed to let DOH automate.\n"+ + "If you did not intend to start a new DOH test by visiting this Web page,\n"+ + "press Cancel now and leave the Web page.\n"+ + "Otherwise, press OK to trust this domain to automate DOH tests.")){ + stop(); + return null; + } + } + log("Found old security manager"); + }catch(Exception e){ + log("Making new security manager"); + securitymanager = new RobotSecurityManager(needsSecurityManager, + oldsecurity); + securitymanager.checkTopLevelWindow(null); + System.setSecurityManager(securitymanager); + } + }catch(Exception e){ + log("Error calling _init_: "+e.getMessage()); + key = -2; + e.printStackTrace(); + } + log("< init Robot"); + return null; + } + }); + if(key == -2){ + // applet not trusted + // start the test without it + window.eval("doh.robot._appletDead=true;doh.run();"); + }else{ + // now that the applet has really started, let doh know it's ok to use it + log("_initRobot"); + try{ + dohrobot = (JSObject) window.eval("doh.robot"); + dohrobot.call("_initRobot", new Object[]{ applet() }); + }catch(Exception e){ + e.printStackTrace(); + } + } + } + }; + threadPool.execute(thread); + } + } + + public void init(){ + threadPool = Executors.newFixedThreadPool(1); + // ensure isShowing = true + addComponentListener(new onvisible()); + ProfilingThread jitProfile=new ProfilingThread (); + jitProfile.startProfiling(); + jitProfile.endProfiling(); + trackingImage=new BufferedImage(3,3,BufferedImage.TYPE_INT_RGB); + trackingImage.setRGB(0, 0, 3, 3, new int[]{new Color(255,174,201).getRGB(),new Color(255,127,39).getRGB(),new Color(0,0,0).getRGB(),new Color(237,28,36).getRGB(),new Color(63,72,204).getRGB(),new Color(34,177,76).getRGB(),new Color(181,230,29).getRGB(),new Color(255,255,255).getRGB(),new Color(200,191,231).getRGB()}, 0, 3); + } + + // loading functions + public void _setKey(double key){ + if(key == -1){ + return; + }else if(this.key == -1){ + this.key = key; + } + } + + protected Point getDesktopMousePosition() throws Exception{ + Class mouseInfoClass; + Class pointerInfoClass; + mouseInfoClass = Class.forName("java.awt.MouseInfo"); + pointerInfoClass = Class.forName("java.awt.PointerInfo"); + Method getPointerInfo = mouseInfoClass.getMethod("getPointerInfo", new Class[0]); + Method getLocation = pointerInfoClass.getMethod("getLocation", new Class[0]); + Object pointer=null; + try{ + pointer = getPointerInfo.invoke(pointerInfoClass,new Object[0]); + }catch(java.lang.reflect.InvocationTargetException e){ + e.getTargetException().printStackTrace(); + } + return (Point)(getLocation.invoke(pointer,new Object[0])); + } + + public Point getLocationOnScreen(){ + return locationOnScreen==null? super.getLocationOnScreen(): locationOnScreen; + } + + private boolean mouseSecure() throws Exception{ + // Use MouseInfo to ensure that mouse is inside browser. + // Only works in Java 1.5, but the DOHRobot must compile for 1.4. + if(!mouseSecurity){ return true; } + Point mousePosition=null; + try{ + mousePosition=getDesktopMousePosition(); + }catch(Exception e){ + return true; + } + return mousePosition.x >= docScreenX + && mousePosition.x <= docScreenXMax + && mousePosition.y >= docScreenY + && mousePosition.y <= docScreenYMax; + } + + private boolean isSecure(double key){ + boolean result = this.key != -1 && this.key != -2 && this.key == key; + try{ + result=result&&mouseSecure(); + }catch(Exception e){ + e.printStackTrace(); + result=false; + } + if(!result&&this.key!=-2){ + this.key=-2; + window.eval("doh.robot._appletDead=true;"); + log("User aborted test; mouse moved off of browser"); + alert("User aborted test; mouse moved off of browser."); + } + log("Key secure: " + result); + return result; + } + + public void _callLoaded(final double sec){ + log("> _callLoaded Robot"); + Runnable thread = new Runnable(){ + public void run(){ + if(!isSecure(sec)){ + return; + } + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + Point p = getLocationOnScreen(); + if(os.indexOf("MAC") != -1){ + // Work around stupid Apple OS X bug affecting Safari 5.1 and FF4. + // Seems to have to do with the plugin they compile with rather than the jvm itself because Safari5.0 and FF3.6 still work. + p = new Point(); + int screen=0; + int minscreen=-1; + int mindifference=Integer.MAX_VALUE; + GraphicsDevice[] screens=GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); + try{ + for(screen=0; screen=mindifference){ + break scanImage; + } + } + } + if(difference setDocumentBounds"); + if(!isSecure(sec)) + return; + if(!inited){ + inited = true; + this.lastMouseX = this.docScreenX = x; + this.lastMouseY = this.docScreenY = y; + this.docScreenXMax = x + w; + this.docScreenYMax = y + h; + // compute difference between position and browser edge for future reference + this.margin = getLocationOnScreen(); + this.margin.x -= x; + this.margin.y -= y; + mouseSecurity=true; + } + log("< setDocumentBounds"); + } + + // keyboard discovery code + private void _mapKey(char charCode, int keyindex, boolean shift, + boolean altgraph){ + log("_mapKey: " + charCode); + // if character is not in map, add it + if(!charMap.containsKey(new Integer(charCode))){ + log("Notified: " + (char) charCode); + KeyEvent event = new KeyEvent(applet(), 0, 0, + (shift ? KeyEvent.SHIFT_MASK : 0) + + (altgraph ? KeyEvent.ALT_GRAPH_MASK : 0), + ((Integer) vkKeys.get(keyindex)).intValue(), + (char) charCode); + charMap.put(new Integer(charCode), event); + log("Mapped char " + (char) charCode + " to KeyEvent " + event); + if(((char) charCode) >= 'a' && ((char) charCode) <= 'z'){ + // put shifted version of a-z in automatically + int uppercharCode = (int) Character + .toUpperCase((char) charCode); + event = new KeyEvent(applet(), 0, 0, KeyEvent.SHIFT_MASK + + (altgraph ? KeyEvent.ALT_GRAPH_MASK : 0), + ((Integer) vkKeys.get(keyindex)).intValue(), + (char) uppercharCode); + charMap.put(new Integer(uppercharCode), event); + log("Mapped char " + (char) uppercharCode + " to KeyEvent " + + event); + } + } + } + + public void _notified(final double sec, final String chars){ + // decouple from JavaScript; thread join could hang it + Runnable thread = new Runnable(){ + public void run(){ + if(!isSecure(sec)) + return; + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + keystring += chars; + if(altgraph && !shift){ + shift = false; + // Set robot auto delay now that FF/Mac inited all of the keys. + // Good for DND. + robot.setAutoDelay(1); + try{ + log(keystring); + int index = 0; + for (int i = 0; (i < vkKeys.size()) + && (index < keystring.length()); i++){ + char c = keystring.charAt(index++); + _mapKey(c, i, false, false); + } + for (int i = 0; (i < vkKeys.size()) + && (index < keystring.length()); i++){ + char c = keystring.charAt(index++); + _mapKey(c, i, true, false); + } + for (int i = 0; (i < vkKeys.size()) + && (index < keystring.length()); i++){ + char c = keystring.charAt(index++); + _mapKey(c, i, false, true); + } + // notify DOH that the applet finished init + dohrobot.call("_onKeyboard", new Object[]{}); + }catch(Exception e){ + e.printStackTrace(); + } + return null; + }else if(!shift){ + shift = true; + }else{ + shift = false; + altgraph = true; + } + pressNext(); + // } + return null; + } + }); + } + }; + threadPool.execute(thread); + } + + private void pressNext(){ + Runnable thread = new Runnable(){ + public void run(){ + // first time, press shift (have to do it here instead of + // _notified to avoid IllegalThreadStateException on Mac) + log("starting up, " + shift + " " + altgraph); + if(shift){ + robot.keyPress(KeyEvent.VK_SHIFT); + log("Pressing shift"); + } + try{ + if(altgraph){ + robot.keyPress(KeyEvent.VK_ALT_GRAPH); + log("Pressing alt graph"); + } + }catch(Exception e){ + log("Error pressing alt graph"); + e.printStackTrace(); + _notified(key, ""); + return; + } + dohrobot.call("_nextKeyGroup", new Object[]{ new Integer(vkKeys.size()) }); + for (int keyindex = 0; keyindex < vkKeys.size(); keyindex++){ + try{ + log("Press " + + ((Integer) vkKeys.get(keyindex)).intValue()); + robot.keyPress(((Integer) vkKeys.get(keyindex)) + .intValue()); + log("Release " + + ((Integer) vkKeys.get(keyindex)).intValue()); + robot.keyRelease(((Integer) vkKeys.get(keyindex)) + .intValue()); + if(altgraph && (keyindex == (vkKeys.size() - 1))){ + robot.keyRelease(KeyEvent.VK_ALT_GRAPH); + log("Releasing alt graph"); + } + if(shift && (keyindex == (vkKeys.size() - 1))){ + robot.keyRelease(KeyEvent.VK_SHIFT); + log("Releasing shift"); + } + }catch(Exception e){ + } + try{ + log("Press space"); + robot.keyPress(KeyEvent.VK_SPACE); + log("Release space"); + robot.keyRelease(KeyEvent.VK_SPACE); + }catch(Exception e){ + e.printStackTrace(); + } + } + } + }; + threadPool.execute(thread); + } + + public void _initWheel(final double sec){ + log("> initWheel"); + Runnable thread=new Runnable(){ + public void run(){ + if(!isSecure(sec)) + return; + Thread.yield(); + // calibrate the mouse wheel now that textbox is focused + dir=1; + // fixed in 10.6.2 update 1 and 10.5.8 update 6: + // http://developer.apple.com/mac/library/releasenotes/CrossPlatform/JavaSnowLeopardUpdate1LeopardUpdate6RN/ResolvedIssues/ResolvedIssues.html + // Radar #6193836 + if(os.indexOf("MAC") != -1){ + // see if the version is greater than 10.5.8 + String[] sfixedVersion = "10.5.8".split("\\."); + int[] fixedVersion = new int[3]; + String[] sthisVersion = System.getProperty("os.version").split("\\."); + int[] thisVersion = new int[3]; + for(int i=0; i<3; i++){ + fixedVersion[i]=Integer.valueOf(sfixedVersion[i]).intValue(); + thisVersion[i]=Integer.valueOf(sthisVersion[i]).intValue(); + }; + // 10.5.8, the fix level, should count as fixed + // on the other hand, 10.6.0 and 10.6.1 should not + boolean isFixed = !System.getProperty("os.version").equals("10.6.0")&&!System.getProperty("os.version").equals("10.6.1"); + for(int i=0; ifixedVersion[i]){ + // definitely newer at this point + isFixed = true; + break; + }else if(thisVersion[i] initKeyboard"); + // javascript entry point to discover the keyboard + if(charMap != null){ + dohrobot.call("_onKeyboard", new Object[]{}); + return; + } + Runnable thread = new Runnable(){ + public void run(){ + if(!isSecure(sec)) + return; + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + charMap = new HashMap(); + KeyEvent event = new KeyEvent(applet(), 0, 0, 0, + KeyEvent.VK_SPACE, ' '); + charMap.put(new Integer(32), event); + try{ + // a-zA-Z0-9 + 29 others + vkKeys = new Vector(); + for (char i = 'a'; i <= 'z'; i++){ + vkKeys.add(new Integer(KeyEvent.class.getField( + "VK_" + Character.toUpperCase((char) i)) + .getInt(null))); + } + for (char i = '0'; i <= '9'; i++){ + vkKeys.add(new Integer(KeyEvent.class.getField( + "VK_" + Character.toUpperCase((char) i)) + .getInt(null))); + } + int[] mykeys = new int[]{ KeyEvent.VK_COMMA, + KeyEvent.VK_MINUS, KeyEvent.VK_PERIOD, + KeyEvent.VK_SLASH, KeyEvent.VK_SEMICOLON, + KeyEvent.VK_LEFT_PARENTHESIS, + KeyEvent.VK_NUMBER_SIGN, KeyEvent.VK_PLUS, + KeyEvent.VK_RIGHT_PARENTHESIS, + KeyEvent.VK_UNDERSCORE, + KeyEvent.VK_EXCLAMATION_MARK, KeyEvent.VK_DOLLAR, + KeyEvent.VK_CIRCUMFLEX, KeyEvent.VK_AMPERSAND, + KeyEvent.VK_ASTERISK, KeyEvent.VK_QUOTEDBL, + KeyEvent.VK_LESS, KeyEvent.VK_GREATER, + KeyEvent.VK_BRACELEFT, KeyEvent.VK_BRACERIGHT, + KeyEvent.VK_COLON, KeyEvent.VK_BACK_QUOTE, + KeyEvent.VK_QUOTE, KeyEvent.VK_OPEN_BRACKET, + KeyEvent.VK_BACK_SLASH, KeyEvent.VK_CLOSE_BRACKET, + KeyEvent.VK_EQUALS }; + for (int i = 0; i < mykeys.length; i++){ + vkKeys.add(new Integer(mykeys[i])); + } + }catch(Exception e){ + e.printStackTrace(); + } + robot.setAutoDelay(1); + // prime the event pump for Google Chome - so fast it doesn't even stop to listen for key events! + // send spaces until JS says to stop + int count=0; + boolean waitingOnSpace = true; + do{ + log("Pressed space"); + robot.keyPress(KeyEvent.VK_SPACE); + robot.keyRelease(KeyEvent.VK_SPACE); + count++; + waitingOnSpace = ((Boolean)window.eval("doh.robot._spaceReceived")).equals(Boolean.FALSE); + log("JS still waiting on a space? "+waitingOnSpace); + }while(count<500&&waitingOnSpace); + robot.keyPress(KeyEvent.VK_ENTER); + robot.keyRelease(KeyEvent.VK_ENTER); + robot.setAutoDelay(0); + log("< initKeyboard"); + pressNext(); + return null; + } + }); + } + }; + threadPool.execute(thread); + } + + public void typeKey(double sec, final int charCode, final int keyCode, + final boolean alt, final boolean ctrl, final boolean shift, final boolean meta, + final int delay, final boolean async){ + if(!isSecure(sec)) + return; + // called by doh.robot._keyPress + // see it for details + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + try{ + log("> typeKey Robot " + charCode + ", " + keyCode + ", " + async); + KeyPressThread thread = new KeyPressThread(charCode, + keyCode, alt, ctrl, shift, meta, delay); + if(async){ + Thread asyncthread=new Thread(thread); + asyncthread.start(); + }else{ + threadPool.execute(thread); + } + log("< typeKey Robot"); + }catch(Exception e){ + log("Error calling typeKey"); + e.printStackTrace(); + } + return null; + } + }); + } + + public void upKey(double sec, final int charCode, final int keyCode, final int delay){ + // called by doh.robot.keyDown + // see it for details + // a nice name like "keyUp" is reserved in Java + if(!isSecure(sec)) + return; + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + log("> upKey Robot " + charCode + ", " + keyCode); + KeyUpThread thread = new KeyUpThread(charCode, keyCode, delay); + threadPool.execute(thread); + log("< upKey Robot"); + return null; + } + }); + } + + public void downKey(double sec, final int charCode, final int keyCode, final int delay){ + // called by doh.robot.keyUp + // see it for details + // a nice name like "keyDown" is reserved in Java + if(!isSecure(sec)) + return; + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + log("> downKey Robot " + charCode + ", " + keyCode); + KeyDownThread thread = new KeyDownThread(charCode, keyCode, delay); + threadPool.execute(thread); + log("< downKey Robot"); + return null; + } + }); + } + + public void pressMouse(double sec, final boolean left, + final boolean middle, final boolean right, final int delay){ + if(!isSecure(sec)) + return; + // called by doh.robot.mousePress + // see it for details + // a nice name like "mousePress" is reserved in Java + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + log("> mousePress Robot " + left + ", " + middle + ", " + right); + MousePressThread thread = new MousePressThread( + (left ? InputEvent.BUTTON1_MASK : 0) + + (middle ? InputEvent.BUTTON2_MASK : 0) + + (right ? InputEvent.BUTTON3_MASK : 0), delay); + threadPool.execute(thread); + log("< mousePress Robot"); + return null; + } + }); + } + + public void releaseMouse(double sec, final boolean left, + final boolean middle, final boolean right, final int delay){ + if(!isSecure(sec)) + return; + // called by doh.robot.mouseRelease + // see it for details + // a nice name like "mouseRelease" is reserved in Java + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + log("> mouseRelease Robot " + left + ", " + middle + ", " + + right); + MouseReleaseThread thread = new MouseReleaseThread( + (left ? InputEvent.BUTTON1_MASK : 0) + + (middle ? InputEvent.BUTTON2_MASK : 0) + + (right ? InputEvent.BUTTON3_MASK : 0), delay + ); + threadPool.execute(thread); + log("< mouseRelease Robot"); + return null; + } + }); + } + + protected boolean destinationInView(int x, int y){ + return !(x > docScreenXMax || y > docScreenYMax || x < docScreenX || y < docScreenY); + } + + public void moveMouse(double sec, final int x1, final int y1, final int d, final int duration){ + // called by doh.robot.mouseMove + // see it for details + // a nice name like "mouseMove" is reserved in Java + if(!isSecure(sec)) + return; + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + int x = x1 + docScreenX; + int y = y1 + docScreenY; + if(!destinationInView(x,y)){ + // TODO: try to scroll view + log("Request to mouseMove denied"); + return null; + } + int delay = d; + log("> mouseMove Robot " + x + ", " + y); + MouseMoveThread thread = new MouseMoveThread(x, y, delay, + duration); + threadPool.execute(thread); + log("< mouseMove Robot"); + return null; + } + }); + } + + public void wheelMouse(double sec, final int amount, final int delay, final int duration){ + // called by doh.robot.mouseWheel + // see it for details + if(!isSecure(sec)) + return; + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + MouseWheelThread thread = new MouseWheelThread(amount, delay, duration); + threadPool.execute(thread); + return null; + } + }); + } + + private int getVKCode(int charCode, int keyCode){ + int keyboardCode = 0; + if(charCode >= 32){ + // if it is printable, then it lives in our hashmap + KeyEvent event = (KeyEvent) charMap.get(new Integer(charCode)); + keyboardCode = event.getKeyCode(); + } + else{ + switch (keyCode){ + case 13: + keyboardCode = KeyEvent.VK_ENTER; + break; + case 8: + keyboardCode = KeyEvent.VK_BACK_SPACE; + break; + case 25:// shift tab for Safari + case 9: + keyboardCode = KeyEvent.VK_TAB; + break; + case 12: + keyboardCode = KeyEvent.VK_CLEAR; + break; + case 16: + keyboardCode = KeyEvent.VK_SHIFT; + break; + case 17: + keyboardCode = KeyEvent.VK_CONTROL; + break; + case 18: + keyboardCode = KeyEvent.VK_ALT; + break; + case 63250: + case 19: + keyboardCode = KeyEvent.VK_PAUSE; + break; + case 20: + keyboardCode = KeyEvent.VK_CAPS_LOCK; + break; + case 27: + keyboardCode = KeyEvent.VK_ESCAPE; + break; + case 32: + log("it's a space"); + keyboardCode = KeyEvent.VK_SPACE; + break; + case 63276: + case 33: + keyboardCode = KeyEvent.VK_PAGE_UP; + break; + case 63277: + case 34: + keyboardCode = KeyEvent.VK_PAGE_DOWN; + break; + case 63275: + case 35: + keyboardCode = KeyEvent.VK_END; + break; + case 63273: + case 36: + keyboardCode = KeyEvent.VK_HOME; + break; + + /** + * Constant for the left arrow key. + */ + case 63234: + case 37: + keyboardCode = KeyEvent.VK_LEFT; + break; + + /** + * Constant for the up arrow key. + */ + case 63232: + case 38: + keyboardCode = KeyEvent.VK_UP; + break; + + /** + * Constant for the right arrow key. + */ + case 63235: + case 39: + keyboardCode = KeyEvent.VK_RIGHT; + break; + + /** + * Constant for the down arrow key. + */ + case 63233: + case 40: + keyboardCode = KeyEvent.VK_DOWN; + break; + case 63272: + case 46: + keyboardCode = KeyEvent.VK_DELETE; + break; + case 224: + case 91: + keyboardCode = KeyEvent.VK_META; + break; + case 63289: + case 144: + keyboardCode = KeyEvent.VK_NUM_LOCK; + break; + case 63249: + case 145: + keyboardCode = KeyEvent.VK_SCROLL_LOCK; + break; + + /** Constant for the F1 function key. */ + case 63236: + case 112: + keyboardCode = KeyEvent.VK_F1; + break; + + /** Constant for the F2 function key. */ + case 63237: + case 113: + keyboardCode = KeyEvent.VK_F2; + break; + + /** Constant for the F3 function key. */ + case 63238: + case 114: + keyboardCode = KeyEvent.VK_F3; + break; + + /** Constant for the F4 function key. */ + case 63239: + case 115: + keyboardCode = KeyEvent.VK_F4; + break; + + /** Constant for the F5 function key. */ + case 63240: + case 116: + keyboardCode = KeyEvent.VK_F5; + break; + + /** Constant for the F6 function key. */ + case 63241: + case 117: + keyboardCode = KeyEvent.VK_F6; + break; + + /** Constant for the F7 function key. */ + case 63242: + case 118: + keyboardCode = KeyEvent.VK_F7; + break; + + /** Constant for the F8 function key. */ + case 63243: + case 119: + keyboardCode = KeyEvent.VK_F8; + break; + + /** Constant for the F9 function key. */ + case 63244: + case 120: + keyboardCode = KeyEvent.VK_F9; + break; + + /** Constant for the F10 function key. */ + case 63245: + case 121: + keyboardCode = KeyEvent.VK_F10; + break; + + /** Constant for the F11 function key. */ + case 63246: + case 122: + keyboardCode = KeyEvent.VK_F11; + break; + + /** Constant for the F12 function key. */ + case 63247: + case 123: + keyboardCode = KeyEvent.VK_F12; + break; + + /** + * Constant for the F13 function key. + * + * @since 1.2 + */ + /* + * F13 - F24 are used on IBM 3270 keyboard; break; use + * random range for constants. + */ + case 124: + keyboardCode = KeyEvent.VK_F13; + break; + + /** + * Constant for the F14 function key. + * + * @since 1.2 + */ + case 125: + keyboardCode = KeyEvent.VK_F14; + break; + + /** + * Constant for the F15 function key. + * + * @since 1.2 + */ + case 126: + keyboardCode = KeyEvent.VK_F15; + break; + + case 63302: + case 45: + keyboardCode = KeyEvent.VK_INSERT; + break; + case 47: + keyboardCode = KeyEvent.VK_HELP; + break; + default: + keyboardCode = keyCode; + + } + } + log("Attempting to type " + (char) charCode + ":" + + charCode + " " + keyCode); + log("Converted to " + keyboardCode); + return keyboardCode; + } + + private boolean isUnsafe(int keyboardCode){ + // run through exemption list + log("ctrl: "+ctrl+", alt: "+alt+", shift: "+shift); + if(((ctrl || alt) && keyboardCode == KeyEvent.VK_ESCAPE) + || (alt && keyboardCode == KeyEvent.VK_TAB) + || (ctrl && alt && keyboardCode == KeyEvent.VK_DELETE)){ + log("You are not allowed to press this key combination!"); + return true; + // bugged keys cases go next + }else{ + log("Safe to press."); + return false; + } + } + + private boolean disableNumlock(int vk, boolean shift){ + boolean result = !numlockDisabled&&shift + &&os.indexOf("WINDOWS")!=-1 + &&toolkit.getLockingKeyState(KeyEvent.VK_NUM_LOCK) // only works on Windows + &&( + // any numpad buttons are suspect + vk==KeyEvent.VK_LEFT + ||vk==KeyEvent.VK_UP + ||vk==KeyEvent.VK_RIGHT + ||vk==KeyEvent.VK_DOWN + ||vk==KeyEvent.VK_HOME + ||vk==KeyEvent.VK_END + ||vk==KeyEvent.VK_PAGE_UP + ||vk==KeyEvent.VK_PAGE_DOWN + ); + log("disable numlock: "+result); + return result; + } + + private void _typeKey(final int cCode, final int kCode, final boolean a, + final boolean c, final boolean s, final boolean m){ + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + int charCode = cCode; + int keyCode = kCode; + boolean alt = a; + boolean ctrl = c; + boolean shift = s; + boolean meta = m; + boolean altgraph = false; + log("> _typeKey Robot " + charCode + ", " + keyCode); + try{ + int keyboardCode=getVKCode(charCode, keyCode); + if(charCode >= 32){ + // if it is printable, then it lives in our hashmap + KeyEvent event = (KeyEvent) charMap.get(new Integer(charCode)); + // see if we need to press shift to generate this + // character + if(!shift){ + shift = event.isShiftDown(); + } + altgraph = event.isAltGraphDown(); + keyboardCode = event.getKeyCode(); + } + + // Java bug: on Windows, shift+arrow key unpresses shift when numlock is on. + // See: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4838497 + boolean disableNumlock=disableNumlock(keyboardCode,shift||applet().shift); + // run through exemption list + if(!isUnsafe(keyboardCode)){ + if(shift){ + log("Pressing shift"); + robot.keyPress(KeyEvent.VK_SHIFT); + } + if(alt){ + log("Pressing alt"); + robot.keyPress(KeyEvent.VK_ALT); + } + if(altgraph){ + log("Pressing altgraph"); + robot.keyPress(KeyEvent.VK_ALT_GRAPH); + } + if(ctrl){ + log("Pressing ctrl"); + robot.keyPress(KeyEvent.VK_CONTROL); + } + if(meta){ + log("Pressing meta"); + robot.keyPress(KeyEvent.VK_META); + } + if(disableNumlock){ + robot.keyPress(KeyEvent.VK_NUM_LOCK); + robot.keyRelease(KeyEvent.VK_NUM_LOCK); + numlockDisabled=true; + }else if(numlockDisabled&&!(applet().shift||shift)){ + // only turn it back on when the user is finished pressing shifted arrow keys + robot.keyPress(KeyEvent.VK_NUM_LOCK); + robot.keyRelease(KeyEvent.VK_NUM_LOCK); + numlockDisabled=false; + } + if(keyboardCode != KeyEvent.VK_SHIFT + && keyboardCode != KeyEvent.VK_ALT + && keyboardCode != KeyEvent.VK_ALT_GRAPH + && keyboardCode != KeyEvent.VK_CONTROL + && keyboardCode != KeyEvent.VK_META){ + try{ + robot.keyPress(keyboardCode); + robot.keyRelease(keyboardCode); + }catch(Exception e){ + log("Error while actually typing a key"); + e.printStackTrace(); + } + + } + if(ctrl){ + robot.keyRelease(KeyEvent.VK_CONTROL); + ctrl = false; + } + if(alt){ + robot.keyRelease(KeyEvent.VK_ALT); + alt = false; + } + if(altgraph){ + robot.keyRelease(KeyEvent.VK_ALT_GRAPH); + altgraph = false; + } + if(shift){ + log("Releasing shift"); + robot.keyRelease(KeyEvent.VK_SHIFT); + shift = false; + } + if(meta){ + log("Releasing meta"); + robot.keyRelease(KeyEvent.VK_META); + meta = false; + } + } + }catch(Exception e){ + log("Error in _typeKey"); + e.printStackTrace(); + } + log("< _typeKey Robot"); + return null; + } + }); + } + + public boolean hasFocus(){ + // sanity check to make sure the robot isn't clicking outside the window when the browser is minimized for instance + try{ + boolean result= ((Boolean) window + .eval("var result=false;if(window.parent.document.hasFocus){result=window.parent.document.hasFocus();}else{result=true;}result;")) + .booleanValue(); + if(!result){ + // can happen for instance if the browser minimized itself, or if there is another applet on the page. + // recompute window,mouse positions to see if it is still safe to continue. + log("Document focus lost. Recomputing window position"); + Point p = getLocationOnScreen(); + log("Old root: "+docScreenX+" "+docScreenY); + docScreenX=p.x-margin.x; + docScreenY=p.y-margin.y; + log("New root: "+docScreenX+" "+docScreenY); + docScreenXMax=docScreenX+((Integer)window.eval("window.parent.document.getElementById('dohrobotview').offsetLeft")).intValue(); + docScreenYMax=docScreenY+((Integer)window.eval("window.parent.document.getElementById('dohrobotview').offsetTop")).intValue(); + // bring browser to the front again. + // if the window just blurred and moved, key events will again be directed to the window. + // if an applet stole focus, focus will still be directed to the applet; the test script will ultimately have to click something to get back to a normal state. + window.eval("window.parent.focus();"); + // recompute mouse position + return isSecure(this.key); + }else{ + return result; + } + }catch(Exception e){ + // runs even after you close the window! + return false; + } + } + + // Threads for common Robot tasks + // (so as not to tie up the browser rendering thread!) + // declared inside so they have private access to the robot + // we do *not* want to expose that guy! + private class ProfilingThread implements Runnable{ + protected long delay=0; + protected long duration=0; + private long start; + private long oldDelay; + protected void startProfiling(){ + // error correct + if(delay>0){ + oldDelay=delay; + delay-=timingError+(duration>0?timingError:0); + log("Timing error: "+timingError); + if(delay<1){ + if(duration>0){ duration=Math.max(duration+delay,1); } + delay=1; + } + start=System.currentTimeMillis(); + }else{ + // assumption is that only doh.robot.typeKeys actually uses delay/needs this level of error correcting + timingError=0; + } + } + protected void endProfiling(){ + // adaptively correct timingError + if(delay>0){ + long end=System.currentTimeMillis(); + timingError+=(end-start)-oldDelay; + } + } + public void run(){} + } + + final private class KeyPressThread extends ProfilingThread{ + private int charCode; + private int keyCode; + private boolean alt; + private boolean ctrl; + private boolean shift; + private boolean meta; + + public KeyPressThread(int charCode, int keyCode, boolean alt, + boolean ctrl, boolean shift, boolean meta, int delay){ + log("KeyPressThread constructor " + charCode + ", " + keyCode); + this.charCode = charCode; + this.keyCode = keyCode; + this.alt = alt; + this.ctrl = ctrl; + this.shift = shift; + this.meta = meta; + this.delay = delay; + } + + public void run(){ + try{ + startProfiling(); + // in different order so async works + while(!hasFocus()){ + Thread.sleep(1000); + } + Thread.sleep(delay); + log("> run KeyPressThread"); + + _typeKey(charCode, keyCode, alt, ctrl, shift, meta); + + endProfiling(); + }catch(Exception e){ + log("Bad parameters passed to _typeKey"); + e.printStackTrace(); + } + log("< run KeyPressThread"); + + } + } + + final private class KeyDownThread extends ProfilingThread{ + private int charCode; + private int keyCode; + + public KeyDownThread(int charCode, int keyCode, int delay){ + log("KeyDownThread constructor " + charCode + ", " + keyCode); + this.charCode = charCode; + this.keyCode = keyCode; + this.delay = delay; + } + + public void run(){ + try{ + Thread.sleep(delay); + log("> run KeyDownThread"); + while(!hasFocus()){ + Thread.sleep(1000); + } + int vkCode=getVKCode(charCode, keyCode); + if(charCode >= 32){ + // if it is printable, then it lives in our hashmap + KeyEvent event = (KeyEvent) charMap.get(new Integer(charCode)); + // see if we need to press shift to generate this + // character + if(event.isShiftDown()){ + robot.keyPress(KeyEvent.VK_SHIFT); + shift=true; + } + if(event.isAltGraphDown()){ + robot.keyPress(KeyEvent.VK_ALT_GRAPH); + altgraph=true; + } + }else{ + if(vkCode==KeyEvent.VK_ALT){ + alt=true; + }else if(vkCode==KeyEvent.VK_CONTROL){ + ctrl=true; + }else if(vkCode==KeyEvent.VK_SHIFT){ + shift=true; + }else if(vkCode==KeyEvent.VK_ALT_GRAPH){ + altgraph=true; + }else if(vkCode==KeyEvent.VK_META){ + meta=true; + }else if(disableNumlock(vkCode,shift)){ + robot.keyPress(KeyEvent.VK_NUM_LOCK); + robot.keyRelease(KeyEvent.VK_NUM_LOCK); + numlockDisabled=true; + } + } + if(!isUnsafe(vkCode)){ + robot.keyPress(vkCode); + } + }catch(Exception e){ + log("Bad parameters passed to downKey"); + e.printStackTrace(); + } + log("< run KeyDownThread"); + + } + } + + final private class KeyUpThread extends ProfilingThread{ + private int charCode; + private int keyCode; + + public KeyUpThread(int charCode, int keyCode, int delay){ + log("KeyUpThread constructor " + charCode + ", " + keyCode); + this.charCode = charCode; + this.keyCode = keyCode; + this.delay = delay; + } + + public void run(){ + try{ + Thread.sleep(delay); + log("> run KeyUpThread"); + while(!hasFocus()){ + Thread.sleep(1000); + } + int vkCode=getVKCode(charCode, keyCode); + if(charCode >= 32){ + // if it is printable, then it lives in our hashmap + KeyEvent event = (KeyEvent) charMap.get(new Integer(charCode)); + // see if we need to press shift to generate this + // character + if(event.isShiftDown()){ + robot.keyRelease(KeyEvent.VK_SHIFT); + shift=false; + } + if(event.isAltGraphDown()){ + robot.keyRelease(KeyEvent.VK_ALT_GRAPH); + altgraph=false; + } + }else{ + if(vkCode==KeyEvent.VK_ALT){ + alt=false; + }else if(vkCode==KeyEvent.VK_CONTROL){ + ctrl=false; + }else if(vkCode==KeyEvent.VK_SHIFT){ + shift=false; + if(numlockDisabled){ + robot.keyPress(KeyEvent.VK_NUM_LOCK); + robot.keyRelease(KeyEvent.VK_NUM_LOCK); + numlockDisabled=false; + } + }else if(vkCode==KeyEvent.VK_ALT_GRAPH){ + altgraph=false; + }else if(vkCode==KeyEvent.VK_META){ + meta=false; + } + } + robot.keyRelease(vkCode); + }catch(Exception e){ + log("Bad parameters passed to upKey"); + e.printStackTrace(); + } + log("< run KeyUpThread"); + + } + } + + final private class MousePressThread extends ProfilingThread{ + private int mask; + + public MousePressThread(int mask, int delay){ + this.mask = mask; + this.delay = delay; + } + + public void run(){ + try{ + Thread.sleep(delay); + log("> run MousePressThread"); + while(!hasFocus()){ + Thread.sleep(1000); + } + robot.mousePress(mask); + robot.waitForIdle(); + }catch(Exception e){ + log("Bad parameters passed to mousePress"); + e.printStackTrace(); + } + log("< run MousePressThread"); + + } + } + + final private class MouseReleaseThread extends ProfilingThread{ + private int mask; + + public MouseReleaseThread(int mask, int delay){ + this.mask = mask; + this.delay = delay; + } + + public void run(){ + try{ + Thread.sleep(delay); + log("> run MouseReleaseThread "); + while(!hasFocus()){ + Thread.sleep(1000); + } + robot.mouseRelease(mask); + robot.waitForIdle(); + }catch(Exception e){ + log("Bad parameters passed to mouseRelease"); + e.printStackTrace(); + } + + log("< run MouseReleaseThread "); + + } + } + + final private class MouseMoveThread extends ProfilingThread{ + private int x; + private int y; + + public MouseMoveThread(int x, int y, int delay, int duration){ + this.x = x; + this.y = y; + this.delay = delay; + this.duration = duration; + } + + public double easeInOutQuad(double t, double b, double c, double d){ + t /= d / 2; + if(t < 1) + return c / 2 * t * t + b; + t--; + return -c / 2 * (t * (t - 2) - 1) + b; + }; + + public void run(){ + try{ + Thread.sleep(delay); + log("> run MouseMoveThread " + x + ", " + y); + while(!hasFocus()){ + Thread.sleep(1000); + } + int x1 = lastMouseX; + int x2 = x; + int y1 = lastMouseY; + int y2 = y; + // shrink range by 1 px on both ends + // manually move this 1px to trip DND code + if(x1 != x2){ + int dx = x - lastMouseX; + if(dx > 0){ + x1 += 1; + x2 -= 1; + }else{ + x1 -= 1; + x2 += 1; + } + } + if(y1 != y2){ + int dy = y - lastMouseY; + if(dy > 0){ + y1 += 1; + y2 -= 1; + }else{ + y1 -= 1; + y2 += 1; + } + + } + // manual precision + robot.setAutoWaitForIdle(false); + int intermediateSteps = duration==1?0: // duration==1 -> user wants to jump the mouse + ((((int)Math.ceil(Math.log(duration+1)))|1)); // |1 to ensure an odd # of intermediate steps for sensible interpolation + // assumption: intermediateSteps will always be >=0 + int delay = (int)duration/(intermediateSteps+1); // +1 to include last move + // First mouse movement fires at t=0 to official last know position of the mouse. + robot.mouseMove(lastMouseX, lastMouseY); + long start,end; + + // Shift lastMouseX/Y in the direction of the movement for interpolating over the smaller interval. + lastMouseX=x1; + lastMouseY=y1; + // Now interpolate mouse movement from (lastMouseX=x1,lastMouseY=y1) to (x2,y2) + // precondition: the amount of time that has passed since the first mousemove is 0*delay. + // invariant: each time you end an iteration, after you increment t, the amount of time that has passed is t*delay + int timingError=0; + for (int t = 0; t < intermediateSteps; t++){ + start=new Date().getTime(); + Thread.sleep(delay); + x1 = (int) easeInOutQuad((double) t, (double) lastMouseX, + (double) x2 - lastMouseX, (double) intermediateSteps-1); + y1 = (int) easeInOutQuad((double) t, (double) lastMouseY, + (double) y2 - lastMouseY, (double) intermediateSteps-1); + //log("("+x1+","+y1+")"); + robot.mouseMove(x1, y1); + end=new Date().getTime(); + // distribute error among remaining steps + timingError=(((int)(end-start))-delay)/(intermediateSteps-t); + log("mouseMove timing error: "+timingError); + delay=Math.max(delay-(int)timingError,1); + } + // postconditions: + // t=intermediateSteps + // intermediateSteps*delay time has passed, + // time remaining = duration-intermediateSteps*delay = (steps+1)*delay-intermediateSteps*delay = delay + // You theoretically need 1 more delay for the whole duration to have passed. + // In practice, you want less than that due to roundoff errors in Java's clock granularity. + Thread.sleep(delay); + robot.mouseMove(x, y); + robot.setAutoWaitForIdle(true); + + //log("mouseMove statistics: duration= "+duration+" steps="+intermediateSteps+" delay="+delay); + //log("mouseMove discrepency: "+(date2-date-duration)+"ms"); + lastMouseX = x; + lastMouseY = y; + }catch(Exception e){ + log("Bad parameters passed to mouseMove"); + e.printStackTrace(); + } + + log("< run MouseMoveThread"); + + } + } + + final private class MouseWheelThread extends ProfilingThread{ + private int amount; + + public MouseWheelThread(int amount, int delay, int duration){ + this.amount = amount; + this.delay = delay; + this.duration = duration; + } + + public void run(){ + try{ + Thread.sleep(delay); + log("> run MouseWheelThread " + amount); + while(!hasFocus()){ + Thread.sleep(1000); + } + robot.setAutoDelay(Math.max((int)duration/Math.abs(amount),1)); + for(int i=0; i0?dir:-dir); + } + robot.setAutoDelay(1); + }catch(Exception e){ + log("Bad parameters passed to mouseWheel"); + e.printStackTrace(); + } + log("< run MouseWheelThread "); + } + } + + final private class RobotSecurityManager extends SecurityManager{ + // The applet's original security manager. + // There is a bug in some people's Safaris that causes Safari to + // basically hang on liveconnect calls. + // Our security manager fixes it. + + private boolean isActive = false; + private boolean needsSecurityManager = false; + private SecurityManager oldsecurity = null; + + public RobotSecurityManager(boolean needsSecurityManager, SecurityManager oldsecurity){ + this.needsSecurityManager = needsSecurityManager; + this.oldsecurity = oldsecurity; + } + + public boolean checkTopLevelWindow(Object window){ + // If our users temporarily accept our cert for a session, + // then use the same session to browse to a malicious website also using our applet, + // that website can automatically execute the applet. + // To resolve this issue, RobotSecurityManager overrides checkTopLevelWindow + // to check the JVM to see if there are other instances of the applet running on different domains. + // If there are, it prompts the user to confirm that they want to run the applet before continuing. + + // null is not supposed to be allowed + // so we allow it to distinguish our security manager. + if(window == null){ + isActive = !isActive; + log("Active is now " + isActive); + } + return window == null ? true : oldsecurity + .checkTopLevelWindow(window); + } + + public void checkPermission(Permission p){ + // liveconnect SocketPermission resolve takes + // FOREVER (like 6 seconds) in Safari 3 + // Java does like 50 of these on the first JS call + // 6*50=300 seconds! + if(isActive && needsSecurityManager + && java.net.SocketPermission.class.isInstance(p) + && p.getActions().matches(".*resolve.*")){ + throw new SecurityException( + "DOH: liveconnect resolve locks up Safari 3. Denying resolve request."); + }else if(p.equals(new java.awt.AWTPermission("watchMousePointer"))){ + // enable robot to watch mouse + }else{ + oldsecurity.checkPermission(p); + } + } + + public void checkPermission(Permission perm, Object context){ + checkPermission(perm); + } + } + + public void setClipboardText(double sec, final String data) { + if(!isSecure(sec)) + return; + // called by doh.robot.setClipboard + // see it for details + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + StringSelection ss = new StringSelection(data); + getSystemClipboard().setContents(ss, ss); + return null; + } + }); + } + + public void setClipboardHtml(double sec, final String data) { + if(!isSecure(sec)) + return; + // called by doh.robot.setClipboard when format=='text/html' + // see it for details + AccessController.doPrivileged(new PrivilegedAction(){ + public Object run(){ + String mimeType = "text/html;class=java.lang.String";//type + "; charset=" + charset;// + "; class=" + transferType; + TextTransferable transferable = new TextTransferable(mimeType, data); + getSystemClipboard().setContents(transferable, transferable); + return null; + } + }); + } + private static java.awt.datatransfer.Clipboard getSystemClipboard() { + return toolkit.getSystemClipboard(); + } + + private static class TextTransferable implements Transferable, ClipboardOwner { + private String data; + private static ArrayList htmlFlavors = new ArrayList(); + + static{ + try{ + htmlFlavors.add(new DataFlavor("text/plain;charset=UTF-8;class=java.lang.String")); + htmlFlavors.add(new DataFlavor("text/html;charset=UTF-8;class=java.lang.String")); + }catch(ClassNotFoundException ex){ + ex.printStackTrace(); + } + } + + + public TextTransferable(String mimeType, String data){ + this.data = data; + } + + public DataFlavor[] getTransferDataFlavors(){ + return (DataFlavor[]) htmlFlavors.toArray(new DataFlavor[htmlFlavors.size()]); + } + + public boolean isDataFlavorSupported(DataFlavor flavor){ + return htmlFlavors.contains(flavor); + } + + public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException{ + if (String.class.equals(flavor.getRepresentationClass())){ + return data; + } + + throw new UnsupportedFlavorException(flavor); + + } + + public void lostOwnership(java.awt.datatransfer.Clipboard clipboard, Transferable contents){ + data = null; + } + } +} diff --git a/js/dojo-release-1.7.2-src/util/doh/robot/README b/js/dojo-release-1.7.2-src/util/doh/robot/README new file mode 100644 index 0000000..79bd158 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/robot/README @@ -0,0 +1,19 @@ +Notes on generating JAR file: + +PC +-- +1. Download JDK 1.4. +2. create key file called "key" (using keytool and jarsigner?) +3. compilerobot.bat + +MAC +--- +I used the version of java preinstalled and the mac and it seemed to work. + +1. create key file: + + $ keytool -genkey -alias dojo + +2. Run compilerobot.sh (creates DOHRobot.jar): + + $ sh compilerobot.sh diff --git a/js/dojo-release-1.7.2-src/util/doh/robot/compilerobot.bat b/js/dojo-release-1.7.2-src/util/doh/robot/compilerobot.bat new file mode 100644 index 0000000..276bcfc --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/robot/compilerobot.bat @@ -0,0 +1,9 @@ +setlocal +set JDK14_HOME=C:\Program Files\IBM\Java60 +del DOHRobot*.class +"%JDK14_HOME%\bin\javac" -source 1.4 -target 1.4 -classpath "%JDK14_HOME%\jre\lib\plugin.jar" DOHRobot.java +del DOHRobot.jar +"%JDK14_HOME%\bin\jar" cvf DOHRobot.jar DOHRobot*.class META-INF +"%JDK14_HOME%\bin\jarsigner" -keystore ./dohrobot DOHRobot.jar dojo + + + The Dojo Unit Test Harness, $Rev: 25896 $ + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      +

                                                                      D.O.H.: The Dojo Objective Harness

                                                                      + + + + + +
                                                                      + + + + + + Stopped + + + + + + +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + +
                                                                        + + testtime
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      
                                                                      +							
                                                                      +
                                                                      + + +
                                                                      +
                                                                      + + + + diff --git a/js/dojo-release-1.7.2-src/util/doh/runner.js b/js/dojo-release-1.7.2-src/util/doh/runner.js new file mode 100644 index 0000000..e26420d --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/runner.js @@ -0,0 +1,1539 @@ +define("doh/runner", ["dojo"], function(dojo) { +var doh= dojo.mixin({}, dojo); + +// intentionally define global tests and global doh symbols +// TODO: scrub these globals from tests and remove this pollution +tests = doh; +this.doh= doh; + +doh._line = "------------------------------------------------------------"; + +doh.debug = function(){ + // summary: + // takes any number of arguments and sends them to whatever debugging + // or logging facility is available in this environment + + // YOUR TEST RUNNER NEEDS TO IMPLEMENT THIS +}; + +doh.error = function(){ + // summary: + // logging method to be used to send Error objects, so that + // whatever debugging or logging facility you have can decide to treat it + // as an Error object and show additional information - such as stack trace + + // YOUR TEST RUNNER NEEDS TO IMPLEMENT THIS +}; + +doh._AssertFailure = function(msg, hint){ + if (doh.breakOnError) { + debugger; + } + if(!(this instanceof doh._AssertFailure)){ + return new doh._AssertFailure(msg, hint); + } + if(hint){ + msg = (new String(msg||""))+" with hint: \n\t\t"+(new String(hint)+"\n"); + } + this.message = new String(msg||""); + return this; +}; +doh._AssertFailure.prototype = new Error(); +doh._AssertFailure.prototype.constructor = doh._AssertFailure; +doh._AssertFailure.prototype.name = "doh._AssertFailure"; + +doh.Deferred = function(canceller){ + this.chain = []; + this.id = this._nextId(); + this.fired = -1; + this.paused = 0; + this.results = [null, null]; + this.canceller = canceller; + this.silentlyCancelled = false; +}; + +doh.extend(doh.Deferred, { + getTestErrback: function(cb, scope){ + // summary: Replaces outer getTextCallback's in nested situations to avoid multiple callback(true)'s + var _this = this; + return function(){ + try{ + cb.apply(scope||doh.global||_this, arguments); + }catch(e){ + _this.errback(e); + } + }; + }, + + getTestCallback: function(cb, scope){ + var _this = this; + return function(){ + try{ + cb.apply(scope||doh.global||_this, arguments); + }catch(e){ + _this.errback(e); + return; + } + _this.callback(true); + }; + }, + + getFunctionFromArgs: function(){ + //TODO: this looks like dojo.hitch? remove and replace? + var a = arguments; + if((a[0])&&(!a[1])){ + if(typeof a[0] == "function"){ + return a[0]; + }else if(typeof a[0] == "string"){ + return doh.global[a[0]]; + } + }else if((a[0])&&(a[1])){ + return doh.hitch(a[0], a[1]); + } + return null; + }, + + makeCalled: function() { + var deferred = new doh.Deferred(); + deferred.callback(); + return deferred; + }, + + _nextId: (function(){ + var n = 1; + return function(){ return n++; }; + })(), + + cancel: function(){ + if(this.fired == -1){ + if (this.canceller){ + this.canceller(this); + }else{ + this.silentlyCancelled = true; + } + if(this.fired == -1){ + this.errback(new Error("Deferred(unfired)")); + } + }else if(this.fired == 0 && this.results[0] && this.results[0].cancel){ + this.results[0].cancel(); + } + }, + + _pause: function(){ + this.paused++; + }, + + _unpause: function(){ + this.paused--; + if ((this.paused == 0) && (this.fired >= 0)) { + this._fire(); + } + }, + + _continue: function(res){ + this._resback(res); + this._unpause(); + }, + + _resback: function(res){ + this.fired = ((res instanceof Error) ? 1 : 0); + this.results[this.fired] = res; + this._fire(); + }, + + _check: function(){ + if(this.fired != -1){ + if(!this.silentlyCancelled){ + throw new Error("already called!"); + } + this.silentlyCancelled = false; + return; + } + }, + + callback: function(res){ + this._check(); + this._resback(res); + }, + + errback: function(res){ + this._check(); + if(!(res instanceof Error)){ + res = new Error(res); + } + this._resback(res); + }, + + addBoth: function(cb, cbfn){ + //TODO: this looks like dojo.hitch? remove and replace? + var enclosed = this.getFunctionFromArgs(cb, cbfn); + if(arguments.length > 2){ + enclosed = doh.hitch(null, enclosed, arguments, 2); + } + return this.addCallbacks(enclosed, enclosed); + }, + + addCallback: function(cb, cbfn){ + //TODO: this looks like dojo.hitch? remove and replace? + var enclosed = this.getFunctionFromArgs(cb, cbfn); + if(arguments.length > 2){ + enclosed = doh.hitch(null, enclosed, arguments, 2); + } + return this.addCallbacks(enclosed, null); + }, + + addErrback: function(cb, cbfn){ + //TODO: this looks like dojo.hitch? remove and replace? + var enclosed = this.getFunctionFromArgs(cb, cbfn); + if(arguments.length > 2){ + enclosed = doh.hitch(null, enclosed, arguments, 2); + } + return this.addCallbacks(null, enclosed); + }, + + addCallbacks: function(cb, eb){ + this.chain.push([cb, eb]); + if(this.fired >= 0){ + this._fire(); + } + return this; + }, + + _fire: function(){ + var chain = this.chain; + var fired = this.fired; + var res = this.results[fired]; + var self = this; + var cb = null; + while(chain.length > 0 && this.paused == 0){ + // Array + var pair = chain.shift(); + var f = pair[fired]; + if(f == null){ + continue; + } + try { + res = f(res); + fired = ((res instanceof Error) ? 1 : 0); + if(res && res.addCallback){ + cb = function(res){ + self._continue(res); + }; + this._pause(); + } + }catch(err){ + fired = 1; + res = err; + } + } + this.fired = fired; + this.results[fired] = res; + if((cb)&&(this.paused)){ + res.addBoth(cb); + } + } +}); + +// +// State Keeping and Reporting +// + +doh._testCount = 0; +doh._groupCount = 0; +doh._errorCount = 0; +doh._failureCount = 0; +doh._currentGroup = null; +doh._currentTest = null; +doh._paused = true; + +doh._init = function(){ + this._currentGroup = null; + this._currentTest = null; + this._errorCount = 0; + this._failureCount = 0; + this.debug(this._testCount, "tests to run in", this._groupCount, "groups"); +}; + +doh._groups = {}; + +// +// Test Types +// +doh._testTypes= {}; + +doh.registerTestType= function(name, initProc){ + // summary: + // Adds a test type and associates a function used to initialize each test of the given type + // name: String + // The name of the type. + // initProc: Function + // Type specific test initializer; called after the test object is created. + doh._testTypes[name]= initProc; +}; + +doh.registerTestType("perf", function(group, tObj, type){ + //Augment the test with some specific options to make it identifiable as a + //particular type of test so it can be executed properly. + if(type === "perf" || tObj.testType === "perf"){ + tObj.testType = "perf"; + + //Build an object on the root DOH class to contain all the test results. + //Cache it on the test object for quick lookup later for results storage. + if(!doh.perfTestResults){ + doh.perfTestResults = {}; + doh.perfTestResults[group] = {}; + } + if(!doh.perfTestResults[group]){ + doh.perfTestResults[group] = {}; + } + if(!doh.perfTestResults[group][tObj.name]){ + doh.perfTestResults[group][tObj.name] = {}; + } + tObj.results = doh.perfTestResults[group][tObj.name]; + + //If it's not set, then set the trial duration; default to 100ms. + if(!("trialDuration" in tObj)){ + tObj.trialDuration = 100; + } + + //If it's not set, then set the delay between trial runs to 100ms + //default to 100ms to allow for GC and to make IE happy. + if(!("trialDelay" in tObj)){ + tObj.trialDelay = 100; + } + + //If it's not set, then set number of times a trial is run to 10. + if(!("trialIterations" in tObj)){ + tObj.trialIterations = 10; + } + } +}); + + +// +// Test Registration +// +var + createFixture= function(group, test, type){ + // test is a function, string, or fixture object + var tObj = test; + if(dojo.isString(test)){ + tObj = { + name: test.replace("/\s/g", "_"), // FIXME: bad escapement + runTest: new Function("t", test) + }; + }else if(dojo.isFunction(test)){ + // if we didn't get a fixture, wrap the function + tObj = { "runTest": test }; + if(test["name"]){ + tObj.name = test.name; + }else{ + try{ + var fStr = "function "; + var ts = tObj.runTest+""; + if(0 <= ts.indexOf(fStr)){ + tObj.name = ts.split(fStr)[1].split("(", 1)[0]; + } + // doh.debug(tObj.runTest.toSource()); + }catch(e){ + } + } + // FIXME: try harder to get the test name here + }else if(dojo.isString(tObj.runTest)){ + tObj.runTest= new Function("t", tObj.runTest); + } + if(!tObj.runTest){ + return 0; + } + + // if the test is designated as a particular type, do type-specific initialization + var testType= doh._testTypes[type] || doh._testTypes[tObj.testType]; + if(testType){ + testType(group, tObj); + } + + // add the test to this group + doh._groups[group].push(tObj); + doh._testCount++; + doh._testRegistered(group, tObj); + + return tObj; + }, + + dumpArg= function(arg){ + if(dojo.isString(arg)){ + return "string(" + arg + ")"; + } else { + return typeof arg; + } + }, + + illegalRegister= function(args, testArgPosition){ + var hint= "\targuments: "; + for(var i= 0; i<5; i++){ + hint+= dumpArg(args[i]); + }; + doh.debug("ERROR:"); + if(testArgPosition){ + doh.debug("\tillegal arguments provided to dojo.register; the test at argument " + testArgPosition + " wasn't a test."); + }else{ + doh.debug("\tillegal arguments provided to dojo.register"); + } + doh.debug(hint); + }, + + isUrl= function(arg){ + return dojo.isString(arg) && (/^url\:/.test(arg) || !/\(/.test(arg)); + }; + + +doh._testRegistered = function(group, fixture){ + // slot to be filled in +}; + +doh._groupStarted = function(group){ + // slot to be filled in +}; + +doh._groupFinished = function(group, success){ + // slot to be filled in +}; + +doh._testStarted = function(group, fixture){ + // slot to be filled in +}; + +doh._testFinished = function(group, fixture, success){ + // slot to be filled in +}; + +doh._registerTest = function(group, test, type){ + // summary: + // add the provided test function or fixture object to the specified + // test group. + // group: String + // string name of the group to add the test to + // test: Function||String||Object + // TODOC + // type: String? + // An identifier denoting the type of testing that the test performs, such + // as a performance test. If falsy, defaults to test.type. + + // get, possibly create, the group object + + var groupObj= this._groups[group]; + if(!groupObj){ + this._groupCount++; + groupObj= this._groups[group] = []; + groupObj.inFlight = 0; + } + if(!test){ + return groupObj; + } + + // create the test fixture + var tObj; + if(dojo.isFunction(test) || dojo.isString(test) || "runTest" in test){ + return createFixture(group, test, type) ? groupObj : 0; + }else if(dojo.isArray(test)){ + // a vector of tests... + for(var i= 0; i 1) ? "s" : "")+" to run"); + doh._groupStarted(groupName); +}; + +doh._handleFailure = function(groupName, fixture, e){ + // this.debug("FAILED test:", fixture.name); + // mostly borrowed from JUM + this._groups[groupName].failures++; + var out = ""; + if(e instanceof this._AssertFailure){ + this._failureCount++; + if(e["fileName"]){ out += e.fileName + ':'; } + if(e["lineNumber"]){ out += e.lineNumber + ' '; } + out += e.message; + this.error("\t_AssertFailure:", out); + }else{ + this._errorCount++; + this.error("\tError:", e.message || e); // printing Error on IE9 (and other browsers?) yields "[Object Error]" + } + if(fixture.runTest["toSource"]){ + var ss = fixture.runTest.toSource(); + this.debug("\tERROR IN:\n\t\t", ss); + }else{ + this.debug("\tERROR IN:\n\t\t", fixture.runTest); + } + if(e.rhinoException){ + e.rhinoException.printStackTrace(); + }else if(e.javaException){ + e.javaException.printStackTrace(); + } +}; + +doh._runPerfFixture = function(/*String*/groupName, /*Object*/fixture){ + // summary: + // This function handles how to execute a 'performance' test + // which is different from a straight UT style test. These + // will often do numerous iterations of the same operation and + // gather execution statistics about it, like max, min, average, + // etc. It makes use of the already in place DOH deferred test + // handling since it is a good idea to put a pause inbetween each + // iteration to allow for GC cleanup and the like. + // + // groupName: + // The test group that contains this performance test. + // fixture: + // The performance test fixture. + var tg = this._groups[groupName]; + fixture.startTime = new Date(); + + //Perf tests always need to act in an async manner as there is a + //number of iterations to flow through. + var def = new doh.Deferred(); + tg.inFlight++; + def.groupName = groupName; + def.fixture = fixture; + + def.addErrback(function(err){ + doh._handleFailure(groupName, fixture, err); + }); + + //Set up the finalizer. + var retEnd = function(){ + if(fixture["tearDown"]){ fixture.tearDown(doh); } + tg.inFlight--; + if((!tg.inFlight)&&(tg.iterated)){ + doh._groupFinished(groupName, !tg.failures); + } + doh._testFinished(groupName, fixture, def.results[0]); + if(doh._paused){ + doh.run(); + } + }; + + //Since these can take who knows how long, we don't want to timeout + //unless explicitly set + var timer; + var to = fixture.timeout; + if(to > 0) { + timer = setTimeout(function(){ + // ret.cancel(); + // retEnd(); + def.errback(new Error("test timeout in "+fixture.name.toString())); + }, to); + } + + //Set up the end calls to the test into the deferred we'll return. + def.addBoth(function(arg){ + if(timer){ + clearTimeout(timer); + } + retEnd(); + }); + + //Okay, now set up the timing loop for the actual test. + //This is down as an async type test where there is a delay + //between each execution to allow for GC time, etc, so the GC + //has less impact on the tests. + var res = fixture.results; + res.trials = []; + + //Try to figure out how many calls are needed to hit a particular threshold. + var itrDef = doh._calcTrialIterations(groupName, fixture); + itrDef.addErrback(function(err){ + fixture.endTime = new Date(); + def.errback(err); + }); + + //Blah, since tests can be deferred, the actual run has to be deferred until after + //we know how many iterations to run. This is just plain ugly. + itrDef.addCallback(function(iterations){ + if(iterations){ + var countdown = fixture.trialIterations; + doh.debug("TIMING TEST: [" + fixture.name + + "]\n\t\tITERATIONS PER TRIAL: " + + iterations + "\n\tTRIALS: " + + countdown); + + //Figure out how many times we want to run our 'trial'. + //Where each trial consists of 'iterations' of the test. + + var trialRunner = function() { + //Set up our function to execute a block of tests + var start = new Date(); + var tTimer = new doh.Deferred(); + var tCountdown = iterations; + + var tState = { + countdown: iterations + }; + var testRunner = function(state){ + while(state){ + try{ + state.countdown--; + if(state.countdown){ + var ret = fixture.runTest(doh); + if(ret && ret.addCallback){ + //Deferreds have to be handled async, + //otherwise we just keep looping. + var atState = { + countdown: state.countdown + }; + ret.addCallback(function(){ + testRunner(atState); + }); + ret.addErrback(function(err) { + doh._handleFailure(groupName, fixture, err); + fixture.endTime = new Date(); + def.errback(err); + }); + state = null; + } + }else{ + tTimer.callback(new Date()); + state = null; + } + }catch(err){ + fixture.endTime = new Date(); + tTimer.errback(err); + } + } + }; + tTimer.addCallback(function(end){ + //Figure out the results and try to factor out function call costs. + var tResults = { + trial: (fixture.trialIterations - countdown), + testIterations: iterations, + executionTime: (end.getTime() - start.getTime()), + average: (end.getTime() - start.getTime())/iterations + }; + res.trials.push(tResults); + doh.debug("\n\t\tTRIAL #: " + + tResults.trial + "\n\tTIME: " + + tResults.executionTime + "ms.\n\tAVG TEST TIME: " + + (tResults.executionTime/tResults.testIterations) + "ms."); + + //Okay, have we run all the trials yet? + countdown--; + if(countdown){ + setTimeout(trialRunner, fixture.trialDelay); + }else{ + //Okay, we're done, lets compute some final performance results. + var t = res.trials; + + + + //We're done. + fixture.endTime = new Date(); + def.callback(true); + } + }); + tTimer.addErrback(function(err){ + fixture.endTime = new Date(); + def.errback(err); + }); + testRunner(tState); + }; + trialRunner(); + } + }); + + //Set for a pause, returned the deferred. + if(def.fired < 0){ + doh.pause(); + } + return def; +}; + +doh._calcTrialIterations = function(/*String*/ groupName, /*Object*/ fixture){ + // summary: + // This function determines the rough number of iterations to + // use to reach a particular MS threshold. This returns a deferred + // since tests can theoretically by async. Async tests aren't going to + // give great perf #s, though. + // The callback is passed the # of iterations to hit the requested + // threshold. + // + // fixture: + // The test fixture we want to calculate iterations for. + var def = new doh.Deferred(); + var calibrate = function () { + var testFunc = doh.hitch(fixture, fixture.runTest); + + //Set the initial state. We have to do this as a loop instead + //of a recursive function. Otherwise, it blows the call stack + //on some browsers. + var iState = { + start: new Date(), + curIter: 0, + iterations: 5 + }; + var handleIteration = function(state){ + while(state){ + if(state.curIter < state.iterations){ + try{ + var ret = testFunc(doh); + if(ret && ret.addCallback){ + var aState = { + start: state.start, + curIter: state.curIter + 1, + iterations: state.iterations + }; + ret.addCallback(function(){ + handleIteration(aState); + }); + ret.addErrback(function(err) { + fixture.endTime = new Date(); + def.errback(err); + }); + state = null; + }else{ + state.curIter++; + } + }catch(err){ + fixture.endTime = new Date(); + def.errback(err); + return; + } + }else{ + var end = new Date(); + var totalTime = (end.getTime() - state.start.getTime()); + if(totalTime < fixture.trialDuration){ + var nState = { + iterations: state.iterations * 2, + curIter: 0 + }; + state = null; + setTimeout(function(){ + nState.start = new Date(); + handleIteration(nState); + }, 50); + }else{ + var itrs = state.iterations; + setTimeout(function(){def.callback(itrs)}, 50); + state = null; + } + } + } + }; + handleIteration(iState); + }; + setTimeout(calibrate, 10); + return def; +}; + +doh._runRegFixture = function(/*String*/groupName, /*Object*/fixture){ + // summary: + // Function to run a generic doh test. These are not + // specialized tests, like performance groups and such. + // + // groupName: + // The groupName of the test. + // fixture: + // The test fixture to execute. + var tg = this._groups[groupName]; + fixture.startTime = new Date(); + var ret = fixture.runTest(this); + fixture.endTime = new Date(); + // if we get a deferred back from the test runner, we know we're + // gonna wait for an async result. It's up to the test code to trap + // errors and give us an errback or callback. + if(ret && ret.addCallback){ + tg.inFlight++; + ret.groupName = groupName; + ret.fixture = fixture; + + ret.addErrback(function(err){ + doh._handleFailure(groupName, fixture, err); + }); + + var retEnd = function(){ + + if(fixture["tearDown"]){ fixture.tearDown(doh); } + tg.inFlight--; + doh._testFinished(groupName, fixture, ret.results[0]); + if((!tg.inFlight)&&(tg.iterated)){ + doh._groupFinished(groupName, !tg.failures); + } + if(doh._paused){ + doh.run(); + } + }; + + var timeoutFunction = function(){ + fixture.endTime = new Date(); + ret.errback(new Error("test timeout in "+fixture.name.toString())); + }; + + var timer = setTimeout(function(){ timeoutFunction(); }, fixture["timeout"]||1000); + + ret.addBoth(function(arg){ + timeoutFunction = function(){}; // in IE8, the clearTimeout does not always stop the timer, so clear the function as well + clearTimeout(timer); + fixture.endTime = new Date(); + retEnd(); + }); + if(ret.fired < 0){ + doh.pause(); + } + return ret; + } +}; + +doh._runFixture = function(groupName, fixture){ + var tg = this._groups[groupName]; + this._testStarted(groupName, fixture); + var threw = false; + var err = null; + // run it, catching exceptions and reporting them + try{ + // let doh reference "this.group.thinger..." which can be set by + // another test or group-level setUp function + fixture.group = tg; + // only execute the parts of the fixture we've got + + if(fixture["setUp"]){ fixture.setUp(this); } + if(fixture["runTest"]){ // should we error out of a fixture doesn't have a runTest? + if(fixture.testType === "perf"){ + //Always async deferred, so return it. + return doh._runPerfFixture(groupName, fixture); + }else{ + //May or may not by async. + var ret = doh._runRegFixture(groupName, fixture); + if(ret){ + return ret; + } + } + } + if(fixture["tearDown"]){ fixture.tearDown(this); } + }catch(e){ + threw = true; + err = e; + if(!fixture.endTime){ + fixture.endTime = new Date(); + } + } + var d = new doh.Deferred(); + setTimeout(this.hitch(this, function(){ + if(threw){ + this._handleFailure(groupName, fixture, err); + } + this._testFinished(groupName, fixture, !threw); + + if((!tg.inFlight)&&(tg.iterated)){ + doh._groupFinished(groupName, !tg.failures); + }else if(tg.inFlight > 0){ + setTimeout(this.hitch(this, function(){ + doh.runGroup(groupName); + }), 100); + this._paused = true; + } + if(doh._paused){ + doh.run(); + } + }), 30); + doh.pause(); + return d; +}; + +doh.runGroup = function(/*String*/ groupName, /*Integer*/ idx){ + // summary: + // runs the specified test group + + // the general structure of the algorithm is to run through the group's + // list of doh, checking before and after each of them to see if we're in + // a paused state. This can be caused by the test returning a deferred or + // the user hitting the pause button. In either case, we want to halt + // execution of the test until something external to us restarts it. This + // means we need to pickle off enough state to pick up where we left off. + + // FIXME: need to make fixture execution async!! + + idx= idx || 0; + var tg = this._groups[groupName]; + if(tg.skip === true){ return; } + if(this.isArray(tg)){ + if(tg.iterated===undefined){ + tg.iterated = false; + tg.inFlight = 0; + tg.failures = 0; + this._setupGroupForRun(groupName); + if(tg["setUp"]){ tg.setUp(this); } + } + for(var y=idx; y + + + + + + +
                                                                      + +
                                                                      + + + diff --git a/js/dojo-release-1.7.2-src/util/doh/tests/scopeTest.js b/js/dojo-release-1.7.2-src/util/doh/tests/scopeTest.js new file mode 100644 index 0000000..34159d5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/tests/scopeTest.js @@ -0,0 +1,15 @@ +// to run this test and see it pass, try (note sandbox and async parameters) +// * path/to/dojotoolkit/util/doh/runner.html?test=doh/tests/scopeTest&sandbox&async +// +// to run this test and see it fail, try either of (note no sandbox parameter) +// * path/to/dojotoolkit/util/doh/runner.html?test=doh/tests/scopeTest +// * path/to/dojotoolkit/util/doh/runner.html?test=doh/tests/scopeTest&async + +define(["doh/runner"], function(doh) { + var global= this; + doh.register("scope", function(t){ + t.is(global.dojo, undefined, "dojo global was defined"); + t.isNot(global.dohDojo, undefined, "dohDojo global was not defined"); + t.isNot(require("dohDojo"), undefined, "dohDojo module was not defined"); + }); +}); diff --git a/js/dojo-release-1.7.2-src/util/doh/tests/selfTest.js b/js/dojo-release-1.7.2-src/util/doh/tests/selfTest.js new file mode 100644 index 0000000..5c6fbcd --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/doh/tests/selfTest.js @@ -0,0 +1,244 @@ +define(["doh/runner"], function(doh) { + + + doh.register("doh/selftest/lastTest", function(t){ + t.assertTrue(true); + }); + + var + tObj1 = { a:0, b:1, c:true, d:false, e:{}, f:{a:"x"}, g:"", h:"hellp", i:null}, + tObj2 = { a:0, b:1, c:true, d:false, e:{}, f:{a:"x"}, g:"", h:"hellp", i:null}, // equal + tObja = { a:1, b:1, c:true, d:false, e:{}, f:{a:"x"}, g:"", h:"hellp", i:null}, // delta a + tObjb = { a:0, b:2, c:true, d:false, e:{}, f:{a:"x"}, g:"", h:"hellp", i:null}, // delta b + tObjc = { a:0, b:1, c:false, d:false, e:{}, f:{a:"x"}, g:"", h:"hellp", i:null}, // delta c + tObjd = { a:0, b:1, c:true, d:true, e:{}, f:{a:"x"}, g:"", h:"hellp", i:null}, // delta d + tObje = { a:0, b:1, c:true, d:false, e:{a:"x"}, f:{a:"x"}, g:"", h:"hellp", i:null}, // delta e + tObjf1= { a:0, b:1, c:true, d:false, e:{}, f:{a:"y"}, g:"", h:"hellp", i:null}, // delta f.a + tObjf2= { a:0, b:1, c:true, d:false, e:{}, f:{b:"x"}, g:"", h:"hellp", i:null}, // delta f, property + tObjg = { a:0, b:1, c:true, d:false, e:{}, f:{}, g:"x", h:"hellp", i:null}, // delta g + tObjh = { a:0, b:1, c:true, d:false, e:{}, f:{}, g:"", h:"hello", i:null}, // delta h + tObji = { a:0, b:1, c:true, d:false, e:{}, f:{}, g:"", h:"hellp", i:0}, // delta i + + tArray1 = [0, 1, true, false, {}, {a:"x"}, "", "hello", null], + tArray2 = [0, 1, true, false, {}, {a:"x"}, "", "hello", null], + tArraya = [1, 1, true, false, {}, {a:"x"}, "", "hellp", null], // delta a + tArrayb = [0, 2, true, false, {}, {a:"x"}, "", "hellp", null], // delta b + tArrayc = [0, 1, false, false, {}, {a:"x"}, "", "hellp", null], // delta c + tArrayd = [0, 1, true, true, {}, {a:"x"}, "", "hellp", null], // delta d + tArraye = [0, 1, true, false, {a:"x"}, {a:"x"}, "", "hellp", null], // delta e + tArrayf1= [0, 1, true, false, {}, {a:"y"}, "", "hellp", null], // delta f.a + tArrayf2= [0, 1, true, false, {}, {b:"x"}, "", "hellp", null], // delta f, property + tArrayg = [0, 1, true, false, {}, {}, "x", "hellp", null], // delta g + tArrayh = [0, 1, true, false, {}, {}, "", "hello", null], // delta h + tArrayi = [0, 1, true, false, {}, {}, "", "hellp", 0]; // delta i + + + doh.register("doh/asserts/pass", function(t){ + function check(method, args){ + t[method].apply(t, args); + }; + + check("assertTrue", [true]); + check("assertTrue", [{}]); + check("assertTrue", [1]); + //check("assertTrue", ["hello"]); + + check("assertFalse", [false]); + check("assertFalse", [0]); + check("assertFalse", [null]); + check("assertFalse", [undefined]); + check("assertFalse", [(function(){})()]); + + check("assertEqual", [[], []]); + check("assertEqual", [[1], [1]]); + check("assertEqual", [[1,2], [1,2]]); + check("assertEqual", [[1,2,3], [1,2,3]]); + check("assertEqual", [tObj1, tObj1]); + check("assertEqual", [tObj1, tObj2]); + check("assertEqual", [tArray1, tArray2]); + + check("assertNotEqual", [tObj1, tObja]); + check("assertNotEqual", [tObj1, tObjb]); + check("assertNotEqual", [tObj1, tObjc]); + check("assertNotEqual", [tObj1, tObjd]); + check("assertNotEqual", [tObj1, tObje]); + check("assertNotEqual", [tObj1, tObjf1]); + check("assertNotEqual", [tObj1, tObjf2]); + check("assertNotEqual", [tObj1, tObjg]); + check("assertNotEqual", [tObj1, tObjh]); + check("assertNotEqual", [tObj1, tObji]); + + check("assertNotEqual", [tArray1, tArraya]); + check("assertNotEqual", [tArray1, tArrayb]); + check("assertNotEqual", [tArray1, tArrayc]); + check("assertNotEqual", [tArray1, tArrayd]); + check("assertNotEqual", [tArray1, tArraye]); + check("assertNotEqual", [tArray1, tArrayf1]); + check("assertNotEqual", [tArray1, tArrayf2]); + check("assertNotEqual", [tArray1, tArrayg]); + check("assertNotEqual", [tArray1, tArrayh]); + check("assertNotEqual", [tArray1, tArrayi]); + }); + + doh.register("doh/asserts/fail", function(t){ + function check(method, args){ + try{ + t[method].apply(t, args); + }catch(e){ + t.assertTrue(true); + return; + } + throw new doh._AssertFailure("failed: " + method); + } + check("assertFalse", [true]); + check("assertFalse", [{}]); + check("assertFalse", [1]); + //check("assertFalse", ["hello"]); + + check("assertTrue", [false]); + check("assertTrue", [0]); + check("assertTrue", [null]); + check("assertTrue", [undefined]); + check("assertTrue", [(function(){})()]); + + check("assertNotEqual", [[], []]); + check("assertNotEqual", [[1], [1]]); + check("assertNotEqual", [[1,2], [1,2]]); + check("assertNotEqual", [[1,2,3], [1,2,3]]); + check("assertNotEqual", [tObj1, tObj1]); + check("assertNotEqual", [tObj1, tObj2]); + check("assertNotEqual", [tArray1, tArray2]); + + check("assertEqual", [tObj1, tObja]); + check("assertEqual", [tObj1, tObjb]); + check("assertEqual", [tObj1, tObjc]); + check("assertEqual", [tObj1, tObjd]); + check("assertEqual", [tObj1, tObje]); + check("assertEqual", [tObj1, tObjf1]); + check("assertEqual", [tObj1, tObjf2]); + check("assertEqual", [tObj1, tObjg]); + check("assertEqual", [tObj1, tObjh]); + check("assertEqual", [tObj1, tObji]); + + check("assertEqual", [tArray1, tArraya]); + check("assertEqual", [tArray1, tArrayb]); + check("assertEqual", [tArray1, tArrayc]); + check("assertEqual", [tArray1, tArrayd]); + check("assertEqual", [tArray1, tArraye]); + check("assertEqual", [tArray1, tArrayf1]); + check("assertEqual", [tArray1, tArrayf2]); + check("assertEqual", [tArray1, tArrayg]); + check("assertEqual", [tArray1, tArrayh]); + check("assertEqual", [tArray1, tArrayi]); + }); + + // test the highly overloaded doh.register signature + var currentFixture; + dojo.connect(doh, "_testStarted", function(groupId, fixture){ + currentFixture= fixture; + }); + + var lastId; + function f(id, tid) { + return function() { + if(tid){ + doh.assertTrue(currentFixture.name==tid); + } + if(id){ + doh.assertTrue(lastId+1==id); + lastId= id; + } + }; + }; + + var hijack= doh._setupGroupForRun; + doh._setupGroupForRun= function(groupName){ + lastId= 0; + hijack.call(doh, groupName); + }; + + // note: the tests that are commented out below all have zero for the setup function + // and a real teardown function. For now, this is + + + doh.register("myGroup2-1", f(2), f(1), f(3)); + doh.register("myGroup2-2", f(2), f(1)); + doh.register("myGroup2-4", f(1)); + + dohSelfTestLog5= f(2); + dohSelfTestLog6= f(2); + dohSelfTestLog7= f(1); + dohSelfTestLog8= f(1); + + doh.register("myGroup2-5", "dohSelfTestLog5();", f(1), f(3)); + doh.register("myGroup2-6", "dohSelfTestLog6();", f(1)); + doh.register("myGroup2-8", "dohSelfTestLog8();"); + + doh.register("myGroup2-9", [f(2), f(3)], f(1), f(4)); + doh.register("myGroup2-10", [f(2), f(3)], f(1)); + doh.register("myGroup2-12", [f(1), f(2)]); + + doh.register("myGroup2-13", {t1:f(0, "t1"), t2:f(0, "t2")}, f(1), f(2)); + doh.register("myGroup2-14", {t3:f(0, "t3"), t4:f(0, "t4")}, f(1)); + doh.register("myGroup2-16", {t7:f(0, "t7"), t8:f(0, "t8")}); + + doh.register("myGroup2-17", {name:"t9", runTest:f(2, "t9")}, f(1), f(3)); + doh.register("myGroup2-18", {name:"t10", runTest:f(2, "t10")}, f(1)); + doh.register("myGroup2-20", {name:"t12", runTest:f(1, "t12")}); + + doh.register("myGroup2-21", {name:"tx", runTest:f(3), setUp:f(2)}, f(1), f(4)); + doh.register("myGroup2-22", {name:"tx", runTest:f(3), setUp:f(2)}, f(1)); + doh.register("myGroup2-24", {name:"tx", runTest:f(2), setUp:f(1)}); + + doh.register("myGroup2-25", {name:"tx", runTest:f(2), tearDown:f(3)}, f(1), f(4)); + doh.register("myGroup2-26", {name:"tx", runTest:f(2), tearDown:f(3)}, f(1)); + doh.register("myGroup2-28", {name:"tx", runTest:f(1), tearDown:f(2)}); + + doh.register("myGroup2-29", {name:"tx", runTest:f(3), setUp:f(2), tearDown:f(4)}, f(1), f(5)); + doh.register("myGroup2-30", {name:"tx", runTest:f(3), setUp:f(2), tearDown:f(4)}, f(1)); + doh.register("myGroup2-32", {name:"tx", runTest:f(2), setUp:f(1), tearDown:f(3)}); + + //v1.6- signatures + //TODO + + doh.registerTestType("dohSelfTest", function(group, fixture){ + }); + // a stone-stupid async test + doh.register("doh/async", [{ + name: "deferredSuccess", + runTest: function(t){ + var d = new doh.Deferred(); + setTimeout(d.getTestCallback(function(){ + t.assertTrue(true); + t.assertFalse(false); + }), 50); + return d; + } + },{ + name: "deferredFailure--SHOULD FAIL", + runTest: function(t){ + console.log("running test that SHOULD FAIL"); + var d = new doh.Deferred(); + setTimeout(function(){ + d.errback(new Error("hrm...")); + }, 50); + return d; + } + },{ + name: "timeoutFailure--SHOULD FAIL", + timeout: 50, + runTest: function(t){ + console.log("running test that SHOULD FAIL"); + // timeout of 50 + var d = new doh.Deferred(); + setTimeout(function(){ + d.callback(true); + }, 100); + return d; + } + }]); + + doh.register("doh/selftest/lastTest", function(t){ + t.assertTrue(true); + }); +}); diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/INSTALL b/js/dojo-release-1.7.2-src/util/jsdoc/INSTALL new file mode 100644 index 0000000..329ed58 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/INSTALL @@ -0,0 +1,55 @@ +Drupal +====== + +Prerequisites +============= + +PHP5 +See: Installing Libraries (below) + +Installing Drupal +================= + +http://drupal.org/drupal-5.7 (tested on 5.7 at the time of this writing) +http://drupal.org/getting-started/5/install + +Installing Libraries +==================== + +Read the EXTERNALS file in jsdoc/lib + +Installing the Module +===================== + +http://drupal.org/node/70151 +Drop the jsdoc folder into sites/all/modules + +Enable the Module +================= + +Enable in: Administer->Site building->Modules + +Configure +========= + +* Make sure that PHP has write persmissions to the util/jsdoc/cache directory +* Fill in the configuration in: Administer->Site configuration->JavaScript Documentation +** Under "Directory to run your file from", + enter the FULL PATH to util/docscripts (eg /var/www/dojotoolkit/util/docscripts) +** Under "Location of file used to parse your code", + enter the FULL PATH to util/docscripts/includes/dojo.inc + (eg /var/www/dojotoolkit/util/docscripts/includes/dojo.inc) +** Under "This will be used as a base of our functions", enter "dojo" +* If you want to add a new namespace, see the plugins in util/docscripts/modules + (dojox.module is probably the easiest to copy). + Function names should begin with the file name prefix of the module file + eg dojo.module's functions start with "dojo". +* Remove (or change the file type) of these modules to exclude them from + processing. + +Run Cron +======== + +In the base of your Drupal folder, you'll see cron.php. This has a 30s processing limit, +so you'll need to run it until your DB is fully populated. Run either in your browser +or with cron and a wget/curl command. \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/LICENSE b/js/dojo-release-1.7.2-src/util/jsdoc/LICENSE new file mode 100644 index 0000000..aa6b39f --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/LICENSE @@ -0,0 +1,195 @@ +Dojo is available under *either* the terms of the modified BSD license *or* the +Academic Free License version 2.1. As a recipient of Dojo, you may choose which +license to receive this code under (except as noted in per-module LICENSE +files). Some modules may not be the copyright of the Dojo Foundation. These +modules contain explicit declarations of copyright in both the LICENSE files in +the directories in which they reside and in the code itself. No external +contributions are allowed under licenses which are fundamentally incompatible +with the AFL or BSD licenses that Dojo is distributed under. + +The text of the AFL and BSD licenses is reproduced below. + +------------------------------------------------------------------------------- +The "New" BSD License: +********************** + +Copyright (c) 2005-2011, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- +The Academic Free License, v. 2.1: +********************************** + +This Academic Free License (the "License") applies to any original work of +authorship (the "Original Work") whose owner (the "Licensor") has placed the +following notice immediately following the copyright notice for the Original +Work: + +Licensed under the Academic Free License version 2.1 + +1) Grant of Copyright License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license to do the +following: + +a) to reproduce the Original Work in copies; + +b) to prepare derivative works ("Derivative Works") based upon the Original +Work; + +c) to distribute copies of the Original Work and Derivative Works to the +public; + +d) to perform the Original Work publicly; and + +e) to display the Original Work publicly. + +2) Grant of Patent License. Licensor hereby grants You a world-wide, +royalty-free, non-exclusive, perpetual, sublicenseable license, under patent +claims owned or controlled by the Licensor that are embodied in the Original +Work as furnished by the Licensor, to make, use, sell and offer for sale the +Original Work and Derivative Works. + +3) Grant of Source Code License. The term "Source Code" means the preferred +form of the Original Work for making modifications to it and all available +documentation describing how to modify the Original Work. Licensor hereby +agrees to provide a machine-readable copy of the Source Code of the Original +Work along with each copy of the Original Work that Licensor distributes. +Licensor reserves the right to satisfy this obligation by placing a +machine-readable copy of the Source Code in an information repository +reasonably calculated to permit inexpensive and convenient access by You for as +long as Licensor continues to distribute the Original Work, and by publishing +the address of that information repository in a notice immediately following +the copyright notice that applies to the Original Work. + +4) Exclusions From License Grant. Neither the names of Licensor, nor the names +of any contributors to the Original Work, nor any of their trademarks or +service marks, may be used to endorse or promote products derived from this +Original Work without express prior written permission of the Licensor. Nothing +in this License shall be deemed to grant any rights to trademarks, copyrights, +patents, trade secrets or any other intellectual property of Licensor except as +expressly stated herein. No patent license is granted to make, use, sell or +offer to sell embodiments of any patent claims other than the licensed claims +defined in Section 2. No right is granted to the trademarks of Licensor even if +such marks are included in the Original Work. Nothing in this License shall be +interpreted to prohibit Licensor from licensing under different terms from this +License any Original Work that Licensor otherwise would have a right to +license. + +5) This section intentionally omitted. + +6) Attribution Rights. You must retain, in the Source Code of any Derivative +Works that You create, all copyright, patent or trademark notices from the +Source Code of the Original Work, as well as any notices of licensing and any +descriptive text identified therein as an "Attribution Notice." You must cause +the Source Code for any Derivative Works that You create to carry a prominent +Attribution Notice reasonably calculated to inform recipients that You have +modified the Original Work. + +7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that +the copyright in and to the Original Work and the patent rights granted herein +by Licensor are owned by the Licensor or are sublicensed to You under the terms +of this License with the permission of the contributor(s) of those copyrights +and patent rights. Except as expressly stated in the immediately proceeding +sentence, the Original Work is provided under this License on an "AS IS" BASIS +and WITHOUT WARRANTY, either express or implied, including, without limitation, +the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. +This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No +license to Original Work is granted hereunder except under this disclaimer. + +8) Limitation of Liability. Under no circumstances and under no legal theory, +whether in tort (including negligence), contract, or otherwise, shall the +Licensor be liable to any person for any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License +or the use of the Original Work including, without limitation, damages for loss +of goodwill, work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses. This limitation of liability shall not +apply to liability for death or personal injury resulting from Licensor's +negligence to the extent applicable law prohibits such limitation. Some +jurisdictions do not allow the exclusion or limitation of incidental or +consequential damages, so this exclusion and limitation may not apply to You. + +9) Acceptance and Termination. If You distribute copies of the Original Work or +a Derivative Work, You must make a reasonable effort under the circumstances to +obtain the express assent of recipients to the terms of this License. Nothing +else but this License (or another written agreement between Licensor and You) +grants You permission to create Derivative Works based upon the Original Work +or to exercise any of the rights granted in Section 1 herein, and any attempt +to do so except under the terms of this License (or another written agreement +between Licensor and You) is expressly prohibited by U.S. copyright law, the +equivalent laws of other countries, and by international treaty. Therefore, by +exercising any of the rights granted to You in Section 1 herein, You indicate +Your acceptance of this License and all of its terms and conditions. + +10) Termination for Patent Action. This License shall terminate automatically +and You may no longer exercise any of the rights granted to You by this License +as of the date You commence an action, including a cross-claim or counterclaim, +against Licensor or any licensee alleging that the Original Work infringes a +patent. This termination provision shall not apply for an action alleging +patent infringement by combinations of the Original Work with other software or +hardware. + +11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this +License may be brought only in the courts of a jurisdiction wherein the +Licensor resides or in which Licensor conducts its primary business, and under +the laws of that jurisdiction excluding its conflict-of-law provisions. The +application of the United Nations Convention on Contracts for the International +Sale of Goods is expressly excluded. Any use of the Original Work outside the +scope of this License or after its termination shall be subject to the +requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et +seq., the equivalent laws of other countries, and international treaty. This +section shall survive the termination of this License. + +12) Attorneys Fees. In any action to enforce the terms of this License or +seeking damages relating thereto, the prevailing party shall be entitled to +recover its costs and expenses, including, without limitation, reasonable +attorneys' fees and costs incurred in connection with such action, including +any appeal of such action. This section shall survive the termination of this +License. + +13) Miscellaneous. This License represents the complete agreement concerning +the subject matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent necessary to +make it enforceable. + +14) Definition of "You" in This License. "You" throughout this License, whether +in upper or lower case, means an individual or a legal entity exercising rights +under, and complying with all of the terms of, this License. For legal +entities, "You" includes any entity that controls, is controlled by, or is +under common control with you. For purposes of this definition, "control" means +(i) the power, direct or indirect, to cause the direction or management of such +entity, whether by contract or otherwise, or (ii) ownership of fifty percent +(50%) or more of the outstanding shares, or (iii) beneficial ownership of such +entity. + +15) Right to Use. You may use the Original Work in all ways not otherwise +restricted or conditioned by this License or by law, and Licensor promises not +to interfere with or be responsible for such uses by You. + +This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. +Permission is hereby granted to copy and distribute this license without +modification. This license may not be modified without the express written +permission of its copyright owner. diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/THEMING b/js/dojo-release-1.7.2-src/util/jsdoc/THEMING new file mode 100755 index 0000000..e69de29 diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.css b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.css new file mode 100644 index 0000000..8aae217 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.css @@ -0,0 +1,24 @@ +/* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */ +.javascript .de1, .javascript .de2 {font-weight:normal;background:transparent;color:#000; padding-left: 5px;} +.javascript .kw1 {color: #a1a100;} +.javascript .kw2 {color: #000; font-weight: bold;} +.javascript .kw3 {color: #000066;} +.javascript .kw4 {color: #f63333;} +.javascript .co1, .javascript .co2, .javascript .coMULTI {color: #808080;} +.javascript .es0 {color: #000033; font-weight: bold;} +.javascript .br0 {color: #66cc66;} +.javascript .st0 {color: #ff0000;} +.javascript .nu0 {color: #ff33ff;} +.javascript .me0 {color: #006600;} + +.html4strict .de1, .html4strict .de2 {font-weight:normal;background:transparent;color:#000; padding-left: 5px;} +.html4strict .kw1 {color: #a1a100;} +.html4strict .kw2 {color: #000; font-weight: bold;} +.html4strict .kw3 {color: #000066;} +.html4strict .kw4 {color: #f63333;} +.html4strict .co1, .html4strict .co2, .html4strict .coMULTI {color: #808080;} +.html4strict .es0 {color: #000033; font-weight: bold;} +.html4strict .br0 {color: #66cc66;} +.html4strict .st0 {color: #ff0000;} +.html4strict .nu0 {color: #ff33ff;} +.html4strict .me0 {color: #006600;} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.info b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.info new file mode 100755 index 0000000..e4f73d2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.info @@ -0,0 +1,4 @@ +; $Id $ +name = "JavaScript Documentation" +description = "Reads and displays documentation for JavaScript code" +package = Documentation diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.install b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.install new file mode 100755 index 0000000..b944fb4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.install @@ -0,0 +1,23 @@ + 1 && select.selectedIndex == 0){ + valid = false; + } + }); + if(!valid){ + alert("All variables must either be marked as new, or used in a rename."); + dojo.stopEvent(e); + } + }); + + var available = {}; + + dojo.query("input", table).forEach(function(checkbox){ + checkbox.checked = true; + var parts = checkbox.value.split("|"); + var node = { + project: parts[0], + resource: parts[1], + title: parts[2], + nid: parts[3], + vid: parts[4] + } + jsdoc.nodes[node.nid + "_" + node.vid] = node; + dojo.connect(checkbox, "onchange", function(e){ + var checked = e.target.checked; + + if(!available[node.project]){ + e.target.checked = true; + } + if(available[node.project] || checked){ + dojo.publish("/jsdoc/onchange", [checkbox.checked, node.nid + "_" + node.vid]); + } + + if(!checked && available[node.project]){ + --available[node.project]; + }else if(checked) { + ++available[node.project]; + } + }); + }); + + dojo.query("select", table).forEach(function(select){ + var project = select.name.slice(9, select.name.indexOf("]")); + available[project] = (available[project] || 0) + 1; + + dojo.connect(select, "onchange", function(){ + if(select.selectedIndex == 0){ + if(select.last){ + dojo.publish("/jsdoc/onchange", [false, select.last, select]); + select.last = 0; + } + }else if(select.selectedIndex > 0){ + if(select.last){ + dojo.publish("/jsdoc/onchange", [false, select.last, select]); + } + var option = select.options[select.selectedIndex]; + select.last = option.value; + dojo.publish("/jsdoc/onchange", [true, option.value, select]); + } + }); + + dojo.subscribe("/jsdoc/onchange", null, function(checked, id, current){ + if(current === select){ + return; + } + + var node = jsdoc.nodes[id]; + + if(!checked){ + if(select.name.indexOf("modified[" + node.project + "]") == 0){ + var i = select.options.length++; + select.options[i].value = id; + select.options[i].text = node.title + " in " + node.resource; + } + }else{ + dojo.query("option[value=" + id + "]", select).orphan(); + if(!select.options.length){ + select.selectedIndex = 0; + } + } + }); + }); + }); +}); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.module b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.module new file mode 100755 index 0000000..ff25009 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/jsdoc.module @@ -0,0 +1,3003 @@ + array('name' => t('Documentation'), 'module' => 'jsdoc_doc', 'description' => t('A JavaScript documentation file')), + 'jsdoc_object' => array('name' => t('JavaScript Object'), 'module' => 'jsdoc_object', 'description' => t('An implemented JavaScript object')) + ); +} + +/** + * Implementation of hook_perm(). + */ +function jsdoc_perm() { + return array('edit jsdoc'); +} + +/** + * Implementation of hook_menu(). + */ +function jsdoc_menu($may_cache) { + $items = array(); + $version = isset($_SESSION['jsdoc_version']) ? $_SESSION['jsdoc_version'] : null; + + if ($may_cache) { + $items[] = array( + 'path' => 'admin/settings/jsdoc', + 'title' => t('JavaScript Documentation'), + 'callback' => 'drupal_get_form', + 'callback arguments' => array('jsdoc_admin'), + 'access' => user_access('access administration pages'), + 'type' => MENU_NORMAL_ITEM + ); + + $items[] = array( + 'path' => 'jsdoc/jsonp', + 'type' => MENU_CALLBACK, + 'callback' => 'jsdoc_jsonp', + 'access' => true + ); + + $items[] = array( + 'path' => 'jsdoc/feedback', + 'type' => MENU_CALLBACK, + 'callback' => 'jsdoc_feedback', + 'access' => true + ); + + $items[] = array( + 'path' => 'jsdoc/feedback/review', + 'type' => MENU_CALLBACK, + 'callback' => 'jsdoc_feedback_review', + 'access' => true + ); + + $items[] = array( + 'path' => 'jsdoc/404', + 'title' => t('Page not found'), + 'type' => MENU_CALLBACK, + 'callback' => 'jsdoc_404', + 'access' => true + ); + } + else { + if (arg(0) == 'jsdoc' && arg(1) != 'jsonp') { + $version = false; + $resource = false; + $name = ''; + $path = ''; + + $switch = false; + $args = array(); + for ($i = 0; $arg = arg($i); $i++){ + if ($arg == '.switch') { + $switch = arg($i + 1); + break; + } + $args[] = $arg; + } + + if (count($args) == 4) { + // Old URL + $version = $args[2]; + $name = $args[3]; + drupal_goto("jsdoc/$version/$name"); + return; + } + if ($args[2]) { + // If we have 2 arguments, assume that we don't have a resource or project + // So basically, we assume that version is more important than project + $version = $args[1]; + $name = $args[2]; + $path = "jsdoc/$version/$name"; + } + elseif ($args[1]) { + // Allow the user to only pass the name + $name = $args[1]; + $path = "jsdoc/$name"; + } + + $node = jsdoc_get_closest($name, $version); + + if (!$node || !$node->nid) { + return; + } + else { + jsdoc_current_node($node); + + $item = array( + 'path' => $path, + 'title' => t('View'), + 'access' => node_access('view', $node), + 'type' => MENU_CALLBACK + ); + + $version = jsdoc_get_version($node); + + $path = array('jsdoc', $version->title, $name); + if ($switch) { + $path[1] = $switch; + drupal_goto(implode('/', $path)); + return; + } + + $versions = jsdoc_get_versions($node, $name); + if (count($versions) > 1) { + $path = explode('/', $node->jsdoc_url); + foreach (array_reverse($versions) as $release) { + $path[2] = $release->title; + + $items[] = array( + 'path' => $_GET['q'] . '/.switch/' . $release->title, + 'title' => $project->title . ' ' . $release->title, + 'type' => ($release->nid == $version->nid) ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK + ); + } + } + + $item['callback'] = ($name == $node->title) ? 'jsdoc_object_node_view' : 'jsdoc_child_node_view'; + $item['callback arguments'] = ($name == $node->title) ? array($node) : array($node, $name); + } + $items[] = $item; + } + } + + return $items; +} + +/** + * Impelementation of hook_block + */ +function jsdoc_block($op='list', $delta=0) { + if ($op == 'list') { + if (module_exists('search')) { + $block[0]['info'] = t('JavaScript Documentation Search'); + } + $block[1]['info'] = t('JavaScript Namespace List'); + return $block; + } + elseif ($op == 'view') { + if ($delta == 0 && module_exists('search')) { + $block['subject'] = 'Search'; + $block['content'] = preg_replace('%ignore.*endignore%s', theme('jsdoc_search', 'search'), drupal_get_form('_jsdoc_block_search')); + return $block; + } + elseif ($delta == 1) { + $namespaces = array(); + + $current = jsdoc_current_node(); + list($current_namespace,) = explode('.', $current->title, 2); + + if (!($version = jsdoc_get_version($current))) { + foreach (jsdoc_get_versions() as $version) { + if ($version->title != 'HEAD') { + break; + } + } + } + + if ($content = cache_get("jsdoc_namespaces_{$version->title}:$current_namespace")) { + $content = $content->data; + } + else { + $query = db_query("SELECT n.nid, n.title, version.title AS version FROM {node} AS n JOIN {jsdoc_objects} j ON (j.nid = n.nid) JOIN {node} AS version ON (version.nid = j.did) WHERE j.did = %d", $version->nid); + while ($node = db_fetch_object($query)) { + if (strpos($node->title, '._') !== false) { + continue; + } + $parts = explode('.', $node->title); + if (count($parts)) { + for ($i = 1; $i <= count($parts); $i++) { + $parent = implode('.', array_slice($parts, 0, $i)); + if (!$namespaces[$parent]) { + $namespaces[$parent] = (object)array( + 'title' => $parent, + 'children' => array() + ); + } + } + + array_pop($parts); + $parent = implode('.', $parts); + if ($parent) { + $children = &$namespaces[$parent]->children; + } + else { + $children = &$namespaces; + } + $children[$node->title]->jsdoc_url = 'jsdoc/' . $node->version . '/' . $node->title; + $children[$node->title]->url = url('jsdoc/' . $node->version . '/' . $node->title); + $children[$node->title]->a = l($node->title, 'jsdoc/' . $node->version . '/' . $node->title); + } + } + + uksort($namespaces, 'strnatcasecmp'); + foreach ($namespaces as $namespace) { + if ($namespace->children) { + uksort($namespace->children, 'strnatcasecmp'); + } + } + + $content = theme('jsdoc_namespaces', $namespaces, $version->title, $current->title); + cache_set("jsdoc_namespaces_{$version->title}:$current_namespace", 'cache', $content, time() + 86400); + } + + //$namespaces = unserialize(cache_get('jsdoc_namespaces', 'cache')->data); + $block['subject'] = 'Objects'; + $block['content'] = $content; + return $block; + } + } +} + +function _jsdoc_block_search() { + if (module_exists('search')) { + return array( + 'ignore' => array( + '#value' => 'ignore' + ), + 'search' => array( + '#type' => 'textfield' + ), + 'go' => array( + '#type' => 'submit', + '#value' => 'Go' + ), + 'endignore' => array( + '#value' => 'endignore' + ) + ); + } +} + +function _jsdoc_block_search_submit($form_id, $form) { + // TODO + $search = $form['search']; + if (strpos($search, ' ') === false) { + $query = db_query("SELECT title FROM {node} WHERE type = 'jsdoc_object' AND title = '%s' GROUP BY BINARY title", $search); + if (db_num_rows($query) == 1) { + $object = jsdoc_object_node_load(db_result($query)); + watchdog('search', t('%keys (@type).', array('%keys' => $search, '@type' => 'JavaScript Documentation')), WATCHDOG_NOTICE, l(t('result'), $object->jsdoc_url)); + drupal_goto($object->jsdoc_url); + return; + } + else { + $query = db_query("SELECT title FROM {node} WHERE type = 'jsdoc_object' AND title LIKE '%%%s%%' GROUP BY BINARY title", $search); + if (db_num_rows($query) == 1) { + $object = jsdoc_object_node_load(db_result($query)); + watchdog('search', t('%keys (@type).', array('%keys' => $search, '@type' => 'JavaScript Documentation')), WATCHDOG_NOTICE, l(t('result'), $object->jsdoc_url)); + drupal_goto($object->jsdoc_url); + return; + } + } + } + + drupal_goto('search/jsdoc/' . $search); +} + +/** + * shutdown function to make sure we always mark the last node processed. + */ +function jsdoc_update_shutdown() { + global $jsdoc_last_change, $jsdoc_last_nid; + + if ($jsdoc_last_change && $jsdoc_last_nid) { + variable_set('jsdoc_cron_last', $jsdoc_last_change); + variable_set('jsdoc_cron_last_nid', $jsdoc_last_nid); + } +} + +/** + * Implementation of hook_update_index(). + * + * Handle node status the way that the node module does... through remembering nids, last change time, + * and last comment change time. + * + * We need to save things by version/node pair though. That way, we can keep things so that the latest + * update is always the latest version of the node. + */ +function jsdoc_update_index() { + global $jsdoc_last_change, $jsdoc_last_nid; + + register_shutdown_function('jsdoc_update_shutdown'); + + $jsdoc_last_change = variable_get('jsdoc_cron_last', 0); + $jsdoc_last_nid = variable_get('jsdoc_cron_last_nid', 0); + $limit = (int)variable_get('search_cron_limit', 500); + + // $result = db_query_range("SELECT GREATEST(IF(c.last_comment_timestamp IS NULL, 0, c.last_comment_timestamp), n.changed) as last_change, n.nid FROM {node} n LEFT JOIN {node_comment_statistics} c ON n.nid = c.nid WHERE n.type = 'jsdoc_variable' AND n.status = 1 AND ((GREATEST(n.changed, c.last_comment_timestamp) = %d AND n.nid > %d) OR (n.changed > %d OR c.last_comment_timestamp > %d)) ORDER BY GREATEST(n.changed, c.last_comment_timestamp) ASC, n.nid ASC", $last, $last_nid, $last, $last, $last, 0, $limit); + $result = db_query_range("SELECT n.changed as last_change, n.nid FROM {node} n WHERE n.type = 'jsdoc_object' AND ((n.changed = %d AND n.nid > %d) OR n.changed > %d) ORDER BY n.changed ASC, n.nid ASC", $jsdoc_last_change, $jsdoc_last_nid, $jsdoc_last_change, 0, $limit); + while ($node = db_fetch_object($result)) { + $node = node_load($node->nid); + $type = 'jsdoc_' . jsdoc_get_version($node)->title; + + $items = array($node); + foreach (jsdoc_get_methods($node) as $method) { + $method->title = "{$node->title}.{$method->name}"; + $items[] = $method; + } + foreach (jsdoc_get_properties($node) as $property) { + $property->title = "{$node->title}.{$property->name}"; + $items[] = $property; + } + foreach ($items as $item) { + $text = '

                                                                      '. implode(' ', _jsdoc_build_terms($item->title)) . '

                                                                      ' . jsdoc_get_teaser($item) . ' ' . jsdoc_get_body($item); + + if (!($sid = db_result(db_query("SELECT sid FROM {jsdoc_variables} WHERE variable = '%s'", $item->title)))) { + $sid = db_next_id('{jsdoc_variables}_sid'); + db_query("INSERT INTO {jsdoc_variables} (sid, variable, private) VALUES (%d, '%s', %d)", $sid, $item->title, jsdoc_is_private($item) || jsdoc_has_private_parent($item)); + } + + search_index($sid, $type, $text); + } + + $jsdoc_last_change = $node->changed; + $jsdoc_last_nid = $node->nid; + } + + variable_set('jsdoc_cron_last', $jsdoc_last_change); + variable_set('jsdoc_cron_last_nid', $jsdoc_last_nid); +} + +/** + * Implementation of hook_search(). + */ +function jsdoc_search($op = 'search', $keys = null) { + switch ($op) { + case 'name': + return t('JavaScript Documentation'); + case 'search': + // Get all projects + // Get all versions marked 'HEAD' in each project + $version = search_query_extract($keys, 'version'); + if (empty($version)) { + $version = jsdoc_get_version()->title; + } + $keys = search_query_insert($keys, 'version'); + + $private = search_query_extract($keys, 'private'); + $keys = search_query_insert($keys, 'private'); + + $where = '1'; + if (!$private) { + $where = "j.private = 0"; + } + + $find = do_search( + '(' . implode('), (', _jsdoc_build_terms($keys)) . ')', + 'jsdoc_' . $version, + "INNER JOIN {jsdoc_variables} j ON (j.sid = i.sid)", + $where, + array(), + 'i.relevance + (15 / CHAR_LENGTH(j.variable)) AS score', + "INNER JOIN {jsdoc_variables} j ON (j.sid = i.sid)" + ); + $results = array(); + foreach ($find as $item) { + $variable = db_result(db_query("SELECT variable FROM {jsdoc_variables} WHERE sid = %d", $item->sid)); + $actual = $node = jsdoc_object_node_load($variable, $version); + if (!$node->nid) { + $parts = explode('.', $variable); + array_pop($parts); + $node = jsdoc_object_node_load(implode('.', $parts), $version); + $actual = _jsdoc_resolve_child($node, $variable); + } + + $info = jsdoc_node_info(); + $results[] = array( + 'url' => $actual->jsdoc_url, + 'link' => url($actual->jsdoc_url), + 'type' => "Version $version", + 'title' => $actual->title, + 'user' => '', + 'date' => '', + 'node' => $node, + 'score' => $item->score, + 'snippet' => (jsdoc_get_teaser($actual)) ? search_excerpt($keys, jsdoc_get_teaser($actual)) : '' + ); + } + + $term = trim(search_query_insert(search_query_insert($keys, 'private'), 'version')); + if (count($results) == 1 && $results[0]['title'] == $term) { + return drupal_goto($results[0]['url']); + } + + return $results; + } +} + +/** + * Implementation of hook_search_validate() + */ +function jsdoc_search_validate($form_id, $form_values, $form) { + $keys = $form_values['processed_keys']; + + $version = $form_values['jsdoc_version']; + $keys = search_query_insert($keys, 'version', $version); + + if ($form_values['jsdoc_private']) { + $keys = search_query_insert($keys, 'private', 'true'); + } + else { + $keys = search_query_insert($keys, 'private'); + } + + if (!empty($keys)) { + form_set_value($form['basic']['inline']['processed_keys'], trim($keys)); + } +} + +/** + * Implementation of hook_form_alter(). + */ +function jsdoc_form_alter($form_id, &$form) { + if ($form['type']['#value'] == 'jsdoc_object') { + unset($form['taxonomy']); + } + elseif ($form_id == 'search_form' && $form['module']['#value'] == 'jsdoc') { + foreach (jsdoc_get_versions() as $version) { + $options[$version->title] = $version->title; + } + + if (empty($options)) { + $options = array('' => '-----'); + } + + $form['jsdoc_version'] = array( + '#title' => t('Version'), + '#type' => 'select', + '#options' => $options, + '#default_value' => jsdoc_get_version()->title + ); + + if ($version = search_query_extract($form['basic']['inline']['keys']['#default_value'], 'version')) { + $form['jsdoc_version']['#default_value'] = $version; + } + + $private = search_query_extract($form['basic']['inline']['keys']['#default_value'], 'private'); + + $form['jsdoc_private'] = array( + '#title' => t('Include Private Variables'), + '#type' => 'checkbox', + '#default_value' => $private + ); + + $form['#validate']['jsdoc_search_validate'] = array(); + } +} + +/** + * Implementation of hook_help(). + */ +function jsdoc_help($section = '') { + $output = ''; + + switch ($section) { + case 'admin/help#jsdoc': + return '

                                                                      ' . t('View and edit JavaScript Documentation') . '

                                                                      '; + case 'admin/modules#jsdoc': + return t('View and edit JavaScript Documentation'); + case 'admin/settings/jsdoc/ignore': + return t(" +

                                                                      There will be several vocabularies created by this resource. Two of the more important are \"JavaScript Environments\" and \"JavaScript Conditions\". You should read their explanations below and make sure that these values exist in your vocabularies.

                                                                      +

                                                                      In order for this to work, you need to declare both a file and two functions within that file. When the cron task runs, it will call a function that gets a list of files within your project. The files will be run one by one, each calling the second function. Our task expects an array to be returned in the following format:

                                                                      +
                                                                        +
                                                                      • variable: The name of the variable
                                                                      • +
                                                                      • Resource Specific
                                                                      • +
                                                                      • #requires: The string literal '#requires'
                                                                      • +
                                                                      • #provides: The string literal '#provides'. It should match the requires statements of other files
                                                                      • +
                                                                      • resource: Your code might load different files depending on different conditions. A resource is a string to indicate the location of a file
                                                                      • +
                                                                      • environment: An indicator of where your code is running. Only one is available during run-time. Must correspond to the entry in \"JavaScript Environments\"
                                                                      • +
                                                                      • condition: An indicator of a condition under which your code is running. Multiple conditions are available at run-time. Must correspond to an entry in \"JavaScript Conditions\"
                                                                      • +
                                                                      • Object Specific
                                                                      • +
                                                                      • private: True if this object isn't meant to be public
                                                                      • +
                                                                      • type: Object type. If it's a function, set to 'Function'
                                                                      • +
                                                                      • summary: A short description of what the item does.
                                                                      • +
                                                                      • description: An extended description of what the item does.
                                                                      • +
                                                                      • Function Specific
                                                                      • +
                                                                      • aliases: The name of a function/variable this references. In code, it would have been fn1 = fn2, where fn1 aliases fn2
                                                                      • +
                                                                      • instance: The name of a function that the 'this' variable refers to. Useful if a function is declared in a constructor.
                                                                      • +
                                                                      • initialized: True if this variable references an initialized function.
                                                                      • +
                                                                      • classlike: True if a function acts like a class.
                                                                      • +
                                                                      • prototype: This object is attached via the prototype of this function
                                                                      • +
                                                                      • returns: Object type of the function return.
                                                                      • +
                                                                      • return summary: Summary of the function return.
                                                                      • +
                                                                      • chains: The string literal 'chains'
                                                                      • +
                                                                      • chain-type: call, or prototype. Basically, either doing this.call(parent); or this.prototype = new parent; respectively
                                                                      • +
                                                                      • function: A function name
                                                                      • +
                                                                      • parameters: The string literal 'parameters'
                                                                      • +
                                                                      • parameter: The name of the parameter
                                                                      • +
                                                                      • optional: True if the parameter is documented as optional
                                                                      • +
                                                                      • repeating: True if the parameter is documented as repeating
                                                                      • +
                                                                      • type: Object type of the parameter.
                                                                      • +
                                                                      • source: Source Code (if it's a function)
                                                                      • +
                                                                      +
                                                                      array(
                                                                      +  'variable' => array(
                                                                      +    '#requires' => array(
                                                                      +      array('environment/condition', 'resource')
                                                                      +    )
                                                                      +    'type' => '',   
                                                                      +    'source' => '',
                                                                      +    'summary' => '',
                                                                      +    'description' => '',
                                                                      +    'aliases' => '',
                                                                      +    'instance' => '',
                                                                      +    'initialized' => boolean,
                                                                      +    'prototype' => '',
                                                                      +    'returns' => '',
                                                                      +    'return_summary' => '',
                                                                      +    'chains' => array(
                                                                      +      array('chain-type', 'function')
                                                                      +    ),
                                                                      +    'parameters' => array(
                                                                      +      'parameter' => array(
                                                                      +        'optional' => boolean,
                                                                      +        'repeating' => boolean,
                                                                      +        'type' => '',
                                                                      +        'summary' => ''
                                                                      +      )
                                                                      +    )
                                                                      +  )
                                                                      +)
                                                                      "); + } + + return ''; +} + +// Views +// ===== + +function jsdoc_doc_form(&$node) { + $form = array( + '#attributes' => array( + 'enctype' => 'multipart/form-data' + ) + ); + + $form['title'] = array( + '#type' => 'textfield', + '#title' => t('Version Number'), + '#default_value' => $node->title + ); + + $form['counts'] = array( + '#type' => 'item', + '#title' => t('Objects'), + '#value' => ($node->nid ? db_result(db_query("SELECT COUNT(*) FROM {jsdoc_objects} WHERE did = %d", $node->nid)) : 0) + ); + + $form['upload'] = array( + '#title' => t('Documentation File'), + '#type' => 'file' + ); + + $form['download'] = array( + '#title' => t('Documentation URL'), + '#type' => 'textfield' + ); + + return $form; +} + +function jsdoc_doc_view($node, $teaser = FALSE, $page = FALSE) { + $node->content['counts'] = array( + '#type' => 'item', + '#title' => t('Objects'), + '#value' => db_result(db_query("SELECT COUNT(*) FROM {jsdoc_objects} WHERE did = %d", $node->nid)) + ); + + return $node; +} + +function jsdoc_doc_update($node) { + jsdoc_doc_insert($node); +} + +function jsdoc_doc_insert($node) { + $start = time(); + if ($file = file_check_upload()) { + $doc = fopen($file->filepath, 'r'); + } + elseif ($node->download) { + $doc = fopen($node->download, 'r'); + } + else { + return; + } + + $buffer = array(); + while (!feof($doc)) { + set_time_limit(30); + + $line = stream_get_line($doc, 9999, "\n"); + if (preg_match('%^\t"([^"]+)": \{%', $line, $match)) { + $id = $match[1]; + $in = true; + } + elseif (preg_match('%^\t\}%', $line, $match)) { + $in = false; + $json = json_decode('{' . implode("\n", $buffer) . '}'); + + if ($nid = db_result(db_query("SELECT n.nid FROM {node} AS n INNER JOIN {jsdoc_objects} j ON (j.nid = n.nid) WHERE BINARY n.title = '%s' AND j.did = %d", $id, $node->nid))) { + $object = node_load($nid); + $object->json = $json; + } + else { + $object = (object)array( + 'title' => $id, + 'type' => 'jsdoc_object', + 'version' => $node, + 'json' => $json + ); + } + + node_save($object); + node_load($object->nid, NULL, TRUE); + $buffer = array(); + } + elseif($in) { + $buffer[] = $line; + } + } + + // cache_set("jsdoc_namespaces_{$version->title} + + $query = db_query("DELETE FROM {cache} WHERE cid LIKE 'jsdoc_namespaces_%s:%%'", $node->title); + + $query = db_query("SELECT n.nid FROM {node} AS n INNER JOIN {jsdoc_objects} AS j ON (j.nid = n.nid) WHERE type = 'jsdoc_object' AND j.did = %d AND changed < %d", $node->nid, $start); + while ($nid = db_fetch_object($query)) { + set_time_limit(30); + node_delete($nid->nid); + } +} + +function jsdoc_doc_delete(&$node) { + $query = db_query("SELECT nid FROM {jsdoc_objects} WHERE did = %d", $node->nid); + while ($nid = db_fetch_object($query)) { + set_time_limit(30); + node_delete($nid->nid); + } +} + +// Implemented node-type hook functions +// ==================================== + +/** + * Implementation of hook_access(). + */ +function jsdoc_object_access($op, $node) { + if ($op == 'update') { + return user_access('edit jsdoc'); + } + elseif ($op == 'view') { + return user_access('access content'); + } + + return false; +} + +/** + * Implementation of hook_insert(). + */ +function jsdoc_object_insert($node) { + db_query("INSERT INTO {jsdoc_objects} (nid, did, json) VALUES (%d, %d, '%s')", $node->nid, $node->version->nid, serialize($node->json)); +} + +/** + * Implementation of hook_update(). + */ +function jsdoc_object_update($node) { + db_query("UPDATE {jsdoc_objects} SET json = '%s' WHERE nid = %d", serialize($node->json), $node->nid); +} + +/** + * Implementation of hook_delete + */ +function jsdoc_object_delete(&$node) { + $type = 'jsdoc_' . $node->title; + $query = db_query("SELECT sid FROM {jsdoc_variables} WHERE variable = '%s'", $node->title); + if ($sid = db_fetch_object($query)) { + search_wipe($sid->sid, $type); + } + db_query("DELETE FROM {jsdoc_objects} WHERE nid = %d", $node->nid); +} + +function _jsdoc_convert_object(&$node, $object, $parent = FALSE, $method = FALSE) { + $node->teaser = $object->summary; + $node->body = $object->description; + + if (!$node->title && $object->name) { + $node->title = $object->name; + } + + if (!$node->jsdoc_version) { + $node->jsdoc_version = $parent->jsdoc_version; + } + + if ($method) { + $node->jsdoc_raw_type = 'Function'; + } + else { + $node->jsdoc_raw_type = $object->type ? $object->type : 'Object'; + } + + $node->jsdoc_classlike = $object->classlike; + + $node->jsdoc_formatted = _jsdoc_format_type($node->jsdoc_raw_type, $node->jsdoc_classlike); + + $returndescription = 'return-description'; + $node->jsdoc_return_summary = $object->$returndescription; + + $returntypes = 'return-types'; + $node->jsdoc_return_types = $object->$returntypes; + + $node->jsdoc_examples = $object->examples; + + $node->jsdoc_resources = $object->resources; + + $node->jsdoc_provides = $object->provides; + + $node->jsdoc_superclass = $object->superclass; + + $node->jsdoc_mixins = $object->mixins; + + if (!empty($object->tags)) { + $node->jsdoc_tags = array(); + foreach (explode(' ', $object->tags) as $tag) { + $node->jsdoc_tags[$tag] = TRUE; + } + } + + $node->jsdoc_private = $object->private; + + $node->jsdoc_protected = $object->protected; + + $node->jsdoc_deprecated = $object->deprecated; + + $node->jsdoc_private_parent = $object->privateparent; + + $node->jsdoc_scope = $object->scope ? $object->scope : 'normal'; + + if ($node->jsdoc_raw_type == 'Function') { + if (!$node->jsdoc_classlike) { + $parameters = $object->parameters; + } + else { + if (is_array($object->methods)) { + $constructors = array(); + foreach ($object->methods as $method) { + if ($method->constructor) { + $constructors[$method->constructor] = $method; + } + } + foreach (array('constructor', 'preamble', 'postscript') as $constructor) { + if ($method = $constructors[$constructor]) { + $node->jsdoc_constructor = $method; + if (!empty($method->parameters)) { + $parameters = $method->parameters; + break; + } + } + } + if (!$node->jsdoc_constructor && !empty($constructors)) { + $node->jsdoc_constructor = reset($constructors); + } + } + } + + $node->jsdoc_parameters = $parameters; + } + + if (!empty($object->methods)) { + foreach ($object->methods as $method) { + if (!$method->constructor) { + $method->jsdoc_url = 'jsdoc/' . jsdoc_get_version($node)->title . '/' . $node->title . '.' . $method->name; + $node->jsdoc_methods[] = $method; + } + } + } + + if (!empty($object->properties)) { + foreach ($object->properties as $property) { + $property->jsdoc_url = 'jsdoc/' . jsdoc_get_version($node)->title . '/' . $node->title . '.' . $property->name; + $node->jsdoc_properties[] = $property; + } + } + + if ($object->jsdoc_url) { + $node->jsdoc_url = $object->jsdoc_url; + } + else { + $node->jsdoc_url = 'jsdoc/' . jsdoc_get_version($node)->title . '/' . $node->title; + } + + unset($node->json); + + return $node; +} + +/** + * Implementation of hook_load(). + */ +function jsdoc_object_load($node, $method = FALSE) { + // TODO: Deal with alias + _jsdoc_init(); + + $additions = db_fetch_object(db_query("SELECT json, did FROM {jsdoc_objects} WHERE nid = %d", $node->nid)); + $additions->title = $node->title; + $additions->json = unserialize($additions->json); + $node->jsdoc_version = $additions->jsdoc_version = node_load($additions->did); + + _jsdoc_convert_object($additions, $additions->json, $node, $method); + + return $additions; +} + +/** + * Implementation of hook_view(). + */ +function jsdoc_object_view($node, $teaser = false, $page = false) { + $node->teaser = ''; + $node->body = ''; + if (!$teaser) { + $node->body = l($node->title, $node->jsdoc_url); + } + $node->title = t('Object'); + $node->taxonomy = array(); + $node = node_prepare($node, $teaser); + return $node; +} + +/** + * Path: admin/settings/jsdoc + */ +function jsdoc_admin() { + $form = array(); + + $formats = filter_formats(); + $options = array(); + foreach ($formats as $format) { + $options[$format->format] = $format->name; + } + + $form['jsdoc_input_format'] = array( + '#title' => t('Default Input Format'), + '#type' => 'radios', + '#options' => $options, + '#required' => true, + '#default_value' => variable_get('jsdoc_input_format', 1) + ); + + return system_settings_form($form); +} + +function jsdoc_get_version(&$node = FALSE) { + if (!$node) { + foreach (jsdoc_get_versions() as $version) { + if ($version->title != 'HEAD') { + return $version; + } + } + } + return $node->jsdoc_version; +} + +function jsdoc_get_versions($node = FALSE, $title = NULL) { + static $cache = array(); + $versions = array(); + + if ($node) { + if ($node->title) { + $cache_key = $node->title; + if ($cache[$cache_key]) { + return $cache[$cache_key]; + } + } + $with_json = ($title) ? ', j.json' : ''; + $query = db_query("SELECT j.did AS nid $with_json FROM {jsdoc_objects} j INNER JOIN {node} n ON (n.nid = j.nid) WHERE n.title = '%s' GROUP BY j.did", $node->title); + } + else { + $cache_key = '%ALL%'; + if (isset($cache[$cache_key])) { + return $cache[$cache_key]; + } + $query = db_query("SELECT nid FROM {node} WHERE type = 'jsdoc_doc' ORDER BY nid DESC"); + } + + while ($version = db_fetch_object($query)) { + if ($version->json && $node->title != $title) { + $parts = explode('.', $title); + if (count($parts) > 1) { + $last = array_pop($parts); + $parent = implode('.', $parts); + $found = FALSE; + $json = unserialize($version->json); + $properties = array(); + if ($json->methods) { + $properties = array_merge($properties, $json->methods); + } + if ($json->properties) { + $properties = array_merge($properties, $json->properties); + } + foreach ($properties as $property) { + if ($property->scope == 'normal' && $property->name == $title) { + $found = TRUE; + break; + } + elseif ($property->name == $last) { + $found = TRUE; + break; + } + } + if (!$found) { + continue; + } + } + } + $versions[] = node_load($version->nid); + } + + if ($cache_key) { + $cache[$cache_key] = $versions; + } + + return $versions; +} + +function jsdoc_get_return_summary(&$node) { + if (isset($node->jsdoc_return_summary_formatted)) { + return $node->jsdoc_return_summary_formatted; + } + + return ($node->jsdoc_return_summary_formatted = trim(preg_replace('%(^

                                                                      |

                                                                      $)%', '', str_replace("\n", ' ', $object->jsdoc_return_summary)))); +} + +function jsdoc_get_return_types(&$node) { + if (empty($node->jsdoc_return_types)) { + return array(); + } + return $node->jsdoc_return_types; +} + +function jsdoc_get_parameters(&$node) { + if (isset($node->jsdoc_formatted_parameters)) { + return $node->jsdoc_formatted_parameters; + } + + if (empty($node->jsdoc_parameters)) { + $node->jsdoc_parameters = array(); + } + + foreach ($node->jsdoc_parameters as $i => $parameter) { + $node->jsdoc_parameters[$i]->jsdoc_formatted = _jsdoc_format_type($parameter->type, false, $parameter->usage == 'optional', $parameter->usage == 'repeating' || $parameter->usage == 'one-or-more'); + } + + return ($node->jsdoc_formatted_parameters = $node->jsdoc_parameters); +} + +function jsdoc_get_examples(&$node, $markedup=false) { + if (empty($node->jsdoc_examples)) { + return array(); + } + if (isset($node->jsdoc_formatted_examples)) { + return $node->jsdoc_formatted_examples; + } + + $examples = array(); + foreach ($node->jsdoc_examples as $example) { + $examples[] = _jsdoc_markup_text($example, jsdoc_get_version($node), $node->title); + } + + return ($node->jsdoc_formatted_examples = $examples); +} + +function jsdoc_get_parent_prototype(&$node) { + if ($node->jsdoc_superclass) { + return jsdoc_object_node_load($node->jsdoc_superclass, jsdoc_get_version($node)); + } +} + +function jsdoc_is_initialized(&$node) { + return false; +} + +function jsdoc_get_tags(&$node) { + if (empty($node->jsdoc_tags)) { + return array(); + } + return $node->jsdoc_tags; +} + +function jsdoc_is_classlike(&$node) { + return $node->jsdoc_classlike; +} + +function jsdoc_get_teaser(&$node) { + if (isset($node->formatted_teaser)) { + return $node->formatted_teaser; + } + + return ($node->formatted_teaser = $node->teaser); +} + +function jsdoc_get_body(&$node) { + $version = jsdoc_get_version($node)->title; + $body = trim($node->body); + $variables = _jsdoc_get_variables(); + foreach (array_unique(preg_split('%\s+%', strip_tags($body))) as $variable) { + if ($variables[$variable] && $variable != $node->title) { + $body = str_replace($variable, l($variable, 'jsdoc/' . $version . '/' . $variable), $body); + } + } + return $body; +} + +function jsdoc_is_function(&$node) { + return (jsdoc_get_type($node) == 'Function' || jsdoc_get_type($node) == 'Constructor'); +} + +function jsdoc_is_private(&$node) { + return $node->jsdoc_private; +} + +function jsdoc_is_protected(&$node) { + return $node->jsdoc_protected; +} + +function jsdoc_is_deprecated(&$node) { + return $node->jsdoc_deprecated; +} + +function jsdoc_has_private_parent(&$node) { + foreach (jsdoc_get_namespace_parents($node) as $parent) { + if ($parent->jsdoc_private) { + return true; + } + } + + return $node->jsdoc_private_parent; +} + +function jsdoc_get_type(&$node) { + if (isset($node->jsdoc_type)) { + return $node->jsdoc_type; + } + + if (is_object($node->type)) { + $type = $node->type->title; + } + else { + $type = $node->jsdoc_raw_type; + unset($node->jsdoc_raw_type); + } + + if ($type == 'Function') { + if (jsdoc_is_classlike($node)) { + $type = 'Constructor'; + } + elseif (count(jsdoc_get_child_instances($node, true)) || count(jsdoc_get_child_prototypes($node, true))) { + $type = 'Constructor'; + } + } + + return ($node->jsdoc_type = $type); +} + +function jsdoc_get_resource(&$node) { + if (count($node->jsdoc_resources) == 1) { + return $node->jsdoc_resources[0]; + } +} + +function jsdoc_get_source($node, $resolve=false, $depth=0) { + return ''; +} + +function jsdoc_get_provide(&$node) { + if (count($node->jsdoc_provides) == 1) { + return $node->jsdoc_provides[0]; + } +} + +function jsdoc_get_mixins(&$node, $type = NULL) { + if (empty($node->jsdoc_mixins)) { + return array(); + } + if (isset($node->jsdoc_resolved_mixins)) { + return $type ? $node->jsdoc_resolved_mixins[$type] : $node->jsdoc_resolved_mixins; + } + + $version = jsdoc_get_version($node); + $resolved_mixins = array('prototype' => array(), 'instance' => array(), 'normal' => array()); + foreach ($node->jsdoc_mixins as $from => $mixins) { + foreach ($mixins as $mixin) { + $location = $mixin->location; + if (substr($location, -10) == '.prototype') { + $location = substr($location, 0, -10); + } + $mixin_node = jsdoc_object_node_load($location, $version); + if ($mixin_node->nid) { + $resolved_mixins[$from][] = (object)array( + 'attached' => $node, + 'scope' => $mixin->scope, + 'node' => $mixin_node + ); + } + } + } + + $node->jsdoc_resolved_mixins = $resolved_mixins; + + return jsdoc_get_mixins($node, $type); +} + +function _jsdoc_get_attributes($attribute, &$node, $is_method, $scope) { + $attribute = 'jsdoc_' . $attribute; + + $items = array(); + if (!empty($node->$attribute)) { + foreach ($node->$attribute as $item){ + $converted = (object)array( + 'title' => "{$node->title}.{$item->name}", + 'name' => $item->name + ); + if ($scope) { + $scopes = explode('-', $item->scope); + if (in_array($scope, $scopes)) { + $items[] = _jsdoc_convert_object($converted, $item, $node, $is_method); + } + } + else { + $items[] = _jsdoc_convert_object($converted, $item, $node, $is_method); + } + } + } + + if (!$scope || $scope == 'normal') { + $query = db_query("SELECT n.nid, n.title FROM {node} AS n INNER JOIN {jsdoc_objects} AS j ON (j.nid = n.nid) WHERE n.title LIKE '%s.%%' AND j.did = %d", $node->title, jsdoc_get_version($node)->nid); + while ($result = db_fetch_object($query)) { + $parts = explode('.', $result->title); + $name = array_pop($parts); + if (implode('.', $parts) == $node->title) { + $item = node_load($result->nid); + $item->name = $name; + if ($is_method) { + if ($item->jdsoc_raw_type == 'Function') { + $items[] = $item; + } + } + else { + $items[] = $item; + } + } + } + } + + return $items; +} + +function jsdoc_get_methods(&$node, $scope = NULL) { + return _jsdoc_get_attributes('methods', $node, TRUE, $scope); +} + +function jsdoc_get_properties(&$node, $scope = NULL) { + return _jsdoc_get_attributes('properties', $node, FALSE, $scope); +} + +function jsdoc_get_child_instances() { + return array(); +} + +function jsdoc_get_child_prototypes() { + return array(); +} + +function jsdoc_is_namespace(&$node) { + return !!$node->nid && $node->jsdoc_raw_type != 'Function'; +} + + +// Node Load Functions +// =================== + +/** + * Custom version of node_load for versions + */ +function jsdoc_version_node_load($version_name) { + return node_load(array( + 'type' => 'jsdoc_doc', + 'title' => $version_name + )); +} + +function jsdoc_object_node_load($name, $version=false, $exact=true, $broad=false) { + $nodes = jsdoc_object_nodes_load($name, $version, $exact, $broad); + if (count($nodes) == 1) { + return $nodes[0]; + } + elseif (!empty($nodes)) { + $version = jsdoc_get_version(); + foreach($nodes as $match) { + if ($match->version->nid == $version->nid) { + return $match; + } + } + } + return (object)array(); +} + +/** + * Custom version of node_load for objects + */ +function jsdoc_object_nodes_load($name, $version=false, $exact=true, $broad=false) { + static $cache = array(); + + $lower_name = strtolower($name); + + $override_name = false; + $name_override = $name; + + if ($lower_name == 'bool') { + $name = 'Boolean'; + } + elseif ($lower_name == 'int' || $lower_name == 'integer') { + $override_name = true; + $name_override = 'Integer'; + $name = 'Number'; + } + elseif ($lower_name == 'float' || $lower_name == 'decimal') { + $override_name = true; + $name_override = ucfirst($lower_name); + $name = 'Number'; + } + + $global_vars = array('Array', 'Boolean', 'Date', 'Error', 'Function', 'Number', 'Object', 'RegExp', 'String'); + $lower_global_vars = array('array', 'boolean', 'date', 'error', 'function', 'number', 'object', 'regexp', 'string'); + if (($pos = array_search($lower_name, $lower_global_vars)) !== false) { + $name = $global_vars[$pos]; + } + + if (in_array($name, $global_vars)) { + return array((object)array( + 'title' => ($override_name) ? $name_override : $name, + 'jsdoc_url' => 'http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:' . $name + )); + } + elseif ($lower_name == 'window') { + return array((object)array( + 'title' => $name, + 'jsdoc_url' => 'http://developer.mozilla.org/en/docs/DOM:window' + )); + } + elseif ($lower_name == 'documentelement' || $lower_name == 'document') { + return array((object)array( + 'title' => $name, + 'jsdoc_url' => 'http://developer.mozilla.org/en/docs/DOM:document' + )); + } + elseif (in_array($lower_name, array('node', 'htmlelment', 'domnode'))) { + return array((object)array( + 'title' => $name, + 'jsdoc_url' => 'http://developer.mozilla.org/en/docs/DOM:element' + )); + } + elseif ($name == 'Constructor') { + return array((object)array( + 'title' => $name, + 'jsdoc_url' => 'http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Class-Based_vs._Prototype-Based_Languages#Defining_a_Class' + )); + } + + // Resolve the version the best that we can + if (is_object($version) && $version->nid) { + $version_nid = $version->nid; + } + elseif (is_string($version)) { + $version_nid = jsdoc_version_node_load($version)->nid; + } + elseif (is_numeric($version)) { + $version_nid = $version; + } + + if ($version_nid && (!is_object($version) || !$version->nid)) { + $version = node_load($version_nid); + } + + if ($name) { + $cache_key = sprintf('%s,%s,%s,%s', $name, $version_nid, $exact, $broad); + if (isset($cache[$cache_key])) { + $nodes = array(); + foreach ($cache[$cache_key] as $nid) { + $nodes[] = node_load($nid); + } + if (empty($nodes)) { + if ($broad) { + return array((object)array( + 'title' => $name + )); + } + else { + return array(); + } + } + return $nodes; + } + + // We have a few situations: + // name + // project, name + // project, version, name + // project, version, resource, name + + // If we're missing the version, assume the latest release + // If we're missing the project, look up stuff by name + + $binary = ($exact) ? 'BINARY' : ''; + $title_check = ($exact) ? "= '%s'" : "LIKE '%%%s%%'"; + $nodes = array(); + $results = array(); + + if ($version_nid) { + $query = db_query("SELECT n.nid FROM {node} n INNER JOIN {jsdoc_objects} j ON (j.nid = n.nid) WHERE n.title $title_check AND $binary n.title $title_check AND j.did = %d", $name, $name, $version_nid); + } + else { + $version_nids = array(-1); + foreach (jsdoc_get_versions() as $version) { + $version_nids[] = $version->nid; + } + $query = db_query("SELECT n.nid, j.did, version.title AS version FROM {node} n INNER JOIN {jsdoc_objects} j ON (j.nid = n.nid) INNER JOIN {node} version ON (version.nid = j.did) WHERE n.title $title_check AND $binary n.title $title_check AND j.did IN (%s) ORDER BY version.created DESC", $name, $name, implode(',', $version_nids)); + } + + while ($result = db_fetch_object($query)) { + if ($result->version) { + if ($result->version != 'HEAD') { + $nodes[] = node_load($result->nid); + break; + } + } + else { + $nodes[] = node_load($result->nid); + } + } + + $cache[$cache_key] = array_map('_jsdoc_extract_nids', $nodes); + } + + if (empty($nodes)) { + if ($broad) { + return array((object)array( + 'title' => $name + )); + } + else { + return array(); + } + } + + return $nodes; +} + +function _jsdoc_extract_nids($node) { + return $node->nid; +} + +function jsdoc_parameter_weight_sort($a, $b){ + return ($a['weight'] == $b['weight']) ? 0 : ($a['weight'] < $b['weight']) ? -1 : 1; +} + +/** + * Path: jsdoc/404 + */ +function jsdoc_404() { + $args = explode('/', $_REQUEST['destination']); + if (count($args) == 1 && $args[0] != 'jsdoc') { + global $_menu; + unset($_menu['items']); + menu_set_active_item('jsdoc/' . $args[0]); + print theme('page', menu_execute_active_handler()); + exit(); + } + + return '

                                                                      ' . t('The page you requested was not found.') . '

                                                                      '; +} + +/** + * Path: jsdoc/feedback + */ +function jsdoc_feedback() { + $count = 0; + if ($_POST['page'] && $_POST['feedback']) { + $feedback = array(); + if ($cached = cache_get('jsdoc_feedback')) { + $feedback = unserialize($cached->data); + } + + if (!isset($feedback[$_POST['page']][$_POST['feedback']])) { + $feedback[$_POST['page']][$_POST['feedback']] = 0; + } + + $count = ++$feedback[$_POST['page']][$_POST['feedback']]; + + cache_set('jsdoc_feedback', 'cache', serialize($feedback)); + } + + print $count; +} + +function jsdoc_feedback_review() { + drupal_set_title(t('Feedback Review')); + + $feedback = array(); + if ($cached = cache_get('jsdoc_feedback')) { + $feedback = unserialize($cached->data); + } + + $by_count = array(); + foreach ($feedback as $page => $stats) { + $total = 0; + foreach ($stats as $type => $count) { + $total += $count; + } + $by_count[$total][] = array( + 'page' => $page, + 'feedback' => $stats + ); + } + + krsort($by_count); + + $output = '
                                                                        '; + foreach ($by_count as $pages) { + foreach ($pages as $page) { + $output .= '
                                                                      • ' . l($page['page'], sprintf('jsdoc/%s', $page['page'])) . '
                                                                          '; + foreach ($page['feedback'] as $type => $count) { + $output .= '
                                                                        • ' . $type . ': ' . $count . '
                                                                        • '; + } + $output .= '
                                                                      • '; + } + } + $output .= '
                                                                      '; + + return $output; +} + +/** + * Path: jsdoc/jsonp + */ +function jsdoc_jsonp($batch=false, $json=false) { + $recursion = false; + if ($json) { + $recursion = true; + $_JSON = $json; + } + else { + $_JSON = array(); + foreach (explode('&', getenv('QUERY_STRING')) as $query_string) { + list($key, $value) = explode('=', $query_string, 2); + $value = urldecode($value); + if (isset($_JSON[$key])) { + if (!is_array($_JSON[$key])) { + $_JSON[$key] = array($_JSON[$key]); + } + $_JSON[$key][] = $value; + } + else { + $_JSON[$key] = $value; + } + } + } + + $names = array(); + if ($batch) { + $names = (is_array($_JSON['names'])) ? $_JSON['names'] : array($_JSON['names']); + } + else { + $names = array($_JSON['name']); + } + + $attributes = ($_JSON['attributes']) ? $_JSON['attributes'] : array('summary', 'type', 'returns', 'parameters'); + if (!is_array($attributes)) { + $attributes = array($attributes); + } + + foreach ($names as $name) { + if (empty($name)) { + continue; + } + if ($_JSON['exact']) { + if ($nodes = jsdoc_object_node_load($name, $_JSON['version'], true)){ + $nodes = array($nodes); + } + } + else { + $nodes = jsdoc_object_nodes_load($name, $_JSON['version'], false); + } + foreach ($nodes as $node) { + $formatted = (object)array('name' => $name); + foreach ($attributes as $attribute) { + switch ($attribute) { + case 'summary': + $formatted->summary = jsdoc_get_teaser($node); + break; + case 'type': + $formatted->type = jsdoc_get_type($node); + break; + case 'returns': + $formatted->returns = array( + 'types' => array(), + 'summary' => jsdoc_get_return_summary($node) + ); + foreach (jsdoc_get_return_types($node) as $type) { + $themed = _jsdoc_get_type_themed($type->type, $node, true); + if ($themed) { + $formatted->returns['types'][] = $themed; + } + else { + $formatted->returns['types'][] = array( + 'title' => $type + ); + } + } + case 'parameters': + $formatted->parameters = _jsdoc_get_parameters_themed($node, true); + if (!count($formatted->parameters)) { + unset($formatted->parameters); + } + break; + } + } + if ($_JSON['recursive']) { + $children = array_keys(jsdoc_get_child_variables($node)); + if (!empty($children)) + $formatted->children = jsdoc_jsonp(true, array( + 'attributes' => $_JSON['attributes'], + 'names' => $children, + 'recursive' => $_JSON['recursive'] + )); + } + $output[] = $formatted; + } + } + + $found = array(); + foreach ($output as $object) { + $found[] = $object->name; + } + foreach (array_diff($names, $found) as $name) { + $output[] = (object)array( + 'name' => $name + ); + } + + if ($recursion) { + return $output; + } + print $_GET['callback'] . '(' . str_replace('"__className":"stdClass",', '', json_encode($output)) . ');'; +} + +function jsdoc_get_closest($name, $version) { + $node = jsdoc_object_node_load($name, $version); + if (!$node->nid) { + $parts = explode('.', $name); + while (!$node->nid) { + array_pop($parts); + if (empty($parts)) { + break; + } + $node = jsdoc_object_node_load(implode('.', $parts), $version); + } + } + return $node; +} + +function _jsdoc_resolve_child($node, $name) { + list($prototype_chain, $mixin_chain, $children) = jsdoc_get_oo_info($node, $name); + + $actual = (object)array( + 'title' => $name, + 'jsdoc_version' => jsdoc_get_version($node) + ); + + foreach ($children as $possible) { + if ($possible->title == $name || $node->title . '.' . $possible->title == $name) { + $actual = $possible->node; + $actual->type = $possible->type; + unset($actual->jsdoc_type); + break; + } + } + + $actual->format = $node->format; + $actual->title = $name; + + if (empty($actual->teaser) && empty($actual->body)) { + $actual->teaser = ' '; + $actual->body = ' '; + } + + return $actual; +} + +/** + * A menu callback + * Will only ever be a function or property + */ +function jsdoc_child_node_view($node, $name) { + $actual = _jsdoc_resolve_child($node, $name); + + drupal_set_title(theme('jsdoc_object_title', _jsdoc_get_title_themed($actual))); + + $form = _jsdoc_node_prepare($actual); + + if ($provide = jsdoc_get_provide($actual)) { + $form['require'] = array( + '#value' => theme('jsdoc_object_require', $provide), + '#weight' => -20 + ); + } + + if ($resource = jsdoc_get_resource($actual)) { + $form['resource'] = array( + '#value' => theme('jsdoc_object_resource', jsdoc_get_resource($node)) + ); + } + + $examples = array(); + foreach (jsdoc_get_examples($actual, true) as $weight => $example) { + $examples[] = theme('jsdoc_object_example', $example, $weight + 1); + } + if (!empty($examples)) { + $form['examples'] = array( + '#value' => theme('jsdoc_object_examples', $examples), + '#weight' => 35 + ); + } + + if (jsdoc_is_function($actual)) { + $parameters = _jsdoc_get_parameters_themed($actual); + + if (count($parameters)) { + $form['parameters'] = array( + '#value' => theme('jsdoc_function_parameters', $parameters, _jsdoc_get_object_themed($actual, $actual->title)), + '#weight' => 20 + ); + } + + $function = (object)array( + 'source' => jsdoc_get_source($actual, true), + 'markedup' => _jsdoc_markup_code(jsdoc_get_source($actual, true), jsdoc_get_version($node)->nid, $actual->title, FALSE), + 'signature' => _jsdoc_build_function_signature($actual, $parameters) + ); + if (count($parameters)) { + $function->parameters = $parameters; + } + + $form['function'] = array( + '#value' => theme('jsdoc_function_information', $function, $children, _jsdoc_get_object_themed($actual, $actual->title)), + '#weight' => 30 + ); + } + elseif (($object = jsdoc_object_node_load(jsdoc_get_type($actual), jsdoc_get_version($node))) && $object->nid) { + list($prototype_chain, $mixin_chain, $children) = jsdoc_get_oo_info($object); + + $theme_children = array(); + foreach ($children as $child) { + if ($child->instance || $child->prototype) { + $theme_children[] = $child; + } + } + + if (count($theme_children)) { + $form['children'] = array( + '#value' => theme('jsdoc_object_children', $theme_children), + '#weight' => 40 + ); + } + } + + return drupal_render_form('jsdoc_child_form', $form); +} + +/** + * Climbs up the prototype chain through mixins + * + * Move down the prototype chain + * The prototype chains of the parents have already been calculated + * For each one, inject its resolved mixins above the current class + */ +function _jsdoc_resolve_mixins($node, $from) { + $resolved_mixins = array(); + + $all_mixins = array(); + if ($from == 'prototype') { + $prototype_chain = jsdoc_get_prototype_chain($node); + foreach ($prototype_chain as $parent) { + if (!$parent->nid) { continue; } + $all_mixins[] = $parent; + } + } + $all_mixins[] = $node; + + foreach ($all_mixins as $parent) { + foreach (jsdoc_get_mixins($parent, $from) as $mixin) { + foreach (_jsdoc_resolve_mixins($mixin->node, $from) as $other_mixin) { + if (!$other_mixin->node->nid) { continue; } + $resolved_mixins[] = $other_mixin; + } + $resolved_mixins[] = $mixin; + } + $resolved_mixins[] = (object)array( + 'attached' => $node, + 'scope' => 'prototype', + 'node' => $parent + ); + } + + for ($i = 0; $i < count($resolved_mixins); $i++) { + for ($j = $i + 1; $j < count($resolved_mixins); $j++) { + if ($resolved_mixins[$i]->node->title == $resolved_mixins[$j]->node->title) { + array_splice($resolved_mixins, $i, 1); + continue 2; + } + } + } + + return $resolved_mixins; +} + +function jsdoc_get_oo_info(&$node, $child=NULL) { + if (isset($node->jsdoc_oo_info)) { + return $node->jsdoc_oo_info; + } + + $returned_mixin_chain = array(); + $mixin_chain = array(); + + if (jsdoc_is_classlike($node)) { + $prototype_chain = jsdoc_get_prototype_chain($node); + + // Start out with simply the prototype chain + $prototype_chain_values = array(); + foreach ($prototype_chain as $prototype) { + if ($prototype->nid) { + $prototype_chain_values[] = $prototype->title; + } + } + + // Resolve prototype-level items + foreach (_jsdoc_resolve_mixins($node, 'prototype') as $mixin) { + $mixin_chain[] = (object)array( + 'attached' => $mixin->attached, + 'scope' => 'prototype', + 'from' => $mixin->scope, + 'methods' => jsdoc_get_methods($mixin->node, $mixin->scope), + 'properties' => jsdoc_get_properties($mixin->node, $mixin->scope), + 'in_prototype_chain' => in_array($mixin->node->title, $prototype_chain_values), + 'node' => $mixin->node + ); + } + + $returned_mixin_chain = array(); + $returned_mixin_titles = array(); + foreach ($mixin_chain as $mixin) { + if ($mixin->in_prototype_chain || $mixin->attached->title == $node->title) { + if ($mixin->node->title != $node->title && !$returned_mixin_titles[$mixin->node->title]) { + $returned_mixin_titles[$mixin->node->title] = TRUE; + $returned_mixin_chain[] = $mixin; + } + } + } + + $mixin_chain[] = (object)array( + 'scope' => 'prototype', + 'from' => 'prototype', + 'methods' => jsdoc_get_methods($node, 'prototype'), + 'properties' => jsdoc_get_properties($node, 'prototype'), + 'in_prototype_chain' => true, + 'node' => $node + ); + + // Now with instance-level items + + foreach (_jsdoc_resolve_mixins($node, 'instance') as $mixin) { + $mixin_chain[] = (object)array( + 'scope' => 'instance', + 'from' => $mixin->scope, + 'methods' => jsdoc_get_methods($mixin->node, $mixin->scope), + 'properties' => jsdoc_get_properties($mixin->node, $mixin->scope), + 'in_prototype_chain' => in_array($mixin->node->title, $prototype_chain_values), + 'node' => $mixin->node + ); + } + + $mixin_chain[] = (object)array( + 'scope' => 'instance', + 'from' => 'instance', + 'methods' => jsdoc_get_methods($node, 'instance'), + 'properties' => jsdoc_get_properties($node, 'instance'), + 'in_prototype_chain' => false, + 'node' => $node + ); + + array_pop($prototype_chain); + } + + $mixin_chain[] = (object)array( + 'scope' => 'normal', + 'from' => 'instance', + 'methods' => jsdoc_get_methods($node, 'normal'), + 'properties' => jsdoc_get_properties($node, 'normal'), + 'in_prototype_chain' => false, + 'node' => $node + ); + + $child_attribute = false; + if ($child) { + list($child_attribute) = array_slice(explode('.', $child), -1); + } + $children = array(); + foreach ($mixin_chain as $mixin) { + foreach (array('methods', 'properties') as $child_type) { + foreach ($mixin->$child_type as $item) { + list($item_attribute) = array_slice(explode('.', $item->title), -1); + + if ($child_attribute && $item_attribute != $child_attribute) { + continue; + } + + if ($mixin->scope == 'normal') { + $title = $item->title; + } + else { + $title = $item_attribute; + } + + if (jsdoc_get_type($item) == 'Constructor' && ($resolved = jsdoc_resolve_constructor($item))) { + $item->jsdoc_parameters = $resolved->jsdoc_parameters; + $item->jsdoc_return_summary = $resolved->jsdoc_return_summary; + $item->jsdoc_return_types = $resolved->jsdoc_return_types; + $item->teaser = $resolved->teaser; + } + + if ($children[$title]) { + $found = false; + if ($children[$title]->inheritance) { + foreach ($children[$title]->inheritance as $parent) { + if ($parent->title == $mixin->node->title) { + $found = true; + break; + } + } + } + if (!$found) { + if ($mixin->node->title == $node->title) { + $children[$title]->override = true; + } + else { + $children[$title]->inheritance[] = _jsdoc_get_object_themed($mixin->node); + } + $inherited = _jsdoc_get_object_themed($item, $title); + foreach ($inherited as $key => $value) { + if ($key == 'summary' && trim($value) == '') { + continue; + } + $children[$title]->$key = $value; + } + } + } + else { + $children[$title] = _jsdoc_get_object_themed($item, $title); + $children[$title]->node = $item; + if ($mixin->node->title != $node->title && ($mixin->scope != 'normal' || implode('.', array_slice(explode('.', $title), 0, -1)) != $node->title)) { + $children[$title]->inheritance[] = _jsdoc_get_object_themed($mixin->node); + } + } + + $scope = $mixin->scope; + $children[$title]->$scope = TRUE; + + if ($title == $item->title) { + $children[$title]->actual_title = $title; + } + else { + $children[$title]->actual_title = $mixin->node->title . '.' . $title; + } + + $type = $item->jsdoc_scope; + $children[$title]->$type = true; + + if (trim(jsdoc_get_teaser($item)) != '') { + $children[$title]->summary = jsdoc_get_teaser($item); + } + } + } + } + uksort($children, "strnatcasecmp"); + + return ($node->jsdoc_oo_info = array($prototype_chain, $returned_mixin_chain, $children)); +} + +/** + * A menu callback + * Will only ever be a constructor or namespace + */ +function jsdoc_object_node_view($node) { + ini_set('memory_limit', '128M'); + // Test for the basics + if (!$node) { + return drupal_not_found(); + } + + drupal_set_title(theme('jsdoc_object_title', _jsdoc_get_title_themed($node))); + + if (empty($node->teaser) && empty($node->body)) { + $node->teaser = ' '; + $node->body = ' '; + } + + $form = _jsdoc_node_prepare($node); + + if ($provide = jsdoc_get_provide($node)) { + $form['require'] = array( + '#value' => theme('jsdoc_object_require', $provide), + '#weight' => -20 + ); + } + + if ($resource = jsdoc_get_resource($node)) { + $form['resource'] = array( + '#value' => theme('jsdoc_object_resource', jsdoc_get_resource($node)) + ); + } + + $examples = array(); + foreach (jsdoc_get_examples($node, true) as $weight => $example) { + $examples[] = theme('jsdoc_object_example', $example, $weight + 1); + } + if (!empty($examples)) { + $form['examples'] = array( + '#value' => theme('jsdoc_object_examples', $examples), + '#weight' => 35 + ); + } + + list($prototype_chain, $mixin_chain, $children) = jsdoc_get_oo_info($node); + + if (jsdoc_is_classlike($node)) { + $form['prototype_chain'] = array( + '#value' => theme('jsdoc_object_prototype_chain', $prototype_chain), + '#weight' => 10 + ); + } + + if (!empty($mixin_chain)) { + $form['parent_mixins'] = array( + '#value' => theme('jsdoc_object_mixins', $mixin_chain), + '#weight' => 40 + ); + } + + if (jsdoc_is_function($node)) { + $actual = $node; + if (jsdoc_is_classlike($node)) { + $actual = jsdoc_resolve_constructor($node); + } + + $parameters = _jsdoc_get_parameters_themed($actual); + + if (count($parameters)) { + $form['parameters'] = array( + '#value' => theme('jsdoc_function_parameters', $parameters, _jsdoc_get_object_themed($node, $node->title)), + '#weight' => 20 + ); + } + + $base = false; + if (jsdoc_get_type($node) == 'Constructor') { + $base = $node->title; + } + + $function = (object)array( + 'source' => jsdoc_get_source($actual, true), + 'markedup' => _jsdoc_markup_code(jsdoc_get_source($actual, true), jsdoc_get_version($node)->nid, $actual->title, $base), + 'signature' => _jsdoc_build_function_signature($actual, $parameters) + ); + if (count($parameters)) { + $function->parameters = $parameters; + } + + $form['function'] = array( + '#value' => theme('jsdoc_function_information', $function, $children, _jsdoc_get_object_themed($node, $node->title)), + '#weight' => 30 + ); + } + + if (count($children)) { + $form['children'] = array( + '#value' => theme('jsdoc_object_children', $children), + '#weight' => 40 + ); + } + + if (function_exists('comment_render') && $node->comment) { + $form['comments'] = array( + '#value' => comment_render($node), + '#weight' => 50 + ); + } + + return drupal_render_form('jsdoc_object_form', $form); +} + +function _jsdoc_get_title_themed($node) { + $themed = _jsdoc_get_object_themed($node); + $themed->crumbs = array(); + + if ($type = jsdoc_get_type($node)) { + $type = jsdoc_object_node_load($type, jsdoc_get_version($node)); + $themed->type = (object)array( + 'title' => $type->title, + 'url' => $type->jsdoc_url + ); + if ($type->jsdoc_url) { + $themed->type->a = l($type->title, $type->jsdoc_url); + } + else { + $themed->type->a = $type->title; + } + } + + $themed->return = (object)array( + 'types' => array(), + 'summary' => jsdoc_get_return_summary($node) + ); + foreach (jsdoc_get_return_types($node) as $type) { + $themed->return->types[] = _jsdoc_get_type_themed($type->type, $node, false); + } + + $parts = explode('.', $node->title); + $title_text = ""; + $end = array_pop($parts); + foreach ($parts as $part) { + if (!empty($title_text)) { + $title_text .= '.'; + } + $title_text .= $part; + + $obj = jsdoc_object_node_load($title_text, jsdoc_get_version($node)); + if ($obj->nid) { + $themed->crumbs[] = l($part, $obj->jsdoc_url); + } + else { + $themed->crumbs[] = $part; + } + } + $themed->crumbs[] = $end; + + drupal_set_breadcrumb($themed->crumbs); + + return $themed; +} + +function _jsdoc_get_object_themed(&$node, $title=null, $depth=0) { + if (is_null($title)) { + $title = $node->title; + } + if (isset($node->jsdoc_object_themed)) { + return $node->jsdoc_object_themed; + } + + $object = $node->jsdoc_object_themed = (object)array( + 'title' => $title, + 'url' => $node->jsdoc_url, + 'tags' => jsdoc_get_tags($node), + 'summary' => jsdoc_get_teaser($node), + 'singleton' => jsdoc_is_initialized($node), + 'namespace' => jsdoc_is_namespace($node) && !jsdoc_is_classlike($node), + 'private' => jsdoc_is_private($node), + 'protected' => jsdoc_is_protected($node), + 'deprecated' => jsdoc_is_deprecated($node), + 'private_parent' => jsdoc_has_private_parent($node) + ); + + if ($object->url) { + $object->a = l($node->title, $node->jsdoc_url); + } + else { + $object->a = $object->title; + } + + if ($type = jsdoc_get_type($node)) { + $optional = false; + if (strpos($type, '?') !== false){ + $optional = true; + $type = str_replace('?', '', $type); + } + $repeating = false; + if (strpos($type, '...') !== false){ + $repeating = true; + $type = str_replace('...', '', $type); + } + + $type = jsdoc_object_node_load($type, jsdoc_get_version($node)); + + $object->type = (object)array( + 'title' => $type->title, + 'url' => $type->jsdoc_url, + 'optional' => $optional, + 'repeating' => $repeating + ); + + if ($type->jsdoc_url) { + $object->type->a = l($type->title, $type->jsdoc_url); + } + else { + $object->type->a = $type->title; + } + + if (jsdoc_is_function($node)) { + $parameters = _jsdoc_get_parameters_themed($node, false, $depth); + if (!empty($parameters)) { + $object->parameters = $parameters; + } + + $object->return = (object)array( + 'types' => array(), + 'summary' => jsdoc_get_return_summary($node) + ); + foreach (jsdoc_get_return_types($node) as $type) { + $object->return->types[] = _jsdoc_get_type_themed($type->type, $node, false); + } + + $signature = _jsdoc_build_function_signature($node, $parameters); + if (!empty($signature)) { + $object->signature = $signature; + } + + $source = jsdoc_get_source($node, true, $depth); + if (!empty($source)) { + $object->source = $source; + } + } + } + + return ($node->jsdoc_object_themed = $object); +} + +function jsdoc_resolve_constructor(&$node) { + if ($node->jsdoc_resolved_constructor) { + return $node->jsdoc_resolved_constructor; + } + + if ($node->jsdoc_constructor) { + $constructor = (object)array(); + _jsdoc_convert_object($constructor, $node->jsdoc_constructor, $node, TRUE); + return ($node->jsdoc_resolved_constructor = $constructor); + } + + $superclass = jsdoc_get_parent_prototype($node); + while ($superclass) { + $constructor = (object)array(); + _jsdoc_convert_object($constructor, $superclass->jsdoc_constructor, $node, TRUE); + if ($constructor->jsdoc_parameters) { + return ($node->jsdoc_resolved_constructor = $constructor); + } + $superclass = jsdoc_get_parent_prototype($superclass); + } + + return ($node->jsdoc_resolved_constructor = $node->jsdoc_constructor); +} + +function _jsdoc_get_fields($type, &$node) { + // I basically want to find the children of this as + // if it appeared in the normal API. + static $cache = array(); + $version = jsdoc_get_version($node); + if (isset($cache[$version->title][$type])) { + return $cache[$version->title][$type]; + } + + $fields = $cache[$version->title][$type] = array(); + $obj = jsdoc_object_node_load($type, $version, TRUE, TRUE); + // It will have an nid if it's local. For example type: Function isn't local + if ($obj && $obj->nid) { + list($prototype_chain, $mixin_chain, $children) = jsdoc_get_oo_info($obj); + + foreach ($children as $child) { + $title = $child->title; + + $field = (object)array( + 'title' => $title, + 'summary' => $child->summary, + 'types' => false + ); + if (!$cleaned) { + $field->url = 'jsdoc/' . $version->title . '/' . $obj->title . '.' . $child->title; + $field->a = l($title, $field->url); + } + + $field_types = preg_split('%\|+%', jsdoc_get_type($child)); + foreach ($field_types as $field_type) { + $found = 0; + $field_type = str_replace('?', '', $field_type, $found); + $optional = ($found > 0); + $found = 0; + $field_type = str_replace('...', '', $field_type, $found); + $repeating = ($found > 0); + + $field_obj = jsdoc_object_node_load($field_type, $version); + $field_type = (object)array( + 'title' => $field_obj->title, + 'repeating' => $repeating, + 'optional' => $optional, + 'summary' => jsdoc_get_teaser($field_obj) + ); + if (!$cleaned) { + $field_type->url = $field_obj->jsdoc_url; + $field_type->a = l($field_obj->title, $field_obj->jsdoc_url); + } + $field->types[] = $field_type; + } + + $fields[$field->title] = $field; + } + + if (empty($fields)) { + return; + }else{ + uksort($fields, 'strnatcasecmp'); + return ($cache[$version->title][$type] = $fields); + } + } +} + +function _jsdoc_get_type_themed($type, $node, $cleaned){ + $obj = jsdoc_object_node_load($type, jsdoc_get_version($node), TRUE, TRUE); + if ($obj) { + $type = (object)array( + 'title' => $obj->title, + 'summary' => jsdoc_get_teaser($obj), + 'fields' => false + ); + if (!$cleaned && $obj->jsdoc_url) { + $type->url = $obj->jsdoc_url; + $type->a = l($obj->title, $obj->jsdoc_url); + } + + return $type; + } +} + +function _jsdoc_get_parameters_themed(&$node, $cleaned=false) { + if (isset($node->jsdoc_parameters_themed)) { + return $node->jsdoc_parameters_themed; + } + + $parameters = $node->jsdoc_parameters_themed = array(); + $retrieved_parameters = jsdoc_get_parameters($node); + + foreach ($retrieved_parameters as $item) { + $parameter = (object)$item->jsdoc_formatted; + $parameter->summary = $item->summary; + $parameter->name = $item->name; + $parameter->optional = $item->usage == 'optional'; + $parameter->repeating = $item->usage == 'repeating' || $item->usage == 'one-or-more'; + $parameter->types = false; + if ($cleaned) { + unset($parameter->html_type_prefix); + unset($parameter->html_type_suffix); + unset($parameter->separator); + } + + $type = $item->type; + $types = array(); + if (strpos($type, '|') !== false) { + $types = preg_split('%\s*\|+\s*%', $type); + } + elseif ($type) { + $types = array($type); + } + + foreach ($types as $type) { + if ($type = _jsdoc_get_type_themed($type, $node, $cleaned)) { + $type->fields = _jsdoc_get_fields($type->title, $node); + $parameter->types[] = $type; + } + } + + if (empty($parameter->types)) { + unset($parameter->html_type_prefix); + unset($parameter->html_type_suffix); + unset($parameter->separator); + } + + unset($parameter->type); + $parameters[] = $parameter; + } + + return ($node->jsdoc_parameters_themed = $parameters); +} + +function _jsdoc_format_type($type, $classlike = false, $optional = false, $repeating = false) { + $output = array(); + $name = ''; + + if ($type) { + $output['html_type_prefix'] = '/*'; + $output['html_type_suffix'] = '*/'; + $output['type'] = $type; + if ($type == 'Function' && $classlike) { + $output['type'] = 'Constructor'; + } + if ($optional) { + $output['type'] .= '?'; + } + if ($repeating) { + $output['type'] .= '...'; + } + } + if ($type) { + $output['separator'] .= ' '; + } + + return $output; +} + +function _jsdoc_flatten(&$item, $key) { + if (is_object($item)) { + $item = $item->title; + } +} + +function jsdoc_get_namespace_parents(&$node) { + if (isset($node->jsdoc_namespace_parents)) { + return $node->jsdoc_namespace_parents; + } + + $parents = array(); + + $parts = explode('.', $node->title); + array_pop($parts); + while (count($parts)) { + $parents[] = jsdoc_object_node_load(implode('.', $parts), jsdoc_get_version($node)); + array_pop($parts); + } + + return ($node->jsdoc_namespace_parents = $parents); +} + +function jsdoc_get_prototype_chain(&$node) { + if (isset($node->jsdoc_prototype_chain)) { + return $node->jsdoc_prototype_chain; + } + + $chain = array($node); + + $superclass = $node->jsdoc_superclass; + while ($superclass) { + $superclass = jsdoc_object_node_load($superclass, jsdoc_get_version($node)); + $chain[] = $superclass; + $superclass = $superclass->jsdoc_superclass; + } + + $chain[] = jsdoc_object_node_load('Object'); + + return ($node->jsdoc_prototype_chain = array_reverse($chain)); +} + +function jsdoc_current_node($node=null) { + static $current; + if (is_null($node)) { + return $current; + } + $current = $node; +} + +function _jsdoc_build_function_signature($node, $parameters) { + if (isset($node->jsdoc_function_signature)) { + return $node->jsdoc_function_signature; + } + + if (jsdoc_get_type($node) != 'Function' && jsdoc_get_type($node) != 'Constructor') { + return; + } + + $signature = '('; + + if ($parameters) { + foreach ($parameters as $weight => $parameter) { + if ($weight) { + $signature .= ', '; + } + $types = array(); + if ($parameter->types) { + foreach ($parameter->types as $type) { + $types[] = $type->a; + } + } + $signature .= $parameter->html_type_prefix . implode('|', $types); + if ($parameter->optional) { + $signature .= '?'; + } + if ($parameter->repeating) { + $signature .= '...'; + } + $signature .= $parameter->html_type_suffix . $parameter->separator . $parameter->name; + } + } + + $signature .= ')'; + + return ($node->jsdoc_function_signature = $signature); +} + +function _jsdoc_resource_expand($tree, $child, $depth, &$resources){ + $output = array(); + foreach ($tree as $leaf) { + if ($leaf->depth == $depth && in_array($child, $leaf->children) && !in_array($leaf->vid, $resources)) { + $resources[] = $leaf->vid; + $output[] = $leaf; + } + } + + return $output; +} + +function _jsdoc_file_location() { + static $location; + + if (!isset($location)) { + $location = variable_get('jsdoc_file_location', false); + } + + return $location; +} + +function _jsdoc_dir_location() { + static $location; + + if (!isset($location)) { + $location = variable_get('jsdoc_dir_location', false); + } + + return $location; +} + +function _jsdoc_base() { + static $base; + + if (!isset($base)) { + $base = variable_get('jsdoc_base', 'jsdoc'); + } + + return $base; +} + +function _jsdoc_build_terms($title) { + $output = array($title, array()); + $parts = explode('.', $title); + foreach ($parts as $part) { + if (preg_match('%^[_.$]*([a-zA-Z][a-z0-9_.$]*(?:[A-Z][a-z0-9_.$]*)+)%', $part, $match)) { + if (preg_match_all('%(^[a-zA-Z][a-z0-9_.$]*|[A-Z][a-z0-9_.$]*)%', $match[1], $cased)) { + $output[1] = array_merge($output[1], $cased[0]); + } + } + } + $output[1] = implode(' ', $output[1]); + $output[2] = implode(' ', $parts); + return $output; +} + +function _jsdoc_get_base_path() { + static $path; + + if (!isset($path)) { + $path = getcwd(); + } + + return $path; +} + +function _jsdoc_cron_chdir($enter=false) { + static $location; + + if ($enter) { + $location = _jsdoc_get_base_path(); + if (!is_dir(_jsdoc_dir_location())){ + print t('Check Drupal logs for errors'); + watchdog('jsdoc', _jsdoc_dir_location() . t(' should be a directory'), WATCHDOG_ERROR); + return false; + } + if (!@chdir(_jsdoc_dir_location())) { + print t('Check Drupal logs for errors'); + watchdog('jsdoc', _jsdoc_dir_location() . t(' could not be accessed'), WATCHDOG_ERROR); + return false; + } + include_once(_jsdoc_file_location()); + } + else { + chdir($location); + } +} + +// Private Utility Functions +// ========================= + +function _jsdoc_theme_clone($node) { + $clone = drupal_clone($node); + foreach ($clone as $key => $value) { + if (substr($key, 0, 6) == 'jsdoc_') { + unset($clone->$key); + } + } + return $clone; +} + +function _jsdoc_node_prepare($node) { + $node->format = variable_get('jsdoc_input_format', 1); + + $form = node_prepare($node)->content; + $form['summary']['#weight'] = $form['body']['#weight'] - 1; + + $teaser = jsdoc_get_teaser($node); + if (!$node->body || $node->body == t('n/a')) { + $node->body = $teaser; + $teaser = ''; + } + $body = jsdoc_get_body($node); + if ($body == t('n/a')) { + $body = ''; + } + + $form['summary']['#value'] = theme('jsdoc_object_summary', $teaser); + $form['description']['#value'] = theme('jsdoc_object_description', $teaser, $body); + + unset($form['body']); + + return $form; +} + +function _jsdoc_get_variables() { + static $variables; + if (empty($variables)) { + if ($variables = cache_get('jsdoc_variables')) { + $variables = unserialize($variables->data); + } + else { + $variables = array(); + $query = db_query("SELECT variable FROM {jsdoc_variables}"); + while ($variable = db_fetch_object($query)) { + if (preg_match('%^(dojo|dijit|dojox)\.%', $variable->variable)) { + $variables[$variable->variable] = TRUE; + } + } + cache_set('jsdoc_variables', 'cache', serialize($variables), time() + 86400); + } + } + + return $variables; +} + +function _jsdoc_markup_code($text, $version, $exclude, $base=false) { + $variables = _jsdoc_get_variables(); + + $min = 99; + $lines = preg_split('%\r?\n%', $text); + foreach ($lines as $line) { + if (!empty($line)) { + if (preg_match('%^\t+%', $line, $match)) { + if (strlen($match[0]) < $min) { + $min = strlen($match[0]); + } + } + } + } + if ($min) { + foreach ($lines as $i => $line) { + $lines[$i] = preg_replace('%^\t{' . $min . '}%', '', $line); + } + } + $text = implode("\n", $lines); + + _jsdoc_init(); + $language = 'javascript'; + if (preg_match('%(^\W*<|>\W*$)%', $text)) { + $language = 'html4strict'; + } + $highlighter =& new GeSHi($text, $language); + $highlighter->enable_classes(); + $highlighter->enable_keyword_links(false); + $highlighter->set_overall_style('color: #666;', true); + $highlighter->set_tab_width(4); + $highlighter->add_keyword_group(4, '', true, array('Math', 'Error', 'Array')); + $text = $highlighter->parse_code(); + $replaced = array(); + if (preg_match_all('%[\w.$]+(?:\.(?:)?[\w.$]+(?:)?)+%', $text, $matches)) { + natcasesort(array_unique($matches[0])); + $matches = array_reverse($matches[0]); + foreach ($matches as $i => $match) { + $variable = preg_replace('%<[^>]+>%', '', $match); + if ($variables && $variables[$variable] && $variable != $exclude) { + $replaced[$i] = $match; + $text = str_replace($match, "%$i%", $text); + } + } + foreach ($matches as $i => $match) { + $variable = preg_replace('%<[^>]+>%', '', $match); + if ($variables && $variables[$variable]) { + $text = str_replace("%$i%", l($match, 'jsdoc/' . $version->title . '/' . $variable, array('style' => 'border-bottom: 1px dotted #ccc;'), NULL, NULL, FALSE, TRUE), $text); + } + } + } + if ($base && preg_match_all('%this(\.(?:[\w.$]+)+)%', $text, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) { + $variable = $base . preg_replace('%<[^>]+>%', '', $match[1]); + if ($variables && $variables[$variable]) { + $version = node_load($variables[$variable]); + $text = str_replace($match[0], l($match[0], 'jsdoc/' . $version->title . '/' . $variable, array('style' => 'border-bottom: 1px dotted #ccc;'), NULL, NULL, FALSE, TRUE), $text); + } + } + } + return $text; +} + +function _jsdoc_markup_text($text, $version, $exclude, $format = false){ + if (!$format) { + $format = variable_get('jsdoc_input_format', 1); + } + + $lines = array(); + $tabbed = FALSE; + foreach (explode("\n", $text) as $line) { + if ($line{0} == "\t") { + if (!$tabbed) { + if (empty($lines)) { + $lines[] = ""; + } + $lines[] = ""; + } + $tabbed = TRUE; + } + else { + $tabbed = FALSE; + } + $lines[] = $line; + } + $text = implode("\n", $lines); + + $tokens = array(); + if (preg_match_all('%`([^`]+)`%', $text, $matches)) { + foreach (array_unique($matches[0]) as $i => $match) { + $code = substr($match, 1, -1); + $tokens[$i] = "$code"; + $text = str_replace($match, "!$i!", $text); + } + } + + $text = check_markup($text, $format, FALSE); + + if (preg_match_all('%(?:\s*(?:
                                                                      |)\s*)+(.*?)(?:\s*(?:
                                                                      |)\s*)+%s', $text, $matches, PREG_SET_ORDER)) { + foreach ($matches as $match) { + $match[1] = str_replace('<', '<', str_replace('>', '>', $match[1])); + $text = str_replace($match[0], _jsdoc_markup_code($match[1], $version, $exclude), $text); + } + } + + foreach ($tokens as $i => $token) { + $text = str_replace("!$i!", $token, $text); + } + + return $text; +} + +function _jsdoc_init() { + include_once(_jsdoc_get_base_path() . '/' . drupal_get_path('module', 'jsdoc') . '/lib/geshi/geshi.php'); + drupal_add_css(drupal_get_path('module', 'jsdoc') . '/jsdoc.css'); +} + +// Theme functions +// =============== + +/** + * When an object occurs in more than one file, we want + * to show this to the user so that they can choose + * the likely location until we disambiguate it. + */ +function theme_jsdoc_object_resources($node, $resources) { + $output = '
                                                                      '; + $output .= '
                                                                      '; + $output .= 'Appears in Resources'; + $output .= '
                                                                      '; + foreach ($resources as $resource) { + $output .= '
                                                                      '; + $output .= $resource->href; + $output .= '
                                                                      '; + } + $output .= '
                                                                      '; + $output .= '
                                                                      '; + $output .= '
                                                                      '; + + return $output; +} + +/** + * Theme the object type block. + */ +function theme_jsdoc_object_title($title) { + $output = implode('.', $title->crumbs); + if ($title->type) { + $output .= ': ' . $title->type->a; + } + return $output; +} + +/** + * Theme the statement used to require this file + */ +function theme_jsdoc_object_require($require) { + return '
                                                                      include "' . $require . '";
                                                                      '; +} + +/** + * Theme the location this file exists in + */ +function theme_jsdoc_object_resource($resource) { + return '
                                                                      ' . $resource . '
                                                                      '; +} + +/** + * Theme the list of mixins for a given object + */ +function theme_jsdoc_object_mixins($mixins) { + $output = '
                                                                      '; + $counter = 0; + foreach ($mixins as $mixin) { + if ($mixin->in_prototype_chain) { + continue; + } + if ($counter) { + $output .= ', '; + } + if (!$mixin->from == 'normal') { + $output .= '[static] '; + } + $output .= l($mixin->node->title, $mixin->node->jsdoc_url); + if ($mixin->mixin_from) { + $output .= ' (from ' . $mixin->mixin_from . ')'; + } + + ++$counter; + } + if(!$counter){ $output .= 'None'; } + return $output . '
                                                                      '; +} + +function theme_jsdoc_object_children($children) { + $output = '
                                                                      '; + $output .= '
                                                                      '; + $output .= 'Fields'; + $output .= '
                                                                      '; + + foreach ($children as $child) { + $output .= '
                                                                      '; + $output .= l($child->title, $child->url); + if ($child->type && $key!='Functions' && $key!="Constructors") { + $output .= ': ' . $child->type->a . ' '; + } + if($child->signature){ + $output .= $child->signature; + } + else if($key=="Functions"){ + $output .= '() '; + } + if ($child->inheritance) { + $output .= '
                                                                      '; + if ($child->override) { + $output .= ' Overrides '; + } + else { + $output .= ' Defined by '; + } + foreach ($child->inheritance as $i => $parent) { + if ($i) { + $output .= ', '; + } + $output .= l($parent->title, $parent->url); + } + $output .= '
                                                                      '; + } + if ($child->summary) { + $output .= '
                                                                      ' . str_replace("<", "<", str_replace(">", ">", $child->summary)) . '
                                                                      '; + } + $output .= '
                                                                      '; + } + + $output .= '
                                                                      '; + $output .= '
                                                                      '; + $output .= '
                                                                      '; + + return $output; +} + +/** + * Theme the prototype chain + */ +function theme_jsdoc_object_prototype_chain($chain) { + $output = '
                                                                      ' ; + foreach ($chain as $i => $node) { + if ($i) { + $output .= ' » '; + } + $output .= l($node->title, $node->jsdoc_url); + } + return $output .= '
                                                                      '; +} + +function theme_jsdoc_object_parent($node) { + return '
                                                                      ' . $node->object_type_link . '
                                                                      '; +} + +/** + * Theme the function signature and source. + * + * One of the things to note is that we pass fields + * because the constructor isn't always listed as the + * constructor because of the famous dojo.declare + */ +function theme_jsdoc_function_information($function, $fields, $obj) { + $output .= '
                                                                      '; + $output .= '
                                                                      '; + $output .= '' . 'Function Information' . ''; + $output .= '
                                                                      '; + $output .= '
                                                                      '; + $output .= 'function ' . $function->signature; + $output .= '
                                                                      '; + $output .= '
                                                                      '; + $output .= '
                                                                      '; + $output .= '
                                                                      '; + + return $output; +} + +function theme_jsdoc_function_parameters($parameters, $node) { + $output = '
                                                                      '; + $output .= '
                                                                      '; + $output .= '' . 'Parameters' . ''; + $output .= '
                                                                      '; + foreach ($parameters as $parameter) { + $output .= '
                                                                      '; + $output .= $parameter->summary; + if (count($types) && $parameter->types[0]->fields) { + if ($parameter->summary && $parameter->types[0]->summary) { + $output .= '

                                                                      '; + } + $output .= $parameter->types[0]->summary; + if ($parameter->types[0]->summary) { + $output .= '
                                                                      '; + } + foreach ($parameter->types[0]->fields as $i => $field) { + $output .= '
                                                                      '; + + $field_types = array(); + $repeating = false; + $optional = false; + if ($field->types) { + foreach ($field->types as $type) { + if ($type->repeating) { + $repeating = true; + } + if ($type->optional) { + $optional = true; + } + $field_types[] = '' . $type->a . ''; + } + } + + $output .= '    '; + if (count($field_types)) { + $output .= implode('|', $field_types) . ' '; + } + $output .= $field->a; + if ($repeating) { + $output .= ' repeating'; + } + if ($optional) { + $output .= ' optional'; + } + if ($field->summary) { + $output .= ': ' . $field->summary; + } + } + } + $output .= '
                                                                      '; + } + $output .= '
                                                                      '; + $output .= '
                                                                      '; + $output .= '
                                                                      '; + + return $output; +} + +function theme_jsdoc_object_summary($summary) { + return ''; +} + +function theme_jsdoc_object_description($summary, $description) { + return $summary . $description; +} + +function theme_jsdoc_object_example($example, $weight) { + return '
                                                                      ' . $example . '
                                                                      '; +} + +function theme_jsdoc_object_examples($examples) { + $output = '
                                                                      '; + $output .= '
                                                                      '; + $output .= 'Examples'; + $output .= '
                                                                      '; + $output .= implode('', $examples); + $output .= '
                                                                      '; + return $output; +} + +function theme_jsdoc_search($name) { + return '
                                                                      '; +} + +function theme_jsdoc_namespaces($namespaces, $version) { + $output = '
                                                                        '; + foreach ($namespaces as $namespace) { + $output .= "
                                                                      • {$namespace->a}"; + if (!empty($namespace->children)) { + $output .= '
                                                                          '; + foreach ($namespace->children as $child) { + $output .= "
                                                                        • {$child->a}
                                                                        • "; + } + $output .= '
                                                                        '; + } + $output .= "
                                                                      • "; + } + $output .= '
                                                                      '; + return $output; +} + +function theme_jsdoc_resource_source_link($project, $resource) { + return $resource; +} + +function theme_jsdoc_resolve_constructor($objects) { +} + +function theme_jsdoc_ide($content){ + return theme('page', $content); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/lib/EXTERNALS b/js/dojo-release-1.7.2-src/util/jsdoc/lib/EXTERNALS new file mode 100644 index 0000000..99383c7 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/lib/EXTERNALS @@ -0,0 +1,2 @@ +Get the GeSHi package from: http://qbnz.com/highlighter/ and place in the directory. +It should be placed so that geshi.php is in lib/geshi/geshi.php \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/jsdoc/template.php b/js/dojo-release-1.7.2-src/util/jsdoc/template.php new file mode 100644 index 0000000..1d561b9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/jsdoc/template.php @@ -0,0 +1,16 @@ + $children)); +} \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/less/LICENSE b/js/dojo-release-1.7.2-src/util/less/LICENSE new file mode 100644 index 0000000..40f3b78 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/LICENSE @@ -0,0 +1,179 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +Copyright (c) 2009-2010 Alexis Sellier diff --git a/js/dojo-release-1.7.2-src/util/less/README b/js/dojo-release-1.7.2-src/util/less/README new file mode 100644 index 0000000..5d91786 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/README @@ -0,0 +1,7 @@ +See http://lesscss.org/ for details on this package, and +https://github.com/cloudhead/less.js/blob/master/README.md for the original README file. + +Files in this directory pulled from: https://github.com/cloudhead/less.js/tree/master/lib/less, +except for LICENSE which is from https://github.com/cloudhead/less.js/blob/master/LICENSE. + +The version is: 1.1.4. diff --git a/js/dojo-release-1.7.2-src/util/less/browser.js b/js/dojo-release-1.7.2-src/util/less/browser.js new file mode 100755 index 0000000..ae2667d --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/browser.js @@ -0,0 +1,369 @@ +// +// browser.js - client-side engine +// + +var isFileProtocol = (location.protocol === 'file:' || + location.protocol === 'chrome:' || + location.protocol === 'chrome-extension:' || + location.protocol === 'resource:'); + +less.env = less.env || (location.hostname == '127.0.0.1' || + location.hostname == '0.0.0.0' || + location.hostname == 'localhost' || + location.port.length > 0 || + isFileProtocol ? 'development' + : 'production'); + +// Load styles asynchronously (default: false) +// +// This is set to `false` by default, so that the body +// doesn't start loading before the stylesheets are parsed. +// Setting this to `true` can result in flickering. +// +less.async = false; + +// Interval between watch polls +less.poll = less.poll || (isFileProtocol ? 1000 : 1500); + +// +// Watch mode +// +less.watch = function () { return this.watchMode = true }; +less.unwatch = function () { return this.watchMode = false }; + +if (less.env === 'development') { + less.optimization = 0; + + if (/!watch/.test(location.hash)) { + less.watch(); + } + less.watchTimer = setInterval(function () { + if (less.watchMode) { + loadStyleSheets(function (root, sheet, env) { + if (root) { + createCSS(root.toCSS(), sheet, env.lastModified); + } + }); + } + }, less.poll); +} else { + less.optimization = 3; +} + +var cache; + +try { + cache = (typeof(window.localStorage) === 'undefined') ? null : window.localStorage; +} catch (_) { + cache = null; +} + +// +// Get all tags with the 'rel' attribute set to "stylesheet/less" +// +var links = document.getElementsByTagName('link'); +var typePattern = /^text\/(x-)?less$/; + +less.sheets = []; + +for (var i = 0; i < links.length; i++) { + if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) && + (links[i].type.match(typePattern)))) { + less.sheets.push(links[i]); + } +} + + +less.refresh = function (reload) { + var startTime, endTime; + startTime = endTime = new(Date); + + loadStyleSheets(function (root, sheet, env) { + if (env.local) { + log("loading " + sheet.href + " from cache."); + } else { + log("parsed " + sheet.href + " successfully."); + createCSS(root.toCSS(), sheet, env.lastModified); + } + log("css for " + sheet.href + " generated in " + (new(Date) - endTime) + 'ms'); + (env.remaining === 0) && log("css generated in " + (new(Date) - startTime) + 'ms'); + endTime = new(Date); + }, reload); + + loadStyles(); +}; +less.refreshStyles = loadStyles; + +less.refresh(less.env === 'development'); + +function loadStyles() { + var styles = document.getElementsByTagName('style'); + for (var i = 0; i < styles.length; i++) { + if (styles[i].type.match(typePattern)) { + new(less.Parser)().parse(styles[i].innerHTML || '', function (e, tree) { + styles[i].type = 'text/css'; + styles[i].innerHTML = tree.toCSS(); + }); + } + } +} + +function loadStyleSheets(callback, reload) { + for (var i = 0; i < less.sheets.length; i++) { + loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1)); + } +} + +function loadStyleSheet(sheet, callback, reload, remaining) { + var url = window.location.href.replace(/[#?].*$/, ''); + var href = sheet.href.replace(/\?.*$/, ''); + var css = cache && cache.getItem(href); + var timestamp = cache && cache.getItem(href + ':timestamp'); + var styles = { css: css, timestamp: timestamp }; + + // Stylesheets in IE don't always return the full path + if (! /^(https?|file):/.test(href)) { + if (href.charAt(0) == "/") { + href = window.location.protocol + "//" + window.location.host + href; + } else { + href = url.slice(0, url.lastIndexOf('/') + 1) + href; + } + } + + xhr(sheet.href, sheet.type, function (data, lastModified) { + if (!reload && styles && lastModified && + (new(Date)(lastModified).valueOf() === + new(Date)(styles.timestamp).valueOf())) { + // Use local copy + createCSS(styles.css, sheet); + callback(null, sheet, { local: true, remaining: remaining }); + } else { + // Use remote copy (re-parse) + try { + new(less.Parser)({ + optimization: less.optimization, + paths: [href.replace(/[\w\.-]+$/, '')], + mime: sheet.type + }).parse(data, function (e, root) { + if (e) { return error(e, href) } + try { + callback(root, sheet, { local: false, lastModified: lastModified, remaining: remaining }); + removeNode(document.getElementById('less-error-message:' + extractId(href))); + } catch (e) { + error(e, href); + } + }); + } catch (e) { + error(e, href); + } + } + }, function (status, url) { + throw new(Error)("Couldn't load " + url + " (" + status + ")"); + }); +} + +function extractId(href) { + return href.replace(/^[a-z]+:\/\/?[^\/]+/, '' ) // Remove protocol & domain + .replace(/^\//, '' ) // Remove root / + .replace(/\?.*$/, '' ) // Remove query + .replace(/\.[^\.\/]+$/, '' ) // Remove file extension + .replace(/[^\.\w-]+/g, '-') // Replace illegal characters + .replace(/\./g, ':'); // Replace dots with colons(for valid id) +} + +function createCSS(styles, sheet, lastModified) { + var css; + + // Strip the query-string + var href = sheet.href ? sheet.href.replace(/\?.*$/, '') : ''; + + // If there is no title set, use the filename, minus the extension + var id = 'less:' + (sheet.title || extractId(href)); + + // If the stylesheet doesn't exist, create a new node + if ((css = document.getElementById(id)) === null) { + css = document.createElement('style'); + css.type = 'text/css'; + css.media = sheet.media || 'screen'; + css.id = id; + document.getElementsByTagName('head')[0].appendChild(css); + } + + if (css.styleSheet) { // IE + try { + css.styleSheet.cssText = styles; + } catch (e) { + throw new(Error)("Couldn't reassign styleSheet.cssText."); + } + } else { + (function (node) { + if (css.childNodes.length > 0) { + if (css.firstChild.nodeValue !== node.nodeValue) { + css.replaceChild(node, css.firstChild); + } + } else { + css.appendChild(node); + } + })(document.createTextNode(styles)); + } + + // Don't update the local store if the file wasn't modified + if (lastModified && cache) { + log('saving ' + href + ' to cache.'); + cache.setItem(href, styles); + cache.setItem(href + ':timestamp', lastModified); + } +} + +function xhr(url, type, callback, errback) { + var xhr = getXMLHttpRequest(); + var async = isFileProtocol ? false : less.async; + + if (typeof(xhr.overrideMimeType) === 'function') { + xhr.overrideMimeType('text/css'); + } + xhr.open('GET', url, async); + xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5'); + xhr.send(null); + + if (isFileProtocol) { + if (xhr.status === 0) { + callback(xhr.responseText); + } else { + errback(xhr.status, url); + } + } else if (async) { + xhr.onreadystatechange = function () { + if (xhr.readyState == 4) { + handleResponse(xhr, callback, errback); + } + }; + } else { + handleResponse(xhr, callback, errback); + } + + function handleResponse(xhr, callback, errback) { + if (xhr.status >= 200 && xhr.status < 300) { + callback(xhr.responseText, + xhr.getResponseHeader("Last-Modified")); + } else if (typeof(errback) === 'function') { + errback(xhr.status, url); + } + } +} + +function getXMLHttpRequest() { + if (window.XMLHttpRequest) { + return new(XMLHttpRequest); + } else { + try { + return new(ActiveXObject)("MSXML2.XMLHTTP.3.0"); + } catch (e) { + log("browser doesn't support AJAX."); + return null; + } + } +} + +function removeNode(node) { + return node && node.parentNode.removeChild(node); +} + +function log(str) { + if (less.env == 'development' && typeof(console) !== "undefined") { console.log('less: ' + str) } +} + +function error(e, href) { + var id = 'less-error-message:' + extractId(href); + + var template = ['
                                                                        ', + '
                                                                      • {0}
                                                                      • ', + '
                                                                      • {current}
                                                                      • ', + '
                                                                      • {2}
                                                                      • ', + '
                                                                      '].join('\n'); + + var elem = document.createElement('div'), timer, content; + + elem.id = id; + elem.className = "less-error-message"; + + content = '

                                                                      ' + (e.message || 'There is an error in your .less file') + + '

                                                                      ' + '

                                                                      ' + href + " "; + + if (e.extract) { + content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':

                                                                      ' + + template.replace(/\[(-?\d)\]/g, function (_, i) { + return (parseInt(e.line) + parseInt(i)) || ''; + }).replace(/\{(\d)\}/g, function (_, i) { + return e.extract[parseInt(i)] || ''; + }).replace(/\{current\}/, e.extract[1].slice(0, e.column) + '' + + e.extract[1].slice(e.column) + ''); + } + elem.innerHTML = content; + + // CSS for error messages + createCSS([ + '.less-error-message ul, .less-error-message li {', + 'list-style-type: none;', + 'margin-right: 15px;', + 'padding: 4px 0;', + 'margin: 0;', + '}', + '.less-error-message label {', + 'font-size: 12px;', + 'margin-right: 15px;', + 'padding: 4px 0;', + 'color: #cc7777;', + '}', + '.less-error-message pre {', + 'color: #ee4444;', + 'padding: 4px 0;', + 'margin: 0;', + 'display: inline-block;', + '}', + '.less-error-message pre.ctx {', + 'color: #dd4444;', + '}', + '.less-error-message h3 {', + 'font-size: 20px;', + 'font-weight: bold;', + 'padding: 15px 0 5px 0;', + 'margin: 0;', + '}', + '.less-error-message a {', + 'color: #10a', + '}', + '.less-error-message .error {', + 'color: red;', + 'font-weight: bold;', + 'padding-bottom: 2px;', + 'border-bottom: 1px dashed red;', + '}' + ].join('\n'), { title: 'error-message' }); + + elem.style.cssText = [ + "font-family: Arial, sans-serif", + "border: 1px solid #e00", + "background-color: #eee", + "border-radius: 5px", + "-webkit-border-radius: 5px", + "-moz-border-radius: 5px", + "color: #e00", + "padding: 15px", + "margin-bottom: 15px" + ].join(';'); + + if (less.env == 'development') { + timer = setInterval(function () { + if (document.body) { + if (document.getElementById(id)) { + document.body.replaceChild(elem, document.getElementById(id)); + } else { + document.body.insertBefore(elem, document.body.firstChild); + } + clearInterval(timer); + } + }, 10); + } +} + diff --git a/js/dojo-release-1.7.2-src/util/less/functions.js b/js/dojo-release-1.7.2-src/util/less/functions.js new file mode 100755 index 0000000..804b9e6 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/functions.js @@ -0,0 +1,174 @@ +(function (tree) { + +tree.functions = { + rgb: function (r, g, b) { + return this.rgba(r, g, b, 1.0); + }, + rgba: function (r, g, b, a) { + var rgb = [r, g, b].map(function (c) { return number(c) }), + a = number(a); + return new(tree.Color)(rgb, a); + }, + hsl: function (h, s, l) { + return this.hsla(h, s, l, 1.0); + }, + hsla: function (h, s, l, a) { + h = (number(h) % 360) / 360; + s = number(s); l = number(l); a = number(a); + + var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + var m1 = l * 2 - m2; + + return this.rgba(hue(h + 1/3) * 255, + hue(h) * 255, + hue(h - 1/3) * 255, + a); + + function hue(h) { + h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h); + if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; + else if (h * 2 < 1) return m2; + else if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6; + else return m1; + } + }, + hue: function (color) { + return new(tree.Dimension)(Math.round(color.toHSL().h)); + }, + saturation: function (color) { + return new(tree.Dimension)(Math.round(color.toHSL().s * 100), '%'); + }, + lightness: function (color) { + return new(tree.Dimension)(Math.round(color.toHSL().l * 100), '%'); + }, + alpha: function (color) { + return new(tree.Dimension)(color.toHSL().a); + }, + saturate: function (color, amount) { + var hsl = color.toHSL(); + + hsl.s += amount.value / 100; + hsl.s = clamp(hsl.s); + return hsla(hsl); + }, + desaturate: function (color, amount) { + var hsl = color.toHSL(); + + hsl.s -= amount.value / 100; + hsl.s = clamp(hsl.s); + return hsla(hsl); + }, + lighten: function (color, amount) { + var hsl = color.toHSL(); + + hsl.l += amount.value / 100; + hsl.l = clamp(hsl.l); + return hsla(hsl); + }, + darken: function (color, amount) { + var hsl = color.toHSL(); + + hsl.l -= amount.value / 100; + hsl.l = clamp(hsl.l); + return hsla(hsl); + }, + fadein: function (color, amount) { + var hsl = color.toHSL(); + + hsl.a += amount.value / 100; + hsl.a = clamp(hsl.a); + return hsla(hsl); + }, + fadeout: function (color, amount) { + var hsl = color.toHSL(); + + hsl.a -= amount.value / 100; + hsl.a = clamp(hsl.a); + return hsla(hsl); + }, + spin: function (color, amount) { + var hsl = color.toHSL(); + var hue = (hsl.h + amount.value) % 360; + + hsl.h = hue < 0 ? 360 + hue : hue; + + return hsla(hsl); + }, + // + // Copyright (c) 2006-2009 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein + // http://sass-lang.com + // + mix: function (color1, color2, weight) { + var p = weight.value / 100.0; + var w = p * 2 - 1; + var a = color1.toHSL().a - color2.toHSL().a; + + var w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; + var w2 = 1 - w1; + + var rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2, + color1.rgb[1] * w1 + color2.rgb[1] * w2, + color1.rgb[2] * w1 + color2.rgb[2] * w2]; + + var alpha = color1.alpha * p + color2.alpha * (1 - p); + + return new(tree.Color)(rgb, alpha); + }, + greyscale: function (color) { + return this.desaturate(color, new(tree.Dimension)(100)); + }, + e: function (str) { + return new(tree.Anonymous)(str instanceof tree.JavaScript ? str.evaluated : str); + }, + escape: function (str) { + return new(tree.Anonymous)(encodeURI(str.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29")); + }, + '%': function (quoted /* arg, arg, ...*/) { + var args = Array.prototype.slice.call(arguments, 1), + str = quoted.value; + + for (var i = 0; i < args.length; i++) { + str = str.replace(/%[sda]/i, function(token) { + var value = token.match(/s/i) ? args[i].value : args[i].toCSS(); + return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value; + }); + } + str = str.replace(/%%/g, '%'); + return new(tree.Quoted)('"' + str + '"', str); + }, + round: function (n) { + if (n instanceof tree.Dimension) { + return new(tree.Dimension)(Math.round(number(n)), n.unit); + } else if (typeof(n) === 'number') { + return Math.round(n); + } else { + throw { + error: "RuntimeError", + message: "math functions take numbers as parameters" + }; + } + } +}; + +function hsla(hsla) { + return tree.functions.hsla(hsla.h, hsla.s, hsla.l, hsla.a); +} + +function number(n) { + if (n instanceof tree.Dimension) { + return parseFloat(n.unit == '%' ? n.value / 100 : n.value); + } else if (typeof(n) === 'number') { + return n; + } else { + throw { + error: "RuntimeError", + message: "color functions take numbers as parameters" + }; + } +} + +function clamp(val) { + return Math.min(1, Math.max(0, val)); +} + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/index.js b/js/dojo-release-1.7.2-src/util/less/index.js new file mode 100755 index 0000000..4c341f5 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/index.js @@ -0,0 +1,137 @@ +var path = require('path'), + sys = require('sys'), + fs = require('fs'); + +require.paths.unshift(path.join(__dirname, '..')); + +var less = { + version: [1, 1, 3], + Parser: require('less/parser').Parser, + importer: require('less/parser').importer, + tree: require('less/tree'), + render: function (input, options, callback) { + options = options || {}; + + if (typeof(options) === 'function') { + callback = options, options = {}; + } + + var parser = new(this.Parser)(options), + ee; + + if (callback) { + parser.parse(input, function (e, root) { + callback(e, root.toCSS(options)); + }); + } else { + ee = new(require('events').EventEmitter); + + process.nextTick(function () { + parser.parse(input, function (e, root) { + if (e) { ee.emit('error', e) } + else { ee.emit('success', root.toCSS(options)) } + }); + }); + return ee; + } + }, + writeError: function (ctx, options) { + var message = ""; + var extract = ctx.extract; + var error = []; + + options = options || {}; + + if (options.silent) { return } + + if (!ctx.index) { + return sys.error(ctx.stack || ctx.message); + } + + if (typeof(extract[0]) === 'string') { + error.push(stylize((ctx.line - 1) + ' ' + extract[0], 'grey')); + } + + error.push(ctx.line + ' ' + extract[1].slice(0, ctx.column) + + stylize(stylize(extract[1][ctx.column], 'bold') + + extract[1].slice(ctx.column + 1), 'yellow')); + + if (typeof(extract[2]) === 'string') { + error.push(stylize((ctx.line + 1) + ' ' + extract[2], 'grey')); + } + error = error.join('\n') + '\033[0m\n'; + + message += stylize(ctx.message, 'red'); + ctx.filename && (message += stylize(' in ', 'red') + ctx.filename); + + sys.error(message, error); + + if (ctx.callLine) { + sys.error(stylize('from ', 'red') + (ctx.filename || '')); + sys.error(stylize(ctx.callLine, 'grey') + ' ' + ctx.callExtract); + } + if (ctx.stack) { sys.error(stylize(ctx.stack, 'red')) } + } +}; + +['color', 'directive', 'operation', 'dimension', + 'keyword', 'variable', 'ruleset', 'element', + 'selector', 'quoted', 'expression', 'rule', + 'call', 'url', 'alpha', 'import', + 'mixin', 'comment', 'anonymous', 'value', 'javascript' +].forEach(function (n) { + require(path.join('less', 'tree', n)); +}); + +less.Parser.importer = function (file, paths, callback) { + var pathname; + + paths.unshift('.'); + + for (var i = 0; i < paths.length; i++) { + try { + pathname = path.join(paths[i], file); + fs.statSync(pathname); + break; + } catch (e) { + pathname = null; + } + } + + if (pathname) { + fs.readFile(pathname, 'utf-8', function(e, data) { + if (e) sys.error(e); + + new(less.Parser)({ + paths: [path.dirname(pathname)], + filename: pathname + }).parse(data, function (e, root) { + if (e) less.writeError(e); + callback(root); + }); + }); + } else { + sys.error("file '" + file + "' wasn't found.\n"); + process.exit(1); + } +} + +require('less/functions'); + +for (var k in less) { exports[k] = less[k] } + +// Stylize a string +function stylize(str, style) { + var styles = { + 'bold' : [1, 22], + 'inverse' : [7, 27], + 'underline' : [4, 24], + 'yellow' : [33, 39], + 'green' : [32, 39], + 'red' : [31, 39], + 'grey' : [90, 39] + }; + return '\033[' + styles[style][0] + 'm' + str + + '\033[' + styles[style][1] + 'm'; +} + diff --git a/js/dojo-release-1.7.2-src/util/less/parser.js b/js/dojo-release-1.7.2-src/util/less/parser.js new file mode 100755 index 0000000..8ca4e61 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/parser.js @@ -0,0 +1,1110 @@ +var less, tree; + +if (typeof(window) === 'undefined') { + less = exports, + tree = require('less/tree'); +} else { + if (typeof(window.less) === 'undefined') { window.less = {} } + less = window.less, + tree = window.less.tree = {}; +} +// +// less.js - parser +// +// A relatively straight-forward predictive parser. +// There is no tokenization/lexing stage, the input is parsed +// in one sweep. +// +// To make the parser fast enough to run in the browser, several +// optimization had to be made: +// +// - Matching and slicing on a huge input is often cause of slowdowns. +// The solution is to chunkify the input into smaller strings. +// The chunks are stored in the `chunks` var, +// `j` holds the current chunk index, and `current` holds +// the index of the current chunk in relation to `input`. +// This gives us an almost 4x speed-up. +// +// - In many cases, we don't need to match individual tokens; +// for example, if a value doesn't hold any variables, operations +// or dynamic references, the parser can effectively 'skip' it, +// treating it as a literal. +// An example would be '1px solid #000' - which evaluates to itself, +// we don't need to know what the individual components are. +// The drawback, of course is that you don't get the benefits of +// syntax-checking on the CSS. This gives us a 50% speed-up in the parser, +// and a smaller speed-up in the code-gen. +// +// +// Token matching is done with the `$` function, which either takes +// a terminal string or regexp, or a non-terminal function to call. +// It also takes care of moving all the indices forwards. +// +// +less.Parser = function Parser(env) { + var input, // LeSS input string + i, // current index in `input` + j, // current chunk + temp, // temporarily holds a chunk's state, for backtracking + memo, // temporarily holds `i`, when backtracking + furthest, // furthest index the parser has gone to + chunks, // chunkified input + current, // index of current chunk, in `input` + parser; + + var that = this; + + // This function is called after all files + // have been imported through `@import`. + var finish = function () {}; + + var imports = this.imports = { + paths: env && env.paths || [], // Search paths, when importing + queue: [], // Files which haven't been imported yet + files: {}, // Holds the imported parse trees + mime: env && env.mime, // MIME type of .less files + push: function (path, callback) { + var that = this; + this.queue.push(path); + + // + // Import a file asynchronously + // + less.Parser.importer(path, this.paths, function (root) { + that.queue.splice(that.queue.indexOf(path), 1); // Remove the path from the queue + that.files[path] = root; // Store the root + + callback(root); + + if (that.queue.length === 0) { finish() } // Call `finish` if we're done importing + }, env); + } + }; + + function save() { temp = chunks[j], memo = i, current = i } + function restore() { chunks[j] = temp, i = memo, current = i } + + function sync() { + if (i > current) { + chunks[j] = chunks[j].slice(i - current); + current = i; + } + } + // + // Parse from a token, regexp or string, and move forward if match + // + function $(tok) { + var match, args, length, c, index, endIndex, k, mem; + + // + // Non-terminal + // + if (tok instanceof Function) { + return tok.call(parser.parsers); + // + // Terminal + // + // Either match a single character in the input, + // or match a regexp in the current chunk (chunk[j]). + // + } else if (typeof(tok) === 'string') { + match = input.charAt(i) === tok ? tok : null; + length = 1; + sync (); + } else { + sync (); + + if (match = tok.exec(chunks[j])) { + length = match[0].length; + } else { + return null; + } + } + + // The match is confirmed, add the match length to `i`, + // and consume any extra white-space characters (' ' || '\n') + // which come after that. The reason for this is that LeSS's + // grammar is mostly white-space insensitive. + // + if (match) { + mem = i += length; + endIndex = i + chunks[j].length - length; + + while (i < endIndex) { + c = input.charCodeAt(i); + if (! (c === 32 || c === 10 || c === 9)) { break } + i++; + } + chunks[j] = chunks[j].slice(length + (i - mem)); + current = i; + + if (chunks[j].length === 0 && j < chunks.length - 1) { j++ } + + if(typeof(match) === 'string') { + return match; + } else { + return match.length === 1 ? match[0] : match; + } + } + } + + // Same as $(), but don't change the state of the parser, + // just return the match. + function peek(tok) { + if (typeof(tok) === 'string') { + return input.charAt(i) === tok; + } else { + if (tok.test(chunks[j])) { + return true; + } else { + return false; + } + } + } + + this.env = env = env || {}; + + // The optimization level dictates the thoroughness of the parser, + // the lower the number, the less nodes it will create in the tree. + // This could matter for debugging, or if you want to access + // the individual nodes in the tree. + this.optimization = ('optimization' in this.env) ? this.env.optimization : 1; + + this.env.filename = this.env.filename || null; + + // + // The Parser + // + return parser = { + + imports: imports, + // + // Parse an input string into an abstract syntax tree, + // call `callback` when done. + // + parse: function (str, callback) { + var root, start, end, zone, line, lines, buff = [], c, error = null; + + i = j = current = furthest = 0; + chunks = []; + input = str.replace(/\r\n/g, '\n'); + + // Split the input into chunks. + chunks = (function (chunks) { + var j = 0, + skip = /[^"'`\{\}\/\(\)]+/g, + comment = /\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g, + level = 0, + match, + chunk = chunks[0], + inParam, + inString; + + for (var i = 0, c, cc; i < input.length; i++) { + skip.lastIndex = i; + if (match = skip.exec(input)) { + if (match.index === i) { + i += match[0].length; + chunk.push(match[0]); + } + } + c = input.charAt(i); + comment.lastIndex = i; + + if (!inString && !inParam && c === '/') { + cc = input.charAt(i + 1); + if (cc === '/' || cc === '*') { + if (match = comment.exec(input)) { + if (match.index === i) { + i += match[0].length; + chunk.push(match[0]); + c = input.charAt(i); + } + } + } + } + + if (c === '{' && !inString && !inParam) { level ++; + chunk.push(c); + } else if (c === '}' && !inString && !inParam) { level --; + chunk.push(c); + chunks[++j] = chunk = []; + } else if (c === '(' && !inString && !inParam) { + chunk.push(c); + inParam = true; + } else if (c === ')' && !inString && inParam) { + chunk.push(c); + inParam = false; + } else { + if (c === '"' || c === "'" || c === '`') { + if (! inString) { + inString = c; + } else { + inString = inString === c ? false : inString; + } + } + chunk.push(c); + } + } + if (level > 0) { + throw { + type: 'Syntax', + message: "Missing closing `}`", + filename: env.filename + }; + } + + return chunks.map(function (c) { return c.join('') });; + })([[]]); + + // Start with the primary rule. + // The whole syntax tree is held under a Ruleset node, + // with the `root` property set to true, so no `{}` are + // output. The callback is called when the input is parsed. + root = new(tree.Ruleset)([], $(this.parsers.primary)); + root.root = true; + + root.toCSS = (function (evaluate) { + var line, lines, column; + + return function (options, variables) { + var frames = []; + + options = options || {}; + // + // Allows setting variables with a hash, so: + // + // `{ color: new(tree.Color)('#f01') }` will become: + // + // new(tree.Rule)('@color', + // new(tree.Value)([ + // new(tree.Expression)([ + // new(tree.Color)('#f01') + // ]) + // ]) + // ) + // + if (typeof(variables) === 'object' && !Array.isArray(variables)) { + variables = Object.keys(variables).map(function (k) { + var value = variables[k]; + + if (! (value instanceof tree.Value)) { + if (! (value instanceof tree.Expression)) { + value = new(tree.Expression)([value]); + } + value = new(tree.Value)([value]); + } + return new(tree.Rule)('@' + k, value, false, 0); + }); + frames = [new(tree.Ruleset)(null, variables)]; + } + + try { + var css = evaluate.call(this, { frames: frames }) + .toCSS([], { compress: options.compress || false }); + } catch (e) { + lines = input.split('\n'); + line = getLine(e.index); + + for (var n = e.index, column = -1; + n >= 0 && input.charAt(n) !== '\n'; + n--) { column++ } + + throw { + type: e.type, + message: e.message, + filename: env.filename, + index: e.index, + line: typeof(line) === 'number' ? line + 1 : null, + callLine: e.call && (getLine(e.call) + 1), + callExtract: lines[getLine(e.call)], + stack: e.stack, + column: column, + extract: [ + lines[line - 1], + lines[line], + lines[line + 1] + ] + }; + } + if (options.compress) { + return css.replace(/(\s)+/g, "$1"); + } else { + return css; + } + + function getLine(index) { + return index ? (input.slice(0, index).match(/\n/g) || "").length : null; + } + }; + })(root.eval); + + // If `i` is smaller than the `input.length - 1`, + // it means the parser wasn't able to parse the whole + // string, so we've got a parsing error. + // + // We try to extract a \n delimited string, + // showing the line where the parse error occured. + // We split it up into two parts (the part which parsed, + // and the part which didn't), so we can color them differently. + if (i < input.length - 1) { + i = furthest; + lines = input.split('\n'); + line = (input.slice(0, i).match(/\n/g) || "").length + 1; + + for (var n = i, column = -1; n >= 0 && input.charAt(n) !== '\n'; n--) { column++ } + + error = { + name: "ParseError", + message: "Syntax Error on line " + line, + index: i, + filename: env.filename, + line: line, + column: column, + extract: [ + lines[line - 2], + lines[line - 1], + lines[line] + ] + }; + } + + if (this.imports.queue.length > 0) { + finish = function () { callback(error, root) }; + } else { + callback(error, root); + } + }, + + // + // Here in, the parsing rules/functions + // + // The basic structure of the syntax tree generated is as follows: + // + // Ruleset -> Rule -> Value -> Expression -> Entity + // + // Here's some LESS code: + // + // .class { + // color: #fff; + // border: 1px solid #000; + // width: @w + 4px; + // > .child {...} + // } + // + // And here's what the parse tree might look like: + // + // Ruleset (Selector '.class', [ + // Rule ("color", Value ([Expression [Color #fff]])) + // Rule ("border", Value ([Expression [Dimension 1px][Keyword "solid"][Color #000]])) + // Rule ("width", Value ([Expression [Operation "+" [Variable "@w"][Dimension 4px]]])) + // Ruleset (Selector [Element '>', '.child'], [...]) + // ]) + // + // In general, most rules will try to parse a token with the `$()` function, and if the return + // value is truly, will return a new node, of the relevant type. Sometimes, we need to check + // first, before parsing, that's when we use `peek()`. + // + parsers: { + // + // The `primary` rule is the *entry* and *exit* point of the parser. + // The rules here can appear at any level of the parse tree. + // + // The recursive nature of the grammar is an interplay between the `block` + // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule, + // as represented by this simplified grammar: + // + // primary → (ruleset | rule)+ + // ruleset → selector+ block + // block → '{' primary '}' + // + // Only at one point is the primary rule not called from the + // block rule: at the root level. + // + primary: function () { + var node, root = []; + + while ((node = $(this.mixin.definition) || $(this.rule) || $(this.ruleset) || + $(this.mixin.call) || $(this.comment) || $(this.directive)) + || $(/^[\s\n]+/)) { + node && root.push(node); + } + return root; + }, + + // We create a Comment node for CSS comments `/* */`, + // but keep the LeSS comments `//` silent, by just skipping + // over them. + comment: function () { + var comment; + + if (input.charAt(i) !== '/') return; + + if (input.charAt(i + 1) === '/') { + return new(tree.Comment)($(/^\/\/.*/), true); + } else if (comment = $(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/)) { + return new(tree.Comment)(comment); + } + }, + + // + // Entities are tokens which can be found inside an Expression + // + entities: { + // + // A string, which supports escaping " and ' + // + // "milky way" 'he\'s the one!' + // + quoted: function () { + var str, j = i, e; + + if (input.charAt(j) === '~') { j++, e = true } // Escaped strings + if (input.charAt(j) !== '"' && input.charAt(j) !== "'") return; + + e && $('~'); + + if (str = $(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/)) { + return new(tree.Quoted)(str[0], str[1] || str[2], e); + } + }, + + // + // A catch-all word, such as: + // + // black border-collapse + // + keyword: function () { + var k; + if (k = $(/^[A-Za-z-]+/)) { return new(tree.Keyword)(k) } + }, + + // + // A function call + // + // rgb(255, 0, 255) + // + // We also try to catch IE's `alpha()`, but let the `alpha` parser + // deal with the details. + // + // The arguments are parsed with the `entities.arguments` parser. + // + call: function () { + var name, args, index = i; + + if (! (name = /^([\w-]+|%)\(/.exec(chunks[j]))) return; + + name = name[1].toLowerCase(); + + if (name === 'url') { return null } + else { i += name.length } + + if (name === 'alpha') { return $(this.alpha) } + + $('('); // Parse the '(' and consume whitespace. + + args = $(this.entities.arguments); + + if (! $(')')) return; + + if (name) { return new(tree.Call)(name, args, index) } + }, + arguments: function () { + var args = [], arg; + + while (arg = $(this.expression)) { + args.push(arg); + if (! $(',')) { break } + } + return args; + }, + literal: function () { + return $(this.entities.dimension) || + $(this.entities.color) || + $(this.entities.quoted); + }, + + // + // Parse url() tokens + // + // We use a specific rule for urls, because they don't really behave like + // standard function calls. The difference is that the argument doesn't have + // to be enclosed within a string, so it can't be parsed as an Expression. + // + url: function () { + var value; + + if (input.charAt(i) !== 'u' || !$(/^url\(/)) return; + value = $(this.entities.quoted) || $(this.entities.variable) || + $(this.entities.dataURI) || $(/^[-\w%@$\/.&=:;#+?~]+/) || ""; + if (! $(')')) throw new(Error)("missing closing ) for url()"); + + return new(tree.URL)((value.value || value.data || value instanceof tree.Variable) + ? value : new(tree.Anonymous)(value), imports.paths); + }, + + dataURI: function () { + var obj; + + if ($(/^data:/)) { + obj = {}; + obj.mime = $(/^[^\/]+\/[^,;)]+/) || ''; + obj.charset = $(/^;\s*charset=[^,;)]+/) || ''; + obj.base64 = $(/^;\s*base64/) || ''; + obj.data = $(/^,\s*[^)]+/); + + if (obj.data) { return obj } + } + }, + + // + // A Variable entity, such as `@fink`, in + // + // width: @fink + 2px + // + // We use a different parser for variable definitions, + // see `parsers.variable`. + // + variable: function () { + var name, index = i; + + if (input.charAt(i) === '@' && (name = $(/^@@?[\w-]+/))) { + return new(tree.Variable)(name, index); + } + }, + + // + // A Hexadecimal color + // + // #4F3C2F + // + // `rgb` and `hsl` colors are parsed through the `entities.call` parser. + // + color: function () { + var rgb; + + if (input.charAt(i) === '#' && (rgb = $(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/))) { + return new(tree.Color)(rgb[1]); + } + }, + + // + // A Dimension, that is, a number and a unit + // + // 0.5em 95% + // + dimension: function () { + var value, c = input.charCodeAt(i); + if ((c > 57 || c < 45) || c === 47) return; + + if (value = $(/^(-?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/)) { + return new(tree.Dimension)(value[1], value[2]); + } + }, + + // + // JavaScript code to be evaluated + // + // `window.location.href` + // + javascript: function () { + var str, j = i, e; + + if (input.charAt(j) === '~') { j++, e = true } // Escaped strings + if (input.charAt(j) !== '`') { return } + + e && $('~'); + + if (str = $(/^`([^`]*)`/)) { + return new(tree.JavaScript)(str[1], i, e); + } + } + }, + + // + // The variable part of a variable definition. Used in the `rule` parser + // + // @fink: + // + variable: function () { + var name; + + if (input.charAt(i) === '@' && (name = $(/^(@[\w-]+)\s*:/))) { return name[1] } + }, + + // + // A font size/line-height shorthand + // + // small/12px + // + // We need to peek first, or we'll match on keywords and dimensions + // + shorthand: function () { + var a, b; + + if (! peek(/^[@\w.%-]+\/[@\w.-]+/)) return; + + if ((a = $(this.entity)) && $('/') && (b = $(this.entity))) { + return new(tree.Shorthand)(a, b); + } + }, + + // + // Mixins + // + mixin: { + // + // A Mixin call, with an optional argument list + // + // #mixins > .square(#fff); + // .rounded(4px, black); + // .button; + // + // The `while` loop is there because mixins can be + // namespaced, but we only support the child and descendant + // selector for now. + // + call: function () { + var elements = [], e, c, args, index = i, s = input.charAt(i); + + if (s !== '.' && s !== '#') { return } + + while (e = $(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) { + elements.push(new(tree.Element)(c, e)); + c = $('>'); + } + $('(') && (args = $(this.entities.arguments)) && $(')'); + + if (elements.length > 0 && ($(';') || peek('}'))) { + return new(tree.mixin.Call)(elements, args, index); + } + }, + + // + // A Mixin definition, with a list of parameters + // + // .rounded (@radius: 2px, @color) { + // ... + // } + // + // Until we have a finer grained state-machine, we have to + // do a look-ahead, to make sure we don't have a mixin call. + // See the `rule` function for more information. + // + // We start by matching `.rounded (`, and then proceed on to + // the argument list, which has optional default values. + // We store the parameters in `params`, with a `value` key, + // if there is a value, such as in the case of `@radius`. + // + // Once we've got our params list, and a closing `)`, we parse + // the `{...}` block. + // + definition: function () { + var name, params = [], match, ruleset, param, value; + + if ((input.charAt(i) !== '.' && input.charAt(i) !== '#') || + peek(/^[^{]*(;|})/)) return; + + if (match = $(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)) { + name = match[1]; + + while (param = $(this.entities.variable) || $(this.entities.literal) + || $(this.entities.keyword)) { + // Variable + if (param instanceof tree.Variable) { + if ($(':')) { + if (value = $(this.expression)) { + params.push({ name: param.name, value: value }); + } else { + throw new(Error)("Expected value"); + } + } else { + params.push({ name: param.name }); + } + } else { + params.push({ value: param }); + } + if (! $(',')) { break } + } + if (! $(')')) throw new(Error)("Expected )"); + + ruleset = $(this.block); + + if (ruleset) { + return new(tree.mixin.Definition)(name, params, ruleset); + } + } + } + }, + + // + // Entities are the smallest recognized token, + // and can be found inside a rule's value. + // + entity: function () { + return $(this.entities.literal) || $(this.entities.variable) || $(this.entities.url) || + $(this.entities.call) || $(this.entities.keyword) || $(this.entities.javascript) || + $(this.comment); + }, + + // + // A Rule terminator. Note that we use `peek()` to check for '}', + // because the `block` rule will be expecting it, but we still need to make sure + // it's there, if ';' was ommitted. + // + end: function () { + return $(';') || peek('}'); + }, + + // + // IE's alpha function + // + // alpha(opacity=88) + // + alpha: function () { + var value; + + if (! $(/^\(opacity=/i)) return; + if (value = $(/^\d+/) || $(this.entities.variable)) { + if (! $(')')) throw new(Error)("missing closing ) for alpha()"); + return new(tree.Alpha)(value); + } + }, + + // + // A Selector Element + // + // div + // + h1 + // #socks + // input[type="text"] + // + // Elements are the building blocks for Selectors, + // they are made out of a `Combinator` (see combinator rule), + // and an element name, such as a tag a class, or `*`. + // + element: function () { + var e, t, c; + + c = $(this.combinator); + e = $(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/) || $('*') || $(this.attribute) || $(/^\([^)@]+\)/) || $(/^(?:\d*\.)?\d+%/); + + if (e) { return new(tree.Element)(c, e) } + + if (c.value && c.value[0] === '&') { + return new(tree.Element)(c, null); + } + }, + + // + // Combinators combine elements together, in a Selector. + // + // Because our parser isn't white-space sensitive, special care + // has to be taken, when parsing the descendant combinator, ` `, + // as it's an empty space. We have to check the previous character + // in the input, to see if it's a ` ` character. More info on how + // we deal with this in *combinator.js*. + // + combinator: function () { + var match, c = input.charAt(i); + + if (c === '>' || c === '+' || c === '~') { + i++; + while (input.charAt(i) === ' ') { i++ } + return new(tree.Combinator)(c); + } else if (c === '&') { + match = '&'; + i++; + if(input.charAt(i) === ' ') { + match = '& '; + } + while (input.charAt(i) === ' ') { i++ } + return new(tree.Combinator)(match); + } else if (c === ':' && input.charAt(i + 1) === ':') { + i += 2; + while (input.charAt(i) === ' ') { i++ } + return new(tree.Combinator)('::'); + } else if (input.charAt(i - 1) === ' ') { + return new(tree.Combinator)(" "); + } else { + return new(tree.Combinator)(null); + } + }, + + // + // A CSS Selector + // + // .class > div + h1 + // li a:hover + // + // Selectors are made out of one or more Elements, see above. + // + selector: function () { + var sel, e, elements = [], c, match; + + while (e = $(this.element)) { + c = input.charAt(i); + elements.push(e) + if (c === '{' || c === '}' || c === ';' || c === ',') { break } + } + + if (elements.length > 0) { return new(tree.Selector)(elements) } + }, + tag: function () { + return $(/^[a-zA-Z][a-zA-Z-]*[0-9]?/) || $('*'); + }, + attribute: function () { + var attr = '', key, val, op; + + if (! $('[')) return; + + if (key = $(/^[a-zA-Z-]+/) || $(this.entities.quoted)) { + if ((op = $(/^[|~*$^]?=/)) && + (val = $(this.entities.quoted) || $(/^[\w-]+/))) { + attr = [key, op, val.toCSS ? val.toCSS() : val].join(''); + } else { attr = key } + } + + if (! $(']')) return; + + if (attr) { return "[" + attr + "]" } + }, + + // + // The `block` rule is used by `ruleset` and `mixin.definition`. + // It's a wrapper around the `primary` rule, with added `{}`. + // + block: function () { + var content; + + if ($('{') && (content = $(this.primary)) && $('}')) { + return content; + } + }, + + // + // div, .class, body > p {...} + // + ruleset: function () { + var selectors = [], s, rules, match; + save(); + + if (match = /^([.#:% \w-]+)[\s\n]*\{/.exec(chunks[j])) { + i += match[0].length - 1; + selectors = [new(tree.Selector)([new(tree.Element)(null, match[1])])]; + } else { + while (s = $(this.selector)) { + selectors.push(s); + $(this.comment); + if (! $(',')) { break } + $(this.comment); + } + } + + if (selectors.length > 0 && (rules = $(this.block))) { + return new(tree.Ruleset)(selectors, rules); + } else { + // Backtrack + furthest = i; + restore(); + } + }, + rule: function () { + var name, value, c = input.charAt(i), important, match; + save(); + + if (c === '.' || c === '#' || c === '&') { return } + + if (name = $(this.variable) || $(this.property)) { + if ((name.charAt(0) != '@') && (match = /^([^@+\/'"*`(;{}-]*);/.exec(chunks[j]))) { + i += match[0].length - 1; + value = new(tree.Anonymous)(match[1]); + } else if (name === "font") { + value = $(this.font); + } else { + value = $(this.value); + } + important = $(this.important); + + if (value && $(this.end)) { + return new(tree.Rule)(name, value, important, memo); + } else { + furthest = i; + restore(); + } + } + }, + + // + // An @import directive + // + // @import "lib"; + // + // Depending on our environemnt, importing is done differently: + // In the browser, it's an XHR request, in Node, it would be a + // file-system operation. The function used for importing is + // stored in `import`, which we pass to the Import constructor. + // + "import": function () { + var path; + if ($(/^@import\s+/) && + (path = $(this.entities.quoted) || $(this.entities.url)) && + $(';')) { + return new(tree.Import)(path, imports); + } + }, + + // + // A CSS Directive + // + // @charset "utf-8"; + // + directive: function () { + var name, value, rules, types; + + if (input.charAt(i) !== '@') return; + + if (value = $(this['import'])) { + return value; + } else if (name = $(/^@media|@page/) || $(/^@(?:-webkit-)?keyframes/)) { + types = ($(/^[^{]+/) || '').trim(); + if (rules = $(this.block)) { + return new(tree.Directive)(name + " " + types, rules); + } + } else if (name = $(/^@[-a-z]+/)) { + if (name === '@font-face') { + if (rules = $(this.block)) { + return new(tree.Directive)(name, rules); + } + } else if ((value = $(this.entity)) && $(';')) { + return new(tree.Directive)(name, value); + } + } + }, + font: function () { + var value = [], expression = [], weight, shorthand, font, e; + + while (e = $(this.shorthand) || $(this.entity)) { + expression.push(e); + } + value.push(new(tree.Expression)(expression)); + + if ($(',')) { + while (e = $(this.expression)) { + value.push(e); + if (! $(',')) { break } + } + } + return new(tree.Value)(value); + }, + + // + // A Value is a comma-delimited list of Expressions + // + // font-family: Baskerville, Georgia, serif; + // + // In a Rule, a Value represents everything after the `:`, + // and before the `;`. + // + value: function () { + var e, expressions = [], important; + + while (e = $(this.expression)) { + expressions.push(e); + if (! $(',')) { break } + } + + if (expressions.length > 0) { + return new(tree.Value)(expressions); + } + }, + important: function () { + if (input.charAt(i) === '!') { + return $(/^! *important/); + } + }, + sub: function () { + var e; + + if ($('(') && (e = $(this.expression)) && $(')')) { + return e; + } + }, + multiplication: function () { + var m, a, op, operation; + if (m = $(this.operand)) { + while ((op = ($('/') || $('*'))) && (a = $(this.operand))) { + operation = new(tree.Operation)(op, [operation || m, a]); + } + return operation || m; + } + }, + addition: function () { + var m, a, op, operation; + if (m = $(this.multiplication)) { + while ((op = $(/^[-+]\s+/) || (input.charAt(i - 1) != ' ' && ($('+') || $('-')))) && + (a = $(this.multiplication))) { + operation = new(tree.Operation)(op, [operation || m, a]); + } + return operation || m; + } + }, + + // + // An operand is anything that can be part of an operation, + // such as a Color, or a Variable + // + operand: function () { + var negate, p = input.charAt(i + 1); + + if (input.charAt(i) === '-' && (p === '@' || p === '(')) { negate = $('-') } + var o = $(this.sub) || $(this.entities.dimension) || + $(this.entities.color) || $(this.entities.variable) || + $(this.entities.call); + return negate ? new(tree.Operation)('*', [new(tree.Dimension)(-1), o]) + : o; + }, + + // + // Expressions either represent mathematical operations, + // or white-space delimited Entities. + // + // 1px solid black + // @var * 2 + // + expression: function () { + var e, delim, entities = [], d; + + while (e = $(this.addition) || $(this.entity)) { + entities.push(e); + } + if (entities.length > 0) { + return new(tree.Expression)(entities); + } + }, + property: function () { + var name; + + if (name = $(/^(\*?-?[-a-z_0-9]+)\s*:/)) { + return name[1]; + } + } + } + }; +}; + +if (typeof(window) !== 'undefined') { + // + // Used by `@import` directives + // + less.Parser.importer = function (path, paths, callback, env) { + if (path.charAt(0) !== '/' && paths.length > 0) { + path = paths[0] + path; + } + // We pass `true` as 3rd argument, to force the reload of the import. + // This is so we can get the syntax tree as opposed to just the CSS output, + // as we need this to evaluate the current stylesheet. + loadStyleSheet({ href: path, title: path, type: env.mime }, callback, true); + }; +} + diff --git a/js/dojo-release-1.7.2-src/util/less/tree.js b/js/dojo-release-1.7.2-src/util/less/tree.js new file mode 100755 index 0000000..eb08aa4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree.js @@ -0,0 +1,13 @@ +require('less/tree').find = function (obj, fun) { + for (var i = 0, r; i < obj.length; i++) { + if (r = fun.call(obj, obj[i])) { return r } + } + return null; +}; +require('less/tree').jsify = function (obj) { + if (Array.isArray(obj.value) && (obj.value.length > 1)) { + return '[' + obj.value.map(function (v) { return v.toCSS(false) }).join(', ') + ']'; + } else { + return obj.toCSS(false); + } +}; diff --git a/js/dojo-release-1.7.2-src/util/less/tree/alpha.js b/js/dojo-release-1.7.2-src/util/less/tree/alpha.js new file mode 100755 index 0000000..551ccba --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/alpha.js @@ -0,0 +1,17 @@ +(function (tree) { + +tree.Alpha = function (val) { + this.value = val; +}; +tree.Alpha.prototype = { + toCSS: function () { + return "alpha(opacity=" + + (this.value.toCSS ? this.value.toCSS() : this.value) + ")"; + }, + eval: function (env) { + if (this.value.eval) { this.value = this.value.eval(env) } + return this; + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/anonymous.js b/js/dojo-release-1.7.2-src/util/less/tree/anonymous.js new file mode 100755 index 0000000..89840d0 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/anonymous.js @@ -0,0 +1,13 @@ +(function (tree) { + +tree.Anonymous = function (string) { + this.value = string.value || string; +}; +tree.Anonymous.prototype = { + toCSS: function () { + return this.value; + }, + eval: function () { return this } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/call.js b/js/dojo-release-1.7.2-src/util/less/tree/call.js new file mode 100755 index 0000000..4a72932 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/call.js @@ -0,0 +1,45 @@ +(function (tree) { + +// +// A function call node. +// +tree.Call = function (name, args, index) { + this.name = name; + this.args = args; + this.index = index; +}; +tree.Call.prototype = { + // + // When evaluating a function call, + // we either find the function in `tree.functions` [1], + // in which case we call it, passing the evaluated arguments, + // or we simply print it out as it appeared originally [2]. + // + // The *functions.js* file contains the built-in functions. + // + // The reason why we evaluate the arguments, is in the case where + // we try to pass a variable to a function, like: `saturate(@color)`. + // The function should receive the value, not the variable. + // + eval: function (env) { + var args = this.args.map(function (a) { return a.eval(env) }); + + if (this.name in tree.functions) { // 1. + try { + return tree.functions[this.name].apply(tree.functions, args); + } catch (e) { + throw { message: "error evaluating function `" + this.name + "`", + index: this.index }; + } + } else { // 2. + return new(tree.Anonymous)(this.name + + "(" + args.map(function (a) { return a.toCSS() }).join(', ') + ")"); + } + }, + + toCSS: function (env) { + return this.eval(env).toCSS(); + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/color.js b/js/dojo-release-1.7.2-src/util/less/tree/color.js new file mode 100755 index 0000000..38d34f8 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/color.js @@ -0,0 +1,98 @@ +(function (tree) { +// +// RGB Colors - #ff0014, #eee +// +tree.Color = function (rgb, a) { + // + // The end goal here, is to parse the arguments + // into an integer triplet, such as `128, 255, 0` + // + // This facilitates operations and conversions. + // + if (Array.isArray(rgb)) { + this.rgb = rgb; + } else if (rgb.length == 6) { + this.rgb = rgb.match(/.{2}/g).map(function (c) { + return parseInt(c, 16); + }); + } else if (rgb.length == 8) { + this.alpha = parseInt(rgb.substring(0,2), 16) / 255.0; + this.rgb = rgb.substr(2).match(/.{2}/g).map(function (c) { + return parseInt(c, 16); + }); + } else { + this.rgb = rgb.split('').map(function (c) { + return parseInt(c + c, 16); + }); + } + this.alpha = typeof(a) === 'number' ? a : 1; +}; +tree.Color.prototype = { + eval: function () { return this }, + + // + // If we have some transparency, the only way to represent it + // is via `rgba`. Otherwise, we use the hex representation, + // which has better compatibility with older browsers. + // Values are capped between `0` and `255`, rounded and zero-padded. + // + toCSS: function () { + if (this.alpha < 1.0) { + return "rgba(" + this.rgb.map(function (c) { + return Math.round(c); + }).concat(this.alpha).join(', ') + ")"; + } else { + return '#' + this.rgb.map(function (i) { + i = Math.round(i); + i = (i > 255 ? 255 : (i < 0 ? 0 : i)).toString(16); + return i.length === 1 ? '0' + i : i; + }).join(''); + } + }, + + // + // Operations have to be done per-channel, if not, + // channels will spill onto each other. Once we have + // our result, in the form of an integer triplet, + // we create a new Color node to hold the result. + // + operate: function (op, other) { + var result = []; + + if (! (other instanceof tree.Color)) { + other = other.toColor(); + } + + for (var c = 0; c < 3; c++) { + result[c] = tree.operate(op, this.rgb[c], other.rgb[c]); + } + return new(tree.Color)(result, this.alpha + other.alpha); + }, + + toHSL: function () { + var r = this.rgb[0] / 255, + g = this.rgb[1] / 255, + b = this.rgb[2] / 255, + a = this.alpha; + + var max = Math.max(r, g, b), min = Math.min(r, g, b); + var h, s, l = (max + min) / 2, d = max - min; + + if (max === min) { + h = s = 0; + } else { + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + + switch (max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h * 360, s: s, l: l, a: a }; + } +}; + + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/comment.js b/js/dojo-release-1.7.2-src/util/less/tree/comment.js new file mode 100755 index 0000000..2d95dff --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/comment.js @@ -0,0 +1,14 @@ +(function (tree) { + +tree.Comment = function (value, silent) { + this.value = value; + this.silent = !!silent; +}; +tree.Comment.prototype = { + toCSS: function (env) { + return env.compress ? '' : this.value; + }, + eval: function () { return this } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/dimension.js b/js/dojo-release-1.7.2-src/util/less/tree/dimension.js new file mode 100755 index 0000000..41f3ca2 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/dimension.js @@ -0,0 +1,34 @@ +(function (tree) { + +// +// A number with a unit +// +tree.Dimension = function (value, unit) { + this.value = parseFloat(value); + this.unit = unit || null; +}; + +tree.Dimension.prototype = { + eval: function () { return this }, + toColor: function () { + return new(tree.Color)([this.value, this.value, this.value]); + }, + toCSS: function () { + var css = this.value + this.unit; + return css; + }, + + // In an operation between two Dimensions, + // we default to the first Dimension's unit, + // so `1px + 2em` will yield `3px`. + // In the future, we could implement some unit + // conversions such that `100cm + 10mm` would yield + // `101cm`. + operate: function (op, other) { + return new(tree.Dimension) + (tree.operate(op, this.value, other.value), + this.unit || other.unit); + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/directive.js b/js/dojo-release-1.7.2-src/util/less/tree/directive.js new file mode 100755 index 0000000..fbe9a93 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/directive.js @@ -0,0 +1,33 @@ +(function (tree) { + +tree.Directive = function (name, value) { + this.name = name; + if (Array.isArray(value)) { + this.ruleset = new(tree.Ruleset)([], value); + } else { + this.value = value; + } +}; +tree.Directive.prototype = { + toCSS: function (ctx, env) { + if (this.ruleset) { + this.ruleset.root = true; + return this.name + (env.compress ? '{' : ' {\n ') + + this.ruleset.toCSS(ctx, env).trim().replace(/\n/g, '\n ') + + (env.compress ? '}': '\n}\n'); + } else { + return this.name + ' ' + this.value.toCSS() + ';\n'; + } + }, + eval: function (env) { + env.frames.unshift(this); + this.ruleset = this.ruleset && this.ruleset.eval(env); + env.frames.shift(); + return this; + }, + variable: function (name) { return tree.Ruleset.prototype.variable.call(this.ruleset, name) }, + find: function () { return tree.Ruleset.prototype.find.apply(this.ruleset, arguments) }, + rulesets: function () { return tree.Ruleset.prototype.rulesets.apply(this.ruleset) } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/element.js b/js/dojo-release-1.7.2-src/util/less/tree/element.js new file mode 100755 index 0000000..27cf822 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/element.js @@ -0,0 +1,35 @@ +(function (tree) { + +tree.Element = function (combinator, value) { + this.combinator = combinator instanceof tree.Combinator ? + combinator : new(tree.Combinator)(combinator); + this.value = value ? value.trim() : ""; +}; +tree.Element.prototype.toCSS = function (env) { + return this.combinator.toCSS(env || {}) + this.value; +}; + +tree.Combinator = function (value) { + if (value === ' ') { + this.value = ' '; + } else if (value === '& ') { + this.value = '& '; + } else { + this.value = value ? value.trim() : ""; + } +}; +tree.Combinator.prototype.toCSS = function (env) { + return { + '' : '', + ' ' : ' ', + '&' : '', + '& ' : ' ', + ':' : ' :', + '::': '::', + '+' : env.compress ? '+' : ' + ', + '~' : env.compress ? '~' : ' ~ ', + '>' : env.compress ? '>' : ' > ' + }[this.value]; +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/expression.js b/js/dojo-release-1.7.2-src/util/less/tree/expression.js new file mode 100755 index 0000000..f638a1b --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/expression.js @@ -0,0 +1,23 @@ +(function (tree) { + +tree.Expression = function (value) { this.value = value }; +tree.Expression.prototype = { + eval: function (env) { + if (this.value.length > 1) { + return new(tree.Expression)(this.value.map(function (e) { + return e.eval(env); + })); + } else if (this.value.length === 1) { + return this.value[0].eval(env); + } else { + return this; + } + }, + toCSS: function (env) { + return this.value.map(function (e) { + return e.toCSS(env); + }).join(' '); + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/import.js b/js/dojo-release-1.7.2-src/util/less/tree/import.js new file mode 100755 index 0000000..2a95120 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/import.js @@ -0,0 +1,77 @@ +(function (tree) { +// +// CSS @import node +// +// The general strategy here is that we don't want to wait +// for the parsing to be completed, before we start importing +// the file. That's because in the context of a browser, +// most of the time will be spent waiting for the server to respond. +// +// On creation, we push the import path to our import queue, though +// `import,push`, we also pass it a callback, which it'll call once +// the file has been fetched, and parsed. +// +tree.Import = function (path, imports) { + var that = this; + + this._path = path; + + // The '.less' extension is optional + if (path instanceof tree.Quoted) { + this.path = /\.(le?|c)ss$/.test(path.value) ? path.value : path.value + '.less'; + } else { + this.path = path.value.value || path.value; + } + + this.css = /css$/.test(this.path); + + // Only pre-compile .less files + if (! this.css) { + imports.push(this.path, function (root) { + if (! root) { + throw new(Error)("Error parsing " + that.path); + } + that.root = root; + }); + } +}; + +// +// The actual import node doesn't return anything, when converted to CSS. +// The reason is that it's used at the evaluation stage, so that the rules +// it imports can be treated like any other rules. +// +// In `eval`, we make sure all Import nodes get evaluated, recursively, so +// we end up with a flat structure, which can easily be imported in the parent +// ruleset. +// +tree.Import.prototype = { + toCSS: function () { + if (this.css) { + return "@import " + this._path.toCSS() + ';\n'; + } else { + return ""; + } + }, + eval: function (env) { + var ruleset; + + if (this.css) { + return this; + } else { + ruleset = new(tree.Ruleset)(null, this.root.rules.slice(0)); + + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.Import) { + Array.prototype + .splice + .apply(ruleset.rules, + [i, 1].concat(ruleset.rules[i].eval(env))); + } + } + return ruleset.rules; + } + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/javascript.js b/js/dojo-release-1.7.2-src/util/less/tree/javascript.js new file mode 100755 index 0000000..4ec66b9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/javascript.js @@ -0,0 +1,51 @@ +(function (tree) { + +tree.JavaScript = function (string, index, escaped) { + this.escaped = escaped; + this.expression = string; + this.index = index; +}; +tree.JavaScript.prototype = { + eval: function (env) { + var result, + that = this, + context = {}; + + var expression = this.expression.replace(/@\{([\w-]+)\}/g, function (_, name) { + return tree.jsify(new(tree.Variable)('@' + name, that.index).eval(env)); + }); + + try { + expression = new(Function)('return (' + expression + ')'); + } catch (e) { + throw { message: "JavaScript evaluation error: `" + expression + "`" , + index: this.index }; + } + + for (var k in env.frames[0].variables()) { + context[k.slice(1)] = { + value: env.frames[0].variables()[k].value, + toJS: function () { + return this.value.eval(env).toCSS(); + } + }; + } + + try { + result = expression.call(context); + } catch (e) { + throw { message: "JavaScript evaluation error: '" + e.name + ': ' + e.message + "'" , + index: this.index }; + } + if (typeof(result) === 'string') { + return new(tree.Quoted)('"' + result + '"', result, this.escaped, this.index); + } else if (Array.isArray(result)) { + return new(tree.Anonymous)(result.join(', ')); + } else { + return new(tree.Anonymous)(result); + } + } +}; + +})(require('less/tree')); + diff --git a/js/dojo-release-1.7.2-src/util/less/tree/keyword.js b/js/dojo-release-1.7.2-src/util/less/tree/keyword.js new file mode 100755 index 0000000..a4431ba --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/keyword.js @@ -0,0 +1,9 @@ +(function (tree) { + +tree.Keyword = function (value) { this.value = value }; +tree.Keyword.prototype = { + eval: function () { return this }, + toCSS: function () { return this.value } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/mixin.js b/js/dojo-release-1.7.2-src/util/less/tree/mixin.js new file mode 100755 index 0000000..24cb8e4 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/mixin.js @@ -0,0 +1,106 @@ +(function (tree) { + +tree.mixin = {}; +tree.mixin.Call = function (elements, args, index) { + this.selector = new(tree.Selector)(elements); + this.arguments = args; + this.index = index; +}; +tree.mixin.Call.prototype = { + eval: function (env) { + var mixins, args, rules = [], match = false; + + for (var i = 0; i < env.frames.length; i++) { + if ((mixins = env.frames[i].find(this.selector)).length > 0) { + args = this.arguments && this.arguments.map(function (a) { return a.eval(env) }); + for (var m = 0; m < mixins.length; m++) { + if (mixins[m].match(args, env)) { + try { + Array.prototype.push.apply( + rules, mixins[m].eval(env, this.arguments).rules); + match = true; + } catch (e) { + throw { message: e.message, index: e.index, stack: e.stack, call: this.index }; + } + } + } + if (match) { + return rules; + } else { + throw { message: 'No matching definition was found for `' + + this.selector.toCSS().trim() + '(' + + this.arguments.map(function (a) { + return a.toCSS(); + }).join(', ') + ")`", + index: this.index }; + } + } + } + throw { message: this.selector.toCSS().trim() + " is undefined", + index: this.index }; + } +}; + +tree.mixin.Definition = function (name, params, rules) { + this.name = name; + this.selectors = [new(tree.Selector)([new(tree.Element)(null, name)])]; + this.params = params; + this.arity = params.length; + this.rules = rules; + this._lookups = {}; + this.required = params.reduce(function (count, p) { + if (!p.name || (p.name && !p.value)) { return count + 1 } + else { return count } + }, 0); + this.parent = tree.Ruleset.prototype; + this.frames = []; +}; +tree.mixin.Definition.prototype = { + toCSS: function () { return "" }, + variable: function (name) { return this.parent.variable.call(this, name) }, + variables: function () { return this.parent.variables.call(this) }, + find: function () { return this.parent.find.apply(this, arguments) }, + rulesets: function () { return this.parent.rulesets.apply(this) }, + + eval: function (env, args) { + var frame = new(tree.Ruleset)(null, []), context, _arguments = []; + + for (var i = 0, val; i < this.params.length; i++) { + if (this.params[i].name) { + if (val = (args && args[i]) || this.params[i].value) { + frame.rules.unshift(new(tree.Rule)(this.params[i].name, val.eval(env))); + } else { + throw { message: "wrong number of arguments for " + this.name + + ' (' + args.length + ' for ' + this.arity + ')' }; + } + } + } + for (var i = 0; i < Math.max(this.params.length, args && args.length); i++) { + _arguments.push(args[i] || this.params[i].value); + } + frame.rules.unshift(new(tree.Rule)('@arguments', new(tree.Expression)(_arguments).eval(env))); + + return new(tree.Ruleset)(null, this.rules.slice(0)).eval({ + frames: [this, frame].concat(this.frames, env.frames) + }); + }, + match: function (args, env) { + var argsLength = (args && args.length) || 0, len; + + if (argsLength < this.required) { return false } + if ((this.required > 0) && (argsLength > this.params.length)) { return false } + + len = Math.min(argsLength, this.arity); + + for (var i = 0; i < len; i++) { + if (!this.params[i].name) { + if (args[i].eval(env).toCSS() != this.params[i].value.eval(env).toCSS()) { + return false; + } + } + } + return true; + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/operation.js b/js/dojo-release-1.7.2-src/util/less/tree/operation.js new file mode 100755 index 0000000..d2e4d57 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/operation.js @@ -0,0 +1,32 @@ +(function (tree) { + +tree.Operation = function (op, operands) { + this.op = op.trim(); + this.operands = operands; +}; +tree.Operation.prototype.eval = function (env) { + var a = this.operands[0].eval(env), + b = this.operands[1].eval(env), + temp; + + if (a instanceof tree.Dimension && b instanceof tree.Color) { + if (this.op === '*' || this.op === '+') { + temp = b, b = a, a = temp; + } else { + throw { name: "OperationError", + message: "Can't substract or divide a color from a number" }; + } + } + return a.operate(this.op, b); +}; + +tree.operate = function (op, a, b) { + switch (op) { + case '+': return a + b; + case '-': return a - b; + case '*': return a * b; + case '/': return a / b; + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/quoted.js b/js/dojo-release-1.7.2-src/util/less/tree/quoted.js new file mode 100755 index 0000000..6ddfa40 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/quoted.js @@ -0,0 +1,29 @@ +(function (tree) { + +tree.Quoted = function (str, content, escaped, i) { + this.escaped = escaped; + this.value = content || ''; + this.quote = str.charAt(0); + this.index = i; +}; +tree.Quoted.prototype = { + toCSS: function () { + if (this.escaped) { + return this.value; + } else { + return this.quote + this.value + this.quote; + } + }, + eval: function (env) { + var that = this; + var value = this.value.replace(/`([^`]+)`/g, function (_, exp) { + return new(tree.JavaScript)(exp, that.index, true).eval(env).value; + }).replace(/@\{([\w-]+)\}/g, function (_, name) { + var v = new(tree.Variable)('@' + name, that.index).eval(env); + return v.value || v.toCSS(); + }); + return new(tree.Quoted)(this.quote + value + this.quote, value, this.escaped, this.index); + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/rule.js b/js/dojo-release-1.7.2-src/util/less/tree/rule.js new file mode 100755 index 0000000..18cc49b --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/rule.js @@ -0,0 +1,38 @@ +(function (tree) { + +tree.Rule = function (name, value, important, index) { + this.name = name; + this.value = (value instanceof tree.Value) ? value : new(tree.Value)([value]); + this.important = important ? ' ' + important.trim() : ''; + this.index = index; + + if (name.charAt(0) === '@') { + this.variable = true; + } else { this.variable = false } +}; +tree.Rule.prototype.toCSS = function (env) { + if (this.variable) { return "" } + else { + return this.name + (env.compress ? ':' : ': ') + + this.value.toCSS(env) + + this.important + ";"; + } +}; + +tree.Rule.prototype.eval = function (context) { + return new(tree.Rule)(this.name, this.value.eval(context), this.important, this.index); +}; + +tree.Shorthand = function (a, b) { + this.a = a; + this.b = b; +}; + +tree.Shorthand.prototype = { + toCSS: function (env) { + return this.a.toCSS(env) + "/" + this.b.toCSS(env); + }, + eval: function () { return this } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/ruleset.js b/js/dojo-release-1.7.2-src/util/less/tree/ruleset.js new file mode 100755 index 0000000..3ba1c13 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/ruleset.js @@ -0,0 +1,212 @@ +(function (tree) { + +tree.Ruleset = function (selectors, rules) { + this.selectors = selectors; + this.rules = rules; + this._lookups = {}; +}; +tree.Ruleset.prototype = { + eval: function (env) { + var ruleset = new(tree.Ruleset)(this.selectors, this.rules.slice(0)); + + ruleset.root = this.root; + + // push the current ruleset to the frames stack + env.frames.unshift(ruleset); + + // Evaluate imports + if (ruleset.root) { + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.Import) { + Array.prototype.splice + .apply(ruleset.rules, [i, 1].concat(ruleset.rules[i].eval(env))); + } + } + } + + // Store the frames around mixin definitions, + // so they can be evaluated like closures when the time comes. + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.mixin.Definition) { + ruleset.rules[i].frames = env.frames.slice(0); + } + } + + // Evaluate mixin calls. + for (var i = 0; i < ruleset.rules.length; i++) { + if (ruleset.rules[i] instanceof tree.mixin.Call) { + Array.prototype.splice + .apply(ruleset.rules, [i, 1].concat(ruleset.rules[i].eval(env))); + } + } + + // Evaluate everything else + for (var i = 0, rule; i < ruleset.rules.length; i++) { + rule = ruleset.rules[i]; + + if (! (rule instanceof tree.mixin.Definition)) { + ruleset.rules[i] = rule.eval ? rule.eval(env) : rule; + } + } + + // Pop the stack + env.frames.shift(); + + return ruleset; + }, + match: function (args) { + return !args || args.length === 0; + }, + variables: function () { + if (this._variables) { return this._variables } + else { + return this._variables = this.rules.reduce(function (hash, r) { + if (r instanceof tree.Rule && r.variable === true) { + hash[r.name] = r; + } + return hash; + }, {}); + } + }, + variable: function (name) { + return this.variables()[name]; + }, + rulesets: function () { + if (this._rulesets) { return this._rulesets } + else { + return this._rulesets = this.rules.filter(function (r) { + return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition); + }); + } + }, + find: function (selector, self) { + self = self || this; + var rules = [], rule, match, + key = selector.toCSS(); + + if (key in this._lookups) { return this._lookups[key] } + + this.rulesets().forEach(function (rule) { + if (rule !== self) { + for (var j = 0; j < rule.selectors.length; j++) { + if (match = selector.match(rule.selectors[j])) { + if (selector.elements.length > 1) { + Array.prototype.push.apply(rules, rule.find( + new(tree.Selector)(selector.elements.slice(1)), self)); + } else { + rules.push(rule); + } + break; + } + } + } + }); + return this._lookups[key] = rules; + }, + // + // Entry point for code generation + // + // `context` holds an array of arrays. + // + toCSS: function (context, env) { + var css = [], // The CSS output + rules = [], // node.Rule instances + rulesets = [], // node.Ruleset instances + paths = [], // Current selectors + selector, // The fully rendered selector + rule; + + if (! this.root) { + if (context.length === 0) { + paths = this.selectors.map(function (s) { return [s] }); + } else { + this.joinSelectors( paths, context, this.selectors ); + } + } + + // Compile rules and rulesets + for (var i = 0; i < this.rules.length; i++) { + rule = this.rules[i]; + + if (rule.rules || (rule instanceof tree.Directive)) { + rulesets.push(rule.toCSS(paths, env)); + } else if (rule instanceof tree.Comment) { + if (!rule.silent) { + if (this.root) { + rulesets.push(rule.toCSS(env)); + } else { + rules.push(rule.toCSS(env)); + } + } + } else { + if (rule.toCSS && !rule.variable) { + rules.push(rule.toCSS(env)); + } else if (rule.value && !rule.variable) { + rules.push(rule.value.toString()); + } + } + } + + rulesets = rulesets.join(''); + + // If this is the root node, we don't render + // a selector, or {}. + // Otherwise, only output if this ruleset has rules. + if (this.root) { + css.push(rules.join(env.compress ? '' : '\n')); + } else { + if (rules.length > 0) { + selector = paths.map(function (p) { + return p.map(function (s) { + return s.toCSS(env); + }).join('').trim(); + }).join(env.compress ? ',' : (paths.length > 3 ? ',\n' : ', ')); + css.push(selector, + (env.compress ? '{' : ' {\n ') + + rules.join(env.compress ? '' : '\n ') + + (env.compress ? '}' : '\n}\n')); + } + } + css.push(rulesets); + + return css.join('') + (env.compress ? '\n' : ''); + }, + + joinSelectors: function (paths, context, selectors) { + for (var s = 0; s < selectors.length; s++) { + this.joinSelector(paths, context, selectors[s]); + } + }, + + joinSelector: function (paths, context, selector) { + var before = [], after = [], beforeElements = [], + afterElements = [], hasParentSelector = false, el; + + for (var i = 0; i < selector.elements.length; i++) { + el = selector.elements[i]; + if (el.combinator.value[0] === '&') { + hasParentSelector = true; + } + if (hasParentSelector) afterElements.push(el); + else beforeElements.push(el); + } + + if (! hasParentSelector) { + afterElements = beforeElements; + beforeElements = []; + } + + if (beforeElements.length > 0) { + before.push(new(tree.Selector)(beforeElements)); + } + + if (afterElements.length > 0) { + after.push(new(tree.Selector)(afterElements)); + } + + for (var c = 0; c < context.length; c++) { + paths.push(before.concat(context[c]).concat(after)); + } + } +}; +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/selector.js b/js/dojo-release-1.7.2-src/util/less/tree/selector.js new file mode 100755 index 0000000..eaaa042 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/selector.js @@ -0,0 +1,28 @@ +(function (tree) { + +tree.Selector = function (elements) { + this.elements = elements; + if (this.elements[0].combinator.value === "") { + this.elements[0].combinator.value = ' '; + } +}; +tree.Selector.prototype.match = function (other) { + if (this.elements[0].value === other.elements[0].value) { + return true; + } else { + return false; + } +}; +tree.Selector.prototype.toCSS = function (env) { + if (this._css) { return this._css } + + return this._css = this.elements.map(function (e) { + if (typeof(e) === 'string') { + return ' ' + e.trim(); + } else { + return e.toCSS(env); + } + }).join(''); +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/url.js b/js/dojo-release-1.7.2-src/util/less/tree/url.js new file mode 100755 index 0000000..f427070 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/url.js @@ -0,0 +1,25 @@ +(function (tree) { + +tree.URL = function (val, paths) { + if (val.data) { + this.attrs = val; + } else { + // Add the base path if the URL is relative and we are in the browser + if (!/^(?:https?:\/|file:\/|data:\/)?\//.test(val.value) && paths.length > 0 && typeof(window) !== 'undefined') { + val.value = paths[0] + (val.value.charAt(0) === '/' ? val.value.slice(1) : val.value); + } + this.value = val; + this.paths = paths; + } +}; +tree.URL.prototype = { + toCSS: function () { + return "url(" + (this.attrs ? 'data:' + this.attrs.mime + this.attrs.charset + this.attrs.base64 + this.attrs.data + : this.value.toCSS()) + ")"; + }, + eval: function (ctx) { + return this.attrs ? this : new(tree.URL)(this.value.eval(ctx), this.paths); + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/value.js b/js/dojo-release-1.7.2-src/util/less/tree/value.js new file mode 100755 index 0000000..922096c --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/value.js @@ -0,0 +1,24 @@ +(function (tree) { + +tree.Value = function (value) { + this.value = value; + this.is = 'value'; +}; +tree.Value.prototype = { + eval: function (env) { + if (this.value.length === 1) { + return this.value[0].eval(env); + } else { + return new(tree.Value)(this.value.map(function (v) { + return v.eval(env); + })); + } + }, + toCSS: function (env) { + return this.value.map(function (e) { + return e.toCSS(env); + }).join(env.compress ? ',' : ', '); + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/less/tree/variable.js b/js/dojo-release-1.7.2-src/util/less/tree/variable.js new file mode 100755 index 0000000..10f7c08 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/less/tree/variable.js @@ -0,0 +1,24 @@ +(function (tree) { + +tree.Variable = function (name, index) { this.name = name, this.index = index }; +tree.Variable.prototype = { + eval: function (env) { + var variable, v, name = this.name; + + if (name.indexOf('@@') == 0) { + name = '@' + new(tree.Variable)(name.slice(1)).eval(env).value; + } + + if (variable = tree.find(env.frames, function (frame) { + if (v = frame.variable(name)) { + return v.value.eval(env); + } + })) { return variable } + else { + throw { message: "variable " + name + " is undefined", + index: this.index }; + } + } +}; + +})(require('less/tree')); diff --git a/js/dojo-release-1.7.2-src/util/migration/dijitCss14to15.sed b/js/dojo-release-1.7.2-src/util/migration/dijitCss14to15.sed new file mode 100644 index 0000000..92eaf67 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/migration/dijitCss14to15.sed @@ -0,0 +1,67 @@ +#!/bin/sed -f + +# Sed script for migration of custom CSS files against dijit 1.4 to run against dijit 1.5 +# Usage: +# $ for file in $(find . -name '*.css' -print) +# do +# sed -f dijitCss14to15.sed -i .bak $file +# done + +# Spinner +s/.dijitSpinnerUpArrowHover .dijitUpArrowButton/.dijitSpinner .dijitUpArrowButtonHover/ +s/.dijitSpinnerUpArrowActive .dijitUpArrowButton/.dijitSpinner .dijitUpArrowButtonActive/ +s/.dijitSpinnerDownArrowHover .dijitDownArrowButton/.dijitSpinner .dijitDownArrowButtonHover/ +s/.dijitSpinnerDownArrowActive .dijitDownArrowButton/.dijitSpinner .dijitDownArrowButtonActive/ + +# ComboButton +s/.dijitComboButtonHover .dijitButtonContents/.dijitComboButton .dijitButtonContentsHover/ +s/.dijitComboButtonActive .dijitButtonContents/.dijitComboButton .dijitButtonContentsActive/ +s/.dijitComboButtonDownArrowHover .dijitArrowButton/.dijitComboButton .dijitDownArrowButtonHover/ +s/.dijitComboButtonDownArrowActive .dijitArrowButton/.dijitComboButton .dijitDownArrowButtonActive/ +s/.dijitComboButtonDownArrowHover .dijitDownArrowButton/.dijitComboButton .dijitDownArrowButtonHover/ +s/.dijitComboButtonDownArrowActive .dijitDownArrowButton/.dijitComboButton .dijitDownArrowButtonActive/ + +# Accordion +s/.dijitAccordionFocused/.dijitAccordionTitleFocused/ +s/.dijitAccordionTitle-hover/.dijitAccordionTitleHover/ +s/.dijitAccordionTitle-selected/.dijitAccordionTitleSelected/ + +# TabContainer +s/.dijitTabBtnDisabled/.dijitTabDisabled/ + +# TabContainer tab close button +s/.dijitTab .closeButton/.dijitTabCloseButton/ +s/.dijitTabCloseButton-hover/.dijitTabCloseButtonHover/ +s/.dijitTabCloseButtonHover .closeImage/.dijitTabCloseButtonHover/ +s/.dijitTab .closeImage/.dijitTabCloseButton/ +s/.dijitTab .closeText/.dijitTabCloseText/ +s/.dijitTabCloseButtonHover .dijitClosable .closeImage/.dijitTabCloseButtonHover/ +s/.dijitTab .dijitClosable .closeImage/.dijitTabCloseButton/ +s/.dijitTab .dijitClosable .closeText/.dijitTabCloseText/ + +# TabContainer: left/right/menu buttons +s/.tabStripButton img/.dijitTabStripIcon/ +s/.tabStripMenuButton img/.dijitTabStripMenuIcon/ +s/.tabStripSlideButtonLeft img/.dijitTabStripSlideLeftIcon/ +s/.tabStripSlideButtonRight img/.dijitTabStripSlideRightIcon/ +s/.tabStripButton IMG/.dijitTabStripIcon/ +s/.tabStripMenuButton IMG/.dijitTabStripMenuIcon/ +s/.tabStripSlideButtonLeft IMG/.dijitTabStripSlideLeftIcon/ +s/.tabStripSlideButtonRight IMG/.dijitTabStripSlideRightIcon/ + +# Dialog +s/.dijitDialogCloseIcon-hover/.dijitDialogCloseIconHover/ + +# Tree +s/.dijitTreeNodeHover/.dijitTreeRowHover/ +s/.dijitTreeNodeSelected/.dijitTreeRowSelected/ + +# TitlePane +s/.dijitTitlePaneTitle-hover/.dijitTitlePaneTitleHover/ + +# InlineEditBox +s/.dijitInlineEditBoxDisplayMode-hover/.dijitInlineEditBoxDisplayModeHover/ +s/.dijitInlineEditBoxDisplayMode-disabled/.dijitInlineEditBoxDisplayModeDisabled/ + +# Editor +s/.RichTextEditable/.dijitEditor/ \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/LICENSE b/js/dojo-release-1.7.2-src/util/shrinksafe/LICENSE new file mode 100644 index 0000000..045e3aa --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/LICENSE @@ -0,0 +1,6 @@ +Mozilla Rhino (js.jar from http://www.mozilla.org/rhino/) was +initially developed by Netscape Communications Corporation and is +provided by the Dojo Foundation "as is" under the MPL 1.1 license, +available at http://www.mozilla.org/MPL + +shrinksafe.jar is based on work in Rhino and is also provided under the MPL 1.1 license. \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/MPL-1.1.html b/js/dojo-release-1.7.2-src/util/shrinksafe/MPL-1.1.html new file mode 100644 index 0000000..ebcc169 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/MPL-1.1.html @@ -0,0 +1,389 @@ + + + + Mozilla Public License version 1.1 + + + +

                                                                      (Plain text version)

                                                                      +

                                                                      Mozilla Public License Version 1.1

                                                                      +

                                                                      1. Definitions.

                                                                      +
                                                                      +
                                                                      1.0.1. "Commercial Use" +
                                                                      means distribution or otherwise making the Covered Code available to a third party. +
                                                                      1.1. "Contributor" +
                                                                      means each entity that creates or contributes to the creation of Modifications. +
                                                                      1.2. "Contributor Version" +
                                                                      means the combination of the Original Code, prior Modifications used by a Contributor, + and the Modifications made by that particular Contributor. +
                                                                      1.3. "Covered Code" +
                                                                      means the Original Code or Modifications or the combination of the Original Code and + Modifications, in each case including portions thereof. +
                                                                      1.4. "Electronic Distribution Mechanism" +
                                                                      means a mechanism generally accepted in the software development community for the + electronic transfer of data. +
                                                                      1.5. "Executable" +
                                                                      means Covered Code in any form other than Source Code. +
                                                                      1.6. "Initial Developer" +
                                                                      means the individual or entity identified as the Initial Developer in the Source Code + notice required by Exhibit A. +
                                                                      1.7. "Larger Work" +
                                                                      means a work which combines Covered Code or portions thereof with code not governed + by the terms of this License. +
                                                                      1.8. "License" +
                                                                      means this document. +
                                                                      1.8.1. "Licensable" +
                                                                      means having the right to grant, to the maximum extent possible, whether at the + time of the initial grant or subsequently acquired, any and all of the rights + conveyed herein. +
                                                                      1.9. "Modifications" +
                                                                      +

                                                                      means any addition to or deletion from the substance or structure of either the + Original Code or any previous Modifications. When Covered Code is released as a + series of files, a Modification is: +

                                                                        +
                                                                      1. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. +
                                                                      2. Any new file that contains any part of the Original Code or + previous Modifications. +
                                                                      +
                                                                      1.10. "Original Code" +
                                                                      means Source Code of computer software code which is described in the Source Code + notice required by Exhibit A as Original Code, and which, + at the time of its release under this License is not already Covered Code governed + by this License. +
                                                                      1.10.1. "Patent Claims" +
                                                                      means any patent claim(s), now owned or hereafter acquired, including without + limitation, method, process, and apparatus claims, in any patent Licensable by + grantor. +
                                                                      1.11. "Source Code" +
                                                                      means the preferred form of the Covered Code for making modifications to it, + including all modules it contains, plus any associated interface definition files, + scripts used to control compilation and installation of an Executable, or source + code differential comparisons against either the Original Code or another well known, + available Covered Code of the Contributor's choice. The Source Code can be in a + compressed or archival form, provided the appropriate decompression or de-archiving + software is widely available for no charge. +
                                                                      1.12. "You" (or "Your") +
                                                                      means an individual or a legal entity exercising rights under, and complying with + all of the terms of, this License or a future version of this License issued under + Section 6.1. For legal entities, "You" includes any entity + which controls, is controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or otherwise, or (b) + ownership of more than fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. +
                                                                      +

                                                                      2. Source Code License.

                                                                      +

                                                                      2.1. The Initial Developer Grant.

                                                                      +

                                                                      The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive + license, subject to third party intellectual property claims: +

                                                                        +
                                                                      1. under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, + sublicense and distribute the Original Code (or portions thereof) with or without + Modifications, and/or as part of a Larger Work; and +
                                                                      2. under Patents Claims infringed by the making, using or selling + of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or + otherwise dispose of the Original Code (or portions thereof). +
                                                                      3. the licenses granted in this Section 2.1 + (a) and (b) are effective on + the date Initial Developer first distributes Original Code under the terms of this + License. +
                                                                      4. Notwithstanding Section 2.1 (b) + above, no patent license is granted: 1) for code that You delete from the Original Code; + 2) separate from the Original Code; or 3) for infringements caused by: i) the + modification of the Original Code or ii) the combination of the Original Code with other + software or devices. +
                                                                      +

                                                                      2.2. Contributor Grant.

                                                                      +

                                                                      Subject to third party intellectual property claims, each Contributor hereby grants You + a world-wide, royalty-free, non-exclusive license +

                                                                        +
                                                                      1. under intellectual property rights (other than patent or trademark) + Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and + distribute the Modifications created by such Contributor (or portions thereof) either on + an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger + Work; and +
                                                                      2. under Patent Claims infringed by the making, using, or selling of + Modifications made by that Contributor either alone and/or in combination with its + Contributor Version (or portions of such combination), to make, use, sell, offer for + sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor + (or portions thereof); and 2) the combination of Modifications made by that Contributor + with its Contributor Version (or portions of such combination). +
                                                                      3. the licenses granted in Sections 2.2 + (a) and 2.2 (b) are effective + on the date Contributor first makes Commercial Use of the Covered Code. +
                                                                      4. Notwithstanding Section 2.2 (b) + above, no patent license is granted: 1) for any code that Contributor has deleted from + the Contributor Version; 2) separate from the Contributor Version; 3) for infringements + caused by: i) third party modifications of Contributor Version or ii) the combination of + Modifications made by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code + in the absence of Modifications made by that Contributor. +
                                                                      +

                                                                      3. Distribution Obligations.

                                                                      +

                                                                      3.1. Application of License.

                                                                      +

                                                                      The Modifications which You create or to which You contribute are governed by the terms + of this License, including without limitation Section 2.2. The + Source Code version of Covered Code may be distributed only under the terms of this License + or a future version of this License released under Section 6.1, + and You must include a copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code version that alters or + restricts the applicable version of this License or the recipients' rights hereunder. + However, You may include an additional document offering the additional rights described in + Section 3.5. +

                                                                      3.2. Availability of Source Code.

                                                                      +

                                                                      Any Modification which You create or to which You contribute must be made available in + Source Code form under the terms of this License either on the same media as an Executable + version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic Distribution Mechanism, + must remain available for at least twelve (12) months after the date it initially became + available, or at least six (6) months after a subsequent version of that particular + Modification has been made available to such recipients. You are responsible for ensuring + that the Source Code version remains available even if the Electronic Distribution + Mechanism is maintained by a third party. +

                                                                      3.3. Description of Modifications.

                                                                      +

                                                                      You must cause all Covered Code to which You contribute to contain a file documenting the + changes You made to create that Covered Code and the date of any change. You must include a + prominent statement that the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the Initial Developer in + (a) the Source Code, and (b) in any notice in an Executable version or related documentation + in which You describe the origin or ownership of the Covered Code. +

                                                                      3.4. Intellectual Property Matters

                                                                      +

                                                                      (a) Third Party Claims

                                                                      +

                                                                      If Contributor has knowledge that a license under a third party's intellectual property + rights is required to exercise the rights granted by such Contributor under Sections + 2.1 or 2.2, Contributor must include a + text file with the Source Code distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will know whom to contact. If + Contributor obtains such knowledge after the Modification is made available as described in + Section 3.2, Contributor shall promptly modify the LEGAL file in + all copies Contributor makes available thereafter and shall take other steps (such as + notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who + received the Covered Code that new knowledge has been obtained. +

                                                                      (b) Contributor APIs

                                                                      +

                                                                      If Contributor's Modifications include an application programming interface and Contributor + has knowledge of patent licenses which are reasonably necessary to implement that + API, Contributor must also include this information in the + legal file. +

                                                                      (c) Representations.

                                                                      +

                                                                      Contributor represents that, except as disclosed pursuant to Section 3.4 + (a) above, Contributor believes that Contributor's Modifications + are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the + rights conveyed by this License. +

                                                                      3.5. Required Notices.

                                                                      +

                                                                      You must duplicate the notice in Exhibit A in each file of the + Source Code. If it is not possible to put such notice in a particular Source Code file due to + its structure, then You must include such notice in a location (such as a relevant directory) + where a user would be likely to look for such a notice. If You created one or more + Modification(s) You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership rights relating to + Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity + or liability obligations to one or more recipients of Covered Code. However, You may do so + only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You + must make it absolutely clear than any such warranty, support, indemnity or liability + obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer + and every Contributor for any liability incurred by the Initial Developer or such Contributor + as a result of warranty, support, indemnity or liability terms You offer. +

                                                                      3.6. Distribution of Executable Versions.

                                                                      +

                                                                      You may distribute Covered Code in Executable form only if the requirements of Sections + 3.1, 3.2, + 3.3, 3.4 and + 3.5 have been met for that Covered Code, and if You include a + notice stating that the Source Code version of the Covered Code is available under the terms + of this License, including a description of how and where You have fulfilled the obligations + of Section 3.2. The notice must be conspicuously included in any + notice in an Executable version, related documentation or collateral in which You describe + recipients' rights relating to the Covered Code. You may distribute the Executable version of + Covered Code or ownership rights under a license of Your choice, which may contain terms + different from this License, provided that You are in compliance with the terms of this + License and that the license for the Executable version does not attempt to limit or alter the + recipient's rights in the Source Code version from the rights set forth in this License. If + You distribute the Executable version under a different license You must make it absolutely + clear that any terms which differ from this License are offered by You alone, not by the + Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and + every Contributor for any liability incurred by the Initial Developer or such Contributor as + a result of any such terms You offer. +

                                                                      3.7. Larger Works.

                                                                      +

                                                                      You may create a Larger Work by combining Covered Code with other code not governed by the + terms of this License and distribute the Larger Work as a single product. In such a case, + You must make sure the requirements of this License are fulfilled for the Covered Code. +

                                                                      4. Inability to Comply Due to Statute or Regulation.

                                                                      +

                                                                      If it is impossible for You to comply with any of the terms of this License with respect to + some or all of the Covered Code due to statute, judicial order, or regulation then You must: + (a) comply with the terms of this License to the maximum extent possible; and (b) describe + the limitations and the code they affect. Such description must be included in the + legal file described in Section + 3.4 and must be included with all distributions of the Source Code. + Except to the extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to understand it. +

                                                                      5. Application of this License.

                                                                      +

                                                                      This License applies to code to which the Initial Developer has attached the notice in + Exhibit A and to related Covered Code. +

                                                                      6. Versions of the License.

                                                                      +

                                                                      6.1. New Versions

                                                                      +

                                                                      Netscape Communications Corporation ("Netscape") may publish revised and/or new versions + of the License from time to time. Each version will be given a distinguishing version number. +

                                                                      6.2. Effect of New Versions

                                                                      +

                                                                      Once Covered Code has been published under a particular version of the License, You may + always continue to use it under the terms of that version. You may also choose to use such + Covered Code under the terms of any subsequent version of the License published by Netscape. + No one other than Netscape has the right to modify the terms applicable to Covered Code + created under this License. +

                                                                      6.3. Derivative Works

                                                                      +

                                                                      If You create or use a modified version of this License (which you may only do in order to + apply it to code which is not already Covered Code governed by this License), You must (a) + rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", + "NPL" or any confusingly similar phrase do not appear in your license (except to note that + your license differs from this License) and (b) otherwise make it clear that Your version of + the license contains terms which differ from the Mozilla Public License and Netscape Public + License. (Filling in the name of the Initial Developer, Original Code or Contributor in the + notice described in Exhibit A shall not of themselves be deemed to + be modifications of this License.) +

                                                                      7. Disclaimer of warranty

                                                                      +

                                                                      Covered code is provided under this license on an "as is" + basis, without warranty of any kind, either expressed or implied, including, without + limitation, warranties that the covered code is free of defects, merchantable, fit for a + particular purpose or non-infringing. The entire risk as to the quality and performance of + the covered code is with you. Should any covered code prove defective in any respect, you + (not the initial developer or any other contributor) assume the cost of any necessary + servicing, repair or correction. This disclaimer of warranty constitutes an essential part + of this license. No use of any covered code is authorized hereunder except under this + disclaimer. +

                                                                      8. Termination

                                                                      +

                                                                      8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure such breach + within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which + are properly granted shall survive any termination of this License. Provisions which, by + their nature, must remain in effect beyond the termination of this License shall survive. +

                                                                      8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer or a Contributor + (the Initial Developer or Contributor against whom You file such action is referred to + as "Participant") alleging that: +

                                                                        +
                                                                      1. such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such Participant to You under + Sections 2.1 and/or 2.2 of this + License shall, upon 60 days notice from Participant terminate prospectively, unless if + within 60 days after receipt of notice You either: (i) agree in writing to pay + Participant a mutually agreeable reasonable royalty for Your past and future use of + Modifications made by such Participant, or (ii) withdraw Your litigation claim with + respect to the Contributor Version against such Participant. If within 60 days of + notice, a reasonable royalty and payment arrangement are not mutually agreed upon in + writing by the parties or the litigation claim is not withdrawn, the rights granted by + Participant to You under Sections 2.1 and/or + 2.2 automatically terminate at the expiration of the 60 day + notice period specified above. +
                                                                      2. any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then any rights + granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first + made, used, sold, distributed, or had made, Modifications made by that Participant. +
                                                                      +

                                                                      8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or indirectly infringes + any patent where such claim is resolved (such as by license or settlement) prior to the + initiation of patent infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or + 2.2 shall be taken into account in determining the amount or + value of any payment or license. +

                                                                      8.4. In the event of termination under Sections + 8.1 or 8.2 above, all end user + license agreements (excluding distributors and resellers) which have been validly + granted by You or any distributor hereunder prior to termination shall survive + termination. +

                                                                      9. Limitation of liability

                                                                      +

                                                                      Under no circumstances and under no legal theory, whether + tort (including negligence), contract, or otherwise, shall you, the initial developer, + any other contributor, or any distributor of covered code, or any supplier of any of + such parties, be liable to any person for any indirect, special, incidental, or + consequential damages of any character including, without limitation, damages for loss + of goodwill, work stoppage, computer failure or malfunction, or any and all other + commercial damages or losses, even if such party shall have been informed of the + possibility of such damages. This limitation of liability shall not apply to liability + for death or personal injury resulting from such party's negligence to the extent + applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion + or limitation of incidental or consequential damages, so this exclusion and limitation + may not apply to you. +

                                                                      10. U.S. government end users

                                                                      +

                                                                      The Covered Code is a "commercial item," as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of + "commercial computer software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. + 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. + 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users + acquire Covered Code with only those rights set forth herein. +

                                                                      11. Miscellaneous

                                                                      +

                                                                      This License represents the complete agreement concerning subject matter hereof. If + any provision of this License is held to be unenforceable, such provision shall be + reformed only to the extent necessary to make it enforceable. This License shall be + governed by California law provisions (except to the extent applicable law, if any, + provides otherwise), excluding its conflict-of-law provisions. With respect to + disputes in which at least one party is a citizen of, or an entity chartered or + registered to do business in the United States of America, any litigation relating to + this License shall be subject to the jurisdiction of the Federal Courts of the + Northern District of California, with venue lying in Santa Clara County, California, + with the losing party responsible for costs, including without limitation, court + costs and reasonable attorneys' fees and expenses. The application of the United + Nations Convention on Contracts for the International Sale of Goods is expressly + excluded. Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this License. +

                                                                      12. Responsibility for claims

                                                                      +

                                                                      As between Initial Developer and the Contributors, each party is responsible for + claims and damages arising, directly or indirectly, out of its utilization of rights + under this License and You agree to work with Initial Developer and Contributors to + distribute such responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. +

                                                                      13. Multiple-licensed code

                                                                      +

                                                                      Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits + you to utilize portions of the Covered Code under Your choice of the MPL + or the alternative licenses, if any, specified by the Initial Developer in the file + described in Exhibit A. +

                                                                      Exhibit A - Mozilla Public License.

                                                                      +
                                                                      "The contents of this file are subject to the Mozilla Public License
                                                                      +Version 1.1 (the "License"); you may not use this file except in
                                                                      +compliance with the License. You may obtain a copy of the License at
                                                                      +http://www.mozilla.org/MPL/
                                                                      +
                                                                      +Software distributed under the License is distributed on an "AS IS"
                                                                      +basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
                                                                      +License for the specific language governing rights and limitations
                                                                      +under the License.
                                                                      +
                                                                      +The Original Code is ______________________________________.
                                                                      +
                                                                      +The Initial Developer of the Original Code is ________________________.
                                                                      +Portions created by ______________________ are Copyright (C) ______
                                                                      +_______________________. All Rights Reserved.
                                                                      +
                                                                      +Contributor(s): ______________________________________.
                                                                      +
                                                                      +Alternatively, the contents of this file may be used under the terms
                                                                      +of the _____ license (the  "[___] License"), in which case the
                                                                      +provisions of [______] License are applicable instead of those
                                                                      +above. If you wish to allow use of your version of this file only
                                                                      +under the terms of the [____] License and not to allow others to use
                                                                      +your version of this file under the MPL, indicate your decision by
                                                                      +deleting the provisions above and replace them with the notice and
                                                                      +other provisions required by the [___] License. If you do not delete
                                                                      +the provisions above, a recipient may use your version of this file
                                                                      +under either the MPL or the [___] License."
                                                                      +

                                                                      NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications. + + diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/README b/js/dojo-release-1.7.2-src/util/shrinksafe/README new file mode 100644 index 0000000..c03dc7b --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/README @@ -0,0 +1,16 @@ +shrinksafe.jar requires js.jar (Rhino) in the same directory. + +Usage: + +java -jar shrinksafe.jar somescript.js > minifiedscript.js + +There is a build-time version dependency between shrinksafe.jar and js.jar. +Shrinksafe must be built and used with a particular version of Rhino. To build, +run build.sh in this directory. Mozilla Rhino is licensed under MPL +1.1 (see LICENSE) and is available from http://www.mozilla.org/rhino. + +shrinksafe.jar is known to work with these Rhino versions: +- 1.7R1 + +This version of ShrinkSafe will be incompatible with Rhino 1.7R3 and beyond +due to changes in the Rhino API. diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/build.sh b/js/dojo-release-1.7.2-src/util/shrinksafe/build.sh new file mode 100755 index 0000000..d379478 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/build.sh @@ -0,0 +1,23 @@ +#!/bin/sh +RHINO=../js.jar +TEST=$1 + +# create shrinksafe.jar from src/ +rm -rf bin +mkdir bin +cd src +javac -classpath $RHINO:. -d ../bin org/dojotoolkit/shrinksafe/Main.java +mkdir ../bin/org/dojotoolkit/shrinksafe/resources +cp org/dojotoolkit/shrinksafe/resources/Messages.properties ../bin/org/dojotoolkit/shrinksafe/resources/Messages.properties +cd ../bin +jar cfm ../shrinksafe.jar ../src/manifest * +cd .. +rm -rf bin + +# call build.sh test to run the unit tests immediately +if [ "$TEST" == "test" ]; then + echo "Running tests." + cd tests + ./runner.sh #| grep errors -1 +fi + diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/js.jar b/js/dojo-release-1.7.2-src/util/shrinksafe/js.jar new file mode 100644 index 0000000..c081d16 Binary files /dev/null and b/js/dojo-release-1.7.2-src/util/shrinksafe/js.jar differ diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/shrinksafe.jar b/js/dojo-release-1.7.2-src/util/shrinksafe/shrinksafe.jar new file mode 100644 index 0000000..53c37f9 Binary files /dev/null and b/js/dojo-release-1.7.2-src/util/shrinksafe/shrinksafe.jar differ diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/src/manifest b/js/dojo-release-1.7.2-src/util/shrinksafe/src/manifest new file mode 100644 index 0000000..85b8ea3 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/src/manifest @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: org.dojotoolkit.shrinksafe.Main +Class-Path: js.jar diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/Compressor.java b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/Compressor.java new file mode 100644 index 0000000..4288d64 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/Compressor.java @@ -0,0 +1,1017 @@ +/* + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Rhino code, released + * May 6, 1999. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1997-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Alex Russell + * Richard Backhouse + */ + + package org.dojotoolkit.shrinksafe; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Stack; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.mozilla.javascript.CompilerEnvirons; +import org.mozilla.javascript.Decompiler; +import org.mozilla.javascript.FunctionNode; +import org.mozilla.javascript.Interpreter; +import org.mozilla.javascript.Kit; +import org.mozilla.javascript.Parser; +import org.mozilla.javascript.ScriptOrFnNode; +import org.mozilla.javascript.ScriptRuntime; +import org.mozilla.javascript.Token; +import org.mozilla.javascript.UintMap; + +/** + * @author rbackhouse + * + */ +public class Compressor { + private static final int FUNCTION_END = Token.LAST_TOKEN + 1; + + /** + * Compress the script + *

                                                                      + * + * @param encodedSource encoded source string + * @param flags Flags specifying format of decompilation output + * @param properties Decompilation properties + * @param parseTree Mapping for each function node and corresponding parameters & variables names + * @return compressed script + */ + private static String compress(String encodedSource, + int flags, + UintMap properties, + ScriptOrFnNode parseTree, + boolean escapeUnicode, + String stripConsole, + TokenMapper tm, + Map replacedTokensLookup){ + int indent = properties.getInt(Decompiler.INITIAL_INDENT_PROP, 0); + if (indent < 0) throw new IllegalArgumentException(); + int indentGap = properties.getInt(Decompiler.INDENT_GAP_PROP, 4); + if (indentGap < 0) throw new IllegalArgumentException(); + int caseGap = properties.getInt(Decompiler.CASE_GAP_PROP, 2); + if (caseGap < 0) throw new IllegalArgumentException(); + + String stripConsoleRegex = "assert|count|debug|dir|dirxml|group|groupEnd|info|profile|profileEnd|time|timeEnd|trace|log"; + if (stripConsole == null) { + // may be null if unspecified on Main cmd line + stripConsoleRegex = null; + } else if (stripConsole.equals("normal")) { + // leave default + } else if (stripConsole.equals("warn")) { + stripConsoleRegex += "|warn"; + } else if (stripConsole.equals("all")) { + stripConsoleRegex += "|warn|error"; + } else { + throw new IllegalArgumentException("unrecognised value for stripConsole: " + stripConsole + "!"); + } + + Pattern stripConsolePattern = null; + if (stripConsoleRegex != null) { + stripConsolePattern = Pattern.compile(stripConsoleRegex); + } + + StringBuffer result = new StringBuffer(); + boolean justFunctionBody = (0 != (flags & Decompiler.ONLY_BODY_FLAG)); + boolean toSource = (0 != (flags & Decompiler.TO_SOURCE_FLAG)); + int braceNesting = 0; + boolean afterFirstEOL = false; + int i = 0; + int prevToken = 0; + boolean primeFunctionNesting = false; + boolean inArgsList = false; + boolean primeInArgsList = false; + + boolean discardingConsole = false; // control skipping "console.stuff()" + int consoleParenCount = 0; // counter for parenthesis counting + StringBuffer discardMe = new StringBuffer(); // throwaway buffer + ReplacedTokens dummyTokens = new ReplacedTokens(new HashMap(), new int[]{}, replacedTokensLookup, null); + int lastMeaningfulToken = Token.SEMI; + int lastMeaningfulTokenBeforeConsole = Token.SEMI; + + int topFunctionType; + if (encodedSource.charAt(i) == Token.SCRIPT) { + ++i; + topFunctionType = -1; + } else { + topFunctionType = encodedSource.charAt(i + 1); + } + if (!toSource) { + // add an initial newline to exactly match js. + // result.append('\n'); + for (int j = 0; j < indent; j++){ + // result.append(' '); + result.append(""); + } + } else { + if (topFunctionType == FunctionNode.FUNCTION_EXPRESSION) { + result.append('('); + } + } + + Stack positionStack = new Stack(); + Stack functionPositionStack = new Stack(); + + int length = encodedSource.length(); + int lineCount = 1; + + while (i < length) { + if(i>0){ + prevToken = encodedSource.charAt(i-1); + } + if (discardingConsole) { + // while we are skipping a console command, discard tokens + int thisToken = encodedSource.charAt(i); + /* Logic for controlling state of discardingConsole */ + switch (thisToken) { + case Token.LP: + consoleParenCount++; + break; + case Token.RP: + consoleParenCount--; + if (consoleParenCount == 0) { + // paren count fell to zero, must be end of console call + discardingConsole = false; + + if (i < (length - 1)) { + int nextToken = getNext(encodedSource, length, i); + + if ((lastMeaningfulTokenBeforeConsole != Token.SEMI && + lastMeaningfulTokenBeforeConsole != Token.LC && + lastMeaningfulTokenBeforeConsole != Token.RC) || + nextToken != Token.SEMI) { + // Either the previous or the following token + // may use our return value, insert undefined + // e.g. true ? console.log("bizarre") : (bar = true); + result.append("undefined"); + } else { + if (Token.SEMI == nextToken) { + // munch following semicolon + i++; + } + } + } + if ((i < (length - 1)) + && (Token.EOL == getNext(encodedSource, length, i))) { + // as a nicety, munch following linefeed + i++; + } + } + break; + } + /* + * advance i - borrow code from later switch statements (could + * mingle this whole discardingConsole block in with rest of + * function but it would be _ugly_) Use discardMe in place of + * result, so we don't use the processed source Specific case + * blocks for all source elements > 1 char long + */ + switch (thisToken) { + case Token.NAME: + case Token.REGEXP: + int jumpPos = getSourceStringEnd(encodedSource, i + 1, + escapeUnicode); + if (Token.OBJECTLIT == encodedSource.charAt(jumpPos)) { + i = printSourceString(encodedSource, i + 1, false, + discardMe, escapeUnicode); + } else { + i = tm.sourceCompress(encodedSource, i + 1, false, + discardMe, prevToken, inArgsList, braceNesting, + dummyTokens); + } + break; + case Token.STRING: + i = printSourceString(encodedSource, i + 1, true, + discardMe, escapeUnicode); + break; + case Token.NUMBER: + i = printSourceNumber(encodedSource, i + 1, discardMe); + break; + default: + // all plain tokens (no data to skip) + i++; + } + // while discarding console, avoid the normal processing + continue; + } + + // System.out.println(Token.name(getNext(source, length, i))); + int thisToken = encodedSource.charAt(i); + + switch(thisToken) { + case Token.NAME: + case Token.REGEXP: // re-wrapped in '/'s in parser... + int jumpPos = getSourceStringEnd(encodedSource, i+1, escapeUnicode); + if (stripConsolePattern != null && thisToken == Token.NAME) { + // Check to see if this is a console.something() call that we + // care about, if so switch on discardingConsole + int nextTokenAt = tm.sourceCompress(encodedSource, i + 1, false, discardMe, prevToken, + inArgsList, braceNesting, dummyTokens); + if (encodedSource.substring(i+2, i+2+encodedSource.charAt(i+1)).equals("console") && + (encodedSource.charAt(nextTokenAt) == Token.DOT)) { + // Find the name of the console method and check it + int afterFnName = printSourceString(encodedSource, nextTokenAt+2, false, discardMe, escapeUnicode); + Matcher m = stripConsolePattern.matcher(encodedSource.substring(nextTokenAt + 3, afterFnName)); + if (m.matches()) { + // Must be an open parenthesis e.g. "console.log(" + if (encodedSource.charAt(afterFnName) == Token.LP) { + discardingConsole = true; + consoleParenCount = 0; + lastMeaningfulTokenBeforeConsole = lastMeaningfulToken; + continue; + } + } + } + } + if(Token.OBJECTLIT == encodedSource.charAt(jumpPos)){ + i = printSourceString(encodedSource, i + 1, false, result, escapeUnicode); + }else{ + ReplacedTokens replacedTokens = null; + if (positionStack.size() > 0) { + Integer pos = (Integer)positionStack.peek(); + replacedTokens = (ReplacedTokens)replacedTokensLookup.get(pos); + } + else { + replacedTokens = new ReplacedTokens(new HashMap(), new int[]{}, replacedTokensLookup, null); + } + + i = tm.sourceCompress( encodedSource, i + 1, false, result, prevToken, + inArgsList, braceNesting, replacedTokens); + } + continue; + case Token.STRING: + +// NOTE: this is the disabled "string munging" code provided in bugs.dojotoolkit.org/ticket/8828 +// simply uncomment this block, and run the build.sh script located in the root shrinksafe folder. +// there is a far-egde-case this is deemed unsafe in, so is entirely disabled for sanity of devs. +// +// StringBuffer buf = new StringBuffer(); +// i--; +// do { +// i++; +// i = printSourceString(encodedSource, i + 1, false, buf, escapeUnicode); +// } while(Token.ADD == encodedSource.charAt(i) && +// Token.STRING == getNext(encodedSource, length, i)); +// result.append('"'); +// result.append(escapeString(buf.toString(), escapeUnicode)); +// result.append('"'); +// +// now comment out this line to complete the patch: + i = printSourceString(encodedSource, i + 1, true, result, escapeUnicode); + + continue; + case Token.NUMBER: + i = printSourceNumber(encodedSource, i + 1, result); + continue; + case Token.TRUE: + result.append("true"); + break; + case Token.FALSE: + result.append("false"); + break; + case Token.NULL: + result.append("null"); + break; + case Token.THIS: + result.append("this"); + break; + case Token.FUNCTION: { + ++i; // skip function type + tm.incrementFunctionNumber(); + primeInArgsList = true; + primeFunctionNesting = true; + result.append("function"); + if (Token.LP != getNext(encodedSource, length, i)) { + result.append(' '); + } + Integer functionPos = new Integer(i-1); + functionPositionStack.push(functionPos); + DebugData debugData = tm.getDebugData(functionPos); + debugData.compressedStart = lineCount; + break; + } + case FUNCTION_END: { + Integer functionPos = (Integer)functionPositionStack.pop(); + DebugData debugData = tm.getDebugData(functionPos); + debugData.compressedEnd = lineCount; + break; + } + case Token.COMMA: + result.append(","); + break; + case Token.LC: + ++braceNesting; + if (Token.EOL == getNext(encodedSource, length, i)){ + indent += indentGap; + } + result.append('{'); + // // result.append('\n'); + break; + case Token.RC: { + if (tm.leaveNestingLevel(braceNesting)) { + positionStack.pop(); + } + --braceNesting; + /* don't print the closing RC if it closes the + * toplevel function and we're called from + * decompileFunctionBody. + */ + if(justFunctionBody && braceNesting == 0){ + break; + } + // // result.append('\n'); + result.append('}'); + // // result.append(' '); + switch (getNext(encodedSource, length, i)) { + case Token.EOL: + case FUNCTION_END: + if ( + (getNext(encodedSource, length, i+1) != Token.SEMI) && + (getNext(encodedSource, length, i+1) != Token.LP) && + (getNext(encodedSource, length, i+1) != Token.RP) && + (getNext(encodedSource, length, i+1) != Token.RB) && + (getNext(encodedSource, length, i+1) != Token.RC) && + (getNext(encodedSource, length, i+1) != Token.COMMA) && + (getNext(encodedSource, length, i+1) != Token.COLON) && + (getNext(encodedSource, length, i+1) != Token.DOT) && + (getNext(encodedSource, length, i) == FUNCTION_END ) + ){ + result.append(';'); + } + indent -= indentGap; + break; + case Token.WHILE: + case Token.ELSE: + indent -= indentGap; + // result.append(' '); + result.append(""); + break; + } + break; + } + case Token.LP: + if(primeInArgsList){ + inArgsList = true; + primeInArgsList = false; + } + if(primeFunctionNesting){ + positionStack.push(new Integer(i)); + tm.enterNestingLevel(braceNesting); + primeFunctionNesting = false; + } + result.append('('); + break; + case Token.RP: + if(inArgsList){ + inArgsList = false; + } + result.append(')'); + /* + if (Token.LC == getNext(source, length, i)){ + result.append(' '); + } + */ + break; + case Token.LB: + result.append('['); + break; + case Token.RB: + result.append(']'); + break; + case Token.EOL: { + if (toSource) break; + boolean newLine = true; + if (!afterFirstEOL) { + afterFirstEOL = true; + if (justFunctionBody) { + /* throw away just added 'function name(...) {' + * and restore the original indent + */ + result.setLength(0); + indent -= indentGap; + newLine = false; + } + } + if (newLine) { + result.append('\n'); + lineCount++; + } + /* add indent if any tokens remain, + * less setback if next token is + * a label, case or default. + */ + if (i + 1 < length) { + int less = 0; + int nextToken = encodedSource.charAt(i + 1); + if (nextToken == Token.CASE + || nextToken == Token.DEFAULT) + { + less = indentGap - caseGap; + } else if (nextToken == Token.RC) { + less = indentGap; + } + /* elaborate check against label... skip past a + * following inlined NAME and look for a COLON. + */ + else if (nextToken == Token.NAME) { + int afterName = getSourceStringEnd(encodedSource, i + 2, escapeUnicode); + if (encodedSource.charAt(afterName) == Token.COLON) + less = indentGap; + } + for (; less < indent; less++){ + // result.append(' '); + result.append(""); + } + } + break; + } + case Token.DOT: + result.append('.'); + break; + case Token.NEW: + result.append("new "); + break; + case Token.DELPROP: + result.append("delete "); + break; + case Token.IF: + result.append("if"); + break; + case Token.ELSE: + result.append("else"); + break; + case Token.FOR: + result.append("for"); + break; + case Token.IN: + result.append(" in "); + break; + case Token.WITH: + result.append("with"); + break; + case Token.WHILE: + result.append("while"); + break; + case Token.DO: + result.append("do"); + break; + case Token.TRY: + result.append("try"); + break; + case Token.CATCH: + result.append("catch"); + break; + case Token.FINALLY: + result.append("finally"); + break; + case Token.THROW: + result.append("throw "); + break; + case Token.SWITCH: + result.append("switch"); + break; + case Token.BREAK: + result.append("break"); + if(Token.NAME == getNext(encodedSource, length, i)){ + result.append(' '); + } + break; + case Token.CONTINUE: + result.append("continue"); + if(Token.NAME == getNext(encodedSource, length, i)){ + result.append(' '); + } + break; + case Token.CASE: + result.append("case "); + break; + case Token.DEFAULT: + result.append("default"); + break; + case Token.RETURN: + result.append("return"); + if(Token.SEMI != getNext(encodedSource, length, i)){ + result.append(' '); + } + break; + case Token.VAR: + result.append("var "); + break; + case Token.SEMI: + result.append(';'); + // result.append('\n'); + /* + if (Token.EOL != getNext(source, length, i)) { + // separators in FOR + result.append(' '); + } + */ + break; + case Token.ASSIGN: + result.append("="); + break; + case Token.ASSIGN_ADD: + result.append("+="); + break; + case Token.ASSIGN_SUB: + result.append("-="); + break; + case Token.ASSIGN_MUL: + result.append("*="); + break; + case Token.ASSIGN_DIV: + result.append("/="); + break; + case Token.ASSIGN_MOD: + result.append("%="); + break; + case Token.ASSIGN_BITOR: + result.append("|="); + break; + case Token.ASSIGN_BITXOR: + result.append("^="); + break; + case Token.ASSIGN_BITAND: + result.append("&="); + break; + case Token.ASSIGN_LSH: + result.append("<<="); + break; + case Token.ASSIGN_RSH: + result.append(">>="); + break; + case Token.ASSIGN_URSH: + result.append(">>>="); + break; + case Token.HOOK: + result.append("?"); + break; + case Token.OBJECTLIT: + // pun OBJECTLIT to mean colon in objlit property + // initialization. + // This needs to be distinct from COLON in the general case + // to distinguish from the colon in a ternary... which needs + // different spacing. + result.append(':'); + break; + case Token.COLON: + if (Token.EOL == getNext(encodedSource, length, i)) + // it's the end of a label + result.append(':'); + else + // it's the middle part of a ternary + result.append(":"); + break; + case Token.OR: + result.append("||"); + break; + case Token.AND: + result.append("&&"); + break; + case Token.BITOR: + result.append("|"); + break; + case Token.BITXOR: + result.append("^"); + break; + case Token.BITAND: + result.append("&"); + break; + case Token.SHEQ: + result.append("==="); + break; + case Token.SHNE: + result.append("!=="); + break; + case Token.EQ: + result.append("=="); + break; + case Token.NE: + result.append("!="); + break; + case Token.LE: + result.append("<="); + break; + case Token.LT: + result.append("<"); + break; + case Token.GE: + result.append(">="); + break; + case Token.GT: + result.append(">"); + break; + case Token.INSTANCEOF: + // FIXME: does this really need leading space? + result.append(" instanceof "); + break; + case Token.LSH: + result.append("<<"); + break; + case Token.RSH: + result.append(">>"); + break; + case Token.URSH: + result.append(">>>"); + break; + case Token.TYPEOF: + result.append("typeof "); + break; + case Token.VOID: + result.append("void "); + break; + case Token.NOT: + result.append('!'); + break; + case Token.BITNOT: + result.append('~'); + break; + case Token.POS: + result.append('+'); + break; + case Token.NEG: + result.append('-'); + break; + case Token.INC: + if(Token.ADD == prevToken){ + result.append(' '); + } + result.append("++"); + if(Token.ADD == getNext(encodedSource, length, i)){ + result.append(' '); + } + break; + case Token.DEC: + if(Token.SUB == prevToken){ + result.append(' '); + } + result.append("--"); + if(Token.SUB == getNext(encodedSource, length, i)){ + result.append(' '); + } + break; + case Token.ADD: + result.append("+"); + int nextToken = encodedSource.charAt(i + 1); + if (nextToken == Token.POS) { + result.append(' '); + } + break; + case Token.SUB: + result.append("-"); + nextToken = encodedSource.charAt(i + 1); + if (nextToken == Token.NEG) { + result.append(' '); + } + break; + case Token.MUL: + result.append("*"); + break; + case Token.DIV: + result.append("/"); + break; + case Token.MOD: + result.append("%"); + break; + case Token.COLONCOLON: + result.append("::"); + break; + case Token.DOTDOT: + result.append(".."); + break; + case Token.XMLATTR: + result.append('@'); + break; + case Token.DEBUGGER: + System.out.println("WARNING: Found a `debugger;` statement in code being compressed"); + result.append("debugger"); + break; + default: + // If we don't know how to decompile it, raise an exception. + throw new RuntimeException(); + } + if (thisToken != Token.EOL) { + lastMeaningfulToken = thisToken; + } + ++i; + } + if (!toSource) { + // add that trailing newline if it's an outermost function. + // if (!justFunctionBody){ + // result.append('\n'); + // } + } else { + if (topFunctionType == FunctionNode.FUNCTION_EXPRESSION) { + result.append(')'); + } + } + return result.toString(); + } + + /** + * Collect the replaced tokens and store them in a lookup table for the next + * source pass. + * + * @param encodedSource encoded source string + * @param escapeUnicode escape chars with unicode. + * @param tm token mapper object. + * @return Map containing replaced tokens lookup information + */ + private static Map collectReplacedTokens(String encodedSource, boolean escapeUnicode, TokenMapper tm) { + int length = encodedSource.length(); + + int i = 0; + int prevToken = 0; + int braceNesting = 0; + + boolean inArgsList = false; + boolean primeFunctionNesting = false; + boolean primeInArgsList = false; + + if (encodedSource.charAt(i) == Token.SCRIPT) { + ++i; + } + + Stack positionStack = new Stack(); + Stack functionPositionStack = new Stack(); + Map tokenLookup = new HashMap(); + + while (i < length) { + if (i > 0) { + prevToken = encodedSource.charAt(i - 1); + } + switch (encodedSource.charAt(i)) { + case Token.NAME: + case Token.REGEXP: { + int jumpPos = getSourceStringEnd(encodedSource, i + 1, escapeUnicode); + if (Token.OBJECTLIT == encodedSource.charAt(jumpPos)) { + i = printSourceString(encodedSource, i + 1, false, null, escapeUnicode); + } else { + i = tm.sourceCompress(encodedSource, i + 1, false, null, prevToken, inArgsList, braceNesting, null); + } + continue; + } + case Token.STRING: { + i = printSourceString(encodedSource, i + 1, true, null, escapeUnicode); + continue; + } + case Token.NUMBER: { + i = printSourceNumber(encodedSource, i + 1, null); + continue; + } + case Token.FUNCTION: { + ++i; // skip function type + tm.incrementFunctionNumber(); + primeInArgsList = true; + primeFunctionNesting = true; + functionPositionStack.push(new Integer(i-1)); + break; + } + case Token.LC: { + ++braceNesting; + break; + } + case Token.RC: { + Map m = tm.getCurrentTokens(); + if (tm.leaveNestingLevel(braceNesting)) { + Integer pos = (Integer)positionStack.pop(); + Integer functionPos = (Integer)functionPositionStack.pop(); + int[] parents = new int[positionStack.size()]; + int idx = 0; + for (Iterator itr = positionStack.iterator(); itr.hasNext();) { + parents[idx++] = ((Integer)itr.next()).intValue(); + } + DebugData debugData = tm.getDebugData(functionPos); + ReplacedTokens replacedTokens = new ReplacedTokens(m, parents, tokenLookup, debugData); + tokenLookup.put(pos, replacedTokens); + } + --braceNesting; + break; + } + case Token.LP: { + if (primeInArgsList) { + inArgsList = true; + primeInArgsList = false; + } + if (primeFunctionNesting) { + positionStack.push(new Integer(i)); + tm.enterNestingLevel(braceNesting); + primeFunctionNesting = false; + } + break; + } + case Token.RP: { + if (inArgsList) { + inArgsList = false; + } + break; + } + } + ++i; + } + return tokenLookup; + } + + private static int getNext(String source, int length, int i) { + return (i + 1 < length) ? source.charAt(i + 1) : Token.EOF; + } + + private static int getSourceStringEnd(String source, int offset, boolean escapeUnicode) { + return printSourceString(source, offset, false, null, escapeUnicode); + } + + private static int printSourceString(String source, int offset, + boolean asQuotedString, + StringBuffer sb, + boolean escapeUnicode) { + int length = source.charAt(offset); + ++offset; + if ((0x8000 & length) != 0) { + length = ((0x7FFF & length) << 16) | source.charAt(offset); + ++offset; + } + if (sb != null) { + String str = source.substring(offset, offset + length); + if (!asQuotedString) { + sb.append(str); + } else { + sb.append('"'); + sb.append(escapeString(str, escapeUnicode)); + sb.append('"'); + } + } + return offset + length; + } + + private static int printSourceNumber(String source, int offset, StringBuffer sb) { + double number = 0.0; + char type = source.charAt(offset); + ++offset; + if (type == 'S') { + if (sb != null) { + int ival = source.charAt(offset); + number = ival; + } + ++offset; + } else if (type == 'J' || type == 'D') { + if (sb != null) { + long lbits; + lbits = (long) source.charAt(offset) << 48; + lbits |= (long) source.charAt(offset + 1) << 32; + lbits |= (long) source.charAt(offset + 2) << 16; + lbits |= source.charAt(offset + 3); + if (type == 'J') { + number = lbits; + } else { + number = Double.longBitsToDouble(lbits); + } + } + offset += 4; + } else { + // Bad source + throw new RuntimeException(); + } + if (sb != null) { + sb.append(ScriptRuntime.numberToString(number, 10)); + } + return offset; + } + + private static String escapeString(String s, boolean escapeUnicode) { + return escapeString(s, '"', escapeUnicode); + } + + private static String escapeString(String s, char escapeQuote, boolean escapeUnicode) { + if (!(escapeQuote == '"' || escapeQuote == '\'')) Kit.codeBug(); + StringBuffer sb = null; + + for(int i = 0, L = s.length(); i != L; ++i) { + int c = s.charAt(i); + + if (' ' <= c && c <= '~' && c != escapeQuote && c != '\\') { + // an ordinary print character (like C isprint()) and not " + // or \ . + if (sb != null) { + sb.append((char)c); + } + continue; + } + if (sb == null) { + sb = new StringBuffer(L + 3); + sb.append(s); + sb.setLength(i); + } + + int escape = -1; + switch (c) { + case '\b': escape = 'b'; break; + case '\f': escape = 'f'; break; + case '\n': escape = 'n'; break; + case '\r': escape = 'r'; break; + case '\t': escape = 't'; break; + case 0xb: escape = 'v'; break; // Java lacks \v. + case ' ': escape = ' '; break; + case '\\': escape = '\\'; break; + } + if (escape >= 0) { + // an \escaped sort of character + sb.append('\\'); + sb.append((char)escape); + } else if (c == escapeQuote) { + sb.append('\\'); + sb.append(escapeQuote); + } else { + if (escapeUnicode || c == 0) { // always escape the null character (#5027) + int hexSize; + if (c < 256) { + // 2-digit hex + sb.append("\\x"); + hexSize = 2; + } else { + // Unicode. + sb.append("\\u"); + hexSize = 4; + } + // append hexadecimal form of c left-padded with 0 + for (int shift = (hexSize - 1) * 4; shift >= 0; shift -= 4) { + int digit = 0xf & (c >> shift); + int hc = (digit < 10) ? '0' + digit : 'a' - 10 + digit; + sb.append((char)hc); + } + } + else { + sb.append((char)c); + } + } + } + return (sb == null) ? s : sb.toString(); + } + + public static final String compressScript(String source, int indent, int lineno, String stripConsole) { + return compressScript(source, indent, lineno, false, stripConsole); + } + + public static final String compressScript(String source, int indent, int lineno, boolean escapeUnicode, String stripConsole) { + return compressScript(source, indent, lineno, escapeUnicode, stripConsole, null); + } + + public static final String compressScript(String source, int indent, int lineno, boolean escapeUnicode, String stripConsole, StringBuffer debugData) { + CompilerEnvirons compilerEnv = new CompilerEnvirons(); + + Parser parser = new Parser(compilerEnv, compilerEnv.getErrorReporter()); + + ScriptOrFnNode tree = parser.parse(source, null, lineno); + String encodedSource = parser.getEncodedSource(); + if (encodedSource.length() == 0) { return ""; } + + Interpreter compiler = new Interpreter(); + compiler.compile(compilerEnv, tree, encodedSource, false); + UintMap properties = new UintMap(1); + properties.put(Decompiler.INITIAL_INDENT_PROP, indent); + + TokenMapper tm = new TokenMapper(tree); + Map replacedTokensLookup = collectReplacedTokens(encodedSource, escapeUnicode, tm); + tm.reset(); + + String compressedSource = compress(encodedSource, 0, properties, tree, escapeUnicode, stripConsole, tm, replacedTokensLookup); + if (debugData != null) { + debugData.append("[\n"); + int count = 1; + for (Iterator itr = replacedTokensLookup.keySet().iterator(); itr.hasNext();) { + Integer pos = (Integer)itr.next(); + ReplacedTokens replacedTokens = (ReplacedTokens)replacedTokensLookup.get(pos); + debugData.append(replacedTokens.toJson()); + if (count++ < replacedTokensLookup.size()) { + debugData.append(','); + } + debugData.append("\n"); + } + debugData.append("]"); + } + return compressedSource; + } +} diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/DebugData.java b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/DebugData.java new file mode 100644 index 0000000..d5437dd --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/DebugData.java @@ -0,0 +1,37 @@ +/* + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Rhino code, released + * May 6, 1999. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1997-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Richard Backhouse + */ +package org.dojotoolkit.shrinksafe; + +/* + * The class provides a simple data structure to collect debug information + * for a given function. + */ +public class DebugData { + public int start = 0; + public int end = 0; + public int compressedStart = 0; + public int compressedEnd = 0; + public String[] paramAndVarNames = null; +} diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/Main.java b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/Main.java new file mode 100644 index 0000000..3cef2bd --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/Main.java @@ -0,0 +1,315 @@ +/* + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Rhino code, released + * May 6, 1999. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1997-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Alex Russell + * Richard Backhouse + */ + +package org.dojotoolkit.shrinksafe; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; + +import org.mozilla.javascript.Context; +import org.mozilla.javascript.ContextAction; +import org.mozilla.javascript.Kit; +import org.mozilla.javascript.tools.ToolErrorReporter; +import org.mozilla.javascript.tools.shell.Global; +import org.mozilla.javascript.tools.shell.QuitAction; +import org.mozilla.javascript.tools.shell.ShellContextFactory; + +public class Main { + protected static final Global global = new Global(); + protected static final ShellContextFactory shellContextFactory = new ShellContextFactory(); + protected static ToolErrorReporter errorReporter; + protected static int exitCode = 0; + protected static boolean escapeUnicode = false; + protected static String stripConsole = null; + + static { + global.initQuitAction(new IProxy(IProxy.SYSTEM_EXIT, null)); + } + + /** + * Proxy class to avoid proliferation of anonymous classes. + */ + private static class IProxy implements ContextAction, QuitAction + { + private static final int PROCESS_FILES = 1; + private static final int SYSTEM_EXIT = 3; + + private int type; + private String[] args; + + IProxy(int type, String[] args) { + this.type = type; + this.args = args; + } + + public Object run(Context cx) { + if (type == PROCESS_FILES) { + try { + processFiles(cx, args); + } catch (IOException ioe) { + Context.reportError(ioe.toString()); + } + } else { + throw Kit.codeBug(); + } + return null; + } + + public void quit(Context cx, int exitCode) { + if (type == SYSTEM_EXIT) { + System.exit(exitCode); + return; + } + throw Kit.codeBug(); + } + } + + public static void main(String[] args) { + errorReporter = new ToolErrorReporter(false, global.getErr()); + shellContextFactory.setErrorReporter(errorReporter); + IProxy iproxy = new IProxy(IProxy.PROCESS_FILES, processOptions(args)); + global.init(shellContextFactory); + shellContextFactory.call(iproxy); + } + + public static String[] processOptions(String args[]) { + List fileList = new ArrayList(); + String usageError = null; + boolean showUsage = false; + + for (int i = 0; i < args.length; i++) { + String arg = args[i]; + if (!arg.startsWith("-")) { + fileList.add(arg); + } + else if (arg.equals("-js-version")) { + if (++i == args.length) { + usageError = arg; + } + int version = 0; + try { + version = Integer.parseInt(args[i]); + } catch (NumberFormatException ex) { + usageError = args[i]; + } + if (!Context.isValidLanguageVersion(version)) { + usageError = args[i]; + } + if (usageError != null) + shellContextFactory.setLanguageVersion(version); + } +/* + else if (arg.equals("-opt") || arg.equals("-O")) { + if (++i == args.length) { + usageError = arg; + } + int opt = 0; + try { + opt = Integer.parseInt(args[i]); + } catch (NumberFormatException ex) { + usageError = args[i]; + } + if (opt == -2) { + // Compatibility with Cocoon Rhino fork + opt = -1; + } else if (!Context.isValidOptimizationLevel(opt)) { + usageError = args[i]; + } + if (usageError != null) { + shellContextFactory.setOptimizationLevel(opt); + } + } + else if (arg.equals("-debug")) { + shellContextFactory.setGeneratingDebug(true); + } +*/ + else if (arg.equals("-?") || arg.equals("-help")) { + showUsage = true; + } + else if (arg.equals("-escape-unicode")) { + escapeUnicode = true; + } + else if (arg.equals("-stripConsole")) { + if (i >= (args.length-1)) { + usageError = getMessage("msg.shell.stripConsoleMissingArg"); + } else { + stripConsole = args[++i]; + if (!stripConsole.equals("normal") && + !stripConsole.equals("warn") && + !stripConsole.equals("all")) { + usageError = getMessage("msg.shell.stripConsoleInvalid"); + } + } + } + + } + + // print error and usage message + if (usageError != null) { + global.getOut().println(getMessage("msg.shell.invalid", usageError)); + } + if (usageError != null || showUsage) { + global.getOut().println(getMessage("msg.shell.usage")); + System.exit(1); + } + + String[] files = new String[fileList.size()]; + files = (String[])fileList.toArray(files); + return files; + } + + static void processFiles(Context cx, String[] files) throws IOException { + StringBuffer cout = new StringBuffer(); + if (files.length > 0) { + for (int i=0; i < files.length; i++) { + try { + String source = (String)readFileOrUrl(files[i], true); + cout.append(Compressor.compressScript(source, 0, 1, escapeUnicode, stripConsole)); + } catch(IOException ex) { + // continue processing files + } + } + } else { + byte[] data = Kit.readStream(global.getIn(), 4096); + // Convert to String using the default encoding + String source = new String(data); + if (source != null) { + cout.append(Compressor.compressScript(source, 0, 1, escapeUnicode, stripConsole)); + } + } + + global.getOut().println(cout); + } + + private static Object readFileOrUrl(String path, boolean convertToString) throws IOException { + URL url = null; + // Assume path is URL if it contains a colon and there are at least + // 2 characters in the protocol part. The later allows under Windows + // to interpret paths with driver letter as file, not URL. + if (path.indexOf(':') >= 2) { + try { + url = new URL(path); + } catch (MalformedURLException ex) { + } + } + + InputStream is = null; + int capacityHint = 0; + if (url == null) { + File file = new File(path); + capacityHint = (int)file.length(); + try { + is = new FileInputStream(file); + } catch (IOException ex) { + Context.reportError(getMessage("msg.couldnt.open", path)); + throw ex; + } + } else { + try { + URLConnection uc = url.openConnection(); + is = uc.getInputStream(); + capacityHint = uc.getContentLength(); + // Ignore insane values for Content-Length + if (capacityHint > (1 << 20)) { + capacityHint = -1; + } + } catch (IOException ex) { + Context.reportError(getMessage("msg.couldnt.open.url", url.toString(), ex.toString())); + throw ex; + } + } + if (capacityHint <= 0) { + capacityHint = 4096; + } + + byte[] data; + try { + try { + is = new BufferedInputStream(is); + data = Kit.readStream(is, capacityHint); + } finally { + is.close(); + } + } catch (IOException ex) { + Context.reportError(ex.toString()); + throw ex; + } + + Object result; + if (convertToString) { + // Convert to String using the default encoding + // TODO: Use 'charset=' argument of Content-Type if URL? + result = new String(data); + } else { + result = data; + } + return result; + } + + private static String getMessage(String messageId) { + return getMessage(messageId, (Object []) null); + } + + private static String getMessage(String messageId, String argument) { + return getMessage(messageId, new Object[]{argument}); + } + + private static String getMessage(String messageId, Object arg1, Object arg2) { + return getMessage(messageId, new Object[]{arg1, arg2}); + } + + private static String getMessage(String messageId, Object[] args) { + Context cx = Context.getCurrentContext(); + Locale locale = cx == null ? Locale.getDefault() : cx.getLocale(); + + ResourceBundle rb = ResourceBundle.getBundle("org.dojotoolkit.shrinksafe.resources.Messages", locale); + + String formatString = null; + try { + formatString = rb.getString(messageId); + } catch (java.util.MissingResourceException mre) { + throw new RuntimeException("no message resource found for message property " + messageId); + } + + if (args == null) { + return formatString; + } else { + MessageFormat formatter = new MessageFormat(formatString); + return formatter.format(args); + } + } +} diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/ReplacedTokens.java b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/ReplacedTokens.java new file mode 100644 index 0000000..f5a2d87 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/ReplacedTokens.java @@ -0,0 +1,198 @@ +/* + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Rhino code, released + * May 6, 1999. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1997-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Richard Backhouse + */ +package org.dojotoolkit.shrinksafe; + +import java.util.Iterator; +import java.util.Map; + + +/* + * This Class provides a container for the replaced tokens applied for a given scope + * It provides a method to traverse down through the hierarchy to seach for a + * replacement match. It also provides a method that generates debug information. + */ + +public class ReplacedTokens { + private int[] parents = null; + private Map replacements = null; + private Map lookup = null; + private DebugData debugData = null; + + public ReplacedTokens(Map replacements, int[] parents, Map lookup, DebugData debugData) { + this.replacements = replacements; + this.parents = parents; + this.lookup = lookup; + this.debugData = debugData; + } + + public String find(String token) { + String replacedToken = null; + if (replacements != null) { + replacedToken = (String)replacements.get(token); + } + if (replacedToken == null) { + for (int i = parents.length; i > 0; i--) { + int parentPos = parents[i-1]; + ReplacedTokens parent = (ReplacedTokens)lookup.get(new Integer(parentPos)); + if (parent.replacements != null) { + replacedToken = (String)parent.replacements.get(token); + if (replacedToken != null) { + break; + } + } + } + } + if (replacedToken == null) { + replacedToken = token; + } + return replacedToken; + } + + public String printDebugData() { + StringBuffer sb = new StringBuffer(); + if (debugData != null) { + sb.append("Start:"+debugData.start); + sb.append(' '); + sb.append("End:"+debugData.end); + sb.append(' '); + sb.append("Compressed Start:"+debugData.compressedStart); + sb.append(' '); + sb.append("Compressed End:"+debugData.compressedEnd); + sb.append(' '); + if (debugData.paramAndVarNames != null) { + sb.append("Params and Vars: ["); + for (String paramVar: debugData.paramAndVarNames) { + sb.append(paramVar); + sb.append(' '); + } + sb.append("]\n"); + } + if (replacements != null && replacements.size() > 0) { + sb.append("\t"); + sb.append("Replacements:\n"); + for (Iterator itr = replacements.keySet().iterator(); itr.hasNext();) { + String token = (String)itr.next(); + String replacement = (String)replacements.get(token); + if (!token.equals(replacement)) { + sb.append("\t\t"); + sb.append('['); + sb.append(token); + sb.append(']'); + sb.append(" replaced with "); + sb.append('['); + sb.append(replacement); + sb.append(']'); + sb.append('\n'); + } + } + sb.append("\n"); + } + for (int i = parents.length; i > 0; i--) { + int parentPos = parents[i-1]; + ReplacedTokens parent = (ReplacedTokens)lookup.get(new Integer(parentPos)); + if (parent.replacements != null && parent.replacements.size() > 0) { + sb.append("\t"); + sb.append("Parent Replacements level ["+i+"]:\n"); + for (Iterator itr = parent.replacements.keySet().iterator(); itr.hasNext();) { + String token = (String)itr.next(); + String replacement = (String)parent.replacements.get(token); + if (!token.equals(replacement)) { + sb.append("\t\t"); + sb.append('['); + sb.append(token); + sb.append(']'); + sb.append(" replaced with "); + sb.append('['); + sb.append(replacement); + sb.append(']'); + sb.append('\n'); + } + } + sb.append("\n"); + } + } + } + return sb.toString(); + } + + public String toJson() { + StringBuffer json = new StringBuffer(); + json.append('{'); + if (debugData != null) { + json.append("start: "+debugData.start); + json.append(", "); + json.append("end: "+debugData.end); + json.append(", "); + json.append("compressedStart: "+debugData.compressedStart); + json.append(", "); + json.append("compressedEnd: "+debugData.compressedEnd); + json.append(", "); + json.append("replacements: {"); + if (replacements != null && replacements.size() > 0) { + json.append(replacementsToJson(replacements)); + } + json.append('}'); + if (parents.length > 0) { + json.append(", "); + json.append("parentReplacements: ["); + } + int count = 1; + for (int i = 0; i < parents.length; i++) { + json.append('{'); + int parentPos = parents[i]; + ReplacedTokens parent = (ReplacedTokens)lookup.get(new Integer(parentPos)); + if (parent.replacements != null && parent.replacements.size() > 0) { + json.append(replacementsToJson(parent.replacements)); + } + json.append('}'); + if (count++ < parents.length) { + json.append(", "); + } + } + if (parents.length > 0) { + json.append("]"); + } + } + json.append("}"); + return json.toString(); + } + + private static String replacementsToJson(Map replacements) { + StringBuffer sb = new StringBuffer(); + int count = 1; + for (Iterator itr = replacements.keySet().iterator(); itr.hasNext();) { + String token = (String)itr.next(); + String replacement = (String)replacements.get(token); + sb.append("\""+replacement+'\"'); + sb.append(" : "); + sb.append("\""+token+"\""); + if (count++ < replacements.size()) { + sb.append(", "); + } + } + + return sb.toString(); + } +} diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/TokenMapper.java b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/TokenMapper.java new file mode 100644 index 0000000..32c2b2e --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/TokenMapper.java @@ -0,0 +1,325 @@ +/* + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Rhino code, released + * May 6, 1999. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1997-1999 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Alex Russell + * Richard Backhouse + */ + +package org.dojotoolkit.shrinksafe; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.mozilla.javascript.ScriptOrFnNode; +import org.mozilla.javascript.ScriptRuntime; +import org.mozilla.javascript.Token; + +public class TokenMapper { + private List functionBracePositions = new ArrayList(); + + /** + * Map of all replaced tokens + */ + private List replacedTokens = new ArrayList(); + + /** + * Map of each Function node and all the variables in its current function + * scope, other variables found while traversing the prototype chain and + * variables found in the top-level scope. + */ + private List functionVarMappings = new ArrayList(); + private Map debugDataList = new HashMap(); + + private int functionNum = 0; + + private int parentScope = 0; + + private int lastTokenCount = 0; + + public TokenMapper(ScriptOrFnNode parseTree) { + collectFunctionMappings(parseTree); + } + + public void incrementFunctionNumber() { + functionNum++; + } + + /** + * Generate new compressed tokens + *

                                                                      + * + * @param token + * value of the string token + * @param hasNewMapping + * boolean value indicating a new variable binding + * @return compressed token + */ + private String getMappedToken(String token, boolean hasNewMapping) { + String newToken = null; + Map tokens = null; + String blank = new String(""); + int localScope = functionBracePositions.size() - 1; + + String oldToken = getPreviousTokenMapping(token, hasNewMapping); + + if (!oldToken.equalsIgnoreCase(blank)) { + return oldToken; + } else if ((hasNewMapping || isInScopeChain(token))) { + newToken = new String("_" + Integer.toHexString(++lastTokenCount)); + if (newToken.length() >= token.length() && token.charAt(0) != '_') { + newToken = token; + lastTokenCount--; + } + tokens = (Map) replacedTokens.get(hasNewMapping ? localScope : parentScope); + tokens.put(token, newToken); + return newToken; + } + return token; + } + + /** + * Checks for variable names in prototype chain + *

                                                                      + * + * @param token + * value of the string token + * @return boolean value indicating if the token is present in the chained + * scope + */ + private boolean isInScopeChain(String token) { + int scope = functionBracePositions.size(); + Map chainedScopeVars = (Map) functionVarMappings.get(functionNum); + if (!chainedScopeVars.isEmpty()) { + for (int i = scope; i > 0; i--) { + if (chainedScopeVars.containsKey(new Integer(i))) { + parentScope = i - 1; + List temp = Arrays.asList((String[]) chainedScopeVars.get(new Integer(i))); + if (temp.indexOf(token) != -1) { + return true; + } + } + } + } + return false; + } + + /** + * Checks previous token mapping + *

                                                                      + * + * @param token + * value of the string token + * @param hasNewMapping + * boolean value indicating a new variable binding + * @return string value of the previous token or blank string + */ + private String getPreviousTokenMapping(String token, boolean hasNewMapping) { + String result = new String(""); + int scope = replacedTokens.size() - 1; + + if (scope < 0) { + return result; + } + + if (hasNewMapping) { + Map tokens = (Map) (replacedTokens.get(scope)); + if (tokens.containsKey(token)) { + result = (String) tokens.get(token); + return result; + } + } else { + for (int i = scope; i > -1; i--) { + Map tokens = (Map) (replacedTokens.get(i)); + if (tokens.containsKey(token)) { + result = (String) tokens.get(token); + return result; + } + } + } + return result; + } + + /** + * Generate mappings for each Function node and parameters and variables + * names associated with it. + *

                                                                      + * + * @param parseTree + * Mapping for each function node and corresponding parameters & + * variables names + */ + private void collectFunctionMappings(ScriptOrFnNode parseTree) { + int level = -1; + collectFuncNodes(parseTree, level, null); + } + + /** + * Recursive method to traverse all Function nodes + *

                                                                      + * + * @param parseTree + * Mapping for each function node and corresponding parameters & + * variables names + * @param level + * scoping level + */ + private void collectFuncNodes(ScriptOrFnNode parseTree, int level, ScriptOrFnNode parent) { + level++; + + DebugData debugData = new DebugData(); + debugData.start = parseTree.getBaseLineno(); + debugData.end = parseTree.getEndLineno(); + debugData.paramAndVarNames = parseTree.getParamAndVarNames(); + debugDataList.put(new Integer(parseTree.getEncodedSourceStart()), debugData); + + functionVarMappings.add(new HashMap()); + + Map bindingNames = (Map) functionVarMappings.get(functionVarMappings.size() - 1); + bindingNames.put(new Integer(level), parseTree.getParamAndVarNames()); + + if (parent != null) { + bindingNames.put(new Integer(level-1), parent.getParamAndVarNames()); + } + + int nestedCount = parseTree.getFunctionCount(); + for (int i = 0; i != nestedCount; ++i) { + collectFuncNodes(parseTree.getFunctionNode(i), level, parseTree); + bindingNames = (Map) functionVarMappings.get(functionVarMappings.size() - 1); + bindingNames.put(new Integer(level), parseTree.getParamAndVarNames()); + } + } + + /** + * Compress the script + *

                                                                      + * + * @param encodedSource + * encoded source string + * @param offset + * position within the encoded source + * @param asQuotedString + * boolean value indicating a quoted string + * @param sb + * String buffer reference + * @param prevToken + * Previous token in encoded source + * @param inArgsList + * boolean value indicating position inside arguments list + * @param currentLevel + * embeded function level + * @param parseTree + * Mapping of each function node and corresponding parameters & + * variables names + * @return compressed script + */ + public int sourceCompress(String encodedSource, int offset, + boolean asQuotedString, StringBuffer sb, int prevToken, + boolean inArgsList, int currentLevel, ReplacedTokens replacedTokens) { + + boolean hasNewMapping = false; + + int length = encodedSource.charAt(offset); + ++offset; + if ((0x8000 & length) != 0) { + length = ((0x7FFF & length) << 16) | encodedSource.charAt(offset); + ++offset; + } + String str = encodedSource.substring(offset, offset + length); + if ((prevToken == Token.VAR) || (inArgsList)) { + hasNewMapping = true; + } + if (sb != null) { + String sourceStr = new String(str); + + if (((functionBracePositions.size() > 0) && + (currentLevel >= (((Integer) functionBracePositions.get(functionBracePositions.size() - 1)).intValue()))) || + (inArgsList)) { + if (prevToken != Token.DOT) { + // Look for replacement token in provided lookup object. + str = replacedTokens.find(str); + } + } + if ((!inArgsList) && (asQuotedString)) { + if ((prevToken == Token.LC) || (prevToken == Token.COMMA)) { + str = sourceStr; + } + } + if (!asQuotedString) { + sb.append(str); + } else { + sb.append('"'); + sb.append(ScriptRuntime.escapeString(str)); + sb.append('"'); + } + } + else if (((functionBracePositions.size() > 0) && + (currentLevel >= (((Integer) functionBracePositions.get(functionBracePositions.size() - 1)).intValue()))) || + (inArgsList)) { + if (prevToken != Token.DOT) { + getMappedToken(str, hasNewMapping); + } + } + return offset + length; + } + + public void enterNestingLevel(int braceNesting) { + functionBracePositions.add(new Integer(braceNesting + 1)); + replacedTokens.add(new HashMap()); + } + + public boolean leaveNestingLevel(int braceNesting) { + boolean tokensRemoved = false; + Integer bn = new Integer(braceNesting); + + if ((functionBracePositions.contains(bn)) && (replacedTokens.size() > 0)) { + // remove our mappings now! + int scopedSize = replacedTokens.size(); + replacedTokens.remove(scopedSize - 1); + functionBracePositions.remove(bn); + tokensRemoved = true; + } + return tokensRemoved; + } + + public Map getCurrentTokens() { + Map m = null; + if (replacedTokens.size() > 0) { + m = (Map)replacedTokens.get(replacedTokens.size() - 1); + } + return m; + } + + public DebugData getDebugData(Integer functionPosition) { + return (DebugData)debugDataList.get(functionPosition); + } + + public void reset() { + functionNum = 0; + parentScope = 0; + lastTokenCount = 0; + functionBracePositions = new ArrayList(); + replacedTokens = new ArrayList(); + } +} diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/resources/Messages.properties b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/resources/Messages.properties new file mode 100644 index 0000000..947132d --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/src/org/dojotoolkit/shrinksafe/resources/Messages.properties @@ -0,0 +1,53 @@ +# Version: MPL 1.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Rhino code, released +# May 6, 1999. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 1997-1999 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Alex Russell +# Richard Backhouse + +msg.couldnt.open =\ + Couldn''t open file "{0}". + +msg.couldnt.open.url =\ + Couldn''t open URL "{0}: {1}". + +msg.shell.invalid =\ + Invalid option "{0}" + +msg.shell.stripConsoleMissingArg =\ + No behaviour provided for stripConsole + +msg.shell.stripConsoleInvalid =\ + Invalid value provided for stripConsole + +msg.shell.usage =\ + Dojo ShrinkSafe 2.0 $Rev: 22183 $ \n\ + \n\ + Usage: java -jar shrinksafe.jar [options...] [files or urls]\n\ + Valid options are:\n\ + \ -?, -help Displays help messages.\n\ + \ -escape-unicode Use Javascript \\u#### notation for non-ASCII Characters.\n\ + \ -js-version n Sets the version of Javascript used. See the -version\n\ + \ option in Rhino for info. e.g. 100|110|120|130|140\n\ + \ -stripConsole [ normal | warn | all ]\n\ + \ If not specified, all console calls are left alone.\n\ + \ normal - all console calls except warn and error are stripped.\n\ + \ warn - all console calls except error are stripped.\n\ + \ all - all console calls are stripped.\n\ diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/1768.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/1768.js new file mode 100644 index 0000000..4e18073 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/1768.js @@ -0,0 +1,16 @@ +// testing a simple var list with embedded things. +var result = 0; + +(function(){ + var a = 2, + b = 3, + superLong = 4, + aFunction = function(arg){ + var inList = superLong; + result = inList; + } + ; + + aFunction(superLong); + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/3241.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/3241.js new file mode 100644 index 0000000..462df32 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/3241.js @@ -0,0 +1,14 @@ +result = ""; + +(function() { +function MyClass(){ + this.foo = function(argument1, argument2){ + var mytest = test; + return mytest; + } + this.bar = function(){} +} +var test = "data"; + +result = new MyClass().foo(); +})(); diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/5303.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/5303.js new file mode 100644 index 0000000..de20cec --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/5303.js @@ -0,0 +1,21 @@ +result = ""; + +(function() { + CallMe = function(callback) { + callback(); + }; + + var say_hello_twice = function() { + say_hello(); + + CallMe(function(){ + say_hello(); + }); + }; + + var say_hello = function() { + result += 'hello world'; + }; + + say_hello_twice(); +})(); diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/8828.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/8828.js new file mode 100644 index 0000000..74b6b65 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/8828.js @@ -0,0 +1,55 @@ +var result = [], string_tests; + +(function(){ + // testing string munging + + var n = "c"; + result.push("a" + "b", "a" + n); + + var ll = "+"; + result.push(ll); + + var color = "red"; + var f = "The" + "Quick" + color + "Fox"; + result.push(f); + + var h = 4; + var multiline = "this" + + "is" + "a" + "test" + + "spanning" + + h + "lines" + ; + result.push(multiline); + + // aliases. all "bar" + var a = "bar", b = 'bar', c = a; + + // a multi-line string outside of the array + var ml = "testing" + + "multiple" + + "lines"; + + var val = [ + "test" + "ing", + "test" + a + "simple", + "testing" + "combined" + b + "variables", + "test \"+" + "weird syntax", + 'test' + 'basic', + 'test "mixed"', + ml, + 'test "mixed" and' + 'munge', + "t" + "e" + "s" + "t", + "t" + "e" + "s" + c + "t", + // weirdest example imaginable?: + '"slightly"+"off"', + // fail: + !"a" + "b", + (!"a") + "b", + !("a") + "b" + ]; + + string_tests = function(){ + return val; + } + +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/8974.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/8974.js new file mode 100644 index 0000000..67a73de --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/8974.js @@ -0,0 +1,7 @@ +result = ""; + +(function() { + var _3 = -1; + var variableone = 1, variabletwo = 2, variable3 = 3; + result = _3; +})(); diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/9444.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/9444.js new file mode 100644 index 0000000..d4be030 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/9444.js @@ -0,0 +1,11 @@ +(function(){ + + var someComplicatedStuff = function(){ + debugger; + } + + for(var i = 0; i < 10; i++){ + if(i % 2 === 0) someComplicatedStuff(); + } + +})() \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/9676.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/9676.js new file mode 100644 index 0000000..6f60f6e --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/9676.js @@ -0,0 +1,3 @@ +// make sure plus and pos don't become inc. +var result = 1 + +2 - -3; + diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/escapeunicode.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/escapeunicode.js new file mode 100644 index 0000000..0044dc9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/escapeunicode.js @@ -0,0 +1 @@ +"\u03B1";//+" ω" \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/module.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/module.js new file mode 100644 index 0000000..e3945df --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/module.js @@ -0,0 +1,209 @@ +dojo.provide("shrinksafe.tests.module"); + +// basic helper functions for running multiple tests. +shrinksafe.tests.module.getContents = function(path){ + // summary: Load a file from this /tests/ path into a variable + path = "../shrinksafe/tests/" + path; + return readFile(path); // String +} + +shrinksafe.tests.module.compress = function(source, stripConsole, escapeUnicode){ + // summary: Shorthand to compress some String version of JS code + return new String(Packages.org.dojotoolkit.shrinksafe.Compressor.compressScript(source, 0, 1, escapeUnicode, stripConsole)).toString(); +} + +shrinksafe.tests.module.loader = function(path, stripConsole, escapeUnicode){ + // summary: Simple function to load and compress some file. Returns and object + // with 'original' and 'compressed' members, respectively. + var s = shrinksafe.tests.module.getContents(path); + return { + original: s, + compressed: shrinksafe.tests.module.compress(s, stripConsole, escapeUnicode || false) + }; +} + +try{ + tests.register("shrinksafe", + [ + function forwardReference(t){ + + var src = shrinksafe.tests.module.loader("3241.js", null); + + t.assertTrue(src.original.length > src.compressed.length); + t.assertTrue(src.compressed.indexOf("test") == -1) + + eval(src.compressed); + t.assertEqual("data", result); + delete result; + }, + + function nestedReference(t){ + var src = shrinksafe.tests.module.loader("5303.js", null); + + t.assertTrue(src.original.length > src.compressed.length); + t.assertTrue(src.compressed.indexOf("say_hello") == -1) + t.assertTrue(src.compressed.indexOf("callback") == -1) + + eval(src.compressed); + // make sure it runs to completion + t.assertEqual("hello worldhello world", result); + // globals must not be renamed + t.assertEqual("function", typeof CallMe); + delete result; + }, + + function varConflict(t){ + // ensuring a shrunken variable won't overwrite an existing variable + // name, regardless of scope. + var src = shrinksafe.tests.module.loader("8974.js", null); + + t.assertTrue(src.original.length > src.compressed.length); + t.assertTrue(src.compressed.indexOf("variabletwo") == -1) + + eval(src.compressed); + t.assertEqual(-1, result); + delete result; + }, + + function varlists(t){ + // test to ensure var a, b, c; always works + var src = shrinksafe.tests.module.loader("1768.js", null); + + // ensure the things we expect to hide are hidden + t.t(src.compressed.indexOf("superlong") == -1); + t.t(src.compressed.indexOf("aFunction") == -1); + t.t(src.compressed.indexOf("inList") == -1); + + // sanity checking: + var boo = eval(src.compressed); + t.is(4, result); + delete result; + + }, + + function stripConsoleNormal(t){ + var src = shrinksafe.tests.module.loader("stripconsole.js", "normal"); + + t.assertTrue(src.compressed.indexOf("console.debug(\"debug here!\"") == -1) + t.assertTrue(src.compressed.indexOf("console.warn(\"warn here!\")") != -1) + t.assertTrue(src.compressed.indexOf("console.error(\"error here!\")") != -1) + + eval(src.compressed); + // make sure expected output occurs. + t.assertEqual("WARN: warn here!ERROR: error here!notconsole debug here!notconsole warn here!", result); + delete result; + }, + + function stripConsoleWarns(t){ + var src = shrinksafe.tests.module.loader("stripconsole.js", "warn"); + + t.assertTrue(src.original.length > src.compressed.length); + t.assertTrue(src.compressed.indexOf("console.debug(\"debug here!\"") == -1) + t.assertTrue(src.compressed.indexOf("console.warn(\"warn here!\")") == -1) + t.assertTrue(src.compressed.indexOf("console.error(\"error here!\")") != -1) + + eval(src.compressed); + // make sure expected output occurs. + t.assertEqual("ERROR: error here!notconsole debug here!notconsole warn here!", result); + delete result; + }, + + function stripConsoleAll(t){ + var src = shrinksafe.tests.module.loader("stripconsole.js", "all"); + + t.assertTrue(src.original.length > src.compressed.length); + t.assertTrue(src.compressed.indexOf("console.debug(\"debug here!\"") == -1) + t.assertTrue(src.compressed.indexOf("console.warn(\"warn here!\")") == -1) + t.assertTrue(src.compressed.indexOf("console.error(\"error here!\")") == -1) + + eval(src.compressed); + // make sure expected output occurs. + t.assertEqual("notconsole debug here!notconsole warn here!", result); + delete result; + }, + + function stripConsoleComplex(t){ + var src = shrinksafe.tests.module.loader("stripcomplex.js", "normal"); + + t.assertTrue(src.original.length > src.compressed.length); + + eval(src.compressed); + // make sure expected output occurs. + t.assertEqual("ERROR: wooosome \\ dodgy \" characters *$!?//3-3fn saw arg 'wooo'.ERROR: Error return statement.", result); + delete result; + }, + + function debuggerCall(t){ + // make sure we don't die when we find a debugger; statement + var src = shrinksafe.tests.module.loader("9444.js", null); + t.t(src.compressed.indexOf("debugger") > -1); + }, + + function nestedReference(t){ + var src = shrinksafe.tests.module.loader("9676.js", null); + eval(src.compressed); // will throw on failure + t.assertEqual(6, result); + delete result; + }, + + function escapeUnicode(t){ + var src = shrinksafe.tests.module.loader("escapeunicode.js", null); + t.assertTrue(src.compressed.indexOf('"\u03b1";') == 0); +// t.is('"\u03b1 \u03c9";', src.compressed); // extended test isn't working... encoding problem with input? + + src = shrinksafe.tests.module.loader("escapeunicode.js", null, true); + t.assertTrue(src.compressed.indexOf('"\\u03b1";') == 0); +// t.is('"\\u03b1 \\u03c9";', src.compressed); + }, + + function mungeStrings(t){ + + // this test is skipped intentionally. You must manually enabled the + // code in Compressor.java which enables this functionality. The functionality + // is not considered completely "safe" and thus has been disabled. + // simply uncomment the block in Compressor.java to reinstate functionality. + // original patch came under [ccla]. See bugs.dojotoolkit.org/ticket/8828 + return; + + var src = shrinksafe.tests.module.loader("8828.js"); + + t.t(src.compressed.indexOf("ab") > -1); // basic test + t.t(src.compressed.indexOf('"a"+n') > -1); // basic expected miss + t.t(src.compressed.indexOf('thisisatestspanning"+h') > -1); + t.t(src.compressed.indexOf("testingmultiplelines") > -1); + t.t(src.compressed.indexOf("testingcombined\"+") > -1); + + var boo = eval(src.compressed); + t.is(5, result.length); + + t.t(result[3].indexOf("TheQuickredFox") > -1); // complex var post eval + t.is(result[4], "thisisatestspanning4lines"); // multiline post eval + + delete result; + + var expected = [ + "testing","testbarsimple", + "testingcombinedbarvariables", + "test \"+weird syntax", + "testbasic", + "test \"mixed\"", + "testingmultiplelines", + "test \"mixed\" andmunge", + "test", + "tesbart", + "\"slightly\"+\"off\"", + // fails: + "falseb", "falseb", "falseb" + ]; + + var data = string_tests(); + data.forEach(function(str, i){ + t.is(expected[i], str); + }); + + delete string_tests; + } + ]); +}catch(e){ + doh.debug(e); +} diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/runner.sh b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/runner.sh new file mode 100755 index 0000000..e678321 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/runner.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd ../../doh +java -classpath ../shrinksafe/js.jar:../shrinksafe/shrinksafe.jar org.mozilla.javascript.tools.shell.Main runner.js testModule=shrinksafe.tests.module testUrl=../shrinksafe/tests/module.js diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/stripcomplex.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/stripcomplex.js new file mode 100644 index 0000000..5b68af9 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/stripcomplex.js @@ -0,0 +1,42 @@ +result = ""; + +/* For the purpose of these tests, we have no actual console with + which to test output, so create a dummy console and capture to + 'result', which is examined by the test framework post eval. */ +var console = { + log: function(arg) { result += "LOG: " + arg; }, + debug: function(arg) { result += "DEBUG: " + arg; }, + warn: function(arg) { result += "WARN: " + arg; }, + error: function(arg) { result += "ERROR: " + arg; }, + dir: function(arg) { result += "DIR: " + arg; } +}; +(function() { + var fn = function(arg) { + return "fn saw arg '" + arg + "'."; + } + var str = "wooo"; + console.debug(str + "some \\ dodgy \" characters *$!?//" + (1+2) + (~2) + fn(str)); + console.error(str + "some \\ dodgy \" characters *$!?//" + (1+2) + (~2) + fn(str)); + + // from ticket http://bugs.dojotoolkit.org/ticket/8549 + console.log("hello :) world!"); + console.log(" anything /) with a paren "); + console.log(/^\)$/.test("hi")); + + //It would be interesting to see how this comes out: + if(true) + console.log("foo"); + else + var two = "two"; + + var bar; + true ? console.log("bizarre") : (bar = true); + true ? (bar = true) : console.log("bizarre"); + + (function() { + return console.debug("Debug return statement."); + })(); + (function() { + return console.error("Error return statement."); + })(); +})(); \ No newline at end of file diff --git a/js/dojo-release-1.7.2-src/util/shrinksafe/tests/stripconsole.js b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/stripconsole.js new file mode 100644 index 0000000..f892248 --- /dev/null +++ b/js/dojo-release-1.7.2-src/util/shrinksafe/tests/stripconsole.js @@ -0,0 +1,28 @@ +result = ""; + +/* For the purpose of these tests, we have no actual console with + which to test output, so create a dummy console and capture to + 'result', which is examined by the test framework post eval. */ +var console = { + debug: function(arg) { result += "DEBUG: " + arg; }, + warn: function(arg) { result += "WARN: " + arg; }, + error: function(arg) { result += "ERROR: " + arg; }, + dir: function(arg) { result += "DIR: " + arg; } +}; +/* Make something that looks a bit like console to ensure it + isn't stripped. */ +var notconsole = { + debug: function(arg) { result += arg; }, + warn: function(arg) { result += arg; } +}; +(function() { + var variable = 'variable'; + + console.debug("debug here!" + variable); + console.warn("warn here!"); + console.error("error here!"); + notconsole.debug("notconsole debug here!"); + notconsole.warn("notconsole warn here!"); + + console.dir(notconsole); +})();